Add support for string types 48/16748/2
authorOndrej Fabry <ofabry@cisco.com>
Thu, 10 Jan 2019 09:57:50 +0000 (10:57 +0100)
committerOndrej Fabry <ofabry@cisco.com>
Thu, 10 Jan 2019 10:05:35 +0000 (11:05 +0100)
- strings are now generated as two fields for length and string itself
- aliases are now sorted by name to prevent generating different code
- dependencies are now managed by dep
- binapi files are regenerated using VPP 19.01-rc0~622-g7b01e9e8
- old stats binary api has been deprecated and removed from VPP

Change-Id: Ieb8515c73021339a45f407386f8e3d87dcf4469e
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
323 files changed:
.gitignore
Gopkg.lock [new file with mode: 0644]
Gopkg.toml [new file with mode: 0644]
Makefile
cmd/binapi-generator/definitions.go
cmd/binapi-generator/generate.go
cmd/binapi-generator/parse.go
examples/bin_api/VPP_VERSION [new file with mode: 0644]
examples/bin_api/interface.api.json
examples/bin_api/interfaces/interfaces.ba.go
examples/bin_api/ip.api.json
examples/bin_api/ip/ip.ba.go
examples/bin_api/map.api.json
examples/bin_api/maps/maps.ba.go
examples/bin_api/stats.api.json [deleted file]
examples/bin_api/stats/stats.ba.go [deleted file]
examples/bin_api/vpe.api.json
examples/bin_api/vpe/vpe.ba.go
examples/cmd/stats-client/stats_client.go [deleted file]
glide.lock [deleted file]
glide.yaml [deleted file]
vendor/github.com/fsnotify/fsnotify/.github/ISSUE_TEMPLATE.md [deleted file]
vendor/github.com/fsnotify/fsnotify/.github/PULL_REQUEST_TEMPLATE.md [deleted file]
vendor/github.com/fsnotify/fsnotify/example_test.go [deleted file]
vendor/github.com/fsnotify/fsnotify/fsnotify_test.go [deleted file]
vendor/github.com/fsnotify/fsnotify/inotify_poller_test.go [deleted file]
vendor/github.com/fsnotify/fsnotify/inotify_test.go [deleted file]
vendor/github.com/fsnotify/fsnotify/integration_darwin_test.go [deleted file]
vendor/github.com/fsnotify/fsnotify/integration_test.go [deleted file]
vendor/github.com/google/gopacket/afpacket/afpacket.go [deleted file]
vendor/github.com/google/gopacket/afpacket/afpacket_test.go [deleted file]
vendor/github.com/google/gopacket/afpacket/header.go [deleted file]
vendor/github.com/google/gopacket/afpacket/options.go [deleted file]
vendor/github.com/google/gopacket/afpacket/sockopt_linux.go [deleted file]
vendor/github.com/google/gopacket/afpacket/sockopt_linux_386.go [deleted file]
vendor/github.com/google/gopacket/afpacket/sockopt_linux_386.s [deleted file]
vendor/github.com/google/gopacket/benchmark_test.go [deleted file]
vendor/github.com/google/gopacket/bsdbpf/bsd_bpf_sniffer.go [deleted file]
vendor/github.com/google/gopacket/bytediff/bytediff.go [deleted file]
vendor/github.com/google/gopacket/bytediff/bytediff_test.go [deleted file]
vendor/github.com/google/gopacket/dumpcommand/tcpdump.go [deleted file]
vendor/github.com/google/gopacket/examples/arpscan/arpscan.go [deleted file]
vendor/github.com/google/gopacket/examples/bidirectional/main.go [deleted file]
vendor/github.com/google/gopacket/examples/bytediff/bytediff.png [deleted file]
vendor/github.com/google/gopacket/examples/bytediff/main.go [deleted file]
vendor/github.com/google/gopacket/examples/httpassembly/main.go [deleted file]
vendor/github.com/google/gopacket/examples/pcapdump/main.go [deleted file]
vendor/github.com/google/gopacket/examples/pcaplay/main.go [deleted file]
vendor/github.com/google/gopacket/examples/pfdump/main.go [deleted file]
vendor/github.com/google/gopacket/examples/reassemblydump/compare.sh [deleted file]
vendor/github.com/google/gopacket/examples/reassemblydump/main.go [deleted file]
vendor/github.com/google/gopacket/examples/statsassembly/main.go [deleted file]
vendor/github.com/google/gopacket/examples/synscan/main.go [deleted file]
vendor/github.com/google/gopacket/examples/util/util.go [deleted file]
vendor/github.com/google/gopacket/ip4defrag/defrag.go [deleted file]
vendor/github.com/google/gopacket/ip4defrag/defrag_test.go [deleted file]
vendor/github.com/google/gopacket/layers/base_test.go [deleted file]
vendor/github.com/google/gopacket/layers/bfd_test.go [deleted file]
vendor/github.com/google/gopacket/layers/decode_test.go [deleted file]
vendor/github.com/google/gopacket/layers/dhcp_test.go [deleted file]
vendor/github.com/google/gopacket/layers/dns_test.go [deleted file]
vendor/github.com/google/gopacket/layers/dot11_test.go [deleted file]
vendor/github.com/google/gopacket/layers/dot1q_test.go [deleted file]
vendor/github.com/google/gopacket/layers/endpoints_test.go [deleted file]
vendor/github.com/google/gopacket/layers/geneve_test.go [deleted file]
vendor/github.com/google/gopacket/layers/gre_test.go [deleted file]
vendor/github.com/google/gopacket/layers/icmp6_test.go [deleted file]
vendor/github.com/google/gopacket/layers/igmp_test.go [deleted file]
vendor/github.com/google/gopacket/layers/ip4_test.go [deleted file]
vendor/github.com/google/gopacket/layers/ip6_test.go [deleted file]
vendor/github.com/google/gopacket/layers/ipsec_test.go [deleted file]
vendor/github.com/google/gopacket/layers/mpls_test.go [deleted file]
vendor/github.com/google/gopacket/layers/ntp_test.go [deleted file]
vendor/github.com/google/gopacket/layers/ospf_test.go [deleted file]
vendor/github.com/google/gopacket/layers/prism_test.go [deleted file]
vendor/github.com/google/gopacket/layers/radiotap_test.go [deleted file]
vendor/github.com/google/gopacket/layers/sflow_test.go [deleted file]
vendor/github.com/google/gopacket/layers/tcp_test.go [deleted file]
vendor/github.com/google/gopacket/layers/tcpip_test.go [deleted file]
vendor/github.com/google/gopacket/layers/udp_test.go [deleted file]
vendor/github.com/google/gopacket/layers/usb_test.go [deleted file]
vendor/github.com/google/gopacket/layers/vrrp_test.go [deleted file]
vendor/github.com/google/gopacket/layers/vxlan_test.go [deleted file]
vendor/github.com/google/gopacket/macs/benchmark_test.go [deleted file]
vendor/github.com/google/gopacket/macs/doc.go [deleted file]
vendor/github.com/google/gopacket/macs/gen.go [deleted file]
vendor/github.com/google/gopacket/macs/valid_mac_prefixes.go [deleted file]
vendor/github.com/google/gopacket/packet_test.go [deleted file]
vendor/github.com/google/gopacket/pcap/doc.go [deleted file]
vendor/github.com/google/gopacket/pcap/gopacket_benchmark/benchmark.go [deleted file]
vendor/github.com/google/gopacket/pcap/pcap.go [deleted file]
vendor/github.com/google/gopacket/pcap/pcap_test.go [deleted file]
vendor/github.com/google/gopacket/pcap/pcap_tester.go [deleted file]
vendor/github.com/google/gopacket/pcap/pcap_unix.go [deleted file]
vendor/github.com/google/gopacket/pcap/pcap_windows.go [deleted file]
vendor/github.com/google/gopacket/pcap/pcapgo_test.go [deleted file]
vendor/github.com/google/gopacket/pcap/test_dns.pcap [deleted file]
vendor/github.com/google/gopacket/pcap/test_ethernet.pcap [deleted file]
vendor/github.com/google/gopacket/pcap/test_loopback.pcap [deleted file]
vendor/github.com/google/gopacket/pcapgo/read.go [deleted file]
vendor/github.com/google/gopacket/pcapgo/read_test.go [deleted file]
vendor/github.com/google/gopacket/pcapgo/write.go [deleted file]
vendor/github.com/google/gopacket/pcapgo/write_test.go [deleted file]
vendor/github.com/google/gopacket/pfring/doc.go [deleted file]
vendor/github.com/google/gopacket/pfring/pfring.go [deleted file]
vendor/github.com/google/gopacket/reassembly/cap2test.go [deleted file]
vendor/github.com/google/gopacket/reassembly/memory.go [deleted file]
vendor/github.com/google/gopacket/reassembly/tcpassembly.go [deleted file]
vendor/github.com/google/gopacket/reassembly/tcpassembly_test.go [deleted file]
vendor/github.com/google/gopacket/reassembly/tcpcheck.go [deleted file]
vendor/github.com/google/gopacket/reassembly/tcpcheck_test.go [deleted file]
vendor/github.com/google/gopacket/routing/common.go [deleted file]
vendor/github.com/google/gopacket/routing/other.go [deleted file]
vendor/github.com/google/gopacket/routing/routing.go [deleted file]
vendor/github.com/google/gopacket/tcpassembly/assembly.go [deleted file]
vendor/github.com/google/gopacket/tcpassembly/assembly_test.go [deleted file]
vendor/github.com/google/gopacket/tcpassembly/tcpreader/reader.go [deleted file]
vendor/github.com/google/gopacket/tcpassembly/tcpreader/reader_test.go [deleted file]
vendor/github.com/google/gopacket/writer_test.go [deleted file]
vendor/github.com/lunixbochs/struc/bench_test.go [deleted file]
vendor/github.com/lunixbochs/struc/custom_float16_test.go [deleted file]
vendor/github.com/lunixbochs/struc/custom_test.go [deleted file]
vendor/github.com/lunixbochs/struc/field.go
vendor/github.com/lunixbochs/struc/field_test.go [deleted file]
vendor/github.com/lunixbochs/struc/fields_test.go [deleted file]
vendor/github.com/lunixbochs/struc/packable_test.go [deleted file]
vendor/github.com/lunixbochs/struc/parse.go
vendor/github.com/lunixbochs/struc/parse_test.go [deleted file]
vendor/github.com/lunixbochs/struc/struc_test.go [deleted file]
vendor/github.com/lunixbochs/struc/types_test.go [deleted file]
vendor/github.com/onsi/gomega/format/format_suite_test.go [deleted file]
vendor/github.com/onsi/gomega/format/format_test.go [deleted file]
vendor/github.com/onsi/gomega/gbytes/buffer.go [deleted file]
vendor/github.com/onsi/gomega/gbytes/buffer_test.go [deleted file]
vendor/github.com/onsi/gomega/gbytes/gbuffer_suite_test.go [deleted file]
vendor/github.com/onsi/gomega/gbytes/say_matcher.go [deleted file]
vendor/github.com/onsi/gomega/gbytes/say_matcher_test.go [deleted file]
vendor/github.com/onsi/gomega/gexec/_fixture/firefly/main.go [deleted file]
vendor/github.com/onsi/gomega/gexec/build.go [deleted file]
vendor/github.com/onsi/gomega/gexec/build_test.go [deleted file]
vendor/github.com/onsi/gomega/gexec/exit_matcher.go [deleted file]
vendor/github.com/onsi/gomega/gexec/exit_matcher_test.go [deleted file]
vendor/github.com/onsi/gomega/gexec/gexec_suite_test.go [deleted file]
vendor/github.com/onsi/gomega/gexec/prefixed_writer.go [deleted file]
vendor/github.com/onsi/gomega/gexec/prefixed_writer_test.go [deleted file]
vendor/github.com/onsi/gomega/gexec/session.go [deleted file]
vendor/github.com/onsi/gomega/gexec/session_test.go [deleted file]
vendor/github.com/onsi/gomega/ghttp/handlers.go [deleted file]
vendor/github.com/onsi/gomega/ghttp/protobuf/protobuf.go [deleted file]
vendor/github.com/onsi/gomega/ghttp/protobuf/simple_message.pb.go [deleted file]
vendor/github.com/onsi/gomega/ghttp/protobuf/simple_message.proto [deleted file]
vendor/github.com/onsi/gomega/ghttp/test_server.go [deleted file]
vendor/github.com/onsi/gomega/ghttp/test_server_suite_test.go [deleted file]
vendor/github.com/onsi/gomega/ghttp/test_server_test.go [deleted file]
vendor/github.com/onsi/gomega/gstruct/elements.go [deleted file]
vendor/github.com/onsi/gomega/gstruct/elements_test.go [deleted file]
vendor/github.com/onsi/gomega/gstruct/errors/nested_types.go [deleted file]
vendor/github.com/onsi/gomega/gstruct/fields.go [deleted file]
vendor/github.com/onsi/gomega/gstruct/fields_test.go [deleted file]
vendor/github.com/onsi/gomega/gstruct/gstruct_tests_suite_test.go [deleted file]
vendor/github.com/onsi/gomega/gstruct/ignore.go [deleted file]
vendor/github.com/onsi/gomega/gstruct/ignore_test.go [deleted file]
vendor/github.com/onsi/gomega/gstruct/pointer.go [deleted file]
vendor/github.com/onsi/gomega/gstruct/pointer_test.go [deleted file]
vendor/github.com/onsi/gomega/gstruct/types.go [deleted file]
vendor/github.com/onsi/gomega/internal/assertion/assertion_suite_test.go [deleted file]
vendor/github.com/onsi/gomega/internal/assertion/assertion_test.go [deleted file]
vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion_suite_test.go [deleted file]
vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion_test.go [deleted file]
vendor/github.com/onsi/gomega/internal/fakematcher/fake_matcher.go [deleted file]
vendor/github.com/onsi/gomega/internal/testingtsupport/testing_t_support_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/and_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/assignable_to_type_of_matcher_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/be_a_directory_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/be_a_regular_file_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/be_an_existing_file_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/be_closed_matcher_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/be_empty_matcher_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/be_equivalent_to_matcher_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/be_false_matcher_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/be_identical_to_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/be_nil_matcher_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/be_numerically_matcher_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/be_sent_matcher_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/be_temporally_matcher_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/be_true_matcher_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/be_zero_matcher_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/consist_of_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/contain_element_matcher_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/contain_substring_matcher_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/equal_matcher_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/have_cap_matcher_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/have_key_matcher_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/have_key_with_value_matcher_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/have_len_matcher_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/have_occurred_matcher_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/have_prefix_matcher_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/have_suffix_matcher_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/match_error_matcher_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/match_json_matcher_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/match_regexp_matcher_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/match_yaml_matcher_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/matcher_tests_suite_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/not_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/or_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/panic_matcher_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/receive_matcher_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/succeed_matcher_test.go [deleted file]
vendor/github.com/onsi/gomega/matchers/support/goraph/MIT.LICENSE [deleted file]
vendor/github.com/onsi/gomega/matchers/with_transform_test.go [deleted file]
vendor/github.com/pkg/profile/example_test.go [deleted file]
vendor/github.com/pkg/profile/profile_test.go [deleted file]
vendor/github.com/pkg/profile/trace_test.go [deleted file]
vendor/github.com/sirupsen/logrus/alt_exit_test.go [deleted file]
vendor/github.com/sirupsen/logrus/entry_test.go [deleted file]
vendor/github.com/sirupsen/logrus/examples/basic/basic.go [deleted file]
vendor/github.com/sirupsen/logrus/examples/hook/hook.go [deleted file]
vendor/github.com/sirupsen/logrus/formatter_bench_test.go [deleted file]
vendor/github.com/sirupsen/logrus/hook_test.go [deleted file]
vendor/github.com/sirupsen/logrus/hooks/syslog/README.md [deleted file]
vendor/github.com/sirupsen/logrus/hooks/syslog/syslog.go [deleted file]
vendor/github.com/sirupsen/logrus/hooks/syslog/syslog_test.go [deleted file]
vendor/github.com/sirupsen/logrus/hooks/test/test.go [deleted file]
vendor/github.com/sirupsen/logrus/hooks/test/test_test.go [deleted file]
vendor/github.com/sirupsen/logrus/json_formatter_test.go [deleted file]
vendor/github.com/sirupsen/logrus/logger_bench_test.go [deleted file]
vendor/github.com/sirupsen/logrus/logrus_test.go [deleted file]
vendor/github.com/sirupsen/logrus/text_formatter_test.go [deleted file]
vendor/golang.org/x/sys/.gitattributes [deleted file]
vendor/golang.org/x/sys/.gitignore [deleted file]
vendor/golang.org/x/sys/CONTRIBUTING.md [deleted file]
vendor/golang.org/x/sys/README [deleted file]
vendor/golang.org/x/sys/codereview.cfg [deleted file]
vendor/golang.org/x/sys/plan9/asm.s [deleted file]
vendor/golang.org/x/sys/plan9/asm_plan9_386.s [deleted file]
vendor/golang.org/x/sys/plan9/asm_plan9_amd64.s [deleted file]
vendor/golang.org/x/sys/plan9/const_plan9.go [deleted file]
vendor/golang.org/x/sys/plan9/dir_plan9.go [deleted file]
vendor/golang.org/x/sys/plan9/env_plan9.go [deleted file]
vendor/golang.org/x/sys/plan9/env_unset.go [deleted file]
vendor/golang.org/x/sys/plan9/errors_plan9.go [deleted file]
vendor/golang.org/x/sys/plan9/mkall.sh [deleted file]
vendor/golang.org/x/sys/plan9/mkerrors.sh [deleted file]
vendor/golang.org/x/sys/plan9/mksyscall.pl [deleted file]
vendor/golang.org/x/sys/plan9/mksysnum_plan9.sh [deleted file]
vendor/golang.org/x/sys/plan9/pwd_go15_plan9.go [deleted file]
vendor/golang.org/x/sys/plan9/pwd_plan9.go [deleted file]
vendor/golang.org/x/sys/plan9/race.go [deleted file]
vendor/golang.org/x/sys/plan9/race0.go [deleted file]
vendor/golang.org/x/sys/plan9/str.go [deleted file]
vendor/golang.org/x/sys/plan9/syscall.go [deleted file]
vendor/golang.org/x/sys/plan9/syscall_plan9.go [deleted file]
vendor/golang.org/x/sys/plan9/syscall_test.go [deleted file]
vendor/golang.org/x/sys/plan9/zsyscall_plan9_386.go [deleted file]
vendor/golang.org/x/sys/plan9/zsyscall_plan9_amd64.go [deleted file]
vendor/golang.org/x/sys/plan9/zsysnum_plan9.go [deleted file]
vendor/golang.org/x/sys/unix/creds_test.go [deleted file]
vendor/golang.org/x/sys/unix/export_test.go [deleted file]
vendor/golang.org/x/sys/unix/linux/Dockerfile [deleted file]
vendor/golang.org/x/sys/unix/linux/mkall.go [deleted file]
vendor/golang.org/x/sys/unix/linux/mksysnum.pl [deleted file]
vendor/golang.org/x/sys/unix/linux/types.go [deleted file]
vendor/golang.org/x/sys/unix/mmap_unix_test.go [deleted file]
vendor/golang.org/x/sys/unix/openbsd_test.go [deleted file]
vendor/golang.org/x/sys/unix/syscall_bsd_test.go [deleted file]
vendor/golang.org/x/sys/unix/syscall_freebsd_test.go [deleted file]
vendor/golang.org/x/sys/unix/syscall_linux_test.go [deleted file]
vendor/golang.org/x/sys/unix/syscall_test.go [deleted file]
vendor/golang.org/x/sys/unix/syscall_unix_test.go [deleted file]
vendor/golang.org/x/sys/windows/asm_windows_386.s [deleted file]
vendor/golang.org/x/sys/windows/asm_windows_amd64.s [deleted file]
vendor/golang.org/x/sys/windows/dll_windows.go [deleted file]
vendor/golang.org/x/sys/windows/env_unset.go [deleted file]
vendor/golang.org/x/sys/windows/env_windows.go [deleted file]
vendor/golang.org/x/sys/windows/eventlog.go [deleted file]
vendor/golang.org/x/sys/windows/exec_windows.go [deleted file]
vendor/golang.org/x/sys/windows/mksyscall.go [deleted file]
vendor/golang.org/x/sys/windows/race.go [deleted file]
vendor/golang.org/x/sys/windows/race0.go [deleted file]
vendor/golang.org/x/sys/windows/registry/export_test.go [deleted file]
vendor/golang.org/x/sys/windows/registry/key.go [deleted file]
vendor/golang.org/x/sys/windows/registry/mksyscall.go [deleted file]
vendor/golang.org/x/sys/windows/registry/registry_test.go [deleted file]
vendor/golang.org/x/sys/windows/registry/syscall.go [deleted file]
vendor/golang.org/x/sys/windows/registry/value.go [deleted file]
vendor/golang.org/x/sys/windows/registry/zsyscall_windows.go [deleted file]
vendor/golang.org/x/sys/windows/security_windows.go [deleted file]
vendor/golang.org/x/sys/windows/service.go [deleted file]
vendor/golang.org/x/sys/windows/str.go [deleted file]
vendor/golang.org/x/sys/windows/svc/debug/log.go [deleted file]
vendor/golang.org/x/sys/windows/svc/debug/service.go [deleted file]
vendor/golang.org/x/sys/windows/svc/event.go [deleted file]
vendor/golang.org/x/sys/windows/svc/eventlog/install.go [deleted file]
vendor/golang.org/x/sys/windows/svc/eventlog/log.go [deleted file]
vendor/golang.org/x/sys/windows/svc/eventlog/log_test.go [deleted file]
vendor/golang.org/x/sys/windows/svc/example/beep.go [deleted file]
vendor/golang.org/x/sys/windows/svc/example/install.go [deleted file]
vendor/golang.org/x/sys/windows/svc/example/main.go [deleted file]
vendor/golang.org/x/sys/windows/svc/example/manage.go [deleted file]
vendor/golang.org/x/sys/windows/svc/example/service.go [deleted file]
vendor/golang.org/x/sys/windows/svc/go12.c [deleted file]
vendor/golang.org/x/sys/windows/svc/go12.go [deleted file]
vendor/golang.org/x/sys/windows/svc/go13.go [deleted file]
vendor/golang.org/x/sys/windows/svc/mgr/config.go [deleted file]
vendor/golang.org/x/sys/windows/svc/mgr/mgr.go [deleted file]
vendor/golang.org/x/sys/windows/svc/mgr/mgr_test.go [deleted file]
vendor/golang.org/x/sys/windows/svc/mgr/service.go [deleted file]
vendor/golang.org/x/sys/windows/svc/security.go [deleted file]
vendor/golang.org/x/sys/windows/svc/service.go [deleted file]
vendor/golang.org/x/sys/windows/svc/svc_test.go [deleted file]
vendor/golang.org/x/sys/windows/svc/sys_386.s [deleted file]
vendor/golang.org/x/sys/windows/svc/sys_amd64.s [deleted file]
vendor/golang.org/x/sys/windows/syscall.go [deleted file]
vendor/golang.org/x/sys/windows/syscall_test.go [deleted file]
vendor/golang.org/x/sys/windows/syscall_windows.go [deleted file]
vendor/golang.org/x/sys/windows/syscall_windows_test.go [deleted file]
vendor/golang.org/x/sys/windows/zsyscall_windows.go [deleted file]
vendor/golang.org/x/sys/windows/ztypes_windows.go [deleted file]
vendor/golang.org/x/sys/windows/ztypes_windows_386.go [deleted file]
vendor/golang.org/x/sys/windows/ztypes_windows_amd64.go [deleted file]
vendor/gopkg.in/yaml.v2/decode_test.go [deleted file]
vendor/gopkg.in/yaml.v2/encode_test.go [deleted file]
vendor/gopkg.in/yaml.v2/suite_test.go [deleted file]

index 7ec04f8..5bf6a1e 100644 (file)
@@ -1,4 +1,6 @@
 .idea
+*.log
+*.out
 
 # cmds
 cmd/binapi-generator/binapi-generator
@@ -6,7 +8,6 @@ cmd/binapi-generator/binapi-generator
 # examples
 examples/cmd/perf-bench/perf-bench
 examples/cmd/simple-client/simple-client
-examples/cmd/stats-client/stats-client
 examples/cmd/stats-api/stats-api
 
 # extras
diff --git a/Gopkg.lock b/Gopkg.lock
new file mode 100644 (file)
index 0000000..c35dc15
--- /dev/null
@@ -0,0 +1,101 @@
+# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'.
+
+
+[[projects]]
+  digest = "1:3925737bca828152354a9a214c77e49f7c779e6207bfd40419d515645efd99ff"
+  name = "github.com/bennyscetbun/jsongo"
+  packages = ["."]
+  pruneopts = "UT"
+  revision = "5240b3f82c6665fe3ccd96bdf5e6f38fe1e1399d"
+
+[[projects]]
+  digest = "1:38c783cf85b9454cc02a1a8319239800ed0af6c1c864adf19cea0539e134adad"
+  name = "github.com/fsnotify/fsnotify"
+  packages = ["."]
+  pruneopts = "UT"
+  revision = "4da3e2cfbabc9f751898f250b49f2439785783a1"
+
+[[projects]]
+  digest = "1:81259d6c2b9aa336c627a31074078d5473788c1f54a373e4392d4e722716d74d"
+  name = "github.com/google/gopacket"
+  packages = [
+    ".",
+    "layers",
+  ]
+  pruneopts = "UT"
+  revision = "8e484f31b1237166f00e4896d27ddde259540632"
+
+[[projects]]
+  branch = "master"
+  digest = "1:40bf4b24f9127737b22d3b86ff0bef3c3e9d87604d6260d9f9b9125e7995ff49"
+  name = "github.com/lunixbochs/struc"
+  packages = ["."]
+  pruneopts = "UT"
+  revision = "02e4c2afbb2ac4bae6876f52c8273fc4cf5a4b0a"
+
+[[projects]]
+  digest = "1:c4c90722461cfbd86d88c3d7bad0c352a958c68de0884d399a42f53d160429e7"
+  name = "github.com/onsi/gomega"
+  packages = [
+    ".",
+    "format",
+    "internal/assertion",
+    "internal/asyncassertion",
+    "internal/oraclematcher",
+    "internal/testingtsupport",
+    "matchers",
+    "matchers/support/goraph/bipartitegraph",
+    "matchers/support/goraph/edge",
+    "matchers/support/goraph/node",
+    "matchers/support/goraph/util",
+    "types",
+  ]
+  pruneopts = "UT"
+  revision = "334b8f472b3af5d541c5642701c1e29e2126f486"
+  version = "v1.1.0"
+
+[[projects]]
+  digest = "1:cfa0d7741863a0e1d30e0ccdd4b48a96a471cdb47892303de8b92c3713af3e77"
+  name = "github.com/pkg/profile"
+  packages = ["."]
+  pruneopts = "UT"
+  revision = "5b67d428864e92711fcbd2f8629456121a56d91f"
+  version = "v1.2.1"
+
+[[projects]]
+  digest = "1:ee1da6524260ed66de5eacdf4def98a365576be6c6972faa8ef438bef324843d"
+  name = "github.com/sirupsen/logrus"
+  packages = ["."]
+  pruneopts = "UT"
+  revision = "202f25545ea4cf9b191ff7f846df5d87c9382c2b"
+  version = "v1.0.0"
+
+[[projects]]
+  digest = "1:7217a703ed82a3c04939fdaf0768bf651406a9d2e41e061582f0809ab5459e00"
+  name = "golang.org/x/sys"
+  packages = ["unix"]
+  pruneopts = "UT"
+  revision = "9ccfe848b9db8435a24c424abbc07a921adf1df5"
+
+[[projects]]
+  digest = "1:35c04c23c8aef680782e117c67e29750453c92d11448da616d2e399887e5fc86"
+  name = "gopkg.in/yaml.v2"
+  packages = ["."]
+  pruneopts = "UT"
+  revision = "cd8b52f8269e0feb286dfeef29f8fe4d5b397e0b"
+
+[solve-meta]
+  analyzer-name = "dep"
+  analyzer-version = 1
+  input-imports = [
+    "github.com/bennyscetbun/jsongo",
+    "github.com/fsnotify/fsnotify",
+    "github.com/google/gopacket",
+    "github.com/google/gopacket/layers",
+    "github.com/lunixbochs/struc",
+    "github.com/onsi/gomega",
+    "github.com/pkg/profile",
+    "github.com/sirupsen/logrus",
+  ]
+  solver-name = "gps-cdcl"
+  solver-version = 1
diff --git a/Gopkg.toml b/Gopkg.toml
new file mode 100644 (file)
index 0000000..cf36c4a
--- /dev/null
@@ -0,0 +1,42 @@
+# Gopkg.toml example
+#
+# Refer to https://golang.github.io/dep/docs/Gopkg.toml.html
+# for detailed Gopkg.toml documentation.
+#
+# required = ["github.com/user/thing/cmd/thing"]
+# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"]
+#
+# [[constraint]]
+#   name = "github.com/user/project"
+#   version = "1.0.0"
+#
+# [[constraint]]
+#   name = "github.com/user/project2"
+#   branch = "dev"
+#   source = "github.com/myfork/project2"
+#
+# [[override]]
+#   name = "github.com/x/y"
+#   version = "2.4.0"
+#
+# [prune]
+#   non-go = false
+#   go-tests = true
+#   unused-packages = true
+
+
+[[constraint]]
+  name = "github.com/onsi/gomega"
+  version = "1.1.0"
+
+[[constraint]]
+  name = "github.com/pkg/profile"
+  version = "1.2.1"
+
+[[constraint]]
+  name = "github.com/sirupsen/logrus"
+  version = "1.0.0"
+
+[prune]
+  go-tests = true
+  unused-packages = true
index ec01313..fce72ac 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,8 @@
 VERSION ?= $(shell git describe --always --tags --dirty)
 
+BINAPI_DIR ?= $(shell cd examples/bin_api && pwd)
+VPP_VERSION := $(shell apt-cache show vpp | grep Version: | cut -d' ' -f2-)
+
 all: test build examples
 
 install:
@@ -39,10 +42,19 @@ clean:
        rm -f extras/libmemif/examples/jumbo-frames/jumbo-frames
        rm -f extras/libmemif/examples/raw-data/raw-data
 
+generate-binapi:
+       @echo "=> generating binapi"
+       @go generate "${BINAPI_DIR}"
+
 generate: install
        @echo "=> generating code"
        cd examples && go generate ./...
 
+update-vppapi:
+       @echo "=> updating API JSON files using installed VPP (${VPP_VERSION})"
+       @cd ${BINAPI_DIR} && find . -type f -name '*.api.json' -exec cp /usr/share/vpp/api/'{}' '{}' \;
+       @echo ${VPP_VERSION} > ${BINAPI_DIR}/VPP_VERSION
+
 lint:
        @echo "=> running linter"
        @golint ./... | grep -v vendor | grep -v bin_api || true
index b8c3393..3ad782f 100644 (file)
@@ -25,8 +25,6 @@ func getBinapiTypeSize(binapiType string) int {
                b, err := strconv.Atoi(strings.TrimLeft(binapiType, "uif"))
                if err == nil {
                        return b / 8
-               } else {
-                       return 1
                }
        }
        return -1
@@ -34,17 +32,15 @@ func getBinapiTypeSize(binapiType string) int {
 
 // binapiTypes is a set of types used VPP binary API for translation to Go types
 var binapiTypes = map[string]string{
-       "bool":   "bool",
-       "u8":     "uint8",
-       "i8":     "int8",
-       "u16":    "uint16",
-       "i16":    "int16",
-       "u32":    "uint32",
-       "i32":    "int32",
-       "u64":    "uint64",
-       "i64":    "int64",
-       "f64":    "float64",
-       "string": "string",
+       "u8":  "uint8",
+       "i8":  "int8",
+       "u16": "uint16",
+       "i16": "int16",
+       "u32": "uint32",
+       "i32": "int32",
+       "u64": "uint64",
+       "i64": "int64",
+       "f64": "float64",
 }
 
 func usesInitialism(s string) string {
index 22b4af6..e165c42 100644 (file)
@@ -347,41 +347,6 @@ func generateAlias(ctx *context, w io.Writer, alias *Alias) {
        fmt.Fprintln(w)
 }
 
-// generateType writes generated code for the type into w
-func generateType(ctx *context, w io.Writer, typ *Type) {
-       name := camelCaseName(typ.Name)
-
-       logf(" writing type %q (%s) with %d fields", typ.Name, name, len(typ.Fields))
-
-       // generate struct comment
-       generateComment(ctx, w, name, typ.Name, "type")
-
-       // generate struct definition
-       fmt.Fprintf(w, "type %s struct {\n", name)
-
-       // generate struct fields
-       for i, field := range typ.Fields {
-               // skip internal fields
-               switch strings.ToLower(field.Name) {
-               case "crc", "_vl_msg_id":
-                       continue
-               }
-
-               generateField(ctx, w, typ.Fields, i)
-       }
-
-       // generate end of the struct
-       fmt.Fprintln(w, "}")
-
-       // generate name getter
-       generateTypeNameGetter(w, name, typ.Name)
-
-       // generate CRC getter
-       generateCrcGetter(w, name, typ.CRC)
-
-       fmt.Fprintln(w)
-}
-
 // generateUnion writes generated code for the union into w
 func generateUnion(ctx *context, w io.Writer, union *Union) {
        name := camelCaseName(union.Name)
@@ -466,6 +431,41 @@ func (u *%[1]s) Get%[2]s() (a %[3]s) {
 `, structName, getterField, getterStruct)
 }
 
+// generateType writes generated code for the type into w
+func generateType(ctx *context, w io.Writer, typ *Type) {
+       name := camelCaseName(typ.Name)
+
+       logf(" writing type %q (%s) with %d fields", typ.Name, name, len(typ.Fields))
+
+       // generate struct comment
+       generateComment(ctx, w, name, typ.Name, "type")
+
+       // generate struct definition
+       fmt.Fprintf(w, "type %s struct {\n", name)
+
+       // generate struct fields
+       for i, field := range typ.Fields {
+               // skip internal fields
+               switch strings.ToLower(field.Name) {
+               case "crc", "_vl_msg_id":
+                       continue
+               }
+
+               generateField(ctx, w, typ.Fields, i)
+       }
+
+       // generate end of the struct
+       fmt.Fprintln(w, "}")
+
+       // generate name getter
+       generateTypeNameGetter(w, name, typ.Name)
+
+       // generate CRC getter
+       generateCrcGetter(w, name, typ.CRC)
+
+       fmt.Fprintln(w)
+}
+
 // generateMessage writes generated code for the message into w
 func generateMessage(ctx *context, w io.Writer, msg *Message) {
        name := camelCaseName(msg.Name)
@@ -486,7 +486,8 @@ func generateMessage(ctx *context, w io.Writer, msg *Message) {
        for i, field := range msg.Fields {
                if i == 1 {
                        if field.Name == "client_index" {
-                               // "client_index" as the second member, this might be an event message or a request
+                               // "client_index" as the second member,
+                               // this might be an event message or a request
                                msgType = eventMessage
                                wasClientIndex = true
                        } else if field.Name == "context" {
@@ -495,7 +496,8 @@ func generateMessage(ctx *context, w io.Writer, msg *Message) {
                        }
                } else if i == 2 {
                        if wasClientIndex && field.Name == "context" {
-                               // request needs "client_index" as the second member and "context" as the third member
+                               // request needs "client_index" as the second member
+                               // and "context" as the third member
                                msgType = requestMessage
                        }
                }
@@ -537,6 +539,11 @@ func generateField(ctx *context, w io.Writer, fields []Field, i int) {
        fieldName := strings.TrimPrefix(field.Name, "_")
        fieldName = camelCaseName(fieldName)
 
+       // generate length field for strings
+       if field.Type == "string" {
+               fmt.Fprintf(w, "\tXXX_%sLen uint32 `struc:\"sizeof=%s\"`\n", fieldName, fieldName)
+       }
+
        dataType := convertToGoType(ctx, field.Type)
 
        fieldType := dataType
index 5dfbe91..5bb3e8e 100644 (file)
@@ -23,11 +23,6 @@ import (
        "github.com/bennyscetbun/jsongo"
 )
 
-// toApiType returns name that is used as type reference in VPP binary API
-func toApiType(name string) string {
-       return fmt.Sprintf("vl_api_%s_t", name)
-}
-
 // parsePackage parses provided JSON data into objects prepared for code generation
 func parsePackage(ctx *context, jsonRoot *jsongo.JSONNode) (*Package, error) {
        logf(" %s contains: %d services, %d messages, %d types, %d enums, %d unions, %d aliases (version: %s)",
@@ -75,6 +70,10 @@ func parsePackage(ctx *context, jsonRoot *jsongo.JSONNode) (*Package, error) {
                        pkg.RefMap[toApiType(alias.Name)] = alias.Name
                }
        }
+       // sort aliases to ensure consistent order
+       sort.Slice(pkg.Aliases, func(i, j int) bool {
+               return pkg.Aliases[i].Name < pkg.Aliases[j].Name
+       })
 
        // parse types
        types := jsonRoot.Map("types")
@@ -479,6 +478,11 @@ func parseService(ctx *context, svcName string, svcNode *jsongo.JSONNode) (*Serv
        return &svc, nil
 }
 
+// toApiType returns name that is used as type reference in VPP binary API
+func toApiType(name string) string {
+       return fmt.Sprintf("vl_api_%s_t", name)
+}
+
 // convertToGoType translates the VPP binary API type into Go type
 func convertToGoType(ctx *context, binapiType string) (typ string) {
        if t, ok := binapiTypes[binapiType]; ok {
@@ -488,9 +492,14 @@ func convertToGoType(ctx *context, binapiType string) (typ string) {
                // specific types (enums/types/unions)
                typ = camelCaseName(r)
        } else {
-               // fallback type
-               log.Warnf("found unknown VPP binary API type %q, using byte", binapiType)
-               typ = "byte"
+               switch binapiType {
+               case "bool", "string":
+                       typ = binapiType
+               default:
+                       // fallback type
+                       log.Warnf("found unknown VPP binary API type %q, using byte", binapiType)
+                       typ = "byte"
+               }
        }
        return typ
 }
diff --git a/examples/bin_api/VPP_VERSION b/examples/bin_api/VPP_VERSION
new file mode 100644 (file)
index 0000000..4f9e13e
--- /dev/null
@@ -0,0 +1 @@
+19.01-rc0~622-g7b01e9e8~b1858
index db255aa..41862d8 100644 (file)
             }
         ]
     ],
-    "vl_api_version": "0x1ec8c073",
+    "vl_api_version": "0x672de521",
     "unions": [],
     "services": {
         "create_subif": {
         }
     },
     "enums": [],
-    "types": [
-        [
-            "vlib_counter",
-            [
-                "u64",
-                "packets"
-            ],
-            [
-                "u64",
-                "bytes"
-            ],
-            {
-                "crc": "0xce2325a2"
-            }
-        ],
-        [
-            "vnet_combined_counter",
-            [
-                "u32",
-                "sw_if_index"
-            ],
-            [
-                "u64",
-                "rx_packets"
-            ],
-            [
-                "u64",
-                "rx_bytes"
-            ],
-            [
-                "u64",
-                "rx_unicast_packets"
-            ],
-            [
-                "u64",
-                "rx_unicast_bytes"
-            ],
-            [
-                "u64",
-                "rx_multicast_packets"
-            ],
-            [
-                "u64",
-                "rx_multicast_bytes"
-            ],
-            [
-                "u64",
-                "rx_broadcast_packets"
-            ],
-            [
-                "u64",
-                "rx_broadcast_bytes"
-            ],
-            [
-                "u64",
-                "tx_packets"
-            ],
-            [
-                "u64",
-                "tx_bytes"
-            ],
-            [
-                "u64",
-                "tx_unicast_packets"
-            ],
-            [
-                "u64",
-                "tx_unicast_bytes"
-            ],
-            [
-                "u64",
-                "tx_multicast_packets"
-            ],
-            [
-                "u64",
-                "tx_multicast_bytes"
-            ],
-            [
-                "u64",
-                "tx_broadcast_packets"
-            ],
-            [
-                "u64",
-                "tx_broadcast_bytes"
-            ],
-            {
-                "crc": "0x20905ca4"
-            }
-        ],
-        [
-            "vnet_simple_counter",
-            [
-                "u32",
-                "sw_if_index"
-            ],
-            [
-                "u64",
-                "drop"
-            ],
-            [
-                "u64",
-                "punt"
-            ],
-            [
-                "u64",
-                "rx_ip4"
-            ],
-            [
-                "u64",
-                "rx_ip6"
-            ],
-            [
-                "u64",
-                "rx_no_buffer"
-            ],
-            [
-                "u64",
-                "rx_miss"
-            ],
-            [
-                "u64",
-                "rx_error"
-            ],
-            [
-                "u64",
-                "tx_error"
-            ],
-            [
-                "u64",
-                "rx_mpls"
-            ],
-            {
-                "crc": "0x8bd65e2d"
-            }
-        ]
-    ],
+    "types": [],
     "aliases": {
         "interface_index": {
             "type": "u32"
index 68a8b44..2e90fbf 100644 (file)
@@ -6,7 +6,6 @@
 
  It contains following objects:
         51 messages
-         3 types
          1 alias
         25 services
 
@@ -145,204 +144,6 @@ type Services interface {
 //
 type InterfaceIndex uint32
 
-/* Types */
-
-// VlibCounter represents VPP binary API type 'vlib_counter':
-//
-//     "vlib_counter",
-//     [
-//         "u64",
-//         "packets"
-//     ],
-//     [
-//         "u64",
-//         "bytes"
-//     ],
-//     {
-//         "crc": "0xce2325a2"
-//     }
-//
-type VlibCounter struct {
-       Packets uint64
-       Bytes   uint64
-}
-
-func (*VlibCounter) GetTypeName() string {
-       return "vlib_counter"
-}
-func (*VlibCounter) GetCrcString() string {
-       return "ce2325a2"
-}
-
-// VnetCombinedCounter represents VPP binary API type 'vnet_combined_counter':
-//
-//     "vnet_combined_counter",
-//     [
-//         "u32",
-//         "sw_if_index"
-//     ],
-//     [
-//         "u64",
-//         "rx_packets"
-//     ],
-//     [
-//         "u64",
-//         "rx_bytes"
-//     ],
-//     [
-//         "u64",
-//         "rx_unicast_packets"
-//     ],
-//     [
-//         "u64",
-//         "rx_unicast_bytes"
-//     ],
-//     [
-//         "u64",
-//         "rx_multicast_packets"
-//     ],
-//     [
-//         "u64",
-//         "rx_multicast_bytes"
-//     ],
-//     [
-//         "u64",
-//         "rx_broadcast_packets"
-//     ],
-//     [
-//         "u64",
-//         "rx_broadcast_bytes"
-//     ],
-//     [
-//         "u64",
-//         "tx_packets"
-//     ],
-//     [
-//         "u64",
-//         "tx_bytes"
-//     ],
-//     [
-//         "u64",
-//         "tx_unicast_packets"
-//     ],
-//     [
-//         "u64",
-//         "tx_unicast_bytes"
-//     ],
-//     [
-//         "u64",
-//         "tx_multicast_packets"
-//     ],
-//     [
-//         "u64",
-//         "tx_multicast_bytes"
-//     ],
-//     [
-//         "u64",
-//         "tx_broadcast_packets"
-//     ],
-//     [
-//         "u64",
-//         "tx_broadcast_bytes"
-//     ],
-//     {
-//         "crc": "0x20905ca4"
-//     }
-//
-type VnetCombinedCounter struct {
-       SwIfIndex          uint32
-       RxPackets          uint64
-       RxBytes            uint64
-       RxUnicastPackets   uint64
-       RxUnicastBytes     uint64
-       RxMulticastPackets uint64
-       RxMulticastBytes   uint64
-       RxBroadcastPackets uint64
-       RxBroadcastBytes   uint64
-       TxPackets          uint64
-       TxBytes            uint64
-       TxUnicastPackets   uint64
-       TxUnicastBytes     uint64
-       TxMulticastPackets uint64
-       TxMulticastBytes   uint64
-       TxBroadcastPackets uint64
-       TxBroadcastBytes   uint64
-}
-
-func (*VnetCombinedCounter) GetTypeName() string {
-       return "vnet_combined_counter"
-}
-func (*VnetCombinedCounter) GetCrcString() string {
-       return "20905ca4"
-}
-
-// VnetSimpleCounter represents VPP binary API type 'vnet_simple_counter':
-//
-//     "vnet_simple_counter",
-//     [
-//         "u32",
-//         "sw_if_index"
-//     ],
-//     [
-//         "u64",
-//         "drop"
-//     ],
-//     [
-//         "u64",
-//         "punt"
-//     ],
-//     [
-//         "u64",
-//         "rx_ip4"
-//     ],
-//     [
-//         "u64",
-//         "rx_ip6"
-//     ],
-//     [
-//         "u64",
-//         "rx_no_buffer"
-//     ],
-//     [
-//         "u64",
-//         "rx_miss"
-//     ],
-//     [
-//         "u64",
-//         "rx_error"
-//     ],
-//     [
-//         "u64",
-//         "tx_error"
-//     ],
-//     [
-//         "u64",
-//         "rx_mpls"
-//     ],
-//     {
-//         "crc": "0x8bd65e2d"
-//     }
-//
-type VnetSimpleCounter struct {
-       SwIfIndex  uint32
-       Drop       uint64
-       Punt       uint64
-       RxIP4      uint64
-       RxIP6      uint64
-       RxNoBuffer uint64
-       RxMiss     uint64
-       RxError    uint64
-       TxError    uint64
-       RxMpls     uint64
-}
-
-func (*VnetSimpleCounter) GetTypeName() string {
-       return "vnet_simple_counter"
-}
-func (*VnetSimpleCounter) GetCrcString() string {
-       return "8bd65e2d"
-}
-
 /* Messages */
 
 // SwInterfaceSetFlags represents VPP binary API message 'sw_interface_set_flags':
index 3983288..62c282b 100644 (file)
                 "stats_index"
             ],
             [
-                "vl_api_fib_path_t",
+                "vl_api_mfib_path_t",
                 "path",
                 0,
                 "count"
             ],
             {
-                "crc": "0x21329a12"
+                "crc": "0x61faa26f"
             }
         ],
         [
                 "count"
             ],
             [
-                "vl_api_fib_path_t",
+                "vl_api_mfib_path_t",
                 "path",
                 0,
                 "count"
             ],
             {
-                "crc": "0xe02dcb4b"
+                "crc": "0x738c546e"
             }
         ],
         [
             }
         ]
     ],
-    "vl_api_version": "0x1eba4868",
+    "vl_api_version": "0xa3532a2f",
     "unions": [
         [
             "address_union",
                 "u8",
                 "is_source_lookup"
             ],
+            [
+                "u8",
+                "is_interface_rx"
+            ],
             [
                 "u8",
                 "afi"
                 16
             ],
             {
-                "crc": "0xabe483ef"
+                "crc": "0xba7a81f0"
             }
         ],
         [
-            "mac_address",
+            "mfib_path",
             [
-                "u8",
-                "bytes",
-                6
+                "vl_api_fib_path_t",
+                "path"
+            ],
+            [
+                "u32",
+                "itf_flags"
             ],
             {
-                "crc": "0xefdbdddc"
+                "crc": "0x4ba77d32"
             }
         ],
         [
         "ip4_address": {
             "length": 4,
             "type": "u8"
+        },
+        "mac_address": {
+            "length": 6,
+            "type": "u8"
         }
     }
 }
index b4615b5..8f31fd4 100644 (file)
@@ -7,7 +7,7 @@
  It contains following objects:
         91 messages
         11 types
-         2 aliases
+         3 aliases
          1 enum
          1 union
         44 services
@@ -262,7 +262,7 @@ const (
 //     "ip4_address": {
 //         "length": 4,
 //         "type": "u8"
-//     }
+//     },
 //
 type IP4Address [4]uint8
 
@@ -275,6 +275,15 @@ type IP4Address [4]uint8
 //
 type IP6Address [16]uint8
 
+// MacAddress represents VPP binary API alias 'mac_address':
+//
+//     "mac_address": {
+//         "length": 6,
+//         "type": "u8"
+//     }
+//
+type MacAddress [6]uint8
+
 /* Types */
 
 // Address represents VPP binary API type 'address':
@@ -506,6 +515,10 @@ func (*FibMplsLabel) GetCrcString() string {
 //     ],
 //     [
 //         "u8",
+//         "is_interface_rx"
+//     ],
+//     [
+//         "u8",
 //         "afi"
 //     ],
 //     [
@@ -535,7 +548,7 @@ func (*FibMplsLabel) GetCrcString() string {
 //         16
 //     ],
 //     {
-//         "crc": "0xabe483ef"
+//         "crc": "0xba7a81f0"
 //     }
 //
 type FibPath struct {
@@ -552,6 +565,7 @@ type FibPath struct {
        IsResolveAttached uint8
        IsDvr             uint8
        IsSourceLookup    uint8
+       IsInterfaceRx     uint8
        Afi               uint8
        NextHop           []byte `struc:"[16]byte"`
        NextHopID         uint32
@@ -565,23 +579,34 @@ func (*FibPath) GetTypeName() string {
        return "fib_path"
 }
 func (*FibPath) GetCrcString() string {
-       return "abe483ef"
+       return "ba7a81f0"
 }
 
-// MacAddress represents VPP binary API type 'mac_address':
+// MfibPath represents VPP binary API type 'mfib_path':
 //
-//     "mac_address",
-//     6
+//     "mfib_path",
+//     [
+//         "vl_api_fib_path_t",
+//         "path"
+//     ],
+//     [
+//         "u32",
+//         "itf_flags"
+//     ],
+//     {
+//         "crc": "0x4ba77d32"
+//     }
 //
-type MacAddress struct {
-       Bytes []byte `struc:"[6]byte"`
+type MfibPath struct {
+       Path     FibPath
+       ItfFlags uint32
 }
 
-func (*MacAddress) GetTypeName() string {
-       return "mac_address"
+func (*MfibPath) GetTypeName() string {
+       return "mfib_path"
 }
-func (*MacAddress) GetCrcString() string {
-       return "efdbdddc"
+func (*MfibPath) GetCrcString() string {
+       return "4ba77d32"
 }
 
 // PuntRedirect represents VPP binary API type 'punt_redirect':
@@ -2356,13 +2381,13 @@ func (*IPMfibDump) GetMessageType() api.MessageType {
 //         "stats_index"
 //     ],
 //     [
-//         "vl_api_fib_path_t",
+//         "vl_api_mfib_path_t",
 //         "path",
 //         0,
 //         "count"
 //     ],
 //     {
-//         "crc": "0x21329a12"
+//         "crc": "0x61faa26f"
 //     }
 //
 type IPMfibDetails struct {
@@ -2374,14 +2399,14 @@ type IPMfibDetails struct {
        SrcAddress    []byte `struc:"[4]byte"`
        Count         uint32 `struc:"sizeof=Path"`
        StatsIndex    uint32
-       Path          []FibPath
+       Path          []MfibPath
 }
 
 func (*IPMfibDetails) GetMessageName() string {
        return "ip_mfib_details"
 }
 func (*IPMfibDetails) GetCrcString() string {
-       return "21329a12"
+       return "61faa26f"
 }
 func (*IPMfibDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
@@ -2452,13 +2477,13 @@ func (*IP6MfibDump) GetMessageType() api.MessageType {
 //         "count"
 //     ],
 //     [
-//         "vl_api_fib_path_t",
+//         "vl_api_mfib_path_t",
 //         "path",
 //         0,
 //         "count"
 //     ],
 //     {
-//         "crc": "0xe02dcb4b"
+//         "crc": "0x738c546e"
 //     }
 //
 type IP6MfibDetails struct {
@@ -2467,14 +2492,14 @@ type IP6MfibDetails struct {
        GrpAddress    []byte `struc:"[16]byte"`
        SrcAddress    []byte `struc:"[16]byte"`
        Count         uint32 `struc:"sizeof=Path"`
-       Path          []FibPath
+       Path          []MfibPath
 }
 
 func (*IP6MfibDetails) GetMessageName() string {
        return "ip6_mfib_details"
 }
 func (*IP6MfibDetails) GetCrcString() string {
-       return "e02dcb4b"
+       return "738c546e"
 }
 func (*IP6MfibDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
index cb98202..a19bd3a 100644 (file)
                 "u8",
                 "psid_length"
             ],
-            [
-                "bool",
-                "is_translation"
-            ],
-            [
-                "bool",
-                "is_rfc6052"
-            ],
             [
                 "u16",
                 "mtu"
             ],
             {
-                "crc": "0x7a64714e"
+                "crc": "0xa9358068"
             }
         ],
         [
                 "u16",
                 "mtu"
             ],
-            [
-                "bool",
-                "is_translation"
-            ],
             {
-                "crc": "0x7a986fe6"
+                "crc": "0x2a17dcb8"
             }
         ],
         [
                 "crc": "0x4f932665"
             }
         ],
+        [
+            "map_if_enable_disable",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            [
+                "bool",
+                "is_enable"
+            ],
+            [
+                "bool",
+                "is_translation"
+            ],
+            {
+                "crc": "0x61a30cd9"
+            }
+        ],
+        [
+            "map_if_enable_disable_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
         [
             "map_summary_stats",
             [
                 "crc": "0xe8d4e804"
             }
         ],
+        [
+            "map_param_set_tcp",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u16",
+                "tcp_mss"
+            ],
+            {
+                "crc": "0x87a825d9"
+            }
+        ],
+        [
+            "map_param_set_tcp_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
         [
             "map_param_get",
             [
             }
         ]
     ],
-    "vl_api_version": "0x14b499d0",
+    "vl_api_version": "0x75de78c3",
     "unions": [
         [
             "address_union",
         "map_param_add_del_pre_resolve": {
             "reply": "map_param_add_del_pre_resolve_reply"
         },
+        "map_param_set_tcp": {
+            "reply": "map_param_set_tcp_reply"
+        },
         "map_rule_dump": {
             "reply": "map_rule_details",
             "stream": true
         },
+        "map_if_enable_disable": {
+            "reply": "map_if_enable_disable_reply"
+        },
         "map_param_set_icmp6": {
             "reply": "map_param_set_icmp6_reply"
         },
index 8620c98..0a1e678 100644 (file)
@@ -5,12 +5,12 @@
  Package maps is a generated from VPP binary API module 'map'.
 
  It contains following objects:
-        28 messages
+        32 messages
          5 types
          2 aliases
          1 enum
          1 union
-        14 services
+        16 services
 
 */
 package maps
@@ -33,10 +33,16 @@ var _ = bytes.NewBuffer
 //         "map_param_add_del_pre_resolve": {
 //             "reply": "map_param_add_del_pre_resolve_reply"
 //         },
+//         "map_param_set_tcp": {
+//             "reply": "map_param_set_tcp_reply"
+//         },
 //         "map_rule_dump": {
 //             "reply": "map_rule_details",
 //             "stream": true
 //         },
+//         "map_if_enable_disable": {
+//             "reply": "map_if_enable_disable_reply"
+//         },
 //         "map_param_set_icmp6": {
 //             "reply": "map_param_set_icmp6_reply"
 //         },
@@ -79,6 +85,7 @@ type Services interface {
        MapAddDelRule(*MapAddDelRule) (*MapAddDelRuleReply, error)
        MapAddDomain(*MapAddDomain) (*MapAddDomainReply, error)
        MapDelDomain(*MapDelDomain) (*MapDelDomainReply, error)
+       MapIfEnableDisable(*MapIfEnableDisable) (*MapIfEnableDisableReply, error)
        MapParamAddDelPreResolve(*MapParamAddDelPreResolve) (*MapParamAddDelPreResolveReply, error)
        MapParamGet(*MapParamGet) (*MapParamGetReply, error)
        MapParamSetFragmentation(*MapParamSetFragmentation) (*MapParamSetFragmentationReply, error)
@@ -86,6 +93,7 @@ type Services interface {
        MapParamSetICMP6(*MapParamSetICMP6) (*MapParamSetICMP6Reply, error)
        MapParamSetReassembly(*MapParamSetReassembly) (*MapParamSetReassemblyReply, error)
        MapParamSetSecurityCheck(*MapParamSetSecurityCheck) (*MapParamSetSecurityCheckReply, error)
+       MapParamSetTCP(*MapParamSetTCP) (*MapParamSetTCPReply, error)
        MapParamSetTrafficClass(*MapParamSetTrafficClass) (*MapParamSetTrafficClassReply, error)
        MapSummaryStats(*MapSummaryStats) (*MapSummaryStatsReply, error)
 }
@@ -377,38 +385,28 @@ func (u *AddressUnion) GetIP6() (a IP6Address) {
 //         "psid_length"
 //     ],
 //     [
-//         "bool",
-//         "is_translation"
-//     ],
-//     [
-//         "bool",
-//         "is_rfc6052"
-//     ],
-//     [
 //         "u16",
 //         "mtu"
 //     ],
 //     {
-//         "crc": "0x7a64714e"
+//         "crc": "0xa9358068"
 //     }
 //
 type MapAddDomain struct {
-       IP6Prefix     IP6Prefix
-       IP4Prefix     IP4Prefix
-       IP6Src        IP6Prefix
-       EaBitsLen     uint8
-       PsidOffset    uint8
-       PsidLength    uint8
-       IsTranslation bool
-       IsRfc6052     bool
-       Mtu           uint16
+       IP6Prefix  IP6Prefix
+       IP4Prefix  IP4Prefix
+       IP6Src     IP6Prefix
+       EaBitsLen  uint8
+       PsidOffset uint8
+       PsidLength uint8
+       Mtu        uint16
 }
 
 func (*MapAddDomain) GetMessageName() string {
        return "map_add_domain"
 }
 func (*MapAddDomain) GetCrcString() string {
-       return "7a64714e"
+       return "a9358068"
 }
 func (*MapAddDomain) GetMessageType() api.MessageType {
        return api.RequestMessage
@@ -685,32 +683,27 @@ func (*MapDomainDump) GetMessageType() api.MessageType {
 //         "u16",
 //         "mtu"
 //     ],
-//     [
-//         "bool",
-//         "is_translation"
-//     ],
 //     {
-//         "crc": "0x7a986fe6"
+//         "crc": "0x2a17dcb8"
 //     }
 //
 type MapDomainDetails struct {
-       DomainIndex   uint32
-       IP6Prefix     IP6Prefix
-       IP4Prefix     IP4Prefix
-       IP6Src        IP6Prefix
-       EaBitsLen     uint8
-       PsidOffset    uint8
-       PsidLength    uint8
-       Flags         uint8
-       Mtu           uint16
-       IsTranslation bool
+       DomainIndex uint32
+       IP6Prefix   IP6Prefix
+       IP4Prefix   IP4Prefix
+       IP6Src      IP6Prefix
+       EaBitsLen   uint8
+       PsidOffset  uint8
+       PsidLength  uint8
+       Flags       uint8
+       Mtu         uint16
 }
 
 func (*MapDomainDetails) GetMessageName() string {
        return "map_domain_details"
 }
 func (*MapDomainDetails) GetCrcString() string {
-       return "7a986fe6"
+       return "2a17dcb8"
 }
 func (*MapDomainDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
@@ -791,6 +784,86 @@ func (*MapRuleDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 
+// MapIfEnableDisable represents VPP binary API message 'map_if_enable_disable':
+//
+//     "map_if_enable_disable",
+//     [
+//         "u16",
+//         "_vl_msg_id"
+//     ],
+//     [
+//         "u32",
+//         "client_index"
+//     ],
+//     [
+//         "u32",
+//         "context"
+//     ],
+//     [
+//         "u32",
+//         "sw_if_index"
+//     ],
+//     [
+//         "bool",
+//         "is_enable"
+//     ],
+//     [
+//         "bool",
+//         "is_translation"
+//     ],
+//     {
+//         "crc": "0x61a30cd9"
+//     }
+//
+type MapIfEnableDisable struct {
+       SwIfIndex     uint32
+       IsEnable      bool
+       IsTranslation bool
+}
+
+func (*MapIfEnableDisable) GetMessageName() string {
+       return "map_if_enable_disable"
+}
+func (*MapIfEnableDisable) GetCrcString() string {
+       return "61a30cd9"
+}
+func (*MapIfEnableDisable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+// MapIfEnableDisableReply represents VPP binary API message 'map_if_enable_disable_reply':
+//
+//     "map_if_enable_disable_reply",
+//     [
+//         "u16",
+//         "_vl_msg_id"
+//     ],
+//     [
+//         "u32",
+//         "context"
+//     ],
+//     [
+//         "i32",
+//         "retval"
+//     ],
+//     {
+//         "crc": "0xe8d4e804"
+//     }
+//
+type MapIfEnableDisableReply struct {
+       Retval int32
+}
+
+func (*MapIfEnableDisableReply) GetMessageName() string {
+       return "map_if_enable_disable_reply"
+}
+func (*MapIfEnableDisableReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func (*MapIfEnableDisableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
 // MapSummaryStats represents VPP binary API message 'map_summary_stats':
 //
 //     "map_summary_stats",
@@ -1418,6 +1491,76 @@ func (*MapParamSetTrafficClassReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 
+// MapParamSetTCP represents VPP binary API message 'map_param_set_tcp':
+//
+//     "map_param_set_tcp",
+//     [
+//         "u16",
+//         "_vl_msg_id"
+//     ],
+//     [
+//         "u32",
+//         "client_index"
+//     ],
+//     [
+//         "u32",
+//         "context"
+//     ],
+//     [
+//         "u16",
+//         "tcp_mss"
+//     ],
+//     {
+//         "crc": "0x87a825d9"
+//     }
+//
+type MapParamSetTCP struct {
+       TCPMss uint16
+}
+
+func (*MapParamSetTCP) GetMessageName() string {
+       return "map_param_set_tcp"
+}
+func (*MapParamSetTCP) GetCrcString() string {
+       return "87a825d9"
+}
+func (*MapParamSetTCP) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+// MapParamSetTCPReply represents VPP binary API message 'map_param_set_tcp_reply':
+//
+//     "map_param_set_tcp_reply",
+//     [
+//         "u16",
+//         "_vl_msg_id"
+//     ],
+//     [
+//         "u32",
+//         "context"
+//     ],
+//     [
+//         "i32",
+//         "retval"
+//     ],
+//     {
+//         "crc": "0xe8d4e804"
+//     }
+//
+type MapParamSetTCPReply struct {
+       Retval int32
+}
+
+func (*MapParamSetTCPReply) GetMessageName() string {
+       return "map_param_set_tcp_reply"
+}
+func (*MapParamSetTCPReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func (*MapParamSetTCPReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
 // MapParamGet represents VPP binary API message 'map_param_get':
 //
 //     "map_param_get",
@@ -1583,6 +1726,8 @@ func init() {
        api.RegisterMessage((*MapDomainDetails)(nil), "map.MapDomainDetails")
        api.RegisterMessage((*MapRuleDump)(nil), "map.MapRuleDump")
        api.RegisterMessage((*MapRuleDetails)(nil), "map.MapRuleDetails")
+       api.RegisterMessage((*MapIfEnableDisable)(nil), "map.MapIfEnableDisable")
+       api.RegisterMessage((*MapIfEnableDisableReply)(nil), "map.MapIfEnableDisableReply")
        api.RegisterMessage((*MapSummaryStats)(nil), "map.MapSummaryStats")
        api.RegisterMessage((*MapSummaryStatsReply)(nil), "map.MapSummaryStatsReply")
        api.RegisterMessage((*MapParamSetFragmentation)(nil), "map.MapParamSetFragmentation")
@@ -1599,6 +1744,8 @@ func init() {
        api.RegisterMessage((*MapParamSetSecurityCheckReply)(nil), "map.MapParamSetSecurityCheckReply")
        api.RegisterMessage((*MapParamSetTrafficClass)(nil), "map.MapParamSetTrafficClass")
        api.RegisterMessage((*MapParamSetTrafficClassReply)(nil), "map.MapParamSetTrafficClassReply")
+       api.RegisterMessage((*MapParamSetTCP)(nil), "map.MapParamSetTCP")
+       api.RegisterMessage((*MapParamSetTCPReply)(nil), "map.MapParamSetTCPReply")
        api.RegisterMessage((*MapParamGet)(nil), "map.MapParamGet")
        api.RegisterMessage((*MapParamGetReply)(nil), "map.MapParamGetReply")
 }
diff --git a/examples/bin_api/stats.api.json b/examples/bin_api/stats.api.json
deleted file mode 100644 (file)
index 31c957e..0000000
+++ /dev/null
@@ -1,1531 +0,0 @@
-{
-    "messages": [
-        [
-            "want_stats",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "client_index"
-            ],
-            [
-                "u32",
-                "context"
-            ],
-            [
-                "u32",
-                "enable_disable"
-            ],
-            [
-                "u32",
-                "pid"
-            ],
-            {
-                "crc": "0x476f5a08"
-            }
-        ],
-        [
-            "want_stats_reply",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "context"
-            ],
-            [
-                "i32",
-                "retval"
-            ],
-            {
-                "crc": "0xe8d4e804"
-            }
-        ],
-        [
-            "want_interface_simple_stats",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "client_index"
-            ],
-            [
-                "u32",
-                "context"
-            ],
-            [
-                "u32",
-                "enable_disable"
-            ],
-            [
-                "u32",
-                "pid"
-            ],
-            {
-                "crc": "0x476f5a08"
-            }
-        ],
-        [
-            "want_interface_simple_stats_reply",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "context"
-            ],
-            [
-                "i32",
-                "retval"
-            ],
-            {
-                "crc": "0xe8d4e804"
-            }
-        ],
-        [
-            "want_per_interface_simple_stats",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "client_index"
-            ],
-            [
-                "u32",
-                "context"
-            ],
-            [
-                "u32",
-                "enable_disable"
-            ],
-            [
-                "u32",
-                "pid"
-            ],
-            [
-                "u32",
-                "num"
-            ],
-            [
-                "u32",
-                "sw_ifs",
-                0,
-                "num"
-            ],
-            {
-                "crc": "0x729d04f1"
-            }
-        ],
-        [
-            "want_per_interface_simple_stats_reply",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "context"
-            ],
-            [
-                "i32",
-                "retval"
-            ],
-            {
-                "crc": "0xe8d4e804"
-            }
-        ],
-        [
-            "want_interface_combined_stats",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "client_index"
-            ],
-            [
-                "u32",
-                "context"
-            ],
-            [
-                "u32",
-                "enable_disable"
-            ],
-            [
-                "u32",
-                "pid"
-            ],
-            {
-                "crc": "0x476f5a08"
-            }
-        ],
-        [
-            "want_interface_combined_stats_reply",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "context"
-            ],
-            [
-                "i32",
-                "retval"
-            ],
-            {
-                "crc": "0xe8d4e804"
-            }
-        ],
-        [
-            "want_per_interface_combined_stats",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "client_index"
-            ],
-            [
-                "u32",
-                "context"
-            ],
-            [
-                "u32",
-                "enable_disable"
-            ],
-            [
-                "u32",
-                "pid"
-            ],
-            [
-                "u32",
-                "num"
-            ],
-            [
-                "u32",
-                "sw_ifs",
-                0,
-                "num"
-            ],
-            {
-                "crc": "0x729d04f1"
-            }
-        ],
-        [
-            "want_per_interface_combined_stats_reply",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "context"
-            ],
-            [
-                "i32",
-                "retval"
-            ],
-            {
-                "crc": "0xe8d4e804"
-            }
-        ],
-        [
-            "want_ip4_fib_stats",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "client_index"
-            ],
-            [
-                "u32",
-                "context"
-            ],
-            [
-                "u32",
-                "enable_disable"
-            ],
-            [
-                "u32",
-                "pid"
-            ],
-            {
-                "crc": "0x476f5a08"
-            }
-        ],
-        [
-            "want_ip4_fib_stats_reply",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "context"
-            ],
-            [
-                "i32",
-                "retval"
-            ],
-            {
-                "crc": "0xe8d4e804"
-            }
-        ],
-        [
-            "want_ip6_fib_stats",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "client_index"
-            ],
-            [
-                "u32",
-                "context"
-            ],
-            [
-                "u32",
-                "enable_disable"
-            ],
-            [
-                "u32",
-                "pid"
-            ],
-            {
-                "crc": "0x476f5a08"
-            }
-        ],
-        [
-            "want_ip6_fib_stats_reply",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "context"
-            ],
-            [
-                "i32",
-                "retval"
-            ],
-            {
-                "crc": "0xe8d4e804"
-            }
-        ],
-        [
-            "want_ip4_mfib_stats",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "client_index"
-            ],
-            [
-                "u32",
-                "context"
-            ],
-            [
-                "u32",
-                "enable_disable"
-            ],
-            [
-                "u32",
-                "pid"
-            ],
-            {
-                "crc": "0x476f5a08"
-            }
-        ],
-        [
-            "want_ip4_mfib_stats_reply",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "context"
-            ],
-            [
-                "i32",
-                "retval"
-            ],
-            {
-                "crc": "0xe8d4e804"
-            }
-        ],
-        [
-            "want_ip6_mfib_stats",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "client_index"
-            ],
-            [
-                "u32",
-                "context"
-            ],
-            [
-                "u32",
-                "enable_disable"
-            ],
-            [
-                "u32",
-                "pid"
-            ],
-            {
-                "crc": "0x476f5a08"
-            }
-        ],
-        [
-            "want_ip6_mfib_stats_reply",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "context"
-            ],
-            [
-                "i32",
-                "retval"
-            ],
-            {
-                "crc": "0xe8d4e804"
-            }
-        ],
-        [
-            "want_ip4_nbr_stats",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "client_index"
-            ],
-            [
-                "u32",
-                "context"
-            ],
-            [
-                "u32",
-                "enable_disable"
-            ],
-            [
-                "u32",
-                "pid"
-            ],
-            {
-                "crc": "0x476f5a08"
-            }
-        ],
-        [
-            "want_ip4_nbr_stats_reply",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "context"
-            ],
-            [
-                "i32",
-                "retval"
-            ],
-            {
-                "crc": "0xe8d4e804"
-            }
-        ],
-        [
-            "want_ip6_nbr_stats",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "client_index"
-            ],
-            [
-                "u32",
-                "context"
-            ],
-            [
-                "u32",
-                "enable_disable"
-            ],
-            [
-                "u32",
-                "pid"
-            ],
-            {
-                "crc": "0x476f5a08"
-            }
-        ],
-        [
-            "want_ip6_nbr_stats_reply",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "context"
-            ],
-            [
-                "i32",
-                "retval"
-            ],
-            {
-                "crc": "0xe8d4e804"
-            }
-        ],
-        [
-            "vnet_ip4_fib_counters",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "vrf_id"
-            ],
-            [
-                "u32",
-                "count"
-            ],
-            [
-                "vl_api_ip4_fib_counter_t",
-                "c",
-                0,
-                "count"
-            ],
-            {
-                "crc": "0x57e3feec"
-            }
-        ],
-        [
-            "vnet_ip4_mfib_counters",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "vrf_id"
-            ],
-            [
-                "u32",
-                "count"
-            ],
-            [
-                "vl_api_ip4_mfib_counter_t",
-                "c",
-                0,
-                "count"
-            ],
-            {
-                "crc": "0x946eb588"
-            }
-        ],
-        [
-            "vnet_ip4_nbr_counters",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "count"
-            ],
-            [
-                "u32",
-                "sw_if_index"
-            ],
-            [
-                "u8",
-                "begin"
-            ],
-            [
-                "vl_api_ip4_nbr_counter_t",
-                "c",
-                0,
-                "count"
-            ],
-            {
-                "crc": "0x214c4811"
-            }
-        ],
-        [
-            "vnet_ip6_fib_counters",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "vrf_id"
-            ],
-            [
-                "u32",
-                "count"
-            ],
-            [
-                "vl_api_ip6_fib_counter_t",
-                "c",
-                0,
-                "count"
-            ],
-            {
-                "crc": "0x13aed73d"
-            }
-        ],
-        [
-            "vnet_ip6_mfib_counters",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "vrf_id"
-            ],
-            [
-                "u32",
-                "count"
-            ],
-            [
-                "vl_api_ip6_mfib_counter_t",
-                "c",
-                0,
-                "count"
-            ],
-            {
-                "crc": "0x65fe1ae3"
-            }
-        ],
-        [
-            "vnet_ip6_nbr_counters",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "count"
-            ],
-            [
-                "u32",
-                "sw_if_index"
-            ],
-            [
-                "u8",
-                "begin"
-            ],
-            [
-                "vl_api_ip6_nbr_counter_t",
-                "c",
-                0,
-                "count"
-            ],
-            {
-                "crc": "0x650161c0"
-            }
-        ],
-        [
-            "vnet_interface_simple_counters",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u8",
-                "vnet_counter_type"
-            ],
-            [
-                "u32",
-                "first_sw_if_index"
-            ],
-            [
-                "u32",
-                "count"
-            ],
-            [
-                "u64",
-                "data",
-                0,
-                "count"
-            ],
-            {
-                "crc": "0x9bc4a808"
-            }
-        ],
-        [
-            "vnet_interface_combined_counters",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u8",
-                "vnet_counter_type"
-            ],
-            [
-                "u32",
-                "first_sw_if_index"
-            ],
-            [
-                "u32",
-                "count"
-            ],
-            [
-                "vl_api_vlib_counter_t",
-                "data",
-                0,
-                "count"
-            ],
-            {
-                "crc": "0x2c595002"
-            }
-        ],
-        [
-            "vnet_per_interface_simple_counters",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "count"
-            ],
-            [
-                "u32",
-                "timestamp"
-            ],
-            [
-                "vl_api_vnet_simple_counter_t",
-                "data",
-                0,
-                "count"
-            ],
-            {
-                "crc": "0xd1fba9ba"
-            }
-        ],
-        [
-            "vnet_per_interface_combined_counters",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "count"
-            ],
-            [
-                "u32",
-                "timestamp"
-            ],
-            [
-                "vl_api_vnet_combined_counter_t",
-                "data",
-                0,
-                "count"
-            ],
-            {
-                "crc": "0xdc578375"
-            }
-        ],
-        [
-            "vnet_get_summary_stats",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "client_index"
-            ],
-            [
-                "u32",
-                "context"
-            ],
-            {
-                "crc": "0x51077d14"
-            }
-        ],
-        [
-            "vnet_get_summary_stats_reply",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "context"
-            ],
-            [
-                "i32",
-                "retval"
-            ],
-            [
-                "u64",
-                "total_pkts",
-                8
-            ],
-            [
-                "u64",
-                "total_bytes",
-                8
-            ],
-            [
-                "f64",
-                "vector_rate"
-            ],
-            {
-                "crc": "0x82b5e46c"
-            }
-        ],
-        [
-            "stats_get_poller_delay",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "client_index"
-            ],
-            [
-                "u32",
-                "context"
-            ],
-            {
-                "crc": "0x51077d14"
-            }
-        ],
-        [
-            "stats_get_poller_delay_reply",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "context"
-            ],
-            [
-                "i32",
-                "retval"
-            ],
-            [
-                "u32",
-                "delay"
-            ],
-            {
-                "crc": "0x8c445a33"
-            }
-        ],
-        [
-            "want_udp_encap_stats",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "client_index"
-            ],
-            [
-                "u32",
-                "context"
-            ],
-            [
-                "u32",
-                "enable"
-            ],
-            [
-                "u32",
-                "pid"
-            ],
-            {
-                "crc": "0xcfaccc1f"
-            }
-        ],
-        [
-            "want_udp_encap_stats_reply",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "context"
-            ],
-            [
-                "i32",
-                "retval"
-            ],
-            {
-                "crc": "0xe8d4e804"
-            }
-        ],
-        [
-            "vnet_udp_encap_counters",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "timestamp"
-            ],
-            [
-                "u32",
-                "count"
-            ],
-            [
-                "vl_api_udp_encap_counter_t",
-                "c",
-                0,
-                "count"
-            ],
-            {
-                "crc": "0x1ab5e649"
-            }
-        ],
-        [
-            "want_bier_neighbor_stats",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "client_index"
-            ],
-            [
-                "u32",
-                "context"
-            ],
-            [
-                "u32",
-                "enable"
-            ],
-            [
-                "u32",
-                "pid"
-            ],
-            {
-                "crc": "0xcfaccc1f"
-            }
-        ],
-        [
-            "want_bier_neighbor_stats_reply",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "context"
-            ],
-            [
-                "i32",
-                "retval"
-            ],
-            {
-                "crc": "0xe8d4e804"
-            }
-        ],
-        [
-            "vnet_bier_neighbor_counters",
-            [
-                "u16",
-                "_vl_msg_id"
-            ],
-            [
-                "u32",
-                "timestamp"
-            ],
-            [
-                "u32",
-                "count"
-            ],
-            [
-                "vl_api_bier_neighbor_counter_t",
-                "c",
-                0,
-                "count"
-            ],
-            {
-                "crc": "0xee0481ce"
-            }
-        ]
-    ],
-    "vl_api_version": "0xd3b29d42",
-    "unions": [],
-    "services": {
-        "want_ip4_fib_stats": {
-            "reply": "want_ip4_fib_stats_reply",
-            "events": [
-                "vnet_ip4_fib_counters"
-            ]
-        },
-        "want_ip6_fib_stats": {
-            "reply": "want_ip6_fib_stats_reply",
-            "events": [
-                "vnet_ip6_fib_counters"
-            ]
-        },
-        "want_stats": {
-            "reply": "want_stats_reply"
-        },
-        "want_interface_simple_stats": {
-            "reply": "want_interface_simple_stats_reply",
-            "events": [
-                "vnet_interface_simple_counters"
-            ]
-        },
-        "stats_get_poller_delay": {
-            "reply": "stats_get_poller_delay_reply"
-        },
-        "want_per_interface_combined_stats": {
-            "reply": "want_per_interface_combined_stats_reply",
-            "events": [
-                "vnet_per_interface_combined_counters"
-            ]
-        },
-        "vnet_get_summary_stats": {
-            "reply": "vnet_get_summary_stats_reply"
-        },
-        "want_bier_neighbor_stats": {
-            "reply": "want_bier_neighbor_stats_reply",
-            "events": [
-                "vnet_bier_neighbor_counters"
-            ]
-        },
-        "want_udp_encap_stats": {
-            "reply": "want_udp_encap_stats_reply",
-            "events": [
-                "vnet_udp_encap_counters"
-            ]
-        },
-        "want_ip6_nbr_stats": {
-            "reply": "want_ip6_nbr_stats_reply",
-            "events": [
-                "vnet_ip6_nbr_counters"
-            ]
-        },
-        "want_ip4_mfib_stats": {
-            "reply": "want_ip4_mfib_stats_reply",
-            "events": [
-                "vnet_ip4_mfib_counters"
-            ]
-        },
-        "want_ip6_mfib_stats": {
-            "reply": "want_ip6_mfib_stats_reply",
-            "events": [
-                "vnet_ip6_mfib_counters"
-            ]
-        },
-        "want_per_interface_simple_stats": {
-            "reply": "want_per_interface_simple_stats_reply",
-            "events": [
-                "vnet_per_interface_simple_counters"
-            ]
-        },
-        "want_interface_combined_stats": {
-            "reply": "want_interface_combined_stats_reply",
-            "events": [
-                "vnet_interface_combined_counters"
-            ]
-        },
-        "want_ip4_nbr_stats": {
-            "reply": "want_ip4_nbr_stats_reply",
-            "events": [
-                "vnet_ip4_nbr_counters"
-            ]
-        }
-    },
-    "enums": [],
-    "types": [
-        [
-            "vlib_counter",
-            [
-                "u64",
-                "packets"
-            ],
-            [
-                "u64",
-                "bytes"
-            ],
-            {
-                "crc": "0xce2325a2"
-            }
-        ],
-        [
-            "vnet_combined_counter",
-            [
-                "u32",
-                "sw_if_index"
-            ],
-            [
-                "u64",
-                "rx_packets"
-            ],
-            [
-                "u64",
-                "rx_bytes"
-            ],
-            [
-                "u64",
-                "rx_unicast_packets"
-            ],
-            [
-                "u64",
-                "rx_unicast_bytes"
-            ],
-            [
-                "u64",
-                "rx_multicast_packets"
-            ],
-            [
-                "u64",
-                "rx_multicast_bytes"
-            ],
-            [
-                "u64",
-                "rx_broadcast_packets"
-            ],
-            [
-                "u64",
-                "rx_broadcast_bytes"
-            ],
-            [
-                "u64",
-                "tx_packets"
-            ],
-            [
-                "u64",
-                "tx_bytes"
-            ],
-            [
-                "u64",
-                "tx_unicast_packets"
-            ],
-            [
-                "u64",
-                "tx_unicast_bytes"
-            ],
-            [
-                "u64",
-                "tx_multicast_packets"
-            ],
-            [
-                "u64",
-                "tx_multicast_bytes"
-            ],
-            [
-                "u64",
-                "tx_broadcast_packets"
-            ],
-            [
-                "u64",
-                "tx_broadcast_bytes"
-            ],
-            {
-                "crc": "0x20905ca4"
-            }
-        ],
-        [
-            "vnet_simple_counter",
-            [
-                "u32",
-                "sw_if_index"
-            ],
-            [
-                "u64",
-                "drop"
-            ],
-            [
-                "u64",
-                "punt"
-            ],
-            [
-                "u64",
-                "rx_ip4"
-            ],
-            [
-                "u64",
-                "rx_ip6"
-            ],
-            [
-                "u64",
-                "rx_no_buffer"
-            ],
-            [
-                "u64",
-                "rx_miss"
-            ],
-            [
-                "u64",
-                "rx_error"
-            ],
-            [
-                "u64",
-                "tx_error"
-            ],
-            [
-                "u64",
-                "rx_mpls"
-            ],
-            {
-                "crc": "0x8bd65e2d"
-            }
-        ],
-        [
-            "fib_mpls_label",
-            [
-                "u8",
-                "is_uniform"
-            ],
-            [
-                "u32",
-                "label"
-            ],
-            [
-                "u8",
-                "ttl"
-            ],
-            [
-                "u8",
-                "exp"
-            ],
-            {
-                "crc": "0xc93bf35c"
-            }
-        ],
-        [
-            "fib_path",
-            [
-                "u32",
-                "sw_if_index"
-            ],
-            [
-                "u32",
-                "table_id"
-            ],
-            [
-                "u8",
-                "weight"
-            ],
-            [
-                "u8",
-                "preference"
-            ],
-            [
-                "u8",
-                "is_local"
-            ],
-            [
-                "u8",
-                "is_drop"
-            ],
-            [
-                "u8",
-                "is_udp_encap"
-            ],
-            [
-                "u8",
-                "is_unreach"
-            ],
-            [
-                "u8",
-                "is_prohibit"
-            ],
-            [
-                "u8",
-                "is_resolve_host"
-            ],
-            [
-                "u8",
-                "is_resolve_attached"
-            ],
-            [
-                "u8",
-                "is_dvr"
-            ],
-            [
-                "u8",
-                "is_source_lookup"
-            ],
-            [
-                "u8",
-                "afi"
-            ],
-            [
-                "u8",
-                "next_hop",
-                16
-            ],
-            [
-                "u32",
-                "next_hop_id"
-            ],
-            [
-                "u32",
-                "rpf_id"
-            ],
-            [
-                "u32",
-                "via_label"
-            ],
-            [
-                "u8",
-                "n_labels"
-            ],
-            [
-                "vl_api_fib_mpls_label_t",
-                "label_stack",
-                16
-            ],
-            {
-                "crc": "0xabe483ef"
-            }
-        ],
-        [
-            "bier_table_id",
-            [
-                "u8",
-                "bt_set"
-            ],
-            [
-                "u8",
-                "bt_sub_domain"
-            ],
-            [
-                "u8",
-                "bt_hdr_len_id"
-            ],
-            {
-                "crc": "0x435c691d"
-            }
-        ],
-        [
-            "ip4_fib_counter",
-            [
-                "u32",
-                "address"
-            ],
-            [
-                "u8",
-                "address_length"
-            ],
-            [
-                "u64",
-                "packets"
-            ],
-            [
-                "u64",
-                "bytes"
-            ],
-            {
-                "crc": "0xa6ceb0c9"
-            }
-        ],
-        [
-            "ip4_mfib_counter",
-            [
-                "u8",
-                "source",
-                4
-            ],
-            [
-                "u8",
-                "group",
-                4
-            ],
-            [
-                "u8",
-                "group_length"
-            ],
-            [
-                "u64",
-                "packets"
-            ],
-            [
-                "u64",
-                "bytes"
-            ],
-            {
-                "crc": "0x2cee4721"
-            }
-        ],
-        [
-            "ip4_nbr_counter",
-            [
-                "u32",
-                "address"
-            ],
-            [
-                "u8",
-                "link_type"
-            ],
-            [
-                "u64",
-                "packets"
-            ],
-            [
-                "u64",
-                "bytes"
-            ],
-            {
-                "crc": "0xb9f974d6"
-            }
-        ],
-        [
-            "ip6_fib_counter",
-            [
-                "u64",
-                "address",
-                2
-            ],
-            [
-                "u8",
-                "address_length"
-            ],
-            [
-                "u64",
-                "packets"
-            ],
-            [
-                "u64",
-                "bytes"
-            ],
-            {
-                "crc": "0xf1197efb"
-            }
-        ],
-        [
-            "ip6_mfib_counter",
-            [
-                "u8",
-                "source",
-                16
-            ],
-            [
-                "u8",
-                "group",
-                16
-            ],
-            [
-                "u8",
-                "group_length"
-            ],
-            [
-                "u64",
-                "packets"
-            ],
-            [
-                "u64",
-                "bytes"
-            ],
-            {
-                "crc": "0x90a9590e"
-            }
-        ],
-        [
-            "ip6_nbr_counter",
-            [
-                "u64",
-                "address",
-                2
-            ],
-            [
-                "u8",
-                "link_type"
-            ],
-            [
-                "u64",
-                "packets"
-            ],
-            [
-                "u64",
-                "bytes"
-            ],
-            {
-                "crc": "0x2d755474"
-            }
-        ],
-        [
-            "udp_encap_counter",
-            [
-                "u32",
-                "id"
-            ],
-            [
-                "u64",
-                "packets"
-            ],
-            [
-                "u64",
-                "bytes"
-            ],
-            {
-                "crc": "0x7107035f"
-            }
-        ],
-        [
-            "bier_neighbor_counter",
-            [
-                "vl_api_bier_table_id_t",
-                "tbl_id"
-            ],
-            [
-                "vl_api_fib_path_t",
-                "path"
-            ],
-            [
-                "u64",
-                "packets"
-            ],
-            [
-                "u64",
-                "bytes"
-            ],
-            {
-                "crc": "0x91fe1748"
-            }
-        ]
-    ],
-    "aliases": {
-        "interface_index": {
-            "type": "u32"
-        }
-    }
-}
diff --git a/examples/bin_api/stats/stats.ba.go b/examples/bin_api/stats/stats.ba.go
deleted file mode 100644 (file)
index 97a6e60..0000000
+++ /dev/null
@@ -1,2538 +0,0 @@
-// Code generated by GoVPP binapi-generator. DO NOT EDIT.
-//  source: stats.api.json
-
-/*
- Package stats is a generated from VPP binary API module 'stats'.
-
- It contains following objects:
-        42 messages
-        14 types
-         1 alias
-        15 services
-
-*/
-package stats
-
-import "git.fd.io/govpp.git/api"
-import "github.com/lunixbochs/struc"
-import "bytes"
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = api.RegisterMessage
-var _ = struc.Pack
-var _ = bytes.NewBuffer
-
-// Services represents VPP binary API services:
-//
-//     "services": {
-//         "want_ip4_fib_stats": {
-//             "reply": "want_ip4_fib_stats_reply",
-//             "events": [
-//                 "vnet_ip4_fib_counters"
-//             ]
-//         },
-//         "want_ip6_fib_stats": {
-//             "reply": "want_ip6_fib_stats_reply",
-//             "events": [
-//                 "vnet_ip6_fib_counters"
-//             ]
-//         },
-//         "want_stats": {
-//             "reply": "want_stats_reply"
-//         },
-//         "want_interface_simple_stats": {
-//             "reply": "want_interface_simple_stats_reply",
-//             "events": [
-//                 "vnet_interface_simple_counters"
-//             ]
-//         },
-//         "stats_get_poller_delay": {
-//             "reply": "stats_get_poller_delay_reply"
-//         },
-//         "want_per_interface_combined_stats": {
-//             "reply": "want_per_interface_combined_stats_reply",
-//             "events": [
-//                 "vnet_per_interface_combined_counters"
-//             ]
-//         },
-//         "vnet_get_summary_stats": {
-//             "reply": "vnet_get_summary_stats_reply"
-//         },
-//         "want_bier_neighbor_stats": {
-//             "reply": "want_bier_neighbor_stats_reply",
-//             "events": [
-//                 "vnet_bier_neighbor_counters"
-//             ]
-//         },
-//         "want_udp_encap_stats": {
-//             "reply": "want_udp_encap_stats_reply",
-//             "events": [
-//                 "vnet_udp_encap_counters"
-//             ]
-//         },
-//         "want_ip6_nbr_stats": {
-//             "reply": "want_ip6_nbr_stats_reply",
-//             "events": [
-//                 "vnet_ip6_nbr_counters"
-//             ]
-//         },
-//         "want_ip4_mfib_stats": {
-//             "reply": "want_ip4_mfib_stats_reply",
-//             "events": [
-//                 "vnet_ip4_mfib_counters"
-//             ]
-//         },
-//         "want_ip6_mfib_stats": {
-//             "reply": "want_ip6_mfib_stats_reply",
-//             "events": [
-//                 "vnet_ip6_mfib_counters"
-//             ]
-//         },
-//         "want_per_interface_simple_stats": {
-//             "reply": "want_per_interface_simple_stats_reply",
-//             "events": [
-//                 "vnet_per_interface_simple_counters"
-//             ]
-//         },
-//         "want_interface_combined_stats": {
-//             "reply": "want_interface_combined_stats_reply",
-//             "events": [
-//                 "vnet_interface_combined_counters"
-//             ]
-//         },
-//         "want_ip4_nbr_stats": {
-//             "reply": "want_ip4_nbr_stats_reply",
-//             "events": [
-//                 "vnet_ip4_nbr_counters"
-//             ]
-//         }
-//     },
-//
-type Services interface {
-       StatsGetPollerDelay(*StatsGetPollerDelay) (*StatsGetPollerDelayReply, error)
-       VnetGetSummaryStats(*VnetGetSummaryStats) (*VnetGetSummaryStatsReply, error)
-       WantBierNeighborStats(*WantBierNeighborStats) (*WantBierNeighborStatsReply, error)
-       WantInterfaceCombinedStats(*WantInterfaceCombinedStats) (*WantInterfaceCombinedStatsReply, error)
-       WantInterfaceSimpleStats(*WantInterfaceSimpleStats) (*WantInterfaceSimpleStatsReply, error)
-       WantIP4FibStats(*WantIP4FibStats) (*WantIP4FibStatsReply, error)
-       WantIP4MfibStats(*WantIP4MfibStats) (*WantIP4MfibStatsReply, error)
-       WantIP4NbrStats(*WantIP4NbrStats) (*WantIP4NbrStatsReply, error)
-       WantIP6FibStats(*WantIP6FibStats) (*WantIP6FibStatsReply, error)
-       WantIP6MfibStats(*WantIP6MfibStats) (*WantIP6MfibStatsReply, error)
-       WantIP6NbrStats(*WantIP6NbrStats) (*WantIP6NbrStatsReply, error)
-       WantPerInterfaceCombinedStats(*WantPerInterfaceCombinedStats) (*WantPerInterfaceCombinedStatsReply, error)
-       WantPerInterfaceSimpleStats(*WantPerInterfaceSimpleStats) (*WantPerInterfaceSimpleStatsReply, error)
-       WantStats(*WantStats) (*WantStatsReply, error)
-       WantUDPEncapStats(*WantUDPEncapStats) (*WantUDPEncapStatsReply, error)
-}
-
-/* Aliases */
-
-// InterfaceIndex represents VPP binary API alias 'interface_index':
-//
-//     "interface_index": {
-//         "type": "u32"
-//     }
-//
-type InterfaceIndex uint32
-
-/* Types */
-
-// VlibCounter represents VPP binary API type 'vlib_counter':
-//
-//     "vlib_counter",
-//     [
-//         "u64",
-//         "packets"
-//     ],
-//     [
-//         "u64",
-//         "bytes"
-//     ],
-//     {
-//         "crc": "0xce2325a2"
-//     }
-//
-type VlibCounter struct {
-       Packets uint64
-       Bytes   uint64
-}
-
-func (*VlibCounter) GetTypeName() string {
-       return "vlib_counter"
-}
-func (*VlibCounter) GetCrcString() string {
-       return "ce2325a2"
-}
-
-// VnetCombinedCounter represents VPP binary API type 'vnet_combined_counter':
-//
-//     "vnet_combined_counter",
-//     [
-//         "u32",
-//         "sw_if_index"
-//     ],
-//     [
-//         "u64",
-//         "rx_packets"
-//     ],
-//     [
-//         "u64",
-//         "rx_bytes"
-//     ],
-//     [
-//         "u64",
-//         "rx_unicast_packets"
-//     ],
-//     [
-//         "u64",
-//         "rx_unicast_bytes"
-//     ],
-//     [
-//         "u64",
-//         "rx_multicast_packets"
-//     ],
-//     [
-//         "u64",
-//         "rx_multicast_bytes"
-//     ],
-//     [
-//         "u64",
-//         "rx_broadcast_packets"
-//     ],
-//     [
-//         "u64",
-//         "rx_broadcast_bytes"
-//     ],
-//     [
-//         "u64",
-//         "tx_packets"
-//     ],
-//     [
-//         "u64",
-//         "tx_bytes"
-//     ],
-//     [
-//         "u64",
-//         "tx_unicast_packets"
-//     ],
-//     [
-//         "u64",
-//         "tx_unicast_bytes"
-//     ],
-//     [
-//         "u64",
-//         "tx_multicast_packets"
-//     ],
-//     [
-//         "u64",
-//         "tx_multicast_bytes"
-//     ],
-//     [
-//         "u64",
-//         "tx_broadcast_packets"
-//     ],
-//     [
-//         "u64",
-//         "tx_broadcast_bytes"
-//     ],
-//     {
-//         "crc": "0x20905ca4"
-//     }
-//
-type VnetCombinedCounter struct {
-       SwIfIndex          uint32
-       RxPackets          uint64
-       RxBytes            uint64
-       RxUnicastPackets   uint64
-       RxUnicastBytes     uint64
-       RxMulticastPackets uint64
-       RxMulticastBytes   uint64
-       RxBroadcastPackets uint64
-       RxBroadcastBytes   uint64
-       TxPackets          uint64
-       TxBytes            uint64
-       TxUnicastPackets   uint64
-       TxUnicastBytes     uint64
-       TxMulticastPackets uint64
-       TxMulticastBytes   uint64
-       TxBroadcastPackets uint64
-       TxBroadcastBytes   uint64
-}
-
-func (*VnetCombinedCounter) GetTypeName() string {
-       return "vnet_combined_counter"
-}
-func (*VnetCombinedCounter) GetCrcString() string {
-       return "20905ca4"
-}
-
-// VnetSimpleCounter represents VPP binary API type 'vnet_simple_counter':
-//
-//     "vnet_simple_counter",
-//     [
-//         "u32",
-//         "sw_if_index"
-//     ],
-//     [
-//         "u64",
-//         "drop"
-//     ],
-//     [
-//         "u64",
-//         "punt"
-//     ],
-//     [
-//         "u64",
-//         "rx_ip4"
-//     ],
-//     [
-//         "u64",
-//         "rx_ip6"
-//     ],
-//     [
-//         "u64",
-//         "rx_no_buffer"
-//     ],
-//     [
-//         "u64",
-//         "rx_miss"
-//     ],
-//     [
-//         "u64",
-//         "rx_error"
-//     ],
-//     [
-//         "u64",
-//         "tx_error"
-//     ],
-//     [
-//         "u64",
-//         "rx_mpls"
-//     ],
-//     {
-//         "crc": "0x8bd65e2d"
-//     }
-//
-type VnetSimpleCounter struct {
-       SwIfIndex  uint32
-       Drop       uint64
-       Punt       uint64
-       RxIP4      uint64
-       RxIP6      uint64
-       RxNoBuffer uint64
-       RxMiss     uint64
-       RxError    uint64
-       TxError    uint64
-       RxMpls     uint64
-}
-
-func (*VnetSimpleCounter) GetTypeName() string {
-       return "vnet_simple_counter"
-}
-func (*VnetSimpleCounter) GetCrcString() string {
-       return "8bd65e2d"
-}
-
-// FibMplsLabel represents VPP binary API type 'fib_mpls_label':
-//
-//     "fib_mpls_label",
-//     [
-//         "u8",
-//         "is_uniform"
-//     ],
-//     [
-//         "u32",
-//         "label"
-//     ],
-//     [
-//         "u8",
-//         "ttl"
-//     ],
-//     [
-//         "u8",
-//         "exp"
-//     ],
-//     {
-//         "crc": "0xc93bf35c"
-//     }
-//
-type FibMplsLabel struct {
-       IsUniform uint8
-       Label     uint32
-       TTL       uint8
-       Exp       uint8
-}
-
-func (*FibMplsLabel) GetTypeName() string {
-       return "fib_mpls_label"
-}
-func (*FibMplsLabel) GetCrcString() string {
-       return "c93bf35c"
-}
-
-// FibPath represents VPP binary API type 'fib_path':
-//
-//     "fib_path",
-//     [
-//         "u32",
-//         "sw_if_index"
-//     ],
-//     [
-//         "u32",
-//         "table_id"
-//     ],
-//     [
-//         "u8",
-//         "weight"
-//     ],
-//     [
-//         "u8",
-//         "preference"
-//     ],
-//     [
-//         "u8",
-//         "is_local"
-//     ],
-//     [
-//         "u8",
-//         "is_drop"
-//     ],
-//     [
-//         "u8",
-//         "is_udp_encap"
-//     ],
-//     [
-//         "u8",
-//         "is_unreach"
-//     ],
-//     [
-//         "u8",
-//         "is_prohibit"
-//     ],
-//     [
-//         "u8",
-//         "is_resolve_host"
-//     ],
-//     [
-//         "u8",
-//         "is_resolve_attached"
-//     ],
-//     [
-//         "u8",
-//         "is_dvr"
-//     ],
-//     [
-//         "u8",
-//         "is_source_lookup"
-//     ],
-//     [
-//         "u8",
-//         "afi"
-//     ],
-//     [
-//         "u8",
-//         "next_hop",
-//         16
-//     ],
-//     [
-//         "u32",
-//         "next_hop_id"
-//     ],
-//     [
-//         "u32",
-//         "rpf_id"
-//     ],
-//     [
-//         "u32",
-//         "via_label"
-//     ],
-//     [
-//         "u8",
-//         "n_labels"
-//     ],
-//     [
-//         "vl_api_fib_mpls_label_t",
-//         "label_stack",
-//         16
-//     ],
-//     {
-//         "crc": "0xabe483ef"
-//     }
-//
-type FibPath struct {
-       SwIfIndex         uint32
-       TableID           uint32
-       Weight            uint8
-       Preference        uint8
-       IsLocal           uint8
-       IsDrop            uint8
-       IsUDPEncap        uint8
-       IsUnreach         uint8
-       IsProhibit        uint8
-       IsResolveHost     uint8
-       IsResolveAttached uint8
-       IsDvr             uint8
-       IsSourceLookup    uint8
-       Afi               uint8
-       NextHop           []byte `struc:"[16]byte"`
-       NextHopID         uint32
-       RpfID             uint32
-       ViaLabel          uint32
-       NLabels           uint8
-       LabelStack        []FibMplsLabel `struc:"[16]FibMplsLabel"`
-}
-
-func (*FibPath) GetTypeName() string {
-       return "fib_path"
-}
-func (*FibPath) GetCrcString() string {
-       return "abe483ef"
-}
-
-// BierTableID represents VPP binary API type 'bier_table_id':
-//
-//     "bier_table_id",
-//     [
-//         "u8",
-//         "bt_set"
-//     ],
-//     [
-//         "u8",
-//         "bt_sub_domain"
-//     ],
-//     [
-//         "u8",
-//         "bt_hdr_len_id"
-//     ],
-//     {
-//         "crc": "0x435c691d"
-//     }
-//
-type BierTableID struct {
-       BtSet       uint8
-       BtSubDomain uint8
-       BtHdrLenID  uint8
-}
-
-func (*BierTableID) GetTypeName() string {
-       return "bier_table_id"
-}
-func (*BierTableID) GetCrcString() string {
-       return "435c691d"
-}
-
-// IP4FibCounter represents VPP binary API type 'ip4_fib_counter':
-//
-//     "ip4_fib_counter",
-//     [
-//         "u32",
-//         "address"
-//     ],
-//     [
-//         "u8",
-//         "address_length"
-//     ],
-//     [
-//         "u64",
-//         "packets"
-//     ],
-//     [
-//         "u64",
-//         "bytes"
-//     ],
-//     {
-//         "crc": "0xa6ceb0c9"
-//     }
-//
-type IP4FibCounter struct {
-       Address       uint32
-       AddressLength uint8
-       Packets       uint64
-       Bytes         uint64
-}
-
-func (*IP4FibCounter) GetTypeName() string {
-       return "ip4_fib_counter"
-}
-func (*IP4FibCounter) GetCrcString() string {
-       return "a6ceb0c9"
-}
-
-// IP4MfibCounter represents VPP binary API type 'ip4_mfib_counter':
-//
-//     "ip4_mfib_counter",
-//     [
-//         "u8",
-//         "source",
-//         4
-//     ],
-//     [
-//         "u8",
-//         "group",
-//         4
-//     ],
-//     [
-//         "u8",
-//         "group_length"
-//     ],
-//     [
-//         "u64",
-//         "packets"
-//     ],
-//     [
-//         "u64",
-//         "bytes"
-//     ],
-//     {
-//         "crc": "0x2cee4721"
-//     }
-//
-type IP4MfibCounter struct {
-       Source      []byte `struc:"[4]byte"`
-       Group       []byte `struc:"[4]byte"`
-       GroupLength uint8
-       Packets     uint64
-       Bytes       uint64
-}
-
-func (*IP4MfibCounter) GetTypeName() string {
-       return "ip4_mfib_counter"
-}
-func (*IP4MfibCounter) GetCrcString() string {
-       return "2cee4721"
-}
-
-// IP4NbrCounter represents VPP binary API type 'ip4_nbr_counter':
-//
-//     "ip4_nbr_counter",
-//     [
-//         "u32",
-//         "address"
-//     ],
-//     [
-//         "u8",
-//         "link_type"
-//     ],
-//     [
-//         "u64",
-//         "packets"
-//     ],
-//     [
-//         "u64",
-//         "bytes"
-//     ],
-//     {
-//         "crc": "0xb9f974d6"
-//     }
-//
-type IP4NbrCounter struct {
-       Address  uint32
-       LinkType uint8
-       Packets  uint64
-       Bytes    uint64
-}
-
-func (*IP4NbrCounter) GetTypeName() string {
-       return "ip4_nbr_counter"
-}
-func (*IP4NbrCounter) GetCrcString() string {
-       return "b9f974d6"
-}
-
-// IP6FibCounter represents VPP binary API type 'ip6_fib_counter':
-//
-//     "ip6_fib_counter",
-//     [
-//         "u64",
-//         "address",
-//         2
-//     ],
-//     [
-//         "u8",
-//         "address_length"
-//     ],
-//     [
-//         "u64",
-//         "packets"
-//     ],
-//     [
-//         "u64",
-//         "bytes"
-//     ],
-//     {
-//         "crc": "0xf1197efb"
-//     }
-//
-type IP6FibCounter struct {
-       Address       []uint64 `struc:"[2]uint64"`
-       AddressLength uint8
-       Packets       uint64
-       Bytes         uint64
-}
-
-func (*IP6FibCounter) GetTypeName() string {
-       return "ip6_fib_counter"
-}
-func (*IP6FibCounter) GetCrcString() string {
-       return "f1197efb"
-}
-
-// IP6MfibCounter represents VPP binary API type 'ip6_mfib_counter':
-//
-//     "ip6_mfib_counter",
-//     [
-//         "u8",
-//         "source",
-//         16
-//     ],
-//     [
-//         "u8",
-//         "group",
-//         16
-//     ],
-//     [
-//         "u8",
-//         "group_length"
-//     ],
-//     [
-//         "u64",
-//         "packets"
-//     ],
-//     [
-//         "u64",
-//         "bytes"
-//     ],
-//     {
-//         "crc": "0x90a9590e"
-//     }
-//
-type IP6MfibCounter struct {
-       Source      []byte `struc:"[16]byte"`
-       Group       []byte `struc:"[16]byte"`
-       GroupLength uint8
-       Packets     uint64
-       Bytes       uint64
-}
-
-func (*IP6MfibCounter) GetTypeName() string {
-       return "ip6_mfib_counter"
-}
-func (*IP6MfibCounter) GetCrcString() string {
-       return "90a9590e"
-}
-
-// IP6NbrCounter represents VPP binary API type 'ip6_nbr_counter':
-//
-//     "ip6_nbr_counter",
-//     [
-//         "u64",
-//         "address",
-//         2
-//     ],
-//     [
-//         "u8",
-//         "link_type"
-//     ],
-//     [
-//         "u64",
-//         "packets"
-//     ],
-//     [
-//         "u64",
-//         "bytes"
-//     ],
-//     {
-//         "crc": "0x2d755474"
-//     }
-//
-type IP6NbrCounter struct {
-       Address  []uint64 `struc:"[2]uint64"`
-       LinkType uint8
-       Packets  uint64
-       Bytes    uint64
-}
-
-func (*IP6NbrCounter) GetTypeName() string {
-       return "ip6_nbr_counter"
-}
-func (*IP6NbrCounter) GetCrcString() string {
-       return "2d755474"
-}
-
-// UDPEncapCounter represents VPP binary API type 'udp_encap_counter':
-//
-//     "udp_encap_counter",
-//     [
-//         "u32",
-//         "id"
-//     ],
-//     [
-//         "u64",
-//         "packets"
-//     ],
-//     [
-//         "u64",
-//         "bytes"
-//     ],
-//     {
-//         "crc": "0x7107035f"
-//     }
-//
-type UDPEncapCounter struct {
-       ID      uint32
-       Packets uint64
-       Bytes   uint64
-}
-
-func (*UDPEncapCounter) GetTypeName() string {
-       return "udp_encap_counter"
-}
-func (*UDPEncapCounter) GetCrcString() string {
-       return "7107035f"
-}
-
-// BierNeighborCounter represents VPP binary API type 'bier_neighbor_counter':
-//
-//     "bier_neighbor_counter",
-//     [
-//         "vl_api_bier_table_id_t",
-//         "tbl_id"
-//     ],
-//     [
-//         "vl_api_fib_path_t",
-//         "path"
-//     ],
-//     [
-//         "u64",
-//         "packets"
-//     ],
-//     [
-//         "u64",
-//         "bytes"
-//     ],
-//     {
-//         "crc": "0x91fe1748"
-//     }
-//
-type BierNeighborCounter struct {
-       TblID   BierTableID
-       Path    FibPath
-       Packets uint64
-       Bytes   uint64
-}
-
-func (*BierNeighborCounter) GetTypeName() string {
-       return "bier_neighbor_counter"
-}
-func (*BierNeighborCounter) GetCrcString() string {
-       return "91fe1748"
-}
-
-/* Messages */
-
-// WantStats represents VPP binary API message 'want_stats':
-//
-//     "want_stats",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "client_index"
-//     ],
-//     [
-//         "u32",
-//         "context"
-//     ],
-//     [
-//         "u32",
-//         "enable_disable"
-//     ],
-//     [
-//         "u32",
-//         "pid"
-//     ],
-//     {
-//         "crc": "0x476f5a08"
-//     }
-//
-type WantStats struct {
-       EnableDisable uint32
-       PID           uint32
-}
-
-func (*WantStats) GetMessageName() string {
-       return "want_stats"
-}
-func (*WantStats) GetCrcString() string {
-       return "476f5a08"
-}
-func (*WantStats) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-// WantStatsReply represents VPP binary API message 'want_stats_reply':
-//
-//     "want_stats_reply",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "context"
-//     ],
-//     [
-//         "i32",
-//         "retval"
-//     ],
-//     {
-//         "crc": "0xe8d4e804"
-//     }
-//
-type WantStatsReply struct {
-       Retval int32
-}
-
-func (*WantStatsReply) GetMessageName() string {
-       return "want_stats_reply"
-}
-func (*WantStatsReply) GetCrcString() string {
-       return "e8d4e804"
-}
-func (*WantStatsReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-// WantInterfaceSimpleStats represents VPP binary API message 'want_interface_simple_stats':
-//
-//     "want_interface_simple_stats",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "client_index"
-//     ],
-//     [
-//         "u32",
-//         "context"
-//     ],
-//     [
-//         "u32",
-//         "enable_disable"
-//     ],
-//     [
-//         "u32",
-//         "pid"
-//     ],
-//     {
-//         "crc": "0x476f5a08"
-//     }
-//
-type WantInterfaceSimpleStats struct {
-       EnableDisable uint32
-       PID           uint32
-}
-
-func (*WantInterfaceSimpleStats) GetMessageName() string {
-       return "want_interface_simple_stats"
-}
-func (*WantInterfaceSimpleStats) GetCrcString() string {
-       return "476f5a08"
-}
-func (*WantInterfaceSimpleStats) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-// WantInterfaceSimpleStatsReply represents VPP binary API message 'want_interface_simple_stats_reply':
-//
-//     "want_interface_simple_stats_reply",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "context"
-//     ],
-//     [
-//         "i32",
-//         "retval"
-//     ],
-//     {
-//         "crc": "0xe8d4e804"
-//     }
-//
-type WantInterfaceSimpleStatsReply struct {
-       Retval int32
-}
-
-func (*WantInterfaceSimpleStatsReply) GetMessageName() string {
-       return "want_interface_simple_stats_reply"
-}
-func (*WantInterfaceSimpleStatsReply) GetCrcString() string {
-       return "e8d4e804"
-}
-func (*WantInterfaceSimpleStatsReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-// WantPerInterfaceSimpleStats represents VPP binary API message 'want_per_interface_simple_stats':
-//
-//     "want_per_interface_simple_stats",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "client_index"
-//     ],
-//     [
-//         "u32",
-//         "context"
-//     ],
-//     [
-//         "u32",
-//         "enable_disable"
-//     ],
-//     [
-//         "u32",
-//         "pid"
-//     ],
-//     [
-//         "u32",
-//         "num"
-//     ],
-//     [
-//         "u32",
-//         "sw_ifs",
-//         0,
-//         "num"
-//     ],
-//     {
-//         "crc": "0x729d04f1"
-//     }
-//
-type WantPerInterfaceSimpleStats struct {
-       EnableDisable uint32
-       PID           uint32
-       Num           uint32 `struc:"sizeof=SwIfs"`
-       SwIfs         []uint32
-}
-
-func (*WantPerInterfaceSimpleStats) GetMessageName() string {
-       return "want_per_interface_simple_stats"
-}
-func (*WantPerInterfaceSimpleStats) GetCrcString() string {
-       return "729d04f1"
-}
-func (*WantPerInterfaceSimpleStats) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-// WantPerInterfaceSimpleStatsReply represents VPP binary API message 'want_per_interface_simple_stats_reply':
-//
-//     "want_per_interface_simple_stats_reply",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "context"
-//     ],
-//     [
-//         "i32",
-//         "retval"
-//     ],
-//     {
-//         "crc": "0xe8d4e804"
-//     }
-//
-type WantPerInterfaceSimpleStatsReply struct {
-       Retval int32
-}
-
-func (*WantPerInterfaceSimpleStatsReply) GetMessageName() string {
-       return "want_per_interface_simple_stats_reply"
-}
-func (*WantPerInterfaceSimpleStatsReply) GetCrcString() string {
-       return "e8d4e804"
-}
-func (*WantPerInterfaceSimpleStatsReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-// WantInterfaceCombinedStats represents VPP binary API message 'want_interface_combined_stats':
-//
-//     "want_interface_combined_stats",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "client_index"
-//     ],
-//     [
-//         "u32",
-//         "context"
-//     ],
-//     [
-//         "u32",
-//         "enable_disable"
-//     ],
-//     [
-//         "u32",
-//         "pid"
-//     ],
-//     {
-//         "crc": "0x476f5a08"
-//     }
-//
-type WantInterfaceCombinedStats struct {
-       EnableDisable uint32
-       PID           uint32
-}
-
-func (*WantInterfaceCombinedStats) GetMessageName() string {
-       return "want_interface_combined_stats"
-}
-func (*WantInterfaceCombinedStats) GetCrcString() string {
-       return "476f5a08"
-}
-func (*WantInterfaceCombinedStats) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-// WantInterfaceCombinedStatsReply represents VPP binary API message 'want_interface_combined_stats_reply':
-//
-//     "want_interface_combined_stats_reply",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "context"
-//     ],
-//     [
-//         "i32",
-//         "retval"
-//     ],
-//     {
-//         "crc": "0xe8d4e804"
-//     }
-//
-type WantInterfaceCombinedStatsReply struct {
-       Retval int32
-}
-
-func (*WantInterfaceCombinedStatsReply) GetMessageName() string {
-       return "want_interface_combined_stats_reply"
-}
-func (*WantInterfaceCombinedStatsReply) GetCrcString() string {
-       return "e8d4e804"
-}
-func (*WantInterfaceCombinedStatsReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-// WantPerInterfaceCombinedStats represents VPP binary API message 'want_per_interface_combined_stats':
-//
-//     "want_per_interface_combined_stats",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "client_index"
-//     ],
-//     [
-//         "u32",
-//         "context"
-//     ],
-//     [
-//         "u32",
-//         "enable_disable"
-//     ],
-//     [
-//         "u32",
-//         "pid"
-//     ],
-//     [
-//         "u32",
-//         "num"
-//     ],
-//     [
-//         "u32",
-//         "sw_ifs",
-//         0,
-//         "num"
-//     ],
-//     {
-//         "crc": "0x729d04f1"
-//     }
-//
-type WantPerInterfaceCombinedStats struct {
-       EnableDisable uint32
-       PID           uint32
-       Num           uint32 `struc:"sizeof=SwIfs"`
-       SwIfs         []uint32
-}
-
-func (*WantPerInterfaceCombinedStats) GetMessageName() string {
-       return "want_per_interface_combined_stats"
-}
-func (*WantPerInterfaceCombinedStats) GetCrcString() string {
-       return "729d04f1"
-}
-func (*WantPerInterfaceCombinedStats) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-// WantPerInterfaceCombinedStatsReply represents VPP binary API message 'want_per_interface_combined_stats_reply':
-//
-//     "want_per_interface_combined_stats_reply",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "context"
-//     ],
-//     [
-//         "i32",
-//         "retval"
-//     ],
-//     {
-//         "crc": "0xe8d4e804"
-//     }
-//
-type WantPerInterfaceCombinedStatsReply struct {
-       Retval int32
-}
-
-func (*WantPerInterfaceCombinedStatsReply) GetMessageName() string {
-       return "want_per_interface_combined_stats_reply"
-}
-func (*WantPerInterfaceCombinedStatsReply) GetCrcString() string {
-       return "e8d4e804"
-}
-func (*WantPerInterfaceCombinedStatsReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-// WantIP4FibStats represents VPP binary API message 'want_ip4_fib_stats':
-//
-//     "want_ip4_fib_stats",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "client_index"
-//     ],
-//     [
-//         "u32",
-//         "context"
-//     ],
-//     [
-//         "u32",
-//         "enable_disable"
-//     ],
-//     [
-//         "u32",
-//         "pid"
-//     ],
-//     {
-//         "crc": "0x476f5a08"
-//     }
-//
-type WantIP4FibStats struct {
-       EnableDisable uint32
-       PID           uint32
-}
-
-func (*WantIP4FibStats) GetMessageName() string {
-       return "want_ip4_fib_stats"
-}
-func (*WantIP4FibStats) GetCrcString() string {
-       return "476f5a08"
-}
-func (*WantIP4FibStats) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-// WantIP4FibStatsReply represents VPP binary API message 'want_ip4_fib_stats_reply':
-//
-//     "want_ip4_fib_stats_reply",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "context"
-//     ],
-//     [
-//         "i32",
-//         "retval"
-//     ],
-//     {
-//         "crc": "0xe8d4e804"
-//     }
-//
-type WantIP4FibStatsReply struct {
-       Retval int32
-}
-
-func (*WantIP4FibStatsReply) GetMessageName() string {
-       return "want_ip4_fib_stats_reply"
-}
-func (*WantIP4FibStatsReply) GetCrcString() string {
-       return "e8d4e804"
-}
-func (*WantIP4FibStatsReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-// WantIP6FibStats represents VPP binary API message 'want_ip6_fib_stats':
-//
-//     "want_ip6_fib_stats",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "client_index"
-//     ],
-//     [
-//         "u32",
-//         "context"
-//     ],
-//     [
-//         "u32",
-//         "enable_disable"
-//     ],
-//     [
-//         "u32",
-//         "pid"
-//     ],
-//     {
-//         "crc": "0x476f5a08"
-//     }
-//
-type WantIP6FibStats struct {
-       EnableDisable uint32
-       PID           uint32
-}
-
-func (*WantIP6FibStats) GetMessageName() string {
-       return "want_ip6_fib_stats"
-}
-func (*WantIP6FibStats) GetCrcString() string {
-       return "476f5a08"
-}
-func (*WantIP6FibStats) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-// WantIP6FibStatsReply represents VPP binary API message 'want_ip6_fib_stats_reply':
-//
-//     "want_ip6_fib_stats_reply",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "context"
-//     ],
-//     [
-//         "i32",
-//         "retval"
-//     ],
-//     {
-//         "crc": "0xe8d4e804"
-//     }
-//
-type WantIP6FibStatsReply struct {
-       Retval int32
-}
-
-func (*WantIP6FibStatsReply) GetMessageName() string {
-       return "want_ip6_fib_stats_reply"
-}
-func (*WantIP6FibStatsReply) GetCrcString() string {
-       return "e8d4e804"
-}
-func (*WantIP6FibStatsReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-// WantIP4MfibStats represents VPP binary API message 'want_ip4_mfib_stats':
-//
-//     "want_ip4_mfib_stats",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "client_index"
-//     ],
-//     [
-//         "u32",
-//         "context"
-//     ],
-//     [
-//         "u32",
-//         "enable_disable"
-//     ],
-//     [
-//         "u32",
-//         "pid"
-//     ],
-//     {
-//         "crc": "0x476f5a08"
-//     }
-//
-type WantIP4MfibStats struct {
-       EnableDisable uint32
-       PID           uint32
-}
-
-func (*WantIP4MfibStats) GetMessageName() string {
-       return "want_ip4_mfib_stats"
-}
-func (*WantIP4MfibStats) GetCrcString() string {
-       return "476f5a08"
-}
-func (*WantIP4MfibStats) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-// WantIP4MfibStatsReply represents VPP binary API message 'want_ip4_mfib_stats_reply':
-//
-//     "want_ip4_mfib_stats_reply",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "context"
-//     ],
-//     [
-//         "i32",
-//         "retval"
-//     ],
-//     {
-//         "crc": "0xe8d4e804"
-//     }
-//
-type WantIP4MfibStatsReply struct {
-       Retval int32
-}
-
-func (*WantIP4MfibStatsReply) GetMessageName() string {
-       return "want_ip4_mfib_stats_reply"
-}
-func (*WantIP4MfibStatsReply) GetCrcString() string {
-       return "e8d4e804"
-}
-func (*WantIP4MfibStatsReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-// WantIP6MfibStats represents VPP binary API message 'want_ip6_mfib_stats':
-//
-//     "want_ip6_mfib_stats",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "client_index"
-//     ],
-//     [
-//         "u32",
-//         "context"
-//     ],
-//     [
-//         "u32",
-//         "enable_disable"
-//     ],
-//     [
-//         "u32",
-//         "pid"
-//     ],
-//     {
-//         "crc": "0x476f5a08"
-//     }
-//
-type WantIP6MfibStats struct {
-       EnableDisable uint32
-       PID           uint32
-}
-
-func (*WantIP6MfibStats) GetMessageName() string {
-       return "want_ip6_mfib_stats"
-}
-func (*WantIP6MfibStats) GetCrcString() string {
-       return "476f5a08"
-}
-func (*WantIP6MfibStats) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-// WantIP6MfibStatsReply represents VPP binary API message 'want_ip6_mfib_stats_reply':
-//
-//     "want_ip6_mfib_stats_reply",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "context"
-//     ],
-//     [
-//         "i32",
-//         "retval"
-//     ],
-//     {
-//         "crc": "0xe8d4e804"
-//     }
-//
-type WantIP6MfibStatsReply struct {
-       Retval int32
-}
-
-func (*WantIP6MfibStatsReply) GetMessageName() string {
-       return "want_ip6_mfib_stats_reply"
-}
-func (*WantIP6MfibStatsReply) GetCrcString() string {
-       return "e8d4e804"
-}
-func (*WantIP6MfibStatsReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-// WantIP4NbrStats represents VPP binary API message 'want_ip4_nbr_stats':
-//
-//     "want_ip4_nbr_stats",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "client_index"
-//     ],
-//     [
-//         "u32",
-//         "context"
-//     ],
-//     [
-//         "u32",
-//         "enable_disable"
-//     ],
-//     [
-//         "u32",
-//         "pid"
-//     ],
-//     {
-//         "crc": "0x476f5a08"
-//     }
-//
-type WantIP4NbrStats struct {
-       EnableDisable uint32
-       PID           uint32
-}
-
-func (*WantIP4NbrStats) GetMessageName() string {
-       return "want_ip4_nbr_stats"
-}
-func (*WantIP4NbrStats) GetCrcString() string {
-       return "476f5a08"
-}
-func (*WantIP4NbrStats) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-// WantIP4NbrStatsReply represents VPP binary API message 'want_ip4_nbr_stats_reply':
-//
-//     "want_ip4_nbr_stats_reply",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "context"
-//     ],
-//     [
-//         "i32",
-//         "retval"
-//     ],
-//     {
-//         "crc": "0xe8d4e804"
-//     }
-//
-type WantIP4NbrStatsReply struct {
-       Retval int32
-}
-
-func (*WantIP4NbrStatsReply) GetMessageName() string {
-       return "want_ip4_nbr_stats_reply"
-}
-func (*WantIP4NbrStatsReply) GetCrcString() string {
-       return "e8d4e804"
-}
-func (*WantIP4NbrStatsReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-// WantIP6NbrStats represents VPP binary API message 'want_ip6_nbr_stats':
-//
-//     "want_ip6_nbr_stats",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "client_index"
-//     ],
-//     [
-//         "u32",
-//         "context"
-//     ],
-//     [
-//         "u32",
-//         "enable_disable"
-//     ],
-//     [
-//         "u32",
-//         "pid"
-//     ],
-//     {
-//         "crc": "0x476f5a08"
-//     }
-//
-type WantIP6NbrStats struct {
-       EnableDisable uint32
-       PID           uint32
-}
-
-func (*WantIP6NbrStats) GetMessageName() string {
-       return "want_ip6_nbr_stats"
-}
-func (*WantIP6NbrStats) GetCrcString() string {
-       return "476f5a08"
-}
-func (*WantIP6NbrStats) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-// WantIP6NbrStatsReply represents VPP binary API message 'want_ip6_nbr_stats_reply':
-//
-//     "want_ip6_nbr_stats_reply",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "context"
-//     ],
-//     [
-//         "i32",
-//         "retval"
-//     ],
-//     {
-//         "crc": "0xe8d4e804"
-//     }
-//
-type WantIP6NbrStatsReply struct {
-       Retval int32
-}
-
-func (*WantIP6NbrStatsReply) GetMessageName() string {
-       return "want_ip6_nbr_stats_reply"
-}
-func (*WantIP6NbrStatsReply) GetCrcString() string {
-       return "e8d4e804"
-}
-func (*WantIP6NbrStatsReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-// VnetIP4FibCounters represents VPP binary API message 'vnet_ip4_fib_counters':
-//
-//     "vnet_ip4_fib_counters",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "vrf_id"
-//     ],
-//     [
-//         "u32",
-//         "count"
-//     ],
-//     [
-//         "vl_api_ip4_fib_counter_t",
-//         "c",
-//         0,
-//         "count"
-//     ],
-//     {
-//         "crc": "0x57e3feec"
-//     }
-//
-type VnetIP4FibCounters struct {
-       VrfID uint32
-       Count uint32 `struc:"sizeof=C"`
-       C     []IP4FibCounter
-}
-
-func (*VnetIP4FibCounters) GetMessageName() string {
-       return "vnet_ip4_fib_counters"
-}
-func (*VnetIP4FibCounters) GetCrcString() string {
-       return "57e3feec"
-}
-func (*VnetIP4FibCounters) GetMessageType() api.MessageType {
-       return api.OtherMessage
-}
-
-// VnetIP4MfibCounters represents VPP binary API message 'vnet_ip4_mfib_counters':
-//
-//     "vnet_ip4_mfib_counters",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "vrf_id"
-//     ],
-//     [
-//         "u32",
-//         "count"
-//     ],
-//     [
-//         "vl_api_ip4_mfib_counter_t",
-//         "c",
-//         0,
-//         "count"
-//     ],
-//     {
-//         "crc": "0x946eb588"
-//     }
-//
-type VnetIP4MfibCounters struct {
-       VrfID uint32
-       Count uint32 `struc:"sizeof=C"`
-       C     []IP4MfibCounter
-}
-
-func (*VnetIP4MfibCounters) GetMessageName() string {
-       return "vnet_ip4_mfib_counters"
-}
-func (*VnetIP4MfibCounters) GetCrcString() string {
-       return "946eb588"
-}
-func (*VnetIP4MfibCounters) GetMessageType() api.MessageType {
-       return api.OtherMessage
-}
-
-// VnetIP4NbrCounters represents VPP binary API message 'vnet_ip4_nbr_counters':
-//
-//     "vnet_ip4_nbr_counters",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "count"
-//     ],
-//     [
-//         "u32",
-//         "sw_if_index"
-//     ],
-//     [
-//         "u8",
-//         "begin"
-//     ],
-//     [
-//         "vl_api_ip4_nbr_counter_t",
-//         "c",
-//         0,
-//         "count"
-//     ],
-//     {
-//         "crc": "0x214c4811"
-//     }
-//
-type VnetIP4NbrCounters struct {
-       Count     uint32 `struc:"sizeof=C"`
-       SwIfIndex uint32
-       Begin     uint8
-       C         []IP4NbrCounter
-}
-
-func (*VnetIP4NbrCounters) GetMessageName() string {
-       return "vnet_ip4_nbr_counters"
-}
-func (*VnetIP4NbrCounters) GetCrcString() string {
-       return "214c4811"
-}
-func (*VnetIP4NbrCounters) GetMessageType() api.MessageType {
-       return api.OtherMessage
-}
-
-// VnetIP6FibCounters represents VPP binary API message 'vnet_ip6_fib_counters':
-//
-//     "vnet_ip6_fib_counters",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "vrf_id"
-//     ],
-//     [
-//         "u32",
-//         "count"
-//     ],
-//     [
-//         "vl_api_ip6_fib_counter_t",
-//         "c",
-//         0,
-//         "count"
-//     ],
-//     {
-//         "crc": "0x13aed73d"
-//     }
-//
-type VnetIP6FibCounters struct {
-       VrfID uint32
-       Count uint32 `struc:"sizeof=C"`
-       C     []IP6FibCounter
-}
-
-func (*VnetIP6FibCounters) GetMessageName() string {
-       return "vnet_ip6_fib_counters"
-}
-func (*VnetIP6FibCounters) GetCrcString() string {
-       return "13aed73d"
-}
-func (*VnetIP6FibCounters) GetMessageType() api.MessageType {
-       return api.OtherMessage
-}
-
-// VnetIP6MfibCounters represents VPP binary API message 'vnet_ip6_mfib_counters':
-//
-//     "vnet_ip6_mfib_counters",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "vrf_id"
-//     ],
-//     [
-//         "u32",
-//         "count"
-//     ],
-//     [
-//         "vl_api_ip6_mfib_counter_t",
-//         "c",
-//         0,
-//         "count"
-//     ],
-//     {
-//         "crc": "0x65fe1ae3"
-//     }
-//
-type VnetIP6MfibCounters struct {
-       VrfID uint32
-       Count uint32 `struc:"sizeof=C"`
-       C     []IP6MfibCounter
-}
-
-func (*VnetIP6MfibCounters) GetMessageName() string {
-       return "vnet_ip6_mfib_counters"
-}
-func (*VnetIP6MfibCounters) GetCrcString() string {
-       return "65fe1ae3"
-}
-func (*VnetIP6MfibCounters) GetMessageType() api.MessageType {
-       return api.OtherMessage
-}
-
-// VnetIP6NbrCounters represents VPP binary API message 'vnet_ip6_nbr_counters':
-//
-//     "vnet_ip6_nbr_counters",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "count"
-//     ],
-//     [
-//         "u32",
-//         "sw_if_index"
-//     ],
-//     [
-//         "u8",
-//         "begin"
-//     ],
-//     [
-//         "vl_api_ip6_nbr_counter_t",
-//         "c",
-//         0,
-//         "count"
-//     ],
-//     {
-//         "crc": "0x650161c0"
-//     }
-//
-type VnetIP6NbrCounters struct {
-       Count     uint32 `struc:"sizeof=C"`
-       SwIfIndex uint32
-       Begin     uint8
-       C         []IP6NbrCounter
-}
-
-func (*VnetIP6NbrCounters) GetMessageName() string {
-       return "vnet_ip6_nbr_counters"
-}
-func (*VnetIP6NbrCounters) GetCrcString() string {
-       return "650161c0"
-}
-func (*VnetIP6NbrCounters) GetMessageType() api.MessageType {
-       return api.OtherMessage
-}
-
-// VnetInterfaceSimpleCounters represents VPP binary API message 'vnet_interface_simple_counters':
-//
-//     "vnet_interface_simple_counters",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u8",
-//         "vnet_counter_type"
-//     ],
-//     [
-//         "u32",
-//         "first_sw_if_index"
-//     ],
-//     [
-//         "u32",
-//         "count"
-//     ],
-//     [
-//         "u64",
-//         "data",
-//         0,
-//         "count"
-//     ],
-//     {
-//         "crc": "0x9bc4a808"
-//     }
-//
-type VnetInterfaceSimpleCounters struct {
-       VnetCounterType uint8
-       FirstSwIfIndex  uint32
-       Count           uint32 `struc:"sizeof=Data"`
-       Data            []uint64
-}
-
-func (*VnetInterfaceSimpleCounters) GetMessageName() string {
-       return "vnet_interface_simple_counters"
-}
-func (*VnetInterfaceSimpleCounters) GetCrcString() string {
-       return "9bc4a808"
-}
-func (*VnetInterfaceSimpleCounters) GetMessageType() api.MessageType {
-       return api.OtherMessage
-}
-
-// VnetInterfaceCombinedCounters represents VPP binary API message 'vnet_interface_combined_counters':
-//
-//     "vnet_interface_combined_counters",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u8",
-//         "vnet_counter_type"
-//     ],
-//     [
-//         "u32",
-//         "first_sw_if_index"
-//     ],
-//     [
-//         "u32",
-//         "count"
-//     ],
-//     [
-//         "vl_api_vlib_counter_t",
-//         "data",
-//         0,
-//         "count"
-//     ],
-//     {
-//         "crc": "0x2c595002"
-//     }
-//
-type VnetInterfaceCombinedCounters struct {
-       VnetCounterType uint8
-       FirstSwIfIndex  uint32
-       Count           uint32 `struc:"sizeof=Data"`
-       Data            []VlibCounter
-}
-
-func (*VnetInterfaceCombinedCounters) GetMessageName() string {
-       return "vnet_interface_combined_counters"
-}
-func (*VnetInterfaceCombinedCounters) GetCrcString() string {
-       return "2c595002"
-}
-func (*VnetInterfaceCombinedCounters) GetMessageType() api.MessageType {
-       return api.OtherMessage
-}
-
-// VnetPerInterfaceSimpleCounters represents VPP binary API message 'vnet_per_interface_simple_counters':
-//
-//     "vnet_per_interface_simple_counters",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "count"
-//     ],
-//     [
-//         "u32",
-//         "timestamp"
-//     ],
-//     [
-//         "vl_api_vnet_simple_counter_t",
-//         "data",
-//         0,
-//         "count"
-//     ],
-//     {
-//         "crc": "0xd1fba9ba"
-//     }
-//
-type VnetPerInterfaceSimpleCounters struct {
-       Count     uint32 `struc:"sizeof=Data"`
-       Timestamp uint32
-       Data      []VnetSimpleCounter
-}
-
-func (*VnetPerInterfaceSimpleCounters) GetMessageName() string {
-       return "vnet_per_interface_simple_counters"
-}
-func (*VnetPerInterfaceSimpleCounters) GetCrcString() string {
-       return "d1fba9ba"
-}
-func (*VnetPerInterfaceSimpleCounters) GetMessageType() api.MessageType {
-       return api.OtherMessage
-}
-
-// VnetPerInterfaceCombinedCounters represents VPP binary API message 'vnet_per_interface_combined_counters':
-//
-//     "vnet_per_interface_combined_counters",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "count"
-//     ],
-//     [
-//         "u32",
-//         "timestamp"
-//     ],
-//     [
-//         "vl_api_vnet_combined_counter_t",
-//         "data",
-//         0,
-//         "count"
-//     ],
-//     {
-//         "crc": "0xdc578375"
-//     }
-//
-type VnetPerInterfaceCombinedCounters struct {
-       Count     uint32 `struc:"sizeof=Data"`
-       Timestamp uint32
-       Data      []VnetCombinedCounter
-}
-
-func (*VnetPerInterfaceCombinedCounters) GetMessageName() string {
-       return "vnet_per_interface_combined_counters"
-}
-func (*VnetPerInterfaceCombinedCounters) GetCrcString() string {
-       return "dc578375"
-}
-func (*VnetPerInterfaceCombinedCounters) GetMessageType() api.MessageType {
-       return api.OtherMessage
-}
-
-// VnetGetSummaryStats represents VPP binary API message 'vnet_get_summary_stats':
-//
-//     "vnet_get_summary_stats",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "client_index"
-//     ],
-//     [
-//         "u32",
-//         "context"
-//     ],
-//     {
-//         "crc": "0x51077d14"
-//     }
-//
-type VnetGetSummaryStats struct{}
-
-func (*VnetGetSummaryStats) GetMessageName() string {
-       return "vnet_get_summary_stats"
-}
-func (*VnetGetSummaryStats) GetCrcString() string {
-       return "51077d14"
-}
-func (*VnetGetSummaryStats) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-// VnetGetSummaryStatsReply represents VPP binary API message 'vnet_get_summary_stats_reply':
-//
-//     "vnet_get_summary_stats_reply",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "context"
-//     ],
-//     [
-//         "i32",
-//         "retval"
-//     ],
-//     [
-//         "u64",
-//         "total_pkts",
-//         8
-//     ],
-//     [
-//         "u64",
-//         "total_bytes",
-//         8
-//     ],
-//     [
-//         "f64",
-//         "vector_rate"
-//     ],
-//     {
-//         "crc": "0x82b5e46c"
-//     }
-//
-type VnetGetSummaryStatsReply struct {
-       Retval     int32
-       TotalPkts  []uint64 `struc:"[8]uint64"`
-       TotalBytes []uint64 `struc:"[8]uint64"`
-       VectorRate float64
-}
-
-func (*VnetGetSummaryStatsReply) GetMessageName() string {
-       return "vnet_get_summary_stats_reply"
-}
-func (*VnetGetSummaryStatsReply) GetCrcString() string {
-       return "82b5e46c"
-}
-func (*VnetGetSummaryStatsReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-// StatsGetPollerDelay represents VPP binary API message 'stats_get_poller_delay':
-//
-//     "stats_get_poller_delay",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "client_index"
-//     ],
-//     [
-//         "u32",
-//         "context"
-//     ],
-//     {
-//         "crc": "0x51077d14"
-//     }
-//
-type StatsGetPollerDelay struct{}
-
-func (*StatsGetPollerDelay) GetMessageName() string {
-       return "stats_get_poller_delay"
-}
-func (*StatsGetPollerDelay) GetCrcString() string {
-       return "51077d14"
-}
-func (*StatsGetPollerDelay) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-// StatsGetPollerDelayReply represents VPP binary API message 'stats_get_poller_delay_reply':
-//
-//     "stats_get_poller_delay_reply",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "context"
-//     ],
-//     [
-//         "i32",
-//         "retval"
-//     ],
-//     [
-//         "u32",
-//         "delay"
-//     ],
-//     {
-//         "crc": "0x8c445a33"
-//     }
-//
-type StatsGetPollerDelayReply struct {
-       Retval int32
-       Delay  uint32
-}
-
-func (*StatsGetPollerDelayReply) GetMessageName() string {
-       return "stats_get_poller_delay_reply"
-}
-func (*StatsGetPollerDelayReply) GetCrcString() string {
-       return "8c445a33"
-}
-func (*StatsGetPollerDelayReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-// WantUDPEncapStats represents VPP binary API message 'want_udp_encap_stats':
-//
-//     "want_udp_encap_stats",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "client_index"
-//     ],
-//     [
-//         "u32",
-//         "context"
-//     ],
-//     [
-//         "u32",
-//         "enable"
-//     ],
-//     [
-//         "u32",
-//         "pid"
-//     ],
-//     {
-//         "crc": "0xcfaccc1f"
-//     }
-//
-type WantUDPEncapStats struct {
-       Enable uint32
-       PID    uint32
-}
-
-func (*WantUDPEncapStats) GetMessageName() string {
-       return "want_udp_encap_stats"
-}
-func (*WantUDPEncapStats) GetCrcString() string {
-       return "cfaccc1f"
-}
-func (*WantUDPEncapStats) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-// WantUDPEncapStatsReply represents VPP binary API message 'want_udp_encap_stats_reply':
-//
-//     "want_udp_encap_stats_reply",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "context"
-//     ],
-//     [
-//         "i32",
-//         "retval"
-//     ],
-//     {
-//         "crc": "0xe8d4e804"
-//     }
-//
-type WantUDPEncapStatsReply struct {
-       Retval int32
-}
-
-func (*WantUDPEncapStatsReply) GetMessageName() string {
-       return "want_udp_encap_stats_reply"
-}
-func (*WantUDPEncapStatsReply) GetCrcString() string {
-       return "e8d4e804"
-}
-func (*WantUDPEncapStatsReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-// VnetUDPEncapCounters represents VPP binary API message 'vnet_udp_encap_counters':
-//
-//     "vnet_udp_encap_counters",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "timestamp"
-//     ],
-//     [
-//         "u32",
-//         "count"
-//     ],
-//     [
-//         "vl_api_udp_encap_counter_t",
-//         "c",
-//         0,
-//         "count"
-//     ],
-//     {
-//         "crc": "0x1ab5e649"
-//     }
-//
-type VnetUDPEncapCounters struct {
-       Timestamp uint32
-       Count     uint32 `struc:"sizeof=C"`
-       C         []UDPEncapCounter
-}
-
-func (*VnetUDPEncapCounters) GetMessageName() string {
-       return "vnet_udp_encap_counters"
-}
-func (*VnetUDPEncapCounters) GetCrcString() string {
-       return "1ab5e649"
-}
-func (*VnetUDPEncapCounters) GetMessageType() api.MessageType {
-       return api.OtherMessage
-}
-
-// WantBierNeighborStats represents VPP binary API message 'want_bier_neighbor_stats':
-//
-//     "want_bier_neighbor_stats",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "client_index"
-//     ],
-//     [
-//         "u32",
-//         "context"
-//     ],
-//     [
-//         "u32",
-//         "enable"
-//     ],
-//     [
-//         "u32",
-//         "pid"
-//     ],
-//     {
-//         "crc": "0xcfaccc1f"
-//     }
-//
-type WantBierNeighborStats struct {
-       Enable uint32
-       PID    uint32
-}
-
-func (*WantBierNeighborStats) GetMessageName() string {
-       return "want_bier_neighbor_stats"
-}
-func (*WantBierNeighborStats) GetCrcString() string {
-       return "cfaccc1f"
-}
-func (*WantBierNeighborStats) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-// WantBierNeighborStatsReply represents VPP binary API message 'want_bier_neighbor_stats_reply':
-//
-//     "want_bier_neighbor_stats_reply",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "context"
-//     ],
-//     [
-//         "i32",
-//         "retval"
-//     ],
-//     {
-//         "crc": "0xe8d4e804"
-//     }
-//
-type WantBierNeighborStatsReply struct {
-       Retval int32
-}
-
-func (*WantBierNeighborStatsReply) GetMessageName() string {
-       return "want_bier_neighbor_stats_reply"
-}
-func (*WantBierNeighborStatsReply) GetCrcString() string {
-       return "e8d4e804"
-}
-func (*WantBierNeighborStatsReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-// VnetBierNeighborCounters represents VPP binary API message 'vnet_bier_neighbor_counters':
-//
-//     "vnet_bier_neighbor_counters",
-//     [
-//         "u16",
-//         "_vl_msg_id"
-//     ],
-//     [
-//         "u32",
-//         "timestamp"
-//     ],
-//     [
-//         "u32",
-//         "count"
-//     ],
-//     [
-//         "vl_api_bier_neighbor_counter_t",
-//         "c",
-//         0,
-//         "count"
-//     ],
-//     {
-//         "crc": "0xee0481ce"
-//     }
-//
-type VnetBierNeighborCounters struct {
-       Timestamp uint32
-       Count     uint32 `struc:"sizeof=C"`
-       C         []BierNeighborCounter
-}
-
-func (*VnetBierNeighborCounters) GetMessageName() string {
-       return "vnet_bier_neighbor_counters"
-}
-func (*VnetBierNeighborCounters) GetCrcString() string {
-       return "ee0481ce"
-}
-func (*VnetBierNeighborCounters) GetMessageType() api.MessageType {
-       return api.OtherMessage
-}
-
-func init() {
-       api.RegisterMessage((*WantStats)(nil), "stats.WantStats")
-       api.RegisterMessage((*WantStatsReply)(nil), "stats.WantStatsReply")
-       api.RegisterMessage((*WantInterfaceSimpleStats)(nil), "stats.WantInterfaceSimpleStats")
-       api.RegisterMessage((*WantInterfaceSimpleStatsReply)(nil), "stats.WantInterfaceSimpleStatsReply")
-       api.RegisterMessage((*WantPerInterfaceSimpleStats)(nil), "stats.WantPerInterfaceSimpleStats")
-       api.RegisterMessage((*WantPerInterfaceSimpleStatsReply)(nil), "stats.WantPerInterfaceSimpleStatsReply")
-       api.RegisterMessage((*WantInterfaceCombinedStats)(nil), "stats.WantInterfaceCombinedStats")
-       api.RegisterMessage((*WantInterfaceCombinedStatsReply)(nil), "stats.WantInterfaceCombinedStatsReply")
-       api.RegisterMessage((*WantPerInterfaceCombinedStats)(nil), "stats.WantPerInterfaceCombinedStats")
-       api.RegisterMessage((*WantPerInterfaceCombinedStatsReply)(nil), "stats.WantPerInterfaceCombinedStatsReply")
-       api.RegisterMessage((*WantIP4FibStats)(nil), "stats.WantIP4FibStats")
-       api.RegisterMessage((*WantIP4FibStatsReply)(nil), "stats.WantIP4FibStatsReply")
-       api.RegisterMessage((*WantIP6FibStats)(nil), "stats.WantIP6FibStats")
-       api.RegisterMessage((*WantIP6FibStatsReply)(nil), "stats.WantIP6FibStatsReply")
-       api.RegisterMessage((*WantIP4MfibStats)(nil), "stats.WantIP4MfibStats")
-       api.RegisterMessage((*WantIP4MfibStatsReply)(nil), "stats.WantIP4MfibStatsReply")
-       api.RegisterMessage((*WantIP6MfibStats)(nil), "stats.WantIP6MfibStats")
-       api.RegisterMessage((*WantIP6MfibStatsReply)(nil), "stats.WantIP6MfibStatsReply")
-       api.RegisterMessage((*WantIP4NbrStats)(nil), "stats.WantIP4NbrStats")
-       api.RegisterMessage((*WantIP4NbrStatsReply)(nil), "stats.WantIP4NbrStatsReply")
-       api.RegisterMessage((*WantIP6NbrStats)(nil), "stats.WantIP6NbrStats")
-       api.RegisterMessage((*WantIP6NbrStatsReply)(nil), "stats.WantIP6NbrStatsReply")
-       api.RegisterMessage((*VnetIP4FibCounters)(nil), "stats.VnetIP4FibCounters")
-       api.RegisterMessage((*VnetIP4MfibCounters)(nil), "stats.VnetIP4MfibCounters")
-       api.RegisterMessage((*VnetIP4NbrCounters)(nil), "stats.VnetIP4NbrCounters")
-       api.RegisterMessage((*VnetIP6FibCounters)(nil), "stats.VnetIP6FibCounters")
-       api.RegisterMessage((*VnetIP6MfibCounters)(nil), "stats.VnetIP6MfibCounters")
-       api.RegisterMessage((*VnetIP6NbrCounters)(nil), "stats.VnetIP6NbrCounters")
-       api.RegisterMessage((*VnetInterfaceSimpleCounters)(nil), "stats.VnetInterfaceSimpleCounters")
-       api.RegisterMessage((*VnetInterfaceCombinedCounters)(nil), "stats.VnetInterfaceCombinedCounters")
-       api.RegisterMessage((*VnetPerInterfaceSimpleCounters)(nil), "stats.VnetPerInterfaceSimpleCounters")
-       api.RegisterMessage((*VnetPerInterfaceCombinedCounters)(nil), "stats.VnetPerInterfaceCombinedCounters")
-       api.RegisterMessage((*VnetGetSummaryStats)(nil), "stats.VnetGetSummaryStats")
-       api.RegisterMessage((*VnetGetSummaryStatsReply)(nil), "stats.VnetGetSummaryStatsReply")
-       api.RegisterMessage((*StatsGetPollerDelay)(nil), "stats.StatsGetPollerDelay")
-       api.RegisterMessage((*StatsGetPollerDelayReply)(nil), "stats.StatsGetPollerDelayReply")
-       api.RegisterMessage((*WantUDPEncapStats)(nil), "stats.WantUDPEncapStats")
-       api.RegisterMessage((*WantUDPEncapStatsReply)(nil), "stats.WantUDPEncapStatsReply")
-       api.RegisterMessage((*VnetUDPEncapCounters)(nil), "stats.VnetUDPEncapCounters")
-       api.RegisterMessage((*WantBierNeighborStats)(nil), "stats.WantBierNeighborStats")
-       api.RegisterMessage((*WantBierNeighborStatsReply)(nil), "stats.WantBierNeighborStatsReply")
-       api.RegisterMessage((*VnetBierNeighborCounters)(nil), "stats.VnetBierNeighborCounters")
-}
index edefd20..cc5ddee 100644 (file)
                 "context"
             ],
             [
-                "u32",
-                "length"
-            ],
-            [
-                "u8",
-                "cmd",
-                0,
-                "length"
+                "string",
+                "cmd"
             ],
             {
-                "crc": "0x74e00a49"
+                "crc": "0xb1ad59b3"
             }
         ],
         [
                 "retval"
             ],
             [
-                "u32",
-                "length"
-            ],
-            [
-                "u8",
-                "reply",
-                0,
-                "length"
+                "string",
+                "reply"
             ],
             {
-                "crc": "0x1f22bbb8"
+                "crc": "0x6d3c80a4"
             }
         ],
         [
                 "retval"
             ],
             [
-                "u8",
-                "program",
-                32
+                "string",
+                "program"
             ],
             [
-                "u8",
-                "version",
-                32
+                "string",
+                "version"
             ],
             [
-                "u8",
-                "build_date",
-                32
+                "string",
+                "build_date"
             ],
             [
-                "u8",
-                "build_directory",
-                256
+                "string",
+                "build_directory"
             ],
             {
-                "crc": "0x8b5a13b4"
+                "crc": "0xb9bcf6df"
             }
         ],
         [
             }
         ]
     ],
-    "vl_api_version": "0x3ce489e",
+    "vl_api_version": "0x2cc8d629",
     "unions": [],
     "services": {
         "cli_inband": {
index 48925ac..e0d5f97 100644 (file)
@@ -219,29 +219,23 @@ func (*Cli) GetMessageType() api.MessageType {
 //         "context"
 //     ],
 //     [
-//         "u32",
-//         "length"
-//     ],
-//     [
-//         "u8",
-//         "cmd",
-//         0,
-//         "length"
+//         "string",
+//         "cmd"
 //     ],
 //     {
-//         "crc": "0x74e00a49"
+//         "crc": "0xb1ad59b3"
 //     }
 //
 type CliInband struct {
-       Length uint32 `struc:"sizeof=Cmd"`
-       Cmd    []byte
+       XXX_CmdLen uint32 `struc:"sizeof=Cmd"`
+       Cmd        string
 }
 
 func (*CliInband) GetMessageName() string {
        return "cli_inband"
 }
 func (*CliInband) GetCrcString() string {
-       return "74e00a49"
+       return "b1ad59b3"
 }
 func (*CliInband) GetMessageType() api.MessageType {
        return api.RequestMessage
@@ -301,30 +295,24 @@ func (*CliReply) GetMessageType() api.MessageType {
 //         "retval"
 //     ],
 //     [
-//         "u32",
-//         "length"
-//     ],
-//     [
-//         "u8",
-//         "reply",
-//         0,
-//         "length"
+//         "string",
+//         "reply"
 //     ],
 //     {
-//         "crc": "0x1f22bbb8"
+//         "crc": "0x6d3c80a4"
 //     }
 //
 type CliInbandReply struct {
-       Retval int32
-       Length uint32 `struc:"sizeof=Reply"`
-       Reply  []byte
+       Retval       int32
+       XXX_ReplyLen uint32 `struc:"sizeof=Reply"`
+       Reply        string
 }
 
 func (*CliInbandReply) GetMessageName() string {
        return "cli_inband_reply"
 }
 func (*CliInbandReply) GetCrcString() string {
-       return "1f22bbb8"
+       return "6d3c80a4"
 }
 func (*CliInbandReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
@@ -535,42 +523,42 @@ func (*ShowVersion) GetMessageType() api.MessageType {
 //         "retval"
 //     ],
 //     [
-//         "u8",
-//         "program",
-//         32
+//         "string",
+//         "program"
 //     ],
 //     [
-//         "u8",
-//         "version",
-//         32
+//         "string",
+//         "version"
 //     ],
 //     [
-//         "u8",
-//         "build_date",
-//         32
+//         "string",
+//         "build_date"
 //     ],
 //     [
-//         "u8",
-//         "build_directory",
-//         256
+//         "string",
+//         "build_directory"
 //     ],
 //     {
-//         "crc": "0x8b5a13b4"
+//         "crc": "0xb9bcf6df"
 //     }
 //
 type ShowVersionReply struct {
-       Retval         int32
-       Program        []byte `struc:"[32]byte"`
-       Version        []byte `struc:"[32]byte"`
-       BuildDate      []byte `struc:"[32]byte"`
-       BuildDirectory []byte `struc:"[256]byte"`
+       Retval                int32
+       XXX_ProgramLen        uint32 `struc:"sizeof=Program"`
+       Program               string
+       XXX_VersionLen        uint32 `struc:"sizeof=Version"`
+       Version               string
+       XXX_BuildDateLen      uint32 `struc:"sizeof=BuildDate"`
+       BuildDate             string
+       XXX_BuildDirectoryLen uint32 `struc:"sizeof=BuildDirectory"`
+       BuildDirectory        string
 }
 
 func (*ShowVersionReply) GetMessageName() string {
        return "show_version_reply"
 }
 func (*ShowVersionReply) GetCrcString() string {
-       return "8b5a13b4"
+       return "b9bcf6df"
 }
 func (*ShowVersionReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
diff --git a/examples/cmd/stats-client/stats_client.go b/examples/cmd/stats-client/stats_client.go
deleted file mode 100644 (file)
index 7a2c313..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-// Copyright (c) 2017 Cisco and/or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at:
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Binary stats-client is an example VPP management application that exercises the
-// govpp API for interface counters together with asynchronous connection to VPP.
-package main
-
-import (
-       "fmt"
-       "log"
-       "os"
-       "os/signal"
-
-       "git.fd.io/govpp.git"
-       "git.fd.io/govpp.git/api"
-       "git.fd.io/govpp.git/core"
-       "git.fd.io/govpp.git/examples/bin_api/stats"
-)
-
-/*
-
-       IMPORTANT NOTICE!
-
-       The binary API module stats used in this example will be deprecated in VPP 19.01.
-       VPP's new stats API should be used, you can find basic usage of new stats API in example stats-api.
-
-*/
-
-func main() {
-       fmt.Println("Starting stats VPP client..")
-
-       // async connect to VPP
-       conn, statCh, err := govpp.AsyncConnect("")
-       if err != nil {
-               log.Fatalln("Error:", err)
-       }
-       defer conn.Disconnect()
-
-       // create an API channel that will be used in the examples
-       ch, err := conn.NewAPIChannel()
-       if err != nil {
-               log.Fatalln("Error:", err)
-       }
-       defer ch.Close()
-
-       // create channel for Interrupt signal
-       sigChan := make(chan os.Signal, 1)
-       signal.Notify(sigChan, os.Interrupt)
-
-       var notifChan chan api.Message
-       var simpleSub api.SubscriptionCtx
-       var combinedSub api.SubscriptionCtx
-
-       // loop until Interrupt signal is received
-loop:
-       for {
-               select {
-               case connEvent := <-statCh:
-                       // VPP connection state change
-                       switch connEvent.State {
-                       case core.Connected:
-                               fmt.Println("VPP connected.")
-                               if notifChan == nil {
-                                       simpleSub, combinedSub, notifChan = subscribeNotifications(ch)
-                               }
-                               requestStatistics(ch)
-
-                       case core.Disconnected:
-                               fmt.Println("VPP disconnected.")
-                       }
-
-               case msg := <-notifChan:
-                       switch notif := msg.(type) {
-                       case *stats.VnetInterfaceSimpleCounters:
-                               // simple counter notification received
-                               processSimpleCounters(notif)
-                       case *stats.VnetInterfaceCombinedCounters:
-                               // combined counter notification received
-                               processCombinedCounters(notif)
-                       default:
-                               fmt.Println("Ignoring unknown VPP notification")
-                       }
-
-               case <-sigChan:
-                       // interrupt received
-                       fmt.Println("Interrupt received, exiting.")
-                       break loop
-               }
-       }
-
-       simpleSub.Unsubscribe()
-       combinedSub.Unsubscribe()
-}
-
-// subscribeNotifications subscribes for interface counters notifications.
-func subscribeNotifications(ch api.Channel) (api.SubscriptionCtx, api.SubscriptionCtx, chan api.Message) {
-       notifChan := make(chan api.Message, 100)
-
-       simpleSub, err := ch.SubscribeNotification(notifChan, &stats.VnetInterfaceSimpleCounters{})
-       if err != nil {
-               panic(err)
-       }
-       combinedSub, err := ch.SubscribeNotification(notifChan, &stats.VnetInterfaceCombinedCounters{})
-       if err != nil {
-               panic(err)
-       }
-
-       return simpleSub, combinedSub, notifChan
-}
-
-// requestStatistics requests interface counters notifications from VPP.
-func requestStatistics(ch api.Channel) {
-       if err := ch.SendRequest(&stats.WantStats{
-               PID:           uint32(os.Getpid()),
-               EnableDisable: 1,
-       }).ReceiveReply(&stats.WantStatsReply{}); err != nil {
-               panic(err)
-       }
-}
-
-// processSimpleCounters processes simple counters received from VPP.
-func processSimpleCounters(counters *stats.VnetInterfaceSimpleCounters) {
-       fmt.Printf("SimpleCounters: %+v\n", counters)
-
-       counterNames := []string{
-               "Drop", "Punt",
-               "IPv4", "IPv6",
-               "RxNoBuf", "RxMiss",
-               "RxError", "TxError",
-               "MPLS",
-       }
-
-       for i := uint32(0); i < counters.Count; i++ {
-               fmt.Printf("Interface '%d': %s = %d\n",
-                       counters.FirstSwIfIndex+i, counterNames[counters.VnetCounterType], counters.Data[i])
-       }
-}
-
-// processCombinedCounters processes combined counters received from VPP.
-func processCombinedCounters(counters *stats.VnetInterfaceCombinedCounters) {
-       fmt.Printf("CombinedCounters: %+v\n", counters)
-
-       counterNames := []string{"Rx", "Tx"}
-
-       for i := uint32(0); i < counters.Count; i++ {
-               if len(counterNames) <= int(counters.VnetCounterType) {
-                       continue
-               }
-               fmt.Printf("Interface '%d': %s packets = %d, %s bytes = %d\n",
-                       counters.FirstSwIfIndex+i,
-                       counterNames[counters.VnetCounterType], counters.Data[i].Packets,
-                       counterNames[counters.VnetCounterType], counters.Data[i].Bytes)
-       }
-}
diff --git a/glide.lock b/glide.lock
deleted file mode 100644 (file)
index ba71139..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-hash: 5144a3ebeee4fbfbd9e6d20fbb05f4e79f055848e74ca8911f49de3f673a11ab
-updated: 2017-11-28T16:14:28.354432026+01:00
-imports:
-- name: github.com/bennyscetbun/jsongo
-  version: 5240b3f82c6665fe3ccd96bdf5e6f38fe1e1399d
-- name: github.com/fsnotify/fsnotify
-  version: 4da3e2cfbabc9f751898f250b49f2439785783a1
-- name: github.com/google/gopacket
-  version: 8e484f31b1237166f00e4896d27ddde259540632
-  subpackages:
-  - layers
-- name: github.com/lunixbochs/struc
-  version: ef56447db6a068ad9e52bc54a1aff5fb9e1ed2dd
-- name: github.com/pkg/profile
-  version: 5b67d428864e92711fcbd2f8629456121a56d91f
-- name: github.com/sirupsen/logrus
-  version: 202f25545ea4cf9b191ff7f846df5d87c9382c2b
-- name: golang.org/x/sys
-  version: 9ccfe848b9db8435a24c424abbc07a921adf1df5
-  subpackages:
-  - unix
-testImports:
-- name: github.com/onsi/gomega
-  version: 334b8f472b3af5d541c5642701c1e29e2126f486
-  subpackages:
-  - format
-  - internal/assertion
-  - internal/asyncassertion
-  - internal/oraclematcher
-  - internal/testingtsupport
-  - matchers
-  - matchers/support/goraph/bipartitegraph
-  - matchers/support/goraph/edge
-  - matchers/support/goraph/node
-  - matchers/support/goraph/util
-  - types
-- name: gopkg.in/yaml.v2
-  version: cd8b52f8269e0feb286dfeef29f8fe4d5b397e0b
diff --git a/glide.yaml b/glide.yaml
deleted file mode 100644 (file)
index 7165dd2..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-package: git.fd.io/govpp.git
-import:
-- package: github.com/sirupsen/logrus
-  version: v1.0.0
-- package: github.com/bennyscetbun/jsongo
-  version: 5240b3f82c6665fe3ccd96bdf5e6f38fe1e1399d
-- package: github.com/lunixbochs/struc
-  version: ef56447db6a068ad9e52bc54a1aff5fb9e1ed2dd
-- package: github.com/fsnotify/fsnotify
-  version: 4da3e2cfbabc9f751898f250b49f2439785783a1
-- package: github.com/google/gopacket
-  version: 8e484f31b1237166f00e4896d27ddde259540632
-testImport:
-- package: github.com/onsi/gomega
-  version: v1.1.0
diff --git a/vendor/github.com/fsnotify/fsnotify/.github/ISSUE_TEMPLATE.md b/vendor/github.com/fsnotify/fsnotify/.github/ISSUE_TEMPLATE.md
deleted file mode 100644 (file)
index 4ad1aed..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-Before reporting an issue, please ensure you are using the latest release of fsnotify.
-
-### Which operating system (GOOS) and version are you using?
-
-Linux: lsb_release -a
-macOS: sw_vers
-Windows: systeminfo | findstr /B /C:OS
-
-### Please describe the issue that occurred.
-
-### Are you able to reproduce the issue? Please provide steps to reproduce and a code sample if possible.
diff --git a/vendor/github.com/fsnotify/fsnotify/.github/PULL_REQUEST_TEMPLATE.md b/vendor/github.com/fsnotify/fsnotify/.github/PULL_REQUEST_TEMPLATE.md
deleted file mode 100644 (file)
index 64ddf7c..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#### What does this pull request do?
-
-
-#### Where should the reviewer start?
-
-
-#### How should this be manually tested?
-
diff --git a/vendor/github.com/fsnotify/fsnotify/example_test.go b/vendor/github.com/fsnotify/fsnotify/example_test.go
deleted file mode 100644 (file)
index 700502c..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build !plan9
-
-package fsnotify_test
-
-import (
-       "log"
-
-       "github.com/fsnotify/fsnotify"
-)
-
-func ExampleNewWatcher() {
-       watcher, err := fsnotify.NewWatcher()
-       if err != nil {
-               log.Fatal(err)
-       }
-       defer watcher.Close()
-
-       done := make(chan bool)
-       go func() {
-               for {
-                       select {
-                       case event := <-watcher.Events:
-                               log.Println("event:", event)
-                               if event.Op&fsnotify.Write == fsnotify.Write {
-                                       log.Println("modified file:", event.Name)
-                               }
-                       case err := <-watcher.Errors:
-                               log.Println("error:", err)
-                       }
-               }
-       }()
-
-       err = watcher.Add("/tmp/foo")
-       if err != nil {
-               log.Fatal(err)
-       }
-       <-done
-}
diff --git a/vendor/github.com/fsnotify/fsnotify/fsnotify_test.go b/vendor/github.com/fsnotify/fsnotify/fsnotify_test.go
deleted file mode 100644 (file)
index 9d6d72a..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2016 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build !plan9
-
-package fsnotify
-
-import "testing"
-
-func TestEventStringWithValue(t *testing.T) {
-       for opMask, expectedString := range map[Op]string{
-               Chmod | Create: `"/usr/someFile": CREATE|CHMOD`,
-               Rename:         `"/usr/someFile": RENAME`,
-               Remove:         `"/usr/someFile": REMOVE`,
-               Write | Chmod:  `"/usr/someFile": WRITE|CHMOD`,
-       } {
-               event := Event{Name: "/usr/someFile", Op: opMask}
-               if event.String() != expectedString {
-                       t.Fatalf("Expected %s, got: %v", expectedString, event.String())
-               }
-
-       }
-}
-
-func TestEventOpStringWithValue(t *testing.T) {
-       expectedOpString := "WRITE|CHMOD"
-       event := Event{Name: "someFile", Op: Write | Chmod}
-       if event.Op.String() != expectedOpString {
-               t.Fatalf("Expected %s, got: %v", expectedOpString, event.Op.String())
-       }
-}
-
-func TestEventOpStringWithNoValue(t *testing.T) {
-       expectedOpString := ""
-       event := Event{Name: "testFile", Op: 0}
-       if event.Op.String() != expectedOpString {
-               t.Fatalf("Expected %s, got: %v", expectedOpString, event.Op.String())
-       }
-}
diff --git a/vendor/github.com/fsnotify/fsnotify/inotify_poller_test.go b/vendor/github.com/fsnotify/fsnotify/inotify_poller_test.go
deleted file mode 100644 (file)
index 26623ef..0000000
+++ /dev/null
@@ -1,229 +0,0 @@
-// Copyright 2015 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build linux
-
-package fsnotify
-
-import (
-       "testing"
-       "time"
-
-       "golang.org/x/sys/unix"
-)
-
-type testFd [2]int
-
-func makeTestFd(t *testing.T) testFd {
-       var tfd testFd
-       errno := unix.Pipe(tfd[:])
-       if errno != nil {
-               t.Fatalf("Failed to create pipe: %v", errno)
-       }
-       return tfd
-}
-
-func (tfd testFd) fd() int {
-       return tfd[0]
-}
-
-func (tfd testFd) closeWrite(t *testing.T) {
-       errno := unix.Close(tfd[1])
-       if errno != nil {
-               t.Fatalf("Failed to close write end of pipe: %v", errno)
-       }
-}
-
-func (tfd testFd) put(t *testing.T) {
-       buf := make([]byte, 10)
-       _, errno := unix.Write(tfd[1], buf)
-       if errno != nil {
-               t.Fatalf("Failed to write to pipe: %v", errno)
-       }
-}
-
-func (tfd testFd) get(t *testing.T) {
-       buf := make([]byte, 10)
-       _, errno := unix.Read(tfd[0], buf)
-       if errno != nil {
-               t.Fatalf("Failed to read from pipe: %v", errno)
-       }
-}
-
-func (tfd testFd) close() {
-       unix.Close(tfd[1])
-       unix.Close(tfd[0])
-}
-
-func makePoller(t *testing.T) (testFd, *fdPoller) {
-       tfd := makeTestFd(t)
-       poller, err := newFdPoller(tfd.fd())
-       if err != nil {
-               t.Fatalf("Failed to create poller: %v", err)
-       }
-       return tfd, poller
-}
-
-func TestPollerWithBadFd(t *testing.T) {
-       _, err := newFdPoller(-1)
-       if err != unix.EBADF {
-               t.Fatalf("Expected EBADF, got: %v", err)
-       }
-}
-
-func TestPollerWithData(t *testing.T) {
-       tfd, poller := makePoller(t)
-       defer tfd.close()
-       defer poller.close()
-
-       tfd.put(t)
-       ok, err := poller.wait()
-       if err != nil {
-               t.Fatalf("poller failed: %v", err)
-       }
-       if !ok {
-               t.Fatalf("expected poller to return true")
-       }
-       tfd.get(t)
-}
-
-func TestPollerWithWakeup(t *testing.T) {
-       tfd, poller := makePoller(t)
-       defer tfd.close()
-       defer poller.close()
-
-       err := poller.wake()
-       if err != nil {
-               t.Fatalf("wake failed: %v", err)
-       }
-       ok, err := poller.wait()
-       if err != nil {
-               t.Fatalf("poller failed: %v", err)
-       }
-       if ok {
-               t.Fatalf("expected poller to return false")
-       }
-}
-
-func TestPollerWithClose(t *testing.T) {
-       tfd, poller := makePoller(t)
-       defer tfd.close()
-       defer poller.close()
-
-       tfd.closeWrite(t)
-       ok, err := poller.wait()
-       if err != nil {
-               t.Fatalf("poller failed: %v", err)
-       }
-       if !ok {
-               t.Fatalf("expected poller to return true")
-       }
-}
-
-func TestPollerWithWakeupAndData(t *testing.T) {
-       tfd, poller := makePoller(t)
-       defer tfd.close()
-       defer poller.close()
-
-       tfd.put(t)
-       err := poller.wake()
-       if err != nil {
-               t.Fatalf("wake failed: %v", err)
-       }
-
-       // both data and wakeup
-       ok, err := poller.wait()
-       if err != nil {
-               t.Fatalf("poller failed: %v", err)
-       }
-       if !ok {
-               t.Fatalf("expected poller to return true")
-       }
-
-       // data is still in the buffer, wakeup is cleared
-       ok, err = poller.wait()
-       if err != nil {
-               t.Fatalf("poller failed: %v", err)
-       }
-       if !ok {
-               t.Fatalf("expected poller to return true")
-       }
-
-       tfd.get(t)
-       // data is gone, only wakeup now
-       err = poller.wake()
-       if err != nil {
-               t.Fatalf("wake failed: %v", err)
-       }
-       ok, err = poller.wait()
-       if err != nil {
-               t.Fatalf("poller failed: %v", err)
-       }
-       if ok {
-               t.Fatalf("expected poller to return false")
-       }
-}
-
-func TestPollerConcurrent(t *testing.T) {
-       tfd, poller := makePoller(t)
-       defer tfd.close()
-       defer poller.close()
-
-       oks := make(chan bool)
-       live := make(chan bool)
-       defer close(live)
-       go func() {
-               defer close(oks)
-               for {
-                       ok, err := poller.wait()
-                       if err != nil {
-                               t.Fatalf("poller failed: %v", err)
-                       }
-                       oks <- ok
-                       if !<-live {
-                               return
-                       }
-               }
-       }()
-
-       // Try a write
-       select {
-       case <-time.After(50 * time.Millisecond):
-       case <-oks:
-               t.Fatalf("poller did not wait")
-       }
-       tfd.put(t)
-       if !<-oks {
-               t.Fatalf("expected true")
-       }
-       tfd.get(t)
-       live <- true
-
-       // Try a wakeup
-       select {
-       case <-time.After(50 * time.Millisecond):
-       case <-oks:
-               t.Fatalf("poller did not wait")
-       }
-       err := poller.wake()
-       if err != nil {
-               t.Fatalf("wake failed: %v", err)
-       }
-       if <-oks {
-               t.Fatalf("expected false")
-       }
-       live <- true
-
-       // Try a close
-       select {
-       case <-time.After(50 * time.Millisecond):
-       case <-oks:
-               t.Fatalf("poller did not wait")
-       }
-       tfd.closeWrite(t)
-       if !<-oks {
-               t.Fatalf("expected true")
-       }
-       tfd.get(t)
-}
diff --git a/vendor/github.com/fsnotify/fsnotify/inotify_test.go b/vendor/github.com/fsnotify/fsnotify/inotify_test.go
deleted file mode 100644 (file)
index 2cc6d93..0000000
+++ /dev/null
@@ -1,449 +0,0 @@
-// Copyright 2015 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build linux
-
-package fsnotify
-
-import (
-       "fmt"
-       "os"
-       "path/filepath"
-       "strings"
-       "testing"
-       "time"
-)
-
-func TestInotifyCloseRightAway(t *testing.T) {
-       w, err := NewWatcher()
-       if err != nil {
-               t.Fatalf("Failed to create watcher")
-       }
-
-       // Close immediately; it won't even reach the first unix.Read.
-       w.Close()
-
-       // Wait for the close to complete.
-       <-time.After(50 * time.Millisecond)
-       isWatcherReallyClosed(t, w)
-}
-
-func TestInotifyCloseSlightlyLater(t *testing.T) {
-       w, err := NewWatcher()
-       if err != nil {
-               t.Fatalf("Failed to create watcher")
-       }
-
-       // Wait until readEvents has reached unix.Read, and Close.
-       <-time.After(50 * time.Millisecond)
-       w.Close()
-
-       // Wait for the close to complete.
-       <-time.After(50 * time.Millisecond)
-       isWatcherReallyClosed(t, w)
-}
-
-func TestInotifyCloseSlightlyLaterWithWatch(t *testing.T) {
-       testDir := tempMkdir(t)
-       defer os.RemoveAll(testDir)
-
-       w, err := NewWatcher()
-       if err != nil {
-               t.Fatalf("Failed to create watcher")
-       }
-       w.Add(testDir)
-
-       // Wait until readEvents has reached unix.Read, and Close.
-       <-time.After(50 * time.Millisecond)
-       w.Close()
-
-       // Wait for the close to complete.
-       <-time.After(50 * time.Millisecond)
-       isWatcherReallyClosed(t, w)
-}
-
-func TestInotifyCloseAfterRead(t *testing.T) {
-       testDir := tempMkdir(t)
-       defer os.RemoveAll(testDir)
-
-       w, err := NewWatcher()
-       if err != nil {
-               t.Fatalf("Failed to create watcher")
-       }
-
-       err = w.Add(testDir)
-       if err != nil {
-               t.Fatalf("Failed to add .")
-       }
-
-       // Generate an event.
-       os.Create(filepath.Join(testDir, "somethingSOMETHINGsomethingSOMETHING"))
-
-       // Wait for readEvents to read the event, then close the watcher.
-       <-time.After(50 * time.Millisecond)
-       w.Close()
-
-       // Wait for the close to complete.
-       <-time.After(50 * time.Millisecond)
-       isWatcherReallyClosed(t, w)
-}
-
-func isWatcherReallyClosed(t *testing.T, w *Watcher) {
-       select {
-       case err, ok := <-w.Errors:
-               if ok {
-                       t.Fatalf("w.Errors is not closed; readEvents is still alive after closing (error: %v)", err)
-               }
-       default:
-               t.Fatalf("w.Errors would have blocked; readEvents is still alive!")
-       }
-
-       select {
-       case _, ok := <-w.Events:
-               if ok {
-                       t.Fatalf("w.Events is not closed; readEvents is still alive after closing")
-               }
-       default:
-               t.Fatalf("w.Events would have blocked; readEvents is still alive!")
-       }
-}
-
-func TestInotifyCloseCreate(t *testing.T) {
-       testDir := tempMkdir(t)
-       defer os.RemoveAll(testDir)
-
-       w, err := NewWatcher()
-       if err != nil {
-               t.Fatalf("Failed to create watcher: %v", err)
-       }
-       defer w.Close()
-
-       err = w.Add(testDir)
-       if err != nil {
-               t.Fatalf("Failed to add testDir: %v", err)
-       }
-       h, err := os.Create(filepath.Join(testDir, "testfile"))
-       if err != nil {
-               t.Fatalf("Failed to create file in testdir: %v", err)
-       }
-       h.Close()
-       select {
-       case _ = <-w.Events:
-       case err := <-w.Errors:
-               t.Fatalf("Error from watcher: %v", err)
-       case <-time.After(50 * time.Millisecond):
-               t.Fatalf("Took too long to wait for event")
-       }
-
-       // At this point, we've received one event, so the goroutine is ready.
-       // It's also blocking on unix.Read.
-       // Now we try to swap the file descriptor under its nose.
-       w.Close()
-       w, err = NewWatcher()
-       defer w.Close()
-       if err != nil {
-               t.Fatalf("Failed to create second watcher: %v", err)
-       }
-
-       <-time.After(50 * time.Millisecond)
-       err = w.Add(testDir)
-       if err != nil {
-               t.Fatalf("Error adding testDir again: %v", err)
-       }
-}
-
-// This test verifies the watcher can keep up with file creations/deletions
-// when under load.
-func TestInotifyStress(t *testing.T) {
-       maxNumToCreate := 1000
-
-       testDir := tempMkdir(t)
-       defer os.RemoveAll(testDir)
-       testFilePrefix := filepath.Join(testDir, "testfile")
-
-       w, err := NewWatcher()
-       if err != nil {
-               t.Fatalf("Failed to create watcher: %v", err)
-       }
-       defer w.Close()
-
-       err = w.Add(testDir)
-       if err != nil {
-               t.Fatalf("Failed to add testDir: %v", err)
-       }
-
-       doneChan := make(chan struct{})
-       // The buffer ensures that the file generation goroutine is never blocked.
-       errChan := make(chan error, 2*maxNumToCreate)
-
-       go func() {
-               for i := 0; i < maxNumToCreate; i++ {
-                       testFile := fmt.Sprintf("%s%d", testFilePrefix, i)
-
-                       handle, err := os.Create(testFile)
-                       if err != nil {
-                               errChan <- fmt.Errorf("Create failed: %v", err)
-                               continue
-                       }
-
-                       err = handle.Close()
-                       if err != nil {
-                               errChan <- fmt.Errorf("Close failed: %v", err)
-                               continue
-                       }
-               }
-
-               // If we delete a newly created file too quickly, inotify will skip the
-               // create event and only send the delete event.
-               time.Sleep(100 * time.Millisecond)
-
-               for i := 0; i < maxNumToCreate; i++ {
-                       testFile := fmt.Sprintf("%s%d", testFilePrefix, i)
-                       err = os.Remove(testFile)
-                       if err != nil {
-                               errChan <- fmt.Errorf("Remove failed: %v", err)
-                       }
-               }
-
-               close(doneChan)
-       }()
-
-       creates := 0
-       removes := 0
-
-       finished := false
-       after := time.After(10 * time.Second)
-       for !finished {
-               select {
-               case <-after:
-                       t.Fatalf("Not done")
-               case <-doneChan:
-                       finished = true
-               case err := <-errChan:
-                       t.Fatalf("Got an error from file creator goroutine: %v", err)
-               case err := <-w.Errors:
-                       t.Fatalf("Got an error from watcher: %v", err)
-               case evt := <-w.Events:
-                       if !strings.HasPrefix(evt.Name, testFilePrefix) {
-                               t.Fatalf("Got an event for an unknown file: %s", evt.Name)
-                       }
-                       if evt.Op == Create {
-                               creates++
-                       }
-                       if evt.Op == Remove {
-                               removes++
-                       }
-               }
-       }
-
-       // Drain remaining events from channels
-       count := 0
-       for count < 10 {
-               select {
-               case err := <-errChan:
-                       t.Fatalf("Got an error from file creator goroutine: %v", err)
-               case err := <-w.Errors:
-                       t.Fatalf("Got an error from watcher: %v", err)
-               case evt := <-w.Events:
-                       if !strings.HasPrefix(evt.Name, testFilePrefix) {
-                               t.Fatalf("Got an event for an unknown file: %s", evt.Name)
-                       }
-                       if evt.Op == Create {
-                               creates++
-                       }
-                       if evt.Op == Remove {
-                               removes++
-                       }
-                       count = 0
-               default:
-                       count++
-                       // Give the watcher chances to fill the channels.
-                       time.Sleep(time.Millisecond)
-               }
-       }
-
-       if creates-removes > 1 || creates-removes < -1 {
-               t.Fatalf("Creates and removes should not be off by more than one: %d creates, %d removes", creates, removes)
-       }
-       if creates < 50 {
-               t.Fatalf("Expected at least 50 creates, got %d", creates)
-       }
-}
-
-func TestInotifyRemoveTwice(t *testing.T) {
-       testDir := tempMkdir(t)
-       defer os.RemoveAll(testDir)
-       testFile := filepath.Join(testDir, "testfile")
-
-       handle, err := os.Create(testFile)
-       if err != nil {
-               t.Fatalf("Create failed: %v", err)
-       }
-       handle.Close()
-
-       w, err := NewWatcher()
-       if err != nil {
-               t.Fatalf("Failed to create watcher: %v", err)
-       }
-       defer w.Close()
-
-       err = w.Add(testFile)
-       if err != nil {
-               t.Fatalf("Failed to add testFile: %v", err)
-       }
-
-       err = w.Remove(testFile)
-       if err != nil {
-               t.Fatalf("wanted successful remove but got:", err)
-       }
-
-       err = w.Remove(testFile)
-       if err == nil {
-               t.Fatalf("no error on removing invalid file")
-       }
-
-       w.mu.Lock()
-       defer w.mu.Unlock()
-       if len(w.watches) != 0 {
-               t.Fatalf("Expected watches len is 0, but got: %d, %v", len(w.watches), w.watches)
-       }
-       if len(w.paths) != 0 {
-               t.Fatalf("Expected paths len is 0, but got: %d, %v", len(w.paths), w.paths)
-       }
-}
-
-func TestInotifyInnerMapLength(t *testing.T) {
-       testDir := tempMkdir(t)
-       defer os.RemoveAll(testDir)
-       testFile := filepath.Join(testDir, "testfile")
-
-       handle, err := os.Create(testFile)
-       if err != nil {
-               t.Fatalf("Create failed: %v", err)
-       }
-       handle.Close()
-
-       w, err := NewWatcher()
-       if err != nil {
-               t.Fatalf("Failed to create watcher: %v", err)
-       }
-       defer w.Close()
-
-       err = w.Add(testFile)
-       if err != nil {
-               t.Fatalf("Failed to add testFile: %v", err)
-       }
-       go func() {
-               for err := range w.Errors {
-                       t.Fatalf("error received: %s", err)
-               }
-       }()
-
-       err = os.Remove(testFile)
-       if err != nil {
-               t.Fatalf("Failed to remove testFile: %v", err)
-       }
-       _ = <-w.Events                      // consume Remove event
-       <-time.After(50 * time.Millisecond) // wait IN_IGNORE propagated
-
-       w.mu.Lock()
-       defer w.mu.Unlock()
-       if len(w.watches) != 0 {
-               t.Fatalf("Expected watches len is 0, but got: %d, %v", len(w.watches), w.watches)
-       }
-       if len(w.paths) != 0 {
-               t.Fatalf("Expected paths len is 0, but got: %d, %v", len(w.paths), w.paths)
-       }
-}
-
-func TestInotifyOverflow(t *testing.T) {
-       // We need to generate many more events than the
-       // fs.inotify.max_queued_events sysctl setting.
-       // We use multiple goroutines (one per directory)
-       // to speed up file creation.
-       numDirs := 128
-       numFiles := 1024
-
-       testDir := tempMkdir(t)
-       defer os.RemoveAll(testDir)
-
-       w, err := NewWatcher()
-       if err != nil {
-               t.Fatalf("Failed to create watcher: %v", err)
-       }
-       defer w.Close()
-
-       for dn := 0; dn < numDirs; dn++ {
-               testSubdir := fmt.Sprintf("%s/%d", testDir, dn)
-
-               err := os.Mkdir(testSubdir, 0777)
-               if err != nil {
-                       t.Fatalf("Cannot create subdir: %v", err)
-               }
-
-               err = w.Add(testSubdir)
-               if err != nil {
-                       t.Fatalf("Failed to add subdir: %v", err)
-               }
-       }
-
-       errChan := make(chan error, numDirs*numFiles)
-
-       for dn := 0; dn < numDirs; dn++ {
-               testSubdir := fmt.Sprintf("%s/%d", testDir, dn)
-
-               go func() {
-                       for fn := 0; fn < numFiles; fn++ {
-                               testFile := fmt.Sprintf("%s/%d", testSubdir, fn)
-
-                               handle, err := os.Create(testFile)
-                               if err != nil {
-                                       errChan <- fmt.Errorf("Create failed: %v", err)
-                                       continue
-                               }
-
-                               err = handle.Close()
-                               if err != nil {
-                                       errChan <- fmt.Errorf("Close failed: %v", err)
-                                       continue
-                               }
-                       }
-               }()
-       }
-
-       creates := 0
-       overflows := 0
-
-       after := time.After(10 * time.Second)
-       for overflows == 0 && creates < numDirs*numFiles {
-               select {
-               case <-after:
-                       t.Fatalf("Not done")
-               case err := <-errChan:
-                       t.Fatalf("Got an error from file creator goroutine: %v", err)
-               case err := <-w.Errors:
-                       if err == ErrEventOverflow {
-                               overflows++
-                       } else {
-                               t.Fatalf("Got an error from watcher: %v", err)
-                       }
-               case evt := <-w.Events:
-                       if !strings.HasPrefix(evt.Name, testDir) {
-                               t.Fatalf("Got an event for an unknown file: %s", evt.Name)
-                       }
-                       if evt.Op == Create {
-                               creates++
-                       }
-               }
-       }
-
-       if creates == numDirs*numFiles {
-               t.Fatalf("Could not trigger overflow")
-       }
-
-       if overflows == 0 {
-               t.Fatalf("No overflow and not enough creates (expected %d, got %d)",
-                       numDirs*numFiles, creates)
-       }
-}
diff --git a/vendor/github.com/fsnotify/fsnotify/integration_darwin_test.go b/vendor/github.com/fsnotify/fsnotify/integration_darwin_test.go
deleted file mode 100644 (file)
index cd6adc2..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-// Copyright 2016 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package fsnotify
-
-import (
-       "os"
-       "path/filepath"
-       "testing"
-       "time"
-
-       "golang.org/x/sys/unix"
-)
-
-// testExchangedataForWatcher tests the watcher with the exchangedata operation on macOS.
-//
-// This is widely used for atomic saves on macOS, e.g. TextMate and in Apple's NSDocument.
-//
-// See https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man2/exchangedata.2.html
-// Also see: https://github.com/textmate/textmate/blob/cd016be29489eba5f3c09b7b70b06da134dda550/Frameworks/io/src/swap_file_data.cc#L20
-func testExchangedataForWatcher(t *testing.T, watchDir bool) {
-       // Create directory to watch
-       testDir1 := tempMkdir(t)
-
-       // For the intermediate file
-       testDir2 := tempMkdir(t)
-
-       defer os.RemoveAll(testDir1)
-       defer os.RemoveAll(testDir2)
-
-       resolvedFilename := "TestFsnotifyEvents.file"
-
-       // TextMate does:
-       //
-       // 1. exchangedata (intermediate, resolved)
-       // 2. unlink intermediate
-       //
-       // Let's try to simulate that:
-       resolved := filepath.Join(testDir1, resolvedFilename)
-       intermediate := filepath.Join(testDir2, resolvedFilename+"~")
-
-       // Make sure we create the file before we start watching
-       createAndSyncFile(t, resolved)
-
-       watcher := newWatcher(t)
-
-       // Test both variants in isolation
-       if watchDir {
-               addWatch(t, watcher, testDir1)
-       } else {
-               addWatch(t, watcher, resolved)
-       }
-
-       // Receive errors on the error channel on a separate goroutine
-       go func() {
-               for err := range watcher.Errors {
-                       t.Fatalf("error received: %s", err)
-               }
-       }()
-
-       // Receive events on the event channel on a separate goroutine
-       eventstream := watcher.Events
-       var removeReceived counter
-       var createReceived counter
-
-       done := make(chan bool)
-
-       go func() {
-               for event := range eventstream {
-                       // Only count relevant events
-                       if event.Name == filepath.Clean(resolved) {
-                               if event.Op&Remove == Remove {
-                                       removeReceived.increment()
-                               }
-                               if event.Op&Create == Create {
-                                       createReceived.increment()
-                               }
-                       }
-                       t.Logf("event received: %s", event)
-               }
-               done <- true
-       }()
-
-       // Repeat to make sure the watched file/directory "survives" the REMOVE/CREATE loop.
-       for i := 1; i <= 3; i++ {
-               // The intermediate file is created in a folder outside the watcher
-               createAndSyncFile(t, intermediate)
-
-               // 1. Swap
-               if err := unix.Exchangedata(intermediate, resolved, 0); err != nil {
-                       t.Fatalf("[%d] exchangedata failed: %s", i, err)
-               }
-
-               time.Sleep(50 * time.Millisecond)
-
-               // 2. Delete the intermediate file
-               err := os.Remove(intermediate)
-
-               if err != nil {
-                       t.Fatalf("[%d] remove %s failed: %s", i, intermediate, err)
-               }
-
-               time.Sleep(50 * time.Millisecond)
-
-       }
-
-       // We expect this event to be received almost immediately, but let's wait 500 ms to be sure
-       time.Sleep(500 * time.Millisecond)
-
-       // The events will be (CHMOD + REMOVE + CREATE) X 2. Let's focus on the last two:
-       if removeReceived.value() < 3 {
-               t.Fatal("fsnotify remove events have not been received after 500 ms")
-       }
-
-       if createReceived.value() < 3 {
-               t.Fatal("fsnotify create events have not been received after 500 ms")
-       }
-
-       watcher.Close()
-       t.Log("waiting for the event channel to become closed...")
-       select {
-       case <-done:
-               t.Log("event channel closed")
-       case <-time.After(2 * time.Second):
-               t.Fatal("event stream was not closed after 2 seconds")
-       }
-}
-
-// TestExchangedataInWatchedDir test exchangedata operation on file in watched dir.
-func TestExchangedataInWatchedDir(t *testing.T) {
-       testExchangedataForWatcher(t, true)
-}
-
-// TestExchangedataInWatchedDir test exchangedata operation on watched file.
-func TestExchangedataInWatchedFile(t *testing.T) {
-       testExchangedataForWatcher(t, false)
-}
-
-func createAndSyncFile(t *testing.T, filepath string) {
-       f1, err := os.OpenFile(filepath, os.O_WRONLY|os.O_CREATE, 0666)
-       if err != nil {
-               t.Fatalf("creating %s failed: %s", filepath, err)
-       }
-       f1.Sync()
-       f1.Close()
-}
diff --git a/vendor/github.com/fsnotify/fsnotify/integration_test.go b/vendor/github.com/fsnotify/fsnotify/integration_test.go
deleted file mode 100644 (file)
index 8b7e9d3..0000000
+++ /dev/null
@@ -1,1237 +0,0 @@
-// Copyright 2010 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build !plan9,!solaris
-
-package fsnotify
-
-import (
-       "io/ioutil"
-       "os"
-       "os/exec"
-       "path"
-       "path/filepath"
-       "runtime"
-       "sync/atomic"
-       "testing"
-       "time"
-)
-
-// An atomic counter
-type counter struct {
-       val int32
-}
-
-func (c *counter) increment() {
-       atomic.AddInt32(&c.val, 1)
-}
-
-func (c *counter) value() int32 {
-       return atomic.LoadInt32(&c.val)
-}
-
-func (c *counter) reset() {
-       atomic.StoreInt32(&c.val, 0)
-}
-
-// tempMkdir makes a temporary directory
-func tempMkdir(t *testing.T) string {
-       dir, err := ioutil.TempDir("", "fsnotify")
-       if err != nil {
-               t.Fatalf("failed to create test directory: %s", err)
-       }
-       return dir
-}
-
-// tempMkFile makes a temporary file.
-func tempMkFile(t *testing.T, dir string) string {
-       f, err := ioutil.TempFile(dir, "fsnotify")
-       if err != nil {
-               t.Fatalf("failed to create test file: %v", err)
-       }
-       defer f.Close()
-       return f.Name()
-}
-
-// newWatcher initializes an fsnotify Watcher instance.
-func newWatcher(t *testing.T) *Watcher {
-       watcher, err := NewWatcher()
-       if err != nil {
-               t.Fatalf("NewWatcher() failed: %s", err)
-       }
-       return watcher
-}
-
-// addWatch adds a watch for a directory
-func addWatch(t *testing.T, watcher *Watcher, dir string) {
-       if err := watcher.Add(dir); err != nil {
-               t.Fatalf("watcher.Add(%q) failed: %s", dir, err)
-       }
-}
-
-func TestFsnotifyMultipleOperations(t *testing.T) {
-       watcher := newWatcher(t)
-
-       // Receive errors on the error channel on a separate goroutine
-       go func() {
-               for err := range watcher.Errors {
-                       t.Fatalf("error received: %s", err)
-               }
-       }()
-
-       // Create directory to watch
-       testDir := tempMkdir(t)
-       defer os.RemoveAll(testDir)
-
-       // Create directory that's not watched
-       testDirToMoveFiles := tempMkdir(t)
-       defer os.RemoveAll(testDirToMoveFiles)
-
-       testFile := filepath.Join(testDir, "TestFsnotifySeq.testfile")
-       testFileRenamed := filepath.Join(testDirToMoveFiles, "TestFsnotifySeqRename.testfile")
-
-       addWatch(t, watcher, testDir)
-
-       // Receive events on the event channel on a separate goroutine
-       eventstream := watcher.Events
-       var createReceived, modifyReceived, deleteReceived, renameReceived counter
-       done := make(chan bool)
-       go func() {
-               for event := range eventstream {
-                       // Only count relevant events
-                       if event.Name == filepath.Clean(testDir) || event.Name == filepath.Clean(testFile) {
-                               t.Logf("event received: %s", event)
-                               if event.Op&Remove == Remove {
-                                       deleteReceived.increment()
-                               }
-                               if event.Op&Write == Write {
-                                       modifyReceived.increment()
-                               }
-                               if event.Op&Create == Create {
-                                       createReceived.increment()
-                               }
-                               if event.Op&Rename == Rename {
-                                       renameReceived.increment()
-                               }
-                       } else {
-                               t.Logf("unexpected event received: %s", event)
-                       }
-               }
-               done <- true
-       }()
-
-       // Create a file
-       // This should add at least one event to the fsnotify event queue
-       var f *os.File
-       f, err := os.OpenFile(testFile, os.O_WRONLY|os.O_CREATE, 0666)
-       if err != nil {
-               t.Fatalf("creating test file failed: %s", err)
-       }
-       f.Sync()
-
-       time.Sleep(time.Millisecond)
-       f.WriteString("data")
-       f.Sync()
-       f.Close()
-
-       time.Sleep(50 * time.Millisecond) // give system time to sync write change before delete
-
-       if err := testRename(testFile, testFileRenamed); err != nil {
-               t.Fatalf("rename failed: %s", err)
-       }
-
-       // Modify the file outside of the watched dir
-       f, err = os.Open(testFileRenamed)
-       if err != nil {
-               t.Fatalf("open test renamed file failed: %s", err)
-       }
-       f.WriteString("data")
-       f.Sync()
-       f.Close()
-
-       time.Sleep(50 * time.Millisecond) // give system time to sync write change before delete
-
-       // Recreate the file that was moved
-       f, err = os.OpenFile(testFile, os.O_WRONLY|os.O_CREATE, 0666)
-       if err != nil {
-               t.Fatalf("creating test file failed: %s", err)
-       }
-       f.Close()
-       time.Sleep(50 * time.Millisecond) // give system time to sync write change before delete
-
-       // We expect this event to be received almost immediately, but let's wait 500 ms to be sure
-       time.Sleep(500 * time.Millisecond)
-       cReceived := createReceived.value()
-       if cReceived != 2 {
-               t.Fatalf("incorrect number of create events received after 500 ms (%d vs %d)", cReceived, 2)
-       }
-       mReceived := modifyReceived.value()
-       if mReceived != 1 {
-               t.Fatalf("incorrect number of modify events received after 500 ms (%d vs %d)", mReceived, 1)
-       }
-       dReceived := deleteReceived.value()
-       rReceived := renameReceived.value()
-       if dReceived+rReceived != 1 {
-               t.Fatalf("incorrect number of rename+delete events received after 500 ms (%d vs %d)", rReceived+dReceived, 1)
-       }
-
-       // Try closing the fsnotify instance
-       t.Log("calling Close()")
-       watcher.Close()
-       t.Log("waiting for the event channel to become closed...")
-       select {
-       case <-done:
-               t.Log("event channel closed")
-       case <-time.After(2 * time.Second):
-               t.Fatal("event stream was not closed after 2 seconds")
-       }
-}
-
-func TestFsnotifyMultipleCreates(t *testing.T) {
-       watcher := newWatcher(t)
-
-       // Receive errors on the error channel on a separate goroutine
-       go func() {
-               for err := range watcher.Errors {
-                       t.Fatalf("error received: %s", err)
-               }
-       }()
-
-       // Create directory to watch
-       testDir := tempMkdir(t)
-       defer os.RemoveAll(testDir)
-
-       testFile := filepath.Join(testDir, "TestFsnotifySeq.testfile")
-
-       addWatch(t, watcher, testDir)
-
-       // Receive events on the event channel on a separate goroutine
-       eventstream := watcher.Events
-       var createReceived, modifyReceived, deleteReceived counter
-       done := make(chan bool)
-       go func() {
-               for event := range eventstream {
-                       // Only count relevant events
-                       if event.Name == filepath.Clean(testDir) || event.Name == filepath.Clean(testFile) {
-                               t.Logf("event received: %s", event)
-                               if event.Op&Remove == Remove {
-                                       deleteReceived.increment()
-                               }
-                               if event.Op&Create == Create {
-                                       createReceived.increment()
-                               }
-                               if event.Op&Write == Write {
-                                       modifyReceived.increment()
-                               }
-                       } else {
-                               t.Logf("unexpected event received: %s", event)
-                       }
-               }
-               done <- true
-       }()
-
-       // Create a file
-       // This should add at least one event to the fsnotify event queue
-       var f *os.File
-       f, err := os.OpenFile(testFile, os.O_WRONLY|os.O_CREATE, 0666)
-       if err != nil {
-               t.Fatalf("creating test file failed: %s", err)
-       }
-       f.Sync()
-
-       time.Sleep(time.Millisecond)
-       f.WriteString("data")
-       f.Sync()
-       f.Close()
-
-       time.Sleep(50 * time.Millisecond) // give system time to sync write change before delete
-
-       os.Remove(testFile)
-
-       time.Sleep(50 * time.Millisecond) // give system time to sync write change before delete
-
-       // Recreate the file
-       f, err = os.OpenFile(testFile, os.O_WRONLY|os.O_CREATE, 0666)
-       if err != nil {
-               t.Fatalf("creating test file failed: %s", err)
-       }
-       f.Close()
-       time.Sleep(50 * time.Millisecond) // give system time to sync write change before delete
-
-       // Modify
-       f, err = os.OpenFile(testFile, os.O_WRONLY, 0666)
-       if err != nil {
-               t.Fatalf("creating test file failed: %s", err)
-       }
-       f.Sync()
-
-       time.Sleep(time.Millisecond)
-       f.WriteString("data")
-       f.Sync()
-       f.Close()
-
-       time.Sleep(50 * time.Millisecond) // give system time to sync write change before delete
-
-       // Modify
-       f, err = os.OpenFile(testFile, os.O_WRONLY, 0666)
-       if err != nil {
-               t.Fatalf("creating test file failed: %s", err)
-       }
-       f.Sync()
-
-       time.Sleep(time.Millisecond)
-       f.WriteString("data")
-       f.Sync()
-       f.Close()
-
-       time.Sleep(50 * time.Millisecond) // give system time to sync write change before delete
-
-       // We expect this event to be received almost immediately, but let's wait 500 ms to be sure
-       time.Sleep(500 * time.Millisecond)
-       cReceived := createReceived.value()
-       if cReceived != 2 {
-               t.Fatalf("incorrect number of create events received after 500 ms (%d vs %d)", cReceived, 2)
-       }
-       mReceived := modifyReceived.value()
-       if mReceived < 3 {
-               t.Fatalf("incorrect number of modify events received after 500 ms (%d vs atleast %d)", mReceived, 3)
-       }
-       dReceived := deleteReceived.value()
-       if dReceived != 1 {
-               t.Fatalf("incorrect number of rename+delete events received after 500 ms (%d vs %d)", dReceived, 1)
-       }
-
-       // Try closing the fsnotify instance
-       t.Log("calling Close()")
-       watcher.Close()
-       t.Log("waiting for the event channel to become closed...")
-       select {
-       case <-done:
-               t.Log("event channel closed")
-       case <-time.After(2 * time.Second):
-               t.Fatal("event stream was not closed after 2 seconds")
-       }
-}
-
-func TestFsnotifyDirOnly(t *testing.T) {
-       watcher := newWatcher(t)
-
-       // Create directory to watch
-       testDir := tempMkdir(t)
-       defer os.RemoveAll(testDir)
-
-       // Create a file before watching directory
-       // This should NOT add any events to the fsnotify event queue
-       testFileAlreadyExists := filepath.Join(testDir, "TestFsnotifyEventsExisting.testfile")
-       {
-               var f *os.File
-               f, err := os.OpenFile(testFileAlreadyExists, os.O_WRONLY|os.O_CREATE, 0666)
-               if err != nil {
-                       t.Fatalf("creating test file failed: %s", err)
-               }
-               f.Sync()
-               f.Close()
-       }
-
-       addWatch(t, watcher, testDir)
-
-       // Receive errors on the error channel on a separate goroutine
-       go func() {
-               for err := range watcher.Errors {
-                       t.Fatalf("error received: %s", err)
-               }
-       }()
-
-       testFile := filepath.Join(testDir, "TestFsnotifyDirOnly.testfile")
-
-       // Receive events on the event channel on a separate goroutine
-       eventstream := watcher.Events
-       var createReceived, modifyReceived, deleteReceived counter
-       done := make(chan bool)
-       go func() {
-               for event := range eventstream {
-                       // Only count relevant events
-                       if event.Name == filepath.Clean(testDir) || event.Name == filepath.Clean(testFile) || event.Name == filepath.Clean(testFileAlreadyExists) {
-                               t.Logf("event received: %s", event)
-                               if event.Op&Remove == Remove {
-                                       deleteReceived.increment()
-                               }
-                               if event.Op&Write == Write {
-                                       modifyReceived.increment()
-                               }
-                               if event.Op&Create == Create {
-                                       createReceived.increment()
-                               }
-                       } else {
-                               t.Logf("unexpected event received: %s", event)
-                       }
-               }
-               done <- true
-       }()
-
-       // Create a file
-       // This should add at least one event to the fsnotify event queue
-       var f *os.File
-       f, err := os.OpenFile(testFile, os.O_WRONLY|os.O_CREATE, 0666)
-       if err != nil {
-               t.Fatalf("creating test file failed: %s", err)
-       }
-       f.Sync()
-
-       time.Sleep(time.Millisecond)
-       f.WriteString("data")
-       f.Sync()
-       f.Close()
-
-       time.Sleep(50 * time.Millisecond) // give system time to sync write change before delete
-
-       os.Remove(testFile)
-       os.Remove(testFileAlreadyExists)
-
-       // We expect this event to be received almost immediately, but let's wait 500 ms to be sure
-       time.Sleep(500 * time.Millisecond)
-       cReceived := createReceived.value()
-       if cReceived != 1 {
-               t.Fatalf("incorrect number of create events received after 500 ms (%d vs %d)", cReceived, 1)
-       }
-       mReceived := modifyReceived.value()
-       if mReceived != 1 {
-               t.Fatalf("incorrect number of modify events received after 500 ms (%d vs %d)", mReceived, 1)
-       }
-       dReceived := deleteReceived.value()
-       if dReceived != 2 {
-               t.Fatalf("incorrect number of delete events received after 500 ms (%d vs %d)", dReceived, 2)
-       }
-
-       // Try closing the fsnotify instance
-       t.Log("calling Close()")
-       watcher.Close()
-       t.Log("waiting for the event channel to become closed...")
-       select {
-       case <-done:
-               t.Log("event channel closed")
-       case <-time.After(2 * time.Second):
-               t.Fatal("event stream was not closed after 2 seconds")
-       }
-}
-
-func TestFsnotifyDeleteWatchedDir(t *testing.T) {
-       watcher := newWatcher(t)
-       defer watcher.Close()
-
-       // Create directory to watch
-       testDir := tempMkdir(t)
-       defer os.RemoveAll(testDir)
-
-       // Create a file before watching directory
-       testFileAlreadyExists := filepath.Join(testDir, "TestFsnotifyEventsExisting.testfile")
-       {
-               var f *os.File
-               f, err := os.OpenFile(testFileAlreadyExists, os.O_WRONLY|os.O_CREATE, 0666)
-               if err != nil {
-                       t.Fatalf("creating test file failed: %s", err)
-               }
-               f.Sync()
-               f.Close()
-       }
-
-       addWatch(t, watcher, testDir)
-
-       // Add a watch for testFile
-       addWatch(t, watcher, testFileAlreadyExists)
-
-       // Receive errors on the error channel on a separate goroutine
-       go func() {
-               for err := range watcher.Errors {
-                       t.Fatalf("error received: %s", err)
-               }
-       }()
-
-       // Receive events on the event channel on a separate goroutine
-       eventstream := watcher.Events
-       var deleteReceived counter
-       go func() {
-               for event := range eventstream {
-                       // Only count relevant events
-                       if event.Name == filepath.Clean(testDir) || event.Name == filepath.Clean(testFileAlreadyExists) {
-                               t.Logf("event received: %s", event)
-                               if event.Op&Remove == Remove {
-                                       deleteReceived.increment()
-                               }
-                       } else {
-                               t.Logf("unexpected event received: %s", event)
-                       }
-               }
-       }()
-
-       os.RemoveAll(testDir)
-
-       // We expect this event to be received almost immediately, but let's wait 500 ms to be sure
-       time.Sleep(500 * time.Millisecond)
-       dReceived := deleteReceived.value()
-       if dReceived < 2 {
-               t.Fatalf("did not receive at least %d delete events, received %d after 500 ms", 2, dReceived)
-       }
-}
-
-func TestFsnotifySubDir(t *testing.T) {
-       watcher := newWatcher(t)
-
-       // Create directory to watch
-       testDir := tempMkdir(t)
-       defer os.RemoveAll(testDir)
-
-       testFile1 := filepath.Join(testDir, "TestFsnotifyFile1.testfile")
-       testSubDir := filepath.Join(testDir, "sub")
-       testSubDirFile := filepath.Join(testDir, "sub/TestFsnotifyFile1.testfile")
-
-       // Receive errors on the error channel on a separate goroutine
-       go func() {
-               for err := range watcher.Errors {
-                       t.Fatalf("error received: %s", err)
-               }
-       }()
-
-       // Receive events on the event channel on a separate goroutine
-       eventstream := watcher.Events
-       var createReceived, deleteReceived counter
-       done := make(chan bool)
-       go func() {
-               for event := range eventstream {
-                       // Only count relevant events
-                       if event.Name == filepath.Clean(testDir) || event.Name == filepath.Clean(testSubDir) || event.Name == filepath.Clean(testFile1) {
-                               t.Logf("event received: %s", event)
-                               if event.Op&Create == Create {
-                                       createReceived.increment()
-                               }
-                               if event.Op&Remove == Remove {
-                                       deleteReceived.increment()
-                               }
-                       } else {
-                               t.Logf("unexpected event received: %s", event)
-                       }
-               }
-               done <- true
-       }()
-
-       addWatch(t, watcher, testDir)
-
-       // Create sub-directory
-       if err := os.Mkdir(testSubDir, 0777); err != nil {
-               t.Fatalf("failed to create test sub-directory: %s", err)
-       }
-
-       // Create a file
-       var f *os.File
-       f, err := os.OpenFile(testFile1, os.O_WRONLY|os.O_CREATE, 0666)
-       if err != nil {
-               t.Fatalf("creating test file failed: %s", err)
-       }
-       f.Sync()
-       f.Close()
-
-       // Create a file (Should not see this! we are not watching subdir)
-       var fs *os.File
-       fs, err = os.OpenFile(testSubDirFile, os.O_WRONLY|os.O_CREATE, 0666)
-       if err != nil {
-               t.Fatalf("creating test file failed: %s", err)
-       }
-       fs.Sync()
-       fs.Close()
-
-       time.Sleep(200 * time.Millisecond)
-
-       // Make sure receive deletes for both file and sub-directory
-       os.RemoveAll(testSubDir)
-       os.Remove(testFile1)
-
-       // We expect this event to be received almost immediately, but let's wait 500 ms to be sure
-       time.Sleep(500 * time.Millisecond)
-       cReceived := createReceived.value()
-       if cReceived != 2 {
-               t.Fatalf("incorrect number of create events received after 500 ms (%d vs %d)", cReceived, 2)
-       }
-       dReceived := deleteReceived.value()
-       if dReceived != 2 {
-               t.Fatalf("incorrect number of delete events received after 500 ms (%d vs %d)", dReceived, 2)
-       }
-
-       // Try closing the fsnotify instance
-       t.Log("calling Close()")
-       watcher.Close()
-       t.Log("waiting for the event channel to become closed...")
-       select {
-       case <-done:
-               t.Log("event channel closed")
-       case <-time.After(2 * time.Second):
-               t.Fatal("event stream was not closed after 2 seconds")
-       }
-}
-
-func TestFsnotifyRename(t *testing.T) {
-       watcher := newWatcher(t)
-
-       // Create directory to watch
-       testDir := tempMkdir(t)
-       defer os.RemoveAll(testDir)
-
-       addWatch(t, watcher, testDir)
-
-       // Receive errors on the error channel on a separate goroutine
-       go func() {
-               for err := range watcher.Errors {
-                       t.Fatalf("error received: %s", err)
-               }
-       }()
-
-       testFile := filepath.Join(testDir, "TestFsnotifyEvents.testfile")
-       testFileRenamed := filepath.Join(testDir, "TestFsnotifyEvents.testfileRenamed")
-
-       // Receive events on the event channel on a separate goroutine
-       eventstream := watcher.Events
-       var renameReceived counter
-       done := make(chan bool)
-       go func() {
-               for event := range eventstream {
-                       // Only count relevant events
-                       if event.Name == filepath.Clean(testDir) || event.Name == filepath.Clean(testFile) || event.Name == filepath.Clean(testFileRenamed) {
-                               if event.Op&Rename == Rename {
-                                       renameReceived.increment()
-                               }
-                               t.Logf("event received: %s", event)
-                       } else {
-                               t.Logf("unexpected event received: %s", event)
-                       }
-               }
-               done <- true
-       }()
-
-       // Create a file
-       // This should add at least one event to the fsnotify event queue
-       var f *os.File
-       f, err := os.OpenFile(testFile, os.O_WRONLY|os.O_CREATE, 0666)
-       if err != nil {
-               t.Fatalf("creating test file failed: %s", err)
-       }
-       f.Sync()
-
-       f.WriteString("data")
-       f.Sync()
-       f.Close()
-
-       // Add a watch for testFile
-       addWatch(t, watcher, testFile)
-
-       if err := testRename(testFile, testFileRenamed); err != nil {
-               t.Fatalf("rename failed: %s", err)
-       }
-
-       // We expect this event to be received almost immediately, but let's wait 500 ms to be sure
-       time.Sleep(500 * time.Millisecond)
-       if renameReceived.value() == 0 {
-               t.Fatal("fsnotify rename events have not been received after 500 ms")
-       }
-
-       // Try closing the fsnotify instance
-       t.Log("calling Close()")
-       watcher.Close()
-       t.Log("waiting for the event channel to become closed...")
-       select {
-       case <-done:
-               t.Log("event channel closed")
-       case <-time.After(2 * time.Second):
-               t.Fatal("event stream was not closed after 2 seconds")
-       }
-
-       os.Remove(testFileRenamed)
-}
-
-func TestFsnotifyRenameToCreate(t *testing.T) {
-       watcher := newWatcher(t)
-
-       // Create directory to watch
-       testDir := tempMkdir(t)
-       defer os.RemoveAll(testDir)
-
-       // Create directory to get file
-       testDirFrom := tempMkdir(t)
-       defer os.RemoveAll(testDirFrom)
-
-       addWatch(t, watcher, testDir)
-
-       // Receive errors on the error channel on a separate goroutine
-       go func() {
-               for err := range watcher.Errors {
-                       t.Fatalf("error received: %s", err)
-               }
-       }()
-
-       testFile := filepath.Join(testDirFrom, "TestFsnotifyEvents.testfile")
-       testFileRenamed := filepath.Join(testDir, "TestFsnotifyEvents.testfileRenamed")
-
-       // Receive events on the event channel on a separate goroutine
-       eventstream := watcher.Events
-       var createReceived counter
-       done := make(chan bool)
-       go func() {
-               for event := range eventstream {
-                       // Only count relevant events
-                       if event.Name == filepath.Clean(testDir) || event.Name == filepath.Clean(testFile) || event.Name == filepath.Clean(testFileRenamed) {
-                               if event.Op&Create == Create {
-                                       createReceived.increment()
-                               }
-                               t.Logf("event received: %s", event)
-                       } else {
-                               t.Logf("unexpected event received: %s", event)
-                       }
-               }
-               done <- true
-       }()
-
-       // Create a file
-       // This should add at least one event to the fsnotify event queue
-       var f *os.File
-       f, err := os.OpenFile(testFile, os.O_WRONLY|os.O_CREATE, 0666)
-       if err != nil {
-               t.Fatalf("creating test file failed: %s", err)
-       }
-       f.Sync()
-       f.Close()
-
-       if err := testRename(testFile, testFileRenamed); err != nil {
-               t.Fatalf("rename failed: %s", err)
-       }
-
-       // We expect this event to be received almost immediately, but let's wait 500 ms to be sure
-       time.Sleep(500 * time.Millisecond)
-       if createReceived.value() == 0 {
-               t.Fatal("fsnotify create events have not been received after 500 ms")
-       }
-
-       // Try closing the fsnotify instance
-       t.Log("calling Close()")
-       watcher.Close()
-       t.Log("waiting for the event channel to become closed...")
-       select {
-       case <-done:
-               t.Log("event channel closed")
-       case <-time.After(2 * time.Second):
-               t.Fatal("event stream was not closed after 2 seconds")
-       }
-
-       os.Remove(testFileRenamed)
-}
-
-func TestFsnotifyRenameToOverwrite(t *testing.T) {
-       switch runtime.GOOS {
-       case "plan9", "windows":
-               t.Skipf("skipping test on %q (os.Rename over existing file does not create event).", runtime.GOOS)
-       }
-
-       watcher := newWatcher(t)
-
-       // Create directory to watch
-       testDir := tempMkdir(t)
-       defer os.RemoveAll(testDir)
-
-       // Create directory to get file
-       testDirFrom := tempMkdir(t)
-       defer os.RemoveAll(testDirFrom)
-
-       testFile := filepath.Join(testDirFrom, "TestFsnotifyEvents.testfile")
-       testFileRenamed := filepath.Join(testDir, "TestFsnotifyEvents.testfileRenamed")
-
-       // Create a file
-       var fr *os.File
-       fr, err := os.OpenFile(testFileRenamed, os.O_WRONLY|os.O_CREATE, 0666)
-       if err != nil {
-               t.Fatalf("creating test file failed: %s", err)
-       }
-       fr.Sync()
-       fr.Close()
-
-       addWatch(t, watcher, testDir)
-
-       // Receive errors on the error channel on a separate goroutine
-       go func() {
-               for err := range watcher.Errors {
-                       t.Fatalf("error received: %s", err)
-               }
-       }()
-
-       // Receive events on the event channel on a separate goroutine
-       eventstream := watcher.Events
-       var eventReceived counter
-       done := make(chan bool)
-       go func() {
-               for event := range eventstream {
-                       // Only count relevant events
-                       if event.Name == filepath.Clean(testFileRenamed) {
-                               eventReceived.increment()
-                               t.Logf("event received: %s", event)
-                       } else {
-                               t.Logf("unexpected event received: %s", event)
-                       }
-               }
-               done <- true
-       }()
-
-       // Create a file
-       // This should add at least one event to the fsnotify event queue
-       var f *os.File
-       f, err = os.OpenFile(testFile, os.O_WRONLY|os.O_CREATE, 0666)
-       if err != nil {
-               t.Fatalf("creating test file failed: %s", err)
-       }
-       f.Sync()
-       f.Close()
-
-       if err := testRename(testFile, testFileRenamed); err != nil {
-               t.Fatalf("rename failed: %s", err)
-       }
-
-       // We expect this event to be received almost immediately, but let's wait 500 ms to be sure
-       time.Sleep(500 * time.Millisecond)
-       if eventReceived.value() == 0 {
-               t.Fatal("fsnotify events have not been received after 500 ms")
-       }
-
-       // Try closing the fsnotify instance
-       t.Log("calling Close()")
-       watcher.Close()
-       t.Log("waiting for the event channel to become closed...")
-       select {
-       case <-done:
-               t.Log("event channel closed")
-       case <-time.After(2 * time.Second):
-               t.Fatal("event stream was not closed after 2 seconds")
-       }
-
-       os.Remove(testFileRenamed)
-}
-
-func TestRemovalOfWatch(t *testing.T) {
-       // Create directory to watch
-       testDir := tempMkdir(t)
-       defer os.RemoveAll(testDir)
-
-       // Create a file before watching directory
-       testFileAlreadyExists := filepath.Join(testDir, "TestFsnotifyEventsExisting.testfile")
-       {
-               var f *os.File
-               f, err := os.OpenFile(testFileAlreadyExists, os.O_WRONLY|os.O_CREATE, 0666)
-               if err != nil {
-                       t.Fatalf("creating test file failed: %s", err)
-               }
-               f.Sync()
-               f.Close()
-       }
-
-       watcher := newWatcher(t)
-       defer watcher.Close()
-
-       addWatch(t, watcher, testDir)
-       if err := watcher.Remove(testDir); err != nil {
-               t.Fatalf("Could not remove the watch: %v\n", err)
-       }
-
-       go func() {
-               select {
-               case ev := <-watcher.Events:
-                       t.Fatalf("We received event: %v\n", ev)
-               case <-time.After(500 * time.Millisecond):
-                       t.Log("No event received, as expected.")
-               }
-       }()
-
-       time.Sleep(200 * time.Millisecond)
-       // Modify the file outside of the watched dir
-       f, err := os.Open(testFileAlreadyExists)
-       if err != nil {
-               t.Fatalf("Open test file failed: %s", err)
-       }
-       f.WriteString("data")
-       f.Sync()
-       f.Close()
-       if err := os.Chmod(testFileAlreadyExists, 0700); err != nil {
-               t.Fatalf("chmod failed: %s", err)
-       }
-       time.Sleep(400 * time.Millisecond)
-}
-
-func TestFsnotifyAttrib(t *testing.T) {
-       if runtime.GOOS == "windows" {
-               t.Skip("attributes don't work on Windows.")
-       }
-
-       watcher := newWatcher(t)
-
-       // Create directory to watch
-       testDir := tempMkdir(t)
-       defer os.RemoveAll(testDir)
-
-       // Receive errors on the error channel on a separate goroutine
-       go func() {
-               for err := range watcher.Errors {
-                       t.Fatalf("error received: %s", err)
-               }
-       }()
-
-       testFile := filepath.Join(testDir, "TestFsnotifyAttrib.testfile")
-
-       // Receive events on the event channel on a separate goroutine
-       eventstream := watcher.Events
-       // The modifyReceived counter counts IsModify events that are not IsAttrib,
-       // and the attribReceived counts IsAttrib events (which are also IsModify as
-       // a consequence).
-       var modifyReceived counter
-       var attribReceived counter
-       done := make(chan bool)
-       go func() {
-               for event := range eventstream {
-                       // Only count relevant events
-                       if event.Name == filepath.Clean(testDir) || event.Name == filepath.Clean(testFile) {
-                               if event.Op&Write == Write {
-                                       modifyReceived.increment()
-                               }
-                               if event.Op&Chmod == Chmod {
-                                       attribReceived.increment()
-                               }
-                               t.Logf("event received: %s", event)
-                       } else {
-                               t.Logf("unexpected event received: %s", event)
-                       }
-               }
-               done <- true
-       }()
-
-       // Create a file
-       // This should add at least one event to the fsnotify event queue
-       var f *os.File
-       f, err := os.OpenFile(testFile, os.O_WRONLY|os.O_CREATE, 0666)
-       if err != nil {
-               t.Fatalf("creating test file failed: %s", err)
-       }
-       f.Sync()
-
-       f.WriteString("data")
-       f.Sync()
-       f.Close()
-
-       // Add a watch for testFile
-       addWatch(t, watcher, testFile)
-
-       if err := os.Chmod(testFile, 0700); err != nil {
-               t.Fatalf("chmod failed: %s", err)
-       }
-
-       // We expect this event to be received almost immediately, but let's wait 500 ms to be sure
-       // Creating/writing a file changes also the mtime, so IsAttrib should be set to true here
-       time.Sleep(500 * time.Millisecond)
-       if modifyReceived.value() != 0 {
-               t.Fatal("received an unexpected modify event when creating a test file")
-       }
-       if attribReceived.value() == 0 {
-               t.Fatal("fsnotify attribute events have not received after 500 ms")
-       }
-
-       // Modifying the contents of the file does not set the attrib flag (although eg. the mtime
-       // might have been modified).
-       modifyReceived.reset()
-       attribReceived.reset()
-
-       f, err = os.OpenFile(testFile, os.O_WRONLY, 0)
-       if err != nil {
-               t.Fatalf("reopening test file failed: %s", err)
-       }
-
-       f.WriteString("more data")
-       f.Sync()
-       f.Close()
-
-       time.Sleep(500 * time.Millisecond)
-
-       if modifyReceived.value() != 1 {
-               t.Fatal("didn't receive a modify event after changing test file contents")
-       }
-
-       if attribReceived.value() != 0 {
-               t.Fatal("did receive an unexpected attrib event after changing test file contents")
-       }
-
-       modifyReceived.reset()
-       attribReceived.reset()
-
-       // Doing a chmod on the file should trigger an event with the "attrib" flag set (the contents
-       // of the file are not changed though)
-       if err := os.Chmod(testFile, 0600); err != nil {
-               t.Fatalf("chmod failed: %s", err)
-       }
-
-       time.Sleep(500 * time.Millisecond)
-
-       if attribReceived.value() != 1 {
-               t.Fatal("didn't receive an attribute change after 500ms")
-       }
-
-       // Try closing the fsnotify instance
-       t.Log("calling Close()")
-       watcher.Close()
-       t.Log("waiting for the event channel to become closed...")
-       select {
-       case <-done:
-               t.Log("event channel closed")
-       case <-time.After(1e9):
-               t.Fatal("event stream was not closed after 1 second")
-       }
-
-       os.Remove(testFile)
-}
-
-func TestFsnotifyClose(t *testing.T) {
-       watcher := newWatcher(t)
-       watcher.Close()
-
-       var done int32
-       go func() {
-               watcher.Close()
-               atomic.StoreInt32(&done, 1)
-       }()
-
-       time.Sleep(50e6) // 50 ms
-       if atomic.LoadInt32(&done) == 0 {
-               t.Fatal("double Close() test failed: second Close() call didn't return")
-       }
-
-       testDir := tempMkdir(t)
-       defer os.RemoveAll(testDir)
-
-       if err := watcher.Add(testDir); err == nil {
-               t.Fatal("expected error on Watch() after Close(), got nil")
-       }
-}
-
-func TestFsnotifyFakeSymlink(t *testing.T) {
-       if runtime.GOOS == "windows" {
-               t.Skip("symlinks don't work on Windows.")
-       }
-
-       watcher := newWatcher(t)
-
-       // Create directory to watch
-       testDir := tempMkdir(t)
-       defer os.RemoveAll(testDir)
-
-       var errorsReceived counter
-       // Receive errors on the error channel on a separate goroutine
-       go func() {
-               for errors := range watcher.Errors {
-                       t.Logf("Received error: %s", errors)
-                       errorsReceived.increment()
-               }
-       }()
-
-       // Count the CREATE events received
-       var createEventsReceived, otherEventsReceived counter
-       go func() {
-               for ev := range watcher.Events {
-                       t.Logf("event received: %s", ev)
-                       if ev.Op&Create == Create {
-                               createEventsReceived.increment()
-                       } else {
-                               otherEventsReceived.increment()
-                       }
-               }
-       }()
-
-       addWatch(t, watcher, testDir)
-
-       if err := os.Symlink(filepath.Join(testDir, "zzz"), filepath.Join(testDir, "zzznew")); err != nil {
-               t.Fatalf("Failed to create bogus symlink: %s", err)
-       }
-       t.Logf("Created bogus symlink")
-
-       // We expect this event to be received almost immediately, but let's wait 500 ms to be sure
-       time.Sleep(500 * time.Millisecond)
-
-       // Should not be error, just no events for broken links (watching nothing)
-       if errorsReceived.value() > 0 {
-               t.Fatal("fsnotify errors have been received.")
-       }
-       if otherEventsReceived.value() > 0 {
-               t.Fatal("fsnotify other events received on the broken link")
-       }
-
-       // Except for 1 create event (for the link itself)
-       if createEventsReceived.value() == 0 {
-               t.Fatal("fsnotify create events were not received after 500 ms")
-       }
-       if createEventsReceived.value() > 1 {
-               t.Fatal("fsnotify more create events received than expected")
-       }
-
-       // Try closing the fsnotify instance
-       t.Log("calling Close()")
-       watcher.Close()
-}
-
-func TestCyclicSymlink(t *testing.T) {
-       if runtime.GOOS == "windows" {
-               t.Skip("symlinks don't work on Windows.")
-       }
-
-       watcher := newWatcher(t)
-
-       testDir := tempMkdir(t)
-       defer os.RemoveAll(testDir)
-
-       link := path.Join(testDir, "link")
-       if err := os.Symlink(".", link); err != nil {
-               t.Fatalf("could not make symlink: %v", err)
-       }
-       addWatch(t, watcher, testDir)
-
-       var createEventsReceived counter
-       go func() {
-               for ev := range watcher.Events {
-                       if ev.Op&Create == Create {
-                               createEventsReceived.increment()
-                       }
-               }
-       }()
-
-       if err := os.Remove(link); err != nil {
-               t.Fatalf("Error removing link: %v", err)
-       }
-
-       // It would be nice to be able to expect a delete event here, but kqueue has
-       // no way for us to get events on symlinks themselves, because opening them
-       // opens an fd to the file to which they point.
-
-       if err := ioutil.WriteFile(link, []byte("foo"), 0700); err != nil {
-               t.Fatalf("could not make symlink: %v", err)
-       }
-
-       // We expect this event to be received almost immediately, but let's wait 500 ms to be sure
-       time.Sleep(500 * time.Millisecond)
-
-       if got := createEventsReceived.value(); got == 0 {
-               t.Errorf("want at least 1 create event got %v", got)
-       }
-
-       watcher.Close()
-}
-
-// TestConcurrentRemovalOfWatch tests that concurrent calls to RemoveWatch do not race.
-// See https://codereview.appspot.com/103300045/
-// go test -test.run=TestConcurrentRemovalOfWatch -test.cpu=1,1,1,1,1 -race
-func TestConcurrentRemovalOfWatch(t *testing.T) {
-       if runtime.GOOS != "darwin" {
-               t.Skip("regression test for race only present on darwin")
-       }
-
-       // Create directory to watch
-       testDir := tempMkdir(t)
-       defer os.RemoveAll(testDir)
-
-       // Create a file before watching directory
-       testFileAlreadyExists := filepath.Join(testDir, "TestFsnotifyEventsExisting.testfile")
-       {
-               var f *os.File
-               f, err := os.OpenFile(testFileAlreadyExists, os.O_WRONLY|os.O_CREATE, 0666)
-               if err != nil {
-                       t.Fatalf("creating test file failed: %s", err)
-               }
-               f.Sync()
-               f.Close()
-       }
-
-       watcher := newWatcher(t)
-       defer watcher.Close()
-
-       addWatch(t, watcher, testDir)
-
-       // Test that RemoveWatch can be invoked concurrently, with no data races.
-       removed1 := make(chan struct{})
-       go func() {
-               defer close(removed1)
-               watcher.Remove(testDir)
-       }()
-       removed2 := make(chan struct{})
-       go func() {
-               close(removed2)
-               watcher.Remove(testDir)
-       }()
-       <-removed1
-       <-removed2
-}
-
-func TestClose(t *testing.T) {
-       // Regression test for #59 bad file descriptor from Close
-       testDir := tempMkdir(t)
-       defer os.RemoveAll(testDir)
-
-       watcher := newWatcher(t)
-       if err := watcher.Add(testDir); err != nil {
-               t.Fatalf("Expected no error on Add, got %v", err)
-       }
-       err := watcher.Close()
-       if err != nil {
-               t.Fatalf("Expected no error on Close, got %v.", err)
-       }
-}
-
-// TestRemoveWithClose tests if one can handle Remove events and, at the same
-// time, close Watcher object without any data races.
-func TestRemoveWithClose(t *testing.T) {
-       testDir := tempMkdir(t)
-       defer os.RemoveAll(testDir)
-
-       const fileN = 200
-       tempFiles := make([]string, 0, fileN)
-       for i := 0; i < fileN; i++ {
-               tempFiles = append(tempFiles, tempMkFile(t, testDir))
-       }
-       watcher := newWatcher(t)
-       if err := watcher.Add(testDir); err != nil {
-               t.Fatalf("Expected no error on Add, got %v", err)
-       }
-       startC, stopC := make(chan struct{}), make(chan struct{})
-       errC := make(chan error)
-       go func() {
-               for {
-                       select {
-                       case <-watcher.Errors:
-                       case <-watcher.Events:
-                       case <-stopC:
-                               return
-                       }
-               }
-       }()
-       go func() {
-               <-startC
-               for _, fileName := range tempFiles {
-                       os.Remove(fileName)
-               }
-       }()
-       go func() {
-               <-startC
-               errC <- watcher.Close()
-       }()
-       close(startC)
-       defer close(stopC)
-       if err := <-errC; err != nil {
-               t.Fatalf("Expected no error on Close, got %v.", err)
-       }
-}
-
-func testRename(file1, file2 string) error {
-       switch runtime.GOOS {
-       case "windows", "plan9":
-               return os.Rename(file1, file2)
-       default:
-               cmd := exec.Command("mv", file1, file2)
-               return cmd.Run()
-       }
-}
diff --git a/vendor/github.com/google/gopacket/afpacket/afpacket.go b/vendor/github.com/google/gopacket/afpacket/afpacket.go
deleted file mode 100644 (file)
index 13937c1..0000000
+++ /dev/null
@@ -1,476 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// +build linux
-
-// Package afpacket provides Go bindings for MMap'd AF_PACKET socket reading.
-package afpacket
-
-// Couldn't have done this without:
-// http://lxr.free-electrons.com/source/Documentation/networking/packet_mmap.txt
-// http://codemonkeytips.blogspot.co.uk/2011/07/asynchronous-packet-socket-reading-with.html
-
-import (
-       "errors"
-       "fmt"
-       "net"
-       "runtime"
-       "sync"
-       "sync/atomic"
-       "time"
-       "unsafe"
-
-       "golang.org/x/net/bpf"
-       "golang.org/x/sys/unix"
-
-       "github.com/google/gopacket"
-)
-
-/*
-#include <linux/if_packet.h>  // AF_PACKET, sockaddr_ll
-#include <linux/if_ether.h>  // ETH_P_ALL
-#include <sys/socket.h>  // socket()
-#include <unistd.h>  // close()
-#include <arpa/inet.h>  // htons()
-#include <sys/mman.h>  // mmap(), munmap()
-#include <poll.h>  // poll()
-*/
-import "C"
-
-var pageSize = unix.Getpagesize()
-var tpacketAlignment = uint(C.TPACKET_ALIGNMENT)
-
-// ErrPoll returned by poll
-var ErrPoll = errors.New("packet poll failed")
-
-// ErrTimeout returned on poll timeout
-var ErrTimeout = errors.New("packet poll timeout expired")
-
-func tpacketAlign(v int) int {
-       return int((uint(v) + tpacketAlignment - 1) & ((^tpacketAlignment) - 1))
-}
-
-// Stats is a set of counters detailing the work TPacket has done so far.
-type Stats struct {
-       // Packets is the total number of packets returned to the caller.
-       Packets int64
-       // Polls is the number of blocking syscalls made waiting for packets.
-       // This should always be <= Packets, since with TPacket one syscall
-       // can (and often does) return many results.
-       Polls int64
-}
-
-// SocketStats is a struct where socket stats are stored
-type SocketStats C.struct_tpacket_stats
-
-// SocketStatsV3 is a struct where socket stats for TPacketV3 are stored
-type SocketStatsV3 C.struct_tpacket_stats_v3
-
-// TPacket implements packet receiving for Linux AF_PACKET versions 1, 2, and 3.
-type TPacket struct {
-       // fd is the C file descriptor.
-       fd int
-       // ring points to the memory space of the ring buffer shared by tpacket and the kernel.
-       ring []byte
-       // rawring is the unsafe pointer that we use to poll for packets
-       rawring unsafe.Pointer
-       // opts contains read-only options for the TPacket object.
-       opts options
-       mu   sync.Mutex // guards below
-       // offset is the offset into the ring of the current header.
-       offset int
-       // current is the current header.
-       current header
-       // pollset is used by TPacket for its poll() call.
-       pollset unix.PollFd
-       // shouldReleasePacket is set to true whenever we return packet data, to make sure we remember to release that data back to the kernel.
-       shouldReleasePacket bool
-       // headerNextNeeded is set to true when header need to move to the next packet. No need to move it case of poll error.
-       headerNextNeeded bool
-       // tpVersion is the version of TPacket actually in use, set by setRequestedTPacketVersion.
-       tpVersion OptTPacketVersion
-       // Hackity hack hack hack.  We need to return a pointer to the header with
-       // getTPacketHeader, and we don't want to allocate a v3wrapper every time,
-       // so we leave it in the TPacket object and return a pointer to it.
-       v3 v3wrapper
-
-       statsMu sync.Mutex // guards stats below
-       // stats is simple statistics on TPacket's run.
-       stats Stats
-       // socketStats contains stats from the socket
-       socketStats SocketStats
-       // same as socketStats, but with an extra field freeze_q_cnt
-       socketStatsV3 SocketStatsV3
-}
-
-var _ gopacket.ZeroCopyPacketDataSource = &TPacket{}
-
-// bindToInterface binds the TPacket socket to a particular named interface.
-func (h *TPacket) bindToInterface(ifaceName string) error {
-       ifIndex := 0
-       // An empty string here means to listen to all interfaces
-       if ifaceName != "" {
-               iface, err := net.InterfaceByName(ifaceName)
-               if err != nil {
-                       return fmt.Errorf("InterfaceByName: %v", err)
-               }
-               ifIndex = iface.Index
-       }
-       s := &unix.SockaddrLinklayer{
-               Protocol: htons(uint16(unix.ETH_P_ALL)),
-               Ifindex:  ifIndex,
-       }
-       return unix.Bind(h.fd, s)
-}
-
-// setTPacketVersion asks the kernel to set TPacket to a particular version, and returns an error on failure.
-func (h *TPacket) setTPacketVersion(version OptTPacketVersion) error {
-       if err := unix.SetsockoptInt(h.fd, unix.SOL_PACKET, unix.PACKET_VERSION, int(version)); err != nil {
-               return fmt.Errorf("setsockopt packet_version: %v", err)
-       }
-       return nil
-}
-
-// setRequestedTPacketVersion tries to set TPacket to the requested version or versions.
-func (h *TPacket) setRequestedTPacketVersion() error {
-       switch {
-       case (h.opts.version == TPacketVersionHighestAvailable || h.opts.version == TPacketVersion3) && h.setTPacketVersion(TPacketVersion3) == nil:
-               h.tpVersion = TPacketVersion3
-       case (h.opts.version == TPacketVersionHighestAvailable || h.opts.version == TPacketVersion2) && h.setTPacketVersion(TPacketVersion2) == nil:
-               h.tpVersion = TPacketVersion2
-       case (h.opts.version == TPacketVersionHighestAvailable || h.opts.version == TPacketVersion1) && h.setTPacketVersion(TPacketVersion1) == nil:
-               h.tpVersion = TPacketVersion1
-       default:
-               return errors.New("no known tpacket versions work on this machine")
-       }
-       return nil
-}
-
-// setUpRing sets up the shared-memory ring buffer between the user process and the kernel.
-func (h *TPacket) setUpRing() (err error) {
-       totalSize := int(h.opts.framesPerBlock * h.opts.numBlocks * h.opts.frameSize)
-       switch h.tpVersion {
-       case TPacketVersion1, TPacketVersion2:
-               var tp C.struct_tpacket_req
-               tp.tp_block_size = C.uint(h.opts.blockSize)
-               tp.tp_block_nr = C.uint(h.opts.numBlocks)
-               tp.tp_frame_size = C.uint(h.opts.frameSize)
-               tp.tp_frame_nr = C.uint(h.opts.framesPerBlock * h.opts.numBlocks)
-               if err := setsockopt(h.fd, unix.SOL_PACKET, unix.PACKET_RX_RING, unsafe.Pointer(&tp), unsafe.Sizeof(tp)); err != nil {
-                       return fmt.Errorf("setsockopt packet_rx_ring: %v", err)
-               }
-       case TPacketVersion3:
-               var tp C.struct_tpacket_req3
-               tp.tp_block_size = C.uint(h.opts.blockSize)
-               tp.tp_block_nr = C.uint(h.opts.numBlocks)
-               tp.tp_frame_size = C.uint(h.opts.frameSize)
-               tp.tp_frame_nr = C.uint(h.opts.framesPerBlock * h.opts.numBlocks)
-               tp.tp_retire_blk_tov = C.uint(h.opts.blockTimeout / time.Millisecond)
-               if err := setsockopt(h.fd, unix.SOL_PACKET, unix.PACKET_RX_RING, unsafe.Pointer(&tp), unsafe.Sizeof(tp)); err != nil {
-                       return fmt.Errorf("setsockopt packet_rx_ring v3: %v", err)
-               }
-       default:
-               return errors.New("invalid tpVersion")
-       }
-       h.ring, err = unix.Mmap(h.fd, 0, totalSize, unix.PROT_READ|unix.PROT_WRITE, unix.MAP_SHARED)
-       if err != nil {
-               return err
-       }
-       if h.ring == nil {
-               return errors.New("no ring")
-       }
-       h.rawring = unsafe.Pointer(&h.ring[0])
-       return nil
-}
-
-// Close cleans up the TPacket.  It should not be used after the Close call.
-func (h *TPacket) Close() {
-       if h.fd == -1 {
-               return // already closed.
-       }
-       if h.ring != nil {
-               unix.Munmap(h.ring)
-       }
-       h.ring = nil
-       unix.Close(h.fd)
-       h.fd = -1
-       runtime.SetFinalizer(h, nil)
-}
-
-// NewTPacket returns a new TPacket object for reading packets off the wire.
-// Its behavior may be modified by passing in any/all of afpacket.Opt* to this
-// function.
-// If this function succeeds, the user should be sure to Close the returned
-// TPacket when finished with it.
-func NewTPacket(opts ...interface{}) (h *TPacket, err error) {
-       h = &TPacket{}
-       if h.opts, err = parseOptions(opts...); err != nil {
-               return nil, err
-       }
-       fd, err := unix.Socket(unix.AF_PACKET, int(h.opts.socktype), int(htons(unix.ETH_P_ALL)))
-       if err != nil {
-               return nil, err
-       }
-       h.fd = fd
-       if err = h.bindToInterface(h.opts.iface); err != nil {
-               goto errlbl
-       }
-       if err = h.setRequestedTPacketVersion(); err != nil {
-               goto errlbl
-       }
-       if err = h.setUpRing(); err != nil {
-               goto errlbl
-       }
-       // Clear stat counter from socket
-       if err = h.InitSocketStats(); err != nil {
-               goto errlbl
-       }
-       runtime.SetFinalizer(h, (*TPacket).Close)
-       return h, nil
-errlbl:
-       h.Close()
-       return nil, err
-}
-
-// SetBPF attaches a BPF filter to the underlying socket
-func (h *TPacket) SetBPF(filter []bpf.RawInstruction) error {
-       var p unix.SockFprog
-       if len(filter) > int(^uint16(0)) {
-               return errors.New("filter too large")
-       }
-       p.Len = uint16(len(filter))
-       p.Filter = (*unix.SockFilter)(unsafe.Pointer(&filter[0]))
-
-       return setsockopt(h.fd, unix.SOL_SOCKET, unix.SO_ATTACH_FILTER, unsafe.Pointer(&p), unix.SizeofSockFprog)
-}
-
-func (h *TPacket) releaseCurrentPacket() error {
-       h.current.clearStatus()
-       h.offset++
-       h.shouldReleasePacket = false
-       return nil
-}
-
-// ZeroCopyReadPacketData reads the next packet off the wire, and returns its data.
-// The slice returned by ZeroCopyReadPacketData points to bytes owned by the
-// TPacket.  Each call to ZeroCopyReadPacketData invalidates any data previously
-// returned by ZeroCopyReadPacketData.  Care must be taken not to keep pointers
-// to old bytes when using ZeroCopyReadPacketData... if you need to keep data past
-// the next time you call ZeroCopyReadPacketData, use ReadPacketData, which copies
-// the bytes into a new buffer for you.
-//  tp, _ := NewTPacket(...)
-//  data1, _, _ := tp.ZeroCopyReadPacketData()
-//  // do everything you want with data1 here, copying bytes out of it if you'd like to keep them around.
-//  data2, _, _ := tp.ZeroCopyReadPacketData()  // invalidates bytes in data1
-func (h *TPacket) ZeroCopyReadPacketData() (data []byte, ci gopacket.CaptureInfo, err error) {
-       h.mu.Lock()
-retry:
-       if h.current == nil || !h.headerNextNeeded || !h.current.next() {
-               if h.shouldReleasePacket {
-                       h.releaseCurrentPacket()
-               }
-               h.current = h.getTPacketHeader()
-               if err = h.pollForFirstPacket(h.current); err != nil {
-                       h.headerNextNeeded = false
-                       h.mu.Unlock()
-                       return
-               }
-               // We received an empty block
-               if h.current.getLength() == 0 {
-                       goto retry
-               }
-       }
-       data = h.current.getData()
-       ci.Timestamp = h.current.getTime()
-       ci.CaptureLength = len(data)
-       ci.Length = h.current.getLength()
-       ci.InterfaceIndex = h.current.getIfaceIndex()
-       atomic.AddInt64(&h.stats.Packets, 1)
-       h.headerNextNeeded = true
-       h.mu.Unlock()
-
-       return
-}
-
-// Stats returns statistics on the packets the TPacket has seen so far.
-func (h *TPacket) Stats() (Stats, error) {
-       return Stats{
-               Polls:   atomic.LoadInt64(&h.stats.Polls),
-               Packets: atomic.LoadInt64(&h.stats.Packets),
-       }, nil
-}
-
-// InitSocketStats clears socket counters and return empty stats.
-func (h *TPacket) InitSocketStats() error {
-       if h.tpVersion == TPacketVersion3 {
-               socklen := unsafe.Sizeof(h.socketStatsV3)
-               slt := C.socklen_t(socklen)
-               var ssv3 SocketStatsV3
-
-               err := getsockopt(h.fd, unix.SOL_PACKET, unix.PACKET_STATISTICS, unsafe.Pointer(&ssv3), uintptr(unsafe.Pointer(&slt)))
-               if err != nil {
-                       return err
-               }
-               h.socketStatsV3 = SocketStatsV3{}
-       } else {
-               socklen := unsafe.Sizeof(h.socketStats)
-               slt := C.socklen_t(socklen)
-               var ss SocketStats
-
-               err := getsockopt(h.fd, unix.SOL_PACKET, unix.PACKET_STATISTICS, unsafe.Pointer(&ss), uintptr(unsafe.Pointer(&slt)))
-               if err != nil {
-                       return err
-               }
-               h.socketStats = SocketStats{}
-       }
-       return nil
-}
-
-// SocketStats saves stats from the socket to the TPacket instance.
-func (h *TPacket) SocketStats() (SocketStats, SocketStatsV3, error) {
-       h.statsMu.Lock()
-       defer h.statsMu.Unlock()
-       // We need to save the counters since asking for the stats will clear them
-       if h.tpVersion == TPacketVersion3 {
-               socklen := unsafe.Sizeof(h.socketStatsV3)
-               slt := C.socklen_t(socklen)
-               var ssv3 SocketStatsV3
-
-               err := getsockopt(h.fd, unix.SOL_PACKET, unix.PACKET_STATISTICS, unsafe.Pointer(&ssv3), uintptr(unsafe.Pointer(&slt)))
-               if err != nil {
-                       return SocketStats{}, SocketStatsV3{}, err
-               }
-
-               h.socketStatsV3.tp_packets += ssv3.tp_packets
-               h.socketStatsV3.tp_drops += ssv3.tp_drops
-               h.socketStatsV3.tp_freeze_q_cnt += ssv3.tp_freeze_q_cnt
-               return h.socketStats, h.socketStatsV3, nil
-       }
-       socklen := unsafe.Sizeof(h.socketStats)
-       slt := C.socklen_t(socklen)
-       var ss SocketStats
-
-       err := getsockopt(h.fd, unix.SOL_PACKET, unix.PACKET_STATISTICS, unsafe.Pointer(&ss), uintptr(unsafe.Pointer(&slt)))
-       if err != nil {
-               return SocketStats{}, SocketStatsV3{}, err
-       }
-
-       h.socketStats.tp_packets += ss.tp_packets
-       h.socketStats.tp_drops += ss.tp_drops
-       return h.socketStats, h.socketStatsV3, nil
-}
-
-// ReadPacketDataTo reads packet data into a user-supplied buffer.
-// This function reads up to the length of the passed-in slice.
-// The number of bytes read into data will be returned in ci.CaptureLength,
-// which is the minimum of the size of the passed-in buffer and the size of
-// the captured packet.
-func (h *TPacket) ReadPacketDataTo(data []byte) (ci gopacket.CaptureInfo, err error) {
-       var d []byte
-       d, ci, err = h.ZeroCopyReadPacketData()
-       if err != nil {
-               return
-       }
-       ci.CaptureLength = copy(data, d)
-       return
-}
-
-// ReadPacketData reads the next packet, copies it into a new buffer, and returns
-// that buffer.  Since the buffer is allocated by ReadPacketData, it is safe for long-term
-// use.  This implements gopacket.PacketDataSource.
-func (h *TPacket) ReadPacketData() (data []byte, ci gopacket.CaptureInfo, err error) {
-       var d []byte
-       d, ci, err = h.ZeroCopyReadPacketData()
-       if err != nil {
-               return
-       }
-       data = make([]byte, len(d))
-       copy(data, d)
-       return
-}
-
-func (h *TPacket) getTPacketHeader() header {
-       switch h.tpVersion {
-       case TPacketVersion1:
-               if h.offset >= h.opts.framesPerBlock*h.opts.numBlocks {
-                       h.offset = 0
-               }
-               position := uintptr(h.rawring) + uintptr(h.opts.frameSize*h.offset)
-               return (*v1header)(unsafe.Pointer(position))
-       case TPacketVersion2:
-               if h.offset >= h.opts.framesPerBlock*h.opts.numBlocks {
-                       h.offset = 0
-               }
-               position := uintptr(h.rawring) + uintptr(h.opts.frameSize*h.offset)
-               return (*v2header)(unsafe.Pointer(position))
-       case TPacketVersion3:
-               // TPacket3 uses each block to return values, instead of each frame.  Hence we need to rotate when we hit #blocks, not #frames.
-               if h.offset >= h.opts.numBlocks {
-                       h.offset = 0
-               }
-               position := uintptr(h.rawring) + uintptr(h.opts.frameSize*h.offset*h.opts.framesPerBlock)
-               h.v3 = initV3Wrapper(unsafe.Pointer(position))
-               return &h.v3
-       }
-       panic("handle tpacket version is invalid")
-}
-
-func (h *TPacket) pollForFirstPacket(hdr header) error {
-       tm := int(h.opts.pollTimeout / time.Millisecond)
-       for hdr.getStatus()&C.TP_STATUS_USER == 0 {
-               h.pollset.Fd = int32(h.fd)
-               h.pollset.Events = unix.POLLIN
-               h.pollset.Revents = 0
-               n, err := unix.Poll([]unix.PollFd{h.pollset}, tm)
-               if n == 0 {
-                       return ErrTimeout
-               }
-
-               atomic.AddInt64(&h.stats.Polls, 1)
-               if h.pollset.Revents&unix.POLLERR > 0 {
-                       return ErrPoll
-               }
-               if err != nil {
-                       return err
-               }
-       }
-
-       h.shouldReleasePacket = true
-       return nil
-}
-
-// FanoutType determines the type of fanout to use with a TPacket SetFanout call.
-type FanoutType int
-
-// FanoutType values.
-const (
-       FanoutHash FanoutType = 0
-       // It appears that defrag only works with FanoutHash, see:
-       // http://lxr.free-electrons.com/source/net/packet/af_packet.c#L1204
-       FanoutHashWithDefrag FanoutType = 0x8000
-       FanoutLoadBalance    FanoutType = 1
-       FanoutCPU            FanoutType = 2
-)
-
-// SetFanout activates TPacket's fanout ability.
-// Use of Fanout requires creating multiple TPacket objects and the same id/type to
-// a SetFanout call on each.  Note that this can be done cross-process, so if two
-// different processes both call SetFanout with the same type/id, they'll share
-// packets between them.  The same should work for multiple TPacket objects within
-// the same process.
-func (h *TPacket) SetFanout(t FanoutType, id uint16) error {
-       h.mu.Lock()
-       defer h.mu.Unlock()
-       arg := C.int(t) << 16
-       arg |= C.int(id)
-       return setsockopt(h.fd, unix.SOL_PACKET, unix.PACKET_FANOUT, unsafe.Pointer(&arg), unsafe.Sizeof(arg))
-}
-
-// WritePacketData transmits a raw packet.
-func (h *TPacket) WritePacketData(pkt []byte) error {
-       _, err := unix.Write(h.fd, pkt)
-       return err
-}
diff --git a/vendor/github.com/google/gopacket/afpacket/afpacket_test.go b/vendor/github.com/google/gopacket/afpacket/afpacket_test.go
deleted file mode 100644 (file)
index 57f6480..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// +build linux
-
-package afpacket
-
-import (
-       "reflect"
-       "testing"
-)
-
-func TestParseOptions(t *testing.T) {
-       wanted1 := defaultOpts
-       wanted1.frameSize = 1 << 10
-       wanted1.framesPerBlock = wanted1.blockSize / wanted1.frameSize
-       for i, test := range []struct {
-               opts []interface{}
-               want options
-               err  bool
-       }{
-               {opts: []interface{}{OptBlockSize(2)}, err: true},
-               {opts: []interface{}{OptFrameSize(333)}, err: true},
-               {opts: []interface{}{OptTPacketVersion(-3)}, err: true},
-               {opts: []interface{}{OptTPacketVersion(5)}, err: true},
-               {opts: []interface{}{OptFrameSize(1 << 10)}, want: wanted1},
-       } {
-               got, err := parseOptions(test.opts...)
-               t.Logf("got: %#v\nerr: %v", got, err)
-               if test.err && err == nil || !test.err && err != nil {
-                       t.Errorf("%d error mismatch, want error? %v.  error: %v", i, test.err, err)
-               }
-               if !test.err && !reflect.DeepEqual(test.want, got) {
-                       t.Errorf("%d opts mismatch, want\n%#v", i, test.want)
-               }
-       }
-}
diff --git a/vendor/github.com/google/gopacket/afpacket/header.go b/vendor/github.com/google/gopacket/afpacket/header.go
deleted file mode 100644 (file)
index 0b9918e..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// +build linux
-
-package afpacket
-
-import (
-       "reflect"
-       "time"
-       "unsafe"
-)
-
-// #include <linux/if_packet.h>
-import "C"
-
-// Our model of handling all TPacket versions is a little hacky, to say the
-// least.  We use the header interface to handle interactions with the
-// tpacket1/tpacket2 packet header AND the tpacket3 block header.  The big
-// difference is that tpacket3's block header implements the next() call to get
-// the next packet within the block, while v1/v2 just always return false.
-
-type header interface {
-       // getStatus returns the TPacket status of the current header.
-       getStatus() int
-       // clearStatus clears the status of the current header, releasing its
-       // underlying data back to the kernel for future use with new packets.
-       // Using the header after calling clearStatus is an error.  clearStatus
-       // should only be called after next() returns false.
-       clearStatus()
-       // getTime returns the timestamp for the current packet pointed to by
-       // the header.
-       getTime() time.Time
-       // getData returns the packet data pointed to by the current header.
-       getData() []byte
-       // getLength returns the total length of the packet.
-       getLength() int
-       // getIfaceIndex returns the index of the network interface
-       // where the packet was seen. The index can later be translated to a name.
-       getIfaceIndex() int
-       // next moves this header to point to the next packet it contains,
-       // returning true on success (in which case getTime and getData will
-       // return values for the new packet) or false if there are no more
-       // packets (in which case clearStatus should be called).
-       next() bool
-}
-
-func tpAlign(x int) int {
-       return int((uint(x) + tpacketAlignment - 1) &^ (tpacketAlignment - 1))
-}
-
-type v1header C.struct_tpacket_hdr
-type v2header C.struct_tpacket2_hdr
-
-func makeSlice(start uintptr, length int) (data []byte) {
-       slice := (*reflect.SliceHeader)(unsafe.Pointer(&data))
-       slice.Data = start
-       slice.Len = length
-       slice.Cap = length
-       return
-}
-
-func (h *v1header) getStatus() int {
-       return int(h.tp_status)
-}
-func (h *v1header) clearStatus() {
-       h.tp_status = 0
-}
-func (h *v1header) getTime() time.Time {
-       return time.Unix(int64(h.tp_sec), int64(h.tp_usec)*1000)
-}
-func (h *v1header) getData() []byte {
-       return makeSlice(uintptr(unsafe.Pointer(h))+uintptr(h.tp_mac), int(h.tp_snaplen))
-}
-func (h *v1header) getLength() int {
-       return int(h.tp_len)
-}
-func (h *v1header) getIfaceIndex() int {
-       ll := (*C.struct_sockaddr_ll)(unsafe.Pointer(uintptr(unsafe.Pointer(h)) + uintptr(tpAlign(int(C.sizeof_struct_tpacket_hdr)))))
-       return int(ll.sll_ifindex)
-}
-func (h *v1header) next() bool {
-       return false
-}
-
-func (h *v2header) getStatus() int {
-       return int(h.tp_status)
-}
-func (h *v2header) clearStatus() {
-       h.tp_status = 0
-}
-func (h *v2header) getTime() time.Time {
-       return time.Unix(int64(h.tp_sec), int64(h.tp_nsec))
-}
-func (h *v2header) getData() []byte {
-       return makeSlice(uintptr(unsafe.Pointer(h))+uintptr(h.tp_mac), int(h.tp_snaplen))
-}
-func (h *v2header) getLength() int {
-       return int(h.tp_len)
-}
-func (h *v2header) getIfaceIndex() int {
-       ll := (*C.struct_sockaddr_ll)(unsafe.Pointer(uintptr(unsafe.Pointer(h)) + uintptr(tpAlign(int(C.sizeof_struct_tpacket2_hdr)))))
-       return int(ll.sll_ifindex)
-}
-func (h *v2header) next() bool {
-       return false
-}
-
-type v3wrapper struct {
-       block    *C.struct_tpacket_block_desc
-       blockhdr *C.struct_tpacket_hdr_v1
-       packet   *C.struct_tpacket3_hdr
-       used     C.__u32
-}
-
-func initV3Wrapper(block unsafe.Pointer) (w v3wrapper) {
-       w.block = (*C.struct_tpacket_block_desc)(block)
-       w.blockhdr = (*C.struct_tpacket_hdr_v1)(unsafe.Pointer(&w.block.hdr[0]))
-       w.packet = (*C.struct_tpacket3_hdr)(unsafe.Pointer(uintptr(block) + uintptr(w.blockhdr.offset_to_first_pkt)))
-       return
-}
-func (w *v3wrapper) getStatus() int {
-       return int(w.blockhdr.block_status)
-}
-func (w *v3wrapper) clearStatus() {
-       w.blockhdr.block_status = 0
-}
-func (w *v3wrapper) getTime() time.Time {
-       return time.Unix(int64(w.packet.tp_sec), int64(w.packet.tp_nsec))
-}
-func (w *v3wrapper) getData() []byte {
-       return makeSlice(uintptr(unsafe.Pointer(w.packet))+uintptr(w.packet.tp_mac), int(w.packet.tp_snaplen))
-}
-func (w *v3wrapper) getLength() int {
-       return int(w.packet.tp_len)
-}
-func (w *v3wrapper) getIfaceIndex() int {
-       ll := (*C.struct_sockaddr_ll)(unsafe.Pointer(uintptr(unsafe.Pointer(w.packet)) + uintptr(tpAlign(int(C.sizeof_struct_tpacket3_hdr)))))
-       return int(ll.sll_ifindex)
-}
-func (w *v3wrapper) next() bool {
-       w.used++
-       if w.used >= w.blockhdr.num_pkts {
-               return false
-       }
-
-       next := uintptr(unsafe.Pointer(w.packet))
-       if w.packet.tp_next_offset != 0 {
-               next += uintptr(w.packet.tp_next_offset)
-       } else {
-               next += uintptr(tpacketAlign(int(w.packet.tp_snaplen) + int(w.packet.tp_mac)))
-       }
-       w.packet = (*C.struct_tpacket3_hdr)(unsafe.Pointer(next))
-       return true
-}
diff --git a/vendor/github.com/google/gopacket/afpacket/options.go b/vendor/github.com/google/gopacket/afpacket/options.go
deleted file mode 100644 (file)
index c5ab771..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// +build linux
-
-package afpacket
-
-import (
-       "errors"
-       "fmt"
-       "time"
-)
-
-// #include <linux/if_packet.h>
-// #include <sys/socket.h>
-import "C"
-
-// OptTPacketVersion is the version of TPacket to use.
-// It can be passed into NewTPacket.
-type OptTPacketVersion int
-
-// String returns a string representation of the version, generally of the form V#.
-func (t OptTPacketVersion) String() string {
-       switch t {
-       case TPacketVersion1:
-               return "V1"
-       case TPacketVersion2:
-               return "V2"
-       case TPacketVersion3:
-               return "V3"
-       case TPacketVersionHighestAvailable:
-               return "HighestAvailable"
-       }
-       return "InvalidVersion"
-}
-
-// OptSocketType is the socket type used to open the TPacket socket.
-type OptSocketType int
-
-func (t OptSocketType) String() string {
-       switch t {
-       case SocketRaw:
-               return "SOCK_RAW"
-       case SocketDgram:
-               return "SOCK_DGRAM"
-       }
-       return "UnknownSocketType"
-}
-
-// TPacket version numbers for use with NewHandle.
-const (
-       // TPacketVersionHighestAvailable tells NewHandle to use the highest available version of tpacket the kernel has available.
-       // This is the default, should a version number not be given in NewHandle's options.
-       TPacketVersionHighestAvailable = OptTPacketVersion(-1)
-       TPacketVersion1                = OptTPacketVersion(C.TPACKET_V1)
-       TPacketVersion2                = OptTPacketVersion(C.TPACKET_V2)
-       TPacketVersion3                = OptTPacketVersion(C.TPACKET_V3)
-       tpacketVersionMax              = TPacketVersion3
-       tpacketVersionMin              = -1
-       // SocketRaw is the default socket type.  It returns packet data
-       // including the link layer (ethernet headers, etc).
-       SocketRaw = OptSocketType(C.SOCK_RAW)
-       // SocketDgram strips off the link layer when reading packets, and adds
-       // the link layer back automatically on packet writes (coming soon...)
-       SocketDgram = OptSocketType(C.SOCK_DGRAM)
-)
-
-// OptInterface is the specific interface to bind to.
-// It can be passed into NewTPacket.
-type OptInterface string
-
-// OptFrameSize is TPacket's tp_frame_size
-// It can be passed into NewTPacket.
-type OptFrameSize int
-
-// OptBlockSize is TPacket's tp_block_size
-// It can be passed into NewTPacket.
-type OptBlockSize int
-
-// OptNumBlocks is TPacket's tp_block_nr
-// It can be passed into NewTPacket.
-type OptNumBlocks int
-
-// OptBlockTimeout is TPacket v3's tp_retire_blk_tov.  Note that it has only millisecond granularity, so must be >= 1 ms.
-// It can be passed into NewTPacket.
-type OptBlockTimeout time.Duration
-
-// OptPollTimeout is the number of milliseconds that poll() should block waiting  for a file
-// descriptor to become ready. Specifying a negative value in  time‐out means an infinite timeout.
-type OptPollTimeout time.Duration
-
-// Default constants used by options.
-const (
-       DefaultFrameSize    = 4096                   // Default value for OptFrameSize.
-       DefaultBlockSize    = DefaultFrameSize * 128 // Default value for OptBlockSize.
-       DefaultNumBlocks    = 128                    // Default value for OptNumBlocks.
-       DefaultBlockTimeout = 64 * time.Millisecond  // Default value for OptBlockTimeout.
-       DefaultPollTimeout  = -1 * time.Millisecond  // Default value for OptPollTimeout. This blocks forever.
-)
-
-type options struct {
-       frameSize      int
-       framesPerBlock int
-       blockSize      int
-       numBlocks      int
-       blockTimeout   time.Duration
-       pollTimeout    time.Duration
-       version        OptTPacketVersion
-       socktype       OptSocketType
-       iface          string
-}
-
-var defaultOpts = options{
-       frameSize:    DefaultFrameSize,
-       blockSize:    DefaultBlockSize,
-       numBlocks:    DefaultNumBlocks,
-       blockTimeout: DefaultBlockTimeout,
-       pollTimeout:  DefaultPollTimeout,
-       version:      TPacketVersionHighestAvailable,
-       socktype:     SocketRaw,
-}
-
-func parseOptions(opts ...interface{}) (ret options, err error) {
-       ret = defaultOpts
-       for _, opt := range opts {
-               switch v := opt.(type) {
-               case OptFrameSize:
-                       ret.frameSize = int(v)
-               case OptBlockSize:
-                       ret.blockSize = int(v)
-               case OptNumBlocks:
-                       ret.numBlocks = int(v)
-               case OptBlockTimeout:
-                       ret.blockTimeout = time.Duration(v)
-               case OptPollTimeout:
-                       ret.pollTimeout = time.Duration(v)
-               case OptTPacketVersion:
-                       ret.version = v
-               case OptInterface:
-                       ret.iface = string(v)
-               case OptSocketType:
-                       ret.socktype = v
-               default:
-                       err = errors.New("unknown type in options")
-                       return
-               }
-       }
-       if err = ret.check(); err != nil {
-               return
-       }
-       ret.framesPerBlock = ret.blockSize / ret.frameSize
-       return
-}
-func (o options) check() error {
-       switch {
-       case o.blockSize%pageSize != 0:
-               return fmt.Errorf("block size %d must be divisible by page size %d", o.blockSize, pageSize)
-       case o.blockSize%o.frameSize != 0:
-               return fmt.Errorf("block size %d must be divisible by frame size %d", o.blockSize, o.frameSize)
-       case o.numBlocks < 1:
-               return fmt.Errorf("num blocks %d must be >= 1", o.numBlocks)
-       case o.blockTimeout < time.Millisecond:
-               return fmt.Errorf("block timeout %v must be > %v", o.blockTimeout, time.Millisecond)
-       case o.version < tpacketVersionMin || o.version > tpacketVersionMax:
-               return fmt.Errorf("tpacket version %v is invalid", o.version)
-       }
-       return nil
-}
diff --git a/vendor/github.com/google/gopacket/afpacket/sockopt_linux.go b/vendor/github.com/google/gopacket/afpacket/sockopt_linux.go
deleted file mode 100644 (file)
index c53e1cc..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// +build linux
-
-package afpacket
-
-import (
-       "unsafe"
-
-       "golang.org/x/sys/unix"
-)
-
-// setsockopt provides access to the setsockopt syscall.
-func setsockopt(fd, level, name int, val unsafe.Pointer, vallen uintptr) error {
-       _, _, errno := unix.Syscall6(
-               unix.SYS_SETSOCKOPT,
-               uintptr(fd),
-               uintptr(level),
-               uintptr(name),
-               uintptr(val),
-               vallen,
-               0,
-       )
-       if errno != 0 {
-               return error(errno)
-       }
-
-       return nil
-}
-
-// getsockopt provides access to the getsockopt syscall.
-func getsockopt(fd, level, name int, val unsafe.Pointer, vallen uintptr) error {
-       _, _, errno := unix.Syscall6(
-               unix.SYS_GETSOCKOPT,
-               uintptr(fd),
-               uintptr(level),
-               uintptr(name),
-               uintptr(val),
-               vallen,
-               0,
-       )
-       if errno != 0 {
-               return error(errno)
-       }
-
-       return nil
-}
-
-// htons converts a short (uint16) from host-to-network byte order.
-// Thanks to mikioh for this neat trick:
-// https://github.com/mikioh/-stdyng/blob/master/afpacket.go
-func htons(i uint16) uint16 {
-       return (i<<8)&0xff00 | i>>8
-}
diff --git a/vendor/github.com/google/gopacket/afpacket/sockopt_linux_386.go b/vendor/github.com/google/gopacket/afpacket/sockopt_linux_386.go
deleted file mode 100644 (file)
index 8c3eb42..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// +build linux,386
-
-package afpacket
-
-import (
-       "unsafe"
-
-       "golang.org/x/sys/unix"
-)
-
-const (
-       sysSETSOCKOPT = 0xe
-       sysGETSOCKOPT = 0xf
-)
-
-func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, unix.Errno)
-
-// setsockopt provides access to the setsockopt syscall.
-func setsockopt(fd, level, name int, v unsafe.Pointer, l uintptr) error {
-       _, errno := socketcall(
-               sysSETSOCKOPT,
-               uintptr(fd),
-               uintptr(level),
-               uintptr(name),
-               uintptr(v),
-               l,
-               0,
-       )
-       if errno != 0 {
-               return error(errno)
-       }
-
-       return nil
-}
-
-func getsockopt(fd, level, name int, v unsafe.Pointer, l uintptr) error {
-       _, errno := socketcall(
-               sysGETSOCKOPT,
-               uintptr(fd),
-               uintptr(level),
-               uintptr(name),
-               uintptr(v),
-               l,
-               0,
-       )
-       if errno != 0 {
-               return error(errno)
-       }
-
-       return nil
-}
diff --git a/vendor/github.com/google/gopacket/afpacket/sockopt_linux_386.s b/vendor/github.com/google/gopacket/afpacket/sockopt_linux_386.s
deleted file mode 100644 (file)
index 7d0336a..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-TEXT   ·socketcall(SB),4,$0-36
-       JMP     syscall·socketcall(SB)
\ No newline at end of file
diff --git a/vendor/github.com/google/gopacket/benchmark_test.go b/vendor/github.com/google/gopacket/benchmark_test.go
deleted file mode 100644 (file)
index 74a1d28..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-// Copyright 2012, Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package gopacket
-
-import (
-       "runtime"
-       "testing"
-)
-
-// A few benchmarks for figuring out exactly how fast some underlying Go
-// things are.
-
-type testError struct{}
-
-func (t *testError) Error() string { return "abc" }
-
-func BenchmarkTypeAssertion(b *testing.B) {
-       var e error = &testError{}
-       for i := 0; i < b.N; i++ {
-               _, _ = e.(*testError)
-       }
-}
-
-func BenchmarkMapLookup(b *testing.B) {
-       m := map[LayerType]bool{
-               LayerTypePayload: true,
-       }
-       for i := 0; i < b.N; i++ {
-               _ = m[LayerTypePayload]
-       }
-}
-
-func BenchmarkNilMapLookup(b *testing.B) {
-       var m map[LayerType]bool
-       for i := 0; i < b.N; i++ {
-               _ = m[LayerTypePayload]
-       }
-}
-
-func BenchmarkNilMapLookupWithNilCheck(b *testing.B) {
-       var m map[LayerType]bool
-       for i := 0; i < b.N; i++ {
-               if m != nil {
-                       _ = m[LayerTypePayload]
-               }
-       }
-}
-
-func BenchmarkArrayLookup(b *testing.B) {
-       m := make([]bool, 100)
-       for i := 0; i < b.N; i++ {
-               _ = m[LayerTypePayload]
-       }
-}
-
-var testError1 = &testError{}
-var testError2 error = testError1
-
-func BenchmarkTypeToInterface1(b *testing.B) {
-       var e error
-       for i := 0; i < b.N; i++ {
-               e = testError1
-       }
-       // Have to do someting with 'e' or the compiler complains about an unused
-       // variable.
-       testError2 = e
-}
-func BenchmarkTypeToInterface2(b *testing.B) {
-       var e error
-       for i := 0; i < b.N; i++ {
-               e = testError2
-       }
-       // Have to do someting with 'e' or the compiler complains about an unused
-       // variable.
-       testError2 = e
-}
-
-var decodeOpts DecodeOptions
-
-func decodeOptsByValue(_ DecodeOptions)    {}
-func decodeOptsByPointer(_ *DecodeOptions) {}
-func BenchmarkPassDecodeOptionsByValue(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               decodeOptsByValue(decodeOpts)
-       }
-}
-func BenchmarkPassDecodeOptionsByPointer(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               decodeOptsByPointer(&decodeOpts)
-       }
-}
-
-func BenchmarkLockOSThread(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               runtime.LockOSThread()
-       }
-}
-func BenchmarkUnlockOSThread(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               runtime.UnlockOSThread()
-       }
-}
-func lockUnlock() {
-       runtime.LockOSThread()
-       runtime.UnlockOSThread()
-}
-func lockDeferUnlock() {
-       runtime.LockOSThread()
-       defer runtime.UnlockOSThread()
-}
-func BenchmarkLockUnlockOSThread(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               lockUnlock()
-       }
-}
-func BenchmarkLockDeferUnlockOSThread(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               lockDeferUnlock()
-       }
-}
-
-func BenchmarkUnbufferedChannel(b *testing.B) {
-       ca := make(chan bool)
-       cb := make(chan bool)
-       defer close(ca)
-       go func() {
-               defer close(cb)
-               for _ = range ca {
-                       cb <- true
-               }
-       }()
-       for i := 0; i < b.N; i++ {
-               ca <- true
-               <-cb
-       }
-}
-func BenchmarkSmallBufferedChannel(b *testing.B) {
-       ca := make(chan bool, 1)
-       cb := make(chan bool, 1)
-       defer close(ca)
-       go func() {
-               defer close(cb)
-               for _ = range ca {
-                       cb <- true
-               }
-       }()
-       for i := 0; i < b.N; i++ {
-               ca <- true
-               <-cb
-       }
-}
-func BenchmarkLargeBufferedChannel(b *testing.B) {
-       ca := make(chan bool, 1000)
-       cb := make(chan bool, 1000)
-       defer close(ca)
-       go func() {
-               defer close(cb)
-               for _ = range ca {
-                       cb <- true
-               }
-       }()
-       for i := 0; i < b.N; i++ {
-               ca <- true
-               <-cb
-       }
-}
-func BenchmarkEndpointFastHashShort(b *testing.B) {
-       e := Endpoint{typ: 1, len: 2}
-       for i := 0; i < b.N; i++ {
-               e.FastHash()
-       }
-}
-func BenchmarkEndpointFastHashLong(b *testing.B) {
-       e := Endpoint{typ: 1, len: 16}
-       for i := 0; i < b.N; i++ {
-               e.FastHash()
-       }
-}
-func BenchmarkFlowFastHashShort(b *testing.B) {
-       e := Flow{typ: 1, slen: 2, dlen: 2}
-       for i := 0; i < b.N; i++ {
-               e.FastHash()
-       }
-}
-func BenchmarkFlowFastHashLong(b *testing.B) {
-       e := Flow{typ: 1, slen: 16, dlen: 16}
-       for i := 0; i < b.N; i++ {
-               e.FastHash()
-       }
-}
diff --git a/vendor/github.com/google/gopacket/bsdbpf/bsd_bpf_sniffer.go b/vendor/github.com/google/gopacket/bsdbpf/bsd_bpf_sniffer.go
deleted file mode 100644 (file)
index 3e1da0b..0000000
+++ /dev/null
@@ -1,215 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// +build darwin dragonfly freebsd netbsd openbsd
-
-package bsdbpf
-
-import (
-       "errors"
-       "fmt"
-       "syscall"
-       "time"
-       "unsafe"
-
-       "github.com/google/gopacket"
-       "golang.org/x/sys/unix"
-)
-
-const wordSize = int(unsafe.Sizeof(uintptr(0)))
-
-func bpfWordAlign(x int) int {
-       return (((x) + (wordSize - 1)) &^ (wordSize - 1))
-}
-
-// Options is used to configure various properties of the BPF sniffer.
-// Default values are used when a nil Options pointer is passed to NewBPFSniffer.
-type Options struct {
-       // BPFDeviceName is name of the bpf device to use for sniffing
-       // the network device. The default value of BPFDeviceName is empty string
-       // which causes the first available BPF device file /dev/bpfX to be used.
-       BPFDeviceName string
-       // ReadBufLen specifies the size of the buffer used to read packets
-       // off the wire such that multiple packets are buffered with each read syscall.
-       // Note that an individual packet larger than the buffer size is necessarily truncated.
-       // A larger buffer should increase performance because fewer read syscalls would be made.
-       // If zero is used, the system's default buffer length will be used which depending on the
-       // system may default to 4096 bytes which is not big enough to accomodate some link layers
-       // such as WLAN (802.11).
-       // ReadBufLen defaults to 32767... however typical BSD manual pages for BPF indicate that
-       // if the requested buffer size cannot be accommodated, the closest allowable size will be
-       // set and returned... hence our GetReadBufLen method.
-       ReadBufLen int
-       // Timeout is the length of time to wait before timing out on a read request.
-       // Timeout defaults to nil which means no timeout is used.
-       Timeout *syscall.Timeval
-       // Promisc is set to true for promiscuous mode ethernet sniffing.
-       // Promisc defaults to true.
-       Promisc bool
-       // Immediate is set to true to make our read requests return as soon as a packet becomes available.
-       // Otherwise, a read will block until either the kernel buffer becomes full or a timeout occurs.
-       // The default is true.
-       Immediate bool
-       // PreserveLinkAddr is set to false if the link level source address should be filled in automatically
-       // by the interface output routine. Set to true if the link level source address will be written,
-       // as provided, to the wire.
-       // The default is true.
-       PreserveLinkAddr bool
-}
-
-var defaultOptions = Options{
-       BPFDeviceName:    "",
-       ReadBufLen:       32767,
-       Timeout:          nil,
-       Promisc:          true,
-       Immediate:        true,
-       PreserveLinkAddr: true,
-}
-
-// BPFSniffer is a struct used to track state of a BSD BPF ethernet sniffer
-// such that gopacket's PacketDataSource interface is implemented.
-type BPFSniffer struct {
-       options           *Options
-       sniffDeviceName   string
-       fd                int
-       readBuffer        []byte
-       lastReadLen       int
-       readBytesConsumed int
-}
-
-// NewBPFSniffer is used to create BSD-only BPF ethernet sniffer
-// iface is the network interface device name that you wish to sniff
-// options can set to nil in order to utilize default values for everything.
-// Each field of Options also have a default setting if left unspecified by
-// the user's custome Options struct.
-func NewBPFSniffer(iface string, options *Options) (*BPFSniffer, error) {
-       var err error
-       enable := 1
-       sniffer := BPFSniffer{
-               sniffDeviceName: iface,
-       }
-       if options == nil {
-               sniffer.options = &defaultOptions
-       } else {
-               sniffer.options = options
-       }
-
-       if sniffer.options.BPFDeviceName == "" {
-               sniffer.pickBpfDevice()
-       }
-
-       // setup our read buffer
-       if sniffer.options.ReadBufLen == 0 {
-               sniffer.options.ReadBufLen, err = syscall.BpfBuflen(sniffer.fd)
-               if err != nil {
-                       return nil, err
-               }
-       } else {
-               sniffer.options.ReadBufLen, err = syscall.SetBpfBuflen(sniffer.fd, sniffer.options.ReadBufLen)
-               if err != nil {
-                       return nil, err
-               }
-       }
-       sniffer.readBuffer = make([]byte, sniffer.options.ReadBufLen)
-
-       err = syscall.SetBpfInterface(sniffer.fd, sniffer.sniffDeviceName)
-       if err != nil {
-               return nil, err
-       }
-
-       if sniffer.options.Immediate {
-               // turn immediate mode on. This makes the snffer non-blocking.
-               err = syscall.SetBpfImmediate(sniffer.fd, enable)
-               if err != nil {
-                       return nil, err
-               }
-       }
-
-       // the above call to syscall.SetBpfImmediate needs to be made
-       // before setting a timer otherwise the reads will block for the
-       // entire timer duration even if there are packets to return.
-       if sniffer.options.Timeout != nil {
-               err = syscall.SetBpfTimeout(sniffer.fd, sniffer.options.Timeout)
-               if err != nil {
-                       return nil, err
-               }
-       }
-
-       if sniffer.options.PreserveLinkAddr {
-               // preserves the link level source address...
-               // higher level protocol analyzers will not need this
-               err = syscall.SetBpfHeadercmpl(sniffer.fd, enable)
-               if err != nil {
-                       return nil, err
-               }
-       }
-
-       if sniffer.options.Promisc {
-               // forces the interface into promiscuous mode
-               err = syscall.SetBpfPromisc(sniffer.fd, enable)
-               if err != nil {
-                       return nil, err
-               }
-       }
-
-       return &sniffer, nil
-}
-
-// Close is used to close the file-descriptor of the BPF device file.
-func (b *BPFSniffer) Close() error {
-       return syscall.Close(b.fd)
-}
-
-func (b *BPFSniffer) pickBpfDevice() {
-       var err error
-       b.options.BPFDeviceName = ""
-       for i := 0; i < 99; i++ {
-               b.options.BPFDeviceName = fmt.Sprintf("/dev/bpf%d", i)
-               b.fd, err = syscall.Open(b.options.BPFDeviceName, syscall.O_RDWR, 0)
-               if err == nil {
-                       return
-               }
-       }
-       panic("failed to acquire a BPF device for read-write access")
-}
-
-func (b *BPFSniffer) ReadPacketData() ([]byte, gopacket.CaptureInfo, error) {
-       var err error
-       if b.readBytesConsumed >= b.lastReadLen {
-               b.readBytesConsumed = 0
-               b.readBuffer = make([]byte, b.options.ReadBufLen)
-               b.lastReadLen, err = syscall.Read(b.fd, b.readBuffer)
-               if err != nil {
-                       b.lastReadLen = 0
-                       return nil, gopacket.CaptureInfo{}, err
-               }
-       }
-       hdr := (*unix.BpfHdr)(unsafe.Pointer(&b.readBuffer[b.readBytesConsumed]))
-       frameStart := b.readBytesConsumed + int(hdr.Hdrlen)
-       b.readBytesConsumed += bpfWordAlign(int(hdr.Hdrlen) + int(hdr.Caplen))
-
-       if frameStart+int(hdr.Caplen) > len(b.readBuffer) {
-               captureInfo := gopacket.CaptureInfo{
-                       Timestamp:     time.Unix(int64(hdr.Tstamp.Sec), int64(hdr.Tstamp.Usec)*1000),
-                       CaptureLength: 0,
-                       Length:        0,
-               }
-               return nil, captureInfo, errors.New("BPF captured frame received with corrupted BpfHdr struct.")
-       }
-
-       rawFrame := b.readBuffer[frameStart : frameStart+int(hdr.Caplen)]
-       captureInfo := gopacket.CaptureInfo{
-               Timestamp:     time.Unix(int64(hdr.Tstamp.Sec), int64(hdr.Tstamp.Usec)*1000),
-               CaptureLength: len(rawFrame),
-               Length:        len(rawFrame),
-       }
-       return rawFrame, captureInfo, nil
-}
-
-// GetReadBufLen returns the BPF read buffer length
-func (b *BPFSniffer) GetReadBufLen() int {
-       return b.options.ReadBufLen
-}
diff --git a/vendor/github.com/google/gopacket/bytediff/bytediff.go b/vendor/github.com/google/gopacket/bytediff/bytediff.go
deleted file mode 100644 (file)
index 63addd9..0000000
+++ /dev/null
@@ -1,217 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// Package bytediff provides a simple diff utility for looking at differences in byte
-// slices.  It's slow, clunky, and not particularly good by any measure, but
-// it does provide very useful visualizations for diffs between small byte
-// slices.
-//
-// Our diff algorithm uses a dynamic programming implementation of longest common
-// substring to find matching parts of slices, then recursively calls itself on
-// the prefix/suffix of that matching part for each packet.  This is a Bad Idea
-// (tm) for normal (especially large) input, but for packets where large portions
-// repeat frequently and we expect minor changes between results, it's actually
-// quite useful.
-package bytediff
-
-import (
-       "bytes"
-       "fmt"
-)
-
-// OutputFormat tells a Differences.String call how to format the set of
-// differences into a human-readable string.  Its internals are currently
-// unexported because we may want to change them drastically in the future.  For
-// the moment, please just use one of the provided OutputFormats that comes with
-// this library.
-type OutputFormat struct {
-       start, finish, add, remove, change, reset string
-}
-
-var (
-       // BashOutput uses bash escape sequences to color output.
-       BashOutput = &OutputFormat{
-               reset:  "\033[0m",
-               remove: "\033[32m",
-               add:    "\033[31m",
-               change: "\033[33m",
-       }
-       // HTMLOutput uses a <pre> to wrap output, and <span>s to color it.
-       // HTMLOutput is pretty experimental, so use at your own risk ;)
-       HTMLOutput = &OutputFormat{
-               start:  "<pre>",
-               finish: "</pre>",
-               reset:  "</span>",
-               remove: "<span style='color:red'>",
-               add:    "<span style='color:green'>",
-               change: "<span style='color:yellow'>",
-       }
-)
-
-// longestCommonSubstring uses a O(MN) dynamic programming approach to find the
-// longest common substring in a set of slices.  It returns the index in each
-// slice at which the substring begins, plus the length of the commonality.
-func longestCommonSubstring(strA, strB []byte) (indexA, indexB, length int) {
-       lenA, lenB := len(strA), len(strB)
-       if lenA == 0 || lenB == 0 {
-               return 0, 0, 0
-       }
-       arr := make([][]int, lenA)
-       for i := 0; i < lenA; i++ {
-               arr[i] = make([]int, lenB)
-       }
-       var maxLength int
-       var maxA, maxB int
-       for a := 0; a < lenA; a++ {
-               for b := 0; b < lenB; b++ {
-                       if strA[a] == strB[b] {
-                               length := 1
-                               if a > 0 && b > 0 {
-                                       length = arr[a-1][b-1] + 1
-                               }
-                               arr[a][b] = length
-                               if length > maxLength {
-                                       maxLength = length
-                                       maxA = a
-                                       maxB = b
-                               }
-                       }
-               }
-       }
-       a, b := maxA, maxB
-       for a >= 0 && b >= 0 && strA[a] == strB[b] {
-               indexA = a
-               indexB = b
-               a--
-               b--
-               length++
-       }
-       return
-}
-
-func intMax(a, b int) int {
-       if a > b {
-               return a
-       }
-       return b
-}
-
-// Difference represents a single part of the data being diffed, containing
-// information about both the original and new values.
-// From and To are the sets of bytes in the original and the new byte slice.
-//   !Replace        implies  From == To (no change)
-//   len(To) == 0    implies  From is being deleted
-//   len(From) == 0  implies  To is being inserted
-//   else            implies  From is being replaced by To
-type Difference struct {
-       Replace  bool
-       From, To []byte
-}
-
-// color returns the bash color for a given difference.
-func (c *OutputFormat) color(d Difference) string {
-       switch {
-       case !d.Replace:
-               return ""
-       case len(d.From) == 0:
-               return c.remove
-       case len(d.To) == 0:
-               return c.add
-       default:
-               return c.change
-       }
-}
-
-// Diff diffs strA and strB, returning a list of differences which
-// can be used to construct either the original or new string.
-//
-// Diff is optimized for comparing VERY SHORT slices.  It's meant for comparing
-// things like packets off the wire, not large files or the like.
-// As such, its runtime can be catastrophic if large inputs are passed in.
-// You've been warned.
-func Diff(strA, strB []byte) Differences {
-       if len(strA) == 0 && len(strB) == 0 {
-               return nil
-       }
-       ia, ib, l := longestCommonSubstring(strA, strB)
-       if l == 0 {
-               return Differences{
-                       Difference{true, strA, strB},
-               }
-       }
-       beforeA, match, afterA := strA[:ia], strA[ia:ia+l], strA[ia+l:]
-       beforeB, afterB := strB[:ib], strB[ib+l:]
-       var diffs Differences
-       diffs = append(diffs, Diff(beforeA, beforeB)...)
-       diffs = append(diffs, Difference{false, match, match})
-       diffs = append(diffs, Diff(afterA, afterB)...)
-       return diffs
-}
-
-// Differences is a set of differences for a given diff'd pair of byte slices.
-type Differences []Difference
-
-// String outputs a previously diff'd set of strings, showing differences
-// between them, highlighted by colors.
-//
-// The output format of this function is NOT guaranteed consistent, and may be
-// changed at any time by the library authors.  It's meant solely for human
-// consumption.
-func (c *OutputFormat) String(diffs Differences) string {
-       var buf bytes.Buffer
-       count := 0
-       fmt.Fprintf(&buf, "%s", c.start)
-       fmt.Fprintf(&buf, "00000000 ")
-       for i := 0; i < len(diffs); i++ {
-               diff := diffs[i]
-               color := c.color(diff)
-               reset := ""
-               if color != "" {
-                       reset = c.reset
-               }
-               fmt.Fprint(&buf, color)
-               for _, b := range diff.From {
-                       fmt.Fprintf(&buf, " %02x", b)
-                       count++
-                       switch count % 16 {
-                       case 0:
-                               fmt.Fprintf(&buf, "%v\n%08x%v ", reset, count, color)
-                       case 8:
-                               fmt.Fprintf(&buf, " ")
-                       }
-               }
-               fmt.Fprint(&buf, reset)
-       }
-       fmt.Fprintf(&buf, "\n\n00000000 ")
-       count = 0
-       for i := 0; i < len(diffs); i++ {
-               diff := diffs[i]
-               str := diff.From
-               if diff.Replace {
-                       str = diff.To
-               }
-               color := c.color(diff)
-               reset := ""
-               if color != "" {
-                       reset = c.reset
-               }
-               fmt.Fprint(&buf, color)
-               for _, b := range str {
-                       fmt.Fprintf(&buf, " %02x", b)
-                       count++
-                       switch count % 16 {
-                       case 0:
-                               fmt.Fprintf(&buf, "%v\n%08x%v ", reset, count, color)
-                       case 8:
-                               fmt.Fprintf(&buf, " ")
-                       }
-               }
-               fmt.Fprint(&buf, reset)
-       }
-       fmt.Fprint(&buf, "\n")
-       fmt.Fprintf(&buf, "%s", c.finish)
-       return string(buf.Bytes())
-}
diff --git a/vendor/github.com/google/gopacket/bytediff/bytediff_test.go b/vendor/github.com/google/gopacket/bytediff/bytediff_test.go
deleted file mode 100644 (file)
index 022ad4b..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package bytediff
-
-import (
-       "reflect"
-       "testing"
-)
-
-func TestLCS(t *testing.T) {
-       for i, test := range []struct {
-               a, b                   []byte
-               indexA, indexB, length int
-       }{
-               {[]byte{1, 2, 3}, []byte{1, 2, 3}, 0, 0, 3},
-               {[]byte{0, 1, 2, 3}, []byte{1, 2, 3, 4}, 1, 0, 3},
-               {[]byte{0, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3}, []byte{1, 2, 3, 4}, 4, 0, 4},
-               {[]byte{1, 2, 2, 3, 4}, []byte{1, 2, 3, 4}, 2, 1, 3},
-               {[]byte{0, 1, 2, 3, 4}, []byte{1, 1, 2, 2, 3, 4}, 2, 3, 3},
-       } {
-               ia, ib, l := longestCommonSubstring(test.a, test.b)
-               if ia != test.indexA || ib != test.indexB || l != test.length {
-                       t.Errorf("%d: want (%d %d %d) got (%d %d %d)", i, test.indexA, test.indexB, test.length, ia, ib, l)
-               }
-       }
-}
-
-func TestDiff(t *testing.T) {
-       for i, test := range []struct {
-               a, b []byte
-               d    Differences
-       }{
-               {
-                       []byte{0, 1, 2, 3, 4},
-                       []byte{1, 1, 2, 2, 3, 4},
-                       Differences{
-                               Difference{true, []byte{0}, []byte{}},
-                               Difference{false, []byte{1}, []byte{1}},
-                               Difference{true, []byte{}, []byte{1, 2}},
-                               Difference{false, []byte{2, 3, 4}, []byte{2, 3, 4}},
-                       },
-               },
-       } {
-               diffs := Diff(test.a, test.b)
-               if !reflect.DeepEqual(diffs, test.d) {
-                       t.Errorf("%d want %v got %v", i, test.d, diffs)
-               }
-       }
-}
diff --git a/vendor/github.com/google/gopacket/dumpcommand/tcpdump.go b/vendor/github.com/google/gopacket/dumpcommand/tcpdump.go
deleted file mode 100644 (file)
index 2d35722..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// Package dumpcommand implements a run function for pfdump and pcapdump
-// with many similar flags/features to tcpdump.  This code is split out seperate
-// from data sources (pcap/pfring) so it can be used by both.
-package dumpcommand
-
-import (
-       "flag"
-       "fmt"
-       "log"
-       "os"
-       "time"
-
-       "github.com/google/gopacket"
-       "github.com/google/gopacket/ip4defrag"
-       "github.com/google/gopacket/layers" // pulls in all layers decoders
-)
-
-var (
-       print       = flag.Bool("print", true, "Print out packets, if false only prints out statistics")
-       maxcount    = flag.Int("c", -1, "Only grab this many packets, then exit")
-       decoder     = flag.String("decoder", "Ethernet", "Name of the decoder to use")
-       dump        = flag.Bool("X", false, "If true, dump very verbose info on each packet")
-       statsevery  = flag.Int("stats", 1000, "Output statistics every N packets")
-       printErrors = flag.Bool("errors", false, "Print out packet dumps of decode errors, useful for checking decoders against live traffic")
-       lazy        = flag.Bool("lazy", false, "If true, do lazy decoding")
-       defrag      = flag.Bool("defrag", false, "If true, do IPv4 defrag")
-)
-
-func Run(src gopacket.PacketDataSource) {
-       if !flag.Parsed() {
-               log.Fatalln("Run called without flags.Parse() being called")
-       }
-       var dec gopacket.Decoder
-       var ok bool
-       if dec, ok = gopacket.DecodersByLayerName[*decoder]; !ok {
-               log.Fatalln("No decoder named", *decoder)
-       }
-       source := gopacket.NewPacketSource(src, dec)
-       source.Lazy = *lazy
-       source.NoCopy = true
-       source.DecodeStreamsAsDatagrams = true
-       fmt.Fprintln(os.Stderr, "Starting to read packets")
-       count := 0
-       bytes := int64(0)
-       start := time.Now()
-       errors := 0
-       truncated := 0
-       layertypes := map[gopacket.LayerType]int{}
-       defragger := ip4defrag.NewIPv4Defragmenter()
-
-       for packet := range source.Packets() {
-               count++
-               bytes += int64(len(packet.Data()))
-
-               // defrag the IPv4 packet if required
-               if *defrag {
-                       ip4Layer := packet.Layer(layers.LayerTypeIPv4)
-                       if ip4Layer == nil {
-                               continue
-                       }
-                       ip4 := ip4Layer.(*layers.IPv4)
-                       l := ip4.Length
-
-                       newip4, err := defragger.DefragIPv4(ip4)
-                       if err != nil {
-                               log.Fatalln("Error while de-fragmenting", err)
-                       } else if newip4 == nil {
-                               continue // packet fragment, we don't have whole packet yet.
-                       }
-                       if newip4.Length != l {
-                               fmt.Printf("Decoding re-assembled packet: %s\n", newip4.NextLayerType())
-                               pb, ok := packet.(gopacket.PacketBuilder)
-                               if !ok {
-                                       panic("Not a PacketBuilder")
-                               }
-                               nextDecoder := newip4.NextLayerType()
-                               nextDecoder.Decode(newip4.Payload, pb)
-                       }
-               }
-
-               if *dump {
-                       fmt.Println(packet.Dump())
-               } else if *print {
-                       fmt.Println(packet)
-               }
-               if !*lazy || *print || *dump { // if we've already decoded all layers...
-                       for _, layer := range packet.Layers() {
-                               layertypes[layer.LayerType()]++
-                       }
-                       if packet.Metadata().Truncated {
-                               truncated++
-                       }
-                       if errLayer := packet.ErrorLayer(); errLayer != nil {
-                               errors++
-                               if *printErrors {
-                                       fmt.Println("Error:", errLayer.Error())
-                                       fmt.Println("--- Packet ---")
-                                       fmt.Println(packet.Dump())
-                               }
-                       }
-               }
-               done := *maxcount > 0 && count >= *maxcount
-               if count%*statsevery == 0 || done {
-                       fmt.Fprintf(os.Stderr, "Processed %v packets (%v bytes) in %v, %v errors and %v truncated packets\n", count, bytes, time.Since(start), errors, truncated)
-                       if len(layertypes) > 0 {
-                               fmt.Fprintf(os.Stderr, "Layer types seen: %+v\n", layertypes)
-                       }
-               }
-               if done {
-                       break
-               }
-       }
-}
diff --git a/vendor/github.com/google/gopacket/examples/arpscan/arpscan.go b/vendor/github.com/google/gopacket/examples/arpscan/arpscan.go
deleted file mode 100644 (file)
index 1a0e33e..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// arpscan implements ARP scanning of all interfaces' local networks using
-// gopacket and its subpackages.  This example shows, among other things:
-//   * Generating and sending packet data
-//   * Reading in packet data and interpreting it
-//   * Use of the 'pcap' subpackage for reading/writing
-package main
-
-import (
-       "bytes"
-       "encoding/binary"
-       "errors"
-       "log"
-       "net"
-       "sync"
-       "time"
-
-       "github.com/google/gopacket"
-       "github.com/google/gopacket/layers"
-       "github.com/google/gopacket/pcap"
-)
-
-func main() {
-       // Get a list of all interfaces.
-       ifaces, err := net.Interfaces()
-       if err != nil {
-               panic(err)
-       }
-
-       var wg sync.WaitGroup
-       for _, iface := range ifaces {
-               wg.Add(1)
-               // Start up a scan on each interface.
-               go func(iface net.Interface) {
-                       defer wg.Done()
-                       if err := scan(&iface); err != nil {
-                               log.Printf("interface %v: %v", iface.Name, err)
-                       }
-               }(iface)
-       }
-       // Wait for all interfaces' scans to complete.  They'll try to run
-       // forever, but will stop on an error, so if we get past this Wait
-       // it means all attempts to write have failed.
-       wg.Wait()
-}
-
-// scan scans an individual interface's local network for machines using ARP requests/replies.
-//
-// scan loops forever, sending packets out regularly.  It returns an error if
-// it's ever unable to write a packet.
-func scan(iface *net.Interface) error {
-       // We just look for IPv4 addresses, so try to find if the interface has one.
-       var addr *net.IPNet
-       if addrs, err := iface.Addrs(); err != nil {
-               return err
-       } else {
-               for _, a := range addrs {
-                       if ipnet, ok := a.(*net.IPNet); ok {
-                               if ip4 := ipnet.IP.To4(); ip4 != nil {
-                                       addr = &net.IPNet{
-                                               IP:   ip4,
-                                               Mask: ipnet.Mask[len(ipnet.Mask)-4:],
-                                       }
-                                       break
-                               }
-                       }
-               }
-       }
-       // Sanity-check that the interface has a good address.
-       if addr == nil {
-               return errors.New("no good IP network found")
-       } else if addr.IP[0] == 127 {
-               return errors.New("skipping localhost")
-       } else if addr.Mask[0] != 0xff || addr.Mask[1] != 0xff {
-               return errors.New("mask means network is too large")
-       }
-       log.Printf("Using network range %v for interface %v", addr, iface.Name)
-
-       // Open up a pcap handle for packet reads/writes.
-       handle, err := pcap.OpenLive(iface.Name, 65536, true, pcap.BlockForever)
-       if err != nil {
-               return err
-       }
-       defer handle.Close()
-
-       // Start up a goroutine to read in packet data.
-       stop := make(chan struct{})
-       go readARP(handle, iface, stop)
-       defer close(stop)
-       for {
-               // Write our scan packets out to the handle.
-               if err := writeARP(handle, iface, addr); err != nil {
-                       log.Printf("error writing packets on %v: %v", iface.Name, err)
-                       return err
-               }
-               // We don't know exactly how long it'll take for packets to be
-               // sent back to us, but 10 seconds should be more than enough
-               // time ;)
-               time.Sleep(10 * time.Second)
-       }
-}
-
-// readARP watches a handle for incoming ARP responses we might care about, and prints them.
-//
-// readARP loops until 'stop' is closed.
-func readARP(handle *pcap.Handle, iface *net.Interface, stop chan struct{}) {
-       src := gopacket.NewPacketSource(handle, layers.LayerTypeEthernet)
-       in := src.Packets()
-       for {
-               var packet gopacket.Packet
-               select {
-               case <-stop:
-                       return
-               case packet = <-in:
-                       arpLayer := packet.Layer(layers.LayerTypeARP)
-                       if arpLayer == nil {
-                               continue
-                       }
-                       arp := arpLayer.(*layers.ARP)
-                       if arp.Operation != layers.ARPReply || bytes.Equal([]byte(iface.HardwareAddr), arp.SourceHwAddress) {
-                               // This is a packet I sent.
-                               continue
-                       }
-                       // Note:  we might get some packets here that aren't responses to ones we've sent,
-                       // if for example someone else sends US an ARP request.  Doesn't much matter, though...
-                       // all information is good information :)
-                       log.Printf("IP %v is at %v", net.IP(arp.SourceProtAddress), net.HardwareAddr(arp.SourceHwAddress))
-               }
-       }
-}
-
-// writeARP writes an ARP request for each address on our local network to the
-// pcap handle.
-func writeARP(handle *pcap.Handle, iface *net.Interface, addr *net.IPNet) error {
-       // Set up all the layers' fields we can.
-       eth := layers.Ethernet{
-               SrcMAC:       iface.HardwareAddr,
-               DstMAC:       net.HardwareAddr{0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
-               EthernetType: layers.EthernetTypeARP,
-       }
-       arp := layers.ARP{
-               AddrType:          layers.LinkTypeEthernet,
-               Protocol:          layers.EthernetTypeIPv4,
-               HwAddressSize:     6,
-               ProtAddressSize:   4,
-               Operation:         layers.ARPRequest,
-               SourceHwAddress:   []byte(iface.HardwareAddr),
-               SourceProtAddress: []byte(addr.IP),
-               DstHwAddress:      []byte{0, 0, 0, 0, 0, 0},
-       }
-       // Set up buffer and options for serialization.
-       buf := gopacket.NewSerializeBuffer()
-       opts := gopacket.SerializeOptions{
-               FixLengths:       true,
-               ComputeChecksums: true,
-       }
-       // Send one packet for every address.
-       for _, ip := range ips(addr) {
-               arp.DstProtAddress = []byte(ip)
-               gopacket.SerializeLayers(buf, opts, &eth, &arp)
-               if err := handle.WritePacketData(buf.Bytes()); err != nil {
-                       return err
-               }
-       }
-       return nil
-}
-
-// ips is a simple and not very good method for getting all IPv4 addresses from a
-// net.IPNet.  It returns all IPs it can over the channel it sends back, closing
-// the channel when done.
-func ips(n *net.IPNet) (out []net.IP) {
-       num := binary.BigEndian.Uint32([]byte(n.IP))
-       mask := binary.BigEndian.Uint32([]byte(n.Mask))
-       num &= mask
-       for mask < 0xffffffff {
-               var buf [4]byte
-               binary.BigEndian.PutUint32(buf[:], num)
-               out = append(out, net.IP(buf[:]))
-               mask += 1
-               num += 1
-       }
-       return
-}
diff --git a/vendor/github.com/google/gopacket/examples/bidirectional/main.go b/vendor/github.com/google/gopacket/examples/bidirectional/main.go
deleted file mode 100644 (file)
index 4b0b240..0000000
+++ /dev/null
@@ -1,192 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// This binary provides an example of connecting up bidirectional streams from
-// the unidirectional streams provided by gopacket/tcpassembly.
-package main
-
-import (
-       "flag"
-       "fmt"
-       "github.com/google/gopacket"
-       "github.com/google/gopacket/examples/util"
-       "github.com/google/gopacket/layers"
-       "github.com/google/gopacket/pcap"
-       "github.com/google/gopacket/tcpassembly"
-       "log"
-       "time"
-)
-
-var iface = flag.String("i", "eth0", "Interface to get packets from")
-var snaplen = flag.Int("s", 16<<10, "SnapLen for pcap packet capture")
-var filter = flag.String("f", "tcp", "BPF filter for pcap")
-var logAllPackets = flag.Bool("v", false, "Logs every packet in great detail")
-
-// key is used to map bidirectional streams to each other.
-type key struct {
-       net, transport gopacket.Flow
-}
-
-// String prints out the key in a human-readable fashion.
-func (k key) String() string {
-       return fmt.Sprintf("%v:%v", k.net, k.transport)
-}
-
-// timeout is the length of time to wait befor flushing connections and
-// bidirectional stream pairs.
-const timeout time.Duration = time.Minute * 5
-
-// myStream implements tcpassembly.Stream
-type myStream struct {
-       bytes int64 // total bytes seen on this stream.
-       bidi  *bidi // maps to my bidirectional twin.
-       done  bool  // if true, we've seen the last packet we're going to for this stream.
-}
-
-// bidi stores each unidirectional side of a bidirectional stream.
-//
-// When a new stream comes in, if we don't have an opposite stream, a bidi is
-// created with 'a' set to the new stream.  If we DO have an opposite stream,
-// 'b' is set to the new stream.
-type bidi struct {
-       key            key       // Key of the first stream, mostly for logging.
-       a, b           *myStream // the two bidirectional streams.
-       lastPacketSeen time.Time // last time we saw a packet from either stream.
-}
-
-// myFactory implements tcpassmebly.StreamFactory
-type myFactory struct {
-       // bidiMap maps keys to bidirectional stream pairs.
-       bidiMap map[key]*bidi
-}
-
-// New handles creating a new tcpassembly.Stream.
-func (f *myFactory) New(netFlow, tcpFlow gopacket.Flow) tcpassembly.Stream {
-       // Create a new stream.
-       s := &myStream{}
-
-       // Find the bidi bidirectional struct for this stream, creating a new one if
-       // one doesn't already exist in the map.
-       k := key{netFlow, tcpFlow}
-       bd := f.bidiMap[k]
-       if bd == nil {
-               bd = &bidi{a: s, key: k}
-               log.Printf("[%v] created first side of bidirectional stream", bd.key)
-               // Register bidirectional with the reverse key, so the matching stream going
-               // the other direction will find it.
-               f.bidiMap[key{netFlow.Reverse(), tcpFlow.Reverse()}] = bd
-       } else {
-               log.Printf("[%v] found second side of bidirectional stream", bd.key)
-               bd.b = s
-               // Clear out the bidi we're using from the map, just in case.
-               delete(f.bidiMap, k)
-       }
-       s.bidi = bd
-       return s
-}
-
-// emptyStream is used to finish bidi that only have one stream, in
-// collectOldStreams.
-var emptyStream = &myStream{done: true}
-
-// collectOldStreams finds any streams that haven't received a packet within
-// 'timeout', and sets/finishes the 'b' stream inside them.  The 'a' stream may
-// still receive packets after this.
-func (f *myFactory) collectOldStreams() {
-       cutoff := time.Now().Add(-timeout)
-       for k, bd := range f.bidiMap {
-               if bd.lastPacketSeen.Before(cutoff) {
-                       log.Printf("[%v] timing out old stream", bd.key)
-                       bd.b = emptyStream   // stub out b with an empty stream.
-                       delete(f.bidiMap, k) // remove it from our map.
-                       bd.maybeFinish()     // if b was the last stream we were waiting for, finish up.
-               }
-       }
-}
-
-// Reassembled handles reassembled TCP stream data.
-func (s *myStream) Reassembled(rs []tcpassembly.Reassembly) {
-       for _, r := range rs {
-               // For now, we'll simply count the bytes on each side of the TCP stream.
-               s.bytes += int64(len(r.Bytes))
-               if r.Skip > 0 {
-                       s.bytes += int64(r.Skip)
-               }
-               // Mark that we've received new packet data.
-               // We could just use time.Now, but by using r.Seen we handle the case
-               // where packets are being read from a file and could be very old.
-               if s.bidi.lastPacketSeen.After(r.Seen) {
-                       s.bidi.lastPacketSeen = r.Seen
-               }
-       }
-}
-
-// ReassemblyComplete marks this stream as finished.
-func (s *myStream) ReassemblyComplete() {
-       s.done = true
-       s.bidi.maybeFinish()
-}
-
-// maybeFinish will wait until both directions are complete, then print out
-// stats.
-func (bd *bidi) maybeFinish() {
-       switch {
-       case bd.a == nil:
-               log.Fatalf("[%v] a should always be non-nil, since it's set when bidis are created", bd.key)
-       case !bd.a.done:
-               log.Printf("[%v] still waiting on first stream", bd.key)
-       case bd.b == nil:
-               log.Printf("[%v] no second stream yet", bd.key)
-       case !bd.b.done:
-               log.Printf("[%v] still waiting on second stream", bd.key)
-       default:
-               log.Printf("[%v] FINISHED, bytes: %d tx, %d rx", bd.key, bd.a.bytes, bd.b.bytes)
-       }
-}
-
-func main() {
-       defer util.Run()()
-       log.Printf("starting capture on interface %q", *iface)
-       // Set up pcap packet capture
-       handle, err := pcap.OpenLive(*iface, int32(*snaplen), true, pcap.BlockForever)
-       if err != nil {
-               panic(err)
-       }
-       if err := handle.SetBPFFilter(*filter); err != nil {
-               panic(err)
-       }
-
-       // Set up assembly
-       streamFactory := &myFactory{bidiMap: make(map[key]*bidi)}
-       streamPool := tcpassembly.NewStreamPool(streamFactory)
-       assembler := tcpassembly.NewAssembler(streamPool)
-
-       log.Println("reading in packets")
-       // Read in packets, pass to assembler.
-       packetSource := gopacket.NewPacketSource(handle, handle.LinkType())
-       packets := packetSource.Packets()
-       ticker := time.Tick(timeout / 4)
-       for {
-               select {
-               case packet := <-packets:
-                       if *logAllPackets {
-                               log.Println(packet)
-                       }
-                       if packet.NetworkLayer() == nil || packet.TransportLayer() == nil || packet.TransportLayer().LayerType() != layers.LayerTypeTCP {
-                               log.Println("Unusable packet")
-                               continue
-                       }
-                       tcp := packet.TransportLayer().(*layers.TCP)
-                       assembler.AssembleWithTimestamp(packet.NetworkLayer().NetworkFlow(), tcp, packet.Metadata().Timestamp)
-
-               case <-ticker:
-                       // Every minute, flush connections that haven't seen activity in the past minute.
-                       log.Println("---- FLUSHING ----")
-                       assembler.FlushOlderThan(time.Now().Add(-timeout))
-                       streamFactory.collectOldStreams()
-               }
-       }
-}
diff --git a/vendor/github.com/google/gopacket/examples/bytediff/bytediff.png b/vendor/github.com/google/gopacket/examples/bytediff/bytediff.png
deleted file mode 100644 (file)
index 5aa3c8a..0000000
Binary files a/vendor/github.com/google/gopacket/examples/bytediff/bytediff.png and /dev/null differ
diff --git a/vendor/github.com/google/gopacket/examples/bytediff/main.go b/vendor/github.com/google/gopacket/examples/bytediff/main.go
deleted file mode 100644 (file)
index 2a4c11b..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// This binary shows how to display byte differences to users via the bytediff
-// library.
-package main
-
-import (
-       "fmt"
-       "github.com/google/gopacket/bytediff"
-)
-
-var sliceA = []byte{
-       0x00, 0x00, 0x0c, 0x9f, 0xf0, 0x20, 0xbc, 0x30, 0x5b, 0xe8, 0xd3, 0x49,
-       0x08, 0x00, 0x45, 0x00, 0x01, 0xa4, 0x39, 0xdf, 0x40, 0x00, 0x40, 0x06,
-       0x55, 0x5a, 0xac, 0x11, 0x51, 0x49, 0xad, 0xde, 0xfe, 0xe1, 0xc5, 0xf7,
-       0x00, 0x50, 0xc5, 0x7e, 0x0e, 0x48, 0x49, 0x07, 0x42, 0x32, 0x80, 0x18,
-       0x00, 0x73, 0x9a, 0x8f, 0x00, 0x00, 0x01, 0x01, 0x08, 0x0a, 0x03, 0x77,
-       0x37, 0x9c, 0x42, 0x77, 0x5e, 0x3a, 0x47, 0x45, 0x54, 0x20, 0x2f, 0x20,
-       0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, 0x0d, 0x0a, 0x48, 0x6f,
-       0x73, 0x74, 0x3a, 0x20, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x69, 0x73, 0x68,
-       0x2e, 0x63, 0x6f, 0x6d, 0x0d, 0x0a, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
-       0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x6b, 0x65, 0x65, 0x70, 0x2d, 0x61,
-       0x6c, 0x69, 0x76, 0x65, 0x0d, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x2d, 0x41,
-       0x67, 0x65, 0x6e, 0x74, 0x3a, 0x20, 0x4d, 0x6f, 0x7a, 0x69, 0x6c, 0x6c,
-       0x61, 0x2f, 0x35, 0x2e, 0x30, 0x20, 0x28, 0x58, 0x31, 0x31, 0x3b, 0x20,
-       0x4c, 0x69, 0x6e, 0x75, 0x78, 0x20, 0x78, 0x38, 0x36, 0x5f, 0x36, 0x34,
-       0x29, 0x20, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x57, 0x65, 0x62, 0x4b, 0x69,
-       0x74, 0x2f, 0x35, 0x33, 0x35, 0x2e, 0x32, 0x20, 0x28, 0x4b, 0x48, 0x54,
-       0x4d, 0x4c, 0x2c, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, 0x47, 0x65, 0x63,
-       0x6b, 0x6f, 0x29, 0x20, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2f, 0x31,
-       0x35, 0x2e, 0x30, 0x2e, 0x38, 0x37, 0x34, 0x2e, 0x31, 0x32, 0x31, 0x20,
-       0x53, 0x61, 0x66, 0x61, 0x72, 0x69, 0x2f, 0x35, 0x2e, 0x31,
-       0x0d, 0x0a, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x3a, 0x20, 0x74, 0x65,
-       0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x2c, 0x61, 0x70, 0x70, 0x6c,
-       0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x78, 0x68, 0x74, 0x6d,
-       0x6c, 0x2b, 0x78, 0x6d, 0x6c, 0x2c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63,
-       0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x78, 0x6d, 0x6c, 0x3b, 0x71, 0x3d,
-       0x30, 0x2e, 0x39, 0x2c, 0x2a, 0x2f, 0x2a, 0x3b, 0x71, 0x3d, 0x30, 0x2e,
-       0x38, 0x0d, 0x0a, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x45, 0x6e,
-       0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x20, 0x67, 0x7a, 0x69, 0x70,
-       0x2c, 0x64, 0x65, 0x66, 0x6c, 0x61, 0x74, 0x65, 0x2c, 0x73, 0x64, 0x63,
-       0x68, 0x0d, 0x0a, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x4c, 0x61,
-       0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x3a, 0x20, 0x65, 0x6e, 0x2d, 0x55,
-       0x53, 0x2c, 0x65, 0x6e, 0x3b, 0x71, 0x3d, 0x30, 0x2e, 0x38, 0x0d, 0x0a,
-       0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x43, 0x68, 0x61, 0x72, 0x73,
-       0x65, 0x74, 0x3a, 0x20, 0x49, 0x53, 0x4f, 0x2d, 0x38, 0x38, 0x35, 0x39,
-       0x2d, 0x31, 0x2c, 0x75, 0x74, 0x66, 0x2d, 0x38, 0x3b, 0x71, 0x3d, 0x30,
-       0x2e, 0x37, 0x2c, 0x2a, 0x3b, 0x71, 0x3d, 0x30, 0x2e, 0x33, 0x0d, 0x0a,
-       0x0d, 0x0a,
-}
-var sliceB = []byte{
-       0x00, 0x00, 0x0c, 0x9f, 0xf0, 0x20, 0xbc, 0x30, 0x5b, 0xe8, 0xd3, 0x49,
-       0x08, 0x00, 0x45, 0x00, 0x01, 0xa4, 0x39, 0xdf, 0x40, 0x00, 0x40, 0x06,
-       0x55, 0x5a, 0xac, 0x11, 0x51, 0x49, 0xad, 0xde, 0xfe, 0xe1, 0xc5, 0xf7,
-       0x00, 0x50, 0xc5, 0x7e, 0x0e, 0x48, 0x49, 0x07, 0x42, 0x32, 0x80, 0x18,
-       0x00, 0x73, 0x9a, 0x8f, 0x00, 0x00, 0x01, 0x01, 0x08, 0x0a, 0x03, 0x77,
-       0x37, 0x9c, 0x42, 0x77, 0x5e, 0x3a, 0x47, 0x45, 0x54, 0x20, 0x2f, 0x20,
-       0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, 0x0d, 0x0a, 0x48, 0x6f,
-       0x73, 0x74, 0x3a, 0x20, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x69, 0x73, 0x68,
-       0x2e, 0x63, 0x6f, 0x6d, 0x0d, 0x0a, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
-       0x6c, 0x69, 0x76, 0x65, 0x0d, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x2d, 0x41,
-       0x67, 0x65, 0x6e, 0x74, 0x3a, 0x20, 0x4d, 0x6f, 0x7a, 0x69, 0x6c, 0x6c,
-       0x61, 0x2f, 0x35, 0x2e, 0x30, 0x20, 0x28, 0x58, 0x31, 0x31, 0x3b, 0x20,
-       0x4c, 0x69, 0x6e, 0x75, 0x78, 0x20, 0x78, 0x38, 0x36, 0x5f, 0x36, 0x34,
-       0x29, 0x20, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x57, 0x65, 0x62, 0x4b, 0x69,
-       0x74, 0x2f, 0x35, 0x33, 0x35, 0x2e, 0x32, 0x20, 0x28, 0x4b, 0x48, 0x54,
-       0x4d, 0x4c, 0x2c, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, 0x47, 0x65, 0x63,
-       0x6b, 0x6f, 0x29, 0x20, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2f, 0x31,
-       0x35, 0x2e, 0x30, 0x2e, 0x38, 0x37, 0x34, 0x2e, 0x31, 0x32, 0x31, 0x20,
-       0x53, 0x61, 0x66, 0x61, 0x72, 0x69, 0x2f, 0x35, 0x33, 0x35, 0x2e, 0x32,
-       0x0d, 0x0a, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x3a, 0x20, 0x74, 0x65,
-       0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x2c, 0x61, 0x70, 0x70, 0x6c,
-       0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x78, 0x68, 0x74, 0x6d,
-       0x6c, 0x2b, 0x78, 0x6d, 0x6c, 0x2c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63,
-       0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x78, 0x6d, 0x6c, 0x3b, 0x71, 0x3d,
-       0x30, 0x2e, 0x39, 0x2c, 0x2a, 0x2f, 0x2a, 0x3b, 0x71, 0x3d, 0x30, 0x2e,
-       0x38, 0x0d, 0x0a, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x45, 0x6e,
-       0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x20, 0x67, 0x7a, 0x69, 0x70,
-       0x2c, 0x64, 0x65, 0x66, 0x6c, 0x61, 0x74, 0x65, 0x2c, 0x73, 0x64, 0x63,
-       0x68, 0x0d, 0x0a, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x4c, 0x61,
-       0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x3a, 0x20, 0x65, 0x6e, 0x2d, 0x55,
-       0x53, 0x2c, 0x65, 0x6e, 0x3b, 0x71, 0x3d, 0x30, 0x2e, 0x38, 0x0d, 0x0a,
-       0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x43, 0x68, 0x61, 0x72, 0x73,
-       0x65, 0x74, 0x3a, 0x20, 0x49, 0x53, 0x4f, 0x2e, 0x39, 0x55, 0x35, 0x39,
-       0x2d, 0x31, 0x2c, 0x75, 0x74, 0x66, 0x2d, 0x38, 0x3b, 0x71, 0x3d, 0x30,
-       0x2e, 0x37, 0x2c, 0x2a, 0x3b, 0x71, 0x3d, 0x30, 0x2e, 0x33, 0x0d, 0x0a,
-       0x0d, 0x0a,
-}
-
-func main() {
-       fmt.Println(bytediff.BashOutput.String(bytediff.Diff(sliceA, sliceB)))
-}
diff --git a/vendor/github.com/google/gopacket/examples/httpassembly/main.go b/vendor/github.com/google/gopacket/examples/httpassembly/main.go
deleted file mode 100644 (file)
index 02af21e..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// This binary provides sample code for using the gopacket TCP assembler and TCP
-// stream reader.  It reads packets off the wire and reconstructs HTTP requests
-// it sees, logging them.
-package main
-
-import (
-       "bufio"
-       "flag"
-       "io"
-       "log"
-       "net/http"
-       "time"
-
-       "github.com/google/gopacket"
-       "github.com/google/gopacket/examples/util"
-       "github.com/google/gopacket/layers"
-       "github.com/google/gopacket/pcap"
-       "github.com/google/gopacket/tcpassembly"
-       "github.com/google/gopacket/tcpassembly/tcpreader"
-)
-
-var iface = flag.String("i", "eth0", "Interface to get packets from")
-var fname = flag.String("r", "", "Filename to read from, overrides -i")
-var snaplen = flag.Int("s", 1600, "SnapLen for pcap packet capture")
-var filter = flag.String("f", "tcp and dst port 80", "BPF filter for pcap")
-var logAllPackets = flag.Bool("v", false, "Logs every packet in great detail")
-
-// Build a simple HTTP request parser using tcpassembly.StreamFactory and tcpassembly.Stream interfaces
-
-// httpStreamFactory implements tcpassembly.StreamFactory
-type httpStreamFactory struct{}
-
-// httpStream will handle the actual decoding of http requests.
-type httpStream struct {
-       net, transport gopacket.Flow
-       r              tcpreader.ReaderStream
-}
-
-func (h *httpStreamFactory) New(net, transport gopacket.Flow) tcpassembly.Stream {
-       hstream := &httpStream{
-               net:       net,
-               transport: transport,
-               r:         tcpreader.NewReaderStream(),
-       }
-       go hstream.run() // Important... we must guarantee that data from the reader stream is read.
-
-       // ReaderStream implements tcpassembly.Stream, so we can return a pointer to it.
-       return &hstream.r
-}
-
-func (h *httpStream) run() {
-       buf := bufio.NewReader(&h.r)
-       for {
-               req, err := http.ReadRequest(buf)
-               if err == io.EOF {
-                       // We must read until we see an EOF... very important!
-                       return
-               } else if err != nil {
-                       log.Println("Error reading stream", h.net, h.transport, ":", err)
-               } else {
-                       bodyBytes := tcpreader.DiscardBytesToEOF(req.Body)
-                       req.Body.Close()
-                       log.Println("Received request from stream", h.net, h.transport, ":", req, "with", bodyBytes, "bytes in request body")
-               }
-       }
-}
-
-func main() {
-       defer util.Run()()
-       var handle *pcap.Handle
-       var err error
-
-       // Set up pcap packet capture
-       if *fname != "" {
-               log.Printf("Reading from pcap dump %q", *fname)
-               handle, err = pcap.OpenOffline(*fname)
-       } else {
-               log.Printf("Starting capture on interface %q", *iface)
-               handle, err = pcap.OpenLive(*iface, int32(*snaplen), true, pcap.BlockForever)
-       }
-       if err != nil {
-               log.Fatal(err)
-       }
-
-       if err := handle.SetBPFFilter(*filter); err != nil {
-               log.Fatal(err)
-       }
-
-       // Set up assembly
-       streamFactory := &httpStreamFactory{}
-       streamPool := tcpassembly.NewStreamPool(streamFactory)
-       assembler := tcpassembly.NewAssembler(streamPool)
-
-       log.Println("reading in packets")
-       // Read in packets, pass to assembler.
-       packetSource := gopacket.NewPacketSource(handle, handle.LinkType())
-       packets := packetSource.Packets()
-       ticker := time.Tick(time.Minute)
-       for {
-               select {
-               case packet := <-packets:
-                       // A nil packet indicates the end of a pcap file.
-                       if packet == nil {
-                               return
-                       }
-                       if *logAllPackets {
-                               log.Println(packet)
-                       }
-                       if packet.NetworkLayer() == nil || packet.TransportLayer() == nil || packet.TransportLayer().LayerType() != layers.LayerTypeTCP {
-                               log.Println("Unusable packet")
-                               continue
-                       }
-                       tcp := packet.TransportLayer().(*layers.TCP)
-                       assembler.AssembleWithTimestamp(packet.NetworkLayer().NetworkFlow(), tcp, packet.Metadata().Timestamp)
-
-               case <-ticker:
-                       // Every minute, flush connections that haven't seen activity in the past 2 minutes.
-                       assembler.FlushOlderThan(time.Now().Add(time.Minute * -2))
-               }
-       }
-}
diff --git a/vendor/github.com/google/gopacket/examples/pcapdump/main.go b/vendor/github.com/google/gopacket/examples/pcapdump/main.go
deleted file mode 100644 (file)
index 373dee2..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// The pcapdump binary implements a tcpdump-like command line tool with gopacket
-// using pcap as a backend data collection mechanism.
-package main
-
-import (
-       "flag"
-       "fmt"
-       "github.com/google/gopacket/dumpcommand"
-       "github.com/google/gopacket/examples/util"
-       "github.com/google/gopacket/pcap"
-       "log"
-       "os"
-       "strings"
-       "time"
-)
-
-var iface = flag.String("i", "eth0", "Interface to read packets from")
-var fname = flag.String("r", "", "Filename to read from, overrides -i")
-var snaplen = flag.Int("s", 65536, "Snap length (number of bytes max to read per packet")
-var tstype = flag.String("timestamp_type", "", "Type of timestamps to use")
-var promisc = flag.Bool("promisc", true, "Set promiscuous mode")
-
-func main() {
-       defer util.Run()()
-       var handle *pcap.Handle
-       var err error
-       if *fname != "" {
-               if handle, err = pcap.OpenOffline(*fname); err != nil {
-                       log.Fatal("PCAP OpenOffline error:", err)
-               }
-       } else {
-               // This is a little complicated because we want to allow all possible options
-               // for creating the packet capture handle... instead of all this you can
-               // just call pcap.OpenLive if you want a simple handle.
-               inactive, err := pcap.NewInactiveHandle(*iface)
-               if err != nil {
-                       log.Fatalf("could not create: %v", err)
-               }
-               defer inactive.CleanUp()
-               if err = inactive.SetSnapLen(*snaplen); err != nil {
-                       log.Fatalf("could not set snap length: %v", err)
-               } else if err = inactive.SetPromisc(*promisc); err != nil {
-                       log.Fatalf("could not set promisc mode: %v", err)
-               } else if err = inactive.SetTimeout(time.Second); err != nil {
-                       log.Fatalf("could not set timeout: %v", err)
-               }
-               if *tstype != "" {
-                       if t, err := pcap.TimestampSourceFromString(*tstype); err != nil {
-                               log.Fatalf("Supported timestamp types: %v", inactive.SupportedTimestamps())
-                       } else if err := inactive.SetTimestampSource(t); err != nil {
-                               log.Fatalf("Supported timestamp types: %v", inactive.SupportedTimestamps())
-                       }
-               }
-               if handle, err = inactive.Activate(); err != nil {
-                       log.Fatal("PCAP Activate error:", err)
-               }
-               defer handle.Close()
-       }
-       if len(flag.Args()) > 0 {
-               bpffilter := strings.Join(flag.Args(), " ")
-               fmt.Fprintf(os.Stderr, "Using BPF filter %q\n", bpffilter)
-               if err = handle.SetBPFFilter(bpffilter); err != nil {
-                       log.Fatal("BPF filter error:", err)
-               }
-       }
-       dumpcommand.Run(handle)
-}
diff --git a/vendor/github.com/google/gopacket/examples/pcaplay/main.go b/vendor/github.com/google/gopacket/examples/pcaplay/main.go
deleted file mode 100644 (file)
index d36d860..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// The pcaplay binary load an offline capture (pcap file) and replay
-// it on the select interface, with an emphasis on packet timing
-package main
-
-import (
-       "flag"
-       "fmt"
-       "io"
-       "log"
-       "os"
-       "strings"
-       "time"
-
-       "github.com/google/gopacket"
-       "github.com/google/gopacket/examples/util"
-       "github.com/google/gopacket/pcap"
-)
-
-var iface = flag.String("i", "eth0", "Interface to write packets to")
-var fname = flag.String("r", "", "Filename to read from")
-var fast = flag.Bool("f", false, "Send each packets as fast as possible")
-
-var lastTS time.Time
-var lastSend time.Time
-
-var start time.Time
-var bytesSent int
-
-func writePacketDelayed(handle *pcap.Handle, buf []byte, ci gopacket.CaptureInfo) {
-       if ci.CaptureLength != ci.Length {
-               // do not write truncated packets
-               return
-       }
-
-       intervalInCapture := ci.Timestamp.Sub(lastTS)
-       elapsedTime := time.Since(lastSend)
-
-       if (intervalInCapture > elapsedTime) && !lastSend.IsZero() {
-               time.Sleep(intervalInCapture - elapsedTime)
-       }
-
-       lastSend = time.Now()
-       writePacket(handle, buf)
-       lastTS = ci.Timestamp
-}
-
-func writePacket(handle *pcap.Handle, buf []byte) error {
-       if err := handle.WritePacketData(buf); err != nil {
-               log.Printf("Failed to send packet: %s\n", err)
-               return err
-       }
-       return nil
-}
-
-func pcapInfo(filename string) (start time.Time, end time.Time, packets int, size int) {
-       handleRead, err := pcap.OpenOffline(*fname)
-       if err != nil {
-               log.Fatal("PCAP OpenOffline error (handle to read packet):", err)
-       }
-
-       var previousTs time.Time
-       var deltaTotal time.Duration
-
-       for {
-               data, ci, err := handleRead.ReadPacketData()
-               if err != nil && err != io.EOF {
-                       log.Fatal(err)
-               } else if err == io.EOF {
-                       break
-               } else {
-
-                       if start.IsZero() {
-                               start = ci.Timestamp
-                       }
-                       end = ci.Timestamp
-                       packets++
-                       size += len(data)
-
-                       if previousTs.IsZero() {
-                               previousTs = ci.Timestamp
-                       } else {
-                               deltaTotal += ci.Timestamp.Sub(previousTs)
-                               previousTs = ci.Timestamp
-                       }
-               }
-       }
-       sec := int(deltaTotal.Seconds())
-       if sec == 0 {
-               sec = 1
-       }
-       fmt.Printf("Avg packet rate %d/s\n", packets/sec)
-       return start, end, packets, size
-}
-
-func main() {
-       defer util.Run()()
-
-       // Sanity checks
-       if *fname == "" {
-               log.Fatal("Need a input file")
-       }
-
-       // Open PCAP file + handle potential BPF Filter
-       handleRead, err := pcap.OpenOffline(*fname)
-       if err != nil {
-               log.Fatal("PCAP OpenOffline error (handle to read packet):", err)
-       }
-       defer handleRead.Close()
-       if len(flag.Args()) > 0 {
-               bpffilter := strings.Join(flag.Args(), " ")
-               fmt.Fprintf(os.Stderr, "Using BPF filter %q\n", bpffilter)
-               if err = handleRead.SetBPFFilter(bpffilter); err != nil {
-                       log.Fatal("BPF filter error:", err)
-               }
-       }
-       // Open up a second pcap handle for packet writes.
-       handleWrite, err := pcap.OpenLive(*iface, 65536, true, pcap.BlockForever)
-       if err != nil {
-               log.Fatal("PCAP OpenLive error (handle to write packet):", err)
-       }
-       defer handleWrite.Close()
-
-       start = time.Now()
-       pkt := 0
-       tsStart, tsEnd, packets, size := pcapInfo(*fname)
-
-       // Loop over packets and write them
-       for {
-               data, ci, err := handleRead.ReadPacketData()
-               switch {
-               case err == io.EOF:
-                       fmt.Printf("\nFinished in %s", time.Since(start))
-                       return
-               case err != nil:
-                       log.Printf("Failed to read packet %d: %s\n", pkt, err)
-               default:
-                       if *fast {
-                               writePacket(handleWrite, data)
-                       } else {
-                               writePacketDelayed(handleWrite, data, ci)
-                       }
-
-                       bytesSent += len(data)
-                       duration := time.Since(start)
-                       pkt++
-
-                       if duration > time.Second {
-                               rate := bytesSent / int(duration.Seconds())
-                               remainingTime := tsEnd.Sub(tsStart) - duration
-                               fmt.Printf("\rrate %d kB/sec - sent %d/%d kB - %d/%d packets - remaining time %s",
-                                       rate/1000, bytesSent/1000, size/1000,
-                                       pkt, packets, remainingTime)
-                       }
-               }
-       }
-
-}
diff --git a/vendor/github.com/google/gopacket/examples/pfdump/main.go b/vendor/github.com/google/gopacket/examples/pfdump/main.go
deleted file mode 100644 (file)
index 4b3ace6..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// The pfdump binary implements a tcpdump-like command line tool with gopacket
-// using pfring as a backend data collection mechanism.
-package main
-
-import (
-       "flag"
-       "fmt"
-       "github.com/google/gopacket/dumpcommand"
-       "github.com/google/gopacket/examples/util"
-       "github.com/google/gopacket/pfring"
-       "log"
-       "os"
-       "strings"
-)
-
-var iface = flag.String("i", "eth0", "Interface to read packets from")
-var snaplen = flag.Int("s", 65536, "Snap length (number of bytes max to read per packet")
-var cluster = flag.Int("cluster", -1, "If >= 0, sets the pfring cluster to this value")
-var clustertype = flag.Int("clustertype", int(pfring.ClusterPerFlow), "Cluster type")
-
-func main() {
-       defer util.Run()()
-       var ring *pfring.Ring
-       var err error
-       if ring, err = pfring.NewRing(*iface, uint32(*snaplen), pfring.FlagPromisc); err != nil {
-               log.Fatalln("pfring ring creation error:", err)
-       }
-       if len(flag.Args()) > 0 {
-               bpffilter := strings.Join(flag.Args(), " ")
-               fmt.Fprintf(os.Stderr, "Using BPF filter %q\n", bpffilter)
-               if err = ring.SetBPFFilter(bpffilter); err != nil {
-                       log.Fatalln("BPF filter error:", err)
-               }
-       }
-       if *cluster >= 0 {
-               if err = ring.SetCluster(*cluster, pfring.ClusterType(*clustertype)); err != nil {
-                       log.Fatalln("pfring SetCluster error:", err)
-               }
-       }
-       if err = ring.SetSocketMode(pfring.ReadOnly); err != nil {
-               log.Fatalln("pfring SetSocketMode error:", err)
-       } else if err = ring.Enable(); err != nil {
-               log.Fatalln("pfring Enable error:", err)
-       }
-       dumpcommand.Run(ring)
-}
diff --git a/vendor/github.com/google/gopacket/examples/reassemblydump/compare.sh b/vendor/github.com/google/gopacket/examples/reassemblydump/compare.sh
deleted file mode 100755 (executable)
index 671d29f..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-#!/bin/bash
-
-# Limitations: if the number extracted files in too big, finding identical
-#              files might fail due to '*' in cmdline
-#              This would require to split sha256sum symlinks in xx/yyyyy
-
-usage()
-{
-        echo "Usage: $0 <file.pcap> <output-dir>"
-        echo "Compares tcpreassembly against tcpflow"
-        echo ""
-        echo "$@"
-        exit 1
-}
-
-debug() {
-        return # comment me for debug
-        echo "$@"
-}
-
-die()
-{
-        (
-        echo "$@"
-        echo
-        ) >&2
-        exit 1
-}
-
-rename()
-{
-        local path="$1"
-        local filter="$2"
-        find "$path" -type f -name "$filter" -print0 |
-                while IFS= read -r -d $'\0' f; do
-                        local sha256="$(sha256sum "$f" | cut -d ' ' -f 1)"
-                        local target="$(dirname $f)/../sha256/$sha256"
-                        debug "$target → $f"
-                        mkdir -p "$(dirname "$target")" || return 1
-                        if [ ! -f "$target" ]; then
-                                ln -sr "$f" "$target" || return 1
-                        fi
-                done
-        return $?
-}
-
-main()
-{
-        local src="$1"
-        local out="$2"
-
-        # TODO: make options
-        local extra=""
-        extra="$extra -debug"
-        extra="$extra -cpuprofile "$out/gopacket/cpu.prof""
-        extra="$extra -memprofile "$out/gopacket/mem.prof""
-
-        [ ! -f "$src" ] && usage "Missing pcap"
-        [ ! -d "$out" ] && ( mkdir "$out" || die "Failed to create $out" )
-
-        mkdir -p "$out/gopacket/all" || die "Failed to create $out/gopacket/all"
-        mkdir -p "$out/tcpflow/all" || die "Faield to create $out/tcpflow/all"
-
-        echo " * Running go reassembly"
-        time ./reassemblydump -r "$src" $debug -output "$out/gopacket/all" $extra -writeincomplete -ignorefsmerr -nooptcheck -allowmissinginit port 80 &> "$out/gopacket.txt" || die "Failed to run reassmbly. Check $out/gopacket.txt"
-        echo " * Running tcpflow"
-        time tcpflow -e http -r "$src" -o "$out/tcpflow/all" port 80 &> "$out/tcpflow.txt" || die "Failed to run tcpflow. Check $out/tcpflow.txt"
-
-        echo " * Creating sha256sum symlinks for gopacket"
-        rename "$out/gopacket/all" '*' || die "Failed to rename in $out/gopacket"
-        echo " * Creating sha256sum symlinks for tcpflow"
-        rename "$out/tcpflow/all" '*HTTPBODY*' || die "Failed to rename in $out/tcpflow"
-
-        # Remove identical files
-        echo " * Finding identical files"
-        local nb=0
-        mkdir -p "$out/gopacket/sha256-equal"
-        mkdir -p "$out/tcpflow/sha256-equal"
-        for f in "$out/gopacket/sha256/"*; do
-                local f="$(basename "$f")"
-                [ -f "$out/tcpflow/sha256/$f" ] && {
-                        debug "    $f"
-                        mv "$out/gopacket/sha256/$f" "$out/gopacket/sha256-equal"
-                        mv "$out/tcpflow/sha256/$f"  "$out/tcpflow/sha256-equal"
-                        nb=$((nb+1))
-                }
-        done
-        echo "   →  found $nb files"
-
-        echo " * Diffing {gopacket,tcpflow}/sha256"
-        local rc=0
-        for p in "gopacket" "tcpflow"; do
-                local nb=$(ls -1 "$out/$p/sha256/" | wc -l)
-                if [ $nb -ne 0 ]; then
-                        rc=$((rc+1))
-                        echo "   → $nb files in $out/$p/sha256"
-                fi
-        done
-        return $rc
-}
-
-main "$@"
-exit $?
diff --git a/vendor/github.com/google/gopacket/examples/reassemblydump/main.go b/vendor/github.com/google/gopacket/examples/reassemblydump/main.go
deleted file mode 100644 (file)
index 9fc3791..0000000
+++ /dev/null
@@ -1,650 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// The pcapdump binary implements a tcpdump-like command line tool with gopacket
-// using pcap as a backend data collection mechanism.
-package main
-
-import (
-       "bufio"
-       "bytes"
-       "compress/gzip"
-       "encoding/binary"
-       "encoding/hex"
-       "flag"
-       "fmt"
-       "io"
-       "io/ioutil"
-       "log"
-       "net/http"
-       "net/url"
-       "os"
-       "os/signal"
-       "path"
-       "runtime/pprof"
-       "strings"
-       "sync"
-       "time"
-
-       "github.com/google/gopacket"
-       "github.com/google/gopacket/examples/util"
-       "github.com/google/gopacket/ip4defrag"
-       "github.com/google/gopacket/layers" // pulls in all layers decoders
-       "github.com/google/gopacket/pcap"
-       "github.com/google/gopacket/reassembly"
-)
-
-var maxcount = flag.Int("c", -1, "Only grab this many packets, then exit")
-var decoder = flag.String("decoder", "", "Name of the decoder to use (default: guess from capture)")
-var statsevery = flag.Int("stats", 1000, "Output statistics every N packets")
-var lazy = flag.Bool("lazy", false, "If true, do lazy decoding")
-var nodefrag = flag.Bool("nodefrag", false, "If true, do not do IPv4 defrag")
-var checksum = flag.Bool("checksum", false, "Check TCP checksum")
-var nooptcheck = flag.Bool("nooptcheck", false, "Do not check TCP options (useful to ignore MSS on captures with TSO)")
-var ignorefsmerr = flag.Bool("ignorefsmerr", false, "Ignore TCP FSM errors")
-var allowmissinginit = flag.Bool("allowmissinginit", false, "Support streams without SYN/SYN+ACK/ACK sequence")
-var verbose = flag.Bool("verbose", false, "Be verbose")
-var debug = flag.Bool("debug", false, "Display debug information")
-var quiet = flag.Bool("quiet", false, "Be quiet regarding errors")
-
-// http
-var nohttp = flag.Bool("nohttp", false, "Disable HTTP parsing")
-var output = flag.String("output", "", "Path to create file for HTTP 200 OK responses")
-var writeincomplete = flag.Bool("writeincomplete", false, "Write incomplete response")
-
-var hexdump = flag.Bool("dump", false, "Dump HTTP request/response as hex")
-var hexdumppkt = flag.Bool("dumppkt", false, "Dump packet as hex")
-
-// capture
-var iface = flag.String("i", "eth0", "Interface to read packets from")
-var fname = flag.String("r", "", "Filename to read from, overrides -i")
-var snaplen = flag.Int("s", 65536, "Snap length (number of bytes max to read per packet")
-var tstype = flag.String("timestamp_type", "", "Type of timestamps to use")
-var promisc = flag.Bool("promisc", true, "Set promiscuous mode")
-
-var memprofile = flag.String("memprofile", "", "Write memory profile")
-
-var stats struct {
-       ipdefrag            int
-       missedBytes         int
-       pkt                 int
-       sz                  int
-       totalsz             int
-       rejectFsm           int
-       rejectOpt           int
-       rejectConnFsm       int
-       reassembled         int
-       outOfOrderBytes     int
-       outOfOrderPackets   int
-       biggestChunkBytes   int
-       biggestChunkPackets int
-       overlapBytes        int
-       overlapPackets      int
-}
-
-const closeTimeout time.Duration = time.Hour * 24 // Closing inactive: TODO: from CLI
-const timeout time.Duration = time.Minute * 5     // Pending bytes: TODO: from CLI
-
-/*
- * HTTP part
- */
-
-type httpReader struct {
-       ident    string
-       isClient bool
-       bytes    chan []byte
-       data     []byte
-       hexdump  bool
-       parent   *tcpStream
-}
-
-func (h *httpReader) Read(p []byte) (int, error) {
-       ok := true
-       for ok && len(h.data) == 0 {
-               h.data, ok = <-h.bytes
-       }
-       if !ok || len(h.data) == 0 {
-               return 0, io.EOF
-       }
-
-       l := copy(p, h.data)
-       h.data = h.data[l:]
-       return l, nil
-}
-
-var outputLevel int
-var errorsMap map[string]uint
-var errors uint
-
-// Too bad for perf that a... is evaluated
-func Error(t string, s string, a ...interface{}) {
-       errors++
-       nb, _ := errorsMap[t]
-       errorsMap[t] = nb + 1
-       if outputLevel >= 0 {
-               fmt.Printf(s, a...)
-       }
-}
-func Info(s string, a ...interface{}) {
-       if outputLevel >= 1 {
-               fmt.Printf(s, a...)
-       }
-}
-func Debug(s string, a ...interface{}) {
-       if outputLevel >= 2 {
-               fmt.Printf(s, a...)
-       }
-}
-
-func (h *httpReader) run(wg *sync.WaitGroup) {
-       defer wg.Done()
-       b := bufio.NewReader(h)
-       for true {
-               if h.isClient {
-                       req, err := http.ReadRequest(b)
-                       if err == io.EOF || err == io.ErrUnexpectedEOF {
-                               break
-                       } else if err != nil {
-                               Error("HTTP-request", "HTTP/%s Request error: %s (%v,%+v)\n", h.ident, err, err, err)
-                               continue
-                       }
-                       body, err := ioutil.ReadAll(req.Body)
-                       s := len(body)
-                       if err != nil {
-                               Error("HTTP-request-body", "Got body err: %s\n", err)
-                       } else if h.hexdump {
-                               Info("Body(%d/0x%x)\n%s\n", len(body), len(body), hex.Dump(body))
-                       }
-                       req.Body.Close()
-                       Info("HTTP/%s Request: %s %s (body:%d)\n", h.ident, req.Method, req.URL, s)
-                       h.parent.urls = append(h.parent.urls, req.URL.String())
-               } else {
-                       res, err := http.ReadResponse(b, nil)
-                       var req string
-                       if len(h.parent.urls) == 0 {
-                               req = fmt.Sprintf("<no-request-seen>")
-                       } else {
-                               req, h.parent.urls = h.parent.urls[0], h.parent.urls[1:]
-                       }
-                       if err == io.EOF || err == io.ErrUnexpectedEOF {
-                               break
-                       } else if err != nil {
-                               Error("HTTP-response", "HTTP/%s Response error: %s (%v,%+v)\n", h.ident, err, err, err)
-                               continue
-                       }
-                       body, err := ioutil.ReadAll(res.Body)
-                       s := len(body)
-                       if err != nil {
-                               Error("HTTP-response-body", "HTTP/%s: failed to get body(parsed len:%d): %s\n", h.ident, s, err)
-                       }
-                       if h.hexdump {
-                               Info("Body(%d/0x%x)\n%s\n", len(body), len(body), hex.Dump(body))
-                       }
-                       res.Body.Close()
-                       sym := ","
-                       if res.ContentLength > 0 && res.ContentLength != int64(s) {
-                               sym = "!="
-                       }
-                       contentType, ok := res.Header["Content-Type"]
-                       if !ok {
-                               contentType = []string{http.DetectContentType(body)}
-                       }
-                       encoding := res.Header["Content-Encoding"]
-                       Info("HTTP/%s Response: %s URL:%s (%d%s%d%s) -> %s\n", h.ident, res.Status, req, res.ContentLength, sym, s, contentType, encoding)
-                       if (err == nil || *writeincomplete) && *output != "" {
-                               base := url.QueryEscape(path.Base(req))
-                               if err != nil {
-                                       base = "incomplete-" + base
-                               }
-                               base = path.Join(*output, base)
-                               if len(base) > 250 {
-                                       base = base[:250] + "..."
-                               }
-                               if base == *output {
-                                       base = path.Join(*output, "noname")
-                               }
-                               target := base
-                               n := 0
-                               for true {
-                                       _, err := os.Stat(target)
-                                       //if os.IsNotExist(err) != nil {
-                                       if err != nil {
-                                               break
-                                       }
-                                       target = fmt.Sprintf("%s-%d", base, n)
-                                       n++
-                               }
-                               f, err := os.Create(target)
-                               if err != nil {
-                                       Error("HTTP-create", "Cannot create %s: %s\n", target, err)
-                                       continue
-                               }
-                               var r io.Reader
-                               r = bytes.NewBuffer(body)
-                               if len(encoding) > 0 && (encoding[0] == "gzip" || encoding[0] == "deflate") {
-                                       r, err = gzip.NewReader(r)
-                                       if err != nil {
-                                               Error("HTTP-gunzip", "Failed to gzip decode: %s", err)
-                                       }
-                               }
-                               if err == nil {
-                                       w, err := io.Copy(f, r)
-                                       if _, ok := r.(*gzip.Reader); ok {
-                                               r.(*gzip.Reader).Close()
-                                       }
-                                       f.Close()
-                                       if err != nil {
-                                               Error("HTTP-save", "%s: failed to save %s (l:%d): %s\n", h.ident, target, w, err)
-                                       } else {
-                                               Info("%s: Saved %s (l:%d)\n", h.ident, target, w)
-                                       }
-                               }
-                       }
-               }
-       }
-}
-
-/*
- * The TCP factory: returns a new Stream
- */
-type tcpStreamFactory struct {
-       wg     sync.WaitGroup
-       doHTTP bool
-}
-
-func (factory *tcpStreamFactory) New(net, transport gopacket.Flow, tcp *layers.TCP, ac reassembly.AssemblerContext) reassembly.Stream {
-       Debug("* NEW: %s %s\n", net, transport)
-       fsmOptions := reassembly.TCPSimpleFSMOptions{
-               SupportMissingEstablishment: *allowmissinginit,
-       }
-       stream := &tcpStream{
-               net:        net,
-               transport:  transport,
-               isDNS:      tcp.SrcPort == 53 || tcp.DstPort == 53,
-               isHTTP:     (tcp.SrcPort == 80 || tcp.DstPort == 80) && factory.doHTTP,
-               reversed:   tcp.SrcPort == 80,
-               tcpstate:   reassembly.NewTCPSimpleFSM(fsmOptions),
-               ident:      fmt.Sprintf("%s:%s", net, transport),
-               optchecker: reassembly.NewTCPOptionCheck(),
-       }
-       if stream.isHTTP {
-               stream.client = httpReader{
-                       bytes:    make(chan []byte),
-                       ident:    fmt.Sprintf("%s %s", net, transport),
-                       hexdump:  *hexdump,
-                       parent:   stream,
-                       isClient: true,
-               }
-               stream.server = httpReader{
-                       bytes:   make(chan []byte),
-                       ident:   fmt.Sprintf("%s %s", net.Reverse(), transport.Reverse()),
-                       hexdump: *hexdump,
-                       parent:  stream,
-               }
-               factory.wg.Add(2)
-               go stream.client.run(&factory.wg)
-               go stream.server.run(&factory.wg)
-       }
-       return stream
-}
-
-func (factory *tcpStreamFactory) WaitGoRoutines() {
-       factory.wg.Wait()
-}
-
-/*
- * The assembler context
- */
-type Context struct {
-       CaptureInfo gopacket.CaptureInfo
-}
-
-func (c *Context) GetCaptureInfo() gopacket.CaptureInfo {
-       return c.CaptureInfo
-}
-
-/*
- * TCP stream
- */
-
-/* It's a connection (bidirectional) */
-type tcpStream struct {
-       tcpstate       *reassembly.TCPSimpleFSM
-       fsmerr         bool
-       optchecker     reassembly.TCPOptionCheck
-       net, transport gopacket.Flow
-       isDNS          bool
-       isHTTP         bool
-       reversed       bool
-       client         httpReader
-       server         httpReader
-       urls           []string
-       ident          string
-}
-
-func (t *tcpStream) Accept(tcp *layers.TCP, ci gopacket.CaptureInfo, dir reassembly.TCPFlowDirection, acked reassembly.Sequence, start *bool, ac reassembly.AssemblerContext) bool {
-       // FSM
-       if !t.tcpstate.CheckState(tcp, dir) {
-               Error("FSM", "%s: Packet rejected by FSM (state:%s)\n", t.ident, t.tcpstate.String())
-               stats.rejectFsm++
-               if !t.fsmerr {
-                       t.fsmerr = true
-                       stats.rejectConnFsm++
-               }
-               if !*ignorefsmerr {
-                       return false
-               }
-       }
-       // Options
-       err := t.optchecker.Accept(tcp, ci, dir, acked, start)
-       if err != nil {
-               Error("OptionChecker", "%s: Packet rejected by OptionChecker: %s\n", t.ident, err)
-               stats.rejectOpt++
-               if !*nooptcheck {
-                       return false
-               }
-       }
-       // Checksum
-       accept := true
-       if *checksum {
-               c, err := tcp.ComputeChecksum()
-               if err != nil {
-                       Error("ChecksumCompute", "%s: Got error computing checksum: %s\n", t.ident, err)
-                       accept = false
-               } else if c != 0x0 {
-                       Error("Checksum", "%s: Invalid checksum: 0x%x\n", t.ident, c)
-                       accept = false
-               }
-       }
-       if !accept {
-               stats.rejectOpt++
-       }
-       return accept
-}
-
-func (t *tcpStream) ReassembledSG(sg reassembly.ScatterGather, ac reassembly.AssemblerContext) {
-       dir, start, end, skip := sg.Info()
-       length, saved := sg.Lengths()
-       // update stats
-       sgStats := sg.Stats()
-       if skip > 0 {
-               stats.missedBytes += skip
-       }
-       stats.sz += length - saved
-       stats.pkt += sgStats.Packets
-       if sgStats.Chunks > 1 {
-               stats.reassembled++
-       }
-       stats.outOfOrderPackets += sgStats.QueuedPackets
-       stats.outOfOrderBytes += sgStats.QueuedBytes
-       if length > stats.biggestChunkBytes {
-               stats.biggestChunkBytes = length
-       }
-       if sgStats.Packets > stats.biggestChunkPackets {
-               stats.biggestChunkPackets = sgStats.Packets
-       }
-       if sgStats.OverlapBytes != 0 && sgStats.OverlapPackets == 0 {
-               fmt.Printf("bytes:%d, pkts:%d\n", sgStats.OverlapBytes, sgStats.OverlapPackets)
-               panic("Invalid overlap")
-       }
-       stats.overlapBytes += sgStats.OverlapBytes
-       stats.overlapPackets += sgStats.OverlapPackets
-
-       var ident string
-       if dir == reassembly.TCPDirClientToServer {
-               ident = fmt.Sprintf("%v %v(%s): ", t.net, t.transport, dir)
-       } else {
-               ident = fmt.Sprintf("%v %v(%s): ", t.net.Reverse(), t.transport.Reverse(), dir)
-       }
-       Debug("%s: SG reassembled packet with %d bytes (start:%v,end:%v,skip:%d,saved:%d,nb:%d,%d,overlap:%d,%d)\n", ident, length, start, end, skip, saved, sgStats.Packets, sgStats.Chunks, sgStats.OverlapBytes, sgStats.OverlapPackets)
-       if skip == -1 && *allowmissinginit {
-               // this is allowed
-       } else if skip != 0 {
-               // Missing bytes in stream: do not even try to parse it
-               return
-       }
-       data := sg.Fetch(length)
-       if t.isDNS {
-               dns := &layers.DNS{}
-               var decoded []gopacket.LayerType
-               if len(data) < 2 {
-                       if len(data) > 0 {
-                               sg.KeepFrom(0)
-                       }
-                       return
-               }
-               dnsSize := binary.BigEndian.Uint16(data[:2])
-               missing := int(dnsSize) - len(data[2:])
-               Debug("dnsSize: %d, missing: %d\n", dnsSize, missing)
-               if missing > 0 {
-                       Info("Missing some bytes: %d\n", missing)
-                       sg.KeepFrom(0)
-                       return
-               }
-               p := gopacket.NewDecodingLayerParser(layers.LayerTypeDNS, dns)
-               err := p.DecodeLayers(data[2:], &decoded)
-               if err != nil {
-                       Error("DNS-parser", "Failed to decode DNS: %v\n", err)
-               } else {
-                       Debug("DNS: %s\n", gopacket.LayerDump(dns))
-               }
-               if len(data) > 2+int(dnsSize) {
-                       sg.KeepFrom(2 + int(dnsSize))
-               }
-       } else if t.isHTTP {
-               if length > 0 {
-                       if *hexdump {
-                               Debug("Feeding http with:\n%s", hex.Dump(data))
-                       }
-                       if dir == reassembly.TCPDirClientToServer && !t.reversed {
-                               t.client.bytes <- data
-                       } else {
-                               t.server.bytes <- data
-                       }
-               }
-       }
-}
-
-func (t *tcpStream) ReassemblyComplete(ac reassembly.AssemblerContext) bool {
-       Debug("%s: Connection closed\n", t.ident)
-       if t.isHTTP {
-               close(t.client.bytes)
-               close(t.server.bytes)
-       }
-       // do not remove the connection to allow last ACK
-       return false
-}
-
-func main() {
-       defer util.Run()()
-       var handle *pcap.Handle
-       var err error
-       if *debug {
-               outputLevel = 2
-       } else if *verbose {
-               outputLevel = 1
-       } else if *quiet {
-               outputLevel = -1
-       }
-       errorsMap = make(map[string]uint)
-       if *fname != "" {
-               if handle, err = pcap.OpenOffline(*fname); err != nil {
-                       log.Fatal("PCAP OpenOffline error:", err)
-               }
-       } else {
-               // This is a little complicated because we want to allow all possible options
-               // for creating the packet capture handle... instead of all this you can
-               // just call pcap.OpenLive if you want a simple handle.
-               inactive, err := pcap.NewInactiveHandle(*iface)
-               if err != nil {
-                       log.Fatal("could not create: %v", err)
-               }
-               defer inactive.CleanUp()
-               if err = inactive.SetSnapLen(*snaplen); err != nil {
-                       log.Fatal("could not set snap length: %v", err)
-               } else if err = inactive.SetPromisc(*promisc); err != nil {
-                       log.Fatal("could not set promisc mode: %v", err)
-               } else if err = inactive.SetTimeout(time.Second); err != nil {
-                       log.Fatal("could not set timeout: %v", err)
-               }
-               if *tstype != "" {
-                       if t, err := pcap.TimestampSourceFromString(*tstype); err != nil {
-                               log.Fatalf("Supported timestamp types: %v", inactive.SupportedTimestamps())
-                       } else if err := inactive.SetTimestampSource(t); err != nil {
-                               log.Fatalf("Supported timestamp types: %v", inactive.SupportedTimestamps())
-                       }
-               }
-               if handle, err = inactive.Activate(); err != nil {
-                       log.Fatal("PCAP Activate error:", err)
-               }
-               defer handle.Close()
-       }
-       if len(flag.Args()) > 0 {
-               bpffilter := strings.Join(flag.Args(), " ")
-               Info("Using BPF filter %q\n", bpffilter)
-               if err = handle.SetBPFFilter(bpffilter); err != nil {
-                       log.Fatal("BPF filter error:", err)
-               }
-       }
-
-       var dec gopacket.Decoder
-       var ok bool
-       decoder_name := *decoder
-       if decoder_name == "" {
-               decoder_name = fmt.Sprintf("%s", handle.LinkType())
-       }
-       if dec, ok = gopacket.DecodersByLayerName[decoder_name]; !ok {
-               log.Fatalln("No decoder named", decoder_name)
-       }
-       source := gopacket.NewPacketSource(handle, dec)
-       source.Lazy = *lazy
-       source.NoCopy = true
-       Info("Starting to read packets\n")
-       count := 0
-       bytes := int64(0)
-       start := time.Now()
-       defragger := ip4defrag.NewIPv4Defragmenter()
-
-       streamFactory := &tcpStreamFactory{doHTTP: !*nohttp}
-       streamPool := reassembly.NewStreamPool(streamFactory)
-       assembler := reassembly.NewAssembler(streamPool)
-
-       signalChan := make(chan os.Signal, 1)
-       signal.Notify(signalChan, os.Interrupt)
-
-       for packet := range source.Packets() {
-               count++
-               Debug("PACKET #%d\n", count)
-               data := packet.Data()
-               bytes += int64(len(data))
-               if *hexdumppkt {
-                       Debug("Packet content (%d/0x%x)\n%s\n", len(data), len(data), hex.Dump(data))
-               }
-
-               // defrag the IPv4 packet if required
-               if !*nodefrag {
-                       ip4Layer := packet.Layer(layers.LayerTypeIPv4)
-                       if ip4Layer == nil {
-                               continue
-                       }
-                       ip4 := ip4Layer.(*layers.IPv4)
-                       l := ip4.Length
-                       newip4, err := defragger.DefragIPv4(ip4)
-                       if err != nil {
-                               log.Fatalln("Error while de-fragmenting", err)
-                       } else if newip4 == nil {
-                               Debug("Fragment...\n")
-                               continue // packet fragment, we don't have whole packet yet.
-                       }
-                       if newip4.Length != l {
-                               stats.ipdefrag++
-                               Debug("Decoding re-assembled packet: %s\n", newip4.NextLayerType())
-                               pb, ok := packet.(gopacket.PacketBuilder)
-                               if !ok {
-                                       panic("Not a PacketBuilder")
-                               }
-                               nextDecoder := newip4.NextLayerType()
-                               nextDecoder.Decode(newip4.Payload, pb)
-                       }
-               }
-
-               tcp := packet.Layer(layers.LayerTypeTCP)
-               if tcp != nil {
-                       tcp := tcp.(*layers.TCP)
-                       if *checksum {
-                               err := tcp.SetNetworkLayerForChecksum(packet.NetworkLayer())
-                               if err != nil {
-                                       log.Fatalf("Failed to set network layer for checksum: %s\n", err)
-                               }
-                       }
-                       c := Context{
-                               CaptureInfo: packet.Metadata().CaptureInfo,
-                       }
-                       stats.totalsz += len(tcp.Payload)
-                       assembler.AssembleWithContext(packet.NetworkLayer().NetworkFlow(), tcp, &c)
-               }
-               if count%*statsevery == 0 {
-                       ref := packet.Metadata().CaptureInfo.Timestamp
-                       flushed, closed := assembler.FlushWithOptions(reassembly.FlushOptions{T: ref.Add(-timeout), TC: ref.Add(-closeTimeout)})
-                       Debug("Forced flush: %d flushed, %d closed (%s)", flushed, closed, ref)
-               }
-
-               done := *maxcount > 0 && count >= *maxcount
-               if count%*statsevery == 0 || done {
-                       fmt.Fprintf(os.Stderr, "Processed %v packets (%v bytes) in %v (errors: %v, type:%v)\n", count, bytes, time.Since(start), errors, len(errorsMap))
-               }
-               select {
-               case <-signalChan:
-                       fmt.Fprintf(os.Stderr, "\nCaught SIGINT: aborting\n")
-                       done = true
-               default:
-                       // NOP: continue
-               }
-               if done {
-                       break
-               }
-       }
-
-       closed := assembler.FlushAll()
-       Debug("Final flush: %d closed", closed)
-       if outputLevel >= 2 {
-               streamPool.Dump()
-       }
-
-       if *memprofile != "" {
-               f, err := os.Create(*memprofile)
-               if err != nil {
-                       log.Fatal(err)
-               }
-               pprof.WriteHeapProfile(f)
-               f.Close()
-       }
-
-       streamFactory.WaitGoRoutines()
-       Debug("%s\n", assembler.Dump())
-       if !*nodefrag {
-               fmt.Printf("IPdefrag:\t\t%d\n", stats.ipdefrag)
-       }
-       fmt.Printf("TCP stats:\n")
-       fmt.Printf(" missed bytes:\t\t%d\n", stats.missedBytes)
-       fmt.Printf(" total packets:\t\t%d\n", stats.pkt)
-       fmt.Printf(" rejected FSM:\t\t%d\n", stats.rejectFsm)
-       fmt.Printf(" rejected Options:\t%d\n", stats.rejectOpt)
-       fmt.Printf(" reassembled bytes:\t%d\n", stats.sz)
-       fmt.Printf(" total TCP bytes:\t%d\n", stats.totalsz)
-       fmt.Printf(" conn rejected FSM:\t%d\n", stats.rejectConnFsm)
-       fmt.Printf(" reassembled chunks:\t%d\n", stats.reassembled)
-       fmt.Printf(" out-of-order packets:\t%d\n", stats.outOfOrderPackets)
-       fmt.Printf(" out-of-order bytes:\t%d\n", stats.outOfOrderBytes)
-       fmt.Printf(" biggest-chunk packets:\t%d\n", stats.biggestChunkPackets)
-       fmt.Printf(" biggest-chunk bytes:\t%d\n", stats.biggestChunkBytes)
-       fmt.Printf(" overlap packets:\t%d\n", stats.overlapPackets)
-       fmt.Printf(" overlap bytes:\t\t%d\n", stats.overlapBytes)
-       fmt.Printf("Errors: %d\n", errors)
-       for e, _ := range errorsMap {
-               fmt.Printf(" %s:\t\t%d\n", e, errorsMap[e])
-       }
-}
diff --git a/vendor/github.com/google/gopacket/examples/statsassembly/main.go b/vendor/github.com/google/gopacket/examples/statsassembly/main.go
deleted file mode 100644 (file)
index 36da011..0000000
+++ /dev/null
@@ -1,211 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// This binary provides sample code for using the gopacket TCP assembler raw,
-// without the help of the tcpreader library.  It watches TCP streams and
-// reports statistics on completed streams.
-//
-// It also uses gopacket.DecodingLayerParser instead of the normal
-// gopacket.PacketSource, to highlight the methods, pros, and cons of this
-// approach.
-package main
-
-import (
-       "flag"
-       "github.com/google/gopacket"
-       "github.com/google/gopacket/examples/util"
-       "github.com/google/gopacket/layers"
-       "github.com/google/gopacket/pcap"
-       "github.com/google/gopacket/tcpassembly"
-       "log"
-       "time"
-)
-
-var iface = flag.String("i", "eth0", "Interface to get packets from")
-var snaplen = flag.Int("s", 65536, "SnapLen for pcap packet capture")
-var filter = flag.String("f", "tcp", "BPF filter for pcap")
-var logAllPackets = flag.Bool("v", false, "Log whenever we see a packet")
-var bufferedPerConnection = flag.Int("connection_max_buffer", 0, `
-Max packets to buffer for a single connection before skipping over a gap in data
-and continuing to stream the connection after the buffer.  If zero or less, this
-is infinite.`)
-var bufferedTotal = flag.Int("total_max_buffer", 0, `
-Max packets to buffer total before skipping over gaps in connections and
-continuing to stream connection data.  If zero or less, this is infinite`)
-var flushAfter = flag.String("flush_after", "2m", `
-Connections which have buffered packets (they've gotten packets out of order and
-are waiting for old packets to fill the gaps) are flushed after they're this old
-(their oldest gap is skipped).  Any string parsed by time.ParseDuration is
-acceptable here`)
-var packetCount = flag.Int("c", -1, `
-Quit after processing this many packets, flushing all currently buffered
-connections.  If negative, this is infinite`)
-
-// simpleStreamFactory implements tcpassembly.StreamFactory
-type statsStreamFactory struct{}
-
-// statsStream will handle the actual decoding of stats requests.
-type statsStream struct {
-       net, transport                      gopacket.Flow
-       bytes, packets, outOfOrder, skipped int64
-       start, end                          time.Time
-       sawStart, sawEnd                    bool
-}
-
-// New creates a new stream.  It's called whenever the assembler sees a stream
-// it isn't currently following.
-func (factory *statsStreamFactory) New(net, transport gopacket.Flow) tcpassembly.Stream {
-       log.Printf("new stream %v:%v started", net, transport)
-       s := &statsStream{
-               net:       net,
-               transport: transport,
-               start:     time.Now(),
-       }
-       s.end = s.start
-       // ReaderStream implements tcpassembly.Stream, so we can return a pointer to it.
-       return s
-}
-
-// Reassembled is called whenever new packet data is available for reading.
-// Reassembly objects contain stream data IN ORDER.
-func (s *statsStream) Reassembled(reassemblies []tcpassembly.Reassembly) {
-       for _, reassembly := range reassemblies {
-               if reassembly.Seen.Before(s.end) {
-                       s.outOfOrder++
-               } else {
-                       s.end = reassembly.Seen
-               }
-               s.bytes += int64(len(reassembly.Bytes))
-               s.packets += 1
-               if reassembly.Skip > 0 {
-                       s.skipped += int64(reassembly.Skip)
-               }
-               s.sawStart = s.sawStart || reassembly.Start
-               s.sawEnd = s.sawEnd || reassembly.End
-       }
-}
-
-// ReassemblyComplete is called when the TCP assembler believes a stream has
-// finished.
-func (s *statsStream) ReassemblyComplete() {
-       diffSecs := float64(s.end.Sub(s.start)) / float64(time.Second)
-       log.Printf("Reassembly of stream %v:%v complete - start:%v end:%v bytes:%v packets:%v ooo:%v bps:%v pps:%v skipped:%v",
-               s.net, s.transport, s.start, s.end, s.bytes, s.packets, s.outOfOrder,
-               float64(s.bytes)/diffSecs, float64(s.packets)/diffSecs, s.skipped)
-}
-
-func main() {
-       defer util.Run()()
-
-       flushDuration, err := time.ParseDuration(*flushAfter)
-       if err != nil {
-               log.Fatal("invalid flush duration: ", *flushAfter)
-       }
-
-       log.Printf("starting capture on interface %q", *iface)
-       // Set up pcap packet capture
-       handle, err := pcap.OpenLive(*iface, int32(*snaplen), true, flushDuration/2)
-       if err != nil {
-               log.Fatal("error opening pcap handle: ", err)
-       }
-       if err := handle.SetBPFFilter(*filter); err != nil {
-               log.Fatal("error setting BPF filter: ", err)
-       }
-
-       // Set up assembly
-       streamFactory := &statsStreamFactory{}
-       streamPool := tcpassembly.NewStreamPool(streamFactory)
-       assembler := tcpassembly.NewAssembler(streamPool)
-       assembler.MaxBufferedPagesPerConnection = *bufferedPerConnection
-       assembler.MaxBufferedPagesTotal = *bufferedTotal
-
-       log.Println("reading in packets")
-
-       // We use a DecodingLayerParser here instead of a simpler PacketSource.
-       // This approach should be measurably faster, but is also more rigid.
-       // PacketSource will handle any known type of packet safely and easily,
-       // but DecodingLayerParser will only handle those packet types we
-       // specifically pass in.  This trade-off can be quite useful, though, in
-       // high-throughput situations.
-       var eth layers.Ethernet
-       var dot1q layers.Dot1Q
-       var ip4 layers.IPv4
-       var ip6 layers.IPv6
-       var ip6extensions layers.IPv6ExtensionSkipper
-       var tcp layers.TCP
-       var payload gopacket.Payload
-       parser := gopacket.NewDecodingLayerParser(layers.LayerTypeEthernet,
-               &eth, &dot1q, &ip4, &ip6, &ip6extensions, &tcp, &payload)
-       decoded := make([]gopacket.LayerType, 0, 4)
-
-       nextFlush := time.Now().Add(flushDuration / 2)
-
-       var byteCount int64
-       start := time.Now()
-
-loop:
-       for ; *packetCount != 0; *packetCount-- {
-               // Check to see if we should flush the streams we have
-               // that haven't seen any new data in a while.  Note we set a
-               // timeout on our PCAP handle, so this should happen even if we
-               // never see packet data.
-               if time.Now().After(nextFlush) {
-                       stats, _ := handle.Stats()
-                       log.Printf("flushing all streams that haven't seen packets in the last 2 minutes, pcap stats: %+v", stats)
-                       assembler.FlushOlderThan(time.Now().Add(flushDuration))
-                       nextFlush = time.Now().Add(flushDuration / 2)
-               }
-
-               // To speed things up, we're also using the ZeroCopy method for
-               // reading packet data.  This method is faster than the normal
-               // ReadPacketData, but the returned bytes in 'data' are
-               // invalidated by any subsequent ZeroCopyReadPacketData call.
-               // Note that tcpassembly is entirely compatible with this packet
-               // reading method.  This is another trade-off which might be
-               // appropriate for high-throughput sniffing:  it avoids a packet
-               // copy, but its cost is much more careful handling of the
-               // resulting byte slice.
-               data, ci, err := handle.ZeroCopyReadPacketData()
-
-               if err != nil {
-                       log.Printf("error getting packet: %v", err)
-                       continue
-               }
-               err = parser.DecodeLayers(data, &decoded)
-               if err != nil {
-                       log.Printf("error decoding packet: %v", err)
-                       continue
-               }
-               if *logAllPackets {
-                       log.Printf("decoded the following layers: %v", decoded)
-               }
-               byteCount += int64(len(data))
-               // Find either the IPv4 or IPv6 address to use as our network
-               // layer.
-               foundNetLayer := false
-               var netFlow gopacket.Flow
-               for _, typ := range decoded {
-                       switch typ {
-                       case layers.LayerTypeIPv4:
-                               netFlow = ip4.NetworkFlow()
-                               foundNetLayer = true
-                       case layers.LayerTypeIPv6:
-                               netFlow = ip6.NetworkFlow()
-                               foundNetLayer = true
-                       case layers.LayerTypeTCP:
-                               if foundNetLayer {
-                                       assembler.AssembleWithTimestamp(netFlow, &tcp, ci.Timestamp)
-                               } else {
-                                       log.Println("could not find IPv4 or IPv6 layer, inoring")
-                               }
-                               continue loop
-                       }
-               }
-               log.Println("could not find TCP layer")
-       }
-       assembler.FlushAll()
-       log.Printf("processed %d bytes in %v", byteCount, time.Since(start))
-}
diff --git a/vendor/github.com/google/gopacket/examples/synscan/main.go b/vendor/github.com/google/gopacket/examples/synscan/main.go
deleted file mode 100644 (file)
index 7a2345f..0000000
+++ /dev/null
@@ -1,259 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// synscan implements a TCP syn scanner on top of pcap.
-// It's more complicated than arpscan, since it has to handle sending packets
-// outside the local network, requiring some routing and ARP work.
-//
-// Since this is just an example program, it aims for simplicity over
-// performance.  It doesn't handle sending packets very quickly, it scans IPs
-// serially instead of in parallel, and uses gopacket.Packet instead of
-// gopacket.DecodingLayerParser for packet processing.  We also make use of very
-// simple timeout logic with time.Since.
-//
-// Making it blazingly fast is left as an exercise to the reader.
-package main
-
-import (
-       "errors"
-       "flag"
-       "log"
-       "net"
-       "time"
-
-       "github.com/google/gopacket"
-       "github.com/google/gopacket/examples/util"
-       "github.com/google/gopacket/layers"
-       "github.com/google/gopacket/pcap"
-       "github.com/google/gopacket/routing"
-)
-
-// scanner handles scanning a single IP address.
-type scanner struct {
-       // iface is the interface to send packets on.
-       iface *net.Interface
-       // destination, gateway (if applicable), and source IP addresses to use.
-       dst, gw, src net.IP
-
-       handle *pcap.Handle
-
-       // opts and buf allow us to easily serialize packets in the send()
-       // method.
-       opts gopacket.SerializeOptions
-       buf  gopacket.SerializeBuffer
-}
-
-// newScanner creates a new scanner for a given destination IP address, using
-// router to determine how to route packets to that IP.
-func newScanner(ip net.IP, router routing.Router) (*scanner, error) {
-       s := &scanner{
-               dst: ip,
-               opts: gopacket.SerializeOptions{
-                       FixLengths:       true,
-                       ComputeChecksums: true,
-               },
-               buf: gopacket.NewSerializeBuffer(),
-       }
-       // Figure out the route to the IP.
-       iface, gw, src, err := router.Route(ip)
-       if err != nil {
-               return nil, err
-       }
-       log.Printf("scanning ip %v with interface %v, gateway %v, src %v", ip, iface.Name, gw, src)
-       s.gw, s.src, s.iface = gw, src, iface
-
-       // Open the handle for reading/writing.
-       // Note we could very easily add some BPF filtering here to greatly
-       // decrease the number of packets we have to look at when getting back
-       // scan results.
-       handle, err := pcap.OpenLive(iface.Name, 65536, true, pcap.BlockForever)
-       if err != nil {
-               return nil, err
-       }
-       s.handle = handle
-       return s, nil
-}
-
-// close cleans up the handle.
-func (s *scanner) close() {
-       s.handle.Close()
-}
-
-// getHwAddr is a hacky but effective way to get the destination hardware
-// address for our packets.  It does an ARP request for our gateway (if there is
-// one) or destination IP (if no gateway is necessary), then waits for an ARP
-// reply.  This is pretty slow right now, since it blocks on the ARP
-// request/reply.
-func (s *scanner) getHwAddr() (net.HardwareAddr, error) {
-       start := time.Now()
-       arpDst := s.dst
-       if s.gw != nil {
-               arpDst = s.gw
-       }
-       // Prepare the layers to send for an ARP request.
-       eth := layers.Ethernet{
-               SrcMAC:       s.iface.HardwareAddr,
-               DstMAC:       net.HardwareAddr{0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
-               EthernetType: layers.EthernetTypeARP,
-       }
-       arp := layers.ARP{
-               AddrType:          layers.LinkTypeEthernet,
-               Protocol:          layers.EthernetTypeIPv4,
-               HwAddressSize:     6,
-               ProtAddressSize:   4,
-               Operation:         layers.ARPRequest,
-               SourceHwAddress:   []byte(s.iface.HardwareAddr),
-               SourceProtAddress: []byte(s.src),
-               DstHwAddress:      []byte{0, 0, 0, 0, 0, 0},
-               DstProtAddress:    []byte(arpDst),
-       }
-       // Send a single ARP request packet (we never retry a send, since this
-       // is just an example ;)
-       if err := s.send(&eth, &arp); err != nil {
-               return nil, err
-       }
-       // Wait 3 seconds for an ARP reply.
-       for {
-               if time.Since(start) > time.Second*3 {
-                       return nil, errors.New("timeout getting ARP reply")
-               }
-               data, _, err := s.handle.ReadPacketData()
-               if err == pcap.NextErrorTimeoutExpired {
-                       continue
-               } else if err != nil {
-                       return nil, err
-               }
-               packet := gopacket.NewPacket(data, layers.LayerTypeEthernet, gopacket.NoCopy)
-               if arpLayer := packet.Layer(layers.LayerTypeARP); arpLayer != nil {
-                       arp := arpLayer.(*layers.ARP)
-                       if net.IP(arp.SourceProtAddress).Equal(net.IP(arpDst)) {
-                               return net.HardwareAddr(arp.SourceHwAddress), nil
-                       }
-               }
-       }
-}
-
-// scan scans the dst IP address of this scanner.
-func (s *scanner) scan() error {
-       // First off, get the MAC address we should be sending packets to.
-       hwaddr, err := s.getHwAddr()
-       if err != nil {
-               return err
-       }
-       // Construct all the network layers we need.
-       eth := layers.Ethernet{
-               SrcMAC:       s.iface.HardwareAddr,
-               DstMAC:       hwaddr,
-               EthernetType: layers.EthernetTypeIPv4,
-       }
-       ip4 := layers.IPv4{
-               SrcIP:    s.src,
-               DstIP:    s.dst,
-               Version:  4,
-               TTL:      64,
-               Protocol: layers.IPProtocolTCP,
-       }
-       tcp := layers.TCP{
-               SrcPort: 54321,
-               DstPort: 0, // will be incremented during the scan
-               SYN:     true,
-       }
-       tcp.SetNetworkLayerForChecksum(&ip4)
-
-       // Create the flow we expect returning packets to have, so we can check
-       // against it and discard useless packets.
-       ipFlow := gopacket.NewFlow(layers.EndpointIPv4, s.dst, s.src)
-       start := time.Now()
-       for {
-               // Send one packet per loop iteration until we've sent packets
-               // to all of ports [1, 65535].
-               if tcp.DstPort < 65535 {
-                       start = time.Now()
-                       tcp.DstPort++
-                       if err := s.send(&eth, &ip4, &tcp); err != nil {
-                               log.Printf("error sending to port %v: %v", tcp.DstPort, err)
-                       }
-               }
-               // Time out 5 seconds after the last packet we sent.
-               if time.Since(start) > time.Second*5 {
-                       log.Printf("timed out for %v, assuming we've seen all we can", s.dst)
-                       return nil
-               }
-
-               // Read in the next packet.
-               data, _, err := s.handle.ReadPacketData()
-               if err == pcap.NextErrorTimeoutExpired {
-                       continue
-               } else if err != nil {
-                       log.Printf("error reading packet: %v", err)
-                       continue
-               }
-
-               // Parse the packet.  We'd use DecodingLayerParser here if we
-               // wanted to be really fast.
-               packet := gopacket.NewPacket(data, layers.LayerTypeEthernet, gopacket.NoCopy)
-
-               // Find the packets we care about, and print out logging
-               // information about them.  All others are ignored.
-               if net := packet.NetworkLayer(); net == nil {
-                       // log.Printf("packet has no network layer")
-               } else if net.NetworkFlow() != ipFlow {
-                       // log.Printf("packet does not match our ip src/dst")
-               } else if tcpLayer := packet.Layer(layers.LayerTypeTCP); tcpLayer == nil {
-                       // log.Printf("packet has not tcp layer")
-               } else if tcp, ok := tcpLayer.(*layers.TCP); !ok {
-                       // We panic here because this is guaranteed to never
-                       // happen.
-                       panic("tcp layer is not tcp layer :-/")
-               } else if tcp.DstPort != 54321 {
-                       // log.Printf("dst port %v does not match", tcp.DstPort)
-               } else if tcp.RST {
-                       log.Printf("  port %v closed", tcp.SrcPort)
-               } else if tcp.SYN && tcp.ACK {
-                       log.Printf("  port %v open", tcp.SrcPort)
-               } else {
-                       // log.Printf("ignoring useless packet")
-               }
-       }
-}
-
-// send sends the given layers as a single packet on the network.
-func (s *scanner) send(l ...gopacket.SerializableLayer) error {
-       if err := gopacket.SerializeLayers(s.buf, s.opts, l...); err != nil {
-               return err
-       }
-       return s.handle.WritePacketData(s.buf.Bytes())
-}
-
-func main() {
-       defer util.Run()()
-       router, err := routing.New()
-       if err != nil {
-               log.Fatal("routing error:", err)
-       }
-       for _, arg := range flag.Args() {
-               var ip net.IP
-               if ip = net.ParseIP(arg); ip == nil {
-                       log.Printf("non-ip target: %q", arg)
-                       continue
-               } else if ip = ip.To4(); ip == nil {
-                       log.Printf("non-ipv4 target: %q", arg)
-                       continue
-               }
-               // Note:  newScanner creates and closes a pcap Handle once for
-               // every scan target.  We could do much better, were this not an
-               // example ;)
-               s, err := newScanner(ip, router)
-               if err != nil {
-                       log.Printf("unable to create scanner for %v: %v", ip, err)
-                       continue
-               }
-               if err := s.scan(); err != nil {
-                       log.Printf("unable to scan %v: %v", ip, err)
-               }
-               s.close()
-       }
-}
diff --git a/vendor/github.com/google/gopacket/examples/util/util.go b/vendor/github.com/google/gopacket/examples/util/util.go
deleted file mode 100644 (file)
index 0f698fb..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// Package util provides shared utilities for all gopacket examples.
-package util
-
-import (
-       "flag"
-       "log"
-       "os"
-       "runtime/pprof"
-)
-
-var cpuprofile = flag.String("cpuprofile", "", "Where to write CPU profile")
-
-// Run starts up stuff at the beginning of a main function, and returns a
-// function to defer until the function completes.  It should be used like this:
-//
-//   func main() {
-//     defer util.Run()()
-//     ... stuff ...
-//   }
-func Run() func() {
-       flag.Parse()
-       if *cpuprofile != "" {
-               f, err := os.Create(*cpuprofile)
-               if err != nil {
-                       log.Fatalf("could not open cpu profile file %q", *cpuprofile)
-               }
-               pprof.StartCPUProfile(f)
-               return func() {
-                       pprof.StopCPUProfile()
-                       f.Close()
-               }
-       }
-       return func() {}
-}
diff --git a/vendor/github.com/google/gopacket/ip4defrag/defrag.go b/vendor/github.com/google/gopacket/ip4defrag/defrag.go
deleted file mode 100644 (file)
index 9d3862f..0000000
+++ /dev/null
@@ -1,350 +0,0 @@
-// Copyright 2013 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// Package ip4defrag implements a IPv4 defragmenter
-package ip4defrag
-
-import (
-       "container/list"
-       "errors"
-       "fmt"
-       "log"
-       "sync"
-       "time"
-
-       "github.com/google/gopacket"
-       "github.com/google/gopacket/layers"
-)
-
-// Quick and Easy to use debug code to trace
-// how defrag works.
-var debug debugging = false // or flip to true
-type debugging bool
-
-func (d debugging) Printf(format string, args ...interface{}) {
-       if d {
-               log.Printf(format, args...)
-       }
-}
-
-// Constants determining how to handle fragments.
-const (
-       IPv4MinimumFragmentSize    = 576   // Minimum size of a single fragment
-       IPv4MaximumSize            = 65535 // Maximum size of a fragment (2^16)
-       IPv4MaximumFragmentOffset  = 8189  // Maximum offset of a fragment
-       IPv4MaximumFragmentListLen = 8     // Back out if we get more than this many fragments
-)
-
-// DefragIPv4 takes in an IPv4 packet with a fragment payload.
-//
-// It do not modify the IPv4 layer in place, 'in' remains untouched
-// It returns a ready-to be used IPv4 layer.
-//
-// If the passed-in IPv4 layer is NOT fragmented, it will
-// immediately return it without modifying the layer.
-//
-// If the IPv4 layer is a fragment and we don't have all
-// fragments, it will return nil and store whatever internal
-// information it needs to eventually defrag the packet.
-//
-// If the IPv4 layer is the last fragment needed to reconstruct
-// the packet, a new IPv4 layer will be returned, and will be set to
-// the entire defragmented packet,
-//
-// It use a map of all the running flows
-//
-// Usage example:
-//
-// func HandlePacket(in *layers.IPv4) err {
-//     defragger := ip4defrag.NewIPv4Defragmenter()
-//     in, err := defragger.DefragIPv4(in)
-//     if err != nil {
-//         return err
-//     } else if in == nil {
-//         return nil  // packet fragment, we don't have whole packet yet.
-//     }
-//     // At this point, we know that 'in' is defragmented.
-//     //It may be the same 'in' passed to
-//        // HandlePacket, or it may not, but we don't really care :)
-//        ... do stuff to 'in' ...
-//}
-//
-func (d *IPv4Defragmenter) DefragIPv4(in *layers.IPv4) (*layers.IPv4, error) {
-       return d.DefragIPv4WithTimestamp(in, time.Now())
-}
-
-// DefragIPv4WithTimestamp provides functionality of DefragIPv4 with
-// an additional timestamp parameter which is used for discarding
-// old fragments instead of time.Now()
-//
-// This is useful when operating on pcap files instead of live captured data
-//
-func (d *IPv4Defragmenter) DefragIPv4WithTimestamp(in *layers.IPv4, t time.Time) (*layers.IPv4, error) {
-       // check if we need to defrag
-       if st := d.dontDefrag(in); st == true {
-               debug.Printf("defrag: do nothing, do not need anything")
-               return in, nil
-       }
-       // perfom security checks
-       st, err := d.securityChecks(in)
-       if err != nil || st == false {
-               debug.Printf("defrag: alert security check")
-               return nil, err
-       }
-
-       // ok, got a fragment
-       debug.Printf("defrag: got a new fragment in.Id=%d in.FragOffset=%d in.Flags=%d\n",
-               in.Id, in.FragOffset*8, in.Flags)
-
-       // have we already seen a flow between src/dst with that Id?
-       ipf := newIPv4(in)
-       var fl *fragmentList
-       var exist bool
-       d.Lock()
-       fl, exist = d.ipFlows[ipf]
-       if !exist {
-               debug.Printf("defrag: unknown flow, creating a new one\n")
-               fl = new(fragmentList)
-               d.ipFlows[ipf] = fl
-       }
-       d.Unlock()
-       // insert, and if final build it
-       out, err2 := fl.insert(in, t)
-
-       // at last, if we hit the maximum frag list len
-       // without any defrag success, we just drop everything and
-       // raise an error
-       if out == nil && fl.List.Len()+1 > IPv4MaximumFragmentListLen {
-               d.flush(ipf)
-               return nil, fmt.Errorf("defrag: Fragment List hits its maximum"+
-                       "size(%d), without success. Flushing the list",
-                       IPv4MaximumFragmentListLen)
-       }
-
-       // if we got a packet, it's a new one, and he is defragmented
-       if out != nil {
-               // when defrag is done for a flow between two ip
-               // clean the list
-               d.flush(ipf)
-               return out, nil
-       }
-       return nil, err2
-}
-
-// DiscardOlderThan forgets all packets without any activity since
-// time t. It returns the number of FragmentList aka number of
-// fragment packets it has discarded.
-func (d *IPv4Defragmenter) DiscardOlderThan(t time.Time) int {
-       var nb int
-       d.Lock()
-       for k, v := range d.ipFlows {
-               if v.LastSeen.Before(t) {
-                       nb = nb + 1
-                       delete(d.ipFlows, k)
-               }
-       }
-       d.Unlock()
-       return nb
-}
-
-// flush the fragment list for a particular flow
-func (d *IPv4Defragmenter) flush(ipf ipv4) {
-       d.Lock()
-       fl := new(fragmentList)
-       d.ipFlows[ipf] = fl
-       d.Unlock()
-}
-
-// dontDefrag returns true if the IPv4 packet do not need
-// any defragmentation
-func (d *IPv4Defragmenter) dontDefrag(ip *layers.IPv4) bool {
-       // don't defrag packet with DF flag
-       if ip.Flags&layers.IPv4DontFragment != 0 {
-               return true
-       }
-       // don't defrag not fragmented ones
-       if ip.Flags&layers.IPv4MoreFragments == 0 && ip.FragOffset == 0 {
-               return true
-       }
-       return false
-}
-
-// securityChecks performs the needed security checks
-func (d *IPv4Defragmenter) securityChecks(ip *layers.IPv4) (bool, error) {
-       // don't allow too big fragment offset
-       if ip.FragOffset > IPv4MaximumFragmentOffset {
-               return false, fmt.Errorf("defrag: fragment offset too big "+
-                       "(handcrafted? %d > %d)", ip.FragOffset, IPv4MaximumFragmentOffset)
-       }
-       fragOffset := ip.FragOffset * 8
-
-       // don't allow fragment that would oversize an IP packet
-       if fragOffset+ip.Length > IPv4MaximumSize {
-               return false, fmt.Errorf("defrag: fragment will overrun "+
-                       "(handcrafted? %d > %d)", ip.FragOffset*8+ip.Length, IPv4MaximumSize)
-       }
-
-       return true, nil
-}
-
-// fragmentList holds a container/list used to contains IP
-// packets/fragments.  It stores internal counters to track the
-// maximum total of byte, and the current length it has received.
-// It also stores a flag to know if he has seen the last packet.
-type fragmentList struct {
-       List          list.List
-       Highest       uint16
-       Current       uint16
-       FinalReceived bool
-       LastSeen      time.Time
-}
-
-// insert insert an IPv4 fragment/packet into the Fragment List
-// It use the following strategy : we are inserting fragment based
-// on their offset, latest first. This is sometimes called BSD-Right.
-// See: http://www.sans.org/reading-room/whitepapers/detection/ip-fragment-reassembly-scapy-33969
-func (f *fragmentList) insert(in *layers.IPv4, t time.Time) (*layers.IPv4, error) {
-       // TODO: should keep a copy of *in in the list
-       // or not (ie the packet source is reliable) ? -> depends on Lazy / last packet
-       fragOffset := in.FragOffset * 8
-       if fragOffset >= f.Highest {
-               f.List.PushBack(in)
-       } else {
-               for e := f.List.Front(); e != nil; e = e.Next() {
-                       frag, _ := e.Value.(*layers.IPv4)
-                       if in.FragOffset == frag.FragOffset {
-                               // TODO: what if we receive a fragment
-                               // that begins with duplicate data but
-                               // *also* has new data? For example:
-                               //
-                               // AAAA
-                               //     BB
-                               //     BBCC
-                               //         DDDD
-                               //
-                               // In this situation we completely
-                               // ignore CC and the complete packet can
-                               // never be reassembled.
-                               debug.Printf("defrag: ignoring frag %d as we already have it (duplicate?)\n",
-                                       fragOffset)
-                               return nil, nil
-                       }
-                       if in.FragOffset < frag.FragOffset {
-                               debug.Printf("defrag: inserting frag %d before existing frag %d\n",
-                                       fragOffset, frag.FragOffset*8)
-                               f.List.InsertBefore(in, e)
-                               break
-                       }
-               }
-       }
-
-       f.LastSeen = t
-
-       fragLength := in.Length - 20
-       // After inserting the Fragment, we update the counters
-       if f.Highest < fragOffset+fragLength {
-               f.Highest = fragOffset + fragLength
-       }
-       f.Current = f.Current + fragLength
-
-       debug.Printf("defrag: insert ListLen: %d Highest:%d Current:%d\n",
-               f.List.Len(),
-               f.Highest, f.Current)
-
-       // Final Fragment ?
-       if in.Flags&layers.IPv4MoreFragments == 0 {
-               f.FinalReceived = true
-       }
-       // Ready to try defrag ?
-       if f.FinalReceived && f.Highest == f.Current {
-               return f.build(in)
-       }
-       return nil, nil
-}
-
-// Build builds the final datagram, modifying ip in place.
-// It puts priority to packet in the early position of the list.
-// See Insert for more details.
-func (f *fragmentList) build(in *layers.IPv4) (*layers.IPv4, error) {
-       var final []byte
-       var currentOffset uint16
-
-       debug.Printf("defrag: building the datagram \n")
-       for e := f.List.Front(); e != nil; e = e.Next() {
-               frag, _ := e.Value.(*layers.IPv4)
-               if frag.FragOffset*8 == currentOffset {
-                       debug.Printf("defrag: building - adding %d\n", frag.FragOffset*8)
-                       final = append(final, frag.Payload...)
-                       currentOffset = currentOffset + frag.Length - 20
-               } else if frag.FragOffset*8 < currentOffset {
-                       // overlapping fragment - let's take only what we need
-                       startAt := currentOffset - frag.FragOffset*8
-                       debug.Printf("defrag: building - overlapping, starting at %d\n",
-                               startAt)
-                       if startAt > frag.Length-20 {
-                               return nil, errors.New("defrag: building - invalid fragment")
-                       }
-                       final = append(final, frag.Payload[startAt:]...)
-                       currentOffset = currentOffset + frag.FragOffset*8
-               } else {
-                       // Houston - we have an hole !
-                       debug.Printf("defrag: hole found while building, " +
-                               "stopping the defrag process\n")
-                       return nil, errors.New("defrag: building - hole found")
-               }
-               debug.Printf("defrag: building - next is %d\n", currentOffset)
-       }
-
-       // TODO recompute IP Checksum
-       out := &layers.IPv4{
-               Version:    in.Version,
-               IHL:        in.IHL,
-               TOS:        in.TOS,
-               Length:     f.Highest,
-               Id:         0,
-               Flags:      0,
-               FragOffset: 0,
-               TTL:        in.TTL,
-               Protocol:   in.Protocol,
-               Checksum:   0,
-               SrcIP:      in.SrcIP,
-               DstIP:      in.DstIP,
-               Options:    in.Options,
-               Padding:    in.Padding,
-       }
-       out.Payload = final
-
-       return out, nil
-}
-
-// ipv4 is a struct to be used as a key.
-type ipv4 struct {
-       ip4 gopacket.Flow
-       id  uint16
-}
-
-// newIPv4 returns a new initialized IPv4 Flow
-func newIPv4(ip *layers.IPv4) ipv4 {
-       return ipv4{
-               ip4: ip.NetworkFlow(),
-               id:  ip.Id,
-       }
-}
-
-// IPv4Defragmenter is a struct which embedded a map of
-// all fragment/packet.
-type IPv4Defragmenter struct {
-       sync.RWMutex
-       ipFlows map[ipv4]*fragmentList
-}
-
-// NewIPv4Defragmenter returns a new IPv4Defragmenter
-// with an initialized map.
-func NewIPv4Defragmenter() *IPv4Defragmenter {
-       return &IPv4Defragmenter{
-               ipFlows: make(map[ipv4]*fragmentList),
-       }
-}
diff --git a/vendor/github.com/google/gopacket/ip4defrag/defrag_test.go b/vendor/github.com/google/gopacket/ip4defrag/defrag_test.go
deleted file mode 100644 (file)
index 1eb66d2..0000000
+++ /dev/null
@@ -1,1396 +0,0 @@
-// Copyright 2013 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package ip4defrag
-
-import (
-       "bytes"
-       "fmt"
-       "net"
-       "testing"
-
-       "github.com/google/gopacket"
-       "github.com/google/gopacket/bytediff"
-       "github.com/google/gopacket/layers"
-)
-
-func TestNotFrag(t *testing.T) {
-       ip := layers.IPv4{
-               Version: 4,
-               TTL:     220,
-               SrcIP:   net.IPv4(1, 1, 1, 1),
-               DstIP:   net.IPv4(2, 2, 2, 2),
-               Flags:   layers.IPv4DontFragment,
-       }
-       defrag := NewIPv4Defragmenter()
-
-       out, err := defrag.DefragIPv4(&ip)
-       if out == nil || err != nil {
-               t.Errorf("defrag: this packet do not need to be defrag ['%s']", err)
-       }
-}
-
-func TestDefragPingMultipleFrags(t *testing.T) {
-       defrag := NewIPv4Defragmenter()
-
-       // We inject the 4 fragments and test the DefragIPv4 interface
-       gentestDefrag(t, defrag, testPing1Frag1, false, "Ping1Frag1")
-       gentestDefrag(t, defrag, testPing1Frag1, false, "Ping1Frag1")
-       gentestDefrag(t, defrag, testPing1Frag1, false, "Ping1Frag1")
-       gentestDefrag(t, defrag, testPing1Frag3, false, "Ping1Frag3")
-       gentestDefrag(t, defrag, testPing1Frag2, false, "Ping1Frag2")
-       ip := gentestDefrag(t, defrag, testPing1Frag4, true, "Ping1Frag4")
-
-       if len(ip.Payload) != 4508 {
-               t.Fatalf("defrag: expecting a packet of 4508 bytes, got %d", len(ip.Payload))
-       }
-
-       validPayload := append(testPing1Frag1[34:], testPing1Frag2[34:]...)
-       validPayload = append(validPayload, testPing1Frag3[34:]...)
-       validPayload = append(validPayload, testPing1Frag4[34:]...)
-
-       if bytes.Compare(validPayload, ip.Payload) != 0 {
-               fmt.Println(bytediff.BashOutput.String(
-                       bytediff.Diff(validPayload, ip.Payload)))
-               t.Errorf("defrag: payload is not correctly defragmented")
-       }
-}
-
-func TestDefragPing1(t *testing.T) {
-       defrag := NewIPv4Defragmenter()
-
-       // We inject the 4 fragments and test the DefragIPv4 interface
-       gentestDefrag(t, defrag, testPing1Frag1, false, "Ping1Frag1")
-       gentestDefrag(t, defrag, testPing1Frag3, false, "Ping1Frag3")
-       gentestDefrag(t, defrag, testPing1Frag2, false, "Ping1Frag2")
-       ip := gentestDefrag(t, defrag, testPing1Frag4, true, "Ping1Frag4")
-
-       if len(ip.Payload) != 4508 {
-               t.Fatalf("defrag: expecting a packet of 4508 bytes, got %d", len(ip.Payload))
-       }
-
-       validPayload := append(testPing1Frag1[34:], testPing1Frag2[34:]...)
-       validPayload = append(validPayload, testPing1Frag3[34:]...)
-       validPayload = append(validPayload, testPing1Frag4[34:]...)
-
-       if bytes.Compare(validPayload, ip.Payload) != 0 {
-               fmt.Println(bytediff.BashOutput.String(
-                       bytediff.Diff(validPayload, ip.Payload)))
-               t.Errorf("defrag: payload is not correctly defragmented")
-       }
-
-       // We redo the same test to handle duplication, and be sure
-       // that the internal list is correctly cleaned up.
-       gentestDefrag(t, defrag, testPing1Frag1, false, "Ping1Frag1")
-       gentestDefrag(t, defrag, testPing1Frag3, false, "Ping1Frag3")
-       gentestDefrag(t, defrag, testPing1Frag2, false, "Ping1Frag2")
-       ip2 := gentestDefrag(t, defrag, testPing1Frag4, true, "Ping1Frag4")
-
-       if bytes.Compare(ip2.Payload, ip.Payload) != 0 {
-               fmt.Println(bytediff.BashOutput.String(
-                       bytediff.Diff(validPayload, ip.Payload)))
-               t.Errorf("defrag: ip and ip2 payload are different")
-       }
-}
-
-func TestDefragPing1and2(t *testing.T) {
-       debug = false
-       defrag := NewIPv4Defragmenter()
-
-       // We inject the 8 mixed fragments from two "flows"
-       // and test the DefragIPv4 interface
-       gentestDefrag(t, defrag, testPing1Frag1, false, "Ping1Frag1")
-       gentestDefrag(t, defrag, testPing1Frag3, false, "Ping1Frag3")
-       gentestDefrag(t, defrag, testPing2Frag3, false, "Ping2Frag3")
-       gentestDefrag(t, defrag, testPing2Frag4, false, "Ping2Frag4")
-       gentestDefrag(t, defrag, testPing1Frag2, false, "Ping1Frag2")
-       gentestDefrag(t, defrag, testPing2Frag1, false, "Ping2Frag1")
-       ip := gentestDefrag(t, defrag, testPing1Frag4, true, "Ping1Frag4")
-
-       if len(ip.Payload) != 4508 {
-               t.Fatalf("defrag: expecting a packet Ping1 of 4508 bytes, got %d",
-                       len(ip.Payload))
-       }
-
-       validPayload := append(testPing1Frag1[34:], testPing1Frag2[34:]...)
-       validPayload = append(validPayload, testPing1Frag3[34:]...)
-       validPayload = append(validPayload, testPing1Frag4[34:]...)
-
-       if bytes.Compare(validPayload, ip.Payload) != 0 {
-               fmt.Println(bytediff.BashOutput.String(
-                       bytediff.Diff(validPayload, ip.Payload)))
-               t.Errorf("defrag: payload Ping1 is not correctly defragmented")
-       }
-
-       ip = gentestDefrag(t, defrag, testPing2Frag2, true, "Ping2Frag2")
-       if len(ip.Payload) != 4508 {
-               t.Fatalf("defrag: expecting a packet Ping2 of 4508 bytes, got %d",
-                       len(ip.Payload))
-       }
-
-       validPayload2 := append(testPing2Frag1[34:], testPing2Frag2[34:]...)
-       validPayload2 = append(validPayload2, testPing2Frag3[34:]...)
-       validPayload2 = append(validPayload2, testPing2Frag4[34:]...)
-
-       if bytes.Compare(validPayload2, ip.Payload) != 0 {
-               fmt.Println(bytediff.BashOutput.String(
-                       bytediff.Diff(validPayload2, ip.Payload)))
-               t.Errorf("defrag: payload Ping2 is not correctly defragmented")
-       }
-       debug = false
-}
-
-func TestDefragPingTooMuch(t *testing.T) {
-       defrag := NewIPv4Defragmenter()
-
-       ip1 := layers.IPv4{
-               Version:    4,
-               TTL:        15,
-               SrcIP:      net.IPv4(1, 1, 1, 1),
-               DstIP:      net.IPv4(2, 2, 2, 2),
-               Id:         0xcc,
-               FragOffset: 0,
-               Length:     500,
-               Flags:      layers.IPv4MoreFragments,
-       }
-       defrag.DefragIPv4(&ip1)
-       for i := 2; i < 8; i = i + 1 {
-               nip := ip1
-               nip.FragOffset = ip1.Length * uint16(i)
-               out, err := defrag.DefragIPv4(&nip)
-               if err != nil || out != nil {
-                       t.Fatalf("defrag: %s", err)
-               }
-
-       }
-       ip8 := ip1
-       ip8.FragOffset = 666
-
-       _, err := defrag.DefragIPv4(&ip8)
-       if err == nil {
-               t.Fatalf("defrag: Maximum number of fragments are supposed to be 8")
-       }
-}
-
-func gentestDefrag(t *testing.T, defrag *IPv4Defragmenter, buf []byte, expect bool, label string) *layers.IPv4 {
-       p := gopacket.NewPacket(buf, layers.LinkTypeEthernet, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       ipL := p.Layer(layers.LayerTypeIPv4)
-       in, _ := ipL.(*layers.IPv4)
-
-       out, err := defrag.DefragIPv4(in)
-       if err != nil {
-               t.Fatalf("defrag: %s", err)
-       }
-       status := false
-       if out != nil {
-               status = true
-       }
-       if status != expect {
-               t.Fatalf("defrag: a fragment was not detected (%s)", label)
-       }
-       return out
-}
-
-/* Frame 1-1 (1514 bytes) */
-var testPing1Frag1 = []byte{
-       0xf4, 0xca, 0xe5, 0x4e, 0xe1, 0x46, 0x7c, 0x7a, /* ...N.F|z */
-       0x91, 0x7d, 0x7c, 0x74, 0x08, 0x00, 0x45, 0x00, /* .}|t..E. */
-       0x05, 0xdc, 0xb3, 0xe1, 0x20, 0x00, 0x40, 0x01, /* .... .@. */
-       0xcf, 0x70, 0xc0, 0xa8, 0x01, 0x17, 0x08, 0x08, /* .p...... */
-       0x08, 0x08, 0x08, 0x00, 0x45, 0xa6, 0x14, 0xbf, /* ....E... */
-       0x00, 0x01, 0x9e, 0x3e, 0x20, 0x55, 0x00, 0x00, /* ...> U.. */
-       0x00, 0x00, 0x16, 0x91, 0x0d, 0x00, 0x00, 0x00, /* ........ */
-       0x00, 0x00, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, /* .. */
-}
-
-/* Frame (1514 bytes) */
-var testPing1Frag2 = []byte{
-       0xf4, 0xca, 0xe5, 0x4e, 0xe1, 0x46, 0x7c, 0x7a, /* ...N.F|z */
-       0x91, 0x7d, 0x7c, 0x74, 0x08, 0x00, 0x45, 0x00, /* .}|t..E. */
-       0x05, 0xdc, 0xb3, 0xe1, 0x20, 0xb9, 0x40, 0x01, /* .... .@. */
-       0xce, 0xb7, 0xc0, 0xa8, 0x01, 0x17, 0x08, 0x08, /* ........ */
-       0x08, 0x08, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, /* .. */
-}
-
-/* Frame (1514 bytes) */
-var testPing1Frag3 = []byte{
-       0xf4, 0xca, 0xe5, 0x4e, 0xe1, 0x46, 0x7c, 0x7a, /* ...N.F|z */
-       0x91, 0x7d, 0x7c, 0x74, 0x08, 0x00, 0x45, 0x00, /* .}|t..E. */
-       0x05, 0xdc, 0xb3, 0xe1, 0x21, 0x72, 0x40, 0x01, /* ....!r@. */
-       0xcd, 0xfe, 0xc0, 0xa8, 0x01, 0x17, 0x08, 0x08, /* ........ */
-       0x08, 0x08, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, /* NO */
-}
-
-/* Frame (102 bytes) */
-var testPing1Frag4 = []byte{
-       0xf4, 0xca, 0xe5, 0x4e, 0xe1, 0x46, 0x7c, 0x7a, /* ...N.F|z */
-       0x91, 0x7d, 0x7c, 0x74, 0x08, 0x00, 0x45, 0x00, /* .}|t..E. */
-       0x00, 0x58, 0xb3, 0xe1, 0x02, 0x2b, 0x40, 0x01, /* .X...+@. */
-       0xf2, 0xc9, 0xc0, 0xa8, 0x01, 0x17, 0x08, 0x08, /* ........ */
-       0x08, 0x08, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* ..PQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, /* ...... */
-}
-
-/* Frame (1514 bytes) */
-var testPing2Frag1 = []byte{
-       0xf4, 0xca, 0xe5, 0x4e, 0xe1, 0x46, 0x7c, 0x7a, /* ...N.F|z */
-       0x91, 0x7d, 0x7c, 0x74, 0x08, 0x00, 0x45, 0x00, /* .}|t..E. */
-       0x05, 0xdc, 0xb4, 0x9e, 0x20, 0x00, 0x40, 0x01, /* .... .@. */
-       0xce, 0xb3, 0xc0, 0xa8, 0x01, 0x17, 0x08, 0x08, /* ........ */
-       0x08, 0x08, 0x08, 0x00, 0x9e, 0xa0, 0x14, 0xbf, /* ........ */
-       0x00, 0x02, 0x9f, 0x3e, 0x20, 0x55, 0x00, 0x00, /* ...> U.. */
-       0x00, 0x00, 0xbc, 0x95, 0x0d, 0x00, 0x00, 0x00, /* ........ */
-       0x00, 0x00, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, /* .. */
-}
-
-/* Frame (1514 bytes) */
-var testPing2Frag2 = []byte{
-       0xf4, 0xca, 0xe5, 0x4e, 0xe1, 0x46, 0x7c, 0x7a, /* ...N.F|z */
-       0x91, 0x7d, 0x7c, 0x74, 0x08, 0x00, 0x45, 0x00, /* .}|t..E. */
-       0x05, 0xdc, 0xb4, 0x9e, 0x20, 0xb9, 0x40, 0x01, /* .... .@. */
-       0xcd, 0xfa, 0xc0, 0xa8, 0x01, 0x17, 0x08, 0x08, /* ........ */
-       0x08, 0x08, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, /* .. */
-}
-
-/* Frame (1514 bytes) */
-var testPing2Frag3 = []byte{
-       0xf4, 0xca, 0xe5, 0x4e, 0xe1, 0x46, 0x7c, 0x7a, /* ...N.F|z */
-       0x91, 0x7d, 0x7c, 0x74, 0x08, 0x00, 0x45, 0x00, /* .}|t..E. */
-       0x05, 0xdc, 0xb4, 0x9e, 0x21, 0x72, 0x40, 0x01, /* ....!r@. */
-       0xcd, 0x41, 0xc0, 0xa8, 0x01, 0x17, 0x08, 0x08, /* .A...... */
-       0x08, 0x08, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
-       0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
-       0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
-       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
-       0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
-       0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
-       0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
-       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
-       0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
-       0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
-       0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
-       0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
-       0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
-       0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
-       0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
-       0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
-       0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
-       0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
-       0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
-       0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
-       0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
-       0x4e, 0x4f, /* NO */
-}
-
-/* Frame (102 bytes) */
-var testPing2Frag4 = []byte{
-       0xf4, 0xca, 0xe5, 0x4e, 0xe1, 0x46, 0x7c, 0x7a, /* ...N.F|z */
-       0x91, 0x7d, 0x7c, 0x74, 0x08, 0x00, 0x45, 0x00, /* .}|t..E. */
-       0x00, 0x58, 0xb4, 0x9e, 0x02, 0x2b, 0x40, 0x01, /* .X...+@. */
-       0xf2, 0x0c, 0xc0, 0xa8, 0x01, 0x17, 0x08, 0x08, /* ........ */
-       0x08, 0x08, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* ..PQRSTU */
-       0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
-       0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
-       0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
-       0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
-       0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
-       0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
-       0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
-       0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, /* ...... */
-}
diff --git a/vendor/github.com/google/gopacket/layers/base_test.go b/vendor/github.com/google/gopacket/layers/base_test.go
deleted file mode 100644 (file)
index 4be7480..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2012, Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// This file contains some test helper functions.
-
-package layers
-
-import (
-       "github.com/google/gopacket"
-       "testing"
-)
-
-func min(a, b int) int {
-       if a < b {
-               return a
-       }
-       return b
-}
-
-func checkLayers(p gopacket.Packet, want []gopacket.LayerType, t *testing.T) {
-       layers := p.Layers()
-       t.Log("Checking packet layers, want", want)
-       for _, l := range layers {
-               t.Logf("  Got layer %v, %d bytes, payload of %d bytes", l.LayerType(),
-                       len(l.LayerContents()), len(l.LayerPayload()))
-       }
-       t.Log(p)
-       if len(layers) != len(want) {
-               t.Errorf("  Number of layers mismatch: got %d want %d", len(layers),
-                       len(want))
-               return
-       }
-       for i, l := range layers {
-               if l.LayerType() != want[i] {
-                       t.Errorf("  Layer %d mismatch: got %v want %v", i, l.LayerType(),
-                               want[i])
-               }
-       }
-}
diff --git a/vendor/github.com/google/gopacket/layers/bfd_test.go b/vendor/github.com/google/gopacket/layers/bfd_test.go
deleted file mode 100644 (file)
index 1ac84cb..0000000
+++ /dev/null
@@ -1,289 +0,0 @@
-// Copyright 2017 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-//
-//******************************************************************************
-
-package layers
-
-import (
-       "github.com/google/gopacket"
-       "reflect"
-       "testing"
-)
-
-//******************************************************************************
-
-// checkBFD() uses the bfd.go code to analyse the packet bytes as an BFD Control
-// packet and generate an BFD object. It then compares the generated BFD object
-// with the one provided and throws an error if there is any difference.
-// The desc argument is output with any failure message to identify the test.
-func checkBFD(desc string, t *testing.T, packetBytes []byte, pExpectedBFD *BFD) {
-
-       // Analyse the packet bytes, yielding a new packet object p.
-       p := gopacket.NewPacket(packetBytes, LinkTypeEthernet, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Errorf("Failed to decode packet %s: %v", desc, p.ErrorLayer().Error())
-       }
-
-       // Ensure that the packet analysis yielded the correct set of layers:
-       //    Link Layer        = Ethernet.
-       //    Network Layer     = IPv4.
-       //    Transport Layer   = UDP.
-       //    Application Layer = BFD.
-       checkLayers(p, []gopacket.LayerType{
-               LayerTypeEthernet,
-               LayerTypeIPv4,
-               LayerTypeUDP,
-               LayerTypeBFD}, t)
-
-       // Select the Application (BFD) layer.
-       pResultBFD, ok := p.ApplicationLayer().(*BFD)
-       if !ok {
-               t.Error("No BFD layer type found in packet in " + desc + ".")
-       }
-
-       // Compare the generated BFD object with the expected BFD object.
-       if !reflect.DeepEqual(pResultBFD, pExpectedBFD) {
-               t.Errorf("BFD packet processing failed for packet "+desc+
-                       ":\ngot  :\n%#v\n\nwant :\n%#v\n\n", pResultBFD, pExpectedBFD)
-       }
-       buf := gopacket.NewSerializeBuffer()
-       opts := gopacket.SerializeOptions{}
-       err := pResultBFD.SerializeTo(buf, opts)
-       if err != nil {
-               t.Error(err)
-       }
-       if !reflect.DeepEqual(pResultBFD.Contents, buf.Bytes()) {
-               t.Errorf("BFD packet serialization failed for packet "+desc+
-                       ":\ngot  :\n%+v\n\nwant :\n%+v\n\n", buf.Bytes(), pResultBFD.Contents)
-       }
-
-}
-
-func TestBFDNoAuth(t *testing.T) {
-       // This test packet is based off of the first BFD packet in the BFD sample capture
-       // pcap file bfd-raw-auth-simple.pcap on the Wireshark sample captures page:
-       //
-       //    https://wiki.wireshark.org/SampleCaptures
-       //    https://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=get&target=bfd-raw-auth-simple.pcap
-       //
-       // Changed to remove the authentication header, and adjust all of the lengths
-       var testPacketBFD = []byte{
-               0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x10, 0x94, 0x00, 0x00, 0x02, 0x08, 0x00, 0x45, 0x00,
-               0x00, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x11, 0x2f, 0x58, 0xc0, 0x55, 0x01, 0x02, 0xc0, 0x00,
-               0x00, 0x01, 0xc0, 0x00, 0x0e, 0xc8, 0x00, 0x20, 0x72, 0x31, 0x20, 0x40, 0x05, 0x18, 0x00, 0x00,
-               0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0x40, 0x00, 0x0f, 0x42, 0x40, 0x00, 0x00,
-               0x00, 0x00, 0x01, 0x4e, 0x0a, 0x90, 0x40,
-       }
-
-       // Assemble the BFD object that we expect to emerge from this test.
-       pExpectedBFD := &BFD{
-               BaseLayer: BaseLayer{
-                       Contents: []byte{
-                               0x20, 0x40, 0x05, 0x18, 0x00, 0x00, 0x00, 0x01,
-                               0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0x40,
-                               0x00, 0x0f, 0x42, 0x40, 0x00, 0x00, 0x00, 0x00,
-                       },
-                       Payload: nil,
-               },
-               Version:    1,
-               Diagnostic: BFDDiagnosticNone,
-               State:      BFDStateDown,
-               Poll:       false,
-               Final:      false,
-               ControlPlaneIndependent:   false,
-               AuthPresent:               false,
-               Demand:                    false,
-               Multipoint:                false,
-               DetectMultiplier:          5,
-               MyDiscriminator:           1,
-               YourDiscriminator:         0,
-               DesiredMinTxInterval:      1000000,
-               RequiredMinRxInterval:     1000000,
-               RequiredMinEchoRxInterval: 0,
-               AuthHeader:                nil,
-       }
-
-       checkBFD("testNoAuth", t, testPacketBFD, pExpectedBFD)
-}
-
-//******************************************************************************
-
-func TestBFDAuthTypePassword(t *testing.T) {
-
-       // This test packet is the first BFD packet in the BFD sample capture
-       // pcap file bfd-raw-auth-simple.pcap on the Wireshark sample captures page:
-       //
-       //    https://wiki.wireshark.org/SampleCaptures
-       //    https://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=get&target=bfd-raw-auth-simple.pcap
-       var testPacketBFD = []byte{
-               0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x10, 0x94, 0x00, 0x00, 0x02, 0x08, 0x00, 0x45, 0x00,
-               0x00, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x11, 0x2f, 0x58, 0xc0, 0x55, 0x01, 0x02, 0xc0, 0x00,
-               0x00, 0x01, 0xc0, 0x00, 0x0e, 0xc8, 0x00, 0x29, 0x72, 0x31, 0x20, 0x44, 0x05, 0x21, 0x00, 0x00,
-               0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0x40, 0x00, 0x0f, 0x42, 0x40, 0x00, 0x00,
-               0x00, 0x00, 0x01, 0x09, 0x02, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4e, 0x0a, 0x90, 0x40,
-       }
-
-       // Assemble the BFD object that we expect to emerge from this test.
-       pExpectedBFD := &BFD{
-               BaseLayer: BaseLayer{
-                       Contents: []byte{
-                               0x20, 0x44, 0x05, 0x21, 0x00, 0x00, 0x00, 0x01,
-                               0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0x40,
-                               0x00, 0x0f, 0x42, 0x40, 0x00, 0x00, 0x00, 0x00,
-                               0x01, 0x09, 0x02, 0x73, 0x65, 0x63, 0x72, 0x65,
-                               0x74,
-                       },
-                       Payload: nil,
-               },
-               Version:    1,
-               Diagnostic: BFDDiagnosticNone,
-               State:      BFDStateDown,
-               Poll:       false,
-               Final:      false,
-               ControlPlaneIndependent:   false,
-               AuthPresent:               true,
-               Demand:                    false,
-               Multipoint:                false,
-               DetectMultiplier:          5,
-               MyDiscriminator:           1,
-               YourDiscriminator:         0,
-               DesiredMinTxInterval:      1000000,
-               RequiredMinRxInterval:     1000000,
-               RequiredMinEchoRxInterval: 0,
-               AuthHeader: &BFDAuthHeader{
-                       AuthType:       BFDAuthTypePassword,
-                       KeyID:          2,
-                       SequenceNumber: 0,
-                       Data:           []byte{'s', 'e', 'c', 'r', 'e', 't'},
-               },
-       }
-
-       checkBFD("testBFDAuthTypePassword", t, testPacketBFD, pExpectedBFD)
-}
-
-//******************************************************************************
-
-func TestBFDAuthTypeKeyedMD5(t *testing.T) {
-
-       // This test packet is the first BFD packet in the BFD sample capture
-       // pcap file bfd-raw-auth-md5.pcap on the Wireshark sample captures page:
-       //
-       //    https://wiki.wireshark.org/SampleCaptures
-       //    https://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=get&target=bfd-raw-auth-md5.pcap
-       var testPacketBFD = []byte{
-               0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x10, 0x94, 0x00, 0x00, 0x02, 0x08, 0x00, 0x45, 0x00,
-               0x00, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x0a, 0x11, 0x2f, 0x48, 0xc0, 0x55, 0x01, 0x02, 0xc0, 0x00,
-               0x00, 0x01, 0x04, 0x00, 0x0e, 0xc8, 0x00, 0x38, 0x6a, 0xcc, 0x20, 0x44, 0x05, 0x30, 0x00, 0x00,
-               0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0x40, 0x00, 0x0f, 0x42, 0x40, 0x00, 0x00,
-               0x00, 0x00, 0x02, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x05, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
-               0x07, 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x3c, 0xc3, 0xf8, 0x21,
-       }
-
-       // Assemble the BFD object that we expect to emerge from this test.
-       pExpectedBFD := &BFD{
-               BaseLayer: BaseLayer{
-                       Contents: []byte{
-                               0x20, 0x44, 0x05, 0x30, 0x00, 0x00, 0x00, 0x01,
-                               0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0x40,
-                               0x00, 0x0f, 0x42, 0x40, 0x00, 0x00, 0x00, 0x00,
-                               0x02, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x05,
-                               0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
-                               0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
-                       },
-                       Payload: nil,
-               },
-               Version:    1,
-               Diagnostic: BFDDiagnosticNone,
-               State:      BFDStateDown,
-               Poll:       false,
-               Final:      false,
-               ControlPlaneIndependent:   false,
-               AuthPresent:               true,
-               Demand:                    false,
-               Multipoint:                false,
-               DetectMultiplier:          5,
-               MyDiscriminator:           1,
-               YourDiscriminator:         0,
-               DesiredMinTxInterval:      1000000,
-               RequiredMinRxInterval:     1000000,
-               RequiredMinEchoRxInterval: 0,
-               AuthHeader: &BFDAuthHeader{
-                       AuthType:       BFDAuthTypeKeyedMD5,
-                       KeyID:          2,
-                       SequenceNumber: 5,
-                       Data: []byte{
-                               0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
-                               0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
-                       },
-               },
-       }
-
-       checkBFD("testBFDAuthTypeKeyedMD5", t, testPacketBFD, pExpectedBFD)
-}
-
-//******************************************************************************
-
-func TestBFDAuthTypeMeticulousKeyedSHA1(t *testing.T) {
-
-       // This test packet is the first BFD packet in the BFD sample capture
-       // pcap file bfd-raw-auth-sha1.pcap on the Wireshark sample captures page:
-       //
-       //    https://wiki.wireshark.org/SampleCaptures
-       //    https://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=get&target=bfd-raw-auth-sha1.pcap
-       var testPacketBFD = []byte{
-               0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x10, 0x94, 0x00, 0x00, 0x02, 0x08, 0x00, 0x45, 0x00,
-               0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x11, 0x2f, 0x45, 0xc0, 0x55, 0x01, 0x02, 0xc0, 0x00,
-               0x00, 0x01, 0x04, 0x00, 0x0e, 0xc8, 0x00, 0x3c, 0x37, 0x8a, 0x20, 0x44, 0x05, 0x34, 0x00, 0x00,
-               0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0x40, 0x00, 0x0f, 0x42, 0x40, 0x00, 0x00,
-               0x00, 0x00, 0x05, 0x1c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x05, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
-               0x07, 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0xea, 0x6d,
-               0x1f, 0x21,
-       }
-
-       // Assemble the BFD object that we expect to emerge from this test.
-       pExpectedBFD := &BFD{
-               BaseLayer: BaseLayer{
-                       Contents: []byte{
-                               0x20, 0x44, 0x05, 0x34, 0x00, 0x00, 0x00, 0x01,
-                               0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0x40,
-                               0x00, 0x0f, 0x42, 0x40, 0x00, 0x00, 0x00, 0x00,
-                               0x05, 0x1c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x05,
-                               0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
-                               0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
-                               0x17, 0x18, 0x19, 0x1a,
-                       },
-                       Payload: nil,
-               },
-               Version:    1,
-               Diagnostic: BFDDiagnosticNone,
-               State:      BFDStateDown,
-               Poll:       false,
-               Final:      false,
-               ControlPlaneIndependent:   false,
-               AuthPresent:               true,
-               Demand:                    false,
-               Multipoint:                false,
-               DetectMultiplier:          5,
-               MyDiscriminator:           1,
-               YourDiscriminator:         0,
-               DesiredMinTxInterval:      1000000,
-               RequiredMinRxInterval:     1000000,
-               RequiredMinEchoRxInterval: 0,
-               AuthHeader: &BFDAuthHeader{
-                       AuthType:       BFDAuthTypeMeticulousKeyedSHA1,
-                       KeyID:          2,
-                       SequenceNumber: 5,
-                       Data: []byte{
-                               0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
-                               0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
-                               0x17, 0x18, 0x19, 0x1a,
-                       },
-               },
-       }
-
-       checkBFD("TestBFDAuthTypeMeticulousKeyedSHA1", t, testPacketBFD, pExpectedBFD)
-}
diff --git a/vendor/github.com/google/gopacket/layers/decode_test.go b/vendor/github.com/google/gopacket/layers/decode_test.go
deleted file mode 100644 (file)
index ecfbff7..0000000
+++ /dev/null
@@ -1,1234 +0,0 @@
-// Copyright 2012, Google, Inc. All rights reserved.
-// Copyright 2009-2011 Andreas Krennmair. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
-       "bytes"
-       "encoding/hex"
-       "fmt"
-       "net"
-       "reflect"
-       "strings"
-       "testing"
-
-       "github.com/google/gopacket"
-       "github.com/google/gopacket/bytediff"
-)
-
-var testSimpleTCPPacket = []byte{
-       0x00, 0x00, 0x0c, 0x9f, 0xf0, 0x20, 0xbc, 0x30, 0x5b, 0xe8, 0xd3, 0x49,
-       0x08, 0x00, 0x45, 0x00, 0x01, 0xa4, 0x39, 0xdf, 0x40, 0x00, 0x40, 0x06,
-       0x55, 0x5a, 0xac, 0x11, 0x51, 0x49, 0xad, 0xde, 0xfe, 0xe1, 0xc5, 0xf7,
-       0x00, 0x50, 0xc5, 0x7e, 0x0e, 0x48, 0x49, 0x07, 0x42, 0x32, 0x80, 0x18,
-       0x00, 0x73, 0x9a, 0x8f, 0x00, 0x00, 0x01, 0x01, 0x08, 0x0a, 0x03, 0x77,
-       0x37, 0x9c, 0x42, 0x77, 0x5e, 0x3a, 0x47, 0x45, 0x54, 0x20, 0x2f, 0x20,
-       0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, 0x0d, 0x0a, 0x48, 0x6f,
-       0x73, 0x74, 0x3a, 0x20, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x69, 0x73, 0x68,
-       0x2e, 0x63, 0x6f, 0x6d, 0x0d, 0x0a, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
-       0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x6b, 0x65, 0x65, 0x70, 0x2d, 0x61,
-       0x6c, 0x69, 0x76, 0x65, 0x0d, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x2d, 0x41,
-       0x67, 0x65, 0x6e, 0x74, 0x3a, 0x20, 0x4d, 0x6f, 0x7a, 0x69, 0x6c, 0x6c,
-       0x61, 0x2f, 0x35, 0x2e, 0x30, 0x20, 0x28, 0x58, 0x31, 0x31, 0x3b, 0x20,
-       0x4c, 0x69, 0x6e, 0x75, 0x78, 0x20, 0x78, 0x38, 0x36, 0x5f, 0x36, 0x34,
-       0x29, 0x20, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x57, 0x65, 0x62, 0x4b, 0x69,
-       0x74, 0x2f, 0x35, 0x33, 0x35, 0x2e, 0x32, 0x20, 0x28, 0x4b, 0x48, 0x54,
-       0x4d, 0x4c, 0x2c, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, 0x47, 0x65, 0x63,
-       0x6b, 0x6f, 0x29, 0x20, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2f, 0x31,
-       0x35, 0x2e, 0x30, 0x2e, 0x38, 0x37, 0x34, 0x2e, 0x31, 0x32, 0x31, 0x20,
-       0x53, 0x61, 0x66, 0x61, 0x72, 0x69, 0x2f, 0x35, 0x33, 0x35, 0x2e, 0x32,
-       0x0d, 0x0a, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x3a, 0x20, 0x74, 0x65,
-       0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x2c, 0x61, 0x70, 0x70, 0x6c,
-       0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x78, 0x68, 0x74, 0x6d,
-       0x6c, 0x2b, 0x78, 0x6d, 0x6c, 0x2c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63,
-       0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x78, 0x6d, 0x6c, 0x3b, 0x71, 0x3d,
-       0x30, 0x2e, 0x39, 0x2c, 0x2a, 0x2f, 0x2a, 0x3b, 0x71, 0x3d, 0x30, 0x2e,
-       0x38, 0x0d, 0x0a, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x45, 0x6e,
-       0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x20, 0x67, 0x7a, 0x69, 0x70,
-       0x2c, 0x64, 0x65, 0x66, 0x6c, 0x61, 0x74, 0x65, 0x2c, 0x73, 0x64, 0x63,
-       0x68, 0x0d, 0x0a, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x4c, 0x61,
-       0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x3a, 0x20, 0x65, 0x6e, 0x2d, 0x55,
-       0x53, 0x2c, 0x65, 0x6e, 0x3b, 0x71, 0x3d, 0x30, 0x2e, 0x38, 0x0d, 0x0a,
-       0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x43, 0x68, 0x61, 0x72, 0x73,
-       0x65, 0x74, 0x3a, 0x20, 0x49, 0x53, 0x4f, 0x2d, 0x38, 0x38, 0x35, 0x39,
-       0x2d, 0x31, 0x2c, 0x75, 0x74, 0x66, 0x2d, 0x38, 0x3b, 0x71, 0x3d, 0x30,
-       0x2e, 0x37, 0x2c, 0x2a, 0x3b, 0x71, 0x3d, 0x30, 0x2e, 0x33, 0x0d, 0x0a,
-       0x0d, 0x0a,
-}
-
-var testDecodeOptions = gopacket.DecodeOptions{
-       SkipDecodeRecovery: true,
-}
-
-// Benchmarks for actual gopacket code
-
-func BenchmarkLayerClassSliceContains(b *testing.B) {
-       lc := gopacket.NewLayerClassSlice([]gopacket.LayerType{LayerTypeTCP, LayerTypeEthernet})
-       for i := 0; i < b.N; i++ {
-               _ = lc.Contains(LayerTypeTCP)
-       }
-}
-
-func BenchmarkLayerClassMapContains(b *testing.B) {
-       lc := gopacket.NewLayerClassMap([]gopacket.LayerType{LayerTypeTCP, LayerTypeEthernet})
-       for i := 0; i < b.N; i++ {
-               _ = lc.Contains(LayerTypeTCP)
-       }
-}
-
-func BenchmarkLazyNoCopyEthLayer(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, gopacket.DecodeOptions{Lazy: true, NoCopy: true}).Layer(LayerTypeEthernet)
-       }
-}
-
-func BenchmarkLazyNoCopyIPLayer(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, gopacket.DecodeOptions{Lazy: true, NoCopy: true}).Layer(LayerTypeIPv4)
-       }
-}
-
-func BenchmarkLazyNoCopyTCPLayer(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, gopacket.DecodeOptions{Lazy: true, NoCopy: true}).Layer(LayerTypeTCP)
-       }
-}
-
-func BenchmarkLazyNoCopyAllLayers(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, gopacket.DecodeOptions{Lazy: true, NoCopy: true}).Layers()
-       }
-}
-
-func BenchmarkDefault(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, gopacket.Default)
-       }
-}
-
-func getSerializeLayers() []gopacket.SerializableLayer {
-       p := gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, testDecodeOptions)
-       slayers := []gopacket.SerializableLayer{}
-       for _, l := range p.Layers() {
-               slayers = append(slayers, l.(gopacket.SerializableLayer))
-       }
-       p.Layer(LayerTypeTCP).(*TCP).SetNetworkLayerForChecksum(
-               p.NetworkLayer())
-       return slayers
-}
-
-func BenchmarkSerializeTcpNoOptions(b *testing.B) {
-       slayers := getSerializeLayers()
-       buf := gopacket.NewSerializeBuffer()
-       opts := gopacket.SerializeOptions{}
-       for i := 0; i < b.N; i++ {
-               gopacket.SerializeLayers(buf, opts, slayers...)
-       }
-}
-
-func BenchmarkSerializeTcpFixLengths(b *testing.B) {
-       slayers := getSerializeLayers()
-       buf := gopacket.NewSerializeBuffer()
-       opts := gopacket.SerializeOptions{FixLengths: true}
-       for i := 0; i < b.N; i++ {
-               gopacket.SerializeLayers(buf, opts, slayers...)
-       }
-}
-
-func BenchmarkSerializeTcpComputeChecksums(b *testing.B) {
-       slayers := getSerializeLayers()
-       buf := gopacket.NewSerializeBuffer()
-       opts := gopacket.SerializeOptions{ComputeChecksums: true}
-       for i := 0; i < b.N; i++ {
-               gopacket.SerializeLayers(buf, opts, slayers...)
-       }
-}
-
-func BenchmarkSerializeTcpFixLengthsComputeChecksums(b *testing.B) {
-       slayers := getSerializeLayers()
-       buf := gopacket.NewSerializeBuffer()
-       opts := gopacket.SerializeOptions{FixLengths: true, ComputeChecksums: true}
-       for i := 0; i < b.N; i++ {
-               gopacket.SerializeLayers(buf, opts, slayers...)
-       }
-}
-
-func BenchmarkLazy(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, gopacket.Lazy)
-       }
-}
-
-func BenchmarkNoCopy(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, gopacket.NoCopy)
-       }
-}
-
-func BenchmarkLazyNoCopy(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, gopacket.DecodeOptions{Lazy: true, NoCopy: true})
-       }
-}
-
-func BenchmarkKnownStack(b *testing.B) {
-       stack := []gopacket.DecodingLayer{&Ethernet{}, &IPv4{}, &TCP{}, &gopacket.Payload{}}
-       nf := gopacket.NilDecodeFeedback
-       for i := 0; i < b.N; i++ {
-               data := testSimpleTCPPacket[:]
-               for _, d := range stack {
-                       _ = d.DecodeFromBytes(data, nf)
-                       data = d.LayerPayload()
-               }
-       }
-}
-
-func BenchmarkDecodingLayerParserIgnorePanic(b *testing.B) {
-       decoded := make([]gopacket.LayerType, 0, 20)
-       dlp := gopacket.NewDecodingLayerParser(LayerTypeEthernet, &Ethernet{}, &IPv4{}, &TCP{}, &gopacket.Payload{})
-       dlp.IgnorePanic = true
-       for i := 0; i < b.N; i++ {
-               dlp.DecodeLayers(testSimpleTCPPacket, &decoded)
-       }
-}
-
-func BenchmarkDecodingLayerParserHandlePanic(b *testing.B) {
-       decoded := make([]gopacket.LayerType, 0, 20)
-       dlp := gopacket.NewDecodingLayerParser(LayerTypeEthernet, &Ethernet{}, &IPv4{}, &TCP{}, &gopacket.Payload{})
-       dlp.IgnorePanic = false
-       for i := 0; i < b.N; i++ {
-               dlp.DecodeLayers(testSimpleTCPPacket, &decoded)
-       }
-}
-
-func BenchmarkAlloc(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               _ = &TCP{}
-       }
-}
-
-func BenchmarkFlow(b *testing.B) {
-       p := gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, gopacket.DecodeOptions{Lazy: true, NoCopy: true})
-       net := p.NetworkLayer()
-       for i := 0; i < b.N; i++ {
-               net.NetworkFlow()
-       }
-}
-
-func BenchmarkEndpoints(b *testing.B) {
-       p := gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, gopacket.DecodeOptions{Lazy: true, NoCopy: true})
-       flow := p.NetworkLayer().NetworkFlow()
-       for i := 0; i < b.N; i++ {
-               flow.Endpoints()
-       }
-}
-
-func BenchmarkTCPLayerFromDecodedPacket(b *testing.B) {
-       b.StopTimer()
-       p := gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, testDecodeOptions)
-       b.StartTimer()
-       for i := 0; i < b.N; i++ {
-               _ = p.Layer(LayerTypeTCP)
-       }
-}
-
-func BenchmarkTCPLayerClassFromDecodedPacket(b *testing.B) {
-       b.StopTimer()
-       p := gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, testDecodeOptions)
-       lc := gopacket.NewLayerClass([]gopacket.LayerType{LayerTypeTCP})
-       b.StartTimer()
-       for i := 0; i < b.N; i++ {
-               _ = p.LayerClass(lc)
-       }
-}
-
-func BenchmarkTCPTransportLayerFromDecodedPacket(b *testing.B) {
-       b.StopTimer()
-       p := gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, testDecodeOptions)
-       b.StartTimer()
-       for i := 0; i < b.N; i++ {
-               _ = p.TransportLayer()
-       }
-}
-
-func testDecoder([]byte, gopacket.PacketBuilder) error {
-       return nil
-}
-
-func BenchmarkDecodeFuncCallOverheadDirectCall(b *testing.B) {
-       var data []byte
-       var pb gopacket.PacketBuilder
-       for i := 0; i < b.N; i++ {
-               _ = testDecoder(data, pb)
-       }
-}
-
-func BenchmarkDecodeFuncCallOverheadDecoderCall(b *testing.B) {
-       d := gopacket.DecodeFunc(testDecoder)
-       var data []byte
-       var pb gopacket.PacketBuilder
-       for i := 0; i < b.N; i++ {
-               _ = d.Decode(data, pb)
-       }
-}
-
-func BenchmarkDecodeFuncCallOverheadArrayCall(b *testing.B) {
-       EthernetTypeMetadata[1] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(testDecoder)}
-       d := EthernetType(1)
-       var data []byte
-       var pb gopacket.PacketBuilder
-       for i := 0; i < b.N; i++ {
-               _ = d.Decode(data, pb)
-       }
-}
-
-func BenchmarkFmtVerboseString(b *testing.B) {
-       b.StopTimer()
-       p := gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, testDecodeOptions)
-       b.StartTimer()
-       for i := 0; i < b.N; i++ {
-               _ = fmt.Sprintf("%#v", p)
-       }
-}
-
-func BenchmarkPacketString(b *testing.B) {
-       b.StopTimer()
-       p := gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, testDecodeOptions)
-       b.StartTimer()
-       for i := 0; i < b.N; i++ {
-               _ = p.String()
-       }
-}
-
-func BenchmarkPacketDumpString(b *testing.B) {
-       b.StopTimer()
-       p := gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, testDecodeOptions)
-       b.StartTimer()
-       for i := 0; i < b.N; i++ {
-               _ = p.String()
-       }
-}
-
-// TestFlowMapKey makes sure a flow and an endpoint can be used as map keys.
-func TestFlowMapKey(t *testing.T) {
-       _ = map[gopacket.Flow]bool{}
-       _ = map[gopacket.Endpoint]bool{}
-       _ = map[[2]gopacket.Flow]bool{}
-}
-
-func TestDecodeSimpleTCPPacket(t *testing.T) {
-       equal := func(desc, want string, got fmt.Stringer) {
-               if want != got.String() {
-                       t.Errorf("%s: got %q want %q", desc, got.String(), want)
-               }
-       }
-       p := gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, gopacket.DecodeOptions{Lazy: true, NoCopy: true})
-       if eth := p.LinkLayer(); eth == nil {
-               t.Error("No ethernet layer found")
-       } else {
-               equal("Eth Src", "bc:30:5b:e8:d3:49", eth.LinkFlow().Src())
-               equal("Eth Dst", "00:00:0c:9f:f0:20", eth.LinkFlow().Dst())
-       }
-       if net := p.NetworkLayer(); net == nil {
-               t.Error("No net layer found")
-       } else if ip, ok := net.(*IPv4); !ok {
-               t.Error("Net layer is not IP layer")
-       } else {
-               equal("IP Src", "172.17.81.73", net.NetworkFlow().Src())
-               equal("IP Dst", "173.222.254.225", net.NetworkFlow().Dst())
-               want := &IPv4{
-                       BaseLayer:  BaseLayer{testSimpleTCPPacket[14:34], testSimpleTCPPacket[34:]},
-                       Version:    4,
-                       IHL:        5,
-                       TOS:        0,
-                       Length:     420,
-                       Id:         14815,
-                       Flags:      0x02,
-                       FragOffset: 0,
-                       TTL:        64,
-                       Protocol:   6,
-                       Checksum:   0x555A,
-                       SrcIP:      []byte{172, 17, 81, 73},
-                       DstIP:      []byte{173, 222, 254, 225},
-               }
-               if !reflect.DeepEqual(ip, want) {
-                       t.Errorf("IP layer mismatch, \ngot  %#v\nwant %#v\n", ip, want)
-               }
-       }
-       if trans := p.TransportLayer(); trans == nil {
-               t.Error("No transport layer found")
-       } else if tcp, ok := trans.(*TCP); !ok {
-               t.Error("Transport layer is not TCP layer")
-       } else {
-               equal("TCP Src", "50679", trans.TransportFlow().Src())
-               equal("TCP Dst", "80", trans.TransportFlow().Dst())
-               want := &TCP{
-                       BaseLayer:  BaseLayer{testSimpleTCPPacket[34:66], testSimpleTCPPacket[66:]},
-                       SrcPort:    50679,
-                       DstPort:    80,
-                       Seq:        0xc57e0e48,
-                       Ack:        0x49074232,
-                       DataOffset: 8,
-                       ACK:        true,
-                       PSH:        true,
-                       Window:     0x73,
-                       Checksum:   0x9a8f,
-                       Urgent:     0,
-                       sPort:      []byte{0xc5, 0xf7},
-                       dPort:      []byte{0x0, 0x50},
-                       Options: []TCPOption{
-                               TCPOption{
-                                       OptionType:   0x1,
-                                       OptionLength: 0x1,
-                               },
-                               TCPOption{
-                                       OptionType:   0x1,
-                                       OptionLength: 0x1,
-                               },
-                               TCPOption{
-                                       OptionType:   0x8,
-                                       OptionLength: 0xa,
-                                       OptionData:   []byte{0x3, 0x77, 0x37, 0x9c, 0x42, 0x77, 0x5e, 0x3a},
-                               },
-                       },
-                       opts: [4]TCPOption{
-                               TCPOption{
-                                       OptionType:   0x1,
-                                       OptionLength: 0x1,
-                               },
-                               TCPOption{
-                                       OptionType:   0x1,
-                                       OptionLength: 0x1,
-                               },
-                               TCPOption{
-                                       OptionType:   0x8,
-                                       OptionLength: 0xa,
-                                       OptionData:   []byte{0x3, 0x77, 0x37, 0x9c, 0x42, 0x77, 0x5e, 0x3a},
-                               },
-                               TCPOption{},
-                       },
-               }
-               if !reflect.DeepEqual(tcp, want) {
-                       t.Errorf("TCP layer mismatch\ngot  %#v\nwant %#v", tcp, want)
-               }
-       }
-       if payload, ok := p.Layer(gopacket.LayerTypePayload).(*gopacket.Payload); payload == nil || !ok {
-               t.Error("No payload layer found")
-       } else {
-               if string(payload.Payload()) != "GET / HTTP/1.1\r\nHost: www.fish.com\r\nConnection: keep-alive\r\nUser-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Encoding: gzip,deflate,sdch\r\nAccept-Language: en-US,en;q=0.8\r\nAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3\r\n\r\n" {
-                       t.Error("--- Payload STRING ---\n", string(payload.Payload()), "\n--- Payload BYTES ---\n", payload.Payload())
-               }
-       }
-
-       // Test re-serialization.
-       testSerialization(t, p, testSimpleTCPPacket)
-}
-
-type canSetNetLayer interface {
-       SetNetworkLayerForChecksum(gopacket.NetworkLayer) error
-}
-
-func testSerialization(t *testing.T, p gopacket.Packet, data []byte) {
-       for _, opts := range []gopacket.SerializeOptions{
-               gopacket.SerializeOptions{},
-               gopacket.SerializeOptions{FixLengths: true},
-               gopacket.SerializeOptions{ComputeChecksums: true},
-               gopacket.SerializeOptions{FixLengths: true, ComputeChecksums: true},
-       } {
-               testSerializationWithOpts(t, p, data, opts)
-       }
-}
-
-func testSerializationWithOpts(t *testing.T, p gopacket.Packet, data []byte, opts gopacket.SerializeOptions) {
-       // Test re-serialization.
-       slayers := []gopacket.SerializableLayer{}
-       for _, l := range p.Layers() {
-               slayers = append(slayers, l.(gopacket.SerializableLayer))
-               if h, ok := l.(canSetNetLayer); ok {
-                       if err := h.SetNetworkLayerForChecksum(p.NetworkLayer()); err != nil {
-                               t.Fatal("can't set network layer:", err)
-                       }
-               }
-       }
-       buf := gopacket.NewSerializeBuffer()
-       err := gopacket.SerializeLayers(buf, opts, slayers...)
-       if err != nil {
-               t.Errorf("unable to reserialize layers with opts %#v: %v", opts, err)
-       } else if !bytes.Equal(buf.Bytes(), data) {
-               t.Errorf("serialization failure with opts %#v:\n---want---\n%v\n---got---\n%v\nBASH-colorized diff, want->got:\n%v\n\n---PACKET---\n%v",
-                       opts, hex.Dump(data), hex.Dump(buf.Bytes()), bytediff.BashOutput.String(bytediff.Diff(data, buf.Bytes())), p)
-       }
-}
-
-// Makes sure packet payload doesn't display the 6 trailing null of this packet
-// as part of the payload.  They're actually the ethernet trailer.
-func TestDecodeSmallTCPPacketHasEmptyPayload(t *testing.T) {
-       smallPacket := []byte{
-               0xbc, 0x30, 0x5b, 0xe8, 0xd3, 0x49, 0xb8, 0xac, 0x6f, 0x92, 0xd5, 0xbf,
-               0x08, 0x00, 0x45, 0x00, 0x00, 0x28, 0x00, 0x00, 0x40, 0x00, 0x40, 0x06,
-               0x3f, 0x9f, 0xac, 0x11, 0x51, 0xc5, 0xac, 0x11, 0x51, 0x49, 0x00, 0x63,
-               0x9a, 0xef, 0x00, 0x00, 0x00, 0x00, 0x2e, 0xc1, 0x27, 0x83, 0x50, 0x14,
-               0x00, 0x00, 0xc3, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       }
-       p := gopacket.NewPacket(smallPacket, LinkTypeEthernet, testDecodeOptions)
-
-       if payload := p.Layer(gopacket.LayerTypePayload); payload != nil {
-               t.Error("Payload found for empty TCP packet")
-       }
-
-       testSerialization(t, p, smallPacket)
-}
-
-func TestDecodeVLANPacket(t *testing.T) {
-       p := gopacket.NewPacket(
-               []byte{
-                       0x00, 0x10, 0xdb, 0xff, 0x10, 0x00, 0x00, 0x15, 0x2c, 0x9d, 0xcc, 0x00,
-                       0x81, 0x00, 0x01, 0xf7, 0x08, 0x00, 0x45, 0x00, 0x00, 0x28, 0x29, 0x8d,
-                       0x40, 0x00, 0x7d, 0x06, 0x83, 0xa0, 0xac, 0x1b, 0xca, 0x8e, 0x45, 0x16,
-                       0x94, 0xe2, 0xd4, 0x0a, 0x00, 0x50, 0xdf, 0xab, 0x9c, 0xc6, 0xcd, 0x1e,
-                       0xe5, 0xd1, 0x50, 0x10, 0x01, 0x00, 0x5a, 0x74, 0x00, 0x00, 0x00, 0x00,
-                       0x00, 0x00, 0x00, 0x00,
-               }, LinkTypeEthernet, testDecodeOptions)
-       if err := p.ErrorLayer(); err != nil {
-               t.Error("Error while parsing vlan packet:", err)
-       }
-       if vlan := p.Layer(LayerTypeDot1Q); vlan == nil {
-               t.Error("Didn't detect vlan")
-       } else if _, ok := vlan.(*Dot1Q); !ok {
-               t.Error("LayerTypeDot1Q layer is not a Dot1Q object")
-       }
-       for i, l := range p.Layers() {
-               t.Logf("Layer %d: %#v", i, l)
-       }
-       want := []gopacket.LayerType{LayerTypeEthernet, LayerTypeDot1Q, LayerTypeIPv4, LayerTypeTCP}
-       checkLayers(p, want, t)
-}
-
-func TestDecodeSCTPPackets(t *testing.T) {
-       sctpPackets := [][]byte{
-               []byte{ // INIT
-                       0x00, 0x00, 0x0c, 0x9f, 0xf0, 0x1f, 0x24, 0xbe, 0x05, 0x27, 0x0b, 0x17, 0x08, 0x00, 0x45, 0x02,
-                       0x00, 0x44, 0x00, 0x00, 0x40, 0x00, 0x40, 0x84, 0xc4, 0x22, 0xac, 0x1d, 0x14, 0x0f, 0xac, 0x19,
-                       0x09, 0xcc, 0x27, 0x0f, 0x22, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x19, 0x6b, 0x0b, 0x40, 0x01, 0x00,
-                       0x00, 0x24, 0xb6, 0x96, 0xb0, 0x9e, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x0a, 0xff, 0xff, 0xdb, 0x85,
-                       0x60, 0x23, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x80, 0x00, 0x00, 0x04, 0xc0, 0x00,
-                       0x00, 0x04,
-               }, []byte{ // INIT ACK
-                       0x24, 0xbe, 0x05, 0x27, 0x0b, 0x17, 0x00, 0x1f, 0xca, 0xb3, 0x76, 0x40, 0x08, 0x00, 0x45, 0x20,
-                       0x01, 0x24, 0x00, 0x00, 0x40, 0x00, 0x36, 0x84, 0xcd, 0x24, 0xac, 0x19, 0x09, 0xcc, 0xac, 0x1d,
-                       0x14, 0x0f, 0x22, 0xb8, 0x27, 0x0f, 0xb6, 0x96, 0xb0, 0x9e, 0x4b, 0xab, 0x40, 0x9a, 0x02, 0x00,
-                       0x01, 0x04, 0x32, 0x80, 0xfb, 0x42, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x0a, 0x00, 0x0a, 0x85, 0x98,
-                       0xb1, 0x26, 0x00, 0x07, 0x00, 0xe8, 0xd3, 0x08, 0xce, 0xe2, 0x52, 0x95, 0xcc, 0x09, 0xa1, 0x4c,
-                       0x6f, 0xa7, 0x9e, 0xba, 0x03, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xfb, 0x80, 0x32, 0x9e, 0xb0,
-                       0x96, 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x46, 0xc2, 0x50, 0x00, 0x00,
-                       0x00, 0x00, 0x5e, 0x25, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x26, 0xb1,
-                       0x98, 0x85, 0x02, 0x00, 0x27, 0x0f, 0xac, 0x1d, 0x14, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x22,
-                       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x24, 0x6a, 0x72, 0x5c, 0x1c, 0x3c, 0xaa,
-                       0x7a, 0xcd, 0xd3, 0x8f, 0x52, 0x78, 0x7c, 0x77, 0xfd, 0x46, 0xbd, 0x72, 0x82, 0xc1, 0x1f, 0x70,
-                       0x44, 0xcc, 0xc7, 0x9b, 0x9b, 0x7b, 0x13, 0x54, 0x3f, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x24, 0xb6, 0x96,
-                       0xb0, 0x9e, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x0a, 0xff, 0xff, 0xdb, 0x85, 0x60, 0x23, 0x00, 0x0c,
-                       0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x80, 0x00, 0x00, 0x04, 0xc0, 0x00, 0x00, 0x04, 0x00, 0x00,
-                       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x04, 0xc0, 0x00,
-                       0x00, 0x04,
-               }, []byte{ // COOKIE ECHO, DATA
-                       0x00, 0x00, 0x0c, 0x9f, 0xf0, 0x1f, 0x24, 0xbe, 0x05, 0x27, 0x0b, 0x17, 0x08, 0x00, 0x45, 0x02,
-                       0x01, 0x20, 0x00, 0x00, 0x40, 0x00, 0x40, 0x84, 0xc3, 0x46, 0xac, 0x1d, 0x14, 0x0f, 0xac, 0x19,
-                       0x09, 0xcc, 0x27, 0x0f, 0x22, 0xb8, 0x32, 0x80, 0xfb, 0x42, 0x01, 0xf9, 0xf3, 0xa9, 0x0a, 0x00,
-                       0x00, 0xe8, 0xd3, 0x08, 0xce, 0xe2, 0x52, 0x95, 0xcc, 0x09, 0xa1, 0x4c, 0x6f, 0xa7, 0x9e, 0xba,
-                       0x03, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xfb, 0x80, 0x32, 0x9e, 0xb0, 0x96, 0xb6, 0x00, 0x00,
-                       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x46, 0xc2, 0x50, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x25,
-                       0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x26, 0xb1, 0x98, 0x85, 0x02, 0x00,
-                       0x27, 0x0f, 0xac, 0x1d, 0x14, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x22, 0x01, 0x00, 0x00, 0x00,
-                       0x00, 0x00, 0x80, 0x02, 0x00, 0x24, 0x6a, 0x72, 0x5c, 0x1c, 0x3c, 0xaa, 0x7a, 0xcd, 0xd3, 0x8f,
-                       0x52, 0x78, 0x7c, 0x77, 0xfd, 0x46, 0xbd, 0x72, 0x82, 0xc1, 0x1f, 0x70, 0x44, 0xcc, 0xc7, 0x9b,
-                       0x9b, 0x7b, 0x13, 0x54, 0x3f, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x24, 0xb6, 0x96, 0xb0, 0x9e, 0x00, 0x01,
-                       0xc0, 0x00, 0x00, 0x0a, 0xff, 0xff, 0xdb, 0x85, 0x60, 0x23, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x05,
-                       0x00, 0x00, 0x80, 0x00, 0x00, 0x04, 0xc0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x16, 0xdb, 0x85, 0x60, 0x23, 0x00, 0x00,
-                       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x6f, 0x6f, 0x21, 0x0a, 0x00, 0x00, 0x00,
-               }, []byte{ // COOKIE ACK, SACK
-                       0x24, 0xbe, 0x05, 0x27, 0x0b, 0x17, 0x00, 0x1f, 0xca, 0xb3, 0x76, 0x40, 0x08, 0x00, 0x45, 0x20,
-                       0x00, 0x34, 0x00, 0x00, 0x40, 0x00, 0x36, 0x84, 0xce, 0x14, 0xac, 0x19, 0x09, 0xcc, 0xac, 0x1d,
-                       0x14, 0x0f, 0x22, 0xb8, 0x27, 0x0f, 0xb6, 0x96, 0xb0, 0x9e, 0xed, 0x64, 0x30, 0x98, 0x0b, 0x00,
-                       0x00, 0x04, 0x03, 0x00, 0x00, 0x10, 0xdb, 0x85, 0x60, 0x23, 0x00, 0x00, 0xf3, 0xfa, 0x00, 0x00,
-                       0x00, 0x00,
-               }, []byte{ // DATA
-                       0x00, 0x00, 0x0c, 0x9f, 0xf0, 0x1f, 0x24, 0xbe, 0x05, 0x27, 0x0b, 0x17, 0x08, 0x00, 0x45, 0x02,
-                       0x00, 0x3c, 0x00, 0x00, 0x40, 0x00, 0x40, 0x84, 0xc4, 0x2a, 0xac, 0x1d, 0x14, 0x0f, 0xac, 0x19,
-                       0x09, 0xcc, 0x27, 0x0f, 0x22, 0xb8, 0x32, 0x80, 0xfb, 0x42, 0xa1, 0xe3, 0xb2, 0x31, 0x00, 0x03,
-                       0x00, 0x19, 0xdb, 0x85, 0x60, 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x62, 0x69,
-                       0x7a, 0x7a, 0x6c, 0x65, 0x21, 0x0a, 0x00, 0x00, 0x00, 0x00,
-               }, []byte{ // SACK
-                       0x24, 0xbe, 0x05, 0x27, 0x0b, 0x17, 0x00, 0x1f, 0xca, 0xb3, 0x76, 0x40, 0x08, 0x00, 0x45, 0x20,
-                       0x00, 0x30, 0x00, 0x00, 0x40, 0x00, 0x36, 0x84, 0xce, 0x18, 0xac, 0x19, 0x09, 0xcc, 0xac, 0x1d,
-                       0x14, 0x0f, 0x22, 0xb8, 0x27, 0x0f, 0xb6, 0x96, 0xb0, 0x9e, 0xfa, 0x49, 0x94, 0x3a, 0x03, 0x00,
-                       0x00, 0x10, 0xdb, 0x85, 0x60, 0x24, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x00, 0x00,
-               }, []byte{ // SHUTDOWN
-                       0x00, 0x00, 0x0c, 0x9f, 0xf0, 0x1f, 0x24, 0xbe, 0x05, 0x27, 0x0b, 0x17, 0x08, 0x00, 0x45, 0x02,
-                       0x00, 0x28, 0x00, 0x00, 0x40, 0x00, 0x40, 0x84, 0xc4, 0x3e, 0xac, 0x1d, 0x14, 0x0f, 0xac, 0x19,
-                       0x09, 0xcc, 0x27, 0x0f, 0x22, 0xb8, 0x32, 0x80, 0xfb, 0x42, 0x3f, 0x29, 0x59, 0x23, 0x07, 0x00,
-                       0x00, 0x08, 0x85, 0x98, 0xb1, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-               }, []byte{ // SHUTDOWN ACK
-                       0x24, 0xbe, 0x05, 0x27, 0x0b, 0x17, 0x00, 0x1f, 0xca, 0xb3, 0x76, 0x40, 0x08, 0x00, 0x45, 0x20,
-                       0x00, 0x24, 0x00, 0x00, 0x40, 0x00, 0x36, 0x84, 0xce, 0x24, 0xac, 0x19, 0x09, 0xcc, 0xac, 0x1d,
-                       0x14, 0x0f, 0x22, 0xb8, 0x27, 0x0f, 0xb6, 0x96, 0xb0, 0x9e, 0xb2, 0xc8, 0x99, 0x24, 0x08, 0x00,
-                       0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-               }, []byte{ // SHUTDOWN COMPLETE
-                       0x00, 0x00, 0x0c, 0x9f, 0xf0, 0x1f, 0x24, 0xbe, 0x05, 0x27, 0x0b, 0x17, 0x08, 0x00, 0x45, 0x02,
-                       0x00, 0x24, 0x00, 0x00, 0x40, 0x00, 0x40, 0x84, 0xc4, 0x42, 0xac, 0x1d, 0x14, 0x0f, 0xac, 0x19,
-                       0x09, 0xcc, 0x27, 0x0f, 0x22, 0xb8, 0x32, 0x80, 0xfb, 0x42, 0xa8, 0xd1, 0x86, 0x85, 0x0e, 0x00,
-                       0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-               }}
-       wantLayers := [][]gopacket.LayerType{
-               []gopacket.LayerType{LayerTypeSCTPInit},
-               []gopacket.LayerType{LayerTypeSCTPInitAck},
-               []gopacket.LayerType{LayerTypeSCTPCookieEcho, LayerTypeSCTPData, gopacket.LayerTypePayload},
-               []gopacket.LayerType{LayerTypeSCTPCookieAck, LayerTypeSCTPSack},
-               []gopacket.LayerType{LayerTypeSCTPData, gopacket.LayerTypePayload},
-               []gopacket.LayerType{LayerTypeSCTPSack},
-               []gopacket.LayerType{LayerTypeSCTPShutdown},
-               []gopacket.LayerType{LayerTypeSCTPShutdownAck},
-               []gopacket.LayerType{LayerTypeSCTPShutdownComplete},
-       }
-       for i, data := range sctpPackets {
-               p := gopacket.NewPacket(data, LinkTypeEthernet, testDecodeOptions)
-               for _, typ := range wantLayers[i] {
-                       if p.Layer(typ) == nil {
-                               t.Errorf("Packet %d missing layer type %v, got:", i, typ)
-                               for _, layer := range p.Layers() {
-                                       t.Errorf("\t%v", layer.LayerType())
-                               }
-                               if p.ErrorLayer() != nil {
-                                       t.Error("\tPacket layer error:", p.ErrorLayer().Error())
-                               }
-                       }
-               }
-               // Test re-serialization.
-               testSerializationWithOpts(t, p, data, gopacket.SerializeOptions{FixLengths: true, ComputeChecksums: true})
-       }
-}
-
-func TestDecodeCiscoDiscovery(t *testing.T) {
-       // http://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=get&target=cdp_v2.pcap
-       data := []byte{
-               0x01, 0x00, 0x0c, 0xcc, 0xcc, 0xcc, 0x00, 0x0b, 0xbe, 0x18, 0x9a, 0x41, 0x01, 0xc3, 0xaa, 0xaa,
-               0x03, 0x00, 0x00, 0x0c, 0x20, 0x00, 0x02, 0xb4, 0x09, 0xa0, 0x00, 0x01, 0x00, 0x0c, 0x6d, 0x79,
-               0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x00, 0x02, 0x00, 0x11, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
-               0xcc, 0x00, 0x04, 0xc0, 0xa8, 0x00, 0xfd, 0x00, 0x03, 0x00, 0x13, 0x46, 0x61, 0x73, 0x74, 0x45,
-               0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x30, 0x2f, 0x31, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00,
-               0x00, 0x28, 0x00, 0x05, 0x01, 0x14, 0x43, 0x69, 0x73, 0x63, 0x6f, 0x20, 0x49, 0x6e, 0x74, 0x65,
-               0x72, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69,
-               0x6e, 0x67, 0x20, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61,
-               0x72, 0x65, 0x20, 0x0a, 0x49, 0x4f, 0x53, 0x20, 0x28, 0x74, 0x6d, 0x29, 0x20, 0x43, 0x32, 0x39,
-               0x35, 0x30, 0x20, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x20, 0x28, 0x43, 0x32, 0x39,
-               0x35, 0x30, 0x2d, 0x49, 0x36, 0x4b, 0x32, 0x4c, 0x32, 0x51, 0x34, 0x2d, 0x4d, 0x29, 0x2c, 0x20,
-               0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x31, 0x32, 0x2e, 0x31, 0x28, 0x32, 0x32, 0x29,
-               0x45, 0x41, 0x31, 0x34, 0x2c, 0x20, 0x52, 0x45, 0x4c, 0x45, 0x41, 0x53, 0x45, 0x20, 0x53, 0x4f,
-               0x46, 0x54, 0x57, 0x41, 0x52, 0x45, 0x20, 0x28, 0x66, 0x63, 0x31, 0x29, 0x0a, 0x54, 0x65, 0x63,
-               0x68, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x20, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x3a, 0x20,
-               0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x63, 0x69, 0x73, 0x63, 0x6f,
-               0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x65, 0x63, 0x68, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74,
-               0x0a, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x28, 0x63, 0x29, 0x20, 0x31,
-               0x39, 0x38, 0x36, 0x2d, 0x32, 0x30, 0x31, 0x30, 0x20, 0x62, 0x79, 0x20, 0x63, 0x69, 0x73, 0x63,
-               0x6f, 0x20, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a,
-               0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x54, 0x75, 0x65, 0x20, 0x32, 0x36, 0x2d,
-               0x4f, 0x63, 0x74, 0x2d, 0x31, 0x30, 0x20, 0x31, 0x30, 0x3a, 0x33, 0x35, 0x20, 0x62, 0x79, 0x20,
-               0x6e, 0x62, 0x75, 0x72, 0x72, 0x61, 0x00, 0x06, 0x00, 0x15, 0x63, 0x69, 0x73, 0x63, 0x6f, 0x20,
-               0x57, 0x53, 0x2d, 0x43, 0x32, 0x39, 0x35, 0x30, 0x2d, 0x31, 0x32, 0x00, 0x08, 0x00, 0x24, 0x00,
-               0x00, 0x0c, 0x01, 0x12, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x02, 0x20, 0xff,
-               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xbe, 0x18, 0x9a, 0x40, 0xff, 0x00, 0x00, 0x00,
-               0x09, 0x00, 0x0c, 0x4d, 0x59, 0x44, 0x4f, 0x4d, 0x41, 0x49, 0x4e, 0x00, 0x0a, 0x00, 0x06, 0x00,
-               0x01, 0x00, 0x0b, 0x00, 0x05, 0x01, 0x00, 0x12, 0x00, 0x05, 0x00, 0x00, 0x13, 0x00, 0x05, 0x00,
-               0x00, 0x16, 0x00, 0x11, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0xcc, 0x00, 0x04, 0xc0, 0xa8, 0x00,
-               0xfd,
-       }
-       p := gopacket.NewPacket(data, LinkTypeEthernet, testDecodeOptions)
-       wantLayers := []gopacket.LayerType{LayerTypeEthernet, LayerTypeLLC, LayerTypeSNAP, LayerTypeCiscoDiscovery, LayerTypeCiscoDiscoveryInfo}
-       checkLayers(p, wantLayers, t)
-
-       want := &CiscoDiscoveryInfo{
-               CDPHello: CDPHello{
-                       OUI:              []byte{0, 0, 12},
-                       ProtocolID:       274,
-                       ClusterMaster:    []byte{0, 0, 0, 0},
-                       Unknown1:         []byte{255, 255, 255, 255},
-                       Version:          1,
-                       SubVersion:       2,
-                       Status:           32,
-                       Unknown2:         255,
-                       ClusterCommander: net.HardwareAddr{0, 0, 0, 0, 0, 0},
-                       SwitchMAC:        net.HardwareAddr{0, 0x0b, 0xbe, 0x18, 0x9a, 0x40},
-                       Unknown3:         255,
-                       ManagementVLAN:   0,
-               },
-               DeviceID:      "myswitch",
-               Addresses:     []net.IP{net.IPv4(192, 168, 0, 253)},
-               PortID:        "FastEthernet0/1",
-               Capabilities:  CDPCapabilities{false, false, false, true, false, true, false, false, false},
-               Version:       "Cisco Internetwork Operating System Software \nIOS (tm) C2950 Software (C2950-I6K2L2Q4-M), Version 12.1(22)EA14, RELEASE SOFTWARE (fc1)\nTechnical Support: http://www.cisco.com/techsupport\nCopyright (c) 1986-2010 by cisco Systems, Inc.\nCompiled Tue 26-Oct-10 10:35 by nburra",
-               Platform:      "cisco WS-C2950-12",
-               VTPDomain:     "MYDOMAIN",
-               NativeVLAN:    1,
-               FullDuplex:    true,
-               MgmtAddresses: []net.IP{net.IPv4(192, 168, 0, 253)},
-               BaseLayer:     BaseLayer{Contents: data[26:]},
-       }
-       cdpL := p.Layer(LayerTypeCiscoDiscoveryInfo)
-       info, _ := cdpL.(*CiscoDiscoveryInfo)
-       if !reflect.DeepEqual(info, want) {
-               t.Errorf("Values mismatch, \ngot  %#v\nwant %#v\n", info, want)
-       }
-}
-
-func TestDecodeLinkLayerDiscovery(t *testing.T) {
-       // http://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=get&target=lldp.detailed.pcap
-       data := []byte{
-               0x01, 0x80, 0xc2, 0x00, 0x00, 0x0e, 0x00, 0x01, 0x30, 0xf9, 0xad, 0xa0,
-               0x88, 0xcc, 0x02, 0x07, 0x04, 0x00, 0x01, 0x30, 0xf9, 0xad, 0xa0, 0x04,
-               0x04, 0x05, 0x31, 0x2f, 0x31, 0x06, 0x02, 0x00, 0x78, 0x08, 0x17, 0x53,
-               0x75, 0x6d, 0x6d, 0x69, 0x74, 0x33, 0x30, 0x30, 0x2d, 0x34, 0x38, 0x2d,
-               0x50, 0x6f, 0x72, 0x74, 0x20, 0x31, 0x30, 0x30, 0x31, 0x00, 0x0a, 0x0d,
-               0x53, 0x75, 0x6d, 0x6d, 0x69, 0x74, 0x33, 0x30, 0x30, 0x2d, 0x34, 0x38,
-               0x00, 0x0c, 0x4c, 0x53, 0x75, 0x6d, 0x6d, 0x69, 0x74, 0x33, 0x30, 0x30,
-               0x2d, 0x34, 0x38, 0x20, 0x2d, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
-               0x6e, 0x20, 0x37, 0x2e, 0x34, 0x65, 0x2e, 0x31, 0x20, 0x28, 0x42, 0x75,
-               0x69, 0x6c, 0x64, 0x20, 0x35, 0x29, 0x20, 0x62, 0x79, 0x20, 0x52, 0x65,
-               0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72,
-               0x20, 0x30, 0x35, 0x2f, 0x32, 0x37, 0x2f, 0x30, 0x35, 0x20, 0x30, 0x34,
-               0x3a, 0x35, 0x33, 0x3a, 0x31, 0x31, 0x00, 0x0e, 0x04, 0x00, 0x14, 0x00,
-               0x14, 0x10, 0x0e, 0x07, 0x06, 0x00, 0x01, 0x30, 0xf9, 0xad, 0xa0, 0x02,
-               0x00, 0x00, 0x03, 0xe9, 0x00, 0xfe, 0x07, 0x00, 0x12, 0x0f, 0x02, 0x07,
-               0x01, 0x00, 0xfe, 0x09, 0x00, 0x12, 0x0f, 0x01, 0x03, 0x6c, 0x00, 0x00,
-               0x10, 0xfe, 0x09, 0x00, 0x12, 0x0f, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00,
-               0xfe, 0x06, 0x00, 0x12, 0x0f, 0x04, 0x05, 0xf2, 0xfe, 0x06, 0x00, 0x80,
-               0xc2, 0x01, 0x01, 0xe8, 0xfe, 0x07, 0x00, 0x80, 0xc2, 0x02, 0x01, 0x00,
-               0x00, 0xfe, 0x17, 0x00, 0x80, 0xc2, 0x03, 0x01, 0xe8, 0x10, 0x76, 0x32,
-               0x2d, 0x30, 0x34, 0x38, 0x38, 0x2d, 0x30, 0x33, 0x2d, 0x30, 0x35, 0x30,
-               0x35, 0x00, 0xfe, 0x05, 0x00, 0x80, 0xc2, 0x04, 0x00, 0x00, 0x00,
-       }
-
-       p := gopacket.NewPacket(data, LinkTypeEthernet, testDecodeOptions)
-       wantLayers := []gopacket.LayerType{LayerTypeEthernet, LayerTypeLinkLayerDiscovery, LayerTypeLinkLayerDiscoveryInfo}
-       checkLayers(p, wantLayers, t)
-       lldpL := p.Layer(LayerTypeLinkLayerDiscovery)
-       lldp := lldpL.(*LinkLayerDiscovery)
-       want := &LinkLayerDiscovery{
-               ChassisID: LLDPChassisID{LLDPChassisIDSubTypeMACAddr, []byte{0x00, 0x01, 0x30, 0xf9, 0xad, 0xa0}},
-               PortID:    LLDPPortID{LLDPPortIDSubtypeIfaceName, []byte("1/1")},
-               TTL:       120,
-               BaseLayer: BaseLayer{Contents: data[14:]},
-       }
-       lldp.Values = nil // test these in next stage
-       if !reflect.DeepEqual(lldp, want) {
-               t.Errorf("Values mismatch, \ngot  %#v\nwant %#v\n", lldp, want)
-       }
-
-       infoL := p.Layer(LayerTypeLinkLayerDiscoveryInfo)
-       info := infoL.(*LinkLayerDiscoveryInfo)
-       wantinfo := &LinkLayerDiscoveryInfo{
-               PortDescription: "Summit300-48-Port 1001\x00",
-               SysName:         "Summit300-48\x00",
-               SysDescription:  "Summit300-48 - Version 7.4e.1 (Build 5) by Release_Master 05/27/05 04:53:11\x00",
-               SysCapabilities: LLDPSysCapabilities{
-                       SystemCap:  LLDPCapabilities{Bridge: true, Router: true},
-                       EnabledCap: LLDPCapabilities{Bridge: true, Router: true},
-               },
-               MgmtAddress: LLDPMgmtAddress{IANAAddressFamily802, []byte{0x00, 0x01, 0x30, 0xf9, 0xad, 0xa0}, LLDPInterfaceSubtypeifIndex, 1001, ""},
-               OrgTLVs: []LLDPOrgSpecificTLV{
-                       LLDPOrgSpecificTLV{OUI: 0x120f, SubType: 0x2, Info: []uint8{0x7, 0x1, 0x0}},
-                       LLDPOrgSpecificTLV{OUI: 0x120f, SubType: 0x1, Info: []uint8{0x3, 0x6c, 0x0, 0x0, 0x10}},
-                       LLDPOrgSpecificTLV{OUI: 0x120f, SubType: 0x3, Info: []uint8{0x1, 0x0, 0x0, 0x0, 0x0}},
-                       LLDPOrgSpecificTLV{OUI: 0x120f, SubType: 0x4, Info: []uint8{0x5, 0xf2}},
-                       LLDPOrgSpecificTLV{OUI: 0x80c2, SubType: 0x1, Info: []uint8{0x1, 0xe8}},
-                       LLDPOrgSpecificTLV{OUI: 0x80c2, SubType: 0x2, Info: []uint8{0x1, 0x0, 0x0}},
-                       LLDPOrgSpecificTLV{OUI: 0x80c2, SubType: 0x3, Info: []uint8{0x1, 0xe8, 0x10, 0x76, 0x32, 0x2d, 0x30, 0x34, 0x38, 0x38, 0x2d, 0x30, 0x33, 0x2d, 0x30, 0x35, 0x30, 0x35, 0x0}},
-                       LLDPOrgSpecificTLV{OUI: 0x80c2, SubType: 0x4, Info: []uint8{0x0}},
-               },
-               Unknown: nil,
-       }
-       if !reflect.DeepEqual(info, wantinfo) {
-               t.Errorf("Values mismatch, \ngot  %#v\nwant %#v\n", info, wantinfo)
-       }
-       info8021, err := info.Decode8021()
-       if err != nil {
-               t.Errorf("8021 Values decode error: %v", err)
-       }
-       want8021 := LLDPInfo8021{
-               PVID:               488,
-               PPVIDs:             []PortProtocolVLANID{PortProtocolVLANID{false, false, 0}},
-               VLANNames:          []VLANName{VLANName{488, "v2-0488-03-0505\x00"}},
-               ProtocolIdentities: nil,
-               VIDUsageDigest:     0,
-               ManagementVID:      0,
-               LinkAggregation:    LLDPLinkAggregation{false, false, 0},
-       }
-       if !reflect.DeepEqual(info8021, want8021) {
-               t.Errorf("Values mismatch, \ngot  %#v\nwant %#v\n", info8021, want8021)
-       }
-       info8023, err := info.Decode8023()
-       if err != nil {
-               t.Errorf("8023 Values decode error: %v", err)
-       }
-       want8023 := LLDPInfo8023{
-               LinkAggregation:    LLDPLinkAggregation{true, false, 0},
-               MACPHYConfigStatus: LLDPMACPHYConfigStatus{true, true, 0x6c00, 0x0010},
-               PowerViaMDI:        LLDPPowerViaMDI8023{true, true, true, false, 1, 0, 0, 0, 0, 0, 0},
-               MTU:                1522,
-       }
-
-       if !reflect.DeepEqual(info8023, want8023) {
-               t.Errorf("Values mismatch, \ngot  %#v\nwant %#v\n", info8023, want8023)
-       }
-
-       // http://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=get&target=lldpmed_civicloc.pcap
-       data = []byte{
-               0x01, 0x80, 0xc2, 0x00, 0x00, 0x0e, 0x00, 0x13, 0x21, 0x57, 0xca, 0x7f,
-               0x88, 0xcc, 0x02, 0x07, 0x04, 0x00, 0x13, 0x21, 0x57, 0xca, 0x40, 0x04,
-               0x02, 0x07, 0x31, 0x06, 0x02, 0x00, 0x78, 0x08, 0x01, 0x31, 0x0a, 0x1a,
-               0x50, 0x72, 0x6f, 0x43, 0x75, 0x72, 0x76, 0x65, 0x20, 0x53, 0x77, 0x69,
-               0x74, 0x63, 0x68, 0x20, 0x32, 0x36, 0x30, 0x30, 0x2d, 0x38, 0x2d, 0x50,
-               0x57, 0x52, 0x0c, 0x5f, 0x50, 0x72, 0x6f, 0x43, 0x75, 0x72, 0x76, 0x65,
-               0x20, 0x4a, 0x38, 0x37, 0x36, 0x32, 0x41, 0x20, 0x53, 0x77, 0x69, 0x74,
-               0x63, 0x68, 0x20, 0x32, 0x36, 0x30, 0x30, 0x2d, 0x38, 0x2d, 0x50, 0x57,
-               0x52, 0x2c, 0x20, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x20,
-               0x48, 0x2e, 0x30, 0x38, 0x2e, 0x38, 0x39, 0x2c, 0x20, 0x52, 0x4f, 0x4d,
-               0x20, 0x48, 0x2e, 0x30, 0x38, 0x2e, 0x35, 0x58, 0x20, 0x28, 0x2f, 0x73,
-               0x77, 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64,
-               0x2f, 0x66, 0x69, 0x73, 0x68, 0x28, 0x74, 0x73, 0x5f, 0x30, 0x38, 0x5f,
-               0x35, 0x29, 0x29, 0x0e, 0x04, 0x00, 0x14, 0x00, 0x04, 0x10, 0x0c, 0x05,
-               0x01, 0x0f, 0xff, 0x7a, 0x94, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
-               0x09, 0x00, 0x12, 0x0f, 0x01, 0x03, 0x6c, 0x00, 0x00, 0x10, 0xfe, 0x07,
-               0x00, 0x12, 0xbb, 0x01, 0x00, 0x0f, 0x04, 0xfe, 0x08, 0x00, 0x12, 0xbb,
-               0x02, 0x01, 0x40, 0x65, 0xae, 0xfe, 0x2e, 0x00, 0x12, 0xbb, 0x03, 0x02,
-               0x28, 0x02, 0x55, 0x53, 0x01, 0x02, 0x43, 0x41, 0x03, 0x09, 0x52, 0x6f,
-               0x73, 0x65, 0x76, 0x69, 0x6c, 0x6c, 0x65, 0x06, 0x09, 0x46, 0x6f, 0x6f,
-               0x74, 0x68, 0x69, 0x6c, 0x6c, 0x73, 0x13, 0x04, 0x38, 0x30, 0x30, 0x30,
-               0x1a, 0x03, 0x52, 0x33, 0x4c, 0xfe, 0x07, 0x00, 0x12, 0xbb, 0x04, 0x03,
-               0x00, 0x41, 0x00, 0x00,
-       }
-
-       p = gopacket.NewPacket(data, LinkTypeEthernet, testDecodeOptions)
-       wantLayers = []gopacket.LayerType{LayerTypeEthernet, LayerTypeLinkLayerDiscovery, LayerTypeLinkLayerDiscoveryInfo}
-       checkLayers(p, wantLayers, t)
-       lldpL = p.Layer(LayerTypeLinkLayerDiscovery)
-       lldp = lldpL.(*LinkLayerDiscovery)
-       want = &LinkLayerDiscovery{
-               ChassisID: LLDPChassisID{LLDPChassisIDSubTypeMACAddr, []byte{0x00, 0x13, 0x21, 0x57, 0xca, 0x40}},
-               PortID:    LLDPPortID{LLDPPortIDSubtypeLocal, []byte("1")},
-               TTL:       120,
-               BaseLayer: BaseLayer{Contents: data[14:]},
-       }
-       lldp.Values = nil // test these in next stage
-       if !reflect.DeepEqual(lldp, want) {
-               t.Errorf("Values mismatch, \ngot  %#v\nwant %#v\n", lldp, want)
-       }
-
-       infoL = p.Layer(LayerTypeLinkLayerDiscoveryInfo)
-       info = infoL.(*LinkLayerDiscoveryInfo)
-       wantinfo = &LinkLayerDiscoveryInfo{
-               PortDescription: "1",
-               SysName:         "ProCurve Switch 2600-8-PWR",
-               SysDescription:  "ProCurve J8762A Switch 2600-8-PWR, revision H.08.89, ROM H.08.5X (/sw/code/build/fish(ts_08_5))",
-               SysCapabilities: LLDPSysCapabilities{
-                       SystemCap:  LLDPCapabilities{Bridge: true, Router: true},
-                       EnabledCap: LLDPCapabilities{Bridge: true},
-               },
-               MgmtAddress: LLDPMgmtAddress{IANAAddressFamilyIPV4, []byte{0x0f, 0xff, 0x7a, 0x94}, LLDPInterfaceSubtypeifIndex, 0, ""},
-               OrgTLVs: []LLDPOrgSpecificTLV{
-                       LLDPOrgSpecificTLV{OUI: 0x120f, SubType: 0x1, Info: []uint8{0x3, 0x6c, 0x0, 0x0, 0x10}},
-                       LLDPOrgSpecificTLV{OUI: 0x12bb, SubType: 0x1, Info: []uint8{0x0, 0xf, 0x4}},
-                       LLDPOrgSpecificTLV{OUI: 0x12bb, SubType: 0x2, Info: []uint8{0x1, 0x40, 0x65, 0xae}},
-                       LLDPOrgSpecificTLV{OUI: 0x12bb, SubType: 0x3, Info: []uint8{0x2, 0x28, 0x2, 0x55, 0x53, 0x1, 0x2, 0x43, 0x41, 0x3, 0x9, 0x52, 0x6f, 0x73, 0x65, 0x76, 0x69, 0x6c, 0x6c, 0x65, 0x6, 0x9, 0x46, 0x6f, 0x6f, 0x74, 0x68, 0x69, 0x6c, 0x6c, 0x73, 0x13, 0x4, 0x38, 0x30, 0x30, 0x30, 0x1a, 0x3, 0x52, 0x33, 0x4c}},
-                       LLDPOrgSpecificTLV{OUI: 0x12bb, SubType: 0x4, Info: []uint8{0x3, 0x0, 0x41}},
-               },
-               Unknown: nil,
-       }
-       if !reflect.DeepEqual(info, wantinfo) {
-               t.Errorf("Values mismatch, \ngot  %#v\nwant %#v\n", info, wantinfo)
-       }
-       info8023, err = info.Decode8023()
-       if err != nil {
-               t.Errorf("8023 Values decode error: %v", err)
-       }
-       want8023 = LLDPInfo8023{
-               MACPHYConfigStatus: LLDPMACPHYConfigStatus{true, true, 0x6c00, 0x0010},
-       }
-
-       if !reflect.DeepEqual(info8023, want8023) {
-               t.Errorf("Values mismatch, \ngot  %#v\nwant %#v\n", info8023, want8023)
-       }
-
-       infoMedia, err := info.DecodeMedia()
-       if err != nil {
-               t.Errorf("8023 Values decode error: %v", err)
-       }
-       wantMedia := LLDPInfoMedia{
-               MediaCapabilities: LLDPMediaCapabilities{true, true, true, true, false, false, LLDPMediaClassNetwork},
-               NetworkPolicy:     LLDPNetworkPolicy{LLDPAppTypeVoice, true, true, 50, 6, 46},
-               Location: LLDPLocation{Format: LLDPLocationFormatAddress, Address: LLDPLocationAddress{
-                       What:        LLDPLocationAddressWhatClient,
-                       CountryCode: "US",
-                       AddressLines: []LLDPLocationAddressLine{
-                               LLDPLocationAddressLine{LLDPLocationAddressTypeNational, "CA"},
-                               LLDPLocationAddressLine{LLDPLocationAddressTypeCity, "Roseville"},
-                               LLDPLocationAddressLine{LLDPLocationAddressTypeStreet, "Foothills"},
-                               LLDPLocationAddressLine{LLDPLocationAddressTypeHouseNum, "8000"},
-                               LLDPLocationAddressLine{LLDPLocationAddressTypeUnit, "R3L"},
-                       },
-               }},
-               PowerViaMDI: LLDPPowerViaMDI{0, 0, LLDPPowerPriorityLow, 6500},
-       }
-
-       if !reflect.DeepEqual(infoMedia, wantMedia) {
-               t.Errorf("Values mismatch, \ngot  %#v\nwant %#v\n", infoMedia, wantMedia)
-       }
-
-}
-
-func TestDecodeNortelDiscovery(t *testing.T) {
-       // http://www.thetechfirm.com/packets/nortel_btdp/btdp_nai.enc
-       data := []byte{
-               0x01, 0x00, 0x81, 0x00, 0x01, 0x00, 0x00, 0x04, 0x38, 0xe0, 0xcc, 0xde,
-               0x00, 0x13, 0xaa, 0xaa, 0x03, 0x00, 0x00, 0x81, 0x01, 0xa2, 0xac, 0x13,
-               0x58, 0x03, 0x00, 0x04, 0x15, 0x30, 0x0c, 0x02, 0x00, 0x00, 0x00, 0x00,
-               0x00, 0x04, 0x38, 0xe0, 0xcc, 0xde, 0x80, 0x6a, 0x00, 0x01, 0x14, 0x00,
-               0x02, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       }
-       p := gopacket.NewPacket(data, LinkTypeEthernet, testDecodeOptions)
-       wantLayers := []gopacket.LayerType{LayerTypeEthernet, LayerTypeLLC, LayerTypeSNAP, LayerTypeNortelDiscovery}
-       checkLayers(p, wantLayers, t)
-
-       want := &NortelDiscovery{
-               IPAddress: []byte{172, 19, 88, 3},
-               SegmentID: []byte{0x00, 0x04, 0x15},
-               Chassis:   NDPChassisBayStack450101001000Switches,
-               Backplane: NDPBackplaneEthernetFastEthernetGigabitEthernet,
-               State:     NDPStateHeartbeat,
-               NumLinks:  0,
-       }
-       ndpL := p.Layer(LayerTypeNortelDiscovery)
-       info, _ := ndpL.(*NortelDiscovery)
-       if !reflect.DeepEqual(info, want) {
-               t.Errorf("Values mismatch, \ngot  %#v\nwant %#v\n", info, want)
-       }
-}
-
-func TestDecodeIPv6Jumbogram(t *testing.T) {
-       // Haven't found any of these in the wild or on example pcaps online, so had
-       // to generate one myself via scapy.  Unfortunately, scapy can only
-       // str(packet) for packets with length < 65536, due to limitations in python's
-       // struct library, so I generated the header with:
-       // Ether() / IPv6(src='::1', dst='::2') / IPv6ExtHdrHopByHop(options=[Jumbo(jumboplen=70000)]) / TCP(sport=8888, dport=80)
-       // then added the payload manually ("payload" * 9996).  The checksums here are
-       // not correct, but we don't check, so who cares ;)
-       dataStr := "\x00\x1f\xca\xb3v@$\xbe\x05'\x0b\x17\x86\xdd`\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x06\x00\xc2\x04\x00\x01\x11p\"\xb8\x00P\x00\x00\x00\x00\x00\x00\x00\x00P\x02 \x00l\xd8\x00\x00"
-       payload := strings.Repeat("payload", 9996)
-       data := []byte(dataStr + payload)
-       p := gopacket.NewPacket(data, LinkTypeEthernet, testDecodeOptions)
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv6, LayerTypeIPv6HopByHop, LayerTypeTCP, gopacket.LayerTypePayload}, t)
-       if p.ApplicationLayer() == nil {
-               t.Error("Packet has no application layer")
-       } else if string(p.ApplicationLayer().Payload()) != payload {
-               t.Errorf("Jumbogram payload wrong")
-       }
-       // Check truncated for jumbograms
-       data = data[:len(data)-1]
-       p = gopacket.NewPacket(data, LinkTypeEthernet, testDecodeOptions)
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv6, LayerTypeIPv6HopByHop, LayerTypeTCP, gopacket.LayerTypePayload}, t)
-       if !p.Metadata().Truncated {
-               t.Error("Jumbogram should be truncated")
-       }
-}
-
-func TestDecodeUDPPacketTooSmall(t *testing.T) {
-       data := []byte{
-               0x00, 0x15, 0x2c, 0x9d, 0xcc, 0x00, 0x00, 0x10, 0xdb, 0xff, 0x10, 0x00, 0x81, 0x00, 0x01, 0xf7,
-               0x08, 0x00, 0x45, 0x60, 0x00, 0x3c, 0x0f, 0xa9, 0x00, 0x00, 0x6e, 0x11, 0x01, 0x0a, 0x47, 0xe6,
-               0xee, 0x2e, 0xac, 0x16, 0x59, 0x73, 0x00, 0x50, 0x00, 0x50, 0x00, 0x28, 0x4d, 0xad, 0x00, 0x67,
-               0x00, 0x01, 0x00, 0x72, 0xd5, 0xc7, 0xf1, 0x07, 0x00, 0x00, 0x01, 0x01, 0x00, 0x0d, 0x00, 0x00,
-               0x00, 0x14, 0x00, 0x00, 0x19, 0xba,
-       }
-       p := gopacket.NewPacket(data, LinkTypeEthernet, testDecodeOptions)
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeDot1Q, LayerTypeIPv4, LayerTypeUDP, gopacket.LayerTypePayload}, t)
-       if !p.Metadata().Truncated {
-               t.Error("UDP short packet should be truncated")
-       }
-}
-
-func TestDecodingLayerParserFullTCPPacket(t *testing.T) {
-       dlp := gopacket.NewDecodingLayerParser(LayerTypeEthernet, &Ethernet{}, &IPv4{}, &TCP{}, &gopacket.Payload{})
-       decoded := make([]gopacket.LayerType, 1)
-       err := dlp.DecodeLayers(testSimpleTCPPacket, &decoded)
-       if err != nil {
-               t.Error("Error from dlp parser: ", err)
-       }
-       if len(decoded) != 4 {
-               t.Error("Expected 4 layers parsed, instead got ", len(decoded))
-       }
-}
-
-// testICMP is the packet:
-//   15:49:15.773265 IP 72.14.222.226 > 172.29.20.15: ICMP host 10.66.73.201 unreachable - admin prohibited filter, length 36
-//      0x0000:  24be 0527 0b17 001f cab3 75c0 0800 4500  $..'......u...E.
-//      0x0010:  0038 0000 0000 fc01 d7a7 480e dee2 ac1d  .8........H.....
-//      0x0020:  140f 030d 946e 0000 0000 4520 004d 0000  .....n....E..M..
-//      0x0030:  4000 3e11 2849 ac1d 140f 0a42 49c9 8ecc  @.>.(I.....BI...
-//      0x0040:  62e1 0039 769d                           b..9v.
-var testICMP = []byte{
-       0x24, 0xbe, 0x05, 0x27, 0x0b, 0x17, 0x00, 0x1f, 0xca, 0xb3, 0x75, 0xc0, 0x08, 0x00, 0x45, 0x00,
-       0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x01, 0xd7, 0xa7, 0x48, 0x0e, 0xde, 0xe2, 0xac, 0x1d,
-       0x14, 0x0f, 0x03, 0x0d, 0x94, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x45, 0x20, 0x00, 0x4d, 0x00, 0x00,
-       0x40, 0x00, 0x3e, 0x11, 0x28, 0x49, 0xac, 0x1d, 0x14, 0x0f, 0x0a, 0x42, 0x49, 0xc9, 0x8e, 0xcc,
-       0x62, 0xe1, 0x00, 0x39, 0x76, 0x9d,
-}
-
-func TestICMP(t *testing.T) {
-       p := gopacket.NewPacket(testICMP, LinkTypeEthernet, testDecodeOptions)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeICMPv4, gopacket.LayerTypePayload}, t)
-       testSerialization(t, p, testICMP)
-}
-func BenchmarkDecodeICMP(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testICMP, LinkTypeEthernet, gopacket.NoCopy)
-       }
-}
-
-// testICMP6 is the packet:
-//   16:17:37.758937 IP6 fe80::21f:caff:feb3:75c0 > 2620:0:1005:0:26be:5ff:fe27:b17: ICMP6, neighbor solicitation, who has 2620:0:1005:0:26be:5ff:fe27:b17, length 32
-//      0x0000:  24be 0527 0b17 001f cab3 75c0 86dd 6e00  $..'......u...n.
-//      0x0010:  0000 0020 3aff fe80 0000 0000 0000 021f  ....:...........
-//      0x0020:  caff feb3 75c0 2620 0000 1005 0000 26be  ....u.&.......&.
-//      0x0030:  05ff fe27 0b17 8700 1eba 0000 0000 2620  ...'..........&.
-//      0x0040:  0000 1005 0000 26be 05ff fe27 0b17 0101  ......&....'....
-//      0x0050:  001f cab3 75c0                           ....u.
-var testICMP6 = []byte{
-       0x24, 0xbe, 0x05, 0x27, 0x0b, 0x17, 0x00, 0x1f, 0xca, 0xb3, 0x75, 0xc0, 0x86, 0xdd, 0x6e, 0x00,
-       0x00, 0x00, 0x00, 0x20, 0x3a, 0xff, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x1f,
-       0xca, 0xff, 0xfe, 0xb3, 0x75, 0xc0, 0x26, 0x20, 0x00, 0x00, 0x10, 0x05, 0x00, 0x00, 0x26, 0xbe,
-       0x05, 0xff, 0xfe, 0x27, 0x0b, 0x17, 0x87, 0x00, 0x1e, 0xba, 0x00, 0x00, 0x00, 0x00, 0x26, 0x20,
-       0x00, 0x00, 0x10, 0x05, 0x00, 0x00, 0x26, 0xbe, 0x05, 0xff, 0xfe, 0x27, 0x0b, 0x17, 0x01, 0x01,
-       0x00, 0x1f, 0xca, 0xb3, 0x75, 0xc0,
-}
-
-func TestICMP6(t *testing.T) {
-       p := gopacket.NewPacket(testICMP6, LinkTypeEthernet, testDecodeOptions)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv6, LayerTypeICMPv6, gopacket.LayerTypePayload}, t)
-       testSerialization(t, p, testICMP6)
-}
-func BenchmarkDecodeICMP6(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testICMP6, LinkTypeEthernet, gopacket.NoCopy)
-       }
-}
-
-// testMPLS is the packet:
-//   12:48:57.201014 MPLS (label 29, exp 0, [S], ttl 255) IP 10.1.2.1 > 10.34.0.1: ICMP echo request, id 2618, seq 1579, length 80
-//      0x0000:  0030 96e6 fc39 0030 9605 2838 8847 0001  .0...9.0..(8.G..
-//      0x0010:  d1ff 4500 0064 000b 0000 ff01 a569 0a01  ..E..d.......i..
-//      0x0020:  0201 0a22 0001 0800 3a76 0a3a 062b 0000  ..."....:v.:.+..
-//      0x0030:  0000 001f 3350 abcd abcd abcd abcd abcd  ....3P..........
-//      0x0040:  abcd abcd abcd abcd abcd abcd abcd abcd  ................
-//      0x0050:  abcd abcd abcd abcd abcd abcd abcd abcd  ................
-//      0x0060:  abcd abcd abcd abcd abcd abcd abcd abcd  ................
-//      0x0070:  abcd abcd abcd                           ......
-var testMPLS = []byte{
-       0x00, 0x30, 0x96, 0xe6, 0xfc, 0x39, 0x00, 0x30, 0x96, 0x05, 0x28, 0x38, 0x88, 0x47, 0x00, 0x01,
-       0xd1, 0xff, 0x45, 0x00, 0x00, 0x64, 0x00, 0x0b, 0x00, 0x00, 0xff, 0x01, 0xa5, 0x69, 0x0a, 0x01,
-       0x02, 0x01, 0x0a, 0x22, 0x00, 0x01, 0x08, 0x00, 0x3a, 0x76, 0x0a, 0x3a, 0x06, 0x2b, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x1f, 0x33, 0x50, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
-       0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
-       0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
-       0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
-       0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
-}
-
-func TestMPLS(t *testing.T) {
-       p := gopacket.NewPacket(testMPLS, LinkTypeEthernet, testDecodeOptions)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeMPLS, LayerTypeIPv4, LayerTypeICMPv4, gopacket.LayerTypePayload}, t)
-       testSerialization(t, p, testMPLS)
-}
-func BenchmarkDecodeMPLS(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testMPLS, LinkTypeEthernet, gopacket.NoCopy)
-       }
-}
-
-// testPPPoEICMPv6 is the packet:
-//   07:43:31.091560 PPPoE  [ses 0x11] IP6 fe80::c801:eff:fe88:8 > ff02::1: ICMP6, neighbor advertisement, tgt is fe80::c801:eff:fe88:8, length 24
-//      0x0000:  cc05 0e88 0000 ca01 0e88 0006 8864 1100  .............d..
-//      0x0010:  0011 0042 0057 6e00 0000 0018 3aff fe80  ...B.Wn.....:...
-//      0x0020:  0000 0000 0000 c801 0eff fe88 0008 ff02  ................
-//      0x0030:  0000 0000 0000 0000 0000 0000 0001 8800  ................
-//      0x0040:  5083 8000 0000 fe80 0000 0000 0000 c801  P...............
-//      0x0050:  0eff fe88 0008                           ......
-var testPPPoEICMPv6 = []byte{
-       0xcc, 0x05, 0x0e, 0x88, 0x00, 0x00, 0xca, 0x01, 0x0e, 0x88, 0x00, 0x06, 0x88, 0x64, 0x11, 0x00,
-       0x00, 0x11, 0x00, 0x42, 0x00, 0x57, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3a, 0xff, 0xfe, 0x80,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x01, 0x0e, 0xff, 0xfe, 0x88, 0x00, 0x08, 0xff, 0x02,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x88, 0x00,
-       0x50, 0x83, 0x80, 0x00, 0x00, 0x00, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x01,
-       0x0e, 0xff, 0xfe, 0x88, 0x00, 0x08,
-}
-
-func TestPPPoEICMPv6(t *testing.T) {
-       p := gopacket.NewPacket(testPPPoEICMPv6, LinkTypeEthernet, testDecodeOptions)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{
-               LayerTypeEthernet,
-               LayerTypePPPoE,
-               LayerTypePPP,
-               LayerTypeIPv6,
-               LayerTypeICMPv6,
-               gopacket.LayerTypePayload,
-       }, t)
-       testSerialization(t, p, testPPPoEICMPv6)
-}
-func BenchmarkDecodePPPoEICMPv6(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testPPPoEICMPv6, LinkTypeEthernet, gopacket.NoCopy)
-       }
-}
-
-var testPFLogUDP = []byte{
-       0x3d, 0x02, 0x00, 0x00, 0x65, 0x6e, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0xff, 0xff, 0xff, 0x7f,
-       0xa0, 0x86, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xb8, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
-       0x45, 0x00, 0x00, 0x2c, 0x02, 0x16, 0x00, 0x00, 0x40, 0x11, 0x4e, 0xb0, 0xac, 0x17, 0xe8, 0xcc,
-       0xac, 0x17, 0xe8, 0xff, 0xf0, 0xff, 0x21, 0xa4, 0x00, 0x18, 0x2a, 0x25, 0x50, 0x4e, 0x4a, 0x50,
-       0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-}
-
-func TestPFLogUDP(t *testing.T) {
-       p := gopacket.NewPacket(testPFLogUDP, LinkTypePFLog, testDecodeOptions)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{
-               LayerTypePFLog,
-               LayerTypeIPv4,
-               LayerTypeUDP,
-               gopacket.LayerTypePayload,
-       }, t)
-}
-
-func TestRegressionDot1QPriority(t *testing.T) {
-       d := &Dot1Q{
-               Priority: 2,
-       }
-       out := gopacket.NewSerializeBuffer()
-       gopacket.SerializeLayers(out, gopacket.SerializeOptions{}, d)
-       if err := d.DecodeFromBytes(out.Bytes(), gopacket.NilDecodeFeedback); err != nil {
-               t.Errorf("could not decode encoded dot1q")
-       } else if d.Priority != 2 {
-               t.Errorf("priority mismatch, want 2 got %d", d.Priority)
-       }
-}
-
-// testPacketMPLSInMPLS is the packet:
-//   15:27:44.753678 MPLS (label 18, exp 0, ttl 255) (label 16, exp 0, [S], ttl
-//   255) IP 10.31.0.1 > 10.34.0.1: ICMP echo request, id 3941, seq 4768, length
-//   80
-//      0x0000:  0030 96e6 fc39 0030 9605 2838 8847 0001  .0...9.0..(8.G..
-//      0x0010:  20ff 0001 01ff 4500 0064 0050 0000 ff01  ......E..d.P....
-//      0x0020:  a706 0a1f 0001 0a22 0001 0800 bd11 0f65  .......".......e
-//      0x0030:  12a0 0000 0000 0053 9ee0 abcd abcd abcd  .......S........
-//      0x0040:  abcd abcd abcd abcd abcd abcd abcd abcd  ................
-//      0x0050:  abcd abcd abcd abcd abcd abcd abcd abcd  ................
-//      0x0060:  abcd abcd abcd abcd abcd abcd abcd abcd  ................
-//      0x0070:  abcd abcd abcd abcd abcd                 ..........
-var testPacketMPLSInMPLS = []byte{
-       0x00, 0x30, 0x96, 0xe6, 0xfc, 0x39, 0x00, 0x30, 0x96, 0x05, 0x28, 0x38, 0x88, 0x47, 0x00, 0x01,
-       0x20, 0xff, 0x00, 0x01, 0x01, 0xff, 0x45, 0x00, 0x00, 0x64, 0x00, 0x50, 0x00, 0x00, 0xff, 0x01,
-       0xa7, 0x06, 0x0a, 0x1f, 0x00, 0x01, 0x0a, 0x22, 0x00, 0x01, 0x08, 0x00, 0xbd, 0x11, 0x0f, 0x65,
-       0x12, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x9e, 0xe0, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
-       0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
-       0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
-       0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
-       0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
-}
-
-func TestPacketMPLSInMPLS(t *testing.T) {
-       p := gopacket.NewPacket(testPacketMPLSInMPLS, LinkTypeEthernet, testDecodeOptions)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{
-               LayerTypeEthernet,
-               LayerTypeMPLS,
-               LayerTypeMPLS,
-               LayerTypeIPv4,
-               LayerTypeICMPv4,
-               gopacket.LayerTypePayload}, t)
-}
-
-// testPacketIPv4Fragmented is the packet:
-//   22:11:26.616090 IP 10.1.1.1.31915 > 129.111.30.27.20197: UDP, length 28
-//      0x0000:  0000 39cf d9cd 0040 33d9 7cfd 0800 4500  ..9....@3.|...E.
-//      0x0010:  0038 00f2 2000 4011 af37 0a01 0101 816f  .8....@..7.....o
-//      0x0020:  1e1b 7cab 4ee5 0024 0000 0000 0000 0000  ..|.N..$........
-//      0x0030:  0000 0000 0000 0000 0000 0000 0000 0000  ................
-//      0x0040:  0000 0000 0000                           ......
-var testPacketIPv4Fragmented = []byte{
-       0x00, 0x00, 0x39, 0xcf, 0xd9, 0xcd, 0x00, 0x40, 0x33, 0xd9, 0x7c, 0xfd, 0x08, 0x00, 0x45, 0x00,
-       0x00, 0x38, 0x00, 0xf2, 0x20, 0x00, 0x40, 0x11, 0xaf, 0x37, 0x0a, 0x01, 0x01, 0x01, 0x81, 0x6f,
-       0x1e, 0x1b, 0x7c, 0xab, 0x4e, 0xe5, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-}
-
-func TestPacketIPv4Fragmented(t *testing.T) {
-       p := gopacket.NewPacket(testPacketIPv4Fragmented, LinkTypeEthernet, testDecodeOptions)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, gopacket.LayerTypeFragment}, t)
-       testSerializationWithOpts(t, p, testPacketIPv4Fragmented, gopacket.SerializeOptions{FixLengths: true, ComputeChecksums: true})
-}
-
-// TestSCTPChunkBadLength tests for issue #146
-func TestSCTPChunkBadLength(t *testing.T) {
-       data := []byte(
-               "0000\xad9$e\x11\xe4\xaeo\b\x00E\x00\x018\xb4\xa3" +
-                       "\x00\x00Y\x84\xc4@\x11gz\xc0\xa8\xee\x01\xc0\xa8" +
-                       "\xeeD\x007le\x03\x01\xc0\f\xdf\b\x01\x00\x00")
-
-       // this panic'd previously due to a zero length chunk getting
-       // repeatedly read
-       gopacket.NewPacket(data, LinkTypeEthernet, gopacket.Default)
-}
-
-// TestSTP
-func TestSTP(t *testing.T) {
-       testSTPpacket := []byte{
-               0x01, 0x80, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x0E, 0x87, 0x85, 0x04, 0x00, 0x26, 0x42, 0x42,
-               0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x64, 0x00, 0x1C, 0x0E, 0x87, 0x78, 0x00, 0x00, 0x00,
-               0x00, 0x04, 0x80, 0x64, 0x00, 0x1C, 0x0E, 0x87, 0x85, 0x00, 0x80, 0x04, 0x01, 0x00, 0x14, 0x00,
-               0x02, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       }
-       p := gopacket.NewPacket(testSTPpacket, LinkTypeEthernet, testDecodeOptions)
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeLLC, LayerTypeSTP}, t)
-}
diff --git a/vendor/github.com/google/gopacket/layers/dhcp_test.go b/vendor/github.com/google/gopacket/layers/dhcp_test.go
deleted file mode 100644 (file)
index c4975dc..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-// Copyright 2016, Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
-       "bytes"
-       "net"
-       "testing"
-
-       "github.com/google/gopacket"
-)
-
-func TestDHCPv4EncodeRequest(t *testing.T) {
-       dhcp := &DHCPv4{Operation: DHCPOpRequest, HardwareType: LinkTypeEthernet, Xid: 0x12345678,
-               ClientIP: net.IP{0, 0, 0, 0}, YourClientIP: net.IP{0, 0, 0, 0}, NextServerIP: net.IP{0, 0, 0, 0}, RelayAgentIP: net.IP{0, 0, 0, 0},
-               ClientHWAddr: net.HardwareAddr{0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc},
-               ServerName:   make([]byte, 64), File: make([]byte, 128)}
-
-       dhcp.Options = append(dhcp.Options, NewDHCPOption(DHCPOptMessageType, []byte{byte(DHCPMsgTypeDiscover)}))
-       dhcp.Options = append(dhcp.Options, NewDHCPOption(DHCPOptHostname, []byte{'e', 'x', 'a', 'm', 'p', 'l', 'e', '.', 'c', 'o', 'm'}))
-       dhcp.Options = append(dhcp.Options, NewDHCPOption(DHCPOptPad, nil))
-       dhcp.Options = append(dhcp.Options, NewDHCPOption(DHCPOptParamsRequest,
-               []byte{byte(DHCPOptSubnetMask), byte(DHCPOptBroadcastAddr), byte(DHCPOptTimeOffset),
-                       byte(DHCPOptRouter), byte(DHCPOptDomainName), byte(DHCPOptDNS), byte(DHCPOptDomainSearch),
-                       byte(DHCPOptHostname), byte(DHCPOptNetBIOSTCPNS), byte(DHCPOptInterfaceMTU), byte(DHCPOptClasslessStaticRoute),
-                       byte(DHCPOptNTPServers)}))
-
-       buf := gopacket.NewSerializeBuffer()
-       opts := gopacket.SerializeOptions{FixLengths: true}
-       err := gopacket.SerializeLayers(buf, opts, dhcp)
-       if err != nil {
-               t.Fatal(err)
-       }
-
-       p2 := gopacket.NewPacket(buf.Bytes(), LayerTypeDHCPv4, testDecodeOptions)
-       dhcp2 := p2.Layer(LayerTypeDHCPv4).(*DHCPv4)
-       testDHCPEqual(t, dhcp, dhcp2)
-}
-
-func TestDHCPv4EncodeResponse(t *testing.T) {
-       dhcp := &DHCPv4{Operation: DHCPOpReply, HardwareType: LinkTypeEthernet, Xid: 0x12345678,
-               ClientIP: net.IP{0, 0, 0, 0}, YourClientIP: net.IP{192, 168, 0, 123}, NextServerIP: net.IP{192, 168, 0, 1}, RelayAgentIP: net.IP{0, 0, 0, 0},
-               ClientHWAddr: net.HardwareAddr{0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc},
-               ServerName:   make([]byte, 64), File: make([]byte, 128)}
-
-       dhcp.Options = append(dhcp.Options, NewDHCPOption(DHCPOptMessageType, []byte{byte(DHCPMsgTypeOffer)}))
-       dhcp.Options = append(dhcp.Options, NewDHCPOption(DHCPOptSubnetMask, []byte{255, 255, 255, 0}))
-       dhcp.Options = append(dhcp.Options, NewDHCPOption(DHCPOptPad, nil))
-       dhcp.Options = append(dhcp.Options, NewDHCPOption(DHCPOptT1, []byte{0x00, 0x00, 0x0e, 0x10}))
-       dhcp.Options = append(dhcp.Options, NewDHCPOption(DHCPOptT2, []byte{0x00, 0x00, 0x0e, 0x10}))
-       dhcp.Options = append(dhcp.Options, NewDHCPOption(DHCPOptLeaseTime, []byte{0x00, 0x00, 0x0e, 0x10}))
-       dhcp.Options = append(dhcp.Options, NewDHCPOption(DHCPOptServerID, []byte{192, 168, 0, 1}))
-
-       buf := gopacket.NewSerializeBuffer()
-       opts := gopacket.SerializeOptions{FixLengths: true}
-       err := gopacket.SerializeLayers(buf, opts, dhcp)
-       if err != nil {
-               t.Fatal(err)
-       }
-
-       p2 := gopacket.NewPacket(buf.Bytes(), LayerTypeDHCPv4, testDecodeOptions)
-       dhcp2 := p2.Layer(LayerTypeDHCPv4).(*DHCPv4)
-       testDHCPEqual(t, dhcp, dhcp2)
-}
-
-func testDHCPEqual(t *testing.T, d1, d2 *DHCPv4) {
-       if d1.Operation != d2.Operation {
-               t.Errorf("expected Operation=%s, got %s", d1.Operation, d2.Operation)
-       }
-       if d1.HardwareType != d2.HardwareType {
-               t.Errorf("expected HardwareType=%s, got %s", d1.HardwareType, d2.HardwareType)
-       }
-       if d1.HardwareLen != d2.HardwareLen {
-               t.Errorf("expected HardwareLen=%v, got %v", d1.HardwareLen, d2.HardwareLen)
-       }
-       if d1.HardwareOpts != d2.HardwareOpts {
-               t.Errorf("expected HardwareOpts=%v, got %v", d1.HardwareOpts, d2.HardwareOpts)
-       }
-       if d1.Xid != d2.Xid {
-               t.Errorf("expected Xid=%v, got %v", d1.Xid, d2.Xid)
-       }
-       if d1.Secs != d2.Secs {
-               t.Errorf("expected Secs=%v, got %v", d1.Secs, d2.Secs)
-       }
-       if d1.Flags != d2.Flags {
-               t.Errorf("expected Flags=%v, got %v", d1.Flags, d2.Flags)
-       }
-       if !d1.ClientIP.Equal(d2.ClientIP) {
-               t.Errorf("expected ClientIP=%v, got %v", d1.ClientIP, d2.ClientIP)
-       }
-       if !d1.YourClientIP.Equal(d2.YourClientIP) {
-               t.Errorf("expected YourClientIP=%v, got %v", d1.YourClientIP, d2.YourClientIP)
-       }
-       if !d1.NextServerIP.Equal(d2.NextServerIP) {
-               t.Errorf("expected NextServerIP=%v, got %v", d1.NextServerIP, d2.NextServerIP)
-       }
-       if !d1.RelayAgentIP.Equal(d2.RelayAgentIP) {
-               t.Errorf("expected RelayAgentIP=%v, got %v", d1.RelayAgentIP, d2.RelayAgentIP)
-       }
-       if !bytes.Equal(d1.ClientHWAddr, d2.ClientHWAddr) {
-               t.Errorf("expected ClientHWAddr=%v, got %v", d1.ClientHWAddr, d2.ClientHWAddr)
-       }
-       if !bytes.Equal(d1.ServerName, d2.ServerName) {
-               t.Errorf("expected ServerName=%v, got %v", d1.ServerName, d2.ServerName)
-       }
-       if !bytes.Equal(d1.File, d2.File) {
-               t.Errorf("expected File=%v, got %v", d1.File, d2.File)
-       }
-       if len(d1.Options) != len(d2.Options) {
-               t.Errorf("expected %d options, got %d", len(d1.Options), len(d2.Options))
-       }
-
-       for i, o := range d1.Options {
-               testDHCPOptionEqual(t, i, o, d2.Options[i])
-       }
-}
-
-func testDHCPOptionEqual(t *testing.T, idx int, d1, d2 DHCPOption) {
-       if d1.Type != d2.Type {
-               t.Errorf("expection Options[%d].Type = %s, got %s", idx, d1.Type, d2.Type)
-       }
-       if !bytes.Equal(d1.Data, d2.Data) {
-               t.Errorf("expection Options[%d].Data to be = %v, got %v", idx, d1.Data, d2.Data)
-       }
-}
diff --git a/vendor/github.com/google/gopacket/layers/dns_test.go b/vendor/github.com/google/gopacket/layers/dns_test.go
deleted file mode 100644 (file)
index 264513b..0000000
+++ /dev/null
@@ -1,833 +0,0 @@
-// Copyright 2012, Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
-       "bytes"
-       "net"
-       "strings"
-       "testing"
-
-       "github.com/google/gopacket"
-)
-
-// testPacketDNSRegression is the packet:
-//   11:08:05.708342 IP 109.194.160.4.57766 > 95.211.92.14.53: 63000% [1au] A? picslife.ru. (40)
-//      0x0000:  0022 19b6 7e22 000f 35bb 0b40 0800 4500  ."..~"..5..@..E.
-//      0x0010:  0044 89c4 0000 3811 2f3d 6dc2 a004 5fd3  .D....8./=m..._.
-//      0x0020:  5c0e e1a6 0035 0030 a597 f618 0010 0001  \....5.0........
-//      0x0030:  0000 0000 0001 0870 6963 736c 6966 6502  .......picslife.
-//      0x0040:  7275 0000 0100 0100 0029 1000 0000 8000  ru.......)......
-//      0x0050:  0000                                     ..
-var testPacketDNSRegression = []byte{
-       0x00, 0x22, 0x19, 0xb6, 0x7e, 0x22, 0x00, 0x0f, 0x35, 0xbb, 0x0b, 0x40, 0x08, 0x00, 0x45, 0x00,
-       0x00, 0x44, 0x89, 0xc4, 0x00, 0x00, 0x38, 0x11, 0x2f, 0x3d, 0x6d, 0xc2, 0xa0, 0x04, 0x5f, 0xd3,
-       0x5c, 0x0e, 0xe1, 0xa6, 0x00, 0x35, 0x00, 0x30, 0xa5, 0x97, 0xf6, 0x18, 0x00, 0x10, 0x00, 0x01,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x70, 0x69, 0x63, 0x73, 0x6c, 0x69, 0x66, 0x65, 0x02,
-       0x72, 0x75, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x29, 0x10, 0x00, 0x00, 0x00, 0x80, 0x00,
-       0x00, 0x00,
-}
-
-func TestPacketDNSRegression(t *testing.T) {
-       p := gopacket.NewPacket(testPacketDNSRegression, LinkTypeEthernet, testDecodeOptions)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeUDP, LayerTypeDNS}, t)
-}
-func BenchmarkDecodePacketDNSRegression(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testPacketDNSRegression, LinkTypeEthernet, gopacket.NoCopy)
-       }
-}
-
-// response to `dig TXT google.com` over IPv4 link:
-var testParseDNSTypeTXTValue = `v=spf1 include:_spf.google.com ~all`
-var testParseDNSTypeTXT = []byte{
-       0x02, 0x00, 0x00, 0x00, // PF_INET
-       0x45, 0x00, 0x00, 0x73, 0x00, 0x00, 0x40, 0x00, 0x39, 0x11, 0x64, 0x98, 0xd0, 0x43, 0xde, 0xde,
-       0x0a, 0xba, 0x23, 0x06, 0x00, 0x35, 0x81, 0xb2, 0x00, 0x5f, 0xdc, 0xb5, 0x98, 0x71, 0x81, 0x80,
-       0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x06, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x03,
-       0x63, 0x6f, 0x6d, 0x00, 0x00, 0x10, 0x00, 0x01, 0xc0, 0x0c, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00,
-       0x0e, 0x10, 0x00, 0x24, 0x23, 0x76, 0x3d, 0x73, 0x70, 0x66, 0x31, 0x20, 0x69, 0x6e, 0x63, 0x6c,
-       0x75, 0x64, 0x65, 0x3a, 0x5f, 0x73, 0x70, 0x66, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
-       0x63, 0x6f, 0x6d, 0x20, 0x7e, 0x61, 0x6c, 0x6c, 0x00, 0x00, 0x29, 0x10, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00,
-}
-
-func TestParseDNSTypeTXT(t *testing.T) {
-       p := gopacket.NewPacket(testParseDNSTypeTXT, LinkTypeNull, testDecodeOptions)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeLoopback, LayerTypeIPv4, LayerTypeUDP, LayerTypeDNS}, t)
-       answers := p.Layer(LayerTypeDNS).(*DNS).Answers
-       if len(answers) != 1 {
-               t.Error("Failed to parse 1 DNS answer")
-       }
-       if len(answers[0].TXTs) != 1 {
-               t.Error("Failed to parse 1 TXT record")
-       }
-       txt := string(answers[0].TXTs[0])
-       if txt != testParseDNSTypeTXTValue {
-               t.Errorf("Incorrect TXT value, expected %q, got %q", testParseDNSTypeTXTValue, txt)
-       }
-}
-
-func testQuestionEqual(t *testing.T, i int, exp, got DNSQuestion) {
-       if !bytes.Equal(exp.Name, got.Name) {
-               t.Errorf("expected Questions[%d].Name = %v, got %v", i, string(exp.Name), string(got.Name))
-       }
-       if exp.Type != got.Type {
-               t.Errorf("expected Questions[%d].Type = %v, got %v", i, exp.Type, got.Type)
-       }
-       if exp.Class != got.Class {
-               t.Errorf("expected Questions[%d].Class = %v, got %v", i, exp.Class, got.Class)
-       }
-}
-
-func testResourceEqual(t *testing.T, i int, name string, exp, got DNSResourceRecord) {
-       if !bytes.Equal(exp.Name, got.Name) {
-               t.Errorf("expected %s[%d].Name = %v, got %v", name, i, string(exp.Name), string(got.Name))
-       }
-
-       if exp.Type != got.Type {
-               t.Errorf("expected %s[%d].Type = %v, got %v", name, i, exp.Type, got.Type)
-       }
-
-       if exp.Class != got.Class {
-               t.Errorf("expected %s[%d].Class = %v, got %v", name, i, exp.Class, got.Class)
-       }
-
-       if exp.TTL != got.TTL {
-               t.Errorf("expected %s[%d].TTL = %v, got %v", name, i, exp.TTL, got.TTL)
-       }
-       if exp.DataLength != got.DataLength {
-               t.Errorf("expected %s[%d].DataLength = %v, got %v", name, i, exp.DataLength, got.DataLength)
-       }
-
-       // we don't check .Data
-
-       if !exp.IP.Equal(got.IP) {
-               t.Errorf("expected %s[%d].IP = %v, got %v", name, i, exp.IP, got.IP)
-       }
-       if !bytes.Equal(exp.NS, got.NS) {
-               t.Errorf("expected %s[%d].NS = %v, got %v", name, i, exp.NS, got.NS)
-       }
-       if !bytes.Equal(exp.CNAME, got.CNAME) {
-               t.Errorf("expected %s[%d].CNAME = %v, got %v", name, i, exp.CNAME, got.CNAME)
-       }
-       if !bytes.Equal(exp.PTR, got.PTR) {
-               t.Errorf("expected %s[%d].PTR = %v, got %v", name, i, exp.PTR, got.PTR)
-       }
-       if len(exp.TXTs) != len(got.TXTs) {
-               t.Errorf("expected %s[%d].TXTs = %v, got %v", name, i, exp.TXTs, got.TXTs)
-       }
-       for j := range exp.TXTs {
-               if !bytes.Equal(exp.TXTs[j], got.TXTs[j]) {
-                       t.Errorf("expected %s[%d].TXTs[%d] = %v, got %v", name, i, j, exp.TXTs[j], got.TXTs[j])
-               }
-       }
-
-       // SOA
-       if !bytes.Equal(exp.SOA.MName, got.SOA.MName) {
-               t.Errorf("expected %s[%d].SOA.MName = %v, got %v", name, i, exp.SOA.MName, got.SOA.MName)
-       }
-       if !bytes.Equal(exp.SOA.RName, got.SOA.RName) {
-               t.Errorf("expected %s[%d].SOA.RName = %v, got %v", name, i, exp.SOA.RName, got.SOA.RName)
-       }
-       if exp.SOA.Serial != got.SOA.Serial {
-               t.Errorf("expected %s[%d].SOA.Serial = %v, got %v", name, i, exp.SOA.Serial, got.SOA.Serial)
-       }
-       if exp.SOA.Refresh != got.SOA.Refresh {
-               t.Errorf("expected %s[%d].SOA.Refresh = %v, got %v", name, i, exp.SOA.Refresh, got.SOA.Refresh)
-       }
-       if exp.SOA.Retry != got.SOA.Retry {
-               t.Errorf("expected %s[%d].SOA.Retry = %v, got %v", name, i, exp.SOA.Retry, got.SOA.Retry)
-       }
-       if exp.SOA.Expire != got.SOA.Expire {
-               t.Errorf("expected %s[%d].SOA.Expire = %v, got %v", name, i, exp.SOA.Expire, got.SOA.Expire)
-       }
-       if exp.SOA.Minimum != got.SOA.Minimum {
-               t.Errorf("expected %s[%d].SOA.Minimum = %v, got %v", name, i, exp.SOA.Minimum, got.SOA.Minimum)
-       }
-
-       // SRV
-       if !bytes.Equal(exp.SRV.Name, got.SRV.Name) {
-               t.Errorf("expected %s[%d].SRV.Name = %v, got %v", name, i, exp.SRV.Name, got.SRV.Name)
-       }
-       if exp.SRV.Weight != got.SRV.Weight {
-               t.Errorf("expected %s[%d].SRV.Weight = %v, got %v", name, i, exp.SRV.Weight, got.SRV.Weight)
-       }
-       if exp.SRV.Port != got.SRV.Port {
-               t.Errorf("expected %s[%d].SRV.Port = %v, got %v", name, i, exp.SRV.Port, got.SRV.Port)
-       }
-       // MX
-       if !bytes.Equal(exp.MX.Name, got.MX.Name) {
-               t.Errorf("expected %s[%d].MX.Name = %v, got %v", name, i, exp.MX.Name, got.MX.Name)
-       }
-       if exp.MX.Preference != got.MX.Preference {
-               t.Errorf("expected %s[%d].MX.Preference = %v, got %v", name, i, exp.MX.Preference, got.MX.Preference)
-       }
-}
-
-func testDNSEqual(t *testing.T, exp, got *DNS) {
-       if exp.ID != got.ID {
-               t.Errorf("expected ID = %v, got %v", exp.ID, got.ID)
-       }
-       if exp.AA != got.AA {
-               t.Errorf("expected AA = %v, got %v", exp.AA, got.AA)
-       }
-       if exp.OpCode != got.OpCode {
-               t.Errorf("expected OpCode = %v, got %v", exp.OpCode, got.OpCode)
-       }
-       if exp.AA != got.AA {
-               t.Errorf("expected AA = %v, got %v", exp.AA, got.AA)
-       }
-       if exp.TC != got.TC {
-               t.Errorf("expected TC = %v, got %v", exp.TC, got.TC)
-       }
-       if exp.RD != got.RD {
-               t.Errorf("expected RD = %v, got %v", exp.RD, got.RD)
-       }
-       if exp.RA != got.RA {
-               t.Errorf("expected RA = %v, got %v", exp.RA, got.RA)
-       }
-       if exp.Z != got.Z {
-               t.Errorf("expected Z = %v, got %v", exp.Z, got.Z)
-       }
-       if exp.ResponseCode != got.ResponseCode {
-               t.Errorf("expected ResponseCode = %v, got %v", exp.ResponseCode, got.ResponseCode)
-       }
-       if exp.QDCount != got.QDCount {
-               t.Errorf("expected QDCount = %v, got %v", exp.QDCount, got.QDCount)
-       }
-       if exp.ANCount != got.ANCount {
-               t.Errorf("expected ANCount = %v, got %v", exp.ANCount, got.ANCount)
-       }
-       if exp.ANCount != got.ANCount {
-               t.Errorf("expected ANCount = %v, got %v", exp.ANCount, got.ANCount)
-       }
-       if exp.NSCount != got.NSCount {
-               t.Errorf("expected NSCount = %v, got %v", exp.NSCount, got.NSCount)
-       }
-       if exp.ARCount != got.ARCount {
-               t.Errorf("expected ARCount = %v, got %v", exp.ARCount, got.ARCount)
-       }
-
-       if len(exp.Questions) != len(got.Questions) {
-               t.Errorf("expected %d Questions, got %d", len(exp.Questions), len(got.Questions))
-       }
-       for i := range exp.Questions {
-               testQuestionEqual(t, i, exp.Questions[i], got.Questions[i])
-       }
-
-       if len(exp.Answers) != len(got.Answers) {
-               t.Errorf("expected %d Answers, got %d", len(exp.Answers), len(got.Answers))
-       }
-       for i := range exp.Answers {
-               testResourceEqual(t, i, "Answers", exp.Answers[i], got.Answers[i])
-       }
-
-       if len(exp.Authorities) != len(got.Authorities) {
-               t.Errorf("expected %d Answers, got %d", len(exp.Authorities), len(got.Authorities))
-       }
-       for i := range exp.Authorities {
-               testResourceEqual(t, i, "Authorities", exp.Authorities[i], got.Authorities[i])
-       }
-
-       if len(exp.Additionals) != len(got.Additionals) {
-               t.Errorf("expected %d Additionals, got %d", len(exp.Additionals), len(got.Additionals))
-       }
-       for i := range exp.Additionals {
-               testResourceEqual(t, i, "Additionals", exp.Additionals[i], got.Additionals[i])
-       }
-}
-
-func TestDNSEncodeQuery(t *testing.T) {
-       dns := &DNS{ID: 1234, OpCode: DNSOpCodeQuery, RD: true}
-       dns.Questions = append(dns.Questions,
-               DNSQuestion{
-                       Name:  []byte("example1.com"),
-                       Type:  DNSTypeA,
-                       Class: DNSClassIN,
-               })
-
-       dns.Questions = append(dns.Questions,
-               DNSQuestion{
-                       Name:  []byte("example2.com"),
-                       Type:  DNSTypeA,
-                       Class: DNSClassIN,
-               })
-
-       buf := gopacket.NewSerializeBuffer()
-       opts := gopacket.SerializeOptions{FixLengths: true}
-       err := gopacket.SerializeLayers(buf, opts, dns)
-       if err != nil {
-               t.Fatal(err)
-       }
-       if int(dns.QDCount) != len(dns.Questions) {
-               t.Errorf("fix lengths did not adjust QDCount, expected %d got %d", len(dns.Questions), dns.QDCount)
-       }
-
-       p2 := gopacket.NewPacket(buf.Bytes(), LayerTypeDNS, testDecodeOptions)
-       dns2 := p2.Layer(LayerTypeDNS).(*DNS)
-       testDNSEqual(t, dns, dns2)
-}
-
-func TestDNSEncodeResponse(t *testing.T) {
-       dns := &DNS{ID: 1234, QR: true, OpCode: DNSOpCodeQuery,
-               AA: true, RD: true, RA: true}
-       dns.Questions = append(dns.Questions,
-               DNSQuestion{
-                       Name:  []byte("example1.com"),
-                       Type:  DNSTypeA,
-                       Class: DNSClassIN,
-               })
-       dns.Questions = append(dns.Questions,
-               DNSQuestion{
-                       Name:  []byte("www.example2.com"),
-                       Type:  DNSTypeAAAA,
-                       Class: DNSClassIN,
-               })
-
-       dns.Answers = append(dns.Answers,
-               DNSResourceRecord{
-                       Name:  []byte("example1.com"),
-                       Type:  DNSTypeA,
-                       Class: DNSClassIN,
-                       TTL:   1024,
-                       IP:    net.IP([]byte{1, 2, 3, 4}),
-               })
-
-       dns.Answers = append(dns.Answers,
-               DNSResourceRecord{
-                       Name:  []byte("www.example2.com"),
-                       Type:  DNSTypeAAAA,
-                       Class: DNSClassIN,
-                       TTL:   1024,
-                       IP:    net.IP([]byte{5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4}),
-               })
-
-       dns.Answers = append(dns.Answers,
-               DNSResourceRecord{
-                       Name:  []byte("www.example2.com"),
-                       Type:  DNSTypeCNAME,
-                       Class: DNSClassIN,
-                       TTL:   1024,
-                       CNAME: []byte("example2.com"),
-               })
-
-       buf := gopacket.NewSerializeBuffer()
-       opts := gopacket.SerializeOptions{FixLengths: true}
-       err := gopacket.SerializeLayers(buf, opts, dns)
-       if err != nil {
-               t.Fatal(err)
-       }
-       if int(dns.ANCount) != len(dns.Answers) {
-               t.Errorf("fix lengths did not adjust ANCount, expected %d got %d", len(dns.Answers), dns.ANCount)
-       }
-       for i, a := range dns.Answers {
-               if a.DataLength == 0 {
-                       t.Errorf("fix lengths did not adjust Answers[%d].DataLength", i)
-               }
-       }
-
-       p2 := gopacket.NewPacket(buf.Bytes(), LayerTypeDNS, testDecodeOptions)
-       dns2 := p2.Layer(LayerTypeDNS).(*DNS)
-       testDNSEqual(t, dns, dns2)
-}
-
-// testDNSMalformedPacket is the packet:
-//   10:30:00.389666 IP 10.77.43.131.60718 > 10.1.0.17.53: 18245 updateD [b2&3=0x5420] [18516a] [12064q] [21584n] [12081au][|domain]
-//     0x0000:  0000 0101 0000 4e96 1476 afa1 0800 4500  ......N..v....E.
-//     0x0010:  0039 d431 0000 f311 b3a0 0a4d 2b83 0a01  .9.1.......M+...
-//     0x0020:  0011 ed2e 0035 0025 0832 4745 5420 2f20  .....5.%.2GET./.
-//     0x0030:  4854 5450 2f31 2e31 0d0a 486f 7374 3a20  HTTP/1.1..Host:.
-//     0x0040:  7777 770d 0a0d 0a                        www....
-var testDNSMalformedPacket = []byte{
-       0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x4e, 0x96, 0x14, 0x76, 0xaf, 0xa1, 0x08, 0x00, 0x45, 0x00,
-       0x00, 0x39, 0xd4, 0x31, 0x00, 0x00, 0xf3, 0x11, 0xb3, 0xa0, 0x0a, 0x4d, 0x2b, 0x83, 0x0a, 0x01,
-       0x00, 0x11, 0xed, 0x2e, 0x00, 0x35, 0x00, 0x25, 0x08, 0x32, 0x47, 0x45, 0x54, 0x20, 0x2f, 0x20,
-       0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, 0x0d, 0x0a, 0x48, 0x6f, 0x73, 0x74, 0x3a, 0x20,
-       0x77, 0x77, 0x77, 0x0d, 0x0a, 0x0d, 0x0a,
-}
-
-func TestDNSMalformedPacket(t *testing.T) {
-       p := gopacket.NewPacket(testDNSMalformedPacket, LinkTypeEthernet, testDecodeOptions)
-       if errLayer := p.ErrorLayer(); errLayer == nil {
-               t.Error("No error layer on invalid DNS name")
-       } else if err := errLayer.Error(); !strings.Contains(err.Error(), "invalid index") {
-               t.Errorf("unexpected error message: %v", err)
-       }
-}
-
-// testDNSMalformedPacket2 is the packet:
-//   15:14:42.056054 IP 10.77.0.245.53 > 10.1.0.45.38769: 12625 zoneInit YXRRSet- [49833q],[|domain]
-//     0x0000:  0055 22af c637 0022 55ac deac 0800 4500  .U"..7."U.....E.
-//     0x0010:  0079 3767 4000 3911 f49d 0a4d 00f5 0a01  .y7g@.9....M....
-//     0x0020:  002d 0035 9771 0065 6377 3151 f057 c2a9  .-.5.q.ecw1Q.W..
-//     0x0030:  fc6e e86a beb0 f7d4 8599 373e b5f8 9db2  .n.j......7>....
-//     0x0040:  a399 21a1 9762 def1 def4 f5ab 5675 023e  ..!..b......Vu.>
-//     0x0050:  c9ca 304f 178a c2ad f2fc 677a 0e4c b892  ..0O......gz.L..
-//     0x0060:  ab71 09bb 1ea4 f7c4 fe47 7a39 868b 29a0  .q.......Gz9..).
-//     0x0070:  62c4 d184 5b4e 8817 4cc0 d1d0 d430 11d3  b...[N..L....0..
-//     0x0080:  d147 543f afc7 1a                        .GT?...
-var testDNSMalformedPacket2 = []byte{
-       0x00, 0x55, 0x22, 0xaf, 0xc6, 0x37, 0x00, 0x22, 0x55, 0xac, 0xde, 0xac, 0x08, 0x00, 0x45, 0x00,
-       0x00, 0x79, 0x37, 0x67, 0x40, 0x00, 0x39, 0x11, 0xf4, 0x9d, 0x0a, 0x4d, 0x00, 0xf5, 0x0a, 0x01,
-       0x00, 0x2d, 0x00, 0x35, 0x97, 0x71, 0x00, 0x65, 0x63, 0x77, 0x31, 0x51, 0xf0, 0x57, 0xc2, 0xa9,
-       0xfc, 0x6e, 0xe8, 0x6a, 0xbe, 0xb0, 0xf7, 0xd4, 0x85, 0x99, 0x37, 0x3e, 0xb5, 0xf8, 0x9d, 0xb2,
-       0xa3, 0x99, 0x21, 0xa1, 0x97, 0x62, 0xde, 0xf1, 0xde, 0xf4, 0xf5, 0xab, 0x56, 0x75, 0x02, 0x3e,
-       0xc9, 0xca, 0x30, 0x4f, 0x17, 0x8a, 0xc2, 0xad, 0xf2, 0xfc, 0x67, 0x7a, 0x0e, 0x4c, 0xb8, 0x92,
-       0xab, 0x71, 0x09, 0xbb, 0x1e, 0xa4, 0xf7, 0xc4, 0xfe, 0x47, 0x7a, 0x39, 0x86, 0x8b, 0x29, 0xa0,
-       0x62, 0xc4, 0xd1, 0x84, 0x5b, 0x4e, 0x88, 0x17, 0x4c, 0xc0, 0xd1, 0xd0, 0xd4, 0x30, 0x11, 0xd3,
-       0xd1, 0x47, 0x54, 0x3f, 0xaf, 0xc7, 0x1a,
-}
-
-func TestDNSMalformedPacket2(t *testing.T) {
-       p := gopacket.NewPacket(testDNSMalformedPacket2, LinkTypeEthernet, testDecodeOptions)
-       if errLayer := p.ErrorLayer(); errLayer == nil {
-               t.Error("No error layer on invalid DNS name")
-       } else if err := errLayer.Error(); !strings.Contains(err.Error(), "offset pointer too high") {
-               t.Errorf("unexpected error message: %v", err)
-       }
-}
-
-// testMalformedRootQuery is the packet:
-//   08:31:18.143065 IP 10.77.0.26.53 > 10.1.0.233.65071: 59508- 0/13/3 (508)
-//     0x0000:  0055 22af c637 0022 55ac deac 0800 4500  .U"..7."U.....E.
-//     0x0010:  0218 76b2 4000 7211 7ad2 0a4d 001a 0a01  ..v.@.r.z..M....
-//     0x0020:  00e9 0035 fe2f 0204 b8f5 e874 8100 0001  ...5./.....t....
-//     0x0030:  0000 000d 0003 0c61 786b 7663 6863 7063  .......axkvchcpc
-//     0x0040:  7073 6c0a 7878 7878 7878 7878 7878 036e  psl.xxxxxxxxxx.n
-//     0x0050:  6574 0000 0100 0100 0002 0001 0000 0e10  et..............
-//     0x0060:  0014 016d 0c72 6f6f 742d 7365 7276 6572  ...m.root-server
-//     0x0070:  7303 6e65 7400 c02d 0002 0001 0000 0e10  s.net..-........
-//     0x0080:  0014 0161 0c72 6f6f 742d 7365 7276 6572  ...a.root-server
-//     0x0090:  7303 6e65 7400 c02d 0002 0001 0000 0e10  s.net..-........
-//     0x00a0:  0014 0169 0c72 6f6f 742d 7365 7276 6572  ...i.root-server
-//     0x00b0:  7303 6e65 7400 c02d 0002 0001 0000 0e10  s.net..-........
-//     0x00c0:  0014 0162 0c72 6f6f 742d 7365 7276 6572  ...b.root-server
-//     0x00d0:  7303 6e65 7400 c02d 0002 0001 0000 0e10  s.net..-........
-//     0x00e0:  0014 016c 0c72 6f6f 742d 7365 7276 6572  ...l.root-server
-//     0x00f0:  7303 6e65 7400 c02d 0002 0001 0000 0e10  s.net..-........
-//     0x0100:  0014 0166 0c72 6f6f 742d 7365 7276 6572  ...f.root-server
-//     0x0110:  7303 6e65 7400 c02d 0002 0001 0000 0e10  s.net..-........
-//     0x0120:  0014 0167 0c72 6f6f 742d 7365 7276 6572  ...g.root-server
-//     0x0130:  7303 6e65 7400 c02d 0002 0001 0000 0e10  s.net..-........
-//     0x0140:  0014 0164 0c72 6f6f 742d 7365 7276 6572  ...d.root-server
-//     0x0150:  7303 6e65 7400 c02d 0002 0001 0000 0e10  s.net..-........
-//     0x0160:  0014 0168 0c72 6f6f 742d 7365 7276 6572  ...h.root-server
-//     0x0170:  7303 6e65 7400 c02d 0002 0001 0000 0e10  s.net..-........
-//     0x0180:  0014 0165 0c72 6f6f 742d 7365 7276 6572  ...e.root-server
-//     0x0190:  7303 6e65 7400 c02d 0002 0001 0000 0e10  s.net..-........
-//     0x01a0:  0014 016a 0c72 6f6f 742d 7365 7276 6572  ...j.root-server
-//     0x01b0:  7303 6e65 7400 c02d 0002 0001 0000 0e10  s.net..-........
-//     0x01c0:  0014 016b 0c72 6f6f 742d 7365 7276 6572  ...k.root-server
-//     0x01d0:  7303 6e65 7400 c02d 0002 0001 0000 0e10  s.net..-........
-//     0x01e0:  0014 0163 0c72 6f6f 742d 7365 7276 6572  ...c.root-server
-//     0x01f0:  7303 6e65 7400 c038 0001 0001 0000 0e10  s.net..8........
-//     0x0200:  0004 ca0c 1b21 c058 0001 0001 0000 0e10  .....!.X........
-//     0x0210:  0004 c629 0004 c078 0001 0001 0000 0e10  ...)...x........
-//     0x0220:  0004 c024 9411                           ...$..
-var testMalformedRootQuery = []byte{
-       0x00, 0x55, 0x22, 0xaf, 0xc6, 0x37, 0x00, 0x22, 0x55, 0xac, 0xde, 0xac, 0x08, 0x00, 0x45, 0x00,
-       0x02, 0x18, 0x76, 0xb2, 0x40, 0x00, 0x72, 0x11, 0x7a, 0xd2, 0x0a, 0x4d, 0x00, 0x1a, 0x0a, 0x01,
-       0x00, 0xe9, 0x00, 0x35, 0xfe, 0x2f, 0x02, 0x04, 0xb8, 0xf5, 0xe8, 0x74, 0x81, 0x00, 0x00, 0x01,
-       0x00, 0x00, 0x00, 0x0d, 0x00, 0x03, 0x0c, 0x61, 0x78, 0x6b, 0x76, 0x63, 0x68, 0x63, 0x70, 0x63,
-       0x70, 0x73, 0x6c, 0x0a, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x03, 0x6e,
-       0x65, 0x74, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x0e, 0x10,
-       0x00, 0x14, 0x01, 0x6d, 0x0c, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
-       0x73, 0x03, 0x6e, 0x65, 0x74, 0x00, 0xc0, 0x2d, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x0e, 0x10,
-       0x00, 0x14, 0x01, 0x61, 0x0c, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
-       0x73, 0x03, 0x6e, 0x65, 0x74, 0x00, 0xc0, 0x2d, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x0e, 0x10,
-       0x00, 0x14, 0x01, 0x69, 0x0c, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
-       0x73, 0x03, 0x6e, 0x65, 0x74, 0x00, 0xc0, 0x2d, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x0e, 0x10,
-       0x00, 0x14, 0x01, 0x62, 0x0c, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
-       0x73, 0x03, 0x6e, 0x65, 0x74, 0x00, 0xc0, 0x2d, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x0e, 0x10,
-       0x00, 0x14, 0x01, 0x6c, 0x0c, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
-       0x73, 0x03, 0x6e, 0x65, 0x74, 0x00, 0xc0, 0x2d, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x0e, 0x10,
-       0x00, 0x14, 0x01, 0x66, 0x0c, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
-       0x73, 0x03, 0x6e, 0x65, 0x74, 0x00, 0xc0, 0x2d, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x0e, 0x10,
-       0x00, 0x14, 0x01, 0x67, 0x0c, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
-       0x73, 0x03, 0x6e, 0x65, 0x74, 0x00, 0xc0, 0x2d, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x0e, 0x10,
-       0x00, 0x14, 0x01, 0x64, 0x0c, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
-       0x73, 0x03, 0x6e, 0x65, 0x74, 0x00, 0xc0, 0x2d, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x0e, 0x10,
-       0x00, 0x14, 0x01, 0x68, 0x0c, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
-       0x73, 0x03, 0x6e, 0x65, 0x74, 0x00, 0xc0, 0x2d, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x0e, 0x10,
-       0x00, 0x14, 0x01, 0x65, 0x0c, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
-       0x73, 0x03, 0x6e, 0x65, 0x74, 0x00, 0xc0, 0x2d, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x0e, 0x10,
-       0x00, 0x14, 0x01, 0x6a, 0x0c, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
-       0x73, 0x03, 0x6e, 0x65, 0x74, 0x00, 0xc0, 0x2d, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x0e, 0x10,
-       0x00, 0x14, 0x01, 0x6b, 0x0c, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
-       0x73, 0x03, 0x6e, 0x65, 0x74, 0x00, 0xc0, 0x2d, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x0e, 0x10,
-       0x00, 0x14, 0x01, 0x63, 0x0c, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
-       0x73, 0x03, 0x6e, 0x65, 0x74, 0x00, 0xc0, 0x38, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x0e, 0x10,
-       0x00, 0x04, 0xca, 0x0c, 0x1b, 0x21, 0xc0, 0x58, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x0e, 0x10,
-       0x00, 0x04, 0xc6, 0x29, 0x00, 0x04, 0xc0, 0x78, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x0e, 0x10,
-       0x00, 0x04, 0xc0, 0x24, 0x94, 0x11,
-}
-
-func TestMalformedRootQuery(t *testing.T) {
-       p := gopacket.NewPacket(testMalformedRootQuery, LinkTypeEthernet, testDecodeOptions)
-       if errLayer := p.ErrorLayer(); errLayer == nil {
-               t.Error("No error layer on invalid DNS name")
-       } else if err := errLayer.Error(); !strings.Contains(err.Error(), "no dns data found") {
-               t.Errorf("unexpected error message: %v", err)
-       }
-}
-
-// testAnotherMalformedDNS is the packet:
-//   10:52:13.690904 IP 10.77.0.29.53 > 10.1.0.6.42280: 13491 op6+% [b2&3=0x3313] [11720a] [23583q] [29742n] [52087au] Type22277 (Class 43688)? M- M-<.VM-^KM-wQM-s"M-^E^]M-+^Wx^P^@M-^\^\M-oM-FM-U^F^E7M-tM-^VM-^[M-F^H>G^FM-uM-^KM-_6GM-[M-jM-bM-^H]hM-^J.[|domain]
-//     0x0000:  0055 22af c637 0022 55ac deac 0800 4500  .U"..7."U.....E.
-//     0x0010:  05c1 2eea 4000 3611 fbd1 0a4d 001d 0a01  ....@.6....M....
-//     0x0020:  0006 0035 a528 05ad 00a2 34b3 3313 5c1f  ...5.(....4.3.\.
-//     0x0030:  2dc8 742e cb77 2da0 bc2e 568b f751 f322  -.t..w-...V..Q."
-//     0x0040:  851d ab17 7810 009c 1cef c6d5 0605 37f4  ....x.........7.
-//     0x0050:  969b c65e 483e 4706 f58b df36 47db eae2  ...^H>G....6G...
-//     0x0060:  885d 688a c5a5 5705 aaa8 95eb 93a4 d85a  .]h...W........Z
-//     0x0070:  c9af 261f 7816 a354 2d23 d84a 579c 4876  ..&.x..T-#.JW.Hv
-//     0x0080:  a391 43db 5c41 191a 92b8 dcdd 6839 eef5  ..C.\A......h9..
-//     0x0090:  728e 13e0 0679 6f47 88a0 25b9 44d8 f8e7  r....yoG..%.D...
-//     0x00a0:  8afe 0bfa f811 8da5 f8a3 1f8e d23b fe12  .............;..
-//     0x00b0:  d943 9327 92ad 4410 183e 688d b06d 5391  .C.'..D..>h..mS.
-//     0x00c0:  695b e49f 8f1e c075 d043 afe0 1174 9db0  i[.....u.C...t..
-//     0x00d0:  06b0 f01e b85b 3c84 945e 06d0 b20f 9eaa  .....[<..^......
-//     0x00e0:  123d 0ab0 2a55 309c 0ee9 3e5e db2f f377  .=..*U0...>^./.w
-//     0x00f0:  d7f1 9bae 373d 3316 0796 b80e dd18 5173  ....7=3.......Qs
-//     0x0100:  b28d 84fd 1812 d87b 42c8 5f11 4db6 b269  .......{B._.M..i
-//     0x0110:  1c42 4aea d5a4 644b 6c00 f0c0 fcee 71a7  .BJ...dKl.....q.
-//     0x0120:  e7f0 719c a207 dc5c a6fa f005 a338 7ff0  ..q....\.....8..
-//     0x0130:  5beb 3b4d 8952 2a46 d47b a5a2 e1fb 9e76  [.;M.R*F.{.....v
-//     0x0140:  c815 6258 50f4 6997 bad5 b479 2d06 ebbb  ..bXP.i....y-...
-//     0x0150:  2cac 2ecc e4f0 1f94 ce9f 186c 61da 9681  ,..........la...
-//     0x0160:  345c 4d88 efc7 037b fbe3 4402 ea06 2e5d  4\M....{..D....]
-//     0x0170:  2e6e 4860 e180 3ef7 c006 0ad1 ebb9 c4ff  .nH`..>.........
-//     0x0180:  dee2 f21c 02c2 751a ded8 ae2e 13a9 3fa2  ......u.......?.
-//     0x0190:  392a 8b54 11b2 2b4e 2bf1 4780 db9f 8c10  9*.T..+N+.G.....
-//     0x01a0:  ac6f 61b0 7b19 423f 07e5 4628 b870 f75d  .oa.{.B?..F(.p.]
-//     0x01b0:  09a3 63b2 77af 5985 a0ae 51d8 243f a7c8  ..c.w.Y...Q.$?..
-//     0x01c0:  ab08 7fc6 0217 c09f c412 0c45 e6aa 96bf  ...........E....
-//     0x01d0:  184c 4307 1f1f c4f4 7734 da31 2088 662b  .LC.....w4.1..f+
-//     0x01e0:  44c5 096f 1d1d 2dc5 ffd6 867d 9fc5 7b45  D..o..-....}..{E
-//     0x01f0:  f949 7dd9 38de 0d51 ac2a 32fc f50b 1bbe  .I}.8..Q.*2.....
-//     0x0200:  1c4b 5441 fbf3 0821 6c28 4530 5676 1d27  .KTA...!l(E0Vv.'
-//     0x0210:  5087 466c 3d5b 45a6 af7f 917a 6d43 66c2  P.Fl=[E....zmCf.
-//     0x0220:  036a 8bef ca60 9b13 8d29 9fda 82fa 01b1  .j...`...)......
-//     0x0230:  df8f 1f83 c71d 630f 349e 508c 9f7a e3da  ......c.4.P..z..
-//     0x0240:  a114 3622 9df8 9926 4dac 4150 d505 7b3a  ..6"...&M.AP..{:
-//     0x0250:  6fed fc75 6b4f 2d60 8a89 767d 9af0 896e  o..ukO-`..v}...n
-//     0x0260:  907d 1ada def3 345c 0d81 283c a24f fcbb  .}....4\..(<.O..
-//     0x0270:  bbdd b7b3 e3bb 9f1b d966 51b7 8217 7fa0  .........fQ.....
-//     0x0280:  e828 d3ca a6f1 532f 164e e405 bb3b 0de3  .(....S/.N...;..
-//     0x0290:  985d 6e89 d825 ebc6 d8ba 5190 a114 c6a3  .]n..%....Q.....
-//     0x02a0:  18b4 8aa7 181a 01ac cdc0 8048 ea72 a5e3  ...........H.r..
-//     0x02b0:  e37a dc57 65cd b787 39e6 c39e 317b 45d8  .z.We...9...1{E.
-//     0x02c0:  475c 05ba e8f8 8224 5a85 27b8 1584 8d78  G\.....$Z.'....x
-//     0x02d0:  62b6 6495 ac10 338f 1122 f2ff 043e 9e2a  b.d...3.."...>.*
-//     0x02e0:  1058 a910 5792 6fcd 9a96 6183 6708 8f70  .X..W.o...a.g..p
-//     0x02f0:  edc6 a67c 64ff 50fa 520b de94 c82c c4d6  ...|d.P.R....,..
-//     0x0300:  7d8f 0fd5 2f0d 9833 7c6c be10 a4e5 dc99  }.../..3|l......
-//     0x0310:  a467 ef5f b35b c11c e23c 131a 48b2 9cef  .g._.[...<..H...
-//     0x0320:  5a2f fece dd9e 2aea 0db9 faf3 a6ef b29d  Z/....*.........
-//     0x0330:  e85d a410 dd6a 6806 3fc6 1694 179f cb4b  .]...jh.?......K
-//     0x0340:  08c4 86b2 0713 cddb b257 d56b fe82 7d82  .........W.k..}.
-//     0x0350:  0d1f 6dc9 67b2 d2a1 6791 4f38 edf9 491f  ..m.g...g.O8..I.
-//     0x0360:  2c02 35f5 8165 ecc3 bc6a b631 3c7e 1ad4  ,.5..e...j.1<~..
-//     0x0370:  8e27 f962 f942 11b5 1b45 9bac b474 3c6e  .'.b.B...E...t<n
-//     0x0380:  6832 3075 be6d ac0d a8a0 7d47 a6ef 4e43  h20u.m....}G..NC
-//     0x0390:  6b9a 3097 8a8b 82a3 9515 362c f7d6 a37f  k.0.......6,....
-//     0x03a0:  7313 1199 a5f3 03dc bcc9 fb10 c23d eeb9  s............=..
-//     0x03b0:  78ff c8f3 0d38 9f74 ceec b7ae 63e3 3424  x....8.t....c.4$
-//     0x03c0:  b783 f106 011f 666b bf2d abc8 ea10 57a1  ......fk.-....W.
-//     0x03d0:  7cf2 4a3f 57ca 1386 bfba 27e5 4662 81c8  |.J?W.....'.Fb..
-//     0x03e0:  041e 1820 b3d5 c399 cd4d 222f 29f0 b994  .........M"/)...
-//     0x03f0:  865a e6e2 1686 3261 b0cd caaf 07ec d0bc  .Z....2a........
-//     0x0400:  afb8 3cf0 51c1 6c7a 6383 6b3a ff47 9551  ..<.Q.lzc.k:.G.Q
-//     0x0410:  1099 525f 355e 4684 bd34 ec12 88c9 dcc2  ..R_5^F..4......
-//     0x0420:  d11c 826d f1df 37e6 f08f 6ce8 817d bdc3  ...m..7...l..}..
-//     0x0430:  20b9 a274 c645 c67d f299 fef9 287f 09ee  ...t.E.}....(...
-//     0x0440:  ac67 6872 a126 b1d3 922c 4c2a 0ec9 b6d4  .ghr.&...,L*....
-//     0x0450:  fb59 6163 d1c4 1708 8d94 bc3d be5e ae29  .Yac.......=.^.)
-//     0x0460:  51ff a765 9df6 ae35 ed6b 0555 933f 3ed6  Q..e...5.k.U.?>.
-//     0x0470:  259b d93e f86f 6088 0c4e 357b 5c67 7d93  %..>.o`..N5{\g}.
-//     0x0480:  a695 1a42 e1e1 ef91 14d7 b7b7 0ca4 2dda  ...B..........-.
-//     0x0490:  6ac1 771e 25c1 a578 4ca8 6fd8 de04 1c09  j.w.%..xL.o.....
-//     0x04a0:  df49 f179 6a58 2b45 7231 307f bc67 e5e7  .I.yjX+Er10..g..
-//     0x04b0:  c5cd fec0 b021 508e 4fc5 f821 f734 90bc  .....!P.O..!.4..
-//     0x04c0:  c87f 14f1 2e5c d17b 1818 5b4a 6b68 0212  .....\.{..[Jkh..
-//     0x04d0:  1791 4a30 8518 99a9 b516 67e7 ed56 d1d1  ..J0......g..V..
-//     0x04e0:  239d dfda 11c5 0afe e58a b6e0 fb66 ab5c  #............f.\
-//     0x04f0:  f590 dcd6 457d 01d1 83f5 a9f0 cdb2 9c14  ....E}..........
-//     0x0500:  ff66 f10c d428 a07b 34e3 d600 91f2 aca7  .f...(.{4.......
-//     0x0510:  4e1f f3ac a96e 2aa3 ec9b 448c 748d f858  N....n*...D.t..X
-//     0x0520:  131c d496 af9b f5f0 d2f5 57ac 0b64 55a1  ..........W..dU.
-//     0x0530:  860e 5ad0 3e62 26b5 9e17 f51f 88c1 02e3  ..Z.>b&.........
-//     0x0540:  4a38 de70 3216 6f88 5d1e f429 ee19 4121  J8.p2.o.]..)..A!
-//     0x0550:  f571 84ac 3789 141f 1798 90b1 8373 2499  .q..7........s$.
-//     0x0560:  c131 b13f f3a3 9a07 aef1 bfe8 8cd7 8c2e  .1.?............
-//     0x0570:  ba35 dfc5 eb07 013c 7621 6481 bdfb 6233  .5.....<v!d...b3
-//     0x0580:  22e2 0f05 7e15 0417 67e4 2632 5207 28a6  "...~...g.&2R.(.
-//     0x0590:  8e88 9423 de54 5412 b53e fd8d d47a de58  ...#.TT..>...z.X
-//     0x05a0:  a1b2 6e08 d06d dc21 1eda 14a0 a2f7 1701  ..n..m.!........
-//     0x05b0:  a5e0 dfd7 871f 595d db43 70f5 bab3 b732  ......Y].Cp....2
-//     0x05c0:  6275 da15 b203 dac7 321f 8d61 11bd 30    bu......2..a..0
-var testAnotherMalformedDNS = []byte{
-       0x00, 0x55, 0x22, 0xaf, 0xc6, 0x37, 0x00, 0x22, 0x55, 0xac, 0xde, 0xac, 0x08, 0x00, 0x45, 0x00,
-       0x05, 0xc1, 0x2e, 0xea, 0x40, 0x00, 0x36, 0x11, 0xfb, 0xd1, 0x0a, 0x4d, 0x00, 0x1d, 0x0a, 0x01,
-       0x00, 0x06, 0x00, 0x35, 0xa5, 0x28, 0x05, 0xad, 0x00, 0xa2, 0x34, 0xb3, 0x33, 0x13, 0x5c, 0x1f,
-       0x2d, 0xc8, 0x74, 0x2e, 0xcb, 0x77, 0x2d, 0xa0, 0xbc, 0x2e, 0x56, 0x8b, 0xf7, 0x51, 0xf3, 0x22,
-       0x85, 0x1d, 0xab, 0x17, 0x78, 0x10, 0x00, 0x9c, 0x1c, 0xef, 0xc6, 0xd5, 0x06, 0x05, 0x37, 0xf4,
-       0x96, 0x9b, 0xc6, 0x5e, 0x48, 0x3e, 0x47, 0x06, 0xf5, 0x8b, 0xdf, 0x36, 0x47, 0xdb, 0xea, 0xe2,
-       0x88, 0x5d, 0x68, 0x8a, 0xc5, 0xa5, 0x57, 0x05, 0xaa, 0xa8, 0x95, 0xeb, 0x93, 0xa4, 0xd8, 0x5a,
-       0xc9, 0xaf, 0x26, 0x1f, 0x78, 0x16, 0xa3, 0x54, 0x2d, 0x23, 0xd8, 0x4a, 0x57, 0x9c, 0x48, 0x76,
-       0xa3, 0x91, 0x43, 0xdb, 0x5c, 0x41, 0x19, 0x1a, 0x92, 0xb8, 0xdc, 0xdd, 0x68, 0x39, 0xee, 0xf5,
-       0x72, 0x8e, 0x13, 0xe0, 0x06, 0x79, 0x6f, 0x47, 0x88, 0xa0, 0x25, 0xb9, 0x44, 0xd8, 0xf8, 0xe7,
-       0x8a, 0xfe, 0x0b, 0xfa, 0xf8, 0x11, 0x8d, 0xa5, 0xf8, 0xa3, 0x1f, 0x8e, 0xd2, 0x3b, 0xfe, 0x12,
-       0xd9, 0x43, 0x93, 0x27, 0x92, 0xad, 0x44, 0x10, 0x18, 0x3e, 0x68, 0x8d, 0xb0, 0x6d, 0x53, 0x91,
-       0x69, 0x5b, 0xe4, 0x9f, 0x8f, 0x1e, 0xc0, 0x75, 0xd0, 0x43, 0xaf, 0xe0, 0x11, 0x74, 0x9d, 0xb0,
-       0x06, 0xb0, 0xf0, 0x1e, 0xb8, 0x5b, 0x3c, 0x84, 0x94, 0x5e, 0x06, 0xd0, 0xb2, 0x0f, 0x9e, 0xaa,
-       0x12, 0x3d, 0x0a, 0xb0, 0x2a, 0x55, 0x30, 0x9c, 0x0e, 0xe9, 0x3e, 0x5e, 0xdb, 0x2f, 0xf3, 0x77,
-       0xd7, 0xf1, 0x9b, 0xae, 0x37, 0x3d, 0x33, 0x16, 0x07, 0x96, 0xb8, 0x0e, 0xdd, 0x18, 0x51, 0x73,
-       0xb2, 0x8d, 0x84, 0xfd, 0x18, 0x12, 0xd8, 0x7b, 0x42, 0xc8, 0x5f, 0x11, 0x4d, 0xb6, 0xb2, 0x69,
-       0x1c, 0x42, 0x4a, 0xea, 0xd5, 0xa4, 0x64, 0x4b, 0x6c, 0x00, 0xf0, 0xc0, 0xfc, 0xee, 0x71, 0xa7,
-       0xe7, 0xf0, 0x71, 0x9c, 0xa2, 0x07, 0xdc, 0x5c, 0xa6, 0xfa, 0xf0, 0x05, 0xa3, 0x38, 0x7f, 0xf0,
-       0x5b, 0xeb, 0x3b, 0x4d, 0x89, 0x52, 0x2a, 0x46, 0xd4, 0x7b, 0xa5, 0xa2, 0xe1, 0xfb, 0x9e, 0x76,
-       0xc8, 0x15, 0x62, 0x58, 0x50, 0xf4, 0x69, 0x97, 0xba, 0xd5, 0xb4, 0x79, 0x2d, 0x06, 0xeb, 0xbb,
-       0x2c, 0xac, 0x2e, 0xcc, 0xe4, 0xf0, 0x1f, 0x94, 0xce, 0x9f, 0x18, 0x6c, 0x61, 0xda, 0x96, 0x81,
-       0x34, 0x5c, 0x4d, 0x88, 0xef, 0xc7, 0x03, 0x7b, 0xfb, 0xe3, 0x44, 0x02, 0xea, 0x06, 0x2e, 0x5d,
-       0x2e, 0x6e, 0x48, 0x60, 0xe1, 0x80, 0x3e, 0xf7, 0xc0, 0x06, 0x0a, 0xd1, 0xeb, 0xb9, 0xc4, 0xff,
-       0xde, 0xe2, 0xf2, 0x1c, 0x02, 0xc2, 0x75, 0x1a, 0xde, 0xd8, 0xae, 0x2e, 0x13, 0xa9, 0x3f, 0xa2,
-       0x39, 0x2a, 0x8b, 0x54, 0x11, 0xb2, 0x2b, 0x4e, 0x2b, 0xf1, 0x47, 0x80, 0xdb, 0x9f, 0x8c, 0x10,
-       0xac, 0x6f, 0x61, 0xb0, 0x7b, 0x19, 0x42, 0x3f, 0x07, 0xe5, 0x46, 0x28, 0xb8, 0x70, 0xf7, 0x5d,
-       0x09, 0xa3, 0x63, 0xb2, 0x77, 0xaf, 0x59, 0x85, 0xa0, 0xae, 0x51, 0xd8, 0x24, 0x3f, 0xa7, 0xc8,
-       0xab, 0x08, 0x7f, 0xc6, 0x02, 0x17, 0xc0, 0x9f, 0xc4, 0x12, 0x0c, 0x45, 0xe6, 0xaa, 0x96, 0xbf,
-       0x18, 0x4c, 0x43, 0x07, 0x1f, 0x1f, 0xc4, 0xf4, 0x77, 0x34, 0xda, 0x31, 0x20, 0x88, 0x66, 0x2b,
-       0x44, 0xc5, 0x09, 0x6f, 0x1d, 0x1d, 0x2d, 0xc5, 0xff, 0xd6, 0x86, 0x7d, 0x9f, 0xc5, 0x7b, 0x45,
-       0xf9, 0x49, 0x7d, 0xd9, 0x38, 0xde, 0x0d, 0x51, 0xac, 0x2a, 0x32, 0xfc, 0xf5, 0x0b, 0x1b, 0xbe,
-       0x1c, 0x4b, 0x54, 0x41, 0xfb, 0xf3, 0x08, 0x21, 0x6c, 0x28, 0x45, 0x30, 0x56, 0x76, 0x1d, 0x27,
-       0x50, 0x87, 0x46, 0x6c, 0x3d, 0x5b, 0x45, 0xa6, 0xaf, 0x7f, 0x91, 0x7a, 0x6d, 0x43, 0x66, 0xc2,
-       0x03, 0x6a, 0x8b, 0xef, 0xca, 0x60, 0x9b, 0x13, 0x8d, 0x29, 0x9f, 0xda, 0x82, 0xfa, 0x01, 0xb1,
-       0xdf, 0x8f, 0x1f, 0x83, 0xc7, 0x1d, 0x63, 0x0f, 0x34, 0x9e, 0x50, 0x8c, 0x9f, 0x7a, 0xe3, 0xda,
-       0xa1, 0x14, 0x36, 0x22, 0x9d, 0xf8, 0x99, 0x26, 0x4d, 0xac, 0x41, 0x50, 0xd5, 0x05, 0x7b, 0x3a,
-       0x6f, 0xed, 0xfc, 0x75, 0x6b, 0x4f, 0x2d, 0x60, 0x8a, 0x89, 0x76, 0x7d, 0x9a, 0xf0, 0x89, 0x6e,
-       0x90, 0x7d, 0x1a, 0xda, 0xde, 0xf3, 0x34, 0x5c, 0x0d, 0x81, 0x28, 0x3c, 0xa2, 0x4f, 0xfc, 0xbb,
-       0xbb, 0xdd, 0xb7, 0xb3, 0xe3, 0xbb, 0x9f, 0x1b, 0xd9, 0x66, 0x51, 0xb7, 0x82, 0x17, 0x7f, 0xa0,
-       0xe8, 0x28, 0xd3, 0xca, 0xa6, 0xf1, 0x53, 0x2f, 0x16, 0x4e, 0xe4, 0x05, 0xbb, 0x3b, 0x0d, 0xe3,
-       0x98, 0x5d, 0x6e, 0x89, 0xd8, 0x25, 0xeb, 0xc6, 0xd8, 0xba, 0x51, 0x90, 0xa1, 0x14, 0xc6, 0xa3,
-       0x18, 0xb4, 0x8a, 0xa7, 0x18, 0x1a, 0x01, 0xac, 0xcd, 0xc0, 0x80, 0x48, 0xea, 0x72, 0xa5, 0xe3,
-       0xe3, 0x7a, 0xdc, 0x57, 0x65, 0xcd, 0xb7, 0x87, 0x39, 0xe6, 0xc3, 0x9e, 0x31, 0x7b, 0x45, 0xd8,
-       0x47, 0x5c, 0x05, 0xba, 0xe8, 0xf8, 0x82, 0x24, 0x5a, 0x85, 0x27, 0xb8, 0x15, 0x84, 0x8d, 0x78,
-       0x62, 0xb6, 0x64, 0x95, 0xac, 0x10, 0x33, 0x8f, 0x11, 0x22, 0xf2, 0xff, 0x04, 0x3e, 0x9e, 0x2a,
-       0x10, 0x58, 0xa9, 0x10, 0x57, 0x92, 0x6f, 0xcd, 0x9a, 0x96, 0x61, 0x83, 0x67, 0x08, 0x8f, 0x70,
-       0xed, 0xc6, 0xa6, 0x7c, 0x64, 0xff, 0x50, 0xfa, 0x52, 0x0b, 0xde, 0x94, 0xc8, 0x2c, 0xc4, 0xd6,
-       0x7d, 0x8f, 0x0f, 0xd5, 0x2f, 0x0d, 0x98, 0x33, 0x7c, 0x6c, 0xbe, 0x10, 0xa4, 0xe5, 0xdc, 0x99,
-       0xa4, 0x67, 0xef, 0x5f, 0xb3, 0x5b, 0xc1, 0x1c, 0xe2, 0x3c, 0x13, 0x1a, 0x48, 0xb2, 0x9c, 0xef,
-       0x5a, 0x2f, 0xfe, 0xce, 0xdd, 0x9e, 0x2a, 0xea, 0x0d, 0xb9, 0xfa, 0xf3, 0xa6, 0xef, 0xb2, 0x9d,
-       0xe8, 0x5d, 0xa4, 0x10, 0xdd, 0x6a, 0x68, 0x06, 0x3f, 0xc6, 0x16, 0x94, 0x17, 0x9f, 0xcb, 0x4b,
-       0x08, 0xc4, 0x86, 0xb2, 0x07, 0x13, 0xcd, 0xdb, 0xb2, 0x57, 0xd5, 0x6b, 0xfe, 0x82, 0x7d, 0x82,
-       0x0d, 0x1f, 0x6d, 0xc9, 0x67, 0xb2, 0xd2, 0xa1, 0x67, 0x91, 0x4f, 0x38, 0xed, 0xf9, 0x49, 0x1f,
-       0x2c, 0x02, 0x35, 0xf5, 0x81, 0x65, 0xec, 0xc3, 0xbc, 0x6a, 0xb6, 0x31, 0x3c, 0x7e, 0x1a, 0xd4,
-       0x8e, 0x27, 0xf9, 0x62, 0xf9, 0x42, 0x11, 0xb5, 0x1b, 0x45, 0x9b, 0xac, 0xb4, 0x74, 0x3c, 0x6e,
-       0x68, 0x32, 0x30, 0x75, 0xbe, 0x6d, 0xac, 0x0d, 0xa8, 0xa0, 0x7d, 0x47, 0xa6, 0xef, 0x4e, 0x43,
-       0x6b, 0x9a, 0x30, 0x97, 0x8a, 0x8b, 0x82, 0xa3, 0x95, 0x15, 0x36, 0x2c, 0xf7, 0xd6, 0xa3, 0x7f,
-       0x73, 0x13, 0x11, 0x99, 0xa5, 0xf3, 0x03, 0xdc, 0xbc, 0xc9, 0xfb, 0x10, 0xc2, 0x3d, 0xee, 0xb9,
-       0x78, 0xff, 0xc8, 0xf3, 0x0d, 0x38, 0x9f, 0x74, 0xce, 0xec, 0xb7, 0xae, 0x63, 0xe3, 0x34, 0x24,
-       0xb7, 0x83, 0xf1, 0x06, 0x01, 0x1f, 0x66, 0x6b, 0xbf, 0x2d, 0xab, 0xc8, 0xea, 0x10, 0x57, 0xa1,
-       0x7c, 0xf2, 0x4a, 0x3f, 0x57, 0xca, 0x13, 0x86, 0xbf, 0xba, 0x27, 0xe5, 0x46, 0x62, 0x81, 0xc8,
-       0x04, 0x1e, 0x18, 0x20, 0xb3, 0xd5, 0xc3, 0x99, 0xcd, 0x4d, 0x22, 0x2f, 0x29, 0xf0, 0xb9, 0x94,
-       0x86, 0x5a, 0xe6, 0xe2, 0x16, 0x86, 0x32, 0x61, 0xb0, 0xcd, 0xca, 0xaf, 0x07, 0xec, 0xd0, 0xbc,
-       0xaf, 0xb8, 0x3c, 0xf0, 0x51, 0xc1, 0x6c, 0x7a, 0x63, 0x83, 0x6b, 0x3a, 0xff, 0x47, 0x95, 0x51,
-       0x10, 0x99, 0x52, 0x5f, 0x35, 0x5e, 0x46, 0x84, 0xbd, 0x34, 0xec, 0x12, 0x88, 0xc9, 0xdc, 0xc2,
-       0xd1, 0x1c, 0x82, 0x6d, 0xf1, 0xdf, 0x37, 0xe6, 0xf0, 0x8f, 0x6c, 0xe8, 0x81, 0x7d, 0xbd, 0xc3,
-       0x20, 0xb9, 0xa2, 0x74, 0xc6, 0x45, 0xc6, 0x7d, 0xf2, 0x99, 0xfe, 0xf9, 0x28, 0x7f, 0x09, 0xee,
-       0xac, 0x67, 0x68, 0x72, 0xa1, 0x26, 0xb1, 0xd3, 0x92, 0x2c, 0x4c, 0x2a, 0x0e, 0xc9, 0xb6, 0xd4,
-       0xfb, 0x59, 0x61, 0x63, 0xd1, 0xc4, 0x17, 0x08, 0x8d, 0x94, 0xbc, 0x3d, 0xbe, 0x5e, 0xae, 0x29,
-       0x51, 0xff, 0xa7, 0x65, 0x9d, 0xf6, 0xae, 0x35, 0xed, 0x6b, 0x05, 0x55, 0x93, 0x3f, 0x3e, 0xd6,
-       0x25, 0x9b, 0xd9, 0x3e, 0xf8, 0x6f, 0x60, 0x88, 0x0c, 0x4e, 0x35, 0x7b, 0x5c, 0x67, 0x7d, 0x93,
-       0xa6, 0x95, 0x1a, 0x42, 0xe1, 0xe1, 0xef, 0x91, 0x14, 0xd7, 0xb7, 0xb7, 0x0c, 0xa4, 0x2d, 0xda,
-       0x6a, 0xc1, 0x77, 0x1e, 0x25, 0xc1, 0xa5, 0x78, 0x4c, 0xa8, 0x6f, 0xd8, 0xde, 0x04, 0x1c, 0x09,
-       0xdf, 0x49, 0xf1, 0x79, 0x6a, 0x58, 0x2b, 0x45, 0x72, 0x31, 0x30, 0x7f, 0xbc, 0x67, 0xe5, 0xe7,
-       0xc5, 0xcd, 0xfe, 0xc0, 0xb0, 0x21, 0x50, 0x8e, 0x4f, 0xc5, 0xf8, 0x21, 0xf7, 0x34, 0x90, 0xbc,
-       0xc8, 0x7f, 0x14, 0xf1, 0x2e, 0x5c, 0xd1, 0x7b, 0x18, 0x18, 0x5b, 0x4a, 0x6b, 0x68, 0x02, 0x12,
-       0x17, 0x91, 0x4a, 0x30, 0x85, 0x18, 0x99, 0xa9, 0xb5, 0x16, 0x67, 0xe7, 0xed, 0x56, 0xd1, 0xd1,
-       0x23, 0x9d, 0xdf, 0xda, 0x11, 0xc5, 0x0a, 0xfe, 0xe5, 0x8a, 0xb6, 0xe0, 0xfb, 0x66, 0xab, 0x5c,
-       0xf5, 0x90, 0xdc, 0xd6, 0x45, 0x7d, 0x01, 0xd1, 0x83, 0xf5, 0xa9, 0xf0, 0xcd, 0xb2, 0x9c, 0x14,
-       0xff, 0x66, 0xf1, 0x0c, 0xd4, 0x28, 0xa0, 0x7b, 0x34, 0xe3, 0xd6, 0x00, 0x91, 0xf2, 0xac, 0xa7,
-       0x4e, 0x1f, 0xf3, 0xac, 0xa9, 0x6e, 0x2a, 0xa3, 0xec, 0x9b, 0x44, 0x8c, 0x74, 0x8d, 0xf8, 0x58,
-       0x13, 0x1c, 0xd4, 0x96, 0xaf, 0x9b, 0xf5, 0xf0, 0xd2, 0xf5, 0x57, 0xac, 0x0b, 0x64, 0x55, 0xa1,
-       0x86, 0x0e, 0x5a, 0xd0, 0x3e, 0x62, 0x26, 0xb5, 0x9e, 0x17, 0xf5, 0x1f, 0x88, 0xc1, 0x02, 0xe3,
-       0x4a, 0x38, 0xde, 0x70, 0x32, 0x16, 0x6f, 0x88, 0x5d, 0x1e, 0xf4, 0x29, 0xee, 0x19, 0x41, 0x21,
-       0xf5, 0x71, 0x84, 0xac, 0x37, 0x89, 0x14, 0x1f, 0x17, 0x98, 0x90, 0xb1, 0x83, 0x73, 0x24, 0x99,
-       0xc1, 0x31, 0xb1, 0x3f, 0xf3, 0xa3, 0x9a, 0x07, 0xae, 0xf1, 0xbf, 0xe8, 0x8c, 0xd7, 0x8c, 0x2e,
-       0xba, 0x35, 0xdf, 0xc5, 0xeb, 0x07, 0x01, 0x3c, 0x76, 0x21, 0x64, 0x81, 0xbd, 0xfb, 0x62, 0x33,
-       0x22, 0xe2, 0x0f, 0x05, 0x7e, 0x15, 0x04, 0x17, 0x67, 0xe4, 0x26, 0x32, 0x52, 0x07, 0x28, 0xa6,
-       0x8e, 0x88, 0x94, 0x23, 0xde, 0x54, 0x54, 0x12, 0xb5, 0x3e, 0xfd, 0x8d, 0xd4, 0x7a, 0xde, 0x58,
-       0xa1, 0xb2, 0x6e, 0x08, 0xd0, 0x6d, 0xdc, 0x21, 0x1e, 0xda, 0x14, 0xa0, 0xa2, 0xf7, 0x17, 0x01,
-       0xa5, 0xe0, 0xdf, 0xd7, 0x87, 0x1f, 0x59, 0x5d, 0xdb, 0x43, 0x70, 0xf5, 0xba, 0xb3, 0xb7, 0x32,
-       0x62, 0x75, 0xda, 0x15, 0xb2, 0x03, 0xda, 0xc7, 0x32, 0x1f, 0x8d, 0x61, 0x11, 0xbd, 0x30,
-}
-
-func TestAnotherMalformedDNS(t *testing.T) {
-       p := gopacket.NewPacket(testAnotherMalformedDNS, LinkTypeEthernet, testDecodeOptions)
-       if errLayer := p.ErrorLayer(); errLayer == nil {
-               t.Error("No error layer on invalid DNS name")
-       } else if err := errLayer.Error(); !strings.Contains(err.Error(), "offset too high") {
-               t.Errorf("unexpected error message: %v", err)
-       }
-}
-
-// testMalformedDNSAgain is the packet:
-//   12:14:52.702061 IP 10.77.0.4.53 > 10.1.0.41.61610: 12529 updateDA [b2&3=0x5cad] [38274a] [61303q] [1718n] [14913au][|domain]
-//     0x0000:  0055 22af c637 0022 55ac deac 0800 4500  .U"..7."U.....E.
-//     0x0010:  0091 2dff 0000 7811 ffe2 0a4d 0004 0a01  ..-...x....M....
-//     0x0020:  0029 0035 f0aa 007d 5b53 30f1 5cad ef77  .).5...}[S0.\..w
-//     0x0030:  9582 06b6 3a41 357a 8cef cdc0 a732 b800  ....:A5z.....2..
-//     0x0040:  466e 1c30 2e75 95ac c03d 1ed4 8635 2d09  Fn.0.u...=...5-.
-//     0x0050:  2fee 3a82 b4f0 427e 2b6b f870 cc7f c9a1  /.:...B~+k.p....
-//     0x0060:  e6f1 a761 97ec 2ff7 d248 4d95 321c 6e4e  ...a../..HM.2.nN
-//     0x0070:  57fa 6d3d 9ec0 fe3a 6f1e e634 4396 b494  W.m=...:o..4C...
-//     0x0080:  8b7a a929 d7e1 da7c c346 ca77 4890 6bf3  .z.)...|.F.wH.k.
-//     0x0090:  5ecb 7e97 c49d 3564 984f bf7c 8ac1 dd    ^.~...5d.O.|...
-var testMalformedDNSAgain = []byte{
-       0x00, 0x55, 0x22, 0xaf, 0xc6, 0x37, 0x00, 0x22, 0x55, 0xac, 0xde, 0xac, 0x08, 0x00, 0x45, 0x00,
-       0x00, 0x91, 0x2d, 0xff, 0x00, 0x00, 0x78, 0x11, 0xff, 0xe2, 0x0a, 0x4d, 0x00, 0x04, 0x0a, 0x01,
-       0x00, 0x29, 0x00, 0x35, 0xf0, 0xaa, 0x00, 0x7d, 0x5b, 0x53, 0x30, 0xf1, 0x5c, 0xad, 0xef, 0x77,
-       0x95, 0x82, 0x06, 0xb6, 0x3a, 0x41, 0x35, 0x7a, 0x8c, 0xef, 0xcd, 0xc0, 0xa7, 0x32, 0xb8, 0x00,
-       0x46, 0x6e, 0x1c, 0x30, 0x2e, 0x75, 0x95, 0xac, 0xc0, 0x3d, 0x1e, 0xd4, 0x86, 0x35, 0x2d, 0x09,
-       0x2f, 0xee, 0x3a, 0x82, 0xb4, 0xf0, 0x42, 0x7e, 0x2b, 0x6b, 0xf8, 0x70, 0xcc, 0x7f, 0xc9, 0xa1,
-       0xe6, 0xf1, 0xa7, 0x61, 0x97, 0xec, 0x2f, 0xf7, 0xd2, 0x48, 0x4d, 0x95, 0x32, 0x1c, 0x6e, 0x4e,
-       0x57, 0xfa, 0x6d, 0x3d, 0x9e, 0xc0, 0xfe, 0x3a, 0x6f, 0x1e, 0xe6, 0x34, 0x43, 0x96, 0xb4, 0x94,
-       0x8b, 0x7a, 0xa9, 0x29, 0xd7, 0xe1, 0xda, 0x7c, 0xc3, 0x46, 0xca, 0x77, 0x48, 0x90, 0x6b, 0xf3,
-       0x5e, 0xcb, 0x7e, 0x97, 0xc4, 0x9d, 0x35, 0x64, 0x98, 0x4f, 0xbf, 0x7c, 0x8a, 0xc1, 0xdd,
-}
-
-func TestMalformedDNSAgain(t *testing.T) {
-       p := gopacket.NewPacket(testMalformedDNSAgain, LinkTypeEthernet, testDecodeOptions)
-       if errLayer := p.ErrorLayer(); errLayer == nil {
-               t.Error("No error layer on invalid DNS name")
-       } else if err := errLayer.Error(); !strings.Contains(err.Error(), "walked out of range") {
-               t.Errorf("unexpected error message: %v", err)
-       }
-}
-
-// testMalformedDNSOhGodMakeItStop is the packet:
-//   15:08:24.430906 IP 10.77.0.19.53 > 10.1.0.19.50635: 12397 zoneInit% [b2&3=0x7232] [47729a] [46283q] [60247n] [61718au][|domain]
-//     0x0000:  0055 22af c637 0022 55ac deac 0800 4500  .U"..7."U.....E.
-//     0x0010:  0079 c51c 4000 3511 6be4 0a4d 0013 0a01  .y..@.5.k..M....
-//     0x0020:  0013 0035 c5cb 0065 ef45 306d 7232 b4cb  ...5...e.E0mr2..
-//     0x0030:  ba71 eb57 f116 3994 e000 4626 0534 66cc  .q.W..9...F&.4f.
-//     0x0040:  7b32 24f2 eece bca7 20e2 9a2a e1ce e737  {2$........*...7
-//     0x0050:  ac39 5fae 72ec c3ec 284f ca4a 171f 466d  .9_.r...(O.J..Fm
-//     0x0060:  f6c6 84d7 e795 310f 26df 9b59 6db9 21cf  ......1.&..Ym.!.
-//     0x0070:  15cb 30a3 c4cf df23 805a ed1a 0584 4fc3  ..0....#.Z....O.
-//     0x0080:  7fa3 3cb4 e04f e9                        ..<..O.
-var testMalformedDNSOhGodMakeItStop = []byte{
-       0x00, 0x55, 0x22, 0xaf, 0xc6, 0x37, 0x00, 0x22, 0x55, 0xac, 0xde, 0xac, 0x08, 0x00, 0x45, 0x00,
-       0x00, 0x79, 0xc5, 0x1c, 0x40, 0x00, 0x35, 0x11, 0x6b, 0xe4, 0x0a, 0x4d, 0x00, 0x13, 0x0a, 0x01,
-       0x00, 0x13, 0x00, 0x35, 0xc5, 0xcb, 0x00, 0x65, 0xef, 0x45, 0x30, 0x6d, 0x72, 0x32, 0xb4, 0xcb,
-       0xba, 0x71, 0xeb, 0x57, 0xf1, 0x16, 0x39, 0x94, 0xe0, 0x00, 0x46, 0x26, 0x05, 0x34, 0x66, 0xcc,
-       0x7b, 0x32, 0x24, 0xf2, 0xee, 0xce, 0xbc, 0xa7, 0x20, 0xe2, 0x9a, 0x2a, 0xe1, 0xce, 0xe7, 0x37,
-       0xac, 0x39, 0x5f, 0xae, 0x72, 0xec, 0xc3, 0xec, 0x28, 0x4f, 0xca, 0x4a, 0x17, 0x1f, 0x46, 0x6d,
-       0xf6, 0xc6, 0x84, 0xd7, 0xe7, 0x95, 0x31, 0x0f, 0x26, 0xdf, 0x9b, 0x59, 0x6d, 0xb9, 0x21, 0xcf,
-       0x15, 0xcb, 0x30, 0xa3, 0xc4, 0xcf, 0xdf, 0x23, 0x80, 0x5a, 0xed, 0x1a, 0x05, 0x84, 0x4f, 0xc3,
-       0x7f, 0xa3, 0x3c, 0xb4, 0xe0, 0x4f, 0xe9,
-}
-
-func TestMalformedDNSOhGodMakeItStop(t *testing.T) {
-       p := gopacket.NewPacket(testMalformedDNSOhGodMakeItStop, LinkTypeEthernet, testDecodeOptions)
-       if errLayer := p.ErrorLayer(); errLayer == nil {
-               t.Error("No error layer on invalid DNS name")
-       } else if err := errLayer.Error(); !strings.Contains(err.Error(), "offset pointer too high") {
-               t.Errorf("unexpected error message: %v", err)
-       }
-}
-
-// testPacketDNSPanic7 is the packet:
-//   07:56:25.174747 IP 10.77.0.11.53 > 10.1.0.67.55777: 41808*-| 3/7/0 TXT "google-site-verification=DC2uC-T8kD33lINhNzfo0bNBrw-vrCXs5BPF5BXY56g", TXT "v=spf1 include:spf-a.outlook.com include:spf-b.outlook.com ip4:157.55.9.128/25 include:spf.protection.outlook.com include:spf-a.hotmail.com include:_spf-ssg-b.microsoft.com include:_spf-ssg-c.microsoft.com ~all", TXT "google-site-verification=0iLWhIMhXEkeWwWfFU4ursTn-_OvoOjaA0Lr7Pg1sEM" (512)
-//     0x0000:  0055 22af c637 0022 55ac deac 0800 4500  .U"..7."U.....E.
-//     0x0010:  021c b5ca 4000 fa11 b46a 0a4d 000b 0a01  ....@....j.M....
-//     0x0020:  0043 0035 d9e1 0208 afd6 a350 8600 0001  .C.5.......P....
-//     0x0030:  0003 0007 0000 076f 7574 6c6f 6f6b 0363  .......outlook.c
-//     0x0040:  6f6d 0000 1000 01c0 0c00 1000 0100 0001  om..............
-//     0x0050:  2c00 4544 676f 6f67 6c65 2d73 6974 652d  ,.EDgoogle-site-
-//     0x0060:  7665 7269 6669 6361 7469 6f6e 3d44 4332  verification=DC2
-//     0x0070:  7543 2d54 386b 4433 336c 494e 684e 7a66  uC-T8kD33lINhNzf
-//     0x0080:  6f30 624e 4272 772d 7672 4358 7335 4250  o0bNBrw-vrCXs5BP
-//     0x0090:  4635 4258 5935 3667 c00c 0010 0001 0000  F5BXY56g........
-//     0x00a0:  012c 00d3 d276 3d73 7066 3120 696e 636c  .,...v=spf1.incl
-//     0x00b0:  7564 653a 7370 662d 612e 6f75 746c 6f6f  ude:spf-a.outloo
-//     0x00c0:  6b2e 636f 6d20 696e 636c 7564 653a 7370  k.com.include:sp
-//     0x00d0:  662d 622e 6f75 746c 6f6f 6b2e 636f 6d20  f-b.outlook.com.
-//     0x00e0:  6970 343a 3135 372e 3535 2e39 2e31 3238  ip4:157.55.9.128
-//     0x00f0:  2f32 3520 696e 636c 7564 653a 7370 662e  /25.include:spf.
-//     0x0100:  7072 6f74 6563 7469 6f6e 2e6f 7574 6c6f  protection.outlo
-//     0x0110:  6f6b 2e63 6f6d 2069 6e63 6c75 6465 3a73  ok.com.include:s
-//     0x0120:  7066 2d61 2e68 6f74 6d61 696c 2e63 6f6d  pf-a.hotmail.com
-//     0x0130:  2069 6e63 6c75 6465 3a5f 7370 662d 7373  .include:_spf-ss
-//     0x0140:  672d 622e 6d69 6372 6f73 6f66 742e 636f  g-b.microsoft.co
-//     0x0150:  6d20 696e 636c 7564 653a 5f73 7066 2d73  m.include:_spf-s
-//     0x0160:  7367 2d63 2e6d 6963 726f 736f 6674 2e63  sg-c.microsoft.c
-//     0x0170:  6f6d 207e 616c 6cc0 0c00 1000 0100 0001  om.~all.........
-//     0x0180:  2c00 4544 676f 6f67 6c65 2d73 6974 652d  ,.EDgoogle-site-
-//     0x0190:  7665 7269 6669 6361 7469 6f6e 3d30 694c  verification=0iL
-//     0x01a0:  5768 494d 6858 456b 6557 7757 6646 5534  WhIMhXEkeWwWfFU4
-//     0x01b0:  7572 7354 6e2d 5f4f 766f 4f6a 6141 304c  ursTn-_OvoOjaA0L
-//     0x01c0:  7237 5067 3173 454d c00c 0002 0001 0002  r7Pg1sEM........
-//     0x01d0:  a300 000e 036e 7332 046d 7366 7403 6e65  .....ns2.msft.ne
-//     0x01e0:  7400 c00c 0002 0001 0002 a300 0006 036e  t..............n
-//     0x01f0:  7334 c1ae c00c 0002 0001 0002 a300 0006  s4..............
-//     0x0200:  036e 7331 c1ae c00c 0002 0001 0002 a300  .ns1............
-//     0x0210:  0006 036e 7333 c1ae c00c 0002 0001 0002  ...ns3..........
-//     0x0220:  a300 0015 046e 7331 610d                 .....ns1a.
-var testPacketDNSPanic7 = []byte{
-       0x00, 0x55, 0x22, 0xaf, 0xc6, 0x37, 0x00, 0x22, 0x55, 0xac, 0xde, 0xac, 0x08, 0x00, 0x45, 0x00,
-       0x02, 0x1c, 0xb5, 0xca, 0x40, 0x00, 0xfa, 0x11, 0xb4, 0x6a, 0x0a, 0x4d, 0x00, 0x0b, 0x0a, 0x01,
-       0x00, 0x43, 0x00, 0x35, 0xd9, 0xe1, 0x02, 0x08, 0xaf, 0xd6, 0xa3, 0x50, 0x86, 0x00, 0x00, 0x01,
-       0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x07, 0x6f, 0x75, 0x74, 0x6c, 0x6f, 0x6f, 0x6b, 0x03, 0x63,
-       0x6f, 0x6d, 0x00, 0x00, 0x10, 0x00, 0x01, 0xc0, 0x0c, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x01,
-       0x2c, 0x00, 0x45, 0x44, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2d, 0x73, 0x69, 0x74, 0x65, 0x2d,
-       0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x44, 0x43, 0x32,
-       0x75, 0x43, 0x2d, 0x54, 0x38, 0x6b, 0x44, 0x33, 0x33, 0x6c, 0x49, 0x4e, 0x68, 0x4e, 0x7a, 0x66,
-       0x6f, 0x30, 0x62, 0x4e, 0x42, 0x72, 0x77, 0x2d, 0x76, 0x72, 0x43, 0x58, 0x73, 0x35, 0x42, 0x50,
-       0x46, 0x35, 0x42, 0x58, 0x59, 0x35, 0x36, 0x67, 0xc0, 0x0c, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00,
-       0x01, 0x2c, 0x00, 0xd3, 0xd2, 0x76, 0x3d, 0x73, 0x70, 0x66, 0x31, 0x20, 0x69, 0x6e, 0x63, 0x6c,
-       0x75, 0x64, 0x65, 0x3a, 0x73, 0x70, 0x66, 0x2d, 0x61, 0x2e, 0x6f, 0x75, 0x74, 0x6c, 0x6f, 0x6f,
-       0x6b, 0x2e, 0x63, 0x6f, 0x6d, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x3a, 0x73, 0x70,
-       0x66, 0x2d, 0x62, 0x2e, 0x6f, 0x75, 0x74, 0x6c, 0x6f, 0x6f, 0x6b, 0x2e, 0x63, 0x6f, 0x6d, 0x20,
-       0x69, 0x70, 0x34, 0x3a, 0x31, 0x35, 0x37, 0x2e, 0x35, 0x35, 0x2e, 0x39, 0x2e, 0x31, 0x32, 0x38,
-       0x2f, 0x32, 0x35, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x3a, 0x73, 0x70, 0x66, 0x2e,
-       0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x75, 0x74, 0x6c, 0x6f,
-       0x6f, 0x6b, 0x2e, 0x63, 0x6f, 0x6d, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x3a, 0x73,
-       0x70, 0x66, 0x2d, 0x61, 0x2e, 0x68, 0x6f, 0x74, 0x6d, 0x61, 0x69, 0x6c, 0x2e, 0x63, 0x6f, 0x6d,
-       0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x3a, 0x5f, 0x73, 0x70, 0x66, 0x2d, 0x73, 0x73,
-       0x67, 0x2d, 0x62, 0x2e, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x2e, 0x63, 0x6f,
-       0x6d, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x3a, 0x5f, 0x73, 0x70, 0x66, 0x2d, 0x73,
-       0x73, 0x67, 0x2d, 0x63, 0x2e, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x2e, 0x63,
-       0x6f, 0x6d, 0x20, 0x7e, 0x61, 0x6c, 0x6c, 0xc0, 0x0c, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x01,
-       0x2c, 0x00, 0x45, 0x44, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2d, 0x73, 0x69, 0x74, 0x65, 0x2d,
-       0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x30, 0x69, 0x4c,
-       0x57, 0x68, 0x49, 0x4d, 0x68, 0x58, 0x45, 0x6b, 0x65, 0x57, 0x77, 0x57, 0x66, 0x46, 0x55, 0x34,
-       0x75, 0x72, 0x73, 0x54, 0x6e, 0x2d, 0x5f, 0x4f, 0x76, 0x6f, 0x4f, 0x6a, 0x61, 0x41, 0x30, 0x4c,
-       0x72, 0x37, 0x50, 0x67, 0x31, 0x73, 0x45, 0x4d, 0xc0, 0x0c, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02,
-       0xa3, 0x00, 0x00, 0x0e, 0x03, 0x6e, 0x73, 0x32, 0x04, 0x6d, 0x73, 0x66, 0x74, 0x03, 0x6e, 0x65,
-       0x74, 0x00, 0xc0, 0x0c, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0xa3, 0x00, 0x00, 0x06, 0x03, 0x6e,
-       0x73, 0x34, 0xc1, 0xae, 0xc0, 0x0c, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0xa3, 0x00, 0x00, 0x06,
-       0x03, 0x6e, 0x73, 0x31, 0xc1, 0xae, 0xc0, 0x0c, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0xa3, 0x00,
-       0x00, 0x06, 0x03, 0x6e, 0x73, 0x33, 0xc1, 0xae, 0xc0, 0x0c, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02,
-       0xa3, 0x00, 0x00, 0x15, 0x04, 0x6e, 0x73, 0x31, 0x61, 0x0d,
-}
-
-func TestPacketDNSPanic7(t *testing.T) {
-       p := gopacket.NewPacket(testPacketDNSPanic7, LinkTypeEthernet, testDecodeOptions)
-       if errLayer := p.ErrorLayer(); errLayer == nil {
-               t.Error("No error layer on invalid DNS name")
-       } else if err := errLayer.Error(); !strings.Contains(err.Error(), "resource record length exceeds data") {
-               t.Errorf("unexpected error message: %v", err)
-       }
-}
diff --git a/vendor/github.com/google/gopacket/layers/dot11_test.go b/vendor/github.com/google/gopacket/layers/dot11_test.go
deleted file mode 100644 (file)
index b0299fc..0000000
+++ /dev/null
@@ -1,495 +0,0 @@
-// Copyright 2014, Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
-       "bytes"
-       "net"
-       "reflect"
-       "testing"
-
-       "github.com/google/gopacket"
-)
-
-// Generator: python layers/test_creator.py --layerType=LayerTypeRadioTap --linkType=LinkTypeIEEE80211Radio --name=Dot11%s ~/Downloads/mesh.pcap
-// http://wiki.wireshark.org/SampleCaptures#Sample_Captures
-
-// testPacketDot11CtrlCTS is the packet:
-//   09:28:41.830560 20604983us tsft short preamble 24.0 Mb/s 5240 MHz 11a -79dB signal -92dB noise antenna 1 Clear-To-Send RA:d8:a2:5e:97:61:c1
-//     0x0000:  0000 1900 6f08 0000 3768 3a01 0000 0000  ....o...7h:.....
-//     0x0010:  1230 7814 4001 b1a4 01c4 0094 00d8 a25e  .0x.@..........^
-//     0x0020:  9761 c136 5095 8e                        .a.6P..
-
-var testPacketDot11CtrlCTS = []byte{
-       0x00, 0x00, 0x19, 0x00, 0x6f, 0x08, 0x00, 0x00, 0x37, 0x68, 0x3a, 0x01, 0x00, 0x00, 0x00, 0x00,
-       0x12, 0x30, 0x78, 0x14, 0x40, 0x01, 0xb1, 0xa4, 0x01, 0xc4, 0x00, 0x94, 0x00, 0xd8, 0xa2, 0x5e,
-       0x97, 0x61, 0xc1, 0x36, 0x50, 0x95, 0x8e,
-}
-
-func TestPacketDot11CtrlCTS(t *testing.T) {
-       p := gopacket.NewPacket(testPacketDot11CtrlCTS, LinkTypeIEEE80211Radio, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeRadioTap, LayerTypeDot11}, t)
-
-       if got, ok := p.Layer(LayerTypeRadioTap).(*RadioTap); ok {
-               want := &RadioTap{
-                       BaseLayer: BaseLayer{
-                               Contents: []uint8{0x0, 0x0, 0x19, 0x0, 0x6f, 0x8, 0x0, 0x0, 0x37, 0x68, 0x3a, 0x1, 0x0, 0x0, 0x0, 0x0, 0x12, 0x30, 0x78, 0x14, 0x40, 0x1, 0xb1, 0xa4, 0x1},
-                               Payload:  []uint8{0xc4, 0x0, 0x94, 0x0, 0xd8, 0xa2, 0x5e, 0x97, 0x61, 0xc1, 0x36, 0x50, 0x95, 0x8e},
-                       },
-                       Version:          0x0,
-                       Length:           0x19,
-                       Present:          0x86f,
-                       TSFT:             0x13a6837,
-                       Flags:            0x12,
-                       Rate:             0x30,
-                       ChannelFrequency: 0x1478,
-                       ChannelFlags:     0x140,
-                       FHSS:             0x0,
-                       DBMAntennaSignal: -79,
-                       DBMAntennaNoise:  -92,
-                       LockQuality:      0x0,
-                       TxAttenuation:    0x0,
-                       DBTxAttenuation:  0x0,
-                       DBMTxPower:       0,
-                       Antenna:          1,
-                       DBAntennaSignal:  0x0,
-                       DBAntennaNoise:   0x0,
-               }
-
-               if !reflect.DeepEqual(got, want) {
-                       t.Errorf("RadioTap packet processing failed:\ngot  :\n%#v\n\nwant :\n%#v\n\n", got, want)
-               }
-       }
-
-       if got, ok := p.Layer(LayerTypeDot11).(*Dot11); ok {
-               if !got.ChecksumValid() {
-                       t.Errorf("Dot11 packet processing failed:\nchecksum failed. got  :\n%#v\n\n", got)
-               }
-
-               want := &Dot11{
-                       BaseLayer: BaseLayer{
-                               Contents: []uint8{0xc4, 0x0, 0x94, 0x0, 0xd8, 0xa2, 0x5e, 0x97, 0x61, 0xc1},
-                               Payload:  []uint8{},
-                       },
-                       Type:       Dot11TypeCtrlCTS,
-                       Proto:      0x0,
-                       Flags:      0x0,
-                       DurationID: 0x94,
-                       Address1:   net.HardwareAddr{0xd8, 0xa2, 0x5e, 0x97, 0x61, 0xc1}, // check
-                       Address2:   net.HardwareAddr(nil),
-                       Address3:   net.HardwareAddr(nil),
-                       Address4:   net.HardwareAddr(nil),
-                       Checksum:   0x8e955036,
-               }
-
-               if !reflect.DeepEqual(got, want) {
-                       t.Errorf("Dot11 packet processing failed:\ngot  :\n%#v\n\nwant :\n%#v\n\n", got, want)
-               }
-       }
-}
-
-func BenchmarkDecodePacketDot11CtrlCTS(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testPacketDot11CtrlCTS, LinkTypeIEEE80211Radio, gopacket.NoCopy)
-       }
-}
-
-// testPacketDot11MgmtBeacon is the packet:
-//   15:44:56.531833 6.0 Mb/s 2412 MHz 11g -81dB signal antenna 5 Beacon (Wi2) [6.0* 9.0 12.0* 18.0 24.0* 36.0 48.0 54.0 Mbit] ESS CH: 1
-//     0x0000:  0000 1200 2e48 0000 100c 6c09 c000 af05  .....H....l.....
-//     0x0010:  0000 8000 0000 ffff ffff ffff c08a de01  ................
-//     0x0020:  11b8 c08a de01 11b8 f097 80f1 30bc 1300  ............0...
-//     0x0030:  0000 6400 2104 0003 5769 3201 088c 1298  ..d.!...Wi2.....
-//     0x0040:  24b0 4860 6c03 0101 0504 0001 0000 2a01  $.H`l.........*.
-//     0x0050:  00dd 1800 50f2 0201 0181 0007 a400 0023  ....P..........#
-//     0x0060:  a400 0042 435e 0062 322f 00dd 1e00 904c  ...BC^.b2/.....L
-//     0x0070:  338c 011b ffff 0000 0000 0000 0000 0000  3...............
-//     0x0080:  1000 0000 0000 0000 0000 002d 1a8c 011b  ...........-....
-//     0x0090:  ffff 0000 0000 0000 0000 0000 1000 0000  ................
-//     0x00a0:  0000 0000 0000 00dd 1a00 904c 3401 0000  ...........L4...
-//     0x00b0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
-//     0x00c0:  0000 003d 1601 0000 0000 0000 0000 0000  ...=............
-//     0x00d0:  0000 0000 0000 0000 0000 007f 0400 0000  ................
-//     0x00e0:  00dd 0800 1392 0100 0185 0094 0b90 15    ...............
-var testPacketDot11MgmtBeacon = []byte{
-       0x00, 0x00, 0x12, 0x00, 0x2e, 0x48, 0x00, 0x00, 0x10, 0x0c, 0x6c, 0x09, 0xc0, 0x00, 0xaf, 0x05,
-       0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x8a, 0xde, 0x01,
-       0x11, 0xb8, 0xc0, 0x8a, 0xde, 0x01, 0x11, 0xb8, 0xf0, 0x97, 0x80, 0xf1, 0x30, 0xbc, 0x13, 0x00,
-       0x00, 0x00, 0x64, 0x00, 0x21, 0x04, 0x00, 0x03, 0x57, 0x69, 0x32, 0x01, 0x08, 0x8c, 0x12, 0x98,
-       0x24, 0xb0, 0x48, 0x60, 0x6c, 0x03, 0x01, 0x01, 0x05, 0x04, 0x00, 0x01, 0x00, 0x00, 0x2a, 0x01,
-       0x00, 0xdd, 0x18, 0x00, 0x50, 0xf2, 0x02, 0x01, 0x01, 0x81, 0x00, 0x07, 0xa4, 0x00, 0x00, 0x23,
-       0xa4, 0x00, 0x00, 0x42, 0x43, 0x5e, 0x00, 0x62, 0x32, 0x2f, 0x00, 0xdd, 0x1e, 0x00, 0x90, 0x4c,
-       0x33, 0x8c, 0x01, 0x1b, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x1a, 0x8c, 0x01, 0x1b,
-       0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdd, 0x1a, 0x00, 0x90, 0x4c, 0x34, 0x01, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x3d, 0x16, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x04, 0x00, 0x00, 0x00,
-       0x00, 0xdd, 0x08, 0x00, 0x13, 0x92, 0x01, 0x00, 0x01, 0x85, 0x00, 0x94, 0x0b, 0x90, 0x15,
-}
-
-func TestPacketDot11MgmtBeacon(t *testing.T) {
-       p := gopacket.NewPacket(testPacketDot11MgmtBeacon, LinkTypeIEEE80211Radio, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       expectedLayers := []gopacket.LayerType{LayerTypeRadioTap, LayerTypeDot11, LayerTypeDot11MgmtBeacon}
-       for i := 0; i < 12; i++ {
-               expectedLayers = append(expectedLayers, LayerTypeDot11InformationElement)
-       }
-       checkLayers(p, expectedLayers, t)
-
-       if p.Layer(LayerTypeDot11).(*Dot11).SequenceNumber != 2431 {
-               t.Error("dot11 invalid sequence number")
-       }
-       if p.Layer(LayerTypeDot11).(*Dot11).FragmentNumber != 0 {
-               t.Error("dot11 invalid fragment number")
-       }
-       if _, ok := p.Layer(LayerTypeDot11MgmtBeacon).(*Dot11MgmtBeacon); !ok {
-               t.Errorf("dot11 management beacon frame was expected")
-       }
-}
-
-func BenchmarkDecodePacketDot11MgmtBeacon(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testPacketDot11MgmtBeacon, LinkTypeIEEE80211Radio, gopacket.NoCopy)
-       }
-}
-
-// testPacketDot11DataQOSData is the packet:
-//   06:14:27.838634 638790765us tsft short preamble 54.0 Mb/s -51dB signal -96dB noise antenna 2 5180 MHz 11a CF +QoS ARP, Request who-has 140.180.51.68 tell 169.254.247.0, length 28
-//     0x0000:  0000 2000 6708 0400 6d2c 1326 0000 0000  ....g...m,.&....
-//     0x0010:  226c cda0 0200 0000 4001 0000 3c14 2411  "l......@...<.$.
-//     0x0020:  8801 2c00 0603 7f07 a016 0019 e3d3 5352  ..,...........SR
-//     0x0030:  ffff ffff ffff 5064 0000 50aa aaaa 0300  ......Pd..P.....
-//     0x0040:  0000 0806 0001 0800 0604 0001 0019 e3d3  ................
-//     0x0050:  5352 a9fe f700 0000 0000 0000 8cb4 3344  SR............3D
-var testPacketDot11DataQOSData = []byte{
-       0x00, 0x00, 0x20, 0x00, 0x67, 0x08, 0x04, 0x00, 0x6d, 0x2c, 0x13, 0x26, 0x00, 0x00, 0x00, 0x00,
-       0x22, 0x6c, 0xcd, 0xa0, 0x02, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x3c, 0x14, 0x24, 0x11,
-       0x88, 0x01, 0x2c, 0x00, 0x06, 0x03, 0x7f, 0x07, 0xa0, 0x16, 0x00, 0x19, 0xe3, 0xd3, 0x53, 0x52,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x50, 0x64, 0x00, 0x00, 0x50, 0xaa, 0xaa, 0xaa, 0x03, 0x00,
-       0x00, 0x00, 0x08, 0x06, 0x00, 0x01, 0x08, 0x00, 0x06, 0x04, 0x00, 0x01, 0x00, 0x19, 0xe3, 0xd3,
-       0x53, 0x52, 0xa9, 0xfe, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0xb4, 0x33, 0x44,
-}
-
-func TestPacketDot11DataQOSData(t *testing.T) {
-       p := gopacket.NewPacket(testPacketDot11DataQOSData, LinkTypeIEEE80211Radio, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeRadioTap, LayerTypeDot11, LayerTypeDot11DataQOSData, LayerTypeDot11Data, LayerTypeLLC, LayerTypeSNAP, LayerTypeARP}, t)
-
-       if got, ok := p.Layer(LayerTypeARP).(*ARP); ok {
-               want := &ARP{BaseLayer: BaseLayer{
-                       Contents: []uint8{0x0, 0x1, 0x8, 0x0, 0x6, 0x4, 0x0, 0x1, 0x0, 0x19, 0xe3, 0xd3, 0x53, 0x52, 0xa9, 0xfe, 0xf7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0xb4, 0x33, 0x44},
-                       Payload:  []uint8{},
-               },
-                       AddrType:          0x1,
-                       Protocol:          0x800,
-                       HwAddressSize:     0x6,
-                       ProtAddressSize:   0x4,
-                       Operation:         0x1,
-                       SourceHwAddress:   []uint8{0x0, 0x19, 0xe3, 0xd3, 0x53, 0x52},
-                       SourceProtAddress: []uint8{0xa9, 0xfe, 0xf7, 0x0},
-                       DstHwAddress:      []uint8{0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
-                       DstProtAddress:    []uint8{0x8c, 0xb4, 0x33, 0x44},
-               }
-
-               if !reflect.DeepEqual(got, want) {
-                       t.Errorf("ARP packet processing failed:\ngot  :\n%#v\n\nwant :\n%#v\n\n", got, want)
-               }
-       }
-}
-func BenchmarkDecodePacketDot11DataQOSData(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testPacketDot11DataQOSData, LinkTypeIEEE80211Radio, gopacket.NoCopy)
-       }
-}
-
-// testPacketDot11MgmtAction is the packet:
-//   15:54:43.236460 1.0 Mb/s 2412 MHz 11b -67dB signal antenna 5 Action (8e:3a:e3:44:ac:c6): Spectrum Management Act#4
-//     0x0000:  0000 1200 2e48 0000 1002 6c09 a000 bd05  .....H....l.....
-//     0x0010:  0000 d000 0000 ffff ffff ffff 8e3a e344  .............:.D
-//     0x0020:  acc6 8e3a e344 acc6 001b 0004 2503 0001  ...:.D......%...
-//     0x0030:  0055 39f0 33                             .U9.3
-var testPacketDot11MgmtAction = []byte{
-       0x00, 0x00, 0x12, 0x00, 0x2e, 0x48, 0x00, 0x00, 0x10, 0x02, 0x6c, 0x09, 0xa0, 0x00, 0xbd, 0x05,
-       0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8e, 0x3a, 0xe3, 0x44,
-       0xac, 0xc6, 0x8e, 0x3a, 0xe3, 0x44, 0xac, 0xc6, 0x00, 0x1b, 0x00, 0x04, 0x25, 0x03, 0x00, 0x01,
-       0x00, 0x55, 0x39, 0xf0, 0x33,
-}
-
-func TestPacketDot11MgmtAction(t *testing.T) {
-       p := gopacket.NewPacket(testPacketDot11MgmtAction, LinkTypeIEEE80211Radio, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeRadioTap, LayerTypeDot11, LayerTypeDot11MgmtAction}, t)
-       if got, ok := p.Layer(LayerTypeDot11).(*Dot11); !ok {
-               t.Errorf("dot11 frame was not parsed")
-       } else if !got.ChecksumValid() {
-               t.Errorf("Dot11 packet processing failed: checksum failed")
-       }
-       if got, ok := p.Layer(LayerTypeDot11MgmtAction).(*Dot11MgmtAction); !ok {
-               t.Errorf("management action frame was not parsed")
-       } else if got.Contents[0] != 0 {
-               t.Errorf("action category was not spectrum management")
-       }
-}
-
-func BenchmarkDecodePacketDot11MgmtAction(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testPacketDot11MgmtAction, LinkTypeIEEE80211Radio, gopacket.NoCopy)
-       }
-}
-
-// testPacketDot11CtrlAck is the packet:
-//   06:14:27.838669 638758038us tsft short preamble 24.0 Mb/s -39dB signal -96dB noise antenna 2 5180 MHz 11a Acknowledgment RA:00:19:e3:d3:53:52
-//     0x0000:  0000 2000 6708 0400 96ac 1226 0000 0000  ....g......&....
-//     0x0010:  2230 d9a0 0200 0000 4001 0000 3c14 2411  "0......@...<.$.
-//     0x0020:  d400 0000 0019 e3d3 5352 46e9 7687       ........SRF.v.
-var testPacketDot11CtrlAck = []byte{
-       0x00, 0x00, 0x20, 0x00, 0x67, 0x08, 0x04, 0x00, 0x96, 0xac, 0x12, 0x26, 0x00, 0x00, 0x00, 0x00,
-       0x32, 0x30, 0xd9, 0xa0, 0x02, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x3c, 0x14, 0x24, 0x11,
-       0xd4, 0x00, 0x00, 0x00, 0x00, 0x19, 0xe3, 0xd3, 0x53, 0x52, 0x46, 0xe9, 0x76, 0x87,
-}
-
-func TestPacketDot11CtrlAck(t *testing.T) {
-       p := gopacket.NewPacket(testPacketDot11CtrlAck, LinkTypeIEEE80211Radio, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeRadioTap, LayerTypeDot11}, t)
-
-       if got, ok := p.Layer(LayerTypeDot11).(*Dot11); ok {
-               if !got.ChecksumValid() {
-                       t.Errorf("Dot11 packet processing failed:\nchecksum failed. got  :\n%#v\n\n", got)
-               }
-       }
-
-       if got, ok := p.Layer(LayerTypeDot11).(*Dot11); ok {
-               if !got.ChecksumValid() {
-                       t.Errorf("Dot11 packet processing failed:\nchecksum failed. got  :\n%#v\n\n", got)
-               }
-               want := &Dot11{
-                       BaseLayer: BaseLayer{
-                               Contents: []uint8{0xd4, 0x0, 0x0, 0x0, 0x0, 0x19, 0xe3, 0xd3, 0x53, 0x52},
-                               Payload:  []uint8{},
-                       },
-                       Type:       Dot11TypeCtrlAck,
-                       Proto:      0x0,
-                       Flags:      0x0,
-                       DurationID: 0x0,
-                       Address1:   net.HardwareAddr{0x0, 0x19, 0xe3, 0xd3, 0x53, 0x52},
-                       Address2:   net.HardwareAddr(nil),
-                       Address3:   net.HardwareAddr(nil),
-                       Address4:   net.HardwareAddr(nil),
-                       Checksum:   0x8776e946,
-               }
-               if !reflect.DeepEqual(got, want) {
-                       t.Errorf("Dot11 packet processing failed:\ngot  :\n%#v\n\nwant :\n%#v\n\n", got, want)
-               }
-       }
-}
-func BenchmarkDecodePacketDot11CtrlAck(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testPacketDot11CtrlAck, LinkTypeIEEE80211Radio, gopacket.NoCopy)
-       }
-}
-
-// testPacketDot11DataARP is the packet:
-//   06:14:11.512316 622463798us tsft short preamble 6.0 Mb/s -39dB signal -96dB noise antenna 2 5180 MHz 11a ARP, Request who-has 67.8.14.54 tell 169.254.247.0, length 28
-//     0x0000:  0000 2000 6708 0400 360b 1a25 0000 0000  ....g...6..%....
-//     0x0010:  220c d9a0 0200 0000 4001 0000 3c14 2411  ".......@...<.$.
-//     0x0020:  0802 0000 ffff ffff ffff 0603 7f07 a016  ................
-//     0x0030:  0019 e3d3 5352 e07f aaaa 0300 0000 0806  ....SR..........
-//     0x0040:  0001 0800 0604 0001 0019 e3d3 5352 a9fe  ............SR..
-//     0x0050:  f700 0000 0000 0000 4308 0e36            ........C..6
-var testPacketDot11DataARP = []byte{
-       0x00, 0x00, 0x20, 0x00, 0x67, 0x08, 0x04, 0x00, 0x36, 0x0b, 0x1a, 0x25, 0x00, 0x00, 0x00, 0x00,
-       0x22, 0x0c, 0xd9, 0xa0, 0x02, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x3c, 0x14, 0x24, 0x11,
-       0x08, 0x02, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x06, 0x03, 0x7f, 0x07, 0xa0, 0x16,
-       0x00, 0x19, 0xe3, 0xd3, 0x53, 0x52, 0xe0, 0x7f, 0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00, 0x08, 0x06,
-       0x00, 0x01, 0x08, 0x00, 0x06, 0x04, 0x00, 0x01, 0x00, 0x19, 0xe3, 0xd3, 0x53, 0x52, 0xa9, 0xfe,
-       0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x08, 0x0e, 0x36,
-}
-
-func TestPacketDot11DataARP(t *testing.T) {
-       p := gopacket.NewPacket(testPacketDot11DataARP, LinkTypeIEEE80211Radio, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeRadioTap, LayerTypeDot11, LayerTypeDot11Data, LayerTypeLLC, LayerTypeSNAP, LayerTypeARP}, t)
-
-       if got, ok := p.Layer(LayerTypeARP).(*ARP); ok {
-               want := &ARP{
-                       BaseLayer: BaseLayer{
-                               Contents: []uint8{0x0, 0x1, 0x8, 0x0, 0x6, 0x4, 0x0, 0x1, 0x0, 0x19, 0xe3, 0xd3, 0x53, 0x52, 0xa9, 0xfe, 0xf7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x8, 0xe, 0x36},
-                               Payload:  []uint8{},
-                       },
-                       AddrType:          0x1,
-                       Protocol:          0x800,
-                       HwAddressSize:     0x6,
-                       ProtAddressSize:   0x4,
-                       Operation:         0x1,
-                       SourceHwAddress:   []uint8{0x0, 0x19, 0xe3, 0xd3, 0x53, 0x52},
-                       SourceProtAddress: []uint8{0xa9, 0xfe, 0xf7, 0x0},
-                       DstHwAddress:      []uint8{0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
-                       DstProtAddress:    []uint8{0x43, 0x8, 0xe, 0x36},
-               }
-
-               if !reflect.DeepEqual(got, want) {
-                       t.Errorf("ARP packet processing failed:\ngot  :\n%#v\n\nwant :\n%#v\n\n", got, want)
-               }
-       }
-}
-
-func BenchmarkDecodePacketDot11DataARP(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testPacketDot11DataARP, LinkTypeIEEE80211Radio, gopacket.NoCopy)
-       }
-}
-
-// testPacketDot11DataIP is the packet:
-//   06:14:21.388622 632340487us tsft short preamble 6.0 Mb/s -40dB signal -96dB noise antenna 1 5180 MHz 11a IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:19:e3:d3:53:52, length 300
-//     0x0000:  0000 2000 6708 0400 07c0 b025 0000 0000  ....g......%....
-//     0x0010:  220c d8a0 0100 0000 4001 0000 3c14 2411  ".......@...<.$.
-//     0x0020:  0802 0000 ffff ffff ffff 0603 7f07 a016  ................
-//     0x0030:  0019 e3d3 5352 4095 aaaa 0300 0000 0800  ....SR@.........
-//     0x0040:  4500 0148 c514 0000 ff11 f590 0000 0000  E..H............
-//     0x0050:  ffff ffff 0044 0043 0134 2b39 0101 0600  .....D.C.4+9....
-//     0x0060:  131f 8c43 003c 0000 0000 0000 0000 0000  ...C.<..........
-//     0x0070:  0000 0000 0000 0000 0019 e3d3 5352 0000  ............SR..
-//     0x0080:  0000 0000 0000 0000 0000 0000 0000 0000  ................
-//     0x0090:  0000 0000 0000 0000 0000 0000 0000 0000  ................
-//     0x00a0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
-//     0x00b0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
-//     0x00c0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
-//     0x00d0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
-//     0x00e0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
-//     0x00f0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
-//     0x0100:  0000 0000 0000 0000 0000 0000 0000 0000  ................
-//     0x0110:  0000 0000 0000 0000 0000 0000 0000 0000  ................
-//     0x0120:  0000 0000 0000 0000 0000 0000 0000 0000  ................
-//     0x0130:  0000 0000 0000 0000 0000 0000 0000 0000  ................
-//     0x0140:  0000 0000 0000 0000 6382 5363 3501 0137  ........c.Sc5..7
-//     0x0150:  0a01 0306 0f77 5ffc 2c2e 2f39 0205 dc3d  .....w_.,./9...=
-//     0x0160:  0701 0019 e3d3 5352 3304 0076 a700 0c0b  ......SR3..v....
-//     0x0170:  4d61 6369 6e74 6f73 682d 34ff 0000 0000  Macintosh-4.....
-//     0x0180:  0000 0000 0000 0000                      ........
-var testPacketDot11DataIP = []byte{
-       0x00, 0x00, 0x20, 0x00, 0x67, 0x08, 0x04, 0x00, 0x07, 0xc0, 0xb0, 0x25, 0x00, 0x00, 0x00, 0x00,
-       0x22, 0x0c, 0xd8, 0xa0, 0x01, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x3c, 0x14, 0x24, 0x11,
-       0x08, 0x02, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x06, 0x03, 0x7f, 0x07, 0xa0, 0x16,
-       0x00, 0x19, 0xe3, 0xd3, 0x53, 0x52, 0x40, 0x95, 0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00,
-       0x45, 0x00, 0x01, 0x48, 0xc5, 0x14, 0x00, 0x00, 0xff, 0x11, 0xf5, 0x90, 0x00, 0x00, 0x00, 0x00,
-       0xff, 0xff, 0xff, 0xff, 0x00, 0x44, 0x00, 0x43, 0x01, 0x34, 0x2b, 0x39, 0x01, 0x01, 0x06, 0x00,
-       0x13, 0x1f, 0x8c, 0x43, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xe3, 0xd3, 0x53, 0x52, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x82, 0x53, 0x63, 0x35, 0x01, 0x01, 0x37,
-       0x0a, 0x01, 0x03, 0x06, 0x0f, 0x77, 0x5f, 0xfc, 0x2c, 0x2e, 0x2f, 0x39, 0x02, 0x05, 0xdc, 0x3d,
-       0x07, 0x01, 0x00, 0x19, 0xe3, 0xd3, 0x53, 0x52, 0x33, 0x04, 0x00, 0x76, 0xa7, 0x00, 0x0c, 0x0b,
-       0x4d, 0x61, 0x63, 0x69, 0x6e, 0x74, 0x6f, 0x73, 0x68, 0x2d, 0x34, 0xff, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-}
-
-func TestPacketDot11DataIP(t *testing.T) {
-       p := gopacket.NewPacket(testPacketDot11DataIP, LinkTypeIEEE80211Radio, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeRadioTap, LayerTypeDot11, LayerTypeDot11Data, LayerTypeLLC, LayerTypeSNAP, LayerTypeIPv4, LayerTypeUDP, LayerTypeDHCPv4}, t)
-}
-func BenchmarkDecodePacketDot11DataIP(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testPacketDot11DataIP, LinkTypeIEEE80211Radio, gopacket.NoCopy)
-       }
-}
-
-// Encrypted
-
-/// testPacketP6196 is the packet:
-//   09:28:41.830631 20605036us tsft wep -69dB signal -92dB noise antenna 1 5240 MHz 11a ht/40- 162.0 Mb/s MCS 12 40 MHz lon GI mixed BCC FEC [bit 20] CF +QoS Data IV:50a9 Pad 20 KeyID 0
-//     0x0000:  0000 3000 6b08 1c00 6c68 3a01 0000 0000  ..0.k...lh:.....
-//     0x0010:  1400 7814 4001 bba4 0160 0e1a 4001 0400  ..x.@....`..@...
-//     0x0020:  7814 3022 1f01 0cff b10d 0000 0400 0000  x.0"............
-//     0x0030:  8841 2c00 0025 9c42 c262 d8a2 5e97 61c1  .A,..%.B.b..^.a.
-//     0x0040:  0025 9c42 c25f 10db 0000 a950 0020 0000  .%.B._.....P....
-//     0x0050:  0000 f8ab a97e 3fbd d6e1 785b 0040 5f15  .....~?...x[.@_.
-//     0x0060:  7123 8711 bd1f ffb9 e5b3 84bb ec2a 0a90  q#...........*..
-//     0x0070:  d0a0 1a6f 9033 1083 5179 a0da f833 3a00  ...o.3..Qy...3:.
-//     0x0080:  5471 f596 539b 1823 a33c 4908 545c 266a  Tq..S..#.<I.T\&j
-//     0x0090:  8540 515a 1da9 c49e a85a fbf7 de09 7f9c  .@QZ.....Z......
-//     0x00a0:  6f35 0b8b 6831 2c10 43dc 8983 b1d9 dd29  o5..h1,.C......)
-//     0x00b0:  7395 65b9 4b43 b391 16ec 4201 86c9 ca    s.e.KC....B....
-var testPacketP6196 = []byte{
-       0x00, 0x00, 0x30, 0x00, 0x6b, 0x08, 0x1c, 0x00, 0x6c, 0x68, 0x3a, 0x01, 0x00, 0x00, 0x00, 0x00,
-       0x14, 0x00, 0x78, 0x14, 0x40, 0x01, 0xbb, 0xa4, 0x01, 0x60, 0x0e, 0x1a, 0x40, 0x01, 0x04, 0x00,
-       0x78, 0x14, 0x30, 0x22, 0x1f, 0x01, 0x0c, 0xff, 0xb1, 0x0d, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
-       0x88, 0x41, 0x2c, 0x00, 0x00, 0x25, 0x9c, 0x42, 0xc2, 0x62, 0xd8, 0xa2, 0x5e, 0x97, 0x61, 0xc1,
-       0x00, 0x25, 0x9c, 0x42, 0xc2, 0x5f, 0x10, 0xdb, 0x00, 0x00, 0xa9, 0x50, 0x00, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0xf8, 0xab, 0xa9, 0x7e, 0x3f, 0xbd, 0xd6, 0xe1, 0x78, 0x5b, 0x00, 0x40, 0x5f, 0x15,
-       0x71, 0x23, 0x87, 0x11, 0xbd, 0x1f, 0xff, 0xb9, 0xe5, 0xb3, 0x84, 0xbb, 0xec, 0x2a, 0x0a, 0x90,
-       0xd0, 0xa0, 0x1a, 0x6f, 0x90, 0x33, 0x10, 0x83, 0x51, 0x79, 0xa0, 0xda, 0xf8, 0x33, 0x3a, 0x00,
-       0x54, 0x71, 0xf5, 0x96, 0x53, 0x9b, 0x18, 0x23, 0xa3, 0x3c, 0x49, 0x08, 0x54, 0x5c, 0x26, 0x6a,
-       0x85, 0x40, 0x51, 0x5a, 0x1d, 0xa9, 0xc4, 0x9e, 0xa8, 0x5a, 0xfb, 0xf7, 0xde, 0x09, 0x7f, 0x9c,
-       0x6f, 0x35, 0x0b, 0x8b, 0x68, 0x31, 0x2c, 0x10, 0x43, 0xdc, 0x89, 0x83, 0xb1, 0xd9, 0xdd, 0x29,
-       0x73, 0x95, 0x65, 0xb9, 0x4b, 0x43, 0xb3, 0x91, 0x16, 0xec, 0x42, 0x01, 0x86, 0xc9, 0xca,
-}
-
-func TestPacketP6196(t *testing.T) {
-       p := gopacket.NewPacket(testPacketP6196, LinkTypeIEEE80211Radio, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-
-       checkLayers(p, []gopacket.LayerType{LayerTypeRadioTap, LayerTypeDot11, LayerTypeDot11WEP}, t)
-}
-
-func BenchmarkDecodePacketP6196(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testPacketP6196, LinkTypeIEEE80211Radio, gopacket.NoCopy)
-       }
-}
-
-func TestInformationElement(t *testing.T) {
-       bin := []byte{
-               0, 0,
-               0, 2, 1, 3,
-               221, 5, 1, 2, 3, 4, 5,
-       }
-       pkt := gopacket.NewPacket(bin, LayerTypeDot11InformationElement, gopacket.NoCopy)
-
-       buf := gopacket.NewSerializeBuffer()
-       var sLayers []gopacket.SerializableLayer
-       for _, l := range pkt.Layers() {
-               sLayers = append(sLayers, l.(*Dot11InformationElement))
-       }
-       if err := gopacket.SerializeLayers(buf, gopacket.SerializeOptions{}, sLayers...); err != nil {
-               t.Error(err.Error())
-       }
-       if !bytes.Equal(bin, buf.Bytes()) {
-               t.Error("build failed")
-       }
-}
diff --git a/vendor/github.com/google/gopacket/layers/dot1q_test.go b/vendor/github.com/google/gopacket/layers/dot1q_test.go
deleted file mode 100644 (file)
index 4a409c7..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-package layers
-
-import (
-       "fmt"
-       "reflect"
-       "testing"
-
-       "github.com/google/gopacket"
-)
-
-// test harness to ensure the dot1q layer can be encoded/decoded properly
-// return error if decoded data not match.
-func testEncodeDecodeDot1Q(dot1Q *Dot1Q) error {
-       buf := gopacket.NewSerializeBuffer()
-       opts := gopacket.SerializeOptions{}
-       expectedDot1Q := dot1Q
-
-       err := dot1Q.SerializeTo(buf, opts)
-       if err != nil {
-               return err
-       }
-
-       newDot1q := &Dot1Q{}
-       err = newDot1q.DecodeFromBytes(buf.Bytes(), gopacket.NilDecodeFeedback)
-       if err != nil {
-               return err
-       }
-       newDot1q.BaseLayer = BaseLayer{}
-
-       if !reflect.DeepEqual(expectedDot1Q, newDot1q) {
-               return fmt.Errorf("Expect %v actual %v", expectedDot1Q, newDot1q)
-       }
-       return nil
-
-}
-
-// Test to ensure what has been encode can be decoded
-func TestEncodeDecodeDot1Q(t *testing.T) {
-       dot1Qs := []*Dot1Q{
-               &Dot1Q{
-                       Priority:       uint8(3),
-                       VLANIdentifier: uint16(30),
-               },
-               &Dot1Q{
-                       Priority:       uint8(0x07),
-                       DropEligible:   true,
-                       VLANIdentifier: uint16(0xFFF),
-               },
-       }
-
-       for i, curTest := range dot1Qs {
-               err := testEncodeDecodeDot1Q(curTest)
-               if err != nil {
-                       t.Error("Error with item ", i, " with error message :", err)
-               }
-       }
-}
diff --git a/vendor/github.com/google/gopacket/layers/endpoints_test.go b/vendor/github.com/google/gopacket/layers/endpoints_test.go
deleted file mode 100644 (file)
index 906762a..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2017, Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
-       "net"
-       "testing"
-
-       "github.com/google/gopacket"
-)
-
-func TestNewIPEndpoint(t *testing.T) {
-       cases := []struct {
-               ip           net.IP
-               endpointType gopacket.EndpointType
-       }{
-               {net.ParseIP("192.168.0.1").To4(), EndpointIPv4},
-               {net.ParseIP("192.168.0.1").To16(), EndpointIPv4},
-               {net.ParseIP("2001:0db8:85a3:0000:0000:8a2e:0370:7334"), EndpointIPv6},
-       }
-
-       for _, c := range cases {
-               endpoint := NewIPEndpoint(c.ip)
-               if endpoint == gopacket.InvalidEndpoint {
-                       t.Errorf("Failed to create an IP endpoint for %s (%d-bytes)",
-                               c.ip, len(c.ip))
-               }
-               if endpoint.EndpointType() != c.endpointType {
-                       t.Errorf("Wrong endpoint type created for %s (%d-bytes): expected %s, got %s",
-                               c.ip, len(c.ip), c.endpointType, endpoint.EndpointType())
-               }
-       }
-}
diff --git a/vendor/github.com/google/gopacket/layers/geneve_test.go b/vendor/github.com/google/gopacket/layers/geneve_test.go
deleted file mode 100644 (file)
index ee34d52..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright 2016 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
-       "reflect"
-       "testing"
-
-       "github.com/google/gopacket"
-)
-
-var testPacketGeneve1 = []byte{
-       0x00, 0x04, 0x00, 0x01, 0x00, 0x06, 0xfa, 0x16, 0x3e, 0x23, 0xd3, 0x42,
-       0x00, 0x00, 0x08, 0x00, 0x45, 0x00, 0x00, 0x86, 0x87, 0x39, 0x40, 0x00,
-       0x40, 0x11, 0x31, 0x35, 0xc0, 0xa8, 0x00, 0x53, 0xc0, 0xa8, 0x00, 0x55,
-       0x31, 0x57, 0x17, 0xc1, 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x65, 0x58,
-       0x00, 0x00, 0x00, 0x00, 0xba, 0x09, 0x60, 0x5f, 0xa0, 0x91, 0xa2, 0xfe,
-       0x54, 0x48, 0x88, 0x51, 0x08, 0x00, 0x45, 0x00, 0x00, 0x54, 0x01, 0xf6,
-       0x40, 0x00, 0x40, 0x01, 0xb7, 0x5f, 0xc0, 0xa8, 0x00, 0x01, 0xc0, 0xa8,
-       0x00, 0x02, 0x08, 0x00, 0x79, 0xdf, 0x0c, 0xfa, 0x63, 0xc4, 0x03, 0x0b,
-       0x50, 0x58, 0x00, 0x00, 0x00, 0x00, 0xee, 0x2b, 0x0d, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19,
-       0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25,
-       0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31,
-       0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
-}
-
-var testPacketGeneve2 = []byte{
-       0x12, 0xbe, 0x4e, 0xb6, 0xa7, 0xc7, 0x02, 0x88, 0x0a, 0x81, 0xbd, 0x6d,
-       0x08, 0x00, 0x45, 0x00, 0x00, 0x86, 0x20, 0xf2, 0x00, 0x00, 0x40, 0x11,
-       0x01, 0x52, 0xac, 0x10, 0x00, 0x01, 0xac, 0x10, 0x00, 0x02, 0x40, 0xa6,
-       0x17, 0xc1, 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x65, 0x58, 0x00, 0x00,
-       0x0a, 0x00, 0xd2, 0x8c, 0xdb, 0x12, 0x53, 0xd5, 0x8e, 0xab, 0xa2, 0xa5,
-       0x02, 0xf7, 0x08, 0x00, 0x45, 0x00, 0x00, 0x54, 0x38, 0x1a, 0x40, 0x00,
-       0x40, 0x01, 0x81, 0x3b, 0xc0, 0xa8, 0x00, 0x01, 0xc0, 0xa8, 0x00, 0x02,
-       0x08, 0x00, 0xdd, 0x9d, 0x7e, 0xde, 0x02, 0xc3, 0xcb, 0x07, 0x51, 0x58,
-       0x00, 0x00, 0x00, 0x00, 0xba, 0x8d, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b,
-       0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
-       0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33,
-       0x34, 0x35, 0x36, 0x37,
-}
-
-func TestDecodeGeneve1(t *testing.T) {
-       p := gopacket.NewPacket(testPacketGeneve1, LinkTypeLinuxSLL, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{
-               LayerTypeLinuxSLL, LayerTypeIPv4, LayerTypeUDP, LayerTypeGeneve,
-               LayerTypeEthernet, LayerTypeIPv4, LayerTypeICMPv4, gopacket.LayerTypePayload,
-       }, t)
-       if got, ok := p.Layer(LayerTypeGeneve).(*Geneve); ok {
-               want := &Geneve{
-                       BaseLayer: BaseLayer{
-                               Contents: testPacketGeneve1[44:52],
-                               Payload:  testPacketGeneve1[52:150],
-                       },
-                       Version:        0x0,
-                       OptionsLength:  0x0,
-                       OAMPacket:      false,
-                       CriticalOption: false,
-                       Protocol:       EthernetTypeTransparentEthernetBridging,
-                       VNI:            0x0,
-               }
-               if !reflect.DeepEqual(want, got) {
-                       t.Errorf("Geneve layer mismatch, \nwant %#v\ngot  %#v\n", want, got)
-               }
-       }
-}
-
-func TestDecodeGeneve2(t *testing.T) {
-       p := gopacket.NewPacket(testPacketGeneve2, LinkTypeEthernet, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{
-               LayerTypeEthernet, LayerTypeIPv4, LayerTypeUDP, LayerTypeGeneve,
-               LayerTypeEthernet, LayerTypeIPv4, LayerTypeICMPv4, gopacket.LayerTypePayload,
-       }, t)
-       if got, ok := p.Layer(LayerTypeGeneve).(*Geneve); ok {
-               want := &Geneve{
-                       BaseLayer: BaseLayer{
-                               Contents: testPacketGeneve2[42:50],
-                               Payload:  testPacketGeneve2[50:148],
-                       },
-                       Version:        0x0,
-                       OptionsLength:  0x0,
-                       OAMPacket:      false,
-                       CriticalOption: false,
-                       Protocol:       EthernetTypeTransparentEthernetBridging,
-                       VNI:            0xa,
-               }
-               if !reflect.DeepEqual(want, got) {
-                       t.Errorf("Geneve layer mismatch, \nwant %#v\ngot  %#v\n", want, got)
-               }
-       }
-}
-
-func BenchmarkDecodeGeneve1(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testPacketGeneve1, LinkTypeEthernet, gopacket.NoCopy)
-       }
-}
diff --git a/vendor/github.com/google/gopacket/layers/gre_test.go b/vendor/github.com/google/gopacket/layers/gre_test.go
deleted file mode 100644 (file)
index af2e38e..0000000
+++ /dev/null
@@ -1,389 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-package layers
-
-import (
-       "fmt"
-       "net"
-       "reflect"
-       "testing"
-
-       "github.com/google/gopacket"
-)
-
-// testPacketGRE is the packet:
-//   15:08:08.003196 IP 192.168.1.1 > 192.168.1.2: GREv0, length 88: IP 172.16.1.1 > 172.16.2.1: ICMP echo request, id 4724, seq 1, length 64
-//      0x0000:  3a56 6b69 595e 8e7a 12c3 a971 0800 4500  :VkiY^.z...q..E.
-//      0x0010:  006c 843c 4000 402f 32d3 c0a8 0101 c0a8  .l.<@.@/2.......
-//      0x0020:  0102 0000 0800 4500 0054 0488 4000 4001  ......E..T..@.@.
-//      0x0030:  dafe ac10 0101 ac10 0201 0800 82c4 1274  ...............t
-//      0x0040:  0001 c892 a354 0000 0000 380c 0000 0000  .....T....8.....
-//      0x0050:  0000 1011 1213 1415 1617 1819 1a1b 1c1d  ................
-//      0x0060:  1e1f 2021 2223 2425 2627 2829 2a2b 2c2d  ...!"#$%&'()*+,-
-//      0x0070:  2e2f 3031 3233 3435 3637                 ./01234567
-var testPacketGRE = []byte{
-       0x3a, 0x56, 0x6b, 0x69, 0x59, 0x5e, 0x8e, 0x7a, 0x12, 0xc3, 0xa9, 0x71, 0x08, 0x00, 0x45, 0x00,
-       0x00, 0x6c, 0x84, 0x3c, 0x40, 0x00, 0x40, 0x2f, 0x32, 0xd3, 0xc0, 0xa8, 0x01, 0x01, 0xc0, 0xa8,
-       0x01, 0x02, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00, 0x00, 0x54, 0x04, 0x88, 0x40, 0x00, 0x40, 0x01,
-       0xda, 0xfe, 0xac, 0x10, 0x01, 0x01, 0xac, 0x10, 0x02, 0x01, 0x08, 0x00, 0x82, 0xc4, 0x12, 0x74,
-       0x00, 0x01, 0xc8, 0x92, 0xa3, 0x54, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0c, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d,
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d,
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
-}
-
-func TestPacketGRE(t *testing.T) {
-       p := gopacket.NewPacket(testPacketGRE, LinkTypeEthernet, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeGRE, LayerTypeIPv4, LayerTypeICMPv4, gopacket.LayerTypePayload}, t)
-       if got, ok := p.Layer(LayerTypeGRE).(*GRE); ok {
-               want := &GRE{
-                       BaseLayer: BaseLayer{testPacketGRE[34:38], testPacketGRE[38:]},
-                       Protocol:  EthernetTypeIPv4,
-               }
-               if !reflect.DeepEqual(want, got) {
-                       t.Errorf("GRE layer mismatch, \nwant %#v\ngot  %#v\n", want, got)
-               }
-       }
-}
-
-func BenchmarkDecodePacketGRE(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testPacketGRE, LinkTypeEthernet, gopacket.NoCopy)
-       }
-}
-
-var testIPv4OverGRE = []gopacket.SerializableLayer{
-       &Ethernet{
-               SrcMAC:       net.HardwareAddr{142, 122, 18, 195, 169, 113},
-               DstMAC:       net.HardwareAddr{58, 86, 107, 105, 89, 94},
-               EthernetType: EthernetTypeIPv4,
-       },
-       &IPv4{
-               Version:  4,
-               SrcIP:    net.IP{192, 168, 1, 1},
-               DstIP:    net.IP{192, 168, 1, 2},
-               Protocol: IPProtocolGRE,
-               Flags:    IPv4DontFragment,
-               TTL:      64,
-               Id:       33852,
-               IHL:      5,
-       },
-       &GRE{
-               Protocol: EthernetTypeIPv4,
-       },
-       &IPv4{
-               Version:  4,
-               SrcIP:    net.IP{172, 16, 1, 1},
-               DstIP:    net.IP{172, 16, 2, 1},
-               Protocol: IPProtocolICMPv4,
-               Flags:    IPv4DontFragment,
-               TTL:      64,
-               IHL:      5,
-               Id:       1160,
-       },
-       &ICMPv4{
-               TypeCode: CreateICMPv4TypeCode(ICMPv4TypeEchoRequest, 0),
-               Id:       4724,
-               Seq:      1,
-       },
-       gopacket.Payload{
-               0xc8, 0x92, 0xa3, 0x54, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-               0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
-               0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
-               0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
-       },
-}
-
-func TestIPv4OverGREEncode(t *testing.T) {
-       b := gopacket.NewSerializeBuffer()
-       opts := gopacket.SerializeOptions{
-               ComputeChecksums: true,
-               FixLengths:       true,
-       }
-       if err := gopacket.SerializeLayers(b, opts, testIPv4OverGRE...); err != nil {
-               t.Errorf("Unable to serialize: %v", err)
-       }
-       p := gopacket.NewPacket(b.Bytes(), LinkTypeEthernet, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeGRE, LayerTypeIPv4, LayerTypeICMPv4, gopacket.LayerTypePayload}, t)
-       if got, want := b.Bytes(), testPacketGRE; !reflect.DeepEqual(want, got) {
-               t.Errorf("Encoding mismatch, \nwant: %v\ngot %v\n", want, got)
-       }
-}
-
-func BenchmarkEncodePacketGRE(b *testing.B) {
-       buf := gopacket.NewSerializeBuffer()
-       opts := gopacket.SerializeOptions{
-               ComputeChecksums: true,
-               FixLengths:       true,
-       }
-       for i := 0; i < b.N; i++ {
-               gopacket.SerializeLayers(buf, opts, testIPv4OverGRE...)
-               buf.Clear()
-       }
-}
-
-// testPacketEthernetOverGRE is the packet:
-//   11:01:38.124768 IP 192.168.1.1 > 192.168.1.2: GREv0, length 102: IP 172.16.1.1 > 172.16.1.2: ICMP echo request, id 3842, seq 1, length 64
-//      0x0000:  ea6b 4cd3 5513 d6b9 d880 56ef 0800 4500  .kL.U.....V...E.
-//      0x0010:  007a 0acd 4000 402f ac34 c0a8 0101 c0a8  .z..@.@/.4......
-//      0x0020:  0102 0000 6558 aa6a 36e6 c630 6e32 3ec7  ....eX.j6..0n2>.
-//      0x0030:  9def 0800 4500 0054 d970 4000 4001 0715  ....E..T.p@.@...
-//      0x0040:  ac10 0101 ac10 0102 0800 3f15 0f02 0001  ..........?.....
-//      0x0050:  82d9 b154 0000 0000 b5e6 0100 0000 0000  ...T............
-//      0x0060:  1011 1213 1415 1617 1819 1a1b 1c1d 1e1f  ................
-//      0x0070:  2021 2223 2425 2627 2829 2a2b 2c2d 2e2f  .!"#$%&'()*+,-./
-//      0x0080:  3031 3233 3435 3637                      01234567
-var testPacketEthernetOverGRE = []byte{
-       0xea, 0x6b, 0x4c, 0xd3, 0x55, 0x13, 0xd6, 0xb9, 0xd8, 0x80, 0x56, 0xef, 0x08, 0x00, 0x45, 0x00,
-       0x00, 0x7a, 0x0a, 0xcd, 0x40, 0x00, 0x40, 0x2f, 0xac, 0x34, 0xc0, 0xa8, 0x01, 0x01, 0xc0, 0xa8,
-       0x01, 0x02, 0x00, 0x00, 0x65, 0x58, 0xaa, 0x6a, 0x36, 0xe6, 0xc6, 0x30, 0x6e, 0x32, 0x3e, 0xc7,
-       0x9d, 0xef, 0x08, 0x00, 0x45, 0x00, 0x00, 0x54, 0xd9, 0x70, 0x40, 0x00, 0x40, 0x01, 0x07, 0x15,
-       0xac, 0x10, 0x01, 0x01, 0xac, 0x10, 0x01, 0x02, 0x08, 0x00, 0x3f, 0x15, 0x0f, 0x02, 0x00, 0x01,
-       0x82, 0xd9, 0xb1, 0x54, 0x00, 0x00, 0x00, 0x00, 0xb5, 0xe6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
-       0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
-       0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
-}
-
-func TestPacketEthernetOverGRE(t *testing.T) {
-       p := gopacket.NewPacket(testPacketEthernetOverGRE, LinkTypeEthernet, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeGRE, LayerTypeEthernet, LayerTypeIPv4, LayerTypeICMPv4, gopacket.LayerTypePayload}, t)
-       if got, ok := p.Layer(LayerTypeGRE).(*GRE); ok {
-               want := &GRE{
-                       BaseLayer: BaseLayer{testPacketEthernetOverGRE[34:38], testPacketEthernetOverGRE[38:]},
-                       Protocol:  EthernetTypeTransparentEthernetBridging,
-               }
-               if !reflect.DeepEqual(want, got) {
-                       t.Errorf("GRE layer mismatch, \nwant %#v\ngot  %#v\n", want, got)
-               }
-       }
-}
-
-func BenchmarkDecodePacketEthernetOverGRE(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testPacketEthernetOverGRE, LinkTypeEthernet, gopacket.NoCopy)
-       }
-}
-
-var testEthernetOverGRE = []gopacket.SerializableLayer{
-       &Ethernet{
-               SrcMAC:       net.HardwareAddr{0xd6, 0xb9, 0xd8, 0x80, 0x56, 0xef},
-               DstMAC:       net.HardwareAddr{0xea, 0x6b, 0x4c, 0xd3, 0x55, 0x13},
-               EthernetType: EthernetTypeIPv4,
-       },
-       &IPv4{
-               Version:  4,
-               SrcIP:    net.IP{192, 168, 1, 1},
-               DstIP:    net.IP{192, 168, 1, 2},
-               Protocol: IPProtocolGRE,
-               Flags:    IPv4DontFragment,
-               TTL:      64,
-               Id:       2765,
-               IHL:      5,
-       },
-       &GRE{
-               Protocol: EthernetTypeTransparentEthernetBridging,
-       },
-       &Ethernet{
-               SrcMAC:       net.HardwareAddr{0x6e, 0x32, 0x3e, 0xc7, 0x9d, 0xef},
-               DstMAC:       net.HardwareAddr{0xaa, 0x6a, 0x36, 0xe6, 0xc6, 0x30},
-               EthernetType: EthernetTypeIPv4,
-       },
-       &IPv4{
-               Version:  4,
-               SrcIP:    net.IP{172, 16, 1, 1},
-               DstIP:    net.IP{172, 16, 1, 2},
-               Protocol: IPProtocolICMPv4,
-               Flags:    IPv4DontFragment,
-               TTL:      64,
-               IHL:      5,
-               Id:       55664,
-       },
-       &ICMPv4{
-               TypeCode: CreateICMPv4TypeCode(ICMPv4TypeEchoRequest, 0),
-               Id:       3842,
-               Seq:      1,
-       },
-       gopacket.Payload{
-               0x82, 0xd9, 0xb1, 0x54, 0x00, 0x00, 0x00, 0x00, 0xb5, 0xe6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-               0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
-               0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
-               0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
-       },
-}
-
-func TestEthernetOverGREEncode(t *testing.T) {
-       b := gopacket.NewSerializeBuffer()
-       opts := gopacket.SerializeOptions{
-               ComputeChecksums: true,
-               FixLengths:       true,
-       }
-       if err := gopacket.SerializeLayers(b, opts, testEthernetOverGRE...); err != nil {
-               t.Errorf("Unable to serialize: %v", err)
-       }
-       p := gopacket.NewPacket(b.Bytes(), LinkTypeEthernet, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeGRE, LayerTypeEthernet, LayerTypeIPv4, LayerTypeICMPv4, gopacket.LayerTypePayload}, t)
-       if got, want := b.Bytes(), testPacketEthernetOverGRE; !reflect.DeepEqual(want, got) {
-               t.Errorf("Encoding mismatch, \nwant: %v\ngot %v\n", want, got)
-       }
-}
-
-func BenchmarkEncodePacketEthernetOverGRE(b *testing.B) {
-       buf := gopacket.NewSerializeBuffer()
-       opts := gopacket.SerializeOptions{
-               ComputeChecksums: true,
-               FixLengths:       true,
-       }
-       for i := 0; i < b.N; i++ {
-               gopacket.SerializeLayers(buf, opts, testEthernetOverGRE...)
-               buf.Clear()
-       }
-}
-
-var testGREChecksum = map[uint16][]gopacket.SerializableLayer{
-       0x77ff: {
-               &Ethernet{
-                       SrcMAC:       net.HardwareAddr{0xc2, 0x00, 0x57, 0x75, 0x00, 0x00},
-                       DstMAC:       net.HardwareAddr{0xc2, 0x01, 0x57, 0x75, 0x00, 0x00},
-                       EthernetType: EthernetTypeIPv4,
-               },
-               &IPv4{
-                       Version:  4,
-                       SrcIP:    net.IP{10, 0, 0, 1},
-                       DstIP:    net.IP{10, 0, 0, 2},
-                       Protocol: IPProtocolGRE,
-                       TTL:      255,
-                       Id:       10,
-                       IHL:      5,
-               },
-               &GRE{
-                       Protocol:        EthernetTypeIPv4,
-                       ChecksumPresent: true,
-               },
-               &IPv4{
-                       Version:  4,
-                       SrcIP:    net.IP{1, 1, 1, 1},
-                       DstIP:    net.IP{2, 2, 2, 2},
-                       Protocol: IPProtocolICMPv4,
-                       TTL:      255,
-                       IHL:      5,
-                       Id:       10,
-               },
-               &ICMPv4{
-                       TypeCode: CreateICMPv4TypeCode(ICMPv4TypeEchoRequest, 0),
-                       Id:       2,
-                       Seq:      0,
-               },
-               gopacket.Payload{
-                       0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xbe, 0x70, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
-                       0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
-                       0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
-                       0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
-                       0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
-               },
-       },
-       0x8475: {
-               &Ethernet{
-                       SrcMAC:       net.HardwareAddr{0xc2, 0x00, 0x57, 0x75, 0x00, 0x00},
-                       DstMAC:       net.HardwareAddr{0xc2, 0x01, 0x57, 0x75, 0x00, 0x00},
-                       EthernetType: EthernetTypeIPv4,
-               },
-               &IPv4{
-                       Version:  4,
-                       SrcIP:    net.IP{10, 0, 0, 1},
-                       DstIP:    net.IP{10, 0, 0, 2},
-                       Protocol: IPProtocolGRE,
-                       TTL:      255,
-                       Id:       10,
-                       IHL:      5,
-               },
-               &GRE{
-                       Protocol:        EthernetTypeIPv4,
-                       ChecksumPresent: true,
-               },
-               &IPv4{
-                       Version:  4,
-                       SrcIP:    net.IP{2, 3, 4, 5},
-                       DstIP:    net.IP{2, 3, 4, 50},
-                       Protocol: IPProtocolUDP,
-                       TTL:      1,
-                       IHL:      5,
-                       Flags:    IPv4DontFragment,
-                       Id:       964,
-               },
-               &UDP{
-                       SrcPort: 41781,
-                       DstPort: 33434,
-               },
-               gopacket.Payload{
-                       0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
-                       0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
-               },
-       },
-}
-
-func TestGREChecksum(t *testing.T) {
-       buf := gopacket.NewSerializeBuffer()
-       opts := gopacket.SerializeOptions{
-               ComputeChecksums: true,
-               FixLengths:       true,
-       }
-       for cksum, packet := range testGREChecksum {
-               buf.Clear()
-               if err := setNetworkLayer(packet); err != nil {
-                       t.Errorf("Failed to set network layer: %v", err)
-                       continue
-               }
-               if err := gopacket.SerializeLayers(buf, opts, packet...); err != nil {
-                       t.Errorf("Failed to serialize packet: %v", err)
-                       continue
-               }
-               p := gopacket.NewPacket(buf.Bytes(), LinkTypeEthernet, gopacket.Default)
-               t.Log(p)
-               if p.ErrorLayer() != nil {
-                       t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-                       continue
-               }
-               if got, ok := p.Layer(LayerTypeGRE).(*GRE); ok {
-                       if got.Checksum != cksum {
-                               t.Errorf("Incorrect checksum calculated for GRE packet: want %v, got %v", cksum, got.Checksum)
-                       }
-               }
-       }
-}
-
-func setNetworkLayer(layers []gopacket.SerializableLayer) error {
-       type setNetworkLayerForChecksum interface {
-               SetNetworkLayerForChecksum(gopacket.NetworkLayer) error
-       }
-       var l gopacket.NetworkLayer
-       for _, layer := range layers {
-               if n, ok := layer.(gopacket.NetworkLayer); ok {
-                       l = n
-               }
-               if s, ok := layer.(setNetworkLayerForChecksum); ok {
-                       if l == nil {
-                               return fmt.Errorf("no enclosing network layer found before: %v", s)
-                       }
-                       if err := s.SetNetworkLayerForChecksum(l); err != nil {
-                               return fmt.Errorf("failed to set network layer(%v) on layer(%v): %v", l, s, err)
-                       }
-               }
-       }
-       return nil
-}
diff --git a/vendor/github.com/google/gopacket/layers/icmp6_test.go b/vendor/github.com/google/gopacket/layers/icmp6_test.go
deleted file mode 100644 (file)
index 4a6d248..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright 2012, Google, Inc. All rights reserved.
-// Copyright 2009-2011 Andreas Krennmair. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
-       "github.com/google/gopacket"
-       "net"
-       "reflect"
-       "testing"
-)
-
-// testPacketICMPv6 is the packet:
-//   10:48:30.088384 IP6 2620:0:1005:0:26be:5ff:fe27:b17 > fe80::21f:caff:feb3:7640: ICMP6, neighbor advertisement, tgt is 2620:0:1005:0:26be:5ff:fe27:b17, length 24
-//      0x0000:  001f cab3 7640 24be 0527 0b17 86dd 6000  ....v@$..'....`.
-//      0x0010:  0000 0018 3aff 2620 0000 1005 0000 26be  ....:.&.......&.
-//      0x0020:  05ff fe27 0b17 fe80 0000 0000 0000 021f  ...'............
-//      0x0030:  caff feb3 7640 8800 1ed6 4000 0000 2620  ....v@....@...&.
-//      0x0040:  0000 1005 0000 26be 05ff fe27 0b17       ......&....'..
-var testPacketICMPv6 = []byte{
-       0x00, 0x1f, 0xca, 0xb3, 0x76, 0x40, 0x24, 0xbe, 0x05, 0x27, 0x0b, 0x17, 0x86, 0xdd, 0x60, 0x00,
-       0x00, 0x00, 0x00, 0x18, 0x3a, 0xff, 0x26, 0x20, 0x00, 0x00, 0x10, 0x05, 0x00, 0x00, 0x26, 0xbe,
-       0x05, 0xff, 0xfe, 0x27, 0x0b, 0x17, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x1f,
-       0xca, 0xff, 0xfe, 0xb3, 0x76, 0x40, 0x88, 0x00, 0x1e, 0xd6, 0x40, 0x00, 0x00, 0x00, 0x26, 0x20,
-       0x00, 0x00, 0x10, 0x05, 0x00, 0x00, 0x26, 0xbe, 0x05, 0xff, 0xfe, 0x27, 0x0b, 0x17,
-}
-
-func TestPacketICMPv6(t *testing.T) {
-       p := gopacket.NewPacket(testPacketICMPv6, LinkTypeEthernet, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv6, LayerTypeICMPv6, gopacket.LayerTypePayload}, t)
-       if got, ok := p.Layer(LayerTypeIPv6).(*IPv6); ok {
-               want := &IPv6{
-                       BaseLayer: BaseLayer{
-                               Contents: []byte{0x60, 0x0, 0x0, 0x0, 0x0, 0x18,
-                                       0x3a, 0xff, 0x26, 0x20, 0x0, 0x0, 0x10, 0x5, 0x0, 0x0, 0x26, 0xbe, 0x5,
-                                       0xff, 0xfe, 0x27, 0xb, 0x17, 0xfe, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-                                       0x2, 0x1f, 0xca, 0xff, 0xfe, 0xb3, 0x76, 0x40},
-                               Payload: []byte{0x88, 0x0, 0x1e, 0xd6, 0x40, 0x0, 0x0, 0x0, 0x26, 0x20,
-                                       0x0, 0x0, 0x10, 0x5, 0x0, 0x0, 0x26, 0xbe, 0x5, 0xff, 0xfe, 0x27, 0xb,
-                                       0x17},
-                       },
-                       Version:      6,
-                       TrafficClass: 0,
-                       FlowLabel:    0,
-                       Length:       24,
-                       NextHeader:   IPProtocolICMPv6,
-                       HopLimit:     255,
-                       SrcIP:        net.IP{0x26, 0x20, 0x0, 0x0, 0x10, 0x5, 0x0, 0x0, 0x26, 0xbe, 0x5, 0xff, 0xfe, 0x27, 0xb, 0x17},
-                       DstIP:        net.IP{0xfe, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x1f, 0xca, 0xff, 0xfe, 0xb3, 0x76, 0x40},
-               }
-               if !reflect.DeepEqual(got, want) {
-                       t.Errorf("IPv6 packet processing failed:\ngot  :\n%#v\n\nwant :\n%#v\n\n", got, want)
-               }
-       } else {
-               t.Error("No IPv6 layer type found in packet")
-       }
-       if got, ok := p.Layer(LayerTypeICMPv6).(*ICMPv6); ok {
-               want := &ICMPv6{
-                       BaseLayer: BaseLayer{
-                               Contents: []byte{0x88, 0x0, 0x1e, 0xd6, 0x40, 0x0, 0x0, 0x0},
-                               Payload: []byte{0x26, 0x20, 0x0, 0x0, 0x10,
-                                       0x5, 0x0, 0x0, 0x26, 0xbe, 0x5, 0xff, 0xfe, 0x27, 0xb, 0x17},
-                       },
-                       TypeCode:  0x8800,
-                       Checksum:  0x1ed6,
-                       TypeBytes: []byte{0x40, 0x0, 0x0, 0x0},
-               }
-               if !reflect.DeepEqual(got, want) {
-                       t.Errorf("ICMPv6 packet processing failed:\ngot  :\n%#v\n\nwant :\n%#v\n\n", got, want)
-               }
-               if got.TypeCode.String() != "NeighborAdvertisement" {
-                       t.Errorf("ICMPv6 type code, got %q want 'NeighborAdvertisement'", got.TypeCode.String())
-               }
-       } else {
-               t.Error("No ICMPv6 layer type found in packet")
-       }
-}
diff --git a/vendor/github.com/google/gopacket/layers/igmp_test.go b/vendor/github.com/google/gopacket/layers/igmp_test.go
deleted file mode 100644 (file)
index 923356d..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-// Copyright 2016, Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
-       "testing"
-
-       "github.com/google/gopacket"
-)
-
-// igmpv1MembershipReportPacket is the packet:
-//   02:45:36.033916 IP 10.60.0.132 > 224.0.1.60: igmp v1 report 224.0.1.60
-//     0x0000:  0100 5e00 013c 0030 c1bf 5755 0800 4500  ..^..<.0..WU..E.
-//     0x0010:  001c 6a7f 0000 0102 6365 0a3c 0084 e000  ..j.....ce.<....
-//     0x0020:  013c 1200 0cc3 e000 013c 0000 0000 0000  .<.......<......
-//     0x0030:  ffff ffff ffff 0452 0000 0000            .......R....
-var igmpv1MembershipReportPacket = []byte{
-       0x01, 0x00, 0x5e, 0x00, 0x01, 0x3c, 0x00, 0x30, 0xc1, 0xbf, 0x57, 0x55, 0x08, 0x00, 0x45, 0x00,
-       0x00, 0x1c, 0x6a, 0x7f, 0x00, 0x00, 0x01, 0x02, 0x63, 0x65, 0x0a, 0x3c, 0x00, 0x84, 0xe0, 0x00,
-       0x01, 0x3c, 0x12, 0x00, 0x0c, 0xc3, 0xe0, 0x00, 0x01, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x04, 0x52, 0x00, 0x00, 0x00, 0x00,
-}
-
-func TestIGMPv1MembershipReportPacket(t *testing.T) {
-       p := gopacket.NewPacket(igmpv1MembershipReportPacket, LinkTypeEthernet, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeIGMP}, t)
-
-       igmp := p.Layer(LayerTypeIGMP).(*IGMPv1or2)
-       if igmp.Type != IGMPMembershipReportV1 {
-               t.Fatal("Invalid IGMP type")
-       }
-}
-
-func BenchmarkDecodeigmpv1MembershipReportPacket(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(igmpv1MembershipReportPacket, LinkTypeEthernet, gopacket.NoCopy)
-       }
-}
-
-// igmpv2MembershipQueryPacket is the packet:
-//   02:45:28.071636 IP 10.60.0.189 > 224.0.0.1: igmp query v2
-//     0x0000:  0100 5e00 0001 0001 636f c800 0800 45c0  ..^.....co....E.
-//     0x0010:  001c 0153 0000 0102 ccd3 0a3c 00bd e000  ...S.......<....
-//     0x0020:  0001 1164 ee9b 0000 0000 0000 0000 0000  ...d............
-//     0x0030:  0000 0000 0000 0000 0000 0000            ............
-var igmpv2MembershipQueryPacket = []byte{
-       0x01, 0x00, 0x5e, 0x00, 0x00, 0x01, 0x00, 0x01, 0x63, 0x6f, 0xc8, 0x00, 0x08, 0x00, 0x45, 0xc0,
-       0x00, 0x1c, 0x01, 0x53, 0x00, 0x00, 0x01, 0x02, 0xcc, 0xd3, 0x0a, 0x3c, 0x00, 0xbd, 0xe0, 0x00,
-       0x00, 0x01, 0x11, 0x64, 0xee, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-}
-
-func TestIGMPv2MembershipQuery(t *testing.T) {
-       p := gopacket.NewPacket(igmpv2MembershipQueryPacket, LinkTypeEthernet, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeIGMP}, t)
-
-       igmp := p.Layer(LayerTypeIGMP).(*IGMPv1or2)
-       if igmp.Type != IGMPMembershipQuery {
-               t.Fatal("Invalid IGMP type")
-       }
-}
-func BenchmarkDecodeigmpv2MembershipQueryPacket(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(igmpv2MembershipQueryPacket, LinkTypeEthernet, gopacket.NoCopy)
-       }
-}
-
-// igmpv2MembershipReportPacket is the packet:
-//   02:47:32.417288 IP 10.60.5.103 > 239.255.255.253: igmp v2 report 239.255.255.253
-//     0x0000:  0100 5e7f fffd 0015 58dc d9f6 0800 4600  ..^.....X.....F.
-//     0x0010:  0020 79f0 0000 0102 ab47 0a3c 0567 efff  ..y......G.<.g..
-//     0x0020:  fffd 9404 0000 1600 fa01 efff fffd 0000  ................
-//     0x0030:  0000 0000 0000 0000 0000 0000            ............
-var igmpv2MembershipReportPacket = []byte{
-       0x01, 0x00, 0x5e, 0x7f, 0xff, 0xfd, 0x00, 0x15, 0x58, 0xdc, 0xd9, 0xf6, 0x08, 0x00, 0x46, 0x00,
-       0x00, 0x20, 0x79, 0xf0, 0x00, 0x00, 0x01, 0x02, 0xab, 0x47, 0x0a, 0x3c, 0x05, 0x67, 0xef, 0xff,
-       0xff, 0xfd, 0x94, 0x04, 0x00, 0x00, 0x16, 0x00, 0xfa, 0x01, 0xef, 0xff, 0xff, 0xfd, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-}
-
-func TestIGMPv2MembershipReport(t *testing.T) {
-       p := gopacket.NewPacket(igmpv2MembershipReportPacket, LinkTypeEthernet, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeIGMP}, t)
-
-       igmp := p.Layer(LayerTypeIGMP).(*IGMPv1or2)
-       if igmp.Type != IGMPMembershipReportV2 {
-               t.Fatal("Invalid IGMP type")
-       }
-}
-func BenchmarkDecodeigmpv2MembershipReportPacket(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(igmpv2MembershipReportPacket, LinkTypeEthernet, gopacket.NoCopy)
-       }
-}
-
-// igmp3v3MembershipQueryPacket is the packet:
-//   10:07:30.488511 IP 192.168.1.254 > 224.0.0.1: igmp query v3 [max resp time 2.4s]
-//      0x0000:  0100 5e00 0001 0026 446c 1eda 0800 46c0  ..^....&Dl....F.
-//      0x0010:  0024 17f1 4000 0102 297b c0a8 01fe e000  .$..@...){......
-//      0x0020:  0001 9404 0000 1118 ecd3 0000 0000 0214  ................
-//      0x0030:  0000 0000 0000 0000 0000 0000            ............
-var igmp3v3MembershipQueryPacket = []byte{
-       0x01, 0x00, 0x5e, 0x00, 0x00, 0x01, 0x00, 0x26, 0x44, 0x6c, 0x1e, 0xda, 0x08, 0x00, 0x46, 0xc0,
-       0x00, 0x24, 0x17, 0xf1, 0x40, 0x00, 0x01, 0x02, 0x29, 0x7b, 0xc0, 0xa8, 0x01, 0xfe, 0xe0, 0x00,
-       0x00, 0x01, 0x94, 0x04, 0x00, 0x00, 0x11, 0x18, 0xec, 0xd3, 0x00, 0x00, 0x00, 0x00, 0x02, 0x14,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-}
-
-func TestIGMPv3MembershipQuery(t *testing.T) {
-       p := gopacket.NewPacket(igmp3v3MembershipQueryPacket, LinkTypeEthernet, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeIGMP}, t)
-
-       igmp := p.Layer(LayerTypeIGMP).(*IGMP)
-       if igmp.Type != IGMPMembershipQuery {
-               t.Fatal("Invalid IGMP type")
-       }
-}
-
-func BenchmarkDecodeigmp3v3MembershipQueryPacket(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(igmp3v3MembershipQueryPacket, LinkTypeEthernet, gopacket.NoCopy)
-       }
-}
-
-// igmpv3MembershipReport2Records is the packet:
-//   10:07:29.756202 IP 192.168.1.66 > 224.0.0.22: igmp v3 report, 2 group record(s)
-//      0x0000:  0100 5e00 0016 0025 2e51 c381 0800 4658  ..^....%.Q....FX
-//      0x0010:  0030 013c 0000 0102 8133 c0a8 0142 e000  .0.<.....3...B..
-//      0x0020:  0016 9404 0000 2200 f33c 0000 0002 0200  ......"..<......
-//      0x0030:  0000 efc3 0702 0200 0000 efff fffa       ..............
-var igmpv3MembershipReport2Records = []byte{
-       0x01, 0x00, 0x5e, 0x00, 0x00, 0x16, 0x00, 0x25, 0x2e, 0x51, 0xc3, 0x81, 0x08, 0x00, 0x46, 0x58,
-       0x00, 0x30, 0x01, 0x3c, 0x00, 0x00, 0x01, 0x02, 0x81, 0x33, 0xc0, 0xa8, 0x01, 0x42, 0xe0, 0x00,
-       0x00, 0x16, 0x94, 0x04, 0x00, 0x00, 0x22, 0x00, 0xf3, 0x3c, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00,
-       0x00, 0x00, 0xef, 0xc3, 0x07, 0x02, 0x02, 0x00, 0x00, 0x00, 0xef, 0xff, 0xff, 0xfa,
-}
-
-func TestIGMPv3MembershipReport2Records(t *testing.T) {
-       p := gopacket.NewPacket(igmpv3MembershipReport2Records, LinkTypeEthernet, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeIGMP}, t)
-
-       igmp := p.Layer(LayerTypeIGMP).(*IGMP)
-       if igmp.Type != IGMPMembershipReportV3 {
-               t.Fatal("Invalid IGMP type")
-       }
-}
-
-func BenchmarkDecodeigmpv3MembershipReport2Records(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(igmpv3MembershipReport2Records, LinkTypeEthernet, gopacket.NoCopy)
-       }
-}
diff --git a/vendor/github.com/google/gopacket/layers/ip4_test.go b/vendor/github.com/google/gopacket/layers/ip4_test.go
deleted file mode 100644 (file)
index ec6b351..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// This file tests some of the functionality provided in the ip4.go
-
-package layers
-
-import (
-       "encoding/binary"
-       "encoding/hex"
-       "net"
-       "testing"
-
-       "github.com/google/gopacket"
-)
-
-// Test the function getIPv4OptionSize when the ipv4 has no options
-func TestGetIPOptLengthNoOpt(t *testing.T) {
-       ip := IPv4{}
-       length := ip.getIPv4OptionSize()
-       if length != 0 {
-               t.Fatalf("Empty option list should have 0 length.  Actual %d", length)
-       }
-}
-
-// Test the function getIPv4OptionSize when the ipv4 has end of list option
-func TestGetIPOptLengthEndOfList(t *testing.T) {
-       ip := IPv4{}
-       ip.Options = append(ip.Options, IPv4Option{OptionType: 0, OptionLength: 1})
-       length := ip.getIPv4OptionSize()
-       if length != 4 {
-               t.Fatalf("After padding, the list should have 4 length.  Actual %d", length)
-       }
-}
-
-// Test the function getIPv4OptionSize when the ipv4 has padding and end of list option
-func TestGetIPOptLengthPaddingEndOfList(t *testing.T) {
-       ip := IPv4{}
-       ip.Options = append(ip.Options, IPv4Option{OptionType: 1, OptionLength: 1})
-       ip.Options = append(ip.Options, IPv4Option{OptionType: 0, OptionLength: 1})
-       length := ip.getIPv4OptionSize()
-       if length != 4 {
-               t.Fatalf("After padding, the list should have 4 length.  Actual %d", length)
-       }
-}
-
-// Test the function getIPv4OptionSize when the ipv4 has some non-trivial option and end of list option
-func TestGetIPOptLengthOptionEndOfList(t *testing.T) {
-       ip := IPv4{}
-       someByte := make([]byte, 8)
-       ip.Options = append(ip.Options, IPv4Option{OptionType: 2, OptionLength: 10, OptionData: someByte})
-       ip.Options = append(ip.Options, IPv4Option{OptionType: 0, OptionLength: 1})
-       length := ip.getIPv4OptionSize()
-       if length != 12 {
-               t.Fatalf("The list should have 12 length.  Actual %d", length)
-       }
-}
-
-// Tests that the Options slice is properly reset before parsing new data
-func TestIPOptResetDuringDecoding(t *testing.T) {
-       ip := &IPv4{
-               Options: []IPv4Option{{OptionType: 42, OptionLength: 4, OptionData: make([]byte, 2)}},
-       }
-
-       ipWithoutOptions := &IPv4{
-               SrcIP:    net.IPv4(192, 168, 1, 1),
-               DstIP:    net.IPv4(192, 168, 1, 1),
-               Protocol: IPProtocolTCP,
-       }
-
-       ipBytes, err := serialize(ipWithoutOptions)
-
-       if err != nil {
-               t.Fatalf("Failed to serialize ip layer: %v", err)
-       }
-
-       err = ip.DecodeFromBytes(ipBytes, gopacket.NilDecodeFeedback)
-
-       if err != nil {
-               t.Fatalf("Failed to deserialize ip layer: %v", err)
-       }
-
-       if len(ip.Options) > 0 {
-               t.Fatalf("Options slice has stale data from previous packet")
-       }
-
-}
-
-func serialize(ip *IPv4) ([]byte, error) {
-       buffer := gopacket.NewSerializeBuffer()
-       err := ip.SerializeTo(buffer, gopacket.SerializeOptions{
-               FixLengths:       true,
-               ComputeChecksums: true,
-       })
-       return buffer.Bytes(), err
-}
-
-// Test the function checksum
-func TestChecksum(t *testing.T) {
-       testData := []struct {
-               name   string
-               header string
-               want   string
-       }{{
-               name:   "sum has two carries",
-               header: "4540005800000000ff11ffff0aeb1d070aed8877",
-               want:   "fffe",
-       }, {
-               name:   "wikipedia case",
-               header: "45000073000040004011b861c0a80001c0a800c7",
-               want:   "b861",
-       }}
-
-       for _, test := range testData {
-               bytes, err := hex.DecodeString(test.header)
-               if err != nil {
-                       t.Fatalf("Failed to Decode header: %v", err)
-               }
-               wantBytes, err := hex.DecodeString(test.want)
-               if err != nil {
-                       t.Fatalf("Failed to decode want checksum: %v", err)
-               }
-
-               if got, want := checksum(bytes), binary.BigEndian.Uint16(wantBytes); got != want {
-                       t.Errorf("In test %q, got incorrect checksum: got(%x), want(%x)", test.name, got, want)
-               }
-       }
-}
diff --git a/vendor/github.com/google/gopacket/layers/ip6_test.go b/vendor/github.com/google/gopacket/layers/ip6_test.go
deleted file mode 100644 (file)
index ab22f17..0000000
+++ /dev/null
@@ -1,430 +0,0 @@
-// Copyright 2014, Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
-       "bytes"
-       "github.com/google/gopacket"
-       "net"
-       "reflect"
-       "testing"
-)
-
-func TestSerializeIPv6HeaderTLVOptions(t *testing.T) {
-       //RFC 2460 Appendix B
-       /*
-          Example 3
-
-          A Hop-by-Hop or Destination Options header containing both options X
-          and Y from Examples 1 and 2 would have one of the two following
-          formats, depending on which option appeared first:
-
-          +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-          |  Next Header  | Hdr Ext Len=3 | Option Type=X |Opt Data Len=12|
-          +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-          |                         4-octet field                         |
-          +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-          |                                                               |
-          +                         8-octet field                         +
-          |                                                               |
-          +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-          | PadN Option=1 |Opt Data Len=1 |       0       | Option Type=Y |
-          +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-          |Opt Data Len=7 | 1-octet field |         2-octet field         |
-          +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-          |                         4-octet field                         |
-          +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-          | PadN Option=1 |Opt Data Len=2 |       0       |       0       |
-          +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       */
-       opt1 := &ipv6HeaderTLVOption{}
-       opt1.OptionType = 0x1e
-       opt1.OptionData = []byte{0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb}
-       opt1.OptionAlignment = [2]uint8{8, 2}
-
-       opt2 := &ipv6HeaderTLVOption{}
-       opt2.OptionType = 0x3e
-       opt2.OptionData = []byte{0x11, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44}
-       opt2.OptionAlignment = [2]uint8{4, 3}
-
-       l := serializeIPv6HeaderTLVOptions(nil, []*ipv6HeaderTLVOption{opt1, opt2}, true)
-       b := make([]byte, l)
-       serializeIPv6HeaderTLVOptions(b, []*ipv6HeaderTLVOption{opt1, opt2}, true)
-       got := b
-       want := []byte{0x1e, 0x0c, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x01, 0x01, 0x00, 0x3e, 0x07, 0x11, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x01, 0x02, 0x00, 0x00}
-
-       if !bytes.Equal(got, want) {
-               t.Errorf("IPv6HeaderTLVOption serialize (X,Y) failed:\ngot:\n%#v\n\nwant:\n%#v\n\n", got, want)
-       }
-
-       /*
-          +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-          |  Next Header  | Hdr Ext Len=3 | Pad1 Option=0 | Option Type=Y |
-          +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-          |Opt Data Len=7 | 1-octet field |         2-octet field         |
-          +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-          |                         4-octet field                         |
-          +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-          | PadN Option=1 |Opt Data Len=4 |       0       |       0       |
-          +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-          |       0       |       0       | Option Type=X |Opt Data Len=12|
-          +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-          |                         4-octet field                         |
-          +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-          |                                                               |
-          +                         8-octet field                         +
-          |                                                               |
-          +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       */
-
-       l = serializeIPv6HeaderTLVOptions(nil, []*ipv6HeaderTLVOption{opt2, opt1}, true)
-       b = make([]byte, l)
-       serializeIPv6HeaderTLVOptions(b, []*ipv6HeaderTLVOption{opt2, opt1}, true)
-       got = b
-       want = []byte{0x00, 0x3e, 0x07, 0x11, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x0c, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb}
-
-       if !bytes.Equal(got, want) {
-               t.Errorf("IPv6HeaderTLVOption serialize (Y,X) failed:\ngot:\n%#v\n\nwant:\n%#v\n\n", got, want)
-       }
-}
-
-var testPacketIPv6HopByHop0 = []byte{
-       0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x3b, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00,
-}
-
-func TestPacketIPv6HopByHop0Serialize(t *testing.T) {
-       var serialize []gopacket.SerializableLayer = make([]gopacket.SerializableLayer, 0, 2)
-       var err error
-
-       ip6 := &IPv6{}
-       ip6.Version = 6
-       ip6.NextHeader = IPProtocolIPv6HopByHop
-       ip6.HopLimit = 64
-       ip6.SrcIP = net.ParseIP("2001:db8::1")
-       ip6.DstIP = net.ParseIP("2001:db8::2")
-       serialize = append(serialize, ip6)
-
-       tlv := &IPv6HopByHopOption{}
-       tlv.OptionType = 0x01 //PadN
-       tlv.OptionData = []byte{0x00, 0x00, 0x00, 0x00}
-       hop := &IPv6HopByHop{}
-       hop.Options = append(hop.Options, tlv)
-       hop.NextHeader = IPProtocolNoNextHeader
-       ip6.HopByHop = hop
-
-       buf := gopacket.NewSerializeBuffer()
-       opts := gopacket.SerializeOptions{FixLengths: true}
-       err = gopacket.SerializeLayers(buf, opts, serialize...)
-       if err != nil {
-               t.Fatal(err)
-       }
-
-       got := buf.Bytes()
-       want := testPacketIPv6HopByHop0
-       if !bytes.Equal(got, want) {
-               t.Errorf("IPv6HopByHop serialize failed:\ngot:\n%#v\n\nwant:\n%#v\n\n", got, want)
-       }
-}
-
-func TestPacketIPv6HopByHop0Decode(t *testing.T) {
-       ip6 := &IPv6{
-               BaseLayer: BaseLayer{
-                       Contents: []byte{
-                               0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00,
-                               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00,
-                               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
-                       },
-                       Payload: []byte{0x3b, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00},
-               },
-               Version:      6,
-               TrafficClass: 0,
-               FlowLabel:    0,
-               Length:       8,
-               NextHeader:   IPProtocolIPv6HopByHop,
-               HopLimit:     64,
-               SrcIP:        net.IP{0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
-               DstIP: net.IP{0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00,
-                       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02},
-       }
-
-       hop := &ip6.hbh
-       hop.ipv6ExtensionBase = ipv6ExtensionBase{
-               BaseLayer: BaseLayer{
-                       Contents: []byte{0x3b, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00},
-                       Payload:  []byte{},
-               },
-               NextHeader:   IPProtocolNoNextHeader,
-               HeaderLength: uint8(0),
-               ActualLength: 8,
-       }
-       opt := &IPv6HopByHopOption{
-               OptionType:   uint8(0x01),
-               OptionLength: uint8(0x04),
-               ActualLength: 6,
-               OptionData:   []byte{0x00, 0x00, 0x00, 0x00},
-       }
-       hop.Options = append(hop.Options, opt)
-       ip6.HopByHop = hop
-
-       p := gopacket.NewPacket(testPacketIPv6HopByHop0, LinkTypeRaw, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeIPv6, LayerTypeIPv6HopByHop}, t)
-       if got, ok := p.Layer(LayerTypeIPv6).(*IPv6); ok {
-               want := ip6
-               want.HopByHop = got.HopByHop // avoid comparing pointers
-               if !reflect.DeepEqual(got, want) {
-                       t.Errorf("IPv6 packet processing failed:\ngot:\n%#v\n\nwant:\n%#v\n\n", got, want)
-               }
-       } else {
-               t.Error("No IPv6 layer type found in packet")
-       }
-       if got, ok := p.Layer(LayerTypeIPv6HopByHop).(*IPv6HopByHop); ok {
-               want := hop
-               if !reflect.DeepEqual(got, want) {
-                       t.Errorf("IPv6HopByHop packet processing failed:\ngot\n%#v\n\nwant:\n%#v\n\n", got, want)
-               }
-       } else {
-               t.Error("No IPv6HopByHop layer type found in packet")
-       }
-}
-
-// testPacketIPv6Destination0 is the packet:
-//   12:40:14.429409595 IP6 2001:db8::1 > 2001:db8::2: DSTOPT no next header
-//     0x0000:  6000 0000 0008 3c40 2001 0db8 0000 0000  `.....<@........
-//     0x0010:  0000 0000 0000 0001 2001 0db8 0000 0000  ................
-//     0x0020:  0000 0000 0000 0002 3b00 0104 0000 0000  ........;.......
-var testPacketIPv6Destination0 = []byte{
-       0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x3c, 0x40, 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x3b, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00,
-}
-
-func TestPacketIPv6Destination0Serialize(t *testing.T) {
-       var serialize []gopacket.SerializableLayer = make([]gopacket.SerializableLayer, 0, 2)
-       var err error
-
-       ip6 := &IPv6{}
-       ip6.Version = 6
-       ip6.NextHeader = IPProtocolIPv6Destination
-       ip6.HopLimit = 64
-       ip6.SrcIP = net.ParseIP("2001:db8::1")
-       ip6.DstIP = net.ParseIP("2001:db8::2")
-       serialize = append(serialize, ip6)
-
-       tlv := &IPv6DestinationOption{}
-       tlv.OptionType = 0x01 //PadN
-       tlv.OptionData = []byte{0x00, 0x00, 0x00, 0x00}
-       dst := &IPv6Destination{}
-       dst.Options = append(dst.Options, tlv)
-       dst.NextHeader = IPProtocolNoNextHeader
-       serialize = append(serialize, dst)
-
-       buf := gopacket.NewSerializeBuffer()
-       opts := gopacket.SerializeOptions{FixLengths: true}
-       err = gopacket.SerializeLayers(buf, opts, serialize...)
-       if err != nil {
-               t.Fatal(err)
-       }
-
-       got := buf.Bytes()
-       want := testPacketIPv6Destination0
-       if !bytes.Equal(got, want) {
-               t.Errorf("IPv6Destination serialize failed:\ngot:\n%#v\n\nwant:\n%#v\n\n", got, want)
-       }
-}
-
-func TestPacketIPv6Destination0Decode(t *testing.T) {
-       ip6 := &IPv6{
-               BaseLayer: BaseLayer{
-                       Contents: []byte{
-                               0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x3c, 0x40, 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00,
-                               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00,
-                               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
-                       },
-                       Payload: []byte{0x3b, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00},
-               },
-               Version:      6,
-               TrafficClass: 0,
-               FlowLabel:    0,
-               Length:       8,
-               NextHeader:   IPProtocolIPv6Destination,
-               HopLimit:     64,
-               SrcIP:        net.IP{0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
-               DstIP: net.IP{0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00,
-                       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02},
-       }
-
-       dst := &IPv6Destination{}
-       dst.BaseLayer = BaseLayer{
-               Contents: []byte{0x3b, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00},
-               Payload:  []byte{},
-       }
-       dst.NextHeader = IPProtocolNoNextHeader
-       dst.HeaderLength = uint8(0)
-       dst.ActualLength = 8
-       opt := &IPv6DestinationOption{
-               OptionType:   uint8(0x01),
-               OptionLength: uint8(0x04),
-               ActualLength: 6,
-               OptionData:   []byte{0x00, 0x00, 0x00, 0x00},
-       }
-       dst.Options = append(dst.Options, opt)
-
-       p := gopacket.NewPacket(testPacketIPv6Destination0, LinkTypeRaw, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeIPv6, LayerTypeIPv6Destination}, t)
-       if got, ok := p.Layer(LayerTypeIPv6).(*IPv6); ok {
-               want := ip6
-               if !reflect.DeepEqual(got, want) {
-                       t.Errorf("IPv6 packet processing failed:\ngot:\n%#v\n\nwant:\n%#v\n\n", got, want)
-               }
-       } else {
-               t.Error("No IPv6 layer type found in packet")
-       }
-       if got, ok := p.Layer(LayerTypeIPv6Destination).(*IPv6Destination); ok {
-               want := dst
-               if !reflect.DeepEqual(got, want) {
-                       t.Errorf("IPv6Destination packet processing failed:\ngot:\n%#v\n\nwant:\n%#v\n\n", got, want)
-               }
-       } else {
-               t.Error("No IPv6Destination layer type found in packet")
-       }
-}
-
-var testPacketIPv6JumbogramHeader = []byte{
-       0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x3b, 0x00, 0xc2, 0x04, 0x00, 0x01, 0x00, 0x08,
-}
-
-func TestIPv6JumbogramSerialize(t *testing.T) {
-       var serialize []gopacket.SerializableLayer = make([]gopacket.SerializableLayer, 0, 2)
-       var err error
-
-       ip6 := &IPv6{}
-       ip6.Version = 6
-       ip6.NextHeader = IPProtocolNoNextHeader
-       ip6.HopLimit = 64
-       ip6.SrcIP = net.ParseIP("2001:db8::1")
-       ip6.DstIP = net.ParseIP("2001:db8::2")
-       serialize = append(serialize, ip6)
-
-       payload := make([]byte, ipv6MaxPayloadLength+1)
-       for i := range payload {
-               payload[i] = 0xfe
-       }
-       serialize = append(serialize, gopacket.Payload(payload))
-
-       buf := gopacket.NewSerializeBuffer()
-       opts := gopacket.SerializeOptions{FixLengths: true}
-       err = gopacket.SerializeLayers(buf, opts, serialize...)
-       if err != nil {
-               t.Fatal(err)
-       }
-
-       got := buf.Bytes()
-       w := new(bytes.Buffer)
-       w.Write(testPacketIPv6JumbogramHeader)
-       w.Write(payload)
-       want := w.Bytes()
-
-       if !bytes.Equal(got, want) {
-               t.Errorf("IPv6 Jumbogram serialize failed:\ngot:\n%v\n\nwant:\n%v\n\n",
-                       gopacket.LongBytesGoString(got), gopacket.LongBytesGoString(want))
-       }
-}
-
-func TestIPv6JumbogramDecode(t *testing.T) {
-       payload := make([]byte, ipv6MaxPayloadLength+1)
-       for i := range payload {
-               payload[i] = 0xfe
-       }
-
-       ip6 := &IPv6{
-               BaseLayer: BaseLayer{
-                       Contents: []byte{
-                               0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00,
-                               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00,
-                               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
-                       },
-               },
-               Version:      6,
-               TrafficClass: 0,
-               FlowLabel:    0,
-               Length:       0,
-               NextHeader:   IPProtocolIPv6HopByHop,
-               HopLimit:     64,
-               SrcIP:        net.IP{0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
-               DstIP: net.IP{0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00,
-                       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02},
-       }
-       buf := new(bytes.Buffer)
-       buf.Write([]byte{0x3b, 0x00, 0xc2, 0x04, 0x00, 0x01, 0x00, 0x08})
-       buf.Write(payload)
-       ip6.Payload = buf.Bytes()
-
-       hop := &ip6.hbh
-       hop.Contents = []byte{0x3b, 0x00, 0xc2, 0x04, 0x00, 0x01, 0x00, 0x08}
-       hop.Payload = payload
-       hop.NextHeader = IPProtocolNoNextHeader
-       hop.HeaderLength = uint8(0)
-       hop.ActualLength = 8
-       opt := &IPv6HopByHopOption{}
-       opt.OptionType = uint8(0xc2)
-       opt.OptionLength = uint8(0x04)
-       opt.ActualLength = 6
-       opt.OptionData = []byte{0x00, 0x01, 0x00, 0x08}
-       hop.Options = append(hop.Options, opt)
-       ip6.HopByHop = hop
-
-       pkt := new(bytes.Buffer)
-       pkt.Write(testPacketIPv6JumbogramHeader)
-       pkt.Write(payload)
-
-       p := gopacket.NewPacket(pkt.Bytes(), LinkTypeRaw, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeIPv6, LayerTypeIPv6HopByHop, gopacket.LayerTypePayload}, t)
-
-       if got, ok := p.Layer(LayerTypeIPv6).(*IPv6); ok {
-               want := ip6
-               want.HopByHop = got.HopByHop // Hack, avoid comparing pointers
-               if !reflect.DeepEqual(got, want) {
-                       t.Errorf("IPv6 packet processing failed:\ngot:\n%v\n\nwant:\n%v\n\n",
-                               gopacket.LayerGoString(got), gopacket.LayerGoString(want))
-               }
-       } else {
-               t.Error("No IPv6 layer type found in packet")
-       }
-
-       if got, ok := p.Layer(LayerTypeIPv6HopByHop).(*IPv6HopByHop); ok {
-               want := hop
-               if !reflect.DeepEqual(got, want) {
-                       t.Errorf("IPv6HopByHop packet processing failed:\ngot:\n%v\n\nwant:\n%v\n\n",
-                               gopacket.LayerGoString(got), gopacket.LayerGoString(want))
-               }
-       } else {
-               t.Error("No IPv6HopByHop layer type found in packet")
-       }
-
-       if got, ok := p.Layer(gopacket.LayerTypePayload).(*gopacket.Payload); ok {
-               want := (*gopacket.Payload)(&payload)
-               if !reflect.DeepEqual(got, want) {
-                       t.Errorf("Payload packet processing failed:\ngot:\n%v\n\nwant:\n%v\n\n",
-                               gopacket.LayerGoString(got), gopacket.LayerGoString(want))
-               }
-       } else {
-               t.Error("No Payload layer type found in packet")
-       }
-}
diff --git a/vendor/github.com/google/gopacket/layers/ipsec_test.go b/vendor/github.com/google/gopacket/layers/ipsec_test.go
deleted file mode 100644 (file)
index 466646d..0000000
+++ /dev/null
@@ -1,154 +0,0 @@
-// Copyright 2012, Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
-       "github.com/google/gopacket"
-       "reflect"
-       "testing"
-)
-
-// testPacketIPSecAHTransport is the packet:
-//   20:45:10.325850 IP 192.168.1.1 > 192.168.1.2: AH(spi=0x00000101,seq=0x1): ICMP echo request, id 1560, seq 1, length 64
-//      0x0000:  7ec0 ffc6 48f1 1a0e 3c4e 3b3a 0800 4500  ~...H...<N;:..E.
-//      0x0010:  006c 650a 4000 4033 5201 c0a8 0101 c0a8  .le.@.@3R.......
-//      0x0020:  0102 0104 0000 0000 0101 0000 0001 2533  ..............%3
-//      0x0030:  01b1 a20b b6f1 bdbf 9d9e 0800 fbe5 0618  ................
-//      0x0040:  0001 c6e1 a354 0000 0000 c8f7 0400 0000  .....T..........
-//      0x0050:  0000 1011 1213 1415 1617 1819 1a1b 1c1d  ................
-//      0x0060:  1e1f 2021 2223 2425 2627 2829 2a2b 2c2d  ...!"#$%&'()*+,-
-//      0x0070:  2e2f 3031 3233 3435 3637                 ./01234567
-var testPacketIPSecAHTransport = []byte{
-       0x7e, 0xc0, 0xff, 0xc6, 0x48, 0xf1, 0x1a, 0x0e, 0x3c, 0x4e, 0x3b, 0x3a, 0x08, 0x00, 0x45, 0x00,
-       0x00, 0x6c, 0x65, 0x0a, 0x40, 0x00, 0x40, 0x33, 0x52, 0x01, 0xc0, 0xa8, 0x01, 0x01, 0xc0, 0xa8,
-       0x01, 0x02, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x25, 0x33,
-       0x01, 0xb1, 0xa2, 0x0b, 0xb6, 0xf1, 0xbd, 0xbf, 0x9d, 0x9e, 0x08, 0x00, 0xfb, 0xe5, 0x06, 0x18,
-       0x00, 0x01, 0xc6, 0xe1, 0xa3, 0x54, 0x00, 0x00, 0x00, 0x00, 0xc8, 0xf7, 0x04, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d,
-       0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d,
-       0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
-}
-
-func TestPacketIPSecAHTransport(t *testing.T) {
-       p := gopacket.NewPacket(testPacketIPSecAHTransport, LinkTypeEthernet, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeIPSecAH, LayerTypeICMPv4, gopacket.LayerTypePayload}, t)
-       if got, ok := p.Layer(LayerTypeIPSecAH).(*IPSecAH); ok {
-               want := &IPSecAH{
-                       Reserved:           0x0,
-                       SPI:                0x101,
-                       Seq:                1,
-                       AuthenticationData: []byte{0x25, 0x33, 0x01, 0xb1, 0xa2, 0x0b, 0xb6, 0xf1, 0xbd, 0xbf, 0x9d, 0x9e},
-               }
-               want.BaseLayer = BaseLayer{testPacketIPSecAHTransport[34:58], testPacketIPSecAHTransport[58:]}
-               want.NextHeader = IPProtocolICMPv4
-               want.HeaderLength = 0x4
-               want.ActualLength = 0x18
-               if !reflect.DeepEqual(want, got) {
-                       t.Errorf("IPSecAH layer mismatch, \nwant %#v\ngot  %#v\n", want, got)
-               }
-       }
-}
-
-func BenchmarkDecodePacketIPSecAHTransport(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testPacketIPSecAHTransport, LinkTypeEthernet, gopacket.NoCopy)
-       }
-}
-
-// testPacketIPSecAHTunnel is the packet:
-//   14:45:43.252917 IP 192.168.1.1 > 192.168.1.2: AH(spi=0x00000101,seq=0x1): IP 172.16.1.1 > 172.16.2.1: ICMP echo request, id 31322, seq 1, length 64 (ipip-proto-4)
-//      0x0000:  7220 4d91 63c9 566c ed2d 73cd 0800 4500  r.M.c.Vl.-s...E.
-//      0x0010:  0080 0000 4000 4033 b6f7 c0a8 0101 c0a8  ....@.@3........
-//      0x0020:  0102 0404 0000 0000 0101 0000 0001 cca4  ................
-//      0x0030:  01da 9eb4 fb75 10fe 5a59 4500 0054 a96f  .....u..ZYE..T.o
-//      0x0040:  4000 4001 3617 ac10 0101 ac10 0201 0800  @.@.6...........
-//      0x0050:  d75f 7a5a 0001 0741 3355 0000 0000 a9db  ._zZ...A3U......
-//      0x0060:  0300 0000 0000 1011 1213 1415 1617 1819  ................
-//      0x0070:  1a1b 1c1d 1e1f 2021 2223 2425 2627 2829  .......!"#$%&'()
-//      0x0080:  2a2b 2c2d 2e2f 3031 3233 3435 3637       *+,-./01234567
-var testPacketIPSecAHTunnel = []byte{
-       0x72, 0x20, 0x4d, 0x91, 0x63, 0xc9, 0x56, 0x6c, 0xed, 0x2d, 0x73, 0xcd, 0x08, 0x00, 0x45, 0x00,
-       0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x40, 0x33, 0xb6, 0xf7, 0xc0, 0xa8, 0x01, 0x01, 0xc0, 0xa8,
-       0x01, 0x02, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0xcc, 0xa4,
-       0x01, 0xda, 0x9e, 0xb4, 0xfb, 0x75, 0x10, 0xfe, 0x5a, 0x59, 0x45, 0x00, 0x00, 0x54, 0xa9, 0x6f,
-       0x40, 0x00, 0x40, 0x01, 0x36, 0x17, 0xac, 0x10, 0x01, 0x01, 0xac, 0x10, 0x02, 0x01, 0x08, 0x00,
-       0xd7, 0x5f, 0x7a, 0x5a, 0x00, 0x01, 0x07, 0x41, 0x33, 0x55, 0x00, 0x00, 0x00, 0x00, 0xa9, 0xdb,
-       0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19,
-       0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29,
-       0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
-}
-
-func TestPacketIPSecAHTunnel(t *testing.T) {
-       p := gopacket.NewPacket(testPacketIPSecAHTunnel, LinkTypeEthernet, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeIPSecAH, LayerTypeIPv4, LayerTypeICMPv4, gopacket.LayerTypePayload}, t)
-       if got, ok := p.Layer(LayerTypeIPSecAH).(*IPSecAH); ok {
-               want := &IPSecAH{
-                       Reserved:           0x0,
-                       SPI:                0x101,
-                       Seq:                1,
-                       AuthenticationData: []byte{0xcc, 0xa4, 0x01, 0xda, 0x9e, 0xb4, 0xfb, 0x75, 0x10, 0xfe, 0x5a, 0x59},
-               }
-               want.BaseLayer = BaseLayer{testPacketIPSecAHTunnel[34:58], testPacketIPSecAHTunnel[58:]}
-               want.NextHeader = IPProtocolIPv4
-               want.HeaderLength = 0x4
-               want.ActualLength = 0x18
-               if !reflect.DeepEqual(want, got) {
-                       t.Errorf("IPSecAH layer mismatch, \nwant %#v\ngot  %#v\n", want, got)
-               }
-       }
-}
-
-func BenchmarkDecodePacketIPSecAHTunnel(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testPacketIPSecAHTunnel, LinkTypeEthernet, gopacket.NoCopy)
-       }
-}
-
-// testPacketIPSecESP is the packet:
-//   04:30:37.629376 IP 190.0.0.1 > 190.0.0.2: ESP(spi=0x0000006e,seq=0x13), length 116
-//      0x0000:  0000 0000 0012 0011 434a d70a 0800 4500  ........CJ....E.
-//      0x0010:  0088 0000 4000 4032 be40 be00 0001 be00  ....@.@2.@......
-//      0x0020:  0002 0000 006e 0000 0013 82f4 1077 0418  .....n.......w..
-//      0x0030:  e8ce dc45 1bac 22bb daaf 2ad2 c2e8 315b  ...E.."...*...1[
-//      0x0040:  ce9a 39da 2aae cf43 3716 70ab 7e7c 4676  ..9.*..C7.p.~|Fv
-//      0x0050:  c3fc d109 c990 274d f81c 6534 9a40 a0ef  ......'M..e4.@..
-//      0x0060:  46b1 7da5 05af dda8 d0ba 6e23 d1ee 1f10  F.}.......n#....
-//      0x0070:  730c 7371 03b1 445c 2f70 852f 8475 12fb  s.sq..D\/p./.u..
-//      0x0080:  b057 a19b a617 bae7 09ca 8836 942f 3334  .W.........6./34
-//      0x0090:  312b 96d2 a4e3                           1+....
-var testPacketIPSecESP = []byte{
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x11, 0x43, 0x4a, 0xd7, 0x0a, 0x08, 0x00, 0x45, 0x00,
-       0x00, 0x88, 0x00, 0x00, 0x40, 0x00, 0x40, 0x32, 0xbe, 0x40, 0xbe, 0x00, 0x00, 0x01, 0xbe, 0x00,
-       0x00, 0x02, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x13, 0x82, 0xf4, 0x10, 0x77, 0x04, 0x18,
-       0xe8, 0xce, 0xdc, 0x45, 0x1b, 0xac, 0x22, 0xbb, 0xda, 0xaf, 0x2a, 0xd2, 0xc2, 0xe8, 0x31, 0x5b,
-       0xce, 0x9a, 0x39, 0xda, 0x2a, 0xae, 0xcf, 0x43, 0x37, 0x16, 0x70, 0xab, 0x7e, 0x7c, 0x46, 0x76,
-       0xc3, 0xfc, 0xd1, 0x09, 0xc9, 0x90, 0x27, 0x4d, 0xf8, 0x1c, 0x65, 0x34, 0x9a, 0x40, 0xa0, 0xef,
-       0x46, 0xb1, 0x7d, 0xa5, 0x05, 0xaf, 0xdd, 0xa8, 0xd0, 0xba, 0x6e, 0x23, 0xd1, 0xee, 0x1f, 0x10,
-       0x73, 0x0c, 0x73, 0x71, 0x03, 0xb1, 0x44, 0x5c, 0x2f, 0x70, 0x85, 0x2f, 0x84, 0x75, 0x12, 0xfb,
-       0xb0, 0x57, 0xa1, 0x9b, 0xa6, 0x17, 0xba, 0xe7, 0x09, 0xca, 0x88, 0x36, 0x94, 0x2f, 0x33, 0x34,
-       0x31, 0x2b, 0x96, 0xd2, 0xa4, 0xe3,
-}
-
-func TestPacketIPSecESP(t *testing.T) {
-       p := gopacket.NewPacket(testPacketIPSecESP, LinkTypeEthernet, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeIPSecESP}, t)
-}
-
-func BenchmarkDecodePacketIPSecESP(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testPacketIPSecESP, LinkTypeEthernet, gopacket.NoCopy)
-       }
-}
diff --git a/vendor/github.com/google/gopacket/layers/mpls_test.go b/vendor/github.com/google/gopacket/layers/mpls_test.go
deleted file mode 100644 (file)
index e0a2b95..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright 2016 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
-       "reflect"
-       "testing"
-
-       "github.com/google/gopacket"
-)
-
-// testPacketMPLS
-// Ethernet II, Src: cc:15:14:64:00:00 (cc:15:14:64:00:00), Dst: cc:13:14:64:00:01 (cc:13:14:64:00:01)
-// MultiProtocol Label Switching Header, Label: 17, Exp: 0, S: 0, TTL: 254
-// MultiProtocol Label Switching Header, Label: 19, Exp: 0, S: 1, TTL: 254
-// Internet Protocol Version 4, Src: 12.0.0.1, Dst: 2.2.2.2
-// Internet Control Message Protocol
-// 0000   cc 13 14 64 00 01 cc 15 14 64 00 00 88 47 00 01  ...d.....d...G..
-// 0010   10 fe 00 01 31 fe 45 00 00 64 00 39 00 00 fe 01  ....1.E..d.9....
-// 0020   ac 5b 0c 00 00 01 02 02 02 02 08 00 3a 6b 00 0b  .[..........:k..
-// 0030   00 02 00 00 00 00 00 3e 43 94 ab cd ab cd ab cd  .......>C.......
-// 0040   ab cd ab cd ab cd ab cd ab cd ab cd ab cd ab cd  ................
-// 0050   ab cd ab cd ab cd ab cd ab cd ab cd ab cd ab cd  ................
-// 0060   ab cd ab cd ab cd ab cd ab cd ab cd ab cd ab cd  ................
-// 0070   ab cd ab cd ab cd ab cd ab cd                    ..........
-
-var testPacketMPLS = []byte{
-       0xcc, 0x13, 0x14, 0x64, 0x00, 0x01, 0xcc, 0x15, 0x14, 0x64, 0x00, 0x00, 0x88, 0x47, 0x00, 0x01,
-       0x10, 0xfe, 0x00, 0x01, 0x31, 0xfe, 0x45, 0x00, 0x00, 0x64, 0x00, 0x39, 0x00, 0x00, 0xfe, 0x01,
-       0xac, 0x5b, 0x0c, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, 0x08, 0x00, 0x3a, 0x6b, 0x00, 0x0b,
-       0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x43, 0x94, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
-       0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
-       0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
-       0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
-       0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
-}
-
-func TestPacketMPLS(t *testing.T) {
-       p := gopacket.NewPacket(testPacketMPLS, LinkTypeEthernet, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeMPLS, LayerTypeMPLS, LayerTypeIPv4, LayerTypeICMPv4, gopacket.LayerTypePayload}, t)
-       if got, ok := p.Layers()[1].(*MPLS); ok {
-               want := &MPLS{
-                       BaseLayer: BaseLayer{
-                               Contents: []byte{0x00, 0x01, 0x10, 0xfe},
-                               Payload: []byte{0x00, 0x01, 0x31, 0xfe, 0x45, 0x00, 0x00, 0x64, 0x00, 0x39, 0x00, 0x00, 0xfe, 0x01,
-                                       0xac, 0x5b, 0x0c, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, 0x08, 0x00, 0x3a, 0x6b, 0x00, 0x0b,
-                                       0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x43, 0x94, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
-                                       0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
-                                       0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
-                                       0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
-                                       0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd},
-                       },
-                       Label:        17,
-                       TrafficClass: 0,
-                       StackBottom:  false,
-                       TTL:          254,
-               }
-               if !reflect.DeepEqual(want, got) {
-                       t.Errorf("MPLS layer 1 mismatch, \nwant %#v\ngot %#v\n", want, got)
-               }
-       }
-       if got, ok := p.Layers()[2].(*MPLS); ok {
-               want := &MPLS{
-                       BaseLayer: BaseLayer{
-                               Contents: []byte{0x00, 0x01, 0x31, 0xfe},
-                               Payload: []byte{0x45, 0x00, 0x00, 0x64, 0x00, 0x39, 0x00, 0x00, 0xfe, 0x01,
-                                       0xac, 0x5b, 0x0c, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, 0x08, 0x00, 0x3a, 0x6b, 0x00, 0x0b,
-                                       0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x43, 0x94, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
-                                       0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
-                                       0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
-                                       0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
-                                       0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd},
-                       },
-                       Label:        19,
-                       TrafficClass: 0,
-                       StackBottom:  true,
-                       TTL:          254,
-               }
-               if !reflect.DeepEqual(want, got) {
-                       t.Errorf("MPLS layer 2 mismatch, \nwant %#v\ngot %#v\n", want, got)
-               }
-       }
-}
-
-func BenchmarkDecodePacketMPLS(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testPacketMPLS, LinkTypeEthernet, gopacket.NoCopy)
-       }
-}
diff --git a/vendor/github.com/google/gopacket/layers/ntp_test.go b/vendor/github.com/google/gopacket/layers/ntp_test.go
deleted file mode 100644 (file)
index b522216..0000000
+++ /dev/null
@@ -1,258 +0,0 @@
-// Copyright 2016 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-//
-//******************************************************************************
-
-package layers
-
-import (
-       "crypto/rand"
-       "github.com/google/gopacket"
-       "io"
-       "reflect"
-       "testing"
-)
-
-//******************************************************************************
-
-// checkNTP() uses the ntp.go code to analyse the packet bytes as an NTP UDP
-// packet and generate an NTP object. It then compares the generated NTP object
-// with the one provided and throws an error if there is any difference.
-// The desc argument is output with any failure message to identify the test.
-func checkNTP(desc string, t *testing.T, packetBytes []byte, pExpectedNTP *NTP) {
-
-       // Analyse the packet bytes, yielding a new packet object p.
-       p := gopacket.NewPacket(packetBytes, LinkTypeEthernet, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Errorf("Failed to decode packet %s: %v", desc, p.ErrorLayer().Error())
-       }
-
-       // Ensure that the packet analysis yielded the correct set of layers:
-       //    Link Layer        = Ethernet.
-       //    Network Layer     = IPv4.
-       //    Transport Layer   = UDP.
-       //    Application Layer = NTP.
-       checkLayers(p, []gopacket.LayerType{
-               LayerTypeEthernet,
-               LayerTypeIPv4,
-               LayerTypeUDP,
-               LayerTypeNTP}, t)
-
-       // Select the Application (NTP) layer.
-       pResultNTP, ok := p.ApplicationLayer().(*NTP)
-       if !ok {
-               t.Error("No NTP layer type found in packet in " + desc + ".")
-       }
-
-       // Compare the generated NTP object with the expected NTP object.
-       if !reflect.DeepEqual(pResultNTP, pExpectedNTP) {
-               t.Errorf("NTP packet processing failed for packet "+desc+
-                       ":\ngot  :\n%#v\n\nwant :\n%#v\n\n", pResultNTP, pExpectedNTP)
-       }
-       buf := gopacket.NewSerializeBuffer()
-       opts := gopacket.SerializeOptions{}
-       err := pResultNTP.SerializeTo(buf, opts)
-       if err != nil {
-               t.Error(err)
-       }
-       if !reflect.DeepEqual(pResultNTP.BaseLayer.Contents, buf.Bytes()) {
-               t.Errorf("NTP packet serialization failed for packet "+desc+
-                       ":\ngot  :\n%x\n\nwant :\n%x\n\n", buf.Bytes(), packetBytes)
-       }
-}
-
-//******************************************************************************
-
-func TestNTPOne(t *testing.T) {
-
-       // This test packet is the first NTP packet in the NTP sample capture
-       // pcap file NTP_sync.pcap on the Wireshark sample captures page:
-       //
-       //    https://wiki.wireshark.org/SampleCaptures
-       //    https://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=get&target=NTP_sync.pcap
-       var testPacketNTP = []byte{
-               0x00, 0x0c, 0x41, 0x82, 0xb2, 0x53, 0x00, 0xd0,
-               0x59, 0x6c, 0x40, 0x4e, 0x08, 0x00, 0x45, 0x00,
-               0x00, 0x4c, 0x0a, 0x42, 0x00, 0x00, 0x80, 0x11,
-               0xb5, 0xfa, 0xc0, 0xa8, 0x32, 0x32, 0x43, 0x81,
-               0x44, 0x09, 0x00, 0x7b, 0x00, 0x7b, 0x00, 0x38,
-               0xf8, 0xd2, 0xd9, 0x00, 0x0a, 0xfa, 0x00, 0x00,
-               0x00, 0x00, 0x00, 0x01, 0x02, 0x90, 0x00, 0x00,
-               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-               0x00, 0x00, 0xc5, 0x02, 0x04, 0xec, 0xec, 0x42,
-               0xee, 0x92,
-       }
-
-       // Assemble the NTP object that we expect to emerge from this test.
-       pExpectedNTP := &NTP{
-               BaseLayer: BaseLayer{
-                       Contents: []byte{0xd9, 0x0, 0xa, 0xfa, 0x0, 0x0, 0x0, 0x0, 0x0,
-                               0x1, 0x2, 0x90, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-                               0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-                               0x0, 0x0, 0x0, 0x0, 0x0, 0xc5, 0x2, 0x4, 0xec, 0xec, 0x42, 0xee, 0x92},
-                       Payload: nil,
-               },
-               LeapIndicator:      3,
-               Version:            3,
-               Mode:               1,
-               Stratum:            0,
-               Poll:               10,
-               Precision:          -6,
-               RootDelay:          0,
-               RootDispersion:     0x10290,
-               ReferenceID:        0,
-               ReferenceTimestamp: 0,
-               OriginTimestamp:    0,
-               ReceiveTimestamp:   0,
-               TransmitTimestamp:  0xc50204ecec42ee92,
-               ExtensionBytes:     []byte{},
-       }
-
-       checkNTP("test01", t, testPacketNTP, pExpectedNTP)
-}
-
-//******************************************************************************
-
-func TestNTPTwo(t *testing.T) {
-
-       // This test packet is packet #18 in the NTP sample capture
-       // pcap file NTP_sync.pcap on the Wireshark sample captures page:
-       //
-       //    https://wiki.wireshark.org/SampleCaptures
-       //    https://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=get&target=NTP_sync.pcap
-       //
-       // This packet was chosen because it is the first NTP packet after the first
-       // NTP packet that has non-zero timestamps.
-
-       var testPacketNTP = []byte{
-               0x00, 0xd0, 0x59, 0x6c, 0x40, 0x4e, 0x00, 0x0c,
-               0x41, 0x82, 0xb2, 0x53, 0x08, 0x00, 0x45, 0x00,
-               0x00, 0x4c, 0x32, 0x46, 0x40, 0x00, 0x2f, 0x11,
-               0xa8, 0x18, 0x45, 0x2c, 0x39, 0x3c, 0xc0, 0xa8,
-               0x32, 0x32, 0x00, 0x7b, 0x00, 0x7b, 0x00, 0x38,
-               0x09, 0x58, 0x1a, 0x03, 0x0a, 0xee, 0x00, 0x00,
-               0x1b, 0xf7, 0x00, 0x00, 0x14, 0xec, 0x51, 0xae,
-               0x80, 0xb7, 0xc5, 0x02, 0x03, 0x4c, 0x8d, 0x0e,
-               0x66, 0xcb, 0xc5, 0x02, 0x04, 0xec, 0xec, 0x42,
-               0xee, 0x92, 0xc5, 0x02, 0x04, 0xeb, 0xcf, 0x49,
-               0x59, 0xe6, 0xc5, 0x02, 0x04, 0xeb, 0xcf, 0x4c,
-               0x6e, 0x6e,
-       }
-
-       // Assemble the NTP object that we expect to emerge from this test.
-       pExpectedNTP := &NTP{
-               BaseLayer: BaseLayer{
-                       Contents: []byte{0x1a, 0x03, 0x0a, 0xee, 0x00, 0x00,
-                               0x1b, 0xf7, 0x00, 0x00, 0x14, 0xec, 0x51, 0xae,
-                               0x80, 0xb7, 0xc5, 0x02, 0x03, 0x4c, 0x8d, 0x0e,
-                               0x66, 0xcb, 0xc5, 0x02, 0x04, 0xec, 0xec, 0x42,
-                               0xee, 0x92, 0xc5, 0x02, 0x04, 0xeb, 0xcf, 0x49,
-                               0x59, 0xe6, 0xc5, 0x02, 0x04, 0xeb, 0xcf, 0x4c,
-                               0x6e, 0x6e},
-                       Payload: nil,
-               },
-               LeapIndicator:      0,
-               Version:            3,
-               Mode:               2,
-               Stratum:            3,
-               Poll:               10,
-               Precision:          -18,
-               RootDelay:          0x1bf7,
-               RootDispersion:     0x14ec,
-               ReferenceID:        0x51ae80b7,
-               ReferenceTimestamp: 0xc502034c8d0e66cb,
-               OriginTimestamp:    0xc50204ecec42ee92,
-               ReceiveTimestamp:   0xc50204ebcf4959e6,
-               TransmitTimestamp:  0xc50204ebcf4c6e6e,
-               ExtensionBytes:     []byte{},
-       }
-
-       checkNTP("test02", t, testPacketNTP, pExpectedNTP)
-}
-
-//******************************************************************************
-
-func TestNTPThree(t *testing.T) {
-
-       // This test packet is packet #19 in the NTP sample capture
-       // pcap file NTP_sync.pcap on the Wireshark sample captures page:
-       //
-       //    https://wiki.wireshark.org/SampleCaptures
-       //    https://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=get&target=NTP_sync.pcap
-
-       var testPacketNTP = []byte{
-               0x00, 0xd0, 0x59, 0x6c, 0x40, 0x4e, 0x00, 0x0c,
-               0x41, 0x82, 0xb2, 0x53, 0x08, 0x00, 0x45, 0x00,
-               0x00, 0x4c, 0x00, 0x00, 0x40, 0x00, 0x30, 0x11,
-               0x74, 0x65, 0x18, 0x7b, 0xca, 0xe6, 0xc0, 0xa8,
-               0x32, 0x32, 0x00, 0x7b, 0x00, 0x7b, 0x00, 0x38,
-               0x44, 0x05, 0x1a, 0x02, 0x0a, 0xec, 0x00, 0x00,
-               0x07, 0xc3, 0x00, 0x00, 0x2f, 0x80, 0xc6, 0x1e,
-               0x5c, 0x02, 0xc5, 0x01, 0xf9, 0x95, 0x42, 0x50,
-               0x82, 0xcf, 0xc5, 0x02, 0x04, 0xec, 0xec, 0x42,
-               0xee, 0x92, 0xc5, 0x02, 0x04, 0xeb, 0xd2, 0x35,
-               0x2e, 0xb5, 0xc5, 0x02, 0x04, 0xeb, 0xd2, 0x35,
-               0xd6, 0x7b,
-       }
-
-       // Assemble the NTP object that we expect to emerge from this test.
-       pExpectedNTP := &NTP{
-               BaseLayer: BaseLayer{
-                       Contents: []byte{0x1a, 0x02, 0x0a, 0xec, 0x00, 0x00,
-                               0x07, 0xc3, 0x00, 0x00, 0x2f, 0x80, 0xc6, 0x1e,
-                               0x5c, 0x02, 0xc5, 0x01, 0xf9, 0x95, 0x42, 0x50,
-                               0x82, 0xcf, 0xc5, 0x02, 0x04, 0xec, 0xec, 0x42,
-                               0xee, 0x92, 0xc5, 0x02, 0x04, 0xeb, 0xd2, 0x35,
-                               0x2e, 0xb5, 0xc5, 0x02, 0x04, 0xeb, 0xd2, 0x35,
-                               0xd6, 0x7b},
-                       Payload: nil,
-               },
-               LeapIndicator:      0,
-               Version:            3,
-               Mode:               2,
-               Stratum:            2,
-               Poll:               10,
-               Precision:          -20,
-               RootDelay:          0x7c3,
-               RootDispersion:     0x2f80,
-               ReferenceID:        0xc61e5c02,
-               ReferenceTimestamp: 0xc501f995425082cf,
-               OriginTimestamp:    0xc50204ecec42ee92,
-               ReceiveTimestamp:   0xc50204ebd2352eb5,
-               TransmitTimestamp:  0xc50204ebd235d67b,
-               ExtensionBytes:     []byte{},
-       }
-
-       checkNTP("test03", t, testPacketNTP, pExpectedNTP)
-}
-
-//******************************************************************************
-
-// TestNTPIsomorphism tests whether random data gets parsed into NTP layer and
-// gets serialized back from it to the same value.
-func TestNTPIsomorphism(t *testing.T) {
-       NTPData := make([]byte, ntpMinimumRecordSizeInBytes+7)
-       _, err := io.ReadFull(rand.Reader, NTPData)
-       if err != nil {
-               t.Error(err)
-       }
-       ntpLayer := &NTP{}
-       err = ntpLayer.DecodeFromBytes(NTPData, gopacket.NilDecodeFeedback)
-       if err != nil {
-               t.Error(err)
-       }
-       buf := gopacket.NewSerializeBuffer()
-       opts := gopacket.SerializeOptions{}
-       err = ntpLayer.SerializeTo(buf, opts)
-       if err != nil {
-               t.Error(err)
-       }
-       if !reflect.DeepEqual(NTPData, buf.Bytes()) {
-               t.Errorf("NTP packet is not isomorphic:\ngot  :\n%x\n\nwant :\n%x\n\n", buf.Bytes(), NTPData)
-       }
-}
diff --git a/vendor/github.com/google/gopacket/layers/ospf_test.go b/vendor/github.com/google/gopacket/layers/ospf_test.go
deleted file mode 100644 (file)
index 930bb4d..0000000
+++ /dev/null
@@ -1,559 +0,0 @@
-// Copyright 2017 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
-       "github.com/google/gopacket"
-       "reflect"
-       "testing"
-)
-
-// testPacketOSPF3Hello is the packet:
-//   14:43:11.663317 IP6 fe80::1 > ff02::5: OSPFv3, Hello, length 36
-//     0x0000:  3333 0000 0005 c200 1ffa 0001 86dd 6e00  33............n.
-//     0x0010:  0000 0024 5901 fe80 0000 0000 0000 0000  ...$Y...........
-//     0x0020:  0000 0000 0001 ff02 0000 0000 0000 0000  ................
-//     0x0030:  0000 0000 0005 0301 0024 0101 0101 0000  .........$......
-//     0x0040:  0001 fb86 0000 0000 0005 0100 0013 000a  ................
-//     0x0050:  0028 0000 0000 0000 0000                 .(........
-var testPacketOSPF3Hello = []byte{
-       0x33, 0x33, 0x00, 0x00, 0x00, 0x05, 0xc2, 0x00, 0x1f, 0xfa, 0x00, 0x01, 0x86, 0xdd, 0x6e, 0x00,
-       0x00, 0x00, 0x00, 0x24, 0x59, 0x01, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x03, 0x01, 0x00, 0x24, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-       0x00, 0x01, 0xfb, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, 0x13, 0x00, 0x0a,
-       0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-}
-
-func TestPacketOSPF3Hello(t *testing.T) {
-       p := gopacket.NewPacket(testPacketOSPF3Hello, LinkTypeEthernet, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv6, LayerTypeOSPF}, t)
-
-       ospf := p.Layer(LayerTypeOSPF).(*OSPFv3)
-       if ospf.Version != 3 {
-               t.Fatal("Invalid OSPF version")
-       }
-       if got, ok := p.Layer(LayerTypeOSPF).(*OSPFv3); ok {
-               want := &OSPFv3{
-                       OSPF: OSPF{
-                               Version:      3,
-                               Type:         OSPFHello,
-                               PacketLength: 36,
-                               RouterID:     0x1010101,
-                               AreaID:       1,
-                               Checksum:     0xfb86,
-                               Content: HelloPkg{
-                                       InterfaceID:              5,
-                                       RtrPriority:              1,
-                                       Options:                  0x000013,
-                                       HelloInterval:            10,
-                                       RouterDeadInterval:       40,
-                                       DesignatedRouterID:       0,
-                                       BackupDesignatedRouterID: 0,
-                               },
-                       },
-                       Instance: 0,
-                       Reserved: 0,
-               }
-               if !reflect.DeepEqual(got, want) {
-                       t.Errorf("OSPF packet processing failed:\ngot  :\n%#v\n\nwant :\n%#v\n\n", got, want)
-               }
-       } else {
-               t.Error("No OSPF layer type found in packet")
-       }
-}
-func BenchmarkDecodePacketPacket0(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testPacketOSPF3Hello, LinkTypeEthernet, gopacket.NoCopy)
-       }
-}
-
-// testPacketOSPF3DBDesc is the packet:
-//   14:43:51.657571 IP6 fe80::2 > fe80::1: OSPFv3, Database Description, length 28
-//     0x0000:  c200 1ffa 0001 c201 1ffa 0001 86dd 6e00  ..............n.
-//     0x0010:  0000 001c 5901 fe80 0000 0000 0000 0000  ....Y...........
-//     0x0020:  0000 0000 0002 fe80 0000 0000 0000 0000  ................
-//     0x0030:  0000 0000 0001 0302 001c 0202 0202 0000  ................
-//     0x0040:  0001 d826 0000 0000 0013 05dc 0007 0000  ...&............
-//     0x0050:  1d46                                     .F
-var testPacketOSPF3DBDesc = []byte{
-       0xc2, 0x00, 0x1f, 0xfa, 0x00, 0x01, 0xc2, 0x01, 0x1f, 0xfa, 0x00, 0x01, 0x86, 0xdd, 0x6e, 0x00,
-       0x00, 0x00, 0x00, 0x1c, 0x59, 0x01, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x02, 0x00, 0x1c, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00,
-       0x00, 0x01, 0xd8, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x05, 0xdc, 0x00, 0x07, 0x00, 0x00,
-       0x1d, 0x46,
-}
-
-func TestPacketOSPF3DBDesc(t *testing.T) {
-       p := gopacket.NewPacket(testPacketOSPF3DBDesc, LinkTypeEthernet, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv6, LayerTypeOSPF}, t)
-       if got, ok := p.Layer(LayerTypeOSPF).(*OSPFv3); ok {
-               want := &OSPFv3{
-                       OSPF: OSPF{
-                               Version:      3,
-                               Type:         OSPFDatabaseDescription,
-                               PacketLength: 28,
-                               RouterID:     0x2020202,
-                               AreaID:       1,
-                               Checksum:     0xd826,
-                               Content: DbDescPkg{
-                                       Options:      0x000013,
-                                       InterfaceMTU: 1500,
-                                       Flags:        0x7,
-                                       DDSeqNumber:  7494,
-                               },
-                       },
-                       Instance: 0,
-                       Reserved: 0,
-               }
-               if !reflect.DeepEqual(got, want) {
-                       t.Errorf("OSPF packet processing failed:\ngot  :\n%#v\n\nwant :\n%#v\n\n", got, want)
-               }
-       } else {
-               t.Error("No OSPF layer type found in packet")
-       }
-}
-func BenchmarkDecodePacketPacket1(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testPacketOSPF3DBDesc, LinkTypeEthernet, gopacket.NoCopy)
-       }
-}
-
-// testPacketOSPF3LSRequest is the packet:
-//   14:43:51.673584 IP6 fe80::2 > fe80::1: OSPFv3, LS-Request, length 100
-//     0x0000:  c200 1ffa 0001 c201 1ffa 0001 86dd 6e00  ..............n.
-//     0x0010:  0000 0064 5901 fe80 0000 0000 0000 0000  ...dY...........
-//     0x0020:  0000 0000 0002 fe80 0000 0000 0000 0000  ................
-//     0x0030:  0000 0000 0001 0303 0064 0202 0202 0000  .........d......
-//     0x0040:  0001 2c9a 0000 0000 2001 0000 0000 0101  ..,.............
-//     0x0050:  0101 0000 2003 0000 0003 0101 0101 0000  ................
-//     0x0060:  2003 0000 0002 0101 0101 0000 2003 0000  ................
-//     0x0070:  0001 0101 0101 0000 2003 0000 0000 0101  ................
-//     0x0080:  0101 0000 0008 0000 0005 0101 0101 0000  ................
-//     0x0090:  2009 0000 0000 0101 0101                 ..........
-var testPacketOSPF3LSRequest = []byte{
-       0xc2, 0x00, 0x1f, 0xfa, 0x00, 0x01, 0xc2, 0x01, 0x1f, 0xfa, 0x00, 0x01, 0x86, 0xdd, 0x6e, 0x00,
-       0x00, 0x00, 0x00, 0x64, 0x59, 0x01, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x00, 0x64, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00,
-       0x00, 0x01, 0x2c, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
-       0x01, 0x01, 0x00, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-       0x20, 0x03, 0x00, 0x00, 0x00, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x20, 0x03, 0x00, 0x00,
-       0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
-       0x01, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-       0x20, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
-}
-
-func TestPacketOSPF3LSRequest(t *testing.T) {
-       p := gopacket.NewPacket(testPacketOSPF3LSRequest, LinkTypeEthernet, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv6, LayerTypeOSPF}, t)
-       if got, ok := p.Layer(LayerTypeOSPF).(*OSPFv3); ok {
-               want := &OSPFv3{
-                       OSPF: OSPF{
-                               Version:      3,
-                               Type:         OSPFLinkStateRequest,
-                               PacketLength: 100,
-                               RouterID:     0x2020202,
-                               AreaID:       1,
-                               Checksum:     0x2c9a,
-                               Content: []LSReq{
-                                       LSReq{
-                                               LSType:    0x2001,
-                                               LSID:      0x00000000,
-                                               AdvRouter: 0x01010101,
-                                       },
-                                       LSReq{
-                                               LSType:    0x2003,
-                                               LSID:      0x00000003,
-                                               AdvRouter: 0x01010101,
-                                       },
-                                       LSReq{
-                                               LSType:    0x2003,
-                                               LSID:      0x00000002,
-                                               AdvRouter: 0x01010101,
-                                       },
-                                       LSReq{
-                                               LSType:    0x2003,
-                                               LSID:      0x00000001,
-                                               AdvRouter: 0x01010101,
-                                       },
-                                       LSReq{
-                                               LSType:    0x2003,
-                                               LSID:      0x00000000,
-                                               AdvRouter: 0x01010101,
-                                       },
-                                       LSReq{
-                                               LSType:    0x0008,
-                                               LSID:      0x00000005,
-                                               AdvRouter: 0x01010101,
-                                       },
-                                       LSReq{
-                                               LSType:    0x2009,
-                                               LSID:      0x00000000,
-                                               AdvRouter: 0x01010101,
-                                       },
-                               },
-                       },
-                       Instance: 0,
-                       Reserved: 0,
-               }
-               if !reflect.DeepEqual(got, want) {
-                       t.Errorf("OSPF packet processing failed:\ngot  :\n%#v\n\nwant :\n%#v\n\n", got, want)
-               }
-       } else {
-               t.Error("No OSPF layer type found in packet")
-       }
-}
-func BenchmarkDecodePacketPacket2(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testPacketOSPF3LSRequest, LinkTypeEthernet, gopacket.NoCopy)
-       }
-}
-
-// testPacketOSPF3LSUpdate is the packet:
-//   14:43:51.681554 IP6 fe80::1 > fe80::2: OSPFv3, LS-Update, length 288
-//     0x0000:  c201 1ffa 0001 c200 1ffa 0001 86dd 6e00  ..............n.
-//     0x0010:  0000 0120 5901 fe80 0000 0000 0000 0000  ....Y...........
-//     0x0020:  0000 0000 0001 fe80 0000 0000 0000 0000  ................
-//     0x0030:  0000 0000 0002 0304 0120 0101 0101 0000  ................
-//     0x0040:  0001 e556 0000 0000 0007 0028 2001 0000  ...V.......(....
-//     0x0050:  0000 0101 0101 8000 0002 d13a 0018 0100  ...........:....
-//     0x0060:  0033 0029 2003 0000 0003 0101 0101 8000  .3.)............
-//     0x0070:  0001 6259 0024 0000 004a 4000 0000 2001  ..bY.$...J@.....
-//     0x0080:  0db8 0000 0003 0029 2003 0000 0002 0101  .......)........
-//     0x0090:  0101 8000 0001 baf6 0024 0000 0054 4000  .........$...T@.
-//     0x00a0:  0000 2001 0db8 0000 0004 0029 2003 0000  ...........)....
-//     0x00b0:  0001 0101 0101 8000 0001 eba0 0024 0000  .............$..
-//     0x00c0:  004a 4000 0000 2001 0db8 0000 0034 0029  .J@..........4.)
-//     0x00d0:  2003 0000 0000 0101 0101 8000 0001 0ebd  ................
-//     0x00e0:  0024 0000 0040 4000 0000 2001 0db8 0000  .$...@@.........
-//     0x00f0:  0000 0023 0008 0000 0005 0101 0101 8000  ...#............
-//     0x0100:  0002 3d08 0038 0100 0033 fe80 0000 0000  ..=..8...3......
-//     0x0110:  0000 0000 0000 0000 0001 0000 0001 4000  ..............@.
-//     0x0120:  0000 2001 0db8 0000 0012 0023 2009 0000  ...........#....
-//     0x0130:  0000 0101 0101 8000 0001 e8d2 002c 0001  .............,..
-//     0x0140:  2001 0000 0000 0101 0101 4000 000a 2001  ..........@.....
-//     0x0150:  0db8 0000 0012                           ......
-var testPacketOSPF3LSUpdate = []byte{
-       0xc2, 0x01, 0x1f, 0xfa, 0x00, 0x01, 0xc2, 0x00, 0x1f, 0xfa, 0x00, 0x01, 0x86, 0xdd, 0x6e, 0x00,
-       0x00, 0x00, 0x01, 0x20, 0x59, 0x01, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x04, 0x01, 0x20, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-       0x00, 0x01, 0xe5, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x28, 0x20, 0x01, 0x00, 0x00,
-       0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x80, 0x00, 0x00, 0x02, 0xd1, 0x3a, 0x00, 0x18, 0x01, 0x00,
-       0x00, 0x33, 0x00, 0x29, 0x20, 0x03, 0x00, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x80, 0x00,
-       0x00, 0x01, 0x62, 0x59, 0x00, 0x24, 0x00, 0x00, 0x00, 0x4a, 0x40, 0x00, 0x00, 0x00, 0x20, 0x01,
-       0x0d, 0xb8, 0x00, 0x00, 0x00, 0x03, 0x00, 0x29, 0x20, 0x03, 0x00, 0x00, 0x00, 0x02, 0x01, 0x01,
-       0x01, 0x01, 0x80, 0x00, 0x00, 0x01, 0xba, 0xf6, 0x00, 0x24, 0x00, 0x00, 0x00, 0x54, 0x40, 0x00,
-       0x00, 0x00, 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x04, 0x00, 0x29, 0x20, 0x03, 0x00, 0x00,
-       0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0x00, 0x00, 0x01, 0xeb, 0xa0, 0x00, 0x24, 0x00, 0x00,
-       0x00, 0x4a, 0x40, 0x00, 0x00, 0x00, 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x34, 0x00, 0x29,
-       0x20, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x80, 0x00, 0x00, 0x01, 0x0e, 0xbd,
-       0x00, 0x24, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x23, 0x00, 0x08, 0x00, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x01, 0x80, 0x00,
-       0x00, 0x02, 0x3d, 0x08, 0x00, 0x38, 0x01, 0x00, 0x00, 0x33, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00,
-       0x00, 0x00, 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x12, 0x00, 0x23, 0x20, 0x09, 0x00, 0x00,
-       0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x80, 0x00, 0x00, 0x01, 0xe8, 0xd2, 0x00, 0x2c, 0x00, 0x01,
-       0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x40, 0x00, 0x00, 0x0a, 0x20, 0x01,
-       0x0d, 0xb8, 0x00, 0x00, 0x00, 0x12,
-}
-
-func TestPacketOSPF3LSUpdate(t *testing.T) {
-       p := gopacket.NewPacket(testPacketOSPF3LSUpdate, LinkTypeEthernet, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv6, LayerTypeOSPF}, t)
-       if got, ok := p.Layer(LayerTypeOSPF).(*OSPFv3); ok {
-               want := &OSPFv3{
-                       OSPF: OSPF{
-                               Version:      3,
-                               Type:         OSPFLinkStateUpdate,
-                               PacketLength: 288,
-                               RouterID:     0x1010101,
-                               AreaID:       1,
-                               Checksum:     0xe556,
-                               Content: LSUpdate{
-                                       NumOfLSAs: 7,
-                                       LSAs: []LSA{
-                                               LSA{
-                                                       LSAheader: LSAheader{
-                                                               LSAge:       40,
-                                                               LSType:      0x2001,
-                                                               LinkStateID: 0x00000000,
-                                                               AdvRouter:   0x01010101,
-                                                               LSSeqNumber: 0x80000002,
-                                                               LSChecksum:  0xd13a,
-                                                               Length:      24,
-                                                       },
-                                                       Content: RouterLSA{
-                                                               Flags:   0x1,
-                                                               Options: 0x33,
-                                                       },
-                                               },
-                                               LSA{
-                                                       LSAheader: LSAheader{
-                                                               LSAge:       41,
-                                                               LSType:      0x2003,
-                                                               LinkStateID: 0x00000003,
-                                                               AdvRouter:   0x01010101,
-                                                               LSSeqNumber: 0x80000001,
-                                                               LSChecksum:  0x6259,
-                                                               Length:      36,
-                                                       },
-                                                       Content: InterAreaPrefixLSA{
-                                                               Metric:        74,
-                                                               PrefixLength:  64,
-                                                               PrefixOptions: 0,
-                                                               AddressPrefix: []byte{0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x03},
-                                                       },
-                                               },
-                                               LSA{
-                                                       LSAheader: LSAheader{
-                                                               LSAge:       41,
-                                                               LSType:      0x2003,
-                                                               LinkStateID: 0x00000002,
-                                                               AdvRouter:   0x01010101,
-                                                               LSSeqNumber: 0x80000001,
-                                                               LSChecksum:  0xbaf6,
-                                                               Length:      36,
-                                                       },
-                                                       Content: InterAreaPrefixLSA{
-                                                               Metric:        84,
-                                                               PrefixLength:  64,
-                                                               PrefixOptions: 0,
-                                                               AddressPrefix: []byte{0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x4},
-                                                       },
-                                               },
-                                               LSA{
-                                                       LSAheader: LSAheader{
-                                                               LSAge:       41,
-                                                               LSType:      0x2003,
-                                                               LinkStateID: 0x00000001,
-                                                               AdvRouter:   0x01010101,
-                                                               LSSeqNumber: 0x80000001,
-                                                               LSChecksum:  0xeba0,
-                                                               Length:      36,
-                                                       },
-                                                       Content: InterAreaPrefixLSA{
-                                                               Metric:        74,
-                                                               PrefixLength:  64,
-                                                               PrefixOptions: 0,
-                                                               AddressPrefix: []byte{0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x34},
-                                                       },
-                                               },
-                                               LSA{
-                                                       LSAheader: LSAheader{
-                                                               LSAge:       41,
-                                                               LSType:      0x2003,
-                                                               LinkStateID: 0x00000000,
-                                                               AdvRouter:   0x01010101,
-                                                               LSSeqNumber: 0x80000001,
-                                                               LSChecksum:  0xebd,
-                                                               Length:      36,
-                                                       },
-                                                       Content: InterAreaPrefixLSA{
-                                                               Metric:        64,
-                                                               PrefixLength:  64,
-                                                               PrefixOptions: 0,
-                                                               AddressPrefix: []byte{0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x0},
-                                                       },
-                                               },
-                                               LSA{
-                                                       LSAheader: LSAheader{
-                                                               LSAge:       35,
-                                                               LSType:      0x8,
-                                                               LinkStateID: 0x00000005,
-                                                               AdvRouter:   0x01010101,
-                                                               LSSeqNumber: 0x80000002,
-                                                               LSChecksum:  0x3d08,
-                                                               Length:      56,
-                                                       },
-                                                       Content: LinkLSA{
-                                                               RtrPriority:      1,
-                                                               Options:          0x33,
-                                                               LinkLocalAddress: []byte{0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
-                                                               NumOfPrefixes:    1,
-                                                               Prefixes: []Prefix{
-                                                                       Prefix{
-                                                                               PrefixLength:  64,
-                                                                               PrefixOptions: 0,
-                                                                               AddressPrefix: []byte{0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x12},
-                                                                       },
-                                                               },
-                                                       },
-                                               },
-                                               LSA{
-                                                       LSAheader: LSAheader{
-                                                               LSAge:       35,
-                                                               LSType:      0x2009,
-                                                               LinkStateID: 0x00000000,
-                                                               AdvRouter:   0x01010101,
-                                                               LSSeqNumber: 0x80000001,
-                                                               LSChecksum:  0xe8d2,
-                                                               Length:      44,
-                                                       },
-                                                       Content: IntraAreaPrefixLSA{
-                                                               NumOfPrefixes: 1,
-                                                               RefLSType:     0x2001,
-                                                               RefAdvRouter:  0x01010101,
-                                                               Prefixes: []Prefix{
-                                                                       Prefix{
-                                                                               PrefixLength:  64,
-                                                                               PrefixOptions: 0,
-                                                                               Metric:        10,
-                                                                               AddressPrefix: []byte{0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x12},
-                                                                       },
-                                                               },
-                                                       },
-                                               },
-                                       },
-                               },
-                       },
-                       Instance: 0,
-                       Reserved: 0,
-               }
-               if !reflect.DeepEqual(got, want) {
-                       t.Errorf("OSPF packet processing failed:\ngot  :\n%#v\n\nwant :\n%#v\n\n", got, want)
-               }
-       } else {
-               t.Error("No OSPF layer type found in packet")
-       }
-}
-func BenchmarkDecodePacketPacket3(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testPacketOSPF3LSUpdate, LinkTypeEthernet, gopacket.NoCopy)
-       }
-}
-
-// testPacketOSPF3LSAck is the packet:
-//   14:43:54.185384 IP6 fe80::1 > ff02::5: OSPFv3, LS-Ack, length 136
-//     0x0000:  3333 0000 0005 c200 1ffa 0001 86dd 6e00  33............n.
-//     0x0010:  0000 0088 5901 fe80 0000 0000 0000 0000  ....Y...........
-//     0x0020:  0000 0000 0001 ff02 0000 0000 0000 0000  ................
-//     0x0030:  0000 0000 0005 0305 0088 0101 0101 0000  ................
-//     0x0040:  0001 9d2c 0000 0005 2001 0000 0000 0202  ...,............
-//     0x0050:  0202 8000 0002 b354 0018 0006 2003 0000  .......T........
-//     0x0060:  0003 0202 0202 8000 0001 4473 0024 0006  ..........Ds.$..
-//     0x0070:  2003 0000 0002 0202 0202 8000 0001 9c11  ................
-//     0x0080:  0024 0006 2003 0000 0001 0202 0202 8000  .$..............
-//     0x0090:  0001 cdba 0024 0006 2003 0000 0000 0202  .....$..........
-//     0x00a0:  0202 8000 0001 efd7 0024 0005 0008 0000  .........$......
-//     0x00b0:  0005 0202 0202 8000 0001 5433 002c       ..........T3.,
-var testPacketOSPF3LSAck = []byte{
-       0x33, 0x33, 0x00, 0x00, 0x00, 0x05, 0xc2, 0x00, 0x1f, 0xfa, 0x00, 0x01, 0x86, 0xdd, 0x6e, 0x00,
-       0x00, 0x00, 0x00, 0x88, 0x59, 0x01, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x03, 0x05, 0x00, 0x88, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-       0x00, 0x01, 0x9d, 0x2c, 0x00, 0x00, 0x00, 0x05, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02,
-       0x02, 0x02, 0x80, 0x00, 0x00, 0x02, 0xb3, 0x54, 0x00, 0x18, 0x00, 0x06, 0x20, 0x03, 0x00, 0x00,
-       0x00, 0x03, 0x02, 0x02, 0x02, 0x02, 0x80, 0x00, 0x00, 0x01, 0x44, 0x73, 0x00, 0x24, 0x00, 0x06,
-       0x20, 0x03, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x80, 0x00, 0x00, 0x01, 0x9c, 0x11,
-       0x00, 0x24, 0x00, 0x06, 0x20, 0x03, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, 0x80, 0x00,
-       0x00, 0x01, 0xcd, 0xba, 0x00, 0x24, 0x00, 0x06, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02,
-       0x02, 0x02, 0x80, 0x00, 0x00, 0x01, 0xef, 0xd7, 0x00, 0x24, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00,
-       0x00, 0x05, 0x02, 0x02, 0x02, 0x02, 0x80, 0x00, 0x00, 0x01, 0x54, 0x33, 0x00, 0x2c,
-}
-
-func TestPacketOSPF3LSAck(t *testing.T) {
-       p := gopacket.NewPacket(testPacketOSPF3LSAck, LinkTypeEthernet, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv6, LayerTypeOSPF}, t)
-       if got, ok := p.Layer(LayerTypeOSPF).(*OSPFv3); ok {
-               want := &OSPFv3{
-                       OSPF: OSPF{
-                               Version:      3,
-                               Type:         OSPFLinkStateAcknowledgment,
-                               PacketLength: 136,
-                               RouterID:     0x1010101,
-                               AreaID:       1,
-                               Checksum:     0x9d2c,
-                               Content: []LSAheader{
-                                       LSAheader{
-                                               LSAge:       5,
-                                               LSType:      0x2001,
-                                               LinkStateID: 0x00000000,
-                                               AdvRouter:   0x02020202,
-                                               LSSeqNumber: 0x80000002,
-                                               LSChecksum:  0xb354,
-                                               Length:      24,
-                                       },
-                                       LSAheader{
-                                               LSAge:       6,
-                                               LSType:      0x2003,
-                                               LinkStateID: 0x00000003,
-                                               AdvRouter:   0x02020202,
-                                               LSSeqNumber: 0x80000001,
-                                               LSChecksum:  0x4473,
-                                               Length:      36,
-                                       },
-                                       LSAheader{
-                                               LSAge:       6,
-                                               LSType:      0x2003,
-                                               LinkStateID: 0x00000002,
-                                               AdvRouter:   0x02020202,
-                                               LSSeqNumber: 0x80000001,
-                                               LSChecksum:  0x9c11,
-                                               Length:      36,
-                                       },
-                                       LSAheader{
-                                               LSAge:       6,
-                                               LSType:      0x2003,
-                                               LinkStateID: 0x00000001,
-                                               AdvRouter:   0x02020202,
-                                               LSSeqNumber: 0x80000001,
-                                               LSChecksum:  0xcdba,
-                                               Length:      36,
-                                       },
-                                       LSAheader{
-                                               LSAge:       6,
-                                               LSType:      0x2003,
-                                               LinkStateID: 0x00000000,
-                                               AdvRouter:   0x02020202,
-                                               LSSeqNumber: 0x80000001,
-                                               LSChecksum:  0xefd7,
-                                               Length:      36,
-                                       },
-                                       LSAheader{
-                                               LSAge:       5,
-                                               LSType:      0x0008,
-                                               LinkStateID: 0x00000005,
-                                               AdvRouter:   0x02020202,
-                                               LSSeqNumber: 0x80000001,
-                                               LSChecksum:  0x5433,
-                                               Length:      44,
-                                       },
-                               },
-                       },
-                       Instance: 0,
-                       Reserved: 0,
-               }
-               if !reflect.DeepEqual(got, want) {
-                       t.Errorf("OSPF packet processing failed:\ngot  :\n%#v\n\nwant :\n%#v\n\n", got, want)
-               }
-       } else {
-               t.Error("No OSPF layer type found in packet")
-       }
-}
-func BenchmarkDecodePacketPacket4(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testPacketOSPF3LSAck, LinkTypeEthernet, gopacket.NoCopy)
-       }
-}
diff --git a/vendor/github.com/google/gopacket/layers/prism_test.go b/vendor/github.com/google/gopacket/layers/prism_test.go
deleted file mode 100644 (file)
index 136a04c..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-// Copyright 2014, Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
-       "net"
-       "reflect"
-       "testing"
-
-       "github.com/google/gopacket"
-)
-
-// Generator: python layers/test_creator.py --layerType=LayerTypePrismHeader --linkType=LinkTypePrismHeader --name=Prism%s ~/tmp/dump.pcap
-// http://wiki.wireshark.org/SampleCaptures#Sample_Captures
-
-// testPacketPrism is the packet:
-//   21:32:37.616872 BSSID:Broadcast DA:Broadcast SA:cc:fa:00:ad:79:e8 (oui Unknown) Probe Request () [1.0 2.0 5.5 11.0 Mbit]
-//        0x0000:  4400 0000 9000 0000 7261 3000 0000 0000
-//        0x0010:  0000 0000 0000 0000 4400 0100 0000 0400
-//        0x0020:  f9c1 2900 4400 0200 0000 0000 0000 0000
-//        0x0030:  4400 0300 0000 0400 0a00 0000 4400 0400
-//        0x0040:  0000 0400 e1ff ffff 0000 0000 0000 0000
-//        0x0050:  0000 0000 4400 0600 0000 0400 0000 0000
-//        0x0060:  4400 0700 0000 0400 0000 0000 4400 0800
-//        0x0070:  0000 0400 0200 0000 4400 0900 0000 0000
-//        0x0080:  0000 0000 4400 0a00 0000 0400 7e00 0000
-//        0x0090:  4000 0000 ffff ffff ffff ccfa 00ad 79e8
-//        0x00a0:  ffff ffff ffff a041 0000 0104 0204 0b16
-//        0x00b0:  3208 0c12 1824 3048 606c 0301 012d 1a2d
-//        0x00c0:  1117 ff00 0000 0000 0000 0000 0000 0000
-//        0x00d0:  0000 0000 0000 0000 007f 0800 0000 0000
-//        0x00e0:  0000 40dd 0900 1018 0200 0010 0000 dd1e
-//        0x00f0:  0090 4c33 2d11 17ff 0000 0000 0000 0000
-//        0x0100:  0000 0000 0000 0000 0000 0000 0000
-
-var testPacketPrism = []byte{
-       0x44, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x72, 0x61, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00,
-       0xf9, 0xc1, 0x29, 0x00, 0x44, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x44, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x44, 0x00, 0x04, 0x00,
-       0x00, 0x00, 0x04, 0x00, 0xe1, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x44, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x08, 0x00,
-       0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x44, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x7e, 0x00, 0x00, 0x00,
-       0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcc, 0xfa, 0x00, 0xad, 0x79, 0xe8,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa0, 0x41, 0x00, 0x00, 0x01, 0x04, 0x02, 0x04, 0x0b, 0x16,
-       0x32, 0x08, 0x0c, 0x12, 0x18, 0x24, 0x30, 0x48, 0x60, 0x6c, 0x03, 0x01, 0x01, 0x2d, 0x1a, 0x2d,
-       0x11, 0x17, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x40, 0xdd, 0x09, 0x00, 0x10, 0x18, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0xdd, 0x1e,
-       0x00, 0x90, 0x4c, 0x33, 0x2d, 0x11, 0x17, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-}
-
-func TestPacketPrism(t *testing.T) {
-       p := gopacket.NewPacket(testPacketPrism, LinkTypePrismHeader, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypePrismHeader, LayerTypeDot11, LayerTypeDot11MgmtProbeReq}, t)
-
-       if got, ok := p.Layer(LayerTypePrismHeader).(*PrismHeader); ok {
-               want := &PrismHeader{
-                       BaseLayer: BaseLayer{
-                               Contents: []uint8{0x44, 0x0, 0x0, 0x0, 0x90, 0x0, 0x0, 0x0, 0x72, 0x61, 0x30, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x44, 0x0, 0x1, 0x0, 0x0, 0x0, 0x4, 0x0, 0xf9, 0xc1, 0x29, 0x0, 0x44, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x44, 0x0, 0x3, 0x0, 0x0, 0x0, 0x4, 0x0, 0xa, 0x0, 0x0, 0x0, 0x44, 0x0, 0x4, 0x0, 0x0, 0x0, 0x4, 0x0, 0xe1, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x44, 0x0, 0x6, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x44, 0x0, 0x7, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x44, 0x0, 0x8, 0x0, 0x0, 0x0, 0x4, 0x0, 0x2, 0x0, 0x0, 0x0, 0x44, 0x0, 0x9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x44, 0x0, 0xa, 0x0, 0x0, 0x0, 0x4, 0x0, 0x7e, 0x0, 0x0, 0x0},
-                               Payload:  []uint8{0x40, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcc, 0xfa, 0x0, 0xad, 0x79, 0xe8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa0, 0x41, 0x0, 0x0, 0x1, 0x4, 0x2, 0x4, 0xb, 0x16, 0x32, 0x8, 0xc, 0x12, 0x18, 0x24, 0x30, 0x48, 0x60, 0x6c, 0x3, 0x1, 0x1, 0x2d, 0x1a, 0x2d, 0x11, 0x17, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0xdd, 0x9, 0x0, 0x10, 0x18, 0x2, 0x0, 0x0, 0x10, 0x0, 0x0, 0xdd, 0x1e, 0x0, 0x90, 0x4c, 0x33, 0x2d, 0x11, 0x17, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, Code: 0x44, Length: 0x90, DeviceName: "ra0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
-                       Values: []PrismValue{
-                               PrismValue{DID: PrismDIDType1HostTime, Status: 0x0, Length: 0x4, Data: []uint8{0xf9, 0xc1, 0x29, 0x0}},
-                               PrismValue{DID: PrismDIDType1MACTime, Status: 0x0, Length: 0x0, Data: []uint8{}},
-                               PrismValue{DID: PrismDIDType1Channel, Status: 0x0, Length: 0x4, Data: []uint8{0xa, 0x0, 0x0, 0x0}},
-                               PrismValue{DID: PrismDIDType1RSSI, Status: 0x0, Length: 0x4, Data: []uint8{0xe1, 0xff, 0xff, 0xff}},
-                               PrismValue{DID: 0x0, Status: 0x0, Length: 0x0, Data: []uint8{}},
-                               PrismValue{DID: PrismDIDType1Signal, Status: 0x0, Length: 0x4, Data: []uint8{0x0, 0x0, 0x0, 0x0}},
-                               PrismValue{DID: PrismDIDType1Noise, Status: 0x0, Length: 0x4, Data: []uint8{0x0, 0x0, 0x0, 0x0}},
-                               PrismValue{DID: PrismDIDType1Rate, Status: 0x0, Length: 0x4, Data: []uint8{0x2, 0x0, 0x0, 0x0}},
-                               PrismValue{DID: PrismDIDType1TransmittedFrameIndicator, Status: 0x0, Length: 0x0, Data: []uint8{}},
-                               PrismValue{DID: PrismDIDType1FrameLength, Status: 0x0, Length: 0x4, Data: []uint8{0x7e, 0x0, 0x0, 0x0}},
-                       },
-               }
-
-               if !reflect.DeepEqual(got, want) {
-                       t.Errorf("RadioTap packet processing failed:\ngot  :\n%#v\n\nwant :\n%#v\n\n", got, want)
-               }
-       }
-
-       if got, ok := p.Layer(LayerTypeDot11).(*Dot11); ok {
-               want := &Dot11{
-                       BaseLayer: BaseLayer{
-                               Contents: []uint8{0x40, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcc, 0xfa, 0x0, 0xad, 0x79, 0xe8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa0, 0x41},
-                               Payload:  []uint8{0x0, 0x0, 0x1, 0x4, 0x2, 0x4, 0xb, 0x16, 0x32, 0x8, 0xc, 0x12, 0x18, 0x24, 0x30, 0x48, 0x60, 0x6c, 0x3, 0x1, 0x1, 0x2d, 0x1a, 0x2d, 0x11, 0x17, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0xdd, 0x9, 0x0, 0x10, 0x18, 0x2, 0x0, 0x0, 0x10, 0x0, 0x0, 0xdd, 0x1e, 0x0, 0x90, 0x4c, 0x33, 0x2d, 0x11, 0x17, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
-                       },
-                       Type:           0x10,
-                       Proto:          0x0,
-                       Flags:          0x0,
-                       DurationID:     0x0,
-                       Address1:       net.HardwareAddr{0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
-                       Address2:       net.HardwareAddr{0xcc, 0xfa, 0x0, 0xad, 0x79, 0xe8},
-                       Address3:       net.HardwareAddr{0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
-                       Address4:       net.HardwareAddr(nil),
-                       SequenceNumber: 0x041a,
-                       FragmentNumber: 0x0,
-                       Checksum:       0x0,
-               }
-
-               if !reflect.DeepEqual(got, want) {
-                       t.Errorf("Dot11 packet processing failed:\ngot  :\n%#v\n\nwant :\n%#v\n\n", got, want)
-               }
-       }
-}
-
-func BenchmarkDecodePacketPrism(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testPacketPrism, LinkTypePrismHeader, gopacket.NoCopy)
-       }
-}
diff --git a/vendor/github.com/google/gopacket/layers/radiotap_test.go b/vendor/github.com/google/gopacket/layers/radiotap_test.go
deleted file mode 100644 (file)
index 4d3c7d0..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-package layers
-
-import (
-       "github.com/google/gopacket"
-       "testing"
-)
-
-// testPacketRadiotap0 is the packet:
-//   09:34:34.799438 1.0 Mb/s 2412 MHz 11b -58dB signal antenna 7 Acknowledgment RA:88:1f:a1:ae:9d:cb
-//      0x0000:  0000 1200 2e48 0000 1002 6c09 a000 c607  .....H....l.....
-//      0x0010:  0000 d400 0000 881f a1ae 9dcb c630 4b4b  .............0KK
-var testPacketRadiotap0 = []byte{
-       0x00, 0x00, 0x12, 0x00, 0x2e, 0x48, 0x00, 0x00, 0x10, 0x02, 0x6c, 0x09, 0xa0, 0x00, 0xc6, 0x07,
-       0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x88, 0x1f, 0xa1, 0xae, 0x9d, 0xcb, 0xc6, 0x30, 0x4b, 0x4b,
-}
-
-func TestPacketRadiotap0(t *testing.T) {
-       p := gopacket.NewPacket(testPacketRadiotap0, LayerTypeRadioTap, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeRadioTap, LayerTypeDot11}, t)
-       rt := p.Layer(LayerTypeRadioTap).(*RadioTap)
-       if rt.ChannelFrequency != 2412 || rt.DBMAntennaSignal != -58 || rt.Antenna != 7 {
-               t.Error("Radiotap decode error")
-       }
-       if rt.Rate != 2 { // 500Kbps unit
-               t.Error("Radiotap Rate decode error")
-       }
-}
-func BenchmarkDecodePacketRadiotap0(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testPacketRadiotap0, LayerTypeRadioTap, gopacket.NoCopy)
-       }
-}
-
-// testPacketRadiotap1 is the packet:
-//   05:24:21.380948 2412 MHz 11g -36dB signal antenna 5 65.0 Mb/s MCS 7 20 MHz lon GI
-//     0x0000:  0000 1500 2a48 0800 1000 6c09 8004 dc05  ....*H....l.....
-//     0x0010:  0000 0700 0748 112c 0000 3a9d aaf0 191c  .....H.,..:.....
-//     0x0020:  aba7 f213 9d00 3a9d aaf0 1970 b2ee a9f1  ......:....p....
-//     0x0030:  16                                       .
-var testPacketRadiotap1 = []byte{
-       0x00, 0x00, 0x15, 0x00, 0x2a, 0x48, 0x08, 0x00, 0x10, 0x00, 0x6c, 0x09, 0x80, 0x04, 0xdc, 0x05,
-       0x00, 0x00, 0x07, 0x00, 0x07, 0x48, 0x11, 0x2c, 0x00, 0x00, 0x3a, 0x9d, 0xaa, 0xf0, 0x19, 0x1c,
-       0xab, 0xa7, 0xf2, 0x13, 0x9d, 0x00, 0x3a, 0x9d, 0xaa, 0xf0, 0x19, 0x70, 0xb2, 0xee, 0xa9, 0xf1,
-       0x16,
-}
-
-func TestPacketRadiotap1(t *testing.T) {
-       p := gopacket.NewPacket(testPacketRadiotap1, LayerTypeRadioTap, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeRadioTap, LayerTypeDot11}, t)
-       rt := p.Layer(LayerTypeRadioTap).(*RadioTap)
-       if rt.ChannelFrequency != 2412 || rt.DBMAntennaSignal != -36 || rt.Antenna != 5 {
-               t.Error("Radiotap decode error")
-       }
-       if !rt.MCS.Known.MCSIndex() || rt.MCS.MCS != 7 {
-               t.Error("Radiotap MCS error")
-       }
-       if !rt.MCS.Known.Bandwidth() || rt.MCS.Flags.Bandwidth() != 0 {
-               t.Error("Radiotap bandwidth error")
-       }
-       if !rt.MCS.Known.GuardInterval() || rt.MCS.Flags.ShortGI() {
-               t.Error("Radiotap GI error")
-       }
-}
-func BenchmarkDecodePacketRadiotap1(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testPacketRadiotap1, LayerTypeRadioTap, gopacket.NoCopy)
-       }
-}
diff --git a/vendor/github.com/google/gopacket/layers/sflow_test.go b/vendor/github.com/google/gopacket/layers/sflow_test.go
deleted file mode 100644 (file)
index ca0f2ab..0000000
+++ /dev/null
@@ -1,1246 +0,0 @@
-// Copyright 2014 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-package layers
-
-import (
-       "github.com/google/gopacket"
-       "net"
-       "reflect"
-       "testing"
-)
-
-// Test packet collected from live network. See the test below for contents
-var SFlowTestPacket1 = []byte{
-       0x84, 0x2b, 0x2b, 0x16, 0x8b, 0x62, 0xf0, 0x50, 0x56, 0x85, 0x3a, 0xfd, 0x08, 0x00, 0x45, 0x00,
-       0x05, 0xbc, 0x9c, 0x04, 0x40, 0x00, 0xff, 0x11, 0xc7, 0x00, 0x0a, 0x01, 0xff, 0x0e, 0x0a, 0x01,
-       0x00, 0x1b, 0xc7, 0x57, 0x18, 0xc7, 0x05, 0xa8, 0x22, 0x3b, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
-       0x00, 0x01, 0x0a, 0x01, 0xf8, 0x16, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x9d, 0xfb, 0x40, 0x49,
-       0xc6, 0xcd, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x26,
-       0x27, 0xe8, 0x00, 0x00, 0x02, 0x13, 0x00, 0x00, 0x3e, 0x80, 0x50, 0xbd, 0xe5, 0x80, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
-       0x00, 0x01, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x05, 0xd2, 0x00, 0x00,
-       0x00, 0x04, 0x00, 0x00, 0x00, 0x80, 0x3c, 0x8a, 0xb0, 0xe7, 0x54, 0x41, 0xb8, 0xca, 0x3a, 0x6d,
-       0xf0, 0x40, 0x08, 0x00, 0x45, 0x00, 0x05, 0xc0, 0x6b, 0xaa, 0x40, 0x00, 0x40, 0x06, 0x8f, 0x41,
-       0x0a, 0x01, 0x0e, 0x16, 0x36, 0xf0, 0xeb, 0x45, 0x76, 0xfd, 0x00, 0x50, 0xca, 0x77, 0xef, 0x96,
-       0xfc, 0x28, 0x63, 0x40, 0x50, 0x10, 0x00, 0x3c, 0x64, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
-       0xf4, 0x00, 0x00, 0x02, 0x77, 0x00, 0x00, 0x00, 0xfd, 0x3b, 0x8c, 0xe7, 0x04, 0x4a, 0x2d, 0xb2,
-       0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x01, 0x48, 0xcc, 0x11, 0x0d, 0xe3, 0x00,
-       0x26, 0x85, 0x30, 0x00, 0x00, 0x07, 0x66, 0x00, 0x02, 0xd0, 0x8a, 0x00, 0x02, 0xce, 0xf0, 0x00,
-       0x29, 0x7e, 0x80, 0x00, 0x02, 0xd0, 0x98, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x26, 0x85, 0x30, 0x00,
-       0x00, 0x00, 0xf4, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xe9, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
-       0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x01, 0x00, 0x00, 0x00, 0xd0, 0x01, 0x5e, 0x5c, 0x1e, 0x00, 0x00, 0x02, 0x57, 0x00, 0x00,
-       0x07, 0xd0, 0xb1, 0x2f, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x57, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00,
-       0x00, 0x01, 0x00, 0x00, 0x05, 0xee, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x80, 0x3c, 0x8a,
-       0xb0, 0xe7, 0x54, 0x41, 0xb8, 0xca, 0x3a, 0x6f, 0xbe, 0xd8, 0x08, 0x00, 0x45, 0x00, 0x05, 0xdc,
-       0x9f, 0xfd, 0x40, 0x00, 0x40, 0x06, 0x6a, 0xfa, 0x0a, 0x01, 0x0e, 0x10, 0x0a, 0x01, 0x08, 0x13,
-       0x23, 0x84, 0xb7, 0x22, 0x8a, 0xc9, 0x50, 0xb5, 0x4e, 0x10, 0x2a, 0x87, 0x80, 0x10, 0x06, 0x01,
-       0x10, 0xa6, 0x00, 0x00, 0x01, 0x01, 0x08, 0x0a, 0xef, 0x1f, 0xf4, 0x07, 0x99, 0x3a, 0xd8, 0x5b,
-       0x01, 0x46, 0x09, 0x00, 0x0c, 0x00, 0x0c, 0x3c, 0xac, 0x4a, 0x1b, 0x06, 0x04, 0x78, 0x78, 0x4e,
-       0xc2, 0x05, 0x46, 0x43, 0x06, 0x04, 0x78, 0x78, 0xee, 0x9c, 0x00, 0x41, 0xef, 0x05, 0x81, 0x32,
-       0x1b, 0x06, 0x04, 0x78, 0x78, 0x56, 0x72, 0x05, 0x4e, 0x92, 0x00, 0x96, 0x39, 0x00, 0xea, 0x3f,
-       0x01, 0x15, 0xa3, 0x08, 0x04, 0x42, 0x6a, 0x82, 0x87, 0x08, 0x05, 0xcc, 0x00, 0x04, 0x00, 0x00,
-       0x03, 0xe9, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xd0, 0x01, 0x5a,
-       0xcd, 0xd0, 0x00, 0x00, 0x02, 0x55, 0x00, 0x00, 0x07, 0xd0, 0x95, 0x67, 0xe1, 0x30, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x02, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
-       0x00, 0x01, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x04, 0x46, 0x00, 0x00,
-       0x00, 0x04, 0x00, 0x00, 0x00, 0x80, 0x3c, 0x8a, 0xb0, 0xe7, 0x54, 0x41, 0xb8, 0xca, 0x3a, 0x6f,
-       0x11, 0x28, 0x08, 0x00, 0x45, 0x00, 0x04, 0x34, 0xdb, 0x36, 0x40, 0x00, 0x40, 0x06, 0x38, 0xac,
-       0x0a, 0x01, 0x0e, 0x11, 0x0a, 0x01, 0x00, 0xcf, 0x23, 0x84, 0xa0, 0x3f, 0x3c, 0xce, 0xd5, 0x4a,
-       0x72, 0x0b, 0x5d, 0x1a, 0x80, 0x10, 0x06, 0x01, 0x8a, 0x50, 0x00, 0x00, 0x01, 0x01, 0x08, 0x0a,
-       0xef, 0x1f, 0xa2, 0xba, 0xe6, 0xfa, 0xae, 0xb3, 0xfe, 0xcf, 0x00, 0x19, 0xcf, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x01, 0xb9, 0x79, 0xdd, 0x42, 0x00, 0x00, 0x02, 0x84, 0x9b, 0xa9, 0x02, 0xe2, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x06, 0x32, 0x39, 0x35, 0x34, 0x33, 0x36, 0x00, 0x00, 0x02, 0x70, 0xcd,
-       0x16, 0x40, 0xa6, 0x98, 0x88, 0x24, 0x06, 0x50, 0xb0, 0xf4, 0xee, 0x03, 0xa6, 0xfa, 0x87, 0xaf,
-       0xc1, 0x99, 0x52, 0x0d, 0x07, 0xa8, 0x00, 0x00, 0x03, 0xe9, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
-       0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x02, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x20, 0xf2, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00,
-       0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00,
-       0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x54, 0x0b, 0xe4, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-       0x00, 0x03, 0x00, 0x01, 0x29, 0x82, 0x6d, 0xb0, 0x6c, 0x0b, 0xcb, 0x0d, 0xdd, 0x96, 0x00, 0x06,
-       0xa8, 0xc6, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x34, 0x02, 0x35, 0x58, 0x7c, 0x9e, 0x56, 0x64, 0x25, 0x71, 0x00, 0x70,
-       0x5a, 0xc4, 0x00, 0x09, 0x08, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x01, 0x00, 0x00, 0x00, 0xd0, 0x01, 0x5e, 0x5c, 0x1f, 0x00, 0x00, 0x02, 0x57, 0x00, 0x00,
-       0x07, 0xd0, 0xb1, 0x2f, 0xaa, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x57, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00,
-       0x00, 0x01, 0x00, 0x00, 0x05, 0xee, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x80, 0x3c, 0x8a,
-       0xb0, 0xe7, 0x54, 0x41, 0xb8, 0xca, 0x3a, 0x6f, 0xbe, 0xd8, 0x08, 0x00, 0x45, 0x00, 0x05, 0xdc,
-       0x0f, 0xba, 0x40, 0x00, 0x40, 0x06, 0xf4, 0x3f, 0x0a, 0x01, 0x0e, 0x10, 0x0a, 0x01, 0x0f, 0x11,
-       0x23, 0x84, 0xcd, 0xc0, 0xf4, 0x0e, 0x90, 0x23, 0xd7, 0x32, 0x8b, 0x31, 0x80, 0x10, 0x00, 0x1d,
-       0x6b, 0x12, 0x00, 0x00, 0x01, 0x01, 0x08, 0x0a, 0xef, 0x1f, 0xf4, 0x28, 0xef, 0x1f, 0xec, 0x76,
-       0xaa, 0x25, 0x01, 0x04, 0xc0, 0xac, 0xfe, 0x25, 0x01, 0x8e, 0x25, 0x01, 0x16, 0xc7, 0x28, 0xfe,
-       0x7e, 0x70, 0xfe, 0x7e, 0x70, 0x52, 0x7e, 0x70, 0x15, 0x9b, 0xfe, 0x35, 0x01, 0xfe, 0x35, 0x01,
-       0x42, 0x35, 0x01, 0xfe, 0x95, 0x77, 0xfe, 0x95, 0x77, 0xfe, 0x95, 0x77, 0x52, 0x95, 0x77, 0x00,
-       0xd2, 0xfe, 0x70, 0x02, 0x92, 0x70, 0x02, 0x16, 0x60, 0x22, 0x00, 0x7e, 0xb2, 0x15, 0x00, 0x00,
-       0x03, 0xe9, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xd0, 0x01, 0x5a,
-       0xcd, 0xd1, 0x00, 0x00, 0x02, 0x55, 0x00, 0x00, 0x07, 0xd0, 0x95, 0x67, 0xe9, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x02, 0x55, 0x00, 0x00, 0x02, 0x57, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
-       0x00, 0x01, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x05, 0xee, 0x00, 0x00,
-       0x00, 0x04, 0x00, 0x00, 0x00, 0x80, 0xb8, 0xca, 0x3a, 0x6f, 0xbe, 0xd8, 0xb8, 0xca, 0x3a, 0x6f,
-       0x11, 0x28, 0x08, 0x00, 0x45, 0x00, 0x05, 0xdc, 0xfe, 0x05, 0x40, 0x00, 0x40, 0x06, 0x06, 0xf4,
-       0x0a, 0x01, 0x0e, 0x11, 0x0a, 0x01, 0x0e, 0x10, 0x23, 0x84, 0xfa, 0x29, 0xae, 0xd4, 0x95, 0x03,
-       0x99, 0xb8, 0x77, 0xd0, 0x80, 0x10, 0x00, 0x1d, 0x6f, 0x4f, 0x00, 0x00, 0x01, 0x01, 0x08, 0x0a,
-       0xef, 0x1f, 0xa2, 0xcc, 0xef, 0x1f, 0xf4, 0x2c, 0xfe, 0xdb, 0x05, 0xa1, 0xdb, 0x04, 0x9e, 0xc0,
-       0xfe, 0x30, 0x08, 0xb2, 0x30, 0x08, 0xda, 0x2b, 0xbd, 0xfe, 0x2a, 0x01, 0xfe, 0x2a, 0x01, 0x21,
-       0x2a, 0x00, 0xb2, 0xfe, 0x57, 0xb0, 0xb6, 0x57, 0xb0, 0x14, 0x74, 0xf4, 0xf0, 0x4c, 0x05, 0x68,
-       0xfe, 0x54, 0x02, 0xfe, 0x54, 0x02, 0xd2, 0x54, 0x02, 0x00, 0xbe, 0xfe, 0x32, 0x0f, 0xb6, 0x32,
-       0x0f, 0x14, 0x2e, 0x16, 0xaf, 0x47, 0x00, 0x00, 0x03, 0xe9, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
-       0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x01, 0x00, 0x00, 0x00, 0x94, 0x01, 0x5e, 0x5c, 0x20, 0x00, 0x00, 0x02, 0x57, 0x00, 0x00,
-       0x07, 0xd0, 0xb1, 0x2f, 0xb2, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x57, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00,
-       0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x42, 0x3c, 0x8a,
-       0xb0, 0xe7, 0x54, 0x41, 0xb8, 0xca, 0x3a, 0x6f, 0xbe, 0xd8, 0x08, 0x00, 0x45, 0x00, 0x00, 0x34,
-       0xa8, 0x23, 0x40, 0x00, 0x40, 0x06, 0x61, 0x7f, 0x0a, 0x01, 0x0e, 0x10, 0x0a, 0x01, 0x0f, 0x10,
-       0x97, 0x91, 0x23, 0x84, 0x24, 0xfa, 0x91, 0xf7, 0xb4, 0xe8, 0xf3, 0x2d, 0x80, 0x10, 0x00, 0xab,
-       0x7b, 0x7d, 0x00, 0x00, 0x01, 0x01, 0x08, 0x0a, 0xef, 0x1f, 0xf4, 0x36, 0xef, 0x1f, 0xdc, 0xde,
-       0x00, 0x00, 0x00, 0x00, 0x03, 0xe9, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-}
-
-// Test collected from the SFlow reference agent. Contains dummy data for several record types
-// that wern't available on an actual network for sampling.
-var SFlowTestPacket2 = []byte{
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
-       0x04, 0x88, 0x00, 0x00, 0x40, 0x00, 0x40, 0x11, 0x38, 0x63, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
-       0x00, 0x01, 0xdc, 0xb8, 0x18, 0xc7, 0x04, 0x74, 0x02, 0x88, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
-       0x00, 0x01, 0xc0, 0xa8, 0x5b, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb5, 0x3a, 0x00, 0x00,
-       0xcb, 0x20, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x54, 0x00, 0x02,
-       0x1f, 0x6e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x1f, 0x6e, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x3f, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
-       0x03, 0xed, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x14, 0x68, 0x74,
-       0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x6f,
-       0x72, 0x67, 0x00, 0x00, 0x00, 0x0f, 0x68, 0x6f, 0x73, 0x74, 0x31, 0x2e, 0x73, 0x66, 0x6c, 0x6f,
-       0x77, 0x2e, 0x6f, 0x72, 0x67, 0x06, 0x00, 0x00, 0x03, 0xec, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00,
-       0x00, 0x6a, 0x00, 0x00, 0x00, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x75, 0x73, 0x65,
-       0x72, 0xdc, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x10, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e,
-       0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x75, 0x73, 0x65, 0x72, 0x00, 0x00, 0x03, 0xeb, 0x00, 0x00,
-       0x00, 0x64, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0c, 0x0b, 0x0a, 0x00, 0x00, 0xfd, 0xe9, 0x00, 0x00,
-       0x00, 0x7b, 0x00, 0x00, 0x03, 0xe7, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
-       0x00, 0x03, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x01, 0xc8, 0x00, 0x00, 0x03, 0x15, 0x00, 0x00,
-       0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x2b, 0x67, 0x00, 0x00, 0x56, 0xce, 0x00, 0x00,
-       0x82, 0x35, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x09, 0x00, 0x00,
-       0x03, 0x78, 0x00, 0x00, 0x03, 0xe7, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00,
-       0x00, 0x0d, 0x00, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00,
-       0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x42, 0x00, 0x0c,
-       0x29, 0x67, 0xa0, 0xe5, 0x00, 0x50, 0x56, 0xc0, 0x00, 0x09, 0x08, 0x00, 0x45, 0x10, 0x00, 0x34,
-       0x92, 0xc3, 0x40, 0x00, 0x40, 0x06, 0x70, 0x8d, 0xc0, 0xa8, 0x5b, 0x01, 0xc0, 0xa8, 0x5b, 0x11,
-       0xd3, 0xdd, 0x00, 0x16, 0xe3, 0x2e, 0x84, 0x77, 0x13, 0x6d, 0xc5, 0x53, 0x80, 0x10, 0x1f, 0xf7,
-       0xe7, 0x7d, 0x00, 0x00, 0x01, 0x01, 0x08, 0x0a, 0x2e, 0xc6, 0x70, 0x3a, 0x00, 0x0f, 0x84, 0x7a,
-       0xbc, 0xd2, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x90, 0x00, 0x02, 0x1f, 0x6f, 0x00, 0x00,
-       0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x1f, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff,
-       0xff, 0xff, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xed, 0x00, 0x00,
-       0x00, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x14, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
-       0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x6f, 0x72, 0x67, 0x00, 0x00,
-       0x00, 0x0f, 0x68, 0x6f, 0x73, 0x74, 0x31, 0x2e, 0x73, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x6f, 0x72,
-       0x67, 0x03, 0x00, 0x00, 0x03, 0xec, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00,
-       0x00, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x77, 0x00, 0x00,
-       0x00, 0x6a, 0x00, 0x00, 0x00, 0x10, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f,
-       0x6e, 0x20, 0x75, 0x73, 0x65, 0x72, 0x00, 0x00, 0x03, 0xeb, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00,
-       0x00, 0x01, 0x0d, 0x0c, 0x0b, 0x0a, 0x00, 0x00, 0xfd, 0xe9, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00,
-       0x03, 0xe7, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
-       0x00, 0x7b, 0x00, 0x00, 0x01, 0xc8, 0x00, 0x00, 0x03, 0x15, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-       0x00, 0x03, 0x00, 0x00, 0x2b, 0x67, 0x00, 0x00, 0x56, 0xce, 0x00, 0x00, 0x82, 0x35, 0x00, 0x00,
-       0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x09, 0x00, 0x00, 0x03, 0x78, 0x00, 0x00,
-       0x03, 0xe7, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00,
-       0x01, 0xb0, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-       0x01, 0x86, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x80, 0x00, 0x50, 0x56, 0xc0, 0x00, 0x09,
-       0x00, 0x0c, 0x29, 0x67, 0xa0, 0xe5, 0x08, 0x00, 0x45, 0x10, 0x01, 0x74, 0xbb, 0xfa, 0x40, 0x00,
-       0x40, 0x06, 0x46, 0x16, 0xc0, 0xa8, 0x5b, 0x11, 0xc0, 0xa8, 0x5b, 0x01, 0x00, 0x16, 0xd3, 0xdd,
-       0x13, 0x6d, 0xc5, 0x53, 0xe3, 0x2e, 0x84, 0x77, 0x80, 0x18, 0x01, 0x10, 0x38, 0xca, 0x00, 0x00,
-       0x01, 0x01, 0x08, 0x0a, 0x00, 0x0f, 0x84, 0x7d, 0x2e, 0xc6, 0x70, 0x3a, 0xe3, 0x92, 0x97, 0x1a,
-       0x67, 0x3b, 0xac, 0xec, 0xfa, 0x43, 0x71, 0x5e, 0x36, 0xa1, 0x0a, 0xc6, 0x1a, 0x6a, 0xed, 0x08,
-       0xac, 0xf4, 0xbe, 0xd8, 0x36, 0x59, 0xf6, 0xe2, 0x3d, 0x34, 0x26, 0xf2, 0x42, 0xbd, 0x32, 0xd3,
-       0x37, 0x52, 0xb8, 0xf4, 0x38, 0xf0, 0xf4, 0xeb, 0x76, 0x3b, 0xda, 0x23, 0xf1, 0x92, 0x96, 0xca,
-       0xbb, 0x9c, 0x20, 0x0a, 0x38, 0x37, 0x6f, 0xd9, 0x26, 0xe6, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-       0x01, 0x54, 0x00, 0x02, 0x1f, 0x70, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02,
-       0x1f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x3f, 0xff, 0xff, 0xff, 0x00, 0x00,
-       0x00, 0x04, 0x00, 0x00, 0x03, 0xed, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-       0x00, 0x14, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x66, 0x6c,
-       0x6f, 0x77, 0x2e, 0x6f, 0x72, 0x67, 0x00, 0x00, 0x00, 0x0f, 0x68, 0x6f, 0x73, 0x74, 0x31, 0x2e,
-       0x73, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x6f, 0x72, 0x67, 0xff, 0x00, 0x00, 0x03, 0xec, 0x00, 0x00,
-       0x00, 0x2c, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
-       0x20, 0x75, 0x73, 0x65, 0x72, 0x77, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x10, 0x64, 0x65,
-       0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x75, 0x73, 0x65, 0x72, 0x00, 0x00,
-       0x03, 0xeb, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0c, 0x0b, 0x0a, 0x00, 0x00,
-       0xfd, 0xe9, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x03, 0xe7, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
-       0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x01, 0xc8, 0x00, 0x00,
-       0x03, 0x15, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x2b, 0x67, 0x00, 0x00,
-       0x56, 0xce, 0x00, 0x00, 0x82, 0x35, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
-       0x03, 0x09, 0x00, 0x00, 0x03, 0x78, 0x00, 0x00, 0x03, 0xe7, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
-       0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-       0x00, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
-       0x00, 0x42, 0x00, 0x0c, 0x29, 0x67, 0xa0, 0xe5, 0x00, 0x50, 0x56, 0xc0, 0x00, 0x09, 0x08, 0x00,
-       0x45, 0x10, 0x00, 0x34, 0x65, 0x7d, 0x40, 0x00, 0x40, 0x06, 0x9d, 0xd3, 0xc0, 0xa8, 0x5b, 0x01,
-       0xc0, 0xa8, 0x5b, 0x11, 0xd3, 0xdd, 0x00, 0x16, 0xe3, 0x2e, 0x84, 0x77, 0x13, 0x6d, 0xc6, 0x93,
-       0x80, 0x10, 0x1f, 0xec, 0xe6, 0x43, 0x00, 0x00, 0x01, 0x01, 0x08, 0x0a, 0x2e, 0xc6, 0x70, 0x3c,
-       0x00, 0x0f, 0x84, 0x7d, 0x00, 0x50,
-}
-
-// processor counter sample
-var SFlowTestPacket3 = []byte{
-       0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01,
-       0x0a, 0x14, 0x04, 0x00, 0x00, 0x00, 0x00, 0x64,
-       0x00, 0x01, 0x78, 0xe0, 0x73, 0x03, 0x48, 0x78,
-       0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04,
-       0x00, 0x00, 0x00, 0x34, 0x00, 0x01, 0x78, 0xe0,
-       0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01,
-       0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0xe9,
-       0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x05, 0xaa,
-       0x00, 0x00, 0x05, 0x5a, 0x00, 0x00, 0x05, 0x32,
-       0x00, 0x00, 0x00, 0x00, 0xe7, 0x8d, 0x70, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x55, 0xe7, 0x70, 0x00,
-}
-
-// expanded flow sample - extended switch flow record
-var SFlowTestPacket4 = []byte{
-       0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01,
-       0xc0, 0xa8, 0x01, 0x07, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x02, 0x7e, 0x32, 0xe0, 0xe4, 0x7c,
-       0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
-       0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x01, 0x23,
-       0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x01, 0x00,
-       0x00, 0x00, 0x03, 0x37, 0x00, 0x00, 0x56, 0x23,
-       0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x04,
-       0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0xe9,
-       0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x03,
-       0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05,
-       0xff, 0xff, 0xff, 0xff,
-}
-
-// expanded flow sample - extended router flow record
-var SFlowTestPacket5 = []byte{
-       0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01,
-       0xc0, 0xa8, 0x01, 0x12, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x02, 0x7e, 0x32, 0xe0, 0xe4, 0x7c,
-       0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
-       0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x01, 0x23,
-       0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x01, 0x00,
-       0x00, 0x00, 0x03, 0x34, 0x00, 0x00, 0x56, 0x02,
-       0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x04,
-       0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0xea,
-       0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01,
-       0xc0, 0xa8, 0x01, 0x21, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0x80,
-}
-
-// expanded flow sample - Ipv4 Tunnel Ingress record
-var SFlowTestPacket6 = []byte{
-       0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x7f, 0x00, 0x00, 0x01,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x00, 0x01, 0xbd, 0x50,
-       0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x48,
-       0x00, 0x00, 0x00, 0x74, 0x02, 0x00, 0x03, 0xe8, 0x00, 0x00, 0x00, 0x01,
-       0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x04, 0x00,
-       0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f,
-       0xc0, 0xa8, 0x00, 0x54, 0xc0, 0xa8, 0x00, 0x53, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-}
-
-// expanded flow sample - Ipv4 Tunnel Egress record
-var SFlowTestPacket7 = []byte{
-       0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x7f, 0x00, 0x00, 0x01,
-       0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x42, 0x68,
-       0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x48,
-       0x00, 0x00, 0x00, 0x12, 0x02, 0x00, 0x03, 0xe9, 0x00, 0x00, 0x00, 0x01,
-       0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c,
-       0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
-       0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xa8, 0x00, 0x54,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00,
-}
-
-// expanded flow sample - extended router flow record IPv6 next hop
-var SFlowTestPacket8 = []byte{
-       0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01,
-       0xc0, 0xa8, 0x01, 0x12, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x02, 0x7e, 0x32, 0xe0, 0xe4, 0x7c,
-       0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
-       0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x01, 0x23,
-       0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x01, 0x00,
-       0x00, 0x00, 0x03, 0x34, 0x00, 0x00, 0x56, 0x02,
-       0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x04,
-       0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0xea,
-       0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x02,
-       0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80,
-}
-
-func TestDecodeUDPSFlow(t *testing.T) {
-       p := gopacket.NewPacket(SFlowTestPacket1, LayerTypeEthernet, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeUDP, LayerTypeSFlow}, t)
-       if got, ok := p.TransportLayer().(*UDP); ok {
-               want := &UDP{
-                       BaseLayer: BaseLayer{SFlowTestPacket1[34:42], SFlowTestPacket1[42:]},
-                       sPort:     []byte{199, 87},
-                       dPort:     []byte{24, 199},
-                       SrcPort:   51031,
-                       DstPort:   6343,
-                       Checksum:  8763,
-                       Length:    1448,
-               }
-               if !reflect.DeepEqual(want, got) {
-                       t.Errorf("UDP layer mismatch, \nwant  %#v\ngot %#v\n", want, got)
-               }
-       } else {
-               t.Error("Transport layer packet not UDP")
-       }
-}
-
-func TestDecodeSFlowDatagram(t *testing.T) {
-       p := gopacket.NewPacket(SFlowTestPacket1, LayerTypeEthernet, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeUDP, LayerTypeSFlow}, t)
-       if got, ok := p.ApplicationLayer().(*SFlowDatagram); ok {
-               want := &SFlowDatagram{
-                       DatagramVersion: uint32(5),
-                       AgentAddress:    []byte{0xa, 0x1, 0xf8, 0x16},
-                       SubAgentID:      uint32(17),
-                       SequenceNumber:  uint32(40443),
-                       AgentUptime:     uint32(1078576845),
-                       SampleCount:     uint32(7),
-                       FlowSamples: []SFlowFlowSample{
-                               SFlowFlowSample{
-                                       EnterpriseID:    0x0,
-                                       Format:          0x1,
-                                       SampleLength:    0xd0,
-                                       SequenceNumber:  0x2627e8,
-                                       SourceIDClass:   0x0,
-                                       SourceIDIndex:   0x213,
-                                       SamplingRate:    0x3e80,
-                                       SamplePool:      0x50bde580,
-                                       Dropped:         0x0,
-                                       InputInterface:  0x213,
-                                       OutputInterface: 0x0,
-                                       RecordCount:     0x2,
-                                       Records: []SFlowRecord{
-                                               SFlowRawPacketFlowRecord{
-                                                       SFlowBaseFlowRecord: SFlowBaseFlowRecord{
-                                                               EnterpriseID:   0x0,
-                                                               Format:         0x1,
-                                                               FlowDataLength: 0x90,
-                                                       },
-                                                       HeaderProtocol: 0x1,
-                                                       FrameLength:    0x5d2,
-                                                       PayloadRemoved: 0x4,
-                                                       HeaderLength:   0x80,
-                                                       Header:         gopacket.NewPacket(SFlowTestPacket1[134:262], LayerTypeEthernet, gopacket.Default),
-                                               },
-                                               SFlowExtendedSwitchFlowRecord{
-                                                       SFlowBaseFlowRecord: SFlowBaseFlowRecord{
-                                                               EnterpriseID:   0x0,
-                                                               Format:         0x3e9,
-                                                               FlowDataLength: 0x10,
-                                                       },
-                                                       IncomingVLAN:         0x202,
-                                                       IncomingVLANPriority: 0x0,
-                                                       OutgoingVLAN:         0x0,
-                                                       OutgoingVLANPriority: 0x0,
-                                               },
-                                       },
-                               },
-                               SFlowFlowSample{
-                                       EnterpriseID:    0x0,
-                                       Format:          0x1,
-                                       SampleLength:    0xd0,
-                                       SequenceNumber:  0x15e5c1e,
-                                       SourceIDClass:   0x0,
-                                       SourceIDIndex:   0x257,
-                                       SamplingRate:    0x7d0,
-                                       SamplePool:      0xb12fa290,
-                                       Dropped:         0x0,
-                                       InputInterface:  0x257,
-                                       OutputInterface: 0x0,
-                                       RecordCount:     0x2,
-                                       Records: []SFlowRecord{
-                                               SFlowRawPacketFlowRecord{
-                                                       SFlowBaseFlowRecord: SFlowBaseFlowRecord{
-                                                               EnterpriseID:   0x0,
-                                                               Format:         0x1,
-                                                               FlowDataLength: 0x90,
-                                                       },
-                                                       HeaderProtocol: 0x1,
-                                                       FrameLength:    0x5ee,
-                                                       PayloadRemoved: 0x4,
-                                                       HeaderLength:   0x80,
-                                                       Header:         gopacket.NewPacket(SFlowTestPacket1[350:478], LayerTypeEthernet, gopacket.Default),
-                                               },
-                                               SFlowExtendedSwitchFlowRecord{
-                                                       SFlowBaseFlowRecord: SFlowBaseFlowRecord{
-                                                               EnterpriseID:   0x0,
-                                                               Format:         0x3e9,
-                                                               FlowDataLength: 0x10,
-                                                       },
-                                                       IncomingVLAN:         0x202,
-                                                       IncomingVLANPriority: 0x0,
-                                                       OutgoingVLAN:         0x0,
-                                                       OutgoingVLANPriority: 0x0,
-                                               },
-                                       },
-                               },
-                               SFlowFlowSample{
-                                       EnterpriseID:    0x0,
-                                       Format:          0x1,
-                                       SampleLength:    0xd0,
-                                       SequenceNumber:  0x15acdd0,
-                                       SourceIDClass:   0x0,
-                                       SourceIDIndex:   0x255,
-                                       SamplingRate:    0x7d0,
-                                       SamplePool:      0x9567e130,
-                                       Dropped:         0x0,
-                                       InputInterface:  0x255,
-                                       OutputInterface: 0x0,
-                                       RecordCount:     0x2,
-                                       Records: []SFlowRecord{
-                                               SFlowRawPacketFlowRecord{
-                                                       SFlowBaseFlowRecord: SFlowBaseFlowRecord{
-                                                               EnterpriseID:   0x0,
-                                                               Format:         0x1,
-                                                               FlowDataLength: 0x90,
-                                                       },
-                                                       HeaderProtocol: 0x1,
-                                                       FrameLength:    0x446,
-                                                       PayloadRemoved: 0x4,
-                                                       HeaderLength:   0x80,
-                                                       Header:         gopacket.NewPacket(SFlowTestPacket1[566:694], LayerTypeEthernet, gopacket.Default),
-                                               },
-                                               SFlowExtendedSwitchFlowRecord{
-                                                       SFlowBaseFlowRecord: SFlowBaseFlowRecord{
-                                                               EnterpriseID:   0x0,
-                                                               Format:         0x3e9,
-                                                               FlowDataLength: 0x10,
-                                                       },
-                                                       IncomingVLAN:         0x202,
-                                                       IncomingVLANPriority: 0x0,
-                                                       OutgoingVLAN:         0x0,
-                                                       OutgoingVLANPriority: 0x0,
-                                               },
-                                       },
-                               },
-                               SFlowFlowSample{
-                                       EnterpriseID:    0x0,
-                                       Format:          0x1,
-                                       SampleLength:    0xd0,
-                                       SequenceNumber:  0x15e5c1f,
-                                       SourceIDClass:   0x0,
-                                       SourceIDIndex:   0x257,
-                                       SamplingRate:    0x7d0,
-                                       SamplePool:      0xb12faa60,
-                                       Dropped:         0x0,
-                                       InputInterface:  0x257,
-                                       OutputInterface: 0x0,
-                                       RecordCount:     0x2,
-                                       Records: []SFlowRecord{
-                                               SFlowRawPacketFlowRecord{
-                                                       SFlowBaseFlowRecord: SFlowBaseFlowRecord{
-                                                               EnterpriseID:   0x0,
-                                                               Format:         0x1,
-                                                               FlowDataLength: 0x90,
-                                                       },
-                                                       HeaderProtocol: 0x1,
-                                                       FrameLength:    0x5ee,
-                                                       PayloadRemoved: 0x4,
-                                                       HeaderLength:   0x80,
-                                                       Header:         gopacket.NewPacket(SFlowTestPacket1[958:1086], LayerTypeEthernet, gopacket.Default),
-                                               },
-                                               SFlowExtendedSwitchFlowRecord{
-                                                       SFlowBaseFlowRecord: SFlowBaseFlowRecord{
-                                                               EnterpriseID:   0x0,
-                                                               Format:         0x3e9,
-                                                               FlowDataLength: 0x10,
-                                                       },
-                                                       IncomingVLAN:         0x202,
-                                                       IncomingVLANPriority: 0x0,
-                                                       OutgoingVLAN:         0x0,
-                                                       OutgoingVLANPriority: 0x0,
-                                               },
-                                       },
-                               },
-                               SFlowFlowSample{
-                                       EnterpriseID:    0x0,
-                                       Format:          0x1,
-                                       SampleLength:    0xd0,
-                                       SequenceNumber:  0x15acdd1,
-                                       SourceIDClass:   0x0,
-                                       SourceIDIndex:   0x255,
-                                       SamplingRate:    0x7d0,
-                                       SamplePool:      0x9567e900,
-                                       Dropped:         0x0,
-                                       InputInterface:  0x255,
-                                       OutputInterface: 0x257,
-                                       RecordCount:     0x2,
-                                       Records: []SFlowRecord{
-                                               SFlowRawPacketFlowRecord{
-                                                       SFlowBaseFlowRecord: SFlowBaseFlowRecord{
-                                                               EnterpriseID:   0x0,
-                                                               Format:         0x1,
-                                                               FlowDataLength: 0x90,
-                                                       },
-                                                       HeaderProtocol: 0x1,
-                                                       FrameLength:    0x5ee,
-                                                       PayloadRemoved: 0x4,
-                                                       HeaderLength:   0x80,
-                                                       Header:         gopacket.NewPacket(SFlowTestPacket1[1174:1302], LayerTypeEthernet, gopacket.Default),
-                                               },
-                                               SFlowExtendedSwitchFlowRecord{
-                                                       SFlowBaseFlowRecord: SFlowBaseFlowRecord{
-                                                               EnterpriseID:   0x0,
-                                                               Format:         0x3e9,
-                                                               FlowDataLength: 0x10,
-                                                       },
-                                                       IncomingVLAN:         0x202,
-                                                       IncomingVLANPriority: 0x0,
-                                                       OutgoingVLAN:         0x202,
-                                                       OutgoingVLANPriority: 0x0,
-                                               },
-                                       },
-                               },
-                               SFlowFlowSample{
-                                       EnterpriseID:    0x0,
-                                       Format:          0x1,
-                                       SampleLength:    0x94,
-                                       SequenceNumber:  0x15e5c20,
-                                       SourceIDClass:   0x0,
-                                       SourceIDIndex:   0x257,
-                                       SamplingRate:    0x7d0,
-                                       SamplePool:      0xb12fb230,
-                                       Dropped:         0x0,
-                                       InputInterface:  0x257,
-                                       OutputInterface: 0x0,
-                                       RecordCount:     0x2,
-                                       Records: []SFlowRecord{
-                                               SFlowRawPacketFlowRecord{
-                                                       SFlowBaseFlowRecord: SFlowBaseFlowRecord{
-                                                               EnterpriseID:   0x0,
-                                                               Format:         0x1,
-                                                               FlowDataLength: 0x54,
-                                                       },
-                                                       HeaderProtocol: 0x1,
-                                                       FrameLength:    0x46,
-                                                       PayloadRemoved: 0x4,
-                                                       HeaderLength:   0x42,
-                                                       Header:         gopacket.NewPacket(SFlowTestPacket1[1390:1458], LayerTypeEthernet, gopacket.Default),
-                                               },
-                                               SFlowExtendedSwitchFlowRecord{
-                                                       SFlowBaseFlowRecord: SFlowBaseFlowRecord{
-                                                               EnterpriseID:   0x0,
-                                                               Format:         0x3e9,
-                                                               FlowDataLength: 0x10,
-                                                       },
-                                                       IncomingVLAN:         0x202,
-                                                       IncomingVLANPriority: 0x0,
-                                                       OutgoingVLAN:         0x0,
-                                                       OutgoingVLANPriority: 0x0,
-                                               },
-                                       },
-                               },
-                       },
-                       CounterSamples: []SFlowCounterSample{
-                               SFlowCounterSample{
-                                       Format:         0x2,
-                                       SampleLength:   0xa8,
-                                       SequenceNumber: 0x20f2,
-                                       SourceIDClass:  0x0,
-                                       SourceIDIndex:  0x20a,
-                                       RecordCount:    0x2,
-                                       Records: []SFlowRecord{
-                                               SFlowGenericInterfaceCounters{
-                                                       SFlowBaseCounterRecord: SFlowBaseCounterRecord{
-                                                               EnterpriseID:   0x0,
-                                                               Format:         0x1,
-                                                               FlowDataLength: 0x58,
-                                                       },
-                                                       IfIndex:            0x20a,
-                                                       IfType:             0x6,
-                                                       IfSpeed:            0x2540be400,
-                                                       IfDirection:        0x1,
-                                                       IfStatus:           0x3,
-                                                       IfInOctets:         0x129826db06c0b,
-                                                       IfInUcastPkts:      0xcb0ddd96,
-                                                       IfInMulticastPkts:  0x6a8c6,
-                                                       IfInBroadcastPkts:  0x7b,
-                                                       IfInDiscards:       0x0,
-                                                       IfInErrors:         0x0,
-                                                       IfInUnknownProtos:  0x0,
-                                                       IfOutOctets:        0x340235587c9e,
-                                                       IfOutUcastPkts:     0x56642571,
-                                                       IfOutMulticastPkts: 0x705ac4,
-                                                       IfOutBroadcastPkts: 0x908f1,
-                                                       IfOutDiscards:      0x0,
-                                                       IfOutErrors:        0x0,
-                                                       IfPromiscuousMode:  0x0,
-                                               },
-                                               SFlowEthernetCounters{
-                                                       SFlowBaseCounterRecord: SFlowBaseCounterRecord{
-                                                               EnterpriseID:   0x0,
-                                                               Format:         0x2,
-                                                               FlowDataLength: 0x34,
-                                                       },
-                                                       AlignmentErrors:           0x0,
-                                                       FCSErrors:                 0x0,
-                                                       SingleCollisionFrames:     0x0,
-                                                       MultipleCollisionFrames:   0x0,
-                                                       SQETestErrors:             0x0,
-                                                       DeferredTransmissions:     0x0,
-                                                       LateCollisions:            0x0,
-                                                       ExcessiveCollisions:       0x0,
-                                                       InternalMacTransmitErrors: 0x0,
-                                                       CarrierSenseErrors:        0x0,
-                                                       FrameTooLongs:             0x0,
-                                                       InternalMacReceiveErrors:  0x0,
-                                                       SymbolErrors:              0x0,
-                                               },
-                                       },
-                               },
-                       },
-               }
-               if !reflect.DeepEqual(want, got) {
-                       t.Errorf("SFlow layer mismatch, \nwant:\n\n%#v\ngot:\n\n\n%#v\n\n", want, got)
-               }
-       } else {
-               t.Error("Application layer packet not UDP")
-       }
-}
-
-func TestPacketPacket0(t *testing.T) {
-       p := gopacket.NewPacket(SFlowTestPacket2, LinkTypeEthernet, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeUDP, LayerTypeSFlow}, t)
-       if got, ok := p.ApplicationLayer().(*SFlowDatagram); ok {
-               want := &SFlowDatagram{
-                       DatagramVersion: uint32(5),
-                       AgentAddress:    []byte{192, 168, 91, 17},
-                       SubAgentID:      uint32(0),
-                       SequenceNumber:  uint32(46394),
-                       AgentUptime:     uint32(52000),
-                       SampleCount:     uint32(3),
-                       FlowSamples: []SFlowFlowSample{
-                               SFlowFlowSample{
-                                       EnterpriseID:    0x0,
-                                       Format:          0x1,
-                                       SampleLength:    340,
-                                       SequenceNumber:  139118,
-                                       SourceIDClass:   0,
-                                       SourceIDIndex:   3,
-                                       SamplingRate:    1,
-                                       SamplePool:      139118,
-                                       Dropped:         0,
-                                       InputInterface:  3,
-                                       OutputInterface: 1073741823,
-                                       RecordCount:     4,
-                                       Records: []SFlowRecord{
-                                               SFlowExtendedURLRecord{
-                                                       SFlowBaseFlowRecord: SFlowBaseFlowRecord{
-                                                               EnterpriseID:   0,
-                                                               Format:         1005,
-                                                               FlowDataLength: 48,
-                                                       },
-                                                       Direction: SFlowURLsrc,
-                                                       URL:       "http://www.sflow.org",
-                                                       Host:      "host1.sflow.org",
-                                               },
-                                               SFlowExtendedUserFlow{
-                                                       SFlowBaseFlowRecord: SFlowBaseFlowRecord{
-                                                               EnterpriseID:   0,
-                                                               Format:         1004,
-                                                               FlowDataLength: 44,
-                                                       },
-                                                       SourceCharSet:      SFlowCSUTF8,
-                                                       SourceUserID:       "source user",
-                                                       DestinationCharSet: SFlowCSUTF8,
-                                                       DestinationUserID:  "destination user",
-                                               },
-                                               SFlowExtendedGatewayFlowRecord{
-                                                       SFlowBaseFlowRecord: SFlowBaseFlowRecord{
-                                                               EnterpriseID:   0,
-                                                               Format:         1003,
-                                                               FlowDataLength: 100,
-                                                       },
-                                                       NextHop:     []byte{0x0d, 0x0c, 0x0b, 0x0a},
-                                                       AS:          65001,
-                                                       SourceAS:    123,
-                                                       PeerAS:      999,
-                                                       ASPathCount: 3,
-                                                       ASPath: []SFlowASDestination{
-                                                               SFlowASDestination{
-                                                                       Type:    SFlowASSequence,
-                                                                       Count:   3,
-                                                                       Members: []uint32{123, 456, 789},
-                                                               },
-                                                               SFlowASDestination{
-                                                                       Type:    SFlowASSet,
-                                                                       Count:   3,
-                                                                       Members: []uint32{11111, 22222, 33333},
-                                                               },
-                                                               SFlowASDestination{
-                                                                       Type:    SFlowASSequence,
-                                                                       Count:   3,
-                                                                       Members: []uint32{777, 888, 999},
-                                                               },
-                                                       },
-                                                       Communities: []uint32{12, 13},
-                                                       LocalPref:   432,
-                                               },
-                                               SFlowRawPacketFlowRecord{
-                                                       SFlowBaseFlowRecord: SFlowBaseFlowRecord{
-                                                               EnterpriseID:   0x0,
-                                                               Format:         0x1,
-                                                               FlowDataLength: 84,
-                                                       },
-                                                       HeaderProtocol: 1,
-                                                       FrameLength:    70,
-                                                       PayloadRemoved: 4,
-                                                       HeaderLength:   0x42,
-                                                       Header:         gopacket.NewPacket(SFlowTestPacket2[350:418], LayerTypeEthernet, gopacket.Default),
-                                               },
-                                       },
-                               },
-                               SFlowFlowSample{
-                                       EnterpriseID:    0x0,
-                                       Format:          0x1,
-                                       SampleLength:    400,
-                                       SequenceNumber:  139119,
-                                       SourceIDClass:   0,
-                                       SourceIDIndex:   3,
-                                       SamplingRate:    1,
-                                       SamplePool:      139119,
-                                       Dropped:         0,
-                                       InputInterface:  1073741823,
-                                       OutputInterface: 3,
-                                       RecordCount:     4,
-                                       Records: []SFlowRecord{
-                                               SFlowExtendedURLRecord{
-                                                       SFlowBaseFlowRecord: SFlowBaseFlowRecord{
-                                                               EnterpriseID:   0,
-                                                               Format:         1005,
-                                                               FlowDataLength: 48,
-                                                       },
-                                                       Direction: SFlowURLsrc,
-                                                       URL:       "http://www.sflow.org",
-                                                       Host:      "host1.sflow.org",
-                                               },
-                                               SFlowExtendedUserFlow{
-                                                       SFlowBaseFlowRecord: SFlowBaseFlowRecord{
-                                                               EnterpriseID:   0,
-                                                               Format:         1004,
-                                                               FlowDataLength: 44,
-                                                       },
-                                                       SourceCharSet:      SFlowCSUTF8,
-                                                       SourceUserID:       "source user",
-                                                       DestinationCharSet: SFlowCSUTF8,
-                                                       DestinationUserID:  "destination user",
-                                               },
-                                               SFlowExtendedGatewayFlowRecord{
-                                                       SFlowBaseFlowRecord: SFlowBaseFlowRecord{
-                                                               EnterpriseID:   0,
-                                                               Format:         1003,
-                                                               FlowDataLength: 100,
-                                                       },
-                                                       NextHop:     []byte{0x0d, 0x0c, 0x0b, 0x0a},
-                                                       AS:          65001,
-                                                       SourceAS:    123,
-                                                       PeerAS:      999,
-                                                       ASPathCount: 3,
-                                                       ASPath: []SFlowASDestination{
-                                                               SFlowASDestination{
-                                                                       Type:    SFlowASSequence,
-                                                                       Count:   3,
-                                                                       Members: []uint32{123, 456, 789},
-                                                               },
-                                                               SFlowASDestination{
-                                                                       Type:    SFlowASSet,
-                                                                       Count:   3,
-                                                                       Members: []uint32{11111, 22222, 33333},
-                                                               },
-                                                               SFlowASDestination{
-                                                                       Type:    SFlowASSequence,
-                                                                       Count:   3,
-                                                                       Members: []uint32{777, 888, 999},
-                                                               },
-                                                       },
-                                                       Communities: []uint32{12, 13},
-                                                       LocalPref:   432,
-                                               },
-                                               SFlowRawPacketFlowRecord{
-                                                       SFlowBaseFlowRecord: SFlowBaseFlowRecord{
-                                                               EnterpriseID:   0x0,
-                                                               Format:         0x1,
-                                                               FlowDataLength: 144,
-                                                       },
-                                                       HeaderProtocol: 1,
-                                                       FrameLength:    390,
-                                                       PayloadRemoved: 4,
-                                                       HeaderLength:   0x80,
-                                                       Header:         gopacket.NewPacket(SFlowTestPacket2[698:826], LayerTypeEthernet, gopacket.Default),
-                                               },
-                                       },
-                               },
-                               SFlowFlowSample{
-                                       EnterpriseID:    0x0,
-                                       Format:          0x1,
-                                       SampleLength:    340,
-                                       SequenceNumber:  139120,
-                                       SourceIDClass:   0,
-                                       SourceIDIndex:   3,
-                                       SamplingRate:    1,
-                                       SamplePool:      139120,
-                                       Dropped:         0,
-                                       InputInterface:  3,
-                                       OutputInterface: 1073741823,
-                                       RecordCount:     4,
-                                       Records: []SFlowRecord{
-                                               SFlowExtendedURLRecord{
-                                                       SFlowBaseFlowRecord: SFlowBaseFlowRecord{
-                                                               EnterpriseID:   0,
-                                                               Format:         1005,
-                                                               FlowDataLength: 48,
-                                                       },
-                                                       Direction: SFlowURLsrc,
-                                                       URL:       "http://www.sflow.org",
-                                                       Host:      "host1.sflow.org",
-                                               },
-                                               SFlowExtendedUserFlow{
-                                                       SFlowBaseFlowRecord: SFlowBaseFlowRecord{
-                                                               EnterpriseID:   0,
-                                                               Format:         1004,
-                                                               FlowDataLength: 44,
-                                                       },
-                                                       SourceCharSet:      SFlowCSUTF8,
-                                                       SourceUserID:       "source user",
-                                                       DestinationCharSet: SFlowCSUTF8,
-                                                       DestinationUserID:  "destination user",
-                                               },
-                                               SFlowExtendedGatewayFlowRecord{
-                                                       SFlowBaseFlowRecord: SFlowBaseFlowRecord{
-                                                               EnterpriseID:   0,
-                                                               Format:         1003,
-                                                               FlowDataLength: 100,
-                                                       },
-                                                       NextHop:     []byte{0x0d, 0x0c, 0x0b, 0x0a},
-                                                       AS:          65001,
-                                                       SourceAS:    123,
-                                                       PeerAS:      999,
-                                                       ASPathCount: 3,
-                                                       ASPath: []SFlowASDestination{
-                                                               SFlowASDestination{
-                                                                       Type:    SFlowASSequence,
-                                                                       Count:   3,
-                                                                       Members: []uint32{123, 456, 789},
-                                                               },
-                                                               SFlowASDestination{
-                                                                       Type:    SFlowASSet,
-                                                                       Count:   3,
-                                                                       Members: []uint32{11111, 22222, 33333},
-                                                               },
-                                                               SFlowASDestination{
-                                                                       Type:    SFlowASSequence,
-                                                                       Count:   3,
-                                                                       Members: []uint32{777, 888, 999},
-                                                               },
-                                                       },
-                                                       Communities: []uint32{12, 13},
-                                                       LocalPref:   432,
-                                               },
-                                               SFlowRawPacketFlowRecord{
-                                                       SFlowBaseFlowRecord: SFlowBaseFlowRecord{
-                                                               EnterpriseID:   0x0,
-                                                               Format:         0x1,
-                                                               FlowDataLength: 84,
-                                                       },
-                                                       HeaderProtocol: 1,
-                                                       FrameLength:    70,
-                                                       PayloadRemoved: 4,
-                                                       HeaderLength:   0x42,
-                                                       Header:         gopacket.NewPacket(SFlowTestPacket2[1106:1174], LayerTypeEthernet, gopacket.Default),
-                                               },
-                                       },
-                               },
-                       },
-               }
-               if !reflect.DeepEqual(want, got) {
-                       t.Errorf("SFlow layer mismatch, \nwant:\n\n%#v\ngot:\n\n\n%#v\n\n", want, got)
-               }
-       } else {
-               t.Error("Application layer packet not UDP")
-       }
-}
-
-func TestDecodeProcessorCounter(t *testing.T) {
-       p := gopacket.NewPacket(SFlowTestPacket3, LayerTypeSFlow, gopacket.Default)
-
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeSFlow}, t)
-
-       got := p.ApplicationLayer().(*SFlowDatagram)
-
-       want := &SFlowDatagram{
-               DatagramVersion: uint32(5),
-               AgentAddress:    []byte{0x0a, 0x14, 0x04, 0x00},
-               SubAgentID:      uint32(0x64),
-               SequenceNumber:  uint32(96480),
-               AgentUptime:     uint32(1929595000),
-               SampleCount:     uint32(1),
-               CounterSamples: []SFlowCounterSample{
-                       SFlowCounterSample{
-                               Format:         SFlowTypeExpandedCounterSample,
-                               SampleLength:   0x34,
-                               SequenceNumber: 0x0178e0,
-                               SourceIDClass:  0x00,
-                               SourceIDIndex:  0x01,
-                               RecordCount:    0x01,
-                               Records: []SFlowRecord{
-                                       SFlowProcessorCounters{
-                                               SFlowBaseCounterRecord: SFlowBaseCounterRecord{
-                                                       EnterpriseID:   0x0,
-                                                       Format:         SFlowTypeProcessorCounters,
-                                                       FlowDataLength: 0x1c,
-                                               },
-                                               FiveSecCpu:  0x05aa,
-                                               OneMinCpu:   0x055a,
-                                               FiveMinCpu:  0x0532,
-                                               TotalMemory: 0xe78d7000,
-                                               FreeMemory:  0x55e77000,
-                                       },
-                               },
-                       },
-               },
-       }
-       if !reflect.DeepEqual(want, got) {
-               t.Errorf("SFlow layer mismatch, \nwant:\n\n%#v\ngot:\n\n\n%#v\n\n", want, got)
-       }
-}
-
-func TestDecodeExtendedSwitchFlow(t *testing.T) {
-       p := gopacket.NewPacket(SFlowTestPacket4, LayerTypeSFlow, gopacket.Default)
-
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeSFlow}, t)
-
-       got := p.ApplicationLayer().(*SFlowDatagram)
-
-       want := &SFlowDatagram{
-               DatagramVersion: uint32(5),
-               AgentAddress:    []byte{0xc0, 0xa8, 0x01, 0x07},
-               SubAgentID:      uint32(0x00),
-               SequenceNumber:  uint32(0x027e),
-               AgentUptime:     uint32(0x32e0e47c),
-               SampleCount:     uint32(1),
-               FlowSamples: []SFlowFlowSample{
-                       SFlowFlowSample{
-                               Format:                SFlowTypeFlowSample,
-                               SampleLength:          0x38,
-                               SequenceNumber:        0x123,
-                               SourceIDClass:         0x00,
-                               SourceIDIndex:         0x1d,
-                               SamplingRate:          0x100,
-                               SamplePool:            0x337,
-                               Dropped:               0x5623,
-                               InputInterfaceFormat:  0x00,
-                               InputInterface:        0x1d,
-                               OutputInterfaceFormat: 0x00,
-                               OutputInterface:       0x04,
-                               RecordCount:           0x01,
-                               Records: []SFlowRecord{
-                                       SFlowExtendedSwitchFlowRecord{
-                                               SFlowBaseFlowRecord: SFlowBaseFlowRecord{
-                                                       EnterpriseID:   0x0,
-                                                       Format:         SFlowTypeExtendedSwitchFlow,
-                                                       FlowDataLength: 0x10,
-                                               },
-                                               IncomingVLAN:         0x03,
-                                               IncomingVLANPriority: 0x02,
-                                               OutgoingVLAN:         0x05,
-                                               OutgoingVLANPriority: 0xffffffff,
-                                       },
-                               },
-                       },
-               },
-       }
-       if !reflect.DeepEqual(want, got) {
-               t.Errorf("SFlow layer mismatch, \nwant:\n\n%#v\ngot:\n\n\n%#v\n\n", want, got)
-       }
-}
-
-func TestDecodeExtendedRouterFlow(t *testing.T) {
-       p := gopacket.NewPacket(SFlowTestPacket5, LayerTypeSFlow, gopacket.Default)
-
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeSFlow}, t)
-
-       got := p.ApplicationLayer().(*SFlowDatagram)
-
-       want := &SFlowDatagram{
-               DatagramVersion: uint32(5),
-               AgentAddress:    []byte{0xc0, 0xa8, 0x01, 0x12},
-               SubAgentID:      uint32(0x00),
-               SequenceNumber:  uint32(0x027e),
-               AgentUptime:     uint32(0x32e0e47c),
-               SampleCount:     uint32(1),
-               FlowSamples: []SFlowFlowSample{
-                       SFlowFlowSample{
-                               Format:                SFlowTypeFlowSample,
-                               SampleLength:          0x34,
-                               SequenceNumber:        0x123,
-                               SourceIDClass:         0x00,
-                               SourceIDIndex:         0x1d,
-                               SamplingRate:          0x100,
-                               SamplePool:            0x334,
-                               Dropped:               0x5602,
-                               InputInterfaceFormat:  0x00,
-                               InputInterface:        0x1d,
-                               OutputInterfaceFormat: 0x00,
-                               OutputInterface:       0x04,
-                               RecordCount:           0x01,
-                               Records: []SFlowRecord{
-                                       SFlowExtendedRouterFlowRecord{
-                                               SFlowBaseFlowRecord: SFlowBaseFlowRecord{
-                                                       EnterpriseID:   0x0,
-                                                       Format:         SFlowTypeExtendedRouterFlow,
-                                                       FlowDataLength: 0x10,
-                                               },
-                                               NextHop:                []byte{0xc0, 0xa8, 0x01, 0x21},
-                                               NextHopSourceMask:      0xffffffff,
-                                               NextHopDestinationMask: 0xffffff80,
-                                       },
-                               },
-                       },
-               },
-       }
-       if !reflect.DeepEqual(want, got) {
-               t.Errorf("SFlow layer mismatch, \nwant:\n\n%#v\ngot:\n\n\n%#v\n\n", want, got)
-       }
-}
-
-func TestDecodeExtendedRouterFlowIPv6(t *testing.T) {
-       p := gopacket.NewPacket(SFlowTestPacket8, LayerTypeSFlow, gopacket.Default)
-
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeSFlow}, t)
-
-       got := p.ApplicationLayer().(*SFlowDatagram)
-
-       want := &SFlowDatagram{
-               DatagramVersion: uint32(5),
-               AgentAddress:    []byte{0xc0, 0xa8, 0x01, 0x12},
-               SubAgentID:      uint32(0x00),
-               SequenceNumber:  uint32(0x027e),
-               AgentUptime:     uint32(0x32e0e47c),
-               SampleCount:     uint32(1),
-               FlowSamples: []SFlowFlowSample{
-                       SFlowFlowSample{
-                               Format:                SFlowTypeFlowSample,
-                               SampleLength:          0x34,
-                               SequenceNumber:        0x123,
-                               SourceIDClass:         0x00,
-                               SourceIDIndex:         0x1d,
-                               SamplingRate:          0x100,
-                               SamplePool:            0x334,
-                               Dropped:               0x5602,
-                               InputInterfaceFormat:  0x00,
-                               InputInterface:        0x1d,
-                               OutputInterfaceFormat: 0x00,
-                               OutputInterface:       0x04,
-                               RecordCount:           0x01,
-                               Records: []SFlowRecord{
-                                       SFlowExtendedRouterFlowRecord{
-                                               SFlowBaseFlowRecord: SFlowBaseFlowRecord{
-                                                       EnterpriseID:   0x0,
-                                                       Format:         SFlowTypeExtendedRouterFlow,
-                                                       FlowDataLength: 0x1c,
-                                               },
-                                               NextHop:                []byte{0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-                                               NextHopSourceMask:      0xffffffff,
-                                               NextHopDestinationMask: 0xffffff80,
-                                       },
-                               },
-                       },
-               },
-       }
-       if !reflect.DeepEqual(want, got) {
-               t.Errorf("SFlow layer mismatch, \nwant:\n\n%#v\ngot:\n\n\n%#v\n\n", want, got)
-       }
-}
-
-func TestDecodeExtendedIpv4TunnelIngressFlow(t *testing.T) {
-       p := gopacket.NewPacket(SFlowTestPacket6, LayerTypeSFlow, gopacket.Default)
-
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeSFlow}, t)
-
-       got := p.ApplicationLayer().(*SFlowDatagram)
-
-       want := &SFlowDatagram{
-               DatagramVersion: uint32(5),
-               AgentAddress:    []byte{0x7f, 0x0, 0x0, 0x1},
-               SubAgentID:      uint32(0),
-               SequenceNumber:  uint32(0x72),
-               AgentUptime:     uint32(0x1bd50),
-               SampleCount:     uint32(1),
-               FlowSamples: []SFlowFlowSample{
-                       SFlowFlowSample{
-                               Format:                SFlowTypeFlowSample,
-                               SampleLength:          0x48,
-                               SequenceNumber:        0x74,
-                               SourceIDClass:         0x0,
-                               SourceIDIndex:         0x20003e8,
-                               SamplingRate:          0x1,
-                               SamplePool:            0x74,
-                               Dropped:               0x0,
-                               InputInterfaceFormat:  0x0,
-                               InputInterface:        0x0,
-                               OutputInterfaceFormat: 0x0,
-                               OutputInterface:       0x80000001,
-                               RecordCount:           0x1,
-                               Records: []SFlowRecord{
-                                       SFlowExtendedIpv4TunnelIngressRecord{
-                                               SFlowBaseFlowRecord: SFlowBaseFlowRecord{
-                                                       EnterpriseID:   0x0,
-                                                       Format:         SFlowTypeExtendedIpv4TunnelIngressFlow,
-                                                       FlowDataLength: 0x20,
-                                               },
-                                               SFlowIpv4Record: SFlowIpv4Record{
-                                                       Length:   0x0,
-                                                       Protocol: 0x2f,
-                                                       IPSrc:    net.IP{0xc0, 0xa8, 0x0, 0x54},
-                                                       IPDst:    net.IP{0xc0, 0xa8, 0x0, 0x53},
-                                                       PortSrc:  0x0,
-                                                       PortDst:  0x0,
-                                                       TCPFlags: 0x0,
-                                                       TOS:      0x0,
-                                               },
-                                       },
-                               },
-                       },
-               },
-       }
-       if !reflect.DeepEqual(want, got) {
-               t.Errorf("SFlow layer mismatch, \nwant:\n\n%#v\ngot:\n\n\n%#v\n\n", want, got)
-       }
-}
-
-func TestDecodeExtendedIpv4TunnelEgressFlow(t *testing.T) {
-       p := gopacket.NewPacket(SFlowTestPacket7, LayerTypeSFlow, gopacket.Default)
-
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeSFlow}, t)
-
-       got := p.ApplicationLayer().(*SFlowDatagram)
-
-       want := &SFlowDatagram{
-               DatagramVersion: uint32(5),
-               AgentAddress:    []byte{0x7f, 0x0, 0x0, 0x1},
-               SubAgentID:      uint32(1),
-               SequenceNumber:  uint32(0x12),
-               AgentUptime:     uint32(0x4268),
-               SampleCount:     uint32(1),
-               FlowSamples: []SFlowFlowSample{
-                       SFlowFlowSample{
-                               Format:                SFlowTypeFlowSample,
-                               SampleLength:          0x48,
-                               SequenceNumber:        0x12,
-                               SourceIDClass:         0x0,
-                               SourceIDIndex:         0x20003e9,
-                               SamplingRate:          0x1,
-                               SamplePool:            0x12,
-                               Dropped:               0x0,
-                               InputInterfaceFormat:  0x0,
-                               InputInterface:        0x6c,
-                               OutputInterfaceFormat: 0x0,
-                               OutputInterface:       0x80000001,
-                               RecordCount:           0x1,
-                               Records: []SFlowRecord{
-                                       SFlowExtendedIpv4TunnelEgressRecord{
-                                               SFlowBaseFlowRecord: SFlowBaseFlowRecord{
-                                                       EnterpriseID:   0x0,
-                                                       Format:         SFlowTypeExtendedIpv4TunnelEgressFlow,
-                                                       FlowDataLength: 0x20,
-                                               },
-                                               SFlowIpv4Record: SFlowIpv4Record{
-                                                       Length:   0x0,
-                                                       Protocol: 0x0,
-                                                       IPSrc:    net.IP{0x0, 0x0, 0x0, 0x0},
-                                                       IPDst:    net.IP{0xc0, 0xa8, 0x0, 0x54},
-                                                       PortSrc:  0x0,
-                                                       PortDst:  0x0,
-                                                       TCPFlags: 0x0,
-                                                       TOS:      0x0,
-                                               },
-                                       },
-                               },
-                       },
-               },
-       }
-       if !reflect.DeepEqual(want, got) {
-               t.Errorf("SFlow layer mismatch, \nwant:\n\n%#v\ngot:\n\n\n%#v\n\n", want, got)
-       }
-}
-
-func BenchmarkDecodeSFlowPacket1(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(SFlowTestPacket1, LinkTypeEthernet, gopacket.NoCopy)
-       }
-}
-
-func BenchmarkDecodeSFlowPacket2(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(SFlowTestPacket2, LinkTypeEthernet, gopacket.NoCopy)
-       }
-}
-
-func BenchmarkDecodeSFlowPacket3(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(SFlowTestPacket3, LinkTypeEthernet, gopacket.NoCopy)
-       }
-}
-
-func BenchmarkDecodeSFlowPacket4(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(SFlowTestPacket4, LinkTypeEthernet, gopacket.NoCopy)
-       }
-}
-
-func BenchmarkDecodeSFlowLayerPacket1(b *testing.B) {
-       var sflow SFlowDatagram
-       for i := 0; i < b.N; i++ {
-               sflow.DecodeFromBytes(SFlowTestPacket1[ /*eth*/ 14+ /*ipv4*/ 20+ /*udp*/ 8:], gopacket.NilDecodeFeedback)
-       }
-}
-
-func BenchmarkDecodeSFlowLayerPacket2(b *testing.B) {
-       var sflow SFlowDatagram
-       for i := 0; i < b.N; i++ {
-               sflow.DecodeFromBytes(SFlowTestPacket2[ /*eth*/ 14+ /*ipv4*/ 20+ /*udp*/ 8:], gopacket.NilDecodeFeedback)
-       }
-}
diff --git a/vendor/github.com/google/gopacket/layers/tcp_test.go b/vendor/github.com/google/gopacket/layers/tcp_test.go
deleted file mode 100644 (file)
index 56a6aaa..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright 2016, Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
-       "testing"
-
-       "github.com/google/gopacket"
-)
-
-func TestTCPOptionKindString(t *testing.T) {
-       testData := []struct {
-               o *TCPOption
-               s string
-       }{
-               {&TCPOption{
-                       OptionType:   TCPOptionKindNop,
-                       OptionLength: 1,
-               },
-                       "TCPOption(NOP:)"},
-               {&TCPOption{
-                       OptionType:   TCPOptionKindMSS,
-                       OptionLength: 4,
-                       OptionData:   []byte{0x12, 0x34},
-               },
-                       "TCPOption(MSS:4660 0x1234)"},
-               {&TCPOption{
-                       OptionType:   TCPOptionKindTimestamps,
-                       OptionLength: 10,
-                       OptionData:   []byte{0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01},
-               },
-                       "TCPOption(Timestamps:2/1 0x0000000200000001)"}}
-
-       for _, tc := range testData {
-               if s := tc.o.String(); s != tc.s {
-                       t.Errorf("expected %#v string to be %s, got %s", tc.o, tc.s, s)
-               }
-       }
-}
-
-func TestTCPSerializePadding(t *testing.T) {
-       tcp := &TCP{}
-       tcp.Options = append(tcp.Options, TCPOption{
-               OptionType:   TCPOptionKindNop,
-               OptionLength: 1,
-       })
-       buf := gopacket.NewSerializeBuffer()
-       opts := gopacket.SerializeOptions{FixLengths: true}
-       err := gopacket.SerializeLayers(buf, opts, tcp)
-       if err != nil {
-               t.Fatal(err)
-       }
-       if len(buf.Bytes())%4 != 0 {
-               t.Errorf("TCP data of len %d not padding to 32 bit boundary", len(buf.Bytes()))
-       }
-}
diff --git a/vendor/github.com/google/gopacket/layers/tcpip_test.go b/vendor/github.com/google/gopacket/layers/tcpip_test.go
deleted file mode 100644 (file)
index c002e84..0000000
+++ /dev/null
@@ -1,185 +0,0 @@
-// Copyright 2014, Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
-       "github.com/google/gopacket"
-       "net"
-       "testing"
-)
-
-const (
-       ipv4UDPChecksum                = uint16(0xbc5f) // Wireshark
-       ipv6UDPChecksumWithIPv6DstOpts = uint16(0x4d21) // Wireshark
-       ipv6UDPChecksumJumbogram       = uint16(0xcda8)
-)
-
-func createIPv4ChecksumTestLayer() (ip4 *IPv4) {
-       ip4 = &IPv4{}
-       ip4.Version = 4
-       ip4.TTL = 64
-       ip4.SrcIP = net.ParseIP("192.0.2.1")
-       ip4.DstIP = net.ParseIP("198.51.100.1")
-       return
-}
-
-func createIPv6ChecksumTestLayer() (ip6 *IPv6) {
-       ip6 = &IPv6{}
-       ip6.Version = 6
-       ip6.NextHeader = IPProtocolNoNextHeader
-       ip6.HopLimit = 64
-       ip6.SrcIP = net.ParseIP("2001:db8::1")
-       ip6.DstIP = net.ParseIP("2001:db8::2")
-       return
-}
-
-func createIPv6DestinationChecksumTestLayer() (dst *IPv6Destination) {
-       tlv := &IPv6DestinationOption{}
-       tlv.OptionType = 0x01 //PadN
-       tlv.OptionData = []byte{0x00, 0x00, 0x00, 0x00}
-       dst = &IPv6Destination{}
-       dst.Options = append(dst.Options, tlv)
-       dst.NextHeader = IPProtocolNoNextHeader
-       return
-}
-
-func createUDPChecksumTestLayer() (udp *UDP) {
-       udp = &UDP{}
-       udp.SrcPort = UDPPort(12345)
-       udp.DstPort = UDPPort(9999)
-       return
-}
-
-func TestIPv4UDPChecksum(t *testing.T) {
-       var serialize []gopacket.SerializableLayer = make([]gopacket.SerializableLayer, 0, 2)
-       var u *UDP
-       var err error
-
-       ip4 := createIPv4ChecksumTestLayer()
-       ip4.Protocol = IPProtocolUDP
-       serialize = append(serialize, ip4)
-
-       udp := createUDPChecksumTestLayer()
-       udp.SetNetworkLayerForChecksum(ip4)
-       serialize = append(serialize, udp)
-
-       buf := gopacket.NewSerializeBuffer()
-       opts := gopacket.SerializeOptions{FixLengths: true, ComputeChecksums: true}
-       err = gopacket.SerializeLayers(buf, opts, serialize...)
-       if err != nil {
-               t.Fatal(err)
-       }
-
-       p := gopacket.NewPacket(buf.Bytes(), LinkTypeRaw, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Fatal("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeIPv4, LayerTypeUDP}, t)
-
-       if l, ok := p.Layer(LayerTypeUDP).(*UDP); !ok {
-               t.Fatal("No UDP layer type found in packet")
-       } else {
-               u = l
-       }
-       got := u.Checksum
-       want := ipv4UDPChecksum
-       if got != want {
-               t.Errorf("Bad checksum:\ngot:\n%#v\n\nwant:\n%#v\n\n", got, want)
-       }
-}
-
-func TestIPv6UDPChecksumWithIPv6DstOpts(t *testing.T) {
-       var serialize []gopacket.SerializableLayer = make([]gopacket.SerializableLayer, 0, 3)
-       var u *UDP
-       var err error
-
-       ip6 := createIPv6ChecksumTestLayer()
-       ip6.NextHeader = IPProtocolIPv6Destination
-       serialize = append(serialize, ip6)
-
-       dst := createIPv6DestinationChecksumTestLayer()
-       dst.NextHeader = IPProtocolUDP
-       serialize = append(serialize, dst)
-
-       udp := createUDPChecksumTestLayer()
-       udp.SetNetworkLayerForChecksum(ip6)
-       serialize = append(serialize, udp)
-
-       buf := gopacket.NewSerializeBuffer()
-       opts := gopacket.SerializeOptions{FixLengths: true, ComputeChecksums: true}
-       err = gopacket.SerializeLayers(buf, opts, serialize...)
-       if err != nil {
-               t.Fatal(err)
-       }
-
-       p := gopacket.NewPacket(buf.Bytes(), LinkTypeRaw, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Fatal("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeIPv6, LayerTypeIPv6Destination, LayerTypeUDP}, t)
-
-       if l, ok := p.Layer(LayerTypeUDP).(*UDP); !ok {
-               t.Fatal("No UDP layer type found in packet")
-       } else {
-               u = l
-       }
-       got := u.Checksum
-       want := ipv6UDPChecksumWithIPv6DstOpts
-       if got != want {
-               t.Errorf("Bad checksum:\ngot:\n%#v\n\nwant:\n%#v\n\n", got, want)
-       }
-}
-
-func TestIPv6JumbogramUDPChecksum(t *testing.T) {
-       var serialize []gopacket.SerializableLayer = make([]gopacket.SerializableLayer, 0, 4)
-       var u *UDP
-       var err error
-
-       ip6 := &IPv6{}
-       ip6.Version = 6
-       ip6.NextHeader = IPProtocolUDP
-       ip6.HopLimit = 64
-       ip6.SrcIP = net.ParseIP("2001:db8::1")
-       ip6.DstIP = net.ParseIP("2001:db8::2")
-       serialize = append(serialize, ip6)
-
-       udp := &UDP{}
-       udp.SrcPort = UDPPort(12345)
-       udp.DstPort = UDPPort(9999)
-       udp.SetNetworkLayerForChecksum(ip6)
-       serialize = append(serialize, udp)
-
-       payload := make([]byte, ipv6MaxPayloadLength+1)
-       for i := range payload {
-               payload[i] = 0xfe
-       }
-       serialize = append(serialize, gopacket.Payload(payload))
-
-       buf := gopacket.NewSerializeBuffer()
-       opts := gopacket.SerializeOptions{FixLengths: true, ComputeChecksums: true}
-       err = gopacket.SerializeLayers(buf, opts, serialize...)
-       if err != nil {
-               t.Fatal(err)
-       }
-
-       p := gopacket.NewPacket(buf.Bytes(), LinkTypeRaw, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Fatal("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeIPv6, LayerTypeIPv6HopByHop, LayerTypeUDP, gopacket.LayerTypePayload}, t)
-
-       if l, ok := p.Layer(LayerTypeUDP).(*UDP); !ok {
-               t.Fatal("No UDP layer type found in packet")
-       } else {
-               u = l
-       }
-       got := u.Checksum
-       want := ipv6UDPChecksumJumbogram
-       if got != want {
-               t.Errorf("Bad checksum:\ngot:\n%#v\n\nwant:\n%#v\n\n", got, want)
-       }
-}
diff --git a/vendor/github.com/google/gopacket/layers/udp_test.go b/vendor/github.com/google/gopacket/layers/udp_test.go
deleted file mode 100644 (file)
index e71236c..0000000
+++ /dev/null
@@ -1,372 +0,0 @@
-// Copyright 2012, Google, Inc. All rights reserved.
-// Copyright 2009-2011 Andreas Krennmair. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
-       "reflect"
-       "testing"
-
-       "github.com/google/gopacket"
-)
-
-// testUDPPacketDNS is the packet:
-//   10:33:07.883637 IP 172.16.255.1.53 > 172.29.20.15.35181: 47320 7/0/0 MX ALT2.ASPMX.L.GOOGLE.com. 20, MX ASPMX2.GOOGLEMAIL.com. 30, MX ASPMX3.GOOGLEMAIL.com. 30, MX ASPMX4.GOOGLEMAIL.com. 30, MX ASPMX5.GOOGLEMAIL.com. 30, MX ASPMX.L.GOOGLE.com. 10, MX ALT1.ASPMX.L.GOOGLE.com. 20 (202)
-//      0x0000:  24be 0527 0b17 001f cab3 75c0 0800 4500  $..'......u...E.
-//      0x0010:  00e6 68cf 0000 3f11 a6f9 ac10 ff01 ac1d  ..h...?.........
-//      0x0020:  140f 0035 896d 00d2 754a b8d8 8180 0001  ...5.m..uJ......
-//      0x0030:  0007 0000 0000 0478 6b63 6403 636f 6d00  .......xkcd.com.
-//      0x0040:  000f 0001 c00c 000f 0001 0000 0258 0018  .............X..
-//      0x0050:  0014 0441 4c54 3205 4153 504d 5801 4c06  ...ALT2.ASPMX.L.
-//      0x0060:  474f 4f47 4c45 c011 c00c 000f 0001 0000  GOOGLE..........
-//      0x0070:  0258 0016 001e 0641 5350 4d58 320a 474f  .X.....ASPMX2.GO
-//      0x0080:  4f47 4c45 4d41 494c c011 c00c 000f 0001  OGLEMAIL........
-//      0x0090:  0000 0258 000b 001e 0641 5350 4d58 33c0  ...X.....ASPMX3.
-//      0x00a0:  53c0 0c00 0f00 0100 0002 5800 0b00 1e06  S.........X.....
-//      0x00b0:  4153 504d 5834 c053 c00c 000f 0001 0000  ASPMX4.S........
-//      0x00c0:  0258 000b 001e 0641 5350 4d58 35c0 53c0  .X.....ASPMX5.S.
-//      0x00d0:  0c00 0f00 0100 0002 5800 0400 0ac0 2dc0  ........X.....-.
-//      0x00e0:  0c00 0f00 0100 0002 5800 0900 1404 414c  ........X.....AL
-//      0x00f0:  5431 c02d                                T1.-
-// Packet generated by doing DNS query for 'xkcd.com'
-var testUDPPacketDNS = []byte{
-       0x24, 0xbe, 0x05, 0x27, 0x0b, 0x17, 0x00, 0x1f, 0xca, 0xb3, 0x75, 0xc0, 0x08, 0x00, 0x45, 0x00,
-       0x00, 0xe6, 0x68, 0xcf, 0x00, 0x00, 0x3f, 0x11, 0xa6, 0xf9, 0xac, 0x10, 0xff, 0x01, 0xac, 0x1d,
-       0x14, 0x0f, 0x00, 0x35, 0x89, 0x6d, 0x00, 0xd2, 0x75, 0x4a, 0xb8, 0xd8, 0x81, 0x80, 0x00, 0x01,
-       0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x04, 0x78, 0x6b, 0x63, 0x64, 0x03, 0x63, 0x6f, 0x6d, 0x00,
-       0x00, 0x0f, 0x00, 0x01, 0xc0, 0x0c, 0x00, 0x0f, 0x00, 0x01, 0x00, 0x00, 0x02, 0x58, 0x00, 0x18,
-       0x00, 0x14, 0x04, 0x41, 0x4c, 0x54, 0x32, 0x05, 0x41, 0x53, 0x50, 0x4d, 0x58, 0x01, 0x4c, 0x06,
-       0x47, 0x4f, 0x4f, 0x47, 0x4c, 0x45, 0xc0, 0x11, 0xc0, 0x0c, 0x00, 0x0f, 0x00, 0x01, 0x00, 0x00,
-       0x02, 0x58, 0x00, 0x16, 0x00, 0x1e, 0x06, 0x41, 0x53, 0x50, 0x4d, 0x58, 0x32, 0x0a, 0x47, 0x4f,
-       0x4f, 0x47, 0x4c, 0x45, 0x4d, 0x41, 0x49, 0x4c, 0xc0, 0x11, 0xc0, 0x0c, 0x00, 0x0f, 0x00, 0x01,
-       0x00, 0x00, 0x02, 0x58, 0x00, 0x0b, 0x00, 0x1e, 0x06, 0x41, 0x53, 0x50, 0x4d, 0x58, 0x33, 0xc0,
-       0x53, 0xc0, 0x0c, 0x00, 0x0f, 0x00, 0x01, 0x00, 0x00, 0x02, 0x58, 0x00, 0x0b, 0x00, 0x1e, 0x06,
-       0x41, 0x53, 0x50, 0x4d, 0x58, 0x34, 0xc0, 0x53, 0xc0, 0x0c, 0x00, 0x0f, 0x00, 0x01, 0x00, 0x00,
-       0x02, 0x58, 0x00, 0x0b, 0x00, 0x1e, 0x06, 0x41, 0x53, 0x50, 0x4d, 0x58, 0x35, 0xc0, 0x53, 0xc0,
-       0x0c, 0x00, 0x0f, 0x00, 0x01, 0x00, 0x00, 0x02, 0x58, 0x00, 0x04, 0x00, 0x0a, 0xc0, 0x2d, 0xc0,
-       0x0c, 0x00, 0x0f, 0x00, 0x01, 0x00, 0x00, 0x02, 0x58, 0x00, 0x09, 0x00, 0x14, 0x04, 0x41, 0x4c,
-       0x54, 0x31, 0xc0, 0x2d,
-}
-
-func TestUDPPacketDNS(t *testing.T) {
-       p := gopacket.NewPacket(testUDPPacketDNS, LinkTypeEthernet, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeUDP, LayerTypeDNS}, t)
-       if got, ok := p.TransportLayer().(*UDP); ok {
-               want := &UDP{
-                       BaseLayer: BaseLayer{
-                               Contents: []byte{0x0, 0x35, 0x89, 0x6d, 0x0, 0xd2, 0x75, 0x4a},
-                               Payload: []byte{0xb8, 0xd8, 0x81, 0x80, 0x0, 0x1, 0x0,
-                                       0x7, 0x0, 0x0, 0x0, 0x0, 0x4, 0x78, 0x6b, 0x63, 0x64, 0x3, 0x63, 0x6f,
-                                       0x6d, 0x0, 0x0, 0xf, 0x0, 0x1, 0xc0, 0xc, 0x0, 0xf, 0x0, 0x1, 0x0, 0x0,
-                                       0x2, 0x58, 0x0, 0x18, 0x0, 0x14, 0x4, 0x41, 0x4c, 0x54, 0x32, 0x5, 0x41,
-                                       0x53, 0x50, 0x4d, 0x58, 0x1, 0x4c, 0x6, 0x47, 0x4f, 0x4f, 0x47, 0x4c,
-                                       0x45, 0xc0, 0x11, 0xc0, 0xc, 0x0, 0xf, 0x0, 0x1, 0x0, 0x0, 0x2, 0x58, 0x0,
-                                       0x16, 0x0, 0x1e, 0x6, 0x41, 0x53, 0x50, 0x4d, 0x58, 0x32, 0xa, 0x47, 0x4f,
-                                       0x4f, 0x47, 0x4c, 0x45, 0x4d, 0x41, 0x49, 0x4c, 0xc0, 0x11, 0xc0, 0xc,
-                                       0x0, 0xf, 0x0, 0x1, 0x0, 0x0, 0x2, 0x58, 0x0, 0xb, 0x0, 0x1e, 0x6, 0x41,
-                                       0x53, 0x50, 0x4d, 0x58, 0x33, 0xc0, 0x53, 0xc0, 0xc, 0x0, 0xf, 0x0, 0x1,
-                                       0x0, 0x0, 0x2, 0x58, 0x0, 0xb, 0x0, 0x1e, 0x6, 0x41, 0x53, 0x50, 0x4d,
-                                       0x58, 0x34, 0xc0, 0x53, 0xc0, 0xc, 0x0, 0xf, 0x0, 0x1, 0x0, 0x0, 0x2,
-                                       0x58, 0x0, 0xb, 0x0, 0x1e, 0x6, 0x41, 0x53, 0x50, 0x4d, 0x58, 0x35, 0xc0,
-                                       0x53, 0xc0, 0xc, 0x0, 0xf, 0x0, 0x1, 0x0, 0x0, 0x2, 0x58, 0x0, 0x4, 0x0,
-                                       0xa, 0xc0, 0x2d, 0xc0, 0xc, 0x0, 0xf, 0x0, 0x1, 0x0, 0x0, 0x2, 0x58, 0x0,
-                                       0x9, 0x0, 0x14, 0x4, 0x41, 0x4c, 0x54, 0x31, 0xc0, 0x2d},
-                       },
-                       SrcPort:  53,
-                       DstPort:  35181,
-                       Length:   210,
-                       Checksum: 30026,
-                       sPort:    []byte{0x0, 0x35},
-                       dPort:    []byte{0x89, 0x6d},
-               }
-               if !reflect.DeepEqual(got, want) {
-                       t.Errorf("UDP packet mismatch:\ngot  :\n%#v\n\nwant :\n%#v\n\n", got, want)
-               }
-       } else {
-               t.Error("Transport layer packet not UDP")
-       }
-}
-
-func loadDNS(dnspacket []byte, t *testing.T) *DNS {
-       p := gopacket.NewPacket(dnspacket, LinkTypeEthernet, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4,
-               LayerTypeUDP, LayerTypeDNS}, t)
-
-       dnsL := p.Layer(LayerTypeDNS)
-       if dnsL == nil {
-               t.Error("No DNS Layer found")
-       }
-
-       dns, ok := dnsL.(*DNS)
-       if !ok {
-               return nil
-       }
-       return dns
-}
-
-var testDNSQueryA = []byte{
-       0xfe, 0x54, 0x00, 0x3e, 0x00, 0x96, 0x52, 0x54, /* .T.>..RT */
-       0x00, 0xbd, 0x1c, 0x70, 0x08, 0x00, 0x45, 0x00, /* ...p..E. */
-       0x00, 0x3c, 0x22, 0xe0, 0x00, 0x00, 0x40, 0x11, /* .<"...@. */
-       0xe2, 0x38, 0xc0, 0xa8, 0x7a, 0x46, 0xc0, 0xa8, /* .8..zF.. */
-       0x7a, 0x01, 0xc3, 0x35, 0x00, 0x35, 0x00, 0x28, /* z..5.5.( */
-       0x75, 0xd2, 0x52, 0x41, 0x01, 0x00, 0x00, 0x01, /* u.RA.... */
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x77, /* .......w */
-       0x77, 0x77, 0x06, 0x67, 0x6f, 0x6f, 0x67, 0x6c, /* ww.googl */
-       0x65, 0x03, 0x63, 0x6f, 0x6d, 0x00, 0x00, 0x01, /* e.com... */
-       0x00, 0x01, /* .. */
-}
-
-func TestDNSQueryA(t *testing.T) {
-       dns := loadDNS(testDNSQueryA, t)
-       if dns == nil {
-               t.Fatal("Failed to get a pointer to DNS struct")
-       }
-
-       if uint16(len(dns.Questions)) != dns.QDCount {
-               t.Fatal("Invalid query decoding, not the right number of questions")
-       }
-
-       if string(dns.Questions[0].Name) != "www.google.com" {
-               t.Errorf("Invalid query decoding, expecting 'www.google.com', got '%s'",
-                       dns.Questions[0].Name)
-       }
-       if dns.Questions[0].Class != DNSClassIN {
-               t.Errorf("Invalid query decoding, expecting Class IN, got '%d'",
-                       dns.Questions[0].Class)
-       }
-
-       if dns.Questions[0].Type != DNSTypeA {
-               t.Errorf("Invalid query decoding, expecting Type A, got '%d'",
-                       dns.Questions[0].Type)
-       }
-}
-
-var testDNSRRA = []byte{
-       0x52, 0x54, 0x00, 0xbd, 0x1c, 0x70, 0xfe, 0x54, /* RT...p.T */
-       0x00, 0x3e, 0x00, 0x96, 0x08, 0x00, 0x45, 0x00, /* .>....E. */
-       0x01, 0x24, 0x00, 0x00, 0x40, 0x00, 0x40, 0x11, /* .$..@.@. */
-       0xc4, 0x30, 0xc0, 0xa8, 0x7a, 0x01, 0xc0, 0xa8, /* .0..z... */
-       0x7a, 0x46, 0x00, 0x35, 0xc3, 0x35, 0x01, 0x10, /* zF.5.5.. */
-       0x76, 0xba, 0x52, 0x41, 0x81, 0x80, 0x00, 0x01, /* v.RA.... */
-       0x00, 0x06, 0x00, 0x04, 0x00, 0x04, 0x03, 0x77, /* .......w */
-       0x77, 0x77, 0x06, 0x67, 0x6f, 0x6f, 0x67, 0x6c, /* ww.googl */
-       0x65, 0x03, 0x63, 0x6f, 0x6d, 0x00, 0x00, 0x01, /* e.com... */
-       0x00, 0x01, 0xc0, 0x0c, 0x00, 0x01, 0x00, 0x01, /* ........ */
-       0x00, 0x00, 0x01, 0x2c, 0x00, 0x04, 0x4a, 0x7d, /* ...,..J} */
-       0xc3, 0x67, 0xc0, 0x0c, 0x00, 0x01, 0x00, 0x01, /* .g...... */
-       0x00, 0x00, 0x01, 0x2c, 0x00, 0x04, 0x4a, 0x7d, /* ...,..J} */
-       0xc3, 0x68, 0xc0, 0x0c, 0x00, 0x01, 0x00, 0x01, /* .h...... */
-       0x00, 0x00, 0x01, 0x2c, 0x00, 0x04, 0x4a, 0x7d, /* ...,..J} */
-       0xc3, 0x69, 0xc0, 0x0c, 0x00, 0x01, 0x00, 0x01, /* .i...... */
-       0x00, 0x00, 0x01, 0x2c, 0x00, 0x04, 0x4a, 0x7d, /* ...,..J} */
-       0xc3, 0x6a, 0xc0, 0x0c, 0x00, 0x01, 0x00, 0x01, /* .j...... */
-       0x00, 0x00, 0x01, 0x2c, 0x00, 0x04, 0x4a, 0x7d, /* ...,..J} */
-       0xc3, 0x93, 0xc0, 0x0c, 0x00, 0x01, 0x00, 0x01, /* ........ */
-       0x00, 0x00, 0x01, 0x2c, 0x00, 0x04, 0x4a, 0x7d, /* ...,..J} */
-       0xc3, 0x63, 0xc0, 0x10, 0x00, 0x02, 0x00, 0x01, /* .c...... */
-       0x00, 0x02, 0xa3, 0x00, 0x00, 0x06, 0x03, 0x6e, /* .......n */
-       0x73, 0x32, 0xc0, 0x10, 0xc0, 0x10, 0x00, 0x02, /* s2...... */
-       0x00, 0x01, 0x00, 0x02, 0xa3, 0x00, 0x00, 0x06, /* ........ */
-       0x03, 0x6e, 0x73, 0x33, 0xc0, 0x10, 0xc0, 0x10, /* .ns3.... */
-       0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0xa3, 0x00, /* ........ */
-       0x00, 0x06, 0x03, 0x6e, 0x73, 0x31, 0xc0, 0x10, /* ...ns1.. */
-       0xc0, 0x10, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, /* ........ */
-       0xa3, 0x00, 0x00, 0x06, 0x03, 0x6e, 0x73, 0x34, /* .....ns4 */
-       0xc0, 0x10, 0xc0, 0xb0, 0x00, 0x01, 0x00, 0x01, /* ........ */
-       0x00, 0x02, 0xa3, 0x00, 0x00, 0x04, 0xd8, 0xef, /* ........ */
-       0x20, 0x0a, 0xc0, 0x8c, 0x00, 0x01, 0x00, 0x01, /*  ....... */
-       0x00, 0x02, 0xa3, 0x00, 0x00, 0x04, 0xd8, 0xef, /* ........ */
-       0x22, 0x0a, 0xc0, 0x9e, 0x00, 0x01, 0x00, 0x01, /* "....... */
-       0x00, 0x02, 0xa3, 0x00, 0x00, 0x04, 0xd8, 0xef, /* ........ */
-       0x24, 0x0a, 0xc0, 0xc2, 0x00, 0x01, 0x00, 0x01, /* $....... */
-       0x00, 0x02, 0xa3, 0x00, 0x00, 0x04, 0xd8, 0xef, /* ........ */
-       0x26, 0x0a, /* &. */
-}
-
-func TestDNSRRA(t *testing.T) {
-       dns := loadDNS(testDNSRRA, t)
-       if dns == nil {
-               t.Fatal("Failed to get a pointer to DNS struct")
-               return
-       }
-
-       if uint16(len(dns.Questions)) != dns.QDCount {
-               t.Fatal("Invalid query decoding, not the right number of questions")
-       } else if uint16(len(dns.Answers)) != dns.ANCount {
-               t.Fatal("Invalid query decoding, not the right number of answers")
-       } else if uint16(len(dns.Authorities)) != dns.NSCount {
-               t.Fatal("Invalid query decoding, not the right number of authorities")
-       } else if uint16(len(dns.Additionals)) != dns.ARCount {
-               t.Fatal("Invalid query decoding, not the right number of additionals info")
-       }
-
-       if string(dns.Questions[0].Name) != "www.google.com" {
-               t.Errorf("Invalid query decoding, expecting 'www.google.com', got '%s'",
-                       dns.Questions[0].Name)
-       }
-       if string(dns.Answers[0].Name) != "www.google.com" {
-               t.Errorf("Invalid query decoding, expecting 'www.google.com', got '%d'",
-                       dns.Questions[0].Class)
-       }
-       if dns.Answers[0].Class != DNSClassIN {
-               t.Errorf("Invalid query decoding, expecting Class IN, got '%d'",
-                       dns.Questions[0].Class)
-       }
-       if dns.Answers[0].Type != DNSTypeA {
-               t.Errorf("Invalid query decoding, expecting Type A, got '%d'",
-                       dns.Questions[0].Type)
-       }
-       if !dns.Answers[0].IP.Equal([]byte{74, 125, 195, 103}) {
-               t.Errorf("Invalid query decoding, invalid IP address,"+
-                       " expecting '74.125.195.103', got '%s'",
-                       dns.Answers[0].IP.String())
-       }
-       if len(dns.Answers) != 6 {
-               t.Errorf("No correct number of answers, expecting 6, go '%d'",
-                       len(dns.Answers))
-       }
-       if len(dns.Authorities) != 4 {
-               t.Errorf("No correct number of answers, expecting 4, go '%d'",
-                       len(dns.Answers))
-       }
-       if len(dns.Additionals) != 4 {
-               t.Errorf("No correct number of answers, expecting 4, go '%d'",
-                       len(dns.Answers))
-       } else {
-               for i, want := range []string{
-                       "ns1.google.com",
-                       "ns2.google.com",
-                       "ns3.google.com",
-                       "ns4.google.com",
-               } {
-                       if got := string(dns.Additionals[i].Name); got != want {
-                               t.Errorf("got %q want %q", got, want)
-                       }
-               }
-       }
-}
-
-var testDNSAAAA = []byte{
-       0x52, 0x54, 0x00, 0xbd, 0x1c, 0x70, 0xfe, 0x54, /* RT...p.T */
-       0x00, 0x3e, 0x00, 0x96, 0x08, 0x00, 0x45, 0x00, /* .>....E. */
-       0x00, 0xe0, 0x00, 0x00, 0x40, 0x00, 0x40, 0x11, /* ....@.@. */
-       0xc4, 0x74, 0xc0, 0xa8, 0x7a, 0x01, 0xc0, 0xa8, /* .t..z... */
-       0x7a, 0x46, 0x00, 0x35, 0xdb, 0x13, 0x00, 0xcc, /* zF.5.... */
-       0x76, 0x76, 0xf3, 0x03, 0x81, 0x80, 0x00, 0x01, /* vv...... */
-       0x00, 0x01, 0x00, 0x04, 0x00, 0x04, 0x03, 0x77, /* .......w */
-       0x77, 0x77, 0x06, 0x67, 0x6f, 0x6f, 0x67, 0x6c, /* ww.googl */
-       0x65, 0x03, 0x63, 0x6f, 0x6d, 0x00, 0x00, 0x1c, /* e.com... */
-       0x00, 0x01, 0xc0, 0x0c, 0x00, 0x1c, 0x00, 0x01, /* ........ */
-       0x00, 0x00, 0x01, 0x2c, 0x00, 0x10, 0x2a, 0x00, /* ...,..*. */
-       0x14, 0x50, 0x40, 0x0c, 0x0c, 0x01, 0x00, 0x00, /* .P@..... */
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0xc0, 0x10, /* .....i.. */
-       0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0xa3, 0x00, /* ........ */
-       0x00, 0x06, 0x03, 0x6e, 0x73, 0x34, 0xc0, 0x10, /* ...ns4.. */
-       0xc0, 0x10, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, /* ........ */
-       0xa3, 0x00, 0x00, 0x06, 0x03, 0x6e, 0x73, 0x32, /* .....ns2 */
-       0xc0, 0x10, 0xc0, 0x10, 0x00, 0x02, 0x00, 0x01, /* ........ */
-       0x00, 0x02, 0xa3, 0x00, 0x00, 0x06, 0x03, 0x6e, /* .......n */
-       0x73, 0x31, 0xc0, 0x10, 0xc0, 0x10, 0x00, 0x02, /* s1...... */
-       0x00, 0x01, 0x00, 0x02, 0xa3, 0x00, 0x00, 0x06, /* ........ */
-       0x03, 0x6e, 0x73, 0x33, 0xc0, 0x10, 0xc0, 0x6c, /* .ns3...l */
-       0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0xa3, 0x00, /* ........ */
-       0x00, 0x04, 0xd8, 0xef, 0x20, 0x0a, 0xc0, 0x5a, /* .... ..Z */
-       0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0xa3, 0x00, /* ........ */
-       0x00, 0x04, 0xd8, 0xef, 0x22, 0x0a, 0xc0, 0x7e, /* ...."..~ */
-       0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0xa3, 0x00, /* ........ */
-       0x00, 0x04, 0xd8, 0xef, 0x24, 0x0a, 0xc0, 0x48, /* ....$..H */
-       0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0xa3, 0x00, /* ........ */
-       0x00, 0x04, 0xd8, 0xef, 0x26, 0x0a, /* ....&. */
-}
-
-func TestDNSAAAA(t *testing.T) {
-       dns := loadDNS(testDNSAAAA, t)
-       if dns == nil {
-               t.Error("Failed to get a pointer to DNS struct")
-               return
-       }
-
-       if len(dns.Questions) != 1 {
-               t.Error("Invalid number of question")
-               return
-       }
-       if dns.Questions[0].Type != DNSTypeAAAA {
-               t.Errorf("Invalid question, Type is not AAAA, found %d",
-                       dns.Questions[0].Type)
-       }
-
-       if len(dns.Answers) != 1 {
-               t.Error("Invalid number of answers")
-       }
-       if !dns.Answers[0].IP.Equal([]byte{0x2a, 0x00, 0x14, 0x50, 0x40,
-               0x0c, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69}) {
-               t.Error("Invalid IP address, found ",
-                       dns.Answers[0].IP.String())
-       }
-}
-
-var testDNSMXSOA = []byte{
-       0x52, 0x54, 0x00, 0xbd, 0x1c, 0x70, 0xfe, 0x54, /* RT...p.T */
-       0x00, 0x3e, 0x00, 0x96, 0x08, 0x00, 0x45, 0x00, /* .>....E. */
-       0x00, 0x6e, 0x00, 0x00, 0x40, 0x00, 0x40, 0x11, /* .n..@.@. */
-       0xc4, 0xe6, 0xc0, 0xa8, 0x7a, 0x01, 0xc0, 0xa8, /* ....z... */
-       0x7a, 0x46, 0x00, 0x35, 0x9c, 0x60, 0x00, 0x5a, /* zF.5.`.Z */
-       0x76, 0x04, 0xfc, 0x7a, 0x81, 0x80, 0x00, 0x01, /* v..z.... */
-       0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x77, /* .......w */
-       0x77, 0x77, 0x06, 0x67, 0x6f, 0x6f, 0x67, 0x6c, /* ww.googl */
-       0x65, 0x03, 0x63, 0x6f, 0x6d, 0x00, 0x00, 0x0f, /* e.com... */
-       0x00, 0x01, 0xc0, 0x10, 0x00, 0x06, 0x00, 0x01, /* ........ */
-       0x00, 0x00, 0x00, 0x3c, 0x00, 0x26, 0x03, 0x6e, /* ...<.&.n */
-       0x73, 0x31, 0xc0, 0x10, 0x09, 0x64, 0x6e, 0x73, /* s1...dns */
-       0x2d, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0xc0, 0x10, /* -admin.. */
-       0x00, 0x17, 0x9f, 0x64, 0x00, 0x00, 0x1c, 0x20, /* ...d...  */
-       0x00, 0x00, 0x07, 0x08, 0x00, 0x12, 0x75, 0x00, /* ......u. */
-       0x00, 0x00, 0x01, 0x2c, /* ..., */
-}
-
-func TestDNSMXSOA(t *testing.T) {
-       dns := loadDNS(testDNSMXSOA, t)
-       if dns == nil {
-               t.Error("Failed to get a pointer to DNS struct")
-               return
-       }
-
-       if len(dns.Authorities) != 1 {
-               t.Error("Invalid number of authoritative answers, found ",
-                       len(dns.Authorities))
-               return
-       }
-}
-
-func BenchmarkDecodeDNS(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testDNSQueryA, LinkTypeEthernet, gopacket.NoCopy)
-       }
-}
-func BenchmarkDecodeDNSLayer(b *testing.B) {
-       var dns DNS
-       for i := 0; i < b.N; i++ {
-               dns.DecodeFromBytes(testDNSAAAA[ /*eth*/ 14+ /*ipv4*/ 20+ /*udp*/ 8:], gopacket.NilDecodeFeedback)
-       }
-}
-func TestDNSDoesNotMalloc(t *testing.T) {
-       var dns DNS
-       if n := testing.AllocsPerRun(1000, func() {
-               if err := dns.DecodeFromBytes(testDNSAAAA[ /*eth*/ 14+ /*ipv4*/ 20+ /*udp*/ 8:], gopacket.NilDecodeFeedback); err != nil {
-                       t.Fatal(err)
-               }
-       }); n > 0 {
-               t.Error(n, "mallocs decoding DNS")
-       }
-}
diff --git a/vendor/github.com/google/gopacket/layers/usb_test.go b/vendor/github.com/google/gopacket/layers/usb_test.go
deleted file mode 100644 (file)
index 35e9c70..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2014, Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
-       _ "fmt"
-       "github.com/google/gopacket"
-       "reflect"
-       "testing"
-)
-
-// Generator python layers/test_creator.py --link_type USB --name USB dongle.pcap
-// http://wiki.wireshark.org/SampleCaptures#Sample_Captures
-
-// testPacketUSB0 is the packet:
-//   02:41:04.689546 INTERRUPT COMPLETE to 2:1:1
-//     0x0000:  0038 4a3b 0088 ffff 4301 8101 0200 2d00  .8J;....C.....-.
-//     0x0010:  c0d3 5b50 0000 0000 8a85 0a00 0000 0000  ..[P............
-//     0x0020:  0100 0000 0100 0000 0000 0000 0000 0000  ................
-//     0x0030:  8000 0000 0000 0000 0002 0000 0000 0000  ................
-//     0x0040:  04                                       .
-var testPacketUSB0 = []byte{
-       0x00, 0x38, 0x4a, 0x3b, 0x00, 0x88, 0xff, 0xff, 0x43, 0x01, 0x81, 0x01, 0x02, 0x00, 0x2d, 0x00,
-       0xc0, 0xd3, 0x5b, 0x50, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x85, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x04,
-}
-
-func TestPacketUSB0(t *testing.T) {
-       p := gopacket.NewPacket(testPacketUSB0, LinkTypeLinuxUSB, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeUSB, LayerTypeUSBInterrupt}, t)
-
-       if got, ok := p.Layer(LayerTypeUSB).(*USB); ok {
-               want := &USB{
-                       BaseLayer: BaseLayer{
-                               Contents: []uint8{0x0, 0x38, 0x4a, 0x3b, 0x0, 0x88, 0xff, 0xff, 0x43, 0x1, 0x81, 0x1, 0x2, 0x0, 0x2d, 0x0, 0xc0, 0xd3, 0x5b, 0x50, 0x0, 0x0, 0x0, 0x0, 0x8a, 0x85, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0},
-                               Payload:  []uint8{0x4},
-                       },
-                       ID:             0xffff88003b4a3800,
-                       EventType:      USBEventTypeComplete,
-                       TransferType:   USBTransportTypeInterrupt,
-                       Direction:      0x1,
-                       EndpointNumber: 0x1,
-                       DeviceAddress:  0x1,
-                       BusID:          0x2,
-                       TimestampSec:   1348195264,
-                       TimestampUsec:  689546,
-                       Setup:          false,
-                       Data:           true,
-                       Status:         0,
-                       UrbLength:      0x1,
-                       UrbDataLength:  0x1,
-               }
-
-               if !reflect.DeepEqual(got, want) {
-                       t.Errorf("USB packet processing failed:\ngot  :\n%#v\n\nwant :\n%#v\n\n", got, want)
-               }
-       }
-
-}
-func BenchmarkDecodePacketUSB0(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testPacketUSB0, LinkTypeLinuxUSB, gopacket.NoCopy)
-       }
-}
diff --git a/vendor/github.com/google/gopacket/layers/vrrp_test.go b/vendor/github.com/google/gopacket/layers/vrrp_test.go
deleted file mode 100644 (file)
index bc6b7e4..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2016 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-package layers
-
-import (
-       "github.com/google/gopacket"
-       "testing"
-)
-
-// vrrpPacketPriority100 is the packet:
-//   06:12:21.813317 IP 192.168.0.30 > 224.0.0.18: VRRPv2, Advertisement, vrid 1, prio 100, authtype none, intvl 1s, length 20
-//     0x0000:  0100 5e00 0012 0000 5e00 0101 0800 45c0  ..^.....^.....E.
-//     0x0010:  0028 0000 0000 ff70 19cd c0a8 001e e000  .(.....p........
-//     0x0020:  0012 2101 6401 0001 ba52 c0a8 0001 0000  ..!.d....R......
-//     0x0030:  0000 0000 0000 0000 0000 0000            ............
-var vrrpPacketPriority100 = []byte{
-       0x01, 0x00, 0x5e, 0x00, 0x00, 0x12, 0x00, 0x00, 0x5e, 0x00, 0x01, 0x01, 0x08, 0x00, 0x45, 0xc0,
-       0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0xff, 0x70, 0x19, 0xcd, 0xc0, 0xa8, 0x00, 0x1e, 0xe0, 0x00,
-       0x00, 0x12, 0x21, 0x01, 0x64, 0x01, 0x00, 0x01, 0xba, 0x52, 0xc0, 0xa8, 0x00, 0x01, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-}
-
-func TestVRRPPacketPacket0(t *testing.T) {
-       p := gopacket.NewPacket(vrrpPacketPriority100, LinkTypeEthernet, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeVRRP}, t)
-
-       // Version=2 Type=VRRPv2 Advertisement VirtualRtrID=1 Priority=100
-       vrrp := p.Layer(LayerTypeVRRP).(*VRRPv2)
-       if vrrp.Version != 2 {
-               t.Fatalf("Unable to decode VRRPv2 version. Received %d, expected %d", vrrp.Version, 2)
-       }
-
-       if vrrp.Type != 1 {
-               t.Fatalf("Unable to decode VRRPv2 type. Received %d, expected %d", vrrp.Type, 1)
-       }
-
-       if vrrp.Priority != 100 {
-               t.Fatalf("Unable to decode VRRPv2 priority. Received %d, expected %d", vrrp.Priority, 100)
-       }
-
-       if vrrp.Checksum != 47698 {
-               t.Fatalf("Unable to decode VRRPv2 checksum. Received %d, expected %d", vrrp.Checksum, 47698)
-       }
-}
-func BenchmarkDecodeVRRPPacket0(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(vrrpPacketPriority100, LayerTypeEthernet, gopacket.NoCopy)
-       }
-}
diff --git a/vendor/github.com/google/gopacket/layers/vxlan_test.go b/vendor/github.com/google/gopacket/layers/vxlan_test.go
deleted file mode 100644 (file)
index a02d934..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright 2016 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
-       "github.com/google/gopacket"
-       "reflect"
-       "testing"
-)
-
-// VXLAN is specifed in RFC 7348
-//  0                   1                   2                   3
-//  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-//  0             8               16              24              32
-// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-// |G|R|R|R|I|R|R|R|R|D|R|R|A|R|R|R|       Group Policy ID         |
-// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-// |     24 bit VXLAN Network Identifier           |   Reserved    |
-// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-// Ethernet[IP[UDP[VXLAN[Ethernet[IP[ICMP]]]]]]
-
-// testPacketVXLAN
-// 0000   00 16 3e 08 71 cf 36 dc 85 1e b3 40 08 00 45 00  ..>.q.6....@..E.
-// 0010   00 86 d2 c0 40 00 40 11 51 52 c0 a8 cb 01 c0 a8  ....@.@.QR......
-// 0020   ca 01 b0 5d 12 b5 00 72 00 00 08 00 00 00 00 00  ...]...r........
-// 0030   00 00 00 30 88 01 00 02 00 16 3e 37 f6 04 08 00  ...0......>7....
-// 0040   45 00 00 54 00 00 40 00 40 01 23 4f c0 a8 cb 03  E..T..@.@.#O....
-// 0050   c0 a8 cb 05 08 00 f6 f2 05 0c 00 01 fc e2 97 51  ...............Q
-// 0060   00 00 00 00 a6 f8 02 00 00 00 00 00 10 11 12 13  ................
-// 0070   14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23  ............ !"#
-// 0080   24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33  $%&'()*+,-./0123
-// 0090   34 35 36 37                                      4567               ./01234567
-var testPacketVXLAN = []byte{
-       0x00, 0x16, 0x3e, 0x08, 0x71, 0xcf, 0x36, 0xdc, 0x85, 0x1e, 0xb3, 0x40, 0x08, 0x00, 0x45, 0x00,
-       0x00, 0x86, 0xd2, 0xc0, 0x40, 0x00, 0x40, 0x11, 0x51, 0x52, 0xc0, 0xa8, 0xcb, 0x01, 0xc0, 0xa8,
-       0xca, 0x01, 0xb0, 0x5d, 0x12, 0xb5, 0x00, 0x72, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0xff, 0x00, 0x00, 0x30, 0x88, 0x01, 0x00, 0x02, 0x00, 0x16, 0x3e, 0x37, 0xf6, 0x04, 0x08, 0x00,
-       0x45, 0x00, 0x00, 0x54, 0x00, 0x00, 0x40, 0x00, 0x40, 0x01, 0x23, 0x4f, 0xc0, 0xa8, 0xcb, 0x03,
-       0xc0, 0xa8, 0xcb, 0x05, 0x08, 0x00, 0xf6, 0xf2, 0x05, 0x0c, 0x00, 0x01, 0xfc, 0xe2, 0x97, 0x51,
-       0x00, 0x00, 0x00, 0x00, 0xa6, 0xf8, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x12, 0x13,
-       0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23,
-       0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33,
-       0x34, 0x35, 0x36, 0x37,
-}
-
-func TestPacketVXLAN(t *testing.T) {
-       p := gopacket.NewPacket(testPacketVXLAN, LinkTypeEthernet, gopacket.Default)
-       if p.ErrorLayer() != nil {
-               t.Error("Failed to decode packet:", p.ErrorLayer().Error())
-       }
-       checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeUDP, LayerTypeVXLAN, LayerTypeEthernet, LayerTypeIPv4, LayerTypeICMPv4, gopacket.LayerTypePayload}, t)
-       if got, ok := p.Layer(LayerTypeVXLAN).(*VXLAN); ok {
-               want := &VXLAN{
-                       BaseLayer: BaseLayer{
-                               Contents: []byte{0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00},
-                               Payload: []byte{0x00, 0x30, 0x88, 0x01, 0x00, 0x02, 0x00, 0x16, 0x3e, 0x37, 0xf6, 0x04, 0x08, 0x00,
-                                       0x45, 0x00, 0x00, 0x54, 0x00, 0x00, 0x40, 0x00, 0x40, 0x01, 0x23, 0x4f, 0xc0, 0xa8, 0xcb, 0x03,
-                                       0xc0, 0xa8, 0xcb, 0x05, 0x08, 0x00, 0xf6, 0xf2, 0x05, 0x0c, 0x00, 0x01, 0xfc, 0xe2, 0x97, 0x51,
-                                       0x00, 0x00, 0x00, 0x00, 0xa6, 0xf8, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x12, 0x13,
-                                       0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23,
-                                       0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33,
-                                       0x34, 0x35, 0x36, 0x37},
-                       },
-                       ValidIDFlag:      true,
-                       VNI:              255,
-                       GBPExtension:     false,
-                       GBPApplied:       false,
-                       GBPDontLearn:     false,
-                       GBPGroupPolicyID: 0,
-               }
-               if !reflect.DeepEqual(want, got) {
-                       t.Errorf("VXLAN layer mismatch, \nwant %#v\ngot %#v\n", want, got)
-               }
-       }
-}
-
-func BenchmarkDecodePacketVXLAN(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               gopacket.NewPacket(testPacketVXLAN, LinkTypeEthernet, gopacket.NoCopy)
-       }
-}
-
-func TestIsomorphicPacketVXLAN(t *testing.T) {
-       vx := &VXLAN{
-               ValidIDFlag:      true,
-               VNI:              255,
-               GBPExtension:     true,
-               GBPApplied:       true,
-               GBPDontLearn:     true,
-               GBPGroupPolicyID: 777,
-       }
-
-       b := gopacket.NewSerializeBuffer()
-       vx.SerializeTo(b, gopacket.SerializeOptions{})
-
-       p := gopacket.NewPacket(b.Bytes(), gopacket.DecodeFunc(decodeVXLAN), gopacket.Default)
-       vxTranslated := p.Layer(LayerTypeVXLAN).(*VXLAN)
-       vxTranslated.BaseLayer = BaseLayer{}
-
-       if !reflect.DeepEqual(vx, vxTranslated) {
-               t.Errorf("VXLAN isomorph mismatch, \nwant %#v\ngot %#v\n", vx, vxTranslated)
-       }
-}
diff --git a/vendor/github.com/google/gopacket/macs/benchmark_test.go b/vendor/github.com/google/gopacket/macs/benchmark_test.go
deleted file mode 100644 (file)
index 33af5c2..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package macs
-
-import (
-       "testing"
-)
-
-func BenchmarkCheckEthernetPrefix(b *testing.B) {
-       key := [3]byte{5, 5, 5}
-       for i := 0; i < b.N; i++ {
-               _ = ValidMACPrefixMap[key]
-       }
-}
diff --git a/vendor/github.com/google/gopacket/macs/doc.go b/vendor/github.com/google/gopacket/macs/doc.go
deleted file mode 100644 (file)
index c0d32a8..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// Package macs provides an in-memory mapping of all valid Ethernet MAC address
-// prefixes to their associated organization.
-//
-// The ValidMACPrefixMap map maps 3-byte prefixes to organization strings.  It
-// can be updated using 'go run gen.go' in this directory.
-package macs
diff --git a/vendor/github.com/google/gopacket/macs/gen.go b/vendor/github.com/google/gopacket/macs/gen.go
deleted file mode 100644 (file)
index ccfcc34..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// +build ignore
-
-// This binary pulls the list of known MAC
-// prefixes from IEEE and writes them out to a go file which is compiled
-// into gopacket.  It should be run as follows:
-//
-//  go run gen.go | gofmt > valid_mac_prefixes.go
-package main
-
-import (
-       "bufio"
-       "bytes"
-       "encoding/hex"
-       "flag"
-       "fmt"
-       "io"
-       "net/http"
-       "os"
-       "regexp"
-       "sort"
-       "time"
-)
-
-const header = `// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package macs
-
-// Created by gen.go, don't edit manually
-// Generated at %s
-// Fetched from %q
-
-// ValidMACPrefixMap maps a valid MAC address prefix to the name of the
-// organization that owns the rights to use it.  We map it to a hidden
-// variable so it won't show up in godoc, since it's a very large map.
-var ValidMACPrefixMap = validMACPrefixMap
-var validMACPrefixMap = map[[3]byte]string{
-`
-
-var url = flag.String("url", "http://standards.ieee.org/develop/regauth/oui/oui.txt", "URL to fetch MACs from")
-
-type mac struct {
-       prefix  [3]byte
-       company string
-}
-
-type macs []mac
-
-func (m macs) Len() int           { return len(m) }
-func (m macs) Less(i, j int) bool { return bytes.Compare(m[i].prefix[:], m[j].prefix[:]) < 0 }
-func (m macs) Swap(i, j int)      { m[i], m[j] = m[j], m[i] }
-
-func main() {
-       fmt.Fprintf(os.Stderr, "Fetching MACs from %q\n", *url)
-       resp, err := http.Get(*url)
-       if err != nil {
-               panic(err)
-       }
-       defer resp.Body.Close()
-       buffered := bufio.NewReader(resp.Body)
-       finder := regexp.MustCompile(`^\s*([0-9A-F]{6})\s+\(base 16\)\s+(.*\S)`)
-       got := macs{}
-       for {
-               line, err := buffered.ReadString('\n')
-               if err == io.EOF {
-                       break
-               } else if err != nil {
-                       panic(err)
-               }
-               if matches := finder.FindStringSubmatch(line); matches != nil {
-                       var prefix [3]byte
-                       hex.Decode(prefix[:], []byte(matches[1]))
-                       company := matches[2]
-                       if company == "" {
-                               company = "PRIVATE"
-                       }
-                       fmt.Fprint(os.Stderr, "*")
-                       got = append(got, mac{prefix: prefix, company: company})
-               }
-       }
-       fmt.Fprintln(os.Stderr, "\nSorting macs")
-       sort.Sort(got)
-       fmt.Fprintln(os.Stderr, "Starting write to standard output")
-       fmt.Printf(header, time.Now(), *url)
-       for _, m := range got {
-               fmt.Printf("\t[3]byte{%d, %d, %d}: %q,\n", m.prefix[0], m.prefix[1], m.prefix[2], m.company)
-       }
-       fmt.Println("}")
-}
diff --git a/vendor/github.com/google/gopacket/macs/valid_mac_prefixes.go b/vendor/github.com/google/gopacket/macs/valid_mac_prefixes.go
deleted file mode 100644 (file)
index 0a93cad..0000000
+++ /dev/null
@@ -1,23946 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package macs
-
-// Created by gen.go, don't edit manually
-// Generated at 2017-09-19 13:06:19.654271144 -0600 MDT
-// Fetched from "http://standards.ieee.org/develop/regauth/oui/oui.txt"
-
-// ValidMACPrefixMap maps a valid MAC address prefix to the name of the
-// organization that owns the rights to use it.  We map it to a hidden
-// variable so it won't show up in godoc, since it's a very large map.
-var ValidMACPrefixMap = validMACPrefixMap
-var validMACPrefixMap = map[[3]byte]string{
-       [3]byte{0, 0, 0}:       "XEROX CORPORATION",
-       [3]byte{0, 0, 1}:       "XEROX CORPORATION",
-       [3]byte{0, 0, 2}:       "XEROX CORPORATION",
-       [3]byte{0, 0, 3}:       "XEROX CORPORATION",
-       [3]byte{0, 0, 4}:       "XEROX CORPORATION",
-       [3]byte{0, 0, 5}:       "XEROX CORPORATION",
-       [3]byte{0, 0, 6}:       "XEROX CORPORATION",
-       [3]byte{0, 0, 7}:       "XEROX CORPORATION",
-       [3]byte{0, 0, 8}:       "XEROX CORPORATION",
-       [3]byte{0, 0, 9}:       "XEROX CORPORATION",
-       [3]byte{0, 0, 10}:      "OMRON TATEISI ELECTRONICS CO.",
-       [3]byte{0, 0, 11}:      "MATRIX CORPORATION",
-       [3]byte{0, 0, 12}:      "Cisco Systems, Inc",
-       [3]byte{0, 0, 13}:      "FIBRONICS LTD.",
-       [3]byte{0, 0, 14}:      "FUJITSU LIMITED",
-       [3]byte{0, 0, 15}:      "NEXT, INC.",
-       [3]byte{0, 0, 16}:      "SYTEK INC.",
-       [3]byte{0, 0, 17}:      "NORMEREL SYSTEMES",
-       [3]byte{0, 0, 18}:      "INFORMATION TECHNOLOGY LIMITED",
-       [3]byte{0, 0, 19}:      "CAMEX",
-       [3]byte{0, 0, 20}:      "NETRONIX",
-       [3]byte{0, 0, 21}:      "DATAPOINT CORPORATION",
-       [3]byte{0, 0, 22}:      "DU PONT PIXEL SYSTEMS     .",
-       [3]byte{0, 0, 23}:      "Oracle",
-       [3]byte{0, 0, 24}:      "WEBSTER COMPUTER CORPORATION",
-       [3]byte{0, 0, 25}:      "APPLIED DYNAMICS INTERNATIONAL",
-       [3]byte{0, 0, 26}:      "ADVANCED MICRO DEVICES",
-       [3]byte{0, 0, 27}:      "Novell, Inc.",
-       [3]byte{0, 0, 28}:      "BELL TECHNOLOGIES",
-       [3]byte{0, 0, 29}:      "Cabletron Systems, Inc.",
-       [3]byte{0, 0, 30}:      "TELSIST INDUSTRIA ELECTRONICA",
-       [3]byte{0, 0, 31}:      "Telco Systems, Inc.",
-       [3]byte{0, 0, 32}:      "DATAINDUSTRIER DIAB AB",
-       [3]byte{0, 0, 33}:      "SUREMAN COMP. & COMMUN. CORP.",
-       [3]byte{0, 0, 34}:      "VISUAL TECHNOLOGY INC.",
-       [3]byte{0, 0, 35}:      "ABB INDUSTRIAL SYSTEMS AB",
-       [3]byte{0, 0, 36}:      "CONNECT AS",
-       [3]byte{0, 0, 37}:      "RAMTEK CORP.",
-       [3]byte{0, 0, 38}:      "SHA-KEN CO., LTD.",
-       [3]byte{0, 0, 39}:      "JAPAN RADIO COMPANY",
-       [3]byte{0, 0, 40}:      "PRODIGY SYSTEMS CORPORATION",
-       [3]byte{0, 0, 41}:      "IMC NETWORKS CORP.",
-       [3]byte{0, 0, 42}:      "TRW - SEDD/INP",
-       [3]byte{0, 0, 43}:      "CRISP AUTOMATION, INC",
-       [3]byte{0, 0, 44}:      "AUTOTOTE LIMITED",
-       [3]byte{0, 0, 45}:      "CHROMATICS INC",
-       [3]byte{0, 0, 46}:      "SOCIETE EVIRA",
-       [3]byte{0, 0, 47}:      "TIMEPLEX INC.",
-       [3]byte{0, 0, 48}:      "VG LABORATORY SYSTEMS LTD",
-       [3]byte{0, 0, 49}:      "QPSX COMMUNICATIONS, LTD.",
-       [3]byte{0, 0, 50}:      "Marconi plc",
-       [3]byte{0, 0, 51}:      "EGAN MACHINERY COMPANY",
-       [3]byte{0, 0, 52}:      "NETWORK RESOURCES CORPORATION",
-       [3]byte{0, 0, 53}:      "SPECTRAGRAPHICS CORPORATION",
-       [3]byte{0, 0, 54}:      "ATARI CORPORATION",
-       [3]byte{0, 0, 55}:      "OXFORD METRICS LIMITED",
-       [3]byte{0, 0, 56}:      "CSS LABS",
-       [3]byte{0, 0, 57}:      "TOSHIBA CORPORATION",
-       [3]byte{0, 0, 58}:      "CHYRON CORPORATION",
-       [3]byte{0, 0, 59}:      "i Controls, Inc.",
-       [3]byte{0, 0, 60}:      "AUSPEX SYSTEMS INC.",
-       [3]byte{0, 0, 61}:      "UNISYS",
-       [3]byte{0, 0, 62}:      "SIMPACT",
-       [3]byte{0, 0, 63}:      "SYNTREX, INC.",
-       [3]byte{0, 0, 64}:      "APPLICON, INC.",
-       [3]byte{0, 0, 65}:      "ICE CORPORATION",
-       [3]byte{0, 0, 66}:      "METIER MANAGEMENT SYSTEMS LTD.",
-       [3]byte{0, 0, 67}:      "MICRO TECHNOLOGY",
-       [3]byte{0, 0, 68}:      "CASTELLE CORPORATION",
-       [3]byte{0, 0, 69}:      "FORD AEROSPACE & COMM. CORP.",
-       [3]byte{0, 0, 70}:      "OLIVETTI NORTH AMERICA",
-       [3]byte{0, 0, 71}:      "NICOLET INSTRUMENTS CORP.",
-       [3]byte{0, 0, 72}:      "Seiko Epson Corporation",
-       [3]byte{0, 0, 73}:      "APRICOT COMPUTERS, LTD",
-       [3]byte{0, 0, 74}:      "ADC CODENOLL TECHNOLOGY CORP.",
-       [3]byte{0, 0, 75}:      "ICL DATA OY",
-       [3]byte{0, 0, 76}:      "NEC CORPORATION",
-       [3]byte{0, 0, 77}:      "DCI CORPORATION",
-       [3]byte{0, 0, 78}:      "AMPEX CORPORATION",
-       [3]byte{0, 0, 79}:      "LOGICRAFT, INC.",
-       [3]byte{0, 0, 80}:      "RADISYS CORPORATION",
-       [3]byte{0, 0, 81}:      "HOB ELECTRONIC GMBH & CO. KG",
-       [3]byte{0, 0, 82}:      "Intrusion.com, Inc.",
-       [3]byte{0, 0, 83}:      "COMPUCORP",
-       [3]byte{0, 0, 84}:      "Schneider Electric",
-       [3]byte{0, 0, 85}:      "COMMISSARIAT A L`ENERGIE ATOM.",
-       [3]byte{0, 0, 86}:      "DR. B. STRUCK",
-       [3]byte{0, 0, 87}:      "SCITEX CORPORATION LTD.",
-       [3]byte{0, 0, 88}:      "RACORE COMPUTER PRODUCTS INC.",
-       [3]byte{0, 0, 89}:      "Hellige GMBH",
-       [3]byte{0, 0, 90}:      "SysKonnect GmbH",
-       [3]byte{0, 0, 91}:      "ELTEC ELEKTRONIK AG",
-       [3]byte{0, 0, 92}:      "TELEMATICS INTERNATIONAL INC.",
-       [3]byte{0, 0, 93}:      "CS TELECOM",
-       [3]byte{0, 0, 94}:      "ICANN, IANA Department",
-       [3]byte{0, 0, 95}:      "Sumitomo Electric Industries,Ltd",
-       [3]byte{0, 0, 96}:      "KONTRON ELEKTRONIK GMBH",
-       [3]byte{0, 0, 97}:      "GATEWAY COMMUNICATIONS",
-       [3]byte{0, 0, 98}:      "BULL HN INFORMATION SYSTEMS",
-       [3]byte{0, 0, 99}:      "BARCO CONTROL ROOMS GMBH",
-       [3]byte{0, 0, 100}:     "Yokogawa Digital Computer Corporation",
-       [3]byte{0, 0, 101}:     "Network General Corporation",
-       [3]byte{0, 0, 102}:     "TALARIS SYSTEMS, INC.",
-       [3]byte{0, 0, 103}:     "SOFT * RITE, INC.",
-       [3]byte{0, 0, 104}:     "ROSEMOUNT CONTROLS",
-       [3]byte{0, 0, 105}:     "CONCORD COMMUNICATIONS INC",
-       [3]byte{0, 0, 106}:     "COMPUTER CONSOLES INC.",
-       [3]byte{0, 0, 107}:     "SILICON GRAPHICS INC./MIPS",
-       [3]byte{0, 0, 108}:     "Private",
-       [3]byte{0, 0, 109}:     "CRAY COMMUNICATIONS, LTD.",
-       [3]byte{0, 0, 110}:     "Artisoft Inc.",
-       [3]byte{0, 0, 111}:     "Madge Ltd.",
-       [3]byte{0, 0, 112}:     "HCL LIMITED",
-       [3]byte{0, 0, 113}:     "ADRA SYSTEMS INC.",
-       [3]byte{0, 0, 114}:     "MINIWARE TECHNOLOGY",
-       [3]byte{0, 0, 115}:     "SIECOR CORPORATION",
-       [3]byte{0, 0, 116}:     "RICOH COMPANY LTD.",
-       [3]byte{0, 0, 117}:     "Nortel Networks",
-       [3]byte{0, 0, 118}:     "ABEKAS VIDEO SYSTEM",
-       [3]byte{0, 0, 119}:     "INTERPHASE CORPORATION",
-       [3]byte{0, 0, 120}:     "LABTAM LIMITED",
-       [3]byte{0, 0, 121}:     "NETWORTH INCORPORATED",
-       [3]byte{0, 0, 122}:     "DANA COMPUTER INC.",
-       [3]byte{0, 0, 123}:     "RESEARCH MACHINES",
-       [3]byte{0, 0, 124}:     "AMPERE INCORPORATED",
-       [3]byte{0, 0, 125}:     "Oracle Corporation",
-       [3]byte{0, 0, 126}:     "CLUSTRIX CORPORATION",
-       [3]byte{0, 0, 127}:     "LINOTYPE-HELL AG",
-       [3]byte{0, 0, 128}:     "CRAY COMMUNICATIONS A/S",
-       [3]byte{0, 0, 129}:     "Bay Networks",
-       [3]byte{0, 0, 130}:     "LECTRA SYSTEMES SA",
-       [3]byte{0, 0, 131}:     "TADPOLE TECHNOLOGY PLC",
-       [3]byte{0, 0, 132}:     "SUPERNET",
-       [3]byte{0, 0, 133}:     "CANON INC.",
-       [3]byte{0, 0, 134}:     "MEGAHERTZ CORPORATION",
-       [3]byte{0, 0, 135}:     "HITACHI, LTD.",
-       [3]byte{0, 0, 136}:     "Brocade Communications Systems, Inc.",
-       [3]byte{0, 0, 137}:     "CAYMAN SYSTEMS INC.",
-       [3]byte{0, 0, 138}:     "DATAHOUSE INFORMATION SYSTEMS",
-       [3]byte{0, 0, 139}:     "INFOTRON",
-       [3]byte{0, 0, 140}:     "Alloy Computer Products (Australia) Pty Ltd",
-       [3]byte{0, 0, 141}:     "Cryptek Inc.",
-       [3]byte{0, 0, 142}:     "SOLBOURNE COMPUTER, INC.",
-       [3]byte{0, 0, 143}:     "Raytheon",
-       [3]byte{0, 0, 144}:     "MICROCOM",
-       [3]byte{0, 0, 145}:     "ANRITSU CORPORATION",
-       [3]byte{0, 0, 146}:     "COGENT DATA TECHNOLOGIES",
-       [3]byte{0, 0, 147}:     "PROTEON INC.",
-       [3]byte{0, 0, 148}:     "ASANTE TECHNOLOGIES",
-       [3]byte{0, 0, 149}:     "SONY TEKTRONIX CORP.",
-       [3]byte{0, 0, 150}:     "MARCONI ELECTRONICS LTD.",
-       [3]byte{0, 0, 151}:     "Dell EMC",
-       [3]byte{0, 0, 152}:     "CROSSCOMM CORPORATION",
-       [3]byte{0, 0, 153}:     "MTX, INC.",
-       [3]byte{0, 0, 154}:     "RC COMPUTER A/S",
-       [3]byte{0, 0, 155}:     "INFORMATION INTERNATIONAL, INC",
-       [3]byte{0, 0, 156}:     "ROLM MIL-SPEC COMPUTERS",
-       [3]byte{0, 0, 157}:     "LOCUS COMPUTING CORPORATION",
-       [3]byte{0, 0, 158}:     "MARLI S.A.",
-       [3]byte{0, 0, 159}:     "AMERISTAR TECHNOLOGIES INC.",
-       [3]byte{0, 0, 160}:     "SANYO Electric Co., Ltd.",
-       [3]byte{0, 0, 161}:     "MARQUETTE ELECTRIC CO.",
-       [3]byte{0, 0, 162}:     "Bay Networks",
-       [3]byte{0, 0, 163}:     "NETWORK APPLICATION TECHNOLOGY",
-       [3]byte{0, 0, 164}:     "ACORN COMPUTERS LIMITED",
-       [3]byte{0, 0, 165}:     "Tattile SRL",
-       [3]byte{0, 0, 166}:     "NETWORK GENERAL CORPORATION",
-       [3]byte{0, 0, 167}:     "NETWORK COMPUTING DEVICES INC.",
-       [3]byte{0, 0, 168}:     "STRATUS COMPUTER INC.",
-       [3]byte{0, 0, 169}:     "NETWORK SYSTEMS CORP.",
-       [3]byte{0, 0, 170}:     "XEROX CORPORATION",
-       [3]byte{0, 0, 171}:     "LOGIC MODELING CORPORATION",
-       [3]byte{0, 0, 172}:     "CONWARE COMPUTER CONSULTING",
-       [3]byte{0, 0, 173}:     "BRUKER INSTRUMENTS INC.",
-       [3]byte{0, 0, 174}:     "DASSAULT ELECTRONIQUE",
-       [3]byte{0, 0, 175}:     "Canberra Industries, Inc.",
-       [3]byte{0, 0, 176}:     "RND-RAD NETWORK DEVICES",
-       [3]byte{0, 0, 177}:     "Alpha Micro",
-       [3]byte{0, 0, 178}:     "TELEVIDEO SYSTEMS, INC.",
-       [3]byte{0, 0, 179}:     "CIMLINC INCORPORATED",
-       [3]byte{0, 0, 180}:     "Edimax Technology Co. Ltd.",
-       [3]byte{0, 0, 181}:     "DATABILITY SOFTWARE SYS. INC.",
-       [3]byte{0, 0, 182}:     "MICRO-MATIC RESEARCH",
-       [3]byte{0, 0, 183}:     "DOVE COMPUTER CORPORATION",
-       [3]byte{0, 0, 184}:     "SEIKOSHA CO., LTD.",
-       [3]byte{0, 0, 185}:     "MCDONNELL DOUGLAS COMPUTER SYS",
-       [3]byte{0, 0, 186}:     "SIIG, INC.",
-       [3]byte{0, 0, 187}:     "TRI-DATA",
-       [3]byte{0, 0, 188}:     "Rockwell Automation",
-       [3]byte{0, 0, 189}:     "MITSUBISHI CABLE COMPANY",
-       [3]byte{0, 0, 190}:     "THE NTI GROUP",
-       [3]byte{0, 0, 191}:     "SYMMETRIC COMPUTER SYSTEMS",
-       [3]byte{0, 0, 192}:     "WESTERN DIGITAL CORPORATION",
-       [3]byte{0, 0, 193}:     "Madge Ltd.",
-       [3]byte{0, 0, 194}:     "INFORMATION PRESENTATION TECH.",
-       [3]byte{0, 0, 195}:     "HARRIS CORP COMPUTER SYS DIV",
-       [3]byte{0, 0, 196}:     "WATERS DIV. OF MILLIPORE",
-       [3]byte{0, 0, 197}:     "ARRIS Group, Inc.",
-       [3]byte{0, 0, 198}:     "EON SYSTEMS",
-       [3]byte{0, 0, 199}:     "ARIX CORPORATION",
-       [3]byte{0, 0, 200}:     "ALTOS COMPUTER SYSTEMS",
-       [3]byte{0, 0, 201}:     "Emulex Corporation",
-       [3]byte{0, 0, 202}:     "ARRIS Group, Inc.",
-       [3]byte{0, 0, 203}:     "COMPU-SHACK ELECTRONIC GMBH",
-       [3]byte{0, 0, 204}:     "DENSAN CO., LTD.",
-       [3]byte{0, 0, 205}:     "Allied Telesis Labs Ltd",
-       [3]byte{0, 0, 206}:     "MEGADATA CORP.",
-       [3]byte{0, 0, 207}:     "HAYES MICROCOMPUTER PRODUCTS",
-       [3]byte{0, 0, 208}:     "DEVELCON ELECTRONICS LTD.",
-       [3]byte{0, 0, 209}:     "ADAPTEC INCORPORATED",
-       [3]byte{0, 0, 210}:     "SBE, INC.",
-       [3]byte{0, 0, 211}:     "WANG LABORATORIES INC.",
-       [3]byte{0, 0, 212}:     "PURE DATA LTD.",
-       [3]byte{0, 0, 213}:     "MICROGNOSIS INTERNATIONAL",
-       [3]byte{0, 0, 214}:     "PUNCH LINE HOLDING",
-       [3]byte{0, 0, 215}:     "DARTMOUTH COLLEGE",
-       [3]byte{0, 0, 216}:     "Novell, Inc.",
-       [3]byte{0, 0, 217}:     "NIPPON TELEGRAPH & TELEPHONE",
-       [3]byte{0, 0, 218}:     "ATEX",
-       [3]byte{0, 0, 219}:     "British Telecommunications plc",
-       [3]byte{0, 0, 220}:     "HAYES MICROCOMPUTER PRODUCTS",
-       [3]byte{0, 0, 221}:     "TCL INCORPORATED",
-       [3]byte{0, 0, 222}:     "CETIA",
-       [3]byte{0, 0, 223}:     "BELL & HOWELL PUB SYS DIV",
-       [3]byte{0, 0, 224}:     "QUADRAM CORP.",
-       [3]byte{0, 0, 225}:     "GRID SYSTEMS",
-       [3]byte{0, 0, 226}:     "ACER TECHNOLOGIES CORP.",
-       [3]byte{0, 0, 227}:     "INTEGRATED MICRO PRODUCTS LTD",
-       [3]byte{0, 0, 228}:     "IN2 GROUPE INTERTECHNIQUE",
-       [3]byte{0, 0, 229}:     "SIGMEX LTD.",
-       [3]byte{0, 0, 230}:     "APTOR PRODUITS DE COMM INDUST",
-       [3]byte{0, 0, 231}:     "Star Gate Technologies",
-       [3]byte{0, 0, 232}:     "ACCTON TECHNOLOGY CORP.",
-       [3]byte{0, 0, 233}:     "ISICAD, INC.",
-       [3]byte{0, 0, 234}:     "UPNOD AB",
-       [3]byte{0, 0, 235}:     "MATSUSHITA COMM. IND. CO. LTD.",
-       [3]byte{0, 0, 236}:     "MICROPROCESS",
-       [3]byte{0, 0, 237}:     "APRIL",
-       [3]byte{0, 0, 238}:     "NETWORK DESIGNERS, LTD.",
-       [3]byte{0, 0, 239}:     "KTI",
-       [3]byte{0, 0, 240}:     "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 0, 241}:     "MAGNA COMPUTER CORPORATION",
-       [3]byte{0, 0, 242}:     "SPIDER COMMUNICATIONS",
-       [3]byte{0, 0, 243}:     "GANDALF DATA LIMITED",
-       [3]byte{0, 0, 244}:     "Allied Telesis, Inc.",
-       [3]byte{0, 0, 245}:     "DIAMOND SALES LIMITED",
-       [3]byte{0, 0, 246}:     "APPLIED MICROSYSTEMS CORP.",
-       [3]byte{0, 0, 247}:     "YOUTH KEEP ENTERPRISE CO LTD",
-       [3]byte{0, 0, 248}:     "DIGITAL EQUIPMENT CORPORATION",
-       [3]byte{0, 0, 249}:     "QUOTRON SYSTEMS INC.",
-       [3]byte{0, 0, 250}:     "MICROSAGE COMPUTER SYSTEMS INC",
-       [3]byte{0, 0, 251}:     "RECHNER ZUR KOMMUNIKATION",
-       [3]byte{0, 0, 252}:     "MEIKO",
-       [3]byte{0, 0, 253}:     "HIGH LEVEL HARDWARE",
-       [3]byte{0, 0, 254}:     "Annapolis Micro Systems, Inc.",
-       [3]byte{0, 0, 255}:     "CAMTEC ELECTRONICS LTD.",
-       [3]byte{0, 1, 0}:       "EQUIP'TRANS",
-       [3]byte{0, 1, 1}:       "Private",
-       [3]byte{0, 1, 2}:       "3COM CORPORATION",
-       [3]byte{0, 1, 3}:       "3COM CORPORATION",
-       [3]byte{0, 1, 4}:       "DVICO Co., Ltd.",
-       [3]byte{0, 1, 5}:       "Beckhoff Automation GmbH",
-       [3]byte{0, 1, 6}:       "Tews Datentechnik GmbH",
-       [3]byte{0, 1, 7}:       "Leiser GmbH",
-       [3]byte{0, 1, 8}:       "AVLAB Technology, Inc.",
-       [3]byte{0, 1, 9}:       "Nagano Japan Radio Co., Ltd.",
-       [3]byte{0, 1, 10}:      "CIS TECHNOLOGY INC.",
-       [3]byte{0, 1, 11}:      "Space CyberLink, Inc.",
-       [3]byte{0, 1, 12}:      "System Talks Inc.",
-       [3]byte{0, 1, 13}:      "Teledyne DALSA Inc.",
-       [3]byte{0, 1, 14}:      "Bri-Link Technologies Co., Ltd",
-       [3]byte{0, 1, 15}:      "Brocade Communications Systems, Inc.",
-       [3]byte{0, 1, 16}:      "Gotham Networks",
-       [3]byte{0, 1, 17}:      "iDigm Inc.",
-       [3]byte{0, 1, 18}:      "Shark Multimedia Inc.",
-       [3]byte{0, 1, 19}:      "OLYMPUS CORPORATION",
-       [3]byte{0, 1, 20}:      "KANDA TSUSHIN KOGYO CO., LTD.",
-       [3]byte{0, 1, 21}:      "EXTRATECH CORPORATION",
-       [3]byte{0, 1, 22}:      "Netspect Technologies, Inc.",
-       [3]byte{0, 1, 23}:      "Canal +",
-       [3]byte{0, 1, 24}:      "EZ Digital Co., Ltd.",
-       [3]byte{0, 1, 25}:      "RTUnet (Australia)",
-       [3]byte{0, 1, 26}:      "Hoffmann und Burmeister GbR",
-       [3]byte{0, 1, 27}:      "Unizone Technologies, Inc.",
-       [3]byte{0, 1, 28}:      "Universal Talkware Corporation",
-       [3]byte{0, 1, 29}:      "Centillium Communications",
-       [3]byte{0, 1, 30}:      "Precidia Technologies, Inc.",
-       [3]byte{0, 1, 31}:      "RC Networks, Inc.",
-       [3]byte{0, 1, 32}:      "OSCILLOQUARTZ S.A.",
-       [3]byte{0, 1, 33}:      "Watchguard Technologies, Inc.",
-       [3]byte{0, 1, 34}:      "Trend Communications, Ltd.",
-       [3]byte{0, 1, 35}:      "Schneider Electric Japan Holdings Ltd.",
-       [3]byte{0, 1, 36}:      "Acer Incorporated",
-       [3]byte{0, 1, 37}:      "YAESU MUSEN CO., LTD.",
-       [3]byte{0, 1, 38}:      "PAC Labs",
-       [3]byte{0, 1, 39}:      "OPEN Networks Pty Ltd",
-       [3]byte{0, 1, 40}:      "EnjoyWeb, Inc.",
-       [3]byte{0, 1, 41}:      "DFI Inc.",
-       [3]byte{0, 1, 42}:      "Telematica Sistems Inteligente",
-       [3]byte{0, 1, 43}:      "TELENET Co., Ltd.",
-       [3]byte{0, 1, 44}:      "Aravox Technologies, Inc.",
-       [3]byte{0, 1, 45}:      "Komodo Technology",
-       [3]byte{0, 1, 46}:      "PC Partner Ltd.",
-       [3]byte{0, 1, 47}:      "Twinhead International Corp",
-       [3]byte{0, 1, 48}:      "Extreme Networks, Inc.",
-       [3]byte{0, 1, 49}:      "Bosch Security Systems, Inc.",
-       [3]byte{0, 1, 50}:      "Dranetz - BMI",
-       [3]byte{0, 1, 51}:      "KYOWA Electronic Instruments C",
-       [3]byte{0, 1, 52}:      "Selectron Systems AG",
-       [3]byte{0, 1, 53}:      "KDC Corp.",
-       [3]byte{0, 1, 54}:      "CyberTAN Technology Inc.",
-       [3]byte{0, 1, 55}:      "IT Farm Corporation",
-       [3]byte{0, 1, 56}:      "XAVi Technologies Corp.",
-       [3]byte{0, 1, 57}:      "Point Multimedia Systems",
-       [3]byte{0, 1, 58}:      "SHELCAD COMMUNICATIONS, LTD.",
-       [3]byte{0, 1, 59}:      "BNA SYSTEMS",
-       [3]byte{0, 1, 60}:      "TIW SYSTEMS",
-       [3]byte{0, 1, 61}:      "RiscStation Ltd.",
-       [3]byte{0, 1, 62}:      "Ascom Tateco AB",
-       [3]byte{0, 1, 63}:      "Neighbor World Co., Ltd.",
-       [3]byte{0, 1, 64}:      "Sendtek Corporation",
-       [3]byte{0, 1, 65}:      "CABLE PRINT",
-       [3]byte{0, 1, 66}:      "Cisco Systems, Inc",
-       [3]byte{0, 1, 67}:      "Cisco Systems, Inc",
-       [3]byte{0, 1, 68}:      "Dell EMC",
-       [3]byte{0, 1, 69}:      "WINSYSTEMS, INC.",
-       [3]byte{0, 1, 70}:      "Tesco Controls, Inc.",
-       [3]byte{0, 1, 71}:      "Zhone Technologies",
-       [3]byte{0, 1, 72}:      "X-traWeb Inc.",
-       [3]byte{0, 1, 73}:      "T.D.T. Transfer Data Test GmbH",
-       [3]byte{0, 1, 74}:      "Sony Corporation",
-       [3]byte{0, 1, 75}:      "Ennovate Networks, Inc.",
-       [3]byte{0, 1, 76}:      "Berkeley Process Control",
-       [3]byte{0, 1, 77}:      "Shin Kin Enterprises Co., Ltd",
-       [3]byte{0, 1, 78}:      "WIN Enterprises, Inc.",
-       [3]byte{0, 1, 79}:      "Adtran Inc",
-       [3]byte{0, 1, 80}:      "GILAT COMMUNICATIONS, LTD.",
-       [3]byte{0, 1, 81}:      "Ensemble Communications",
-       [3]byte{0, 1, 82}:      "CHROMATEK INC.",
-       [3]byte{0, 1, 83}:      "ARCHTEK TELECOM CORPORATION",
-       [3]byte{0, 1, 84}:      "G3M Corporation",
-       [3]byte{0, 1, 85}:      "Promise Technology, Inc.",
-       [3]byte{0, 1, 86}:      "FIREWIREDIRECT.COM, INC.",
-       [3]byte{0, 1, 87}:      "SYSWAVE CO., LTD",
-       [3]byte{0, 1, 88}:      "Electro Industries/Gauge Tech",
-       [3]byte{0, 1, 89}:      "S1 Corporation",
-       [3]byte{0, 1, 90}:      "Digital Video Broadcasting",
-       [3]byte{0, 1, 91}:      "ITALTEL S.p.A/RF-UP-I",
-       [3]byte{0, 1, 92}:      "CADANT INC.",
-       [3]byte{0, 1, 93}:      "Oracle Corporation",
-       [3]byte{0, 1, 94}:      "BEST TECHNOLOGY CO., LTD.",
-       [3]byte{0, 1, 95}:      "DIGITAL DESIGN GmbH",
-       [3]byte{0, 1, 96}:      "ELMEX Co., LTD.",
-       [3]byte{0, 1, 97}:      "Meta Machine Technology",
-       [3]byte{0, 1, 98}:      "Cygnet Technologies, Inc.",
-       [3]byte{0, 1, 99}:      "Cisco Systems, Inc",
-       [3]byte{0, 1, 100}:     "Cisco Systems, Inc",
-       [3]byte{0, 1, 101}:     "AirSwitch Corporation",
-       [3]byte{0, 1, 102}:     "TC GROUP A/S",
-       [3]byte{0, 1, 103}:     "HIOKI E.E. CORPORATION",
-       [3]byte{0, 1, 104}:     "VITANA CORPORATION",
-       [3]byte{0, 1, 105}:     "Celestix Networks Pte Ltd.",
-       [3]byte{0, 1, 106}:     "ALITEC",
-       [3]byte{0, 1, 107}:     "LightChip, Inc.",
-       [3]byte{0, 1, 108}:     "FOXCONN",
-       [3]byte{0, 1, 109}:     "CarrierComm Inc.",
-       [3]byte{0, 1, 110}:     "Conklin Corporation",
-       [3]byte{0, 1, 111}:     "Inkel Corp.",
-       [3]byte{0, 1, 112}:     "ESE Embedded System Engineer'g",
-       [3]byte{0, 1, 113}:     "Allied Data Technologies",
-       [3]byte{0, 1, 114}:     "TechnoLand Co., LTD.",
-       [3]byte{0, 1, 115}:     "AMCC",
-       [3]byte{0, 1, 116}:     "CyberOptics Corporation",
-       [3]byte{0, 1, 117}:     "Radiant Communications Corp.",
-       [3]byte{0, 1, 118}:     "Orient Silver Enterprises",
-       [3]byte{0, 1, 119}:     "EDSL",
-       [3]byte{0, 1, 120}:     "MARGI Systems, Inc.",
-       [3]byte{0, 1, 121}:     "WIRELESS TECHNOLOGY, INC.",
-       [3]byte{0, 1, 122}:     "Chengdu Maipu Electric Industrial Co., Ltd.",
-       [3]byte{0, 1, 123}:     "Heidelberger Druckmaschinen AG",
-       [3]byte{0, 1, 124}:     "AG-E GmbH",
-       [3]byte{0, 1, 125}:     "ThermoQuest",
-       [3]byte{0, 1, 126}:     "ADTEK System Science Co., Ltd.",
-       [3]byte{0, 1, 127}:     "Experience Music Project",
-       [3]byte{0, 1, 128}:     "AOpen, Inc.",
-       [3]byte{0, 1, 129}:     "Nortel Networks",
-       [3]byte{0, 1, 130}:     "DICA TECHNOLOGIES AG",
-       [3]byte{0, 1, 131}:     "ANITE TELECOMS",
-       [3]byte{0, 1, 132}:     "SIEB & MEYER AG",
-       [3]byte{0, 1, 133}:     "Hitachi Aloka Medical, Ltd.",
-       [3]byte{0, 1, 134}:     "Uwe Disch",
-       [3]byte{0, 1, 135}:     "I2SE GmbH",
-       [3]byte{0, 1, 136}:     "LXCO Technologies ag",
-       [3]byte{0, 1, 137}:     "Refraction Technology, Inc.",
-       [3]byte{0, 1, 138}:     "ROI COMPUTER AG",
-       [3]byte{0, 1, 139}:     "NetLinks Co., Ltd.",
-       [3]byte{0, 1, 140}:     "Mega Vision",
-       [3]byte{0, 1, 141}:     "AudeSi Technologies",
-       [3]byte{0, 1, 142}:     "Logitec Corporation",
-       [3]byte{0, 1, 143}:     "Kenetec, Inc.",
-       [3]byte{0, 1, 144}:     "SMK-M",
-       [3]byte{0, 1, 145}:     "SYRED Data Systems",
-       [3]byte{0, 1, 146}:     "Texas Digital Systems",
-       [3]byte{0, 1, 147}:     "Hanbyul Telecom Co., Ltd.",
-       [3]byte{0, 1, 148}:     "Capital Equipment Corporation",
-       [3]byte{0, 1, 149}:     "Sena Technologies, Inc.",
-       [3]byte{0, 1, 150}:     "Cisco Systems, Inc",
-       [3]byte{0, 1, 151}:     "Cisco Systems, Inc",
-       [3]byte{0, 1, 152}:     "Darim Vision",
-       [3]byte{0, 1, 153}:     "HeiSei Electronics",
-       [3]byte{0, 1, 154}:     "LEUNIG GmbH",
-       [3]byte{0, 1, 155}:     "Kyoto Microcomputer Co., Ltd.",
-       [3]byte{0, 1, 156}:     "JDS Uniphase Inc.",
-       [3]byte{0, 1, 157}:     "E-Control Systems, Inc.",
-       [3]byte{0, 1, 158}:     "ESS Technology, Inc.",
-       [3]byte{0, 1, 159}:     "ReadyNet",
-       [3]byte{0, 1, 160}:     "Infinilink Corporation",
-       [3]byte{0, 1, 161}:     "Mag-Tek, Inc.",
-       [3]byte{0, 1, 162}:     "Logical Co., Ltd.",
-       [3]byte{0, 1, 163}:     "GENESYS LOGIC, INC.",
-       [3]byte{0, 1, 164}:     "Microlink Corporation",
-       [3]byte{0, 1, 165}:     "Nextcomm, Inc.",
-       [3]byte{0, 1, 166}:     "Scientific-Atlanta Arcodan A/S",
-       [3]byte{0, 1, 167}:     "UNEX TECHNOLOGY CORPORATION",
-       [3]byte{0, 1, 168}:     "Welltech Computer Co., Ltd.",
-       [3]byte{0, 1, 169}:     "BMW AG",
-       [3]byte{0, 1, 170}:     "Airspan Communications, Ltd.",
-       [3]byte{0, 1, 171}:     "Main Street Networks",
-       [3]byte{0, 1, 172}:     "Sitara Networks, Inc.",
-       [3]byte{0, 1, 173}:     "Coach Master International  d.b.a. CMI Worldwide, Inc.",
-       [3]byte{0, 1, 174}:     "Trex Enterprises",
-       [3]byte{0, 1, 175}:     "Artesyn Embedded Technologies",
-       [3]byte{0, 1, 176}:     "Fulltek Technology Co., Ltd.",
-       [3]byte{0, 1, 177}:     "General Bandwidth",
-       [3]byte{0, 1, 178}:     "Digital Processing Systems, Inc.",
-       [3]byte{0, 1, 179}:     "Precision Electronic Manufacturing",
-       [3]byte{0, 1, 180}:     "Wayport, Inc.",
-       [3]byte{0, 1, 181}:     "Turin Networks, Inc.",
-       [3]byte{0, 1, 182}:     "SAEJIN T&M Co., Ltd.",
-       [3]byte{0, 1, 183}:     "Centos, Inc.",
-       [3]byte{0, 1, 184}:     "Netsensity, Inc.",
-       [3]byte{0, 1, 185}:     "SKF Condition Monitoring",
-       [3]byte{0, 1, 186}:     "IC-Net, Inc.",
-       [3]byte{0, 1, 187}:     "Frequentis",
-       [3]byte{0, 1, 188}:     "Brains Corporation",
-       [3]byte{0, 1, 189}:     "Peterson Electro-Musical Products, Inc.",
-       [3]byte{0, 1, 190}:     "Gigalink Co., Ltd.",
-       [3]byte{0, 1, 191}:     "Teleforce Co., Ltd.",
-       [3]byte{0, 1, 192}:     "CompuLab, Ltd.",
-       [3]byte{0, 1, 193}:     "Vitesse Semiconductor Corporation",
-       [3]byte{0, 1, 194}:     "ARK Research Corp.",
-       [3]byte{0, 1, 195}:     "Acromag, Inc.",
-       [3]byte{0, 1, 196}:     "NeoWave, Inc.",
-       [3]byte{0, 1, 197}:     "Simpler Networks",
-       [3]byte{0, 1, 198}:     "Quarry Technologies",
-       [3]byte{0, 1, 199}:     "Cisco Systems, Inc",
-       [3]byte{0, 1, 200}:     "THOMAS CONRAD CORP.",
-       [3]byte{0, 1, 200}:     "CONRAD CORP.",
-       [3]byte{0, 1, 201}:     "Cisco Systems, Inc",
-       [3]byte{0, 1, 202}:     "Geocast Network Systems, Inc.",
-       [3]byte{0, 1, 203}:     "EVR",
-       [3]byte{0, 1, 204}:     "Japan Total Design Communication Co., Ltd.",
-       [3]byte{0, 1, 205}:     "ARtem",
-       [3]byte{0, 1, 206}:     "Custom Micro Products, Ltd.",
-       [3]byte{0, 1, 207}:     "Alpha Data Parallel Systems, Ltd.",
-       [3]byte{0, 1, 208}:     "VitalPoint, Inc.",
-       [3]byte{0, 1, 209}:     "CoNet Communications, Inc.",
-       [3]byte{0, 1, 210}:     "inXtron, Inc.",
-       [3]byte{0, 1, 211}:     "PAXCOMM, Inc.",
-       [3]byte{0, 1, 212}:     "Leisure Time, Inc.",
-       [3]byte{0, 1, 213}:     "HAEDONG INFO & COMM CO., LTD",
-       [3]byte{0, 1, 214}:     "manroland AG",
-       [3]byte{0, 1, 215}:     "F5 Networks, Inc.",
-       [3]byte{0, 1, 216}:     "Teltronics, Inc.",
-       [3]byte{0, 1, 217}:     "Sigma, Inc.",
-       [3]byte{0, 1, 218}:     "WINCOMM Corporation",
-       [3]byte{0, 1, 219}:     "Freecom Technologies GmbH",
-       [3]byte{0, 1, 220}:     "Activetelco",
-       [3]byte{0, 1, 221}:     "Avail Networks",
-       [3]byte{0, 1, 222}:     "Trango Systems, Inc.",
-       [3]byte{0, 1, 223}:     "ISDN Communications, Ltd.",
-       [3]byte{0, 1, 224}:     "Fast Systems, Inc.",
-       [3]byte{0, 1, 225}:     "Kinpo Electronics, Inc.",
-       [3]byte{0, 1, 226}:     "Ando Electric Corporation",
-       [3]byte{0, 1, 227}:     "Siemens AG",
-       [3]byte{0, 1, 228}:     "Sitera, Inc.",
-       [3]byte{0, 1, 229}:     "Supernet, Inc.",
-       [3]byte{0, 1, 230}:     "Hewlett Packard",
-       [3]byte{0, 1, 231}:     "Hewlett Packard",
-       [3]byte{0, 1, 232}:     "Force10 Networks, Inc.",
-       [3]byte{0, 1, 233}:     "Litton Marine Systems B.V.",
-       [3]byte{0, 1, 234}:     "Cirilium Corp.",
-       [3]byte{0, 1, 235}:     "C-COM Corporation",
-       [3]byte{0, 1, 236}:     "Ericsson Group",
-       [3]byte{0, 1, 237}:     "SETA Corp.",
-       [3]byte{0, 1, 238}:     "Comtrol Europe, Ltd.",
-       [3]byte{0, 1, 239}:     "Camtel Technology Corp.",
-       [3]byte{0, 1, 240}:     "Tridium, Inc.",
-       [3]byte{0, 1, 241}:     "Innovative Concepts, Inc.",
-       [3]byte{0, 1, 242}:     "Mark of the Unicorn, Inc.",
-       [3]byte{0, 1, 243}:     "QPS, Inc.",
-       [3]byte{0, 1, 244}:     "Enterasys",
-       [3]byte{0, 1, 245}:     "ERIM S.A.",
-       [3]byte{0, 1, 246}:     "Association of Musical Electronics Industry",
-       [3]byte{0, 1, 247}:     "Image Display Systems, Inc.",
-       [3]byte{0, 1, 248}:     "TEXIO TECHNOLOGY CORPORATION",
-       [3]byte{0, 1, 249}:     "TeraGlobal Communications Corp.",
-       [3]byte{0, 1, 250}:     "HOROSCAS",
-       [3]byte{0, 1, 251}:     "DoTop Technology, Inc.",
-       [3]byte{0, 1, 252}:     "Keyence Corporation",
-       [3]byte{0, 1, 253}:     "Digital Voice Systems, Inc.",
-       [3]byte{0, 1, 254}:     "DIGITAL EQUIPMENT CORPORATION",
-       [3]byte{0, 1, 255}:     "Data Direct Networks, Inc.",
-       [3]byte{0, 2, 0}:       "Net & Sys Co., Ltd.",
-       [3]byte{0, 2, 1}:       "IFM Electronic gmbh",
-       [3]byte{0, 2, 2}:       "Amino Communications, Ltd.",
-       [3]byte{0, 2, 3}:       "Woonsang Telecom, Inc.",
-       [3]byte{0, 2, 4}:       "Bodmann Industries Elektronik GmbH",
-       [3]byte{0, 2, 5}:       "Hitachi Denshi, Ltd.",
-       [3]byte{0, 2, 6}:       "Telital R&D Denmark A/S",
-       [3]byte{0, 2, 7}:       "VisionGlobal Network Corp.",
-       [3]byte{0, 2, 8}:       "Unify Networks, Inc.",
-       [3]byte{0, 2, 9}:       "Shenzhen SED Information Technology Co., Ltd.",
-       [3]byte{0, 2, 10}:      "Gefran Spa",
-       [3]byte{0, 2, 11}:      "Native Networks, Inc.",
-       [3]byte{0, 2, 12}:      "Metro-Optix",
-       [3]byte{0, 2, 13}:      "Micronpc.com",
-       [3]byte{0, 2, 14}:      "ECI Telecom Ltd.",
-       [3]byte{0, 2, 15}:      "AATR",
-       [3]byte{0, 2, 16}:      "Fenecom",
-       [3]byte{0, 2, 17}:      "Nature Worldwide Technology Corp.",
-       [3]byte{0, 2, 18}:      "SierraCom",
-       [3]byte{0, 2, 19}:      "S.D.E.L.",
-       [3]byte{0, 2, 20}:      "DTVRO",
-       [3]byte{0, 2, 21}:      "Cotas Computer Technology A/B",
-       [3]byte{0, 2, 22}:      "Cisco Systems, Inc",
-       [3]byte{0, 2, 23}:      "Cisco Systems, Inc",
-       [3]byte{0, 2, 24}:      "Advanced Scientific Corp",
-       [3]byte{0, 2, 25}:      "Paralon Technologies",
-       [3]byte{0, 2, 26}:      "Zuma Networks",
-       [3]byte{0, 2, 27}:      "Kollmorgen-Servotronix",
-       [3]byte{0, 2, 28}:      "Network Elements, Inc.",
-       [3]byte{0, 2, 29}:      "Data General Communication Ltd.",
-       [3]byte{0, 2, 30}:      "SIMTEL S.R.L.",
-       [3]byte{0, 2, 31}:      "Aculab PLC",
-       [3]byte{0, 2, 32}:      "CANON FINETECH INC.",
-       [3]byte{0, 2, 33}:      "DSP Application, Ltd.",
-       [3]byte{0, 2, 34}:      "Chromisys, Inc.",
-       [3]byte{0, 2, 35}:      "ClickTV",
-       [3]byte{0, 2, 36}:      "C-COR",
-       [3]byte{0, 2, 37}:      "One Stop Systems",
-       [3]byte{0, 2, 38}:      "XESystems, Inc.",
-       [3]byte{0, 2, 39}:      "ESD Electronic System Design GmbH",
-       [3]byte{0, 2, 40}:      "Necsom, Ltd.",
-       [3]byte{0, 2, 41}:      "Adtec Corporation",
-       [3]byte{0, 2, 42}:      "Asound Electronic",
-       [3]byte{0, 2, 43}:      "SAXA, Inc.",
-       [3]byte{0, 2, 44}:      "ABB Bomem, Inc.",
-       [3]byte{0, 2, 45}:      "Agere Systems",
-       [3]byte{0, 2, 46}:      "TEAC Corp. R& D",
-       [3]byte{0, 2, 47}:      "P-Cube, Ltd.",
-       [3]byte{0, 2, 48}:      "Intersoft Electronics",
-       [3]byte{0, 2, 49}:      "Ingersoll-Rand",
-       [3]byte{0, 2, 50}:      "Avision, Inc.",
-       [3]byte{0, 2, 51}:      "Mantra Communications, Inc.",
-       [3]byte{0, 2, 52}:      "Imperial Technology, Inc.",
-       [3]byte{0, 2, 53}:      "Paragon Networks International",
-       [3]byte{0, 2, 54}:      "INIT GmbH",
-       [3]byte{0, 2, 55}:      "Cosmo Research Corp.",
-       [3]byte{0, 2, 56}:      "Serome Technology, Inc.",
-       [3]byte{0, 2, 57}:      "Visicom",
-       [3]byte{0, 2, 58}:      "ZSK Stickmaschinen GmbH",
-       [3]byte{0, 2, 59}:      "Ericsson",
-       [3]byte{0, 2, 60}:      "Creative Technology, Ltd.",
-       [3]byte{0, 2, 61}:      "Cisco Systems, Inc",
-       [3]byte{0, 2, 62}:      "Selta Telematica S.p.a",
-       [3]byte{0, 2, 63}:      "COMPAL ELECTRONICS, INC.",
-       [3]byte{0, 2, 64}:      "Seedek Co., Ltd.",
-       [3]byte{0, 2, 65}:      "Amer.com",
-       [3]byte{0, 2, 66}:      "Videoframe Systems",
-       [3]byte{0, 2, 67}:      "Raysis Co., Ltd.",
-       [3]byte{0, 2, 68}:      "SURECOM Technology Co.",
-       [3]byte{0, 2, 69}:      "Lampus Co, Ltd.",
-       [3]byte{0, 2, 70}:      "All-Win Tech Co., Ltd.",
-       [3]byte{0, 2, 71}:      "Great Dragon Information Technology (Group) Co., Ltd.",
-       [3]byte{0, 2, 72}:      "Pilz GmbH & Co.",
-       [3]byte{0, 2, 73}:      "Aviv Infocom Co, Ltd.",
-       [3]byte{0, 2, 74}:      "Cisco Systems, Inc",
-       [3]byte{0, 2, 75}:      "Cisco Systems, Inc",
-       [3]byte{0, 2, 76}:      "SiByte, Inc.",
-       [3]byte{0, 2, 77}:      "Mannesman Dematic Colby Pty. Ltd.",
-       [3]byte{0, 2, 78}:      "Datacard Group",
-       [3]byte{0, 2, 79}:      "IPM Datacom S.R.L.",
-       [3]byte{0, 2, 80}:      "Geyser Networks, Inc.",
-       [3]byte{0, 2, 81}:      "Soma Networks, Inc.",
-       [3]byte{0, 2, 82}:      "Carrier Corporation",
-       [3]byte{0, 2, 83}:      "Televideo, Inc.",
-       [3]byte{0, 2, 84}:      "WorldGate",
-       [3]byte{0, 2, 85}:      "IBM Corp",
-       [3]byte{0, 2, 86}:      "Alpha Processor, Inc.",
-       [3]byte{0, 2, 87}:      "Microcom Corp.",
-       [3]byte{0, 2, 88}:      "Flying Packets Communications",
-       [3]byte{0, 2, 89}:      "Tsann Kuen China (Shanghai)Enterprise Co., Ltd. IT Group",
-       [3]byte{0, 2, 90}:      "Catena Networks",
-       [3]byte{0, 2, 91}:      "Cambridge Silicon Radio",
-       [3]byte{0, 2, 92}:      "SCI Systems (Kunshan) Co., Ltd.",
-       [3]byte{0, 2, 93}:      "Calix Networks",
-       [3]byte{0, 2, 94}:      "High Technology Ltd",
-       [3]byte{0, 2, 95}:      "Nortel Networks",
-       [3]byte{0, 2, 96}:      "Accordion Networks, Inc.",
-       [3]byte{0, 2, 97}:      "Tilgin AB",
-       [3]byte{0, 2, 98}:      "Soyo Group Soyo Com Tech Co., Ltd",
-       [3]byte{0, 2, 99}:      "UPS Manufacturing SRL",
-       [3]byte{0, 2, 100}:     "AudioRamp.com",
-       [3]byte{0, 2, 101}:     "Virditech Co. Ltd.",
-       [3]byte{0, 2, 102}:     "Thermalogic Corporation",
-       [3]byte{0, 2, 103}:     "NODE RUNNER, INC.",
-       [3]byte{0, 2, 104}:     "Harris Government Communications",
-       [3]byte{0, 2, 105}:     "Nadatel Co., Ltd",
-       [3]byte{0, 2, 106}:     "Cocess Telecom Co., Ltd.",
-       [3]byte{0, 2, 107}:     "BCM Computers Co., Ltd.",
-       [3]byte{0, 2, 108}:     "Philips CFT",
-       [3]byte{0, 2, 109}:     "Adept Telecom",
-       [3]byte{0, 2, 110}:     "NeGeN Access, Inc.",
-       [3]byte{0, 2, 111}:     "Senao International Co., Ltd.",
-       [3]byte{0, 2, 112}:     "Crewave Co., Ltd.",
-       [3]byte{0, 2, 113}:     "Zhone Technologies",
-       [3]byte{0, 2, 114}:     "CC&C Technologies, Inc.",
-       [3]byte{0, 2, 115}:     "Coriolis Networks",
-       [3]byte{0, 2, 116}:     "Tommy Technologies Corp.",
-       [3]byte{0, 2, 117}:     "SMART Technologies, Inc.",
-       [3]byte{0, 2, 118}:     "Primax Electronics Ltd.",
-       [3]byte{0, 2, 119}:     "Cash Systemes Industrie",
-       [3]byte{0, 2, 120}:     "SAMSUNG ELECTRO MECHANICS CO., LTD.",
-       [3]byte{0, 2, 121}:     "Control Applications, Ltd.",
-       [3]byte{0, 2, 122}:     "IOI Technology Corporation",
-       [3]byte{0, 2, 123}:     "Amplify Net, Inc.",
-       [3]byte{0, 2, 124}:     "Trilithic, Inc.",
-       [3]byte{0, 2, 125}:     "Cisco Systems, Inc",
-       [3]byte{0, 2, 126}:     "Cisco Systems, Inc",
-       [3]byte{0, 2, 127}:     "ask-technologies.com",
-       [3]byte{0, 2, 128}:     "Mu Net, Inc.",
-       [3]byte{0, 2, 129}:     "Madge Ltd.",
-       [3]byte{0, 2, 130}:     "ViaClix, Inc.",
-       [3]byte{0, 2, 131}:     "Spectrum Controls, Inc.",
-       [3]byte{0, 2, 132}:     "AREVA T&D",
-       [3]byte{0, 2, 133}:     "Riverstone Networks",
-       [3]byte{0, 2, 134}:     "Occam Networks",
-       [3]byte{0, 2, 135}:     "Adapcom",
-       [3]byte{0, 2, 136}:     "GLOBAL VILLAGE COMMUNICATION",
-       [3]byte{0, 2, 137}:     "DNE Technologies",
-       [3]byte{0, 2, 138}:     "Ambit Microsystems Corporation",
-       [3]byte{0, 2, 139}:     "VDSL Systems OY",
-       [3]byte{0, 2, 140}:     "Micrel-Synergy Semiconductor",
-       [3]byte{0, 2, 141}:     "Movita Technologies, Inc.",
-       [3]byte{0, 2, 142}:     "Rapid 5 Networks, Inc.",
-       [3]byte{0, 2, 143}:     "Globetek, Inc.",
-       [3]byte{0, 2, 144}:     "Woorigisool, Inc.",
-       [3]byte{0, 2, 145}:     "Open Network Co., Ltd.",
-       [3]byte{0, 2, 146}:     "Logic Innovations, Inc.",
-       [3]byte{0, 2, 147}:     "Solid Data Systems",
-       [3]byte{0, 2, 148}:     "Tokyo Sokushin Co., Ltd.",
-       [3]byte{0, 2, 149}:     "IP.Access Limited",
-       [3]byte{0, 2, 150}:     "Lectron Co,. Ltd.",
-       [3]byte{0, 2, 151}:     "C-COR.net",
-       [3]byte{0, 2, 152}:     "Broadframe Corporation",
-       [3]byte{0, 2, 153}:     "Apex, Inc.",
-       [3]byte{0, 2, 154}:     "Storage Apps",
-       [3]byte{0, 2, 155}:     "Kreatel Communications AB",
-       [3]byte{0, 2, 156}:     "3COM",
-       [3]byte{0, 2, 157}:     "Merix Corp.",
-       [3]byte{0, 2, 158}:     "Information Equipment Co., Ltd.",
-       [3]byte{0, 2, 159}:     "L-3 Communication Aviation Recorders",
-       [3]byte{0, 2, 160}:     "Flatstack Ltd.",
-       [3]byte{0, 2, 161}:     "World Wide Packets",
-       [3]byte{0, 2, 162}:     "Hilscher GmbH",
-       [3]byte{0, 2, 163}:     "ABB Switzerland Ltd, Power Systems",
-       [3]byte{0, 2, 164}:     "AddPac Technology Co., Ltd.",
-       [3]byte{0, 2, 165}:     "Hewlett Packard",
-       [3]byte{0, 2, 166}:     "Effinet Systems Co., Ltd.",
-       [3]byte{0, 2, 167}:     "Vivace Networks",
-       [3]byte{0, 2, 168}:     "Air Link Technology",
-       [3]byte{0, 2, 169}:     "RACOM, s.r.o.",
-       [3]byte{0, 2, 170}:     "PLcom Co., Ltd.",
-       [3]byte{0, 2, 171}:     "CTC Union Technologies Co., Ltd.",
-       [3]byte{0, 2, 172}:     "3PAR data",
-       [3]byte{0, 2, 173}:     "HOYA Corporation",
-       [3]byte{0, 2, 174}:     "Scannex Electronics Ltd.",
-       [3]byte{0, 2, 175}:     "TeleCruz Technology, Inc.",
-       [3]byte{0, 2, 176}:     "Hokubu Communication & Industrial Co., Ltd.",
-       [3]byte{0, 2, 177}:     "Anritsu, Ltd.",
-       [3]byte{0, 2, 178}:     "Cablevision",
-       [3]byte{0, 2, 179}:     "Intel Corporation",
-       [3]byte{0, 2, 180}:     "DAPHNE",
-       [3]byte{0, 2, 181}:     "Avnet, Inc.",
-       [3]byte{0, 2, 182}:     "Acrosser Technology Co., Ltd.",
-       [3]byte{0, 2, 183}:     "Watanabe Electric Industry Co., Ltd.",
-       [3]byte{0, 2, 184}:     "WHI KONSULT AB",
-       [3]byte{0, 2, 185}:     "Cisco Systems, Inc",
-       [3]byte{0, 2, 186}:     "Cisco Systems, Inc",
-       [3]byte{0, 2, 187}:     "Continuous Computing Corp",
-       [3]byte{0, 2, 188}:     "LVL 7 Systems, Inc.",
-       [3]byte{0, 2, 189}:     "Bionet Co., Ltd.",
-       [3]byte{0, 2, 190}:     "Totsu Engineering, Inc.",
-       [3]byte{0, 2, 191}:     "dotRocket, Inc.",
-       [3]byte{0, 2, 192}:     "Bencent Tzeng Industry Co., Ltd.",
-       [3]byte{0, 2, 193}:     "Innovative Electronic Designs, Inc.",
-       [3]byte{0, 2, 194}:     "Net Vision Telecom",
-       [3]byte{0, 2, 195}:     "Arelnet Ltd.",
-       [3]byte{0, 2, 196}:     "Vector International BVBA",
-       [3]byte{0, 2, 197}:     "Evertz Microsystems Ltd.",
-       [3]byte{0, 2, 198}:     "Data Track Technology PLC",
-       [3]byte{0, 2, 199}:     "ALPS ELECTRIC CO.,LTD.",
-       [3]byte{0, 2, 200}:     "Technocom Communications Technology (pte) Ltd",
-       [3]byte{0, 2, 201}:     "Mellanox Technologies, Inc.",
-       [3]byte{0, 2, 202}:     "EndPoints, Inc.",
-       [3]byte{0, 2, 203}:     "TriState Ltd.",
-       [3]byte{0, 2, 204}:     "M.C.C.I",
-       [3]byte{0, 2, 205}:     "TeleDream, Inc.",
-       [3]byte{0, 2, 206}:     "FoxJet, Inc.",
-       [3]byte{0, 2, 207}:     "ZyGate Communications, Inc.",
-       [3]byte{0, 2, 208}:     "Comdial Corporation",
-       [3]byte{0, 2, 209}:     "Vivotek, Inc.",
-       [3]byte{0, 2, 210}:     "Workstation AG",
-       [3]byte{0, 2, 211}:     "NetBotz, Inc.",
-       [3]byte{0, 2, 212}:     "PDA Peripherals, Inc.",
-       [3]byte{0, 2, 213}:     "ACR",
-       [3]byte{0, 2, 214}:     "NICE Systems",
-       [3]byte{0, 2, 215}:     "EMPEG Ltd",
-       [3]byte{0, 2, 216}:     "BRECIS Communications Corporation",
-       [3]byte{0, 2, 217}:     "Reliable Controls",
-       [3]byte{0, 2, 218}:     "ExiO Communications, Inc.",
-       [3]byte{0, 2, 219}:     "NETSEC",
-       [3]byte{0, 2, 220}:     "Fujitsu General Limited",
-       [3]byte{0, 2, 221}:     "Bromax Communications, Ltd.",
-       [3]byte{0, 2, 222}:     "Astrodesign, Inc.",
-       [3]byte{0, 2, 223}:     "Net Com Systems, Inc.",
-       [3]byte{0, 2, 224}:     "ETAS GmbH",
-       [3]byte{0, 2, 225}:     "Integrated Network Corporation",
-       [3]byte{0, 2, 226}:     "NDC Infared Engineering",
-       [3]byte{0, 2, 227}:     "LITE-ON Communications, Inc.",
-       [3]byte{0, 2, 228}:     "JC HYUN Systems, Inc.",
-       [3]byte{0, 2, 229}:     "Timeware Ltd.",
-       [3]byte{0, 2, 230}:     "Gould Instrument Systems, Inc.",
-       [3]byte{0, 2, 231}:     "CAB GmbH & Co KG",
-       [3]byte{0, 2, 232}:     "E.D.&A.",
-       [3]byte{0, 2, 233}:     "CS Systemes De Securite - C3S",
-       [3]byte{0, 2, 234}:     "Focus Enhancements",
-       [3]byte{0, 2, 235}:     "Pico Communications",
-       [3]byte{0, 2, 236}:     "Maschoff Design Engineering",
-       [3]byte{0, 2, 237}:     "DXO Telecom Co., Ltd.",
-       [3]byte{0, 2, 238}:     "Nokia Danmark A/S",
-       [3]byte{0, 2, 239}:     "CCC Network Systems Group Ltd.",
-       [3]byte{0, 2, 240}:     "AME Optimedia Technology Co., Ltd.",
-       [3]byte{0, 2, 241}:     "Pinetron Co., Ltd.",
-       [3]byte{0, 2, 242}:     "eDevice, Inc.",
-       [3]byte{0, 2, 243}:     "Media Serve Co., Ltd.",
-       [3]byte{0, 2, 244}:     "PCTEL, Inc.",
-       [3]byte{0, 2, 245}:     "VIVE Synergies, Inc.",
-       [3]byte{0, 2, 246}:     "Equipe Communications",
-       [3]byte{0, 2, 247}:     "ARM",
-       [3]byte{0, 2, 248}:     "SEAKR Engineering, Inc.",
-       [3]byte{0, 2, 249}:     "MIMOS Berhad",
-       [3]byte{0, 2, 250}:     "DX Antenna Co., Ltd.",
-       [3]byte{0, 2, 251}:     "Baumuller Aulugen-Systemtechnik GmbH",
-       [3]byte{0, 2, 252}:     "Cisco Systems, Inc",
-       [3]byte{0, 2, 253}:     "Cisco Systems, Inc",
-       [3]byte{0, 2, 254}:     "Viditec, Inc.",
-       [3]byte{0, 2, 255}:     "Handan BroadInfoCom",
-       [3]byte{0, 3, 0}:       "Barracuda Networks, Inc.",
-       [3]byte{0, 3, 1}:       "EXFO",
-       [3]byte{0, 3, 2}:       "Charles Industries, Ltd.",
-       [3]byte{0, 3, 3}:       "JAMA Electronics Co., Ltd.",
-       [3]byte{0, 3, 4}:       "Pacific Broadband Communications",
-       [3]byte{0, 3, 5}:       "MSC Vertriebs GmbH",
-       [3]byte{0, 3, 6}:       "Fusion In Tech Co., Ltd.",
-       [3]byte{0, 3, 7}:       "Secure Works, Inc.",
-       [3]byte{0, 3, 8}:       "AM Communications, Inc.",
-       [3]byte{0, 3, 9}:       "Texcel Technology PLC",
-       [3]byte{0, 3, 10}:      "Argus Technologies",
-       [3]byte{0, 3, 11}:      "Hunter Technology, Inc.",
-       [3]byte{0, 3, 12}:      "Telesoft Technologies Ltd.",
-       [3]byte{0, 3, 13}:      "Uniwill Computer Corp.",
-       [3]byte{0, 3, 14}:      "Core Communications Co., Ltd.",
-       [3]byte{0, 3, 15}:      "Digital China (Shanghai) Networks Ltd.",
-       [3]byte{0, 3, 16}:      "E-Globaledge Corporation",
-       [3]byte{0, 3, 17}:      "Micro Technology Co., Ltd.",
-       [3]byte{0, 3, 18}:      "TR-Systemtechnik GmbH",
-       [3]byte{0, 3, 19}:      "Access Media SPA",
-       [3]byte{0, 3, 20}:      "Teleware Network Systems",
-       [3]byte{0, 3, 21}:      "Cidco Incorporated",
-       [3]byte{0, 3, 22}:      "Nobell Communications, Inc.",
-       [3]byte{0, 3, 23}:      "Merlin Systems, Inc.",
-       [3]byte{0, 3, 24}:      "Cyras Systems, Inc.",
-       [3]byte{0, 3, 25}:      "Infineon AG",
-       [3]byte{0, 3, 26}:      "Beijing Broad Telecom Ltd., China",
-       [3]byte{0, 3, 27}:      "Cellvision Systems, Inc.",
-       [3]byte{0, 3, 28}:      "Svenska Hardvarufabriken AB",
-       [3]byte{0, 3, 29}:      "Taiwan Commate Computer, Inc.",
-       [3]byte{0, 3, 30}:      "Optranet, Inc.",
-       [3]byte{0, 3, 31}:      "Condev Ltd.",
-       [3]byte{0, 3, 32}:      "Xpeed, Inc.",
-       [3]byte{0, 3, 33}:      "Reco Research Co., Ltd.",
-       [3]byte{0, 3, 34}:      "IDIS Co., Ltd.",
-       [3]byte{0, 3, 35}:      "Cornet Technology, Inc.",
-       [3]byte{0, 3, 36}:      "SANYO Consumer Electronics Co., Ltd.",
-       [3]byte{0, 3, 37}:      "Arima Computer Corp.",
-       [3]byte{0, 3, 38}:      "Iwasaki Information Systems Co., Ltd.",
-       [3]byte{0, 3, 39}:      "ACT'L",
-       [3]byte{0, 3, 40}:      "Mace Group, Inc.",
-       [3]byte{0, 3, 41}:      "F3, Inc.",
-       [3]byte{0, 3, 42}:      "UniData Communication Systems, Inc.",
-       [3]byte{0, 3, 43}:      "GAI Datenfunksysteme GmbH",
-       [3]byte{0, 3, 44}:      "ABB Switzerland Ltd",
-       [3]byte{0, 3, 45}:      "IBASE Technology, Inc.",
-       [3]byte{0, 3, 46}:      "Scope Information Management, Ltd.",
-       [3]byte{0, 3, 47}:      "Global Sun Technology, Inc.",
-       [3]byte{0, 3, 48}:      "Imagenics, Co., Ltd.",
-       [3]byte{0, 3, 49}:      "Cisco Systems, Inc",
-       [3]byte{0, 3, 50}:      "Cisco Systems, Inc",
-       [3]byte{0, 3, 51}:      "Digitel Co., Ltd.",
-       [3]byte{0, 3, 52}:      "Newport Electronics",
-       [3]byte{0, 3, 53}:      "Mirae Technology",
-       [3]byte{0, 3, 54}:      "Zetes Technologies",
-       [3]byte{0, 3, 55}:      "Vaone, Inc.",
-       [3]byte{0, 3, 56}:      "Oak Technology",
-       [3]byte{0, 3, 57}:      "Eurologic Systems, Ltd.",
-       [3]byte{0, 3, 58}:      "Silicon Wave, Inc.",
-       [3]byte{0, 3, 59}:      "TAMI Tech Co., Ltd.",
-       [3]byte{0, 3, 60}:      "Daiden Co., Ltd.",
-       [3]byte{0, 3, 61}:      "ILSHin Lab",
-       [3]byte{0, 3, 62}:      "Tateyama System Laboratory Co., Ltd.",
-       [3]byte{0, 3, 63}:      "BigBand Networks, Ltd.",
-       [3]byte{0, 3, 64}:      "Floware Wireless Systems, Ltd.",
-       [3]byte{0, 3, 65}:      "Axon Digital Design",
-       [3]byte{0, 3, 66}:      "Nortel Networks",
-       [3]byte{0, 3, 67}:      "Martin Professional A/S",
-       [3]byte{0, 3, 68}:      "Tietech.Co., Ltd.",
-       [3]byte{0, 3, 69}:      "Routrek Networks Corporation",
-       [3]byte{0, 3, 70}:      "Hitachi Kokusai Electric, Inc.",
-       [3]byte{0, 3, 71}:      "Intel Corporation",
-       [3]byte{0, 3, 72}:      "Norscan Instruments, Ltd.",
-       [3]byte{0, 3, 73}:      "Vidicode Datacommunicatie B.V.",
-       [3]byte{0, 3, 74}:      "RIAS Corporation",
-       [3]byte{0, 3, 75}:      "Nortel Networks",
-       [3]byte{0, 3, 76}:      "Shanghai DigiVision Technology Co., Ltd.",
-       [3]byte{0, 3, 77}:      "Chiaro Networks, Ltd.",
-       [3]byte{0, 3, 78}:      "Pos Data Company, Ltd.",
-       [3]byte{0, 3, 79}:      "Sur-Gard Security",
-       [3]byte{0, 3, 80}:      "BTICINO SPA",
-       [3]byte{0, 3, 81}:      "Diebold, Inc.",
-       [3]byte{0, 3, 82}:      "Colubris Networks",
-       [3]byte{0, 3, 83}:      "Mitac, Inc.",
-       [3]byte{0, 3, 84}:      "Fiber Logic Communications",
-       [3]byte{0, 3, 85}:      "TeraBeam Internet Systems",
-       [3]byte{0, 3, 86}:      "Wincor Nixdorf International GmbH",
-       [3]byte{0, 3, 87}:      "Intervoice-Brite, Inc.",
-       [3]byte{0, 3, 88}:      "Hanyang Digitech Co.Ltd",
-       [3]byte{0, 3, 89}:      "DigitalSis",
-       [3]byte{0, 3, 90}:      "Photron Limited",
-       [3]byte{0, 3, 91}:      "BridgeWave Communications",
-       [3]byte{0, 3, 92}:      "Saint Song Corp.",
-       [3]byte{0, 3, 93}:      "Bosung Hi-Net Co., Ltd.",
-       [3]byte{0, 3, 94}:      "Metropolitan Area Networks, Inc.",
-       [3]byte{0, 3, 95}:      "Prüftechnik Condition Monitoring GmbH & Co. KG",
-       [3]byte{0, 3, 96}:      "PAC Interactive Technology, Inc.",
-       [3]byte{0, 3, 97}:      "Widcomm, Inc.",
-       [3]byte{0, 3, 98}:      "Vodtel Communications, Inc.",
-       [3]byte{0, 3, 99}:      "Miraesys Co., Ltd.",
-       [3]byte{0, 3, 100}:     "Scenix Semiconductor, Inc.",
-       [3]byte{0, 3, 101}:     "Kira Information & Communications, Ltd.",
-       [3]byte{0, 3, 102}:     "ASM Pacific Technology",
-       [3]byte{0, 3, 103}:     "Jasmine Networks, Inc.",
-       [3]byte{0, 3, 104}:     "Embedone Co., Ltd.",
-       [3]byte{0, 3, 105}:     "Nippon Antenna Co., Ltd.",
-       [3]byte{0, 3, 106}:     "Mainnet, Ltd.",
-       [3]byte{0, 3, 107}:     "Cisco Systems, Inc",
-       [3]byte{0, 3, 108}:     "Cisco Systems, Inc",
-       [3]byte{0, 3, 109}:     "Runtop, Inc.",
-       [3]byte{0, 3, 110}:     "Nicon Systems (Pty) Limited",
-       [3]byte{0, 3, 111}:     "Telsey SPA",
-       [3]byte{0, 3, 112}:     "NXTV, Inc.",
-       [3]byte{0, 3, 113}:     "Acomz Networks Corp.",
-       [3]byte{0, 3, 114}:     "ULAN",
-       [3]byte{0, 3, 115}:     "Aselsan A.S",
-       [3]byte{0, 3, 116}:     "Control Microsystems",
-       [3]byte{0, 3, 117}:     "NetMedia, Inc.",
-       [3]byte{0, 3, 118}:     "Graphtec Technology, Inc.",
-       [3]byte{0, 3, 119}:     "Gigabit Wireless",
-       [3]byte{0, 3, 120}:     "HUMAX Co., Ltd.",
-       [3]byte{0, 3, 121}:     "Proscend Communications, Inc.",
-       [3]byte{0, 3, 122}:     "Taiyo Yuden Co., Ltd.",
-       [3]byte{0, 3, 123}:     "IDEC IZUMI Corporation",
-       [3]byte{0, 3, 124}:     "Coax Media",
-       [3]byte{0, 3, 125}:     "Stellcom",
-       [3]byte{0, 3, 126}:     "PORTech Communications, Inc.",
-       [3]byte{0, 3, 127}:     "Atheros Communications, Inc.",
-       [3]byte{0, 3, 128}:     "SSH Communications Security Corp.",
-       [3]byte{0, 3, 129}:     "Ingenico International",
-       [3]byte{0, 3, 130}:     "A-One Co., Ltd.",
-       [3]byte{0, 3, 131}:     "Metera Networks, Inc.",
-       [3]byte{0, 3, 132}:     "AETA",
-       [3]byte{0, 3, 133}:     "Actelis Networks, Inc.",
-       [3]byte{0, 3, 134}:     "Ho Net, Inc.",
-       [3]byte{0, 3, 135}:     "Blaze Network Products",
-       [3]byte{0, 3, 136}:     "Fastfame Technology Co., Ltd.",
-       [3]byte{0, 3, 137}:     "PLANTRONICS, INC.",
-       [3]byte{0, 3, 138}:     "America Online, Inc.",
-       [3]byte{0, 3, 139}:     "PLUS-ONE I&T, Inc.",
-       [3]byte{0, 3, 140}:     "Total Impact",
-       [3]byte{0, 3, 141}:     "PCS Revenue Control Systems, Inc.",
-       [3]byte{0, 3, 142}:     "Atoga Systems, Inc.",
-       [3]byte{0, 3, 143}:     "Weinschel Corporation",
-       [3]byte{0, 3, 144}:     "Digital Video Communications, Inc.",
-       [3]byte{0, 3, 145}:     "Advanced Digital Broadcast, Ltd.",
-       [3]byte{0, 3, 146}:     "Hyundai Teletek Co., Ltd.",
-       [3]byte{0, 3, 147}:     "Apple, Inc.",
-       [3]byte{0, 3, 148}:     "Connect One",
-       [3]byte{0, 3, 149}:     "California Amplifier",
-       [3]byte{0, 3, 150}:     "EZ Cast Co., Ltd.",
-       [3]byte{0, 3, 151}:     "Watchfront Limited",
-       [3]byte{0, 3, 152}:     "WISI",
-       [3]byte{0, 3, 153}:     "Dongju Informations & Communications Co., Ltd.",
-       [3]byte{0, 3, 154}:     "SiConnect",
-       [3]byte{0, 3, 155}:     "NetChip Technology, Inc.",
-       [3]byte{0, 3, 156}:     "OptiMight Communications, Inc.",
-       [3]byte{0, 3, 157}:     "Qisda Corporation",
-       [3]byte{0, 3, 158}:     "Tera System Co., Ltd.",
-       [3]byte{0, 3, 159}:     "Cisco Systems, Inc",
-       [3]byte{0, 3, 160}:     "Cisco Systems, Inc",
-       [3]byte{0, 3, 161}:     "HIPER Information & Communication, Inc.",
-       [3]byte{0, 3, 162}:     "Catapult Communications",
-       [3]byte{0, 3, 163}:     "MAVIX, Ltd.",
-       [3]byte{0, 3, 164}:     "Imation Corp.",
-       [3]byte{0, 3, 165}:     "Medea Corporation",
-       [3]byte{0, 3, 166}:     "Traxit Technology, Inc.",
-       [3]byte{0, 3, 167}:     "Unixtar Technology, Inc.",
-       [3]byte{0, 3, 168}:     "IDOT Computers, Inc.",
-       [3]byte{0, 3, 169}:     "AXCENT Media AG",
-       [3]byte{0, 3, 170}:     "Watlow",
-       [3]byte{0, 3, 171}:     "Bridge Information Systems",
-       [3]byte{0, 3, 172}:     "Fronius Schweissmaschinen",
-       [3]byte{0, 3, 173}:     "Emerson Energy Systems AB",
-       [3]byte{0, 3, 174}:     "Allied Advanced Manufacturing Pte, Ltd.",
-       [3]byte{0, 3, 175}:     "Paragea Communications",
-       [3]byte{0, 3, 176}:     "Xsense Technology Corp.",
-       [3]byte{0, 3, 177}:     "Hospira Inc.",
-       [3]byte{0, 3, 178}:     "Radware",
-       [3]byte{0, 3, 179}:     "IA Link Systems Co., Ltd.",
-       [3]byte{0, 3, 180}:     "Macrotek International Corp.",
-       [3]byte{0, 3, 181}:     "Entra Technology Co.",
-       [3]byte{0, 3, 182}:     "QSI Corporation",
-       [3]byte{0, 3, 183}:     "ZACCESS Systems",
-       [3]byte{0, 3, 184}:     "NetKit Solutions, LLC",
-       [3]byte{0, 3, 185}:     "Hualong Telecom Co., Ltd.",
-       [3]byte{0, 3, 186}:     "Oracle Corporation",
-       [3]byte{0, 3, 187}:     "Signal Communications Limited",
-       [3]byte{0, 3, 188}:     "COT GmbH",
-       [3]byte{0, 3, 189}:     "OmniCluster Technologies, Inc.",
-       [3]byte{0, 3, 190}:     "Netility",
-       [3]byte{0, 3, 191}:     "Centerpoint Broadband Technologies, Inc.",
-       [3]byte{0, 3, 192}:     "RFTNC Co., Ltd.",
-       [3]byte{0, 3, 193}:     "Packet Dynamics Ltd",
-       [3]byte{0, 3, 194}:     "Solphone K.K.",
-       [3]byte{0, 3, 195}:     "Micronik Multimedia",
-       [3]byte{0, 3, 196}:     "Tomra Systems ASA",
-       [3]byte{0, 3, 197}:     "Mobotix AG",
-       [3]byte{0, 3, 198}:     "ICUE Systems, Inc.",
-       [3]byte{0, 3, 199}:     "hopf Elektronik GmbH",
-       [3]byte{0, 3, 200}:     "CML Emergency Services",
-       [3]byte{0, 3, 201}:     "TECOM Co., Ltd.",
-       [3]byte{0, 3, 202}:     "MTS Systems Corp.",
-       [3]byte{0, 3, 203}:     "Nippon Systems Development Co., Ltd.",
-       [3]byte{0, 3, 204}:     "Momentum Computer, Inc.",
-       [3]byte{0, 3, 205}:     "Clovertech, Inc.",
-       [3]byte{0, 3, 206}:     "ETEN Technologies, Inc.",
-       [3]byte{0, 3, 207}:     "Muxcom, Inc.",
-       [3]byte{0, 3, 208}:     "KOANKEISO Co., Ltd.",
-       [3]byte{0, 3, 209}:     "Takaya Corporation",
-       [3]byte{0, 3, 210}:     "Crossbeam Systems, Inc.",
-       [3]byte{0, 3, 211}:     "Internet Energy Systems, Inc.",
-       [3]byte{0, 3, 212}:     "Alloptic, Inc.",
-       [3]byte{0, 3, 213}:     "Advanced Communications Co., Ltd.",
-       [3]byte{0, 3, 214}:     "RADVision, Ltd.",
-       [3]byte{0, 3, 215}:     "NextNet Wireless, Inc.",
-       [3]byte{0, 3, 216}:     "iMPath Networks, Inc.",
-       [3]byte{0, 3, 217}:     "Secheron SA",
-       [3]byte{0, 3, 218}:     "Takamisawa Cybernetics Co., Ltd.",
-       [3]byte{0, 3, 219}:     "Apogee Electronics Corp.",
-       [3]byte{0, 3, 220}:     "Lexar Media, Inc.",
-       [3]byte{0, 3, 221}:     "Comark Interactive Solutions",
-       [3]byte{0, 3, 222}:     "OTC Wireless",
-       [3]byte{0, 3, 223}:     "Desana Systems",
-       [3]byte{0, 3, 224}:     "ARRIS Group, Inc.",
-       [3]byte{0, 3, 225}:     "Winmate Communication, Inc.",
-       [3]byte{0, 3, 226}:     "Comspace Corporation",
-       [3]byte{0, 3, 227}:     "Cisco Systems, Inc",
-       [3]byte{0, 3, 228}:     "Cisco Systems, Inc",
-       [3]byte{0, 3, 229}:     "Hermstedt SG",
-       [3]byte{0, 3, 230}:     "Entone, Inc.",
-       [3]byte{0, 3, 231}:     "Logostek Co. Ltd.",
-       [3]byte{0, 3, 232}:     "Wavelength Digital Limited",
-       [3]byte{0, 3, 233}:     "Akara Canada, Inc.",
-       [3]byte{0, 3, 234}:     "Mega System Technologies, Inc.",
-       [3]byte{0, 3, 235}:     "Atrica",
-       [3]byte{0, 3, 236}:     "ICG Research, Inc.",
-       [3]byte{0, 3, 237}:     "Shinkawa Electric Co., Ltd.",
-       [3]byte{0, 3, 238}:     "MKNet Corporation",
-       [3]byte{0, 3, 239}:     "Oneline AG",
-       [3]byte{0, 3, 240}:     "Redfern Broadband Networks",
-       [3]byte{0, 3, 241}:     "Cicada Semiconductor, Inc.",
-       [3]byte{0, 3, 242}:     "Seneca Networks",
-       [3]byte{0, 3, 243}:     "Dazzle Multimedia, Inc.",
-       [3]byte{0, 3, 244}:     "NetBurner",
-       [3]byte{0, 3, 245}:     "Chip2Chip",
-       [3]byte{0, 3, 246}:     "Allegro Networks, Inc.",
-       [3]byte{0, 3, 247}:     "Plast-Control GmbH",
-       [3]byte{0, 3, 248}:     "SanCastle Technologies, Inc.",
-       [3]byte{0, 3, 249}:     "Pleiades Communications, Inc.",
-       [3]byte{0, 3, 250}:     "TiMetra Networks",
-       [3]byte{0, 3, 251}:     "ENEGATE Co.,Ltd.",
-       [3]byte{0, 3, 252}:     "Intertex Data AB",
-       [3]byte{0, 3, 253}:     "Cisco Systems, Inc",
-       [3]byte{0, 3, 254}:     "Cisco Systems, Inc",
-       [3]byte{0, 3, 255}:     "Microsoft Corporation",
-       [3]byte{0, 4, 0}:       "LEXMARK INTERNATIONAL, INC.",
-       [3]byte{0, 4, 1}:       "Osaki Electric Co., Ltd.",
-       [3]byte{0, 4, 2}:       "Nexsan Technologies, Ltd.",
-       [3]byte{0, 4, 3}:       "Nexsi Corporation",
-       [3]byte{0, 4, 4}:       "Makino Milling Machine Co., Ltd.",
-       [3]byte{0, 4, 5}:       "ACN Technologies",
-       [3]byte{0, 4, 6}:       "Fa. Metabox AG",
-       [3]byte{0, 4, 7}:       "Topcon Positioning Systems, Inc.",
-       [3]byte{0, 4, 8}:       "Sanko Electronics Co., Ltd.",
-       [3]byte{0, 4, 9}:       "Cratos Networks",
-       [3]byte{0, 4, 10}:      "Sage Systems",
-       [3]byte{0, 4, 11}:      "3COM EUROPE LTD.",
-       [3]byte{0, 4, 12}:      "Kanno Works, Ltd.",
-       [3]byte{0, 4, 13}:      "Avaya Inc",
-       [3]byte{0, 4, 14}:      "AVM GmbH",
-       [3]byte{0, 4, 15}:      "Asus Network Technologies, Inc.",
-       [3]byte{0, 4, 16}:      "Spinnaker Networks, Inc.",
-       [3]byte{0, 4, 17}:      "Inkra Networks, Inc.",
-       [3]byte{0, 4, 18}:      "WaveSmith Networks, Inc.",
-       [3]byte{0, 4, 19}:      "SNOM Technology AG",
-       [3]byte{0, 4, 20}:      "Umezawa Musen Denki Co., Ltd.",
-       [3]byte{0, 4, 21}:      "Rasteme Systems Co., Ltd.",
-       [3]byte{0, 4, 22}:      "Parks S/A Comunicacoes Digitais",
-       [3]byte{0, 4, 23}:      "ELAU AG",
-       [3]byte{0, 4, 24}:      "Teltronic S.A.U.",
-       [3]byte{0, 4, 25}:      "Fibercycle Networks, Inc.",
-       [3]byte{0, 4, 26}:      "Ines Test and Measurement GmbH & CoKG",
-       [3]byte{0, 4, 27}:      "Bridgeworks Ltd.",
-       [3]byte{0, 4, 28}:      "ipDialog, Inc.",
-       [3]byte{0, 4, 29}:      "Corega of America",
-       [3]byte{0, 4, 30}:      "Shikoku Instrumentation Co., Ltd.",
-       [3]byte{0, 4, 31}:      "Sony Interactive Entertainment Inc.",
-       [3]byte{0, 4, 32}:      "Slim Devices, Inc.",
-       [3]byte{0, 4, 33}:      "Ocular Networks",
-       [3]byte{0, 4, 34}:      "Studio Technologies, Inc",
-       [3]byte{0, 4, 35}:      "Intel Corporation",
-       [3]byte{0, 4, 36}:      "TMC s.r.l.",
-       [3]byte{0, 4, 37}:      "Atmel Corporation",
-       [3]byte{0, 4, 38}:      "Autosys",
-       [3]byte{0, 4, 39}:      "Cisco Systems, Inc",
-       [3]byte{0, 4, 40}:      "Cisco Systems, Inc",
-       [3]byte{0, 4, 41}:      "Pixord Corporation",
-       [3]byte{0, 4, 42}:      "Wireless Networks, Inc.",
-       [3]byte{0, 4, 43}:      "IT Access Co., Ltd.",
-       [3]byte{0, 4, 44}:      "Minet, Inc.",
-       [3]byte{0, 4, 45}:      "Sarian Systems, Ltd.",
-       [3]byte{0, 4, 46}:      "Netous Technologies, Ltd.",
-       [3]byte{0, 4, 47}:      "International Communications Products, Inc.",
-       [3]byte{0, 4, 48}:      "Netgem",
-       [3]byte{0, 4, 49}:      "GlobalStreams, Inc.",
-       [3]byte{0, 4, 50}:      "Voyetra Turtle Beach, Inc.",
-       [3]byte{0, 4, 51}:      "Cyberboard A/S",
-       [3]byte{0, 4, 52}:      "Accelent Systems, Inc.",
-       [3]byte{0, 4, 53}:      "InfiNet LLC",
-       [3]byte{0, 4, 54}:      "ELANsat Technologies, Inc.",
-       [3]byte{0, 4, 55}:      "Powin Information Technology, Inc.",
-       [3]byte{0, 4, 56}:      "Nortel Networks",
-       [3]byte{0, 4, 57}:      "Rosco Entertainment Technology, Inc.",
-       [3]byte{0, 4, 58}:      "Intelligent Telecommunications, Inc.",
-       [3]byte{0, 4, 59}:      "Lava Computer Mfg., Inc.",
-       [3]byte{0, 4, 60}:      "SONOS Co., Ltd.",
-       [3]byte{0, 4, 61}:      "INDEL AG",
-       [3]byte{0, 4, 62}:      "Telencomm",
-       [3]byte{0, 4, 63}:      "ESTeem Wireless Modems, Inc",
-       [3]byte{0, 4, 64}:      "cyberPIXIE, Inc.",
-       [3]byte{0, 4, 65}:      "Half Dome Systems, Inc.",
-       [3]byte{0, 4, 66}:      "NACT",
-       [3]byte{0, 4, 67}:      "Agilent Technologies, Inc.",
-       [3]byte{0, 4, 68}:      "Western Multiplex Corporation",
-       [3]byte{0, 4, 69}:      "LMS Skalar Instruments GmbH",
-       [3]byte{0, 4, 70}:      "CYZENTECH Co., Ltd.",
-       [3]byte{0, 4, 71}:      "Acrowave Systems Co., Ltd.",
-       [3]byte{0, 4, 72}:      "Polaroid Corporation",
-       [3]byte{0, 4, 73}:      "Mapletree Networks",
-       [3]byte{0, 4, 74}:      "iPolicy Networks, Inc.",
-       [3]byte{0, 4, 75}:      "NVIDIA",
-       [3]byte{0, 4, 76}:      "JENOPTIK",
-       [3]byte{0, 4, 77}:      "Cisco Systems, Inc",
-       [3]byte{0, 4, 78}:      "Cisco Systems, Inc",
-       [3]byte{0, 4, 79}:      "Schubert System Elektronik Gmbh",
-       [3]byte{0, 4, 80}:      "DMD Computers SRL",
-       [3]byte{0, 4, 81}:      "Medrad, Inc.",
-       [3]byte{0, 4, 82}:      "RocketLogix, Inc.",
-       [3]byte{0, 4, 83}:      "YottaYotta, Inc.",
-       [3]byte{0, 4, 84}:      "Quadriga UK",
-       [3]byte{0, 4, 85}:      "ANTARA.net",
-       [3]byte{0, 4, 86}:      "Cambium Networks Limited",
-       [3]byte{0, 4, 87}:      "Universal Access Technology, Inc.",
-       [3]byte{0, 4, 88}:      "Fusion X Co., Ltd.",
-       [3]byte{0, 4, 89}:      "Veristar Corporation",
-       [3]byte{0, 4, 90}:      "The Linksys Group, Inc.",
-       [3]byte{0, 4, 91}:      "Techsan Electronics Co., Ltd.",
-       [3]byte{0, 4, 92}:      "Mobiwave Pte Ltd",
-       [3]byte{0, 4, 93}:      "BEKA Elektronik",
-       [3]byte{0, 4, 94}:      "PolyTrax Information Technology AG",
-       [3]byte{0, 4, 95}:      "Avalue Technology, Inc.",
-       [3]byte{0, 4, 96}:      "Knilink Technology, Inc.",
-       [3]byte{0, 4, 97}:      "EPOX Computer Co., Ltd.",
-       [3]byte{0, 4, 98}:      "DAKOS Data & Communication Co., Ltd.",
-       [3]byte{0, 4, 99}:      "Bosch Security Systems",
-       [3]byte{0, 4, 100}:     "Pulse-Link Inc",
-       [3]byte{0, 4, 101}:     "i.s.t isdn-support technik GmbH",
-       [3]byte{0, 4, 102}:     "ARMITEL Co.",
-       [3]byte{0, 4, 103}:     "Wuhan Research Institute of MII",
-       [3]byte{0, 4, 104}:     "Vivity, Inc.",
-       [3]byte{0, 4, 105}:     "Innocom, Inc.",
-       [3]byte{0, 4, 106}:     "Navini Networks",
-       [3]byte{0, 4, 107}:     "Palm Wireless, Inc.",
-       [3]byte{0, 4, 108}:     "Cyber Technology Co., Ltd.",
-       [3]byte{0, 4, 109}:     "Cisco Systems, Inc",
-       [3]byte{0, 4, 110}:     "Cisco Systems, Inc",
-       [3]byte{0, 4, 111}:     "Digitel S/A Industria Eletronica",
-       [3]byte{0, 4, 112}:     "ipUnplugged AB",
-       [3]byte{0, 4, 113}:     "IPrad",
-       [3]byte{0, 4, 114}:     "Telelynx, Inc.",
-       [3]byte{0, 4, 115}:     "Photonex Corporation",
-       [3]byte{0, 4, 116}:     "LEGRAND",
-       [3]byte{0, 4, 117}:     "3 Com Corporation",
-       [3]byte{0, 4, 118}:     "3 Com Corporation",
-       [3]byte{0, 4, 119}:     "Scalant Systems, Inc.",
-       [3]byte{0, 4, 120}:     "G. Star Technology Corporation",
-       [3]byte{0, 4, 121}:     "Radius Co., Ltd.",
-       [3]byte{0, 4, 122}:     "AXXESSIT ASA",
-       [3]byte{0, 4, 123}:     "Schlumberger",
-       [3]byte{0, 4, 124}:     "Skidata AG",
-       [3]byte{0, 4, 125}:     "Pelco",
-       [3]byte{0, 4, 126}:     "Siqura B.V.",
-       [3]byte{0, 4, 127}:     "Chr. Mayr GmbH & Co. KG",
-       [3]byte{0, 4, 128}:     "Brocade Communications Systems, Inc.",
-       [3]byte{0, 4, 129}:     "Econolite Control Products, Inc.",
-       [3]byte{0, 4, 130}:     "Medialogic Corp.",
-       [3]byte{0, 4, 131}:     "Deltron Technology, Inc.",
-       [3]byte{0, 4, 132}:     "Amann GmbH",
-       [3]byte{0, 4, 133}:     "PicoLight",
-       [3]byte{0, 4, 134}:     "ITTC, University of Kansas",
-       [3]byte{0, 4, 135}:     "Cogency Semiconductor, Inc.",
-       [3]byte{0, 4, 136}:     "Eurotherm Controls",
-       [3]byte{0, 4, 137}:     "YAFO Networks, Inc.",
-       [3]byte{0, 4, 138}:     "Temia Vertriebs GmbH",
-       [3]byte{0, 4, 139}:     "Poscon Corporation",
-       [3]byte{0, 4, 140}:     "Nayna Networks, Inc.",
-       [3]byte{0, 4, 141}:     "Teo Technologies, Inc",
-       [3]byte{0, 4, 142}:     "Ohm Tech Labs, Inc.",
-       [3]byte{0, 4, 143}:     "TD Systems Corporation",
-       [3]byte{0, 4, 144}:     "Optical Access",
-       [3]byte{0, 4, 145}:     "Technovision, Inc.",
-       [3]byte{0, 4, 146}:     "Hive Internet, Ltd.",
-       [3]byte{0, 4, 147}:     "Tsinghua Unisplendour Co., Ltd.",
-       [3]byte{0, 4, 148}:     "Breezecom, Ltd.",
-       [3]byte{0, 4, 149}:     "Tejas Networks India Limited",
-       [3]byte{0, 4, 150}:     "Extreme Networks, Inc.",
-       [3]byte{0, 4, 151}:     "MacroSystem Digital Video AG",
-       [3]byte{0, 4, 152}:     "Mahi Networks",
-       [3]byte{0, 4, 153}:     "Chino Corporation",
-       [3]byte{0, 4, 154}:     "Cisco Systems, Inc",
-       [3]byte{0, 4, 155}:     "Cisco Systems, Inc",
-       [3]byte{0, 4, 156}:     "Surgient Networks, Inc.",
-       [3]byte{0, 4, 157}:     "Ipanema Technologies",
-       [3]byte{0, 4, 158}:     "Wirelink Co., Ltd.",
-       [3]byte{0, 4, 159}:     "Freescale Semiconductor",
-       [3]byte{0, 4, 160}:     "Verity Instruments, Inc.",
-       [3]byte{0, 4, 161}:     "Pathway Connectivity",
-       [3]byte{0, 4, 162}:     "L.S.I. Japan Co., Ltd.",
-       [3]byte{0, 4, 163}:     "Microchip Technology Inc.",
-       [3]byte{0, 4, 164}:     "NetEnabled, Inc.",
-       [3]byte{0, 4, 165}:     "Barco Projection Systems NV",
-       [3]byte{0, 4, 166}:     "SAF Tehnika Ltd.",
-       [3]byte{0, 4, 167}:     "FabiaTech Corporation",
-       [3]byte{0, 4, 168}:     "Broadmax Technologies, Inc.",
-       [3]byte{0, 4, 169}:     "SandStream Technologies, Inc.",
-       [3]byte{0, 4, 170}:     "Jetstream Communications",
-       [3]byte{0, 4, 171}:     "Comverse Network Systems, Inc.",
-       [3]byte{0, 4, 172}:     "IBM Corp",
-       [3]byte{0, 4, 173}:     "Malibu Networks",
-       [3]byte{0, 4, 174}:     "Sullair Corporation",
-       [3]byte{0, 4, 175}:     "Digital Fountain, Inc.",
-       [3]byte{0, 4, 176}:     "ELESIGN Co., Ltd.",
-       [3]byte{0, 4, 177}:     "Signal Technology, Inc.",
-       [3]byte{0, 4, 178}:     "ESSEGI SRL",
-       [3]byte{0, 4, 179}:     "Videotek, Inc.",
-       [3]byte{0, 4, 180}:     "CIAC",
-       [3]byte{0, 4, 181}:     "Equitrac Corporation",
-       [3]byte{0, 4, 182}:     "Stratex Networks, Inc.",
-       [3]byte{0, 4, 183}:     "AMB i.t. Holding",
-       [3]byte{0, 4, 184}:     "Kumahira Co., Ltd.",
-       [3]byte{0, 4, 185}:     "S.I. Soubou, Inc.",
-       [3]byte{0, 4, 186}:     "KDD Media Will Corporation",
-       [3]byte{0, 4, 187}:     "Bardac Corporation",
-       [3]byte{0, 4, 188}:     "Giantec, Inc.",
-       [3]byte{0, 4, 189}:     "ARRIS Group, Inc.",
-       [3]byte{0, 4, 190}:     "OptXCon, Inc.",
-       [3]byte{0, 4, 191}:     "VersaLogic Corp.",
-       [3]byte{0, 4, 192}:     "Cisco Systems, Inc",
-       [3]byte{0, 4, 193}:     "Cisco Systems, Inc",
-       [3]byte{0, 4, 194}:     "Magnipix, Inc.",
-       [3]byte{0, 4, 195}:     "CASTOR Informatique",
-       [3]byte{0, 4, 196}:     "Allen & Heath Limited",
-       [3]byte{0, 4, 197}:     "ASE Technologies, USA",
-       [3]byte{0, 4, 198}:     "YAMAHA MOTOR CO.,LTD",
-       [3]byte{0, 4, 199}:     "NetMount",
-       [3]byte{0, 4, 200}:     "LIBA Maschinenfabrik GmbH",
-       [3]byte{0, 4, 201}:     "Micro Electron Co., Ltd.",
-       [3]byte{0, 4, 202}:     "FreeMs Corp.",
-       [3]byte{0, 4, 203}:     "Tdsoft Communication, Ltd.",
-       [3]byte{0, 4, 204}:     "Peek Traffic B.V.",
-       [3]byte{0, 4, 205}:     "Extenway Solutions Inc",
-       [3]byte{0, 4, 206}:     "Patria Ailon",
-       [3]byte{0, 4, 207}:     "Seagate Technology",
-       [3]byte{0, 4, 208}:     "Softlink s.r.o.",
-       [3]byte{0, 4, 209}:     "Drew Technologies, Inc.",
-       [3]byte{0, 4, 210}:     "Adcon Telemetry GmbH",
-       [3]byte{0, 4, 211}:     "Toyokeiki Co., Ltd.",
-       [3]byte{0, 4, 212}:     "Proview Electronics Co., Ltd.",
-       [3]byte{0, 4, 213}:     "Hitachi Information & Communication Engineering, Ltd.",
-       [3]byte{0, 4, 214}:     "Takagi Industrial Co., Ltd.",
-       [3]byte{0, 4, 215}:     "Omitec Instrumentation Ltd.",
-       [3]byte{0, 4, 216}:     "IPWireless, Inc.",
-       [3]byte{0, 4, 217}:     "Titan Electronics, Inc.",
-       [3]byte{0, 4, 218}:     "Relax Technology, Inc.",
-       [3]byte{0, 4, 219}:     "Tellus Group Corp.",
-       [3]byte{0, 4, 220}:     "Nortel Networks",
-       [3]byte{0, 4, 221}:     "Cisco Systems, Inc",
-       [3]byte{0, 4, 222}:     "Cisco Systems, Inc",
-       [3]byte{0, 4, 223}:     "Teracom Telematica Ltda.",
-       [3]byte{0, 4, 224}:     "Procket Networks",
-       [3]byte{0, 4, 225}:     "Infinior Microsystems",
-       [3]byte{0, 4, 226}:     "SMC Networks, Inc.",
-       [3]byte{0, 4, 227}:     "Accton Technology Corp",
-       [3]byte{0, 4, 228}:     "Daeryung Ind., Inc.",
-       [3]byte{0, 4, 229}:     "Glonet Systems, Inc.",
-       [3]byte{0, 4, 230}:     "Banyan Network Private Limited",
-       [3]byte{0, 4, 231}:     "Lightpointe Communications, Inc",
-       [3]byte{0, 4, 232}:     "IER, Inc.",
-       [3]byte{0, 4, 233}:     "Infiniswitch Corporation",
-       [3]byte{0, 4, 234}:     "Hewlett Packard",
-       [3]byte{0, 4, 235}:     "Paxonet Communications, Inc.",
-       [3]byte{0, 4, 236}:     "Memobox SA",
-       [3]byte{0, 4, 237}:     "Billion Electric Co., Ltd.",
-       [3]byte{0, 4, 238}:     "Lincoln Electric Company",
-       [3]byte{0, 4, 239}:     "Polestar Corp.",
-       [3]byte{0, 4, 240}:     "International Computers, Ltd",
-       [3]byte{0, 4, 241}:     "WhereNet",
-       [3]byte{0, 4, 242}:     "Polycom",
-       [3]byte{0, 4, 243}:     "FS FORTH-SYSTEME GmbH",
-       [3]byte{0, 4, 244}:     "Infinite Electronics Inc.",
-       [3]byte{0, 4, 245}:     "SnowShore Networks, Inc.",
-       [3]byte{0, 4, 246}:     "Amphus",
-       [3]byte{0, 4, 247}:     "Omega Band, Inc.",
-       [3]byte{0, 4, 248}:     "QUALICABLE TV Industria E Com., Ltda",
-       [3]byte{0, 4, 249}:     "Xtera Communications, Inc.",
-       [3]byte{0, 4, 250}:     "NBS Technologies Inc.",
-       [3]byte{0, 4, 251}:     "Commtech, Inc.",
-       [3]byte{0, 4, 252}:     "Stratus Computer (DE), Inc.",
-       [3]byte{0, 4, 253}:     "Japan Control Engineering Co., Ltd.",
-       [3]byte{0, 4, 254}:     "Pelago Networks",
-       [3]byte{0, 4, 255}:     "Acronet Co., Ltd.",
-       [3]byte{0, 5, 0}:       "Cisco Systems, Inc",
-       [3]byte{0, 5, 1}:       "Cisco Systems, Inc",
-       [3]byte{0, 5, 2}:       "Apple, Inc.",
-       [3]byte{0, 5, 3}:       "ICONAG",
-       [3]byte{0, 5, 4}:       "Naray Information & Communication Enterprise",
-       [3]byte{0, 5, 5}:       "Systems Integration Solutions, Inc.",
-       [3]byte{0, 5, 6}:       "Reddo Networks AB",
-       [3]byte{0, 5, 7}:       "Fine Appliance Corp.",
-       [3]byte{0, 5, 8}:       "Inetcam, Inc.",
-       [3]byte{0, 5, 9}:       "AVOC Nishimura Ltd.",
-       [3]byte{0, 5, 10}:      "ICS Spa",
-       [3]byte{0, 5, 11}:      "SICOM Systems, Inc.",
-       [3]byte{0, 5, 12}:      "Network Photonics, Inc.",
-       [3]byte{0, 5, 13}:      "Midstream Technologies, Inc.",
-       [3]byte{0, 5, 14}:      "3ware, Inc.",
-       [3]byte{0, 5, 15}:      "Tanaka S/S Ltd.",
-       [3]byte{0, 5, 16}:      "Infinite Shanghai Communication Terminals Ltd.",
-       [3]byte{0, 5, 17}:      "Complementary Technologies Ltd",
-       [3]byte{0, 5, 18}:      "Zebra Technologies Inc",
-       [3]byte{0, 5, 19}:      "VTLinx Multimedia Systems, Inc.",
-       [3]byte{0, 5, 20}:      "KDT Systems Co., Ltd.",
-       [3]byte{0, 5, 21}:      "Nuark Co., Ltd.",
-       [3]byte{0, 5, 22}:      "SMART Modular Technologies",
-       [3]byte{0, 5, 23}:      "Shellcomm, Inc.",
-       [3]byte{0, 5, 24}:      "Jupiters Technology",
-       [3]byte{0, 5, 25}:      "Siemens Building Technologies AG,",
-       [3]byte{0, 5, 26}:      "3COM EUROPE LTD.",
-       [3]byte{0, 5, 27}:      "Magic Control Technology Corporation",
-       [3]byte{0, 5, 28}:      "Xnet Technology Corp.",
-       [3]byte{0, 5, 29}:      "Airocon, Inc.",
-       [3]byte{0, 5, 30}:      "Brocade Communications Systems, Inc.",
-       [3]byte{0, 5, 31}:      "Taijin Media Co., Ltd.",
-       [3]byte{0, 5, 32}:      "Smartronix, Inc.",
-       [3]byte{0, 5, 33}:      "Control Microsystems",
-       [3]byte{0, 5, 34}:      "LEA*D Corporation, Inc.",
-       [3]byte{0, 5, 35}:      "AVL List GmbH",
-       [3]byte{0, 5, 36}:      "BTL System (HK) Limited",
-       [3]byte{0, 5, 37}:      "Puretek Industrial Co., Ltd.",
-       [3]byte{0, 5, 38}:      "IPAS GmbH",
-       [3]byte{0, 5, 39}:      "SJ Tek Co. Ltd",
-       [3]byte{0, 5, 40}:      "New Focus, Inc.",
-       [3]byte{0, 5, 41}:      "Shanghai Broadan Communication Technology Co., Ltd",
-       [3]byte{0, 5, 42}:      "Ikegami Tsushinki Co., Ltd.",
-       [3]byte{0, 5, 43}:      "HORIBA, Ltd.",
-       [3]byte{0, 5, 44}:      "Supreme Magic Corporation",
-       [3]byte{0, 5, 45}:      "Zoltrix International Limited",
-       [3]byte{0, 5, 46}:      "Cinta Networks",
-       [3]byte{0, 5, 47}:      "Leviton Network Solutions",
-       [3]byte{0, 5, 48}:      "Andiamo Systems, Inc.",
-       [3]byte{0, 5, 49}:      "Cisco Systems, Inc",
-       [3]byte{0, 5, 50}:      "Cisco Systems, Inc",
-       [3]byte{0, 5, 51}:      "Brocade Communications Systems, Inc.",
-       [3]byte{0, 5, 52}:      "Northstar Engineering Ltd.",
-       [3]byte{0, 5, 53}:      "Chip PC Ltd.",
-       [3]byte{0, 5, 54}:      "Danam Communications, Inc.",
-       [3]byte{0, 5, 55}:      "Nets Technology Co., Ltd.",
-       [3]byte{0, 5, 56}:      "Merilus, Inc.",
-       [3]byte{0, 5, 57}:      "A Brand New World in Sweden AB",
-       [3]byte{0, 5, 58}:      "Willowglen Services Pte Ltd",
-       [3]byte{0, 5, 59}:      "Harbour Networks Ltd., Co. Beijing",
-       [3]byte{0, 5, 60}:      "XIRCOM",
-       [3]byte{0, 5, 61}:      "Agere Systems",
-       [3]byte{0, 5, 62}:      "KID Systeme GmbH",
-       [3]byte{0, 5, 63}:      "VisionTek, Inc.",
-       [3]byte{0, 5, 64}:      "FAST Corporation",
-       [3]byte{0, 5, 65}:      "Advanced Systems Co., Ltd.",
-       [3]byte{0, 5, 66}:      "Otari, Inc.",
-       [3]byte{0, 5, 67}:      "IQ Wireless GmbH",
-       [3]byte{0, 5, 68}:      "Valley Technologies, Inc.",
-       [3]byte{0, 5, 69}:      "Internet Photonics",
-       [3]byte{0, 5, 70}:      "KDDI Network & Solultions Inc.",
-       [3]byte{0, 5, 71}:      "Starent Networks",
-       [3]byte{0, 5, 72}:      "Disco Corporation",
-       [3]byte{0, 5, 73}:      "Salira Optical Network Systems",
-       [3]byte{0, 5, 74}:      "Ario Data Networks, Inc.",
-       [3]byte{0, 5, 75}:      "Eaton Automation AG",
-       [3]byte{0, 5, 76}:      "RF Innovations Pty Ltd",
-       [3]byte{0, 5, 77}:      "Brans Technologies, Inc.",
-       [3]byte{0, 5, 78}:      "Philips",
-       [3]byte{0, 5, 79}:      "Garmin International",
-       [3]byte{0, 5, 80}:      "Vcomms Connect Limited",
-       [3]byte{0, 5, 81}:      "F & S Elektronik Systeme GmbH",
-       [3]byte{0, 5, 82}:      "Xycotec Computer GmbH",
-       [3]byte{0, 5, 83}:      "DVC Company, Inc.",
-       [3]byte{0, 5, 84}:      "Rangestar Wireless",
-       [3]byte{0, 5, 85}:      "Japan Cash Machine Co., Ltd.",
-       [3]byte{0, 5, 86}:      "360 Systems",
-       [3]byte{0, 5, 87}:      "Agile TV Corporation",
-       [3]byte{0, 5, 88}:      "Synchronous, Inc.",
-       [3]byte{0, 5, 89}:      "Intracom S.A.",
-       [3]byte{0, 5, 90}:      "Power Dsine Ltd.",
-       [3]byte{0, 5, 91}:      "Charles Industries, Ltd.",
-       [3]byte{0, 5, 92}:      "Kowa Company, Ltd.",
-       [3]byte{0, 5, 93}:      "D-LINK SYSTEMS, INC.",
-       [3]byte{0, 5, 94}:      "Cisco Systems, Inc",
-       [3]byte{0, 5, 95}:      "Cisco Systems, Inc",
-       [3]byte{0, 5, 96}:      "LEADER COMM.CO., LTD",
-       [3]byte{0, 5, 97}:      "nac Image Technology, Inc.",
-       [3]byte{0, 5, 98}:      "Digital View Limited",
-       [3]byte{0, 5, 99}:      "J-Works, Inc.",
-       [3]byte{0, 5, 100}:     "Tsinghua Bitway Co., Ltd.",
-       [3]byte{0, 5, 101}:     "Tailyn Communication Company Ltd.",
-       [3]byte{0, 5, 102}:     "Secui.com Corporation",
-       [3]byte{0, 5, 103}:     "Etymonic Design, Inc.",
-       [3]byte{0, 5, 104}:     "Piltofish Networks AB",
-       [3]byte{0, 5, 105}:     "VMware, Inc.",
-       [3]byte{0, 5, 106}:     "Heuft Systemtechnik GmbH",
-       [3]byte{0, 5, 107}:     "C.P. Technology Co., Ltd.",
-       [3]byte{0, 5, 108}:     "Hung Chang Co., Ltd.",
-       [3]byte{0, 5, 109}:     "Pacific Corporation",
-       [3]byte{0, 5, 110}:     "National Enhance Technology, Inc.",
-       [3]byte{0, 5, 111}:     "Innomedia Technologies Pvt. Ltd.",
-       [3]byte{0, 5, 112}:     "Baydel Ltd.",
-       [3]byte{0, 5, 113}:     "Seiwa Electronics Co.",
-       [3]byte{0, 5, 114}:     "Deonet Co., Ltd.",
-       [3]byte{0, 5, 115}:     "Cisco Systems, Inc",
-       [3]byte{0, 5, 116}:     "Cisco Systems, Inc",
-       [3]byte{0, 5, 117}:     "CDS-Electronics BV",
-       [3]byte{0, 5, 118}:     "NSM Technology Ltd.",
-       [3]byte{0, 5, 119}:     "SM Information & Communication",
-       [3]byte{0, 5, 120}:     "Private",
-       [3]byte{0, 5, 121}:     "Universal Control Solution Corp.",
-       [3]byte{0, 5, 122}:     "Overture Networks",
-       [3]byte{0, 5, 123}:     "Chung Nam Electronic Co., Ltd.",
-       [3]byte{0, 5, 124}:     "RCO Security AB",
-       [3]byte{0, 5, 125}:     "Sun Communications, Inc.",
-       [3]byte{0, 5, 126}:     "Eckelmann Steuerungstechnik GmbH",
-       [3]byte{0, 5, 127}:     "Acqis Technology",
-       [3]byte{0, 5, 128}:     "FibroLAN Ltd.",
-       [3]byte{0, 5, 129}:     "Snell",
-       [3]byte{0, 5, 130}:     "ClearCube Technology",
-       [3]byte{0, 5, 131}:     "ImageCom Limited",
-       [3]byte{0, 5, 132}:     "AbsoluteValue Systems, Inc.",
-       [3]byte{0, 5, 133}:     "Juniper Networks",
-       [3]byte{0, 5, 134}:     "Lucent Technologies",
-       [3]byte{0, 5, 135}:     "Locus, Incorporated",
-       [3]byte{0, 5, 136}:     "Sensoria Corp.",
-       [3]byte{0, 5, 137}:     "National Datacomputer",
-       [3]byte{0, 5, 138}:     "Netcom Co., Ltd.",
-       [3]byte{0, 5, 139}:     "IPmental, Inc.",
-       [3]byte{0, 5, 140}:     "Opentech Inc.",
-       [3]byte{0, 5, 141}:     "Lynx Photonic Networks, Inc.",
-       [3]byte{0, 5, 142}:     "Flextronics International GmbH & Co. Nfg. KG",
-       [3]byte{0, 5, 143}:     "CLCsoft co.",
-       [3]byte{0, 5, 144}:     "Swissvoice Ltd.",
-       [3]byte{0, 5, 145}:     "Active Silicon Ltd",
-       [3]byte{0, 5, 146}:     "Pultek Corp.",
-       [3]byte{0, 5, 147}:     "Grammar Engine Inc.",
-       [3]byte{0, 5, 148}:     "HMS Industrial Networks",
-       [3]byte{0, 5, 149}:     "Alesis Corporation",
-       [3]byte{0, 5, 150}:     "Genotech Co., Ltd.",
-       [3]byte{0, 5, 151}:     "Eagle Traffic Control Systems",
-       [3]byte{0, 5, 152}:     "CRONOS S.r.l.",
-       [3]byte{0, 5, 153}:     "DRS Test and Energy Management or DRS-TEM",
-       [3]byte{0, 5, 154}:     "Cisco Systems, Inc",
-       [3]byte{0, 5, 155}:     "Cisco Systems, Inc",
-       [3]byte{0, 5, 156}:     "Kleinknecht GmbH, Ing. Büro",
-       [3]byte{0, 5, 157}:     "Daniel Computing Systems, Inc.",
-       [3]byte{0, 5, 158}:     "Zinwell Corporation",
-       [3]byte{0, 5, 159}:     "Yotta Networks, Inc.",
-       [3]byte{0, 5, 160}:     "MOBILINE Kft.",
-       [3]byte{0, 5, 161}:     "Zenocom",
-       [3]byte{0, 5, 162}:     "CELOX Networks",
-       [3]byte{0, 5, 163}:     "QEI, Inc.",
-       [3]byte{0, 5, 164}:     "Lucid Voice Ltd.",
-       [3]byte{0, 5, 165}:     "KOTT",
-       [3]byte{0, 5, 166}:     "Extron Electronics",
-       [3]byte{0, 5, 167}:     "HYPERCHIP Inc.",
-       [3]byte{0, 5, 168}:     "WYLE ELECTRONICS",
-       [3]byte{0, 5, 169}:     "Princeton Networks, Inc.",
-       [3]byte{0, 5, 170}:     "Moore Industries International Inc.",
-       [3]byte{0, 5, 171}:     "Cyber Fone, Inc.",
-       [3]byte{0, 5, 172}:     "Northern Digital, Inc.",
-       [3]byte{0, 5, 173}:     "Topspin Communications, Inc.",
-       [3]byte{0, 5, 174}:     "Mediaport USA",
-       [3]byte{0, 5, 175}:     "InnoScan Computing A/S",
-       [3]byte{0, 5, 176}:     "Korea Computer Technology Co., Ltd.",
-       [3]byte{0, 5, 177}:     "ASB Technology BV",
-       [3]byte{0, 5, 178}:     "Medison Co., Ltd.",
-       [3]byte{0, 5, 179}:     "Asahi-Engineering Co., Ltd.",
-       [3]byte{0, 5, 180}:     "Aceex Corporation",
-       [3]byte{0, 5, 181}:     "Broadcom Technologies",
-       [3]byte{0, 5, 182}:     "INSYS Microelectronics GmbH",
-       [3]byte{0, 5, 183}:     "Arbor Technology Corp.",
-       [3]byte{0, 5, 184}:     "Electronic Design Associates, Inc.",
-       [3]byte{0, 5, 185}:     "Airvana, Inc.",
-       [3]byte{0, 5, 186}:     "Area Netwoeks, Inc.",
-       [3]byte{0, 5, 187}:     "Myspace AB",
-       [3]byte{0, 5, 188}:     "Resource Data Management Ltd",
-       [3]byte{0, 5, 189}:     "ROAX BV",
-       [3]byte{0, 5, 190}:     "Kongsberg Seatex AS",
-       [3]byte{0, 5, 191}:     "JustEzy Technology, Inc.",
-       [3]byte{0, 5, 192}:     "Digital Network Alacarte Co., Ltd.",
-       [3]byte{0, 5, 193}:     "A-Kyung Motion, Inc.",
-       [3]byte{0, 5, 194}:     "Soronti, Inc.",
-       [3]byte{0, 5, 195}:     "Pacific Instruments, Inc.",
-       [3]byte{0, 5, 196}:     "Telect, Inc.",
-       [3]byte{0, 5, 197}:     "Flaga HF",
-       [3]byte{0, 5, 198}:     "Triz Communications",
-       [3]byte{0, 5, 199}:     "I/F-COM A/S",
-       [3]byte{0, 5, 200}:     "VERYTECH",
-       [3]byte{0, 5, 201}:     "LG Innotek Co., Ltd.",
-       [3]byte{0, 5, 202}:     "Hitron Technology, Inc.",
-       [3]byte{0, 5, 203}:     "ROIS Technologies, Inc.",
-       [3]byte{0, 5, 204}:     "Sumtel Communications, Inc.",
-       [3]byte{0, 5, 205}:     "D&M Holdings Inc.",
-       [3]byte{0, 5, 206}:     "Prolink Microsystems Corporation",
-       [3]byte{0, 5, 207}:     "Thunder River Technologies, Inc.",
-       [3]byte{0, 5, 208}:     "Solinet Systems",
-       [3]byte{0, 5, 209}:     "Metavector Technologies",
-       [3]byte{0, 5, 210}:     "DAP Technologies",
-       [3]byte{0, 5, 211}:     "eProduction Solutions, Inc.",
-       [3]byte{0, 5, 212}:     "FutureSmart Networks, Inc.",
-       [3]byte{0, 5, 213}:     "Speedcom Wireless",
-       [3]byte{0, 5, 214}:     "L-3 Linkabit",
-       [3]byte{0, 5, 215}:     "Vista Imaging, Inc.",
-       [3]byte{0, 5, 216}:     "Arescom, Inc.",
-       [3]byte{0, 5, 217}:     "Techno Valley, Inc.",
-       [3]byte{0, 5, 218}:     "Apex Automationstechnik",
-       [3]byte{0, 5, 219}:     "PSI Nentec GmbH",
-       [3]byte{0, 5, 220}:     "Cisco Systems, Inc",
-       [3]byte{0, 5, 221}:     "Cisco Systems, Inc",
-       [3]byte{0, 5, 222}:     "Gi Fone Korea, Inc.",
-       [3]byte{0, 5, 223}:     "Electronic Innovation, Inc.",
-       [3]byte{0, 5, 224}:     "Empirix Corp.",
-       [3]byte{0, 5, 225}:     "Trellis Photonics, Ltd.",
-       [3]byte{0, 5, 226}:     "Creativ Network Technologies",
-       [3]byte{0, 5, 227}:     "LightSand Communications, Inc.",
-       [3]byte{0, 5, 228}:     "Red Lion Controls Inc.",
-       [3]byte{0, 5, 229}:     "Renishaw PLC",
-       [3]byte{0, 5, 230}:     "Egenera, Inc.",
-       [3]byte{0, 5, 231}:     "Netrake an AudioCodes Company",
-       [3]byte{0, 5, 232}:     "TurboWave, Inc.",
-       [3]byte{0, 5, 233}:     "Unicess Network, Inc.",
-       [3]byte{0, 5, 234}:     "Rednix",
-       [3]byte{0, 5, 235}:     "Blue Ridge Networks, Inc.",
-       [3]byte{0, 5, 236}:     "Mosaic Systems Inc.",
-       [3]byte{0, 5, 237}:     "Technikum Joanneum GmbH",
-       [3]byte{0, 5, 238}:     "Vanderbilt International (SWE) AB",
-       [3]byte{0, 5, 239}:     "ADOIR Digital Technology",
-       [3]byte{0, 5, 240}:     "SATEC",
-       [3]byte{0, 5, 241}:     "Vrcom, Inc.",
-       [3]byte{0, 5, 242}:     "Power R, Inc.",
-       [3]byte{0, 5, 243}:     "Webyn",
-       [3]byte{0, 5, 244}:     "System Base Co., Ltd.",
-       [3]byte{0, 5, 245}:     "Geospace Technologies",
-       [3]byte{0, 5, 246}:     "Young Chang Co. Ltd.",
-       [3]byte{0, 5, 247}:     "Analog Devices, Inc.",
-       [3]byte{0, 5, 248}:     "Real Time Access, Inc.",
-       [3]byte{0, 5, 249}:     "TOA Corporation",
-       [3]byte{0, 5, 250}:     "IPOptical, Inc.",
-       [3]byte{0, 5, 251}:     "ShareGate, Inc.",
-       [3]byte{0, 5, 252}:     "Schenck Pegasus Corp.",
-       [3]byte{0, 5, 253}:     "PacketLight Networks Ltd.",
-       [3]byte{0, 5, 254}:     "Traficon N.V.",
-       [3]byte{0, 5, 255}:     "SNS Solutions, Inc.",
-       [3]byte{0, 6, 0}:       "Toshiba Teli Corporation",
-       [3]byte{0, 6, 1}:       "Otanikeiki Co., Ltd.",
-       [3]byte{0, 6, 2}:       "Cirkitech Electronics Co.",
-       [3]byte{0, 6, 3}:       "Baker Hughes Inc.",
-       [3]byte{0, 6, 4}:       "@Track Communications, Inc.",
-       [3]byte{0, 6, 5}:       "Inncom International, Inc.",
-       [3]byte{0, 6, 6}:       "RapidWAN, Inc.",
-       [3]byte{0, 6, 7}:       "Omni Directional Control Technology Inc.",
-       [3]byte{0, 6, 8}:       "At-Sky SAS",
-       [3]byte{0, 6, 9}:       "Crossport Systems",
-       [3]byte{0, 6, 10}:      "Blue2space",
-       [3]byte{0, 6, 11}:      "Artesyn Embedded Technologies",
-       [3]byte{0, 6, 12}:      "Melco Industries, Inc.",
-       [3]byte{0, 6, 13}:      "Wave7 Optics",
-       [3]byte{0, 6, 14}:      "IGYS Systems, Inc.",
-       [3]byte{0, 6, 15}:      "Narad Networks Inc",
-       [3]byte{0, 6, 16}:      "Abeona Networks Inc",
-       [3]byte{0, 6, 17}:      "Zeus Wireless, Inc.",
-       [3]byte{0, 6, 18}:      "Accusys, Inc.",
-       [3]byte{0, 6, 19}:      "Kawasaki Microelectronics Incorporated",
-       [3]byte{0, 6, 20}:      "Prism Holdings",
-       [3]byte{0, 6, 21}:      "Kimoto Electric Co., Ltd.",
-       [3]byte{0, 6, 22}:      "Tel Net Co., Ltd.",
-       [3]byte{0, 6, 23}:      "Redswitch Inc.",
-       [3]byte{0, 6, 24}:      "DigiPower Manufacturing Inc.",
-       [3]byte{0, 6, 25}:      "Connection Technology Systems",
-       [3]byte{0, 6, 26}:      "Zetari Inc.",
-       [3]byte{0, 6, 27}:      "Notebook Development Lab.  Lenovo Japan Ltd.",
-       [3]byte{0, 6, 28}:      "Hoshino Metal Industries, Ltd.",
-       [3]byte{0, 6, 29}:      "MIP Telecom, Inc.",
-       [3]byte{0, 6, 30}:      "Maxan Systems",
-       [3]byte{0, 6, 31}:      "Vision Components GmbH",
-       [3]byte{0, 6, 32}:      "Serial System Ltd.",
-       [3]byte{0, 6, 33}:      "Hinox, Co., Ltd.",
-       [3]byte{0, 6, 34}:      "Chung Fu Chen Yeh Enterprise Corp.",
-       [3]byte{0, 6, 35}:      "MGE UPS Systems France",
-       [3]byte{0, 6, 36}:      "Gentner Communications Corp.",
-       [3]byte{0, 6, 37}:      "The Linksys Group, Inc.",
-       [3]byte{0, 6, 38}:      "MWE GmbH",
-       [3]byte{0, 6, 39}:      "Uniwide Technologies, Inc.",
-       [3]byte{0, 6, 40}:      "Cisco Systems, Inc",
-       [3]byte{0, 6, 41}:      "IBM Corp",
-       [3]byte{0, 6, 42}:      "Cisco Systems, Inc",
-       [3]byte{0, 6, 43}:      "INTRASERVER TECHNOLOGY",
-       [3]byte{0, 6, 44}:      "Bivio Networks",
-       [3]byte{0, 6, 45}:      "TouchStar Technologies, L.L.C.",
-       [3]byte{0, 6, 46}:      "Aristos Logic Corp.",
-       [3]byte{0, 6, 47}:      "Pivotech Systems Inc.",
-       [3]byte{0, 6, 48}:      "Adtranz Sweden",
-       [3]byte{0, 6, 49}:      "Calix Inc.",
-       [3]byte{0, 6, 50}:      "Mesco Engineering GmbH",
-       [3]byte{0, 6, 51}:      "Cross Match Technologies GmbH",
-       [3]byte{0, 6, 52}:      "GTE Airfone Inc.",
-       [3]byte{0, 6, 53}:      "PacketAir Networks, Inc.",
-       [3]byte{0, 6, 54}:      "Jedai Broadband Networks",
-       [3]byte{0, 6, 55}:      "Toptrend-Meta Information (ShenZhen) Inc.",
-       [3]byte{0, 6, 56}:      "Sungjin C&C Co., Ltd.",
-       [3]byte{0, 6, 57}:      "Newtec",
-       [3]byte{0, 6, 58}:      "Dura Micro, Inc.",
-       [3]byte{0, 6, 59}:      "Arcturus Networks Inc.",
-       [3]byte{0, 6, 60}:      "Intrinsyc Software International Inc.",
-       [3]byte{0, 6, 61}:      "Microwave Data Systems Inc.",
-       [3]byte{0, 6, 62}:      "Opthos Inc.",
-       [3]byte{0, 6, 63}:      "Everex Communications Inc.",
-       [3]byte{0, 6, 64}:      "White Rock Networks",
-       [3]byte{0, 6, 65}:      "ITCN",
-       [3]byte{0, 6, 66}:      "Genetel Systems Inc.",
-       [3]byte{0, 6, 67}:      "SONO Computer Co., Ltd.",
-       [3]byte{0, 6, 68}:      "neix,Inc",
-       [3]byte{0, 6, 69}:      "Meisei Electric Co. Ltd.",
-       [3]byte{0, 6, 70}:      "ShenZhen XunBao Network Technology Co Ltd",
-       [3]byte{0, 6, 71}:      "Etrali S.A.",
-       [3]byte{0, 6, 72}:      "Seedsware, Inc.",
-       [3]byte{0, 6, 73}:      "3M Deutschland GmbH",
-       [3]byte{0, 6, 74}:      "Honeywell Co., Ltd. (KOREA)",
-       [3]byte{0, 6, 75}:      "Alexon Co., Ltd.",
-       [3]byte{0, 6, 76}:      "Invicta Networks, Inc.",
-       [3]byte{0, 6, 77}:      "Sencore",
-       [3]byte{0, 6, 78}:      "Broad Net Technology Inc.",
-       [3]byte{0, 6, 79}:      "PRO-NETS Technology Corporation",
-       [3]byte{0, 6, 80}:      "Tiburon Networks, Inc.",
-       [3]byte{0, 6, 81}:      "Aspen Networks Inc.",
-       [3]byte{0, 6, 82}:      "Cisco Systems, Inc",
-       [3]byte{0, 6, 83}:      "Cisco Systems, Inc",
-       [3]byte{0, 6, 84}:      "Winpresa Building Automation Technologies GmbH",
-       [3]byte{0, 6, 85}:      "Yipee, Inc.",
-       [3]byte{0, 6, 86}:      "Tactel AB",
-       [3]byte{0, 6, 87}:      "Market Central, Inc.",
-       [3]byte{0, 6, 88}:      "Helmut Fischer GmbH Institut für Elektronik und Messtechnik",
-       [3]byte{0, 6, 89}:      "EAL (Apeldoorn) B.V.",
-       [3]byte{0, 6, 90}:      "Strix Systems",
-       [3]byte{0, 6, 91}:      "Dell Inc.",
-       [3]byte{0, 6, 92}:      "Malachite Technologies, Inc.",
-       [3]byte{0, 6, 93}:      "Heidelberg Web Systems",
-       [3]byte{0, 6, 94}:      "Photuris, Inc.",
-       [3]byte{0, 6, 95}:      "ECI Telecom Ltd.",
-       [3]byte{0, 6, 96}:      "NADEX Co., Ltd.",
-       [3]byte{0, 6, 97}:      "NIA Home Technologies Corp.",
-       [3]byte{0, 6, 98}:      "MBM Technology Ltd.",
-       [3]byte{0, 6, 99}:      "Human Technology Co., Ltd.",
-       [3]byte{0, 6, 100}:     "Fostex Corporation",
-       [3]byte{0, 6, 101}:     "Sunny Giken, Inc.",
-       [3]byte{0, 6, 102}:     "Roving Networks",
-       [3]byte{0, 6, 103}:     "Tripp Lite",
-       [3]byte{0, 6, 104}:     "Vicon Industries Inc.",
-       [3]byte{0, 6, 105}:     "Datasound Laboratories Ltd",
-       [3]byte{0, 6, 106}:     "InfiniCon Systems, Inc.",
-       [3]byte{0, 6, 107}:     "Sysmex Corporation",
-       [3]byte{0, 6, 108}:     "Robinson Corporation",
-       [3]byte{0, 6, 109}:     "Compuprint S.P.A.",
-       [3]byte{0, 6, 110}:     "Delta Electronics, Inc.",
-       [3]byte{0, 6, 111}:     "Korea Data Systems",
-       [3]byte{0, 6, 112}:     "Upponetti Oy",
-       [3]byte{0, 6, 113}:     "Softing AG",
-       [3]byte{0, 6, 114}:     "Netezza",
-       [3]byte{0, 6, 115}:     "TKH Security Solutions USA",
-       [3]byte{0, 6, 116}:     "Spectrum Control, Inc.",
-       [3]byte{0, 6, 117}:     "Banderacom, Inc.",
-       [3]byte{0, 6, 118}:     "Novra Technologies Inc.",
-       [3]byte{0, 6, 119}:     "SICK AG",
-       [3]byte{0, 6, 120}:     "D&M Holdings Inc.",
-       [3]byte{0, 6, 121}:     "Konami Corporation",
-       [3]byte{0, 6, 122}:     "JMP Systems",
-       [3]byte{0, 6, 123}:     "Toplink C&C Corporation",
-       [3]byte{0, 6, 124}:     "Cisco Systems, Inc",
-       [3]byte{0, 6, 125}:     "Takasago Ltd.",
-       [3]byte{0, 6, 126}:     "WinCom Systems, Inc.",
-       [3]byte{0, 6, 127}:     "Digeo, Inc.",
-       [3]byte{0, 6, 128}:     "Card Access, Inc.",
-       [3]byte{0, 6, 129}:     "Goepel Electronic GmbH",
-       [3]byte{0, 6, 130}:     "Convedia",
-       [3]byte{0, 6, 131}:     "Bravara Communications, Inc.",
-       [3]byte{0, 6, 132}:     "Biacore AB",
-       [3]byte{0, 6, 133}:     "NetNearU Corporation",
-       [3]byte{0, 6, 134}:     "ZARDCOM Co., Ltd.",
-       [3]byte{0, 6, 135}:     "Omnitron Systems Technology, Inc.",
-       [3]byte{0, 6, 136}:     "Telways Communication Co., Ltd.",
-       [3]byte{0, 6, 137}:     "yLez Technologies Pte Ltd",
-       [3]byte{0, 6, 138}:     "NeuronNet Co. Ltd. R&D Center",
-       [3]byte{0, 6, 139}:     "AirRunner Technologies, Inc.",
-       [3]byte{0, 6, 140}:     "3COM CORPORATION",
-       [3]byte{0, 6, 141}:     "SEPATON, Inc.",
-       [3]byte{0, 6, 142}:     "HID Corporation",
-       [3]byte{0, 6, 143}:     "Telemonitor, Inc.",
-       [3]byte{0, 6, 144}:     "Euracom Communication GmbH",
-       [3]byte{0, 6, 145}:     "PT Inovacao",
-       [3]byte{0, 6, 146}:     "Intruvert Networks, Inc.",
-       [3]byte{0, 6, 147}:     "Flexus Computer Technology, Inc.",
-       [3]byte{0, 6, 148}:     "Mobillian Corporation",
-       [3]byte{0, 6, 149}:     "Ensure Technologies, Inc.",
-       [3]byte{0, 6, 150}:     "Advent Networks",
-       [3]byte{0, 6, 151}:     "R & D Center",
-       [3]byte{0, 6, 152}:     "egnite GmbH",
-       [3]byte{0, 6, 153}:     "Vida Design Co.",
-       [3]byte{0, 6, 154}:     "e & Tel",
-       [3]byte{0, 6, 155}:     "AVT Audio Video Technologies GmbH",
-       [3]byte{0, 6, 156}:     "Transmode Systems AB",
-       [3]byte{0, 6, 157}:     "Petards Ltd",
-       [3]byte{0, 6, 158}:     "UNIQA, Inc.",
-       [3]byte{0, 6, 159}:     "Kuokoa Networks",
-       [3]byte{0, 6, 160}:     "Mx Imaging",
-       [3]byte{0, 6, 161}:     "Celsian Technologies, Inc.",
-       [3]byte{0, 6, 162}:     "Microtune, Inc.",
-       [3]byte{0, 6, 163}:     "Bitran Corporation",
-       [3]byte{0, 6, 164}:     "INNOWELL Corp.",
-       [3]byte{0, 6, 165}:     "PINON Corp.",
-       [3]byte{0, 6, 166}:     "Artistic Licence Engineering Ltd",
-       [3]byte{0, 6, 167}:     "Primarion",
-       [3]byte{0, 6, 168}:     "KC Technology, Inc.",
-       [3]byte{0, 6, 169}:     "Universal Instruments Corp.",
-       [3]byte{0, 6, 170}:     "VT Miltope",
-       [3]byte{0, 6, 171}:     "W-Link Systems, Inc.",
-       [3]byte{0, 6, 172}:     "Intersoft Co.",
-       [3]byte{0, 6, 173}:     "KB Electronics Ltd.",
-       [3]byte{0, 6, 174}:     "Himachal Futuristic Communications Ltd",
-       [3]byte{0, 6, 175}:     "Xalted Networks",
-       [3]byte{0, 6, 176}:     "Comtech EF Data Corp.",
-       [3]byte{0, 6, 177}:     "Sonicwall",
-       [3]byte{0, 6, 178}:     "Linxtek Co.",
-       [3]byte{0, 6, 179}:     "Diagraph Corporation",
-       [3]byte{0, 6, 180}:     "Vorne Industries, Inc.",
-       [3]byte{0, 6, 181}:     "Source Photonics, Inc.",
-       [3]byte{0, 6, 182}:     "Nir-Or Israel Ltd.",
-       [3]byte{0, 6, 183}:     "TELEM GmbH",
-       [3]byte{0, 6, 184}:     "Bandspeed Pty Ltd",
-       [3]byte{0, 6, 185}:     "A5TEK Corp.",
-       [3]byte{0, 6, 186}:     "Westwave Communications",
-       [3]byte{0, 6, 187}:     "ATI Technologies Inc.",
-       [3]byte{0, 6, 188}:     "Macrolink, Inc.",
-       [3]byte{0, 6, 189}:     "BNTECHNOLOGY Co., Ltd.",
-       [3]byte{0, 6, 190}:     "Baumer Optronic GmbH",
-       [3]byte{0, 6, 191}:     "Accella Technologies Co., Ltd.",
-       [3]byte{0, 6, 192}:     "United Internetworks, Inc.",
-       [3]byte{0, 6, 193}:     "Cisco Systems, Inc",
-       [3]byte{0, 6, 194}:     "Smartmatic Corporation",
-       [3]byte{0, 6, 195}:     "Schindler Elevator Ltd.",
-       [3]byte{0, 6, 196}:     "Piolink Inc.",
-       [3]byte{0, 6, 197}:     "INNOVI Technologies Limited",
-       [3]byte{0, 6, 198}:     "lesswire AG",
-       [3]byte{0, 6, 199}:     "RFNET Technologies Pte Ltd (S)",
-       [3]byte{0, 6, 200}:     "Sumitomo Metal Micro Devices, Inc.",
-       [3]byte{0, 6, 201}:     "Technical Marketing Research, Inc.",
-       [3]byte{0, 6, 202}:     "American Computer & Digital Components, Inc. (ACDC)",
-       [3]byte{0, 6, 203}:     "Jotron Electronics A/S",
-       [3]byte{0, 6, 204}:     "JMI Electronics Co., Ltd.",
-       [3]byte{0, 6, 205}:     "Leaf Imaging Ltd.",
-       [3]byte{0, 6, 206}:     "DATENO",
-       [3]byte{0, 6, 207}:     "Thales Avionics In-Flight Systems, LLC",
-       [3]byte{0, 6, 208}:     "Elgar Electronics Corp.",
-       [3]byte{0, 6, 209}:     "Tahoe Networks, Inc.",
-       [3]byte{0, 6, 210}:     "Tundra Semiconductor Corp.",
-       [3]byte{0, 6, 211}:     "Alpha Telecom, Inc. U.S.A.",
-       [3]byte{0, 6, 212}:     "Interactive Objects, Inc.",
-       [3]byte{0, 6, 213}:     "Diamond Systems Corp.",
-       [3]byte{0, 6, 214}:     "Cisco Systems, Inc",
-       [3]byte{0, 6, 215}:     "Cisco Systems, Inc",
-       [3]byte{0, 6, 216}:     "Maple Optical Systems",
-       [3]byte{0, 6, 217}:     "IPM-Net S.p.A.",
-       [3]byte{0, 6, 218}:     "ITRAN Communications Ltd.",
-       [3]byte{0, 6, 219}:     "ICHIPS Co., Ltd.",
-       [3]byte{0, 6, 220}:     "Syabas Technology (Amquest)",
-       [3]byte{0, 6, 221}:     "AT & T Laboratories - Cambridge Ltd",
-       [3]byte{0, 6, 222}:     "Flash Technology",
-       [3]byte{0, 6, 223}:     "AIDONIC Corporation",
-       [3]byte{0, 6, 224}:     "MAT Co., Ltd.",
-       [3]byte{0, 6, 225}:     "Techno Trade s.a",
-       [3]byte{0, 6, 226}:     "Ceemax Technology Co., Ltd.",
-       [3]byte{0, 6, 227}:     "Quantitative Imaging Corporation",
-       [3]byte{0, 6, 228}:     "Citel Technologies Ltd.",
-       [3]byte{0, 6, 229}:     "Fujian Newland Computer Ltd. Co.",
-       [3]byte{0, 6, 230}:     "DongYang Telecom Co., Ltd.",
-       [3]byte{0, 6, 231}:     "Bit Blitz Communications Inc.",
-       [3]byte{0, 6, 232}:     "Optical Network Testing, Inc.",
-       [3]byte{0, 6, 233}:     "Intime Corp.",
-       [3]byte{0, 6, 234}:     "ELZET80 Mikrocomputer GmbH&Co. KG",
-       [3]byte{0, 6, 235}:     "Global Data",
-       [3]byte{0, 6, 236}:     "Harris Corporation",
-       [3]byte{0, 6, 237}:     "Inara Networks",
-       [3]byte{0, 6, 238}:     "Shenyang Neu-era Information & Technology Stock Co., Ltd",
-       [3]byte{0, 6, 239}:     "Maxxan Systems, Inc.",
-       [3]byte{0, 6, 240}:     "Digeo, Inc.",
-       [3]byte{0, 6, 241}:     "Optillion",
-       [3]byte{0, 6, 242}:     "Platys Communications",
-       [3]byte{0, 6, 243}:     "AcceLight Networks",
-       [3]byte{0, 6, 244}:     "Prime Electronics & Satellitics Inc.",
-       [3]byte{0, 6, 245}:     "ALPS ELECTRIC CO.,LTD.",
-       [3]byte{0, 6, 246}:     "Cisco Systems, Inc",
-       [3]byte{0, 6, 247}:     "ALPS ELECTRIC CO.,LTD.",
-       [3]byte{0, 6, 248}:     "The Boeing Company",
-       [3]byte{0, 6, 249}:     "Mitsui Zosen Systems Research Inc.",
-       [3]byte{0, 6, 250}:     "IP SQUARE Co, Ltd.",
-       [3]byte{0, 6, 251}:     "Hitachi Printing Solutions, Ltd.",
-       [3]byte{0, 6, 252}:     "Fnet Co., Ltd.",
-       [3]byte{0, 6, 253}:     "Comjet Information Systems Corp.",
-       [3]byte{0, 6, 254}:     "Ambrado, Inc",
-       [3]byte{0, 6, 255}:     "Sheba Systems Co., Ltd.",
-       [3]byte{0, 7, 0}:       "Zettamedia Korea",
-       [3]byte{0, 7, 1}:       "RACAL-DATACOM",
-       [3]byte{0, 7, 2}:       "Varian Medical Systems",
-       [3]byte{0, 7, 3}:       "CSEE Transport",
-       [3]byte{0, 7, 4}:       "ALPS ELECTRIC CO.,LTD.",
-       [3]byte{0, 7, 5}:       "Endress & Hauser GmbH & Co",
-       [3]byte{0, 7, 6}:       "Sanritz Corporation",
-       [3]byte{0, 7, 7}:       "Interalia Inc.",
-       [3]byte{0, 7, 8}:       "Bitrage Inc.",
-       [3]byte{0, 7, 9}:       "Westerstrand Urfabrik AB",
-       [3]byte{0, 7, 10}:      "Unicom Automation Co., Ltd.",
-       [3]byte{0, 7, 11}:      "Novabase SGPS, SA",
-       [3]byte{0, 7, 12}:      "SVA-Intrusion.com Co. Ltd.",
-       [3]byte{0, 7, 13}:      "Cisco Systems, Inc",
-       [3]byte{0, 7, 14}:      "Cisco Systems, Inc",
-       [3]byte{0, 7, 15}:      "Fujant, Inc.",
-       [3]byte{0, 7, 16}:      "Adax, Inc.",
-       [3]byte{0, 7, 17}:      "Acterna",
-       [3]byte{0, 7, 18}:      "JAL Information Technology",
-       [3]byte{0, 7, 19}:      "IP One, Inc.",
-       [3]byte{0, 7, 20}:      "Brightcom",
-       [3]byte{0, 7, 21}:      "General Research of Electronics, Inc.",
-       [3]byte{0, 7, 22}:      "J & S Marine Ltd.",
-       [3]byte{0, 7, 23}:      "Wieland Electric GmbH",
-       [3]byte{0, 7, 24}:      "iCanTek Co., Ltd.",
-       [3]byte{0, 7, 25}:      "Mobiis Co., Ltd.",
-       [3]byte{0, 7, 26}:      "Finedigital Inc.",
-       [3]byte{0, 7, 27}:      "CDVI Americas Ltd",
-       [3]byte{0, 7, 28}:      "AT&T",
-       [3]byte{0, 7, 29}:      "Satelsa Sistemas Y Aplicaciones De Telecomunicaciones, S.A.",
-       [3]byte{0, 7, 30}:      "Tri-M Engineering / Nupak Dev. Corp.",
-       [3]byte{0, 7, 31}:      "European Systems Integration",
-       [3]byte{0, 7, 32}:      "Trutzschler GmbH & Co. KG",
-       [3]byte{0, 7, 33}:      "Formac Elektronik GmbH",
-       [3]byte{0, 7, 34}:      "The Nielsen Company",
-       [3]byte{0, 7, 35}:      "ELCON Systemtechnik GmbH",
-       [3]byte{0, 7, 36}:      "Telemax Co., Ltd.",
-       [3]byte{0, 7, 37}:      "Bematech International Corp.",
-       [3]byte{0, 7, 38}:      "SHENZHEN GONGJIN ELECTRONICS CO.,LT",
-       [3]byte{0, 7, 39}:      "Zi Corporation (HK) Ltd.",
-       [3]byte{0, 7, 40}:      "Neo Telecom",
-       [3]byte{0, 7, 41}:      "Kistler Instrumente AG",
-       [3]byte{0, 7, 42}:      "Innovance Networks",
-       [3]byte{0, 7, 43}:      "Jung Myung Telecom Co., Ltd.",
-       [3]byte{0, 7, 44}:      "Fabricom",
-       [3]byte{0, 7, 45}:      "CNSystems",
-       [3]byte{0, 7, 46}:      "North Node AB",
-       [3]byte{0, 7, 47}:      "Intransa, Inc.",
-       [3]byte{0, 7, 48}:      "Hutchison OPTEL Telecom Technology Co., Ltd.",
-       [3]byte{0, 7, 49}:      "Ophir-Spiricon LLC",
-       [3]byte{0, 7, 50}:      "AAEON Technology Inc.",
-       [3]byte{0, 7, 51}:      "DANCONTROL Engineering",
-       [3]byte{0, 7, 52}:      "ONStor, Inc.",
-       [3]byte{0, 7, 53}:      "Flarion Technologies, Inc.",
-       [3]byte{0, 7, 54}:      "Data Video Technologies Co., Ltd.",
-       [3]byte{0, 7, 55}:      "Soriya Co. Ltd.",
-       [3]byte{0, 7, 56}:      "Young Technology Co., Ltd.",
-       [3]byte{0, 7, 57}:      "Scotty Group Austria Gmbh",
-       [3]byte{0, 7, 58}:      "Inventel Systemes",
-       [3]byte{0, 7, 59}:      "Tenovis GmbH & Co KG",
-       [3]byte{0, 7, 60}:      "Telecom Design",
-       [3]byte{0, 7, 61}:      "Nanjing Postel Telecommunications Co., Ltd.",
-       [3]byte{0, 7, 62}:      "China Great-Wall Computer Shenzhen Co., Ltd.",
-       [3]byte{0, 7, 63}:      "Woojyun Systec Co., Ltd.",
-       [3]byte{0, 7, 64}:      "BUFFALO.INC",
-       [3]byte{0, 7, 65}:      "Sierra Automated Systems",
-       [3]byte{0, 7, 66}:      "Ormazabal",
-       [3]byte{0, 7, 67}:      "Chelsio Communications",
-       [3]byte{0, 7, 68}:      "Unico, Inc.",
-       [3]byte{0, 7, 69}:      "Radlan Computer Communications Ltd.",
-       [3]byte{0, 7, 70}:      "TURCK, Inc.",
-       [3]byte{0, 7, 71}:      "Mecalc",
-       [3]byte{0, 7, 72}:      "The Imaging Source Europe",
-       [3]byte{0, 7, 73}:      "CENiX Inc.",
-       [3]byte{0, 7, 74}:      "Carl Valentin GmbH",
-       [3]byte{0, 7, 75}:      "Daihen Corporation",
-       [3]byte{0, 7, 76}:      "Beicom Inc.",
-       [3]byte{0, 7, 77}:      "Zebra Technologies Corp.",
-       [3]byte{0, 7, 78}:      "IPFRONT Inc",
-       [3]byte{0, 7, 79}:      "Cisco Systems, Inc",
-       [3]byte{0, 7, 80}:      "Cisco Systems, Inc",
-       [3]byte{0, 7, 81}:      "m-u-t AG",
-       [3]byte{0, 7, 82}:      "Rhythm Watch Co., Ltd.",
-       [3]byte{0, 7, 83}:      "Beijing Qxcomm Technology Co., Ltd.",
-       [3]byte{0, 7, 84}:      "Xyterra Computing, Inc.",
-       [3]byte{0, 7, 85}:      "Lafon",
-       [3]byte{0, 7, 86}:      "Juyoung Telecom",
-       [3]byte{0, 7, 87}:      "Topcall International AG",
-       [3]byte{0, 7, 88}:      "Dragonwave",
-       [3]byte{0, 7, 89}:      "Boris Manufacturing Corp.",
-       [3]byte{0, 7, 90}:      "Air Products and Chemicals, Inc.",
-       [3]byte{0, 7, 91}:      "Gibson Guitars",
-       [3]byte{0, 7, 92}:      "Eastman Kodak Company",
-       [3]byte{0, 7, 93}:      "Celleritas Inc.",
-       [3]byte{0, 7, 94}:      "Ametek Power Instruments",
-       [3]byte{0, 7, 95}:      "VCS Video Communication Systems AG",
-       [3]byte{0, 7, 96}:      "TOMIS Information & Telecom Corp.",
-       [3]byte{0, 7, 97}:      "29530",
-       [3]byte{0, 7, 98}:      "Group Sense Limited",
-       [3]byte{0, 7, 99}:      "Sunniwell Cyber Tech. Co., Ltd.",
-       [3]byte{0, 7, 100}:     "YoungWoo Telecom Co. Ltd.",
-       [3]byte{0, 7, 101}:     "Jade Quantum Technologies, Inc.",
-       [3]byte{0, 7, 102}:     "Chou Chin Industrial Co., Ltd.",
-       [3]byte{0, 7, 103}:     "Yuxing Electronics Company Limited",
-       [3]byte{0, 7, 104}:     "Danfoss A/S",
-       [3]byte{0, 7, 105}:     "Italiana Macchi SpA",
-       [3]byte{0, 7, 106}:     "NEXTEYE Co., Ltd.",
-       [3]byte{0, 7, 107}:     "Stralfors AB",
-       [3]byte{0, 7, 108}:     "Daehanet, Inc.",
-       [3]byte{0, 7, 109}:     "Flexlight Networks",
-       [3]byte{0, 7, 110}:     "Sinetica Corporation Limited",
-       [3]byte{0, 7, 111}:     "Synoptics Limited",
-       [3]byte{0, 7, 112}:     "Ubiquoss Inc",
-       [3]byte{0, 7, 113}:     "Embedded System Corporation",
-       [3]byte{0, 7, 114}:     "Alcatel-Lucent Shanghai Bell Co., Ltd",
-       [3]byte{0, 7, 115}:     "Ascom Powerline Communications Ltd.",
-       [3]byte{0, 7, 116}:     "GuangZhou Thinker Technology Co. Ltd.",
-       [3]byte{0, 7, 117}:     "Valence Semiconductor, Inc.",
-       [3]byte{0, 7, 118}:     "Federal APD",
-       [3]byte{0, 7, 119}:     "Motah Ltd.",
-       [3]byte{0, 7, 120}:     "GERSTEL GmbH & Co. KG",
-       [3]byte{0, 7, 121}:     "Sungil Telecom Co., Ltd.",
-       [3]byte{0, 7, 122}:     "Infoware System Co., Ltd.",
-       [3]byte{0, 7, 123}:     "Millimetrix Broadband Networks",
-       [3]byte{0, 7, 124}:     "Westermo Teleindustri AB",
-       [3]byte{0, 7, 125}:     "Cisco Systems, Inc",
-       [3]byte{0, 7, 126}:     "Elrest GmbH",
-       [3]byte{0, 7, 127}:     "J Communications Co., Ltd.",
-       [3]byte{0, 7, 128}:     "Bluegiga Technologies OY",
-       [3]byte{0, 7, 129}:     "Itron Inc.",
-       [3]byte{0, 7, 130}:     "Oracle Corporation",
-       [3]byte{0, 7, 131}:     "SynCom Network, Inc.",
-       [3]byte{0, 7, 132}:     "Cisco Systems, Inc",
-       [3]byte{0, 7, 133}:     "Cisco Systems, Inc",
-       [3]byte{0, 7, 134}:     "Wireless Networks Inc.",
-       [3]byte{0, 7, 135}:     "Idea System Co., Ltd.",
-       [3]byte{0, 7, 136}:     "Clipcomm, Inc.",
-       [3]byte{0, 7, 137}:     "DONGWON SYSTEMS",
-       [3]byte{0, 7, 138}:     "Mentor Data System Inc.",
-       [3]byte{0, 7, 139}:     "Wegener Communications, Inc.",
-       [3]byte{0, 7, 140}:     "Elektronikspecialisten i Borlange AB",
-       [3]byte{0, 7, 141}:     "NetEngines Ltd.",
-       [3]byte{0, 7, 142}:     "Garz & Friche GmbH",
-       [3]byte{0, 7, 143}:     "Emkay Innovative Products",
-       [3]byte{0, 7, 144}:     "Tri-M Technologies (s) Limited",
-       [3]byte{0, 7, 145}:     "International Data Communications, Inc.",
-       [3]byte{0, 7, 146}:     "Sütron Electronic GmbH",
-       [3]byte{0, 7, 147}:     "Shin Satellite Public Company Limited",
-       [3]byte{0, 7, 148}:     "Simple Devices, Inc.",
-       [3]byte{0, 7, 149}:     "Elitegroup Computer Systems Co.,Ltd.",
-       [3]byte{0, 7, 150}:     "LSI Systems, Inc.",
-       [3]byte{0, 7, 151}:     "Netpower Co., Ltd.",
-       [3]byte{0, 7, 152}:     "Selea SRL",
-       [3]byte{0, 7, 153}:     "Tipping Point Technologies, Inc.",
-       [3]byte{0, 7, 154}:     "Verint Systems Inc",
-       [3]byte{0, 7, 155}:     "Aurora Networks",
-       [3]byte{0, 7, 156}:     "Golden Electronics Technology Co., Ltd.",
-       [3]byte{0, 7, 157}:     "Musashi Co., Ltd.",
-       [3]byte{0, 7, 158}:     "Ilinx Co., Ltd.",
-       [3]byte{0, 7, 159}:     "Action Digital Inc.",
-       [3]byte{0, 7, 160}:     "e-Watch Inc.",
-       [3]byte{0, 7, 161}:     "VIASYS Healthcare GmbH",
-       [3]byte{0, 7, 162}:     "Opteon Corporation",
-       [3]byte{0, 7, 163}:     "Ositis Software, Inc.",
-       [3]byte{0, 7, 164}:     "GN Netcom Ltd.",
-       [3]byte{0, 7, 165}:     "Y.D.K Co. Ltd.",
-       [3]byte{0, 7, 166}:     "Leviton Manufacturing Co., Inc.",
-       [3]byte{0, 7, 167}:     "A-Z Inc.",
-       [3]byte{0, 7, 168}:     "Haier Group Technologies Ltd.",
-       [3]byte{0, 7, 169}:     "Novasonics",
-       [3]byte{0, 7, 170}:     "Quantum Data Inc.",
-       [3]byte{0, 7, 171}:     "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 7, 172}:     "Eolring",
-       [3]byte{0, 7, 173}:     "Pentacon GmbH Foto-und Feinwerktechnik",
-       [3]byte{0, 7, 174}:     "Britestream Networks, Inc.",
-       [3]byte{0, 7, 175}:     "Red Lion Controls, LP",
-       [3]byte{0, 7, 176}:     "Office Details, Inc.",
-       [3]byte{0, 7, 177}:     "Equator Technologies",
-       [3]byte{0, 7, 178}:     "Transaccess S.A.",
-       [3]byte{0, 7, 179}:     "Cisco Systems, Inc",
-       [3]byte{0, 7, 180}:     "Cisco Systems, Inc",
-       [3]byte{0, 7, 181}:     "Any One Wireless Ltd.",
-       [3]byte{0, 7, 182}:     "Telecom Technology Ltd.",
-       [3]byte{0, 7, 183}:     "Samurai Ind. Prods Eletronicos Ltda",
-       [3]byte{0, 7, 184}:     "Corvalent Corporation",
-       [3]byte{0, 7, 185}:     "Ginganet Corporation",
-       [3]byte{0, 7, 186}:     "UTStarcom Inc",
-       [3]byte{0, 7, 187}:     "Candera Inc.",
-       [3]byte{0, 7, 188}:     "Identix Inc.",
-       [3]byte{0, 7, 189}:     "Radionet Ltd.",
-       [3]byte{0, 7, 190}:     "DataLogic SpA",
-       [3]byte{0, 7, 191}:     "Armillaire Technologies, Inc.",
-       [3]byte{0, 7, 192}:     "NetZerver Inc.",
-       [3]byte{0, 7, 193}:     "Overture Networks, Inc.",
-       [3]byte{0, 7, 194}:     "Netsys Telecom",
-       [3]byte{0, 7, 195}:     "Thomson",
-       [3]byte{0, 7, 196}:     "JEAN Co. Ltd.",
-       [3]byte{0, 7, 197}:     "Gcom, Inc.",
-       [3]byte{0, 7, 198}:     "VDS Vosskuhler GmbH",
-       [3]byte{0, 7, 199}:     "Synectics Systems Limited",
-       [3]byte{0, 7, 200}:     "Brain21, Inc.",
-       [3]byte{0, 7, 201}:     "Technol Seven Co., Ltd.",
-       [3]byte{0, 7, 202}:     "Creatix Polymedia Ges Fur Kommunikaitonssysteme",
-       [3]byte{0, 7, 203}:     "FREEBOX SAS",
-       [3]byte{0, 7, 204}:     "Kaba Benzing GmbH",
-       [3]byte{0, 7, 205}:     "Kumoh Electronic Co, Ltd",
-       [3]byte{0, 7, 206}:     "Cabletime Limited",
-       [3]byte{0, 7, 207}:     "Anoto AB",
-       [3]byte{0, 7, 208}:     "Automat Engenharia de Automação Ltda.",
-       [3]byte{0, 7, 209}:     "Spectrum Signal Processing Inc.",
-       [3]byte{0, 7, 210}:     "Logopak Systeme GmbH & Co. KG",
-       [3]byte{0, 7, 211}:     "SPGPrints B.V.",
-       [3]byte{0, 7, 212}:     "Zhejiang Yutong Network Communication Co Ltd.",
-       [3]byte{0, 7, 213}:     "3e Technologies Int;., Inc.",
-       [3]byte{0, 7, 214}:     "Commil Ltd.",
-       [3]byte{0, 7, 215}:     "Caporis Networks AG",
-       [3]byte{0, 7, 216}:     "Hitron Technologies. Inc",
-       [3]byte{0, 7, 217}:     "Splicecom",
-       [3]byte{0, 7, 218}:     "Neuro Telecom Co., Ltd.",
-       [3]byte{0, 7, 219}:     "Kirana Networks, Inc.",
-       [3]byte{0, 7, 220}:     "Atek Co, Ltd.",
-       [3]byte{0, 7, 221}:     "Cradle Technologies",
-       [3]byte{0, 7, 222}:     "eCopilt AB",
-       [3]byte{0, 7, 223}:     "Vbrick Systems Inc.",
-       [3]byte{0, 7, 224}:     "Palm Inc.",
-       [3]byte{0, 7, 225}:     "WIS Communications Co. Ltd.",
-       [3]byte{0, 7, 226}:     "Bitworks, Inc.",
-       [3]byte{0, 7, 227}:     "Navcom Technology, Inc.",
-       [3]byte{0, 7, 228}:     "SoftRadio Co., Ltd.",
-       [3]byte{0, 7, 229}:     "Coup Corporation",
-       [3]byte{0, 7, 230}:     "edgeflow Canada Inc.",
-       [3]byte{0, 7, 231}:     "FreeWave Technologies",
-       [3]byte{0, 7, 232}:     "EdgeWave",
-       [3]byte{0, 7, 233}:     "Intel Corporation",
-       [3]byte{0, 7, 234}:     "Massana, Inc.",
-       [3]byte{0, 7, 235}:     "Cisco Systems, Inc",
-       [3]byte{0, 7, 236}:     "Cisco Systems, Inc",
-       [3]byte{0, 7, 237}:     "Altera Corporation",
-       [3]byte{0, 7, 238}:     "telco Informationssysteme GmbH",
-       [3]byte{0, 7, 239}:     "Lockheed Martin Tactical Systems",
-       [3]byte{0, 7, 240}:     "LogiSync LLC",
-       [3]byte{0, 7, 241}:     "TeraBurst Networks Inc.",
-       [3]byte{0, 7, 242}:     "IOA Corporation",
-       [3]byte{0, 7, 243}:     "Thinkengine Networks",
-       [3]byte{0, 7, 244}:     "Eletex Co., Ltd.",
-       [3]byte{0, 7, 245}:     "Bridgeco Co AG",
-       [3]byte{0, 7, 246}:     "Qqest Software Systems",
-       [3]byte{0, 7, 247}:     "Galtronics",
-       [3]byte{0, 7, 248}:     "ITDevices, Inc.",
-       [3]byte{0, 7, 249}:     "Sensaphone",
-       [3]byte{0, 7, 250}:     "ITT Co., Ltd.",
-       [3]byte{0, 7, 251}:     "Giga Stream UMTS Technologies GmbH",
-       [3]byte{0, 7, 252}:     "Adept Systems Inc.",
-       [3]byte{0, 7, 253}:     "LANergy Ltd.",
-       [3]byte{0, 7, 254}:     "Rigaku Corporation",
-       [3]byte{0, 7, 255}:     "Gluon Networks",
-       [3]byte{0, 8, 0}:       "MULTITECH SYSTEMS, INC.",
-       [3]byte{0, 8, 1}:       "HighSpeed Surfing Inc.",
-       [3]byte{0, 8, 2}:       "Hewlett Packard",
-       [3]byte{0, 8, 3}:       "Cos Tron",
-       [3]byte{0, 8, 4}:       "ICA Inc.",
-       [3]byte{0, 8, 5}:       "Techno-Holon Corporation",
-       [3]byte{0, 8, 6}:       "Raonet Systems, Inc.",
-       [3]byte{0, 8, 7}:       "Access Devices Limited",
-       [3]byte{0, 8, 8}:       "PPT Vision, Inc.",
-       [3]byte{0, 8, 9}:       "Systemonic AG",
-       [3]byte{0, 8, 10}:      "Espera-Werke GmbH",
-       [3]byte{0, 8, 11}:      "Birka BPA Informationssystem AB",
-       [3]byte{0, 8, 12}:      "VDA Elettronica spa",
-       [3]byte{0, 8, 13}:      "Toshiba",
-       [3]byte{0, 8, 14}:      "ARRIS Group, Inc.",
-       [3]byte{0, 8, 15}:      "Proximion Fiber Optics AB",
-       [3]byte{0, 8, 16}:      "Key Technology, Inc.",
-       [3]byte{0, 8, 17}:      "VOIX Corporation",
-       [3]byte{0, 8, 18}:      "GM-2 Corporation",
-       [3]byte{0, 8, 19}:      "Diskbank, Inc.",
-       [3]byte{0, 8, 20}:      "TIL Technologies",
-       [3]byte{0, 8, 21}:      "CATS Co., Ltd.",
-       [3]byte{0, 8, 22}:      "Bluelon ApS",
-       [3]byte{0, 8, 23}:      "EmergeCore Networks LLC",
-       [3]byte{0, 8, 24}:      "Pixelworks, Inc.",
-       [3]byte{0, 8, 25}:      "Banksys",
-       [3]byte{0, 8, 26}:      "Sanrad Intelligence Storage Communications (2000) Ltd.",
-       [3]byte{0, 8, 27}:      "Windigo Systems",
-       [3]byte{0, 8, 28}:      "@pos.com",
-       [3]byte{0, 8, 29}:      "Ipsil, Incorporated",
-       [3]byte{0, 8, 30}:      "Repeatit AB",
-       [3]byte{0, 8, 31}:      "Pou Yuen Tech Corp. Ltd.",
-       [3]byte{0, 8, 32}:      "Cisco Systems, Inc",
-       [3]byte{0, 8, 33}:      "Cisco Systems, Inc",
-       [3]byte{0, 8, 34}:      "InPro Comm",
-       [3]byte{0, 8, 35}:      "Texa Corp.",
-       [3]byte{0, 8, 36}:      "Nuance Document Imaging",
-       [3]byte{0, 8, 37}:      "Acme Packet",
-       [3]byte{0, 8, 38}:      "Colorado Med Tech",
-       [3]byte{0, 8, 39}:      "ADB Broadband Italia",
-       [3]byte{0, 8, 40}:      "Koei Engineering Ltd.",
-       [3]byte{0, 8, 41}:      "Aval Nagasaki Corporation",
-       [3]byte{0, 8, 42}:      "Powerwallz Network Security",
-       [3]byte{0, 8, 43}:      "Wooksung Electronics, Inc.",
-       [3]byte{0, 8, 44}:      "Homag AG",
-       [3]byte{0, 8, 45}:      "Indus Teqsite Private Limited",
-       [3]byte{0, 8, 46}:      "Multitone Electronics PLC",
-       [3]byte{0, 8, 47}:      "Cisco Systems, Inc",
-       [3]byte{0, 8, 48}:      "Cisco Systems, Inc",
-       [3]byte{0, 8, 49}:      "Cisco Systems, Inc",
-       [3]byte{0, 8, 50}:      "Cisco Systems, Inc",
-       [3]byte{0, 8, 78}:      "DivergeNet, Inc.",
-       [3]byte{0, 8, 79}:      "Qualstar Corporation",
-       [3]byte{0, 8, 80}:      "Arizona Instrument Corp.",
-       [3]byte{0, 8, 81}:      "Canadian Bank Note Company, Ltd.",
-       [3]byte{0, 8, 82}:      "Davolink Co. Inc.",
-       [3]byte{0, 8, 83}:      "Schleicher GmbH & Co. Relaiswerke KG",
-       [3]byte{0, 8, 84}:      "Netronix, Inc.",
-       [3]byte{0, 8, 85}:      "NASA-Goddard Space Flight Center",
-       [3]byte{0, 8, 86}:      "Gamatronic Electronic Industries Ltd.",
-       [3]byte{0, 8, 87}:      "Polaris Networks, Inc.",
-       [3]byte{0, 8, 88}:      "Novatechnology Inc.",
-       [3]byte{0, 8, 89}:      "ShenZhen Unitone Electronics Co., Ltd.",
-       [3]byte{0, 8, 90}:      "IntiGate Inc.",
-       [3]byte{0, 8, 91}:      "Hanbit Electronics Co., Ltd.",
-       [3]byte{0, 8, 92}:      "Shanghai Dare Technologies Co. Ltd.",
-       [3]byte{0, 8, 93}:      "Aastra",
-       [3]byte{0, 8, 94}:      "PCO AG",
-       [3]byte{0, 8, 95}:      "Picanol N.V.",
-       [3]byte{0, 8, 96}:      "LodgeNet Entertainment Corp.",
-       [3]byte{0, 8, 97}:      "SoftEnergy Co., Ltd.",
-       [3]byte{0, 8, 98}:      "NEC Eluminant Technologies, Inc.",
-       [3]byte{0, 8, 99}:      "Entrisphere Inc.",
-       [3]byte{0, 8, 100}:     "Fasy S.p.A.",
-       [3]byte{0, 8, 101}:     "JASCOM CO., LTD",
-       [3]byte{0, 8, 102}:     "DSX Access Systems, Inc.",
-       [3]byte{0, 8, 103}:     "Uptime Devices",
-       [3]byte{0, 8, 104}:     "PurOptix",
-       [3]byte{0, 8, 105}:     "Command-e Technology Co.,Ltd.",
-       [3]byte{0, 8, 106}:     "Securiton Gmbh",
-       [3]byte{0, 8, 107}:     "MIPSYS",
-       [3]byte{0, 8, 108}:     "Plasmon LMS",
-       [3]byte{0, 8, 109}:     "Missouri FreeNet",
-       [3]byte{0, 8, 110}:     "Hyglo AB",
-       [3]byte{0, 8, 111}:     "Resources Computer Network Ltd.",
-       [3]byte{0, 8, 112}:     "Rasvia Systems, Inc.",
-       [3]byte{0, 8, 113}:     "NORTHDATA Co., Ltd.",
-       [3]byte{0, 8, 114}:     "Sorenson Communications",
-       [3]byte{0, 8, 115}:     "DapTechnology B.V.",
-       [3]byte{0, 8, 116}:     "Dell Inc.",
-       [3]byte{0, 8, 117}:     "Acorp Electronics Corp.",
-       [3]byte{0, 8, 118}:     "SDSystem",
-       [3]byte{0, 8, 119}:     "Liebert-Hiross Spa",
-       [3]byte{0, 8, 120}:     "Benchmark Storage Innovations",
-       [3]byte{0, 8, 121}:     "CEM Corporation",
-       [3]byte{0, 8, 122}:     "Wipotec GmbH",
-       [3]byte{0, 8, 123}:     "RTX Telecom A/S",
-       [3]byte{0, 8, 124}:     "Cisco Systems, Inc",
-       [3]byte{0, 8, 125}:     "Cisco Systems, Inc",
-       [3]byte{0, 8, 126}:     "Bon Electro-Telecom Inc.",
-       [3]byte{0, 8, 127}:     "SPAUN electronic GmbH & Co. KG",
-       [3]byte{0, 8, 128}:     "BroadTel Canada Communications inc.",
-       [3]byte{0, 8, 129}:     "DIGITAL HANDS CO.,LTD.",
-       [3]byte{0, 8, 130}:     "SIGMA CORPORATION",
-       [3]byte{0, 8, 131}:     "Hewlett Packard",
-       [3]byte{0, 8, 132}:     "Index Braille AB",
-       [3]byte{0, 8, 133}:     "EMS Dr. Thomas Wünsche",
-       [3]byte{0, 8, 134}:     "Hansung Teliann, Inc.",
-       [3]byte{0, 8, 135}:     "Maschinenfabrik Reinhausen GmbH",
-       [3]byte{0, 8, 136}:     "OULLIM Information Technology Inc,.",
-       [3]byte{0, 8, 137}:     "Echostar Technologies Corp",
-       [3]byte{0, 8, 138}:     "Minds@Work",
-       [3]byte{0, 8, 139}:     "Tropic Networks Inc.",
-       [3]byte{0, 8, 140}:     "Quanta Network Systems Inc.",
-       [3]byte{0, 8, 141}:     "Sigma-Links Inc.",
-       [3]byte{0, 8, 142}:     "Nihon Computer Co., Ltd.",
-       [3]byte{0, 8, 143}:     "ADVANCED DIGITAL TECHNOLOGY",
-       [3]byte{0, 8, 144}:     "AVILINKS SA",
-       [3]byte{0, 8, 145}:     "Lyan Inc.",
-       [3]byte{0, 8, 146}:     "EM Solutions",
-       [3]byte{0, 8, 147}:     "LE INFORMATION COMMUNICATION INC.",
-       [3]byte{0, 8, 148}:     "InnoVISION Multimedia Ltd.",
-       [3]byte{0, 8, 149}:     "DIRC Technologie GmbH & Co.KG",
-       [3]byte{0, 8, 150}:     "Printronix, Inc.",
-       [3]byte{0, 8, 151}:     "Quake Technologies",
-       [3]byte{0, 8, 152}:     "Gigabit Optics Corporation",
-       [3]byte{0, 8, 153}:     "Netbind, Inc.",
-       [3]byte{0, 8, 154}:     "Alcatel Microelectronics",
-       [3]byte{0, 8, 155}:     "ICP Electronics Inc.",
-       [3]byte{0, 8, 156}:     "Elecs Industry Co., Ltd.",
-       [3]byte{0, 8, 157}:     "UHD-Elektronik",
-       [3]byte{0, 8, 158}:     "Beijing Enter-Net co.LTD",
-       [3]byte{0, 8, 159}:     "EFM Networks",
-       [3]byte{0, 8, 160}:     "Stotz Feinmesstechnik GmbH",
-       [3]byte{0, 8, 161}:     "CNet Technology Inc.",
-       [3]byte{0, 8, 162}:     "ADI Engineering, Inc.",
-       [3]byte{0, 8, 163}:     "Cisco Systems, Inc",
-       [3]byte{0, 8, 164}:     "Cisco Systems, Inc",
-       [3]byte{0, 8, 165}:     "Peninsula Systems Inc.",
-       [3]byte{0, 8, 166}:     "Multiware & Image Co., Ltd.",
-       [3]byte{0, 8, 167}:     "iLogic Inc.",
-       [3]byte{0, 8, 168}:     "Systec Co., Ltd.",
-       [3]byte{0, 8, 169}:     "SangSang Technology, Inc.",
-       [3]byte{0, 8, 170}:     "KARAM",
-       [3]byte{0, 8, 171}:     "EnerLinx.com, Inc.",
-       [3]byte{0, 8, 172}:     "Eltromat GmbH",
-       [3]byte{0, 8, 173}:     "Toyo-Linx Co., Ltd.",
-       [3]byte{0, 8, 174}:     "PacketFront Network Products AB",
-       [3]byte{0, 8, 175}:     "Novatec Corporation",
-       [3]byte{0, 8, 176}:     "BKtel communications GmbH",
-       [3]byte{0, 8, 177}:     "ProQuent Systems",
-       [3]byte{0, 8, 178}:     "SHENZHEN COMPASS TECHNOLOGY DEVELOPMENT CO.,LTD",
-       [3]byte{0, 8, 179}:     "Fastwel",
-       [3]byte{0, 8, 180}:     "SYSPOL",
-       [3]byte{0, 8, 181}:     "TAI GUEN ENTERPRISE CO., LTD",
-       [3]byte{0, 8, 182}:     "RouteFree, Inc.",
-       [3]byte{0, 8, 183}:     "HIT Incorporated",
-       [3]byte{0, 8, 184}:     "E.F. Johnson",
-       [3]byte{0, 8, 185}:     "Kaonmedia CO., LTD.",
-       [3]byte{0, 8, 186}:     "Erskine Systems Ltd",
-       [3]byte{0, 8, 187}:     "NetExcell",
-       [3]byte{0, 8, 188}:     "Ilevo AB",
-       [3]byte{0, 8, 189}:     "TEPG-US",
-       [3]byte{0, 8, 190}:     "XENPAK MSA Group",
-       [3]byte{0, 8, 191}:     "Aptus Elektronik AB",
-       [3]byte{0, 8, 192}:     "ASA SYSTEMS",
-       [3]byte{0, 8, 193}:     "Avistar Communications Corporation",
-       [3]byte{0, 8, 194}:     "Cisco Systems, Inc",
-       [3]byte{0, 8, 195}:     "Contex A/S",
-       [3]byte{0, 8, 196}:     "Hikari Co.,Ltd.",
-       [3]byte{0, 8, 197}:     "Liontech Co., Ltd.",
-       [3]byte{0, 8, 198}:     "Philips Consumer Communications",
-       [3]byte{0, 8, 199}:     "Hewlett Packard",
-       [3]byte{0, 8, 200}:     "Soneticom, Inc.",
-       [3]byte{0, 8, 201}:     "TechniSat Digital GmbH Daun",
-       [3]byte{0, 8, 202}:     "TwinHan Technology Co.,Ltd",
-       [3]byte{0, 8, 203}:     "Zeta Broadband Inc.",
-       [3]byte{0, 8, 204}:     "Remotec, Inc.",
-       [3]byte{0, 8, 205}:     "With-Net Inc",
-       [3]byte{0, 8, 206}:     "IPMobileNet Inc.",
-       [3]byte{0, 8, 207}:     "Nippon Koei Power Systems Co., Ltd.",
-       [3]byte{0, 8, 208}:     "Musashi Engineering Co., LTD.",
-       [3]byte{0, 8, 209}:     "KAREL INC.",
-       [3]byte{0, 8, 210}:     "ZOOM Networks Inc.",
-       [3]byte{0, 8, 211}:     "Hercules Technologies S.A.S.",
-       [3]byte{0, 8, 212}:     "IneoQuest Technologies, Inc",
-       [3]byte{0, 8, 213}:     "Vanguard Networks Solutions, LLC",
-       [3]byte{0, 8, 214}:     "HASSNET Inc.",
-       [3]byte{0, 8, 215}:     "HOW CORPORATION",
-       [3]byte{0, 8, 216}:     "Dowkey Microwave",
-       [3]byte{0, 8, 217}:     "Mitadenshi Co.,LTD",
-       [3]byte{0, 8, 218}:     "SofaWare Technologies Ltd.",
-       [3]byte{0, 8, 219}:     "Corrigent Systems",
-       [3]byte{0, 8, 220}:     "Wiznet",
-       [3]byte{0, 8, 221}:     "Telena Communications, Inc.",
-       [3]byte{0, 8, 222}:     "3UP Systems",
-       [3]byte{0, 8, 223}:     "Alistel Inc.",
-       [3]byte{0, 8, 224}:     "ATO Technology Ltd.",
-       [3]byte{0, 8, 225}:     "Barix AG",
-       [3]byte{0, 8, 226}:     "Cisco Systems, Inc",
-       [3]byte{0, 8, 227}:     "Cisco Systems, Inc",
-       [3]byte{0, 8, 228}:     "Envenergy Inc",
-       [3]byte{0, 8, 229}:     "IDK Corporation",
-       [3]byte{0, 8, 230}:     "Littlefeet",
-       [3]byte{0, 8, 231}:     "SHI ControlSystems,Ltd.",
-       [3]byte{0, 8, 232}:     "Excel Master Ltd.",
-       [3]byte{0, 8, 233}:     "NextGig",
-       [3]byte{0, 8, 234}:     "Motion Control Engineering, Inc",
-       [3]byte{0, 8, 235}:     "ROMWin Co.,Ltd.",
-       [3]byte{0, 8, 236}:     "Optical Zonu Corporation",
-       [3]byte{0, 8, 237}:     "ST&T Instrument Corp.",
-       [3]byte{0, 8, 238}:     "Logic Product Development",
-       [3]byte{0, 8, 239}:     "DIBAL,S.A.",
-       [3]byte{0, 8, 240}:     "Next Generation Systems, Inc.",
-       [3]byte{0, 8, 241}:     "Voltaire",
-       [3]byte{0, 8, 242}:     "C&S Technology",
-       [3]byte{0, 8, 243}:     "WANY",
-       [3]byte{0, 8, 244}:     "Bluetake Technology Co., Ltd.",
-       [3]byte{0, 8, 245}:     "YESTECHNOLOGY Co.,Ltd.",
-       [3]byte{0, 8, 246}:     "Sumitomo Electric Industries,Ltd",
-       [3]byte{0, 8, 247}:     "Hitachi Ltd, Semiconductor & Integrated Circuits Gr",
-       [3]byte{0, 8, 248}:     "UTC CCS",
-       [3]byte{0, 8, 249}:     "Artesyn Embedded Technologies",
-       [3]byte{0, 8, 250}:     "KEB Automation KG",
-       [3]byte{0, 8, 251}:     "SonoSite, Inc.",
-       [3]byte{0, 8, 252}:     "Gigaphoton Inc.",
-       [3]byte{0, 8, 253}:     "BlueKorea Co., Ltd.",
-       [3]byte{0, 8, 254}:     "UNIK C&C Co.,Ltd.",
-       [3]byte{0, 8, 255}:     "Trilogy Communications Ltd",
-       [3]byte{0, 9, 0}:       "TMT",
-       [3]byte{0, 9, 1}:       "Shenzhen Shixuntong Information & Technoligy Co",
-       [3]byte{0, 9, 2}:       "Redline Communications Inc.",
-       [3]byte{0, 9, 3}:       "Panasas, Inc",
-       [3]byte{0, 9, 4}:       "MONDIAL electronic",
-       [3]byte{0, 9, 5}:       "iTEC Technologies Ltd.",
-       [3]byte{0, 9, 6}:       "Esteem Networks",
-       [3]byte{0, 9, 7}:       "Chrysalis Development",
-       [3]byte{0, 9, 8}:       "VTech Technology Corp.",
-       [3]byte{0, 9, 9}:       "Telenor Connect A/S",
-       [3]byte{0, 9, 10}:      "SnedFar Technology Co., Ltd.",
-       [3]byte{0, 9, 11}:      "MTL  Instruments PLC",
-       [3]byte{0, 9, 12}:      "Mayekawa Mfg. Co. Ltd.",
-       [3]byte{0, 9, 13}:      "LEADER ELECTRONICS CORP.",
-       [3]byte{0, 9, 14}:      "Helix Technology Inc.",
-       [3]byte{0, 9, 15}:      "Fortinet Inc.",
-       [3]byte{0, 9, 16}:      "Simple Access Inc.",
-       [3]byte{0, 9, 17}:      "Cisco Systems, Inc",
-       [3]byte{0, 9, 18}:      "Cisco Systems, Inc",
-       [3]byte{0, 9, 19}:      "SystemK Corporation",
-       [3]byte{0, 9, 20}:      "COMPUTROLS INC.",
-       [3]byte{0, 9, 21}:      "CAS Corp.",
-       [3]byte{0, 9, 22}:      "Listman Home Technologies, Inc.",
-       [3]byte{0, 9, 23}:      "WEM Technology Inc",
-       [3]byte{0, 9, 24}:      "SAMSUNG TECHWIN CO.,LTD",
-       [3]byte{0, 9, 25}:      "MDS Gateways",
-       [3]byte{0, 9, 26}:      "Macat Optics & Electronics Co., Ltd.",
-       [3]byte{0, 9, 27}:      "Digital Generation Inc.",
-       [3]byte{0, 9, 28}:      "CacheVision, Inc",
-       [3]byte{0, 9, 29}:      "Proteam Computer Corporation",
-       [3]byte{0, 9, 30}:      "Firstech Technology Corp.",
-       [3]byte{0, 9, 31}:      "A&D Co., Ltd.",
-       [3]byte{0, 9, 32}:      "EpoX COMPUTER CO.,LTD.",
-       [3]byte{0, 9, 33}:      "Planmeca Oy",
-       [3]byte{0, 9, 34}:      "TST Biometrics GmbH",
-       [3]byte{0, 9, 35}:      "Heaman System Co., Ltd",
-       [3]byte{0, 9, 36}:      "Telebau GmbH",
-       [3]byte{0, 9, 37}:      "VSN Systemen BV",
-       [3]byte{0, 9, 38}:      "YODA COMMUNICATIONS, INC.",
-       [3]byte{0, 9, 39}:      "TOYOKEIKI CO.,LTD.",
-       [3]byte{0, 9, 40}:      "Telecore",
-       [3]byte{0, 9, 41}:      "Sanyo Industries (UK) Limited",
-       [3]byte{0, 9, 42}:      "MYTECS Co.,Ltd.",
-       [3]byte{0, 9, 43}:      "iQstor Networks, Inc.",
-       [3]byte{0, 9, 44}:      "Hitpoint Inc.",
-       [3]byte{0, 9, 45}:      "HTC Corporation",
-       [3]byte{0, 9, 46}:      "B&Tech System Inc.",
-       [3]byte{0, 9, 47}:      "Akom Technology Corporation",
-       [3]byte{0, 9, 48}:      "AeroConcierge Inc.",
-       [3]byte{0, 9, 49}:      "Future Internet, Inc.",
-       [3]byte{0, 9, 50}:      "Omnilux",
-       [3]byte{0, 9, 51}:      "Ophit Co.Ltd.",
-       [3]byte{0, 9, 52}:      "Dream-Multimedia-Tv GmbH",
-       [3]byte{0, 9, 53}:      "Sandvine Incorporated",
-       [3]byte{0, 9, 54}:      "Ipetronik GmbH & Co. KG",
-       [3]byte{0, 9, 55}:      "Inventec Appliance Corp",
-       [3]byte{0, 9, 56}:      "Allot Communications",
-       [3]byte{0, 9, 57}:      "ShibaSoku Co.,Ltd.",
-       [3]byte{0, 9, 58}:      "Molex",
-       [3]byte{0, 9, 59}:      "HYUNDAI NETWORKS INC.",
-       [3]byte{0, 9, 60}:      "Jacques Technologies P/L",
-       [3]byte{0, 9, 61}:      "Newisys,Inc.",
-       [3]byte{0, 9, 62}:      "C&I Technologies",
-       [3]byte{0, 9, 63}:      "Double-Win Enterpirse CO., LTD",
-       [3]byte{0, 9, 64}:      "AGFEO GmbH & Co. KG",
-       [3]byte{0, 9, 65}:      "Allied Telesis R&D Center K.K.",
-       [3]byte{0, 9, 66}:      "Wireless Technologies, Inc",
-       [3]byte{0, 9, 67}:      "Cisco Systems, Inc",
-       [3]byte{0, 9, 68}:      "Cisco Systems, Inc",
-       [3]byte{0, 9, 69}:      "Palmmicro Communications Inc",
-       [3]byte{0, 9, 70}:      "Cluster Labs GmbH",
-       [3]byte{0, 9, 71}:      "Aztek, Inc.",
-       [3]byte{0, 9, 72}:      "Vista Control Systems, Corp.",
-       [3]byte{0, 9, 73}:      "Glyph Technologies Inc.",
-       [3]byte{0, 9, 74}:      "Homenet Communications",
-       [3]byte{0, 9, 75}:      "FillFactory NV",
-       [3]byte{0, 9, 76}:      "Communication Weaver Co.,Ltd.",
-       [3]byte{0, 9, 77}:      "Braintree Communications Pty Ltd",
-       [3]byte{0, 9, 78}:      "BARTECH SYSTEMS INTERNATIONAL, INC",
-       [3]byte{0, 9, 79}:      "elmegt GmbH & Co. KG",
-       [3]byte{0, 9, 80}:      "Independent Storage Corporation",
-       [3]byte{0, 9, 81}:      "Apogee Imaging Systems",
-       [3]byte{0, 9, 82}:      "Auerswald GmbH & Co. KG",
-       [3]byte{0, 9, 83}:      "Linkage System Integration Co.Ltd.",
-       [3]byte{0, 9, 84}:      "AMiT spol. s. r. o.",
-       [3]byte{0, 9, 85}:      "Young Generation International Corp.",
-       [3]byte{0, 9, 86}:      "Network Systems Group, Ltd. (NSG)",
-       [3]byte{0, 9, 87}:      "Supercaller, Inc.",
-       [3]byte{0, 9, 88}:      "INTELNET S.A.",
-       [3]byte{0, 9, 89}:      "Sitecsoft",
-       [3]byte{0, 9, 90}:      "RACEWOOD TECHNOLOGY",
-       [3]byte{0, 9, 91}:      "NETGEAR",
-       [3]byte{0, 9, 92}:      "Philips Medical Systems - Cardiac and Monitoring Systems (CM",
-       [3]byte{0, 9, 93}:      "Dialogue Technology Corp.",
-       [3]byte{0, 9, 94}:      "Masstech Group Inc.",
-       [3]byte{0, 9, 95}:      "Telebyte, Inc.",
-       [3]byte{0, 9, 96}:      "YOZAN Inc.",
-       [3]byte{0, 9, 97}:      "Switchgear and Instrumentation Ltd",
-       [3]byte{0, 9, 98}:      "Sonitor Technologies AS",
-       [3]byte{0, 9, 99}:      "Dominion Lasercom Inc.",
-       [3]byte{0, 9, 100}:     "Hi-Techniques, Inc.",
-       [3]byte{0, 9, 101}:     "HyunJu Computer Co., Ltd.",
-       [3]byte{0, 9, 102}:     "TRIMBLE EUROPE BV",
-       [3]byte{0, 9, 103}:     "Tachyon, Inc",
-       [3]byte{0, 9, 104}:     "TECHNOVENTURE, INC.",
-       [3]byte{0, 9, 105}:     "Meret Optical Communications",
-       [3]byte{0, 9, 106}:     "Cloverleaf Communications Inc.",
-       [3]byte{0, 9, 107}:     "IBM Corp",
-       [3]byte{0, 9, 108}:     "Imedia Semiconductor Corp.",
-       [3]byte{0, 9, 109}:     "Powernet Technologies Corp.",
-       [3]byte{0, 9, 110}:     "GIANT ELECTRONICS LTD.",
-       [3]byte{0, 9, 111}:     "Beijing Zhongqing Elegant Tech. Corp.,Limited",
-       [3]byte{0, 9, 112}:     "Vibration Research Corporation",
-       [3]byte{0, 9, 113}:     "Time Management, Inc.",
-       [3]byte{0, 9, 114}:     "Securebase,Inc",
-       [3]byte{0, 9, 115}:     "Lenten Technology Co., Ltd.",
-       [3]byte{0, 9, 116}:     "Innopia Technologies, Inc.",
-       [3]byte{0, 9, 117}:     "fSONA Communications Corporation",
-       [3]byte{0, 9, 118}:     "Datasoft ISDN Systems GmbH",
-       [3]byte{0, 9, 119}:     "Brunner Elektronik AG",
-       [3]byte{0, 9, 120}:     "AIJI System Co., Ltd.",
-       [3]byte{0, 9, 121}:     "Advanced Television Systems Committee, Inc.",
-       [3]byte{0, 9, 122}:     "Louis Design Labs.",
-       [3]byte{0, 9, 123}:     "Cisco Systems, Inc",
-       [3]byte{0, 9, 124}:     "Cisco Systems, Inc",
-       [3]byte{0, 9, 125}:     "SecWell Networks Oy",
-       [3]byte{0, 9, 126}:     "IMI TECHNOLOGY CO., LTD",
-       [3]byte{0, 9, 127}:     "Vsecure 2000 LTD.",
-       [3]byte{0, 9, 128}:     "Power Zenith Inc.",
-       [3]byte{0, 9, 129}:     "Newport Networks",
-       [3]byte{0, 9, 130}:     "Loewe Opta GmbH",
-       [3]byte{0, 9, 131}:     "GlobalTop Technology, Inc.",
-       [3]byte{0, 9, 132}:     "MyCasa Network Inc.",
-       [3]byte{0, 9, 133}:     "Auto Telecom Company",
-       [3]byte{0, 9, 134}:     "Metalink LTD.",
-       [3]byte{0, 9, 135}:     "NISHI NIPPON ELECTRIC WIRE & CABLE CO.,LTD.",
-       [3]byte{0, 9, 136}:     "Nudian Electron Co., Ltd.",
-       [3]byte{0, 9, 137}:     "VividLogic Inc.",
-       [3]byte{0, 9, 138}:     "EqualLogic Inc",
-       [3]byte{0, 9, 139}:     "Entropic Communications, Inc.",
-       [3]byte{0, 9, 140}:     "Option Wireless Sweden",
-       [3]byte{0, 9, 141}:     "Velocity Semiconductor",
-       [3]byte{0, 9, 142}:     "ipcas GmbH",
-       [3]byte{0, 9, 143}:     "Cetacean Networks",
-       [3]byte{0, 9, 144}:     "ACKSYS Communications & systems",
-       [3]byte{0, 9, 145}:     "GE Fanuc Automation Manufacturing, Inc.",
-       [3]byte{0, 9, 146}:     "InterEpoch Technology,INC.",
-       [3]byte{0, 9, 147}:     "Visteon Corporation",
-       [3]byte{0, 9, 148}:     "Cronyx Engineering",
-       [3]byte{0, 9, 149}:     "Castle Technology Ltd",
-       [3]byte{0, 9, 150}:     "RDI",
-       [3]byte{0, 9, 151}:     "Nortel Networks",
-       [3]byte{0, 9, 152}:     "Capinfo Company Limited",
-       [3]byte{0, 9, 153}:     "CP GEORGES RENAULT",
-       [3]byte{0, 9, 154}:     "ELMO COMPANY, LIMITED",
-       [3]byte{0, 9, 155}:     "Western Telematic Inc.",
-       [3]byte{0, 9, 156}:     "Naval Research Laboratory",
-       [3]byte{0, 9, 157}:     "Haliplex Communications",
-       [3]byte{0, 9, 158}:     "Testech, Inc.",
-       [3]byte{0, 9, 159}:     "VIDEX INC.",
-       [3]byte{0, 9, 160}:     "Microtechno Corporation",
-       [3]byte{0, 9, 161}:     "Telewise Communications, Inc.",
-       [3]byte{0, 9, 162}:     "Interface Co., Ltd.",
-       [3]byte{0, 9, 163}:     "Leadfly Techologies Corp. Ltd.",
-       [3]byte{0, 9, 164}:     "HARTEC Corporation",
-       [3]byte{0, 9, 165}:     "HANSUNG ELETRONIC INDUSTRIES DEVELOPMENT CO., LTD",
-       [3]byte{0, 9, 166}:     "Ignis Optics, Inc.",
-       [3]byte{0, 9, 167}:     "Bang & Olufsen A/S",
-       [3]byte{0, 9, 168}:     "Eastmode Pte Ltd",
-       [3]byte{0, 9, 169}:     "Ikanos Communications",
-       [3]byte{0, 9, 170}:     "Data Comm for Business, Inc.",
-       [3]byte{0, 9, 171}:     "Netcontrol Oy",
-       [3]byte{0, 9, 172}:     "LANVOICE",
-       [3]byte{0, 9, 173}:     "HYUNDAI SYSCOMM, INC.",
-       [3]byte{0, 9, 174}:     "OKANO ELECTRIC CO.,LTD",
-       [3]byte{0, 9, 175}:     "e-generis",
-       [3]byte{0, 9, 176}:     "Onkyo Corporation",
-       [3]byte{0, 9, 177}:     "Kanematsu Electronics, Ltd.",
-       [3]byte{0, 9, 178}:     "L&F Inc.",
-       [3]byte{0, 9, 179}:     "MCM Systems Ltd",
-       [3]byte{0, 9, 180}:     "KISAN TELECOM CO., LTD.",
-       [3]byte{0, 9, 181}:     "3J Tech. Co., Ltd.",
-       [3]byte{0, 9, 182}:     "Cisco Systems, Inc",
-       [3]byte{0, 9, 183}:     "Cisco Systems, Inc",
-       [3]byte{0, 9, 184}:     "Entise Systems",
-       [3]byte{0, 9, 185}:     "Action Imaging Solutions",
-       [3]byte{0, 9, 186}:     "MAKU Informationstechik GmbH",
-       [3]byte{0, 9, 187}:     "MathStar, Inc.",
-       [3]byte{0, 9, 188}:     "Utility, Inc",
-       [3]byte{0, 9, 189}:     "Epygi Technologies, Ltd.",
-       [3]byte{0, 9, 190}:     "Mamiya-OP Co.,Ltd.",
-       [3]byte{0, 9, 191}:     "Nintendo Co., Ltd.",
-       [3]byte{0, 9, 192}:     "6WIND",
-       [3]byte{0, 9, 193}:     "PROCES-DATA A/S",
-       [3]byte{0, 9, 194}:     "Onity, Inc.",
-       [3]byte{0, 9, 195}:     "NETAS",
-       [3]byte{0, 9, 196}:     "Medicore Co., Ltd",
-       [3]byte{0, 9, 197}:     "KINGENE Technology Corporation",
-       [3]byte{0, 9, 198}:     "Visionics Corporation",
-       [3]byte{0, 9, 199}:     "Movistec",
-       [3]byte{0, 9, 200}:     "SINAGAWA TSUSHIN KEISOU SERVICE",
-       [3]byte{0, 9, 201}:     "BlueWINC Co., Ltd.",
-       [3]byte{0, 9, 202}:     "iMaxNetworks(Shenzhen)Limited.",
-       [3]byte{0, 9, 203}:     "HBrain",
-       [3]byte{0, 9, 204}:     "Moog GmbH",
-       [3]byte{0, 9, 205}:     "HUDSON SOFT CO.,LTD.",
-       [3]byte{0, 9, 206}:     "SpaceBridge Semiconductor Corp.",
-       [3]byte{0, 9, 207}:     "iAd GmbH",
-       [3]byte{0, 9, 208}:     "Solacom Technologies Inc.",
-       [3]byte{0, 9, 209}:     "SERANOA NETWORKS INC",
-       [3]byte{0, 9, 210}:     "Mai Logic Inc.",
-       [3]byte{0, 9, 211}:     "Western DataCom Co., Inc.",
-       [3]byte{0, 9, 212}:     "Transtech Networks",
-       [3]byte{0, 9, 213}:     "Signal Communication, Inc.",
-       [3]byte{0, 9, 214}:     "KNC One GmbH",
-       [3]byte{0, 9, 215}:     "DC Security Products",
-       [3]byte{0, 9, 216}:     "Fält Communications AB",
-       [3]byte{0, 9, 217}:     "Neoscale Systems, Inc",
-       [3]byte{0, 9, 218}:     "Control Module Inc.",
-       [3]byte{0, 9, 219}:     "eSpace",
-       [3]byte{0, 9, 220}:     "Galaxis Technology AG",
-       [3]byte{0, 9, 221}:     "Mavin Technology Inc.",
-       [3]byte{0, 9, 222}:     "Samjin Information & Communications Co., Ltd.",
-       [3]byte{0, 9, 223}:     "Vestel Komunikasyon Sanayi ve Ticaret A.S.",
-       [3]byte{0, 9, 224}:     "XEMICS S.A.",
-       [3]byte{0, 9, 225}:     "Gemtek Technology Co., Ltd.",
-       [3]byte{0, 9, 226}:     "Sinbon Electronics Co., Ltd.",
-       [3]byte{0, 9, 227}:     "Angel Iglesias S.A.",
-       [3]byte{0, 9, 228}:     "K Tech Infosystem Inc.",
-       [3]byte{0, 9, 229}:     "Hottinger Baldwin Messtechnik GmbH",
-       [3]byte{0, 9, 230}:     "Cyber Switching Inc.",
-       [3]byte{0, 9, 231}:     "ADC Techonology",
-       [3]byte{0, 9, 232}:     "Cisco Systems, Inc",
-       [3]byte{0, 9, 233}:     "Cisco Systems, Inc",
-       [3]byte{0, 9, 234}:     "YEM Inc.",
-       [3]byte{0, 9, 235}:     "HuMANDATA LTD.",
-       [3]byte{0, 9, 236}:     "Daktronics, Inc.",
-       [3]byte{0, 9, 237}:     "CipherOptics",
-       [3]byte{0, 9, 238}:     "MEIKYO ELECTRIC CO.,LTD",
-       [3]byte{0, 9, 239}:     "Vocera Communications",
-       [3]byte{0, 9, 240}:     "Shimizu Technology Inc.",
-       [3]byte{0, 9, 241}:     "Yamaki Electric Corporation",
-       [3]byte{0, 9, 242}:     "Cohu, Inc., Electronics Division",
-       [3]byte{0, 9, 243}:     "WELL Communication Corp.",
-       [3]byte{0, 9, 244}:     "Alcon Laboratories, Inc.",
-       [3]byte{0, 9, 245}:     "Emerson Network Power Co.,Ltd",
-       [3]byte{0, 9, 246}:     "Shenzhen Eastern Digital Tech Ltd.",
-       [3]byte{0, 9, 247}:     "SED, a division of Calian",
-       [3]byte{0, 9, 248}:     "UNIMO TECHNOLOGY CO., LTD.",
-       [3]byte{0, 9, 249}:     "ART JAPAN CO., LTD.",
-       [3]byte{0, 9, 251}:     "Philips Patient Monitoring",
-       [3]byte{0, 9, 252}:     "IPFLEX Inc.",
-       [3]byte{0, 9, 253}:     "Ubinetics Limited",
-       [3]byte{0, 9, 254}:     "Daisy Technologies, Inc.",
-       [3]byte{0, 9, 255}:     "X.net 2000 GmbH",
-       [3]byte{0, 10, 0}:      "Mediatek Corp.",
-       [3]byte{0, 10, 1}:      "SOHOware, Inc.",
-       [3]byte{0, 10, 2}:      "ANNSO CO., LTD.",
-       [3]byte{0, 10, 3}:      "ENDESA SERVICIOS, S.L.",
-       [3]byte{0, 10, 4}:      "3Com Ltd",
-       [3]byte{0, 10, 5}:      "Widax Corp.",
-       [3]byte{0, 10, 6}:      "Teledex LLC",
-       [3]byte{0, 10, 7}:      "WebWayOne Ltd",
-       [3]byte{0, 10, 8}:      "Alpine Electronics, Inc.",
-       [3]byte{0, 10, 9}:      "TaraCom Integrated Products, Inc.",
-       [3]byte{0, 10, 10}:     "SUNIX Co., Ltd.",
-       [3]byte{0, 10, 11}:     "Sealevel Systems, Inc.",
-       [3]byte{0, 10, 12}:     "Scientific Research Corporation",
-       [3]byte{0, 10, 13}:     "FCI Deutschland GmbH",
-       [3]byte{0, 10, 14}:     "Invivo Research Inc.",
-       [3]byte{0, 10, 15}:     "Ilryung Telesys, Inc",
-       [3]byte{0, 10, 16}:     "FAST media integrations AG",
-       [3]byte{0, 10, 17}:     "ExPet Technologies, Inc",
-       [3]byte{0, 10, 18}:     "Azylex Technology, Inc",
-       [3]byte{0, 10, 19}:     "Honeywell Video Systems",
-       [3]byte{0, 10, 20}:     "TECO a.s.",
-       [3]byte{0, 10, 21}:     "Silicon Data, Inc",
-       [3]byte{0, 10, 22}:     "Lassen Research",
-       [3]byte{0, 10, 23}:     "NESTAR COMMUNICATIONS, INC",
-       [3]byte{0, 10, 24}:     "Vichel Inc.",
-       [3]byte{0, 10, 25}:     "Valere Power, Inc.",
-       [3]byte{0, 10, 26}:     "Imerge Ltd",
-       [3]byte{0, 10, 27}:     "Stream Labs",
-       [3]byte{0, 10, 28}:     "Bridge Information Co., Ltd.",
-       [3]byte{0, 10, 29}:     "Optical Communications Products Inc.",
-       [3]byte{0, 10, 30}:     "Red-M Products Limited",
-       [3]byte{0, 10, 31}:     "ART WARE Telecommunication Co., Ltd.",
-       [3]byte{0, 10, 32}:     "SVA Networks, Inc.",
-       [3]byte{0, 10, 33}:     "Integra Telecom Co. Ltd",
-       [3]byte{0, 10, 34}:     "Amperion Inc",
-       [3]byte{0, 10, 35}:     "Parama Networks Inc",
-       [3]byte{0, 10, 36}:     "Octave Communications",
-       [3]byte{0, 10, 37}:     "CERAGON NETWORKS",
-       [3]byte{0, 10, 38}:     "CEIA S.p.A.",
-       [3]byte{0, 10, 39}:     "Apple, Inc.",
-       [3]byte{0, 10, 40}:     "Motorola",
-       [3]byte{0, 10, 41}:     "Pan Dacom Networking AG",
-       [3]byte{0, 10, 42}:     "QSI Systems Inc.",
-       [3]byte{0, 10, 43}:     "Etherstuff",
-       [3]byte{0, 10, 44}:     "Active Tchnology Corporation",
-       [3]byte{0, 10, 45}:     "Cabot Communications Limited",
-       [3]byte{0, 10, 46}:     "MAPLE NETWORKS CO., LTD",
-       [3]byte{0, 10, 47}:     "Artnix Inc.",
-       [3]byte{0, 10, 48}:     "Visteon Corporation",
-       [3]byte{0, 10, 49}:     "HCV Consulting",
-       [3]byte{0, 10, 50}:     "Xsido Corporation",
-       [3]byte{0, 10, 51}:     "Emulex Corporation",
-       [3]byte{0, 10, 52}:     "Identicard Systems Incorporated",
-       [3]byte{0, 10, 53}:     "Xilinx",
-       [3]byte{0, 10, 54}:     "Synelec Telecom Multimedia",
-       [3]byte{0, 10, 55}:     "Procera Networks, Inc.",
-       [3]byte{0, 10, 56}:     "Apani Networks",
-       [3]byte{0, 10, 57}:     "LoPA Information Technology",
-       [3]byte{0, 10, 58}:     "J-THREE INTERNATIONAL Holding Co., Ltd.",
-       [3]byte{0, 10, 59}:     "GCT Semiconductor, Inc",
-       [3]byte{0, 10, 60}:     "Enerpoint Ltd.",
-       [3]byte{0, 10, 61}:     "Elo Sistemas Eletronicos S.A.",
-       [3]byte{0, 10, 62}:     "EADS Telecom",
-       [3]byte{0, 10, 63}:     "Data East Corporation",
-       [3]byte{0, 10, 64}:     "Crown Audio -- Harmanm International",
-       [3]byte{0, 10, 65}:     "Cisco Systems, Inc",
-       [3]byte{0, 10, 66}:     "Cisco Systems, Inc",
-       [3]byte{0, 10, 67}:     "Chunghwa Telecom Co., Ltd.",
-       [3]byte{0, 10, 68}:     "Avery Dennison Deutschland GmbH",
-       [3]byte{0, 10, 69}:     "Audio-Technica Corp.",
-       [3]byte{0, 10, 70}:     "ARO WELDING TECHNOLOGIES SAS",
-       [3]byte{0, 10, 71}:     "Allied Vision Technologies",
-       [3]byte{0, 10, 72}:     "Albatron Technology",
-       [3]byte{0, 10, 73}:     "F5 Networks, Inc.",
-       [3]byte{0, 10, 74}:     "Targa Systems Ltd.",
-       [3]byte{0, 10, 75}:     "DataPower Technology, Inc.",
-       [3]byte{0, 10, 76}:     "Molecular Devices Corporation",
-       [3]byte{0, 10, 77}:     "Noritz Corporation",
-       [3]byte{0, 10, 78}:     "UNITEK Electronics INC.",
-       [3]byte{0, 10, 79}:     "Brain Boxes Limited",
-       [3]byte{0, 10, 80}:     "REMOTEK CORPORATION",
-       [3]byte{0, 10, 81}:     "GyroSignal Technology Co., Ltd.",
-       [3]byte{0, 10, 82}:     "AsiaRF Ltd.",
-       [3]byte{0, 10, 83}:     "Intronics, Incorporated",
-       [3]byte{0, 10, 84}:     "Laguna Hills, Inc.",
-       [3]byte{0, 10, 85}:     "MARKEM Corporation",
-       [3]byte{0, 10, 86}:     "HITACHI Maxell Ltd.",
-       [3]byte{0, 10, 87}:     "Hewlett Packard",
-       [3]byte{0, 10, 88}:     "Freyer & Siegel Elektronik GmbH & Co. KG",
-       [3]byte{0, 10, 89}:     "HW server",
-       [3]byte{0, 10, 90}:     "GreenNET Technologies Co.,Ltd.",
-       [3]byte{0, 10, 91}:     "Power-One as",
-       [3]byte{0, 10, 92}:     "Carel s.p.a.",
-       [3]byte{0, 10, 93}:     "FingerTec Worldwide Sdn Bhd",
-       [3]byte{0, 10, 94}:     "3COM Corporation",
-       [3]byte{0, 10, 95}:     "almedio inc.",
-       [3]byte{0, 10, 96}:     "Autostar Technology Pte Ltd",
-       [3]byte{0, 10, 97}:     "Cellinx Systems Inc.",
-       [3]byte{0, 10, 98}:     "Crinis Networks, Inc.",
-       [3]byte{0, 10, 99}:     "DHD GmbH",
-       [3]byte{0, 10, 100}:    "Eracom Technologies",
-       [3]byte{0, 10, 101}:    "GentechMedia.co.,ltd.",
-       [3]byte{0, 10, 102}:    "MITSUBISHI ELECTRIC SYSTEM & SERVICE CO.,LTD.",
-       [3]byte{0, 10, 103}:    "OngCorp",
-       [3]byte{0, 10, 104}:    "Solarflare Communications Inc",
-       [3]byte{0, 10, 105}:    "SUNNY bell Technology Co., Ltd.",
-       [3]byte{0, 10, 106}:    "SVM Microwaves s.r.o.",
-       [3]byte{0, 10, 107}:    "Tadiran Telecom Business Systems LTD",
-       [3]byte{0, 10, 108}:    "Walchem Corporation",
-       [3]byte{0, 10, 109}:    "EKS Elektronikservice GmbH",
-       [3]byte{0, 10, 110}:    "Harmonic, Inc",
-       [3]byte{0, 10, 111}:    "ZyFLEX Technologies Inc",
-       [3]byte{0, 10, 112}:    "MPLS Forum",
-       [3]byte{0, 10, 113}:    "Avrio Technologies, Inc",
-       [3]byte{0, 10, 114}:    "STEC, INC.",
-       [3]byte{0, 10, 115}:    "Scientific Atlanta",
-       [3]byte{0, 10, 116}:    "Manticom Networks Inc.",
-       [3]byte{0, 10, 117}:    "Caterpillar, Inc",
-       [3]byte{0, 10, 118}:    "Beida Jade Bird Huaguang Technology Co.,Ltd",
-       [3]byte{0, 10, 119}:    "Bluewire Technologies LLC",
-       [3]byte{0, 10, 120}:    "OLITEC",
-       [3]byte{0, 10, 121}:    "corega K.K",
-       [3]byte{0, 10, 122}:    "Kyoritsu Electric Co., Ltd.",
-       [3]byte{0, 10, 123}:    "Cornelius Consult",
-       [3]byte{0, 10, 124}:    "Tecton Ltd",
-       [3]byte{0, 10, 125}:    "Valo, Inc.",
-       [3]byte{0, 10, 126}:    "The Advantage Group",
-       [3]byte{0, 10, 127}:    "Teradon Industries, Inc",
-       [3]byte{0, 10, 128}:    "Telkonet Inc.",
-       [3]byte{0, 10, 129}:    "TEIMA Audiotex S.L.",
-       [3]byte{0, 10, 130}:    "TATSUTA SYSTEM ELECTRONICS CO.,LTD.",
-       [3]byte{0, 10, 131}:    "SALTO SYSTEMS S.L.",
-       [3]byte{0, 10, 132}:    "Rainsun Enterprise Co., Ltd.",
-       [3]byte{0, 10, 133}:    "PLAT'C2,Inc",
-       [3]byte{0, 10, 134}:    "Lenze",
-       [3]byte{0, 10, 135}:    "Integrated Micromachines Inc.",
-       [3]byte{0, 10, 136}:    "InCypher S.A.",
-       [3]byte{0, 10, 137}:    "Creval Systems, Inc.",
-       [3]byte{0, 10, 138}:    "Cisco Systems, Inc",
-       [3]byte{0, 10, 139}:    "Cisco Systems, Inc",
-       [3]byte{0, 10, 140}:    "Guardware Systems Ltd.",
-       [3]byte{0, 10, 141}:    "EUROTHERM LIMITED",
-       [3]byte{0, 10, 142}:    "Invacom Ltd",
-       [3]byte{0, 10, 143}:    "Aska International Inc.",
-       [3]byte{0, 10, 144}:    "Bayside Interactive, Inc.",
-       [3]byte{0, 10, 145}:    "HemoCue AB",
-       [3]byte{0, 10, 146}:    "Presonus Corporation",
-       [3]byte{0, 10, 147}:    "W2 Networks, Inc.",
-       [3]byte{0, 10, 148}:    "ShangHai cellink CO., LTD",
-       [3]byte{0, 10, 149}:    "Apple, Inc.",
-       [3]byte{0, 10, 150}:    "MEWTEL TECHNOLOGY INC.",
-       [3]byte{0, 10, 151}:    "SONICblue, Inc.",
-       [3]byte{0, 10, 152}:    "M+F Gwinner GmbH & Co",
-       [3]byte{0, 10, 153}:    "Calamp Wireless Networks Inc",
-       [3]byte{0, 10, 154}:    "Aiptek International Inc",
-       [3]byte{0, 10, 155}:    "TB Group Inc",
-       [3]byte{0, 10, 156}:    "Server Technology, Inc.",
-       [3]byte{0, 10, 157}:    "King Young Technology Co. Ltd.",
-       [3]byte{0, 10, 158}:    "BroadWeb Corportation",
-       [3]byte{0, 10, 159}:    "Pannaway Technologies, Inc.",
-       [3]byte{0, 10, 160}:    "Cedar Point Communications",
-       [3]byte{0, 10, 161}:    "V V S Limited",
-       [3]byte{0, 10, 162}:    "SYSTEK INC.",
-       [3]byte{0, 10, 163}:    "SHIMAFUJI ELECTRIC CO.,LTD.",
-       [3]byte{0, 10, 164}:    "SHANGHAI SURVEILLANCE TECHNOLOGY CO,LTD",
-       [3]byte{0, 10, 165}:    "MAXLINK INDUSTRIES LIMITED",
-       [3]byte{0, 10, 166}:    "Hochiki Corporation",
-       [3]byte{0, 10, 167}:    "FEI Electron Optics",
-       [3]byte{0, 10, 168}:    "ePipe Pty. Ltd.",
-       [3]byte{0, 10, 169}:    "Brooks Automation GmbH",
-       [3]byte{0, 10, 170}:    "AltiGen Communications Inc.",
-       [3]byte{0, 10, 171}:    "Toyota Technical Development Corporation",
-       [3]byte{0, 10, 172}:    "TerraTec Electronic GmbH",
-       [3]byte{0, 10, 173}:    "Stargames Corporation",
-       [3]byte{0, 10, 174}:    "Rosemount Process Analytical",
-       [3]byte{0, 10, 175}:    "Pipal Systems",
-       [3]byte{0, 10, 176}:    "LOYTEC electronics GmbH",
-       [3]byte{0, 10, 177}:    "GENETEC Corporation",
-       [3]byte{0, 10, 178}:    "Fresnel Wireless Systems",
-       [3]byte{0, 10, 179}:    "Fa. GIRA",
-       [3]byte{0, 10, 180}:    "ETIC Telecommunications",
-       [3]byte{0, 10, 181}:    "Digital Electronic Network",
-       [3]byte{0, 10, 182}:    "COMPUNETIX, INC",
-       [3]byte{0, 10, 183}:    "Cisco Systems, Inc",
-       [3]byte{0, 10, 184}:    "Cisco Systems, Inc",
-       [3]byte{0, 10, 185}:    "Astera Technologies Corp.",
-       [3]byte{0, 10, 186}:    "Arcon Technology Limited",
-       [3]byte{0, 10, 187}:    "Taiwan Secom Co,. Ltd",
-       [3]byte{0, 10, 188}:    "Seabridge Ltd.",
-       [3]byte{0, 10, 189}:    "Rupprecht & Patashnick Co.",
-       [3]byte{0, 10, 190}:    "OPNET Technologies CO., LTD.",
-       [3]byte{0, 10, 191}:    "HIROTA SS",
-       [3]byte{0, 10, 192}:    "Fuyoh Video Industry CO., LTD.",
-       [3]byte{0, 10, 193}:    "Futuretel",
-       [3]byte{0, 10, 194}:    "Wuhan FiberHome Digital Technology Co.,Ltd.",
-       [3]byte{0, 10, 195}:    "eM Technics Co., Ltd.",
-       [3]byte{0, 10, 196}:    "Daewoo Teletech Co., Ltd",
-       [3]byte{0, 10, 197}:    "Color Kinetics",
-       [3]byte{0, 10, 198}:    "Overture Networks.",
-       [3]byte{0, 10, 199}:    "Unication Group",
-       [3]byte{0, 10, 200}:    "ZPSYS CO.,LTD. (Planning&Management)",
-       [3]byte{0, 10, 201}:    "Zambeel Inc",
-       [3]byte{0, 10, 202}:    "YOKOYAMA SHOKAI CO.,Ltd.",
-       [3]byte{0, 10, 203}:    "XPAK MSA Group",
-       [3]byte{0, 10, 204}:    "Winnow Networks, Inc.",
-       [3]byte{0, 10, 205}:    "Sunrich Technology Limited",
-       [3]byte{0, 10, 206}:    "RADIANTECH, INC.",
-       [3]byte{0, 10, 207}:    "PROVIDEO Multimedia Co. Ltd.",
-       [3]byte{0, 10, 208}:    "Niigata Develoment Center,  F.I.T. Co., Ltd.",
-       [3]byte{0, 10, 209}:    "MWS",
-       [3]byte{0, 10, 210}:    "JEPICO Corporation",
-       [3]byte{0, 10, 211}:    "INITECH Co., Ltd",
-       [3]byte{0, 10, 212}:    "CoreBell Systems Inc.",
-       [3]byte{0, 10, 213}:    "Brainchild Electronic Co., Ltd.",
-       [3]byte{0, 10, 214}:    "BeamReach Networks",
-       [3]byte{0, 10, 215}:    "Origin ELECTRIC CO.,LTD.",
-       [3]byte{0, 10, 216}:    "IPCserv Technology Corp.",
-       [3]byte{0, 10, 217}:    "Sony Mobile Communications AB",
-       [3]byte{0, 10, 218}:    "Vindicator Technologies",
-       [3]byte{0, 10, 219}:    "SkyPilot Network, Inc",
-       [3]byte{0, 10, 220}:    "RuggedCom Inc.",
-       [3]byte{0, 10, 221}:    "Allworx Corp.",
-       [3]byte{0, 10, 222}:    "Happy Communication Co., Ltd.",
-       [3]byte{0, 10, 223}:    "Gennum Corporation",
-       [3]byte{0, 10, 224}:    "Fujitsu Softek",
-       [3]byte{0, 10, 225}:    "EG Technology",
-       [3]byte{0, 10, 226}:    "Binatone Electronics International, Ltd",
-       [3]byte{0, 10, 227}:    "YANG MEI TECHNOLOGY CO., LTD",
-       [3]byte{0, 10, 228}:    "Wistron Corporation",
-       [3]byte{0, 10, 229}:    "ScottCare Corporation",
-       [3]byte{0, 10, 230}:    "Elitegroup Computer Systems Co.,Ltd.",
-       [3]byte{0, 10, 231}:    "ELIOP S.A.",
-       [3]byte{0, 10, 232}:    "Cathay Roxus Information Technology Co. LTD",
-       [3]byte{0, 10, 233}:    "AirVast Technology Inc.",
-       [3]byte{0, 10, 234}:    "ADAM ELEKTRONIK LTD. ŞTI",
-       [3]byte{0, 10, 235}:    "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{0, 10, 236}:    "Koatsu Gas Kogyo Co., Ltd.",
-       [3]byte{0, 10, 237}:    "HARTING Electronics GmbH",
-       [3]byte{0, 10, 238}:    "GCD Hard- & Software GmbH",
-       [3]byte{0, 10, 239}:    "OTRUM ASA",
-       [3]byte{0, 10, 240}:    "SHIN-OH ELECTRONICS CO., LTD. R&D",
-       [3]byte{0, 10, 241}:    "Clarity Design, Inc.",
-       [3]byte{0, 10, 242}:    "NeoAxiom Corp.",
-       [3]byte{0, 10, 243}:    "Cisco Systems, Inc",
-       [3]byte{0, 10, 244}:    "Cisco Systems, Inc",
-       [3]byte{0, 10, 245}:    "Airgo Networks, Inc.",
-       [3]byte{0, 10, 246}:    "Emerson Climate Technologies Retail Solutions, Inc.",
-       [3]byte{0, 10, 247}:    "Broadcom",
-       [3]byte{0, 10, 248}:    "American Telecare Inc.",
-       [3]byte{0, 10, 249}:    "HiConnect, Inc.",
-       [3]byte{0, 10, 250}:    "Traverse Technologies Australia",
-       [3]byte{0, 10, 251}:    "Ambri Limited",
-       [3]byte{0, 10, 252}:    "Core Tec Communications, LLC",
-       [3]byte{0, 10, 253}:    "Kentec Electronics",
-       [3]byte{0, 10, 254}:    "NovaPal Ltd",
-       [3]byte{0, 10, 255}:    "Kilchherr Elektronik AG",
-       [3]byte{0, 11, 0}:      "FUJIAN START COMPUTER EQUIPMENT CO.,LTD",
-       [3]byte{0, 11, 1}:      "DAIICHI ELECTRONICS CO., LTD.",
-       [3]byte{0, 11, 2}:      "Dallmeier electronic",
-       [3]byte{0, 11, 3}:      "Taekwang Industrial Co., Ltd",
-       [3]byte{0, 11, 4}:      "Volktek Corporation",
-       [3]byte{0, 11, 5}:      "Pacific Broadband Networks",
-       [3]byte{0, 11, 6}:      "ARRIS Group, Inc.",
-       [3]byte{0, 11, 7}:      "Voxpath Networks",
-       [3]byte{0, 11, 8}:      "Pillar Data Systems",
-       [3]byte{0, 11, 9}:      "Ifoundry Systems Singapore",
-       [3]byte{0, 11, 10}:     "dBm Optics",
-       [3]byte{0, 11, 11}:     "Corrent Corporation",
-       [3]byte{0, 11, 12}:     "Agile Systems Inc.",
-       [3]byte{0, 11, 13}:     "Air2U, Inc.",
-       [3]byte{0, 11, 14}:     "Trapeze Networks",
-       [3]byte{0, 11, 15}:     "Bosch Rexroth",
-       [3]byte{0, 11, 16}:     "11wave Technonlogy Co.,Ltd",
-       [3]byte{0, 11, 17}:     "HIMEJI ABC TRADING CO.,LTD.",
-       [3]byte{0, 11, 18}:     "NURI Telecom Co., Ltd.",
-       [3]byte{0, 11, 19}:     "ZETRON INC",
-       [3]byte{0, 11, 20}:     "ViewSonic Corporation",
-       [3]byte{0, 11, 21}:     "Platypus Technology",
-       [3]byte{0, 11, 22}:     "Communication Machinery Corporation",
-       [3]byte{0, 11, 23}:     "MKS Instruments",
-       [3]byte{0, 11, 24}:     "Private",
-       [3]byte{0, 11, 25}:     "Vernier Networks, Inc.",
-       [3]byte{0, 11, 26}:     "Industrial Defender, Inc.",
-       [3]byte{0, 11, 27}:     "Systronix, Inc.",
-       [3]byte{0, 11, 28}:     "SIBCO bv",
-       [3]byte{0, 11, 29}:     "LayerZero Power Systems, Inc.",
-       [3]byte{0, 11, 30}:     "KAPPA opto-electronics GmbH",
-       [3]byte{0, 11, 31}:     "I CON Computer Co.",
-       [3]byte{0, 11, 32}:     "Hirata corporation",
-       [3]byte{0, 11, 33}:     "G-Star Communications Inc.",
-       [3]byte{0, 11, 34}:     "Environmental Systems and Services",
-       [3]byte{0, 11, 35}:     "Siemens Subscriber Networks",
-       [3]byte{0, 11, 36}:     "AirLogic",
-       [3]byte{0, 11, 37}:     "Aeluros",
-       [3]byte{0, 11, 38}:     "Wetek Corporation",
-       [3]byte{0, 11, 39}:     "Scion Corporation",
-       [3]byte{0, 11, 40}:     "Quatech Inc.",
-       [3]byte{0, 11, 41}:     "LS(LG) Industrial Systems co.,Ltd",
-       [3]byte{0, 11, 42}:     "HOWTEL Co., Ltd.",
-       [3]byte{0, 11, 43}:     "HOSTNET CORPORATION",
-       [3]byte{0, 11, 44}:     "Eiki Industrial Co. Ltd.",
-       [3]byte{0, 11, 45}:     "Danfoss Inc.",
-       [3]byte{0, 11, 46}:     "Cal-Comp Electronics & Communications Company Ltd.",
-       [3]byte{0, 11, 47}:     "bplan GmbH",
-       [3]byte{0, 11, 48}:     "Beijing Gongye Science & Technology Co.,Ltd",
-       [3]byte{0, 11, 49}:     "Yantai ZhiYang Scientific and technology industry CO., LTD",
-       [3]byte{0, 11, 50}:     "VORMETRIC, INC.",
-       [3]byte{0, 11, 51}:     "Vivato Technologies",
-       [3]byte{0, 11, 52}:     "ShangHai Broadband Technologies CO.LTD",
-       [3]byte{0, 11, 53}:     "Quad Bit System co., Ltd.",
-       [3]byte{0, 11, 54}:     "Productivity Systems, Inc.",
-       [3]byte{0, 11, 55}:     "MANUFACTURE DES MONTRES ROLEX SA",
-       [3]byte{0, 11, 56}:     "Knürr GmbH",
-       [3]byte{0, 11, 57}:     "Keisoku Giken Co.,Ltd.",
-       [3]byte{0, 11, 58}:     "QuStream Corporation",
-       [3]byte{0, 11, 59}:     "devolo AG",
-       [3]byte{0, 11, 60}:     "Cygnal Integrated Products, Inc.",
-       [3]byte{0, 11, 61}:     "CONTAL OK Ltd.",
-       [3]byte{0, 11, 62}:     "BittWare, Inc",
-       [3]byte{0, 11, 63}:     "Anthology Solutions Inc.",
-       [3]byte{0, 11, 64}:     "Oclaro",
-       [3]byte{0, 11, 65}:     "Ing. Büro Dr. Beutlhauser",
-       [3]byte{0, 11, 66}:     "commax Co., Ltd.",
-       [3]byte{0, 11, 67}:     "Microscan Systems, Inc.",
-       [3]byte{0, 11, 68}:     "Concord IDea Corp.",
-       [3]byte{0, 11, 69}:     "Cisco Systems, Inc",
-       [3]byte{0, 11, 70}:     "Cisco Systems, Inc",
-       [3]byte{0, 11, 71}:     "Advanced Energy",
-       [3]byte{0, 11, 72}:     "sofrel",
-       [3]byte{0, 11, 73}:     "RF-Link System Inc.",
-       [3]byte{0, 11, 74}:     "Visimetrics (UK) Ltd",
-       [3]byte{0, 11, 75}:     "VISIOWAVE SA",
-       [3]byte{0, 11, 76}:     "Clarion (M) Sdn Bhd",
-       [3]byte{0, 11, 77}:     "Emuzed",
-       [3]byte{0, 11, 78}:     "VertexRSI, General Dynamics SatCOM Technologies, Inc.",
-       [3]byte{0, 11, 79}:     "Verifone",
-       [3]byte{0, 11, 80}:     "Oxygnet",
-       [3]byte{0, 11, 81}:     "Micetek International Inc.",
-       [3]byte{0, 11, 82}:     "JOYMAX ELECTRONICS CO. LTD.",
-       [3]byte{0, 11, 83}:     "INITIUM Co., Ltd.",
-       [3]byte{0, 11, 84}:     "BiTMICRO Networks, Inc.",
-       [3]byte{0, 11, 85}:     "ADInstruments",
-       [3]byte{0, 11, 86}:     "Cybernetics",
-       [3]byte{0, 11, 87}:     "Silicon Laboratories",
-       [3]byte{0, 11, 88}:     "Astronautics C.A  LTD",
-       [3]byte{0, 11, 89}:     "ScriptPro, LLC",
-       [3]byte{0, 11, 90}:     "HyperEdge",
-       [3]byte{0, 11, 91}:     "Rincon Research Corporation",
-       [3]byte{0, 11, 92}:     "Newtech Co.,Ltd",
-       [3]byte{0, 11, 93}:     "FUJITSU LIMITED",
-       [3]byte{0, 11, 94}:     "Audio Engineering Society Inc.",
-       [3]byte{0, 11, 95}:     "Cisco Systems, Inc",
-       [3]byte{0, 11, 96}:     "Cisco Systems, Inc",
-       [3]byte{0, 11, 97}:     "Friedrich Lütze GmbH & Co. KG",
-       [3]byte{0, 11, 98}:     "ib-mohnen KG",
-       [3]byte{0, 11, 99}:     "Kaleidescape",
-       [3]byte{0, 11, 100}:    "Kieback & Peter GmbH & Co KG",
-       [3]byte{0, 11, 101}:    "Sy.A.C. srl",
-       [3]byte{0, 11, 102}:    "Teralink Communications",
-       [3]byte{0, 11, 103}:    "Topview Technology Corporation",
-       [3]byte{0, 11, 104}:    "Addvalue Communications Pte Ltd",
-       [3]byte{0, 11, 105}:    "Franke Finland Oy",
-       [3]byte{0, 11, 106}:    "Asiarock Technology Limited",
-       [3]byte{0, 11, 107}:    "Wistron Neweb Corporation",
-       [3]byte{0, 11, 108}:    "Sychip Inc.",
-       [3]byte{0, 11, 109}:    "SOLECTRON JAPAN NAKANIIDA",
-       [3]byte{0, 11, 110}:    "Neff Instrument Corp.",
-       [3]byte{0, 11, 111}:    "Media Streaming Networks Inc",
-       [3]byte{0, 11, 112}:    "Load Technology, Inc.",
-       [3]byte{0, 11, 113}:    "Litchfield Communications Inc.",
-       [3]byte{0, 11, 114}:    "Lawo AG",
-       [3]byte{0, 11, 115}:    "Kodeos Communications",
-       [3]byte{0, 11, 116}:    "Kingwave Technology Co., Ltd.",
-       [3]byte{0, 11, 117}:    "Iosoft Ltd.",
-       [3]byte{0, 11, 118}:    "ET&T Technology Co. Ltd.",
-       [3]byte{0, 11, 119}:    "Cogent Systems, Inc.",
-       [3]byte{0, 11, 120}:    "TAIFATECH INC.",
-       [3]byte{0, 11, 121}:    "X-COM, Inc.",
-       [3]byte{0, 11, 122}:    "L-3 Linkabit",
-       [3]byte{0, 11, 123}:    "Test-Um Inc.",
-       [3]byte{0, 11, 124}:    "Telex Communications",
-       [3]byte{0, 11, 125}:    "SOLOMON EXTREME INTERNATIONAL LTD.",
-       [3]byte{0, 11, 126}:    "SAGINOMIYA Seisakusho Inc.",
-       [3]byte{0, 11, 127}:    "Align Engineering LLC",
-       [3]byte{0, 11, 128}:    "Lycium Networks",
-       [3]byte{0, 11, 129}:    "Kaparel Corporation",
-       [3]byte{0, 11, 130}:    "Grandstream Networks, Inc.",
-       [3]byte{0, 11, 131}:    "DATAWATT B.V.",
-       [3]byte{0, 11, 132}:    "BODET",
-       [3]byte{0, 11, 133}:    "Cisco Systems, Inc",
-       [3]byte{0, 11, 134}:    "Aruba Networks",
-       [3]byte{0, 11, 135}:    "American Reliance Inc.",
-       [3]byte{0, 11, 136}:    "Vidisco ltd.",
-       [3]byte{0, 11, 137}:    "Top Global Technology, Ltd.",
-       [3]byte{0, 11, 138}:    "MITEQ Inc.",
-       [3]byte{0, 11, 139}:    "KERAJET, S.A.",
-       [3]byte{0, 11, 140}:    "Flextronics",
-       [3]byte{0, 11, 141}:    "Avvio Networks",
-       [3]byte{0, 11, 142}:    "Ascent Corporation",
-       [3]byte{0, 11, 143}:    "AKITA ELECTRONICS SYSTEMS CO.,LTD.",
-       [3]byte{0, 11, 144}:    "ADVA Optical Networking Ltd.",
-       [3]byte{0, 11, 145}:    "Aglaia Gesellschaft für Bildverarbeitung und Kommunikation mbH",
-       [3]byte{0, 11, 146}:    "Ascom Danmark A/S",
-       [3]byte{0, 11, 147}:    "Ritter Elektronik",
-       [3]byte{0, 11, 148}:    "Digital Monitoring Products, Inc.",
-       [3]byte{0, 11, 149}:    "eBet Gaming Systems Pty Ltd",
-       [3]byte{0, 11, 150}:    "Innotrac Diagnostics Oy",
-       [3]byte{0, 11, 151}:    "Matsushita Electric Industrial Co.,Ltd.",
-       [3]byte{0, 11, 152}:    "NiceTechVision",
-       [3]byte{0, 11, 153}:    "SensAble Technologies, Inc.",
-       [3]byte{0, 11, 154}:    "Shanghai Ulink Telecom Equipment Co. Ltd.",
-       [3]byte{0, 11, 155}:    "Sirius System Co, Ltd.",
-       [3]byte{0, 11, 156}:    "TriBeam Technologies, Inc.",
-       [3]byte{0, 11, 157}:    "TwinMOS Technologies Inc.",
-       [3]byte{0, 11, 158}:    "Yasing Technology Corp.",
-       [3]byte{0, 11, 159}:    "Neue ELSA GmbH",
-       [3]byte{0, 11, 160}:    "T&L Information Inc.",
-       [3]byte{0, 11, 161}:    "Fujikura Solutions Ltd.",
-       [3]byte{0, 11, 162}:    "Sumitomo Electric Industries,Ltd",
-       [3]byte{0, 11, 163}:    "Siemens AG, I&S",
-       [3]byte{0, 11, 164}:    "Shiron Satellite Communications Ltd. (1996)",
-       [3]byte{0, 11, 165}:    "Quasar Cipta Mandiri, PT",
-       [3]byte{0, 11, 166}:    "Miyakawa Electric Works Ltd.",
-       [3]byte{0, 11, 167}:    "Maranti Networks",
-       [3]byte{0, 11, 168}:    "HANBACK ELECTRONICS CO., LTD.",
-       [3]byte{0, 11, 169}:    "CloudShield Technologies, Inc.",
-       [3]byte{0, 11, 170}:    "Aiphone co.,Ltd",
-       [3]byte{0, 11, 171}:    "Advantech Technology (CHINA) Co., Ltd.",
-       [3]byte{0, 11, 172}:    "3Com Ltd",
-       [3]byte{0, 11, 173}:    "PC-PoS Inc.",
-       [3]byte{0, 11, 174}:    "Vitals System Inc.",
-       [3]byte{0, 11, 175}:    "WOOJU COMMUNICATIONS Co,.Ltd",
-       [3]byte{0, 11, 176}:    "Sysnet Telematica srl",
-       [3]byte{0, 11, 177}:    "Super Star Technology Co., Ltd.",
-       [3]byte{0, 11, 178}:    "SMALLBIG TECHNOLOGY",
-       [3]byte{0, 11, 179}:    "RiT technologies Ltd.",
-       [3]byte{0, 11, 180}:    "RDC Semiconductor Inc.,",
-       [3]byte{0, 11, 181}:    "nStor Technologies, Inc.",
-       [3]byte{0, 11, 182}:    "Metalligence Technology Corp.",
-       [3]byte{0, 11, 183}:    "Micro Systems Co.,Ltd.",
-       [3]byte{0, 11, 184}:    "Kihoku Electronic Co.",
-       [3]byte{0, 11, 185}:    "Imsys AB",
-       [3]byte{0, 11, 186}:    "Harmonic, Inc",
-       [3]byte{0, 11, 187}:    "Etin Systems Co., Ltd",
-       [3]byte{0, 11, 188}:    "En Garde Systems, Inc.",
-       [3]byte{0, 11, 189}:    "Connexionz Limited",
-       [3]byte{0, 11, 190}:    "Cisco Systems, Inc",
-       [3]byte{0, 11, 191}:    "Cisco Systems, Inc",
-       [3]byte{0, 11, 192}:    "China IWNComm Co., Ltd.",
-       [3]byte{0, 11, 193}:    "Bay Microsystems, Inc.",
-       [3]byte{0, 11, 194}:    "Corinex Communication Corp.",
-       [3]byte{0, 11, 195}:    "Multiplex, Inc.",
-       [3]byte{0, 11, 196}:    "BIOTRONIK GmbH & Co",
-       [3]byte{0, 11, 197}:    "SMC Networks, Inc.",
-       [3]byte{0, 11, 198}:    "ISAC, Inc.",
-       [3]byte{0, 11, 199}:    "ICET S.p.A.",
-       [3]byte{0, 11, 200}:    "AirFlow Networks",
-       [3]byte{0, 11, 201}:    "Electroline Equipment",
-       [3]byte{0, 11, 202}:    "DATAVAN TC",
-       [3]byte{0, 11, 203}:    "Fagor Automation , S. Coop",
-       [3]byte{0, 11, 204}:    "JUSAN, S.A.",
-       [3]byte{0, 11, 205}:    "Hewlett Packard",
-       [3]byte{0, 11, 206}:    "Free2move AB",
-       [3]byte{0, 11, 207}:    "AGFA NDT INC.",
-       [3]byte{0, 11, 208}:    "XiMeta Technology Americas Inc.",
-       [3]byte{0, 11, 209}:    "Aeronix, Inc.",
-       [3]byte{0, 11, 210}:    "Remopro Technology Inc.",
-       [3]byte{0, 11, 211}:    "cd3o",
-       [3]byte{0, 11, 212}:    "Beijing Wise Technology & Science Development Co.Ltd",
-       [3]byte{0, 11, 213}:    "Nvergence, Inc.",
-       [3]byte{0, 11, 214}:    "Paxton Access Ltd",
-       [3]byte{0, 11, 215}:    "DORMA Time + Access GmbH",
-       [3]byte{0, 11, 216}:    "Industrial Scientific Corp.",
-       [3]byte{0, 11, 217}:    "General Hydrogen",
-       [3]byte{0, 11, 218}:    "EyeCross Co.,Inc.",
-       [3]byte{0, 11, 219}:    "Dell Inc.",
-       [3]byte{0, 11, 220}:    "AKCP",
-       [3]byte{0, 11, 221}:    "TOHOKU RICOH Co., LTD.",
-       [3]byte{0, 11, 222}:    "TELDIX GmbH",
-       [3]byte{0, 11, 223}:    "Shenzhen RouterD Networks Limited",
-       [3]byte{0, 11, 224}:    "SercoNet Ltd.",
-       [3]byte{0, 11, 225}:    "Nokia NET Product Operations",
-       [3]byte{0, 11, 226}:    "Lumenera Corporation",
-       [3]byte{0, 11, 227}:    "Key Stream Co., Ltd.",
-       [3]byte{0, 11, 228}:    "Hosiden Corporation",
-       [3]byte{0, 11, 229}:    "HIMS International Corporation",
-       [3]byte{0, 11, 230}:    "Datel Electronics",
-       [3]byte{0, 11, 231}:    "COMFLUX TECHNOLOGY INC.",
-       [3]byte{0, 11, 232}:    "AOIP",
-       [3]byte{0, 11, 233}:    "Actel Corporation",
-       [3]byte{0, 11, 234}:    "Zultys Technologies",
-       [3]byte{0, 11, 235}:    "Systegra AG",
-       [3]byte{0, 11, 236}:    "NIPPON ELECTRIC INSTRUMENT, INC.",
-       [3]byte{0, 11, 237}:    "ELM Inc.",
-       [3]byte{0, 11, 238}:    "inc.jet, Incorporated",
-       [3]byte{0, 11, 239}:    "Code Corporation",
-       [3]byte{0, 11, 240}:    "MoTEX Products Co., Ltd.",
-       [3]byte{0, 11, 241}:    "LAP Laser Applikations",
-       [3]byte{0, 11, 242}:    "Chih-Kan Technology Co., Ltd.",
-       [3]byte{0, 11, 243}:    "BAE SYSTEMS",
-       [3]byte{0, 11, 244}:    "Private",
-       [3]byte{0, 11, 245}:    "Shanghai Sibo Telecom Technology Co.,Ltd",
-       [3]byte{0, 11, 246}:    "Nitgen Co., Ltd",
-       [3]byte{0, 11, 247}:    "NIDEK CO.,LTD",
-       [3]byte{0, 11, 248}:    "Infinera",
-       [3]byte{0, 11, 249}:    "Gemstone Communications, Inc.",
-       [3]byte{0, 11, 250}:    "EXEMYS SRL",
-       [3]byte{0, 11, 251}:    "D-NET International Corporation",
-       [3]byte{0, 11, 252}:    "Cisco Systems, Inc",
-       [3]byte{0, 11, 253}:    "Cisco Systems, Inc",
-       [3]byte{0, 11, 254}:    "CASTEL Broadband Limited",
-       [3]byte{0, 11, 255}:    "Berkeley Camera Engineering",
-       [3]byte{0, 12, 0}:      "BEB Industrie-Elektronik AG",
-       [3]byte{0, 12, 1}:      "Abatron AG",
-       [3]byte{0, 12, 2}:      "ABB Oy",
-       [3]byte{0, 12, 3}:      "HDMI Licensing, LLC",
-       [3]byte{0, 12, 4}:      "Tecnova",
-       [3]byte{0, 12, 5}:      "RPA Reserch Co., Ltd.",
-       [3]byte{0, 12, 6}:      "Nixvue Systems  Pte Ltd",
-       [3]byte{0, 12, 7}:      "Iftest AG",
-       [3]byte{0, 12, 8}:      "HUMEX Technologies Corp.",
-       [3]byte{0, 12, 9}:      "Hitachi IE Systems Co., Ltd",
-       [3]byte{0, 12, 10}:     "Guangdong Province Electronic Technology Research Institute",
-       [3]byte{0, 12, 11}:     "Broadbus Technologies",
-       [3]byte{0, 12, 12}:     "APPRO TECHNOLOGY INC.",
-       [3]byte{0, 12, 13}:     "Communications & Power Industries / Satcom Division",
-       [3]byte{0, 12, 14}:     "XtremeSpectrum, Inc.",
-       [3]byte{0, 12, 15}:     "Techno-One Co., Ltd",
-       [3]byte{0, 12, 16}:     "PNI Corporation",
-       [3]byte{0, 12, 17}:     "NIPPON DEMPA CO.,LTD.",
-       [3]byte{0, 12, 18}:     "Micro-Optronic-Messtechnik GmbH",
-       [3]byte{0, 12, 19}:     "MediaQ",
-       [3]byte{0, 12, 20}:     "Diagnostic Instruments, Inc.",
-       [3]byte{0, 12, 21}:     "CyberPower Systems, Inc.",
-       [3]byte{0, 12, 22}:     "Concorde Microsystems Inc.",
-       [3]byte{0, 12, 23}:     "AJA Video Systems Inc",
-       [3]byte{0, 12, 24}:     "Zenisu Keisoku Inc.",
-       [3]byte{0, 12, 25}:     "Telio Communications GmbH",
-       [3]byte{0, 12, 26}:     "Quest Technical Solutions Inc.",
-       [3]byte{0, 12, 27}:     "ORACOM Co, Ltd.",
-       [3]byte{0, 12, 28}:     "MicroWeb Co., Ltd.",
-       [3]byte{0, 12, 29}:     "Mettler & Fuchs AG",
-       [3]byte{0, 12, 30}:     "Global Cache",
-       [3]byte{0, 12, 31}:     "Glimmerglass Networks",
-       [3]byte{0, 12, 32}:     "Fi WIn, Inc.",
-       [3]byte{0, 12, 33}:     "Faculty of Science and Technology, Keio University",
-       [3]byte{0, 12, 34}:     "Double D Electronics Ltd",
-       [3]byte{0, 12, 35}:     "Beijing Lanchuan Tech. Co., Ltd.",
-       [3]byte{0, 12, 36}:     "ANATOR",
-       [3]byte{0, 12, 37}:     "Allied Telesis Labs, Inc.",
-       [3]byte{0, 12, 38}:     "Weintek Labs. Inc.",
-       [3]byte{0, 12, 39}:     "Sammy Corporation",
-       [3]byte{0, 12, 40}:     "RIFATRON",
-       [3]byte{0, 12, 41}:     "VMware, Inc.",
-       [3]byte{0, 12, 42}:     "OCTTEL Communication Co., Ltd.",
-       [3]byte{0, 12, 43}:     "ELIAS Technology, Inc.",
-       [3]byte{0, 12, 44}:     "Enwiser Inc.",
-       [3]byte{0, 12, 45}:     "FullWave Technology Co., Ltd.",
-       [3]byte{0, 12, 46}:     "Openet information technology(shenzhen) Co., Ltd.",
-       [3]byte{0, 12, 47}:     "SeorimTechnology Co.,Ltd.",
-       [3]byte{0, 12, 48}:     "Cisco Systems, Inc",
-       [3]byte{0, 12, 49}:     "Cisco Systems, Inc",
-       [3]byte{0, 12, 50}:     "Avionic Design Development GmbH",
-       [3]byte{0, 12, 51}:     "Compucase Enterprise Co. Ltd.",
-       [3]byte{0, 12, 52}:     "Vixen Co., Ltd.",
-       [3]byte{0, 12, 53}:     "KaVo Dental GmbH & Co. KG",
-       [3]byte{0, 12, 54}:     "SHARP TAKAYA ELECTRONICS INDUSTRY CO.,LTD.",
-       [3]byte{0, 12, 55}:     "Geomation, Inc.",
-       [3]byte{0, 12, 56}:     "TelcoBridges Inc.",
-       [3]byte{0, 12, 57}:     "Sentinel Wireless Inc.",
-       [3]byte{0, 12, 58}:     "Oxance",
-       [3]byte{0, 12, 59}:     "Orion Electric Co., Ltd.",
-       [3]byte{0, 12, 60}:     "MediaChorus, Inc.",
-       [3]byte{0, 12, 61}:     "Glsystech Co., Ltd.",
-       [3]byte{0, 12, 62}:     "Crest Audio",
-       [3]byte{0, 12, 63}:     "Cogent Defence & Security Networks,",
-       [3]byte{0, 12, 64}:     "Altech Controls",
-       [3]byte{0, 12, 65}:     "Cisco-Linksys, LLC",
-       [3]byte{0, 12, 66}:     "Routerboard.com",
-       [3]byte{0, 12, 67}:     "Ralink Technology, Corp.",
-       [3]byte{0, 12, 68}:     "Automated Interfaces, Inc.",
-       [3]byte{0, 12, 69}:     "Animation Technologies Inc.",
-       [3]byte{0, 12, 70}:     "Allied Telesyn Inc.",
-       [3]byte{0, 12, 71}:     "SK Teletech(R&D Planning Team)",
-       [3]byte{0, 12, 72}:     "QoStek Corporation",
-       [3]byte{0, 12, 73}:     "Dangaard Telecom Denmark A/S",
-       [3]byte{0, 12, 74}:     "Cygnus Microsystems (P) Limited",
-       [3]byte{0, 12, 75}:     "Cheops Elektronik",
-       [3]byte{0, 12, 76}:     "Arcor AG&Co.",
-       [3]byte{0, 12, 77}:     "Curtiss-Wright Controls Avionics & Electronics",
-       [3]byte{0, 12, 78}:     "Winbest Technology CO,LT",
-       [3]byte{0, 12, 79}:     "UDTech Japan Corporation",
-       [3]byte{0, 12, 80}:     "Seagate Technology",
-       [3]byte{0, 12, 81}:     "Scientific Technologies Inc.",
-       [3]byte{0, 12, 82}:     "Roll Systems Inc.",
-       [3]byte{0, 12, 83}:     "Private",
-       [3]byte{0, 12, 84}:     "Pedestal Networks, Inc",
-       [3]byte{0, 12, 85}:     "Microlink Communications Inc.",
-       [3]byte{0, 12, 86}:     "Megatel Computer (1986) Corp.",
-       [3]byte{0, 12, 87}:     "MACKIE Engineering Services Belgium BVBA",
-       [3]byte{0, 12, 88}:     "M&S Systems",
-       [3]byte{0, 12, 89}:     "Indyme Electronics, Inc.",
-       [3]byte{0, 12, 90}:     "IBSmm Embedded Electronics Consulting",
-       [3]byte{0, 12, 91}:     "HANWANG TECHNOLOGY CO.,LTD",
-       [3]byte{0, 12, 92}:     "GTN Systems B.V.",
-       [3]byte{0, 12, 93}:     "CHIC TECHNOLOGY (CHINA) CORP.",
-       [3]byte{0, 12, 94}:     "Calypso Medical",
-       [3]byte{0, 12, 95}:     "Avtec, Inc.",
-       [3]byte{0, 12, 96}:     "ACM Systems",
-       [3]byte{0, 12, 97}:     "AC Tech corporation DBA Advanced Digital",
-       [3]byte{0, 12, 98}:     "ABB AB, Cewe-Control",
-       [3]byte{0, 12, 99}:     "Zenith Electronics Corporation",
-       [3]byte{0, 12, 100}:    "X2 MSA Group",
-       [3]byte{0, 12, 101}:    "Sunin Telecom",
-       [3]byte{0, 12, 102}:    "Pronto Networks Inc",
-       [3]byte{0, 12, 103}:    "OYO ELECTRIC CO.,LTD",
-       [3]byte{0, 12, 104}:    "SigmaTel, Inc.",
-       [3]byte{0, 12, 105}:    "National Radio Astronomy Observatory",
-       [3]byte{0, 12, 106}:    "MBARI",
-       [3]byte{0, 12, 107}:    "Kurz Industrie-Elektronik GmbH",
-       [3]byte{0, 12, 108}:    "Elgato Systems LLC",
-       [3]byte{0, 12, 109}:    "Edwards Ltd.",
-       [3]byte{0, 12, 110}:    "ASUSTek COMPUTER INC.",
-       [3]byte{0, 12, 111}:    "Amtek system co.,LTD.",
-       [3]byte{0, 12, 112}:    "ACC GmbH",
-       [3]byte{0, 12, 113}:    "Wybron, Inc",
-       [3]byte{0, 12, 114}:    "Tempearl Industrial Co., Ltd.",
-       [3]byte{0, 12, 115}:    "TELSON ELECTRONICS CO., LTD",
-       [3]byte{0, 12, 116}:    "RIVERTEC CORPORATION",
-       [3]byte{0, 12, 117}:    "Oriental integrated electronics. LTD",
-       [3]byte{0, 12, 118}:    "MICRO-STAR INTERNATIONAL CO., LTD.",
-       [3]byte{0, 12, 119}:    "Life Racing Ltd",
-       [3]byte{0, 12, 120}:    "In-Tech Electronics Limited",
-       [3]byte{0, 12, 121}:    "Extel Communications P/L",
-       [3]byte{0, 12, 122}:    "DaTARIUS Technologies GmbH",
-       [3]byte{0, 12, 123}:    "ALPHA PROJECT Co.,Ltd.",
-       [3]byte{0, 12, 124}:    "Internet Information Image Inc.",
-       [3]byte{0, 12, 125}:    "TEIKOKU ELECTRIC MFG. CO., LTD",
-       [3]byte{0, 12, 126}:    "Tellium Incorporated",
-       [3]byte{0, 12, 127}:    "synertronixx GmbH",
-       [3]byte{0, 12, 128}:    "Opelcomm Inc.",
-       [3]byte{0, 12, 129}:    "Schneider Electric (Australia)",
-       [3]byte{0, 12, 130}:    "NETWORK TECHNOLOGIES INC",
-       [3]byte{0, 12, 131}:    "Logical Solutions",
-       [3]byte{0, 12, 132}:    "Eazix, Inc.",
-       [3]byte{0, 12, 133}:    "Cisco Systems, Inc",
-       [3]byte{0, 12, 134}:    "Cisco Systems, Inc",
-       [3]byte{0, 12, 135}:    "AMD",
-       [3]byte{0, 12, 136}:    "Apache Micro Peripherals, Inc.",
-       [3]byte{0, 12, 137}:    "AC Electric Vehicles, Ltd.",
-       [3]byte{0, 12, 138}:    "Bose Corporation",
-       [3]byte{0, 12, 139}:    "Connect Tech Inc",
-       [3]byte{0, 12, 140}:    "KODICOM CO.,LTD.",
-       [3]byte{0, 12, 141}:    "MATRIX VISION GmbH",
-       [3]byte{0, 12, 142}:    "Mentor Engineering Inc",
-       [3]byte{0, 12, 143}:    "Nergal s.r.l.",
-       [3]byte{0, 12, 144}:    "Octasic Inc.",
-       [3]byte{0, 12, 145}:    "Riverhead Networks Inc.",
-       [3]byte{0, 12, 146}:    "WolfVision Gmbh",
-       [3]byte{0, 12, 147}:    "Xeline Co., Ltd.",
-       [3]byte{0, 12, 148}:    "United Electronic Industries, Inc. (EUI)",
-       [3]byte{0, 12, 149}:    "PrimeNet",
-       [3]byte{0, 12, 150}:    "OQO, Inc.",
-       [3]byte{0, 12, 151}:    "NV ADB TTV Technologies SA",
-       [3]byte{0, 12, 152}:    "LETEK Communications Inc.",
-       [3]byte{0, 12, 153}:    "HITEL LINK Co.,Ltd",
-       [3]byte{0, 12, 154}:    "Hitech Electronics Corp.",
-       [3]byte{0, 12, 155}:    "EE Solutions, Inc",
-       [3]byte{0, 12, 156}:    "Chongho information & communications",
-       [3]byte{0, 12, 157}:    "UbeeAirWalk, Inc.",
-       [3]byte{0, 12, 158}:    "MemoryLink Corp.",
-       [3]byte{0, 12, 159}:    "NKE Corporation",
-       [3]byte{0, 12, 160}:    "StorCase Technology, Inc.",
-       [3]byte{0, 12, 161}:    "SIGMACOM Co., LTD.",
-       [3]byte{0, 12, 162}:    "Harmonic Video Network",
-       [3]byte{0, 12, 163}:    "Rancho Technology, Inc.",
-       [3]byte{0, 12, 164}:    "Prompttec Product Management GmbH",
-       [3]byte{0, 12, 165}:    "Naman NZ LTd",
-       [3]byte{0, 12, 166}:    "Mintera Corporation",
-       [3]byte{0, 12, 167}:    "Metro (Suzhou) Technologies Co., Ltd.",
-       [3]byte{0, 12, 168}:    "Garuda Networks Corporation",
-       [3]byte{0, 12, 169}:    "Ebtron Inc.",
-       [3]byte{0, 12, 170}:    "Cubic Transportation Systems Inc",
-       [3]byte{0, 12, 171}:    "Commend International GmbH",
-       [3]byte{0, 12, 172}:    "Citizen Watch Co., Ltd.",
-       [3]byte{0, 12, 173}:    "BTU International",
-       [3]byte{0, 12, 174}:    "Ailocom Oy",
-       [3]byte{0, 12, 175}:    "TRI TERM CO.,LTD.",
-       [3]byte{0, 12, 176}:    "Star Semiconductor Corporation",
-       [3]byte{0, 12, 177}:    "Salland Engineering (Europe) BV",
-       [3]byte{0, 12, 178}:    "UNION co., ltd.",
-       [3]byte{0, 12, 179}:    "ROUND Co.,Ltd.",
-       [3]byte{0, 12, 180}:    "AutoCell Laboratories, Inc.",
-       [3]byte{0, 12, 181}:    "Premier Technolgies, Inc",
-       [3]byte{0, 12, 182}:    "NANJING SEU MOBILE & INTERNET TECHNOLOGY CO.,LTD",
-       [3]byte{0, 12, 183}:    "Nanjing Huazhuo Electronics Co., Ltd.",
-       [3]byte{0, 12, 184}:    "MEDION AG",
-       [3]byte{0, 12, 185}:    "LEA",
-       [3]byte{0, 12, 186}:    "Jamex, Inc.",
-       [3]byte{0, 12, 187}:    "ISKRAEMECO",
-       [3]byte{0, 12, 188}:    "Iscutum",
-       [3]byte{0, 12, 189}:    "Interface Masters, Inc",
-       [3]byte{0, 12, 190}:    "Innominate Security Technologies AG",
-       [3]byte{0, 12, 191}:    "Holy Stone Ent. Co., Ltd.",
-       [3]byte{0, 12, 192}:    "Genera Oy",
-       [3]byte{0, 12, 193}:    "Eaton Corporation",
-       [3]byte{0, 12, 194}:    "ControlNet (India) Private Limited",
-       [3]byte{0, 12, 195}:    "BeWAN systems",
-       [3]byte{0, 12, 196}:    "Tiptel AG",
-       [3]byte{0, 12, 197}:    "Nextlink Co., Ltd.",
-       [3]byte{0, 12, 198}:    "Ka-Ro electronics GmbH",
-       [3]byte{0, 12, 199}:    "Intelligent Computer Solutions Inc.",
-       [3]byte{0, 12, 200}:    "Xytronix Research & Design, Inc.",
-       [3]byte{0, 12, 201}:    "ILWOO DATA & TECHNOLOGY CO.,LTD",
-       [3]byte{0, 12, 202}:    "HGST a Western Digital Company",
-       [3]byte{0, 12, 203}:    "Design Combus Ltd",
-       [3]byte{0, 12, 204}:    "Aeroscout Ltd.",
-       [3]byte{0, 12, 205}:    "IEC - TC57",
-       [3]byte{0, 12, 206}:    "Cisco Systems, Inc",
-       [3]byte{0, 12, 207}:    "Cisco Systems, Inc",
-       [3]byte{0, 12, 208}:    "Symetrix",
-       [3]byte{0, 12, 209}:    "SFOM Technology Corp.",
-       [3]byte{0, 12, 210}:    "Schaffner EMV AG",
-       [3]byte{0, 12, 211}:    "Prettl Elektronik Radeberg GmbH",
-       [3]byte{0, 12, 212}:    "Positron Public Safety Systems inc.",
-       [3]byte{0, 12, 213}:    "Passave Inc.",
-       [3]byte{0, 12, 214}:    "PARTNER TECH",
-       [3]byte{0, 12, 215}:    "Nallatech Ltd",
-       [3]byte{0, 12, 216}:    "M. K. Juchheim GmbH & Co",
-       [3]byte{0, 12, 217}:    "Itcare Co., Ltd",
-       [3]byte{0, 12, 218}:    "FreeHand Systems, Inc.",
-       [3]byte{0, 12, 219}:    "Brocade Communications Systems, Inc.",
-       [3]byte{0, 12, 220}:    "BECS Technology, Inc",
-       [3]byte{0, 12, 221}:    "AOS technologies AG",
-       [3]byte{0, 12, 222}:    "ABB STOTZ-KONTAKT GmbH",
-       [3]byte{0, 12, 223}:    "PULNiX America, Inc",
-       [3]byte{0, 12, 224}:    "Trek Diagnostics Inc.",
-       [3]byte{0, 12, 225}:    "The Open Group",
-       [3]byte{0, 12, 226}:    "Rolls-Royce",
-       [3]byte{0, 12, 227}:    "Option International N.V.",
-       [3]byte{0, 12, 228}:    "NeuroCom International, Inc.",
-       [3]byte{0, 12, 229}:    "ARRIS Group, Inc.",
-       [3]byte{0, 12, 230}:    "Meru Networks Inc",
-       [3]byte{0, 12, 231}:    "MediaTek Inc.",
-       [3]byte{0, 12, 232}:    "GuangZhou AnJuBao Co., Ltd",
-       [3]byte{0, 12, 233}:    "BLOOMBERG L.P.",
-       [3]byte{0, 12, 234}:    "aphona Kommunikationssysteme",
-       [3]byte{0, 12, 235}:    "CNMP Networks, Inc.",
-       [3]byte{0, 12, 236}:    "Spectracom Corp.",
-       [3]byte{0, 12, 237}:    "Real Digital Media",
-       [3]byte{0, 12, 238}:    "jp-embedded",
-       [3]byte{0, 12, 239}:    "Open Networks Engineering Ltd",
-       [3]byte{0, 12, 240}:    "M & N GmbH",
-       [3]byte{0, 12, 241}:    "Intel Corporation",
-       [3]byte{0, 12, 242}:    "GAMESA Eólica",
-       [3]byte{0, 12, 243}:    "CALL IMAGE SA",
-       [3]byte{0, 12, 244}:    "AKATSUKI ELECTRIC MFG.CO.,LTD.",
-       [3]byte{0, 12, 245}:    "InfoExpress",
-       [3]byte{0, 12, 246}:    "Sitecom Europe BV",
-       [3]byte{0, 12, 247}:    "Nortel Networks",
-       [3]byte{0, 12, 248}:    "Nortel Networks",
-       [3]byte{0, 12, 249}:    "Xylem Water Solutions",
-       [3]byte{0, 12, 250}:    "Digital Systems Corp",
-       [3]byte{0, 12, 251}:    "Korea Network Systems",
-       [3]byte{0, 12, 252}:    "S2io Technologies Corp",
-       [3]byte{0, 12, 253}:    "Hyundai ImageQuest Co.,Ltd.",
-       [3]byte{0, 12, 254}:    "Grand Electronic Co., Ltd",
-       [3]byte{0, 12, 255}:    "MRO-TEK LIMITED",
-       [3]byte{0, 13, 0}:      "Seaway Networks Inc.",
-       [3]byte{0, 13, 1}:      "P&E Microcomputer Systems, Inc.",
-       [3]byte{0, 13, 2}:      "NEC Platforms, Ltd.",
-       [3]byte{0, 13, 3}:      "Matrics, Inc.",
-       [3]byte{0, 13, 4}:      "Foxboro Eckardt Development GmbH",
-       [3]byte{0, 13, 5}:      "cybernet manufacturing inc.",
-       [3]byte{0, 13, 6}:      "Compulogic Limited",
-       [3]byte{0, 13, 7}:      "Calrec Audio Ltd",
-       [3]byte{0, 13, 8}:      "AboveCable, Inc.",
-       [3]byte{0, 13, 9}:      "Yuehua(Zhuhai) Electronic CO. LTD",
-       [3]byte{0, 13, 10}:     "Projectiondesign as",
-       [3]byte{0, 13, 11}:     "BUFFALO.INC",
-       [3]byte{0, 13, 12}:     "MDI Security Systems",
-       [3]byte{0, 13, 13}:     "ITSupported, LLC",
-       [3]byte{0, 13, 14}:     "Inqnet Systems, Inc.",
-       [3]byte{0, 13, 15}:     "Finlux Ltd",
-       [3]byte{0, 13, 16}:     "Embedtronics Oy",
-       [3]byte{0, 13, 17}:     "DENTSPLY - Gendex",
-       [3]byte{0, 13, 18}:     "AXELL Corporation",
-       [3]byte{0, 13, 19}:     "Wilhelm Rutenbeck GmbH&Co.KG",
-       [3]byte{0, 13, 20}:     "Vtech Innovation LP dba Advanced American Telephones",
-       [3]byte{0, 13, 21}:     "Voipac s.r.o.",
-       [3]byte{0, 13, 22}:     "UHS Systems Pty Ltd",
-       [3]byte{0, 13, 23}:     "Turbo Networks Co.Ltd",
-       [3]byte{0, 13, 24}:     "Mega-Trend Electronics CO., LTD.",
-       [3]byte{0, 13, 25}:     "ROBE Show lighting",
-       [3]byte{0, 13, 26}:     "Mustek System Inc.",
-       [3]byte{0, 13, 27}:     "Kyoto Electronics Manufacturing Co., Ltd.",
-       [3]byte{0, 13, 28}:     "Amesys Defense",
-       [3]byte{0, 13, 29}:     "HIGH-TEK HARNESS ENT. CO., LTD.",
-       [3]byte{0, 13, 30}:     "Control Techniques",
-       [3]byte{0, 13, 31}:     "AV Digital",
-       [3]byte{0, 13, 32}:     "ASAHIKASEI TECHNOSYSTEM CO.,LTD.",
-       [3]byte{0, 13, 33}:     "WISCORE Inc.",
-       [3]byte{0, 13, 34}:     "Unitronics LTD",
-       [3]byte{0, 13, 35}:     "Smart Solution, Inc",
-       [3]byte{0, 13, 36}:     "SENTEC E&E CO., LTD.",
-       [3]byte{0, 13, 37}:     "SANDEN CORPORATION",
-       [3]byte{0, 13, 38}:     "Primagraphics Limited",
-       [3]byte{0, 13, 39}:     "MICROPLEX Printware AG",
-       [3]byte{0, 13, 40}:     "Cisco Systems, Inc",
-       [3]byte{0, 13, 41}:     "Cisco Systems, Inc",
-       [3]byte{0, 13, 42}:     "Scanmatic AS",
-       [3]byte{0, 13, 43}:     "Racal Instruments",
-       [3]byte{0, 13, 44}:     "Net2Edge Limited",
-       [3]byte{0, 13, 45}:     "NCT Deutschland GmbH",
-       [3]byte{0, 13, 46}:     "Matsushita Avionics Systems Corporation",
-       [3]byte{0, 13, 47}:     "AIN Comm.Tech.Co., LTD",
-       [3]byte{0, 13, 48}:     "IceFyre Semiconductor",
-       [3]byte{0, 13, 49}:     "Compellent Technologies, Inc.",
-       [3]byte{0, 13, 50}:     "DispenseSource, Inc.",
-       [3]byte{0, 13, 51}:     "Prediwave Corp.",
-       [3]byte{0, 13, 52}:     "Shell International Exploration and Production, Inc.",
-       [3]byte{0, 13, 53}:     "PAC International Ltd",
-       [3]byte{0, 13, 54}:     "Wu Han Routon Electronic Co., Ltd",
-       [3]byte{0, 13, 55}:     "WIPLUG",
-       [3]byte{0, 13, 56}:     "NISSIN INC.",
-       [3]byte{0, 13, 57}:     "Network Electronics",
-       [3]byte{0, 13, 58}:     "Microsoft Corp.",
-       [3]byte{0, 13, 59}:     "Microelectronics Technology Inc.",
-       [3]byte{0, 13, 60}:     "i.Tech Dynamic Ltd",
-       [3]byte{0, 13, 61}:     "Hammerhead Systems, Inc.",
-       [3]byte{0, 13, 62}:     "APLUX Communications Ltd.",
-       [3]byte{0, 13, 63}:     "VTI Instruments Corporation",
-       [3]byte{0, 13, 64}:     "Verint Loronix Video Solutions",
-       [3]byte{0, 13, 65}:     "Siemens AG ICM MP UC RD IT KLF1",
-       [3]byte{0, 13, 66}:     "Newbest Development Limited",
-       [3]byte{0, 13, 67}:     "DRS Tactical Systems Inc.",
-       [3]byte{0, 13, 68}:     "Audio BU - Logitech",
-       [3]byte{0, 13, 69}:     "Tottori SANYO Electric Co., Ltd.",
-       [3]byte{0, 13, 70}:     "Parker SSD Drives",
-       [3]byte{0, 13, 71}:     "Collex",
-       [3]byte{0, 13, 72}:     "AEWIN Technologies Co., Ltd.",
-       [3]byte{0, 13, 73}:     "Triton Systems of Delaware, Inc.",
-       [3]byte{0, 13, 74}:     "Steag ETA-Optik",
-       [3]byte{0, 13, 75}:     "Roku, Inc.",
-       [3]byte{0, 13, 76}:     "Outline Electronics Ltd.",
-       [3]byte{0, 13, 77}:     "Ninelanes",
-       [3]byte{0, 13, 78}:     "NDR Co.,LTD.",
-       [3]byte{0, 13, 79}:     "Kenwood Corporation",
-       [3]byte{0, 13, 80}:     "Galazar Networks",
-       [3]byte{0, 13, 81}:     "DIVR Systems, Inc.",
-       [3]byte{0, 13, 82}:     "Comart system",
-       [3]byte{0, 13, 83}:     "Beijing 5w Communication Corp.",
-       [3]byte{0, 13, 84}:     "3Com Ltd",
-       [3]byte{0, 13, 85}:     "SANYCOM Technology Co.,Ltd",
-       [3]byte{0, 13, 86}:     "Dell Inc.",
-       [3]byte{0, 13, 87}:     "Fujitsu I-Network Systems Limited.",
-       [3]byte{0, 13, 88}:     "Private",
-       [3]byte{0, 13, 89}:     "Amity Systems, Inc.",
-       [3]byte{0, 13, 90}:     "Tiesse SpA",
-       [3]byte{0, 13, 91}:     "Smart Empire Investments Limited",
-       [3]byte{0, 13, 92}:     "Robert Bosch GmbH, VT-ATMO",
-       [3]byte{0, 13, 93}:     "Raritan Computer, Inc",
-       [3]byte{0, 13, 94}:     "NEC Personal Products",
-       [3]byte{0, 13, 95}:     "Minds Inc",
-       [3]byte{0, 13, 96}:     "IBM Corp",
-       [3]byte{0, 13, 97}:     "Giga-Byte Technology Co., Ltd.",
-       [3]byte{0, 13, 98}:     "Funkwerk Dabendorf GmbH",
-       [3]byte{0, 13, 99}:     "DENT Instruments, Inc.",
-       [3]byte{0, 13, 100}:    "COMAG Handels AG",
-       [3]byte{0, 13, 101}:    "Cisco Systems, Inc",
-       [3]byte{0, 13, 102}:    "Cisco Systems, Inc",
-       [3]byte{0, 13, 103}:    "Ericsson",
-       [3]byte{0, 13, 104}:    "Vinci Systems, Inc.",
-       [3]byte{0, 13, 105}:    "TMT&D Corporation",
-       [3]byte{0, 13, 106}:    "Redwood Technologies LTD",
-       [3]byte{0, 13, 107}:    "Mita-Teknik A/S",
-       [3]byte{0, 13, 108}:    "M-Audio",
-       [3]byte{0, 13, 109}:    "K-Tech Devices Corp.",
-       [3]byte{0, 13, 110}:    "K-Patents Oy",
-       [3]byte{0, 13, 111}:    "Ember Corporation",
-       [3]byte{0, 13, 112}:    "Datamax Corporation",
-       [3]byte{0, 13, 113}:    "boca systems",
-       [3]byte{0, 13, 114}:    "2Wire Inc",
-       [3]byte{0, 13, 115}:    "Technical Support, Inc.",
-       [3]byte{0, 13, 116}:    "Sand Network Systems, Inc.",
-       [3]byte{0, 13, 117}:    "Kobian Pte Ltd - Taiwan Branch",
-       [3]byte{0, 13, 118}:    "Hokuto Denshi Co,. Ltd.",
-       [3]byte{0, 13, 119}:    "FalconStor Software",
-       [3]byte{0, 13, 120}:    "Engineering & Security",
-       [3]byte{0, 13, 121}:    "Dynamic Solutions Co,.Ltd.",
-       [3]byte{0, 13, 122}:    "DiGATTO Asia Pacific Pte Ltd",
-       [3]byte{0, 13, 123}:    "Consensys Computers Inc.",
-       [3]byte{0, 13, 124}:    "Codian Ltd",
-       [3]byte{0, 13, 125}:    "Afco Systems",
-       [3]byte{0, 13, 126}:    "Axiowave Networks, Inc.",
-       [3]byte{0, 13, 127}:    "MIDAS  COMMUNICATION TECHNOLOGIES PTE LTD ( Foreign Branch)",
-       [3]byte{0, 13, 128}:    "Online Development Inc",
-       [3]byte{0, 13, 129}:    "Pepperl+Fuchs GmbH",
-       [3]byte{0, 13, 130}:    "PHS srl",
-       [3]byte{0, 13, 131}:    "Sanmina-SCI Hungary  Ltd.",
-       [3]byte{0, 13, 132}:    "Makus Inc.",
-       [3]byte{0, 13, 133}:    "Tapwave, Inc.",
-       [3]byte{0, 13, 134}:    "Huber + Suhner AG",
-       [3]byte{0, 13, 135}:    "Elitegroup Computer Systems Co.,Ltd.",
-       [3]byte{0, 13, 136}:    "D-Link Corporation",
-       [3]byte{0, 13, 137}:    "Bils Technology Inc",
-       [3]byte{0, 13, 138}:    "Winners Electronics Co., Ltd.",
-       [3]byte{0, 13, 139}:    "T&D Corporation",
-       [3]byte{0, 13, 140}:    "Shanghai Wedone Digital Ltd. CO.",
-       [3]byte{0, 13, 141}:    "Prosoft Technology, Inc",
-       [3]byte{0, 13, 142}:    "Koden Electronics Co., Ltd.",
-       [3]byte{0, 13, 143}:    "King Tsushin Kogyo Co., LTD.",
-       [3]byte{0, 13, 144}:    "Factum Electronics AB",
-       [3]byte{0, 13, 145}:    "Eclipse (HQ Espana) S.L.",
-       [3]byte{0, 13, 146}:    "ARIMA Communications Corp.",
-       [3]byte{0, 13, 147}:    "Apple, Inc.",
-       [3]byte{0, 13, 148}:    "AFAR Communications,Inc",
-       [3]byte{0, 13, 149}:    "Opti-cell, Inc.",
-       [3]byte{0, 13, 150}:    "Vtera Technology Inc.",
-       [3]byte{0, 13, 151}:    "ABB Inc./Tropos",
-       [3]byte{0, 13, 152}:    "S.W.A.C. Schmitt-Walter Automation Consult GmbH",
-       [3]byte{0, 13, 153}:    "Orbital Sciences Corp.; Launch Systems Group",
-       [3]byte{0, 13, 154}:    "INFOTEC LTD",
-       [3]byte{0, 13, 155}:    "Heraeus Electro-Nite International N.V.",
-       [3]byte{0, 13, 156}:    "Elan GmbH & Co KG",
-       [3]byte{0, 13, 157}:    "Hewlett Packard",
-       [3]byte{0, 13, 158}:    "TOKUDEN OHIZUMI SEISAKUSYO Co.,Ltd.",
-       [3]byte{0, 13, 159}:    "RF Micro Devices",
-       [3]byte{0, 13, 160}:    "NEDAP N.V.",
-       [3]byte{0, 13, 161}:    "MIRAE ITS Co.,LTD.",
-       [3]byte{0, 13, 162}:    "Infrant Technologies, Inc.",
-       [3]byte{0, 13, 163}:    "Emerging Technologies Limited",
-       [3]byte{0, 13, 164}:    "DOSCH & AMAND SYSTEMS AG",
-       [3]byte{0, 13, 165}:    "Fabric7 Systems, Inc",
-       [3]byte{0, 13, 166}:    "Universal Switching Corporation",
-       [3]byte{0, 13, 167}:    "Private",
-       [3]byte{0, 13, 168}:    "Teletronics Technology Corporation",
-       [3]byte{0, 13, 169}:    "T.E.A.M. S.L.",
-       [3]byte{0, 13, 170}:    "S.A.Tehnology co.,Ltd.",
-       [3]byte{0, 13, 171}:    "Parker Hannifin GmbH Electromechanical Division Europe",
-       [3]byte{0, 13, 172}:    "Japan CBM Corporation",
-       [3]byte{0, 13, 173}:    "Dataprobe, Inc.",
-       [3]byte{0, 13, 174}:    "SAMSUNG HEAVY INDUSTRIES CO., LTD.",
-       [3]byte{0, 13, 175}:    "Plexus Corp (UK) Ltd",
-       [3]byte{0, 13, 176}:    "Olym-tech Co.,Ltd.",
-       [3]byte{0, 13, 177}:    "Japan Network Service Co., Ltd.",
-       [3]byte{0, 13, 178}:    "Ammasso, Inc.",
-       [3]byte{0, 13, 179}:    "SDO Communication Corperation",
-       [3]byte{0, 13, 180}:    "NETASQ",
-       [3]byte{0, 13, 181}:    "GLOBALSAT TECHNOLOGY CORPORATION",
-       [3]byte{0, 13, 182}:    "Broadcom",
-       [3]byte{0, 13, 183}:    "SANKO ELECTRIC CO,.LTD",
-       [3]byte{0, 13, 184}:    "SCHILLER AG",
-       [3]byte{0, 13, 185}:    "PC Engines GmbH",
-       [3]byte{0, 13, 186}:    "Océ Document Technologies GmbH",
-       [3]byte{0, 13, 187}:    "Nippon Dentsu Co.,Ltd.",
-       [3]byte{0, 13, 188}:    "Cisco Systems, Inc",
-       [3]byte{0, 13, 189}:    "Cisco Systems, Inc",
-       [3]byte{0, 13, 190}:    "Bel Fuse Europe Ltd.,UK",
-       [3]byte{0, 13, 191}:    "TekTone Sound & Signal Mfg., Inc.",
-       [3]byte{0, 13, 192}:    "Spagat AS",
-       [3]byte{0, 13, 193}:    "SafeWeb Inc",
-       [3]byte{0, 13, 194}:    "Private",
-       [3]byte{0, 13, 195}:    "First Communication, Inc.",
-       [3]byte{0, 13, 196}:    "Emcore Corporation",
-       [3]byte{0, 13, 197}:    "EchoStar Global B.V.",
-       [3]byte{0, 13, 198}:    "DigiRose Technology Co., Ltd.",
-       [3]byte{0, 13, 199}:    "COSMIC ENGINEERING INC.",
-       [3]byte{0, 13, 200}:    "AirMagnet, Inc",
-       [3]byte{0, 13, 201}:    "THALES Elektronik Systeme GmbH",
-       [3]byte{0, 13, 202}:    "Tait Electronics",
-       [3]byte{0, 13, 203}:    "Petcomkorea Co., Ltd.",
-       [3]byte{0, 13, 204}:    "NEOSMART Corp.",
-       [3]byte{0, 13, 205}:    "GROUPE TXCOM",
-       [3]byte{0, 13, 206}:    "Dynavac Technology Pte Ltd",
-       [3]byte{0, 13, 207}:    "Cidra Corp.",
-       [3]byte{0, 13, 208}:    "TetraTec Instruments GmbH",
-       [3]byte{0, 13, 209}:    "Stryker Corporation",
-       [3]byte{0, 13, 210}:    "Simrad Optronics ASA",
-       [3]byte{0, 13, 211}:    "SAMWOO Telecommunication Co.,Ltd.",
-       [3]byte{0, 13, 212}:    "Symantec Corporation",
-       [3]byte{0, 13, 213}:    "O'RITE TECHNOLOGY CO.,LTD",
-       [3]byte{0, 13, 214}:    "ITI    LTD",
-       [3]byte{0, 13, 215}:    "Bright",
-       [3]byte{0, 13, 216}:    "BBN",
-       [3]byte{0, 13, 217}:    "Anton Paar GmbH",
-       [3]byte{0, 13, 218}:    "ALLIED TELESIS K.K.",
-       [3]byte{0, 13, 219}:    "AIRWAVE TECHNOLOGIES INC.",
-       [3]byte{0, 13, 220}:    "VAC",
-       [3]byte{0, 13, 221}:    "Profilo Telra Elektronik Sanayi ve Ticaret. A.Ş",
-       [3]byte{0, 13, 222}:    "Joyteck Co., Ltd.",
-       [3]byte{0, 13, 223}:    "Japan Image & Network Inc.",
-       [3]byte{0, 13, 224}:    "ICPDAS Co.,LTD",
-       [3]byte{0, 13, 225}:    "Control Products, Inc.",
-       [3]byte{0, 13, 226}:    "CMZ Sistemi Elettronici",
-       [3]byte{0, 13, 227}:    "AT Sweden AB",
-       [3]byte{0, 13, 228}:    "DIGINICS, Inc.",
-       [3]byte{0, 13, 229}:    "Samsung Thales",
-       [3]byte{0, 13, 230}:    "YOUNGBO ENGINEERING CO.,LTD",
-       [3]byte{0, 13, 231}:    "Snap-on OEM Group",
-       [3]byte{0, 13, 232}:    "Nasaco Electronics Pte. Ltd",
-       [3]byte{0, 13, 233}:    "Napatech Aps",
-       [3]byte{0, 13, 234}:    "Kingtel Telecommunication Corp.",
-       [3]byte{0, 13, 235}:    "CompXs Limited",
-       [3]byte{0, 13, 236}:    "Cisco Systems, Inc",
-       [3]byte{0, 13, 237}:    "Cisco Systems, Inc",
-       [3]byte{0, 13, 238}:    "Andrew RF Power Amplifier Group",
-       [3]byte{0, 13, 239}:    "Soc. Coop. Bilanciai",
-       [3]byte{0, 13, 240}:    "QCOM TECHNOLOGY INC.",
-       [3]byte{0, 13, 241}:    "IONIX INC.",
-       [3]byte{0, 13, 242}:    "Private",
-       [3]byte{0, 13, 243}:    "Asmax Solutions",
-       [3]byte{0, 13, 244}:    "Watertek Co.",
-       [3]byte{0, 13, 245}:    "Teletronics International Inc.",
-       [3]byte{0, 13, 246}:    "Technology Thesaurus Corp.",
-       [3]byte{0, 13, 247}:    "Space Dynamics Lab",
-       [3]byte{0, 13, 248}:    "ORGA Kartensysteme GmbH",
-       [3]byte{0, 13, 249}:    "NDS Limited",
-       [3]byte{0, 13, 250}:    "Micro Control Systems Ltd.",
-       [3]byte{0, 13, 251}:    "Komax AG",
-       [3]byte{0, 13, 252}:    "ITFOR Inc.",
-       [3]byte{0, 13, 253}:    "Huges Hi-Tech Inc.,",
-       [3]byte{0, 13, 254}:    "Hauppauge Computer Works, Inc.",
-       [3]byte{0, 13, 255}:    "CHENMING MOLD INDUSTRY CORP.",
-       [3]byte{0, 14, 0}:      "Atrie",
-       [3]byte{0, 14, 1}:      "ASIP Technologies Inc.",
-       [3]byte{0, 14, 2}:      "Advantech AMT Inc.",
-       [3]byte{0, 14, 3}:      "Emulex Corporation",
-       [3]byte{0, 14, 4}:      "CMA/Microdialysis AB",
-       [3]byte{0, 14, 5}:      "WIRELESS MATRIX CORP.",
-       [3]byte{0, 14, 6}:      "Team Simoco Ltd",
-       [3]byte{0, 14, 7}:      "Sony Mobile Communications AB",
-       [3]byte{0, 14, 8}:      "Cisco-Linksys, LLC",
-       [3]byte{0, 14, 9}:      "Shenzhen Coship Software Co.,LTD.",
-       [3]byte{0, 14, 10}:     "SAKUMA DESIGN OFFICE",
-       [3]byte{0, 14, 11}:     "Netac Technology Co., Ltd.",
-       [3]byte{0, 14, 12}:     "Intel Corporation",
-       [3]byte{0, 14, 13}:     "Hesch Schröder GmbH",
-       [3]byte{0, 14, 14}:     "ESA elettronica S.P.A.",
-       [3]byte{0, 14, 15}:     "ERMME",
-       [3]byte{0, 14, 16}:     "C-guys, Inc.",
-       [3]byte{0, 14, 17}:     "BDT Büro und Datentechnik GmbH & Co.KG",
-       [3]byte{0, 14, 18}:     "Adaptive Micro Systems Inc.",
-       [3]byte{0, 14, 19}:     "Accu-Sort Systems inc.",
-       [3]byte{0, 14, 20}:     "Visionary Solutions, Inc.",
-       [3]byte{0, 14, 21}:     "Tadlys LTD",
-       [3]byte{0, 14, 22}:     "SouthWing S.L.",
-       [3]byte{0, 14, 23}:     "Private",
-       [3]byte{0, 14, 24}:     "MyA Technology",
-       [3]byte{0, 14, 25}:     "LogicaCMG Pty Ltd",
-       [3]byte{0, 14, 26}:     "JPS Communications",
-       [3]byte{0, 14, 27}:     "IAV GmbH",
-       [3]byte{0, 14, 28}:     "Hach Company",
-       [3]byte{0, 14, 29}:     "ARION Technology Inc.",
-       [3]byte{0, 14, 30}:     "QLogic Corporation",
-       [3]byte{0, 14, 31}:     "TCL Networks Equipment Co., Ltd.",
-       [3]byte{0, 14, 32}:     "ACCESS Systems Americas, Inc.",
-       [3]byte{0, 14, 33}:     "MTU Friedrichshafen GmbH",
-       [3]byte{0, 14, 34}:     "Private",
-       [3]byte{0, 14, 35}:     "Incipient, Inc.",
-       [3]byte{0, 14, 36}:     "Huwell Technology Inc.",
-       [3]byte{0, 14, 37}:     "Hannae Technology Co., Ltd",
-       [3]byte{0, 14, 38}:     "Gincom Technology Corp.",
-       [3]byte{0, 14, 39}:     "Crere Networks, Inc.",
-       [3]byte{0, 14, 40}:     "Dynamic Ratings P/L",
-       [3]byte{0, 14, 41}:     "Shester Communications Inc",
-       [3]byte{0, 14, 42}:     "Private",
-       [3]byte{0, 14, 43}:     "Safari Technologies",
-       [3]byte{0, 14, 44}:     "Netcodec co.",
-       [3]byte{0, 14, 45}:     "Hyundai Digital Technology Co.,Ltd.",
-       [3]byte{0, 14, 46}:     "Edimax Technology Co. Ltd.",
-       [3]byte{0, 14, 47}:     "Roche Diagnostics GmbH",
-       [3]byte{0, 14, 48}:     "AERAS Networks, Inc.",
-       [3]byte{0, 14, 49}:     "Olympus Soft Imaging Solutions GmbH",
-       [3]byte{0, 14, 50}:     "Kontron Medical",
-       [3]byte{0, 14, 51}:     "Shuko Electronics Co.,Ltd",
-       [3]byte{0, 14, 52}:     "NexGen City, LP",
-       [3]byte{0, 14, 53}:     "Intel Corporation",
-       [3]byte{0, 14, 54}:     "HEINESYS, Inc.",
-       [3]byte{0, 14, 55}:     "Harms & Wende GmbH & Co.KG",
-       [3]byte{0, 14, 56}:     "Cisco Systems, Inc",
-       [3]byte{0, 14, 57}:     "Cisco Systems, Inc",
-       [3]byte{0, 14, 58}:     "Cirrus Logic",
-       [3]byte{0, 14, 59}:     "Hawking Technologies, Inc.",
-       [3]byte{0, 14, 60}:     "Transact Technologies Inc",
-       [3]byte{0, 14, 61}:     "Televic N.V.",
-       [3]byte{0, 14, 62}:     "Sun Optronics Inc",
-       [3]byte{0, 14, 63}:     "Soronti, Inc.",
-       [3]byte{0, 14, 64}:     "Nortel Networks",
-       [3]byte{0, 14, 65}:     "NIHON MECHATRONICS CO.,LTD.",
-       [3]byte{0, 14, 66}:     "Motic Incoporation Ltd.",
-       [3]byte{0, 14, 67}:     "G-Tek Electronics Sdn. Bhd.",
-       [3]byte{0, 14, 68}:     "Digital 5, Inc.",
-       [3]byte{0, 14, 69}:     "Beijing Newtry Electronic Technology Ltd",
-       [3]byte{0, 14, 70}:     "Niigata Seimitsu Co.,Ltd.",
-       [3]byte{0, 14, 71}:     "NCI System Co.,Ltd.",
-       [3]byte{0, 14, 72}:     "Lipman TransAction Solutions",
-       [3]byte{0, 14, 73}:     "Forsway Scandinavia AB",
-       [3]byte{0, 14, 74}:     "Changchun Huayu WEBPAD Co.,LTD",
-       [3]byte{0, 14, 75}:     "atrium c and i",
-       [3]byte{0, 14, 76}:     "Bermai Inc.",
-       [3]byte{0, 14, 77}:     "Numesa Inc.",
-       [3]byte{0, 14, 78}:     "Waveplus Technology Co., Ltd.",
-       [3]byte{0, 14, 79}:     "Trajet GmbH",
-       [3]byte{0, 14, 80}:     "Thomson Telecom Belgium",
-       [3]byte{0, 14, 81}:     "tecna elettronica srl",
-       [3]byte{0, 14, 82}:     "Optium Corporation",
-       [3]byte{0, 14, 83}:     "AV TECH CORPORATION",
-       [3]byte{0, 14, 84}:     "AlphaCell Wireless Ltd.",
-       [3]byte{0, 14, 85}:     "AUVITRAN",
-       [3]byte{0, 14, 86}:     "4G Systems GmbH & Co. KG",
-       [3]byte{0, 14, 87}:     "Iworld Networking, Inc.",
-       [3]byte{0, 14, 88}:     "Sonos, Inc.",
-       [3]byte{0, 14, 89}:     "Sagemcom Broadband SAS",
-       [3]byte{0, 14, 90}:     "TELEFIELD inc.",
-       [3]byte{0, 14, 91}:     "ParkerVision - Direct2Data",
-       [3]byte{0, 14, 92}:     "ARRIS Group, Inc.",
-       [3]byte{0, 14, 93}:     "Triple Play Technologies A/S",
-       [3]byte{0, 14, 94}:     "Raisecom Technology",
-       [3]byte{0, 14, 95}:     "activ-net GmbH & Co. KG",
-       [3]byte{0, 14, 96}:     "360SUN Digital Broadband Corporation",
-       [3]byte{0, 14, 97}:     "MICROTROL LIMITED",
-       [3]byte{0, 14, 98}:     "Nortel Networks",
-       [3]byte{0, 14, 99}:     "Lemke Diagnostics GmbH",
-       [3]byte{0, 14, 100}:    "Elphel, Inc",
-       [3]byte{0, 14, 101}:    "TransCore",
-       [3]byte{0, 14, 102}:    "Hitachi Industry & Control Solutions, Ltd.",
-       [3]byte{0, 14, 103}:    "Eltis Microelectronics Ltd.",
-       [3]byte{0, 14, 104}:    "E-TOP Network Technology Inc.",
-       [3]byte{0, 14, 105}:    "China Electric Power Research Institute",
-       [3]byte{0, 14, 106}:    "3Com Ltd",
-       [3]byte{0, 14, 107}:    "Janitza electronics GmbH",
-       [3]byte{0, 14, 108}:    "Device Drivers Limited",
-       [3]byte{0, 14, 109}:    "Murata Manufacturing Co., Ltd.",
-       [3]byte{0, 14, 110}:    "MAT S.A. (Mircrelec Advanced Technology)",
-       [3]byte{0, 14, 111}:    "IRIS Corporation Berhad",
-       [3]byte{0, 14, 112}:    "in2 Networks",
-       [3]byte{0, 14, 113}:    "Gemstar Technology Development Ltd.",
-       [3]byte{0, 14, 114}:    "CTS electronics",
-       [3]byte{0, 14, 115}:    "Tpack A/S",
-       [3]byte{0, 14, 116}:    "Solar Telecom. Tech",
-       [3]byte{0, 14, 117}:    "New York Air Brake Corp.",
-       [3]byte{0, 14, 118}:    "GEMSOC INNOVISION INC.",
-       [3]byte{0, 14, 119}:    "Decru, Inc.",
-       [3]byte{0, 14, 120}:    "Amtelco",
-       [3]byte{0, 14, 121}:    "Ample Communications Inc.",
-       [3]byte{0, 14, 122}:    "GemWon Communications Co., Ltd.",
-       [3]byte{0, 14, 123}:    "Toshiba",
-       [3]byte{0, 14, 124}:    "Televes S.A.",
-       [3]byte{0, 14, 125}:    "Electronics Line 3000 Ltd.",
-       [3]byte{0, 14, 126}:    "ionSign Oy",
-       [3]byte{0, 14, 127}:    "Hewlett Packard",
-       [3]byte{0, 14, 128}:    "Thomson Technology Inc",
-       [3]byte{0, 14, 129}:    "Devicescape Software, Inc.",
-       [3]byte{0, 14, 130}:    "Commtech Wireless",
-       [3]byte{0, 14, 131}:    "Cisco Systems, Inc",
-       [3]byte{0, 14, 132}:    "Cisco Systems, Inc",
-       [3]byte{0, 14, 133}:    "Catalyst Enterprises, Inc.",
-       [3]byte{0, 14, 134}:    "Alcatel North America",
-       [3]byte{0, 14, 135}:    "adp Gauselmann GmbH",
-       [3]byte{0, 14, 136}:    "VIDEOTRON CORP.",
-       [3]byte{0, 14, 137}:    "CLEMATIC",
-       [3]byte{0, 14, 138}:    "Avara Technologies Pty. Ltd.",
-       [3]byte{0, 14, 139}:    "Astarte Technology Co, Ltd.",
-       [3]byte{0, 14, 140}:    "Siemens AG A&D ET",
-       [3]byte{0, 14, 141}:    "Systems in Progress Holding GmbH",
-       [3]byte{0, 14, 142}:    "SparkLAN Communications, Inc.",
-       [3]byte{0, 14, 143}:    "Sercomm Corp.",
-       [3]byte{0, 14, 144}:    "PONICO CORP.",
-       [3]byte{0, 14, 145}:    "Navico Auckland Ltd",
-       [3]byte{0, 14, 146}:    "Open Telecom",
-       [3]byte{0, 14, 147}:    "Milénio 3 Sistemas Electrónicos, Lda.",
-       [3]byte{0, 14, 148}:    "Maas International BV",
-       [3]byte{0, 14, 149}:    "Fujiya Denki Seisakusho Co.,Ltd.",
-       [3]byte{0, 14, 150}:    "Cubic Defense Applications, Inc.",
-       [3]byte{0, 14, 151}:    "Ultracker Technology CO., Inc",
-       [3]byte{0, 14, 152}:    "HME Clear-Com LTD.",
-       [3]byte{0, 14, 153}:    "Spectrum Digital, Inc",
-       [3]byte{0, 14, 154}:    "BOE TECHNOLOGY GROUP CO.,LTD",
-       [3]byte{0, 14, 155}:    "Ambit Microsystems Corporation",
-       [3]byte{0, 14, 156}:    "Benchmark Electronics",
-       [3]byte{0, 14, 157}:    "Tiscali UK Ltd",
-       [3]byte{0, 14, 158}:    "Topfield Co., Ltd",
-       [3]byte{0, 14, 159}:    "TEMIC SDS GmbH",
-       [3]byte{0, 14, 160}:    "NetKlass Technology Inc.",
-       [3]byte{0, 14, 161}:    "Formosa Teletek Corporation",
-       [3]byte{0, 14, 162}:    "McAfee, Inc",
-       [3]byte{0, 14, 163}:    "CNCR-IT CO.,LTD,HangZhou P.R.CHINA",
-       [3]byte{0, 14, 164}:    "Certance Inc.",
-       [3]byte{0, 14, 165}:    "BLIP Systems",
-       [3]byte{0, 14, 166}:    "ASUSTek COMPUTER INC.",
-       [3]byte{0, 14, 167}:    "Endace Technology",
-       [3]byte{0, 14, 168}:    "United Technologists Europe Limited",
-       [3]byte{0, 14, 169}:    "Shanghai Xun Shi Communications Equipment Ltd. Co.",
-       [3]byte{0, 14, 170}:    "Scalent Systems, Inc.",
-       [3]byte{0, 14, 171}:    "Cray Inc",
-       [3]byte{0, 14, 172}:    "MINTRON ENTERPRISE CO., LTD.",
-       [3]byte{0, 14, 173}:    "Metanoia Technologies, Inc.",
-       [3]byte{0, 14, 174}:    "GAWELL TECHNOLOGIES CORP.",
-       [3]byte{0, 14, 175}:    "CASTEL",
-       [3]byte{0, 14, 176}:    "Solutions Radio BV",
-       [3]byte{0, 14, 177}:    "Newcotech,Ltd",
-       [3]byte{0, 14, 178}:    "Micro-Research Finland Oy",
-       [3]byte{0, 14, 179}:    "Hewlett Packard",
-       [3]byte{0, 14, 180}:    "GUANGZHOU GAOKE COMMUNICATIONS TECHNOLOGY CO.LTD.",
-       [3]byte{0, 14, 181}:    "Ecastle Electronics Co., Ltd.",
-       [3]byte{0, 14, 182}:    "Riverbed Technology, Inc.",
-       [3]byte{0, 14, 183}:    "Knovative, Inc.",
-       [3]byte{0, 14, 184}:    "Iiga co.,Ltd",
-       [3]byte{0, 14, 185}:    "HASHIMOTO Electronics Industry Co.,Ltd.",
-       [3]byte{0, 14, 186}:    "HANMI SEMICONDUCTOR CO., LTD.",
-       [3]byte{0, 14, 187}:    "Everbee Networks",
-       [3]byte{0, 14, 188}:    "Paragon Fidelity GmbH",
-       [3]byte{0, 14, 189}:    "Burdick, a Quinton Compny",
-       [3]byte{0, 14, 190}:    "B&B Electronics Manufacturing Co.",
-       [3]byte{0, 14, 191}:    "Remsdaq Limited",
-       [3]byte{0, 14, 192}:    "Nortel Networks",
-       [3]byte{0, 14, 193}:    "MYNAH Technologies",
-       [3]byte{0, 14, 194}:    "Lowrance Electronics, Inc.",
-       [3]byte{0, 14, 195}:    "Logic Controls, Inc.",
-       [3]byte{0, 14, 196}:    "Iskra Transmission d.d.",
-       [3]byte{0, 14, 197}:    "Digital Multitools Inc",
-       [3]byte{0, 14, 198}:    "ASIX ELECTRONICS CORP.",
-       [3]byte{0, 14, 199}:    "Motorola Korea",
-       [3]byte{0, 14, 200}:    "Zoran Corporation",
-       [3]byte{0, 14, 201}:    "YOKO Technology Corp.",
-       [3]byte{0, 14, 202}:    "WTSS Inc",
-       [3]byte{0, 14, 203}:    "VineSys Technology",
-       [3]byte{0, 14, 204}:    "Tableau, LLC",
-       [3]byte{0, 14, 205}:    "SKOV A/S",
-       [3]byte{0, 14, 206}:    "S.I.T.T.I. S.p.A.",
-       [3]byte{0, 14, 207}:    "PROFIBUS Nutzerorganisation e.V.",
-       [3]byte{0, 14, 208}:    "Privaris, Inc.",
-       [3]byte{0, 14, 209}:    "Osaka Micro Computer.",
-       [3]byte{0, 14, 210}:    "Filtronic plc",
-       [3]byte{0, 14, 211}:    "Epicenter, Inc.",
-       [3]byte{0, 14, 212}:    "CRESITT INDUSTRIE",
-       [3]byte{0, 14, 213}:    "COPAN Systems Inc.",
-       [3]byte{0, 14, 214}:    "Cisco Systems, Inc",
-       [3]byte{0, 14, 215}:    "Cisco Systems, Inc",
-       [3]byte{0, 14, 216}:    "Positron Access Solutions Corp",
-       [3]byte{0, 14, 217}:    "Aksys, Ltd.",
-       [3]byte{0, 14, 218}:    "C-TECH UNITED CORP.",
-       [3]byte{0, 14, 219}:    "XiNCOM Corp.",
-       [3]byte{0, 14, 220}:    "Tellion INC.",
-       [3]byte{0, 14, 221}:    "SHURE INCORPORATED",
-       [3]byte{0, 14, 222}:    "REMEC, Inc.",
-       [3]byte{0, 14, 223}:    "PLX Technology",
-       [3]byte{0, 14, 224}:    "Mcharge",
-       [3]byte{0, 14, 225}:    "ExtremeSpeed Inc.",
-       [3]byte{0, 14, 226}:    "Custom Engineering",
-       [3]byte{0, 14, 227}:    "Chiyu Technology Co.,Ltd",
-       [3]byte{0, 14, 228}:    "BOE TECHNOLOGY GROUP CO.,LTD",
-       [3]byte{0, 14, 229}:    "bitWallet, Inc.",
-       [3]byte{0, 14, 230}:    "Adimos Systems LTD",
-       [3]byte{0, 14, 231}:    "AAC ELECTRONICS CORP.",
-       [3]byte{0, 14, 232}:    "Zioncom Electronics (Shenzhen) Ltd.",
-       [3]byte{0, 14, 233}:    "WayTech Development, Inc.",
-       [3]byte{0, 14, 234}:    "Shadong Luneng Jicheng Electronics,Co.,Ltd",
-       [3]byte{0, 14, 235}:    "Sandmartin(zhong shan)Electronics Co.,Ltd",
-       [3]byte{0, 14, 236}:    "Orban",
-       [3]byte{0, 14, 237}:    "Nokia Danmark A/S",
-       [3]byte{0, 14, 238}:    "Muco Industrie BV",
-       [3]byte{0, 14, 239}:    "Private",
-       [3]byte{0, 14, 240}:    "Festo AG & Co. KG",
-       [3]byte{0, 14, 241}:    "EZQUEST INC.",
-       [3]byte{0, 14, 242}:    "Infinico Corporation",
-       [3]byte{0, 14, 243}:    "Smarthome",
-       [3]byte{0, 14, 244}:    "Kasda Networks Inc",
-       [3]byte{0, 14, 245}:    "iPAC Technology Co., Ltd.",
-       [3]byte{0, 14, 246}:    "E-TEN Information Systems Co., Ltd.",
-       [3]byte{0, 14, 247}:    "Vulcan Portals Inc",
-       [3]byte{0, 14, 248}:    "SBC ASI",
-       [3]byte{0, 14, 249}:    "REA Elektronik GmbH",
-       [3]byte{0, 14, 250}:    "Optoway Technology Incorporation",
-       [3]byte{0, 14, 251}:    "Macey Enterprises",
-       [3]byte{0, 14, 252}:    "JTAG Technologies B.V.",
-       [3]byte{0, 14, 253}:    "FUJINON CORPORATION",
-       [3]byte{0, 14, 254}:    "EndRun Technologies LLC",
-       [3]byte{0, 14, 255}:    "Megasolution,Inc.",
-       [3]byte{0, 15, 0}:      "Legra Systems, Inc.",
-       [3]byte{0, 15, 1}:      "DIGITALKS INC",
-       [3]byte{0, 15, 2}:      "Digicube Technology Co., Ltd",
-       [3]byte{0, 15, 3}:      "COM&C CO., LTD",
-       [3]byte{0, 15, 4}:      "cim-usa inc",
-       [3]byte{0, 15, 5}:      "3B SYSTEM INC.",
-       [3]byte{0, 15, 6}:      "Nortel Networks",
-       [3]byte{0, 15, 7}:      "Mangrove Systems, Inc.",
-       [3]byte{0, 15, 8}:      "Indagon Oy",
-       [3]byte{0, 15, 9}:      "Private",
-       [3]byte{0, 15, 10}:     "Clear Edge Networks",
-       [3]byte{0, 15, 11}:     "Kentima Technologies AB",
-       [3]byte{0, 15, 12}:     "SYNCHRONIC ENGINEERING",
-       [3]byte{0, 15, 13}:     "Hunt Electronic Co., Ltd.",
-       [3]byte{0, 15, 14}:     "WaveSplitter Technologies, Inc.",
-       [3]byte{0, 15, 15}:     "Real ID Technology Co., Ltd.",
-       [3]byte{0, 15, 16}:     "RDM Corporation",
-       [3]byte{0, 15, 17}:     "Prodrive B.V.",
-       [3]byte{0, 15, 18}:     "Panasonic Europe Ltd.",
-       [3]byte{0, 15, 19}:     "Nisca corporation",
-       [3]byte{0, 15, 20}:     "Mindray Co., Ltd.",
-       [3]byte{0, 15, 21}:     "Kjaerulff1 A/S",
-       [3]byte{0, 15, 22}:     "JAY HOW TECHNOLOGY CO.,",
-       [3]byte{0, 15, 23}:     "Insta Elektro GmbH",
-       [3]byte{0, 15, 24}:     "Industrial Control Systems",
-       [3]byte{0, 15, 25}:     "Boston Scientific",
-       [3]byte{0, 15, 26}:     "Gaming Support B.V.",
-       [3]byte{0, 15, 27}:     "Ego Systems Inc.",
-       [3]byte{0, 15, 28}:     "DigitAll World Co., Ltd",
-       [3]byte{0, 15, 29}:     "Cosmo Techs Co., Ltd.",
-       [3]byte{0, 15, 30}:     "Chengdu KT Electric Co.of High & New Technology",
-       [3]byte{0, 15, 31}:     "Dell Inc.",
-       [3]byte{0, 15, 32}:     "Hewlett Packard",
-       [3]byte{0, 15, 33}:     "Scientific Atlanta, Inc",
-       [3]byte{0, 15, 34}:     "Helius, Inc.",
-       [3]byte{0, 15, 35}:     "Cisco Systems, Inc",
-       [3]byte{0, 15, 36}:     "Cisco Systems, Inc",
-       [3]byte{0, 15, 37}:     "AimValley B.V.",
-       [3]byte{0, 15, 38}:     "WorldAccxx  LLC",
-       [3]byte{0, 15, 39}:     "TEAL Electronics, Inc.",
-       [3]byte{0, 15, 40}:     "Itronix Corporation",
-       [3]byte{0, 15, 41}:     "Augmentix Corporation",
-       [3]byte{0, 15, 42}:     "Cableware Electronics",
-       [3]byte{0, 15, 43}:     "GREENBELL SYSTEMS",
-       [3]byte{0, 15, 44}:     "Uplogix, Inc.",
-       [3]byte{0, 15, 45}:     "CHUNG-HSIN ELECTRIC & MACHINERY MFG.CORP.",
-       [3]byte{0, 15, 46}:     "Megapower International Corp.",
-       [3]byte{0, 15, 47}:     "W-LINX TECHNOLOGY CO., LTD.",
-       [3]byte{0, 15, 48}:     "Raza Microelectronics Inc",
-       [3]byte{0, 15, 49}:     "Allied Vision Technologies Canada Inc",
-       [3]byte{0, 15, 50}:     "Lootom Telcovideo Network Wuxi Co Ltd",
-       [3]byte{0, 15, 51}:     "DUALi Inc.",
-       [3]byte{0, 15, 52}:     "Cisco Systems, Inc",
-       [3]byte{0, 15, 53}:     "Cisco Systems, Inc",
-       [3]byte{0, 15, 54}:     "Accurate Techhnologies, Inc.",
-       [3]byte{0, 15, 55}:     "Xambala Incorporated",
-       [3]byte{0, 15, 56}:     "Netstar",
-       [3]byte{0, 15, 57}:     "IRIS SENSORS",
-       [3]byte{0, 15, 58}:     "HISHARP",
-       [3]byte{0, 15, 59}:     "Fuji System Machines Co., Ltd.",
-       [3]byte{0, 15, 60}:     "Endeleo Limited",
-       [3]byte{0, 15, 61}:     "D-Link Corporation",
-       [3]byte{0, 15, 62}:     "CardioNet, Inc",
-       [3]byte{0, 15, 63}:     "Big Bear Networks",
-       [3]byte{0, 15, 64}:     "Optical Internetworking Forum",
-       [3]byte{0, 15, 65}:     "Zipher Ltd",
-       [3]byte{0, 15, 66}:     "Xalyo Systems",
-       [3]byte{0, 15, 67}:     "Wasabi Systems Inc.",
-       [3]byte{0, 15, 68}:     "Tivella Inc.",
-       [3]byte{0, 15, 69}:     "Stretch, Inc.",
-       [3]byte{0, 15, 70}:     "SINAR AG",
-       [3]byte{0, 15, 71}:     "ROBOX SPA",
-       [3]byte{0, 15, 72}:     "Polypix Inc.",
-       [3]byte{0, 15, 73}:     "Northover Solutions Limited",
-       [3]byte{0, 15, 74}:     "Kyushu-kyohan co.,ltd",
-       [3]byte{0, 15, 75}:     "Oracle Corporation",
-       [3]byte{0, 15, 76}:     "Elextech INC",
-       [3]byte{0, 15, 77}:     "TalkSwitch",
-       [3]byte{0, 15, 78}:     "Cellink",
-       [3]byte{0, 15, 79}:     "PCS Systemtechnik GmbH",
-       [3]byte{0, 15, 80}:     "StreamScale Limited",
-       [3]byte{0, 15, 81}:     "Azul Systems, Inc.",
-       [3]byte{0, 15, 82}:     "YORK Refrigeration, Marine & Controls",
-       [3]byte{0, 15, 83}:     "Solarflare Communications Inc",
-       [3]byte{0, 15, 84}:     "Entrelogic Corporation",
-       [3]byte{0, 15, 85}:     "Datawire Communication Networks Inc.",
-       [3]byte{0, 15, 86}:     "Continuum Photonics Inc",
-       [3]byte{0, 15, 87}:     "CABLELOGIC Co., Ltd.",
-       [3]byte{0, 15, 88}:     "Adder Technology Limited",
-       [3]byte{0, 15, 89}:     "Phonak AG",
-       [3]byte{0, 15, 90}:     "Peribit Networks",
-       [3]byte{0, 15, 91}:     "Delta Information Systems, Inc.",
-       [3]byte{0, 15, 92}:     "Day One Digital Media Limited",
-       [3]byte{0, 15, 93}:     "Genexis BV",
-       [3]byte{0, 15, 94}:     "Veo",
-       [3]byte{0, 15, 95}:     "Nicety Technologies Inc. (NTS)",
-       [3]byte{0, 15, 96}:     "Lifetron Co.,Ltd",
-       [3]byte{0, 15, 97}:     "Hewlett Packard",
-       [3]byte{0, 15, 98}:     "Alcatel Bell Space N.V.",
-       [3]byte{0, 15, 99}:     "Obzerv Technologies",
-       [3]byte{0, 15, 100}:    "D&R Electronica Weesp BV",
-       [3]byte{0, 15, 101}:    "icube Corp.",
-       [3]byte{0, 15, 102}:    "Cisco-Linksys, LLC",
-       [3]byte{0, 15, 103}:    "West Instruments",
-       [3]byte{0, 15, 104}:    "Vavic Network Technology, Inc.",
-       [3]byte{0, 15, 105}:    "SEW Eurodrive GmbH & Co. KG",
-       [3]byte{0, 15, 106}:    "Nortel Networks",
-       [3]byte{0, 15, 107}:    "GateWare Communications GmbH",
-       [3]byte{0, 15, 108}:    "ADDI-DATA GmbH",
-       [3]byte{0, 15, 109}:    "Midas Engineering",
-       [3]byte{0, 15, 110}:    "BBox",
-       [3]byte{0, 15, 111}:    "FTA Communication Technologies",
-       [3]byte{0, 15, 112}:    "Wintec Industries, inc.",
-       [3]byte{0, 15, 113}:    "Sanmei Electronics Co.,Ltd",
-       [3]byte{0, 15, 114}:    "Sandburst",
-       [3]byte{0, 15, 115}:    "RS Automation Co., Ltd",
-       [3]byte{0, 15, 116}:    "Qamcom Technology AB",
-       [3]byte{0, 15, 117}:    "First Silicon Solutions",
-       [3]byte{0, 15, 118}:    "Digital Keystone, Inc.",
-       [3]byte{0, 15, 119}:    "DENTUM CO.,LTD",
-       [3]byte{0, 15, 120}:    "Datacap Systems Inc",
-       [3]byte{0, 15, 121}:    "Bluetooth Interest Group Inc.",
-       [3]byte{0, 15, 122}:    "BeiJing NuQX Technology CO.,LTD",
-       [3]byte{0, 15, 123}:    "Arce Sistemas, S.A.",
-       [3]byte{0, 15, 124}:    "ACTi Corporation",
-       [3]byte{0, 15, 125}:    "Xirrus",
-       [3]byte{0, 15, 126}:    "Ablerex Electronics Co., LTD",
-       [3]byte{0, 15, 127}:    "UBSTORAGE Co.,Ltd.",
-       [3]byte{0, 15, 128}:    "Trinity Security Systems,Inc.",
-       [3]byte{0, 15, 129}:    "PAL Pacific Inc.",
-       [3]byte{0, 15, 130}:    "Mortara Instrument, Inc.",
-       [3]byte{0, 15, 131}:    "Brainium Technologies Inc.",
-       [3]byte{0, 15, 132}:    "Astute Networks, Inc.",
-       [3]byte{0, 15, 133}:    "ADDO-Japan Corporation",
-       [3]byte{0, 15, 134}:    "BlackBerry RTS",
-       [3]byte{0, 15, 135}:    "Maxcess International",
-       [3]byte{0, 15, 136}:    "AMETEK, Inc.",
-       [3]byte{0, 15, 137}:    "Winnertec System Co., Ltd.",
-       [3]byte{0, 15, 138}:    "WideView",
-       [3]byte{0, 15, 139}:    "Orion MultiSystems Inc",
-       [3]byte{0, 15, 140}:    "Gigawavetech Pte Ltd",
-       [3]byte{0, 15, 141}:    "FAST TV-Server AG",
-       [3]byte{0, 15, 142}:    "DONGYANG TELECOM CO.,LTD.",
-       [3]byte{0, 15, 143}:    "Cisco Systems, Inc",
-       [3]byte{0, 15, 144}:    "Cisco Systems, Inc",
-       [3]byte{0, 15, 145}:    "Aerotelecom Co.,Ltd.",
-       [3]byte{0, 15, 146}:    "Microhard Systems Inc.",
-       [3]byte{0, 15, 147}:    "Landis+Gyr Ltd.",
-       [3]byte{0, 15, 148}:    "Genexis BV",
-       [3]byte{0, 15, 149}:    "ELECOM Co.,LTD Laneed Division",
-       [3]byte{0, 15, 150}:    "Telco Systems, Inc.",
-       [3]byte{0, 15, 151}:    "Avanex Corporation",
-       [3]byte{0, 15, 152}:    "Avamax Co. Ltd.",
-       [3]byte{0, 15, 153}:    "APAC opto Electronics Inc.",
-       [3]byte{0, 15, 154}:    "Synchrony, Inc.",
-       [3]byte{0, 15, 155}:    "Ross Video Limited",
-       [3]byte{0, 15, 156}:    "Panduit Corp",
-       [3]byte{0, 15, 157}:    "DisplayLink (UK) Ltd",
-       [3]byte{0, 15, 158}:    "Murrelektronik GmbH",
-       [3]byte{0, 15, 159}:    "ARRIS Group, Inc.",
-       [3]byte{0, 15, 160}:    "CANON KOREA BUSINESS SOLUTIONS INC.",
-       [3]byte{0, 15, 161}:    "Gigabit Systems Inc.",
-       [3]byte{0, 15, 162}:    "2xWireless",
-       [3]byte{0, 15, 163}:    "Alpha Networks Inc.",
-       [3]byte{0, 15, 164}:    "Sprecher Automation GmbH",
-       [3]byte{0, 15, 165}:    "BWA Technology GmbH",
-       [3]byte{0, 15, 166}:    "S2 Security Corporation",
-       [3]byte{0, 15, 167}:    "Raptor Networks Technology",
-       [3]byte{0, 15, 168}:    "Photometrics, Inc.",
-       [3]byte{0, 15, 169}:    "PC Fabrik",
-       [3]byte{0, 15, 170}:    "Nexus Technologies",
-       [3]byte{0, 15, 171}:    "Kyushu Electronics Systems Inc.",
-       [3]byte{0, 15, 172}:    "IEEE 802.11",
-       [3]byte{0, 15, 173}:    "FMN communications GmbH",
-       [3]byte{0, 15, 174}:    "E2O Communications",
-       [3]byte{0, 15, 175}:    "Dialog Inc.",
-       [3]byte{0, 15, 176}:    "COMPAL ELECTRONICS, INC.",
-       [3]byte{0, 15, 177}:    "Cognio Inc.",
-       [3]byte{0, 15, 178}:    "Broadband Pacenet (India) Pvt. Ltd.",
-       [3]byte{0, 15, 179}:    "Actiontec Electronics, Inc",
-       [3]byte{0, 15, 180}:    "Timespace Technology",
-       [3]byte{0, 15, 181}:    "NETGEAR",
-       [3]byte{0, 15, 182}:    "Europlex Technologies",
-       [3]byte{0, 15, 183}:    "Cavium",
-       [3]byte{0, 15, 184}:    "CallURL Inc.",
-       [3]byte{0, 15, 185}:    "Adaptive Instruments",
-       [3]byte{0, 15, 186}:    "Tevebox AB",
-       [3]byte{0, 15, 187}:    "Nokia Siemens Networks GmbH & Co. KG.",
-       [3]byte{0, 15, 188}:    "Onkey Technologies, Inc.",
-       [3]byte{0, 15, 189}:    "MRV Communications (Networks) LTD",
-       [3]byte{0, 15, 190}:    "e-w/you Inc.",
-       [3]byte{0, 15, 191}:    "DGT Sp. z o.o.",
-       [3]byte{0, 15, 192}:    "DELCOMp",
-       [3]byte{0, 15, 193}:    "WAVE Corporation",
-       [3]byte{0, 15, 194}:    "Uniwell Corporation",
-       [3]byte{0, 15, 195}:    "PalmPalm Technology, Inc.",
-       [3]byte{0, 15, 196}:    "NST co.,LTD.",
-       [3]byte{0, 15, 197}:    "KeyMed Ltd",
-       [3]byte{0, 15, 198}:    "Eurocom Industries A/S",
-       [3]byte{0, 15, 199}:    "Dionica R&D Ltd.",
-       [3]byte{0, 15, 200}:    "Chantry Networks",
-       [3]byte{0, 15, 201}:    "Allnet GmbH",
-       [3]byte{0, 15, 202}:    "A-JIN TECHLINE CO, LTD",
-       [3]byte{0, 15, 203}:    "3Com Ltd",
-       [3]byte{0, 15, 204}:    "ARRIS Group, Inc.",
-       [3]byte{0, 15, 205}:    "Nortel Networks",
-       [3]byte{0, 15, 206}:    "Kikusui Electronics Corp.",
-       [3]byte{0, 15, 207}:    "DataWind Research",
-       [3]byte{0, 15, 208}:    "ASTRI",
-       [3]byte{0, 15, 209}:    "Applied Wireless Identifications Group, Inc.",
-       [3]byte{0, 15, 210}:    "EWA Technologies, Inc.",
-       [3]byte{0, 15, 211}:    "Digium",
-       [3]byte{0, 15, 212}:    "Soundcraft",
-       [3]byte{0, 15, 213}:    "Schwechat - RISE",
-       [3]byte{0, 15, 214}:    "Sarotech Co., Ltd",
-       [3]byte{0, 15, 215}:    "Harman Music Group",
-       [3]byte{0, 15, 216}:    "Force, Inc.",
-       [3]byte{0, 15, 217}:    "FlexDSL Telecommunications AG",
-       [3]byte{0, 15, 218}:    "YAZAKI CORPORATION",
-       [3]byte{0, 15, 219}:    "Westell Technologies Inc.",
-       [3]byte{0, 15, 220}:    "Ueda Japan  Radio Co., Ltd.",
-       [3]byte{0, 15, 221}:    "SORDIN AB",
-       [3]byte{0, 15, 222}:    "Sony Mobile Communications AB",
-       [3]byte{0, 15, 223}:    "SOLOMON Technology Corp.",
-       [3]byte{0, 15, 224}:    "NComputing Co.,Ltd.",
-       [3]byte{0, 15, 225}:    "ID DIGITAL CORPORATION",
-       [3]byte{0, 15, 226}:    "Hangzhou H3C Technologies Co., Limited",
-       [3]byte{0, 15, 227}:    "Damm Cellular Systems A/S",
-       [3]byte{0, 15, 228}:    "Pantech Co.,Ltd",
-       [3]byte{0, 15, 229}:    "MERCURY SECURITY CORPORATION",
-       [3]byte{0, 15, 230}:    "MBTech Systems, Inc.",
-       [3]byte{0, 15, 231}:    "Lutron Electronics Co., Inc.",
-       [3]byte{0, 15, 232}:    "Lobos, Inc.",
-       [3]byte{0, 15, 233}:    "GW TECHNOLOGIES CO.,LTD.",
-       [3]byte{0, 15, 234}:    "Giga-Byte Technology Co.,LTD.",
-       [3]byte{0, 15, 235}:    "Cylon Controls",
-       [3]byte{0, 15, 236}:    "ARKUS Inc.",
-       [3]byte{0, 15, 237}:    "Anam Electronics Co., Ltd",
-       [3]byte{0, 15, 238}:    "XTec, Incorporated",
-       [3]byte{0, 15, 239}:    "Thales e-Transactions GmbH",
-       [3]byte{0, 15, 240}:    "Sunray Co. Ltd.",
-       [3]byte{0, 15, 241}:    "nex-G Systems Pte.Ltd",
-       [3]byte{0, 15, 242}:    "Loud Technologies Inc.",
-       [3]byte{0, 15, 243}:    "Jung Myoung Communications&Technology",
-       [3]byte{0, 15, 244}:    "Guntermann & Drunck GmbH",
-       [3]byte{0, 15, 245}:    "GN&S company",
-       [3]byte{0, 15, 246}:    "DARFON LIGHTING CORP",
-       [3]byte{0, 15, 247}:    "Cisco Systems, Inc",
-       [3]byte{0, 15, 248}:    "Cisco Systems, Inc",
-       [3]byte{0, 15, 249}:    "Valcretec, Inc.",
-       [3]byte{0, 15, 250}:    "Optinel Systems, Inc.",
-       [3]byte{0, 15, 251}:    "Nippon Denso Industry Co., Ltd.",
-       [3]byte{0, 15, 252}:    "Merit Li-Lin Ent.",
-       [3]byte{0, 15, 253}:    "Glorytek Network Inc.",
-       [3]byte{0, 15, 254}:    "G-PRO COMPUTER",
-       [3]byte{0, 15, 255}:    "Control4",
-       [3]byte{0, 16, 0}:      "CABLE TELEVISION LABORATORIES, INC.",
-       [3]byte{0, 16, 1}:      "Citel",
-       [3]byte{0, 16, 2}:      "ACTIA",
-       [3]byte{0, 16, 3}:      "IMATRON, INC.",
-       [3]byte{0, 16, 4}:      "THE BRANTLEY COILE COMPANY,INC",
-       [3]byte{0, 16, 5}:      "UEC COMMERCIAL",
-       [3]byte{0, 16, 6}:      "Thales Contact Solutions Ltd.",
-       [3]byte{0, 16, 7}:      "Cisco Systems, Inc",
-       [3]byte{0, 16, 8}:      "VIENNA SYSTEMS CORPORATION",
-       [3]byte{0, 16, 9}:      "HORANET",
-       [3]byte{0, 16, 10}:     "WILLIAMS COMMUNICATIONS GROUP",
-       [3]byte{0, 16, 11}:     "Cisco Systems, Inc",
-       [3]byte{0, 16, 12}:     "ITO CO., LTD.",
-       [3]byte{0, 16, 13}:     "Cisco Systems, Inc",
-       [3]byte{0, 16, 14}:     "MICRO LINEAR COPORATION",
-       [3]byte{0, 16, 15}:     "INDUSTRIAL CPU SYSTEMS",
-       [3]byte{0, 16, 16}:     "INITIO CORPORATION",
-       [3]byte{0, 16, 17}:     "Cisco Systems, Inc",
-       [3]byte{0, 16, 18}:     "PROCESSOR SYSTEMS (I) PVT LTD",
-       [3]byte{0, 16, 19}:     "Kontron America, Inc.",
-       [3]byte{0, 16, 20}:     "Cisco Systems, Inc",
-       [3]byte{0, 16, 21}:     "OOmon Inc.",
-       [3]byte{0, 16, 22}:     "T.SQWARE",
-       [3]byte{0, 16, 23}:     "Bosch Access Systems GmbH",
-       [3]byte{0, 16, 24}:     "Broadcom",
-       [3]byte{0, 16, 25}:     "SIRONA DENTAL SYSTEMS GmbH & Co. KG",
-       [3]byte{0, 16, 26}:     "PictureTel Corp.",
-       [3]byte{0, 16, 27}:     "CORNET TECHNOLOGY, INC.",
-       [3]byte{0, 16, 28}:     "OHM TECHNOLOGIES INTL, LLC",
-       [3]byte{0, 16, 29}:     "WINBOND ELECTRONICS CORP.",
-       [3]byte{0, 16, 30}:     "MATSUSHITA ELECTRONIC INSTRUMENTS CORP.",
-       [3]byte{0, 16, 31}:     "Cisco Systems, Inc",
-       [3]byte{0, 16, 32}:     "Hand Held Products Inc",
-       [3]byte{0, 16, 33}:     "ENCANTO NETWORKS, INC.",
-       [3]byte{0, 16, 34}:     "SatCom Media Corporation",
-       [3]byte{0, 16, 35}:     "Network Equipment Technologies",
-       [3]byte{0, 16, 36}:     "NAGOYA ELECTRIC WORKS CO., LTD",
-       [3]byte{0, 16, 37}:     "Grayhill, Inc",
-       [3]byte{0, 16, 38}:     "ACCELERATED NETWORKS, INC.",
-       [3]byte{0, 16, 39}:     "L-3 COMMUNICATIONS EAST",
-       [3]byte{0, 16, 40}:     "COMPUTER TECHNICA, INC.",
-       [3]byte{0, 16, 41}:     "Cisco Systems, Inc",
-       [3]byte{0, 16, 42}:     "ZF MICROSYSTEMS, INC.",
-       [3]byte{0, 16, 43}:     "UMAX DATA SYSTEMS, INC.",
-       [3]byte{0, 16, 44}:     "Lasat Networks A/S",
-       [3]byte{0, 16, 45}:     "HITACHI SOFTWARE ENGINEERING",
-       [3]byte{0, 16, 46}:     "NETWORK SYSTEMS & TECHNOLOGIES PVT. LTD.",
-       [3]byte{0, 16, 47}:     "Cisco Systems, Inc",
-       [3]byte{0, 16, 48}:     "EION Inc.",
-       [3]byte{0, 16, 49}:     "OBJECTIVE COMMUNICATIONS, INC.",
-       [3]byte{0, 16, 50}:     "ALTA TECHNOLOGY",
-       [3]byte{0, 16, 51}:     "ACCESSLAN COMMUNICATIONS, INC.",
-       [3]byte{0, 16, 52}:     "GNP Computers",
-       [3]byte{0, 16, 53}:     "Elitegroup Computer Systems Co.,Ltd.",
-       [3]byte{0, 16, 54}:     "INTER-TEL INTEGRATED SYSTEMS",
-       [3]byte{0, 16, 55}:     "CYQ've Technology Co., Ltd.",
-       [3]byte{0, 16, 56}:     "MICRO RESEARCH INSTITUTE, INC.",
-       [3]byte{0, 16, 57}:     "Vectron Systems AG",
-       [3]byte{0, 16, 58}:     "DIAMOND NETWORK TECH",
-       [3]byte{0, 16, 59}:     "HIPPI NETWORKING FORUM",
-       [3]byte{0, 16, 60}:     "IC ENSEMBLE, INC.",
-       [3]byte{0, 16, 61}:     "PHASECOM, LTD.",
-       [3]byte{0, 16, 62}:     "NETSCHOOLS CORPORATION",
-       [3]byte{0, 16, 63}:     "TOLLGRADE COMMUNICATIONS, INC.",
-       [3]byte{0, 16, 64}:     "INTERMEC CORPORATION",
-       [3]byte{0, 16, 65}:     "BRISTOL BABCOCK, INC.",
-       [3]byte{0, 16, 66}:     "Alacritech, Inc.",
-       [3]byte{0, 16, 67}:     "A2 CORPORATION",
-       [3]byte{0, 16, 68}:     "InnoLabs Corporation",
-       [3]byte{0, 16, 69}:     "Nortel Networks",
-       [3]byte{0, 16, 70}:     "ALCORN MCBRIDE INC.",
-       [3]byte{0, 16, 71}:     "ECHO ELETRIC CO. LTD.",
-       [3]byte{0, 16, 72}:     "HTRC AUTOMATION, INC.",
-       [3]byte{0, 16, 73}:     "ShoreTel, Inc",
-       [3]byte{0, 16, 74}:     "The Parvus Corporation",
-       [3]byte{0, 16, 75}:     "3COM CORPORATION",
-       [3]byte{0, 16, 76}:     "Teledyne LeCroy, Inc",
-       [3]byte{0, 16, 77}:     "SURTEC INDUSTRIES, INC.",
-       [3]byte{0, 16, 78}:     "CEOLOGIC",
-       [3]byte{0, 16, 79}:     "Oracle Corporation",
-       [3]byte{0, 16, 80}:     "RION CO., LTD.",
-       [3]byte{0, 16, 81}:     "CMICRO CORPORATION",
-       [3]byte{0, 16, 82}:     "METTLER-TOLEDO (ALBSTADT) GMBH",
-       [3]byte{0, 16, 83}:     "COMPUTER TECHNOLOGY CORP.",
-       [3]byte{0, 16, 84}:     "Cisco Systems, Inc",
-       [3]byte{0, 16, 85}:     "FUJITSU MICROELECTRONICS, INC.",
-       [3]byte{0, 16, 86}:     "SODICK CO., LTD.",
-       [3]byte{0, 16, 87}:     "Rebel.com, Inc.",
-       [3]byte{0, 16, 88}:     "ArrowPoint Communications",
-       [3]byte{0, 16, 89}:     "DIABLO RESEARCH CO. LLC",
-       [3]byte{0, 16, 90}:     "3COM CORPORATION",
-       [3]byte{0, 16, 91}:     "NET INSIGHT AB",
-       [3]byte{0, 16, 92}:     "QUANTUM DESIGNS (H.K.) LTD.",
-       [3]byte{0, 16, 93}:     "Draeger Medical",
-       [3]byte{0, 16, 94}:     "Spirent plc, Service Assurance Broadband",
-       [3]byte{0, 16, 95}:     "ZODIAC DATA SYSTEMS",
-       [3]byte{0, 16, 96}:     "BILLIONTON SYSTEMS, INC.",
-       [3]byte{0, 16, 97}:     "HOSTLINK CORP.",
-       [3]byte{0, 16, 98}:     "NX SERVER, ILNC.",
-       [3]byte{0, 16, 99}:     "STARGUIDE DIGITAL NETWORKS",
-       [3]byte{0, 16, 100}:    "DNPG, LLC",
-       [3]byte{0, 16, 101}:    "RADYNE CORPORATION",
-       [3]byte{0, 16, 102}:    "ADVANCED CONTROL SYSTEMS, INC.",
-       [3]byte{0, 16, 103}:    "Ericsson",
-       [3]byte{0, 16, 104}:    "COMOS TELECOM",
-       [3]byte{0, 16, 105}:    "HELIOSS COMMUNICATIONS, INC.",
-       [3]byte{0, 16, 106}:    "DIGITAL MICROWAVE CORPORATION",
-       [3]byte{0, 16, 107}:    "SONUS NETWORKS, INC.",
-       [3]byte{0, 16, 108}:    "EDNT GmbH",
-       [3]byte{0, 16, 109}:    "Axxcelera Broadband Wireless",
-       [3]byte{0, 16, 110}:    "TADIRAN COM. LTD.",
-       [3]byte{0, 16, 111}:    "TRENTON TECHNOLOGY INC.",
-       [3]byte{0, 16, 112}:    "CARADON TREND LTD.",
-       [3]byte{0, 16, 113}:    "ADVANET INC.",
-       [3]byte{0, 16, 114}:    "GVN TECHNOLOGIES, INC.",
-       [3]byte{0, 16, 115}:    "TECHNOBOX, INC.",
-       [3]byte{0, 16, 116}:    "ATEN INTERNATIONAL CO., LTD.",
-       [3]byte{0, 16, 117}:    "Segate Technology LLC",
-       [3]byte{0, 16, 118}:    "EUREM GmbH",
-       [3]byte{0, 16, 119}:    "SAF DRIVE SYSTEMS, LTD.",
-       [3]byte{0, 16, 120}:    "NUERA COMMUNICATIONS, INC.",
-       [3]byte{0, 16, 121}:    "Cisco Systems, Inc",
-       [3]byte{0, 16, 122}:    "AmbiCom, Inc.",
-       [3]byte{0, 16, 123}:    "Cisco Systems, Inc",
-       [3]byte{0, 16, 124}:    "P-COM, INC.",
-       [3]byte{0, 16, 125}:    "AURORA COMMUNICATIONS, LTD.",
-       [3]byte{0, 16, 126}:    "BACHMANN ELECTRONIC GmbH",
-       [3]byte{0, 16, 127}:    "CRESTRON ELECTRONICS, INC.",
-       [3]byte{0, 16, 128}:    "METAWAVE COMMUNICATIONS",
-       [3]byte{0, 16, 129}:    "DPS, INC.",
-       [3]byte{0, 16, 130}:    "JNA TELECOMMUNICATIONS LIMITED",
-       [3]byte{0, 16, 131}:    "Hewlett Packard",
-       [3]byte{0, 16, 132}:    "K-BOT COMMUNICATIONS",
-       [3]byte{0, 16, 133}:    "POLARIS COMMUNICATIONS, INC.",
-       [3]byte{0, 16, 134}:    "ATTO Technology, Inc.",
-       [3]byte{0, 16, 135}:    "XSTREAMIS PLC",
-       [3]byte{0, 16, 136}:    "AMERICAN NETWORKS INC.",
-       [3]byte{0, 16, 137}:    "WebSonic",
-       [3]byte{0, 16, 138}:    "TeraLogic, Inc.",
-       [3]byte{0, 16, 139}:    "LASERANIMATION SOLLINGER GMBH",
-       [3]byte{0, 16, 140}:    "Fujitsu Services Ltd",
-       [3]byte{0, 16, 141}:    "Johnson Controls, Inc.",
-       [3]byte{0, 16, 142}:    "HUGH SYMONS CONCEPT Technologies Ltd.",
-       [3]byte{0, 16, 143}:    "RAPTOR SYSTEMS",
-       [3]byte{0, 16, 144}:    "CIMETRICS, INC.",
-       [3]byte{0, 16, 145}:    "NO WIRES NEEDED BV",
-       [3]byte{0, 16, 146}:    "NETCORE INC.",
-       [3]byte{0, 16, 147}:    "CMS COMPUTERS, LTD.",
-       [3]byte{0, 16, 148}:    "Performance Analysis Broadband, Spirent plc",
-       [3]byte{0, 16, 149}:    "Thomson Inc.",
-       [3]byte{0, 16, 150}:    "TRACEWELL SYSTEMS, INC.",
-       [3]byte{0, 16, 151}:    "WinNet Metropolitan Communications Systems, Inc.",
-       [3]byte{0, 16, 152}:    "STARNET TECHNOLOGIES, INC.",
-       [3]byte{0, 16, 153}:    "InnoMedia, Inc.",
-       [3]byte{0, 16, 154}:    "NETLINE",
-       [3]byte{0, 16, 155}:    "Emulex Corporation",
-       [3]byte{0, 16, 156}:    "M-SYSTEM CO., LTD.",
-       [3]byte{0, 16, 157}:    "CLARINET SYSTEMS, INC.",
-       [3]byte{0, 16, 158}:    "AWARE, INC.",
-       [3]byte{0, 16, 159}:    "PAVO, INC.",
-       [3]byte{0, 16, 160}:    "INNOVEX TECHNOLOGIES, INC.",
-       [3]byte{0, 16, 161}:    "KENDIN SEMICONDUCTOR, INC.",
-       [3]byte{0, 16, 162}:    "TNS",
-       [3]byte{0, 16, 163}:    "OMNITRONIX, INC.",
-       [3]byte{0, 16, 164}:    "XIRCOM",
-       [3]byte{0, 16, 165}:    "OXFORD INSTRUMENTS",
-       [3]byte{0, 16, 166}:    "Cisco Systems, Inc",
-       [3]byte{0, 16, 167}:    "UNEX TECHNOLOGY CORPORATION",
-       [3]byte{0, 16, 168}:    "RELIANCE COMPUTER CORP.",
-       [3]byte{0, 16, 169}:    "ADHOC TECHNOLOGIES",
-       [3]byte{0, 16, 170}:    "MEDIA4, INC.",
-       [3]byte{0, 16, 171}:    "KOITO ELECTRIC INDUSTRIES, LTD.",
-       [3]byte{0, 16, 172}:    "IMCI TECHNOLOGIES",
-       [3]byte{0, 16, 173}:    "SOFTRONICS USB, INC.",
-       [3]byte{0, 16, 174}:    "SHINKO ELECTRIC INDUSTRIES CO.",
-       [3]byte{0, 16, 175}:    "TAC SYSTEMS, INC.",
-       [3]byte{0, 16, 176}:    "MERIDIAN TECHNOLOGY CORP.",
-       [3]byte{0, 16, 177}:    "FOR-A CO., LTD.",
-       [3]byte{0, 16, 178}:    "COACTIVE AESTHETICS",
-       [3]byte{0, 16, 179}:    "NOKIA MULTIMEDIA TERMINALS",
-       [3]byte{0, 16, 180}:    "ATMOSPHERE NETWORKS",
-       [3]byte{0, 16, 181}:    "Accton Technology Corp",
-       [3]byte{0, 16, 182}:    "ENTRATA COMMUNICATIONS CORP.",
-       [3]byte{0, 16, 183}:    "COYOTE TECHNOLOGIES, LLC",
-       [3]byte{0, 16, 184}:    "ISHIGAKI COMPUTER SYSTEM CO.",
-       [3]byte{0, 16, 185}:    "MAXTOR CORP.",
-       [3]byte{0, 16, 186}:    "MARTINHO-DAVIS SYSTEMS, INC.",
-       [3]byte{0, 16, 187}:    "DATA & INFORMATION TECHNOLOGY",
-       [3]byte{0, 16, 188}:    "Aastra Telecom",
-       [3]byte{0, 16, 189}:    "THE TELECOMMUNICATION TECHNOLOGY COMMITTEE (TTC)",
-       [3]byte{0, 16, 190}:    "MARCH NETWORKS CORPORATION",
-       [3]byte{0, 16, 191}:    "InterAir Wireless",
-       [3]byte{0, 16, 192}:    "ARMA, Inc.",
-       [3]byte{0, 16, 193}:    "OI ELECTRIC CO.,LTD",
-       [3]byte{0, 16, 194}:    "WILLNET, INC.",
-       [3]byte{0, 16, 195}:    "CSI-CONTROL SYSTEMS",
-       [3]byte{0, 16, 196}:    "MEDIA GLOBAL LINKS CO., LTD.",
-       [3]byte{0, 16, 197}:    "PROTOCOL TECHNOLOGIES, INC.",
-       [3]byte{0, 16, 198}:    "Universal Global Scientific Industrial Co., Ltd.",
-       [3]byte{0, 16, 199}:    "DATA TRANSMISSION NETWORK",
-       [3]byte{0, 16, 200}:    "COMMUNICATIONS ELECTRONICS SECURITY GROUP",
-       [3]byte{0, 16, 201}:    "MITSUBISHI ELECTRONICS LOGISTIC SUPPORT CO.",
-       [3]byte{0, 16, 202}:    "Telco Systems, Inc.",
-       [3]byte{0, 16, 203}:    "FACIT K.K.",
-       [3]byte{0, 16, 204}:    "CLP COMPUTER LOGISTIK PLANUNG GmbH",
-       [3]byte{0, 16, 205}:    "INTERFACE CONCEPT",
-       [3]byte{0, 16, 206}:    "VOLAMP, LTD.",
-       [3]byte{0, 16, 207}:    "FIBERLANE COMMUNICATIONS",
-       [3]byte{0, 16, 208}:    "WITCOM, LTD.",
-       [3]byte{0, 16, 209}:    "Top Layer Networks, Inc.",
-       [3]byte{0, 16, 210}:    "NITTO TSUSHINKI CO., LTD",
-       [3]byte{0, 16, 211}:    "GRIPS ELECTRONIC GMBH",
-       [3]byte{0, 16, 212}:    "STORAGE COMPUTER CORPORATION",
-       [3]byte{0, 16, 213}:    "IMASDE CANARIAS, S.A.",
-       [3]byte{0, 16, 214}:    "Exelis",
-       [3]byte{0, 16, 215}:    "ARGOSY RESEARCH INC.",
-       [3]byte{0, 16, 216}:    "CALISTA",
-       [3]byte{0, 16, 217}:    "IBM JAPAN, FUJISAWA MT+D",
-       [3]byte{0, 16, 218}:    "Kollmorgen Corp",
-       [3]byte{0, 16, 219}:    "Juniper Networks",
-       [3]byte{0, 16, 220}:    "MICRO-STAR INTERNATIONAL CO., LTD.",
-       [3]byte{0, 16, 221}:    "ENABLE SEMICONDUCTOR, INC.",
-       [3]byte{0, 16, 222}:    "INTERNATIONAL DATACASTING CORPORATION",
-       [3]byte{0, 16, 223}:    "RISE COMPUTER INC.",
-       [3]byte{0, 16, 224}:    "Oracle Corporation",
-       [3]byte{0, 16, 225}:    "S.I. TECH, INC.",
-       [3]byte{0, 16, 226}:    "ArrayComm, Inc.",
-       [3]byte{0, 16, 227}:    "Hewlett Packard",
-       [3]byte{0, 16, 228}:    "NSI CORPORATION",
-       [3]byte{0, 16, 229}:    "SOLECTRON TEXAS",
-       [3]byte{0, 16, 230}:    "APPLIED INTELLIGENT SYSTEMS, INC.",
-       [3]byte{0, 16, 231}:    "Breezecom, Ltd.",
-       [3]byte{0, 16, 232}:    "TELOCITY, INCORPORATED",
-       [3]byte{0, 16, 233}:    "RAIDTEC LTD.",
-       [3]byte{0, 16, 234}:    "ADEPT TECHNOLOGY",
-       [3]byte{0, 16, 235}:    "SELSIUS SYSTEMS, INC.",
-       [3]byte{0, 16, 236}:    "RPCG, LLC",
-       [3]byte{0, 16, 237}:    "SUNDANCE TECHNOLOGY, INC.",
-       [3]byte{0, 16, 238}:    "CTI PRODUCTS, INC.",
-       [3]byte{0, 16, 239}:    "DBTEL INCORPORATED",
-       [3]byte{0, 16, 240}:    "RITTAL-WERK RUDOLF LOH GmbH & Co.",
-       [3]byte{0, 16, 241}:    "I-O CORPORATION",
-       [3]byte{0, 16, 242}:    "ANTEC",
-       [3]byte{0, 16, 243}:    "Nexcom International Co., Ltd.",
-       [3]byte{0, 16, 244}:    "Vertical Communications",
-       [3]byte{0, 16, 245}:    "AMHERST SYSTEMS, INC.",
-       [3]byte{0, 16, 246}:    "Cisco Systems, Inc",
-       [3]byte{0, 16, 247}:    "IRIICHI TECHNOLOGIES Inc.",
-       [3]byte{0, 16, 248}:    "TEXIO TECHNOLOGY CORPORATION",
-       [3]byte{0, 16, 249}:    "UNIQUE SYSTEMS, INC.",
-       [3]byte{0, 16, 250}:    "Apple, Inc.",
-       [3]byte{0, 16, 251}:    "ZIDA TECHNOLOGIES LIMITED",
-       [3]byte{0, 16, 252}:    "BROADBAND NETWORKS, INC.",
-       [3]byte{0, 16, 253}:    "COCOM A/S",
-       [3]byte{0, 16, 254}:    "DIGITAL EQUIPMENT CORPORATION",
-       [3]byte{0, 16, 255}:    "Cisco Systems, Inc",
-       [3]byte{0, 17, 0}:      "Schneider Electric",
-       [3]byte{0, 17, 1}:      "CET Technologies Pte Ltd",
-       [3]byte{0, 17, 2}:      "Aurora Multimedia Corp.",
-       [3]byte{0, 17, 3}:      "kawamura electric inc.",
-       [3]byte{0, 17, 4}:      "TELEXY",
-       [3]byte{0, 17, 5}:      "Sunplus Technology Co., Ltd.",
-       [3]byte{0, 17, 6}:      "Siemens NV (Belgium)",
-       [3]byte{0, 17, 7}:      "RGB Networks Inc.",
-       [3]byte{0, 17, 8}:      "Orbital Data Corporation",
-       [3]byte{0, 17, 9}:      "Micro-Star International",
-       [3]byte{0, 17, 10}:     "Hewlett Packard",
-       [3]byte{0, 17, 11}:     "Franklin Technology Systems",
-       [3]byte{0, 17, 12}:     "Atmark Techno, Inc.",
-       [3]byte{0, 17, 13}:     "SANBlaze Technology, Inc.",
-       [3]byte{0, 17, 14}:     "Tsurusaki Sealand Transportation Co. Ltd.",
-       [3]byte{0, 17, 15}:     "netplat,Inc.",
-       [3]byte{0, 17, 16}:     "Maxanna Technology Co., Ltd.",
-       [3]byte{0, 17, 17}:     "Intel Corporation",
-       [3]byte{0, 17, 18}:     "Honeywell CMSS",
-       [3]byte{0, 17, 19}:     "Fraunhofer FOKUS",
-       [3]byte{0, 17, 20}:     "EverFocus Electronics Corp.",
-       [3]byte{0, 17, 21}:     "EPIN Technologies, Inc.",
-       [3]byte{0, 17, 22}:     "COTEAU VERT CO., LTD.",
-       [3]byte{0, 17, 23}:     "CESNET",
-       [3]byte{0, 17, 24}:     "BLX IC Design Corp., Ltd.",
-       [3]byte{0, 17, 25}:     "Solteras, Inc.",
-       [3]byte{0, 17, 26}:     "ARRIS Group, Inc.",
-       [3]byte{0, 17, 27}:     "Targa Systems Div L-3 Communications",
-       [3]byte{0, 17, 28}:     "Pleora Technologies Inc.",
-       [3]byte{0, 17, 29}:     "Hectrix Limited",
-       [3]byte{0, 17, 30}:     "EPSG (Ethernet Powerlink Standardization Group)",
-       [3]byte{0, 17, 31}:     "Doremi Labs, Inc.",
-       [3]byte{0, 17, 32}:     "Cisco Systems, Inc",
-       [3]byte{0, 17, 33}:     "Cisco Systems, Inc",
-       [3]byte{0, 17, 34}:     "CIMSYS Inc",
-       [3]byte{0, 17, 35}:     "Appointech, Inc.",
-       [3]byte{0, 17, 36}:     "Apple, Inc.",
-       [3]byte{0, 17, 37}:     "IBM Corp",
-       [3]byte{0, 17, 38}:     "Venstar Inc.",
-       [3]byte{0, 17, 39}:     "TASI, Inc",
-       [3]byte{0, 17, 40}:     "Streamit",
-       [3]byte{0, 17, 41}:     "Paradise Datacom Ltd.",
-       [3]byte{0, 17, 42}:     "Niko NV",
-       [3]byte{0, 17, 43}:     "NetModule AG",
-       [3]byte{0, 17, 44}:     "IZT GmbH",
-       [3]byte{0, 17, 45}:     "iPulse Systems",
-       [3]byte{0, 17, 46}:     "CEICOM",
-       [3]byte{0, 17, 47}:     "ASUSTek COMPUTER INC.",
-       [3]byte{0, 17, 48}:     "Allied Telesis (Hong Kong) Ltd.",
-       [3]byte{0, 17, 49}:     "UNATECH. CO.,LTD",
-       [3]byte{0, 17, 50}:     "Synology Incorporated",
-       [3]byte{0, 17, 51}:     "Siemens Austria SIMEA",
-       [3]byte{0, 17, 52}:     "MediaCell, Inc.",
-       [3]byte{0, 17, 53}:     "Grandeye Ltd",
-       [3]byte{0, 17, 54}:     "Goodrich Sensor Systems",
-       [3]byte{0, 17, 55}:     "AICHI ELECTRIC CO., LTD.",
-       [3]byte{0, 17, 56}:     "TAISHIN CO., LTD.",
-       [3]byte{0, 17, 57}:     "STOEBER ANTRIEBSTECHNIK GmbH + Co. KG.",
-       [3]byte{0, 17, 58}:     "SHINBORAM",
-       [3]byte{0, 17, 59}:     "Micronet Communications Inc.",
-       [3]byte{0, 17, 60}:     "Micronas GmbH",
-       [3]byte{0, 17, 61}:     "KN SOLTEC CO.,LTD.",
-       [3]byte{0, 17, 62}:     "JL Corporation",
-       [3]byte{0, 17, 63}:     "Alcatel DI",
-       [3]byte{0, 17, 64}:     "Nanometrics Inc.",
-       [3]byte{0, 17, 65}:     "GoodMan Corporation",
-       [3]byte{0, 17, 66}:     "e-SMARTCOM  INC.",
-       [3]byte{0, 17, 67}:     "Dell Inc.",
-       [3]byte{0, 17, 68}:     "Assurance Technology Corp",
-       [3]byte{0, 17, 69}:     "ValuePoint Networks",
-       [3]byte{0, 17, 70}:     "Telecard-Pribor Ltd",
-       [3]byte{0, 17, 71}:     "Secom-Industry co.LTD.",
-       [3]byte{0, 17, 72}:     "Prolon Control Systems",
-       [3]byte{0, 17, 73}:     "Proliphix Inc.",
-       [3]byte{0, 17, 74}:     "KAYABA INDUSTRY Co,.Ltd.",
-       [3]byte{0, 17, 75}:     "Francotyp-Postalia GmbH",
-       [3]byte{0, 17, 76}:     "caffeina applied research ltd.",
-       [3]byte{0, 17, 77}:     "Atsumi Electric Co.,LTD.",
-       [3]byte{0, 17, 78}:     "690885 Ontario Inc.",
-       [3]byte{0, 17, 79}:     "US Digital Television, Inc",
-       [3]byte{0, 17, 80}:     "Belkin Corporation",
-       [3]byte{0, 17, 81}:     "Mykotronx",
-       [3]byte{0, 17, 82}:     "Eidsvoll Electronics AS",
-       [3]byte{0, 17, 83}:     "Trident Tek, Inc.",
-       [3]byte{0, 17, 84}:     "Webpro Technologies Inc.",
-       [3]byte{0, 17, 85}:     "Sevis Systems",
-       [3]byte{0, 17, 86}:     "Pharos Systems NZ",
-       [3]byte{0, 17, 87}:     "Oki Electric Industry Co., Ltd.",
-       [3]byte{0, 17, 88}:     "Nortel Networks",
-       [3]byte{0, 17, 89}:     "MATISSE NETWORKS INC",
-       [3]byte{0, 17, 90}:     "Ivoclar Vivadent AG",
-       [3]byte{0, 17, 91}:     "Elitegroup Computer Systems Co.,Ltd.",
-       [3]byte{0, 17, 92}:     "Cisco Systems, Inc",
-       [3]byte{0, 17, 93}:     "Cisco Systems, Inc",
-       [3]byte{0, 17, 94}:     "ProMinent Dosiertechnik GmbH",
-       [3]byte{0, 17, 95}:     "ITX Security Co., Ltd.",
-       [3]byte{0, 17, 96}:     "ARTDIO Company Co., LTD",
-       [3]byte{0, 17, 97}:     "NetStreams, LLC",
-       [3]byte{0, 17, 98}:     "STAR MICRONICS CO.,LTD.",
-       [3]byte{0, 17, 99}:     "SYSTEM SPA DEPT. ELECTRONICS",
-       [3]byte{0, 17, 100}:    "ACARD Technology Corp.",
-       [3]byte{0, 17, 101}:    "ZNYX Networks, Inc.",
-       [3]byte{0, 17, 102}:    "Taelim Electronics Co., Ltd.",
-       [3]byte{0, 17, 103}:    "Integrated System Solution Corp.",
-       [3]byte{0, 17, 104}:    "HomeLogic LLC",
-       [3]byte{0, 17, 105}:    "EMS Satcom",
-       [3]byte{0, 17, 106}:    "Domo Ltd",
-       [3]byte{0, 17, 107}:    "Digital Data Communications Asia Co.,Ltd",
-       [3]byte{0, 17, 108}:    "Nanwang Multimedia Inc.,Ltd",
-       [3]byte{0, 17, 109}:    "American Time and Signal",
-       [3]byte{0, 17, 110}:    "Peplink International Ltd.",
-       [3]byte{0, 17, 111}:    "Netforyou Co., LTD.",
-       [3]byte{0, 17, 112}:    "GSC SRL",
-       [3]byte{0, 17, 113}:    "DEXTER Communications, Inc.",
-       [3]byte{0, 17, 114}:    "COTRON CORPORATION",
-       [3]byte{0, 17, 115}:    "SMART Storage Systems",
-       [3]byte{0, 17, 116}:    "Mojo Networks, Inc.",
-       [3]byte{0, 17, 117}:    "Intel Corporation",
-       [3]byte{0, 17, 118}:    "Intellambda Systems, Inc.",
-       [3]byte{0, 17, 119}:    "Coaxial Networks, Inc.",
-       [3]byte{0, 17, 120}:    "Chiron Technology Ltd",
-       [3]byte{0, 17, 121}:    "Singular Technology Co. Ltd.",
-       [3]byte{0, 17, 122}:    "Singim International Corp.",
-       [3]byte{0, 17, 123}:    "Büchi  Labortechnik AG",
-       [3]byte{0, 17, 124}:    "e-zy.net",
-       [3]byte{0, 17, 125}:    "ZMD America, Inc.",
-       [3]byte{0, 17, 126}:    "Midmark Corp",
-       [3]byte{0, 17, 127}:    "Neotune Information Technology Corporation,.LTD",
-       [3]byte{0, 17, 128}:    "ARRIS Group, Inc.",
-       [3]byte{0, 17, 129}:    "InterEnergy Co.Ltd,",
-       [3]byte{0, 17, 130}:    "IMI Norgren Ltd",
-       [3]byte{0, 17, 131}:    "Datalogic ADC, Inc.",
-       [3]byte{0, 17, 132}:    "Humo Laboratory,Ltd.",
-       [3]byte{0, 17, 133}:    "Hewlett Packard",
-       [3]byte{0, 17, 134}:    "Prime Systems, Inc.",
-       [3]byte{0, 17, 135}:    "Category Solutions, Inc",
-       [3]byte{0, 17, 136}:    "Enterasys",
-       [3]byte{0, 17, 137}:    "Aerotech Inc",
-       [3]byte{0, 17, 138}:    "Viewtran Technology Limited",
-       [3]byte{0, 17, 139}:    "Alcatel-Lucent Enterprise",
-       [3]byte{0, 17, 140}:    "Missouri Department of Transportation",
-       [3]byte{0, 17, 141}:    "Hanchang System Corp.",
-       [3]byte{0, 17, 142}:    "Halytech Mace",
-       [3]byte{0, 17, 143}:    "EUTECH INSTRUMENTS PTE. LTD.",
-       [3]byte{0, 17, 144}:    "Digital Design Corporation",
-       [3]byte{0, 17, 145}:    "CTS-Clima Temperatur Systeme GmbH",
-       [3]byte{0, 17, 146}:    "Cisco Systems, Inc",
-       [3]byte{0, 17, 147}:    "Cisco Systems, Inc",
-       [3]byte{0, 17, 148}:    "Chi Mei Communication Systems, Inc.",
-       [3]byte{0, 17, 149}:    "D-Link Corporation",
-       [3]byte{0, 17, 150}:    "Actuality Systems, Inc.",
-       [3]byte{0, 17, 151}:    "Monitoring Technologies Limited",
-       [3]byte{0, 17, 152}:    "Prism Media Products Limited",
-       [3]byte{0, 17, 153}:    "2wcom Systems GmbH",
-       [3]byte{0, 17, 154}:    "Alkeria srl",
-       [3]byte{0, 17, 155}:    "Telesynergy Research Inc.",
-       [3]byte{0, 17, 156}:    "EP&T Energy",
-       [3]byte{0, 17, 157}:    "Diginfo Technology Corporation",
-       [3]byte{0, 17, 158}:    "Solectron Brazil",
-       [3]byte{0, 17, 159}:    "Nokia Danmark A/S",
-       [3]byte{0, 17, 160}:    "Vtech Engineering Canada Ltd",
-       [3]byte{0, 17, 161}:    "VISION NETWARE CO.,LTD",
-       [3]byte{0, 17, 162}:    "Manufacturing Technology Inc",
-       [3]byte{0, 17, 163}:    "LanReady Technologies Inc.",
-       [3]byte{0, 17, 164}:    "JStream Technologies Inc.",
-       [3]byte{0, 17, 165}:    "Fortuna Electronic Corp.",
-       [3]byte{0, 17, 166}:    "Sypixx Networks",
-       [3]byte{0, 17, 167}:    "Infilco Degremont Inc.",
-       [3]byte{0, 17, 168}:    "Quest Technologies",
-       [3]byte{0, 17, 169}:    "MOIMSTONE Co., LTD",
-       [3]byte{0, 17, 170}:    "Uniclass Technology, Co., LTD",
-       [3]byte{0, 17, 171}:    "TRUSTABLE TECHNOLOGY CO.,LTD.",
-       [3]byte{0, 17, 172}:    "Simtec Electronics",
-       [3]byte{0, 17, 173}:    "Shanghai Ruijie Technology",
-       [3]byte{0, 17, 174}:    "ARRIS Group, Inc.",
-       [3]byte{0, 17, 175}:    "Medialink-i,Inc",
-       [3]byte{0, 17, 176}:    "Fortelink Inc.",
-       [3]byte{0, 17, 177}:    "BlueExpert Technology Corp.",
-       [3]byte{0, 17, 178}:    "2001 Technology Inc.",
-       [3]byte{0, 17, 179}:    "YOSHIMIYA CO.,LTD.",
-       [3]byte{0, 17, 180}:    "Westermo Teleindustri AB",
-       [3]byte{0, 17, 181}:    "Shenzhen Powercom Co.,Ltd",
-       [3]byte{0, 17, 182}:    "Open Systems International",
-       [3]byte{0, 17, 183}:    "Octalix B.V.",
-       [3]byte{0, 17, 184}:    "Liebherr - Elektronik GmbH",
-       [3]byte{0, 17, 185}:    "Inner Range Pty. Ltd.",
-       [3]byte{0, 17, 186}:    "Elexol Pty Ltd",
-       [3]byte{0, 17, 187}:    "Cisco Systems, Inc",
-       [3]byte{0, 17, 188}:    "Cisco Systems, Inc",
-       [3]byte{0, 17, 189}:    "Bombardier Transportation",
-       [3]byte{0, 17, 190}:    "AGP Telecom Co. Ltd",
-       [3]byte{0, 17, 191}:    "AESYS S.p.A.",
-       [3]byte{0, 17, 192}:    "Aday Technology Inc",
-       [3]byte{0, 17, 193}:    "4P MOBILE DATA PROCESSING",
-       [3]byte{0, 17, 194}:    "United Fiber Optic Communication",
-       [3]byte{0, 17, 195}:    "Transceiving System Technology Corporation",
-       [3]byte{0, 17, 196}:    "Terminales de Telecomunicacion Terrestre, S.L.",
-       [3]byte{0, 17, 197}:    "TEN Technology",
-       [3]byte{0, 17, 198}:    "Seagate Technology",
-       [3]byte{0, 17, 199}:    "Raymarine UK Ltd",
-       [3]byte{0, 17, 200}:    "Powercom Co., Ltd.",
-       [3]byte{0, 17, 201}:    "MTT Corporation",
-       [3]byte{0, 17, 202}:    "Long Range Systems, Inc.",
-       [3]byte{0, 17, 203}:    "Jacobsons AB",
-       [3]byte{0, 17, 204}:    "Guangzhou Jinpeng Group Co.,Ltd.",
-       [3]byte{0, 17, 205}:    "Axsun Technologies",
-       [3]byte{0, 17, 206}:    "Ubisense Limited",
-       [3]byte{0, 17, 207}:    "Thrane & Thrane A/S",
-       [3]byte{0, 17, 208}:    "Tandberg Data ASA",
-       [3]byte{0, 17, 209}:    "Soft Imaging System GmbH",
-       [3]byte{0, 17, 210}:    "Perception Digital Ltd",
-       [3]byte{0, 17, 211}:    "NextGenTel Holding ASA",
-       [3]byte{0, 17, 212}:    "NetEnrich, Inc",
-       [3]byte{0, 17, 213}:    "Hangzhou Sunyard System Engineering Co.,Ltd.",
-       [3]byte{0, 17, 214}:    "HandEra, Inc.",
-       [3]byte{0, 17, 215}:    "eWerks Inc",
-       [3]byte{0, 17, 216}:    "ASUSTek COMPUTER INC.",
-       [3]byte{0, 17, 217}:    "TiVo",
-       [3]byte{0, 17, 218}:    "Vivaas Technology Inc.",
-       [3]byte{0, 17, 219}:    "Land-Cellular Corporation",
-       [3]byte{0, 17, 220}:    "Glunz & Jensen",
-       [3]byte{0, 17, 221}:    "FROMUS TEC. Co., Ltd.",
-       [3]byte{0, 17, 222}:    "EURILOGIC",
-       [3]byte{0, 17, 223}:    "Current Energy",
-       [3]byte{0, 17, 224}:    "U-MEDIA Communications, Inc.",
-       [3]byte{0, 17, 225}:    "Arcelik A.S",
-       [3]byte{0, 17, 226}:    "Hua Jung Components Co., Ltd.",
-       [3]byte{0, 17, 227}:    "Thomson, Inc.",
-       [3]byte{0, 17, 228}:    "Danelec Electronics A/S",
-       [3]byte{0, 17, 229}:    "KCodes Corporation",
-       [3]byte{0, 17, 230}:    "Scientific Atlanta",
-       [3]byte{0, 17, 231}:    "WORLDSAT - Texas de France",
-       [3]byte{0, 17, 232}:    "Tixi.Com",
-       [3]byte{0, 17, 233}:    "STARNEX CO., LTD.",
-       [3]byte{0, 17, 234}:    "IWICS Inc.",
-       [3]byte{0, 17, 235}:    "Innovative Integration",
-       [3]byte{0, 17, 236}:    "AVIX INC.",
-       [3]byte{0, 17, 237}:    "802 Global",
-       [3]byte{0, 17, 238}:    "Estari, Inc.",
-       [3]byte{0, 17, 239}:    "Conitec Datensysteme GmbH",
-       [3]byte{0, 17, 240}:    "Wideful Limited",
-       [3]byte{0, 17, 241}:    "QinetiQ Ltd",
-       [3]byte{0, 17, 242}:    "Institute of Network Technologies",
-       [3]byte{0, 17, 243}:    "NeoMedia Europe AG",
-       [3]byte{0, 17, 244}:    "woori-net",
-       [3]byte{0, 17, 245}:    "ASKEY COMPUTER CORP",
-       [3]byte{0, 17, 246}:    "Asia Pacific Microsystems , Inc.",
-       [3]byte{0, 17, 247}:    "Shenzhen Forward Industry Co., Ltd",
-       [3]byte{0, 17, 248}:    "AIRAYA Corp",
-       [3]byte{0, 17, 249}:    "Nortel Networks",
-       [3]byte{0, 17, 250}:    "Rane Corporation",
-       [3]byte{0, 17, 251}:    "Heidelberg Engineering GmbH",
-       [3]byte{0, 17, 252}:    "HARTING Electronics GmbH",
-       [3]byte{0, 17, 253}:    "KORG INC.",
-       [3]byte{0, 17, 254}:    "Keiyo System Research, Inc.",
-       [3]byte{0, 17, 255}:    "Digitro Tecnologia Ltda",
-       [3]byte{0, 18, 0}:      "Cisco Systems, Inc",
-       [3]byte{0, 18, 1}:      "Cisco Systems, Inc",
-       [3]byte{0, 18, 2}:      "Decrane Aerospace - Audio International Inc.",
-       [3]byte{0, 18, 3}:      "ActivNetworks",
-       [3]byte{0, 18, 4}:      "u10 Networks, Inc.",
-       [3]byte{0, 18, 5}:      "Terrasat Communications, Inc.",
-       [3]byte{0, 18, 6}:      "iQuest (NZ) Ltd",
-       [3]byte{0, 18, 7}:      "Head Strong International Limited",
-       [3]byte{0, 18, 8}:      "Gantner Instruments GmbH",
-       [3]byte{0, 18, 9}:      "Fastrax Ltd",
-       [3]byte{0, 18, 10}:     "Emerson Climate Technologies GmbH",
-       [3]byte{0, 18, 11}:     "Chinasys Technologies Limited",
-       [3]byte{0, 18, 12}:     "CE-Infosys Pte Ltd",
-       [3]byte{0, 18, 13}:     "Advanced Telecommunication Technologies, Inc.",
-       [3]byte{0, 18, 14}:     "AboCom",
-       [3]byte{0, 18, 15}:     "IEEE 802.3",
-       [3]byte{0, 18, 16}:     "WideRay Corp",
-       [3]byte{0, 18, 17}:     "Protechna Herbst GmbH & Co. KG",
-       [3]byte{0, 18, 18}:     "PLUS  Corporation",
-       [3]byte{0, 18, 19}:     "Metrohm AG",
-       [3]byte{0, 18, 20}:     "Koenig & Bauer AG",
-       [3]byte{0, 18, 21}:     "iStor Networks, Inc.",
-       [3]byte{0, 18, 22}:     "ICP Internet Communication Payment AG",
-       [3]byte{0, 18, 23}:     "Cisco-Linksys, LLC",
-       [3]byte{0, 18, 24}:     "ARUZE Corporation",
-       [3]byte{0, 18, 25}:     "General Datacomm LLC",
-       [3]byte{0, 18, 26}:     "Techno Soft Systemnics Inc.",
-       [3]byte{0, 18, 27}:     "Sound Devices, LLC",
-       [3]byte{0, 18, 28}:     "PARROT SA",
-       [3]byte{0, 18, 29}:     "Netfabric Corporation",
-       [3]byte{0, 18, 30}:     "Juniper Networks",
-       [3]byte{0, 18, 31}:     "Harding Instruments",
-       [3]byte{0, 18, 32}:     "Cadco Systems",
-       [3]byte{0, 18, 33}:     "B.Braun Melsungen AG",
-       [3]byte{0, 18, 34}:     "Skardin (UK) Ltd",
-       [3]byte{0, 18, 35}:     "Pixim",
-       [3]byte{0, 18, 36}:     "NexQL Corporation",
-       [3]byte{0, 18, 37}:     "ARRIS Group, Inc.",
-       [3]byte{0, 18, 38}:     "Japan Direx Corporation",
-       [3]byte{0, 18, 39}:     "Franklin Electric Co., Inc.",
-       [3]byte{0, 18, 40}:     "Data Ltd.",
-       [3]byte{0, 18, 41}:     "BroadEasy Technologies Co.,Ltd",
-       [3]byte{0, 18, 42}:     "VTech Telecommunications Ltd.",
-       [3]byte{0, 18, 43}:     "Virbiage Pty Ltd",
-       [3]byte{0, 18, 44}:     "Soenen Controls N.V.",
-       [3]byte{0, 18, 45}:     "SiNett Corporation",
-       [3]byte{0, 18, 46}:     "Signal Technology - AISD",
-       [3]byte{0, 18, 47}:     "Sanei Electric Inc.",
-       [3]byte{0, 18, 48}:     "Picaso Infocommunication CO., LTD.",
-       [3]byte{0, 18, 49}:     "Motion Control Systems, Inc.",
-       [3]byte{0, 18, 50}:     "LeWiz Communications Inc.",
-       [3]byte{0, 18, 51}:     "JRC TOKKI Co.,Ltd.",
-       [3]byte{0, 18, 52}:     "Camille Bauer",
-       [3]byte{0, 18, 53}:     "Andrew Corporation",
-       [3]byte{0, 18, 54}:     "ConSentry Networks",
-       [3]byte{0, 18, 55}:     "Texas Instruments",
-       [3]byte{0, 18, 56}:     "SetaBox Technology Co., Ltd.",
-       [3]byte{0, 18, 57}:     "S Net Systems Inc.",
-       [3]byte{0, 18, 58}:     "Posystech Inc., Co.",
-       [3]byte{0, 18, 59}:     "KeRo Systems ApS",
-       [3]byte{0, 18, 60}:     "Second Rule LLC",
-       [3]byte{0, 18, 61}:     "GES Co, Ltd",
-       [3]byte{0, 18, 62}:     "ERUNE technology Co., Ltd.",
-       [3]byte{0, 18, 63}:     "Dell Inc.",
-       [3]byte{0, 18, 64}:     "AMOI ELECTRONICS CO.,LTD",
-       [3]byte{0, 18, 65}:     "a2i marketing center",
-       [3]byte{0, 18, 66}:     "Millennial Net",
-       [3]byte{0, 18, 67}:     "Cisco Systems, Inc",
-       [3]byte{0, 18, 68}:     "Cisco Systems, Inc",
-       [3]byte{0, 18, 69}:     "Zellweger Analytics, Inc.",
-       [3]byte{0, 18, 70}:     "T.O.M TECHNOLOGY INC..",
-       [3]byte{0, 18, 71}:     "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 18, 72}:     "Dell EMC",
-       [3]byte{0, 18, 73}:     "Delta Elettronica S.p.A.",
-       [3]byte{0, 18, 74}:     "Dedicated Devices, Inc.",
-       [3]byte{0, 18, 75}:     "Texas Instruments",
-       [3]byte{0, 18, 76}:     "BBWM Corporation",
-       [3]byte{0, 18, 77}:     "Inducon BV",
-       [3]byte{0, 18, 78}:     "XAC AUTOMATION CORP.",
-       [3]byte{0, 18, 79}:     "Pentair Thermal Management",
-       [3]byte{0, 18, 80}:     "Tokyo Aircaft Instrument Co., Ltd.",
-       [3]byte{0, 18, 81}:     "SILINK",
-       [3]byte{0, 18, 82}:     "Citronix, LLC",
-       [3]byte{0, 18, 83}:     "AudioDev AB",
-       [3]byte{0, 18, 84}:     "Spectra Technologies Holdings Company Ltd",
-       [3]byte{0, 18, 85}:     "NetEffect Incorporated",
-       [3]byte{0, 18, 86}:     "LG INFORMATION & COMM.",
-       [3]byte{0, 18, 87}:     "LeapComm Communication Technologies Inc.",
-       [3]byte{0, 18, 88}:     "Activis Polska",
-       [3]byte{0, 18, 89}:     "THERMO ELECTRON KARLSRUHE",
-       [3]byte{0, 18, 90}:     "Microsoft Corporation",
-       [3]byte{0, 18, 91}:     "KAIMEI ELECTRONI",
-       [3]byte{0, 18, 92}:     "Green Hills Software, Inc.",
-       [3]byte{0, 18, 93}:     "CyberNet Inc.",
-       [3]byte{0, 18, 94}:     "CAEN",
-       [3]byte{0, 18, 95}:     "AWIND Inc.",
-       [3]byte{0, 18, 96}:     "Stanton Magnetics,inc.",
-       [3]byte{0, 18, 97}:     "Adaptix, Inc",
-       [3]byte{0, 18, 98}:     "Nokia Danmark A/S",
-       [3]byte{0, 18, 99}:     "Data Voice Technologies GmbH",
-       [3]byte{0, 18, 100}:    "daum electronic gmbh",
-       [3]byte{0, 18, 101}:    "Enerdyne Technologies, Inc.",
-       [3]byte{0, 18, 102}:    "Swisscom Hospitality Services SA",
-       [3]byte{0, 18, 103}:    "Panasonic Corporation",
-       [3]byte{0, 18, 104}:    "IPS d.o.o.",
-       [3]byte{0, 18, 105}:    "Value Electronics",
-       [3]byte{0, 18, 106}:    "OPTOELECTRONICS Co., Ltd.",
-       [3]byte{0, 18, 107}:    "Ascalade Communications Limited",
-       [3]byte{0, 18, 108}:    "Visonic Technologies 1993 Ltd.",
-       [3]byte{0, 18, 109}:    "University of California, Berkeley",
-       [3]byte{0, 18, 110}:    "Seidel Elektronik GmbH Nfg.KG",
-       [3]byte{0, 18, 111}:    "Rayson Technology Co., Ltd.",
-       [3]byte{0, 18, 112}:    "NGES Denro Systems",
-       [3]byte{0, 18, 113}:    "Measurement Computing Corp",
-       [3]byte{0, 18, 114}:    "Redux Communications Ltd.",
-       [3]byte{0, 18, 115}:    "Stoke Inc",
-       [3]byte{0, 18, 116}:    "NIT lab",
-       [3]byte{0, 18, 117}:    "Sentilla Corporation",
-       [3]byte{0, 18, 118}:    "CG Power Systems Ireland Limited",
-       [3]byte{0, 18, 119}:    "Korenix Technologies Co., Ltd.",
-       [3]byte{0, 18, 120}:    "International Bar Code",
-       [3]byte{0, 18, 121}:    "Hewlett Packard",
-       [3]byte{0, 18, 122}:    "Sanyu Industry Co.,Ltd.",
-       [3]byte{0, 18, 123}:    "VIA Networking Technologies, Inc.",
-       [3]byte{0, 18, 124}:    "SWEGON AB",
-       [3]byte{0, 18, 125}:    "MobileAria",
-       [3]byte{0, 18, 126}:    "Digital Lifestyles Group, Inc.",
-       [3]byte{0, 18, 127}:    "Cisco Systems, Inc",
-       [3]byte{0, 18, 128}:    "Cisco Systems, Inc",
-       [3]byte{0, 18, 129}:    "March Networks S.p.A.",
-       [3]byte{0, 18, 130}:    "Qovia",
-       [3]byte{0, 18, 131}:    "Nortel Networks",
-       [3]byte{0, 18, 132}:    "Lab33 Srl",
-       [3]byte{0, 18, 133}:    "Gizmondo Europe Ltd",
-       [3]byte{0, 18, 134}:    "ENDEVCO CORP",
-       [3]byte{0, 18, 135}:    "Digital Everywhere Unterhaltungselektronik GmbH",
-       [3]byte{0, 18, 136}:    "2Wire Inc",
-       [3]byte{0, 18, 137}:    "Advance Sterilization Products",
-       [3]byte{0, 18, 138}:    "ARRIS Group, Inc.",
-       [3]byte{0, 18, 139}:    "Sensory Networks Inc",
-       [3]byte{0, 18, 140}:    "Woodward Governor",
-       [3]byte{0, 18, 141}:    "STB Datenservice GmbH",
-       [3]byte{0, 18, 142}:    "Q-Free ASA",
-       [3]byte{0, 18, 143}:    "Montilio",
-       [3]byte{0, 18, 144}:    "KYOWA Electric & Machinery Corp.",
-       [3]byte{0, 18, 145}:    "KWS Computersysteme GmbH",
-       [3]byte{0, 18, 146}:    "Griffin Technology",
-       [3]byte{0, 18, 147}:    "GE Energy",
-       [3]byte{0, 18, 148}:    "SUMITOMO ELECTRIC DEVICE INNOVATIONS, INC",
-       [3]byte{0, 18, 149}:    "Aiware Inc.",
-       [3]byte{0, 18, 150}:    "Addlogix",
-       [3]byte{0, 18, 151}:    "O2Micro, Inc.",
-       [3]byte{0, 18, 152}:    "MICO ELECTRIC(SHENZHEN) LIMITED",
-       [3]byte{0, 18, 153}:    "Ktech Telecommunications Inc",
-       [3]byte{0, 18, 154}:    "IRT Electronics Pty Ltd",
-       [3]byte{0, 18, 155}:    "E2S Electronic Engineering Solutions, S.L.",
-       [3]byte{0, 18, 156}:    "Yulinet",
-       [3]byte{0, 18, 157}:    "First International Computer do Brasil",
-       [3]byte{0, 18, 158}:    "Surf Communications Inc.",
-       [3]byte{0, 18, 159}:    "RAE Systems",
-       [3]byte{0, 18, 160}:    "NeoMeridian Sdn Bhd",
-       [3]byte{0, 18, 161}:    "BluePacket Communications Co., Ltd.",
-       [3]byte{0, 18, 162}:    "VITA",
-       [3]byte{0, 18, 163}:    "Trust International B.V.",
-       [3]byte{0, 18, 164}:    "ThingMagic, LLC",
-       [3]byte{0, 18, 165}:    "Stargen, Inc.",
-       [3]byte{0, 18, 166}:    "Dolby Australia",
-       [3]byte{0, 18, 167}:    "ISR TECHNOLOGIES Inc",
-       [3]byte{0, 18, 168}:    "intec GmbH",
-       [3]byte{0, 18, 169}:    "3Com Ltd",
-       [3]byte{0, 18, 170}:    "IEE, Inc.",
-       [3]byte{0, 18, 171}:    "WiLife, Inc.",
-       [3]byte{0, 18, 172}:    "ONTIMETEK INC.",
-       [3]byte{0, 18, 173}:    "IDS GmbH",
-       [3]byte{0, 18, 174}:    "HLS HARD-LINE Solutions Inc.",
-       [3]byte{0, 18, 175}:    "ELPRO Technologies",
-       [3]byte{0, 18, 176}:    "Efore Oyj   (Plc)",
-       [3]byte{0, 18, 177}:    "Dai Nippon Printing Co., Ltd",
-       [3]byte{0, 18, 178}:    "AVOLITES LTD.",
-       [3]byte{0, 18, 179}:    "Advance Wireless Technology Corp.",
-       [3]byte{0, 18, 180}:    "Work Microwave GmbH",
-       [3]byte{0, 18, 181}:    "Vialta, Inc.",
-       [3]byte{0, 18, 182}:    "Santa Barbara Infrared, Inc.",
-       [3]byte{0, 18, 183}:    "PTW Freiburg",
-       [3]byte{0, 18, 184}:    "G2 Microsystems",
-       [3]byte{0, 18, 185}:    "Fusion Digital Technology",
-       [3]byte{0, 18, 186}:    "FSI Systems, Inc.",
-       [3]byte{0, 18, 187}:    "Telecommunications Industry Association TR-41 Committee",
-       [3]byte{0, 18, 188}:    "Echolab LLC",
-       [3]byte{0, 18, 189}:    "Avantec Manufacturing Limited",
-       [3]byte{0, 18, 190}:    "Astek Corporation",
-       [3]byte{0, 18, 191}:    "Arcadyan Technology Corporation",
-       [3]byte{0, 18, 192}:    "HotLava Systems, Inc.",
-       [3]byte{0, 18, 193}:    "Check Point Software Technologies",
-       [3]byte{0, 18, 194}:    "Apex Electronics Factory",
-       [3]byte{0, 18, 195}:    "WIT S.A.",
-       [3]byte{0, 18, 196}:    "Viseon, Inc.",
-       [3]byte{0, 18, 197}:    "V-Show  Technology (China) Co.,Ltd",
-       [3]byte{0, 18, 198}:    "TGC America, Inc",
-       [3]byte{0, 18, 199}:    "SECURAY Technologies Ltd.Co.",
-       [3]byte{0, 18, 200}:    "Perfect tech",
-       [3]byte{0, 18, 201}:    "ARRIS Group, Inc.",
-       [3]byte{0, 18, 202}:    "Mechatronic Brick Aps",
-       [3]byte{0, 18, 203}:    "CSS Inc.",
-       [3]byte{0, 18, 204}:    "Bitatek CO., LTD",
-       [3]byte{0, 18, 205}:    "ASEM SpA",
-       [3]byte{0, 18, 206}:    "Advanced Cybernetics Group",
-       [3]byte{0, 18, 207}:    "Accton Technology Corp",
-       [3]byte{0, 18, 208}:    "Gossen-Metrawatt-GmbH",
-       [3]byte{0, 18, 209}:    "Texas Instruments",
-       [3]byte{0, 18, 210}:    "Texas Instruments",
-       [3]byte{0, 18, 211}:    "Zetta Systems, Inc.",
-       [3]byte{0, 18, 212}:    "Princeton Technology, Ltd",
-       [3]byte{0, 18, 213}:    "Motion Reality Inc.",
-       [3]byte{0, 18, 214}:    "Jiangsu Yitong High-Tech Co.,Ltd",
-       [3]byte{0, 18, 215}:    "Invento Networks, Inc.",
-       [3]byte{0, 18, 216}:    "International Games System Co., Ltd.",
-       [3]byte{0, 18, 217}:    "Cisco Systems, Inc",
-       [3]byte{0, 18, 218}:    "Cisco Systems, Inc",
-       [3]byte{0, 18, 219}:    "ZIEHL industrie-elektronik GmbH + Co KG",
-       [3]byte{0, 18, 220}:    "SunCorp Industrial Limited",
-       [3]byte{0, 18, 221}:    "Shengqu Information Technology (Shanghai) Co., Ltd.",
-       [3]byte{0, 18, 222}:    "Radio Components Sweden AB",
-       [3]byte{0, 18, 223}:    "Novomatic AG",
-       [3]byte{0, 18, 224}:    "Codan Limited",
-       [3]byte{0, 18, 225}:    "Alliant Networks, Inc",
-       [3]byte{0, 18, 226}:    "ALAXALA Networks Corporation",
-       [3]byte{0, 18, 227}:    "Agat-RT, Ltd.",
-       [3]byte{0, 18, 228}:    "ZIEHL industrie-electronik GmbH + Co KG",
-       [3]byte{0, 18, 229}:    "Time America, Inc.",
-       [3]byte{0, 18, 230}:    "SPECTEC COMPUTER CO., LTD.",
-       [3]byte{0, 18, 231}:    "Projectek Networking Electronics Corp.",
-       [3]byte{0, 18, 232}:    "Fraunhofer IMS",
-       [3]byte{0, 18, 233}:    "Abbey Systems Ltd",
-       [3]byte{0, 18, 234}:    "Trane",
-       [3]byte{0, 18, 235}:    "PDH Solutions, LLC",
-       [3]byte{0, 18, 236}:    "Movacolor b.v.",
-       [3]byte{0, 18, 237}:    "AVG Advanced Technologies",
-       [3]byte{0, 18, 238}:    "Sony Mobile Communications AB",
-       [3]byte{0, 18, 239}:    "OneAccess SA",
-       [3]byte{0, 18, 240}:    "Intel Corporate",
-       [3]byte{0, 18, 241}:    "IFOTEC",
-       [3]byte{0, 18, 242}:    "Brocade Communications Systems, Inc.",
-       [3]byte{0, 18, 243}:    "connectBlue AB",
-       [3]byte{0, 18, 244}:    "Belco International Co.,Ltd.",
-       [3]byte{0, 18, 245}:    "Imarda New Zealand Limited",
-       [3]byte{0, 18, 246}:    "MDK CO.,LTD.",
-       [3]byte{0, 18, 247}:    "Xiamen Xinglian Electronics Co., Ltd.",
-       [3]byte{0, 18, 248}:    "WNI Resources, LLC",
-       [3]byte{0, 18, 249}:    "URYU SEISAKU, LTD.",
-       [3]byte{0, 18, 250}:    "THX LTD",
-       [3]byte{0, 18, 251}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 18, 252}:    "PLANET System Co.,LTD",
-       [3]byte{0, 18, 253}:    "OPTIMUS IC S.A.",
-       [3]byte{0, 18, 254}:    "Lenovo Mobile Communication Technology Ltd.",
-       [3]byte{0, 18, 255}:    "Lely Industries N.V.",
-       [3]byte{0, 19, 0}:      "IT-FACTORY, INC.",
-       [3]byte{0, 19, 1}:      "IronGate S.L.",
-       [3]byte{0, 19, 2}:      "Intel Corporate",
-       [3]byte{0, 19, 3}:      "GateConnect",
-       [3]byte{0, 19, 4}:      "Flaircomm Technologies Co. LTD",
-       [3]byte{0, 19, 5}:      "Epicom, Inc.",
-       [3]byte{0, 19, 6}:      "Always On Wireless",
-       [3]byte{0, 19, 7}:      "Paravirtual Corporation",
-       [3]byte{0, 19, 8}:      "Nuvera Fuel Cells",
-       [3]byte{0, 19, 9}:      "Ocean Broadband Networks",
-       [3]byte{0, 19, 10}:     "Nortel Networks",
-       [3]byte{0, 19, 11}:     "Mextal B.V.",
-       [3]byte{0, 19, 12}:     "HF System Corporation",
-       [3]byte{0, 19, 13}:     "GALILEO AVIONICA",
-       [3]byte{0, 19, 14}:     "Focusrite Audio Engineering Limited",
-       [3]byte{0, 19, 15}:     "EGEMEN Bilgisayar Muh San ve Tic LTD STI",
-       [3]byte{0, 19, 16}:     "Cisco-Linksys, LLC",
-       [3]byte{0, 19, 17}:     "ARRIS Group, Inc.",
-       [3]byte{0, 19, 18}:     "Amedia Networks Inc.",
-       [3]byte{0, 19, 19}:     "GuangZhou Post & Telecom Equipment ltd",
-       [3]byte{0, 19, 20}:     "Asiamajor Inc.",
-       [3]byte{0, 19, 21}:     "Sony Interactive Entertainment Inc.",
-       [3]byte{0, 19, 22}:     "L-S-B Broadcast Technologies GmbH",
-       [3]byte{0, 19, 23}:     "GN Netcom A/S",
-       [3]byte{0, 19, 24}:     "DGSTATION Co., Ltd.",
-       [3]byte{0, 19, 25}:     "Cisco Systems, Inc",
-       [3]byte{0, 19, 26}:     "Cisco Systems, Inc",
-       [3]byte{0, 19, 27}:     "BeCell Innovations Corp.",
-       [3]byte{0, 19, 28}:     "LiteTouch, Inc.",
-       [3]byte{0, 19, 29}:     "Scanvaegt International A/S",
-       [3]byte{0, 19, 30}:     "Peiker acustic GmbH & Co. KG",
-       [3]byte{0, 19, 31}:     "NxtPhase T&D, Corp.",
-       [3]byte{0, 19, 32}:     "Intel Corporate",
-       [3]byte{0, 19, 33}:     "Hewlett Packard",
-       [3]byte{0, 19, 34}:     "DAQ Electronics, Inc.",
-       [3]byte{0, 19, 35}:     "Cap Co., Ltd.",
-       [3]byte{0, 19, 36}:     "Schneider Electric Ultra Terminal",
-       [3]byte{0, 19, 37}:     "Cortina Systems Inc",
-       [3]byte{0, 19, 38}:     "ECM Systems Ltd",
-       [3]byte{0, 19, 39}:     "Data Acquisitions limited",
-       [3]byte{0, 19, 40}:     "Westech Korea Inc.,",
-       [3]byte{0, 19, 41}:     "VSST Co., LTD",
-       [3]byte{0, 19, 42}:     "Sitronics Telecom Solutions",
-       [3]byte{0, 19, 43}:     "Phoenix Digital",
-       [3]byte{0, 19, 44}:     "MAZ Brandenburg GmbH",
-       [3]byte{0, 19, 45}:     "iWise Communications",
-       [3]byte{0, 19, 46}:     "ITian Coporation",
-       [3]byte{0, 19, 47}:     "Interactek",
-       [3]byte{0, 19, 48}:     "EURO PROTECTION SURVEILLANCE",
-       [3]byte{0, 19, 49}:     "CellPoint Connect",
-       [3]byte{0, 19, 50}:     "Beijing Topsec Network Security Technology Co., Ltd.",
-       [3]byte{0, 19, 51}:     "BaudTec Corporation",
-       [3]byte{0, 19, 52}:     "Arkados, Inc.",
-       [3]byte{0, 19, 53}:     "VS Industry Berhad",
-       [3]byte{0, 19, 54}:     "Tianjin 712 Communication Broadcasting co., ltd.",
-       [3]byte{0, 19, 55}:     "Orient Power Home Network Ltd.",
-       [3]byte{0, 19, 56}:     "FRESENIUS-VIAL",
-       [3]byte{0, 19, 57}:     "CCV Deutschland GmbH",
-       [3]byte{0, 19, 58}:     "VadaTech Inc.",
-       [3]byte{0, 19, 59}:     "Speed Dragon Multimedia Limited",
-       [3]byte{0, 19, 60}:     "QUINTRON SYSTEMS INC.",
-       [3]byte{0, 19, 61}:     "Micro Memory Curtiss Wright Co",
-       [3]byte{0, 19, 62}:     "MetaSwitch",
-       [3]byte{0, 19, 63}:     "Eppendorf Instrumente GmbH",
-       [3]byte{0, 19, 64}:     "AD.EL s.r.l.",
-       [3]byte{0, 19, 65}:     "Shandong New Beiyang Information Technology Co.,Ltd",
-       [3]byte{0, 19, 66}:     "Vision Research, Inc.",
-       [3]byte{0, 19, 67}:     "Matsushita Electronic Components (Europe) GmbH",
-       [3]byte{0, 19, 68}:     "Fargo Electronics Inc.",
-       [3]byte{0, 19, 69}:     "Eaton Corporation",
-       [3]byte{0, 19, 70}:     "D-Link Corporation",
-       [3]byte{0, 19, 71}:     "Red Lion Controls, LP",
-       [3]byte{0, 19, 72}:     "Artila Electronics Co., Ltd.",
-       [3]byte{0, 19, 73}:     "Zyxel Communications Corporation",
-       [3]byte{0, 19, 74}:     "Engim, Inc.",
-       [3]byte{0, 19, 75}:     "ToGoldenNet Technology Inc.",
-       [3]byte{0, 19, 76}:     "YDT Technology International",
-       [3]byte{0, 19, 77}:     "Inepro BV",
-       [3]byte{0, 19, 78}:     "Valox Systems, Inc.",
-       [3]byte{0, 19, 79}:     "Tranzeo Wireless Technologies Inc.",
-       [3]byte{0, 19, 80}:     "Silver Spring Networks, Inc",
-       [3]byte{0, 19, 81}:     "Niles Audio Corporation",
-       [3]byte{0, 19, 82}:     "Naztec, Inc.",
-       [3]byte{0, 19, 83}:     "HYDAC Filtertechnik GMBH",
-       [3]byte{0, 19, 84}:     "Zcomax Technologies, Inc.",
-       [3]byte{0, 19, 85}:     "TOMEN Cyber-business Solutions, Inc.",
-       [3]byte{0, 19, 86}:     "FLIR Radiation Inc",
-       [3]byte{0, 19, 87}:     "Soyal Technology Co., Ltd.",
-       [3]byte{0, 19, 88}:     "Realm Systems, Inc.",
-       [3]byte{0, 19, 89}:     "ProTelevision Technologies A/S",
-       [3]byte{0, 19, 90}:     "Project T&E Limited",
-       [3]byte{0, 19, 91}:     "PanelLink Cinema, LLC",
-       [3]byte{0, 19, 92}:     "OnSite Systems, Inc.",
-       [3]byte{0, 19, 93}:     "NTTPC Communications, Inc.",
-       [3]byte{0, 19, 94}:     "EAB/RWI/K",
-       [3]byte{0, 19, 95}:     "Cisco Systems, Inc",
-       [3]byte{0, 19, 96}:     "Cisco Systems, Inc",
-       [3]byte{0, 19, 97}:     "Biospace Co., Ltd.",
-       [3]byte{0, 19, 98}:     "ShinHeung Precision Co., Ltd.",
-       [3]byte{0, 19, 99}:     "Verascape, Inc.",
-       [3]byte{0, 19, 100}:    "Paradigm Technology Inc..",
-       [3]byte{0, 19, 101}:    "Nortel Networks",
-       [3]byte{0, 19, 102}:    "Neturity Technologies Inc.",
-       [3]byte{0, 19, 103}:    "Narayon. Co., Ltd.",
-       [3]byte{0, 19, 104}:    "Saab Danmark A/S",
-       [3]byte{0, 19, 105}:    "Honda Electron Co., LED.",
-       [3]byte{0, 19, 106}:    "Hach Lange Sarl",
-       [3]byte{0, 19, 107}:    "E-TEC",
-       [3]byte{0, 19, 108}:    "TomTom",
-       [3]byte{0, 19, 109}:    "Tentaculus AB",
-       [3]byte{0, 19, 110}:    "Techmetro Corp.",
-       [3]byte{0, 19, 111}:    "PacketMotion, Inc.",
-       [3]byte{0, 19, 112}:    "Nokia Danmark A/S",
-       [3]byte{0, 19, 113}:    "ARRIS Group, Inc.",
-       [3]byte{0, 19, 114}:    "Dell Inc.",
-       [3]byte{0, 19, 115}:    "BLwave Electronics Co., Ltd",
-       [3]byte{0, 19, 116}:    "Atheros Communications, Inc.",
-       [3]byte{0, 19, 117}:    "American Security Products Co.",
-       [3]byte{0, 19, 118}:    "Tabor Electronics Ltd.",
-       [3]byte{0, 19, 119}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 19, 120}:    "Qsan Technology, Inc.",
-       [3]byte{0, 19, 121}:    "PONDER INFORMATION INDUSTRIES LTD.",
-       [3]byte{0, 19, 122}:    "Netvox Technology Co., Ltd.",
-       [3]byte{0, 19, 123}:    "Movon Corporation",
-       [3]byte{0, 19, 124}:    "Kaicom co., Ltd.",
-       [3]byte{0, 19, 125}:    "Dynalab, Inc.",
-       [3]byte{0, 19, 126}:    "CorEdge Networks, Inc.",
-       [3]byte{0, 19, 127}:    "Cisco Systems, Inc",
-       [3]byte{0, 19, 128}:    "Cisco Systems, Inc",
-       [3]byte{0, 19, 129}:    "CHIPS & Systems, Inc.",
-       [3]byte{0, 19, 130}:    "Cetacea Networks Corporation",
-       [3]byte{0, 19, 131}:    "Application Technologies and Engineering Research Laboratory",
-       [3]byte{0, 19, 132}:    "Advanced Motion Controls",
-       [3]byte{0, 19, 133}:    "Add-On Technology Co., LTD.",
-       [3]byte{0, 19, 134}:    "ABB Inc./Totalflow",
-       [3]byte{0, 19, 135}:    "27M Technologies AB",
-       [3]byte{0, 19, 136}:    "WiMedia Alliance",
-       [3]byte{0, 19, 137}:    "Redes de Telefonía Móvil S.A.",
-       [3]byte{0, 19, 138}:    "QINGDAO GOERTEK ELECTRONICS CO.,LTD.",
-       [3]byte{0, 19, 139}:    "Phantom Technologies LLC",
-       [3]byte{0, 19, 140}:    "Kumyoung.Co.Ltd",
-       [3]byte{0, 19, 141}:    "Kinghold",
-       [3]byte{0, 19, 142}:    "FOAB Elektronik AB",
-       [3]byte{0, 19, 143}:    "Asiarock Technology Limited",
-       [3]byte{0, 19, 144}:    "Termtek Computer Co., Ltd",
-       [3]byte{0, 19, 145}:    "OUEN CO.,LTD.",
-       [3]byte{0, 19, 146}:    "Ruckus Wireless",
-       [3]byte{0, 19, 147}:    "Panta Systems, Inc.",
-       [3]byte{0, 19, 148}:    "Infohand Co.,Ltd",
-       [3]byte{0, 19, 149}:    "congatec AG",
-       [3]byte{0, 19, 150}:    "Acbel Polytech Inc.",
-       [3]byte{0, 19, 151}:    "Oracle Corporation",
-       [3]byte{0, 19, 152}:    "TrafficSim Co.,Ltd",
-       [3]byte{0, 19, 153}:    "STAC Corporation.",
-       [3]byte{0, 19, 154}:    "K-ubique ID Corp.",
-       [3]byte{0, 19, 155}:    "ioIMAGE Ltd.",
-       [3]byte{0, 19, 156}:    "Exavera Technologies, Inc.",
-       [3]byte{0, 19, 157}:    "MaxLinear Hispania S.L.U.",
-       [3]byte{0, 19, 158}:    "Ciara Technologies Inc.",
-       [3]byte{0, 19, 159}:    "Electronics Design Services, Co., Ltd.",
-       [3]byte{0, 19, 160}:    "ALGOSYSTEM Co., Ltd.",
-       [3]byte{0, 19, 161}:    "Crow Electronic Engeneering",
-       [3]byte{0, 19, 162}:    "MaxStream, Inc",
-       [3]byte{0, 19, 163}:    "Siemens Com CPE Devices",
-       [3]byte{0, 19, 164}:    "KeyEye Communications",
-       [3]byte{0, 19, 165}:    "General Solutions, LTD.",
-       [3]byte{0, 19, 166}:    "Extricom Ltd",
-       [3]byte{0, 19, 167}:    "BATTELLE MEMORIAL INSTITUTE",
-       [3]byte{0, 19, 168}:    "Tanisys Technology",
-       [3]byte{0, 19, 169}:    "Sony Corporation",
-       [3]byte{0, 19, 170}:    "ALS  & TEC Ltd.",
-       [3]byte{0, 19, 171}:    "Telemotive AG",
-       [3]byte{0, 19, 172}:    "Sunmyung Electronics Co., LTD",
-       [3]byte{0, 19, 173}:    "Sendo Ltd",
-       [3]byte{0, 19, 174}:    "Radiance Technologies, Inc.",
-       [3]byte{0, 19, 175}:    "NUMA Technology,Inc.",
-       [3]byte{0, 19, 176}:    "Jablotron",
-       [3]byte{0, 19, 177}:    "Intelligent Control Systems (Asia) Pte Ltd",
-       [3]byte{0, 19, 178}:    "Carallon Limited",
-       [3]byte{0, 19, 179}:    "Ecom Communications Technology Co., Ltd.",
-       [3]byte{0, 19, 180}:    "Appear TV",
-       [3]byte{0, 19, 181}:    "Wavesat",
-       [3]byte{0, 19, 182}:    "Sling Media, Inc.",
-       [3]byte{0, 19, 183}:    "Scantech ID",
-       [3]byte{0, 19, 184}:    "RyCo Electronic Systems Limited",
-       [3]byte{0, 19, 185}:    "BM SPA",
-       [3]byte{0, 19, 186}:    "ReadyLinks Inc",
-       [3]byte{0, 19, 187}:    "Smartvue Corporation",
-       [3]byte{0, 19, 188}:    "Artimi Ltd",
-       [3]byte{0, 19, 189}:    "HYMATOM SA",
-       [3]byte{0, 19, 190}:    "Virtual Conexions",
-       [3]byte{0, 19, 191}:    "Media System Planning Corp.",
-       [3]byte{0, 19, 192}:    "Trix Tecnologia Ltda.",
-       [3]byte{0, 19, 193}:    "Asoka USA Corporation",
-       [3]byte{0, 19, 194}:    "WACOM Co.,Ltd",
-       [3]byte{0, 19, 195}:    "Cisco Systems, Inc",
-       [3]byte{0, 19, 196}:    "Cisco Systems, Inc",
-       [3]byte{0, 19, 197}:    "LIGHTRON FIBER-OPTIC DEVICES INC.",
-       [3]byte{0, 19, 198}:    "OpenGear, Inc",
-       [3]byte{0, 19, 199}:    "IONOS Co.,Ltd.",
-       [3]byte{0, 19, 200}:    "ADB Broadband Italia",
-       [3]byte{0, 19, 201}:    "Beyond Achieve Enterprises Ltd.",
-       [3]byte{0, 19, 202}:    "Pico Digital",
-       [3]byte{0, 19, 203}:    "Zenitel Norway AS",
-       [3]byte{0, 19, 204}:    "Tall Maple Systems",
-       [3]byte{0, 19, 205}:    "MTI co. LTD",
-       [3]byte{0, 19, 206}:    "Intel Corporate",
-       [3]byte{0, 19, 207}:    "4Access Communications",
-       [3]byte{0, 19, 208}:    "t+ Medical Ltd",
-       [3]byte{0, 19, 209}:    "KIRK telecom A/S",
-       [3]byte{0, 19, 210}:    "PAGE IBERICA, S.A.",
-       [3]byte{0, 19, 211}:    "MICRO-STAR INTERNATIONAL CO., LTD.",
-       [3]byte{0, 19, 212}:    "ASUSTek COMPUTER INC.",
-       [3]byte{0, 19, 213}:    "RuggedCom",
-       [3]byte{0, 19, 214}:    "TII NETWORK TECHNOLOGIES, INC.",
-       [3]byte{0, 19, 215}:    "SPIDCOM Technologies SA",
-       [3]byte{0, 19, 216}:    "Princeton Instruments",
-       [3]byte{0, 19, 217}:    "Matrix Product Development, Inc.",
-       [3]byte{0, 19, 218}:    "Diskware Co., Ltd",
-       [3]byte{0, 19, 219}:    "SHOEI Electric Co.,Ltd",
-       [3]byte{0, 19, 220}:    "IBTEK INC.",
-       [3]byte{0, 19, 221}:    "Abbott Diagnostics",
-       [3]byte{0, 19, 222}:    "Adapt4, LLC",
-       [3]byte{0, 19, 223}:    "Ryvor Corp.",
-       [3]byte{0, 19, 224}:    "Murata Manufacturing Co., Ltd.",
-       [3]byte{0, 19, 225}:    "Iprobe AB",
-       [3]byte{0, 19, 226}:    "GeoVision Inc.",
-       [3]byte{0, 19, 227}:    "CoVi Technologies, Inc.",
-       [3]byte{0, 19, 228}:    "YANGJAE SYSTEMS CORP.",
-       [3]byte{0, 19, 229}:    "TENOSYS, INC.",
-       [3]byte{0, 19, 230}:    "Technolution",
-       [3]byte{0, 19, 231}:    "Halcro",
-       [3]byte{0, 19, 232}:    "Intel Corporate",
-       [3]byte{0, 19, 233}:    "VeriWave, Inc.",
-       [3]byte{0, 19, 234}:    "Kamstrup A/S",
-       [3]byte{0, 19, 235}:    "Sysmaster Corporation",
-       [3]byte{0, 19, 236}:    "Netsnapper Technologies SARL",
-       [3]byte{0, 19, 237}:    "PSIA",
-       [3]byte{0, 19, 238}:    "JBX Designs Inc.",
-       [3]byte{0, 19, 239}:    "Kingjon Digital Technology Co.,Ltd",
-       [3]byte{0, 19, 240}:    "Wavefront Semiconductor",
-       [3]byte{0, 19, 241}:    "AMOD Technology Co., Ltd.",
-       [3]byte{0, 19, 242}:    "Klas Ltd",
-       [3]byte{0, 19, 243}:    "Giga-byte Communications Inc.",
-       [3]byte{0, 19, 244}:    "Psitek (Pty) Ltd",
-       [3]byte{0, 19, 245}:    "Akimbi Systems",
-       [3]byte{0, 19, 246}:    "Cintech",
-       [3]byte{0, 19, 247}:    "SMC Networks, Inc.",
-       [3]byte{0, 19, 248}:    "Dex Security Solutions",
-       [3]byte{0, 19, 249}:    "Cavera Systems",
-       [3]byte{0, 19, 250}:    "LifeSize Communications, Inc",
-       [3]byte{0, 19, 251}:    "RKC INSTRUMENT INC.",
-       [3]byte{0, 19, 252}:    "SiCortex, Inc",
-       [3]byte{0, 19, 253}:    "Nokia Danmark A/S",
-       [3]byte{0, 19, 254}:    "GRANDTEC ELECTRONIC CORP.",
-       [3]byte{0, 19, 255}:    "Dage-MTI of MC, Inc.",
-       [3]byte{0, 20, 0}:      "MINERVA KOREA CO., LTD",
-       [3]byte{0, 20, 1}:      "Rivertree Networks Corp.",
-       [3]byte{0, 20, 2}:      "kk-electronic a/s",
-       [3]byte{0, 20, 3}:      "Renasis, LLC",
-       [3]byte{0, 20, 4}:      "ARRIS Group, Inc.",
-       [3]byte{0, 20, 5}:      "OpenIB, Inc.",
-       [3]byte{0, 20, 6}:      "Go Networks",
-       [3]byte{0, 20, 7}:      "Sperian Protection Instrumentation",
-       [3]byte{0, 20, 8}:      "Eka Systems Inc.",
-       [3]byte{0, 20, 9}:      "MAGNETI MARELLI   S.E. S.p.A.",
-       [3]byte{0, 20, 10}:     "WEPIO Co., Ltd.",
-       [3]byte{0, 20, 11}:     "FIRST INTERNATIONAL COMPUTER, INC.",
-       [3]byte{0, 20, 12}:     "GKB CCTV CO., LTD.",
-       [3]byte{0, 20, 13}:     "Nortel Networks",
-       [3]byte{0, 20, 14}:     "Nortel Networks",
-       [3]byte{0, 20, 15}:     "Federal State Unitary Enterprise Leningrad R&D Institute of",
-       [3]byte{0, 20, 16}:     "Suzhou Keda Technology CO.,Ltd",
-       [3]byte{0, 20, 17}:     "Deutschmann Automation GmbH & Co. KG",
-       [3]byte{0, 20, 18}:     "S-TEC electronics AG",
-       [3]byte{0, 20, 19}:     "Trebing & Himstedt Prozeßautomation GmbH & Co. KG",
-       [3]byte{0, 20, 20}:     "Jumpnode Systems LLC.",
-       [3]byte{0, 20, 21}:     "Intec Automation inc.",
-       [3]byte{0, 20, 22}:     "Scosche Industries, Inc.",
-       [3]byte{0, 20, 23}:     "RSE Informations Technologie GmbH",
-       [3]byte{0, 20, 24}:     "C4Line",
-       [3]byte{0, 20, 25}:     "SIDSA",
-       [3]byte{0, 20, 26}:     "DEICY CORPORATION",
-       [3]byte{0, 20, 27}:     "Cisco Systems, Inc",
-       [3]byte{0, 20, 28}:     "Cisco Systems, Inc",
-       [3]byte{0, 20, 29}:     "LTi DRIVES GmbH",
-       [3]byte{0, 20, 30}:     "P.A. Semi, Inc.",
-       [3]byte{0, 20, 31}:     "SunKwang Electronics Co., Ltd",
-       [3]byte{0, 20, 32}:     "G-Links networking company",
-       [3]byte{0, 20, 33}:     "Total Wireless Technologies Pte. Ltd.",
-       [3]byte{0, 20, 34}:     "Dell Inc.",
-       [3]byte{0, 20, 35}:     "J-S Co. NEUROCOM",
-       [3]byte{0, 20, 36}:     "Merry Electrics CO., LTD.",
-       [3]byte{0, 20, 37}:     "Galactic Computing Corp.",
-       [3]byte{0, 20, 38}:     "NL Technology",
-       [3]byte{0, 20, 39}:     "JazzMutant",
-       [3]byte{0, 20, 40}:     "Vocollect Inc",
-       [3]byte{0, 20, 41}:     "V Center Technologies Co., Ltd.",
-       [3]byte{0, 20, 42}:     "Elitegroup Computer Systems Co.,Ltd.",
-       [3]byte{0, 20, 43}:     "Edata Communication Inc.",
-       [3]byte{0, 20, 44}:     "Koncept International, Inc.",
-       [3]byte{0, 20, 45}:     "Toradex AG",
-       [3]byte{0, 20, 46}:     "77 Elektronika Kft.",
-       [3]byte{0, 20, 47}:     "Savvius",
-       [3]byte{0, 20, 48}:     "ViPowER, Inc",
-       [3]byte{0, 20, 49}:     "PDL Electronics Ltd",
-       [3]byte{0, 20, 50}:     "Tarallax Wireless, Inc.",
-       [3]byte{0, 20, 51}:     "Empower Technologies(Canada) Inc.",
-       [3]byte{0, 20, 52}:     "Keri Systems, Inc",
-       [3]byte{0, 20, 53}:     "CityCom Corp.",
-       [3]byte{0, 20, 54}:     "Qwerty Elektronik AB",
-       [3]byte{0, 20, 55}:     "GSTeletech Co.,Ltd.",
-       [3]byte{0, 20, 56}:     "Hewlett Packard Enterprise",
-       [3]byte{0, 20, 57}:     "Blonder Tongue Laboratories, Inc",
-       [3]byte{0, 20, 58}:     "RAYTALK INTERNATIONAL SRL",
-       [3]byte{0, 20, 59}:     "Sensovation AG",
-       [3]byte{0, 20, 60}:     "Rheinmetall Canada Inc.",
-       [3]byte{0, 20, 61}:     "Aevoe Inc.",
-       [3]byte{0, 20, 62}:     "AirLink Communications, Inc.",
-       [3]byte{0, 20, 63}:     "Hotway Technology Corporation",
-       [3]byte{0, 20, 64}:     "ATOMIC Corporation",
-       [3]byte{0, 20, 65}:     "Innovation Sound Technology Co., LTD.",
-       [3]byte{0, 20, 66}:     "ATTO CORPORATION",
-       [3]byte{0, 20, 67}:     "Consultronics Europe Ltd",
-       [3]byte{0, 20, 68}:     "Grundfos Holding",
-       [3]byte{0, 20, 69}:     "Telefon-Gradnja d.o.o.",
-       [3]byte{0, 20, 70}:     "SuperVision Solutions LLC",
-       [3]byte{0, 20, 71}:     "BOAZ Inc.",
-       [3]byte{0, 20, 72}:     "Inventec Multimedia & Telecom Corporation",
-       [3]byte{0, 20, 73}:     "Sichuan Changhong Electric Ltd.",
-       [3]byte{0, 20, 74}:     "Taiwan Thick-Film Ind. Corp.",
-       [3]byte{0, 20, 75}:     "Hifn, Inc.",
-       [3]byte{0, 20, 76}:     "General Meters Corp.",
-       [3]byte{0, 20, 77}:     "Intelligent Systems",
-       [3]byte{0, 20, 78}:     "SRISA",
-       [3]byte{0, 20, 79}:     "Oracle Corporation",
-       [3]byte{0, 20, 80}:     "Heim Systems GmbH",
-       [3]byte{0, 20, 81}:     "Apple, Inc.",
-       [3]byte{0, 20, 82}:     "CALCULEX,INC.",
-       [3]byte{0, 20, 83}:     "ADVANTECH TECHNOLOGIES CO.,LTD",
-       [3]byte{0, 20, 84}:     "Symwave",
-       [3]byte{0, 20, 85}:     "Coder Electronics Corporation",
-       [3]byte{0, 20, 86}:     "Edge Products",
-       [3]byte{0, 20, 87}:     "T-VIPS AS",
-       [3]byte{0, 20, 88}:     "HS Automatic ApS",
-       [3]byte{0, 20, 89}:     "Moram Co., Ltd.",
-       [3]byte{0, 20, 90}:     "Neratec Solutions AG",
-       [3]byte{0, 20, 91}:     "SeekerNet Inc.",
-       [3]byte{0, 20, 92}:     "Intronics B.V.",
-       [3]byte{0, 20, 93}:     "WJ Communications, Inc.",
-       [3]byte{0, 20, 94}:     "IBM Corp",
-       [3]byte{0, 20, 95}:     "ADITEC CO. LTD",
-       [3]byte{0, 20, 96}:     "Kyocera Wireless Corp.",
-       [3]byte{0, 20, 97}:     "CORONA CORPORATION",
-       [3]byte{0, 20, 98}:     "Digiwell Technology, inc",
-       [3]byte{0, 20, 99}:     "IDCS N.V.",
-       [3]byte{0, 20, 100}:    "Cryptosoft",
-       [3]byte{0, 20, 101}:    "Novo Nordisk A/S",
-       [3]byte{0, 20, 102}:    "Kleinhenz Elektronik GmbH",
-       [3]byte{0, 20, 103}:    "ArrowSpan Inc.",
-       [3]byte{0, 20, 104}:    "CelPlan International, Inc.",
-       [3]byte{0, 20, 105}:    "Cisco Systems, Inc",
-       [3]byte{0, 20, 106}:    "Cisco Systems, Inc",
-       [3]byte{0, 20, 107}:    "Anagran, Inc.",
-       [3]byte{0, 20, 108}:    "NETGEAR",
-       [3]byte{0, 20, 109}:    "RF Technologies",
-       [3]byte{0, 20, 110}:    "H. Stoll GmbH & Co. KG",
-       [3]byte{0, 20, 111}:    "Kohler Co",
-       [3]byte{0, 20, 112}:    "Prokom Software SA",
-       [3]byte{0, 20, 113}:    "Eastern Asia Technology Limited",
-       [3]byte{0, 20, 114}:    "China Broadband Wireless IP Standard Group",
-       [3]byte{0, 20, 115}:    "Bookham Inc",
-       [3]byte{0, 20, 116}:    "K40 Electronics",
-       [3]byte{0, 20, 117}:    "Wiline Networks, Inc.",
-       [3]byte{0, 20, 118}:    "MultiCom Industries Limited",
-       [3]byte{0, 20, 119}:    "Nertec  Inc.",
-       [3]byte{0, 20, 120}:    "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{0, 20, 121}:    "NEC Magnus Communications,Ltd.",
-       [3]byte{0, 20, 122}:    "Eubus GmbH",
-       [3]byte{0, 20, 123}:    "Iteris, Inc.",
-       [3]byte{0, 20, 124}:    "3Com Ltd",
-       [3]byte{0, 20, 125}:    "Aeon Digital International",
-       [3]byte{0, 20, 126}:    "InnerWireless",
-       [3]byte{0, 20, 127}:    "Thomson Telecom Belgium",
-       [3]byte{0, 20, 128}:    "Hitachi-LG Data Storage Korea, Inc",
-       [3]byte{0, 20, 129}:    "Multilink Inc",
-       [3]byte{0, 20, 130}:    "Aurora Networks",
-       [3]byte{0, 20, 131}:    "eXS Inc.",
-       [3]byte{0, 20, 132}:    "Cermate Technologies Inc.",
-       [3]byte{0, 20, 133}:    "Giga-Byte",
-       [3]byte{0, 20, 134}:    "Echo Digital Audio Corporation",
-       [3]byte{0, 20, 135}:    "American Technology Integrators",
-       [3]byte{0, 20, 136}:    "Akorri",
-       [3]byte{0, 20, 137}:    "B15402100 - JANDEI, S.L.",
-       [3]byte{0, 20, 138}:    "Elin Ebg Traction Gmbh",
-       [3]byte{0, 20, 139}:    "Globo Electronic GmbH & Co. KG",
-       [3]byte{0, 20, 140}:    "General Dynamics Mission Systems",
-       [3]byte{0, 20, 141}:    "Cubic Defense Simulation Systems",
-       [3]byte{0, 20, 142}:    "Tele Power Inc.",
-       [3]byte{0, 20, 143}:    "Protronic (Far East) Ltd.",
-       [3]byte{0, 20, 144}:    "ASP Corporation",
-       [3]byte{0, 20, 145}:    "Daniels Electronics Ltd. dbo Codan Rado Communications",
-       [3]byte{0, 20, 146}:    "Liteon, Mobile Media Solution SBU",
-       [3]byte{0, 20, 147}:    "Systimax Solutions",
-       [3]byte{0, 20, 148}:    "ESU AG",
-       [3]byte{0, 20, 149}:    "2Wire Inc",
-       [3]byte{0, 20, 150}:    "Phonic Corp.",
-       [3]byte{0, 20, 151}:    "ZHIYUAN Eletronics co.,ltd.",
-       [3]byte{0, 20, 152}:    "Viking Design Technology",
-       [3]byte{0, 20, 153}:    "Helicomm Inc",
-       [3]byte{0, 20, 154}:    "ARRIS Group, Inc.",
-       [3]byte{0, 20, 155}:    "Nokota Communications, LLC",
-       [3]byte{0, 20, 156}:    "HF Company",
-       [3]byte{0, 20, 157}:    "Sound ID Inc.",
-       [3]byte{0, 20, 158}:    "UbONE Co., Ltd",
-       [3]byte{0, 20, 159}:    "System and Chips, Inc.",
-       [3]byte{0, 20, 160}:    "Accsense, Inc.",
-       [3]byte{0, 20, 161}:    "Synchronous Communication Corp",
-       [3]byte{0, 20, 162}:    "Core Micro Systems Inc.",
-       [3]byte{0, 20, 163}:    "Vitelec BV",
-       [3]byte{0, 20, 164}:    "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{0, 20, 165}:    "Gemtek Technology Co., Ltd.",
-       [3]byte{0, 20, 166}:    "Teranetics, Inc.",
-       [3]byte{0, 20, 167}:    "Nokia Danmark A/S",
-       [3]byte{0, 20, 168}:    "Cisco Systems, Inc",
-       [3]byte{0, 20, 169}:    "Cisco Systems, Inc",
-       [3]byte{0, 20, 170}:    "Ashly Audio, Inc.",
-       [3]byte{0, 20, 171}:    "Senhai Electronic Technology Co., Ltd.",
-       [3]byte{0, 20, 172}:    "Bountiful WiFi",
-       [3]byte{0, 20, 173}:    "Gassner Wiege- und Meßtechnik GmbH",
-       [3]byte{0, 20, 174}:    "Wizlogics Co., Ltd.",
-       [3]byte{0, 20, 175}:    "Datasym POS Inc.",
-       [3]byte{0, 20, 176}:    "Naeil Community",
-       [3]byte{0, 20, 177}:    "Axell Wireless Limited",
-       [3]byte{0, 20, 178}:    "mCubelogics Corporation",
-       [3]byte{0, 20, 179}:    "CoreStar International Corp",
-       [3]byte{0, 20, 180}:    "General Dynamics United Kingdom Ltd",
-       [3]byte{0, 20, 181}:    "PHYSIOMETRIX,INC",
-       [3]byte{0, 20, 182}:    "Enswer Technology Inc.",
-       [3]byte{0, 20, 183}:    "AR Infotek Inc.",
-       [3]byte{0, 20, 184}:    "Hill-Rom",
-       [3]byte{0, 20, 185}:    "MSTAR SEMICONDUCTOR",
-       [3]byte{0, 20, 186}:    "Carvers SA de CV",
-       [3]byte{0, 20, 187}:    "Open Interface North America",
-       [3]byte{0, 20, 188}:    "SYNECTIC TELECOM EXPORTS PVT. LTD.",
-       [3]byte{0, 20, 189}:    "incNETWORKS, Inc",
-       [3]byte{0, 20, 190}:    "Wink communication technology CO.LTD",
-       [3]byte{0, 20, 191}:    "Cisco-Linksys, LLC",
-       [3]byte{0, 20, 192}:    "Symstream Technology Group Ltd",
-       [3]byte{0, 20, 193}:    "U.S. Robotics Corporation",
-       [3]byte{0, 20, 194}:    "Hewlett Packard",
-       [3]byte{0, 20, 195}:    "Seagate Technology",
-       [3]byte{0, 20, 196}:    "Vitelcom Mobile Technology",
-       [3]byte{0, 20, 197}:    "Alive Technologies Pty Ltd",
-       [3]byte{0, 20, 198}:    "Quixant Ltd",
-       [3]byte{0, 20, 199}:    "Nortel Networks",
-       [3]byte{0, 20, 200}:    "Contemporary Research Corp",
-       [3]byte{0, 20, 201}:    "Brocade Communications Systems, Inc.",
-       [3]byte{0, 20, 202}:    "Key Radio Systems Limited",
-       [3]byte{0, 20, 203}:    "LifeSync Corporation",
-       [3]byte{0, 20, 204}:    "Zetec, Inc.",
-       [3]byte{0, 20, 205}:    "DigitalZone Co., Ltd.",
-       [3]byte{0, 20, 206}:    "NF CORPORATION",
-       [3]byte{0, 20, 207}:    "INVISIO Communications",
-       [3]byte{0, 20, 208}:    "BTI Systems Inc.",
-       [3]byte{0, 20, 209}:    "TRENDnet, Inc.",
-       [3]byte{0, 20, 210}:    "Kyuden Technosystems Corporation",
-       [3]byte{0, 20, 211}:    "SEPSA",
-       [3]byte{0, 20, 212}:    "K Technology Corporation",
-       [3]byte{0, 20, 213}:    "Datang Telecom Technology CO. , LCD,Optical Communication Br",
-       [3]byte{0, 20, 214}:    "Jeongmin Electronics Co.,Ltd.",
-       [3]byte{0, 20, 215}:    "Datastore Technology Corp",
-       [3]byte{0, 20, 216}:    "bio-logic SA",
-       [3]byte{0, 20, 217}:    "IP Fabrics, Inc.",
-       [3]byte{0, 20, 218}:    "Huntleigh Healthcare",
-       [3]byte{0, 20, 219}:    "Elma Trenew Electronic GmbH",
-       [3]byte{0, 20, 220}:    "Communication System Design & Manufacturing (CSDM)",
-       [3]byte{0, 20, 221}:    "Covergence Inc.",
-       [3]byte{0, 20, 222}:    "Sage Instruments Inc.",
-       [3]byte{0, 20, 223}:    "HI-P Tech Corporation",
-       [3]byte{0, 20, 224}:    "LET'S Corporation",
-       [3]byte{0, 20, 225}:    "Data Display AG",
-       [3]byte{0, 20, 226}:    "datacom systems inc.",
-       [3]byte{0, 20, 227}:    "mm-lab GmbH",
-       [3]byte{0, 20, 228}:    "infinias, LLC",
-       [3]byte{0, 20, 229}:    "Alticast",
-       [3]byte{0, 20, 230}:    "AIM Infrarotmodule GmbH",
-       [3]byte{0, 20, 231}:    "Stolinx,. Inc",
-       [3]byte{0, 20, 232}:    "ARRIS Group, Inc.",
-       [3]byte{0, 20, 233}:    "Nortech International",
-       [3]byte{0, 20, 234}:    "S Digm Inc. (Safe Paradigm Inc.)",
-       [3]byte{0, 20, 235}:    "AwarePoint Corporation",
-       [3]byte{0, 20, 236}:    "Acro Telecom",
-       [3]byte{0, 20, 237}:    "Airak, Inc.",
-       [3]byte{0, 20, 238}:    "Western Digital Technologies, Inc.",
-       [3]byte{0, 20, 239}:    "TZero Technologies, Inc.",
-       [3]byte{0, 20, 240}:    "Business Security OL AB",
-       [3]byte{0, 20, 241}:    "Cisco Systems, Inc",
-       [3]byte{0, 20, 242}:    "Cisco Systems, Inc",
-       [3]byte{0, 20, 243}:    "ViXS Systems Inc",
-       [3]byte{0, 20, 244}:    "DekTec Digital Video B.V.",
-       [3]byte{0, 20, 245}:    "OSI Security Devices",
-       [3]byte{0, 20, 246}:    "Juniper Networks",
-       [3]byte{0, 20, 247}:    "CREVIS Co., LTD",
-       [3]byte{0, 20, 248}:    "Scientific Atlanta",
-       [3]byte{0, 20, 249}:    "Vantage Controls",
-       [3]byte{0, 20, 250}:    "AsGa S.A.",
-       [3]byte{0, 20, 251}:    "Technical Solutions Inc.",
-       [3]byte{0, 20, 252}:    "Extandon, Inc.",
-       [3]byte{0, 20, 253}:    "Thecus Technology Corp.",
-       [3]byte{0, 20, 254}:    "Artech Electronics",
-       [3]byte{0, 20, 255}:    "Precise Automation, Inc.",
-       [3]byte{0, 21, 0}:      "Intel Corporate",
-       [3]byte{0, 21, 1}:      "LexBox",
-       [3]byte{0, 21, 2}:      "BETA tech",
-       [3]byte{0, 21, 3}:      "PROFIcomms s.r.o.",
-       [3]byte{0, 21, 4}:      "GAME PLUS CO., LTD.",
-       [3]byte{0, 21, 5}:      "Actiontec Electronics, Inc",
-       [3]byte{0, 21, 6}:      "Neo Photonics",
-       [3]byte{0, 21, 7}:      "Renaissance Learning Inc",
-       [3]byte{0, 21, 8}:      "Global Target Enterprise Inc",
-       [3]byte{0, 21, 9}:      "Plus Technology Co., Ltd",
-       [3]byte{0, 21, 10}:     "Sonoa Systems, Inc",
-       [3]byte{0, 21, 11}:     "SAGE INFOTECH LTD.",
-       [3]byte{0, 21, 12}:     "AVM GmbH",
-       [3]byte{0, 21, 13}:     "Hoana Medical, Inc.",
-       [3]byte{0, 21, 14}:     "OPENBRAIN TECHNOLOGIES CO., LTD.",
-       [3]byte{0, 21, 15}:     "mingjong",
-       [3]byte{0, 21, 16}:     "Techsphere Co., Ltd",
-       [3]byte{0, 21, 17}:     "Data Center Systems",
-       [3]byte{0, 21, 18}:     "Zurich University of Applied Sciences",
-       [3]byte{0, 21, 19}:     "EFS sas",
-       [3]byte{0, 21, 20}:     "Hu Zhou NAVA Networks&Electronics Ltd.",
-       [3]byte{0, 21, 21}:     "Leipold+Co.GmbH",
-       [3]byte{0, 21, 22}:     "URIEL SYSTEMS INC.",
-       [3]byte{0, 21, 23}:     "Intel Corporate",
-       [3]byte{0, 21, 24}:     "Shenzhen 10MOONS Technology Development CO.,Ltd",
-       [3]byte{0, 21, 25}:     "StoreAge Networking Technologies",
-       [3]byte{0, 21, 26}:     "Hunter Engineering Company",
-       [3]byte{0, 21, 27}:     "Isilon Systems Inc.",
-       [3]byte{0, 21, 28}:     "LENECO",
-       [3]byte{0, 21, 29}:     "M2I CORPORATION",
-       [3]byte{0, 21, 30}:     "Ethernet Powerlink Standardization Group (EPSG)",
-       [3]byte{0, 21, 31}:     "Multivision Intelligent Surveillance (Hong Kong) Ltd",
-       [3]byte{0, 21, 32}:     "Radiocrafts AS",
-       [3]byte{0, 21, 33}:     "Horoquartz",
-       [3]byte{0, 21, 34}:     "Dea Security",
-       [3]byte{0, 21, 35}:     "Meteor Communications Corporation",
-       [3]byte{0, 21, 36}:     "Numatics, Inc.",
-       [3]byte{0, 21, 37}:     "Chamberlain Access Solutions",
-       [3]byte{0, 21, 38}:     "Remote Technologies Inc",
-       [3]byte{0, 21, 39}:     "Balboa Instruments",
-       [3]byte{0, 21, 40}:     "Beacon Medical Products LLC d.b.a. BeaconMedaes",
-       [3]byte{0, 21, 41}:     "N3 Corporation",
-       [3]byte{0, 21, 42}:     "Nokia Corporation",
-       [3]byte{0, 21, 43}:     "Cisco Systems, Inc",
-       [3]byte{0, 21, 44}:     "Cisco Systems, Inc",
-       [3]byte{0, 21, 45}:     "TenX Networks, LLC",
-       [3]byte{0, 21, 46}:     "PacketHop, Inc.",
-       [3]byte{0, 21, 47}:     "ARRIS Group, Inc.",
-       [3]byte{0, 21, 48}:     "Dell EMC",
-       [3]byte{0, 21, 49}:     "KOCOM",
-       [3]byte{0, 21, 50}:     "Consumer Technologies Group, LLC",
-       [3]byte{0, 21, 51}:     "NADAM.CO.,LTD",
-       [3]byte{0, 21, 52}:     "A Beltrónica-Companhia de Comunicações, Lda",
-       [3]byte{0, 21, 53}:     "OTE Spa",
-       [3]byte{0, 21, 54}:     "Powertech co.,Ltd",
-       [3]byte{0, 21, 55}:     "Ventus Networks",
-       [3]byte{0, 21, 56}:     "RFID, Inc.",
-       [3]byte{0, 21, 57}:     "Technodrive srl",
-       [3]byte{0, 21, 58}:     "Shenzhen Syscan Technology Co.,Ltd.",
-       [3]byte{0, 21, 59}:     "EMH metering GmbH & Co. KG",
-       [3]byte{0, 21, 60}:     "Kprotech Co., Ltd.",
-       [3]byte{0, 21, 61}:     "ELIM PRODUCT CO.",
-       [3]byte{0, 21, 62}:     "Q-Matic Sweden AB",
-       [3]byte{0, 21, 63}:     "Alcatel Alenia Space Italia",
-       [3]byte{0, 21, 64}:     "Nortel Networks",
-       [3]byte{0, 21, 65}:     "StrataLight Communications, Inc.",
-       [3]byte{0, 21, 66}:     "MICROHARD S.R.L.",
-       [3]byte{0, 21, 67}:     "Aberdeen Test Center",
-       [3]byte{0, 21, 68}:     "coM.s.a.t. AG",
-       [3]byte{0, 21, 69}:     "SEECODE Co., Ltd.",
-       [3]byte{0, 21, 70}:     "ITG Worldwide Sdn Bhd",
-       [3]byte{0, 21, 71}:     "AiZen Solutions Inc.",
-       [3]byte{0, 21, 72}:     "CUBE TECHNOLOGIES",
-       [3]byte{0, 21, 73}:     "Dixtal Biomedica Ind. Com. Ltda",
-       [3]byte{0, 21, 74}:     "WANSHIH ELECTRONIC CO., LTD",
-       [3]byte{0, 21, 75}:     "Wonde Proud Technology Co., Ltd",
-       [3]byte{0, 21, 76}:     "Saunders Electronics",
-       [3]byte{0, 21, 77}:     "Netronome Systems, Inc.",
-       [3]byte{0, 21, 78}:     "IEC",
-       [3]byte{0, 21, 79}:     "one RF Technology",
-       [3]byte{0, 21, 80}:     "Nits Technology Inc",
-       [3]byte{0, 21, 81}:     "RadioPulse Inc.",
-       [3]byte{0, 21, 82}:     "Wi-Gear Inc.",
-       [3]byte{0, 21, 83}:     "Cytyc Corporation",
-       [3]byte{0, 21, 84}:     "Atalum Wireless S.A.",
-       [3]byte{0, 21, 85}:     "DFM GmbH",
-       [3]byte{0, 21, 86}:     "Sagemcom Broadband SAS",
-       [3]byte{0, 21, 87}:     "Olivetti",
-       [3]byte{0, 21, 88}:     "FOXCONN",
-       [3]byte{0, 21, 89}:     "Securaplane Technologies, Inc.",
-       [3]byte{0, 21, 90}:     "DAINIPPON PHARMACEUTICAL CO., LTD.",
-       [3]byte{0, 21, 91}:     "Sampo Corporation",
-       [3]byte{0, 21, 92}:     "Dresser Wayne",
-       [3]byte{0, 21, 93}:     "Microsoft Corporation",
-       [3]byte{0, 21, 94}:     "Morgan Stanley",
-       [3]byte{0, 21, 95}:     "GreenPeak Technologies",
-       [3]byte{0, 21, 96}:     "Hewlett Packard",
-       [3]byte{0, 21, 97}:     "JJPlus Corporation",
-       [3]byte{0, 21, 98}:     "Cisco Systems, Inc",
-       [3]byte{0, 21, 99}:     "Cisco Systems, Inc",
-       [3]byte{0, 21, 100}:    "BEHRINGER Spezielle Studiotechnik GmbH",
-       [3]byte{0, 21, 101}:    "XIAMEN YEALINK NETWORK TECHNOLOGY CO.,LTD",
-       [3]byte{0, 21, 102}:    "A-First Technology Co., Ltd.",
-       [3]byte{0, 21, 103}:    "RADWIN Inc.",
-       [3]byte{0, 21, 104}:    "Dilithium Networks",
-       [3]byte{0, 21, 105}:    "PECO II, Inc.",
-       [3]byte{0, 21, 106}:    "DG2L Technologies Pvt. Ltd.",
-       [3]byte{0, 21, 107}:    "Perfisans Networks Corp.",
-       [3]byte{0, 21, 108}:    "SANE SYSTEM CO., LTD",
-       [3]byte{0, 21, 109}:    "Ubiquiti Networks Inc.",
-       [3]byte{0, 21, 110}:    "A. W. Communication Systems Ltd",
-       [3]byte{0, 21, 111}:    "Xiranet Communications GmbH",
-       [3]byte{0, 21, 112}:    "Zebra Technologies Inc",
-       [3]byte{0, 21, 113}:    "Nolan Systems",
-       [3]byte{0, 21, 114}:    "Red-Lemon",
-       [3]byte{0, 21, 115}:    "NewSoft  Technology Corporation",
-       [3]byte{0, 21, 116}:    "Horizon Semiconductors Ltd.",
-       [3]byte{0, 21, 117}:    "Nevis Networks Inc.",
-       [3]byte{0, 21, 118}:    "LABiTec - Labor Biomedical Technologies GmbH",
-       [3]byte{0, 21, 119}:    "Allied Telesis, Inc.",
-       [3]byte{0, 21, 120}:    "Audio / Video Innovations",
-       [3]byte{0, 21, 121}:    "Lunatone Industrielle Elektronik GmbH",
-       [3]byte{0, 21, 122}:    "Telefin S.p.A.",
-       [3]byte{0, 21, 123}:    "Leuze electronic GmbH + Co. KG",
-       [3]byte{0, 21, 124}:    "Dave Networks, Inc.",
-       [3]byte{0, 21, 125}:    "POSDATA",
-       [3]byte{0, 21, 126}:    "Weidmüller Interface GmbH & Co. KG",
-       [3]byte{0, 21, 127}:    "ChuanG International Holding CO.,LTD.",
-       [3]byte{0, 21, 128}:    "U-WAY CORPORATION",
-       [3]byte{0, 21, 129}:    "MAKUS Inc.",
-       [3]byte{0, 21, 130}:    "Pulse Eight Limited",
-       [3]byte{0, 21, 131}:    "IVT corporation",
-       [3]byte{0, 21, 132}:    "Schenck Process GmbH",
-       [3]byte{0, 21, 133}:    "Aonvision Technolopy Corp.",
-       [3]byte{0, 21, 134}:    "Xiamen Overseas Chinese Electronic Co., Ltd.",
-       [3]byte{0, 21, 135}:    "Takenaka Seisakusho Co.,Ltd",
-       [3]byte{0, 21, 136}:    "Salutica Allied Solutions Sdn Bhd",
-       [3]byte{0, 21, 137}:    "D-MAX Technology Co.,Ltd",
-       [3]byte{0, 21, 138}:    "SURECOM Technology Corp.",
-       [3]byte{0, 21, 139}:    "Park Air Systems Ltd",
-       [3]byte{0, 21, 140}:    "Liab ApS",
-       [3]byte{0, 21, 141}:    "Jennic Ltd",
-       [3]byte{0, 21, 142}:    "Plustek.INC",
-       [3]byte{0, 21, 143}:    "NTT Advanced Technology Corporation",
-       [3]byte{0, 21, 144}:    "Hectronic GmbH",
-       [3]byte{0, 21, 145}:    "RLW Inc.",
-       [3]byte{0, 21, 146}:    "Facom UK Ltd (Melksham)",
-       [3]byte{0, 21, 147}:    "U4EA Technologies Inc.",
-       [3]byte{0, 21, 148}:    "BIXOLON CO.,LTD",
-       [3]byte{0, 21, 149}:    "Quester Tangent Corporation",
-       [3]byte{0, 21, 150}:    "ARRIS Group, Inc.",
-       [3]byte{0, 21, 151}:    "AETA AUDIO SYSTEMS",
-       [3]byte{0, 21, 152}:    "Kolektor group",
-       [3]byte{0, 21, 153}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 21, 154}:    "ARRIS Group, Inc.",
-       [3]byte{0, 21, 155}:    "Nortel Networks",
-       [3]byte{0, 21, 156}:    "B-KYUNG SYSTEM Co.,Ltd.",
-       [3]byte{0, 21, 157}:    "Tripp Lite",
-       [3]byte{0, 21, 158}:    "Mad Catz Interactive Inc",
-       [3]byte{0, 21, 159}:    "Terascala, Inc.",
-       [3]byte{0, 21, 160}:    "Nokia Danmark A/S",
-       [3]byte{0, 21, 161}:    "ECA-SINTERS",
-       [3]byte{0, 21, 162}:    "ARRIS Group, Inc.",
-       [3]byte{0, 21, 163}:    "ARRIS Group, Inc.",
-       [3]byte{0, 21, 164}:    "ARRIS Group, Inc.",
-       [3]byte{0, 21, 165}:    "DCI Co., Ltd.",
-       [3]byte{0, 21, 166}:    "Digital Electronics Products Ltd.",
-       [3]byte{0, 21, 167}:    "Robatech AG",
-       [3]byte{0, 21, 168}:    "ARRIS Group, Inc.",
-       [3]byte{0, 21, 169}:    "KWANG WOO I&C CO.,LTD",
-       [3]byte{0, 21, 170}:    "Rextechnik International Co.,",
-       [3]byte{0, 21, 171}:    "PRO CO SOUND INC",
-       [3]byte{0, 21, 172}:    "Capelon AB",
-       [3]byte{0, 21, 173}:    "Accedian Networks",
-       [3]byte{0, 21, 174}:    "kyung il",
-       [3]byte{0, 21, 175}:    "AzureWave Technology Inc.",
-       [3]byte{0, 21, 176}:    "AUTOTELENET CO.,LTD",
-       [3]byte{0, 21, 177}:    "Ambient Corporation",
-       [3]byte{0, 21, 178}:    "Advanced Industrial Computer, Inc.",
-       [3]byte{0, 21, 179}:    "Caretech AB",
-       [3]byte{0, 21, 180}:    "Polymap  Wireless LLC",
-       [3]byte{0, 21, 181}:    "CI Network Corp.",
-       [3]byte{0, 21, 182}:    "ShinMaywa Industries, Ltd.",
-       [3]byte{0, 21, 183}:    "Toshiba",
-       [3]byte{0, 21, 184}:    "Tahoe",
-       [3]byte{0, 21, 185}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 21, 186}:    "iba AG",
-       [3]byte{0, 21, 187}:    "SMA Solar Technology AG",
-       [3]byte{0, 21, 188}:    "Develco",
-       [3]byte{0, 21, 189}:    "Group 4 Technology Ltd",
-       [3]byte{0, 21, 190}:    "Iqua Ltd.",
-       [3]byte{0, 21, 191}:    "technicob",
-       [3]byte{0, 21, 192}:    "DIGITAL TELEMEDIA CO.,LTD.",
-       [3]byte{0, 21, 193}:    "Sony Interactive Entertainment Inc.",
-       [3]byte{0, 21, 194}:    "3M Germany",
-       [3]byte{0, 21, 195}:    "Ruf Telematik AG",
-       [3]byte{0, 21, 196}:    "FLOVEL CO., LTD.",
-       [3]byte{0, 21, 197}:    "Dell Inc.",
-       [3]byte{0, 21, 198}:    "Cisco Systems, Inc",
-       [3]byte{0, 21, 199}:    "Cisco Systems, Inc",
-       [3]byte{0, 21, 200}:    "FlexiPanel Ltd",
-       [3]byte{0, 21, 201}:    "Gumstix, Inc",
-       [3]byte{0, 21, 202}:    "TeraRecon, Inc.",
-       [3]byte{0, 21, 203}:    "Surf Communication Solutions Ltd.",
-       [3]byte{0, 21, 204}:    "UQUEST, LTD.",
-       [3]byte{0, 21, 205}:    "Exartech International Corp.",
-       [3]byte{0, 21, 206}:    "ARRIS Group, Inc.",
-       [3]byte{0, 21, 207}:    "ARRIS Group, Inc.",
-       [3]byte{0, 21, 208}:    "ARRIS Group, Inc.",
-       [3]byte{0, 21, 209}:    "ARRIS Group, Inc.",
-       [3]byte{0, 21, 210}:    "Xantech Corporation",
-       [3]byte{0, 21, 211}:    "Pantech&Curitel Communications, Inc.",
-       [3]byte{0, 21, 212}:    "Emitor AB",
-       [3]byte{0, 21, 213}:    "NICEVT",
-       [3]byte{0, 21, 214}:    "OSLiNK Sp. z o.o.",
-       [3]byte{0, 21, 215}:    "Reti Corporation",
-       [3]byte{0, 21, 216}:    "Interlink Electronics",
-       [3]byte{0, 21, 217}:    "PKC Electronics Oy",
-       [3]byte{0, 21, 218}:    "IRITEL A.D.",
-       [3]byte{0, 21, 219}:    "Canesta Inc.",
-       [3]byte{0, 21, 220}:    "KT&C Co., Ltd.",
-       [3]byte{0, 21, 221}:    "IP Control Systems Ltd.",
-       [3]byte{0, 21, 222}:    "Nokia Danmark A/S",
-       [3]byte{0, 21, 223}:    "Clivet S.p.A.",
-       [3]byte{0, 21, 224}:    "Ericsson",
-       [3]byte{0, 21, 225}:    "Picochip Ltd",
-       [3]byte{0, 21, 226}:    "Dr.Ing. Herbert Knauer GmbH",
-       [3]byte{0, 21, 227}:    "Dream Technologies Corporation",
-       [3]byte{0, 21, 228}:    "Zimmer Elektromedizin",
-       [3]byte{0, 21, 229}:    "Cheertek Inc.",
-       [3]byte{0, 21, 230}:    "MOBILE TECHNIKA Inc.",
-       [3]byte{0, 21, 231}:    "Quantec Tontechnik",
-       [3]byte{0, 21, 232}:    "Nortel Networks",
-       [3]byte{0, 21, 233}:    "D-Link Corporation",
-       [3]byte{0, 21, 234}:    "Tellumat (Pty) Ltd",
-       [3]byte{0, 21, 235}:    "zte corporation",
-       [3]byte{0, 21, 236}:    "Boca Devices LLC",
-       [3]byte{0, 21, 237}:    "Fulcrum Microsystems, Inc.",
-       [3]byte{0, 21, 238}:    "Omnex Control Systems",
-       [3]byte{0, 21, 239}:    "NEC TOKIN Corporation",
-       [3]byte{0, 21, 240}:    "EGO BV",
-       [3]byte{0, 21, 241}:    "KYLINK Communications Corp.",
-       [3]byte{0, 21, 242}:    "ASUSTek COMPUTER INC.",
-       [3]byte{0, 21, 243}:    "PELTOR AB",
-       [3]byte{0, 21, 244}:    "Eventide",
-       [3]byte{0, 21, 245}:    "Sustainable Energy Systems",
-       [3]byte{0, 21, 246}:    "SCIENCE AND ENGINEERING SERVICES, INC.",
-       [3]byte{0, 21, 247}:    "Wintecronics Ltd.",
-       [3]byte{0, 21, 248}:    "Kingtronics Industrial Co. Ltd.",
-       [3]byte{0, 21, 249}:    "Cisco Systems, Inc",
-       [3]byte{0, 21, 250}:    "Cisco Systems, Inc",
-       [3]byte{0, 21, 251}:    "setex schermuly textile computer gmbh",
-       [3]byte{0, 21, 252}:    "Littelfuse Startco",
-       [3]byte{0, 21, 253}:    "Complete Media Systems",
-       [3]byte{0, 21, 254}:    "SCHILLING ROBOTICS LLC",
-       [3]byte{0, 21, 255}:    "Novatel Wireless Solutions, Inc.",
-       [3]byte{0, 22, 0}:      "CelleBrite Mobile Synchronization",
-       [3]byte{0, 22, 1}:      "BUFFALO.INC",
-       [3]byte{0, 22, 2}:      "CEYON TECHNOLOGY CO.,LTD.",
-       [3]byte{0, 22, 3}:      "COOLKSKY Co., LTD",
-       [3]byte{0, 22, 4}:      "Sigpro",
-       [3]byte{0, 22, 5}:      "YORKVILLE SOUND INC.",
-       [3]byte{0, 22, 6}:      "Ideal Industries",
-       [3]byte{0, 22, 7}:      "Curves International Inc.",
-       [3]byte{0, 22, 8}:      "Sequans Communications",
-       [3]byte{0, 22, 9}:      "Unitech electronics co., ltd.",
-       [3]byte{0, 22, 10}:     "SWEEX Europe BV",
-       [3]byte{0, 22, 11}:     "TVWorks LLC",
-       [3]byte{0, 22, 12}:     "LPL  DEVELOPMENT S.A. DE C.V",
-       [3]byte{0, 22, 13}:     "Be Here Corporation",
-       [3]byte{0, 22, 14}:     "Optica Technologies Inc.",
-       [3]byte{0, 22, 15}:     "BADGER METER INC",
-       [3]byte{0, 22, 16}:     "Carina Technology",
-       [3]byte{0, 22, 17}:     "Altecon Srl",
-       [3]byte{0, 22, 18}:     "Otsuka Electronics Co., Ltd.",
-       [3]byte{0, 22, 19}:     "LibreStream Technologies Inc.",
-       [3]byte{0, 22, 20}:     "Picosecond Pulse Labs",
-       [3]byte{0, 22, 21}:     "Nittan Company, Limited",
-       [3]byte{0, 22, 22}:     "BROWAN COMMUNICATION INC.",
-       [3]byte{0, 22, 23}:     "MSI",
-       [3]byte{0, 22, 24}:     "HIVION Co., Ltd.",
-       [3]byte{0, 22, 25}:     "Lancelan Technologies S.L.",
-       [3]byte{0, 22, 26}:     "Dametric AB",
-       [3]byte{0, 22, 27}:     "Micronet Corporation",
-       [3]byte{0, 22, 28}:     "e:cue",
-       [3]byte{0, 22, 29}:     "Innovative Wireless Technologies, Inc.",
-       [3]byte{0, 22, 30}:     "Woojinnet",
-       [3]byte{0, 22, 31}:     "SUNWAVETEC Co., Ltd.",
-       [3]byte{0, 22, 32}:     "Sony Mobile Communications AB",
-       [3]byte{0, 22, 33}:     "Colorado Vnet",
-       [3]byte{0, 22, 34}:     "BBH SYSTEMS GMBH",
-       [3]byte{0, 22, 35}:     "Interval Media",
-       [3]byte{0, 22, 36}:     "Teneros, Inc.",
-       [3]byte{0, 22, 37}:     "Impinj, Inc.",
-       [3]byte{0, 22, 38}:     "ARRIS Group, Inc.",
-       [3]byte{0, 22, 39}:     "embedded-logic DESIGN AND MORE GmbH",
-       [3]byte{0, 22, 40}:     "Magicard Ltd",
-       [3]byte{0, 22, 41}:     "Nivus GmbH",
-       [3]byte{0, 22, 42}:     "Antik computers & communications s.r.o.",
-       [3]byte{0, 22, 43}:     "Togami Electric Mfg.co.,Ltd.",
-       [3]byte{0, 22, 44}:     "Xanboo",
-       [3]byte{0, 22, 45}:     "STNet Co., Ltd.",
-       [3]byte{0, 22, 46}:     "Space Shuttle Hi-Tech Co., Ltd.",
-       [3]byte{0, 22, 47}:     "Geutebrück GmbH",
-       [3]byte{0, 22, 48}:     "Vativ Technologies",
-       [3]byte{0, 22, 49}:     "Xteam",
-       [3]byte{0, 22, 50}:     "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 22, 51}:     "Oxford Diagnostics Ltd.",
-       [3]byte{0, 22, 52}:     "Mathtech, Inc.",
-       [3]byte{0, 22, 53}:     "Hewlett Packard",
-       [3]byte{0, 22, 54}:     "QUANTA COMPUTER INC.",
-       [3]byte{0, 22, 55}:     "CITEL SpA",
-       [3]byte{0, 22, 56}:     "TECOM Co., Ltd.",
-       [3]byte{0, 22, 57}:     "Ubiquam Co., Ltd.",
-       [3]byte{0, 22, 58}:     "YVES TECHNOLOGY CO., LTD.",
-       [3]byte{0, 22, 59}:     "VertexRSI/General Dynamics",
-       [3]byte{0, 22, 60}:     "Rebox B.V.",
-       [3]byte{0, 22, 61}:     "Tsinghua Tongfang Legend Silicon Tech. Co., Ltd.",
-       [3]byte{0, 22, 62}:     "Xensource, Inc.",
-       [3]byte{0, 22, 63}:     "CReTE SYSTEMS Inc.",
-       [3]byte{0, 22, 64}:     "Asmobile Communication Inc.",
-       [3]byte{0, 22, 65}:     "Universal Global Scientific Industrial Co., Ltd.",
-       [3]byte{0, 22, 66}:     "Pangolin",
-       [3]byte{0, 22, 67}:     "Sunhillo Corporation",
-       [3]byte{0, 22, 68}:     "LITE-ON Technology Corp.",
-       [3]byte{0, 22, 69}:     "Power Distribution, Inc.",
-       [3]byte{0, 22, 70}:     "Cisco Systems, Inc",
-       [3]byte{0, 22, 71}:     "Cisco Systems, Inc",
-       [3]byte{0, 22, 72}:     "SSD Company Limited",
-       [3]byte{0, 22, 73}:     "SetOne GmbH",
-       [3]byte{0, 22, 74}:     "Vibration Technology Limited",
-       [3]byte{0, 22, 75}:     "Quorion Data Systems GmbH",
-       [3]byte{0, 22, 76}:     "PLANET INT Co., Ltd",
-       [3]byte{0, 22, 77}:     "Alcatel-Lucent IPD",
-       [3]byte{0, 22, 78}:     "Nokia Danmark A/S",
-       [3]byte{0, 22, 79}:     "World Ethnic Broadcastin Inc.",
-       [3]byte{0, 22, 80}:     "Kratos EPD",
-       [3]byte{0, 22, 81}:     "Exeo Systems",
-       [3]byte{0, 22, 82}:     "Hoatech Technologies, Inc.",
-       [3]byte{0, 22, 83}:     "LEGO System A/S IE Electronics Division",
-       [3]byte{0, 22, 84}:     "Flex-P Industries Sdn. Bhd.",
-       [3]byte{0, 22, 85}:     "FUHO TECHNOLOGY Co., LTD",
-       [3]byte{0, 22, 86}:     "Nintendo Co., Ltd.",
-       [3]byte{0, 22, 87}:     "Aegate Ltd",
-       [3]byte{0, 22, 88}:     "Fusiontech Technologies Inc.",
-       [3]byte{0, 22, 89}:     "Z.M.P. RADWAG",
-       [3]byte{0, 22, 90}:     "Harman Specialty Group",
-       [3]byte{0, 22, 91}:     "Grip Audio",
-       [3]byte{0, 22, 92}:     "Trackflow Ltd",
-       [3]byte{0, 22, 93}:     "AirDefense, Inc.",
-       [3]byte{0, 22, 94}:     "Precision I/O",
-       [3]byte{0, 22, 95}:     "Fairmount Automation",
-       [3]byte{0, 22, 96}:     "Nortel Networks",
-       [3]byte{0, 22, 97}:     "Novatium Solutions (P) Ltd",
-       [3]byte{0, 22, 98}:     "Liyuh Technology Ltd.",
-       [3]byte{0, 22, 99}:     "KBT Mobile",
-       [3]byte{0, 22, 100}:    "Prod-El SpA",
-       [3]byte{0, 22, 101}:    "Cellon France",
-       [3]byte{0, 22, 102}:    "Quantier Communication Inc.",
-       [3]byte{0, 22, 103}:    "A-TEC Subsystem INC.",
-       [3]byte{0, 22, 104}:    "Eishin Electronics",
-       [3]byte{0, 22, 105}:    "MRV Communication (Networks) LTD",
-       [3]byte{0, 22, 106}:    "TPS",
-       [3]byte{0, 22, 107}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 22, 108}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 22, 109}:    "Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd",
-       [3]byte{0, 22, 110}:    "Arbitron Inc.",
-       [3]byte{0, 22, 111}:    "Intel Corporate",
-       [3]byte{0, 22, 112}:    "SKNET Corporation",
-       [3]byte{0, 22, 113}:    "Symphox Information Co.",
-       [3]byte{0, 22, 114}:    "Zenway enterprise ltd",
-       [3]byte{0, 22, 115}:    "Bury GmbH & Co. KG",
-       [3]byte{0, 22, 116}:    "EuroCB (Phils.), Inc.",
-       [3]byte{0, 22, 117}:    "ARRIS Group, Inc.",
-       [3]byte{0, 22, 118}:    "Intel Corporate",
-       [3]byte{0, 22, 119}:    "Bihl + Wiedemann GmbH",
-       [3]byte{0, 22, 120}:    "SHENZHEN BAOAN GAOKE ELECTRONICS CO., LTD",
-       [3]byte{0, 22, 121}:    "eOn Communications",
-       [3]byte{0, 22, 122}:    "Skyworth Overseas Development Ltd.",
-       [3]byte{0, 22, 123}:    "Haver&Boecker",
-       [3]byte{0, 22, 124}:    "iRex Technologies BV",
-       [3]byte{0, 22, 125}:    "Sky-Line Information Co., Ltd.",
-       [3]byte{0, 22, 126}:    "DIBOSS.CO.,LTD",
-       [3]byte{0, 22, 127}:    "Bluebird Soft Inc.",
-       [3]byte{0, 22, 128}:    "Bally Gaming + Systems",
-       [3]byte{0, 22, 129}:    "Vector Informatik GmbH",
-       [3]byte{0, 22, 130}:    "Pro Dex, Inc",
-       [3]byte{0, 22, 131}:    "WEBIO International Co.,.Ltd.",
-       [3]byte{0, 22, 132}:    "Donjin Co.,Ltd.",
-       [3]byte{0, 22, 133}:    "Elisa Oyj",
-       [3]byte{0, 22, 134}:    "Karl Storz Imaging",
-       [3]byte{0, 22, 135}:    "Chubb CSC-Vendor AP",
-       [3]byte{0, 22, 136}:    "ServerEngines LLC",
-       [3]byte{0, 22, 137}:    "Pilkor Electronics Co., Ltd",
-       [3]byte{0, 22, 138}:    "id-Confirm Inc",
-       [3]byte{0, 22, 139}:    "Paralan Corporation",
-       [3]byte{0, 22, 140}:    "DSL Partner AS",
-       [3]byte{0, 22, 141}:    "KORWIN CO., Ltd.",
-       [3]byte{0, 22, 142}:    "Vimicro corporation",
-       [3]byte{0, 22, 143}:    "GN Netcom A/S",
-       [3]byte{0, 22, 144}:    "J-TEK INCORPORATION",
-       [3]byte{0, 22, 145}:    "Moser-Baer AG",
-       [3]byte{0, 22, 146}:    "Scientific-Atlanta, Inc.",
-       [3]byte{0, 22, 147}:    "PowerLink Technology Inc.",
-       [3]byte{0, 22, 148}:    "Sennheiser Communications A/S",
-       [3]byte{0, 22, 149}:    "AVC Technology (International) Limited",
-       [3]byte{0, 22, 150}:    "QDI Technology (H.K.) Limited",
-       [3]byte{0, 22, 151}:    "NEC Corporation",
-       [3]byte{0, 22, 152}:    "T&A Mobile Phones",
-       [3]byte{0, 22, 153}:    "Tonic DVB Marketing Ltd",
-       [3]byte{0, 22, 154}:    "Quadrics Ltd",
-       [3]byte{0, 22, 155}:    "Alstom Transport",
-       [3]byte{0, 22, 156}:    "Cisco Systems, Inc",
-       [3]byte{0, 22, 157}:    "Cisco Systems, Inc",
-       [3]byte{0, 22, 158}:    "TV One Ltd",
-       [3]byte{0, 22, 159}:    "Vimtron Electronics Co., Ltd.",
-       [3]byte{0, 22, 160}:    "Auto-Maskin",
-       [3]byte{0, 22, 161}:    "3Leaf Networks",
-       [3]byte{0, 22, 162}:    "CentraLite Systems, Inc.",
-       [3]byte{0, 22, 163}:    "Ingeteam Transmission&Distribution, S.A.",
-       [3]byte{0, 22, 164}:    "Ezurio Ltd",
-       [3]byte{0, 22, 165}:    "Tandberg Storage ASA",
-       [3]byte{0, 22, 166}:    "Dovado FZ-LLC",
-       [3]byte{0, 22, 167}:    "AWETA G&P",
-       [3]byte{0, 22, 168}:    "CWT CO., LTD.",
-       [3]byte{0, 22, 169}:    "2EI",
-       [3]byte{0, 22, 170}:    "Kei Communication Technology Inc.",
-       [3]byte{0, 22, 171}:    "Dansensor A/S",
-       [3]byte{0, 22, 172}:    "Toho Technology Corp.",
-       [3]byte{0, 22, 173}:    "BT-Links Company Limited",
-       [3]byte{0, 22, 174}:    "INVENTEL",
-       [3]byte{0, 22, 175}:    "Shenzhen Union Networks Equipment Co.,Ltd.",
-       [3]byte{0, 22, 176}:    "VK Corporation",
-       [3]byte{0, 22, 177}:    "KBS",
-       [3]byte{0, 22, 178}:    "DriveCam Inc",
-       [3]byte{0, 22, 179}:    "Photonicbridges (China) Co., Ltd.",
-       [3]byte{0, 22, 180}:    "Private",
-       [3]byte{0, 22, 181}:    "ARRIS Group, Inc.",
-       [3]byte{0, 22, 182}:    "Cisco-Linksys, LLC",
-       [3]byte{0, 22, 183}:    "Seoul Commtech",
-       [3]byte{0, 22, 184}:    "Sony Mobile Communications AB",
-       [3]byte{0, 22, 185}:    "ProCurve Networking by HP",
-       [3]byte{0, 22, 186}:    "WEATHERNEWS INC.",
-       [3]byte{0, 22, 187}:    "Law-Chain Computer Technology Co Ltd",
-       [3]byte{0, 22, 188}:    "Nokia Danmark A/S",
-       [3]byte{0, 22, 189}:    "ATI Industrial Automation",
-       [3]byte{0, 22, 190}:    "INFRANET, Inc.",
-       [3]byte{0, 22, 191}:    "PaloDEx Group Oy",
-       [3]byte{0, 22, 192}:    "Semtech Corporation",
-       [3]byte{0, 22, 193}:    "Eleksen Ltd",
-       [3]byte{0, 22, 194}:    "Avtec Systems Inc",
-       [3]byte{0, 22, 195}:    "BA Systems Inc",
-       [3]byte{0, 22, 196}:    "SiRF Technology, Inc.",
-       [3]byte{0, 22, 197}:    "Shenzhen Xing Feng Industry Co.,Ltd",
-       [3]byte{0, 22, 198}:    "North Atlantic Industries",
-       [3]byte{0, 22, 199}:    "Cisco Systems, Inc",
-       [3]byte{0, 22, 200}:    "Cisco Systems, Inc",
-       [3]byte{0, 22, 201}:    "NAT Seattle, Inc.",
-       [3]byte{0, 22, 202}:    "Nortel Networks",
-       [3]byte{0, 22, 203}:    "Apple, Inc.",
-       [3]byte{0, 22, 204}:    "Xcute Mobile Corp.",
-       [3]byte{0, 22, 205}:    "HIJI HIGH-TECH CO., LTD.",
-       [3]byte{0, 22, 206}:    "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{0, 22, 207}:    "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{0, 22, 208}:    "ATech elektronika d.o.o.",
-       [3]byte{0, 22, 209}:    "ZAT a.s.",
-       [3]byte{0, 22, 210}:    "Caspian",
-       [3]byte{0, 22, 211}:    "Wistron Corporation",
-       [3]byte{0, 22, 212}:    "Compal Communications, Inc.",
-       [3]byte{0, 22, 213}:    "Synccom Co., Ltd",
-       [3]byte{0, 22, 214}:    "TDA Tech Pty Ltd",
-       [3]byte{0, 22, 215}:    "Sunways AG",
-       [3]byte{0, 22, 216}:    "Senea AB",
-       [3]byte{0, 22, 217}:    "NINGBO BIRD CO.,LTD.",
-       [3]byte{0, 22, 218}:    "Futronic Technology Co. Ltd.",
-       [3]byte{0, 22, 219}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 22, 220}:    "ARCHOS",
-       [3]byte{0, 22, 221}:    "Gigabeam Corporation",
-       [3]byte{0, 22, 222}:    "FAST Inc",
-       [3]byte{0, 22, 223}:    "Lundinova AB",
-       [3]byte{0, 22, 224}:    "3Com Ltd",
-       [3]byte{0, 22, 225}:    "SiliconStor, Inc.",
-       [3]byte{0, 22, 226}:    "American Fibertek, Inc.",
-       [3]byte{0, 22, 227}:    "ASKEY COMPUTER CORP",
-       [3]byte{0, 22, 228}:    "VANGUARD SECURITY ENGINEERING CORP.",
-       [3]byte{0, 22, 229}:    "FORDLEY DEVELOPMENT LIMITED",
-       [3]byte{0, 22, 230}:    "GIGA-BYTE TECHNOLOGY CO.,LTD.",
-       [3]byte{0, 22, 231}:    "Dynamix Promotions Limited",
-       [3]byte{0, 22, 232}:    "Sigma Designs, Inc.",
-       [3]byte{0, 22, 233}:    "Tiba Medical Inc",
-       [3]byte{0, 22, 234}:    "Intel Corporate",
-       [3]byte{0, 22, 235}:    "Intel Corporate",
-       [3]byte{0, 22, 236}:    "Elitegroup Computer Systems Co.,Ltd.",
-       [3]byte{0, 22, 237}:    "Utility, Inc",
-       [3]byte{0, 22, 238}:    "Royaldigital Inc.",
-       [3]byte{0, 22, 239}:    "Koko Fitness, Inc.",
-       [3]byte{0, 22, 240}:    "Dell",
-       [3]byte{0, 22, 241}:    "OmniSense, LLC",
-       [3]byte{0, 22, 242}:    "Dmobile System Co., Ltd.",
-       [3]byte{0, 22, 243}:    "CAST Information Co., Ltd",
-       [3]byte{0, 22, 244}:    "Eidicom Co., Ltd.",
-       [3]byte{0, 22, 245}:    "Dalian Golden Hualu Digital Technology Co.,Ltd",
-       [3]byte{0, 22, 246}:    "Video Products Group",
-       [3]byte{0, 22, 247}:    "L-3 Communications, Aviation Recorders",
-       [3]byte{0, 22, 248}:    "AVIQTECH TECHNOLOGY CO., LTD.",
-       [3]byte{0, 22, 249}:    "CETRTA POT, d.o.o., Kranj",
-       [3]byte{0, 22, 250}:    "ECI Telecom Ltd.",
-       [3]byte{0, 22, 251}:    "SHENZHEN MTC CO LTD",
-       [3]byte{0, 22, 252}:    "TOHKEN CO.,LTD.",
-       [3]byte{0, 22, 253}:    "Jaty Electronics",
-       [3]byte{0, 22, 254}:    "ALPS ELECTRIC CO.,LTD.",
-       [3]byte{0, 22, 255}:    "Wamin Optocomm Mfg Corp",
-       [3]byte{0, 23, 0}:      "ARRIS Group, Inc.",
-       [3]byte{0, 23, 1}:      "KDE, Inc.",
-       [3]byte{0, 23, 2}:      "Osung Midicom Co., Ltd",
-       [3]byte{0, 23, 3}:      "MOSDAN Internation Co.,Ltd",
-       [3]byte{0, 23, 4}:      "Shinco Electronics Group Co.,Ltd",
-       [3]byte{0, 23, 5}:      "Methode Electronics",
-       [3]byte{0, 23, 6}:      "Techfaithwireless Communication Technology Limited.",
-       [3]byte{0, 23, 7}:      "InGrid, Inc",
-       [3]byte{0, 23, 8}:      "Hewlett Packard",
-       [3]byte{0, 23, 9}:      "Exalt Communications",
-       [3]byte{0, 23, 10}:     "INEW DIGITAL COMPANY",
-       [3]byte{0, 23, 11}:     "Contela, Inc.",
-       [3]byte{0, 23, 12}:     "Twig Com Ltd.",
-       [3]byte{0, 23, 13}:     "Dust Networks Inc.",
-       [3]byte{0, 23, 14}:     "Cisco Systems, Inc",
-       [3]byte{0, 23, 15}:     "Cisco Systems, Inc",
-       [3]byte{0, 23, 16}:     "Casa Systems Inc.",
-       [3]byte{0, 23, 17}:     "GE Healthcare Bio-Sciences AB",
-       [3]byte{0, 23, 18}:     "ISCO International",
-       [3]byte{0, 23, 19}:     "Tiger NetCom",
-       [3]byte{0, 23, 20}:     "BR Controls Nederland bv",
-       [3]byte{0, 23, 21}:     "Qstik",
-       [3]byte{0, 23, 22}:     "Qno Technology Inc.",
-       [3]byte{0, 23, 23}:     "Leica Geosystems AG",
-       [3]byte{0, 23, 24}:     "Vansco Electronics Oy",
-       [3]byte{0, 23, 25}:     "Audiocodes USA, Inc",
-       [3]byte{0, 23, 26}:     "Winegard Company",
-       [3]byte{0, 23, 27}:     "Innovation Lab Corp.",
-       [3]byte{0, 23, 28}:     "NT MicroSystems, Inc.",
-       [3]byte{0, 23, 29}:     "DIGIT",
-       [3]byte{0, 23, 30}:     "Theo Benning GmbH & Co. KG",
-       [3]byte{0, 23, 31}:     "IMV Corporation",
-       [3]byte{0, 23, 32}:     "Image Sensing Systems, Inc.",
-       [3]byte{0, 23, 33}:     "FITRE S.p.A.",
-       [3]byte{0, 23, 34}:     "Hanazeder Electronic GmbH",
-       [3]byte{0, 23, 35}:     "Summit Data Communications",
-       [3]byte{0, 23, 36}:     "Studer Professional Audio GmbH",
-       [3]byte{0, 23, 37}:     "Liquid Computing",
-       [3]byte{0, 23, 38}:     "m2c Electronic Technology Ltd.",
-       [3]byte{0, 23, 39}:     "Thermo Ramsey Italia s.r.l.",
-       [3]byte{0, 23, 40}:     "Selex Communications",
-       [3]byte{0, 23, 41}:     "Ubicod Co.LTD",
-       [3]byte{0, 23, 42}:     "Proware Technology Corp.(By Unifosa)",
-       [3]byte{0, 23, 43}:     "Global Technologies Inc.",
-       [3]byte{0, 23, 44}:     "TAEJIN INFOTECH",
-       [3]byte{0, 23, 45}:     "Axcen Photonics Corporation",
-       [3]byte{0, 23, 46}:     "FXC Inc.",
-       [3]byte{0, 23, 47}:     "NeuLion Incorporated",
-       [3]byte{0, 23, 48}:     "Automation Electronics",
-       [3]byte{0, 23, 49}:     "ASUSTek COMPUTER INC.",
-       [3]byte{0, 23, 50}:     "Science-Technical Center RISSA",
-       [3]byte{0, 23, 51}:     "SFR",
-       [3]byte{0, 23, 52}:     "ADC Telecommunications",
-       [3]byte{0, 23, 53}:     "Intel Wireless Network Group",
-       [3]byte{0, 23, 54}:     "iiTron Inc.",
-       [3]byte{0, 23, 55}:     "Industrie Dial Face S.p.A.",
-       [3]byte{0, 23, 56}:     "International Business Machines",
-       [3]byte{0, 23, 57}:     "Bright Headphone Electronics Company",
-       [3]byte{0, 23, 58}:     "Cloudastructure Inc",
-       [3]byte{0, 23, 59}:     "Cisco Systems, Inc",
-       [3]byte{0, 23, 60}:     "Extreme Engineering Solutions",
-       [3]byte{0, 23, 61}:     "Neology",
-       [3]byte{0, 23, 62}:     "LeucotronEquipamentos Ltda.",
-       [3]byte{0, 23, 63}:     "Belkin International Inc.",
-       [3]byte{0, 23, 64}:     "Bluberi Gaming Technologies Inc",
-       [3]byte{0, 23, 65}:     "DEFIDEV",
-       [3]byte{0, 23, 66}:     "FUJITSU LIMITED",
-       [3]byte{0, 23, 67}:     "Deck Srl",
-       [3]byte{0, 23, 68}:     "Araneo Ltd.",
-       [3]byte{0, 23, 69}:     "INNOTZ CO., Ltd",
-       [3]byte{0, 23, 70}:     "Freedom9 Inc.",
-       [3]byte{0, 23, 71}:     "Trimble",
-       [3]byte{0, 23, 72}:     "Neokoros Brasil Ltda",
-       [3]byte{0, 23, 73}:     "HYUNDAE YONG-O-SA CO.,LTD",
-       [3]byte{0, 23, 74}:     "SOCOMEC",
-       [3]byte{0, 23, 75}:     "Nokia Danmark A/S",
-       [3]byte{0, 23, 76}:     "Millipore",
-       [3]byte{0, 23, 77}:     "DYNAMIC NETWORK FACTORY, INC.",
-       [3]byte{0, 23, 78}:     "Parama-tech Co.,Ltd.",
-       [3]byte{0, 23, 79}:     "iCatch Inc.",
-       [3]byte{0, 23, 80}:     "GSI Group, MicroE Systems",
-       [3]byte{0, 23, 81}:     "Online Corporation",
-       [3]byte{0, 23, 82}:     "DAGS, Inc",
-       [3]byte{0, 23, 83}:     "nFore Technology Inc.",
-       [3]byte{0, 23, 84}:     "Arkino HiTOP Corporation Limited",
-       [3]byte{0, 23, 85}:     "GE Security",
-       [3]byte{0, 23, 86}:     "Vinci Labs Oy",
-       [3]byte{0, 23, 87}:     "RIX TECHNOLOGY LIMITED",
-       [3]byte{0, 23, 88}:     "ThruVision Ltd",
-       [3]byte{0, 23, 89}:     "Cisco Systems, Inc",
-       [3]byte{0, 23, 90}:     "Cisco Systems, Inc",
-       [3]byte{0, 23, 91}:     "ACS Solutions Switzerland Ltd.",
-       [3]byte{0, 23, 92}:     "SHARP CORPORATION",
-       [3]byte{0, 23, 93}:     "Dongseo system.",
-       [3]byte{0, 23, 94}:     "Zed-3",
-       [3]byte{0, 23, 95}:     "XENOLINK Communications Co., Ltd.",
-       [3]byte{0, 23, 96}:     "Naito Densei Machida MFG.CO.,LTD",
-       [3]byte{0, 23, 97}:     "Private",
-       [3]byte{0, 23, 98}:     "Solar Technology, Inc.",
-       [3]byte{0, 23, 99}:     "Essentia S.p.A.",
-       [3]byte{0, 23, 100}:    "ATMedia GmbH",
-       [3]byte{0, 23, 101}:    "Nortel Networks",
-       [3]byte{0, 23, 102}:    "Accense Technology, Inc.",
-       [3]byte{0, 23, 103}:    "Earforce AS",
-       [3]byte{0, 23, 104}:    "Zinwave Ltd",
-       [3]byte{0, 23, 105}:    "Cymphonix Corp",
-       [3]byte{0, 23, 106}:    "Avago Technologies",
-       [3]byte{0, 23, 107}:    "Kiyon, Inc.",
-       [3]byte{0, 23, 108}:    "Pivot3, Inc.",
-       [3]byte{0, 23, 109}:    "CORE CORPORATION",
-       [3]byte{0, 23, 110}:    "DUCATI SISTEMI",
-       [3]byte{0, 23, 111}:    "PAX Computer Technology(Shenzhen) Ltd.",
-       [3]byte{0, 23, 112}:    "Arti Industrial Electronics Ltd.",
-       [3]byte{0, 23, 113}:    "APD Communications Ltd",
-       [3]byte{0, 23, 114}:    "ASTRO Strobel Kommunikationssysteme GmbH",
-       [3]byte{0, 23, 115}:    "Laketune Technologies Co. Ltd",
-       [3]byte{0, 23, 116}:    "Elesta GmbH",
-       [3]byte{0, 23, 117}:    "TTE Germany GmbH",
-       [3]byte{0, 23, 118}:    "Meso Scale Diagnostics, LLC",
-       [3]byte{0, 23, 119}:    "Obsidian Research Corporation",
-       [3]byte{0, 23, 120}:    "Central Music Co.",
-       [3]byte{0, 23, 121}:    "QuickTel",
-       [3]byte{0, 23, 122}:    "ASSA ABLOY AB",
-       [3]byte{0, 23, 123}:    "Azalea Networks inc",
-       [3]byte{0, 23, 124}:    "Smartlink Network Systems Limited",
-       [3]byte{0, 23, 125}:    "IDT Technology Limited",
-       [3]byte{0, 23, 126}:    "Meshcom Technologies Inc.",
-       [3]byte{0, 23, 127}:    "Worldsmart Retech",
-       [3]byte{0, 23, 128}:    "Applied Biosystems B.V.",
-       [3]byte{0, 23, 129}:    "Greystone Data System, Inc.",
-       [3]byte{0, 23, 130}:    "LoBenn Inc.",
-       [3]byte{0, 23, 131}:    "Texas Instruments",
-       [3]byte{0, 23, 132}:    "ARRIS Group, Inc.",
-       [3]byte{0, 23, 133}:    "Sparr Electronics Ltd",
-       [3]byte{0, 23, 134}:    "wisembed",
-       [3]byte{0, 23, 135}:    "Brother, Brother & Sons ApS",
-       [3]byte{0, 23, 136}:    "Philips Lighting BV",
-       [3]byte{0, 23, 137}:    "Zenitron Corporation",
-       [3]byte{0, 23, 138}:    "DARTS TECHNOLOGIES CORP.",
-       [3]byte{0, 23, 139}:    "Teledyne Technologies Incorporated",
-       [3]byte{0, 23, 140}:    "Independent Witness, Inc",
-       [3]byte{0, 23, 141}:    "Checkpoint Systems, Inc.",
-       [3]byte{0, 23, 142}:    "Gunnebo Cash Automation AB",
-       [3]byte{0, 23, 143}:    "NINGBO YIDONG ELECTRONIC CO.,LTD.",
-       [3]byte{0, 23, 144}:    "HYUNDAI DIGITECH Co, Ltd.",
-       [3]byte{0, 23, 145}:    "LinTech GmbH",
-       [3]byte{0, 23, 146}:    "Falcom Wireless Comunications Gmbh",
-       [3]byte{0, 23, 147}:    "Tigi Corporation",
-       [3]byte{0, 23, 148}:    "Cisco Systems, Inc",
-       [3]byte{0, 23, 149}:    "Cisco Systems, Inc",
-       [3]byte{0, 23, 150}:    "Rittmeyer AG",
-       [3]byte{0, 23, 151}:    "Telsy Elettronica S.p.A.",
-       [3]byte{0, 23, 152}:    "Azonic Technology Co., LTD",
-       [3]byte{0, 23, 153}:    "SmarTire Systems Inc.",
-       [3]byte{0, 23, 154}:    "D-Link Corporation",
-       [3]byte{0, 23, 155}:    "CHANT SINCERE CO.,LTD",
-       [3]byte{0, 23, 156}:    "DEPRAG SCHULZ GMBH u. CO.",
-       [3]byte{0, 23, 157}:    "Kelman Limited",
-       [3]byte{0, 23, 158}:    "Sirit Inc",
-       [3]byte{0, 23, 159}:    "Apricorn",
-       [3]byte{0, 23, 160}:    "RoboTech srl",
-       [3]byte{0, 23, 161}:    "3soft inc.",
-       [3]byte{0, 23, 162}:    "Camrivox Ltd.",
-       [3]byte{0, 23, 163}:    "MIX s.r.l.",
-       [3]byte{0, 23, 164}:    "Hewlett Packard",
-       [3]byte{0, 23, 165}:    "Ralink Technology Corp",
-       [3]byte{0, 23, 166}:    "YOSIN ELECTRONICS CO., LTD.",
-       [3]byte{0, 23, 167}:    "Mobile Computing Promotion Consortium",
-       [3]byte{0, 23, 168}:    "EDM Corporation",
-       [3]byte{0, 23, 169}:    "Sentivision",
-       [3]byte{0, 23, 170}:    "elab-experience inc.",
-       [3]byte{0, 23, 171}:    "Nintendo Co., Ltd.",
-       [3]byte{0, 23, 172}:    "O'Neil Product Development Inc.",
-       [3]byte{0, 23, 173}:    "AceNet Corporation",
-       [3]byte{0, 23, 174}:    "GAI-Tronics",
-       [3]byte{0, 23, 175}:    "Enermet",
-       [3]byte{0, 23, 176}:    "Nokia Danmark A/S",
-       [3]byte{0, 23, 177}:    "ACIST Medical Systems, Inc.",
-       [3]byte{0, 23, 178}:    "SK Telesys",
-       [3]byte{0, 23, 179}:    "Aftek Infosys Limited",
-       [3]byte{0, 23, 180}:    "Remote Security Systems, LLC",
-       [3]byte{0, 23, 181}:    "Peerless Systems Corporation",
-       [3]byte{0, 23, 182}:    "Aquantia",
-       [3]byte{0, 23, 183}:    "Tonze Technology Co.",
-       [3]byte{0, 23, 184}:    "NOVATRON CO., LTD.",
-       [3]byte{0, 23, 185}:    "Gambro Lundia AB",
-       [3]byte{0, 23, 186}:    "SEDO CO., LTD.",
-       [3]byte{0, 23, 187}:    "Syrinx Industrial Electronics",
-       [3]byte{0, 23, 188}:    "Touchtunes Music Corporation",
-       [3]byte{0, 23, 189}:    "Tibetsystem",
-       [3]byte{0, 23, 190}:    "Tratec Telecom B.V.",
-       [3]byte{0, 23, 191}:    "Coherent Research Limited",
-       [3]byte{0, 23, 192}:    "PureTech Systems, Inc.",
-       [3]byte{0, 23, 193}:    "CM Precision Technology LTD.",
-       [3]byte{0, 23, 194}:    "ADB Broadband Italia",
-       [3]byte{0, 23, 195}:    "KTF Technologies Inc.",
-       [3]byte{0, 23, 196}:    "Quanta Microsystems, INC.",
-       [3]byte{0, 23, 197}:    "SonicWALL",
-       [3]byte{0, 23, 198}:    "Cross Match Technologies Inc",
-       [3]byte{0, 23, 199}:    "MARA Systems Consulting AB",
-       [3]byte{0, 23, 200}:    "KYOCERA Display Corporation",
-       [3]byte{0, 23, 201}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 23, 202}:    "Qisda Corporation",
-       [3]byte{0, 23, 203}:    "Juniper Networks",
-       [3]byte{0, 23, 204}:    "Alcatel-Lucent",
-       [3]byte{0, 23, 205}:    "CEC Wireless R&D Ltd.",
-       [3]byte{0, 23, 206}:    "Screen Service Spa",
-       [3]byte{0, 23, 207}:    "iMCA-GmbH",
-       [3]byte{0, 23, 208}:    "Opticom Communications, LLC",
-       [3]byte{0, 23, 209}:    "Nortel Networks",
-       [3]byte{0, 23, 210}:    "THINLINX PTY LTD",
-       [3]byte{0, 23, 211}:    "Etymotic Research, Inc.",
-       [3]byte{0, 23, 212}:    "Monsoon Multimedia, Inc",
-       [3]byte{0, 23, 213}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 23, 214}:    "Bluechips Microhouse Co.,Ltd.",
-       [3]byte{0, 23, 215}:    "ION Geophysical Corporation Inc.",
-       [3]byte{0, 23, 216}:    "Magnum Semiconductor, Inc.",
-       [3]byte{0, 23, 217}:    "AAI Corporation",
-       [3]byte{0, 23, 218}:    "Spans Logic",
-       [3]byte{0, 23, 219}:    "CANKO TECHNOLOGIES INC.",
-       [3]byte{0, 23, 220}:    "DAEMYUNG ZERO1",
-       [3]byte{0, 23, 221}:    "Clipsal Australia",
-       [3]byte{0, 23, 222}:    "Advantage Six Ltd",
-       [3]byte{0, 23, 223}:    "Cisco Systems, Inc",
-       [3]byte{0, 23, 224}:    "Cisco Systems, Inc",
-       [3]byte{0, 23, 225}:    "DACOS Technologies Co., Ltd.",
-       [3]byte{0, 23, 226}:    "ARRIS Group, Inc.",
-       [3]byte{0, 23, 227}:    "Texas Instruments",
-       [3]byte{0, 23, 228}:    "Texas Instruments",
-       [3]byte{0, 23, 229}:    "Texas Instruments",
-       [3]byte{0, 23, 230}:    "Texas Instruments",
-       [3]byte{0, 23, 231}:    "Texas Instruments",
-       [3]byte{0, 23, 232}:    "Texas Instruments",
-       [3]byte{0, 23, 233}:    "Texas Instruments",
-       [3]byte{0, 23, 234}:    "Texas Instruments",
-       [3]byte{0, 23, 235}:    "Texas Instruments",
-       [3]byte{0, 23, 236}:    "Texas Instruments",
-       [3]byte{0, 23, 237}:    "WooJooIT Ltd.",
-       [3]byte{0, 23, 238}:    "ARRIS Group, Inc.",
-       [3]byte{0, 23, 239}:    "IBM Corp",
-       [3]byte{0, 23, 240}:    "SZCOM Broadband Network Technology Co.,Ltd",
-       [3]byte{0, 23, 241}:    "Renu Electronics Pvt Ltd",
-       [3]byte{0, 23, 242}:    "Apple, Inc.",
-       [3]byte{0, 23, 243}:    "Harris Corparation",
-       [3]byte{0, 23, 244}:    "ZERON ALLIANCE",
-       [3]byte{0, 23, 245}:    "LIG NEOPTEK",
-       [3]byte{0, 23, 246}:    "Pyramid Meriden Inc.",
-       [3]byte{0, 23, 247}:    "CEM Solutions Pvt Ltd",
-       [3]byte{0, 23, 248}:    "Motech Industries Inc.",
-       [3]byte{0, 23, 249}:    "Forcom Sp. z o.o.",
-       [3]byte{0, 23, 250}:    "Microsoft Corporation",
-       [3]byte{0, 23, 251}:    "FA",
-       [3]byte{0, 23, 252}:    "Suprema Inc.",
-       [3]byte{0, 23, 253}:    "Amulet Hotkey",
-       [3]byte{0, 23, 254}:    "TALOS SYSTEM INC.",
-       [3]byte{0, 23, 255}:    "PLAYLINE Co.,Ltd.",
-       [3]byte{0, 24, 0}:      "UNIGRAND LTD",
-       [3]byte{0, 24, 1}:      "Actiontec Electronics, Inc",
-       [3]byte{0, 24, 2}:      "Alpha Networks Inc.",
-       [3]byte{0, 24, 3}:      "ArcSoft Shanghai Co. LTD",
-       [3]byte{0, 24, 4}:      "E-TEK DIGITAL TECHNOLOGY LIMITED",
-       [3]byte{0, 24, 5}:      "Beijing InHand Networking Technology Co.,Ltd.",
-       [3]byte{0, 24, 6}:      "Hokkei Industries Co., Ltd.",
-       [3]byte{0, 24, 7}:      "Fanstel Corp.",
-       [3]byte{0, 24, 8}:      "SightLogix, Inc.",
-       [3]byte{0, 24, 9}:      "CRESYN",
-       [3]byte{0, 24, 10}:     "Cisco Meraki",
-       [3]byte{0, 24, 11}:     "Brilliant Telecommunications",
-       [3]byte{0, 24, 12}:     "Optelian Access Networks",
-       [3]byte{0, 24, 13}:     "Terabytes Server Storage Tech Corp",
-       [3]byte{0, 24, 14}:     "Avega Systems",
-       [3]byte{0, 24, 15}:     "Nokia Danmark A/S",
-       [3]byte{0, 24, 16}:     "IPTrade S.A.",
-       [3]byte{0, 24, 17}:     "Neuros Technology International, LLC.",
-       [3]byte{0, 24, 18}:     "Beijing Xinwei Telecom Technology Co., Ltd.",
-       [3]byte{0, 24, 19}:     "Sony Mobile Communications AB",
-       [3]byte{0, 24, 20}:     "Mitutoyo Corporation",
-       [3]byte{0, 24, 21}:     "GZ Technologies, Inc.",
-       [3]byte{0, 24, 22}:     "Ubixon Co., Ltd.",
-       [3]byte{0, 24, 23}:     "D. E. Shaw Research, LLC",
-       [3]byte{0, 24, 24}:     "Cisco Systems, Inc",
-       [3]byte{0, 24, 25}:     "Cisco Systems, Inc",
-       [3]byte{0, 24, 26}:     "AVerMedia Information Inc.",
-       [3]byte{0, 24, 27}:     "TaiJin Metal Co., Ltd.",
-       [3]byte{0, 24, 28}:     "Exterity Limited",
-       [3]byte{0, 24, 29}:     "ASIA ELECTRONICS CO.,LTD",
-       [3]byte{0, 24, 30}:     "GDX Technologies Ltd.",
-       [3]byte{0, 24, 31}:     "Palmmicro Communications",
-       [3]byte{0, 24, 32}:     "w5networks",
-       [3]byte{0, 24, 33}:     "SINDORICOH",
-       [3]byte{0, 24, 34}:     "CEC TELECOM CO.,LTD.",
-       [3]byte{0, 24, 35}:     "Delta Electronics, Inc.",
-       [3]byte{0, 24, 36}:     "Kimaldi Electronics, S.L.",
-       [3]byte{0, 24, 37}:     "Private",
-       [3]byte{0, 24, 38}:     "Cale Access AB",
-       [3]byte{0, 24, 39}:     "NEC UNIFIED SOLUTIONS NEDERLAND B.V.",
-       [3]byte{0, 24, 40}:     "e2v technologies (UK) ltd.",
-       [3]byte{0, 24, 41}:     "Gatsometer",
-       [3]byte{0, 24, 42}:     "Taiwan Video & Monitor",
-       [3]byte{0, 24, 43}:     "Softier",
-       [3]byte{0, 24, 44}:     "Ascend Networks, Inc.",
-       [3]byte{0, 24, 45}:     "Artec Design",
-       [3]byte{0, 24, 46}:     "XStreamHD",
-       [3]byte{0, 24, 47}:     "Texas Instruments",
-       [3]byte{0, 24, 48}:     "Texas Instruments",
-       [3]byte{0, 24, 49}:     "Texas Instruments",
-       [3]byte{0, 24, 50}:     "Texas Instruments",
-       [3]byte{0, 24, 51}:     "Texas Instruments",
-       [3]byte{0, 24, 52}:     "Texas Instruments",
-       [3]byte{0, 24, 53}:     "Thoratec / ITC",
-       [3]byte{0, 24, 54}:     "Reliance Electric Limited",
-       [3]byte{0, 24, 55}:     "Universal ABIT Co., Ltd.",
-       [3]byte{0, 24, 56}:     "PanAccess Communications,Inc.",
-       [3]byte{0, 24, 57}:     "Cisco-Linksys, LLC",
-       [3]byte{0, 24, 58}:     "Westell Technologies Inc.",
-       [3]byte{0, 24, 59}:     "CENITS Co., Ltd.",
-       [3]byte{0, 24, 60}:     "Encore Software Limited",
-       [3]byte{0, 24, 61}:     "Vertex Link Corporation",
-       [3]byte{0, 24, 62}:     "Digilent, Inc",
-       [3]byte{0, 24, 63}:     "2Wire Inc",
-       [3]byte{0, 24, 64}:     "3 Phoenix, Inc.",
-       [3]byte{0, 24, 65}:     "High Tech Computer Corp",
-       [3]byte{0, 24, 66}:     "Nokia Danmark A/S",
-       [3]byte{0, 24, 67}:     "Dawevision Ltd",
-       [3]byte{0, 24, 68}:     "Heads Up Technologies, Inc.",
-       [3]byte{0, 24, 69}:     "Pulsar-Telecom LLC.",
-       [3]byte{0, 24, 70}:     "Crypto S.A.",
-       [3]byte{0, 24, 71}:     "AceNet Technology Inc.",
-       [3]byte{0, 24, 72}:     "Vecima Networks Inc.",
-       [3]byte{0, 24, 73}:     "Pigeon Point Systems LLC",
-       [3]byte{0, 24, 74}:     "Catcher, Inc.",
-       [3]byte{0, 24, 75}:     "Las Vegas Gaming, Inc.",
-       [3]byte{0, 24, 76}:     "Bogen Communications",
-       [3]byte{0, 24, 77}:     "NETGEAR",
-       [3]byte{0, 24, 78}:     "Lianhe Technologies, Inc.",
-       [3]byte{0, 24, 79}:     "8 Ways Technology Corp.",
-       [3]byte{0, 24, 80}:     "Secfone Kft",
-       [3]byte{0, 24, 81}:     "SWsoft",
-       [3]byte{0, 24, 82}:     "StorLink Semiconductors, Inc.",
-       [3]byte{0, 24, 83}:     "Atera Networks LTD.",
-       [3]byte{0, 24, 84}:     "Argard Co., Ltd",
-       [3]byte{0, 24, 85}:     "Aeromaritime Systembau GmbH",
-       [3]byte{0, 24, 86}:     "EyeFi, Inc",
-       [3]byte{0, 24, 87}:     "Unilever R&D",
-       [3]byte{0, 24, 88}:     "TagMaster AB",
-       [3]byte{0, 24, 89}:     "Strawberry Linux Co.,Ltd.",
-       [3]byte{0, 24, 90}:     "uControl, Inc.",
-       [3]byte{0, 24, 91}:     "Network Chemistry, Inc",
-       [3]byte{0, 24, 92}:     "EDSLAB Technologies",
-       [3]byte{0, 24, 93}:     "TAIGUEN TECHNOLOGY (SHEN-ZHEN) CO., LTD.",
-       [3]byte{0, 24, 94}:     "Nexterm Inc.",
-       [3]byte{0, 24, 95}:     "TAC Inc.",
-       [3]byte{0, 24, 96}:     "SIM Technology Group Shanghai Simcom Ltd.,",
-       [3]byte{0, 24, 97}:     "Ooma, Inc.",
-       [3]byte{0, 24, 98}:     "Seagate Technology",
-       [3]byte{0, 24, 99}:     "Veritech Electronics Limited",
-       [3]byte{0, 24, 100}:    "Eaton Corporation",
-       [3]byte{0, 24, 101}:    "Siemens Healthcare Diagnostics Manufacturing Ltd",
-       [3]byte{0, 24, 102}:    "Leutron Vision",
-       [3]byte{0, 24, 103}:    "Datalogic ADC",
-       [3]byte{0, 24, 104}:    "Cisco SPVTG",
-       [3]byte{0, 24, 105}:    "KINGJIM",
-       [3]byte{0, 24, 106}:    "Global Link Digital Technology Co,.LTD",
-       [3]byte{0, 24, 107}:    "Sambu Communics CO., LTD.",
-       [3]byte{0, 24, 108}:    "Neonode AB",
-       [3]byte{0, 24, 109}:    "Zhenjiang Sapphire Electronic Industry CO.",
-       [3]byte{0, 24, 110}:    "3Com Ltd",
-       [3]byte{0, 24, 111}:    "Setha Industria Eletronica LTDA",
-       [3]byte{0, 24, 112}:    "E28 Shanghai Limited",
-       [3]byte{0, 24, 113}:    "Hewlett Packard",
-       [3]byte{0, 24, 114}:    "Expertise Engineering",
-       [3]byte{0, 24, 115}:    "Cisco Systems, Inc",
-       [3]byte{0, 24, 116}:    "Cisco Systems, Inc",
-       [3]byte{0, 24, 117}:    "AnaCise Testnology Pte Ltd",
-       [3]byte{0, 24, 118}:    "WowWee Ltd.",
-       [3]byte{0, 24, 119}:    "Amplex A/S",
-       [3]byte{0, 24, 120}:    "Mackware GmbH",
-       [3]byte{0, 24, 121}:    "dSys",
-       [3]byte{0, 24, 122}:    "Wiremold",
-       [3]byte{0, 24, 123}:    "4NSYS Co. Ltd.",
-       [3]byte{0, 24, 124}:    "INTERCROSS, LLC",
-       [3]byte{0, 24, 125}:    "Armorlink Co .Ltd",
-       [3]byte{0, 24, 126}:    "RGB Spectrum",
-       [3]byte{0, 24, 127}:    "ZODIANET",
-       [3]byte{0, 24, 128}:    "Maxim Integrated Products",
-       [3]byte{0, 24, 129}:    "Buyang Electronics Industrial Co., Ltd",
-       [3]byte{0, 24, 130}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{0, 24, 131}:    "FORMOSA21 INC.",
-       [3]byte{0, 24, 132}:    "Fon Technology S.L.",
-       [3]byte{0, 24, 133}:    "Avigilon Corporation",
-       [3]byte{0, 24, 134}:    "EL-TECH, INC.",
-       [3]byte{0, 24, 135}:    "Metasystem SpA",
-       [3]byte{0, 24, 136}:    "GOTIVE a.s.",
-       [3]byte{0, 24, 137}:    "WinNet Solutions Limited",
-       [3]byte{0, 24, 138}:    "Infinova LLC",
-       [3]byte{0, 24, 139}:    "Dell Inc.",
-       [3]byte{0, 24, 140}:    "Mobile Action Technology Inc.",
-       [3]byte{0, 24, 141}:    "Nokia Danmark A/S",
-       [3]byte{0, 24, 142}:    "Ekahau, Inc.",
-       [3]byte{0, 24, 143}:    "Montgomery Technology, Inc.",
-       [3]byte{0, 24, 144}:    "RadioCOM, s.r.o.",
-       [3]byte{0, 24, 145}:    "Zhongshan General K-mate Electronics Co., Ltd",
-       [3]byte{0, 24, 146}:    "ads-tec GmbH",
-       [3]byte{0, 24, 147}:    "SHENZHEN PHOTON BROADBAND TECHNOLOGY CO.,LTD",
-       [3]byte{0, 24, 148}:    "NPCore, Inc.",
-       [3]byte{0, 24, 149}:    "Hansun Technologies Inc.",
-       [3]byte{0, 24, 150}:    "Great Well Electronic LTD",
-       [3]byte{0, 24, 151}:    "JESS-LINK PRODUCTS Co., LTD",
-       [3]byte{0, 24, 152}:    "KINGSTATE ELECTRONICS CORPORATION",
-       [3]byte{0, 24, 153}:    "ShenZhen jieshun Science&Technology Industry CO,LTD.",
-       [3]byte{0, 24, 154}:    "HANA Micron Inc.",
-       [3]byte{0, 24, 155}:    "Thomson Inc.",
-       [3]byte{0, 24, 156}:    "Weldex Corporation",
-       [3]byte{0, 24, 157}:    "Navcast Inc.",
-       [3]byte{0, 24, 158}:    "OMNIKEY GmbH.",
-       [3]byte{0, 24, 159}:    "Lenntek Corporation",
-       [3]byte{0, 24, 160}:    "Cierma Ascenseurs",
-       [3]byte{0, 24, 161}:    "Tiqit Computers, Inc.",
-       [3]byte{0, 24, 162}:    "XIP Technology AB",
-       [3]byte{0, 24, 163}:    "ZIPPY TECHNOLOGY CORP.",
-       [3]byte{0, 24, 164}:    "ARRIS Group, Inc.",
-       [3]byte{0, 24, 165}:    "ADigit Technologies Corp.",
-       [3]byte{0, 24, 166}:    "Persistent Systems, LLC",
-       [3]byte{0, 24, 167}:    "Yoggie Security Systems LTD.",
-       [3]byte{0, 24, 168}:    "AnNeal Technology Inc.",
-       [3]byte{0, 24, 169}:    "Ethernet Direct Corporation",
-       [3]byte{0, 24, 170}:    "Protec Fire Detection plc",
-       [3]byte{0, 24, 171}:    "BEIJING LHWT MICROELECTRONICS INC.",
-       [3]byte{0, 24, 172}:    "Shanghai Jiao Da HISYS Technology Co. Ltd.",
-       [3]byte{0, 24, 173}:    "NIDEC SANKYO CORPORATION",
-       [3]byte{0, 24, 174}:    "TVT CO.,LTD",
-       [3]byte{0, 24, 175}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 24, 176}:    "Nortel Networks",
-       [3]byte{0, 24, 177}:    "IBM Corp",
-       [3]byte{0, 24, 178}:    "ADEUNIS RF",
-       [3]byte{0, 24, 179}:    "TEC WizHome Co., Ltd.",
-       [3]byte{0, 24, 180}:    "Dawon Media Inc.",
-       [3]byte{0, 24, 181}:    "Magna Carta",
-       [3]byte{0, 24, 182}:    "S3C, Inc.",
-       [3]byte{0, 24, 183}:    "D3 LED, LLC",
-       [3]byte{0, 24, 184}:    "New Voice International AG",
-       [3]byte{0, 24, 185}:    "Cisco Systems, Inc",
-       [3]byte{0, 24, 186}:    "Cisco Systems, Inc",
-       [3]byte{0, 24, 187}:    "Eliwell Controls srl",
-       [3]byte{0, 24, 188}:    "ZAO NVP Bolid",
-       [3]byte{0, 24, 189}:    "SHENZHEN DVBWORLD TECHNOLOGY CO., LTD.",
-       [3]byte{0, 24, 190}:    "ANSA Corporation",
-       [3]byte{0, 24, 191}:    "Essence Technology Solution, Inc.",
-       [3]byte{0, 24, 192}:    "ARRIS Group, Inc.",
-       [3]byte{0, 24, 193}:    "Almitec Informática e Comércio",
-       [3]byte{0, 24, 194}:    "Firetide, Inc",
-       [3]byte{0, 24, 195}:    "CS Corporation",
-       [3]byte{0, 24, 196}:    "Raba Technologies LLC",
-       [3]byte{0, 24, 197}:    "Nokia Danmark A/S",
-       [3]byte{0, 24, 198}:    "OPW Fuel Management Systems",
-       [3]byte{0, 24, 199}:    "Real Time Automation",
-       [3]byte{0, 24, 200}:    "ISONAS Inc.",
-       [3]byte{0, 24, 201}:    "EOps Technology Limited",
-       [3]byte{0, 24, 202}:    "Viprinet GmbH",
-       [3]byte{0, 24, 203}:    "Tecobest Technology Limited",
-       [3]byte{0, 24, 204}:    "AXIOHM SAS",
-       [3]byte{0, 24, 205}:    "Erae Electronics Industry Co., Ltd",
-       [3]byte{0, 24, 206}:    "Dreamtech Co., Ltd",
-       [3]byte{0, 24, 207}:    "Baldor Electric Company",
-       [3]byte{0, 24, 208}:    "AtRoad,  A Trimble Company",
-       [3]byte{0, 24, 209}:    "Siemens Home & Office Comm. Devices",
-       [3]byte{0, 24, 210}:    "High-Gain Antennas LLC",
-       [3]byte{0, 24, 211}:    "TEAMCAST",
-       [3]byte{0, 24, 212}:    "Unified Display Interface SIG",
-       [3]byte{0, 24, 213}:    "REIGNCOM",
-       [3]byte{0, 24, 214}:    "Swirlnet A/S",
-       [3]byte{0, 24, 215}:    "JAVAD GNSS, Inc.",
-       [3]byte{0, 24, 216}:    "ARCH METER Corporation",
-       [3]byte{0, 24, 217}:    "Santosha Internatonal, Inc",
-       [3]byte{0, 24, 218}:    "AMBER wireless GmbH",
-       [3]byte{0, 24, 219}:    "EPL Technology Ltd",
-       [3]byte{0, 24, 220}:    "Prostar Co., Ltd.",
-       [3]byte{0, 24, 221}:    "Silicondust Engineering Ltd",
-       [3]byte{0, 24, 222}:    "Intel Corporate",
-       [3]byte{0, 24, 223}:    "The Morey Corporation",
-       [3]byte{0, 24, 224}:    "ANAVEO",
-       [3]byte{0, 24, 225}:    "Verkerk Service Systemen",
-       [3]byte{0, 24, 226}:    "Topdata Sistemas de Automacao Ltda",
-       [3]byte{0, 24, 227}:    "Visualgate Systems, Inc.",
-       [3]byte{0, 24, 228}:    "YIGUANG",
-       [3]byte{0, 24, 229}:    "Adhoco AG",
-       [3]byte{0, 24, 230}:    "Computer Hardware Design SIA",
-       [3]byte{0, 24, 231}:    "Cameo Communications, INC.",
-       [3]byte{0, 24, 232}:    "Hacetron Corporation",
-       [3]byte{0, 24, 233}:    "Numata Corporation",
-       [3]byte{0, 24, 234}:    "Alltec GmbH",
-       [3]byte{0, 24, 235}:    "Blue Zen Enterprises Private Limited",
-       [3]byte{0, 24, 236}:    "Welding Technology Corporation",
-       [3]byte{0, 24, 237}:    "Accutech Ultrasystems Co., Ltd.",
-       [3]byte{0, 24, 238}:    "Videology Imaging Solutions, Inc.",
-       [3]byte{0, 24, 239}:    "Escape Communications, Inc.",
-       [3]byte{0, 24, 240}:    "JOYTOTO Co., Ltd.",
-       [3]byte{0, 24, 241}:    "Chunichi Denshi Co.,LTD.",
-       [3]byte{0, 24, 242}:    "Beijing Tianyu Communication Equipment Co., Ltd",
-       [3]byte{0, 24, 243}:    "ASUSTek COMPUTER INC.",
-       [3]byte{0, 24, 244}:    "EO TECHNICS Co., Ltd.",
-       [3]byte{0, 24, 245}:    "Shenzhen Streaming Video Technology Company Limited",
-       [3]byte{0, 24, 246}:    "Thomson Telecom Belgium",
-       [3]byte{0, 24, 247}:    "Kameleon Technologies",
-       [3]byte{0, 24, 248}:    "Cisco-Linksys, LLC",
-       [3]byte{0, 24, 249}:    "VVOND, Inc.",
-       [3]byte{0, 24, 250}:    "Yushin Precision Equipment Co.,Ltd.",
-       [3]byte{0, 24, 251}:    "Compro Technology",
-       [3]byte{0, 24, 252}:    "Altec Electronic AG",
-       [3]byte{0, 24, 253}:    "Optimal Technologies International Inc.",
-       [3]byte{0, 24, 254}:    "Hewlett Packard",
-       [3]byte{0, 24, 255}:    "PowerQuattro Co.",
-       [3]byte{0, 25, 0}:      "Intelliverese - DBA Voicecom",
-       [3]byte{0, 25, 1}:      "F1MEDIA",
-       [3]byte{0, 25, 2}:      "Cambridge Consultants Ltd",
-       [3]byte{0, 25, 3}:      "Bigfoot Networks Inc",
-       [3]byte{0, 25, 4}:      "WB Electronics Sp. z o.o.",
-       [3]byte{0, 25, 5}:      "SCHRACK Seconet AG",
-       [3]byte{0, 25, 6}:      "Cisco Systems, Inc",
-       [3]byte{0, 25, 7}:      "Cisco Systems, Inc",
-       [3]byte{0, 25, 8}:      "Duaxes Corporation",
-       [3]byte{0, 25, 9}:      "DEVI - Danfoss A/S",
-       [3]byte{0, 25, 10}:     "HASWARE INC.",
-       [3]byte{0, 25, 11}:     "Southern Vision Systems, Inc.",
-       [3]byte{0, 25, 12}:     "Encore Electronics, Inc.",
-       [3]byte{0, 25, 13}:     "IEEE 1394c",
-       [3]byte{0, 25, 14}:     "Atech Technology Co., Ltd.",
-       [3]byte{0, 25, 15}:     "Advansus Corp.",
-       [3]byte{0, 25, 16}:     "Knick Elektronische Messgeraete GmbH & Co. KG",
-       [3]byte{0, 25, 17}:     "Just In Mobile Information Technologies (Shanghai) Co., Ltd.",
-       [3]byte{0, 25, 18}:     "Welcat Inc",
-       [3]byte{0, 25, 19}:     "Chuang-Yi Network Equipment Co.Ltd.",
-       [3]byte{0, 25, 20}:     "Winix Co., Ltd",
-       [3]byte{0, 25, 21}:     "TECOM Co., Ltd.",
-       [3]byte{0, 25, 22}:     "PayTec AG",
-       [3]byte{0, 25, 23}:     "Posiflex Inc.",
-       [3]byte{0, 25, 24}:     "Interactive Wear AG",
-       [3]byte{0, 25, 25}:     "ASTEL Inc.",
-       [3]byte{0, 25, 26}:     "IRLINK",
-       [3]byte{0, 25, 27}:     "Sputnik Engineering AG",
-       [3]byte{0, 25, 28}:     "Sensicast Systems",
-       [3]byte{0, 25, 29}:     "Nintendo Co., Ltd.",
-       [3]byte{0, 25, 30}:     "Beyondwiz Co., Ltd.",
-       [3]byte{0, 25, 31}:     "Microlink communications Inc.",
-       [3]byte{0, 25, 32}:     "KUME electric Co.,Ltd.",
-       [3]byte{0, 25, 33}:     "Elitegroup Computer Systems Co.,Ltd.",
-       [3]byte{0, 25, 34}:     "CM Comandos Lineares",
-       [3]byte{0, 25, 35}:     "Phonex Korea Co., LTD.",
-       [3]byte{0, 25, 36}:     "LBNL  Engineering",
-       [3]byte{0, 25, 37}:     "Intelicis Corporation",
-       [3]byte{0, 25, 38}:     "BitsGen Co., Ltd.",
-       [3]byte{0, 25, 39}:     "ImCoSys Ltd",
-       [3]byte{0, 25, 40}:     "Siemens AG, Transportation Systems",
-       [3]byte{0, 25, 41}:     "2M2B Montadora de Maquinas Bahia Brasil LTDA",
-       [3]byte{0, 25, 42}:     "Antiope Associates",
-       [3]byte{0, 25, 43}:     "Aclara RF Systems Inc.",
-       [3]byte{0, 25, 44}:     "ARRIS Group, Inc.",
-       [3]byte{0, 25, 45}:     "Nokia Corporation",
-       [3]byte{0, 25, 46}:     "Spectral Instruments, Inc.",
-       [3]byte{0, 25, 47}:     "Cisco Systems, Inc",
-       [3]byte{0, 25, 48}:     "Cisco Systems, Inc",
-       [3]byte{0, 25, 49}:     "Balluff GmbH",
-       [3]byte{0, 25, 50}:     "Gude Analog- und Digialsysteme GmbH",
-       [3]byte{0, 25, 51}:     "Strix Systems, Inc.",
-       [3]byte{0, 25, 52}:     "TRENDON TOUCH TECHNOLOGY CORP.",
-       [3]byte{0, 25, 53}:     "DUERR DENTAL AG",
-       [3]byte{0, 25, 54}:     "STERLITE OPTICAL TECHNOLOGIES LIMITED",
-       [3]byte{0, 25, 55}:     "CommerceGuard AB",
-       [3]byte{0, 25, 56}:     "UMB Communications Co., Ltd.",
-       [3]byte{0, 25, 57}:     "Gigamips",
-       [3]byte{0, 25, 58}:     "OESOLUTIONS",
-       [3]byte{0, 25, 59}:     "Wilibox Deliberant Group LLC",
-       [3]byte{0, 25, 60}:     "HighPoint Technologies Incorporated",
-       [3]byte{0, 25, 61}:     "GMC Guardian Mobility Corp.",
-       [3]byte{0, 25, 62}:     "ADB Broadband Italia",
-       [3]byte{0, 25, 63}:     "RDI technology(Shenzhen) Co.,LTD",
-       [3]byte{0, 25, 64}:     "Rackable Systems",
-       [3]byte{0, 25, 65}:     "Pitney Bowes, Inc",
-       [3]byte{0, 25, 66}:     "ON SOFTWARE INTERNATIONAL LIMITED",
-       [3]byte{0, 25, 67}:     "Belden",
-       [3]byte{0, 25, 68}:     "Fossil Partners, L.P.",
-       [3]byte{0, 25, 69}:     "RF COncepts, LLC",
-       [3]byte{0, 25, 70}:     "Cianet Industria e Comercio S/A",
-       [3]byte{0, 25, 71}:     "Cisco SPVTG",
-       [3]byte{0, 25, 72}:     "AireSpider Networks",
-       [3]byte{0, 25, 73}:     "TENTEL  COMTECH CO., LTD.",
-       [3]byte{0, 25, 74}:     "TESTO AG",
-       [3]byte{0, 25, 75}:     "Sagemcom Broadband SAS",
-       [3]byte{0, 25, 76}:     "Fujian Stelcom information & Technology CO.,Ltd",
-       [3]byte{0, 25, 77}:     "Avago Technologies Sdn Bhd",
-       [3]byte{0, 25, 78}:     "Ultra Electronics - TCS (Tactical Communication Systems)",
-       [3]byte{0, 25, 79}:     "Nokia Danmark A/S",
-       [3]byte{0, 25, 80}:     "Harman Multimedia",
-       [3]byte{0, 25, 81}:     "NETCONS, s.r.o.",
-       [3]byte{0, 25, 82}:     "ACOGITO Co., Ltd",
-       [3]byte{0, 25, 83}:     "Chainleader Communications Corp.",
-       [3]byte{0, 25, 84}:     "Leaf Corporation.",
-       [3]byte{0, 25, 85}:     "Cisco Systems, Inc",
-       [3]byte{0, 25, 86}:     "Cisco Systems, Inc",
-       [3]byte{0, 25, 87}:     "Saafnet Canada Inc.",
-       [3]byte{0, 25, 88}:     "Bluetooth SIG, Inc.",
-       [3]byte{0, 25, 89}:     "Staccato Communications Inc.",
-       [3]byte{0, 25, 90}:     "Jenaer Antriebstechnik GmbH",
-       [3]byte{0, 25, 91}:     "D-Link Corporation",
-       [3]byte{0, 25, 92}:     "Innotech Corporation",
-       [3]byte{0, 25, 93}:     "ShenZhen XinHuaTong Opto Electronics Co.,Ltd",
-       [3]byte{0, 25, 94}:     "ARRIS Group, Inc.",
-       [3]byte{0, 25, 95}:     "Valemount Networks Corporation",
-       [3]byte{0, 25, 96}:     "DoCoMo Systems, Inc.",
-       [3]byte{0, 25, 97}:     "Blaupunkt  Embedded Systems GmbH",
-       [3]byte{0, 25, 98}:     "Commerciant, LP",
-       [3]byte{0, 25, 99}:     "Sony Mobile Communications AB",
-       [3]byte{0, 25, 100}:    "Doorking Inc.",
-       [3]byte{0, 25, 101}:    "YuHua TelTech (ShangHai) Co., Ltd.",
-       [3]byte{0, 25, 102}:    "Asiarock Technology Limited",
-       [3]byte{0, 25, 103}:    "TELDAT Sp.J.",
-       [3]byte{0, 25, 104}:    "Digital Video Networks(Shanghai) CO. LTD.",
-       [3]byte{0, 25, 105}:    "Nortel Networks",
-       [3]byte{0, 25, 106}:    "MikroM GmbH",
-       [3]byte{0, 25, 107}:    "Danpex Corporation",
-       [3]byte{0, 25, 108}:    "ETROVISION TECHNOLOGY",
-       [3]byte{0, 25, 109}:    "Raybit Systems Korea, Inc",
-       [3]byte{0, 25, 110}:    "Metacom (Pty) Ltd.",
-       [3]byte{0, 25, 111}:    "SensoPart GmbH",
-       [3]byte{0, 25, 112}:    "Z-Com, Inc.",
-       [3]byte{0, 25, 113}:    "Guangzhou Unicomp Technology Co.,Ltd",
-       [3]byte{0, 25, 114}:    "Plexus (Xiamen) Co.,ltd.",
-       [3]byte{0, 25, 115}:    "Zeugma Systems",
-       [3]byte{0, 25, 116}:    "16063",
-       [3]byte{0, 25, 117}:    "Beijing Huisen networks technology Inc",
-       [3]byte{0, 25, 118}:    "Xipher Technologies, LLC",
-       [3]byte{0, 25, 119}:    "Aerohive Networks Inc.",
-       [3]byte{0, 25, 120}:    "Datum Systems, Inc.",
-       [3]byte{0, 25, 121}:    "Nokia Danmark A/S",
-       [3]byte{0, 25, 122}:    "MAZeT GmbH",
-       [3]byte{0, 25, 123}:    "Picotest Corp.",
-       [3]byte{0, 25, 124}:    "Riedel Communications GmbH",
-       [3]byte{0, 25, 125}:    "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{0, 25, 126}:    "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{0, 25, 127}:    "PLANTRONICS, INC.",
-       [3]byte{0, 25, 128}:    "Gridpoint Systems",
-       [3]byte{0, 25, 129}:    "Vivox Inc",
-       [3]byte{0, 25, 130}:    "SmarDTV",
-       [3]byte{0, 25, 131}:    "CCT R&D Limited",
-       [3]byte{0, 25, 132}:    "ESTIC Corporation",
-       [3]byte{0, 25, 133}:    "IT Watchdogs, Inc",
-       [3]byte{0, 25, 134}:    "Cheng Hongjian",
-       [3]byte{0, 25, 135}:    "Panasonic Mobile Communications Co.,Ltd.",
-       [3]byte{0, 25, 136}:    "Wi2Wi, Inc",
-       [3]byte{0, 25, 137}:    "Sonitrol Corporation",
-       [3]byte{0, 25, 138}:    "Northrop Grumman Systems Corp.",
-       [3]byte{0, 25, 139}:    "Novera Optics Korea, Inc.",
-       [3]byte{0, 25, 140}:    "iXSea",
-       [3]byte{0, 25, 141}:    "Ocean Optics, Inc.",
-       [3]byte{0, 25, 142}:    "Oticon A/S",
-       [3]byte{0, 25, 143}:    "Alcatel Bell N.V.",
-       [3]byte{0, 25, 144}:    "ELM DATA Co., Ltd.",
-       [3]byte{0, 25, 145}:    "avinfo",
-       [3]byte{0, 25, 146}:    "Adtran Inc",
-       [3]byte{0, 25, 147}:    "Changshu Switchgear MFG. Co.,Ltd. (Former Changshu Switchgea",
-       [3]byte{0, 25, 148}:    "Jorjin Technologies Inc.",
-       [3]byte{0, 25, 149}:    "Jurong Hi-Tech (Suzhou)Co.ltd",
-       [3]byte{0, 25, 150}:    "TurboChef Technologies Inc.",
-       [3]byte{0, 25, 151}:    "Soft Device Sdn Bhd",
-       [3]byte{0, 25, 152}:    "SATO CORPORATION",
-       [3]byte{0, 25, 153}:    "Fujitsu Technology Solutions GmbH",
-       [3]byte{0, 25, 154}:    "EDO-EVI",
-       [3]byte{0, 25, 155}:    "Diversified Technical Systems, Inc.",
-       [3]byte{0, 25, 156}:    "CTRING",
-       [3]byte{0, 25, 157}:    "Vizio, Inc",
-       [3]byte{0, 25, 158}:    "Nifty",
-       [3]byte{0, 25, 159}:    "DKT A/S",
-       [3]byte{0, 25, 160}:    "NIHON DATA SYSTENS, INC.",
-       [3]byte{0, 25, 161}:    "LG INFORMATION & COMM.",
-       [3]byte{0, 25, 162}:    "ORDYN TECHNOLOGIES",
-       [3]byte{0, 25, 163}:    "asteel electronique atlantique",
-       [3]byte{0, 25, 164}:    "Austar Technology (hang zhou) Co.,Ltd",
-       [3]byte{0, 25, 165}:    "RadarFind Corporation",
-       [3]byte{0, 25, 166}:    "ARRIS Group, Inc.",
-       [3]byte{0, 25, 167}:    "ITU-T",
-       [3]byte{0, 25, 168}:    "WiQuest Communications",
-       [3]byte{0, 25, 169}:    "Cisco Systems, Inc",
-       [3]byte{0, 25, 170}:    "Cisco Systems, Inc",
-       [3]byte{0, 25, 171}:    "Raycom CO ., LTD",
-       [3]byte{0, 25, 172}:    "GSP SYSTEMS Inc.",
-       [3]byte{0, 25, 173}:    "BOBST SA",
-       [3]byte{0, 25, 174}:    "Hopling Technologies b.v.",
-       [3]byte{0, 25, 175}:    "Rigol Technologies, Inc.",
-       [3]byte{0, 25, 176}:    "HanYang System",
-       [3]byte{0, 25, 177}:    "Arrow7 Corporation",
-       [3]byte{0, 25, 178}:    "XYnetsoft Co.,Ltd",
-       [3]byte{0, 25, 179}:    "Stanford Research Systems",
-       [3]byte{0, 25, 180}:    "Intellio Ltd",
-       [3]byte{0, 25, 181}:    "Famar Fueguina S.A.",
-       [3]byte{0, 25, 182}:    "Euro Emme s.r.l.",
-       [3]byte{0, 25, 183}:    "Nokia Danmark A/S",
-       [3]byte{0, 25, 184}:    "Boundary Devices",
-       [3]byte{0, 25, 185}:    "Dell Inc.",
-       [3]byte{0, 25, 186}:    "Paradox Security Systems Ltd",
-       [3]byte{0, 25, 187}:    "Hewlett Packard",
-       [3]byte{0, 25, 188}:    "ELECTRO CHANCE SRL",
-       [3]byte{0, 25, 189}:    "New Media Life",
-       [3]byte{0, 25, 190}:    "Altai Technologies Limited",
-       [3]byte{0, 25, 191}:    "Citiway technology Co.,ltd",
-       [3]byte{0, 25, 192}:    "ARRIS Group, Inc.",
-       [3]byte{0, 25, 193}:    "ALPS ELECTRIC CO.,LTD.",
-       [3]byte{0, 25, 194}:    "Equustek Solutions, Inc.",
-       [3]byte{0, 25, 195}:    "Qualitrol",
-       [3]byte{0, 25, 196}:    "Infocrypt Inc.",
-       [3]byte{0, 25, 197}:    "Sony Interactive Entertainment Inc.",
-       [3]byte{0, 25, 198}:    "zte corporation",
-       [3]byte{0, 25, 199}:    "Cambridge Industries(Group) Co.,Ltd.",
-       [3]byte{0, 25, 200}:    "AnyDATA Corporation",
-       [3]byte{0, 25, 201}:    "S&C ELECTRIC COMPANY",
-       [3]byte{0, 25, 202}:    "Broadata Communications, Inc",
-       [3]byte{0, 25, 203}:    "Zyxel Communications Corporation",
-       [3]byte{0, 25, 204}:    "RCG (HK) Ltd",
-       [3]byte{0, 25, 205}:    "Chengdu ethercom information technology Ltd.",
-       [3]byte{0, 25, 206}:    "Progressive Gaming International",
-       [3]byte{0, 25, 207}:    "SALICRU, S.A.",
-       [3]byte{0, 25, 208}:    "Cathexis",
-       [3]byte{0, 25, 209}:    "Intel Corporate",
-       [3]byte{0, 25, 210}:    "Intel Corporate",
-       [3]byte{0, 25, 211}:    "TRAK Microwave",
-       [3]byte{0, 25, 212}:    "ICX Technologies",
-       [3]byte{0, 25, 213}:    "IP Innovations, Inc.",
-       [3]byte{0, 25, 214}:    "LS Cable and System Ltd.",
-       [3]byte{0, 25, 215}:    "FORTUNETEK CO., LTD",
-       [3]byte{0, 25, 216}:    "MAXFOR",
-       [3]byte{0, 25, 217}:    "Zeutschel GmbH",
-       [3]byte{0, 25, 218}:    "Welltrans O&E Technology Co. , Ltd.",
-       [3]byte{0, 25, 219}:    "MICRO-STAR INTERNATIONAL CO., LTD.",
-       [3]byte{0, 25, 220}:    "ENENSYS Technologies",
-       [3]byte{0, 25, 221}:    "FEI-Zyfer, Inc.",
-       [3]byte{0, 25, 222}:    "MOBITEK",
-       [3]byte{0, 25, 223}:    "Thomson Inc.",
-       [3]byte{0, 25, 224}:    "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{0, 25, 225}:    "Nortel Networks",
-       [3]byte{0, 25, 226}:    "Juniper Networks",
-       [3]byte{0, 25, 227}:    "Apple, Inc.",
-       [3]byte{0, 25, 228}:    "2Wire Inc",
-       [3]byte{0, 25, 229}:    "Lynx Studio Technology, Inc.",
-       [3]byte{0, 25, 230}:    "TOYO MEDIC CO.,LTD.",
-       [3]byte{0, 25, 231}:    "Cisco Systems, Inc",
-       [3]byte{0, 25, 232}:    "Cisco Systems, Inc",
-       [3]byte{0, 25, 233}:    "S-Information Technolgy, Co., Ltd.",
-       [3]byte{0, 25, 234}:    "TeraMage Technologies Co., Ltd.",
-       [3]byte{0, 25, 235}:    "Pyronix Ltd",
-       [3]byte{0, 25, 236}:    "Sagamore Systems, Inc.",
-       [3]byte{0, 25, 237}:    "Axesstel Inc.",
-       [3]byte{0, 25, 238}:    "CARLO GAVAZZI CONTROLS SPA-Controls Division",
-       [3]byte{0, 25, 239}:    "SHENZHEN LINNKING ELECTRONICS CO.,LTD",
-       [3]byte{0, 25, 240}:    "UNIONMAN TECHNOLOGY CO.,LTD",
-       [3]byte{0, 25, 241}:    "Star Communication Network Technology Co.,Ltd",
-       [3]byte{0, 25, 242}:    "Teradyne K.K.",
-       [3]byte{0, 25, 243}:    "Cetis, Inc",
-       [3]byte{0, 25, 244}:    "Convergens Oy Ltd",
-       [3]byte{0, 25, 245}:    "Imagination Technologies Ltd",
-       [3]byte{0, 25, 246}:    "Acconet (PTE) Ltd",
-       [3]byte{0, 25, 247}:    "Onset Computer Corporation",
-       [3]byte{0, 25, 248}:    "Embedded Systems Design, Inc.",
-       [3]byte{0, 25, 249}:    "TDK-Lambda",
-       [3]byte{0, 25, 250}:    "Cable Vision Electronics CO., LTD.",
-       [3]byte{0, 25, 251}:    "BSkyB Ltd",
-       [3]byte{0, 25, 252}:    "PT. Ufoakses Sukses Luarbiasa",
-       [3]byte{0, 25, 253}:    "Nintendo Co., Ltd.",
-       [3]byte{0, 25, 254}:    "SHENZHEN SEECOMM TECHNOLOGY CO.,LTD.",
-       [3]byte{0, 25, 255}:    "Finnzymes",
-       [3]byte{0, 26, 0}:      "MATRIX INC.",
-       [3]byte{0, 26, 1}:      "Smiths Medical",
-       [3]byte{0, 26, 2}:      "SECURE CARE PRODUCTS, INC",
-       [3]byte{0, 26, 3}:      "Angel Electronics Co., Ltd.",
-       [3]byte{0, 26, 4}:      "Interay Solutions BV",
-       [3]byte{0, 26, 5}:      "OPTIBASE LTD",
-       [3]byte{0, 26, 6}:      "OpVista, Inc.",
-       [3]byte{0, 26, 7}:      "Arecont Vision",
-       [3]byte{0, 26, 8}:      "Simoco Ltd.",
-       [3]byte{0, 26, 9}:      "Wayfarer Transit Systems Ltd",
-       [3]byte{0, 26, 10}:     "Adaptive Micro-Ware Inc.",
-       [3]byte{0, 26, 11}:     "BONA TECHNOLOGY INC.",
-       [3]byte{0, 26, 12}:     "Swe-Dish Satellite Systems AB",
-       [3]byte{0, 26, 13}:     "HandHeld entertainment, Inc.",
-       [3]byte{0, 26, 14}:     "Cheng Uei Precision Industry Co.,Ltd",
-       [3]byte{0, 26, 15}:     "Sistemas Avanzados de Control, S.A.",
-       [3]byte{0, 26, 16}:     "LUCENT TRANS ELECTRONICS CO.,LTD",
-       [3]byte{0, 26, 17}:     "Google, Inc.",
-       [3]byte{0, 26, 18}:     "Essilor",
-       [3]byte{0, 26, 19}:     "Wanlida Group Co., LTD",
-       [3]byte{0, 26, 20}:     "Xin Hua Control Engineering Co.,Ltd.",
-       [3]byte{0, 26, 21}:     "gemalto e-Payment",
-       [3]byte{0, 26, 22}:     "Nokia Danmark A/S",
-       [3]byte{0, 26, 23}:     "Teak Technologies, Inc.",
-       [3]byte{0, 26, 24}:     "Advanced Simulation Technology inc.",
-       [3]byte{0, 26, 25}:     "Computer Engineering Limited",
-       [3]byte{0, 26, 26}:     "Gentex Corporation/Electro-Acoustic Products",
-       [3]byte{0, 26, 27}:     "ARRIS Group, Inc.",
-       [3]byte{0, 26, 28}:     "GT&T Engineering Pte Ltd",
-       [3]byte{0, 26, 29}:     "PChome Online Inc.",
-       [3]byte{0, 26, 30}:     "Aruba Networks",
-       [3]byte{0, 26, 31}:     "Coastal Environmental Systems",
-       [3]byte{0, 26, 32}:     "CMOTECH Co. Ltd.",
-       [3]byte{0, 26, 33}:     "Brookhuis Applied Technologies BV",
-       [3]byte{0, 26, 34}:     "eQ-3 Entwicklung GmbH",
-       [3]byte{0, 26, 35}:     "Ice Qube, Inc",
-       [3]byte{0, 26, 36}:     "Galaxy Telecom Technologies Ltd",
-       [3]byte{0, 26, 37}:     "DELTA DORE",
-       [3]byte{0, 26, 38}:     "Deltanode Solutions AB",
-       [3]byte{0, 26, 39}:     "Ubistar",
-       [3]byte{0, 26, 40}:     "ASWT Co., LTD. Taiwan Branch H.K.",
-       [3]byte{0, 26, 41}:     "Johnson Outdoors Marine Electronics d/b/a Minnkota",
-       [3]byte{0, 26, 42}:     "Arcadyan Technology Corporation",
-       [3]byte{0, 26, 43}:     "Ayecom Technology Co., Ltd.",
-       [3]byte{0, 26, 44}:     "SATEC Co.,LTD",
-       [3]byte{0, 26, 45}:     "The Navvo Group",
-       [3]byte{0, 26, 46}:     "Ziova Coporation",
-       [3]byte{0, 26, 47}:     "Cisco Systems, Inc",
-       [3]byte{0, 26, 48}:     "Cisco Systems, Inc",
-       [3]byte{0, 26, 49}:     "SCAN COIN Industries AB",
-       [3]byte{0, 26, 50}:     "ACTIVA MULTIMEDIA",
-       [3]byte{0, 26, 51}:     "ASI Communications, Inc.",
-       [3]byte{0, 26, 52}:     "Konka Group Co., Ltd.",
-       [3]byte{0, 26, 53}:     "BARTEC GmbH",
-       [3]byte{0, 26, 54}:     "Aipermon GmbH & Co. KG",
-       [3]byte{0, 26, 55}:     "Lear Corporation",
-       [3]byte{0, 26, 56}:     "Sanmina-SCI",
-       [3]byte{0, 26, 57}:     "Merten GmbH&CoKG",
-       [3]byte{0, 26, 58}:     "Dongahelecomm",
-       [3]byte{0, 26, 59}:     "Doah Elecom Inc.",
-       [3]byte{0, 26, 60}:     "Technowave Ltd.",
-       [3]byte{0, 26, 61}:     "Ajin Vision Co.,Ltd",
-       [3]byte{0, 26, 62}:     "Faster Technology LLC",
-       [3]byte{0, 26, 63}:     "intelbras",
-       [3]byte{0, 26, 64}:     "A-FOUR TECH CO., LTD.",
-       [3]byte{0, 26, 65}:     "INOCOVA Co.,Ltd",
-       [3]byte{0, 26, 66}:     "Techcity Technology co., Ltd.",
-       [3]byte{0, 26, 67}:     "Logical Link Communications",
-       [3]byte{0, 26, 68}:     "JWTrading Co., Ltd",
-       [3]byte{0, 26, 69}:     "GN Netcom A/S",
-       [3]byte{0, 26, 70}:     "Digital Multimedia Technology Co., Ltd",
-       [3]byte{0, 26, 71}:     "Agami Systems, Inc.",
-       [3]byte{0, 26, 72}:     "Takacom Corporation",
-       [3]byte{0, 26, 73}:     "Micro Vision Co.,LTD",
-       [3]byte{0, 26, 74}:     "Qumranet Inc.",
-       [3]byte{0, 26, 75}:     "Hewlett Packard",
-       [3]byte{0, 26, 76}:     "Crossbow Technology, Inc",
-       [3]byte{0, 26, 77}:     "GIGA-BYTE TECHNOLOGY CO.,LTD.",
-       [3]byte{0, 26, 78}:     "NTI AG / LinMot",
-       [3]byte{0, 26, 79}:     "AVM GmbH",
-       [3]byte{0, 26, 80}:     "PheeNet Technology Corp.",
-       [3]byte{0, 26, 81}:     "Alfred Mann Foundation",
-       [3]byte{0, 26, 82}:     "Meshlinx Wireless Inc.",
-       [3]byte{0, 26, 83}:     "Zylaya",
-       [3]byte{0, 26, 84}:     "Hip Shing Electronics Ltd.",
-       [3]byte{0, 26, 85}:     "ACA-Digital Corporation",
-       [3]byte{0, 26, 86}:     "ViewTel Co,. Ltd.",
-       [3]byte{0, 26, 87}:     "Matrix Design Group, LLC",
-       [3]byte{0, 26, 88}:     "CCV Deutschland GmbH - Celectronic eHealth Div.",
-       [3]byte{0, 26, 89}:     "Ircona",
-       [3]byte{0, 26, 90}:     "Korea Electric Power Data Network  (KDN) Co., Ltd",
-       [3]byte{0, 26, 91}:     "NetCare Service Co., Ltd.",
-       [3]byte{0, 26, 92}:     "Euchner GmbH+Co. KG",
-       [3]byte{0, 26, 93}:     "Mobinnova Corp.",
-       [3]byte{0, 26, 94}:     "Thincom Technology Co.,Ltd",
-       [3]byte{0, 26, 95}:     "KitWorks.fi Ltd.",
-       [3]byte{0, 26, 96}:     "Wave Electronics Co.,Ltd.",
-       [3]byte{0, 26, 97}:     "PacStar Corp.",
-       [3]byte{0, 26, 98}:     "Data Robotics, Incorporated",
-       [3]byte{0, 26, 99}:     "Elster Solutions, LLC,",
-       [3]byte{0, 26, 100}:    "IBM Corp",
-       [3]byte{0, 26, 101}:    "Seluxit",
-       [3]byte{0, 26, 102}:    "ARRIS Group, Inc.",
-       [3]byte{0, 26, 103}:    "Infinite QL Sdn Bhd",
-       [3]byte{0, 26, 104}:    "Weltec Enterprise Co., Ltd.",
-       [3]byte{0, 26, 105}:    "Wuhan Yangtze Optical Technology CO.,Ltd.",
-       [3]byte{0, 26, 106}:    "Tranzas, Inc.",
-       [3]byte{0, 26, 107}:    "Universal Global Scientific Industrial Co., Ltd.",
-       [3]byte{0, 26, 108}:    "Cisco Systems, Inc",
-       [3]byte{0, 26, 109}:    "Cisco Systems, Inc",
-       [3]byte{0, 26, 110}:    "Impro Technologies",
-       [3]byte{0, 26, 111}:    "MI.TEL s.r.l.",
-       [3]byte{0, 26, 112}:    "Cisco-Linksys, LLC",
-       [3]byte{0, 26, 113}:    "Diostech Co., Ltd.",
-       [3]byte{0, 26, 114}:    "Mosart Semiconductor Corp.",
-       [3]byte{0, 26, 115}:    "Gemtek Technology Co., Ltd.",
-       [3]byte{0, 26, 116}:    "Procare International Co",
-       [3]byte{0, 26, 117}:    "Sony Mobile Communications AB",
-       [3]byte{0, 26, 118}:    "SDT information Technology Co.,LTD.",
-       [3]byte{0, 26, 119}:    "ARRIS Group, Inc.",
-       [3]byte{0, 26, 120}:    "ubtos",
-       [3]byte{0, 26, 121}:    "TELECOMUNICATION TECHNOLOGIES LTD.",
-       [3]byte{0, 26, 122}:    "Lismore Instruments Limited",
-       [3]byte{0, 26, 123}:    "Teleco, Inc.",
-       [3]byte{0, 26, 124}:    "Hirschmann Multimedia B.V.",
-       [3]byte{0, 26, 125}:    "cyber-blue(HK)Ltd",
-       [3]byte{0, 26, 126}:    "LN Srithai Comm Ltd.",
-       [3]byte{0, 26, 127}:    "GCI Science & Technology Co.,LTD",
-       [3]byte{0, 26, 128}:    "Sony Corporation",
-       [3]byte{0, 26, 129}:    "Zelax",
-       [3]byte{0, 26, 130}:    "PROBA Building Automation Co.,LTD",
-       [3]byte{0, 26, 131}:    "Pegasus Technologies Inc.",
-       [3]byte{0, 26, 132}:    "V One Multimedia Pte Ltd",
-       [3]byte{0, 26, 133}:    "NV Michel Van de Wiele",
-       [3]byte{0, 26, 134}:    "AdvancedIO Systems Inc",
-       [3]byte{0, 26, 135}:    "Canhold International Limited",
-       [3]byte{0, 26, 136}:    "Venergy,Co,Ltd",
-       [3]byte{0, 26, 137}:    "Nokia Danmark A/S",
-       [3]byte{0, 26, 138}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 26, 139}:    "CHUNIL ELECTRIC IND., CO.",
-       [3]byte{0, 26, 140}:    "Sophos Ltd",
-       [3]byte{0, 26, 141}:    "AVECS Bergen GmbH",
-       [3]byte{0, 26, 142}:    "3Way Networks Ltd",
-       [3]byte{0, 26, 143}:    "Nortel Networks",
-       [3]byte{0, 26, 144}:    "Trópico Sistemas e Telecomunicações da Amazônia LTDA.",
-       [3]byte{0, 26, 145}:    "FusionDynamic Ltd.",
-       [3]byte{0, 26, 146}:    "ASUSTek COMPUTER INC.",
-       [3]byte{0, 26, 147}:    "ERCO Leuchten GmbH",
-       [3]byte{0, 26, 148}:    "Votronic GmbH",
-       [3]byte{0, 26, 149}:    "Hisense Mobile Communications Technoligy Co.,Ltd.",
-       [3]byte{0, 26, 150}:    "ECLER S.A.",
-       [3]byte{0, 26, 151}:    "fitivision technology Inc.",
-       [3]byte{0, 26, 152}:    "Asotel Communication Limited Taiwan Branch",
-       [3]byte{0, 26, 153}:    "Smarty (HZ) Information Electronics Co., Ltd",
-       [3]byte{0, 26, 154}:    "Skyworth Digital Technology(Shenzhen) Co.,Ltd",
-       [3]byte{0, 26, 155}:    "ADEC & Parter AG",
-       [3]byte{0, 26, 156}:    "RightHand Technologies, Inc.",
-       [3]byte{0, 26, 157}:    "Skipper Wireless, Inc.",
-       [3]byte{0, 26, 158}:    "ICON Digital International Limited",
-       [3]byte{0, 26, 159}:    "A-Link Ltd",
-       [3]byte{0, 26, 160}:    "Dell Inc.",
-       [3]byte{0, 26, 161}:    "Cisco Systems, Inc",
-       [3]byte{0, 26, 162}:    "Cisco Systems, Inc",
-       [3]byte{0, 26, 163}:    "DELORME",
-       [3]byte{0, 26, 164}:    "Future University-Hakodate",
-       [3]byte{0, 26, 165}:    "BRN Phoenix",
-       [3]byte{0, 26, 166}:    "Telefunken Radio Communication Systems GmbH &CO.KG",
-       [3]byte{0, 26, 167}:    "Torian Wireless",
-       [3]byte{0, 26, 168}:    "Mamiya Digital Imaging Co., Ltd.",
-       [3]byte{0, 26, 169}:    "FUJIAN STAR-NET COMMUNICATION CO.,LTD",
-       [3]byte{0, 26, 170}:    "Analogic Corp.",
-       [3]byte{0, 26, 171}:    "eWings s.r.l.",
-       [3]byte{0, 26, 172}:    "Corelatus AB",
-       [3]byte{0, 26, 173}:    "ARRIS Group, Inc.",
-       [3]byte{0, 26, 174}:    "Savant Systems LLC",
-       [3]byte{0, 26, 175}:    "BLUSENS TECHNOLOGY",
-       [3]byte{0, 26, 176}:    "Signal Networks Pvt. Ltd.,",
-       [3]byte{0, 26, 177}:    "Asia Pacific Satellite Industries Co., Ltd.",
-       [3]byte{0, 26, 178}:    "Cyber Solutions Inc.",
-       [3]byte{0, 26, 179}:    "VISIONITE INC.",
-       [3]byte{0, 26, 180}:    "FFEI Ltd.",
-       [3]byte{0, 26, 181}:    "Home Network System",
-       [3]byte{0, 26, 182}:    "Texas Instruments",
-       [3]byte{0, 26, 183}:    "Ethos Networks LTD.",
-       [3]byte{0, 26, 184}:    "Anseri Corporation",
-       [3]byte{0, 26, 185}:    "PMC",
-       [3]byte{0, 26, 186}:    "Caton Overseas Limited",
-       [3]byte{0, 26, 187}:    "Fontal Technology Incorporation",
-       [3]byte{0, 26, 188}:    "U4EA Technologies Ltd",
-       [3]byte{0, 26, 189}:    "Impatica Inc.",
-       [3]byte{0, 26, 190}:    "COMPUTER HI-TECH INC.",
-       [3]byte{0, 26, 191}:    "TRUMPF Laser Marking Systems AG",
-       [3]byte{0, 26, 192}:    "JOYBIEN TECHNOLOGIES CO., LTD.",
-       [3]byte{0, 26, 193}:    "3Com Ltd",
-       [3]byte{0, 26, 194}:    "YEC Co.,Ltd.",
-       [3]byte{0, 26, 195}:    "Scientific-Atlanta, Inc",
-       [3]byte{0, 26, 196}:    "2Wire Inc",
-       [3]byte{0, 26, 197}:    "BreakingPoint Systems, Inc.",
-       [3]byte{0, 26, 198}:    "Micro Control Designs",
-       [3]byte{0, 26, 199}:    "UNIPOINT",
-       [3]byte{0, 26, 200}:    "ISL (Instrumentation Scientifique de Laboratoire)",
-       [3]byte{0, 26, 201}:    "SUZUKEN CO.,LTD",
-       [3]byte{0, 26, 202}:    "Tilera Corporation",
-       [3]byte{0, 26, 203}:    "Autocom Products Ltd",
-       [3]byte{0, 26, 204}:    "Celestial Semiconductor, Ltd",
-       [3]byte{0, 26, 205}:    "Tidel Engineering LP",
-       [3]byte{0, 26, 206}:    "YUPITERU CORPORATION",
-       [3]byte{0, 26, 207}:    "C.T. ELETTRONICA",
-       [3]byte{0, 26, 208}:    "Albis Technologies AG",
-       [3]byte{0, 26, 209}:    "FARGO CO., LTD.",
-       [3]byte{0, 26, 210}:    "Eletronica Nitron Ltda",
-       [3]byte{0, 26, 211}:    "Vamp Ltd.",
-       [3]byte{0, 26, 212}:    "iPOX Technology Co., Ltd.",
-       [3]byte{0, 26, 213}:    "KMC CHAIN INDUSTRIAL CO., LTD.",
-       [3]byte{0, 26, 214}:    "JIAGNSU AETNA ELECTRIC CO.,LTD",
-       [3]byte{0, 26, 215}:    "Christie Digital Systems, Inc.",
-       [3]byte{0, 26, 216}:    "AlsterAero GmbH",
-       [3]byte{0, 26, 217}:    "International Broadband Electric Communications, Inc.",
-       [3]byte{0, 26, 218}:    "Biz-2-Me Inc.",
-       [3]byte{0, 26, 219}:    "ARRIS Group, Inc.",
-       [3]byte{0, 26, 220}:    "Nokia Danmark A/S",
-       [3]byte{0, 26, 221}:    "PePWave Ltd",
-       [3]byte{0, 26, 222}:    "ARRIS Group, Inc.",
-       [3]byte{0, 26, 223}:    "Interactivetv Pty Limited",
-       [3]byte{0, 26, 224}:    "Mythology Tech Express Inc.",
-       [3]byte{0, 26, 225}:    "EDGE ACCESS INC",
-       [3]byte{0, 26, 226}:    "Cisco Systems, Inc",
-       [3]byte{0, 26, 227}:    "Cisco Systems, Inc",
-       [3]byte{0, 26, 228}:    "Medicis Technologies Corporation",
-       [3]byte{0, 26, 229}:    "Mvox Technologies Inc.",
-       [3]byte{0, 26, 230}:    "Atlanta Advanced Communications Holdings Limited",
-       [3]byte{0, 26, 231}:    "Aztek Networks, Inc.",
-       [3]byte{0, 26, 232}:    "Unify Software and Solutions GmbH & Co. KG",
-       [3]byte{0, 26, 233}:    "Nintendo Co., Ltd.",
-       [3]byte{0, 26, 234}:    "Radio Terminal Systems Pty Ltd",
-       [3]byte{0, 26, 235}:    "Allied Telesis R&D Center K.K.",
-       [3]byte{0, 26, 236}:    "Keumbee Electronics Co.,Ltd.",
-       [3]byte{0, 26, 237}:    "INCOTEC GmbH",
-       [3]byte{0, 26, 238}:    "Shenztech Ltd",
-       [3]byte{0, 26, 239}:    "Loopcomm Technology, Inc.",
-       [3]byte{0, 26, 240}:    "Alcatel-Lucent IPD",
-       [3]byte{0, 26, 241}:    "Embedded Artists AB",
-       [3]byte{0, 26, 242}:    "Dynavisions Schweiz AG",
-       [3]byte{0, 26, 243}:    "Samyoung Electronics",
-       [3]byte{0, 26, 244}:    "Handreamnet",
-       [3]byte{0, 26, 245}:    "PENTAONE. CO., LTD.",
-       [3]byte{0, 26, 246}:    "Woven Systems, Inc.",
-       [3]byte{0, 26, 247}:    "dataschalt e+a GmbH",
-       [3]byte{0, 26, 248}:    "Copley Controls Corporation",
-       [3]byte{0, 26, 249}:    "AeroVIronment (AV Inc)",
-       [3]byte{0, 26, 250}:    "Welch Allyn, Inc.",
-       [3]byte{0, 26, 251}:    "Joby Inc.",
-       [3]byte{0, 26, 252}:    "ModusLink Corporation",
-       [3]byte{0, 26, 253}:    "EVOLIS",
-       [3]byte{0, 26, 254}:    "SOFACREAL",
-       [3]byte{0, 26, 255}:    "Wizyoung Tech.",
-       [3]byte{0, 27, 0}:      "Neopost Technologies",
-       [3]byte{0, 27, 1}:      "Applied Radio Technologies",
-       [3]byte{0, 27, 2}:      "ED Co.Ltd",
-       [3]byte{0, 27, 3}:      "Action Technology (SZ) Co., Ltd",
-       [3]byte{0, 27, 4}:      "Affinity International S.p.a",
-       [3]byte{0, 27, 5}:      "YMC AG",
-       [3]byte{0, 27, 6}:      "Ateliers R. LAUMONIER",
-       [3]byte{0, 27, 7}:      "Mendocino Software",
-       [3]byte{0, 27, 8}:      "Danfoss Drives A/S",
-       [3]byte{0, 27, 9}:      "Matrix Telecom Pvt. Ltd.",
-       [3]byte{0, 27, 10}:     "Intelligent Distributed Controls Ltd",
-       [3]byte{0, 27, 11}:     "Phidgets Inc.",
-       [3]byte{0, 27, 12}:     "Cisco Systems, Inc",
-       [3]byte{0, 27, 13}:     "Cisco Systems, Inc",
-       [3]byte{0, 27, 14}:     "InoTec GmbH Organisationssysteme",
-       [3]byte{0, 27, 15}:     "Petratec",
-       [3]byte{0, 27, 16}:     "ShenZhen Kang Hui Technology Co.,ltd",
-       [3]byte{0, 27, 17}:     "D-Link Corporation",
-       [3]byte{0, 27, 18}:     "Apprion",
-       [3]byte{0, 27, 19}:     "Icron Technologies Corporation",
-       [3]byte{0, 27, 20}:     "Carex Lighting Equipment Factory",
-       [3]byte{0, 27, 21}:     "Voxtel, Inc.",
-       [3]byte{0, 27, 22}:     "Celtro Ltd.",
-       [3]byte{0, 27, 23}:     "Palo Alto Networks",
-       [3]byte{0, 27, 24}:     "Tsuken Electric Ind. Co.,Ltd",
-       [3]byte{0, 27, 25}:     "IEEE I&M Society TC9",
-       [3]byte{0, 27, 26}:     "e-trees Japan, Inc.",
-       [3]byte{0, 27, 27}:     "Siemens AG,",
-       [3]byte{0, 27, 28}:     "Coherent",
-       [3]byte{0, 27, 29}:     "Phoenix International Co., Ltd",
-       [3]byte{0, 27, 30}:     "HART Communication Foundation",
-       [3]byte{0, 27, 31}:     "DELTA - Danish Electronics, Light & Acoustics",
-       [3]byte{0, 27, 32}:     "TPine Technology",
-       [3]byte{0, 27, 33}:     "Intel Corporate",
-       [3]byte{0, 27, 34}:     "Palit Microsystems ( H.K.) Ltd.",
-       [3]byte{0, 27, 35}:     "SimpleComTools",
-       [3]byte{0, 27, 36}:     "QUANTA COMPUTER INC.",
-       [3]byte{0, 27, 37}:     "Nortel Networks",
-       [3]byte{0, 27, 38}:     "RON-Telecom ZAO",
-       [3]byte{0, 27, 39}:     "Merlin CSI",
-       [3]byte{0, 27, 40}:     "POLYGON, JSC",
-       [3]byte{0, 27, 41}:     "Avantis.Co.,Ltd",
-       [3]byte{0, 27, 42}:     "Cisco Systems, Inc",
-       [3]byte{0, 27, 43}:     "Cisco Systems, Inc",
-       [3]byte{0, 27, 44}:     "ATRON electronic GmbH",
-       [3]byte{0, 27, 45}:     "Med-Eng Systems Inc.",
-       [3]byte{0, 27, 46}:     "Sinkyo Electron Inc",
-       [3]byte{0, 27, 47}:     "NETGEAR",
-       [3]byte{0, 27, 48}:     "Solitech Inc.",
-       [3]byte{0, 27, 49}:     "Neural Image. Co. Ltd.",
-       [3]byte{0, 27, 50}:     "QLogic Corporation",
-       [3]byte{0, 27, 51}:     "Nokia Danmark A/S",
-       [3]byte{0, 27, 52}:     "Focus System Inc.",
-       [3]byte{0, 27, 53}:     "ChongQing JINOU Science & Technology Development CO.,Ltd",
-       [3]byte{0, 27, 54}:     "Tsubata Engineering Co.,Ltd. (Head Office)",
-       [3]byte{0, 27, 55}:     "Computec Oy",
-       [3]byte{0, 27, 56}:     "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
-       [3]byte{0, 27, 57}:     "Proxicast",
-       [3]byte{0, 27, 58}:     "SIMS Corp.",
-       [3]byte{0, 27, 59}:     "Yi-Qing CO., LTD",
-       [3]byte{0, 27, 60}:     "Software Technologies Group,Inc.",
-       [3]byte{0, 27, 61}:     "EuroTel Spa",
-       [3]byte{0, 27, 62}:     "Curtis, Inc.",
-       [3]byte{0, 27, 63}:     "ProCurve Networking by HP",
-       [3]byte{0, 27, 64}:     "Network Automation mxc AB",
-       [3]byte{0, 27, 65}:     "General Infinity Co.,Ltd.",
-       [3]byte{0, 27, 66}:     "Wise & Blue",
-       [3]byte{0, 27, 67}:     "Beijing DG Telecommunications equipment Co.,Ltd",
-       [3]byte{0, 27, 68}:     "SanDisk Corporation",
-       [3]byte{0, 27, 69}:     "ABB AS, Division Automation Products",
-       [3]byte{0, 27, 70}:     "Blueone Technology Co.,Ltd",
-       [3]byte{0, 27, 71}:     "Futarque A/S",
-       [3]byte{0, 27, 72}:     "Shenzhen Lantech Electronics Co., Ltd.",
-       [3]byte{0, 27, 73}:     "Roberts Radio limited",
-       [3]byte{0, 27, 74}:     "W&W Communications, Inc.",
-       [3]byte{0, 27, 75}:     "SANION Co., Ltd.",
-       [3]byte{0, 27, 76}:     "Signtech",
-       [3]byte{0, 27, 77}:     "Areca Technology Corporation",
-       [3]byte{0, 27, 78}:     "Navman New Zealand",
-       [3]byte{0, 27, 79}:     "Avaya Inc",
-       [3]byte{0, 27, 80}:     "Nizhny Novgorod Factory named after M.Frunze, FSUE (NZiF)",
-       [3]byte{0, 27, 81}:     "Vector Technology Corp.",
-       [3]byte{0, 27, 82}:     "ARRIS Group, Inc.",
-       [3]byte{0, 27, 83}:     "Cisco Systems, Inc",
-       [3]byte{0, 27, 84}:     "Cisco Systems, Inc",
-       [3]byte{0, 27, 85}:     "Hurco Automation Ltd.",
-       [3]byte{0, 27, 86}:     "Tehuti Networks Ltd.",
-       [3]byte{0, 27, 87}:     "SEMINDIA SYSTEMS PRIVATE LIMITED",
-       [3]byte{0, 27, 88}:     "ACE CAD Enterprise Co., Ltd.",
-       [3]byte{0, 27, 89}:     "Sony Mobile Communications AB",
-       [3]byte{0, 27, 90}:     "Apollo Imaging Technologies, Inc.",
-       [3]byte{0, 27, 91}:     "2Wire Inc",
-       [3]byte{0, 27, 92}:     "Azuretec Co., Ltd.",
-       [3]byte{0, 27, 93}:     "Vololink Pty Ltd",
-       [3]byte{0, 27, 94}:     "BPL Limited",
-       [3]byte{0, 27, 95}:     "Alien Technology",
-       [3]byte{0, 27, 96}:     "NAVIGON AG",
-       [3]byte{0, 27, 97}:     "Digital Acoustics, LLC",
-       [3]byte{0, 27, 98}:     "JHT Optoelectronics Co.,Ltd.",
-       [3]byte{0, 27, 99}:     "Apple, Inc.",
-       [3]byte{0, 27, 100}:    "IsaacLandKorea Co., Ltd,",
-       [3]byte{0, 27, 101}:    "China Gridcom Co., Ltd",
-       [3]byte{0, 27, 102}:    "Sennheiser electronic GmbH & Co. KG",
-       [3]byte{0, 27, 103}:    "Cisco Systems Inc",
-       [3]byte{0, 27, 104}:    "Modnnet Co., Ltd",
-       [3]byte{0, 27, 105}:    "Equaline Corporation",
-       [3]byte{0, 27, 106}:    "Powerwave Technologies Sweden AB",
-       [3]byte{0, 27, 107}:    "Swyx Solutions AG",
-       [3]byte{0, 27, 108}:    "LookX Digital Media BV",
-       [3]byte{0, 27, 109}:    "Midtronics, Inc.",
-       [3]byte{0, 27, 110}:    "Anue Systems, Inc.",
-       [3]byte{0, 27, 111}:    "Teletrak Ltd",
-       [3]byte{0, 27, 112}:    "IRI Ubiteq, INC.",
-       [3]byte{0, 27, 113}:    "Telular Corp.",
-       [3]byte{0, 27, 114}:    "Sicep s.p.a.",
-       [3]byte{0, 27, 115}:    "DTL Broadcast Ltd",
-       [3]byte{0, 27, 116}:    "MiraLink Corporation",
-       [3]byte{0, 27, 117}:    "Hypermedia Systems",
-       [3]byte{0, 27, 118}:    "Ripcode, Inc.",
-       [3]byte{0, 27, 119}:    "Intel Corporate",
-       [3]byte{0, 27, 120}:    "Hewlett Packard",
-       [3]byte{0, 27, 121}:    "FAIVELEY TRANSPORT",
-       [3]byte{0, 27, 122}:    "Nintendo Co., Ltd.",
-       [3]byte{0, 27, 123}:    "The Tintometer Ltd",
-       [3]byte{0, 27, 124}:    "A & R Cambridge",
-       [3]byte{0, 27, 125}:    "CXR Anderson Jacobson",
-       [3]byte{0, 27, 126}:    "Beckmann GmbH",
-       [3]byte{0, 27, 127}:    "TMN Technologies Telecomunicacoes Ltda",
-       [3]byte{0, 27, 128}:    "LORD Corporation",
-       [3]byte{0, 27, 129}:    "DATAQ Instruments, Inc.",
-       [3]byte{0, 27, 130}:    "Taiwan Semiconductor Co., Ltd.",
-       [3]byte{0, 27, 131}:    "Finsoft Ltd",
-       [3]byte{0, 27, 132}:    "Scan Engineering Telecom",
-       [3]byte{0, 27, 133}:    "MAN Diesel SE",
-       [3]byte{0, 27, 134}:    "Bosch Access Systems GmbH",
-       [3]byte{0, 27, 135}:    "Deepsound Tech. Co., Ltd",
-       [3]byte{0, 27, 136}:    "Divinet Access Technologies Ltd",
-       [3]byte{0, 27, 137}:    "EMZA Visual Sense Ltd.",
-       [3]byte{0, 27, 138}:    "2M Electronic A/S",
-       [3]byte{0, 27, 139}:    "NEC Platforms, Ltd.",
-       [3]byte{0, 27, 140}:    "JMicron Technology Corp.",
-       [3]byte{0, 27, 141}:    "Electronic Computer Systems, Inc.",
-       [3]byte{0, 27, 142}:    "Hulu Sweden AB",
-       [3]byte{0, 27, 143}:    "Cisco Systems, Inc",
-       [3]byte{0, 27, 144}:    "Cisco Systems, Inc",
-       [3]byte{0, 27, 145}:    "EFKON AG",
-       [3]byte{0, 27, 146}:    "l-acoustics",
-       [3]byte{0, 27, 147}:    "JC Decaux SA DNT",
-       [3]byte{0, 27, 148}:    "T.E.M.A. S.p.A.",
-       [3]byte{0, 27, 149}:    "VIDEO SYSTEMS SRL",
-       [3]byte{0, 27, 150}:    "General Sensing",
-       [3]byte{0, 27, 151}:    "Violin Technologies",
-       [3]byte{0, 27, 152}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 27, 153}:    "KS System GmbH",
-       [3]byte{0, 27, 154}:    "Apollo Fire Detectors Ltd",
-       [3]byte{0, 27, 155}:    "Hose-McCann Communications",
-       [3]byte{0, 27, 156}:    "SATEL sp. z o.o.",
-       [3]byte{0, 27, 157}:    "Novus Security Sp. z o.o.",
-       [3]byte{0, 27, 158}:    "ASKEY COMPUTER CORP",
-       [3]byte{0, 27, 159}:    "Calyptech Pty Ltd",
-       [3]byte{0, 27, 160}:    "Awox",
-       [3]byte{0, 27, 161}:    "Åmic AB",
-       [3]byte{0, 27, 162}:    "IDS Imaging Development Systems GmbH",
-       [3]byte{0, 27, 163}:    "Flexit Group GmbH",
-       [3]byte{0, 27, 164}:    "S.A.E Afikim",
-       [3]byte{0, 27, 165}:    "MyungMin Systems, Inc.",
-       [3]byte{0, 27, 166}:    "intotech inc.",
-       [3]byte{0, 27, 167}:    "Lorica Solutions",
-       [3]byte{0, 27, 168}:    "UBI&MOBI,.Inc",
-       [3]byte{0, 27, 169}:    "Brother industries, LTD.",
-       [3]byte{0, 27, 170}:    "XenICs nv",
-       [3]byte{0, 27, 171}:    "Telchemy, Incorporated",
-       [3]byte{0, 27, 172}:    "Curtiss Wright Controls Embedded Computing",
-       [3]byte{0, 27, 173}:    "iControl Incorporated",
-       [3]byte{0, 27, 174}:    "Micro Control Systems, Inc",
-       [3]byte{0, 27, 175}:    "Nokia Danmark A/S",
-       [3]byte{0, 27, 176}:    "BHARAT ELECTRONICS",
-       [3]byte{0, 27, 177}:    "Wistron Neweb Corporation",
-       [3]byte{0, 27, 178}:    "Intellect International NV",
-       [3]byte{0, 27, 179}:    "Condalo GmbH",
-       [3]byte{0, 27, 180}:    "Airvod Limited",
-       [3]byte{0, 27, 181}:    "Cherry GmbH",
-       [3]byte{0, 27, 182}:    "Bird Electronic Corp.",
-       [3]byte{0, 27, 183}:    "Alta Heights Technology Corp.",
-       [3]byte{0, 27, 184}:    "BLUEWAY ELECTRONIC CO;LTD",
-       [3]byte{0, 27, 185}:    "Elitegroup Computer Systems Co.,Ltd.",
-       [3]byte{0, 27, 186}:    "Nortel Networks",
-       [3]byte{0, 27, 187}:    "RFTech Co.,Ltd",
-       [3]byte{0, 27, 188}:    "Silver Peak Systems, Inc.",
-       [3]byte{0, 27, 189}:    "FMC Kongsberg Subsea AS",
-       [3]byte{0, 27, 190}:    "ICOP Digital",
-       [3]byte{0, 27, 191}:    "Sagemcom Broadband SAS",
-       [3]byte{0, 27, 192}:    "Juniper Networks",
-       [3]byte{0, 27, 193}:    "HOLUX Technology, Inc.",
-       [3]byte{0, 27, 194}:    "Integrated Control Technology Limitied",
-       [3]byte{0, 27, 195}:    "Mobisolution Co.,Ltd",
-       [3]byte{0, 27, 196}:    "Ultratec, Inc.",
-       [3]byte{0, 27, 197}:    "IEEE Registration Authority",
-       [3]byte{0, 27, 198}:    "Strato Rechenzentrum AG",
-       [3]byte{0, 27, 199}:    "StarVedia Technology Inc.",
-       [3]byte{0, 27, 200}:    "MIURA CO.,LTD",
-       [3]byte{0, 27, 201}:    "FSN DISPLAY INC",
-       [3]byte{0, 27, 202}:    "Beijing Run Technology LTD. Company",
-       [3]byte{0, 27, 203}:    "PEMPEK SYSTEMS PTY LTD",
-       [3]byte{0, 27, 204}:    "KINGTEK CCTV ALLIANCE CO., LTD.",
-       [3]byte{0, 27, 205}:    "DAVISCOMMS (S) PTE LTD",
-       [3]byte{0, 27, 206}:    "Measurement Devices Ltd",
-       [3]byte{0, 27, 207}:    "Dataupia Corporation",
-       [3]byte{0, 27, 208}:    "IDENTEC SOLUTIONS",
-       [3]byte{0, 27, 209}:    "SOGESTMATIC",
-       [3]byte{0, 27, 210}:    "ULTRA-X ASIA PACIFIC Inc.",
-       [3]byte{0, 27, 211}:    "Panasonic Corporation AVC Networks Company",
-       [3]byte{0, 27, 212}:    "Cisco Systems, Inc",
-       [3]byte{0, 27, 213}:    "Cisco Systems, Inc",
-       [3]byte{0, 27, 214}:    "Kelvin Hughes Ltd",
-       [3]byte{0, 27, 215}:    "Cisco SPVTG",
-       [3]byte{0, 27, 216}:    "DVTel LTD",
-       [3]byte{0, 27, 217}:    "Edgewater Computer Systems",
-       [3]byte{0, 27, 218}:    "UTStarcom Inc",
-       [3]byte{0, 27, 219}:    "Valeo VECS",
-       [3]byte{0, 27, 220}:    "Vencer Co., Ltd.",
-       [3]byte{0, 27, 221}:    "ARRIS Group, Inc.",
-       [3]byte{0, 27, 222}:    "Renkus-Heinz, Inc.",
-       [3]byte{0, 27, 223}:    "Iskra Sistemi d.d.",
-       [3]byte{0, 27, 224}:    "TELENOT ELECTRONIC GmbH",
-       [3]byte{0, 27, 225}:    "ViaLogy",
-       [3]byte{0, 27, 226}:    "AhnLab,Inc.",
-       [3]byte{0, 27, 227}:    "Health Hero Network, Inc.",
-       [3]byte{0, 27, 228}:    "TOWNET SRL",
-       [3]byte{0, 27, 229}:    "802automation Limited",
-       [3]byte{0, 27, 230}:    "VR AG",
-       [3]byte{0, 27, 231}:    "Postek Electronics Co., Ltd.",
-       [3]byte{0, 27, 232}:    "Ultratronik GmbH",
-       [3]byte{0, 27, 233}:    "Broadcom",
-       [3]byte{0, 27, 234}:    "Nintendo Co., Ltd.",
-       [3]byte{0, 27, 235}:    "DMP Electronics INC.",
-       [3]byte{0, 27, 236}:    "Netio Technologies Co., Ltd",
-       [3]byte{0, 27, 237}:    "Brocade Communications Systems, Inc.",
-       [3]byte{0, 27, 238}:    "Nokia Danmark A/S",
-       [3]byte{0, 27, 239}:    "Blossoms Digital Technology Co.,Ltd.",
-       [3]byte{0, 27, 240}:    "Value Platforms Limited",
-       [3]byte{0, 27, 241}:    "Nanjing SilverNet Software Co., Ltd.",
-       [3]byte{0, 27, 242}:    "KWORLD COMPUTER CO., LTD",
-       [3]byte{0, 27, 243}:    "TRANSRADIO SenderSysteme Berlin AG",
-       [3]byte{0, 27, 244}:    "KENWIN INDUSTRIAL(HK) LTD.",
-       [3]byte{0, 27, 245}:    "Tellink Sistemas de Telecomunicación S.L.",
-       [3]byte{0, 27, 246}:    "CONWISE Technology Corporation Ltd.",
-       [3]byte{0, 27, 247}:    "Lund IP Products AB",
-       [3]byte{0, 27, 248}:    "Digitrax Inc.",
-       [3]byte{0, 27, 249}:    "Intellitect Water Ltd",
-       [3]byte{0, 27, 250}:    "G.i.N. mbH",
-       [3]byte{0, 27, 251}:    "ALPS ELECTRIC CO.,LTD.",
-       [3]byte{0, 27, 252}:    "ASUSTek COMPUTER INC.",
-       [3]byte{0, 27, 253}:    "Dignsys Inc.",
-       [3]byte{0, 27, 254}:    "Zavio Inc.",
-       [3]byte{0, 27, 255}:    "Millennia Media inc.",
-       [3]byte{0, 28, 0}:      "Entry Point, LLC",
-       [3]byte{0, 28, 1}:      "ABB Oy Drives",
-       [3]byte{0, 28, 2}:      "Pano Logic",
-       [3]byte{0, 28, 3}:      "Betty TV Technology AG",
-       [3]byte{0, 28, 4}:      "Airgain, Inc.",
-       [3]byte{0, 28, 5}:      "Nonin Medical Inc.",
-       [3]byte{0, 28, 6}:      "Siemens Numerical Control Ltd., Nanjing",
-       [3]byte{0, 28, 7}:      "Cwlinux Limited",
-       [3]byte{0, 28, 8}:      "Echo360, Inc.",
-       [3]byte{0, 28, 9}:      "SAE Electronic Co.,Ltd.",
-       [3]byte{0, 28, 10}:     "Shenzhen AEE Technology Co.,Ltd.",
-       [3]byte{0, 28, 11}:     "SmartAnt Telecom",
-       [3]byte{0, 28, 12}:     "TANITA Corporation",
-       [3]byte{0, 28, 13}:     "G-Technology, Inc.",
-       [3]byte{0, 28, 14}:     "Cisco Systems, Inc",
-       [3]byte{0, 28, 15}:     "Cisco Systems, Inc",
-       [3]byte{0, 28, 16}:     "Cisco-Linksys, LLC",
-       [3]byte{0, 28, 17}:     "ARRIS Group, Inc.",
-       [3]byte{0, 28, 18}:     "ARRIS Group, Inc.",
-       [3]byte{0, 28, 19}:     "OPTSYS TECHNOLOGY CO., LTD.",
-       [3]byte{0, 28, 20}:     "VMware, Inc.",
-       [3]byte{0, 28, 21}:     "iPhotonix LLC",
-       [3]byte{0, 28, 22}:     "ThyssenKrupp Elevator",
-       [3]byte{0, 28, 23}:     "Nortel Networks",
-       [3]byte{0, 28, 24}:     "Sicert S.r.L.",
-       [3]byte{0, 28, 25}:     "secunet Security Networks AG",
-       [3]byte{0, 28, 26}:     "Thomas Instrumentation, Inc",
-       [3]byte{0, 28, 27}:     "Hyperstone GmbH",
-       [3]byte{0, 28, 28}:     "Center Communication Systems GmbH",
-       [3]byte{0, 28, 29}:     "CHENZHOU GOSPELL DIGITAL TECHNOLOGY CO.,LTD",
-       [3]byte{0, 28, 30}:     "emtrion GmbH",
-       [3]byte{0, 28, 31}:     "Quest Retail Technology Pty Ltd",
-       [3]byte{0, 28, 32}:     "CLB Benelux",
-       [3]byte{0, 28, 33}:     "Nucsafe Inc.",
-       [3]byte{0, 28, 34}:     "Aeris Elettronica s.r.l.",
-       [3]byte{0, 28, 35}:     "Dell Inc.",
-       [3]byte{0, 28, 36}:     "Formosa Wireless Systems Corp.",
-       [3]byte{0, 28, 37}:     "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{0, 28, 38}:     "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{0, 28, 39}:     "Sunell Electronics Co.",
-       [3]byte{0, 28, 40}:     "Sphairon Technologies GmbH",
-       [3]byte{0, 28, 41}:     "CORE DIGITAL ELECTRONICS CO., LTD",
-       [3]byte{0, 28, 42}:     "Envisacor Technologies Inc.",
-       [3]byte{0, 28, 43}:     "Alertme.com Limited",
-       [3]byte{0, 28, 44}:     "Synapse",
-       [3]byte{0, 28, 45}:     "FlexRadio Systems",
-       [3]byte{0, 28, 46}:     "HPN Supply Chain",
-       [3]byte{0, 28, 47}:     "Pfister GmbH",
-       [3]byte{0, 28, 48}:     "Mode Lighting (UK ) Ltd.",
-       [3]byte{0, 28, 49}:     "Mobile XP Technology Co., LTD",
-       [3]byte{0, 28, 50}:     "Telian Corporation",
-       [3]byte{0, 28, 51}:     "Sutron",
-       [3]byte{0, 28, 52}:     "HUEY CHIAO INTERNATIONAL CO., LTD.",
-       [3]byte{0, 28, 53}:     "Nokia Danmark A/S",
-       [3]byte{0, 28, 54}:     "iNEWiT NV",
-       [3]byte{0, 28, 55}:     "Callpod, Inc.",
-       [3]byte{0, 28, 56}:     "Bio-Rad Laboratories, Inc.",
-       [3]byte{0, 28, 57}:     "S Netsystems Inc.",
-       [3]byte{0, 28, 58}:     "Element Labs, Inc.",
-       [3]byte{0, 28, 59}:     "AmRoad Technology Inc.",
-       [3]byte{0, 28, 60}:     "Seon Design Inc.",
-       [3]byte{0, 28, 61}:     "WaveStorm",
-       [3]byte{0, 28, 62}:     "ECKey Corporation",
-       [3]byte{0, 28, 63}:     "International Police Technologies, Inc.",
-       [3]byte{0, 28, 64}:     "VDG-Security bv",
-       [3]byte{0, 28, 65}:     "scemtec Transponder Technology GmbH",
-       [3]byte{0, 28, 66}:     "Parallels, Inc.",
-       [3]byte{0, 28, 67}:     "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 28, 68}:     "Bosch Security Systems BV",
-       [3]byte{0, 28, 69}:     "Chenbro Micom Co., Ltd.",
-       [3]byte{0, 28, 70}:     "QTUM",
-       [3]byte{0, 28, 71}:     "Hangzhou Hollysys Automation Co., Ltd",
-       [3]byte{0, 28, 72}:     "WiDeFi, Inc.",
-       [3]byte{0, 28, 73}:     "Zoltan Technology Inc.",
-       [3]byte{0, 28, 74}:     "AVM GmbH",
-       [3]byte{0, 28, 75}:     "Gener8, Inc.",
-       [3]byte{0, 28, 76}:     "Petrotest Instruments",
-       [3]byte{0, 28, 77}:     "Aplix IP Holdings Corporation",
-       [3]byte{0, 28, 78}:     "TASA International Limited",
-       [3]byte{0, 28, 79}:     "MACAB AB",
-       [3]byte{0, 28, 80}:     "TCL Technoly Electronics (Huizhou) Co., Ltd.",
-       [3]byte{0, 28, 81}:     "Celeno Communications",
-       [3]byte{0, 28, 82}:     "VISIONEE SRL",
-       [3]byte{0, 28, 83}:     "Synergy Lighting Controls",
-       [3]byte{0, 28, 84}:     "Hillstone Networks Inc",
-       [3]byte{0, 28, 85}:     "Shenzhen Kaifa Technology Co.",
-       [3]byte{0, 28, 86}:     "Pado Systems, Inc.",
-       [3]byte{0, 28, 87}:     "Cisco Systems, Inc",
-       [3]byte{0, 28, 88}:     "Cisco Systems, Inc",
-       [3]byte{0, 28, 89}:     "DEVON IT",
-       [3]byte{0, 28, 90}:     "Advanced Relay Corporation",
-       [3]byte{0, 28, 91}:     "Chubb Electronic Security Systems Ltd",
-       [3]byte{0, 28, 92}:     "Integrated Medical Systems, Inc.",
-       [3]byte{0, 28, 93}:     "Leica Microsystems",
-       [3]byte{0, 28, 94}:     "ASTON France",
-       [3]byte{0, 28, 95}:     "Winland Electronics, Inc.",
-       [3]byte{0, 28, 96}:     "CSP Frontier Technologies,Inc.",
-       [3]byte{0, 28, 97}:     "Galaxy  Microsystems LImited",
-       [3]byte{0, 28, 98}:     "LG Electronics (Mobile Communications)",
-       [3]byte{0, 28, 99}:     "TRUEN",
-       [3]byte{0, 28, 100}:    "Landis+Gyr",
-       [3]byte{0, 28, 101}:    "JoeScan, Inc.",
-       [3]byte{0, 28, 102}:    "UCAMP CO.,LTD",
-       [3]byte{0, 28, 103}:    "Pumpkin Networks, Inc.",
-       [3]byte{0, 28, 104}:    "Anhui Sun Create Electronics Co., Ltd",
-       [3]byte{0, 28, 105}:    "Packet Vision Ltd",
-       [3]byte{0, 28, 106}:    "Weiss Engineering Ltd.",
-       [3]byte{0, 28, 107}:    "COVAX  Co. Ltd",
-       [3]byte{0, 28, 108}:    "30805",
-       [3]byte{0, 28, 109}:    "KYOHRITSU ELECTRONIC INDUSTRY CO., LTD.",
-       [3]byte{0, 28, 110}:    "Newbury Networks, Inc.",
-       [3]byte{0, 28, 111}:    "Emfit Ltd",
-       [3]byte{0, 28, 112}:    "NOVACOMM LTDA",
-       [3]byte{0, 28, 113}:    "Emergent Electronics",
-       [3]byte{0, 28, 114}:    "Mayer & Cie GmbH & Co KG",
-       [3]byte{0, 28, 115}:    "Arista Networks",
-       [3]byte{0, 28, 116}:    "Syswan Technologies Inc.",
-       [3]byte{0, 28, 117}:    "Segnet Ltd.",
-       [3]byte{0, 28, 118}:    "The Wandsworth Group Ltd",
-       [3]byte{0, 28, 119}:    "Prodys",
-       [3]byte{0, 28, 120}:    "WYPLAY SAS",
-       [3]byte{0, 28, 121}:    "Cohesive Financial Technologies LLC",
-       [3]byte{0, 28, 122}:    "Perfectone Netware Company Ltd",
-       [3]byte{0, 28, 123}:    "Castlenet Technology Inc.",
-       [3]byte{0, 28, 124}:    "PERQ SYSTEMS CORPORATION",
-       [3]byte{0, 28, 125}:    "Excelpoint Manufacturing Pte Ltd",
-       [3]byte{0, 28, 126}:    "Toshiba",
-       [3]byte{0, 28, 127}:    "Check Point Software Technologies",
-       [3]byte{0, 28, 128}:    "New Business Division/Rhea-Information CO., LTD.",
-       [3]byte{0, 28, 129}:    "NextGen Venturi LTD",
-       [3]byte{0, 28, 130}:    "Genew Technologies",
-       [3]byte{0, 28, 131}:    "New Level Telecom Co., Ltd.",
-       [3]byte{0, 28, 132}:    "STL Solution Co.,Ltd.",
-       [3]byte{0, 28, 133}:    "Eunicorn",
-       [3]byte{0, 28, 134}:    "Cranite Systems, Inc.",
-       [3]byte{0, 28, 135}:    "Uriver Inc.",
-       [3]byte{0, 28, 136}:    "TRANSYSTEM INC.",
-       [3]byte{0, 28, 137}:    "Force Communications, Inc.",
-       [3]byte{0, 28, 138}:    "Cirrascale Corporation",
-       [3]byte{0, 28, 139}:    "MJ Innovations Ltd.",
-       [3]byte{0, 28, 140}:    "DIAL TECHNOLOGY LTD.",
-       [3]byte{0, 28, 141}:    "Mesa Imaging",
-       [3]byte{0, 28, 142}:    "Alcatel-Lucent IPD",
-       [3]byte{0, 28, 143}:    "Advanced Electronic Design, Inc.",
-       [3]byte{0, 28, 144}:    "Empacket Corporation",
-       [3]byte{0, 28, 145}:    "Gefen Inc.",
-       [3]byte{0, 28, 146}:    "Tervela",
-       [3]byte{0, 28, 147}:    "ExaDigm Inc",
-       [3]byte{0, 28, 148}:    "LI-COR Biosciences",
-       [3]byte{0, 28, 149}:    "Opticomm Corporation",
-       [3]byte{0, 28, 150}:    "Linkwise Technology Pte Ltd",
-       [3]byte{0, 28, 151}:    "Enzytek Technology Inc.,",
-       [3]byte{0, 28, 152}:    "LUCKY TECHNOLOGY (HK) COMPANY LIMITED",
-       [3]byte{0, 28, 153}:    "Shunra Software Ltd.",
-       [3]byte{0, 28, 154}:    "Nokia Danmark A/S",
-       [3]byte{0, 28, 155}:    "FEIG ELECTRONIC GmbH",
-       [3]byte{0, 28, 156}:    "Nortel Networks",
-       [3]byte{0, 28, 157}:    "Liecthi AG",
-       [3]byte{0, 28, 158}:    "Dualtech IT AB",
-       [3]byte{0, 28, 159}:    "Razorstream, LLC",
-       [3]byte{0, 28, 160}:    "Production Resource Group, LLC",
-       [3]byte{0, 28, 161}:    "AKAMAI TECHNOLOGIES, INC.",
-       [3]byte{0, 28, 162}:    "ADB Broadband Italia",
-       [3]byte{0, 28, 163}:    "Terra",
-       [3]byte{0, 28, 164}:    "Sony Mobile Communications AB",
-       [3]byte{0, 28, 165}:    "Zygo Corporation",
-       [3]byte{0, 28, 166}:    "Win4NET",
-       [3]byte{0, 28, 167}:    "International Quartz Limited",
-       [3]byte{0, 28, 168}:    "AirTies Wireless Networks",
-       [3]byte{0, 28, 169}:    "Audiomatica Srl",
-       [3]byte{0, 28, 170}:    "Bellon Pty Ltd",
-       [3]byte{0, 28, 171}:    "Meyer Sound Laboratories, Inc.",
-       [3]byte{0, 28, 172}:    "Qniq Technology Corp.",
-       [3]byte{0, 28, 173}:    "Wuhan Telecommunication Devices Co.,Ltd",
-       [3]byte{0, 28, 174}:    "WiChorus, Inc.",
-       [3]byte{0, 28, 175}:    "Plato Networks Inc.",
-       [3]byte{0, 28, 176}:    "Cisco Systems, Inc",
-       [3]byte{0, 28, 177}:    "Cisco Systems, Inc",
-       [3]byte{0, 28, 178}:    "BPT SPA",
-       [3]byte{0, 28, 179}:    "Apple, Inc.",
-       [3]byte{0, 28, 180}:    "Iridium Satellite LLC",
-       [3]byte{0, 28, 181}:    "Neihua Network Technology Co.,LTD.(NHN)",
-       [3]byte{0, 28, 182}:    "Duzon CNT Co., Ltd.",
-       [3]byte{0, 28, 183}:    "USC DigiArk Corporation",
-       [3]byte{0, 28, 184}:    "CBC Co., Ltd",
-       [3]byte{0, 28, 185}:    "KWANG SUNG ELECTRONICS CO., LTD.",
-       [3]byte{0, 28, 186}:    "VerScient, Inc.",
-       [3]byte{0, 28, 187}:    "MusicianLink",
-       [3]byte{0, 28, 188}:    "CastGrabber, LLC",
-       [3]byte{0, 28, 189}:    "Ezze Mobile Tech., Inc.",
-       [3]byte{0, 28, 190}:    "Nintendo Co., Ltd.",
-       [3]byte{0, 28, 191}:    "Intel Corporate",
-       [3]byte{0, 28, 192}:    "Intel Corporate",
-       [3]byte{0, 28, 193}:    "ARRIS Group, Inc.",
-       [3]byte{0, 28, 194}:    "Part II Research, Inc.",
-       [3]byte{0, 28, 195}:    "ARRIS Group, Inc.",
-       [3]byte{0, 28, 196}:    "Hewlett Packard",
-       [3]byte{0, 28, 197}:    "3Com Ltd",
-       [3]byte{0, 28, 198}:    "ProStor Systems",
-       [3]byte{0, 28, 199}:    "Rembrandt Technologies, LLC d/b/a REMSTREAM",
-       [3]byte{0, 28, 200}:    "INDUSTRONIC Industrie-Electronic GmbH & Co. KG",
-       [3]byte{0, 28, 201}:    "Kaise Electronic Technology Co., Ltd.",
-       [3]byte{0, 28, 202}:    "Shanghai Gaozhi Science & Technology Development Co.",
-       [3]byte{0, 28, 203}:    "Forth Corporation Public Company Limited",
-       [3]byte{0, 28, 204}:    "BlackBerry RTS",
-       [3]byte{0, 28, 205}:    "Alektrona Corporation",
-       [3]byte{0, 28, 206}:    "By Techdesign",
-       [3]byte{0, 28, 207}:    "LIMETEK",
-       [3]byte{0, 28, 208}:    "Circleone Co.,Ltd.",
-       [3]byte{0, 28, 209}:    "Waves Audio LTD",
-       [3]byte{0, 28, 210}:    "King Champion (Hong Kong) Limited",
-       [3]byte{0, 28, 211}:    "ZP Engineering SEL",
-       [3]byte{0, 28, 212}:    "Nokia Danmark A/S",
-       [3]byte{0, 28, 213}:    "ZeeVee, Inc.",
-       [3]byte{0, 28, 214}:    "Nokia Danmark A/S",
-       [3]byte{0, 28, 215}:    "Harman/Becker Automotive Systems GmbH",
-       [3]byte{0, 28, 216}:    "BlueAnt Wireless",
-       [3]byte{0, 28, 217}:    "GlobalTop Technology Inc.",
-       [3]byte{0, 28, 218}:    "Exegin Technologies Limited",
-       [3]byte{0, 28, 219}:    "CARPOINT CO.,LTD",
-       [3]byte{0, 28, 220}:    "Custom Computer Services, Inc.",
-       [3]byte{0, 28, 221}:    "COWBELL ENGINEERING CO., LTD.",
-       [3]byte{0, 28, 222}:    "Interactive Multimedia eXchange Inc.",
-       [3]byte{0, 28, 223}:    "Belkin International Inc.",
-       [3]byte{0, 28, 224}:    "DASAN TPS",
-       [3]byte{0, 28, 225}:    "INDRA SISTEMAS, S.A.",
-       [3]byte{0, 28, 226}:    "Attero Tech, LLC.",
-       [3]byte{0, 28, 227}:    "Optimedical Systems",
-       [3]byte{0, 28, 228}:    "EleSy JSC",
-       [3]byte{0, 28, 229}:    "MBS Electronic Systems GmbH",
-       [3]byte{0, 28, 230}:    "INNES",
-       [3]byte{0, 28, 231}:    "Rocon PLC Research Centre",
-       [3]byte{0, 28, 232}:    "Cummins Inc",
-       [3]byte{0, 28, 233}:    "Galaxy Technology Limited",
-       [3]byte{0, 28, 234}:    "Scientific-Atlanta, Inc",
-       [3]byte{0, 28, 235}:    "Nortel Networks",
-       [3]byte{0, 28, 236}:    "Mobilesoft (Aust.) Pty Ltd",
-       [3]byte{0, 28, 237}:    "ENVIRONNEMENT SA",
-       [3]byte{0, 28, 238}:    "SHARP Corporation",
-       [3]byte{0, 28, 239}:    "Primax Electronics Ltd.",
-       [3]byte{0, 28, 240}:    "D-Link Corporation",
-       [3]byte{0, 28, 241}:    "SUPoX Technology Co. , LTD.",
-       [3]byte{0, 28, 242}:    "Tenlon Technology Co.,Ltd.",
-       [3]byte{0, 28, 243}:    "EVS BROADCAST EQUIPMENT",
-       [3]byte{0, 28, 244}:    "Media Technology Systems Inc",
-       [3]byte{0, 28, 245}:    "Wiseblue Technology Limited",
-       [3]byte{0, 28, 246}:    "Cisco Systems, Inc",
-       [3]byte{0, 28, 247}:    "AudioScience",
-       [3]byte{0, 28, 248}:    "Parade Technologies, Ltd.",
-       [3]byte{0, 28, 249}:    "Cisco Systems, Inc",
-       [3]byte{0, 28, 250}:    "Alarm.com",
-       [3]byte{0, 28, 251}:    "ARRIS Group, Inc.",
-       [3]byte{0, 28, 252}:    "Sumitomo Electric Industries,Ltd",
-       [3]byte{0, 28, 253}:    "Universal Electronics, Inc.",
-       [3]byte{0, 28, 254}:    "Quartics Inc",
-       [3]byte{0, 28, 255}:    "Napera Networks Inc",
-       [3]byte{0, 29, 0}:      "Brivo Systems, LLC",
-       [3]byte{0, 29, 1}:      "Neptune Digital",
-       [3]byte{0, 29, 2}:      "Cybertech Telecom Development",
-       [3]byte{0, 29, 3}:      "Design Solutions Inc.",
-       [3]byte{0, 29, 4}:      "Zipit Wireless, Inc.",
-       [3]byte{0, 29, 5}:      "Eaton Corporation",
-       [3]byte{0, 29, 6}:      "HM Electronics, Inc.",
-       [3]byte{0, 29, 7}:      "Shenzhen Sang Fei Consumer Communications Co.,Ltd",
-       [3]byte{0, 29, 8}:      "Jiangsu Yinhe  Electronics Co.,Ltd.",
-       [3]byte{0, 29, 9}:      "Dell Inc.",
-       [3]byte{0, 29, 10}:     "Davis Instruments, Inc.",
-       [3]byte{0, 29, 11}:     "Power Standards Lab",
-       [3]byte{0, 29, 12}:     "MobileCompia",
-       [3]byte{0, 29, 13}:     "Sony Interactive Entertainment Inc.",
-       [3]byte{0, 29, 14}:     "Agapha Technology co., Ltd.",
-       [3]byte{0, 29, 15}:     "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{0, 29, 16}:     "LightHaus Logic, Inc.",
-       [3]byte{0, 29, 17}:     "Analogue & Micro Ltd",
-       [3]byte{0, 29, 18}:     "ROHM CO., LTD.",
-       [3]byte{0, 29, 19}:     "NextGTV",
-       [3]byte{0, 29, 20}:     "SPERADTONE INFORMATION TECHNOLOGY LIMITED",
-       [3]byte{0, 29, 21}:     "Shenzhen Dolphin Electronic Co., Ltd",
-       [3]byte{0, 29, 22}:     "SFR",
-       [3]byte{0, 29, 23}:     "Digital Sky Corporation",
-       [3]byte{0, 29, 24}:     "Power Innovation GmbH",
-       [3]byte{0, 29, 25}:     "Arcadyan Technology Corporation",
-       [3]byte{0, 29, 26}:     "OvisLink S.A.",
-       [3]byte{0, 29, 27}:     "Sangean Electronics Inc.",
-       [3]byte{0, 29, 28}:     "Gennet s.a.",
-       [3]byte{0, 29, 29}:     "Inter-M Corporation",
-       [3]byte{0, 29, 30}:     "KYUSHU TEN CO.,LTD",
-       [3]byte{0, 29, 31}:     "Siauliu Tauro Televizoriai, JSC",
-       [3]byte{0, 29, 32}:     "Comtrend Corporation",
-       [3]byte{0, 29, 33}:     "Alcad SL",
-       [3]byte{0, 29, 34}:     "Foss Analytical A/S",
-       [3]byte{0, 29, 35}:     "SENSUS",
-       [3]byte{0, 29, 36}:     "Aclara Power-Line Systems Inc.",
-       [3]byte{0, 29, 37}:     "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 29, 38}:     "Rockridgesound Technology Co.",
-       [3]byte{0, 29, 39}:     "NAC-INTERCOM",
-       [3]byte{0, 29, 40}:     "Sony Mobile Communications AB",
-       [3]byte{0, 29, 41}:     "Doro AB",
-       [3]byte{0, 29, 42}:     "SHENZHEN BUL-TECH CO.,LTD.",
-       [3]byte{0, 29, 43}:     "Wuhan Pont Technology CO. , LTD",
-       [3]byte{0, 29, 44}:     "Wavetrend Technologies (Pty) Limited",
-       [3]byte{0, 29, 45}:     "Pylone, Inc.",
-       [3]byte{0, 29, 46}:     "Ruckus Wireless",
-       [3]byte{0, 29, 47}:     "QuantumVision Corporation",
-       [3]byte{0, 29, 48}:     "YX Wireless S.A.",
-       [3]byte{0, 29, 49}:     "HIGHPRO INTERNATIONAL R&D CO,.LTD.",
-       [3]byte{0, 29, 50}:     "Longkay Communication & Technology (Shanghai) Co. Ltd",
-       [3]byte{0, 29, 51}:     "Maverick Systems Inc.",
-       [3]byte{0, 29, 52}:     "SYRIS Technology Corp",
-       [3]byte{0, 29, 53}:     "Viconics Electronics Inc.",
-       [3]byte{0, 29, 54}:     "ELECTRONICS CORPORATION OF INDIA LIMITED",
-       [3]byte{0, 29, 55}:     "Thales-Panda Transportation System",
-       [3]byte{0, 29, 56}:     "Seagate Technology",
-       [3]byte{0, 29, 57}:     "MOOHADIGITAL CO., LTD",
-       [3]byte{0, 29, 58}:     "mh acoustics LLC",
-       [3]byte{0, 29, 59}:     "Nokia Danmark A/S",
-       [3]byte{0, 29, 60}:     "Muscle Corporation",
-       [3]byte{0, 29, 61}:     "Avidyne Corporation",
-       [3]byte{0, 29, 62}:     "SAKA TECHNO SCIENCE CO.,LTD",
-       [3]byte{0, 29, 63}:     "Mitron Pty Ltd",
-       [3]byte{0, 29, 64}:     "Intel – GE Care Innovations LLC",
-       [3]byte{0, 29, 65}:     "Hardy Instruments",
-       [3]byte{0, 29, 66}:     "Nortel Networks",
-       [3]byte{0, 29, 67}:     "Shenzhen G-link Digital Technology Co., Ltd.",
-       [3]byte{0, 29, 68}:     "Krohne",
-       [3]byte{0, 29, 69}:     "Cisco Systems, Inc",
-       [3]byte{0, 29, 70}:     "Cisco Systems, Inc",
-       [3]byte{0, 29, 71}:     "Covote GmbH & Co KG",
-       [3]byte{0, 29, 72}:     "Sensor-Technik Wiedemann GmbH",
-       [3]byte{0, 29, 73}:     "Innovation Wireless Inc.",
-       [3]byte{0, 29, 74}:     "Carestream Health, Inc.",
-       [3]byte{0, 29, 75}:     "Grid Connect Inc.",
-       [3]byte{0, 29, 76}:     "Alcatel-Lucent",
-       [3]byte{0, 29, 77}:     "Adaptive Recognition Hungary, Inc",
-       [3]byte{0, 29, 78}:     "TCM Mobile LLC",
-       [3]byte{0, 29, 79}:     "Apple, Inc.",
-       [3]byte{0, 29, 80}:     "SPINETIX SA",
-       [3]byte{0, 29, 81}:     "Babcock & Wilcox Power Generation Group, Inc",
-       [3]byte{0, 29, 82}:     "Defzone B.V.",
-       [3]byte{0, 29, 83}:     "S&O Electronics (Malaysia) Sdn. Bhd.",
-       [3]byte{0, 29, 84}:     "Sunnic Technology & Merchandise INC.",
-       [3]byte{0, 29, 85}:     "ZANTAZ, Inc",
-       [3]byte{0, 29, 86}:     "Kramer Electronics Ltd.",
-       [3]byte{0, 29, 87}:     "CAETEC Messtechnik",
-       [3]byte{0, 29, 88}:     "CQ Inc",
-       [3]byte{0, 29, 89}:     "Mitra Energy & Infrastructure",
-       [3]byte{0, 29, 90}:     "2Wire Inc",
-       [3]byte{0, 29, 91}:     "Tecvan Informática Ltda",
-       [3]byte{0, 29, 92}:     "Tom Communication Industrial Co.,Ltd.",
-       [3]byte{0, 29, 93}:     "Control Dynamics Pty. Ltd.",
-       [3]byte{0, 29, 94}:     "COMING MEDIA CORP.",
-       [3]byte{0, 29, 95}:     "OverSpeed SARL",
-       [3]byte{0, 29, 96}:     "ASUSTek COMPUTER INC.",
-       [3]byte{0, 29, 97}:     "BIJ Corporation",
-       [3]byte{0, 29, 98}:     "InPhase Technologies",
-       [3]byte{0, 29, 99}:     "Miele & Cie. KG",
-       [3]byte{0, 29, 100}:    "Adam Communications Systems Int Ltd",
-       [3]byte{0, 29, 101}:    "Microwave Radio Communications",
-       [3]byte{0, 29, 102}:    "Hyundai Telecom",
-       [3]byte{0, 29, 103}:    "AMEC",
-       [3]byte{0, 29, 104}:    "Thomson Telecom Belgium",
-       [3]byte{0, 29, 105}:    "Knorr-Bremse IT-Services GmbH",
-       [3]byte{0, 29, 106}:    "Alpha Networks Inc.",
-       [3]byte{0, 29, 107}:    "ARRIS Group, Inc.",
-       [3]byte{0, 29, 108}:    "ClariPhy Communications, Inc.",
-       [3]byte{0, 29, 109}:    "Confidant International LLC",
-       [3]byte{0, 29, 110}:    "Nokia Danmark A/S",
-       [3]byte{0, 29, 111}:    "Chainzone Technology Co., Ltd",
-       [3]byte{0, 29, 112}:    "Cisco Systems, Inc",
-       [3]byte{0, 29, 113}:    "Cisco Systems, Inc",
-       [3]byte{0, 29, 114}:    "Wistron Corporation",
-       [3]byte{0, 29, 115}:    "BUFFALO.INC",
-       [3]byte{0, 29, 116}:    "Tianjin China-Silicon Microelectronics Co., Ltd.",
-       [3]byte{0, 29, 117}:    "Radioscape PLC",
-       [3]byte{0, 29, 118}:    "Eyeheight Ltd.",
-       [3]byte{0, 29, 119}:    "NSGate",
-       [3]byte{0, 29, 120}:    "Invengo Information Technology Co.,Ltd",
-       [3]byte{0, 29, 121}:    "SIGNAMAX LLC",
-       [3]byte{0, 29, 122}:    "Wideband Semiconductor, Inc.",
-       [3]byte{0, 29, 123}:    "Ice Energy, Inc.",
-       [3]byte{0, 29, 124}:    "ABE Elettronica S.p.A.",
-       [3]byte{0, 29, 125}:    "GIGA-BYTE TECHNOLOGY CO.,LTD.",
-       [3]byte{0, 29, 126}:    "Cisco-Linksys, LLC",
-       [3]byte{0, 29, 127}:    "Tekron International Ltd",
-       [3]byte{0, 29, 128}:    "Beijing Huahuan Eletronics Co.,Ltd",
-       [3]byte{0, 29, 129}:    "GUANGZHOU GATEWAY ELECTRONICS CO., LTD",
-       [3]byte{0, 29, 130}:    "GN Netcom A/S",
-       [3]byte{0, 29, 131}:    "Emitech Corporation",
-       [3]byte{0, 29, 132}:    "Gateway, Inc.",
-       [3]byte{0, 29, 133}:    "Call Direct Cellular Solutions",
-       [3]byte{0, 29, 134}:    "Shinwa Industries(China) Ltd.",
-       [3]byte{0, 29, 135}:    "VigTech Labs Sdn Bhd",
-       [3]byte{0, 29, 136}:    "Clearwire",
-       [3]byte{0, 29, 137}:    "VaultStor Corporation",
-       [3]byte{0, 29, 138}:    "TechTrex Inc",
-       [3]byte{0, 29, 139}:    "ADB Broadband Italia",
-       [3]byte{0, 29, 140}:    "La Crosse Technology LTD",
-       [3]byte{0, 29, 141}:    "Raytek GmbH",
-       [3]byte{0, 29, 142}:    "Alereon, Inc.",
-       [3]byte{0, 29, 143}:    "PureWave Networks",
-       [3]byte{0, 29, 144}:    "EMCO Flow Systems",
-       [3]byte{0, 29, 145}:    "Digitize, Inc",
-       [3]byte{0, 29, 146}:    "MICRO-STAR INT'L CO.,LTD.",
-       [3]byte{0, 29, 147}:    "Modacom",
-       [3]byte{0, 29, 148}:    "Climax Technology Co., Ltd",
-       [3]byte{0, 29, 149}:    "Flash, Inc.",
-       [3]byte{0, 29, 150}:    "WatchGuard Video",
-       [3]byte{0, 29, 151}:    "Alertus Technologies LLC",
-       [3]byte{0, 29, 152}:    "Nokia Danmark A/S",
-       [3]byte{0, 29, 153}:    "Cyan Optic, Inc.",
-       [3]byte{0, 29, 154}:    "GODEX INTERNATIONAL CO., LTD",
-       [3]byte{0, 29, 155}:    "Hokuyo Automatic Co., Ltd.",
-       [3]byte{0, 29, 156}:    "Rockwell Automation",
-       [3]byte{0, 29, 157}:    "ARTJOY INTERNATIONAL LIMITED",
-       [3]byte{0, 29, 158}:    "AXION TECHNOLOGIES",
-       [3]byte{0, 29, 159}:    "MATT   R.P.Traczynscy Sp.J.",
-       [3]byte{0, 29, 160}:    "Heng Yu Electronic Manufacturing Company Limited",
-       [3]byte{0, 29, 161}:    "Cisco Systems, Inc",
-       [3]byte{0, 29, 162}:    "Cisco Systems, Inc",
-       [3]byte{0, 29, 163}:    "SabiOso",
-       [3]byte{0, 29, 164}:    "Hangzhou System Technology CO., LTD",
-       [3]byte{0, 29, 165}:    "WB Electronics",
-       [3]byte{0, 29, 166}:    "Media Numerics Limited",
-       [3]byte{0, 29, 167}:    "Seamless Internet",
-       [3]byte{0, 29, 168}:    "Takahata Electronics Co.,Ltd",
-       [3]byte{0, 29, 169}:    "Castles Technology, Co., LTD",
-       [3]byte{0, 29, 170}:    "DrayTek Corp.",
-       [3]byte{0, 29, 171}:    "SwissQual License AG",
-       [3]byte{0, 29, 172}:    "Gigamon Systems LLC",
-       [3]byte{0, 29, 173}:    "Sinotech Engineering Consultants, Inc.  Geotechnical Enginee",
-       [3]byte{0, 29, 174}:    "CHANG TSENG TECHNOLOGY CO., LTD",
-       [3]byte{0, 29, 175}:    "Nortel Networks",
-       [3]byte{0, 29, 176}:    "FuJian HengTong Information Technology Co.,Ltd",
-       [3]byte{0, 29, 177}:    "Crescendo Networks",
-       [3]byte{0, 29, 178}:    "HOKKAIDO ELECTRIC ENGINEERING CO.,LTD.",
-       [3]byte{0, 29, 179}:    "HPN Supply Chain",
-       [3]byte{0, 29, 180}:    "KUMHO ENG CO.,LTD",
-       [3]byte{0, 29, 181}:    "Juniper Networks",
-       [3]byte{0, 29, 182}:    "BestComm Networks, Inc.",
-       [3]byte{0, 29, 183}:    "Tendril Networks, Inc.",
-       [3]byte{0, 29, 184}:    "Intoto Inc.",
-       [3]byte{0, 29, 185}:    "Wellspring Wireless",
-       [3]byte{0, 29, 186}:    "Sony Corporation",
-       [3]byte{0, 29, 187}:    "Dynamic System Electronics Corp.",
-       [3]byte{0, 29, 188}:    "Nintendo Co., Ltd.",
-       [3]byte{0, 29, 189}:    "Versamed Inc.",
-       [3]byte{0, 29, 190}:    "ARRIS Group, Inc.",
-       [3]byte{0, 29, 191}:    "Radiient Technologies, Inc.",
-       [3]byte{0, 29, 192}:    "Enphase Energy",
-       [3]byte{0, 29, 193}:    "Audinate Pty L",
-       [3]byte{0, 29, 194}:    "XORTEC OY",
-       [3]byte{0, 29, 195}:    "RIKOR TV, Ltd",
-       [3]byte{0, 29, 196}:    "AIOI Systems Co., Ltd.",
-       [3]byte{0, 29, 197}:    "Beijing Jiaxun Feihong Electricial Co., Ltd.",
-       [3]byte{0, 29, 198}:    "SNR Inc.",
-       [3]byte{0, 29, 199}:    "L-3 Communications Geneva Aerospace",
-       [3]byte{0, 29, 200}:    "Navionics Research Inc., dba SCADAmetrics",
-       [3]byte{0, 29, 201}:    "GainSpan Corp.",
-       [3]byte{0, 29, 202}:    "PAV Electronics Limited",
-       [3]byte{0, 29, 203}:    "Exéns Development Oy",
-       [3]byte{0, 29, 204}:    "Ayon Cyber Security, Inc",
-       [3]byte{0, 29, 205}:    "ARRIS Group, Inc.",
-       [3]byte{0, 29, 206}:    "ARRIS Group, Inc.",
-       [3]byte{0, 29, 207}:    "ARRIS Group, Inc.",
-       [3]byte{0, 29, 208}:    "ARRIS Group, Inc.",
-       [3]byte{0, 29, 209}:    "ARRIS Group, Inc.",
-       [3]byte{0, 29, 210}:    "ARRIS Group, Inc.",
-       [3]byte{0, 29, 211}:    "ARRIS Group, Inc.",
-       [3]byte{0, 29, 212}:    "ARRIS Group, Inc.",
-       [3]byte{0, 29, 213}:    "ARRIS Group, Inc.",
-       [3]byte{0, 29, 214}:    "ARRIS Group, Inc.",
-       [3]byte{0, 29, 215}:    "Algolith",
-       [3]byte{0, 29, 216}:    "Microsoft Corporation",
-       [3]byte{0, 29, 217}:    "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{0, 29, 218}:    "Mikroelektronika spol. s r. o.",
-       [3]byte{0, 29, 219}:    "C-BEL Corporation",
-       [3]byte{0, 29, 220}:    "HangZhou DeChangLong Tech&Info Co.,Ltd",
-       [3]byte{0, 29, 221}:    "DAT H.K. LIMITED",
-       [3]byte{0, 29, 222}:    "Zhejiang Broadcast&Television Technology Co.,Ltd.",
-       [3]byte{0, 29, 223}:    "Sunitec Enterprise Co., Ltd.",
-       [3]byte{0, 29, 224}:    "Intel Corporate",
-       [3]byte{0, 29, 225}:    "Intel Corporate",
-       [3]byte{0, 29, 226}:    "Radionor Communications",
-       [3]byte{0, 29, 227}:    "Intuicom",
-       [3]byte{0, 29, 228}:    "Visioneered Image Systems",
-       [3]byte{0, 29, 229}:    "Cisco Systems, Inc",
-       [3]byte{0, 29, 230}:    "Cisco Systems, Inc",
-       [3]byte{0, 29, 231}:    "Marine Sonic Technology, Ltd.",
-       [3]byte{0, 29, 232}:    "Nikko Denki Tsushin Corporation(NDTC)",
-       [3]byte{0, 29, 233}:    "Nokia Danmark A/S",
-       [3]byte{0, 29, 234}:    "Commtest Instruments Ltd",
-       [3]byte{0, 29, 235}:    "DINEC International",
-       [3]byte{0, 29, 236}:    "Marusys",
-       [3]byte{0, 29, 237}:    "Grid Net, Inc.",
-       [3]byte{0, 29, 238}:    "NEXTVISION SISTEMAS DIGITAIS DE TELEVISÃO LTDA.",
-       [3]byte{0, 29, 239}:    "TRIMM, INC.",
-       [3]byte{0, 29, 240}:    "Vidient Systems, Inc.",
-       [3]byte{0, 29, 241}:    "Intego Systems, Inc.",
-       [3]byte{0, 29, 242}:    "Netflix, Inc.",
-       [3]byte{0, 29, 243}:    "SBS Science & Technology Co., Ltd",
-       [3]byte{0, 29, 244}:    "Magellan Technology Pty Limited",
-       [3]byte{0, 29, 245}:    "Sunshine Co,LTD",
-       [3]byte{0, 29, 246}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 29, 247}:    "R. STAHL Schaltgeräte GmbH",
-       [3]byte{0, 29, 248}:    "Webpro Vision Technology Corporation",
-       [3]byte{0, 29, 249}:    "Cybiotronics (Far East) Limited",
-       [3]byte{0, 29, 250}:    "Fujian LANDI Commercial Equipment Co.,Ltd",
-       [3]byte{0, 29, 251}:    "NETCLEUS Systems Corporation",
-       [3]byte{0, 29, 252}:    "KSIC",
-       [3]byte{0, 29, 253}:    "Nokia Danmark A/S",
-       [3]byte{0, 29, 254}:    "Palm, Inc",
-       [3]byte{0, 29, 255}:    "Network Critical Solutions Ltd",
-       [3]byte{0, 30, 0}:      "Shantou Institute of Ultrasonic Instruments",
-       [3]byte{0, 30, 1}:      "Renesas Technology Sales Co., Ltd.",
-       [3]byte{0, 30, 2}:      "Sougou Keikaku Kougyou Co.,Ltd.",
-       [3]byte{0, 30, 3}:      "LiComm Co., Ltd.",
-       [3]byte{0, 30, 4}:      "Hanson Research Corporation",
-       [3]byte{0, 30, 5}:      "Xseed Technologies & Computing",
-       [3]byte{0, 30, 6}:      "WIBRAIN",
-       [3]byte{0, 30, 7}:      "Winy Technology Co., Ltd.",
-       [3]byte{0, 30, 8}:      "Centec Networks Inc",
-       [3]byte{0, 30, 9}:      "ZEFATEK Co.,LTD",
-       [3]byte{0, 30, 10}:     "Syba Tech Limited",
-       [3]byte{0, 30, 11}:     "Hewlett Packard",
-       [3]byte{0, 30, 12}:     "Sherwood Information Partners, Inc.",
-       [3]byte{0, 30, 13}:     "Micran Ltd.",
-       [3]byte{0, 30, 14}:     "MAXI VIEW HOLDINGS LIMITED",
-       [3]byte{0, 30, 15}:     "Briot International",
-       [3]byte{0, 30, 16}:     "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{0, 30, 17}:     "ELELUX INTERNATIONAL LTD",
-       [3]byte{0, 30, 18}:     "Ecolab",
-       [3]byte{0, 30, 19}:     "Cisco Systems, Inc",
-       [3]byte{0, 30, 20}:     "Cisco Systems, Inc",
-       [3]byte{0, 30, 21}:     "Beech Hill Electronics",
-       [3]byte{0, 30, 22}:     "Keytronix",
-       [3]byte{0, 30, 23}:     "STN BV",
-       [3]byte{0, 30, 24}:     "Radio Activity srl",
-       [3]byte{0, 30, 25}:     "GTRI",
-       [3]byte{0, 30, 26}:     "Best Source Taiwan Inc.",
-       [3]byte{0, 30, 27}:     "Digital Stream Technology, Inc.",
-       [3]byte{0, 30, 28}:     "SWS Australia Pty Limited",
-       [3]byte{0, 30, 29}:     "East Coast Datacom, Inc.",
-       [3]byte{0, 30, 30}:     "Honeywell Life Safety",
-       [3]byte{0, 30, 31}:     "Nortel Networks",
-       [3]byte{0, 30, 32}:     "Intertain Inc.",
-       [3]byte{0, 30, 33}:     "Qisda Corporation",
-       [3]byte{0, 30, 34}:     "ARVOO Imaging Products BV",
-       [3]byte{0, 30, 35}:     "Electronic Educational Devices, Inc",
-       [3]byte{0, 30, 36}:     "Zhejiang Bell Technology Co.,ltd",
-       [3]byte{0, 30, 37}:     "INTEK DIGITAL",
-       [3]byte{0, 30, 38}:     "Digifriends Co. Ltd",
-       [3]byte{0, 30, 39}:     "SBN TECH Co.,Ltd.",
-       [3]byte{0, 30, 40}:     "Lumexis Corporation",
-       [3]byte{0, 30, 41}:     "Hypertherm Inc",
-       [3]byte{0, 30, 42}:     "NETGEAR",
-       [3]byte{0, 30, 43}:     "Radio Systems Design, Inc.",
-       [3]byte{0, 30, 44}:     "CyVerse Corporation",
-       [3]byte{0, 30, 45}:     "STIM",
-       [3]byte{0, 30, 46}:     "SIRTI S.p.A.",
-       [3]byte{0, 30, 47}:     "DiMoto Pty Ltd",
-       [3]byte{0, 30, 48}:     "Shireen Inc",
-       [3]byte{0, 30, 49}:     "INFOMARK CO.,LTD.",
-       [3]byte{0, 30, 50}:     "Zensys",
-       [3]byte{0, 30, 51}:     "INVENTEC Corporation",
-       [3]byte{0, 30, 52}:     "CryptoMetrics",
-       [3]byte{0, 30, 53}:     "Nintendo Co., Ltd.",
-       [3]byte{0, 30, 54}:     "IPTE",
-       [3]byte{0, 30, 55}:     "Universal Global Scientific Industrial Co., Ltd.",
-       [3]byte{0, 30, 56}:     "Bluecard Software Technology Co., Ltd.",
-       [3]byte{0, 30, 57}:     "Comsys Communication Ltd.",
-       [3]byte{0, 30, 58}:     "Nokia Danmark A/S",
-       [3]byte{0, 30, 59}:     "Nokia Danmark A/S",
-       [3]byte{0, 30, 60}:     "Lyngbox Media AB",
-       [3]byte{0, 30, 61}:     "ALPS ELECTRIC CO.,LTD.",
-       [3]byte{0, 30, 62}:     "KMW Inc.",
-       [3]byte{0, 30, 63}:     "TrellisWare Technologies, Inc.",
-       [3]byte{0, 30, 64}:     "Shanghai DareGlobal Technologies Co.,Ltd",
-       [3]byte{0, 30, 65}:     "Microwave Communication & Component, Inc.",
-       [3]byte{0, 30, 66}:     "Teltonika",
-       [3]byte{0, 30, 67}:     "AISIN AW CO.,LTD.",
-       [3]byte{0, 30, 68}:     "SANTEC",
-       [3]byte{0, 30, 69}:     "Sony Mobile Communications AB",
-       [3]byte{0, 30, 70}:     "ARRIS Group, Inc.",
-       [3]byte{0, 30, 71}:     "PT. Hariff Daya Tunggal Engineering",
-       [3]byte{0, 30, 72}:     "Wi-Links",
-       [3]byte{0, 30, 73}:     "Cisco Systems, Inc",
-       [3]byte{0, 30, 74}:     "Cisco Systems, Inc",
-       [3]byte{0, 30, 75}:     "City Theatrical",
-       [3]byte{0, 30, 76}:     "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{0, 30, 77}:     "Welkin Sciences, LLC",
-       [3]byte{0, 30, 78}:     "DAKO EDV-Ingenieur- und Systemhaus GmbH",
-       [3]byte{0, 30, 79}:     "Dell Inc.",
-       [3]byte{0, 30, 80}:     "BATTISTONI RESEARCH",
-       [3]byte{0, 30, 81}:     "Converter Industry Srl",
-       [3]byte{0, 30, 82}:     "Apple, Inc.",
-       [3]byte{0, 30, 83}:     "Further Tech Co., LTD",
-       [3]byte{0, 30, 84}:     "TOYO ELECTRIC Corporation",
-       [3]byte{0, 30, 85}:     "COWON SYSTEMS,Inc.",
-       [3]byte{0, 30, 86}:     "Bally Wulff Entertainment GmbH",
-       [3]byte{0, 30, 87}:     "ALCOMA, spol. s r.o.",
-       [3]byte{0, 30, 88}:     "D-Link Corporation",
-       [3]byte{0, 30, 89}:     "Silicon Turnkey Express, LLC",
-       [3]byte{0, 30, 90}:     "ARRIS Group, Inc.",
-       [3]byte{0, 30, 91}:     "Unitron Company, Inc.",
-       [3]byte{0, 30, 92}:     "RB GeneralEkonomik",
-       [3]byte{0, 30, 93}:     "Holosys d.o.o.",
-       [3]byte{0, 30, 94}:     "COmputime Ltd.",
-       [3]byte{0, 30, 95}:     "KwikByte, LLC",
-       [3]byte{0, 30, 96}:     "Digital Lighting Systems, Inc",
-       [3]byte{0, 30, 97}:     "ITEC GmbH",
-       [3]byte{0, 30, 98}:     "Siemon",
-       [3]byte{0, 30, 99}:     "Vibro-Meter SA",
-       [3]byte{0, 30, 100}:    "Intel Corporate",
-       [3]byte{0, 30, 101}:    "Intel Corporate",
-       [3]byte{0, 30, 102}:    "RESOL Elektronische Regelungen GmbH",
-       [3]byte{0, 30, 103}:    "Intel Corporate",
-       [3]byte{0, 30, 104}:    "QUANTA COMPUTER INC.",
-       [3]byte{0, 30, 105}:    "Thomson Inc.",
-       [3]byte{0, 30, 106}:    "Beijing Bluexon Technology Co.,Ltd",
-       [3]byte{0, 30, 107}:    "Cisco SPVTG",
-       [3]byte{0, 30, 108}:    "Opaque Systems",
-       [3]byte{0, 30, 109}:    "IT R&D Center",
-       [3]byte{0, 30, 110}:    "Shenzhen First Mile Communications Ltd",
-       [3]byte{0, 30, 111}:    "Magna-Power Electronics, Inc.",
-       [3]byte{0, 30, 112}:    "Cobham Defence Communications Ltd",
-       [3]byte{0, 30, 113}:    "MIrcom Group of Companies",
-       [3]byte{0, 30, 114}:    "PCS",
-       [3]byte{0, 30, 115}:    "zte corporation",
-       [3]byte{0, 30, 116}:    "Sagemcom Broadband SAS",
-       [3]byte{0, 30, 117}:    "LG Electronics (Mobile Communications)",
-       [3]byte{0, 30, 118}:    "Thermo Fisher Scientific",
-       [3]byte{0, 30, 119}:    "Air2App",
-       [3]byte{0, 30, 120}:    "Owitek Technology Ltd.,",
-       [3]byte{0, 30, 121}:    "Cisco Systems, Inc",
-       [3]byte{0, 30, 122}:    "Cisco Systems, Inc",
-       [3]byte{0, 30, 123}:    "R.I.CO. S.r.l.",
-       [3]byte{0, 30, 124}:    "Taiwick Limited",
-       [3]byte{0, 30, 125}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 30, 126}:    "Nortel Networks",
-       [3]byte{0, 30, 127}:    "CBM of America",
-       [3]byte{0, 30, 128}:    "Last Mile Ltd.",
-       [3]byte{0, 30, 129}:    "CNB Technology Inc.",
-       [3]byte{0, 30, 130}:    "SanDisk Corporation",
-       [3]byte{0, 30, 131}:    "LAN/MAN Standards Association (LMSC)",
-       [3]byte{0, 30, 132}:    "Pika Technologies Inc.",
-       [3]byte{0, 30, 133}:    "Lagotek Corporation",
-       [3]byte{0, 30, 134}:    "MEL Co.,Ltd.",
-       [3]byte{0, 30, 135}:    "Realease Limited",
-       [3]byte{0, 30, 136}:    "ANDOR SYSTEM SUPPORT CO., LTD.",
-       [3]byte{0, 30, 137}:    "CRFS Limited",
-       [3]byte{0, 30, 138}:    "eCopy, Inc",
-       [3]byte{0, 30, 139}:    "Infra Access Korea Co., Ltd.",
-       [3]byte{0, 30, 140}:    "ASUSTek COMPUTER INC.",
-       [3]byte{0, 30, 141}:    "ARRIS Group, Inc.",
-       [3]byte{0, 30, 142}:    "Hunkeler AG",
-       [3]byte{0, 30, 143}:    "CANON INC.",
-       [3]byte{0, 30, 144}:    "Elitegroup Computer Systems Co.,Ltd.",
-       [3]byte{0, 30, 145}:    "KIMIN Electronic Co., Ltd.",
-       [3]byte{0, 30, 146}:    "JEULIN S.A.",
-       [3]byte{0, 30, 147}:    "CiriTech Systems Inc",
-       [3]byte{0, 30, 148}:    "SUPERCOM TECHNOLOGY CORPORATION",
-       [3]byte{0, 30, 149}:    "SIGMALINK",
-       [3]byte{0, 30, 150}:    "Sepura Plc",
-       [3]byte{0, 30, 151}:    "Medium Link System Technology CO., LTD,",
-       [3]byte{0, 30, 152}:    "GreenLine Communications",
-       [3]byte{0, 30, 153}:    "Vantanol Industrial Corporation",
-       [3]byte{0, 30, 154}:    "HAMILTON Bonaduz AG",
-       [3]byte{0, 30, 155}:    "San-Eisha, Ltd.",
-       [3]byte{0, 30, 156}:    "Fidustron INC",
-       [3]byte{0, 30, 157}:    "Recall Technologies, Inc.",
-       [3]byte{0, 30, 158}:    "ddm hopt + schuler Gmbh + Co. KG",
-       [3]byte{0, 30, 159}:    "Visioneering Systems, Inc.",
-       [3]byte{0, 30, 160}:    "XLN-t",
-       [3]byte{0, 30, 161}:    "Brunata a/s",
-       [3]byte{0, 30, 162}:    "Symx Systems, Inc.",
-       [3]byte{0, 30, 163}:    "Nokia Danmark A/S",
-       [3]byte{0, 30, 164}:    "Nokia Danmark A/S",
-       [3]byte{0, 30, 165}:    "ROBOTOUS, Inc.",
-       [3]byte{0, 30, 166}:    "Best IT World (India) Pvt. Ltd.",
-       [3]byte{0, 30, 167}:    "Actiontec Electronics, Inc",
-       [3]byte{0, 30, 168}:    "Datang Mobile Communications Equipment CO.,LTD",
-       [3]byte{0, 30, 169}:    "Nintendo Co., Ltd.",
-       [3]byte{0, 30, 170}:    "E-Senza Technologies GmbH",
-       [3]byte{0, 30, 171}:    "TeleWell Oy",
-       [3]byte{0, 30, 172}:    "Armadeus Systems",
-       [3]byte{0, 30, 173}:    "Wingtech Group Limited",
-       [3]byte{0, 30, 174}:    "Continental Automotive Systems Inc.",
-       [3]byte{0, 30, 175}:    "Ophir Optronics Ltd",
-       [3]byte{0, 30, 176}:    "ImesD Electronica S.L.",
-       [3]byte{0, 30, 177}:    "Cryptsoft Pty Ltd",
-       [3]byte{0, 30, 178}:    "LG innotek",
-       [3]byte{0, 30, 179}:    "Primex Wireless",
-       [3]byte{0, 30, 180}:    "UNIFAT TECHNOLOGY LTD.",
-       [3]byte{0, 30, 181}:    "Ever Sparkle Technologies Ltd",
-       [3]byte{0, 30, 182}:    "TAG Heuer SA",
-       [3]byte{0, 30, 183}:    "TBTech, Co., Ltd.",
-       [3]byte{0, 30, 184}:    "Fortis, Inc.",
-       [3]byte{0, 30, 185}:    "Sing Fai Technology Limited",
-       [3]byte{0, 30, 186}:    "High Density Devices AS",
-       [3]byte{0, 30, 187}:    "BLUELIGHT TECHNOLOGY INC.",
-       [3]byte{0, 30, 188}:    "WINTECH AUTOMATION CO.,LTD.",
-       [3]byte{0, 30, 189}:    "Cisco Systems, Inc",
-       [3]byte{0, 30, 190}:    "Cisco Systems, Inc",
-       [3]byte{0, 30, 191}:    "Haas Automation Inc.",
-       [3]byte{0, 30, 192}:    "Microchip Technology Inc.",
-       [3]byte{0, 30, 193}:    "3COM EUROPE LTD",
-       [3]byte{0, 30, 194}:    "Apple, Inc.",
-       [3]byte{0, 30, 195}:    "Kozio, Inc.",
-       [3]byte{0, 30, 196}:    "Celio Corp",
-       [3]byte{0, 30, 197}:    "Middle Atlantic Products Inc",
-       [3]byte{0, 30, 198}:    "Obvius Holdings LLC",
-       [3]byte{0, 30, 199}:    "2Wire Inc",
-       [3]byte{0, 30, 200}:    "Rapid Mobile (Pty) Ltd",
-       [3]byte{0, 30, 201}:    "Dell Inc.",
-       [3]byte{0, 30, 202}:    "Nortel Networks",
-       [3]byte{0, 30, 203}:    "RPC Energoautomatika Ltd",
-       [3]byte{0, 30, 204}:    "CDVI",
-       [3]byte{0, 30, 205}:    "KYLAND Technology Co. LTD",
-       [3]byte{0, 30, 206}:    "BISA Technologies (Hong Kong) Limited",
-       [3]byte{0, 30, 207}:    "PHILIPS ELECTRONICS UK LTD",
-       [3]byte{0, 30, 208}:    "Ingespace",
-       [3]byte{0, 30, 209}:    "Keyprocessor B.V.",
-       [3]byte{0, 30, 210}:    "Ray Shine Video Technology Inc",
-       [3]byte{0, 30, 211}:    "Dot Technology Int'l Co., Ltd.",
-       [3]byte{0, 30, 212}:    "Doble Engineering",
-       [3]byte{0, 30, 213}:    "Tekon-Automatics",
-       [3]byte{0, 30, 214}:    "Alentec & Orion AB",
-       [3]byte{0, 30, 215}:    "H-Stream Wireless, Inc.",
-       [3]byte{0, 30, 216}:    "Digital United Inc.",
-       [3]byte{0, 30, 217}:    "Mitsubishi Precision Co.,LTd.",
-       [3]byte{0, 30, 218}:    "Wesemann Elektrotechniek B.V.",
-       [3]byte{0, 30, 219}:    "Giken Trastem Co., Ltd.",
-       [3]byte{0, 30, 220}:    "Sony Mobile Communications AB",
-       [3]byte{0, 30, 221}:    "WASKO S.A.",
-       [3]byte{0, 30, 222}:    "BYD COMPANY LIMITED",
-       [3]byte{0, 30, 223}:    "Master Industrialization Center Kista",
-       [3]byte{0, 30, 224}:    "Urmet Domus SpA",
-       [3]byte{0, 30, 225}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 30, 226}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 30, 227}:    "T&W Electronics (ShenZhen) Co.,Ltd",
-       [3]byte{0, 30, 228}:    "ACS Solutions France",
-       [3]byte{0, 30, 229}:    "Cisco-Linksys, LLC",
-       [3]byte{0, 30, 230}:    "Shenzhen Advanced Video Info-Tech Co., Ltd.",
-       [3]byte{0, 30, 231}:    "Epic Systems Inc",
-       [3]byte{0, 30, 232}:    "Mytek",
-       [3]byte{0, 30, 233}:    "Stoneridge Electronics AB",
-       [3]byte{0, 30, 234}:    "Sensor Switch, Inc.",
-       [3]byte{0, 30, 235}:    "Talk-A-Phone Co.",
-       [3]byte{0, 30, 236}:    "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
-       [3]byte{0, 30, 237}:    "Adventiq Ltd.",
-       [3]byte{0, 30, 238}:    "ETL Systems Ltd",
-       [3]byte{0, 30, 239}:    "Cantronic International Limited",
-       [3]byte{0, 30, 240}:    "Gigafin Networks",
-       [3]byte{0, 30, 241}:    "Servimat",
-       [3]byte{0, 30, 242}:    "Micro Motion Inc",
-       [3]byte{0, 30, 243}:    "From2",
-       [3]byte{0, 30, 244}:    "L-3 Communications Display Systems",
-       [3]byte{0, 30, 245}:    "Hitek Automated Inc.",
-       [3]byte{0, 30, 246}:    "Cisco Systems, Inc",
-       [3]byte{0, 30, 247}:    "Cisco Systems, Inc",
-       [3]byte{0, 30, 248}:    "Emfinity Inc.",
-       [3]byte{0, 30, 249}:    "Pascom Kommunikations systeme GmbH.",
-       [3]byte{0, 30, 250}:    "PROTEI Ltd.",
-       [3]byte{0, 30, 251}:    "Trio Motion Technology Ltd",
-       [3]byte{0, 30, 252}:    "JSC MASSA-K",
-       [3]byte{0, 30, 253}:    "Microbit 2.0 AB",
-       [3]byte{0, 30, 254}:    "LEVEL s.r.o.",
-       [3]byte{0, 30, 255}:    "Mueller-Elektronik GmbH & Co. KG",
-       [3]byte{0, 31, 0}:      "Nokia Danmark A/S",
-       [3]byte{0, 31, 1}:      "Nokia Danmark A/S",
-       [3]byte{0, 31, 2}:      "Pixelmetrix Corporation Pte Ltd",
-       [3]byte{0, 31, 3}:      "NUM AG",
-       [3]byte{0, 31, 4}:      "Granch Ltd.",
-       [3]byte{0, 31, 5}:      "iTAS Technology Corp.",
-       [3]byte{0, 31, 6}:      "Integrated Dispatch Solutions",
-       [3]byte{0, 31, 7}:      "AZTEQ Mobile",
-       [3]byte{0, 31, 8}:      "RISCO LTD",
-       [3]byte{0, 31, 9}:      "Jastec",
-       [3]byte{0, 31, 10}:     "Nortel Networks",
-       [3]byte{0, 31, 11}:     "Federal State Unitary Enterprise Industrial UnionElectropribor",
-       [3]byte{0, 31, 12}:     "Intelligent Digital Services GmbH",
-       [3]byte{0, 31, 13}:     "L3 Communications - Telemetry West",
-       [3]byte{0, 31, 14}:     "Japan Kyastem Co., Ltd",
-       [3]byte{0, 31, 15}:     "Select Engineered Systems",
-       [3]byte{0, 31, 16}:     "TOLEDO DO BRASIL INDUSTRIA DE BALANCAS  LTDA",
-       [3]byte{0, 31, 17}:     "OPENMOKO, INC.",
-       [3]byte{0, 31, 18}:     "Juniper Networks",
-       [3]byte{0, 31, 19}:     "S.& A.S. Ltd.",
-       [3]byte{0, 31, 20}:     "NexG",
-       [3]byte{0, 31, 21}:     "Bioscrypt Inc",
-       [3]byte{0, 31, 22}:     "Wistron Corporation",
-       [3]byte{0, 31, 23}:     "IDX Company, Ltd.",
-       [3]byte{0, 31, 24}:     "Hakusan.Mfg.Co,.Ltd",
-       [3]byte{0, 31, 25}:     "BEN-RI ELECTRONICA S.A.",
-       [3]byte{0, 31, 26}:     "Prominvest",
-       [3]byte{0, 31, 27}:     "RoyalTek Company Ltd.",
-       [3]byte{0, 31, 28}:     "KOBISHI ELECTRIC Co.,Ltd.",
-       [3]byte{0, 31, 29}:     "Atlas Material Testing Technology LLC",
-       [3]byte{0, 31, 30}:     "Astec Technology Co., Ltd",
-       [3]byte{0, 31, 31}:     "Edimax Technology Co. Ltd.",
-       [3]byte{0, 31, 32}:     "Logitech Europe SA",
-       [3]byte{0, 31, 33}:     "Inner Mongolia Yin An Science & Technology Development Co.,L",
-       [3]byte{0, 31, 34}:     "Source Photonics, Inc.",
-       [3]byte{0, 31, 35}:     "Interacoustics",
-       [3]byte{0, 31, 36}:     "DIGITVIEW TECHNOLOGY CO., LTD.",
-       [3]byte{0, 31, 37}:     "MBS GmbH",
-       [3]byte{0, 31, 38}:     "Cisco Systems, Inc",
-       [3]byte{0, 31, 39}:     "Cisco Systems, Inc",
-       [3]byte{0, 31, 40}:     "HPN Supply Chain",
-       [3]byte{0, 31, 41}:     "Hewlett Packard",
-       [3]byte{0, 31, 42}:     "ACCM",
-       [3]byte{0, 31, 43}:     "Orange Logic",
-       [3]byte{0, 31, 44}:     "Starbridge Networks",
-       [3]byte{0, 31, 45}:     "Electro-Optical Imaging, Inc.",
-       [3]byte{0, 31, 46}:     "Triangle Research Int'l Pte Ltd",
-       [3]byte{0, 31, 47}:     "Berker GmbH & Co. KG",
-       [3]byte{0, 31, 48}:     "Travelping",
-       [3]byte{0, 31, 49}:     "Radiocomp",
-       [3]byte{0, 31, 50}:     "Nintendo Co., Ltd.",
-       [3]byte{0, 31, 51}:     "NETGEAR",
-       [3]byte{0, 31, 52}:     "Lung Hwa Electronics Co., Ltd.",
-       [3]byte{0, 31, 53}:     "AIR802 LLC",
-       [3]byte{0, 31, 54}:     "Bellwin Information Co. Ltd.,",
-       [3]byte{0, 31, 55}:     "Genesis I&C",
-       [3]byte{0, 31, 56}:     "POSITRON",
-       [3]byte{0, 31, 57}:     "Construcciones y Auxiliar de Ferrocarriles, S.A.",
-       [3]byte{0, 31, 58}:     "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{0, 31, 59}:     "Intel Corporate",
-       [3]byte{0, 31, 60}:     "Intel Corporate",
-       [3]byte{0, 31, 61}:     "Qbit GmbH",
-       [3]byte{0, 31, 62}:     "RP-Technik e.K.",
-       [3]byte{0, 31, 63}:     "AVM GmbH",
-       [3]byte{0, 31, 64}:     "Speakercraft Inc.",
-       [3]byte{0, 31, 65}:     "Ruckus Wireless",
-       [3]byte{0, 31, 66}:     "Etherstack plc",
-       [3]byte{0, 31, 67}:     "ENTES ELEKTRONIK",
-       [3]byte{0, 31, 68}:     "GE Transportation Systems",
-       [3]byte{0, 31, 69}:     "Enterasys",
-       [3]byte{0, 31, 70}:     "Nortel Networks",
-       [3]byte{0, 31, 71}:     "MCS Logic Inc.",
-       [3]byte{0, 31, 72}:     "Mojix Inc.",
-       [3]byte{0, 31, 73}:     "Manhattan TV Ltd",
-       [3]byte{0, 31, 74}:     "Albentia Systems S.A.",
-       [3]byte{0, 31, 75}:     "Lineage Power",
-       [3]byte{0, 31, 76}:     "Roseman Engineering Ltd",
-       [3]byte{0, 31, 77}:     "Segnetics LLC",
-       [3]byte{0, 31, 78}:     "ConMed Linvatec",
-       [3]byte{0, 31, 79}:     "Thinkware Co. Ltd.",
-       [3]byte{0, 31, 80}:     "Swissdis AG",
-       [3]byte{0, 31, 81}:     "HD Communications Corp",
-       [3]byte{0, 31, 82}:     "UVT Unternehmensberatung fur Verkehr und Technik GmbH",
-       [3]byte{0, 31, 83}:     "GEMAC Gesellschaft für Mikroelektronikanwendung Chemnitz mbH",
-       [3]byte{0, 31, 84}:     "Lorex Technology Inc.",
-       [3]byte{0, 31, 85}:     "Honeywell Security (China) Co., Ltd.",
-       [3]byte{0, 31, 86}:     "DIGITAL FORECAST",
-       [3]byte{0, 31, 87}:     "Phonik Innovation Co.,LTD",
-       [3]byte{0, 31, 88}:     "EMH Energiemesstechnik GmbH",
-       [3]byte{0, 31, 89}:     "Kronback Tracers",
-       [3]byte{0, 31, 90}:     "Beckwith Electric Co.",
-       [3]byte{0, 31, 91}:     "Apple, Inc.",
-       [3]byte{0, 31, 92}:     "Nokia Danmark A/S",
-       [3]byte{0, 31, 93}:     "Nokia Danmark A/S",
-       [3]byte{0, 31, 94}:     "Dyna Technology Co.,Ltd.",
-       [3]byte{0, 31, 95}:     "Blatand GmbH",
-       [3]byte{0, 31, 96}:     "COMPASS SYSTEMS CORP.",
-       [3]byte{0, 31, 97}:     "Talent Communication Networks Inc.",
-       [3]byte{0, 31, 98}:     "JSC Stilsoft",
-       [3]byte{0, 31, 99}:     "JSC Goodwin-Europa",
-       [3]byte{0, 31, 100}:    "Beijing Autelan Technology Inc.",
-       [3]byte{0, 31, 101}:    "KOREA ELECTRIC TERMINAL CO., LTD.",
-       [3]byte{0, 31, 102}:    "PLANAR LLC",
-       [3]byte{0, 31, 103}:    "Hitachi,Ltd.",
-       [3]byte{0, 31, 104}:    "Martinsson Elektronik AB",
-       [3]byte{0, 31, 105}:    "Pingood Technology Co., Ltd.",
-       [3]byte{0, 31, 106}:    "PacketFlux Technologies, Inc.",
-       [3]byte{0, 31, 107}:    "LG Electronics (Mobile Communications)",
-       [3]byte{0, 31, 108}:    "Cisco Systems, Inc",
-       [3]byte{0, 31, 109}:    "Cisco Systems, Inc",
-       [3]byte{0, 31, 110}:    "Vtech Engineering Corporation",
-       [3]byte{0, 31, 111}:    "Fujian Sunnada Communication Co.,Ltd.",
-       [3]byte{0, 31, 112}:    "Botik Technologies LTD",
-       [3]byte{0, 31, 113}:    "xG Technology, Inc.",
-       [3]byte{0, 31, 114}:    "QingDao Hiphone Technology Co,.Ltd",
-       [3]byte{0, 31, 115}:    "Teraview Technology Co., Ltd.",
-       [3]byte{0, 31, 116}:    "Eigen Development",
-       [3]byte{0, 31, 117}:    "GiBahn Media",
-       [3]byte{0, 31, 118}:    "AirLogic Systems Inc.",
-       [3]byte{0, 31, 119}:    "HEOL DESIGN",
-       [3]byte{0, 31, 120}:    "Blue Fox Porini Textile",
-       [3]byte{0, 31, 121}:    "Lodam Electronics A/S",
-       [3]byte{0, 31, 122}:    "WiWide Inc.",
-       [3]byte{0, 31, 123}:    "TechNexion Ltd.",
-       [3]byte{0, 31, 124}:    "Witelcom AS",
-       [3]byte{0, 31, 125}:    "Embedded Wireless GmbH",
-       [3]byte{0, 31, 126}:    "ARRIS Group, Inc.",
-       [3]byte{0, 31, 127}:    "Phabrix Limited",
-       [3]byte{0, 31, 128}:    "Lucas Holding bv",
-       [3]byte{0, 31, 129}:    "Accel Semiconductor Corp",
-       [3]byte{0, 31, 130}:    "Cal-Comp Electronics & Communications Company Ltd.",
-       [3]byte{0, 31, 131}:    "Teleplan Technology Services Sdn Bhd",
-       [3]byte{0, 31, 132}:    "Gigle Semiconductor",
-       [3]byte{0, 31, 133}:    "Apriva ISS, LLC",
-       [3]byte{0, 31, 134}:    "digEcor",
-       [3]byte{0, 31, 135}:    "Skydigital Inc.",
-       [3]byte{0, 31, 136}:    "FMS Force Measuring Systems AG",
-       [3]byte{0, 31, 137}:    "Signalion GmbH",
-       [3]byte{0, 31, 138}:    "Ellion Digital Inc.",
-       [3]byte{0, 31, 139}:    "Cache IQ",
-       [3]byte{0, 31, 140}:    "CCS Inc.",
-       [3]byte{0, 31, 141}:    "Ingenieurbuero Stark GmbH und Ko. KG",
-       [3]byte{0, 31, 142}:    "Metris USA Inc.",
-       [3]byte{0, 31, 143}:    "Shanghai Bellmann Digital Source Co.,Ltd.",
-       [3]byte{0, 31, 144}:    "Actiontec Electronics, Inc",
-       [3]byte{0, 31, 145}:    "DBS Lodging Technologies, LLC",
-       [3]byte{0, 31, 146}:    "Avigilon Corporation",
-       [3]byte{0, 31, 147}:    "Xiotech Corporation",
-       [3]byte{0, 31, 148}:    "Lascar Electronics Ltd",
-       [3]byte{0, 31, 149}:    "Sagemcom Broadband SAS",
-       [3]byte{0, 31, 150}:    "APROTECH CO.LTD",
-       [3]byte{0, 31, 151}:    "BERTANA srl",
-       [3]byte{0, 31, 152}:    "DAIICHI-DENTSU LTD.",
-       [3]byte{0, 31, 153}:    "SERONICS co.ltd",
-       [3]byte{0, 31, 154}:    "Nortel Networks",
-       [3]byte{0, 31, 155}:    "POSBRO",
-       [3]byte{0, 31, 156}:    "LEDCO",
-       [3]byte{0, 31, 157}:    "Cisco Systems, Inc",
-       [3]byte{0, 31, 158}:    "Cisco Systems, Inc",
-       [3]byte{0, 31, 159}:    "Thomson Telecom Belgium",
-       [3]byte{0, 31, 160}:    "A10 Networks",
-       [3]byte{0, 31, 161}:    "Gtran Inc",
-       [3]byte{0, 31, 162}:    "Datron World Communications, Inc.",
-       [3]byte{0, 31, 163}:    "T&W Electronics(Shenzhen)Co.,Ltd.",
-       [3]byte{0, 31, 164}:    "SHENZHEN GONGJIN ELECTRONICS CO.,LT",
-       [3]byte{0, 31, 165}:    "Blue-White Industries",
-       [3]byte{0, 31, 166}:    "Stilo srl",
-       [3]byte{0, 31, 167}:    "Sony Interactive Entertainment Inc.",
-       [3]byte{0, 31, 168}:    "Smart Energy Instruments Inc.",
-       [3]byte{0, 31, 169}:    "Atlanta DTH, Inc.",
-       [3]byte{0, 31, 170}:    "Taseon, Inc.",
-       [3]byte{0, 31, 171}:    "I.S HIGH TECH.INC",
-       [3]byte{0, 31, 172}:    "Goodmill Systems Ltd",
-       [3]byte{0, 31, 173}:    "Brown Innovations, Inc",
-       [3]byte{0, 31, 174}:    "Blick South Africa (Pty) Ltd",
-       [3]byte{0, 31, 175}:    "NextIO, Inc.",
-       [3]byte{0, 31, 176}:    "TimeIPS, Inc.",
-       [3]byte{0, 31, 177}:    "Cybertech Inc.",
-       [3]byte{0, 31, 178}:    "Sontheim Industrie Elektronik GmbH",
-       [3]byte{0, 31, 179}:    "2Wire Inc",
-       [3]byte{0, 31, 180}:    "SmartShare Systems",
-       [3]byte{0, 31, 181}:    "I/O Interconnect Inc.",
-       [3]byte{0, 31, 182}:    "Chi Lin Technology Co., Ltd.",
-       [3]byte{0, 31, 183}:    "WiMate Technologies Corp.",
-       [3]byte{0, 31, 184}:    "Universal Remote Control, Inc.",
-       [3]byte{0, 31, 185}:    "Paltronics",
-       [3]byte{0, 31, 186}:    "Boyoung Tech",
-       [3]byte{0, 31, 187}:    "Xenatech Co.,LTD",
-       [3]byte{0, 31, 188}:    "EVGA Corporation",
-       [3]byte{0, 31, 189}:    "Kyocera Wireless Corp.",
-       [3]byte{0, 31, 190}:    "Shenzhen Mopnet Industrial Co.,Ltd",
-       [3]byte{0, 31, 191}:    "Fulhua Microelectronics Corp. Taiwan Branch",
-       [3]byte{0, 31, 192}:    "Control Express Finland Oy",
-       [3]byte{0, 31, 193}:    "Hanlong Technology Co.,LTD",
-       [3]byte{0, 31, 194}:    "Jow Tong Technology Co Ltd",
-       [3]byte{0, 31, 195}:    "SmartSynch, Inc",
-       [3]byte{0, 31, 196}:    "ARRIS Group, Inc.",
-       [3]byte{0, 31, 197}:    "Nintendo Co., Ltd.",
-       [3]byte{0, 31, 198}:    "ASUSTek COMPUTER INC.",
-       [3]byte{0, 31, 199}:    "Casio Hitachi Mobile Communications Co., Ltd.",
-       [3]byte{0, 31, 200}:    "Up-Today Industrial Co., Ltd.",
-       [3]byte{0, 31, 201}:    "Cisco Systems, Inc",
-       [3]byte{0, 31, 202}:    "Cisco Systems, Inc",
-       [3]byte{0, 31, 203}:    "NIW Solutions",
-       [3]byte{0, 31, 204}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 31, 205}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 31, 206}:    "QTECH LLC",
-       [3]byte{0, 31, 207}:    "MSI Technology GmbH",
-       [3]byte{0, 31, 208}:    "GIGA-BYTE TECHNOLOGY CO.,LTD.",
-       [3]byte{0, 31, 209}:    "OPTEX CO.,LTD.",
-       [3]byte{0, 31, 210}:    "COMMTECH TECHNOLOGY MACAO COMMERCIAL OFFSHORE LTD.",
-       [3]byte{0, 31, 211}:    "RIVA Networks Inc.",
-       [3]byte{0, 31, 212}:    "4IPNET, INC.",
-       [3]byte{0, 31, 213}:    "MICRORISC s.r.o.",
-       [3]byte{0, 31, 214}:    "Shenzhen Allywll",
-       [3]byte{0, 31, 215}:    "TELERAD SA",
-       [3]byte{0, 31, 216}:    "A-TRUST COMPUTER CORPORATION",
-       [3]byte{0, 31, 217}:    "RSD Communications Ltd",
-       [3]byte{0, 31, 218}:    "Nortel Networks",
-       [3]byte{0, 31, 219}:    "Network Supply Corp.,",
-       [3]byte{0, 31, 220}:    "Mobile Safe Track Ltd",
-       [3]byte{0, 31, 221}:    "GDI LLC",
-       [3]byte{0, 31, 222}:    "Nokia Danmark A/S",
-       [3]byte{0, 31, 223}:    "Nokia Danmark A/S",
-       [3]byte{0, 31, 224}:    "EdgeVelocity Corp",
-       [3]byte{0, 31, 225}:    "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{0, 31, 226}:    "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{0, 31, 227}:    "LG Electronics (Mobile Communications)",
-       [3]byte{0, 31, 228}:    "Sony Mobile Communications AB",
-       [3]byte{0, 31, 229}:    "In-Circuit GmbH",
-       [3]byte{0, 31, 230}:    "Alphion Corporation",
-       [3]byte{0, 31, 231}:    "Simet",
-       [3]byte{0, 31, 232}:    "KURUSUGAWA Electronics Industry Inc,.",
-       [3]byte{0, 31, 233}:    "Printrex, Inc.",
-       [3]byte{0, 31, 234}:    "Applied Media Technologies Corporation",
-       [3]byte{0, 31, 235}:    "Trio Datacom Pty Ltd",
-       [3]byte{0, 31, 236}:    "Synapse Électronique",
-       [3]byte{0, 31, 237}:    "Tecan Systems Inc.",
-       [3]byte{0, 31, 238}:    "ubisys technologies GmbH",
-       [3]byte{0, 31, 239}:    "SHINSEI INDUSTRIES CO.,LTD",
-       [3]byte{0, 31, 240}:    "Audio Partnership",
-       [3]byte{0, 31, 241}:    "Paradox Hellas S.A.",
-       [3]byte{0, 31, 242}:    "VIA Technologies, Inc.",
-       [3]byte{0, 31, 243}:    "Apple, Inc.",
-       [3]byte{0, 31, 244}:    "Power Monitors, Inc.",
-       [3]byte{0, 31, 245}:    "Kongsberg Defence & Aerospace",
-       [3]byte{0, 31, 246}:    "PS Audio International",
-       [3]byte{0, 31, 247}:    "Nakajima All Precision Co., Ltd.",
-       [3]byte{0, 31, 248}:    "Siemens AG, Sector Industry, Drive Technologies, Motion Control Systems",
-       [3]byte{0, 31, 249}:    "Advanced Knowledge Associates",
-       [3]byte{0, 31, 250}:    "Coretree, Co, Ltd",
-       [3]byte{0, 31, 251}:    "Green Packet Bhd",
-       [3]byte{0, 31, 252}:    "Riccius+Sohn GmbH",
-       [3]byte{0, 31, 253}:    "Indigo Mobile Technologies Corp.",
-       [3]byte{0, 31, 254}:    "HPN Supply Chain",
-       [3]byte{0, 31, 255}:    "Respironics, Inc.",
-       [3]byte{0, 32, 0}:      "LEXMARK INTERNATIONAL, INC.",
-       [3]byte{0, 32, 1}:      "DSP SOLUTIONS, INC.",
-       [3]byte{0, 32, 2}:      "SERITECH ENTERPRISE CO., LTD.",
-       [3]byte{0, 32, 3}:      "PIXEL POWER LTD.",
-       [3]byte{0, 32, 4}:      "YAMATAKE-HONEYWELL CO., LTD.",
-       [3]byte{0, 32, 5}:      "SIMPLE TECHNOLOGY",
-       [3]byte{0, 32, 6}:      "GARRETT COMMUNICATIONS, INC.",
-       [3]byte{0, 32, 7}:      "SFA, INC.",
-       [3]byte{0, 32, 8}:      "CABLE & COMPUTER TECHNOLOGY",
-       [3]byte{0, 32, 9}:      "PACKARD BELL ELEC., INC.",
-       [3]byte{0, 32, 10}:     "SOURCE-COMM CORP.",
-       [3]byte{0, 32, 11}:     "OCTAGON SYSTEMS CORP.",
-       [3]byte{0, 32, 12}:     "ADASTRA SYSTEMS CORP.",
-       [3]byte{0, 32, 13}:     "CARL ZEISS",
-       [3]byte{0, 32, 14}:     "SATELLITE TECHNOLOGY MGMT, INC",
-       [3]byte{0, 32, 15}:     "EBRAINS Inc",
-       [3]byte{0, 32, 16}:     "JEOL SYSTEM TECHNOLOGY CO. LTD",
-       [3]byte{0, 32, 17}:     "CANOPUS CO., LTD.",
-       [3]byte{0, 32, 18}:     "CAMTRONICS MEDICAL SYSTEMS",
-       [3]byte{0, 32, 19}:     "DIVERSIFIED TECHNOLOGY, INC.",
-       [3]byte{0, 32, 20}:     "GLOBAL VIEW CO., LTD.",
-       [3]byte{0, 32, 21}:     "ACTIS COMPUTER SA",
-       [3]byte{0, 32, 22}:     "SHOWA ELECTRIC WIRE & CABLE CO",
-       [3]byte{0, 32, 23}:     "ORBOTECH",
-       [3]byte{0, 32, 24}:     "CIS TECHNOLOGY INC.",
-       [3]byte{0, 32, 25}:     "OHLER GMBH",
-       [3]byte{0, 32, 26}:     "MRV Communications, Inc.",
-       [3]byte{0, 32, 27}:     "NORTHERN TELECOM/NETWORK",
-       [3]byte{0, 32, 28}:     "EXCEL, INC.",
-       [3]byte{0, 32, 29}:     "KATANA PRODUCTS",
-       [3]byte{0, 32, 30}:     "NETQUEST CORPORATION",
-       [3]byte{0, 32, 31}:     "BEST POWER TECHNOLOGY, INC.",
-       [3]byte{0, 32, 32}:     "MEGATRON COMPUTER INDUSTRIES PTY, LTD.",
-       [3]byte{0, 32, 33}:     "ALGORITHMS SOFTWARE PVT. LTD.",
-       [3]byte{0, 32, 34}:     "NMS Communications",
-       [3]byte{0, 32, 35}:     "T.C. TECHNOLOGIES PTY. LTD",
-       [3]byte{0, 32, 36}:     "PACIFIC COMMUNICATION SCIENCES",
-       [3]byte{0, 32, 37}:     "CONTROL TECHNOLOGY, INC.",
-       [3]byte{0, 32, 38}:     "AMKLY SYSTEMS, INC.",
-       [3]byte{0, 32, 39}:     "MING FORTUNE INDUSTRY CO., LTD",
-       [3]byte{0, 32, 40}:     "WEST EGG SYSTEMS, INC.",
-       [3]byte{0, 32, 41}:     "TELEPROCESSING PRODUCTS, INC.",
-       [3]byte{0, 32, 42}:     "N.V. DZINE",
-       [3]byte{0, 32, 43}:     "ADVANCED TELECOMMUNICATIONS MODULES, LTD.",
-       [3]byte{0, 32, 44}:     "WELLTRONIX CO., LTD.",
-       [3]byte{0, 32, 45}:     "TAIYO CORPORATION",
-       [3]byte{0, 32, 46}:     "DAYSTAR DIGITAL",
-       [3]byte{0, 32, 47}:     "ZETA COMMUNICATIONS, LTD.",
-       [3]byte{0, 32, 48}:     "ANALOG & DIGITAL SYSTEMS",
-       [3]byte{0, 32, 49}:     "Tattile SRL",
-       [3]byte{0, 32, 50}:     "ALCATEL TAISEL",
-       [3]byte{0, 32, 51}:     "SYNAPSE TECHNOLOGIES, INC.",
-       [3]byte{0, 32, 52}:     "ROTEC INDUSTRIEAUTOMATION GMBH",
-       [3]byte{0, 32, 53}:     "IBM Corp",
-       [3]byte{0, 32, 54}:     "BMC SOFTWARE",
-       [3]byte{0, 32, 55}:     "Seagate Technology",
-       [3]byte{0, 32, 56}:     "VME MICROSYSTEMS INTERNATIONAL CORPORATION",
-       [3]byte{0, 32, 57}:     "SCINETS",
-       [3]byte{0, 32, 58}:     "DIGITAL BI0METRICS INC.",
-       [3]byte{0, 32, 59}:     "WISDM LTD.",
-       [3]byte{0, 32, 60}:     "EUROTIME AB",
-       [3]byte{0, 32, 61}:     "Honeywell ECC",
-       [3]byte{0, 32, 62}:     "LogiCan Technologies, Inc.",
-       [3]byte{0, 32, 63}:     "JUKI CORPORATION",
-       [3]byte{0, 32, 64}:     "ARRIS Group, Inc.",
-       [3]byte{0, 32, 65}:     "DATA NET",
-       [3]byte{0, 32, 66}:     "DATAMETRICS CORP.",
-       [3]byte{0, 32, 67}:     "NEURON COMPANY LIMITED",
-       [3]byte{0, 32, 68}:     "GENITECH PTY LTD",
-       [3]byte{0, 32, 69}:     "ION Networks, Inc.",
-       [3]byte{0, 32, 70}:     "CIPRICO, INC.",
-       [3]byte{0, 32, 71}:     "STEINBRECHER CORP.",
-       [3]byte{0, 32, 72}:     "Marconi Communications",
-       [3]byte{0, 32, 73}:     "COMTRON, INC.",
-       [3]byte{0, 32, 74}:     "PRONET GMBH",
-       [3]byte{0, 32, 75}:     "AUTOCOMPUTER CO., LTD.",
-       [3]byte{0, 32, 76}:     "MITRON COMPUTER PTE LTD.",
-       [3]byte{0, 32, 77}:     "INOVIS GMBH",
-       [3]byte{0, 32, 78}:     "NETWORK SECURITY SYSTEMS, INC.",
-       [3]byte{0, 32, 79}:     "DEUTSCHE AEROSPACE AG",
-       [3]byte{0, 32, 80}:     "KOREA COMPUTER INC.",
-       [3]byte{0, 32, 81}:     "Verilink Corporation",
-       [3]byte{0, 32, 82}:     "RAGULA SYSTEMS",
-       [3]byte{0, 32, 83}:     "HUNTSVILLE MICROSYSTEMS, INC.",
-       [3]byte{0, 32, 84}:     "Sycamore Networks",
-       [3]byte{0, 32, 85}:     "ALTECH CO., LTD.",
-       [3]byte{0, 32, 86}:     "NEOPRODUCTS",
-       [3]byte{0, 32, 87}:     "TITZE DATENTECHNIK GmbH",
-       [3]byte{0, 32, 88}:     "ALLIED SIGNAL INC.",
-       [3]byte{0, 32, 89}:     "MIRO COMPUTER PRODUCTS AG",
-       [3]byte{0, 32, 90}:     "COMPUTER IDENTICS",
-       [3]byte{0, 32, 91}:     "Kentrox, LLC",
-       [3]byte{0, 32, 92}:     "InterNet Systems of Florida, Inc.",
-       [3]byte{0, 32, 93}:     "NANOMATIC OY",
-       [3]byte{0, 32, 94}:     "CASTLE ROCK, INC.",
-       [3]byte{0, 32, 95}:     "GAMMADATA COMPUTER GMBH",
-       [3]byte{0, 32, 96}:     "ALCATEL ITALIA S.p.A.",
-       [3]byte{0, 32, 97}:     "GarrettCom, Inc.",
-       [3]byte{0, 32, 98}:     "SCORPION LOGIC, LTD.",
-       [3]byte{0, 32, 99}:     "WIPRO INFOTECH LTD.",
-       [3]byte{0, 32, 100}:    "PROTEC MICROSYSTEMS, INC.",
-       [3]byte{0, 32, 101}:    "SUPERNET NETWORKING INC.",
-       [3]byte{0, 32, 102}:    "GENERAL MAGIC, INC.",
-       [3]byte{0, 32, 103}:    "Private",
-       [3]byte{0, 32, 104}:    "ISDYNE",
-       [3]byte{0, 32, 105}:    "ISDN SYSTEMS CORPORATION",
-       [3]byte{0, 32, 106}:    "OSAKA COMPUTER CORP.",
-       [3]byte{0, 32, 107}:    "KONICA MINOLTA HOLDINGS, INC.",
-       [3]byte{0, 32, 108}:    "EVERGREEN TECHNOLOGY CORP.",
-       [3]byte{0, 32, 109}:    "DATA RACE, INC.",
-       [3]byte{0, 32, 110}:    "XACT, INC.",
-       [3]byte{0, 32, 111}:    "FLOWPOINT CORPORATION",
-       [3]byte{0, 32, 112}:    "HYNET, LTD.",
-       [3]byte{0, 32, 113}:    "IBR GMBH",
-       [3]byte{0, 32, 114}:    "WORKLINK INNOVATIONS",
-       [3]byte{0, 32, 115}:    "FUSION SYSTEMS CORPORATION",
-       [3]byte{0, 32, 116}:    "SUNGWOON SYSTEMS",
-       [3]byte{0, 32, 117}:    "MOTOROLA COMMUNICATION ISRAEL",
-       [3]byte{0, 32, 118}:    "REUDO CORPORATION",
-       [3]byte{0, 32, 119}:    "KARDIOS SYSTEMS CORP.",
-       [3]byte{0, 32, 120}:    "RUNTOP, INC.",
-       [3]byte{0, 32, 121}:    "MIKRON GMBH",
-       [3]byte{0, 32, 122}:    "WiSE Communications, Inc.",
-       [3]byte{0, 32, 123}:    "Intel Corporation",
-       [3]byte{0, 32, 124}:    "AUTEC GMBH",
-       [3]byte{0, 32, 125}:    "ADVANCED COMPUTER APPLICATIONS",
-       [3]byte{0, 32, 126}:    "FINECOM CO., LTD.",
-       [3]byte{0, 32, 127}:    "KYOEI SANGYO CO., LTD.",
-       [3]byte{0, 32, 128}:    "SYNERGY (UK) LTD.",
-       [3]byte{0, 32, 129}:    "TITAN ELECTRONICS",
-       [3]byte{0, 32, 130}:    "ONEAC CORPORATION",
-       [3]byte{0, 32, 131}:    "PRESTICOM INCORPORATED",
-       [3]byte{0, 32, 132}:    "OCE PRINTING SYSTEMS, GMBH",
-       [3]byte{0, 32, 133}:    "Eaton Corporation",
-       [3]byte{0, 32, 134}:    "MICROTECH ELECTRONICS LIMITED",
-       [3]byte{0, 32, 135}:    "MEMOTEC, INC.",
-       [3]byte{0, 32, 136}:    "GLOBAL VILLAGE COMMUNICATION",
-       [3]byte{0, 32, 137}:    "T3PLUS NETWORKING, INC.",
-       [3]byte{0, 32, 138}:    "SONIX COMMUNICATIONS, LTD.",
-       [3]byte{0, 32, 139}:    "LAPIS TECHNOLOGIES, INC.",
-       [3]byte{0, 32, 140}:    "GALAXY NETWORKS, INC.",
-       [3]byte{0, 32, 141}:    "CMD TECHNOLOGY",
-       [3]byte{0, 32, 142}:    "CHEVIN SOFTWARE ENG. LTD.",
-       [3]byte{0, 32, 143}:    "ECI Telecom Ltd.",
-       [3]byte{0, 32, 144}:    "ADVANCED COMPRESSION TECHNOLOGY, INC.",
-       [3]byte{0, 32, 145}:    "J125, NATIONAL SECURITY AGENCY",
-       [3]byte{0, 32, 146}:    "CHESS ENGINEERING B.V.",
-       [3]byte{0, 32, 147}:    "LANDINGS TECHNOLOGY CORP.",
-       [3]byte{0, 32, 148}:    "CUBIX CORPORATION",
-       [3]byte{0, 32, 149}:    "RIVA ELECTRONICS",
-       [3]byte{0, 32, 150}:    "Invensys",
-       [3]byte{0, 32, 151}:    "APPLIED SIGNAL TECHNOLOGY",
-       [3]byte{0, 32, 152}:    "HECTRONIC AB",
-       [3]byte{0, 32, 153}:    "BON ELECTRIC CO., LTD.",
-       [3]byte{0, 32, 154}:    "THE 3DO COMPANY",
-       [3]byte{0, 32, 155}:    "ERSAT ELECTRONIC GMBH",
-       [3]byte{0, 32, 156}:    "PRIMARY ACCESS CORP.",
-       [3]byte{0, 32, 157}:    "LIPPERT AUTOMATIONSTECHNIK",
-       [3]byte{0, 32, 158}:    "BROWN'S OPERATING SYSTEM SERVICES, LTD.",
-       [3]byte{0, 32, 159}:    "MERCURY COMPUTER SYSTEMS, INC.",
-       [3]byte{0, 32, 160}:    "OA LABORATORY CO., LTD.",
-       [3]byte{0, 32, 161}:    "DOVATRON",
-       [3]byte{0, 32, 162}:    "GALCOM NETWORKING LTD.",
-       [3]byte{0, 32, 163}:    "Harmonic, Inc",
-       [3]byte{0, 32, 164}:    "MULTIPOINT NETWORKS",
-       [3]byte{0, 32, 165}:    "API ENGINEERING",
-       [3]byte{0, 32, 166}:    "Proxim Wireless",
-       [3]byte{0, 32, 167}:    "PAIRGAIN TECHNOLOGIES, INC.",
-       [3]byte{0, 32, 168}:    "SAST TECHNOLOGY CORP.",
-       [3]byte{0, 32, 169}:    "WHITE HORSE INDUSTRIAL",
-       [3]byte{0, 32, 170}:    "Ericsson Television Limited",
-       [3]byte{0, 32, 171}:    "MICRO INDUSTRIES CORP.",
-       [3]byte{0, 32, 172}:    "INTERFLEX DATENSYSTEME GMBH",
-       [3]byte{0, 32, 173}:    "LINQ SYSTEMS",
-       [3]byte{0, 32, 174}:    "ORNET DATA COMMUNICATION TECH.",
-       [3]byte{0, 32, 175}:    "3COM CORPORATION",
-       [3]byte{0, 32, 176}:    "GATEWAY DEVICES, INC.",
-       [3]byte{0, 32, 177}:    "COMTECH RESEARCH INC.",
-       [3]byte{0, 32, 178}:    "GKD Gesellschaft Fur Kommunikation Und Datentechnik",
-       [3]byte{0, 32, 179}:    "Tattile SRL",
-       [3]byte{0, 32, 180}:    "TERMA ELEKTRONIK AS",
-       [3]byte{0, 32, 181}:    "YASKAWA ELECTRIC CORPORATION",
-       [3]byte{0, 32, 182}:    "AGILE NETWORKS, INC.",
-       [3]byte{0, 32, 183}:    "NAMAQUA COMPUTERWARE",
-       [3]byte{0, 32, 184}:    "PRIME OPTION, INC.",
-       [3]byte{0, 32, 185}:    "METRICOM, INC.",
-       [3]byte{0, 32, 186}:    "CENTER FOR HIGH PERFORMANCE",
-       [3]byte{0, 32, 187}:    "ZAX CORPORATION",
-       [3]byte{0, 32, 188}:    "Long Reach Networks Pty Ltd",
-       [3]byte{0, 32, 189}:    "NIOBRARA R & D CORPORATION",
-       [3]byte{0, 32, 190}:    "LAN ACCESS CORP.",
-       [3]byte{0, 32, 191}:    "AEHR TEST SYSTEMS",
-       [3]byte{0, 32, 192}:    "PULSE ELECTRONICS, INC.",
-       [3]byte{0, 32, 193}:    "SAXA, Inc.",
-       [3]byte{0, 32, 194}:    "TEXAS MEMORY SYSTEMS, INC.",
-       [3]byte{0, 32, 195}:    "COUNTER SOLUTIONS LTD.",
-       [3]byte{0, 32, 196}:    "INET,INC.",
-       [3]byte{0, 32, 197}:    "EAGLE TECHNOLOGY",
-       [3]byte{0, 32, 198}:    "NECTEC",
-       [3]byte{0, 32, 199}:    "AKAI Professional M.I. Corp.",
-       [3]byte{0, 32, 200}:    "LARSCOM INCORPORATED",
-       [3]byte{0, 32, 201}:    "VICTRON BV",
-       [3]byte{0, 32, 202}:    "DIGITAL OCEAN",
-       [3]byte{0, 32, 203}:    "PRETEC ELECTRONICS CORP.",
-       [3]byte{0, 32, 204}:    "DIGITAL SERVICES, LTD.",
-       [3]byte{0, 32, 205}:    "HYBRID NETWORKS, INC.",
-       [3]byte{0, 32, 206}:    "LOGICAL DESIGN GROUP, INC.",
-       [3]byte{0, 32, 207}:    "TEST & MEASUREMENT SYSTEMS INC",
-       [3]byte{0, 32, 208}:    "VERSALYNX CORPORATION",
-       [3]byte{0, 32, 209}:    "MICROCOMPUTER SYSTEMS (M) SDN.",
-       [3]byte{0, 32, 210}:    "RAD DATA COMMUNICATIONS, LTD.",
-       [3]byte{0, 32, 211}:    "OST (OUEST STANDARD TELEMATIQU",
-       [3]byte{0, 32, 212}:    "Cabletron Systems, Inc.",
-       [3]byte{0, 32, 213}:    "VIPA GMBH",
-       [3]byte{0, 32, 214}:    "Breezecom, Ltd.",
-       [3]byte{0, 32, 215}:    "JAPAN MINICOMPUTER SYSTEMS CO., Ltd.",
-       [3]byte{0, 32, 216}:    "Nortel Networks",
-       [3]byte{0, 32, 217}:    "PANASONIC TECHNOLOGIES, INC./MIECO-US",
-       [3]byte{0, 32, 218}:    "Alcatel-Lucent Enterprise",
-       [3]byte{0, 32, 219}:    "XNET TECHNOLOGY, INC.",
-       [3]byte{0, 32, 220}:    "DENSITRON TAIWAN LTD.",
-       [3]byte{0, 32, 221}:    "Cybertec Pty Ltd",
-       [3]byte{0, 32, 222}:    "JAPAN DIGITAL LABORAT'Y CO.LTD",
-       [3]byte{0, 32, 223}:    "KYOSAN ELECTRIC MFG. CO., LTD.",
-       [3]byte{0, 32, 224}:    "Actiontec Electronics, Inc",
-       [3]byte{0, 32, 225}:    "ALAMAR ELECTRONICS",
-       [3]byte{0, 32, 226}:    "INFORMATION RESOURCE ENGINEERING",
-       [3]byte{0, 32, 227}:    "MCD KENCOM CORPORATION",
-       [3]byte{0, 32, 228}:    "HSING TECH ENTERPRISE CO., LTD",
-       [3]byte{0, 32, 229}:    "APEX DATA, INC.",
-       [3]byte{0, 32, 230}:    "LIDKOPING MACHINE TOOLS AB",
-       [3]byte{0, 32, 231}:    "B&W NUCLEAR SERVICE COMPANY",
-       [3]byte{0, 32, 232}:    "DATATREK CORPORATION",
-       [3]byte{0, 32, 233}:    "DANTEL",
-       [3]byte{0, 32, 234}:    "EFFICIENT NETWORKS, INC.",
-       [3]byte{0, 32, 235}:    "CINCINNATI MICROWAVE, INC.",
-       [3]byte{0, 32, 236}:    "TECHWARE SYSTEMS CORP.",
-       [3]byte{0, 32, 237}:    "GIGA-BYTE TECHNOLOGY CO., LTD.",
-       [3]byte{0, 32, 238}:    "GTECH CORPORATION",
-       [3]byte{0, 32, 239}:    "USC CORPORATION",
-       [3]byte{0, 32, 240}:    "UNIVERSAL MICROELECTRONICS CO.",
-       [3]byte{0, 32, 241}:    "ALTOS INDIA LIMITED",
-       [3]byte{0, 32, 242}:    "Oracle Corporation",
-       [3]byte{0, 32, 243}:    "RAYNET CORPORATION",
-       [3]byte{0, 32, 244}:    "SPECTRIX CORPORATION",
-       [3]byte{0, 32, 245}:    "PANDATEL AG",
-       [3]byte{0, 32, 246}:    "NET TEK  AND KARLNET, INC.",
-       [3]byte{0, 32, 247}:    "CYBERDATA CORPORATION",
-       [3]byte{0, 32, 248}:    "CARRERA COMPUTERS, INC.",
-       [3]byte{0, 32, 249}:    "PARALINK NETWORKS, INC.",
-       [3]byte{0, 32, 250}:    "GDE SYSTEMS, INC.",
-       [3]byte{0, 32, 251}:    "OCTEL COMMUNICATIONS CORP.",
-       [3]byte{0, 32, 252}:    "MATROX",
-       [3]byte{0, 32, 253}:    "ITV TECHNOLOGIES, INC.",
-       [3]byte{0, 32, 254}:    "TOPWARE INC. / GRAND COMPUTER",
-       [3]byte{0, 32, 255}:    "SYMMETRICAL TECHNOLOGIES",
-       [3]byte{0, 33, 0}:      "Gemtek Technology Co., Ltd.",
-       [3]byte{0, 33, 1}:      "Aplicaciones Electronicas Quasar (AEQ)",
-       [3]byte{0, 33, 2}:      "UpdateLogic Inc.",
-       [3]byte{0, 33, 3}:      "GHI Electronics, LLC",
-       [3]byte{0, 33, 4}:      "Gigaset Communications GmbH",
-       [3]byte{0, 33, 5}:      "Alcatel-Lucent IPD",
-       [3]byte{0, 33, 6}:      "RIM Testing Services",
-       [3]byte{0, 33, 7}:      "Seowonintech Co Ltd.",
-       [3]byte{0, 33, 8}:      "Nokia Danmark A/S",
-       [3]byte{0, 33, 9}:      "Nokia Danmark A/S",
-       [3]byte{0, 33, 10}:     "byd:sign Corporation",
-       [3]byte{0, 33, 11}:     "GEMINI TRAZE RFID PVT. LTD.",
-       [3]byte{0, 33, 12}:     "Cymtec Systems, Inc.",
-       [3]byte{0, 33, 13}:     "SAMSIN INNOTEC",
-       [3]byte{0, 33, 14}:     "Orpak Systems L.T.D.",
-       [3]byte{0, 33, 15}:     "Cernium Corp",
-       [3]byte{0, 33, 16}:     "Clearbox Systems",
-       [3]byte{0, 33, 17}:     "Uniphone Inc.",
-       [3]byte{0, 33, 18}:     "WISCOM SYSTEM CO.,LTD",
-       [3]byte{0, 33, 19}:     "Padtec S/A",
-       [3]byte{0, 33, 20}:     "Hylab Technology Inc.",
-       [3]byte{0, 33, 21}:     "PHYWE Systeme GmbH & Co. KG",
-       [3]byte{0, 33, 22}:     "Transcon Electronic Systems, spol. s r. o.",
-       [3]byte{0, 33, 23}:     "Tellord",
-       [3]byte{0, 33, 24}:     "Athena Tech, Inc.",
-       [3]byte{0, 33, 25}:     "SAMSUNG ELECTRO MECHANICS CO., LTD.",
-       [3]byte{0, 33, 26}:     "LInTech Corporation",
-       [3]byte{0, 33, 27}:     "Cisco Systems, Inc",
-       [3]byte{0, 33, 28}:     "Cisco Systems, Inc",
-       [3]byte{0, 33, 29}:     "Dataline AB",
-       [3]byte{0, 33, 30}:     "ARRIS Group, Inc.",
-       [3]byte{0, 33, 31}:     "SHINSUNG DELTATECH CO.,LTD.",
-       [3]byte{0, 33, 32}:     "Sequel Technologies",
-       [3]byte{0, 33, 33}:     "VRmagic GmbH",
-       [3]byte{0, 33, 34}:     "Chip-pro Ltd.",
-       [3]byte{0, 33, 35}:     "Aerosat Avionics",
-       [3]byte{0, 33, 36}:     "Optos Plc",
-       [3]byte{0, 33, 37}:     "KUK JE TONG SHIN Co.,LTD",
-       [3]byte{0, 33, 38}:     "Shenzhen Torch Equipment Co., Ltd.",
-       [3]byte{0, 33, 39}:     "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{0, 33, 40}:     "Oracle Corporation",
-       [3]byte{0, 33, 41}:     "Cisco-Linksys, LLC",
-       [3]byte{0, 33, 42}:     "Audiovox Corporation",
-       [3]byte{0, 33, 43}:     "MSA Auer",
-       [3]byte{0, 33, 44}:     "SemIndia System Private Limited",
-       [3]byte{0, 33, 45}:     "SCIMOLEX CORPORATION",
-       [3]byte{0, 33, 46}:     "dresden-elektronik",
-       [3]byte{0, 33, 47}:     "Phoebe Micro Inc.",
-       [3]byte{0, 33, 48}:     "Keico Hightech Inc.",
-       [3]byte{0, 33, 49}:     "Blynke Inc.",
-       [3]byte{0, 33, 50}:     "Masterclock, Inc.",
-       [3]byte{0, 33, 51}:     "Building B, Inc",
-       [3]byte{0, 33, 52}:     "Brandywine Communications",
-       [3]byte{0, 33, 53}:     "ALCATEL-LUCENT",
-       [3]byte{0, 33, 54}:     "ARRIS Group, Inc.",
-       [3]byte{0, 33, 55}:     "Bay Controls, LLC",
-       [3]byte{0, 33, 56}:     "Cepheid",
-       [3]byte{0, 33, 57}:     "Escherlogic Inc.",
-       [3]byte{0, 33, 58}:     "Winchester Systems Inc.",
-       [3]byte{0, 33, 59}:     "Berkshire Products, Inc",
-       [3]byte{0, 33, 60}:     "AliphCom",
-       [3]byte{0, 33, 61}:     "Cermetek Microelectronics, Inc.",
-       [3]byte{0, 33, 62}:     "TomTom",
-       [3]byte{0, 33, 63}:     "A-Team Technology Ltd.",
-       [3]byte{0, 33, 64}:     "EN Technologies Inc.",
-       [3]byte{0, 33, 65}:     "RADLIVE",
-       [3]byte{0, 33, 66}:     "Advanced Control Systems doo",
-       [3]byte{0, 33, 67}:     "ARRIS Group, Inc.",
-       [3]byte{0, 33, 68}:     "SS Telecoms",
-       [3]byte{0, 33, 69}:     "Semptian Technologies Ltd.",
-       [3]byte{0, 33, 70}:     "Sanmina-SCI",
-       [3]byte{0, 33, 71}:     "Nintendo Co., Ltd.",
-       [3]byte{0, 33, 72}:     "Kaco Solar Korea",
-       [3]byte{0, 33, 73}:     "China Daheng Group ,Inc.",
-       [3]byte{0, 33, 74}:     "Pixel Velocity, Inc",
-       [3]byte{0, 33, 75}:     "Shenzhen HAMP Science & Technology Co.,Ltd",
-       [3]byte{0, 33, 76}:     "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 33, 77}:     "Guangzhou Skytone Transmission Technology Com. Ltd.",
-       [3]byte{0, 33, 78}:     "GS Yuasa Power Supply Ltd.",
-       [3]byte{0, 33, 79}:     "ALPS ELECTRIC CO.,LTD.",
-       [3]byte{0, 33, 80}:     "EYEVIEW ELECTRONICS",
-       [3]byte{0, 33, 81}:     "Millinet Co., Ltd.",
-       [3]byte{0, 33, 82}:     "General Satellite Research & Development Limited",
-       [3]byte{0, 33, 83}:     "SeaMicro Inc.",
-       [3]byte{0, 33, 84}:     "D-TACQ Solutions Ltd",
-       [3]byte{0, 33, 85}:     "Cisco Systems, Inc",
-       [3]byte{0, 33, 86}:     "Cisco Systems, Inc",
-       [3]byte{0, 33, 87}:     "National Datacast, Inc.",
-       [3]byte{0, 33, 88}:     "Style Flying Technology Co.",
-       [3]byte{0, 33, 89}:     "Juniper Networks",
-       [3]byte{0, 33, 90}:     "Hewlett Packard",
-       [3]byte{0, 33, 91}:     "SenseAnywhere",
-       [3]byte{0, 33, 92}:     "Intel Corporate",
-       [3]byte{0, 33, 93}:     "Intel Corporate",
-       [3]byte{0, 33, 94}:     "IBM Corp",
-       [3]byte{0, 33, 95}:     "IHSE GmbH",
-       [3]byte{0, 33, 96}:     "Hidea Solutions Co. Ltd.",
-       [3]byte{0, 33, 97}:     "Yournet Inc.",
-       [3]byte{0, 33, 98}:     "Nortel Networks",
-       [3]byte{0, 33, 99}:     "ASKEY COMPUTER CORP",
-       [3]byte{0, 33, 100}:    "Special Design Bureau for Seismic Instrumentation",
-       [3]byte{0, 33, 101}:    "Presstek Inc.",
-       [3]byte{0, 33, 102}:    "NovAtel Inc.",
-       [3]byte{0, 33, 103}:    "HWA JIN T&I Corp.",
-       [3]byte{0, 33, 104}:    "iVeia, LLC",
-       [3]byte{0, 33, 105}:    "Prologix, LLC.",
-       [3]byte{0, 33, 106}:    "Intel Corporate",
-       [3]byte{0, 33, 107}:    "Intel Corporate",
-       [3]byte{0, 33, 108}:    "ODVA",
-       [3]byte{0, 33, 109}:    "Soltech Co., Ltd.",
-       [3]byte{0, 33, 110}:    "Function ATI (Huizhou) Telecommunications Co., Ltd.",
-       [3]byte{0, 33, 111}:    "SymCom, Inc.",
-       [3]byte{0, 33, 112}:    "Dell Inc.",
-       [3]byte{0, 33, 113}:    "Wesung TNC Co., Ltd.",
-       [3]byte{0, 33, 114}:    "Seoultek Valley",
-       [3]byte{0, 33, 115}:    "Ion Torrent Systems, Inc.",
-       [3]byte{0, 33, 116}:    "AvaLAN Wireless",
-       [3]byte{0, 33, 117}:    "Pacific Satellite International Ltd.",
-       [3]byte{0, 33, 118}:    "YMax Telecom Ltd.",
-       [3]byte{0, 33, 119}:    "W. L. Gore & Associates",
-       [3]byte{0, 33, 120}:    "Matuschek Messtechnik GmbH",
-       [3]byte{0, 33, 121}:    "IOGEAR, Inc.",
-       [3]byte{0, 33, 122}:    "Sejin Electron, Inc.",
-       [3]byte{0, 33, 123}:    "Bastec AB",
-       [3]byte{0, 33, 124}:    "2Wire Inc",
-       [3]byte{0, 33, 125}:    "PYXIS S.R.L.",
-       [3]byte{0, 33, 126}:    "Telit Communication s.p.a",
-       [3]byte{0, 33, 127}:    "Intraco Technology Pte Ltd",
-       [3]byte{0, 33, 128}:    "ARRIS Group, Inc.",
-       [3]byte{0, 33, 129}:    "Si2 Microsystems Limited",
-       [3]byte{0, 33, 130}:    "SandLinks Systems, Ltd.",
-       [3]byte{0, 33, 131}:    "ANDRITZ HYDRO GmbH",
-       [3]byte{0, 33, 132}:    "POWERSOFT SRL",
-       [3]byte{0, 33, 133}:    "MICRO-STAR INT'L CO.,LTD.",
-       [3]byte{0, 33, 134}:    "Universal Global Scientific Industrial Co., Ltd.",
-       [3]byte{0, 33, 135}:    "Imacs GmbH",
-       [3]byte{0, 33, 136}:    "EMC Corporation",
-       [3]byte{0, 33, 137}:    "AppTech, Inc.",
-       [3]byte{0, 33, 138}:    "Electronic Design and Manufacturing Company",
-       [3]byte{0, 33, 139}:    "Wescon Technology, Inc.",
-       [3]byte{0, 33, 140}:    "TopControl GMBH",
-       [3]byte{0, 33, 141}:    "AP Router Ind. Eletronica LTDA",
-       [3]byte{0, 33, 142}:    "MEKICS CO., LTD.",
-       [3]byte{0, 33, 143}:    "Avantgarde Acoustic Lautsprechersysteme GmbH",
-       [3]byte{0, 33, 144}:    "Goliath Solutions",
-       [3]byte{0, 33, 145}:    "D-Link Corporation",
-       [3]byte{0, 33, 146}:    "Baoding Galaxy Electronic Technology  Co.,Ltd",
-       [3]byte{0, 33, 147}:    "Videofon MV",
-       [3]byte{0, 33, 148}:    "Ping Communication",
-       [3]byte{0, 33, 149}:    "GWD Media Limited",
-       [3]byte{0, 33, 150}:    "Telsey  S.p.A.",
-       [3]byte{0, 33, 151}:    "Elitegroup Computer Systems Co.,Ltd.",
-       [3]byte{0, 33, 152}:    "Thai Radio Co, LTD",
-       [3]byte{0, 33, 153}:    "Vacon Plc",
-       [3]byte{0, 33, 154}:    "Cambridge Visual Networks Ltd",
-       [3]byte{0, 33, 155}:    "Dell Inc.",
-       [3]byte{0, 33, 156}:    "Honeywld Technology Corp.",
-       [3]byte{0, 33, 157}:    "Adesys BV",
-       [3]byte{0, 33, 158}:    "Sony Mobile Communications AB",
-       [3]byte{0, 33, 159}:    "SATEL OY",
-       [3]byte{0, 33, 160}:    "Cisco Systems, Inc",
-       [3]byte{0, 33, 161}:    "Cisco Systems, Inc",
-       [3]byte{0, 33, 162}:    "EKE-Electronics Ltd.",
-       [3]byte{0, 33, 163}:    "Micromint",
-       [3]byte{0, 33, 164}:    "Dbii Networks",
-       [3]byte{0, 33, 165}:    "ERLPhase Power Technologies Ltd.",
-       [3]byte{0, 33, 166}:    "Videotec Spa",
-       [3]byte{0, 33, 167}:    "Hantle System Co., Ltd.",
-       [3]byte{0, 33, 168}:    "Telephonics Corporation",
-       [3]byte{0, 33, 169}:    "Mobilink Telecom Co.,Ltd",
-       [3]byte{0, 33, 170}:    "Nokia Danmark A/S",
-       [3]byte{0, 33, 171}:    "Nokia Danmark A/S",
-       [3]byte{0, 33, 172}:    "Infrared Integrated Systems Ltd",
-       [3]byte{0, 33, 173}:    "Nordic ID Oy",
-       [3]byte{0, 33, 174}:    "ALCATEL-LUCENT FRANCE - WTD",
-       [3]byte{0, 33, 175}:    "Radio Frequency Systems",
-       [3]byte{0, 33, 176}:    "Tyco Telecommunications",
-       [3]byte{0, 33, 177}:    "DIGITAL SOLUTIONS LTD",
-       [3]byte{0, 33, 178}:    "Fiberblaze A/S",
-       [3]byte{0, 33, 179}:    "Ross Controls",
-       [3]byte{0, 33, 180}:    "APRO MEDIA CO., LTD",
-       [3]byte{0, 33, 181}:    "Galvanic Ltd",
-       [3]byte{0, 33, 182}:    "Triacta Power Technologies Inc.",
-       [3]byte{0, 33, 183}:    "Lexmark International Inc.",
-       [3]byte{0, 33, 184}:    "Inphi Corporation",
-       [3]byte{0, 33, 185}:    "Universal Devices Inc.",
-       [3]byte{0, 33, 186}:    "Texas Instruments",
-       [3]byte{0, 33, 187}:    "Riken Keiki Co., Ltd.",
-       [3]byte{0, 33, 188}:    "ZALA COMPUTER",
-       [3]byte{0, 33, 189}:    "Nintendo Co., Ltd.",
-       [3]byte{0, 33, 190}:    "Cisco SPVTG",
-       [3]byte{0, 33, 191}:    "Hitachi High-Tech Control Systems Corporation",
-       [3]byte{0, 33, 192}:    "Mobile Appliance, Inc.",
-       [3]byte{0, 33, 193}:    "ABB Oy / Medium Voltage Products",
-       [3]byte{0, 33, 194}:    "GL Communications Inc",
-       [3]byte{0, 33, 195}:    "CORNELL Communications, Inc.",
-       [3]byte{0, 33, 196}:    "Consilium AB",
-       [3]byte{0, 33, 197}:    "3DSP Corp",
-       [3]byte{0, 33, 198}:    "CSJ Global, Inc.",
-       [3]byte{0, 33, 199}:    "Russound",
-       [3]byte{0, 33, 200}:    "LOHUIS Networks",
-       [3]byte{0, 33, 201}:    "Wavecom Asia Pacific Limited",
-       [3]byte{0, 33, 202}:    "ART System Co., Ltd.",
-       [3]byte{0, 33, 203}:    "SMS TECNOLOGIA ELETRONICA LTDA",
-       [3]byte{0, 33, 204}:    "Flextronics International",
-       [3]byte{0, 33, 205}:    "LiveTV",
-       [3]byte{0, 33, 206}:    "NTC-Metrotek",
-       [3]byte{0, 33, 207}:    "The Crypto Group",
-       [3]byte{0, 33, 208}:    "Global Display Solutions Spa",
-       [3]byte{0, 33, 209}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 33, 210}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 33, 211}:    "BOCOM SECURITY(ASIA PACIFIC) LIMITED",
-       [3]byte{0, 33, 212}:    "Vollmer Werke GmbH",
-       [3]byte{0, 33, 213}:    "X2E GmbH",
-       [3]byte{0, 33, 214}:    "LXI Consortium",
-       [3]byte{0, 33, 215}:    "Cisco Systems, Inc",
-       [3]byte{0, 33, 216}:    "Cisco Systems, Inc",
-       [3]byte{0, 33, 217}:    "SEKONIC CORPORATION",
-       [3]byte{0, 33, 218}:    "Automation Products Group Inc.",
-       [3]byte{0, 33, 219}:    "Santachi Video Technology (Shenzhen) Co., Ltd.",
-       [3]byte{0, 33, 220}:    "TECNOALARM S.r.l.",
-       [3]byte{0, 33, 221}:    "Northstar Systems Corp",
-       [3]byte{0, 33, 222}:    "Firepro Wireless",
-       [3]byte{0, 33, 223}:    "Martin Christ GmbH",
-       [3]byte{0, 33, 224}:    "CommAgility Ltd",
-       [3]byte{0, 33, 225}:    "Nortel Networks",
-       [3]byte{0, 33, 226}:    "visago Systems & Controls GmbH & Co. KG",
-       [3]byte{0, 33, 227}:    "SerialTek LLC",
-       [3]byte{0, 33, 228}:    "I-WIN",
-       [3]byte{0, 33, 229}:    "Display Solution AG",
-       [3]byte{0, 33, 230}:    "Starlight Video Limited",
-       [3]byte{0, 33, 231}:    "Informatics Services Corporation",
-       [3]byte{0, 33, 232}:    "Murata Manufacturing Co., Ltd.",
-       [3]byte{0, 33, 233}:    "Apple, Inc.",
-       [3]byte{0, 33, 234}:    "Bystronic Laser AG",
-       [3]byte{0, 33, 235}:    "ESP SYSTEMS, LLC",
-       [3]byte{0, 33, 236}:    "Solutronic GmbH",
-       [3]byte{0, 33, 237}:    "Telegesis",
-       [3]byte{0, 33, 238}:    "Full Spectrum Inc.",
-       [3]byte{0, 33, 239}:    "Kapsys",
-       [3]byte{0, 33, 240}:    "EW3 Technologies LLC",
-       [3]byte{0, 33, 241}:    "Tutus Data AB",
-       [3]byte{0, 33, 242}:    "EASY3CALL Technology Limited",
-       [3]byte{0, 33, 243}:    "Si14 SpA",
-       [3]byte{0, 33, 244}:    "INRange Systems, Inc",
-       [3]byte{0, 33, 245}:    "Western Engravers Supply, Inc.",
-       [3]byte{0, 33, 246}:    "Oracle Corporation",
-       [3]byte{0, 33, 247}:    "HPN Supply Chain",
-       [3]byte{0, 33, 248}:    "Enseo, Inc.",
-       [3]byte{0, 33, 249}:    "WIRECOM Technologies",
-       [3]byte{0, 33, 250}:    "A4SP Technologies Ltd.",
-       [3]byte{0, 33, 251}:    "LG Electronics (Mobile Communications)",
-       [3]byte{0, 33, 252}:    "Nokia Danmark A/S",
-       [3]byte{0, 33, 253}:    "LACROIX TRAFFIC S.A.U",
-       [3]byte{0, 33, 254}:    "Nokia Danmark A/S",
-       [3]byte{0, 33, 255}:    "Cyfrowy Polsat SA",
-       [3]byte{0, 34, 0}:      "IBM Corp",
-       [3]byte{0, 34, 1}:      "Aksys Networks Inc",
-       [3]byte{0, 34, 2}:      "Excito Elektronik i Skåne AB",
-       [3]byte{0, 34, 3}:      "Glensound Electronics Ltd",
-       [3]byte{0, 34, 4}:      "KORATEK",
-       [3]byte{0, 34, 5}:      "WeLink Solutions, Inc.",
-       [3]byte{0, 34, 6}:      "Cyberdyne Inc.",
-       [3]byte{0, 34, 7}:      "Inteno Broadband Technology AB",
-       [3]byte{0, 34, 8}:      "Certicom Corp",
-       [3]byte{0, 34, 9}:      "Omron Healthcare Co., Ltd",
-       [3]byte{0, 34, 10}:     "OnLive, Inc",
-       [3]byte{0, 34, 11}:     "National Source Coding Center",
-       [3]byte{0, 34, 12}:     "Cisco Systems, Inc",
-       [3]byte{0, 34, 13}:     "Cisco Systems, Inc",
-       [3]byte{0, 34, 14}:     "Indigo Security Co., Ltd.",
-       [3]byte{0, 34, 15}:     "MoCA (Multimedia over Coax Alliance)",
-       [3]byte{0, 34, 16}:     "ARRIS Group, Inc.",
-       [3]byte{0, 34, 17}:     "Rohati Systems",
-       [3]byte{0, 34, 18}:     "CAI Networks, Inc.",
-       [3]byte{0, 34, 19}:     "PCI CORPORATION",
-       [3]byte{0, 34, 20}:     "RINNAI KOREA",
-       [3]byte{0, 34, 21}:     "ASUSTek COMPUTER INC.",
-       [3]byte{0, 34, 22}:     "SHIBAURA VENDING MACHINE CORPORATION",
-       [3]byte{0, 34, 23}:     "Neat Electronics",
-       [3]byte{0, 34, 24}:     "Verivue Inc.",
-       [3]byte{0, 34, 25}:     "Dell Inc.",
-       [3]byte{0, 34, 26}:     "Audio Precision",
-       [3]byte{0, 34, 27}:     "Morega Systems",
-       [3]byte{0, 34, 28}:     "Private",
-       [3]byte{0, 34, 29}:     "Freegene Technology LTD",
-       [3]byte{0, 34, 30}:     "Media Devices Co., Ltd.",
-       [3]byte{0, 34, 31}:     "eSang Technologies Co., Ltd.",
-       [3]byte{0, 34, 32}:     "Mitac Technology Corp",
-       [3]byte{0, 34, 33}:     "ITOH DENKI CO,LTD.",
-       [3]byte{0, 34, 34}:     "Schaffner Deutschland GmbH",
-       [3]byte{0, 34, 35}:     "TimeKeeping Systems, Inc.",
-       [3]byte{0, 34, 36}:     "Good Will Instrument Co., Ltd.",
-       [3]byte{0, 34, 37}:     "Thales Avionics Ltd",
-       [3]byte{0, 34, 38}:     "Avaak, Inc.",
-       [3]byte{0, 34, 39}:     "uv-electronic GmbH",
-       [3]byte{0, 34, 40}:     "Breeze Innovations Ltd.",
-       [3]byte{0, 34, 41}:     "Compumedics Ltd",
-       [3]byte{0, 34, 42}:     "SoundEar A/S",
-       [3]byte{0, 34, 43}:     "Nucomm, Inc.",
-       [3]byte{0, 34, 44}:     "Ceton Corp",
-       [3]byte{0, 34, 45}:     "SMC Networks Inc.",
-       [3]byte{0, 34, 46}:     "maintech GmbH",
-       [3]byte{0, 34, 47}:     "Open Grid Computing, Inc.",
-       [3]byte{0, 34, 48}:     "FutureLogic Inc.",
-       [3]byte{0, 34, 49}:     "SMT&C Co., Ltd.",
-       [3]byte{0, 34, 50}:     "Design Design Technology Ltd",
-       [3]byte{0, 34, 51}:     "ADB Broadband Italia",
-       [3]byte{0, 34, 52}:     "Corventis Inc.",
-       [3]byte{0, 34, 53}:     "Strukton Systems bv",
-       [3]byte{0, 34, 54}:     "VECTOR SP. Z O.O.",
-       [3]byte{0, 34, 55}:     "Shinhint Group",
-       [3]byte{0, 34, 56}:     "LOGIPLUS",
-       [3]byte{0, 34, 57}:     "Indiana Life Sciences Incorporated",
-       [3]byte{0, 34, 58}:     "Cisco SPVTG",
-       [3]byte{0, 34, 59}:     "Communication Networks, LLC",
-       [3]byte{0, 34, 60}:     "RATIO Entwicklungen GmbH",
-       [3]byte{0, 34, 61}:     "JumpGen Systems, LLC",
-       [3]byte{0, 34, 62}:     "IRTrans GmbH",
-       [3]byte{0, 34, 63}:     "NETGEAR",
-       [3]byte{0, 34, 64}:     "Universal Telecom S/A",
-       [3]byte{0, 34, 65}:     "Apple, Inc.",
-       [3]byte{0, 34, 66}:     "Alacron Inc.",
-       [3]byte{0, 34, 67}:     "AzureWave Technology Inc.",
-       [3]byte{0, 34, 68}:     "Chengdu Linkon Communications Device Co., Ltd",
-       [3]byte{0, 34, 69}:     "Leine & Linde AB",
-       [3]byte{0, 34, 70}:     "Evoc Intelligent Technology Co.,Ltd.",
-       [3]byte{0, 34, 71}:     "DAC ENGINEERING CO., LTD.",
-       [3]byte{0, 34, 72}:     "Microsoft Corporation",
-       [3]byte{0, 34, 73}:     "HOME MULTIENERGY SL",
-       [3]byte{0, 34, 74}:     "RAYLASE AG",
-       [3]byte{0, 34, 75}:     "AIRTECH TECHNOLOGIES, INC.",
-       [3]byte{0, 34, 76}:     "Nintendo Co., Ltd.",
-       [3]byte{0, 34, 77}:     "MITAC INTERNATIONAL CORP.",
-       [3]byte{0, 34, 78}:     "SEEnergy Corp.",
-       [3]byte{0, 34, 79}:     "Byzoro Networks Ltd.",
-       [3]byte{0, 34, 80}:     "Point Six Wireless, LLC",
-       [3]byte{0, 34, 81}:     "Lumasense Technologies",
-       [3]byte{0, 34, 82}:     "ZOLL Lifecor Corporation",
-       [3]byte{0, 34, 83}:     "Entorian Technologies",
-       [3]byte{0, 34, 84}:     "Bigelow Aerospace",
-       [3]byte{0, 34, 85}:     "Cisco Systems, Inc",
-       [3]byte{0, 34, 86}:     "Cisco Systems, Inc",
-       [3]byte{0, 34, 87}:     "3COM EUROPE LTD",
-       [3]byte{0, 34, 88}:     "Taiyo Yuden Co., Ltd.",
-       [3]byte{0, 34, 89}:     "Guangzhou New Postcom Equipment Co.,Ltd.",
-       [3]byte{0, 34, 90}:     "Garde Security AB",
-       [3]byte{0, 34, 91}:     "Teradici Corporation",
-       [3]byte{0, 34, 92}:     "Multimedia & Communication Technology",
-       [3]byte{0, 34, 93}:     "Digicable Network India Pvt. Ltd.",
-       [3]byte{0, 34, 94}:     "Uwin Technologies Co.,LTD",
-       [3]byte{0, 34, 95}:     "Liteon Technology Corporation",
-       [3]byte{0, 34, 96}:     "AFREEY Inc.",
-       [3]byte{0, 34, 97}:     "Frontier Silicon Ltd",
-       [3]byte{0, 34, 98}:     "BEP Marine",
-       [3]byte{0, 34, 99}:     "Koos Technical Services, Inc.",
-       [3]byte{0, 34, 100}:    "Hewlett Packard",
-       [3]byte{0, 34, 101}:    "Nokia Danmark A/S",
-       [3]byte{0, 34, 102}:    "Nokia Danmark A/S",
-       [3]byte{0, 34, 103}:    "Nortel Networks",
-       [3]byte{0, 34, 104}:    "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{0, 34, 105}:    "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{0, 34, 106}:    "Honeywell",
-       [3]byte{0, 34, 107}:    "Cisco-Linksys, LLC",
-       [3]byte{0, 34, 108}:    "LinkSprite Technologies, Inc.",
-       [3]byte{0, 34, 109}:    "Shenzhen GIEC Electronics Co., Ltd.",
-       [3]byte{0, 34, 110}:    "Gowell Electronic Limited",
-       [3]byte{0, 34, 111}:    "3onedata Technology Co. Ltd.",
-       [3]byte{0, 34, 112}:    "ABK North America, LLC",
-       [3]byte{0, 34, 113}:    "Jäger Computergesteuerte Meßtechnik GmbH.",
-       [3]byte{0, 34, 114}:    "American Micro-Fuel Device Corp.",
-       [3]byte{0, 34, 115}:    "Techway",
-       [3]byte{0, 34, 116}:    "FamilyPhone AB",
-       [3]byte{0, 34, 117}:    "Belkin International Inc.",
-       [3]byte{0, 34, 118}:    "Triple EYE B.V.",
-       [3]byte{0, 34, 119}:    "NEC Australia Pty Ltd",
-       [3]byte{0, 34, 120}:    "Shenzhen  Tongfang Multimedia  Technology Co.,Ltd.",
-       [3]byte{0, 34, 121}:    "Nippon Conlux Co., Ltd.",
-       [3]byte{0, 34, 122}:    "Telecom Design",
-       [3]byte{0, 34, 123}:    "Apogee Labs, Inc.",
-       [3]byte{0, 34, 124}:    "Woori SMT Co.,ltd",
-       [3]byte{0, 34, 125}:    "YE DATA INC.",
-       [3]byte{0, 34, 126}:    "Chengdu 30Kaitian Communication Industry Co.Ltd",
-       [3]byte{0, 34, 127}:    "Ruckus Wireless",
-       [3]byte{0, 34, 128}:    "A2B Electronics AB",
-       [3]byte{0, 34, 129}:    "Daintree Networks Pty",
-       [3]byte{0, 34, 130}:    "8086 Consultancy",
-       [3]byte{0, 34, 131}:    "Juniper Networks",
-       [3]byte{0, 34, 132}:    "DESAY A&V SCIENCE AND TECHNOLOGY CO.,LTD",
-       [3]byte{0, 34, 133}:    "NOMUS COMM SYSTEMS",
-       [3]byte{0, 34, 134}:    "ASTRON",
-       [3]byte{0, 34, 135}:    "Titan Wireless LLC",
-       [3]byte{0, 34, 136}:    "Sagrad, Inc.",
-       [3]byte{0, 34, 137}:    "Optosecurity Inc.",
-       [3]byte{0, 34, 138}:    "Teratronik elektronische systeme gmbh",
-       [3]byte{0, 34, 139}:    "Kensington Computer Products Group",
-       [3]byte{0, 34, 140}:    "Photon Europe GmbH",
-       [3]byte{0, 34, 141}:    "GBS Laboratories LLC",
-       [3]byte{0, 34, 142}:    "TV-NUMERIC",
-       [3]byte{0, 34, 143}:    "CNRS",
-       [3]byte{0, 34, 144}:    "Cisco Systems, Inc",
-       [3]byte{0, 34, 145}:    "Cisco Systems, Inc",
-       [3]byte{0, 34, 146}:    "Cinetal",
-       [3]byte{0, 34, 147}:    "zte corporation",
-       [3]byte{0, 34, 148}:    "KYOCERA CORPORATION",
-       [3]byte{0, 34, 149}:    "SGM Technology for lighting spa",
-       [3]byte{0, 34, 150}:    "LinoWave Corporation",
-       [3]byte{0, 34, 151}:    "XMOS Semiconductor",
-       [3]byte{0, 34, 152}:    "Sony Mobile Communications AB",
-       [3]byte{0, 34, 153}:    "SeaMicro Inc.",
-       [3]byte{0, 34, 154}:    "Lastar, Inc.",
-       [3]byte{0, 34, 155}:    "AverLogic Technologies, Inc.",
-       [3]byte{0, 34, 156}:    "Verismo Networks Inc",
-       [3]byte{0, 34, 157}:    "PYUNG-HWA IND.CO.,LTD",
-       [3]byte{0, 34, 158}:    "Social Aid Research Co., Ltd.",
-       [3]byte{0, 34, 159}:    "Sensys Traffic AB",
-       [3]byte{0, 34, 160}:    "Delphi Corporation",
-       [3]byte{0, 34, 161}:    "Huawei Symantec Technologies Co.,Ltd.",
-       [3]byte{0, 34, 162}:    "Xtramus Technologies",
-       [3]byte{0, 34, 163}:    "California Eastern Laboratories",
-       [3]byte{0, 34, 164}:    "2Wire Inc",
-       [3]byte{0, 34, 165}:    "Texas Instruments",
-       [3]byte{0, 34, 166}:    "Sony Computer Entertainment America",
-       [3]byte{0, 34, 167}:    "Tyco Electronics AMP GmbH",
-       [3]byte{0, 34, 168}:    "Ouman Oy",
-       [3]byte{0, 34, 169}:    "LG Electronics (Mobile Communications)",
-       [3]byte{0, 34, 170}:    "Nintendo Co., Ltd.",
-       [3]byte{0, 34, 171}:    "Shenzhen Turbosight Technology Ltd",
-       [3]byte{0, 34, 172}:    "Hangzhou Siyuan Tech. Co., Ltd",
-       [3]byte{0, 34, 173}:    "TELESIS TECHNOLOGIES, INC.",
-       [3]byte{0, 34, 174}:    "Mattel Inc.",
-       [3]byte{0, 34, 175}:    "Safety Vision",
-       [3]byte{0, 34, 176}:    "D-Link Corporation",
-       [3]byte{0, 34, 177}:    "Elbit Systems Ltd.",
-       [3]byte{0, 34, 178}:    "4RF Communications Ltd",
-       [3]byte{0, 34, 179}:    "Sei S.p.A.",
-       [3]byte{0, 34, 180}:    "ARRIS Group, Inc.",
-       [3]byte{0, 34, 181}:    "NOVITA",
-       [3]byte{0, 34, 182}:    "Superflow Technologies Group",
-       [3]byte{0, 34, 183}:    "GSS Grundig SAT-Systems GmbH",
-       [3]byte{0, 34, 184}:    "Norcott",
-       [3]byte{0, 34, 185}:    "Analogix Seminconductor, Inc",
-       [3]byte{0, 34, 186}:    "HUTH Elektronik Systeme GmbH",
-       [3]byte{0, 34, 187}:    "beyerdynamic GmbH & Co. KG",
-       [3]byte{0, 34, 188}:    "JDSU France SAS",
-       [3]byte{0, 34, 189}:    "Cisco Systems, Inc",
-       [3]byte{0, 34, 190}:    "Cisco Systems, Inc",
-       [3]byte{0, 34, 191}:    "SieAmp Group of Companies",
-       [3]byte{0, 34, 192}:    "Shenzhen Forcelink Electronic Co, Ltd",
-       [3]byte{0, 34, 193}:    "Active Storage Inc.",
-       [3]byte{0, 34, 194}:    "Proview Eletrônica do Brasil LTDA",
-       [3]byte{0, 34, 195}:    "Zeeport Technology Inc.",
-       [3]byte{0, 34, 196}:    "epro GmbH",
-       [3]byte{0, 34, 197}:    "INFORSON Co,Ltd.",
-       [3]byte{0, 34, 198}:    "Sutus Inc",
-       [3]byte{0, 34, 199}:    "SEGGER Microcontroller GmbH & Co. KG",
-       [3]byte{0, 34, 200}:    "Applied Instruments B.V.",
-       [3]byte{0, 34, 201}:    "Lenord, Bauer & Co GmbH",
-       [3]byte{0, 34, 202}:    "Anviz Biometric Tech. Co., Ltd.",
-       [3]byte{0, 34, 203}:    "IONODES Inc.",
-       [3]byte{0, 34, 204}:    "SciLog, Inc.",
-       [3]byte{0, 34, 205}:    "Ared Technology Co., Ltd.",
-       [3]byte{0, 34, 206}:    "Cisco SPVTG",
-       [3]byte{0, 34, 207}:    "PLANEX COMMUNICATIONS INC.",
-       [3]byte{0, 34, 208}:    "Polar Electro Oy",
-       [3]byte{0, 34, 209}:    "Albrecht Jung GmbH & Co. KG",
-       [3]byte{0, 34, 210}:    "All Earth Comércio de Eletrônicos LTDA.",
-       [3]byte{0, 34, 211}:    "Hub-Tech",
-       [3]byte{0, 34, 212}:    "ComWorth Co., Ltd.",
-       [3]byte{0, 34, 213}:    "Eaton Corp. Electrical Group Data Center Solutions - Pulizzi",
-       [3]byte{0, 34, 214}:    "Cypak AB",
-       [3]byte{0, 34, 215}:    "Nintendo Co., Ltd.",
-       [3]byte{0, 34, 216}:    "Shenzhen GST Security and Safety Technology Limited",
-       [3]byte{0, 34, 217}:    "Fortex Industrial Ltd.",
-       [3]byte{0, 34, 218}:    "ANATEK, LLC",
-       [3]byte{0, 34, 219}:    "Translogic Corporation",
-       [3]byte{0, 34, 220}:    "Vigil Health Solutions Inc.",
-       [3]byte{0, 34, 221}:    "Protecta Electronics Ltd",
-       [3]byte{0, 34, 222}:    "OPPO Digital, Inc.",
-       [3]byte{0, 34, 223}:    "TAMUZ Monitors",
-       [3]byte{0, 34, 224}:    "Atlantic Software Technologies S.r.L.",
-       [3]byte{0, 34, 225}:    "ZORT Labs, LLC.",
-       [3]byte{0, 34, 226}:    "WABTEC Transit Division",
-       [3]byte{0, 34, 227}:    "Amerigon",
-       [3]byte{0, 34, 228}:    "APASS TECHNOLOGY CO., LTD.",
-       [3]byte{0, 34, 229}:    "Fisher-Rosemount Systems Inc.",
-       [3]byte{0, 34, 230}:    "Intelligent Data",
-       [3]byte{0, 34, 231}:    "WPS Parking Systems",
-       [3]byte{0, 34, 232}:    "Applition Co., Ltd.",
-       [3]byte{0, 34, 233}:    "ProVision Communications",
-       [3]byte{0, 34, 234}:    "Rustelcom Inc.",
-       [3]byte{0, 34, 235}:    "Data Respons A/S",
-       [3]byte{0, 34, 236}:    "IDEALBT TECHNOLOGY CORPORATION",
-       [3]byte{0, 34, 237}:    "TSI Power Corporation",
-       [3]byte{0, 34, 238}:    "Algo Communication Products Ltd",
-       [3]byte{0, 34, 239}:    "iWDL Technologies",
-       [3]byte{0, 34, 240}:    "3 Greens Aviation Limited",
-       [3]byte{0, 34, 241}:    "Private",
-       [3]byte{0, 34, 242}:    "SunPower Corp",
-       [3]byte{0, 34, 243}:    "SHARP Corporation",
-       [3]byte{0, 34, 244}:    "AMPAK Technology, Inc.",
-       [3]byte{0, 34, 245}:    "Advanced Realtime Tracking GmbH",
-       [3]byte{0, 34, 246}:    "Syracuse Research Corporation",
-       [3]byte{0, 34, 247}:    "Conceptronic",
-       [3]byte{0, 34, 248}:    "PIMA Electronic Systems Ltd.",
-       [3]byte{0, 34, 249}:    "Pollin Electronic GmbH",
-       [3]byte{0, 34, 250}:    "Intel Corporate",
-       [3]byte{0, 34, 251}:    "Intel Corporate",
-       [3]byte{0, 34, 252}:    "Nokia Danmark A/S",
-       [3]byte{0, 34, 253}:    "Nokia Danmark A/S",
-       [3]byte{0, 34, 254}:    "Advanced Illumination",
-       [3]byte{0, 34, 255}:    "NIVIS LLC",
-       [3]byte{0, 35, 0}:      "Cayee Computer Ltd.",
-       [3]byte{0, 35, 1}:      "Witron Technology Limited",
-       [3]byte{0, 35, 2}:      "Cobalt Digital, Inc.",
-       [3]byte{0, 35, 3}:      "LITE-ON IT Corporation",
-       [3]byte{0, 35, 4}:      "Cisco Systems, Inc",
-       [3]byte{0, 35, 5}:      "Cisco Systems, Inc",
-       [3]byte{0, 35, 6}:      "ALPS ELECTRIC CO.,LTD.",
-       [3]byte{0, 35, 7}:      "FUTURE INNOVATION TECH CO.,LTD",
-       [3]byte{0, 35, 8}:      "Arcadyan Technology Corporation",
-       [3]byte{0, 35, 9}:      "Janam Technologies LLC",
-       [3]byte{0, 35, 10}:     "ARBURG GmbH & Co KG",
-       [3]byte{0, 35, 11}:     "ARRIS Group, Inc.",
-       [3]byte{0, 35, 12}:     "CLOVER ELECTRONICS CO.,LTD.",
-       [3]byte{0, 35, 13}:     "Nortel Networks",
-       [3]byte{0, 35, 14}:     "Gorba AG",
-       [3]byte{0, 35, 15}:     "Hirsch Electronics Corporation",
-       [3]byte{0, 35, 16}:     "LNC Technology Co., Ltd.",
-       [3]byte{0, 35, 17}:     "Gloscom Co., Ltd.",
-       [3]byte{0, 35, 18}:     "Apple, Inc.",
-       [3]byte{0, 35, 19}:     "Qool Technologies Ltd.",
-       [3]byte{0, 35, 20}:     "Intel Corporate",
-       [3]byte{0, 35, 21}:     "Intel Corporate",
-       [3]byte{0, 35, 22}:     "KISAN ELECTRONICS CO",
-       [3]byte{0, 35, 23}:     "Lasercraft Inc",
-       [3]byte{0, 35, 24}:     "Toshiba",
-       [3]byte{0, 35, 25}:     "Sielox LLC",
-       [3]byte{0, 35, 26}:     "ITF Co., Ltd.",
-       [3]byte{0, 35, 27}:     "Danaher Motion - Kollmorgen",
-       [3]byte{0, 35, 28}:     "Fourier Systems Ltd.",
-       [3]byte{0, 35, 29}:     "Deltacom Electronics Ltd",
-       [3]byte{0, 35, 30}:     "Cezzer Multimedia Technologies",
-       [3]byte{0, 35, 31}:     "Guangda Electronic & Telecommunication Technology Development Co., Ltd.",
-       [3]byte{0, 35, 32}:     "Nicira Networks",
-       [3]byte{0, 35, 33}:     "Avitech International Corp",
-       [3]byte{0, 35, 34}:     "KISS Teknical Solutions, Inc.",
-       [3]byte{0, 35, 35}:     "Zylin AS",
-       [3]byte{0, 35, 36}:     "G-PRO COMPUTER",
-       [3]byte{0, 35, 37}:     "IOLAN Holding",
-       [3]byte{0, 35, 38}:     "FUJITSU LIMITED",
-       [3]byte{0, 35, 39}:     "Shouyo Electronics CO., LTD",
-       [3]byte{0, 35, 40}:     "ALCON TELECOMMUNICATIONS CO., LTD.",
-       [3]byte{0, 35, 41}:     "DDRdrive LLC",
-       [3]byte{0, 35, 42}:     "eonas IT-Beratung und -Entwicklung GmbH",
-       [3]byte{0, 35, 43}:     "IRD A/S",
-       [3]byte{0, 35, 44}:     "Senticare",
-       [3]byte{0, 35, 45}:     "SandForce",
-       [3]byte{0, 35, 46}:     "Kedah Electronics Engineering, LLC",
-       [3]byte{0, 35, 47}:     "Advanced Card Systems Ltd.",
-       [3]byte{0, 35, 48}:     "DIZIPIA, INC.",
-       [3]byte{0, 35, 49}:     "Nintendo Co., Ltd.",
-       [3]byte{0, 35, 50}:     "Apple, Inc.",
-       [3]byte{0, 35, 51}:     "Cisco Systems, Inc",
-       [3]byte{0, 35, 52}:     "Cisco Systems, Inc",
-       [3]byte{0, 35, 53}:     "Linkflex Co.,Ltd",
-       [3]byte{0, 35, 54}:     "METEL s.r.o.",
-       [3]byte{0, 35, 55}:     "Global Star Solutions ULC",
-       [3]byte{0, 35, 56}:     "OJ-Electronics A/S",
-       [3]byte{0, 35, 57}:     "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 35, 58}:     "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 35, 59}:     "C-Matic Systems Ltd",
-       [3]byte{0, 35, 60}:     "Alflex",
-       [3]byte{0, 35, 61}:     "Novero holding B.V.",
-       [3]byte{0, 35, 62}:     "Alcatel-Lucent IPD",
-       [3]byte{0, 35, 63}:     "Purechoice Inc",
-       [3]byte{0, 35, 64}:     "MiXTelematics",
-       [3]byte{0, 35, 65}:     "Vanderbilt International (SWE) AB",
-       [3]byte{0, 35, 66}:     "Coffee Equipment Company",
-       [3]byte{0, 35, 67}:     "TEM AG",
-       [3]byte{0, 35, 68}:     "Objective Interface Systems, Inc.",
-       [3]byte{0, 35, 69}:     "Sony Mobile Communications AB",
-       [3]byte{0, 35, 70}:     "Vestac",
-       [3]byte{0, 35, 71}:     "ProCurve Networking by HP",
-       [3]byte{0, 35, 72}:     "Sagemcom Broadband SAS",
-       [3]byte{0, 35, 73}:     "Helmholtz Centre Berlin for Material and Energy",
-       [3]byte{0, 35, 74}:     "Private",
-       [3]byte{0, 35, 75}:     "Inyuan Technology Inc.",
-       [3]byte{0, 35, 76}:     "KTC AB",
-       [3]byte{0, 35, 77}:     "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{0, 35, 78}:     "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{0, 35, 79}:     "Luminous Power Technologies Pvt. Ltd.",
-       [3]byte{0, 35, 80}:     "LynTec",
-       [3]byte{0, 35, 81}:     "2Wire Inc",
-       [3]byte{0, 35, 82}:     "DATASENSOR S.p.A.",
-       [3]byte{0, 35, 83}:     "F E T Elettronica snc",
-       [3]byte{0, 35, 84}:     "ASUSTek COMPUTER INC.",
-       [3]byte{0, 35, 85}:     "Kinco Automation(Shanghai) Ltd.",
-       [3]byte{0, 35, 86}:     "Packet Forensics LLC",
-       [3]byte{0, 35, 87}:     "Pitronot Technologies and Engineering P.T.E. Ltd.",
-       [3]byte{0, 35, 88}:     "SYSTEL SA",
-       [3]byte{0, 35, 89}:     "Benchmark Electronics ( Thailand ) Public Company Limited",
-       [3]byte{0, 35, 90}:     "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
-       [3]byte{0, 35, 91}:     "Gulfstream",
-       [3]byte{0, 35, 92}:     "Aprius, Inc.",
-       [3]byte{0, 35, 93}:     "Cisco Systems, Inc",
-       [3]byte{0, 35, 94}:     "Cisco Systems, Inc",
-       [3]byte{0, 35, 95}:     "Silicon Micro Sensors GmbH",
-       [3]byte{0, 35, 96}:     "Lookit Technology Co., Ltd",
-       [3]byte{0, 35, 97}:     "Unigen Corporation",
-       [3]byte{0, 35, 98}:     "Goldline Controls",
-       [3]byte{0, 35, 99}:     "Zhuhai Raysharp Technology Co.,Ltd",
-       [3]byte{0, 35, 100}:    "Power Instruments Pte Ltd",
-       [3]byte{0, 35, 101}:    "Insta Elektro GmbH",
-       [3]byte{0, 35, 102}:    "Beijing Siasun Electronic System Co.,Ltd.",
-       [3]byte{0, 35, 103}:    "UniControls a.s.",
-       [3]byte{0, 35, 104}:    "Zebra Technologies Inc",
-       [3]byte{0, 35, 105}:    "Cisco-Linksys, LLC",
-       [3]byte{0, 35, 106}:    "SmartRG Inc",
-       [3]byte{0, 35, 107}:    "Xembedded, Inc.",
-       [3]byte{0, 35, 108}:    "Apple, Inc.",
-       [3]byte{0, 35, 109}:    "ResMed Ltd",
-       [3]byte{0, 35, 110}:    "Burster GmbH & Co KG",
-       [3]byte{0, 35, 111}:    "DAQ System",
-       [3]byte{0, 35, 112}:    "Snell",
-       [3]byte{0, 35, 113}:    "SOAM Systel",
-       [3]byte{0, 35, 114}:    "MORE STAR INDUSTRIAL GROUP LIMITED",
-       [3]byte{0, 35, 115}:    "GridIron Systems, Inc.",
-       [3]byte{0, 35, 116}:    "ARRIS Group, Inc.",
-       [3]byte{0, 35, 117}:    "ARRIS Group, Inc.",
-       [3]byte{0, 35, 118}:    "HTC Corporation",
-       [3]byte{0, 35, 119}:    "Isotek Electronics Ltd",
-       [3]byte{0, 35, 120}:    "GN Netcom A/S",
-       [3]byte{0, 35, 121}:    "Union Business Machines Co. Ltd.",
-       [3]byte{0, 35, 122}:    "RIM",
-       [3]byte{0, 35, 123}:    "WHDI LLC",
-       [3]byte{0, 35, 124}:    "NEOTION",
-       [3]byte{0, 35, 125}:    "Hewlett Packard",
-       [3]byte{0, 35, 126}:    "ELSTER GMBH",
-       [3]byte{0, 35, 127}:    "PLANTRONICS, INC.",
-       [3]byte{0, 35, 128}:    "Nanoteq",
-       [3]byte{0, 35, 129}:    "Lengda Technology(Xiamen) Co.,Ltd.",
-       [3]byte{0, 35, 130}:    "Lih Rong electronic Enterprise Co., Ltd.",
-       [3]byte{0, 35, 131}:    "InMage Systems Inc",
-       [3]byte{0, 35, 132}:    "GGH Engineering s.r.l.",
-       [3]byte{0, 35, 133}:    "ANTIPODE",
-       [3]byte{0, 35, 134}:    "Tour & Andersson AB",
-       [3]byte{0, 35, 135}:    "ThinkFlood, Inc.",
-       [3]byte{0, 35, 136}:    "V.T. Telematica S.p.a.",
-       [3]byte{0, 35, 137}:    "Hangzhou H3C Technologies Co., Limited",
-       [3]byte{0, 35, 138}:    "Ciena Corporation",
-       [3]byte{0, 35, 139}:    "QUANTA COMPUTER INC.",
-       [3]byte{0, 35, 140}:    "Private",
-       [3]byte{0, 35, 141}:    "Techno Design Co., Ltd.",
-       [3]byte{0, 35, 142}:    "ADB Broadband Italia",
-       [3]byte{0, 35, 143}:    "NIDEC COPAL CORPORATION",
-       [3]byte{0, 35, 144}:    "Algolware Corporation",
-       [3]byte{0, 35, 145}:    "Maxian",
-       [3]byte{0, 35, 146}:    "Proteus Industries Inc.",
-       [3]byte{0, 35, 147}:    "AJINEXTEK",
-       [3]byte{0, 35, 148}:    "Samjeon",
-       [3]byte{0, 35, 149}:    "ARRIS Group, Inc.",
-       [3]byte{0, 35, 150}:    "ANDES TECHNOLOGY CORPORATION",
-       [3]byte{0, 35, 151}:    "Westell Technologies Inc.",
-       [3]byte{0, 35, 152}:    "Vutlan sro",
-       [3]byte{0, 35, 153}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 35, 154}:    "EasyData Hardware GmbH",
-       [3]byte{0, 35, 155}:    "Elster Solutions, LLC",
-       [3]byte{0, 35, 156}:    "Juniper Networks",
-       [3]byte{0, 35, 157}:    "Mapower Electronics Co., Ltd",
-       [3]byte{0, 35, 158}:    "Jiangsu Lemote Technology Corporation Limited",
-       [3]byte{0, 35, 159}:    "Institut für Prüftechnik",
-       [3]byte{0, 35, 160}:    "Hana CNS Co., LTD.",
-       [3]byte{0, 35, 161}:    "Trend Electronics Ltd",
-       [3]byte{0, 35, 162}:    "ARRIS Group, Inc.",
-       [3]byte{0, 35, 163}:    "ARRIS Group, Inc.",
-       [3]byte{0, 35, 164}:    "New Concepts Development Corp.",
-       [3]byte{0, 35, 165}:    "SageTV, LLC",
-       [3]byte{0, 35, 166}:    "E-Mon",
-       [3]byte{0, 35, 167}:    "Redpine Signals, Inc.",
-       [3]byte{0, 35, 168}:    "Marshall Electronics",
-       [3]byte{0, 35, 169}:    "Beijing Detianquan Electromechanical Equipment Co., Ltd",
-       [3]byte{0, 35, 170}:    "HFR, Inc.",
-       [3]byte{0, 35, 171}:    "Cisco Systems, Inc",
-       [3]byte{0, 35, 172}:    "Cisco Systems, Inc",
-       [3]byte{0, 35, 173}:    "Xmark Corporation",
-       [3]byte{0, 35, 174}:    "Dell Inc.",
-       [3]byte{0, 35, 175}:    "ARRIS Group, Inc.",
-       [3]byte{0, 35, 176}:    "COMXION Technology Inc.",
-       [3]byte{0, 35, 177}:    "Longcheer Technology (Singapore) Pte Ltd",
-       [3]byte{0, 35, 178}:    "Intelligent Mechatronic Systems Inc",
-       [3]byte{0, 35, 179}:    "Lyyn AB",
-       [3]byte{0, 35, 180}:    "Nokia Danmark A/S",
-       [3]byte{0, 35, 181}:    "ORTANA LTD",
-       [3]byte{0, 35, 182}:    "SECURITE COMMUNICATIONS / HONEYWELL",
-       [3]byte{0, 35, 183}:    "Q-Light Co., Ltd.",
-       [3]byte{0, 35, 184}:    "Sichuan Jiuzhou Electronic Technology Co.,Ltd",
-       [3]byte{0, 35, 185}:    "Airbus Defence and Space Deutschland GmbH",
-       [3]byte{0, 35, 186}:    "Chroma",
-       [3]byte{0, 35, 187}:    "Schmitt Industries",
-       [3]byte{0, 35, 188}:    "EQ-SYS GmbH",
-       [3]byte{0, 35, 189}:    "Digital Ally, Inc.",
-       [3]byte{0, 35, 190}:    "Cisco SPVTG",
-       [3]byte{0, 35, 191}:    "Mainpine, Inc.",
-       [3]byte{0, 35, 192}:    "Broadway Networks",
-       [3]byte{0, 35, 193}:    "Securitas Direct AB",
-       [3]byte{0, 35, 194}:    "SAMSUNG Electronics. Co. LTD",
-       [3]byte{0, 35, 195}:    "LogMeIn, Inc.",
-       [3]byte{0, 35, 196}:    "Lux Lumen",
-       [3]byte{0, 35, 197}:    "Radiation Safety and Control Services Inc",
-       [3]byte{0, 35, 198}:    "SMC Corporation",
-       [3]byte{0, 35, 199}:    "AVSystem",
-       [3]byte{0, 35, 200}:    "TEAM-R",
-       [3]byte{0, 35, 201}:    "Sichuan Tianyi Information Science & Technology Stock CO.,LTD",
-       [3]byte{0, 35, 202}:    "Behind The Set, LLC",
-       [3]byte{0, 35, 203}:    "Shenzhen Full-join Technology Co.,Ltd",
-       [3]byte{0, 35, 204}:    "Nintendo Co., Ltd.",
-       [3]byte{0, 35, 205}:    "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{0, 35, 206}:    "KITA DENSHI CORPORATION",
-       [3]byte{0, 35, 207}:    "CUMMINS-ALLISON CORP.",
-       [3]byte{0, 35, 208}:    "Uniloc USA Inc.",
-       [3]byte{0, 35, 209}:    "TRG",
-       [3]byte{0, 35, 210}:    "Inhand Electronics, Inc.",
-       [3]byte{0, 35, 211}:    "AirLink WiFi Networking Corp.",
-       [3]byte{0, 35, 212}:    "Texas Instruments",
-       [3]byte{0, 35, 213}:    "WAREMA electronic GmbH",
-       [3]byte{0, 35, 214}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 35, 215}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 35, 216}:    "Ball-It Oy",
-       [3]byte{0, 35, 217}:    "Banner Engineering",
-       [3]byte{0, 35, 218}:    "Industrial Computer Source (Deutschland)GmbH",
-       [3]byte{0, 35, 219}:    "saxnet gmbh",
-       [3]byte{0, 35, 220}:    "Benein, Inc",
-       [3]byte{0, 35, 221}:    "ELGIN S.A.",
-       [3]byte{0, 35, 222}:    "Ansync Inc.",
-       [3]byte{0, 35, 223}:    "Apple, Inc.",
-       [3]byte{0, 35, 224}:    "INO Therapeutics LLC",
-       [3]byte{0, 35, 225}:    "Cavena Image Products AB",
-       [3]byte{0, 35, 226}:    "SEA Signalisation",
-       [3]byte{0, 35, 227}:    "Microtronic AG",
-       [3]byte{0, 35, 228}:    "IPnect co. ltd.",
-       [3]byte{0, 35, 229}:    "IPaXiom Networks",
-       [3]byte{0, 35, 230}:    "Pirkus, Inc.",
-       [3]byte{0, 35, 231}:    "Hinke A/S",
-       [3]byte{0, 35, 232}:    "Demco Corp.",
-       [3]byte{0, 35, 233}:    "F5 Networks, Inc.",
-       [3]byte{0, 35, 234}:    "Cisco Systems, Inc",
-       [3]byte{0, 35, 235}:    "Cisco Systems, Inc",
-       [3]byte{0, 35, 236}:    "Algorithmix GmbH",
-       [3]byte{0, 35, 237}:    "ARRIS Group, Inc.",
-       [3]byte{0, 35, 238}:    "ARRIS Group, Inc.",
-       [3]byte{0, 35, 239}:    "Zuend Systemtechnik AG",
-       [3]byte{0, 35, 240}:    "Shanghai Jinghan Weighing Apparatus Co. Ltd.",
-       [3]byte{0, 35, 241}:    "Sony Mobile Communications AB",
-       [3]byte{0, 35, 242}:    "TVLogic",
-       [3]byte{0, 35, 243}:    "Glocom, Inc.",
-       [3]byte{0, 35, 244}:    "Masternaut",
-       [3]byte{0, 35, 245}:    "WILO SE",
-       [3]byte{0, 35, 246}:    "Softwell Technology Co., Ltd.",
-       [3]byte{0, 35, 247}:    "Private",
-       [3]byte{0, 35, 248}:    "Zyxel Communications Corporation",
-       [3]byte{0, 35, 249}:    "Double-Take Software, INC.",
-       [3]byte{0, 35, 250}:    "RG Nets, Inc.",
-       [3]byte{0, 35, 251}:    "IP Datatel, LLC.",
-       [3]byte{0, 35, 252}:    "Ultra Stereo Labs, Inc",
-       [3]byte{0, 35, 253}:    "AFT Atlas Fahrzeugtechnik GmbH",
-       [3]byte{0, 35, 254}:    "Biodevices, SA",
-       [3]byte{0, 35, 255}:    "Beijing HTTC Technology Ltd.",
-       [3]byte{0, 36, 0}:      "Nortel Networks",
-       [3]byte{0, 36, 1}:      "D-Link Corporation",
-       [3]byte{0, 36, 2}:      "Op-Tection GmbH",
-       [3]byte{0, 36, 3}:      "Nokia Danmark A/S",
-       [3]byte{0, 36, 4}:      "Nokia Danmark A/S",
-       [3]byte{0, 36, 5}:      "Dilog Nordic AB",
-       [3]byte{0, 36, 6}:      "Pointmobile",
-       [3]byte{0, 36, 7}:      "TELEM SAS",
-       [3]byte{0, 36, 8}:      "Pacific Biosciences",
-       [3]byte{0, 36, 9}:      "The Toro Company",
-       [3]byte{0, 36, 10}:     "US Beverage Net",
-       [3]byte{0, 36, 11}:     "Virtual Computer Inc.",
-       [3]byte{0, 36, 12}:     "DELEC GmbH",
-       [3]byte{0, 36, 13}:     "OnePath Networks LTD.",
-       [3]byte{0, 36, 14}:     "Inventec Besta Co., Ltd.",
-       [3]byte{0, 36, 15}:     "Ishii Tool & Engineering Corporation",
-       [3]byte{0, 36, 16}:     "NUETEQ Technology,Inc.",
-       [3]byte{0, 36, 17}:     "PharmaSmart LLC",
-       [3]byte{0, 36, 18}:     "Benign Technologies Co, Ltd.",
-       [3]byte{0, 36, 19}:     "Cisco Systems, Inc",
-       [3]byte{0, 36, 20}:     "Cisco Systems, Inc",
-       [3]byte{0, 36, 21}:     "Magnetic Autocontrol GmbH",
-       [3]byte{0, 36, 22}:     "Any Use",
-       [3]byte{0, 36, 23}:     "Thomson Telecom Belgium",
-       [3]byte{0, 36, 24}:     "Nextwave Semiconductor",
-       [3]byte{0, 36, 25}:     "Private",
-       [3]byte{0, 36, 26}:     "Red Beetle Inc.",
-       [3]byte{0, 36, 27}:     "iWOW Communications Pte Ltd",
-       [3]byte{0, 36, 28}:     "FuGang Electronic (DG) Co.,Ltd",
-       [3]byte{0, 36, 29}:     "GIGA-BYTE TECHNOLOGY CO.,LTD.",
-       [3]byte{0, 36, 30}:     "Nintendo Co., Ltd.",
-       [3]byte{0, 36, 31}:     "DCT-Delta GmbH",
-       [3]byte{0, 36, 32}:     "NetUP Inc.",
-       [3]byte{0, 36, 33}:     "MICRO-STAR INT'L CO., LTD.",
-       [3]byte{0, 36, 34}:     "Knapp Logistik Automation GmbH",
-       [3]byte{0, 36, 35}:     "AzureWave Technologies (Shanghai) Inc.",
-       [3]byte{0, 36, 36}:     "Ace Axis Limited",
-       [3]byte{0, 36, 37}:     "Shenzhenshi chuangzhicheng Technology Co.,Ltd",
-       [3]byte{0, 36, 38}:     "NOHMI BOSAI LTD.",
-       [3]byte{0, 36, 39}:     "SSI COMPUTER CORP",
-       [3]byte{0, 36, 40}:     "EnergyICT",
-       [3]byte{0, 36, 41}:     "MK MASTER INC.",
-       [3]byte{0, 36, 42}:     "Hittite Microwave Corporation",
-       [3]byte{0, 36, 43}:     "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{0, 36, 44}:     "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{0, 36, 46}:     "Datastrip Inc.",
-       [3]byte{0, 36, 47}:     "Micron",
-       [3]byte{0, 36, 48}:     "Ruby Tech Corp.",
-       [3]byte{0, 36, 49}:     "Uni-v co.,ltd",
-       [3]byte{0, 36, 50}:     "Neostar Technology Co.,LTD",
-       [3]byte{0, 36, 51}:     "ALPS ELECTRIC CO.,LTD.",
-       [3]byte{0, 36, 52}:     "Lectrosonics, Inc.",
-       [3]byte{0, 36, 53}:     "WIDE CORPORATION",
-       [3]byte{0, 36, 54}:     "Apple, Inc.",
-       [3]byte{0, 36, 55}:     "Motorola - BSG",
-       [3]byte{0, 36, 56}:     "Brocade Communications Systems, Inc.",
-       [3]byte{0, 36, 57}:     "Digital Barriers Advanced Technologies",
-       [3]byte{0, 36, 58}:     "Ludl Electronic Products",
-       [3]byte{0, 36, 59}:     "CSSI (S) Pte Ltd",
-       [3]byte{0, 36, 60}:     "S.A.A.A.",
-       [3]byte{0, 36, 61}:     "Emerson Appliance Motors and Controls",
-       [3]byte{0, 36, 63}:     "Storwize, Inc.",
-       [3]byte{0, 36, 64}:     "Halo Monitoring, Inc.",
-       [3]byte{0, 36, 65}:     "Wanzl Metallwarenfabrik GmbH",
-       [3]byte{0, 36, 66}:     "Axona Limited",
-       [3]byte{0, 36, 67}:     "Nortel Networks",
-       [3]byte{0, 36, 68}:     "Nintendo Co., Ltd.",
-       [3]byte{0, 36, 69}:     "Adtran Inc",
-       [3]byte{0, 36, 70}:     "MMB Research Inc.",
-       [3]byte{0, 36, 71}:     "Kaztek Systems",
-       [3]byte{0, 36, 72}:     "SpiderCloud Wireless, Inc",
-       [3]byte{0, 36, 73}:     "Shen Zhen Lite Star Electronics Technology Co., Ltd",
-       [3]byte{0, 36, 74}:     "Voyant International",
-       [3]byte{0, 36, 75}:     "PERCEPTRON INC",
-       [3]byte{0, 36, 76}:     "Solartron Metrology Ltd",
-       [3]byte{0, 36, 77}:     "Hokkaido Electronics Corporation",
-       [3]byte{0, 36, 78}:     "RadChips, Inc.",
-       [3]byte{0, 36, 79}:     "Asantron Technologies Ltd.",
-       [3]byte{0, 36, 80}:     "Cisco Systems, Inc",
-       [3]byte{0, 36, 81}:     "Cisco Systems, Inc",
-       [3]byte{0, 36, 82}:     "Silicon Software GmbH",
-       [3]byte{0, 36, 83}:     "Initra d.o.o.",
-       [3]byte{0, 36, 84}:     "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 36, 85}:     "MuLogic BV",
-       [3]byte{0, 36, 86}:     "2Wire Inc",
-       [3]byte{0, 36, 88}:     "PA Bastion CC",
-       [3]byte{0, 36, 89}:     "ABB Automation products GmbH",
-       [3]byte{0, 36, 90}:     "Nanjing Panda Electronics Company Limited",
-       [3]byte{0, 36, 91}:     "RAIDON TECHNOLOGY, INC.",
-       [3]byte{0, 36, 92}:     "Design-Com Technologies Pty. Ltd.",
-       [3]byte{0, 36, 93}:     "Terberg besturingstechniek B.V.",
-       [3]byte{0, 36, 94}:     "Hivision Co.,ltd",
-       [3]byte{0, 36, 95}:     "Vine Telecom CO.,Ltd.",
-       [3]byte{0, 36, 96}:     "Giaval Science Development Co. Ltd.",
-       [3]byte{0, 36, 97}:     "Shin Wang Tech.",
-       [3]byte{0, 36, 98}:     "Rayzone Corporation",
-       [3]byte{0, 36, 99}:     "Phybridge Inc",
-       [3]byte{0, 36, 100}:    "Bridge Technologies Co AS",
-       [3]byte{0, 36, 101}:    "Elentec",
-       [3]byte{0, 36, 102}:    "Unitron nv",
-       [3]byte{0, 36, 103}:    "AOC International (Europe) GmbH",
-       [3]byte{0, 36, 104}:    "Sumavision Technologies Co.,Ltd",
-       [3]byte{0, 36, 105}:    "Smart Doorphones",
-       [3]byte{0, 36, 106}:    "Solid Year Co., Ltd.",
-       [3]byte{0, 36, 107}:    "Covia, Inc.",
-       [3]byte{0, 36, 108}:    "Aruba Networks",
-       [3]byte{0, 36, 109}:    "Weinzierl Engineering GmbH",
-       [3]byte{0, 36, 110}:    "Phihong USA Corp.",
-       [3]byte{0, 36, 111}:    "Onda Communication spa",
-       [3]byte{0, 36, 112}:    "AUROTECH ultrasound AS.",
-       [3]byte{0, 36, 113}:    "Fusion MultiSystems dba Fusion-io",
-       [3]byte{0, 36, 114}:    "ReDriven Power Inc.",
-       [3]byte{0, 36, 115}:    "3COM EUROPE LTD",
-       [3]byte{0, 36, 116}:    "Autronica Fire And Securirty",
-       [3]byte{0, 36, 117}:    "Compass System(Embedded Dept.)",
-       [3]byte{0, 36, 118}:    "TAP.tv",
-       [3]byte{0, 36, 119}:    "Tibbo Technology",
-       [3]byte{0, 36, 120}:    "Mag Tech Electronics Co Limited",
-       [3]byte{0, 36, 121}:    "Optec Displays, Inc.",
-       [3]byte{0, 36, 122}:    "FU YI CHENG Technology Co., Ltd.",
-       [3]byte{0, 36, 123}:    "Actiontec Electronics, Inc",
-       [3]byte{0, 36, 124}:    "Nokia Danmark A/S",
-       [3]byte{0, 36, 125}:    "Nokia Danmark A/S",
-       [3]byte{0, 36, 126}:    "Universal Global Scientific Industrial Co., Ltd.",
-       [3]byte{0, 36, 127}:    "Nortel Networks",
-       [3]byte{0, 36, 128}:    "Meteocontrol GmbH",
-       [3]byte{0, 36, 129}:    "Hewlett Packard",
-       [3]byte{0, 36, 130}:    "Ruckus Wireless",
-       [3]byte{0, 36, 131}:    "LG Electronics (Mobile Communications)",
-       [3]byte{0, 36, 132}:    "Bang and Olufsen Medicom a/s",
-       [3]byte{0, 36, 133}:    "ConteXtream Ltd",
-       [3]byte{0, 36, 134}:    "DesignArt Networks",
-       [3]byte{0, 36, 135}:    "Blackboard Inc.",
-       [3]byte{0, 36, 136}:    "Centre For Development Of Telematics",
-       [3]byte{0, 36, 137}:    "Vodafone Omnitel N.V.",
-       [3]byte{0, 36, 138}:    "Kaga Electronics Co., Ltd.",
-       [3]byte{0, 36, 139}:    "HYBUS CO., LTD.",
-       [3]byte{0, 36, 140}:    "ASUSTek COMPUTER INC.",
-       [3]byte{0, 36, 141}:    "Sony Interactive Entertainment Inc.",
-       [3]byte{0, 36, 142}:    "Infoware ZRt.",
-       [3]byte{0, 36, 143}:    "DO-MONIX",
-       [3]byte{0, 36, 144}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 36, 145}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 36, 146}:    "Motorola, Broadband Solutions Group",
-       [3]byte{0, 36, 147}:    "ARRIS Group, Inc.",
-       [3]byte{0, 36, 148}:    "Shenzhen Baoxin Tech CO., Ltd.",
-       [3]byte{0, 36, 149}:    "ARRIS Group, Inc.",
-       [3]byte{0, 36, 150}:    "Ginzinger electronic systems",
-       [3]byte{0, 36, 151}:    "Cisco Systems, Inc",
-       [3]byte{0, 36, 152}:    "Cisco Systems, Inc",
-       [3]byte{0, 36, 153}:    "Aquila Technologies",
-       [3]byte{0, 36, 154}:    "Beijing Zhongchuang Telecommunication Test Co., Ltd.",
-       [3]byte{0, 36, 155}:    "Action Star Enterprise Co., Ltd.",
-       [3]byte{0, 36, 156}:    "Bimeng Comunication System Co. Ltd",
-       [3]byte{0, 36, 157}:    "NES Technology Inc.",
-       [3]byte{0, 36, 158}:    "ADC-Elektronik GmbH",
-       [3]byte{0, 36, 159}:    "RIM Testing Services",
-       [3]byte{0, 36, 160}:    "ARRIS Group, Inc.",
-       [3]byte{0, 36, 161}:    "ARRIS Group, Inc.",
-       [3]byte{0, 36, 162}:    "Hong Kong Middleware Technology Limited",
-       [3]byte{0, 36, 163}:    "Sonim Technologies Inc",
-       [3]byte{0, 36, 164}:    "Siklu Communication",
-       [3]byte{0, 36, 165}:    "BUFFALO.INC",
-       [3]byte{0, 36, 166}:    "TELESTAR DIGITAL GmbH",
-       [3]byte{0, 36, 167}:    "Advanced Video Communications Inc.",
-       [3]byte{0, 36, 168}:    "ProCurve Networking by HP",
-       [3]byte{0, 36, 169}:    "Ag Leader Technology",
-       [3]byte{0, 36, 170}:    "Dycor Technologies Ltd.",
-       [3]byte{0, 36, 171}:    "A7 Engineering, Inc.",
-       [3]byte{0, 36, 172}:    "Hangzhou DPtech Technologies Co., Ltd.",
-       [3]byte{0, 36, 173}:    "Adolf Thies Gmbh & Co. KG",
-       [3]byte{0, 36, 174}:    "Morpho",
-       [3]byte{0, 36, 175}:    "Echostar Technologies Corp",
-       [3]byte{0, 36, 176}:    "ESAB AB",
-       [3]byte{0, 36, 177}:    "Coulomb Technologies",
-       [3]byte{0, 36, 178}:    "NETGEAR",
-       [3]byte{0, 36, 179}:    "Graf-Syteco GmbH & Co. KG",
-       [3]byte{0, 36, 180}:    "ESCATRONIC GmbH",
-       [3]byte{0, 36, 181}:    "Nortel Networks",
-       [3]byte{0, 36, 182}:    "Seagate Technology",
-       [3]byte{0, 36, 183}:    "GridPoint, Inc.",
-       [3]byte{0, 36, 184}:    "free alliance sdn bhd",
-       [3]byte{0, 36, 185}:    "Wuhan Higheasy Electronic Technology Development Co.Ltd",
-       [3]byte{0, 36, 186}:    "Texas Instruments",
-       [3]byte{0, 36, 187}:    "CENTRAL Corporation",
-       [3]byte{0, 36, 188}:    "HuRob Co.,Ltd",
-       [3]byte{0, 36, 189}:    "Hainzl Industriesysteme GmbH",
-       [3]byte{0, 36, 190}:    "Sony Corporation",
-       [3]byte{0, 36, 191}:    "CIAT",
-       [3]byte{0, 36, 192}:    "NTI COMODO INC",
-       [3]byte{0, 36, 193}:    "ARRIS Group, Inc.",
-       [3]byte{0, 36, 194}:    "Asumo Co.,Ltd.",
-       [3]byte{0, 36, 195}:    "Cisco Systems, Inc",
-       [3]byte{0, 36, 196}:    "Cisco Systems, Inc",
-       [3]byte{0, 36, 197}:    "Meridian Audio Limited",
-       [3]byte{0, 36, 198}:    "Hager Electro SAS",
-       [3]byte{0, 36, 199}:    "Mobilarm Ltd",
-       [3]byte{0, 36, 200}:    "Broadband Solutions Group",
-       [3]byte{0, 36, 201}:    "Broadband Solutions Group",
-       [3]byte{0, 36, 202}:    "Tobii Technology AB",
-       [3]byte{0, 36, 203}:    "Autonet Mobile",
-       [3]byte{0, 36, 204}:    "Fascinations Toys and Gifts, Inc.",
-       [3]byte{0, 36, 205}:    "Willow Garage, Inc.",
-       [3]byte{0, 36, 206}:    "Exeltech Inc",
-       [3]byte{0, 36, 207}:    "Inscape Data Corporation",
-       [3]byte{0, 36, 208}:    "Shenzhen SOGOOD Industry CO.,LTD.",
-       [3]byte{0, 36, 209}:    "Thomson Inc.",
-       [3]byte{0, 36, 210}:    "ASKEY COMPUTER CORP",
-       [3]byte{0, 36, 211}:    "QUALICA Inc.",
-       [3]byte{0, 36, 212}:    "FREEBOX SAS",
-       [3]byte{0, 36, 213}:    "Winward Industrial Limited",
-       [3]byte{0, 36, 214}:    "Intel Corporate",
-       [3]byte{0, 36, 215}:    "Intel Corporate",
-       [3]byte{0, 36, 216}:    "IlSung Precision",
-       [3]byte{0, 36, 217}:    "BICOM, Inc.",
-       [3]byte{0, 36, 218}:    "Innovar Systems Limited",
-       [3]byte{0, 36, 219}:    "Alcohol Monitoring Systems",
-       [3]byte{0, 36, 220}:    "Juniper Networks",
-       [3]byte{0, 36, 221}:    "Centrak, Inc.",
-       [3]byte{0, 36, 222}:    "GLOBAL Technology Inc.",
-       [3]byte{0, 36, 223}:    "Digitalbox Europe GmbH",
-       [3]byte{0, 36, 224}:    "DS Tech, LLC",
-       [3]byte{0, 36, 225}:    "Convey Computer Corp.",
-       [3]byte{0, 36, 226}:    "HASEGAWA ELECTRIC CO.,LTD.",
-       [3]byte{0, 36, 227}:    "CAO Group",
-       [3]byte{0, 36, 228}:    "Withings",
-       [3]byte{0, 36, 229}:    "Seer Technology, Inc",
-       [3]byte{0, 36, 230}:    "In Motion Technology Inc.",
-       [3]byte{0, 36, 231}:    "Plaster Networks",
-       [3]byte{0, 36, 232}:    "Dell Inc.",
-       [3]byte{0, 36, 233}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 36, 234}:    "iris-GmbH infrared & intelligent sensors",
-       [3]byte{0, 36, 235}:    "ClearPath Networks, Inc.",
-       [3]byte{0, 36, 236}:    "United Information Technology Co.,Ltd.",
-       [3]byte{0, 36, 237}:    "YT Elec. Co,.Ltd.",
-       [3]byte{0, 36, 238}:    "Wynmax Inc.",
-       [3]byte{0, 36, 239}:    "Sony Mobile Communications AB",
-       [3]byte{0, 36, 240}:    "Seanodes",
-       [3]byte{0, 36, 241}:    "Shenzhen Fanhai Sanjiang Electronics Co., Ltd.",
-       [3]byte{0, 36, 242}:    "Uniphone Telecommunication Co., Ltd.",
-       [3]byte{0, 36, 243}:    "Nintendo Co., Ltd.",
-       [3]byte{0, 36, 244}:    "Kaminario, Ltd.",
-       [3]byte{0, 36, 245}:    "NDS Surgical Imaging",
-       [3]byte{0, 36, 246}:    "MIYOSHI ELECTRONICS CORPORATION",
-       [3]byte{0, 36, 247}:    "Cisco Systems, Inc",
-       [3]byte{0, 36, 248}:    "Technical Solutions Company Ltd.",
-       [3]byte{0, 36, 249}:    "Cisco Systems, Inc",
-       [3]byte{0, 36, 250}:    "Hilger u. Kern GMBH",
-       [3]byte{0, 36, 251}:    "Private",
-       [3]byte{0, 36, 252}:    "QuoPin Co., Ltd.",
-       [3]byte{0, 36, 253}:    "Accedian Networks Inc",
-       [3]byte{0, 36, 254}:    "AVM GmbH",
-       [3]byte{0, 36, 255}:    "QLogic Corporation",
-       [3]byte{0, 37, 0}:      "Apple, Inc.",
-       [3]byte{0, 37, 1}:      "JSC Supertel",
-       [3]byte{0, 37, 2}:      "NaturalPoint",
-       [3]byte{0, 37, 3}:      "IBM Corp",
-       [3]byte{0, 37, 4}:      "Valiant Communications Limited",
-       [3]byte{0, 37, 5}:      "eks Engel GmbH & Co. KG",
-       [3]byte{0, 37, 6}:      "A.I. ANTITACCHEGGIO ITALIA SRL",
-       [3]byte{0, 37, 7}:      "ASTAK Inc.",
-       [3]byte{0, 37, 8}:      "Maquet Cardiopulmonary AG",
-       [3]byte{0, 37, 9}:      "SHARETRONIC Group LTD",
-       [3]byte{0, 37, 10}:     "Security Expert Co. Ltd",
-       [3]byte{0, 37, 11}:     "CENTROFACTOR  INC",
-       [3]byte{0, 37, 12}:     "Enertrac",
-       [3]byte{0, 37, 13}:     "GZT Telkom-Telmor sp. z o.o.",
-       [3]byte{0, 37, 14}:     "gt german telematics gmbh",
-       [3]byte{0, 37, 15}:     "On-Ramp Wireless, Inc.",
-       [3]byte{0, 37, 16}:     "Pico-Tesla Magnetic Therapies",
-       [3]byte{0, 37, 17}:     "Elitegroup Computer Systems Co.,Ltd.",
-       [3]byte{0, 37, 18}:     "zte corporation",
-       [3]byte{0, 37, 19}:     "CXP DIGITAL BV",
-       [3]byte{0, 37, 20}:     "PC Worth Int'l Co., Ltd.",
-       [3]byte{0, 37, 21}:     "SFR",
-       [3]byte{0, 37, 22}:     "Integrated Design Tools, Inc.",
-       [3]byte{0, 37, 23}:     "Venntis, LLC",
-       [3]byte{0, 37, 24}:     "Power PLUS Communications AG",
-       [3]byte{0, 37, 25}:     "Viaas Inc",
-       [3]byte{0, 37, 26}:     "Psiber Data Systems Inc.",
-       [3]byte{0, 37, 27}:     "Philips CareServant",
-       [3]byte{0, 37, 28}:     "EDT",
-       [3]byte{0, 37, 29}:     "DSA Encore, LLC",
-       [3]byte{0, 37, 30}:     "ROTEL TECHNOLOGIES",
-       [3]byte{0, 37, 31}:     "ZYNUS VISION INC.",
-       [3]byte{0, 37, 32}:     "SMA Railway Technology GmbH",
-       [3]byte{0, 37, 33}:     "Logitek Electronic Systems, Inc.",
-       [3]byte{0, 37, 34}:     "ASRock Incorporation",
-       [3]byte{0, 37, 35}:     "OCP Inc.",
-       [3]byte{0, 37, 36}:     "Lightcomm Technology Co., Ltd",
-       [3]byte{0, 37, 37}:     "CTERA Networks Ltd.",
-       [3]byte{0, 37, 38}:     "Genuine Technologies Co., Ltd.",
-       [3]byte{0, 37, 39}:     "Bitrode Corp.",
-       [3]byte{0, 37, 40}:     "Daido Signal Co., Ltd.",
-       [3]byte{0, 37, 41}:     "COMELIT GROUP S.P.A",
-       [3]byte{0, 37, 42}:     "Chengdu GeeYa Technology Co.,LTD",
-       [3]byte{0, 37, 43}:     "Stirling Energy Systems",
-       [3]byte{0, 37, 44}:     "Entourage Systems, Inc.",
-       [3]byte{0, 37, 45}:     "Kiryung Electronics",
-       [3]byte{0, 37, 46}:     "Cisco SPVTG",
-       [3]byte{0, 37, 47}:     "Energy, Inc.",
-       [3]byte{0, 37, 48}:     "Aetas Systems Inc.",
-       [3]byte{0, 37, 49}:     "Cloud Engines, Inc.",
-       [3]byte{0, 37, 50}:     "Digital Recorders",
-       [3]byte{0, 37, 51}:     "WITTENSTEIN AG",
-       [3]byte{0, 37, 53}:     "Minimax GmbH & Co KG",
-       [3]byte{0, 37, 54}:     "Oki Electric Industry Co., Ltd.",
-       [3]byte{0, 37, 55}:     "Runcom Technologies Ltd.",
-       [3]byte{0, 37, 56}:     "Samsung Electronics Co., Ltd., Memory Division",
-       [3]byte{0, 37, 57}:     "IfTA GmbH",
-       [3]byte{0, 37, 58}:     "CEVA, Ltd.",
-       [3]byte{0, 37, 59}:     "din Dietmar Nocker Facilitymanagement GmbH",
-       [3]byte{0, 37, 60}:     "2Wire Inc",
-       [3]byte{0, 37, 61}:     "DRS Consolidated Controls",
-       [3]byte{0, 37, 62}:     "Sensus Metering Systems",
-       [3]byte{0, 37, 64}:     "Quasar Technologies, Inc.",
-       [3]byte{0, 37, 65}:     "Maquet Critical Care AB",
-       [3]byte{0, 37, 66}:     "Pittasoft",
-       [3]byte{0, 37, 67}:     "MONEYTECH",
-       [3]byte{0, 37, 68}:     "LoJack Corporation",
-       [3]byte{0, 37, 69}:     "Cisco Systems, Inc",
-       [3]byte{0, 37, 70}:     "Cisco Systems, Inc",
-       [3]byte{0, 37, 71}:     "Nokia Danmark A/S",
-       [3]byte{0, 37, 72}:     "Nokia Danmark A/S",
-       [3]byte{0, 37, 73}:     "Jeorich Tech. Co.,Ltd.",
-       [3]byte{0, 37, 74}:     "RingCube Technologies, Inc.",
-       [3]byte{0, 37, 75}:     "Apple, Inc.",
-       [3]byte{0, 37, 76}:     "Videon Central, Inc.",
-       [3]byte{0, 37, 77}:     "Singapore Technologies Electronics Limited",
-       [3]byte{0, 37, 78}:     "Vertex Wireless Co., Ltd.",
-       [3]byte{0, 37, 79}:     "ELETTROLAB Srl",
-       [3]byte{0, 37, 80}:     "Riverbed Technology, Inc.",
-       [3]byte{0, 37, 81}:     "SE-Elektronic GmbH",
-       [3]byte{0, 37, 82}:     "VXi Corporation",
-       [3]byte{0, 37, 83}:     "ADB Broadband Italia",
-       [3]byte{0, 37, 84}:     "Pixel8 Networks",
-       [3]byte{0, 37, 85}:     "Visonic Technologies 1993 Ltd.",
-       [3]byte{0, 37, 86}:     "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{0, 37, 87}:     "BlackBerry RTS",
-       [3]byte{0, 37, 88}:     "MPEDIA",
-       [3]byte{0, 37, 89}:     "Syphan Technologies Ltd",
-       [3]byte{0, 37, 90}:     "Tantalus Systems Corp.",
-       [3]byte{0, 37, 91}:     "CoachComm, LLC",
-       [3]byte{0, 37, 92}:     "NEC Corporation",
-       [3]byte{0, 37, 93}:     "Morningstar Corporation",
-       [3]byte{0, 37, 94}:     "Shanghai Dare Technologies Co.,Ltd.",
-       [3]byte{0, 37, 95}:     "SenTec AG",
-       [3]byte{0, 37, 96}:     "Ibridge Networks & Communications Ltd.",
-       [3]byte{0, 37, 97}:     "ProCurve Networking by HP",
-       [3]byte{0, 37, 98}:     "interbro Co. Ltd.",
-       [3]byte{0, 37, 99}:     "Luxtera Inc",
-       [3]byte{0, 37, 100}:    "Dell Inc.",
-       [3]byte{0, 37, 101}:    "Vizimax Inc.",
-       [3]byte{0, 37, 102}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 37, 103}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 37, 104}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{0, 37, 105}:    "Sagemcom Broadband SAS",
-       [3]byte{0, 37, 106}:    "inIT - Institut Industrial IT",
-       [3]byte{0, 37, 107}:    "ATENIX E.E. s.r.l.",
-       [3]byte{0, 37, 108}:    "Azimut Production Association JSC",
-       [3]byte{0, 37, 109}:    "Broadband Forum",
-       [3]byte{0, 37, 110}:    "Van Breda B.V.",
-       [3]byte{0, 37, 111}:    "Dantherm Power",
-       [3]byte{0, 37, 112}:    "Eastern Communications Company Limited",
-       [3]byte{0, 37, 113}:    "Zhejiang Tianle Digital Electric Co.,Ltd",
-       [3]byte{0, 37, 114}:    "Nemo-Q International AB",
-       [3]byte{0, 37, 115}:    "ST Electronics (Info-Security) Pte Ltd",
-       [3]byte{0, 37, 116}:    "KUNIMI MEDIA DEVICE Co., Ltd.",
-       [3]byte{0, 37, 117}:    "FiberPlex Technologies, LLC",
-       [3]byte{0, 37, 118}:    "NELI TECHNOLOGIES",
-       [3]byte{0, 37, 119}:    "D-BOX Technologies",
-       [3]byte{0, 37, 120}:    "JSC Concern Sozvezdie",
-       [3]byte{0, 37, 121}:    "J & F Labs",
-       [3]byte{0, 37, 122}:    "CAMCO Produktions- und Vertriebs-GmbH für  Beschallungs- und Beleuchtungsanlagen",
-       [3]byte{0, 37, 123}:    "STJ  ELECTRONICS  PVT  LTD",
-       [3]byte{0, 37, 124}:    "Huachentel Technology Development Co., Ltd",
-       [3]byte{0, 37, 125}:    "PointRed Telecom Private Ltd.",
-       [3]byte{0, 37, 126}:    "NEW POS Technology Limited",
-       [3]byte{0, 37, 127}:    "CallTechSolution Co.,Ltd",
-       [3]byte{0, 37, 128}:    "Equipson S.A.",
-       [3]byte{0, 37, 129}:    "x-star networks Inc.",
-       [3]byte{0, 37, 130}:    "Maksat Technologies (P) Ltd",
-       [3]byte{0, 37, 131}:    "Cisco Systems, Inc",
-       [3]byte{0, 37, 132}:    "Cisco Systems, Inc",
-       [3]byte{0, 37, 133}:    "KOKUYO S&T Co., Ltd.",
-       [3]byte{0, 37, 134}:    "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{0, 37, 135}:    "Vitality, Inc.",
-       [3]byte{0, 37, 136}:    "Genie Industries, Inc.",
-       [3]byte{0, 37, 137}:    "Hills Industries Limited",
-       [3]byte{0, 37, 138}:    "Pole/Zero Corporation",
-       [3]byte{0, 37, 139}:    "Mellanox Technologies, Inc.",
-       [3]byte{0, 37, 140}:    "ESUS ELEKTRONIK SAN. VE DIS. TIC. LTD. STI.",
-       [3]byte{0, 37, 141}:    "Haier",
-       [3]byte{0, 37, 142}:    "The Weather Channel",
-       [3]byte{0, 37, 143}:    "Trident Microsystems, Inc.",
-       [3]byte{0, 37, 144}:    "Super Micro Computer, Inc.",
-       [3]byte{0, 37, 145}:    "NEXTEK, Inc.",
-       [3]byte{0, 37, 146}:    "Guangzhou Shirui Electronic Co., Ltd",
-       [3]byte{0, 37, 147}:    "DatNet Informatikai Kft.",
-       [3]byte{0, 37, 148}:    "Eurodesign BG LTD",
-       [3]byte{0, 37, 149}:    "Northwest Signal Supply, Inc",
-       [3]byte{0, 37, 150}:    "GIGAVISION srl",
-       [3]byte{0, 37, 151}:    "Kalki Communication Technologies",
-       [3]byte{0, 37, 152}:    "Zhong Shan City Litai Electronic Industrial Co. Ltd",
-       [3]byte{0, 37, 153}:    "Hedon e.d. B.V.",
-       [3]byte{0, 37, 154}:    "CEStronics GmbH",
-       [3]byte{0, 37, 155}:    "Beijing PKUNITY Microsystems Technology Co., Ltd",
-       [3]byte{0, 37, 156}:    "Cisco-Linksys, LLC",
-       [3]byte{0, 37, 157}:    "Private",
-       [3]byte{0, 37, 158}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{0, 37, 159}:    "TechnoDigital Technologies GmbH",
-       [3]byte{0, 37, 160}:    "Nintendo Co., Ltd.",
-       [3]byte{0, 37, 161}:    "Enalasys",
-       [3]byte{0, 37, 162}:    "Alta Definicion LINCEO S.L.",
-       [3]byte{0, 37, 163}:    "Trimax Wireless, Inc.",
-       [3]byte{0, 37, 164}:    "EuroDesign embedded technologies GmbH",
-       [3]byte{0, 37, 165}:    "Walnut Media Network",
-       [3]byte{0, 37, 166}:    "Central Network Solution Co., Ltd.",
-       [3]byte{0, 37, 167}:    "Comverge, Inc.",
-       [3]byte{0, 37, 168}:    "Kontron (BeiJing) Technology Co.,Ltd",
-       [3]byte{0, 37, 169}:    "Shanghai Embedway Information Technologies Co.,Ltd",
-       [3]byte{0, 37, 170}:    "Beijing Soul Technology Co.,Ltd.",
-       [3]byte{0, 37, 171}:    "AIO LCD PC BU / TPV",
-       [3]byte{0, 37, 172}:    "I-Tech corporation",
-       [3]byte{0, 37, 173}:    "Manufacturing Resources International",
-       [3]byte{0, 37, 174}:    "Microsoft Corporation",
-       [3]byte{0, 37, 175}:    "COMFILE Technology",
-       [3]byte{0, 37, 176}:    "Schmartz Inc",
-       [3]byte{0, 37, 177}:    "Maya-Creation Corporation",
-       [3]byte{0, 37, 178}:    "MBDA Deutschland GmbH",
-       [3]byte{0, 37, 179}:    "Hewlett Packard",
-       [3]byte{0, 37, 180}:    "Cisco Systems, Inc",
-       [3]byte{0, 37, 181}:    "Cisco Systems, Inc",
-       [3]byte{0, 37, 182}:    "Telecom FM",
-       [3]byte{0, 37, 183}:    "Costar  electronics, inc.,",
-       [3]byte{0, 37, 184}:    "Agile Communications, Inc.",
-       [3]byte{0, 37, 185}:    "Cypress Solutions Inc",
-       [3]byte{0, 37, 186}:    "Alcatel-Lucent IPD",
-       [3]byte{0, 37, 187}:    "INNERINT Co., Ltd.",
-       [3]byte{0, 37, 188}:    "Apple, Inc.",
-       [3]byte{0, 37, 189}:    "Italdata Ingegneria dell'Idea S.p.A.",
-       [3]byte{0, 37, 190}:    "Tektrap Systems Inc.",
-       [3]byte{0, 37, 191}:    "Wireless Cables Inc.",
-       [3]byte{0, 37, 192}:    "ZillionTV Corporation",
-       [3]byte{0, 37, 193}:    "Nawoo Korea Corp.",
-       [3]byte{0, 37, 194}:    "RingBell Co.,Ltd.",
-       [3]byte{0, 37, 195}:    "21168",
-       [3]byte{0, 37, 196}:    "Ruckus Wireless",
-       [3]byte{0, 37, 197}:    "Star Link Communication Pvt. Ltd.",
-       [3]byte{0, 37, 198}:    "kasercorp, ltd",
-       [3]byte{0, 37, 199}:    "altek Corporation",
-       [3]byte{0, 37, 200}:    "S-Access GmbH",
-       [3]byte{0, 37, 201}:    "SHENZHEN HUAPU DIGITAL CO., LTD",
-       [3]byte{0, 37, 202}:    "LS Research, LLC",
-       [3]byte{0, 37, 203}:    "Reiner SCT",
-       [3]byte{0, 37, 204}:    "Mobile Communications Korea Incorporated",
-       [3]byte{0, 37, 205}:    "Skylane Optics",
-       [3]byte{0, 37, 206}:    "InnerSpace",
-       [3]byte{0, 37, 207}:    "Nokia Danmark A/S",
-       [3]byte{0, 37, 208}:    "Nokia Danmark A/S",
-       [3]byte{0, 37, 209}:    "Eastern Asia Technology Limited",
-       [3]byte{0, 37, 210}:    "InpegVision Co., Ltd",
-       [3]byte{0, 37, 211}:    "AzureWave Technology Inc.",
-       [3]byte{0, 37, 212}:    "General Dynamics Mission Systems",
-       [3]byte{0, 37, 213}:    "Robonica (Pty) Ltd",
-       [3]byte{0, 37, 214}:    "The Kroger Co.",
-       [3]byte{0, 37, 215}:    "CEDO",
-       [3]byte{0, 37, 216}:    "KOREA MAINTENANCE",
-       [3]byte{0, 37, 217}:    "DataFab Systems Inc.",
-       [3]byte{0, 37, 218}:    "Secura Key",
-       [3]byte{0, 37, 219}:    "ATI Electronics(Shenzhen) Co., LTD",
-       [3]byte{0, 37, 220}:    "Sumitomo Electric Industries,Ltd",
-       [3]byte{0, 37, 221}:    "SUNNYTEK INFORMATION CO., LTD.",
-       [3]byte{0, 37, 222}:    "Probits Co., LTD.",
-       [3]byte{0, 37, 223}:    "Private",
-       [3]byte{0, 37, 224}:    "CeedTec Sdn Bhd",
-       [3]byte{0, 37, 225}:    "SHANGHAI SEEYOO ELECTRONIC & TECHNOLOGY CO., LTD",
-       [3]byte{0, 37, 226}:    "Everspring Industry Co., Ltd.",
-       [3]byte{0, 37, 227}:    "Hanshinit Inc.",
-       [3]byte{0, 37, 228}:    "OMNI-WiFi, LLC",
-       [3]byte{0, 37, 229}:    "LG Electronics (Mobile Communications)",
-       [3]byte{0, 37, 230}:    "Belgian Monitoring Systems bvba",
-       [3]byte{0, 37, 231}:    "Sony Mobile Communications AB",
-       [3]byte{0, 37, 232}:    "Idaho Technology",
-       [3]byte{0, 37, 233}:    "i-mate Development, Inc.",
-       [3]byte{0, 37, 234}:    "Iphion BV",
-       [3]byte{0, 37, 235}:    "Reutech Radar Systems (PTY) Ltd",
-       [3]byte{0, 37, 236}:    "Humanware",
-       [3]byte{0, 37, 237}:    "NuVo Technologies LLC",
-       [3]byte{0, 37, 238}:    "Avtex Ltd",
-       [3]byte{0, 37, 239}:    "I-TEC Co., Ltd.",
-       [3]byte{0, 37, 240}:    "Suga Electronics Limited",
-       [3]byte{0, 37, 241}:    "ARRIS Group, Inc.",
-       [3]byte{0, 37, 242}:    "ARRIS Group, Inc.",
-       [3]byte{0, 37, 243}:    "Nordwestdeutsche Zählerrevision",
-       [3]byte{0, 37, 244}:    "KoCo Connector AG",
-       [3]byte{0, 37, 245}:    "DVS Korea, Co., Ltd",
-       [3]byte{0, 37, 246}:    "netTALK.com, Inc.",
-       [3]byte{0, 37, 247}:    "Ansaldo STS USA",
-       [3]byte{0, 37, 249}:    "GMK electronic design GmbH",
-       [3]byte{0, 37, 250}:    "J&M Analytik AG",
-       [3]byte{0, 37, 251}:    "Tunstall Healthcare A/S",
-       [3]byte{0, 37, 252}:    "ENDA ENDUSTRIYEL ELEKTRONIK LTD. STI.",
-       [3]byte{0, 37, 253}:    "OBR Centrum Techniki Morskiej S.A.",
-       [3]byte{0, 37, 254}:    "Pilot Electronics Corporation",
-       [3]byte{0, 37, 255}:    "CreNova Multimedia Co., Ltd",
-       [3]byte{0, 38, 0}:      "TEAC Australia Pty Ltd.",
-       [3]byte{0, 38, 1}:      "Cutera Inc",
-       [3]byte{0, 38, 2}:      "SMART Temps LLC",
-       [3]byte{0, 38, 3}:      "Shenzhen Wistar Technology Co., Ltd",
-       [3]byte{0, 38, 4}:      "Audio Processing Technology Ltd",
-       [3]byte{0, 38, 5}:      "CC Systems AB",
-       [3]byte{0, 38, 6}:      "RAUMFELD GmbH",
-       [3]byte{0, 38, 7}:      "Enabling Technology Pty Ltd",
-       [3]byte{0, 38, 8}:      "Apple, Inc.",
-       [3]byte{0, 38, 9}:      "Phyllis Co., Ltd.",
-       [3]byte{0, 38, 10}:     "Cisco Systems, Inc",
-       [3]byte{0, 38, 11}:     "Cisco Systems, Inc",
-       [3]byte{0, 38, 12}:     "Dataram",
-       [3]byte{0, 38, 13}:     "Mercury Systems, Inc.",
-       [3]byte{0, 38, 14}:     "Ablaze Systems, LLC",
-       [3]byte{0, 38, 15}:     "Linn Products Ltd",
-       [3]byte{0, 38, 16}:     "Apacewave Technologies",
-       [3]byte{0, 38, 17}:     "Licera AB",
-       [3]byte{0, 38, 18}:     "Space Exploration Technologies",
-       [3]byte{0, 38, 19}:     "Engel Axil S.L.",
-       [3]byte{0, 38, 20}:     "KTNF",
-       [3]byte{0, 38, 21}:     "Teracom Limited",
-       [3]byte{0, 38, 22}:     "Rosemount Inc.",
-       [3]byte{0, 38, 23}:     "OEM Worldwide",
-       [3]byte{0, 38, 24}:     "ASUSTek COMPUTER INC.",
-       [3]byte{0, 38, 25}:     "FRC",
-       [3]byte{0, 38, 26}:     "Femtocomm System Technology Corp.",
-       [3]byte{0, 38, 27}:     "LAUREL BANK MACHINES CO., LTD.",
-       [3]byte{0, 38, 28}:     "NEOVIA INC.",
-       [3]byte{0, 38, 29}:     "COP SECURITY SYSTEM CORP.",
-       [3]byte{0, 38, 30}:     "QINGBANG ELEC(SZ) CO., LTD",
-       [3]byte{0, 38, 31}:     "SAE Magnetics (H.K.) Ltd.",
-       [3]byte{0, 38, 32}:     "ISGUS GmbH",
-       [3]byte{0, 38, 33}:     "InteliCloud Technology Inc.",
-       [3]byte{0, 38, 34}:     "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
-       [3]byte{0, 38, 35}:     "JRD Communication Inc",
-       [3]byte{0, 38, 36}:     "Thomson Inc.",
-       [3]byte{0, 38, 37}:     "MediaSputnik",
-       [3]byte{0, 38, 38}:     "Geophysical Survey Systems, Inc.",
-       [3]byte{0, 38, 39}:     "Truesell",
-       [3]byte{0, 38, 40}:     "companytec automação e controle ltda.",
-       [3]byte{0, 38, 41}:     "Juphoon System Software Inc.",
-       [3]byte{0, 38, 42}:     "Proxense, LLC",
-       [3]byte{0, 38, 43}:     "Wongs Electronics Co. Ltd.",
-       [3]byte{0, 38, 44}:     "IKT Advanced Technologies s.r.o.",
-       [3]byte{0, 38, 45}:     "Wistron Corporation",
-       [3]byte{0, 38, 46}:     "Chengdu Jiuzhou Electronic Technology Inc",
-       [3]byte{0, 38, 47}:     "HAMAMATSU TOA ELECTRONICS",
-       [3]byte{0, 38, 48}:     "ACOREL S.A.S",
-       [3]byte{0, 38, 49}:     "COMMTACT LTD",
-       [3]byte{0, 38, 50}:     "Instrumentation Technologies d.d.",
-       [3]byte{0, 38, 51}:     "MIR - Medical International Research",
-       [3]byte{0, 38, 52}:     "Infineta Systems, Inc",
-       [3]byte{0, 38, 53}:     "Bluetechnix GmbH",
-       [3]byte{0, 38, 54}:     "ARRIS Group, Inc.",
-       [3]byte{0, 38, 55}:     "SAMSUNG ELECTRO MECHANICS CO., LTD.",
-       [3]byte{0, 38, 56}:     "Xia Men Joyatech Co., Ltd.",
-       [3]byte{0, 38, 57}:     "T.M. Electronics, Inc.",
-       [3]byte{0, 38, 58}:     "Digitec Systems",
-       [3]byte{0, 38, 59}:     "Onbnetech",
-       [3]byte{0, 38, 60}:     "Bachmann Technology GmbH & Co. KG",
-       [3]byte{0, 38, 61}:     "MIA Corporation",
-       [3]byte{0, 38, 62}:     "Trapeze Networks",
-       [3]byte{0, 38, 63}:     "LIOS Technology GmbH",
-       [3]byte{0, 38, 64}:     "Baustem Broadband Technologies, Ltd.",
-       [3]byte{0, 38, 65}:     "ARRIS Group, Inc.",
-       [3]byte{0, 38, 66}:     "ARRIS Group, Inc.",
-       [3]byte{0, 38, 67}:     "ALPS ELECTRIC CO.,LTD.",
-       [3]byte{0, 38, 68}:     "Thomson Telecom Belgium",
-       [3]byte{0, 38, 69}:     "Circontrol S.A.",
-       [3]byte{0, 38, 70}:     "SHENYANG TONGFANG MULTIMEDIA TECHNOLOGY COMPANY LIMITED",
-       [3]byte{0, 38, 71}:     "WFE TECHNOLOGY CORP.",
-       [3]byte{0, 38, 72}:     "Emitech Corp.",
-       [3]byte{0, 38, 74}:     "Apple, Inc.",
-       [3]byte{0, 38, 76}:     "Shanghai DigiVision Technology Co., Ltd.",
-       [3]byte{0, 38, 77}:     "Arcadyan Technology Corporation",
-       [3]byte{0, 38, 78}:     "Rail & Road Protec GmbH",
-       [3]byte{0, 38, 79}:     "Krüger &Gothe GmbH",
-       [3]byte{0, 38, 80}:     "2Wire Inc",
-       [3]byte{0, 38, 81}:     "Cisco Systems, Inc",
-       [3]byte{0, 38, 82}:     "Cisco Systems, Inc",
-       [3]byte{0, 38, 83}:     "DaySequerra Corporation",
-       [3]byte{0, 38, 84}:     "3Com Corporation",
-       [3]byte{0, 38, 85}:     "Hewlett Packard",
-       [3]byte{0, 38, 86}:     "Sansonic Electronics USA",
-       [3]byte{0, 38, 87}:     "OOO NPP EKRA",
-       [3]byte{0, 38, 88}:     "T-Platforms (Cyprus) Limited",
-       [3]byte{0, 38, 89}:     "Nintendo Co., Ltd.",
-       [3]byte{0, 38, 90}:     "D-Link Corporation",
-       [3]byte{0, 38, 91}:     "Hitron Technologies. Inc",
-       [3]byte{0, 38, 92}:     "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{0, 38, 93}:     "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 38, 94}:     "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{0, 38, 95}:     "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 38, 96}:     "Logiways",
-       [3]byte{0, 38, 97}:     "Irumtek Co., Ltd.",
-       [3]byte{0, 38, 98}:     "Actiontec Electronics, Inc",
-       [3]byte{0, 38, 99}:     "Shenzhen Huitaiwei Tech. Ltd, co.",
-       [3]byte{0, 38, 100}:    "Core System Japan",
-       [3]byte{0, 38, 101}:    "ProtectedLogic Corporation",
-       [3]byte{0, 38, 102}:    "EFM Networks",
-       [3]byte{0, 38, 103}:    "CARECOM CO.,LTD.",
-       [3]byte{0, 38, 104}:    "Nokia Danmark A/S",
-       [3]byte{0, 38, 105}:    "Nokia Danmark A/S",
-       [3]byte{0, 38, 106}:    "ESSENSIUM NV",
-       [3]byte{0, 38, 107}:    "SHINE UNION ENTERPRISE LIMITED",
-       [3]byte{0, 38, 108}:    "INVENTEC Corporation",
-       [3]byte{0, 38, 109}:    "MobileAccess Networks",
-       [3]byte{0, 38, 110}:    "Nissho-denki Co.,LTD.",
-       [3]byte{0, 38, 111}:    "Coordiwise Technology Corp.",
-       [3]byte{0, 38, 112}:    "Cinch Connectors",
-       [3]byte{0, 38, 113}:    "AUTOVISION Co., Ltd",
-       [3]byte{0, 38, 114}:    "AAMP of America",
-       [3]byte{0, 38, 115}:    "RICOH COMPANY,LTD.",
-       [3]byte{0, 38, 116}:    "Electronic Solutions, Inc.",
-       [3]byte{0, 38, 117}:    "Aztech Electronics Pte Ltd",
-       [3]byte{0, 38, 118}:    "COMMidt AS",
-       [3]byte{0, 38, 119}:    "DEIF A/S",
-       [3]byte{0, 38, 120}:    "Logic Instrument SA",
-       [3]byte{0, 38, 121}:    "Euphonic Technologies, Inc.",
-       [3]byte{0, 38, 122}:    "wuhan hongxin telecommunication technologies co.,ltd",
-       [3]byte{0, 38, 123}:    "GSI Helmholtzzentrum für Schwerionenforschung GmbH",
-       [3]byte{0, 38, 124}:    "Metz-Werke GmbH & Co KG",
-       [3]byte{0, 38, 125}:    "A-Max Technology Macao Commercial Offshore Company Limited",
-       [3]byte{0, 38, 126}:    "PARROT SA",
-       [3]byte{0, 38, 127}:    "Zenterio AB",
-       [3]byte{0, 38, 128}:    "SIL3 Pty.Ltd",
-       [3]byte{0, 38, 129}:    "Interspiro AB",
-       [3]byte{0, 38, 130}:    "Gemtek Technology Co., Ltd.",
-       [3]byte{0, 38, 131}:    "Ajoho Enterprise Co., Ltd.",
-       [3]byte{0, 38, 132}:    "KISAN SYSTEM",
-       [3]byte{0, 38, 133}:    "Digital Innovation",
-       [3]byte{0, 38, 134}:    "Quantenna Communcations, Inc.",
-       [3]byte{0, 38, 135}:    "corega K.K",
-       [3]byte{0, 38, 136}:    "Juniper Networks",
-       [3]byte{0, 38, 137}:    "General Dynamics Robotic Systems",
-       [3]byte{0, 38, 138}:    "Terrier SC Ltd",
-       [3]byte{0, 38, 139}:    "Guangzhou Escene Computer Technology Limited",
-       [3]byte{0, 38, 140}:    "StarLeaf Ltd.",
-       [3]byte{0, 38, 141}:    "CellTel S.p.A.",
-       [3]byte{0, 38, 142}:    "Alta Solutions, Inc.",
-       [3]byte{0, 38, 143}:    "MTA SpA",
-       [3]byte{0, 38, 144}:    "I DO IT",
-       [3]byte{0, 38, 145}:    "Sagemcom Broadband SAS",
-       [3]byte{0, 38, 146}:    "Mitsubishi Electric Corporation",
-       [3]byte{0, 38, 147}:    "QVidium Technologies, Inc.",
-       [3]byte{0, 38, 148}:    "Senscient Ltd",
-       [3]byte{0, 38, 149}:    "ZT Group Int'l Inc",
-       [3]byte{0, 38, 150}:    "NOOLIX Co., Ltd",
-       [3]byte{0, 38, 151}:    "Alpha  Technologies Inc.",
-       [3]byte{0, 38, 152}:    "Cisco Systems, Inc",
-       [3]byte{0, 38, 153}:    "Cisco Systems, Inc",
-       [3]byte{0, 38, 154}:    "Carina System Co., Ltd.",
-       [3]byte{0, 38, 155}:    "SOKRAT Ltd.",
-       [3]byte{0, 38, 156}:    "ITUS JAPAN CO. LTD",
-       [3]byte{0, 38, 157}:    "M2Mnet Co., Ltd.",
-       [3]byte{0, 38, 158}:    "QUANTA COMPUTER INC.",
-       [3]byte{0, 38, 159}:    "Private",
-       [3]byte{0, 38, 160}:    "moblic",
-       [3]byte{0, 38, 161}:    "Megger",
-       [3]byte{0, 38, 162}:    "Instrumentation Technology Systems",
-       [3]byte{0, 38, 163}:    "FQ Ingenieria Electronica S.A.",
-       [3]byte{0, 38, 164}:    "Novus Produtos Eletronicos Ltda",
-       [3]byte{0, 38, 165}:    "MICROROBOT.CO.,LTD",
-       [3]byte{0, 38, 166}:    "TRIXELL",
-       [3]byte{0, 38, 167}:    "CONNECT SRL",
-       [3]byte{0, 38, 168}:    "DAEHAP HYPER-TECH",
-       [3]byte{0, 38, 169}:    "Strong Technologies Pty Ltd",
-       [3]byte{0, 38, 170}:    "Kenmec Mechanical Engineering Co., Ltd.",
-       [3]byte{0, 38, 171}:    "Seiko Epson Corporation",
-       [3]byte{0, 38, 172}:    "Shanghai LUSTER Teraband photonic Co., Ltd.",
-       [3]byte{0, 38, 173}:    "Arada Systems, Inc.",
-       [3]byte{0, 38, 174}:    "Wireless Measurement Ltd",
-       [3]byte{0, 38, 175}:    "Duelco A/S",
-       [3]byte{0, 38, 176}:    "Apple, Inc.",
-       [3]byte{0, 38, 177}:    "Navis Auto Motive Systems, Inc.",
-       [3]byte{0, 38, 178}:    "Setrix GmbH",
-       [3]byte{0, 38, 179}:    "Thales Communications Inc",
-       [3]byte{0, 38, 180}:    "Ford Motor Company",
-       [3]byte{0, 38, 181}:    "ICOMM Tele Ltd",
-       [3]byte{0, 38, 182}:    "ASKEY COMPUTER CORP",
-       [3]byte{0, 38, 183}:    "Kingston Technology Company, Inc.",
-       [3]byte{0, 38, 184}:    "Actiontec Electronics, Inc",
-       [3]byte{0, 38, 185}:    "Dell Inc.",
-       [3]byte{0, 38, 186}:    "ARRIS Group, Inc.",
-       [3]byte{0, 38, 187}:    "Apple, Inc.",
-       [3]byte{0, 38, 188}:    "General Jack Technology Ltd.",
-       [3]byte{0, 38, 189}:    "JTEC Card & Communication Co., Ltd.",
-       [3]byte{0, 38, 190}:    "Schoonderbeek Elektronica Systemen B.V.",
-       [3]byte{0, 38, 191}:    "ShenZhen Temobi Science&Tech Development Co.,Ltd",
-       [3]byte{0, 38, 192}:    "EnergyHub",
-       [3]byte{0, 38, 193}:    "ARTRAY CO., LTD.",
-       [3]byte{0, 38, 194}:    "SCDI Co. LTD",
-       [3]byte{0, 38, 195}:    "Insightek Corp.",
-       [3]byte{0, 38, 196}:    "Cadmos microsystems S.r.l.",
-       [3]byte{0, 38, 197}:    "Guangdong Gosun Telecommunications Co.,Ltd",
-       [3]byte{0, 38, 198}:    "Intel Corporate",
-       [3]byte{0, 38, 199}:    "Intel Corporate",
-       [3]byte{0, 38, 200}:    "System Sensor",
-       [3]byte{0, 38, 201}:    "Proventix Systems, Inc.",
-       [3]byte{0, 38, 202}:    "Cisco Systems, Inc",
-       [3]byte{0, 38, 203}:    "Cisco Systems, Inc",
-       [3]byte{0, 38, 204}:    "Nokia Danmark A/S",
-       [3]byte{0, 38, 205}:    "PurpleComm, Inc.",
-       [3]byte{0, 38, 206}:    "Kozumi USA Corp.",
-       [3]byte{0, 38, 207}:    "DEKA R&D",
-       [3]byte{0, 38, 208}:    "Semihalf",
-       [3]byte{0, 38, 209}:    "S Squared Innovations Inc.",
-       [3]byte{0, 38, 210}:    "Pcube Systems, Inc.",
-       [3]byte{0, 38, 211}:    "Zeno Information System",
-       [3]byte{0, 38, 212}:    "IRCA SpA",
-       [3]byte{0, 38, 213}:    "Ory Solucoes em Comercio de Informatica Ltda.",
-       [3]byte{0, 38, 214}:    "Ningbo Andy Optoelectronic Co., Ltd.",
-       [3]byte{0, 38, 215}:    "KM Electornic Technology Co., Ltd.",
-       [3]byte{0, 38, 216}:    "Magic Point Inc.",
-       [3]byte{0, 38, 217}:    "ARRIS Group, Inc.",
-       [3]byte{0, 38, 218}:    "Universal Media Corporation /Slovakia/ s.r.o.",
-       [3]byte{0, 38, 219}:    "Ionics EMS Inc.",
-       [3]byte{0, 38, 220}:    "Optical Systems Design",
-       [3]byte{0, 38, 221}:    "Fival Science & Technology Co.,Ltd.",
-       [3]byte{0, 38, 222}:    "FDI MATELEC",
-       [3]byte{0, 38, 223}:    "TaiDoc Technology Corp.",
-       [3]byte{0, 38, 224}:    "ASITEQ",
-       [3]byte{0, 38, 225}:    "Stanford University, OpenFlow Group",
-       [3]byte{0, 38, 226}:    "LG Electronics (Mobile Communications)",
-       [3]byte{0, 38, 227}:    "DTI",
-       [3]byte{0, 38, 228}:    "Canal +",
-       [3]byte{0, 38, 229}:    "AEG Power Solutions",
-       [3]byte{0, 38, 230}:    "Visionhitech Co., Ltd.",
-       [3]byte{0, 38, 231}:    "Shanghai ONLAN Communication Tech. Co., Ltd.",
-       [3]byte{0, 38, 232}:    "Murata Manufacturing Co., Ltd.",
-       [3]byte{0, 38, 233}:    "SP Corp",
-       [3]byte{0, 38, 234}:    "Cheerchip Electronic Technology (ShangHai) Co., Ltd.",
-       [3]byte{0, 38, 235}:    "Advanced Spectrum Technology Co., Ltd.",
-       [3]byte{0, 38, 236}:    "Legrand Home Systems, Inc",
-       [3]byte{0, 38, 237}:    "zte corporation",
-       [3]byte{0, 38, 238}:    "TKM GmbH",
-       [3]byte{0, 38, 239}:    "Technology Advancement Group, Inc.",
-       [3]byte{0, 38, 240}:    "cTrixs International GmbH.",
-       [3]byte{0, 38, 241}:    "ProCurve Networking by HP",
-       [3]byte{0, 38, 242}:    "NETGEAR",
-       [3]byte{0, 38, 243}:    "SMC Networks",
-       [3]byte{0, 38, 244}:    "Nesslab",
-       [3]byte{0, 38, 245}:    "XRPLUS Inc.",
-       [3]byte{0, 38, 246}:    "Military Communication Institute",
-       [3]byte{0, 38, 247}:    "Nivetti Systems Pvt. Ltd.",
-       [3]byte{0, 38, 248}:    "Golden Highway Industry Development Co., Ltd.",
-       [3]byte{0, 38, 249}:    "S.E.M. srl",
-       [3]byte{0, 38, 250}:    "BandRich Inc.",
-       [3]byte{0, 38, 251}:    "AirDio Wireless, Inc.",
-       [3]byte{0, 38, 252}:    "AcSiP Technology Corp.",
-       [3]byte{0, 38, 253}:    "Interactive Intelligence",
-       [3]byte{0, 38, 254}:    "MKD Technology Inc.",
-       [3]byte{0, 38, 255}:    "BlackBerry RTS",
-       [3]byte{0, 39, 0}:      "Shenzhen Siglent Technology Co., Ltd.",
-       [3]byte{0, 39, 1}:      "INCOstartec GmbH",
-       [3]byte{0, 39, 2}:      "SolarEdge Technologies",
-       [3]byte{0, 39, 3}:      "Testech Electronics Pte Ltd",
-       [3]byte{0, 39, 4}:      "Accelerated Concepts, Inc",
-       [3]byte{0, 39, 5}:      "Sectronic",
-       [3]byte{0, 39, 6}:      "YOISYS",
-       [3]byte{0, 39, 7}:      "Lift Complex DS, JSC",
-       [3]byte{0, 39, 8}:      "Nordiag ASA",
-       [3]byte{0, 39, 9}:      "Nintendo Co., Ltd.",
-       [3]byte{0, 39, 10}:     "IEE S.A.",
-       [3]byte{0, 39, 11}:     "Adura Technologies",
-       [3]byte{0, 39, 12}:     "Cisco Systems, Inc",
-       [3]byte{0, 39, 13}:     "Cisco Systems, Inc",
-       [3]byte{0, 39, 14}:     "Intel Corporate",
-       [3]byte{0, 39, 15}:     "Envisionnovation Inc",
-       [3]byte{0, 39, 16}:     "Intel Corporate",
-       [3]byte{0, 39, 17}:     "LanPro Inc",
-       [3]byte{0, 39, 18}:     "MaxVision LLC",
-       [3]byte{0, 39, 19}:     "Universal Global Scientific Industrial Co., Ltd.",
-       [3]byte{0, 39, 20}:     "Grainmustards, Co,ltd.",
-       [3]byte{0, 39, 21}:     "Rebound Telecom. Co., Ltd",
-       [3]byte{0, 39, 22}:     "Adachi-Syokai Co., Ltd.",
-       [3]byte{0, 39, 23}:     "CE Digital(Zhenjiang)Co.,Ltd",
-       [3]byte{0, 39, 24}:     "Suzhou NEW SEAUNION Video Technology Co.,Ltd",
-       [3]byte{0, 39, 25}:     "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{0, 39, 26}:     "Geenovo Technology Ltd.",
-       [3]byte{0, 39, 27}:     "Alec Sicherheitssysteme GmbH",
-       [3]byte{0, 39, 28}:     "MERCURY CORPORATION",
-       [3]byte{0, 39, 29}:     "Comba Telecom Systems (China) Ltd.",
-       [3]byte{0, 39, 30}:     "Xagyl Communications",
-       [3]byte{0, 39, 31}:     "MIPRO Electronics Co., Ltd",
-       [3]byte{0, 39, 32}:     "NEW-SOL COM",
-       [3]byte{0, 39, 33}:     "Shenzhen Baoan Fenda Industrial Co., Ltd",
-       [3]byte{0, 39, 34}:     "Ubiquiti Networks Inc.",
-       [3]byte{0, 39, 144}:    "Cisco Systems, Inc",
-       [3]byte{0, 39, 227}:    "Cisco Systems, Inc",
-       [3]byte{0, 39, 248}:    "Brocade Communications Systems, Inc.",
-       [3]byte{0, 40, 159}:    "Semptian Co., Ltd.",
-       [3]byte{0, 40, 248}:    "Intel Corporate",
-       [3]byte{0, 41, 38}:     "Applied Optoelectronics, Inc Taiwan Branch",
-       [3]byte{0, 42, 16}:     "Cisco Systems, Inc",
-       [3]byte{0, 42, 106}:    "Cisco Systems, Inc",
-       [3]byte{0, 42, 175}:    "LARsys-Automation GmbH",
-       [3]byte{0, 44, 200}:    "Cisco Systems, Inc",
-       [3]byte{0, 45, 118}:    "TITECH GmbH",
-       [3]byte{0, 46, 199}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{0, 48, 0}:      "ALLWELL TECHNOLOGY CORP.",
-       [3]byte{0, 48, 1}:      "SMP",
-       [3]byte{0, 48, 2}:      "Expand Networks",
-       [3]byte{0, 48, 3}:      "Phasys Ltd.",
-       [3]byte{0, 48, 4}:      "LEADTEK RESEARCH INC.",
-       [3]byte{0, 48, 5}:      "Fujitsu Siemens Computers",
-       [3]byte{0, 48, 6}:      "SUPERPOWER COMPUTER",
-       [3]byte{0, 48, 7}:      "OPTI, INC.",
-       [3]byte{0, 48, 8}:      "AVIO DIGITAL, INC.",
-       [3]byte{0, 48, 9}:      "Tachion Networks, Inc.",
-       [3]byte{0, 48, 10}:     "Aztech Electronics Pte Ltd",
-       [3]byte{0, 48, 11}:     "mPHASE Technologies, Inc.",
-       [3]byte{0, 48, 12}:     "CONGRUENCY, LTD.",
-       [3]byte{0, 48, 13}:     "MMC Technology, Inc.",
-       [3]byte{0, 48, 14}:     "Klotz Digital AG",
-       [3]byte{0, 48, 15}:     "IMT - Information Management T",
-       [3]byte{0, 48, 16}:     "VISIONETICS INTERNATIONAL",
-       [3]byte{0, 48, 17}:     "HMS Industrial Networks",
-       [3]byte{0, 48, 18}:     "DIGITAL ENGINEERING LTD.",
-       [3]byte{0, 48, 19}:     "NEC Corporation",
-       [3]byte{0, 48, 20}:     "DIVIO, INC.",
-       [3]byte{0, 48, 21}:     "CP CLARE CORP.",
-       [3]byte{0, 48, 22}:     "ISHIDA CO., LTD.",
-       [3]byte{0, 48, 23}:     "BlueArc UK Ltd",
-       [3]byte{0, 48, 24}:     "Jetway Information Co., Ltd.",
-       [3]byte{0, 48, 25}:     "Cisco Systems, Inc",
-       [3]byte{0, 48, 26}:     "SMARTBRIDGES PTE. LTD.",
-       [3]byte{0, 48, 27}:     "SHUTTLE, INC.",
-       [3]byte{0, 48, 28}:     "ALTVATER AIRDATA SYSTEMS",
-       [3]byte{0, 48, 29}:     "SKYSTREAM, INC.",
-       [3]byte{0, 48, 30}:     "3COM EUROPE LTD.",
-       [3]byte{0, 48, 31}:     "OPTICAL NETWORKS, INC.",
-       [3]byte{0, 48, 32}:     "TSI, Inc..",
-       [3]byte{0, 48, 33}:     "HSING TECH. ENTERPRISE CO.,LTD",
-       [3]byte{0, 48, 34}:     "Fong Kai Industrial Co., Ltd.",
-       [3]byte{0, 48, 35}:     "COGENT COMPUTER SYSTEMS, INC.",
-       [3]byte{0, 48, 36}:     "Cisco Systems, Inc",
-       [3]byte{0, 48, 37}:     "CHECKOUT COMPUTER SYSTEMS, LTD",
-       [3]byte{0, 48, 38}:     "HeiTel Digital Video GmbH",
-       [3]byte{0, 48, 39}:     "KERBANGO, INC.",
-       [3]byte{0, 48, 40}:     "FASE Saldatura srl",
-       [3]byte{0, 48, 41}:     "OPICOM",
-       [3]byte{0, 48, 42}:     "SOUTHERN INFORMATION",
-       [3]byte{0, 48, 43}:     "INALP NETWORKS, INC.",
-       [3]byte{0, 48, 44}:     "SYLANTRO SYSTEMS CORPORATION",
-       [3]byte{0, 48, 45}:     "QUANTUM BRIDGE COMMUNICATIONS",
-       [3]byte{0, 48, 46}:     "Hoft & Wessel AG",
-       [3]byte{0, 48, 47}:     "GE Aviation System",
-       [3]byte{0, 48, 48}:     "HARMONIX CORPORATION",
-       [3]byte{0, 48, 49}:     "LIGHTWAVE COMMUNICATIONS, INC.",
-       [3]byte{0, 48, 50}:     "MagicRam, Inc.",
-       [3]byte{0, 48, 51}:     "ORIENT TELECOM CO., LTD.",
-       [3]byte{0, 48, 52}:     "SET ENGINEERING",
-       [3]byte{0, 48, 53}:     "Corning Incorporated",
-       [3]byte{0, 48, 54}:     "RMP ELEKTRONIKSYSTEME GMBH",
-       [3]byte{0, 48, 55}:     "Packard Bell Nec Services",
-       [3]byte{0, 48, 56}:     "XCP, INC.",
-       [3]byte{0, 48, 57}:     "SOFTBOOK PRESS",
-       [3]byte{0, 48, 58}:     "MAATEL",
-       [3]byte{0, 48, 59}:     "PowerCom Technology",
-       [3]byte{0, 48, 60}:     "ONNTO CORP.",
-       [3]byte{0, 48, 61}:     "IVA CORPORATION",
-       [3]byte{0, 48, 62}:     "Radcom Ltd.",
-       [3]byte{0, 48, 63}:     "TurboComm Tech Inc.",
-       [3]byte{0, 48, 64}:     "Cisco Systems, Inc",
-       [3]byte{0, 48, 65}:     "SAEJIN T & M CO., LTD.",
-       [3]byte{0, 48, 66}:     "DeTeWe-Deutsche Telephonwerke",
-       [3]byte{0, 48, 67}:     "IDREAM TECHNOLOGIES, PTE. LTD.",
-       [3]byte{0, 48, 68}:     "CradlePoint, Inc",
-       [3]byte{0, 48, 69}:     "Village Networks, Inc. (VNI)",
-       [3]byte{0, 48, 70}:     "Controlled Electronic Manageme",
-       [3]byte{0, 48, 71}:     "NISSEI ELECTRIC CO., LTD.",
-       [3]byte{0, 48, 72}:     "Super Micro Computer, Inc.",
-       [3]byte{0, 48, 73}:     "BRYANT TECHNOLOGY, LTD.",
-       [3]byte{0, 48, 74}:     "Fraunhofer IPMS",
-       [3]byte{0, 48, 75}:     "ORBACOM SYSTEMS, INC.",
-       [3]byte{0, 48, 76}:     "APPIAN COMMUNICATIONS, INC.",
-       [3]byte{0, 48, 77}:     "ESI",
-       [3]byte{0, 48, 78}:     "BUSTEC PRODUCTION LTD.",
-       [3]byte{0, 48, 79}:     "PLANET Technology Corporation",
-       [3]byte{0, 48, 80}:     "Versa Technology",
-       [3]byte{0, 48, 81}:     "ORBIT AVIONIC & COMMUNICATION",
-       [3]byte{0, 48, 82}:     "ELASTIC NETWORKS",
-       [3]byte{0, 48, 83}:     "Basler AG",
-       [3]byte{0, 48, 84}:     "CASTLENET TECHNOLOGY, INC.",
-       [3]byte{0, 48, 85}:     "Renesas Technology America, Inc.",
-       [3]byte{0, 48, 86}:     "Beck IPC GmbH",
-       [3]byte{0, 48, 87}:     "QTelNet, Inc.",
-       [3]byte{0, 48, 88}:     "API MOTION",
-       [3]byte{0, 48, 89}:     "KONTRON COMPACT COMPUTERS AG",
-       [3]byte{0, 48, 90}:     "TELGEN CORPORATION",
-       [3]byte{0, 48, 91}:     "Toko Inc.",
-       [3]byte{0, 48, 92}:     "SMAR Laboratories Corp.",
-       [3]byte{0, 48, 93}:     "DIGITRA SYSTEMS, INC.",
-       [3]byte{0, 48, 94}:     "Abelko Innovation",
-       [3]byte{0, 48, 95}:     "Hasselblad",
-       [3]byte{0, 48, 96}:     "Powerfile, Inc.",
-       [3]byte{0, 48, 97}:     "MobyTEL",
-       [3]byte{0, 48, 98}:     "IP Video Networks Inc",
-       [3]byte{0, 48, 99}:     "SANTERA SYSTEMS, INC.",
-       [3]byte{0, 48, 100}:    "ADLINK TECHNOLOGY, INC.",
-       [3]byte{0, 48, 101}:    "Apple, Inc.",
-       [3]byte{0, 48, 102}:    "RFM",
-       [3]byte{0, 48, 103}:    "BIOSTAR Microtech Int'l Corp.",
-       [3]byte{0, 48, 104}:    "CYBERNETICS TECH. CO., LTD.",
-       [3]byte{0, 48, 105}:    "IMPACCT TECHNOLOGY CORP.",
-       [3]byte{0, 48, 106}:    "PENTA MEDIA CO., LTD.",
-       [3]byte{0, 48, 107}:    "CMOS SYSTEMS, INC.",
-       [3]byte{0, 48, 108}:    "Hitex Holding GmbH",
-       [3]byte{0, 48, 109}:    "LUCENT TECHNOLOGIES",
-       [3]byte{0, 48, 110}:    "Hewlett Packard",
-       [3]byte{0, 48, 111}:    "SEYEON TECH. CO., LTD.",
-       [3]byte{0, 48, 112}:    "1Net Corporation",
-       [3]byte{0, 48, 113}:    "Cisco Systems, Inc",
-       [3]byte{0, 48, 114}:    "Intellibyte Inc.",
-       [3]byte{0, 48, 115}:    "International Microsystems, In",
-       [3]byte{0, 48, 116}:    "EQUIINET LTD.",
-       [3]byte{0, 48, 117}:    "ADTECH",
-       [3]byte{0, 48, 118}:    "Akamba Corporation",
-       [3]byte{0, 48, 119}:    "ONPREM NETWORKS",
-       [3]byte{0, 48, 120}:    "Cisco Systems, Inc",
-       [3]byte{0, 48, 121}:    "CQOS, INC.",
-       [3]byte{0, 48, 122}:    "Advanced Technology & Systems",
-       [3]byte{0, 48, 123}:    "Cisco Systems, Inc",
-       [3]byte{0, 48, 124}:    "ADID SA",
-       [3]byte{0, 48, 125}:    "GRE AMERICA, INC.",
-       [3]byte{0, 48, 126}:    "Redflex Communication Systems",
-       [3]byte{0, 48, 127}:    "IRLAN LTD.",
-       [3]byte{0, 48, 128}:    "Cisco Systems, Inc",
-       [3]byte{0, 48, 129}:    "ALTOS C&C",
-       [3]byte{0, 48, 130}:    "TAIHAN ELECTRIC WIRE CO., LTD.",
-       [3]byte{0, 48, 131}:    "Ivron Systems",
-       [3]byte{0, 48, 132}:    "ALLIED TELESYN INTERNAIONAL",
-       [3]byte{0, 48, 133}:    "Cisco Systems, Inc",
-       [3]byte{0, 48, 134}:    "Transistor Devices, Inc.",
-       [3]byte{0, 48, 135}:    "VEGA GRIESHABER KG",
-       [3]byte{0, 48, 136}:    "Ericsson",
-       [3]byte{0, 48, 137}:    "Spectrapoint Wireless, LLC",
-       [3]byte{0, 48, 138}:    "NICOTRA SISTEMI S.P.A",
-       [3]byte{0, 48, 139}:    "Brix Networks",
-       [3]byte{0, 48, 140}:    "Quantum Corporation",
-       [3]byte{0, 48, 141}:    "Pinnacle Systems, Inc.",
-       [3]byte{0, 48, 142}:    "CROSS MATCH TECHNOLOGIES, INC.",
-       [3]byte{0, 48, 143}:    "MICRILOR, Inc.",
-       [3]byte{0, 48, 144}:    "CYRA TECHNOLOGIES, INC.",
-       [3]byte{0, 48, 145}:    "TAIWAN FIRST LINE ELEC. CORP.",
-       [3]byte{0, 48, 146}:    "ModuNORM GmbH",
-       [3]byte{0, 48, 147}:    "Sonnet Technologies, Inc",
-       [3]byte{0, 48, 148}:    "Cisco Systems, Inc",
-       [3]byte{0, 48, 149}:    "Procomp Informatics, Ltd.",
-       [3]byte{0, 48, 150}:    "Cisco Systems, Inc",
-       [3]byte{0, 48, 151}:    "AB Regin",
-       [3]byte{0, 48, 152}:    "Global Converging Technologies",
-       [3]byte{0, 48, 153}:    "BOENIG UND KALLENBACH OHG",
-       [3]byte{0, 48, 154}:    "ASTRO TERRA CORP.",
-       [3]byte{0, 48, 155}:    "Smartware",
-       [3]byte{0, 48, 156}:    "Timing Applications, Inc.",
-       [3]byte{0, 48, 157}:    "Nimble Microsystems, Inc.",
-       [3]byte{0, 48, 158}:    "WORKBIT CORPORATION.",
-       [3]byte{0, 48, 159}:    "AMBER NETWORKS",
-       [3]byte{0, 48, 160}:    "TYCO SUBMARINE SYSTEMS, LTD.",
-       [3]byte{0, 48, 161}:    "WEBGATE Inc.",
-       [3]byte{0, 48, 162}:    "Lightner Engineering",
-       [3]byte{0, 48, 163}:    "Cisco Systems, Inc",
-       [3]byte{0, 48, 164}:    "Woodwind Communications System",
-       [3]byte{0, 48, 165}:    "ACTIVE POWER",
-       [3]byte{0, 48, 166}:    "VIANET TECHNOLOGIES, LTD.",
-       [3]byte{0, 48, 167}:    "SCHWEITZER ENGINEERING",
-       [3]byte{0, 48, 168}:    "OL'E COMMUNICATIONS, INC.",
-       [3]byte{0, 48, 169}:    "Netiverse, Inc.",
-       [3]byte{0, 48, 170}:    "AXUS MICROSYSTEMS, INC.",
-       [3]byte{0, 48, 171}:    "DELTA NETWORKS, INC.",
-       [3]byte{0, 48, 172}:    "Systeme Lauer GmbH & Co., Ltd.",
-       [3]byte{0, 48, 173}:    "SHANGHAI COMMUNICATION",
-       [3]byte{0, 48, 174}:    "Times N System, Inc.",
-       [3]byte{0, 48, 175}:    "Honeywell GmbH",
-       [3]byte{0, 48, 176}:    "Convergenet Technologies",
-       [3]byte{0, 48, 177}:    "TrunkNet",
-       [3]byte{0, 48, 178}:    "L-3 Sonoma EO",
-       [3]byte{0, 48, 179}:    "San Valley Systems, Inc.",
-       [3]byte{0, 48, 180}:    "INTERSIL CORP.",
-       [3]byte{0, 48, 181}:    "Tadiran Microwave Networks",
-       [3]byte{0, 48, 182}:    "Cisco Systems, Inc",
-       [3]byte{0, 48, 183}:    "Teletrol Systems, Inc.",
-       [3]byte{0, 48, 184}:    "RiverDelta Networks",
-       [3]byte{0, 48, 185}:    "ECTEL",
-       [3]byte{0, 48, 186}:    "AC&T SYSTEM CO., LTD.",
-       [3]byte{0, 48, 187}:    "CacheFlow, Inc.",
-       [3]byte{0, 48, 188}:    "Optronic AG",
-       [3]byte{0, 48, 189}:    "BELKIN COMPONENTS",
-       [3]byte{0, 48, 190}:    "City-Net Technology, Inc.",
-       [3]byte{0, 48, 191}:    "MULTIDATA GMBH",
-       [3]byte{0, 48, 192}:    "Lara Technology, Inc.",
-       [3]byte{0, 48, 193}:    "Hewlett Packard",
-       [3]byte{0, 48, 194}:    "COMONE",
-       [3]byte{0, 48, 195}:    "FLUECKIGER ELEKTRONIK AG",
-       [3]byte{0, 48, 196}:    "Canon Imaging Systems Inc.",
-       [3]byte{0, 48, 197}:    "CADENCE DESIGN SYSTEMS, INC.",
-       [3]byte{0, 48, 198}:    "CONTROL SOLUTIONS, INC.",
-       [3]byte{0, 48, 199}:    "Macromate Corp.",
-       [3]byte{0, 48, 200}:    "GAD LINE, LTD.",
-       [3]byte{0, 48, 201}:    "LuxN, N",
-       [3]byte{0, 48, 202}:    "Discovery Com",
-       [3]byte{0, 48, 203}:    "OMNI FLOW COMPUTERS, INC.",
-       [3]byte{0, 48, 204}:    "Tenor Networks, Inc.",
-       [3]byte{0, 48, 205}:    "CONEXANT SYSTEMS, INC.",
-       [3]byte{0, 48, 206}:    "Zaffire",
-       [3]byte{0, 48, 207}:    "TWO TECHNOLOGIES, INC.",
-       [3]byte{0, 48, 208}:    "Tellabs",
-       [3]byte{0, 48, 209}:    "INOVA CORPORATION",
-       [3]byte{0, 48, 210}:    "WIN TECHNOLOGIES, CO., LTD.",
-       [3]byte{0, 48, 211}:    "Agilent Technologies, Inc.",
-       [3]byte{0, 48, 212}:    "AAE Systems, Inc.",
-       [3]byte{0, 48, 213}:    "DResearch GmbH",
-       [3]byte{0, 48, 214}:    "MSC VERTRIEBS GMBH",
-       [3]byte{0, 48, 215}:    "Innovative Systems, L.L.C.",
-       [3]byte{0, 48, 216}:    "SITEK",
-       [3]byte{0, 48, 217}:    "DATACORE SOFTWARE CORP.",
-       [3]byte{0, 48, 218}:    "Comtrend Corporation",
-       [3]byte{0, 48, 219}:    "Mindready Solutions, Inc.",
-       [3]byte{0, 48, 220}:    "RIGHTECH CORPORATION",
-       [3]byte{0, 48, 221}:    "INDIGITA CORPORATION",
-       [3]byte{0, 48, 222}:    "WAGO Kontakttechnik GmbH",
-       [3]byte{0, 48, 223}:    "KB/TEL TELECOMUNICACIONES",
-       [3]byte{0, 48, 224}:    "OXFORD SEMICONDUCTOR LTD.",
-       [3]byte{0, 48, 225}:    "Network Equipment Technologies, Inc.",
-       [3]byte{0, 48, 226}:    "GARNET SYSTEMS CO., LTD.",
-       [3]byte{0, 48, 227}:    "SEDONA NETWORKS CORP.",
-       [3]byte{0, 48, 228}:    "CHIYODA SYSTEM RIKEN",
-       [3]byte{0, 48, 229}:    "Amper Datos S.A.",
-       [3]byte{0, 48, 230}:    "Draeger Medical Systems, Inc.",
-       [3]byte{0, 48, 231}:    "CNF MOBILE SOLUTIONS, INC.",
-       [3]byte{0, 48, 232}:    "ENSIM CORP.",
-       [3]byte{0, 48, 233}:    "GMA COMMUNICATION MANUFACT'G",
-       [3]byte{0, 48, 234}:    "TeraForce Technology Corporation",
-       [3]byte{0, 48, 235}:    "TURBONET COMMUNICATIONS, INC.",
-       [3]byte{0, 48, 236}:    "BORGARDT",
-       [3]byte{0, 48, 237}:    "Expert Magnetics Corp.",
-       [3]byte{0, 48, 238}:    "DSG Technology, Inc.",
-       [3]byte{0, 48, 239}:    "NEON TECHNOLOGY, INC.",
-       [3]byte{0, 48, 240}:    "Uniform Industrial Corp.",
-       [3]byte{0, 48, 241}:    "Accton Technology Corp",
-       [3]byte{0, 48, 242}:    "Cisco Systems, Inc",
-       [3]byte{0, 48, 243}:    "At Work Computers",
-       [3]byte{0, 48, 244}:    "STARDOT TECHNOLOGIES",
-       [3]byte{0, 48, 245}:    "Wild Lab. Ltd.",
-       [3]byte{0, 48, 246}:    "SECURELOGIX CORPORATION",
-       [3]byte{0, 48, 247}:    "RAMIX INC.",
-       [3]byte{0, 48, 248}:    "Dynapro Systems, Inc.",
-       [3]byte{0, 48, 249}:    "Sollae Systems Co., Ltd.",
-       [3]byte{0, 48, 250}:    "TELICA, INC.",
-       [3]byte{0, 48, 251}:    "AZS Technology AG",
-       [3]byte{0, 48, 252}:    "Terawave Communications, Inc.",
-       [3]byte{0, 48, 253}:    "INTEGRATED SYSTEMS DESIGN",
-       [3]byte{0, 48, 254}:    "DSA GmbH",
-       [3]byte{0, 48, 255}:    "DataFab Systems Inc.",
-       [3]byte{0, 49, 70}:     "Juniper Networks",
-       [3]byte{0, 50, 58}:     "so-logic",
-       [3]byte{0, 51, 108}:    "SynapSense Corporation",
-       [3]byte{0, 52, 218}:    "LG Electronics (Mobile Communications)",
-       [3]byte{0, 52, 241}:    "Radicom Research, Inc.",
-       [3]byte{0, 52, 254}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{0, 53, 26}:     "Cisco Systems, Inc",
-       [3]byte{0, 53, 50}:     "Electro-Metrics Corporation",
-       [3]byte{0, 53, 96}:     "Rosen Aviation",
-       [3]byte{0, 54, 118}:    "ARRIS Group, Inc.",
-       [3]byte{0, 54, 248}:    "Conti Temic microelectronic GmbH",
-       [3]byte{0, 54, 254}:    "SuperVision",
-       [3]byte{0, 55, 109}:    "Murata Manufacturing Co., Ltd.",
-       [3]byte{0, 55, 183}:    "Sagemcom Broadband SAS",
-       [3]byte{0, 56, 223}:    "Cisco Systems, Inc",
-       [3]byte{0, 58, 125}:    "Cisco Systems, Inc",
-       [3]byte{0, 58, 152}:    "Cisco Systems, Inc",
-       [3]byte{0, 58, 153}:    "Cisco Systems, Inc",
-       [3]byte{0, 58, 154}:    "Cisco Systems, Inc",
-       [3]byte{0, 58, 155}:    "Cisco Systems, Inc",
-       [3]byte{0, 58, 156}:    "Cisco Systems, Inc",
-       [3]byte{0, 58, 157}:    "NEC Platforms, Ltd.",
-       [3]byte{0, 58, 175}:    "BlueBit Ltd.",
-       [3]byte{0, 60, 197}:    "WONWOO Engineering Co., Ltd",
-       [3]byte{0, 61, 65}:     "Hatteland Computer AS",
-       [3]byte{0, 62, 225}:    "Apple, Inc.",
-       [3]byte{0, 64, 0}:      "PCI COMPONENTES DA AMZONIA LTD",
-       [3]byte{0, 64, 1}:      "Zero One Technology Co. Ltd.",
-       [3]byte{0, 64, 2}:      "PERLE SYSTEMS LIMITED",
-       [3]byte{0, 64, 3}:      "Emerson Process Management Power & Water Solutions, Inc.",
-       [3]byte{0, 64, 4}:      "ICM CO. LTD.",
-       [3]byte{0, 64, 5}:      "ANI COMMUNICATIONS INC.",
-       [3]byte{0, 64, 6}:      "SAMPO TECHNOLOGY CORPORATION",
-       [3]byte{0, 64, 7}:      "TELMAT INFORMATIQUE",
-       [3]byte{0, 64, 8}:      "A PLUS INFO CORPORATION",
-       [3]byte{0, 64, 9}:      "TACHIBANA TECTRON CO., LTD.",
-       [3]byte{0, 64, 10}:     "PIVOTAL TECHNOLOGIES, INC.",
-       [3]byte{0, 64, 11}:     "Cisco Systems, Inc",
-       [3]byte{0, 64, 12}:     "GENERAL MICRO SYSTEMS, INC.",
-       [3]byte{0, 64, 13}:     "LANNET DATA COMMUNICATIONS,LTD",
-       [3]byte{0, 64, 14}:     "MEMOTEC, INC.",
-       [3]byte{0, 64, 15}:     "DATACOM TECHNOLOGIES",
-       [3]byte{0, 64, 16}:     "SONIC SYSTEMS, INC.",
-       [3]byte{0, 64, 17}:     "ANDOVER CONTROLS CORPORATION",
-       [3]byte{0, 64, 18}:     "WINDATA, INC.",
-       [3]byte{0, 64, 19}:     "NTT DATA COMM. SYSTEMS CORP.",
-       [3]byte{0, 64, 20}:     "COMSOFT GMBH",
-       [3]byte{0, 64, 21}:     "ASCOM INFRASYS AG",
-       [3]byte{0, 64, 22}:     "ADC - Global Connectivity Solutions Division",
-       [3]byte{0, 64, 23}:     "Silex Technology America",
-       [3]byte{0, 64, 24}:     "ADOBE SYSTEMS, INC.",
-       [3]byte{0, 64, 25}:     "AEON SYSTEMS, INC.",
-       [3]byte{0, 64, 26}:     "FUJI ELECTRIC CO., LTD.",
-       [3]byte{0, 64, 27}:     "PRINTER SYSTEMS CORP.",
-       [3]byte{0, 64, 28}:     "AST RESEARCH, INC.",
-       [3]byte{0, 64, 29}:     "INVISIBLE SOFTWARE, INC.",
-       [3]byte{0, 64, 30}:     "ICC",
-       [3]byte{0, 64, 31}:     "COLORGRAPH LTD",
-       [3]byte{0, 64, 32}:     "CommScope Inc",
-       [3]byte{0, 64, 33}:     "RASTER GRAPHICS",
-       [3]byte{0, 64, 34}:     "KLEVER COMPUTERS, INC.",
-       [3]byte{0, 64, 35}:     "LOGIC CORPORATION",
-       [3]byte{0, 64, 36}:     "COMPAC INC.",
-       [3]byte{0, 64, 37}:     "MOLECULAR DYNAMICS",
-       [3]byte{0, 64, 38}:     "BUFFALO.INC",
-       [3]byte{0, 64, 39}:     "SMC MASSACHUSETTS, INC.",
-       [3]byte{0, 64, 40}:     "NETCOMM LIMITED",
-       [3]byte{0, 64, 41}:     "Compex",
-       [3]byte{0, 64, 42}:     "Canoga Perkins Corporation",
-       [3]byte{0, 64, 43}:     "TRIGEM COMPUTER, INC.",
-       [3]byte{0, 64, 44}:     "ISIS DISTRIBUTED SYSTEMS, INC.",
-       [3]byte{0, 64, 45}:     "HARRIS ADACOM CORPORATION",
-       [3]byte{0, 64, 46}:     "PRECISION SOFTWARE, INC.",
-       [3]byte{0, 64, 47}:     "XLNT DESIGNS INC.",
-       [3]byte{0, 64, 48}:     "GK COMPUTER",
-       [3]byte{0, 64, 49}:     "KOKUSAI ELECTRIC CO., LTD",
-       [3]byte{0, 64, 50}:     "DIGITAL COMMUNICATIONS",
-       [3]byte{0, 64, 51}:     "ADDTRON TECHNOLOGY CO., LTD.",
-       [3]byte{0, 64, 52}:     "BUSTEK CORPORATION",
-       [3]byte{0, 64, 53}:     "OPCOM",
-       [3]byte{0, 64, 54}:     "Zoom Telephonics, Inc",
-       [3]byte{0, 64, 55}:     "SEA-ILAN, INC.",
-       [3]byte{0, 64, 56}:     "TALENT ELECTRIC INCORPORATED",
-       [3]byte{0, 64, 57}:     "OPTEC DAIICHI DENKO CO., LTD.",
-       [3]byte{0, 64, 58}:     "IMPACT TECHNOLOGIES",
-       [3]byte{0, 64, 59}:     "SYNERJET INTERNATIONAL CORP.",
-       [3]byte{0, 64, 60}:     "FORKS, INC.",
-       [3]byte{0, 64, 61}:     "Teradata Corporation",
-       [3]byte{0, 64, 62}:     "RASTER OPS CORPORATION",
-       [3]byte{0, 64, 63}:     "SSANGYONG COMPUTER SYSTEMS",
-       [3]byte{0, 64, 64}:     "RING ACCESS, INC.",
-       [3]byte{0, 64, 65}:     "FUJIKURA LTD.",
-       [3]byte{0, 64, 66}:     "N.A.T. GMBH",
-       [3]byte{0, 64, 67}:     "Nokia Siemens Networks GmbH & Co. KG.",
-       [3]byte{0, 64, 68}:     "QNIX COMPUTER CO., LTD.",
-       [3]byte{0, 64, 69}:     "TWINHEAD CORPORATION",
-       [3]byte{0, 64, 70}:     "UDC RESEARCH LIMITED",
-       [3]byte{0, 64, 71}:     "WIND RIVER SYSTEMS",
-       [3]byte{0, 64, 72}:     "SMD INFORMATICA S.A.",
-       [3]byte{0, 64, 73}:     "Roche Diagnostics International Ltd.",
-       [3]byte{0, 64, 74}:     "WEST AUSTRALIAN DEPARTMENT",
-       [3]byte{0, 64, 75}:     "MAPLE COMPUTER SYSTEMS",
-       [3]byte{0, 64, 76}:     "HYPERTEC PTY LTD.",
-       [3]byte{0, 64, 77}:     "TELECOMMUNICATIONS TECHNIQUES",
-       [3]byte{0, 64, 78}:     "FLUENT, INC.",
-       [3]byte{0, 64, 79}:     "SPACE & NAVAL WARFARE SYSTEMS",
-       [3]byte{0, 64, 80}:     "IRONICS, INCORPORATED",
-       [3]byte{0, 64, 81}:     "GRACILIS, INC.",
-       [3]byte{0, 64, 82}:     "STAR TECHNOLOGIES, INC.",
-       [3]byte{0, 64, 83}:     "AMPRO COMPUTERS",
-       [3]byte{0, 64, 84}:     "CONNECTION MACHINES SERVICES",
-       [3]byte{0, 64, 85}:     "METRONIX GMBH",
-       [3]byte{0, 64, 86}:     "MCM JAPAN LTD.",
-       [3]byte{0, 64, 87}:     "LOCKHEED - SANDERS",
-       [3]byte{0, 64, 88}:     "KRONOS, INC.",
-       [3]byte{0, 64, 89}:     "YOSHIDA KOGYO K. K.",
-       [3]byte{0, 64, 90}:     "GOLDSTAR INFORMATION & COMM.",
-       [3]byte{0, 64, 91}:     "FUNASSET LIMITED",
-       [3]byte{0, 64, 92}:     "FUTURE SYSTEMS, INC.",
-       [3]byte{0, 64, 93}:     "STAR-TEK, INC.",
-       [3]byte{0, 64, 94}:     "NORTH HILLS ISRAEL",
-       [3]byte{0, 64, 95}:     "AFE COMPUTERS LTD.",
-       [3]byte{0, 64, 96}:     "COMENDEC LTD",
-       [3]byte{0, 64, 97}:     "DATATECH ENTERPRISES CO., LTD.",
-       [3]byte{0, 64, 98}:     "E-SYSTEMS, INC./GARLAND DIV.",
-       [3]byte{0, 64, 99}:     "VIA TECHNOLOGIES, INC.",
-       [3]byte{0, 64, 100}:    "KLA INSTRUMENTS CORPORATION",
-       [3]byte{0, 64, 101}:    "GTE SPACENET",
-       [3]byte{0, 64, 102}:    "APRESIA Systems Ltd",
-       [3]byte{0, 64, 103}:    "OMNIBYTE CORPORATION",
-       [3]byte{0, 64, 104}:    "EXTENDED SYSTEMS",
-       [3]byte{0, 64, 105}:    "LEMCOM SYSTEMS, INC.",
-       [3]byte{0, 64, 106}:    "KENTEK INFORMATION SYSTEMS,INC",
-       [3]byte{0, 64, 107}:    "SYSGEN",
-       [3]byte{0, 64, 108}:    "COPERNIQUE",
-       [3]byte{0, 64, 109}:    "LANCO, INC.",
-       [3]byte{0, 64, 110}:    "COROLLARY, INC.",
-       [3]byte{0, 64, 111}:    "SYNC RESEARCH INC.",
-       [3]byte{0, 64, 112}:    "INTERWARE CO., LTD.",
-       [3]byte{0, 64, 113}:    "ATM COMPUTER GMBH",
-       [3]byte{0, 64, 114}:    "Applied Innovation Inc.",
-       [3]byte{0, 64, 115}:    "BASS ASSOCIATES",
-       [3]byte{0, 64, 116}:    "CABLE AND WIRELESS",
-       [3]byte{0, 64, 117}:    "Tattile SRL",
-       [3]byte{0, 64, 118}:    "Sun Conversion Technologies",
-       [3]byte{0, 64, 119}:    "MAXTON TECHNOLOGY CORPORATION",
-       [3]byte{0, 64, 120}:    "WEARNES AUTOMATION PTE LTD",
-       [3]byte{0, 64, 121}:    "JUKO MANUFACTURE COMPANY, LTD.",
-       [3]byte{0, 64, 122}:    "SOCIETE D'EXPLOITATION DU CNIT",
-       [3]byte{0, 64, 123}:    "SCIENTIFIC ATLANTA",
-       [3]byte{0, 64, 124}:    "QUME CORPORATION",
-       [3]byte{0, 64, 125}:    "EXTENSION TECHNOLOGY CORP.",
-       [3]byte{0, 64, 126}:    "EVERGREEN SYSTEMS, INC.",
-       [3]byte{0, 64, 127}:    "FLIR Systems",
-       [3]byte{0, 64, 128}:    "ATHENIX CORPORATION",
-       [3]byte{0, 64, 129}:    "MANNESMANN SCANGRAPHIC GMBH",
-       [3]byte{0, 64, 130}:    "LABORATORY EQUIPMENT CORP.",
-       [3]byte{0, 64, 131}:    "TDA INDUSTRIA DE PRODUTOS",
-       [3]byte{0, 64, 132}:    "HONEYWELL ACS",
-       [3]byte{0, 64, 133}:    "SAAB INSTRUMENTS AB",
-       [3]byte{0, 64, 134}:    "MICHELS & KLEBERHOFF COMPUTER",
-       [3]byte{0, 64, 135}:    "UBITREX CORPORATION",
-       [3]byte{0, 64, 136}:    "MOBIUS TECHNOLOGIES, INC.",
-       [3]byte{0, 64, 137}:    "MEIDENSHA CORPORATION",
-       [3]byte{0, 64, 138}:    "TPS TELEPROCESSING SYS. GMBH",
-       [3]byte{0, 64, 139}:    "RAYLAN CORPORATION",
-       [3]byte{0, 64, 140}:    "AXIS COMMUNICATIONS AB",
-       [3]byte{0, 64, 141}:    "THE GOODYEAR TIRE & RUBBER CO.",
-       [3]byte{0, 64, 142}:    "Tattile SRL",
-       [3]byte{0, 64, 143}:    "WM-DATA MINFO AB",
-       [3]byte{0, 64, 144}:    "ANSEL COMMUNICATIONS",
-       [3]byte{0, 64, 145}:    "PROCOMP INDUSTRIA ELETRONICA",
-       [3]byte{0, 64, 146}:    "ASP COMPUTER PRODUCTS, INC.",
-       [3]byte{0, 64, 147}:    "PAXDATA NETWORKS LTD.",
-       [3]byte{0, 64, 148}:    "SHOGRAPHICS, INC.",
-       [3]byte{0, 64, 149}:    "R.P.T. INTERGROUPS INT'L LTD.",
-       [3]byte{0, 64, 150}:    "Cisco Systems, Inc",
-       [3]byte{0, 64, 151}:    "DATEX DIVISION OF",
-       [3]byte{0, 64, 152}:    "DRESSLER GMBH & CO.",
-       [3]byte{0, 64, 153}:    "NEWGEN SYSTEMS CORP.",
-       [3]byte{0, 64, 154}:    "NETWORK EXPRESS, INC.",
-       [3]byte{0, 64, 155}:    "HAL COMPUTER SYSTEMS INC.",
-       [3]byte{0, 64, 156}:    "TRANSWARE",
-       [3]byte{0, 64, 157}:    "DIGIBOARD, INC.",
-       [3]byte{0, 64, 158}:    "CONCURRENT TECHNOLOGIES  LTD.",
-       [3]byte{0, 64, 159}:    "Telco Systems, Inc.",
-       [3]byte{0, 64, 160}:    "GOLDSTAR CO., LTD.",
-       [3]byte{0, 64, 161}:    "ERGO COMPUTING",
-       [3]byte{0, 64, 162}:    "KINGSTAR TECHNOLOGY INC.",
-       [3]byte{0, 64, 163}:    "MICROUNITY SYSTEMS ENGINEERING",
-       [3]byte{0, 64, 164}:    "ROSE ELECTRONICS",
-       [3]byte{0, 64, 165}:    "CLINICOMP INTL.",
-       [3]byte{0, 64, 166}:    "Cray, Inc.",
-       [3]byte{0, 64, 167}:    "ITAUTEC PHILCO S.A.",
-       [3]byte{0, 64, 168}:    "IMF INTERNATIONAL LTD.",
-       [3]byte{0, 64, 169}:    "DATACOM INC.",
-       [3]byte{0, 64, 170}:    "Valmet Automation",
-       [3]byte{0, 64, 171}:    "ROLAND DG CORPORATION",
-       [3]byte{0, 64, 172}:    "SUPER WORKSTATION, INC.",
-       [3]byte{0, 64, 173}:    "SMA REGELSYSTEME GMBH",
-       [3]byte{0, 64, 174}:    "DELTA CONTROLS, INC.",
-       [3]byte{0, 64, 175}:    "DIGITAL PRODUCTS, INC.",
-       [3]byte{0, 64, 176}:    "BYTEX CORPORATION, ENGINEERING",
-       [3]byte{0, 64, 177}:    "CODONICS INC.",
-       [3]byte{0, 64, 178}:    "SYSTEMFORSCHUNG",
-       [3]byte{0, 64, 179}:    "ParTech Inc.",
-       [3]byte{0, 64, 180}:    "NEXTCOM K.K.",
-       [3]byte{0, 64, 181}:    "VIDEO TECHNOLOGY COMPUTERS LTD",
-       [3]byte{0, 64, 182}:    "COMPUTERM  CORPORATION",
-       [3]byte{0, 64, 183}:    "STEALTH COMPUTER SYSTEMS",
-       [3]byte{0, 64, 184}:    "IDEA ASSOCIATES",
-       [3]byte{0, 64, 185}:    "MACQ ELECTRONIQUE SA",
-       [3]byte{0, 64, 186}:    "ALLIANT COMPUTER SYSTEMS CORP.",
-       [3]byte{0, 64, 187}:    "GOLDSTAR CABLE CO., LTD.",
-       [3]byte{0, 64, 188}:    "ALGORITHMICS LTD.",
-       [3]byte{0, 64, 189}:    "STARLIGHT NETWORKS, INC.",
-       [3]byte{0, 64, 190}:    "BOEING DEFENSE & SPACE",
-       [3]byte{0, 64, 191}:    "CHANNEL SYSTEMS INTERN'L INC.",
-       [3]byte{0, 64, 192}:    "VISTA CONTROLS CORPORATION",
-       [3]byte{0, 64, 193}:    "BIZERBA-WERKE WILHEIM KRAUT",
-       [3]byte{0, 64, 194}:    "APPLIED COMPUTING DEVICES",
-       [3]byte{0, 64, 195}:    "FISCHER AND PORTER CO.",
-       [3]byte{0, 64, 196}:    "KINKEI SYSTEM CORPORATION",
-       [3]byte{0, 64, 197}:    "MICOM COMMUNICATIONS INC.",
-       [3]byte{0, 64, 198}:    "FIBERNET RESEARCH, INC.",
-       [3]byte{0, 64, 199}:    "RUBY TECH CORPORATION",
-       [3]byte{0, 64, 200}:    "MILAN TECHNOLOGY CORPORATION",
-       [3]byte{0, 64, 201}:    "NCUBE",
-       [3]byte{0, 64, 202}:    "FIRST INTERNAT'L COMPUTER, INC",
-       [3]byte{0, 64, 203}:    "LANWAN TECHNOLOGIES",
-       [3]byte{0, 64, 204}:    "SILCOM MANUF'G TECHNOLOGY INC.",
-       [3]byte{0, 64, 205}:    "TERA MICROSYSTEMS, INC.",
-       [3]byte{0, 64, 206}:    "NET-SOURCE, INC.",
-       [3]byte{0, 64, 207}:    "STRAWBERRY TREE, INC.",
-       [3]byte{0, 64, 208}:    "MITAC INTERNATIONAL CORP.",
-       [3]byte{0, 64, 209}:    "FUKUDA DENSHI CO., LTD.",
-       [3]byte{0, 64, 210}:    "PAGINE CORPORATION",
-       [3]byte{0, 64, 211}:    "KIMPSION INTERNATIONAL CORP.",
-       [3]byte{0, 64, 212}:    "GAGE TALKER CORP.",
-       [3]byte{0, 64, 213}:    "Sartorius Mechatronics T&H GmbH",
-       [3]byte{0, 64, 214}:    "LOCAMATION B.V.",
-       [3]byte{0, 64, 215}:    "STUDIO GEN INC.",
-       [3]byte{0, 64, 216}:    "OCEAN OFFICE AUTOMATION LTD.",
-       [3]byte{0, 64, 217}:    "AMERICAN MEGATRENDS INC.",
-       [3]byte{0, 64, 218}:    "TELSPEC LTD",
-       [3]byte{0, 64, 219}:    "ADVANCED TECHNICAL SOLUTIONS",
-       [3]byte{0, 64, 220}:    "TRITEC ELECTRONIC GMBH",
-       [3]byte{0, 64, 221}:    "HONG TECHNOLOGIES",
-       [3]byte{0, 64, 222}:    "Elsag Datamat spa",
-       [3]byte{0, 64, 223}:    "DIGALOG SYSTEMS, INC.",
-       [3]byte{0, 64, 224}:    "ATOMWIDE LTD.",
-       [3]byte{0, 64, 225}:    "MARNER INTERNATIONAL, INC.",
-       [3]byte{0, 64, 226}:    "MESA RIDGE TECHNOLOGIES, INC.",
-       [3]byte{0, 64, 227}:    "QUIN SYSTEMS LTD",
-       [3]byte{0, 64, 228}:    "E-M TECHNOLOGY, INC.",
-       [3]byte{0, 64, 229}:    "SYBUS CORPORATION",
-       [3]byte{0, 64, 230}:    "C.A.E.N.",
-       [3]byte{0, 64, 231}:    "ARNOS INSTRUMENTS & COMPUTER",
-       [3]byte{0, 64, 232}:    "CHARLES RIVER DATA SYSTEMS,INC",
-       [3]byte{0, 64, 233}:    "ACCORD SYSTEMS, INC.",
-       [3]byte{0, 64, 234}:    "PLAIN TREE SYSTEMS INC",
-       [3]byte{0, 64, 235}:    "MARTIN MARIETTA CORPORATION",
-       [3]byte{0, 64, 236}:    "MIKASA SYSTEM ENGINEERING",
-       [3]byte{0, 64, 237}:    "NETWORK CONTROLS INT'NATL INC.",
-       [3]byte{0, 64, 238}:    "OPTIMEM",
-       [3]byte{0, 64, 239}:    "HYPERCOM, INC.",
-       [3]byte{0, 64, 240}:    "MicroBrain,Inc.",
-       [3]byte{0, 64, 241}:    "CHUO ELECTRONICS CO., LTD.",
-       [3]byte{0, 64, 242}:    "JANICH & KLASS COMPUTERTECHNIK",
-       [3]byte{0, 64, 243}:    "NETCOR",
-       [3]byte{0, 64, 244}:    "CAMEO COMMUNICATIONS, INC.",
-       [3]byte{0, 64, 245}:    "OEM ENGINES",
-       [3]byte{0, 64, 246}:    "KATRON COMPUTERS INC.",
-       [3]byte{0, 64, 247}:    "Polaroid Corporation",
-       [3]byte{0, 64, 248}:    "SYSTEMHAUS DISCOM",
-       [3]byte{0, 64, 249}:    "COMBINET",
-       [3]byte{0, 64, 250}:    "MICROBOARDS, INC.",
-       [3]byte{0, 64, 251}:    "CASCADE COMMUNICATIONS",
-       [3]byte{0, 64, 252}:    "IBR COMPUTER TECHNIK GMBH",
-       [3]byte{0, 64, 253}:    "LXE",
-       [3]byte{0, 64, 254}:    "SYMPLEX COMMUNICATIONS",
-       [3]byte{0, 64, 255}:    "TELEBIT CORPORATION",
-       [3]byte{0, 65, 180}:    "Wuxi Zhongxing Optoelectronics Technology Co.,Ltd.",
-       [3]byte{0, 65, 210}:    "Cisco Systems, Inc",
-       [3]byte{0, 66, 82}:     "RLX Technologies",
-       [3]byte{0, 66, 90}:     "Cisco Systems, Inc",
-       [3]byte{0, 66, 104}:    "Cisco Systems, Inc",
-       [3]byte{0, 67, 255}:    "KETRON S.R.L.",
-       [3]byte{0, 69, 1}:      "Versus Technology, Inc.",
-       [3]byte{0, 70, 75}:     "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{0, 74, 119}:    "zte corporation",
-       [3]byte{0, 75, 243}:    "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.",
-       [3]byte{0, 77, 50}:     "Andon Health Co.,Ltd.",
-       [3]byte{0, 80, 0}:      "NEXO COMMUNICATIONS, INC.",
-       [3]byte{0, 80, 1}:      "YAMASHITA SYSTEMS CORP.",
-       [3]byte{0, 80, 2}:      "OMNISEC AG",
-       [3]byte{0, 80, 3}:      "Xrite Inc",
-       [3]byte{0, 80, 4}:      "3COM CORPORATION",
-       [3]byte{0, 80, 6}:      "TAC AB",
-       [3]byte{0, 80, 7}:      "SIEMENS TELECOMMUNICATION SYSTEMS LIMITED",
-       [3]byte{0, 80, 8}:      "TIVA MICROCOMPUTER CORP. (TMC)",
-       [3]byte{0, 80, 9}:      "PHILIPS BROADBAND NETWORKS",
-       [3]byte{0, 80, 10}:     "IRIS TECHNOLOGIES, INC.",
-       [3]byte{0, 80, 11}:     "Cisco Systems, Inc",
-       [3]byte{0, 80, 12}:     "e-Tek Labs, Inc.",
-       [3]byte{0, 80, 13}:     "SATORI ELECTORIC CO., LTD.",
-       [3]byte{0, 80, 14}:     "CHROMATIS NETWORKS, INC.",
-       [3]byte{0, 80, 15}:     "Cisco Systems, Inc",
-       [3]byte{0, 80, 16}:     "NovaNET Learning, Inc.",
-       [3]byte{0, 80, 18}:     "CBL - GMBH",
-       [3]byte{0, 80, 19}:     "Seagate Cloud Systems Inc",
-       [3]byte{0, 80, 20}:     "Cisco Systems, Inc",
-       [3]byte{0, 80, 21}:     "BRIGHT STAR ENGINEERING",
-       [3]byte{0, 80, 22}:     "Molex Canada Ltd",
-       [3]byte{0, 80, 23}:     "RSR S.R.L.",
-       [3]byte{0, 80, 24}:     "AMIT, Inc.",
-       [3]byte{0, 80, 25}:     "SPRING TIDE NETWORKS, INC.",
-       [3]byte{0, 80, 26}:     "IQinVision",
-       [3]byte{0, 80, 27}:     "ABL CANADA, INC.",
-       [3]byte{0, 80, 28}:     "JATOM SYSTEMS, INC.",
-       [3]byte{0, 80, 30}:     "Grass Valley, A Belden Brand",
-       [3]byte{0, 80, 31}:     "MRG SYSTEMS, LTD.",
-       [3]byte{0, 80, 32}:     "MEDIASTAR CO., LTD.",
-       [3]byte{0, 80, 33}:     "EIS INTERNATIONAL, INC.",
-       [3]byte{0, 80, 34}:     "ZONET TECHNOLOGY, INC.",
-       [3]byte{0, 80, 35}:     "PG DESIGN ELECTRONICS, INC.",
-       [3]byte{0, 80, 36}:     "NAVIC SYSTEMS, INC.",
-       [3]byte{0, 80, 38}:     "COSYSTEMS, INC.",
-       [3]byte{0, 80, 39}:     "GENICOM CORPORATION",
-       [3]byte{0, 80, 40}:     "AVAL COMMUNICATIONS",
-       [3]byte{0, 80, 41}:     "1394 PRINTER WORKING GROUP",
-       [3]byte{0, 80, 42}:     "Cisco Systems, Inc",
-       [3]byte{0, 80, 43}:     "GENRAD LTD.",
-       [3]byte{0, 80, 44}:     "SOYO COMPUTER, INC.",
-       [3]byte{0, 80, 45}:     "ACCEL, INC.",
-       [3]byte{0, 80, 46}:     "CAMBEX CORPORATION",
-       [3]byte{0, 80, 47}:     "TollBridge Technologies, Inc.",
-       [3]byte{0, 80, 48}:     "FUTURE PLUS SYSTEMS",
-       [3]byte{0, 80, 49}:     "AEROFLEX LABORATORIES, INC.",
-       [3]byte{0, 80, 50}:     "PICAZO COMMUNICATIONS, INC.",
-       [3]byte{0, 80, 51}:     "MAYAN NETWORKS",
-       [3]byte{0, 80, 54}:     "NETCAM, LTD.",
-       [3]byte{0, 80, 55}:     "KOGA ELECTRONICS CO.",
-       [3]byte{0, 80, 56}:     "DAIN TELECOM CO., LTD.",
-       [3]byte{0, 80, 57}:     "MARINER NETWORKS",
-       [3]byte{0, 80, 58}:     "DATONG ELECTRONICS LTD.",
-       [3]byte{0, 80, 59}:     "MEDIAFIRE CORPORATION",
-       [3]byte{0, 80, 60}:     "TSINGHUA NOVEL ELECTRONICS",
-       [3]byte{0, 80, 62}:     "Cisco Systems, Inc",
-       [3]byte{0, 80, 63}:     "ANCHOR GAMES",
-       [3]byte{0, 80, 64}:     "Panasonic Electric Works Co., Ltd.",
-       [3]byte{0, 80, 65}:     "Coretronic Corporation",
-       [3]byte{0, 80, 66}:     "SCI MANUFACTURING SINGAPORE PTE, LTD.",
-       [3]byte{0, 80, 67}:     "MARVELL SEMICONDUCTOR, INC.",
-       [3]byte{0, 80, 68}:     "ASACA CORPORATION",
-       [3]byte{0, 80, 69}:     "RIOWORKS SOLUTIONS, INC.",
-       [3]byte{0, 80, 70}:     "MENICX INTERNATIONAL CO., LTD.",
-       [3]byte{0, 80, 71}:     "Private",
-       [3]byte{0, 80, 72}:     "INFOLIBRIA",
-       [3]byte{0, 80, 73}:     "Arbor Networks Inc",
-       [3]byte{0, 80, 74}:     "ELTECO A.S.",
-       [3]byte{0, 80, 75}:     "BARCONET N.V.",
-       [3]byte{0, 80, 76}:     "Galil Motion Control",
-       [3]byte{0, 80, 77}:     "Tokyo Electron Device Limited",
-       [3]byte{0, 80, 78}:     "SIERRA MONITOR CORP.",
-       [3]byte{0, 80, 79}:     "OLENCOM ELECTRONICS",
-       [3]byte{0, 80, 80}:     "Cisco Systems, Inc",
-       [3]byte{0, 80, 81}:     "IWATSU ELECTRIC CO., LTD.",
-       [3]byte{0, 80, 82}:     "TIARA NETWORKS, INC.",
-       [3]byte{0, 80, 83}:     "Cisco Systems, Inc",
-       [3]byte{0, 80, 84}:     "Cisco Systems, Inc",
-       [3]byte{0, 80, 85}:     "DOMS A/S",
-       [3]byte{0, 80, 86}:     "VMware, Inc.",
-       [3]byte{0, 80, 87}:     "BROADBAND ACCESS SYSTEMS",
-       [3]byte{0, 80, 88}:     "Sangoma Technologies",
-       [3]byte{0, 80, 89}:     "iBAHN",
-       [3]byte{0, 80, 90}:     "NETWORK ALCHEMY, INC.",
-       [3]byte{0, 80, 91}:     "KAWASAKI LSI U.S.A., INC.",
-       [3]byte{0, 80, 92}:     "TUNDO CORPORATION",
-       [3]byte{0, 80, 94}:     "DIGITEK MICROLOGIC S.A.",
-       [3]byte{0, 80, 95}:     "BRAND INNOVATORS",
-       [3]byte{0, 80, 96}:     "TANDBERG TELECOM AS",
-       [3]byte{0, 80, 98}:     "KOUWELL ELECTRONICS CORP.  **",
-       [3]byte{0, 80, 99}:     "OY COMSEL SYSTEM AB",
-       [3]byte{0, 80, 100}:    "CAE ELECTRONICS",
-       [3]byte{0, 80, 101}:    "TDK-Lambda Corporation",
-       [3]byte{0, 80, 102}:    "AtecoM GmbH advanced telecomunication modules",
-       [3]byte{0, 80, 103}:    "AEROCOMM, INC.",
-       [3]byte{0, 80, 104}:    "ELECTRONIC INDUSTRIES ASSOCIATION",
-       [3]byte{0, 80, 105}:    "PixStream Incorporated",
-       [3]byte{0, 80, 106}:    "EDEVA, INC.",
-       [3]byte{0, 80, 107}:    "SPX-ATEG",
-       [3]byte{0, 80, 108}:    "Beijer Electronics Products AB",
-       [3]byte{0, 80, 109}:    "VIDEOJET SYSTEMS",
-       [3]byte{0, 80, 110}:    "CORDER ENGINEERING CORPORATION",
-       [3]byte{0, 80, 111}:    "G-CONNECT",
-       [3]byte{0, 80, 112}:    "CHAINTECH COMPUTER CO., LTD.",
-       [3]byte{0, 80, 113}:    "AIWA CO., LTD.",
-       [3]byte{0, 80, 114}:    "CORVIS CORPORATION",
-       [3]byte{0, 80, 115}:    "Cisco Systems, Inc",
-       [3]byte{0, 80, 116}:    "ADVANCED HI-TECH CORP.",
-       [3]byte{0, 80, 117}:    "KESTREL SOLUTIONS",
-       [3]byte{0, 80, 118}:    "IBM Corp",
-       [3]byte{0, 80, 119}:    "PROLIFIC TECHNOLOGY, INC.",
-       [3]byte{0, 80, 120}:    "MEGATON HOUSE, LTD.",
-       [3]byte{0, 80, 121}:    "Private",
-       [3]byte{0, 80, 122}:    "XPEED, INC.",
-       [3]byte{0, 80, 123}:    "MERLOT COMMUNICATIONS",
-       [3]byte{0, 80, 124}:    "VIDEOCON AG",
-       [3]byte{0, 80, 125}:    "IFP",
-       [3]byte{0, 80, 126}:    "NEWER TECHNOLOGY",
-       [3]byte{0, 80, 127}:    "DrayTek Corp.",
-       [3]byte{0, 80, 128}:    "Cisco Systems, Inc",
-       [3]byte{0, 80, 129}:    "MURATA MACHINERY, LTD.",
-       [3]byte{0, 80, 130}:    "FORESSON CORPORATION",
-       [3]byte{0, 80, 131}:    "GILBARCO, INC.",
-       [3]byte{0, 80, 132}:    "ATL PRODUCTS",
-       [3]byte{0, 80, 134}:    "TELKOM SA, LTD.",
-       [3]byte{0, 80, 135}:    "TERASAKI ELECTRIC CO., LTD.",
-       [3]byte{0, 80, 136}:    "AMANO CORPORATION",
-       [3]byte{0, 80, 137}:    "SAFETY MANAGEMENT SYSTEMS",
-       [3]byte{0, 80, 139}:    "Hewlett Packard",
-       [3]byte{0, 80, 140}:    "RSI SYSTEMS",
-       [3]byte{0, 80, 141}:    "ABIT COMPUTER CORPORATION",
-       [3]byte{0, 80, 142}:    "OPTIMATION, INC.",
-       [3]byte{0, 80, 143}:    "ASITA TECHNOLOGIES INT'L LTD.",
-       [3]byte{0, 80, 144}:    "DCTRI",
-       [3]byte{0, 80, 145}:    "NETACCESS, INC.",
-       [3]byte{0, 80, 146}:    "Rigaku Corporation Osaka Plant",
-       [3]byte{0, 80, 147}:    "BOEING",
-       [3]byte{0, 80, 148}:    "ARRIS Group, Inc.",
-       [3]byte{0, 80, 149}:    "PERACOM NETWORKS",
-       [3]byte{0, 80, 150}:    "SALIX TECHNOLOGIES, INC.",
-       [3]byte{0, 80, 151}:    "MMC-EMBEDDED COMPUTERTECHNIK GmbH",
-       [3]byte{0, 80, 152}:    "GLOBALOOP, LTD.",
-       [3]byte{0, 80, 153}:    "3COM EUROPE, LTD.",
-       [3]byte{0, 80, 154}:    "TAG ELECTRONIC SYSTEMS",
-       [3]byte{0, 80, 155}:    "SWITCHCORE AB",
-       [3]byte{0, 80, 156}:    "BETA RESEARCH",
-       [3]byte{0, 80, 157}:    "THE INDUSTREE B.V.",
-       [3]byte{0, 80, 158}:    "Les Technologies SoftAcoustik Inc.",
-       [3]byte{0, 80, 159}:    "HORIZON COMPUTER",
-       [3]byte{0, 80, 160}:    "DELTA COMPUTER SYSTEMS, INC.",
-       [3]byte{0, 80, 161}:    "CARLO GAVAZZI, INC.",
-       [3]byte{0, 80, 162}:    "Cisco Systems, Inc",
-       [3]byte{0, 80, 163}:    "TransMedia Communications, Inc.",
-       [3]byte{0, 80, 164}:    "IO TECH, INC.",
-       [3]byte{0, 80, 165}:    "CAPITOL BUSINESS SYSTEMS, LTD.",
-       [3]byte{0, 80, 166}:    "OPTRONICS",
-       [3]byte{0, 80, 167}:    "Cisco Systems, Inc",
-       [3]byte{0, 80, 168}:    "OpenCon Systems, Inc.",
-       [3]byte{0, 80, 169}:    "MOLDAT WIRELESS TECHNOLGIES",
-       [3]byte{0, 80, 170}:    "KONICA MINOLTA HOLDINGS, INC.",
-       [3]byte{0, 80, 171}:    "NALTEC, Inc.",
-       [3]byte{0, 80, 172}:    "MAPLE COMPUTER CORPORATION",
-       [3]byte{0, 80, 173}:    "CommUnique Wireless Corp.",
-       [3]byte{0, 80, 174}:    "FDK Co., Ltd",
-       [3]byte{0, 80, 175}:    "INTERGON, INC.",
-       [3]byte{0, 80, 176}:    "TECHNOLOGY ATLANTA CORPORATION",
-       [3]byte{0, 80, 177}:    "GIDDINGS & LEWIS",
-       [3]byte{0, 80, 178}:    "BRODEL GmbH",
-       [3]byte{0, 80, 179}:    "VOICEBOARD CORPORATION",
-       [3]byte{0, 80, 180}:    "SATCHWELL CONTROL SYSTEMS, LTD",
-       [3]byte{0, 80, 181}:    "FICHET SECURITE ELECTRONIQUE",
-       [3]byte{0, 80, 182}:    "GOOD WAY IND. CO., LTD.",
-       [3]byte{0, 80, 183}:    "BOSER TECHNOLOGY CO., LTD.",
-       [3]byte{0, 80, 184}:    "INOVA COMPUTERS GMBH & CO. KG",
-       [3]byte{0, 80, 185}:    "XITRON TECHNOLOGIES, INC.",
-       [3]byte{0, 80, 186}:    "D-Link Corporation",
-       [3]byte{0, 80, 187}:    "CMS TECHNOLOGIES",
-       [3]byte{0, 80, 188}:    "HAMMER STORAGE SOLUTIONS",
-       [3]byte{0, 80, 189}:    "Cisco Systems, Inc",
-       [3]byte{0, 80, 190}:    "FAST MULTIMEDIA AG",
-       [3]byte{0, 80, 191}:    "Metalligence Technology Corp.",
-       [3]byte{0, 80, 192}:    "GATAN, INC.",
-       [3]byte{0, 80, 193}:    "GEMFLEX NETWORKS, LTD.",
-       [3]byte{0, 80, 194}:    "IEEE Registration Authority",
-       [3]byte{0, 80, 196}:    "IMD",
-       [3]byte{0, 80, 197}:    "ADS Technologies, Inc",
-       [3]byte{0, 80, 198}:    "LOOP TELECOMMUNICATION INTERNATIONAL, INC.",
-       [3]byte{0, 80, 199}:    "Private",
-       [3]byte{0, 80, 200}:    "Addonics Technologies, Inc.",
-       [3]byte{0, 80, 201}:    "MASPRO DENKOH CORP.",
-       [3]byte{0, 80, 202}:    "NET TO NET TECHNOLOGIES",
-       [3]byte{0, 80, 203}:    "JETTER",
-       [3]byte{0, 80, 204}:    "Seagate Cloud Systems Inc",
-       [3]byte{0, 80, 205}:    "DIGIANSWER A/S",
-       [3]byte{0, 80, 206}:    "LG INTERNATIONAL CORP.",
-       [3]byte{0, 80, 207}:    "VANLINK COMMUNICATION TECHNOLOGY RESEARCH INSTITUTE",
-       [3]byte{0, 80, 208}:    "MINERVA SYSTEMS",
-       [3]byte{0, 80, 209}:    "Cisco Systems, Inc",
-       [3]byte{0, 80, 210}:    "CMC Electronics Inc",
-       [3]byte{0, 80, 211}:    "DIGITAL AUDIO PROCESSING PTY. LTD.",
-       [3]byte{0, 80, 212}:    "JOOHONG INFORMATION &",
-       [3]byte{0, 80, 213}:    "AD SYSTEMS CORP.",
-       [3]byte{0, 80, 214}:    "ATLAS COPCO TOOLS AB",
-       [3]byte{0, 80, 215}:    "TELSTRAT",
-       [3]byte{0, 80, 216}:    "UNICORN COMPUTER CORP.",
-       [3]byte{0, 80, 217}:    "ENGETRON-ENGENHARIA ELETRONICA IND. e COM. LTDA",
-       [3]byte{0, 80, 218}:    "3COM CORPORATION",
-       [3]byte{0, 80, 219}:    "CONTEMPORARY CONTROL",
-       [3]byte{0, 80, 220}:    "TAS TELEFONBAU A. SCHWABE GMBH & CO. KG",
-       [3]byte{0, 80, 221}:    "SERRA SOLDADURA, S.A.",
-       [3]byte{0, 80, 222}:    "SIGNUM SYSTEMS CORP.",
-       [3]byte{0, 80, 223}:    "AirFiber, Inc.",
-       [3]byte{0, 80, 225}:    "NS TECH ELECTRONICS SDN BHD",
-       [3]byte{0, 80, 226}:    "Cisco Systems, Inc",
-       [3]byte{0, 80, 227}:    "ARRIS Group, Inc.",
-       [3]byte{0, 80, 228}:    "Apple, Inc.",
-       [3]byte{0, 80, 230}:    "HAKUSAN CORPORATION",
-       [3]byte{0, 80, 231}:    "PARADISE INNOVATIONS (ASIA)",
-       [3]byte{0, 80, 232}:    "NOMADIX INC.",
-       [3]byte{0, 80, 234}:    "XEL COMMUNICATIONS, INC.",
-       [3]byte{0, 80, 235}:    "ALPHA-TOP CORPORATION",
-       [3]byte{0, 80, 236}:    "OLICOM A/S",
-       [3]byte{0, 80, 237}:    "ANDA NETWORKS",
-       [3]byte{0, 80, 238}:    "TEK DIGITEL CORPORATION",
-       [3]byte{0, 80, 239}:    "SPE Systemhaus GmbH",
-       [3]byte{0, 80, 240}:    "Cisco Systems, Inc",
-       [3]byte{0, 80, 241}:    "Intel Corporation",
-       [3]byte{0, 80, 242}:    "MICROSOFT CORP.",
-       [3]byte{0, 80, 243}:    "GLOBAL NET INFORMATION CO., Ltd.",
-       [3]byte{0, 80, 244}:    "SIGMATEK GMBH & CO. KG",
-       [3]byte{0, 80, 246}:    "PAN-INTERNATIONAL INDUSTRIAL CORP.",
-       [3]byte{0, 80, 247}:    "VENTURE MANUFACTURING (SINGAPORE) LTD.",
-       [3]byte{0, 80, 248}:    "ENTREGA TECHNOLOGIES, INC.",
-       [3]byte{0, 80, 249}:    "Sensormatic Electronics LLC",
-       [3]byte{0, 80, 250}:    "OXTEL, LTD.",
-       [3]byte{0, 80, 251}:    "VSK ELECTRONICS",
-       [3]byte{0, 80, 252}:    "Edimax Technology Co. Ltd.",
-       [3]byte{0, 80, 253}:    "VISIONCOMM CO., LTD.",
-       [3]byte{0, 80, 254}:    "PCTVnet ASA",
-       [3]byte{0, 80, 255}:    "HAKKO ELECTRONICS CO., LTD.",
-       [3]byte{0, 82, 24}:     "Wuxi Keboda Electron Co.Ltd",
-       [3]byte{0, 84, 159}:    "Avaya Inc",
-       [3]byte{0, 84, 175}:    "Continental Automotive Systems Inc.",
-       [3]byte{0, 84, 189}:    "Swelaser AB",
-       [3]byte{0, 85, 218}:    "IEEE Registration Authority",
-       [3]byte{0, 86, 43}:     "Cisco Systems, Inc",
-       [3]byte{0, 86, 205}:    "Apple, Inc.",
-       [3]byte{0, 87, 210}:    "Cisco Systems, Inc",
-       [3]byte{0, 89, 7}:      "LenovoEMC Products USA, LLC",
-       [3]byte{0, 89, 121}:    "Networked Energy Services",
-       [3]byte{0, 89, 172}:    "KPN. B.V.",
-       [3]byte{0, 89, 220}:    "Cisco Systems, Inc",
-       [3]byte{0, 90, 19}:     "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{0, 90, 57}:     "SHENZHEN FAST TECHNOLOGIES CO.,LTD",
-       [3]byte{0, 91, 161}:    "shanghai huayuan chuangxin software CO., LTD.",
-       [3]byte{0, 92, 134}:    "SHENZHEN FAST TECHNOLOGIES CO.,LTD",
-       [3]byte{0, 92, 177}:    "Gospell DIGITAL TECHNOLOGY CO., LTD",
-       [3]byte{0, 93, 3}:      "Xilinx, Inc",
-       [3]byte{0, 93, 115}:    "Cisco Systems, Inc",
-       [3]byte{0, 95, 134}:    "Cisco Systems, Inc",
-       [3]byte{0, 96, 0}:      "XYCOM INC.",
-       [3]byte{0, 96, 1}:      "InnoSys, Inc.",
-       [3]byte{0, 96, 2}:      "SCREEN SUBTITLING SYSTEMS, LTD",
-       [3]byte{0, 96, 3}:      "TERAOKA WEIGH SYSTEM PTE, LTD.",
-       [3]byte{0, 96, 4}:      "COMPUTADORES MODULARES SA",
-       [3]byte{0, 96, 5}:      "FEEDBACK DATA LTD.",
-       [3]byte{0, 96, 6}:      "SOTEC CO., LTD",
-       [3]byte{0, 96, 7}:      "ACRES GAMING, INC.",
-       [3]byte{0, 96, 8}:      "3COM CORPORATION",
-       [3]byte{0, 96, 9}:      "Cisco Systems, Inc",
-       [3]byte{0, 96, 10}:     "SORD COMPUTER CORPORATION",
-       [3]byte{0, 96, 11}:     "LOGWARE GmbH",
-       [3]byte{0, 96, 12}:     "Eurotech Inc.",
-       [3]byte{0, 96, 13}:     "Digital Logic GmbH",
-       [3]byte{0, 96, 14}:     "WAVENET INTERNATIONAL, INC.",
-       [3]byte{0, 96, 15}:     "Westell Technologies Inc.",
-       [3]byte{0, 96, 16}:     "NETWORK MACHINES, INC.",
-       [3]byte{0, 96, 17}:     "CRYSTAL SEMICONDUCTOR CORP.",
-       [3]byte{0, 96, 18}:     "POWER COMPUTING CORPORATION",
-       [3]byte{0, 96, 19}:     "NETSTAL MASCHINEN AG",
-       [3]byte{0, 96, 20}:     "EDEC CO., LTD.",
-       [3]byte{0, 96, 21}:     "NET2NET CORPORATION",
-       [3]byte{0, 96, 22}:     "CLARIION",
-       [3]byte{0, 96, 23}:     "TOKIMEC INC.",
-       [3]byte{0, 96, 24}:     "STELLAR ONE CORPORATION",
-       [3]byte{0, 96, 25}:     "Roche Diagnostics",
-       [3]byte{0, 96, 26}:     "KEITHLEY INSTRUMENTS",
-       [3]byte{0, 96, 27}:     "MESA ELECTRONICS",
-       [3]byte{0, 96, 28}:     "TELXON CORPORATION",
-       [3]byte{0, 96, 29}:     "LUCENT TECHNOLOGIES",
-       [3]byte{0, 96, 30}:     "SOFTLAB, INC.",
-       [3]byte{0, 96, 31}:     "STALLION TECHNOLOGIES",
-       [3]byte{0, 96, 32}:     "PIVOTAL NETWORKING, INC.",
-       [3]byte{0, 96, 33}:     "DSC CORPORATION",
-       [3]byte{0, 96, 34}:     "VICOM SYSTEMS, INC.",
-       [3]byte{0, 96, 35}:     "PERICOM SEMICONDUCTOR CORP.",
-       [3]byte{0, 96, 36}:     "GRADIENT TECHNOLOGIES, INC.",
-       [3]byte{0, 96, 37}:     "ACTIVE IMAGING PLC",
-       [3]byte{0, 96, 38}:     "VIKING Modular Solutions",
-       [3]byte{0, 96, 39}:     "Superior Modular Products",
-       [3]byte{0, 96, 40}:     "MACROVISION CORPORATION",
-       [3]byte{0, 96, 41}:     "CARY PERIPHERALS INC.",
-       [3]byte{0, 96, 42}:     "SYMICRON COMPUTER COMMUNICATIONS, LTD.",
-       [3]byte{0, 96, 43}:     "PEAK AUDIO",
-       [3]byte{0, 96, 44}:     "LINX Data Terminals, Inc.",
-       [3]byte{0, 96, 45}:     "ALERTON TECHNOLOGIES, INC.",
-       [3]byte{0, 96, 46}:     "CYCLADES CORPORATION",
-       [3]byte{0, 96, 47}:     "Cisco Systems, Inc",
-       [3]byte{0, 96, 48}:     "VILLAGE TRONIC ENTWICKLUNG",
-       [3]byte{0, 96, 49}:     "HRK SYSTEMS",
-       [3]byte{0, 96, 50}:     "I-CUBE, INC.",
-       [3]byte{0, 96, 51}:     "ACUITY IMAGING, INC.",
-       [3]byte{0, 96, 52}:     "ROBERT BOSCH GmbH",
-       [3]byte{0, 96, 53}:     "DALLAS SEMICONDUCTOR, INC.",
-       [3]byte{0, 96, 54}:     "AIT Austrian Institute of Technology GmbH",
-       [3]byte{0, 96, 55}:     "NXP Semiconductors",
-       [3]byte{0, 96, 56}:     "Nortel Networks",
-       [3]byte{0, 96, 57}:     "SanCom Technology, Inc.",
-       [3]byte{0, 96, 58}:     "QUICK CONTROLS LTD.",
-       [3]byte{0, 96, 59}:     "AMTEC spa",
-       [3]byte{0, 96, 60}:     "HAGIWARA SYS-COM CO., LTD.",
-       [3]byte{0, 96, 61}:     "3CX",
-       [3]byte{0, 96, 62}:     "Cisco Systems, Inc",
-       [3]byte{0, 96, 63}:     "PATAPSCO DESIGNS",
-       [3]byte{0, 96, 64}:     "NETRO CORP.",
-       [3]byte{0, 96, 65}:     "Yokogawa Digital Computer Corporation",
-       [3]byte{0, 96, 66}:     "TKS (USA), INC.",
-       [3]byte{0, 96, 67}:     "iDirect, INC.",
-       [3]byte{0, 96, 68}:     "LITTON/POLY-SCIENTIFIC",
-       [3]byte{0, 96, 69}:     "PATHLIGHT TECHNOLOGIES",
-       [3]byte{0, 96, 70}:     "VMETRO, INC.",
-       [3]byte{0, 96, 71}:     "Cisco Systems, Inc",
-       [3]byte{0, 96, 72}:     "Dell EMC",
-       [3]byte{0, 96, 73}:     "VINA TECHNOLOGIES",
-       [3]byte{0, 96, 74}:     "SAIC IDEAS GROUP",
-       [3]byte{0, 96, 75}:     "Safe-com GmbH & Co. KG",
-       [3]byte{0, 96, 76}:     "Sagemcom Broadband SAS",
-       [3]byte{0, 96, 77}:     "MMC NETWORKS, INC.",
-       [3]byte{0, 96, 78}:     "CYCLE COMPUTER CORPORATION, INC.",
-       [3]byte{0, 96, 79}:     "Tattile SRL",
-       [3]byte{0, 96, 80}:     "INTERNIX INC.",
-       [3]byte{0, 96, 81}:     "QUALITY SEMICONDUCTOR",
-       [3]byte{0, 96, 82}:     "PERIPHERALS ENTERPRISE CO., Ltd.",
-       [3]byte{0, 96, 83}:     "TOYODA MACHINE WORKS, LTD.",
-       [3]byte{0, 96, 84}:     "CONTROLWARE GMBH",
-       [3]byte{0, 96, 85}:     "CORNELL UNIVERSITY",
-       [3]byte{0, 96, 86}:     "NETWORK TOOLS, INC.",
-       [3]byte{0, 96, 87}:     "Murata Manufacturing Co., Ltd.",
-       [3]byte{0, 96, 88}:     "COPPER MOUNTAIN COMMUNICATIONS, INC.",
-       [3]byte{0, 96, 89}:     "TECHNICAL COMMUNICATIONS CORP.",
-       [3]byte{0, 96, 90}:     "CELCORE, INC.",
-       [3]byte{0, 96, 91}:     "IntraServer Technology, Inc.",
-       [3]byte{0, 96, 92}:     "Cisco Systems, Inc",
-       [3]byte{0, 96, 93}:     "SCANIVALVE CORP.",
-       [3]byte{0, 96, 94}:     "LIBERTY TECHNOLOGY NETWORKING",
-       [3]byte{0, 96, 95}:     "NIPPON UNISOFT CORPORATION",
-       [3]byte{0, 96, 96}:     "Data Innovations North America",
-       [3]byte{0, 96, 97}:     "WHISTLE COMMUNICATIONS CORP.",
-       [3]byte{0, 96, 98}:     "TELESYNC, INC.",
-       [3]byte{0, 96, 99}:     "PSION DACOM PLC.",
-       [3]byte{0, 96, 100}:    "NETCOMM LIMITED",
-       [3]byte{0, 96, 101}:    "BERNECKER & RAINER INDUSTRIE-ELEKTRONIC GmbH",
-       [3]byte{0, 96, 102}:    "LACROIX Trafic",
-       [3]byte{0, 96, 103}:    "ACER NETXUS INC.",
-       [3]byte{0, 96, 104}:    "Dialogic Corporation",
-       [3]byte{0, 96, 105}:    "Brocade Communications Systems, Inc.",
-       [3]byte{0, 96, 106}:    "MITSUBISHI WIRELESS COMMUNICATIONS. INC.",
-       [3]byte{0, 96, 107}:    "Synclayer Inc.",
-       [3]byte{0, 96, 108}:    "ARESCOM",
-       [3]byte{0, 96, 109}:    "DIGITAL EQUIPMENT CORP.",
-       [3]byte{0, 96, 110}:    "DAVICOM SEMICONDUCTOR, INC.",
-       [3]byte{0, 96, 111}:    "CLARION CORPORATION OF AMERICA",
-       [3]byte{0, 96, 112}:    "Cisco Systems, Inc",
-       [3]byte{0, 96, 113}:    "MIDAS LAB, INC.",
-       [3]byte{0, 96, 114}:    "VXL INSTRUMENTS, LIMITED",
-       [3]byte{0, 96, 115}:    "REDCREEK COMMUNICATIONS, INC.",
-       [3]byte{0, 96, 116}:    "QSC LLC",
-       [3]byte{0, 96, 117}:    "PENTEK, INC.",
-       [3]byte{0, 96, 118}:    "SCHLUMBERGER TECHNOLOGIES RETAIL PETROLEUM SYSTEMS",
-       [3]byte{0, 96, 119}:    "PRISA NETWORKS",
-       [3]byte{0, 96, 120}:    "POWER MEASUREMENT LTD.",
-       [3]byte{0, 96, 121}:    "Mainstream Data, Inc.",
-       [3]byte{0, 96, 122}:    "DVS GMBH",
-       [3]byte{0, 96, 123}:    "FORE SYSTEMS, INC.",
-       [3]byte{0, 96, 124}:    "WaveAccess, Ltd.",
-       [3]byte{0, 96, 125}:    "SENTIENT NETWORKS INC.",
-       [3]byte{0, 96, 126}:    "GIGALABS, INC.",
-       [3]byte{0, 96, 127}:    "AURORA TECHNOLOGIES, INC.",
-       [3]byte{0, 96, 128}:    "MICROTRONIX DATACOM LTD.",
-       [3]byte{0, 96, 129}:    "TV/COM INTERNATIONAL",
-       [3]byte{0, 96, 130}:    "NOVALINK TECHNOLOGIES, INC.",
-       [3]byte{0, 96, 131}:    "Cisco Systems, Inc",
-       [3]byte{0, 96, 132}:    "DIGITAL VIDEO",
-       [3]byte{0, 96, 133}:    "Storage Concepts",
-       [3]byte{0, 96, 134}:    "LOGIC REPLACEMENT TECH. LTD.",
-       [3]byte{0, 96, 135}:    "KANSAI ELECTRIC CO., LTD.",
-       [3]byte{0, 96, 136}:    "Analog Devices, Inc.",
-       [3]byte{0, 96, 137}:    "XATA",
-       [3]byte{0, 96, 138}:    "CITADEL COMPUTER",
-       [3]byte{0, 96, 139}:    "ConferTech International",
-       [3]byte{0, 96, 140}:    "3COM CORPORATION",
-       [3]byte{0, 96, 141}:    "UNIPULSE CORP.",
-       [3]byte{0, 96, 142}:    "HE ELECTRONICS, TECHNOLOGIE & SYSTEMTECHNIK GmbH",
-       [3]byte{0, 96, 143}:    "TEKRAM TECHNOLOGY CO., LTD.",
-       [3]byte{0, 96, 144}:    "Artiza Networks Inc",
-       [3]byte{0, 96, 145}:    "FIRST PACIFIC NETWORKS, INC.",
-       [3]byte{0, 96, 146}:    "MICRO/SYS, INC.",
-       [3]byte{0, 96, 147}:    "VARIAN",
-       [3]byte{0, 96, 148}:    "IBM Corp",
-       [3]byte{0, 96, 149}:    "ACCU-TIME SYSTEMS, INC.",
-       [3]byte{0, 96, 150}:    "T.S. MICROTECH INC.",
-       [3]byte{0, 96, 151}:    "3COM CORPORATION",
-       [3]byte{0, 96, 152}:    "HT COMMUNICATIONS",
-       [3]byte{0, 96, 153}:    "SBE, Inc.",
-       [3]byte{0, 96, 154}:    "NJK TECHNO CO.",
-       [3]byte{0, 96, 155}:    "AstroNova, Inc",
-       [3]byte{0, 96, 156}:    "Perkin-Elmer Incorporated",
-       [3]byte{0, 96, 157}:    "PMI FOOD EQUIPMENT GROUP",
-       [3]byte{0, 96, 158}:    "ASC X3 - INFORMATION TECHNOLOGY STANDARDS SECRETARIATS",
-       [3]byte{0, 96, 159}:    "PHAST CORPORATION",
-       [3]byte{0, 96, 160}:    "SWITCHED NETWORK TECHNOLOGIES, INC.",
-       [3]byte{0, 96, 161}:    "VPNet, Inc.",
-       [3]byte{0, 96, 162}:    "NIHON UNISYS LIMITED CO.",
-       [3]byte{0, 96, 163}:    "CONTINUUM TECHNOLOGY CORP.",
-       [3]byte{0, 96, 164}:    "GEW Technologies (PTY)Ltd",
-       [3]byte{0, 96, 165}:    "PERFORMANCE TELECOM CORP.",
-       [3]byte{0, 96, 166}:    "PARTICLE MEASURING SYSTEMS",
-       [3]byte{0, 96, 167}:    "MICROSENS GmbH & CO. KG",
-       [3]byte{0, 96, 168}:    "TIDOMAT AB",
-       [3]byte{0, 96, 169}:    "GESYTEC MBH",
-       [3]byte{0, 96, 170}:    "INTELLIGENT DEVICES INC. (IDI)",
-       [3]byte{0, 96, 171}:    "LARSCOM INCORPORATED",
-       [3]byte{0, 96, 172}:    "RESILIENCE CORPORATION",
-       [3]byte{0, 96, 173}:    "MegaChips Corporation",
-       [3]byte{0, 96, 174}:    "TRIO INFORMATION SYSTEMS AB",
-       [3]byte{0, 96, 175}:    "PACIFIC MICRO DATA, INC.",
-       [3]byte{0, 96, 176}:    "Hewlett Packard",
-       [3]byte{0, 96, 177}:    "Input/Output, Inc.",
-       [3]byte{0, 96, 178}:    "PROCESS CONTROL CORP.",
-       [3]byte{0, 96, 179}:    "Z-COM, INC.",
-       [3]byte{0, 96, 180}:    "GLENAYRE R&D INC.",
-       [3]byte{0, 96, 181}:    "KEBA GmbH",
-       [3]byte{0, 96, 182}:    "LAND COMPUTER CO., LTD.",
-       [3]byte{0, 96, 183}:    "CHANNELMATIC, INC.",
-       [3]byte{0, 96, 184}:    "CORELIS Inc.",
-       [3]byte{0, 96, 185}:    "NEC Platforms, Ltd",
-       [3]byte{0, 96, 186}:    "SAHARA NETWORKS, INC.",
-       [3]byte{0, 96, 187}:    "Cabletron Systems, Inc.",
-       [3]byte{0, 96, 188}:    "KeunYoung Electronics & Communication Co., Ltd.",
-       [3]byte{0, 96, 189}:    "Enginuity Communications",
-       [3]byte{0, 96, 190}:    "WEBTRONICS",
-       [3]byte{0, 96, 191}:    "MACRAIGOR SYSTEMS, INC.",
-       [3]byte{0, 96, 192}:    "Nera Networks AS",
-       [3]byte{0, 96, 193}:    "WaveSpan Corporation",
-       [3]byte{0, 96, 194}:    "MPL AG",
-       [3]byte{0, 96, 195}:    "NETVISION CORPORATION",
-       [3]byte{0, 96, 196}:    "SOLITON SYSTEMS K.K.",
-       [3]byte{0, 96, 197}:    "ANCOT CORP.",
-       [3]byte{0, 96, 198}:    "DCS AG",
-       [3]byte{0, 96, 199}:    "AMATI COMMUNICATIONS CORP.",
-       [3]byte{0, 96, 200}:    "KUKA WELDING SYSTEMS & ROBOTS",
-       [3]byte{0, 96, 201}:    "ControlNet, Inc.",
-       [3]byte{0, 96, 202}:    "HARMONIC SYSTEMS INCORPORATED",
-       [3]byte{0, 96, 203}:    "HITACHI ZOSEN CORPORATION",
-       [3]byte{0, 96, 204}:    "EMTRAK, INCORPORATED",
-       [3]byte{0, 96, 205}:    "VideoServer, Inc.",
-       [3]byte{0, 96, 206}:    "ACCLAIM COMMUNICATIONS",
-       [3]byte{0, 96, 207}:    "ALTEON NETWORKS, INC.",
-       [3]byte{0, 96, 208}:    "SNMP RESEARCH INCORPORATED",
-       [3]byte{0, 96, 209}:    "CASCADE COMMUNICATIONS",
-       [3]byte{0, 96, 210}:    "LUCENT TECHNOLOGIES TAIWAN TELECOMMUNICATIONS CO., LTD.",
-       [3]byte{0, 96, 211}:    "AT&T",
-       [3]byte{0, 96, 212}:    "ELDAT COMMUNICATION LTD.",
-       [3]byte{0, 96, 213}:    "AMADA MIYACHI Co., Ltd",
-       [3]byte{0, 96, 214}:    "NovAtel Inc.",
-       [3]byte{0, 96, 215}:    "ECOLE POLYTECHNIQUE FEDERALE DE LAUSANNE (EPFL)",
-       [3]byte{0, 96, 216}:    "ELMIC SYSTEMS, INC.",
-       [3]byte{0, 96, 217}:    "TRANSYS NETWORKS INC.",
-       [3]byte{0, 96, 218}:    "Red Lion Controls, LP",
-       [3]byte{0, 96, 219}:    "NTP ELEKTRONIK A/S",
-       [3]byte{0, 96, 220}:    "NEC Magnus Communications,Ltd.",
-       [3]byte{0, 96, 221}:    "MYRICOM, INC.",
-       [3]byte{0, 96, 222}:    "Kayser-Threde GmbH",
-       [3]byte{0, 96, 223}:    "Brocade Communications Systems, Inc.",
-       [3]byte{0, 96, 224}:    "AXIOM TECHNOLOGY CO., LTD.",
-       [3]byte{0, 96, 225}:    "ORCKIT COMMUNICATIONS LTD.",
-       [3]byte{0, 96, 226}:    "QUEST ENGINEERING & DEVELOPMENT",
-       [3]byte{0, 96, 227}:    "ARBIN INSTRUMENTS",
-       [3]byte{0, 96, 228}:    "COMPUSERVE, INC.",
-       [3]byte{0, 96, 229}:    "FUJI AUTOMATION CO., LTD.",
-       [3]byte{0, 96, 230}:    "SHOMITI SYSTEMS INCORPORATED",
-       [3]byte{0, 96, 231}:    "RANDATA",
-       [3]byte{0, 96, 232}:    "HITACHI COMPUTER PRODUCTS (AMERICA), INC.",
-       [3]byte{0, 96, 233}:    "ATOP TECHNOLOGIES, INC.",
-       [3]byte{0, 96, 234}:    "StreamLogic",
-       [3]byte{0, 96, 235}:    "FOURTHTRACK SYSTEMS",
-       [3]byte{0, 96, 236}:    "HERMARY OPTO ELECTRONICS INC.",
-       [3]byte{0, 96, 237}:    "RICARDO TEST AUTOMATION LTD.",
-       [3]byte{0, 96, 238}:    "APOLLO",
-       [3]byte{0, 96, 239}:    "FLYTECH TECHNOLOGY CO., LTD.",
-       [3]byte{0, 96, 240}:    "JOHNSON & JOHNSON MEDICAL, INC",
-       [3]byte{0, 96, 241}:    "EXP COMPUTER, INC.",
-       [3]byte{0, 96, 242}:    "LASERGRAPHICS, INC.",
-       [3]byte{0, 96, 243}:    "Performance Analysis Broadband, Spirent plc",
-       [3]byte{0, 96, 244}:    "ADVANCED COMPUTER SOLUTIONS, Inc.",
-       [3]byte{0, 96, 245}:    "ICON WEST, INC.",
-       [3]byte{0, 96, 246}:    "NEXTEST COMMUNICATIONS PRODUCTS, INC.",
-       [3]byte{0, 96, 247}:    "DATAFUSION SYSTEMS",
-       [3]byte{0, 96, 248}:    "Loran International Technologies Inc.",
-       [3]byte{0, 96, 249}:    "DIAMOND LANE COMMUNICATIONS",
-       [3]byte{0, 96, 250}:    "EDUCATIONAL TECHNOLOGY RESOURCES, INC.",
-       [3]byte{0, 96, 251}:    "PACKETEER, INC.",
-       [3]byte{0, 96, 252}:    "CONSERVATION THROUGH INNOVATION LTD.",
-       [3]byte{0, 96, 253}:    "NetICs, Inc.",
-       [3]byte{0, 96, 254}:    "LYNX SYSTEM DEVELOPERS, INC.",
-       [3]byte{0, 96, 255}:    "QuVis, Inc.",
-       [3]byte{0, 97, 113}:    "Apple, Inc.",
-       [3]byte{0, 98, 236}:    "Cisco Systems, Inc",
-       [3]byte{0, 100, 64}:    "Cisco Systems, Inc",
-       [3]byte{0, 100, 166}:   "Maquet CardioVascular",
-       [3]byte{0, 102, 75}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{0, 107, 142}:   "Shanghai Feixun Communication Co.,Ltd.",
-       [3]byte{0, 107, 158}:   "Vizio, Inc",
-       [3]byte{0, 107, 160}:   "SHENZHEN UNIVERSAL INTELLISYS PTE LTD",
-       [3]byte{0, 107, 241}:   "Cisco Systems, Inc",
-       [3]byte{0, 108, 188}:   "Cisco Systems, Inc",
-       [3]byte{0, 108, 253}:   "Sichuan Changhong Electric Ltd.",
-       [3]byte{0, 109, 82}:    "Apple, Inc.",
-       [3]byte{0, 109, 251}:   "Vutrix Technologies Ltd",
-       [3]byte{0, 111, 100}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 112, 176}:   "M/A-COM INC. COMPANIES",
-       [3]byte{0, 112, 179}:   "DATA RECALL LTD.",
-       [3]byte{0, 113, 194}:   "PEGATRON CORPORATION",
-       [3]byte{0, 113, 204}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{0, 114, 99}:    "Netcore Technology Inc.",
-       [3]byte{0, 115, 141}:   "Shenzhen TINNO Mobile Technology Corp.",
-       [3]byte{0, 115, 224}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 116, 156}:   "Ruijie Networks Co.,LTD",
-       [3]byte{0, 117, 50}:    "INID BV",
-       [3]byte{0, 117, 225}:   "Ampt, LLC",
-       [3]byte{0, 118, 134}:   "Cisco Systems, Inc",
-       [3]byte{0, 118, 177}:   "Somfy-Protect By Myfox SAS",
-       [3]byte{0, 120, 136}:   "Cisco Systems, Inc",
-       [3]byte{0, 120, 158}:   "Sagemcom Broadband SAS",
-       [3]byte{0, 120, 205}:   "Ignition Design Labs",
-       [3]byte{0, 123, 24}:    "SENTRY Co., LTD.",
-       [3]byte{0, 125, 250}:   "Volkswagen Group of America",
-       [3]byte{0, 126, 86}:    "China Dragon Technology Limited",
-       [3]byte{0, 127, 40}:    "Actiontec Electronics, Inc",
-       [3]byte{0, 128, 0}:     "MULTITECH SYSTEMS, INC.",
-       [3]byte{0, 128, 1}:     "PERIPHONICS CORPORATION",
-       [3]byte{0, 128, 2}:     "SATELCOM (UK) LTD",
-       [3]byte{0, 128, 3}:     "HYTEC ELECTRONICS LTD.",
-       [3]byte{0, 128, 4}:     "ANTLOW COMMUNICATIONS, LTD.",
-       [3]byte{0, 128, 5}:     "CACTUS COMPUTER INC.",
-       [3]byte{0, 128, 6}:     "COMPUADD CORPORATION",
-       [3]byte{0, 128, 7}:     "DLOG NC-SYSTEME",
-       [3]byte{0, 128, 8}:     "DYNATECH COMPUTER SYSTEMS",
-       [3]byte{0, 128, 9}:     "JUPITER SYSTEMS, INC.",
-       [3]byte{0, 128, 10}:    "JAPAN COMPUTER CORP.",
-       [3]byte{0, 128, 11}:    "CSK CORPORATION",
-       [3]byte{0, 128, 12}:    "VIDECOM LIMITED",
-       [3]byte{0, 128, 13}:    "VOSSWINKEL F.U.",
-       [3]byte{0, 128, 14}:    "ATLANTIX CORPORATION",
-       [3]byte{0, 128, 15}:    "STANDARD MICROSYSTEMS",
-       [3]byte{0, 128, 16}:    "COMMODORE INTERNATIONAL",
-       [3]byte{0, 128, 17}:    "DIGITAL SYSTEMS INT'L. INC.",
-       [3]byte{0, 128, 18}:    "INTEGRATED MEASUREMENT SYSTEMS",
-       [3]byte{0, 128, 19}:    "THOMAS-CONRAD CORPORATION",
-       [3]byte{0, 128, 20}:    "ESPRIT SYSTEMS",
-       [3]byte{0, 128, 21}:    "SEIKO SYSTEMS, INC.",
-       [3]byte{0, 128, 22}:    "WANDEL AND GOLTERMANN",
-       [3]byte{0, 128, 23}:    "PFU LIMITED",
-       [3]byte{0, 128, 24}:    "KOBE STEEL, LTD.",
-       [3]byte{0, 128, 25}:    "DAYNA COMMUNICATIONS, INC.",
-       [3]byte{0, 128, 26}:    "BELL ATLANTIC",
-       [3]byte{0, 128, 27}:    "KODIAK TECHNOLOGY",
-       [3]byte{0, 128, 28}:    "NEWPORT SYSTEMS SOLUTIONS",
-       [3]byte{0, 128, 29}:    "INTEGRATED INFERENCE MACHINES",
-       [3]byte{0, 128, 30}:    "XINETRON, INC.",
-       [3]byte{0, 128, 31}:    "KRUPP ATLAS ELECTRONIK GMBH",
-       [3]byte{0, 128, 32}:    "NETWORK PRODUCTS",
-       [3]byte{0, 128, 33}:    "Alcatel Canada Inc.",
-       [3]byte{0, 128, 34}:    "SCAN-OPTICS",
-       [3]byte{0, 128, 35}:    "INTEGRATED BUSINESS NETWORKS",
-       [3]byte{0, 128, 36}:    "KALPANA, INC.",
-       [3]byte{0, 128, 37}:    "Telit Wireless Solutions GmbH",
-       [3]byte{0, 128, 38}:    "NETWORK PRODUCTS CORPORATION",
-       [3]byte{0, 128, 39}:    "ADAPTIVE SYSTEMS, INC.",
-       [3]byte{0, 128, 40}:    "TRADPOST (HK) LTD",
-       [3]byte{0, 128, 41}:    "EAGLE TECHNOLOGY, INC.",
-       [3]byte{0, 128, 42}:    "TEST SYSTEMS & SIMULATIONS INC",
-       [3]byte{0, 128, 43}:    "INTEGRATED MARKETING CO",
-       [3]byte{0, 128, 44}:    "THE SAGE GROUP PLC",
-       [3]byte{0, 128, 45}:    "XYLOGICS INC",
-       [3]byte{0, 128, 46}:    "CASTLE ROCK COMPUTING",
-       [3]byte{0, 128, 47}:    "NATIONAL INSTRUMENTS CORP.",
-       [3]byte{0, 128, 48}:    "NEXUS ELECTRONICS",
-       [3]byte{0, 128, 49}:    "BASYS, CORP.",
-       [3]byte{0, 128, 50}:    "ACCESS CO., LTD.",
-       [3]byte{0, 128, 51}:    "EMS Aviation, Inc.",
-       [3]byte{0, 128, 52}:    "SMT GOUPIL",
-       [3]byte{0, 128, 53}:    "TECHNOLOGY WORKS, INC.",
-       [3]byte{0, 128, 54}:    "REFLEX MANUFACTURING SYSTEMS",
-       [3]byte{0, 128, 55}:    "Ericsson Group",
-       [3]byte{0, 128, 56}:    "DATA RESEARCH & APPLICATIONS",
-       [3]byte{0, 128, 57}:    "ALCATEL STC AUSTRALIA",
-       [3]byte{0, 128, 58}:    "VARITYPER, INC.",
-       [3]byte{0, 128, 59}:    "APT COMMUNICATIONS, INC.",
-       [3]byte{0, 128, 60}:    "TVS ELECTRONICS LTD",
-       [3]byte{0, 128, 61}:    "SURIGIKEN CO.,  LTD.",
-       [3]byte{0, 128, 62}:    "SYNERNETICS",
-       [3]byte{0, 128, 63}:    "TATUNG COMPANY",
-       [3]byte{0, 128, 64}:    "JOHN FLUKE MANUFACTURING CO.",
-       [3]byte{0, 128, 65}:    "VEB KOMBINAT ROBOTRON",
-       [3]byte{0, 128, 66}:    "Artesyn Embedded Technologies",
-       [3]byte{0, 128, 67}:    "NETWORLD, INC.",
-       [3]byte{0, 128, 68}:    "SYSTECH COMPUTER CORP.",
-       [3]byte{0, 128, 69}:    "MATSUSHITA ELECTRIC IND. CO",
-       [3]byte{0, 128, 70}:    "Tattile SRL",
-       [3]byte{0, 128, 71}:    "IN-NET CORP.",
-       [3]byte{0, 128, 72}:    "COMPEX INCORPORATED",
-       [3]byte{0, 128, 73}:    "NISSIN ELECTRIC CO., LTD.",
-       [3]byte{0, 128, 74}:    "PRO-LOG",
-       [3]byte{0, 128, 75}:    "EAGLE TECHNOLOGIES PTY.LTD.",
-       [3]byte{0, 128, 76}:    "CONTEC CO., LTD.",
-       [3]byte{0, 128, 77}:    "CYCLONE MICROSYSTEMS, INC.",
-       [3]byte{0, 128, 78}:    "APEX COMPUTER COMPANY",
-       [3]byte{0, 128, 79}:    "DAIKIN INDUSTRIES, LTD.",
-       [3]byte{0, 128, 80}:    "ZIATECH CORPORATION",
-       [3]byte{0, 128, 81}:    "FIBERMUX",
-       [3]byte{0, 128, 82}:    "TECHNICALLY ELITE CONCEPTS",
-       [3]byte{0, 128, 83}:    "INTELLICOM, INC.",
-       [3]byte{0, 128, 84}:    "FRONTIER TECHNOLOGIES CORP.",
-       [3]byte{0, 128, 85}:    "FERMILAB",
-       [3]byte{0, 128, 86}:    "SPHINX Electronics GmbH & Co KG",
-       [3]byte{0, 128, 87}:    "ADSOFT, LTD.",
-       [3]byte{0, 128, 88}:    "PRINTER SYSTEMS CORP.",
-       [3]byte{0, 128, 89}:    "STANLEY ELECTRIC CO., LTD",
-       [3]byte{0, 128, 90}:    "TULIP COMPUTERS INTERNAT'L B.V",
-       [3]byte{0, 128, 91}:    "CONDOR SYSTEMS, INC.",
-       [3]byte{0, 128, 92}:    "AGILIS CORPORATION",
-       [3]byte{0, 128, 93}:    "CANSTAR",
-       [3]byte{0, 128, 94}:    "LSI LOGIC CORPORATION",
-       [3]byte{0, 128, 95}:    "Hewlett Packard",
-       [3]byte{0, 128, 96}:    "NETWORK INTERFACE CORPORATION",
-       [3]byte{0, 128, 97}:    "LITTON SYSTEMS, INC.",
-       [3]byte{0, 128, 98}:    "INTERFACE  CO.",
-       [3]byte{0, 128, 99}:    "Hirschmann Automation and Control GmbH",
-       [3]byte{0, 128, 100}:   "WYSE TECHNOLOGY LLC",
-       [3]byte{0, 128, 101}:   "CYBERGRAPHIC SYSTEMS PTY LTD.",
-       [3]byte{0, 128, 102}:   "ARCOM CONTROL SYSTEMS, LTD.",
-       [3]byte{0, 128, 103}:   "SQUARE D COMPANY",
-       [3]byte{0, 128, 104}:   "YAMATECH SCIENTIFIC LTD.",
-       [3]byte{0, 128, 105}:   "COMPUTONE SYSTEMS",
-       [3]byte{0, 128, 106}:   "ERI (EMPAC RESEARCH INC.)",
-       [3]byte{0, 128, 107}:   "SCHMID TELECOMMUNICATION",
-       [3]byte{0, 128, 108}:   "Secure Systems & Services",
-       [3]byte{0, 128, 109}:   "CENTURY SYSTEMS CORP.",
-       [3]byte{0, 128, 110}:   "NIPPON STEEL CORPORATION",
-       [3]byte{0, 128, 111}:   "ONELAN LTD.",
-       [3]byte{0, 128, 112}:   "COMPUTADORAS MICRON",
-       [3]byte{0, 128, 113}:   "SAI TECHNOLOGY",
-       [3]byte{0, 128, 114}:   "MICROPLEX SYSTEMS LTD.",
-       [3]byte{0, 128, 115}:   "DWB ASSOCIATES",
-       [3]byte{0, 128, 116}:   "FISHER CONTROLS",
-       [3]byte{0, 128, 117}:   "PARSYTEC GMBH",
-       [3]byte{0, 128, 118}:   "MCNC",
-       [3]byte{0, 128, 119}:   "Brother industries, LTD.",
-       [3]byte{0, 128, 120}:   "PRACTICAL PERIPHERALS, INC.",
-       [3]byte{0, 128, 121}:   "MICROBUS DESIGNS LTD.",
-       [3]byte{0, 128, 122}:   "AITECH SYSTEMS LTD.",
-       [3]byte{0, 128, 123}:   "ARTEL COMMUNICATIONS CORP.",
-       [3]byte{0, 128, 124}:   "FIBERCOM, INC.",
-       [3]byte{0, 128, 125}:   "EQUINOX SYSTEMS INC.",
-       [3]byte{0, 128, 126}:   "SOUTHERN PACIFIC LTD.",
-       [3]byte{0, 128, 127}:   "DY-4 INCORPORATED",
-       [3]byte{0, 128, 128}:   "DATAMEDIA CORPORATION",
-       [3]byte{0, 128, 129}:   "KENDALL SQUARE RESEARCH CORP.",
-       [3]byte{0, 128, 130}:   "PEP MODULAR COMPUTERS GMBH",
-       [3]byte{0, 128, 131}:   "AMDAHL",
-       [3]byte{0, 128, 132}:   "THE CLOUD INC.",
-       [3]byte{0, 128, 133}:   "H-THREE SYSTEMS CORPORATION",
-       [3]byte{0, 128, 134}:   "COMPUTER GENERATION INC.",
-       [3]byte{0, 128, 135}:   "OKI ELECTRIC INDUSTRY CO., LTD",
-       [3]byte{0, 128, 136}:   "VICTOR COMPANY OF JAPAN, LTD.",
-       [3]byte{0, 128, 137}:   "TECNETICS (PTY) LTD.",
-       [3]byte{0, 128, 138}:   "SUMMIT MICROSYSTEMS CORP.",
-       [3]byte{0, 128, 139}:   "DACOLL LIMITED",
-       [3]byte{0, 128, 140}:   "NetScout Systems, Inc.",
-       [3]byte{0, 128, 141}:   "WESTCOAST TECHNOLOGY B.V.",
-       [3]byte{0, 128, 142}:   "RADSTONE TECHNOLOGY",
-       [3]byte{0, 128, 143}:   "C. ITOH ELECTRONICS, INC.",
-       [3]byte{0, 128, 144}:   "MICROTEK INTERNATIONAL, INC.",
-       [3]byte{0, 128, 145}:   "TOKYO ELECTRIC CO.,LTD",
-       [3]byte{0, 128, 146}:   "Silex Technology, Inc.",
-       [3]byte{0, 128, 147}:   "XYRON CORPORATION",
-       [3]byte{0, 128, 148}:   "ALFA LAVAL AUTOMATION AB",
-       [3]byte{0, 128, 149}:   "BASIC MERTON HANDELSGES.M.B.H.",
-       [3]byte{0, 128, 150}:   "HUMAN DESIGNED SYSTEMS, INC.",
-       [3]byte{0, 128, 151}:   "CENTRALP AUTOMATISMES",
-       [3]byte{0, 128, 152}:   "TDK CORPORATION",
-       [3]byte{0, 128, 153}:   "Eaton Industries GmbH",
-       [3]byte{0, 128, 154}:   "NOVUS NETWORKS LTD",
-       [3]byte{0, 128, 155}:   "JUSTSYSTEM CORPORATION",
-       [3]byte{0, 128, 156}:   "LUXCOM, INC.",
-       [3]byte{0, 128, 157}:   "Commscraft Ltd.",
-       [3]byte{0, 128, 158}:   "DATUS GMBH",
-       [3]byte{0, 128, 159}:   "ALE International",
-       [3]byte{0, 128, 160}:   "Hewlett Packard",
-       [3]byte{0, 128, 161}:   "MICROTEST, INC.",
-       [3]byte{0, 128, 162}:   "CREATIVE ELECTRONIC SYSTEMS",
-       [3]byte{0, 128, 163}:   "Lantronix",
-       [3]byte{0, 128, 164}:   "LIBERTY ELECTRONICS",
-       [3]byte{0, 128, 165}:   "SPEED INTERNATIONAL",
-       [3]byte{0, 128, 166}:   "REPUBLIC TECHNOLOGY, INC.",
-       [3]byte{0, 128, 167}:   "Honeywell International Inc",
-       [3]byte{0, 128, 168}:   "VITACOM CORPORATION",
-       [3]byte{0, 128, 169}:   "CLEARPOINT RESEARCH",
-       [3]byte{0, 128, 170}:   "MAXPEED",
-       [3]byte{0, 128, 171}:   "DUKANE NETWORK INTEGRATION",
-       [3]byte{0, 128, 172}:   "IMLOGIX, DIVISION OF GENESYS",
-       [3]byte{0, 128, 173}:   "CNET TECHNOLOGY, INC.",
-       [3]byte{0, 128, 174}:   "HUGHES NETWORK SYSTEMS",
-       [3]byte{0, 128, 175}:   "ALLUMER CO., LTD.",
-       [3]byte{0, 128, 176}:   "ADVANCED INFORMATION",
-       [3]byte{0, 128, 177}:   "SOFTCOM A/S",
-       [3]byte{0, 128, 178}:   "NETWORK EQUIPMENT TECHNOLOGIES",
-       [3]byte{0, 128, 179}:   "AVAL DATA CORPORATION",
-       [3]byte{0, 128, 180}:   "SOPHIA SYSTEMS",
-       [3]byte{0, 128, 181}:   "UNITED NETWORKS INC.",
-       [3]byte{0, 128, 182}:   "THEMIS COMPUTER",
-       [3]byte{0, 128, 183}:   "STELLAR COMPUTER",
-       [3]byte{0, 128, 184}:   "DMG MORI B.U.G. CO., LTD.",
-       [3]byte{0, 128, 185}:   "ARCHE TECHNOLIGIES INC.",
-       [3]byte{0, 128, 186}:   "SPECIALIX (ASIA) PTE, LTD",
-       [3]byte{0, 128, 187}:   "HUGHES LAN SYSTEMS",
-       [3]byte{0, 128, 188}:   "HITACHI ENGINEERING CO., LTD",
-       [3]byte{0, 128, 189}:   "THE FURUKAWA ELECTRIC CO., LTD",
-       [3]byte{0, 128, 190}:   "ARIES RESEARCH",
-       [3]byte{0, 128, 191}:   "TAKAOKA ELECTRIC MFG. CO. LTD.",
-       [3]byte{0, 128, 192}:   "PENRIL DATACOMM",
-       [3]byte{0, 128, 193}:   "LANEX CORPORATION",
-       [3]byte{0, 128, 194}:   "IEEE 802.1 Working Group",
-       [3]byte{0, 128, 195}:   "BICC INFORMATION SYSTEMS & SVC",
-       [3]byte{0, 128, 196}:   "DOCUMENT TECHNOLOGIES, INC.",
-       [3]byte{0, 128, 197}:   "NOVELLCO DE MEXICO",
-       [3]byte{0, 128, 198}:   "NATIONAL DATACOMM CORPORATION",
-       [3]byte{0, 128, 199}:   "XIRCOM",
-       [3]byte{0, 128, 200}:   "D-LINK SYSTEMS, INC.",
-       [3]byte{0, 128, 201}:   "ALBERTA MICROELECTRONIC CENTRE",
-       [3]byte{0, 128, 202}:   "NETCOM RESEARCH INCORPORATED",
-       [3]byte{0, 128, 203}:   "FALCO DATA PRODUCTS",
-       [3]byte{0, 128, 204}:   "MICROWAVE BYPASS SYSTEMS",
-       [3]byte{0, 128, 205}:   "MICRONICS COMPUTER, INC.",
-       [3]byte{0, 128, 206}:   "BROADCAST TELEVISION SYSTEMS",
-       [3]byte{0, 128, 207}:   "EMBEDDED PERFORMANCE INC.",
-       [3]byte{0, 128, 208}:   "COMPUTER PERIPHERALS, INC.",
-       [3]byte{0, 128, 209}:   "KIMTRON CORPORATION",
-       [3]byte{0, 128, 210}:   "SHINNIHONDENKO CO., LTD.",
-       [3]byte{0, 128, 211}:   "SHIVA CORP.",
-       [3]byte{0, 128, 212}:   "CHASE RESEARCH LTD.",
-       [3]byte{0, 128, 213}:   "CADRE TECHNOLOGIES",
-       [3]byte{0, 128, 214}:   "NUVOTECH, INC.",
-       [3]byte{0, 128, 215}:   "Fantum Engineering",
-       [3]byte{0, 128, 216}:   "NETWORK PERIPHERALS INC.",
-       [3]byte{0, 128, 217}:   "EMK Elektronik GmbH & Co. KG",
-       [3]byte{0, 128, 218}:   "Bruel & Kjaer Sound & Vibration Measurement A/S",
-       [3]byte{0, 128, 219}:   "GRAPHON CORPORATION",
-       [3]byte{0, 128, 220}:   "PICKER INTERNATIONAL",
-       [3]byte{0, 128, 221}:   "GMX INC/GIMIX",
-       [3]byte{0, 128, 222}:   "GIPSI S.A.",
-       [3]byte{0, 128, 223}:   "ADC CODENOLL TECHNOLOGY CORP.",
-       [3]byte{0, 128, 224}:   "XTP SYSTEMS, INC.",
-       [3]byte{0, 128, 225}:   "STMicroelectronics SRL",
-       [3]byte{0, 128, 226}:   "T.D.I. CO., LTD.",
-       [3]byte{0, 128, 227}:   "CORAL NETWORK CORPORATION",
-       [3]byte{0, 128, 228}:   "NORTHWEST DIGITAL SYSTEMS, INC",
-       [3]byte{0, 128, 229}:   "NetApp",
-       [3]byte{0, 128, 230}:   "PEER NETWORKS, INC.",
-       [3]byte{0, 128, 231}:   "Leonardo Tactical Systems.",
-       [3]byte{0, 128, 232}:   "CUMULUS CORPORATIION",
-       [3]byte{0, 128, 233}:   "Madge Ltd.",
-       [3]byte{0, 128, 234}:   "ADVA Optical Networking Ltd.",
-       [3]byte{0, 128, 235}:   "COMPCONTROL B.V.",
-       [3]byte{0, 128, 236}:   "SUPERCOMPUTING SOLUTIONS, INC.",
-       [3]byte{0, 128, 237}:   "IQ TECHNOLOGIES, INC.",
-       [3]byte{0, 128, 238}:   "THOMSON CSF",
-       [3]byte{0, 128, 239}:   "RATIONAL",
-       [3]byte{0, 128, 240}:   "Panasonic Communications Co., Ltd.",
-       [3]byte{0, 128, 241}:   "OPUS SYSTEMS",
-       [3]byte{0, 128, 242}:   "RAYCOM SYSTEMS INC",
-       [3]byte{0, 128, 243}:   "SUN ELECTRONICS CORP.",
-       [3]byte{0, 128, 244}:   "TELEMECANIQUE ELECTRIQUE",
-       [3]byte{0, 128, 245}:   "Quantel Ltd",
-       [3]byte{0, 128, 246}:   "SYNERGY MICROSYSTEMS",
-       [3]byte{0, 128, 247}:   "Zenith Electronics Corporation",
-       [3]byte{0, 128, 248}:   "MIZAR, INC.",
-       [3]byte{0, 128, 249}:   "HEURIKON CORPORATION",
-       [3]byte{0, 128, 250}:   "RWT GMBH",
-       [3]byte{0, 128, 251}:   "BVM LIMITED",
-       [3]byte{0, 128, 252}:   "AVATAR CORPORATION",
-       [3]byte{0, 128, 253}:   "EXSCEED CORPRATION",
-       [3]byte{0, 128, 254}:   "AZURE TECHNOLOGIES, INC.",
-       [3]byte{0, 128, 255}:   "SOC. DE TELEINFORMATIQUE RTC",
-       [3]byte{0, 129, 196}:   "Cisco Systems, Inc",
-       [3]byte{0, 129, 249}:   "Texas Instruments",
-       [3]byte{0, 132, 237}:   "Private",
-       [3]byte{0, 134, 156}:   "Palo Alto Networks",
-       [3]byte{0, 134, 160}:   "Private",
-       [3]byte{0, 135, 1}:     "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 135, 49}:    "Cisco Systems, Inc",
-       [3]byte{0, 136, 101}:   "Apple, Inc.",
-       [3]byte{0, 138, 150}:   "Cisco Systems, Inc",
-       [3]byte{0, 139, 67}:    "RFTECH",
-       [3]byte{0, 139, 252}:   "mixi,Inc.",
-       [3]byte{0, 140, 16}:    "Black Box Corp.",
-       [3]byte{0, 140, 84}:    "ADB Broadband Italia",
-       [3]byte{0, 140, 250}:   "INVENTEC Corporation",
-       [3]byte{0, 141, 78}:    "CJSC NII STT",
-       [3]byte{0, 141, 218}:   "Link One Co., Ltd.",
-       [3]byte{0, 142, 115}:   "Cisco Systems, Inc",
-       [3]byte{0, 142, 242}:   "NETGEAR",
-       [3]byte{0, 144, 0}:     "DIAMOND MULTIMEDIA",
-       [3]byte{0, 144, 1}:     "NISHIMU ELECTRONICS INDUSTRIES CO., LTD.",
-       [3]byte{0, 144, 2}:     "ALLGON AB",
-       [3]byte{0, 144, 3}:     "APLIO",
-       [3]byte{0, 144, 4}:     "3COM EUROPE LTD.",
-       [3]byte{0, 144, 5}:     "PROTECH SYSTEMS CO., LTD.",
-       [3]byte{0, 144, 6}:     "Hamamatsu Photonics K.K.",
-       [3]byte{0, 144, 7}:     "DOMEX TECHNOLOGY CORP.",
-       [3]byte{0, 144, 8}:     "HanA Systems Inc.",
-       [3]byte{0, 144, 9}:     "I Controls, Inc.",
-       [3]byte{0, 144, 10}:    "PROTON ELECTRONIC INDUSTRIAL CO., LTD.",
-       [3]byte{0, 144, 11}:    "LANNER ELECTRONICS, INC.",
-       [3]byte{0, 144, 12}:    "Cisco Systems, Inc",
-       [3]byte{0, 144, 13}:    "Overland Storage Inc.",
-       [3]byte{0, 144, 14}:    "HANDLINK TECHNOLOGIES, INC.",
-       [3]byte{0, 144, 15}:    "KAWASAKI HEAVY INDUSTRIES, LTD",
-       [3]byte{0, 144, 16}:    "SIMULATION LABORATORIES, INC.",
-       [3]byte{0, 144, 17}:    "WAVTrace, Inc.",
-       [3]byte{0, 144, 18}:    "GLOBESPAN SEMICONDUCTOR, INC.",
-       [3]byte{0, 144, 19}:    "SAMSAN CORP.",
-       [3]byte{0, 144, 20}:    "ROTORK INSTRUMENTS, LTD.",
-       [3]byte{0, 144, 21}:    "CENTIGRAM COMMUNICATIONS CORP.",
-       [3]byte{0, 144, 22}:    "ZAC",
-       [3]byte{0, 144, 23}:    "Zypcom, Inc",
-       [3]byte{0, 144, 24}:    "ITO ELECTRIC INDUSTRY CO, LTD.",
-       [3]byte{0, 144, 25}:    "HERMES ELECTRONICS CO., LTD.",
-       [3]byte{0, 144, 26}:    "UNISPHERE SOLUTIONS",
-       [3]byte{0, 144, 27}:    "DIGITAL CONTROLS",
-       [3]byte{0, 144, 28}:    "mps Software Gmbh",
-       [3]byte{0, 144, 29}:    "PEC (NZ) LTD.",
-       [3]byte{0, 144, 30}:    "Selesta Ingegneria S.p.A.",
-       [3]byte{0, 144, 31}:    "ADTEC PRODUCTIONS, INC.",
-       [3]byte{0, 144, 32}:    "PHILIPS ANALYTICAL X-RAY B.V.",
-       [3]byte{0, 144, 33}:    "Cisco Systems, Inc",
-       [3]byte{0, 144, 34}:    "IVEX",
-       [3]byte{0, 144, 35}:    "ZILOG INC.",
-       [3]byte{0, 144, 36}:    "PIPELINKS, INC.",
-       [3]byte{0, 144, 37}:    "BAE Systems Australia (Electronic Systems) Pty Ltd",
-       [3]byte{0, 144, 38}:    "ADVANCED SWITCHING COMMUNICATIONS, INC.",
-       [3]byte{0, 144, 39}:    "Intel Corporation",
-       [3]byte{0, 144, 40}:    "NIPPON SIGNAL CO., LTD.",
-       [3]byte{0, 144, 41}:    "CRYPTO AG",
-       [3]byte{0, 144, 42}:    "COMMUNICATION DEVICES, INC.",
-       [3]byte{0, 144, 43}:    "Cisco Systems, Inc",
-       [3]byte{0, 144, 44}:    "DATA & CONTROL EQUIPMENT LTD.",
-       [3]byte{0, 144, 45}:    "DATA ELECTRONICS (AUST.) PTY, LTD.",
-       [3]byte{0, 144, 46}:    "NAMCO LIMITED",
-       [3]byte{0, 144, 47}:    "NETCORE SYSTEMS, INC.",
-       [3]byte{0, 144, 48}:    "HONEYWELL-DATING",
-       [3]byte{0, 144, 49}:    "MYSTICOM, LTD.",
-       [3]byte{0, 144, 50}:    "PELCOMBE GROUP LTD.",
-       [3]byte{0, 144, 51}:    "INNOVAPHONE AG",
-       [3]byte{0, 144, 52}:    "IMAGIC, INC.",
-       [3]byte{0, 144, 53}:    "ALPHA TELECOM, INC.",
-       [3]byte{0, 144, 54}:    "ens, inc.",
-       [3]byte{0, 144, 55}:    "ACUCOMM, INC.",
-       [3]byte{0, 144, 56}:    "FOUNTAIN TECHNOLOGIES, INC.",
-       [3]byte{0, 144, 57}:    "SHASTA NETWORKS",
-       [3]byte{0, 144, 58}:    "NIHON MEDIA TOOL INC.",
-       [3]byte{0, 144, 59}:    "TriEMS Research Lab, Inc.",
-       [3]byte{0, 144, 60}:    "ATLANTIC NETWORK SYSTEMS",
-       [3]byte{0, 144, 61}:    "BIOPAC SYSTEMS, INC.",
-       [3]byte{0, 144, 62}:    "N.V. PHILIPS INDUSTRIAL ACTIVITIES",
-       [3]byte{0, 144, 63}:    "AZTEC RADIOMEDIA",
-       [3]byte{0, 144, 64}:    "Siemens Network Convergence LLC",
-       [3]byte{0, 144, 65}:    "APPLIED DIGITAL ACCESS",
-       [3]byte{0, 144, 66}:    "ECCS, Inc.",
-       [3]byte{0, 144, 67}:    "Tattile SRL",
-       [3]byte{0, 144, 68}:    "ASSURED DIGITAL, INC.",
-       [3]byte{0, 144, 69}:    "Marconi Communications",
-       [3]byte{0, 144, 70}:    "DEXDYNE, LTD.",
-       [3]byte{0, 144, 71}:    "GIGA FAST E. LTD.",
-       [3]byte{0, 144, 72}:    "ZEAL CORPORATION",
-       [3]byte{0, 144, 73}:    "ENTRIDIA CORPORATION",
-       [3]byte{0, 144, 74}:    "CONCUR SYSTEM TECHNOLOGIES",
-       [3]byte{0, 144, 75}:    "Gemtek Technology Co., Ltd.",
-       [3]byte{0, 144, 76}:    "Epigram, Inc.",
-       [3]byte{0, 144, 77}:    "SPEC S.A.",
-       [3]byte{0, 144, 78}:    "DELEM BV",
-       [3]byte{0, 144, 79}:    "ABB POWER T&D COMPANY, INC.",
-       [3]byte{0, 144, 80}:    "Teleste Corporation",
-       [3]byte{0, 144, 81}:    "ULTIMATE TECHNOLOGY CORP.",
-       [3]byte{0, 144, 82}:    "SELCOM ELETTRONICA S.R.L.",
-       [3]byte{0, 144, 83}:    "DAEWOO ELECTRONICS CO., LTD.",
-       [3]byte{0, 144, 84}:    "INNOVATIVE SEMICONDUCTORS, INC",
-       [3]byte{0, 144, 85}:    "PARKER HANNIFIN CORPORATION COMPUMOTOR DIVISION",
-       [3]byte{0, 144, 86}:    "TELESTREAM, INC.",
-       [3]byte{0, 144, 87}:    "AANetcom, Inc.",
-       [3]byte{0, 144, 88}:    "Ultra Electronics Command & Control Systems",
-       [3]byte{0, 144, 89}:    "TELECOM DEVICE K.K.",
-       [3]byte{0, 144, 90}:    "DEARBORN GROUP, INC.",
-       [3]byte{0, 144, 91}:    "RAYMOND AND LAE ENGINEERING",
-       [3]byte{0, 144, 92}:    "EDMI",
-       [3]byte{0, 144, 93}:    "NETCOM SICHERHEITSTECHNIK GMBH",
-       [3]byte{0, 144, 94}:    "RAULAND-BORG CORPORATION",
-       [3]byte{0, 144, 95}:    "Cisco Systems, Inc",
-       [3]byte{0, 144, 96}:    "SYSTEM CREATE CORP.",
-       [3]byte{0, 144, 97}:    "PACIFIC RESEARCH & ENGINEERING CORPORATION",
-       [3]byte{0, 144, 98}:    "ICP VORTEX COMPUTERSYSTEME GmbH",
-       [3]byte{0, 144, 99}:    "COHERENT COMMUNICATIONS SYSTEMS CORPORATION",
-       [3]byte{0, 144, 100}:   "Thomson Inc.",
-       [3]byte{0, 144, 101}:   "FINISAR CORPORATION",
-       [3]byte{0, 144, 102}:   "Troika Networks, Inc.",
-       [3]byte{0, 144, 103}:   "WalkAbout Computers, Inc.",
-       [3]byte{0, 144, 104}:   "DVT CORP.",
-       [3]byte{0, 144, 105}:   "Juniper Networks",
-       [3]byte{0, 144, 106}:   "TURNSTONE SYSTEMS, INC.",
-       [3]byte{0, 144, 107}:   "APPLIED RESOURCES, INC.",
-       [3]byte{0, 144, 108}:   "Sartorius Hamburg GmbH",
-       [3]byte{0, 144, 109}:   "Cisco Systems, Inc",
-       [3]byte{0, 144, 110}:   "PRAXON, INC.",
-       [3]byte{0, 144, 111}:   "Cisco Systems, Inc",
-       [3]byte{0, 144, 112}:   "NEO NETWORKS, INC.",
-       [3]byte{0, 144, 113}:   "Applied Innovation Inc.",
-       [3]byte{0, 144, 114}:   "SIMRAD AS",
-       [3]byte{0, 144, 115}:   "GAIO TECHNOLOGY",
-       [3]byte{0, 144, 116}:   "ARGON NETWORKS, INC.",
-       [3]byte{0, 144, 117}:   "NEC DO BRASIL S.A.",
-       [3]byte{0, 144, 118}:   "FMT AIRCRAFT GATE SUPPORT SYSTEMS AB",
-       [3]byte{0, 144, 119}:   "ADVANCED FIBRE COMMUNICATIONS",
-       [3]byte{0, 144, 120}:   "MER TELEMANAGEMENT SOLUTIONS, LTD.",
-       [3]byte{0, 144, 121}:   "ClearOne, Inc.",
-       [3]byte{0, 144, 122}:   "Spectralink, Inc",
-       [3]byte{0, 144, 123}:   "E-TECH, INC.",
-       [3]byte{0, 144, 124}:   "DIGITALCAST, INC.",
-       [3]byte{0, 144, 125}:   "Lake Communications",
-       [3]byte{0, 144, 126}:   "VETRONIX CORP.",
-       [3]byte{0, 144, 127}:   "WatchGuard Technologies, Inc.",
-       [3]byte{0, 144, 128}:   "NOT LIMITED, INC.",
-       [3]byte{0, 144, 129}:   "ALOHA NETWORKS, INC.",
-       [3]byte{0, 144, 130}:   "FORCE INSTITUTE",
-       [3]byte{0, 144, 131}:   "TURBO COMMUNICATION, INC.",
-       [3]byte{0, 144, 132}:   "ATECH SYSTEM",
-       [3]byte{0, 144, 133}:   "GOLDEN ENTERPRISES, INC.",
-       [3]byte{0, 144, 134}:   "Cisco Systems, Inc",
-       [3]byte{0, 144, 135}:   "ITIS",
-       [3]byte{0, 144, 136}:   "BAXALL SECURITY LTD.",
-       [3]byte{0, 144, 137}:   "SOFTCOM MICROSYSTEMS, INC.",
-       [3]byte{0, 144, 138}:   "BAYLY COMMUNICATIONS, INC.",
-       [3]byte{0, 144, 139}:   "Tattile SRL",
-       [3]byte{0, 144, 140}:   "ETREND ELECTRONICS, INC.",
-       [3]byte{0, 144, 141}:   "VICKERS ELECTRONICS SYSTEMS",
-       [3]byte{0, 144, 142}:   "Nortel Networks Broadband Access",
-       [3]byte{0, 144, 143}:   "AUDIO CODES LTD.",
-       [3]byte{0, 144, 144}:   "I-BUS",
-       [3]byte{0, 144, 145}:   "DigitalScape, Inc.",
-       [3]byte{0, 144, 146}:   "Cisco Systems, Inc",
-       [3]byte{0, 144, 147}:   "NANAO CORPORATION",
-       [3]byte{0, 144, 148}:   "OSPREY TECHNOLOGIES, INC.",
-       [3]byte{0, 144, 149}:   "UNIVERSAL AVIONICS",
-       [3]byte{0, 144, 150}:   "ASKEY COMPUTER CORP",
-       [3]byte{0, 144, 151}:   "Sycamore Networks",
-       [3]byte{0, 144, 152}:   "SBC DESIGNS, INC.",
-       [3]byte{0, 144, 153}:   "ALLIED TELESIS, K.K.",
-       [3]byte{0, 144, 154}:   "ONE WORLD SYSTEMS, INC.",
-       [3]byte{0, 144, 155}:   "MARKEM-IMAJE",
-       [3]byte{0, 144, 156}:   "ARRIS Group, Inc.",
-       [3]byte{0, 144, 157}:   "NovaTech Process Solutions, LLC",
-       [3]byte{0, 144, 158}:   "Critical IO, LLC",
-       [3]byte{0, 144, 159}:   "DIGI-DATA CORPORATION",
-       [3]byte{0, 144, 160}:   "8X8 INC.",
-       [3]byte{0, 144, 161}:   "Flying Pig Systems/High End Systems Inc.",
-       [3]byte{0, 144, 162}:   "CyberTAN Technology Inc.",
-       [3]byte{0, 144, 163}:   "Corecess Inc.",
-       [3]byte{0, 144, 164}:   "ALTIGA NETWORKS",
-       [3]byte{0, 144, 165}:   "SPECTRA LOGIC",
-       [3]byte{0, 144, 166}:   "Cisco Systems, Inc",
-       [3]byte{0, 144, 167}:   "CLIENTEC CORPORATION",
-       [3]byte{0, 144, 168}:   "NineTiles Networks, Ltd.",
-       [3]byte{0, 144, 169}:   "WESTERN DIGITAL",
-       [3]byte{0, 144, 170}:   "INDIGO ACTIVE VISION SYSTEMS LIMITED",
-       [3]byte{0, 144, 171}:   "Cisco Systems, Inc",
-       [3]byte{0, 144, 172}:   "OPTIVISION, INC.",
-       [3]byte{0, 144, 173}:   "ASPECT ELECTRONICS, INC.",
-       [3]byte{0, 144, 174}:   "ITALTEL S.p.A/RF-UP-I",
-       [3]byte{0, 144, 175}:   "J. MORITA MFG. CORP.",
-       [3]byte{0, 144, 176}:   "VADEM",
-       [3]byte{0, 144, 177}:   "Cisco Systems, Inc",
-       [3]byte{0, 144, 178}:   "AVICI SYSTEMS INC.",
-       [3]byte{0, 144, 179}:   "AGRANAT SYSTEMS",
-       [3]byte{0, 144, 180}:   "WILLOWBROOK TECHNOLOGIES",
-       [3]byte{0, 144, 181}:   "NIKON CORPORATION",
-       [3]byte{0, 144, 182}:   "FIBEX SYSTEMS",
-       [3]byte{0, 144, 183}:   "DIGITAL LIGHTWAVE, INC.",
-       [3]byte{0, 144, 184}:   "ROHDE & SCHWARZ GMBH & CO. KG",
-       [3]byte{0, 144, 185}:   "BERAN INSTRUMENTS LTD.",
-       [3]byte{0, 144, 186}:   "VALID NETWORKS, INC.",
-       [3]byte{0, 144, 187}:   "TAINET COMMUNICATION SYSTEM Corp.",
-       [3]byte{0, 144, 188}:   "TELEMANN CO., LTD.",
-       [3]byte{0, 144, 189}:   "OMNIA COMMUNICATIONS, INC.",
-       [3]byte{0, 144, 190}:   "IBC/INTEGRATED BUSINESS COMPUTERS",
-       [3]byte{0, 144, 191}:   "Cisco Systems, Inc",
-       [3]byte{0, 144, 192}:   "K.J. LAW ENGINEERS, INC.",
-       [3]byte{0, 144, 193}:   "Peco II, Inc.",
-       [3]byte{0, 144, 194}:   "JK microsystems, Inc.",
-       [3]byte{0, 144, 195}:   "TOPIC SEMICONDUCTOR CORP.",
-       [3]byte{0, 144, 196}:   "JAVELIN SYSTEMS, INC.",
-       [3]byte{0, 144, 197}:   "INTERNET MAGIC, INC.",
-       [3]byte{0, 144, 198}:   "OPTIM SYSTEMS, INC.",
-       [3]byte{0, 144, 199}:   "ICOM INC.",
-       [3]byte{0, 144, 200}:   "WAVERIDER COMMUNICATIONS (CANADA) INC.",
-       [3]byte{0, 144, 201}:   "DPAC Technologies",
-       [3]byte{0, 144, 202}:   "ACCORD VIDEO TELECOMMUNICATIONS, LTD.",
-       [3]byte{0, 144, 203}:   "Wireless OnLine, Inc.",
-       [3]byte{0, 144, 204}:   "PLANEX COMMUNICATIONS INC.",
-       [3]byte{0, 144, 205}:   "ENT-EMPRESA NACIONAL DE TELECOMMUNICACOES, S.A.",
-       [3]byte{0, 144, 206}:   "TETRA GmbH",
-       [3]byte{0, 144, 207}:   "NORTEL",
-       [3]byte{0, 144, 208}:   "Thomson Telecom Belgium",
-       [3]byte{0, 144, 209}:   "LEICHU ENTERPRISE CO., LTD.",
-       [3]byte{0, 144, 210}:   "ARTEL VIDEO SYSTEMS",
-       [3]byte{0, 144, 211}:   "GIESECKE & DEVRIENT GmbH",
-       [3]byte{0, 144, 212}:   "BindView Development Corp.",
-       [3]byte{0, 144, 213}:   "EUPHONIX, INC.",
-       [3]byte{0, 144, 214}:   "Crystal Group, Inc.",
-       [3]byte{0, 144, 215}:   "NetBoost Corp.",
-       [3]byte{0, 144, 216}:   "WHITECROSS SYSTEMS",
-       [3]byte{0, 144, 217}:   "Cisco Systems, Inc",
-       [3]byte{0, 144, 218}:   "DYNARC, INC.",
-       [3]byte{0, 144, 219}:   "NEXT LEVEL COMMUNICATIONS",
-       [3]byte{0, 144, 220}:   "TECO INFORMATION SYSTEMS",
-       [3]byte{0, 144, 221}:   "MIHARU COMMUNICATIONS Inc",
-       [3]byte{0, 144, 222}:   "CARDKEY SYSTEMS, INC.",
-       [3]byte{0, 144, 223}:   "MITSUBISHI CHEMICAL AMERICA, INC.",
-       [3]byte{0, 144, 224}:   "SYSTRAN CORP.",
-       [3]byte{0, 144, 225}:   "TELENA S.P.A.",
-       [3]byte{0, 144, 226}:   "DISTRIBUTED PROCESSING TECHNOLOGY",
-       [3]byte{0, 144, 227}:   "AVEX ELECTRONICS INC.",
-       [3]byte{0, 144, 228}:   "NEC AMERICA, INC.",
-       [3]byte{0, 144, 229}:   "TEKNEMA, INC.",
-       [3]byte{0, 144, 230}:   "ALi Corporation",
-       [3]byte{0, 144, 231}:   "HORSCH ELEKTRONIK AG",
-       [3]byte{0, 144, 232}:   "MOXA TECHNOLOGIES CORP., LTD.",
-       [3]byte{0, 144, 233}:   "JANZ COMPUTER AG",
-       [3]byte{0, 144, 234}:   "ALPHA TECHNOLOGIES, INC.",
-       [3]byte{0, 144, 235}:   "SENTRY TELECOM SYSTEMS",
-       [3]byte{0, 144, 236}:   "PYRESCOM",
-       [3]byte{0, 144, 237}:   "CENTRAL SYSTEM RESEARCH CO., LTD.",
-       [3]byte{0, 144, 238}:   "PERSONAL COMMUNICATIONS TECHNOLOGIES",
-       [3]byte{0, 144, 239}:   "INTEGRIX, INC.",
-       [3]byte{0, 144, 240}:   "Harmonic Video Systems Ltd.",
-       [3]byte{0, 144, 241}:   "Seagate Cloud Systems Inc",
-       [3]byte{0, 144, 242}:   "Cisco Systems, Inc",
-       [3]byte{0, 144, 243}:   "ASPECT COMMUNICATIONS",
-       [3]byte{0, 144, 244}:   "LIGHTNING INSTRUMENTATION",
-       [3]byte{0, 144, 245}:   "CLEVO CO.",
-       [3]byte{0, 144, 246}:   "ESCALATE NETWORKS, INC.",
-       [3]byte{0, 144, 247}:   "NBASE COMMUNICATIONS LTD.",
-       [3]byte{0, 144, 248}:   "MEDIATRIX TELECOM",
-       [3]byte{0, 144, 249}:   "Imagine Communications",
-       [3]byte{0, 144, 250}:   "Emulex Corporation",
-       [3]byte{0, 144, 251}:   "PORTWELL, INC.",
-       [3]byte{0, 144, 252}:   "NETWORK COMPUTING DEVICES",
-       [3]byte{0, 144, 253}:   "CopperCom, Inc.",
-       [3]byte{0, 144, 254}:   "ELECOM CO., LTD.  (LANEED DIV.)",
-       [3]byte{0, 144, 255}:   "TELLUS TECHNOLOGY INC.",
-       [3]byte{0, 145, 214}:   "Crystal Group, Inc.",
-       [3]byte{0, 145, 250}:   "Synapse Product Development",
-       [3]byte{0, 146, 250}:   "SHENZHEN WISKY TECHNOLOGY CO.,LTD",
-       [3]byte{0, 147, 99}:    "Uni-Link Technology Co., Ltd.",
-       [3]byte{0, 148, 161}:   "F5 Networks, Inc.",
-       [3]byte{0, 149, 105}:   "LSD Science and Technology Co.,Ltd.",
-       [3]byte{0, 151, 255}:   "Heimann Sensor GmbH",
-       [3]byte{0, 154, 205}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{0, 154, 210}:   "Cisco Systems, Inc",
-       [3]byte{0, 156, 2}:     "Hewlett Packard",
-       [3]byte{0, 157, 142}:   "CARDIAC RECORDERS, INC.",
-       [3]byte{0, 158, 30}:    "Cisco Systems, Inc",
-       [3]byte{0, 158, 200}:   "Xiaomi Communications Co Ltd",
-       [3]byte{0, 160, 0}:     "CENTILLION NETWORKS, INC.",
-       [3]byte{0, 160, 1}:     "DRS Signal Solutions",
-       [3]byte{0, 160, 2}:     "LEEDS & NORTHRUP AUSTRALIA PTY LTD",
-       [3]byte{0, 160, 3}:     "Siemens Switzerland Ltd., I B T HVP",
-       [3]byte{0, 160, 4}:     "NETPOWER, INC.",
-       [3]byte{0, 160, 5}:     "DANIEL INSTRUMENTS, LTD.",
-       [3]byte{0, 160, 6}:     "IMAGE DATA PROCESSING SYSTEM GROUP",
-       [3]byte{0, 160, 7}:     "APEXX TECHNOLOGY, INC.",
-       [3]byte{0, 160, 8}:     "NETCORP",
-       [3]byte{0, 160, 9}:     "WHITETREE NETWORK",
-       [3]byte{0, 160, 10}:    "Airspan",
-       [3]byte{0, 160, 11}:    "COMPUTEX CO., LTD.",
-       [3]byte{0, 160, 12}:    "KINGMAX TECHNOLOGY, INC.",
-       [3]byte{0, 160, 13}:    "THE PANDA PROJECT",
-       [3]byte{0, 160, 14}:    "NetScout Systems, Inc.",
-       [3]byte{0, 160, 15}:    "Broadband Technologies",
-       [3]byte{0, 160, 16}:    "SYSLOGIC DATENTECHNIK AG",
-       [3]byte{0, 160, 17}:    "MUTOH INDUSTRIES LTD.",
-       [3]byte{0, 160, 18}:    "Telco Systems, Inc.",
-       [3]byte{0, 160, 19}:    "TELTREND LTD.",
-       [3]byte{0, 160, 20}:    "CSIR",
-       [3]byte{0, 160, 21}:    "WYLE",
-       [3]byte{0, 160, 22}:    "MICROPOLIS CORP.",
-       [3]byte{0, 160, 23}:    "J B M CORPORATION",
-       [3]byte{0, 160, 24}:    "CREATIVE CONTROLLERS, INC.",
-       [3]byte{0, 160, 25}:    "NEBULA CONSULTANTS, INC.",
-       [3]byte{0, 160, 26}:    "BINAR ELEKTRONIK AB",
-       [3]byte{0, 160, 27}:    "PREMISYS COMMUNICATIONS, INC.",
-       [3]byte{0, 160, 28}:    "NASCENT NETWORKS CORPORATION",
-       [3]byte{0, 160, 29}:    "Red Lion Controls, LP",
-       [3]byte{0, 160, 30}:    "EST CORPORATION",
-       [3]byte{0, 160, 31}:    "TRICORD SYSTEMS, INC.",
-       [3]byte{0, 160, 32}:    "CITICORP/TTI",
-       [3]byte{0, 160, 33}:    "General Dynamics",
-       [3]byte{0, 160, 34}:    "CENTRE FOR DEVELOPMENT OF ADVANCED COMPUTING",
-       [3]byte{0, 160, 35}:    "APPLIED CREATIVE TECHNOLOGY, INC.",
-       [3]byte{0, 160, 36}:    "3COM CORPORATION",
-       [3]byte{0, 160, 37}:    "REDCOM LABS INC.",
-       [3]byte{0, 160, 38}:    "TELDAT, S.A.",
-       [3]byte{0, 160, 39}:    "FIREPOWER SYSTEMS, INC.",
-       [3]byte{0, 160, 40}:    "CONNER PERIPHERALS",
-       [3]byte{0, 160, 41}:    "COULTER CORPORATION",
-       [3]byte{0, 160, 42}:    "TRANCELL SYSTEMS",
-       [3]byte{0, 160, 43}:    "TRANSITIONS RESEARCH CORP.",
-       [3]byte{0, 160, 44}:    "interWAVE Communications",
-       [3]byte{0, 160, 45}:    "1394 Trade Association",
-       [3]byte{0, 160, 46}:    "BRAND COMMUNICATIONS, LTD.",
-       [3]byte{0, 160, 47}:    "ADB Broadband Italia",
-       [3]byte{0, 160, 48}:    "CAPTOR NV/SA",
-       [3]byte{0, 160, 49}:    "HAZELTINE CORPORATION, MS 1-17",
-       [3]byte{0, 160, 50}:    "GES SINGAPORE PTE. LTD.",
-       [3]byte{0, 160, 51}:    "imc MeBsysteme GmbH",
-       [3]byte{0, 160, 52}:    "AXEL",
-       [3]byte{0, 160, 53}:    "CYLINK CORPORATION",
-       [3]byte{0, 160, 54}:    "APPLIED NETWORK TECHNOLOGY",
-       [3]byte{0, 160, 55}:    "Mindray DS USA, Inc.",
-       [3]byte{0, 160, 56}:    "EMAIL ELECTRONICS",
-       [3]byte{0, 160, 57}:    "ROSS TECHNOLOGY, INC.",
-       [3]byte{0, 160, 58}:    "KUBOTEK CORPORATION",
-       [3]byte{0, 160, 59}:    "TOSHIN ELECTRIC CO., LTD.",
-       [3]byte{0, 160, 60}:    "EG&G NUCLEAR INSTRUMENTS",
-       [3]byte{0, 160, 61}:    "OPTO-22",
-       [3]byte{0, 160, 62}:    "ATM FORUM",
-       [3]byte{0, 160, 63}:    "COMPUTER SOCIETY MICROPROCESSOR & MICROPROCESSOR STANDARDS C",
-       [3]byte{0, 160, 64}:    "Apple, Inc.",
-       [3]byte{0, 160, 65}:    "INFICON",
-       [3]byte{0, 160, 66}:    "SPUR PRODUCTS CORP.",
-       [3]byte{0, 160, 67}:    "AMERICAN TECHNOLOGY LABS, INC.",
-       [3]byte{0, 160, 68}:    "NTT IT CO., LTD.",
-       [3]byte{0, 160, 69}:    "PHOENIX CONTACT Electronics GmbH",
-       [3]byte{0, 160, 70}:    "SCITEX CORP. LTD.",
-       [3]byte{0, 160, 71}:    "INTEGRATED FITNESS CORP.",
-       [3]byte{0, 160, 72}:    "QUESTECH, LTD.",
-       [3]byte{0, 160, 73}:    "DIGITECH INDUSTRIES, INC.",
-       [3]byte{0, 160, 74}:    "NISSHIN ELECTRIC CO., LTD.",
-       [3]byte{0, 160, 75}:    "TFL LAN INC.",
-       [3]byte{0, 160, 76}:    "INNOVATIVE SYSTEMS & TECHNOLOGIES, INC.",
-       [3]byte{0, 160, 77}:    "EDA INSTRUMENTS, INC.",
-       [3]byte{0, 160, 78}:    "VOELKER TECHNOLOGIES, INC.",
-       [3]byte{0, 160, 79}:    "AMERITEC CORP.",
-       [3]byte{0, 160, 80}:    "CYPRESS SEMICONDUCTOR",
-       [3]byte{0, 160, 81}:    "ANGIA COMMUNICATIONS. INC.",
-       [3]byte{0, 160, 82}:    "STANILITE ELECTRONICS PTY. LTD",
-       [3]byte{0, 160, 83}:    "COMPACT DEVICES, INC.",
-       [3]byte{0, 160, 84}:    "Private",
-       [3]byte{0, 160, 85}:    "Data Device Corporation",
-       [3]byte{0, 160, 86}:    "MICROPROSS",
-       [3]byte{0, 160, 87}:    "LANCOM Systems GmbH",
-       [3]byte{0, 160, 88}:    "GLORY, LTD.",
-       [3]byte{0, 160, 89}:    "HAMILTON HALLMARK",
-       [3]byte{0, 160, 90}:    "KOFAX IMAGE PRODUCTS",
-       [3]byte{0, 160, 91}:    "MARQUIP, INC.",
-       [3]byte{0, 160, 92}:    "INVENTORY CONVERSION, INC./",
-       [3]byte{0, 160, 93}:    "CS COMPUTER SYSTEME GmbH",
-       [3]byte{0, 160, 94}:    "MYRIAD LOGIC INC.",
-       [3]byte{0, 160, 95}:    "BTG Electronics Design BV",
-       [3]byte{0, 160, 96}:    "ACER PERIPHERALS, INC.",
-       [3]byte{0, 160, 97}:    "PURITAN BENNETT",
-       [3]byte{0, 160, 98}:    "AES PRODATA",
-       [3]byte{0, 160, 99}:    "JRL SYSTEMS, INC.",
-       [3]byte{0, 160, 100}:   "KVB/ANALECT",
-       [3]byte{0, 160, 101}:   "Symantec Corporation",
-       [3]byte{0, 160, 102}:   "ISA CO., LTD.",
-       [3]byte{0, 160, 103}:   "NETWORK SERVICES GROUP",
-       [3]byte{0, 160, 104}:   "BHP LIMITED",
-       [3]byte{0, 160, 105}:   "Symmetricom, Inc.",
-       [3]byte{0, 160, 106}:   "Verilink Corporation",
-       [3]byte{0, 160, 107}:   "DMS DORSCH MIKROSYSTEM GMBH",
-       [3]byte{0, 160, 108}:   "SHINDENGEN ELECTRIC MFG. CO., LTD.",
-       [3]byte{0, 160, 109}:   "MANNESMANN TALLY CORPORATION",
-       [3]byte{0, 160, 110}:   "AUSTRON, INC.",
-       [3]byte{0, 160, 111}:   "Color Sentinel Systems, LLC",
-       [3]byte{0, 160, 112}:   "COASTCOM",
-       [3]byte{0, 160, 113}:   "VIDEO LOTTERY TECHNOLOGIES,INC",
-       [3]byte{0, 160, 114}:   "OVATION SYSTEMS LTD.",
-       [3]byte{0, 160, 115}:   "COM21, INC.",
-       [3]byte{0, 160, 116}:   "PERCEPTION TECHNOLOGY",
-       [3]byte{0, 160, 117}:   "MICRON TECHNOLOGY, INC.",
-       [3]byte{0, 160, 118}:   "CARDWARE LAB, INC.",
-       [3]byte{0, 160, 119}:   "FUJITSU NEXION, INC.",
-       [3]byte{0, 160, 120}:   "Marconi Communications",
-       [3]byte{0, 160, 121}:   "ALPS ELECTRIC (USA), INC.",
-       [3]byte{0, 160, 122}:   "ADVANCED PERIPHERALS TECHNOLOGIES, INC.",
-       [3]byte{0, 160, 123}:   "DAWN COMPUTER INCORPORATION",
-       [3]byte{0, 160, 124}:   "TONYANG NYLON CO., LTD.",
-       [3]byte{0, 160, 125}:   "SEEQ TECHNOLOGY, INC.",
-       [3]byte{0, 160, 126}:   "AVID TECHNOLOGY, INC.",
-       [3]byte{0, 160, 127}:   "GSM-SYNTEL, LTD.",
-       [3]byte{0, 160, 128}:   "Tattile SRL",
-       [3]byte{0, 160, 129}:   "ALCATEL DATA NETWORKS",
-       [3]byte{0, 160, 130}:   "NKT ELEKTRONIK A/S",
-       [3]byte{0, 160, 131}:   "ASIMMPHONY TURKEY",
-       [3]byte{0, 160, 132}:   "Dataplex Pty Ltd",
-       [3]byte{0, 160, 133}:   "Private",
-       [3]byte{0, 160, 134}:   "AMBER WAVE SYSTEMS, INC.",
-       [3]byte{0, 160, 135}:   "Microsemi Corporation",
-       [3]byte{0, 160, 136}:   "ESSENTIAL COMMUNICATIONS",
-       [3]byte{0, 160, 137}:   "XPOINT TECHNOLOGIES, INC.",
-       [3]byte{0, 160, 138}:   "BROOKTROUT TECHNOLOGY, INC.",
-       [3]byte{0, 160, 139}:   "ASTON ELECTRONIC DESIGNS LTD.",
-       [3]byte{0, 160, 140}:   "MultiMedia LANs, Inc.",
-       [3]byte{0, 160, 141}:   "JACOMO CORPORATION",
-       [3]byte{0, 160, 142}:   "Check Point Software Technologies",
-       [3]byte{0, 160, 143}:   "DESKNET SYSTEMS, INC.",
-       [3]byte{0, 160, 144}:   "TimeStep Corporation",
-       [3]byte{0, 160, 145}:   "APPLICOM INTERNATIONAL",
-       [3]byte{0, 160, 146}:   "H. BOLLMANN MANUFACTURERS, LTD",
-       [3]byte{0, 160, 147}:   "B/E AEROSPACE, Inc.",
-       [3]byte{0, 160, 148}:   "COMSAT CORPORATION",
-       [3]byte{0, 160, 149}:   "ACACIA NETWORKS, INC.",
-       [3]byte{0, 160, 150}:   "MITSUMI ELECTRIC CO.,LTD.",
-       [3]byte{0, 160, 151}:   "JC INFORMATION SYSTEMS",
-       [3]byte{0, 160, 152}:   "NetApp",
-       [3]byte{0, 160, 153}:   "K-NET LTD.",
-       [3]byte{0, 160, 154}:   "NIHON KOHDEN AMERICA",
-       [3]byte{0, 160, 155}:   "QPSX COMMUNICATIONS, LTD.",
-       [3]byte{0, 160, 156}:   "Xyplex, Inc.",
-       [3]byte{0, 160, 157}:   "JOHNATHON FREEMAN TECHNOLOGIES",
-       [3]byte{0, 160, 158}:   "ICTV",
-       [3]byte{0, 160, 159}:   "COMMVISION CORP.",
-       [3]byte{0, 160, 160}:   "COMPACT DATA, LTD.",
-       [3]byte{0, 160, 161}:   "EPIC DATA INC.",
-       [3]byte{0, 160, 162}:   "DIGICOM S.P.A.",
-       [3]byte{0, 160, 163}:   "RELIABLE POWER METERS",
-       [3]byte{0, 160, 164}:   "Oracle Corporation",
-       [3]byte{0, 160, 165}:   "TEKNOR MICROSYSTEME, INC.",
-       [3]byte{0, 160, 166}:   "M.I. SYSTEMS, K.K.",
-       [3]byte{0, 160, 167}:   "VORAX CORPORATION",
-       [3]byte{0, 160, 168}:   "RENEX CORPORATION",
-       [3]byte{0, 160, 169}:   "NAVTEL COMMUNICATIONS INC.",
-       [3]byte{0, 160, 170}:   "SPACELABS MEDICAL",
-       [3]byte{0, 160, 171}:   "NETCS INFORMATIONSTECHNIK GMBH",
-       [3]byte{0, 160, 172}:   "GILAT SATELLITE NETWORKS, LTD.",
-       [3]byte{0, 160, 173}:   "MARCONI SPA",
-       [3]byte{0, 160, 174}:   "NUCOM SYSTEMS, INC.",
-       [3]byte{0, 160, 175}:   "WMS INDUSTRIES",
-       [3]byte{0, 160, 176}:   "I-O DATA DEVICE, INC.",
-       [3]byte{0, 160, 177}:   "FIRST VIRTUAL CORPORATION",
-       [3]byte{0, 160, 178}:   "SHIMA SEIKI",
-       [3]byte{0, 160, 179}:   "ZYKRONIX",
-       [3]byte{0, 160, 180}:   "TEXAS MICROSYSTEMS, INC.",
-       [3]byte{0, 160, 181}:   "3H TECHNOLOGY",
-       [3]byte{0, 160, 182}:   "SANRITZ AUTOMATION CO., LTD.",
-       [3]byte{0, 160, 183}:   "CORDANT, INC.",
-       [3]byte{0, 160, 184}:   "NetApp",
-       [3]byte{0, 160, 185}:   "EAGLE TECHNOLOGY, INC.",
-       [3]byte{0, 160, 186}:   "PATTON ELECTRONICS CO.",
-       [3]byte{0, 160, 187}:   "HILAN GMBH",
-       [3]byte{0, 160, 188}:   "VIASAT, INCORPORATED",
-       [3]byte{0, 160, 189}:   "I-TECH CORP.",
-       [3]byte{0, 160, 190}:   "INTEGRATED CIRCUIT SYSTEMS, INC. COMMUNICATIONS GROUP",
-       [3]byte{0, 160, 191}:   "WIRELESS DATA GROUP MOTOROLA",
-       [3]byte{0, 160, 192}:   "DIGITAL LINK CORP.",
-       [3]byte{0, 160, 193}:   "ORTIVUS MEDICAL AB",
-       [3]byte{0, 160, 194}:   "R.A. SYSTEMS CO., LTD.",
-       [3]byte{0, 160, 195}:   "UNICOMPUTER GMBH",
-       [3]byte{0, 160, 196}:   "CRISTIE ELECTRONICS LTD.",
-       [3]byte{0, 160, 197}:   "Zyxel Communications Corporation",
-       [3]byte{0, 160, 198}:   "Qualcomm Inc.",
-       [3]byte{0, 160, 199}:   "TADIRAN TELECOMMUNICATIONS",
-       [3]byte{0, 160, 200}:   "Adtran Inc",
-       [3]byte{0, 160, 201}:   "Intel Corporation",
-       [3]byte{0, 160, 202}:   "FUJITSU DENSO LTD.",
-       [3]byte{0, 160, 203}:   "ARK TELECOMMUNICATIONS, INC.",
-       [3]byte{0, 160, 204}:   "LITE-ON COMMUNICATIONS, INC.",
-       [3]byte{0, 160, 205}:   "DR. JOHANNES HEIDENHAIN GmbH",
-       [3]byte{0, 160, 206}:   "Ecessa",
-       [3]byte{0, 160, 207}:   "SOTAS, INC.",
-       [3]byte{0, 160, 208}:   "TEN X TECHNOLOGY, INC.",
-       [3]byte{0, 160, 209}:   "INVENTEC CORPORATION",
-       [3]byte{0, 160, 210}:   "ALLIED TELESIS INTERNATIONAL CORPORATION",
-       [3]byte{0, 160, 211}:   "INSTEM COMPUTER SYSTEMS, LTD.",
-       [3]byte{0, 160, 212}:   "RADIOLAN,  INC.",
-       [3]byte{0, 160, 213}:   "SIERRA WIRELESS INC.",
-       [3]byte{0, 160, 214}:   "SBE, Inc.",
-       [3]byte{0, 160, 215}:   "KASTEN CHASE APPLIED RESEARCH",
-       [3]byte{0, 160, 216}:   "SPECTRA - TEK",
-       [3]byte{0, 160, 217}:   "CONVEX COMPUTER CORPORATION",
-       [3]byte{0, 160, 218}:   "INTEGRATED SYSTEMS Technology, Inc.",
-       [3]byte{0, 160, 219}:   "FISHER & PAYKEL PRODUCTION",
-       [3]byte{0, 160, 220}:   "O.N. ELECTRONIC CO., LTD.",
-       [3]byte{0, 160, 221}:   "AZONIX CORPORATION",
-       [3]byte{0, 160, 222}:   "YAMAHA CORPORATION",
-       [3]byte{0, 160, 223}:   "STS TECHNOLOGIES, INC.",
-       [3]byte{0, 160, 224}:   "TENNYSON TECHNOLOGIES PTY LTD",
-       [3]byte{0, 160, 225}:   "WESTPORT RESEARCH ASSOCIATES, INC.",
-       [3]byte{0, 160, 226}:   "Keisokugiken Corporation",
-       [3]byte{0, 160, 227}:   "XKL SYSTEMS CORP.",
-       [3]byte{0, 160, 228}:   "OPTIQUEST",
-       [3]byte{0, 160, 229}:   "NHC COMMUNICATIONS",
-       [3]byte{0, 160, 230}:   "DIALOGIC CORPORATION",
-       [3]byte{0, 160, 231}:   "CENTRAL DATA CORPORATION",
-       [3]byte{0, 160, 232}:   "REUTERS HOLDINGS PLC",
-       [3]byte{0, 160, 233}:   "ELECTRONIC RETAILING SYSTEMS INTERNATIONAL",
-       [3]byte{0, 160, 234}:   "ETHERCOM CORP.",
-       [3]byte{0, 160, 235}:   "Encore Networks, Inc.",
-       [3]byte{0, 160, 236}:   "TRANSMITTON LTD.",
-       [3]byte{0, 160, 237}:   "Brooks Automation, Inc.",
-       [3]byte{0, 160, 238}:   "NASHOBA NETWORKS",
-       [3]byte{0, 160, 239}:   "LUCIDATA LTD.",
-       [3]byte{0, 160, 240}:   "TORONTO MICROELECTRONICS INC.",
-       [3]byte{0, 160, 241}:   "MTI",
-       [3]byte{0, 160, 242}:   "INFOTEK COMMUNICATIONS, INC.",
-       [3]byte{0, 160, 243}:   "STAUBLI",
-       [3]byte{0, 160, 244}:   "GE",
-       [3]byte{0, 160, 245}:   "RADGUARD LTD.",
-       [3]byte{0, 160, 246}:   "AutoGas Systems Inc.",
-       [3]byte{0, 160, 247}:   "V.I COMPUTER CORP.",
-       [3]byte{0, 160, 248}:   "Zebra Technologies Inc",
-       [3]byte{0, 160, 249}:   "BINTEC COMMUNICATIONS GMBH",
-       [3]byte{0, 160, 250}:   "Marconi Communication GmbH",
-       [3]byte{0, 160, 251}:   "TORAY ENGINEERING CO., LTD.",
-       [3]byte{0, 160, 252}:   "IMAGE SCIENCES, INC.",
-       [3]byte{0, 160, 253}:   "SCITEX DIGITAL PRINTING, INC.",
-       [3]byte{0, 160, 254}:   "BOSTON TECHNOLOGY, INC.",
-       [3]byte{0, 160, 255}:   "TELLABS OPERATIONS, INC.",
-       [3]byte{0, 161, 222}:   "ShenZhen ShiHua Technology CO.,LTD",
-       [3]byte{0, 162, 137}:   "Cisco Systems, Inc",
-       [3]byte{0, 162, 218}:   "INAT GmbH",
-       [3]byte{0, 162, 238}:   "Cisco Systems, Inc",
-       [3]byte{0, 162, 245}:   "Guangzhou Yuanyun Network Technology Co.,Ltd",
-       [3]byte{0, 162, 255}:   "abatec group AG",
-       [3]byte{0, 163, 142}:   "Cisco Systems, Inc",
-       [3]byte{0, 163, 209}:   "Cisco Systems, Inc",
-       [3]byte{0, 165, 9}:     "WigWag Inc.",
-       [3]byte{0, 166, 202}:   "Cisco Systems, Inc",
-       [3]byte{0, 167, 66}:    "Cisco Systems, Inc",
-       [3]byte{0, 167, 132}:   "ITX security",
-       [3]byte{0, 170, 0}:     "Intel Corporation",
-       [3]byte{0, 170, 1}:     "Intel Corporation",
-       [3]byte{0, 170, 2}:     "Intel Corporation",
-       [3]byte{0, 170, 60}:    "OLIVETTI TELECOM SPA (OLTECO)",
-       [3]byte{0, 170, 112}:   "LG Electronics (Mobile Communications)",
-       [3]byte{0, 172, 224}:   "ARRIS Group, Inc.",
-       [3]byte{0, 174, 205}:   "Pensando Systems",
-       [3]byte{0, 174, 250}:   "Murata Manufacturing Co., Ltd.",
-       [3]byte{0, 175, 31}:    "Cisco Systems, Inc",
-       [3]byte{0, 176, 9}:     "Grass Valley, A Belden Brand",
-       [3]byte{0, 176, 23}:    "InfoGear Technology Corp.",
-       [3]byte{0, 176, 25}:    "UTC CCS",
-       [3]byte{0, 176, 28}:    "Westport Technologies",
-       [3]byte{0, 176, 30}:    "Rantic Labs, Inc.",
-       [3]byte{0, 176, 42}:    "ORSYS GmbH",
-       [3]byte{0, 176, 45}:    "ViaGate Technologies, Inc.",
-       [3]byte{0, 176, 51}:    "OAO Izhevskiy radiozavod",
-       [3]byte{0, 176, 59}:    "HiQ Networks",
-       [3]byte{0, 176, 72}:    "Marconi Communications Inc.",
-       [3]byte{0, 176, 74}:    "Cisco Systems, Inc",
-       [3]byte{0, 176, 82}:    "Atheros Communications",
-       [3]byte{0, 176, 100}:   "Cisco Systems, Inc",
-       [3]byte{0, 176, 105}:   "Honewell Oy",
-       [3]byte{0, 176, 109}:   "Jones Futurex Inc.",
-       [3]byte{0, 176, 128}:   "Mannesmann Ipulsys B.V.",
-       [3]byte{0, 176, 134}:   "LocSoft Limited",
-       [3]byte{0, 176, 142}:   "Cisco Systems, Inc",
-       [3]byte{0, 176, 145}:   "Transmeta Corp.",
-       [3]byte{0, 176, 148}:   "Alaris, Inc.",
-       [3]byte{0, 176, 154}:   "Morrow Technologies Corp.",
-       [3]byte{0, 176, 157}:   "Point Grey Research Inc.",
-       [3]byte{0, 176, 172}:   "SIAE-Microelettronica S.p.A.",
-       [3]byte{0, 176, 174}:   "Symmetricom",
-       [3]byte{0, 176, 179}:   "XSTREAMIS PLC",
-       [3]byte{0, 176, 194}:   "Cisco Systems, Inc",
-       [3]byte{0, 176, 199}:   "Tellabs Operations, Inc.",
-       [3]byte{0, 176, 206}:   "Viveris Technologies",
-       [3]byte{0, 176, 208}:   "Dell Inc.",
-       [3]byte{0, 176, 219}:   "Nextcell, Inc.",
-       [3]byte{0, 176, 223}:   "Starboard Storage Systems",
-       [3]byte{0, 176, 225}:   "Cisco Systems, Inc",
-       [3]byte{0, 176, 231}:   "British Federal Ltd.",
-       [3]byte{0, 176, 236}:   "EACEM",
-       [3]byte{0, 176, 238}:   "Ajile Systems, Inc.",
-       [3]byte{0, 176, 240}:   "CALY NETWORKS",
-       [3]byte{0, 176, 245}:   "NetWorth Technologies, Inc.",
-       [3]byte{0, 179, 56}:    "Kontron Design Manufacturing Services (M) Sdn. Bhd",
-       [3]byte{0, 179, 66}:    "MacroSAN Technologies Co., Ltd.",
-       [3]byte{0, 179, 98}:    "Apple, Inc.",
-       [3]byte{0, 181, 109}:   "David Electronics Co., LTD.",
-       [3]byte{0, 181, 214}:   "Omnibit Inc.",
-       [3]byte{0, 182, 159}:   "Latch",
-       [3]byte{0, 183, 141}:   "Nanjing Shining Electric Automation Co., Ltd",
-       [3]byte{0, 185, 246}:   "Shenzhen Super Rich Electronics Co.,Ltd",
-       [3]byte{0, 186, 192}:   "Biometric Access Company",
-       [3]byte{0, 187, 1}:     "OCTOTHORPE CORP.",
-       [3]byte{0, 187, 58}:    "Private",
-       [3]byte{0, 187, 142}:   "HME Co., Ltd.",
-       [3]byte{0, 187, 193}:   "CANON INC.",
-       [3]byte{0, 187, 240}:   "UNGERMANN-BASS INC.",
-       [3]byte{0, 189, 39}:    "Exar Corp.",
-       [3]byte{0, 189, 58}:    "Nokia Corporation",
-       [3]byte{0, 189, 130}:   "Shenzhen YOUHUA Technology Co., Ltd",
-       [3]byte{0, 190, 158}:   "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{0, 191, 21}:    "Genetec Inc.",
-       [3]byte{0, 191, 97}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 192, 0}:     "LANOPTICS, LTD.",
-       [3]byte{0, 192, 1}:     "DIATEK PATIENT MANAGMENT",
-       [3]byte{0, 192, 2}:     "SERCOMM CORPORATION",
-       [3]byte{0, 192, 3}:     "GLOBALNET COMMUNICATIONS",
-       [3]byte{0, 192, 4}:     "JAPAN BUSINESS COMPUTER CO.LTD",
-       [3]byte{0, 192, 5}:     "LIVINGSTON ENTERPRISES, INC.",
-       [3]byte{0, 192, 6}:     "NIPPON AVIONICS CO., LTD.",
-       [3]byte{0, 192, 7}:     "PINNACLE DATA SYSTEMS, INC.",
-       [3]byte{0, 192, 8}:     "SECO SRL",
-       [3]byte{0, 192, 9}:     "KT TECHNOLOGY (S) PTE LTD",
-       [3]byte{0, 192, 10}:    "MICRO CRAFT",
-       [3]byte{0, 192, 11}:    "NORCONTROL A.S.",
-       [3]byte{0, 192, 12}:    "RELIA TECHNOLGIES",
-       [3]byte{0, 192, 13}:    "ADVANCED LOGIC RESEARCH, INC.",
-       [3]byte{0, 192, 14}:    "PSITECH, INC.",
-       [3]byte{0, 192, 15}:    "QUANTUM SOFTWARE SYSTEMS LTD.",
-       [3]byte{0, 192, 16}:    "HIRAKAWA HEWTECH CORP.",
-       [3]byte{0, 192, 17}:    "INTERACTIVE COMPUTING DEVICES",
-       [3]byte{0, 192, 18}:    "NETSPAN CORPORATION",
-       [3]byte{0, 192, 19}:    "NETRIX",
-       [3]byte{0, 192, 20}:    "TELEMATICS CALABASAS INT'L,INC",
-       [3]byte{0, 192, 21}:    "NEW MEDIA CORPORATION",
-       [3]byte{0, 192, 22}:    "ELECTRONIC THEATRE CONTROLS",
-       [3]byte{0, 192, 23}:    "NetScout Systems, Inc.",
-       [3]byte{0, 192, 24}:    "LANART CORPORATION",
-       [3]byte{0, 192, 25}:    "LEAP TECHNOLOGY, INC.",
-       [3]byte{0, 192, 26}:    "COROMETRICS MEDICAL SYSTEMS",
-       [3]byte{0, 192, 27}:    "SOCKET COMMUNICATIONS, INC.",
-       [3]byte{0, 192, 28}:    "INTERLINK COMMUNICATIONS LTD.",
-       [3]byte{0, 192, 29}:    "GRAND JUNCTION NETWORKS, INC.",
-       [3]byte{0, 192, 30}:    "LA FRANCAISE DES JEUX",
-       [3]byte{0, 192, 31}:    "S.E.R.C.E.L.",
-       [3]byte{0, 192, 32}:    "ARCO ELECTRONIC, CONTROL LTD.",
-       [3]byte{0, 192, 33}:    "NETEXPRESS",
-       [3]byte{0, 192, 34}:    "LASERMASTER TECHNOLOGIES, INC.",
-       [3]byte{0, 192, 35}:    "TUTANKHAMON ELECTRONICS",
-       [3]byte{0, 192, 36}:    "EDEN SISTEMAS DE COMPUTACAO SA",
-       [3]byte{0, 192, 37}:    "DATAPRODUCTS CORPORATION",
-       [3]byte{0, 192, 38}:    "LANS TECHNOLOGY CO., LTD.",
-       [3]byte{0, 192, 39}:    "CIPHER SYSTEMS, INC.",
-       [3]byte{0, 192, 40}:    "JASCO CORPORATION",
-       [3]byte{0, 192, 41}:    "Nexans Deutschland GmbH - ANS",
-       [3]byte{0, 192, 42}:    "OHKURA ELECTRIC CO., LTD.",
-       [3]byte{0, 192, 43}:    "GERLOFF GESELLSCHAFT FUR",
-       [3]byte{0, 192, 44}:    "CENTRUM COMMUNICATIONS, INC.",
-       [3]byte{0, 192, 45}:    "FUJI PHOTO FILM CO., LTD.",
-       [3]byte{0, 192, 46}:    "NETWIZ",
-       [3]byte{0, 192, 47}:    "OKUMA CORPORATION",
-       [3]byte{0, 192, 48}:    "INTEGRATED ENGINEERING B. V.",
-       [3]byte{0, 192, 49}:    "DESIGN RESEARCH SYSTEMS, INC.",
-       [3]byte{0, 192, 50}:    "I-CUBED LIMITED",
-       [3]byte{0, 192, 51}:    "TELEBIT COMMUNICATIONS APS",
-       [3]byte{0, 192, 52}:    "TRANSACTION NETWORK",
-       [3]byte{0, 192, 53}:    "QUINTAR COMPANY",
-       [3]byte{0, 192, 54}:    "RAYTECH ELECTRONIC CORP.",
-       [3]byte{0, 192, 55}:    "DYNATEM",
-       [3]byte{0, 192, 56}:    "RASTER IMAGE PROCESSING SYSTEM",
-       [3]byte{0, 192, 57}:    "Teridian Semiconductor Corporation",
-       [3]byte{0, 192, 58}:    "MEN-MIKRO ELEKTRONIK GMBH",
-       [3]byte{0, 192, 59}:    "MULTIACCESS COMPUTING CORP.",
-       [3]byte{0, 192, 60}:    "TOWER TECH S.R.L.",
-       [3]byte{0, 192, 61}:    "WIESEMANN & THEIS GMBH",
-       [3]byte{0, 192, 62}:    "FA. GEBR. HELLER GMBH",
-       [3]byte{0, 192, 63}:    "STORES AUTOMATED SYSTEMS, INC.",
-       [3]byte{0, 192, 64}:    "ECCI",
-       [3]byte{0, 192, 65}:    "DIGITAL TRANSMISSION SYSTEMS",
-       [3]byte{0, 192, 66}:    "DATALUX CORP.",
-       [3]byte{0, 192, 67}:    "STRATACOM",
-       [3]byte{0, 192, 68}:    "EMCOM CORPORATION",
-       [3]byte{0, 192, 69}:    "ISOLATION SYSTEMS, LTD.",
-       [3]byte{0, 192, 70}:    "Blue Chip Technology Ltd",
-       [3]byte{0, 192, 71}:    "UNIMICRO SYSTEMS, INC.",
-       [3]byte{0, 192, 72}:    "BAY TECHNICAL ASSOCIATES",
-       [3]byte{0, 192, 73}:    "U.S. ROBOTICS, INC.",
-       [3]byte{0, 192, 74}:    "GROUP 2000 AG",
-       [3]byte{0, 192, 75}:    "CREATIVE MICROSYSTEMS",
-       [3]byte{0, 192, 76}:    "DEPARTMENT OF FOREIGN AFFAIRS",
-       [3]byte{0, 192, 77}:    "MITEC, INC.",
-       [3]byte{0, 192, 78}:    "COMTROL CORPORATION",
-       [3]byte{0, 192, 79}:    "Dell Inc.",
-       [3]byte{0, 192, 80}:    "TOYO DENKI SEIZO K.K.",
-       [3]byte{0, 192, 81}:    "ADVANCED INTEGRATION RESEARCH",
-       [3]byte{0, 192, 82}:    "BURR-BROWN",
-       [3]byte{0, 192, 83}:    "Aspect Software Inc.",
-       [3]byte{0, 192, 84}:    "NETWORK PERIPHERALS, LTD.",
-       [3]byte{0, 192, 85}:    "MODULAR COMPUTING TECHNOLOGIES",
-       [3]byte{0, 192, 86}:    "SOMELEC",
-       [3]byte{0, 192, 87}:    "MYCO ELECTRONICS",
-       [3]byte{0, 192, 88}:    "DATAEXPERT CORP.",
-       [3]byte{0, 192, 89}:    "DENSO CORPORATION",
-       [3]byte{0, 192, 90}:    "SEMAPHORE COMMUNICATIONS CORP.",
-       [3]byte{0, 192, 91}:    "NETWORKS NORTHWEST, INC.",
-       [3]byte{0, 192, 92}:    "ELONEX PLC",
-       [3]byte{0, 192, 93}:    "L&N TECHNOLOGIES",
-       [3]byte{0, 192, 94}:    "VARI-LITE, INC.",
-       [3]byte{0, 192, 95}:    "FINE-PAL COMPANY LIMITED",
-       [3]byte{0, 192, 96}:    "ID SCANDINAVIA AS",
-       [3]byte{0, 192, 97}:    "SOLECTEK CORPORATION",
-       [3]byte{0, 192, 98}:    "IMPULSE TECHNOLOGY",
-       [3]byte{0, 192, 99}:    "MORNING STAR TECHNOLOGIES, INC",
-       [3]byte{0, 192, 100}:   "General Datacomm LLC",
-       [3]byte{0, 192, 101}:   "SCOPE COMMUNICATIONS, INC.",
-       [3]byte{0, 192, 102}:   "DOCUPOINT, INC.",
-       [3]byte{0, 192, 103}:   "UNITED BARCODE INDUSTRIES",
-       [3]byte{0, 192, 104}:   "HME Clear-Com LTD.",
-       [3]byte{0, 192, 105}:   "Axxcelera Broadband Wireless",
-       [3]byte{0, 192, 106}:   "ZAHNER-ELEKTRIK GMBH & CO. KG",
-       [3]byte{0, 192, 107}:   "OSI PLUS CORPORATION",
-       [3]byte{0, 192, 108}:   "SVEC COMPUTER CORP.",
-       [3]byte{0, 192, 109}:   "BOCA RESEARCH, INC.",
-       [3]byte{0, 192, 110}:   "HAFT TECHNOLOGY, INC.",
-       [3]byte{0, 192, 111}:   "KOMATSU LTD.",
-       [3]byte{0, 192, 112}:   "SECTRA SECURE-TRANSMISSION AB",
-       [3]byte{0, 192, 113}:   "AREANEX COMMUNICATIONS, INC.",
-       [3]byte{0, 192, 114}:   "KNX LTD.",
-       [3]byte{0, 192, 115}:   "XEDIA CORPORATION",
-       [3]byte{0, 192, 116}:   "TOYODA AUTOMATIC LOOM",
-       [3]byte{0, 192, 117}:   "XANTE CORPORATION",
-       [3]byte{0, 192, 118}:   "I-DATA INTERNATIONAL A-S",
-       [3]byte{0, 192, 119}:   "DAEWOO TELECOM LTD.",
-       [3]byte{0, 192, 120}:   "COMPUTER SYSTEMS ENGINEERING",
-       [3]byte{0, 192, 121}:   "FONSYS CO.,LTD.",
-       [3]byte{0, 192, 122}:   "PRIVA B.V.",
-       [3]byte{0, 192, 123}:   "ASCEND COMMUNICATIONS, INC.",
-       [3]byte{0, 192, 124}:   "HIGHTECH INFORMATION",
-       [3]byte{0, 192, 125}:   "RISC DEVELOPMENTS LTD.",
-       [3]byte{0, 192, 126}:   "KUBOTA CORPORATION ELECTRONIC",
-       [3]byte{0, 192, 127}:   "NUPON COMPUTING CORP.",
-       [3]byte{0, 192, 128}:   "NETSTAR, INC.",
-       [3]byte{0, 192, 129}:   "METRODATA LTD.",
-       [3]byte{0, 192, 130}:   "MOORE PRODUCTS CO.",
-       [3]byte{0, 192, 131}:   "TRACE MOUNTAIN PRODUCTS, INC.",
-       [3]byte{0, 192, 132}:   "DATA LINK CORP. LTD.",
-       [3]byte{0, 192, 133}:   "ELECTRONICS FOR IMAGING, INC.",
-       [3]byte{0, 192, 134}:   "THE LYNK CORPORATION",
-       [3]byte{0, 192, 135}:   "UUNET TECHNOLOGIES, INC.",
-       [3]byte{0, 192, 136}:   "EKF ELEKTRONIK GMBH",
-       [3]byte{0, 192, 137}:   "TELINDUS DISTRIBUTION",
-       [3]byte{0, 192, 138}:   "Lauterbach GmbH",
-       [3]byte{0, 192, 139}:   "RISQ MODULAR SYSTEMS, INC.",
-       [3]byte{0, 192, 140}:   "PERFORMANCE TECHNOLOGIES, INC.",
-       [3]byte{0, 192, 141}:   "TRONIX PRODUCT DEVELOPMENT",
-       [3]byte{0, 192, 142}:   "NETWORK INFORMATION TECHNOLOGY",
-       [3]byte{0, 192, 143}:   "Panasonic Electric Works Co., Ltd.",
-       [3]byte{0, 192, 144}:   "PRAIM S.R.L.",
-       [3]byte{0, 192, 145}:   "JABIL CIRCUIT, INC.",
-       [3]byte{0, 192, 146}:   "MENNEN MEDICAL INC.",
-       [3]byte{0, 192, 147}:   "ALTA RESEARCH CORP.",
-       [3]byte{0, 192, 148}:   "VMX INC.",
-       [3]byte{0, 192, 149}:   "ZNYX Networks, Inc.",
-       [3]byte{0, 192, 150}:   "TAMURA CORPORATION",
-       [3]byte{0, 192, 151}:   "ARCHIPEL SA",
-       [3]byte{0, 192, 152}:   "CHUNTEX ELECTRONIC CO., LTD.",
-       [3]byte{0, 192, 153}:   "YOSHIKI INDUSTRIAL CO.,LTD.",
-       [3]byte{0, 192, 154}:   "PHOTONICS CORPORATION",
-       [3]byte{0, 192, 155}:   "RELIANCE COMM/TEC, R-TEC",
-       [3]byte{0, 192, 156}:   "HIOKI E.E. CORPORATION",
-       [3]byte{0, 192, 157}:   "DISTRIBUTED SYSTEMS INT'L, INC",
-       [3]byte{0, 192, 158}:   "CACHE COMPUTERS, INC.",
-       [3]byte{0, 192, 159}:   "QUANTA COMPUTER INC.",
-       [3]byte{0, 192, 160}:   "ADVANCE MICRO RESEARCH, INC.",
-       [3]byte{0, 192, 161}:   "TOKYO DENSHI SEKEI CO.",
-       [3]byte{0, 192, 162}:   "INTERMEDIUM A/S",
-       [3]byte{0, 192, 163}:   "DUAL ENTERPRISES CORPORATION",
-       [3]byte{0, 192, 164}:   "UNIGRAF OY",
-       [3]byte{0, 192, 165}:   "DICKENS DATA SYSTEMS",
-       [3]byte{0, 192, 166}:   "EXICOM AUSTRALIA PTY. LTD",
-       [3]byte{0, 192, 167}:   "SEEL LTD.",
-       [3]byte{0, 192, 168}:   "GVC CORPORATION",
-       [3]byte{0, 192, 169}:   "BARRON MCCANN LTD.",
-       [3]byte{0, 192, 170}:   "SILICON VALLEY COMPUTER",
-       [3]byte{0, 192, 171}:   "Telco Systems, Inc.",
-       [3]byte{0, 192, 172}:   "GAMBIT COMPUTER COMMUNICATIONS",
-       [3]byte{0, 192, 173}:   "MARBEN COMMUNICATION SYSTEMS",
-       [3]byte{0, 192, 174}:   "TOWERCOM CO. INC. DBA PC HOUSE",
-       [3]byte{0, 192, 175}:   "TEKLOGIX INC.",
-       [3]byte{0, 192, 176}:   "GCC TECHNOLOGIES,INC.",
-       [3]byte{0, 192, 177}:   "GENIUS NET CO.",
-       [3]byte{0, 192, 178}:   "NORAND CORPORATION",
-       [3]byte{0, 192, 179}:   "COMSTAT DATACOMM CORPORATION",
-       [3]byte{0, 192, 180}:   "MYSON TECHNOLOGY, INC.",
-       [3]byte{0, 192, 181}:   "CORPORATE NETWORK SYSTEMS,INC.",
-       [3]byte{0, 192, 182}:   "Overland Storage, Inc.",
-       [3]byte{0, 192, 183}:   "AMERICAN POWER CONVERSION CORP",
-       [3]byte{0, 192, 184}:   "FRASER'S HILL LTD.",
-       [3]byte{0, 192, 185}:   "FUNK SOFTWARE, INC.",
-       [3]byte{0, 192, 186}:   "NETVANTAGE",
-       [3]byte{0, 192, 187}:   "FORVAL CREATIVE, INC.",
-       [3]byte{0, 192, 188}:   "TELECOM AUSTRALIA/CSSC",
-       [3]byte{0, 192, 189}:   "INEX TECHNOLOGIES, INC.",
-       [3]byte{0, 192, 190}:   "ALCATEL - SEL",
-       [3]byte{0, 192, 191}:   "TECHNOLOGY CONCEPTS, LTD.",
-       [3]byte{0, 192, 192}:   "SHORE MICROSYSTEMS, INC.",
-       [3]byte{0, 192, 193}:   "QUAD/GRAPHICS, INC.",
-       [3]byte{0, 192, 194}:   "INFINITE NETWORKS LTD.",
-       [3]byte{0, 192, 195}:   "ACUSON COMPUTED SONOGRAPHY",
-       [3]byte{0, 192, 196}:   "COMPUTER OPERATIONAL",
-       [3]byte{0, 192, 197}:   "SID INFORMATICA",
-       [3]byte{0, 192, 198}:   "PERSONAL MEDIA CORP.",
-       [3]byte{0, 192, 199}:   "SPARKTRUM MICROSYSTEMS, INC.",
-       [3]byte{0, 192, 200}:   "MICRO BYTE PTY. LTD.",
-       [3]byte{0, 192, 201}:   "ELSAG BAILEY PROCESS",
-       [3]byte{0, 192, 202}:   "ALFA, INC.",
-       [3]byte{0, 192, 203}:   "CONTROL TECHNOLOGY CORPORATION",
-       [3]byte{0, 192, 204}:   "TELESCIENCES CO SYSTEMS, INC.",
-       [3]byte{0, 192, 205}:   "COMELTA, S.A.",
-       [3]byte{0, 192, 206}:   "CEI SYSTEMS & ENGINEERING PTE",
-       [3]byte{0, 192, 207}:   "IMATRAN VOIMA OY",
-       [3]byte{0, 192, 208}:   "RATOC SYSTEM INC.",
-       [3]byte{0, 192, 209}:   "COMTREE TECHNOLOGY CORPORATION",
-       [3]byte{0, 192, 210}:   "SYNTELLECT, INC.",
-       [3]byte{0, 192, 211}:   "OLYMPUS IMAGE SYSTEMS, INC.",
-       [3]byte{0, 192, 212}:   "AXON NETWORKS, INC.",
-       [3]byte{0, 192, 213}:   "Werbeagentur Jürgen Siebert",
-       [3]byte{0, 192, 214}:   "J1 SYSTEMS, INC.",
-       [3]byte{0, 192, 215}:   "TAIWAN TRADING CENTER DBA",
-       [3]byte{0, 192, 216}:   "UNIVERSAL DATA SYSTEMS",
-       [3]byte{0, 192, 217}:   "QUINTE NETWORK CONFIDENTIALITY",
-       [3]byte{0, 192, 218}:   "NICE SYSTEMS LTD.",
-       [3]byte{0, 192, 219}:   "IPC CORPORATION (PTE) LTD.",
-       [3]byte{0, 192, 220}:   "EOS TECHNOLOGIES, INC.",
-       [3]byte{0, 192, 221}:   "QLogic Corporation",
-       [3]byte{0, 192, 222}:   "ZCOMM, INC.",
-       [3]byte{0, 192, 223}:   "KYE Systems Corp.",
-       [3]byte{0, 192, 224}:   "DSC COMMUNICATION CORP.",
-       [3]byte{0, 192, 225}:   "SONIC SOLUTIONS",
-       [3]byte{0, 192, 226}:   "CALCOMP, INC.",
-       [3]byte{0, 192, 227}:   "OSITECH COMMUNICATIONS, INC.",
-       [3]byte{0, 192, 228}:   "SIEMENS BUILDING",
-       [3]byte{0, 192, 229}:   "GESPAC, S.A.",
-       [3]byte{0, 192, 230}:   "Verilink Corporation",
-       [3]byte{0, 192, 231}:   "FIBERDATA AB",
-       [3]byte{0, 192, 232}:   "PLEXCOM, INC.",
-       [3]byte{0, 192, 233}:   "OAK SOLUTIONS, LTD.",
-       [3]byte{0, 192, 234}:   "ARRAY TECHNOLOGY LTD.",
-       [3]byte{0, 192, 235}:   "SEH COMPUTERTECHNIK GMBH",
-       [3]byte{0, 192, 236}:   "DAUPHIN TECHNOLOGY",
-       [3]byte{0, 192, 237}:   "US ARMY ELECTRONIC",
-       [3]byte{0, 192, 238}:   "KYOCERA Display Corporation",
-       [3]byte{0, 192, 239}:   "ABIT CORPORATION",
-       [3]byte{0, 192, 240}:   "Kingston Technology Company, Inc.",
-       [3]byte{0, 192, 241}:   "SHINKO ELECTRIC CO., LTD.",
-       [3]byte{0, 192, 242}:   "TRANSITION NETWORKS",
-       [3]byte{0, 192, 243}:   "NETWORK COMMUNICATIONS CORP.",
-       [3]byte{0, 192, 244}:   "INTERLINK SYSTEM CO., LTD.",
-       [3]byte{0, 192, 245}:   "METACOMP, INC.",
-       [3]byte{0, 192, 246}:   "CELAN TECHNOLOGY INC.",
-       [3]byte{0, 192, 247}:   "ENGAGE COMMUNICATION, INC.",
-       [3]byte{0, 192, 248}:   "ABOUT COMPUTING INC.",
-       [3]byte{0, 192, 249}:   "Artesyn Embedded Technologies",
-       [3]byte{0, 192, 250}:   "CANARY COMMUNICATIONS, INC.",
-       [3]byte{0, 192, 251}:   "ADVANCED TECHNOLOGY LABS",
-       [3]byte{0, 192, 252}:   "ELASTIC REALITY, INC.",
-       [3]byte{0, 192, 253}:   "PROSUM",
-       [3]byte{0, 192, 254}:   "APTEC COMPUTER SYSTEMS, INC.",
-       [3]byte{0, 192, 255}:   "Seagate Cloud Systems Inc",
-       [3]byte{0, 193, 79}:    "DDL Co,.ltd.",
-       [3]byte{0, 193, 100}:   "Cisco Systems, Inc",
-       [3]byte{0, 193, 177}:   "Cisco Systems, Inc",
-       [3]byte{0, 194, 198}:   "Intel Corporate",
-       [3]byte{0, 197, 219}:   "Datatech Sistemas Digitales Avanzados SL",
-       [3]byte{0, 198, 16}:    "Apple, Inc.",
-       [3]byte{0, 200, 139}:   "Cisco Systems, Inc",
-       [3]byte{0, 202, 229}:   "Cisco Systems, Inc",
-       [3]byte{0, 203, 0}:     "Private",
-       [3]byte{0, 203, 189}:   "Cambridge Broadband Networks Ltd.",
-       [3]byte{0, 204, 252}:   "Cisco Systems, Inc",
-       [3]byte{0, 205, 144}:   "MAS Elektronik AG",
-       [3]byte{0, 205, 254}:   "Apple, Inc.",
-       [3]byte{0, 207, 28}:    "Communication Machinery Corporation",
-       [3]byte{0, 208, 0}:     "FERRAN SCIENTIFIC, INC.",
-       [3]byte{0, 208, 1}:     "VST TECHNOLOGIES, INC.",
-       [3]byte{0, 208, 2}:     "DITECH CORPORATION",
-       [3]byte{0, 208, 3}:     "COMDA ENTERPRISES CORP.",
-       [3]byte{0, 208, 4}:     "PENTACOM LTD.",
-       [3]byte{0, 208, 5}:     "ZHS ZEITMANAGEMENTSYSTEME",
-       [3]byte{0, 208, 6}:     "Cisco Systems, Inc",
-       [3]byte{0, 208, 7}:     "MIC ASSOCIATES, INC.",
-       [3]byte{0, 208, 8}:     "MACTELL CORPORATION",
-       [3]byte{0, 208, 9}:     "HSING TECH. ENTERPRISE CO. LTD",
-       [3]byte{0, 208, 10}:    "LANACCESS TELECOM S.A.",
-       [3]byte{0, 208, 11}:    "RHK TECHNOLOGY, INC.",
-       [3]byte{0, 208, 12}:    "SNIJDER MICRO SYSTEMS",
-       [3]byte{0, 208, 13}:    "MICROMERITICS INSTRUMENT",
-       [3]byte{0, 208, 14}:    "PLURIS, INC.",
-       [3]byte{0, 208, 15}:    "SPEECH DESIGN GMBH",
-       [3]byte{0, 208, 16}:    "CONVERGENT NETWORKS, INC.",
-       [3]byte{0, 208, 17}:    "PRISM VIDEO, INC.",
-       [3]byte{0, 208, 18}:    "GATEWORKS CORP.",
-       [3]byte{0, 208, 19}:    "PRIMEX AEROSPACE COMPANY",
-       [3]byte{0, 208, 20}:    "ROOT, INC.",
-       [3]byte{0, 208, 21}:    "UNIVEX MICROTECHNOLOGY CORP.",
-       [3]byte{0, 208, 22}:    "SCM MICROSYSTEMS, INC.",
-       [3]byte{0, 208, 23}:    "SYNTECH INFORMATION CO., LTD.",
-       [3]byte{0, 208, 24}:    "QWES. COM, INC.",
-       [3]byte{0, 208, 25}:    "DAINIPPON SCREEN CORPORATE",
-       [3]byte{0, 208, 26}:    "URMET  TLC S.P.A.",
-       [3]byte{0, 208, 27}:    "MIMAKI ENGINEERING CO., LTD.",
-       [3]byte{0, 208, 28}:    "SBS TECHNOLOGIES,",
-       [3]byte{0, 208, 29}:    "FURUNO ELECTRIC CO., LTD.",
-       [3]byte{0, 208, 30}:    "PINGTEL CORP.",
-       [3]byte{0, 208, 31}:    "Senetas Corporation Ltd",
-       [3]byte{0, 208, 32}:    "AIM SYSTEM, INC.",
-       [3]byte{0, 208, 33}:    "REGENT ELECTRONICS CORP.",
-       [3]byte{0, 208, 34}:    "INCREDIBLE TECHNOLOGIES, INC.",
-       [3]byte{0, 208, 35}:    "INFORTREND TECHNOLOGY, INC.",
-       [3]byte{0, 208, 36}:    "Cognex Corporation",
-       [3]byte{0, 208, 37}:    "XROSSTECH, INC.",
-       [3]byte{0, 208, 38}:    "HIRSCHMANN AUSTRIA GMBH",
-       [3]byte{0, 208, 39}:    "APPLIED AUTOMATION, INC.",
-       [3]byte{0, 208, 40}:    "Harmonic, Inc",
-       [3]byte{0, 208, 41}:    "WAKEFERN FOOD CORPORATION",
-       [3]byte{0, 208, 42}:    "Voxent Systems Ltd.",
-       [3]byte{0, 208, 43}:    "JETCELL, INC.",
-       [3]byte{0, 208, 44}:    "CAMPBELL SCIENTIFIC, INC.",
-       [3]byte{0, 208, 45}:    "ADEMCO",
-       [3]byte{0, 208, 46}:    "COMMUNICATION AUTOMATION CORP.",
-       [3]byte{0, 208, 47}:    "VLSI TECHNOLOGY INC.",
-       [3]byte{0, 208, 48}:    "Safetran Systems Corp",
-       [3]byte{0, 208, 49}:    "INDUSTRIAL LOGIC CORPORATION",
-       [3]byte{0, 208, 50}:    "YANO ELECTRIC CO., LTD.",
-       [3]byte{0, 208, 51}:    "DALIAN DAXIAN NETWORK",
-       [3]byte{0, 208, 52}:    "ORMEC SYSTEMS CORP.",
-       [3]byte{0, 208, 53}:    "BEHAVIOR TECH. COMPUTER CORP.",
-       [3]byte{0, 208, 54}:    "TECHNOLOGY ATLANTA CORP.",
-       [3]byte{0, 208, 55}:    "ARRIS Group, Inc.",
-       [3]byte{0, 208, 56}:    "FIVEMERE, LTD.",
-       [3]byte{0, 208, 57}:    "UTILICOM, INC.",
-       [3]byte{0, 208, 58}:    "ZONEWORX, INC.",
-       [3]byte{0, 208, 59}:    "VISION PRODUCTS PTY. LTD.",
-       [3]byte{0, 208, 60}:    "Vieo, Inc.",
-       [3]byte{0, 208, 61}:    "GALILEO TECHNOLOGY, LTD.",
-       [3]byte{0, 208, 62}:    "ROCKETCHIPS, INC.",
-       [3]byte{0, 208, 63}:    "AMERICAN COMMUNICATION",
-       [3]byte{0, 208, 64}:    "SYSMATE CO., LTD.",
-       [3]byte{0, 208, 65}:    "AMIGO TECHNOLOGY CO., LTD.",
-       [3]byte{0, 208, 66}:    "MAHLO GMBH & CO. UG",
-       [3]byte{0, 208, 67}:    "ZONAL RETAIL DATA SYSTEMS",
-       [3]byte{0, 208, 68}:    "ALIDIAN NETWORKS, INC.",
-       [3]byte{0, 208, 69}:    "KVASER AB",
-       [3]byte{0, 208, 70}:    "DOLBY LABORATORIES, INC.",
-       [3]byte{0, 208, 71}:    "XN TECHNOLOGIES",
-       [3]byte{0, 208, 72}:    "ECTON, INC.",
-       [3]byte{0, 208, 73}:    "IMPRESSTEK CO., LTD.",
-       [3]byte{0, 208, 74}:    "PRESENCE TECHNOLOGY GMBH",
-       [3]byte{0, 208, 75}:    "LA CIE GROUP S.A.",
-       [3]byte{0, 208, 76}:    "EUROTEL TELECOM LTD.",
-       [3]byte{0, 208, 77}:    "DIV OF RESEARCH & STATISTICS",
-       [3]byte{0, 208, 78}:    "LOGIBAG",
-       [3]byte{0, 208, 79}:    "BITRONICS, INC.",
-       [3]byte{0, 208, 80}:    "ISKRATEL",
-       [3]byte{0, 208, 81}:    "O2 MICRO, INC.",
-       [3]byte{0, 208, 82}:    "ASCEND COMMUNICATIONS, INC.",
-       [3]byte{0, 208, 83}:    "CONNECTED SYSTEMS",
-       [3]byte{0, 208, 84}:    "SAS INSTITUTE INC.",
-       [3]byte{0, 208, 85}:    "KATHREIN-WERKE KG",
-       [3]byte{0, 208, 86}:    "SOMAT CORPORATION",
-       [3]byte{0, 208, 87}:    "ULTRAK, INC.",
-       [3]byte{0, 208, 88}:    "Cisco Systems, Inc",
-       [3]byte{0, 208, 89}:    "AMBIT MICROSYSTEMS CORP.",
-       [3]byte{0, 208, 90}:    "SYMBIONICS, LTD.",
-       [3]byte{0, 208, 91}:    "ACROLOOP MOTION CONTROL",
-       [3]byte{0, 208, 92}:    "KATHREIN TechnoTrend GmbH",
-       [3]byte{0, 208, 93}:    "INTELLIWORXX, INC.",
-       [3]byte{0, 208, 94}:    "STRATABEAM TECHNOLOGY, INC.",
-       [3]byte{0, 208, 95}:    "VALCOM, INC.",
-       [3]byte{0, 208, 96}:    "Panasonic Europe Ltd.",
-       [3]byte{0, 208, 97}:    "TREMON ENTERPRISES CO., LTD.",
-       [3]byte{0, 208, 98}:    "DIGIGRAM",
-       [3]byte{0, 208, 99}:    "Cisco Systems, Inc",
-       [3]byte{0, 208, 100}:   "MULTITEL",
-       [3]byte{0, 208, 101}:   "TOKO ELECTRIC",
-       [3]byte{0, 208, 102}:   "WINTRISS ENGINEERING CORP.",
-       [3]byte{0, 208, 103}:   "CAMPIO COMMUNICATIONS",
-       [3]byte{0, 208, 104}:   "IWILL CORPORATION",
-       [3]byte{0, 208, 105}:   "TECHNOLOGIC SYSTEMS",
-       [3]byte{0, 208, 106}:   "LINKUP SYSTEMS CORPORATION",
-       [3]byte{0, 208, 107}:   "SR TELECOM INC.",
-       [3]byte{0, 208, 108}:   "SHAREWAVE, INC.",
-       [3]byte{0, 208, 109}:   "ACRISON, INC.",
-       [3]byte{0, 208, 110}:   "TRENDVIEW RECORDERS LTD.",
-       [3]byte{0, 208, 111}:   "KMC CONTROLS",
-       [3]byte{0, 208, 112}:   "LONG WELL ELECTRONICS CORP.",
-       [3]byte{0, 208, 113}:   "ECHELON CORP.",
-       [3]byte{0, 208, 114}:   "BROADLOGIC",
-       [3]byte{0, 208, 115}:   "ACN ADVANCED COMMUNICATIONS",
-       [3]byte{0, 208, 116}:   "TAQUA SYSTEMS, INC.",
-       [3]byte{0, 208, 117}:   "ALARIS MEDICAL SYSTEMS, INC.",
-       [3]byte{0, 208, 118}:   "Bank of America",
-       [3]byte{0, 208, 119}:   "LUCENT TECHNOLOGIES",
-       [3]byte{0, 208, 120}:   "Eltex of Sweden AB",
-       [3]byte{0, 208, 121}:   "Cisco Systems, Inc",
-       [3]byte{0, 208, 122}:   "AMAQUEST COMPUTER CORP.",
-       [3]byte{0, 208, 123}:   "COMCAM INTERNATIONAL INC",
-       [3]byte{0, 208, 124}:   "KOYO ELECTRONICS INC. CO.,LTD.",
-       [3]byte{0, 208, 125}:   "COSINE COMMUNICATIONS",
-       [3]byte{0, 208, 126}:   "KEYCORP LTD.",
-       [3]byte{0, 208, 127}:   "STRATEGY & TECHNOLOGY, LIMITED",
-       [3]byte{0, 208, 128}:   "EXABYTE CORPORATION",
-       [3]byte{0, 208, 129}:   "RTD Embedded Technologies, Inc.",
-       [3]byte{0, 208, 130}:   "IOWAVE INC.",
-       [3]byte{0, 208, 131}:   "INVERTEX, INC.",
-       [3]byte{0, 208, 132}:   "NEXCOMM SYSTEMS, INC.",
-       [3]byte{0, 208, 133}:   "OTIS ELEVATOR COMPANY",
-       [3]byte{0, 208, 134}:   "FOVEON, INC.",
-       [3]byte{0, 208, 135}:   "MICROFIRST INC.",
-       [3]byte{0, 208, 136}:   "ARRIS Group, Inc.",
-       [3]byte{0, 208, 137}:   "DYNACOLOR, INC.",
-       [3]byte{0, 208, 138}:   "PHOTRON USA",
-       [3]byte{0, 208, 139}:   "ADVA Optical Networking Ltd.",
-       [3]byte{0, 208, 140}:   "GENOA TECHNOLOGY, INC.",
-       [3]byte{0, 208, 141}:   "PHOENIX GROUP, INC.",
-       [3]byte{0, 208, 142}:   "Grass Valley, A Belden Brand",
-       [3]byte{0, 208, 143}:   "ARDENT TECHNOLOGIES, INC.",
-       [3]byte{0, 208, 144}:   "Cisco Systems, Inc",
-       [3]byte{0, 208, 145}:   "SMARTSAN SYSTEMS, INC.",
-       [3]byte{0, 208, 146}:   "GLENAYRE WESTERN MULTIPLEX",
-       [3]byte{0, 208, 147}:   "TQ - COMPONENTS GMBH",
-       [3]byte{0, 208, 148}:   "Seeion Control LLC",
-       [3]byte{0, 208, 149}:   "Alcatel-Lucent Enterprise",
-       [3]byte{0, 208, 150}:   "3COM EUROPE LTD.",
-       [3]byte{0, 208, 151}:   "Cisco Systems, Inc",
-       [3]byte{0, 208, 152}:   "Photon Dynamics Canada Inc.",
-       [3]byte{0, 208, 153}:   "Elcard Wireless Systems Oy",
-       [3]byte{0, 208, 154}:   "FILANET CORPORATION",
-       [3]byte{0, 208, 155}:   "SPECTEL LTD.",
-       [3]byte{0, 208, 156}:   "KAPADIA COMMUNICATIONS",
-       [3]byte{0, 208, 157}:   "VERIS INDUSTRIES",
-       [3]byte{0, 208, 158}:   "2Wire Inc",
-       [3]byte{0, 208, 159}:   "NOVTEK TEST SYSTEMS",
-       [3]byte{0, 208, 160}:   "MIPS DENMARK",
-       [3]byte{0, 208, 161}:   "OSKAR VIERLING GMBH + CO. KG",
-       [3]byte{0, 208, 162}:   "INTEGRATED DEVICE",
-       [3]byte{0, 208, 163}:   "VOCAL DATA, INC.",
-       [3]byte{0, 208, 164}:   "ALANTRO COMMUNICATIONS",
-       [3]byte{0, 208, 165}:   "AMERICAN ARIUM",
-       [3]byte{0, 208, 166}:   "LANBIRD TECHNOLOGY CO., LTD.",
-       [3]byte{0, 208, 167}:   "TOKYO SOKKI KENKYUJO CO., LTD.",
-       [3]byte{0, 208, 168}:   "NETWORK ENGINES, INC.",
-       [3]byte{0, 208, 169}:   "SHINANO KENSHI CO., LTD.",
-       [3]byte{0, 208, 170}:   "CHASE COMMUNICATIONS",
-       [3]byte{0, 208, 171}:   "DELTAKABEL TELECOM CV",
-       [3]byte{0, 208, 172}:   "Commscope, Inc",
-       [3]byte{0, 208, 173}:   "TL INDUSTRIES",
-       [3]byte{0, 208, 174}:   "ORESIS COMMUNICATIONS, INC.",
-       [3]byte{0, 208, 175}:   "CUTLER-HAMMER, INC.",
-       [3]byte{0, 208, 176}:   "BITSWITCH LTD.",
-       [3]byte{0, 208, 177}:   "OMEGA ELECTRONICS SA",
-       [3]byte{0, 208, 178}:   "Xiotech Corporation",
-       [3]byte{0, 208, 179}:   "DRS Technologies Canada Ltd",
-       [3]byte{0, 208, 180}:   "KATSUJIMA CO., LTD.",
-       [3]byte{0, 208, 181}:   "IPricot formerly DotCom",
-       [3]byte{0, 208, 182}:   "CRESCENT NETWORKS, INC.",
-       [3]byte{0, 208, 183}:   "Intel Corporation",
-       [3]byte{0, 208, 184}:   "Iomega Corporation",
-       [3]byte{0, 208, 185}:   "MICROTEK INTERNATIONAL, INC.",
-       [3]byte{0, 208, 186}:   "Cisco Systems, Inc",
-       [3]byte{0, 208, 187}:   "Cisco Systems, Inc",
-       [3]byte{0, 208, 188}:   "Cisco Systems, Inc",
-       [3]byte{0, 208, 189}:   "Lattice Semiconductor Corp. (LPA)",
-       [3]byte{0, 208, 190}:   "EMUTEC INC.",
-       [3]byte{0, 208, 191}:   "PIVOTAL TECHNOLOGIES",
-       [3]byte{0, 208, 192}:   "Cisco Systems, Inc",
-       [3]byte{0, 208, 193}:   "HARMONIC DATA SYSTEMS, LTD.",
-       [3]byte{0, 208, 194}:   "BALTHAZAR TECHNOLOGY AB",
-       [3]byte{0, 208, 195}:   "VIVID TECHNOLOGY PTE, LTD.",
-       [3]byte{0, 208, 196}:   "TERATECH CORPORATION",
-       [3]byte{0, 208, 197}:   "COMPUTATIONAL SYSTEMS, INC.",
-       [3]byte{0, 208, 198}:   "THOMAS & BETTS CORP.",
-       [3]byte{0, 208, 199}:   "PATHWAY, INC.",
-       [3]byte{0, 208, 200}:   "Prevas A/S",
-       [3]byte{0, 208, 201}:   "ADVANTECH CO., LTD.",
-       [3]byte{0, 208, 202}:   "Intrinsyc Software International Inc.",
-       [3]byte{0, 208, 203}:   "DASAN CO., LTD.",
-       [3]byte{0, 208, 204}:   "TECHNOLOGIES LYRE INC.",
-       [3]byte{0, 208, 205}:   "ATAN TECHNOLOGY INC.",
-       [3]byte{0, 208, 206}:   "ASYST ELECTRONIC",
-       [3]byte{0, 208, 207}:   "MORETON BAY",
-       [3]byte{0, 208, 208}:   "ZHONGXING TELECOM LTD.",
-       [3]byte{0, 208, 209}:   "Sycamore Networks",
-       [3]byte{0, 208, 210}:   "EPILOG CORPORATION",
-       [3]byte{0, 208, 211}:   "Cisco Systems, Inc",
-       [3]byte{0, 208, 212}:   "V-BITS, INC.",
-       [3]byte{0, 208, 213}:   "GRUNDIG AG",
-       [3]byte{0, 208, 214}:   "AETHRA TELECOMUNICAZIONI",
-       [3]byte{0, 208, 215}:   "B2C2, INC.",
-       [3]byte{0, 208, 216}:   "3Com Corporation",
-       [3]byte{0, 208, 217}:   "DEDICATED MICROCOMPUTERS",
-       [3]byte{0, 208, 218}:   "TAICOM DATA SYSTEMS CO., LTD.",
-       [3]byte{0, 208, 219}:   "MCQUAY INTERNATIONAL",
-       [3]byte{0, 208, 220}:   "MODULAR MINING SYSTEMS, INC.",
-       [3]byte{0, 208, 221}:   "SUNRISE TELECOM, INC.",
-       [3]byte{0, 208, 222}:   "PHILIPS MULTIMEDIA NETWORK",
-       [3]byte{0, 208, 223}:   "KUZUMI ELECTRONICS, INC.",
-       [3]byte{0, 208, 224}:   "DOOIN ELECTRONICS CO.",
-       [3]byte{0, 208, 225}:   "AVIONITEK ISRAEL INC.",
-       [3]byte{0, 208, 226}:   "MRT MICRO, INC.",
-       [3]byte{0, 208, 227}:   "ELE-CHEM ENGINEERING CO., LTD.",
-       [3]byte{0, 208, 228}:   "Cisco Systems, Inc",
-       [3]byte{0, 208, 229}:   "SOLIDUM SYSTEMS CORP.",
-       [3]byte{0, 208, 230}:   "IBOND INC.",
-       [3]byte{0, 208, 231}:   "VCON TELECOMMUNICATION LTD.",
-       [3]byte{0, 208, 232}:   "MAC SYSTEM CO., LTD.",
-       [3]byte{0, 208, 233}:   "Advantage Century Telecommunication Corp.",
-       [3]byte{0, 208, 234}:   "NEXTONE COMMUNICATIONS, INC.",
-       [3]byte{0, 208, 235}:   "LIGHTERA NETWORKS, INC.",
-       [3]byte{0, 208, 236}:   "NAKAYO Inc",
-       [3]byte{0, 208, 237}:   "XIOX",
-       [3]byte{0, 208, 238}:   "DICTAPHONE CORPORATION",
-       [3]byte{0, 208, 239}:   "IGT",
-       [3]byte{0, 208, 240}:   "CONVISION TECHNOLOGY GMBH",
-       [3]byte{0, 208, 241}:   "SEGA ENTERPRISES, LTD.",
-       [3]byte{0, 208, 242}:   "MONTEREY NETWORKS",
-       [3]byte{0, 208, 243}:   "SOLARI DI UDINE SPA",
-       [3]byte{0, 208, 244}:   "CARINTHIAN TECH INSTITUTE",
-       [3]byte{0, 208, 245}:   "ORANGE MICRO, INC.",
-       [3]byte{0, 208, 246}:   "Nokia",
-       [3]byte{0, 208, 247}:   "NEXT NETS CORPORATION",
-       [3]byte{0, 208, 248}:   "FUJIAN STAR TERMINAL",
-       [3]byte{0, 208, 249}:   "ACUTE COMMUNICATIONS CORP.",
-       [3]byte{0, 208, 250}:   "Thales e-Security Ltd.",
-       [3]byte{0, 208, 251}:   "TEK MICROSYSTEMS, INCORPORATED",
-       [3]byte{0, 208, 252}:   "GRANITE MICROSYSTEMS",
-       [3]byte{0, 208, 253}:   "OPTIMA TELE.COM, INC.",
-       [3]byte{0, 208, 254}:   "ASTRAL POINT",
-       [3]byte{0, 208, 255}:   "Cisco Systems, Inc",
-       [3]byte{0, 209, 28}:    "ACETEL",
-       [3]byte{0, 211, 24}:    "SPG Controls",
-       [3]byte{0, 211, 141}:   "Hotel Technology Next Generation",
-       [3]byte{0, 214, 50}:    "GE Energy",
-       [3]byte{0, 215, 143}:   "Cisco Systems, Inc",
-       [3]byte{0, 217, 209}:   "Sony Interactive Entertainment Inc.",
-       [3]byte{0, 218, 85}:    "Cisco Systems, Inc",
-       [3]byte{0, 219, 30}:    "Albedo Telecom SL",
-       [3]byte{0, 219, 69}:    "THAMWAY CO.,LTD.",
-       [3]byte{0, 219, 112}:   "Apple, Inc.",
-       [3]byte{0, 219, 223}:   "Intel Corporate",
-       [3]byte{0, 221, 0}:     "UNGERMANN-BASS INC.",
-       [3]byte{0, 221, 1}:     "UNGERMANN-BASS INC.",
-       [3]byte{0, 221, 2}:     "UNGERMANN-BASS INC.",
-       [3]byte{0, 221, 3}:     "UNGERMANN-BASS INC.",
-       [3]byte{0, 221, 4}:     "UNGERMANN-BASS INC.",
-       [3]byte{0, 221, 5}:     "UNGERMANN-BASS INC.",
-       [3]byte{0, 221, 6}:     "UNGERMANN-BASS INC.",
-       [3]byte{0, 221, 7}:     "UNGERMANN-BASS INC.",
-       [3]byte{0, 221, 8}:     "UNGERMANN-BASS INC.",
-       [3]byte{0, 221, 9}:     "UNGERMANN-BASS INC.",
-       [3]byte{0, 221, 10}:    "UNGERMANN-BASS INC.",
-       [3]byte{0, 221, 11}:    "UNGERMANN-BASS INC.",
-       [3]byte{0, 221, 12}:    "UNGERMANN-BASS INC.",
-       [3]byte{0, 221, 13}:    "UNGERMANN-BASS INC.",
-       [3]byte{0, 221, 14}:    "UNGERMANN-BASS INC.",
-       [3]byte{0, 221, 15}:    "UNGERMANN-BASS INC.",
-       [3]byte{0, 222, 251}:   "Cisco Systems, Inc",
-       [3]byte{0, 224, 0}:     "FUJITSU LIMITED",
-       [3]byte{0, 224, 1}:     "STRAND LIGHTING LIMITED",
-       [3]byte{0, 224, 2}:     "CROSSROADS SYSTEMS, INC.",
-       [3]byte{0, 224, 3}:     "NOKIA WIRELESS BUSINESS COMMUN",
-       [3]byte{0, 224, 4}:     "PMC-SIERRA, INC.",
-       [3]byte{0, 224, 5}:     "TECHNICAL CORP.",
-       [3]byte{0, 224, 6}:     "SILICON INTEGRATED SYS. CORP.",
-       [3]byte{0, 224, 7}:     "Avaya ECS Ltd",
-       [3]byte{0, 224, 8}:     "AMAZING CONTROLS! INC.",
-       [3]byte{0, 224, 9}:     "MARATHON TECHNOLOGIES CORP.",
-       [3]byte{0, 224, 10}:    "DIBA, INC.",
-       [3]byte{0, 224, 11}:    "ROOFTOP COMMUNICATIONS CORP.",
-       [3]byte{0, 224, 12}:    "MOTOROLA",
-       [3]byte{0, 224, 13}:    "RADIANT SYSTEMS",
-       [3]byte{0, 224, 14}:    "AVALON IMAGING SYSTEMS, INC.",
-       [3]byte{0, 224, 15}:    "Shanghai Baud Data Communication Co.,Ltd.",
-       [3]byte{0, 224, 16}:    "HESS SB-AUTOMATENBAU GmbH",
-       [3]byte{0, 224, 17}:    "UNIDEN CORPORATION",
-       [3]byte{0, 224, 18}:    "PLUTO TECHNOLOGIES INTERNATIONAL INC.",
-       [3]byte{0, 224, 19}:    "EASTERN ELECTRONIC CO., LTD.",
-       [3]byte{0, 224, 20}:    "Cisco Systems, Inc",
-       [3]byte{0, 224, 21}:    "HEIWA CORPORATION",
-       [3]byte{0, 224, 22}:    "RAPID CITY COMMUNICATIONS",
-       [3]byte{0, 224, 23}:    "EXXACT GmbH",
-       [3]byte{0, 224, 24}:    "ASUSTek COMPUTER INC.",
-       [3]byte{0, 224, 25}:    "ING. GIORDANO ELETTRONICA",
-       [3]byte{0, 224, 26}:    "COMTEC SYSTEMS. CO., LTD.",
-       [3]byte{0, 224, 27}:    "SPHERE COMMUNICATIONS, INC.",
-       [3]byte{0, 224, 28}:    "Cradlepoint, Inc",
-       [3]byte{0, 224, 29}:    "WebTV NETWORKS, INC.",
-       [3]byte{0, 224, 30}:    "Cisco Systems, Inc",
-       [3]byte{0, 224, 31}:    "AVIDIA Systems, Inc.",
-       [3]byte{0, 224, 32}:    "TECNOMEN OY",
-       [3]byte{0, 224, 33}:    "FREEGATE CORP.",
-       [3]byte{0, 224, 34}:    "Analog Devices, Inc.",
-       [3]byte{0, 224, 35}:    "TELRAD",
-       [3]byte{0, 224, 36}:    "GADZOOX NETWORKS",
-       [3]byte{0, 224, 37}:    "dit Co., Ltd.",
-       [3]byte{0, 224, 38}:    "Redlake MASD LLC",
-       [3]byte{0, 224, 39}:    "DUX, INC.",
-       [3]byte{0, 224, 40}:    "APTIX CORPORATION",
-       [3]byte{0, 224, 41}:    "STANDARD MICROSYSTEMS CORP.",
-       [3]byte{0, 224, 42}:    "TANDBERG TELEVISION AS",
-       [3]byte{0, 224, 43}:    "Extreme Networks, Inc.",
-       [3]byte{0, 224, 44}:    "AST COMPUTER",
-       [3]byte{0, 224, 45}:    "InnoMediaLogic, Inc.",
-       [3]byte{0, 224, 46}:    "SPC ELECTRONICS CORPORATION",
-       [3]byte{0, 224, 47}:    "MCNS HOLDINGS, L.P.",
-       [3]byte{0, 224, 48}:    "MELITA INTERNATIONAL CORP.",
-       [3]byte{0, 224, 49}:    "HAGIWARA ELECTRIC CO., LTD.",
-       [3]byte{0, 224, 50}:    "MISYS FINANCIAL SYSTEMS, LTD.",
-       [3]byte{0, 224, 51}:    "E.E.P.D. GmbH",
-       [3]byte{0, 224, 52}:    "Cisco Systems, Inc",
-       [3]byte{0, 224, 53}:    "Artesyn Embedded Technologies",
-       [3]byte{0, 224, 54}:    "PIONEER CORPORATION",
-       [3]byte{0, 224, 55}:    "CENTURY CORPORATION",
-       [3]byte{0, 224, 56}:    "PROXIMA CORPORATION",
-       [3]byte{0, 224, 57}:    "PARADYNE CORP.",
-       [3]byte{0, 224, 58}:    "Cabletron Systems, Inc.",
-       [3]byte{0, 224, 59}:    "PROMINET CORPORATION",
-       [3]byte{0, 224, 60}:    "AdvanSys",
-       [3]byte{0, 224, 61}:    "FOCON ELECTRONIC SYSTEMS A/S",
-       [3]byte{0, 224, 62}:    "ALFATECH, INC.",
-       [3]byte{0, 224, 63}:    "JATON CORPORATION",
-       [3]byte{0, 224, 64}:    "DeskStation Technology, Inc.",
-       [3]byte{0, 224, 65}:    "CSPI",
-       [3]byte{0, 224, 66}:    "Pacom Systems Ltd.",
-       [3]byte{0, 224, 67}:    "VitalCom",
-       [3]byte{0, 224, 68}:    "LSICS CORPORATION",
-       [3]byte{0, 224, 69}:    "TOUCHWAVE, INC.",
-       [3]byte{0, 224, 70}:    "BENTLY NEVADA CORP.",
-       [3]byte{0, 224, 71}:    "InFocus Corporation",
-       [3]byte{0, 224, 72}:    "SDL COMMUNICATIONS, INC.",
-       [3]byte{0, 224, 73}:    "MICROWI ELECTRONIC GmbH",
-       [3]byte{0, 224, 74}:    "ZX Technologies, Inc",
-       [3]byte{0, 224, 75}:    "JUMP INDUSTRIELLE COMPUTERTECHNIK GmbH",
-       [3]byte{0, 224, 76}:    "REALTEK SEMICONDUCTOR CORP.",
-       [3]byte{0, 224, 77}:    "INTERNET INITIATIVE JAPAN, INC",
-       [3]byte{0, 224, 78}:    "SANYO DENKI CO., LTD.",
-       [3]byte{0, 224, 79}:    "Cisco Systems, Inc",
-       [3]byte{0, 224, 80}:    "EXECUTONE INFORMATION SYSTEMS, INC.",
-       [3]byte{0, 224, 81}:    "TALX CORPORATION",
-       [3]byte{0, 224, 82}:    "Brocade Communications Systems, Inc.",
-       [3]byte{0, 224, 83}:    "CELLPORT LABS, INC.",
-       [3]byte{0, 224, 84}:    "KODAI HITEC CO., LTD.",
-       [3]byte{0, 224, 85}:    "INGENIERIA ELECTRONICA COMERCIAL INELCOM S.A.",
-       [3]byte{0, 224, 86}:    "HOLONTECH CORPORATION",
-       [3]byte{0, 224, 87}:    "HAN MICROTELECOM. CO., LTD.",
-       [3]byte{0, 224, 88}:    "PHASE ONE DENMARK A/S",
-       [3]byte{0, 224, 89}:    "CONTROLLED ENVIRONMENTS, LTD.",
-       [3]byte{0, 224, 90}:    "GALEA NETWORK SECURITY",
-       [3]byte{0, 224, 91}:    "WEST END SYSTEMS CORP.",
-       [3]byte{0, 224, 92}:    "Panasonic Healthcare Co., Ltd.",
-       [3]byte{0, 224, 93}:    "UNITEC CO., LTD.",
-       [3]byte{0, 224, 94}:    "JAPAN AVIATION ELECTRONICS INDUSTRY, LTD.",
-       [3]byte{0, 224, 95}:    "e-Net, Inc.",
-       [3]byte{0, 224, 96}:    "SHERWOOD",
-       [3]byte{0, 224, 97}:    "EdgePoint Networks, Inc.",
-       [3]byte{0, 224, 98}:    "HOST ENGINEERING",
-       [3]byte{0, 224, 99}:    "Cabletron Systems, Inc.",
-       [3]byte{0, 224, 100}:   "SAMSUNG ELECTRONICS",
-       [3]byte{0, 224, 101}:   "OPTICAL ACCESS INTERNATIONAL",
-       [3]byte{0, 224, 102}:   "ProMax Systems, Inc.",
-       [3]byte{0, 224, 103}:   "eac AUTOMATION-CONSULTING GmbH",
-       [3]byte{0, 224, 104}:   "MERRIMAC SYSTEMS INC.",
-       [3]byte{0, 224, 105}:   "JAYCOR",
-       [3]byte{0, 224, 106}:   "KAPSCH AG",
-       [3]byte{0, 224, 107}:   "W&G SPECIAL PRODUCTS",
-       [3]byte{0, 224, 108}:   "Ultra Electronics Command & Control Systems",
-       [3]byte{0, 224, 109}:   "COMPUWARE CORPORATION",
-       [3]byte{0, 224, 110}:   "FAR SYSTEMS S.p.A.",
-       [3]byte{0, 224, 111}:   "ARRIS Group, Inc.",
-       [3]byte{0, 224, 112}:   "DH TECHNOLOGY",
-       [3]byte{0, 224, 113}:   "EPIS MICROCOMPUTER",
-       [3]byte{0, 224, 114}:   "LYNK",
-       [3]byte{0, 224, 115}:   "NATIONAL AMUSEMENT NETWORK, INC.",
-       [3]byte{0, 224, 116}:   "TIERNAN COMMUNICATIONS, INC.",
-       [3]byte{0, 224, 117}:   "Verilink Corporation",
-       [3]byte{0, 224, 118}:   "DEVELOPMENT CONCEPTS, INC.",
-       [3]byte{0, 224, 119}:   "WEBGEAR, INC.",
-       [3]byte{0, 224, 120}:   "BERKELEY NETWORKS",
-       [3]byte{0, 224, 121}:   "A.T.N.R.",
-       [3]byte{0, 224, 122}:   "MIKRODIDAKT AB",
-       [3]byte{0, 224, 123}:   "BAY NETWORKS",
-       [3]byte{0, 224, 124}:   "METTLER-TOLEDO, INC.",
-       [3]byte{0, 224, 125}:   "NETRONIX, INC.",
-       [3]byte{0, 224, 126}:   "WALT DISNEY IMAGINEERING",
-       [3]byte{0, 224, 127}:   "LOGISTISTEM s.r.l.",
-       [3]byte{0, 224, 128}:   "CONTROL RESOURCES CORPORATION",
-       [3]byte{0, 224, 129}:   "TYAN COMPUTER CORP.",
-       [3]byte{0, 224, 130}:   "ANERMA",
-       [3]byte{0, 224, 131}:   "JATO TECHNOLOGIES, INC.",
-       [3]byte{0, 224, 132}:   "COMPULITE R&D",
-       [3]byte{0, 224, 133}:   "GLOBAL MAINTECH, INC.",
-       [3]byte{0, 224, 134}:   "Emerson Network Power, Avocent Division",
-       [3]byte{0, 224, 135}:   "LeCroy - Networking Productions Division",
-       [3]byte{0, 224, 136}:   "LTX-Credence CORPORATION",
-       [3]byte{0, 224, 137}:   "ION Networks, Inc.",
-       [3]byte{0, 224, 138}:   "GEC AVERY, LTD.",
-       [3]byte{0, 224, 139}:   "QLogic Corporation",
-       [3]byte{0, 224, 140}:   "NEOPARADIGM LABS, INC.",
-       [3]byte{0, 224, 141}:   "PRESSURE SYSTEMS, INC.",
-       [3]byte{0, 224, 142}:   "UTSTARCOM",
-       [3]byte{0, 224, 143}:   "Cisco Systems, Inc",
-       [3]byte{0, 224, 144}:   "BECKMAN LAB. AUTOMATION DIV.",
-       [3]byte{0, 224, 145}:   "LG Electronics",
-       [3]byte{0, 224, 146}:   "ADMTEK INCORPORATED",
-       [3]byte{0, 224, 147}:   "ACKFIN NETWORKS",
-       [3]byte{0, 224, 148}:   "OSAI SRL",
-       [3]byte{0, 224, 149}:   "ADVANCED-VISION TECHNOLGIES CORP.",
-       [3]byte{0, 224, 150}:   "SHIMADZU CORPORATION",
-       [3]byte{0, 224, 151}:   "CARRIER ACCESS CORPORATION",
-       [3]byte{0, 224, 152}:   "AboCom",
-       [3]byte{0, 224, 153}:   "SAMSON AG",
-       [3]byte{0, 224, 154}:   "Positron Inc.",
-       [3]byte{0, 224, 155}:   "ENGAGE NETWORKS, INC.",
-       [3]byte{0, 224, 156}:   "MII",
-       [3]byte{0, 224, 157}:   "SARNOFF CORPORATION",
-       [3]byte{0, 224, 158}:   "Quantum Corporation",
-       [3]byte{0, 224, 159}:   "PIXEL VISION",
-       [3]byte{0, 224, 160}:   "WILTRON CO.",
-       [3]byte{0, 224, 161}:   "HIMA PAUL HILDEBRANDT GmbH Co. KG",
-       [3]byte{0, 224, 162}:   "MICROSLATE INC.",
-       [3]byte{0, 224, 163}:   "Cisco Systems, Inc",
-       [3]byte{0, 224, 164}:   "ESAOTE S.p.A.",
-       [3]byte{0, 224, 165}:   "ComCore Semiconductor, Inc.",
-       [3]byte{0, 224, 166}:   "TELOGY NETWORKS, INC.",
-       [3]byte{0, 224, 167}:   "IPC INFORMATION SYSTEMS, INC.",
-       [3]byte{0, 224, 168}:   "SAT GmbH & Co.",
-       [3]byte{0, 224, 169}:   "FUNAI ELECTRIC CO., LTD.",
-       [3]byte{0, 224, 170}:   "ELECTROSONIC LTD.",
-       [3]byte{0, 224, 171}:   "DIMAT S.A.",
-       [3]byte{0, 224, 172}:   "MIDSCO, INC.",
-       [3]byte{0, 224, 173}:   "EES TECHNOLOGY, LTD.",
-       [3]byte{0, 224, 174}:   "XAQTI CORPORATION",
-       [3]byte{0, 224, 175}:   "GENERAL DYNAMICS INFORMATION SYSTEMS",
-       [3]byte{0, 224, 176}:   "Cisco Systems, Inc",
-       [3]byte{0, 224, 177}:   "Alcatel-Lucent Enterprise",
-       [3]byte{0, 224, 178}:   "TELMAX COMMUNICATIONS CORP.",
-       [3]byte{0, 224, 179}:   "EtherWAN Systems, Inc.",
-       [3]byte{0, 224, 180}:   "TECHNO SCOPE CO., LTD.",
-       [3]byte{0, 224, 181}:   "ARDENT COMMUNICATIONS CORP.",
-       [3]byte{0, 224, 182}:   "Entrada Networks",
-       [3]byte{0, 224, 183}:   "PI GROUP, LTD.",
-       [3]byte{0, 224, 184}:   "GATEWAY 2000",
-       [3]byte{0, 224, 185}:   "BYAS SYSTEMS",
-       [3]byte{0, 224, 186}:   "BERGHOF AUTOMATIONSTECHNIK GmbH",
-       [3]byte{0, 224, 187}:   "NBX CORPORATION",
-       [3]byte{0, 224, 188}:   "SYMON COMMUNICATIONS, INC.",
-       [3]byte{0, 224, 189}:   "INTERFACE SYSTEMS, INC.",
-       [3]byte{0, 224, 190}:   "GENROCO INTERNATIONAL, INC.",
-       [3]byte{0, 224, 191}:   "TORRENT NETWORKING TECHNOLOGIES CORP.",
-       [3]byte{0, 224, 192}:   "SEIWA ELECTRIC MFG. CO., LTD.",
-       [3]byte{0, 224, 193}:   "MEMOREX TELEX JAPAN, LTD.",
-       [3]byte{0, 224, 194}:   "NECSY S.p.A.",
-       [3]byte{0, 224, 195}:   "SAKAI SYSTEM DEVELOPMENT CORP.",
-       [3]byte{0, 224, 196}:   "HORNER ELECTRIC, INC.",
-       [3]byte{0, 224, 197}:   "BCOM ELECTRONICS INC.",
-       [3]byte{0, 224, 198}:   "LINK2IT, L.L.C.",
-       [3]byte{0, 224, 199}:   "EUROTECH SRL",
-       [3]byte{0, 224, 200}:   "VIRTUAL ACCESS, LTD.",
-       [3]byte{0, 224, 201}:   "AutomatedLogic Corporation",
-       [3]byte{0, 224, 202}:   "BEST DATA PRODUCTS",
-       [3]byte{0, 224, 203}:   "RESON, INC.",
-       [3]byte{0, 224, 204}:   "HERO SYSTEMS, LTD.",
-       [3]byte{0, 224, 205}:   "SAAB SENSIS CORPORATION",
-       [3]byte{0, 224, 206}:   "ARN",
-       [3]byte{0, 224, 207}:   "INTEGRATED DEVICE",
-       [3]byte{0, 224, 208}:   "NETSPEED, INC.",
-       [3]byte{0, 224, 209}:   "TELSIS LIMITED",
-       [3]byte{0, 224, 210}:   "VERSANET COMMUNICATIONS, INC.",
-       [3]byte{0, 224, 211}:   "DATENTECHNIK GmbH",
-       [3]byte{0, 224, 212}:   "EXCELLENT COMPUTER",
-       [3]byte{0, 224, 213}:   "Emulex Corporation",
-       [3]byte{0, 224, 214}:   "COMPUTER & COMMUNICATION RESEARCH LAB.",
-       [3]byte{0, 224, 215}:   "SUNSHINE ELECTRONICS, INC.",
-       [3]byte{0, 224, 216}:   "LANBit Computer, Inc.",
-       [3]byte{0, 224, 217}:   "TAZMO CO., LTD.",
-       [3]byte{0, 224, 218}:   "Alcatel-Lucent Enterprise",
-       [3]byte{0, 224, 219}:   "ViaVideo Communications, Inc.",
-       [3]byte{0, 224, 220}:   "NEXWARE CORP.",
-       [3]byte{0, 224, 221}:   "Zenith Electronics Corporation",
-       [3]byte{0, 224, 222}:   "DATAX NV",
-       [3]byte{0, 224, 223}:   "KEYMILE GmbH",
-       [3]byte{0, 224, 224}:   "SI ELECTRONICS, LTD.",
-       [3]byte{0, 224, 225}:   "G2 NETWORKS, INC.",
-       [3]byte{0, 224, 226}:   "INNOVA CORP.",
-       [3]byte{0, 224, 227}:   "SK-ELEKTRONIK GMBH",
-       [3]byte{0, 224, 228}:   "FANUC ROBOTICS NORTH AMERICA, Inc.",
-       [3]byte{0, 224, 229}:   "CINCO NETWORKS, INC.",
-       [3]byte{0, 224, 230}:   "INCAA Computers",
-       [3]byte{0, 224, 231}:   "RAYTHEON E-SYSTEMS, INC.",
-       [3]byte{0, 224, 232}:   "GRETACODER Data Systems AG",
-       [3]byte{0, 224, 233}:   "DATA LABS, INC.",
-       [3]byte{0, 224, 234}:   "INNOVAT COMMUNICATIONS, INC.",
-       [3]byte{0, 224, 235}:   "DIGICOM SYSTEMS, INCORPORATED",
-       [3]byte{0, 224, 236}:   "CELESTICA INC.",
-       [3]byte{0, 224, 237}:   "SILICOM, LTD.",
-       [3]byte{0, 224, 238}:   "MAREL HF",
-       [3]byte{0, 224, 239}:   "DIONEX",
-       [3]byte{0, 224, 240}:   "ABLER TECHNOLOGY, INC.",
-       [3]byte{0, 224, 241}:   "THAT CORPORATION",
-       [3]byte{0, 224, 242}:   "ARLOTTO COMNET, INC.",
-       [3]byte{0, 224, 243}:   "WebSprint Communications, Inc.",
-       [3]byte{0, 224, 244}:   "INSIDE Technology A/S",
-       [3]byte{0, 224, 245}:   "TELES AG",
-       [3]byte{0, 224, 246}:   "DECISION EUROPE",
-       [3]byte{0, 224, 247}:   "Cisco Systems, Inc",
-       [3]byte{0, 224, 248}:   "DICNA CONTROL AB",
-       [3]byte{0, 224, 249}:   "Cisco Systems, Inc",
-       [3]byte{0, 224, 250}:   "TRL TECHNOLOGY, LTD.",
-       [3]byte{0, 224, 251}:   "LEIGHTRONIX, INC.",
-       [3]byte{0, 224, 252}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{0, 224, 253}:   "A-TREND TECHNOLOGY CO., LTD.",
-       [3]byte{0, 224, 254}:   "Cisco Systems, Inc",
-       [3]byte{0, 224, 255}:   "SECURITY DYNAMICS TECHNOLOGIES, Inc.",
-       [3]byte{0, 225, 109}:   "Cisco Systems, Inc",
-       [3]byte{0, 225, 117}:   "AK-Systems Ltd",
-       [3]byte{0, 225, 140}:   "Intel Corporate",
-       [3]byte{0, 227, 178}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 228, 0}:     "Sichuan Changhong Electric Ltd.",
-       [3]byte{0, 230, 102}:   "ARIMA Communications Corp.",
-       [3]byte{0, 230, 211}:   "NIXDORF COMPUTER CORP.",
-       [3]byte{0, 230, 232}:   "Netzin Technology Corporation,.Ltd.",
-       [3]byte{0, 232, 171}:   "Meggitt Training Systems, Inc.",
-       [3]byte{0, 235, 45}:    "Sony Mobile Communications AB",
-       [3]byte{0, 235, 213}:   "Cisco Systems, Inc",
-       [3]byte{0, 236, 10}:    "Xiaomi Communications Co Ltd",
-       [3]byte{0, 238, 189}:   "HTC Corporation",
-       [3]byte{0, 240, 81}:    "KWB Gmbh",
-       [3]byte{0, 242, 44}:    "Shanghai B-star Technology Co.,Ltd.",
-       [3]byte{0, 242, 139}:   "Cisco Systems, Inc",
-       [3]byte{0, 243, 219}:   "WOO Sports",
-       [3]byte{0, 244, 3}:     "Orbis Systems Oy",
-       [3]byte{0, 244, 111}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{0, 244, 185}:   "Apple, Inc.",
-       [3]byte{0, 246, 99}:    "Cisco Systems, Inc",
-       [3]byte{0, 247, 111}:   "Apple, Inc.",
-       [3]byte{0, 248, 28}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{0, 248, 44}:    "Cisco Systems, Inc",
-       [3]byte{0, 248, 96}:    "PT. Panggung Electric Citrabuana",
-       [3]byte{0, 248, 113}:   "DGS Denmark A/S",
-       [3]byte{0, 250, 59}:    "CLOOS ELECTRONIC GMBH",
-       [3]byte{0, 252, 88}:    "WebSilicon Ltd.",
-       [3]byte{0, 252, 112}:   "Intrepid Control Systems, Inc.",
-       [3]byte{0, 252, 139}:   "Amazon Technologies Inc.",
-       [3]byte{0, 252, 141}:   "Hitron Technologies. Inc",
-       [3]byte{0, 253, 69}:    "Hewlett Packard Enterprise",
-       [3]byte{0, 253, 76}:    "NEVATEC",
-       [3]byte{0, 254, 200}:   "Cisco Systems, Inc",
-       [3]byte{2, 7, 1}:       "RACAL-DATACOM",
-       [3]byte{2, 28, 124}:    "PERQ SYSTEMS CORPORATION",
-       [3]byte{2, 96, 134}:    "LOGIC REPLACEMENT TECH. LTD.",
-       [3]byte{2, 96, 140}:    "3COM CORPORATION",
-       [3]byte{2, 112, 1}:     "RACAL-DATACOM",
-       [3]byte{2, 112, 176}:   "M/A-COM INC. COMPANIES",
-       [3]byte{2, 112, 179}:   "DATA RECALL LTD.",
-       [3]byte{2, 157, 142}:   "CARDIAC RECORDERS, INC.",
-       [3]byte{2, 170, 60}:    "OLIVETTI TELECOMM SPA (OLTECO)",
-       [3]byte{2, 187, 1}:     "OCTOTHORPE CORP.",
-       [3]byte{2, 192, 140}:   "3COM CORPORATION",
-       [3]byte{2, 207, 28}:    "Communication Machinery Corporation",
-       [3]byte{2, 230, 211}:   "NIXDORF COMPUTER CORP.",
-       [3]byte{4, 2, 31}:      "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{4, 3, 214}:     "Nintendo Co.,Ltd",
-       [3]byte{4, 4, 234}:     "Valens Semiconductor Ltd.",
-       [3]byte{4, 10, 131}:    "Alcatel-Lucent",
-       [3]byte{4, 10, 224}:    "XMIT AG COMPUTER NETWORKS",
-       [3]byte{4, 12, 206}:    "Apple, Inc.",
-       [3]byte{4, 14, 194}:    "ViewSonic Mobile China Limited",
-       [3]byte{4, 21, 82}:     "Apple, Inc.",
-       [3]byte{4, 24, 15}:     "Samsung Electronics Co.,Ltd",
-       [3]byte{4, 24, 182}:    "Private",
-       [3]byte{4, 24, 214}:    "Ubiquiti Networks Inc.",
-       [3]byte{4, 25, 127}:    "Grasphere Japan",
-       [3]byte{4, 26, 4}:      "WaveIP",
-       [3]byte{4, 27, 109}:    "LG Electronics (Mobile Communications)",
-       [3]byte{4, 27, 148}:    "Host Mobility AB",
-       [3]byte{4, 27, 186}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{4, 29, 16}:     "Dream Ware Inc.",
-       [3]byte{4, 30, 100}:    "Apple, Inc.",
-       [3]byte{4, 30, 122}:    "DSPWorks",
-       [3]byte{4, 32, 154}:    "Panasonic Corporation AVC Networks Company",
-       [3]byte{4, 33, 76}:     "Insight Energy Ventures LLC",
-       [3]byte{4, 34, 52}:     "Wireless Standard Extensions",
-       [3]byte{4, 37, 197}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{4, 38, 5}:      "GFR Gesellschaft für Regelungstechnik und Energieeinsparung mbH",
-       [3]byte{4, 38, 101}:    "Apple, Inc.",
-       [3]byte{4, 39, 88}:     "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{4, 42, 226}:    "Cisco Systems, Inc",
-       [3]byte{4, 43, 187}:    "PicoCELA, Inc.",
-       [3]byte{4, 45, 180}:    "First Property (Beijing) Co., Ltd Modern MOMA Branch",
-       [3]byte{4, 47, 86}:     "ATOCS (Shenzhen) LTD",
-       [3]byte{4, 49, 16}:     "Inspur Group Co., Ltd.",
-       [3]byte{4, 50, 244}:    "Partron",
-       [3]byte{4, 51, 137}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{4, 54, 4}:      "Gyeyoung I&T",
-       [3]byte{4, 58, 13}:     "SM Optics S.r.l.",
-       [3]byte{4, 61, 152}:    "ChongQing QingJia Electronics CO.,LTD",
-       [3]byte{4, 65, 105}:    "GoPro",
-       [3]byte{4, 68, 161}:    "TELECON GALICIA,S.A.",
-       [3]byte{4, 70, 101}:    "Murata Manufacturing Co., Ltd.",
-       [3]byte{4, 72, 154}:    "Apple, Inc.",
-       [3]byte{4, 74, 80}:     "Ramaxel Technology (Shenzhen) limited company",
-       [3]byte{4, 75, 237}:    "Apple, Inc.",
-       [3]byte{4, 75, 255}:    "GuangZhou Hedy Digital Technology Co., Ltd",
-       [3]byte{4, 76, 239}:    "Fujian Sanao Technology Co.,Ltd",
-       [3]byte{4, 78, 6}:      "Ericsson AB",
-       [3]byte{4, 78, 90}:     "ARRIS Group, Inc.",
-       [3]byte{4, 79, 76}:     "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{4, 79, 139}:    "Adapteva, Inc.",
-       [3]byte{4, 79, 170}:    "Ruckus Wireless",
-       [3]byte{4, 80, 218}:    "Qiku Internet Network Scientific (Shenzhen) Co., Ltd",
-       [3]byte{4, 82, 199}:    "Bose Corporation",
-       [3]byte{4, 82, 243}:    "Apple, Inc.",
-       [3]byte{4, 83, 213}:    "Sysorex Global Holdings",
-       [3]byte{4, 84, 83}:     "Apple, Inc.",
-       [3]byte{4, 85, 202}:    "BriView (Xiamen) Corp.",
-       [3]byte{4, 86, 4}:      "Gionee Communication Equipment Co.,Ltd.",
-       [3]byte{4, 87, 47}:     "Sertel Electronics UK Ltd",
-       [3]byte{4, 88, 111}:    "Sichuan Whayer information industry Co.,LTD",
-       [3]byte{4, 90, 149}:    "Nokia Corporation",
-       [3]byte{4, 92, 6}:      "Zmodo Technology Corporation",
-       [3]byte{4, 92, 142}:    "gosund GROUP CO.,LTD",
-       [3]byte{4, 93, 75}:     "Sony Corporation",
-       [3]byte{4, 93, 86}:     "camtron industrial inc.",
-       [3]byte{4, 95, 167}:    "Shenzhen Yichen Technology Development Co.,LTD",
-       [3]byte{4, 97, 105}:    "MEDIA GLOBAL LINKS CO., LTD.",
-       [3]byte{4, 98, 115}:    "Cisco Systems, Inc",
-       [3]byte{4, 98, 215}:    "ALSTOM HYDRO FRANCE",
-       [3]byte{4, 99, 224}:    "Nome Oy",
-       [3]byte{4, 101, 101}:   "Testop",
-       [3]byte{4, 103, 133}:   "scemtec Hard- und Software fuer Mess- und Steuerungstechnik GmbH",
-       [3]byte{4, 105, 248}:   "Apple, Inc.",
-       [3]byte{4, 108, 157}:   "Cisco Systems, Inc",
-       [3]byte{4, 109, 66}:    "Bryston Ltd.",
-       [3]byte{4, 110, 2}:     "OpenRTLS Group",
-       [3]byte{4, 110, 73}:    "TaiYear Electronic Technology (Suzhou) Co., Ltd",
-       [3]byte{4, 112, 188}:   "Globalstar Inc.",
-       [3]byte{4, 113, 75}:    "IEEE Registration Authority",
-       [3]byte{4, 116, 161}:   "Aligera Equipamentos Digitais Ltda",
-       [3]byte{4, 117, 3}:     "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{4, 117, 245}:   "CSST",
-       [3]byte{4, 118, 110}:   "ALPS ELECTRIC CO.,LTD.",
-       [3]byte{4, 120, 99}:    "Shanghai MXCHIP Information Technology Co., Ltd.",
-       [3]byte{4, 125, 80}:    "Shenzhen Kang Ying Technology Co.Ltd.",
-       [3]byte{4, 125, 123}:   "QUANTA COMPUTER INC.",
-       [3]byte{4, 126, 74}:    "moobox CO., Ltd.",
-       [3]byte{4, 129, 174}:   "Clack Corporation",
-       [3]byte{4, 132, 138}:   "7INOVA TECHNOLOGY LIMITED",
-       [3]byte{4, 136, 140}:   "Eifelwerk Butler Systeme GmbH",
-       [3]byte{4, 136, 226}:   "Beats Electronics LLC",
-       [3]byte{4, 138, 21}:    "Avaya Inc",
-       [3]byte{4, 139, 66}:    "Skspruce Technologies",
-       [3]byte{4, 140, 3}:     "ThinPAD Technology (Shenzhen)CO.,LTD",
-       [3]byte{4, 141, 56}:    "Netcore Technology Inc.",
-       [3]byte{4, 146, 238}:   "iway AG",
-       [3]byte{4, 148, 107}:   "TECNO MOBILE LIMITED",
-       [3]byte{4, 148, 161}:   "CATCH THE WIND INC",
-       [3]byte{4, 149, 115}:   "zte corporation",
-       [3]byte{4, 149, 230}:   "Tenda Technology Co.,Ltd.Dongguan branch",
-       [3]byte{4, 150, 69}:    "WUXI SKY CHIP INTERCONNECTION TECHNOLOGY CO.,LTD.",
-       [3]byte{4, 151, 144}:   "Lartech telecom LLC",
-       [3]byte{4, 152, 243}:   "ALPS ELECTRIC CO.,LTD.",
-       [3]byte{4, 153, 230}:   "Shenzhen Yoostar Technology Co., Ltd",
-       [3]byte{4, 155, 156}:   "Eadingcore  Intelligent Technology Co., Ltd.",
-       [3]byte{4, 156, 98}:    "BMT Medical Technology s.r.o.",
-       [3]byte{4, 159, 6}:     "Smobile Co., Ltd.",
-       [3]byte{4, 159, 129}:   "NetScout Systems, Inc.",
-       [3]byte{4, 159, 202}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{4, 161, 81}:    "NETGEAR",
-       [3]byte{4, 163, 22}:    "Texas Instruments",
-       [3]byte{4, 163, 243}:   "Emicon",
-       [3]byte{4, 168, 42}:    "Nokia Corporation",
-       [3]byte{4, 176, 231}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{4, 177, 103}:   "Xiaomi Communications Co Ltd",
-       [3]byte{4, 179, 182}:   "Seamap (UK) Ltd",
-       [3]byte{4, 180, 102}:   "BSP Co., Ltd.",
-       [3]byte{4, 182, 72}:    "ZENNER",
-       [3]byte{4, 186, 54}:    "Li Seng Technology Ltd",
-       [3]byte{4, 187, 249}:   "Pavilion Data Systems Inc",
-       [3]byte{4, 189, 112}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{4, 189, 136}:   "Aruba Networks",
-       [3]byte{4, 191, 109}:   "Zyxel Communications Corporation",
-       [3]byte{4, 191, 168}:   "ISB Corporation",
-       [3]byte{4, 192, 91}:    "Tigo Energy",
-       [3]byte{4, 192, 111}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{4, 192, 156}:   "Tellabs Inc.",
-       [3]byte{4, 193, 3}:     "Clover Network, Inc.",
-       [3]byte{4, 193, 185}:   "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{4, 194, 62}:    "HTC Corporation",
-       [3]byte{4, 197, 164}:   "Cisco Systems, Inc",
-       [3]byte{4, 200, 128}:   "Samtec Inc",
-       [3]byte{4, 201, 145}:   "Phistek INC.",
-       [3]byte{4, 201, 217}:   "Echostar Technologies Corp",
-       [3]byte{4, 203, 29}:    "Traka plc",
-       [3]byte{4, 206, 20}:    "Wilocity LTD.",
-       [3]byte{4, 207, 37}:    "MANYCOLORS, INC.",
-       [3]byte{4, 211, 207}:   "Apple, Inc.",
-       [3]byte{4, 212, 55}:    "ZNV",
-       [3]byte{4, 214, 170}:   "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
-       [3]byte{4, 215, 131}:   "Y&H E&C Co.,LTD.",
-       [3]byte{4, 218, 210}:   "Cisco Systems, Inc",
-       [3]byte{4, 219, 86}:    "Apple, Inc.",
-       [3]byte{4, 219, 138}:   "Suntech International Ltd.",
-       [3]byte{4, 221, 76}:    "Velocytech",
-       [3]byte{4, 222, 219}:   "Rockport Networks Inc",
-       [3]byte{4, 222, 242}:   "Shenzhen ECOM Technology Co. Ltd",
-       [3]byte{4, 223, 105}:   "Car Connectivity Consortium",
-       [3]byte{4, 224, 176}:   "Shenzhen YOUHUA Technology Co., Ltd",
-       [3]byte{4, 224, 196}:   "TRIUMPH-ADLER AG",
-       [3]byte{4, 225, 200}:   "IMS Soluções em Energia Ltda.",
-       [3]byte{4, 226, 248}:   "AEP Ticketing solutions srl",
-       [3]byte{4, 228, 81}:    "Texas Instruments",
-       [3]byte{4, 229, 54}:    "Apple, Inc.",
-       [3]byte{4, 229, 72}:    "Cohda Wireless Pty Ltd",
-       [3]byte{4, 230, 98}:    "Acroname Inc.",
-       [3]byte{4, 230, 118}:   "AMPAK Technology, Inc.",
-       [3]byte{4, 233, 229}:   "PJRC.COM, LLC",
-       [3]byte{4, 238, 145}:   "x-fabric GmbH",
-       [3]byte{4, 240, 33}:    "Compex Systems Pte Ltd",
-       [3]byte{4, 241, 40}:    "HMD Global Oy",
-       [3]byte{4, 241, 62}:    "Apple, Inc.",
-       [3]byte{4, 241, 125}:   "Tarana Wireless",
-       [3]byte{4, 244, 188}:   "Xena Networks",
-       [3]byte{4, 247, 228}:   "Apple, Inc.",
-       [3]byte{4, 248, 194}:   "Flaircomm Microelectronics, Inc.",
-       [3]byte{4, 249, 56}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{4, 250, 63}:    "Opticore Inc.",
-       [3]byte{4, 254, 49}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{4, 254, 127}:   "Cisco Systems, Inc",
-       [3]byte{4, 254, 141}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{4, 254, 161}:   "Fihonest communication co.,Ltd",
-       [3]byte{4, 255, 81}:    "NOVAMEDIA INNOVISION SP. Z O.O.",
-       [3]byte{8, 0, 1}:       "COMPUTERVISION CORPORATION",
-       [3]byte{8, 0, 2}:       "BRIDGE COMMUNICATIONS INC.",
-       [3]byte{8, 0, 3}:       "ADVANCED COMPUTER COMM.",
-       [3]byte{8, 0, 4}:       "CROMEMCO INCORPORATED",
-       [3]byte{8, 0, 5}:       "SYMBOLICS INC.",
-       [3]byte{8, 0, 6}:       "SIEMENS AG",
-       [3]byte{8, 0, 7}:       "Apple, Inc.",
-       [3]byte{8, 0, 8}:       "BOLT BERANEK AND NEWMAN INC.",
-       [3]byte{8, 0, 9}:       "Hewlett Packard",
-       [3]byte{8, 0, 10}:      "NESTAR SYSTEMS INCORPORATED",
-       [3]byte{8, 0, 11}:      "UNISYS CORPORATION",
-       [3]byte{8, 0, 12}:      "MIKLYN DEVELOPMENT CO.",
-       [3]byte{8, 0, 13}:      "International Computers, Ltd",
-       [3]byte{8, 0, 14}:      "NCR CORPORATION",
-       [3]byte{8, 0, 15}:      "MITEL CORPORATION",
-       [3]byte{8, 0, 17}:      "TEKTRONIX INC.",
-       [3]byte{8, 0, 18}:      "BELL ATLANTIC INTEGRATED SYST.",
-       [3]byte{8, 0, 19}:      "Exxon",
-       [3]byte{8, 0, 20}:      "EXCELAN",
-       [3]byte{8, 0, 21}:      "STC BUSINESS SYSTEMS",
-       [3]byte{8, 0, 22}:      "BARRISTER INFO SYS CORP",
-       [3]byte{8, 0, 23}:      "NATIONAL SEMICONDUCTOR",
-       [3]byte{8, 0, 24}:      "PIRELLI FOCOM NETWORKS",
-       [3]byte{8, 0, 25}:      "GENERAL ELECTRIC CORPORATION",
-       [3]byte{8, 0, 26}:      "TIARA/ 10NET",
-       [3]byte{8, 0, 27}:      "Dell EMC",
-       [3]byte{8, 0, 28}:      "KDD-KOKUSAI DEBNSIN DENWA CO.",
-       [3]byte{8, 0, 29}:      "ABLE COMMUNICATIONS INC.",
-       [3]byte{8, 0, 30}:      "APOLLO COMPUTER INC.",
-       [3]byte{8, 0, 31}:      "SHARP CORPORATION",
-       [3]byte{8, 0, 32}:      "Oracle Corporation",
-       [3]byte{8, 0, 33}:      "3M COMPANY",
-       [3]byte{8, 0, 34}:      "NBI INC.",
-       [3]byte{8, 0, 35}:      "Panasonic Communications Co., Ltd.",
-       [3]byte{8, 0, 36}:      "10NET COMMUNICATIONS/DCA",
-       [3]byte{8, 0, 37}:      "CONTROL DATA",
-       [3]byte{8, 0, 38}:      "NORSK DATA A.S.",
-       [3]byte{8, 0, 39}:      "PCS Systemtechnik GmbH",
-       [3]byte{8, 0, 40}:      "Texas Instruments",
-       [3]byte{8, 0, 41}:      "Megatek Corporation",
-       [3]byte{8, 0, 42}:      "MOSAIC TECHNOLOGIES INC.",
-       [3]byte{8, 0, 43}:      "DIGITAL EQUIPMENT CORPORATION",
-       [3]byte{8, 0, 44}:      "BRITTON LEE INC.",
-       [3]byte{8, 0, 45}:      "LAN-TEC INC.",
-       [3]byte{8, 0, 46}:      "METAPHOR COMPUTER SYSTEMS",
-       [3]byte{8, 0, 47}:      "PRIME COMPUTER INC.",
-       [3]byte{8, 0, 48}:      "CERN",
-       [3]byte{8, 0, 48}:      "NETWORK RESEARCH CORPORATION",
-       [3]byte{8, 0, 48}:      "ROYAL MELBOURNE INST OF TECH",
-       [3]byte{8, 0, 49}:      "LITTLE MACHINES INC.",
-       [3]byte{8, 0, 50}:      "TIGAN INCORPORATED",
-       [3]byte{8, 0, 51}:      "BAUSCH & LOMB",
-       [3]byte{8, 0, 52}:      "FILENET CORPORATION",
-       [3]byte{8, 0, 53}:      "MICROFIVE CORPORATION",
-       [3]byte{8, 0, 54}:      "INTERGRAPH CORPORATION",
-       [3]byte{8, 0, 55}:      "FUJI-XEROX CO. LTD.",
-       [3]byte{8, 0, 56}:      "BULL S.A.S.",
-       [3]byte{8, 0, 57}:      "SPIDER SYSTEMS LIMITED",
-       [3]byte{8, 0, 58}:      "ORCATECH INC.",
-       [3]byte{8, 0, 59}:      "TORUS SYSTEMS LIMITED",
-       [3]byte{8, 0, 60}:      "SCHLUMBERGER WELL SERVICES",
-       [3]byte{8, 0, 61}:      "CADNETIX CORPORATIONS",
-       [3]byte{8, 0, 62}:      "CODEX CORPORATION",
-       [3]byte{8, 0, 63}:      "FRED KOSCHARA ENTERPRISES",
-       [3]byte{8, 0, 64}:      "FERRANTI COMPUTER SYS. LIMITED",
-       [3]byte{8, 0, 65}:      "RACAL-MILGO INFORMATION SYS..",
-       [3]byte{8, 0, 66}:      "JAPAN MACNICS CORP.",
-       [3]byte{8, 0, 67}:      "PIXEL COMPUTER INC.",
-       [3]byte{8, 0, 68}:      "DAVID SYSTEMS INC.",
-       [3]byte{8, 0, 69}:      "CONCURRENT COMPUTER CORP.",
-       [3]byte{8, 0, 70}:      "Sony Corporation",
-       [3]byte{8, 0, 71}:      "SEQUENT COMPUTER SYSTEMS INC.",
-       [3]byte{8, 0, 72}:      "EUROTHERM GAUGING SYSTEMS",
-       [3]byte{8, 0, 73}:      "UNIVATION",
-       [3]byte{8, 0, 74}:      "BANYAN SYSTEMS INC.",
-       [3]byte{8, 0, 75}:      "Planning Research Corp.",
-       [3]byte{8, 0, 76}:      "HYDRA COMPUTER SYSTEMS INC.",
-       [3]byte{8, 0, 77}:      "CORVUS SYSTEMS INC.",
-       [3]byte{8, 0, 78}:      "3COM EUROPE LTD.",
-       [3]byte{8, 0, 79}:      "CYGNET SYSTEMS",
-       [3]byte{8, 0, 80}:      "DAISY SYSTEMS CORP.",
-       [3]byte{8, 0, 81}:      "ExperData",
-       [3]byte{8, 0, 82}:      "INSYSTEC",
-       [3]byte{8, 0, 83}:      "MIDDLE EAST TECH. UNIVERSITY",
-       [3]byte{8, 0, 85}:      "STANFORD TELECOMM. INC.",
-       [3]byte{8, 0, 86}:      "STANFORD LINEAR ACCEL. CENTER",
-       [3]byte{8, 0, 87}:      "Evans & Sutherland",
-       [3]byte{8, 0, 88}:      "SYSTEMS CONCEPTS",
-       [3]byte{8, 0, 89}:      "A/S MYCRON",
-       [3]byte{8, 0, 90}:      "IBM Corp",
-       [3]byte{8, 0, 91}:      "VTA TECHNOLOGIES INC.",
-       [3]byte{8, 0, 92}:      "FOUR PHASE SYSTEMS",
-       [3]byte{8, 0, 93}:      "GOULD INC.",
-       [3]byte{8, 0, 94}:      "COUNTERPOINT COMPUTER INC.",
-       [3]byte{8, 0, 95}:      "SABER TECHNOLOGY CORP.",
-       [3]byte{8, 0, 96}:      "INDUSTRIAL NETWORKING INC.",
-       [3]byte{8, 0, 97}:      "JAROGATE LTD.",
-       [3]byte{8, 0, 98}:      "General Dynamics",
-       [3]byte{8, 0, 99}:      "PLESSEY",
-       [3]byte{8, 0, 100}:     "Sitasys AG",
-       [3]byte{8, 0, 101}:     "GENRAD INC.",
-       [3]byte{8, 0, 102}:     "AGFA CORPORATION",
-       [3]byte{8, 0, 103}:     "ComDesign",
-       [3]byte{8, 0, 104}:     "RIDGE COMPUTERS",
-       [3]byte{8, 0, 105}:     "SILICON GRAPHICS INC.",
-       [3]byte{8, 0, 106}:     "AT&T",
-       [3]byte{8, 0, 107}:     "ACCEL TECHNOLOGIES INC.",
-       [3]byte{8, 0, 108}:     "SUNTEK TECHNOLOGY INT'L",
-       [3]byte{8, 0, 109}:     "WHITECHAPEL COMPUTER WORKS",
-       [3]byte{8, 0, 110}:     "MASSCOMP",
-       [3]byte{8, 0, 111}:     "PHILIPS APELDOORN B.V.",
-       [3]byte{8, 0, 112}:     "Mitsubishi Precision Co.,LTd.",
-       [3]byte{8, 0, 113}:     "MATRA (DSIE)",
-       [3]byte{8, 0, 114}:     "XEROX CORP UNIV GRANT PROGRAM",
-       [3]byte{8, 0, 115}:     "TECMAR INC.",
-       [3]byte{8, 0, 116}:     "CASIO COMPUTER CO. LTD.",
-       [3]byte{8, 0, 117}:     "DANSK DATA ELECTRONIK",
-       [3]byte{8, 0, 118}:     "PC LAN TECHNOLOGIES",
-       [3]byte{8, 0, 119}:     "TSL COMMUNICATIONS LTD.",
-       [3]byte{8, 0, 120}:     "ACCELL CORPORATION",
-       [3]byte{8, 0, 121}:     "THE DROID WORKS",
-       [3]byte{8, 0, 122}:     "INDATA",
-       [3]byte{8, 0, 123}:     "SANYO ELECTRIC CO. LTD.",
-       [3]byte{8, 0, 124}:     "VITALINK COMMUNICATIONS CORP.",
-       [3]byte{8, 0, 126}:     "AMALGAMATED WIRELESS(AUS) LTD",
-       [3]byte{8, 0, 127}:     "CARNEGIE-MELLON UNIVERSITY",
-       [3]byte{8, 0, 128}:     "AES DATA INC.",
-       [3]byte{8, 0, 129}:     "ASTECH INC.",
-       [3]byte{8, 0, 130}:     "VERITAS SOFTWARE",
-       [3]byte{8, 0, 131}:     "Seiko Instruments Inc.",
-       [3]byte{8, 0, 132}:     "TOMEN ELECTRONICS CORP.",
-       [3]byte{8, 0, 133}:     "ELXSI",
-       [3]byte{8, 0, 134}:     "KONICA MINOLTA HOLDINGS, INC.",
-       [3]byte{8, 0, 135}:     "Xyplex, Inc.",
-       [3]byte{8, 0, 136}:     "Brocade Communications Systems, Inc.",
-       [3]byte{8, 0, 137}:     "Kinetics",
-       [3]byte{8, 0, 138}:     "PerfTech, Inc.",
-       [3]byte{8, 0, 139}:     "PYRAMID TECHNOLOGY CORP.",
-       [3]byte{8, 0, 140}:     "NETWORK RESEARCH CORPORATION",
-       [3]byte{8, 0, 141}:     "XYVISION INC.",
-       [3]byte{8, 0, 142}:     "Tandem Computers",
-       [3]byte{8, 0, 143}:     "CHIPCOM CORPORATION",
-       [3]byte{8, 0, 144}:     "SONOMA SYSTEMS",
-       [3]byte{8, 1, 15}:      "SICHUAN TIANYI COMHEART TELECOMCO.,LTD",
-       [3]byte{8, 2, 142}:     "NETGEAR",
-       [3]byte{8, 3, 113}:     "KRG CORPORATE",
-       [3]byte{8, 5, 129}:     "Roku, Inc.",
-       [3]byte{8, 5, 205}:     "DongGuang EnMai Electronic Product Co.Ltd.",
-       [3]byte{8, 8, 194}:     "Samsung Electronics Co.,Ltd",
-       [3]byte{8, 8, 234}:     "AMSC",
-       [3]byte{8, 9, 182}:     "Masimo Corp",
-       [3]byte{8, 10, 78}:     "Planet Bingo® — 3rd Rock Gaming®",
-       [3]byte{8, 12, 11}:     "SysMik GmbH Dresden",
-       [3]byte{8, 12, 201}:    "Mission Technology Group, dba Magma",
-       [3]byte{8, 13, 132}:    "GECO, Inc.",
-       [3]byte{8, 14, 168}:    "Velex s.r.l.",
-       [3]byte{8, 15, 250}:    "KSP INC.",
-       [3]byte{8, 17, 94}:     "Bitel Co., Ltd.",
-       [3]byte{8, 17, 150}:    "Intel Corporate",
-       [3]byte{8, 20, 67}:     "UNIBRAIN S.A.",
-       [3]byte{8, 21, 47}:     "Samsung Electronics Co., Ltd. ARTIK",
-       [3]byte{8, 22, 81}:     "SHENZHEN SEA STAR TECHNOLOGY CO.,LTD",
-       [3]byte{8, 23, 53}:     "Cisco Systems, Inc",
-       [3]byte{8, 23, 244}:    "IBM Corp",
-       [3]byte{8, 24, 26}:     "zte corporation",
-       [3]byte{8, 24, 76}:     "A. S. Thomas, Inc.",
-       [3]byte{8, 25, 166}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{8, 29, 251}:    "Shanghai Mexon Communication Technology Co.,Ltd",
-       [3]byte{8, 31, 63}:     "WondaLink Inc.",
-       [3]byte{8, 31, 113}:    "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{8, 31, 235}:    "BinCube",
-       [3]byte{8, 31, 243}:    "Cisco Systems, Inc",
-       [3]byte{8, 33, 239}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{8, 35, 178}:    "vivo Mobile Communication Co., Ltd.",
-       [3]byte{8, 37, 34}:     "ADVANSEE",
-       [3]byte{8, 39, 25}:     "APS systems/electronic AG",
-       [3]byte{8, 39, 206}:    "NAGANO KEIKI CO., LTD.",
-       [3]byte{8, 42, 208}:    "SRD Innovations Inc.",
-       [3]byte{8, 44, 176}:    "Network Instruments",
-       [3]byte{8, 46, 95}:     "Hewlett Packard",
-       [3]byte{8, 48, 107}:    "Palo Alto Networks",
-       [3]byte{8, 53, 113}:    "CASwell INC.",
-       [3]byte{8, 53, 178}:    "CoreEdge Networks Co., Ltd",
-       [3]byte{8, 55, 61}:     "Samsung Electronics Co.,Ltd",
-       [3]byte{8, 55, 156}:    "Topaz Co. LTD.",
-       [3]byte{8, 56, 165}:    "Funkwerk plettac electronic GmbH",
-       [3]byte{8, 58, 92}:     "Junilab, Inc.",
-       [3]byte{8, 58, 184}:    "Shinoda Plasma Co., Ltd.",
-       [3]byte{8, 61, 136}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{8, 62, 12}:     "ARRIS Group, Inc.",
-       [3]byte{8, 62, 93}:     "Sagemcom Broadband SAS",
-       [3]byte{8, 62, 142}:    "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{8, 63, 62}:     "WSH GmbH",
-       [3]byte{8, 63, 118}:    "Intellian Technologies, Inc.",
-       [3]byte{8, 63, 188}:    "zte corporation",
-       [3]byte{8, 64, 39}:     "Gridstore Inc.",
-       [3]byte{8, 64, 243}:    "Tenda Technology Co.,Ltd.Dongguan branch",
-       [3]byte{8, 70, 86}:     "VEO-LABS",
-       [3]byte{8, 72, 44}:     "Raycore Taiwan Co., LTD.",
-       [3]byte{8, 74, 207}:    "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{8, 78, 28}:     "H2A Systems, LLC",
-       [3]byte{8, 78, 191}:    "Broad Net Mux Corporation",
-       [3]byte{8, 81, 20}:     "QINGDAO TOPSCOMM COMMUNICATION CO., LTD",
-       [3]byte{8, 81, 46}:     "Orion Diagnostica Oy",
-       [3]byte{8, 82, 64}:     "EbV Elektronikbau- und Vertriebs GmbH",
-       [3]byte{8, 87, 0}:      "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{8, 90, 224}:    "Recovision Technology Co., Ltd.",
-       [3]byte{8, 91, 14}:     "Fortinet, Inc.",
-       [3]byte{8, 91, 218}:    "CliniCare LTD",
-       [3]byte{8, 93, 221}:    "MERCURY CORPORATION",
-       [3]byte{8, 96, 110}:    "ASUSTek COMPUTER INC.",
-       [3]byte{8, 98, 102}:    "ASUSTek COMPUTER INC.",
-       [3]byte{8, 99, 97}:     "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{8, 102, 31}:    "Palo Alto Networks",
-       [3]byte{8, 102, 152}:   "Apple, Inc.",
-       [3]byte{8, 103, 78}:    "Hisense broadband multimedia technology Co.,Ltd",
-       [3]byte{8, 104, 208}:   "Japan System Design",
-       [3]byte{8, 104, 234}:   "EITO ELECTRONICS CO., LTD.",
-       [3]byte{8, 106, 10}:    "ASKEY COMPUTER CORP",
-       [3]byte{8, 109, 65}:    "Apple, Inc.",
-       [3]byte{8, 109, 242}:   "Shenzhen MIMOWAVE Technology Co.,Ltd",
-       [3]byte{8, 112, 69}:    "Apple, Inc.",
-       [3]byte{8, 116, 2}:     "Apple, Inc.",
-       [3]byte{8, 116, 246}:   "Winterhalter Gastronom GmbH",
-       [3]byte{8, 117, 114}:   "Obelux Oy",
-       [3]byte{8, 118, 24}:    "ViE Technologies Sdn. Bhd.",
-       [3]byte{8, 118, 149}:   "Auto Industrial Co., Ltd.",
-       [3]byte{8, 118, 255}:   "Thomson Telecom Belgium",
-       [3]byte{8, 120, 8}:     "Samsung Electronics Co.,Ltd",
-       [3]byte{8, 121, 153}:   "AIM GmbH",
-       [3]byte{8, 122, 76}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{8, 123, 170}:   "SVYAZKOMPLEKTSERVICE, LLC",
-       [3]byte{8, 124, 190}:   "Quintic Corp.",
-       [3]byte{8, 125, 33}:    "Altasec technology corporation",
-       [3]byte{8, 128, 57}:    "Cisco SPVTG",
-       [3]byte{8, 129, 188}:   "HongKong Ipro Technology Co., Limited",
-       [3]byte{8, 129, 244}:   "Juniper Networks",
-       [3]byte{8, 132, 102}:   "Novartis Pharma AG",
-       [3]byte{8, 134, 32}:    "TECNO MOBILE LIMITED",
-       [3]byte{8, 134, 59}:    "Belkin International Inc.",
-       [3]byte{8, 140, 44}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{8, 141, 200}:   "Ryowa Electronics Co.,Ltd",
-       [3]byte{8, 142, 79}:    "SF Software Solutions",
-       [3]byte{8, 143, 44}:    "Hills Sound Vision & Lighting",
-       [3]byte{8, 148, 239}:   "Wistron Infocomm (Zhongshan) Corporation",
-       [3]byte{8, 149, 42}:    "Technicolor CH USA Inc.",
-       [3]byte{8, 150, 173}:   "Cisco Systems, Inc",
-       [3]byte{8, 150, 215}:   "AVM GmbH",
-       [3]byte{8, 151, 88}:    "Shenzhen Strong Rising Electronics Co.,Ltd DongGuan Subsidiary",
-       [3]byte{8, 155, 75}:    "iKuai Networks",
-       [3]byte{8, 158, 1}:     "QUANTA COMPUTER INC.",
-       [3]byte{8, 158, 8}:     "Google, Inc.",
-       [3]byte{8, 159, 151}:   "LEROY AUTOMATION",
-       [3]byte{8, 161, 43}:    "ShenZhen EZL Technology Co., Ltd",
-       [3]byte{8, 165, 200}:   "Sunnovo International Limited",
-       [3]byte{8, 168, 161}:   "Cyclotronics Power Concepts, Inc",
-       [3]byte{8, 169, 90}:    "AzureWave Technology Inc.",
-       [3]byte{8, 172, 165}:   "Benu Video, Inc.",
-       [3]byte{8, 175, 120}:   "Totus Solutions, Inc.",
-       [3]byte{8, 178, 88}:    "Juniper Networks",
-       [3]byte{8, 178, 163}:   "Cynny Italia S.r.L.",
-       [3]byte{8, 180, 207}:   "Abicom International",
-       [3]byte{8, 183, 56}:    "Lite-On Technogy Corp.",
-       [3]byte{8, 183, 236}:   "Wireless Seismic",
-       [3]byte{8, 186, 34}:    "Swaive Corporation",
-       [3]byte{8, 187, 204}:   "AK-NORD EDV VERTRIEBSGES. mbH",
-       [3]byte{8, 188, 32}:    "Hangzhou Royal Cloud Technology Co., Ltd",
-       [3]byte{8, 189, 67}:    "NETGEAR",
-       [3]byte{8, 190, 9}:     "Astrol Electronic AG",
-       [3]byte{8, 190, 119}:   "Green Electronics",
-       [3]byte{8, 190, 172}:   "Edimax Technology Co. Ltd.",
-       [3]byte{8, 192, 33}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{8, 198, 179}:   "QTECH LLC",
-       [3]byte{8, 202, 69}:    "Toyou Feiji Electronics Co., Ltd.",
-       [3]byte{8, 204, 104}:   "Cisco Systems, Inc",
-       [3]byte{8, 204, 167}:   "Cisco Systems, Inc",
-       [3]byte{8, 205, 155}:   "samtec automotive electronics & software GmbH",
-       [3]byte{8, 208, 159}:   "Cisco Systems, Inc",
-       [3]byte{8, 208, 183}:   "Qingdao Hisense Communications Co.,Ltd.",
-       [3]byte{8, 210, 154}:   "Proformatique",
-       [3]byte{8, 211, 75}:    "Techman Electronics (Changshu) Co., Ltd.",
-       [3]byte{8, 212, 12}:    "Intel Corporate",
-       [3]byte{8, 212, 43}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{8, 213, 192}:   "Seers Technology Co., Ltd",
-       [3]byte{8, 216, 51}:    "Shenzhen RF Technology Co., Ltd",
-       [3]byte{8, 223, 31}:    "Bose Corporation",
-       [3]byte{8, 229, 218}:   "NANJING FUJITSU COMPUTER PRODUCTS CO.,LTD.",
-       [3]byte{8, 230, 114}:   "JEBSEE ELECTRONICS CO.,LTD.",
-       [3]byte{8, 232, 79}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{8, 234, 64}:    "SHENZHEN BILIAN ELECTRONIC CO.,LTD",
-       [3]byte{8, 234, 68}:    "Aerohive Networks Inc.",
-       [3]byte{8, 235, 41}:    "Jiangsu Huitong Group Co.,Ltd.",
-       [3]byte{8, 235, 116}:   "HUMAX Co., Ltd.",
-       [3]byte{8, 235, 237}:   "World Elite Technology Co.,LTD",
-       [3]byte{8, 236, 169}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{8, 237, 2}:     "IEEE Registration Authority",
-       [3]byte{8, 237, 185}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{8, 238, 139}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{8, 239, 59}:    "MCS Logic Inc.",
-       [3]byte{8, 239, 171}:   "SAYME WIRELESS SENSOR NETWORK",
-       [3]byte{8, 241, 183}:   "Towerstream Corpration",
-       [3]byte{8, 242, 244}:   "Net One Partners Co.,Ltd.",
-       [3]byte{8, 244, 171}:   "Apple, Inc.",
-       [3]byte{8, 246, 248}:   "GET Engineering",
-       [3]byte{8, 247, 40}:    "GLOBO Multimedia Sp. z o.o. Sp.k.",
-       [3]byte{8, 250, 224}:   "Fohhn Audio AG",
-       [3]byte{8, 252, 82}:    "OpenXS BV",
-       [3]byte{8, 252, 136}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{8, 253, 14}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{12, 2, 39}:     "Technicolor CH USA Inc.",
-       [3]byte{12, 4, 0}:      "Jantar d.o.o.",
-       [3]byte{12, 5, 53}:     "Juniper Systems",
-       [3]byte{12, 17, 5}:     "Ringslink (Xiamen) Network Communication Technologies Co., Ltd",
-       [3]byte{12, 17, 103}:   "Cisco Systems, Inc",
-       [3]byte{12, 18, 98}:    "zte corporation",
-       [3]byte{12, 19, 11}:    "Uniqoteq Ltd.",
-       [3]byte{12, 20, 32}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{12, 21, 57}:    "Apple, Inc.",
-       [3]byte{12, 21, 197}:   "SDTEC Co., Ltd.",
-       [3]byte{12, 23, 241}:   "TELECSYS",
-       [3]byte{12, 25, 31}:    "Inform Electronik",
-       [3]byte{12, 26, 16}:    "Acoustic Stream",
-       [3]byte{12, 28, 32}:    "Kakao Corp",
-       [3]byte{12, 29, 175}:   "Xiaomi Communications Co Ltd",
-       [3]byte{12, 29, 194}:   "SeAH Networks",
-       [3]byte{12, 32, 38}:    "noax Technologies AG",
-       [3]byte{12, 37, 118}:   "LONGCHEER TELECOMMUNICATION LIMITED",
-       [3]byte{12, 39, 36}:    "Cisco Systems, Inc",
-       [3]byte{12, 39, 85}:    "Valuable Techologies Limited",
-       [3]byte{12, 42, 105}:   "electric imp, incorporated",
-       [3]byte{12, 42, 231}:   "Beijing General Research Institute of Mining and Metallurgy",
-       [3]byte{12, 45, 137}:   "QiiQ Communications Inc.",
-       [3]byte{12, 48, 33}:    "Apple, Inc.",
-       [3]byte{12, 55, 71}:    "zte corporation",
-       [3]byte{12, 55, 220}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{12, 56, 62}:    "Fanvil Technology Co., Ltd.",
-       [3]byte{12, 57, 86}:    "Observator instruments",
-       [3]byte{12, 60, 101}:   "Dome Imaging Inc",
-       [3]byte{12, 60, 205}:   "Universal Global Scientific Industrial Co., Ltd.",
-       [3]byte{12, 62, 159}:   "Apple, Inc.",
-       [3]byte{12, 65, 62}:    "Microsoft Corporation",
-       [3]byte{12, 69, 186}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{12, 70, 157}:   "MS Sedco",
-       [3]byte{12, 71, 61}:    "Hitron Technologies. Inc",
-       [3]byte{12, 71, 201}:   "Amazon Technologies Inc.",
-       [3]byte{12, 72, 133}:   "LG Electronics (Mobile Communications)",
-       [3]byte{12, 73, 51}:    "Sichuan Jiuzhou Electronic Technology Co., Ltd.",
-       [3]byte{12, 75, 84}:    "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{12, 76, 57}:    "MitraStar Technology Corp.",
-       [3]byte{12, 77, 233}:   "Apple, Inc.",
-       [3]byte{12, 79, 90}:    "ASA-RT s.r.l.",
-       [3]byte{12, 81, 1}:     "Apple, Inc.",
-       [3]byte{12, 81, 247}:   "CHAUVIN ARNOUX",
-       [3]byte{12, 82, 3}:     "AGM GROUP LIMITED",
-       [3]byte{12, 84, 165}:   "PEGATRON CORPORATION",
-       [3]byte{12, 84, 185}:   "Nokia",
-       [3]byte{12, 85, 33}:    "Axiros GmbH",
-       [3]byte{12, 86, 92}:    "HyBroad Vision (Hong Kong) Technology Co Ltd",
-       [3]byte{12, 87, 235}:   "Mueller Systems",
-       [3]byte{12, 88, 66}:    "DME Micro",
-       [3]byte{12, 90, 25}:    "Axtion Sdn Bhd",
-       [3]byte{12, 90, 158}:   "Wi-SUN Alliance",
-       [3]byte{12, 92, 216}:   "DOLI Elektronik GmbH",
-       [3]byte{12, 95, 53}:    "Niagara Video Corporation",
-       [3]byte{12, 96, 118}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{12, 97, 17}:    "Anda Technologies SAC",
-       [3]byte{12, 97, 39}:    "Actiontec Electronics, Inc",
-       [3]byte{12, 97, 207}:   "Texas Instruments",
-       [3]byte{12, 99, 252}:   "Nanjing Signway Technology Co., Ltd",
-       [3]byte{12, 104, 3}:    "Cisco Systems, Inc",
-       [3]byte{12, 106, 230}:  "Stanley Security Solutions",
-       [3]byte{12, 110, 79}:   "PrimeVOLT Co., Ltd.",
-       [3]byte{12, 111, 156}:  "Shaw Communications Inc.",
-       [3]byte{12, 113, 93}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{12, 114, 44}:   "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{12, 114, 217}:  "zte corporation",
-       [3]byte{12, 115, 190}:  "Dongguan Haimai Electronie Technology Co.,Ltd",
-       [3]byte{12, 116, 194}:  "Apple, Inc.",
-       [3]byte{12, 117, 35}:   "BEIJING GEHUA CATV NETWORK CO.,LTD",
-       [3]byte{12, 117, 108}:  "Anaren Microwave, Inc.",
-       [3]byte{12, 117, 189}:  "Cisco Systems, Inc",
-       [3]byte{12, 119, 26}:   "Apple, Inc.",
-       [3]byte{12, 125, 124}:  "Kexiang Information Technology Co, Ltd.",
-       [3]byte{12, 129, 18}:   "Private",
-       [3]byte{12, 130, 48}:   "SHENZHEN MAGNUS TECHNOLOGIES CO.,LTD",
-       [3]byte{12, 130, 104}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{12, 130, 106}:  "Wuhan Huagong Genuine Optics Technology Co., Ltd",
-       [3]byte{12, 132, 17}:   "A.O. Smith Water Products",
-       [3]byte{12, 132, 132}:  "Zenovia Electronics Inc.",
-       [3]byte{12, 132, 220}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{12, 133, 37}:   "Cisco Systems, Inc",
-       [3]byte{12, 134, 16}:   "Juniper Networks",
-       [3]byte{12, 137, 16}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{12, 138, 135}:  "AgLogica Holdings, Inc",
-       [3]byte{12, 139, 253}:  "Intel Corporate",
-       [3]byte{12, 140, 143}:  "Kamo Technology Limited",
-       [3]byte{12, 140, 220}:  "Suunto Oy",
-       [3]byte{12, 141, 152}:  "TOP EIGHT IND CORP",
-       [3]byte{12, 141, 219}:  "Cisco Meraki",
-       [3]byte{12, 143, 255}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{12, 145, 96}:   "Hui Zhou Gaoshengda Technology Co.,LTD",
-       [3]byte{12, 146, 78}:   "Rice Lake Weighing Systems",
-       [3]byte{12, 147, 1}:    "PT. Prasimax Inovasi Teknologi",
-       [3]byte{12, 147, 251}:  "BNS Solutions",
-       [3]byte{12, 150, 191}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{12, 152, 56}:   "Xiaomi Communications Co Ltd",
-       [3]byte{12, 155, 19}:   "Shanghai Magic Mobile Telecommunication Co.Ltd.",
-       [3]byte{12, 157, 86}:   "Consort Controls Ltd",
-       [3]byte{12, 158, 145}:  "Sankosha Corporation",
-       [3]byte{12, 161, 56}:   "Blinq Wireless Inc.",
-       [3]byte{12, 162, 244}:  "Chameleon Technology (UK) Limited",
-       [3]byte{12, 164, 2}:    "Alcatel-Lucent IPD",
-       [3]byte{12, 164, 42}:   "OB Telecom Electronic Technology Co., Ltd",
-       [3]byte{12, 166, 148}:  "Sunitec Enterprise Co.,Ltd",
-       [3]byte{12, 172, 5}:    "Unitend Technologies Inc.",
-       [3]byte{12, 175, 90}:   "GENUS POWER INFRASTRUCTURES LIMITED",
-       [3]byte{12, 178, 183}:  "Texas Instruments",
-       [3]byte{12, 179, 25}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{12, 180, 89}:   "Marketech International Corp.",
-       [3]byte{12, 180, 239}:  "Digience Co.,Ltd.",
-       [3]byte{12, 181, 222}:  "Alcatel Lucent",
-       [3]byte{12, 185, 18}:   "JM-DATA GmbH",
-       [3]byte{12, 185, 55}:   "Ubee Interactive Co., Limited",
-       [3]byte{12, 188, 159}:  "Apple, Inc.",
-       [3]byte{12, 189, 81}:   "TCT mobile ltd",
-       [3]byte{12, 191, 21}:   "Genetec Inc.",
-       [3]byte{12, 191, 63}:   "Shenzhen Lencotion Technology Co.,Ltd",
-       [3]byte{12, 192, 192}:  "MAGNETI MARELLI SISTEMAS ELECTRONICOS MEXICO",
-       [3]byte{12, 195, 167}:  "Meritec",
-       [3]byte{12, 196, 122}:  "Super Micro Computer, Inc.",
-       [3]byte{12, 196, 126}:  "EUCAST Co., Ltd.",
-       [3]byte{12, 198, 85}:   "Wuxi YSTen Technology Co.,Ltd.",
-       [3]byte{12, 198, 106}:  "Nokia Corporation",
-       [3]byte{12, 198, 172}:  "DAGS",
-       [3]byte{12, 199, 49}:   "Currant, Inc.",
-       [3]byte{12, 200, 31}:   "Summer Infant, Inc.",
-       [3]byte{12, 201, 198}:  "Samwin Hong Kong Limited",
-       [3]byte{12, 203, 141}:  "ASCO Numatics GmbH",
-       [3]byte{12, 204, 38}:   "Airenetworks",
-       [3]byte{12, 205, 211}:  "EASTRIVER TECHNOLOGY CO., LTD.",
-       [3]byte{12, 205, 251}:  "EDIC Systems Inc.",
-       [3]byte{12, 206, 246}:  "Guizhou Fortuneship Technology Co., Ltd",
-       [3]byte{12, 207, 209}:  "SPRINGWAVE Co., Ltd",
-       [3]byte{12, 210, 146}:  "Intel Corporate",
-       [3]byte{12, 210, 181}:  "Binatone Telecommunication Pvt. Ltd",
-       [3]byte{12, 213, 2}:    "Westell Technologies Inc.",
-       [3]byte{12, 214, 150}:  "Amimon Ltd",
-       [3]byte{12, 214, 189}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{12, 215, 70}:   "Apple, Inc.",
-       [3]byte{12, 215, 194}:  "Axium Technologies, Inc.",
-       [3]byte{12, 216, 108}:  "SHENZHEN FAST TECHNOLOGIES CO.,LTD",
-       [3]byte{12, 217, 150}:  "Cisco Systems, Inc",
-       [3]byte{12, 217, 193}:  "Visteon Corporation",
-       [3]byte{12, 218, 65}:   "Hangzhou H3C Technologies Co., Limited",
-       [3]byte{12, 220, 204}:  "Inala Technologies",
-       [3]byte{12, 221, 239}:  "Nokia Corporation",
-       [3]byte{12, 223, 164}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{12, 224, 228}:  "PLANTRONICS, INC.",
-       [3]byte{12, 229, 211}:  "DH electronics GmbH",
-       [3]byte{12, 231, 9}:    "Fox Crypto B.V.",
-       [3]byte{12, 231, 37}:   "Microsoft Corporation",
-       [3]byte{12, 232, 47}:   "Bonfiglioli Vectron GmbH",
-       [3]byte{12, 233, 54}:   "ELIMOS srl",
-       [3]byte{12, 234, 201}:  "ARRIS Group, Inc.",
-       [3]byte{12, 238, 230}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{12, 239, 124}:  "AnaCom Inc",
-       [3]byte{12, 239, 175}:  "IEEE Registration Authority",
-       [3]byte{12, 240, 25}:   "Malgn Technology Co., Ltd.",
-       [3]byte{12, 240, 180}:  "Globalsat International Technology Ltd",
-       [3]byte{12, 243, 97}:   "Java Information",
-       [3]byte{12, 243, 238}:  "EM Microelectronic",
-       [3]byte{12, 244, 5}:    "Beijing Signalway Technologies Co.,Ltd",
-       [3]byte{12, 244, 213}:  "Ruckus Wireless",
-       [3]byte{12, 245, 164}:  "Cisco Systems, Inc",
-       [3]byte{12, 248, 147}:  "ARRIS Group, Inc.",
-       [3]byte{12, 249, 192}:  "BSkyB Ltd",
-       [3]byte{12, 252, 131}:  "Airoha Technology Corp.,",
-       [3]byte{12, 253, 55}:   "SUSE Linux GmbH",
-       [3]byte{12, 254, 69}:   "Sony Interactive Entertainment Inc.",
-       [3]byte{16, 0, 0}:      "Private",
-       [3]byte{16, 0, 90}:     "IBM Corp",
-       [3]byte{16, 0, 232}:    "NATIONAL SEMICONDUCTOR",
-       [3]byte{16, 0, 253}:    "LaonPeople",
-       [3]byte{16, 1, 202}:    "Ashley Butterworth",
-       [3]byte{16, 2, 181}:    "Intel Corporate",
-       [3]byte{16, 5, 1}:      "PEGATRON CORPORATION",
-       [3]byte{16, 5, 177}:    "ARRIS Group, Inc.",
-       [3]byte{16, 5, 202}:    "Cisco Systems, Inc",
-       [3]byte{16, 7, 35}:     "IEEE Registration Authority",
-       [3]byte{16, 7, 182}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{16, 8, 177}:    "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{16, 9, 12}:     "Janome Sewing Machine Co., Ltd.",
-       [3]byte{16, 11, 169}:   "Intel Corporate",
-       [3]byte{16, 12, 36}:    "pomdevices, LLC",
-       [3]byte{16, 13, 47}:    "Online Security Pty. Ltd.",
-       [3]byte{16, 13, 50}:    "Embedian, Inc.",
-       [3]byte{16, 13, 127}:   "NETGEAR",
-       [3]byte{16, 14, 43}:    "NEC CASIO Mobile Communications",
-       [3]byte{16, 14, 126}:   "Juniper Networks",
-       [3]byte{16, 15, 24}:    "Fu Gang Electronic(KunShan)CO.,LTD",
-       [3]byte{16, 16, 182}:   "McCain Inc",
-       [3]byte{16, 18, 18}:    "Vivo International Corporation Pty Ltd",
-       [3]byte{16, 18, 24}:    "Korins Inc.",
-       [3]byte{16, 18, 72}:    "ITG, Inc.",
-       [3]byte{16, 18, 80}:    "Integrated Device Technology (Malaysia) Sdn. Bhd.",
-       [3]byte{16, 19, 49}:    "Technicolor",
-       [3]byte{16, 19, 238}:   "Justec International Technology INC.",
-       [3]byte{16, 24, 158}:   "Elmo Motion Control",
-       [3]byte{16, 27, 84}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{16, 28, 12}:    "Apple, Inc.",
-       [3]byte{16, 29, 81}:    "ON-Q LLC dba ON-Q Mesh Networks",
-       [3]byte{16, 29, 192}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{16, 31, 116}:   "Hewlett Packard",
-       [3]byte{16, 34, 121}:   "ZeroDesktop, Inc.",
-       [3]byte{16, 39, 190}:   "TVIP",
-       [3]byte{16, 40, 49}:    "Morion Inc.",
-       [3]byte{16, 42, 179}:   "Xiaomi Communications Co Ltd",
-       [3]byte{16, 44, 131}:   "XIMEA",
-       [3]byte{16, 45, 150}:   "Looxcie Inc.",
-       [3]byte{16, 46, 175}:   "Texas Instruments",
-       [3]byte{16, 47, 107}:   "Microsoft Corporation",
-       [3]byte{16, 48, 52}:    "Cara Systems",
-       [3]byte{16, 48, 71}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{16, 51, 120}:   "FLECTRON Co., LTD",
-       [3]byte{16, 55, 17}:    "Simlink AS",
-       [3]byte{16, 59, 89}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{16, 61, 234}:   "HFC Technology (Beijing) Ltd. Co.",
-       [3]byte{16, 64, 243}:   "Apple, Inc.",
-       [3]byte{16, 65, 127}:   "Apple, Inc.",
-       [3]byte{16, 67, 105}:   "Soundmax Electronic Limited",
-       [3]byte{16, 68, 0}:     "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{16, 68, 90}:    "Shaanxi Hitech Electronic Co., LTD",
-       [3]byte{16, 69, 190}:   "Norphonic AS",
-       [3]byte{16, 69, 248}:   "LNT-Automation GmbH",
-       [3]byte{16, 70, 180}:   "FormericaOE",
-       [3]byte{16, 71, 128}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{16, 72, 177}:   "Beijing Duokan Technology Limited",
-       [3]byte{16, 73, 99}:    "HARTING K.K.",
-       [3]byte{16, 74, 125}:   "Intel Corporate",
-       [3]byte{16, 75, 70}:    "Mitsubishi Electric Corporation",
-       [3]byte{16, 77, 119}:   "Innovative Computer Engineering",
-       [3]byte{16, 78, 7}:     "Shanghai Genvision Industries Co.,Ltd",
-       [3]byte{16, 78, 137}:   "Garmin International",
-       [3]byte{16, 79, 168}:   "Sony Corporation",
-       [3]byte{16, 81, 114}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{16, 86, 17}:    "ARRIS Group, Inc.",
-       [3]byte{16, 86, 202}:   "Peplink International Ltd.",
-       [3]byte{16, 88, 135}:   "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{16, 90, 247}:   "ADB Italia",
-       [3]byte{16, 92, 59}:    "Perma-Pipe, Inc.",
-       [3]byte{16, 92, 191}:   "DuroByte Inc",
-       [3]byte{16, 95, 6}:     "Actiontec Electronics, Inc",
-       [3]byte{16, 95, 73}:    "Cisco SPVTG",
-       [3]byte{16, 96, 75}:    "Hewlett Packard",
-       [3]byte{16, 98, 201}:   "Adatis GmbH & Co. KG",
-       [3]byte{16, 98, 208}:   "Technicolor CH USA Inc.",
-       [3]byte{16, 98, 235}:   "D-Link International",
-       [3]byte{16, 100, 226}:  "ADFweb.com s.r.l.",
-       [3]byte{16, 101, 163}:  "Core Brands LLC",
-       [3]byte{16, 101, 207}:  "IQSIM",
-       [3]byte{16, 102, 130}:  "NEC Platforms, Ltd.",
-       [3]byte{16, 104, 63}:   "LG Electronics (Mobile Communications)",
-       [3]byte{16, 111, 63}:   "BUFFALO.INC",
-       [3]byte{16, 111, 239}:  "Ad-Sol Nissin Corp",
-       [3]byte{16, 113, 249}:  "Cloud Telecomputers, LLC",
-       [3]byte{16, 114, 35}:   "TELLESCOM INDUSTRIA E COMERCIO EM TELECOMUNICACAO",
-       [3]byte{16, 118, 138}:  "EoCell",
-       [3]byte{16, 119, 176}:  "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{16, 119, 177}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{16, 120, 91}:   "Actiontec Electronics, Inc",
-       [3]byte{16, 120, 115}:  "Shenzhen Jinkeyi Communication Co., Ltd.",
-       [3]byte{16, 120, 206}:  "Hanvit SI, Inc.",
-       [3]byte{16, 120, 210}:  "Elitegroup Computer Systems Co.,Ltd.",
-       [3]byte{16, 122, 134}:  "U&U ENGINEERING INC.",
-       [3]byte{16, 123, 68}:   "ASUSTek COMPUTER INC.",
-       [3]byte{16, 123, 239}:  "Zyxel Communications Corporation",
-       [3]byte{16, 125, 26}:   "Dell Inc.",
-       [3]byte{16, 131, 210}:  "Microseven Systems, LLC",
-       [3]byte{16, 134, 140}:  "ARRIS Group, Inc.",
-       [3]byte{16, 136, 15}:   "Daruma Telecomunicações e Informática S.A.",
-       [3]byte{16, 136, 206}:  "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{16, 138, 27}:   "RAONIX Inc.",
-       [3]byte{16, 140, 207}:  "Cisco Systems, Inc",
-       [3]byte{16, 146, 102}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{16, 147, 233}:  "Apple, Inc.",
-       [3]byte{16, 149, 75}:   "Megabyte Ltd.",
-       [3]byte{16, 152, 54}:   "Dell Inc.",
-       [3]byte{16, 154, 185}:  "Tosibox Oy",
-       [3]byte{16, 154, 221}:  "Apple, Inc.",
-       [3]byte{16, 159, 169}:  "Actiontec Electronics, Inc",
-       [3]byte{16, 161, 59}:   "FUJIKURA RUBBER LTD.",
-       [3]byte{16, 164, 190}:  "SHENZHEN BILIAN ELECTRONIC CO.,LTD",
-       [3]byte{16, 165, 208}:  "Murata Manufacturing Co., Ltd.",
-       [3]byte{16, 166, 89}:   "Mobile Create Co.,Ltd.",
-       [3]byte{16, 167, 67}:   "SK Mtek Limited",
-       [3]byte{16, 169, 50}:   "Beijing Cyber Cloud Technology Co. ,Ltd.",
-       [3]byte{16, 174, 96}:   "Private",
-       [3]byte{16, 175, 120}:  "Shenzhen ATUE Technology Co., Ltd",
-       [3]byte{16, 177, 248}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{16, 178, 107}:  "base Co.,Ltd.",
-       [3]byte{16, 183, 19}:   "Private",
-       [3]byte{16, 183, 246}:  "Plastoform Industries Ltd.",
-       [3]byte{16, 185, 254}:  "Lika srl",
-       [3]byte{16, 186, 165}:  "GANA I&C CO., LTD",
-       [3]byte{16, 189, 24}:   "Cisco Systems, Inc",
-       [3]byte{16, 189, 85}:   "Q-Lab Corporation",
-       [3]byte{16, 190, 245}:  "D-Link International",
-       [3]byte{16, 191, 72}:   "ASUSTek COMPUTER INC.",
-       [3]byte{16, 192, 124}:  "Blu-ray Disc Association",
-       [3]byte{16, 194, 186}:  "UTT Co., Ltd.",
-       [3]byte{16, 195, 123}:  "ASUSTek COMPUTER INC.",
-       [3]byte{16, 197, 134}:  "BIO SOUND LAB CO., LTD.",
-       [3]byte{16, 198, 12}:   "Domino UK Ltd",
-       [3]byte{16, 198, 31}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{16, 198, 126}:  "SHENZHEN JUCHIN TECHNOLOGY CO., LTD",
-       [3]byte{16, 198, 252}:  "Garmin International",
-       [3]byte{16, 199, 63}:   "Midas Klark Teknik Ltd",
-       [3]byte{16, 202, 129}:  "PRECIA",
-       [3]byte{16, 204, 27}:   "Liverock technologies,INC",
-       [3]byte{16, 204, 219}:  "AXIMUM PRODUITS ELECTRONIQUES",
-       [3]byte{16, 205, 174}:  "Avaya Inc",
-       [3]byte{16, 205, 182}:  "Essential Products, Inc.",
-       [3]byte{16, 206, 169}:  "Texas Instruments",
-       [3]byte{16, 208, 122}:  "AMPAK Technology, Inc.",
-       [3]byte{16, 208, 171}:  "zte corporation",
-       [3]byte{16, 209, 220}:  "INSTAR Deutschland GmbH",
-       [3]byte{16, 211, 138}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{16, 213, 66}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{16, 218, 67}:   "NETGEAR",
-       [3]byte{16, 221, 177}:  "Apple, Inc.",
-       [3]byte{16, 221, 244}:  "Maxway Electronics CO.,LTD",
-       [3]byte{16, 222, 228}:  "automationNEXT GmbH",
-       [3]byte{16, 223, 139}:  "Shenzhen CareDear Communication Technology Co.,Ltd",
-       [3]byte{16, 226, 213}:  "Qi Hardware Inc.",
-       [3]byte{16, 227, 199}:  "Seohwa Telecom",
-       [3]byte{16, 228, 175}:  "APR, LLC",
-       [3]byte{16, 230, 143}:  "KWANGSUNG ELECTRONICS KOREA CO.,LTD.",
-       [3]byte{16, 230, 174}:  "Source Technologies, LLC",
-       [3]byte{16, 232, 120}:  "Nokia",
-       [3]byte{16, 232, 238}:  "PhaseSpace",
-       [3]byte{16, 234, 89}:   "Cisco SPVTG",
-       [3]byte{16, 238, 217}:  "Canoga Perkins Corporation",
-       [3]byte{16, 240, 5}:    "Intel Corporate",
-       [3]byte{16, 241, 99}:   "TNK CO.,LTD",
-       [3]byte{16, 241, 242}:  "LG Electronics (Mobile Communications)",
-       [3]byte{16, 243, 17}:   "Cisco Systems, Inc",
-       [3]byte{16, 243, 219}:  "Gridco Systems, Inc.",
-       [3]byte{16, 244, 154}:  "T3 Innovation",
-       [3]byte{16, 246, 129}:  "vivo Mobile Communication Co., Ltd.",
-       [3]byte{16, 249, 111}:  "LG Electronics (Mobile Communications)",
-       [3]byte{16, 249, 238}:  "Nokia Corporation",
-       [3]byte{16, 250, 206}:  "Reacheng Communication Technology Co.,Ltd",
-       [3]byte{16, 251, 240}:  "KangSheng LTD.",
-       [3]byte{16, 252, 84}:   "Shany Electronic Co., Ltd.",
-       [3]byte{16, 252, 182}:  "mirusystems CO.,LTD",
-       [3]byte{16, 254, 237}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{17, 0, 170}:    "Private",
-       [3]byte{17, 17, 17}:    "Private",
-       [3]byte{20, 2, 236}:    "Hewlett Packard Enterprise",
-       [3]byte{20, 4, 103}:    "SNK Technologies Co.,Ltd.",
-       [3]byte{20, 7, 8}:      "Private",
-       [3]byte{20, 7, 224}:    "Abrantix AG",
-       [3]byte{20, 12, 91}:    "PLNetworks",
-       [3]byte{20, 12, 118}:   "FREEBOX SAS",
-       [3]byte{20, 13, 79}:    "Flextronics International",
-       [3]byte{20, 16, 159}:   "Apple, Inc.",
-       [3]byte{20, 19, 48}:    "Anakreon UK LLP",
-       [3]byte{20, 19, 87}:    "ATP Electronics, Inc.",
-       [3]byte{20, 20, 75}:    "Ruijie Networks Co.,LTD",
-       [3]byte{20, 20, 230}:   "Ningbo Sanhe Digital Co.,Ltd",
-       [3]byte{20, 21, 124}:   "TOKYO COSMOS ELECTRIC CO.,LTD.",
-       [3]byte{20, 24, 119}:   "Dell Inc.",
-       [3]byte{20, 26, 81}:    "Treetech Sistemas Digitais",
-       [3]byte{20, 26, 163}:   "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{20, 27, 189}:   "Volex Inc.",
-       [3]byte{20, 27, 240}:   "Intellimedia Systems Ltd",
-       [3]byte{20, 31, 120}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{20, 31, 186}:   "IEEE Registration Authority",
-       [3]byte{20, 34, 219}:   "eero inc.",
-       [3]byte{20, 35, 215}:   "EUTRONIX CO., LTD.",
-       [3]byte{20, 40, 130}:   "MIDICOM ELECTRONICS CO.LTD",
-       [3]byte{20, 41, 113}:   "NEMOA ELECTRONICS (HK) CO. LTD",
-       [3]byte{20, 43, 210}:   "Armtel Ltd.",
-       [3]byte{20, 43, 214}:   "Guangdong Appscomm Co.,Ltd",
-       [3]byte{20, 45, 39}:    "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{20, 45, 139}:   "Incipio Technologies, Inc",
-       [3]byte{20, 45, 245}:   "Amphitech",
-       [3]byte{20, 47, 253}:   "LT SECURITY INC",
-       [3]byte{20, 48, 4}:     "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{20, 48, 122}:   "Avermetrics",
-       [3]byte{20, 48, 198}:   "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{20, 50, 209}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{20, 51, 101}:   "TEM Mobile Limited",
-       [3]byte{20, 53, 139}:   "Mediabridge Products, LLC.",
-       [3]byte{20, 53, 179}:   "Future Designs, Inc.",
-       [3]byte{20, 54, 5}:     "Nokia Corporation",
-       [3]byte{20, 54, 198}:   "Lenovo Mobile Communication Technology Ltd.",
-       [3]byte{20, 55, 59}:    "PROCOM Systems",
-       [3]byte{20, 58, 234}:   "Dynapower Company LLC",
-       [3]byte{20, 61, 242}:   "Beijing Shidai Hongyuan Network Communication Co.,Ltd",
-       [3]byte{20, 62, 96}:    "Nokia",
-       [3]byte{20, 62, 191}:   "zte corporation",
-       [3]byte{20, 63, 39}:    "Noccela Oy",
-       [3]byte{20, 65, 70}:    "Honeywell (China) Co., LTD",
-       [3]byte{20, 65, 226}:   "Monaco Enterprises, Inc.",
-       [3]byte{20, 67, 25}:    "Creative&Link Technology Limited",
-       [3]byte{20, 68, 74}:    "Apollo Seiko Ltd.",
-       [3]byte{20, 70, 228}:   "AVISTEL",
-       [3]byte{20, 72, 139}:   "Shenzhen Doov Technology Co.,Ltd",
-       [3]byte{20, 73, 120}:   "Digital Control Incorporated",
-       [3]byte{20, 73, 224}:   "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
-       [3]byte{20, 76, 26}:    "Max Communication GmbH",
-       [3]byte{20, 77, 103}:   "Zioncom Electronics (Shenzhen) Ltd.",
-       [3]byte{20, 79, 215}:   "IEEE Registration Authority",
-       [3]byte{20, 84, 18}:    "Entis Co., Ltd.",
-       [3]byte{20, 86, 69}:    "Savitech Corp.",
-       [3]byte{20, 86, 142}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{20, 88, 208}:   "Hewlett Packard",
-       [3]byte{20, 90, 5}:     "Apple, Inc.",
-       [3]byte{20, 90, 131}:   "Logi-D inc",
-       [3]byte{20, 91, 209}:   "ARRIS Group, Inc.",
-       [3]byte{20, 91, 225}:   "nyantec GmbH",
-       [3]byte{20, 94, 69}:    "Kaleao Limited",
-       [3]byte{20, 95, 148}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{20, 96, 128}:   "zte corporation",
-       [3]byte{20, 97, 2}:     "Alpine Electronics, Inc.",
-       [3]byte{20, 97, 47}:    "Avaya Inc",
-       [3]byte{20, 99, 8}:     "JABIL CIRCUIT (SHANGHAI) LTD.",
-       [3]byte{20, 106, 11}:   "Cypress Electronics Limited",
-       [3]byte{20, 107, 114}:  "Shenzhen Fortune Ship Technology Co., Ltd.",
-       [3]byte{20, 110, 10}:   "Private",
-       [3]byte{20, 115, 115}:  "TUBITAK UEKAE",
-       [3]byte{20, 116, 17}:   "RIM",
-       [3]byte{20, 117, 144}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{20, 120, 11}:   "PerkinElmer Technologies GmbH & Co. KG",
-       [3]byte{20, 121, 243}:  "China Mobile Group Device Co.,Ltd.",
-       [3]byte{20, 125, 179}:  "JOA TELECOM.CO.,LTD",
-       [3]byte{20, 125, 197}:  "Murata Manufacturing Co., Ltd.",
-       [3]byte{20, 130, 91}:   "Hefei Radio Communication Technology Co., Ltd",
-       [3]byte{20, 134, 146}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{20, 137, 62}:   "VIXTEL TECHNOLOGIES LIMTED",
-       [3]byte{20, 137, 81}:   "LCFC(HeFei) Electronics Technology co., ltd",
-       [3]byte{20, 137, 253}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{20, 138, 112}:  "ADS GmbH",
-       [3]byte{20, 143, 33}:   "Garmin International",
-       [3]byte{20, 143, 198}:  "Apple, Inc.",
-       [3]byte{20, 144, 144}:  "KongTop industrial(shen zhen)CO.,LTD",
-       [3]byte{20, 145, 130}:  "Belkin International Inc.",
-       [3]byte{20, 147, 70}:   "PNI sensor corporation",
-       [3]byte{20, 148, 72}:   "BLU CASTLE S.A.",
-       [3]byte{20, 152, 125}:  "Technicolor CH USA Inc.",
-       [3]byte{20, 153, 226}:  "Apple, Inc.",
-       [3]byte{20, 154, 16}:   "Microsoft Corporation",
-       [3]byte{20, 157, 9}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{20, 158, 207}:  "Dell Inc.",
-       [3]byte{20, 159, 60}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{20, 159, 182}:  "GUANGDONG GENIUS TECHNOLOGY CO.,LTD.",
-       [3]byte{20, 159, 232}:  "Lenovo Mobile Communication Technology Ltd.",
-       [3]byte{20, 160, 248}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{20, 163, 100}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{20, 165, 26}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{20, 166, 44}:   "S.M. Dezac S.A.",
-       [3]byte{20, 167, 139}:  "Zhejiang Dahua Technology Co., Ltd.",
-       [3]byte{20, 168, 107}:  "ShenZhen Telacom Science&Technology Co., Ltd",
-       [3]byte{20, 169, 227}:  "MST CORPORATION",
-       [3]byte{20, 171, 197}:  "Intel Corporate",
-       [3]byte{20, 171, 240}:  "ARRIS Group, Inc.",
-       [3]byte{20, 174, 219}:  "VTech Telecommunications Ltd.",
-       [3]byte{20, 177, 38}:   "Industrial Software Co",
-       [3]byte{20, 177, 200}:  "InfiniWing, Inc.",
-       [3]byte{20, 179, 31}:   "Dell Inc.",
-       [3]byte{20, 179, 112}:  "Gigaset Digital Technology (Shenzhen) Co., Ltd.",
-       [3]byte{20, 180, 132}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{20, 183, 61}:   "ARCHEAN Technologies",
-       [3]byte{20, 183, 248}:  "Technicolor CH USA Inc.",
-       [3]byte{20, 184, 55}:   "Shenzhen YOUHUA Technology Co., Ltd",
-       [3]byte{20, 185, 104}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{20, 187, 110}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{20, 189, 97}:   "Apple, Inc.",
-       [3]byte{20, 192, 137}:  "DUNE HD LTD",
-       [3]byte{20, 193, 38}:   "Nokia Corporation",
-       [3]byte{20, 193, 255}:  "ShenZhen QianHai Comlan communication Co.,LTD",
-       [3]byte{20, 194, 29}:   "Sabtech Industries",
-       [3]byte{20, 195, 194}:  "K.A. Schmersal GmbH & Co. KG",
-       [3]byte{20, 201, 19}:   "LG Electronics",
-       [3]byte{20, 204, 32}:   "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{20, 207, 141}:  "OHSUNG",
-       [3]byte{20, 207, 146}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{20, 207, 226}:  "ARRIS Group, Inc.",
-       [3]byte{20, 209, 31}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{20, 212, 254}:  "ARRIS Group, Inc.",
-       [3]byte{20, 214, 77}:   "D-Link International",
-       [3]byte{20, 215, 110}:  "CONCH ELECTRONIC Co.,Ltd",
-       [3]byte{20, 218, 233}:  "ASUSTek COMPUTER INC.",
-       [3]byte{20, 219, 133}:  "S NET MEDIA",
-       [3]byte{20, 221, 169}:  "ASUSTek COMPUTER INC.",
-       [3]byte{20, 221, 229}:  "MPMKVVCL",
-       [3]byte{20, 228, 236}:  "mLogic LLC",
-       [3]byte{20, 230, 228}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{20, 231, 200}:  "Integrated Device Technology (Malaysia) Sdn. Bhd.",
-       [3]byte{20, 235, 51}:   "BSMediasoft Co., Ltd.",
-       [3]byte{20, 237, 165}:  "Wächter GmbH Sicherheitssysteme",
-       [3]byte{20, 237, 187}:  "2Wire Inc",
-       [3]byte{20, 237, 228}:  "Kaiam Corporation",
-       [3]byte{20, 238, 157}:  "AirNav Systems LLC",
-       [3]byte{20, 240, 197}:  "Xtremio Ltd.",
-       [3]byte{20, 242, 142}:  "ShenYang ZhongKe-Allwin Technology Co.LTD",
-       [3]byte{20, 244, 42}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{20, 246, 90}:   "Xiaomi Communications Co Ltd",
-       [3]byte{20, 248, 147}:  "Wuhan FiberHome Digital Technology Co.,Ltd.",
-       [3]byte{20, 254, 175}:  "SAGITTAR LIMITED",
-       [3]byte{20, 254, 181}:  "Dell Inc.",
-       [3]byte{24, 0, 45}:     "Sony Mobile Communications AB",
-       [3]byte{24, 0, 219}:    "Fitbit Inc.",
-       [3]byte{24, 1, 125}:    "Harbin Arteor technology co., LTD",
-       [3]byte{24, 1, 227}:    "Bittium Wireless Ltd",
-       [3]byte{24, 3, 115}:    "Dell Inc.",
-       [3]byte{24, 3, 250}:    "IBT Interfaces",
-       [3]byte{24, 6, 117}:    "Dilax Intelcom GmbH",
-       [3]byte{24, 6, 255}:    "Acer Computer(Shanghai) Limited.",
-       [3]byte{24, 11, 82}:    "Nanotron Technologies GmbH",
-       [3]byte{24, 12, 20}:    "iSonea Limited",
-       [3]byte{24, 12, 119}:   "Westinghouse Electric Company, LLC",
-       [3]byte{24, 12, 172}:   "CANON INC.",
-       [3]byte{24, 16, 78}:    "CEDINT-UPM",
-       [3]byte{24, 18, 18}:    "Cepton Technologies",
-       [3]byte{24, 20, 32}:    "TEB SAS",
-       [3]byte{24, 20, 86}:    "Nokia Corporation",
-       [3]byte{24, 22, 201}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{24, 23, 20}:    "DAEWOOIS",
-       [3]byte{24, 23, 37}:    "Cameo Communications, Inc.",
-       [3]byte{24, 25, 63}:    "Tamtron Oy",
-       [3]byte{24, 27, 235}:   "Actiontec Electronics, Inc",
-       [3]byte{24, 30, 120}:   "Sagemcom Broadband SAS",
-       [3]byte{24, 30, 176}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{24, 32, 18}:    "Aztech Associates Inc.",
-       [3]byte{24, 32, 50}:    "Apple, Inc.",
-       [3]byte{24, 32, 76}:    "Kummler+Matter AG",
-       [3]byte{24, 32, 166}:   "Sage Co., Ltd.",
-       [3]byte{24, 33, 149}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{24, 34, 126}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{24, 38, 102}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{24, 40, 97}:    "AirTies Wireless Networks",
-       [3]byte{24, 42, 123}:   "Nintendo Co., Ltd.",
-       [3]byte{24, 43, 5}:     "8D Technologies",
-       [3]byte{24, 44, 145}:   "Concept Development, Inc.",
-       [3]byte{24, 44, 180}:   "Nectarsoft Co., Ltd.",
-       [3]byte{24, 45, 152}:   "Jinwoo Industrial system",
-       [3]byte{24, 48, 9}:     "Woojin Industrial Systems Co., Ltd.",
-       [3]byte{24, 50, 162}:   "LAON TECHNOLOGY CO., LTD.",
-       [3]byte{24, 51, 157}:   "Cisco Systems, Inc",
-       [3]byte{24, 52, 81}:    "Apple, Inc.",
-       [3]byte{24, 53, 209}:   "ARRIS Group, Inc.",
-       [3]byte{24, 54, 252}:   "Elecsys International Corporation",
-       [3]byte{24, 56, 37}:    "Wuhan Lingjiu High-tech Co.,Ltd.",
-       [3]byte{24, 56, 100}:   "CAP-TECH INTERNATIONAL CO., LTD.",
-       [3]byte{24, 57, 25}:    "Unicoi Systems",
-       [3]byte{24, 57, 110}:   "SUNSEA TELECOMMUNICATIONS CO.,LTD.",
-       [3]byte{24, 58, 45}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{24, 59, 210}:   "BYD Precision Manufacture Company Ltd.",
-       [3]byte{24, 61, 162}:   "Intel Corporate",
-       [3]byte{24, 63, 71}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{24, 64, 164}:   "Shenzhen Trylong Smart Science and Technology Co., Ltd.",
-       [3]byte{24, 66, 29}:    "Private",
-       [3]byte{24, 66, 47}:    "Alcatel Lucent",
-       [3]byte{24, 68, 98}:    "Riava Networks, Inc.",
-       [3]byte{24, 68, 230}:   "zte corporation",
-       [3]byte{24, 70, 23}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{24, 72, 216}:   "Fastback Networks",
-       [3]byte{24, 74, 111}:   "Alcatel-Lucent Shanghai Bell Co., Ltd",
-       [3]byte{24, 78, 148}:   "MESSOA TECHNOLOGIES INC.",
-       [3]byte{24, 79, 50}:    "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{24, 82, 7}:     "SICHUAN TIANYI COMHEART TELECOMCO., LTD",
-       [3]byte{24, 82, 83}:    "Pixord Corporation",
-       [3]byte{24, 82, 130}:   "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{24, 83, 224}:   "Hanyang Digitech Co.Ltd",
-       [3]byte{24, 85, 15}:    "Cisco SPVTG",
-       [3]byte{24, 89, 51}:    "Cisco SPVTG",
-       [3]byte{24, 89, 54}:    "Xiaomi Communications Co Ltd",
-       [3]byte{24, 90, 232}:   "Zenotech.Co.,Ltd",
-       [3]byte{24, 93, 154}:   "BobjGear LLC",
-       [3]byte{24, 94, 15}:    "Intel Corporate",
-       [3]byte{24, 96, 36}:    "Hewlett Packard",
-       [3]byte{24, 97, 199}:   "lemonbeat GmbH",
-       [3]byte{24, 98, 44}:    "Sagemcom Broadband SAS",
-       [3]byte{24, 100, 114}:  "Aruba Networks",
-       [3]byte{24, 101, 113}:  "Top Victory Electronics (Taiwan) Co., Ltd.",
-       [3]byte{24, 101, 144}:  "Apple, Inc.",
-       [3]byte{24, 102, 218}:  "Dell Inc.",
-       [3]byte{24, 102, 227}:  "Veros Systems, Inc.",
-       [3]byte{24, 103, 63}:   "Hanover Displays Limited",
-       [3]byte{24, 103, 81}:   "KOMEG Industrielle Messtechnik GmbH",
-       [3]byte{24, 103, 176}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{24, 104, 106}:  "zte corporation",
-       [3]byte{24, 104, 130}:  "Beward R&D Co., Ltd.",
-       [3]byte{24, 104, 203}:  "Hangzhou Hikvision Digital Technology Co.,Ltd.",
-       [3]byte{24, 109, 153}:  "Adanis Inc.",
-       [3]byte{24, 113, 23}:   "eta plus electronic gmbh",
-       [3]byte{24, 116, 46}:   "Amazon Technologies Inc.",
-       [3]byte{24, 117, 50}:   "SICHUAN TIANYI COMHEART TELECOMCO., LTD",
-       [3]byte{24, 121, 162}:  "GMJ ELECTRIC LIMITED",
-       [3]byte{24, 122, 147}:  "AMICCOM Electronics Corporation",
-       [3]byte{24, 124, 129}:  "Valeo Vision Systems",
-       [3]byte{24, 126, 213}:  "shenzhen kaism technology Co. Ltd",
-       [3]byte{24, 128, 144}:  "Cisco Systems, Inc",
-       [3]byte{24, 128, 206}:  "Barberry Solutions Ltd",
-       [3]byte{24, 128, 245}:  "Alcatel-Lucent Shanghai Bell Co., Ltd",
-       [3]byte{24, 130, 25}:   "Alibaba Cloud Computing Ltd.",
-       [3]byte{24, 131, 49}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{24, 131, 191}:  "Arcadyan Technology Corporation",
-       [3]byte{24, 132, 16}:   "CoreTrust Inc.",
-       [3]byte{24, 134, 58}:   "DIGITAL ART SYSTEM",
-       [3]byte{24, 134, 172}:  "Nokia Danmark A/S",
-       [3]byte{24, 135, 150}:  "HTC Corporation",
-       [3]byte{24, 136, 87}:   "Beijing Jinhong Xi-Dian Information Technology Corp.",
-       [3]byte{24, 137, 91}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{24, 137, 223}:  "CerebrEX Inc.",
-       [3]byte{24, 139, 21}:   "ShenZhen ZhongRuiJing Technology co.,LTD",
-       [3]byte{24, 139, 69}:   "Cisco Systems, Inc",
-       [3]byte{24, 139, 157}:  "Cisco Systems, Inc",
-       [3]byte{24, 142, 213}:  "TP Vision Belgium N.V. - innovation site Brugge",
-       [3]byte{24, 142, 249}:  "G2C Co. Ltd.",
-       [3]byte{24, 144, 216}:  "Sagemcom Broadband SAS",
-       [3]byte{24, 146, 44}:   "Virtual Instruments",
-       [3]byte{24, 147, 215}:  "Texas Instruments",
-       [3]byte{24, 151, 255}:  "TechFaith Wireless Technology Limited",
-       [3]byte{24, 153, 245}:  "Sichuan Changhong Electric Ltd.",
-       [3]byte{24, 154, 103}:  "CSE-Servelec Limited",
-       [3]byte{24, 155, 165}:  "IEEE Registration Authority",
-       [3]byte{24, 156, 93}:   "Cisco Systems, Inc",
-       [3]byte{24, 158, 252}:  "Apple, Inc.",
-       [3]byte{24, 163, 232}:  "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{24, 166, 247}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{24, 169, 5}:    "Hewlett Packard",
-       [3]byte{24, 169, 88}:   "PROVISION THAI CO., LTD.",
-       [3]byte{24, 169, 155}:  "Dell Inc.",
-       [3]byte{24, 170, 69}:   "Fon Technology",
-       [3]byte{24, 171, 245}:  "Ultra Electronics Electrics",
-       [3]byte{24, 173, 77}:   "Polostar Technology Corporation",
-       [3]byte{24, 174, 187}:  "Siemens Convergence Creators GmbH&Co.KG",
-       [3]byte{24, 175, 97}:   "Apple, Inc.",
-       [3]byte{24, 175, 143}:  "Apple, Inc.",
-       [3]byte{24, 175, 159}:  "DIGITRONIC Automationsanlagen GmbH",
-       [3]byte{24, 177, 105}:  "Sonicwall",
-       [3]byte{24, 178, 9}:    "Torrey Pines Logic, Inc",
-       [3]byte{24, 179, 186}:  "Netlogic AB",
-       [3]byte{24, 180, 48}:   "Nest Labs Inc.",
-       [3]byte{24, 181, 145}:  "I-Storm",
-       [3]byte{24, 183, 158}:  "Invoxia",
-       [3]byte{24, 184, 31}:   "ARRIS Group, Inc.",
-       [3]byte{24, 188, 90}:   "Zhejiang Tmall Technology Co., Ltd.",
-       [3]byte{24, 189, 173}:  "L-TECH CORPORATION",
-       [3]byte{24, 192, 134}:  "Broadcom",
-       [3]byte{24, 193, 157}:  "Integrated Device Technology (Malaysia) Sdn. Bhd.",
-       [3]byte{24, 196, 81}:   "Tucson Embedded Systems",
-       [3]byte{24, 197, 1}:    "SHENZHEN GONGJIN ELECTRONICS CO.,LT",
-       [3]byte{24, 197, 138}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{24, 200, 231}:  "Shenzhen Hualistone Technology Co.,Ltd",
-       [3]byte{24, 204, 35}:   "Philio Technology Corporation",
-       [3]byte{24, 204, 136}:  "Hitachi Johnson Controls Air",
-       [3]byte{24, 207, 94}:   "Liteon Technology Corporation",
-       [3]byte{24, 208, 113}:  "DASAN CO., LTD.",
-       [3]byte{24, 210, 37}:   "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{24, 210, 118}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{24, 213, 182}:  "SMG Holdings LLC",
-       [3]byte{24, 214, 106}:  "Inmarsat",
-       [3]byte{24, 214, 199}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{24, 214, 207}:  "Kurth Electronic GmbH",
-       [3]byte{24, 217, 73}:   "Qvis Labs, LLC",
-       [3]byte{24, 219, 242}:  "Dell Inc.",
-       [3]byte{24, 220, 86}:   "Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd",
-       [3]byte{24, 222, 215}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{24, 226, 136}:  "STT Condigi",
-       [3]byte{24, 226, 159}:  "vivo Mobile Communication Co., Ltd.",
-       [3]byte{24, 226, 194}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{24, 227, 188}:  "TCT mobile ltd",
-       [3]byte{24, 231, 40}:   "Cisco Systems, Inc",
-       [3]byte{24, 231, 244}:  "Apple, Inc.",
-       [3]byte{24, 232, 15}:   "Viking Electronics Inc.",
-       [3]byte{24, 232, 221}:  "MODULETEK",
-       [3]byte{24, 238, 105}:  "Apple, Inc.",
-       [3]byte{24, 239, 99}:   "Cisco Systems, Inc",
-       [3]byte{24, 240, 228}:  "Xiaomi Communications Co Ltd",
-       [3]byte{24, 241, 69}:   "NetComm Wireless Limited",
-       [3]byte{24, 242, 146}:  "Shannon Systems",
-       [3]byte{24, 244, 106}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{24, 246, 67}:   "Apple, Inc.",
-       [3]byte{24, 246, 80}:   "Multimedia Pacific Limited",
-       [3]byte{24, 247, 107}:  "Zhejiang Winsight Technology CO.,LTD",
-       [3]byte{24, 248, 122}:  "i3 International Inc.",
-       [3]byte{24, 250, 111}:  "ISC applied systems corp",
-       [3]byte{24, 251, 123}:  "Dell Inc.",
-       [3]byte{24, 252, 159}:  "Changhe Electronics Co., Ltd.",
-       [3]byte{24, 254, 52}:   "Espressif Inc.",
-       [3]byte{24, 255, 15}:   "Intel Corporate",
-       [3]byte{24, 255, 46}:   "Shenzhen Rui Ying Da Technology Co., Ltd",
-       [3]byte{28, 6, 86}:     "IDY Corporation",
-       [3]byte{28, 8, 193}:    "Lg Innotek",
-       [3]byte{28, 11, 82}:    "EPICOM S.A",
-       [3]byte{28, 15, 175}:   "Lucid Vision Labs",
-       [3]byte{28, 15, 207}:   "Sypro Optics GmbH",
-       [3]byte{28, 17, 225}:   "Wartsila Finland Oy",
-       [3]byte{28, 18, 157}:   "IEEE PES PSRC/SUB",
-       [3]byte{28, 20, 72}:    "ARRIS Group, Inc.",
-       [3]byte{28, 20, 179}:   "Airwire Technologies",
-       [3]byte{28, 21, 31}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{28, 23, 211}:   "Cisco Systems, Inc",
-       [3]byte{28, 24, 74}:    "ShenZhen RicherLink Technologies Co.,LTD",
-       [3]byte{28, 25, 222}:   "eyevis GmbH",
-       [3]byte{28, 26, 192}:   "Apple, Inc.",
-       [3]byte{28, 27, 13}:    "GIGA-BYTE TECHNOLOGY CO.,LTD.",
-       [3]byte{28, 27, 104}:   "ARRIS Group, Inc.",
-       [3]byte{28, 28, 253}:   "Dalian Hi-Think Computer Technology, Corp",
-       [3]byte{28, 29, 103}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{28, 29, 134}:   "Cisco Systems, Inc",
-       [3]byte{28, 30, 227}:   "Hui Zhou Gaoshengda Technology Co.,LTD",
-       [3]byte{28, 31, 212}:   "LifeBEAM Technologies LTD",
-       [3]byte{28, 33, 209}:   "IEEE Registration Authority",
-       [3]byte{28, 35, 44}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{28, 35, 79}:    "EDMI  Europe Ltd",
-       [3]byte{28, 37, 225}:   "China Mobile IOT Company Limited",
-       [3]byte{28, 39, 221}:   "Datang Gohighsec(zhejiang)Information Technology Co.,Ltd.",
-       [3]byte{28, 51, 14}:    "PernixData",
-       [3]byte{28, 51, 77}:    "ITS Telecom",
-       [3]byte{28, 52, 119}:   "Innovation Wireless",
-       [3]byte{28, 53, 241}:   "NEW Lift Neue Elektronische Wege Steuerungsbau GmbH",
-       [3]byte{28, 54, 187}:   "Apple, Inc.",
-       [3]byte{28, 55, 191}:   "Cloudium Systems Ltd.",
-       [3]byte{28, 57, 71}:    "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
-       [3]byte{28, 57, 138}:   "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{28, 58, 79}:    "AccuSpec Electronics, LLC",
-       [3]byte{28, 58, 222}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{28, 61, 231}:   "Sigma Koki Co.,Ltd.",
-       [3]byte{28, 62, 132}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{28, 64, 36}:    "Dell Inc.",
-       [3]byte{28, 64, 232}:   "SHENZHEN PROGRESS&WIN TECHNOLOGY CO.,LTD",
-       [3]byte{28, 65, 88}:    "Gemalto M2M GmbH",
-       [3]byte{28, 67, 236}:   "JAPAN CIRCUIT CO.,LTD",
-       [3]byte{28, 68, 25}:    "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{28, 69, 147}:   "Texas Instruments",
-       [3]byte{28, 72, 64}:    "IMS Messsysteme GmbH",
-       [3]byte{28, 72, 206}:   "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{28, 72, 249}:   "GN Netcom A/S",
-       [3]byte{28, 73, 123}:   "Gemtek Technology Co., Ltd.",
-       [3]byte{28, 74, 247}:   "AMON INC",
-       [3]byte{28, 75, 185}:   "SMG ENTERPRISE, LLC",
-       [3]byte{28, 75, 214}:   "AzureWave Technology Inc.",
-       [3]byte{28, 77, 112}:   "Intel Corporate",
-       [3]byte{28, 81, 181}:   "Techaya LTD",
-       [3]byte{28, 82, 22}:    "DONGGUAN HELE ELECTRONICS CO., LTD",
-       [3]byte{28, 82, 214}:   "FLAT DISPLAY TECHNOLOGY CORPORATION",
-       [3]byte{28, 85, 58}:    "QianGua Corp.",
-       [3]byte{28, 86, 254}:   "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{28, 87, 216}:   "Kraftway Corporation PLC",
-       [3]byte{28, 90, 11}:    "Tegile Systems",
-       [3]byte{28, 90, 62}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{28, 90, 107}:   "Philips Electronics Nederland BV",
-       [3]byte{28, 92, 85}:    "PRIMA Cinema, Inc",
-       [3]byte{28, 92, 96}:    "Shenzhen Belzon Technology Co.,LTD.",
-       [3]byte{28, 92, 242}:   "Apple, Inc.",
-       [3]byte{28, 95, 43}:    "D-Link International",
-       [3]byte{28, 95, 255}:   "Beijing Ereneben Information Technology Co.,Ltd Shenzhen Branch",
-       [3]byte{28, 96, 222}:   "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.",
-       [3]byte{28, 98, 184}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{28, 99, 183}:   "OpenProducts 237 AB",
-       [3]byte{28, 101, 157}:  "Liteon Technology Corporation",
-       [3]byte{28, 102, 109}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{28, 102, 170}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{28, 103, 88}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{28, 105, 165}:  "BlackBerry RTS",
-       [3]byte{28, 106, 122}:  "Cisco Systems, Inc",
-       [3]byte{28, 107, 202}:  "Mitsunami Co., Ltd.",
-       [3]byte{28, 110, 76}:   "Logistic Service & Engineering Co.,Ltd",
-       [3]byte{28, 110, 118}:  "Quarion Technology Inc",
-       [3]byte{28, 111, 101}:  "GIGA-BYTE TECHNOLOGY CO.,LTD.",
-       [3]byte{28, 112, 34}:   "Murata Manufacturing Co., Ltd.",
-       [3]byte{28, 115, 40}:   "Connected Home",
-       [3]byte{28, 115, 112}:  "Neotech",
-       [3]byte{28, 116, 13}:   "Zyxel Communications Corporation",
-       [3]byte{28, 117, 8}:    "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
-       [3]byte{28, 118, 202}:  "Terasic Technologies Inc.",
-       [3]byte{28, 119, 246}:  "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{28, 120, 57}:   "Shenzhen Tencent Computer System Co., Ltd.",
-       [3]byte{28, 123, 33}:   "Sony Mobile Communications AB",
-       [3]byte{28, 123, 35}:   "Qingdao Hisense Communications Co.,Ltd.",
-       [3]byte{28, 124, 17}:   "EID",
-       [3]byte{28, 124, 69}:   "Vitek Industrial Video Products, Inc.",
-       [3]byte{28, 124, 199}:  "Coriant GmbH",
-       [3]byte{28, 125, 34}:   "Fuji Xerox Co., Ltd.",
-       [3]byte{28, 126, 81}:   "3bumen.com",
-       [3]byte{28, 126, 229}:  "D-Link International",
-       [3]byte{28, 131, 65}:   "Hefei Bitland Information Technology Co.Ltd",
-       [3]byte{28, 131, 176}:  "Linked IP GmbH",
-       [3]byte{28, 132, 100}:  "FORMOSA WIRELESS COMMUNICATION CORP.",
-       [3]byte{28, 134, 173}:  "MCT CO., LTD.",
-       [3]byte{28, 135, 44}:   "ASUSTek COMPUTER INC.",
-       [3]byte{28, 142, 92}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{28, 142, 142}:  "DB Communication & Systems Co., ltd.",
-       [3]byte{28, 143, 138}:  "Phase Motion Control SpA",
-       [3]byte{28, 145, 72}:   "Apple, Inc.",
-       [3]byte{28, 145, 121}:  "Integrated System Technologies Ltd",
-       [3]byte{28, 148, 146}:  "RUAG Schweiz AG",
-       [3]byte{28, 149, 93}:   "I-LAX ELECTRONICS INC.",
-       [3]byte{28, 149, 159}:  "Veethree Electronics And Marine LLC",
-       [3]byte{28, 150, 90}:   "Weifang GoerTek Technology Co.,Ltd.",
-       [3]byte{28, 151, 61}:   "PRICOM Design",
-       [3]byte{28, 152, 236}:  "Hewlett Packard Enterprise",
-       [3]byte{28, 153, 76}:   "Murata Manufacturing Co., Ltd.",
-       [3]byte{28, 156, 38}:   "Zoovel Technologies",
-       [3]byte{28, 157, 62}:   "Integrated Device Technology (Malaysia) Sdn. Bhd.",
-       [3]byte{28, 158, 70}:   "Apple, Inc.",
-       [3]byte{28, 158, 203}:  "Beijing Nari Smartchip Microelectronics Company Limited",
-       [3]byte{28, 160, 211}:  "IEEE Registration Authority",
-       [3]byte{28, 162, 177}:  "ruwido austria gmbh",
-       [3]byte{28, 165, 50}:   "SHENZHEN GONGJIN ELECTRONICS CO.,LT",
-       [3]byte{28, 167, 112}:  "SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD",
-       [3]byte{28, 170, 7}:    "Cisco Systems, Inc",
-       [3]byte{28, 171, 1}:    "Innovolt",
-       [3]byte{28, 171, 52}:   "New H3C Technologies Co., Ltd",
-       [3]byte{28, 171, 167}:  "Apple, Inc.",
-       [3]byte{28, 171, 192}:  "Hitron Technologies. Inc",
-       [3]byte{28, 173, 209}:  "Bosung Electronics Co., Ltd.",
-       [3]byte{28, 175, 5}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{28, 175, 247}:  "D-Link International",
-       [3]byte{28, 176, 148}:  "HTC Corporation",
-       [3]byte{28, 177, 127}:  "NEC Platforms, Ltd.",
-       [3]byte{28, 178, 67}:   "TDC A/S",
-       [3]byte{28, 183, 44}:   "ASUSTek COMPUTER INC.",
-       [3]byte{28, 184, 87}:   "Becon Technologies Co,.Ltd.",
-       [3]byte{28, 185, 196}:  "Ruckus Wireless",
-       [3]byte{28, 186, 140}:  "Texas Instruments",
-       [3]byte{28, 187, 168}:  "OJSC Ufimskiy Zavod Promsvyaz",
-       [3]byte{28, 189, 14}:   "Amplified Engineering Pty Ltd",
-       [3]byte{28, 189, 185}:  "D-Link International",
-       [3]byte{28, 192, 53}:   "PLANEX COMMUNICATIONS INC.",
-       [3]byte{28, 192, 225}:  "IEEE Registration Authority",
-       [3]byte{28, 193, 26}:   "Wavetronix",
-       [3]byte{28, 193, 222}:  "Hewlett Packard",
-       [3]byte{28, 195, 22}:   "MileSight Technology Co., Ltd.",
-       [3]byte{28, 197, 134}:  "Absolute Acoustics",
-       [3]byte{28, 198, 60}:   "Arcadyan Technology Corporation",
-       [3]byte{28, 199, 45}:   "Shenzhen Huapu Digital CO.,Ltd",
-       [3]byte{28, 202, 227}:  "IEEE Registration Authority",
-       [3]byte{28, 203, 153}:  "TCT mobile ltd",
-       [3]byte{28, 205, 229}:  "Shanghai Wind Technologies Co.,Ltd",
-       [3]byte{28, 212, 12}:   "Kriwan Industrie-Elektronik GmbH",
-       [3]byte{28, 214, 189}:  "LEEDARSON LIGHTING CO., LTD.",
-       [3]byte{28, 218, 39}:   "vivo Mobile Communication Co., Ltd.",
-       [3]byte{28, 221, 234}:  "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{28, 222, 167}:  "Cisco Systems, Inc",
-       [3]byte{28, 223, 15}:   "Cisco Systems, Inc",
-       [3]byte{28, 223, 82}:   "Texas Instruments",
-       [3]byte{28, 225, 101}:  "Marshal Corporation",
-       [3]byte{28, 225, 146}:  "Qisda Corporation",
-       [3]byte{28, 226, 204}:  "Texas Instruments",
-       [3]byte{28, 230, 43}:   "Apple, Inc.",
-       [3]byte{28, 230, 199}:  "Cisco Systems, Inc",
-       [3]byte{28, 232, 93}:   "Cisco Systems, Inc",
-       [3]byte{28, 234, 27}:   "Nokia",
-       [3]byte{28, 238, 201}:  "Elo touch solutions",
-       [3]byte{28, 238, 232}:  "Ilshin Elecom",
-       [3]byte{28, 239, 206}:  "bebro electronic GmbH",
-       [3]byte{28, 240, 62}:   "Wearhaus Inc.",
-       [3]byte{28, 240, 97}:   "SCAPS GmbH",
-       [3]byte{28, 244, 202}:  "Private",
-       [3]byte{28, 245, 231}:  "Turtle Industry Co., Ltd.",
-       [3]byte{28, 250, 104}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{28, 252, 187}:  "Realfiction ApS",
-       [3]byte{28, 254, 167}:  "IDentytech Solutins Ltd.",
-       [3]byte{32, 1, 79}:     "Linea Research Ltd",
-       [3]byte{32, 2, 175}:    "Murata Manufacturing Co., Ltd.",
-       [3]byte{32, 4, 15}:     "Dell Inc.",
-       [3]byte{32, 5, 5}:      "RADMAX COMMUNICATION PRIVATE LIMITED",
-       [3]byte{32, 5, 232}:    "OOO InProMedia",
-       [3]byte{32, 8, 237}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{32, 10, 94}:    "Xiangshan Giant Eagle Technology Developing Co., Ltd.",
-       [3]byte{32, 11, 199}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{32, 12, 200}:   "NETGEAR",
-       [3]byte{32, 14, 149}:   "IEC – TC9 WG43",
-       [3]byte{32, 16, 122}:   "Gemtek Technology Co., Ltd.",
-       [3]byte{32, 18, 87}:    "Most Lucky Trading Ltd",
-       [3]byte{32, 18, 213}:   "Scientech Materials Corporation",
-       [3]byte{32, 19, 224}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{32, 22, 216}:   "Liteon Technology Corporation",
-       [3]byte{32, 24, 14}:    "Shenzhen Sunchip Technology Co., Ltd",
-       [3]byte{32, 26, 6}:     "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
-       [3]byte{32, 29, 3}:     "Elatec GmbH",
-       [3]byte{32, 33, 165}:   "LG Electronics (Mobile Communications)",
-       [3]byte{32, 37, 100}:   "PEGATRON CORPORATION",
-       [3]byte{32, 37, 152}:   "Teleview",
-       [3]byte{32, 40, 188}:   "Visionscape Co,. Ltd.",
-       [3]byte{32, 43, 193}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{32, 44, 183}:   "Kong Yue Electronics & Information Industry (Xinhui) Ltd.",
-       [3]byte{32, 45, 7}:     "Samsung Electronics Co.,Ltd",
-       [3]byte{32, 45, 248}:   "Digital Media Cartridge Ltd.",
-       [3]byte{32, 49, 235}:   "HDSN",
-       [3]byte{32, 55, 6}:     "Cisco Systems, Inc",
-       [3]byte{32, 55, 188}:   "Kuipers Electronic Engineering BV",
-       [3]byte{32, 58, 7}:     "Cisco Systems, Inc",
-       [3]byte{32, 58, 239}:   "Sivantos GmbH",
-       [3]byte{32, 60, 174}:   "Apple, Inc.",
-       [3]byte{32, 61, 102}:   "ARRIS Group, Inc.",
-       [3]byte{32, 61, 178}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{32, 64, 5}:     "feno GmbH",
-       [3]byte{32, 65, 90}:    "Smarteh d.o.o.",
-       [3]byte{32, 68, 58}:    "Schneider Electric Asia Pacific Ltd",
-       [3]byte{32, 70, 161}:   "VECOW Co., Ltd",
-       [3]byte{32, 70, 249}:   "Advanced Network Devices (dba:AND)",
-       [3]byte{32, 71, 71}:    "Dell Inc.",
-       [3]byte{32, 71, 237}:   "BSkyB Ltd",
-       [3]byte{32, 74, 170}:   "Hanscan Spain S.A.",
-       [3]byte{32, 76, 3}:     "Aruba Networks",
-       [3]byte{32, 76, 109}:   "Hugo Brennenstuhl Gmbh & Co. KG.",
-       [3]byte{32, 76, 158}:   "Cisco Systems, Inc",
-       [3]byte{32, 78, 107}:   "Axxana(israel) ltd",
-       [3]byte{32, 78, 113}:   "Juniper Networks",
-       [3]byte{32, 78, 127}:   "NETGEAR",
-       [3]byte{32, 83, 202}:   "Risk Technology Ltd",
-       [3]byte{32, 84, 118}:   "Sony Mobile Communications AB",
-       [3]byte{32, 84, 250}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{32, 85, 49}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{32, 85, 50}:    "Gotech International Technology Limited",
-       [3]byte{32, 87, 33}:    "Salix Technology CO., Ltd.",
-       [3]byte{32, 87, 175}:   "Shenzhen FH-NET OPTOELECTRONICS CO.,LTD",
-       [3]byte{32, 89, 160}:   "Paragon Technologies Inc.",
-       [3]byte{32, 90, 0}:     "Coval",
-       [3]byte{32, 91, 42}:    "Private",
-       [3]byte{32, 91, 94}:    "Shenzhen Wonhe Technology Co., Ltd",
-       [3]byte{32, 92, 250}:   "Yangzhou ChangLian Network Technology Co,ltd.",
-       [3]byte{32, 93, 71}:    "vivo Mobile Communication Co., Ltd.",
-       [3]byte{32, 94, 247}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{32, 98, 116}:   "Microsoft Corporation",
-       [3]byte{32, 99, 95}:    "Abeeway",
-       [3]byte{32, 100, 50}:   "SAMSUNG ELECTRO MECHANICS CO., LTD.",
-       [3]byte{32, 103, 177}:  "Pluto inc.",
-       [3]byte{32, 104, 157}:  "Liteon Technology Corporation",
-       [3]byte{32, 106, 138}:  "Wistron Infocomm (Zhongshan) Corporation",
-       [3]byte{32, 106, 255}:  "Atlas Elektronik UK Limited",
-       [3]byte{32, 107, 231}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{32, 108, 138}:  "Aerohive Networks Inc.",
-       [3]byte{32, 110, 156}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{32, 111, 236}:  "Braemac CA LLC",
-       [3]byte{32, 113, 158}:  "SF Technology Co.,Ltd",
-       [3]byte{32, 115, 85}:   "ARRIS Group, Inc.",
-       [3]byte{32, 116, 207}:  "Shenzhen Voxtech Co.,Ltd",
-       [3]byte{32, 118, 0}:    "Actiontec Electronics, Inc",
-       [3]byte{32, 118, 143}:  "Apple, Inc.",
-       [3]byte{32, 118, 147}:  "Lenovo (Beijing) Limited.",
-       [3]byte{32, 120, 11}:   "Delta Faucet Company",
-       [3]byte{32, 120, 82}:   "Nokia",
-       [3]byte{32, 120, 240}:  "Apple, Inc.",
-       [3]byte{32, 124, 143}:  "Quanta Microsystems,Inc.",
-       [3]byte{32, 125, 116}:  "Apple, Inc.",
-       [3]byte{32, 130, 192}:  "Xiaomi Communications Co Ltd",
-       [3]byte{32, 133, 140}:  "Assa",
-       [3]byte{32, 135, 86}:   "SIEMENS AG",
-       [3]byte{32, 135, 172}:  "AES motomation",
-       [3]byte{32, 137, 111}:  "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{32, 137, 132}:  "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
-       [3]byte{32, 137, 134}:  "zte corporation",
-       [3]byte{32, 139, 55}:   "Skyworth Digital Technology(Shenzhen) Co.,Ltd",
-       [3]byte{32, 144, 111}:  "Shenzhen Tencent Computer System Co., Ltd.",
-       [3]byte{32, 145, 72}:   "Texas Instruments",
-       [3]byte{32, 145, 138}:  "PROFALUX",
-       [3]byte{32, 145, 217}:  "I'M SPA",
-       [3]byte{32, 147, 77}:   "FUJIAN STAR-NET COMMUNICATION CO.,LTD",
-       [3]byte{32, 154, 233}:  "Volacomm Co., Ltd",
-       [3]byte{32, 155, 165}:  "JIAXING GLEAD Electronics Co.,Ltd",
-       [3]byte{32, 155, 205}:  "Apple, Inc.",
-       [3]byte{32, 162, 228}:  "Apple, Inc.",
-       [3]byte{32, 162, 231}:  "Lee-Dickens Ltd",
-       [3]byte{32, 166, 128}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{32, 166, 205}:  "Hewlett Packard Enterprise",
-       [3]byte{32, 167, 131}:  "miControl GmbH",
-       [3]byte{32, 167, 135}:  "Bointec Taiwan Corporation Limited",
-       [3]byte{32, 168, 185}:  "Siemens",
-       [3]byte{32, 169, 14}:   "TCT mobile ltd",
-       [3]byte{32, 169, 155}:  "Microsoft Corporation",
-       [3]byte{32, 170, 37}:   "IP-NET LLC",
-       [3]byte{32, 170, 75}:   "Cisco-Linksys, LLC",
-       [3]byte{32, 171, 55}:   "Apple, Inc.",
-       [3]byte{32, 176, 247}:  "Enclustra GmbH",
-       [3]byte{32, 179, 153}:  "Enterasys",
-       [3]byte{32, 181, 198}:  "Mimosa Networks",
-       [3]byte{32, 183, 192}:  "OMICRON electronics GmbH",
-       [3]byte{32, 187, 118}:  "COL GIOVANNI PAOLO SpA",
-       [3]byte{32, 187, 192}:  "Cisco Systems, Inc",
-       [3]byte{32, 187, 198}:  "Jabil Circuit Hungary Ltd.",
-       [3]byte{32, 191, 219}:  "DVL",
-       [3]byte{32, 192, 71}:   "Verizon",
-       [3]byte{32, 192, 109}:  "SHENZHEN SPACETEK TECHNOLOGY CO.,LTD",
-       [3]byte{32, 193, 175}:  "i Wit Digital Co., Limited",
-       [3]byte{32, 195, 143}:  "Texas Instruments",
-       [3]byte{32, 195, 164}:  "RetailNext",
-       [3]byte{32, 198, 13}:   "Shanghai annijie Information technology Co.,LTD",
-       [3]byte{32, 198, 235}:  "Panasonic Corporation AVC Networks Company",
-       [3]byte{32, 200, 179}:  "SHENZHEN BUL-TECH CO.,LTD.",
-       [3]byte{32, 201, 208}:  "Apple, Inc.",
-       [3]byte{32, 205, 57}:   "Texas Instruments",
-       [3]byte{32, 206, 196}:  "Peraso Technologies",
-       [3]byte{32, 207, 48}:   "ASUSTek COMPUTER INC.",
-       [3]byte{32, 209, 96}:   "Private",
-       [3]byte{32, 210, 31}:   "Wincal Technology Corp.",
-       [3]byte{32, 210, 95}:   "SmartCap Technologies",
-       [3]byte{32, 211, 144}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{32, 213, 171}:  "Korea Infocom Co.,Ltd.",
-       [3]byte{32, 213, 191}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{32, 214, 7}:    "Nokia Corporation",
-       [3]byte{32, 215, 90}:   "Posh Mobile Limited",
-       [3]byte{32, 217, 6}:    "Iota, Inc.",
-       [3]byte{32, 219, 171}:  "Samsung Electronics Co., Ltd.",
-       [3]byte{32, 220, 147}:  "Cheetah Hi-Tech, Inc.",
-       [3]byte{32, 220, 230}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{32, 223, 63}:   "Nanjing SAC Power Grid Automation Co., Ltd.",
-       [3]byte{32, 223, 185}:  "Google, Inc.",
-       [3]byte{32, 224, 156}:  "Nokia",
-       [3]byte{32, 228, 7}:    "Spark srl",
-       [3]byte{32, 229, 42}:   "NETGEAR",
-       [3]byte{32, 229, 100}:  "ARRIS Group, Inc.",
-       [3]byte{32, 231, 145}:  "Siemens Healthcare Diagnostics, Inc",
-       [3]byte{32, 234, 199}:  "SHENZHEN RIOPINE ELECTRONICS CO., LTD",
-       [3]byte{32, 237, 116}:  "Ability enterprise co.,Ltd.",
-       [3]byte{32, 238, 40}:   "Apple, Inc.",
-       [3]byte{32, 238, 198}:  "Elefirst Science & Tech Co ., ltd",
-       [3]byte{32, 240, 2}:    "MTData Developments Pty. Ltd.",
-       [3]byte{32, 241, 124}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{32, 241, 158}:  "ARRIS Group, Inc.",
-       [3]byte{32, 243, 163}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{32, 244, 27}:   "Shenzhen Bilian electronic CO.,LTD",
-       [3]byte{32, 244, 82}:   "Shanghai IUV Software Development Co. Ltd",
-       [3]byte{32, 245, 16}:   "Codex Digital Limited",
-       [3]byte{32, 245, 67}:   "Hui Zhou Gaoshengda Technology Co.,LTD",
-       [3]byte{32, 248, 94}:   "Delta Electronics",
-       [3]byte{32, 250, 187}:  "Cambridge Executive Limited",
-       [3]byte{32, 253, 241}:  "3COM EUROPE LTD",
-       [3]byte{32, 254, 205}:  "System In Frontier Inc.",
-       [3]byte{32, 254, 219}:  "M2M Solution S.A.S.",
-       [3]byte{36, 0, 186}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{36, 1, 199}:    "Cisco Systems, Inc",
-       [3]byte{36, 5, 15}:     "MTN Electronic Co. Ltd",
-       [3]byte{36, 5, 245}:    "Integrated Device Technology (Malaysia) Sdn. Bhd.",
-       [3]byte{36, 9, 23}:     "Devlin Electronics Limited",
-       [3]byte{36, 9, 149}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{36, 10, 17}:    "TCT mobile ltd",
-       [3]byte{36, 10, 100}:   "AzureWave Technology Inc.",
-       [3]byte{36, 10, 196}:   "Espressif Inc.",
-       [3]byte{36, 11, 10}:    "Palo Alto Networks",
-       [3]byte{36, 11, 42}:    "Viettel Group",
-       [3]byte{36, 11, 177}:   "KOSTAL Industrie Elektrik GmbH",
-       [3]byte{36, 13, 101}:   "Shenzhen Vsun Communication Technology Co., Ltd.",
-       [3]byte{36, 13, 108}:   "SMND",
-       [3]byte{36, 13, 194}:   "TCT mobile ltd",
-       [3]byte{36, 16, 100}:   "Shenzhen Ecsino Tecnical Co. Ltd",
-       [3]byte{36, 17, 37}:    "Hutek Co., Ltd.",
-       [3]byte{36, 17, 72}:    "Entropix, LLC",
-       [3]byte{36, 17, 208}:   "Chongqing Ehs Science and Technology Development Co.,Ltd.",
-       [3]byte{36, 26, 140}:   "Squarehead Technology AS",
-       [3]byte{36, 27, 19}:    "Shanghai Nutshell Electronic Co., Ltd.",
-       [3]byte{36, 27, 68}:    "Hangzhou Tuners Electronics Co., Ltd",
-       [3]byte{36, 28, 4}:     "SHENZHEN JEHE TECHNOLOGY DEVELOPMENT CO., LTD.",
-       [3]byte{36, 30, 235}:   "Apple, Inc.",
-       [3]byte{36, 31, 44}:    "Calsys, Inc.",
-       [3]byte{36, 31, 160}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{36, 32, 199}:   "Sagemcom Broadband SAS",
-       [3]byte{36, 33, 171}:   "Sony Mobile Communications AB",
-       [3]byte{36, 36, 14}:    "Apple, Inc.",
-       [3]byte{36, 38, 66}:    "SHARP Corporation.",
-       [3]byte{36, 47, 250}:   "Toshiba Global Commerce Solutions",
-       [3]byte{36, 49, 132}:   "SHARP Corporation",
-       [3]byte{36, 51, 108}:   "Private",
-       [3]byte{36, 53, 204}:   "Zhongshan Scinan Internet of Things Co.,Ltd.",
-       [3]byte{36, 55, 76}:    "Cisco SPVTG",
-       [3]byte{36, 55, 239}:   "EMC Electronic Media Communication SA",
-       [3]byte{36, 60, 32}:    "Dynamode Group",
-       [3]byte{36, 66, 188}:   "Alinco,incorporated",
-       [3]byte{36, 68, 39}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{36, 69, 151}:   "GEMUE Gebr. Mueller Apparatebau",
-       [3]byte{36, 71, 14}:    "PentronicAB",
-       [3]byte{36, 73, 123}:   "Innovative Converged Devices Inc",
-       [3]byte{36, 75, 3}:     "Samsung Electronics Co.,Ltd",
-       [3]byte{36, 75, 129}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{36, 76, 7}:     "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{36, 78, 123}:   "IEEE Registration Authority",
-       [3]byte{36, 79, 29}:    "iRule LLC",
-       [3]byte{36, 88, 128}:   "VIZEO",
-       [3]byte{36, 89, 11}:    "White Sky Inc. Limited",
-       [3]byte{36, 91, 167}:   "Apple, Inc.",
-       [3]byte{36, 91, 240}:   "Liteon, Inc.",
-       [3]byte{36, 92, 191}:   "NCSE",
-       [3]byte{36, 92, 203}:   "AXIe Consortium, Inc.",
-       [3]byte{36, 94, 190}:   "QNAP Systems, Inc.",
-       [3]byte{36, 95, 223}:   "KYOCERA CORPORATION",
-       [3]byte{36, 96, 129}:   "razberi technologies",
-       [3]byte{36, 97, 90}:    "China Mobile Group Device Co.,Ltd.",
-       [3]byte{36, 98, 120}:   "sysmocom - systems for mobile communications GmbH",
-       [3]byte{36, 100, 239}:  "CYG SUNRI CO.,LTD.",
-       [3]byte{36, 101, 17}:   "AVM GmbH",
-       [3]byte{36, 104, 128}:  "Braveridge.co.,ltd.",
-       [3]byte{36, 105, 62}:   "innodisk Corporation",
-       [3]byte{36, 105, 74}:   "Jasmine Systems Inc.",
-       [3]byte{36, 105, 104}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{36, 105, 165}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{36, 106, 171}:  "IT-IS International",
-       [3]byte{36, 108, 138}:  "YUKAI Engineering",
-       [3]byte{36, 110, 150}:  "Dell Inc.",
-       [3]byte{36, 113, 137}:  "Texas Instruments",
-       [3]byte{36, 114, 96}:   "IOTTECH Corp",
-       [3]byte{36, 118, 86}:   "Shanghai Net Miles Fiber Optics Technology Co., LTD.",
-       [3]byte{36, 118, 125}:  "Cisco SPVTG",
-       [3]byte{36, 119, 3}:    "Intel Corporate",
-       [3]byte{36, 121, 42}:   "Ruckus Wireless",
-       [3]byte{36, 124, 76}:   "Herman Miller",
-       [3]byte{36, 127, 32}:   "Sagemcom Broadband SAS",
-       [3]byte{36, 127, 60}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{36, 128, 0}:    "Westcontrol AS",
-       [3]byte{36, 129, 170}:  "KSH International Co., Ltd.",
-       [3]byte{36, 130, 138}:  "Prowave Technologies Ltd.",
-       [3]byte{36, 134, 244}:  "Ctek, Inc.",
-       [3]byte{36, 135, 7}:    "SEnergy Corporation",
-       [3]byte{36, 136, 148}:  "shenzhen lensun Communication Technology LTD",
-       [3]byte{36, 138, 7}:    "Mellanox Technologies, Inc.",
-       [3]byte{36, 139, 224}:  "SICHUAN TIANYI COMHEART TELECOMCO., LTD",
-       [3]byte{36, 146, 14}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{36, 147, 202}:  "Voxtronic Technology Computer-Systeme GmbH",
-       [3]byte{36, 148, 66}:   "OPEN ROAD SOLUTIONS , INC.",
-       [3]byte{36, 149, 4}:    "SFR",
-       [3]byte{36, 151, 237}:  "Techvision Intelligent Technology Limited",
-       [3]byte{36, 158, 171}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{36, 160, 116}:  "Apple, Inc.",
-       [3]byte{36, 162, 225}:  "Apple, Inc.",
-       [3]byte{36, 164, 44}:   "KOUKAAM a.s.",
-       [3]byte{36, 164, 60}:   "Ubiquiti Networks Inc.",
-       [3]byte{36, 164, 149}:  "Thales Canada Inc.",
-       [3]byte{36, 165, 52}:   "SynTrust Tech International Ltd.",
-       [3]byte{36, 167, 220}:  "BSkyB Ltd",
-       [3]byte{36, 168, 125}:  "Panasonic Automotive Systems Asia Pacific(Thailand)Co.,Ltd.",
-       [3]byte{36, 169, 55}:   "PURE Storage",
-       [3]byte{36, 171, 129}:  "Apple, Inc.",
-       [3]byte{36, 175, 74}:   "Alcatel-Lucent IPD",
-       [3]byte{36, 175, 84}:   "NEXGEN Mediatech Inc.",
-       [3]byte{36, 176, 169}:  "Shanghai Mobiletek Communication Ltd.",
-       [3]byte{36, 178, 9}:    "Avaya Inc",
-       [3]byte{36, 178, 222}:  "Espressif Inc.",
-       [3]byte{36, 182, 87}:   "Cisco Systems, Inc",
-       [3]byte{36, 182, 184}:  "FRIEM SPA",
-       [3]byte{36, 182, 253}:  "Dell Inc.",
-       [3]byte{36, 184, 140}:  "Crenus Co.,Ltd.",
-       [3]byte{36, 184, 210}:  "Opzoon Technology Co.,Ltd.",
-       [3]byte{36, 186, 19}:   "RISO KAGAKU CORPORATION",
-       [3]byte{36, 186, 48}:   "Technical Consumer Products, Inc.",
-       [3]byte{36, 187, 193}:  "Absolute Analysis",
-       [3]byte{36, 188, 130}:  "Dali Wireless, Inc.",
-       [3]byte{36, 188, 248}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{36, 190, 5}:    "Hewlett Packard",
-       [3]byte{36, 191, 116}:  "Private",
-       [3]byte{36, 192, 179}:  "RSF",
-       [3]byte{36, 193, 189}:  "CRRC DALIAN R&D CO.,LTD.",
-       [3]byte{36, 195, 249}:  "Securitas Direct AB",
-       [3]byte{36, 196, 47}:   "Philips Lifeline",
-       [3]byte{36, 196, 74}:   "zte corporation",
-       [3]byte{36, 198, 150}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{36, 200, 72}:   "mywerk system GmbH",
-       [3]byte{36, 200, 110}:  "Chaney Instrument Co.",
-       [3]byte{36, 201, 161}:  "Ruckus Wireless",
-       [3]byte{36, 201, 222}:  "Genoray",
-       [3]byte{36, 203, 231}:  "MYK, Inc.",
-       [3]byte{36, 207, 33}:   "Shenzhen State Micro Technology Co., Ltd",
-       [3]byte{36, 209, 63}:   "MEXUS CO.,LTD",
-       [3]byte{36, 210, 204}:  "SmartDrive Systems Inc.",
-       [3]byte{36, 213, 28}:   "Zhongtian broadband technology co., LTD",
-       [3]byte{36, 217, 33}:   "Avaya Inc",
-       [3]byte{36, 218, 17}:   "NO NDA Inc",
-       [3]byte{36, 218, 155}:  "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{36, 218, 182}:  "Sistemas de Gestión Energética S.A. de C.V",
-       [3]byte{36, 219, 172}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{36, 219, 173}:  "ShopperTrak RCT Corporation",
-       [3]byte{36, 219, 237}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{36, 222, 198}:  "Aruba Networks",
-       [3]byte{36, 223, 106}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{36, 225, 36}:   "Xiamen Ursaconn Technology Co. , Ltd.",
-       [3]byte{36, 226, 113}:  "Qingdao Hisense Communications Co.,Ltd.",
-       [3]byte{36, 227, 20}:   "Apple, Inc.",
-       [3]byte{36, 228, 63}:   "Wenzhou Kunmei Communication Technology Co.,Ltd.",
-       [3]byte{36, 229, 170}:  "Philips Oral Healthcare, Inc.",
-       [3]byte{36, 230, 186}:  "JSC Zavod im. Kozitsky",
-       [3]byte{36, 233, 179}:  "Cisco Systems, Inc",
-       [3]byte{36, 234, 64}:   "Helmholz GmbH & Co. KG",
-       [3]byte{36, 235, 101}:  "SAET I.S. S.r.l.",
-       [3]byte{36, 236, 153}:  "ASKEY COMPUTER CORP",
-       [3]byte{36, 236, 214}:  "CSG Science & Technology Co.,Ltd.Hefei",
-       [3]byte{36, 238, 58}:   "Chengdu Yingji Electronic Hi-tech Co Ltd",
-       [3]byte{36, 240, 148}:  "Apple, Inc.",
-       [3]byte{36, 240, 255}:  "GHT Co., Ltd.",
-       [3]byte{36, 242, 127}:  "Hewlett Packard Enterprise",
-       [3]byte{36, 242, 221}:  "Radiant Zemax LLC",
-       [3]byte{36, 245, 126}:  "HWH CO., LTD.",
-       [3]byte{36, 245, 162}:  "Belkin International Inc.",
-       [3]byte{36, 245, 170}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{36, 246, 119}:  "Apple, Inc.",
-       [3]byte{36, 253, 82}:   "Liteon Technology Corporation",
-       [3]byte{36, 253, 91}:   "SmartThings, Inc.",
-       [3]byte{40, 4, 224}:    "FERMAX ELECTRONICA S.A.U.",
-       [3]byte{40, 6, 30}:     "NINGBO GLOBAL USEFUL ELECTRIC CO.,LTD",
-       [3]byte{40, 6, 141}:    "ITL, LLC",
-       [3]byte{40, 7, 13}:     "GUANGZHOU WINSOUND INFORMATION TECHNOLOGY CO.,LTD.",
-       [3]byte{40, 11, 92}:    "Apple, Inc.",
-       [3]byte{40, 12, 40}:    "Unigen DataStorage Corporation",
-       [3]byte{40, 12, 184}:   "Mikrosay Yazilim ve Elektronik A.S.",
-       [3]byte{40, 13, 252}:   "Sony Interactive Entertainment Inc.",
-       [3]byte{40, 14, 139}:   "Beijing Spirit Technology Development Co., Ltd.",
-       [3]byte{40, 16, 27}:    "MagnaCom",
-       [3]byte{40, 16, 123}:   "D-Link International",
-       [3]byte{40, 20, 113}:   "Lantis co., LTD.",
-       [3]byte{40, 22, 46}:    "2Wire Inc",
-       [3]byte{40, 22, 173}:   "Intel Corporate",
-       [3]byte{40, 23, 206}:   "Omnisense Ltd",
-       [3]byte{40, 24, 120}:   "Microsoft Corporation",
-       [3]byte{40, 24, 253}:   "Aditya Infotech Ltd.",
-       [3]byte{40, 34, 70}:    "Beijing Sinoix Communication Co., LTD",
-       [3]byte{40, 35, 115}:   "Digita",
-       [3]byte{40, 36, 255}:   "Wistron Neweb Corporation",
-       [3]byte{40, 37, 54}:    "SHENZHEN HOLATEK CO.,LTD",
-       [3]byte{40, 38, 166}:   "PBR electronics GmbH",
-       [3]byte{40, 39, 191}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{40, 40, 93}:    "Zyxel Communications Corporation",
-       [3]byte{40, 41, 134}:   "APC by Schneider Electric",
-       [3]byte{40, 41, 204}:   "Corsa Technology Incorporated",
-       [3]byte{40, 41, 217}:   "GlobalBeiMing technology (Beijing)Co. Ltd",
-       [3]byte{40, 44, 178}:   "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{40, 47, 194}:   "Automotive Data Solutions",
-       [3]byte{40, 48, 172}:   "Frontiir Co. Ltd.",
-       [3]byte{40, 49, 82}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{40, 50, 197}:   "HUMAX Co., Ltd.",
-       [3]byte{40, 52, 16}:    "Enigma Diagnostics Limited",
-       [3]byte{40, 52, 162}:   "Cisco Systems, Inc",
-       [3]byte{40, 53, 69}:    "SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD",
-       [3]byte{40, 54, 56}:    "IEEE Registration Authority",
-       [3]byte{40, 55, 19}:    "Shenzhen 3Nod Digital Technology Co., Ltd.",
-       [3]byte{40, 55, 55}:    "Apple, Inc.",
-       [3]byte{40, 56, 207}:   "Gen2wave",
-       [3]byte{40, 57, 94}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{40, 57, 231}:   "Preceno Technology Pte.Ltd.",
-       [3]byte{40, 59, 150}:   "Cool Control LTD",
-       [3]byte{40, 60, 228}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{40, 63, 105}:   "Sony Mobile Communications AB",
-       [3]byte{40, 64, 26}:    "C8 MediSensors, Inc.",
-       [3]byte{40, 65, 33}:    "OptiSense Network, LLC",
-       [3]byte{40, 68, 48}:    "GenesisTechnical Systems (UK) Ltd",
-       [3]byte{40, 71, 170}:   "Nokia Corporation",
-       [3]byte{40, 72, 70}:    "GridCentric Inc.",
-       [3]byte{40, 76, 83}:    "Intune Networks",
-       [3]byte{40, 77, 146}:   "Luminator",
-       [3]byte{40, 78, 215}:   "OutSmart Power Systems, Inc.",
-       [3]byte{40, 79, 206}:   "Liaoning Wontel Science and Technology Development Co.,Ltd.",
-       [3]byte{40, 81, 50}:    "Shenzhen Prayfly Technology Co.,Ltd",
-       [3]byte{40, 82, 97}:    "Cisco Systems, Inc",
-       [3]byte{40, 82, 224}:   "Layon international Electronic & Telecom Co.,Ltd",
-       [3]byte{40, 86, 90}:    "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{40, 86, 193}:   "Harman International",
-       [3]byte{40, 87, 103}:   "Echostar Technologies Corp",
-       [3]byte{40, 87, 190}:   "Hangzhou Hikvision Digital Technology Co.,Ltd.",
-       [3]byte{40, 90, 235}:   "Apple, Inc.",
-       [3]byte{40, 95, 47}:    "RNware Co.,Ltd.",
-       [3]byte{40, 95, 219}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{40, 96, 70}:    "Lantech Communications Global, Inc.",
-       [3]byte{40, 96, 148}:   "CAPELEC",
-       [3]byte{40, 99, 54}:    "Siemens AG - Industrial Automation - EWA",
-       [3]byte{40, 101, 107}:  "Keystone Microtech Corporation",
-       [3]byte{40, 106, 184}:  "Apple, Inc.",
-       [3]byte{40, 106, 186}:  "Apple, Inc.",
-       [3]byte{40, 108, 7}:    "XIAOMI Electronics,CO.,LTD",
-       [3]byte{40, 109, 151}:  "SAMJIN Co., Ltd.",
-       [3]byte{40, 110, 212}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{40, 111, 127}:  "Cisco Systems, Inc",
-       [3]byte{40, 113, 132}:  "Spire Payments",
-       [3]byte{40, 114, 197}:  "Smartmatic Corp",
-       [3]byte{40, 114, 240}:  "ATHENA",
-       [3]byte{40, 118, 16}:   "IgniteNet",
-       [3]byte{40, 118, 205}:  "Funshion Online Technologies Co.,Ltd",
-       [3]byte{40, 121, 148}:  "Realplay Digital Technology(Shenzhen) Co.,Ltd",
-       [3]byte{40, 122, 238}:  "ARRIS Group, Inc.",
-       [3]byte{40, 123, 9}:    "zte corporation",
-       [3]byte{40, 124, 219}:  "Hefei  Toycloud Technology Co.,ltd",
-       [3]byte{40, 128, 35}:   "Hewlett Packard",
-       [3]byte{40, 128, 162}:  "Novatel Wireless Solutions, Inc.",
-       [3]byte{40, 131, 53}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{40, 132, 14}:   "silicon valley immigration service",
-       [3]byte{40, 132, 250}:  "SHARP Corporation",
-       [3]byte{40, 133, 45}:   "Touch Networks",
-       [3]byte{40, 137, 21}:   "CashGuard Sverige AB",
-       [3]byte{40, 138, 28}:   "Juniper Networks",
-       [3]byte{40, 140, 184}:  "zte corporation",
-       [3]byte{40, 145, 208}:  "Stage Tec Entwicklungsgesellschaft für professionelle Audiotechnik mbH",
-       [3]byte{40, 146, 74}:   "Hewlett Packard",
-       [3]byte{40, 147, 254}:  "Cisco Systems, Inc",
-       [3]byte{40, 148, 15}:   "Cisco Systems, Inc",
-       [3]byte{40, 148, 175}:  "Samhwa Telecom",
-       [3]byte{40, 152, 123}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{40, 153, 58}:   "Arista Networks",
-       [3]byte{40, 154, 75}:   "SteelSeries ApS",
-       [3]byte{40, 154, 250}:  "TCT mobile ltd",
-       [3]byte{40, 158, 223}:  "Danfoss Turbocor Compressors, Inc",
-       [3]byte{40, 160, 43}:   "Apple, Inc.",
-       [3]byte{40, 161, 131}:  "ALPS ELECTRIC CO.,LTD.",
-       [3]byte{40, 161, 134}:  "enblink",
-       [3]byte{40, 161, 146}:  "GERP Solution",
-       [3]byte{40, 161, 235}:  "ETEK TECHNOLOGY (SHENZHEN) CO.,LTD",
-       [3]byte{40, 162, 65}:   "exlar corp",
-       [3]byte{40, 162, 75}:   "Juniper Networks",
-       [3]byte{40, 165, 116}:  "Miller Electric Mfg. Co.",
-       [3]byte{40, 165, 238}:  "Shenzhen SDGI CATV Co., Ltd",
-       [3]byte{40, 166, 172}:  "seca gmbh & co. kg",
-       [3]byte{40, 166, 219}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{40, 172, 103}:  "Mach Power, Rappresentanze Internazionali s.r.l.",
-       [3]byte{40, 173, 62}:   "Shenzhen TONG BO WEI Technology CO.,LTD",
-       [3]byte{40, 175, 10}:   "Sirius XM Radio Inc",
-       [3]byte{40, 176, 204}:  "Xenya d.o.o.",
-       [3]byte{40, 178, 189}:  "Intel Corporate",
-       [3]byte{40, 179, 171}:  "Genmark Automation",
-       [3]byte{40, 180, 72}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{40, 185, 217}:  "Radisys Corporation",
-       [3]byte{40, 186, 24}:   "NextNav, LLC",
-       [3]byte{40, 186, 181}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{40, 187, 89}:   "RNET Technologies, Inc.",
-       [3]byte{40, 188, 24}:   "SourcingOverseas Co. Ltd",
-       [3]byte{40, 188, 86}:   "EMAC, Inc.",
-       [3]byte{40, 190, 3}:    "TCT mobile ltd",
-       [3]byte{40, 190, 155}:  "Technicolor CH USA Inc.",
-       [3]byte{40, 191, 137}:  "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{40, 192, 218}:  "Juniper Networks",
-       [3]byte{40, 193, 60}:   "Hon Hai Precision Ind. Co., Ltd.",
-       [3]byte{40, 194, 221}:  "AzureWave Technology Inc.",
-       [3]byte{40, 198, 63}:   "Intel Corporate",
-       [3]byte{40, 198, 113}:  "Yota Devices OY",
-       [3]byte{40, 198, 142}:  "NETGEAR",
-       [3]byte{40, 199, 24}:   "Altierre",
-       [3]byte{40, 199, 206}:  "Cisco Systems, Inc",
-       [3]byte{40, 200, 37}:   "DellKing Industrial Co., Ltd",
-       [3]byte{40, 200, 122}:  "ARRIS Group, Inc.",
-       [3]byte{40, 201, 20}:   "Taimag Corporation",
-       [3]byte{40, 202, 9}:    "ThyssenKrupp Elevators (Shanghai) Co.,Ltd",
-       [3]byte{40, 203, 235}:  "One",
-       [3]byte{40, 204, 1}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{40, 204, 255}:  "Corporacion Empresarial Altra SL",
-       [3]byte{40, 205, 28}:   "Espotel Oy",
-       [3]byte{40, 205, 76}:   "Individual Computers GmbH",
-       [3]byte{40, 205, 156}:  "Shenzhen Dynamax Software Development Co.,Ltd.",
-       [3]byte{40, 207, 8}:    "ESSYS",
-       [3]byte{40, 207, 218}:  "Apple, Inc.",
-       [3]byte{40, 207, 233}:  "Apple, Inc.",
-       [3]byte{40, 209, 175}:  "Nokia Corporation",
-       [3]byte{40, 210, 68}:   "LCFC(HeFei) Electronics Technology Co., Ltd.",
-       [3]byte{40, 212, 54}:   "Jiangsu dewosi electric co., LTD",
-       [3]byte{40, 213, 118}:  "Premier Wireless, Inc.",
-       [3]byte{40, 217, 62}:   "Telecor Inc.",
-       [3]byte{40, 217, 138}:  "Hangzhou Konke Technology Co.,Ltd.",
-       [3]byte{40, 217, 151}:  "Yuduan Mobile Co., Ltd.",
-       [3]byte{40, 219, 129}:  "Shanghai Guao Electronic Technology Co., Ltd",
-       [3]byte{40, 222, 246}:  "bioMerieux Inc.",
-       [3]byte{40, 224, 44}:   "Apple, Inc.",
-       [3]byte{40, 225, 76}:   "Apple, Inc.",
-       [3]byte{40, 226, 151}:  "Shanghai InfoTM Microelectronics Co.,Ltd.",
-       [3]byte{40, 227, 31}:   "Xiaomi Communications Co Ltd",
-       [3]byte{40, 227, 71}:   "Liteon Technology Corporation",
-       [3]byte{40, 228, 118}:  "Pi-Coral",
-       [3]byte{40, 230, 8}:    "Tokheim",
-       [3]byte{40, 230, 233}:  "SIS Sat Internet Services GmbH",
-       [3]byte{40, 231, 148}:  "Microtime Computer Inc.",
-       [3]byte{40, 231, 207}:  "Apple, Inc.",
-       [3]byte{40, 237, 88}:   "JAG Jakob AG",
-       [3]byte{40, 237, 106}:  "Apple, Inc.",
-       [3]byte{40, 238, 44}:   "Frontline Test Equipment",
-       [3]byte{40, 238, 82}:   "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{40, 238, 211}:  "Shenzhen Super D Technology Co., Ltd",
-       [3]byte{40, 239, 1}:    "Private",
-       [3]byte{40, 240, 118}:  "Apple, Inc.",
-       [3]byte{40, 241, 14}:   "Dell Inc.",
-       [3]byte{40, 243, 88}:   "2C - Trifonov & Co",
-       [3]byte{40, 243, 102}:  "Shenzhen Bilian electronic CO.,LTD",
-       [3]byte{40, 245, 50}:   "ADD-Engineering BV",
-       [3]byte{40, 245, 55}:   "IEEE Registration Authority",
-       [3]byte{40, 246, 6}:    "Syes srl",
-       [3]byte{40, 250, 160}:  "vivo Mobile Communication Co., Ltd.",
-       [3]byte{40, 251, 211}:  "Ragentek Technology Group",
-       [3]byte{40, 252, 81}:   "The Electric Controller and Manufacturing Co., LLC",
-       [3]byte{40, 252, 246}:  "Shenzhen Xin KingBrand enterprises Co.,Ltd",
-       [3]byte{40, 253, 128}:  "IEEE Registration Authority",
-       [3]byte{40, 254, 205}:  "Lemobile Information Technology (Beijing) Co., Ltd.",
-       [3]byte{40, 255, 62}:   "zte corporation",
-       [3]byte{44, 0, 44}:     "UNOWHY",
-       [3]byte{44, 0, 51}:     "EControls, LLC",
-       [3]byte{44, 0, 247}:    "XOS",
-       [3]byte{44, 1, 11}:     "NASCENT Technology, LLC - RemKon",
-       [3]byte{44, 2, 159}:    "3ALogics",
-       [3]byte{44, 6, 35}:     "Win Leader Inc.",
-       [3]byte{44, 7, 60}:     "DEVLINE LIMITED",
-       [3]byte{44, 8, 28}:     "OVH",
-       [3]byte{44, 8, 140}:    "HUMAX Co., Ltd.",
-       [3]byte{44, 9, 77}:     "Raptor Engineering, LLC",
-       [3]byte{44, 9, 203}:    "COBS AB",
-       [3]byte{44, 11, 233}:   "Cisco Systems, Inc",
-       [3]byte{44, 14, 61}:    "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
-       [3]byte{44, 16, 193}:   "Nintendo Co., Ltd.",
-       [3]byte{44, 24, 174}:   "Trend Electronics Co., Ltd.",
-       [3]byte{44, 25, 132}:   "IDN Telecom, Inc.",
-       [3]byte{44, 26, 49}:    "Electronics Company Limited",
-       [3]byte{44, 27, 200}:   "Hunan Topview Network System CO.,LTD",
-       [3]byte{44, 29, 184}:   "ARRIS Group, Inc.",
-       [3]byte{44, 30, 234}:   "AERODEV",
-       [3]byte{44, 31, 35}:    "Apple, Inc.",
-       [3]byte{44, 32, 11}:    "Apple, Inc.",
-       [3]byte{44, 33, 49}:    "Juniper Networks",
-       [3]byte{44, 33, 114}:   "Juniper Networks",
-       [3]byte{44, 33, 215}:   "IMAX Corporation",
-       [3]byte{44, 34, 139}:   "CTR SRL",
-       [3]byte{44, 35, 58}:    "Hewlett Packard",
-       [3]byte{44, 36, 95}:    "Babolat VS",
-       [3]byte{44, 38, 23}:    "Oculus VR, LLC",
-       [3]byte{44, 38, 95}:    "IEEE Registration Authority",
-       [3]byte{44, 38, 197}:   "zte corporation",
-       [3]byte{44, 39, 158}:   "IEEE Registration Authority",
-       [3]byte{44, 39, 215}:   "Hewlett Packard",
-       [3]byte{44, 40, 45}:    "BBK EDUCATIONAL ELECTRONICS CORP.,LTD.",
-       [3]byte{44, 41, 151}:   "Microsoft Corporation",
-       [3]byte{44, 45, 72}:    "bct electronic GesmbH",
-       [3]byte{44, 48, 51}:    "NETGEAR",
-       [3]byte{44, 48, 104}:   "Pantech Co.,Ltd",
-       [3]byte{44, 49, 36}:    "Cisco Systems, Inc",
-       [3]byte{44, 51, 17}:    "Cisco Systems, Inc",
-       [3]byte{44, 51, 97}:    "Apple, Inc.",
-       [3]byte{44, 51, 122}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{44, 52, 39}:    "ERCO & GENER",
-       [3]byte{44, 53, 87}:    "ELLIY Power CO..Ltd",
-       [3]byte{44, 54, 160}:   "Capisco Limited",
-       [3]byte{44, 54, 248}:   "Cisco Systems, Inc",
-       [3]byte{44, 55, 49}:    "SHENZHEN YIFANG DIGITAL TECHNOLOGY CO.,LTD.",
-       [3]byte{44, 55, 150}:   "CYBO CO.,LTD.",
-       [3]byte{44, 55, 197}:   "Qingdao Haier Intelligent Home Appliance Technology Co.,Ltd",
-       [3]byte{44, 57, 150}:   "Sagemcom Broadband SAS",
-       [3]byte{44, 57, 193}:   "Ciena Corporation",
-       [3]byte{44, 58, 40}:    "Fagor Electrónica",
-       [3]byte{44, 58, 232}:   "Espressif Inc.",
-       [3]byte{44, 59, 253}:   "Netstor Technology Co., Ltd.",
-       [3]byte{44, 62, 207}:   "Cisco Systems, Inc",
-       [3]byte{44, 63, 56}:    "Cisco Systems, Inc",
-       [3]byte{44, 63, 62}:    "Alge-Timing GmbH",
-       [3]byte{44, 64, 43}:    "Smart iBlue Technology Limited",
-       [3]byte{44, 64, 83}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{44, 65, 56}:    "Hewlett Packard",
-       [3]byte{44, 65, 161}:   "Bose Corporation",
-       [3]byte{44, 66, 5}:     "Lytx",
-       [3]byte{44, 67, 26}:    "Shenzhen YOUHUA Technology Co., Ltd",
-       [3]byte{44, 68, 1}:     "Samsung Electronics Co.,Ltd",
-       [3]byte{44, 68, 27}:    "Spectrum Medical Limited",
-       [3]byte{44, 68, 253}:   "Hewlett Packard",
-       [3]byte{44, 77, 84}:    "ASUSTek COMPUTER INC.",
-       [3]byte{44, 77, 121}:   "Weifang GoerTek Technology Co.,Ltd.",
-       [3]byte{44, 80, 137}:   "Shenzhen Kaixuan Visual Technology Co.,Limited",
-       [3]byte{44, 83, 74}:    "Shenzhen Winyao Electronic Limited",
-       [3]byte{44, 84, 45}:    "Cisco Systems, Inc",
-       [3]byte{44, 84, 145}:   "Microsoft Corporation",
-       [3]byte{44, 84, 207}:   "LG Electronics (Mobile Communications)",
-       [3]byte{44, 85, 60}:    "Gainspeed, Inc.",
-       [3]byte{44, 85, 211}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{44, 86, 220}:   "ASUSTek COMPUTER INC.",
-       [3]byte{44, 87, 49}:    "Wingtech Group (HongKong)Limited",
-       [3]byte{44, 89, 138}:   "LG Electronics (Mobile Communications)",
-       [3]byte{44, 89, 229}:   "Hewlett Packard",
-       [3]byte{44, 90, 5}:     "Nokia Corporation",
-       [3]byte{44, 90, 15}:    "Cisco Systems, Inc",
-       [3]byte{44, 90, 141}:   "SYSTRONIK Elektronik u. Systemtechnik GmbH",
-       [3]byte{44, 90, 163}:   "PROMATE ELECTRONIC CO.LTD",
-       [3]byte{44, 91, 184}:   "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{44, 91, 225}:   "Centripetal Networks, Inc",
-       [3]byte{44, 93, 147}:   "Ruckus Wireless",
-       [3]byte{44, 95, 243}:   "Pertronic Industries",
-       [3]byte{44, 96, 12}:    "QUANTA COMPUTER INC.",
-       [3]byte{44, 98, 90}:    "Finest Security Systems Co., Ltd",
-       [3]byte{44, 98, 137}:   "Regenersis (Glenrothes) Ltd",
-       [3]byte{44, 99, 115}:   "SICHUAN TIANYI COMHEART TELECOMCO., LTD",
-       [3]byte{44, 103, 152}:  "InTalTech Ltd.",
-       [3]byte{44, 103, 251}:  "ShenZhen Zhengjili Electronics Co., LTD",
-       [3]byte{44, 105, 186}:  "RF Controls, LLC",
-       [3]byte{44, 106, 111}:  "IEEE Registration Authority",
-       [3]byte{44, 107, 125}:  "Texas Instruments",
-       [3]byte{44, 107, 245}:  "Juniper Networks",
-       [3]byte{44, 110, 133}:  "Intel Corporate",
-       [3]byte{44, 111, 201}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{44, 113, 85}:   "HiveMotion",
-       [3]byte{44, 114, 195}:  "Soundmatters",
-       [3]byte{44, 115, 96}:   "Earda Technologies co Ltd",
-       [3]byte{44, 117, 15}:   "Shanghai Dongzhou-Lawton Communication Technology Co. Ltd.",
-       [3]byte{44, 118, 138}:  "Hewlett Packard",
-       [3]byte{44, 123, 90}:   "Milper Ltd",
-       [3]byte{44, 123, 132}:  "OOO Petr Telegin",
-       [3]byte{44, 126, 129}:  "ARRIS Group, Inc.",
-       [3]byte{44, 126, 207}:  "Onzo Ltd",
-       [3]byte{44, 128, 101}:  "HARTING Inc. of North America",
-       [3]byte{44, 129, 88}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{44, 134, 210}:  "Cisco Systems, Inc",
-       [3]byte{44, 138, 114}:  "HTC Corporation",
-       [3]byte{44, 139, 242}:  "Hitachi Metals America Ltd",
-       [3]byte{44, 145, 39}:   "Eintechno Corporation",
-       [3]byte{44, 146, 44}:   "Kishu Giken Kogyou Company Ltd,.",
-       [3]byte{44, 148, 100}:  "Cincoze Co., Ltd.",
-       [3]byte{44, 149, 127}:  "zte corporation",
-       [3]byte{44, 150, 98}:   "Invenit BV",
-       [3]byte{44, 151, 23}:   "I.C.Y. B.V.",
-       [3]byte{44, 153, 36}:   "ARRIS Group, Inc.",
-       [3]byte{44, 154, 164}:  "Eolo SpA",
-       [3]byte{44, 157, 30}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{44, 158, 95}:   "ARRIS Group, Inc.",
-       [3]byte{44, 158, 236}:  "Jabil Circuit Penang",
-       [3]byte{44, 158, 252}:  "CANON INC.",
-       [3]byte{44, 161, 87}:   "acromate, Inc.",
-       [3]byte{44, 161, 125}:  "ARRIS Group, Inc.",
-       [3]byte{44, 162, 180}:  "Fortify Technologies, LLC",
-       [3]byte{44, 163, 14}:   "POWER DRAGON DEVELOPMENT LIMITED",
-       [3]byte{44, 165, 57}:   "Parallel Wireless, Inc",
-       [3]byte{44, 167, 128}:  "True Technologies Inc.",
-       [3]byte{44, 168, 53}:   "RIM",
-       [3]byte{44, 171, 0}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{44, 171, 37}:   "SHENZHEN GONGJIN ELECTRONICS CO.,LT",
-       [3]byte{44, 171, 164}:  "Cisco SPVTG",
-       [3]byte{44, 171, 235}:  "Cisco Systems, Inc",
-       [3]byte{44, 172, 68}:   "CONEXTOP",
-       [3]byte{44, 173, 19}:   "SHENZHEN ZHILU TECHNOLOGY CO.,LTD",
-       [3]byte{44, 174, 43}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{44, 176, 93}:   "NETGEAR",
-       [3]byte{44, 176, 223}:  "Soliton Technologies Pvt Ltd",
-       [3]byte{44, 177, 21}:   "Integrated Device Technology (Malaysia) Sdn. Bhd.",
-       [3]byte{44, 178, 26}:   "Phicomm (Shanghai) Co., Ltd.",
-       [3]byte{44, 180, 58}:   "Apple, Inc.",
-       [3]byte{44, 182, 147}:  "Radware",
-       [3]byte{44, 182, 157}:  "RED Digital Cinema",
-       [3]byte{44, 186, 186}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{44, 190, 8}:    "Apple, Inc.",
-       [3]byte{44, 190, 151}:  "Ingenieurbuero Bickele und Buehler GmbH",
-       [3]byte{44, 194, 96}:   "Oracle Corporation",
-       [3]byte{44, 197, 72}:   "IAdea Corporation",
-       [3]byte{44, 197, 211}:  "Ruckus Wireless",
-       [3]byte{44, 204, 21}:   "Nokia Corporation",
-       [3]byte{44, 205, 39}:   "Precor Inc",
-       [3]byte{44, 205, 67}:   "Summit Technology Group",
-       [3]byte{44, 205, 105}:  "Aqavi.com",
-       [3]byte{44, 207, 88}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{44, 208, 45}:   "Cisco Systems, Inc",
-       [3]byte{44, 208, 90}:   "Liteon Technology Corporation",
-       [3]byte{44, 209, 65}:   "IEEE Registration Authority",
-       [3]byte{44, 209, 218}:  "Sanjole, Inc.",
-       [3]byte{44, 210, 231}:  "Nokia Corporation",
-       [3]byte{44, 212, 68}:   "FUJITSU LIMITED",
-       [3]byte{44, 220, 173}:  "Wistron Neweb Corporation",
-       [3]byte{44, 221, 12}:   "Discovergy GmbH",
-       [3]byte{44, 221, 149}:  "Taicang T&W Electronics",
-       [3]byte{44, 221, 163}:  "Point Grey Research Inc.",
-       [3]byte{44, 226, 168}:  "DeviceDesign",
-       [3]byte{44, 228, 18}:   "Sagemcom Broadband SAS",
-       [3]byte{44, 230, 204}:  "Ruckus Wireless",
-       [3]byte{44, 232, 113}:  "Alert Metalguard ApS",
-       [3]byte{44, 237, 235}:  "Alpheus Digital Company Limited",
-       [3]byte{44, 238, 38}:   "Petroleum Geo-Services",
-       [3]byte{44, 240, 162}:  "Apple, Inc.",
-       [3]byte{44, 240, 238}:  "Apple, Inc.",
-       [3]byte{44, 242, 3}:    "EMKO ELEKTRONIK SAN VE TIC AS",
-       [3]byte{44, 244, 197}:  "Avaya Inc",
-       [3]byte{44, 247, 241}:  "Seeed Technology Inc.",
-       [3]byte{44, 250, 162}:  "Alcatel-Lucent Enterprise",
-       [3]byte{44, 252, 228}:  "CTEK Sweden AB",
-       [3]byte{44, 253, 55}:   "Blue Calypso, Inc.",
-       [3]byte{44, 253, 161}:  "ASUSTek COMPUTER INC.",
-       [3]byte{44, 253, 171}:  "Motorola (Wuhan) Mobility Technologies Communication Co., Ltd.",
-       [3]byte{44, 255, 101}:  "Oki Electric Industry Co., Ltd.",
-       [3]byte{48, 5, 63}:     "JTI Co.,Ltd.",
-       [3]byte{48, 5, 92}:     "Brother industries, LTD.",
-       [3]byte{48, 7, 77}:     "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
-       [3]byte{48, 11, 156}:   "Delta Mobile Systems, Inc.",
-       [3]byte{48, 12, 35}:    "zte corporation",
-       [3]byte{48, 13, 42}:    "Zhejiang Wellcom Technology Co.,Ltd.",
-       [3]byte{48, 13, 67}:    "Microsoft Mobile Oy",
-       [3]byte{48, 14, 213}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{48, 14, 227}:   "Aquantia Corporation",
-       [3]byte{48, 16, 179}:   "Liteon Technology Corporation",
-       [3]byte{48, 16, 228}:   "Apple, Inc.",
-       [3]byte{48, 20, 45}:    "Piciorgros GmbH",
-       [3]byte{48, 20, 74}:    "Wistron Neweb Corporation",
-       [3]byte{48, 21, 24}:    "Ubiquitous Communication Co. ltd.",
-       [3]byte{48, 22, 141}:   "ProLon",
-       [3]byte{48, 23, 200}:   "Sony Mobile Communications AB",
-       [3]byte{48, 24, 207}:   "DEOS control systems GmbH",
-       [3]byte{48, 25, 102}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{48, 26, 40}:    "Mako Networks Ltd",
-       [3]byte{48, 33, 91}:    "Shenzhen Ostar Display Electronic Co.,Ltd",
-       [3]byte{48, 41, 190}:   "Shanghai MRDcom Co.,Ltd",
-       [3]byte{48, 45, 232}:   "JDA, LLC (JDA Systems)",
-       [3]byte{48, 50, 148}:   "W-IE-NE-R Plein & Baus GmbH",
-       [3]byte{48, 50, 212}:   "Hanilstm Co., Ltd.",
-       [3]byte{48, 51, 53}:    "Boosty",
-       [3]byte{48, 52, 210}:   "Availink, Inc.",
-       [3]byte{48, 53, 173}:   "Apple, Inc.",
-       [3]byte{48, 55, 166}:   "Cisco Systems, Inc",
-       [3]byte{48, 56, 85}:    "Nokia Corporation",
-       [3]byte{48, 57, 38}:    "Sony Mobile Communications AB",
-       [3]byte{48, 57, 85}:    "Shenzhen Jinhengjia Electronic Co., Ltd.",
-       [3]byte{48, 57, 242}:   "ADB Broadband Italia",
-       [3]byte{48, 58, 100}:   "Intel Corporate",
-       [3]byte{48, 61, 8}:     "GLINTT TES S.A.",
-       [3]byte{48, 62, 173}:   "Sonavox Canada Inc",
-       [3]byte{48, 65, 116}:   "ALTEC LANSING LLC",
-       [3]byte{48, 66, 37}:    "BURG-WÄCHTER KG",
-       [3]byte{48, 68, 73}:    "PLATH GmbH",
-       [3]byte{48, 68, 135}:   "Hefei Radio Communication Technology Co., Ltd",
-       [3]byte{48, 68, 161}:   "Shanghai Nanchao Information Technology",
-       [3]byte{48, 70, 154}:   "NETGEAR",
-       [3]byte{48, 73, 59}:    "Nanjing Z-Com Wireless Co.,Ltd",
-       [3]byte{48, 76, 126}:   "Panasonic Electric Works Automation Controls Techno Co.,Ltd.",
-       [3]byte{48, 78, 195}:   "Tianjin Techua Technology Co., Ltd.",
-       [3]byte{48, 81, 248}:   "BYK-Gardner GmbH",
-       [3]byte{48, 82, 90}:    "NST Co., LTD",
-       [3]byte{48, 82, 203}:   "Liteon Technology Corporation",
-       [3]byte{48, 85, 237}:   "Trex Network LLC",
-       [3]byte{48, 87, 172}:   "IRLAB LTD.",
-       [3]byte{48, 88, 144}:   "Frontier Silicon Ltd",
-       [3]byte{48, 89, 91}:    "streamnow AG",
-       [3]byte{48, 89, 183}:   "Microsoft",
-       [3]byte{48, 90, 58}:    "ASUSTek COMPUTER INC.",
-       [3]byte{48, 93, 56}:    "Beissbarth",
-       [3]byte{48, 96, 35}:    "ARRIS Group, Inc.",
-       [3]byte{48, 97, 18}:    "PAV GmbH",
-       [3]byte{48, 97, 24}:    "Paradom Inc.",
-       [3]byte{48, 99, 107}:   "Apple, Inc.",
-       [3]byte{48, 101, 236}:  "Wistron (ChongQing)",
-       [3]byte{48, 104, 140}:  "Reach Technology Inc.",
-       [3]byte{48, 105, 75}:   "RIM",
-       [3]byte{48, 108, 190}:  "Skymotion Technology (HK) Limited",
-       [3]byte{48, 110, 92}:   "Validus Technologies",
-       [3]byte{48, 113, 178}:  "Hangzhou Prevail Optoelectronic Equipment Co.,LTD.",
-       [3]byte{48, 115, 80}:   "Inpeco SA",
-       [3]byte{48, 116, 150}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{48, 117, 18}:   "Sony Mobile Communications AB",
-       [3]byte{48, 118, 111}:  "LG Electronics (Mobile Communications)",
-       [3]byte{48, 119, 203}:  "Maike Industry(Shenzhen)CO.,LTD",
-       [3]byte{48, 120, 92}:   "Partow Tamas Novin (Parman)",
-       [3]byte{48, 120, 107}:  "TIANJIN Golden Pentagon Electronics Co., Ltd.",
-       [3]byte{48, 120, 194}:  "Innowireless, Co. Ltd.",
-       [3]byte{48, 124, 48}:   "RIM",
-       [3]byte{48, 124, 94}:   "Juniper Networks",
-       [3]byte{48, 124, 178}:  "ANOV FRANCE",
-       [3]byte{48, 126, 203}:  "SFR",
-       [3]byte{48, 132, 84}:   "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{48, 133, 169}:  "ASUSTek COMPUTER INC.",
-       [3]byte{48, 135, 48}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{48, 135, 217}:  "Ruckus Wireless",
-       [3]byte{48, 137, 118}:  "DALIAN LAMBA TECHNOLOGY CO.,LTD",
-       [3]byte{48, 137, 153}:  "Guangdong East Power Co.,",
-       [3]byte{48, 137, 211}:  "HONGKONG UCLOUDLINK NETWORK TECHNOLOGY LIMITED",
-       [3]byte{48, 140, 251}:  "Dropcam",
-       [3]byte{48, 141, 153}:  "Hewlett Packard",
-       [3]byte{48, 144, 171}:  "Apple, Inc.",
-       [3]byte{48, 145, 143}:  "Technicolor",
-       [3]byte{48, 146, 246}:  "SHANGHAI SUNMON COMMUNICATION TECHNOGY CO.,LTD",
-       [3]byte{48, 149, 227}:  "SHANGHAI SIMCOM LIMITED",
-       [3]byte{48, 150, 251}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{48, 153, 53}:   "zte corporation",
-       [3]byte{48, 155, 173}:  "BBK EDUCATIONAL ELECTRONICS CORP.,LTD.",
-       [3]byte{48, 156, 35}:   "Micro-Star INTL CO., LTD.",
-       [3]byte{48, 159, 251}:  "Ardomus Networks Corporation",
-       [3]byte{48, 162, 32}:   "ARG Telecom",
-       [3]byte{48, 162, 67}:   "Shenzhen Prifox Innovation Technology Co., Ltd.",
-       [3]byte{48, 168, 219}:  "Sony Mobile Communications AB",
-       [3]byte{48, 169, 222}:  "LG Innotek",
-       [3]byte{48, 170, 189}:  "Shanghai Reallytek Information Technology Co.,Ltd",
-       [3]byte{48, 174, 123}:  "Deqing Dusun Electron CO., LTD",
-       [3]byte{48, 174, 164}:  "Espressif Inc.",
-       [3]byte{48, 174, 246}:  "Radio Mobile Access",
-       [3]byte{48, 177, 100}:  "Power Electronics International Inc.",
-       [3]byte{48, 178, 22}:   "Hytec Geraetebau GmbH",
-       [3]byte{48, 179, 162}:  "Shenzhen Heguang Measurement & Control Technology Co.,Ltd",
-       [3]byte{48, 180, 158}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{48, 180, 184}:  "LG Electronics",
-       [3]byte{48, 181, 194}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{48, 181, 241}:  "Aitexin Technology Co., Ltd",
-       [3]byte{48, 182, 45}:   "Mojo Networks, Inc.",
-       [3]byte{48, 182, 79}:   "Juniper Networks",
-       [3]byte{48, 192, 27}:   "Shenzhen Jingxun Software Telecommunication Technology Co.,Ltd",
-       [3]byte{48, 195, 217}:  "ALPS ELECTRIC CO.,LTD.",
-       [3]byte{48, 197, 7}:    "ECI Telecom Ltd.",
-       [3]byte{48, 199, 80}:   "MIC Technology Group",
-       [3]byte{48, 199, 174}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{48, 200, 42}:   "WI-BIZ srl",
-       [3]byte{48, 203, 248}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{48, 205, 167}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{48, 209, 126}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{48, 211, 45}:   "devolo AG",
-       [3]byte{48, 211, 87}:   "Logosol, Inc.",
-       [3]byte{48, 211, 134}:  "zte corporation",
-       [3]byte{48, 212, 106}:  "Autosales Incorporated",
-       [3]byte{48, 213, 135}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{48, 214, 201}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{48, 222, 134}:  "Cedac Software S.r.l.",
-       [3]byte{48, 224, 144}:  "Linctronix Ltd,",
-       [3]byte{48, 225, 113}:  "Hewlett Packard",
-       [3]byte{48, 227, 122}:  "Intel Corporate",
-       [3]byte{48, 228, 142}:  "Vodafone UK",
-       [3]byte{48, 228, 219}:  "Cisco Systems, Inc",
-       [3]byte{48, 235, 31}:   "Skylab M&C Technology Co.,Ltd",
-       [3]byte{48, 235, 37}:   "INTEK DIGITAL",
-       [3]byte{48, 239, 209}:  "Alstom Strongwish (Shenzhen) Co., Ltd.",
-       [3]byte{48, 243, 29}:   "zte corporation",
-       [3]byte{48, 243, 53}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{48, 243, 58}:   "+plugg srl",
-       [3]byte{48, 244, 47}:   "ESP",
-       [3]byte{48, 246, 185}:  "Ecocentric Energy",
-       [3]byte{48, 247, 13}:   "Cisco Systems, Inc",
-       [3]byte{48, 247, 114}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{48, 247, 127}:  "S Mobile Devices Limited",
-       [3]byte{48, 247, 197}:  "Apple, Inc.",
-       [3]byte{48, 247, 215}:  "Thread Technology Co., Ltd",
-       [3]byte{48, 249, 237}:  "Sony Corporation",
-       [3]byte{48, 250, 183}:  "Tunai Creative",
-       [3]byte{48, 251, 148}:  "Shanghai Fangzhiwei Information Technology CO.,Ltd.",
-       [3]byte{48, 252, 104}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{48, 253, 17}:   "MACROTECH (USA) INC.",
-       [3]byte{48, 254, 49}:   "Nokia",
-       [3]byte{48, 255, 246}:  "HangZhou KuoHeng Technology Co.,ltd",
-       [3]byte{52, 0, 138}:    "IEEE Registration Authority",
-       [3]byte{52, 0, 163}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{52, 2, 134}:    "Intel Corporate",
-       [3]byte{52, 2, 155}:    "CloudBerry Technologies Private Limited",
-       [3]byte{52, 4, 158}:    "IEEE Registration Authority",
-       [3]byte{52, 7, 79}:     "AccelStor, Inc.",
-       [3]byte{52, 7, 251}:    "Ericsson AB",
-       [3]byte{52, 8, 4}:      "D-Link Corporation",
-       [3]byte{52, 8, 188}:    "Apple, Inc.",
-       [3]byte{52, 10, 34}:    "TOP-ACCESS ELECTRONICS CO LTD",
-       [3]byte{52, 10, 255}:   "Qingdao Hisense Communications Co.,Ltd.",
-       [3]byte{52, 11, 64}:    "MIOS ELETTRONICA SRL",
-       [3]byte{52, 12, 237}:   "Moduel AB",
-       [3]byte{52, 18, 144}:   "Treeview Co.,Ltd.",
-       [3]byte{52, 18, 152}:   "Apple, Inc.",
-       [3]byte{52, 19, 168}:   "Mediplan Limited",
-       [3]byte{52, 19, 232}:   "Intel Corporate",
-       [3]byte{52, 20, 95}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{52, 21, 19}:    "Texas Instruments",
-       [3]byte{52, 21, 158}:   "Apple, Inc.",
-       [3]byte{52, 23, 235}:   "Dell Inc.",
-       [3]byte{52, 26, 53}:    "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{52, 26, 76}:    "SHENZHEN WEIBU ELECTRONICS CO.,LTD.",
-       [3]byte{52, 27, 34}:    "Grandbeing Technology Co., Ltd",
-       [3]byte{52, 30, 107}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{52, 31, 228}:   "ARRIS Group, Inc.",
-       [3]byte{52, 33, 9}:     "Jensen Scandinavia AS",
-       [3]byte{52, 35, 135}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{52, 35, 186}:   "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
-       [3]byte{52, 37, 93}:    "Shenzhen Loadcom Technology Co.,Ltd",
-       [3]byte{52, 38, 6}:     "CarePredict, Inc.",
-       [3]byte{52, 40, 240}:   "ATN International Limited",
-       [3]byte{52, 41, 143}:   "IEEE Registration Authority",
-       [3]byte{52, 41, 234}:   "MCD ELECTRONICS SP. Z O.O.",
-       [3]byte{52, 42, 241}:   "Texas Instruments",
-       [3]byte{52, 45, 13}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{52, 47, 110}:   "Anywire corporation",
-       [3]byte{52, 49, 17}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{52, 49, 196}:   "AVM GmbH",
-       [3]byte{52, 50, 230}:   "Panasonic Industrial Devices Europe GmbH",
-       [3]byte{52, 54, 59}:    "Apple, Inc.",
-       [3]byte{52, 55, 89}:    "zte corporation",
-       [3]byte{52, 56, 175}:   "Inlab Software GmbH",
-       [3]byte{52, 56, 183}:   "HUMAX Co., Ltd.",
-       [3]byte{52, 61, 152}:   "JinQianMao Technology Co.,Ltd.",
-       [3]byte{52, 61, 196}:   "BUFFALO.INC",
-       [3]byte{52, 64, 181}:   "IBM",
-       [3]byte{52, 65, 93}:    "Intel Corporate",
-       [3]byte{52, 70, 111}:   "HiTEM Engineering",
-       [3]byte{52, 75, 61}:    "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{52, 75, 80}:    "zte corporation",
-       [3]byte{52, 76, 164}:   "amazipoint technology Ltd.",
-       [3]byte{52, 76, 200}:   "Echodyne Corp",
-       [3]byte{52, 77, 234}:   "zte corporation",
-       [3]byte{52, 77, 247}:   "LG Electronics (Mobile Communications)",
-       [3]byte{52, 79, 63}:    "IO-Power Technology Co., Ltd.",
-       [3]byte{52, 79, 92}:    "R&amp;M AG",
-       [3]byte{52, 79, 105}:   "EKINOPS SAS",
-       [3]byte{52, 81, 170}:   "JID GLOBAL",
-       [3]byte{52, 81, 201}:   "Apple, Inc.",
-       [3]byte{52, 84, 60}:    "TAKAOKA TOKO CO.,LTD.",
-       [3]byte{52, 86, 254}:   "Cisco Meraki",
-       [3]byte{52, 87, 96}:    "MitraStar Technology Corp.",
-       [3]byte{52, 91, 17}:    "EVI HEAT AB",
-       [3]byte{52, 91, 187}:   "GD Midea Air-Conditioning Equipment Co.,Ltd.",
-       [3]byte{52, 92, 64}:    "Cargt Holdings LLC",
-       [3]byte{52, 93, 16}:    "Wytek",
-       [3]byte{52, 97, 120}:   "The Boeing Company",
-       [3]byte{52, 98, 136}:   "Cisco Systems, Inc",
-       [3]byte{52, 100, 169}:  "Hewlett Packard",
-       [3]byte{52, 104, 74}:   "Teraworks Co., Ltd.",
-       [3]byte{52, 104, 149}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{52, 105, 135}:  "zte corporation",
-       [3]byte{52, 106, 194}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{52, 107, 211}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{52, 108, 15}:   "Pramod Telecom Pvt. Ltd",
-       [3]byte{52, 110, 138}:  "Ecosense",
-       [3]byte{52, 110, 157}:  "Ericsson AB",
-       [3]byte{52, 111, 144}:  "Cisco Systems, Inc",
-       [3]byte{52, 111, 146}:  "White Rodgers Division",
-       [3]byte{52, 111, 237}:  "Enovation Controls",
-       [3]byte{52, 117, 199}:  "Avaya Inc",
-       [3]byte{52, 118, 197}:  "I-O DATA DEVICE, INC.",
-       [3]byte{52, 120, 119}:  "O-Net Communications (Shenzhen) Limited",
-       [3]byte{52, 120, 215}:  "Gionee Communication Equipment Co.,Ltd.",
-       [3]byte{52, 122, 96}:   "ARRIS Group, Inc.",
-       [3]byte{52, 126, 57}:   "Nokia Danmark A/S",
-       [3]byte{52, 128, 179}:  "Xiaomi Communications Co Ltd",
-       [3]byte{52, 129, 55}:   "UNICARD SA",
-       [3]byte{52, 129, 196}:  "AVM GmbH",
-       [3]byte{52, 129, 244}:  "SST Taiwan Ltd.",
-       [3]byte{52, 130, 222}:  "Kiio Inc",
-       [3]byte{52, 131, 2}:    "iFORCOM Co., Ltd",
-       [3]byte{52, 132, 70}:   "Ericsson AB",
-       [3]byte{52, 133, 132}:  "Aerohive Networks Inc.",
-       [3]byte{52, 134, 42}:   "Heinz Lackmann GmbH & Co KG",
-       [3]byte{52, 135, 61}:   "Quectel Wireless Solution Co.,Ltd.",
-       [3]byte{52, 136, 93}:   "Logitech Far East",
-       [3]byte{52, 138, 123}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{52, 138, 174}:  "Sagemcom Broadband SAS",
-       [3]byte{52, 143, 39}:   "Ruckus Wireless",
-       [3]byte{52, 149, 219}:  "Logitec Corporation",
-       [3]byte{52, 150, 114}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{52, 151, 246}:  "ASUSTek COMPUTER INC.",
-       [3]byte{52, 151, 251}:  "ADVANCED RF TECHNOLOGIES INC",
-       [3]byte{52, 153, 111}:  "VPI Engineering",
-       [3]byte{52, 153, 113}:  "Quanta Storage Inc.",
-       [3]byte{52, 153, 215}:  "Universal Flow Monitors, Inc.",
-       [3]byte{52, 154, 13}:   "ZBD Displays Ltd",
-       [3]byte{52, 155, 91}:   "Maquet GmbH",
-       [3]byte{52, 157, 144}:  "Heinzmann GmbH & CO. KG",
-       [3]byte{52, 158, 52}:   "Evervictory Electronic Co.Ltd",
-       [3]byte{52, 161, 131}:  "AWare, Inc",
-       [3]byte{52, 162, 162}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{52, 163, 149}:  "Apple, Inc.",
-       [3]byte{52, 163, 191}:  "Terewave. Inc.",
-       [3]byte{52, 165, 93}:   "TECHNOSOFT INTERNATIONAL SRL",
-       [3]byte{52, 165, 225}:  "Sensorist ApS",
-       [3]byte{52, 166, 140}:  "Shine Profit Development Limited",
-       [3]byte{52, 167, 9}:    "Trevil srl",
-       [3]byte{52, 167, 186}:  "Fischer International Systems Corporation",
-       [3]byte{52, 168, 67}:   "KYOCERA Display Corporation",
-       [3]byte{52, 168, 78}:   "Cisco Systems, Inc",
-       [3]byte{52, 170, 139}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{52, 170, 153}:  "Nokia",
-       [3]byte{52, 170, 238}:  "Mikrovisatos Servisas UAB",
-       [3]byte{52, 171, 55}:   "Apple, Inc.",
-       [3]byte{52, 173, 228}:  "Shanghai Chint Power Systems Co., Ltd.",
-       [3]byte{52, 175, 44}:   "Nintendo Co., Ltd.",
-       [3]byte{52, 177, 247}:  "Texas Instruments",
-       [3]byte{52, 179, 84}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{52, 181, 113}:  "PLDS",
-       [3]byte{52, 183, 253}:  "Guangzhou Younghead Electronic Technology Co.,Ltd",
-       [3]byte{52, 186, 56}:   "PAL MOHAN ELECTRONICS PVT LTD",
-       [3]byte{52, 186, 81}:   "Se-Kure Controls, Inc.",
-       [3]byte{52, 186, 117}:  "Tembo Systems, Inc.",
-       [3]byte{52, 186, 154}:  "Asiatelco Technologies Co.",
-       [3]byte{52, 187, 31}:   "BlackBerry RTS",
-       [3]byte{52, 187, 38}:   "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{52, 188, 166}:  "Beijing Ding Qing Technology, Ltd.",
-       [3]byte{52, 189, 200}:  "Cisco Systems, Inc",
-       [3]byte{52, 189, 249}:  "Shanghai WDK Industrial Co.,Ltd.",
-       [3]byte{52, 189, 250}:  "Cisco SPVTG",
-       [3]byte{52, 190, 0}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{52, 191, 144}:  "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{52, 192, 89}:   "Apple, Inc.",
-       [3]byte{52, 192, 249}:  "Rockwell Automation",
-       [3]byte{52, 195, 172}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{52, 195, 210}:  "FN-LINK TECHNOLOGY LIMITED",
-       [3]byte{52, 197, 208}:  "Hagleitner Hygiene International GmbH",
-       [3]byte{52, 198, 154}:  "Enecsys Ltd",
-       [3]byte{52, 199, 49}:   "ALPS ELECTRIC CO.,LTD.",
-       [3]byte{52, 200, 3}:    "Nokia Corporation",
-       [3]byte{52, 201, 157}:  "EIDOLON COMMUNICATIONS TECHNOLOGY CO. LTD.",
-       [3]byte{52, 201, 240}:  "LM Technologies Ltd",
-       [3]byte{52, 204, 40}:   "Nexpring Co. LTD.,",
-       [3]byte{52, 205, 109}:  "CommSky Technologies",
-       [3]byte{52, 205, 190}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{52, 206, 0}:    "XIAOMI Electronics,CO.,LTD",
-       [3]byte{52, 206, 148}:  "Parsec (Pty) Ltd",
-       [3]byte{52, 208, 155}:  "MobilMAX Technology Inc.",
-       [3]byte{52, 208, 184}:  "IEEE Registration Authority",
-       [3]byte{52, 210, 112}:  "Amazon Technologies Inc.",
-       [3]byte{52, 210, 196}:  "RENA GmbH Print Systeme",
-       [3]byte{52, 215, 180}:  "Tributary Systems, Inc.",
-       [3]byte{52, 217, 84}:   "WiBotic Inc.",
-       [3]byte{52, 219, 253}:  "Cisco Systems, Inc",
-       [3]byte{52, 222, 26}:   "Intel Corporate",
-       [3]byte{52, 222, 52}:   "zte corporation",
-       [3]byte{52, 223, 42}:   "Fujikon Industrial Co.,Limited",
-       [3]byte{52, 224, 207}:  "zte corporation",
-       [3]byte{52, 224, 215}:  "DONGGUAN QISHENG ELECTRONICS INDUSTRIAL CO., LTD",
-       [3]byte{52, 226, 253}:  "Apple, Inc.",
-       [3]byte{52, 227, 128}:  "Genexis B.V.",
-       [3]byte{52, 228, 42}:   "Automatic Bar Controls Inc.",
-       [3]byte{52, 230, 173}:  "Intel Corporate",
-       [3]byte{52, 230, 215}:  "Dell Inc.",
-       [3]byte{52, 231, 11}:   "HAN Networks Co., Ltd",
-       [3]byte{52, 231, 28}:   "Shenzhen YOUHUA Technology Co., Ltd",
-       [3]byte{52, 233, 17}:   "vivo Mobile Communication Co., Ltd.",
-       [3]byte{52, 234, 52}:   "HangZhou Gubei Electronics Technology Co.,Ltd",
-       [3]byte{52, 237, 11}:   "Shanghai XZ-COM.CO.,Ltd.",
-       [3]byte{52, 239, 68}:   "2Wire Inc",
-       [3]byte{52, 239, 139}:  "NTT Communications Corporation",
-       [3]byte{52, 240, 202}:  "Shenzhen Linghangyuan Digital Technology Co.,Ltd.",
-       [3]byte{52, 243, 154}:  "Intel Corporate",
-       [3]byte{52, 243, 155}:  "WizLAN Ltd.",
-       [3]byte{52, 246, 45}:   "SHARP Corporation",
-       [3]byte{52, 246, 75}:   "Intel Corporate",
-       [3]byte{52, 246, 210}:  "Panasonic Taiwan Co.,Ltd.",
-       [3]byte{52, 249, 104}:  "ATEK Products, LLC",
-       [3]byte{52, 250, 64}:   "Guangzhou Robustel Technologies Co., Limited",
-       [3]byte{52, 250, 159}:  "Ruckus Wireless",
-       [3]byte{52, 252, 111}:  "ALCEA",
-       [3]byte{52, 252, 185}:  "Hewlett Packard Enterprise",
-       [3]byte{52, 252, 239}:  "LG Electronics (Mobile Communications)",
-       [3]byte{56, 1, 149}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{56, 1, 151}:    "TSST Global,Inc",
-       [3]byte{56, 1, 159}:    "SHENZHEN FAST TECHNOLOGIES CO.,LTD",
-       [3]byte{56, 5, 70}:     "Foctek Photonics, Inc.",
-       [3]byte{56, 5, 172}:    "Piller Group GmbH",
-       [3]byte{56, 6, 180}:    "A.D.C. GmbH",
-       [3]byte{56, 7, 212}:    "Zeppelin Systems GmbH",
-       [3]byte{56, 8, 253}:    "Silca Spa",
-       [3]byte{56, 9, 164}:    "Firefly Integrations",
-       [3]byte{56, 10, 10}:    "Sky-City Communication and Electronics Limited Company",
-       [3]byte{56, 10, 148}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{56, 10, 171}:   "Formlabs",
-       [3]byte{56, 11, 64}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{56, 13, 212}:   "Primax Electronics Ltd.",
-       [3]byte{56, 14, 77}:    "Cisco Systems, Inc",
-       [3]byte{56, 14, 123}:   "V.P.S. Thai Co., Ltd",
-       [3]byte{56, 15, 74}:    "Apple, Inc.",
-       [3]byte{56, 15, 228}:   "Dedicated Network Partners Oy",
-       [3]byte{56, 16, 213}:   "AVM Audiovisuelles Marketing und Computersysteme GmbH",
-       [3]byte{56, 22, 209}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{56, 23, 102}:   "PROMZAKAZ LTD.",
-       [3]byte{56, 23, 195}:   "Hewlett Packard Enterprise",
-       [3]byte{56, 23, 225}:   "Technicolor CH USA Inc.",
-       [3]byte{56, 25, 47}:    "Nokia Corporation",
-       [3]byte{56, 28, 26}:    "Cisco Systems, Inc",
-       [3]byte{56, 28, 35}:    "Hilan Technology CO.,LTD",
-       [3]byte{56, 28, 74}:    "SIMCom Wireless Solutions Co.,Ltd.",
-       [3]byte{56, 29, 217}:   "FN-LINK TECHNOLOGY LIMITED",
-       [3]byte{56, 32, 86}:    "Cisco Systems, Inc",
-       [3]byte{56, 32, 168}:   "ColorTokens, Inc.",
-       [3]byte{56, 33, 135}:   "Midea Group Co., Ltd.",
-       [3]byte{56, 34, 157}:   "ADB Broadband Italia",
-       [3]byte{56, 34, 214}:   "Hangzhou H3C Technologies Co., Limited",
-       [3]byte{56, 37, 107}:   "Microsoft Mobile Oy",
-       [3]byte{56, 38, 43}:    "UTran Technology",
-       [3]byte{56, 38, 205}:   "ANDTEK",
-       [3]byte{56, 40, 234}:   "Fujian Netcom Technology Co., LTD",
-       [3]byte{56, 41, 90}:    "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{56, 41, 221}:   "ONvocal Inc",
-       [3]byte{56, 43, 120}:   "ECO PLUGS ENTERPRISE CO., LTD",
-       [3]byte{56, 44, 74}:    "ASUSTek COMPUTER INC.",
-       [3]byte{56, 45, 209}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{56, 45, 232}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{56, 49, 172}:   "WEG",
-       [3]byte{56, 55, 139}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{56, 58, 33}:    "IEEE Registration Authority",
-       [3]byte{56, 59, 200}:   "2Wire Inc",
-       [3]byte{56, 63, 16}:    "DBL Technology Ltd.",
-       [3]byte{56, 66, 51}:    "Wildeboer Bauteile GmbH",
-       [3]byte{56, 66, 166}:   "Ingenieurbuero Stahlkopf",
-       [3]byte{56, 67, 105}:   "Patrol Products Consortium LLC",
-       [3]byte{56, 67, 125}:   "Compal Broadband Networks, Inc.",
-       [3]byte{56, 69, 76}:    "Light Labs, Inc.",
-       [3]byte{56, 69, 140}:   "MyCloud Technology corporation",
-       [3]byte{56, 70, 8}:     "zte corporation",
-       [3]byte{56, 72, 76}:    "Apple, Inc.",
-       [3]byte{56, 75, 118}:   "AIRTAME ApS",
-       [3]byte{56, 76, 79}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{56, 76, 144}:   "ARRIS Group, Inc.",
-       [3]byte{56, 79, 73}:    "Juniper Networks",
-       [3]byte{56, 79, 240}:   "AzureWave Technology Inc.",
-       [3]byte{56, 82, 26}:    "Nokia",
-       [3]byte{56, 86, 16}:    "CANDY HOUSE, Inc.",
-       [3]byte{56, 88, 12}:    "Panaccess Systems GmbH",
-       [3]byte{56, 89, 248}:   "MindMade Sp. z o.o.",
-       [3]byte{56, 89, 249}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{56, 90, 168}:   "Beijing Zhongdun Security Technology Development Co.",
-       [3]byte{56, 95, 102}:   "Cisco SPVTG",
-       [3]byte{56, 95, 195}:   "Yu Jeong System, Co.Ltd",
-       [3]byte{56, 96, 119}:   "PEGATRON CORPORATION",
-       [3]byte{56, 99, 187}:   "Hewlett Packard",
-       [3]byte{56, 99, 246}:   "3NOD MULTIMEDIA(SHENZHEN)CO.,LTD",
-       [3]byte{56, 102, 69}:   "OOSIC Technology CO.,Ltd",
-       [3]byte{56, 102, 240}:  "Apple, Inc.",
-       [3]byte{56, 103, 147}:  "Asia Optical Co., Inc.",
-       [3]byte{56, 107, 28}:   "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.",
-       [3]byte{56, 107, 187}:  "ARRIS Group, Inc.",
-       [3]byte{56, 108, 155}:  "Ivy Biomedical",
-       [3]byte{56, 110, 33}:   "Wasion Group Ltd.",
-       [3]byte{56, 110, 162}:  "vivo Mobile Communication Co., Ltd.",
-       [3]byte{56, 112, 12}:   "ARRIS Group, Inc.",
-       [3]byte{56, 113, 222}:  "Apple, Inc.",
-       [3]byte{56, 114, 192}:  "Comtrend Corporation",
-       [3]byte{56, 115, 234}:  "IEEE Registration Authority",
-       [3]byte{56, 118, 202}:  "Shenzhen Smart Intelligent Technology Co.Ltd",
-       [3]byte{56, 118, 209}:  "Euronda SpA",
-       [3]byte{56, 123, 71}:   "AKELA, Inc.",
-       [3]byte{56, 131, 69}:   "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{56, 134, 2}:    "Flexoptix GmbH",
-       [3]byte{56, 137, 220}:  "Opticon Sensors Europe B.V.",
-       [3]byte{56, 138, 183}:  "ITC Networks",
-       [3]byte{56, 140, 80}:   "LG Electronics",
-       [3]byte{56, 142, 231}:  "Fanhattan LLC",
-       [3]byte{56, 144, 165}:  "Cisco Systems, Inc",
-       [3]byte{56, 145, 213}:  "Hangzhou H3C Technologies Co., Limited",
-       [3]byte{56, 145, 251}:  "Xenox Holding BV",
-       [3]byte{56, 148, 150}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{56, 148, 224}:  "Syrotech Networks. Ltd.",
-       [3]byte{56, 149, 146}:  "Beijing Tendyron Corporation",
-       [3]byte{56, 151, 214}:  "Hangzhou H3C Technologies Co., Limited",
-       [3]byte{56, 152, 216}:  "MERITECH CO.,LTD",
-       [3]byte{56, 154, 246}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{56, 157, 146}:  "Seiko Epson Corporation",
-       [3]byte{56, 159, 90}:   "C-Kur TV Inc.",
-       [3]byte{56, 159, 131}:  "OTN Systems N.V.",
-       [3]byte{56, 162, 140}:  "SHENZHEN RF-LINK TECHNOLOGY CO.,LTD.",
-       [3]byte{56, 164, 237}:  "Xiaomi Communications Co Ltd",
-       [3]byte{56, 165, 60}:   "COMECER Netherlands",
-       [3]byte{56, 165, 182}:  "SHENZHEN MEGMEET ELECTRICAL CO.,LTD",
-       [3]byte{56, 166, 206}:  "BSkyB Ltd",
-       [3]byte{56, 168, 81}:   "Moog, Ing",
-       [3]byte{56, 168, 107}:  "Orga BV",
-       [3]byte{56, 169, 95}:   "Actifio Inc",
-       [3]byte{56, 170, 60}:   "SAMSUNG ELECTRO MECHANICS CO., LTD.",
-       [3]byte{56, 172, 61}:   "Nephos Inc",
-       [3]byte{56, 173, 142}:  "New H3C Technologies Co., Ltd",
-       [3]byte{56, 173, 190}:  "New H3C Technologies Co., Ltd",
-       [3]byte{56, 175, 215}:  "FUJITSU LIMITED",
-       [3]byte{56, 177, 45}:   "Sonotronic Nagel GmbH",
-       [3]byte{56, 177, 219}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{56, 181, 77}:   "Apple, Inc.",
-       [3]byte{56, 181, 189}:  "E.G.O. Elektro-Ger",
-       [3]byte{56, 183, 37}:   "Wistron Infocomm (Zhongshan) Corporation",
-       [3]byte{56, 183, 77}:   "Fijowave Limited",
-       [3]byte{56, 184, 235}:  "IEEE Registration Authority",
-       [3]byte{56, 187, 35}:   "OzVision America LLC",
-       [3]byte{56, 187, 60}:   "Avaya Inc",
-       [3]byte{56, 188, 1}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{56, 188, 26}:   "MEIZU Technology Co., Ltd.",
-       [3]byte{56, 191, 47}:   "Espec Corp.",
-       [3]byte{56, 191, 51}:   "NEC CASIO Mobile Communications",
-       [3]byte{56, 192, 150}:  "ALPS ELECTRIC CO.,LTD.",
-       [3]byte{56, 199, 10}:   "WiFiSong",
-       [3]byte{56, 199, 186}:  "CS Services Co.,Ltd.",
-       [3]byte{56, 200, 92}:   "Cisco SPVTG",
-       [3]byte{56, 201, 134}:  "Apple, Inc.",
-       [3]byte{56, 201, 169}:  "SMART High Reliability Solutions, Inc.",
-       [3]byte{56, 202, 151}:  "Contour Design LLC",
-       [3]byte{56, 202, 218}:  "Apple, Inc.",
-       [3]byte{56, 205, 7}:    "Beijing FaceCam Technology Co., Ltd.",
-       [3]byte{56, 209, 53}:   "EasyIO Corporation Sdn. Bhd.",
-       [3]byte{56, 210, 105}:  "Texas Instruments",
-       [3]byte{56, 212, 11}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{56, 213, 71}:   "ASUSTek COMPUTER INC.",
-       [3]byte{56, 214, 32}:   "Limidea Concept Pte. Ltd.",
-       [3]byte{56, 215, 202}:  "7HUGS LABS",
-       [3]byte{56, 216, 47}:   "zte corporation",
-       [3]byte{56, 219, 187}:  "Sunbow Telecom Co., Ltd.",
-       [3]byte{56, 222, 96}:   "Mohlenhoff GmbH",
-       [3]byte{56, 224, 142}:  "Mitsubishi Electric Corporation",
-       [3]byte{56, 226, 221}:  "zte corporation",
-       [3]byte{56, 227, 197}:  "Taicang T&W Electronics",
-       [3]byte{56, 229, 149}:  "SHENZHEN GONGJIN ELECTRONICS CO.,LT",
-       [3]byte{56, 231, 216}:  "HTC Corporation",
-       [3]byte{56, 232, 223}:  "b gmbh medien + datenbanken",
-       [3]byte{56, 233, 140}:  "Reco S.p.A.",
-       [3]byte{56, 234, 167}:  "Hewlett Packard",
-       [3]byte{56, 236, 17}:   "Novatek Microelectronics Corp.",
-       [3]byte{56, 236, 228}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{56, 237, 24}:   "Cisco Systems, Inc",
-       [3]byte{56, 238, 157}:  "Anedo Ltd.",
-       [3]byte{56, 240, 152}:  "Vapor Stone Rail Systems",
-       [3]byte{56, 240, 200}:  "Livestream",
-       [3]byte{56, 241, 53}:   "SensorTec-Canada",
-       [3]byte{56, 242, 62}:   "Microsoft Mobile Oy",
-       [3]byte{56, 243, 63}:   "TATSUNO CORPORATION",
-       [3]byte{56, 245, 87}:   "JOLATA, INC.",
-       [3]byte{56, 245, 151}:  "home2net GmbH",
-       [3]byte{56, 247, 8}:    "National Resource Management, Inc.",
-       [3]byte{56, 247, 61}:   "Amazon Technologies Inc.",
-       [3]byte{56, 247, 178}:  "SEOJUN ELECTRIC",
-       [3]byte{56, 248, 137}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{56, 248, 183}:  "V2COM PARTICIPACOES S.A.",
-       [3]byte{56, 248, 202}:  "OWIN Inc.",
-       [3]byte{56, 250, 202}:  "Skyworth Digital Technology(Shenzhen) Co.,Ltd",
-       [3]byte{56, 253, 254}:  "IEEE Registration Authority",
-       [3]byte{56, 254, 197}:  "Ellips B.V.",
-       [3]byte{56, 255, 54}:   "Ruckus Wireless",
-       [3]byte{60, 2, 177}:    "Creation Technologies LP",
-       [3]byte{60, 4, 191}:    "PRAVIS SYSTEMS Co.Ltd.,",
-       [3]byte{60, 5, 24}:     "Samsung Electronics Co.,Ltd",
-       [3]byte{60, 5, 171}:    "Product Creation Studio",
-       [3]byte{60, 7, 84}:     "Apple, Inc.",
-       [3]byte{60, 7, 113}:    "Sony Corporation",
-       [3]byte{60, 8, 30}:     "Beijing Yupont Electric Power Technology Co.,Ltd",
-       [3]byte{60, 8, 246}:    "Cisco Systems, Inc",
-       [3]byte{60, 9, 109}:    "Powerhouse Dynamics",
-       [3]byte{60, 12, 72}:    "Servergy, Inc.",
-       [3]byte{60, 12, 219}:   "UNIONMAN TECHNOLOGY CO.,LTD",
-       [3]byte{60, 14, 35}:    "Cisco Systems, Inc",
-       [3]byte{60, 15, 193}:   "KBC Networks",
-       [3]byte{60, 16, 64}:    "daesung network",
-       [3]byte{60, 16, 111}:   "ALBAHITH TECHNOLOGIES",
-       [3]byte{60, 16, 230}:   "PHAZR Inc.",
-       [3]byte{60, 17, 178}:   "Fraunhofer FIT",
-       [3]byte{60, 21, 194}:   "Apple, Inc.",
-       [3]byte{60, 21, 234}:   "TESCOM CO., LTD.",
-       [3]byte{60, 24, 159}:   "Nokia Corporation",
-       [3]byte{60, 24, 160}:   "Luxshare Precision Industry Company Limited",
-       [3]byte{60, 25, 21}:    "GFI Chrono Time",
-       [3]byte{60, 25, 125}:   "Ericsson AB",
-       [3]byte{60, 26, 15}:    "ClearSky Data",
-       [3]byte{60, 26, 87}:    "Cardiopulmonary Corp",
-       [3]byte{60, 26, 121}:   "Huayuan Technology CO.,LTD",
-       [3]byte{60, 28, 190}:   "JADAK LLC",
-       [3]byte{60, 30, 4}:     "D-Link International",
-       [3]byte{60, 30, 19}:    "HANGZHOU SUNRISE TECHNOLOGY CO., LTD",
-       [3]byte{60, 37, 215}:   "Nokia Corporation",
-       [3]byte{60, 38, 213}:   "Sotera Wireless",
-       [3]byte{60, 39, 99}:    "SLE quality engineering GmbH & Co. KG",
-       [3]byte{60, 42, 244}:   "Brother Industries, LTD.",
-       [3]byte{60, 44, 148}:   "杭州德澜科技有限公司(HangZhou Delan Technology Co.,Ltd)",
-       [3]byte{60, 44, 153}:   "Edgecore Networks Corporation",
-       [3]byte{60, 45, 183}:   "Texas Instruments",
-       [3]byte{60, 46, 249}:   "Apple, Inc.",
-       [3]byte{60, 46, 255}:   "Apple, Inc.",
-       [3]byte{60, 47, 58}:    "SFORZATO Corp.",
-       [3]byte{60, 48, 12}:    "Dewar Electronics Pty Ltd",
-       [3]byte{60, 49, 120}:   "Qolsys Inc.",
-       [3]byte{60, 51, 0}:     "Shenzhen Bilian electronic CO.,LTD",
-       [3]byte{60, 53, 86}:    "Cognitec Systems GmbH",
-       [3]byte{60, 54, 61}:    "Nokia Corporation",
-       [3]byte{60, 54, 228}:   "ARRIS Group, Inc.",
-       [3]byte{60, 56, 136}:   "ConnectQuest, llc",
-       [3]byte{60, 57, 195}:   "JW Electronics Co., Ltd.",
-       [3]byte{60, 57, 231}:   "IEEE Registration Authority",
-       [3]byte{60, 58, 115}:   "Avaya Inc",
-       [3]byte{60, 63, 81}:    "2CRSI",
-       [3]byte{60, 64, 79}:    "GUANGDONG PISEN ELECTRONICS CO.,LTD",
-       [3]byte{60, 67, 142}:   "ARRIS Group, Inc.",
-       [3]byte{60, 70, 216}:   "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{60, 71, 17}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{60, 73, 55}:    "ASSMANN Electronic GmbH",
-       [3]byte{60, 74, 146}:   "Hewlett Packard",
-       [3]byte{60, 76, 105}:   "Infinity System S.L.",
-       [3]byte{60, 76, 208}:   "CERAGON NETWORKS",
-       [3]byte{60, 78, 71}:    "Etronic A/S",
-       [3]byte{60, 82, 130}:   "Hewlett Packard",
-       [3]byte{60, 87, 189}:   "Kessler Crane Inc.",
-       [3]byte{60, 87, 213}:   "FiveCo",
-       [3]byte{60, 89, 30}:    "TCL King Electrical Appliances (Huizhou) Co., Ltd",
-       [3]byte{60, 90, 55}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{60, 90, 180}:   "Google, Inc.",
-       [3]byte{60, 92, 195}:   "Shenzhen First Blue Chip Technology Ltd",
-       [3]byte{60, 94, 195}:   "Cisco Systems, Inc",
-       [3]byte{60, 95, 1}:     "Synerchip Co., Ltd.",
-       [3]byte{60, 97, 4}:     "Juniper Networks",
-       [3]byte{60, 98, 0}:     "Samsung Electronics Co.,Ltd",
-       [3]byte{60, 98, 120}:   "SHENZHEN JETNET TECHNOLOGY CO.,LTD.",
-       [3]byte{60, 103, 22}:   "Lily Robotics",
-       [3]byte{60, 103, 44}:   "Sciovid Inc.",
-       [3]byte{60, 103, 140}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{60, 104, 22}:   "VXi Corporation",
-       [3]byte{60, 106, 125}:  "Niigata Power Systems Co., Ltd.",
-       [3]byte{60, 106, 157}:  "Dexatek Technology LTD.",
-       [3]byte{60, 110, 99}:   "Mitron OY",
-       [3]byte{60, 111, 69}:   "Fiberpro Inc.",
-       [3]byte{60, 111, 234}:  "Panasonic India Pvt. Ltd.",
-       [3]byte{60, 111, 247}:  "EnTek Systems, Inc.",
-       [3]byte{60, 112, 89}:   "MakerBot Industries",
-       [3]byte{60, 116, 55}:   "RIM",
-       [3]byte{60, 117, 74}:   "ARRIS Group, Inc.",
-       [3]byte{60, 119, 230}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{60, 120, 67}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{60, 120, 115}:  "Airsonics",
-       [3]byte{60, 122, 138}:  "ARRIS Group, Inc.",
-       [3]byte{60, 125, 177}:  "Texas Instruments",
-       [3]byte{60, 127, 111}:  "Telechips, Inc.",
-       [3]byte{60, 128, 170}:  "Ransnet Singapore Pte Ltd",
-       [3]byte{60, 129, 216}:  "Sagemcom Broadband SAS",
-       [3]byte{60, 131, 30}:   "CKD Corporation",
-       [3]byte{60, 131, 117}:  "Microsoft Corporation",
-       [3]byte{60, 131, 181}:  "Advance Vision Electronics Co. Ltd.",
-       [3]byte{60, 134, 168}:  "Sangshin elecom .co,, LTD",
-       [3]byte{60, 137, 112}:  "Neosfar",
-       [3]byte{60, 137, 166}:  "KAPELSE",
-       [3]byte{60, 138, 176}:  "Juniper Networks",
-       [3]byte{60, 138, 229}:  "Tensun Information Technology(Hangzhou) Co.,LTD",
-       [3]byte{60, 139, 205}:  "Alcatel-Lucent Shanghai Bell Co., Ltd",
-       [3]byte{60, 139, 254}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{60, 140, 64}:   "Hangzhou H3C Technologies Co., Limited",
-       [3]byte{60, 140, 248}:  "TRENDnet, Inc.",
-       [3]byte{60, 144, 102}:  "SmartRG, Inc.",
-       [3]byte{60, 145, 43}:   "Vexata Inc",
-       [3]byte{60, 145, 87}:   "Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd",
-       [3]byte{60, 145, 116}:  "ALONG COMMUNICATION TECHNOLOGY",
-       [3]byte{60, 146, 220}:  "Octopod Technology Co. Ltd.",
-       [3]byte{60, 148, 213}:  "Juniper Networks",
-       [3]byte{60, 149, 9}:    "Liteon Technology Corporation",
-       [3]byte{60, 151, 14}:   "Wistron InfoComm(Kunshan)Co.,Ltd.",
-       [3]byte{60, 151, 126}:  "IPS Technology Limited",
-       [3]byte{60, 152, 191}:  "Quest Controls, Inc.",
-       [3]byte{60, 153, 247}:  "Lansentechnology AB",
-       [3]byte{60, 154, 119}:  "Technicolor CH USA Inc.",
-       [3]byte{60, 159, 129}:  "Shenzhen CATIC Bit Communications Technology Co.,Ltd",
-       [3]byte{60, 160, 103}:  "Liteon Technology Corporation",
-       [3]byte{60, 161, 13}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{60, 163, 8}:    "Texas Instruments",
-       [3]byte{60, 163, 21}:   "Bless Information & Communications Co., Ltd",
-       [3]byte{60, 163, 26}:   "Oilfind International LLC",
-       [3]byte{60, 163, 72}:   "vivo Mobile Communication Co., Ltd.",
-       [3]byte{60, 165, 129}:  "vivo Mobile Communication Co., Ltd.",
-       [3]byte{60, 166, 22}:   "vivo Mobile Communication Co., Ltd.",
-       [3]byte{60, 167, 43}:   "MRV Communications (Networks) LTD",
-       [3]byte{60, 168, 42}:   "Hewlett Packard",
-       [3]byte{60, 169, 244}:  "Intel Corporate",
-       [3]byte{60, 170, 63}:   "iKey, Ltd.",
-       [3]byte{60, 171, 142}:  "Apple, Inc.",
-       [3]byte{60, 174, 105}:  "ESA Elektroschaltanlagen Grimma GmbH",
-       [3]byte{60, 177, 91}:   "Avaya Inc",
-       [3]byte{60, 177, 127}:  "Wattwatchers Pty Ld",
-       [3]byte{60, 182, 183}:  "vivo Mobile Communication Co., Ltd.",
-       [3]byte{60, 183, 43}:   "PLUMgrid Inc",
-       [3]byte{60, 183, 146}:  "Hitachi Maxell, Ltd., Optronics Division",
-       [3]byte{60, 184, 122}:  "Private",
-       [3]byte{60, 185, 166}:  "Belden Deutschland GmbH",
-       [3]byte{60, 187, 115}:  "Shenzhen Xinguodu Technology Co., Ltd.",
-       [3]byte{60, 187, 253}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{60, 189, 62}:   "Beijing Xiaomi Electronics Co., Ltd.",
-       [3]byte{60, 189, 216}:  "LG ELECTRONICS INC",
-       [3]byte{60, 190, 225}:  "NIKON CORPORATION",
-       [3]byte{60, 192, 121}:  "Shenzhen One-Nine Intelligent Electronic Science and Technology Co., Ltd",
-       [3]byte{60, 192, 198}:  "d&b audiotechnik GmbH",
-       [3]byte{60, 193, 44}:   "AES Corporation",
-       [3]byte{60, 193, 246}:  "Melange Systems Pvt. Ltd.",
-       [3]byte{60, 194, 67}:   "Nokia Corporation",
-       [3]byte{60, 194, 225}:  "XINHUA CONTROL ENGINEERING CO.,LTD",
-       [3]byte{60, 201, 158}:  "Huiyang Technology Co., Ltd",
-       [3]byte{60, 202, 135}:  "Iders Incorporated",
-       [3]byte{60, 203, 124}:  "TCT mobile ltd",
-       [3]byte{60, 205, 90}:   "Technische Alternative GmbH",
-       [3]byte{60, 205, 147}:  "LG ELECTRONICS INC",
-       [3]byte{60, 206, 21}:   "Mercedes-Benz USA, LLC",
-       [3]byte{60, 206, 115}:  "Cisco Systems, Inc",
-       [3]byte{60, 207, 91}:   "ICOMM HK LIMITED",
-       [3]byte{60, 208, 248}:  "Apple, Inc.",
-       [3]byte{60, 209, 110}:  "Telepower Communication Co., Ltd",
-       [3]byte{60, 212, 214}:  "WirelessWERX, Inc",
-       [3]byte{60, 215, 218}:  "SK Mtek microelectronics(shenzhen)limited",
-       [3]byte{60, 217, 43}:   "Hewlett Packard",
-       [3]byte{60, 217, 206}:  "Eclipse WiFi",
-       [3]byte{60, 218, 42}:   "zte corporation",
-       [3]byte{60, 221, 137}:  "SOMO HOLDINGS & TECH. CO.,LTD.",
-       [3]byte{60, 223, 30}:   "Cisco Systems, Inc",
-       [3]byte{60, 223, 169}:  "ARRIS Group, Inc.",
-       [3]byte{60, 223, 189}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{60, 224, 114}:  "Apple, Inc.",
-       [3]byte{60, 229, 166}:  "Hangzhou H3C Technologies Co., Limited",
-       [3]byte{60, 229, 180}:  "KIDASEN INDUSTRIA E COMERCIO DE ANTENAS LTDA",
-       [3]byte{60, 230, 36}:   "LG Display",
-       [3]byte{60, 234, 79}:   "2Wire Inc",
-       [3]byte{60, 234, 251}:  "NSE AG",
-       [3]byte{60, 239, 140}:  "Zhejiang Dahua Technology Co., Ltd.",
-       [3]byte{60, 243, 146}:  "Virtualtek. Co. Ltd",
-       [3]byte{60, 245, 44}:   "DSPECIALISTS GmbH",
-       [3]byte{60, 245, 145}:  "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{60, 247, 42}:   "Nokia Corporation",
-       [3]byte{60, 247, 72}:   "Shenzhen Linsn Technology Development Co.,Ltd",
-       [3]byte{60, 247, 164}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{60, 248, 8}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{60, 248, 98}:   "Intel Corporate",
-       [3]byte{60, 250, 67}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{60, 251, 150}:  "Emcraft Systems LLC",
-       [3]byte{60, 253, 254}:  "Intel Corporate",
-       [3]byte{64, 0, 224}:    "Derek(Shaoguan)Limited",
-       [3]byte{64, 1, 7}:      "Arista Corp",
-       [3]byte{64, 1, 122}:    "Cisco Systems, Inc",
-       [3]byte{64, 1, 198}:    "3COM EUROPE LTD",
-       [3]byte{64, 4, 12}:     "A&T",
-       [3]byte{64, 7, 192}:    "Railtec Systems GmbH",
-       [3]byte{64, 13, 16}:    "ARRIS Group, Inc.",
-       [3]byte{64, 14, 103}:   "Tremol Ltd.",
-       [3]byte{64, 14, 133}:   "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
-       [3]byte{64, 17, 220}:   "Sonance",
-       [3]byte{64, 18, 228}:   "Compass-EOS",
-       [3]byte{64, 19, 217}:   "Global ES",
-       [3]byte{64, 21, 151}:   "Protect America, Inc.",
-       [3]byte{64, 22, 59}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{64, 22, 126}:   "ASUSTek COMPUTER INC.",
-       [3]byte{64, 22, 159}:   "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{64, 22, 250}:   "EKM Metering",
-       [3]byte{64, 24, 177}:   "Aerohive Networks Inc.",
-       [3]byte{64, 24, 215}:   "Smartronix, Inc.",
-       [3]byte{64, 27, 95}:    "Weifang GoerTek Technology Co.,Ltd.",
-       [3]byte{64, 29, 89}:    "Biometric Associates, LP",
-       [3]byte{64, 34, 237}:   "Digital Projection Ltd",
-       [3]byte{64, 37, 194}:   "Intel Corporate",
-       [3]byte{64, 39, 11}:    "Mobileeco Co., Ltd",
-       [3]byte{64, 40, 20}:    "RFI Engineering",
-       [3]byte{64, 43, 161}:   "Sony Mobile Communications AB",
-       [3]byte{64, 44, 244}:   "Universal Global Scientific Industrial Co., Ltd.",
-       [3]byte{64, 46, 40}:    "MiXTelematics",
-       [3]byte{64, 48, 4}:     "Apple, Inc.",
-       [3]byte{64, 48, 103}:   "Conlog (Pty) Ltd",
-       [3]byte{64, 51, 26}:    "Apple, Inc.",
-       [3]byte{64, 51, 108}:   "Godrej & Boyce Mfg. co. ltd",
-       [3]byte{64, 55, 173}:   "Macro Image Technology, Inc.",
-       [3]byte{64, 60, 252}:   "Apple, Inc.",
-       [3]byte{64, 61, 236}:   "HUMAX Co., Ltd.",
-       [3]byte{64, 63, 140}:   "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{64, 64, 34}:    "ZIV",
-       [3]byte{64, 64, 107}:   "Icomera",
-       [3]byte{64, 64, 167}:   "Sony Mobile Communications AB",
-       [3]byte{64, 66, 41}:    "Layer3TV, Inc",
-       [3]byte{64, 69, 218}:   "Spreadtrum Communications (Shanghai) Co., Ltd.",
-       [3]byte{64, 71, 106}:   "AG Acquisition Corp. d.b.a. ASTRO Gaming",
-       [3]byte{64, 72, 253}:   "IEEE Registration Authority",
-       [3]byte{64, 73, 15}:    "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{64, 73, 138}:   "Synapticon GmbH",
-       [3]byte{64, 74, 3}:     "Zyxel Communications Corporation",
-       [3]byte{64, 74, 24}:    "Addrek Smart Solutions",
-       [3]byte{64, 74, 212}:   "Widex A/S",
-       [3]byte{64, 77, 127}:   "Apple, Inc.",
-       [3]byte{64, 77, 142}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{64, 78, 54}:    "HTC Corporation",
-       [3]byte{64, 78, 235}:   "Higher Way Electronic Co., Ltd.",
-       [3]byte{64, 80, 224}:   "Milton Security Group LLC",
-       [3]byte{64, 81, 108}:   "Grandex International Corporation",
-       [3]byte{64, 82, 13}:    "Pico Technology",
-       [3]byte{64, 84, 228}:   "Wearsafe Labs Inc",
-       [3]byte{64, 85, 57}:    "Cisco Systems, Inc",
-       [3]byte{64, 86, 12}:    "In Home Displays Ltd",
-       [3]byte{64, 86, 45}:    "Smartron India Pvt ltd",
-       [3]byte{64, 90, 155}:   "ANOVO",
-       [3]byte{64, 92, 253}:   "Dell Inc.",
-       [3]byte{64, 93, 130}:   "NETGEAR",
-       [3]byte{64, 94, 225}:   "Shenzhen H&T Intelligent Control Co.,Ltd.",
-       [3]byte{64, 95, 190}:   "RIM",
-       [3]byte{64, 95, 194}:   "Texas Instruments",
-       [3]byte{64, 96, 90}:    "Hawkeye Tech Co. Ltd",
-       [3]byte{64, 97, 134}:   "MICRO-STAR INT'L CO.,LTD",
-       [3]byte{64, 97, 142}:   "Stella-Green Co",
-       [3]byte{64, 98, 182}:   "Tele system communication",
-       [3]byte{64, 101, 163}:  "Sagemcom Broadband SAS",
-       [3]byte{64, 102, 122}:  "mediola - connected living AG",
-       [3]byte{64, 104, 38}:   "Thales UK Limited",
-       [3]byte{64, 106, 142}:  "Hangzhou Puwell OE Tech Ltd.",
-       [3]byte{64, 106, 171}:  "RIM",
-       [3]byte{64, 108, 143}:  "Apple, Inc.",
-       [3]byte{64, 111, 42}:   "BlackBerry RTS",
-       [3]byte{64, 112, 9}:    "ARRIS Group, Inc.",
-       [3]byte{64, 112, 74}:   "Power Idea Technology Limited",
-       [3]byte{64, 112, 116}:  "Life Technology (China) Co., Ltd",
-       [3]byte{64, 113, 131}:  "Juniper Networks",
-       [3]byte{64, 116, 150}:  "aFUN TECHNOLOGY INC.",
-       [3]byte{64, 120, 106}:  "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{64, 120, 117}:  "IMBEL - Industria de Material Belico do Brasil",
-       [3]byte{64, 122, 128}:  "Nokia Corporation",
-       [3]byte{64, 123, 27}:   "Mettle Networks Inc.",
-       [3]byte{64, 124, 125}:  "Nokia",
-       [3]byte{64, 125, 15}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{64, 127, 224}:  "Glory Star Technics (ShenZhen) Limited",
-       [3]byte{64, 130, 86}:   "Continental Automotive GmbH",
-       [3]byte{64, 131, 222}:  "Zebra Technologies Inc",
-       [3]byte{64, 132, 147}:  "Clavister AB",
-       [3]byte{64, 134, 46}:   "JDM MOBILE INTERNET SOLUTION CO., LTD.",
-       [3]byte{64, 136, 5}:    "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{64, 136, 224}:  "Beijing Ereneben Information Technology Limited Shenzhen Branch",
-       [3]byte{64, 138, 154}:  "TITENG CO., Ltd.",
-       [3]byte{64, 139, 7}:    "Actiontec Electronics, Inc",
-       [3]byte{64, 139, 246}:  "Shenzhen TCL New Technology Co., Ltd",
-       [3]byte{64, 141, 92}:   "GIGA-BYTE TECHNOLOGY CO.,LTD.",
-       [3]byte{64, 149, 88}:   "Aisino Corporation",
-       [3]byte{64, 149, 189}:  "NTmore.Co.,Ltd",
-       [3]byte{64, 151, 209}:  "BK Electronics cc",
-       [3]byte{64, 152, 76}:   "Casacom Solutions AG",
-       [3]byte{64, 152, 78}:   "Texas Instruments",
-       [3]byte{64, 152, 123}:  "Aisino Corporation",
-       [3]byte{64, 153, 34}:   "AzureWave Technology Inc.",
-       [3]byte{64, 155, 13}:   "Shenzhen Yourf Kwan Industrial Co., Ltd",
-       [3]byte{64, 155, 205}:  "D-Link International",
-       [3]byte{64, 156, 40}:   "Apple, Inc.",
-       [3]byte{64, 159, 56}:   "AzureWave Technology Inc.",
-       [3]byte{64, 159, 135}:  "Jide Technology (Hong Kong) Limited",
-       [3]byte{64, 159, 199}:  "BAEKCHUN I&C Co., Ltd.",
-       [3]byte{64, 163, 204}:  "Intel Corporate",
-       [3]byte{64, 165, 239}:  "Shenzhen Four Seas Global Link Network Technology Co., Ltd.",
-       [3]byte{64, 166, 119}:  "Juniper Networks",
-       [3]byte{64, 166, 164}:  "PassivSystems Ltd",
-       [3]byte{64, 166, 217}:  "Apple, Inc.",
-       [3]byte{64, 166, 232}:  "Cisco Systems, Inc",
-       [3]byte{64, 168, 240}:  "Hewlett Packard",
-       [3]byte{64, 169, 63}:   "Private",
-       [3]byte{64, 172, 141}:  "Data Management, Inc.",
-       [3]byte{64, 176, 52}:   "Hewlett Packard",
-       [3]byte{64, 176, 250}:  "LG Electronics (Mobile Communications)",
-       [3]byte{64, 178, 200}:  "Nortel Networks",
-       [3]byte{64, 179, 149}:  "Apple, Inc.",
-       [3]byte{64, 179, 205}:  "Chiyoda Electronics Co.,Ltd.",
-       [3]byte{64, 179, 252}:  "Logital Co. Limited",
-       [3]byte{64, 180, 205}:  "Amazon Technologies Inc.",
-       [3]byte{64, 180, 240}:  "Juniper Networks",
-       [3]byte{64, 182, 136}:  "LEGIC Identsystems AG",
-       [3]byte{64, 182, 177}:  "SUNGSAM CO,.Ltd",
-       [3]byte{64, 183, 243}:  "ARRIS Group, Inc.",
-       [3]byte{64, 184, 55}:   "Sony Mobile Communications AB",
-       [3]byte{64, 184, 154}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{64, 185, 60}:   "Hewlett Packard Enterprise",
-       [3]byte{64, 186, 97}:   "ARIMA Communications Corp.",
-       [3]byte{64, 188, 115}:  "Cronoplast  S.L.",
-       [3]byte{64, 188, 139}:  "itelio GmbH",
-       [3]byte{64, 189, 158}:  "Physio-Control, Inc",
-       [3]byte{64, 191, 23}:   "Digistar Telecom. SA",
-       [3]byte{64, 194, 69}:   "Shenzhen Hexicom Technology Co., Ltd.",
-       [3]byte{64, 196, 214}:  "ChongQing Camyu Technology Development Co.,Ltd.",
-       [3]byte{64, 198, 42}:   "Shanghai Jing Ren Electronic Technology Co., Ltd.",
-       [3]byte{64, 199, 41}:   "Sagemcom Broadband SAS",
-       [3]byte{64, 199, 201}:  "Naviit Inc.",
-       [3]byte{64, 200, 203}:  "AM Telecom co., Ltd.",
-       [3]byte{64, 203, 168}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{64, 205, 58}:   "Z3 Technology",
-       [3]byte{64, 206, 36}:   "Cisco Systems, Inc",
-       [3]byte{64, 210, 138}:  "Nintendo Co., Ltd.",
-       [3]byte{64, 211, 45}:   "Apple, Inc.",
-       [3]byte{64, 211, 87}:   "Ison Technology Co., Ltd.",
-       [3]byte{64, 211, 174}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{64, 212, 14}:   "Biodata Ltd",
-       [3]byte{64, 213, 89}:   "MICRO S.E.R.I.",
-       [3]byte{64, 214, 60}:   "Equitech Industrial(DongGuan)Co.,Ltd",
-       [3]byte{64, 216, 85}:   "IEEE Registration Authority",
-       [3]byte{64, 226, 48}:   "AzureWave Technology Inc.",
-       [3]byte{64, 227, 214}:  "Aruba Networks",
-       [3]byte{64, 231, 48}:   "DEY Storage Systems, Inc.",
-       [3]byte{64, 231, 147}:  "Shenzhen Siviton Technology Co.,Ltd",
-       [3]byte{64, 234, 206}:  "FOUNDER BROADBAND NETWORK SERVICE CO.,LTD",
-       [3]byte{64, 236, 248}:  "Siemens AG",
-       [3]byte{64, 237, 152}:  "IEEE Registration Authority",
-       [3]byte{64, 239, 76}:   "Fihonest communication co.,Ltd",
-       [3]byte{64, 240, 47}:   "Liteon Technology Corporation",
-       [3]byte{64, 241, 76}:   "ISE Europe SPRL",
-       [3]byte{64, 242, 1}:    "Sagemcom Broadband SAS",
-       [3]byte{64, 242, 233}:  "IBM",
-       [3]byte{64, 243, 8}:    "Murata Manufacturing Co., Ltd.",
-       [3]byte{64, 243, 133}:  "IEEE Registration Authority",
-       [3]byte{64, 244, 7}:    "Nintendo Co., Ltd.",
-       [3]byte{64, 244, 19}:   "Rubezh",
-       [3]byte{64, 244, 32}:   "SICHUAN TIANYI COMHEART TELECOMCO.,LTD",
-       [3]byte{64, 244, 236}:  "Cisco Systems, Inc",
-       [3]byte{64, 245, 46}:   "Leica Microsystems (Schweiz) AG",
-       [3]byte{64, 250, 127}:  "Preh Car Connect GmbH",
-       [3]byte{64, 252, 137}:  "ARRIS Group, Inc.",
-       [3]byte{64, 254, 13}:   "MAXIO",
-       [3]byte{68, 0, 16}:     "Apple, Inc.",
-       [3]byte{68, 3, 44}:     "Intel Corporate",
-       [3]byte{68, 3, 167}:    "Cisco Systems, Inc",
-       [3]byte{68, 4, 68}:     "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{68, 9, 184}:    "Salcomp (Shenzhen) CO., LTD.",
-       [3]byte{68, 12, 253}:   "NetMan Co., Ltd.",
-       [3]byte{68, 17, 2}:     "EDMI  Europe Ltd",
-       [3]byte{68, 17, 194}:   "Telegartner Karl Gartner GmbH",
-       [3]byte{68, 19, 25}:    "WKK TECHNOLOGY LTD.",
-       [3]byte{68, 20, 65}:    "AudioControl Inc.",
-       [3]byte{68, 24, 79}:    "Fitview",
-       [3]byte{68, 25, 182}:   "Hangzhou Hikvision Digital Technology Co.,Ltd.",
-       [3]byte{68, 28, 168}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{68, 30, 145}:   "ARVIDA Intelligent Electronics Technology  Co.,Ltd.",
-       [3]byte{68, 30, 161}:   "Hewlett Packard",
-       [3]byte{68, 35, 170}:   "Farmage Co., Ltd.",
-       [3]byte{68, 37, 187}:   "Bamboo Entertainment Corporation",
-       [3]byte{68, 41, 56}:    "NietZsche enterprise Co.Ltd.",
-       [3]byte{68, 42, 96}:    "Apple, Inc.",
-       [3]byte{68, 42, 255}:   "E3 Technology, Inc.",
-       [3]byte{68, 43, 3}:     "Cisco Systems, Inc",
-       [3]byte{68, 44, 5}:     "AMPAK Technology, Inc.",
-       [3]byte{68, 49, 146}:   "Hewlett Packard",
-       [3]byte{68, 50, 42}:    "Avaya Inc",
-       [3]byte{68, 50, 200}:   "Technicolor CH USA Inc.",
-       [3]byte{68, 51, 76}:    "Shenzhen Bilian electronic CO.,LTD",
-       [3]byte{68, 52, 143}:   "MXT INDUSTRIAL LTDA",
-       [3]byte{68, 53, 111}:   "Neterix",
-       [3]byte{68, 55, 8}:     "MRV Comunications",
-       [3]byte{68, 55, 25}:    "2 Save Energy Ltd",
-       [3]byte{68, 55, 111}:   "Young Electric Sign Co",
-       [3]byte{68, 55, 230}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{68, 56, 57}:    "Cumulus Networks, inc",
-       [3]byte{68, 57, 196}:   "Universal Global Scientific Industrial Co., Ltd.",
-       [3]byte{68, 60, 156}:   "Pintsch Tiefenbach GmbH",
-       [3]byte{68, 61, 33}:    "Nuvolt",
-       [3]byte{68, 62, 178}:   "DEOTRON Co., LTD.",
-       [3]byte{68, 68, 80}:    "OttoQ",
-       [3]byte{68, 72, 145}:   "HDMI Licensing, LLC",
-       [3]byte{68, 72, 193}:   "Hewlett Packard Enterprise",
-       [3]byte{68, 74, 101}:   "Silverflare Ltd.",
-       [3]byte{68, 74, 176}:   "Zhejiang Moorgen Intelligence Technology Co., Ltd",
-       [3]byte{68, 76, 12}:    "Apple, Inc.",
-       [3]byte{68, 76, 168}:   "Arista Networks",
-       [3]byte{68, 78, 26}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{68, 78, 109}:   "AVM Audiovisuelles Marketing und Computersysteme GmbH",
-       [3]byte{68, 79, 94}:    "Pan Studios Co.,Ltd.",
-       [3]byte{68, 81, 219}:   "Raytheon BBN Technologies",
-       [3]byte{68, 84, 192}:   "Thompson Aerospace",
-       [3]byte{68, 85, 177}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{68, 86, 141}:   "PNC Technologies  Co., Ltd.",
-       [3]byte{68, 86, 183}:   "Spawn Labs, Inc",
-       [3]byte{68, 88, 41}:    "Cisco SPVTG",
-       [3]byte{68, 89, 159}:   "Criticare Systems, Inc",
-       [3]byte{68, 94, 205}:   "Razer Inc",
-       [3]byte{68, 94, 243}:   "Tonalite Holding B.V.",
-       [3]byte{68, 95, 122}:   "Shihlin Electric & Engineering Corp.",
-       [3]byte{68, 95, 140}:   "Intercel Group Limited",
-       [3]byte{68, 97, 50}:    "ecobee inc",
-       [3]byte{68, 97, 156}:   "FONsystem co. ltd.",
-       [3]byte{68, 98, 70}:    "Comat AG",
-       [3]byte{68, 101, 13}:   "Amazon Technologies Inc.",
-       [3]byte{68, 101, 106}:  "Mega Video Electronic(HK) Industry Co., Ltd",
-       [3]byte{68, 102, 110}:  "IP-LINE",
-       [3]byte{68, 103, 85}:   "Orbit Irrigation",
-       [3]byte{68, 104, 171}:  "JUIN COMPANY, LIMITED",
-       [3]byte{68, 106, 46}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{68, 106, 183}:  "ARRIS Group, Inc.",
-       [3]byte{68, 108, 36}:   "Reallin Electronic Co.,Ltd",
-       [3]byte{68, 109, 87}:   "Liteon Technology Corporation",
-       [3]byte{68, 109, 108}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{68, 110, 229}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{68, 112, 11}:   "IFFU",
-       [3]byte{68, 112, 152}:  "MING HONG TECHNOLOGY (SHEN ZHEN) LIMITED",
-       [3]byte{68, 115, 214}:  "Logitech",
-       [3]byte{68, 116, 108}:  "Sony Mobile Communications AB",
-       [3]byte{68, 120, 62}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{68, 123, 187}:  "Shenzhen YOUHUA Technology Co., Ltd",
-       [3]byte{68, 123, 196}:  "DualShine Technology(SZ)Co.,Ltd",
-       [3]byte{68, 124, 127}:  "Innolight Technology Corporation",
-       [3]byte{68, 125, 165}:  "VTION INFORMATION TECHNOLOGY (FUJIAN) CO.,LTD",
-       [3]byte{68, 126, 118}:  "Trek Technology (S) Pte Ltd",
-       [3]byte{68, 126, 149}:  "Alpha and Omega, Inc",
-       [3]byte{68, 127, 119}:  "Connected Home",
-       [3]byte{68, 128, 235}:  "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{68, 130, 229}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{68, 131, 18}:   "Star-Net",
-       [3]byte{68, 133, 0}:    "Intel Corporate",
-       [3]byte{68, 134, 193}:  "Siemens Low Voltage & Products",
-       [3]byte{68, 135, 35}:   "HOYA SERVICE CORPORATION",
-       [3]byte{68, 135, 252}:  "Elitegroup Computer Systems Co.,Ltd.",
-       [3]byte{68, 136, 203}:  "Camco Technologies NV",
-       [3]byte{68, 138, 91}:   "Micro-Star INT'L CO., LTD.",
-       [3]byte{68, 140, 82}:   "KTIS CO., Ltd",
-       [3]byte{68, 142, 18}:   "DT Research, Inc.",
-       [3]byte{68, 142, 129}:  "VIG",
-       [3]byte{68, 143, 23}:   "Samsung Electronics Co., Ltd. ARTIK",
-       [3]byte{68, 145, 96}:   "Murata Manufacturing Co., Ltd.",
-       [3]byte{68, 145, 219}:  "Shanghai Huaqin Telecom Technology Co.,Ltd",
-       [3]byte{68, 148, 252}:  "NETGEAR",
-       [3]byte{68, 149, 250}:  "Qingdao Santong Digital Technology Co.Ltd",
-       [3]byte{68, 150, 43}:   "Aidon Oy",
-       [3]byte{68, 151, 90}:   "SHENZHEN FAST TECHNOLOGIES CO.,LTD",
-       [3]byte{68, 155, 120}:  "The Now Factory",
-       [3]byte{68, 156, 181}:  "Alcomp, Inc",
-       [3]byte{68, 159, 127}:  "DataCore Software Corporation",
-       [3]byte{68, 164, 45}:   "TCT mobile ltd",
-       [3]byte{68, 166, 137}:  "PROMAX ELECTRONICA SA",
-       [3]byte{68, 166, 229}:  "THINKING TECHNOLOGY CO.,LTD",
-       [3]byte{68, 167, 207}:  "Murata Manufacturing Co., Ltd.",
-       [3]byte{68, 168, 66}:   "Dell Inc.",
-       [3]byte{68, 168, 194}:  "SEWOO TECH CO., LTD",
-       [3]byte{68, 170, 39}:   "udworks Co., Ltd.",
-       [3]byte{68, 170, 80}:   "Juniper Networks",
-       [3]byte{68, 170, 232}:  "Nanotec Electronic GmbH & Co. KG",
-       [3]byte{68, 170, 245}:  "ARRIS Group, Inc.",
-       [3]byte{68, 173, 25}:   "XINGFEI (H.K)LIMITED",
-       [3]byte{68, 173, 217}:  "Cisco Systems, Inc",
-       [3]byte{68, 179, 45}:   "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{68, 179, 130}:  "Kuang-chi Institute of Advanced Technology",
-       [3]byte{68, 180, 18}:   "SIUS AG",
-       [3]byte{68, 186, 70}:   "SICHUAN TIANYI COMHEART TELECOMCO.,LTD",
-       [3]byte{68, 191, 227}:  "Shenzhen Longtech Electronics Co.,Ltd",
-       [3]byte{68, 193, 92}:   "Texas Instruments",
-       [3]byte{68, 194, 51}:   "Guangzhou Comet Technology Development Co.Ltd",
-       [3]byte{68, 195, 6}:    "SIFROM Inc.",
-       [3]byte{68, 195, 70}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{68, 195, 155}:  "OOO RUBEZH NPO",
-       [3]byte{68, 196, 169}:  "Opticom Communication, LLC",
-       [3]byte{68, 197, 111}:  "NGN Easy Satfinder (Tianjin) Electronic Co., Ltd",
-       [3]byte{68, 198, 155}:  "Wuhan Feng Tian Information Network CO.,LTD",
-       [3]byte{68, 200, 116}:  "China Mobile Group Device Co.,Ltd.",
-       [3]byte{68, 201, 162}:  "Greenwald Industries",
-       [3]byte{68, 205, 14}:   "FLEXTRONICS MANUFACTURING(ZHUHAI)CO.,LTD.",
-       [3]byte{68, 206, 125}:  "SFR",
-       [3]byte{68, 209, 94}:   "Shanghai Kingto Information Technology Ltd",
-       [3]byte{68, 209, 250}:  "Shenzhen Yunlink Technology Co., Ltd",
-       [3]byte{68, 210, 68}:   "Seiko Epson Corporation",
-       [3]byte{68, 210, 202}:  "Anvia TV Oy",
-       [3]byte{68, 211, 202}:  "Cisco Systems, Inc",
-       [3]byte{68, 212, 55}:   "Inteno Broadband Technology AB",
-       [3]byte{68, 212, 224}:  "Sony Mobile Communications AB",
-       [3]byte{68, 213, 165}:  "AddOn Computer",
-       [3]byte{68, 214, 61}:   "Talari Networks",
-       [3]byte{68, 214, 225}:  "Snuza International Pty. Ltd.",
-       [3]byte{68, 216, 50}:   "AzureWave Technology Inc.",
-       [3]byte{68, 216, 132}:  "Apple, Inc.",
-       [3]byte{68, 217, 231}:  "Ubiquiti Networks Inc.",
-       [3]byte{68, 220, 145}:  "PLANEX COMMUNICATIONS INC.",
-       [3]byte{68, 220, 203}:  "SEMINDIA SYSTEMS PVT LTD",
-       [3]byte{68, 224, 142}:  "Cisco SPVTG",
-       [3]byte{68, 225, 55}:   "ARRIS Group, Inc.",
-       [3]byte{68, 228, 154}:  "OMNITRONICS PTY LTD",
-       [3]byte{68, 228, 217}:  "Cisco Systems, Inc",
-       [3]byte{68, 232, 165}:  "Myreka Technologies Sdn. Bhd.",
-       [3]byte{68, 233, 221}:  "Sagemcom Broadband SAS",
-       [3]byte{68, 234, 75}:   "Actlas Inc.",
-       [3]byte{68, 234, 216}:  "Texas Instruments",
-       [3]byte{68, 237, 87}:   "Longicorn, inc.",
-       [3]byte{68, 238, 2}:    "MTI Ltd.",
-       [3]byte{68, 238, 48}:   "Budelmann Elektronik GmbH",
-       [3]byte{68, 240, 52}:   "Kaonmedia CO., LTD.",
-       [3]byte{68, 244, 54}:   "zte corporation",
-       [3]byte{68, 244, 89}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{68, 244, 119}:  "Juniper Networks",
-       [3]byte{68, 248, 73}:   "Union Pacific Railroad",
-       [3]byte{68, 251, 66}:   "Apple, Inc.",
-       [3]byte{68, 253, 163}:  "Everysight LTD.",
-       [3]byte{72, 0, 49}:     "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{72, 0, 51}:     "Technicolor CH USA Inc.",
-       [3]byte{72, 2, 42}:     "B-Link Electronic Limited",
-       [3]byte{72, 3, 98}:     "DESAY ELECTRONICS(HUIZHOU)CO.,LTD",
-       [3]byte{72, 6, 106}:    "Tempered Networks, Inc.",
-       [3]byte{72, 12, 73}:    "NAKAYO Inc",
-       [3]byte{72, 14, 236}:   "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{72, 15, 207}:   "Hewlett Packard",
-       [3]byte{72, 16, 99}:    "NTT Innovation Institute, Inc.",
-       [3]byte{72, 18, 73}:    "Luxcom Technologies Inc.",
-       [3]byte{72, 19, 126}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{72, 19, 243}:   "BBK EDUCATIONAL ELECTRONICS CORP.,LTD.",
-       [3]byte{72, 23, 76}:    "MicroPower technologies",
-       [3]byte{72, 24, 66}:    "Shanghai Winaas Co. Equipment Co. Ltd.",
-       [3]byte{72, 26, 132}:   "Pointer Telocation Ltd",
-       [3]byte{72, 27, 210}:   "Intron Scientific co., ltd.",
-       [3]byte{72, 29, 112}:   "Cisco SPVTG",
-       [3]byte{72, 38, 232}:   "Tek-Air Systems, Inc.",
-       [3]byte{72, 39, 234}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{72, 40, 47}:    "zte corporation",
-       [3]byte{72, 44, 234}:   "Motorola Inc Business Light Radios",
-       [3]byte{72, 51, 221}:   "ZENNIO AVANCE Y TECNOLOGIA, S.L.",
-       [3]byte{72, 52, 61}:    "IEP GmbH",
-       [3]byte{72, 54, 95}:    "Wintecronics Ltd.",
-       [3]byte{72, 57, 116}:   "Proware Technologies Co., Ltd.",
-       [3]byte{72, 59, 56}:    "Apple, Inc.",
-       [3]byte{72, 60, 12}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{72, 61, 50}:    "Syscor Controls &amp; Automation",
-       [3]byte{72, 67, 90}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{72, 67, 124}:   "Apple, Inc.",
-       [3]byte{72, 68, 135}:   "Cisco SPVTG",
-       [3]byte{72, 68, 247}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{72, 69, 32}:    "Intel Corporate",
-       [3]byte{72, 70, 241}:   "Uros Oy",
-       [3]byte{72, 70, 251}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{72, 73, 199}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{72, 75, 170}:   "Apple, Inc.",
-       [3]byte{72, 77, 126}:   "Dell Inc.",
-       [3]byte{72, 80, 115}:   "Microsoft Corporation",
-       [3]byte{72, 81, 183}:   "Intel Corporate",
-       [3]byte{72, 82, 97}:    "SOREEL",
-       [3]byte{72, 84, 21}:    "NET RULES TECNOLOGIA EIRELI",
-       [3]byte{72, 85, 92}:    "Wu Qi Technologies,Inc.",
-       [3]byte{72, 85, 95}:    "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{72, 87, 221}:   "Facebook Inc",
-       [3]byte{72, 89, 41}:    "LG Electronics (Mobile Communications)",
-       [3]byte{72, 89, 164}:   "zte corporation",
-       [3]byte{72, 90, 63}:    "WISOL",
-       [3]byte{72, 90, 182}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{72, 91, 57}:    "ASUSTek COMPUTER INC.",
-       [3]byte{72, 93, 54}:    "Verizon",
-       [3]byte{72, 93, 96}:    "AzureWave Technology Inc.",
-       [3]byte{72, 96, 188}:   "Apple, Inc.",
-       [3]byte{72, 97, 163}:   "Concern Axion JSC",
-       [3]byte{72, 98, 118}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{72, 101, 238}:  "IEEE Registration Authority",
-       [3]byte{72, 107, 44}:   "BBK EDUCATIONAL ELECTRONICS CORP.,LTD.",
-       [3]byte{72, 107, 145}:  "Fleetwood Group Inc.",
-       [3]byte{72, 109, 187}:  "Vestel Elektronik San ve Tic. A.Ş.",
-       [3]byte{72, 110, 115}:  "Pica8, Inc.",
-       [3]byte{72, 110, 251}:  "Davit System Technology Co., Ltd.",
-       [3]byte{72, 111, 210}:  "StorSimple Inc",
-       [3]byte{72, 113, 25}:   "SGB GROUP LTD.",
-       [3]byte{72, 116, 110}:  "Apple, Inc.",
-       [3]byte{72, 118, 4}:    "Private",
-       [3]byte{72, 122, 85}:   "ALE International",
-       [3]byte{72, 122, 218}:  "Hangzhou H3C Technologies Co., Limited",
-       [3]byte{72, 123, 107}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{72, 125, 46}:   "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{72, 130, 68}:   "Life Fitness / Div. of Brunswick",
-       [3]byte{72, 130, 242}:  "Appel Elektronik GmbH",
-       [3]byte{72, 131, 199}:  "Sagemcom Broadband SAS",
-       [3]byte{72, 134, 232}:  "Microsoft Corporation",
-       [3]byte{72, 136, 3}:    "ManTechnology Inc.",
-       [3]byte{72, 136, 202}:  "Motorola (Wuhan) Mobility Technologies Communication Co., Ltd.",
-       [3]byte{72, 138, 210}:  "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.",
-       [3]byte{72, 141, 54}:   "Arcadyan Corporation",
-       [3]byte{72, 142, 66}:   "DIGALOG GmbH",
-       [3]byte{72, 142, 239}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{72, 145, 83}:   "Weinmann Geräte für Medizin GmbH + Co. KG",
-       [3]byte{72, 145, 246}:  "Shenzhen Reach software technology CO.,LTD",
-       [3]byte{72, 154, 66}:   "Technomate Ltd",
-       [3]byte{72, 155, 226}:  "SCI Innovations Ltd",
-       [3]byte{72, 157, 24}:   "Flashbay Limited",
-       [3]byte{72, 157, 36}:   "BlackBerry RTS",
-       [3]byte{72, 161, 149}:  "Apple, Inc.",
-       [3]byte{72, 162, 45}:   "Shenzhen Huaxuchang Telecom Technology Co.,Ltd",
-       [3]byte{72, 162, 183}:  "Kodofon JSC",
-       [3]byte{72, 163, 128}:  "Gionee Communication Equipment Co.,Ltd.",
-       [3]byte{72, 166, 210}:  "GJsun Optical Science and Tech Co.,Ltd.",
-       [3]byte{72, 167, 78}:   "zte corporation",
-       [3]byte{72, 169, 210}:  "Wistron Neweb Corporation",
-       [3]byte{72, 170, 93}:   "Store Electronic Systems",
-       [3]byte{72, 173, 8}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{72, 178, 83}:   "Marketaxess Corporation",
-       [3]byte{72, 181, 167}:  "Glory Horse Industries Ltd.",
-       [3]byte{72, 182, 32}:   "ROLI Ltd.",
-       [3]byte{72, 184, 222}:  "HOMEWINS TECHNOLOGY CO.,LTD.",
-       [3]byte{72, 185, 119}:  "PulseOn Oy",
-       [3]byte{72, 185, 194}:  "Teletics Inc.",
-       [3]byte{72, 186, 78}:   "Hewlett Packard",
-       [3]byte{72, 188, 166}:  "\u200bASUNG TECHNO CO.,Ltd",
-       [3]byte{72, 190, 45}:   "Symanitron",
-       [3]byte{72, 191, 107}:  "Apple, Inc.",
-       [3]byte{72, 191, 116}:  "Baicells Technologies Co.,LTD",
-       [3]byte{72, 192, 73}:   "Broad Telecom SA",
-       [3]byte{72, 192, 147}:  "Xirrus, Inc.",
-       [3]byte{72, 193, 172}:  "PLANTRONICS, INC.",
-       [3]byte{72, 197, 141}:  "Lear Corporation GmbH",
-       [3]byte{72, 198, 99}:   "GTO Access Systems LLC",
-       [3]byte{72, 200, 98}:   "Simo Wireless,Inc.",
-       [3]byte{72, 200, 182}:  "SysTec GmbH",
-       [3]byte{72, 203, 110}:  "Cello Electronics (UK) Ltd",
-       [3]byte{72, 208, 207}:  "Universal Electronics, Inc.",
-       [3]byte{72, 209, 142}:  "Metis Communication Co.,Ltd",
-       [3]byte{72, 210, 36}:   "Liteon Technology Corporation",
-       [3]byte{72, 211, 67}:   "ARRIS Group, Inc.",
-       [3]byte{72, 211, 93}:   "Private",
-       [3]byte{72, 213, 57}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{72, 213, 76}:   "Jeda Networks",
-       [3]byte{72, 214, 213}:  "Google, Inc.",
-       [3]byte{72, 215, 5}:    "Apple, Inc.",
-       [3]byte{72, 215, 255}:  "BLANKOM Antennentechnik GmbH",
-       [3]byte{72, 216, 85}:   "Telvent",
-       [3]byte{72, 216, 254}:  "ClarIDy Solutions, Inc.",
-       [3]byte{72, 218, 150}:  "Eddy Smart Home Solutions Inc.",
-       [3]byte{72, 219, 80}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{72, 220, 251}:  "Nokia Corporation",
-       [3]byte{72, 223, 28}:   "Wuhan NEC Fibre Optic Communications industry Co. Ltd",
-       [3]byte{72, 223, 55}:   "Hewlett Packard Enterprise",
-       [3]byte{72, 225, 175}:  "Vity",
-       [3]byte{72, 226, 68}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{72, 233, 241}:  "Apple, Inc.",
-       [3]byte{72, 234, 99}:   "Zhejiang Uniview Technologies Co., Ltd.",
-       [3]byte{72, 235, 48}:   "ETERNA TECHNOLOGY, INC.",
-       [3]byte{72, 236, 91}:   "Nokia",
-       [3]byte{72, 237, 128}:  "daesung eltec",
-       [3]byte{72, 238, 7}:    "Silver Palm Technologies LLC",
-       [3]byte{72, 238, 12}:   "D-Link International",
-       [3]byte{72, 238, 134}:  "UTStarcom (China) Co.,Ltd",
-       [3]byte{72, 240, 123}:  "ALPS ELECTRIC CO.,LTD.",
-       [3]byte{72, 242, 48}:   "Ubizcore Co.,LTD",
-       [3]byte{72, 243, 23}:   "Private",
-       [3]byte{72, 244, 125}:  "TechVision Holding  Internation Limited",
-       [3]byte{72, 247, 192}:  "Technicolor CH USA Inc.",
-       [3]byte{72, 247, 241}:  "Nokia",
-       [3]byte{72, 248, 179}:  "Cisco-Linksys, LLC",
-       [3]byte{72, 248, 225}:  "Nokia",
-       [3]byte{72, 249, 37}:   "Maestronic",
-       [3]byte{72, 249, 124}:  "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{72, 252, 182}:  "LAVA INTERNATIONAL(H.K) LIMITED",
-       [3]byte{72, 252, 184}:  "Woodstream Corporation",
-       [3]byte{72, 253, 142}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{72, 254, 234}:  "HOMA B.V.",
-       [3]byte{76, 0, 130}:    "Cisco Systems, Inc",
-       [3]byte{76, 2, 46}:     "CMR KOREA CO., LTD",
-       [3]byte{76, 2, 137}:    "LEX COMPUTECH CO., LTD",
-       [3]byte{76, 6, 138}:    "Basler Electric Company",
-       [3]byte{76, 7, 201}:    "COMPUTER OFFICE Co.,Ltd.",
-       [3]byte{76, 9, 180}:    "zte corporation",
-       [3]byte{76, 9, 212}:    "Arcadyan Technology Corporation",
-       [3]byte{76, 11, 58}:    "TCT mobile ltd",
-       [3]byte{76, 11, 190}:   "Microsoft",
-       [3]byte{76, 13, 238}:   "JABIL CIRCUIT (SHANGHAI) LTD.",
-       [3]byte{76, 15, 110}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{76, 15, 199}:   "Earda Electronics Co.,Ltd",
-       [3]byte{76, 17, 191}:   "Zhejiang Dahua Technology Co., Ltd.",
-       [3]byte{76, 19, 101}:   "Emplus Technologies",
-       [3]byte{76, 20, 128}:   "NOREGON SYSTEMS, INC",
-       [3]byte{76, 20, 163}:   "TCL Technoly Electronics (Huizhou) Co., Ltd.",
-       [3]byte{76, 22, 148}:   "shenzhen sibituo Technology Co., Ltd",
-       [3]byte{76, 22, 241}:   "zte corporation",
-       [3]byte{76, 22, 252}:   "Juniper Networks",
-       [3]byte{76, 23, 235}:   "Sagemcom Broadband SAS",
-       [3]byte{76, 24, 154}:   "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{76, 26, 58}:    "PRIMA Research And Production Enterprise Ltd.",
-       [3]byte{76, 26, 61}:    "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{76, 26, 149}:   "Novakon Co., Ltd.",
-       [3]byte{76, 31, 204}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{76, 33, 208}:   "Sony Mobile Communications AB",
-       [3]byte{76, 34, 88}:    "cozybit, Inc.",
-       [3]byte{76, 37, 120}:   "Nokia Corporation",
-       [3]byte{76, 38, 231}:   "Welgate Co., Ltd.",
-       [3]byte{76, 44, 128}:   "Beijing Skyway Technologies Co.,Ltd",
-       [3]byte{76, 44, 131}:   "Zhejiang KaNong Network Technology Co.,Ltd.",
-       [3]byte{76, 47, 157}:   "ICM Controls",
-       [3]byte{76, 48, 137}:   "Thales Transportation Systems GmbH",
-       [3]byte{76, 50, 45}:    "TELEDATA NETWORKS",
-       [3]byte{76, 50, 117}:   "Apple, Inc.",
-       [3]byte{76, 50, 217}:   "M Rutty Holdings Pty. Ltd.",
-       [3]byte{76, 51, 78}:    "HIGHTECH",
-       [3]byte{76, 52, 136}:   "Intel Corporate",
-       [3]byte{76, 56, 213}:   "MITAC COMPUTING TECHNOLOGY CORPORATION",
-       [3]byte{76, 56, 216}:   "ARRIS Group, Inc.",
-       [3]byte{76, 57, 9}:     "HPL Electric & Power Private Limited",
-       [3]byte{76, 57, 16}:    "Newtek Electronics co., Ltd.",
-       [3]byte{76, 59, 116}:   "VOGTEC(H.K.) Co., Ltd",
-       [3]byte{76, 60, 22}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{76, 72, 218}:   "Beijing Autelan Technology Co.,Ltd",
-       [3]byte{76, 73, 227}:   "Xiaomi Communications Co Ltd",
-       [3]byte{76, 75, 104}:   "Mobile Device, Inc.",
-       [3]byte{76, 78, 3}:     "TCT mobile ltd",
-       [3]byte{76, 78, 53}:    "Cisco Systems, Inc",
-       [3]byte{76, 82, 98}:    "Fujitsu Technology Solutions GmbH",
-       [3]byte{76, 84, 39}:    "Linepro Sp. z o.o.",
-       [3]byte{76, 84, 153}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{76, 85, 133}:   "Hamilton Systems",
-       [3]byte{76, 85, 184}:   "Turkcell Teknoloji",
-       [3]byte{76, 85, 204}:   "Zentri Pty Ltd",
-       [3]byte{76, 87, 202}:   "Apple, Inc.",
-       [3]byte{76, 93, 205}:   "Oy Finnish Electric Vehicle Technologies Ltd",
-       [3]byte{76, 94, 12}:    "Routerboard.com",
-       [3]byte{76, 95, 210}:   "Alcatel-Lucent",
-       [3]byte{76, 96, 213}:   "airPointe of New Hampshire",
-       [3]byte{76, 96, 222}:   "NETGEAR",
-       [3]byte{76, 98, 85}:    "SANMINA-SCI SYSTEM DE MEXICO S.A. DE C.V.",
-       [3]byte{76, 99, 235}:   "Application Solutions (Electronics and Vision) Ltd",
-       [3]byte{76, 100, 217}:  "Guangdong Leawin Group Co., Ltd",
-       [3]byte{76, 101, 168}:  "IEEE Registration Authority",
-       [3]byte{76, 102, 65}:   "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
-       [3]byte{76, 110, 110}:  "Comnect Technology CO.,LTD",
-       [3]byte{76, 114, 185}:  "PEGATRON CORPORATION",
-       [3]byte{76, 115, 103}:  "Genius Bytes Software Solutions GmbH",
-       [3]byte{76, 115, 165}:  "KOVE",
-       [3]byte{76, 116, 3}:    "BQ",
-       [3]byte{76, 116, 135}:  "Leader Phone Communication Technology Co., Ltd.",
-       [3]byte{76, 116, 191}:  "Apple, Inc.",
-       [3]byte{76, 118, 37}:   "Dell Inc.",
-       [3]byte{76, 119, 79}:   "Embedded Wireless Labs",
-       [3]byte{76, 120, 114}:  "Cav. Uff. Giacomo Cimberio S.p.A.",
-       [3]byte{76, 120, 151}:  "Arrowhead Alarm Products Ltd",
-       [3]byte{76, 121, 186}:  "Intel Corporate",
-       [3]byte{76, 124, 95}:   "Apple, Inc.",
-       [3]byte{76, 127, 98}:   "Nokia Corporation",
-       [3]byte{76, 128, 79}:   "Armstrong Monitoring Corp",
-       [3]byte{76, 128, 147}:  "Intel Corporate",
-       [3]byte{76, 129, 32}:   "Taicang T&W Electronics",
-       [3]byte{76, 130, 207}:  "Echostar Technologies Corp",
-       [3]byte{76, 131, 222}:  "Cisco SPVTG",
-       [3]byte{76, 139, 48}:   "Actiontec Electronics, Inc",
-       [3]byte{76, 139, 85}:   "Grupo Digicon",
-       [3]byte{76, 139, 239}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{76, 141, 121}:  "Apple, Inc.",
-       [3]byte{76, 142, 204}:  "SILKAN SA",
-       [3]byte{76, 143, 165}:  "Jastec",
-       [3]byte{76, 145, 12}:   "Lanix Internacional, S.A. de C.V.",
-       [3]byte{76, 150, 20}:   "Juniper Networks",
-       [3]byte{76, 152, 239}:  "Zeo",
-       [3]byte{76, 158, 128}:  "KYOKKO ELECTRIC Co., Ltd.",
-       [3]byte{76, 158, 228}:  "Hanyang Navicom Co.,Ltd.",
-       [3]byte{76, 158, 255}:  "Zyxel Communications Corporation",
-       [3]byte{76, 160, 3}:    "T-21 Technologies LLC",
-       [3]byte{76, 161, 97}:   "Rain Bird Corporation",
-       [3]byte{76, 165, 21}:   "Baikal Electronics JSC",
-       [3]byte{76, 165, 109}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{76, 167, 75}:   "Alcatel Lucent",
-       [3]byte{76, 169, 40}:   "Insensi",
-       [3]byte{76, 170, 22}:   "AzureWave Technologies (Shanghai) Inc.",
-       [3]byte{76, 171, 51}:   "KST technology",
-       [3]byte{76, 172, 10}:   "zte corporation",
-       [3]byte{76, 174, 28}:   "SaiNXT Technologies LLP",
-       [3]byte{76, 174, 49}:   "ShengHai Electronics (Shenzhen) Ltd",
-       [3]byte{76, 176, 8}:    "Shenzhen Gwelltimes Technology Co.,Ltd",
-       [3]byte{76, 176, 232}:  "Beijing RongZhi xinghua technology co., LTD",
-       [3]byte{76, 177, 108}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{76, 177, 153}:  "Apple, Inc.",
-       [3]byte{76, 178, 28}:   "Maxphotonics Co.,Ltd",
-       [3]byte{76, 180, 74}:   "NANOWAVE Technologies Inc.",
-       [3]byte{76, 180, 234}:  "HRD (S) PTE., LTD.",
-       [3]byte{76, 183, 109}:  "Novi Security",
-       [3]byte{76, 184, 28}:   "SAM Electronics GmbH",
-       [3]byte{76, 184, 44}:   "Cambridge Mobile Telematics, Inc.",
-       [3]byte{76, 184, 181}:  "Shenzhen YOUHUA Technology Co., Ltd",
-       [3]byte{76, 185, 200}:  "CONET CO., LTD.",
-       [3]byte{76, 186, 163}:  "Bison Electronics Inc.",
-       [3]byte{76, 187, 88}:   "Chicony Electronics Co., Ltd.",
-       [3]byte{76, 188, 66}:   "Shenzhen Hangsheng Electronics Co.,Ltd.",
-       [3]byte{76, 188, 165}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{76, 189, 143}:  "Hangzhou Hikvision Digital Technology Co.,Ltd.",
-       [3]byte{76, 196, 82}:   "Shang Hai Tyd. Electon Technology Ltd.",
-       [3]byte{76, 198, 2}:    "Radios, Inc.",
-       [3]byte{76, 198, 129}:  "Shenzhen Aisat Electronic Co., Ltd.",
-       [3]byte{76, 201, 79}:   "Nokia",
-       [3]byte{76, 202, 83}:   "Skyera, Inc.",
-       [3]byte{76, 203, 245}:  "zte corporation",
-       [3]byte{76, 204, 52}:   "Motorola Solutions Inc.",
-       [3]byte{76, 204, 106}:  "Micro-Star INTL CO., LTD.",
-       [3]byte{76, 208, 138}:  "HUMAX Co., Ltd.",
-       [3]byte{76, 214, 55}:   "Qsono Electronics Co., Ltd",
-       [3]byte{76, 215, 182}:  "Helmer Scientific",
-       [3]byte{76, 217, 196}:  "Magneti Marelli Automotive Electronics (Guangzhou) Co. Ltd",
-       [3]byte{76, 223, 61}:   "TEAM ENGINEERS ADVANCE TECHNOLOGIES INDIA PVT LTD",
-       [3]byte{76, 225, 115}:  "IEEE Registration Authority",
-       [3]byte{76, 225, 187}:  "Zhuhai HiFocus Technology Co., Ltd.",
-       [3]byte{76, 226, 241}:  "sclak srl",
-       [3]byte{76, 230, 118}:  "BUFFALO.INC",
-       [3]byte{76, 233, 51}:   "RailComm, LLC",
-       [3]byte{76, 235, 66}:   "Intel Corporate",
-       [3]byte{76, 236, 239}:  "Soraa, Inc.",
-       [3]byte{76, 237, 222}:  "ASKEY COMPUTER CORP",
-       [3]byte{76, 238, 176}:  "SHC Netzwerktechnik GmbH",
-       [3]byte{76, 240, 46}:   "Vifa Denmark A/S",
-       [3]byte{76, 242, 191}:  "Cambridge Industries(Group) Co.,Ltd.",
-       [3]byte{76, 244, 91}:   "Blue Clover Devices",
-       [3]byte{76, 245, 160}:  "Scalable Network Technologies Inc",
-       [3]byte{76, 247, 55}:   "SamJi Electronics Co., Ltd",
-       [3]byte{76, 249, 93}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{76, 250, 202}:  "Cambridge Industries(Group) Co.,Ltd.",
-       [3]byte{76, 251, 69}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{76, 255, 18}:   "Fuze Entertainment Co., ltd",
-       [3]byte{80, 0, 140}:    "Hong Kong Telecommunications (HKT) Limited",
-       [3]byte{80, 1, 107}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{80, 1, 187}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{80, 1, 217}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{80, 4, 184}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{80, 5, 61}:     "CyWee Group Ltd",
-       [3]byte{80, 6, 4}:      "Cisco Systems, Inc",
-       [3]byte{80, 6, 171}:    "Cisco Systems, Inc",
-       [3]byte{80, 9, 89}:     "Technicolor CH USA Inc.",
-       [3]byte{80, 11, 50}:    "Foxda Technology Industrial(ShenZhen)Co.,LTD",
-       [3]byte{80, 11, 145}:   "IEEE Registration Authority",
-       [3]byte{80, 14, 109}:   "TrafficCast International",
-       [3]byte{80, 15, 128}:   "Cisco Systems, Inc",
-       [3]byte{80, 15, 245}:   "Tenda Technology Co.,Ltd.Dongguan branch",
-       [3]byte{80, 17, 235}:   "SilverNet Ltd",
-       [3]byte{80, 20, 181}:   "Richfit Information Technology Co., Ltd",
-       [3]byte{80, 23, 255}:   "Cisco Systems, Inc",
-       [3]byte{80, 24, 76}:    "Platina Systems Inc.",
-       [3]byte{80, 26, 165}:   "GN Netcom A/S",
-       [3]byte{80, 26, 197}:   "Microsoft",
-       [3]byte{80, 28, 191}:   "Cisco Systems, Inc",
-       [3]byte{80, 30, 45}:    "StreamUnlimited Engineering GmbH",
-       [3]byte{80, 32, 107}:   "Emerson Climate Technologies Transportation Solutions",
-       [3]byte{80, 34, 103}:   "PixeLINK",
-       [3]byte{80, 37, 43}:    "Nethra Imaging Incorporated",
-       [3]byte{80, 38, 144}:   "FUJITSU LIMITED",
-       [3]byte{80, 39, 199}:   "TECHNART Co.,Ltd",
-       [3]byte{80, 41, 77}:    "NANJING IOT SENSOR TECHNOLOGY CO,LTD",
-       [3]byte{80, 42, 126}:   "Smart electronic GmbH",
-       [3]byte{80, 42, 139}:   "Telekom Research and Development Sdn Bhd",
-       [3]byte{80, 43, 115}:   "Tenda Technology Co.,Ltd.Dongguan branch",
-       [3]byte{80, 45, 29}:    "Nokia Corporation",
-       [3]byte{80, 45, 162}:   "Intel Corporate",
-       [3]byte{80, 45, 244}:   "Phytec Messtechnik GmbH",
-       [3]byte{80, 46, 92}:    "HTC Corporation",
-       [3]byte{80, 46, 206}:   "Asahi Electronics Co.,Ltd",
-       [3]byte{80, 49, 173}:   "ABB Global Industries and Services Private Limited",
-       [3]byte{80, 50, 55}:    "Apple, Inc.",
-       [3]byte{80, 50, 117}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{80, 51, 139}:   "Texas Instruments",
-       [3]byte{80, 51, 240}:   "YICHEN (SHENZHEN) TECHNOLOGY CO.LTD",
-       [3]byte{80, 57, 85}:    "Cisco SPVTG",
-       [3]byte{80, 58, 125}:   "AlphaTech PLC Int’l Co., Ltd.",
-       [3]byte{80, 58, 160}:   "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.",
-       [3]byte{80, 60, 196}:   "Lenovo Mobile Communication Technology Ltd.",
-       [3]byte{80, 60, 234}:   "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{80, 61, 161}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{80, 61, 229}:   "Cisco Systems, Inc",
-       [3]byte{80, 62, 170}:   "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{80, 63, 86}:    "Syncmold Enterprise Corp",
-       [3]byte{80, 63, 152}:   "CMITECH",
-       [3]byte{80, 64, 97}:    "Nokia",
-       [3]byte{80, 69, 247}:   "Liuhe Intelligence Technology Ltd.",
-       [3]byte{80, 70, 93}:    "ASUSTek COMPUTER INC.",
-       [3]byte{80, 72, 235}:   "BEIJING HAIHEJINSHENG NETWORK TECHNOLOGY CO. LTD.",
-       [3]byte{80, 74, 94}:    "Masimo Corporation",
-       [3]byte{80, 74, 110}:   "NETGEAR",
-       [3]byte{80, 75, 91}:    "CONTROLtronic GmbH",
-       [3]byte{80, 78, 220}:   "Ping Communication",
-       [3]byte{80, 79, 148}:   "Loxone Electronics GmbH",
-       [3]byte{80, 80, 42}:    "Egardia",
-       [3]byte{80, 80, 101}:   "TAKT Corporation",
-       [3]byte{80, 82, 210}:   "Hangzhou Telin Technologies Co., Limited",
-       [3]byte{80, 85, 39}:    "LG Electronics (Mobile Communications)",
-       [3]byte{80, 86, 99}:    "Texas Instruments",
-       [3]byte{80, 86, 168}:   "Jolla Ltd",
-       [3]byte{80, 86, 191}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{80, 87, 168}:   "Cisco Systems, Inc",
-       [3]byte{80, 88, 0}:     "WyTec International, Inc.",
-       [3]byte{80, 88, 79}:    "waytotec,Inc.",
-       [3]byte{80, 90, 198}:   "GUANGDONG SUPER TELECOM CO.,LTD.",
-       [3]byte{80, 96, 40}:    "Xirrus Inc.",
-       [3]byte{80, 97, 132}:   "Avaya Inc",
-       [3]byte{80, 97, 214}:   "Indu-Sol GmbH",
-       [3]byte{80, 99, 19}:    "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{80, 100, 43}:   "XIAOMI Electronics,CO.,LTD",
-       [3]byte{80, 100, 65}:   "Greenlee",
-       [3]byte{80, 101, 131}:  "Texas Instruments",
-       [3]byte{80, 101, 243}:  "Hewlett Packard",
-       [3]byte{80, 103, 135}:  "Planet Networks",
-       [3]byte{80, 103, 174}:  "Cisco Systems, Inc",
-       [3]byte{80, 103, 240}:  "Zyxel Communications Corporation",
-       [3]byte{80, 104, 10}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{80, 106, 3}:    "NETGEAR",
-       [3]byte{80, 107, 141}:  "Nutanix",
-       [3]byte{80, 110, 146}:  "Innocent Technology Co., Ltd.",
-       [3]byte{80, 111, 152}:  "Sehaj Synergy Technologies Private Limited",
-       [3]byte{80, 111, 154}:  "Wi-Fi Alliance",
-       [3]byte{80, 112, 229}:  "He Shan World Fair Electronics Technology Limited",
-       [3]byte{80, 114, 36}:   "Texas Instruments",
-       [3]byte{80, 114, 77}:   "BEG Brueck Electronic GmbH",
-       [3]byte{80, 118, 145}:  "Tekpea, Inc.",
-       [3]byte{80, 118, 166}:  "Ecil Informatica Ind. Com. Ltda",
-       [3]byte{80, 119, 5}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{80, 121, 91}:   "Interexport Telecomunicaciones S.A.",
-       [3]byte{80, 122, 85}:   "Apple, Inc.",
-       [3]byte{80, 123, 157}:  "LCFC(HeFei) Electronics Technology co., ltd",
-       [3]byte{80, 125, 2}:    "BIODIT",
-       [3]byte{80, 126, 93}:   "Arcadyan Technology Corporation",
-       [3]byte{80, 130, 213}:  "Apple, Inc.",
-       [3]byte{80, 133, 105}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{80, 135, 137}:  "Cisco Systems, Inc",
-       [3]byte{80, 135, 184}:  "Nuvyyo Inc",
-       [3]byte{80, 137, 101}:  "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.",
-       [3]byte{80, 138, 15}:   "SHENZHEN FISE TECHNOLOGY HOLDING CO.,LTD.",
-       [3]byte{80, 138, 66}:   "Uptmate Technology Co., LTD",
-       [3]byte{80, 138, 203}:  "SHENZHEN MAXMADE TECHNOLOGY CO., LTD.",
-       [3]byte{80, 140, 119}:  "DIRMEIER Schanktechnik GmbH &Co KG",
-       [3]byte{80, 140, 177}:  "Texas Instruments",
-       [3]byte{80, 141, 111}:  "CHAHOO Limited",
-       [3]byte{80, 143, 76}:   "Xiaomi Communications Co Ltd",
-       [3]byte{80, 146, 185}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{80, 147, 79}:   "Gradual Tecnologia Ltda.",
-       [3]byte{80, 151, 114}:  "Westinghouse Digital",
-       [3]byte{80, 152, 113}:  "Inventum Technologies Private Limited",
-       [3]byte{80, 152, 243}:  "Rheem Australia Pty Ltd",
-       [3]byte{80, 154, 76}:   "Dell Inc.",
-       [3]byte{80, 158, 167}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{80, 159, 39}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{80, 159, 59}:   "OI ELECTRIC CO.,LTD",
-       [3]byte{80, 160, 84}:   "Actineon",
-       [3]byte{80, 160, 191}:  "Alba Fiber Systems Inc.",
-       [3]byte{80, 164, 200}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{80, 164, 208}:  "IEEE Registration Authority",
-       [3]byte{80, 166, 227}:  "David Clark Company",
-       [3]byte{80, 167, 21}:   "Aboundi, Inc.",
-       [3]byte{80, 167, 43}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{80, 167, 51}:   "Ruckus Wireless",
-       [3]byte{80, 168, 58}:   "S Mobile Devices Limited",
-       [3]byte{80, 169, 222}:  "Smartcom - Bulgaria AD",
-       [3]byte{80, 171, 62}:   "Qibixx AG",
-       [3]byte{80, 171, 191}:  "Hoseo Telecom",
-       [3]byte{80, 173, 213}:  "Dynalec Corporation",
-       [3]byte{80, 175, 115}:  "Shenzhen Bitland Information Technology Co., Ltd.",
-       [3]byte{80, 179, 99}:   "Digitron da Amazonia S/A",
-       [3]byte{80, 182, 149}:  "Micropoint Biotechnologies,Inc.",
-       [3]byte{80, 183, 195}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{80, 184, 136}:  "wi2be Tecnologia S/A",
-       [3]byte{80, 184, 162}:  "ImTech Technologies LLC,",
-       [3]byte{80, 189, 95}:   "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{80, 192, 6}:    "Carmanah Signs",
-       [3]byte{80, 194, 113}:  "SECURETECH INC",
-       [3]byte{80, 197, 141}:  "Juniper Networks",
-       [3]byte{80, 199, 191}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{80, 200, 229}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{80, 201, 113}:  "GN Netcom A/S",
-       [3]byte{80, 201, 160}:  "SKIPPER AS",
-       [3]byte{80, 204, 248}:  "SAMSUNG ELECTRO MECHANICS CO., LTD.",
-       [3]byte{80, 205, 34}:   "Avaya Inc",
-       [3]byte{80, 205, 50}:   "NanJing Chaoran Science & Technology Co.,Ltd.",
-       [3]byte{80, 206, 117}:  "Measy Electronics Co., Ltd.",
-       [3]byte{80, 210, 19}:   "CviLux Corporation",
-       [3]byte{80, 210, 116}:  "Steffes Corporation",
-       [3]byte{80, 211, 127}:  "Yu Fly Mikly Way Science and Technology Co., Ltd.",
-       [3]byte{80, 213, 156}:  "Thai Habel Industrial Co., Ltd.",
-       [3]byte{80, 214, 215}:  "Takahata Precision",
-       [3]byte{80, 215, 83}:   "CONELCOM GmbH",
-       [3]byte{80, 218, 0}:    "Hangzhou H3C Technologies Co., Limited",
-       [3]byte{80, 221, 79}:   "Automation Components, Inc",
-       [3]byte{80, 223, 149}:  "Lytx",
-       [3]byte{80, 224, 199}:  "TurControlSystme AG",
-       [3]byte{80, 225, 74}:   "Private",
-       [3]byte{80, 229, 73}:   "GIGA-BYTE TECHNOLOGY CO.,LTD.",
-       [3]byte{80, 230, 102}:  "Shenzhen Techtion Electronics Co., Ltd.",
-       [3]byte{80, 233, 113}:  "Jibo, Inc.",
-       [3]byte{80, 234, 214}:  "Apple, Inc.",
-       [3]byte{80, 235, 26}:   "Brocade Communications Systems, Inc.",
-       [3]byte{80, 237, 120}:  "Changzhou Yongse Infotech Co.,Ltd",
-       [3]byte{80, 237, 148}:  "EGATEL SL",
-       [3]byte{80, 240, 3}:    "Open Stack, Inc.",
-       [3]byte{80, 240, 211}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{80, 241, 74}:   "Texas Instruments",
-       [3]byte{80, 244, 60}:   "Leeo Inc",
-       [3]byte{80, 245, 32}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{80, 245, 218}:  "Amazon Technologies Inc.",
-       [3]byte{80, 246, 26}:   "Kunshan JADE Technologies co., Ltd.",
-       [3]byte{80, 247, 34}:   "Cisco Systems, Inc",
-       [3]byte{80, 250, 132}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{80, 250, 171}:  "L-tek d.o.o.",
-       [3]byte{80, 252, 48}:   "Treehouse Labs",
-       [3]byte{80, 252, 159}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{80, 254, 242}:  "Sify Technologies Ltd",
-       [3]byte{80, 255, 32}:   "Keenetic Limited",
-       [3]byte{80, 255, 153}:  "IEEE Registration Authority",
-       [3]byte{84, 2, 55}:     "Teltronic AG",
-       [3]byte{84, 3, 132}:    "Hangkong Nano IC Technologies Co., Ltd",
-       [3]byte{84, 3, 245}:    "EBN Technology Corp.",
-       [3]byte{84, 4, 150}:    "Gigawave LTD",
-       [3]byte{84, 4, 166}:    "ASUSTek COMPUTER INC.",
-       [3]byte{84, 5, 54}:     "Vivago Oy",
-       [3]byte{84, 5, 95}:     "Alcatel Lucent",
-       [3]byte{84, 5, 147}:    "WOORI ELEC Co.,Ltd",
-       [3]byte{84, 9, 85}:     "zte corporation",
-       [3]byte{84, 9, 141}:    "deister electronic GmbH",
-       [3]byte{84, 16, 236}:   "Microchip Technology Inc.",
-       [3]byte{84, 17, 47}:    "Sulzer Pump Solutions Finland Oy",
-       [3]byte{84, 17, 95}:    "Atamo Pty Ltd",
-       [3]byte{84, 19, 121}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{84, 20, 115}:   "Wingtech Group (HongKong)Limited",
-       [3]byte{84, 20, 253}:   "Orbbec 3D Technology International",
-       [3]byte{84, 25, 200}:   "vivo Mobile Communication Co., Ltd.",
-       [3]byte{84, 27, 93}:    "Techno-Innov",
-       [3]byte{84, 29, 251}:   "Freestyle Energy Ltd",
-       [3]byte{84, 30, 86}:    "Juniper Networks",
-       [3]byte{84, 31, 213}:   "Advantage Electronics",
-       [3]byte{84, 32, 24}:    "Tely Labs",
-       [3]byte{84, 33, 96}:    "Resolution Products",
-       [3]byte{84, 34, 248}:   "zte corporation",
-       [3]byte{84, 37, 234}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{84, 38, 150}:   "Apple, Inc.",
-       [3]byte{84, 39, 30}:    "AzureWave Technology Inc.",
-       [3]byte{84, 39, 88}:    "Motorola (Wuhan) Mobility Technologies Communication Co., Ltd.",
-       [3]byte{84, 39, 108}:   "Jiangsu Houge Technology Corp.",
-       [3]byte{84, 42, 156}:   "LSY Defense, LLC.",
-       [3]byte{84, 42, 162}:   "Alpha Networks Inc.",
-       [3]byte{84, 43, 87}:    "Night Owl SP",
-       [3]byte{84, 44, 234}:   "PROTECTRON",
-       [3]byte{84, 47, 137}:   "Euclid Laboratories, Inc.",
-       [3]byte{84, 47, 138}:   "TELLESCOM INDUSTRIA E COMERCIO EM TELECOMUNICACAO",
-       [3]byte{84, 49, 49}:    "Raster Vision Ltd",
-       [3]byte{84, 51, 203}:   "Apple, Inc.",
-       [3]byte{84, 53, 48}:    "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{84, 53, 223}:   "Symeo GmbH",
-       [3]byte{84, 54, 155}:   "1Verge Internet Technology (Beijing) Co., Ltd.",
-       [3]byte{84, 57, 104}:   "Edgewater Networks Inc",
-       [3]byte{84, 57, 223}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{84, 59, 48}:    "duagon AG",
-       [3]byte{84, 61, 55}:    "Ruckus Wireless",
-       [3]byte{84, 64, 173}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{84, 66, 73}:    "Sony Corporation",
-       [3]byte{84, 68, 8}:     "Nokia Corporation",
-       [3]byte{84, 70, 107}:   "Shenzhen CZTIC Electronic Technology Co., Ltd",
-       [3]byte{84, 72, 156}:   "CDOUBLES ELECTRONICS CO. LTD.",
-       [3]byte{84, 74, 0}:     "Cisco Systems, Inc",
-       [3]byte{84, 74, 5}:     "wenglor sensoric gmbh",
-       [3]byte{84, 74, 22}:    "Texas Instruments",
-       [3]byte{84, 75, 140}:   "Juniper Networks",
-       [3]byte{84, 78, 69}:    "Private",
-       [3]byte{84, 78, 144}:   "Apple, Inc.",
-       [3]byte{84, 81, 27}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{84, 81, 70}:    "AMG Systems Ltd.",
-       [3]byte{84, 83, 237}:   "Sony Corporation",
-       [3]byte{84, 84, 20}:    "Digital RF Corea, Inc",
-       [3]byte{84, 84, 207}:   "PROBEDIGITAL CO.,LTD",
-       [3]byte{84, 90, 166}:   "Espressif Inc.",
-       [3]byte{84, 94, 189}:   "NL Technologies",
-       [3]byte{84, 95, 169}:   "Teracom Limited",
-       [3]byte{84, 96, 9}:     "Google, Inc.",
-       [3]byte{84, 97, 114}:   "ZODIAC AEROSPACE SAS",
-       [3]byte{84, 97, 234}:   "Zaplox AB",
-       [3]byte{84, 100, 217}:  "Sagemcom Broadband SAS",
-       [3]byte{84, 101, 222}:  "ARRIS Group, Inc.",
-       [3]byte{84, 102, 108}:  "Shenzhen YOUHUA Technology Co., Ltd",
-       [3]byte{84, 103, 81}:   "Compal Broadband Networks, Inc.",
-       [3]byte{84, 108, 14}:   "Texas Instruments",
-       [3]byte{84, 109, 82}:   "TOPVIEW OPTRONICS CORP.",
-       [3]byte{84, 114, 79}:   "Apple, Inc.",
-       [3]byte{84, 115, 152}:  "Toyo Electronics Corporation",
-       [3]byte{84, 116, 230}:  "Webtech Wireless",
-       [3]byte{84, 117, 149}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{84, 117, 208}:  "Cisco Systems, Inc",
-       [3]byte{84, 120, 26}:   "Cisco Systems, Inc",
-       [3]byte{84, 121, 117}:  "Nokia Corporation",
-       [3]byte{84, 122, 82}:   "CTE International srl",
-       [3]byte{84, 124, 105}:  "Cisco Systems, Inc",
-       [3]byte{84, 125, 205}:  "Texas Instruments",
-       [3]byte{84, 127, 84}:   "INGENICO",
-       [3]byte{84, 127, 168}:  "TELCO systems, s.r.o.",
-       [3]byte{84, 127, 238}:  "Cisco Systems, Inc",
-       [3]byte{84, 129, 173}:  "Eagle Research Corporation",
-       [3]byte{84, 132, 123}:  "Digital Devices GmbH",
-       [3]byte{84, 136, 14}:   "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
-       [3]byte{84, 137, 34}:   "Zelfy Inc",
-       [3]byte{84, 137, 152}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{84, 140, 160}:  "Liteon Technology Corporation",
-       [3]byte{84, 146, 190}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{84, 147, 89}:   "SHENZHEN TWOWING TECHNOLOGIES CO.,LTD.",
-       [3]byte{84, 148, 120}:  "Silvershore Technology Partners",
-       [3]byte{84, 154, 17}:   "IEEE Registration Authority",
-       [3]byte{84, 154, 22}:   "Uzushio Electric Co.,Ltd.",
-       [3]byte{84, 154, 76}:   "GUANGDONG HOMECARE TECHNOLOGY CO.,LTD.",
-       [3]byte{84, 155, 18}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{84, 157, 133}:  "EnerAccess inc",
-       [3]byte{84, 159, 19}:   "Apple, Inc.",
-       [3]byte{84, 159, 53}:   "Dell Inc.",
-       [3]byte{84, 160, 79}:   "t-mac Technologies Ltd",
-       [3]byte{84, 160, 80}:   "ASUSTek COMPUTER INC.",
-       [3]byte{84, 162, 116}:  "Cisco Systems, Inc",
-       [3]byte{84, 163, 27}:   "Shenzhen Linkworld Technology Co,.LTD",
-       [3]byte{84, 163, 250}:  "BQT Solutions (Australia)Pty Ltd",
-       [3]byte{84, 165, 27}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{84, 165, 75}:   "NSC Communications Siberia Ltd",
-       [3]byte{84, 166, 25}:   "Alcatel-Lucent Shanghai Bell Co., Ltd",
-       [3]byte{84, 169, 212}:  "Minibar Systems",
-       [3]byte{84, 171, 58}:   "QUANTA COMPUTER INC.",
-       [3]byte{84, 174, 39}:   "Apple, Inc.",
-       [3]byte{84, 177, 33}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{84, 181, 108}:  "Xi'an NovaStar Tech Co., Ltd",
-       [3]byte{84, 182, 32}:   "SUHDOL E&C Co.Ltd.",
-       [3]byte{84, 183, 83}:   "Hunan Fenghui Yinjia Science And Technology Co.,Ltd",
-       [3]byte{84, 184, 10}:   "D-Link International",
-       [3]byte{84, 189, 121}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{84, 190, 83}:   "zte corporation",
-       [3]byte{84, 190, 247}:  "PEGATRON CORPORATION",
-       [3]byte{84, 196, 21}:   "Hangzhou Hikvision Digital Technology Co.,Ltd.",
-       [3]byte{84, 197, 122}:  "Sunnovo International Limited",
-       [3]byte{84, 200, 15}:   "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{84, 201, 223}:  "FN-LINK TECHNOLOGY LIMITED",
-       [3]byte{84, 205, 16}:   "Panasonic Mobile Communications Co.,Ltd.",
-       [3]byte{84, 205, 167}:  "Fujian Shenzhou Electronic Co.,Ltd",
-       [3]byte{84, 205, 238}:  "ShenZhen Apexis Electronic Co.,Ltd",
-       [3]byte{84, 208, 180}:  "Xiamen Four-Faith Communication Technology Co.,Ltd",
-       [3]byte{84, 208, 237}:  "AXIM Communications",
-       [3]byte{84, 209, 99}:   "MAX-TECH,INC",
-       [3]byte{84, 209, 176}:  "Universal Laser Systems, Inc",
-       [3]byte{84, 210, 114}:  "Nuki Home Solutions GmbH",
-       [3]byte{84, 212, 111}:  "Cisco SPVTG",
-       [3]byte{84, 215, 81}:   "Proximus",
-       [3]byte{84, 217, 228}:  "BRILLIANTTS CO., LTD",
-       [3]byte{84, 220, 29}:   "Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd",
-       [3]byte{84, 223, 0}:    "Ulterius Technologies, LLC",
-       [3]byte{84, 223, 36}:   "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{84, 223, 99}:   "Intrakey technologies GmbH",
-       [3]byte{84, 224, 50}:   "Juniper Networks",
-       [3]byte{84, 224, 97}:   "SICHUAN TIANYI COMHEART TELECOMCO., LTD",
-       [3]byte{84, 225, 64}:   "INGENICO",
-       [3]byte{84, 225, 173}:  "LCFC(HeFei) Electronics Technology co., ltd",
-       [3]byte{84, 226, 200}:  "Dongguan Aoyuan Electronics Technology Co., Ltd",
-       [3]byte{84, 226, 224}:  "ARRIS Group, Inc.",
-       [3]byte{84, 227, 176}:  "JVL Industri Elektronik",
-       [3]byte{84, 227, 246}:  "Alcatel-Lucent",
-       [3]byte{84, 228, 58}:   "Apple, Inc.",
-       [3]byte{84, 228, 189}:  "FN-LINK TECHNOLOGY LIMITED",
-       [3]byte{84, 230, 63}:   "ShenZhen LingKeWeiEr Technology Co., Ltd.",
-       [3]byte{84, 230, 252}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{84, 234, 168}:  "Apple, Inc.",
-       [3]byte{84, 237, 163}:  "Navdy, Inc.",
-       [3]byte{84, 238, 117}:  "Wistron InfoComm(Kunshan)Co.,Ltd.",
-       [3]byte{84, 239, 146}:  "Shenzhen Elink Technology Co., LTD",
-       [3]byte{84, 239, 254}:  "Fullpower Technologies, Inc.",
-       [3]byte{84, 242, 1}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{84, 245, 182}:  "ORIENTAL PACIFIC INTERNATIONAL LIMITED",
-       [3]byte{84, 246, 102}:  "Berthold Technologies GmbH and Co.KG",
-       [3]byte{84, 246, 197}:  "FUJIAN STAR-NET COMMUNICATION CO.,LTD",
-       [3]byte{84, 248, 118}:  "ABB AG",
-       [3]byte{84, 250, 62}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{84, 250, 150}:  "Nokia",
-       [3]byte{84, 251, 88}:   "WISEWARE, Lda",
-       [3]byte{84, 253, 191}:  "Scheidt & Bachmann GmbH",
-       [3]byte{84, 255, 130}:  "Davit Solution co.",
-       [3]byte{84, 255, 207}:  "Mopria Alliance",
-       [3]byte{88, 0, 187}:    "Juniper Networks",
-       [3]byte{88, 0, 227}:    "Liteon Technology Corporation",
-       [3]byte{88, 4, 84}:     "ICOMM HK LIMITED",
-       [3]byte{88, 4, 203}:    "Tianjin Huisun Technology Co.,Ltd.",
-       [3]byte{88, 5, 40}:     "LABRIS NETWORKS",
-       [3]byte{88, 5, 86}:     "Elettronica GF S.r.L.",
-       [3]byte{88, 8, 250}:    "Fiber Optic & telecommunication INC.",
-       [3]byte{88, 9, 67}:     "Private",
-       [3]byte{88, 9, 229}:    "Kivic Inc.",
-       [3]byte{88, 10, 32}:    "Cisco Systems, Inc",
-       [3]byte{88, 16, 140}:   "Intelbras",
-       [3]byte{88, 18, 67}:    "AcSiP Technology Corp.",
-       [3]byte{88, 22, 38}:    "Avaya Inc",
-       [3]byte{88, 23, 12}:    "Sony Mobile Communications AB",
-       [3]byte{88, 25, 248}:   "ARRIS Group, Inc.",
-       [3]byte{88, 28, 189}:   "Affinegy",
-       [3]byte{88, 29, 145}:   "Advanced Mobile Telecom co.,ltd.",
-       [3]byte{88, 31, 40}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{88, 31, 103}:   "Open-m technology limited",
-       [3]byte{88, 31, 170}:   "Apple, Inc.",
-       [3]byte{88, 31, 239}:   "Tuttnaer LTD",
-       [3]byte{88, 32, 177}:   "Hewlett Packard",
-       [3]byte{88, 33, 54}:    "KMB systems, s.r.o.",
-       [3]byte{88, 35, 140}:   "Technicolor CH USA Inc.",
-       [3]byte{88, 42, 247}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{88, 43, 219}:   "Pax AB",
-       [3]byte{88, 46, 254}:   "Lighting Science Group",
-       [3]byte{88, 47, 66}:    "Universal Electric Corporation",
-       [3]byte{88, 49, 18}:    "DRUST",
-       [3]byte{88, 50, 119}:   "Reliance Communications LLC",
-       [3]byte{88, 52, 59}:    "Glovast Technology Ltd.",
-       [3]byte{88, 53, 217}:   "Cisco Systems, Inc",
-       [3]byte{88, 56, 121}:   "RICOH COMPANY, LTD.",
-       [3]byte{88, 60, 198}:   "Omneality Ltd.",
-       [3]byte{88, 63, 84}:    "LG Electronics (Mobile Communications)",
-       [3]byte{88, 64, 78}:    "Apple, Inc.",
-       [3]byte{88, 66, 228}:   "Baxter International Inc",
-       [3]byte{88, 68, 152}:   "Xiaomi Communications Co Ltd",
-       [3]byte{88, 70, 143}:   "Koncar Electronics and Informatics",
-       [3]byte{88, 70, 225}:   "Baxter International Inc",
-       [3]byte{88, 71, 4}:     "Shenzhen Webridge Technology Co.,Ltd",
-       [3]byte{88, 72, 34}:    "Sony Mobile Communications AB",
-       [3]byte{88, 72, 192}:   "COFLEC",
-       [3]byte{88, 73, 37}:    "E3 Enterprise",
-       [3]byte{88, 73, 59}:    "Palo Alto Networks",
-       [3]byte{88, 73, 186}:   "Chitai Electronic Corp.",
-       [3]byte{88, 76, 25}:    "Chongqing Guohong Technology Development Company Limited",
-       [3]byte{88, 76, 238}:   "Digital One Technologies, Limited",
-       [3]byte{88, 80, 118}:   "Linear Equipamentos Eletronicos SA",
-       [3]byte{88, 80, 171}:   "TLS Corporation",
-       [3]byte{88, 80, 230}:   "Best Buy Corporation",
-       [3]byte{88, 82, 138}:   "Mitsubishi Electric Corporation",
-       [3]byte{88, 83, 192}:   "Beijing Guang Runtong Technology Development Company co.,Ltd",
-       [3]byte{88, 85, 202}:   "Apple, Inc.",
-       [3]byte{88, 86, 232}:   "ARRIS Group, Inc.",
-       [3]byte{88, 87, 13}:    "Danfoss Solar Inverters",
-       [3]byte{88, 96, 95}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{88, 97, 99}:    "Quantum Networks (SG) Pte. Ltd.",
-       [3]byte{88, 99, 86}:    "FN-LINK TECHNOLOGY LIMITED",
-       [3]byte{88, 99, 154}:   "TPL SYSTEMES",
-       [3]byte{88, 101, 230}:  "INFOMARK CO., LTD.",
-       [3]byte{88, 102, 186}:  "Hangzhou H3C Technologies Co., Limited",
-       [3]byte{88, 103, 26}:   "Barnes&Noble",
-       [3]byte{88, 103, 127}:  "Clare Controls Inc.",
-       [3]byte{88, 104, 93}:   "Tempo Australia Pty Ltd",
-       [3]byte{88, 105, 108}:  "Ruijie Networks Co.,LTD",
-       [3]byte{88, 105, 249}:  "Fusion Transactive Ltd.",
-       [3]byte{88, 106, 177}:  "Hangzhou H3C Technologies Co., Limited",
-       [3]byte{88, 109, 143}:  "Cisco-Linksys, LLC",
-       [3]byte{88, 110, 214}:  "Private",
-       [3]byte{88, 112, 198}:  "Shanghai Xiaoyi Technology Co., Ltd.",
-       [3]byte{88, 117, 33}:   "CJSC RTSoft",
-       [3]byte{88, 118, 117}:  "Beijing ECHO Technologies Co.,Ltd",
-       [3]byte{88, 118, 197}:  "DIGI I'S LTD",
-       [3]byte{88, 122, 77}:   "Stonesoft Corporation",
-       [3]byte{88, 122, 98}:   "Texas Instruments",
-       [3]byte{88, 123, 233}:  "AirPro Technology India Pvt. Ltd",
-       [3]byte{88, 126, 97}:   "Qingdao Hisense Communications Co.,Ltd.",
-       [3]byte{88, 127, 87}:   "Apple, Inc.",
-       [3]byte{88, 127, 102}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{88, 127, 183}:  "SONAR INDUSTRIAL CO., LTD.",
-       [3]byte{88, 127, 200}:  "S2M",
-       [3]byte{88, 130, 29}:   "H. Schomäcker GmbH",
-       [3]byte{88, 130, 168}:  "Microsoft",
-       [3]byte{88, 132, 228}:  "IP500 Alliance e.V.",
-       [3]byte{88, 133, 110}:  "QSC AG",
-       [3]byte{88, 135, 76}:   "LITE-ON CLEAN ENERGY TECHNOLOGY CORP.",
-       [3]byte{88, 135, 226}:  "Shenzhen Coship Electronics Co., Ltd.",
-       [3]byte{88, 138, 90}:   "Dell Inc.",
-       [3]byte{88, 139, 243}:  "Zyxel Communications Corporation",
-       [3]byte{88, 141, 9}:    "Cisco Systems, Inc",
-       [3]byte{88, 141, 100}:  "Xi'an Clevbee Technology Co.,Ltd",
-       [3]byte{88, 144, 67}:   "Sagemcom Broadband SAS",
-       [3]byte{88, 145, 207}:  "Intel Corporate",
-       [3]byte{88, 146, 13}:   "Kinetic Avionics Limited",
-       [3]byte{88, 147, 150}:  "Ruckus Wireless",
-       [3]byte{88, 148, 107}:  "Intel Corporate",
-       [3]byte{88, 148, 207}:  "Vertex Standard LMR, Inc.",
-       [3]byte{88, 151, 30}:   "Cisco Systems, Inc",
-       [3]byte{88, 151, 189}:  "Cisco Systems, Inc",
-       [3]byte{88, 152, 53}:   "Technicolor",
-       [3]byte{88, 152, 111}:  "Revolution Display",
-       [3]byte{88, 155, 11}:   "Shineway Technologies, Inc.",
-       [3]byte{88, 156, 252}:  "FreeBSD Foundation",
-       [3]byte{88, 160, 203}:  "TrackNet, Inc",
-       [3]byte{88, 162, 181}:  "LG Electronics (Mobile Communications)",
-       [3]byte{88, 167, 111}:  "iD corporation",
-       [3]byte{88, 168, 57}:   "Intel Corporate",
-       [3]byte{88, 172, 120}:  "Cisco Systems, Inc",
-       [3]byte{88, 176, 53}:   "Apple, Inc.",
-       [3]byte{88, 176, 212}:  "ZuniData Systems Inc.",
-       [3]byte{88, 180, 45}:   "YSTen Technology Co.,Ltd",
-       [3]byte{88, 182, 51}:   "Ruckus Wireless",
-       [3]byte{88, 185, 97}:   "SOLEM Electronique",
-       [3]byte{88, 185, 225}:  "Crystalfontz America, Inc.",
-       [3]byte{88, 188, 39}:   "Cisco Systems, Inc",
-       [3]byte{88, 188, 143}:  "Cognitive Systems Corp.",
-       [3]byte{88, 189, 163}:  "Nintendo Co., Ltd.",
-       [3]byte{88, 189, 249}:  "Sigrand",
-       [3]byte{88, 191, 234}:  "Cisco Systems, Inc",
-       [3]byte{88, 193, 122}:  "Cambium Networks Limited",
-       [3]byte{88, 194, 50}:   "NEC Corporation",
-       [3]byte{88, 195, 139}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{88, 197, 131}:  "ITEL MOBILE LIMITED",
-       [3]byte{88, 197, 203}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{88, 201, 53}:   "Chiun Mai Communication Systems, Inc",
-       [3]byte{88, 207, 75}:   "Lufkin Industries",
-       [3]byte{88, 208, 113}:  "BW Broadcast",
-       [3]byte{88, 208, 143}:  "IEEE 1904.1 Working Group",
-       [3]byte{88, 214, 122}:  "TCPlink",
-       [3]byte{88, 214, 211}:  "Dairy Cheq Inc",
-       [3]byte{88, 217, 213}:  "Tenda Technology Co.,Ltd.Dongguan branch",
-       [3]byte{88, 219, 141}:  "Fast Co., Ltd.",
-       [3]byte{88, 220, 109}:  "Exceptional Innovation, Inc.",
-       [3]byte{88, 224, 44}:   "Micro Technic A/S",
-       [3]byte{88, 225, 108}:  "Ying Hua Information Technology (Shanghai)Co., LTD",
-       [3]byte{88, 226, 143}:  "Apple, Inc.",
-       [3]byte{88, 227, 38}:   "Compass Technologies Inc.",
-       [3]byte{88, 228, 118}:  "CENTRON COMMUNICATIONS TECHNOLOGIES FUJIAN CO.,LTD",
-       [3]byte{88, 230, 54}:   "EVRsafe Technologies",
-       [3]byte{88, 231, 71}:   "Deltanet AG",
-       [3]byte{88, 232, 8}:    "AUTONICS CORPORATION",
-       [3]byte{88, 232, 118}:  "IEEE Registration Authority",
-       [3]byte{88, 235, 20}:   "Proteus Digital Health",
-       [3]byte{88, 236, 225}:  "Newport Corporation",
-       [3]byte{88, 238, 206}:  "Icon Time Systems",
-       [3]byte{88, 239, 104}:  "Belkin International Inc.",
-       [3]byte{88, 241, 2}:    "BLU Products Inc.",
-       [3]byte{88, 243, 135}:  "HCCP",
-       [3]byte{88, 243, 156}:  "Cisco Systems, Inc",
-       [3]byte{88, 244, 150}:  "Source Chain",
-       [3]byte{88, 246, 123}:  "Xia Men UnionCore Technology LTD.",
-       [3]byte{88, 246, 191}:  "Kyoto University",
-       [3]byte{88, 249, 142}:  "SECUDOS GmbH",
-       [3]byte{88, 251, 132}:  "Intel Corporate",
-       [3]byte{88, 252, 115}:  "Arria Live Media, Inc.",
-       [3]byte{88, 252, 219}:  "IEEE Registration Authority",
-       [3]byte{88, 253, 32}:   "Bravida Sakerhet AB",
-       [3]byte{92, 2, 106}:    "Applied Vision Corporation",
-       [3]byte{92, 3, 57}:     "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{92, 7, 111}:    "Thought Creator",
-       [3]byte{92, 9, 121}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{92, 10, 91}:    "SAMSUNG ELECTRO MECHANICS CO., LTD.",
-       [3]byte{92, 12, 14}:    "Guizhou Huaxintong Semiconductor Technology Co Ltd",
-       [3]byte{92, 12, 187}:   "CELIZION Inc.",
-       [3]byte{92, 14, 139}:   "Extreme Networks, Inc.",
-       [3]byte{92, 17, 147}:   "Seal One AG",
-       [3]byte{92, 20, 55}:    "Thyssenkrupp Aufzugswerke GmbH",
-       [3]byte{92, 21, 21}:    "ADVAN",
-       [3]byte{92, 21, 225}:   "AIDC TECHNOLOGY (S) PTE LTD",
-       [3]byte{92, 22, 199}:   "Big Switch Networks",
-       [3]byte{92, 23, 55}:    "I-View Now, LLC.",
-       [3]byte{92, 23, 211}:   "LGE",
-       [3]byte{92, 24, 181}:   "Talon Communications",
-       [3]byte{92, 26, 111}:   "Cambridge Industries(Group) Co.,Ltd.",
-       [3]byte{92, 32, 208}:   "Asoni Communication Co., Ltd.",
-       [3]byte{92, 34, 196}:   "DAE EUN ELETRONICS CO., LTD",
-       [3]byte{92, 36, 67}:    "O-Sung Telecom Co., Ltd.",
-       [3]byte{92, 36, 121}:   "Baltech AG",
-       [3]byte{92, 37, 76}:    "Avire Global Pte Ltd",
-       [3]byte{92, 38, 10}:    "Dell Inc.",
-       [3]byte{92, 42, 239}:   "Open Access Pty Ltd",
-       [3]byte{92, 43, 245}:   "Vivint Wireless Inc.",
-       [3]byte{92, 46, 89}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{92, 46, 210}:   "ABC(XiSheng) Electronics Co.,Ltd",
-       [3]byte{92, 49, 62}:    "Texas Instruments",
-       [3]byte{92, 51, 39}:    "Spazio Italia srl",
-       [3]byte{92, 51, 92}:    "Swissphone Telecom AG",
-       [3]byte{92, 51, 142}:   "Alpha Networks Inc.",
-       [3]byte{92, 53, 59}:    "Compal Broadband Networks, Inc.",
-       [3]byte{92, 53, 218}:   "There Corporation Oy",
-       [3]byte{92, 54, 184}:   "TCL King Electrical Appliances (Huizhou) Co., Ltd",
-       [3]byte{92, 56, 224}:   "Shanghai Super Electronics Technology Co.,LTD",
-       [3]byte{92, 59, 53}:    "Gehirn Inc.",
-       [3]byte{92, 60, 39}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{92, 64, 88}:    "Jefferson Audio Video Systems, Inc.",
-       [3]byte{92, 65, 231}:   "Wiatec International Ltd.",
-       [3]byte{92, 67, 210}:   "HAZEMEYER",
-       [3]byte{92, 69, 39}:    "Juniper Networks",
-       [3]byte{92, 73, 121}:   "AVM Audiovisuelles Marketing und Computersysteme GmbH",
-       [3]byte{92, 73, 125}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{92, 74, 31}:    "SICHUAN TIANYI COMHEART TELECOMCO., LTD",
-       [3]byte{92, 74, 38}:    "Enguity Technology Corp",
-       [3]byte{92, 76, 169}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{92, 80, 21}:    "Cisco Systems, Inc",
-       [3]byte{92, 81, 79}:    "Intel Corporate",
-       [3]byte{92, 81, 129}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{92, 81, 136}:   "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{92, 82, 30}:    "Nintendo Co.,Ltd",
-       [3]byte{92, 84, 109}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{92, 86, 237}:   "3pleplay Electronics Private Limited",
-       [3]byte{92, 87, 26}:    "ARRIS Group, Inc.",
-       [3]byte{92, 87, 200}:   "Nokia Corporation",
-       [3]byte{92, 88, 25}:    "Jingsheng Technology Co., Ltd.",
-       [3]byte{92, 89, 72}:    "Apple, Inc.",
-       [3]byte{92, 91, 53}:    "Mist Systems, Inc.",
-       [3]byte{92, 91, 194}:   "YIK Corporation",
-       [3]byte{92, 94, 171}:   "Juniper Networks",
-       [3]byte{92, 95, 103}:   "Intel Corporate",
-       [3]byte{92, 99, 191}:   "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{92, 103, 118}:  "IDS Imaging Development Systems GmbH",
-       [3]byte{92, 105, 132}:  "NUVICO",
-       [3]byte{92, 106, 125}:  "KENTKART EGE ELEKTRONIK SAN. VE TIC. LTD. STI.",
-       [3]byte{92, 106, 128}:  "Zyxel Communications Corporation",
-       [3]byte{92, 107, 50}:   "Texas Instruments",
-       [3]byte{92, 107, 79}:   "Hello Inc.",
-       [3]byte{92, 109, 32}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{92, 111, 79}:   "S.A. SISTEL",
-       [3]byte{92, 112, 163}:  "LG Electronics (Mobile Communications)",
-       [3]byte{92, 119, 87}:   "Haivision Network Video",
-       [3]byte{92, 119, 118}:  "TCT mobile ltd",
-       [3]byte{92, 125, 94}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{92, 129, 167}:  "Network Devices Pty Ltd",
-       [3]byte{92, 131, 143}:  "Cisco Systems, Inc",
-       [3]byte{92, 132, 134}:  "Brightsource Industries Israel LTD",
-       [3]byte{92, 134, 19}:   "Beijing Zhoenet Technology Co., Ltd",
-       [3]byte{92, 134, 74}:   "Secret Labs LLC",
-       [3]byte{92, 134, 92}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{92, 134, 193}:  "DONGGUAN SOLUM ELECTRONICS CO.,LTD",
-       [3]byte{92, 135, 120}:  "Cybertelbridge co.,ltd",
-       [3]byte{92, 137, 154}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{92, 137, 212}:  "Beijing Banner Electric Co.,Ltd",
-       [3]byte{92, 138, 56}:   "Hewlett Packard",
-       [3]byte{92, 141, 45}:   "Shanghai Wellpay Information Technology Co., Ltd",
-       [3]byte{92, 141, 78}:   "Apple, Inc.",
-       [3]byte{92, 143, 224}:  "ARRIS Group, Inc.",
-       [3]byte{92, 147, 162}:  "Liteon Technology Corporation",
-       [3]byte{92, 149, 174}:  "Apple, Inc.",
-       [3]byte{92, 150, 86}:   "AzureWave Technology Inc.",
-       [3]byte{92, 150, 106}:  "RTNET",
-       [3]byte{92, 150, 157}:  "Apple, Inc.",
-       [3]byte{92, 151, 243}:  "Apple, Inc.",
-       [3]byte{92, 153, 96}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{92, 154, 216}:  "FUJITSU LIMITED",
-       [3]byte{92, 161, 118}:  "SICHUAN TIANYI COMHEART TELECOMCO., LTD",
-       [3]byte{92, 161, 120}:  "TableTop Media (dba Ziosk)",
-       [3]byte{92, 163, 157}:  "SAMSUNG ELECTRO MECHANICS CO., LTD.",
-       [3]byte{92, 163, 235}:  "Lokel s.r.o.",
-       [3]byte{92, 164, 138}:  "Cisco Systems, Inc",
-       [3]byte{92, 168, 106}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{92, 169, 51}:   "Luma Home",
-       [3]byte{92, 170, 253}:  "Sonos, Inc.",
-       [3]byte{92, 172, 76}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{92, 173, 118}:  "Shenzhen TCL New Technology Co., Ltd",
-       [3]byte{92, 173, 207}:  "Apple, Inc.",
-       [3]byte{92, 175, 6}:    "LG Electronics (Mobile Communications)",
-       [3]byte{92, 176, 102}:  "ARRIS Group, Inc.",
-       [3]byte{92, 179, 149}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{92, 180, 62}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{92, 181, 36}:   "Sony Mobile Communications AB",
-       [3]byte{92, 181, 89}:   "CNEX Labs",
-       [3]byte{92, 182, 204}:  "NovaComm Technologies Inc.",
-       [3]byte{92, 184, 203}:  "Allis Communications",
-       [3]byte{92, 185, 1}:    "Hewlett Packard",
-       [3]byte{92, 186, 55}:   "Microsoft Corporation",
-       [3]byte{92, 189, 158}:  "HONGKONG MIRACLE EAGLE TECHNOLOGY(GROUP) LIMITED",
-       [3]byte{92, 194, 19}:   "Fr. Sauter AG",
-       [3]byte{92, 195, 7}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{92, 197, 212}:  "Intel Corporate",
-       [3]byte{92, 198, 208}:  "Skyworth Digital Technology(Shenzhen) Co.,Ltd",
-       [3]byte{92, 198, 233}:  "Edifier International",
-       [3]byte{92, 199, 215}:  "AZROAD TECHNOLOGY COMPANY LIMITED",
-       [3]byte{92, 201, 211}:  "PALLADIUM ENERGY ELETRONICA DA AMAZONIA LTDA",
-       [3]byte{92, 202, 26}:   "Microsoft Mobile Oy",
-       [3]byte{92, 202, 50}:   "Theben AG",
-       [3]byte{92, 204, 160}:  "Gridwiz Inc.",
-       [3]byte{92, 204, 255}:  "Techroutes Network Pvt Ltd",
-       [3]byte{92, 206, 173}:  "CDYNE Corporation",
-       [3]byte{92, 207, 127}:  "Espressif Inc.",
-       [3]byte{92, 209, 53}:   "Xtreme Power Systems",
-       [3]byte{92, 210, 228}:  "Intel Corporate",
-       [3]byte{92, 212, 27}:   "UCZOON Technology Co., LTD",
-       [3]byte{92, 212, 171}:  "Zektor",
-       [3]byte{92, 214, 31}:   "Qardio, Inc",
-       [3]byte{92, 217, 152}:  "D-Link Corporation",
-       [3]byte{92, 218, 212}:  "Murata Manufacturing Co., Ltd.",
-       [3]byte{92, 220, 150}:  "Arcadyan Technology Corporation",
-       [3]byte{92, 221, 112}:  "Hangzhou H3C Technologies Co., Limited",
-       [3]byte{92, 224, 197}:  "Intel Corporate",
-       [3]byte{92, 224, 202}:  "FeiTian United (Beijing) System Technology Co., Ltd.",
-       [3]byte{92, 224, 246}:  "NIC.br- Nucleo de Informacao e Coordenacao do Ponto BR",
-       [3]byte{92, 226, 35}:   "Delphin Technology AG",
-       [3]byte{92, 226, 134}:  "Nortel Networks",
-       [3]byte{92, 226, 140}:  "Zyxel Communications Corporation",
-       [3]byte{92, 226, 244}:  "AcSiP Technology Corp.",
-       [3]byte{92, 227, 14}:   "ARRIS Group, Inc.",
-       [3]byte{92, 227, 182}:  "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{92, 231, 191}:  "New Singularity International Technical Development Co.,Ltd",
-       [3]byte{92, 232, 183}:  "Oraimo Technology Limited",
-       [3]byte{92, 232, 235}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{92, 234, 29}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{92, 235, 78}:   "R. STAHL HMI Systems GmbH",
-       [3]byte{92, 235, 104}:  "Cheerstar Technology Co., Ltd",
-       [3]byte{92, 238, 121}:  "Global Digitech Co LTD",
-       [3]byte{92, 242, 7}:    "Speco Technologies",
-       [3]byte{92, 242, 134}:  "IEEE Registration Authority",
-       [3]byte{92, 243, 112}:  "CC&C Technologies, Inc",
-       [3]byte{92, 243, 252}:  "IBM Corp",
-       [3]byte{92, 244, 171}:  "Zyxel Communications Corporation",
-       [3]byte{92, 245, 13}:   "Institute of microelectronic applications",
-       [3]byte{92, 245, 218}:  "Apple, Inc.",
-       [3]byte{92, 246, 220}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{92, 247, 195}:  "SYNTECH (HK) TECHNOLOGY LIMITED",
-       [3]byte{92, 247, 230}:  "Apple, Inc.",
-       [3]byte{92, 248, 33}:   "Texas Instruments",
-       [3]byte{92, 248, 161}:  "Murata Manufacturing Co., Ltd.",
-       [3]byte{92, 249, 56}:   "Apple, Inc.",
-       [3]byte{92, 249, 106}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{92, 249, 221}:  "Dell Inc.",
-       [3]byte{92, 249, 240}:  "Atomos Engineering P/L",
-       [3]byte{92, 252, 102}:  "Cisco Systems, Inc",
-       [3]byte{92, 255, 53}:   "Wistron Corporation",
-       [3]byte{92, 255, 255}:  "Shenzhen Kezhonglong Optoelectronic Technology Co., Ltd",
-       [3]byte{96, 1, 148}:    "Espressif Inc.",
-       [3]byte{96, 2, 146}:    "PEGATRON CORPORATION",
-       [3]byte{96, 2, 180}:    "Wistron Neweb Corporation",
-       [3]byte{96, 3, 8}:      "Apple, Inc.",
-       [3]byte{96, 3, 71}:     "Billion Electric Co. Ltd.",
-       [3]byte{96, 4, 23}:     "POSBANK CO.,LTD",
-       [3]byte{96, 8, 16}:     "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{96, 8, 55}:     "ivvi Scientific(Nanchang)Co.Ltd",
-       [3]byte{96, 11, 3}:     "Hangzhou H3C Technologies Co., Limited",
-       [3]byte{96, 15, 119}:   "SilverPlus, Inc",
-       [3]byte{96, 17, 153}:   "Siama Systems Inc",
-       [3]byte{96, 18, 131}:   "TSB REAL TIME LOCATION SYSTEMS S.L.",
-       [3]byte{96, 18, 139}:   "CANON INC.",
-       [3]byte{96, 20, 102}:   "zte corporation",
-       [3]byte{96, 20, 179}:   "CyberTAN Technology Inc.",
-       [3]byte{96, 21, 199}:   "IdaTech",
-       [3]byte{96, 24, 3}:     "Daikin Air-conditioning (Shanghai) Co., Ltd.",
-       [3]byte{96, 24, 46}:    "ShenZhen Protruly Electronic Ltd co.",
-       [3]byte{96, 24, 136}:   "zte corporation",
-       [3]byte{96, 25, 12}:    "RRAMAC",
-       [3]byte{96, 25, 41}:    "VOLTRONIC POWER TECHNOLOGY(SHENZHEN) CORP.",
-       [3]byte{96, 25, 112}:   "HUIZHOU QIAOXING ELECTRONICS TECHNOLOGY CO., LTD.",
-       [3]byte{96, 25, 113}:   "ARRIS Group, Inc.",
-       [3]byte{96, 29, 15}:    "Midnite Solar",
-       [3]byte{96, 30, 2}:     "EltexAlatau",
-       [3]byte{96, 33, 1}:     "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{96, 33, 3}:     "I4VINE, INC",
-       [3]byte{96, 33, 192}:   "Murata Manufacturing Co., Ltd.",
-       [3]byte{96, 36, 193}:   "Jiangsu Zhongxun Electronic Technology Co., Ltd",
-       [3]byte{96, 39, 28}:    "VIDEOR E. Hartig GmbH",
-       [3]byte{96, 42, 84}:    "CardioTek B.V.",
-       [3]byte{96, 42, 208}:   "Cisco SPVTG",
-       [3]byte{96, 46, 32}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{96, 49, 59}:    "Sunnovo International Limited",
-       [3]byte{96, 49, 151}:   "Zyxel Communications Corporation",
-       [3]byte{96, 50, 240}:   "Mplus technology",
-       [3]byte{96, 51, 75}:    "Apple, Inc.",
-       [3]byte{96, 53, 83}:    "Buwon Technology",
-       [3]byte{96, 54, 150}:   "The Sapling Company",
-       [3]byte{96, 54, 221}:   "Intel Corporate",
-       [3]byte{96, 56, 14}:    "ALPS ELECTRIC CO.,LTD.",
-       [3]byte{96, 56, 224}:   "Belkin International Inc.",
-       [3]byte{96, 57, 31}:    "ABB Ltd",
-       [3]byte{96, 61, 38}:    "Technicolor CH USA Inc.",
-       [3]byte{96, 62, 123}:   "Gafachi, Inc.",
-       [3]byte{96, 62, 202}:   "Cambridge Medical Robotics Ltd",
-       [3]byte{96, 63, 197}:   "COX CO., LTD",
-       [3]byte{96, 66, 127}:   "SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD",
-       [3]byte{96, 68, 245}:   "Easy Digital Ltd.",
-       [3]byte{96, 69, 94}:    "Liptel s.r.o.",
-       [3]byte{96, 69, 189}:   "Microsoft",
-       [3]byte{96, 69, 203}:   "ASUSTek COMPUTER INC.",
-       [3]byte{96, 70, 22}:    "XIAMEN VANN INTELLIGENT CO., LTD",
-       [3]byte{96, 71, 98}:    "Beijing Sensoro Technology Co.,Ltd.",
-       [3]byte{96, 71, 212}:   "FORICS Electronic Technology Co., Ltd.",
-       [3]byte{96, 72, 38}:    "Newbridge Technologies Int. Ltd.",
-       [3]byte{96, 73, 193}:   "Avaya Inc",
-       [3]byte{96, 74, 28}:    "SUYIN Corporation",
-       [3]byte{96, 75, 170}:   "Private",
-       [3]byte{96, 80, 193}:   "Kinetek Sports",
-       [3]byte{96, 81, 44}:    "TCT mobile ltd",
-       [3]byte{96, 82, 208}:   "FACTS Engineering",
-       [3]byte{96, 83, 23}:    "Sandstone Technologies",
-       [3]byte{96, 84, 100}:   "Eyedro Green Solutions Inc.",
-       [3]byte{96, 87, 24}:    "Intel Corporate",
-       [3]byte{96, 91, 180}:   "AzureWave Technology Inc.",
-       [3]byte{96, 96, 31}:    "SZ DJI TECHNOLOGY CO.,LTD",
-       [3]byte{96, 99, 249}:   "Ciholas, Inc.",
-       [3]byte{96, 99, 253}:   "Transcend Communication Beijing Co.,Ltd.",
-       [3]byte{96, 100, 5}:    "Texas Instruments",
-       [3]byte{96, 100, 83}:   "AOD Co.,Ltd.",
-       [3]byte{96, 100, 161}:  "RADiflow Ltd.",
-       [3]byte{96, 103, 32}:   "Intel Corporate",
-       [3]byte{96, 105, 68}:   "Apple, Inc.",
-       [3]byte{96, 105, 155}:  "isepos GmbH",
-       [3]byte{96, 107, 189}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{96, 108, 102}:  "Intel Corporate",
-       [3]byte{96, 109, 60}:   "Luxshare Precision Industry Company Limited",
-       [3]byte{96, 109, 199}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{96, 114, 11}:   "BLU Products Inc",
-       [3]byte{96, 115, 92}:   "Cisco Systems, Inc",
-       [3]byte{96, 115, 188}:  "zte corporation",
-       [3]byte{96, 116, 141}:  "Atmaca Elektronik",
-       [3]byte{96, 118, 136}:  "Velodyne",
-       [3]byte{96, 119, 226}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{96, 126, 221}:  "Microsoft Mobile Oy",
-       [3]byte{96, 129, 43}:   "Custom Control Concepts",
-       [3]byte{96, 129, 249}:  "Helium Systems, Inc",
-       [3]byte{96, 131, 52}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{96, 131, 178}:  "GkWare e.K.",
-       [3]byte{96, 132, 59}:   "Soladigm, Inc.",
-       [3]byte{96, 134, 69}:   "Avery Weigh-Tronix, LLC",
-       [3]byte{96, 137, 60}:   "Thermo Fisher Scientific P.O.A.",
-       [3]byte{96, 137, 177}:  "Key Digital Systems",
-       [3]byte{96, 137, 183}:  "KAEL MÜHENDİSLİK ELEKTRONİK TİCARET SANAYİ LİMİTED ŞİRKETİ",
-       [3]byte{96, 140, 43}:   "Hanson Technology",
-       [3]byte{96, 140, 230}:  "ARRIS Group, Inc.",
-       [3]byte{96, 141, 23}:   "Sentrus Government Systems Division, Inc",
-       [3]byte{96, 142, 8}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{96, 143, 92}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{96, 144, 132}:  "DSSD Inc",
-       [3]byte{96, 145, 243}:  "vivo Mobile Communication Co., Ltd.",
-       [3]byte{96, 146, 23}:   "Apple, Inc.",
-       [3]byte{96, 150, 32}:   "Private",
-       [3]byte{96, 153, 209}:  "Vuzix / Lenovo",
-       [3]byte{96, 154, 164}:  "GVI SECURITY INC.",
-       [3]byte{96, 154, 193}:  "Apple, Inc.",
-       [3]byte{96, 155, 200}:  "Hipad Intelligent Technology Co., Ltd.",
-       [3]byte{96, 156, 159}:  "Brocade Communications Systems, Inc.",
-       [3]byte{96, 158, 100}:  "Vivonic GmbH",
-       [3]byte{96, 159, 157}:  "CloudSwitch",
-       [3]byte{96, 161, 10}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{96, 163, 125}:  "Apple, Inc.",
-       [3]byte{96, 164, 76}:   "ASUSTek COMPUTER INC.",
-       [3]byte{96, 164, 208}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{96, 168, 254}:  "Nokia",
-       [3]byte{96, 169, 176}:  "Merchandising Technologies, Inc",
-       [3]byte{96, 172, 200}:  "KunTeng Inc.",
-       [3]byte{96, 175, 109}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{96, 177, 133}:  "ATH system",
-       [3]byte{96, 179, 135}:  "Synergics Technologies GmbH",
-       [3]byte{96, 179, 196}:  "Elber Srl",
-       [3]byte{96, 180, 247}:  "Plume Design Inc",
-       [3]byte{96, 182, 6}:    "Phorus",
-       [3]byte{96, 182, 23}:   "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{96, 185, 51}:   "Deutron Electronics Corp.",
-       [3]byte{96, 185, 130}:  "RO.VE.R. Laboratories S.p.A.",
-       [3]byte{96, 186, 24}:   "nextLAP GmbH",
-       [3]byte{96, 187, 12}:   "Beijing HuaqinWorld Technology Co,Ltd",
-       [3]byte{96, 188, 76}:   "EWM Hightec Welding GmbH",
-       [3]byte{96, 189, 145}:  "Move Innovation",
-       [3]byte{96, 190, 181}:  "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{96, 192, 191}:  "ON Semiconductor",
-       [3]byte{96, 193, 203}:  "Fujian Great Power PLC Equipment Co.,Ltd",
-       [3]byte{96, 195, 151}:  "2Wire Inc",
-       [3]byte{96, 197, 71}:   "Apple, Inc.",
-       [3]byte{96, 197, 168}:  "Beijing LT Honway Technology Co.,Ltd",
-       [3]byte{96, 197, 173}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{96, 198, 88}:   "PHYTRONIX Co.,Ltd.",
-       [3]byte{96, 199, 152}:  "Verifone",
-       [3]byte{96, 201, 128}:  "Trymus",
-       [3]byte{96, 203, 251}:  "AirScape Inc.",
-       [3]byte{96, 205, 169}:  "Abloomy",
-       [3]byte{96, 205, 197}:  "Taiwan Carol Electronics., Ltd",
-       [3]byte{96, 208, 169}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{96, 209, 170}:  "Vishal Telecommunications Pvt Ltd",
-       [3]byte{96, 210, 98}:   "Tzukuri Pty Ltd",
-       [3]byte{96, 210, 185}:  "REALAND BIO CO., LTD.",
-       [3]byte{96, 211, 10}:   "Quatius Limited",
-       [3]byte{96, 215, 227}:  "IEEE Registration Authority",
-       [3]byte{96, 216, 25}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{96, 217, 160}:  "Lenovo Mobile Communication Technology Ltd.",
-       [3]byte{96, 217, 199}:  "Apple, Inc.",
-       [3]byte{96, 218, 35}:   "Estech Co.,Ltd",
-       [3]byte{96, 218, 131}:  "Hangzhou H3C Technologies Co., Limited",
-       [3]byte{96, 219, 42}:   "HNS",
-       [3]byte{96, 222, 68}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{96, 224, 14}:   "SHINSEI ELECTRONICS CO LTD",
-       [3]byte{96, 227, 39}:   "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{96, 227, 172}:  "LG Electronics (Mobile Communications)",
-       [3]byte{96, 230, 188}:  "Sino-Telecom Technology Co.,Ltd.",
-       [3]byte{96, 231, 1}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{96, 231, 138}:  "UNISEM",
-       [3]byte{96, 233, 86}:   "Ayla Networks, Inc",
-       [3]byte{96, 235, 105}:  "QUANTA COMPUTER INC.",
-       [3]byte{96, 238, 92}:   "SHENZHEN FAST TECHNOLOGIES CO.,LTD",
-       [3]byte{96, 239, 198}:  "Shenzhen Chima Technologies Co Limited",
-       [3]byte{96, 241, 61}:   "JABLOCOM s.r.o.",
-       [3]byte{96, 241, 137}:  "Murata Manufacturing Co., Ltd.",
-       [3]byte{96, 242, 129}:  "TRANWO TECHNOLOGY CO., LTD.",
-       [3]byte{96, 242, 239}:  "VisionVera International Co., Ltd.",
-       [3]byte{96, 243, 218}:  "Logic Way GmbH",
-       [3]byte{96, 244, 69}:   "Apple, Inc.",
-       [3]byte{96, 244, 148}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{96, 245, 156}:  "CRU-Dataport",
-       [3]byte{96, 246, 115}:  "TERUMO CORPORATION",
-       [3]byte{96, 246, 119}:  "Intel Corporate",
-       [3]byte{96, 248, 29}:   "Apple, Inc.",
-       [3]byte{96, 250, 205}:  "Apple, Inc.",
-       [3]byte{96, 251, 66}:   "Apple, Inc.",
-       [3]byte{96, 253, 86}:   "WOORISYSTEMS CO., Ltd",
-       [3]byte{96, 254, 30}:   "China Palms Telecom.Ltd",
-       [3]byte{96, 254, 32}:   "2Wire Inc",
-       [3]byte{96, 254, 197}:  "Apple, Inc.",
-       [3]byte{96, 254, 249}:  "Thomas & Betts",
-       [3]byte{96, 255, 221}:  "C.E. ELECTRONICS, INC",
-       [3]byte{100, 0, 45}:    "Powerlinq Co., LTD",
-       [3]byte{100, 0, 106}:   "Dell Inc.",
-       [3]byte{100, 0, 241}:   "Cisco Systems, Inc",
-       [3]byte{100, 5, 190}:   "NEW LIGHT LED",
-       [3]byte{100, 5, 233}:   "Shenzhen WayOS Technology Crop., Ltd.",
-       [3]byte{100, 9, 76}:    "Beijing Superbee Wireless Technology Co.,Ltd",
-       [3]byte{100, 9, 128}:   "Xiaomi Communications Co Ltd",
-       [3]byte{100, 11, 74}:   "Digital Telecom Technology Limited",
-       [3]byte{100, 13, 206}:  "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.",
-       [3]byte{100, 13, 230}:  "Petra Systems",
-       [3]byte{100, 14, 54}:   "TAZTAG",
-       [3]byte{100, 14, 148}:  "Pluribus Networks, Inc.",
-       [3]byte{100, 15, 40}:   "2Wire Inc",
-       [3]byte{100, 16, 132}:  "HEXIUM Technical Development Co., Ltd.",
-       [3]byte{100, 18, 37}:   "Cisco Systems, Inc",
-       [3]byte{100, 18, 105}:  "ARRIS Group, Inc.",
-       [3]byte{100, 19, 108}:  "zte corporation",
-       [3]byte{100, 22, 102}:  "Nest Labs Inc.",
-       [3]byte{100, 22, 127}:  "Polycom",
-       [3]byte{100, 22, 141}:  "Cisco Systems, Inc",
-       [3]byte{100, 22, 240}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{100, 26, 34}:   "Heliospectra AB",
-       [3]byte{100, 28, 103}:  "DIGIBRAS INDUSTRIA DO BRASILS/A",
-       [3]byte{100, 30, 129}:  "Dowslake Microsystems",
-       [3]byte{100, 32, 12}:   "Apple, Inc.",
-       [3]byte{100, 32, 159}:  "Tilgin AB",
-       [3]byte{100, 33, 132}:  "Nippon Denki Kagaku Co.,LTD",
-       [3]byte{100, 34, 22}:   "Shandong Taixin Electronic co.,Ltd",
-       [3]byte{100, 36, 0}:    "Xorcom Ltd.",
-       [3]byte{100, 39, 55}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{100, 43, 138}:  "ALL BEST Industrial Co., Ltd.",
-       [3]byte{100, 45, 183}:  "SEUNGIL ELECTRONICS",
-       [3]byte{100, 49, 80}:   "Hewlett Packard",
-       [3]byte{100, 49, 126}:  "Dexin Corporation",
-       [3]byte{100, 50, 168}:  "Intel Corporate",
-       [3]byte{100, 52, 9}:    "BITwave Pte Ltd",
-       [3]byte{100, 53, 28}:   "e-CON SYSTEMS INDIA PVT LTD",
-       [3]byte{100, 58, 177}:  "SICHUAN TIANYI COMHEART TELECOMCO.,LTD",
-       [3]byte{100, 62, 140}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{100, 63, 95}:   "Exablaze",
-       [3]byte{100, 66, 20}:   "Swisscom Energy Solutions AG",
-       [3]byte{100, 67, 70}:   "GuangDong Quick Network Computer CO.,LTD",
-       [3]byte{100, 71, 224}:  "Feitian Technologies Co., Ltd",
-       [3]byte{100, 75, 195}:  "Shanghai WOASiS Telecommunications Ltd., Co.",
-       [3]byte{100, 75, 240}:  "CalDigit, Inc",
-       [3]byte{100, 77, 112}:  "dSPACE GmbH",
-       [3]byte{100, 79, 116}:  "LENUS Co., Ltd.",
-       [3]byte{100, 79, 176}:  "Hyunjin.com",
-       [3]byte{100, 81, 6}:    "Hewlett Packard",
-       [3]byte{100, 81, 126}:  "LONG BEN (DONGGUAN) ELECTRONIC TECHNOLOGY CO.,LTD.",
-       [3]byte{100, 82, 153}:  "The Chamberlain Group, Inc",
-       [3]byte{100, 83, 93}:   "Frauscher Sensortechnik",
-       [3]byte{100, 84, 34}:   "Equinox Payments",
-       [3]byte{100, 85, 99}:   "Intelight Inc.",
-       [3]byte{100, 85, 127}:  "NSFOCUS Information Technology Co., Ltd.",
-       [3]byte{100, 85, 177}:  "ARRIS Group, Inc.",
-       [3]byte{100, 86, 1}:    "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{100, 89, 248}:  "Vodafone Omnitel B.V.",
-       [3]byte{100, 90, 4}:    "Chicony Electronics Co., Ltd.",
-       [3]byte{100, 93, 146}:  "SICHUAN TIANYI COMHEART TELECOMCO.,LTD",
-       [3]byte{100, 93, 215}:  "Shenzhen Lifesense Medical Electronics Co., Ltd.",
-       [3]byte{100, 94, 190}:  "Yahoo! JAPAN",
-       [3]byte{100, 95, 255}:  "Nicolet Neuro",
-       [3]byte{100, 97, 132}:  "VELUX",
-       [3]byte{100, 98, 35}:   "Cellient Co., Ltd.",
-       [3]byte{100, 100, 155}: "Juniper Networks",
-       [3]byte{100, 101, 192}: "Nuvon, Inc",
-       [3]byte{100, 102, 179}: "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{100, 103, 7}:   "Beijing Omnific Technology, Ltd.",
-       [3]byte{100, 104, 12}:  "Comtrend Corporation",
-       [3]byte{100, 105, 188}: "Hytera Communications Co .,ltd",
-       [3]byte{100, 106, 82}:  "Avaya Inc",
-       [3]byte{100, 106, 116}: "AUTH-SERVERS, LLC",
-       [3]byte{100, 108, 178}: "Samsung Electronics Co.,Ltd",
-       [3]byte{100, 110, 105}: "Liteon Technology Corporation",
-       [3]byte{100, 110, 108}: "Radio Datacom LLC",
-       [3]byte{100, 110, 234}: "Iskratel d.o.o.",
-       [3]byte{100, 112, 2}:   "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{100, 114, 216}: "GooWi Technology Co.,Limited",
-       [3]byte{100, 115, 226}: "Arbiter Systems, Inc.",
-       [3]byte{100, 116, 246}: "Shooter Detection Systems",
-       [3]byte{100, 118, 87}:  "Innovative Security Designs",
-       [3]byte{100, 118, 186}: "Apple, Inc.",
-       [3]byte{100, 119, 125}: "Hitron Technologies. Inc",
-       [3]byte{100, 119, 145}: "Samsung Electronics Co.,Ltd",
-       [3]byte{100, 121, 167}: "Phison Electronics Corp.",
-       [3]byte{100, 123, 212}: "Texas Instruments",
-       [3]byte{100, 124, 52}:  "Ubee Interactive Co., Limited",
-       [3]byte{100, 125, 129}: "YOKOTA INDUSTRIAL CO,.LTD",
-       [3]byte{100, 127, 218}: "TEKTELIC Communications Inc.",
-       [3]byte{100, 128, 139}: "VG Controls, Inc.",
-       [3]byte{100, 128, 153}: "Intel Corporate",
-       [3]byte{100, 129, 37}:  "Alphatron Marine BV",
-       [3]byte{100, 135, 136}: "Juniper Networks",
-       [3]byte{100, 135, 215}: "ADB Broadband Italia",
-       [3]byte{100, 136, 255}: "Sichuan Changhong Electric Ltd.",
-       [3]byte{100, 137, 154}: "LG Electronics (Mobile Communications)",
-       [3]byte{100, 141, 158}: "IVT Electronic Co.,Ltd",
-       [3]byte{100, 153, 93}:  "LGE",
-       [3]byte{100, 153, 104}: "Elentec",
-       [3]byte{100, 153, 160}: "AG Elektronik AB",
-       [3]byte{100, 154, 8}:   "Shenzhen SuperElectron Technology Co.,LTD",
-       [3]byte{100, 154, 18}:  "P2 Mobile Technologies Limited",
-       [3]byte{100, 154, 190}: "Apple, Inc.",
-       [3]byte{100, 155, 36}:  "V Technology Co., Ltd.",
-       [3]byte{100, 156, 129}: "Qualcomm Inc.",
-       [3]byte{100, 156, 142}: "Texas Instruments",
-       [3]byte{100, 158, 243}: "Cisco Systems, Inc",
-       [3]byte{100, 159, 247}: "Kone OYj",
-       [3]byte{100, 160, 231}: "Cisco Systems, Inc",
-       [3]byte{100, 162, 50}:  "OOO Samlight",
-       [3]byte{100, 163, 65}:  "Wonderlan (Beijing) Technology Co., Ltd.",
-       [3]byte{100, 163, 203}: "Apple, Inc.",
-       [3]byte{100, 165, 195}: "Apple, Inc.",
-       [3]byte{100, 166, 81}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{100, 166, 143}: "Zhongshan Readboy Electronics Co.,Ltd",
-       [3]byte{100, 167, 105}: "HTC Corporation",
-       [3]byte{100, 167, 221}: "Avaya Inc",
-       [3]byte{100, 168, 55}:  "Juni Korea Co., Ltd",
-       [3]byte{100, 174, 12}:  "Cisco Systems, Inc",
-       [3]byte{100, 174, 136}: "Polytec GmbH",
-       [3]byte{100, 176, 166}: "Apple, Inc.",
-       [3]byte{100, 178, 29}:  "Chengdu Phycom Tech Co., Ltd.",
-       [3]byte{100, 179, 16}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{100, 179, 112}: "PowerComm Solutions LLC",
-       [3]byte{100, 180, 115}: "Xiaomi Communications Co Ltd",
-       [3]byte{100, 181, 198}: "Nintendo Co.,Ltd",
-       [3]byte{100, 182, 74}:  "ViVOtech, Inc.",
-       [3]byte{100, 184, 83}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{100, 185, 232}: "Apple, Inc.",
-       [3]byte{100, 186, 189}: "SDJ Technologies, Inc.",
-       [3]byte{100, 188, 12}:  "LG Electronics (Mobile Communications)",
-       [3]byte{100, 188, 17}:  "CombiQ AB",
-       [3]byte{100, 195, 84}:  "Avaya Inc",
-       [3]byte{100, 197, 170}: "South African Broadcasting Corporation",
-       [3]byte{100, 198, 103}: "Barnes&Noble",
-       [3]byte{100, 198, 175}: "AXERRA Networks Ltd",
-       [3]byte{100, 201, 68}:  "LARK Technologies, Inc",
-       [3]byte{100, 203, 163}: "Pointmobile",
-       [3]byte{100, 204, 46}:  "Xiaomi Communications Co Ltd",
-       [3]byte{100, 207, 217}: "Texas Instruments",
-       [3]byte{100, 208, 45}:  "Next Generation Integration (NGI)",
-       [3]byte{100, 209, 84}:  "Routerboard.com",
-       [3]byte{100, 209, 163}: "Sitecom Europe BV",
-       [3]byte{100, 210, 65}:  "Keith & Koep GmbH",
-       [3]byte{100, 212, 189}: "ALPS ELECTRIC CO.,LTD.",
-       [3]byte{100, 212, 218}: "Intel Corporate",
-       [3]byte{100, 216, 20}:  "Cisco Systems, Inc",
-       [3]byte{100, 217, 18}:  "Solidica, Inc.",
-       [3]byte{100, 217, 84}:  "Taicang T&W Electronics",
-       [3]byte{100, 217, 137}: "Cisco Systems, Inc",
-       [3]byte{100, 218, 160}: "Robert Bosch Smart Home GmbH",
-       [3]byte{100, 219, 24}:  "OpenPattern",
-       [3]byte{100, 219, 67}:  "Motorola (Wuhan) Mobility Technologies Communication Co., Ltd.",
-       [3]byte{100, 219, 129}: "Syszone Co., Ltd.",
-       [3]byte{100, 219, 160}: "Select Comfort",
-       [3]byte{100, 220, 1}:   "Static Systems Group PLC",
-       [3]byte{100, 222, 28}:  "Kingnetic Pte Ltd",
-       [3]byte{100, 223, 233}: "ATEME",
-       [3]byte{100, 225, 97}:  "DEP Corp.",
-       [3]byte{100, 229, 153}: "EFM Networks",
-       [3]byte{100, 230, 37}:  "Woxu Wireless Co., Ltd",
-       [3]byte{100, 230, 130}: "Apple, Inc.",
-       [3]byte{100, 232, 79}:  "Serialway Communication Technology Co. Ltd",
-       [3]byte{100, 232, 146}: "Morio Denki Co., Ltd.",
-       [3]byte{100, 232, 230}: "global moisture management system",
-       [3]byte{100, 233, 80}:  "Cisco Systems, Inc",
-       [3]byte{100, 234, 197}: "SiboTech Automation Co., Ltd.",
-       [3]byte{100, 235, 140}: "Seiko Epson Corporation",
-       [3]byte{100, 237, 87}:  "ARRIS Group, Inc.",
-       [3]byte{100, 237, 98}:  "WOORI SYSTEMS Co., Ltd",
-       [3]byte{100, 242, 66}:  "Gerdes Aktiengesellschaft",
-       [3]byte{100, 245, 14}:  "Kinion Technology Company Limited",
-       [3]byte{100, 246, 157}: "Cisco Systems, Inc",
-       [3]byte{100, 248, 138}: "China Mobile IOT Company Limited",
-       [3]byte{100, 249, 112}: "Kenade Electronics Technology Co.,LTD.",
-       [3]byte{100, 249, 135}: "Avvasi Inc.",
-       [3]byte{100, 251, 80}:  "RoomReady/Zdi, Inc.",
-       [3]byte{100, 251, 129}: "IEEE Registration Authority",
-       [3]byte{100, 252, 140}: "Zonar Systems",
-       [3]byte{104, 2, 53}:    "Konten Networks Inc.",
-       [3]byte{104, 5, 113}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{104, 5, 202}:   "Intel Corporate",
-       [3]byte{104, 7, 21}:    "Intel Corporate",
-       [3]byte{104, 9, 39}:    "Apple, Inc.",
-       [3]byte{104, 10, 215}:  "Yancheng Kecheng Optoelectronic Technology Co., Ltd",
-       [3]byte{104, 18, 45}:   "Special Instrument Development Co., Ltd.",
-       [3]byte{104, 18, 149}:  "Lupine Lighting Systems GmbH",
-       [3]byte{104, 20, 1}:    "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{104, 21, 144}:  "Sagemcom Broadband SAS",
-       [3]byte{104, 21, 211}:  "Zaklady Elektroniki i Mechaniki Precyzyjnej R&G S.A.",
-       [3]byte{104, 22, 5}:    "Systems And Electronic Development FZCO",
-       [3]byte{104, 23, 41}:   "Intel Corporate",
-       [3]byte{104, 25, 63}:   "Digital Airways",
-       [3]byte{104, 26, 178}:  "zte corporation",
-       [3]byte{104, 28, 162}:  "Rosewill Inc.",
-       [3]byte{104, 29, 100}:  "Sunwave Communications Co., Ltd",
-       [3]byte{104, 29, 239}:  "Shenzhen CYX Technology Co., Ltd.",
-       [3]byte{104, 30, 139}:  "InfoSight Corporation",
-       [3]byte{104, 31, 64}:   "Blu Wireless Technology Ltd",
-       [3]byte{104, 31, 216}:  "Siemens Industry, Inc.",
-       [3]byte{104, 35, 75}:   "Nihon Dengyo Kousaku",
-       [3]byte{104, 38, 42}:   "SICHUAN TIANYI COMHEART TELECOMCO., LTD",
-       [3]byte{104, 39, 55}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{104, 40, 186}:  "Dejai",
-       [3]byte{104, 40, 246}:  "Vubiq Networks, Inc.",
-       [3]byte{104, 45, 220}:  "Wuhan Changjiang Electro-Communication Equipment CO.,LTD",
-       [3]byte{104, 49, 254}:  "Teladin Co.,Ltd.",
-       [3]byte{104, 53, 99}:   "SHENZHEN LIOWN ELECTRONICS CO.,LTD.",
-       [3]byte{104, 54, 181}:  "DriveScale, Inc.",
-       [3]byte{104, 55, 233}:  "Amazon Technologies Inc.",
-       [3]byte{104, 59, 30}:   "Countwise LTD",
-       [3]byte{104, 60, 125}:  "Magic Intelligence Technology Limited",
-       [3]byte{104, 62, 2}:    "SIEMENS AG, Digital Factory, Motion Control System",
-       [3]byte{104, 62, 52}:   "MEIZU Technology Co., Ltd.",
-       [3]byte{104, 62, 236}:  "ERECA",
-       [3]byte{104, 67, 82}:   "Bhuu Limited",
-       [3]byte{104, 72, 152}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{104, 75, 136}:  "Galtronics Telemetry Inc.",
-       [3]byte{104, 76, 168}:  "Shenzhen Herotel Tech. Co., Ltd.",
-       [3]byte{104, 81, 183}:  "PowerCloud Systems, Inc.",
-       [3]byte{104, 83, 108}:  "SPnS Co.,Ltd",
-       [3]byte{104, 83, 136}:  "P&S Technology",
-       [3]byte{104, 84, 193}:  "ColorTokens, Inc.",
-       [3]byte{104, 84, 237}:  "Alcatel-Lucent",
-       [3]byte{104, 84, 245}:  "enLighted Inc",
-       [3]byte{104, 84, 253}:  "Amazon Technologies Inc.",
-       [3]byte{104, 88, 197}:  "ZF TRW Automotive",
-       [3]byte{104, 89, 127}:  "Alcatel Lucent",
-       [3]byte{104, 91, 53}:   "Apple, Inc.",
-       [3]byte{104, 91, 54}:   "POWERTECH INDUSTRIAL CO., LTD.",
-       [3]byte{104, 93, 67}:   "Intel Corporate",
-       [3]byte{104, 94, 107}:  "PowerRay Co., Ltd.",
-       [3]byte{104, 99, 89}:   "Advanced Digital Broadcast SA",
-       [3]byte{104, 100, 75}:  "Apple, Inc.",
-       [3]byte{104, 105, 46}:  "Zycoo Co.,Ltd",
-       [3]byte{104, 105, 117}: "Angler Labs Inc",
-       [3]byte{104, 105, 242}: "ComAp s.r.o.",
-       [3]byte{104, 110, 35}:  "Wi3 Inc.",
-       [3]byte{104, 110, 72}:  "Prophet Electronic Technology Corp.,Ltd",
-       [3]byte{104, 114, 81}:  "Ubiquiti Networks Inc.",
-       [3]byte{104, 114, 220}: "CETORY.TV Company Limited",
-       [3]byte{104, 118, 79}:  "Sony Mobile Communications AB",
-       [3]byte{104, 120, 72}:  "Westunitis Co., Ltd.",
-       [3]byte{104, 120, 76}:  "Nortel Networks",
-       [3]byte{104, 121, 36}:  "ELS-GmbH & Co. KG",
-       [3]byte{104, 121, 237}: "SHARP Corporation",
-       [3]byte{104, 124, 200}: "Measurement Systems S. de R.L.",
-       [3]byte{104, 124, 213}: "Y Soft Corporation, a.s.",
-       [3]byte{104, 127, 116}: "Cisco-Linksys, LLC",
-       [3]byte{104, 131, 26}:  "Pandora Mobility Corporation",
-       [3]byte{104, 132, 112}: "eSSys Co.,Ltd",
-       [3]byte{104, 133, 64}:  "IGI Mobile, Inc.",
-       [3]byte{104, 133, 106}: "OuterLink Corporation",
-       [3]byte{104, 134, 167}: "Cisco Systems, Inc",
-       [3]byte{104, 134, 231}: "Orbotix, Inc.",
-       [3]byte{104, 135, 107}: "INQ Mobile Limited",
-       [3]byte{104, 137, 193}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{104, 138, 181}: "EDP Servicos",
-       [3]byte{104, 138, 240}: "zte corporation",
-       [3]byte{104, 141, 182}: "AETEK INC.",
-       [3]byte{104, 143, 132}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{104, 145, 208}: "IEEE Registration Authority",
-       [3]byte{104, 146, 52}:  "Ruckus Wireless",
-       [3]byte{104, 147, 97}:  "Integrated Device Technology (Malaysia) Sdn. Bhd.",
-       [3]byte{104, 148, 35}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{104, 150, 123}: "Apple, Inc.",
-       [3]byte{104, 151, 75}:  "Shenzhen Costar Electronics Co. Ltd.",
-       [3]byte{104, 151, 232}: "Society of Motion Picture &amp; Television Engineers",
-       [3]byte{104, 153, 205}: "Cisco Systems, Inc",
-       [3]byte{104, 154, 183}: "Atelier Vision Corporation",
-       [3]byte{104, 156, 94}:  "AcSiP Technology Corp.",
-       [3]byte{104, 156, 112}: "Apple, Inc.",
-       [3]byte{104, 156, 226}: "Cisco Systems, Inc",
-       [3]byte{104, 158, 25}:  "Texas Instruments",
-       [3]byte{104, 159, 240}: "zte corporation",
-       [3]byte{104, 160, 246}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{104, 161, 183}: "Honghao Mingchuan Technology (Beijing) CO.,Ltd.",
-       [3]byte{104, 163, 120}: "FREEBOX SAS",
-       [3]byte{104, 163, 196}: "Liteon Technology Corporation",
-       [3]byte{104, 164, 14}:  "BSH Hausgeräte GmbH",
-       [3]byte{104, 166, 130}: "Shenzhen YOUHUA Technology Co., Ltd",
-       [3]byte{104, 168, 40}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{104, 168, 109}: "Apple, Inc.",
-       [3]byte{104, 170, 210}: "DATECS LTD.,",
-       [3]byte{104, 171, 138}: "RF IDeas",
-       [3]byte{104, 174, 32}:  "Apple, Inc.",
-       [3]byte{104, 175, 19}:  "Futura Mobility",
-       [3]byte{104, 176, 148}: "INESA ELECTRON CO.,LTD",
-       [3]byte{104, 179, 94}:  "Shenzhen Neostra Technology Co.Ltd",
-       [3]byte{104, 180, 58}:  "WaterFurnace International, Inc.",
-       [3]byte{104, 181, 153}: "Hewlett Packard",
-       [3]byte{104, 182, 252}: "Hitron Technologies. Inc",
-       [3]byte{104, 184, 217}: "Act KDE, Inc.",
-       [3]byte{104, 185, 131}: "b-plus GmbH",
-       [3]byte{104, 188, 12}:  "Cisco Systems, Inc",
-       [3]byte{104, 189, 171}: "Cisco Systems, Inc",
-       [3]byte{104, 196, 77}:  "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{104, 198, 58}:  "Espressif Inc.",
-       [3]byte{104, 201, 11}:  "Texas Instruments",
-       [3]byte{104, 202, 0}:   "Octopus Systems Limited",
-       [3]byte{104, 204, 110}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{104, 204, 156}: "Mine Site Technologies",
-       [3]byte{104, 205, 15}:  "U Tek Company Limited",
-       [3]byte{104, 206, 78}:  "L-3 Communications Infrared Products",
-       [3]byte{104, 209, 253}: "Shenzhen Trimax Technology Co.,Ltd",
-       [3]byte{104, 210, 71}:  "Portalis LC",
-       [3]byte{104, 217, 37}:  "ProSys Development Services",
-       [3]byte{104, 217, 60}:  "Apple, Inc.",
-       [3]byte{104, 219, 84}:  "Phicomm (Shanghai) Co., Ltd.",
-       [3]byte{104, 219, 103}: "Nantong Coship Electronics Co., Ltd",
-       [3]byte{104, 219, 150}: "OPWILL Technologies CO .,LTD",
-       [3]byte{104, 219, 202}: "Apple, Inc.",
-       [3]byte{104, 220, 232}: "PacketStorm Communications",
-       [3]byte{104, 223, 221}: "Xiaomi Communications Co Ltd",
-       [3]byte{104, 225, 102}: "Private",
-       [3]byte{104, 228, 31}:  "Unglaube Identech GmbH",
-       [3]byte{104, 232, 235}: "Linktel Technologies Co.,Ltd",
-       [3]byte{104, 235, 174}: "Samsung Electronics Co.,Ltd",
-       [3]byte{104, 235, 197}: "Angstrem Telecom",
-       [3]byte{104, 236, 98}:  "YODO Technology Corp. Ltd.",
-       [3]byte{104, 236, 197}: "Intel Corporate",
-       [3]byte{104, 237, 67}:  "BlackBerry RTS",
-       [3]byte{104, 237, 164}: "Shenzhen Seavo Technology Co.,Ltd",
-       [3]byte{104, 238, 150}: "Cisco SPVTG",
-       [3]byte{104, 239, 189}: "Cisco Systems, Inc",
-       [3]byte{104, 240, 109}: "ALONG INDUSTRIAL CO., LIMITED",
-       [3]byte{104, 240, 188}: "Shenzhen LiWiFi Technology Co., Ltd",
-       [3]byte{104, 241, 37}:  "Data Controls Inc.",
-       [3]byte{104, 247, 40}:  "LCFC(HeFei) Electronics Technology co., ltd",
-       [3]byte{104, 248, 149}: "Redflow Limited",
-       [3]byte{104, 249, 86}:  "Objetivos y Servicio de Valor Añadido",
-       [3]byte{104, 251, 126}: "Apple, Inc.",
-       [3]byte{104, 251, 149}: "Generalplus Technology Inc.",
-       [3]byte{104, 252, 179}: "Next Level Security Systems, Inc.",
-       [3]byte{108, 2, 115}:   "Shenzhen Jin Yun Video Equipment Co., Ltd.",
-       [3]byte{108, 4, 96}:    "RBH Access Technologies Inc.",
-       [3]byte{108, 5, 213}:   "Ethertronics Inc",
-       [3]byte{108, 9, 10}:    "GEMATICA SRL",
-       [3]byte{108, 9, 214}:   "Digiquest Electronics LTD",
-       [3]byte{108, 11, 132}:  "Universal Global Scientific Industrial Co., Ltd.",
-       [3]byte{108, 14, 13}:   "Sony Mobile Communications AB",
-       [3]byte{108, 14, 230}:  "Chengdu Xiyida Electronic Technology Co,.Ltd",
-       [3]byte{108, 15, 106}:  "JDC Tech Co., Ltd.",
-       [3]byte{108, 20, 247}:  "Erhardt+Leimer GmbH",
-       [3]byte{108, 21, 249}:  "Nautronix Limited",
-       [3]byte{108, 22, 14}:   "ShotTracker",
-       [3]byte{108, 24, 17}:   "Decatur Electronics",
-       [3]byte{108, 25, 143}:  "D-Link International",
-       [3]byte{108, 25, 192}:  "Apple, Inc.",
-       [3]byte{108, 30, 112}:  "Guangzhou YBDS IT Co.,Ltd",
-       [3]byte{108, 30, 144}:  "Hansol Technics Co., Ltd.",
-       [3]byte{108, 32, 86}:   "Cisco Systems, Inc",
-       [3]byte{108, 34, 171}:  "Ainsworth Game Technology",
-       [3]byte{108, 35, 185}:  "Sony Mobile Communications AB",
-       [3]byte{108, 36, 131}:  "Microsoft Mobile Oy",
-       [3]byte{108, 37, 185}:  "BBK EDUCATIONAL ELECTRONICS CORP.,LTD.",
-       [3]byte{108, 39, 121}:  "Microsoft Mobile Oy",
-       [3]byte{108, 41, 149}:  "Intel Corporate",
-       [3]byte{108, 42, 203}:  "Paxton Access Ltd",
-       [3]byte{108, 44, 6}:    "OOO NPP Systemotechnika-NN",
-       [3]byte{108, 46, 51}:   "Accelink Technologies Co.,Ltd.",
-       [3]byte{108, 46, 114}:  "B&B EXPORTING LIMITED",
-       [3]byte{108, 46, 133}:  "Sagemcom Broadband SAS",
-       [3]byte{108, 47, 44}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{108, 50, 222}:  "Indieon Technologies Pvt. Ltd.",
-       [3]byte{108, 51, 169}:  "Magicjack LP",
-       [3]byte{108, 56, 161}:  "Ubee Interactive Co., Limited",
-       [3]byte{108, 57, 29}:   "Beijing ZhongHuaHun Network Information center",
-       [3]byte{108, 58, 132}:  "Shenzhen Aero-Startech. Co.Ltd",
-       [3]byte{108, 59, 107}:  "Routerboard.com",
-       [3]byte{108, 59, 229}:  "Hewlett Packard",
-       [3]byte{108, 60, 83}:   "SoundHawk Corp",
-       [3]byte{108, 62, 109}:  "Apple, Inc.",
-       [3]byte{108, 62, 156}:  "KE Knestel Elektronik GmbH",
-       [3]byte{108, 64, 8}:    "Apple, Inc.",
-       [3]byte{108, 64, 198}:  "Nimbus Data Systems, Inc.",
-       [3]byte{108, 65, 106}:  "Cisco Systems, Inc",
-       [3]byte{108, 68, 24}:   "Zappware",
-       [3]byte{108, 69, 152}:  "Antex Electronic Corp.",
-       [3]byte{108, 73, 193}:  "o2ones Co., Ltd.",
-       [3]byte{108, 74, 57}:   "BITA",
-       [3]byte{108, 75, 127}:  "Vossloh-Schwabe Deutschland GmbH",
-       [3]byte{108, 75, 144}:  "LiteON",
-       [3]byte{108, 78, 134}:  "Third Millennium Systems Ltd.",
-       [3]byte{108, 80, 77}:   "Cisco Systems, Inc",
-       [3]byte{108, 86, 151}:  "Amazon Technologies Inc.",
-       [3]byte{108, 87, 121}:  "Aclima, Inc.",
-       [3]byte{108, 89, 64}:   "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.",
-       [3]byte{108, 89, 118}:  "Shanghai Tricheer Technology Co.,Ltd.",
-       [3]byte{108, 90, 52}:   "Shenzhen Haitianxiong Electronic Co., Ltd.",
-       [3]byte{108, 90, 181}:  "TCL Technoly Electronics (Huizhou) Co., Ltd.",
-       [3]byte{108, 92, 20}:   "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{108, 92, 222}:  "SunReports, Inc.",
-       [3]byte{108, 93, 99}:   "ShenZhen Rapoo Technology Co., Ltd.",
-       [3]byte{108, 94, 122}:  "Ubiquitous Internet Telecom Co., Ltd",
-       [3]byte{108, 95, 28}:   "Lenovo Mobile Communication Technology Ltd.",
-       [3]byte{108, 96, 235}:  "ZHI YUAN ELECTRONICS CO., LIMITED",
-       [3]byte{108, 97, 38}:   "Rinicom Holdings",
-       [3]byte{108, 98, 109}:  "Micro-Star INT'L CO., LTD",
-       [3]byte{108, 100, 26}:  "Penguin Computing",
-       [3]byte{108, 110, 254}: "Core Logic Inc.",
-       [3]byte{108, 111, 24}:  "Stereotaxis, Inc.",
-       [3]byte{108, 112, 57}:  "Novar GmbH",
-       [3]byte{108, 112, 159}: "Apple, Inc.",
-       [3]byte{108, 113, 189}: "EZELINK TELECOM",
-       [3]byte{108, 113, 217}: "AzureWave Technology Inc.",
-       [3]byte{108, 114, 32}:  "D-Link International",
-       [3]byte{108, 114, 231}: "Apple, Inc.",
-       [3]byte{108, 117, 13}:  "WiFiSONG",
-       [3]byte{108, 118, 96}:  "KYOCERA CORPORATION",
-       [3]byte{108, 129, 254}: "Mitsuba Corporation",
-       [3]byte{108, 131, 54}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{108, 131, 102}: "Nanjing SAC Power Grid Automation Co., Ltd.",
-       [3]byte{108, 134, 134}: "Technonia",
-       [3]byte{108, 136, 20}:  "Intel Corporate",
-       [3]byte{108, 139, 47}:  "zte corporation",
-       [3]byte{108, 140, 219}: "Otus Technologies Ltd",
-       [3]byte{108, 141, 101}: "Wireless Glue Networks, Inc.",
-       [3]byte{108, 141, 193}: "Apple, Inc.",
-       [3]byte{108, 143, 181}: "Microsoft Mobile Oy",
-       [3]byte{108, 144, 177}: "SanLogic Inc",
-       [3]byte{108, 146, 191}: "Inspur Electronic Information Industry Co.,Ltd.",
-       [3]byte{108, 147, 84}:  "Yaojin Technology (Shenzhen) Co., LTD.",
-       [3]byte{108, 148, 248}: "Apple, Inc.",
-       [3]byte{108, 149, 34}:  "Scalys",
-       [3]byte{108, 150, 207}: "Apple, Inc.",
-       [3]byte{108, 152, 235}: "Riverbed Technology, Inc.",
-       [3]byte{108, 153, 137}: "Cisco Systems, Inc",
-       [3]byte{108, 154, 201}: "Valentine Research, Inc.",
-       [3]byte{108, 155, 2}:   "Nokia Corporation",
-       [3]byte{108, 156, 233}: "Nimble Storage",
-       [3]byte{108, 156, 237}: "Cisco Systems, Inc",
-       [3]byte{108, 161, 0}:   "Intel Corporate",
-       [3]byte{108, 166, 130}: "EDAM information & communications",
-       [3]byte{108, 167, 95}:  "zte corporation",
-       [3]byte{108, 167, 128}: "Nokia Corporation",
-       [3]byte{108, 167, 250}: "YOUNGBO ENGINEERING INC.",
-       [3]byte{108, 168, 73}:  "Avaya Inc",
-       [3]byte{108, 168, 88}:  "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{108, 169, 6}:   "Telefield Ltd",
-       [3]byte{108, 169, 111}: "TransPacket AS",
-       [3]byte{108, 170, 179}: "Ruckus Wireless",
-       [3]byte{108, 171, 49}:  "Apple, Inc.",
-       [3]byte{108, 171, 77}:  "Digital Payment Technologies",
-       [3]byte{108, 172, 96}:  "Venetex Corp",
-       [3]byte{108, 173, 63}:  "Hubbell Building Automation, Inc.",
-       [3]byte{108, 173, 239}: "KZ Broadband Technologies, Ltd.",
-       [3]byte{108, 173, 248}: "AzureWave Technology Inc.",
-       [3]byte{108, 174, 139}: "IBM Corporation",
-       [3]byte{108, 176, 206}: "NETGEAR",
-       [3]byte{108, 178, 39}:  "Sony Video & Sound Products Inc.",
-       [3]byte{108, 178, 174}: "Cisco Systems, Inc",
-       [3]byte{108, 179, 17}:  "Shenzhen Lianrui Electronics Co.,Ltd",
-       [3]byte{108, 179, 80}:  "Anhui comhigher tech co.,ltd",
-       [3]byte{108, 180, 167}: "Landauer, Inc.",
-       [3]byte{108, 181, 107}: "HUMAX Co., Ltd.",
-       [3]byte{108, 183, 73}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{108, 183, 244}: "Samsung Electronics Co.,Ltd",
-       [3]byte{108, 185, 197}: "Delta Networks, Inc.",
-       [3]byte{108, 190, 233}: "Alcatel-Lucent IPD",
-       [3]byte{108, 191, 181}: "Noon Technology Co., Ltd",
-       [3]byte{108, 193, 71}:  "Xiamen Hanin Electronic Technology Co., Ltd",
-       [3]byte{108, 193, 210}: "ARRIS Group, Inc.",
-       [3]byte{108, 194, 23}:  "Hewlett Packard",
-       [3]byte{108, 194, 107}: "Apple, Inc.",
-       [3]byte{108, 202, 8}:   "ARRIS Group, Inc.",
-       [3]byte{108, 208, 50}:  "LG Electronics",
-       [3]byte{108, 209, 70}:  "Smartek d.o.o.",
-       [3]byte{108, 209, 176}: "WING SING ELECTRONICS HONG KONG LIMITED",
-       [3]byte{108, 214, 138}: "LG Electronics (Mobile Communications)",
-       [3]byte{108, 220, 106}: "Promethean Limited",
-       [3]byte{108, 221, 48}:  "Cisco Systems, Inc",
-       [3]byte{108, 224, 30}:  "Modcam AB",
-       [3]byte{108, 224, 176}: "SOUND4",
-       [3]byte{108, 227, 182}: "Nera Telecommunications Ltd.",
-       [3]byte{108, 228, 206}: "Villiger Security Solutions AG",
-       [3]byte{108, 232, 115}: "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{108, 233, 7}:   "Nokia Corporation",
-       [3]byte{108, 233, 131}: "Gastron Co., LTD.",
-       [3]byte{108, 235, 178}: "Dongguan Sen DongLv Electronics Co.,Ltd",
-       [3]byte{108, 236, 90}:  "Hon Hai Precision Ind. CO.,Ltd.",
-       [3]byte{108, 236, 161}: "SHENZHEN CLOU ELECTRONICS CO. LTD.",
-       [3]byte{108, 236, 235}: "Texas Instruments",
-       [3]byte{108, 239, 198}: "SHENZHEN TWOWING TECHNOLOGIES CO.,LTD.",
-       [3]byte{108, 240, 73}:  "GIGA-BYTE TECHNOLOGY CO.,LTD.",
-       [3]byte{108, 243, 115}: "Samsung Electronics Co.,Ltd",
-       [3]byte{108, 243, 127}: "Aruba Networks",
-       [3]byte{108, 245, 232}: "Mooredoll Inc.",
-       [3]byte{108, 249, 124}: "Nanoptix Inc.",
-       [3]byte{108, 249, 210}: "Chengdu Goods for the Road Electronic Technology C",
-       [3]byte{108, 250, 88}:  "Avaya Inc",
-       [3]byte{108, 250, 137}: "Cisco Systems, Inc",
-       [3]byte{108, 250, 167}: "AMPAK Technology, Inc.",
-       [3]byte{108, 253, 185}: "Proware Technologies Co Ltd.",
-       [3]byte{108, 255, 190}: "MPB Communications Inc.",
-       [3]byte{112, 1, 54}:    "FATEK Automation Corporation",
-       [3]byte{112, 2, 88}:    "01DB-METRAVIB",
-       [3]byte{112, 5, 20}:    "LG Electronics (Mobile Communications)",
-       [3]byte{112, 11, 192}:  "Dewav Technology Company",
-       [3]byte{112, 15, 199}:  "SHENZHEN IKINLOOP TECHNOLOGY CO.,LTD.",
-       [3]byte{112, 15, 236}:  "Poindus Systems Corp.",
-       [3]byte{112, 16, 92}:   "Cisco Systems, Inc",
-       [3]byte{112, 16, 111}:  "Hewlett Packard Enterprise",
-       [3]byte{112, 17, 36}:   "Apple, Inc.",
-       [3]byte{112, 17, 174}:  "Music Life LTD",
-       [3]byte{112, 20, 4}:    "Limited Liability Company",
-       [3]byte{112, 20, 166}:  "Apple, Inc.",
-       [3]byte{112, 24, 139}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{112, 26, 4}:    "Liteon Technology Corporation",
-       [3]byte{112, 26, 237}:  "ADVAS CO., LTD.",
-       [3]byte{112, 28, 231}:  "Intel Corporate",
-       [3]byte{112, 29, 127}:  "Comtech Technology Co., Ltd.",
-       [3]byte{112, 29, 196}:  "NorthStar Battery Company, LLC",
-       [3]byte{112, 31, 83}:   "Cisco Systems, Inc",
-       [3]byte{112, 32, 132}:  "Hon Hai Precision Ind. Co., Ltd.",
-       [3]byte{112, 35, 147}:  "fos4X GmbH",
-       [3]byte{112, 37, 38}:   "Nokia",
-       [3]byte{112, 37, 89}:   "CyberTAN Technology Inc.",
-       [3]byte{112, 38, 5}:    "SONY Visual Products Inc.",
-       [3]byte{112, 40, 139}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{112, 41, 0}:    "Shenzhen ChipTrip Technology Co,Ltd",
-       [3]byte{112, 42, 125}:  "EpSpot AB",
-       [3]byte{112, 43, 29}:   "E-Domus International Limited",
-       [3]byte{112, 44, 31}:   "Wisol",
-       [3]byte{112, 45, 132}:  "i4C Innovations",
-       [3]byte{112, 45, 209}:  "Newings Communication CO., LTD.",
-       [3]byte{112, 46, 34}:   "zte corporation",
-       [3]byte{112, 47, 75}:   "PolyVision Inc.",
-       [3]byte{112, 47, 151}:  "Aava Mobile Oy",
-       [3]byte{112, 48, 24}:   "Avaya Inc",
-       [3]byte{112, 48, 93}:   "Ubiquoss Inc",
-       [3]byte{112, 48, 94}:   "Nanjing Zhongke Menglian Information Technology Co.,LTD",
-       [3]byte{112, 49, 135}:  "ACX GmbH",
-       [3]byte{112, 50, 213}:  "Athena Wireless Communications Inc",
-       [3]byte{112, 56, 17}:   "Invensys Rail",
-       [3]byte{112, 56, 180}:  "Low Tech Solutions",
-       [3]byte{112, 56, 238}:  "Avaya Inc",
-       [3]byte{112, 58, 14}:   "Aruba Networks",
-       [3]byte{112, 58, 203}:  "Google, Inc.",
-       [3]byte{112, 58, 216}:  "Shenzhen Afoundry Electronic Co., Ltd",
-       [3]byte{112, 60, 3}:    "RadiAnt Co.,Ltd",
-       [3]byte{112, 60, 57}:   "SEAWING Kft",
-       [3]byte{112, 61, 21}:   "Hangzhou H3C Technologies Co., Limited",
-       [3]byte{112, 62, 172}:  "Apple, Inc.",
-       [3]byte{112, 65, 183}:  "Edwards Lifesciences LLC",
-       [3]byte{112, 70, 66}:   "CHYNG HONG ELECTRONIC CO., LTD.",
-       [3]byte{112, 71, 233}:  "vivo Mobile Communication Co., Ltd.",
-       [3]byte{112, 72, 15}:   "Apple, Inc.",
-       [3]byte{112, 74, 174}:  "Xstream Flow (Pty) Ltd",
-       [3]byte{112, 74, 228}:  "Rinstrum Pty Ltd",
-       [3]byte{112, 76, 165}:  "Fortinet, Inc.",
-       [3]byte{112, 76, 237}:  "TMRG, Inc.",
-       [3]byte{112, 77, 123}:  "ASUSTek COMPUTER INC.",
-       [3]byte{112, 78, 1}:    "KWANGWON TECH CO., LTD.",
-       [3]byte{112, 78, 102}:  "SHENZHEN FAST TECHNOLOGIES CO.,LTD",
-       [3]byte{112, 79, 87}:   "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{112, 80, 175}:  "BSkyB Ltd",
-       [3]byte{112, 82, 197}:  "Avaya Inc",
-       [3]byte{112, 83, 63}:   "Alfa Instrumentos Eletronicos Ltda.",
-       [3]byte{112, 84, 210}:  "PEGATRON CORPORATION",
-       [3]byte{112, 84, 245}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{112, 86, 129}:  "Apple, Inc.",
-       [3]byte{112, 88, 18}:   "Panasonic Corporation AVC Networks Company",
-       [3]byte{112, 88, 150}:  "InShow Technology",
-       [3]byte{112, 89, 87}:   "Medallion Instrumentation Systems",
-       [3]byte{112, 89, 134}:  "OOO TTV",
-       [3]byte{112, 90, 15}:   "Hewlett Packard",
-       [3]byte{112, 90, 158}:  "Technicolor CH USA Inc.",
-       [3]byte{112, 90, 182}:  "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
-       [3]byte{112, 91, 46}:   "M2Communication Inc.",
-       [3]byte{112, 92, 173}:  "Konami Gaming Inc",
-       [3]byte{112, 94, 170}:  "Action Target, Inc.",
-       [3]byte{112, 96, 222}:  "LaVision GmbH",
-       [3]byte{112, 97, 115}:  "Calantec GmbH",
-       [3]byte{112, 98, 184}:  "D-Link International",
-       [3]byte{112, 100, 23}:  "ORBIS TECNOLOGIA ELECTRICA S.A.",
-       [3]byte{112, 101, 130}: "Suzhou Hanming Technologies Co., Ltd.",
-       [3]byte{112, 101, 163}: "Kandao lightforge Co., Ltd.",
-       [3]byte{112, 102, 27}:  "Sonova AG",
-       [3]byte{112, 104, 121}: "Saijo Denki International Co., Ltd.",
-       [3]byte{112, 107, 185}: "Cisco Systems, Inc",
-       [3]byte{112, 109, 236}: "Wifi-soft LLC",
-       [3]byte{112, 110, 109}: "Cisco Systems, Inc",
-       [3]byte{112, 111, 129}: "Private",
-       [3]byte{112, 112, 13}:  "Apple, Inc.",
-       [3]byte{112, 112, 76}:  "Purple Communications, Inc",
-       [3]byte{112, 112, 139}: "Cisco Systems, Inc",
-       [3]byte{112, 113, 179}: "Brain Corporation",
-       [3]byte{112, 113, 188}: "PEGATRON CORPORATION",
-       [3]byte{112, 114, 13}:  "Lenovo Mobile Communication Technology Ltd.",
-       [3]byte{112, 114, 60}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{112, 114, 207}: "EdgeCore Networks",
-       [3]byte{112, 115, 203}: "Apple, Inc.",
-       [3]byte{112, 118, 48}:  "ARRIS Group, Inc.",
-       [3]byte{112, 118, 221}: "Oxyguard International A/S",
-       [3]byte{112, 118, 240}: "LevelOne Communications (India) Private Limited",
-       [3]byte{112, 118, 255}: "KERLINK",
-       [3]byte{112, 119, 129}: "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{112, 120, 139}: "vivo Mobile Communication Co., Ltd.",
-       [3]byte{112, 121, 56}:  "Wuxi Zhanrui Electronic Technology Co.,LTD",
-       [3]byte{112, 121, 144}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{112, 123, 232}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{112, 124, 24}:  "ADATA Technology Co., Ltd",
-       [3]byte{112, 124, 105}: "Avaya Inc",
-       [3]byte{112, 125, 149}: "Shenzhen City LinwlanTechnology Co. Ltd.",
-       [3]byte{112, 125, 185}: "Cisco Systems, Inc",
-       [3]byte{112, 126, 67}:  "ARRIS Group, Inc.",
-       [3]byte{112, 126, 222}: "NASTEC LTD.",
-       [3]byte{112, 129, 5}:   "Cisco Systems, Inc",
-       [3]byte{112, 129, 235}: "Apple, Inc.",
-       [3]byte{112, 130, 14}:  "as electronics GmbH",
-       [3]byte{112, 130, 142}: "OleumTech Corporation",
-       [3]byte{112, 133, 194}: "ASRock Incorporation",
-       [3]byte{112, 133, 198}: "ARRIS Group, Inc.",
-       [3]byte{112, 134, 193}: "Texas Instruments",
-       [3]byte{112, 136, 77}:  "JAPAN RADIO CO., LTD.",
-       [3]byte{112, 138, 9}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{112, 139, 120}: "citygrow technology co., ltd",
-       [3]byte{112, 139, 205}: "ASUSTek COMPUTER INC.",
-       [3]byte{112, 141, 9}:   "Nokia Corporation",
-       [3]byte{112, 145, 143}: "Weber-Stephen Products LLC",
-       [3]byte{112, 145, 243}: "Universal Electronics, Inc.",
-       [3]byte{112, 147, 131}: "Intelligent Optical Network High Tech CO.,LTD.",
-       [3]byte{112, 147, 248}: "Space Monkey, Inc.",
-       [3]byte{112, 151, 86}:  "Happyelectronics Co.,Ltd",
-       [3]byte{112, 153, 28}:  "Shenzhen Honesty Electronics Co.,Ltd",
-       [3]byte{112, 154, 11}:  "Italian Institute of Technology",
-       [3]byte{112, 155, 165}: "Shenzhen Y&D Electronics Co.,LTD.",
-       [3]byte{112, 155, 252}: "Bryton Inc.",
-       [3]byte{112, 156, 143}: "Nero AG",
-       [3]byte{112, 158, 41}:  "Sony Interactive Entertainment Inc.",
-       [3]byte{112, 158, 134}: "X6D Limited",
-       [3]byte{112, 159, 45}:  "zte corporation",
-       [3]byte{112, 161, 145}: "Trendsetter Medical, LLC",
-       [3]byte{112, 162, 179}: "Apple, Inc.",
-       [3]byte{112, 164, 28}:  "Advanced Wireless Dynamics S.L.",
-       [3]byte{112, 166, 106}: "Prox Dynamics AS",
-       [3]byte{112, 168, 76}:  "MONAD., Inc.",
-       [3]byte{112, 168, 227}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{112, 170, 178}: "BlackBerry RTS",
-       [3]byte{112, 173, 84}:  "Malvern Instruments Ltd",
-       [3]byte{112, 175, 36}:  "TP Vision Belgium NV",
-       [3]byte{112, 175, 37}:  "Nishiyama Industry Co.,LTD.",
-       [3]byte{112, 175, 106}: "SHENZHEN FENGLIAN TECHNOLOGY CO., LTD.",
-       [3]byte{112, 176, 53}:  "Shenzhen Zowee Technology Co., Ltd",
-       [3]byte{112, 176, 140}: "Shenou Communication Equipment Co.,Ltd",
-       [3]byte{112, 177, 78}:  "ARRIS Group, Inc.",
-       [3]byte{112, 178, 101}: "Hiltron s.r.l.",
-       [3]byte{112, 179, 213}: "IEEE Registration Authority",
-       [3]byte{112, 181, 153}: "Embedded Technologies s.r.o.",
-       [3]byte{112, 183, 226}: "Jiangsu Miter Technology Co.,Ltd.",
-       [3]byte{112, 185, 33}:  "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{112, 186, 239}: "Hangzhou H3C Technologies Co., Limited",
-       [3]byte{112, 191, 62}:  "Charles River Laboratories",
-       [3]byte{112, 198, 172}: "Bosch Automotive Aftermarket",
-       [3]byte{112, 199, 111}: "INNO S",
-       [3]byte{112, 202, 77}:  "Shenzhen lnovance Technology Co.,Ltd.",
-       [3]byte{112, 202, 155}: "Cisco Systems, Inc",
-       [3]byte{112, 205, 96}:  "Apple, Inc.",
-       [3]byte{112, 211, 121}: "Cisco Systems, Inc",
-       [3]byte{112, 212, 242}: "RIM",
-       [3]byte{112, 213, 126}: "Scalar Corporation",
-       [3]byte{112, 213, 231}: "Wellcore Corporation",
-       [3]byte{112, 214, 182}: "Metrum Technologies",
-       [3]byte{112, 216, 128}: "Upos System sp. z o.o.",
-       [3]byte{112, 217, 35}:  "vivo Mobile Communication Co., Ltd.",
-       [3]byte{112, 217, 49}:  "Cambridge Industries(Group) Co.,Ltd.",
-       [3]byte{112, 218, 156}: "TECSEN",
-       [3]byte{112, 219, 152}: "Cisco Systems, Inc",
-       [3]byte{112, 221, 161}: "Tellabs",
-       [3]byte{112, 222, 226}: "Apple, Inc.",
-       [3]byte{112, 222, 249}: "FAI WAH INTERNATIONAL (HONG KONG) LIMITED",
-       [3]byte{112, 223, 47}:  "Cisco Systems, Inc",
-       [3]byte{112, 224, 39}:  "HONGYU COMMUNICATION TECHNOLOGY LIMITED",
-       [3]byte{112, 225, 57}:  "3view Ltd",
-       [3]byte{112, 225, 253}: "FLEXTRONICS",
-       [3]byte{112, 226, 76}:  "SAE IT-systems GmbH & Co. KG",
-       [3]byte{112, 226, 132}: "Wistron Infocomm (Zhongshan) Corporation",
-       [3]byte{112, 228, 34}:  "Cisco Systems, Inc",
-       [3]byte{112, 229, 110}: "Texas Instruments",
-       [3]byte{112, 231, 44}:  "Apple, Inc.",
-       [3]byte{112, 232, 67}:  "Beijing C&W Optical Communication Technology Co.,Ltd.",
-       [3]byte{112, 236, 228}: "Apple, Inc.",
-       [3]byte{112, 238, 80}:  "Netatmo",
-       [3]byte{112, 238, 163}: "Eoptolink Technology Inc. Ltd,",
-       [3]byte{112, 240, 135}: "Apple, Inc.",
-       [3]byte{112, 241, 28}:  "Shenzhen Ogemray Technology Co.,Ltd",
-       [3]byte{112, 241, 118}: "Data Modul AG",
-       [3]byte{112, 241, 150}: "Actiontec Electronics, Inc",
-       [3]byte{112, 241, 161}: "Liteon Technology Corporation",
-       [3]byte{112, 241, 229}: "Xetawave LLC",
-       [3]byte{112, 243, 90}:  "Cisco Systems, Inc",
-       [3]byte{112, 243, 149}: "Universal Global Scientific Industrial Co., Ltd.",
-       [3]byte{112, 248, 231}: "IEEE Registration Authority",
-       [3]byte{112, 249, 39}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{112, 249, 109}: "Hangzhou H3C Technologies Co., Limited",
-       [3]byte{112, 252, 140}: "OneAccess SA",
-       [3]byte{112, 255, 92}:  "Cheerzing Communication(Xiamen)Technology Co.,Ltd",
-       [3]byte{112, 255, 118}: "Texas Instruments",
-       [3]byte{116, 3, 189}:   "BUFFALO.INC",
-       [3]byte{116, 4, 43}:    "Lenovo Mobile Communication (Wuhan) Company Limited",
-       [3]byte{116, 10, 188}:  "LightwaveRF Technology Ltd",
-       [3]byte{116, 14, 219}:  "Optowiz Co., Ltd",
-       [3]byte{116, 20, 137}:  "SRT Wireless",
-       [3]byte{116, 21, 226}:  "Tri-Sen Systems Corporation",
-       [3]byte{116, 24, 101}:  "Shanghai DareGlobal Technologies Co.,Ltd",
-       [3]byte{116, 25, 248}:  "IEEE Registration Authority",
-       [3]byte{116, 26, 224}:  "IEEE Registration Authority",
-       [3]byte{116, 27, 178}:  "Apple, Inc.",
-       [3]byte{116, 28, 39}:   "ITEL MOBILE LIMITED",
-       [3]byte{116, 30, 147}:  "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{116, 31, 74}:   "Hangzhou H3C Technologies Co., Limited",
-       [3]byte{116, 35, 68}:   "Xiaomi Communications Co Ltd",
-       [3]byte{116, 37, 138}:  "Hangzhou H3C Technologies Co., Limited",
-       [3]byte{116, 38, 172}:  "Cisco Systems, Inc",
-       [3]byte{116, 39, 60}:   "ChangYang Technology (Nanjing) Co., LTD",
-       [3]byte{116, 39, 234}:  "Elitegroup Computer Systems Co.,Ltd.",
-       [3]byte{116, 40, 87}:   "Mayfield Robotics",
-       [3]byte{116, 41, 175}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{116, 43, 15}:   "Infinidat Ltd.",
-       [3]byte{116, 43, 98}:   "FUJITSU LIMITED",
-       [3]byte{116, 45, 10}:   "Norfolk Elektronik AG",
-       [3]byte{116, 46, 252}:  "DirectPacket Research, Inc,",
-       [3]byte{116, 47, 104}:  "AzureWave Technology Inc.",
-       [3]byte{116, 49, 112}:  "Arcadyan Technology Corporation",
-       [3]byte{116, 50, 86}:   "NT-ware Systemprg GmbH",
-       [3]byte{116, 55, 47}:   "Tongfang Shenzhen Cloudcomputing Technology Co.,Ltd",
-       [3]byte{116, 55, 59}:   "UNINET Co.,Ltd.",
-       [3]byte{116, 56, 137}:  "ANNAX Anzeigesysteme GmbH",
-       [3]byte{116, 58, 101}:  "NEC Corporation",
-       [3]byte{116, 62, 43}:   "Ruckus Wireless",
-       [3]byte{116, 62, 203}:  "Gentrice tech",
-       [3]byte{116, 68, 1}:    "NETGEAR",
-       [3]byte{116, 69, 138}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{116, 70, 160}:  "Hewlett Packard",
-       [3]byte{116, 74, 164}:  "zte corporation",
-       [3]byte{116, 75, 233}:  "EXPLORER HYPERTECH CO.,LTD",
-       [3]byte{116, 77, 121}:  "Arrive Systems Inc.",
-       [3]byte{116, 81, 186}:  "Xiaomi Communications Co Ltd",
-       [3]byte{116, 83, 39}:   "COMMSEN CO., LIMITED",
-       [3]byte{116, 84, 39}:   "SHENZHEN FAST TECHNOLOGIES CO.,LTD",
-       [3]byte{116, 84, 125}:  "Cisco SPVTG",
-       [3]byte{116, 86, 18}:   "ARRIS Group, Inc.",
-       [3]byte{116, 87, 152}:  "TRUMPF Laser GmbH + Co. KG",
-       [3]byte{116, 90, 170}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{116, 92, 75}:   "GN Audio A/S",
-       [3]byte{116, 92, 159}:  "TCT mobile ltd",
-       [3]byte{116, 94, 28}:   "PIONEER CORPORATION",
-       [3]byte{116, 95, 0}:    "Samsung Semiconductor Inc.",
-       [3]byte{116, 95, 174}:  "TSL PPL",
-       [3]byte{116, 97, 75}:   "Chongqing Huijiatong Information Technology Co., Ltd.",
-       [3]byte{116, 99, 223}:  "VTS GmbH",
-       [3]byte{116, 101, 209}: "Atlinks",
-       [3]byte{116, 102, 48}:  "T:mi Ytti",
-       [3]byte{116, 103, 247}: "Extreme Networks, Inc.",
-       [3]byte{116, 106, 58}:  "Aperi Corporation",
-       [3]byte{116, 106, 137}: "Rezolt Corporation",
-       [3]byte{116, 106, 143}: "VS Vision Systems GmbH",
-       [3]byte{116, 107, 130}: "MOVEK",
-       [3]byte{116, 110, 228}: "Asia Vital Components Co.,Ltd.",
-       [3]byte{116, 111, 25}:  "ICARVISIONS (SHENZHEN) TECHNOLOGY CO., LTD.",
-       [3]byte{116, 111, 61}:  "Contec GmbH",
-       [3]byte{116, 111, 247}: "Wistron Neweb Corporation",
-       [3]byte{116, 114, 176}: "Guangzhou Shiyuan Electronics Co., Ltd.",
-       [3]byte{116, 114, 242}: "Chipsip Technology Co., Ltd.",
-       [3]byte{116, 115, 54}:  "MICRODIGTAL Inc",
-       [3]byte{116, 117, 72}:  "Amazon Technologies Inc.",
-       [3]byte{116, 120, 24}:  "Jurumani Solutions",
-       [3]byte{116, 123, 122}: "ETH Inc.",
-       [3]byte{116, 125, 36}:  "Phicomm (Shanghai) Co., Ltd.",
-       [3]byte{116, 125, 182}: "Aliwei Communications, Inc",
-       [3]byte{116, 126, 26}:  "Red Embedded Design Limited",
-       [3]byte{116, 126, 45}:  "Beijing Thomson CITIC Digital Technology Co. LTD.",
-       [3]byte{116, 129, 20}:  "Apple, Inc.",
-       [3]byte{116, 129, 154}: "PT. Hartono Istana Teknologi",
-       [3]byte{116, 131, 239}: "Arista Networks",
-       [3]byte{116, 133, 42}:  "PEGATRON CORPORATION",
-       [3]byte{116, 134, 11}:  "Cisco Systems, Inc",
-       [3]byte{116, 134, 122}: "Dell Inc.",
-       [3]byte{116, 135, 169}: "OCT Technology Co., Ltd.",
-       [3]byte{116, 136, 42}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{116, 136, 139}: "ADB Broadband Italia",
-       [3]byte{116, 138, 105}: "Korea Image Technology Co., Ltd",
-       [3]byte{116, 141, 8}:   "Apple, Inc.",
-       [3]byte{116, 142, 8}:   "Bestek Corp.",
-       [3]byte{116, 142, 248}: "Brocade Communications Systems, Inc.",
-       [3]byte{116, 143, 27}:  "MasterImage 3D",
-       [3]byte{116, 143, 77}:  "MEN Mikro Elektronik GmbH",
-       [3]byte{116, 144, 80}:  "Renesas Electronics Corporation",
-       [3]byte{116, 145, 26}:  "Ruckus Wireless",
-       [3]byte{116, 145, 189}: "Four systems Co.,Ltd.",
-       [3]byte{116, 147, 164}: "Zebra Technologies Corp.",
-       [3]byte{116, 148, 61}:  "AgJunction",
-       [3]byte{116, 149, 236}: "ALPS ELECTRIC CO.,LTD.",
-       [3]byte{116, 150, 55}:  "Todaair Electronic Co., Ltd",
-       [3]byte{116, 151, 129}: "zte corporation",
-       [3]byte{116, 153, 117}: "IBM Corporation",
-       [3]byte{116, 156, 82}:  "Huizhou Desay SV Automotive Co., Ltd.",
-       [3]byte{116, 156, 227}: "KodaCloud Canada, Inc",
-       [3]byte{116, 157, 143}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{116, 157, 220}: "2Wire Inc",
-       [3]byte{116, 160, 47}:  "Cisco Systems, Inc",
-       [3]byte{116, 160, 99}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{116, 162, 230}: "Cisco Systems, Inc",
-       [3]byte{116, 163, 74}:  "ZIMI CORPORATION",
-       [3]byte{116, 164, 167}: "QRS Music Technologies, Inc.",
-       [3]byte{116, 164, 181}: "Powerleader Science and Technology Co. Ltd.",
-       [3]byte{116, 165, 40}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{116, 167, 34}:  "LG Electronics (Mobile Communications)",
-       [3]byte{116, 167, 142}: "zte corporation",
-       [3]byte{116, 172, 95}:  "Qiku Internet Network Scientific (Shenzhen) Co., Ltd.",
-       [3]byte{116, 173, 183}: "China Mobile Group Device Co.,Ltd.",
-       [3]byte{116, 174, 118}: "iNovo Broadband, Inc.",
-       [3]byte{116, 176, 12}:  "Network Video Technologies, Inc",
-       [3]byte{116, 180, 114}: "CIESSE",
-       [3]byte{116, 181, 126}: "zte corporation",
-       [3]byte{116, 185, 235}: "JinQianMao Technology Co.,Ltd.",
-       [3]byte{116, 186, 219}: "Longconn Electornics(shenzhen)Co.,Ltd",
-       [3]byte{116, 187, 211}: "Shenzhen xeme Communication Co., Ltd.",
-       [3]byte{116, 190, 8}:   "ATEK Products, LLC",
-       [3]byte{116, 191, 161}: "HYUNTECK",
-       [3]byte{116, 191, 183}: "Nusoft Corporation",
-       [3]byte{116, 194, 70}:  "Amazon Technologies Inc.",
-       [3]byte{116, 195, 48}:  "SHENZHEN FAST TECHNOLOGIES CO.,LTD",
-       [3]byte{116, 198, 33}:  "Zhejiang Hite Renewable Energy Co.,LTD",
-       [3]byte{116, 198, 59}:  "AzureWave Technology Inc.",
-       [3]byte{116, 201, 154}: "Ericsson AB",
-       [3]byte{116, 201, 163}: "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{116, 202, 37}:  "Calxeda, Inc.",
-       [3]byte{116, 204, 57}:  "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{116, 205, 12}:  "Smith Myers Communications Ltd.",
-       [3]byte{116, 206, 86}:  "Packet Force Technology Limited Company",
-       [3]byte{116, 208, 43}:  "ASUSTek COMPUTER INC.",
-       [3]byte{116, 208, 220}: "Ericsson AB",
-       [3]byte{116, 210, 29}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{116, 212, 53}:  "GIGA-BYTE TECHNOLOGY CO.,LTD.",
-       [3]byte{116, 214, 117}: "WYMA Tecnologia",
-       [3]byte{116, 214, 234}: "Texas Instruments",
-       [3]byte{116, 215, 202}: "Panasonic Corporation Automotive",
-       [3]byte{116, 216, 80}:  "Evrisko Systems",
-       [3]byte{116, 218, 56}:  "Edimax Technology Co. Ltd.",
-       [3]byte{116, 218, 218}: "D-Link International",
-       [3]byte{116, 218, 234}: "Texas Instruments",
-       [3]byte{116, 219, 209}: "Ebay Inc",
-       [3]byte{116, 222, 43}:  "Liteon Technology Corporation",
-       [3]byte{116, 223, 191}: "Liteon Technology Corporation",
-       [3]byte{116, 224, 110}: "Ergophone GmbH",
-       [3]byte{116, 225, 74}:  "IEEE Registration Authority",
-       [3]byte{116, 225, 154}: "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{116, 225, 182}: "Apple, Inc.",
-       [3]byte{116, 226, 119}: "Vizmonet Pte Ltd",
-       [3]byte{116, 226, 140}: "Microsoft Corporation",
-       [3]byte{116, 226, 245}: "Apple, Inc.",
-       [3]byte{116, 228, 36}:  "APISTE CORPORATION",
-       [3]byte{116, 229, 11}:  "Intel Corporate",
-       [3]byte{116, 229, 55}:  "RADSPIN",
-       [3]byte{116, 229, 67}:  "Liteon Technology Corporation",
-       [3]byte{116, 229, 249}: "Intel Corporate",
-       [3]byte{116, 230, 15}:  "TECNO MOBILE LIMITED",
-       [3]byte{116, 230, 226}: "Dell Inc.",
-       [3]byte{116, 231, 198}: "ARRIS Group, Inc.",
-       [3]byte{116, 234, 58}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{116, 234, 200}: "New H3C Technologies Co., Ltd",
-       [3]byte{116, 234, 203}: "New H3C Technologies Co., Ltd",
-       [3]byte{116, 234, 232}: "ARRIS Group, Inc.",
-       [3]byte{116, 236, 241}: "Acumen",
-       [3]byte{116, 240, 109}: "AzureWave Technology Inc.",
-       [3]byte{116, 240, 125}: "BnCOM Co.,Ltd",
-       [3]byte{116, 241, 2}:   "Beijing HCHCOM Technology Co., Ltd",
-       [3]byte{116, 244, 19}:  "Maxwell Forest",
-       [3]byte{116, 246, 18}:  "ARRIS Group, Inc.",
-       [3]byte{116, 246, 28}:  "HTC Corporation",
-       [3]byte{116, 246, 97}:  "Schneider Electric Fire & Security Oy",
-       [3]byte{116, 247, 38}:  "Neuron Robotics",
-       [3]byte{116, 248, 93}:  "Berkeley Nucleonics Corp",
-       [3]byte{116, 248, 219}: "IEEE Registration Authority",
-       [3]byte{116, 249, 26}:  "Onface",
-       [3]byte{116, 253, 160}: "Compupal (Group) Corporation",
-       [3]byte{116, 254, 72}:  "ADVANTECH CO., LTD.",
-       [3]byte{116, 255, 76}:  "Skyworth Digital Technology(Shenzhen) Co.,Ltd",
-       [3]byte{116, 255, 125}: "Wren Sound Systems, LLC",
-       [3]byte{120, 0, 158}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{120, 2, 143}:   "Adaptive Spectrum and Signal Alignment (ASSIA), Inc.",
-       [3]byte{120, 2, 177}:   "Cisco Systems, Inc",
-       [3]byte{120, 2, 183}:   "ShenZhen Ultra Easy Technology CO.,LTD",
-       [3]byte{120, 2, 248}:   "Xiaomi Communications Co Ltd",
-       [3]byte{120, 5, 65}:    "Queclink Wireless Solutions Co., Ltd",
-       [3]byte{120, 7, 56}:    "Z.U.K. Elzab S.A.",
-       [3]byte{120, 10, 199}:  "Baofeng TV Co., Ltd.",
-       [3]byte{120, 12, 184}:  "Intel Corporate",
-       [3]byte{120, 17, 133}:  "NBS Payment Solutions Inc.",
-       [3]byte{120, 17, 220}:  "XIAOMI Electronics,CO.,LTD",
-       [3]byte{120, 18, 184}:  "ORANTEK LIMITED",
-       [3]byte{120, 24, 129}:  "AzureWave Technology Inc.",
-       [3]byte{120, 25, 46}:   "NASCENT Technology",
-       [3]byte{120, 25, 247}:  "Juniper Networks",
-       [3]byte{120, 28, 90}:   "SHARP Corporation",
-       [3]byte{120, 29, 186}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{120, 29, 253}:  "Jabil Inc",
-       [3]byte{120, 31, 219}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{120, 32, 121}:  "ID Tech",
-       [3]byte{120, 34, 61}:   "Affirmed Networks",
-       [3]byte{120, 35, 174}:  "ARRIS Group, Inc.",
-       [3]byte{120, 36, 175}:  "ASUSTek COMPUTER INC.",
-       [3]byte{120, 37, 68}:   "Omnima Limited",
-       [3]byte{120, 37, 173}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{120, 40, 202}:  "Sonos, Inc.",
-       [3]byte{120, 43, 203}:  "Dell Inc.",
-       [3]byte{120, 45, 126}:  "TRENDnet, Inc.",
-       [3]byte{120, 46, 239}:  "Nokia Corporation",
-       [3]byte{120, 48, 59}:   "Stephen Technologies Co.,Limited",
-       [3]byte{120, 48, 225}:  "UltraClenz, LLC",
-       [3]byte{120, 49, 43}:   "zte corporation",
-       [3]byte{120, 49, 193}:  "Apple, Inc.",
-       [3]byte{120, 50, 27}:   "D-Link International",
-       [3]byte{120, 50, 79}:   "Millennium Group, Inc.",
-       [3]byte{120, 54, 144}:  "Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd",
-       [3]byte{120, 58, 132}:  "Apple, Inc.",
-       [3]byte{120, 60, 227}:  "Kai-EE",
-       [3]byte{120, 61, 91}:   "TELNET Redes Inteligentes S.A.",
-       [3]byte{120, 62, 83}:   "BSkyB Ltd",
-       [3]byte{120, 63, 21}:   "EasySYNC Ltd.",
-       [3]byte{120, 64, 228}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{120, 68, 5}:    "FUJITU(HONG KONG) ELECTRONIC Co.,LTD.",
-       [3]byte{120, 68, 118}:  "Zioncom Electronics (Shenzhen) Ltd.",
-       [3]byte{120, 68, 253}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{120, 69, 1}:    "Biamp Systems",
-       [3]byte{120, 69, 97}:   "CyberTAN Technology Inc.",
-       [3]byte{120, 69, 196}:  "Dell Inc.",
-       [3]byte{120, 70, 196}:  "DAEHAP HYPER-TECH",
-       [3]byte{120, 71, 29}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{120, 72, 89}:   "Hewlett Packard",
-       [3]byte{120, 73, 29}:   "The Will-Burt Company",
-       [3]byte{120, 75, 8}:    "f.robotics acquisitions ltd",
-       [3]byte{120, 75, 135}:  "Murata Manufacturing Co., Ltd.",
-       [3]byte{120, 79, 67}:   "Apple, Inc.",
-       [3]byte{120, 81, 12}:   "LiveU Ltd.",
-       [3]byte{120, 82, 26}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{120, 82, 98}:   "Shenzhen Hojy Software Co., Ltd.",
-       [3]byte{120, 83, 242}:  "ROXTON Ltd.",
-       [3]byte{120, 84, 46}:   "D-Link International",
-       [3]byte{120, 85, 23}:   "SankyuElectronics",
-       [3]byte{120, 87, 18}:   "Mobile Integration Workgroup",
-       [3]byte{120, 88, 243}:  "Vachen Co.,Ltd",
-       [3]byte{120, 89, 62}:   "RAFI GmbH & Co.KG",
-       [3]byte{120, 89, 94}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{120, 89, 104}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{120, 92, 40}:   "Prime Motion Inc.",
-       [3]byte{120, 92, 114}:  "Hioso Technology Co., Ltd.",
-       [3]byte{120, 95, 76}:   "Argox Information Co., Ltd.",
-       [3]byte{120, 97, 124}:  "MITSUMI ELECTRIC CO.,LTD.",
-       [3]byte{120, 98, 86}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{120, 100, 230}: "Green Motive Technology Limited",
-       [3]byte{120, 102, 174}: "ZTEC Instruments, Inc.",
-       [3]byte{120, 103, 215}: "Apple, Inc.",
-       [3]byte{120, 104, 247}: "YSTen Technology Co.,Ltd",
-       [3]byte{120, 106, 137}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{120, 108, 28}:  "Apple, Inc.",
-       [3]byte{120, 109, 148}: "Palo Alto Networks",
-       [3]byte{120, 113, 156}: "ARRIS Group, Inc.",
-       [3]byte{120, 123, 138}: "Apple, Inc.",
-       [3]byte{120, 125, 72}:  "ITEL MOBILE LIMITED",
-       [3]byte{120, 126, 97}:  "Apple, Inc.",
-       [3]byte{120, 127, 98}:  "GiK mbH",
-       [3]byte{120, 128, 56}:  "FUNAI ELECTRIC CO., LTD.",
-       [3]byte{120, 129, 2}:   "Sercomm Corporation.",
-       [3]byte{120, 129, 143}: "Server Racks Australia Pty Ltd",
-       [3]byte{120, 132, 60}:  "Sony Corporation",
-       [3]byte{120, 132, 238}: "INDRA ESPACIO S.A.",
-       [3]byte{120, 135, 13}:  "Unifiedgateways India Private Limited",
-       [3]byte{120, 136, 109}: "Apple, Inc.",
-       [3]byte{120, 136, 138}: "CDR Sp. z o.o. Sp. k.",
-       [3]byte{120, 137, 115}: "CMC",
-       [3]byte{120, 138, 32}:  "Ubiquiti Networks Inc.",
-       [3]byte{120, 139, 119}: "Standar Telecom",
-       [3]byte{120, 140, 77}:  "Indyme Solutions, LLC",
-       [3]byte{120, 140, 84}:  "Eltek Technologies LTD",
-       [3]byte{120, 141, 247}: "Hitron Technologies. Inc",
-       [3]byte{120, 142, 51}:  "Jiangsu SEUIC Technology Co.,Ltd",
-       [3]byte{120, 146, 62}:  "Nokia Corporation",
-       [3]byte{120, 146, 156}: "Intel Corporate",
-       [3]byte{120, 148, 180}: "Sercomm Corporation.",
-       [3]byte{120, 150, 130}: "zte corporation",
-       [3]byte{120, 150, 132}: "ARRIS Group, Inc.",
-       [3]byte{120, 152, 253}: "Q9 Networks Inc.",
-       [3]byte{120, 153, 92}:  "Nationz Technologies Inc",
-       [3]byte{120, 153, 102}: "Musilab Electronics (DongGuan)Co.,Ltd.",
-       [3]byte{120, 153, 143}: "MEDILINE ITALIA SRL",
-       [3]byte{120, 156, 133}: "August Home, Inc.",
-       [3]byte{120, 156, 231}: "Shenzhen Aikede Technology Co., Ltd",
-       [3]byte{120, 158, 208}: "Samsung Electronics Co.,Ltd",
-       [3]byte{120, 159, 76}:  "HOERBIGER Elektronik GmbH",
-       [3]byte{120, 159, 112}: "Apple, Inc.",
-       [3]byte{120, 159, 135}: "Siemens AG I IA PP PRM",
-       [3]byte{120, 160, 81}:  "iiNet Labs Pty Ltd",
-       [3]byte{120, 161, 6}:   "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{120, 161, 131}: "Advidia",
-       [3]byte{120, 162, 160}: "Nintendo Co., Ltd.",
-       [3]byte{120, 163, 81}:  "SHENZHEN ZHIBOTONG ELECTRONICS CO.,LTD",
-       [3]byte{120, 163, 228}: "Apple, Inc.",
-       [3]byte{120, 165, 4}:   "Texas Instruments",
-       [3]byte{120, 165, 221}: "Shenzhen Smarteye Digital Electronics Co., Ltd",
-       [3]byte{120, 166, 131}: "Precidata",
-       [3]byte{120, 166, 189}: "DAEYEON Control&Instrument Co,.Ltd",
-       [3]byte{120, 166, 225}: "Brocade Communications Systems, Inc.",
-       [3]byte{120, 167, 20}:  "Amphenol",
-       [3]byte{120, 168, 115}: "Samsung Electronics Co.,Ltd",
-       [3]byte{120, 171, 96}:  "ABB Australia",
-       [3]byte{120, 171, 187}: "Samsung Electronics Co.,Ltd",
-       [3]byte{120, 172, 191}: "Igneous Systems",
-       [3]byte{120, 172, 192}: "Hewlett Packard",
-       [3]byte{120, 174, 12}:  "Far South Networks",
-       [3]byte{120, 175, 88}:  "GIMASI SA",
-       [3]byte{120, 178, 141}: "Beijing Tengling Technology CO.Ltd",
-       [3]byte{120, 179, 185}: "ShangHai sunup lighting CO.,LTD",
-       [3]byte{120, 179, 206}: "Elo touch solutions",
-       [3]byte{120, 181, 210}: "Ever Treasure Industrial Limited",
-       [3]byte{120, 182, 193}: "AOBO Telecom Co.,Ltd",
-       [3]byte{120, 184, 26}:  "INTER SALES A/S",
-       [3]byte{120, 184, 75}:  "SICHUAN TIANYI COMHEART TELECOMCO.,LTD",
-       [3]byte{120, 186, 208}: "Shinybow Technology Co. Ltd.",
-       [3]byte{120, 186, 249}: "Cisco Systems, Inc",
-       [3]byte{120, 188, 26}:  "Cisco Systems, Inc",
-       [3]byte{120, 189, 188}: "Samsung Electronics Co.,Ltd",
-       [3]byte{120, 190, 182}: "Enhanced Vision",
-       [3]byte{120, 190, 189}: "STULZ GmbH",
-       [3]byte{120, 193, 167}: "zte corporation",
-       [3]byte{120, 194, 192}: "IEEE Registration Authority",
-       [3]byte{120, 195, 233}: "Samsung Electronics Co.,Ltd",
-       [3]byte{120, 196, 14}:  "H&D Wireless",
-       [3]byte{120, 196, 171}: "Shenzhen Runsil Technology Co.,Ltd",
-       [3]byte{120, 197, 229}: "Texas Instruments",
-       [3]byte{120, 198, 187}: "Innovasic, Inc.",
-       [3]byte{120, 202, 4}:   "Nokia Corporation",
-       [3]byte{120, 202, 57}:  "Apple, Inc.",
-       [3]byte{120, 202, 94}:  "ELNO",
-       [3]byte{120, 202, 131}: "IEEE Registration Authority",
-       [3]byte{120, 203, 51}:  "DHC Software Co.,Ltd",
-       [3]byte{120, 203, 104}: "DAEHAP HYPER-TECH",
-       [3]byte{120, 205, 142}: "SMC Networks Inc",
-       [3]byte{120, 208, 4}:   "Neousys Technology Inc.",
-       [3]byte{120, 209, 41}:  "Vicos",
-       [3]byte{120, 211, 79}:  "Pace-O-Matic, Inc.",
-       [3]byte{120, 211, 141}: "HONGKONG YUNLINK TECHNOLOGY LIMITED",
-       [3]byte{120, 213, 181}: "NAVIELEKTRO KY",
-       [3]byte{120, 214, 111}: "Aristocrat Technologies Australia Pty. Ltd.",
-       [3]byte{120, 214, 178}: "Toshiba",
-       [3]byte{120, 214, 240}: "SAMSUNG ELECTRO MECHANICS CO., LTD.",
-       [3]byte{120, 215, 82}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{120, 215, 95}:  "Apple, Inc.",
-       [3]byte{120, 216, 0}:   "IEEE Registration Authority",
-       [3]byte{120, 217, 159}: "NuCom HK Ltd.",
-       [3]byte{120, 218, 110}: "Cisco Systems, Inc",
-       [3]byte{120, 218, 179}: "GBO Technology",
-       [3]byte{120, 221, 8}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{120, 221, 214}: "c-scape",
-       [3]byte{120, 221, 217}: "Guangzhou Shiyuan Electronics Co., Ltd.",
-       [3]byte{120, 222, 228}: "Texas Instruments",
-       [3]byte{120, 225, 3}:   "Amazon Technologies Inc.",
-       [3]byte{120, 227, 181}: "Hewlett Packard",
-       [3]byte{120, 228, 0}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{120, 231, 209}: "Hewlett Packard",
-       [3]byte{120, 232, 182}: "zte corporation",
-       [3]byte{120, 233, 128}: "RainUs Co.,Ltd",
-       [3]byte{120, 235, 20}:  "SHENZHEN FAST TECHNOLOGIES CO.,LTD",
-       [3]byte{120, 235, 57}:  "Instituto Nacional de Tecnología Industrial",
-       [3]byte{120, 236, 34}:  "Shanghai Qihui Telecom Technology Co., LTD",
-       [3]byte{120, 236, 116}: "Kyland-USA",
-       [3]byte{120, 239, 76}:  "Unetconvergence Co., Ltd.",
-       [3]byte{120, 242, 158}: "PEGATRON CORPORATION",
-       [3]byte{120, 245, 87}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{120, 245, 229}: "BEGA Gantenbrink-Leuchten KG",
-       [3]byte{120, 245, 253}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{120, 247, 190}: "Samsung Electronics Co.,Ltd",
-       [3]byte{120, 247, 208}: "Silverbrook Research",
-       [3]byte{120, 248, 130}: "LG Electronics (Mobile Communications)",
-       [3]byte{120, 249, 68}:  "Private",
-       [3]byte{120, 252, 20}:  "Family Zone Cyber Safety Ltd",
-       [3]byte{120, 253, 148}: "Apple, Inc.",
-       [3]byte{120, 254, 61}:  "Juniper Networks",
-       [3]byte{120, 254, 65}:  "Socus networks",
-       [3]byte{120, 254, 226}: "Shanghai Diveo Technology Co., Ltd",
-       [3]byte{120, 255, 87}:  "Intel Corporate",
-       [3]byte{120, 255, 202}: "TECNO MOBILE LIMITED",
-       [3]byte{124, 1, 10}:    "Texas Instruments",
-       [3]byte{124, 1, 135}:   "Curtis Instruments, Inc.",
-       [3]byte{124, 1, 145}:   "Apple, Inc.",
-       [3]byte{124, 2, 188}:   "Hansung Electronics Co. LTD",
-       [3]byte{124, 3, 76}:    "Sagemcom Broadband SAS",
-       [3]byte{124, 3, 201}:   "Shenzhen YOUHUA Technology Co., Ltd",
-       [3]byte{124, 3, 216}:   "Sagemcom Broadband SAS",
-       [3]byte{124, 4, 208}:   "Apple, Inc.",
-       [3]byte{124, 5, 7}:     "PEGATRON CORPORATION",
-       [3]byte{124, 5, 30}:    "RAFAEL LTD.",
-       [3]byte{124, 6, 35}:    "Ultra Electronics Sonar System Division",
-       [3]byte{124, 8, 217}:   "Shanghai B-Star Technology Co",
-       [3]byte{124, 9, 43}:    "Bekey A/S",
-       [3]byte{124, 10, 80}:   "J-MEX Inc.",
-       [3]byte{124, 11, 198}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{124, 14, 206}:  "Cisco Systems, Inc",
-       [3]byte{124, 16, 21}:   "Brilliant Home Technology, Inc.",
-       [3]byte{124, 17, 190}:  "Apple, Inc.",
-       [3]byte{124, 17, 203}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{124, 17, 205}:  "QianTang Technology",
-       [3]byte{124, 20, 118}:  "Damall Technologies SAS",
-       [3]byte{124, 22, 13}:   "Saia-Burgess Controls AG",
-       [3]byte{124, 24, 205}:  "E-TRON Co.,Ltd.",
-       [3]byte{124, 26, 3}:    "8Locations Co., Ltd.",
-       [3]byte{124, 26, 252}:  "Dalian Co-Edifice Video Technology Co., Ltd",
-       [3]byte{124, 28, 78}:   "LG Innotek",
-       [3]byte{124, 28, 104}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{124, 28, 241}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{124, 29, 217}:  "Xiaomi Communications Co Ltd",
-       [3]byte{124, 30, 82}:   "Microsoft",
-       [3]byte{124, 30, 179}:  "2N TELEKOMUNIKACE a.s.",
-       [3]byte{124, 32, 72}:   "KoamTac",
-       [3]byte{124, 32, 100}:  "Alcatel-Lucent IPD",
-       [3]byte{124, 37, 135}:  "chaowifi.com",
-       [3]byte{124, 38, 52}:   "ARRIS Group, Inc.",
-       [3]byte{124, 38, 100}:  "Sagemcom Broadband SAS",
-       [3]byte{124, 43, 225}:  "Shenzhen Ferex Electrical Co.,Ltd",
-       [3]byte{124, 44, 243}:  "Secure Electrans Ltd",
-       [3]byte{124, 46, 13}:   "Blackmagic Design",
-       [3]byte{124, 46, 221}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{124, 47, 128}:  "Gigaset Communications GmbH",
-       [3]byte{124, 51, 110}:  "MEG Electronics Inc.",
-       [3]byte{124, 53, 72}:   "Transcend Information",
-       [3]byte{124, 56, 102}:  "Texas Instruments",
-       [3]byte{124, 56, 108}:  "Real Time Logic",
-       [3]byte{124, 57, 32}:   "SSOMA SECURITY",
-       [3]byte{124, 59, 213}:  "Imago Group",
-       [3]byte{124, 60, 182}:  "Shenzhen Homecare Technology Co.,Ltd.",
-       [3]byte{124, 62, 157}:  "PATECH",
-       [3]byte{124, 67, 143}:  "E-Band Communications Corp.",
-       [3]byte{124, 68, 76}:   "Entertainment Solutions, S.L.",
-       [3]byte{124, 70, 133}:  "Motorola (Wuhan) Mobility Technologies Communication Co., Ltd.",
-       [3]byte{124, 71, 124}:  "IEEE Registration Authority",
-       [3]byte{124, 73, 185}:  "Plexus Manufacturing Sdn Bhd",
-       [3]byte{124, 74, 130}:  "Portsmith LLC",
-       [3]byte{124, 74, 168}:  "MindTree Wireless PVT Ltd",
-       [3]byte{124, 75, 120}:  "Red Sun Synthesis Pte Ltd",
-       [3]byte{124, 76, 88}:   "Scale Computing, Inc.",
-       [3]byte{124, 76, 165}:  "BSkyB Ltd",
-       [3]byte{124, 79, 125}:  "Sawwave",
-       [3]byte{124, 79, 181}:  "Arcadyan Technology Corporation",
-       [3]byte{124, 80, 73}:   "Apple, Inc.",
-       [3]byte{124, 83, 74}:   "Metamako",
-       [3]byte{124, 85, 231}:  "YSI, Inc.",
-       [3]byte{124, 87, 78}:   "COBI GmbH",
-       [3]byte{124, 90, 28}:   "Sophos Ltd",
-       [3]byte{124, 90, 103}:  "JNC Systems, Inc.",
-       [3]byte{124, 92, 248}:  "Intel Corporate",
-       [3]byte{124, 96, 151}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{124, 97, 147}:  "HTC Corporation",
-       [3]byte{124, 100, 86}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{124, 102, 157}: "Texas Instruments",
-       [3]byte{124, 103, 162}: "Intel Corporate",
-       [3]byte{124, 105, 246}: "Cisco Systems, Inc",
-       [3]byte{124, 106, 179}: "IBC TECHNOLOGIES INC.",
-       [3]byte{124, 106, 195}: "GatesAir, Inc",
-       [3]byte{124, 106, 219}: "SafeTone Technology Co.,Ltd",
-       [3]byte{124, 106, 243}: "Integrated Device Technology (Malaysia) Sdn. Bhd.",
-       [3]byte{124, 107, 51}:  "Tenyu Tech Co. Ltd.",
-       [3]byte{124, 107, 82}:  "Tigaro Wireless",
-       [3]byte{124, 107, 247}: "NTI co., ltd.",
-       [3]byte{124, 108, 57}:  "PIXSYS SRL",
-       [3]byte{124, 108, 143}: "AMS NEVE LTD",
-       [3]byte{124, 109, 98}:  "Apple, Inc.",
-       [3]byte{124, 109, 248}: "Apple, Inc.",
-       [3]byte{124, 111, 6}:   "Caterpillar Trimble Control Technologies",
-       [3]byte{124, 111, 248}: "ShenZhen ACTO Digital Video Technology Co.,Ltd.",
-       [3]byte{124, 112, 188}: "IEEE Registration Authority",
-       [3]byte{124, 113, 118}: "Wuxi iData Technology Company Ltd.",
-       [3]byte{124, 114, 228}: "Unikey Technologies",
-       [3]byte{124, 115, 139}: "Cocoon Alarm Ltd",
-       [3]byte{124, 118, 48}:  "Shenzhen YOUHUA Technology Co., Ltd",
-       [3]byte{124, 118, 53}:  "Intel Corporate",
-       [3]byte{124, 118, 115}: "ENMAS GmbH",
-       [3]byte{124, 120, 126}: "Samsung Electronics Co.,Ltd",
-       [3]byte{124, 121, 232}: "PayRange Inc.",
-       [3]byte{124, 122, 83}:  "Phytrex Technology Corp.",
-       [3]byte{124, 122, 145}: "Intel Corporate",
-       [3]byte{124, 123, 139}: "Control Concepts, Inc.",
-       [3]byte{124, 123, 228}: "Z'SEDAI KENKYUSHO CORPORATION",
-       [3]byte{124, 125, 61}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{124, 125, 65}:  "Jinmuyu Electronics Co., Ltd.",
-       [3]byte{124, 130, 45}:  "Nortec",
-       [3]byte{124, 130, 116}: "Shenzhen Hikeen Technology CO.,LTD",
-       [3]byte{124, 131, 6}:   "Glen Dimplex Nordic as",
-       [3]byte{124, 139, 202}: "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{124, 141, 145}: "Shanghai Hongzhuo Information Technology co.,LTD",
-       [3]byte{124, 142, 228}: "Texas Instruments",
-       [3]byte{124, 145, 34}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{124, 148, 178}: "Philips Healthcare PCCI",
-       [3]byte{124, 149, 177}: "Aerohive Networks Inc.",
-       [3]byte{124, 149, 243}: "Cisco Systems, Inc",
-       [3]byte{124, 151, 99}:  "Openmatics s.r.o.",
-       [3]byte{124, 154, 155}: "VSE valencia smart energy",
-       [3]byte{124, 161, 93}:  "GN ReSound A/S",
-       [3]byte{124, 162, 55}:  "King Slide Technology CO., LTD.",
-       [3]byte{124, 162, 62}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{124, 162, 155}: "D.SignT GmbH & Co. KG",
-       [3]byte{124, 166, 29}:  "MHL, LLC",
-       [3]byte{124, 169, 125}: "Objenious",
-       [3]byte{124, 171, 37}:  "MESMO TECHNOLOGY INC.",
-       [3]byte{124, 172, 178}: "Bosch Software Innovations GmbH",
-       [3]byte{124, 173, 116}: "Cisco Systems, Inc",
-       [3]byte{124, 176, 62}:  "OSRAM GmbH",
-       [3]byte{124, 176, 194}: "Intel Corporate",
-       [3]byte{124, 177, 93}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{124, 177, 119}: "Satelco AG",
-       [3]byte{124, 178, 27}:  "Cisco SPVTG",
-       [3]byte{124, 178, 50}:  "Hui Zhou Gaoshengda Technology Co.,LTD",
-       [3]byte{124, 178, 92}:  "Acacia Communications",
-       [3]byte{124, 181, 66}:  "ACES Technology",
-       [3]byte{124, 183, 51}:  "ASKEY COMPUTER CORP",
-       [3]byte{124, 183, 123}: "Paradigm Electronics Inc",
-       [3]byte{124, 185, 96}:  "Shanghai X-Cheng telecom LTD",
-       [3]byte{124, 186, 204}: "IEEE Registration Authority",
-       [3]byte{124, 187, 111}: "Cosco Electronics Co., Ltd.",
-       [3]byte{124, 187, 138}: "Nintendo Co., Ltd.",
-       [3]byte{124, 189, 6}:   "AE REFUsol",
-       [3]byte{124, 191, 136}: "Mobilicom LTD",
-       [3]byte{124, 191, 177}: "ARRIS Group, Inc.",
-       [3]byte{124, 195, 161}: "Apple, Inc.",
-       [3]byte{124, 196, 239}: "Devialet",
-       [3]byte{124, 197, 55}:  "Apple, Inc.",
-       [3]byte{124, 198, 196}: "Kolff Computer Supplies b.v.",
-       [3]byte{124, 199, 9}:   "SHENZHEN RF-LINK TECHNOLOGY CO.,LTD.",
-       [3]byte{124, 200, 171}: "Acro Associates, Inc.",
-       [3]byte{124, 200, 208}: "TIANJIN YAAN TECHNOLOGY CO., LTD.",
-       [3]byte{124, 200, 215}: "Damalisk",
-       [3]byte{124, 201, 90}:  "Dell EMC",
-       [3]byte{124, 203, 13}:  "Antaira Technologies, LLC",
-       [3]byte{124, 203, 226}: "IEEE Registration Authority",
-       [3]byte{124, 204, 31}:  "SICHUAN TIANYI COMHEART TELECOMCO.,LTD",
-       [3]byte{124, 204, 184}: "Intel Corporate",
-       [3]byte{124, 205, 17}:  "MS-Magnet",
-       [3]byte{124, 205, 60}:  "Guangzhou Juzing Technology Co., Ltd",
-       [3]byte{124, 207, 207}: "Shanghai SEARI Intelligent System Co., Ltd",
-       [3]byte{124, 209, 195}: "Apple, Inc.",
-       [3]byte{124, 211, 10}:  "INVENTEC Corporation",
-       [3]byte{124, 215, 98}:  "Freestyle Technology Pty Ltd",
-       [3]byte{124, 216, 68}:  "Enmotus Inc",
-       [3]byte{124, 217, 254}: "New Cosmos Electric Co., Ltd.",
-       [3]byte{124, 218, 132}: "Dongnian Networks Inc.",
-       [3]byte{124, 221, 17}:  "Chongqing MAS SCI&TECH.Co.,Ltd",
-       [3]byte{124, 221, 32}:  "IOXOS Technologies S.A.",
-       [3]byte{124, 221, 118}: "Suzhou Hanming Technologies Co., Ltd.",
-       [3]byte{124, 221, 144}: "Shenzhen Ogemray Technology Co., Ltd.",
-       [3]byte{124, 224, 68}:  "NEON Inc",
-       [3]byte{124, 225, 255}: "Computer Performance, Inc. DBA Digital Loggers, Inc.",
-       [3]byte{124, 226, 202}: "Juniper Networks",
-       [3]byte{124, 228, 170}: "Private",
-       [3]byte{124, 229, 36}:  "Quirky, Inc.",
-       [3]byte{124, 229, 107}: "ESEN Optoelectronics Technology Co.,Ltd.",
-       [3]byte{124, 233, 124}: "ITEL MOBILE LIMITED",
-       [3]byte{124, 233, 211}: "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{124, 235, 127}: "Dmet Products Corp.",
-       [3]byte{124, 235, 174}: "Ridgeline Instruments",
-       [3]byte{124, 235, 234}: "ASCT",
-       [3]byte{124, 236, 121}: "Texas Instruments",
-       [3]byte{124, 237, 141}: "Microsoft",
-       [3]byte{124, 239, 24}:  "Creative Product Design Pty. Ltd.",
-       [3]byte{124, 239, 138}: "Inhon International Ltd.",
-       [3]byte{124, 240, 95}:  "Apple, Inc.",
-       [3]byte{124, 240, 152}: "Bee Beans Technologies, Inc.",
-       [3]byte{124, 240, 186}: "Linkwell Telesystems Pvt Ltd",
-       [3]byte{124, 244, 41}:  "NUUO Inc.",
-       [3]byte{124, 248, 84}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{124, 249, 14}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{124, 249, 92}:  "U.I. Lapp GmbH",
-       [3]byte{124, 250, 223}: "Apple, Inc.",
-       [3]byte{124, 252, 60}:  "Visteon Corporation",
-       [3]byte{124, 254, 40}:  "Salutron Inc.",
-       [3]byte{124, 254, 78}:  "Shenzhen Safe vision Technology Co.,LTD",
-       [3]byte{124, 254, 144}: "Mellanox Technologies, Inc.",
-       [3]byte{124, 255, 98}:  "Huizhou Super Electron Technology Co.,Ltd.",
-       [3]byte{128, 0, 11}:    "Intel Corporate",
-       [3]byte{128, 0, 16}:    "AT&T",
-       [3]byte{128, 0, 110}:   "Apple, Inc.",
-       [3]byte{128, 1, 132}:   "HTC Corporation",
-       [3]byte{128, 2, 223}:   "ORA Inc.",
-       [3]byte{128, 5, 223}:   "Montage Technology Group Limited",
-       [3]byte{128, 7, 162}:   "Esson Technology Inc.",
-       [3]byte{128, 9, 2}:     "Keysight Technologies, Inc.",
-       [3]byte{128, 10, 6}:    "COMTEC co.,ltd",
-       [3]byte{128, 10, 128}:  "IEEE Registration Authority",
-       [3]byte{128, 11, 81}:   "Chengdu XGimi Technology Co.,Ltd",
-       [3]byte{128, 13, 215}:  "Latticework, Inc",
-       [3]byte{128, 14, 36}:   "ForgetBox",
-       [3]byte{128, 19, 130}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{128, 20, 64}:   "Sunlit System Technology Corp",
-       [3]byte{128, 20, 168}:  "Guangzhou V-SOLUTION Electronic Technology Co., Ltd.",
-       [3]byte{128, 22, 183}:  "Brunel University",
-       [3]byte{128, 23, 125}:  "Nortel Networks",
-       [3]byte{128, 24, 68}:   "Dell Inc.",
-       [3]byte{128, 24, 167}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{128, 25, 52}:   "Intel Corporate",
-       [3]byte{128, 25, 103}:  "Shanghai Reallytek Information Technology  Co.,Ltd",
-       [3]byte{128, 25, 254}:  "JianLing Technology CO., LTD",
-       [3]byte{128, 29, 170}:  "Avaya Inc",
-       [3]byte{128, 31, 2}:    "Edimax Technology Co. Ltd.",
-       [3]byte{128, 32, 175}:  "Trade FIDES, a.s.",
-       [3]byte{128, 34, 117}:  "Beijing Beny Wave Technology Co Ltd",
-       [3]byte{128, 38, 137}:  "D-Link International",
-       [3]byte{128, 41, 148}:  "Technicolor CH USA Inc.",
-       [3]byte{128, 42, 168}:  "Ubiquiti Networks Inc.",
-       [3]byte{128, 42, 250}:  "Germaneers GmbH",
-       [3]byte{128, 45, 225}:  "Solarbridge Technologies",
-       [3]byte{128, 46, 20}:   "azeti Networks AG",
-       [3]byte{128, 47, 222}:  "Zurich Instruments AG",
-       [3]byte{128, 48, 220}:  "Texas Instruments",
-       [3]byte{128, 52, 87}:   "OT Systems Limited",
-       [3]byte{128, 55, 115}:  "NETGEAR",
-       [3]byte{128, 56, 150}:  "SHARP Corporation",
-       [3]byte{128, 56, 188}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{128, 56, 253}:  "LeapFrog Enterprises, Inc.",
-       [3]byte{128, 57, 229}:  "PATLITE CORPORATION",
-       [3]byte{128, 58, 10}:   "Integrated Device Technology (Malaysia) Sdn. Bhd.",
-       [3]byte{128, 58, 89}:   "AT&T",
-       [3]byte{128, 59, 42}:   "ABB Xiamen Low Voltage Equipment Co.,Ltd.",
-       [3]byte{128, 59, 154}:  "ghe-ces electronic ag",
-       [3]byte{128, 59, 246}:  "LOOK EASY INTERNATIONAL LIMITED",
-       [3]byte{128, 63, 93}:   "Winstars Technology Ltd",
-       [3]byte{128, 63, 214}:  "bytes at work AG",
-       [3]byte{128, 65, 78}:   "BBK EDUCATIONAL ELECTRONICS CORP.,LTD.",
-       [3]byte{128, 66, 124}:  "Adolf Tedsen GmbH & Co. KG",
-       [3]byte{128, 71, 49}:   "Packet Design, Inc.",
-       [3]byte{128, 72, 165}:  "SICHUAN TIANYI COMHEART TELECOMCO.,LTD",
-       [3]byte{128, 73, 113}:  "Apple, Inc.",
-       [3]byte{128, 75, 32}:   "Ventilation Control",
-       [3]byte{128, 78, 129}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{128, 79, 88}:   "ThinkEco, Inc.",
-       [3]byte{128, 80, 27}:   "Nokia Corporation",
-       [3]byte{128, 80, 103}:  "W & D TECHNOLOGY CORPORATION",
-       [3]byte{128, 86, 242}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{128, 87, 25}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{128, 88, 197}:  "NovaTec Kommunikationstechnik GmbH",
-       [3]byte{128, 88, 248}:  "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{128, 89, 253}:  "Noviga",
-       [3]byte{128, 90, 4}:    "LG Electronics (Mobile Communications)",
-       [3]byte{128, 94, 12}:   "YEALINK(XIAMEN) NETWORK TECHNOLOGY CO.,LTD.",
-       [3]byte{128, 94, 192}:  "YEALINK(XIAMEN) NETWORK TECHNOLOGY CO.,LTD.",
-       [3]byte{128, 96, 7}:    "RIM",
-       [3]byte{128, 97, 95}:   "Beijing Sinead Technology Co., Ltd.",
-       [3]byte{128, 97, 143}:  "Shenzhen sangfei consumer communications co.,ltd",
-       [3]byte{128, 100, 89}:  "Nimbus Inc.",
-       [3]byte{128, 101, 109}: "Samsung Electronics Co.,Ltd",
-       [3]byte{128, 101, 233}: "BenQ Corporation",
-       [3]byte{128, 102, 41}:  "Prescope Technologies CO.,LTD.",
-       [3]byte{128, 106, 176}: "Shenzhen TINNO Mobile Technology Corp.",
-       [3]byte{128, 108, 27}:  "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{128, 108, 139}: "KAESER KOMPRESSOREN AG",
-       [3]byte{128, 108, 188}: "NET New Electronic Technology GmbH",
-       [3]byte{128, 113, 31}:  "Juniper Networks",
-       [3]byte{128, 113, 122}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{128, 115, 159}: "KYOCERA CORPORATION",
-       [3]byte{128, 116, 89}:  "K's Co.,Ltd.",
-       [3]byte{128, 118, 147}: "Newag SA",
-       [3]byte{128, 121, 174}: "ShanDong Tecsunrise  Co.,Ltd",
-       [3]byte{128, 122, 127}: "ABB Genway Xiamen Electrical Equipment CO., LTD",
-       [3]byte{128, 122, 191}: "HTC Corporation",
-       [3]byte{128, 123, 30}:  "Corsair Components",
-       [3]byte{128, 123, 133}: "IEEE Registration Authority",
-       [3]byte{128, 125, 27}:  "Neosystem Co. Ltd.",
-       [3]byte{128, 125, 227}: "Chongqing Sichuan Instrument Microcircuit Co.LTD.",
-       [3]byte{128, 129, 165}: "TONGQING COMMUNICATION EQUIPMENT (SHENZHEN) Co.,Ltd",
-       [3]byte{128, 130, 135}: "ATCOM Technology Co.Ltd.",
-       [3]byte{128, 134, 152}: "Netronics Technologies Inc.",
-       [3]byte{128, 134, 242}: "Intel Corporate",
-       [3]byte{128, 137, 23}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{128, 139, 92}:  "Shenzhen Runhuicheng Technology Co., Ltd",
-       [3]byte{128, 140, 151}: "Kaonmedia CO., LTD.",
-       [3]byte{128, 141, 183}: "Hewlett Packard Enterprise",
-       [3]byte{128, 145, 42}:  "Lih Rong electronic Enterprise Co., Ltd.",
-       [3]byte{128, 145, 192}: "AgileMesh, Inc.",
-       [3]byte{128, 146, 159}: "Apple, Inc.",
-       [3]byte{128, 147, 147}: "Xapt GmbH",
-       [3]byte{128, 148, 108}: "TOKYO RADAR CORPORATION",
-       [3]byte{128, 150, 177}: "ARRIS Group, Inc.",
-       [3]byte{128, 150, 202}: "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{128, 151, 27}:  "Altenergy Power System,Inc.",
-       [3]byte{128, 155, 32}:  "Intel Corporate",
-       [3]byte{128, 159, 171}: "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{128, 160, 54}:  "Shanghai MXCHIP Information Technology Co., Ltd.",
-       [3]byte{128, 161, 171}: "Intellisis",
-       [3]byte{128, 161, 215}: "Shanghai DareGlobal Technologies Co.,Ltd",
-       [3]byte{128, 165, 137}: "AzureWave Technology Inc.",
-       [3]byte{128, 168, 93}:  "Osterhout Design Group",
-       [3]byte{128, 170, 164}: "USAG",
-       [3]byte{128, 172, 172}: "Juniper Networks",
-       [3]byte{128, 173, 103}: "Kasda Networks Inc",
-       [3]byte{128, 176, 61}:  "Apple, Inc.",
-       [3]byte{128, 178, 25}:  "ELEKTRON TECHNOLOGY UK LIMITED",
-       [3]byte{128, 178, 52}:  "Technicolor CH USA Inc.",
-       [3]byte{128, 178, 137}: "Forworld Electronics Ltd.",
-       [3]byte{128, 179, 42}:  "Alstom Grid",
-       [3]byte{128, 182, 134}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{128, 183, 8}:   "Blue Danube Systems, Inc",
-       [3]byte{128, 183, 9}:   "Viptela, Inc",
-       [3]byte{128, 185, 92}:  "ELFTECH Co., Ltd.",
-       [3]byte{128, 186, 172}: "TeleAdapt Ltd",
-       [3]byte{128, 186, 230}: "Neets",
-       [3]byte{128, 187, 235}: "Satmap Systems Ltd",
-       [3]byte{128, 190, 5}:   "Apple, Inc.",
-       [3]byte{128, 193, 110}: "Hewlett Packard",
-       [3]byte{128, 197, 230}: "Microsoft Corporation",
-       [3]byte{128, 197, 242}: "AzureWave Technology Inc.",
-       [3]byte{128, 198, 63}:  "Remec Broadband Wireless , LLC",
-       [3]byte{128, 198, 171}: "Technicolor CH USA Inc.",
-       [3]byte{128, 198, 202}: "Endian s.r.l.",
-       [3]byte{128, 199, 85}:  "Panasonic Appliances Company",
-       [3]byte{128, 200, 98}:  "Openpeak, Inc",
-       [3]byte{128, 206, 177}: "Theissen Training Systems GmbH",
-       [3]byte{128, 207, 65}:  "Lenovo Mobile Communication Technology Ltd.",
-       [3]byte{128, 208, 25}:  "Embed, Inc",
-       [3]byte{128, 208, 155}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{128, 209, 96}:  "Integrated Device Technology (Malaysia) Sdn. Bhd.",
-       [3]byte{128, 209, 139}: "Hangzhou I'converge Technology Co.,Ltd",
-       [3]byte{128, 210, 29}:  "AzureWave Technology Inc.",
-       [3]byte{128, 212, 51}:  "LzLabs GmbH",
-       [3]byte{128, 212, 165}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{128, 214, 5}:   "Apple, Inc.",
-       [3]byte{128, 215, 51}:  "QSR Automations, Inc.",
-       [3]byte{128, 219, 49}:  "Power Quotient International Co., Ltd.",
-       [3]byte{128, 224, 29}:  "Cisco Systems, Inc",
-       [3]byte{128, 228, 218}: "IEEE Registration Authority",
-       [3]byte{128, 230, 80}:  "Apple, Inc.",
-       [3]byte{128, 232, 111}: "Cisco Systems, Inc",
-       [3]byte{128, 234, 35}:  "Wistron Neweb Corporation",
-       [3]byte{128, 234, 150}: "Apple, Inc.",
-       [3]byte{128, 234, 202}: "Dialog Semiconductor Hellas SA",
-       [3]byte{128, 235, 119}: "Wistron Corporation",
-       [3]byte{128, 237, 44}:  "Apple, Inc.",
-       [3]byte{128, 238, 115}: "Shuttle Inc.",
-       [3]byte{128, 242, 94}:  "Kyynel",
-       [3]byte{128, 245, 3}:   "ARRIS Group, Inc.",
-       [3]byte{128, 245, 147}: "IRCO Sistemas de Telecomunicación S.A.",
-       [3]byte{128, 246, 46}:  "Hangzhou H3C Technologies Co., Limited",
-       [3]byte{128, 248, 235}: "RayTight",
-       [3]byte{128, 250, 91}:  "CLEVO CO.",
-       [3]byte{128, 251, 6}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{128, 255, 168}: "UNIDIS",
-       [3]byte{132, 0, 45}:    "PEGATRON CORPORATION",
-       [3]byte{132, 0, 210}:   "Sony Mobile Communications AB",
-       [3]byte{132, 1, 167}:   "Greyware Automation Products, Inc",
-       [3]byte{132, 4, 210}:   "Kirale Technologies SL",
-       [3]byte{132, 11, 45}:   "SAMSUNG ELECTRO MECHANICS CO., LTD.",
-       [3]byte{132, 15, 69}:   "Shanghai GMT Digital Technologies Co., Ltd",
-       [3]byte{132, 16, 13}:   "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{132, 17, 158}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{132, 22, 249}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{132, 23, 21}:   "GP Electronics (HK) Ltd.",
-       [3]byte{132, 23, 102}:  "Weifang GoerTek Technology Co.,Ltd.",
-       [3]byte{132, 24, 38}:   "Osram GmbH",
-       [3]byte{132, 24, 58}:   "Ruckus Wireless",
-       [3]byte{132, 24, 136}:  "Juniper Networks",
-       [3]byte{132, 27, 56}:   "Shenzhen Excelsecu Data Technology Co.,Ltd",
-       [3]byte{132, 27, 94}:   "NETGEAR",
-       [3]byte{132, 30, 38}:   "KERNEL-I Co.,LTD",
-       [3]byte{132, 32, 150}:  "SHENZHEN RF-LINK TECHNOLOGY CO.,LTD.",
-       [3]byte{132, 33, 65}:   "Shenzhen Ginwave Technologies Ltd.",
-       [3]byte{132, 33, 241}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{132, 36, 141}:  "Zebra Technologies Inc",
-       [3]byte{132, 37, 25}:   "Samsung Electronics",
-       [3]byte{132, 37, 63}:   "silex technology, Inc.",
-       [3]byte{132, 37, 164}:  "Tariox Limited",
-       [3]byte{132, 37, 219}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{132, 38, 21}:   "ADB Broadband Italia",
-       [3]byte{132, 38, 43}:   "Nokia",
-       [3]byte{132, 38, 144}:  "BEIJING THOUGHT SCIENCE CO.,LTD.",
-       [3]byte{132, 39, 206}:  "Corporation of the Presiding Bishop of The Church of Jesus Christ of Latter-day Saints",
-       [3]byte{132, 40, 90}:   "Saffron Solutions Inc",
-       [3]byte{132, 41, 20}:   "EMPORIA TELECOM Produktions- und VertriebsgesmbH & Co KG",
-       [3]byte{132, 41, 153}:  "Apple, Inc.",
-       [3]byte{132, 43, 43}:   "Dell Inc.",
-       [3]byte{132, 43, 80}:   "Huria Co.,Ltd.",
-       [3]byte{132, 43, 188}:  "Modelleisenbahn GmbH",
-       [3]byte{132, 44, 128}:  "Sichuan Changhong Electric Ltd.",
-       [3]byte{132, 46, 39}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{132, 47, 117}:  "Innokas Group",
-       [3]byte{132, 48, 229}:  "SkyHawke Technologies, LLC",
-       [3]byte{132, 50, 234}:  "ANHUI WANZTEN P&T CO., LTD",
-       [3]byte{132, 52, 151}:  "Hewlett Packard",
-       [3]byte{132, 54, 17}:   "hyungseul publishing networks",
-       [3]byte{132, 56, 53}:   "Apple, Inc.",
-       [3]byte{132, 56, 56}:   "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
-       [3]byte{132, 58, 75}:   "Intel Corporate",
-       [3]byte{132, 61, 198}:  "Cisco Systems, Inc",
-       [3]byte{132, 63, 78}:   "Tri-Tech Manufacturing, Inc.",
-       [3]byte{132, 64, 118}:  "Drivenets",
-       [3]byte{132, 65, 103}:  "Apple, Inc.",
-       [3]byte{132, 68, 100}:  "ServerU Inc",
-       [3]byte{132, 71, 101}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{132, 72, 35}:   "WOXTER TECHNOLOGY Co. Ltd",
-       [3]byte{132, 73, 21}:   "vArmour Networks, Inc.",
-       [3]byte{132, 75, 183}:  "Beijing Sankuai Online Technology Co.,Ltd",
-       [3]byte{132, 75, 245}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{132, 79, 3}:    "Ablelink Electronics Ltd",
-       [3]byte{132, 80, 154}:  "Easy Soft TV Co., Ltd",
-       [3]byte{132, 81, 129}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{132, 85, 165}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{132, 86, 156}:  "Coho Data, Inc.,",
-       [3]byte{132, 87, 135}:  "DVR C&C Co., Ltd.",
-       [3]byte{132, 90, 129}:  "ffly4u",
-       [3]byte{132, 91, 18}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{132, 92, 147}:  "Chabrier Services",
-       [3]byte{132, 93, 215}:  "Shenzhen Netcom Electronics Co.,Ltd",
-       [3]byte{132, 97, 160}:  "ARRIS Group, Inc.",
-       [3]byte{132, 98, 35}:   "Shenzhen Coship Electronics Co., Ltd.",
-       [3]byte{132, 98, 166}:  "EuroCB (Phils), Inc.",
-       [3]byte{132, 99, 214}:  "Microsoft Corporation",
-       [3]byte{132, 104, 62}:  "Intel Corporate",
-       [3]byte{132, 106, 237}: "Wireless Tsukamoto.,co.LTD",
-       [3]byte{132, 110, 177}: "Park Assist LLC",
-       [3]byte{132, 114, 7}:   "I&C Technology",
-       [3]byte{132, 115, 3}:   "Letv Mobile and Intelligent Information Technology (Beijing) Corporation Ltd.",
-       [3]byte{132, 116, 42}:  "zte corporation",
-       [3]byte{132, 118, 22}:  "Addat s.r.o.",
-       [3]byte{132, 119, 120}: "Cochlear Limited",
-       [3]byte{132, 120, 139}: "Apple, Inc.",
-       [3]byte{132, 120, 172}: "Cisco Systems, Inc",
-       [3]byte{132, 121, 51}:  "profichip GmbH",
-       [3]byte{132, 121, 115}: "Shanghai Baud Data Communication Co.,Ltd.",
-       [3]byte{132, 122, 136}: "HTC Corporation",
-       [3]byte{132, 123, 235}: "Dell Inc.",
-       [3]byte{132, 125, 80}:  "Holley Metering Limited",
-       [3]byte{132, 126, 64}:  "Texas Instruments",
-       [3]byte{132, 128, 45}:  "Cisco Systems, Inc",
-       [3]byte{132, 130, 244}: "Beijing Huasun Unicreate Technology Co., Ltd",
-       [3]byte{132, 131, 25}:  "Hangzhou Zero Zero Technology Co., Ltd.",
-       [3]byte{132, 131, 54}:  "Newrun",
-       [3]byte{132, 131, 113}: "Avaya Inc",
-       [3]byte{132, 132, 51}:  "Paradox Engineering SA",
-       [3]byte{132, 133, 6}:   "Apple, Inc.",
-       [3]byte{132, 133, 10}:  "Hella Sonnen- und Wetterschutztechnik GmbH",
-       [3]byte{132, 134, 243}: "Greenvity Communications",
-       [3]byte{132, 137, 173}: "Apple, Inc.",
-       [3]byte{132, 141, 132}: "Rajant Corporation",
-       [3]byte{132, 141, 199}: "Cisco SPVTG",
-       [3]byte{132, 142, 12}:  "Apple, Inc.",
-       [3]byte{132, 142, 150}: "Embertec Pty Ltd",
-       [3]byte{132, 142, 223}: "Sony Mobile Communications AB",
-       [3]byte{132, 143, 105}: "Dell Inc.",
-       [3]byte{132, 144, 0}:   "Arnold & Richter Cine Technik",
-       [3]byte{132, 147, 12}:  "InCoax Networks Europe AB",
-       [3]byte{132, 148, 140}: "Hitron Technologies. Inc",
-       [3]byte{132, 150, 129}: "Cathay Communication Co.,Ltd",
-       [3]byte{132, 150, 216}: "ARRIS Group, Inc.",
-       [3]byte{132, 151, 184}: "Memjet Inc.",
-       [3]byte{132, 152, 102}: "Samsung Electronics Co.,Ltd",
-       [3]byte{132, 156, 166}: "Arcadyan Technology Corporation",
-       [3]byte{132, 157, 100}: "SMC Corporation",
-       [3]byte{132, 157, 197}: "Centera Photonics Inc.",
-       [3]byte{132, 159, 181}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{132, 161, 52}:  "Apple, Inc.",
-       [3]byte{132, 161, 209}: "Sagemcom Broadband SAS",
-       [3]byte{132, 164, 35}:  "Sagemcom Broadband SAS",
-       [3]byte{132, 164, 102}: "Samsung Electronics Co.,Ltd",
-       [3]byte{132, 166, 200}: "Intel Corporate",
-       [3]byte{132, 167, 131}: "Alcatel Lucent",
-       [3]byte{132, 167, 136}: "Perples",
-       [3]byte{132, 168, 228}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{132, 169, 145}: "Cyber Trans Japan Co.,Ltd.",
-       [3]byte{132, 169, 196}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{132, 170, 156}: "MitraStar Technology Corp.",
-       [3]byte{132, 172, 164}: "Beijing Novel Super Digital TV Technology Co., Ltd",
-       [3]byte{132, 172, 251}: "Crouzet Automatismes",
-       [3]byte{132, 173, 88}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{132, 175, 31}:  "Beat System Service Co,. Ltd.",
-       [3]byte{132, 175, 236}: "BUFFALO.INC",
-       [3]byte{132, 177, 83}:  "Apple, Inc.",
-       [3]byte{132, 178, 97}:  "Cisco Systems, Inc",
-       [3]byte{132, 181, 23}:  "Cisco Systems, Inc",
-       [3]byte{132, 181, 65}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{132, 181, 156}: "Juniper Networks",
-       [3]byte{132, 184, 2}:   "Cisco Systems, Inc",
-       [3]byte{132, 186, 59}:  "CANON INC.",
-       [3]byte{132, 190, 82}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{132, 192, 239}: "Samsung Electronics Co.,Ltd",
-       [3]byte{132, 193, 193}: "Juniper Networks",
-       [3]byte{132, 194, 228}: "Jiangsu Qinheng Co., Ltd.",
-       [3]byte{132, 195, 232}: "Vaillant GmbH",
-       [3]byte{132, 199, 39}:  "Gnodal Ltd",
-       [3]byte{132, 199, 169}: "C3PO S.A.",
-       [3]byte{132, 199, 234}: "Sony Mobile Communications AB",
-       [3]byte{132, 200, 177}: "Incognito Software Systems Inc.",
-       [3]byte{132, 201, 178}: "D-Link International",
-       [3]byte{132, 205, 98}:  "ShenZhen IDWELL Technology CO.,Ltd",
-       [3]byte{132, 207, 191}: "Fairphone",
-       [3]byte{132, 211, 42}:  "IEEE 1905.1",
-       [3]byte{132, 212, 126}: "Aruba Networks",
-       [3]byte{132, 212, 200}: "Widex A/S",
-       [3]byte{132, 214, 208}: "Amazon Technologies Inc.",
-       [3]byte{132, 217, 49}:  "Hangzhou H3C Technologies Co., Limited",
-       [3]byte{132, 217, 200}: "Unipattern Co.,",
-       [3]byte{132, 219, 47}:  "Sierra Wireless Inc",
-       [3]byte{132, 219, 172}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{132, 219, 252}: "Nokia",
-       [3]byte{132, 221, 32}:  "Texas Instruments",
-       [3]byte{132, 221, 183}: "Cilag GmbH International",
-       [3]byte{132, 222, 61}:  "Crystal Vision Ltd",
-       [3]byte{132, 223, 12}:  "NET2GRID BV",
-       [3]byte{132, 223, 25}:  "Chuango Security Technology Corporation",
-       [3]byte{132, 224, 88}:  "ARRIS Group, Inc.",
-       [3]byte{132, 224, 244}: "IEEE Registration Authority",
-       [3]byte{132, 227, 35}:  "Green Wave Telecommunication SDN BHD",
-       [3]byte{132, 227, 39}:  "TAILYN TECHNOLOGIES INC",
-       [3]byte{132, 228, 217}: "Shenzhen NEED technology Ltd.",
-       [3]byte{132, 230, 41}:  "Bluwan SA",
-       [3]byte{132, 231, 20}:  "Liang Herng Enterprise,Co.Ltd.",
-       [3]byte{132, 234, 153}: "Vieworks",
-       [3]byte{132, 235, 24}:  "Texas Instruments",
-       [3]byte{132, 237, 51}:  "BBMC Co.,Ltd",
-       [3]byte{132, 239, 24}:  "Intel Corporate",
-       [3]byte{132, 241, 41}:  "Metrascale Inc.",
-       [3]byte{132, 244, 147}: "OMS spol. s.r.o.",
-       [3]byte{132, 246, 76}:  "Cross Point BV",
-       [3]byte{132, 246, 250}: "Miovision Technologies Incorporated",
-       [3]byte{132, 252, 172}: "Apple, Inc.",
-       [3]byte{132, 252, 254}: "Apple, Inc.",
-       [3]byte{132, 254, 158}: "RTC Industries, Inc.",
-       [3]byte{132, 254, 220}: "Borqs Beijing Ltd.",
-       [3]byte{136, 1, 242}:   "Vitec System Engineering Inc.",
-       [3]byte{136, 3, 85}:    "Arcadyan Technology Corporation",
-       [3]byte{136, 7, 75}:    "LG Electronics (Mobile Communications)",
-       [3]byte{136, 9, 5}:     "MTMCommunications",
-       [3]byte{136, 9, 175}:   "Masimo Corporation",
-       [3]byte{136, 15, 16}:   "Huami Information Technology Co.,Ltd.",
-       [3]byte{136, 15, 182}:  "Jabil Circuits India Pvt Ltd,-EHTP unit",
-       [3]byte{136, 16, 54}:   "Panodic(ShenZhen) Electronics Limted",
-       [3]byte{136, 18, 78}:   "Qualcomm Inc.",
-       [3]byte{136, 20, 43}:   "Protonic Holland",
-       [3]byte{136, 21, 68}:   "Cisco Meraki",
-       [3]byte{136, 24, 174}:  "Tamron Co., Ltd",
-       [3]byte{136, 27, 153}:  "SHENZHEN XIN FEI JIA ELECTRONIC CO. LTD.",
-       [3]byte{136, 29, 252}:  "Cisco Systems, Inc",
-       [3]byte{136, 31, 161}:  "Apple, Inc.",
-       [3]byte{136, 32, 18}:   "LMI Technologies",
-       [3]byte{136, 33, 227}:  "Nebusens, S.L.",
-       [3]byte{136, 35, 100}:  "Watchnet DVR Inc",
-       [3]byte{136, 35, 254}:  "TTTech Computertechnik AG",
-       [3]byte{136, 37, 44}:   "Arcadyan Technology Corporation",
-       [3]byte{136, 37, 147}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{136, 40, 179}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{136, 41, 80}:   "Dalian Netmoon Tech Develop Co.,Ltd",
-       [3]byte{136, 43, 215}:  "ADDÉNERGIE  TECHNOLOGIES",
-       [3]byte{136, 46, 90}:   "storONE",
-       [3]byte{136, 48, 138}:  "Murata Manufacturing Co., Ltd.",
-       [3]byte{136, 50, 155}:  "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
-       [3]byte{136, 51, 20}:   "Texas Instruments",
-       [3]byte{136, 51, 190}:  "Ivenix, Inc.",
-       [3]byte{136, 53, 76}:   "Transics",
-       [3]byte{136, 54, 18}:   "SRC Computers, LLC",
-       [3]byte{136, 54, 95}:   "LG Electronics (Mobile Communications)",
-       [3]byte{136, 54, 108}:  "EFM Networks",
-       [3]byte{136, 59, 139}:  "Cheering Connection Co. Ltd.",
-       [3]byte{136, 60, 28}:   "MERCURY CORPORATION",
-       [3]byte{136, 63, 211}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{136, 65, 87}:   "Shenzhen Atsmart Technology Co.,Ltd.",
-       [3]byte{136, 65, 193}:  "ORBISAT DA AMAZONIA IND E AEROL SA",
-       [3]byte{136, 65, 252}:  "AirTies Wireless Networks",
-       [3]byte{136, 67, 225}:  "Cisco Systems, Inc",
-       [3]byte{136, 68, 119}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{136, 68, 246}:  "Nokia Corporation",
-       [3]byte{136, 70, 42}:   "Telechips Inc.",
-       [3]byte{136, 74, 234}:  "Texas Instruments",
-       [3]byte{136, 75, 57}:   "Siemens AG, Healthcare Sector",
-       [3]byte{136, 76, 207}:  "Pulzze Systems, Inc",
-       [3]byte{136, 80, 221}:  "Infiniband Trade Association",
-       [3]byte{136, 81, 251}:  "Hewlett Packard",
-       [3]byte{136, 83, 46}:   "Intel Corporate",
-       [3]byte{136, 83, 149}:  "Apple, Inc.",
-       [3]byte{136, 83, 212}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{136, 87, 109}:  "XTA Electronics Ltd",
-       [3]byte{136, 87, 238}:  "BUFFALO.INC",
-       [3]byte{136, 90, 146}:  "Cisco Systems, Inc",
-       [3]byte{136, 91, 221}:  "Aerohive Networks Inc.",
-       [3]byte{136, 92, 71}:   "Alcatel Lucent",
-       [3]byte{136, 93, 144}:  "IEEE Registration Authority",
-       [3]byte{136, 93, 251}:  "zte corporation",
-       [3]byte{136, 97, 90}:   "Siano Mobile Silicon Ltd.",
-       [3]byte{136, 99, 223}:  "Apple, Inc.",
-       [3]byte{136, 102, 57}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{136, 102, 165}: "Apple, Inc.",
-       [3]byte{136, 104, 92}:  "Shenzhen ChuangDao & Perpetual Eternal Technology Co.,Ltd",
-       [3]byte{136, 106, 177}: "vivo Mobile Communication Co., Ltd.",
-       [3]byte{136, 106, 227}: "Alpha Networks Inc.",
-       [3]byte{136, 107, 15}:  "Bluegiga Technologies OY",
-       [3]byte{136, 107, 68}:  "Sunnovo International Limited",
-       [3]byte{136, 107, 110}: "Apple, Inc.",
-       [3]byte{136, 107, 118}: "CHINA HOPEFUL GROUP HOPEFUL ELECTRIC CO.,LTD",
-       [3]byte{136, 112, 51}:  "Hangzhou Silan Microelectronic Inc",
-       [3]byte{136, 112, 140}: "Lenovo Mobile Communication Technology Ltd.",
-       [3]byte{136, 112, 239}: "SC Professional Trading Co., Ltd.",
-       [3]byte{136, 113, 229}: "Amazon Technologies Inc.",
-       [3]byte{136, 115, 132}: "Toshiba",
-       [3]byte{136, 115, 152}: "K2E Tekpoint",
-       [3]byte{136, 117, 86}:  "Cisco Systems, Inc",
-       [3]byte{136, 117, 152}: "Samsung Electronics Co.,Ltd",
-       [3]byte{136, 120, 115}: "Intel Corporate",
-       [3]byte{136, 120, 156}: "Game Technologies SA",
-       [3]byte{136, 121, 91}:  "Konka Group Co., Ltd.",
-       [3]byte{136, 121, 126}: "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{136, 122, 49}:  "Velankani Electronics Pvt. Ltd.",
-       [3]byte{136, 127, 3}:   "Comper Technology Investment Limited",
-       [3]byte{136, 130, 121}: "Shenzhen RB-LINK Intelligent Technology Co.Ltd",
-       [3]byte{136, 131, 34}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{136, 131, 93}:  "FN-LINK TECHNOLOGY LIMITED",
-       [3]byte{136, 134, 3}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{136, 134, 160}: "Simton Technologies, Ltd.",
-       [3]byte{136, 134, 194}: "STABILO International GmbH",
-       [3]byte{136, 135, 23}:  "CANON INC.",
-       [3]byte{136, 135, 221}: "DarbeeVision Inc.",
-       [3]byte{136, 137, 20}:  "All Components Incorporated",
-       [3]byte{136, 137, 100}: "GSI Electronics Inc.",
-       [3]byte{136, 139, 93}:  "Storage Appliance Corporation",
-       [3]byte{136, 140, 25}:  "Brady Corp Asia Pacific Ltd",
-       [3]byte{136, 144, 141}: "Cisco Systems, Inc",
-       [3]byte{136, 145, 102}: "Viewcooper Corp.",
-       [3]byte{136, 145, 221}: "Racktivity",
-       [3]byte{136, 148, 113}: "Brocade Communications Systems, Inc.",
-       [3]byte{136, 148, 126}: "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{136, 148, 249}: "Gemicom Technology, Inc.",
-       [3]byte{136, 149, 185}: "Unified Packet Systems Crop",
-       [3]byte{136, 150, 118}: "TTC MARCONI s.r.o.",
-       [3]byte{136, 150, 182}: "Global Fire Equipment S.A.",
-       [3]byte{136, 150, 242}: "Valeo Schalter und Sensoren GmbH",
-       [3]byte{136, 151, 223}: "Entrypass Corporation Sdn. Bhd.",
-       [3]byte{136, 152, 33}:  "TERAON",
-       [3]byte{136, 155, 57}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{136, 156, 166}: "BTB Korea INC",
-       [3]byte{136, 159, 250}: "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{136, 160, 132}: "Formation Data Systems",
-       [3]byte{136, 162, 94}:  "Juniper Networks",
-       [3]byte{136, 162, 215}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{136, 163, 204}: "Amatis Controls",
-       [3]byte{136, 165, 189}: "QPCOM INC.",
-       [3]byte{136, 166, 198}: "Sagemcom Broadband SAS",
-       [3]byte{136, 167, 60}:  "Ragentek Technology Group",
-       [3]byte{136, 172, 193}: "Generiton Co., Ltd.",
-       [3]byte{136, 173, 67}:  "PEGATRON CORPORATION",
-       [3]byte{136, 173, 210}: "Samsung Electronics Co.,Ltd",
-       [3]byte{136, 174, 29}:  "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
-       [3]byte{136, 177, 17}:  "Intel Corporate",
-       [3]byte{136, 177, 104}: "Delta Control GmbH",
-       [3]byte{136, 177, 225}: "Mojo Networks, Inc.",
-       [3]byte{136, 180, 166}: "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{136, 182, 39}:  "Gembird Europe BV",
-       [3]byte{136, 184, 208}: "Dongguan Koppo Electronic Co.,Ltd",
-       [3]byte{136, 186, 127}: "Qfiednet Co., Ltd.",
-       [3]byte{136, 189, 120}: "Flaircomm Microelectronics,Inc.",
-       [3]byte{136, 191, 213}: "Simple Audio Ltd",
-       [3]byte{136, 194, 66}:  "Poynt Co.",
-       [3]byte{136, 194, 85}:  "Texas Instruments",
-       [3]byte{136, 195, 110}: "Beijing Ereneben lnformation Technology Limited",
-       [3]byte{136, 195, 179}: "SOVICO",
-       [3]byte{136, 198, 38}:  "Logitech, Inc",
-       [3]byte{136, 198, 99}:  "Apple, Inc.",
-       [3]byte{136, 201, 208}: "LG Electronics (Mobile Communications)",
-       [3]byte{136, 203, 135}: "Apple, Inc.",
-       [3]byte{136, 203, 165}: "Suzhou Torchstar Intelligent Technology Co.,Ltd",
-       [3]byte{136, 204, 69}:  "Skyworth Digital Technology(Shenzhen) Co.,Ltd",
-       [3]byte{136, 206, 250}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{136, 207, 152}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{136, 208, 57}:  "TCL Technoly Electronics(Huizhou).,Ltd",
-       [3]byte{136, 209, 113}: "BEGHELLI S.P.A",
-       [3]byte{136, 210, 116}: "zte corporation",
-       [3]byte{136, 211, 123}: "FirmTek, LLC",
-       [3]byte{136, 213, 12}:  "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{136, 215, 188}: "DEP Company",
-       [3]byte{136, 215, 246}: "ASUSTek COMPUTER INC.",
-       [3]byte{136, 217, 98}:  "Canopus Systems US LLC",
-       [3]byte{136, 218, 26}:  "Redpine Signals, Inc.",
-       [3]byte{136, 220, 150}: "SENAO Networks, Inc.",
-       [3]byte{136, 221, 121}: "Voltaire",
-       [3]byte{136, 222, 169}: "Roku, Inc.",
-       [3]byte{136, 224, 160}: "Shenzhen VisionSTOR Technologies Co., Ltd",
-       [3]byte{136, 224, 243}: "Juniper Networks",
-       [3]byte{136, 225, 97}:  "Art Beijing Science and Technology Development Co., Ltd.",
-       [3]byte{136, 227, 171}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{136, 230, 3}:   "Avotek corporation",
-       [3]byte{136, 230, 40}:  "Shenzhen Kezhonglong Optoelectronic Technology Co.,Ltd",
-       [3]byte{136, 231, 18}:  "Whirlpool Corporation",
-       [3]byte{136, 231, 166}: "iKnowledge Integration Corp.",
-       [3]byte{136, 232, 127}: "Apple, Inc.",
-       [3]byte{136, 232, 248}: "YONG TAI ELECTRONIC (DONGGUAN) LTD.",
-       [3]byte{136, 233, 23}:  "Tamaggo",
-       [3]byte{136, 237, 28}:  "Cudo Communication Co., Ltd.",
-       [3]byte{136, 240, 49}:  "Cisco Systems, Inc",
-       [3]byte{136, 240, 119}: "Cisco Systems, Inc",
-       [3]byte{136, 244, 136}: "cellon communications technology(shenzhen)Co.,Ltd.",
-       [3]byte{136, 244, 144}: "Jetmobile Pte Ltd",
-       [3]byte{136, 247, 199}: "Technicolor CH USA Inc.",
-       [3]byte{136, 253, 21}:  "LINEEYE CO., LTD",
-       [3]byte{136, 254, 214}: "ShangHai WangYong Software Co., Ltd.",
-       [3]byte{140, 0, 109}:   "Apple, Inc.",
-       [3]byte{140, 4, 255}:   "Technicolor CH USA Inc.",
-       [3]byte{140, 5, 81}:    "Koubachi AG",
-       [3]byte{140, 7, 140}:   "FLOW DATA INC",
-       [3]byte{140, 8, 139}:   "Remote Solution",
-       [3]byte{140, 9, 244}:   "ARRIS Group, Inc.",
-       [3]byte{140, 12, 144}:  "Ruckus Wireless",
-       [3]byte{140, 12, 163}:  "Amper",
-       [3]byte{140, 13, 118}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{140, 14, 227}:  "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{140, 15, 111}:  "PEGATRON CORPORATION",
-       [3]byte{140, 15, 131}:  "Angie Hospitality LLC",
-       [3]byte{140, 16, 212}:  "Sagemcom Broadband SAS",
-       [3]byte{140, 17, 203}:  "ABUS Security-Center GmbH & Co. KG",
-       [3]byte{140, 20, 125}:  "IEEE Registration Authority",
-       [3]byte{140, 24, 217}:  "Shenzhen RF Technology Co., Ltd",
-       [3]byte{140, 25, 45}:   "IEEE Registration Authority",
-       [3]byte{140, 26, 191}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{140, 31, 148}:  "RF Surgical System Inc.",
-       [3]byte{140, 33, 10}:   "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{140, 37, 5}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{140, 39, 29}:   "QuantHouse",
-       [3]byte{140, 39, 138}:  "Vocollect Inc",
-       [3]byte{140, 41, 55}:   "Apple, Inc.",
-       [3]byte{140, 45, 170}:  "Apple, Inc.",
-       [3]byte{140, 47, 57}:   "IBA Dosimetry GmbH",
-       [3]byte{140, 47, 166}:  "Solid Optics B.V.",
-       [3]byte{140, 51, 48}:   "EmFirst Co., Ltd.",
-       [3]byte{140, 51, 87}:   "HiteVision Digital Media Technology Co.,Ltd.",
-       [3]byte{140, 52, 253}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{140, 57, 92}:   "Bit4id Srl",
-       [3]byte{140, 58, 227}:  "LG Electronics (Mobile Communications)",
-       [3]byte{140, 59, 173}:  "NETGEAR",
-       [3]byte{140, 60, 7}:    "Skiva Technologies, Inc.",
-       [3]byte{140, 60, 74}:   "NAKAYO Inc",
-       [3]byte{140, 65, 242}:  "RDA Technologies Ltd.",
-       [3]byte{140, 68, 53}:   "Shanghai BroadMobi Communication Technology Co., Ltd.",
-       [3]byte{140, 69, 0}:    "Murata Manufacturing Co., Ltd.",
-       [3]byte{140, 74, 238}:  "GIGA TMS INC",
-       [3]byte{140, 75, 89}:   "3D Imaging & Simulations Corp",
-       [3]byte{140, 76, 220}:  "PLANEX COMMUNICATIONS INC.",
-       [3]byte{140, 77, 185}:  "Unmonday Ltd",
-       [3]byte{140, 77, 234}:  "Cerio Corporation",
-       [3]byte{140, 81, 5}:    "Shenzhen ireadygo Information Technology CO.,LTD.",
-       [3]byte{140, 83, 247}:  "A&D ENGINEERING CO., LTD.",
-       [3]byte{140, 84, 29}:   "LGE",
-       [3]byte{140, 86, 157}:  "Imaging Solutions Group",
-       [3]byte{140, 86, 197}:  "Nintendo Co., Ltd.",
-       [3]byte{140, 87, 155}:  "Wistron Neweb Corporation",
-       [3]byte{140, 87, 253}:  "LVX Western",
-       [3]byte{140, 88, 119}:  "Apple, Inc.",
-       [3]byte{140, 89, 139}:  "C Technologies AB",
-       [3]byte{140, 89, 195}:  "ADB Italia",
-       [3]byte{140, 90, 240}:  "Exeltech Solar Products",
-       [3]byte{140, 91, 240}:  "ARRIS Group, Inc.",
-       [3]byte{140, 92, 161}:  "d-broad,INC",
-       [3]byte{140, 93, 96}:   "UCI Corporation Co.,Ltd.",
-       [3]byte{140, 95, 72}:   "Continental Intelligent Transportation Systems LLC",
-       [3]byte{140, 95, 223}:  "Beijing Railway Signal Factory",
-       [3]byte{140, 96, 79}:   "Cisco Systems, Inc",
-       [3]byte{140, 96, 231}:  "MPGIO CO.,LTD",
-       [3]byte{140, 97, 2}:    "Beijing Baofengmojing Technologies Co., Ltd",
-       [3]byte{140, 100, 11}:  "Beyond Devices d.o.o.",
-       [3]byte{140, 100, 34}:  "Sony Mobile Communications AB",
-       [3]byte{140, 104, 120}: "Nortek-AS",
-       [3]byte{140, 106, 228}: "Viogem Limited",
-       [3]byte{140, 109, 80}:  "SHENZHEN MTC CO LTD",
-       [3]byte{140, 112, 90}:  "Intel Corporate",
-       [3]byte{140, 113, 248}: "Samsung Electronics Co.,Ltd",
-       [3]byte{140, 115, 110}: "FUJITSU LIMITED",
-       [3]byte{140, 118, 193}: "Goden Tech Limited",
-       [3]byte{140, 119, 18}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{140, 119, 22}:  "LONGCHEER TELECOMMUNICATION LIMITED",
-       [3]byte{140, 120, 215}: "SHENZHEN FAST TECHNOLOGIES CO.,LTD",
-       [3]byte{140, 121, 103}: "zte corporation",
-       [3]byte{140, 123, 157}: "Apple, Inc.",
-       [3]byte{140, 124, 146}: "Apple, Inc.",
-       [3]byte{140, 124, 181}: "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{140, 124, 255}: "Brocade Communications Systems, Inc.",
-       [3]byte{140, 126, 179}: "Lytro, Inc.",
-       [3]byte{140, 127, 59}:  "ARRIS Group, Inc.",
-       [3]byte{140, 130, 168}: "Insigma Technology Co.,Ltd",
-       [3]byte{140, 131, 157}: "SHENZHEN XINYUPENG ELECTRONIC TECHNOLOGY CO., LTD",
-       [3]byte{140, 132, 1}:   "Private",
-       [3]byte{140, 133, 128}: "Smart Innovation LLC",
-       [3]byte{140, 133, 144}: "Apple, Inc.",
-       [3]byte{140, 135, 59}:  "Leica Camera AG",
-       [3]byte{140, 137, 122}: "AUGTEK",
-       [3]byte{140, 137, 165}: "Micro-Star INT'L CO., LTD",
-       [3]byte{140, 138, 110}: "ESTUN AUTOMATION TECHNOLOY CO., LTD",
-       [3]byte{140, 138, 187}: "Beijing Orient View Technology Co., Ltd.",
-       [3]byte{140, 139, 131}: "Texas Instruments",
-       [3]byte{140, 142, 118}: "taskit GmbH",
-       [3]byte{140, 142, 242}: "Apple, Inc.",
-       [3]byte{140, 143, 233}: "Apple, Inc.",
-       [3]byte{140, 144, 211}: "Nokia",
-       [3]byte{140, 145, 9}:   "Toyoshima Electric Technoeogy(Suzhou) Co.,Ltd.",
-       [3]byte{140, 146, 54}:  "Aus.Linx Technology Co., Ltd.",
-       [3]byte{140, 147, 81}:  "Jigowatts Inc.",
-       [3]byte{140, 148, 207}: "Encell Technology, Inc.",
-       [3]byte{140, 153, 230}: "TCT mobile ltd",
-       [3]byte{140, 159, 59}:  "Qingdao Hisense Communications Co.,Ltd.",
-       [3]byte{140, 160, 72}:  "Beijing NeTopChip Technology Co.,LTD",
-       [3]byte{140, 162, 253}: "Starry, Inc.",
-       [3]byte{140, 165, 161}: "Oregano Systems - Design & Consulting GmbH",
-       [3]byte{140, 166, 223}: "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{140, 169, 130}: "Intel Corporate",
-       [3]byte{140, 171, 142}: "Shanghai Feixun Communication Co.,Ltd.",
-       [3]byte{140, 174, 76}:  "Plugable Technologies",
-       [3]byte{140, 174, 137}: "Y-cam Solutions Ltd",
-       [3]byte{140, 176, 148}: "Airtech I&C Co., Ltd",
-       [3]byte{140, 182, 79}:  "Cisco Systems, Inc",
-       [3]byte{140, 183, 247}: "Shenzhen UniStrong Science & Technology Co., Ltd",
-       [3]byte{140, 184, 44}:  "IPitomy Communications",
-       [3]byte{140, 184, 100}: "AcSiP Technology Corp.",
-       [3]byte{140, 190, 190}: "Xiaomi Communications Co Ltd",
-       [3]byte{140, 191, 157}: "Shanghai Xinyou Information Technology Ltd. Co.",
-       [3]byte{140, 191, 166}: "Samsung Electronics Co.,Ltd",
-       [3]byte{140, 193, 33}:  "Panasonic Corporation AVC Networks Company",
-       [3]byte{140, 197, 225}: "ShenZhen Konka Telecommunication Technology Co.,Ltd",
-       [3]byte{140, 198, 97}:  "Current, powered by GE",
-       [3]byte{140, 199, 170}: "Radinet Communications Inc.",
-       [3]byte{140, 199, 208}: "zhejiang ebang communication co.,ltd",
-       [3]byte{140, 200, 205}: "Samsung Electronics Co.,Ltd",
-       [3]byte{140, 200, 244}: "IEEE Registration Authority",
-       [3]byte{140, 205, 162}: "ACTP, Inc.",
-       [3]byte{140, 205, 232}: "Nintendo Co., Ltd.",
-       [3]byte{140, 207, 9}:   "Dell EMC",
-       [3]byte{140, 207, 92}:  "BEFEGA GmbH",
-       [3]byte{140, 209, 123}: "CG Mobile",
-       [3]byte{140, 210, 233}: "YOKOTE SEIKO CO., LTD.",
-       [3]byte{140, 211, 162}: "VisSim AS",
-       [3]byte{140, 212, 142}: "ITEL MOBILE LIMITED",
-       [3]byte{140, 214, 40}:  "Ikor Metering",
-       [3]byte{140, 219, 37}:  "ESG Solutions",
-       [3]byte{140, 220, 212}: "Hewlett Packard",
-       [3]byte{140, 221, 141}: "Wifly-City System Inc.",
-       [3]byte{140, 222, 82}:  "ISSC Technologies Corp.",
-       [3]byte{140, 222, 153}: "Comlab Inc.",
-       [3]byte{140, 223, 157}: "NEC Corporation",
-       [3]byte{140, 224, 129}: "zte corporation",
-       [3]byte{140, 225, 23}:  "zte corporation",
-       [3]byte{140, 226, 218}: "Circle Media Inc",
-       [3]byte{140, 227, 142}: "Toshiba Memory Corporation",
-       [3]byte{140, 231, 72}:  "Private",
-       [3]byte{140, 231, 140}: "DK Networks",
-       [3]byte{140, 231, 179}: "Sonardyne International Ltd",
-       [3]byte{140, 234, 27}:  "Edgecore Networks Corporation",
-       [3]byte{140, 235, 198}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{140, 236, 75}:  "Dell Inc.",
-       [3]byte{140, 238, 198}: "Precepscion Pty. Ltd.",
-       [3]byte{140, 242, 40}:  "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.",
-       [3]byte{140, 245, 163}: "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
-       [3]byte{140, 248, 19}:  "ORANGE POLSKA",
-       [3]byte{140, 249, 69}:  "Power Automation pte Ltd",
-       [3]byte{140, 249, 201}: "MESADA Technology Co.,Ltd.",
-       [3]byte{140, 250, 186}: "Apple, Inc.",
-       [3]byte{140, 253, 240}: "Qualcomm Inc.",
-       [3]byte{140, 254, 180}: "VSOONTECH ELECTRONICS CO., LIMITED",
-       [3]byte{144, 0, 78}:    "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{144, 0, 219}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{144, 1, 59}:    "Sagemcom Broadband SAS",
-       [3]byte{144, 2, 138}:   "Shenzhen Shidean Legrand Electronic Products Co.,Ltd",
-       [3]byte{144, 2, 169}:   "Zhejiang Dahua Technology Co., Ltd.",
-       [3]byte{144, 3, 37}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{144, 3, 183}:   "PARROT SA",
-       [3]byte{144, 6, 40}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{144, 9, 23}:    "Far-sighted mobile",
-       [3]byte{144, 10, 26}:   "Taicang T&W Electronics",
-       [3]byte{144, 10, 57}:   "Wiio, Inc.",
-       [3]byte{144, 10, 58}:   "PSG Plastic Service GmbH",
-       [3]byte{144, 11, 193}:  "Sprocomm Technologies CO.,Ltd",
-       [3]byte{144, 12, 180}:  "Alinket Electronic Technology Co., Ltd",
-       [3]byte{144, 13, 102}:  "Digimore Electronics Co., Ltd",
-       [3]byte{144, 13, 203}:  "ARRIS Group, Inc.",
-       [3]byte{144, 14, 131}:  "Monico Monitoring, Inc.",
-       [3]byte{144, 23, 17}:   "Hagenuk Marinekommunikation GmbH",
-       [3]byte{144, 23, 155}:  "Nanomegas",
-       [3]byte{144, 23, 172}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{144, 24, 94}:   "Apex Tool Group GmbH & Co OHG",
-       [3]byte{144, 24, 124}:  "SAMSUNG ELECTRO MECHANICS CO., LTD.",
-       [3]byte{144, 24, 174}:  "Shanghai Meridian Technologies, Co. Ltd.",
-       [3]byte{144, 25, 0}:    "SCS SA",
-       [3]byte{144, 26, 202}:  "ARRIS Group, Inc.",
-       [3]byte{144, 27, 14}:   "Fujitsu Technology Solutions GmbH",
-       [3]byte{144, 29, 39}:   "zte corporation",
-       [3]byte{144, 30, 221}:  "GREAT COMPUTER CORPORATION",
-       [3]byte{144, 32, 58}:   "BYD Precision Manufacture Co.,Ltd",
-       [3]byte{144, 32, 131}:  "General Engine Management Systems Ltd.",
-       [3]byte{144, 33, 6}:    "BSkyB Ltd",
-       [3]byte{144, 33, 85}:   "HTC Corporation",
-       [3]byte{144, 33, 129}:  "Shanghai Huaqin Telecom Technology Co.,Ltd",
-       [3]byte{144, 35, 236}:  "Availink, Inc.",
-       [3]byte{144, 39, 228}:  "Apple, Inc.",
-       [3]byte{144, 43, 52}:   "GIGA-BYTE TECHNOLOGY CO.,LTD.",
-       [3]byte{144, 44, 199}:  "C-MAX Asia Limited",
-       [3]byte{144, 46, 28}:   "Intel Corporate",
-       [3]byte{144, 46, 135}:  "LabJack",
-       [3]byte{144, 49, 205}:  "Onyx Healthcare Inc.",
-       [3]byte{144, 50, 75}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{144, 52, 43}:   "Gatekeeper Systems, Inc.",
-       [3]byte{144, 52, 252}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{144, 53, 110}:  "Vodafone Omnitel N.V.",
-       [3]byte{144, 56, 9}:    "Ericsson AB",
-       [3]byte{144, 56, 223}:  "Changzhou Tiannengbo System Co. Ltd.",
-       [3]byte{144, 58, 160}:  "Nokia",
-       [3]byte{144, 58, 230}:  "PARROT SA",
-       [3]byte{144, 60, 146}:  "Apple, Inc.",
-       [3]byte{144, 60, 174}:  "Yunnan KSEC Digital Technology Co.,Ltd.",
-       [3]byte{144, 61, 90}:   "Shenzhen Wision Technology Holding Limited",
-       [3]byte{144, 61, 107}:  "Zicon Technology Corp.",
-       [3]byte{144, 61, 189}:  "SECURE METERS LIMITED",
-       [3]byte{144, 62, 171}:  "ARRIS Group, Inc.",
-       [3]byte{144, 69, 6}:    "Tokyo Boeki Medisys Inc.",
-       [3]byte{144, 70, 162}:  "Tedipay UK Ltd",
-       [3]byte{144, 70, 183}:  "Vadaro Pte Ltd",
-       [3]byte{144, 71, 22}:   "RORZE CORPORATION",
-       [3]byte{144, 72, 154}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{144, 73, 250}:  "Intel Corporate",
-       [3]byte{144, 76, 229}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{144, 77, 74}:   "Sagemcom Broadband SAS",
-       [3]byte{144, 78, 43}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{144, 78, 145}:  "IEEE Registration Authority",
-       [3]byte{144, 80, 90}:   "unGlue, Inc",
-       [3]byte{144, 80, 123}:  "Advanced PANMOBIL Systems GmbH & Co. KG",
-       [3]byte{144, 80, 202}:  "Hitron Technologies. Inc",
-       [3]byte{144, 81, 63}:   "Elettronica Santerno SpA",
-       [3]byte{144, 84, 70}:   "TES ELECTRONIC SOLUTIONS",
-       [3]byte{144, 85, 174}:  "Ericsson, EAB/RWI/K",
-       [3]byte{144, 86, 130}:  "Lenbrook Industries Limited",
-       [3]byte{144, 86, 146}:  "Autotalks Ltd.",
-       [3]byte{144, 89, 175}:  "Texas Instruments",
-       [3]byte{144, 92, 68}:   "Compal Broadband Networks, Inc.",
-       [3]byte{144, 95, 46}:   "TCT mobile ltd",
-       [3]byte{144, 95, 141}:  "modas GmbH",
-       [3]byte{144, 96, 241}:  "Apple, Inc.",
-       [3]byte{144, 97, 12}:   "Fida International (S) Pte Ltd",
-       [3]byte{144, 97, 174}:  "Intel Corporate",
-       [3]byte{144, 103, 23}:  "Alphion India Private Limited",
-       [3]byte{144, 103, 28}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{144, 103, 181}: "Alcatel-Lucent",
-       [3]byte{144, 103, 243}: "Alcatel Lucent",
-       [3]byte{144, 104, 195}: "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{144, 108, 172}: "Fortinet, Inc.",
-       [3]byte{144, 109, 200}: "DLG Automação Industrial Ltda",
-       [3]byte{144, 110, 187}: "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{144, 111, 24}:  "Private",
-       [3]byte{144, 111, 169}: "NANJING PUTIAN TELECOMMUNICATIONS TECHNOLOGY CO.,LTD.",
-       [3]byte{144, 112, 37}:  "Garea Microsys Co.,Ltd.",
-       [3]byte{144, 112, 101}: "Texas Instruments",
-       [3]byte{144, 114, 64}:  "Apple, Inc.",
-       [3]byte{144, 114, 130}: "Sagemcom Broadband SAS",
-       [3]byte{144, 121, 144}: "Benchmark Electronics Romania SRL",
-       [3]byte{144, 122, 10}:  "Gebr. Bode GmbH & Co KG",
-       [3]byte{144, 122, 40}:  "Beijing Morncloud Information And Technology Co. Ltd.",
-       [3]byte{144, 122, 241}: "Wally",
-       [3]byte{144, 126, 186}: "UTEK TECHNOLOGY (SHENZHEN) CO.,LTD",
-       [3]byte{144, 127, 97}:  "Chicony Electronics Co., Ltd.",
-       [3]byte{144, 130, 96}:  "IEEE 1904.1 Working Group",
-       [3]byte{144, 131, 122}: "General Electric Water & Process Technologies",
-       [3]byte{144, 132, 13}:  "Apple, Inc.",
-       [3]byte{144, 132, 43}:  "LEGO System A/S",
-       [3]byte{144, 134, 116}: "SICHUAN TIANYI COMHEART TELECOMCO., LTD",
-       [3]byte{144, 136, 162}: "IONICS TECHNOLOGY ME LTDA",
-       [3]byte{144, 140, 9}:   "Total Phase",
-       [3]byte{144, 140, 68}:  "H.K ZONGMU TECHNOLOGY CO., LTD.",
-       [3]byte{144, 140, 99}:  "GZ Weedong Networks Technology Co. , Ltd",
-       [3]byte{144, 141, 29}:  "GH Technologies",
-       [3]byte{144, 141, 108}: "Apple, Inc.",
-       [3]byte{144, 141, 120}: "D-Link International",
-       [3]byte{144, 143, 207}: "UNO System Co., Ltd",
-       [3]byte{144, 144, 60}:  "TRISON TECHNOLOGY CORPORATION",
-       [3]byte{144, 144, 96}:  "RSI VIDEO TECHNOLOGIES",
-       [3]byte{144, 146, 180}: "Diehl BGT Defence GmbH & Co. KG",
-       [3]byte{144, 148, 228}: "D-Link International",
-       [3]byte{144, 151, 213}: "Espressif Inc.",
-       [3]byte{144, 151, 243}: "Samsung Electronics Co.,Ltd",
-       [3]byte{144, 152, 100}: "Impex-Sat GmbH&amp;Co KG",
-       [3]byte{144, 153, 22}:  "ELVEES NeoTek OJSC",
-       [3]byte{144, 157, 125}: "ARRIS Group, Inc.",
-       [3]byte{144, 157, 224}: "Newland Design + Assoc. Inc.",
-       [3]byte{144, 159, 51}:  "EFM Networks",
-       [3]byte{144, 159, 67}:  "Accutron Instruments Inc.",
-       [3]byte{144, 162, 16}:  "United Telecoms Ltd",
-       [3]byte{144, 162, 218}: "GHEO SA",
-       [3]byte{144, 163, 101}: "HMD Global Oy",
-       [3]byte{144, 164, 106}: "SISNET CO., LTD",
-       [3]byte{144, 164, 222}: "Wistron Neweb Corporation",
-       [3]byte{144, 166, 47}:  "NAVER",
-       [3]byte{144, 167, 131}: "JSW PACIFIC CORPORATION",
-       [3]byte{144, 167, 193}: "Pakedge Device and Software Inc.",
-       [3]byte{144, 172, 63}:  "BrightSign LLC",
-       [3]byte{144, 173, 247}: "vivo Mobile Communication Co., Ltd.",
-       [3]byte{144, 174, 27}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{144, 176, 237}: "Apple, Inc.",
-       [3]byte{144, 177, 28}:  "Dell Inc.",
-       [3]byte{144, 177, 52}:  "ARRIS Group, Inc.",
-       [3]byte{144, 177, 224}: "Beijing Nebula Link Technology Co., Ltd",
-       [3]byte{144, 178, 31}:  "Apple, Inc.",
-       [3]byte{144, 182, 134}: "Murata Manufacturing Co., Ltd.",
-       [3]byte{144, 184, 208}: "Joyent, Inc.",
-       [3]byte{144, 185, 49}:  "Apple, Inc.",
-       [3]byte{144, 185, 125}: "Johnson Outdoors Marine Electronics d/b/a Minnkota",
-       [3]byte{144, 193, 21}:  "Sony Mobile Communications AB",
-       [3]byte{144, 193, 198}: "Apple, Inc.",
-       [3]byte{144, 195, 95}:  "Nanjing Jiahao Technology Co., Ltd.",
-       [3]byte{144, 198, 130}: "IEEE Registration Authority",
-       [3]byte{144, 199, 146}: "ARRIS Group, Inc.",
-       [3]byte{144, 199, 216}: "zte corporation",
-       [3]byte{144, 201, 155}: "Recore Systems",
-       [3]byte{144, 204, 36}:  "Synaptics, Inc",
-       [3]byte{144, 205, 182}: "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{144, 207, 21}:  "Nokia Corporation",
-       [3]byte{144, 207, 111}: "Dlogixs Co Ltd",
-       [3]byte{144, 207, 125}: "Qingdao Hisense Communications Co.,Ltd.",
-       [3]byte{144, 209, 27}:  "Palomar Medical Technologies",
-       [3]byte{144, 215, 79}:  "Bookeen",
-       [3]byte{144, 215, 190}: "Wavelab Global Inc.",
-       [3]byte{144, 215, 235}: "Texas Instruments",
-       [3]byte{144, 216, 82}:  "Comtec Co., Ltd.",
-       [3]byte{144, 216, 243}: "zte corporation",
-       [3]byte{144, 217, 44}:  "HUG-WITSCHI AG",
-       [3]byte{144, 218, 78}:  "AVANU",
-       [3]byte{144, 218, 106}: "FOCUS H&S Co., Ltd.",
-       [3]byte{144, 219, 70}:  "E-LEAD ELECTRONIC CO., LTD",
-       [3]byte{144, 223, 183}: "s.m.s smart microwave sensors GmbH",
-       [3]byte{144, 223, 251}: "HOMERIDER SYSTEMS",
-       [3]byte{144, 224, 240}: "IEEE 1722a Working Group",
-       [3]byte{144, 226, 186}: "Intel Corporate",
-       [3]byte{144, 230, 186}: "ASUSTek COMPUTER INC.",
-       [3]byte{144, 231, 196}: "HTC Corporation",
-       [3]byte{144, 234, 96}:  "SPI Lasers Ltd",
-       [3]byte{144, 236, 80}:  "C.O.B.O. SPA",
-       [3]byte{144, 238, 217}: "UNIVERSAL DE DESARROLLOS ELECTRÓNICOS, SA",
-       [3]byte{144, 239, 104}: "Zyxel Communications Corporation",
-       [3]byte{144, 240, 82}:  "MEIZU Technology Co., Ltd.",
-       [3]byte{144, 241, 170}: "Samsung Electronics Co.,Ltd",
-       [3]byte{144, 241, 176}: "Hangzhou Anheng Info&Tech CO.,LTD",
-       [3]byte{144, 242, 120}: "Radius Gateway",
-       [3]byte{144, 243, 5}:   "HUMAX Co., Ltd.",
-       [3]byte{144, 243, 183}: "Kirisun Communications Co., Ltd.",
-       [3]byte{144, 244, 193}: "Rand McNally",
-       [3]byte{144, 246, 82}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{144, 247, 47}:  "Phillips Machine & Welding Co., Inc.",
-       [3]byte{144, 251, 91}:  "Avaya Inc",
-       [3]byte{144, 251, 166}: "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{144, 253, 97}:  "Apple, Inc.",
-       [3]byte{144, 253, 159}: "Silicon Laboratories",
-       [3]byte{144, 255, 121}: "Metro Ethernet Forum",
-       [3]byte{148, 0, 6}:     "jinyoung",
-       [3]byte{148, 0, 112}:   "Nokia Corporation",
-       [3]byte{148, 1, 73}:    "AutoHotBox",
-       [3]byte{148, 1, 194}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{148, 4, 156}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{148, 5, 182}:   "Liling FullRiver Electronics & Technology Ltd",
-       [3]byte{148, 9, 55}:    "HUMAX Co., Ltd.",
-       [3]byte{148, 11, 45}:   "NetView Technologies(Shenzhen) Co., Ltd",
-       [3]byte{148, 11, 213}:  "Himax Technologies, Inc",
-       [3]byte{148, 12, 109}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{148, 14, 107}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{148, 16, 62}:   "Belkin International Inc.",
-       [3]byte{148, 17, 218}:  "ITF Fröschl GmbH",
-       [3]byte{148, 20, 122}:  "vivo Mobile Communication Co., Ltd.",
-       [3]byte{148, 22, 115}:  "Point Core SARL",
-       [3]byte{148, 24, 130}:  "Hewlett Packard Enterprise",
-       [3]byte{148, 29, 28}:   "TLab West Systems AB",
-       [3]byte{148, 32, 83}:   "Nokia Corporation",
-       [3]byte{148, 33, 151}:  "Stalmart Technology Limited",
-       [3]byte{148, 35, 110}:  "Shenzhen Junlan Electronic Ltd",
-       [3]byte{148, 40, 46}:   "New H3C Technologies Co., Ltd",
-       [3]byte{148, 42, 63}:   "Diversey Inc",
-       [3]byte{148, 44, 179}:  "HUMAX Co., Ltd.",
-       [3]byte{148, 46, 23}:   "Schneider Electric Canada Inc",
-       [3]byte{148, 46, 99}:   "Finsécur",
-       [3]byte{148, 49, 155}:  "Alphatronics BV",
-       [3]byte{148, 51, 221}:  "Taco Inc",
-       [3]byte{148, 53, 10}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{148, 54, 224}:  "Sichuan Bihong Broadcast &amp; Television New Technologies Co.,Ltd",
-       [3]byte{148, 57, 229}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{148, 58, 240}:  "Nokia Corporation",
-       [3]byte{148, 59, 177}:  "Kaonmedia CO., LTD.",
-       [3]byte{148, 61, 201}:  "Asahi Net, Inc.",
-       [3]byte{148, 63, 194}:  "Hewlett Packard Enterprise",
-       [3]byte{148, 64, 162}:  "Anywave Communication Technologies, Inc.",
-       [3]byte{148, 65, 193}:  "Mini-Cam Limited",
-       [3]byte{148, 68, 68}:   "LG Innotek",
-       [3]byte{148, 68, 82}:   "Belkin International Inc.",
-       [3]byte{148, 70, 150}:  "BaudTec Corporation",
-       [3]byte{148, 73, 150}:  "WiSilica Inc",
-       [3]byte{148, 74, 9}:    "BitWise Controls",
-       [3]byte{148, 74, 12}:   "Sercomm Corporation",
-       [3]byte{148, 80, 71}:   "Rechnerbetriebsgruppe",
-       [3]byte{148, 80, 137}:  "SimonsVoss Technologies GmbH",
-       [3]byte{148, 81, 3}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{148, 81, 61}:   "iSmart Alarm, Inc.",
-       [3]byte{148, 81, 191}:  "Hyundai ESG",
-       [3]byte{148, 83, 48}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{148, 84, 147}:  "Rigado, LLC",
-       [3]byte{148, 87, 165}:  "Hewlett Packard",
-       [3]byte{148, 89, 7}:    "Shanghai HITE-BELDEN Network Technology Co., Ltd.",
-       [3]byte{148, 89, 45}:   "EKE Building Technology Systems Ltd",
-       [3]byte{148, 91, 126}:  "TRILOBIT LTDA.",
-       [3]byte{148, 97, 30}:   "Wata Electronics Co.,Ltd.",
-       [3]byte{148, 97, 36}:   "Pason Systems",
-       [3]byte{148, 98, 105}:  "ARRIS Group, Inc.",
-       [3]byte{148, 99, 209}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{148, 101, 45}:  "OnePlus Technology (Shenzhen) Co., Ltd",
-       [3]byte{148, 101, 156}: "Intel Corporate",
-       [3]byte{148, 102, 231}: "WOM Engineering",
-       [3]byte{148, 112, 210}: "WINFIRM TECHNOLOGY",
-       [3]byte{148, 113, 172}: "TCT mobile ltd",
-       [3]byte{148, 117, 110}: "QinetiQ North America",
-       [3]byte{148, 118, 183}: "Samsung Electronics Co.,Ltd",
-       [3]byte{148, 119, 43}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{148, 123, 190}: "Ubicquia",
-       [3]byte{148, 123, 231}: "Samsung Electronics Co.,Ltd",
-       [3]byte{148, 124, 62}:  "Polewall Norge AS",
-       [3]byte{148, 126, 185}: "National Narrowband Network Communications Pty Ltd",
-       [3]byte{148, 129, 164}: "Azuray Technologies",
-       [3]byte{148, 133, 122}: "Evantage Industries Corp",
-       [3]byte{148, 134, 205}: "SEOUL ELECTRONICS&TELECOM",
-       [3]byte{148, 134, 212}: "Surveillance Pro Corporation",
-       [3]byte{148, 135, 124}: "ARRIS Group, Inc.",
-       [3]byte{148, 136, 21}:  "Infinique Worldwide Inc",
-       [3]byte{148, 136, 84}:  "Texas Instruments",
-       [3]byte{148, 136, 94}:  "Surfilter Network Technology Co., Ltd.",
-       [3]byte{148, 139, 3}:   "EAGET Innovation and Technology Co., Ltd.",
-       [3]byte{148, 139, 193}: "Samsung Electronics Co.,Ltd",
-       [3]byte{148, 141, 80}:  "Beamex Oy Ab",
-       [3]byte{148, 142, 137}: "INDUSTRIAS UNIDAS SA DE CV",
-       [3]byte{148, 143, 238}: "Verizon Telematics",
-       [3]byte{148, 146, 188}: "SYNTECH(HK) TECHNOLOGY LIMITED",
-       [3]byte{148, 148, 38}:  "Apple, Inc.",
-       [3]byte{148, 149, 160}: "Google, Inc.",
-       [3]byte{148, 152, 162}: "Shanghai LISTEN TECH.LTD",
-       [3]byte{148, 153, 1}:   "Shenzhen YITOA Digital Appliance CO.,LTD",
-       [3]byte{148, 154, 169}: "Microsoft Corporation",
-       [3]byte{148, 155, 253}: "Trans New Technology, Inc.",
-       [3]byte{148, 156, 85}:  "Alta Data Technologies",
-       [3]byte{148, 159, 62}:  "Sonos, Inc.",
-       [3]byte{148, 159, 63}:  "Optek Digital Technology company limited",
-       [3]byte{148, 159, 180}: "ChengDu JiaFaAnTai Technology Co.,Ltd",
-       [3]byte{148, 160, 78}:  "Bostex Technology Co., LTD",
-       [3]byte{148, 161, 162}: "AMPAK Technology, Inc.",
-       [3]byte{148, 167, 183}: "zte corporation",
-       [3]byte{148, 167, 188}: "BodyMedia, Inc.",
-       [3]byte{148, 170, 184}: "Joview(Beijing) Technology Co. Ltd.",
-       [3]byte{148, 171, 222}: "OMX Technology - FZE",
-       [3]byte{148, 172, 202}: "trivum technologies GmbH",
-       [3]byte{148, 174, 97}:  "Alcatel Lucent",
-       [3]byte{148, 174, 227}: "Belden Hirschmann Industries (Suzhou) Ltd.",
-       [3]byte{148, 177, 10}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{148, 178, 204}: "PIONEER CORPORATION",
-       [3]byte{148, 180, 15}:  "Aruba Networks",
-       [3]byte{148, 184, 25}:  "Nokia",
-       [3]byte{148, 184, 197}: "RuggedCom Inc.",
-       [3]byte{148, 185, 180}: "Aptos Technology",
-       [3]byte{148, 186, 49}:  "Visiontec da Amazônia Ltda.",
-       [3]byte{148, 186, 86}:  "Shenzhen Coship Electronics Co., Ltd.",
-       [3]byte{148, 187, 174}: "Husqvarna AB",
-       [3]byte{148, 191, 30}:  "eflow Inc. / Smart Device Planning and Development Division",
-       [3]byte{148, 191, 149}: "Shenzhen Coship Electronics Co., Ltd",
-       [3]byte{148, 192, 20}:  "Sorter Sp. j. Konrad Grzeszczyk MichaA, Ziomek",
-       [3]byte{148, 192, 56}:  "Tallac Networks",
-       [3]byte{148, 193, 80}:  "2Wire Inc",
-       [3]byte{148, 195, 228}: "SCA Schucker Gmbh & Co KG",
-       [3]byte{148, 196, 233}: "PowerLayer Microsystems HongKong Limited",
-       [3]byte{148, 198, 145}: "EliteGroup Computer Systems Co., LTD",
-       [3]byte{148, 198, 235}: "NOVA electronics, Inc.",
-       [3]byte{148, 199, 175}: "Raylios Technology",
-       [3]byte{148, 201, 96}:  "Zhongshan B&T technology.co.,ltd",
-       [3]byte{148, 201, 98}:  "Teseq AG",
-       [3]byte{148, 202, 15}:  "Honeywell Analytics",
-       [3]byte{148, 204, 185}: "ARRIS Group, Inc.",
-       [3]byte{148, 205, 172}: "Creowave Oy",
-       [3]byte{148, 206, 44}:  "Sony Mobile Communications AB",
-       [3]byte{148, 206, 49}:  "CTS Limited",
-       [3]byte{148, 208, 25}:  "Cydle Corp.",
-       [3]byte{148, 208, 41}:  "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{148, 212, 23}:  "GPI KOREA INC.",
-       [3]byte{148, 212, 105}: "Cisco Systems, Inc",
-       [3]byte{148, 214, 14}:  "shenzhen yunmao information technologies co., ltd",
-       [3]byte{148, 215, 35}:  "Shanghai DareGlobal Technologies Co.,Ltd",
-       [3]byte{148, 215, 113}: "Samsung Electronics Co.,Ltd",
-       [3]byte{148, 216, 89}:  "TCT mobile ltd",
-       [3]byte{148, 217, 60}:  "ENELPS",
-       [3]byte{148, 217, 179}: "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{148, 219, 73}:  "SITCORP",
-       [3]byte{148, 219, 201}: "AzureWave Technology Inc.",
-       [3]byte{148, 219, 218}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{148, 221, 63}:  "A+V Link Technologies, Corp.",
-       [3]byte{148, 222, 14}:  "SmartOptics AS",
-       [3]byte{148, 222, 128}: "GIGA-BYTE TECHNOLOGY CO.,LTD.",
-       [3]byte{148, 223, 78}:  "Wistron InfoComm(Kunshan)Co.,Ltd.",
-       [3]byte{148, 223, 88}:  "IJ Electron CO.,Ltd.",
-       [3]byte{148, 224, 208}: "HealthStream Taiwan Inc.",
-       [3]byte{148, 226, 38}:  "D. ORtiz Consulting, LLC",
-       [3]byte{148, 226, 253}: "Boge Kompressoren OTTO Boge GmbH & Co. KG",
-       [3]byte{148, 227, 109}: "Texas Instruments",
-       [3]byte{148, 231, 17}:  "Xirka Dama Persada PT",
-       [3]byte{148, 232, 72}:  "FYLDE MICRO LTD",
-       [3]byte{148, 232, 197}: "ARRIS Group, Inc.",
-       [3]byte{148, 233, 106}: "Apple, Inc.",
-       [3]byte{148, 233, 121}: "Liteon Technology Corporation",
-       [3]byte{148, 233, 140}: "Nokia",
-       [3]byte{148, 235, 44}:  "Google, Inc.",
-       [3]byte{148, 235, 205}: "BlackBerry RTS",
-       [3]byte{148, 241, 40}:  "Hewlett Packard Enterprise",
-       [3]byte{148, 241, 158}: "HUIZHOU MAORONG INTELLIGENT TECHNOLOGY CO.,LTD",
-       [3]byte{148, 242, 120}: "Elma Electronic",
-       [3]byte{148, 245, 81}:  "Cadi Scientific Pte Ltd",
-       [3]byte{148, 246, 101}: "Ruckus Wireless",
-       [3]byte{148, 246, 146}: "Geminico co.,Ltd.",
-       [3]byte{148, 246, 163}: "Apple, Inc.",
-       [3]byte{148, 247, 32}:  "Tianjin Deviser Electronics Instrument Co., Ltd",
-       [3]byte{148, 250, 232}: "Shenzhen Eycom Technology Co., Ltd",
-       [3]byte{148, 251, 41}:  "Zebra Technologies Inc.",
-       [3]byte{148, 251, 178}: "SHENZHEN GONGJIN ELECTRONICS CO.,LT",
-       [3]byte{148, 253, 29}:  "WhereWhen Corp",
-       [3]byte{148, 253, 46}:  "Shanghai Uniscope Technologies Co.,Ltd",
-       [3]byte{148, 254, 34}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{148, 254, 244}: "Sagemcom Broadband SAS",
-       [3]byte{152, 0, 116}:   "Raisecom Technology CO., LTD",
-       [3]byte{152, 0, 193}:   "GuangZhou CREATOR Technology Co.,Ltd.(CHINA)",
-       [3]byte{152, 0, 198}:   "Apple, Inc.",
-       [3]byte{152, 1, 167}:   "Apple, Inc.",
-       [3]byte{152, 2, 132}:   "Theobroma Systems GmbH",
-       [3]byte{152, 2, 216}:   "IEEE Registration Authority",
-       [3]byte{152, 3, 160}:   "ABB n.v. Power Quality Products",
-       [3]byte{152, 3, 216}:   "Apple, Inc.",
-       [3]byte{152, 7, 45}:    "Texas Instruments",
-       [3]byte{152, 12, 130}:  "SAMSUNG ELECTRO MECHANICS CO., LTD.",
-       [3]byte{152, 12, 165}:  "Motorola (Wuhan) Mobility Technologies Communication Co., Ltd.",
-       [3]byte{152, 13, 46}:   "HTC Corporation",
-       [3]byte{152, 14, 228}:  "Private",
-       [3]byte{152, 16, 148}:  "Shenzhen Vsun communication technology Co.,ltd",
-       [3]byte{152, 16, 232}:  "Apple, Inc.",
-       [3]byte{152, 19, 51}:   "zte corporation",
-       [3]byte{152, 22, 236}:  "IC Intracom",
-       [3]byte{152, 29, 250}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{152, 30, 15}:   "Jeelan (Shanghai Jeelan Technology Information Inc",
-       [3]byte{152, 31, 177}:  "Shenzhen Lemon Network Technology Co.,Ltd",
-       [3]byte{152, 32, 142}:  "Definium Technologies",
-       [3]byte{152, 34, 239}:  "Liteon Technology Corporation",
-       [3]byte{152, 35, 78}:   "Micromedia AG",
-       [3]byte{152, 38, 42}:   "Applied Research Associates, Inc",
-       [3]byte{152, 40, 166}:  "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
-       [3]byte{152, 41, 29}:   "Jaguar de Mexico, SA de CV",
-       [3]byte{152, 41, 63}:   "Fujian Start Computer Equipment Co.,Ltd",
-       [3]byte{152, 41, 166}:  "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
-       [3]byte{152, 44, 190}:  "2Wire Inc",
-       [3]byte{152, 45, 86}:   "Resolution Audio",
-       [3]byte{152, 45, 104}:  "Samsung Electronics Co., Ltd",
-       [3]byte{152, 45, 186}:  "Fibergate Inc.",
-       [3]byte{152, 47, 60}:   "Sichuan Changhong Electric Ltd.",
-       [3]byte{152, 48, 0}:    "Beijing KEMACOM Technologies Co., Ltd.",
-       [3]byte{152, 48, 113}:  "DAIKYUNG VASCOM",
-       [3]byte{152, 52, 157}:  "Krauss Maffei Technologies GmbH",
-       [3]byte{152, 53, 113}:  "Sub10 Systems Ltd",
-       [3]byte{152, 53, 184}:  "Assembled Products Corporation",
-       [3]byte{152, 55, 19}:   "PT.Navicom Indonesia",
-       [3]byte{152, 57, 142}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{152, 59, 22}:   "AMPAK Technology, Inc.",
-       [3]byte{152, 63, 159}:  "China SSJ (Suzhou) Network Technology Inc.",
-       [3]byte{152, 64, 187}:  "Dell Inc.",
-       [3]byte{152, 66, 70}:   "SOL INDUSTRY PTE., LTD",
-       [3]byte{152, 67, 218}:  "INTERTECH",
-       [3]byte{152, 71, 60}:   "SHANGHAI SUNMON COMMUNICATION TECHNOGY CO.,LTD",
-       [3]byte{152, 74, 71}:   "CHG Hospital Beds",
-       [3]byte{152, 75, 74}:   "ARRIS Group, Inc.",
-       [3]byte{152, 75, 225}:  "Hewlett Packard",
-       [3]byte{152, 76, 4}:    "Zhangzhou Keneng Electrical Equipment Co Ltd",
-       [3]byte{152, 76, 211}:  "Mantis Deposition",
-       [3]byte{152, 78, 151}:  "Starlight Marketing (H. K.) Ltd.",
-       [3]byte{152, 79, 238}:  "Intel Corporate",
-       [3]byte{152, 82, 177}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{152, 84, 27}:   "Intel Corporate",
-       [3]byte{152, 87, 211}:  "HON HAI-CCPBG  PRECISION IND.CO.,LTD.",
-       [3]byte{152, 88, 138}:  "SYSGRATION Ltd.",
-       [3]byte{152, 89, 69}:   "Texas Instruments",
-       [3]byte{152, 90, 235}:  "Apple, Inc.",
-       [3]byte{152, 91, 176}:  "KMDATA INC.",
-       [3]byte{152, 92, 147}:  "SBG Systems SAS",
-       [3]byte{152, 93, 70}:   "PeopleNet Communication",
-       [3]byte{152, 93, 173}:  "Texas Instruments",
-       [3]byte{152, 94, 27}:   "ConversDigital Co., Ltd.",
-       [3]byte{152, 95, 211}:  "Microsoft Corporation",
-       [3]byte{152, 96, 34}:   "EMW Co., Ltd.",
-       [3]byte{152, 102, 234}: "Industrial Control Communications, Inc.",
-       [3]byte{152, 107, 61}:  "ARRIS Group, Inc.",
-       [3]byte{152, 108, 92}:  "Jiangxi Gosun Guard Security Co.,Ltd",
-       [3]byte{152, 108, 245}: "zte corporation",
-       [3]byte{152, 109, 53}:  "IEEE Registration Authority",
-       [3]byte{152, 109, 200}: "TOSHIBA MITSUBISHI-ELECTRIC INDUSTRIAL SYSTEMS CORPORATION",
-       [3]byte{152, 111, 96}:  "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{152, 112, 232}: "INNATECH SDN BHD",
-       [3]byte{152, 115, 196}: "Sage Electronic Engineering LLC",
-       [3]byte{152, 116, 61}:  "Shenzhen Jun Kai Hengye Technology Co. Ltd",
-       [3]byte{152, 116, 218}: "Infinix mobility limited",
-       [3]byte{152, 118, 182}: "Adafruit",
-       [3]byte{152, 119, 112}: "Pep Digital Technology (Guangzhou) Co., Ltd",
-       [3]byte{152, 123, 243}: "Texas Instruments",
-       [3]byte{152, 126, 70}:  "Emizon Networks Limited",
-       [3]byte{152, 130, 23}:  "Disruptive Ltd",
-       [3]byte{152, 131, 137}: "Samsung Electronics Co.,Ltd",
-       [3]byte{152, 132, 227}: "Texas Instruments",
-       [3]byte{152, 134, 177}: "Flyaudio corporation (China)",
-       [3]byte{152, 135, 68}:  "Wuxi Hongda Science and Technology Co.,LTD",
-       [3]byte{152, 137, 237}: "Anadem Information Inc.",
-       [3]byte{152, 139, 93}:  "Sagemcom Broadband SAS",
-       [3]byte{152, 139, 173}: "Corintech Ltd.",
-       [3]byte{152, 142, 52}:  "ZHEJIANG BOXSAM ELECTRONIC CO.,LTD",
-       [3]byte{152, 142, 74}:  "NOXUS(BEIJING) TECHNOLOGY CO.,LTD",
-       [3]byte{152, 142, 221}: "TE Connectivity Limerick",
-       [3]byte{152, 144, 128}: "Linkpower Network System Inc Ltd.",
-       [3]byte{152, 144, 150}: "Dell Inc.",
-       [3]byte{152, 147, 204}: "LG ELECTRONICS INC",
-       [3]byte{152, 148, 73}:  "Skyworth Wireless Technology Ltd.",
-       [3]byte{152, 151, 209}: "MitraStar Technology Corp.",
-       [3]byte{152, 156, 87}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{152, 158, 99}:  "Apple, Inc.",
-       [3]byte{152, 164, 14}:  "Snap, Inc.",
-       [3]byte{152, 167, 176}: "MCST ZAO",
-       [3]byte{152, 170, 60}:  "Will i-tech Co., Ltd.",
-       [3]byte{152, 170, 215}: "BLUE WAVE NETWORKING CO LTD",
-       [3]byte{152, 170, 252}: "IEEE Registration Authority",
-       [3]byte{152, 176, 57}:  "Nokia",
-       [3]byte{152, 182, 233}: "Nintendo Co.,Ltd",
-       [3]byte{152, 184, 227}: "Apple, Inc.",
-       [3]byte{152, 187, 30}:  "BYD Precision Manufacture Company Ltd.",
-       [3]byte{152, 188, 87}:  "SVA TECHNOLOGIES CO.LTD",
-       [3]byte{152, 188, 153}: "Edeltech Co.,Ltd.",
-       [3]byte{152, 190, 148}: "IBM",
-       [3]byte{152, 192, 235}: "Global Regency Ltd",
-       [3]byte{152, 197, 219}: "Ericsson AB",
-       [3]byte{152, 200, 69}:  "PacketAccess",
-       [3]byte{152, 203, 39}:  "Galore Networks Pvt. Ltd.",
-       [3]byte{152, 205, 180}: "Virident Systems, Inc.",
-       [3]byte{152, 207, 83}:  "BBK EDUCATIONAL ELECTRONICS CORP.,LTD.",
-       [3]byte{152, 210, 147}: "Google, Inc.",
-       [3]byte{152, 211, 49}:  "Shenzhen Bolutek Technology Co.,Ltd.",
-       [3]byte{152, 211, 210}: "MEKRA Lang GmbH & Co. KG",
-       [3]byte{152, 214, 134}: "Chyi Lee industry Co., ltd.",
-       [3]byte{152, 214, 187}: "Apple, Inc.",
-       [3]byte{152, 214, 247}: "LG Electronics (Mobile Communications)",
-       [3]byte{152, 216, 140}: "Nortel Networks",
-       [3]byte{152, 218, 146}: "Vuzix Corporation",
-       [3]byte{152, 220, 217}: "UNITEC Co., Ltd.",
-       [3]byte{152, 221, 234}: "Infinix mobility limited",
-       [3]byte{152, 222, 208}: "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{152, 224, 217}: "Apple, Inc.",
-       [3]byte{152, 225, 101}: "Accutome",
-       [3]byte{152, 228, 118}: "Zentan",
-       [3]byte{152, 231, 154}: "Foxconn(NanJing) Communication Co.,Ltd.",
-       [3]byte{152, 231, 244}: "Hewlett Packard",
-       [3]byte{152, 231, 245}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{152, 232, 72}:  "Axiim",
-       [3]byte{152, 236, 101}: "Cosesy ApS",
-       [3]byte{152, 238, 203}: "Wistron Infocomm (Zhongshan) Corporation",
-       [3]byte{152, 239, 155}: "OHSUNG",
-       [3]byte{152, 240, 88}:  "Lynxspring, Incl.",
-       [3]byte{152, 240, 171}: "Apple, Inc.",
-       [3]byte{152, 241, 112}: "Murata Manufacturing Co., Ltd.",
-       [3]byte{152, 241, 153}: "NEC Platforms, Ltd.",
-       [3]byte{152, 242, 179}: "Hewlett Packard Enterprise",
-       [3]byte{152, 244, 40}:  "zte corporation",
-       [3]byte{152, 245, 55}:  "zte corporation",
-       [3]byte{152, 245, 169}: "OHSUNG",
-       [3]byte{152, 247, 215}: "ARRIS Group, Inc.",
-       [3]byte{152, 248, 193}: "IDT Technology Limited",
-       [3]byte{152, 248, 219}: "Marini Impianti Industriali s.r.l.",
-       [3]byte{152, 250, 227}: "Xiaomi Communications Co Ltd",
-       [3]byte{152, 251, 18}:  "Grand Electronics (HK) Ltd",
-       [3]byte{152, 252, 17}:  "Cisco-Linksys, LLC",
-       [3]byte{152, 253, 116}: "ACT.CO.LTD",
-       [3]byte{152, 253, 180}: "Primax Electronics Ltd.",
-       [3]byte{152, 254, 3}:   "Ericsson - North America",
-       [3]byte{152, 254, 148}: "Apple, Inc.",
-       [3]byte{152, 255, 106}: "OTEC(Shanghai)Technology Co.,Ltd.",
-       [3]byte{152, 255, 208}: "Lenovo Mobile Communication Technology Ltd.",
-       [3]byte{156, 1, 17}:    "Shenzhen Newabel Electronic Co., Ltd.",
-       [3]byte{156, 2, 152}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{156, 3, 158}:   "Beijing Winchannel Software Technology Co., Ltd",
-       [3]byte{156, 4, 115}:   "Tecmobile (International) Ltd.",
-       [3]byte{156, 4, 235}:   "Apple, Inc.",
-       [3]byte{156, 6, 27}:    "Hangzhou H3C Technologies Co., Limited",
-       [3]byte{156, 6, 110}:   "Hytera Communications Corporation Limited",
-       [3]byte{156, 13, 172}:  "Tymphany HK Limited",
-       [3]byte{156, 14, 74}:   "Shenzhen Vastking Electronic Co.,Ltd.",
-       [3]byte{156, 19, 171}:  "Chanson Water Co., Ltd.",
-       [3]byte{156, 20, 101}:  "Edata Elektronik San. ve Tic. A.Ş.",
-       [3]byte{156, 24, 116}:  "Nokia Danmark A/S",
-       [3]byte{156, 28, 18}:   "Aruba Networks",
-       [3]byte{156, 29, 88}:   "Texas Instruments",
-       [3]byte{156, 30, 149}:  "Actiontec Electronics, Inc",
-       [3]byte{156, 31, 221}:  "Accupix Inc.",
-       [3]byte{156, 32, 123}:  "Apple, Inc.",
-       [3]byte{156, 33, 106}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{156, 34, 14}:   "TASCAN Systems GmbH",
-       [3]byte{156, 40, 64}:   "Discovery Technology,LTD..",
-       [3]byte{156, 40, 191}:  "Continental Automotive Czech Republic s.r.o.",
-       [3]byte{156, 40, 239}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{156, 41, 63}:   "Apple, Inc.",
-       [3]byte{156, 42, 112}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{156, 42, 131}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{156, 48, 91}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{156, 48, 102}:  "RWE Effizienz GmbH",
-       [3]byte{156, 49, 120}:  "Foshan Huadian Intelligent Communications Teachnologies Co.,Ltd",
-       [3]byte{156, 49, 182}:  "Kulite Semiconductor Products Inc",
-       [3]byte{156, 50, 169}:  "SICHUAN TIANYI COMHEART TELECOMCO., LTD",
-       [3]byte{156, 52, 38}:   "ARRIS Group, Inc.",
-       [3]byte{156, 53, 131}:  "Nipro Diagnostics, Inc",
-       [3]byte{156, 53, 235}:  "Apple, Inc.",
-       [3]byte{156, 55, 244}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{156, 58, 175}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{156, 61, 207}:  "NETGEAR",
-       [3]byte{156, 62, 170}:  "EnvyLogic Co.,Ltd.",
-       [3]byte{156, 65, 124}:  "Hame  Technology Co.,  Limited",
-       [3]byte{156, 68, 61}:   "CHENGDU XUGUANG TECHNOLOGY CO, LTD",
-       [3]byte{156, 68, 166}:  "SwiftTest, Inc.",
-       [3]byte{156, 69, 99}:   "DIMEP Sistemas",
-       [3]byte{156, 74, 123}:  "Nokia Corporation",
-       [3]byte{156, 76, 174}:  "Mesa Labs",
-       [3]byte{156, 78, 32}:   "Cisco Systems, Inc",
-       [3]byte{156, 78, 54}:   "Intel Corporate",
-       [3]byte{156, 78, 142}:  "ALT Systems Ltd",
-       [3]byte{156, 78, 191}:  "BoxCast",
-       [3]byte{156, 79, 207}:  "TCT mobile ltd",
-       [3]byte{156, 79, 218}:  "Apple, Inc.",
-       [3]byte{156, 80, 238}:  "Cambridge Industries(Group) Co.,Ltd.",
-       [3]byte{156, 82, 248}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{156, 83, 205}:  "ENGICAM s.r.l.",
-       [3]byte{156, 84, 28}:   "Shenzhen My-power Technology Co.,Ltd",
-       [3]byte{156, 84, 202}:  "Zhengzhou VCOM Science and Technology Co.,Ltd",
-       [3]byte{156, 85, 180}:  "I.S.E. S.r.l.",
-       [3]byte{156, 87, 17}:   "Feitian Xunda(Beijing) Aeronautical Information Technology Co., Ltd.",
-       [3]byte{156, 87, 173}:  "Cisco Systems, Inc",
-       [3]byte{156, 91, 150}:  "NMR Corporation",
-       [3]byte{156, 92, 141}:  "FIREMAX INDÚSTRIA E COMÉRCIO DE PRODUTOS ELETRÔNICOS  LTDA",
-       [3]byte{156, 92, 142}:  "ASUSTek COMPUTER INC.",
-       [3]byte{156, 92, 249}:  "Sony Mobile Communications AB",
-       [3]byte{156, 93, 18}:   "Aerohive Networks Inc.",
-       [3]byte{156, 93, 149}:  "VTC Electronics Corp.",
-       [3]byte{156, 94, 115}:  "Calibre UK LTD",
-       [3]byte{156, 97, 29}:   "Omni-ID USA, Inc.",
-       [3]byte{156, 97, 33}:   "SICHUAN TIANYI COMHEART TELECOMCO.,LTD",
-       [3]byte{156, 98, 171}:  "Sumavision Technologies Co.,Ltd",
-       [3]byte{156, 99, 237}:  "zte corporation",
-       [3]byte{156, 100, 94}:  "Harman Consumer Group",
-       [3]byte{156, 101, 176}: "Samsung Electronics Co.,Ltd",
-       [3]byte{156, 101, 238}: "DASAN Network Solutions",
-       [3]byte{156, 101, 249}: "AcSiP Technology Corp.",
-       [3]byte{156, 102, 80}:  "Glodio Technolies Co.,Ltd Tianjin Branch",
-       [3]byte{156, 104, 91}:  "Octonion SA",
-       [3]byte{156, 106, 190}: "QEES ApS.",
-       [3]byte{156, 108, 21}:  "Microsoft Corporation",
-       [3]byte{156, 111, 82}:  "zte corporation",
-       [3]byte{156, 116, 26}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{156, 117, 20}:  "Wildix srl",
-       [3]byte{156, 119, 170}: "NADASNV",
-       [3]byte{156, 121, 172}: "Suntec Software(Shanghai) Co., Ltd.",
-       [3]byte{156, 122, 3}:   "Ciena Corporation",
-       [3]byte{156, 123, 210}: "NEOLAB Convergence",
-       [3]byte{156, 125, 163}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{156, 128, 125}: "SYSCABLE Korea Inc.",
-       [3]byte{156, 128, 223}: "Arcadyan Technology Corporation",
-       [3]byte{156, 131, 191}: "PRO-VISION, Inc.",
-       [3]byte{156, 132, 191}: "Apple, Inc.",
-       [3]byte{156, 134, 218}: "Phoenix Geophysics Ltd.",
-       [3]byte{156, 136, 136}: "Simac Techniek NV",
-       [3]byte{156, 136, 173}: "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{156, 139, 160}: "Apple, Inc.",
-       [3]byte{156, 139, 241}: "The Warehouse Limited",
-       [3]byte{156, 140, 110}: "Samsung Electronics Co.,Ltd",
-       [3]byte{156, 141, 26}:  "INTEG process group inc",
-       [3]byte{156, 141, 124}: "ALPS ELECTRIC CO.,LTD.",
-       [3]byte{156, 141, 211}: "Leonton Technologies",
-       [3]byte{156, 142, 153}: "Hewlett Packard",
-       [3]byte{156, 142, 205}: "Amcrest Technologies",
-       [3]byte{156, 142, 220}: "Teracom Limited",
-       [3]byte{156, 147, 78}:  "Xerox Corporation",
-       [3]byte{156, 147, 228}: "Private",
-       [3]byte{156, 149, 248}: "SmartDoor Systems, LLC",
-       [3]byte{156, 151, 38}:  "Technicolor",
-       [3]byte{156, 152, 17}:  "Guangzhou Sunrise Electronics Development Co., Ltd",
-       [3]byte{156, 153, 160}: "Xiaomi Communications Co Ltd",
-       [3]byte{156, 156, 29}:  "Starkey Labs Inc.",
-       [3]byte{156, 156, 64}:  "SICHUAN TIANYI COMHEART TELECOMCO., LTD",
-       [3]byte{156, 157, 93}:  "Raden Inc",
-       [3]byte{156, 161, 10}:  "SCLE SFE",
-       [3]byte{156, 161, 52}:  "Nike, Inc.",
-       [3]byte{156, 163, 169}: "Guangzhou Juan Optical and Electronical Tech Joint Stock Co., Ltd",
-       [3]byte{156, 163, 186}: "SAKURA Internet Inc.",
-       [3]byte{156, 165, 119}: "Osorno Enterprises Inc.",
-       [3]byte{156, 165, 192}: "vivo Mobile Communication Co., Ltd.",
-       [3]byte{156, 166, 157}: "Whaley Technology Co.Ltd",
-       [3]byte{156, 169, 228}: "zte corporation",
-       [3]byte{156, 172, 109}: "Universal Electronics, Inc.",
-       [3]byte{156, 173, 151}: "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{156, 173, 239}: "Obihai Technology, Inc.",
-       [3]byte{156, 174, 211}: "Seiko Epson Corporation",
-       [3]byte{156, 175, 111}: "ITEL MOBILE LIMITED",
-       [3]byte{156, 175, 202}: "Cisco Systems, Inc",
-       [3]byte{156, 176, 8}:   "Ubiquitous Computing Technology Corporation",
-       [3]byte{156, 178, 6}:   "PROCENTEC",
-       [3]byte{156, 178, 178}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{156, 182, 84}:  "Hewlett Packard",
-       [3]byte{156, 182, 208}: "Rivet Networks",
-       [3]byte{156, 183, 13}:  "Liteon Technology Corporation",
-       [3]byte{156, 183, 147}: "Creatcomm Technology Inc.",
-       [3]byte{156, 187, 152}: "Shen Zhen RND Electronic Co.,LTD",
-       [3]byte{156, 189, 157}: "SkyDisk, Inc.",
-       [3]byte{156, 190, 224}: "Biosoundlab Co., Ltd.",
-       [3]byte{156, 192, 119}: "PrintCounts, LLC",
-       [3]byte{156, 192, 210}: "Conductix-Wampfler GmbH",
-       [3]byte{156, 193, 114}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{156, 199, 166}: "AVM GmbH",
-       [3]byte{156, 199, 209}: "SHARP Corporation",
-       [3]byte{156, 200, 174}: "Becton, Dickinson  and Company",
-       [3]byte{156, 202, 217}: "Nokia Corporation",
-       [3]byte{156, 204, 131}: "Juniper Networks",
-       [3]byte{156, 205, 130}: "CHENG UEI PRECISION INDUSTRY CO.,LTD",
-       [3]byte{156, 210, 30}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{156, 210, 75}:  "zte corporation",
-       [3]byte{156, 211, 50}:  "PLC Technology Ltd",
-       [3]byte{156, 211, 91}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{156, 211, 109}: "NETGEAR",
-       [3]byte{156, 212, 139}: "Innolux Technology Europe BV",
-       [3]byte{156, 214, 67}:  "D-Link International",
-       [3]byte{156, 217, 23}:  "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{156, 217, 203}: "Lesira Manufacturing Pty Ltd",
-       [3]byte{156, 218, 62}:  "Intel Corporate",
-       [3]byte{156, 220, 113}: "Hewlett Packard Enterprise",
-       [3]byte{156, 221, 31}:  "Intelligent Steward Co.,Ltd",
-       [3]byte{156, 223, 3}:   "Harman/Becker Automotive Systems GmbH",
-       [3]byte{156, 223, 177}: "Shenzhen Crave Communication Co., LTD",
-       [3]byte{156, 224, 99}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{156, 225, 14}:  "NCTech Ltd",
-       [3]byte{156, 225, 214}: "Junger Audio-Studiotechnik GmbH",
-       [3]byte{156, 226, 48}:  "JULONG CO,.LTD.",
-       [3]byte{156, 227, 63}:  "Apple, Inc.",
-       [3]byte{156, 227, 116}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{156, 230, 53}:  "Nintendo Co., Ltd.",
-       [3]byte{156, 230, 231}: "Samsung Electronics Co.,Ltd",
-       [3]byte{156, 231, 189}: "Winduskorea co., Ltd",
-       [3]byte{156, 233, 81}:  "Shenzhen Sang Fei Consumer Communications Ltd., Co.",
-       [3]byte{156, 235, 232}: "BizLink (Kunshan) Co.,Ltd",
-       [3]byte{156, 239, 213}: "Panda Wireless, Inc.",
-       [3]byte{156, 243, 135}: "Apple, Inc.",
-       [3]byte{156, 244, 142}: "Apple, Inc.",
-       [3]byte{156, 246, 26}:  "UTC Fire and Security",
-       [3]byte{156, 246, 125}: "Ricardo Prague, s.r.o.",
-       [3]byte{156, 248, 219}: "shenzhen eyunmei technology co,.ltd",
-       [3]byte{156, 249, 56}:  "AREVA NP GmbH",
-       [3]byte{156, 251, 213}: "vivo Mobile Communication Co., Ltd.",
-       [3]byte{156, 251, 241}: "MESOMATIC GmbH & Co.KG",
-       [3]byte{156, 252, 1}:   "Apple, Inc.",
-       [3]byte{156, 252, 209}: "Aetheris Technology (Shanghai) Co., Ltd.",
-       [3]byte{156, 255, 190}: "OTSL Inc.",
-       [3]byte{160, 2, 220}:   "Amazon Technologies Inc.",
-       [3]byte{160, 3, 99}:    "Robert Bosch Healthcare GmbH",
-       [3]byte{160, 4, 62}:    "Parker Hannifin Manufacturing Germany GmbH & Co. KG",
-       [3]byte{160, 4, 96}:    "NETGEAR",
-       [3]byte{160, 6, 39}:    "NEXPA System",
-       [3]byte{160, 7, 152}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{160, 7, 182}:   "Advanced Technical Support, Inc.",
-       [3]byte{160, 8, 111}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{160, 9, 76}:    "CenturyLink",
-       [3]byte{160, 9, 237}:   "Avaya Inc",
-       [3]byte{160, 10, 191}:  "Wieson Technologies Co., Ltd.",
-       [3]byte{160, 11, 186}:  "SAMSUNG ELECTRO MECHANICS CO., LTD.",
-       [3]byte{160, 12, 161}:  "SKTB SKiT",
-       [3]byte{160, 16, 129}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{160, 18, 144}:  "Avaya Inc",
-       [3]byte{160, 18, 219}:  "TABUCHI ELECTRIC CO.,LTD",
-       [3]byte{160, 19, 59}:   "HiTi Digital, Inc.",
-       [3]byte{160, 19, 203}:  "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{160, 20, 61}:   "PARROT SA",
-       [3]byte{160, 22, 92}:   "Triteka LTD",
-       [3]byte{160, 24, 40}:   "Apple, Inc.",
-       [3]byte{160, 24, 89}:   "Shenzhen Yidashi Electronics Co Ltd",
-       [3]byte{160, 25, 23}:   "Bertel S.p.a.",
-       [3]byte{160, 27, 41}:   "Sagemcom Broadband SAS",
-       [3]byte{160, 28, 5}:    "NIMAX TELECOM CO.,LTD.",
-       [3]byte{160, 29, 72}:   "Hewlett Packard",
-       [3]byte{160, 30, 11}:   "MINIX Technology Limited",
-       [3]byte{160, 32, 166}:  "Espressif Inc.",
-       [3]byte{160, 33, 149}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{160, 33, 183}:  "NETGEAR",
-       [3]byte{160, 35, 27}:   "TeleComp R&D Corp.",
-       [3]byte{160, 35, 159}:  "Cisco Systems, Inc",
-       [3]byte{160, 43, 184}:  "Hewlett Packard",
-       [3]byte{160, 44, 54}:   "FN-LINK TECHNOLOGY LIMITED",
-       [3]byte{160, 46, 243}:  "United Integrated Services Co., Led.",
-       [3]byte{160, 50, 153}:  "Lenovo (Beijing) Co., Ltd.",
-       [3]byte{160, 52, 27}:   "TrackR, Inc",
-       [3]byte{160, 54, 159}:  "Intel Corporate",
-       [3]byte{160, 54, 240}:  "Comprehensive Power",
-       [3]byte{160, 54, 250}:  "Ettus Research LLC",
-       [3]byte{160, 57, 247}:  "LG Electronics (Mobile Communications)",
-       [3]byte{160, 58, 117}:  "PSS Belgium N.V.",
-       [3]byte{160, 59, 27}:   "Inspire Tech",
-       [3]byte{160, 59, 227}:  "Apple, Inc.",
-       [3]byte{160, 61, 111}:  "Cisco Systems, Inc",
-       [3]byte{160, 62, 107}:  "IEEE Registration Authority",
-       [3]byte{160, 64, 37}:   "Actioncable, Inc.",
-       [3]byte{160, 64, 65}:   "SAMWONFA Co.,Ltd.",
-       [3]byte{160, 64, 160}:  "NETGEAR",
-       [3]byte{160, 65, 94}:   "Opsens Solution Inc.",
-       [3]byte{160, 65, 167}:  "NL Ministry of Defense",
-       [3]byte{160, 66, 63}:   "Tyan Computer Corp",
-       [3]byte{160, 67, 219}:  "Sitael S.p.A.",
-       [3]byte{160, 72, 28}:   "Hewlett Packard",
-       [3]byte{160, 76, 91}:   "Shenzhen TINNO Mobile Technology Corp.",
-       [3]byte{160, 76, 193}:  "Helixtech Corp.",
-       [3]byte{160, 78, 1}:    "CENTRAL ENGINEERING co.,ltd.",
-       [3]byte{160, 78, 4}:    "Nokia Corporation",
-       [3]byte{160, 78, 167}:  "Apple, Inc.",
-       [3]byte{160, 79, 212}:  "ADB Broadband Italia",
-       [3]byte{160, 81, 198}:  "Avaya Inc",
-       [3]byte{160, 85, 79}:   "Cisco Systems, Inc",
-       [3]byte{160, 85, 222}:  "ARRIS Group, Inc.",
-       [3]byte{160, 86, 178}:  "Harman/Becker Automotive Systems GmbH",
-       [3]byte{160, 89, 58}:   "V.D.S. Video Display Systems srl",
-       [3]byte{160, 90, 164}:  "Grand Products Nevada, Inc.",
-       [3]byte{160, 91, 33}:   "ENVINET GmbH",
-       [3]byte{160, 93, 193}:  "TMCT Co., LTD.",
-       [3]byte{160, 93, 231}:  "DIRECTV, Inc.",
-       [3]byte{160, 94, 107}:  "MELPER Co., Ltd.",
-       [3]byte{160, 96, 144}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{160, 99, 145}:  "NETGEAR",
-       [3]byte{160, 100, 143}: "ASKEY COMPUTER CORP",
-       [3]byte{160, 101, 24}:  "VNPT TECHNOLOGY",
-       [3]byte{160, 103, 190}: "Sicon srl",
-       [3]byte{160, 105, 134}: "Wellav Technologies Ltd",
-       [3]byte{160, 106, 0}:   "Verilink Corporation",
-       [3]byte{160, 106, 68}:  "Vizio, Inc",
-       [3]byte{160, 108, 236}: "RIM",
-       [3]byte{160, 109, 9}:   "Intelcan Technosystems Inc.",
-       [3]byte{160, 110, 80}:  "Nanotek Elektronik Sistemler Ltd. Sti.",
-       [3]byte{160, 111, 170}: "LG Innotek",
-       [3]byte{160, 112, 153}: "Beijing Huacan Electronics Co., Ltd",
-       [3]byte{160, 113, 169}: "Nokia Corporation",
-       [3]byte{160, 114, 44}:  "HUMAX Co., Ltd.",
-       [3]byte{160, 114, 228}: "NJ SYSTEM CO.,LTD",
-       [3]byte{160, 115, 50}:  "Cashmaster International Limited",
-       [3]byte{160, 115, 252}: "Rancore Technologies Private Limited",
-       [3]byte{160, 117, 145}: "Samsung Electronics Co.,Ltd",
-       [3]byte{160, 119, 113}: "Vialis BV",
-       [3]byte{160, 120, 186}: "Pantech Co., Ltd.",
-       [3]byte{160, 130, 31}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{160, 130, 172}: "Linear DMS Solutions Sdn. Bhd.",
-       [3]byte{160, 130, 199}: "P.T.I Co.,LTD",
-       [3]byte{160, 132, 203}: "SonicSensory,Inc.",
-       [3]byte{160, 134, 29}:  "Chengdu Fuhuaxin Technology co.,Ltd",
-       [3]byte{160, 134, 198}: "Xiaomi Communications Co Ltd",
-       [3]byte{160, 134, 236}: "SAEHAN HITEC Co., Ltd",
-       [3]byte{160, 136, 105}: "Intel Corporate",
-       [3]byte{160, 136, 180}: "Intel Corporate",
-       [3]byte{160, 137, 228}: "Skyworth Digital Technology(Shenzhen) Co.,Ltd",
-       [3]byte{160, 138, 135}: "HuiZhou KaiYue Electronic Co.,Ltd",
-       [3]byte{160, 140, 21}:  "Gerhard D. Wempe KG",
-       [3]byte{160, 140, 155}: "Xtreme Technologies Corp",
-       [3]byte{160, 140, 248}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{160, 140, 253}: "Hewlett Packard",
-       [3]byte{160, 141, 22}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{160, 142, 120}: "Sagemcom Broadband SAS",
-       [3]byte{160, 144, 222}: "VEEDIMS,LLC",
-       [3]byte{160, 145, 105}: "LG Electronics (Mobile Communications)",
-       [3]byte{160, 145, 200}: "zte corporation",
-       [3]byte{160, 147, 71}:  "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{160, 149, 12}:  "China Mobile IOTCompany Limited",
-       [3]byte{160, 152, 5}:   "OpenVox Communication Co Ltd",
-       [3]byte{160, 152, 237}: "Shandong Intelligent Optical Communication Development Co., Ltd.",
-       [3]byte{160, 153, 155}: "Apple, Inc.",
-       [3]byte{160, 154, 90}:  "Time Domain",
-       [3]byte{160, 155, 189}: "Total Aviation Solutions Pty Ltd",
-       [3]byte{160, 157, 134}: "Alcatel-Lucent Shanghai Bell Co., Ltd",
-       [3]byte{160, 157, 145}: "SoundBridge",
-       [3]byte{160, 157, 193}: "China Dragon Technology Limited",
-       [3]byte{160, 158, 26}:  "Polar Electro Oy",
-       [3]byte{160, 161, 48}:  "DLI Taiwan Branch office",
-       [3]byte{160, 162, 60}:  "GPMS",
-       [3]byte{160, 163, 59}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{160, 163, 226}: "Actiontec Electronics, Inc",
-       [3]byte{160, 166, 92}:  "Supercomputing Systems AG",
-       [3]byte{160, 167, 99}:  "Polytron Vertrieb GmbH",
-       [3]byte{160, 168, 205}: "Intel Corporate",
-       [3]byte{160, 170, 253}: "EraThink Technologies Corp.",
-       [3]byte{160, 171, 27}:  "D-Link International",
-       [3]byte{160, 173, 161}: "JMR Electronics, Inc",
-       [3]byte{160, 175, 189}: "Intel Corporate",
-       [3]byte{160, 177, 0}:   "ShenZhen Cando Electronics Co.,Ltd",
-       [3]byte{160, 179, 204}: "Hewlett Packard",
-       [3]byte{160, 180, 55}:  "GD Mission Systems",
-       [3]byte{160, 180, 165}: "Samsung Electronics Co.,Ltd",
-       [3]byte{160, 181, 218}: "HongKong THTF Co., Ltd",
-       [3]byte{160, 182, 98}:  "Acutvista Innovation Co., Ltd.",
-       [3]byte{160, 184, 248}: "Amgen U.S.A. Inc.",
-       [3]byte{160, 185, 237}: "Skytap",
-       [3]byte{160, 186, 184}: "Pixon Imaging",
-       [3]byte{160, 187, 62}:  "IEEE Registration Authority",
-       [3]byte{160, 189, 205}: "BSkyB Ltd",
-       [3]byte{160, 191, 80}:  "S.C. ADD-PRODUCTION S.R.L.",
-       [3]byte{160, 191, 165}: "CORESYS",
-       [3]byte{160, 194, 222}: "Costar Video Systems",
-       [3]byte{160, 195, 222}: "Triton Electronic Systems Ltd.",
-       [3]byte{160, 196, 165}: "SYGN HOUSE CO.,LTD",
-       [3]byte{160, 197, 98}:  "ARRIS Group, Inc.",
-       [3]byte{160, 197, 137}: "Intel Corporate",
-       [3]byte{160, 197, 242}: "IEEE Registration Authority",
-       [3]byte{160, 198, 236}: "ShenZhen ANYK Technology Co.,LTD",
-       [3]byte{160, 201, 160}: "Murata Manufacturing Co., Ltd.",
-       [3]byte{160, 203, 253}: "Samsung Electronics Co.,Ltd",
-       [3]byte{160, 204, 43}:  "Murata Manufacturing Co., Ltd.",
-       [3]byte{160, 206, 200}: "CE LINK LIMITED",
-       [3]byte{160, 207, 91}:  "Cisco Systems, Inc",
-       [3]byte{160, 209, 42}:  "AXPRO Technology Inc.",
-       [3]byte{160, 211, 122}: "Intel Corporate",
-       [3]byte{160, 211, 133}: "AUMA Riester GmbH & Co. KG",
-       [3]byte{160, 211, 193}: "Hewlett Packard",
-       [3]byte{160, 215, 149}: "Apple, Inc.",
-       [3]byte{160, 216, 111}: "Private",
-       [3]byte{160, 218, 146}: "Nanjing Glarun Atten Technology Co. Ltd.",
-       [3]byte{160, 220, 4}:   "Becker-Antriebe GmbH",
-       [3]byte{160, 221, 151}: "PolarLink Technologies, Ltd",
-       [3]byte{160, 221, 229}: "SHARP Corporation",
-       [3]byte{160, 222, 5}:   "JSC Irbis-T",
-       [3]byte{160, 224, 175}: "Cisco Systems, Inc",
-       [3]byte{160, 226, 1}:   "AVTrace Ltd.(China)",
-       [3]byte{160, 226, 90}:  "Amicus SK, s.r.o.",
-       [3]byte{160, 226, 149}: "DAT System Co.,Ltd",
-       [3]byte{160, 228, 83}:  "Sony Mobile Communications AB",
-       [3]byte{160, 228, 203}: "Zyxel Communications Corporation",
-       [3]byte{160, 229, 52}:  "Stratec Biomedical AG",
-       [3]byte{160, 229, 233}: "enimai Inc",
-       [3]byte{160, 230, 248}: "Texas Instruments",
-       [3]byte{160, 233, 219}: "Ningbo FreeWings Technologies Co.,Ltd",
-       [3]byte{160, 235, 118}: "AirCUVE Inc.",
-       [3]byte{160, 236, 128}: "zte corporation",
-       [3]byte{160, 236, 249}: "Cisco Systems, Inc",
-       [3]byte{160, 237, 205}: "Apple, Inc.",
-       [3]byte{160, 239, 132}: "Seine Image Int'l Co., Ltd",
-       [3]byte{160, 242, 23}:  "GE Medical System(China) Co., Ltd.",
-       [3]byte{160, 243, 193}: "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{160, 243, 228}: "Alcatel-Lucent IPD",
-       [3]byte{160, 244, 25}:  "Nokia Corporation",
-       [3]byte{160, 244, 80}:  "HTC Corporation",
-       [3]byte{160, 244, 89}:  "FN-LINK TECHNOLOGY LIMITED",
-       [3]byte{160, 244, 121}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{160, 246, 253}: "Texas Instruments",
-       [3]byte{160, 248, 73}:  "Cisco Systems, Inc",
-       [3]byte{160, 248, 149}: "Shenzhen TINNO Mobile Technology Corp.",
-       [3]byte{160, 249, 224}: "VIVATEL COMPANY LIMITED",
-       [3]byte{160, 252, 110}: "Telegrafia a.s.",
-       [3]byte{160, 254, 97}:  "Vivint Wireless Inc.",
-       [3]byte{160, 254, 145}: "AVAT Automation GmbH",
-       [3]byte{164, 1, 48}:    "ABIsystems Co., LTD",
-       [3]byte{164, 2, 185}:   "Intel Corporate",
-       [3]byte{164, 4, 80}:    "nFore Technology Inc.",
-       [3]byte{164, 5, 158}:   "STA Infinity LLP",
-       [3]byte{164, 7, 182}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{164, 8, 234}:   "Murata Manufacturing Co., Ltd.",
-       [3]byte{164, 8, 245}:   "Sagemcom Broadband SAS",
-       [3]byte{164, 9, 203}:   "Alfred Kaercher GmbH &amp; Co KG",
-       [3]byte{164, 11, 237}:  "Carry Technology Co.,Ltd",
-       [3]byte{164, 12, 195}:  "Cisco Systems, Inc",
-       [3]byte{164, 13, 188}:  "Xiamen Intretech Inc.",
-       [3]byte{164, 14, 43}:   "Facebook Inc",
-       [3]byte{164, 17, 21}:   "Robert Bosch Engineering and Business Solutions pvt. Ltd.",
-       [3]byte{164, 17, 99}:   "IEEE Registration Authority",
-       [3]byte{164, 18, 66}:   "NEC Platforms, Ltd.",
-       [3]byte{164, 19, 78}:   "Luxul",
-       [3]byte{164, 20, 55}:   "Hangzhou Hikvision Digital Technology Co.,Ltd.",
-       [3]byte{164, 21, 102}:  "Weifang GoerTek Technology Co.,Ltd.",
-       [3]byte{164, 21, 136}:  "ARRIS Group, Inc.",
-       [3]byte{164, 23, 49}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{164, 24, 117}:  "Cisco Systems, Inc",
-       [3]byte{164, 27, 192}:  "Fastec Imaging Corporation",
-       [3]byte{164, 31, 114}:  "Dell Inc.",
-       [3]byte{164, 33, 138}:  "Nortel Networks",
-       [3]byte{164, 35, 5}:    "Open Networking Laboratory",
-       [3]byte{164, 36, 179}:  "FlatFrog Laboratories AB",
-       [3]byte{164, 36, 221}:  "Cambrionix Ltd",
-       [3]byte{164, 37, 27}:   "Avaya Inc",
-       [3]byte{164, 41, 64}:   "Shenzhen YOUHUA Technology Co., Ltd",
-       [3]byte{164, 41, 131}:  "Boeing Defence Australia",
-       [3]byte{164, 41, 183}:  "bluesky",
-       [3]byte{164, 43, 140}:  "NETGEAR",
-       [3]byte{164, 43, 176}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{164, 44, 8}:    "Masterwork Automodules",
-       [3]byte{164, 49, 17}:   "ZIV",
-       [3]byte{164, 49, 53}:   "Apple, Inc.",
-       [3]byte{164, 51, 209}:  "Fibrlink Communications Co.,Ltd.",
-       [3]byte{164, 52, 18}:   "Thales Alenia Space",
-       [3]byte{164, 52, 217}:  "Intel Corporate",
-       [3]byte{164, 52, 241}:  "Texas Instruments",
-       [3]byte{164, 56, 49}:   "RF elements s.r.o.",
-       [3]byte{164, 56, 252}:  "Plastic Logic",
-       [3]byte{164, 58, 105}:  "Vers Inc",
-       [3]byte{164, 59, 250}:  "IEEE Registration Authority",
-       [3]byte{164, 61, 120}:  "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{164, 62, 81}:   "ANOV FRANCE",
-       [3]byte{164, 68, 209}:  "Wingtech Group (HongKong)Limited",
-       [3]byte{164, 70, 107}:  "EOC Technology",
-       [3]byte{164, 70, 250}:  "AmTRAN Video Corporation",
-       [3]byte{164, 74, 211}:  "ST Electronics(Shanghai) Co.,Ltd",
-       [3]byte{164, 75, 21}:   "Sun Cupid Technology (HK) LTD",
-       [3]byte{164, 76, 17}:   "Cisco Systems, Inc",
-       [3]byte{164, 76, 200}:  "Dell Inc.",
-       [3]byte{164, 78, 45}:   "Adaptive Wireless Solutions, LLC",
-       [3]byte{164, 78, 49}:   "Intel Corporate",
-       [3]byte{164, 79, 41}:   "IEEE Registration Authority",
-       [3]byte{164, 80, 85}:   "busware.de",
-       [3]byte{164, 81, 111}:  "Microsoft Mobile Oy",
-       [3]byte{164, 82, 111}:  "ADB Broadband Italia",
-       [3]byte{164, 83, 133}:  "Weifang GoerTek Technology Co.,Ltd.",
-       [3]byte{164, 86, 2}:    "fenglian Technology Co.,Ltd.",
-       [3]byte{164, 86, 27}:   "MCOT Corporation",
-       [3]byte{164, 86, 48}:   "Cisco Systems, Inc",
-       [3]byte{164, 88, 15}:   "IEEE Registration Authority",
-       [3]byte{164, 90, 28}:   "smart-electronic GmbH",
-       [3]byte{164, 92, 39}:   "Nintendo Co., Ltd.",
-       [3]byte{164, 93, 54}:   "Hewlett Packard",
-       [3]byte{164, 93, 161}:  "ADB Broadband Italia",
-       [3]byte{164, 94, 96}:   "Apple, Inc.",
-       [3]byte{164, 96, 17}:   "Verifone",
-       [3]byte{164, 96, 50}:   "MRV Communications (Networks) LTD",
-       [3]byte{164, 98, 223}:  "DS Global. Co., LTD",
-       [3]byte{164, 103, 6}:   "Apple, Inc.",
-       [3]byte{164, 104, 188}: "Private",
-       [3]byte{164, 108, 42}:  "Cisco Systems, Inc",
-       [3]byte{164, 108, 193}: "LTi REEnergy GmbH",
-       [3]byte{164, 110, 121}: "DFT System Co.Ltd",
-       [3]byte{164, 112, 214}: "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{164, 113, 116}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{164, 119, 51}:  "Google, Inc.",
-       [3]byte{164, 119, 88}:  "Ningbo Freewings Technologies Co.,Ltd",
-       [3]byte{164, 119, 96}:  "Nokia Corporation",
-       [3]byte{164, 120, 134}: "Avaya Inc",
-       [3]byte{164, 121, 228}: "KLINFO Corp",
-       [3]byte{164, 122, 164}: "ARRIS Group, Inc.",
-       [3]byte{164, 122, 207}: "VIBICOM COMMUNICATIONS INC.",
-       [3]byte{164, 123, 44}:  "Nokia",
-       [3]byte{164, 123, 133}: "ULTIMEDIA Co Ltd,",
-       [3]byte{164, 123, 157}: "Espressif Inc.",
-       [3]byte{164, 124, 20}:  "ChargeStorm AB",
-       [3]byte{164, 124, 31}:  "Cobham plc",
-       [3]byte{164, 126, 57}:  "zte corporation",
-       [3]byte{164, 129, 238}: "Nokia Corporation",
-       [3]byte{164, 130, 105}: "Datrium, Inc.",
-       [3]byte{164, 132, 49}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{164, 133, 107}: "Q Electronics Ltd",
-       [3]byte{164, 134, 174}: "Quectel Wireless Solutions",
-       [3]byte{164, 137, 91}:  "ARK INFOSOLUTIONS PVT LTD",
-       [3]byte{164, 140, 219}: "Lenovo",
-       [3]byte{164, 141, 59}:  "Vizio, Inc",
-       [3]byte{164, 142, 10}:  "DeLaval International AB",
-       [3]byte{164, 144, 5}:   "CHINA GREATWALL COMPUTER SHENZHEN CO.,LTD",
-       [3]byte{164, 145, 177}: "Technicolor",
-       [3]byte{164, 147, 76}:  "Cisco Systems, Inc",
-       [3]byte{164, 151, 187}: "Hitachi Industrial Equipment Systems Co.,Ltd",
-       [3]byte{164, 153, 71}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{164, 153, 129}: "FuJian Elite Power Tech CO.,LTD.",
-       [3]byte{164, 154, 88}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{164, 155, 19}:  "Digital Check",
-       [3]byte{164, 155, 245}: "Hybridserver Tec GmbH",
-       [3]byte{164, 157, 73}:  "Ketra, Inc.",
-       [3]byte{164, 158, 219}: "AutoCrib, Inc.",
-       [3]byte{164, 159, 133}: "Lyve Minds, Inc",
-       [3]byte{164, 159, 137}: "Shanghai Rui Rui Communication Technology Co.Ltd.",
-       [3]byte{164, 161, 194}: "Ericsson AB",
-       [3]byte{164, 161, 228}: "Innotube, Inc.",
-       [3]byte{164, 162, 74}:  "Cisco SPVTG",
-       [3]byte{164, 164, 211}: "Bluebank Communication Technology Co.Ltd",
-       [3]byte{164, 166, 169}: "Private",
-       [3]byte{164, 168, 15}:  "Shenzhen Coship Electronics Co., Ltd.",
-       [3]byte{164, 173, 0}:   "Ragsdale Technology",
-       [3]byte{164, 173, 184}: "Vitec Group, Camera Dynamics Ltd",
-       [3]byte{164, 174, 154}: "Maestro Wireless Solutions ltd.",
-       [3]byte{164, 177, 33}:  "Arantia 2010 S.L.",
-       [3]byte{164, 177, 151}: "Apple, Inc.",
-       [3]byte{164, 177, 233}: "Technicolor",
-       [3]byte{164, 177, 238}: "H. ZANDER GmbH & Co. KG",
-       [3]byte{164, 178, 167}: "Adaxys Solutions AG",
-       [3]byte{164, 179, 106}: "JSC SDO Chromatec",
-       [3]byte{164, 181, 46}:  "Integrated Device Technology (Malaysia) Sdn. Bhd.",
-       [3]byte{164, 184, 5}:   "Apple, Inc.",
-       [3]byte{164, 184, 24}:  "PENTA Gesellschaft für elektronische Industriedatenverarbeitung mbH",
-       [3]byte{164, 185, 128}: "Parking BOXX Inc.",
-       [3]byte{164, 186, 118}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{164, 186, 219}: "Dell Inc.",
-       [3]byte{164, 187, 175}: "Lime Instruments",
-       [3]byte{164, 190, 97}:  "EutroVision System, Inc.",
-       [3]byte{164, 191, 1}:   "Intel Corporate",
-       [3]byte{164, 192, 199}: "ShenZhen Hitom Communication Technology Co..LTD",
-       [3]byte{164, 192, 225}: "Nintendo Co., Ltd.",
-       [3]byte{164, 193, 56}:  "Telink Semiconductor (Taipei) Co. Ltd.",
-       [3]byte{164, 194, 171}: "Hangzhou LEAD-IT Information & Technology Co.,Ltd",
-       [3]byte{164, 195, 97}:  "Apple, Inc.",
-       [3]byte{164, 196, 148}: "Intel Corporate",
-       [3]byte{164, 198, 79}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{164, 199, 222}: "Cambridge Industries(Group) Co.,Ltd.",
-       [3]byte{164, 202, 160}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{164, 204, 50}:  "Inficomm Co., Ltd",
-       [3]byte{164, 208, 148}: "Erwin Peters Systemtechnik GmbH",
-       [3]byte{164, 209, 140}: "Apple, Inc.",
-       [3]byte{164, 209, 143}: "Shenzhen Skyee Optical Fiber Communication Technology Ltd.",
-       [3]byte{164, 209, 209}: "ECOtality North America",
-       [3]byte{164, 209, 210}: "Apple, Inc.",
-       [3]byte{164, 211, 181}: "GLITEL Stropkov, s.r.o.",
-       [3]byte{164, 213, 120}: "Texas Instruments",
-       [3]byte{164, 216, 86}:  "Gimbal, Inc",
-       [3]byte{164, 216, 202}: "HONG KONG WATER WORLD TECHNOLOGY CO. LIMITED",
-       [3]byte{164, 217, 164}: "neXus ID Solutions AB",
-       [3]byte{164, 218, 63}:  "Bionics Corp.",
-       [3]byte{164, 219, 46}:  "Kingspan Environmental Ltd",
-       [3]byte{164, 219, 48}:  "Liteon Technology Corporation",
-       [3]byte{164, 220, 190}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{164, 222, 80}:  "Total Walther GmbH",
-       [3]byte{164, 222, 201}: "QLove Mobile Intelligence Information Technology (W.H.) Co. Ltd.",
-       [3]byte{164, 224, 230}: "FILIZOLA S.A. PESAGEM E AUTOMACAO",
-       [3]byte{164, 227, 46}:  "Silicon & Software Systems Ltd.",
-       [3]byte{164, 227, 145}: "DENY FONTAINE",
-       [3]byte{164, 228, 184}: "BlackBerry RTS",
-       [3]byte{164, 229, 151}: "Gessler GmbH",
-       [3]byte{164, 230, 177}: "Shanghai Joindata Technology Co.,Ltd.",
-       [3]byte{164, 231, 49}:  "Nokia Corporation",
-       [3]byte{164, 231, 228}: "Connex GmbH",
-       [3]byte{164, 233, 117}: "Apple, Inc.",
-       [3]byte{164, 233, 145}: "SISTEMAS AUDIOVISUALES ITELSIS S.L.",
-       [3]byte{164, 233, 163}: "Honest Technology Co., Ltd",
-       [3]byte{164, 235, 211}: "Samsung Electronics Co.,Ltd",
-       [3]byte{164, 237, 78}:  "ARRIS Group, Inc.",
-       [3]byte{164, 238, 87}:  "Seiko Epson Corporation",
-       [3]byte{164, 239, 82}:  "Telewave Co., Ltd.",
-       [3]byte{164, 241, 232}: "Apple, Inc.",
-       [3]byte{164, 243, 193}: "Open Source Robotics Foundation, Inc.",
-       [3]byte{164, 243, 231}: "Integrated Device Technology (Malaysia) Sdn. Bhd.",
-       [3]byte{164, 244, 194}: "VNPT TECHNOLOGY",
-       [3]byte{164, 245, 34}:  "CHOFU SEISAKUSHO CO.,LTD",
-       [3]byte{164, 247, 208}: "LAN Accessories Co., Ltd.",
-       [3]byte{164, 251, 141}: "Hangzhou Dunchong Technology Co.Ltd",
-       [3]byte{164, 252, 206}: "Security Expert Ltd.",
-       [3]byte{168, 1, 128}:   "IMAGO Technologies GmbH",
-       [3]byte{168, 6, 0}:     "Samsung Electronics Co.,Ltd",
-       [3]byte{168, 12, 13}:   "Cisco Systems, Inc",
-       [3]byte{168, 12, 99}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{168, 12, 202}:  "Shenzhen Sundray Technologies Company Limited",
-       [3]byte{168, 17, 252}:  "ARRIS Group, Inc.",
-       [3]byte{168, 19, 116}:  "Panasonic Corporation AVC Networks Company",
-       [3]byte{168, 21, 77}:   "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{168, 21, 89}:   "Breathometer, Inc.",
-       [3]byte{168, 21, 214}:  "Shenzhen Meione Technology CO., LTD",
-       [3]byte{168, 22, 178}:  "LG Electronics (Mobile Communications)",
-       [3]byte{168, 23, 88}:   "Elektronik System i Umeå AB",
-       [3]byte{168, 27, 24}:   "XTS CORP",
-       [3]byte{168, 27, 90}:   "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{168, 27, 93}:   "Foxtel Management Pty Ltd",
-       [3]byte{168, 27, 106}:  "Texas Instruments",
-       [3]byte{168, 29, 22}:   "AzureWave Technology Inc.",
-       [3]byte{168, 30, 132}:  "QUANTA COMPUTER INC.",
-       [3]byte{168, 31, 175}:  "KRYPTON POLSKA",
-       [3]byte{168, 32, 102}:  "Apple, Inc.",
-       [3]byte{168, 36, 235}:  "ZAO NPO Introtest",
-       [3]byte{168, 37, 235}:  "Cambridge Industries(Group) Co.,Ltd.",
-       [3]byte{168, 38, 217}:  "HTC Corporation",
-       [3]byte{168, 41, 76}:   "Precision Optical Transceivers, Inc.",
-       [3]byte{168, 43, 181}:  "Edgecore Networks Corporation",
-       [3]byte{168, 43, 214}:  "Shina System Co., Ltd",
-       [3]byte{168, 48, 173}:  "Weifang GoerTek Technology Co.,Ltd.",
-       [3]byte{168, 50, 154}:  "Digicom Futuristic Technologies Ltd.",
-       [3]byte{168, 57, 68}:   "Actiontec Electronics, Inc",
-       [3]byte{168, 64, 65}:   "Dragino Technology Co., Limited",
-       [3]byte{168, 68, 129}:  "Nokia Corporation",
-       [3]byte{168, 69, 205}:  "Siselectron Technology LTD.",
-       [3]byte{168, 69, 233}:  "Firich Enterprises CO., LTD.",
-       [3]byte{168, 71, 74}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{168, 73, 165}:  "Lisantech Co., Ltd.",
-       [3]byte{168, 78, 63}:   "Hitron Technologies. Inc",
-       [3]byte{168, 84, 178}:  "Wistron Neweb Corporation",
-       [3]byte{168, 85, 106}:  "Pocketnet Technology Inc.",
-       [3]byte{168, 87, 78}:   "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{168, 88, 64}:   "Cambridge Industries(Group) Co.,Ltd.",
-       [3]byte{168, 91, 120}:  "Apple, Inc.",
-       [3]byte{168, 91, 176}:  "Shenzhen Dehoo Technology Co.,Ltd",
-       [3]byte{168, 91, 243}:  "Audivo GmbH",
-       [3]byte{168, 92, 44}:   "Apple, Inc.",
-       [3]byte{168, 94, 228}:  "12Sided Technology, LLC",
-       [3]byte{168, 96, 182}:  "Apple, Inc.",
-       [3]byte{168, 97, 170}:  "Cloudview Limited",
-       [3]byte{168, 98, 162}:  "JIWUMEDIA CO., LTD.",
-       [3]byte{168, 99, 223}:  "DISPLAIRE CORPORATION",
-       [3]byte{168, 99, 242}:  "Texas Instruments",
-       [3]byte{168, 100, 5}:   "nimbus 9, Inc",
-       [3]byte{168, 101, 178}: "DONGGUAN YISHANG ELECTRONIC TECHNOLOGY CO., LIMITED",
-       [3]byte{168, 102, 127}: "Apple, Inc.",
-       [3]byte{168, 106, 111}: "RIM",
-       [3]byte{168, 106, 193}: "HanbitEDS Co., Ltd.",
-       [3]byte{168, 107, 124}: "SHENZHEN FENGLIAN TECHNOLOGY CO., LTD.",
-       [3]byte{168, 107, 173}: "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{168, 112, 165}: "UniComm Inc.",
-       [3]byte{168, 114, 133}: "IDT, INC.",
-       [3]byte{168, 116, 29}:  "PHOENIX CONTACT Electronics GmbH",
-       [3]byte{168, 117, 214}: "FreeTek International Co., Ltd.",
-       [3]byte{168, 117, 226}: "Aventura Technologies, Inc.",
-       [3]byte{168, 119, 111}: "Zonoff",
-       [3]byte{168, 123, 57}:  "Nokia Corporation",
-       [3]byte{168, 124, 1}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{168, 126, 51}:  "Nokia Danmark A/S",
-       [3]byte{168, 128, 56}:  "ShenZhen MovingComm Technology Co., Limited",
-       [3]byte{168, 129, 149}: "Samsung Electronics Co.,Ltd",
-       [3]byte{168, 129, 241}: "BMEYE B.V.",
-       [3]byte{168, 130, 0}:   "Hisense Electric Co.,Ltd",
-       [3]byte{168, 130, 127}: "CIBN Oriental Network(Beijing) CO.,Ltd",
-       [3]byte{168, 134, 221}: "Apple, Inc.",
-       [3]byte{168, 135, 146}: "Broadband Antenna Tracking Systems",
-       [3]byte{168, 135, 237}: "ARC Wireless LLC",
-       [3]byte{168, 136, 8}:   "Apple, Inc.",
-       [3]byte{168, 140, 238}: "MicroMade Galka i Drozdz sp.j.",
-       [3]byte{168, 141, 123}: "SunDroid Global limited.",
-       [3]byte{168, 142, 36}:  "Apple, Inc.",
-       [3]byte{168, 144, 8}:   "Beijing Yuecheng Technology Co. Ltd.",
-       [3]byte{168, 146, 44}:  "LG Electronics (Mobile Communications)",
-       [3]byte{168, 147, 82}:  "SHANGHAI ZHONGMI COMMUNICATION TECHNOLOGY CO.,LTD",
-       [3]byte{168, 147, 230}: "JIANGXI JINGGANGSHAN CKING COMMUNICATION TECHNOLOGY CO.,LTD",
-       [3]byte{168, 149, 176}: "Aker Subsea Ltd",
-       [3]byte{168, 150, 117}: "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{168, 150, 138}: "Apple, Inc.",
-       [3]byte{168, 151, 220}: "IBM",
-       [3]byte{168, 152, 198}: "Shinbo Co., Ltd.",
-       [3]byte{168, 153, 92}:  "aizo ag",
-       [3]byte{168, 155, 16}:  "inMotion Ltd.",
-       [3]byte{168, 157, 33}:  "Cisco Systems, Inc",
-       [3]byte{168, 157, 210}: "Shanghai DareGlobal Technologies Co.,Ltd",
-       [3]byte{168, 159, 186}: "Samsung Electronics Co.,Ltd",
-       [3]byte{168, 159, 236}: "ARRIS Group, Inc.",
-       [3]byte{168, 160, 137}: "Tactical Communications",
-       [3]byte{168, 161, 152}: "TCT mobile ltd",
-       [3]byte{168, 165, 226}: "MSF-Vathauer Antriebstechnik GmbH & Co KG",
-       [3]byte{168, 166, 72}:  "Qingdao Hisense Communications Co.,Ltd.",
-       [3]byte{168, 166, 104}: "zte corporation",
-       [3]byte{168, 167, 149}: "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{168, 173, 61}:  "Alcatel-Lucent Shanghai Bell Co., Ltd",
-       [3]byte{168, 176, 174}: "LEONI",
-       [3]byte{168, 177, 212}: "Cisco Systems, Inc",
-       [3]byte{168, 178, 218}: "FUJITSU LIMITED",
-       [3]byte{168, 184, 110}: "LG Electronics (Mobile Communications)",
-       [3]byte{168, 185, 179}: "ESSYS",
-       [3]byte{168, 187, 80}:  "WiZ IoT Company Limited",
-       [3]byte{168, 187, 207}: "Apple, Inc.",
-       [3]byte{168, 189, 26}:  "Honey Bee (Hong Kong) Limited",
-       [3]byte{168, 189, 39}:  "Hewlett Packard Enterprise",
-       [3]byte{168, 189, 58}:  "UNIONMAN TECHNOLOGY CO.,LTD",
-       [3]byte{168, 190, 39}:  "Apple, Inc.",
-       [3]byte{168, 194, 34}:  "TM-Research Inc.",
-       [3]byte{168, 200, 58}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{168, 200, 127}: "Roqos, Inc.",
-       [3]byte{168, 202, 123}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{168, 203, 149}: "EAST BEST CO., LTD.",
-       [3]byte{168, 204, 197}: "Saab AB (publ)",
-       [3]byte{168, 206, 144}: "CVC",
-       [3]byte{168, 208, 227}: "Systech Electronics Ltd.",
-       [3]byte{168, 208, 229}: "Juniper Networks",
-       [3]byte{168, 210, 54}:  "Lightware Visual Engineering",
-       [3]byte{168, 211, 200}: "Topcon Electronics GmbH & Co. KG",
-       [3]byte{168, 211, 247}: "Arcadyan Technology Corporation",
-       [3]byte{168, 212, 9}:   "USA 111 Inc",
-       [3]byte{168, 213, 121}: "Beijing Chushang Science and Technology Co.,Ltd",
-       [3]byte{168, 216, 40}:  "Ascensia Diabetes Care",
-       [3]byte{168, 216, 138}: "Wyconn",
-       [3]byte{168, 224, 24}:  "Nokia Corporation",
-       [3]byte{168, 227, 238}: "Sony Interactive Entertainment Inc.",
-       [3]byte{168, 229, 57}:  "Moimstone Co.,Ltd",
-       [3]byte{168, 231, 5}:   "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{168, 232, 36}:  "INIM ELECTRONICS S.R.L.",
-       [3]byte{168, 238, 198}: "Muuselabs NV/SA",
-       [3]byte{168, 239, 38}:  "Tritonwave",
-       [3]byte{168, 240, 56}:  "SHEN ZHEN SHI JIN HUA TAI ELECTRONICS CO.,LTD",
-       [3]byte{168, 242, 116}: "Samsung Electronics Co.,Ltd",
-       [3]byte{168, 244, 112}: "Fujian Newland Communication Science Technologies Co.,Ltd.",
-       [3]byte{168, 247, 224}: "PLANET Technology Corporation",
-       [3]byte{168, 249, 75}:  "Eltex Enterprise Ltd.",
-       [3]byte{168, 250, 216}: "Apple, Inc.",
-       [3]byte{168, 251, 112}: "WiseSec L.t.d",
-       [3]byte{168, 252, 183}: "Consolidated Resource Imaging",
-       [3]byte{170, 0, 0}:     "DIGITAL EQUIPMENT CORPORATION",
-       [3]byte{170, 0, 1}:     "DIGITAL EQUIPMENT CORPORATION",
-       [3]byte{170, 0, 2}:     "DIGITAL EQUIPMENT CORPORATION",
-       [3]byte{170, 0, 3}:     "DIGITAL EQUIPMENT CORPORATION",
-       [3]byte{170, 0, 4}:     "DIGITAL EQUIPMENT CORPORATION",
-       [3]byte{172, 1, 66}:    "Uriel Technologies SIA",
-       [3]byte{172, 2, 202}:   "HI Solutions, Inc.",
-       [3]byte{172, 2, 207}:   "RW Tecnologia Industria e Comercio Ltda",
-       [3]byte{172, 2, 239}:   "Comsis",
-       [3]byte{172, 4, 11}:    "Peloton Interactive, Inc",
-       [3]byte{172, 4, 129}:   "Jiangsu Huaxing Electronics Co., Ltd.",
-       [3]byte{172, 6, 19}:    "Senselogix Ltd",
-       [3]byte{172, 6, 199}:   "ServerNet S.r.l.",
-       [3]byte{172, 10, 97}:   "Labor S.r.L.",
-       [3]byte{172, 13, 27}:   "LG Electronics (Mobile Communications)",
-       [3]byte{172, 13, 254}:  "Ekon GmbH - myGEKKO",
-       [3]byte{172, 17, 211}:  "Suzhou HOTEK  Video Technology Co. Ltd",
-       [3]byte{172, 20, 97}:   "ATAW  Co., Ltd.",
-       [3]byte{172, 20, 210}:  "wi-daq, inc.",
-       [3]byte{172, 22, 45}:   "Hewlett Packard",
-       [3]byte{172, 23, 2}:    "Fibar Group sp. z o.o.",
-       [3]byte{172, 24, 38}:   "Seiko Epson Corporation",
-       [3]byte{172, 25, 159}:  "SUNGROW POWER SUPPLY CO.,LTD.",
-       [3]byte{172, 29, 223}:  "IEEE Registration Authority",
-       [3]byte{172, 31, 107}:  "Super Micro Computer, Inc.",
-       [3]byte{172, 31, 116}:  "Apple, Inc.",
-       [3]byte{172, 31, 215}:  "Real Vision Technology Co.,Ltd.",
-       [3]byte{172, 32, 46}:   "Hitron Technologies. Inc",
-       [3]byte{172, 32, 62}:   "Wuhan Tianyu Information Industry Co., Ltd.",
-       [3]byte{172, 32, 170}:  "DMATEK Co., Ltd.",
-       [3]byte{172, 34, 5}:    "Compal Broadband Networks, Inc.",
-       [3]byte{172, 34, 11}:   "ASUSTek COMPUTER INC.",
-       [3]byte{172, 35, 63}:   "Shenzhen Minew Technologies Co., Ltd.",
-       [3]byte{172, 41, 58}:   "Apple, Inc.",
-       [3]byte{172, 42, 12}:   "CSR ZHUZHOU INSTITUTE CO.,LTD.",
-       [3]byte{172, 43, 110}:  "Intel Corporate",
-       [3]byte{172, 45, 163}:  "TXTR GmbH",
-       [3]byte{172, 47, 168}:  "Humannix Co.,Ltd.",
-       [3]byte{172, 49, 157}:  "Shenzhen TG-NET Botone Technology Co.,Ltd.",
-       [3]byte{172, 52, 203}:  "Shanhai GBCOM Communication Technology Co. Ltd",
-       [3]byte{172, 54, 19}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{172, 55, 67}:   "HTC Corporation",
-       [3]byte{172, 56, 112}:  "Lenovo Mobile Communication Technology Ltd.",
-       [3]byte{172, 58, 122}:  "Roku, Inc.",
-       [3]byte{172, 60, 11}:   "Apple, Inc.",
-       [3]byte{172, 60, 180}:  "Nilan A/S",
-       [3]byte{172, 61, 5}:    "Instorescreen Aisa",
-       [3]byte{172, 61, 117}:  "HANGZHOU ZHIWAY TECHNOLOGIES CO.,LTD.",
-       [3]byte{172, 63, 164}:  "TAIYO YUDEN CO.,LTD",
-       [3]byte{172, 64, 234}:  "C&T Solution Inc.",
-       [3]byte{172, 65, 34}:   "Eclipse Electronic Systems Inc.",
-       [3]byte{172, 68, 242}:  "YAMAHA CORPORATION",
-       [3]byte{172, 71, 35}:   "Genelec",
-       [3]byte{172, 72, 45}:   "Ralinwi Nanjing Electronic Technology Co., Ltd.",
-       [3]byte{172, 74, 254}:  "Hisense Broadband Multimedia Technology Co.,Ltd.",
-       [3]byte{172, 75, 200}:  "Juniper Networks",
-       [3]byte{172, 78, 46}:   "Shenzhen JingHanDa Electronics Co.Ltd",
-       [3]byte{172, 78, 145}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{172, 79, 252}:  "SVS-VISTEK GmbH",
-       [3]byte{172, 80, 54}:   "Pi-Coral Inc",
-       [3]byte{172, 81, 44}:   "Infinix mobility limited",
-       [3]byte{172, 81, 53}:   "MPI TECH",
-       [3]byte{172, 81, 238}:  "Cambridge Communication Systems Ltd",
-       [3]byte{172, 84, 236}:  "IEEE P1823 Standards Working Group",
-       [3]byte{172, 86, 44}:   "LAVA INTERNATIONAL(H.K) LIMITED",
-       [3]byte{172, 88, 59}:   "Human Assembler, Inc.",
-       [3]byte{172, 88, 123}:  "JCT Healthcare",
-       [3]byte{172, 90, 20}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{172, 93, 16}:   "Pace Americas",
-       [3]byte{172, 94, 140}:  "Utillink",
-       [3]byte{172, 95, 62}:   "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
-       [3]byte{172, 96, 182}:  "Ericsson AB",
-       [3]byte{172, 97, 35}:   "Drivven, Inc.",
-       [3]byte{172, 97, 117}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{172, 97, 234}:  "Apple, Inc.",
-       [3]byte{172, 98, 13}:   "Jabil Circuit(Wuxi) Co.,Ltd",
-       [3]byte{172, 99, 190}:  "Amazon Technologies Inc.",
-       [3]byte{172, 100, 23}:  "Siemens AG - Industrial Automation - EWA",
-       [3]byte{172, 100, 98}:  "zte corporation",
-       [3]byte{172, 100, 221}: "IEEE Registration Authority",
-       [3]byte{172, 103, 6}:   "Ruckus Wireless",
-       [3]byte{172, 103, 111}: "Electrocompaniet A.S.",
-       [3]byte{172, 107, 15}:  "CADENCE DESIGN SYSTEMS INC",
-       [3]byte{172, 107, 172}: "Jenny Science AG",
-       [3]byte{172, 110, 26}:  "SHENZHEN GONGJIN ELECTRONICS CO.,LT",
-       [3]byte{172, 111, 79}:  "Enspert Inc",
-       [3]byte{172, 111, 187}: "TATUNG Technology Inc.",
-       [3]byte{172, 111, 217}: "Valueplus Inc.",
-       [3]byte{172, 114, 54}:  "Lexking Technology Co., Ltd.",
-       [3]byte{172, 114, 137}: "Intel Corporate",
-       [3]byte{172, 116, 9}:   "Hangzhou H3C Technologies Co., Limited",
-       [3]byte{172, 122, 66}:  "iConnectivity",
-       [3]byte{172, 122, 77}:  "ALPS ELECTRIC CO.,LTD.",
-       [3]byte{172, 123, 161}: "Intel Corporate",
-       [3]byte{172, 126, 138}: "Cisco Systems, Inc",
-       [3]byte{172, 127, 62}:  "Apple, Inc.",
-       [3]byte{172, 128, 214}: "Hexatronic AB",
-       [3]byte{172, 129, 18}:  "Gemtek Technology Co., Ltd.",
-       [3]byte{172, 129, 243}: "Nokia Corporation",
-       [3]byte{172, 131, 23}:  "Shenzhen Furtunetel Communication Co., Ltd",
-       [3]byte{172, 131, 240}: "ImmediaTV Corporation",
-       [3]byte{172, 131, 243}: "AMPAK Technology, Inc.",
-       [3]byte{172, 132, 198}: "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{172, 132, 201}: "Sagemcom Broadband SAS",
-       [3]byte{172, 133, 61}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{172, 134, 116}: "Open Mesh, Inc.",
-       [3]byte{172, 134, 126}: "Create New Technology (HK) Limited Company",
-       [3]byte{172, 135, 163}: "Apple, Inc.",
-       [3]byte{172, 137, 149}: "AzureWave Technology Inc.",
-       [3]byte{172, 138, 205}: "ROGER D.Wensker, G.Wensker sp.j.",
-       [3]byte{172, 141, 20}:  "Smartrove Inc",
-       [3]byte{172, 147, 47}:  "Nokia Corporation",
-       [3]byte{172, 148, 3}:   "Envision Peripherals Inc",
-       [3]byte{172, 154, 34}:  "NXP Semiconductors",
-       [3]byte{172, 154, 150}: "Lantiq Deutschland GmbH",
-       [3]byte{172, 155, 10}:  "Sony Corporation",
-       [3]byte{172, 155, 132}: "Smak Tecnologia e Automacao",
-       [3]byte{172, 156, 228}: "Alcatel-Lucent Shanghai Bell Co., Ltd",
-       [3]byte{172, 158, 23}:  "ASUSTek COMPUTER INC.",
-       [3]byte{172, 160, 22}:  "Cisco Systems, Inc",
-       [3]byte{172, 162, 19}:  "Shenzhen Bilian electronic CO.,LTD",
-       [3]byte{172, 162, 44}:  "Baycity Technologies Ltd",
-       [3]byte{172, 163, 30}:  "Aruba Networks",
-       [3]byte{172, 164, 48}:  "Peerless AV",
-       [3]byte{172, 166, 103}: "Electronic Systems Protection, Inc.",
-       [3]byte{172, 169, 25}:  "TrekStor GmbH",
-       [3]byte{172, 169, 160}: "Audioengine, Ltd.",
-       [3]byte{172, 171, 46}:  "Beijing LasNubes Technology Co., Ltd.",
-       [3]byte{172, 171, 141}: "Lyngso Marine A/S",
-       [3]byte{172, 171, 191}: "AthenTek Inc.",
-       [3]byte{172, 175, 185}: "Samsung Electronics Co.,Ltd",
-       [3]byte{172, 179, 19}:  "ARRIS Group, Inc.",
-       [3]byte{172, 181, 125}: "Liteon Technology Corporation",
-       [3]byte{172, 183, 79}:  "METEL s.r.o.",
-       [3]byte{172, 184, 89}:  "Uniband Electronic Corp,",
-       [3]byte{172, 188, 50}:  "Apple, Inc.",
-       [3]byte{172, 189, 11}:  "IMAC CO.,LTD",
-       [3]byte{172, 190, 117}: "Ufine Technologies Co.,Ltd.",
-       [3]byte{172, 190, 182}: "Visualedge Technology Co., Ltd.",
-       [3]byte{172, 193, 238}: "Xiaomi Communications Co Ltd",
-       [3]byte{172, 194, 236}: "CLT INT'L IND. CORP.",
-       [3]byte{172, 195, 58}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{172, 197, 27}:  "Zhuhai Pantum Electronics Co., Ltd.",
-       [3]byte{172, 197, 149}: "Graphite Systems",
-       [3]byte{172, 198, 98}:  "MitraStar Technology Corp.",
-       [3]byte{172, 198, 152}: "Kohzu Precision Co., Ltd.",
-       [3]byte{172, 199, 63}:  "VITSMO CO., LTD.",
-       [3]byte{172, 201, 53}:  "Ness Corporation",
-       [3]byte{172, 202, 84}:  "Telldus Technologies AB",
-       [3]byte{172, 202, 142}: "ODA Technologies",
-       [3]byte{172, 202, 171}: "Virtual Electric Inc",
-       [3]byte{172, 202, 186}: "Midokura Co., Ltd.",
-       [3]byte{172, 203, 9}:   "Hefcom Metering (Pty) Ltd",
-       [3]byte{172, 204, 142}: "Axis Communications AB",
-       [3]byte{172, 206, 143}: "HWA YAO TECHNOLOGIES CO., LTD",
-       [3]byte{172, 207, 35}:  "Hi-flying electronics technology Co.,Ltd",
-       [3]byte{172, 207, 92}:  "Apple, Inc.",
-       [3]byte{172, 207, 133}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{172, 208, 116}: "Espressif Inc.",
-       [3]byte{172, 209, 128}: "Crexendo Business Solutions, Inc.",
-       [3]byte{172, 209, 184}: "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{172, 211, 100}: "ABB SPA, ABB SACE DIV.",
-       [3]byte{172, 214, 87}:  "Shaanxi GuoLian Digital TV Technology Co.,Ltd.",
-       [3]byte{172, 217, 214}: "tci GmbH",
-       [3]byte{172, 219, 218}: "Shenzhen Geniatech Inc, Ltd",
-       [3]byte{172, 220, 229}: "Procter & Gamble Company",
-       [3]byte{172, 222, 72}:  "Private",
-       [3]byte{172, 224, 16}:  "Liteon Technology Corporation",
-       [3]byte{172, 224, 105}: "ISAAC Instruments",
-       [3]byte{172, 226, 21}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{172, 226, 211}: "Hewlett Packard",
-       [3]byte{172, 227, 72}:  "MadgeTech, Inc",
-       [3]byte{172, 228, 46}:  "SK hynix",
-       [3]byte{172, 228, 181}: "Apple, Inc.",
-       [3]byte{172, 229, 240}: "Doppler Labs",
-       [3]byte{172, 230, 75}:  "Shenzhen Baojia Battery Technology Co., Ltd.",
-       [3]byte{172, 231, 123}: "SICHUAN TIANYI COMHEART TELECOMCO.,LTD",
-       [3]byte{172, 232, 123}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{172, 232, 126}: "Bytemark Computer Consulting Ltd",
-       [3]byte{172, 233, 127}: "IoT Tech Limited",
-       [3]byte{172, 233, 170}: "Hay Systems Ltd",
-       [3]byte{172, 234, 106}: "GENIX INFOCOMM CO., LTD.",
-       [3]byte{172, 236, 128}: "ARRIS Group, Inc.",
-       [3]byte{172, 237, 92}:  "Intel Corporate",
-       [3]byte{172, 238, 59}:  "6harmonics Inc",
-       [3]byte{172, 238, 158}: "Samsung Electronics Co.,Ltd",
-       [3]byte{172, 240, 178}: "Becker Electronics Taiwan Ltd.",
-       [3]byte{172, 241, 223}: "D-Link International",
-       [3]byte{172, 242, 197}: "Cisco Systems, Inc",
-       [3]byte{172, 247, 243}: "Xiaomi Communications Co Ltd",
-       [3]byte{172, 248, 92}:  "Private",
-       [3]byte{172, 249, 126}: "ELESYS INC.",
-       [3]byte{172, 253, 147}: "Weifang GoerTek Technology Co.,Ltd.",
-       [3]byte{172, 253, 206}: "Intel Corporate",
-       [3]byte{172, 253, 236}: "Apple, Inc.",
-       [3]byte{176, 0, 180}:   "Cisco Systems, Inc",
-       [3]byte{176, 5, 148}:   "Liteon Technology Corporation",
-       [3]byte{176, 8, 191}:   "Vital Connect, Inc.",
-       [3]byte{176, 9, 211}:   "Avizia",
-       [3]byte{176, 9, 218}:   "Ring Solutions",
-       [3]byte{176, 16, 65}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{176, 18, 3}:    "Dynamics Hong Kong Limited",
-       [3]byte{176, 18, 102}:  "Futaba-Kikaku",
-       [3]byte{176, 20, 8}:    "LIGHTSPEED INTERNATIONAL CO.",
-       [3]byte{176, 23, 67}:   "EDISON GLOBAL CIRCUITS LLC",
-       [3]byte{176, 25, 198}:  "Apple, Inc.",
-       [3]byte{176, 27, 124}:  "Ontrol A.S.",
-       [3]byte{176, 27, 210}:  "Le Shi Zhi Xin Electronic Technology (Tianjin) Limited",
-       [3]byte{176, 28, 145}:  "Elim Co",
-       [3]byte{176, 31, 41}:   "Helvetia INC.",
-       [3]byte{176, 31, 129}:  "IEEE Registration Authority",
-       [3]byte{176, 36, 243}:  "Progeny Systems",
-       [3]byte{176, 37, 170}:  "Private",
-       [3]byte{176, 38, 40}:   "Broadcom Limited",
-       [3]byte{176, 52, 149}:  "Apple, Inc.",
-       [3]byte{176, 53, 11}:   "MOBIWIRE MOBILES (NINGBO) CO.,LTD",
-       [3]byte{176, 53, 141}:  "Nokia Corporation",
-       [3]byte{176, 53, 159}:  "Intel Corporate",
-       [3]byte{176, 56, 41}:   "Siliconware Precision Industries Co., Ltd.",
-       [3]byte{176, 56, 80}:   "Nanjing CAS-ZDC IOT SYSTEM CO.,LTD",
-       [3]byte{176, 57, 86}:   "NETGEAR",
-       [3]byte{176, 61, 150}:  "Vision Valley FZ LLC",
-       [3]byte{176, 62, 176}:  "MICRODIA Ltd.",
-       [3]byte{176, 64, 137}:  "Senient Systems LTD",
-       [3]byte{176, 65, 29}:   "ITTIM Technologies",
-       [3]byte{176, 67, 93}:   "NuLEDs, Inc.",
-       [3]byte{176, 69, 21}:   "mira fitness,LLC.",
-       [3]byte{176, 69, 25}:   "TCT mobile ltd",
-       [3]byte{176, 69, 69}:   "YACOUB Automation GmbH",
-       [3]byte{176, 70, 252}:  "MitraStar Technology Corp.",
-       [3]byte{176, 71, 191}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{176, 72, 26}:   "Apple, Inc.",
-       [3]byte{176, 72, 122}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{176, 73, 95}:   "OMRON HEALTHCARE Co., Ltd.",
-       [3]byte{176, 75, 191}:  "PT HAN SUNG ELECTORONICS INDONESIA",
-       [3]byte{176, 76, 5}:    "Fresenius Medical Care Deutschland GmbH",
-       [3]byte{176, 78, 38}:   "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{176, 80, 188}:  "SHENZHEN BASICOM ELECTRONIC CO.,LTD.",
-       [3]byte{176, 81, 142}:  "Holl technology CO.Ltd.",
-       [3]byte{176, 82, 22}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{176, 85, 8}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{176, 87, 6}:    "Vallox Oy",
-       [3]byte{176, 88, 196}:  "Broadcast Microwave Services, Inc",
-       [3]byte{176, 89, 71}:   "Shenzhen Qihu Intelligent Technology Company Limited",
-       [3]byte{176, 90, 218}:  "Hewlett Packard",
-       [3]byte{176, 91, 31}:   "THERMO FISHER SCIENTIFIC S.P.A.",
-       [3]byte{176, 91, 103}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{176, 92, 229}:  "Nokia Corporation",
-       [3]byte{176, 97, 199}:  "Ericsson-LG Enterprise",
-       [3]byte{176, 101, 99}:  "Shanghai Railway Communication Factory",
-       [3]byte{176, 101, 189}: "Apple, Inc.",
-       [3]byte{176, 104, 182}: "Hangzhou OYE Technology Co. Ltd",
-       [3]byte{176, 105, 113}: "DEI Sales, Inc.",
-       [3]byte{176, 108, 191}: "3ality Digital Systems GmbH",
-       [3]byte{176, 110, 191}: "ASUSTek COMPUTER INC.",
-       [3]byte{176, 112, 45}:  "Apple, Inc.",
-       [3]byte{176, 114, 191}: "Murata Manufacturing Co., Ltd.",
-       [3]byte{176, 117, 12}:  "QA Cafe",
-       [3]byte{176, 117, 77}:  "Nokia",
-       [3]byte{176, 117, 213}: "zte corporation",
-       [3]byte{176, 119, 172}: "ARRIS Group, Inc.",
-       [3]byte{176, 120, 112}: "Wi-NEXT, Inc.",
-       [3]byte{176, 120, 240}: "Beijing HuaqinWorld Technology Co.,Ltd.",
-       [3]byte{176, 121, 8}:   "Cummings Engineering",
-       [3]byte{176, 121, 60}:  "Revolv Inc",
-       [3]byte{176, 121, 148}: "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{176, 125, 71}:  "Cisco Systems, Inc",
-       [3]byte{176, 125, 98}:  "Dipl.-Ing. H. Horstmann GmbH",
-       [3]byte{176, 126, 112}: "Zadara Storage Ltd.",
-       [3]byte{176, 127, 185}: "NETGEAR",
-       [3]byte{176, 128, 140}: "Laser Light Engines",
-       [3]byte{176, 129, 216}: "I-sys Corp",
-       [3]byte{176, 131, 254}: "Dell Inc.",
-       [3]byte{176, 134, 158}: "Chloride S.r.L",
-       [3]byte{176, 136, 7}:   "Strata Worldwide",
-       [3]byte{176, 137, 0}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{176, 137, 145}: "LGE",
-       [3]byte{176, 137, 194}: "Zyptonite",
-       [3]byte{176, 142, 26}:  "URadio Systems Co., Ltd",
-       [3]byte{176, 144, 116}: "Fulan Electronics Limited",
-       [3]byte{176, 144, 212}: "Shenzhen Hoin Internet Technology Co., Ltd",
-       [3]byte{176, 145, 34}:  "Texas Instruments",
-       [3]byte{176, 145, 52}:  "Taleo",
-       [3]byte{176, 145, 55}:  "ISis ImageStream Internet Solutions, Inc",
-       [3]byte{176, 147, 91}:  "ARRIS Group, Inc.",
-       [3]byte{176, 149, 142}: "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{176, 150, 108}: "Lanbowan Technology Ltd.",
-       [3]byte{176, 151, 58}:  "E-Fuel Corporation",
-       [3]byte{176, 152, 43}:  "Sagemcom Broadband SAS",
-       [3]byte{176, 152, 159}: "LG CNS",
-       [3]byte{176, 153, 40}:  "FUJITSU LIMITED",
-       [3]byte{176, 154, 226}: "STEMMER IMAGING GmbH",
-       [3]byte{176, 155, 212}: "GNH Software India Private Limited",
-       [3]byte{176, 159, 186}: "Apple, Inc.",
-       [3]byte{176, 161, 10}:  "Pivotal Systems Corporation",
-       [3]byte{176, 162, 231}: "Shenzhen TINNO Mobile Technology Corp.",
-       [3]byte{176, 163, 126}: "Qingdao Haier Telecom Co.,Ltd",
-       [3]byte{176, 167, 42}:  "Ensemble Designs, Inc.",
-       [3]byte{176, 167, 55}:  "Roku, Inc.",
-       [3]byte{176, 168, 110}: "Juniper Networks",
-       [3]byte{176, 170, 54}:  "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{176, 170, 119}: "Cisco Systems, Inc",
-       [3]byte{176, 172, 250}: "FUJITSU LIMITED",
-       [3]byte{176, 173, 170}: "Avaya Inc",
-       [3]byte{176, 178, 143}: "Sagemcom Broadband SAS",
-       [3]byte{176, 178, 220}: "Zyxel Communications Corporation",
-       [3]byte{176, 179, 43}:  "Slican Sp. z o.o.",
-       [3]byte{176, 180, 72}:  "Texas Instruments",
-       [3]byte{176, 184, 213}: "Nanjing Nengrui Auto Equipment CO.,Ltd",
-       [3]byte{176, 185, 138}: "NETGEAR",
-       [3]byte{176, 189, 109}: "Echostreams Innovative Solutions",
-       [3]byte{176, 189, 161}: "ZAKLAD ELEKTRONICZNY SIMS",
-       [3]byte{176, 191, 153}: "WIZITDONGDO",
-       [3]byte{176, 192, 144}: "Chicony Electronics Co., Ltd.",
-       [3]byte{176, 193, 40}:  "Adler ELREHA GmbH",
-       [3]byte{176, 193, 158}: "zte corporation",
-       [3]byte{176, 194, 5}:   "BIONIME",
-       [3]byte{176, 194, 135}: "Technicolor CH USA Inc.",
-       [3]byte{176, 196, 108}: "Senseit",
-       [3]byte{176, 196, 231}: "Samsung Electronics Co.,Ltd",
-       [3]byte{176, 197, 84}:  "D-Link International",
-       [3]byte{176, 197, 89}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{176, 197, 202}: "IEEE Registration Authority",
-       [3]byte{176, 198, 154}: "Juniper Networks",
-       [3]byte{176, 199, 69}:  "BUFFALO.INC",
-       [3]byte{176, 200, 63}:  "Jiangsu Cynray IOT Co., Ltd.",
-       [3]byte{176, 200, 173}: "People Power Company",
-       [3]byte{176, 201, 91}:  "Beijing Symtech CO.,LTD",
-       [3]byte{176, 202, 104}: "Apple, Inc.",
-       [3]byte{176, 206, 24}:  "Zhejiang shenghui lighting co.,Ltd",
-       [3]byte{176, 207, 77}:  "MI-Zone Technology Ireland",
-       [3]byte{176, 208, 156}: "Samsung Electronics Co.,Ltd",
-       [3]byte{176, 210, 245}: "Vello Systems, Inc.",
-       [3]byte{176, 213, 157}: "Shenzhen Zowee Technology Co., Ltd",
-       [3]byte{176, 213, 204}: "Texas Instruments",
-       [3]byte{176, 215, 197}: "Logipix Ltd",
-       [3]byte{176, 215, 204}: "Tridonic GmbH & Co KG",
-       [3]byte{176, 218, 0}:   "CERA ELECTRONIQUE",
-       [3]byte{176, 218, 249}: "ARRIS Group, Inc.",
-       [3]byte{176, 223, 58}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{176, 223, 193}: "Tenda Technology Co.,Ltd.Dongguan branch",
-       [3]byte{176, 224, 60}:  "TCT mobile ltd",
-       [3]byte{176, 225, 126}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{176, 226, 53}:  "Xiaomi Communications Co Ltd",
-       [3]byte{176, 226, 229}: "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{176, 227, 157}: "CAT SYSTEM CO.,LTD.",
-       [3]byte{176, 229, 14}:  "NRG SYSTEMS INC",
-       [3]byte{176, 229, 237}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{176, 231, 84}:  "2Wire Inc",
-       [3]byte{176, 232, 146}: "Seiko Epson Corporation",
-       [3]byte{176, 233, 126}: "Advanced Micro Peripherals",
-       [3]byte{176, 234, 188}: "ASKEY COMPUTER CORP",
-       [3]byte{176, 236, 113}: "Samsung Electronics Co.,Ltd",
-       [3]byte{176, 236, 143}: "GMX SAS",
-       [3]byte{176, 236, 225}: "Private",
-       [3]byte{176, 238, 69}:  "AzureWave Technology Inc.",
-       [3]byte{176, 238, 123}: "Roku, Inc",
-       [3]byte{176, 241, 163}: "Fengfan (BeiJing) Technology Co., Ltd.",
-       [3]byte{176, 241, 188}: "Dhemax Ingenieros Ltda",
-       [3]byte{176, 241, 236}: "AMPAK Technology, Inc.",
-       [3]byte{176, 248, 147}: "Shanghai MXCHIP Information Technology Co., Ltd.",
-       [3]byte{176, 249, 99}:  "Hangzhou H3C Technologies Co., Limited",
-       [3]byte{176, 250, 235}: "Cisco Systems, Inc",
-       [3]byte{176, 252, 54}:  "CyberTAN Technology Inc.",
-       [3]byte{176, 254, 189}: "Private",
-       [3]byte{180, 0, 22}:    "INGENICO TERMINALS SAS",
-       [3]byte{180, 0, 156}:   "CableWorld Ltd.",
-       [3]byte{180, 1, 66}:    "GCI Science & Technology Co.,LTD",
-       [3]byte{180, 4, 24}:    "Smartchip Integrated Inc.",
-       [3]byte{180, 5, 102}:   "SP Best Corporation Co., LTD.",
-       [3]byte{180, 7, 249}:   "SAMSUNG ELECTRO MECHANICS CO., LTD.",
-       [3]byte{180, 8, 50}:    "TC Communications",
-       [3]byte{180, 10, 198}:  "DEXON Systems Ltd.",
-       [3]byte{180, 11, 68}:   "Smartisan Technology Co., Ltd.",
-       [3]byte{180, 11, 122}:  "Brusa Elektronik AG",
-       [3]byte{180, 12, 37}:   "Palo Alto Networks",
-       [3]byte{180, 14, 150}:  "HERAN",
-       [3]byte{180, 14, 220}:  "LG-Ericsson Co.,Ltd.",
-       [3]byte{180, 15, 59}:   "Tenda Technology Co.,Ltd.Dongguan branch",
-       [3]byte{180, 20, 137}:  "Cisco Systems, Inc",
-       [3]byte{180, 21, 19}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{180, 23, 128}:  "DTI Group Ltd",
-       [3]byte{180, 24, 209}:  "Apple, Inc.",
-       [3]byte{180, 29, 239}:  "Internet Laboratories, Inc.",
-       [3]byte{180, 33, 29}:   "Beijing GuangXin Technology Co., Ltd",
-       [3]byte{180, 33, 138}:  "Dog Hunter LLC",
-       [3]byte{180, 36, 231}:  "Codetek Technology Co.,Ltd",
-       [3]byte{180, 40, 241}:  "E-Prime Co., Ltd.",
-       [3]byte{180, 41, 61}:   "Shenzhen Urovo Technology Co.,Ltd.",
-       [3]byte{180, 42, 14}:   "Technicolor CH USA Inc.",
-       [3]byte{180, 42, 57}:   "ORBIT MERRET, spol. s r. o.",
-       [3]byte{180, 44, 146}:  "Zhejiang Weirong Electronic Co., Ltd",
-       [3]byte{180, 44, 190}:  "Direct Payment Solutions Limited",
-       [3]byte{180, 45, 86}:   "Extreme Networks, Inc.",
-       [3]byte{180, 48, 82}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{180, 48, 192}:  "York Instruments Ltd",
-       [3]byte{180, 49, 184}:  "Aviwest",
-       [3]byte{180, 52, 108}:  "MATSUNICHI DIGITAL TECHNOLOGY (HONG KONG) LIMITED",
-       [3]byte{180, 53, 100}:  "Fujian Tian Cheng Electron Science & Technical Development Co.,Ltd.",
-       [3]byte{180, 53, 247}:  "Zhejiang Pearmain Electronics Co.ltd.",
-       [3]byte{180, 54, 169}:  "Fibocom Wireless Inc.",
-       [3]byte{180, 54, 227}:  "KBVISION GROUP",
-       [3]byte{180, 55, 65}:   "Consert, Inc.",
-       [3]byte{180, 55, 209}:  "IEEE Registration Authority",
-       [3]byte{180, 57, 52}:   "Pen Generations, Inc.",
-       [3]byte{180, 57, 214}:  "ProCurve Networking by HP",
-       [3]byte{180, 58, 40}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{180, 61, 178}:  "Degreane Horizon",
-       [3]byte{180, 62, 59}:   "Viableware, Inc",
-       [3]byte{180, 65, 122}:  "SHENZHEN GONGJIN ELECTRONICS CO.,LT",
-       [3]byte{180, 67, 13}:   "Broadlink Pty Ltd",
-       [3]byte{180, 71, 94}:   "Avaya Inc",
-       [3]byte{180, 75, 210}:  "Apple, Inc.",
-       [3]byte{180, 76, 194}:  "NR ELECTRIC CO., LTD",
-       [3]byte{180, 79, 150}:  "Zhejiang Xinzailing Technology co., ltd",
-       [3]byte{180, 81, 249}:  "NB Software",
-       [3]byte{180, 82, 83}:   "Seagate Technology",
-       [3]byte{180, 82, 125}:  "Sony Mobile Communications AB",
-       [3]byte{180, 82, 126}:  "Sony Mobile Communications AB",
-       [3]byte{180, 85, 112}:  "Borea",
-       [3]byte{180, 86, 185}:  "Teraspek Technologies Co.,Ltd",
-       [3]byte{180, 88, 97}:   "CRemote, LLC",
-       [3]byte{180, 92, 164}:  "Thing-talk Wireless Communication Technologies Corporation Limited",
-       [3]byte{180, 93, 80}:   "Aruba Networks",
-       [3]byte{180, 97, 255}:  "Lumigon A/S",
-       [3]byte{180, 98, 56}:   "Exablox",
-       [3]byte{180, 98, 147}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{180, 98, 173}:  "Elysia Germany GmbH",
-       [3]byte{180, 102, 152}: "Zealabs srl",
-       [3]byte{180, 103, 233}: "Qingdao GoerTek Technology Co., Ltd.",
-       [3]byte{180, 109, 53}:  "Dalian Seasky Automation Co;Ltd",
-       [3]byte{180, 109, 131}: "Intel Corporate",
-       [3]byte{180, 115, 86}:  "Hangzhou Treebear Networking Co., Ltd.",
-       [3]byte{180, 116, 67}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{180, 116, 71}:  "CoreOS",
-       [3]byte{180, 116, 159}: "ASKEY COMPUTER CORP",
-       [3]byte{180, 117, 14}:  "Belkin International Inc.",
-       [3]byte{180, 121, 167}: "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
-       [3]byte{180, 124, 41}:  "Shenzhen Guzidi Technology Co.,Ltd",
-       [3]byte{180, 124, 156}: "Amazon Technologies Inc.",
-       [3]byte{180, 127, 94}:  "Foresight Manufacture (S) Pte Ltd",
-       [3]byte{180, 130, 85}:  "Research Products Corporation",
-       [3]byte{180, 130, 123}: "AKG Acoustics GmbH",
-       [3]byte{180, 130, 197}: "Relay2, Inc.",
-       [3]byte{180, 130, 254}: "ASKEY COMPUTER CORP",
-       [3]byte{180, 133, 71}:  "Amptown System Company GmbH",
-       [3]byte{180, 137, 16}:  "Coster T.E. S.P.A.",
-       [3]byte{180, 139, 25}:  "Apple, Inc.",
-       [3]byte{180, 148, 78}:  "WeTelecom Co., Ltd.",
-       [3]byte{180, 150, 145}: "Intel Corporate",
-       [3]byte{180, 152, 66}:  "zte corporation",
-       [3]byte{180, 153, 76}:  "Texas Instruments",
-       [3]byte{180, 153, 186}: "Hewlett Packard",
-       [3]byte{180, 156, 223}: "Apple, Inc.",
-       [3]byte{180, 157, 11}:  "BQ",
-       [3]byte{180, 157, 180}: "Axion Technologies Inc.",
-       [3]byte{180, 158, 172}: "Imagik Int'l Corp",
-       [3]byte{180, 158, 230}: "SHENZHEN TECHNOLOGY CO LTD",
-       [3]byte{180, 163, 130}: "Hangzhou Hikvision Digital Technology Co.,Ltd.",
-       [3]byte{180, 164, 181}: "Zen Eye Co.,Ltd",
-       [3]byte{180, 164, 227}: "Cisco Systems, Inc",
-       [3]byte{180, 165, 169}: "MODI GmbH",
-       [3]byte{180, 165, 239}: "Sercomm Corporation.",
-       [3]byte{180, 168, 40}:  "Shenzhen Concox Information Technology Co., Ltd",
-       [3]byte{180, 168, 43}:  "Histar Digital Electronics Co., Ltd.",
-       [3]byte{180, 169, 90}:  "Avaya Inc",
-       [3]byte{180, 169, 132}: "Symantec Corporation",
-       [3]byte{180, 169, 254}: "GHIA Technology (Shenzhen) LTD",
-       [3]byte{180, 170, 77}:  "Ensequence, Inc.",
-       [3]byte{180, 171, 44}:  "MtM Technology Corporation",
-       [3]byte{180, 174, 43}:  "Microsoft",
-       [3]byte{180, 174, 111}: "Circle Reliance, Inc DBA Cranberry Networks",
-       [3]byte{180, 176, 23}:  "Avaya Inc",
-       [3]byte{180, 177, 90}:  "Siemens AG Energy Management Division",
-       [3]byte{180, 178, 101}: "DAEHO I&T",
-       [3]byte{180, 179, 98}:  "zte corporation",
-       [3]byte{180, 179, 132}: "ShenZhen Figigantic Electronic Co.,Ltd",
-       [3]byte{180, 181, 47}:  "Hewlett Packard",
-       [3]byte{180, 181, 66}:  "Hubbell Power Systems, Inc.",
-       [3]byte{180, 181, 175}: "Minsung Electronics",
-       [3]byte{180, 182, 118}: "Intel Corporate",
-       [3]byte{180, 184, 89}:  "Texa Spa",
-       [3]byte{180, 184, 141}: "Thuh Company",
-       [3]byte{180, 191, 246}: "Samsung Electronics Co.,Ltd",
-       [3]byte{180, 193, 112}: "Yi chip Microelectronics (Hangzhou) Co., Ltd",
-       [3]byte{180, 196, 78}:  "VXL eTech Pvt Ltd",
-       [3]byte{180, 198, 248}: "Axilspot Communication",
-       [3]byte{180, 199, 153}: "Extreme Networks, Inc.",
-       [3]byte{180, 200, 16}:  "UMPI Elettronica",
-       [3]byte{180, 204, 233}: "PROSYST",
-       [3]byte{180, 206, 246}: "HTC Corporation",
-       [3]byte{180, 207, 219}: "Shenzhen Jiuzhou Electric Co.,LTD",
-       [3]byte{180, 209, 53}:  "Cloudistics",
-       [3]byte{180, 213, 189}: "Intel Corporate",
-       [3]byte{180, 214, 78}:  "Caldero Limited",
-       [3]byte{180, 216, 169}: "BetterBots",
-       [3]byte{180, 216, 222}: "iota Computing, Inc.",
-       [3]byte{180, 221, 21}:  "ControlThings Oy Ab",
-       [3]byte{180, 223, 59}:  "Chromlech",
-       [3]byte{180, 223, 250}: "Litemax Electronics Inc.",
-       [3]byte{180, 224, 205}: "Fusion-io, Inc",
-       [3]byte{180, 225, 15}:  "Dell Inc.",
-       [3]byte{180, 225, 196}: "Microsoft Mobile Oy",
-       [3]byte{180, 225, 235}: "Private",
-       [3]byte{180, 230, 42}:  "LG Innotek",
-       [3]byte{180, 231, 130}: "Vivalnk",
-       [3]byte{180, 233, 176}: "Cisco Systems, Inc",
-       [3]byte{180, 237, 25}:  "Pie Digital, Inc.",
-       [3]byte{180, 237, 84}:  "Wohler Technologies",
-       [3]byte{180, 238, 180}: "ASKEY COMPUTER CORP",
-       [3]byte{180, 238, 212}: "Texas Instruments",
-       [3]byte{180, 239, 4}:   "DAIHAN Scientific Co., Ltd.",
-       [3]byte{180, 239, 57}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{180, 239, 250}: "Lemobile Information Technology (Beijing) Co., Ltd.",
-       [3]byte{180, 240, 171}: "Apple, Inc.",
-       [3]byte{180, 241, 218}: "LG Electronics (Mobile Communications)",
-       [3]byte{180, 242, 232}: "ARRIS Group, Inc.",
-       [3]byte{180, 243, 35}:  "PETATEL INC.",
-       [3]byte{180, 246, 28}:  "Apple, Inc.",
-       [3]byte{180, 248, 30}:  "Kinova",
-       [3]byte{180, 251, 228}: "Ubiquiti Networks Inc.",
-       [3]byte{180, 252, 117}: "SEMA Electronics(HK) CO.,LTD",
-       [3]byte{180, 254, 140}: "Centro Sicurezza Italia SpA",
-       [3]byte{184, 0, 24}:    "Htel",
-       [3]byte{184, 3, 5}:     "Intel Corporate",
-       [3]byte{184, 4, 21}:    "Bayan Audio",
-       [3]byte{184, 5, 171}:   "zte corporation",
-       [3]byte{184, 7, 22}:    "vivo Mobile Communication Co., Ltd.",
-       [3]byte{184, 8, 207}:   "Intel Corporate",
-       [3]byte{184, 8, 215}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{184, 9, 138}:   "Apple, Inc.",
-       [3]byte{184, 11, 157}:  "ROPEX Industrie-Elektronik GmbH",
-       [3]byte{184, 19, 233}:  "Trace Live Network",
-       [3]byte{184, 20, 19}:   "Keen High Holding(HK) Ltd.",
-       [3]byte{184, 22, 25}:   "ARRIS Group, Inc.",
-       [3]byte{184, 22, 219}:  "CHANT SINCERE CO.,LTD",
-       [3]byte{184, 23, 194}:  "Apple, Inc.",
-       [3]byte{184, 24, 111}:  "ORIENTAL MOTOR CO., LTD.",
-       [3]byte{184, 25, 153}:  "Nesys",
-       [3]byte{184, 29, 170}:  "LG Electronics (Mobile Communications)",
-       [3]byte{184, 32, 231}:  "Guangzhou Horizontal Information & Network Integration Co. Ltd",
-       [3]byte{184, 34, 79}:   "SICHUAN TIANYI COMHEART TELECOMCO., LTD",
-       [3]byte{184, 36, 16}:   "Magneti Marelli Slovakia s.r.o.",
-       [3]byte{184, 36, 26}:   "SWEDA INFORMATICA LTDA",
-       [3]byte{184, 36, 240}:  "SOYO Technology Development Co., Ltd.",
-       [3]byte{184, 38, 108}:  "ANOV France",
-       [3]byte{184, 38, 212}:  "Furukawa Industrial S.A. Produtos Elétricos",
-       [3]byte{184, 39, 235}:  "Raspberry Pi Foundation",
-       [3]byte{184, 40, 139}:  "Parker Hannifin Manufacturing (UK) Ltd",
-       [3]byte{184, 41, 247}:  "Blaster Tech",
-       [3]byte{184, 42, 114}:  "Dell Inc.",
-       [3]byte{184, 42, 220}:  "EFR Europäische Funk-Rundsteuerung GmbH",
-       [3]byte{184, 44, 160}:  "Honeywell HomMed",
-       [3]byte{184, 48, 168}:  "Road-Track Telematics Development",
-       [3]byte{184, 50, 65}:   "Wuhan Tianyu Information Industry Co., Ltd.",
-       [3]byte{184, 54, 216}:  "Videoswitch",
-       [3]byte{184, 55, 101}:  "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{184, 56, 97}:   "Cisco Systems, Inc",
-       [3]byte{184, 56, 202}:  "Kyokko Tsushin System CO.,LTD",
-       [3]byte{184, 58, 8}:    "Tenda Technology Co.,Ltd.Dongguan branch",
-       [3]byte{184, 58, 123}:  "Worldplay (Canada) Inc.",
-       [3]byte{184, 58, 157}:  "Alarm.com",
-       [3]byte{184, 61, 78}:   "Shenzhen Cultraview Digital Technology Co.,Ltd Shanghai Branch",
-       [3]byte{184, 62, 89}:   "Roku, Inc.",
-       [3]byte{184, 65, 95}:   "ASP AG",
-       [3]byte{184, 67, 228}:  "Vlatacom",
-       [3]byte{184, 68, 217}:  "Apple, Inc.",
-       [3]byte{184, 71, 198}:  "SanJet Technology Corp.",
-       [3]byte{184, 79, 213}:  "Microsoft Corporation",
-       [3]byte{184, 80, 1}:    "Extreme Networks, Inc.",
-       [3]byte{184, 83, 172}:  "Apple, Inc.",
-       [3]byte{184, 85, 16}:   "Zioncom Electronics (Shenzhen) Ltd.",
-       [3]byte{184, 86, 189}:  "ITT LLC",
-       [3]byte{184, 87, 216}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{184, 88, 16}:   "NUMERA, INC.",
-       [3]byte{184, 90, 115}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{184, 90, 247}:  "Ouya, Inc",
-       [3]byte{184, 90, 254}:  "Handaer Communication Technology (Beijing) Co., Ltd",
-       [3]byte{184, 94, 123}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{184, 96, 145}:  "Onnet Technologies and Innovations LLC",
-       [3]byte{184, 97, 111}:  "Accton Technology Corp",
-       [3]byte{184, 98, 31}:   "Cisco Systems, Inc",
-       [3]byte{184, 99, 77}:   "Apple, Inc.",
-       [3]byte{184, 99, 188}:  "ROBOTIS, Co, Ltd",
-       [3]byte{184, 100, 145}: "CK Telecom Ltd",
-       [3]byte{184, 101, 59}:  "Bolymin, Inc.",
-       [3]byte{184, 105, 194}: "Sunitec Enterprise Co., Ltd.",
-       [3]byte{184, 107, 35}:  "Toshiba",
-       [3]byte{184, 108, 232}: "Samsung Electronics Co.,Ltd",
-       [3]byte{184, 112, 244}: "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
-       [3]byte{184, 116, 36}:  "Viessmann Elektronik GmbH",
-       [3]byte{184, 116, 71}:  "Convergence Technologies",
-       [3]byte{184, 117, 192}: "PayPal, Inc.",
-       [3]byte{184, 118, 63}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{184, 119, 195}: "METER Group",
-       [3]byte{184, 120, 46}:  "Apple, Inc.",
-       [3]byte{184, 120, 121}: "Roche Diagnostics GmbH",
-       [3]byte{184, 121, 126}: "Secure Meters (UK) Limited",
-       [3]byte{184, 122, 201}: "Siemens Ltd.",
-       [3]byte{184, 124, 242}: "Aerohive Networks Inc.",
-       [3]byte{184, 129, 152}: "Intel Corporate",
-       [3]byte{184, 134, 135}: "Liteon Technology Corporation",
-       [3]byte{184, 135, 30}:  "Good Mind Industries Co., Ltd.",
-       [3]byte{184, 135, 168}: "Step Ahead Innovations Inc.",
-       [3]byte{184, 136, 227}: "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
-       [3]byte{184, 137, 129}: "Chengdu InnoThings Technology Co., Ltd.",
-       [3]byte{184, 137, 202}: "ILJIN ELECTRIC Co., Ltd.",
-       [3]byte{184, 138, 96}:  "Intel Corporate",
-       [3]byte{184, 141, 18}:  "Apple, Inc.",
-       [3]byte{184, 142, 58}:  "Infinite Technologies JLT",
-       [3]byte{184, 142, 198}: "Stateless Networks",
-       [3]byte{184, 142, 223}: "Zencheer Communication Technology Co., Ltd.",
-       [3]byte{184, 143, 20}:  "Analytica GmbH",
-       [3]byte{184, 146, 29}:  "BG T&A",
-       [3]byte{184, 148, 210}: "Retail Innovation HTT AB",
-       [3]byte{184, 150, 116}: "AllDSP GmbH & Co. KG",
-       [3]byte{184, 151, 90}:  "BIOSTAR Microtech Int'l Corp.",
-       [3]byte{184, 152, 176}: "Atlona Inc.",
-       [3]byte{184, 152, 247}: "Gionee Communication Equipment Co,Ltd.ShenZhen",
-       [3]byte{184, 153, 25}:  "7signal Solutions, Inc",
-       [3]byte{184, 153, 176}: "Cohere Technologies",
-       [3]byte{184, 154, 205}: "ELITE OPTOELECTRONIC(ASIA)CO.,LTD",
-       [3]byte{184, 154, 237}: "OceanServer Technology, Inc",
-       [3]byte{184, 155, 201}: "SMC Networks Inc",
-       [3]byte{184, 155, 228}: "ABB Power Systems Power Generation",
-       [3]byte{184, 161, 117}: "Roku, Inc.",
-       [3]byte{184, 163, 134}: "D-Link International",
-       [3]byte{184, 163, 224}: "BenRui Technology Co.,Ltd",
-       [3]byte{184, 168, 175}: "Logic S.p.A.",
-       [3]byte{184, 172, 111}: "Dell Inc.",
-       [3]byte{184, 173, 62}:  "BLUECOM",
-       [3]byte{184, 174, 110}: "Nintendo Co., Ltd.",
-       [3]byte{184, 174, 237}: "Elitegroup Computer Systems Co.,Ltd.",
-       [3]byte{184, 175, 103}: "Hewlett Packard",
-       [3]byte{184, 177, 199}: "BT&COM CO.,LTD",
-       [3]byte{184, 178, 235}: "Googol Technology (HK) Limited",
-       [3]byte{184, 179, 220}: "DEREK (SHAOGUAN) LIMITED",
-       [3]byte{184, 180, 46}:  "Gionee Communication Equipment Co,Ltd.ShenZhen",
-       [3]byte{184, 183, 215}: "2GIG Technologies",
-       [3]byte{184, 184, 30}:  "Intel Corporate",
-       [3]byte{184, 185, 78}:  "Shenzhen iBaby Labs, Inc.",
-       [3]byte{184, 186, 104}: "Xi'an Jizhong Digital Communication Co.,Ltd",
-       [3]byte{184, 186, 114}: "Cynove",
-       [3]byte{184, 187, 35}:  "Guangdong Nufront CSC Co., Ltd",
-       [3]byte{184, 187, 109}: "ENERES Co.,Ltd.",
-       [3]byte{184, 187, 175}: "Samsung Electronics Co.,Ltd",
-       [3]byte{184, 188, 27}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{184, 189, 121}: "TrendPoint Systems",
-       [3]byte{184, 190, 191}: "Cisco Systems, Inc",
-       [3]byte{184, 191, 131}: "Intel Corporate",
-       [3]byte{184, 193, 17}:  "Apple, Inc.",
-       [3]byte{184, 193, 162}: "Dragon Path Technologies Co., Limited",
-       [3]byte{184, 195, 191}: "Henan Chengshi NetWork Technology Co.,Ltd",
-       [3]byte{184, 196, 111}: "PRIMMCON INDUSTRIES INC",
-       [3]byte{184, 198, 142}: "Samsung Electronics Co.,Ltd",
-       [3]byte{184, 199, 22}:  "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{184, 199, 93}:  "Apple, Inc.",
-       [3]byte{184, 200, 85}:  "Shanghai GBCOM Communication Technology Co.,Ltd.",
-       [3]byte{184, 200, 235}: "ITEL MOBILE LIMITED",
-       [3]byte{184, 202, 4}:   "Holtek Semiconductor Inc.",
-       [3]byte{184, 202, 58}:  "Dell Inc.",
-       [3]byte{184, 205, 147}: "Penetek, Inc",
-       [3]byte{184, 205, 167}: "Maxeler Technologies Ltd.",
-       [3]byte{184, 208, 111}: "GUANGZHOU HKUST FOK YING TUNG RESEARCH INSTITUTE",
-       [3]byte{184, 212, 157}: "M Seven System Ltd.",
-       [3]byte{184, 213, 11}:  "Sunitec Enterprise Co.,Ltd",
-       [3]byte{184, 215, 175}: "Murata Manufacturing Co., Ltd.",
-       [3]byte{184, 216, 18}:  "IEEE Registration Authority",
-       [3]byte{184, 217, 77}:  "Sagemcom Broadband SAS",
-       [3]byte{184, 217, 206}: "Samsung Electronics Co.,Ltd",
-       [3]byte{184, 218, 241}: "Strahlenschutz- Entwicklungs- und Ausruestungsgesellschaft mbH",
-       [3]byte{184, 218, 247}: "Advanced Photonics, Inc.",
-       [3]byte{184, 219, 28}:  "Integrated Device Technology (Malaysia) Sdn. Bhd.",
-       [3]byte{184, 220, 135}: "IAI Corporation",
-       [3]byte{184, 223, 107}: "SpotCam Co., Ltd.",
-       [3]byte{184, 229, 137}: "Payter BV",
-       [3]byte{184, 230, 37}:  "2Wire Inc",
-       [3]byte{184, 231, 121}: "9Solutions Oy",
-       [3]byte{184, 232, 86}:  "Apple, Inc.",
-       [3]byte{184, 233, 55}:  "Sonos, Inc.",
-       [3]byte{184, 234, 170}: "ICG NETWORKS CO.,ltd",
-       [3]byte{184, 236, 163}: "Zyxel Communications Corporation",
-       [3]byte{184, 238, 14}:  "Sagemcom Broadband SAS",
-       [3]byte{184, 238, 101}: "Liteon Technology Corporation",
-       [3]byte{184, 238, 121}: "YWire Technologies, Inc.",
-       [3]byte{184, 240, 128}: "SPS, INC.",
-       [3]byte{184, 243, 23}:  "iSun Smasher Communications Private Limited",
-       [3]byte{184, 244, 208}: "Herrmann Ultraschalltechnik GmbH & Co. Kg",
-       [3]byte{184, 245, 231}: "WayTools, LLC",
-       [3]byte{184, 246, 177}: "Apple, Inc.",
-       [3]byte{184, 247, 50}:  "Aryaka Networks Inc",
-       [3]byte{184, 247, 74}:  "RCNTEC",
-       [3]byte{184, 248, 40}:  "Changshu Gaoshida Optoelectronic Technology Co. Ltd.",
-       [3]byte{184, 248, 131}: "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{184, 248, 190}: "BLUECOM",
-       [3]byte{184, 249, 52}:  "Sony Mobile Communications AB",
-       [3]byte{184, 252, 154}: "Le Shi Zhi Xin Electronic Technology (Tianjin) Limited",
-       [3]byte{184, 253, 50}:  "Zhejiang ROICX Microelectronics",
-       [3]byte{184, 255, 97}:  "Apple, Inc.",
-       [3]byte{184, 255, 111}: "Shanghai Typrotech Technology Co.Ltd",
-       [3]byte{184, 255, 179}: "MitraStar Technology Corp.",
-       [3]byte{184, 255, 254}: "Texas Instruments",
-       [3]byte{188, 2, 0}:     "Stewart Audio",
-       [3]byte{188, 2, 74}:    "HMD Global Oy",
-       [3]byte{188, 5, 67}:    "AVM GmbH",
-       [3]byte{188, 13, 165}:  "Texas Instruments",
-       [3]byte{188, 15, 43}:   "FORTUNE TECHGROUP CO.,LTD",
-       [3]byte{188, 15, 100}:  "Intel Corporate",
-       [3]byte{188, 18, 94}:   "Beijing  WisVideo  INC.",
-       [3]byte{188, 20, 1}:    "Hitron Technologies. Inc",
-       [3]byte{188, 20, 133}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{188, 20, 239}:  "ITON Technology Limited",
-       [3]byte{188, 21, 166}:  "Taiwan Jantek Electronics,Ltd.",
-       [3]byte{188, 21, 172}:  "Vodafone Italia S.p.A.",
-       [3]byte{188, 22, 101}:  "Cisco Systems, Inc",
-       [3]byte{188, 22, 245}:  "Cisco Systems, Inc",
-       [3]byte{188, 26, 103}:  "YF Technology Co., Ltd",
-       [3]byte{188, 28, 129}:  "Sichuan iLink Technology Co., Ltd.",
-       [3]byte{188, 32, 164}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{188, 32, 186}:  "Inspur (Shandong) Electronic Information Co., Ltd",
-       [3]byte{188, 37, 224}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{188, 37, 240}:  "3D Display Technologies Co., Ltd.",
-       [3]byte{188, 38, 29}:   "HONG KONG TECON TECHNOLOGY",
-       [3]byte{188, 40, 44}:   "e-Smart Systems Pvt. Ltd",
-       [3]byte{188, 40, 70}:   "NextBIT Computing Pvt. Ltd.",
-       [3]byte{188, 40, 214}:  "Rowley Associates Limited",
-       [3]byte{188, 43, 107}:  "Beijing Haier IC Design Co.,Ltd",
-       [3]byte{188, 43, 215}:  "Revogi Innovation Co., Ltd.",
-       [3]byte{188, 44, 85}:   "Bear Flag Design, Inc.",
-       [3]byte{188, 45, 152}:  "ThinGlobal LLC",
-       [3]byte{188, 46, 72}:   "ARRIS Group, Inc.",
-       [3]byte{188, 47, 61}:   "vivo Mobile Communication Co., Ltd.",
-       [3]byte{188, 48, 91}:   "Dell Inc.",
-       [3]byte{188, 48, 125}:  "Wistron Neweb Corporation",
-       [3]byte{188, 48, 126}:  "Wistron Neweb Corporation",
-       [3]byte{188, 52, 0}:    "IEEE Registration Authority",
-       [3]byte{188, 53, 229}:  "Hydro Systems Company",
-       [3]byte{188, 56, 210}:  "Pandachip Limited",
-       [3]byte{188, 57, 166}:  "CSUN System Technology Co.,LTD",
-       [3]byte{188, 57, 217}:  "Z-TEC",
-       [3]byte{188, 58, 234}:  "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{188, 59, 175}:  "Apple, Inc.",
-       [3]byte{188, 61, 133}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{188, 62, 19}:   "Accordance Systems Inc.",
-       [3]byte{188, 63, 143}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{188, 65, 0}:    "CODACO ELECTRONIC s.r.o.",
-       [3]byte{188, 65, 1}:    "Shenzhen TINNO Mobile Technology Corp.",
-       [3]byte{188, 67, 119}:  "Hang Zhou Huite Technology Co.,ltd.",
-       [3]byte{188, 68, 52}:   "Shenzhen TINNO Mobile Technology Corp.",
-       [3]byte{188, 68, 134}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{188, 68, 176}:  "Elastifile",
-       [3]byte{188, 69, 46}:   "Knowledge Development for POF S.L.",
-       [3]byte{188, 70, 153}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{188, 71, 96}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{188, 75, 121}:  "SensingTek",
-       [3]byte{188, 76, 196}:  "Apple, Inc.",
-       [3]byte{188, 77, 251}:  "Hitron Technologies. Inc",
-       [3]byte{188, 78, 60}:   "CORE STAFF CO., LTD.",
-       [3]byte{188, 78, 93}:   "ZhongMiao Technology Co., Ltd.",
-       [3]byte{188, 81, 254}:  "Swann communications Pty Ltd",
-       [3]byte{188, 82, 180}:  "Nokia",
-       [3]byte{188, 82, 183}:  "Apple, Inc.",
-       [3]byte{188, 84, 54}:   "Apple, Inc.",
-       [3]byte{188, 84, 81}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{188, 84, 249}:  "Drogoo Technology Co., Ltd.",
-       [3]byte{188, 84, 252}:  "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.",
-       [3]byte{188, 92, 76}:   "ELECOM CO.,LTD.",
-       [3]byte{188, 95, 244}:  "ASRock Incorporation",
-       [3]byte{188, 95, 246}:  "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.",
-       [3]byte{188, 96, 16}:   "Qingdao Hisense Communications Co.,Ltd.",
-       [3]byte{188, 96, 167}:  "Sony Interactive Entertainment Inc.",
-       [3]byte{188, 98, 14}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{188, 98, 159}:  "Telenet Systems P. Ltd.",
-       [3]byte{188, 100, 75}:  "ARRIS Group, Inc.",
-       [3]byte{188, 102, 65}:  "IEEE Registration Authority",
-       [3]byte{188, 102, 222}: "Shadow Creator Information Technology Co.,Ltd.",
-       [3]byte{188, 103, 28}:  "Cisco Systems, Inc",
-       [3]byte{188, 103, 120}: "Apple, Inc.",
-       [3]byte{188, 103, 132}: "Environics Oy",
-       [3]byte{188, 106, 22}:  "tdvine",
-       [3]byte{188, 106, 41}:  "Texas Instruments",
-       [3]byte{188, 106, 47}:  "Henge Docks LLC",
-       [3]byte{188, 106, 68}:  "Commend International GmbH",
-       [3]byte{188, 107, 77}:  "Nokia",
-       [3]byte{188, 108, 33}:  "Apple, Inc.",
-       [3]byte{188, 110, 100}: "Sony Mobile Communications AB",
-       [3]byte{188, 110, 118}: "Green Energy Options Ltd",
-       [3]byte{188, 113, 193}: "XTrillion, Inc.",
-       [3]byte{188, 114, 177}: "Samsung Electronics Co.,Ltd",
-       [3]byte{188, 116, 215}: "HangZhou JuRu Technology CO.,LTD",
-       [3]byte{188, 117, 116}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{188, 118, 78}:  "Rackspace US, Inc.",
-       [3]byte{188, 118, 94}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{188, 118, 112}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{188, 119, 55}:  "Intel Corporate",
-       [3]byte{188, 119, 159}: "SBM Co., Ltd.",
-       [3]byte{188, 121, 173}: "Samsung Electronics Co.,Ltd",
-       [3]byte{188, 125, 209}: "Radio Data Comms",
-       [3]byte{188, 129, 31}:  "Ingate Systems",
-       [3]byte{188, 129, 153}: "BASIC Co.,Ltd.",
-       [3]byte{188, 130, 93}:  "MITSUMI ELECTRIC CO.,LTD.",
-       [3]byte{188, 131, 133}: "Microsoft Corporation",
-       [3]byte{188, 131, 167}: "SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD",
-       [3]byte{188, 133, 31}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{188, 133, 86}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{188, 136, 147}: "VILLBAU Ltd.",
-       [3]byte{188, 136, 195}: "Ningbo Dooya Mechanic & Electronic Technology Co., Ltd",
-       [3]byte{188, 138, 163}: "NHN Entertainment",
-       [3]byte{188, 138, 232}: "QING DAO HAIER TELECOM CO.,LTD.",
-       [3]byte{188, 139, 85}:  "NPP ELIKS America Inc. DBA T&M Atlantic",
-       [3]byte{188, 140, 205}: "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
-       [3]byte{188, 141, 14}:  "Nokia",
-       [3]byte{188, 144, 58}:  "Robert Bosch GmbH",
-       [3]byte{188, 145, 181}: "Infinix mobility limited",
-       [3]byte{188, 146, 107}: "Apple, Inc.",
-       [3]byte{188, 150, 128}: "SHENZHEN GONGJIN ELECTRONICS CO.,LT",
-       [3]byte{188, 152, 137}: "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{188, 153, 188}: "FonSee Technology Inc.",
-       [3]byte{188, 156, 49}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{188, 156, 197}: "Beijing Huafei Technology Co., Ltd.",
-       [3]byte{188, 157, 165}: "DASCOM Europe GmbH",
-       [3]byte{188, 159, 239}: "Apple, Inc.",
-       [3]byte{188, 160, 66}:  "SHANGHAI FLYCO ELECTRICAL APPLIANCE CO.,LTD",
-       [3]byte{188, 164, 225}: "Nabto",
-       [3]byte{188, 168, 166}: "Intel Corporate",
-       [3]byte{188, 169, 32}:  "Apple, Inc.",
-       [3]byte{188, 169, 214}: "Cyber-Rain, Inc.",
-       [3]byte{188, 173, 40}:  "Hangzhou Hikvision Digital Technology Co.,Ltd.",
-       [3]byte{188, 173, 171}: "Avaya Inc",
-       [3]byte{188, 174, 197}: "ASUSTek COMPUTER INC.",
-       [3]byte{188, 177, 129}: "SHARP CORPORATION",
-       [3]byte{188, 177, 243}: "Samsung Electronics Co.,Ltd",
-       [3]byte{188, 179, 8}:   "HONGKONG RAGENTEK COMMUNICATION TECHNOLOGY CO.,LIMITED",
-       [3]byte{188, 184, 82}:  "Cybera, Inc.",
-       [3]byte{188, 186, 225}: "AREC Inc.",
-       [3]byte{188, 187, 201}: "Kellendonk Elektronik GmbH",
-       [3]byte{188, 188, 70}:  "SKS Welding Systems GmbH",
-       [3]byte{188, 192, 15}:  "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{188, 193, 104}: "DinBox Sverige AB",
-       [3]byte{188, 194, 58}:  "Thomson Video Networks",
-       [3]byte{188, 195, 27}:  "Kygo Life AS",
-       [3]byte{188, 195, 66}:  "Panasonic Communications Co., Ltd.",
-       [3]byte{188, 196, 147}: "Cisco Systems, Inc",
-       [3]byte{188, 198, 26}:  "SPECTRA EMBEDDED SYSTEMS",
-       [3]byte{188, 198, 219}: "Nokia Corporation",
-       [3]byte{188, 200, 16}:  "Cisco SPVTG",
-       [3]byte{188, 202, 181}: "ARRIS Group, Inc.",
-       [3]byte{188, 205, 69}:  "VOISMART",
-       [3]byte{188, 207, 204}: "HTC Corporation",
-       [3]byte{188, 209, 31}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{188, 209, 101}: "Cisco SPVTG",
-       [3]byte{188, 209, 119}: "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{188, 209, 211}: "Shenzhen TINNO Mobile Technology Corp.",
-       [3]byte{188, 213, 182}: "d2d technologies",
-       [3]byte{188, 215, 19}:  "Owl Labs",
-       [3]byte{188, 217, 64}:  "ASR Co,.Ltd.",
-       [3]byte{188, 224, 157}: "Eoslink",
-       [3]byte{188, 229, 159}: "WATERWORLD Technology Co.,LTD",
-       [3]byte{188, 230, 63}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{188, 231, 103}: "Quanzhou  TDX Electronics Co., Ltd",
-       [3]byte{188, 234, 43}:  "CityCom GmbH",
-       [3]byte{188, 234, 250}: "Hewlett Packard",
-       [3]byte{188, 235, 95}:  "Fujian Beifeng Telecom Technology Co., Ltd.",
-       [3]byte{188, 236, 35}:  "SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD",
-       [3]byte{188, 236, 93}:  "Apple, Inc.",
-       [3]byte{188, 238, 123}: "ASUSTek COMPUTER INC.",
-       [3]byte{188, 241, 242}: "Cisco Systems, Inc",
-       [3]byte{188, 242, 146}: "PLANTRONICS, INC.",
-       [3]byte{188, 242, 175}: "devolo AG",
-       [3]byte{188, 245, 172}: "LG Electronics (Mobile Communications)",
-       [3]byte{188, 246, 28}:  "Geomodeling Wuxi Technology Co. Ltd.",
-       [3]byte{188, 246, 133}: "D-Link International",
-       [3]byte{188, 248, 17}:  "Xiamen DNAKE Technology Co.,Ltd",
-       [3]byte{188, 254, 140}: "Altronic, LLC",
-       [3]byte{188, 255, 172}: "TOPCON CORPORATION",
-       [3]byte{188, 255, 235}: "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{192, 2, 141}:   "WINSTAR Display CO.,Ltd",
-       [3]byte{192, 5, 194}:   "ARRIS Group, Inc.",
-       [3]byte{192, 13, 126}:  "Additech, Inc.",
-       [3]byte{192, 17, 115}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{192, 17, 166}:  "Fort-Telecom ltd.",
-       [3]byte{192, 18, 66}:   "Alpha Security Products",
-       [3]byte{192, 20, 61}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{192, 23, 77}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{192, 24, 133}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{192, 26, 218}:  "Apple, Inc.",
-       [3]byte{192, 30, 155}:  "Pixavi AS",
-       [3]byte{192, 33, 13}:   "SHENZHEN RF-LINK TECHNOLOGY CO.,LTD.",
-       [3]byte{192, 34, 80}:   "Private",
-       [3]byte{192, 37, 6}:    "AVM GmbH",
-       [3]byte{192, 37, 92}:   "Cisco Systems, Inc",
-       [3]byte{192, 37, 103}:  "Nexxt Solutions",
-       [3]byte{192, 37, 162}:  "NEC Platforms, Ltd.",
-       [3]byte{192, 37, 233}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{192, 39, 185}:  "Beijing National Railway Research & Design Institute  of Signal & Communication Co., Ltd.",
-       [3]byte{192, 40, 141}:  "Logitech, Inc",
-       [3]byte{192, 41, 115}:  "Audyssey Laboratories Inc.",
-       [3]byte{192, 41, 243}:  "XySystem",
-       [3]byte{192, 43, 252}:  "iNES. applied informatics GmbH",
-       [3]byte{192, 44, 122}:  "Shenzhen Horn Audio Co.,Ltd.",
-       [3]byte{192, 45, 238}:  "Cuff",
-       [3]byte{192, 47, 241}:  "Volta Networks",
-       [3]byte{192, 51, 94}:   "Microsoft",
-       [3]byte{192, 52, 180}:  "Gigastone Corporation",
-       [3]byte{192, 53, 128}:  "A&R TECH",
-       [3]byte{192, 53, 189}:  "Velocytech Aps",
-       [3]byte{192, 53, 197}:  "Prosoft Systems LTD",
-       [3]byte{192, 56, 150}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{192, 56, 249}:  "Nokia Danmark A/S",
-       [3]byte{192, 59, 143}:  "Minicom Digital Signage",
-       [3]byte{192, 61, 70}:   "Shanghai Sango Network Technology Co.,Ltd",
-       [3]byte{192, 62, 15}:   "BSkyB Ltd",
-       [3]byte{192, 63, 14}:   "NETGEAR",
-       [3]byte{192, 63, 42}:   "Biscotti, Inc.",
-       [3]byte{192, 63, 213}:  "Elitegroup Computer Systems Co.,Ltd.",
-       [3]byte{192, 65, 246}:  "LG ELECTRONICS INC",
-       [3]byte{192, 67, 1}:    "Epec Oy",
-       [3]byte{192, 68, 227}:  "Shenzhen Sinkna Electronics Co., LTD",
-       [3]byte{192, 73, 61}:   "MAITRISE TECHNOLOGIQUE",
-       [3]byte{192, 74, 0}:    "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{192, 74, 9}:    "Zhejiang Everbright Communication Equip. Co,. Ltd",
-       [3]byte{192, 77, 247}:  "SERELEC",
-       [3]byte{192, 86, 39}:   "Belkin International Inc.",
-       [3]byte{192, 86, 227}:  "Hangzhou Hikvision Digital Technology Co.,Ltd.",
-       [3]byte{192, 87, 188}:  "Avaya Inc",
-       [3]byte{192, 88, 167}:  "Pico Systems Co., Ltd.",
-       [3]byte{192, 94, 111}:  "V. Stonkaus firma Kodinis Raktas",
-       [3]byte{192, 94, 121}:  "SHENZHEN HUAXUN ARK TECHNOLOGIES CO.,LTD",
-       [3]byte{192, 97, 24}:   "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{192, 98, 107}:  "Cisco Systems, Inc",
-       [3]byte{192, 99, 148}:  "Apple, Inc.",
-       [3]byte{192, 100, 198}: "Nokia Corporation",
-       [3]byte{192, 101, 153}: "Samsung Electronics Co.,Ltd",
-       [3]byte{192, 103, 175}: "Cisco Systems, Inc",
-       [3]byte{192, 108, 15}:  "Dobbs Stanford",
-       [3]byte{192, 108, 109}: "MagneMotion, Inc.",
-       [3]byte{192, 109, 26}:  "Tianjin Henxinhuifeng Technology Co.,Ltd.",
-       [3]byte{192, 112, 9}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{192, 116, 43}:  "SHENZHEN XUNLONG SOFTWARE CO.,LIMITED",
-       [3]byte{192, 123, 188}: "Cisco Systems, Inc",
-       [3]byte{192, 124, 209}: "PEGATRON CORPORATION",
-       [3]byte{192, 126, 64}:  "SHENZHEN XDK COMMUNICATION EQUIPMENT CO.,LTD",
-       [3]byte{192, 129, 112}: "Effigis GeoSolutions",
-       [3]byte{192, 131, 10}:  "2Wire Inc",
-       [3]byte{192, 132, 122}: "Apple, Inc.",
-       [3]byte{192, 132, 136}: "Finis Inc",
-       [3]byte{192, 133, 76}:  "Ragentek Technology Group",
-       [3]byte{192, 135, 235}: "Samsung Electronics Co.,Ltd",
-       [3]byte{192, 136, 91}:  "SnD Tech Co., Ltd.",
-       [3]byte{192, 137, 151}: "Samsung Electronics Co.,Ltd",
-       [3]byte{192, 138, 222}: "Ruckus Wireless",
-       [3]byte{192, 139, 111}: "S I Sistemas Inteligentes Eletrônicos Ltda",
-       [3]byte{192, 140, 96}:  "Cisco Systems, Inc",
-       [3]byte{192, 145, 50}:  "Patriot Memory",
-       [3]byte{192, 145, 52}:  "ProCurve Networking by HP",
-       [3]byte{192, 151, 39}:  "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
-       [3]byte{192, 152, 121}: "Acer Inc.",
-       [3]byte{192, 152, 229}: "University of Michigan",
-       [3]byte{192, 154, 113}: "XIAMEN MEITU MOBILE TECHNOLOGY CO.LTD",
-       [3]byte{192, 156, 4}:   "Shaanxi GuoLian Digital TV Technology Co.,Ltd.",
-       [3]byte{192, 156, 146}: "COBY",
-       [3]byte{192, 157, 38}:  "Topicon HK Lmd.",
-       [3]byte{192, 159, 5}:   "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{192, 159, 66}:  "Apple, Inc.",
-       [3]byte{192, 160, 13}:  "ARRIS Group, Inc.",
-       [3]byte{192, 160, 187}: "D-Link International",
-       [3]byte{192, 160, 199}: "FAIRFIELD INDUSTRIES",
-       [3]byte{192, 160, 222}: "Multi Touch Oy",
-       [3]byte{192, 160, 226}: "Eden Innovations",
-       [3]byte{192, 161, 162}: "MarqMetrix",
-       [3]byte{192, 162, 109}: "Abbott Point of Care",
-       [3]byte{192, 163, 100}: "3D Systems Massachusetts",
-       [3]byte{192, 163, 158}: "EarthCam, Inc.",
-       [3]byte{192, 165, 62}:  "Apple, Inc.",
-       [3]byte{192, 165, 221}: "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.",
-       [3]byte{192, 170, 104}: "OSASI Technos Inc.",
-       [3]byte{192, 172, 84}:  "Sagemcom Broadband SAS",
-       [3]byte{192, 179, 57}:  "Comigo Ltd.",
-       [3]byte{192, 179, 87}:  "Yoshiki Electronics Industry Ltd.",
-       [3]byte{192, 183, 19}:  "Beijing Xiaoyuer Technology Co. Ltd.",
-       [3]byte{192, 184, 177}: "BitBox Ltd",
-       [3]byte{192, 186, 230}: "Application Solutions (Electronics and Vision) Ltd",
-       [3]byte{192, 189, 66}:  "ZPA Smart Energy a.s.",
-       [3]byte{192, 189, 209}: "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
-       [3]byte{192, 191, 192}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{192, 193, 192}: "Cisco-Linksys, LLC",
-       [3]byte{192, 195, 182}: "Automatic Systems",
-       [3]byte{192, 197, 32}:  "Ruckus Wireless",
-       [3]byte{192, 197, 34}:  "ARRIS Group, Inc.",
-       [3]byte{192, 197, 105}: "SHANGHAI LYNUC CNC TECHNOLOGY CO.,LTD",
-       [3]byte{192, 198, 135}: "Cisco SPVTG",
-       [3]byte{192, 201, 70}:  "MITSUYA LABORATORIES INC.",
-       [3]byte{192, 201, 118}: "Shenzhen TINNO Mobile Technology Corp.",
-       [3]byte{192, 203, 56}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{192, 204, 248}: "Apple, Inc.",
-       [3]byte{192, 206, 205}: "Apple, Inc.",
-       [3]byte{192, 207, 163}: "Creative Electronics & Software, Inc.",
-       [3]byte{192, 208, 18}:  "Apple, Inc.",
-       [3]byte{192, 208, 68}:  "Sagemcom Broadband SAS",
-       [3]byte{192, 211, 145}: "IEEE Registration Authority",
-       [3]byte{192, 211, 192}: "Samsung Electronics Co.,Ltd",
-       [3]byte{192, 217, 98}:  "ASKEY COMPUTER CORP",
-       [3]byte{192, 217, 247}: "ShanDong Domor Intelligent S&T CO.,Ltd",
-       [3]byte{192, 218, 116}: "Hangzhou Sunyard Technology Co., Ltd.",
-       [3]byte{192, 220, 106}: "Qingdao Eastsoft Communication Technology Co.,LTD",
-       [3]byte{192, 223, 119}: "Conrad Electronic SE",
-       [3]byte{192, 228, 34}:  "Texas Instruments",
-       [3]byte{192, 228, 45}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{192, 229, 78}:  "ARIES Embedded GmbH",
-       [3]byte{192, 234, 228}: "Sonicwall",
-       [3]byte{192, 238, 64}:  "Laird Technologies",
-       [3]byte{192, 238, 251}: "OnePlus Tech (Shenzhen) Ltd",
-       [3]byte{192, 241, 196}: "Pacidal Corporation Ltd.",
-       [3]byte{192, 242, 251}: "Apple, Inc.",
-       [3]byte{192, 246, 54}:  "Hangzhou Kuaiyue Technologies, Ltd.",
-       [3]byte{192, 247, 157}: "Powercode",
-       [3]byte{192, 248, 218}: "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{192, 249, 69}:  "Toshiba Toko Meter Systems Co., LTD.",
-       [3]byte{192, 249, 145}: "GME Standard Communications P/L",
-       [3]byte{192, 255, 212}: "NETGEAR",
-       [3]byte{196, 0, 6}:     "Lipi Data Systems Ltd.",
-       [3]byte{196, 0, 73}:    "Kamama",
-       [3]byte{196, 1, 66}:    "MaxMedia Technology Limited",
-       [3]byte{196, 1, 124}:   "Ruckus Wireless",
-       [3]byte{196, 1, 177}:   "SeekTech INC",
-       [3]byte{196, 1, 206}:   "PRESITION (2000) CO., LTD.",
-       [3]byte{196, 4, 21}:    "NETGEAR",
-       [3]byte{196, 4, 123}:   "Shenzhen YOUHUA Technology Co., Ltd",
-       [3]byte{196, 5, 40}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{196, 7, 47}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{196, 8, 74}:    "Nokia",
-       [3]byte{196, 8, 128}:   "Shenzhen UTEPO Tech Co., Ltd.",
-       [3]byte{196, 9, 56}:    "FUJIAN STAR-NET COMMUNICATION CO.,LTD",
-       [3]byte{196, 10, 203}:  "Cisco Systems, Inc",
-       [3]byte{196, 11, 203}:  "Xiaomi Communications Co Ltd",
-       [3]byte{196, 14, 69}:   "ACK Networks,Inc.",
-       [3]byte{196, 15, 9}:    "Hermes electronic GmbH",
-       [3]byte{196, 16, 138}:  "Ruckus Wireless",
-       [3]byte{196, 17, 224}:  "Bull Group Co., Ltd",
-       [3]byte{196, 18, 245}:  "D-Link International",
-       [3]byte{196, 19, 226}:  "Aerohive Networks Inc.",
-       [3]byte{196, 20, 60}:   "Cisco Systems, Inc",
-       [3]byte{196, 22, 250}:  "Prysm Inc",
-       [3]byte{196, 23, 254}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{196, 25, 139}:  "Dominion Voting Systems Corporation",
-       [3]byte{196, 25, 236}:  "Qualisys AB",
-       [3]byte{196, 28, 255}:  "Vizio, Inc",
-       [3]byte{196, 30, 206}:  "HMI Sources Ltd.",
-       [3]byte{196, 33, 200}:  "KYOCERA CORPORATION",
-       [3]byte{196, 35, 122}:  "WhizNets Inc.",
-       [3]byte{196, 36, 46}:   "Galvanic Applied Sciences Inc",
-       [3]byte{196, 38, 40}:   "Airo Wireless",
-       [3]byte{196, 39, 149}:  "Technicolor CH USA Inc.",
-       [3]byte{196, 40, 45}:   "Embedded Intellect Pty Ltd",
-       [3]byte{196, 41, 29}:   "KLEMSAN ELEKTRIK ELEKTRONIK SAN.VE TIC.AS.",
-       [3]byte{196, 44, 3}:    "Apple, Inc.",
-       [3]byte{196, 47, 144}:  "Hangzhou Hikvision Digital Technology Co.,Ltd.",
-       [3]byte{196, 48, 24}:   "MCS Logic Inc.",
-       [3]byte{196, 52, 107}:  "Hewlett Packard",
-       [3]byte{196, 54, 85}:   "Shenzhen Fenglian Technology Co., Ltd.",
-       [3]byte{196, 54, 108}:  "LG Innotek",
-       [3]byte{196, 54, 218}:  "Rusteletech Ltd.",
-       [3]byte{196, 56, 211}:  "TAGATEC CO.,LTD",
-       [3]byte{196, 57, 58}:   "SMC Networks Inc",
-       [3]byte{196, 58, 159}:  "Siconix Inc.",
-       [3]byte{196, 58, 190}:  "Sony Mobile Communications AB",
-       [3]byte{196, 60, 60}:   "CYBELEC SA",
-       [3]byte{196, 61, 199}:  "NETGEAR",
-       [3]byte{196, 64, 68}:   "RackTop Systems Inc.",
-       [3]byte{196, 66, 2}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{196, 67, 143}:  "LG Electronics (Mobile Communications)",
-       [3]byte{196, 68, 160}:  "Cisco Systems, Inc",
-       [3]byte{196, 69, 103}:  "SAMBON PRECISON and ELECTRONICS",
-       [3]byte{196, 69, 236}:  "Shanghai Yali Electron Co.,LTD",
-       [3]byte{196, 70, 25}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{196, 71, 63}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{196, 72, 56}:   "Satcom Direct, Inc.",
-       [3]byte{196, 73, 187}:  "MITSUMI ELECTRIC CO.,LTD.",
-       [3]byte{196, 74, 208}:  "FIREFLIES SYSTEMS",
-       [3]byte{196, 75, 68}:   "Omniprint Inc.",
-       [3]byte{196, 75, 209}:  "Wallys Communications  Teachnologies Co.,Ltd.",
-       [3]byte{196, 78, 31}:   "BlueN",
-       [3]byte{196, 78, 172}:  "Shenzhen Shiningworth Technology Co., Ltd.",
-       [3]byte{196, 80, 6}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{196, 84, 68}:   "QUANTA COMPUTER INC.",
-       [3]byte{196, 85, 166}:  "Cadac Holdings Ltd",
-       [3]byte{196, 85, 194}:  "Bach-Simpson",
-       [3]byte{196, 86, 0}:    "Galleon Embedded Computing",
-       [3]byte{196, 86, 254}:  "Lava International Ltd.",
-       [3]byte{196, 87, 31}:   "June Life Inc",
-       [3]byte{196, 87, 110}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{196, 88, 194}:  "Shenzhen TATFOOK Technology Co., Ltd.",
-       [3]byte{196, 89, 118}:  "Fugoo Coorporation",
-       [3]byte{196, 93, 216}:  "HDMI Forum",
-       [3]byte{196, 96, 68}:   "Everex Electronics Limited",
-       [3]byte{196, 98, 107}:  "ZPT Vigantice",
-       [3]byte{196, 98, 234}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{196, 99, 84}:   "U-Raku, Inc.",
-       [3]byte{196, 100, 19}:  "Cisco Systems, Inc",
-       [3]byte{196, 102, 153}: "vivo Mobile Communication Co., Ltd.",
-       [3]byte{196, 103, 181}: "Libratone A/S",
-       [3]byte{196, 104, 208}: "VTech Telecommunications Ltd.",
-       [3]byte{196, 105, 62}:  "Turbulence Design Inc.",
-       [3]byte{196, 106, 183}: "Xiaomi Communications Co Ltd",
-       [3]byte{196, 107, 180}: "myIDkey",
-       [3]byte{196, 109, 241}: "DataGravity",
-       [3]byte{196, 110, 31}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{196, 112, 11}:  "GUANGZHOU CHIP TECHNOLOGIES CO.,LTD",
-       [3]byte{196, 113, 48}:  "Fon Technology S.L.",
-       [3]byte{196, 113, 84}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{196, 113, 254}: "Cisco Systems, Inc",
-       [3]byte{196, 114, 149}: "Cisco Systems, Inc",
-       [3]byte{196, 115, 30}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{196, 119, 171}: "Beijing ASU Tech Co.,Ltd",
-       [3]byte{196, 119, 175}: "Advanced Digital Broadcast SA",
-       [3]byte{196, 123, 47}:  "Beijing JoinHope Image Technology Ltd.",
-       [3]byte{196, 123, 163}: "NAVIS Inc.",
-       [3]byte{196, 124, 141}: "IEEE Registration Authority",
-       [3]byte{196, 125, 70}:  "FUJITSU LIMITED",
-       [3]byte{196, 125, 79}:  "Cisco Systems, Inc",
-       [3]byte{196, 125, 204}: "Zebra Technologies Inc",
-       [3]byte{196, 125, 254}: "A.N. Solutions GmbH",
-       [3]byte{196, 127, 81}:  "Inventek Systems",
-       [3]byte{196, 130, 63}:  "Fujian Newland Auto-ID Tech. Co,.Ltd.",
-       [3]byte{196, 130, 78}:  "Changzhou Uchip Electronics Co., LTD.",
-       [3]byte{196, 131, 111}: "Ciena Corporation",
-       [3]byte{196, 133, 8}:   "Intel Corporate",
-       [3]byte{196, 134, 233}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{196, 136, 229}: "Samsung Electronics Co.,Ltd",
-       [3]byte{196, 142, 143}: "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{196, 143, 7}:   "Shenzhen Yihao Hulian Science and Technology Co., Ltd.",
-       [3]byte{196, 145, 58}:  "Shenzhen Sanland Electronic Co., ltd.",
-       [3]byte{196, 146, 76}:  "KEISOKUKI CENTER CO.,LTD.",
-       [3]byte{196, 147, 0}:   "8Devices",
-       [3]byte{196, 147, 19}:  "100fio networks technology llc",
-       [3]byte{196, 147, 128}: "Speedytel technology",
-       [3]byte{196, 149, 162}: "SHENZHEN WEIJIU INDUSTRY AND TRADE DEVELOPMENT CO., LTD",
-       [3]byte{196, 152, 5}:   "Minieum Networks, Inc",
-       [3]byte{196, 154, 2}:   "LG Electronics (Mobile Communications)",
-       [3]byte{196, 157, 237}: "Microsoft Corporation",
-       [3]byte{196, 158, 65}:  "G24 Power Limited",
-       [3]byte{196, 159, 243}: "Mciao Technologies, Inc.",
-       [3]byte{196, 163, 102}: "zte corporation",
-       [3]byte{196, 168, 29}:  "D-Link International",
-       [3]byte{196, 170, 161}: "SUMMIT DEVELOPMENT, spol.s r.o.",
-       [3]byte{196, 171, 178}: "vivo Mobile Communication Co., Ltd.",
-       [3]byte{196, 173, 33}:  "MEDIAEDGE Corporation",
-       [3]byte{196, 173, 241}: "GOPEACE Inc.",
-       [3]byte{196, 174, 18}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{196, 179, 1}:   "Apple, Inc.",
-       [3]byte{196, 181, 18}:  "General Electric Digital Energy",
-       [3]byte{196, 185, 205}: "Cisco Systems, Inc",
-       [3]byte{196, 186, 153}: "I+ME Actia Informatik und Mikro-Elektronik GmbH",
-       [3]byte{196, 186, 163}: "Beijing Winicssec Technologies Co., Ltd.",
-       [3]byte{196, 187, 76}:  "Zebra Information Tech Co. Ltd",
-       [3]byte{196, 187, 234}: "Pakedge Device and Software Inc",
-       [3]byte{196, 189, 106}: "SKF GmbH",
-       [3]byte{196, 190, 132}: "Texas Instruments",
-       [3]byte{196, 190, 212}: "Avaya Inc",
-       [3]byte{196, 192, 174}: "MIDORI ELECTRONIC CO., LTD.",
-       [3]byte{196, 193, 159}: "National Oilwell Varco Instrumentation, Monitoring, and Optimization (NOV IMO)",
-       [3]byte{196, 197, 99}:  "TECNO MOBILE LIMITED",
-       [3]byte{196, 199, 85}:  "Beijing HuaqinWorld Technology Co.,Ltd",
-       [3]byte{196, 201, 25}:  "Energy Imports Ltd",
-       [3]byte{196, 201, 236}: "Gugaoo   HK Limited",
-       [3]byte{196, 202, 217}: "Hangzhou H3C Technologies Co., Limited",
-       [3]byte{196, 203, 107}: "Airista Flow, Inc.",
-       [3]byte{196, 205, 69}:  "Beijing Boomsense Technology CO.,LTD.",
-       [3]byte{196, 205, 130}: "Hangzhou Lowan Information Technology Co., Ltd.",
-       [3]byte{196, 209, 151}: "Ventia Utility Services",
-       [3]byte{196, 212, 137}: "JiangSu Joyque Information Industry Co.,Ltd",
-       [3]byte{196, 214, 85}:  "Tercel technology co.,ltd",
-       [3]byte{196, 217, 135}: "Intel Corporate",
-       [3]byte{196, 218, 38}:  "NOBLEX SA",
-       [3]byte{196, 218, 125}: "Ivium Technologies B.V.",
-       [3]byte{196, 224, 50}:  "IEEE 1904.1 Working Group",
-       [3]byte{196, 225, 124}: "U2S co.",
-       [3]byte{196, 229, 16}:  "Mechatro, Inc.",
-       [3]byte{196, 231, 190}: "SCSpro Co.,Ltd",
-       [3]byte{196, 233, 47}:  "AB Sciex",
-       [3]byte{196, 233, 132}: "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{196, 234, 29}:  "Technicolor",
-       [3]byte{196, 235, 227}: "RRCN SAS",
-       [3]byte{196, 237, 186}: "Texas Instruments",
-       [3]byte{196, 238, 174}: "VSS Monitoring",
-       [3]byte{196, 238, 245}: "II-VI Incorporated",
-       [3]byte{196, 239, 112}: "Home Skinovations",
-       [3]byte{196, 240, 129}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{196, 241, 209}: "BEIJING SOGOU TECHNOLOGY DEVELOPMENT CO., LTD.",
-       [3]byte{196, 243, 18}:  "Texas Instruments",
-       [3]byte{196, 244, 100}: "Spica international",
-       [3]byte{196, 245, 124}: "Brocade Communications Systems, Inc.",
-       [3]byte{196, 245, 165}: "Kumalift Co., Ltd.",
-       [3]byte{196, 252, 228}: "DishTV NZ Ltd",
-       [3]byte{196, 255, 31}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{200, 0, 132}:   "Cisco Systems, Inc",
-       [3]byte{200, 2, 16}:    "LG Innotek",
-       [3]byte{200, 2, 88}:    "ITW GSE ApS",
-       [3]byte{200, 2, 143}:   "Nova Electronics (Shanghai) Co., Ltd.",
-       [3]byte{200, 2, 166}:   "Beijing Newmine Technology",
-       [3]byte{200, 7, 24}:    "TDSi",
-       [3]byte{200, 8, 233}:   "LG Electronics",
-       [3]byte{200, 10, 169}:  "QUANTA COMPUTER INC.",
-       [3]byte{200, 12, 200}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{200, 14, 20}:   "AVM Audiovisuelles Marketing und Computersysteme GmbH",
-       [3]byte{200, 14, 119}:  "Le Shi Zhi Xin Electronic Technology (Tianjin) Limited",
-       [3]byte{200, 14, 149}:  "OmniLync Inc.",
-       [3]byte{200, 16, 115}:  "CENTURY OPTICOMM CO.,LTD",
-       [3]byte{200, 20, 81}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{200, 20, 121}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{200, 22, 165}:  "Masimo Corporation",
-       [3]byte{200, 22, 189}:  "Qingdao Hisense Communications Co.,Ltd.",
-       [3]byte{200, 25, 247}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{200, 26, 254}:  "DLOGIC GmbH",
-       [3]byte{200, 27, 92}:   "BCTech",
-       [3]byte{200, 27, 107}:  "Innova Security",
-       [3]byte{200, 30, 142}:  "ADV Security (S) Pte Ltd",
-       [3]byte{200, 30, 231}:  "Apple, Inc.",
-       [3]byte{200, 31, 102}:  "Dell Inc.",
-       [3]byte{200, 31, 190}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{200, 31, 234}:  "Avaya Inc",
-       [3]byte{200, 32, 142}:  "Storagedata",
-       [3]byte{200, 33, 88}:   "Intel Corporate",
-       [3]byte{200, 37, 225}:  "Lemobile Information Technology (Beijing) Co., Ltd",
-       [3]byte{200, 41, 42}:   "Barun Electronics",
-       [3]byte{200, 42, 20}:   "Apple, Inc.",
-       [3]byte{200, 46, 148}:  "Halfa Enterprise Co., Ltd.",
-       [3]byte{200, 49, 104}:  "eZEX corporation",
-       [3]byte{200, 50, 50}:   "Hunting Innova",
-       [3]byte{200, 51, 75}:   "Apple, Inc.",
-       [3]byte{200, 52, 142}:  "Intel Corporate",
-       [3]byte{200, 53, 184}:  "Ericsson, EAB/RWI/K",
-       [3]byte{200, 56, 112}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{200, 58, 53}:   "Tenda Technology Co., Ltd.",
-       [3]byte{200, 58, 107}:  "Roku, Inc",
-       [3]byte{200, 59, 69}:   "JRI",
-       [3]byte{200, 60, 133}:  "Apple, Inc.",
-       [3]byte{200, 61, 151}:  "Nokia Corporation",
-       [3]byte{200, 61, 212}:  "CyberTAN Technology Inc.",
-       [3]byte{200, 61, 252}:  "Pioneer DJ Corporation",
-       [3]byte{200, 62, 153}:  "Texas Instruments",
-       [3]byte{200, 62, 167}:  "KUNBUS GmbH",
-       [3]byte{200, 63, 38}:   "Microsoft Corporation",
-       [3]byte{200, 63, 180}:  "ARRIS Group, Inc.",
-       [3]byte{200, 64, 41}:   "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{200, 69, 41}:   "IMK Networks Co.,Ltd",
-       [3]byte{200, 69, 68}:   "Asia Pacific CIS (Wuxi) Co, Ltd",
-       [3]byte{200, 69, 143}:  "Wyler AG",
-       [3]byte{200, 71, 140}:  "Beken Corporation",
-       [3]byte{200, 72, 245}:  "MEDISON Xray Co., Ltd",
-       [3]byte{200, 76, 117}:  "Cisco Systems, Inc",
-       [3]byte{200, 80, 233}:  "Raisecom Technology CO., LTD",
-       [3]byte{200, 81, 149}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{200, 86, 69}:   "Intermas France",
-       [3]byte{200, 86, 99}:   "Sunflex Europe GmbH",
-       [3]byte{200, 91, 118}:  "LCFC(HeFei) Electronics Technology co., ltd",
-       [3]byte{200, 96, 0}:    "ASUSTek COMPUTER INC.",
-       [3]byte{200, 99, 241}:  "Sony Interactive Entertainment Inc.",
-       [3]byte{200, 100, 199}: "zte corporation",
-       [3]byte{200, 102, 44}:  "Beijing Haitai Fangyuan High Technology Co,.Ltd.",
-       [3]byte{200, 102, 93}:  "Aerohive Networks Inc.",
-       [3]byte{200, 103, 94}:  "Aerohive Networks Inc.",
-       [3]byte{200, 105, 205}: "Apple, Inc.",
-       [3]byte{200, 108, 30}:  "Display Systems Ltd",
-       [3]byte{200, 108, 135}: "Zyxel Communications Corporation",
-       [3]byte{200, 108, 182}: "Optcom Co., Ltd.",
-       [3]byte{200, 111, 29}:  "Apple, Inc.",
-       [3]byte{200, 114, 72}:  "Aplicom Oy",
-       [3]byte{200, 115, 36}:  "Sow Cheng Technology Co. Ltd.",
-       [3]byte{200, 117, 91}:  "Quantify Technology Pty. Ltd.",
-       [3]byte{200, 119, 139}: "Themis Computer",
-       [3]byte{200, 123, 91}:  "zte corporation",
-       [3]byte{200, 124, 188}: "Valink Co., Ltd.",
-       [3]byte{200, 125, 119}: "Shenzhen Kingtech Communication Equipment Co.,Ltd",
-       [3]byte{200, 126, 117}: "Samsung Electronics Co.,Ltd",
-       [3]byte{200, 132, 57}:  "Sunrise Technologies",
-       [3]byte{200, 132, 71}:  "Beautiful Enterprise Co., Ltd",
-       [3]byte{200, 133, 80}:  "Apple, Inc.",
-       [3]byte{200, 135, 34}:  "Lumenpulse",
-       [3]byte{200, 135, 59}:  "Net Optics",
-       [3]byte{200, 138, 131}: "Dongguan HuaHong Electronics Co.,Ltd",
-       [3]byte{200, 139, 71}:  "Nolangroup S.P.A con Socio Unico",
-       [3]byte{200, 141, 131}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{200, 142, 209}: "IEEE Registration Authority",
-       [3]byte{200, 144, 62}:  "Pakton Technologies",
-       [3]byte{200, 145, 249}: "Sagemcom Broadband SAS",
-       [3]byte{200, 147, 70}:  "MXCHIP Company Limited",
-       [3]byte{200, 147, 131}: "Embedded Automation, Inc.",
-       [3]byte{200, 148, 187}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{200, 148, 210}: "Jiangsu Datang  Electronic Products Co., Ltd",
-       [3]byte{200, 151, 159}: "Nokia Corporation",
-       [3]byte{200, 156, 29}:  "Cisco Systems, Inc",
-       [3]byte{200, 156, 220}: "Elitegroup Computer Systems Co.,Ltd.",
-       [3]byte{200, 159, 29}:  "SHENZHEN COMMUNICATION TECHNOLOGIES CO.,LTD",
-       [3]byte{200, 159, 66}:  "VDII Innovation AB",
-       [3]byte{200, 160, 48}:  "Texas Instruments",
-       [3]byte{200, 161, 182}: "Shenzhen Longway Technologies Co., Ltd",
-       [3]byte{200, 161, 186}: "Neul Ltd",
-       [3]byte{200, 162, 206}: "Oasis Media Systems LLC",
-       [3]byte{200, 166, 32}:  "Nebula, Inc",
-       [3]byte{200, 167, 10}:  "Verizon Business",
-       [3]byte{200, 167, 41}:  "SYStronics Co., Ltd.",
-       [3]byte{200, 168, 35}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{200, 169, 252}: "Goyoo Networks Inc.",
-       [3]byte{200, 170, 33}:  "ARRIS Group, Inc.",
-       [3]byte{200, 170, 85}:  "Hunan Comtom Electronic Incorporated Co.,Ltd",
-       [3]byte{200, 170, 204}: "Private",
-       [3]byte{200, 174, 156}: "Shanghai TYD Elecronic Technology Co. Ltd",
-       [3]byte{200, 175, 64}:  "marco Systemanalyse und Entwicklung GmbH",
-       [3]byte{200, 175, 227}: "Hefei Radio Communication Technology Co., Ltd",
-       [3]byte{200, 178, 30}:  "CHIPSEA TECHNOLOGIES (SHENZHEN) CORP.",
-       [3]byte{200, 179, 115}: "Cisco-Linksys, LLC",
-       [3]byte{200, 181, 173}: "Hewlett Packard Enterprise",
-       [3]byte{200, 181, 183}: "Apple, Inc.",
-       [3]byte{200, 186, 148}: "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
-       [3]byte{200, 187, 211}: "Embrane",
-       [3]byte{200, 188, 200}: "Apple, Inc.",
-       [3]byte{200, 190, 25}:  "D-Link International",
-       [3]byte{200, 193, 38}:  "ZPM Industria e Comercio Ltda",
-       [3]byte{200, 193, 60}:  "RuggedTek Hangzhou Co., Ltd",
-       [3]byte{200, 194, 198}: "Shanghai Airm2m Communication Technology Co., Ltd",
-       [3]byte{200, 197, 14}:  "Shenzhen Primestone Network Technologies.Co., Ltd.",
-       [3]byte{200, 199, 145}: "Zero1.tv GmbH",
-       [3]byte{200, 203, 184}: "Hewlett Packard",
-       [3]byte{200, 205, 114}: "Sagemcom Broadband SAS",
-       [3]byte{200, 208, 25}:  "Shanghai Tigercel Communication Technology Co.,Ltd",
-       [3]byte{200, 209, 11}:  "Nokia Corporation",
-       [3]byte{200, 209, 42}:  "Comtrend Corporation",
-       [3]byte{200, 209, 94}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{200, 209, 209}: "AGAiT Technology Corporation",
-       [3]byte{200, 210, 193}: "Jetlun (Shenzhen) Corporation",
-       [3]byte{200, 211, 163}: "D-Link International",
-       [3]byte{200, 211, 255}: "Hewlett Packard",
-       [3]byte{200, 212, 41}:  "Muehlbauer AG",
-       [3]byte{200, 213, 144}: "FLIGHT DATA SYSTEMS",
-       [3]byte{200, 213, 254}: "Shenzhen Zowee Technology Co., Ltd",
-       [3]byte{200, 215, 25}:  "Cisco-Linksys, LLC",
-       [3]byte{200, 215, 121}: "Qingdao Haier Telecom Co.,Ltd",
-       [3]byte{200, 215, 176}: "Samsung Electronics Co.,Ltd",
-       [3]byte{200, 219, 38}:  "Logitech",
-       [3]byte{200, 221, 201}: "Lenovo Mobile Communication Technology Ltd.",
-       [3]byte{200, 222, 81}:  "IntegraOptics",
-       [3]byte{200, 222, 201}: "Coriant",
-       [3]byte{200, 223, 124}: "Nokia Corporation",
-       [3]byte{200, 223, 132}: "Texas Instruments",
-       [3]byte{200, 224, 235}: "Apple, Inc.",
-       [3]byte{200, 225, 48}:  "Milkyway Group Ltd",
-       [3]byte{200, 225, 167}: "Vertu Corporation Limited",
-       [3]byte{200, 228, 47}:  "Technical Research Design and Development",
-       [3]byte{200, 231, 118}: "PTCOM Technology",
-       [3]byte{200, 231, 216}: "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.",
-       [3]byte{200, 231, 240}: "Juniper Networks",
-       [3]byte{200, 238, 8}:   "TANGTOP TECHNOLOGY CO.,LTD",
-       [3]byte{200, 238, 117}: "Pishion International Co. Ltd",
-       [3]byte{200, 238, 166}: "Shenzhen SHX Technology Co., Ltd",
-       [3]byte{200, 239, 46}:  "Beijing Gefei Tech. Co., Ltd",
-       [3]byte{200, 242, 48}:  "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{200, 243, 107}: "Yamato Scale Co.,Ltd.",
-       [3]byte{200, 243, 134}: "Shenzhen Xiaoniao Technology Co.,Ltd",
-       [3]byte{200, 244, 6}:   "Avaya Inc",
-       [3]byte{200, 246, 80}:  "Apple, Inc.",
-       [3]byte{200, 246, 141}: "S.E.TECHNOLOGIES LIMITED",
-       [3]byte{200, 247, 4}:   "Building Block Video",
-       [3]byte{200, 247, 51}:  "Intel Corporate",
-       [3]byte{200, 248, 109}: "Alcatel-Lucent Shanghai Bell Co., Ltd",
-       [3]byte{200, 249, 70}:  "LOCOSYS Technology Inc.",
-       [3]byte{200, 249, 129}: "Seneca s.r.l.",
-       [3]byte{200, 249, 200}: "NewSharp Technology(SuZhou)Co,Ltd",
-       [3]byte{200, 249, 249}: "Cisco Systems, Inc",
-       [3]byte{200, 251, 38}:  "Cisco SPVTG",
-       [3]byte{200, 253, 25}:  "Texas Instruments",
-       [3]byte{200, 254, 48}:  "Bejing DAYO Mobile Communication Technology Ltd.",
-       [3]byte{200, 255, 40}:  "Liteon Technology Corporation",
-       [3]byte{200, 255, 119}: "Dyson Limited",
-       [3]byte{204, 0, 128}:   "BETTINI SRL",
-       [3]byte{204, 3, 217}:   "Cisco Meraki",
-       [3]byte{204, 3, 250}:   "Technicolor CH USA Inc.",
-       [3]byte{204, 4, 124}:   "G-WAY Microwave",
-       [3]byte{204, 4, 180}:   "Select Comfort",
-       [3]byte{204, 5, 27}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{204, 6, 119}:   "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{204, 7, 171}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{204, 7, 228}:   "Lenovo Mobile Communication Technology Ltd.",
-       [3]byte{204, 8, 141}:   "Apple, Inc.",
-       [3]byte{204, 8, 224}:   "Apple, Inc.",
-       [3]byte{204, 9, 200}:   "IMAQLIQ LTD",
-       [3]byte{204, 12, 218}:  "Miljovakt AS",
-       [3]byte{204, 13, 236}:  "Cisco SPVTG",
-       [3]byte{204, 16, 163}:  "Beijing Nan Bao Technology Co., Ltd.",
-       [3]byte{204, 20, 166}:  "Yichun MyEnergy Domain, Inc",
-       [3]byte{204, 22, 126}:  "Cisco Systems, Inc",
-       [3]byte{204, 24, 123}:  "Manzanita Systems, Inc.",
-       [3]byte{204, 25, 168}:  "PT Inovação e Sistemas SA",
-       [3]byte{204, 26, 250}:  "zte corporation",
-       [3]byte{204, 27, 224}:  "IEEE Registration Authority",
-       [3]byte{204, 30, 255}:  "Metrological Group BV",
-       [3]byte{204, 31, 196}:  "InVue",
-       [3]byte{204, 32, 232}:  "Apple, Inc.",
-       [3]byte{204, 34, 24}:   "InnoDigital Co., Ltd.",
-       [3]byte{204, 34, 55}:   "IEEE Registration Authority",
-       [3]byte{204, 37, 239}:  "Apple, Inc.",
-       [3]byte{204, 38, 45}:   "Verifi, LLC",
-       [3]byte{204, 41, 245}:  "Apple, Inc.",
-       [3]byte{204, 42, 128}:  "Micro-Biz intelligence solutions Co.,Ltd",
-       [3]byte{204, 45, 33}:   "Tenda Technology Co.,Ltd.Dongguan branch",
-       [3]byte{204, 45, 131}:  "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{204, 45, 140}:  "LG ELECTRONICS INC",
-       [3]byte{204, 45, 224}:  "Routerboard.com",
-       [3]byte{204, 47, 113}:  "Intel Corporate",
-       [3]byte{204, 48, 128}:  "VAIO Corporation",
-       [3]byte{204, 51, 187}:  "Sagemcom Broadband SAS",
-       [3]byte{204, 52, 41}:   "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{204, 52, 215}:  "GEWISS S.P.A.",
-       [3]byte{204, 53, 64}:   "Technicolor CH USA Inc.",
-       [3]byte{204, 55, 171}:  "Edgecore Networks Corportation",
-       [3]byte{204, 57, 140}:  "Shiningtek",
-       [3]byte{204, 58, 97}:   "SAMSUNG ELECTRO MECHANICS CO., LTD.",
-       [3]byte{204, 58, 223}:  "Private",
-       [3]byte{204, 59, 62}:   "Lester Electrical",
-       [3]byte{204, 60, 63}:   "SA.S.S. Datentechnik AG",
-       [3]byte{204, 61, 130}:  "Intel Corporate",
-       [3]byte{204, 62, 95}:   "Hewlett Packard",
-       [3]byte{204, 63, 29}:   "Intesis Software SL",
-       [3]byte{204, 64, 208}:  "NETGEAR",
-       [3]byte{204, 67, 227}:  "Trump s.a.",
-       [3]byte{204, 68, 99}:   "Apple, Inc.",
-       [3]byte{204, 70, 57}:   "WAAV, Inc.",
-       [3]byte{204, 70, 214}:  "Cisco Systems, Inc",
-       [3]byte{204, 71, 3}:    "Intercon Systems Co., Ltd.",
-       [3]byte{204, 74, 225}:  "fourtec -Fourier Technologies",
-       [3]byte{204, 75, 115}:  "AMPAK Technology, Inc.",
-       [3]byte{204, 75, 251}:  "Hellberg Safety AB",
-       [3]byte{204, 78, 36}:   "Brocade Communications Systems, Inc.",
-       [3]byte{204, 78, 236}:  "HUMAX Co., Ltd.",
-       [3]byte{204, 80, 10}:   "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{204, 80, 28}:   "KVH Industries, Inc.",
-       [3]byte{204, 80, 118}:  "Ocom Communications, Inc.",
-       [3]byte{204, 82, 175}:  "Universal Global Scientific Industrial Co., Ltd.",
-       [3]byte{204, 83, 181}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{204, 84, 89}:   "OnTime Networks AS",
-       [3]byte{204, 85, 173}:  "RIM",
-       [3]byte{204, 89, 62}:   "TOUMAZ LTD",
-       [3]byte{204, 90, 83}:   "Cisco Systems, Inc",
-       [3]byte{204, 92, 117}:  "Weightech Com. Imp. Exp. Equip. Pesagem Ltda",
-       [3]byte{204, 93, 78}:   "Zyxel Communications Corporation",
-       [3]byte{204, 93, 87}:   "Information  System Research Institute,Inc.",
-       [3]byte{204, 95, 191}:  "Topwise 3G Communication Co., Ltd.",
-       [3]byte{204, 96, 187}:  "Empower RF Systems",
-       [3]byte{204, 97, 229}:  "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{204, 101, 173}: "ARRIS Group, Inc.",
-       [3]byte{204, 102, 178}: "Nokia",
-       [3]byte{204, 105, 176}: "Global Traffic Technologies, LLC",
-       [3]byte{204, 107, 152}: "Minetec Wireless Technologies",
-       [3]byte{204, 107, 241}: "Sound Masking Inc.",
-       [3]byte{204, 109, 160}: "Roku, Inc.",
-       [3]byte{204, 109, 239}: "TJK Tietolaite Oy",
-       [3]byte{204, 110, 164}: "Samsung Electronics Co.,Ltd",
-       [3]byte{204, 114, 15}:  "Viscount Systems Inc.",
-       [3]byte{204, 115, 20}:  "HONG KONG WHEATEK TECHNOLOGY LIMITED",
-       [3]byte{204, 116, 152}: "Filmetrics Inc.",
-       [3]byte{204, 118, 105}: "SEETECH",
-       [3]byte{204, 120, 95}:  "Apple, Inc.",
-       [3]byte{204, 120, 171}: "Texas Instruments",
-       [3]byte{204, 121, 74}:  "BLU Products Inc.",
-       [3]byte{204, 121, 207}: "SHENZHEN RF-LINK TECHNOLOGY CO.,LTD.",
-       [3]byte{204, 122, 48}:  "CMAX Wireless Co., Ltd.",
-       [3]byte{204, 123, 53}:  "zte corporation",
-       [3]byte{204, 125, 55}:  "ARRIS Group, Inc.",
-       [3]byte{204, 126, 231}: "Panasonic Corporation AVC Networks Company",
-       [3]byte{204, 129, 218}: "Phicomm (Shanghai) Co., Ltd.",
-       [3]byte{204, 130, 235}: "KYOCERA CORPORATION",
-       [3]byte{204, 133, 108}: "SHENZHEN MDK DIGITAL TECHNOLOGY CO.,LTD",
-       [3]byte{204, 137, 253}: "Nokia Corporation",
-       [3]byte{204, 140, 218}: "Shenzhen Wei Da Intelligent Technology Go.,Ltd",
-       [3]byte{204, 140, 227}: "Texas Instruments",
-       [3]byte{204, 144, 147}: "Hansong Tehnologies",
-       [3]byte{204, 144, 232}: "Shenzhen YOUHUA Technology Co., Ltd",
-       [3]byte{204, 145, 43}:  "TE Connectivity Touch Solutions",
-       [3]byte{204, 148, 74}:  "Pfeiffer Vacuum GmbH",
-       [3]byte{204, 148, 112}: "Kinestral Technologies, Inc.",
-       [3]byte{204, 149, 215}: "Vizio, Inc",
-       [3]byte{204, 150, 53}:  "LVS Co.,Ltd.",
-       [3]byte{204, 150, 160}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{204, 152, 145}: "Cisco Systems, Inc",
-       [3]byte{204, 158, 0}:   "Nintendo Co., Ltd.",
-       [3]byte{204, 159, 53}:  "Transbit Sp. z o.o.",
-       [3]byte{204, 159, 122}: "Chiun Mai Communication Systems, Inc",
-       [3]byte{204, 160, 229}: "DZG Metering GmbH",
-       [3]byte{204, 162, 25}:  "SHENZHEN ALONG INVESTMENT CO.,LTD",
-       [3]byte{204, 162, 35}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{204, 162, 96}:  "SICHUAN TIANYI COMHEART TELECOMCO.,LTD",
-       [3]byte{204, 163, 116}: "Guangdong Guanglian Electronic Technology Co.Ltd",
-       [3]byte{204, 164, 98}:  "ARRIS Group, Inc.",
-       [3]byte{204, 164, 175}: "Shenzhen Sowell Technology Co., LTD",
-       [3]byte{204, 166, 20}:  "AIFA TECHNOLOGY CORP.",
-       [3]byte{204, 175, 120}: "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{204, 176, 218}: "Liteon Technology Corporation",
-       [3]byte{204, 177, 26}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{204, 178, 85}:  "D-Link International",
-       [3]byte{204, 179, 171}: "shenzhen Biocare Bio-Medical Equipment Co.,Ltd.",
-       [3]byte{204, 179, 248}: "FUJITSU ISOTEC LIMITED",
-       [3]byte{204, 181, 90}:  "Fraunhofer ITWM",
-       [3]byte{204, 182, 145}: "NECMagnusCommunications",
-       [3]byte{204, 184, 136}: "AnB Securite s.a.",
-       [3]byte{204, 184, 168}: "AMPAK Technology, Inc.",
-       [3]byte{204, 184, 241}: "EAGLE KINGDOM TECHNOLOGIES LIMITED",
-       [3]byte{204, 189, 53}:  "Steinel GmbH",
-       [3]byte{204, 189, 211}: "Ultimaker B.V.",
-       [3]byte{204, 190, 89}:  "Calix Inc.",
-       [3]byte{204, 190, 113}: "OptiLogix BV",
-       [3]byte{204, 193, 4}:   "Applied Technical Systems",
-       [3]byte{204, 195, 234}: "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{204, 197, 10}:  "SHENZHEN DAJIAHAO TECHNOLOGY CO.,LTD",
-       [3]byte{204, 197, 239}: "Co-Comm Servicios Telecomunicaciones S.L.",
-       [3]byte{204, 198, 43}:  "Tri-Systems Corporation",
-       [3]byte{204, 199, 96}:  "Apple, Inc.",
-       [3]byte{204, 200, 215}: "CIAS Elettronica srl",
-       [3]byte{204, 204, 78}:  "Sun Fountainhead USA. Corp",
-       [3]byte{204, 204, 129}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{204, 205, 100}: "SM-Electronic GmbH",
-       [3]byte{204, 206, 30}:  "AVM Audiovisuelles Marketing und Computersysteme GmbH",
-       [3]byte{204, 206, 64}:  "Janteq Corp",
-       [3]byte{204, 210, 155}: "Shenzhen Bopengfa Elec&Technology CO.,Ltd",
-       [3]byte{204, 211, 30}:  "IEEE Registration Authority",
-       [3]byte{204, 211, 226}: "Jiangsu Yinhe  Electronics Co.,Ltd.",
-       [3]byte{204, 213, 57}:  "Cisco Systems, Inc",
-       [3]byte{204, 216, 17}:  "Aiconn Technology Corporation",
-       [3]byte{204, 216, 193}: "Cisco Systems, Inc",
-       [3]byte{204, 217, 233}: "SCR Engineers Ltd.",
-       [3]byte{204, 224, 195}: "Mangstor, Inc.",
-       [3]byte{204, 225, 127}: "Juniper Networks",
-       [3]byte{204, 225, 213}: "BUFFALO.INC",
-       [3]byte{204, 231, 152}: "My Social Stuff",
-       [3]byte{204, 231, 223}: "American Magnetics, Inc.",
-       [3]byte{204, 232, 172}: "SOYEA Technology Co.,Ltd.",
-       [3]byte{204, 234, 28}:  "DCONWORKS  Co., Ltd",
-       [3]byte{204, 238, 217}: "VAHLE DETO GmbH",
-       [3]byte{204, 239, 72}:  "Cisco Systems, Inc",
-       [3]byte{204, 243, 165}: "Chi Mei Communication Systems, Inc",
-       [3]byte{204, 244, 7}:   "EUKREA ELECTROMATIQUE SARL",
-       [3]byte{204, 245, 56}:  "3isysnetworks",
-       [3]byte{204, 246, 122}: "Ayecka Communication Systems LTD",
-       [3]byte{204, 248, 65}:  "Lumewave",
-       [3]byte{204, 248, 240}: "Xi'an HISU Multimedia Technology Co.,Ltd.",
-       [3]byte{204, 249, 84}:  "Avaya Inc",
-       [3]byte{204, 249, 87}:  "u-blox AG",
-       [3]byte{204, 249, 232}: "Samsung Electronics Co.,Ltd",
-       [3]byte{204, 250, 0}:   "LG Electronics (Mobile Communications)",
-       [3]byte{204, 251, 101}: "Nintendo Co., Ltd.",
-       [3]byte{204, 252, 109}: "RIZ TRANSMITTERS",
-       [3]byte{204, 252, 177}: "Wireless Technology, Inc.",
-       [3]byte{204, 253, 23}:  "TCT mobile ltd",
-       [3]byte{204, 254, 60}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{208, 3, 75}:    "Apple, Inc.",
-       [3]byte{208, 4, 1}:     "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{208, 4, 146}:   "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{208, 5, 42}:    "Arcadyan Corporation",
-       [3]byte{208, 7, 144}:   "Texas Instruments",
-       [3]byte{208, 7, 202}:   "Juniper Networks",
-       [3]byte{208, 10, 171}:  "Yokogawa Digital Computer Corporation",
-       [3]byte{208, 14, 164}:  "Porsche Cars North America",
-       [3]byte{208, 14, 217}:  "Taicang T&W Electronics",
-       [3]byte{208, 15, 109}:  "T&W Electronics Company",
-       [3]byte{208, 18, 66}:   "BIOS Corporation",
-       [3]byte{208, 19, 30}:   "Sunrex Technology Corp",
-       [3]byte{208, 19, 253}:  "LG Electronics (Mobile Communications)",
-       [3]byte{208, 21, 74}:   "zte corporation",
-       [3]byte{208, 23, 106}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{208, 23, 194}:  "ASUSTek COMPUTER INC.",
-       [3]byte{208, 26, 167}:  "UniPrint",
-       [3]byte{208, 28, 187}:  "Beijing Ctimes Digital Technology Co., Ltd.",
-       [3]byte{208, 34, 18}:   "IEEE Registration Authority",
-       [3]byte{208, 34, 190}:  "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
-       [3]byte{208, 35, 219}:  "Apple, Inc.",
-       [3]byte{208, 37, 22}:   "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.",
-       [3]byte{208, 37, 68}:   "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
-       [3]byte{208, 37, 152}:  "Apple, Inc.",
-       [3]byte{208, 39, 136}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{208, 44, 69}:   "littleBits Electronics, Inc.",
-       [3]byte{208, 45, 179}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{208, 49, 16}:   "Ingenic Semiconductor Co.,Ltd",
-       [3]byte{208, 49, 105}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{208, 51, 17}:   "Apple, Inc.",
-       [3]byte{208, 55, 66}:   "Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd",
-       [3]byte{208, 55, 97}:   "Texas Instruments",
-       [3]byte{208, 57, 114}:  "Texas Instruments",
-       [3]byte{208, 57, 179}:  "ARRIS Group, Inc.",
-       [3]byte{208, 61, 195}:  "AQ Corporation",
-       [3]byte{208, 62, 92}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{208, 67, 30}:   "Dell Inc.",
-       [3]byte{208, 70, 220}:  "Southwest Research Institute",
-       [3]byte{208, 72, 243}:  "DATTUS Inc",
-       [3]byte{208, 73, 139}:  "ZOOM SERVER",
-       [3]byte{208, 76, 193}:  "SINTRONES Technology Corp.",
-       [3]byte{208, 77, 44}:   "Roku, Inc.",
-       [3]byte{208, 79, 126}:  "Apple, Inc.",
-       [3]byte{208, 80, 153}:  "ASRock Incorporation",
-       [3]byte{208, 81, 98}:   "Sony Mobile Communications AB",
-       [3]byte{208, 82, 168}:  "Physical Graph Corporation",
-       [3]byte{208, 83, 73}:   "Liteon Technology Corporation",
-       [3]byte{208, 84, 45}:   "Cambridge Industries(Group) Co.,Ltd.",
-       [3]byte{208, 85, 178}:  "Integrated Device Technology (Malaysia) Sdn. Bhd.",
-       [3]byte{208, 87, 76}:   "Cisco Systems, Inc",
-       [3]byte{208, 87, 123}:  "Intel Corporate",
-       [3]byte{208, 87, 133}:  "Pantech Co., Ltd.",
-       [3]byte{208, 87, 161}:  "Werma Signaltechnik GmbH & Co. KG",
-       [3]byte{208, 88, 117}:  "Active Control Technology Inc.",
-       [3]byte{208, 88, 168}:  "zte corporation",
-       [3]byte{208, 89, 149}:  "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{208, 89, 195}:  "CeraMicro Technology Corporation",
-       [3]byte{208, 89, 228}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{208, 90, 0}:    "Technicolor CH USA Inc.",
-       [3]byte{208, 90, 15}:   "I-BT DIGITAL CO.,LTD",
-       [3]byte{208, 90, 241}:  "Shenzhen Pulier Tech CO.,Ltd",
-       [3]byte{208, 91, 168}:  "zte corporation",
-       [3]byte{208, 92, 122}:  "Sartura d.o.o.",
-       [3]byte{208, 95, 184}:  "Texas Instruments",
-       [3]byte{208, 95, 206}:  "Hitachi Data Systems",
-       [3]byte{208, 96, 140}:  "zte corporation",
-       [3]byte{208, 98, 160}:  "China Essence Technology (Zhumadian) Co., Ltd.",
-       [3]byte{208, 99, 77}:   "Meiko Maschinenbau GmbH &amp; Co. KG",
-       [3]byte{208, 99, 180}:  "SolidRun Ltd.",
-       [3]byte{208, 101, 202}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{208, 102, 109}: "Shenzhen Bus-Lan Technology Co., Ltd.",
-       [3]byte{208, 102, 123}: "Samsung Electronics Co.,Ltd",
-       [3]byte{208, 103, 38}:  "Hewlett Packard Enterprise",
-       [3]byte{208, 103, 229}: "Dell Inc.",
-       [3]byte{208, 105, 158}: "LUMINEX Lighting Control Equipment",
-       [3]byte{208, 105, 208}: "Verto Medical Solutions, LLC",
-       [3]byte{208, 106, 31}:  "BSE CO.,LTD.",
-       [3]byte{208, 111, 74}:  "TOPWELL INTERNATIONAL HOLDINGS LIMITED",
-       [3]byte{208, 111, 130}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{208, 113, 196}: "zte corporation",
-       [3]byte{208, 114, 220}: "Cisco Systems, Inc",
-       [3]byte{208, 115, 127}: "Mini-Circuits",
-       [3]byte{208, 115, 142}: "DONG OH PRECISION CO., LTD.",
-       [3]byte{208, 115, 213}: "LIFI LABS MANAGEMENT PTY LTD",
-       [3]byte{208, 117, 190}: "Reno A&E",
-       [3]byte{208, 118, 80}:  "IEEE Registration Authority",
-       [3]byte{208, 122, 181}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{208, 124, 45}:  "Leie IOT technology Co., Ltd",
-       [3]byte{208, 125, 229}: "Forward Pay Systems, Inc.",
-       [3]byte{208, 126, 40}:  "Hewlett Packard",
-       [3]byte{208, 126, 53}:  "Intel Corporate",
-       [3]byte{208, 127, 196}: "Ou Wei Technology Co.,Ltd. of Shenzhen City",
-       [3]byte{208, 131, 212}: "Xtel Wireless ApS",
-       [3]byte{208, 132, 176}: "Sagemcom Broadband SAS",
-       [3]byte{208, 135, 226}: "Samsung Electronics Co.,Ltd",
-       [3]byte{208, 137, 153}: "APCON, Inc.",
-       [3]byte{208, 138, 85}:  "Skullcandy",
-       [3]byte{208, 139, 126}: "Passif Semiconductor",
-       [3]byte{208, 140, 181}: "Texas Instruments",
-       [3]byte{208, 140, 255}: "UPWIS AB",
-       [3]byte{208, 146, 158}: "Microsoft Corporation",
-       [3]byte{208, 147, 128}: "Ducere Technologies Pvt. Ltd.",
-       [3]byte{208, 147, 248}: "Stonestreet One LLC",
-       [3]byte{208, 148, 102}: "Dell Inc.",
-       [3]byte{208, 149, 199}: "Pantech Co., Ltd.",
-       [3]byte{208, 150, 251}: "DASAN Network Solutions",
-       [3]byte{208, 153, 213}: "Alcatel-Lucent",
-       [3]byte{208, 155, 5}:   "Emtronix",
-       [3]byte{208, 156, 48}:  "Foster Electric Company, Limited",
-       [3]byte{208, 157, 10}:  "LINKCOM",
-       [3]byte{208, 157, 171}: "TCT mobile ltd",
-       [3]byte{208, 160, 214}: "Chengdu TD Tech Ltd.",
-       [3]byte{208, 163, 17}:  "Neuberger Gebäudeautomation GmbH",
-       [3]byte{208, 164, 177}: "Sonifex Ltd.",
-       [3]byte{208, 165, 166}: "Cisco Systems, Inc",
-       [3]byte{208, 166, 55}:  "Apple, Inc.",
-       [3]byte{208, 174, 236}: "Alpha Networks Inc.",
-       [3]byte{208, 175, 182}: "Linktop Technology Co., LTD",
-       [3]byte{208, 176, 205}: "Moen",
-       [3]byte{208, 177, 40}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{208, 178, 196}: "Technicolor CH USA Inc.",
-       [3]byte{208, 179, 63}:  "Shenzhen TINNO Mobile Technology Corp.",
-       [3]byte{208, 180, 152}: "Robert Bosch LLC Automotive Electronics",
-       [3]byte{208, 181, 35}:  "Bestcare Cloucal Corp.",
-       [3]byte{208, 181, 61}:  "SEPRO ROBOTIQUE",
-       [3]byte{208, 181, 194}: "Texas Instruments",
-       [3]byte{208, 186, 228}: "Shanghai MXCHIP Information Technology Co., Ltd.",
-       [3]byte{208, 187, 128}: "SHL Telemedicine International Ltd.",
-       [3]byte{208, 189, 1}:   "DS International",
-       [3]byte{208, 190, 44}:  "CNSLink Co., Ltd.",
-       [3]byte{208, 191, 156}: "Hewlett Packard",
-       [3]byte{208, 192, 191}: "Actions Microelectronics Co., Ltd",
-       [3]byte{208, 193, 147}: "SKYBELL, INC",
-       [3]byte{208, 193, 177}: "Samsung Electronics Co.,Ltd",
-       [3]byte{208, 194, 130}: "Cisco Systems, Inc",
-       [3]byte{208, 196, 47}:  "Tamagawa Seiki Co.,Ltd.",
-       [3]byte{208, 197, 243}: "Apple, Inc.",
-       [3]byte{208, 199, 137}: "Cisco Systems, Inc",
-       [3]byte{208, 199, 192}: "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{208, 205, 225}: "Scientech Electronics",
-       [3]byte{208, 207, 94}:  "Energy Micro AS",
-       [3]byte{208, 208, 75}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{208, 208, 253}: "Cisco Systems, Inc",
-       [3]byte{208, 210, 18}:  "K2NET Co.,Ltd.",
-       [3]byte{208, 210, 134}: "Beckman Coulter K.K.",
-       [3]byte{208, 210, 176}: "Apple, Inc.",
-       [3]byte{208, 211, 252}: "Mios, Ltd.",
-       [3]byte{208, 212, 18}:  "ADB Broadband Italia",
-       [3]byte{208, 212, 113}: "MVTECH co., Ltd",
-       [3]byte{208, 214, 204}: "Wintop",
-       [3]byte{208, 217, 79}:  "IEEE Registration Authority",
-       [3]byte{208, 219, 50}:  "Nokia Corporation",
-       [3]byte{208, 223, 154}: "Liteon Technology Corporation",
-       [3]byte{208, 223, 178}: "Genie Networks Limited",
-       [3]byte{208, 223, 199}: "Samsung Electronics Co.,Ltd",
-       [3]byte{208, 225, 64}:  "Apple, Inc.",
-       [3]byte{208, 227, 71}:  "Yoga",
-       [3]byte{208, 228, 11}:  "Wearable Inc.",
-       [3]byte{208, 228, 74}:  "Murata Manufacturing Co., Ltd.",
-       [3]byte{208, 229, 77}:  "ARRIS Group, Inc.",
-       [3]byte{208, 231, 130}: "AzureWave Technology Inc.",
-       [3]byte{208, 235, 3}:   "Zhehua technology limited",
-       [3]byte{208, 235, 158}: "Seowoo Inc.",
-       [3]byte{208, 240, 219}: "Ericsson",
-       [3]byte{208, 242, 127}: "SteadyServ Technoligies, LLC",
-       [3]byte{208, 247, 59}:  "Helmut Mauell GmbH Werk Weida",
-       [3]byte{208, 248, 140}: "Motorola (Wuhan) Mobility Technologies Communication Co., Ltd.",
-       [3]byte{208, 250, 29}:  "Qihoo  360  Technology Co.,Ltd",
-       [3]byte{208, 252, 204}: "Samsung Electronics Co.,Ltd",
-       [3]byte{208, 255, 80}:  "Texas Instruments",
-       [3]byte{208, 255, 152}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{212, 0, 13}:    "Phoenix Broadband Technologies, LLC.",
-       [3]byte{212, 0, 87}:    "MC Technologies GmbH",
-       [3]byte{212, 1, 41}:    "Broadcom",
-       [3]byte{212, 1, 109}:   "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{212, 2, 74}:    "Delphian Systems LLC",
-       [3]byte{212, 4, 205}:   "ARRIS Group, Inc.",
-       [3]byte{212, 4, 255}:   "Juniper Networks",
-       [3]byte{212, 5, 152}:   "ARRIS Group, Inc.",
-       [3]byte{212, 10, 169}:  "ARRIS Group, Inc.",
-       [3]byte{212, 11, 26}:   "HTC Corporation",
-       [3]byte{212, 11, 185}:  "Solid Semecs bv.",
-       [3]byte{212, 15, 178}:  "Applied Micro Electronics AME bv",
-       [3]byte{212, 16, 144}:  "iNFORM Systems AG",
-       [3]byte{212, 16, 207}:  "Huanshun Network Science and Technology Co., Ltd.",
-       [3]byte{212, 17, 214}:  "ShotSpotter, Inc.",
-       [3]byte{212, 18, 150}:  "Anobit Technologies Ltd.",
-       [3]byte{212, 18, 187}:  "Quadrant Components Inc. Ltd",
-       [3]byte{212, 19, 111}:  "Asia Pacific Brands",
-       [3]byte{212, 26, 63}:   "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{212, 28, 28}:   "RCF S.P.A.",
-       [3]byte{212, 29, 113}:  "Palo Alto Networks",
-       [3]byte{212, 30, 53}:   "TOHO Electronics INC.",
-       [3]byte{212, 31, 12}:   "JAI Oy",
-       [3]byte{212, 32, 109}:  "HTC Corporation",
-       [3]byte{212, 33, 34}:   "Sercomm Corporation",
-       [3]byte{212, 34, 63}:   "Lenovo Mobile Communication Technology Ltd.",
-       [3]byte{212, 34, 78}:   "Alcatel Lucent",
-       [3]byte{212, 37, 139}:  "Intel Corporate",
-       [3]byte{212, 39, 81}:   "Infopia Co., Ltd",
-       [3]byte{212, 40, 178}:  "ioBridge, Inc.",
-       [3]byte{212, 40, 213}:  "TCT mobile ltd",
-       [3]byte{212, 41, 234}:  "Zimory GmbH",
-       [3]byte{212, 44, 15}:   "ARRIS Group, Inc.",
-       [3]byte{212, 44, 61}:   "Sky Light Digital Limited",
-       [3]byte{212, 44, 68}:   "Cisco Systems, Inc",
-       [3]byte{212, 47, 35}:   "Akenori PTE Ltd",
-       [3]byte{212, 49, 157}:  "Sinwatec",
-       [3]byte{212, 50, 102}:  "Fike Corporation",
-       [3]byte{212, 54, 57}:   "Texas Instruments",
-       [3]byte{212, 54, 219}:  "Jiangsu Toppower Automotive Electronics Co., Ltd",
-       [3]byte{212, 55, 215}:  "zte corporation",
-       [3]byte{212, 56, 156}:  "Sony Mobile Communications AB",
-       [3]byte{212, 58, 101}:  "IGRS Engineering Lab Ltd.",
-       [3]byte{212, 58, 233}:  "DONGGUAN ipt INDUSTRIAL CO., LTD",
-       [3]byte{212, 61, 103}:  "Carma Industries Inc.",
-       [3]byte{212, 61, 126}:  "Micro-Star Int'l Co, Ltd",
-       [3]byte{212, 64, 240}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{212, 65, 101}:  "SICHUAN TIANYI COMHEART TELECOMCO.,LTD",
-       [3]byte{212, 67, 168}:  "Changzhou Haojie Electric Co., Ltd.",
-       [3]byte{212, 69, 232}:  "Jiangxi Hongpai Technology Co., Ltd.",
-       [3]byte{212, 75, 94}:   "TAIYO YUDEN CO., LTD.",
-       [3]byte{212, 76, 36}:   "Vuppalamritha Magnetic Components LTD",
-       [3]byte{212, 76, 156}:  "Shenzhen YOOBAO Technology Co.Ltd",
-       [3]byte{212, 76, 167}:  "Informtekhnika & Communication, LLC",
-       [3]byte{212, 79, 128}:  "Kemper Digital GmbH",
-       [3]byte{212, 80, 63}:   "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{212, 80, 122}:  "CEIVA Logic, Inc",
-       [3]byte{212, 82, 42}:   "TangoWiFi.com",
-       [3]byte{212, 82, 81}:   "IBT Ingenieurbureau Broennimann Thun",
-       [3]byte{212, 82, 151}:  "nSTREAMS Technologies, Inc.",
-       [3]byte{212, 83, 175}:  "VIGO System S.A.",
-       [3]byte{212, 85, 86}:   "Fiber Mountain Inc.",
-       [3]byte{212, 85, 190}:  "SHENZHEN FAST TECHNOLOGIES CO.,LTD",
-       [3]byte{212, 90, 178}:  "Galleon Systems",
-       [3]byte{212, 92, 112}:  "Wi-Fi Alliance",
-       [3]byte{212, 93, 66}:   "Nokia Corporation",
-       [3]byte{212, 93, 223}:  "PEGATRON CORPORATION",
-       [3]byte{212, 95, 37}:   "Shenzhen YOUHUA Technology Co., Ltd",
-       [3]byte{212, 97, 46}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{212, 97, 50}:   "Pro Concept Manufacturer Co.,Ltd.",
-       [3]byte{212, 97, 157}:  "Apple, Inc.",
-       [3]byte{212, 97, 254}:  "Hangzhou H3C Technologies Co., Limited",
-       [3]byte{212, 99, 198}:  "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{212, 99, 254}:  "Arcadyan Corporation",
-       [3]byte{212, 100, 247}: "CHENGDU USEE DIGITAL TECHNOLOGY CO., LTD",
-       [3]byte{212, 102, 168}: "Riedo Networks GmbH",
-       [3]byte{212, 103, 97}:  "SAHAB TECHNOLOGY",
-       [3]byte{212, 103, 231}: "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{212, 104, 77}:  "Ruckus Wireless",
-       [3]byte{212, 104, 103}: "Neoventus Design Group",
-       [3]byte{212, 104, 186}: "Shenzhen Sundray Technologies Company Limited",
-       [3]byte{212, 106, 106}: "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{212, 106, 145}: "Snap AV",
-       [3]byte{212, 106, 168}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{212, 108, 191}: "Goodrich ISR",
-       [3]byte{212, 108, 218}: "CSM GmbH",
-       [3]byte{212, 109, 80}:  "Cisco Systems, Inc",
-       [3]byte{212, 110, 14}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{212, 110, 92}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{212, 111, 66}:  "WAXESS USA Inc",
-       [3]byte{212, 114, 8}:   "Bragi GmbH",
-       [3]byte{212, 118, 234}: "zte corporation",
-       [3]byte{212, 120, 86}:  "Avaya Inc",
-       [3]byte{212, 121, 195}: "Cameronet GmbH & Co. KG",
-       [3]byte{212, 122, 226}: "Samsung Electronics Co.,Ltd",
-       [3]byte{212, 123, 53}:  "NEO Monitors AS",
-       [3]byte{212, 123, 117}: "HARTING Electronics GmbH",
-       [3]byte{212, 123, 176}: "ASKEY COMPUTER CORP",
-       [3]byte{212, 125, 252}: "TECNO MOBILE LIMITED",
-       [3]byte{212, 129, 202}: "iDevices, LLC",
-       [3]byte{212, 129, 215}: "Dell Inc.",
-       [3]byte{212, 130, 62}:  "Argosy Technologies, Ltd.",
-       [3]byte{212, 131, 4}:   "SHENZHEN FAST TECHNOLOGIES CO.,LTD",
-       [3]byte{212, 133, 100}: "Hewlett Packard",
-       [3]byte{212, 135, 216}: "Samsung Electronics Co.,Ltd",
-       [3]byte{212, 136, 63}:  "HDPRO CO., LTD.",
-       [3]byte{212, 136, 144}: "Samsung Electronics Co.,Ltd",
-       [3]byte{212, 140, 181}: "Cisco Systems, Inc",
-       [3]byte{212, 141, 217}: "Meld Technology, Inc",
-       [3]byte{212, 143, 51}:  "Microsoft Corporation",
-       [3]byte{212, 143, 170}: "Sogecam Industrial, S.A.",
-       [3]byte{212, 144, 224}: "Topcon Electronics GmbH & Co. KG",
-       [3]byte{212, 145, 175}: "Electroacustica General Iberica, S.A.",
-       [3]byte{212, 147, 152}: "Nokia Corporation",
-       [3]byte{212, 147, 160}: "Fidelix Oy",
-       [3]byte{212, 148, 90}:  "COSMO CO., LTD",
-       [3]byte{212, 148, 161}: "Texas Instruments",
-       [3]byte{212, 148, 232}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{212, 149, 36}:  "Clover Network, Inc.",
-       [3]byte{212, 150, 223}: "SUNGJIN C&T CO.,LTD",
-       [3]byte{212, 151, 11}:  "Xiaomi Communications Co Ltd",
-       [3]byte{212, 154, 32}:  "Apple, Inc.",
-       [3]byte{212, 155, 92}:  "Chongqing Miedu Technology Co., Ltd.",
-       [3]byte{212, 156, 40}:  "JayBird LLC",
-       [3]byte{212, 156, 142}: "University of FUKUI",
-       [3]byte{212, 158, 109}: "Wuhan Zhongyuan Huadian Science & Technology Co.,",
-       [3]byte{212, 160, 42}:  "Cisco Systems, Inc",
-       [3]byte{212, 161, 72}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{212, 164, 37}:  "SMAX Technology Co., Ltd.",
-       [3]byte{212, 164, 153}: "InView Technology Corporation",
-       [3]byte{212, 169, 40}:  "GreenWave Reality Inc",
-       [3]byte{212, 170, 255}: "MICRO WORLD",
-       [3]byte{212, 172, 78}:  "BODi rS, LLC",
-       [3]byte{212, 173, 45}:  "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{212, 174, 5}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{212, 174, 82}:  "Dell Inc.",
-       [3]byte{212, 177, 16}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{212, 177, 105}: "Le Shi Zhi Xin Electronic Technology (Tianjin) Limited",
-       [3]byte{212, 178, 122}: "ARRIS Group, Inc.",
-       [3]byte{212, 180, 62}:  "Messcomp Datentechnik GmbH",
-       [3]byte{212, 184, 255}: "Home Control Singapore Pte Ltd",
-       [3]byte{212, 190, 217}: "Dell Inc.",
-       [3]byte{212, 191, 45}:  "SE Controls Asia Pacific Ltd",
-       [3]byte{212, 191, 127}: "UPVEL",
-       [3]byte{212, 193, 200}: "zte corporation",
-       [3]byte{212, 193, 252}: "Nokia Corporation",
-       [3]byte{212, 199, 102}: "Acentic GmbH",
-       [3]byte{212, 200, 176}: "Prime Electronics & Satellitics Inc.",
-       [3]byte{212, 201, 178}: "Quanergy Systems Inc",
-       [3]byte{212, 201, 239}: "Hewlett Packard",
-       [3]byte{212, 202, 109}: "Routerboard.com",
-       [3]byte{212, 202, 110}: "u-blox AG",
-       [3]byte{212, 203, 175}: "Nokia Corporation",
-       [3]byte{212, 206, 184}: "Enatel LTD",
-       [3]byte{212, 207, 55}:  "Symbolic IO",
-       [3]byte{212, 207, 249}: "Shenzhen Sen5 Technology Co., Ltd.",
-       [3]byte{212, 209, 132}: "ADB Broadband Italia",
-       [3]byte{212, 210, 73}:  "Power Ethernet",
-       [3]byte{212, 210, 229}: "BKAV Corporation",
-       [3]byte{212, 213, 13}:  "Southwest Microwave, Inc",
-       [3]byte{212, 215, 72}:  "Cisco Systems, Inc",
-       [3]byte{212, 215, 169}: "Shanghai Kaixiang Info Tech LTD",
-       [3]byte{212, 216, 152}: "Korea CNO Tech Co., Ltd",
-       [3]byte{212, 217, 25}:  "GoPro",
-       [3]byte{212, 220, 205}: "Apple, Inc.",
-       [3]byte{212, 223, 87}:  "Alpinion Medical Systems",
-       [3]byte{212, 224, 142}: "ValueHD Corporation",
-       [3]byte{212, 227, 44}:  "S. Siedle & Sohne",
-       [3]byte{212, 227, 63}:  "Nokia",
-       [3]byte{212, 232, 178}: "Samsung Electronics Co.,Ltd",
-       [3]byte{212, 233, 11}:  "CVT CO.,LTD",
-       [3]byte{212, 234, 14}:  "Avaya Inc",
-       [3]byte{212, 236, 12}:  "Harley-Davidson Motor Company",
-       [3]byte{212, 236, 134}: "LinkedHope Intelligent Technologies Co., Ltd",
-       [3]byte{212, 238, 7}:   "HIWIFI Co., Ltd.",
-       [3]byte{212, 240, 39}:  "Navetas Energy Management",
-       [3]byte{212, 240, 180}: "Napco Security Technologies",
-       [3]byte{212, 241, 67}:  "IPROAD.,Inc",
-       [3]byte{212, 242, 7}:   "DIAODIAO(Beijing)Technology CO.,Ltd",
-       [3]byte{212, 244, 111}: "Apple, Inc.",
-       [3]byte{212, 244, 190}: "Palo Alto Networks",
-       [3]byte{212, 245, 19}:  "Texas Instruments",
-       [3]byte{212, 246, 63}:  "IEA S.R.L.",
-       [3]byte{212, 249, 161}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{216, 0, 77}:    "Apple, Inc.",
-       [3]byte{216, 5, 46}:    "Skyviia Corporation",
-       [3]byte{216, 6, 209}:   "Honeywell Fire System (Shanghai) Co,. Ltd.",
-       [3]byte{216, 8, 49}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{216, 8, 245}:   "Arcadia Networks Co. Ltd.",
-       [3]byte{216, 9, 195}:   "Cercacor Labs",
-       [3]byte{216, 12, 207}:  "C.G.V. S.A.S.",
-       [3]byte{216, 13, 227}:  "FXI TECHNOLOGIES AS",
-       [3]byte{216, 15, 153}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{216, 20, 214}:  "SURE SYSTEM Co Ltd",
-       [3]byte{216, 21, 13}:   "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{216, 22, 10}:   "Nippon Electro-Sensory Devices",
-       [3]byte{216, 22, 193}:  "DEWAV (HK) ELECTRONICS LIMITED",
-       [3]byte{216, 24, 43}:   "Conti Temic Microelectronic GmbH",
-       [3]byte{216, 25, 122}:  "Nuheara Ltd",
-       [3]byte{216, 25, 206}:  "Telesquare",
-       [3]byte{216, 27, 254}:  "TWINLINX CORPORATION",
-       [3]byte{216, 28, 20}:   "Compacta International, Ltd.",
-       [3]byte{216, 29, 114}:  "Apple, Inc.",
-       [3]byte{216, 30, 222}:  "B&W Group Ltd",
-       [3]byte{216, 31, 204}:  "Brocade Communications Systems, Inc.",
-       [3]byte{216, 32, 159}:  "Cubro Acronet GesmbH",
-       [3]byte{216, 34, 244}:  "Avnet Silica",
-       [3]byte{216, 36, 189}:  "Cisco Systems, Inc",
-       [3]byte{216, 37, 34}:   "ARRIS Group, Inc.",
-       [3]byte{216, 37, 176}:  "Rockeetech Systems Co.,Ltd.",
-       [3]byte{216, 38, 185}:  "Guangdong Coagent Electronics S&amp;T Co.,Ltd.",
-       [3]byte{216, 39, 12}:   "MaxTronic International Co., Ltd.",
-       [3]byte{216, 40, 201}:  "General Electric Consumer and Industrial",
-       [3]byte{216, 41, 22}:   "Ascent Communication Technology",
-       [3]byte{216, 41, 134}:  "Best Wish Technology LTD",
-       [3]byte{216, 42, 21}:   "Leitner SpA",
-       [3]byte{216, 42, 126}:  "Nokia Corporation",
-       [3]byte{216, 45, 155}:  "Shenzhen G.Credit Communication Technology Co., Ltd",
-       [3]byte{216, 45, 225}:  "Tricascade Inc.",
-       [3]byte{216, 48, 98}:   "Apple, Inc.",
-       [3]byte{216, 49, 207}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{216, 50, 20}:   "Tenda Technology Co.,Ltd.Dongguan branch",
-       [3]byte{216, 50, 90}:   "Shenzhen YOUHUA Technology Co., Ltd",
-       [3]byte{216, 51, 127}:  "Office FA.com Co.,Ltd.",
-       [3]byte{216, 55, 190}:  "SHENZHEN GONGJIN ELECTRONICS CO.,LT",
-       [3]byte{216, 56, 13}:   "SHENZHEN IP-COM Network Co.,Ltd",
-       [3]byte{216, 56, 252}:  "Ruckus Wireless",
-       [3]byte{216, 60, 105}:  "Shenzhen TINNO Mobile Technology Corp.",
-       [3]byte{216, 66, 172}:  "Shanghai Feixun Communication Co.,Ltd.",
-       [3]byte{216, 66, 226}:  "Canary Connect, Inc.",
-       [3]byte{216, 67, 237}:  "Suzuken",
-       [3]byte{216, 69, 43}:   "Integrated Device Technology (Malaysia) Sdn. Bhd.",
-       [3]byte{216, 70, 6}:    "Silicon Valley Global Marketing",
-       [3]byte{216, 71, 16}:   "Sichuan Changhong Electric Ltd.",
-       [3]byte{216, 72, 238}:  "Hangzhou Xueji Technology Co., Ltd.",
-       [3]byte{216, 73, 11}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{216, 73, 47}:   "CANON INC.",
-       [3]byte{216, 74, 135}:  "OI ELECTRIC CO.,LTD",
-       [3]byte{216, 75, 42}:   "Cognitas Technologies, Inc.",
-       [3]byte{216, 79, 184}:  "LG ELECTRONICS",
-       [3]byte{216, 80, 230}:  "ASUSTek COMPUTER INC.",
-       [3]byte{216, 84, 58}:   "Texas Instruments",
-       [3]byte{216, 84, 162}:  "Aerohive Networks Inc.",
-       [3]byte{216, 85, 163}:  "zte corporation",
-       [3]byte{216, 87, 239}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{216, 88, 215}:  "CZ.NIC, z.s.p.o.",
-       [3]byte{216, 91, 42}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{216, 93, 76}:   "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{216, 93, 132}:  "CAx soft GmbH",
-       [3]byte{216, 93, 226}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{216, 93, 239}:  "Busch-Jaeger Elektro GmbH",
-       [3]byte{216, 93, 251}:  "Private",
-       [3]byte{216, 96, 176}:  "bioMérieux Italia S.p.A.",
-       [3]byte{216, 96, 179}:  "Guangdong Global Electronic Technology CO.,LTD",
-       [3]byte{216, 97, 98}:   "Wistron Neweb Corporation",
-       [3]byte{216, 97, 148}:  "Objetivos y Sevicios de Valor Añadido",
-       [3]byte{216, 98, 219}:  "Eno Inc.",
-       [3]byte{216, 99, 117}:  "Xiaomi Communications Co Ltd",
-       [3]byte{216, 101, 149}: "Toy's Myth Inc.",
-       [3]byte{216, 102, 198}: "Shenzhen Daystar Technology Co.,ltd",
-       [3]byte{216, 102, 238}: "BOXIN COMMUNICATION CO.,LTD.",
-       [3]byte{216, 103, 217}: "Cisco Systems, Inc",
-       [3]byte{216, 105, 96}:  "Steinsvik",
-       [3]byte{216, 107, 247}: "Nintendo Co., Ltd.",
-       [3]byte{216, 108, 2}:   "Huaqin Telecom Technology Co.,Ltd",
-       [3]byte{216, 108, 99}:  "Google, Inc.",
-       [3]byte{216, 108, 233}: "Sagemcom Broadband SAS",
-       [3]byte{216, 113, 87}:  "Lenovo Mobile Communication Technology Ltd.",
-       [3]byte{216, 116, 149}: "zte corporation",
-       [3]byte{216, 117, 51}:  "Nokia Corporation",
-       [3]byte{216, 118, 10}:  "Escort, Inc.",
-       [3]byte{216, 120, 229}: "KUHN SA",
-       [3]byte{216, 121, 136}: "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{216, 124, 221}: "SANIX INCORPORATED",
-       [3]byte{216, 126, 177}: "x.o.ware, inc.",
-       [3]byte{216, 128, 57}:  "Microchip Technology Inc.",
-       [3]byte{216, 128, 60}:  "Anhui Huami Information Technology Company Limited",
-       [3]byte{216, 129, 206}: "AHN INC.",
-       [3]byte{216, 132, 102}: "Extreme Networks, Inc.",
-       [3]byte{216, 135, 213}: "Leadcore Technology CO.,LTD",
-       [3]byte{216, 136, 206}: "RF Technology Pty Ltd",
-       [3]byte{216, 138, 59}:  "UNIT-EM",
-       [3]byte{216, 139, 76}:  "KingTing Tech.",
-       [3]byte{216, 141, 92}:  "Elentec",
-       [3]byte{216, 143, 118}: "Apple, Inc.",
-       [3]byte{216, 144, 232}: "Samsung Electronics Co.,Ltd",
-       [3]byte{216, 147, 65}:  "General Electric Global Research",
-       [3]byte{216, 148, 3}:   "Hewlett Packard Enterprise",
-       [3]byte{216, 149, 47}:  "Texas Instruments",
-       [3]byte{216, 150, 133}: "GoPro",
-       [3]byte{216, 150, 149}: "Apple, Inc.",
-       [3]byte{216, 150, 224}: "Alibaba Cloud Computing Ltd.",
-       [3]byte{216, 151, 59}:  "Artesyn Embedded Technologies",
-       [3]byte{216, 151, 96}:  "C2 Development, Inc.",
-       [3]byte{216, 151, 124}: "Grey Innovation",
-       [3]byte{216, 151, 186}: "PEGATRON CORPORATION",
-       [3]byte{216, 154, 52}:  "Beijing SHENQI Technology Co., Ltd.",
-       [3]byte{216, 157, 103}: "Hewlett Packard",
-       [3]byte{216, 157, 185}: "eMegatech International Corp.",
-       [3]byte{216, 158, 63}:  "Apple, Inc.",
-       [3]byte{216, 158, 243}: "Dell Inc.",
-       [3]byte{216, 160, 29}:  "Espressif Inc.",
-       [3]byte{216, 161, 5}:   "Syslane, Co., Ltd.",
-       [3]byte{216, 162, 94}:  "Apple, Inc.",
-       [3]byte{216, 165, 52}:  "Spectronix Corporation",
-       [3]byte{216, 173, 221}: "Sonavation, Inc.",
-       [3]byte{216, 174, 144}: "Itibia Technologies",
-       [3]byte{216, 175, 59}:  "Hangzhou Bigbright Integrated communications system Co.,Ltd",
-       [3]byte{216, 175, 241}: "Panasonic Appliances Company",
-       [3]byte{216, 176, 46}:  "Guangzhou Zonerich Business Machine Co., LTD.",
-       [3]byte{216, 176, 76}:  "Jinan USR IOT Technology Co., Ltd.",
-       [3]byte{216, 177, 34}:  "Juniper Networks",
-       [3]byte{216, 177, 42}:  "Panasonic Mobile Communications Co.,Ltd.",
-       [3]byte{216, 177, 144}: "Cisco Systems, Inc",
-       [3]byte{216, 179, 119}: "HTC Corporation",
-       [3]byte{216, 182, 183}: "Comtrend Corporation",
-       [3]byte{216, 182, 193}: "NetworkAccountant, Inc.",
-       [3]byte{216, 182, 214}: "Blu Tether Limited",
-       [3]byte{216, 184, 246}: "Nantworks",
-       [3]byte{216, 185, 14}:  "Triple Domain Vision Co.,Ltd.",
-       [3]byte{216, 187, 44}:  "Apple, Inc.",
-       [3]byte{216, 191, 76}:  "Victory Concept Electronics Limited",
-       [3]byte{216, 192, 104}: "Netgenetech.co.,ltd.",
-       [3]byte{216, 192, 106}: "Hunantv.com Interactive Entertainment Media Co.,Ltd.",
-       [3]byte{216, 195, 251}: "DETRACOM",
-       [3]byte{216, 196, 106}: "Murata Manufacturing Co., Ltd.",
-       [3]byte{216, 196, 151}: "Quanta Computer Inc.",
-       [3]byte{216, 196, 233}: "Samsung Electronics Co.,Ltd",
-       [3]byte{216, 198, 145}: "Hichan Technology Corp.",
-       [3]byte{216, 199, 113}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{216, 199, 200}: "Aruba Networks",
-       [3]byte{216, 200, 233}: "Phicomm (Shanghai) Co., Ltd.",
-       [3]byte{216, 201, 157}: "EA DISPLAY LIMITED",
-       [3]byte{216, 203, 138}: "Micro-Star INTL CO., LTD.",
-       [3]byte{216, 207, 156}: "Apple, Inc.",
-       [3]byte{216, 209, 203}: "Apple, Inc.",
-       [3]byte{216, 210, 124}: "JEMA ENERGY, SA",
-       [3]byte{216, 211, 133}: "Hewlett Packard",
-       [3]byte{216, 212, 60}:  "Sony Corporation",
-       [3]byte{216, 213, 185}: "Rainforest Automation, Inc.",
-       [3]byte{216, 214, 126}: "GSK CNC EQUIPMENT CO.,LTD",
-       [3]byte{216, 215, 35}:  "IDS, Inc",
-       [3]byte{216, 216, 102}: "SHENZHEN TOZED TECHNOLOGIES CO.,LTD.",
-       [3]byte{216, 218, 82}:  "APATOR S.A.",
-       [3]byte{216, 220, 233}: "Kunshan Erlab ductless filtration system Co.,Ltd",
-       [3]byte{216, 221, 95}:  "BALMUDA Inc.",
-       [3]byte{216, 221, 253}: "Texas Instruments",
-       [3]byte{216, 222, 206}: "ISUNG CO.,LTD",
-       [3]byte{216, 223, 13}:  "beroNet GmbH",
-       [3]byte{216, 223, 122}: "Quest Software, Inc.",
-       [3]byte{216, 224, 4}:   "Vodia Networks Inc",
-       [3]byte{216, 224, 184}: "BULAT LLC",
-       [3]byte{216, 224, 225}: "Samsung Electronics Co.,Ltd",
-       [3]byte{216, 227, 174}: "CIRTEC MEDICAL SYSTEMS",
-       [3]byte{216, 229, 109}: "TCT mobile ltd",
-       [3]byte{216, 231, 43}:  "NetScout Systems, Inc.",
-       [3]byte{216, 231, 67}:  "Wush, Inc",
-       [3]byte{216, 233, 82}:  "KEOPSYS",
-       [3]byte{216, 235, 151}: "TRENDnet, Inc.",
-       [3]byte{216, 237, 28}:  "Magna Technology SL",
-       [3]byte{216, 238, 120}: "Moog Protokraft",
-       [3]byte{216, 239, 205}: "Nokia",
-       [3]byte{216, 240, 242}: "Zeebo Inc",
-       [3]byte{216, 241, 240}: "Pepxim International Limited",
-       [3]byte{216, 247, 16}:  "Libre Wireless Technologies Inc.",
-       [3]byte{216, 251, 17}:  "AXACORE",
-       [3]byte{216, 251, 94}:  "ASKEY COMPUTER CORP",
-       [3]byte{216, 251, 104}: "Cloud Corner Ltd.",
-       [3]byte{216, 252, 56}:  "Giantec Semiconductor Inc",
-       [3]byte{216, 252, 147}: "Intel Corporate",
-       [3]byte{216, 254, 143}: "IDFone Co., Ltd.",
-       [3]byte{216, 254, 227}: "D-Link International",
-       [3]byte{220, 0, 119}:   "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{220, 2, 101}:   "Meditech Kft",
-       [3]byte{220, 2, 142}:   "zte corporation",
-       [3]byte{220, 5, 47}:    "National Products Inc.",
-       [3]byte{220, 5, 117}:   "SIEMENS ENERGY AUTOMATION",
-       [3]byte{220, 5, 237}:   "Nabtesco  Corporation",
-       [3]byte{220, 7, 193}:   "HangZhou QiYang Technology Co.,Ltd.",
-       [3]byte{220, 8, 86}:    "Alcatel-Lucent Enterprise",
-       [3]byte{220, 9, 20}:    "Talk-A-Phone Co.",
-       [3]byte{220, 9, 76}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{220, 11, 26}:   "ADB Broadband Italia",
-       [3]byte{220, 11, 52}:   "LG Electronics (Mobile Communications)",
-       [3]byte{220, 12, 45}:   "WEIFANG GOERTEK ELECTRONICS CO.,LTD",
-       [3]byte{220, 12, 92}:   "Apple, Inc.",
-       [3]byte{220, 13, 48}:   "Shenzhen Feasycom Technology Co., Ltd.",
-       [3]byte{220, 14, 161}:  "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
-       [3]byte{220, 21, 219}:  "Ge Ruili Intelligent Technology ( Beijing ) Co., Ltd.",
-       [3]byte{220, 22, 162}:  "Medtronic Diabetes",
-       [3]byte{220, 23, 90}:   "Hitachi High-Technologies Corporation",
-       [3]byte{220, 23, 146}:  "Captivate Network",
-       [3]byte{220, 26, 1}:    "Ecoliv Technology ( Shenzhen ) Ltd.",
-       [3]byte{220, 26, 197}:  "vivo Mobile Communication Co., Ltd.",
-       [3]byte{220, 29, 159}:  "U & B tech",
-       [3]byte{220, 29, 212}:  "Microstep-MIS spol. s r.o.",
-       [3]byte{220, 30, 163}:  "Accensus LLC",
-       [3]byte{220, 32, 8}:    "ASD Electronics Ltd",
-       [3]byte{220, 40, 52}:   "HAKKO Corporation",
-       [3]byte{220, 41, 58}:   "Shenzhen Nuoshi Technology Co., LTD.",
-       [3]byte{220, 42, 20}:   "Shanghai Longjing Technology Co.",
-       [3]byte{220, 43, 42}:   "Apple, Inc.",
-       [3]byte{220, 43, 97}:   "Apple, Inc.",
-       [3]byte{220, 43, 102}:  "InfoBLOCK S.A. de C.V.",
-       [3]byte{220, 43, 202}:  "Zera GmbH",
-       [3]byte{220, 44, 38}:   "Iton Technology Limited",
-       [3]byte{220, 45, 203}:  "Beijing Unis HengYue Technology Co., Ltd.",
-       [3]byte{220, 46, 106}:  "HCT. Co., Ltd.",
-       [3]byte{220, 47, 3}:    "Step forward Group Co., Ltd.",
-       [3]byte{220, 48, 156}:  "Heyrex Limited",
-       [3]byte{220, 51, 13}:   "Qingdao Haier Telecom Co.,Ltd",
-       [3]byte{220, 51, 80}:   "TechSAT GmbH",
-       [3]byte{220, 53, 241}:  "Positivo Informática SA.",
-       [3]byte{220, 55, 20}:   "Apple, Inc.",
-       [3]byte{220, 55, 82}:   "GE",
-       [3]byte{220, 55, 210}:  "Hunan HKT Electronic Technology Co., Ltd",
-       [3]byte{220, 56, 225}:  "Juniper Networks",
-       [3]byte{220, 57, 121}:  "Skyport Systems",
-       [3]byte{220, 58, 94}:   "Roku, Inc.",
-       [3]byte{220, 60, 46}:   "Manufacturing System Insights, Inc.",
-       [3]byte{220, 60, 132}:  "Ticom Geomatics, Inc.",
-       [3]byte{220, 60, 246}:  "Atomic Rules LLC",
-       [3]byte{220, 62, 81}:   "Solberg & Andersen AS",
-       [3]byte{220, 62, 248}:  "Nokia Corporation",
-       [3]byte{220, 65, 95}:   "Apple, Inc.",
-       [3]byte{220, 68, 39}:   "IEEE Registration Authority",
-       [3]byte{220, 68, 109}:  "Allwinner Technology Co., Ltd",
-       [3]byte{220, 68, 182}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{220, 69, 23}:   "ARRIS Group, Inc.",
-       [3]byte{220, 72, 178}:  "Baraja Pty. Ltd.",
-       [3]byte{220, 73, 201}:  "CASCO SIGNAL LTD",
-       [3]byte{220, 74, 62}:   "Hewlett Packard",
-       [3]byte{220, 77, 35}:   "MRV Comunications",
-       [3]byte{220, 78, 222}:  "SHINYEI TECHNOLOGY CO., LTD.",
-       [3]byte{220, 79, 34}:   "Espressif Inc.",
-       [3]byte{220, 83, 96}:   "Intel Corporate",
-       [3]byte{220, 83, 124}:  "Compal Broadband Networks, Inc.",
-       [3]byte{220, 85, 131}:  "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{220, 86, 230}:  "Shenzhen Bococom Technology Co.,LTD",
-       [3]byte{220, 87, 38}:   "Power-One",
-       [3]byte{220, 94, 54}:   "Paterson Technology",
-       [3]byte{220, 96, 161}:  "Teledyne DALSA Professional Imaging",
-       [3]byte{220, 100, 124}: "C.R.S. iiMotion GmbH",
-       [3]byte{220, 100, 184}: "Shenzhen JingHanDa Electronics Co.Ltd",
-       [3]byte{220, 102, 58}:  "Apacer Technology Inc.",
-       [3]byte{220, 102, 114}: "Samsung Electronics Co.,Ltd",
-       [3]byte{220, 104, 235}: "Nintendo Co.,Ltd",
-       [3]byte{220, 106, 234}: "Infinix mobility limited",
-       [3]byte{220, 109, 205}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{220, 111, 0}:   "Livescribe, Inc.",
-       [3]byte{220, 111, 8}:   "Bay Storage Technology",
-       [3]byte{220, 112, 20}:  "Private",
-       [3]byte{220, 113, 68}:  "SAMSUNG ELECTRO MECHANICS CO., LTD.",
-       [3]byte{220, 116, 168}: "Samsung Electronics Co.,Ltd",
-       [3]byte{220, 120, 52}:  "LOGICOM SA",
-       [3]byte{220, 123, 148}: "Cisco Systems, Inc",
-       [3]byte{220, 127, 164}: "2Wire Inc",
-       [3]byte{220, 130, 91}:  "JANUS, spol. s r.o.",
-       [3]byte{220, 130, 246}: "iPort",
-       [3]byte{220, 133, 222}: "AzureWave Technology Inc.",
-       [3]byte{220, 134, 216}: "Apple, Inc.",
-       [3]byte{220, 154, 142}: "Nanjing Cocomm electronics co., LTD",
-       [3]byte{220, 155, 30}:  "Intercom, Inc.",
-       [3]byte{220, 155, 156}: "Apple, Inc.",
-       [3]byte{220, 156, 82}:  "Sapphire Technology Limited.",
-       [3]byte{220, 156, 159}: "Shenzhen YOUHUA Technology Co., Ltd",
-       [3]byte{220, 159, 164}: "Nokia Corporation",
-       [3]byte{220, 159, 219}: "Ubiquiti Networks Inc.",
-       [3]byte{220, 163, 172}: "RBcloudtech",
-       [3]byte{220, 164, 202}: "Apple, Inc.",
-       [3]byte{220, 165, 244}: "Cisco Systems, Inc",
-       [3]byte{220, 166, 189}: "Beijing Lanbo Technology Co., Ltd.",
-       [3]byte{220, 167, 217}: "Compressor Controls Corp",
-       [3]byte{220, 168, 207}: "New Spin Golf, LLC.",
-       [3]byte{220, 169, 4}:   "Apple, Inc.",
-       [3]byte{220, 169, 113}: "Intel Corporate",
-       [3]byte{220, 169, 137}: "MACANDC",
-       [3]byte{220, 173, 158}: "GreenPriz",
-       [3]byte{220, 174, 4}:   "CELOXICA Ltd",
-       [3]byte{220, 176, 88}:  "Bürkert Werke GmbH",
-       [3]byte{220, 179, 180}: "Honeywell Environmental & Combustion Controls (Tianjin) Co., Ltd.",
-       [3]byte{220, 180, 196}: "Microsoft XCG",
-       [3]byte{220, 190, 122}: "Zhejiang Nurotron Biotechnology Co.",
-       [3]byte{220, 191, 144}: "HUIZHOU QIAOXING TELECOMMUNICATION INDUSTRY CO.,LTD.",
-       [3]byte{220, 191, 233}: "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{220, 192, 219}: "Shenzhen Kaiboer Technology Co., Ltd.",
-       [3]byte{220, 192, 235}: "ASSA ABLOY CÔTE PICARDE",
-       [3]byte{220, 193, 1}:   "SOLiD Technologies, Inc.",
-       [3]byte{220, 196, 34}:  "Systembase Limited",
-       [3]byte{220, 198, 34}:  "BUHEUNG SYSTEM",
-       [3]byte{220, 198, 75}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{220, 199, 147}: "Nokia Corporation",
-       [3]byte{220, 200, 245}: "Shanghai UMEinfo CO.,LTD.",
-       [3]byte{220, 203, 168}: "Explora Technologies Inc",
-       [3]byte{220, 206, 65}:  "FE GLOBAL HONG KONG LIMITED",
-       [3]byte{220, 206, 188}: "Shenzhen JSR Technology Co.,Ltd.",
-       [3]byte{220, 206, 193}: "Cisco Systems, Inc",
-       [3]byte{220, 207, 148}: "Beijing Rongcheng Hutong Technology Co., Ltd.",
-       [3]byte{220, 207, 150}: "Samsung Electronics Co.,Ltd",
-       [3]byte{220, 208, 247}: "Bentek Systems Ltd.",
-       [3]byte{220, 210, 85}:  "Kinpo Electronics, Inc.",
-       [3]byte{220, 210, 252}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{220, 211, 33}:  "HUMAX Co., Ltd.",
-       [3]byte{220, 213, 42}:  "Sunny Heart Limited",
-       [3]byte{220, 216, 124}: "Beijing Jingdong Century Trading Co., LTD.",
-       [3]byte{220, 216, 127}: "Shenzhen JoinCyber Telecom Equipment Ltd",
-       [3]byte{220, 217, 22}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{220, 218, 79}:  "GETCK TECHNOLOGY,  INC",
-       [3]byte{220, 219, 112}: "Tonfunk Systementwicklung und Service GmbH",
-       [3]byte{220, 220, 7}:   "TRP Systems BV",
-       [3]byte{220, 222, 202}: "Akyllor",
-       [3]byte{220, 224, 38}:  "Patrol Tag, Inc",
-       [3]byte{220, 225, 173}: "Shenzhen Wintop Photoelectric Technology Co., Ltd",
-       [3]byte{220, 226, 172}: "Lumens Digital Optics Inc.",
-       [3]byte{220, 229, 120}: "Experimental Factory of Scientific Engineering and Special Design Department",
-       [3]byte{220, 231, 28}:  "AUG Elektronik GmbH",
-       [3]byte{220, 232, 56}:  "CK Telecom (Shenzhen) Limited",
-       [3]byte{220, 235, 83}:  "Wuhan QianXiao Elecronic Technology CO.,LTD",
-       [3]byte{220, 235, 148}: "Cisco Systems, Inc",
-       [3]byte{220, 236, 6}:   "Heimi Network Technology Co., Ltd.",
-       [3]byte{220, 238, 6}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{220, 239, 9}:   "NETGEAR",
-       [3]byte{220, 239, 202}: "Murata Manufacturing Co., Ltd.",
-       [3]byte{220, 240, 93}:  "Letta Teknoloji",
-       [3]byte{220, 240, 144}: "Nubia Technology Co.,Ltd.",
-       [3]byte{220, 241, 16}:  "Nokia Corporation",
-       [3]byte{220, 247, 85}:  "SITRONIK",
-       [3]byte{220, 248, 88}:  "Lorent Networks, Inc.",
-       [3]byte{220, 250, 213}: "STRONG Ges.m.b.H.",
-       [3]byte{220, 251, 2}:   "BUFFALO.INC",
-       [3]byte{220, 254, 7}:   "PEGATRON CORPORATION",
-       [3]byte{220, 254, 24}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{224, 3, 112}:   "ShenZhen Continental Wireless Technology Co., Ltd.",
-       [3]byte{224, 5, 197}:   "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{224, 6, 230}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{224, 7, 27}:    "Hewlett Packard Enterprise",
-       [3]byte{224, 11, 40}:   "Inovonics",
-       [3]byte{224, 12, 127}:  "Nintendo Co., Ltd.",
-       [3]byte{224, 13, 185}:  "Cree, Inc.",
-       [3]byte{224, 14, 218}:  "Cisco Systems, Inc",
-       [3]byte{224, 16, 127}:  "Ruckus Wireless",
-       [3]byte{224, 20, 62}:   "Modoosis Inc.",
-       [3]byte{224, 24, 119}:  "FUJITSU LIMITED",
-       [3]byte{224, 25, 29}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{224, 26, 234}:  "Allied Telesis, Inc.",
-       [3]byte{224, 28, 65}:   "Aerohive Networks Inc.",
-       [3]byte{224, 28, 238}:  "Bravo Tech, Inc.",
-       [3]byte{224, 29, 56}:   "Beijing HuaqinWorld Technology Co.,Ltd",
-       [3]byte{224, 29, 59}:   "Cambridge Industries(Group) Co.,Ltd.",
-       [3]byte{224, 30, 7}:    "Anite Telecoms  US. Inc",
-       [3]byte{224, 31, 10}:   "Xslent Energy Technologies. LLC",
-       [3]byte{224, 34, 2}:    "ARRIS Group, Inc.",
-       [3]byte{224, 36, 127}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{224, 37, 56}:   "Titan Pet Products",
-       [3]byte{224, 38, 48}:   "Intrigue Technologies, Inc.",
-       [3]byte{224, 38, 54}:   "Nortel Networks",
-       [3]byte{224, 39, 26}:   "TTC Next-generation Home Network System WG",
-       [3]byte{224, 40, 97}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{224, 40, 109}:  "AVM Audiovisuelles Marketing und Computersysteme GmbH",
-       [3]byte{224, 42, 130}:  "Universal Global Scientific Industrial Co., Ltd.",
-       [3]byte{224, 44, 178}:  "Lenovo Mobile Communication (Wuhan) Company Limited",
-       [3]byte{224, 44, 243}:  "MRS Electronic GmbH",
-       [3]byte{224, 47, 109}:  "Cisco Systems, Inc",
-       [3]byte{224, 48, 5}:    "Alcatel-Lucent Shanghai Bell Co., Ltd",
-       [3]byte{224, 49, 158}:  "Valve Corporation",
-       [3]byte{224, 49, 208}:  "SZ Telstar CO., LTD",
-       [3]byte{224, 52, 228}:  "Feit Electric Company, Inc.",
-       [3]byte{224, 53, 96}:   "Challenger Supply Holdings, LLC",
-       [3]byte{224, 54, 118}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{224, 54, 227}:  "Stage One International Co., Ltd.",
-       [3]byte{224, 55, 191}:  "Wistron Neweb Corporation",
-       [3]byte{224, 57, 215}:  "Plexxi, Inc.",
-       [3]byte{224, 60, 91}:   "SHENZHEN JIAXINJIE ELECTRON CO.,LTD",
-       [3]byte{224, 62, 68}:   "Broadcom",
-       [3]byte{224, 62, 74}:   "Cavanagh Group International",
-       [3]byte{224, 62, 125}:  "data-complex GmbH",
-       [3]byte{224, 63, 73}:   "ASUSTek COMPUTER INC.",
-       [3]byte{224, 65, 54}:   "MitraStar Technology Corp.",
-       [3]byte{224, 67, 219}:  "Shenzhen ViewAt Technology Co.,Ltd.",
-       [3]byte{224, 70, 154}:  "NETGEAR",
-       [3]byte{224, 72, 175}:  "Premietech Limited",
-       [3]byte{224, 72, 211}:  "MOBIWIRE MOBILES (NINGBO) CO.,LTD",
-       [3]byte{224, 75, 69}:   "Hi-P Electronics Pte Ltd",
-       [3]byte{224, 79, 67}:   "Universal Global Scientific Industrial Co., Ltd.",
-       [3]byte{224, 79, 189}:  "SICHUAN TIANYI COMHEART TELECOMCO.,LTD",
-       [3]byte{224, 80, 139}:  "Zhejiang Dahua Technology Co., Ltd.",
-       [3]byte{224, 81, 36}:   "NXP Semiconductors",
-       [3]byte{224, 81, 99}:   "Arcadyan Corporation",
-       [3]byte{224, 85, 61}:   "Cisco Meraki",
-       [3]byte{224, 85, 151}:  "Emergent Vision Technologies Inc.",
-       [3]byte{224, 86, 244}:  "AxesNetwork Solutions inc.",
-       [3]byte{224, 88, 158}:  "Laerdal Medical",
-       [3]byte{224, 91, 112}:  "Innovid, Co., Ltd.",
-       [3]byte{224, 93, 166}:  "Detlef Fink Elektronik & Softwareentwicklung",
-       [3]byte{224, 95, 69}:   "Apple, Inc.",
-       [3]byte{224, 95, 185}:  "Cisco Systems, Inc",
-       [3]byte{224, 96, 102}:  "Sercomm Corporation",
-       [3]byte{224, 96, 137}:  "Cloudleaf, Inc.",
-       [3]byte{224, 97, 178}:  "HANGZHOU ZENOINTEL TECHNOLOGY CO., LTD",
-       [3]byte{224, 98, 144}:  "Jinan Jovision Science & Technology Co., Ltd.",
-       [3]byte{224, 99, 229}:  "Sony Mobile Communications AB",
-       [3]byte{224, 100, 187}: "DigiView S.r.l.",
-       [3]byte{224, 102, 120}: "Apple, Inc.",
-       [3]byte{224, 103, 179}: "C-Data Technology Co., Ltd",
-       [3]byte{224, 104, 109}: "Raybased AB",
-       [3]byte{224, 105, 149}: "PEGATRON CORPORATION",
-       [3]byte{224, 117, 10}:  "ALPS ELECTRIC CO.,LTD.",
-       [3]byte{224, 117, 125}: "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{224, 118, 208}: "AMPAK Technology, Inc.",
-       [3]byte{224, 120, 163}: "Shanghai Winner Information Technology Co.,Inc",
-       [3]byte{224, 124, 19}:  "zte corporation",
-       [3]byte{224, 124, 98}:  "Whistle Labs, Inc.",
-       [3]byte{224, 127, 83}:  "TECHBOARD SRL",
-       [3]byte{224, 127, 136}: "EVIDENCE Network SIA",
-       [3]byte{224, 129, 119}: "GreenBytes, Inc.",
-       [3]byte{224, 132, 243}: "High Grade Controls Corporation",
-       [3]byte{224, 135, 177}: "Nata-Info Ltd.",
-       [3]byte{224, 136, 93}:  "Technicolor CH USA Inc.",
-       [3]byte{224, 137, 157}: "Cisco Systems, Inc",
-       [3]byte{224, 138, 126}: "Exponent",
-       [3]byte{224, 142, 60}:  "Aztech Electronics Pte Ltd",
-       [3]byte{224, 143, 236}: "REPOTEC CO., LTD.",
-       [3]byte{224, 145, 83}:  "XAVi Technologies Corp.",
-       [3]byte{224, 145, 245}: "NETGEAR",
-       [3]byte{224, 148, 103}: "Intel Corporate",
-       [3]byte{224, 149, 121}: "ORTHOsoft inc, d/b/a Zimmer CAS",
-       [3]byte{224, 151, 150}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{224, 151, 242}: "Atomax Inc.",
-       [3]byte{224, 152, 97}:  "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{224, 153, 113}: "Samsung Electronics Co.,Ltd",
-       [3]byte{224, 157, 49}:  "Intel Corporate",
-       [3]byte{224, 157, 184}: "PLANEX COMMUNICATIONS INC.",
-       [3]byte{224, 157, 250}: "Wanan Hongsheng Electronic Co.Ltd",
-       [3]byte{224, 161, 152}: "NOJA Power Switchgear Pty Ltd",
-       [3]byte{224, 161, 215}: "SFR",
-       [3]byte{224, 163, 15}:  "Pevco",
-       [3]byte{224, 163, 172}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{224, 166, 112}: "Nokia Corporation",
-       [3]byte{224, 167, 0}:   "Verkada Inc",
-       [3]byte{224, 168, 184}: "Le Shi Zhi Xin Electronic Technology (Tianjin) Limited",
-       [3]byte{224, 170, 150}: "Samsung Electronics Co.,Ltd",
-       [3]byte{224, 170, 176}: "GENERAL VISION ELECTRONICS CO. LTD.",
-       [3]byte{224, 170, 219}: "Nanjing PANENG Technology Development Co.,Ltd",
-       [3]byte{224, 171, 254}: "Orb Networks, Inc.",
-       [3]byte{224, 172, 203}: "Apple, Inc.",
-       [3]byte{224, 172, 241}: "Cisco Systems, Inc",
-       [3]byte{224, 174, 94}:  "ALPS ELECTRIC CO.,LTD.",
-       [3]byte{224, 174, 178}: "Bender GmbH &amp; Co.KG",
-       [3]byte{224, 174, 237}: "LOENK",
-       [3]byte{224, 175, 75}:  "Pluribus Networks, Inc.",
-       [3]byte{224, 178, 241}: "FN-LINK TECHNOLOGY LIMITED",
-       [3]byte{224, 181, 45}:  "Apple, Inc.",
-       [3]byte{224, 182, 245}: "IEEE Registration Authority",
-       [3]byte{224, 183, 10}:  "ARRIS Group, Inc.",
-       [3]byte{224, 183, 177}: "ARRIS Group, Inc.",
-       [3]byte{224, 185, 77}:  "SHENZHEN BILIAN ELECTRONIC CO.,LTD",
-       [3]byte{224, 185, 165}: "AzureWave Technology Inc.",
-       [3]byte{224, 185, 186}: "Apple, Inc.",
-       [3]byte{224, 185, 229}: "Technicolor",
-       [3]byte{224, 188, 67}:  "C2 Microsystems, Inc.",
-       [3]byte{224, 192, 209}: "CK Telecom (Shenzhen) Limited",
-       [3]byte{224, 194, 134}: "Aisai Communication Technology Co., Ltd.",
-       [3]byte{224, 194, 183}: "Masimo Corporation",
-       [3]byte{224, 195, 243}: "zte corporation",
-       [3]byte{224, 198, 179}: "MilDef AB",
-       [3]byte{224, 199, 103}: "Apple, Inc.",
-       [3]byte{224, 199, 157}: "Texas Instruments",
-       [3]byte{224, 200, 106}: "SHENZHEN TW-SCIE Co., Ltd",
-       [3]byte{224, 201, 34}:  "Jireh Energy Tech., Ltd.",
-       [3]byte{224, 201, 122}: "Apple, Inc.",
-       [3]byte{224, 202, 77}:  "Shenzhen Unistar Communication Co.,LTD",
-       [3]byte{224, 202, 148}: "ASKEY COMPUTER CORP",
-       [3]byte{224, 203, 29}:  "Private",
-       [3]byte{224, 203, 78}:  "ASUSTek COMPUTER INC.",
-       [3]byte{224, 203, 188}: "Cisco Meraki",
-       [3]byte{224, 203, 238}: "Samsung Electronics Co.,Ltd",
-       [3]byte{224, 205, 253}: "Beijing E3Control Technology Co, LTD",
-       [3]byte{224, 206, 195}: "ASKEY COMPUTER CORP",
-       [3]byte{224, 207, 45}:  "Gemintek Corporation",
-       [3]byte{224, 209, 10}:  "Katoudenkikougyousyo co ltd",
-       [3]byte{224, 209, 115}: "Cisco Systems, Inc",
-       [3]byte{224, 209, 230}: "Aliph dba Jawbone",
-       [3]byte{224, 211, 26}:  "EQUES Technology Co., Limited",
-       [3]byte{224, 213, 94}:  "GIGA-BYTE TECHNOLOGY CO.,LTD.",
-       [3]byte{224, 215, 186}: "Texas Instruments",
-       [3]byte{224, 216, 72}:  "Dell Inc.",
-       [3]byte{224, 217, 162}: "Hippih aps",
-       [3]byte{224, 217, 227}: "Eltex Enterprise Ltd.",
-       [3]byte{224, 218, 220}: "JVC KENWOOD Corporation",
-       [3]byte{224, 219, 16}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{224, 219, 85}:  "Dell Inc.",
-       [3]byte{224, 219, 136}: "Open Standard Digital-IF Interface for SATCOM Systems",
-       [3]byte{224, 220, 160}: "Siemens Industrial Automation Products Ltd Chengdu",
-       [3]byte{224, 221, 192}: "vivo Mobile Communication Co., Ltd.",
-       [3]byte{224, 229, 207}: "Texas Instruments",
-       [3]byte{224, 230, 49}:  "SNB TECHNOLOGIES LIMITED",
-       [3]byte{224, 231, 81}:  "Nintendo Co., Ltd.",
-       [3]byte{224, 231, 187}: "Nureva, Inc.",
-       [3]byte{224, 232, 232}: "Olive Telecommunication Pvt. Ltd",
-       [3]byte{224, 237, 26}:  "vastriver Technology Co., Ltd",
-       [3]byte{224, 237, 199}: "Shenzhen Friendcom Technology Development Co., Ltd",
-       [3]byte{224, 238, 27}:  "Panasonic Automotive Systems Company of America",
-       [3]byte{224, 239, 37}:  "Lintes Technology Co., Ltd.",
-       [3]byte{224, 242, 17}:  "Digitalwatt",
-       [3]byte{224, 243, 121}: "Vaddio",
-       [3]byte{224, 245, 198}: "Apple, Inc.",
-       [3]byte{224, 245, 202}: "CHENG UEI PRECISION INDUSTRY CO.,LTD.",
-       [3]byte{224, 248, 71}:  "Apple, Inc.",
-       [3]byte{224, 249, 190}: "Cloudena Corp.",
-       [3]byte{224, 250, 236}: "Platan sp. z o.o. sp. k.",
-       [3]byte{224, 255, 247}: "Softiron Inc.",
-       [3]byte{228, 2, 155}:   "Intel Corporate",
-       [3]byte{228, 4, 57}:    "TomTom Software Ltd",
-       [3]byte{228, 17, 91}:   "Hewlett Packard",
-       [3]byte{228, 18, 24}:   "ShenZhen Rapoo Technology Co., Ltd.",
-       [3]byte{228, 18, 29}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{228, 18, 137}:  "topsystem Systemhaus GmbH",
-       [3]byte{228, 23, 216}:  "8BITDO TECHNOLOGY HK LIMITED",
-       [3]byte{228, 24, 107}:  "Zyxel Communications Corporation",
-       [3]byte{228, 26, 44}:   "ZPE Systems, Inc.",
-       [3]byte{228, 28, 75}:   "V2 TECHNOLOGY, INC.",
-       [3]byte{228, 29, 45}:   "Mellanox Technologies, Inc.",
-       [3]byte{228, 31, 19}:   "IBM Corp",
-       [3]byte{228, 34, 165}:  "PLANTRONICS, INC.",
-       [3]byte{228, 35, 84}:   "SHENZHEN FUZHI SOFTWARE TECHNOLOGY CO.,LTD",
-       [3]byte{228, 37, 231}:  "Apple, Inc.",
-       [3]byte{228, 37, 233}:  "Color-Chip",
-       [3]byte{228, 39, 113}:  "Smartlabs",
-       [3]byte{228, 42, 211}:  "Magneti Marelli S.p.A. Powertrain",
-       [3]byte{228, 43, 52}:   "Apple, Inc.",
-       [3]byte{228, 44, 86}:   "Lilee Systems, Ltd.",
-       [3]byte{228, 45, 2}:    "TCT mobile ltd",
-       [3]byte{228, 47, 38}:   "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{228, 47, 86}:   "OptoMET GmbH",
-       [3]byte{228, 47, 246}:  "Unicore communication Inc.",
-       [3]byte{228, 50, 203}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{228, 53, 147}:  "Hangzhou GoTo technology Co.Ltd",
-       [3]byte{228, 53, 200}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{228, 53, 251}:  "Sabre Technology (Hull) Ltd",
-       [3]byte{228, 55, 215}:  "HENRI DEPAEPE S.A.S.",
-       [3]byte{228, 56, 242}:  "Advantage Controls",
-       [3]byte{228, 58, 110}:  "Shenzhen Zeroone Technology CO.,LTD",
-       [3]byte{228, 62, 215}:  "Arcadyan Corporation",
-       [3]byte{228, 63, 162}:  "Wuxi DSP Technologies Inc.",
-       [3]byte{228, 64, 226}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{228, 65, 230}:  "Ottec Technology GmbH",
-       [3]byte{228, 66, 166}:  "Intel Corporate",
-       [3]byte{228, 70, 189}:  "C&C TECHNIC TAIWAN CO., LTD.",
-       [3]byte{228, 70, 218}:  "Xiaomi Communications Co Ltd",
-       [3]byte{228, 71, 144}:  "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{228, 72, 199}:  "Cisco SPVTG",
-       [3]byte{228, 76, 108}:  "Shenzhen Guo Wei Electronic Co,. Ltd.",
-       [3]byte{228, 78, 24}:   "Gardasoft VisionLimited",
-       [3]byte{228, 79, 41}:   "MA Lighting Technology GmbH",
-       [3]byte{228, 79, 95}:   "EDS Elektronik Destek San.Tic.Ltd.Sti",
-       [3]byte{228, 80, 154}:  "HW Communications Ltd",
-       [3]byte{228, 85, 234}:  "Dedicated Computing",
-       [3]byte{228, 86, 20}:   "Suttle Apparatus",
-       [3]byte{228, 87, 64}:   "ARRIS Group, Inc.",
-       [3]byte{228, 87, 168}:  "Stuart Manufacturing, Inc.",
-       [3]byte{228, 88, 184}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{228, 88, 231}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{228, 90, 162}:  "vivo Mobile Communication Co., Ltd.",
-       [3]byte{228, 93, 81}:   "SFR",
-       [3]byte{228, 93, 82}:   "Avaya Inc",
-       [3]byte{228, 93, 117}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{228, 98, 81}:   "HAO CHENG GROUP LIMITED",
-       [3]byte{228, 100, 73}:  "ARRIS Group, Inc.",
-       [3]byte{228, 103, 186}: "Danish Interpretation Systems A/S",
-       [3]byte{228, 104, 163}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{228, 105, 90}:  "Dictum Health, Inc.",
-       [3]byte{228, 108, 33}:  "messMa GmbH",
-       [3]byte{228, 111, 19}:  "D-Link International",
-       [3]byte{228, 112, 184}: "Intel Corporate",
-       [3]byte{228, 113, 133}: "Securifi Ltd",
-       [3]byte{228, 114, 226}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{228, 117, 30}:  "Getinge Sterilization AB",
-       [3]byte{228, 119, 35}:  "zte corporation",
-       [3]byte{228, 119, 107}: "AARTESYS AG",
-       [3]byte{228, 119, 212}: "Minrray Industry Co.,Ltd",
-       [3]byte{228, 123, 63}:  "BEIJING CO-CLOUD TECHNOLOGY LTD.",
-       [3]byte{228, 124, 249}: "Samsung Electronics Co.,Ltd",
-       [3]byte{228, 125, 90}:  "Beijing Hanbang Technology Corp.",
-       [3]byte{228, 125, 189}: "Samsung Electronics Co.,Ltd",
-       [3]byte{228, 125, 235}: "Shanghai Notion Information Technology CO.,LTD.",
-       [3]byte{228, 126, 102}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{228, 127, 178}: "FUJITSU LIMITED",
-       [3]byte{228, 129, 132}: "Nokia",
-       [3]byte{228, 129, 179}: "Shenzhen ACT Industrial Co.,Ltd.",
-       [3]byte{228, 131, 153}: "ARRIS Group, Inc.",
-       [3]byte{228, 133, 1}:   "Geberit International AG",
-       [3]byte{228, 138, 213}: "RF WINDOW CO., LTD.",
-       [3]byte{228, 139, 127}: "Apple, Inc.",
-       [3]byte{228, 140, 15}:  "Discovery Insure",
-       [3]byte{228, 141, 140}: "Routerboard.com",
-       [3]byte{228, 143, 52}:  "Vodafone Italia S.p.A.",
-       [3]byte{228, 144, 105}: "Rockwell Automation",
-       [3]byte{228, 144, 126}: "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{228, 146, 231}: "Gridlink Tech. Co.,Ltd.",
-       [3]byte{228, 146, 251}: "Samsung Electronics Co.,Ltd",
-       [3]byte{228, 149, 110}: "IEEE Registration Authority",
-       [3]byte{228, 150, 174}: "ALTOGRAPHICS Inc.",
-       [3]byte{228, 151, 240}: "Shanghai VLC Technologies Ltd. Co.",
-       [3]byte{228, 152, 209}: "Microsoft Mobile Oy",
-       [3]byte{228, 152, 214}: "Apple, Inc.",
-       [3]byte{228, 154, 121}: "Apple, Inc.",
-       [3]byte{228, 154, 220}: "Apple, Inc.",
-       [3]byte{228, 158, 18}:  "FREEBOX SAS",
-       [3]byte{228, 161, 230}: "Alcatel-Lucent Shanghai Bell Co., Ltd",
-       [3]byte{228, 163, 47}:  "Shanghai Artimen Technology Co., Ltd.",
-       [3]byte{228, 163, 135}: "Control Solutions LLC",
-       [3]byte{228, 164, 113}: "Intel Corporate",
-       [3]byte{228, 165, 239}: "TRON LINK ELECTRONICS CO., LTD.",
-       [3]byte{228, 167, 73}:  "Palo Alto Networks",
-       [3]byte{228, 167, 160}: "Intel Corporate",
-       [3]byte{228, 167, 197}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{228, 167, 253}: "Cellco Partnership",
-       [3]byte{228, 168, 182}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{228, 170, 93}:  "Cisco Systems, Inc",
-       [3]byte{228, 171, 70}:  "UAB Selteka",
-       [3]byte{228, 173, 125}: "SCL Elements",
-       [3]byte{228, 175, 161}: "HES-SO",
-       [3]byte{228, 176, 5}:   "Beijing IQIYI Science & Technology Co., Ltd.",
-       [3]byte{228, 176, 33}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{228, 179, 24}:  "Intel Corporate",
-       [3]byte{228, 186, 217}: "360 Fly Inc.",
-       [3]byte{228, 189, 75}:  "zte corporation",
-       [3]byte{228, 190, 237}: "Netcore Technology Inc.",
-       [3]byte{228, 193, 70}:  "Objetivos y Servicios de Valor A",
-       [3]byte{228, 193, 241}: "SHENZHEN SPOTMAU INFORMATION TECHNOLIGY CO., Ltd",
-       [3]byte{228, 194, 209}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{228, 198, 43}:  "Airware",
-       [3]byte{228, 198, 61}:  "Apple, Inc.",
-       [3]byte{228, 198, 230}: "Mophie, LLC",
-       [3]byte{228, 199, 34}:  "Cisco Systems, Inc",
-       [3]byte{228, 200, 1}:   "BLU Products Inc",
-       [3]byte{228, 200, 6}:   "Ceiec Electric Technology Inc.",
-       [3]byte{228, 206, 2}:   "WyreStorm Technologies Ltd",
-       [3]byte{228, 206, 112}: "Health & Life co., Ltd.",
-       [3]byte{228, 206, 143}: "Apple, Inc.",
-       [3]byte{228, 211, 50}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{228, 211, 241}: "Cisco Systems, Inc",
-       [3]byte{228, 213, 61}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{228, 215, 29}:  "Oraya Therapeutics",
-       [3]byte{228, 221, 121}: "En-Vision America, Inc.",
-       [3]byte{228, 224, 197}: "Samsung Electronics Co.,Ltd",
-       [3]byte{228, 228, 9}:   "LEIFHEIT AG",
-       [3]byte{228, 228, 171}: "Apple, Inc.",
-       [3]byte{228, 236, 16}:  "Nokia Corporation",
-       [3]byte{228, 238, 253}: "MR&D Manufacturing",
-       [3]byte{228, 240, 4}:   "Dell Inc.",
-       [3]byte{228, 240, 66}:  "Google, Inc.",
-       [3]byte{228, 243, 101}: "Time-O-Matic, Inc.",
-       [3]byte{228, 243, 227}: "Shanghai iComhome Co.,Ltd.",
-       [3]byte{228, 243, 245}: "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.",
-       [3]byte{228, 244, 198}: "NETGEAR",
-       [3]byte{228, 247, 161}: "Datafox GmbH",
-       [3]byte{228, 248, 156}: "Intel Corporate",
-       [3]byte{228, 248, 239}: "Samsung Electronics Co.,Ltd",
-       [3]byte{228, 249, 57}:  "Minxon Hotel Technology INC.",
-       [3]byte{228, 250, 29}:  "PAD Peripheral Advanced Design Inc.",
-       [3]byte{228, 250, 237}: "Samsung Electronics Co.,Ltd",
-       [3]byte{228, 250, 253}: "Intel Corporate",
-       [3]byte{228, 251, 93}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{228, 251, 143}: "MOBIWIRE MOBILES (NINGBO) CO.,LTD",
-       [3]byte{228, 254, 217}: "EDMI Europe Ltd",
-       [3]byte{228, 255, 221}: "ELECTRON INDIA",
-       [3]byte{232, 0, 54}:    "Befs co,. ltd",
-       [3]byte{232, 3, 154}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{232, 4, 11}:    "Apple, Inc.",
-       [3]byte{232, 4, 16}:    "Private",
-       [3]byte{232, 4, 98}:    "Cisco Systems, Inc",
-       [3]byte{232, 4, 243}:   "Throughtek Co., Ltd.",
-       [3]byte{232, 5, 109}:   "Nortel Networks",
-       [3]byte{232, 6, 136}:   "Apple, Inc.",
-       [3]byte{232, 7, 52}:    "Champion Optical Network Engineering, LLC",
-       [3]byte{232, 7, 191}:   "SHENZHEN BOOMTECH INDUSTRY CO.,LTD",
-       [3]byte{232, 8, 139}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{232, 9, 69}:    "Integrated Device Technology (Malaysia) Sdn. Bhd.",
-       [3]byte{232, 9, 89}:    "Guoguang Electric Co.,Ltd",
-       [3]byte{232, 11, 19}:   "Akib Systems Taiwan, INC",
-       [3]byte{232, 12, 56}:   "DAEYOUNG INFORMATION SYSTEM CO., LTD",
-       [3]byte{232, 12, 117}:  "Syncbak, Inc.",
-       [3]byte{232, 16, 46}:   "Really Simple Software, Inc",
-       [3]byte{232, 17, 50}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{232, 17, 202}:  "SHANDONG KAER ELECTRIC.CO.,LTD",
-       [3]byte{232, 19, 36}:   "GuangZhou Bonsoninfo System CO.,LTD",
-       [3]byte{232, 19, 99}:   "Comstock RD, Inc.",
-       [3]byte{232, 19, 103}:  "AIRSOUND Inc.",
-       [3]byte{232, 21, 14}:   "Nokia Corporation",
-       [3]byte{232, 22, 43}:   "IDEO Security Co., Ltd.",
-       [3]byte{232, 23, 252}:  "Fujitsu Cloud Technologies Limited",
-       [3]byte{232, 24, 99}:   "IEEE Registration Authority",
-       [3]byte{232, 29, 168}:  "Ruckus Wireless",
-       [3]byte{232, 32, 226}:  "HUMAX Co., Ltd.",
-       [3]byte{232, 40, 119}:  "TMY Co., Ltd.",
-       [3]byte{232, 40, 213}:  "Cots Technology",
-       [3]byte{232, 42, 68}:   "Liteon Technology Corporation",
-       [3]byte{232, 42, 234}:  "Intel Corporate",
-       [3]byte{232, 46, 36}:   "Out of the Fog Research LLC",
-       [3]byte{232, 51, 129}:  "ARRIS Group, Inc.",
-       [3]byte{232, 52, 62}:   "Beijing Infosec Technologies Co., LTD.",
-       [3]byte{232, 54, 29}:   "Sense Labs, Inc.",
-       [3]byte{232, 55, 122}:  "Zyxel Communications Corporation",
-       [3]byte{232, 57, 53}:   "Hewlett Packard",
-       [3]byte{232, 57, 223}:  "ASKEY COMPUTER CORP",
-       [3]byte{232, 58, 18}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{232, 58, 151}:  "Toshiba Corporation",
-       [3]byte{232, 62, 182}:  "RIM",
-       [3]byte{232, 62, 251}:  "GEODESIC LTD.",
-       [3]byte{232, 62, 252}:  "ARRIS Group, Inc.",
-       [3]byte{232, 64, 64}:   "Cisco Systems, Inc",
-       [3]byte{232, 64, 242}:  "PEGATRON CORPORATION",
-       [3]byte{232, 67, 182}:  "QNAP Systems, Inc.",
-       [3]byte{232, 68, 126}:  "Bitdefender SRL",
-       [3]byte{232, 72, 31}:   "Advanced Automotive Antennas",
-       [3]byte{232, 77, 208}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{232, 78, 6}:    "EDUP INTERNATIONAL (HK) CO., LTD",
-       [3]byte{232, 78, 132}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{232, 78, 206}:  "Nintendo Co., Ltd.",
-       [3]byte{232, 80, 139}:  "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
-       [3]byte{232, 81, 110}:  "TSMART Inc.",
-       [3]byte{232, 81, 157}:  "Yeonhab Precision Co.,LTD",
-       [3]byte{232, 84, 132}:  "NEO Information Systems Co., Ltd.",
-       [3]byte{232, 85, 180}:  "SAI Technology Inc.",
-       [3]byte{232, 86, 89}:   "Advanced-Connectek Inc.",
-       [3]byte{232, 86, 214}:  "NCTech Ltd",
-       [3]byte{232, 90, 167}:  "LLC Emzior",
-       [3]byte{232, 91, 91}:   "LG ELECTRONICS INC",
-       [3]byte{232, 91, 240}:  "Imaging Diagnostics",
-       [3]byte{232, 93, 107}:  "Luminate Wireless",
-       [3]byte{232, 94, 83}:   "Infratec Datentechnik GmbH",
-       [3]byte{232, 97, 31}:   "Dawning Information Industry Co.,Ltd",
-       [3]byte{232, 97, 126}:  "Liteon Technology Corporation",
-       [3]byte{232, 97, 131}:  "Black Diamond Advanced Technology, LLC",
-       [3]byte{232, 97, 190}:  "Melec Inc.",
-       [3]byte{232, 101, 73}:  "Cisco Systems, Inc",
-       [3]byte{232, 101, 212}: "Tenda Technology Co.,Ltd.Dongguan branch",
-       [3]byte{232, 102, 196}: "Diamanti",
-       [3]byte{232, 104, 25}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{232, 108, 218}: "Supercomputers and Neurocomputers Research Center",
-       [3]byte{232, 109, 82}:  "ARRIS Group, Inc.",
-       [3]byte{232, 109, 84}:  "Digit Mobile Inc",
-       [3]byte{232, 109, 101}: "AUDIO MOBIL Elektronik GmbH",
-       [3]byte{232, 109, 110}: "voestalpine SIGNALING Fareham Ltd.",
-       [3]byte{232, 111, 242}: "Actiontec Electronics, Inc",
-       [3]byte{232, 113, 141}: "Elsys Equipamentos Eletronicos Ltda",
-       [3]byte{232, 116, 230}: "ADB Broadband Italia",
-       [3]byte{232, 117, 127}: "FIRS Technologies(Shenzhen) Co., Ltd",
-       [3]byte{232, 120, 161}: "BEOVIEW INTERCOM DOO",
-       [3]byte{232, 122, 243}: "S5 Tech S.r.l.",
-       [3]byte{232, 128, 46}:  "Apple, Inc.",
-       [3]byte{232, 128, 216}: "GNTEK Electronics Co.,Ltd.",
-       [3]byte{232, 130, 91}:  "ARRIS Group, Inc.",
-       [3]byte{232, 135, 163}: "Loxley Public Company Limited",
-       [3]byte{232, 136, 108}: "Shenzhen SC Technologies Co.,LTD",
-       [3]byte{232, 137, 44}:  "ARRIS Group, Inc.",
-       [3]byte{232, 141, 40}:  "Apple, Inc.",
-       [3]byte{232, 141, 245}: "ZNYX Networks, Inc.",
-       [3]byte{232, 142, 96}:  "NSD Corporation",
-       [3]byte{232, 145, 32}:  "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{232, 146, 24}:  "Arcontia International AB",
-       [3]byte{232, 146, 164}: "LG Electronics (Mobile Communications)",
-       [3]byte{232, 147, 9}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{232, 148, 76}:  "Cogent Healthcare Systems Ltd",
-       [3]byte{232, 148, 246}: "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{232, 150, 6}:   "testo Instruments (Shenzhen) Co., Ltd.",
-       [3]byte{232, 153, 90}:  "PiiGAB, Processinformation i Goteborg AB",
-       [3]byte{232, 153, 196}: "HTC Corporation",
-       [3]byte{232, 154, 143}: "QUANTA COMPUTER INC.",
-       [3]byte{232, 154, 255}: "Fujian Landi Commercial Equipment Co.,Ltd",
-       [3]byte{232, 157, 135}: "Toshiba",
-       [3]byte{232, 158, 12}:  "Private",
-       [3]byte{232, 158, 180}: "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{232, 159, 236}: "CHENGDU KT ELECTRONIC HI-TECH CO.,LTD",
-       [3]byte{232, 163, 100}: "Signal Path International / Peachtree Audio",
-       [3]byte{232, 164, 193}: "Deep Sea Electronics PLC",
-       [3]byte{232, 167, 242}: "sTraffic",
-       [3]byte{232, 171, 250}: "Shenzhen Reecam Tech.Ltd.",
-       [3]byte{232, 177, 252}: "Intel Corporate",
-       [3]byte{232, 178, 172}: "Apple, Inc.",
-       [3]byte{232, 180, 174}: "Shenzhen C&D Electronics Co.,Ltd",
-       [3]byte{232, 180, 200}: "Samsung Electronics Co.,Ltd",
-       [3]byte{232, 182, 194}: "Juniper Networks",
-       [3]byte{232, 183, 72}:  "Cisco Systems, Inc",
-       [3]byte{232, 186, 112}: "Cisco Systems, Inc",
-       [3]byte{232, 187, 61}:  "Sino Prime-Tech Limited",
-       [3]byte{232, 187, 168}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{232, 189, 209}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{232, 190, 129}: "Sagemcom Broadband SAS",
-       [3]byte{232, 193, 215}: "Philips",
-       [3]byte{232, 194, 41}:  "H-Displays (MSC) Bhd",
-       [3]byte{232, 195, 32}:  "Austco Communication Systems Pty Ltd",
-       [3]byte{232, 199, 79}:  "Liteon Technology Corporation",
-       [3]byte{232, 203, 161}: "Nokia Corporation",
-       [3]byte{232, 204, 24}:  "D-Link International",
-       [3]byte{232, 204, 50}:  "Micronet  LTD",
-       [3]byte{232, 205, 45}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{232, 206, 6}:   "SkyHawke Technologies, LLC.",
-       [3]byte{232, 208, 250}: "MKS Instruments Deutschland GmbH",
-       [3]byte{232, 209, 27}:  "ASKEY COMPUTER CORP",
-       [3]byte{232, 212, 131}: "ULTIMATE Europe Transportation Equipment GmbH",
-       [3]byte{232, 212, 224}: "Beijing BenyWave Technology Co., Ltd.",
-       [3]byte{232, 216, 25}:  "AzureWave Technology Inc.",
-       [3]byte{232, 218, 150}: "Zhuhai Tianrui Electrical Power Tech. Co., Ltd.",
-       [3]byte{232, 218, 170}: "VideoHome Technology Corp.",
-       [3]byte{232, 222, 39}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{232, 222, 142}: "Integrated Device Technology (Malaysia) Sdn. Bhd.",
-       [3]byte{232, 222, 214}: "Intrising Networks, Inc.",
-       [3]byte{232, 223, 112}: "AVM Audiovisuelles Marketing und Computersysteme GmbH",
-       [3]byte{232, 223, 242}: "PRF Co., Ltd.",
-       [3]byte{232, 224, 143}: "GRAVOTECH MARKING SAS",
-       [3]byte{232, 224, 183}: "Toshiba",
-       [3]byte{232, 225, 225}: "Gemtek Technology Co., Ltd.",
-       [3]byte{232, 225, 226}: "Energotest",
-       [3]byte{232, 229, 214}: "Samsung Electronics Co.,Ltd",
-       [3]byte{232, 231, 50}:  "Alcatel-Lucent Enterprise",
-       [3]byte{232, 231, 112}: "Warp9 Tech Design, Inc.",
-       [3]byte{232, 231, 118}: "Shenzhen Kootion Technology Co., Ltd",
-       [3]byte{232, 232, 117}: "iS5 Communications Inc.",
-       [3]byte{232, 234, 106}: "StarTech.com",
-       [3]byte{232, 234, 218}: "Denkovi Assembly Electronics LTD",
-       [3]byte{232, 235, 17}:  "Texas Instruments",
-       [3]byte{232, 237, 5}:   "ARRIS Group, Inc.",
-       [3]byte{232, 237, 243}: "Cisco Systems, Inc",
-       [3]byte{232, 239, 137}: "OPMEX Tech.",
-       [3]byte{232, 241, 176}: "Sagemcom Broadband SAS",
-       [3]byte{232, 242, 38}:  "MILLSON CUSTOM SOLUTIONS INC.",
-       [3]byte{232, 242, 226}: "LG Innotek",
-       [3]byte{232, 242, 227}: "Starcor Beijing Co.,Limited",
-       [3]byte{232, 247, 36}:  "Hewlett Packard Enterprise",
-       [3]byte{232, 249, 40}:  "RFTECH SRL",
-       [3]byte{232, 252, 96}:  "ELCOM Innovations Private Limited",
-       [3]byte{232, 252, 175}: "NETGEAR",
-       [3]byte{232, 253, 114}: "SHANGHAI LINGUO TECHNOLOGY CO., LTD.",
-       [3]byte{232, 253, 144}: "Turbostor",
-       [3]byte{232, 253, 232}: "CeLa Link Corporation",
-       [3]byte{236, 1, 51}:    "TRINUS SYSTEMS INC.",
-       [3]byte{236, 1, 226}:   "FOXCONN INTERCONNECT TECHNOLOGY",
-       [3]byte{236, 1, 238}:   "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{236, 4, 65}:    "ShenZhen TIGO Semiconductor Co., Ltd.",
-       [3]byte{236, 8, 107}:   "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{236, 13, 154}:  "Mellanox Technologies, Inc.",
-       [3]byte{236, 14, 196}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{236, 14, 214}:  "ITECH INSTRUMENTS SAS",
-       [3]byte{236, 16, 123}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{236, 17, 32}:   "FloDesign Wind Turbine Corporation",
-       [3]byte{236, 17, 39}:   "Texas Instruments",
-       [3]byte{236, 19, 178}:  "Netonix",
-       [3]byte{236, 19, 219}:  "Juniper Networks",
-       [3]byte{236, 20, 246}:  "BioControl AS",
-       [3]byte{236, 23, 47}:   "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{236, 23, 102}:  "Research Centre Module",
-       [3]byte{236, 26, 89}:   "Belkin International Inc.",
-       [3]byte{236, 29, 127}:  "zte corporation",
-       [3]byte{236, 29, 139}:  "Cisco Systems, Inc",
-       [3]byte{236, 31, 114}:  "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
-       [3]byte{236, 33, 159}:  "VidaBox LLC",
-       [3]byte{236, 33, 229}:  "Toshiba",
-       [3]byte{236, 34, 87}:   "JiangSu NanJing University Electronic Information Technology Co.,Ltd",
-       [3]byte{236, 34, 128}:  "D-Link International",
-       [3]byte{236, 35, 61}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{236, 35, 104}:  "IntelliVoice Co.,Ltd.",
-       [3]byte{236, 35, 123}:  "zte corporation",
-       [3]byte{236, 36, 184}:  "Texas Instruments",
-       [3]byte{236, 38, 202}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{236, 38, 251}:  "TECC CO.,LTD.",
-       [3]byte{236, 42, 240}:  "Ypsomed AG",
-       [3]byte{236, 44, 73}:   "University of Tokyo",
-       [3]byte{236, 46, 78}:   "HITACHI-LG DATA STORAGE INC",
-       [3]byte{236, 48, 145}:  "Cisco Systems, Inc",
-       [3]byte{236, 53, 134}:  "Apple, Inc.",
-       [3]byte{236, 54, 63}:   "Markov Corporation",
-       [3]byte{236, 56, 143}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{236, 59, 240}:  "NovelSat",
-       [3]byte{236, 60, 90}:   "SHEN ZHEN HENG SHENG HUI DIGITAL TECHNOLOGY CO.,LTD",
-       [3]byte{236, 60, 136}:  "MCNEX Co.,Ltd.",
-       [3]byte{236, 61, 253}:  "SHENZHEN BILIAN ELECTRONIC CO.,LTD",
-       [3]byte{236, 62, 9}:    "PERFORMANCE DESIGNED PRODUCTS, LLC",
-       [3]byte{236, 62, 247}:  "Juniper Networks",
-       [3]byte{236, 63, 5}:    "Institute 706, The Second Academy China Aerospace Science & Industry Corp",
-       [3]byte{236, 66, 180}:  "ADC Corporation",
-       [3]byte{236, 66, 240}:  "ADL Embedded Solutions, Inc.",
-       [3]byte{236, 67, 139}:  "YAPTV",
-       [3]byte{236, 67, 230}:  "AWCER Ltd.",
-       [3]byte{236, 67, 246}:  "Zyxel Communications Corporation",
-       [3]byte{236, 68, 118}:  "Cisco Systems, Inc",
-       [3]byte{236, 70, 68}:   "TTK SAS",
-       [3]byte{236, 70, 112}:  "Meinberg Funkuhren GmbH & Co. KG",
-       [3]byte{236, 71, 60}:   "Redwire, LLC",
-       [3]byte{236, 73, 147}:  "Qihan Technology Co., Ltd",
-       [3]byte{236, 76, 77}:   "ZAO NPK RoTeK",
-       [3]byte{236, 77, 71}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{236, 79, 130}:  "Calix Inc.",
-       [3]byte{236, 81, 188}:  "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{236, 82, 220}:  "WORLD MEDIA AND TECHNOLOGY Corp.",
-       [3]byte{236, 84, 46}:   "Shanghai XiMei Electronic Technology Co. Ltd",
-       [3]byte{236, 85, 249}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{236, 89, 231}:  "Microsoft Corporation",
-       [3]byte{236, 90, 134}:  "Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd",
-       [3]byte{236, 92, 105}:  "MITSUBISHI HEAVY INDUSTRIES MECHATRONICS SYSTEMS,LTD.",
-       [3]byte{236, 95, 35}:   "Qinghai Kimascend Electronics Technology Co. Ltd.",
-       [3]byte{236, 96, 224}:  "AVI-ON LABS",
-       [3]byte{236, 98, 100}:  "Global411 Internet Services, LLC",
-       [3]byte{236, 99, 229}:  "ePBoard Design LLC",
-       [3]byte{236, 100, 231}: "MOCACARE Corporation",
-       [3]byte{236, 102, 209}: "B&W Group LTD",
-       [3]byte{236, 104, 129}: "Palo Alto Networks",
-       [3]byte{236, 108, 159}: "Chengdu Volans Technology CO.,LTD",
-       [3]byte{236, 112, 151}: "ARRIS Group, Inc.",
-       [3]byte{236, 113, 219}: "Shenzhen Baichuan Digital Technology Co., Ltd.",
-       [3]byte{236, 116, 186}: "Hirschmann Automation and Control GmbH",
-       [3]byte{236, 124, 116}: "Justone Technologies Co., Ltd.",
-       [3]byte{236, 125, 17}:  "vivo Mobile Communication Co., Ltd.",
-       [3]byte{236, 125, 157}: "MEI",
-       [3]byte{236, 128, 9}:   "NovaSparks",
-       [3]byte{236, 129, 147}: "Logitech, Inc",
-       [3]byte{236, 131, 80}:  "Microsoft Corporation",
-       [3]byte{236, 131, 108}: "RM Tech Co., Ltd.",
-       [3]byte{236, 133, 47}:  "Apple, Inc.",
-       [3]byte{236, 136, 143}: "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{236, 136, 146}: "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{236, 137, 245}: "Lenovo Mobile Communication Technology Ltd.",
-       [3]byte{236, 138, 76}:  "zte corporation",
-       [3]byte{236, 138, 199}: "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{236, 140, 162}: "Ruckus Wireless",
-       [3]byte{236, 142, 173}: "DLX",
-       [3]byte{236, 142, 174}: "Nagravision SA",
-       [3]byte{236, 142, 181}: "Hewlett Packard",
-       [3]byte{236, 146, 51}:  "Eddyfi NDT Inc",
-       [3]byte{236, 147, 39}:  "MEMMERT GmbH + Co. KG",
-       [3]byte{236, 147, 237}: "DDoS-Guard LTD",
-       [3]byte{236, 150, 129}: "2276427 Ontario Inc",
-       [3]byte{236, 152, 108}: "Lufft Mess- und Regeltechnik GmbH",
-       [3]byte{236, 152, 193}: "Beijing Risbo Network Technology Co.,Ltd",
-       [3]byte{236, 154, 116}: "Hewlett Packard",
-       [3]byte{236, 155, 91}:  "Nokia Corporation",
-       [3]byte{236, 155, 243}: "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
-       [3]byte{236, 158, 205}: "Artesyn Embedded Technologies",
-       [3]byte{236, 159, 13}:  "IEEE Registration Authority",
-       [3]byte{236, 162, 155}: "Kemppi Oy",
-       [3]byte{236, 168, 107}: "Elitegroup Computer Systems Co.,Ltd.",
-       [3]byte{236, 169, 250}: "GUANGDONG GENIUS TECHNOLOGY CO.,LTD.",
-       [3]byte{236, 170, 160}: "PEGATRON CORPORATION",
-       [3]byte{236, 173, 184}: "Apple, Inc.",
-       [3]byte{236, 176, 225}: "Ciena Corporation",
-       [3]byte{236, 177, 6}:   "Acuro Networks, Inc",
-       [3]byte{236, 177, 215}: "Hewlett Packard",
-       [3]byte{236, 181, 65}:  "SHINANO E and E Co.Ltd.",
-       [3]byte{236, 181, 250}: "Philips Lighting BV",
-       [3]byte{236, 184, 112}: "Beijing Heweinet Technology Co.,Ltd.",
-       [3]byte{236, 185, 7}:   "CloudGenix Inc",
-       [3]byte{236, 186, 254}: "GIROPTIC",
-       [3]byte{236, 187, 174}: "Digivoice Tecnologia em Eletronica Ltda",
-       [3]byte{236, 189, 9}:   "FUSION Electronics Ltd",
-       [3]byte{236, 189, 29}:  "Cisco Systems, Inc",
-       [3]byte{236, 192, 106}: "PowerChord Group Limited",
-       [3]byte{236, 195, 138}: "Accuenergy (CANADA) Inc",
-       [3]byte{236, 200, 130}: "Cisco Systems, Inc",
-       [3]byte{236, 203, 48}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{236, 205, 109}: "Allied Telesis, Inc.",
-       [3]byte{236, 208, 14}:  "MiraeRecognition Co., Ltd.",
-       [3]byte{236, 208, 64}:  "GEA Farm Technologies GmbH",
-       [3]byte{236, 208, 159}: "Xiaomi Communications Co Ltd",
-       [3]byte{236, 209, 154}: "Zhuhai Liming Industries Co., Ltd",
-       [3]byte{236, 214, 138}: "Shenzhen JMicron Intelligent Technology Developmen",
-       [3]byte{236, 217, 37}:  "RAMI",
-       [3]byte{236, 217, 80}:  "IRT SA",
-       [3]byte{236, 217, 209}: "Shenzhen TG-NET Botone Technology Co.,Ltd.",
-       [3]byte{236, 222, 61}:  "Lamprey Networks, Inc.",
-       [3]byte{236, 223, 58}:  "vivo Mobile Communication Co., Ltd.",
-       [3]byte{236, 224, 155}: "Samsung Electronics Co.,Ltd",
-       [3]byte{236, 225, 84}:  "Beijing Unisound Information Technology Co.,Ltd.",
-       [3]byte{236, 225, 169}: "Cisco Systems, Inc",
-       [3]byte{236, 226, 253}: "SKG Electric Group(Thailand) Co., Ltd.",
-       [3]byte{236, 229, 18}:  "tado GmbH",
-       [3]byte{236, 229, 85}:  "Hirschmann Automation",
-       [3]byte{236, 231, 68}:  "Omntec mfg. inc",
-       [3]byte{236, 233, 11}:  "SISTEMA SOLUCOES ELETRONICAS LTDA - EASYTECH",
-       [3]byte{236, 233, 21}:  "STI Ltd",
-       [3]byte{236, 233, 248}: "Guang Zhou TRI-SUN Electronics Technology  Co., Ltd",
-       [3]byte{236, 234, 3}:   "DARFON LIGHTING CORP",
-       [3]byte{236, 235, 184}: "Hewlett Packard Enterprise",
-       [3]byte{236, 238, 216}: "ZTLX Network Technology Co.,Ltd",
-       [3]byte{236, 240, 14}:  "AboCom",
-       [3]byte{236, 242, 54}:  "NEOMONTANA ELECTRONICS",
-       [3]byte{236, 243, 66}:  "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{236, 243, 91}:  "Nokia Corporation",
-       [3]byte{236, 244, 81}:  "Arcadyan Corporation",
-       [3]byte{236, 244, 187}: "Dell Inc.",
-       [3]byte{236, 247, 43}:  "HD DIGITAL TECH CO., LTD.",
-       [3]byte{236, 248, 235}: "SICHUAN TIANYI COMHEART TELECOMCO., LTD",
-       [3]byte{236, 250, 3}:   "FCA",
-       [3]byte{236, 250, 170}: "The IMS Company",
-       [3]byte{236, 250, 188}: "Espressif Inc.",
-       [3]byte{236, 250, 244}: "SenRa Tech Pvt. Ltd",
-       [3]byte{236, 252, 85}:  "A. Eberle GmbH & Co. KG",
-       [3]byte{236, 254, 126}: "BlueRadios, Inc.",
-       [3]byte{240, 0, 127}:   "Janz - Contadores de Energia, SA",
-       [3]byte{240, 2, 43}:    "Chrontel",
-       [3]byte{240, 2, 72}:    "SmarteBuilding",
-       [3]byte{240, 3, 140}:   "AzureWave Technology Inc.",
-       [3]byte{240, 7, 134}:   "Shandong Bittel Electronics Co., Ltd",
-       [3]byte{240, 8, 241}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{240, 13, 92}:   "JinQianMao  Technology Co.,Ltd.",
-       [3]byte{240, 19, 195}:  "SHENZHEN FENDA TECHNOLOGY CO., LTD",
-       [3]byte{240, 21, 160}:  "KyungDong One Co., Ltd.",
-       [3]byte{240, 21, 185}:  "PlayFusion Limited",
-       [3]byte{240, 24, 43}:   "LG Chem",
-       [3]byte{240, 27, 108}:  "vivo Mobile Communication Co., Ltd.",
-       [3]byte{240, 28, 19}:   "LG Electronics (Mobile Communications)",
-       [3]byte{240, 28, 45}:   "Juniper Networks",
-       [3]byte{240, 29, 188}:  "Microsoft Corporation",
-       [3]byte{240, 30, 52}:   "ORICO Technologies Co., Ltd",
-       [3]byte{240, 31, 175}:  "Dell Inc.",
-       [3]byte{240, 33, 157}:  "Cal-Comp Electronics & Communications Company Ltd.",
-       [3]byte{240, 34, 78}:   "Esan electronic co.",
-       [3]byte{240, 35, 41}:   "SHOWA DENKI CO.,LTD.",
-       [3]byte{240, 35, 185}:  "IEEE Registration Authority",
-       [3]byte{240, 36, 5}:    "OPUS High Technology Corporation",
-       [3]byte{240, 36, 8}:    "Talaris (Sweden) AB",
-       [3]byte{240, 36, 117}:  "Apple, Inc.",
-       [3]byte{240, 37, 114}:  "Cisco Systems, Inc",
-       [3]byte{240, 37, 183}:  "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
-       [3]byte{240, 38, 36}:   "WAFA TECHNOLOGIES CO., LTD.",
-       [3]byte{240, 38, 76}:   "Dr. Sigrist AG",
-       [3]byte{240, 39, 45}:   "Amazon Technologies Inc.",
-       [3]byte{240, 39, 69}:   "F-Secure Corporation",
-       [3]byte{240, 39, 101}:  "Murata Manufacturing Co., Ltd.",
-       [3]byte{240, 41, 41}:   "Cisco Systems, Inc",
-       [3]byte{240, 42, 35}:   "Creative Next Design",
-       [3]byte{240, 42, 97}:   "Waldo Networks, Inc.",
-       [3]byte{240, 47, 167}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{240, 47, 216}:  "Bi2-Vision",
-       [3]byte{240, 50, 26}:   "Mita-Teknik A/S",
-       [3]byte{240, 52, 4}:    "TCT mobile ltd",
-       [3]byte{240, 55, 161}:  "Huike Electronics (SHENZHEN) CO., LTD.",
-       [3]byte{240, 58, 75}:   "Bloombase, Inc.",
-       [3]byte{240, 58, 85}:   "Omega Elektronik AS",
-       [3]byte{240, 61, 3}:    "TECNO MOBILE LIMITED",
-       [3]byte{240, 61, 41}:   "Actility",
-       [3]byte{240, 62, 144}:  "Ruckus Wireless",
-       [3]byte{240, 62, 191}:  "GOGORO TAIWAN LIMITED",
-       [3]byte{240, 63, 248}:  "R L Drake",
-       [3]byte{240, 64, 123}:  "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{240, 66, 28}:   "Intel Corporate",
-       [3]byte{240, 67, 53}:   "DVN(Shanghai)Ltd.",
-       [3]byte{240, 67, 71}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{240, 69, 218}:  "Texas Instruments",
-       [3]byte{240, 74, 43}:   "PYRAMID Computer GmbH",
-       [3]byte{240, 75, 106}:  "Scientific Production Association Siberian Arsenal, Ltd.",
-       [3]byte{240, 75, 242}:  "JTECH Communications, Inc.",
-       [3]byte{240, 77, 162}:  "Dell Inc.",
-       [3]byte{240, 79, 124}:  "Private",
-       [3]byte{240, 88, 73}:   "CareView Communications",
-       [3]byte{240, 90, 9}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{240, 91, 123}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{240, 92, 25}:   "Aruba Networks",
-       [3]byte{240, 93, 137}:  "Dycon Limited",
-       [3]byte{240, 93, 200}:  "Duracell Powermat",
-       [3]byte{240, 95, 90}:   "Getriebebau NORD GmbH and Co. KG",
-       [3]byte{240, 97, 48}:   "Advantage Pharmacy Services, LLC",
-       [3]byte{240, 98, 13}:   "Shenzhen Egreat Tech Corp.,Ltd",
-       [3]byte{240, 98, 129}:  "ProCurve Networking by HP",
-       [3]byte{240, 101, 194}: "Yanfeng Visteon Electronics Technology (Shanghai) Co.,Ltd.",
-       [3]byte{240, 101, 221}: "Primax Electronics Ltd.",
-       [3]byte{240, 104, 83}:  "Integrated Corporation",
-       [3]byte{240, 107, 202}: "Samsung Electronics Co.,Ltd",
-       [3]byte{240, 109, 120}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{240, 110, 11}:  "Microsoft Corporation",
-       [3]byte{240, 110, 50}:  "MICROTEL INNOVATION S.R.L.",
-       [3]byte{240, 114, 140}: "Samsung Electronics Co.,Ltd",
-       [3]byte{240, 115, 174}: "PEAK-System Technik",
-       [3]byte{240, 116, 133}: "NGD Systems, Inc.",
-       [3]byte{240, 116, 228}: "Thundercomm Technology Co., Ltd",
-       [3]byte{240, 118, 28}:  "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
-       [3]byte{240, 119, 101}: "Sourcefire, Inc",
-       [3]byte{240, 119, 208}: "Xcellen",
-       [3]byte{240, 120, 22}:  "Cisco Systems, Inc",
-       [3]byte{240, 121, 89}:  "ASUSTek COMPUTER INC.",
-       [3]byte{240, 121, 96}:  "Apple, Inc.",
-       [3]byte{240, 121, 232}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
-       [3]byte{240, 123, 203}: "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{240, 125, 104}: "D-Link Corporation",
-       [3]byte{240, 127, 6}:   "Cisco Systems, Inc",
-       [3]byte{240, 127, 12}:  "Leopold Kostal GmbH &Co. KG",
-       [3]byte{240, 129, 175}: "IRZ AUTOMATION TECHNOLOGIES LTD",
-       [3]byte{240, 130, 97}:  "Sagemcom Broadband SAS",
-       [3]byte{240, 132, 47}:  "ADB Broadband Italia",
-       [3]byte{240, 132, 201}: "zte corporation",
-       [3]byte{240, 133, 193}: "SHENZHEN RF-LINK TECHNOLOGY CO.,LTD.",
-       [3]byte{240, 138, 40}:  "JIANGSU HENGSION ELECTRONIC S and T CO.,LTD",
-       [3]byte{240, 139, 254}: "COSTEL.,CO.LTD",
-       [3]byte{240, 140, 251}: "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{240, 142, 219}: "VeloCloud Networks",
-       [3]byte{240, 146, 28}:  "Hewlett Packard",
-       [3]byte{240, 146, 180}: "SICHUAN TIANYI COMHEART TELECOMCO., LTD",
-       [3]byte{240, 147, 58}:  "NxtConect",
-       [3]byte{240, 147, 197}: "Garland Technology",
-       [3]byte{240, 151, 229}: "TAMIO, INC",
-       [3]byte{240, 152, 56}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{240, 152, 157}: "Apple, Inc.",
-       [3]byte{240, 153, 191}: "Apple, Inc.",
-       [3]byte{240, 154, 81}:  "Shanghai Viroyal Electronic Technology Company Limited",
-       [3]byte{240, 156, 187}: "RaonThink Inc.",
-       [3]byte{240, 156, 233}: "Aerohive Networks Inc.",
-       [3]byte{240, 158, 99}:  "Cisco Systems, Inc",
-       [3]byte{240, 159, 194}: "Ubiquiti Networks Inc.",
-       [3]byte{240, 162, 37}:  "Private",
-       [3]byte{240, 167, 100}: "GST Co., Ltd.",
-       [3]byte{240, 171, 84}:  "MITSUMI ELECTRIC CO.,LTD.",
-       [3]byte{240, 172, 164}: "HBC-radiomatic",
-       [3]byte{240, 172, 215}: "IEEE Registration Authority",
-       [3]byte{240, 173, 78}:  "Globalscale Technologies, Inc.",
-       [3]byte{240, 174, 81}:  "Xi3 Corp",
-       [3]byte{240, 176, 82}:  "Ruckus Wireless",
-       [3]byte{240, 176, 231}: "Apple, Inc.",
-       [3]byte{240, 178, 229}: "Cisco Systems, Inc",
-       [3]byte{240, 180, 41}:  "Xiaomi Communications Co Ltd",
-       [3]byte{240, 180, 121}: "Apple, Inc.",
-       [3]byte{240, 182, 235}: "Poslab Technology Co., Ltd.",
-       [3]byte{240, 188, 200}: "MaxID (Pty) Ltd",
-       [3]byte{240, 189, 46}:  "H+S Polatis Ltd",
-       [3]byte{240, 189, 241}: "Sipod Inc.",
-       [3]byte{240, 191, 151}: "Sony Corporation",
-       [3]byte{240, 193, 241}: "Apple, Inc.",
-       [3]byte{240, 194, 76}:  "Zhejiang FeiYue Digital Technology Co., Ltd",
-       [3]byte{240, 194, 124}: "Mianyang Netop Telecom Equipment Co.,Ltd.",
-       [3]byte{240, 199, 127}: "Texas Instruments",
-       [3]byte{240, 200, 80}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{240, 200, 140}: "LeddarTech Inc.",
-       [3]byte{240, 203, 161}: "Apple, Inc.",
-       [3]byte{240, 209, 79}:  "LINEAR LLC",
-       [3]byte{240, 209, 169}: "Apple, Inc.",
-       [3]byte{240, 209, 184}: "LEDVANCE",
-       [3]byte{240, 210, 241}: "Amazon Technologies Inc.",
-       [3]byte{240, 211, 167}: "CobaltRay Co., Ltd",
-       [3]byte{240, 211, 231}: "Sensometrix SA",
-       [3]byte{240, 212, 246}: "Lars Thrane A/S",
-       [3]byte{240, 213, 191}: "Intel Corporate",
-       [3]byte{240, 214, 87}:  "ECHOSENS",
-       [3]byte{240, 215, 103}: "Axema Passagekontroll AB",
-       [3]byte{240, 215, 170}: "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{240, 217, 178}: "EXO S.A.",
-       [3]byte{240, 218, 124}: "RLH INDUSTRIES,INC.",
-       [3]byte{240, 219, 48}:  "Yottabyte",
-       [3]byte{240, 219, 226}: "Apple, Inc.",
-       [3]byte{240, 219, 248}: "Apple, Inc.",
-       [3]byte{240, 220, 226}: "Apple, Inc.",
-       [3]byte{240, 222, 113}: "Shanghai EDO Technologies Co.,Ltd.",
-       [3]byte{240, 222, 185}: "ShangHai Y&Y Electronics Co., Ltd",
-       [3]byte{240, 222, 241}: "Wistron Infocomm (Zhongshan) Corporation",
-       [3]byte{240, 229, 195}: "Drägerwerk AG & Co. KG aA",
-       [3]byte{240, 231, 126}: "Samsung Electronics Co.,Ltd",
-       [3]byte{240, 235, 208}: "Shanghai Feixun Communication Co.,Ltd.",
-       [3]byte{240, 236, 57}:  "Essec",
-       [3]byte{240, 237, 30}:  "Bilkon Bilgisayar Kontrollu Cih. Im.Ltd.",
-       [3]byte{240, 238, 16}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{240, 238, 88}:  "PACE Telematics GmbH",
-       [3]byte{240, 238, 187}: "VIPAR GmbH",
-       [3]byte{240, 239, 210}: "TF PAYMENT SERVICE CO., LTD",
-       [3]byte{240, 240, 2}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{240, 242, 73}:  "Hitron Technologies. Inc",
-       [3]byte{240, 242, 96}:  "Mobitec AB",
-       [3]byte{240, 243, 54}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{240, 245, 174}: "Adaptrum Inc.",
-       [3]byte{240, 246, 28}:  "Apple, Inc.",
-       [3]byte{240, 246, 68}:  "Whitesky Science & Technology Co.,Ltd.",
-       [3]byte{240, 246, 105}: "Motion Analysis Corporation",
-       [3]byte{240, 247, 85}:  "Cisco Systems, Inc",
-       [3]byte{240, 247, 179}: "Phorm",
-       [3]byte{240, 248, 66}:  "KEEBOX, Inc.",
-       [3]byte{240, 248, 242}: "Texas Instruments",
-       [3]byte{240, 249, 247}: "IES GmbH & Co. KG",
-       [3]byte{240, 253, 160}: "Acurix Networks Pty Ltd",
-       [3]byte{240, 254, 107}: "Shanghai High-Flying Electronics Technology Co., Ltd",
-       [3]byte{244, 3, 4}:     "Google, Inc.",
-       [3]byte{244, 3, 33}:    "BeNeXt B.V.",
-       [3]byte{244, 3, 47}:    "Reduxio Systems",
-       [3]byte{244, 3, 67}:    "Hewlett Packard Enterprise",
-       [3]byte{244, 4, 76}:    "ValenceTech Limited",
-       [3]byte{244, 6, 105}:   "Intel Corporate",
-       [3]byte{244, 6, 141}:   "devolo AG",
-       [3]byte{244, 6, 165}:   "Hangzhou Bianfeng Networking Technology Co., Ltd.",
-       [3]byte{244, 9, 216}:   "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
-       [3]byte{244, 10, 74}:   "INDUSNET Communication Technology Co.,LTD",
-       [3]byte{244, 11, 147}:  "BlackBerry RTS",
-       [3]byte{244, 14, 17}:   "IEEE Registration Authority",
-       [3]byte{244, 14, 34}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{244, 14, 131}:  "ARRIS Group, Inc.",
-       [3]byte{244, 15, 27}:   "Cisco Systems, Inc",
-       [3]byte{244, 15, 36}:   "Apple, Inc.",
-       [3]byte{244, 15, 155}:  "WAVELINK",
-       [3]byte{244, 21, 53}:   "SPON Communication Technology Co.,Ltd",
-       [3]byte{244, 21, 99}:   "F5 Networks, Inc.",
-       [3]byte{244, 21, 253}:  "Shanghai Pateo Electronic Equipment Manufacturing Co., Ltd.",
-       [3]byte{244, 23, 184}:  "AirTies Wireless Networks",
-       [3]byte{244, 27, 161}:  "Apple, Inc.",
-       [3]byte{244, 30, 38}:   "Simon-Kaloi Engineering",
-       [3]byte{244, 30, 94}:   "RtBrick Inc.",
-       [3]byte{244, 31, 11}:   "YAMABISHI Corporation",
-       [3]byte{244, 31, 136}:  "zte corporation",
-       [3]byte{244, 31, 194}:  "Cisco Systems, Inc",
-       [3]byte{244, 32, 18}:   "Cuciniale GmbH",
-       [3]byte{244, 40, 51}:   "MMPC Inc.",
-       [3]byte{244, 40, 83}:   "Zioncom Electronics (Shenzhen) Ltd.",
-       [3]byte{244, 40, 150}:  "SPECTO PAINEIS ELETRONICOS LTDA",
-       [3]byte{244, 41, 129}:  "vivo Mobile Communication Co., Ltd.",
-       [3]byte{244, 43, 72}:   "Ubiqam",
-       [3]byte{244, 44, 86}:   "SENOR TECH CO LTD",
-       [3]byte{244, 48, 185}:  "Hewlett Packard",
-       [3]byte{244, 49, 195}:  "Apple, Inc.",
-       [3]byte{244, 54, 225}:  "Abilis Systems SARL",
-       [3]byte{244, 55, 183}:  "Apple, Inc.",
-       [3]byte{244, 56, 20}:   "Shanghai Howell Electronic Co.,Ltd",
-       [3]byte{244, 61, 128}:  "FAG Industrial Services GmbH",
-       [3]byte{244, 62, 97}:   "SHENZHEN GONGJIN ELECTRONICS CO.,LT",
-       [3]byte{244, 62, 157}:  "Benu Networks, Inc.",
-       [3]byte{244, 65, 86}:   "Arrikto Inc.",
-       [3]byte{244, 66, 39}:   "S & S Research Inc.",
-       [3]byte{244, 66, 143}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{244, 68, 80}:   "BND Co., Ltd.",
-       [3]byte{244, 69, 237}:  "Portable Innovation Technology Ltd.",
-       [3]byte{244, 71, 19}:   "Leading Public Performance Co., Ltd.",
-       [3]byte{244, 71, 42}:   "Nanjing Rousing Sci. and Tech. Industrial Co., Ltd",
-       [3]byte{244, 72, 72}:   "Amscreen Group Ltd",
-       [3]byte{244, 73, 239}:  "EMSTONE",
-       [3]byte{244, 75, 42}:   "Cisco SPVTG",
-       [3]byte{244, 76, 112}:  "Skyworth Digital Technology(Shenzhen) Co.,Ltd",
-       [3]byte{244, 76, 127}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{244, 77, 23}:   "GOLDCARD HIGH-TECH CO.,LTD.",
-       [3]byte{244, 77, 48}:   "Elitegroup Computer Systems Co.,Ltd.",
-       [3]byte{244, 78, 5}:    "Cisco Systems, Inc",
-       [3]byte{244, 78, 253}:  "Actions Semiconductor Co.,Ltd.(Cayman Islands)",
-       [3]byte{244, 80, 235}:  "Telechips Inc",
-       [3]byte{244, 82, 20}:   "Mellanox Technologies, Inc.",
-       [3]byte{244, 84, 51}:   "Rockwell Automation",
-       [3]byte{244, 85, 149}:  "HENGBAO Corporation LTD.",
-       [3]byte{244, 85, 156}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{244, 85, 224}:  "Niceway CNC Technology Co.,Ltd.Hunan Province",
-       [3]byte{244, 87, 62}:   "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{244, 88, 66}:   "Boxx TV Ltd",
-       [3]byte{244, 91, 115}:  "Wanjiaan Interconnected Technology Co., Ltd",
-       [3]byte{244, 92, 137}:  "Apple, Inc.",
-       [3]byte{244, 94, 171}:  "Texas Instruments",
-       [3]byte{244, 95, 105}:  "Matsufu Electronics distribution Company",
-       [3]byte{244, 95, 212}:  "Cisco SPVTG",
-       [3]byte{244, 95, 247}:  "DQ Technology Inc.",
-       [3]byte{244, 96, 13}:   "Panoptic Technology, Inc",
-       [3]byte{244, 98, 208}:  "Not for Radio, LLC",
-       [3]byte{244, 99, 73}:   "Diffon Corporation",
-       [3]byte{244, 100, 93}:  "Toshiba",
-       [3]byte{244, 103, 45}:  "ShenZhen Topstar Technology Company",
-       [3]byte{244, 106, 146}: "SHENZHEN FAST TECHNOLOGIES CO.,LTD",
-       [3]byte{244, 106, 188}: "Adonit Corp. Ltd.",
-       [3]byte{244, 107, 239}: "Sagemcom Broadband SAS",
-       [3]byte{244, 109, 4}:   "ASUSTek COMPUTER INC.",
-       [3]byte{244, 109, 226}: "zte corporation",
-       [3]byte{244, 110, 36}:  "NEC Personal Computers, Ltd.",
-       [3]byte{244, 112, 171}: "vivo Mobile Communication Co., Ltd.",
-       [3]byte{244, 115, 202}: "Conversion Sound Inc.",
-       [3]byte{244, 118, 38}:  "Viltechmeda UAB",
-       [3]byte{244, 122, 78}:  "Woojeon&Handan",
-       [3]byte{244, 122, 204}: "SolidFire, Inc.",
-       [3]byte{244, 123, 94}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{244, 127, 53}:  "Cisco Systems, Inc",
-       [3]byte{244, 129, 57}:  "CANON INC.",
-       [3]byte{244, 131, 205}: "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{244, 131, 225}: "Shanghai Clouder Semiconductor Co.,Ltd",
-       [3]byte{244, 133, 198}: "FDT Technologies",
-       [3]byte{244, 135, 113}: "Infoblox",
-       [3]byte{244, 139, 50}:  "Xiaomi Communications Co Ltd",
-       [3]byte{244, 140, 80}:  "Intel Corporate",
-       [3]byte{244, 142, 9}:   "Nokia Corporation",
-       [3]byte{244, 142, 56}:  "Dell Inc.",
-       [3]byte{244, 142, 146}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{244, 144, 202}: "Tensorcom",
-       [3]byte{244, 144, 234}: "Deciso B.V.",
-       [3]byte{244, 145, 30}:  "ZHUHAI EWPE INFORMATION TECHNOLOGY INC",
-       [3]byte{244, 147, 159}: "Hon Hai Precision Ind. Co., Ltd.",
-       [3]byte{244, 148, 97}:  "NexGen Storage",
-       [3]byte{244, 148, 102}: "CountMax,  ltd",
-       [3]byte{244, 150, 52}:  "Intel Corporate",
-       [3]byte{244, 150, 81}:  "NAKAYO Inc",
-       [3]byte{244, 153, 172}: "WEBER Schraubautomaten GmbH",
-       [3]byte{244, 158, 239}: "Taicang T&W Electronics",
-       [3]byte{244, 159, 84}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{244, 159, 243}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{244, 162, 148}: "EAGLE WORLD DEVELOPMENT CO., LIMITED",
-       [3]byte{244, 165, 42}:  "Hawa Technologies Inc",
-       [3]byte{244, 167, 57}:  "Juniper Networks",
-       [3]byte{244, 169, 151}: "CANON INC.",
-       [3]byte{244, 172, 193}: "Cisco Systems, Inc",
-       [3]byte{244, 177, 100}: "Lightning Telecommunications Technology Co. Ltd",
-       [3]byte{244, 179, 129}: "WindowMaster A/S",
-       [3]byte{244, 181, 32}:  "Biostar Microtech international corp.",
-       [3]byte{244, 181, 47}:  "Juniper Networks",
-       [3]byte{244, 181, 73}:  "Xiamen Yeastar Information Technology Co., Ltd.",
-       [3]byte{244, 182, 229}: "TerraSem Co.,Ltd",
-       [3]byte{244, 183, 42}:  "TIME INTERCONNECT LTD",
-       [3]byte{244, 183, 179}: "vivo Mobile Communication Co., Ltd.",
-       [3]byte{244, 183, 226}: "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{244, 184, 94}:  "Texas Instruments",
-       [3]byte{244, 184, 167}: "zte corporation",
-       [3]byte{244, 189, 124}: "Chengdu jinshi communication Co., LTD",
-       [3]byte{244, 196, 71}:  "Coagent International Enterprise Limited",
-       [3]byte{244, 196, 214}: "Shenzhen Xinfa Electronic Co.,ltd",
-       [3]byte{244, 198, 19}:  "Alcatel-Lucent Shanghai Bell Co., Ltd",
-       [3]byte{244, 198, 215}: "blackned GmbH",
-       [3]byte{244, 199, 20}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{244, 199, 149}: "WEY Elektronik AG",
-       [3]byte{244, 202, 36}:  "FreeBit Co., Ltd.",
-       [3]byte{244, 202, 229}: "FREEBOX SAS",
-       [3]byte{244, 203, 82}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{244, 204, 85}:  "Juniper Networks",
-       [3]byte{244, 205, 144}: "Vispiron Rotec GmbH",
-       [3]byte{244, 206, 70}:  "Hewlett Packard",
-       [3]byte{244, 207, 226}: "Cisco Systems, Inc",
-       [3]byte{244, 208, 50}:  "Yunnan Ideal Information&Technology.,Ltd",
-       [3]byte{244, 210, 97}:  "SEMOCON Co., Ltd",
-       [3]byte{244, 215, 178}: "LGS Innovations, LLC",
-       [3]byte{244, 217, 251}: "Samsung Electronics Co.,Ltd",
-       [3]byte{244, 220, 65}:  "YOUNGZONE CULTURE (SHANGHAI) CORP",
-       [3]byte{244, 220, 77}:  "Beijing CCD Digital Technology Co., Ltd",
-       [3]byte{244, 220, 218}: "Zhuhai Jiahe Communication Technology Co., limited",
-       [3]byte{244, 220, 249}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{244, 221, 158}: "GoPro",
-       [3]byte{244, 222, 12}:  "ESPOD Ltd.",
-       [3]byte{244, 225, 66}:  "Delta Elektronika BV",
-       [3]byte{244, 226, 4}:   "Traqueur",
-       [3]byte{244, 227, 251}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{244, 228, 173}: "zte corporation",
-       [3]byte{244, 230, 215}: "Solar Power Technologies, Inc.",
-       [3]byte{244, 233, 38}:  "Tianjin Zanpu Technology Inc.",
-       [3]byte{244, 233, 212}: "QLogic Corporation",
-       [3]byte{244, 234, 103}: "Cisco Systems, Inc",
-       [3]byte{244, 234, 181}: "Aerohive Networks Inc.",
-       [3]byte{244, 235, 56}:  "Sagemcom Broadband SAS",
-       [3]byte{244, 236, 56}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{244, 237, 95}:  "SHENZHEN KTC TECHNOLOGY GROUP",
-       [3]byte{244, 238, 20}:  "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.",
-       [3]byte{244, 239, 158}: "SGSG SCIENCE & TECHNOLOGY CO. LTD",
-       [3]byte{244, 241, 90}:  "Apple, Inc.",
-       [3]byte{244, 241, 225}: "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{244, 242, 109}: "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{244, 243, 170}: "JBL GmbH & Co. KG",
-       [3]byte{244, 245, 36}:  "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{244, 245, 165}: "Nokia Corporation",
-       [3]byte{244, 245, 216}: "Google, Inc.",
-       [3]byte{244, 245, 219}: "Xiaomi Communications Co Ltd",
-       [3]byte{244, 245, 232}: "Google, Inc.",
-       [3]byte{244, 246, 70}:  "Dediprog Technology Co. Ltd.",
-       [3]byte{244, 249, 81}:  "Apple, Inc.",
-       [3]byte{244, 252, 50}:  "Texas Instruments",
-       [3]byte{244, 252, 177}: "JJ Corp",
-       [3]byte{244, 253, 43}:  "ZOYI Company",
-       [3]byte{248, 1, 19}:    "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{248, 2, 120}:   "IEEE Registration Authority",
-       [3]byte{248, 3, 50}:    "Khomp",
-       [3]byte{248, 3, 119}:   "Apple, Inc.",
-       [3]byte{248, 4, 46}:    "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
-       [3]byte{248, 5, 28}:    "DRS Imaging and Targeting Solutions",
-       [3]byte{248, 11, 190}:  "ARRIS Group, Inc.",
-       [3]byte{248, 11, 203}:  "Cisco Systems, Inc",
-       [3]byte{248, 11, 208}:  "Datang Telecom communication terminal (Tianjin) Co., Ltd.",
-       [3]byte{248, 12, 243}:  "LG Electronics (Mobile Communications)",
-       [3]byte{248, 13, 67}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{248, 13, 96}:   "CANON INC.",
-       [3]byte{248, 13, 234}:  "ZyCast Technology Inc.",
-       [3]byte{248, 15, 65}:   "Wistron Infocomm (Zhongshan) Corporation",
-       [3]byte{248, 15, 132}:  "Natural Security SAS",
-       [3]byte{248, 16, 55}:   "Atopia Systems, LP",
-       [3]byte{248, 21, 71}:   "Avaya Inc",
-       [3]byte{248, 22, 84}:   "Intel Corporate",
-       [3]byte{248, 24, 151}:  "2Wire Inc",
-       [3]byte{248, 26, 103}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{248, 28, 229}:  "Telefonbau Behnke GmbH",
-       [3]byte{248, 29, 15}:   "Hitron Technologies. Inc",
-       [3]byte{248, 29, 120}:  "IEEE Registration Authority",
-       [3]byte{248, 29, 144}:  "Solidwintech",
-       [3]byte{248, 29, 147}:  "Longdhua(Beijing) Controls Technology Co.,Ltd",
-       [3]byte{248, 30, 223}:  "Apple, Inc.",
-       [3]byte{248, 32, 85}:   "Green Information System",
-       [3]byte{248, 34, 133}:  "Cypress Technology CO., LTD.",
-       [3]byte{248, 35, 178}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{248, 36, 65}:   "Yeelink",
-       [3]byte{248, 39, 147}:  "Apple, Inc.",
-       [3]byte{248, 40, 25}:   "Liteon Technology Corporation",
-       [3]byte{248, 43, 200}:  "Jiangsu Switter Co., Ltd",
-       [3]byte{248, 44, 24}:   "2Wire Inc",
-       [3]byte{248, 46, 219}:  "RTW GmbH & Co. KG",
-       [3]byte{248, 47, 8}:    "Molex",
-       [3]byte{248, 47, 91}:   "eGauge Systems LLC",
-       [3]byte{248, 47, 168}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{248, 48, 148}:  "Alcatel-Lucent Telecom Limited",
-       [3]byte{248, 49, 62}:   "endeavour GmbH",
-       [3]byte{248, 50, 228}:  "ASUSTek COMPUTER INC.",
-       [3]byte{248, 51, 118}:  "Good Mind Innovation Co., Ltd.",
-       [3]byte{248, 52, 65}:   "Intel Corporate",
-       [3]byte{248, 53, 83}:   "Magenta Research Ltd.",
-       [3]byte{248, 53, 221}:  "Gemtek Technology Co., Ltd.",
-       [3]byte{248, 61, 78}:   "Softlink Automation System Co., Ltd",
-       [3]byte{248, 61, 255}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{248, 63, 81}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{248, 66, 251}:  "Yasuda Joho Co.,ltd.",
-       [3]byte{248, 68, 227}:  "Taicang T&W Electronics",
-       [3]byte{248, 69, 173}:  "Konka Group Co., Ltd.",
-       [3]byte{248, 70, 28}:   "Sony Interactive Entertainment Inc.",
-       [3]byte{248, 70, 45}:   "SYNTEC Incorporation",
-       [3]byte{248, 71, 45}:   "X2gen Digital Corp. Ltd",
-       [3]byte{248, 72, 151}:  "Hitachi, Ltd.",
-       [3]byte{248, 74, 115}:  "EUMTECH CO., LTD",
-       [3]byte{248, 74, 127}:  "Innometriks Inc",
-       [3]byte{248, 74, 191}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{248, 79, 87}:   "Cisco Systems, Inc",
-       [3]byte{248, 80, 99}:   "Verathon",
-       [3]byte{248, 81, 109}:  "Denwa Technology Corp.",
-       [3]byte{248, 82, 223}:  "VNL Europe AB",
-       [3]byte{248, 84, 175}:  "ECI Telecom Ltd.",
-       [3]byte{248, 87, 46}:   "Core Brands, LLC",
-       [3]byte{248, 89, 113}:  "Intel Corporate",
-       [3]byte{248, 90, 0}:    "Sanford LP",
-       [3]byte{248, 91, 156}:  "SB SYSTEMS Co.,Ltd",
-       [3]byte{248, 91, 201}:  "M-Cube Spa",
-       [3]byte{248, 92, 69}:   "IC Nexus Co. Ltd.",
-       [3]byte{248, 92, 77}:   "NOKIA",
-       [3]byte{248, 95, 42}:   "Nokia Corporation",
-       [3]byte{248, 98, 20}:   "Apple, Inc.",
-       [3]byte{248, 98, 170}:  "xn systems",
-       [3]byte{248, 99, 63}:   "Intel Corporate",
-       [3]byte{248, 100, 101}: "Anova Applied Electronics, Inc.",
-       [3]byte{248, 102, 1}:   "Suzhou Chi-tek information technology Co., Ltd",
-       [3]byte{248, 102, 209}: "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{248, 102, 242}: "Cisco Systems, Inc",
-       [3]byte{248, 105, 113}: "Seibu Electric Co.,",
-       [3]byte{248, 108, 225}: "Taicang T&W Electronics",
-       [3]byte{248, 110, 207}: "Arcx Inc",
-       [3]byte{248, 110, 238}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{248, 113, 254}: "The Goldman Sachs Group, Inc.",
-       [3]byte{248, 114, 234}: "Cisco Systems, Inc",
-       [3]byte{248, 115, 148}: "NETGEAR",
-       [3]byte{248, 115, 162}: "Avaya Inc",
-       [3]byte{248, 117, 136}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{248, 118, 155}: "Neopis Co., Ltd.",
-       [3]byte{248, 119, 184}: "Samsung Electronics Co.,Ltd",
-       [3]byte{248, 122, 239}: "Rosonix Technology, Inc.",
-       [3]byte{248, 123, 32}:  "Cisco Systems, Inc",
-       [3]byte{248, 123, 98}:  "FASTWEL INTERNATIONAL CO., LTD. Taiwan Branch",
-       [3]byte{248, 123, 122}: "ARRIS Group, Inc.",
-       [3]byte{248, 123, 140}: "Amped Wireless",
-       [3]byte{248, 128, 150}: "Elsys Equipamentos Eletrônicos Ltda",
-       [3]byte{248, 129, 26}:  "OVERKIZ",
-       [3]byte{248, 132, 121}: "Yaojin Technology(Shenzhen)Co.,Ltd",
-       [3]byte{248, 132, 242}: "Samsung Electronics Co.,Ltd",
-       [3]byte{248, 138, 60}:  "IEEE Registration Authority",
-       [3]byte{248, 140, 28}:  "KAISHUN ELECTRONIC TECHNOLOGY CO., LTD. BEIJING",
-       [3]byte{248, 141, 239}: "Tenebraex",
-       [3]byte{248, 142, 133}: "Comtrend Corporation",
-       [3]byte{248, 143, 202}: "Google, Inc.",
-       [3]byte{248, 145, 42}:  "GLP German Light Products GmbH",
-       [3]byte{248, 147, 243}: "VOLANS",
-       [3]byte{248, 148, 194}: "Intel Corporate",
-       [3]byte{248, 149, 80}:  "Proton Products Chengdu Ltd",
-       [3]byte{248, 149, 199}: "LG Electronics (Mobile Communications)",
-       [3]byte{248, 151, 207}: "DAESHIN-INFORMATION TECHNOLOGY CO., LTD.",
-       [3]byte{248, 152, 58}:  "Leeman International (HongKong) Limited",
-       [3]byte{248, 152, 185}: "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{248, 153, 85}:  "Fortress Technology Inc",
-       [3]byte{248, 157, 13}:  "Control Technology Inc.",
-       [3]byte{248, 157, 187}: "Tintri",
-       [3]byte{248, 159, 184}: "YAZAKI Energy System Corporation",
-       [3]byte{248, 160, 61}:  "Dinstar Technologies Co., Ltd.",
-       [3]byte{248, 160, 151}: "ARRIS Group, Inc.",
-       [3]byte{248, 161, 136}: "LED Roadway Lighting",
-       [3]byte{248, 162, 180}: "RHEWA-WAAGENFABRIK August Freudewald GmbH &amp;Co. KG",
-       [3]byte{248, 163, 79}:  "zte corporation",
-       [3]byte{248, 164, 95}:  "Xiaomi Communications Co Ltd",
-       [3]byte{248, 165, 197}: "Cisco Systems, Inc",
-       [3]byte{248, 169, 99}:  "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
-       [3]byte{248, 169, 208}: "LG Electronics (Mobile Communications)",
-       [3]byte{248, 169, 222}: "PUISSANCE PLUS",
-       [3]byte{248, 170, 138}: "Axview Technology (Shenzhen) Co.,Ltd",
-       [3]byte{248, 171, 5}:   "Sagemcom Broadband SAS",
-       [3]byte{248, 172, 109}: "Deltenna Ltd",
-       [3]byte{248, 177, 86}:  "Dell Inc.",
-       [3]byte{248, 178, 243}: "GUANGZHOU BOSMA TECHNOLOGY CO.,LTD",
-       [3]byte{248, 181, 104}: "IEEE Registration Authority",
-       [3]byte{248, 181, 153}: "Guangzhou CHNAVS Digital Technology Co.,Ltd",
-       [3]byte{248, 183, 226}: "Cisco Systems, Inc",
-       [3]byte{248, 187, 191}: "eero inc.",
-       [3]byte{248, 188, 18}:  "Dell Inc.",
-       [3]byte{248, 188, 65}:  "Rosslare Enterprises Limited",
-       [3]byte{248, 190, 13}:  "A2UICT Co.,Ltd.",
-       [3]byte{248, 191, 9}:   "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{248, 192, 1}:   "Juniper Networks",
-       [3]byte{248, 192, 145}: "Highgates Technology",
-       [3]byte{248, 194, 136}: "Cisco Systems, Inc",
-       [3]byte{248, 195, 114}: "TSUZUKI DENKI",
-       [3]byte{248, 195, 151}: "NZXT Corp. Ltd.",
-       [3]byte{248, 198, 120}: "Carefusion",
-       [3]byte{248, 201, 108}: "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{248, 202, 184}: "Dell Inc.",
-       [3]byte{248, 207, 197}: "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{248, 208, 39}:  "Seiko Epson Corporation",
-       [3]byte{248, 208, 172}: "Sony Interactive Entertainment Inc.",
-       [3]byte{248, 208, 189}: "Samsung Electronics Co.,Ltd",
-       [3]byte{248, 209, 17}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{248, 211, 169}: "AXAN Networks",
-       [3]byte{248, 212, 98}:  "Pumatronix Equipamentos Eletronicos Ltda.",
-       [3]byte{248, 215, 86}:  "Simm Tronic Limited",
-       [3]byte{248, 215, 191}: "REV Ritter GmbH",
-       [3]byte{248, 218, 12}:  "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{248, 218, 223}: "EcoTech, Inc.",
-       [3]byte{248, 218, 226}: "Beta LaserMike",
-       [3]byte{248, 218, 244}: "Taishan Online Technology Co., Ltd.",
-       [3]byte{248, 219, 76}:  "PNY Technologies, INC.",
-       [3]byte{248, 219, 127}: "HTC Corporation",
-       [3]byte{248, 219, 136}: "Dell Inc.",
-       [3]byte{248, 220, 122}: "Variscite LTD",
-       [3]byte{248, 223, 168}: "zte corporation",
-       [3]byte{248, 224, 121}: "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{248, 228, 251}: "Actiontec Electronics, Inc",
-       [3]byte{248, 230, 26}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{248, 231, 30}:  "Ruckus Wireless",
-       [3]byte{248, 231, 181}: "µTech Tecnologia LTDA",
-       [3]byte{248, 232, 17}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{248, 233, 3}:   "D-Link International",
-       [3]byte{248, 233, 104}: "Egker Kft.",
-       [3]byte{248, 234, 10}:  "Dipl.-Math. Michael Rauch",
-       [3]byte{248, 237, 165}: "ARRIS Group, Inc.",
-       [3]byte{248, 240, 5}:   "Newport Media Inc.",
-       [3]byte{248, 240, 20}:  "RackWare Inc.",
-       [3]byte{248, 240, 130}: "NAG LLC",
-       [3]byte{248, 241, 182}: "Motorola Mobility LLC, a Lenovo Company",
-       [3]byte{248, 242, 30}:  "Intel Corporate",
-       [3]byte{248, 242, 90}:  "G-Lab GmbH",
-       [3]byte{248, 244, 100}: "Rawe Electonic GmbH",
-       [3]byte{248, 247, 211}: "International Communications Corporation",
-       [3]byte{248, 247, 255}: "SYN-TECH SYSTEMS INC",
-       [3]byte{248, 251, 47}:  "Santur Corporation",
-       [3]byte{248, 254, 92}:  "Reciprocal Labs Corp",
-       [3]byte{248, 254, 168}: "Technico Japan Corporation",
-       [3]byte{248, 255, 11}:  "Electronic Technology Inc.",
-       [3]byte{248, 255, 95}:  "Shenzhen Communication Technology Co.,Ltd",
-       [3]byte{252, 0, 18}:    "Toshiba Samsung Storage Technolgoy Korea Corporation",
-       [3]byte{252, 1, 124}:   "Hon Hai Precision Ind. Co.,Ltd.",
-       [3]byte{252, 1, 158}:   "VIEVU",
-       [3]byte{252, 1, 205}:   "FUNDACION TEKNIKER",
-       [3]byte{252, 6, 71}:    "Cortland Research, LLC",
-       [3]byte{252, 6, 237}:   "M2Motive Technology Inc.",
-       [3]byte{252, 7, 160}:   "LRE Medical GmbH",
-       [3]byte{252, 8, 74}:    "FUJITSU LIMITED",
-       [3]byte{252, 8, 119}:   "Prentke Romich Company",
-       [3]byte{252, 9, 216}:   "ACTEON Group",
-       [3]byte{252, 9, 246}:   "GUANGDONG TONZE ELECTRIC CO.,LTD",
-       [3]byte{252, 10, 129}:  "Extreme Networks, Inc.",
-       [3]byte{252, 15, 75}:   "Texas Instruments",
-       [3]byte{252, 15, 230}:  "Sony Interactive Entertainment Inc.",
-       [3]byte{252, 16, 189}:  "Control Sistematizado S.A.",
-       [3]byte{252, 16, 198}:  "Taicang T&W Electronics",
-       [3]byte{252, 17, 134}:  "Logic3 plc",
-       [3]byte{252, 19, 73}:   "Global Apps Corp.",
-       [3]byte{252, 21, 180}:  "Hewlett Packard",
-       [3]byte{252, 22, 7}:    "Taian Technology(Wuxi) Co.,Ltd.",
-       [3]byte{252, 23, 148}:  "InterCreative Co., Ltd",
-       [3]byte{252, 25, 16}:   "Samsung Electronics Co.,Ltd",
-       [3]byte{252, 25, 208}:  "Cloud Vision Networks Technology Co.,Ltd.",
-       [3]byte{252, 26, 17}:   "vivo Mobile Communication Co., Ltd.",
-       [3]byte{252, 27, 255}:  "V-ZUG AG",
-       [3]byte{252, 29, 89}:   "I Smart Cities HK Ltd",
-       [3]byte{252, 29, 132}:  "Autobase",
-       [3]byte{252, 30, 22}:   "IPEVO corp",
-       [3]byte{252, 31, 25}:   "SAMSUNG ELECTRO MECHANICS CO., LTD.",
-       [3]byte{252, 31, 192}:  "EURECAM",
-       [3]byte{252, 34, 156}:  "Han Kyung I Net Co.,Ltd.",
-       [3]byte{252, 35, 37}:   "EosTek (Shenzhen) Co., Ltd.",
-       [3]byte{252, 37, 63}:   "Apple, Inc.",
-       [3]byte{252, 39, 162}:  "TRANS ELECTRIC CO., LTD.",
-       [3]byte{252, 42, 84}:   "Connected Data, Inc.",
-       [3]byte{252, 45, 94}:   "zte corporation",
-       [3]byte{252, 46, 45}:   "Lorom Industrial Co.LTD.",
-       [3]byte{252, 47, 64}:   "Calxeda, Inc.",
-       [3]byte{252, 47, 107}:  "Everspin Technologies, Inc.",
-       [3]byte{252, 47, 170}:  "Nokia",
-       [3]byte{252, 47, 239}:  "UTT Technologies Co., Ltd.",
-       [3]byte{252, 50, 136}:  "CELOT Wireless Co., Ltd",
-       [3]byte{252, 51, 95}:   "Polyera",
-       [3]byte{252, 53, 152}:  "Favite Inc.",
-       [3]byte{252, 53, 230}:  "Visteon corp",
-       [3]byte{252, 55, 43}:   "SICHUAN TIANYI COMHEART TELECOMCO.,LTD",
-       [3]byte{252, 60, 233}:  "Tsingtong Technologies Co, Ltd.",
-       [3]byte{252, 61, 147}:  "LONGCHEER TELECOMMUNICATION LIMITED",
-       [3]byte{252, 63, 124}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{252, 63, 171}:  "Henan Lanxin Technology Co., Ltd",
-       [3]byte{252, 63, 219}:  "Hewlett Packard",
-       [3]byte{252, 66, 3}:    "Samsung Electronics Co.,Ltd",
-       [3]byte{252, 68, 99}:   "Universal Audio, Inc",
-       [3]byte{252, 68, 153}:  "Swarco LEA d.o.o.",
-       [3]byte{252, 69, 95}:   "JIANGXI SHANSHUI OPTOELECTRONIC TECHNOLOGY CO.,LTD",
-       [3]byte{252, 69, 150}:  "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
-       [3]byte{252, 72, 239}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{252, 74, 233}:  "Castlenet Technology Inc.",
-       [3]byte{252, 75, 28}:   "INTERSENSOR S.R.L.",
-       [3]byte{252, 75, 188}:  "Sunplus Technology Co., Ltd.",
-       [3]byte{252, 77, 140}:  "SHENZHEN PANTE ELECTRONICS TECHNOLOGY CO., LTD",
-       [3]byte{252, 77, 212}:  "Universal Global Scientific Industrial Co., Ltd.",
-       [3]byte{252, 80, 144}:  "SIMEX Sp. z o.o.",
-       [3]byte{252, 81, 164}:  "ARRIS Group, Inc.",
-       [3]byte{252, 82, 141}:  "Technicolor CH USA Inc.",
-       [3]byte{252, 82, 206}:  "Control iD",
-       [3]byte{252, 83, 158}:  "Shanghai Wind Technologies Co.,Ltd",
-       [3]byte{252, 85, 220}:  "Baltic Latvian Universal Electronics LLC",
-       [3]byte{252, 88, 250}:  "Shen Zhen Shi Xin Zhong Xin Technology Co.,Ltd.",
-       [3]byte{252, 90, 29}:   "Hitron Technologies. Inc",
-       [3]byte{252, 91, 36}:   "Weibel Scientific A/S",
-       [3]byte{252, 91, 38}:   "MikroBits",
-       [3]byte{252, 91, 57}:   "Cisco Systems, Inc",
-       [3]byte{252, 96, 24}:   "Zhejiang Kangtai Electric Co., Ltd.",
-       [3]byte{252, 97, 152}:  "NEC Personal Products, Ltd",
-       [3]byte{252, 98, 110}:  "Beijing MDC Telecom",
-       [3]byte{252, 98, 185}:  "ALPS ELECTRIC CO.,LTD.",
-       [3]byte{252, 100, 186}: "Xiaomi Communications Co Ltd",
-       [3]byte{252, 101, 222}: "Amazon Technologies Inc.",
-       [3]byte{252, 104, 62}:  "Directed Perception, Inc",
-       [3]byte{252, 108, 49}:  "LXinstruments GmbH",
-       [3]byte{252, 109, 192}: "BME CORPORATION",
-       [3]byte{252, 111, 183}: "ARRIS Group, Inc.",
-       [3]byte{252, 117, 22}:  "D-Link International",
-       [3]byte{252, 117, 230}: "Handreamnet",
-       [3]byte{252, 121, 11}:  "Hitachi High Technologies America, Inc.",
-       [3]byte{252, 124, 231}: "FCI USA LLC",
-       [3]byte{252, 127, 86}:  "CoSyst Control Systems GmbH",
-       [3]byte{252, 131, 41}:  "Trei technics",
-       [3]byte{252, 131, 153}: "Avaya Inc",
-       [3]byte{252, 131, 198}: "N-Radio Technologies Co., Ltd.",
-       [3]byte{252, 139, 151}: "SHENZHEN GONGJIN ELECTRONICS CO.,LT",
-       [3]byte{252, 142, 126}: "ARRIS Group, Inc.",
-       [3]byte{252, 143, 144}: "Samsung Electronics Co.,Ltd",
-       [3]byte{252, 143, 196}: "Intelligent Technology Inc.",
-       [3]byte{252, 145, 20}:  "Technicolor CH USA Inc.",
-       [3]byte{252, 146, 59}:  "Nokia Corporation",
-       [3]byte{252, 148, 108}: "UBIVELOX",
-       [3]byte{252, 148, 227}: "Technicolor CH USA Inc.",
-       [3]byte{252, 153, 71}:  "Cisco Systems, Inc",
-       [3]byte{252, 154, 250}: "Motus Global Inc.",
-       [3]byte{252, 157, 216}: "Beijing TongTongYiLian Science and Technology Ltd.",
-       [3]byte{252, 159, 174}: "Fidus Systems Inc",
-       [3]byte{252, 159, 225}: "CONWIN.Tech. Ltd",
-       [3]byte{252, 161, 62}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{252, 162, 42}:  "PT. Callysta Multi Engineering",
-       [3]byte{252, 163, 134}: "SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD",
-       [3]byte{252, 166, 103}: "Amazon Technologies Inc.",
-       [3]byte{252, 168, 65}:  "Avaya Inc",
-       [3]byte{252, 168, 154}: "Sunitec Enterprise Co.,Ltd",
-       [3]byte{252, 169, 176}: "MIARTECH (SHANGHAI),INC.",
-       [3]byte{252, 170, 20}:  "GIGA-BYTE TECHNOLOGY CO.,LTD.",
-       [3]byte{252, 173, 15}:  "QTS NETWORKS",
-       [3]byte{252, 175, 106}: "Qulsar Inc",
-       [3]byte{252, 175, 172}: "Socionext Inc.",
-       [3]byte{252, 176, 196}: "Shanghai DareGlobal Technologies Co.,Ltd",
-       [3]byte{252, 180, 230}: "ASKEY COMPUTER CORP",
-       [3]byte{252, 181, 138}: "Wapice Ltd.",
-       [3]byte{252, 182, 152}: "Cambridge Industries(Group) Co.,Ltd.",
-       [3]byte{252, 187, 161}: "Shenzhen Minicreate Technology Co.,Ltd",
-       [3]byte{252, 188, 156}: "Vimar Spa",
-       [3]byte{252, 194, 51}:  "Private",
-       [3]byte{252, 194, 61}:  "Atmel Corporation",
-       [3]byte{252, 194, 222}: "Murata Manufacturing Co., Ltd.",
-       [3]byte{252, 199, 52}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{252, 200, 151}: "zte corporation",
-       [3]byte{252, 202, 196}: "LifeHealth, LLC",
-       [3]byte{252, 204, 228}: "Ascon Ltd.",
-       [3]byte{252, 207, 67}:  "HUIZHOU CITY HUIYANG DISTRICT MEISIQI INDUSTRY DEVELOPMENT CO,.LTD",
-       [3]byte{252, 207, 98}:  "IBM Corp",
-       [3]byte{252, 212, 242}: "The Coca Cola Company",
-       [3]byte{252, 212, 246}: "Messana Air.Ray Conditioning s.r.l.",
-       [3]byte{252, 213, 217}: "Shenzhen SDMC Technology Co., Ltd.",
-       [3]byte{252, 214, 189}: "Robert Bosch GmbH",
-       [3]byte{252, 215, 51}:  "TP-LINK TECHNOLOGIES CO.,LTD.",
-       [3]byte{252, 216, 23}:  "Beijing Hesun Technologies Co.Ltd.",
-       [3]byte{252, 216, 72}:  "Apple, Inc.",
-       [3]byte{252, 219, 150}: "ENERVALLEY CO., LTD",
-       [3]byte{252, 219, 179}: "Murata Manufacturing Co., Ltd.",
-       [3]byte{252, 220, 74}:  "G-Wearables Corp.",
-       [3]byte{252, 221, 85}:  "Shenzhen WeWins wireless Co.,Ltd",
-       [3]byte{252, 225, 134}: "A3M Co., LTD",
-       [3]byte{252, 225, 146}: "Sichuan Jinwangtong Electronic Science&Technology Co,.Ltd",
-       [3]byte{252, 225, 217}: "Stable Imaging Solutions LLC",
-       [3]byte{252, 225, 251}: "Array Networks",
-       [3]byte{252, 226, 63}:  "CLAY PAKY SPA",
-       [3]byte{252, 227, 60}:  "HUAWEI TECHNOLOGIES CO.,LTD",
-       [3]byte{252, 229, 87}:  "Nokia Corporation",
-       [3]byte{252, 232, 146}: "Hangzhou Lancable Technology Co.,Ltd",
-       [3]byte{252, 233, 152}: "Apple, Inc.",
-       [3]byte{252, 236, 218}: "Ubiquiti Networks Inc.",
-       [3]byte{252, 237, 185}: "Arrayent",
-       [3]byte{252, 238, 230}: "FORMIKE ELECTRONIC CO., LTD",
-       [3]byte{252, 241, 54}:  "Samsung Electronics Co.,Ltd",
-       [3]byte{252, 241, 82}:  "Sony Corporation",
-       [3]byte{252, 241, 205}: "OPTEX-FA CO.,LTD.",
-       [3]byte{252, 245, 40}:  "Zyxel Communications Corporation",
-       [3]byte{252, 246, 71}:  "Fiberhome Telecommunication Technologies Co.,LTD",
-       [3]byte{252, 248, 174}: "Intel Corporate",
-       [3]byte{252, 248, 183}: "TRONTEQ Electronic",
-       [3]byte{252, 250, 247}: "Shanghai Baud Data Communication Co.,Ltd.",
-       [3]byte{252, 251, 251}: "Cisco Systems, Inc",
-       [3]byte{252, 252, 72}:  "Apple, Inc.",
-       [3]byte{252, 254, 119}: "Hitachi Reftechno, Inc.",
-       [3]byte{252, 254, 194}: "Invensys Controls UK Limited",
-       [3]byte{252, 255, 170}: "IEEE Registration Authority",
-}
diff --git a/vendor/github.com/google/gopacket/packet_test.go b/vendor/github.com/google/gopacket/packet_test.go
deleted file mode 100644 (file)
index bd05448..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package gopacket
-
-import (
-       "io"
-       "reflect"
-       "testing"
-)
-
-type embedded struct {
-       A, B int
-}
-
-type embedding struct {
-       embedded
-       C, D int
-}
-
-func TestDumpEmbedded(t *testing.T) {
-       e := embedding{embedded: embedded{A: 1, B: 2}, C: 3, D: 4}
-       if got, want := layerString(reflect.ValueOf(e), false, false), "{A=1 B=2 C=3 D=4}"; got != want {
-               t.Errorf("embedded dump mismatch:\n   got: %v\n  want: %v", got, want)
-       }
-}
-
-type singlePacketSource [1][]byte
-
-func (s *singlePacketSource) ReadPacketData() ([]byte, CaptureInfo, error) {
-       if (*s)[0] == nil {
-               return nil, CaptureInfo{}, io.EOF
-       }
-       out := (*s)[0]
-       (*s)[0] = nil
-       return out, CaptureInfo{}, nil
-}
-
-func TestConcatPacketSources(t *testing.T) {
-       sourceA := &singlePacketSource{[]byte{1}}
-       sourceB := &singlePacketSource{[]byte{2}}
-       sourceC := &singlePacketSource{[]byte{3}}
-       concat := ConcatFinitePacketDataSources(sourceA, sourceB, sourceC)
-       a, _, err := concat.ReadPacketData()
-       if err != nil || len(a) != 1 || a[0] != 1 {
-               t.Errorf("expected [1], got %v/%v", a, err)
-       }
-       b, _, err := concat.ReadPacketData()
-       if err != nil || len(b) != 1 || b[0] != 2 {
-               t.Errorf("expected [2], got %v/%v", b, err)
-       }
-       c, _, err := concat.ReadPacketData()
-       if err != nil || len(c) != 1 || c[0] != 3 {
-               t.Errorf("expected [3], got %v/%v", c, err)
-       }
-       if _, _, err := concat.ReadPacketData(); err != io.EOF {
-               t.Errorf("expected io.EOF, got %v", err)
-       }
-}
diff --git a/vendor/github.com/google/gopacket/pcap/doc.go b/vendor/github.com/google/gopacket/pcap/doc.go
deleted file mode 100644 (file)
index 5bf8d86..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-/*
-Package pcap allows users of gopacket to read packets off the wire or from
-pcap files.
-
-This package is meant to be used with its parent,
-http://github.com/google/gopacket, although it can also be used independently
-if you just want to get packet data from the wire.
-
-Reading PCAP Files
-
-The following code can be used to read in data from a pcap file.
-
- if handle, err := pcap.OpenOffline("/path/to/my/file"); err != nil {
-   panic(err)
- } else {
-   packetSource := gopacket.NewPacketSource(handle, handle.LinkType())
-   for packet := range packetSource.Packets() {
-     handlePacket(packet)  // Do something with a packet here.
-   }
- }
-
-Reading Live Packets
-
-The following code can be used to read in data from a live device, in this case
-"eth0".
-
- if handle, err := pcap.OpenLive("eth0", 1600, true, pcap.BlockForever); err != nil {
-   panic(err)
- } else if err := handle.SetBPFFilter("tcp and port 80"); err != nil {  // optional
-   panic(err)
- } else {
-   packetSource := gopacket.NewPacketSource(handle, handle.LinkType())
-   for packet := range packetSource.Packets() {
-     handlePacket(packet)  // Do something with a packet here.
-   }
- }
-
-Inactive Handles
-
-Newer PCAP functionality requires the concept of an 'inactive' PCAP handle.
-Instead of constantly adding new arguments to pcap_open_live, users now call
-pcap_create to create a handle, set it up with a bunch of optional function
-calls, then call pcap_activate to activate it.  This library mirrors that
-mechanism, for those that want to expose/use these new features:
-
-  inactive, err := pcap.NewInactiveHandle(deviceName)
-  if err != nil {
-    log.Fatal(err)
-  }
-  defer inactive.CleanUp()
-
-  // Call various functions on inactive to set it up the way you'd like:
-  if err = inactive.SetTimeout(time.Minute); err != nil {
-    log.Fatal(err)
-  } else if err = inactive.SetTimestampSource("foo"); err != nil {
-    log.Fatal(err)
-  }
-
-  // Finally, create the actual handle by calling Activate:
-  handle, err := inactive.Activate()  // after this, inactive is no longer valid
-  if err != nil {
-    log.Fatal(err)
-  }
-  defer handle.Close()
-
-  // Now use your handle as you see fit.
-
-PCAP Timeouts
-
-pcap.OpenLive and pcap.SetTimeout both take timeouts.
-If you don't care about timeouts, just pass in BlockForever,
-which should do what you expect with minimal fuss.
-
-A timeout of 0 is not recommended.  Some platforms, like Macs
-(http://www.manpages.info/macosx/pcap.3.html) say:
-  The read timeout is used to arrange that the read not necessarily return
-  immediately when a packet is seen, but that it wait for some amount of time
-  to allow more packets to arrive and to read multiple packets from the OS
-  kernel in one operation.
-This means that if you only capture one packet, the kernel might decide to wait
-'timeout' for more packets to batch with it before returning.  A timeout of
-0, then, means 'wait forever for more packets', which is... not good.
-
-To get around this, we've introduced the following behavior:  if a negative
-timeout is passed in, we set the positive timeout in the handle, then loop
-internally in ReadPacketData/ZeroCopyReadPacketData when we see timeout
-errors.
-
-PCAP File Writing
-
-This package does not implement PCAP file writing.  However, gopacket/pcapgo
-does!  Look there if you'd like to write PCAP files.
-
-Note For Windows 10 Users
-
-If you're trying to use 64-bit winpcap on Windows 10, you might have to do
-the crazy hijinks detailed at
-http://stackoverflow.com/questions/38047858/compile-gopacket-on-windows-64bit
-*/
-package pcap
diff --git a/vendor/github.com/google/gopacket/pcap/gopacket_benchmark/benchmark.go b/vendor/github.com/google/gopacket/pcap/gopacket_benchmark/benchmark.go
deleted file mode 100644 (file)
index cbcae17..0000000
+++ /dev/null
@@ -1,247 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// This benchmark reads in file <tempdir>/gopacket_benchmark.pcap and measures
-// the time it takes to decode all packets from that file.  If the file doesn't
-// exist, it's pulled down from a publicly available location.  However, you can
-// feel free to substitute your own file at that location, in which case the
-// benchmark will run on your own data.
-//
-// It's also useful for figuring out which packets may be causing errors.  Pass
-// in the --printErrors flag, and it'll print out error layers for each packet
-// that has them.  This includes any packets that it's just unable to decode,
-// which is a great way to find new protocols to decode, and get test packets to
-// write tests for them.
-package main
-
-import (
-       "compress/gzip"
-       "encoding/hex"
-       "flag"
-       "fmt"
-       "github.com/google/gopacket"
-       "github.com/google/gopacket/layers"
-       "github.com/google/gopacket/pcap"
-       "github.com/google/gopacket/tcpassembly"
-       "io"
-       "io/ioutil"
-       "net/http"
-       "os"
-       "runtime"
-       "runtime/pprof"
-       "time"
-)
-
-var decodeLazy *bool = flag.Bool("lazy", false, "If true, use lazy decoding")
-var decodeNoCopy *bool = flag.Bool("nocopy", true, "If true, avoid an extra copy when decoding packets")
-var printErrors *bool = flag.Bool("printErrors", false, "If true, check for and print error layers.")
-var printLayers *bool = flag.Bool("printLayers", false, "If true, print out the layers of each packet")
-var repeat *int = flag.Int("repeat", 5, "Read over the file N times")
-var cpuProfile *string = flag.String("cpuprofile", "", "If set, write CPU profile to filename")
-var url *string = flag.String("url", "http://www.ll.mit.edu/mission/communications/cyber/CSTcorpora/ideval/data/1999/training/week1/tuesday/inside.tcpdump.gz", "URL to gzip'd pcap file")
-
-type BufferPacketSource struct {
-       index int
-       data  [][]byte
-       ci    []gopacket.CaptureInfo
-}
-
-func NewBufferPacketSource(p gopacket.PacketDataSource) *BufferPacketSource {
-       start := time.Now()
-       b := &BufferPacketSource{}
-       for {
-               data, ci, err := p.ReadPacketData()
-               if err == io.EOF {
-                       break
-               }
-               b.data = append(b.data, data)
-               b.ci = append(b.ci, ci)
-       }
-       duration := time.Since(start)
-       fmt.Printf("Reading packet data into memory: %d packets in %v, %v per packet\n", len(b.data), duration, duration/time.Duration(len(b.data)))
-       return b
-}
-
-func (b *BufferPacketSource) ReadPacketData() (data []byte, ci gopacket.CaptureInfo, err error) {
-       if b.index >= len(b.data) {
-               err = io.EOF
-               return
-       }
-       data = b.data[b.index]
-       ci = b.ci[b.index]
-       b.index++
-       return
-}
-
-func (b *BufferPacketSource) Reset() {
-       runtime.GC()
-       b.index = 0
-}
-
-func main() {
-       flag.Parse()
-       filename := os.TempDir() + string(os.PathSeparator) + "gopacket_benchmark.pcap"
-       if _, err := os.Stat(filename); err != nil {
-               // This URL points to a publicly available packet data set from a DARPA
-               // intrusion detection evaluation.  See
-               // http://www.ll.mit.edu/mission/communications/cyber/CSTcorpora/ideval/data/1999/training/week1/index.html
-               // for more details.
-               fmt.Println("Local pcap file", filename, "doesn't exist, reading from", *url)
-               if resp, err := http.Get(*url); err != nil {
-                       panic(err)
-               } else if out, err := os.Create(filename); err != nil {
-                       panic(err)
-               } else if gz, err := gzip.NewReader(resp.Body); err != nil {
-                       panic(err)
-               } else if n, err := io.Copy(out, gz); err != nil {
-                       panic(err)
-               } else if err := gz.Close(); err != nil {
-                       panic(err)
-               } else if err := out.Close(); err != nil {
-                       panic(err)
-               } else {
-                       fmt.Println("Successfully read", n, "bytes from url, unzipped to local storage")
-               }
-       }
-       fmt.Println("Reading file once through to hopefully cache most of it")
-       if f, err := os.Open(filename); err != nil {
-               panic(err)
-       } else if n, err := io.Copy(ioutil.Discard, f); err != nil {
-               panic(err)
-       } else if err := f.Close(); err != nil {
-               panic(err)
-       } else {
-               fmt.Println("Read in file", filename, ", total of", n, "bytes")
-       }
-       if *cpuProfile != "" {
-               if cpu, err := os.Create(*cpuProfile); err != nil {
-                       panic(err)
-               } else if err := pprof.StartCPUProfile(cpu); err != nil {
-                       panic(err)
-               } else {
-                       defer func() {
-                               pprof.StopCPUProfile()
-                               cpu.Close()
-                       }()
-               }
-       }
-       var packetDataSource *BufferPacketSource
-       var packetSource *gopacket.PacketSource
-       fmt.Printf("Opening file %q for read\n", filename)
-       if h, err := pcap.OpenOffline(filename); err != nil {
-               panic(err)
-       } else {
-               fmt.Println("Reading all packets into memory with BufferPacketSource.")
-               start := time.Now()
-               packetDataSource = NewBufferPacketSource(h)
-               duration := time.Since(start)
-               fmt.Printf("Time to read packet data into memory from file: %v\n", duration)
-               packetSource = gopacket.NewPacketSource(packetDataSource, h.LinkType())
-               packetSource.DecodeOptions.Lazy = *decodeLazy
-               packetSource.DecodeOptions.NoCopy = *decodeNoCopy
-       }
-       fmt.Println()
-       for i := 0; i < *repeat; i++ {
-               packetDataSource.Reset()
-               fmt.Printf("Benchmarking decode %d/%d\n", i+1, *repeat)
-               benchmarkPacketDecode(packetSource)
-       }
-       fmt.Println()
-       for i := 0; i < *repeat; i++ {
-               packetDataSource.Reset()
-               fmt.Printf("Benchmarking decoding layer parser %d/%d\n", i+1, *repeat)
-               benchmarkLayerDecode(packetDataSource, false)
-       }
-       fmt.Println()
-       for i := 0; i < *repeat; i++ {
-               packetDataSource.Reset()
-               fmt.Printf("Benchmarking decoding layer parser with assembly %d/%d\n", i+1, *repeat)
-               benchmarkLayerDecode(packetDataSource, true)
-       }
-}
-
-func benchmarkPacketDecode(packetSource *gopacket.PacketSource) {
-       count, errors := 0, 0
-       start := time.Now()
-       for packet, err := packetSource.NextPacket(); err != io.EOF; packet, err = packetSource.NextPacket() {
-               if err != nil {
-                       fmt.Println("Error reading in packet:", err)
-                       continue
-               }
-               count++
-               var hasError bool
-               if *printErrors && packet.ErrorLayer() != nil {
-                       fmt.Println("\n\n\nError decoding packet:", packet.ErrorLayer().Error())
-                       fmt.Println(hex.Dump(packet.Data()))
-                       fmt.Printf("%#v\n", packet.Data())
-                       errors++
-                       hasError = true
-               }
-               if *printLayers || hasError {
-                       fmt.Printf("\n=== PACKET %d ===\n", count)
-                       for _, l := range packet.Layers() {
-                               fmt.Printf("--- LAYER %v ---\n%#v\n\n", l.LayerType(), l)
-                       }
-                       fmt.Println()
-               }
-       }
-       duration := time.Since(start)
-       fmt.Printf("\tRead in %v packets in %v, %v per packet\n", count, duration, duration/time.Duration(count))
-       if *printErrors {
-               fmt.Printf("%v errors, successfully decoded %.02f%%\n", errors, float64(count-errors)*100.0/float64(count))
-       }
-}
-
-type streamFactory struct {
-}
-
-func (s *streamFactory) New(netFlow, tcpFlow gopacket.Flow) tcpassembly.Stream {
-       return s
-}
-func (s *streamFactory) Reassembled([]tcpassembly.Reassembly) {
-}
-func (s *streamFactory) ReassemblyComplete() {
-}
-
-func benchmarkLayerDecode(source *BufferPacketSource, assemble bool) {
-       var tcp layers.TCP
-       var ip layers.IPv4
-       var eth layers.Ethernet
-       var udp layers.UDP
-       var icmp layers.ICMPv4
-       var payload gopacket.Payload
-       parser := gopacket.NewDecodingLayerParser(
-               layers.LayerTypeEthernet,
-               &eth, &ip, &icmp, &tcp, &udp, &payload)
-       pool := tcpassembly.NewStreamPool(&streamFactory{})
-       assembler := tcpassembly.NewAssembler(pool)
-       var decoded []gopacket.LayerType
-       start := time.Now()
-       packets, decodedlayers, assembled := 0, 0, 0
-       for {
-               packets++
-               data, ci, err := source.ReadPacketData()
-               if err == io.EOF {
-                       break
-               } else if err != nil {
-                       fmt.Println("Error reading packet: ", err)
-                       continue
-               }
-               err = parser.DecodeLayers(data, &decoded)
-               for _, typ := range decoded {
-                       decodedlayers++
-                       if typ == layers.LayerTypeTCP && assemble {
-                               assembled++
-                               assembler.AssembleWithTimestamp(ip.NetworkFlow(), &tcp, ci.Timestamp)
-                       }
-               }
-       }
-       if assemble {
-               assembler.FlushAll()
-       }
-       duration := time.Since(start)
-       fmt.Printf("\tRead in %d packets in %v, decoded %v layers, assembled %v packets: %v per packet\n", packets, duration, decodedlayers, assembled, duration/time.Duration(packets))
-}
diff --git a/vendor/github.com/google/gopacket/pcap/pcap.go b/vendor/github.com/google/gopacket/pcap/pcap.go
deleted file mode 100644 (file)
index 1ecdf03..0000000
+++ /dev/null
@@ -1,1005 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-// Copyright 2009-2011 Andreas Krennmair. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package pcap
-
-/*
-#cgo solaris LDFLAGS: -L /opt/local/lib -lpcap
-#cgo linux LDFLAGS: -lpcap
-#cgo dragonfly LDFLAGS: -lpcap
-#cgo freebsd LDFLAGS: -lpcap
-#cgo openbsd LDFLAGS: -lpcap
-#cgo netbsd LDFLAGS: -lpcap
-#cgo darwin LDFLAGS: -lpcap
-#cgo windows CFLAGS: -I C:/WpdPack/Include
-#cgo windows,386 LDFLAGS: -L C:/WpdPack/Lib -lwpcap
-#cgo windows,amd64 LDFLAGS: -L C:/WpdPack/Lib/x64 -lwpcap
-#include <stdlib.h>
-#include <pcap.h>
-
-// Some old versions of pcap don't define this constant.
-#ifndef PCAP_NETMASK_UNKNOWN
-#define PCAP_NETMASK_UNKNOWN 0xffffffff
-#endif
-
-// libpcap doesn't actually export its version in a #define-guardable way,
-// so we have to use other defined things to differentiate versions.
-// We assume at least libpcap v1.1 at the moment.
-// See http://upstream-tracker.org/versions/libpcap.html
-
-#ifndef PCAP_ERROR_TSTAMP_PRECISION_NOTSUP  // < v1.5
-
-int pcap_set_immediate_mode(pcap_t *p, int mode) {
-  return PCAP_ERROR;
-}
-
-#ifndef PCAP_TSTAMP_HOST  // < v1.2
-
-int pcap_set_tstamp_type(pcap_t* p, int t) { return -1; }
-int pcap_list_tstamp_types(pcap_t* p, int** t) { return 0; }
-void pcap_free_tstamp_types(int *tstamp_types) {}
-const char* pcap_tstamp_type_val_to_name(int t) {
-       return "pcap timestamp types not supported";
-}
-int pcap_tstamp_type_name_to_val(const char* t) {
-       return PCAP_ERROR;
-}
-
-#endif  // < v1.2
-#endif  // < v1.5
-
-#ifndef PCAP_ERROR_PROMISC_PERM_DENIED
-#define PCAP_ERROR_PROMISC_PERM_DENIED -11
-#endif
-
-// WinPcap doesn't export a pcap_statustostr, so use the less-specific
-// pcap_strerror.  Note that linking against something like cygwin libpcap
-// may result is less-specific error messages.
-#ifdef WIN32
-#define pcap_statustostr pcap_strerror
-
-// WinPcap also doesn't export pcap_can_set_rfmon and pcap_set_rfmon,
-// as those are handled by separate libraries (airpcap).
-// https://www.winpcap.org/docs/docs_412/html/group__wpcapfunc.html
-// Stub out those functions here, returning values that indicate rfmon
-// setting is unavailable/unsuccessful.
-int pcap_can_set_rfmon(pcap_t *p) {
-       return 0;
-}
-
-int pcap_set_rfmon(pcap_t *p, int rfmon) {
-       return PCAP_ERROR;
-}
-#endif
-
-// Windows, Macs, and Linux all use different time types.  Joy.
-#ifdef WIN32
-#define gopacket_time_secs_t long
-#define gopacket_time_usecs_t long
-#elif __APPLE__
-#define gopacket_time_secs_t __darwin_time_t
-#define gopacket_time_usecs_t __darwin_suseconds_t
-#elif __GLIBC__
-#define gopacket_time_secs_t __time_t
-#define gopacket_time_usecs_t __suseconds_t
-#else  // Some form of linux/bsd/etc...
-#include <sys/param.h>
-#ifdef __OpenBSD__
-#define gopacket_time_secs_t u_int32_t
-#define gopacket_time_usecs_t u_int32_t
-#else
-#define gopacket_time_secs_t time_t
-#define gopacket_time_usecs_t suseconds_t
-#endif
-#endif
-*/
-import "C"
-
-import (
-       "errors"
-       "fmt"
-       "io"
-       "net"
-       "reflect"
-       "runtime"
-       "strconv"
-       "sync"
-       "sync/atomic"
-       "syscall"
-       "time"
-       "unsafe"
-
-       "github.com/google/gopacket"
-       "github.com/google/gopacket/layers"
-)
-
-const errorBufferSize = 256
-
-// MaxBpfInstructions is the maximum number of BPF instructions supported (BPF_MAXINSNS),
-// taken from Linux kernel: include/uapi/linux/bpf_common.h
-//
-// https://github.com/torvalds/linux/blob/master/include/uapi/linux/bpf_common.h
-const MaxBpfInstructions = 4096
-
-// 8 bytes per instruction, max 4096 instructions
-const bpfInstructionBufferSize = 8 * MaxBpfInstructions
-
-// Handle provides a connection to a pcap handle, allowing users to read packets
-// off the wire (Next), inject packets onto the wire (Inject), and
-// perform a number of other functions to affect and understand packet output.
-//
-// Handles are already pcap_activate'd
-type Handle struct {
-       // cptr is the handle for the actual pcap C object.
-       cptr        *C.pcap_t
-       timeout     time.Duration
-       device      string
-       deviceIndex int
-       mu          sync.Mutex
-       closeMu     sync.Mutex
-       // stop is set to a non-zero value by Handle.Close to signal to
-       // getNextBufPtrLocked to stop trying to read packets
-       stop uint64
-
-       // Since pointers to these objects are passed into a C function, if
-       // they're declared locally then the Go compiler thinks they may have
-       // escaped into C-land, so it allocates them on the heap.  This causes a
-       // huge memory hit, so to handle that we store them here instead.
-       pkthdr *C.struct_pcap_pkthdr
-       bufptr *C.u_char
-}
-
-// Stats contains statistics on how many packets were handled by a pcap handle,
-// and what was done with those packets.
-type Stats struct {
-       PacketsReceived  int
-       PacketsDropped   int
-       PacketsIfDropped int
-}
-
-// Interface describes a single network interface on a machine.
-type Interface struct {
-       Name        string
-       Description string
-       Addresses   []InterfaceAddress
-       // TODO: add more elements
-}
-
-// Datalink describes the datalink
-type Datalink struct {
-       Name        string
-       Description string
-}
-
-// InterfaceAddress describes an address associated with an Interface.
-// Currently, it's IPv4/6 specific.
-type InterfaceAddress struct {
-       IP      net.IP
-       Netmask net.IPMask // Netmask may be nil if we were unable to retrieve it.
-       // TODO: add broadcast + PtP dst ?
-}
-
-// BPF is a compiled filter program, useful for offline packet matching.
-type BPF struct {
-       orig string
-       bpf  _Ctype_struct_bpf_program // takes a finalizer, not overriden by outsiders
-}
-
-// BPFInstruction is a byte encoded structure holding a BPF instruction
-type BPFInstruction struct {
-       Code uint16
-       Jt   uint8
-       Jf   uint8
-       K    uint32
-}
-
-// BlockForever causes it to block forever waiting for packets, when passed
-// into SetTimeout or OpenLive, while still returning incoming packets to userland relatively
-// quickly.
-const BlockForever = -time.Millisecond * 10
-
-func timeoutMillis(timeout time.Duration) C.int {
-       // Flip sign if necessary.  See package docs on timeout for reasoning behind this.
-       if timeout < 0 {
-               timeout *= -1
-       }
-       // Round up
-       if timeout != 0 && timeout < time.Millisecond {
-               timeout = time.Millisecond
-       }
-       return C.int(timeout / time.Millisecond)
-}
-
-// OpenLive opens a device and returns a *Handle.
-// It takes as arguments the name of the device ("eth0"), the maximum size to
-// read for each packet (snaplen), whether to put the interface in promiscuous
-// mode, and a timeout.
-//
-// See the package documentation for important details regarding 'timeout'.
-func OpenLive(device string, snaplen int32, promisc bool, timeout time.Duration) (handle *Handle, _ error) {
-       buf := (*C.char)(C.calloc(errorBufferSize, 1))
-       defer C.free(unsafe.Pointer(buf))
-
-       var pro C.int
-       if promisc {
-               pro = 1
-       }
-       p := &Handle{timeout: timeout, device: device}
-
-       ifc, err := net.InterfaceByName(device)
-       if err != nil {
-               // The device wasn't found in the OS, but could be "any"
-               // Set index to 0
-               p.deviceIndex = 0
-       } else {
-               p.deviceIndex = ifc.Index
-       }
-
-       dev := C.CString(device)
-       defer C.free(unsafe.Pointer(dev))
-
-       p.cptr = C.pcap_open_live(dev, C.int(snaplen), pro, timeoutMillis(timeout), buf)
-       if p.cptr == nil {
-               return nil, errors.New(C.GoString(buf))
-       }
-
-       if err := p.openLive(); err != nil {
-               C.pcap_close(p.cptr)
-               return nil, err
-       }
-
-       return p, nil
-}
-
-// OpenOffline opens a file and returns its contents as a *Handle.
-func OpenOffline(file string) (handle *Handle, err error) {
-       buf := (*C.char)(C.calloc(errorBufferSize, 1))
-       defer C.free(unsafe.Pointer(buf))
-       cf := C.CString(file)
-       defer C.free(unsafe.Pointer(cf))
-
-       cptr := C.pcap_open_offline(cf, buf)
-       if cptr == nil {
-               return nil, errors.New(C.GoString(buf))
-       }
-       return &Handle{cptr: cptr}, nil
-}
-
-// NextError is the return code from a call to Next.
-type NextError int32
-
-// NextError implements the error interface.
-func (n NextError) Error() string {
-       switch n {
-       case NextErrorOk:
-               return "OK"
-       case NextErrorTimeoutExpired:
-               return "Timeout Expired"
-       case NextErrorReadError:
-               return "Read Error"
-       case NextErrorNoMorePackets:
-               return "No More Packets In File"
-       case NextErrorNotActivated:
-               return "Not Activated"
-       }
-       return strconv.Itoa(int(n))
-}
-
-// NextError values.
-const (
-       NextErrorOk             NextError = 1
-       NextErrorTimeoutExpired NextError = 0
-       NextErrorReadError      NextError = -1
-       // NextErrorNoMorePackets is returned when reading from a file (OpenOffline) and
-       // EOF is reached.  When this happens, Next() returns io.EOF instead of this.
-       NextErrorNoMorePackets NextError = -2
-       NextErrorNotActivated  NextError = -3
-)
-
-// ReadPacketData returns the next packet read from the pcap handle, along with an error
-// code associated with that packet.  If the packet is read successfully, the
-// returned error is nil.
-func (p *Handle) ReadPacketData() (data []byte, ci gopacket.CaptureInfo, err error) {
-       p.mu.Lock()
-       err = p.getNextBufPtrLocked(&ci)
-       if err == nil {
-               data = C.GoBytes(unsafe.Pointer(p.bufptr), C.int(ci.CaptureLength))
-       }
-       p.mu.Unlock()
-       if err == NextErrorTimeoutExpired {
-               runtime.Gosched()
-       }
-       return
-}
-
-type activateError C.int
-
-const (
-       aeNoError      = 0
-       aeActivated    = C.PCAP_ERROR_ACTIVATED
-       aePromisc      = C.PCAP_WARNING_PROMISC_NOTSUP
-       aeNoSuchDevice = C.PCAP_ERROR_NO_SUCH_DEVICE
-       aeDenied       = C.PCAP_ERROR_PERM_DENIED
-       aeNotUp        = C.PCAP_ERROR_IFACE_NOT_UP
-)
-
-func (a activateError) Error() string {
-       switch a {
-       case aeNoError:
-               return "No Error"
-       case aeActivated:
-               return "Already Activated"
-       case aePromisc:
-               return "Cannot set as promisc"
-       case aeNoSuchDevice:
-               return "No Such Device"
-       case aeDenied:
-               return "Permission Denied"
-       case aeNotUp:
-               return "Interface Not Up"
-       default:
-               return fmt.Sprintf("unknown activated error: %d", a)
-       }
-}
-
-// getNextBufPtrLocked is shared code for ReadPacketData and
-// ZeroCopyReadPacketData.
-func (p *Handle) getNextBufPtrLocked(ci *gopacket.CaptureInfo) error {
-       if p.cptr == nil {
-               return io.EOF
-       }
-
-       for atomic.LoadUint64(&p.stop) == 0 {
-               // try to read a packet if one is immediately available
-               result := NextError(C.pcap_next_ex(p.cptr, &p.pkthdr, &p.bufptr))
-
-               switch result {
-               case NextErrorOk:
-                       // got a packet, set capture info and return
-                       sec := int64(p.pkthdr.ts.tv_sec)
-                       // convert micros to nanos
-                       nanos := int64(p.pkthdr.ts.tv_usec) * 1000
-
-                       ci.Timestamp = time.Unix(sec, nanos)
-                       ci.CaptureLength = int(p.pkthdr.caplen)
-                       ci.Length = int(p.pkthdr.len)
-                       ci.InterfaceIndex = p.deviceIndex
-
-                       return nil
-               case NextErrorNoMorePackets:
-                       // no more packets, return EOF rather than libpcap-specific error
-                       return io.EOF
-               case NextErrorTimeoutExpired:
-                       // Negative timeout means to loop forever, instead of actually returning
-                       // the timeout error.
-                       if p.timeout < 0 {
-                               // must have had a timeout... wait before trying again
-                               p.waitForPacket()
-                               continue
-                       }
-               default:
-                       return result
-               }
-       }
-
-       // stop must be set
-       return io.EOF
-}
-
-// ZeroCopyReadPacketData reads the next packet off the wire, and returns its data.
-// The slice returned by ZeroCopyReadPacketData points to bytes owned by the
-// the Handle.  Each call to ZeroCopyReadPacketData invalidates any data previously
-// returned by ZeroCopyReadPacketData.  Care must be taken not to keep pointers
-// to old bytes when using ZeroCopyReadPacketData... if you need to keep data past
-// the next time you call ZeroCopyReadPacketData, use ReadPacketData, which copies
-// the bytes into a new buffer for you.
-//  data1, _, _ := handle.ZeroCopyReadPacketData()
-//  // do everything you want with data1 here, copying bytes out of it if you'd like to keep them around.
-//  data2, _, _ := handle.ZeroCopyReadPacketData()  // invalidates bytes in data1
-func (p *Handle) ZeroCopyReadPacketData() (data []byte, ci gopacket.CaptureInfo, err error) {
-       p.mu.Lock()
-       err = p.getNextBufPtrLocked(&ci)
-       if err == nil {
-               slice := (*reflect.SliceHeader)(unsafe.Pointer(&data))
-               slice.Data = uintptr(unsafe.Pointer(p.bufptr))
-               slice.Len = ci.CaptureLength
-               slice.Cap = ci.CaptureLength
-       }
-       p.mu.Unlock()
-       if err == NextErrorTimeoutExpired {
-               runtime.Gosched()
-       }
-       return
-}
-
-// Close closes the underlying pcap handle.
-func (p *Handle) Close() {
-       p.closeMu.Lock()
-       defer p.closeMu.Unlock()
-
-       if p.cptr == nil {
-               return
-       }
-
-       atomic.StoreUint64(&p.stop, 1)
-
-       // wait for packet reader to stop
-       p.mu.Lock()
-       defer p.mu.Unlock()
-
-       C.pcap_close(p.cptr)
-       p.cptr = nil
-}
-
-// Error returns the current error associated with a pcap handle (pcap_geterr).
-func (p *Handle) Error() error {
-       return errors.New(C.GoString(C.pcap_geterr(p.cptr)))
-}
-
-// Stats returns statistics on the underlying pcap handle.
-func (p *Handle) Stats() (stat *Stats, err error) {
-       var cstats _Ctype_struct_pcap_stat
-       if -1 == C.pcap_stats(p.cptr, &cstats) {
-               return nil, p.Error()
-       }
-       return &Stats{
-               PacketsReceived:  int(cstats.ps_recv),
-               PacketsDropped:   int(cstats.ps_drop),
-               PacketsIfDropped: int(cstats.ps_ifdrop),
-       }, nil
-}
-
-// ListDataLinks obtains a list of all possible data link types supported for an interface.
-func (p *Handle) ListDataLinks() (datalinks []Datalink, err error) {
-       var dltbuf *C.int
-
-       n := int(C.pcap_list_datalinks(p.cptr, &dltbuf))
-       if -1 == n {
-               return nil, p.Error()
-       }
-
-       defer C.pcap_free_datalinks(dltbuf)
-
-       datalinks = make([]Datalink, n)
-
-       dltArray := (*[100]C.int)(unsafe.Pointer(dltbuf))
-
-       for i := 0; i < n; i++ {
-               expr := C.pcap_datalink_val_to_name((*dltArray)[i])
-               datalinks[i].Name = C.GoString(expr)
-
-               expr = C.pcap_datalink_val_to_description((*dltArray)[i])
-               datalinks[i].Description = C.GoString(expr)
-       }
-
-       return datalinks, nil
-}
-
-// pcap_compile is NOT thread-safe, so protect it.
-var pcapCompileMu sync.Mutex
-
-// compileBPFFilter always returns an allocated _Ctype_struct_bpf_program
-// It is the callers responsibility to free the memory again, e.g.
-//
-//    C.pcap_freecode(&bpf)
-//
-func (p *Handle) compileBPFFilter(expr string) (_Ctype_struct_bpf_program, error) {
-       errorBuf := (*C.char)(C.calloc(errorBufferSize, 1))
-       defer C.free(unsafe.Pointer(errorBuf))
-
-       var netp uint32
-       var maskp uint32
-
-       // Only do the lookup on network interfaces.
-       // No device indicates we're handling a pcap file.
-       if len(p.device) > 0 {
-               dev := C.CString(p.device)
-               defer C.free(unsafe.Pointer(dev))
-               if -1 == C.pcap_lookupnet(
-                       dev,
-                       (*C.bpf_u_int32)(unsafe.Pointer(&netp)),
-                       (*C.bpf_u_int32)(unsafe.Pointer(&maskp)),
-                       errorBuf,
-               ) {
-                       // We can't lookup the network, but that could be because the interface
-                       // doesn't have an IPv4.
-               }
-       }
-
-       var bpf _Ctype_struct_bpf_program
-       cexpr := C.CString(expr)
-       defer C.free(unsafe.Pointer(cexpr))
-
-       pcapCompileMu.Lock()
-       defer pcapCompileMu.Unlock()
-       if -1 == C.pcap_compile(p.cptr, &bpf, cexpr, 1, C.bpf_u_int32(maskp)) {
-               return bpf, p.Error()
-       }
-
-       return bpf, nil
-}
-
-// CompileBPFFilter compiles and returns a BPF filter with given a link type and capture length.
-func CompileBPFFilter(linkType layers.LinkType, captureLength int, expr string) ([]BPFInstruction, error) {
-       cptr := C.pcap_open_dead(C.int(linkType), C.int(captureLength))
-       if cptr == nil {
-               return nil, errors.New("error opening dead capture")
-       }
-
-       h := Handle{cptr: cptr}
-       defer h.Close()
-       return h.CompileBPFFilter(expr)
-}
-
-// CompileBPFFilter compiles and returns a BPF filter for the pcap handle.
-func (p *Handle) CompileBPFFilter(expr string) ([]BPFInstruction, error) {
-       bpf, err := p.compileBPFFilter(expr)
-       defer C.pcap_freecode(&bpf)
-       if err != nil {
-               return nil, err
-       }
-
-       bpfInsn := (*[bpfInstructionBufferSize]_Ctype_struct_bpf_insn)(unsafe.Pointer(bpf.bf_insns))[0:bpf.bf_len:bpf.bf_len]
-       bpfInstruction := make([]BPFInstruction, len(bpfInsn), len(bpfInsn))
-
-       for i, v := range bpfInsn {
-               bpfInstruction[i].Code = uint16(v.code)
-               bpfInstruction[i].Jt = uint8(v.jt)
-               bpfInstruction[i].Jf = uint8(v.jf)
-               bpfInstruction[i].K = uint32(v.k)
-       }
-
-       return bpfInstruction, nil
-}
-
-// SetBPFFilter compiles and sets a BPF filter for the pcap handle.
-func (p *Handle) SetBPFFilter(expr string) (err error) {
-       bpf, err := p.compileBPFFilter(expr)
-       defer C.pcap_freecode(&bpf)
-       if err != nil {
-               return err
-       }
-
-       if -1 == C.pcap_setfilter(p.cptr, &bpf) {
-               return p.Error()
-       }
-
-       return nil
-}
-
-// SetBPFInstructionFilter may be used to apply a filter in BPF asm byte code format.
-//
-// Simplest way to generate BPF asm byte code is with tcpdump:
-//     tcpdump -dd 'udp'
-//
-// The output may be used directly to add a filter, e.g.:
-//     bpfInstructions := []pcap.BpfInstruction{
-//                     {0x28, 0, 0, 0x0000000c},
-//                     {0x15, 0, 9, 0x00000800},
-//                     {0x30, 0, 0, 0x00000017},
-//                     {0x15, 0, 7, 0x00000006},
-//                     {0x28, 0, 0, 0x00000014},
-//                     {0x45, 5, 0, 0x00001fff},
-//                     {0xb1, 0, 0, 0x0000000e},
-//                     {0x50, 0, 0, 0x0000001b},
-//                     {0x54, 0, 0, 0x00000012},
-//                     {0x15, 0, 1, 0x00000012},
-//                     {0x6, 0, 0, 0x0000ffff},
-//                     {0x6, 0, 0, 0x00000000},
-//             }
-//
-// An other posibility is to write the bpf code in bpf asm.
-// Documentation: https://www.kernel.org/doc/Documentation/networking/filter.txt
-//
-// To compile the code use bpf_asm from
-// https://github.com/torvalds/linux/tree/master/tools/net
-//
-// The following command may be used to convert bpf_asm output to c/go struct, usable for SetBPFFilterByte:
-// bpf_asm -c tcp.bpf
-func (p *Handle) SetBPFInstructionFilter(bpfInstructions []BPFInstruction) (err error) {
-       bpf, err := bpfInstructionFilter(bpfInstructions)
-       if err != nil {
-               return err
-       }
-
-       if -1 == C.pcap_setfilter(p.cptr, &bpf) {
-               C.pcap_freecode(&bpf)
-               return p.Error()
-       }
-
-       C.pcap_freecode(&bpf)
-
-       return nil
-}
-func bpfInstructionFilter(bpfInstructions []BPFInstruction) (bpf _Ctype_struct_bpf_program, err error) {
-       if len(bpfInstructions) < 1 {
-               return bpf, errors.New("bpfInstructions must not be empty")
-       }
-
-       if len(bpfInstructions) > MaxBpfInstructions {
-               return bpf, fmt.Errorf("bpfInstructions must not be larger than %d", MaxBpfInstructions)
-       }
-
-       bpf.bf_len = C.u_int(len(bpfInstructions))
-       cbpfInsns := C.calloc(C.size_t(len(bpfInstructions)), C.size_t(unsafe.Sizeof(bpfInstructions[0])))
-
-       copy((*[bpfInstructionBufferSize]BPFInstruction)(cbpfInsns)[0:len(bpfInstructions)], bpfInstructions)
-       bpf.bf_insns = (*_Ctype_struct_bpf_insn)(cbpfInsns)
-
-       return
-}
-
-// NewBPF compiles the given string into a new filter program.
-//
-// BPF filters need to be created from activated handles, because they need to
-// know the underlying link type to correctly compile their offsets.
-func (p *Handle) NewBPF(expr string) (*BPF, error) {
-       bpf := &BPF{orig: expr}
-       cexpr := C.CString(expr)
-       defer C.free(unsafe.Pointer(cexpr))
-
-       pcapCompileMu.Lock()
-       defer pcapCompileMu.Unlock()
-       if C.pcap_compile(p.cptr, &bpf.bpf, cexpr /* optimize */, 1, C.PCAP_NETMASK_UNKNOWN) != 0 {
-               return nil, p.Error()
-       }
-
-       runtime.SetFinalizer(bpf, destroyBPF)
-       return bpf, nil
-}
-
-// NewBPFInstructionFilter sets the given BPFInstructions as new filter program.
-//
-// More details see func SetBPFInstructionFilter
-//
-// BPF filters need to be created from activated handles, because they need to
-// know the underlying link type to correctly compile their offsets.
-func (p *Handle) NewBPFInstructionFilter(bpfInstructions []BPFInstruction) (*BPF, error) {
-       var err error
-       bpf := &BPF{orig: "BPF Instruction Filter"}
-
-       bpf.bpf, err = bpfInstructionFilter(bpfInstructions)
-       if err != nil {
-               return nil, err
-       }
-
-       runtime.SetFinalizer(bpf, destroyBPF)
-       return bpf, nil
-}
-func destroyBPF(bpf *BPF) {
-       C.pcap_freecode(&bpf.bpf)
-}
-
-// String returns the original string this BPF filter was compiled from.
-func (b *BPF) String() string {
-       return b.orig
-}
-
-// Matches returns true if the given packet data matches this filter.
-func (b *BPF) Matches(ci gopacket.CaptureInfo, data []byte) bool {
-       var hdr C.struct_pcap_pkthdr
-       hdr.ts.tv_sec = C.gopacket_time_secs_t(ci.Timestamp.Unix())
-       hdr.ts.tv_usec = C.gopacket_time_usecs_t(ci.Timestamp.Nanosecond() / 1000)
-       hdr.caplen = C.bpf_u_int32(len(data)) // Trust actual length over ci.Length.
-       hdr.len = C.bpf_u_int32(ci.Length)
-       dataptr := (*C.u_char)(unsafe.Pointer(&data[0]))
-       return C.pcap_offline_filter(&b.bpf, &hdr, dataptr) != 0
-}
-
-// Version returns pcap_lib_version.
-func Version() string {
-       return C.GoString(C.pcap_lib_version())
-}
-
-// LinkType returns pcap_datalink, as a layers.LinkType.
-func (p *Handle) LinkType() layers.LinkType {
-       return layers.LinkType(C.pcap_datalink(p.cptr))
-}
-
-// SetLinkType calls pcap_set_datalink on the pcap handle.
-func (p *Handle) SetLinkType(dlt layers.LinkType) error {
-       if -1 == C.pcap_set_datalink(p.cptr, C.int(dlt)) {
-               return p.Error()
-       }
-       return nil
-}
-
-// FindAllDevs attempts to enumerate all interfaces on the current machine.
-func FindAllDevs() (ifs []Interface, err error) {
-       var buf *C.char
-       buf = (*C.char)(C.calloc(errorBufferSize, 1))
-       defer C.free(unsafe.Pointer(buf))
-       var alldevsp *C.pcap_if_t
-
-       if -1 == C.pcap_findalldevs((**C.pcap_if_t)(&alldevsp), buf) {
-               return nil, errors.New(C.GoString(buf))
-       }
-       defer C.pcap_freealldevs((*C.pcap_if_t)(alldevsp))
-       dev := alldevsp
-       var i uint32
-       for i = 0; dev != nil; dev = (*C.pcap_if_t)(dev.next) {
-               i++
-       }
-       ifs = make([]Interface, i)
-       dev = alldevsp
-       for j := uint32(0); dev != nil; dev = (*C.pcap_if_t)(dev.next) {
-               var iface Interface
-               iface.Name = C.GoString(dev.name)
-               iface.Description = C.GoString(dev.description)
-               iface.Addresses = findalladdresses(dev.addresses)
-               // TODO: add more elements
-               ifs[j] = iface
-               j++
-       }
-       return
-}
-
-func findalladdresses(addresses *_Ctype_struct_pcap_addr) (retval []InterfaceAddress) {
-       // TODO - make it support more than IPv4 and IPv6?
-       retval = make([]InterfaceAddress, 0, 1)
-       for curaddr := addresses; curaddr != nil; curaddr = (*_Ctype_struct_pcap_addr)(curaddr.next) {
-               // Strangely, it appears that in some cases, we get a pcap address back from
-               // pcap_findalldevs with a nil .addr.  It appears that we can skip over
-               // these.
-               if curaddr.addr == nil {
-                       continue
-               }
-               var a InterfaceAddress
-               var err error
-               if a.IP, err = sockaddrToIP((*syscall.RawSockaddr)(unsafe.Pointer(curaddr.addr))); err != nil {
-                       continue
-               }
-               // To be safe, we'll also check for netmask.
-               if curaddr.netmask == nil {
-                       continue
-               }
-               if a.Netmask, err = sockaddrToIP((*syscall.RawSockaddr)(unsafe.Pointer(curaddr.netmask))); err != nil {
-                       // If we got an IP address but we can't get a netmask, just return the IP
-                       // address.
-                       a.Netmask = nil
-               }
-               retval = append(retval, a)
-       }
-       return
-}
-
-func sockaddrToIP(rsa *syscall.RawSockaddr) (IP []byte, err error) {
-       switch rsa.Family {
-       case syscall.AF_INET:
-               pp := (*syscall.RawSockaddrInet4)(unsafe.Pointer(rsa))
-               IP = make([]byte, 4)
-               for i := 0; i < len(IP); i++ {
-                       IP[i] = pp.Addr[i]
-               }
-               return
-       case syscall.AF_INET6:
-               pp := (*syscall.RawSockaddrInet6)(unsafe.Pointer(rsa))
-               IP = make([]byte, 16)
-               for i := 0; i < len(IP); i++ {
-                       IP[i] = pp.Addr[i]
-               }
-               return
-       }
-       err = errors.New("Unsupported address type")
-       return
-}
-
-// WritePacketData calls pcap_sendpacket, injecting the given data into the pcap handle.
-func (p *Handle) WritePacketData(data []byte) (err error) {
-       if -1 == C.pcap_sendpacket(p.cptr, (*C.u_char)(&data[0]), (C.int)(len(data))) {
-               err = p.Error()
-       }
-       return
-}
-
-// Direction is used by Handle.SetDirection.
-type Direction uint8
-
-// Direction values for Handle.SetDirection.
-const (
-       DirectionIn    Direction = C.PCAP_D_IN
-       DirectionOut   Direction = C.PCAP_D_OUT
-       DirectionInOut Direction = C.PCAP_D_INOUT
-)
-
-// SetDirection sets the direction for which packets will be captured.
-func (p *Handle) SetDirection(direction Direction) error {
-       if direction != DirectionIn && direction != DirectionOut && direction != DirectionInOut {
-               return fmt.Errorf("Invalid direction: %v", direction)
-       }
-       if status := C.pcap_setdirection(p.cptr, (C.pcap_direction_t)(direction)); status < 0 {
-               return statusError(status)
-       }
-       return nil
-}
-
-// TimestampSource tells PCAP which type of timestamp to use for packets.
-type TimestampSource C.int
-
-// String returns the timestamp type as a human-readable string.
-func (t TimestampSource) String() string {
-       return C.GoString(C.pcap_tstamp_type_val_to_name(C.int(t)))
-}
-
-// TimestampSourceFromString translates a string into a timestamp type, case
-// insensitive.
-func TimestampSourceFromString(s string) (TimestampSource, error) {
-       cs := C.CString(s)
-       defer C.free(unsafe.Pointer(cs))
-       t := C.pcap_tstamp_type_name_to_val(cs)
-       if t < 0 {
-               return 0, statusError(t)
-       }
-       return TimestampSource(t), nil
-}
-
-func statusError(status C.int) error {
-       return errors.New(C.GoString(C.pcap_statustostr(status)))
-}
-
-// InactiveHandle allows you to call pre-pcap_activate functions on your pcap
-// handle to set it up just the way you'd like.
-type InactiveHandle struct {
-       // cptr is the handle for the actual pcap C object.
-       cptr        *C.pcap_t
-       device      string
-       deviceIndex int
-       timeout     time.Duration
-}
-
-// Activate activates the handle.  The current InactiveHandle becomes invalid
-// and all future function calls on it will fail.
-func (p *InactiveHandle) Activate() (*Handle, error) {
-       err := activateError(C.pcap_activate(p.cptr))
-       if err != aeNoError {
-               return nil, err
-       }
-       h := &Handle{
-               cptr:        p.cptr,
-               timeout:     p.timeout,
-               device:      p.device,
-               deviceIndex: p.deviceIndex,
-       }
-       p.cptr = nil
-       return h, nil
-}
-
-// CleanUp cleans up any stuff left over from a successful or failed building
-// of a handle.
-func (p *InactiveHandle) CleanUp() {
-       if p.cptr != nil {
-               C.pcap_close(p.cptr)
-       }
-}
-
-// NewInactiveHandle creates a new InactiveHandle, which wraps an un-activated PCAP handle.
-// Callers of NewInactiveHandle should immediately defer 'CleanUp', as in:
-//   inactive := NewInactiveHandle("eth0")
-//   defer inactive.CleanUp()
-func NewInactiveHandle(device string) (*InactiveHandle, error) {
-       buf := (*C.char)(C.calloc(errorBufferSize, 1))
-       defer C.free(unsafe.Pointer(buf))
-       dev := C.CString(device)
-       defer C.free(unsafe.Pointer(dev))
-
-       // Try to get the interface index, but iy could be something like "any"
-       // in which case use 0, which doesn't exist in nature
-       deviceIndex := 0
-       ifc, err := net.InterfaceByName(device)
-       if err == nil {
-               deviceIndex = ifc.Index
-       }
-
-       // This copies a bunch of the pcap_open_live implementation from pcap.c:
-       cptr := C.pcap_create(dev, buf)
-       if cptr == nil {
-               return nil, errors.New(C.GoString(buf))
-       }
-       return &InactiveHandle{cptr: cptr, device: device, deviceIndex: deviceIndex}, nil
-}
-
-// SetSnapLen sets the snap length (max bytes per packet to capture).
-func (p *InactiveHandle) SetSnapLen(snaplen int) error {
-       if status := C.pcap_set_snaplen(p.cptr, C.int(snaplen)); status < 0 {
-               return statusError(status)
-       }
-       return nil
-}
-
-// SetPromisc sets the handle to either be promiscuous (capture packets
-// unrelated to this host) or not.
-func (p *InactiveHandle) SetPromisc(promisc bool) error {
-       var pro C.int
-       if promisc {
-               pro = 1
-       }
-       if status := C.pcap_set_promisc(p.cptr, pro); status < 0 {
-               return statusError(status)
-       }
-       return nil
-}
-
-// SetTimeout sets the read timeout for the handle.
-//
-// See the package documentation for important details regarding 'timeout'.
-func (p *InactiveHandle) SetTimeout(timeout time.Duration) error {
-       if status := C.pcap_set_timeout(p.cptr, timeoutMillis(timeout)); status < 0 {
-               return statusError(status)
-       }
-       p.timeout = timeout
-       return nil
-}
-
-// SupportedTimestamps returns a list of supported timstamp types for this
-// handle.
-func (p *InactiveHandle) SupportedTimestamps() (out []TimestampSource) {
-       var types *C.int
-       n := int(C.pcap_list_tstamp_types(p.cptr, &types))
-       defer C.pcap_free_tstamp_types(types)
-       typesArray := (*[100]C.int)(unsafe.Pointer(types))
-       for i := 0; i < n; i++ {
-               out = append(out, TimestampSource((*typesArray)[i]))
-       }
-       return
-}
-
-// SetTimestampSource sets the type of timestamp generator PCAP uses when
-// attaching timestamps to packets.
-func (p *InactiveHandle) SetTimestampSource(t TimestampSource) error {
-       if status := C.pcap_set_tstamp_type(p.cptr, C.int(t)); status < 0 {
-               return statusError(status)
-       }
-       return nil
-}
-
-// CannotSetRFMon is returned by SetRFMon if the handle does not allow
-// setting RFMon because pcap_can_set_rfmon returns 0.
-var CannotSetRFMon = errors.New("Cannot set rfmon for this handle")
-
-// SetRFMon turns on radio monitoring mode, similar to promiscuous mode but for
-// wireless networks.  If this mode is enabled, the interface will not need to
-// associate with an access point before it can receive traffic.
-func (p *InactiveHandle) SetRFMon(monitor bool) error {
-       var mon C.int
-       if monitor {
-               mon = 1
-       }
-       switch canset := C.pcap_can_set_rfmon(p.cptr); canset {
-       case 0:
-               return CannotSetRFMon
-       case 1:
-               // success
-       default:
-               return statusError(canset)
-       }
-       if status := C.pcap_set_rfmon(p.cptr, mon); status != 0 {
-               return statusError(status)
-       }
-       return nil
-}
-
-// SetBufferSize sets the buffer size (in bytes) of the handle.
-func (p *InactiveHandle) SetBufferSize(bufferSize int) error {
-       if status := C.pcap_set_buffer_size(p.cptr, C.int(bufferSize)); status < 0 {
-               return statusError(status)
-       }
-       return nil
-}
-
-// SetImmediateMode sets (or unsets) the immediate mode of the
-// handle. In immediate mode, packets are delivered to the application
-// as soon as they arrive.  In other words, this overrides SetTimeout.
-func (p *InactiveHandle) SetImmediateMode(mode bool) error {
-       var md C.int
-       if mode {
-               md = 1
-       }
-       if status := C.pcap_set_immediate_mode(p.cptr, md); status < 0 {
-               return statusError(status)
-       }
-       return nil
-}
diff --git a/vendor/github.com/google/gopacket/pcap/pcap_test.go b/vendor/github.com/google/gopacket/pcap/pcap_test.go
deleted file mode 100644 (file)
index 04f1812..0000000
+++ /dev/null
@@ -1,308 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package pcap
-
-import (
-       "fmt"
-       "io"
-       "io/ioutil"
-       "log"
-       "os"
-       "testing"
-
-       "github.com/google/gopacket"
-       "github.com/google/gopacket/layers"
-)
-
-func TestPcapNonexistentFile(t *testing.T) {
-       handle, err := OpenOffline("/path/to/nonexistent/file")
-       if err == nil {
-               t.Error("No error returned for nonexistent file open")
-       } else {
-               t.Logf("Error returned for nonexistent file: %v", err)
-       }
-       if handle != nil {
-               t.Error("Non-nil handle returned for nonexistent file open")
-       }
-}
-
-func TestPcapFileRead(t *testing.T) {
-       invalidData := []byte{
-               0xAB, 0xAD, 0x1D, 0xEA,
-       }
-
-       invalidPcap, err := ioutil.TempFile("", "invalid.pcap")
-       if err != nil {
-               t.Fatal(err)
-       }
-       defer os.Remove(invalidPcap.Name())
-
-       err = ioutil.WriteFile(invalidPcap.Name(), invalidData, 0644)
-       if err != nil {
-               t.Fatal(err)
-       }
-       defer invalidPcap.Close()
-
-       for _, file := range []struct {
-               filename       string
-               num            int
-               expectedLayers []gopacket.LayerType
-               err            string
-       }{
-               {filename: "test_loopback.pcap",
-                       num: 24,
-                       expectedLayers: []gopacket.LayerType{
-                               layers.LayerTypeLoopback,
-                               layers.LayerTypeIPv6,
-                               layers.LayerTypeTCP,
-                       },
-               },
-               {filename: "test_ethernet.pcap",
-                       num: 16,
-                       expectedLayers: []gopacket.LayerType{
-                               layers.LayerTypeEthernet,
-                               layers.LayerTypeIPv4,
-                               layers.LayerTypeTCP,
-                       },
-               },
-               {filename: "test_dns.pcap",
-                       num: 10,
-                       expectedLayers: []gopacket.LayerType{
-                               layers.LayerTypeEthernet,
-                               layers.LayerTypeIPv4,
-                               layers.LayerTypeUDP,
-                               layers.LayerTypeDNS,
-                       },
-               },
-               {filename: invalidPcap.Name(),
-                       num: 0,
-                       err: "unknown file format",
-               },
-       } {
-               t.Logf("\n\n\n\nProcessing file %s\n\n\n\n", file.filename)
-
-               packets := []gopacket.Packet{}
-               if handle, err := OpenOffline(file.filename); err != nil {
-                       if file.err != "" {
-                               if err.Error() != file.err {
-                                       t.Errorf("expected message %q; got %q", file.err, err.Error())
-                               }
-                       } else {
-                               t.Fatal(err)
-                       }
-               } else {
-                       if file.err != "" {
-                               t.Fatalf("Expected error, got none")
-                       }
-                       packetSource := gopacket.NewPacketSource(handle, handle.LinkType())
-                       for packet := range packetSource.Packets() {
-                               packets = append(packets, packet)
-                       }
-               }
-               if len(packets) != file.num {
-                       t.Fatal("Incorrect number of packets, want", file.num, "got", len(packets))
-               }
-               for i, p := range packets {
-                       t.Log(p.Dump())
-                       for _, layertype := range file.expectedLayers {
-                               if p.Layer(layertype) == nil {
-                                       t.Fatal("Packet", i, "has no layer type\n%s", layertype, p.Dump())
-                               }
-                       }
-               }
-       }
-}
-
-func TestBPF(t *testing.T) {
-       handle, err := OpenOffline("test_ethernet.pcap")
-       if err != nil {
-               t.Fatal(err)
-       }
-
-       for _, expected := range []struct {
-               expr   string
-               Error  bool
-               Result bool
-       }{
-               {"foobar", true, false},
-               {"tcp[tcpflags] & (tcp-syn|tcp-ack) == (tcp-syn|tcp-ack)", false, true},
-               {"tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-ack", false, true},
-               {"udp", false, false},
-       } {
-               data, ci, err := handle.ReadPacketData()
-               if err != nil {
-                       t.Fatal(err)
-               }
-               t.Log("Testing filter", expected.expr)
-               if bpf, err := handle.NewBPF(expected.expr); err != nil {
-                       if !expected.Error {
-                               t.Error(err, "while compiling filter was unexpected")
-                       }
-               } else if expected.Error {
-                       t.Error("expected error but didn't see one")
-               } else if matches := bpf.Matches(ci, data); matches != expected.Result {
-                       t.Error("Filter result was", matches, "but should be", expected.Result)
-               }
-       }
-}
-
-func TestBPFInstruction(t *testing.T) {
-       handle, err := OpenOffline("test_ethernet.pcap")
-       if err != nil {
-               t.Fatal(err)
-       }
-
-       cntr := 0
-       oversizedBpfInstructionBuffer := [MaxBpfInstructions + 1]BPFInstruction{}
-
-       for _, expected := range []struct {
-               Filter         string
-               BpfInstruction []BPFInstruction
-               Error          bool
-               Result         bool
-       }{
-               // {"foobar", true, false},
-               {"foobar", []BPFInstruction{}, true, false},
-
-               // tcpdump -dd 'tcp[tcpflags] & (tcp-syn|tcp-ack) == (tcp-syn|tcp-ack)'
-               {"tcp[tcpflags] & (tcp-syn|tcp-ack) == (tcp-syn|tcp-ack)",
-                       []BPFInstruction{
-                               {0x28, 0, 0, 0x0000000c},
-                               {0x15, 0, 9, 0x00000800},
-                               {0x30, 0, 0, 0x00000017},
-                               {0x15, 0, 7, 0x00000006},
-                               {0x28, 0, 0, 0x00000014},
-                               {0x45, 5, 0, 0x00001fff},
-                               {0xb1, 0, 0, 0x0000000e},
-                               {0x50, 0, 0, 0x0000001b},
-                               {0x54, 0, 0, 0x00000012},
-                               {0x15, 0, 1, 0x00000012},
-                               {0x6, 0, 0, 0x0000ffff},
-                               {0x6, 0, 0, 0x00000000},
-                       }, false, true},
-
-               // tcpdump -dd 'tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-ack'
-               {"tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-ack",
-                       []BPFInstruction{
-                               {0x28, 0, 0, 0x0000000c},
-                               {0x15, 0, 9, 0x00000800},
-                               {0x30, 0, 0, 0x00000017},
-                               {0x15, 0, 7, 0x00000006},
-                               {0x28, 0, 0, 0x00000014},
-                               {0x45, 5, 0, 0x00001fff},
-                               {0xb1, 0, 0, 0x0000000e},
-                               {0x50, 0, 0, 0x0000001b},
-                               {0x54, 0, 0, 0x00000012},
-                               {0x15, 0, 1, 0x00000010},
-                               {0x6, 0, 0, 0x0000ffff},
-                               {0x6, 0, 0, 0x00000000},
-                       }, false, true},
-
-               // tcpdump -dd 'udp'
-               {"udp",
-                       []BPFInstruction{
-                               {0x28, 0, 0, 0x0000000c},
-                               {0x15, 0, 5, 0x000086dd},
-                               {0x30, 0, 0, 0x00000014},
-                               {0x15, 6, 0, 0x00000011},
-                               {0x15, 0, 6, 0x0000002c},
-                               {0x30, 0, 0, 0x00000036},
-                               {0x15, 3, 4, 0x00000011},
-                               {0x15, 0, 3, 0x00000800},
-                               {0x30, 0, 0, 0x00000017},
-                               {0x15, 0, 1, 0x00000011},
-                               {0x6, 0, 0, 0x0000ffff},
-                               {0x6, 0, 0, 0x00000000},
-                       }, false, false},
-
-               {"", oversizedBpfInstructionBuffer[:], true, false},
-       } {
-               cntr++
-               data, ci, err := handle.ReadPacketData()
-               if err != nil {
-                       t.Fatal(err)
-               }
-
-               t.Log("Testing BpfInstruction filter", cntr)
-               if bpf, err := handle.NewBPFInstructionFilter(expected.BpfInstruction); err != nil {
-                       if !expected.Error {
-                               t.Error(err, "while compiling filter was unexpected")
-                       }
-               } else if expected.Error {
-                       t.Error("expected error but didn't see one")
-               } else if matches := bpf.Matches(ci, data); matches != expected.Result {
-                       t.Error("Filter result was", matches, "but should be", expected.Result)
-               }
-
-               if expected.Filter != "" {
-                       t.Log("Testing dead bpf filter", cntr)
-                       if bpf, err := CompileBPFFilter(layers.LinkTypeEthernet, 65535, expected.Filter); err != nil {
-                               if !expected.Error {
-                                       t.Error(err, "while compiling filter was unexpected")
-                               }
-                       } else if expected.Error {
-                               t.Error("expected error but didn't see one")
-                       } else {
-                               if len(bpf) != len(expected.BpfInstruction) {
-                                       t.Errorf("expected %d instructions, got %d", len(expected.BpfInstruction), len(bpf))
-                               }
-                               for i := 0; i < len(bpf); i++ {
-                                       if bpf[i] != expected.BpfInstruction[i] {
-                                               t.Errorf("expected instruction %d = %d, got %d", i, expected.BpfInstruction[i], bpf[i])
-                                       }
-                               }
-                       }
-               }
-       }
-}
-
-func ExampleBPF() {
-       handle, err := OpenOffline("test_ethernet.pcap")
-       if err != nil {
-               log.Fatal(err)
-       }
-       synack, err := handle.NewBPF("tcp[tcpflags] & (tcp-syn|tcp-ack) == (tcp-syn|tcp-ack)")
-       if err != nil {
-               log.Fatal(err)
-       }
-       syn, err := handle.NewBPF("tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-syn")
-       if err != nil {
-               log.Fatal(err)
-       }
-       for {
-               data, ci, err := handle.ReadPacketData()
-               switch {
-               case err == io.EOF:
-                       return
-               case err != nil:
-                       log.Fatal(err)
-               case synack.Matches(ci, data):
-                       fmt.Println("SYN/ACK packet")
-               case syn.Matches(ci, data):
-                       fmt.Println("SYN packet")
-               default:
-                       fmt.Println("SYN flag not set")
-               }
-       }
-       // Output:
-       // SYN packet
-       // SYN/ACK packet
-       // SYN flag not set
-       // SYN flag not set
-       // SYN flag not set
-       // SYN flag not set
-       // SYN flag not set
-       // SYN flag not set
-       // SYN flag not set
-       // SYN flag not set
-       // SYN flag not set
-       // SYN flag not set
-       // SYN flag not set
-       // SYN flag not set
-       // SYN flag not set
-       // SYN flag not set
-}
diff --git a/vendor/github.com/google/gopacket/pcap/pcap_tester.go b/vendor/github.com/google/gopacket/pcap/pcap_tester.go
deleted file mode 100644 (file)
index ee32690..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// +build ignore
-
-// This binary tests that PCAP packet capture is working correctly by issuing
-// HTTP requests, then making sure we actually capture data off the wire.
-package main
-
-import (
-       "errors"
-       "flag"
-       "fmt"
-       "log"
-       "net"
-       "net/http"
-       "os"
-       "time"
-
-       "github.com/google/gopacket/pcap"
-)
-
-var mode = flag.String("mode", "basic", "One of: basic,filtered,timestamp")
-
-func generatePackets() {
-       if resp, err := http.Get("http://code.google.com"); err != nil {
-               log.Printf("Could not get HTTP: %v", err)
-       } else {
-               resp.Body.Close()
-       }
-}
-
-func main() {
-       flag.Parse()
-       ifaces, err := net.Interfaces()
-       if err != nil {
-               log.Fatal(err)
-       }
-       for _, iface := range ifaces {
-               log.Printf("Trying capture on %q", iface.Name)
-               if err := tryCapture(iface); err != nil {
-                       log.Printf("Error capturing on %q: %v", iface.Name, err)
-               } else {
-                       log.Printf("Successfully captured on %q", iface.Name)
-                       return
-               }
-       }
-       os.Exit(1)
-}
-
-func tryCapture(iface net.Interface) error {
-       if iface.Name[:2] == "lo" {
-               return errors.New("skipping loopback")
-       }
-       var h *pcap.Handle
-       var err error
-       switch *mode {
-       case "basic":
-               h, err = pcap.OpenLive(iface.Name, 65536, false, time.Second*3)
-               if err != nil {
-                       return fmt.Errorf("openlive: %v", err)
-               }
-               defer h.Close()
-       case "filtered":
-               h, err = pcap.OpenLive(iface.Name, 65536, false, time.Second*3)
-               if err != nil {
-                       return fmt.Errorf("openlive: %v", err)
-               }
-               defer h.Close()
-               if err := h.SetBPFFilter("port 80 or port 443"); err != nil {
-                       return fmt.Errorf("setbpf: %v", err)
-               }
-       case "timestamp":
-               u, err := pcap.NewInactiveHandle(iface.Name)
-               if err != nil {
-                       return err
-               }
-               defer u.CleanUp()
-               if err = u.SetSnapLen(65536); err != nil {
-                       return err
-               } else if err = u.SetPromisc(false); err != nil {
-                       return err
-               } else if err = u.SetTimeout(time.Second * 3); err != nil {
-                       return err
-               }
-               sources := u.SupportedTimestamps()
-               if len(sources) == 0 {
-                       return errors.New("no supported timestamp sources")
-               } else if err := u.SetTimestampSource(sources[0]); err != nil {
-                       return fmt.Errorf("settimestampsource(%v): %v", sources[0], err)
-               } else if h, err = u.Activate(); err != nil {
-                       return fmt.Errorf("could not activate: %v", err)
-               }
-               defer h.Close()
-       default:
-               panic("Invalid --mode: " + *mode)
-       }
-       go generatePackets()
-       h.ReadPacketData() // Do one dummy read to clear any timeouts.
-       data, ci, err := h.ReadPacketData()
-       if err != nil {
-               return fmt.Errorf("readpacketdata: %v", err)
-       }
-       log.Printf("Read packet, %v bytes, CI: %+v", len(data), ci)
-       return nil
-}
diff --git a/vendor/github.com/google/gopacket/pcap/pcap_unix.go b/vendor/github.com/google/gopacket/pcap/pcap_unix.go
deleted file mode 100644 (file)
index b2a6dcd..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-// Copyright 2009-2011 Andreas Krennmair. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-//
-// +build !windows
-
-package pcap
-
-/*
-#include <stdlib.h>
-#include <pcap.h>
-
-// pcap_wait returns when the next packet is available or the timeout expires.
-// Since it uses pcap_get_selectable_fd, it will not work in Windows.
-int pcap_wait(pcap_t *p, int usec) {
-       fd_set fds;
-       int fd;
-       struct timeval tv;
-
-       fd = pcap_get_selectable_fd(p);
-       if(fd < 0) {
-               return fd;
-       }
-
-       FD_ZERO(&fds);
-       FD_SET(fd, &fds);
-
-       tv.tv_sec = 0;
-       tv.tv_usec = usec;
-
-       if(usec != 0) {
-               return select(fd+1, &fds, NULL, NULL, &tv);
-       }
-
-       // block indefinitely if no timeout provided
-       return select(fd+1, &fds, NULL, NULL, NULL);
-}
-*/
-import "C"
-
-import (
-       "errors"
-       "unsafe"
-)
-
-func (p *Handle) openLive() error {
-       buf := (*C.char)(C.calloc(errorBufferSize, 1))
-       defer C.free(unsafe.Pointer(buf))
-
-       // Change the device to non-blocking, we'll use pcap_wait to wait until the
-       // handle is ready to read.
-       if v := C.pcap_setnonblock(p.cptr, 1, buf); v == -1 {
-               return errors.New(C.GoString(buf))
-       }
-
-       return nil
-}
-
-// waitForPacket waits for a packet or for the timeout to expire.
-func (p *Handle) waitForPacket() {
-       // need to wait less than the read timeout according to pcap documentation.
-       // timeoutMillis rounds up to at least one millisecond so we can safely
-       // subtract up to a millisecond.
-       usec := timeoutMillis(p.timeout) * 1000
-       usec -= 100
-
-       C.pcap_wait(p.cptr, usec)
-}
diff --git a/vendor/github.com/google/gopacket/pcap/pcap_windows.go b/vendor/github.com/google/gopacket/pcap/pcap_windows.go
deleted file mode 100644 (file)
index e3df123..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-// Copyright 2009-2011 Andreas Krennmair. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package pcap
-
-import (
-       "runtime"
-)
-
-func (p *Handle) openLive() error {
-       // do nothing
-       return nil
-}
-
-// waitForPacket waits for a packet or for the timeout to expire.
-func (p *Handle) waitForPacket() {
-       // can't use select() so instead just switch goroutines
-       runtime.Gosched()
-}
diff --git a/vendor/github.com/google/gopacket/pcap/pcapgo_test.go b/vendor/github.com/google/gopacket/pcap/pcapgo_test.go
deleted file mode 100644 (file)
index 4de018a..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package pcap
-
-import (
-       "bytes"
-       "github.com/google/gopacket"
-       "github.com/google/gopacket/layers"
-       "github.com/google/gopacket/pcapgo"
-       "io/ioutil"
-       "reflect"
-       "testing"
-       "time"
-)
-
-func TestPCAPGoWrite(t *testing.T) {
-       f, err := ioutil.TempFile("", "pcapgo")
-       if err != nil {
-               t.Fatal(err)
-       }
-       data := []byte{0xab, 0xcd, 0xef, 0x01, 0x02, 0x03, 0x04}
-       ci := gopacket.CaptureInfo{
-               Timestamp:     time.Unix(12345667, 1234567000),
-               Length:        700,
-               CaptureLength: len(data),
-       }
-       func() {
-               defer f.Close()
-               w := pcapgo.NewWriter(f)
-               if err := w.WriteFileHeader(65536, layers.LinkTypeEthernet); err != nil {
-                       t.Fatal(err)
-               }
-               if err := w.WritePacket(ci, data); err != nil {
-                       t.Fatal(err)
-               }
-       }()
-       h, err := OpenOffline(f.Name())
-       if err != nil {
-               t.Fatal(err)
-       }
-       defer h.Close()
-       gotData, gotCI, err := h.ReadPacketData()
-       if err != nil {
-               t.Fatal("could not read first packet:", err)
-       }
-       if !bytes.Equal(gotData, data) {
-               t.Errorf("byte mismatch:\nwant: %v\n got: %v", data, gotData)
-       }
-       if !reflect.DeepEqual(ci, gotCI) {
-               t.Errorf("CI mismatch:\nwant: %v\n got: %v", ci, gotCI)
-       }
-}
diff --git a/vendor/github.com/google/gopacket/pcap/test_dns.pcap b/vendor/github.com/google/gopacket/pcap/test_dns.pcap
deleted file mode 100644 (file)
index 3a79f92..0000000
Binary files a/vendor/github.com/google/gopacket/pcap/test_dns.pcap and /dev/null differ
diff --git a/vendor/github.com/google/gopacket/pcap/test_ethernet.pcap b/vendor/github.com/google/gopacket/pcap/test_ethernet.pcap
deleted file mode 100644 (file)
index 1f8a87c..0000000
Binary files a/vendor/github.com/google/gopacket/pcap/test_ethernet.pcap and /dev/null differ
diff --git a/vendor/github.com/google/gopacket/pcap/test_loopback.pcap b/vendor/github.com/google/gopacket/pcap/test_loopback.pcap
deleted file mode 100644 (file)
index ddeb82c..0000000
Binary files a/vendor/github.com/google/gopacket/pcap/test_loopback.pcap and /dev/null differ
diff --git a/vendor/github.com/google/gopacket/pcapgo/read.go b/vendor/github.com/google/gopacket/pcapgo/read.go
deleted file mode 100644 (file)
index 5acd06f..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-// Copyright 2014 Damjan Cvetko. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package pcapgo
-
-import (
-       "encoding/binary"
-       "errors"
-       "fmt"
-       "io"
-       "time"
-
-       "bufio"
-       "compress/gzip"
-       "github.com/google/gopacket"
-       "github.com/google/gopacket/layers"
-)
-
-// Reader wraps an underlying io.Reader to read packet data in PCAP
-// format.  See http://wiki.wireshark.org/Development/LibpcapFileFormat
-// for information on the file format.
-//
-// We currenty read v2.4 file format with nanosecond and microsecdond
-// timestamp resolution in little-endian and big-endian encoding.
-//
-// If the PCAP data is gzip compressed it is transparently uncompressed
-// by wrapping the given io.Reader with a gzip.Reader.
-type Reader struct {
-       r              io.Reader
-       byteOrder      binary.ByteOrder
-       nanoSecsFactor uint32
-       versionMajor   uint16
-       versionMinor   uint16
-       // timezone
-       // sigfigs
-       snaplen  uint32
-       linkType layers.LinkType
-       // reusable buffer
-       buf [16]byte
-}
-
-const magicNanoseconds = 0xA1B23C4D
-const magicMicrosecondsBigendian = 0xD4C3B2A1
-const magicNanosecondsBigendian = 0x4D3CB2A1
-
-const magicGzip1 = 0x1f
-const magicGzip2 = 0x8b
-
-// NewReader returns a new reader object, for reading packet data from
-// the given reader. The reader must be open and header data is
-// read from it at this point.
-// If the file format is not supported an error is returned
-//
-//  // Create new reader:
-//  f, _ := os.Open("/tmp/file.pcap")
-//  defer f.Close()
-//  r, err := NewReader(f)
-//  data, ci, err := r.ReadPacketData()
-func NewReader(r io.Reader) (*Reader, error) {
-       ret := Reader{r: r}
-       if err := ret.readHeader(); err != nil {
-               return nil, err
-       }
-       return &ret, nil
-}
-
-func (r *Reader) readHeader() error {
-       br := bufio.NewReader(r.r)
-       gzipMagic, err := br.Peek(2)
-       if err != nil {
-               return err
-       }
-
-       if gzipMagic[0] == magicGzip1 && gzipMagic[1] == magicGzip2 {
-               if r.r, err = gzip.NewReader(br); err != nil {
-                       return err
-               }
-       } else {
-               r.r = br
-       }
-
-       buf := make([]byte, 24)
-       if n, err := io.ReadFull(r.r, buf); err != nil {
-               return err
-       } else if n < 24 {
-               return errors.New("Not enough data for read")
-       }
-       if magic := binary.LittleEndian.Uint32(buf[0:4]); magic == magicNanoseconds {
-               r.byteOrder = binary.LittleEndian
-               r.nanoSecsFactor = 1
-       } else if magic == magicNanosecondsBigendian {
-               r.byteOrder = binary.BigEndian
-               r.nanoSecsFactor = 1
-       } else if magic == magicMicroseconds {
-               r.byteOrder = binary.LittleEndian
-               r.nanoSecsFactor = 1000
-       } else if magic == magicMicrosecondsBigendian {
-               r.byteOrder = binary.BigEndian
-               r.nanoSecsFactor = 1000
-       } else {
-               return fmt.Errorf("Unknown magic %x", magic)
-       }
-       if r.versionMajor = r.byteOrder.Uint16(buf[4:6]); r.versionMajor != versionMajor {
-               return fmt.Errorf("Unknown major version %d", r.versionMajor)
-       }
-       if r.versionMinor = r.byteOrder.Uint16(buf[6:8]); r.versionMinor != versionMinor {
-               return fmt.Errorf("Unknown minor version %d", r.versionMinor)
-       }
-       // ignore timezone 8:12 and sigfigs 12:16
-       r.snaplen = r.byteOrder.Uint32(buf[16:20])
-       r.linkType = layers.LinkType(r.byteOrder.Uint32(buf[20:24]))
-       return nil
-}
-
-// ReadPacketData reads next packet from file.
-func (r *Reader) ReadPacketData() (data []byte, ci gopacket.CaptureInfo, err error) {
-       if ci, err = r.readPacketHeader(); err != nil {
-               return
-       }
-       if ci.CaptureLength > int(r.snaplen) {
-               err = fmt.Errorf("capture length exceeds snap length: %d > %d", 16+ci.CaptureLength, r.snaplen)
-               return
-       }
-       data = make([]byte, ci.CaptureLength)
-       _, err = io.ReadFull(r.r, data)
-       return data, ci, err
-}
-
-func (r *Reader) readPacketHeader() (ci gopacket.CaptureInfo, err error) {
-       if _, err = io.ReadFull(r.r, r.buf[:]); err != nil {
-               return
-       }
-       ci.Timestamp = time.Unix(int64(r.byteOrder.Uint32(r.buf[0:4])), int64(r.byteOrder.Uint32(r.buf[4:8])*r.nanoSecsFactor)).UTC()
-       ci.CaptureLength = int(r.byteOrder.Uint32(r.buf[8:12]))
-       ci.Length = int(r.byteOrder.Uint32(r.buf[12:16]))
-       return
-}
-
-// LinkType returns network, as a layers.LinkType.
-func (r *Reader) LinkType() layers.LinkType {
-       return r.linkType
-}
-
-// Snaplen returns the snapshot length of the capture file.
-func (r *Reader) Snaplen() uint32 {
-       return r.snaplen
-}
-
-// Reader formater
-func (r *Reader) String() string {
-       return fmt.Sprintf("PcapFile  maj: %x min: %x snaplen: %d linktype: %s", r.versionMajor, r.versionMinor, r.snaplen, r.linkType)
-}
diff --git a/vendor/github.com/google/gopacket/pcapgo/read_test.go b/vendor/github.com/google/gopacket/pcapgo/read_test.go
deleted file mode 100644 (file)
index 87bf7ab..0000000
+++ /dev/null
@@ -1,203 +0,0 @@
-// Copyright 2014 Damjan Cvetko. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-package pcapgo
-
-import (
-       "bytes"
-       "testing"
-       "time"
-)
-
-// test header read
-func TestCreatePcapReader(t *testing.T) {
-       test := []byte{
-               0xd4, 0xc3, 0xb2, 0xa1, 0x02, 0x00, 0x04, 0x00,
-               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-               0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-       }
-       buf := bytes.NewBuffer(test)
-       _, err := NewReader(buf)
-       if err != nil {
-               t.Error(err)
-               t.FailNow()
-       }
-}
-
-// test big endian file read
-func TestCreatePcapReaderBigEndian(t *testing.T) {
-       test := []byte{
-               0xa1, 0xb2, 0xc3, 0xd4, 0x00, 0x02, 0x00, 0x04,
-               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-               0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x01,
-       }
-       buf := bytes.NewBuffer(test)
-       _, err := NewReader(buf)
-       if err != nil {
-               t.Error(err)
-               t.FailNow()
-       }
-}
-
-// test opening invalid data
-func TestCreatePcapReaderFail(t *testing.T) {
-       test := []byte{
-               0xd0, 0xc3, 0xb2, 0xa1, 0x02, 0x00, 0x04, 0x00,
-               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-               0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-       }
-       buf := bytes.NewBuffer(test)
-       _, err := NewReader(buf)
-       if err == nil {
-               t.Error("Should fail but did not")
-               t.FailNow()
-       }
-}
-
-func TestPacket(t *testing.T) {
-       test := []byte{
-               0xd4, 0xc3, 0xb2, 0xa1, 0x02, 0x00, 0x04, 0x00, // magic, maj, min
-               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // tz, sigfigs
-               0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // snaplen, linkType
-               0x5A, 0xCC, 0x1A, 0x54, 0x01, 0x00, 0x00, 0x00, // sec, usec
-               0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // cap len, full len
-               0x01, 0x02, 0x03, 0x04, // data
-       }
-
-       buf := bytes.NewBuffer(test)
-       r, err := NewReader(buf)
-
-       data, ci, err := r.ReadPacketData()
-       if err != nil {
-               t.Error(err)
-               t.FailNow()
-       }
-       if !ci.Timestamp.Equal(time.Date(2014, 9, 18, 12, 13, 14, 1000, time.UTC)) {
-               t.Error("Invalid time read")
-               t.FailNow()
-       }
-       if ci.CaptureLength != 4 || ci.Length != 8 {
-               t.Error("Invalid CapLen or Len")
-       }
-       want := []byte{1, 2, 3, 4}
-       if !bytes.Equal(data, want) {
-               t.Errorf("buf mismatch:\nwant: %+v\ngot:  %+v", want, data)
-       }
-}
-
-func TestPacketNano(t *testing.T) {
-       test := []byte{
-               0x4d, 0x3c, 0xb2, 0xa1, 0x02, 0x00, 0x04, 0x00, // magic, maj, min
-               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // tz, sigfigs
-               0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // snaplen, linkType
-               0x5A, 0xCC, 0x1A, 0x54, 0x01, 0x00, 0x00, 0x00, // sec, usec
-               0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // cap len, full len
-               0x01, 0x02, 0x03, 0x04, // data
-       }
-
-       buf := bytes.NewBuffer(test)
-       r, err := NewReader(buf)
-
-       data, ci, err := r.ReadPacketData()
-       if err != nil {
-               t.Error(err)
-               t.FailNow()
-       }
-       if !ci.Timestamp.Equal(time.Date(2014, 9, 18, 12, 13, 14, 1, time.UTC)) {
-               t.Error("Invalid time read")
-               t.FailNow()
-       }
-       if ci.CaptureLength != 4 || ci.Length != 8 {
-               t.Error("Invalid CapLen or Len")
-       }
-       want := []byte{1, 2, 3, 4}
-       if !bytes.Equal(data, want) {
-               t.Errorf("buf mismatch:\nwant: %+v\ngot:  %+v", want, data)
-       }
-}
-
-func TestGzipPacket(t *testing.T) {
-       test := []byte{
-               0x1f, 0x8b, 0x08, 0x08, 0x92, 0x4d, 0x81, 0x57,
-               0x00, 0x03, 0x74, 0x65, 0x73, 0x74, 0x00, 0xbb,
-               0x72, 0x78, 0xd3, 0x42, 0x26, 0x06, 0x16, 0x06,
-               0x18, 0xf8, 0xff, 0x9f, 0x81, 0x81, 0x11, 0x48,
-               0x47, 0x9d, 0x91, 0x0a, 0x01, 0xd1, 0x20, 0x19,
-               0x0e, 0x20, 0x66, 0x64, 0x62, 0x66, 0x01, 0x00,
-               0xe4, 0x76, 0x9b, 0x75, 0x2c, 0x00, 0x00, 0x00,
-       }
-       buf := bytes.NewBuffer(test)
-       r, err := NewReader(buf)
-       if err != nil {
-               t.Error("Unexpected error returned:", err)
-               t.FailNow()
-       }
-
-       data, ci, err := r.ReadPacketData()
-       if err != nil {
-               t.Error(err)
-               t.FailNow()
-       }
-       if !ci.Timestamp.Equal(time.Date(2014, 9, 18, 12, 13, 14, 1000, time.UTC)) {
-               t.Error("Invalid time read")
-               t.FailNow()
-       }
-       if ci.CaptureLength != 4 || ci.Length != 8 {
-               t.Error("Invalid CapLen or Len")
-       }
-       want := []byte{1, 2, 3, 4}
-       if !bytes.Equal(data, want) {
-               t.Errorf("buf mismatch:\nwant: %+v\ngot:  %+v", want, data)
-       }
-}
-
-func TestTruncatedGzipPacket(t *testing.T) {
-       test := []byte{
-               0x1f, 0x8b, 0x08,
-       }
-       buf := bytes.NewBuffer(test)
-       _, err := NewReader(buf)
-       if err == nil {
-               t.Error("Should fail but did not")
-               t.FailNow()
-       }
-}
-
-func TestPacketBufferReuse(t *testing.T) {
-       test := []byte{
-               0xd4, 0xc3, 0xb2, 0xa1, 0x02, 0x00, 0x04, 0x00, // magic, maj, min
-               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // tz, sigfigs
-               0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // snaplen, linkType
-               0x5A, 0xCC, 0x1A, 0x54, 0x01, 0x00, 0x00, 0x00, // sec, usec
-               0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // cap len, full len
-               0x01, 0x02, 0x03, 0x04, // data
-               0x5A, 0xCC, 0x1A, 0x54, 0x01, 0x00, 0x00, 0x00, // sec, usec
-               0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // cap len, full len
-               0x01, 0x02, 0x03, 0x04, // data
-       }
-
-       buf := bytes.NewBuffer(test)
-       r, err := NewReader(buf)
-
-       data1, _, err := r.ReadPacketData()
-       if err != nil {
-               t.Error(err)
-               t.FailNow()
-       }
-       if want := []byte{1, 2, 3, 4}; !bytes.Equal(data1, want) {
-               t.Errorf("buf mismatch:\nwant: %+v\ngot:  %+v", want, data1)
-       }
-       data2, _, err := r.ReadPacketData()
-       if err != nil {
-               t.Error(err)
-               t.FailNow()
-       }
-       for i := range data1 {
-               data1[i] = 0xff // modify data1 after getting data2, make sure we don't overlap buffers.
-       }
-       if want := []byte{1, 2, 3, 4}; !bytes.Equal(data2, want) {
-               t.Errorf("buf mismatch:\nwant: %+v\ngot:  %+v", want, data2)
-       }
-}
diff --git a/vendor/github.com/google/gopacket/pcapgo/write.go b/vendor/github.com/google/gopacket/pcapgo/write.go
deleted file mode 100644 (file)
index bfc312f..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// Package pcapgo provides some native PCAP support, not requiring
-// C libpcap to be installed.
-package pcapgo
-
-import (
-       "encoding/binary"
-       "fmt"
-       "io"
-       "time"
-
-       "github.com/google/gopacket"
-       "github.com/google/gopacket/layers"
-)
-
-// Writer wraps an underlying io.Writer to write packet data in PCAP
-// format.  See http://wiki.wireshark.org/Development/LibpcapFileFormat
-// for information on the file format.
-//
-// For those that care, we currently write v2.4 files with nanosecond
-// timestamp resolution and little-endian encoding.
-type Writer struct {
-       w io.Writer
-}
-
-const magicMicroseconds = 0xA1B2C3D4
-const versionMajor = 2
-const versionMinor = 4
-
-// NewWriter returns a new writer object, for writing packet data out
-// to the given writer.  If this is a new empty writer (as opposed to
-// an append), you must call WriteFileHeader before WritePacket.
-//
-//  // Write a new file:
-//  f, _ := os.Create("/tmp/file.pcap")
-//  w := pcapgo.NewWriter(f)
-//  w.WriteFileHeader(65536, layers.LinkTypeEthernet)  // new file, must do this.
-//  w.WritePacket(gopacket.CaptureInfo{...}, data1)
-//  f.Close()
-//  // Append to existing file (must have same snaplen and linktype)
-//  f2, _ := os.OpenFile("/tmp/file.pcap", os.O_APPEND, 0700)
-//  w2 := pcapgo.NewWriter(f2)
-//  // no need for file header, it's already written.
-//  w2.WritePacket(gopacket.CaptureInfo{...}, data2)
-//  f2.Close()
-func NewWriter(w io.Writer) *Writer {
-       return &Writer{w: w}
-}
-
-// WriteFileHeader writes a file header out to the writer.
-// This must be called exactly once per output.
-func (w *Writer) WriteFileHeader(snaplen uint32, linktype layers.LinkType) error {
-       var buf [24]byte
-       binary.LittleEndian.PutUint32(buf[0:4], magicMicroseconds)
-       binary.LittleEndian.PutUint16(buf[4:6], versionMajor)
-       binary.LittleEndian.PutUint16(buf[6:8], versionMinor)
-       // bytes 8:12 stay 0 (timezone = UTC)
-       // bytes 12:16 stay 0 (sigfigs is always set to zero, according to
-       //   http://wiki.wireshark.org/Development/LibpcapFileFormat
-       binary.LittleEndian.PutUint32(buf[16:20], snaplen)
-       binary.LittleEndian.PutUint32(buf[20:24], uint32(linktype))
-       _, err := w.w.Write(buf[:])
-       return err
-}
-
-const nanosPerMicro = 1000
-
-func (w *Writer) writePacketHeader(ci gopacket.CaptureInfo) error {
-       var buf [16]byte
-
-       t := ci.Timestamp
-       if t.IsZero() {
-               t = time.Now()
-       }
-       secs := t.Unix()
-       usecs := t.Nanosecond() / nanosPerMicro
-       binary.LittleEndian.PutUint32(buf[0:4], uint32(secs))
-       binary.LittleEndian.PutUint32(buf[4:8], uint32(usecs))
-       binary.LittleEndian.PutUint32(buf[8:12], uint32(ci.CaptureLength))
-       binary.LittleEndian.PutUint32(buf[12:16], uint32(ci.Length))
-       _, err := w.w.Write(buf[:])
-       return err
-}
-
-// WritePacket writes the given packet data out to the file.
-func (w *Writer) WritePacket(ci gopacket.CaptureInfo, data []byte) error {
-       if ci.CaptureLength != len(data) {
-               return fmt.Errorf("capture length %d does not match data length %d", ci.CaptureLength, len(data))
-       }
-       if ci.CaptureLength > ci.Length {
-               return fmt.Errorf("invalid capture info %+v:  capture length > length", ci)
-       }
-       if err := w.writePacketHeader(ci); err != nil {
-               return fmt.Errorf("error writing packet header: %v", err)
-       }
-       _, err := w.w.Write(data)
-       return err
-}
diff --git a/vendor/github.com/google/gopacket/pcapgo/write_test.go b/vendor/github.com/google/gopacket/pcapgo/write_test.go
deleted file mode 100644 (file)
index 5b87d6a..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package pcapgo
-
-import (
-       "bytes"
-       "github.com/google/gopacket"
-       "testing"
-       "time"
-)
-
-func TestWriteHeader(t *testing.T) {
-       var buf bytes.Buffer
-       w := NewWriter(&buf)
-       w.WriteFileHeader(0x1234, 0x56)
-       want := []byte{
-               0xd4, 0xc3, 0xb2, 0xa1, 0x02, 0x00, 0x04, 0x00,
-               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-               0x34, 0x12, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00,
-       }
-       if got := buf.Bytes(); !bytes.Equal(got, want) {
-               t.Errorf("buf mismatch:\nwant: %+v\ngot:  %+v", want, got)
-       }
-}
-
-func TestWritePacket(t *testing.T) {
-       ci := gopacket.CaptureInfo{
-               Timestamp:     time.Unix(0x01020304, 0xAA*1000),
-               Length:        0xABCD,
-               CaptureLength: 10,
-       }
-       data := []byte{9, 8, 7, 6, 5, 4, 3, 2, 1, 0}
-       var buf bytes.Buffer
-       w := NewWriter(&buf)
-       w.WritePacket(ci, data)
-       want := []byte{
-               0x04, 0x03, 0x02, 0x01, 0xAA, 0x00, 0x00, 0x00,
-               0x0A, 0x00, 0x00, 0x00, 0xCD, 0xAB, 0x00, 0x00,
-               0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00,
-       }
-       if got := buf.Bytes(); !bytes.Equal(got, want) {
-               t.Errorf("buf mismatch:\nwant: %+v\ngot:  %+v", want, got)
-       }
-}
-
-func TestCaptureInfoErrors(t *testing.T) {
-       data := []byte{1, 2, 3, 4}
-       ts := time.Unix(0, 0)
-       for _, test := range []gopacket.CaptureInfo{
-               gopacket.CaptureInfo{
-                       Timestamp:     ts,
-                       Length:        5,
-                       CaptureLength: 5,
-               },
-               gopacket.CaptureInfo{
-                       Timestamp:     ts,
-                       Length:        3,
-                       CaptureLength: 4,
-               },
-       } {
-               var buf bytes.Buffer
-               w := NewWriter(&buf)
-               if err := w.WritePacket(test, data); err == nil {
-                       t.Errorf("CaptureInfo %+v should have error", test)
-               }
-       }
-}
diff --git a/vendor/github.com/google/gopacket/pfring/doc.go b/vendor/github.com/google/gopacket/pfring/doc.go
deleted file mode 100644 (file)
index 32baaf6..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-/*Package pfring wraps the PF_RING C library for Go.
-
-PF_RING is a high-performance packet capture library written by ntop.org (see
-http://www.ntop.org/products/pf_ring/).  This library allows you to utilize the
-PF_RING library with gopacket to read packet data and decode it.
-
-This package is meant to be used with its parent,
-http://github.com/google/gopacket, although it can also be used independently
-if you just want to get packet data from the wire.
-
-Simple Example
-
-This is probably the simplest code you can use to start getting packets through
-pfring:
-
- if ring, err := pfring.NewRing("eth0", 65536, pfring.FlagPromisc); err != nil {
-   panic(err)
- } else if err := ring.SetBPFFilter("tcp and port 80"); err != nil {  // optional
-   panic(err)
- } else if err := ring.Enable(); err != nil { // Must do this!, or you get no packets!
-   panic(err)
- } else {
-   packetSource := gopacket.NewPacketSource(ring, layers.LinkTypeEthernet)
-        for packet := range packetSource.Packets() {
-     handlePacket(packet)  // Do something with a packet here.
-   }
- }
-
-Pfring Tweaks
-
-PF_RING has a ton of optimizations and tweaks to make sure you get just the
-packets you want.  For example, if you're only using pfring to read packets,
-consider running:
-
- ring.SetSocketMode(pfring.ReadOnly)
-
-If you only care about packets received on your interface (not those transmitted
-by the interface), you can run:
-
- ring.SetDirection(pfring.ReceiveOnly)
-
-Pfring Clusters
-
-PF_RING has an idea of 'clusters', where multiple applications can all read from
-the same cluster, and PF_RING will multiplex packets over that cluster such that
-only one application receives each packet.  We won't discuss this mechanism in
-too much more detail (see the ntop.org docs for more info), but here's how to
-utilize this with the pfring go library:
-
- ring.SetCluster(1, pfring.ClusterPerFlow5Tuple)
-*/
-package pfring
diff --git a/vendor/github.com/google/gopacket/pfring/pfring.go b/vendor/github.com/google/gopacket/pfring/pfring.go
deleted file mode 100644 (file)
index 1d2fa68..0000000
+++ /dev/null
@@ -1,343 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-// Copyright 2009-2011 Andreas Krennmair. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package pfring
-
-/*
-#cgo LDFLAGS: -lpfring -lpcap
-#include <stdlib.h>
-#include <pfring.h>
-#include <linux/pf_ring.h>
-
-int pfring_readpacketdatato_wrapper(
-    pfring* ring,
-    u_char* buffer,
-    u_int buffer_len,
-    struct pfring_pkthdr* hdr) {
-  // We can't pass a Go pointer to a Go pointer which means we can't pass
-  // buffer as a uchar**, like pfring_recv wants, for ReadPacketDataTo.  So,
-  // this wrapper does the pointer conversion in C code.  Since this isn't
-  // zero-copy, it turns out that the pointer-to-pointer part of things isn't
-  // actually used anyway.
-  return pfring_recv(ring, &buffer, buffer_len, hdr, 1);
-}
-*/
-import "C"
-
-// NOTE:  If you install PF_RING with non-standard options, you may also need
-// to use LDFLAGS -lnuma and/or -lrt.  Both have been reported necessary if
-// PF_RING is configured with --disable-bpf.
-
-import (
-       "fmt"
-       "net"
-       "os"
-       "strconv"
-       "sync"
-       "time"
-       "unsafe"
-
-       "github.com/google/gopacket"
-)
-
-const errorBufferSize = 256
-
-// Ring provides a handle to a pf_ring.
-type Ring struct {
-       // cptr is the handle for the actual pcap C object.
-       cptr                    *C.pfring
-       snaplen                 int
-       useExtendedPacketHeader bool
-       interfaceIndex          int
-       mu                      sync.Mutex
-       // Since pointers to these objects are passed into a C function, if
-       // they're declared locally then the Go compiler thinks they may have
-       // escaped into C-land, so it allocates them on the heap.  This causes a
-       // huge memory hit, so to handle that we store them here instead.
-       pkthdr C.struct_pfring_pkthdr
-       bufPtr *C.u_char
-}
-
-// Flag provides a set of boolean flags to use when creating a new ring.
-type Flag uint32
-
-// Set of flags that can be passed (OR'd together) to NewRing.
-const (
-       FlagReentrant       Flag = C.PF_RING_REENTRANT
-       FlagLongHeader      Flag = C.PF_RING_LONG_HEADER
-       FlagPromisc         Flag = C.PF_RING_PROMISC
-       FlagDNASymmetricRSS Flag = C.PF_RING_DNA_SYMMETRIC_RSS
-       FlagTimestamp       Flag = C.PF_RING_TIMESTAMP
-       FlagHWTimestamp     Flag = C.PF_RING_HW_TIMESTAMP
-)
-
-// NewRing creates a new PFRing.  Note that when the ring is initially created,
-// it is disabled.  The caller must call Enable to start receiving packets.
-// The caller should call Close on the given ring when finished with it.
-func NewRing(device string, snaplen uint32, flags Flag) (ring *Ring, _ error) {
-       dev := C.CString(device)
-       defer C.free(unsafe.Pointer(dev))
-
-       cptr, err := C.pfring_open(dev, C.u_int32_t(snaplen), C.u_int32_t(flags))
-       if cptr == nil || err != nil {
-               return nil, fmt.Errorf("pfring NewRing error: %v", err)
-       }
-       ring = &Ring{cptr: cptr, snaplen: int(snaplen)}
-
-       if flags&FlagLongHeader == FlagLongHeader {
-               ring.useExtendedPacketHeader = true
-       } else {
-               ifc, err := net.InterfaceByName(device)
-               if err == nil {
-                       ring.interfaceIndex = ifc.Index
-               }
-       }
-       ring.SetApplicationName(os.Args[0])
-       return
-}
-
-// Close closes the given Ring.  After this call, the Ring should no longer be
-// used.
-func (r *Ring) Close() {
-       C.pfring_close(r.cptr)
-}
-
-// NextResult is the return code from a call to Next.
-type NextResult int32
-
-// Set of results that could be returned from a call to get another packet.
-const (
-       NextNoPacketNonblocking NextResult = 0
-       NextError               NextResult = -1
-       NextOk                  NextResult = 1
-       NextNotEnabled          NextResult = -7
-)
-
-// NextResult implements the error interface.
-func (n NextResult) Error() string {
-       switch n {
-       case NextNoPacketNonblocking:
-               return "No packet available, nonblocking socket"
-       case NextError:
-               return "Generic error"
-       case NextOk:
-               return "Success (not an error)"
-       case NextNotEnabled:
-               return "Ring not enabled"
-       }
-       return strconv.Itoa(int(n))
-}
-
-// ReadPacketDataTo reads packet data into a user-supplied buffer.
-// This function ignores snaplen and instead reads up to the length of the
-// passed-in slice.
-// The number of bytes read into data will be returned in ci.CaptureLength.
-func (r *Ring) ReadPacketDataTo(data []byte) (ci gopacket.CaptureInfo, err error) {
-       // This tricky bufPtr points to the start of our slice data, so pfring_recv
-       // will actually write directly into our Go slice.  Nice!
-       r.mu.Lock()
-       r.bufPtr = (*C.u_char)(unsafe.Pointer(&data[0]))
-       result := NextResult(C.pfring_readpacketdatato_wrapper(r.cptr, r.bufPtr, C.u_int(len(data)), &r.pkthdr))
-       if result != NextOk {
-               err = result
-               r.mu.Unlock()
-               return
-       }
-       ci.Timestamp = time.Unix(int64(r.pkthdr.ts.tv_sec),
-               int64(r.pkthdr.ts.tv_usec)*1000) // convert micros to nanos
-       ci.CaptureLength = int(r.pkthdr.caplen)
-       ci.Length = int(r.pkthdr.len)
-       if r.useExtendedPacketHeader {
-               ci.InterfaceIndex = int(r.pkthdr.extended_hdr.if_index)
-       } else {
-               ci.InterfaceIndex = r.interfaceIndex
-       }
-       r.mu.Unlock()
-       return
-}
-
-// ReadPacketData returns the next packet read from the pcap handle, along with an error
-// code associated with that packet.  If the packet is read successfully, the
-// returned error is nil.
-func (r *Ring) ReadPacketData() (data []byte, ci gopacket.CaptureInfo, err error) {
-       data = make([]byte, r.snaplen)
-       ci, err = r.ReadPacketDataTo(data)
-       if err != nil {
-               data = nil
-               return
-       }
-       data = data[:ci.CaptureLength]
-       return
-}
-
-// ClusterType is a type of clustering used when balancing across multiple
-// rings.
-type ClusterType C.cluster_type
-
-const (
-       // ClusterPerFlow clusters by <src ip, src port, dst ip, dst port, proto,
-       // vlan>
-       ClusterPerFlow ClusterType = C.cluster_per_flow
-       // ClusterRoundRobin round-robins packets between applications, ignoring
-       // packet information.
-       ClusterRoundRobin ClusterType = C.cluster_round_robin
-       // ClusterPerFlow2Tuple clusters by <src ip, dst ip>
-       ClusterPerFlow2Tuple ClusterType = C.cluster_per_flow_2_tuple
-       // ClusterPerFlow4Tuple clusters by <src ip, src port, dst ip, dst port>
-       ClusterPerFlow4Tuple ClusterType = C.cluster_per_flow_4_tuple
-       // ClusterPerFlow5Tuple clusters by <src ip, src port, dst ip, dst port,
-       // proto>
-       ClusterPerFlow5Tuple ClusterType = C.cluster_per_flow_5_tuple
-       // ClusterPerFlowTCP5Tuple acts like ClusterPerFlow5Tuple for TCP packets and
-       // like ClusterPerFlow2Tuple for all other packets.
-       ClusterPerFlowTCP5Tuple ClusterType = C.cluster_per_flow_tcp_5_tuple
-)
-
-// SetCluster sets which cluster the ring should be part of, and the cluster
-// type to use.
-func (r *Ring) SetCluster(cluster int, typ ClusterType) error {
-       if rv := C.pfring_set_cluster(r.cptr, C.u_int(cluster), C.cluster_type(typ)); rv != 0 {
-               return fmt.Errorf("Unable to set cluster, got error code %d", rv)
-       }
-       return nil
-}
-
-// RemoveFromCluster removes the ring from the cluster it was put in with
-// SetCluster.
-func (r *Ring) RemoveFromCluster() error {
-       if rv := C.pfring_remove_from_cluster(r.cptr); rv != 0 {
-               return fmt.Errorf("Unable to remove from cluster, got error code %d", rv)
-       }
-       return nil
-}
-
-// SetSamplingRate sets the sampling rate to 1/<rate>.
-func (r *Ring) SetSamplingRate(rate int) error {
-       if rv := C.pfring_set_sampling_rate(r.cptr, C.u_int32_t(rate)); rv != 0 {
-               return fmt.Errorf("Unable to set sampling rate, got error code %d", rv)
-       }
-       return nil
-}
-
-// SetBPFFilter sets the BPF filter for the ring.
-func (r *Ring) SetBPFFilter(bpfFilter string) error {
-       filter := C.CString(bpfFilter)
-       defer C.free(unsafe.Pointer(filter))
-       if rv := C.pfring_set_bpf_filter(r.cptr, filter); rv != 0 {
-               return fmt.Errorf("Unable to set BPF filter, got error code %d", rv)
-       }
-       return nil
-}
-
-// RemoveBPFFilter removes the BPF filter from the ring.
-func (r *Ring) RemoveBPFFilter() error {
-       if rv := C.pfring_remove_bpf_filter(r.cptr); rv != 0 {
-               return fmt.Errorf("Unable to remove BPF filter, got error code %d", rv)
-       }
-       return nil
-}
-
-// WritePacketData uses the ring to send raw packet data to the interface.
-func (r *Ring) WritePacketData(data []byte) error {
-       buf := (*C.char)(unsafe.Pointer(&data[0]))
-       if rv := C.pfring_send(r.cptr, buf, C.u_int(len(data)), 1); rv < 0 {
-               return fmt.Errorf("Unable to send packet data, got error code %d", rv)
-       }
-       return nil
-}
-
-// Enable enables the given ring.  This function MUST be called on each new
-// ring after it has been set up, or that ring will NOT receive packets.
-func (r *Ring) Enable() error {
-       if rv := C.pfring_enable_ring(r.cptr); rv != 0 {
-               return fmt.Errorf("Unable to enable ring, got error code %d", rv)
-       }
-       return nil
-}
-
-// Disable disables the given ring.  After this call, it will no longer receive
-// packets.
-func (r *Ring) Disable() error {
-       if rv := C.pfring_disable_ring(r.cptr); rv != 0 {
-               return fmt.Errorf("Unable to disable ring, got error code %d", rv)
-       }
-       return nil
-}
-
-// Stats provides simple statistics on a ring.
-type Stats struct {
-       Received, Dropped uint64
-}
-
-// Stats returns statistsics for the ring.
-func (r *Ring) Stats() (s Stats, err error) {
-       var stats C.pfring_stat
-       if rv := C.pfring_stats(r.cptr, &stats); rv != 0 {
-               err = fmt.Errorf("Unable to get ring stats, got error code %d", rv)
-               return
-       }
-       s.Received = uint64(stats.recv)
-       s.Dropped = uint64(stats.drop)
-       return
-}
-
-// Direction is a simple enum to set which packets (TX, RX, or both) a ring
-// captures.
-type Direction C.packet_direction
-
-const (
-       // TransmitOnly will only capture packets transmitted by the ring's
-       // interface(s).
-       TransmitOnly Direction = C.tx_only_direction
-       // ReceiveOnly will only capture packets received by the ring's
-       // interface(s).
-       ReceiveOnly Direction = C.rx_only_direction
-       // ReceiveAndTransmit will capture both received and transmitted packets on
-       // the ring's interface(s).
-       ReceiveAndTransmit Direction = C.rx_and_tx_direction
-)
-
-// SetDirection sets which packets should be captured by the ring.
-func (r *Ring) SetDirection(d Direction) error {
-       if rv := C.pfring_set_direction(r.cptr, C.packet_direction(d)); rv != 0 {
-               return fmt.Errorf("Unable to set ring direction, got error code %d", rv)
-       }
-       return nil
-}
-
-// SocketMode is an enum for setting whether a ring should read, write, or both.
-type SocketMode C.socket_mode
-
-const (
-       // WriteOnly sets up the ring to only send packets (Inject), not read them.
-       WriteOnly SocketMode = C.send_only_mode
-       // ReadOnly sets up the ring to only receive packets (ReadPacketData), not
-       // send them.
-       ReadOnly SocketMode = C.recv_only_mode
-       // WriteAndRead sets up the ring to both send and receive packets.
-       WriteAndRead SocketMode = C.send_and_recv_mode
-)
-
-// SetSocketMode sets the mode of the ring socket to send, receive, or both.
-func (r *Ring) SetSocketMode(s SocketMode) error {
-       if rv := C.pfring_set_socket_mode(r.cptr, C.socket_mode(s)); rv != 0 {
-               return fmt.Errorf("Unable to set socket mode, got error code %d", rv)
-       }
-       return nil
-}
-
-// SetApplicationName sets a string name to the ring.  This name is available in
-// /proc stats for pf_ring.  By default, NewRing automatically calls this with
-// argv[0].
-func (r *Ring) SetApplicationName(name string) error {
-       buf := C.CString(name)
-       defer C.free(unsafe.Pointer(buf))
-       if rv := C.pfring_set_application_name(r.cptr, buf); rv != 0 {
-               return fmt.Errorf("Unable to set ring application name, got error code %d", rv)
-       }
-       return nil
-}
diff --git a/vendor/github.com/google/gopacket/reassembly/cap2test.go b/vendor/github.com/google/gopacket/reassembly/cap2test.go
deleted file mode 100644 (file)
index 1d43f1d..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// +build ignore
-
-package main
-
-import (
-       "bytes"
-       "flag"
-       "fmt"
-       "log"
-       "os"
-       "strings"
-
-       "github.com/google/gopacket"
-       "github.com/google/gopacket/layers"
-       "github.com/google/gopacket/pcap"
-)
-
-var input = flag.String("i", "", "Input filename")
-
-func main() {
-       var handler *pcap.Handle
-       var err error
-       flag.Parse()
-       if *input == "" {
-               log.Fatalf("Please specify input filename")
-       }
-       if handler, err = pcap.OpenOffline(*input); err != nil {
-               log.Fatalf("Failed to open: %s: %s", *input, err)
-       }
-       args := flag.Args()
-       if len(args) > 0 {
-               filter := strings.Join(args, " ")
-               if err := handler.SetBPFFilter(filter); err != nil {
-                       log.Fatalf("Failed to set BPF filter \"%s\": %s", filter, err)
-               }
-               handler.Stats()
-       }
-       var decoder gopacket.Decoder
-       var ok bool
-       linkType := fmt.Sprintf("%s", handler.LinkType())
-       if decoder, ok = gopacket.DecodersByLayerName[linkType]; !ok {
-               log.Fatalf("Failed to find decoder to pcap's linktype %s", linkType)
-       }
-       source := gopacket.NewPacketSource(handler, decoder)
-       count := uint64(0)
-       pktNonTcp := uint64(0)
-       pktTcp := uint64(0)
-       fmt.Println("test([]testSequence{")
-       for packet := range source.Packets() {
-               count++
-               tcp := packet.Layer(layers.LayerTypeTCP)
-               if tcp == nil {
-                       pktNonTcp++
-                       continue
-               } else {
-                       pktTcp++
-                       tcp := tcp.(*layers.TCP)
-                       //fmt.Printf("packet: %s\n", tcp)
-                       var b bytes.Buffer
-                       b.WriteString("{\n")
-                       // TCP
-                       b.WriteString("tcp: layers.TCP{\n")
-                       if tcp.SYN {
-                               b.WriteString("  SYN: true,\n")
-                       }
-                       if tcp.ACK {
-                               b.WriteString("  ACK: true,\n")
-                       }
-                       if tcp.RST {
-                               b.WriteString("  RST: true,\n")
-                       }
-                       if tcp.FIN {
-                               b.WriteString("  FIN: true,\n")
-                       }
-                       b.WriteString(fmt.Sprintf("  SrcPort: %d,\n", tcp.SrcPort))
-                       b.WriteString(fmt.Sprintf("  DstPort: %d,\n", tcp.DstPort))
-                       b.WriteString(fmt.Sprintf("  Seq: %d,\n", tcp.Seq))
-                       b.WriteString(fmt.Sprintf("  Ack: %d,\n", tcp.Ack))
-                       b.WriteString("  BaseLayer: layers.BaseLayer{Payload: []byte{")
-                       for _, p := range tcp.Payload {
-                               b.WriteString(fmt.Sprintf("%d,", p))
-                       }
-                       b.WriteString("}},\n")
-                       b.WriteString("},\n")
-                       // CaptureInfo
-                       b.WriteString("ci: gopacket.CaptureInfo{\n")
-                       ts := packet.Metadata().CaptureInfo.Timestamp
-                       b.WriteString(fmt.Sprintf("  Timestamp: time.Unix(%d,%d),\n", ts.Unix(), ts.Nanosecond()))
-                       b.WriteString("},\n")
-                       // Struct
-                       b.WriteString("},\n")
-                       fmt.Print(b.String())
-               }
-
-       }
-       fmt.Println("})")
-
-       fmt.Fprintf(os.Stderr, "Total: %d, TCP: %d, non-TCP: %d\n", count, pktTcp, pktNonTcp)
-}
diff --git a/vendor/github.com/google/gopacket/reassembly/memory.go b/vendor/github.com/google/gopacket/reassembly/memory.go
deleted file mode 100644 (file)
index c1b2ae7..0000000
+++ /dev/null
@@ -1,254 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package reassembly
-
-import (
-       "flag"
-       "log"
-       "sync"
-       "time"
-
-       "github.com/google/gopacket/layers"
-)
-
-var memLog = flag.Bool("assembly_memuse_log", defaultDebug, "If true, the github.com/google/gopacket/reassembly library will log information regarding its memory use every once in a while.")
-
-/*
- * pageCache
- */
-// pageCache is a concurrency-unsafe store of page objects we use to avoid
-// memory allocation as much as we can.
-type pageCache struct {
-       free         []*page
-       pcSize       int
-       size, used   int
-       pageRequests int64
-       ops          int
-       nextShrink   int
-}
-
-const initialAllocSize = 1024
-
-func newPageCache() *pageCache {
-       pc := &pageCache{
-               free:   make([]*page, 0, initialAllocSize),
-               pcSize: initialAllocSize,
-       }
-       pc.grow()
-       return pc
-}
-
-// grow exponentially increases the size of our page cache as much as necessary.
-func (c *pageCache) grow() {
-       pages := make([]page, c.pcSize)
-       c.size += c.pcSize
-       for i := range pages {
-               c.free = append(c.free, &pages[i])
-       }
-       if *memLog {
-               log.Println("PageCache: created", c.pcSize, "new pages, size:", c.size, "cap:", cap(c.free), "len:", len(c.free))
-       }
-       // control next shrink attempt
-       c.nextShrink = c.pcSize
-       c.ops = 0
-       // prepare for next alloc
-       c.pcSize *= 2
-}
-
-// Remove references to unused pages to let GC collect them
-// Note: memory used by c.free itself it not collected.
-func (c *pageCache) tryShrink() {
-       var min = c.pcSize / 2
-       if min < initialAllocSize {
-               min = initialAllocSize
-       }
-       if len(c.free) <= min {
-               return
-       }
-       for i := range c.free[min:] {
-               c.free[min+i] = nil
-       }
-       c.size -= len(c.free) - min
-       c.free = c.free[:min]
-       c.pcSize = min
-}
-
-// next returns a clean, ready-to-use page object.
-func (c *pageCache) next(ts time.Time) (p *page) {
-       if *memLog {
-               c.pageRequests++
-               if c.pageRequests&0xFFFF == 0 {
-                       log.Println("PageCache:", c.pageRequests, "requested,", c.used, "used,", len(c.free), "free")
-               }
-       }
-       if len(c.free) == 0 {
-               c.grow()
-       }
-       i := len(c.free) - 1
-       p, c.free = c.free[i], c.free[:i]
-       p.seen = ts
-       p.bytes = p.buf[:0]
-       c.used++
-       if *memLog {
-               log.Printf("allocator returns %s\n", p)
-       }
-       c.ops++
-       if c.ops > c.nextShrink {
-               c.ops = 0
-               c.tryShrink()
-       }
-
-       return p
-}
-
-// replace replaces a page into the pageCache.
-func (c *pageCache) replace(p *page) {
-       c.used--
-       if *memLog {
-               log.Printf("replacing %s\n", p)
-       }
-       p.prev = nil
-       p.next = nil
-       c.free = append(c.free, p)
-}
-
-/*
- * StreamPool
- */
-
-// StreamPool stores all streams created by Assemblers, allowing multiple
-// assemblers to work together on stream processing while enforcing the fact
-// that a single stream receives its data serially.  It is safe
-// for concurrency, usable by multiple Assemblers at once.
-//
-// StreamPool handles the creation and storage of Stream objects used by one or
-// more Assembler objects.  When a new TCP stream is found by an Assembler, it
-// creates an associated Stream by calling its StreamFactory's New method.
-// Thereafter (until the stream is closed), that Stream object will receive
-// assembled TCP data via Assembler's calls to the stream's Reassembled
-// function.
-//
-// Like the Assembler, StreamPool attempts to minimize allocation.  Unlike the
-// Assembler, though, it does have to do some locking to make sure that the
-// connection objects it stores are accessible to multiple Assemblers.
-type StreamPool struct {
-       conns              map[key]*connection
-       users              int
-       mu                 sync.RWMutex
-       factory            StreamFactory
-       free               []*connection
-       all                [][]connection
-       nextAlloc          int
-       newConnectionCount int64
-}
-
-func (p *StreamPool) grow() {
-       conns := make([]connection, p.nextAlloc)
-       p.all = append(p.all, conns)
-       for i := range conns {
-               p.free = append(p.free, &conns[i])
-       }
-       if *memLog {
-               log.Println("StreamPool: created", p.nextAlloc, "new connections")
-       }
-       p.nextAlloc *= 2
-}
-
-// Dump logs all connections
-func (p *StreamPool) Dump() {
-       p.mu.Lock()
-       defer p.mu.Unlock()
-       log.Printf("Remaining %d connections: ", len(p.conns))
-       for _, conn := range p.conns {
-               log.Printf("%v %s", conn.key, conn)
-       }
-}
-
-func (p *StreamPool) remove(conn *connection) {
-       p.mu.Lock()
-       if _, ok := p.conns[conn.key]; ok {
-               delete(p.conns, conn.key)
-               p.free = append(p.free, conn)
-       }
-       p.mu.Unlock()
-}
-
-// NewStreamPool creates a new connection pool.  Streams will
-// be created as necessary using the passed-in StreamFactory.
-func NewStreamPool(factory StreamFactory) *StreamPool {
-       return &StreamPool{
-               conns:     make(map[key]*connection, initialAllocSize),
-               free:      make([]*connection, 0, initialAllocSize),
-               factory:   factory,
-               nextAlloc: initialAllocSize,
-       }
-}
-
-func (p *StreamPool) connections() []*connection {
-       p.mu.RLock()
-       conns := make([]*connection, 0, len(p.conns))
-       for _, conn := range p.conns {
-               conns = append(conns, conn)
-       }
-       p.mu.RUnlock()
-       return conns
-}
-
-func (p *StreamPool) newConnection(k key, s Stream, ts time.Time) (c *connection, h *halfconnection, r *halfconnection) {
-       if *memLog {
-               p.newConnectionCount++
-               if p.newConnectionCount&0x7FFF == 0 {
-                       log.Println("StreamPool:", p.newConnectionCount, "requests,", len(p.conns), "used,", len(p.free), "free")
-               }
-       }
-       if len(p.free) == 0 {
-               p.grow()
-       }
-       index := len(p.free) - 1
-       c, p.free = p.free[index], p.free[:index]
-       c.reset(k, s, ts)
-       return c, &c.c2s, &c.s2c
-}
-
-func (p *StreamPool) getHalf(k key) (*connection, *halfconnection, *halfconnection) {
-       conn := p.conns[k]
-       if conn != nil {
-               return conn, &conn.c2s, &conn.s2c
-       }
-       rk := k.Reverse()
-       conn = p.conns[rk]
-       if conn != nil {
-               return conn, &conn.s2c, &conn.c2s
-       }
-       return nil, nil, nil
-}
-
-// getConnection returns a connection.  If end is true and a connection
-// does not already exist, returns nil.  This allows us to check for a
-// connection without actually creating one if it doesn't already exist.
-func (p *StreamPool) getConnection(k key, end bool, ts time.Time, tcp *layers.TCP, ac AssemblerContext) (*connection, *halfconnection, *halfconnection) {
-       p.mu.RLock()
-       conn, half, rev := p.getHalf(k)
-       p.mu.RUnlock()
-       if end || conn != nil {
-               return conn, half, rev
-       }
-       s := p.factory.New(k[0], k[1], tcp, ac)
-       p.mu.Lock()
-       defer p.mu.Unlock()
-       conn, half, rev = p.newConnection(k, s, ts)
-       conn2, half2, rev2 := p.getHalf(k)
-       if conn2 != nil {
-               if conn2.key != k {
-                       panic("FIXME: other dir added in the meantime...")
-               }
-               // FIXME: delete s ?
-               return conn2, half2, rev2
-       }
-       p.conns[k] = conn
-       return conn, half, rev
-}
diff --git a/vendor/github.com/google/gopacket/reassembly/tcpassembly.go b/vendor/github.com/google/gopacket/reassembly/tcpassembly.go
deleted file mode 100644 (file)
index bdf0deb..0000000
+++ /dev/null
@@ -1,1311 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// Package reassembly provides TCP stream re-assembly.
-//
-// The reassembly package implements uni-directional TCP reassembly, for use in
-// packet-sniffing applications.  The caller reads packets off the wire, then
-// presents them to an Assembler in the form of gopacket layers.TCP packets
-// (github.com/google/gopacket, github.com/google/gopacket/layers).
-//
-// The Assembler uses a user-supplied
-// StreamFactory to create a user-defined Stream interface, then passes packet
-// data in stream order to that object.  A concurrency-safe StreamPool keeps
-// track of all current Streams being reassembled, so multiple Assemblers may
-// run at once to assemble packets while taking advantage of multiple cores.
-//
-// TODO: Add simplest example
-package reassembly
-
-import (
-       "encoding/hex"
-       "flag"
-       "fmt"
-       "log"
-       "sync"
-       "time"
-
-       "github.com/google/gopacket"
-       "github.com/google/gopacket/layers"
-)
-
-// TODO:
-// - push to Stream on Ack
-// - implement chunked (cheap) reads and Reader() interface
-// - better organize file: split files: 'mem', 'misc' (seq + flow)
-
-var defaultDebug = false
-
-var debugLog = flag.Bool("assembly_debug_log", defaultDebug, "If true, the github.com/google/gopacket/reassembly library will log verbose debugging information (at least one line per packet)")
-
-const invalidSequence = -1
-const uint32Max = 0xFFFFFFFF
-
-// Sequence is a TCP sequence number.  It provides a few convenience functions
-// for handling TCP wrap-around.  The sequence should always be in the range
-// [0,0xFFFFFFFF]... its other bits are simply used in wrap-around calculations
-// and should never be set.
-type Sequence int64
-
-// Difference defines an ordering for comparing TCP sequences that's safe for
-// roll-overs.  It returns:
-//    > 0 : if t comes after s
-//    < 0 : if t comes before s
-//      0 : if t == s
-// The number returned is the sequence difference, so 4.Difference(8) will
-// return 4.
-//
-// It handles rollovers by considering any sequence in the first quarter of the
-// uint32 space to be after any sequence in the last quarter of that space, thus
-// wrapping the uint32 space.
-func (s Sequence) Difference(t Sequence) int {
-       if s > uint32Max-uint32Max/4 && t < uint32Max/4 {
-               t += uint32Max
-       } else if t > uint32Max-uint32Max/4 && s < uint32Max/4 {
-               s += uint32Max
-       }
-       return int(t - s)
-}
-
-// Add adds an integer to a sequence and returns the resulting sequence.
-func (s Sequence) Add(t int) Sequence {
-       return (s + Sequence(t)) & uint32Max
-}
-
-// TCPAssemblyStats provides some figures for a ScatterGather
-type TCPAssemblyStats struct {
-       // For this ScatterGather
-       Chunks  int
-       Packets int
-       // For the half connection, since last call to ReassembledSG()
-       QueuedBytes    int
-       QueuedPackets  int
-       OverlapBytes   int
-       OverlapPackets int
-}
-
-// ScatterGather is used to pass reassembled data and metadata of reassembled
-// packets to a Stream via ReassembledSG
-type ScatterGather interface {
-       // Returns the length of available bytes and saved bytes
-       Lengths() (int, int)
-       // Returns the bytes up to length (shall be <= available bytes)
-       Fetch(length int) []byte
-       // Tell to keep from offset
-       KeepFrom(offset int)
-       // Return CaptureInfo of packet corresponding to given offset
-       CaptureInfo(offset int) gopacket.CaptureInfo
-       // Return some info about the reassembled chunks
-       Info() (direction TCPFlowDirection, start bool, end bool, skip int)
-       // Return some stats regarding the state of the stream
-       Stats() TCPAssemblyStats
-}
-
-// byteContainer is either a page or a livePacket
-type byteContainer interface {
-       getBytes() []byte
-       length() int
-       convertToPages(*pageCache, int, AssemblerContext) (*page, *page, int)
-       captureInfo() gopacket.CaptureInfo
-       assemblerContext() AssemblerContext
-       release(*pageCache) int
-       isStart() bool
-       isEnd() bool
-       getSeq() Sequence
-       isPacket() bool
-}
-
-// Implements a ScatterGather
-type reassemblyObject struct {
-       all       []byteContainer
-       Skip      int
-       Direction TCPFlowDirection
-       saved     int
-       toKeep    int
-       // stats
-       queuedBytes    int
-       queuedPackets  int
-       overlapBytes   int
-       overlapPackets int
-}
-
-func (rl *reassemblyObject) Lengths() (int, int) {
-       l := 0
-       for _, r := range rl.all {
-               l += r.length()
-       }
-       return l, rl.saved
-}
-
-func (rl *reassemblyObject) Fetch(l int) []byte {
-       if l <= rl.all[0].length() {
-               return rl.all[0].getBytes()[:l]
-       }
-       bytes := make([]byte, 0, l)
-       for _, bc := range rl.all {
-               bytes = append(bytes, bc.getBytes()...)
-       }
-       return bytes[:l]
-}
-
-func (rl *reassemblyObject) KeepFrom(offset int) {
-       rl.toKeep = offset
-}
-
-func (rl *reassemblyObject) CaptureInfo(offset int) gopacket.CaptureInfo {
-       current := 0
-       for _, r := range rl.all {
-               if current >= offset {
-                       return r.captureInfo()
-               }
-               current += r.length()
-       }
-       // Invalid offset
-       return gopacket.CaptureInfo{}
-}
-
-func (rl *reassemblyObject) Info() (TCPFlowDirection, bool, bool, int) {
-       return rl.Direction, rl.all[0].isStart(), rl.all[len(rl.all)-1].isEnd(), rl.Skip
-}
-
-func (rl *reassemblyObject) Stats() TCPAssemblyStats {
-       packets := int(0)
-       for _, r := range rl.all {
-               if r.isPacket() {
-                       packets++
-               }
-       }
-       return TCPAssemblyStats{
-               Chunks:         len(rl.all),
-               Packets:        packets,
-               QueuedBytes:    rl.queuedBytes,
-               QueuedPackets:  rl.queuedPackets,
-               OverlapBytes:   rl.overlapBytes,
-               OverlapPackets: rl.overlapPackets,
-       }
-}
-
-const pageBytes = 1900
-
-// TCPFlowDirection distinguish the two half-connections directions.
-//
-// TCPDirClientToServer is assigned to half-connection for the first received
-// packet, hence might be wrong if packets are not received in order.
-// It's up to the caller (e.g. in Accept()) to decide if the direction should
-// be interpretted differently.
-type TCPFlowDirection bool
-
-// Value are not really useful
-const (
-       TCPDirClientToServer TCPFlowDirection = false
-       TCPDirServerToClient TCPFlowDirection = true
-)
-
-func (dir TCPFlowDirection) String() string {
-       switch dir {
-       case TCPDirClientToServer:
-               return "client->server"
-       case TCPDirServerToClient:
-               return "server->client"
-       }
-       return ""
-}
-
-// Reverse returns the reversed direction
-func (dir TCPFlowDirection) Reverse() TCPFlowDirection {
-       return !dir
-}
-
-/* page: implements a byteContainer */
-
-// page is used to store TCP data we're not ready for yet (out-of-order
-// packets).  Unused pages are stored in and returned from a pageCache, which
-// avoids memory allocation.  Used pages are stored in a doubly-linked list in
-// a connection.
-type page struct {
-       bytes      []byte
-       seq        Sequence
-       prev, next *page
-       buf        [pageBytes]byte
-       ac         AssemblerContext // only set for the first page of a packet
-       seen       time.Time
-       start, end bool
-}
-
-func (p *page) getBytes() []byte {
-       return p.bytes
-}
-func (p *page) captureInfo() gopacket.CaptureInfo {
-       return p.ac.GetCaptureInfo()
-}
-func (p *page) assemblerContext() AssemblerContext {
-       return p.ac
-}
-func (p *page) convertToPages(pc *pageCache, skip int, ac AssemblerContext) (*page, *page, int) {
-       if skip != 0 {
-               p.bytes = p.bytes[skip:]
-               p.seq = p.seq.Add(skip)
-       }
-       p.prev, p.next = nil, nil
-       return p, p, 1
-}
-func (p *page) length() int {
-       return len(p.bytes)
-}
-func (p *page) release(pc *pageCache) int {
-       pc.replace(p)
-       return 1
-}
-func (p *page) isStart() bool {
-       return p.start
-}
-func (p *page) isEnd() bool {
-       return p.end
-}
-func (p *page) getSeq() Sequence {
-       return p.seq
-}
-func (p *page) isPacket() bool {
-       return p.ac != nil
-}
-func (p *page) String() string {
-       return fmt.Sprintf("page@%p{seq: %v, bytes:%d, -> nextSeq:%v} (prev:%p, next:%p)", p, p.seq, len(p.bytes), p.seq+Sequence(len(p.bytes)), p.prev, p.next)
-}
-
-/* livePacket: implements a byteContainer */
-type livePacket struct {
-       bytes []byte
-       start bool
-       end   bool
-       ci    gopacket.CaptureInfo
-       ac    AssemblerContext
-       seq   Sequence
-}
-
-func (lp *livePacket) getBytes() []byte {
-       return lp.bytes
-}
-func (lp *livePacket) captureInfo() gopacket.CaptureInfo {
-       return lp.ci
-}
-func (lp *livePacket) assemblerContext() AssemblerContext {
-       return lp.ac
-}
-func (lp *livePacket) length() int {
-       return len(lp.bytes)
-}
-func (lp *livePacket) isStart() bool {
-       return lp.start
-}
-func (lp *livePacket) isEnd() bool {
-       return lp.end
-}
-func (lp *livePacket) getSeq() Sequence {
-       return lp.seq
-}
-func (lp *livePacket) isPacket() bool {
-       return true
-}
-
-// Creates a page (or set of pages) from a TCP packet: returns the first and last
-// page in its doubly-linked list of new pages.
-func (lp *livePacket) convertToPages(pc *pageCache, skip int, ac AssemblerContext) (*page, *page, int) {
-       ts := lp.ci.Timestamp
-       first := pc.next(ts)
-       current := first
-       current.prev = nil
-       first.ac = ac
-       numPages := 1
-       seq, bytes := lp.seq.Add(skip), lp.bytes[skip:]
-       for {
-               length := min(len(bytes), pageBytes)
-               current.bytes = current.buf[:length]
-               copy(current.bytes, bytes)
-               current.seq = seq
-               bytes = bytes[length:]
-               if len(bytes) == 0 {
-                       current.end = lp.isEnd()
-                       current.next = nil
-                       break
-               }
-               seq = seq.Add(length)
-               current.next = pc.next(ts)
-               current.next.prev = current
-               current = current.next
-               current.ac = nil
-               numPages++
-       }
-       return first, current, numPages
-}
-func (lp *livePacket) estimateNumberOfPages() int {
-       return (len(lp.bytes) + pageBytes + 1) / pageBytes
-}
-
-func (lp *livePacket) release(*pageCache) int {
-       return 0
-}
-
-// Stream is implemented by the caller to handle incoming reassembled
-// TCP data.  Callers create a StreamFactory, then StreamPool uses
-// it to create a new Stream for every TCP stream.
-//
-// assembly will, in order:
-//    1) Create the stream via StreamFactory.New
-//    2) Call ReassembledSG 0 or more times, passing in reassembled TCP data in order
-//    3) Call ReassemblyComplete one time, after which the stream is dereferenced by assembly.
-type Stream interface {
-       // Tell whether the TCP packet should be accepted, start could be modified to force a start even if no SYN have been seen
-       Accept(tcp *layers.TCP, ci gopacket.CaptureInfo, dir TCPFlowDirection, ackSeq Sequence, start *bool, ac AssemblerContext) bool
-
-       // ReassembledSG is called zero or more times.
-       // ScatterGather is reused after each Reassembled call,
-       // so it's important to copy anything you need out of it,
-       // especially bytes (or use KeepFrom())
-       ReassembledSG(sg ScatterGather, ac AssemblerContext)
-
-       // ReassemblyComplete is called when assembly decides there is
-       // no more data for this Stream, either because a FIN or RST packet
-       // was seen, or because the stream has timed out without any new
-       // packet data (due to a call to FlushCloseOlderThan).
-       // It should return true if the connection should be removed from the pool
-       // It can return false if it want to see subsequent packets with Accept(), e.g. to
-       // see FIN-ACK, for deeper state-machine analysis.
-       ReassemblyComplete(ac AssemblerContext) bool
-}
-
-// StreamFactory is used by assembly to create a new stream for each
-// new TCP session.
-type StreamFactory interface {
-       // New should return a new stream for the given TCP key.
-       New(netFlow, tcpFlow gopacket.Flow, tcp *layers.TCP, ac AssemblerContext) Stream
-}
-
-type key [2]gopacket.Flow
-
-func (k *key) String() string {
-       return fmt.Sprintf("%s:%s", k[0], k[1])
-}
-
-func (k *key) Reverse() key {
-       return key{
-               k[0].Reverse(),
-               k[1].Reverse(),
-       }
-}
-
-const assemblerReturnValueInitialSize = 16
-
-/* one-way connection, i.e. halfconnection */
-type halfconnection struct {
-       dir               TCPFlowDirection
-       pages             int      // Number of pages used (both in first/last and saved)
-       saved             *page    // Doubly-linked list of in-order pages (seq < nextSeq) already given to Stream who told us to keep
-       first, last       *page    // Doubly-linked list of out-of-order pages (seq > nextSeq)
-       nextSeq           Sequence // sequence number of in-order received bytes
-       ackSeq            Sequence
-       created, lastSeen time.Time
-       stream            Stream
-       closed            bool
-       // for stats
-       queuedBytes    int
-       queuedPackets  int
-       overlapBytes   int
-       overlapPackets int
-}
-
-func (half *halfconnection) String() string {
-       closed := ""
-       if half.closed {
-               closed = "closed "
-       }
-       return fmt.Sprintf("%screated:%v, last:%v", closed, half.created, half.lastSeen)
-}
-
-// Dump returns a string (crypticly) describing the halfconnction
-func (half *halfconnection) Dump() string {
-       s := fmt.Sprintf("pages: %d\n"+
-               "nextSeq: %d\n"+
-               "ackSeq: %d\n"+
-               "Seen :  %s\n"+
-               "dir:    %s\n", half.pages, half.nextSeq, half.ackSeq, half.lastSeen, half.dir)
-       nb := 0
-       for p := half.first; p != nil; p = p.next {
-               s += fmt.Sprintf("      Page[%d] %s len: %d\n", nb, p, len(p.bytes))
-               nb++
-       }
-       return s
-}
-
-/* Bi-directionnal connection */
-
-type connection struct {
-       key      key // client->server
-       c2s, s2c halfconnection
-       mu       sync.Mutex
-}
-
-func (c *connection) reset(k key, s Stream, ts time.Time) {
-       c.key = k
-       base := halfconnection{
-               nextSeq:  invalidSequence,
-               ackSeq:   invalidSequence,
-               created:  ts,
-               lastSeen: ts,
-               stream:   s,
-       }
-       c.c2s, c.s2c = base, base
-       c.c2s.dir, c.s2c.dir = TCPDirClientToServer, TCPDirServerToClient
-}
-
-func (c *connection) String() string {
-       return fmt.Sprintf("c2s: %s, s2c: %s", &c.c2s, &c.s2c)
-}
-
-/*
- * Assembler
- */
-
-// DefaultAssemblerOptions provides default options for an assembler.
-// These options are used by default when calling NewAssembler, so if
-// modified before a NewAssembler call they'll affect the resulting Assembler.
-//
-// Note that the default options can result in ever-increasing memory usage
-// unless one of the Flush* methods is called on a regular basis.
-var DefaultAssemblerOptions = AssemblerOptions{
-       MaxBufferedPagesPerConnection: 0, // unlimited
-       MaxBufferedPagesTotal:         0, // unlimited
-}
-
-// AssemblerOptions controls the behavior of each assembler.  Modify the
-// options of each assembler you create to change their behavior.
-type AssemblerOptions struct {
-       // MaxBufferedPagesTotal is an upper limit on the total number of pages to
-       // buffer while waiting for out-of-order packets.  Once this limit is
-       // reached, the assembler will degrade to flushing every connection it
-       // gets a packet for.  If <= 0, this is ignored.
-       MaxBufferedPagesTotal int
-       // MaxBufferedPagesPerConnection is an upper limit on the number of pages
-       // buffered for a single connection.  Should this limit be reached for a
-       // particular connection, the smallest sequence number will be flushed, along
-       // with any contiguous data.  If <= 0, this is ignored.
-       MaxBufferedPagesPerConnection int
-}
-
-// Assembler handles reassembling TCP streams.  It is not safe for
-// concurrency... after passing a packet in via the Assemble call, the caller
-// must wait for that call to return before calling Assemble again.  Callers can
-// get around this by creating multiple assemblers that share a StreamPool.  In
-// that case, each individual stream will still be handled serially (each stream
-// has an individual mutex associated with it), however multiple assemblers can
-// assemble different connections concurrently.
-//
-// The Assembler provides (hopefully) fast TCP stream re-assembly for sniffing
-// applications written in Go.  The Assembler uses the following methods to be
-// as fast as possible, to keep packet processing speedy:
-//
-// Avoids Lock Contention
-//
-// Assemblers locks connections, but each connection has an individual lock, and
-// rarely will two Assemblers be looking at the same connection.  Assemblers
-// lock the StreamPool when looking up connections, but they use Reader
-// locks initially, and only force a write lock if they need to create a new
-// connection or close one down.  These happen much less frequently than
-// individual packet handling.
-//
-// Each assembler runs in its own goroutine, and the only state shared between
-// goroutines is through the StreamPool.  Thus all internal Assembler state
-// can be handled without any locking.
-//
-// NOTE:  If you can guarantee that packets going to a set of Assemblers will
-// contain information on different connections per Assembler (for example,
-// they're already hashed by PF_RING hashing or some other hashing mechanism),
-// then we recommend you use a seperate StreamPool per Assembler, thus
-// avoiding all lock contention.  Only when different Assemblers could receive
-// packets for the same Stream should a StreamPool be shared between them.
-//
-// Avoids Memory Copying
-//
-// In the common case, handling of a single TCP packet should result in zero
-// memory allocations.  The Assembler will look up the connection, figure out
-// that the packet has arrived in order, and immediately pass that packet on to
-// the appropriate connection's handling code.  Only if a packet arrives out of
-// order is its contents copied and stored in memory for later.
-//
-// Avoids Memory Allocation
-//
-// Assemblers try very hard to not use memory allocation unless absolutely
-// necessary.  Packet data for sequential packets is passed directly to streams
-// with no copying or allocation.  Packet data for out-of-order packets is
-// copied into reusable pages, and new pages are only allocated rarely when the
-// page cache runs out.  Page caches are Assembler-specific, thus not used
-// concurrently and requiring no locking.
-//
-// Internal representations for connection objects are also reused over time.
-// Because of this, the most common memory allocation done by the Assembler is
-// generally what's done by the caller in StreamFactory.New.  If no allocation
-// is done there, then very little allocation is done ever, mostly to handle
-// large increases in bandwidth or numbers of connections.
-//
-// TODO:  The page caches used by an Assembler will grow to the size necessary
-// to handle a workload, and currently will never shrink.  This means that
-// traffic spikes can result in large memory usage which isn't garbage
-// collected when typical traffic levels return.
-type Assembler struct {
-       AssemblerOptions
-       ret      []byteContainer
-       pc       *pageCache
-       connPool *StreamPool
-       cacheLP  livePacket
-       cacheSG  reassemblyObject
-       start    bool
-}
-
-// NewAssembler creates a new assembler.  Pass in the StreamPool
-// to use, may be shared across assemblers.
-//
-// This sets some sane defaults for the assembler options,
-// see DefaultAssemblerOptions for details.
-func NewAssembler(pool *StreamPool) *Assembler {
-       pool.mu.Lock()
-       pool.users++
-       pool.mu.Unlock()
-       return &Assembler{
-               ret:              make([]byteContainer, assemblerReturnValueInitialSize),
-               pc:               newPageCache(),
-               connPool:         pool,
-               AssemblerOptions: DefaultAssemblerOptions,
-       }
-}
-
-// Dump returns a short string describing the page usage of the Assembler
-func (a *Assembler) Dump() string {
-       s := ""
-       s += fmt.Sprintf("pageCache: used: %d, size: %d, free: %d", a.pc.used, a.pc.size, len(a.pc.free))
-       return s
-}
-
-// AssemblerContext provides method to get metadata
-type AssemblerContext interface {
-       GetCaptureInfo() gopacket.CaptureInfo
-}
-
-// Implements AssemblerContext for Assemble()
-type assemblerSimpleContext gopacket.CaptureInfo
-
-func (asc *assemblerSimpleContext) GetCaptureInfo() gopacket.CaptureInfo {
-       return gopacket.CaptureInfo(*asc)
-}
-
-// Assemble calls AssembleWithContext with the current timestamp, useful for
-// packets being read directly off the wire.
-func (a *Assembler) Assemble(netFlow gopacket.Flow, t *layers.TCP) {
-       ctx := assemblerSimpleContext(gopacket.CaptureInfo{Timestamp: time.Now()})
-       a.AssembleWithContext(netFlow, t, &ctx)
-}
-
-type assemblerAction struct {
-       nextSeq Sequence
-       queue   bool
-}
-
-// AssembleWithContext reassembles the given TCP packet into its appropriate
-// stream.
-//
-// The timestamp passed in must be the timestamp the packet was seen.
-// For packets read off the wire, time.Now() should be fine.  For packets read
-// from PCAP files, CaptureInfo.Timestamp should be passed in.  This timestamp
-// will affect which streams are flushed by a call to FlushCloseOlderThan.
-//
-// Each AssembleWithContext call results in, in order:
-//
-//    zero or one call to StreamFactory.New, creating a stream
-//    zero or one call to ReassembledSG on a single stream
-//    zero or one call to ReassemblyComplete on the same stream
-func (a *Assembler) AssembleWithContext(netFlow gopacket.Flow, t *layers.TCP, ac AssemblerContext) {
-       var conn *connection
-       var half *halfconnection
-       var rev *halfconnection
-
-       a.ret = a.ret[:0]
-       key := key{netFlow, t.TransportFlow()}
-       ci := ac.GetCaptureInfo()
-       timestamp := ci.Timestamp
-
-       conn, half, rev = a.connPool.getConnection(key, false, timestamp, t, ac)
-       if conn == nil {
-               if *debugLog {
-                       log.Printf("%v got empty packet on otherwise empty connection", key)
-               }
-               return
-       }
-       conn.mu.Lock()
-       defer conn.mu.Unlock()
-       if half.lastSeen.Before(timestamp) {
-               half.lastSeen = timestamp
-       }
-       a.start = half.nextSeq == invalidSequence && t.SYN
-       if !half.stream.Accept(t, ci, half.dir, rev.ackSeq, &a.start, ac) {
-               if *debugLog {
-                       log.Printf("Ignoring packet")
-               }
-               return
-       }
-       if half.closed {
-               // this way is closed
-               return
-       }
-
-       seq, ack, bytes := Sequence(t.Seq), Sequence(t.Ack), t.Payload
-       if t.ACK {
-               half.ackSeq = ack
-       }
-       // TODO: push when Ack is seen ??
-       action := assemblerAction{
-               nextSeq: Sequence(invalidSequence),
-               queue:   true,
-       }
-       a.dump("AssembleWithContext()", half)
-       if half.nextSeq == invalidSequence {
-               if t.SYN {
-                       if *debugLog {
-                               log.Printf("%v saw first SYN packet, returning immediately, seq=%v", key, seq)
-                       }
-                       seq = seq.Add(1)
-                       half.nextSeq = seq
-                       action.queue = false
-               } else if a.start {
-                       if *debugLog {
-                               log.Printf("%v start forced", key)
-                       }
-                       half.nextSeq = seq
-                       action.queue = false
-               } else {
-                       if *debugLog {
-                               log.Printf("%v waiting for start, storing into connection", key)
-                       }
-               }
-       } else {
-               diff := half.nextSeq.Difference(seq)
-               if diff > 0 {
-                       if *debugLog {
-                               log.Printf("%v gap in sequence numbers (%v, %v) diff %v, storing into connection", key, half.nextSeq, seq, diff)
-                       }
-               } else {
-                       if *debugLog {
-                               log.Printf("%v found contiguous data (%v, %v), returning immediately: len:%d", key, seq, half.nextSeq, len(bytes))
-                       }
-                       action.queue = false
-               }
-       }
-
-       action = a.handleBytes(bytes, seq, half, ci, t.SYN, t.RST || t.FIN, action, ac)
-       if len(a.ret) > 0 {
-               action.nextSeq = a.sendToConnection(conn, half, ac)
-       }
-       if action.nextSeq != invalidSequence {
-               half.nextSeq = action.nextSeq
-               if t.FIN {
-                       half.nextSeq = half.nextSeq.Add(1)
-               }
-       }
-       if *debugLog {
-               log.Printf("%v nextSeq:%d", key, half.nextSeq)
-       }
-}
-
-// Overlap strategies:
-//  - new packet overlaps with sent packets:
-//     1) discard new overlapping part
-//     2) overwrite old overlapped (TODO)
-//  - new packet overlaps existing queued packets:
-//     a) consider "age" by timestamp (TODO)
-//     b) consider "age" by being present
-//     Then
-//      1) discard new overlapping part
-//      2) overwrite queued part
-
-func (a *Assembler) checkOverlap(half *halfconnection, queue bool, ac AssemblerContext) {
-       var next *page
-       cur := half.last
-       bytes := a.cacheLP.bytes
-       start := a.cacheLP.seq
-       end := start.Add(len(bytes))
-
-       a.dump("before checkOverlap", half)
-
-       //          [s6           :           e6]
-       //   [s1:e1][s2:e2] -- [s3:e3] -- [s4:e4][s5:e5]
-       //             [s <--ds-- : --de--> e]
-       for cur != nil {
-
-               if *debugLog {
-                       log.Printf("cur = %p (%s)\n", cur, cur)
-               }
-
-               // end < cur.start: continue (5)
-               if end.Difference(cur.seq) > 0 {
-                       if *debugLog {
-                               log.Printf("case 5\n")
-                       }
-                       next = cur
-                       cur = cur.prev
-                       continue
-               }
-
-               curEnd := cur.seq.Add(len(cur.bytes))
-               // start > cur.end: stop (1)
-               if start.Difference(curEnd) <= 0 {
-                       if *debugLog {
-                               log.Printf("case 1\n")
-                       }
-                       break
-               }
-
-               diffStart := start.Difference(cur.seq)
-               diffEnd := end.Difference(curEnd)
-
-               // end > cur.end && start < cur.start: drop (3)
-               if diffEnd <= 0 && diffStart >= 0 {
-                       if *debugLog {
-                               log.Printf("case 3\n")
-                       }
-                       if cur.isPacket() {
-                               half.overlapPackets++
-                       }
-                       half.overlapBytes += len(cur.bytes)
-                       // update links
-                       if cur.prev != nil {
-                               cur.prev.next = cur.next
-                       } else {
-                               half.first = cur.next
-                       }
-                       if cur.next != nil {
-                               cur.next.prev = cur.prev
-                       } else {
-                               half.last = cur.prev
-                       }
-                       tmp := cur.prev
-                       half.pages -= cur.release(a.pc)
-                       cur = tmp
-                       continue
-               }
-
-               // end > cur.end && start < cur.end: drop cur's end (2)
-               if diffEnd < 0 && start.Difference(curEnd) > 0 {
-                       if *debugLog {
-                               log.Printf("case 2\n")
-                       }
-                       cur.bytes = cur.bytes[:-start.Difference(cur.seq)]
-                       break
-               } else
-
-               // start < cur.start && end > cur.start: drop cur's start (4)
-               if diffStart > 0 && end.Difference(cur.seq) < 0 {
-                       if *debugLog {
-                               log.Printf("case 4\n")
-                       }
-                       cur.bytes = cur.bytes[-end.Difference(cur.seq):]
-                       cur.seq = cur.seq.Add(-end.Difference(cur.seq))
-                       next = cur
-               } else
-
-               // end < cur.end && start > cur.start: replace bytes inside cur (6)
-               if diffEnd > 0 && diffStart < 0 {
-                       if *debugLog {
-                               log.Printf("case 6\n")
-                       }
-                       copy(cur.bytes[-diffStart:-diffStart+len(bytes)], bytes)
-                       bytes = bytes[:0]
-               } else {
-                       if *debugLog {
-                               log.Printf("no overlap\n")
-                       }
-                       next = cur
-               }
-               cur = cur.prev
-       }
-
-       // Split bytes into pages, and insert in queue
-       a.cacheLP.bytes = bytes
-       a.cacheLP.seq = start
-       if len(bytes) > 0 && queue {
-               p, p2, numPages := a.cacheLP.convertToPages(a.pc, 0, ac)
-               half.queuedPackets++
-               half.queuedBytes += len(bytes)
-               half.pages += numPages
-               if cur != nil {
-                       if *debugLog {
-                               log.Printf("adding %s after %s", p, cur)
-                       }
-                       cur.next = p
-                       p.prev = cur
-               } else {
-                       if *debugLog {
-                               log.Printf("adding %s as first", p)
-                       }
-                       half.first = p
-               }
-               if next != nil {
-                       if *debugLog {
-                               log.Printf("setting %s as next of new %s", next, p2)
-                       }
-                       p2.next = next
-                       next.prev = p2
-               } else {
-                       if *debugLog {
-                               log.Printf("setting %s as last", p2)
-                       }
-                       half.last = p2
-               }
-       }
-       a.dump("After checkOverlap", half)
-}
-
-// Warning: this is a low-level dumper, i.e. a.ret or a.cacheSG might
-// be strange, but it could be ok.
-func (a *Assembler) dump(text string, half *halfconnection) {
-       if !*debugLog {
-               return
-       }
-       log.Printf("%s: dump\n", text)
-       if half != nil {
-               p := half.first
-               if p == nil {
-                       log.Printf(" * half.first = %p, no chunks queued\n", p)
-               } else {
-                       s := 0
-                       nb := 0
-                       log.Printf(" * half.first = %p, queued chunks:", p)
-                       for p != nil {
-                               log.Printf("\t%s bytes:%s\n", p, hex.EncodeToString(p.bytes))
-                               s += len(p.bytes)
-                               nb++
-                               p = p.next
-                       }
-                       log.Printf("\t%d chunks for %d bytes", nb, s)
-               }
-               log.Printf(" * half.last = %p\n", half.last)
-               log.Printf(" * half.saved = %p\n", half.saved)
-               p = half.saved
-               for p != nil {
-                       log.Printf("\tseq:%d %s bytes:%s\n", p.getSeq(), p, hex.EncodeToString(p.bytes))
-                       p = p.next
-               }
-       }
-       log.Printf(" * a.ret\n")
-       for i, r := range a.ret {
-               log.Printf("\t%d: %s b:%s\n", i, r.captureInfo(), hex.EncodeToString(r.getBytes()))
-       }
-       log.Printf(" * a.cacheSG.all\n")
-       for i, r := range a.cacheSG.all {
-               log.Printf("\t%d: %s b:%s\n", i, r.captureInfo(), hex.EncodeToString(r.getBytes()))
-       }
-}
-
-func (a *Assembler) overlapExisting(half *halfconnection, start, end Sequence, bytes []byte) ([]byte, Sequence) {
-       if half.nextSeq == invalidSequence {
-               // no start yet
-               return bytes, start
-       }
-       diff := start.Difference(half.nextSeq)
-       if diff == 0 {
-               return bytes, start
-       }
-       s := 0
-       e := len(bytes)
-       // TODO: depending on strategy, we might want to shrink half.saved if possible
-       if e != 0 {
-               if *debugLog {
-                       log.Printf("Overlap detected: ignoring current packet's first %d bytes", diff)
-               }
-               half.overlapPackets++
-               half.overlapBytes += diff
-       }
-       start = start.Add(diff)
-       s += diff
-       if s >= e {
-               // Completely included in sent
-               s = e
-       }
-       bytes = bytes[s:]
-       e -= diff
-       return bytes, start
-}
-
-// Prepare send or queue
-func (a *Assembler) handleBytes(bytes []byte, seq Sequence, half *halfconnection, ci gopacket.CaptureInfo, start bool, end bool, action assemblerAction, ac AssemblerContext) assemblerAction {
-       a.cacheLP.bytes = bytes
-       a.cacheLP.start = start
-       a.cacheLP.end = end
-       a.cacheLP.seq = seq
-       a.cacheLP.ci = ci
-       a.cacheLP.ac = ac
-
-       if action.queue {
-               a.checkOverlap(half, true, ac)
-               if (a.MaxBufferedPagesPerConnection > 0 && half.pages >= a.MaxBufferedPagesPerConnection) ||
-                       (a.MaxBufferedPagesTotal > 0 && a.pc.used >= a.MaxBufferedPagesTotal) {
-                       if *debugLog {
-                               log.Printf("hit max buffer size: %+v, %v, %v", a.AssemblerOptions, half.pages, a.pc.used)
-                       }
-                       action.queue = false
-                       a.addNextFromConn(half)
-               }
-               a.dump("handleBytes after queue", half)
-       } else {
-               a.cacheLP.bytes, a.cacheLP.seq = a.overlapExisting(half, seq, seq.Add(len(bytes)), a.cacheLP.bytes)
-               a.checkOverlap(half, false, ac)
-               if len(a.cacheLP.bytes) != 0 || end || start {
-                       a.ret = append(a.ret, &a.cacheLP)
-               }
-               a.dump("handleBytes after no queue", half)
-       }
-       return action
-}
-
-func (a *Assembler) setStatsToSG(half *halfconnection) {
-       a.cacheSG.queuedBytes = half.queuedBytes
-       half.queuedBytes = 0
-       a.cacheSG.queuedPackets = half.queuedPackets
-       half.queuedPackets = 0
-       a.cacheSG.overlapBytes = half.overlapBytes
-       half.overlapBytes = 0
-       a.cacheSG.overlapPackets = half.overlapPackets
-       half.overlapPackets = 0
-}
-
-// Build the ScatterGather object, i.e. prepend saved bytes and
-// append continuous bytes.
-func (a *Assembler) buildSG(half *halfconnection) (bool, Sequence) {
-       // find if there are skipped bytes
-       skip := -1
-       if half.nextSeq != invalidSequence {
-               skip = half.nextSeq.Difference(a.ret[0].getSeq())
-       }
-       last := a.ret[0].getSeq().Add(a.ret[0].length())
-       // Prepend saved bytes
-       saved := a.addPending(half, a.ret[0].getSeq())
-       // Append continuous bytes
-       nextSeq := a.addContiguous(half, last)
-       a.cacheSG.all = a.ret
-       a.cacheSG.Direction = half.dir
-       a.cacheSG.Skip = skip
-       a.cacheSG.saved = saved
-       a.cacheSG.toKeep = -1
-       a.setStatsToSG(half)
-       a.dump("after buildSG", half)
-       return a.ret[len(a.ret)-1].isEnd(), nextSeq
-}
-
-func (a *Assembler) cleanSG(half *halfconnection, ac AssemblerContext) {
-       cur := 0
-       ndx := 0
-       skip := 0
-
-       a.dump("cleanSG(start)", half)
-
-       var r byteContainer
-       // Find first page to keep
-       if a.cacheSG.toKeep < 0 {
-               ndx = len(a.cacheSG.all)
-       } else {
-               skip = a.cacheSG.toKeep
-               found := false
-               for ndx, r = range a.cacheSG.all {
-                       if a.cacheSG.toKeep < cur+r.length() {
-                               found = true
-                               break
-                       }
-                       cur += r.length()
-                       if skip >= r.length() {
-                               skip -= r.length()
-                       }
-               }
-               if !found {
-                       ndx++
-               }
-       }
-       // Release consumed pages
-       for _, r := range a.cacheSG.all[:ndx] {
-               if r == half.saved {
-                       if half.saved.next != nil {
-                               half.saved.next.prev = nil
-                       }
-                       half.saved = half.saved.next
-               } else if r == half.first {
-                       if half.first.next != nil {
-                               half.first.next.prev = nil
-                       }
-                       if half.first == half.last {
-                               half.first, half.last = nil, nil
-                       } else {
-                               half.first = half.first.next
-                       }
-               }
-               half.pages -= r.release(a.pc)
-       }
-       a.dump("after consumed release", half)
-       // Keep un-consumed pages
-       nbKept := 0
-       half.saved = nil
-       var saved *page
-       for _, r := range a.cacheSG.all[ndx:] {
-               first, last, nb := r.convertToPages(a.pc, skip, ac)
-               if half.saved == nil {
-                       half.saved = first
-               } else {
-                       saved.next = first
-                       first.prev = saved
-               }
-               saved = last
-               nbKept += nb
-       }
-       if *debugLog {
-               log.Printf("Remaining %d chunks in SG\n", nbKept)
-               log.Printf("%s\n", a.Dump())
-               a.dump("after cleanSG()", half)
-       }
-}
-
-// sendToConnection sends the current values in a.ret to the connection, closing
-// the connection if the last thing sent had End set.
-func (a *Assembler) sendToConnection(conn *connection, half *halfconnection, ac AssemblerContext) Sequence {
-       if *debugLog {
-               log.Printf("sendToConnection\n")
-       }
-       end, nextSeq := a.buildSG(half)
-       half.stream.ReassembledSG(&a.cacheSG, ac)
-       a.cleanSG(half, ac)
-       if end {
-               a.closeHalfConnection(conn, half)
-       }
-       if *debugLog {
-               log.Printf("after sendToConnection: nextSeq: %d\n", nextSeq)
-       }
-       return nextSeq
-}
-
-//
-func (a *Assembler) addPending(half *halfconnection, firstSeq Sequence) int {
-       if half.saved == nil {
-               return 0
-       }
-       s := 0
-       ret := []byteContainer{}
-       for p := half.saved; p != nil; p = p.next {
-               if *debugLog {
-                       log.Printf("adding pending @%p %s (%s)\n", p, p, hex.EncodeToString(p.bytes))
-               }
-               ret = append(ret, p)
-               s += len(p.bytes)
-       }
-       if half.saved.seq.Add(s) != firstSeq {
-               // non-continuous saved: drop them
-               var next *page
-               for p := half.saved; p != nil; p = next {
-                       next = p.next
-                       p.release(a.pc)
-               }
-               half.saved = nil
-               ret = []byteContainer{}
-               s = 0
-       }
-
-       a.ret = append(ret, a.ret...)
-       return s
-}
-
-// addContiguous adds contiguous byte-sets to a connection.
-func (a *Assembler) addContiguous(half *halfconnection, lastSeq Sequence) Sequence {
-       page := half.first
-       if page == nil {
-               if *debugLog {
-                       log.Printf("addContiguous(%d): no pages\n", lastSeq)
-               }
-               return lastSeq
-       }
-       if lastSeq == invalidSequence {
-               lastSeq = page.seq
-       }
-       for page != nil && lastSeq.Difference(page.seq) == 0 {
-               if *debugLog {
-                       log.Printf("addContiguous: lastSeq: %d, first.seq=%d, page.seq=%d\n", half.nextSeq, half.first.seq, page.seq)
-               }
-               lastSeq = lastSeq.Add(len(page.bytes))
-               a.ret = append(a.ret, page)
-               half.first = page.next
-               if half.first == nil {
-                       half.last = nil
-               }
-               if page.next != nil {
-                       page.next.prev = nil
-               }
-               page = page.next
-       }
-       return lastSeq
-}
-
-// skipFlush skips the first set of bytes we're waiting for and returns the
-// first set of bytes we have.  If we have no bytes saved, it closes the
-// connection.
-func (a *Assembler) skipFlush(conn *connection, half *halfconnection) {
-       if *debugLog {
-               log.Printf("skipFlush %v\n", half.nextSeq)
-       }
-       // Well, it's embarassing it there is still something in half.saved
-       // FIXME: change API to give back saved + new/no packets
-       if half.first == nil {
-               a.closeHalfConnection(conn, half)
-               return
-       }
-       a.ret = a.ret[:0]
-       a.addNextFromConn(half)
-       nextSeq := a.sendToConnection(conn, half, a.ret[0].assemblerContext())
-       if nextSeq != invalidSequence {
-               half.nextSeq = nextSeq
-       }
-}
-
-func (a *Assembler) closeHalfConnection(conn *connection, half *halfconnection) {
-       if *debugLog {
-               log.Printf("%v closing", conn)
-       }
-       half.closed = true
-       for p := half.first; p != nil; p = p.next {
-               // FIXME: it should be already empty
-               a.pc.replace(p)
-               half.pages--
-       }
-       if conn.s2c.closed && conn.c2s.closed {
-               if half.stream.ReassemblyComplete(nil) { //FIXME: which context to pass ?
-                       a.connPool.remove(conn)
-               }
-       }
-}
-
-// addNextFromConn pops the first page from a connection off and adds it to the
-// return array.
-func (a *Assembler) addNextFromConn(conn *halfconnection) {
-       if conn.first == nil {
-               return
-       }
-       if *debugLog {
-               log.Printf("   adding from conn (%v, %v) %v (%d)\n", conn.first.seq, conn.nextSeq, conn.nextSeq-conn.first.seq, len(conn.first.bytes))
-       }
-       a.ret = append(a.ret, conn.first)
-       conn.first = conn.first.next
-       if conn.first != nil {
-               conn.first.prev = nil
-       } else {
-               conn.last = nil
-       }
-}
-
-// FlushOptions provide options for flushing connections.
-type FlushOptions struct {
-       T  time.Time // If nonzero, only connections with data older than T are flushed
-       TC time.Time // If nonzero, only connections with data older than TC are closed (if no FIN/RST received)
-}
-
-// FlushWithOptions finds any streams waiting for packets older than
-// the given time T, and pushes through the data they have (IE: tells
-// them to stop waiting and skip the data they're waiting for).
-//
-// It also closes streams older than TC (that can be set to zero, to keep
-// long-lived stream alive, but to flush data anyway).
-//
-// Each Stream maintains a list of zero or more sets of bytes it has received
-// out-of-order.  For example, if it has processed up through sequence number
-// 10, it might have bytes [15-20), [20-25), [30,50) in its list.  Each set of
-// bytes also has the timestamp it was originally viewed.  A flush call will
-// look at the smallest subsequent set of bytes, in this case [15-20), and if
-// its timestamp is older than the passed-in time, it will push it and all
-// contiguous byte-sets out to the Stream's Reassembled function.  In this case,
-// it will push [15-20), but also [20-25), since that's contiguous.  It will
-// only push [30-50) if its timestamp is also older than the passed-in time,
-// otherwise it will wait until the next FlushCloseOlderThan to see if bytes
-// [25-30) come in.
-//
-// Returns the number of connections flushed, and of those, the number closed
-// because of the flush.
-func (a *Assembler) FlushWithOptions(opt FlushOptions) (flushed, closed int) {
-       conns := a.connPool.connections()
-       closes := 0
-       flushes := 0
-       for _, conn := range conns {
-               remove := false
-               conn.mu.Lock()
-               for _, half := range []*halfconnection{&conn.s2c, &conn.c2s} {
-                       flushed, closed := a.flushClose(conn, half, opt.T, opt.TC)
-                       if flushed {
-                               flushes++
-                       }
-                       if closed {
-                               closes++
-                       }
-               }
-               if conn.s2c.closed && conn.c2s.closed && conn.s2c.lastSeen.Before(opt.TC) && conn.c2s.lastSeen.Before(opt.TC) {
-                       remove = true
-               }
-               conn.mu.Unlock()
-               if remove {
-                       a.connPool.remove(conn)
-               }
-       }
-       return flushes, closes
-}
-
-// FlushCloseOlderThan flushes and closes streams older than given time
-func (a *Assembler) FlushCloseOlderThan(t time.Time) (flushed, closed int) {
-       return a.FlushWithOptions(FlushOptions{T: t, TC: t})
-}
-
-func (a *Assembler) flushClose(conn *connection, half *halfconnection, t time.Time, tc time.Time) (bool, bool) {
-       flushed, closed := false, false
-       if half.closed {
-               return flushed, closed
-       }
-       for half.first != nil && half.first.seen.Before(t) {
-               flushed = true
-               a.skipFlush(conn, half)
-               if half.closed {
-                       closed = true
-               }
-       }
-       if !half.closed && half.first == nil && half.lastSeen.Before(tc) {
-               a.closeHalfConnection(conn, half)
-               closed = true
-       }
-       return flushed, closed
-}
-
-// FlushAll flushes all remaining data into all remaining connections and closes
-// those connections. It returns the total number of connections flushed/closed
-// by the call.
-func (a *Assembler) FlushAll() (closed int) {
-       conns := a.connPool.connections()
-       closed = len(conns)
-       for _, conn := range conns {
-               conn.mu.Lock()
-               for _, half := range []*halfconnection{&conn.s2c, &conn.c2s} {
-                       for !half.closed {
-                               a.skipFlush(conn, half)
-                       }
-                       if !half.closed {
-                               a.closeHalfConnection(conn, half)
-                       }
-               }
-               conn.mu.Unlock()
-       }
-       return
-}
-
-func min(a, b int) int {
-       if a < b {
-               return a
-       }
-       return b
-}
diff --git a/vendor/github.com/google/gopacket/reassembly/tcpassembly_test.go b/vendor/github.com/google/gopacket/reassembly/tcpassembly_test.go
deleted file mode 100644 (file)
index b29cf2f..0000000
+++ /dev/null
@@ -1,1660 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package reassembly
-
-import (
-       "encoding/hex"
-       "fmt"
-       "net"
-       "reflect"
-       "runtime"
-       "testing"
-       "time"
-
-       "github.com/google/gopacket"
-       "github.com/google/gopacket/layers"
-)
-
-var netFlow gopacket.Flow
-
-var testDebug = false
-
-func init() {
-       netFlow, _ = gopacket.FlowFromEndpoints(
-               layers.NewIPEndpoint(net.IP{1, 2, 3, 4}),
-               layers.NewIPEndpoint(net.IP{5, 6, 7, 8}))
-}
-
-type Reassembly struct {
-       Bytes []byte
-       Start bool
-       End   bool
-       Skip  int
-}
-
-type testSequence struct {
-       in   layers.TCP
-       want []Reassembly
-}
-
-/* For benchmark: do nothing */
-type testFactoryBench struct {
-}
-
-func (t *testFactoryBench) New(a, b gopacket.Flow, tcp *layers.TCP, ac AssemblerContext) Stream {
-       return t
-}
-func (t *testFactoryBench) Accept(tcp *layers.TCP, ci gopacket.CaptureInfo, dir TCPFlowDirection, seq Sequence, start *bool, ac AssemblerContext) bool {
-       return true
-}
-func (t *testFactoryBench) ReassembledSG(sg ScatterGather, ac AssemblerContext) {
-}
-func (t *testFactoryBench) ReassemblyComplete(ac AssemblerContext) bool {
-       return true
-}
-
-/* For tests: append bytes */
-type testFactory struct {
-       reassembly []Reassembly
-}
-
-func (t *testFactory) New(a, b gopacket.Flow, tcp *layers.TCP, ac AssemblerContext) Stream {
-       return t
-}
-func (t *testFactory) Reassembled(r []Reassembly) {
-       t.reassembly = r
-       for i := 0; i < len(r); i++ {
-               //t.reassembly[i].Seen = time.Time{}
-       }
-}
-func (t *testFactory) ReassembledSG(sg ScatterGather, ac AssemblerContext) {
-       _, start, end, skip := sg.Info()
-       l, _ := sg.Lengths()
-       t.reassembly = append(t.reassembly, Reassembly{
-               Bytes: sg.Fetch(l),
-               Skip:  skip,
-               Start: start,
-               End:   end,
-       })
-}
-
-func (t *testFactory) ReassemblyComplete(ac AssemblerContext) bool {
-       return true
-}
-
-func (t *testFactory) Accept(tcp *layers.TCP, ci gopacket.CaptureInfo, dir TCPFlowDirection, seq Sequence, start *bool, ac AssemblerContext) bool {
-       return true
-}
-
-/* For memory checks: counts bytes */
-type testMemoryFactory struct {
-       bytes int
-}
-
-func (tf *testMemoryFactory) New(a, b gopacket.Flow, tcp *layers.TCP, ac AssemblerContext) Stream {
-       return tf
-}
-func (tf *testMemoryFactory) Accept(tcp *layers.TCP, ci gopacket.CaptureInfo, dir TCPFlowDirection, seq Sequence, start *bool, ac AssemblerContext) bool {
-       return true
-}
-func (tf *testMemoryFactory) ReassembledSG(sg ScatterGather, ac AssemblerContext) {
-       bytes, _ := sg.Lengths()
-       tf.bytes += bytes
-}
-func (tf *testMemoryFactory) ReassemblyComplete(ac AssemblerContext) bool {
-       return true
-}
-
-/*
- * Tests
- */
-
-func test(t *testing.T, s []testSequence) {
-       fact := &testFactory{}
-       p := NewStreamPool(fact)
-       a := NewAssembler(p)
-       a.MaxBufferedPagesPerConnection = 4
-       for i, test := range s {
-               fact.reassembly = []Reassembly{}
-               if testDebug {
-                       fmt.Printf("#### test: #%d: sending:%s\n", i, hex.EncodeToString(test.in.BaseLayer.Payload))
-               }
-               a.Assemble(netFlow, &test.in)
-               final := []Reassembly{}
-               if len(test.want) > 0 {
-                       final = append(final, Reassembly{})
-                       for _, w := range test.want {
-                               final[0].Bytes = append(final[0].Bytes, w.Bytes...)
-                               if w.End {
-                                       final[0].End = true
-                               }
-                               if w.Start {
-                                       final[0].Start = true
-                               }
-                               if w.Skip != 0 {
-                                       final[0].Skip = w.Skip
-                               }
-                       }
-               }
-               if !reflect.DeepEqual(fact.reassembly, final) {
-                       t.Fatalf("test %v:\nwant: %v\n got: %v\n", i, final, fact.reassembly)
-               }
-               if testDebug {
-                       fmt.Printf("test %v passing...(%s)\n", i, final)
-               }
-       }
-}
-
-func TestReorder(t *testing.T) {
-       test(t, []testSequence{
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1001,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3}},
-                       },
-                       want: []Reassembly{},
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1004,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{4, 5, 6}},
-                       },
-                       want: []Reassembly{},
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1010,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{10, 11, 12}},
-                       },
-                       want: []Reassembly{},
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1007,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{7, 8, 9}},
-                       },
-                       want: []Reassembly{
-                               Reassembly{
-                                       Skip:  -1,
-                                       Bytes: []byte{1, 2, 3},
-                               },
-                               Reassembly{
-                                       Bytes: []byte{4, 5, 6},
-                               },
-                               Reassembly{
-                                       Bytes: []byte{7, 8, 9},
-                               },
-                               Reassembly{
-                                       Bytes: []byte{10, 11, 12},
-                               },
-                       },
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1016,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{2, 2, 3}},
-                       },
-                       want: []Reassembly{},
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1019,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{3, 2, 3}},
-                       },
-                       want: []Reassembly{},
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1013,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3}},
-                       },
-                       want: []Reassembly{
-                               Reassembly{
-                                       Bytes: []byte{1, 2, 3},
-                               },
-                               Reassembly{
-                                       Bytes: []byte{2, 2, 3},
-                               },
-                               Reassembly{
-                                       Bytes: []byte{3, 2, 3},
-                               },
-                       },
-               },
-       })
-}
-
-func TestMaxPerSkip(t *testing.T) {
-       test(t, []testSequence{
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1000,
-                               SYN:       true,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3}},
-                       },
-                       want: []Reassembly{
-                               Reassembly{
-                                       Start: true,
-                                       Bytes: []byte{1, 2, 3},
-                               },
-                       },
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1007,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{3, 2, 3}},
-                       },
-                       want: []Reassembly{},
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1010,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{4, 2, 3}},
-                       },
-                       want: []Reassembly{},
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1013,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{5, 2, 3}},
-                       },
-                       want: []Reassembly{},
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1016,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{6, 2, 3}},
-                       },
-                       want: []Reassembly{
-                               Reassembly{
-                                       Skip:  3,
-                                       Bytes: []byte{3, 2, 3},
-                               },
-                               Reassembly{
-                                       Bytes: []byte{4, 2, 3},
-                               },
-                               Reassembly{
-                                       Bytes: []byte{5, 2, 3},
-                               },
-                               Reassembly{
-                                       Bytes: []byte{6, 2, 3},
-                               },
-                       },
-               },
-       })
-}
-
-func TestReorderFast(t *testing.T) {
-       test(t, []testSequence{
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               SYN:       true,
-                               Seq:       1000,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3}},
-                       },
-                       want: []Reassembly{
-                               Reassembly{
-                                       Start: true,
-                                       Bytes: []byte{1, 2, 3},
-                               },
-                       },
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1007,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{3, 2, 3}},
-                       },
-                       want: []Reassembly{},
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1004,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{2, 2, 3}},
-                       },
-                       want: []Reassembly{
-                               Reassembly{
-                                       Bytes: []byte{2, 2, 3},
-                               },
-                               Reassembly{
-                                       Bytes: []byte{3, 2, 3},
-                               },
-                       },
-               },
-       })
-}
-
-func TestOverlap(t *testing.T) {
-       test(t, []testSequence{
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               SYN:       true,
-                               Seq:       1000,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
-                       },
-                       want: []Reassembly{
-                               Reassembly{
-                                       Start: true,
-                                       Bytes: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0},
-                               },
-                       },
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1007,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{7, 8, 9, 0, 1, 2, 3, 4, 5}},
-                       },
-                       want: []Reassembly{
-                               Reassembly{
-                                       Bytes: []byte{1, 2, 3, 4, 5},
-                               },
-                       },
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1010,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{0, 1, 2, 3, 4, 5, 6, 7}},
-                       },
-                       want: []Reassembly{
-                               Reassembly{
-                                       Bytes: []byte{6, 7},
-                               },
-                       },
-               },
-       })
-}
-
-func TestBufferedOverlap1(t *testing.T) {
-       test(t, []testSequence{
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1007,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{7, 8, 9, 0, 1, 2, 3, 4, 5}},
-                       },
-                       want: []Reassembly{},
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1010,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{0, 1, 2, 3, 4, 5, 6, 7}},
-                       },
-                       want: []Reassembly{},
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               SYN:       true,
-                               Seq:       1000,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
-                       },
-                       want: []Reassembly{
-                               Reassembly{
-                                       Start: true,
-                                       Bytes: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0},
-                               },
-                               Reassembly{
-                                       Bytes: []byte{1, 2, 3, 4, 5},
-                               },
-                               Reassembly{
-                                       Bytes: []byte{6, 7},
-                               },
-                       },
-               },
-       })
-}
-
-func TestBufferedOverlapCase6(t *testing.T) {
-       test(t, []testSequence{
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1007,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{7, 8, 9, 0, 1, 2, 3, 4, 5}},
-                       },
-                       want: []Reassembly{},
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1010,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{10, 11, 12, 13, 14}},
-                       },
-                       want: []Reassembly{},
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               SYN:       true,
-                               Seq:       1000,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
-                       },
-                       want: []Reassembly{
-                               Reassembly{
-                                       Start: true,
-                                       Bytes: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0},
-                               },
-                               Reassembly{
-                                       Bytes: []byte{11, 12, 13, 14, 5},
-                               },
-                       },
-               },
-       })
-}
-
-func TestBufferedOverlapExisting(t *testing.T) {
-       test(t, []testSequence{
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1000,
-                               SYN:       true,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7}},
-                       },
-                       want: []Reassembly{
-                               Reassembly{
-                                       Start: true,
-                                       Bytes: []byte{1, 2, 3, 4, 5, 6, 7},
-                               },
-                       },
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1005,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{5, 6, 7, 8, 9, 10}},
-                       },
-                       want: []Reassembly{
-                               Reassembly{
-                                       Bytes: []byte{8, 9, 10},
-                               },
-                       },
-               },
-       })
-}
-
-func TestBufferedOverlapReemit(t *testing.T) {
-       test(t, []testSequence{
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1000,
-                               SYN:       true,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7}},
-                       },
-                       want: []Reassembly{
-                               Reassembly{
-                                       Start: true,
-                                       Bytes: []byte{1, 2, 3, 4, 5, 6, 7},
-                               },
-                       },
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1003,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{3, 4, 5}},
-                       },
-                       want: []Reassembly{},
-               },
-       })
-}
-
-func TestReorderRetransmission2(t *testing.T) {
-       test(t, []testSequence{
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1001,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3}},
-                       },
-                       want: []Reassembly{},
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1007,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{2, 2, 3}},
-                       },
-                       want: []Reassembly{},
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1007,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{2, 2, 3}},
-                       },
-                       want: []Reassembly{},
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1010,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{10, 11}},
-                       },
-                       want: []Reassembly{},
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1004,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{6, 6, 6, 2, 2}},
-                       },
-                       want: []Reassembly{
-                               Reassembly{
-                                       Skip:  -1,
-                                       Bytes: []byte{1, 2, 3},
-                               },
-                               Reassembly{
-                                       Bytes: []byte{6, 6, 6},
-                               },
-                               Reassembly{
-                                       Bytes: []byte{2, 2, 3},
-                               },
-                               Reassembly{
-                                       Bytes: []byte{10, 11},
-                               },
-                       },
-               },
-       })
-}
-
-func TestOverrun1(t *testing.T) {
-       test(t, []testSequence{
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               SYN:       true,
-                               Seq:       0xFFFFFFFF,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
-                       },
-                       want: []Reassembly{
-                               Reassembly{
-                                       Start: true,
-                                       Bytes: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0},
-                               },
-                       },
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       10,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4}},
-                       },
-                       want: []Reassembly{
-                               Reassembly{
-                                       Bytes: []byte{1, 2, 3, 4},
-                               },
-                       },
-               },
-       })
-}
-
-func TestOverrun2(t *testing.T) {
-       test(t, []testSequence{
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       10,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4}},
-                       },
-                       want: []Reassembly{},
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               SYN:       true,
-                               Seq:       0xFFFFFFFF,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
-                       },
-                       want: []Reassembly{
-                               Reassembly{
-                                       Start: true,
-                                       Bytes: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0},
-                               },
-                               Reassembly{
-                                       Bytes: []byte{1, 2, 3, 4},
-                               },
-                       },
-               },
-       })
-}
-
-func TestCacheLargePacket(t *testing.T) {
-       data := make([]byte, pageBytes*3)
-       test(t, []testSequence{
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1001,
-                               BaseLayer: layers.BaseLayer{Payload: data},
-                       },
-                       want: []Reassembly{},
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1000,
-                               SYN:       true,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{}},
-                       },
-                       want: []Reassembly{
-                               Reassembly{
-                                       Start: true,
-                                       Bytes: []byte{},
-                               },
-                               Reassembly{
-                                       Bytes: data[:pageBytes],
-                               },
-                               Reassembly{
-                                       Bytes: data[pageBytes : pageBytes*2],
-                               },
-                               Reassembly{
-                                       Bytes: data[pageBytes*2 : pageBytes*3],
-                               },
-                       },
-               },
-       })
-}
-
-/*
- * Keep
- */
-type testKeepFactory struct {
-       keep    int
-       bytes   []byte
-       skipped int
-       t       *testing.T
-}
-
-func (tkf *testKeepFactory) New(a, b gopacket.Flow, tcp *layers.TCP, ac AssemblerContext) Stream {
-       return tkf
-}
-func (tkf *testKeepFactory) ReassembledSG(sg ScatterGather, ac AssemblerContext) {
-       l, _ := sg.Lengths()
-       _, _, _, tkf.skipped = sg.Info()
-       tkf.bytes = sg.Fetch(l)
-       sg.KeepFrom(tkf.keep)
-}
-func (tkf *testKeepFactory) ReassemblyComplete(ac AssemblerContext) bool {
-       return true
-}
-
-func (tkf *testKeepFactory) Accept(tcp *layers.TCP, ci gopacket.CaptureInfo, dir TCPFlowDirection, seq Sequence, start *bool, ac AssemblerContext) bool {
-       return true
-}
-
-type testKeepSequence struct {
-       tcp     layers.TCP
-       keep    int
-       want    []byte
-       skipped int
-}
-
-func testKeep(t *testing.T, s []testKeepSequence) {
-       fact := &testKeepFactory{t: t}
-       p := NewStreamPool(fact)
-       a := NewAssembler(p)
-       a.MaxBufferedPagesPerConnection = 4
-       port := layers.TCPPort(0)
-       for i, test := range s {
-               // Fake some values according to ports
-               flow := netFlow
-               dir := TCPDirClientToServer
-               if port == 0 {
-                       port = test.tcp.SrcPort
-               }
-               if port != test.tcp.SrcPort {
-                       dir = dir.Reverse()
-                       flow = flow.Reverse()
-               }
-               test.tcp.SetInternalPortsForTesting()
-               fact.keep = test.keep
-               fact.bytes = []byte{}
-               if testDebug {
-                       fmt.Printf("#### testKeep: #%d: sending:%s\n", i, hex.EncodeToString(test.tcp.BaseLayer.Payload))
-               }
-               a.Assemble(flow, &test.tcp)
-               if !reflect.DeepEqual(fact.bytes, test.want) {
-                       t.Fatalf("#%d: invalid bytes: got %v, expected %v", i, fact.bytes, test.want)
-               }
-               if fact.skipped != test.skipped {
-                       t.Fatalf("#%d: expecting %d skipped bytes, got %d", i, test.skipped, fact.skipped)
-               }
-               if testDebug {
-                       fmt.Printf("#### testKeep: #%d: bytes: %s\n", i, hex.EncodeToString(fact.bytes))
-               }
-       }
-}
-
-func TestKeepSimpleOnBoundary(t *testing.T) {
-       testKeep(t, []testKeepSequence{
-               {
-                       tcp: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               SYN:       true,
-                               Seq:       1000,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
-                       },
-                       keep: 0,
-                       want: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0},
-               },
-               {
-                       tcp: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1007,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{7, 8, 9, 0, 1, 2, 3, 4, 5}},
-                       },
-                       want: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5},
-               },
-       })
-}
-
-func TestKeepSimpleNotBoundaryLive(t *testing.T) {
-       testKeep(t, []testKeepSequence{
-               {
-                       tcp: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               SYN:       true,
-                               Seq:       1000,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
-                       },
-                       keep: 1,
-                       want: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0},
-               },
-               {
-                       tcp: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1007,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{7, 8, 9, 0, 1, 2, 3, 4, 5}},
-                       },
-                       want: []byte{2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5},
-               },
-       })
-}
-
-func TestKeepSimpleNotBoundaryAlreadyKept(t *testing.T) {
-       testKeep(t, []testKeepSequence{
-               {
-                       tcp: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               SYN:       true,
-                               Seq:       1000,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0x10}},
-                       },
-                       keep: 0, // 1→10
-                       want: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0x10},
-               },
-               {
-                       tcp: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1007,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{7, 8, 9, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15}},
-                       },
-                       keep: 11, // 12→15
-                       want: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15},
-               },
-               {
-                       tcp: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1016,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{0x16, 0x17, 0x18}},
-                       },
-                       want: []byte{0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18},
-               },
-       })
-}
-
-func TestKeepLonger(t *testing.T) {
-       testKeep(t, []testKeepSequence{
-               {
-                       tcp: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               SYN:       true,
-                               Seq:       1000,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}},
-                       },
-                       keep: 0,
-                       want: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10},
-               },
-               {
-                       tcp: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1007,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{7, 8, 9, 10, 11, 12, 13, 14, 15}},
-                       },
-                       keep: 0,
-                       want: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
-               },
-               {
-                       tcp: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1010,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{10, 11, 12, 13, 14, 15, 16, 17}},
-                       },
-                       want: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17},
-               },
-       })
-}
-
-func TestKeepWithFlush(t *testing.T) {
-       testKeep(t, []testKeepSequence{
-               {
-                       tcp: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               SYN:       true,
-                               Seq:       1000,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{1}},
-                       },
-                       keep: 1,
-                       want: []byte{1},
-               },
-               {
-                       tcp: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1003,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{3}},
-                       },
-                       keep: 0,
-                       want: []byte{},
-               },
-               {
-                       tcp: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1004,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{4}},
-                       },
-                       keep: 0,
-                       want: []byte{},
-               },
-               {
-                       tcp: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1006,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{6}},
-                       },
-                       keep: 0,
-                       want: []byte{},
-               },
-               // Exceeding 4 pages: flushing first continuous pages
-               {
-                       tcp: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1008,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{8}},
-                       },
-                       keep:    0,
-                       skipped: 1,
-                       want:    []byte{3, 4},
-               },
-               {
-                       tcp: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1010,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{10}},
-                       },
-                       keep:    0,
-                       skipped: 1,
-                       want:    []byte{6},
-               },
-               {
-                       tcp: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1012,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{12}},
-                       },
-                       keep:    0,
-                       skipped: 1,
-                       want:    []byte{8},
-               },
-       })
-}
-
-/*
- * FSM tests
- */
-/* For FSM: bump nb on accepted packet */
-type testFSMFactory struct {
-       nb  int
-       fsm TCPSimpleFSM
-}
-
-func (t *testFSMFactory) New(a, b gopacket.Flow, tcp *layers.TCP, ac AssemblerContext) Stream {
-       return t
-}
-func (t *testFSMFactory) ReassembledSG(sg ScatterGather, ac AssemblerContext) {
-}
-func (t *testFSMFactory) ReassemblyComplete(ac AssemblerContext) bool {
-       return false
-}
-
-func (t *testFSMFactory) Accept(tcp *layers.TCP, ci gopacket.CaptureInfo, dir TCPFlowDirection, seq Sequence, start *bool, ac AssemblerContext) bool {
-       ok := t.fsm.CheckState(tcp, dir)
-       if ok {
-               t.nb++
-       }
-       return ok
-}
-
-type testFSMSequence struct {
-       tcp layers.TCP
-       ci  gopacket.CaptureInfo
-       nb  int
-}
-
-func (seq *testFSMSequence) GetCaptureInfo() gopacket.CaptureInfo {
-       return seq.ci
-}
-
-func testFSM(t *testing.T, s []testFSMSequence) {
-       fact := &testFSMFactory{}
-       p := NewStreamPool(fact)
-       a := NewAssembler(p)
-       //a.MaxBufferedPagesPerConnection = 4
-       fact.nb = 0
-       port := layers.TCPPort(0)
-       for i, test := range s {
-               // Fake some values according to ports
-               flow := netFlow
-               dir := TCPDirClientToServer
-               if port == 0 {
-                       port = test.tcp.SrcPort
-               }
-               if port != test.tcp.SrcPort {
-                       dir = dir.Reverse()
-                       flow = flow.Reverse()
-               }
-               test.tcp.SetInternalPortsForTesting()
-               a.AssembleWithContext(flow, &test.tcp, &test)
-               if fact.nb != test.nb {
-                       t.Fatalf("#%d: packet rejected: got %d, expected %d", i, fact.nb, test.nb)
-               }
-       }
-}
-
-func TestFSMnormalFlow(t *testing.T) {
-       testFSM(t, []testFSMSequence{
-               {
-                       tcp: layers.TCP{
-                               SYN:       true,
-                               SrcPort:   54842,
-                               DstPort:   53,
-                               Seq:       374511116,
-                               Ack:       0,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 566690000),
-                       },
-                       nb: 1,
-               },
-               {
-                       tcp: layers.TCP{
-                               SYN:       true,
-                               ACK:       true,
-                               SrcPort:   53,
-                               DstPort:   54842,
-                               Seq:       3465787765,
-                               Ack:       374511117,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 590332000),
-                       },
-                       nb: 2,
-               },
-               {
-                       tcp: layers.TCP{
-                               ACK:       true,
-                               SrcPort:   54842,
-                               DstPort:   53,
-                               Seq:       374511117,
-                               Ack:       3465787766,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 590346000),
-                       },
-                       nb: 3,
-               },
-               {
-                       tcp: layers.TCP{
-                               ACK:       true,
-                               SrcPort:   54842,
-                               DstPort:   53,
-                               Seq:       374511117,
-                               Ack:       3465787766,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{0, 31, 104, 196, 0, 32, 0, 1, 0, 0, 0, 0, 0, 1, 2, 85, 83, 0, 0, 6, 0, 1, 0, 0, 41, 16, 0, 0, 0, 128, 0, 0, 0}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 590387000),
-                       },
-                       nb: 4,
-               },
-               {
-                       tcp: layers.TCP{
-                               ACK:       true,
-                               SrcPort:   53,
-                               DstPort:   54842,
-                               Seq:       3465787766,
-                               Ack:       374511150,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 613687000),
-                       },
-                       nb: 5,
-               },
-               {
-                       tcp: layers.TCP{
-                               ACK:       true,
-                               SrcPort:   53,
-                               DstPort:   54842,
-                               Seq:       3465787766,
-                               Ack:       374511150,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{8, 133, 104, 196, 132, 0, 0, 1, 0, 2, 0, 7, 0, 19, 2, 85, 83, 0, 0, 6, 0, 1, 2, 117, 115, 0, 0, 6, 0, 1, 0, 0, 3, 132, 0, 54, 1, 97, 5, 99, 99, 116, 108, 100, 192, 20, 10, 104, 111, 115, 116, 109, 97, 115, 116, 101, 114, 7, 110, 101, 117, 115, 116, 97, 114, 3, 98, 105, 122, 0, 120, 18, 40, 205, 0, 0, 3, 132, 0, 0, 3, 132, 0, 9, 58, 128, 0, 1, 81, 128, 192, 20, 0, 46, 0, 1, 0, 0, 3, 132, 0, 150, 0, 6, 5, 1, 0, 0, 3, 132, 85, 138, 90, 146, 85, 98, 191, 130, 27, 78, 2, 117, 115, 0, 69, 13, 35, 189, 141, 225, 107, 238, 108, 182, 207, 44, 105, 31, 212, 103, 32, 93, 217, 108, 20, 231, 188, 28, 241, 237, 104, 182, 117, 121, 195, 112, 64, 96, 237, 248, 6, 181, 186, 96, 60, 6, 18, 29, 188, 96, 201, 140, 251, 61, 71, 177, 108, 156, 9, 83, 125, 172, 188, 75, 81, 67, 218, 55, 93, 131, 243, 15, 190, 75, 4, 165, 226, 124, 49, 67, 142, 131, 239, 240, 76, 225, 10, 242, 68, 88, 240, 200, 27, 97, 102, 73, 92, 73, 133, 170, 175, 198, 99, 109, 90, 16, 162, 101, 95, 96, 102, 250, 91, 74, 80, 3, 87, 167, 50, 230, 9, 213, 7, 222, 197, 87, 183, 190, 148, 247, 207, 204, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 10, 1, 102, 5, 99, 99, 116, 108, 100, 192, 12, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 4, 1, 97, 193, 8, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 4, 1, 98, 193, 8, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 4, 1, 99, 193, 8, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 4, 1, 101, 193, 8, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 4, 1, 107, 193, 8, 192, 118, 0, 46, 0, 1, 0, 7, 233, 0, 0, 150, 0, 2, 5, 1, 0, 7, 233, 0, 85, 127, 33, 92, 85, 87, 134, 98, 27, 78, 2, 117, 115, 0, 19, 227, 175, 75, 88, 245, 164, 158, 150, 198, 57, 253, 150, 179, 161, 52, 24, 56, 229, 176, 175, 40, 45, 232, 188, 171, 131, 197, 107, 125, 218, 192, 78, 221, 146, 33, 114, 55, 43, 12, 131, 213, 51, 98, 37, 2, 102, 161, 232, 115, 177, 210, 51, 169, 215, 133, 56, 190, 91, 75, 8, 222, 231, 202, 139, 28, 187, 249, 72, 21, 23, 56, 63, 72, 126, 142, 242, 195, 242, 64, 208, 134, 100, 157, 197, 159, 43, 148, 20, 70, 117, 152, 159, 35, 200, 220, 49, 234, 173, 210, 91, 34, 210, 192, 7, 197, 112, 117, 208, 234, 42, 49, 133, 237, 197, 14, 244, 149, 191, 142, 36, 252, 42, 48, 182, 189, 9, 68, 1, 65, 5, 67, 67, 84, 76, 68, 193, 126, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 156, 154, 124, 70, 1, 66, 194, 4, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 156, 154, 125, 70, 194, 26, 0, 28, 0, 1, 0, 0, 28, 32, 0, 16, 32, 1, 5, 3, 209, 174, 255, 255, 255, 255, 255, 255, 255, 255, 255, 126, 1, 67, 194, 4, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 156, 154, 127, 70, 1, 69, 194, 4, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 156, 154, 126, 70, 1, 70, 194, 4, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 209, 173, 58, 70, 194, 108, 0, 28, 0, 1, 0, 0, 28, 32, 0, 16, 32, 1, 5, 0, 54, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 1, 75, 194, 4, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 156, 154, 128, 70, 194, 154, 0, 28, 0, 1, 0, 0, 28, 32, 0, 16, 32, 1, 5, 3, 226, 57, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 194, 2, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 1, 5, 3, 0, 0, 28, 32, 85, 112, 230, 49, 85, 73, 83, 2, 27, 78, 2, 117, 115, 0, 82, 36, 11, 141, 74, 85, 70, 98, 179, 63, 173, 83, 8, 70, 155, 41, 102, 166, 140, 62, 71, 178, 130, 38, 171, 200, 180, 68, 2, 215, 45, 6, 43, 59, 171, 146, 223, 215, 9, 77, 5, 104, 167, 42, 237, 170, 30, 114, 205, 129, 59, 225, 152, 224, 79, 1, 65, 68, 208, 153, 121, 237, 199, 87, 2, 251, 100, 105, 59, 24, 73, 226, 169, 121, 250, 91, 41, 124, 14, 23, 135, 52, 2, 86, 72, 224, 100, 135, 70, 216, 16, 107, 84, 59, 13, 168, 58, 187, 54, 98, 230, 167, 246, 42, 46, 156, 206, 238, 120, 199, 25, 144, 98, 249, 70, 162, 34, 43, 145, 114, 186, 233, 47, 42, 75, 95, 152, 235, 194, 26, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 1, 5, 3, 0, 0, 28, 32, 85, 112, 190, 140, 85, 73, 36, 78, 27, 78, 2, 117, 115, 0, 160, 95, 100, 37, 167, 82, 93, 165, 126, 247, 147, 173, 238, 154, 206, 174, 96, 175, 209, 7, 8, 169, 171, 223, 29, 201, 161, 177, 98, 54, 94, 62, 70, 127, 142, 109, 206, 42, 179, 109, 156, 160, 156, 20, 59, 24, 147, 164, 13, 121, 192, 84, 157, 26, 56, 177, 151, 210, 7, 197, 229, 110, 60, 58, 224, 42, 77, 5, 59, 80, 216, 221, 248, 19, 66, 102, 74, 199, 238, 120, 231, 201, 187, 29, 11, 46, 195, 164, 8, 221, 128, 25, 205, 42, 247, 152, 112, 176, 14, 117, 150, 223, 245, 32, 212, 107, 4, 245, 27, 126, 224, 216, 0, 89, 106, 238, 185, 206, 44, 56, 204, 175, 7, 139, 233, 228, 127, 175, 194, 26, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 28, 5, 3, 0, 0, 28, 32, 85, 108, 217, 174, 85, 69, 70, 242, 27, 78, 2, 117, 115, 0, 172, 117, 89, 89, 73, 249, 245, 211, 100, 127, 48, 135, 224, 97, 172, 146, 128, 30, 190, 72, 199, 170, 97, 179, 136, 109, 86, 110, 235, 214, 47, 50, 115, 11, 226, 168, 56, 198, 24, 212, 205, 207, 2, 116, 104, 112, 99, 234, 236, 44, 70, 19, 19, 215, 127, 200, 162, 215, 142, 45, 135, 91, 219, 217, 86, 231, 154, 87, 222, 161, 32, 66, 196, 55, 117, 20, 186, 9, 134, 252, 249, 219, 9, 196, 128, 8, 222, 201, 131, 210, 182, 232, 142, 72, 160, 171, 95, 231, 232, 156, 28, 34, 54, 94, 73, 183, 38, 160, 123, 175, 157, 21, 163, 8, 214, 155, 172, 237, 169, 28, 15, 138, 105, 107, 251, 109, 131, 240, 194, 72, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 1, 5, 3, 0, 0, 28, 32, 85, 112, 190, 140, 85, 73, 36, 78, 27, 78, 2, 117, 115, 0, 77, 207, 197, 130, 236, 138, 192, 241, 225, 114, 8, 22, 76, 54, 43, 121, 42, 44, 9, 92, 56, 253, 224, 179, 191, 131, 40, 176, 94, 61, 33, 12, 43, 82, 156, 236, 211, 29, 187, 100, 220, 243, 24, 134, 42, 204, 46, 161, 214, 91, 68, 119, 40, 252, 53, 54, 146, 136, 196, 168, 204, 195, 131, 110, 6, 73, 16, 161, 86, 35, 150, 153, 162, 185, 227, 65, 228, 160, 203, 42, 250, 121, 14, 42, 115, 221, 232, 96, 99, 164, 230, 29, 195, 149, 85, 206, 41, 1, 252, 77, 188, 88, 8, 182, 37, 249, 6, 158, 6, 244, 158, 254, 141, 203, 6, 158, 198, 103, 130, 98, 123, 34, 245, 44, 126, 77, 24, 187, 194, 90, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 1, 5, 3, 0, 0, 28, 32, 85, 108, 194, 203, 85, 69, 51, 125, 27, 78, 2, 117, 115, 0, 86, 26, 187, 56, 252, 194, 199, 140, 229, 133, 186, 187, 20, 174, 26, 48, 212, 129, 10, 20, 167, 179, 53, 72, 176, 92, 153, 48, 146, 15, 163, 182, 80, 138, 181, 135, 98, 129, 17, 66, 55, 184, 76, 225, 72, 104, 7, 221, 40, 71, 41, 202, 246, 154, 166, 199, 74, 175, 146, 54, 25, 56, 115, 243}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 621198000),
-                       },
-                       nb: 6,
-               },
-               {
-                       tcp: layers.TCP{
-                               ACK:       true,
-                               SrcPort:   54842,
-                               DstPort:   53,
-                               Seq:       374511150,
-                               Ack:       3465789226,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 621220000),
-                       },
-                       nb: 7,
-               },
-               {
-                       tcp: layers.TCP{
-                               ACK:       true,
-                               SrcPort:   53,
-                               DstPort:   54842,
-                               Seq:       3465789226,
-                               Ack:       374511150,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{153, 141, 101, 187, 110, 15, 63, 42, 81, 100, 95, 68, 241, 85, 160, 227, 3, 1, 12, 80, 166, 1, 98, 2, 44, 98, 63, 203, 70, 164, 99, 195, 23, 152, 223, 253, 208, 10, 12, 19, 66, 121, 9, 158, 205, 96, 218, 0, 80, 70, 58, 95, 41, 124, 216, 13, 122, 135, 102, 200, 181, 233, 129, 174, 194, 108, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 1, 5, 3, 0, 0, 28, 32, 85, 108, 223, 157, 85, 69, 74, 55, 27, 78, 2, 117, 115, 0, 149, 71, 215, 149, 16, 165, 115, 229, 141, 136, 187, 158, 88, 225, 131, 231, 182, 218, 235, 27, 48, 65, 244, 77, 186, 135, 72, 18, 87, 52, 180, 128, 130, 67, 75, 173, 160, 243, 104, 178, 103, 117, 96, 209, 36, 51, 108, 47, 232, 214, 254, 15, 208, 182, 218, 174, 248, 237, 88, 150, 35, 190, 239, 249, 171, 151, 9, 236, 2, 252, 255, 13, 79, 190, 147, 36, 161, 210, 202, 80, 209, 136, 167, 180, 186, 68, 246, 249, 48, 123, 46, 11, 132, 103, 132, 207, 186, 68, 110, 133, 142, 109, 194, 19, 122, 57, 203, 217, 120, 93, 67, 168, 91, 252, 87, 38, 33, 228, 229, 162, 190, 170, 23, 188, 89, 15, 241, 71, 194, 108, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 28, 5, 3, 0, 0, 28, 32, 85, 108, 217, 174, 85, 69, 70, 242, 27, 78, 2, 117, 115, 0, 206, 97, 120, 37, 255, 252, 7, 156, 162, 192, 43, 84, 105, 94, 125, 55, 13, 247, 234, 9, 25, 100, 246, 25, 77, 168, 199, 208, 187, 209, 164, 123, 234, 138, 238, 15, 86, 45, 163, 108, 162, 117, 247, 128, 3, 187, 100, 185, 193, 191, 134, 86, 161, 254, 236, 99, 66, 66, 35, 173, 91, 243, 175, 3, 175, 94, 79, 68, 246, 109, 200, 154, 209, 185, 11, 210, 50, 147, 136, 213, 158, 81, 111, 17, 149, 239, 110, 114, 25, 234, 247, 158, 233, 33, 36, 181, 66, 84, 189, 37, 207, 58, 9, 171, 143, 66, 69, 137, 192, 6, 187, 59, 16, 51, 80, 56, 89, 170, 12, 195, 69, 133, 188, 110, 171, 17, 17, 213, 194, 154, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 1, 5, 3, 0, 0, 28, 32, 85, 112, 190, 140, 85, 73, 36, 78, 27, 78, 2, 117, 115, 0, 123, 36, 154, 4, 158, 41, 96, 252, 116, 114, 16, 137, 28, 177, 206, 33, 192, 88, 89, 1, 69, 252, 206, 88, 89, 152, 210, 179, 248, 44, 202, 239, 95, 131, 126, 147, 249, 93, 57, 166, 215, 184, 211, 164, 196, 71, 170, 3, 25, 18, 177, 214, 94, 147, 181, 148, 197, 11, 171, 219, 107, 48, 105, 81, 239, 110, 249, 140, 68, 127, 193, 146, 176, 161, 246, 108, 75, 141, 205, 211, 73, 247, 125, 205, 120, 156, 82, 55, 130, 250, 26, 15, 44, 214, 91, 115, 11, 103, 22, 83, 184, 96, 107, 138, 2, 127, 168, 191, 92, 102, 137, 161, 63, 225, 134, 17, 178, 242, 11, 43, 8, 30, 164, 28, 140, 195, 83, 121, 194, 154, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 28, 5, 3, 0, 0, 28, 32, 85, 112, 190, 140, 85, 73, 36, 78, 27, 78, 2, 117, 115, 0, 189, 98, 234, 251, 237, 24, 143, 210, 30, 242, 97, 66, 50, 211, 47, 109, 110, 121, 244, 239, 89, 0, 39, 92, 218, 155, 71, 5, 23, 136, 231, 107, 95, 52, 231, 118, 253, 206, 250, 178, 209, 136, 13, 36, 36, 54, 157, 237, 35, 110, 134, 253, 80, 237, 162, 163, 38, 21, 54, 241, 240, 253, 73, 33, 191, 128, 32, 6, 198, 165, 35, 203, 244, 15, 166, 250, 159, 67, 149, 56, 19, 243, 230, 87, 6, 44, 150, 90, 79, 107, 18, 121, 112, 23, 176, 104, 50, 110, 176, 138, 250, 6, 209, 22, 41, 73, 234, 4, 124, 233, 208, 218, 236, 117, 232, 217, 10, 172, 18, 215, 143, 119, 193, 113, 10, 59, 255, 221, 0, 0, 41, 16, 0, 0, 0, 128, 0, 0, 0}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 622508000),
-                       },
-                       nb: 8,
-               },
-               {
-                       tcp: layers.TCP{
-                               ACK:       true,
-                               SrcPort:   54842,
-                               DstPort:   53,
-                               Seq:       374511150,
-                               Ack:       3465789949,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 622531000),
-                       },
-                       nb: 9,
-               },
-               {
-                       tcp: layers.TCP{
-                               ACK:       true,
-                               FIN:       true,
-                               SrcPort:   54842,
-                               DstPort:   53,
-                               Seq:       374511150,
-                               Ack:       3465789949,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 622907000),
-                       },
-                       nb: 10,
-               },
-               {
-                       tcp: layers.TCP{
-                               ACK:       true,
-                               FIN:       true,
-                               SrcPort:   53,
-                               DstPort:   54842,
-                               Seq:       3465789949,
-                               Ack:       374511151,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 652784000),
-                       },
-                       nb: 11,
-               },
-               {
-                       tcp: layers.TCP{
-                               ACK:       true,
-                               SrcPort:   54842,
-                               DstPort:   53,
-                               Seq:       374511151,
-                               Ack:       3465789950,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 652809000),
-                       },
-                       nb: 12,
-               },
-       })
-}
-
-func TestFSMearlyRST(t *testing.T) {
-       testFSM(t, []testFSMSequence{
-               {
-                       tcp: layers.TCP{
-                               SYN:       true,
-                               SrcPort:   54842,
-                               DstPort:   53,
-                               Seq:       374511116,
-                               Ack:       0,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 566690000),
-                       },
-                       nb: 1,
-               },
-               {
-                       tcp: layers.TCP{
-                               SYN:       true,
-                               ACK:       true,
-                               SrcPort:   53,
-                               DstPort:   54842,
-                               Seq:       3465787765,
-                               Ack:       374511117,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 590332000),
-                       },
-                       nb: 2,
-               },
-               {
-                       tcp: layers.TCP{
-                               RST:       true,
-                               SrcPort:   54842,
-                               DstPort:   53,
-                               Seq:       374511117,
-                               Ack:       3465787766,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 590346000),
-                       },
-                       nb: 3,
-               },
-               {
-                       tcp: layers.TCP{
-                               ACK:       true,
-                               SrcPort:   54842,
-                               DstPort:   53,
-                               Seq:       374511117,
-                               Ack:       3465787766,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{0, 31, 104, 196, 0, 32, 0, 1, 0, 0, 0, 0, 0, 1, 2, 85, 83, 0, 0, 6, 0, 1, 0, 0, 41, 16, 0, 0, 0, 128, 0, 0, 0}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 590387000),
-                       },
-                       nb: 3,
-               },
-               {
-                       tcp: layers.TCP{
-                               ACK:       true,
-                               SrcPort:   53,
-                               DstPort:   54842,
-                               Seq:       3465787766,
-                               Ack:       374511150,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 613687000),
-                       },
-                       nb: 3,
-               },
-       })
-}
-
-func TestFSMestablishedThenRST(t *testing.T) {
-       testFSM(t, []testFSMSequence{
-               {
-                       tcp: layers.TCP{
-                               SYN:       true,
-                               SrcPort:   54842,
-                               DstPort:   53,
-                               Seq:       374511116,
-                               Ack:       0,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 566690000),
-                       },
-                       nb: 1,
-               },
-               {
-                       tcp: layers.TCP{
-                               SYN:       true,
-                               ACK:       true,
-                               SrcPort:   53,
-                               DstPort:   54842,
-                               Seq:       3465787765,
-                               Ack:       374511117,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 590332000),
-                       },
-                       nb: 2,
-               },
-               {
-                       tcp: layers.TCP{
-                               ACK:       true,
-                               SrcPort:   54842,
-                               DstPort:   53,
-                               Seq:       374511117,
-                               Ack:       3465787766,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 590346000),
-                       },
-                       nb: 3,
-               },
-               {
-                       tcp: layers.TCP{
-                               ACK:       true,
-                               SrcPort:   54842,
-                               DstPort:   53,
-                               Seq:       374511117,
-                               Ack:       3465787766,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{0, 31, 104, 196, 0, 32, 0, 1, 0, 0, 0, 0, 0, 1, 2, 85, 83, 0, 0, 6, 0, 1, 0, 0, 41, 16, 0, 0, 0, 128, 0, 0, 0}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 590387000),
-                       },
-                       nb: 4,
-               },
-               {
-                       tcp: layers.TCP{
-                               RST:       true,
-                               SrcPort:   53,
-                               DstPort:   54842,
-                               Seq:       3465787766,
-                               Ack:       374511150,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 613687000),
-                       },
-                       nb: 5,
-               },
-               {
-                       tcp: layers.TCP{
-                               ACK:       true,
-                               SrcPort:   53,
-                               DstPort:   54842,
-                               Seq:       3465787766,
-                               Ack:       374511150,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{8, 133, 104, 196, 132, 0, 0, 1, 0, 2, 0, 7, 0, 19, 2, 85, 83, 0, 0, 6, 0, 1, 2, 117, 115, 0, 0, 6, 0, 1, 0, 0, 3, 132, 0, 54, 1, 97, 5, 99, 99, 116, 108, 100, 192, 20, 10, 104, 111, 115, 116, 109, 97, 115, 116, 101, 114, 7, 110, 101, 117, 115, 116, 97, 114, 3, 98, 105, 122, 0, 120, 18, 40, 205, 0, 0, 3, 132, 0, 0, 3, 132, 0, 9, 58, 128, 0, 1, 81, 128, 192, 20, 0, 46, 0, 1, 0, 0, 3, 132, 0, 150, 0, 6, 5, 1, 0, 0, 3, 132, 85, 138, 90, 146, 85, 98, 191, 130, 27, 78, 2, 117, 115, 0, 69, 13, 35, 189, 141, 225, 107, 238, 108, 182, 207, 44, 105, 31, 212, 103, 32, 93, 217, 108, 20, 231, 188, 28, 241, 237, 104, 182, 117, 121, 195, 112, 64, 96, 237, 248, 6, 181, 186, 96, 60, 6, 18, 29, 188, 96, 201, 140, 251, 61, 71, 177, 108, 156, 9, 83, 125, 172, 188, 75, 81, 67, 218, 55, 93, 131, 243, 15, 190, 75, 4, 165, 226, 124, 49, 67, 142, 131, 239, 240, 76, 225, 10, 242, 68, 88, 240, 200, 27, 97, 102, 73, 92, 73, 133, 170, 175, 198, 99, 109, 90, 16, 162, 101, 95, 96, 102, 250, 91, 74, 80, 3, 87, 167, 50, 230, 9, 213, 7, 222, 197, 87, 183, 190, 148, 247, 207, 204, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 10, 1, 102, 5, 99, 99, 116, 108, 100, 192, 12, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 4, 1, 97, 193, 8, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 4, 1, 98, 193, 8, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 4, 1, 99, 193, 8, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 4, 1, 101, 193, 8, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 4, 1, 107, 193, 8, 192, 118, 0, 46, 0, 1, 0, 7, 233, 0, 0, 150, 0, 2, 5, 1, 0, 7, 233, 0, 85, 127, 33, 92, 85, 87, 134, 98, 27, 78, 2, 117, 115, 0, 19, 227, 175, 75, 88, 245, 164, 158, 150, 198, 57, 253, 150, 179, 161, 52, 24, 56, 229, 176, 175, 40, 45, 232, 188, 171, 131, 197, 107, 125, 218, 192, 78, 221, 146, 33, 114, 55, 43, 12, 131, 213, 51, 98, 37, 2, 102, 161, 232, 115, 177, 210, 51, 169, 215, 133, 56, 190, 91, 75, 8, 222, 231, 202, 139, 28, 187, 249, 72, 21, 23, 56, 63, 72, 126, 142, 242, 195, 242, 64, 208, 134, 100, 157, 197, 159, 43, 148, 20, 70, 117, 152, 159, 35, 200, 220, 49, 234, 173, 210, 91, 34, 210, 192, 7, 197, 112, 117, 208, 234, 42, 49, 133, 237, 197, 14, 244, 149, 191, 142, 36, 252, 42, 48, 182, 189, 9, 68, 1, 65, 5, 67, 67, 84, 76, 68, 193, 126, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 156, 154, 124, 70, 1, 66, 194, 4, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 156, 154, 125, 70, 194, 26, 0, 28, 0, 1, 0, 0, 28, 32, 0, 16, 32, 1, 5, 3, 209, 174, 255, 255, 255, 255, 255, 255, 255, 255, 255, 126, 1, 67, 194, 4, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 156, 154, 127, 70, 1, 69, 194, 4, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 156, 154, 126, 70, 1, 70, 194, 4, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 209, 173, 58, 70, 194, 108, 0, 28, 0, 1, 0, 0, 28, 32, 0, 16, 32, 1, 5, 0, 54, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 1, 75, 194, 4, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 156, 154, 128, 70, 194, 154, 0, 28, 0, 1, 0, 0, 28, 32, 0, 16, 32, 1, 5, 3, 226, 57, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 194, 2, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 1, 5, 3, 0, 0, 28, 32, 85, 112, 230, 49, 85, 73, 83, 2, 27, 78, 2, 117, 115, 0, 82, 36, 11, 141, 74, 85, 70, 98, 179, 63, 173, 83, 8, 70, 155, 41, 102, 166, 140, 62, 71, 178, 130, 38, 171, 200, 180, 68, 2, 215, 45, 6, 43, 59, 171, 146, 223, 215, 9, 77, 5, 104, 167, 42, 237, 170, 30, 114, 205, 129, 59, 225, 152, 224, 79, 1, 65, 68, 208, 153, 121, 237, 199, 87, 2, 251, 100, 105, 59, 24, 73, 226, 169, 121, 250, 91, 41, 124, 14, 23, 135, 52, 2, 86, 72, 224, 100, 135, 70, 216, 16, 107, 84, 59, 13, 168, 58, 187, 54, 98, 230, 167, 246, 42, 46, 156, 206, 238, 120, 199, 25, 144, 98, 249, 70, 162, 34, 43, 145, 114, 186, 233, 47, 42, 75, 95, 152, 235, 194, 26, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 1, 5, 3, 0, 0, 28, 32, 85, 112, 190, 140, 85, 73, 36, 78, 27, 78, 2, 117, 115, 0, 160, 95, 100, 37, 167, 82, 93, 165, 126, 247, 147, 173, 238, 154, 206, 174, 96, 175, 209, 7, 8, 169, 171, 223, 29, 201, 161, 177, 98, 54, 94, 62, 70, 127, 142, 109, 206, 42, 179, 109, 156, 160, 156, 20, 59, 24, 147, 164, 13, 121, 192, 84, 157, 26, 56, 177, 151, 210, 7, 197, 229, 110, 60, 58, 224, 42, 77, 5, 59, 80, 216, 221, 248, 19, 66, 102, 74, 199, 238, 120, 231, 201, 187, 29, 11, 46, 195, 164, 8, 221, 128, 25, 205, 42, 247, 152, 112, 176, 14, 117, 150, 223, 245, 32, 212, 107, 4, 245, 27, 126, 224, 216, 0, 89, 106, 238, 185, 206, 44, 56, 204, 175, 7, 139, 233, 228, 127, 175, 194, 26, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 28, 5, 3, 0, 0, 28, 32, 85, 108, 217, 174, 85, 69, 70, 242, 27, 78, 2, 117, 115, 0, 172, 117, 89, 89, 73, 249, 245, 211, 100, 127, 48, 135, 224, 97, 172, 146, 128, 30, 190, 72, 199, 170, 97, 179, 136, 109, 86, 110, 235, 214, 47, 50, 115, 11, 226, 168, 56, 198, 24, 212, 205, 207, 2, 116, 104, 112, 99, 234, 236, 44, 70, 19, 19, 215, 127, 200, 162, 215, 142, 45, 135, 91, 219, 217, 86, 231, 154, 87, 222, 161, 32, 66, 196, 55, 117, 20, 186, 9, 134, 252, 249, 219, 9, 196, 128, 8, 222, 201, 131, 210, 182, 232, 142, 72, 160, 171, 95, 231, 232, 156, 28, 34, 54, 94, 73, 183, 38, 160, 123, 175, 157, 21, 163, 8, 214, 155, 172, 237, 169, 28, 15, 138, 105, 107, 251, 109, 131, 240, 194, 72, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 1, 5, 3, 0, 0, 28, 32, 85, 112, 190, 140, 85, 73, 36, 78, 27, 78, 2, 117, 115, 0, 77, 207, 197, 130, 236, 138, 192, 241, 225, 114, 8, 22, 76, 54, 43, 121, 42, 44, 9, 92, 56, 253, 224, 179, 191, 131, 40, 176, 94, 61, 33, 12, 43, 82, 156, 236, 211, 29, 187, 100, 220, 243, 24, 134, 42, 204, 46, 161, 214, 91, 68, 119, 40, 252, 53, 54, 146, 136, 196, 168, 204, 195, 131, 110, 6, 73, 16, 161, 86, 35, 150, 153, 162, 185, 227, 65, 228, 160, 203, 42, 250, 121, 14, 42, 115, 221, 232, 96, 99, 164, 230, 29, 195, 149, 85, 206, 41, 1, 252, 77, 188, 88, 8, 182, 37, 249, 6, 158, 6, 244, 158, 254, 141, 203, 6, 158, 198, 103, 130, 98, 123, 34, 245, 44, 126, 77, 24, 187, 194, 90, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 1, 5, 3, 0, 0, 28, 32, 85, 108, 194, 203, 85, 69, 51, 125, 27, 78, 2, 117, 115, 0, 86, 26, 187, 56, 252, 194, 199, 140, 229, 133, 186, 187, 20, 174, 26, 48, 212, 129, 10, 20, 167, 179, 53, 72, 176, 92, 153, 48, 146, 15, 163, 182, 80, 138, 181, 135, 98, 129, 17, 66, 55, 184, 76, 225, 72, 104, 7, 221, 40, 71, 41, 202, 246, 154, 166, 199, 74, 175, 146, 54, 25, 56, 115, 243}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 621198000),
-                       },
-                       nb: 5,
-               },
-               {
-                       tcp: layers.TCP{
-                               ACK:       true,
-                               SrcPort:   54842,
-                               DstPort:   53,
-                               Seq:       374511150,
-                               Ack:       3465789226,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 621220000),
-                       },
-                       nb: 5,
-               },
-       })
-}
-
-func TestFSMmissingSYNACK(t *testing.T) {
-       testFSM(t, []testFSMSequence{
-               {
-                       tcp: layers.TCP{
-                               SYN:       true,
-                               SrcPort:   54842,
-                               DstPort:   53,
-                               Seq:       374511116,
-                               Ack:       0,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 566690000),
-                       },
-                       nb: 1,
-               },
-               {
-                       tcp: layers.TCP{
-                               ACK:       true,
-                               SrcPort:   54842,
-                               DstPort:   53,
-                               Seq:       374511117,
-                               Ack:       3465787766,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 590346000),
-                       },
-                       nb: 1,
-               },
-               {
-                       tcp: layers.TCP{
-                               ACK:       true,
-                               SrcPort:   54842,
-                               DstPort:   53,
-                               Seq:       374511117,
-                               Ack:       3465787766,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{0, 31, 104, 196, 0, 32, 0, 1, 0, 0, 0, 0, 0, 1, 2, 85, 83, 0, 0, 6, 0, 1, 0, 0, 41, 16, 0, 0, 0, 128, 0, 0, 0}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 590387000),
-                       },
-                       nb: 1,
-               },
-       })
-}
-
-/*
- * Memory test
- */
-func TestMemoryShrink(t *testing.T) {
-       tcp := layers.TCP{
-               SrcPort:   1,
-               DstPort:   2,
-               SYN:       true,
-               Seq:       999,
-               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
-       }
-       a := NewAssembler(NewStreamPool(&testFactoryBench{}))
-       var before runtime.MemStats
-       runtime.GC()
-       runtime.ReadMemStats(&before)
-       run := 1050
-       // Allocate > initial
-       for i := 0; i < run; i++ {
-               a.Assemble(netFlow, &tcp)
-               if tcp.SYN {
-                       tcp.SYN = false
-                       tcp.Seq += 1 + 1
-               }
-               tcp.Seq += 10
-       }
-       var after runtime.MemStats
-       a.FlushAll()
-       runtime.GC()
-       runtime.ReadMemStats(&after)
-       if after.HeapAlloc < before.HeapAlloc {
-               t.Fatalf("Nothing allocated for %d run: before: %d, after: %d", run, before.HeapAlloc, after.HeapAlloc)
-       }
-       before = after
-       // Do ~ initial allocs+free()
-       run *= 2
-       for i := 0; i < run; i++ {
-               a.Assemble(netFlow, &tcp)
-               if i%50 == 0 {
-                       a.FlushAll()
-               }
-               tcp.Seq += 10
-       }
-       runtime.GC()
-       runtime.ReadMemStats(&after)
-       if after.HeapAlloc >= before.HeapAlloc {
-               t.Fatalf("Nothing freed for %d run: before: %d, after: %d", run, before.HeapAlloc, after.HeapAlloc)
-       }
-}
-
-/*
- * Benchmark tests
- */
-func BenchmarkSingleStreamNo(b *testing.B) {
-       t := layers.TCP{
-               SrcPort:   1,
-               DstPort:   2,
-               SYN:       true,
-               Seq:       1000,
-               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
-       }
-       a := NewAssembler(NewStreamPool(&testFactoryBench{}))
-       for i := 0; i < b.N; i++ {
-               a.Assemble(netFlow, &t)
-               if t.SYN {
-                       t.SYN = false
-                       t.Seq++
-               }
-               t.Seq += 10
-       }
-}
-
-func BenchmarkSingleStreamSkips(b *testing.B) {
-       t := layers.TCP{
-               SrcPort:   1,
-               DstPort:   2,
-               SYN:       true,
-               Seq:       1000,
-               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
-       }
-       a := NewAssembler(NewStreamPool(&testFactoryBench{}))
-       skipped := false
-       for i := 0; i < b.N; i++ {
-               if i%10 == 9 {
-                       t.Seq += 10
-                       skipped = true
-               } else if skipped {
-                       t.Seq -= 20
-               }
-               a.Assemble(netFlow, &t)
-               if t.SYN {
-                       t.SYN = false
-                       t.Seq++
-               }
-               t.Seq += 10
-               if skipped {
-                       t.Seq += 10
-                       skipped = false
-               }
-       }
-}
-
-func BenchmarkSingleStreamLoss(b *testing.B) {
-       t := layers.TCP{
-               SrcPort:   1,
-               DstPort:   2,
-               SYN:       true,
-               Seq:       1000,
-               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
-       }
-       a := NewAssembler(NewStreamPool(&testFactoryBench{}))
-       for i := 0; i < b.N; i++ {
-               a.Assemble(netFlow, &t)
-               t.SYN = false
-               t.Seq += 11
-       }
-}
-
-func BenchmarkMultiStreamGrow(b *testing.B) {
-       t := layers.TCP{
-               SrcPort:   1,
-               DstPort:   2,
-               Seq:       0,
-               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
-       }
-       a := NewAssembler(NewStreamPool(&testFactoryBench{}))
-       for i := 0; i < b.N; i++ {
-               t.SrcPort = layers.TCPPort(i)
-               a.Assemble(netFlow, &t)
-               t.Seq += 10
-       }
-}
-
-func BenchmarkMultiStreamConn(b *testing.B) {
-       t := layers.TCP{
-               SrcPort:   1,
-               DstPort:   2,
-               Seq:       0,
-               SYN:       true,
-               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
-       }
-       a := NewAssembler(NewStreamPool(&testFactoryBench{}))
-       for i := 0; i < b.N; i++ {
-               t.SrcPort = layers.TCPPort(i)
-               a.Assemble(netFlow, &t)
-               if i%65536 == 65535 {
-                       if t.SYN {
-                               t.SYN = false
-                               t.Seq++
-                       }
-                       t.Seq += 10
-               }
-       }
-}
-
-type testMemoryContext struct{}
-
-func (t *testMemoryContext) GetCaptureInfo() gopacket.CaptureInfo {
-       return gopacket.CaptureInfo{
-               Timestamp: time.Unix(1432538521, 590387000),
-       }
-}
-
-func TestFullyOrderedAndCompleteStreamDoesNotAlloc(t *testing.T) {
-       c2s := layers.TCP{
-               SrcPort:   1,
-               DstPort:   2,
-               Seq:       0,
-               SYN:       true,
-               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
-       }
-       s2c := layers.TCP{
-               SrcPort:   c2s.DstPort,
-               DstPort:   c2s.SrcPort,
-               Seq:       0,
-               SYN:       true,
-               ACK:       true,
-               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
-       }
-       tf := testMemoryFactory{}
-       a := NewAssembler(NewStreamPool(&tf))
-
-       ctx := &testMemoryContext{}
-       // First packet
-       a.AssembleWithContext(netFlow, &c2s, ctx)
-       a.AssembleWithContext(netFlow.Reverse(), &s2c, ctx)
-       c2s.SYN, s2c.SYN = false, false
-       c2s.ACK = true
-       c2s.Seq++
-       s2c.Seq++
-       N := 1000
-       if n := testing.AllocsPerRun(N, func() {
-               c2s.Seq += 10
-               s2c.Seq += 10
-               c2s.Ack += 10
-               s2c.Ack += 10
-               a.AssembleWithContext(netFlow, &c2s, ctx)
-               a.AssembleWithContext(netFlow.Reverse(), &s2c, ctx)
-       }); n > 0 {
-               t.Error(n, "mallocs for normal TCP stream")
-       }
-       // Ensure all bytes have been through the stream
-       // +1 for first packet and +1 because AllocsPerRun seems to run fun N+1 times.
-       if tf.bytes != 10*2*(N+1+1) {
-               t.Error(tf.bytes, "bytes handled, expected", 10*2*(N+1+1))
-       }
-}
diff --git a/vendor/github.com/google/gopacket/reassembly/tcpcheck.go b/vendor/github.com/google/gopacket/reassembly/tcpcheck.go
deleted file mode 100644 (file)
index 4b52aba..0000000
+++ /dev/null
@@ -1,246 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package reassembly
-
-import (
-       "encoding/binary"
-       "fmt"
-
-       "github.com/google/gopacket"
-       "github.com/google/gopacket/layers"
-)
-
-/*
- * Check TCP packet against options (window, MSS)
- */
-
-type tcpStreamOptions struct {
-       mss           int
-       scale         int
-       receiveWindow uint
-}
-
-// TCPOptionCheck contains options for the two directions
-type TCPOptionCheck struct {
-       options [2]tcpStreamOptions
-}
-
-func (t *TCPOptionCheck) getOptions(dir TCPFlowDirection) *tcpStreamOptions {
-       if dir == TCPDirClientToServer {
-               return &t.options[0]
-       }
-       return &t.options[1]
-}
-
-// NewTCPOptionCheck creates default options
-func NewTCPOptionCheck() TCPOptionCheck {
-       return TCPOptionCheck{
-               options: [2]tcpStreamOptions{
-                       tcpStreamOptions{
-                               mss:           0,
-                               scale:         -1,
-                               receiveWindow: 0,
-                       }, tcpStreamOptions{
-                               mss:           0,
-                               scale:         -1,
-                               receiveWindow: 0,
-                       },
-               },
-       }
-}
-
-// Accept checks whether the packet should be accepted by checking TCP options
-func (t *TCPOptionCheck) Accept(tcp *layers.TCP, ci gopacket.CaptureInfo, dir TCPFlowDirection, acked Sequence, start *bool) error {
-       options := t.getOptions(dir)
-       if tcp.SYN {
-               mss := -1
-               scale := -1
-               for _, o := range tcp.Options {
-                       // MSS
-                       if o.OptionType == 2 {
-                               if len(o.OptionData) != 2 {
-                                       return fmt.Errorf("MSS option data length expected 2, got %d", len(o.OptionData))
-                               }
-                               mss = int(binary.BigEndian.Uint16(o.OptionData[:2]))
-                       }
-                       // Window scaling
-                       if o.OptionType == 3 {
-                               if len(o.OptionData) != 1 {
-                                       return fmt.Errorf("Window scaling length expected: 1, got %d", len(o.OptionData))
-                               }
-                               scale = int(o.OptionData[0])
-                       }
-               }
-               options.mss = mss
-               options.scale = scale
-       } else {
-               if acked != invalidSequence {
-                       revOptions := t.getOptions(dir.Reverse())
-                       length := len(tcp.Payload)
-
-                       // Check packet is in the correct window
-                       diff := acked.Difference(Sequence(tcp.Seq))
-                       if diff == -1 && (length == 1 || length == 0) {
-                               // This is probably a Keep-alive
-                               // TODO: check byte is ok
-                       } else if diff < 0 {
-                               return fmt.Errorf("Re-emitted packet (diff:%d,seq:%d,rev-ack:%d)", diff,
-                                       tcp.Seq, acked)
-                       } else if revOptions.mss > 0 && length > revOptions.mss {
-                               return fmt.Errorf("%d > mss (%d)", length, revOptions.mss)
-                       } else if revOptions.receiveWindow != 0 && revOptions.scale < 0 && diff > int(revOptions.receiveWindow) {
-                               return fmt.Errorf("%d > receiveWindow(%d)", diff, revOptions.receiveWindow)
-                       }
-               }
-       }
-       // Compute receiveWindow
-       options.receiveWindow = uint(tcp.Window)
-       if options.scale > 0 {
-               options.receiveWindow = options.receiveWindow << (uint(options.scale))
-       }
-       return nil
-}
-
-// TCPSimpleFSM implements a very simple TCP state machine
-//
-// Usage:
-// When implementing a Stream interface and to avoid to consider packets that
-// would be rejected due to client/server's TCP stack, the  Accept() can call
-// TCPSimpleFSM.CheckState().
-//
-// Limitations:
-// - packet should be received in-order.
-// - no check on sequence number is performed
-// - no RST
-type TCPSimpleFSM struct {
-       dir     TCPFlowDirection
-       state   int
-       options TCPSimpleFSMOptions
-}
-
-// TCPSimpleFSMOptions holds options for TCPSimpleFSM
-type TCPSimpleFSMOptions struct {
-       SupportMissingEstablishment bool // Allow missing SYN, SYN+ACK, ACK
-}
-
-// Internal values of state machine
-const (
-       TCPStateClosed      = 0
-       TCPStateSynSent     = 1
-       TCPStateEstablished = 2
-       TCPStateCloseWait   = 3
-       TCPStateLastAck     = 4
-       TCPStateReset       = 5
-)
-
-// NewTCPSimpleFSM creates a new TCPSimpleFSM
-func NewTCPSimpleFSM(options TCPSimpleFSMOptions) *TCPSimpleFSM {
-       return &TCPSimpleFSM{
-               state:   TCPStateClosed,
-               options: options,
-       }
-}
-
-func (t *TCPSimpleFSM) String() string {
-       switch t.state {
-       case TCPStateClosed:
-               return "Closed"
-       case TCPStateSynSent:
-               return "SynSent"
-       case TCPStateEstablished:
-               return "Established"
-       case TCPStateCloseWait:
-               return "CloseWait"
-       case TCPStateLastAck:
-               return "LastAck"
-       case TCPStateReset:
-               return "Reset"
-       }
-       return "?"
-}
-
-// CheckState returns false if tcp is invalid wrt current state or update the state machine's state
-func (t *TCPSimpleFSM) CheckState(tcp *layers.TCP, dir TCPFlowDirection) bool {
-       if t.state == TCPStateClosed && t.options.SupportMissingEstablishment && !(tcp.SYN && !tcp.ACK) {
-               /* try to figure out state */
-               switch true {
-               case tcp.SYN && tcp.ACK:
-                       t.state = TCPStateSynSent
-                       t.dir = dir.Reverse()
-               case tcp.FIN && !tcp.ACK:
-                       t.state = TCPStateEstablished
-               case tcp.FIN && tcp.ACK:
-                       t.state = TCPStateCloseWait
-                       t.dir = dir.Reverse()
-               default:
-                       t.state = TCPStateEstablished
-               }
-       }
-
-       switch t.state {
-       /* openning connection */
-       case TCPStateClosed:
-               if tcp.SYN && !tcp.ACK {
-                       t.dir = dir
-                       t.state = TCPStateSynSent
-                       return true
-               }
-       case TCPStateSynSent:
-               if tcp.RST {
-                       t.state = TCPStateReset
-                       return true
-               }
-
-               if tcp.SYN && tcp.ACK && dir == t.dir.Reverse() {
-                       t.state = TCPStateEstablished
-                       return true
-               }
-               if tcp.SYN && !tcp.ACK && dir == t.dir {
-                       // re-transmission
-                       return true
-               }
-       /* established */
-       case TCPStateEstablished:
-               if tcp.RST {
-                       t.state = TCPStateReset
-                       return true
-               }
-
-               if tcp.FIN {
-                       t.state = TCPStateCloseWait
-                       t.dir = dir
-                       return true
-               }
-               // accept any packet
-               return true
-       /* closing connection */
-       case TCPStateCloseWait:
-               if tcp.RST {
-                       t.state = TCPStateReset
-                       return true
-               }
-
-               if tcp.FIN && tcp.ACK && dir == t.dir.Reverse() {
-                       t.state = TCPStateLastAck
-                       return true
-               }
-               if tcp.ACK {
-                       return true
-               }
-       case TCPStateLastAck:
-               if tcp.RST {
-                       t.state = TCPStateReset
-                       return true
-               }
-
-               if tcp.ACK && t.dir == dir {
-                       t.state = TCPStateClosed
-                       return true
-               }
-       }
-       return false
-}
diff --git a/vendor/github.com/google/gopacket/reassembly/tcpcheck_test.go b/vendor/github.com/google/gopacket/reassembly/tcpcheck_test.go
deleted file mode 100644 (file)
index 4c2391d..0000000
+++ /dev/null
@@ -1,249 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package reassembly
-
-import (
-       "testing"
-       "time"
-
-       "github.com/google/gopacket"
-       "github.com/google/gopacket/layers"
-)
-
-// netFlow declared in tcpassembly_test
-
-/*
- * FSM tests
- */
-
-type testCheckFSMSequence struct {
-       tcp      layers.TCP
-       ci       gopacket.CaptureInfo
-       expected bool
-}
-
-func testCheckFSM(t *testing.T, options TCPSimpleFSMOptions, s []testCheckFSMSequence) {
-       fsm := NewTCPSimpleFSM(options)
-       port := layers.TCPPort(0)
-       for i, test := range s {
-               // Fake some values according to ports
-               flow := netFlow
-               dir := TCPDirClientToServer
-               if port == 0 {
-                       port = test.tcp.SrcPort
-               }
-               if port != test.tcp.SrcPort {
-                       dir = dir.Reverse()
-                       flow = flow.Reverse()
-               }
-               res := fsm.CheckState(&test.tcp, dir)
-               if res != test.expected {
-                       t.Fatalf("#%d: packet rejected (%s): got %s, expected %s. State:%s", i, gopacket.LayerDump(&test.tcp), res, test.expected, fsm.String())
-               }
-       }
-}
-
-func TestCheckFSM(t *testing.T) {
-       testCheckFSM(t, TCPSimpleFSMOptions{}, []testCheckFSMSequence{
-               {
-                       tcp: layers.TCP{
-                               SYN:       true,
-                               SrcPort:   54842,
-                               DstPort:   53,
-                               Seq:       374511116,
-                               Ack:       0,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 566690000),
-                       },
-                       expected: true,
-               },
-               {
-                       tcp: layers.TCP{
-                               SYN:       true,
-                               ACK:       true,
-                               SrcPort:   53,
-                               DstPort:   54842,
-                               Seq:       3465787765,
-                               Ack:       374511117,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 590332000),
-                       },
-                       expected: true,
-               },
-               {
-                       tcp: layers.TCP{
-                               ACK:       true,
-                               SrcPort:   54842,
-                               DstPort:   53,
-                               Seq:       374511117,
-                               Ack:       3465787766,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 590346000),
-                       },
-                       expected: true,
-               },
-               {
-                       tcp: layers.TCP{
-                               ACK:       true,
-                               SrcPort:   54842,
-                               DstPort:   53,
-                               Seq:       374511117,
-                               Ack:       3465787766,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{0, 31, 104, 196, 0, 32, 0, 1, 0, 0, 0, 0, 0, 1, 2, 85, 83, 0, 0, 6, 0, 1, 0, 0, 41, 16, 0, 0, 0, 128, 0, 0, 0}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 590387000),
-                       },
-                       expected: true,
-               },
-               {
-                       tcp: layers.TCP{
-                               ACK:       true,
-                               SrcPort:   53,
-                               DstPort:   54842,
-                               Seq:       3465787766,
-                               Ack:       374511150,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 613687000),
-                       },
-                       expected: true,
-               },
-               {
-                       tcp: layers.TCP{
-                               ACK:       true,
-                               SrcPort:   53,
-                               DstPort:   54842,
-                               Seq:       3465787766,
-                               Ack:       374511150,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{8, 133, 104, 196, 132, 0, 0, 1, 0, 2, 0, 7, 0, 19, 2, 85, 83, 0, 0, 6, 0, 1, 2, 117, 115, 0, 0, 6, 0, 1, 0, 0, 3, 132, 0, 54, 1, 97, 5, 99, 99, 116, 108, 100, 192, 20, 10, 104, 111, 115, 116, 109, 97, 115, 116, 101, 114, 7, 110, 101, 117, 115, 116, 97, 114, 3, 98, 105, 122, 0, 120, 18, 40, 205, 0, 0, 3, 132, 0, 0, 3, 132, 0, 9, 58, 128, 0, 1, 81, 128, 192, 20, 0, 46, 0, 1, 0, 0, 3, 132, 0, 150, 0, 6, 5, 1, 0, 0, 3, 132, 85, 138, 90, 146, 85, 98, 191, 130, 27, 78, 2, 117, 115, 0, 69, 13, 35, 189, 141, 225, 107, 238, 108, 182, 207, 44, 105, 31, 212, 103, 32, 93, 217, 108, 20, 231, 188, 28, 241, 237, 104, 182, 117, 121, 195, 112, 64, 96, 237, 248, 6, 181, 186, 96, 60, 6, 18, 29, 188, 96, 201, 140, 251, 61, 71, 177, 108, 156, 9, 83, 125, 172, 188, 75, 81, 67, 218, 55, 93, 131, 243, 15, 190, 75, 4, 165, 226, 124, 49, 67, 142, 131, 239, 240, 76, 225, 10, 242, 68, 88, 240, 200, 27, 97, 102, 73, 92, 73, 133, 170, 175, 198, 99, 109, 90, 16, 162, 101, 95, 96, 102, 250, 91, 74, 80, 3, 87, 167, 50, 230, 9, 213, 7, 222, 197, 87, 183, 190, 148, 247, 207, 204, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 10, 1, 102, 5, 99, 99, 116, 108, 100, 192, 12, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 4, 1, 97, 193, 8, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 4, 1, 98, 193, 8, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 4, 1, 99, 193, 8, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 4, 1, 101, 193, 8, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 4, 1, 107, 193, 8, 192, 118, 0, 46, 0, 1, 0, 7, 233, 0, 0, 150, 0, 2, 5, 1, 0, 7, 233, 0, 85, 127, 33, 92, 85, 87, 134, 98, 27, 78, 2, 117, 115, 0, 19, 227, 175, 75, 88, 245, 164, 158, 150, 198, 57, 253, 150, 179, 161, 52, 24, 56, 229, 176, 175, 40, 45, 232, 188, 171, 131, 197, 107, 125, 218, 192, 78, 221, 146, 33, 114, 55, 43, 12, 131, 213, 51, 98, 37, 2, 102, 161, 232, 115, 177, 210, 51, 169, 215, 133, 56, 190, 91, 75, 8, 222, 231, 202, 139, 28, 187, 249, 72, 21, 23, 56, 63, 72, 126, 142, 242, 195, 242, 64, 208, 134, 100, 157, 197, 159, 43, 148, 20, 70, 117, 152, 159, 35, 200, 220, 49, 234, 173, 210, 91, 34, 210, 192, 7, 197, 112, 117, 208, 234, 42, 49, 133, 237, 197, 14, 244, 149, 191, 142, 36, 252, 42, 48, 182, 189, 9, 68, 1, 65, 5, 67, 67, 84, 76, 68, 193, 126, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 156, 154, 124, 70, 1, 66, 194, 4, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 156, 154, 125, 70, 194, 26, 0, 28, 0, 1, 0, 0, 28, 32, 0, 16, 32, 1, 5, 3, 209, 174, 255, 255, 255, 255, 255, 255, 255, 255, 255, 126, 1, 67, 194, 4, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 156, 154, 127, 70, 1, 69, 194, 4, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 156, 154, 126, 70, 1, 70, 194, 4, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 209, 173, 58, 70, 194, 108, 0, 28, 0, 1, 0, 0, 28, 32, 0, 16, 32, 1, 5, 0, 54, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 1, 75, 194, 4, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 156, 154, 128, 70, 194, 154, 0, 28, 0, 1, 0, 0, 28, 32, 0, 16, 32, 1, 5, 3, 226, 57, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 194, 2, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 1, 5, 3, 0, 0, 28, 32, 85, 112, 230, 49, 85, 73, 83, 2, 27, 78, 2, 117, 115, 0, 82, 36, 11, 141, 74, 85, 70, 98, 179, 63, 173, 83, 8, 70, 155, 41, 102, 166, 140, 62, 71, 178, 130, 38, 171, 200, 180, 68, 2, 215, 45, 6, 43, 59, 171, 146, 223, 215, 9, 77, 5, 104, 167, 42, 237, 170, 30, 114, 205, 129, 59, 225, 152, 224, 79, 1, 65, 68, 208, 153, 121, 237, 199, 87, 2, 251, 100, 105, 59, 24, 73, 226, 169, 121, 250, 91, 41, 124, 14, 23, 135, 52, 2, 86, 72, 224, 100, 135, 70, 216, 16, 107, 84, 59, 13, 168, 58, 187, 54, 98, 230, 167, 246, 42, 46, 156, 206, 238, 120, 199, 25, 144, 98, 249, 70, 162, 34, 43, 145, 114, 186, 233, 47, 42, 75, 95, 152, 235, 194, 26, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 1, 5, 3, 0, 0, 28, 32, 85, 112, 190, 140, 85, 73, 36, 78, 27, 78, 2, 117, 115, 0, 160, 95, 100, 37, 167, 82, 93, 165, 126, 247, 147, 173, 238, 154, 206, 174, 96, 175, 209, 7, 8, 169, 171, 223, 29, 201, 161, 177, 98, 54, 94, 62, 70, 127, 142, 109, 206, 42, 179, 109, 156, 160, 156, 20, 59, 24, 147, 164, 13, 121, 192, 84, 157, 26, 56, 177, 151, 210, 7, 197, 229, 110, 60, 58, 224, 42, 77, 5, 59, 80, 216, 221, 248, 19, 66, 102, 74, 199, 238, 120, 231, 201, 187, 29, 11, 46, 195, 164, 8, 221, 128, 25, 205, 42, 247, 152, 112, 176, 14, 117, 150, 223, 245, 32, 212, 107, 4, 245, 27, 126, 224, 216, 0, 89, 106, 238, 185, 206, 44, 56, 204, 175, 7, 139, 233, 228, 127, 175, 194, 26, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 28, 5, 3, 0, 0, 28, 32, 85, 108, 217, 174, 85, 69, 70, 242, 27, 78, 2, 117, 115, 0, 172, 117, 89, 89, 73, 249, 245, 211, 100, 127, 48, 135, 224, 97, 172, 146, 128, 30, 190, 72, 199, 170, 97, 179, 136, 109, 86, 110, 235, 214, 47, 50, 115, 11, 226, 168, 56, 198, 24, 212, 205, 207, 2, 116, 104, 112, 99, 234, 236, 44, 70, 19, 19, 215, 127, 200, 162, 215, 142, 45, 135, 91, 219, 217, 86, 231, 154, 87, 222, 161, 32, 66, 196, 55, 117, 20, 186, 9, 134, 252, 249, 219, 9, 196, 128, 8, 222, 201, 131, 210, 182, 232, 142, 72, 160, 171, 95, 231, 232, 156, 28, 34, 54, 94, 73, 183, 38, 160, 123, 175, 157, 21, 163, 8, 214, 155, 172, 237, 169, 28, 15, 138, 105, 107, 251, 109, 131, 240, 194, 72, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 1, 5, 3, 0, 0, 28, 32, 85, 112, 190, 140, 85, 73, 36, 78, 27, 78, 2, 117, 115, 0, 77, 207, 197, 130, 236, 138, 192, 241, 225, 114, 8, 22, 76, 54, 43, 121, 42, 44, 9, 92, 56, 253, 224, 179, 191, 131, 40, 176, 94, 61, 33, 12, 43, 82, 156, 236, 211, 29, 187, 100, 220, 243, 24, 134, 42, 204, 46, 161, 214, 91, 68, 119, 40, 252, 53, 54, 146, 136, 196, 168, 204, 195, 131, 110, 6, 73, 16, 161, 86, 35, 150, 153, 162, 185, 227, 65, 228, 160, 203, 42, 250, 121, 14, 42, 115, 221, 232, 96, 99, 164, 230, 29, 195, 149, 85, 206, 41, 1, 252, 77, 188, 88, 8, 182, 37, 249, 6, 158, 6, 244, 158, 254, 141, 203, 6, 158, 198, 103, 130, 98, 123, 34, 245, 44, 126, 77, 24, 187, 194, 90, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 1, 5, 3, 0, 0, 28, 32, 85, 108, 194, 203, 85, 69, 51, 125, 27, 78, 2, 117, 115, 0, 86, 26, 187, 56, 252, 194, 199, 140, 229, 133, 186, 187, 20, 174, 26, 48, 212, 129, 10, 20, 167, 179, 53, 72, 176, 92, 153, 48, 146, 15, 163, 182, 80, 138, 181, 135, 98, 129, 17, 66, 55, 184, 76, 225, 72, 104, 7, 221, 40, 71, 41, 202, 246, 154, 166, 199, 74, 175, 146, 54, 25, 56, 115, 243}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 621198000),
-                       },
-                       expected: true,
-               },
-               {
-                       tcp: layers.TCP{
-                               ACK:       true,
-                               SrcPort:   54842,
-                               DstPort:   53,
-                               Seq:       374511150,
-                               Ack:       3465789226,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 621220000),
-                       },
-                       expected: true,
-               },
-       })
-}
-
-func TestCheckFSMmissingSYNACK(t *testing.T) {
-       testCheckFSM(t, TCPSimpleFSMOptions{}, []testCheckFSMSequence{
-               {
-                       tcp: layers.TCP{
-                               SYN:       true,
-                               SrcPort:   54842,
-                               DstPort:   53,
-                               Seq:       374511116,
-                               Ack:       0,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 566690000),
-                       },
-                       expected: true,
-               },
-               {
-                       tcp: layers.TCP{
-                               ACK:       true,
-                               SrcPort:   54842,
-                               DstPort:   53,
-                               Seq:       374511117,
-                               Ack:       3465787766,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 590346000),
-                       },
-                       expected: false,
-               },
-               {
-                       tcp: layers.TCP{
-                               ACK:       true,
-                               SrcPort:   54842,
-                               DstPort:   53,
-                               Seq:       374511117,
-                               Ack:       3465787766,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{0, 31, 104, 196, 0, 32, 0, 1, 0, 0, 0, 0, 0, 1, 2, 85, 83, 0, 0, 6, 0, 1, 0, 0, 41, 16, 0, 0, 0, 128, 0, 0, 0}},
-                       },
-                       ci: gopacket.CaptureInfo{
-                               Timestamp: time.Unix(1432538521, 590387000),
-                       },
-                       expected: false,
-               },
-       })
-}
-
-// Support packets w/o SYN (+SYN+ACK) depending on option
-func TestCheckFSMmissingSYN(t *testing.T) {
-       for _, val := range []bool{false, true} {
-               testCheckFSM(t, TCPSimpleFSMOptions{SupportMissingEstablishment: val}, []testCheckFSMSequence{
-                       {
-                               tcp: layers.TCP{
-                                       ACK:       true,
-                                       SrcPort:   54842,
-                                       DstPort:   53,
-                                       Seq:       12,
-                                       Ack:       1012,
-                                       BaseLayer: layers.BaseLayer{Payload: []byte{1}},
-                               },
-                               ci: gopacket.CaptureInfo{
-                                       Timestamp: time.Unix(1432538521, 566690000),
-                               },
-                               expected: val,
-                       },
-                       {
-                               tcp: layers.TCP{
-                                       ACK:       true,
-                                       SrcPort:   53,
-                                       DstPort:   54842,
-                                       Seq:       1012,
-                                       Ack:       13,
-                                       BaseLayer: layers.BaseLayer{Payload: []byte{2}},
-                               },
-                               ci: gopacket.CaptureInfo{
-                                       Timestamp: time.Unix(1432538521, 590346000),
-                               },
-                               expected: val,
-                       },
-                       {
-                               tcp: layers.TCP{
-                                       ACK:       true,
-                                       SrcPort:   53,
-                                       DstPort:   54842,
-                                       Seq:       1013,
-                                       Ack:       13,
-                                       BaseLayer: layers.BaseLayer{Payload: []byte{3}},
-                               },
-                               ci: gopacket.CaptureInfo{
-                                       Timestamp: time.Unix(1432538521, 590387000),
-                               },
-                               expected: val,
-                       },
-               })
-       }
-}
diff --git a/vendor/github.com/google/gopacket/routing/common.go b/vendor/github.com/google/gopacket/routing/common.go
deleted file mode 100644 (file)
index a6746d4..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package routing
-
-import (
-       "net"
-)
-
-// Router implements simple IPv4/IPv6 routing based on the kernel's routing
-// table.  This routing library has very few features and may actually route
-// incorrectly in some cases, but it should work the majority of the time.
-type Router interface {
-       // Route returns where to route a packet based on the packet's source
-       // and destination IP address.
-       //
-       // Callers may pass in nil for src, in which case the src is treated as
-       // either 0.0.0.0 or ::, depending on whether dst is a v4 or v6 address.
-       //
-       // It returns the interface on which to send the packet, the gateway IP
-       // to send the packet to (if necessary), the preferred src IP to use (if
-       // available).  If the preferred src address is not given in the routing
-       // table, the first IP address of the interface is provided.
-       //
-       // If an error is encountered, iface, geteway, and
-       // preferredSrc will be nil, and err will be set.
-       Route(dst net.IP) (iface *net.Interface, gateway, preferredSrc net.IP, err error)
-
-       // RouteWithSrc routes based on source information as well as destination
-       // information.  Either or both of input/src can be nil.  If both are, this
-       // should behave exactly like Route(dst)
-       RouteWithSrc(input net.HardwareAddr, src, dst net.IP) (iface *net.Interface, gateway, preferredSrc net.IP, err error)
-}
diff --git a/vendor/github.com/google/gopacket/routing/other.go b/vendor/github.com/google/gopacket/routing/other.go
deleted file mode 100644 (file)
index b53fea9..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// +build !linux
-
-// Package routing is currently only supported in Linux, but the build system requires a valid go file for all architectures.
-
-package routing
-
-func New() (Router, error) {
-       panic("router only implemented in linux")
-}
diff --git a/vendor/github.com/google/gopacket/routing/routing.go b/vendor/github.com/google/gopacket/routing/routing.go
deleted file mode 100644 (file)
index cbbeb6e..0000000
+++ /dev/null
@@ -1,241 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// +build linux
-
-// Package routing provides a very basic but mostly functional implementation of
-// a routing table for IPv4/IPv6 addresses.  It uses a routing table pulled from
-// the kernel via netlink to find the correct interface, gateway, and preferred
-// source IP address for packets destined to a particular location.
-//
-// The routing package is meant to be used with applications that are sending
-// raw packet data, which don't have the benefit of having the kernel route
-// packets for them.
-package routing
-
-import (
-       "bytes"
-       "errors"
-       "fmt"
-       "net"
-       "sort"
-       "strings"
-       "syscall"
-       "unsafe"
-)
-
-// Pulled from http://man7.org/linux/man-pages/man7/rtnetlink.7.html
-// See the section on RTM_NEWROUTE, specifically 'struct rtmsg'.
-type routeInfoInMemory struct {
-       Family byte
-       DstLen byte
-       SrcLen byte
-       TOS    byte
-
-       Table    byte
-       Protocol byte
-       Scope    byte
-       Type     byte
-
-       Flags uint32
-}
-
-// rtInfo contains information on a single route.
-type rtInfo struct {
-       Src, Dst         *net.IPNet
-       Gateway, PrefSrc net.IP
-       // We currently ignore the InputIface.
-       InputIface, OutputIface uint32
-       Priority                uint32
-}
-
-// routeSlice implements sort.Interface to sort routes by Priority.
-type routeSlice []*rtInfo
-
-func (r routeSlice) Len() int {
-       return len(r)
-}
-func (r routeSlice) Less(i, j int) bool {
-       return r[i].Priority < r[j].Priority
-}
-func (r routeSlice) Swap(i, j int) {
-       r[i], r[j] = r[j], r[i]
-}
-
-type router struct {
-       ifaces []net.Interface
-       addrs  []ipAddrs
-       v4, v6 routeSlice
-}
-
-func (r *router) String() string {
-       strs := []string{"ROUTER", "--- V4 ---"}
-       for _, route := range r.v4 {
-               strs = append(strs, fmt.Sprintf("%+v", *route))
-       }
-       strs = append(strs, "--- V6 ---")
-       for _, route := range r.v6 {
-               strs = append(strs, fmt.Sprintf("%+v", *route))
-       }
-       return strings.Join(strs, "\n")
-}
-
-type ipAddrs struct {
-       v4, v6 net.IP
-}
-
-func (r *router) Route(dst net.IP) (iface *net.Interface, gateway, preferredSrc net.IP, err error) {
-       return r.RouteWithSrc(nil, nil, dst)
-}
-
-func (r *router) RouteWithSrc(input net.HardwareAddr, src, dst net.IP) (iface *net.Interface, gateway, preferredSrc net.IP, err error) {
-       var ifaceIndex int
-       switch {
-       case dst.To4() != nil:
-               ifaceIndex, gateway, preferredSrc, err = r.route(r.v4, input, src, dst)
-       case dst.To16() != nil:
-               ifaceIndex, gateway, preferredSrc, err = r.route(r.v6, input, src, dst)
-       default:
-               err = errors.New("IP is not valid as IPv4 or IPv6")
-               return
-       }
-
-       // Interfaces are 1-indexed, but we store them in a 0-indexed array.
-       ifaceIndex--
-
-       iface = &r.ifaces[ifaceIndex]
-       if preferredSrc == nil {
-               switch {
-               case dst.To4() != nil:
-                       preferredSrc = r.addrs[ifaceIndex].v4
-               case dst.To16() != nil:
-                       preferredSrc = r.addrs[ifaceIndex].v6
-               }
-       }
-       return
-}
-
-func (r *router) route(routes routeSlice, input net.HardwareAddr, src, dst net.IP) (iface int, gateway, preferredSrc net.IP, err error) {
-       var inputIndex uint32
-       if input != nil {
-               for i, iface := range r.ifaces {
-                       if bytes.Equal(input, iface.HardwareAddr) {
-                               // Convert from zero- to one-indexed.
-                               inputIndex = uint32(i + 1)
-                               break
-                       }
-               }
-       }
-       for _, rt := range routes {
-               if rt.InputIface != 0 && rt.InputIface != inputIndex {
-                       continue
-               }
-               if rt.Src != nil && !rt.Src.Contains(src) {
-                       continue
-               }
-               if rt.Dst != nil && !rt.Dst.Contains(dst) {
-                       continue
-               }
-               return int(rt.OutputIface), rt.Gateway, rt.PrefSrc, nil
-       }
-       err = fmt.Errorf("no route found for %v", dst)
-       return
-}
-
-// New creates a new router object.  The router returned by New currently does
-// not update its routes after construction... care should be taken for
-// long-running programs to call New() regularly to take into account any
-// changes to the routing table which have occurred since the last New() call.
-func New() (Router, error) {
-       rtr := &router{}
-       tab, err := syscall.NetlinkRIB(syscall.RTM_GETROUTE, syscall.AF_UNSPEC)
-       if err != nil {
-               return nil, err
-       }
-       msgs, err := syscall.ParseNetlinkMessage(tab)
-       if err != nil {
-               return nil, err
-       }
-loop:
-       for _, m := range msgs {
-               switch m.Header.Type {
-               case syscall.NLMSG_DONE:
-                       break loop
-               case syscall.RTM_NEWROUTE:
-                       rt := (*routeInfoInMemory)(unsafe.Pointer(&m.Data[0]))
-                       routeInfo := rtInfo{}
-                       attrs, err := syscall.ParseNetlinkRouteAttr(&m)
-                       if err != nil {
-                               return nil, err
-                       }
-                       switch rt.Family {
-                       case syscall.AF_INET:
-                               rtr.v4 = append(rtr.v4, &routeInfo)
-                       case syscall.AF_INET6:
-                               rtr.v6 = append(rtr.v6, &routeInfo)
-                       default:
-                               continue loop
-                       }
-                       for _, attr := range attrs {
-                               switch attr.Attr.Type {
-                               case syscall.RTA_DST:
-                                       routeInfo.Dst = &net.IPNet{
-                                               IP:   net.IP(attr.Value),
-                                               Mask: net.CIDRMask(int(rt.DstLen), len(attr.Value)*8),
-                                       }
-                               case syscall.RTA_SRC:
-                                       routeInfo.Src = &net.IPNet{
-                                               IP:   net.IP(attr.Value),
-                                               Mask: net.CIDRMask(int(rt.SrcLen), len(attr.Value)*8),
-                                       }
-                               case syscall.RTA_GATEWAY:
-                                       routeInfo.Gateway = net.IP(attr.Value)
-                               case syscall.RTA_PREFSRC:
-                                       routeInfo.PrefSrc = net.IP(attr.Value)
-                               case syscall.RTA_IIF:
-                                       routeInfo.InputIface = *(*uint32)(unsafe.Pointer(&attr.Value[0]))
-                               case syscall.RTA_OIF:
-                                       routeInfo.OutputIface = *(*uint32)(unsafe.Pointer(&attr.Value[0]))
-                               case syscall.RTA_PRIORITY:
-                                       routeInfo.Priority = *(*uint32)(unsafe.Pointer(&attr.Value[0]))
-                               }
-                       }
-               }
-       }
-       sort.Sort(rtr.v4)
-       sort.Sort(rtr.v6)
-       ifaces, err := net.Interfaces()
-       if err != nil {
-               return nil, err
-       }
-       for i, iface := range ifaces {
-               if i != iface.Index-1 {
-                       return nil, fmt.Errorf("out of order iface %d = %v", i, iface)
-               }
-               rtr.ifaces = append(rtr.ifaces, iface)
-               var addrs ipAddrs
-               ifaceAddrs, err := iface.Addrs()
-               if err != nil {
-                       return nil, err
-               }
-               for _, addr := range ifaceAddrs {
-                       if inet, ok := addr.(*net.IPNet); ok {
-                               // Go has a nasty habit of giving you IPv4s as ::ffff:1.2.3.4 instead of 1.2.3.4.
-                               // We want to use mapped v4 addresses as v4 preferred addresses, never as v6
-                               // preferred addresses.
-                               if v4 := inet.IP.To4(); v4 != nil {
-                                       if addrs.v4 == nil {
-                                               addrs.v4 = v4
-                                       }
-                               } else if addrs.v6 == nil {
-                                       addrs.v6 = inet.IP
-                               }
-                       }
-               }
-               rtr.addrs = append(rtr.addrs, addrs)
-       }
-       return rtr, nil
-}
diff --git a/vendor/github.com/google/gopacket/tcpassembly/assembly.go b/vendor/github.com/google/gopacket/tcpassembly/assembly.go
deleted file mode 100644 (file)
index 50f6487..0000000
+++ /dev/null
@@ -1,788 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// Package tcpassembly provides TCP stream re-assembly.
-//
-// The tcpassembly package implements uni-directional TCP reassembly, for use in
-// packet-sniffing applications.  The caller reads packets off the wire, then
-// presents them to an Assembler in the form of gopacket layers.TCP packets
-// (github.com/google/gopacket, github.com/google/gopacket/layers).
-//
-// The Assembler uses a user-supplied
-// StreamFactory to create a user-defined Stream interface, then passes packet
-// data in stream order to that object.  A concurrency-safe StreamPool keeps
-// track of all current Streams being reassembled, so multiple Assemblers may
-// run at once to assemble packets while taking advantage of multiple cores.
-package tcpassembly
-
-import (
-       "flag"
-       "fmt"
-       "github.com/google/gopacket"
-       "github.com/google/gopacket/layers"
-       "log"
-       "sync"
-       "time"
-)
-
-var memLog = flag.Bool("assembly_memuse_log", false, "If true, the github.com/google/gopacket/tcpassembly library will log information regarding its memory use every once in a while.")
-var debugLog = flag.Bool("assembly_debug_log", false, "If true, the github.com/google/gopacket/tcpassembly library will log verbose debugging information (at least one line per packet)")
-
-const invalidSequence = -1
-const uint32Max = 0xFFFFFFFF
-
-// Sequence is a TCP sequence number.  It provides a few convenience functions
-// for handling TCP wrap-around.  The sequence should always be in the range
-// [0,0xFFFFFFFF]... its other bits are simply used in wrap-around calculations
-// and should never be set.
-type Sequence int64
-
-// Difference defines an ordering for comparing TCP sequences that's safe for
-// roll-overs.  It returns:
-//    > 0 : if t comes after s
-//    < 0 : if t comes before s
-//      0 : if t == s
-// The number returned is the sequence difference, so 4.Difference(8) will
-// return 4.
-//
-// It handles rollovers by considering any sequence in the first quarter of the
-// uint32 space to be after any sequence in the last quarter of that space, thus
-// wrapping the uint32 space.
-func (s Sequence) Difference(t Sequence) int {
-       if s > uint32Max-uint32Max/4 && t < uint32Max/4 {
-               t += uint32Max
-       } else if t > uint32Max-uint32Max/4 && s < uint32Max/4 {
-               s += uint32Max
-       }
-       return int(t - s)
-}
-
-// Add adds an integer to a sequence and returns the resulting sequence.
-func (s Sequence) Add(t int) Sequence {
-       return (s + Sequence(t)) & uint32Max
-}
-
-// Reassembly objects are passed by an Assembler into Streams using the
-// Reassembled call.  Callers should not need to create these structs themselves
-// except for testing.
-type Reassembly struct {
-       // Bytes is the next set of bytes in the stream.  May be empty.
-       Bytes []byte
-       // Skip is set to non-zero if bytes were skipped between this and the
-       // last Reassembly.  If this is the first packet in a connection and we
-       // didn't see the start, we have no idea how many bytes we skipped, so
-       // we set it to -1.  Otherwise, it's set to the number of bytes skipped.
-       Skip int
-       // Start is set if this set of bytes has a TCP SYN accompanying it.
-       Start bool
-       // End is set if this set of bytes has a TCP FIN or RST accompanying it.
-       End bool
-       // Seen is the timestamp this set of bytes was pulled off the wire.
-       Seen time.Time
-}
-
-const pageBytes = 1900
-
-// page is used to store TCP data we're not ready for yet (out-of-order
-// packets).  Unused pages are stored in and returned from a pageCache, which
-// avoids memory allocation.  Used pages are stored in a doubly-linked list in
-// a connection.
-type page struct {
-       Reassembly
-       seq        Sequence
-       index      int
-       prev, next *page
-       buf        [pageBytes]byte
-}
-
-// pageCache is a concurrency-unsafe store of page objects we use to avoid
-// memory allocation as much as we can.  It grows but never shrinks.
-type pageCache struct {
-       free         []*page
-       pcSize       int
-       size, used   int
-       pages        [][]page
-       pageRequests int64
-}
-
-const initialAllocSize = 1024
-
-func newPageCache() *pageCache {
-       pc := &pageCache{
-               free:   make([]*page, 0, initialAllocSize),
-               pcSize: initialAllocSize,
-       }
-       pc.grow()
-       return pc
-}
-
-// grow exponentially increases the size of our page cache as much as necessary.
-func (c *pageCache) grow() {
-       pages := make([]page, c.pcSize)
-       c.pages = append(c.pages, pages)
-       c.size += c.pcSize
-       for i := range pages {
-               c.free = append(c.free, &pages[i])
-       }
-       if *memLog {
-               log.Println("PageCache: created", c.pcSize, "new pages")
-       }
-       c.pcSize *= 2
-}
-
-// next returns a clean, ready-to-use page object.
-func (c *pageCache) next(ts time.Time) (p *page) {
-       if *memLog {
-               c.pageRequests++
-               if c.pageRequests&0xFFFF == 0 {
-                       log.Println("PageCache:", c.pageRequests, "requested,", c.used, "used,", len(c.free), "free")
-               }
-       }
-       if len(c.free) == 0 {
-               c.grow()
-       }
-       i := len(c.free) - 1
-       p, c.free = c.free[i], c.free[:i]
-       p.prev = nil
-       p.next = nil
-       p.Seen = ts
-       p.Bytes = p.buf[:0]
-       c.used++
-       return p
-}
-
-// replace replaces a page into the pageCache.
-func (c *pageCache) replace(p *page) {
-       c.used--
-       c.free = append(c.free, p)
-}
-
-// Stream is implemented by the caller to handle incoming reassembled
-// TCP data.  Callers create a StreamFactory, then StreamPool uses
-// it to create a new Stream for every TCP stream.
-//
-// assembly will, in order:
-//    1) Create the stream via StreamFactory.New
-//    2) Call Reassembled 0 or more times, passing in reassembled TCP data in order
-//    3) Call ReassemblyComplete one time, after which the stream is dereferenced by assembly.
-type Stream interface {
-       // Reassembled is called zero or more times.  assembly guarantees
-       // that the set of all Reassembly objects passed in during all
-       // calls are presented in the order they appear in the TCP stream.
-       // Reassembly objects are reused after each Reassembled call,
-       // so it's important to copy anything you need out of them
-       // (specifically out of Reassembly.Bytes) that you need to stay
-       // around after you return from the Reassembled call.
-       Reassembled([]Reassembly)
-       // ReassemblyComplete is called when assembly decides there is
-       // no more data for this Stream, either because a FIN or RST packet
-       // was seen, or because the stream has timed out without any new
-       // packet data (due to a call to FlushOlderThan).
-       ReassemblyComplete()
-}
-
-// StreamFactory is used by assembly to create a new stream for each
-// new TCP session.
-type StreamFactory interface {
-       // New should return a new stream for the given TCP key.
-       New(netFlow, tcpFlow gopacket.Flow) Stream
-}
-
-func (p *StreamPool) connections() []*connection {
-       p.mu.RLock()
-       conns := make([]*connection, 0, len(p.conns))
-       for _, conn := range p.conns {
-               conns = append(conns, conn)
-       }
-       p.mu.RUnlock()
-       return conns
-}
-
-// FlushOptions provide options for flushing connections.
-type FlushOptions struct {
-       T        time.Time // If nonzero, only connections with data older than T are flushed
-       CloseAll bool      // If true, ALL connections are closed post flush, not just those that correctly see FIN/RST.
-}
-
-// FlushWithOptions finds any streams waiting for packets older than
-// the given time, and pushes through the data they have (IE: tells
-// them to stop waiting and skip the data they're waiting for).
-//
-// Each Stream maintains a list of zero or more sets of bytes it has received
-// out-of-order.  For example, if it has processed up through sequence number
-// 10, it might have bytes [15-20), [20-25), [30,50) in its list.  Each set of
-// bytes also has the timestamp it was originally viewed.  A flush call will
-// look at the smallest subsequent set of bytes, in this case [15-20), and if
-// its timestamp is older than the passed-in time, it will push it and all
-// contiguous byte-sets out to the Stream's Reassembled function.  In this case,
-// it will push [15-20), but also [20-25), since that's contiguous.  It will
-// only push [30-50) if its timestamp is also older than the passed-in time,
-// otherwise it will wait until the next FlushOlderThan to see if bytes [25-30)
-// come in.
-//
-// If it pushes all bytes (or there were no sets of bytes to begin with)
-// AND the connection has not received any bytes since the passed-in time,
-// the connection will be closed.
-//
-// If CloseAll is set, it will close out connections that have been drained.
-// Regardless of the CloseAll setting, connections stale for the specified
-// time will be closed.
-//
-// Returns the number of connections flushed, and of those, the number closed
-// because of the flush.
-func (a *Assembler) FlushWithOptions(opt FlushOptions) (flushed, closed int) {
-       conns := a.connPool.connections()
-       closes := 0
-       flushes := 0
-       for _, conn := range conns {
-               flushed := false
-               conn.mu.Lock()
-               if conn.closed {
-                       // Already closed connection, nothing to do here.
-                       conn.mu.Unlock()
-                       continue
-               }
-               for conn.first != nil && conn.first.Seen.Before(opt.T) {
-                       a.skipFlush(conn)
-                       flushed = true
-                       if conn.closed {
-                               closes++
-                               break
-                       }
-               }
-               if opt.CloseAll && !conn.closed && conn.first == nil && conn.lastSeen.Before(opt.T) {
-                       flushed = true
-                       a.closeConnection(conn)
-                       closes++
-               }
-               if flushed {
-                       flushes++
-               }
-               conn.mu.Unlock()
-       }
-       return flushes, closes
-}
-
-// FlushOlderThan calls FlushWithOptions with the CloseAll option set to true.
-func (a *Assembler) FlushOlderThan(t time.Time) (flushed, closed int) {
-       return a.FlushWithOptions(FlushOptions{CloseAll: true, T: t})
-}
-
-// FlushAll flushes all remaining data into all remaining connections, closing
-// those connections.  It returns the total number of connections flushed/closed
-// by the call.
-func (a *Assembler) FlushAll() (closed int) {
-       conns := a.connPool.connections()
-       closed = len(conns)
-       for _, conn := range conns {
-               conn.mu.Lock()
-               for !conn.closed {
-                       a.skipFlush(conn)
-               }
-               conn.mu.Unlock()
-       }
-       return
-}
-
-type key [2]gopacket.Flow
-
-func (k *key) String() string {
-       return fmt.Sprintf("%s:%s", k[0], k[1])
-}
-
-// StreamPool stores all streams created by Assemblers, allowing multiple
-// assemblers to work together on stream processing while enforcing the fact
-// that a single stream receives its data serially.  It is safe
-// for concurrency, usable by multiple Assemblers at once.
-//
-// StreamPool handles the creation and storage of Stream objects used by one or
-// more Assembler objects.  When a new TCP stream is found by an Assembler, it
-// creates an associated Stream by calling its StreamFactory's New method.
-// Thereafter (until the stream is closed), that Stream object will receive
-// assembled TCP data via Assembler's calls to the stream's Reassembled
-// function.
-//
-// Like the Assembler, StreamPool attempts to minimize allocation.  Unlike the
-// Assembler, though, it does have to do some locking to make sure that the
-// connection objects it stores are accessible to multiple Assemblers.
-type StreamPool struct {
-       conns              map[key]*connection
-       users              int
-       mu                 sync.RWMutex
-       factory            StreamFactory
-       free               []*connection
-       all                [][]connection
-       nextAlloc          int
-       newConnectionCount int64
-}
-
-func (p *StreamPool) grow() {
-       conns := make([]connection, p.nextAlloc)
-       p.all = append(p.all, conns)
-       for i := range conns {
-               p.free = append(p.free, &conns[i])
-       }
-       if *memLog {
-               log.Println("StreamPool: created", p.nextAlloc, "new connections")
-       }
-       p.nextAlloc *= 2
-}
-
-// NewStreamPool creates a new connection pool.  Streams will
-// be created as necessary using the passed-in StreamFactory.
-func NewStreamPool(factory StreamFactory) *StreamPool {
-       return &StreamPool{
-               conns:     make(map[key]*connection, initialAllocSize),
-               free:      make([]*connection, 0, initialAllocSize),
-               factory:   factory,
-               nextAlloc: initialAllocSize,
-       }
-}
-
-const assemblerReturnValueInitialSize = 16
-
-// NewAssembler creates a new assembler.  Pass in the StreamPool
-// to use, may be shared across assemblers.
-//
-// This sets some sane defaults for the assembler options,
-// see DefaultAssemblerOptions for details.
-func NewAssembler(pool *StreamPool) *Assembler {
-       pool.mu.Lock()
-       pool.users++
-       pool.mu.Unlock()
-       return &Assembler{
-               ret:              make([]Reassembly, assemblerReturnValueInitialSize),
-               pc:               newPageCache(),
-               connPool:         pool,
-               AssemblerOptions: DefaultAssemblerOptions,
-       }
-}
-
-// DefaultAssemblerOptions provides default options for an assembler.
-// These options are used by default when calling NewAssembler, so if
-// modified before a NewAssembler call they'll affect the resulting Assembler.
-//
-// Note that the default options can result in ever-increasing memory usage
-// unless one of the Flush* methods is called on a regular basis.
-var DefaultAssemblerOptions = AssemblerOptions{
-       MaxBufferedPagesPerConnection: 0, // unlimited
-       MaxBufferedPagesTotal:         0, // unlimited
-}
-
-type connection struct {
-       key               key
-       pages             int
-       first, last       *page
-       nextSeq           Sequence
-       created, lastSeen time.Time
-       stream            Stream
-       closed            bool
-       mu                sync.Mutex
-}
-
-func (c *connection) reset(k key, s Stream, ts time.Time) {
-       c.key = k
-       c.pages = 0
-       c.first, c.last = nil, nil
-       c.nextSeq = invalidSequence
-       c.created = ts
-       c.stream = s
-       c.closed = false
-}
-
-// AssemblerOptions controls the behavior of each assembler.  Modify the
-// options of each assembler you create to change their behavior.
-type AssemblerOptions struct {
-       // MaxBufferedPagesTotal is an upper limit on the total number of pages to
-       // buffer while waiting for out-of-order packets.  Once this limit is
-       // reached, the assembler will degrade to flushing every connection it
-       // gets a packet for.  If <= 0, this is ignored.
-       MaxBufferedPagesTotal int
-       // MaxBufferedPagesPerConnection is an upper limit on the number of pages
-       // buffered for a single connection.  Should this limit be reached for a
-       // particular connection, the smallest sequence number will be flushed, along
-       // with any contiguous data.  If <= 0, this is ignored.
-       MaxBufferedPagesPerConnection int
-}
-
-// Assembler handles reassembling TCP streams.  It is not safe for
-// concurrency... after passing a packet in via the Assemble call, the caller
-// must wait for that call to return before calling Assemble again.  Callers can
-// get around this by creating multiple assemblers that share a StreamPool.  In
-// that case, each individual stream will still be handled serially (each stream
-// has an individual mutex associated with it), however multiple assemblers can
-// assemble different connections concurrently.
-//
-// The Assembler provides (hopefully) fast TCP stream re-assembly for sniffing
-// applications written in Go.  The Assembler uses the following methods to be
-// as fast as possible, to keep packet processing speedy:
-//
-// Avoids Lock Contention
-//
-// Assemblers locks connections, but each connection has an individual lock, and
-// rarely will two Assemblers be looking at the same connection.  Assemblers
-// lock the StreamPool when looking up connections, but they use Reader
-// locks initially, and only force a write lock if they need to create a new
-// connection or close one down.  These happen much less frequently than
-// individual packet handling.
-//
-// Each assembler runs in its own goroutine, and the only state shared between
-// goroutines is through the StreamPool.  Thus all internal Assembler state
-// can be handled without any locking.
-//
-// NOTE:  If you can guarantee that packets going to a set of Assemblers will
-// contain information on different connections per Assembler (for example,
-// they're already hashed by PF_RING hashing or some other hashing mechanism),
-// then we recommend you use a seperate StreamPool per Assembler, thus
-// avoiding all lock contention.  Only when different Assemblers could receive
-// packets for the same Stream should a StreamPool be shared between them.
-//
-// Avoids Memory Copying
-//
-// In the common case, handling of a single TCP packet should result in zero
-// memory allocations.  The Assembler will look up the connection, figure out
-// that the packet has arrived in order, and immediately pass that packet on to
-// the appropriate connection's handling code.  Only if a packet arrives out of
-// order is its contents copied and stored in memory for later.
-//
-// Avoids Memory Allocation
-//
-// Assemblers try very hard to not use memory allocation unless absolutely
-// necessary.  Packet data for sequential packets is passed directly to streams
-// with no copying or allocation.  Packet data for out-of-order packets is
-// copied into reusable pages, and new pages are only allocated rarely when the
-// page cache runs out.  Page caches are Assembler-specific, thus not used
-// concurrently and requiring no locking.
-//
-// Internal representations for connection objects are also reused over time.
-// Because of this, the most common memory allocation done by the Assembler is
-// generally what's done by the caller in StreamFactory.New.  If no allocation
-// is done there, then very little allocation is done ever, mostly to handle
-// large increases in bandwidth or numbers of connections.
-//
-// TODO:  The page caches used by an Assembler will grow to the size necessary
-// to handle a workload, and currently will never shrink.  This means that
-// traffic spikes can result in large memory usage which isn't garbage
-// collected when typical traffic levels return.
-type Assembler struct {
-       AssemblerOptions
-       ret      []Reassembly
-       pc       *pageCache
-       connPool *StreamPool
-}
-
-func (p *StreamPool) newConnection(k key, s Stream, ts time.Time) (c *connection) {
-       if *memLog {
-               p.newConnectionCount++
-               if p.newConnectionCount&0x7FFF == 0 {
-                       log.Println("StreamPool:", p.newConnectionCount, "requests,", len(p.conns), "used,", len(p.free), "free")
-               }
-       }
-       if len(p.free) == 0 {
-               p.grow()
-       }
-       index := len(p.free) - 1
-       c, p.free = p.free[index], p.free[:index]
-       c.reset(k, s, ts)
-       return c
-}
-
-// getConnection returns a connection.  If end is true and a connection
-// does not already exist, returns nil.  This allows us to check for a
-// connection without actually creating one if it doesn't already exist.
-func (p *StreamPool) getConnection(k key, end bool, ts time.Time) *connection {
-       p.mu.RLock()
-       conn := p.conns[k]
-       p.mu.RUnlock()
-       if end || conn != nil {
-               return conn
-       }
-       s := p.factory.New(k[0], k[1])
-       p.mu.Lock()
-       conn = p.newConnection(k, s, ts)
-       if conn2 := p.conns[k]; conn2 != nil {
-               p.mu.Unlock()
-               return conn2
-       }
-       p.conns[k] = conn
-       p.mu.Unlock()
-       return conn
-}
-
-// Assemble calls AssembleWithTimestamp with the current timestamp, useful for
-// packets being read directly off the wire.
-func (a *Assembler) Assemble(netFlow gopacket.Flow, t *layers.TCP) {
-       a.AssembleWithTimestamp(netFlow, t, time.Now())
-}
-
-// AssembleWithTimestamp reassembles the given TCP packet into its appropriate
-// stream.
-//
-// The timestamp passed in must be the timestamp the packet was seen.
-// For packets read off the wire, time.Now() should be fine.  For packets read
-// from PCAP files, CaptureInfo.Timestamp should be passed in.  This timestamp
-// will affect which streams are flushed by a call to FlushOlderThan.
-//
-// Each Assemble call results in, in order:
-//
-//    zero or one calls to StreamFactory.New, creating a stream
-//    zero or one calls to Reassembled on a single stream
-//    zero or one calls to ReassemblyComplete on the same stream
-func (a *Assembler) AssembleWithTimestamp(netFlow gopacket.Flow, t *layers.TCP, timestamp time.Time) {
-       // Ignore empty TCP packets
-       if !t.SYN && !t.FIN && !t.RST && len(t.LayerPayload()) == 0 {
-               if *debugLog {
-                       log.Println("ignoring useless packet")
-               }
-               return
-       }
-
-       a.ret = a.ret[:0]
-       key := key{netFlow, t.TransportFlow()}
-       var conn *connection
-       // This for loop handles a race condition where a connection will close, lock
-       // the connection pool, and remove itself, but before it locked the connection
-       // pool it's returned to another Assemble statement.  This should loop 0-1
-       // times for the VAST majority of cases.
-       for {
-               conn = a.connPool.getConnection(
-                       key, !t.SYN && len(t.LayerPayload()) == 0, timestamp)
-               if conn == nil {
-                       if *debugLog {
-                               log.Printf("%v got empty packet on otherwise empty connection", key)
-                       }
-                       return
-               }
-               conn.mu.Lock()
-               if !conn.closed {
-                       break
-               }
-               conn.mu.Unlock()
-       }
-       if conn.lastSeen.Before(timestamp) {
-               conn.lastSeen = timestamp
-       }
-       seq, bytes := Sequence(t.Seq), t.Payload
-       if conn.nextSeq == invalidSequence {
-               if t.SYN {
-                       if *debugLog {
-                               log.Printf("%v saw first SYN packet, returning immediately, seq=%v", key, seq)
-                       }
-                       a.ret = append(a.ret, Reassembly{
-                               Bytes: bytes,
-                               Skip:  0,
-                               Start: true,
-                               Seen:  timestamp,
-                       })
-                       conn.nextSeq = seq.Add(len(bytes) + 1)
-               } else {
-                       if *debugLog {
-                               log.Printf("%v waiting for start, storing into connection", key)
-                       }
-                       a.insertIntoConn(t, conn, timestamp)
-               }
-       } else if diff := conn.nextSeq.Difference(seq); diff > 0 {
-               if *debugLog {
-                       log.Printf("%v gap in sequence numbers (%v, %v) diff %v, storing into connection", key, conn.nextSeq, seq, diff)
-               }
-               a.insertIntoConn(t, conn, timestamp)
-       } else {
-               bytes, conn.nextSeq = byteSpan(conn.nextSeq, seq, bytes)
-               if *debugLog {
-                       log.Printf("%v found contiguous data (%v, %v), returning immediately", key, seq, conn.nextSeq)
-               }
-               a.ret = append(a.ret, Reassembly{
-                       Bytes: bytes,
-                       Skip:  0,
-                       End:   t.RST || t.FIN,
-                       Seen:  timestamp,
-               })
-       }
-       if len(a.ret) > 0 {
-               a.sendToConnection(conn)
-       }
-       conn.mu.Unlock()
-}
-
-func byteSpan(expected, received Sequence, bytes []byte) (toSend []byte, next Sequence) {
-       if expected == invalidSequence {
-               return bytes, received.Add(len(bytes))
-       }
-       span := int(received.Difference(expected))
-       if span <= 0 {
-               return bytes, received.Add(len(bytes))
-       } else if len(bytes) < span {
-               return nil, expected
-       }
-       return bytes[span:], expected.Add(len(bytes) - span)
-}
-
-// sendToConnection sends the current values in a.ret to the connection, closing
-// the connection if the last thing sent had End set.
-func (a *Assembler) sendToConnection(conn *connection) {
-       a.addContiguous(conn)
-       if conn.stream == nil {
-               panic("why?")
-       }
-       conn.stream.Reassembled(a.ret)
-       if a.ret[len(a.ret)-1].End {
-               a.closeConnection(conn)
-       }
-}
-
-// addContiguous adds contiguous byte-sets to a connection.
-func (a *Assembler) addContiguous(conn *connection) {
-       for conn.first != nil && conn.nextSeq.Difference(conn.first.seq) <= 0 {
-               a.addNextFromConn(conn)
-       }
-}
-
-// skipFlush skips the first set of bytes we're waiting for and returns the
-// first set of bytes we have.  If we have no bytes pending, it closes the
-// connection.
-func (a *Assembler) skipFlush(conn *connection) {
-       if *debugLog {
-               log.Printf("%v skipFlush %v", conn.key, conn.nextSeq)
-       }
-       if conn.first == nil {
-               a.closeConnection(conn)
-               return
-       }
-       a.ret = a.ret[:0]
-       a.addNextFromConn(conn)
-       a.addContiguous(conn)
-       a.sendToConnection(conn)
-}
-
-func (p *StreamPool) remove(conn *connection) {
-       p.mu.Lock()
-       delete(p.conns, conn.key)
-       p.free = append(p.free, conn)
-       p.mu.Unlock()
-}
-
-func (a *Assembler) closeConnection(conn *connection) {
-       if *debugLog {
-               log.Printf("%v closing", conn.key)
-       }
-       conn.stream.ReassemblyComplete()
-       conn.closed = true
-       a.connPool.remove(conn)
-       for p := conn.first; p != nil; p = p.next {
-               a.pc.replace(p)
-       }
-}
-
-// traverseConn traverses our doubly-linked list of pages for the correct
-// position to put the given sequence number.  Note that it traverses backwards,
-// starting at the highest sequence number and going down, since we assume the
-// common case is that TCP packets for a stream will appear in-order, with
-// minimal loss or packet reordering.
-func (c *connection) traverseConn(seq Sequence) (prev, current *page) {
-       prev = c.last
-       for prev != nil && prev.seq.Difference(seq) < 0 {
-               current = prev
-               prev = current.prev
-       }
-       return
-}
-
-// pushBetween inserts the doubly-linked list first-...-last in between the
-// nodes prev-next in another doubly-linked list.  If prev is nil, makes first
-// the new first page in the connection's list.  If next is nil, makes last the
-// new last page in the list.  first/last may point to the same page.
-func (c *connection) pushBetween(prev, next, first, last *page) {
-       // Maintain our doubly linked list
-       if next == nil || c.last == nil {
-               c.last = last
-       } else {
-               last.next = next
-               next.prev = last
-       }
-       if prev == nil || c.first == nil {
-               c.first = first
-       } else {
-               first.prev = prev
-               prev.next = first
-       }
-}
-
-func (a *Assembler) insertIntoConn(t *layers.TCP, conn *connection, ts time.Time) {
-       if conn.first != nil && conn.first.seq == conn.nextSeq {
-               panic("wtf")
-       }
-       p, p2, numPages := a.pagesFromTCP(t, ts)
-       prev, current := conn.traverseConn(Sequence(t.Seq))
-       conn.pushBetween(prev, current, p, p2)
-       conn.pages += numPages
-       if (a.MaxBufferedPagesPerConnection > 0 && conn.pages >= a.MaxBufferedPagesPerConnection) ||
-               (a.MaxBufferedPagesTotal > 0 && a.pc.used >= a.MaxBufferedPagesTotal) {
-               if *debugLog {
-                       log.Printf("%v hit max buffer size: %+v, %v, %v", conn.key, a.AssemblerOptions, conn.pages, a.pc.used)
-               }
-               a.addNextFromConn(conn)
-       }
-}
-
-// pagesFromTCP creates a page (or set of pages) from a TCP packet.  Note that
-// it should NEVER receive a SYN packet, as it doesn't handle sequences
-// correctly.
-//
-// It returns the first and last page in its doubly-linked list of new pages.
-func (a *Assembler) pagesFromTCP(t *layers.TCP, ts time.Time) (p, p2 *page, numPages int) {
-       first := a.pc.next(ts)
-       current := first
-       numPages++
-       seq, bytes := Sequence(t.Seq), t.Payload
-       for {
-               length := min(len(bytes), pageBytes)
-               current.Bytes = current.buf[:length]
-               copy(current.Bytes, bytes)
-               current.seq = seq
-               bytes = bytes[length:]
-               if len(bytes) == 0 {
-                       break
-               }
-               seq = seq.Add(length)
-               current.next = a.pc.next(ts)
-               current.next.prev = current
-               current = current.next
-               numPages++
-       }
-       current.End = t.RST || t.FIN
-       return first, current, numPages
-}
-
-// addNextFromConn pops the first page from a connection off and adds it to the
-// return array.
-func (a *Assembler) addNextFromConn(conn *connection) {
-       if conn.nextSeq == invalidSequence {
-               conn.first.Skip = -1
-       } else if diff := conn.nextSeq.Difference(conn.first.seq); diff > 0 {
-               conn.first.Skip = int(diff)
-       }
-       conn.first.Bytes, conn.nextSeq = byteSpan(conn.nextSeq, conn.first.seq, conn.first.Bytes)
-       if *debugLog {
-               log.Printf("%v   adding from conn (%v, %v)", conn.key, conn.first.seq, conn.nextSeq)
-       }
-       a.ret = append(a.ret, conn.first.Reassembly)
-       a.pc.replace(conn.first)
-       if conn.first == conn.last {
-               conn.first = nil
-               conn.last = nil
-       } else {
-               conn.first = conn.first.next
-               conn.first.prev = nil
-       }
-       conn.pages--
-}
-
-func min(a, b int) int {
-       if a < b {
-               return a
-       }
-       return b
-}
diff --git a/vendor/github.com/google/gopacket/tcpassembly/assembly_test.go b/vendor/github.com/google/gopacket/tcpassembly/assembly_test.go
deleted file mode 100644 (file)
index 1bd2842..0000000
+++ /dev/null
@@ -1,562 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package tcpassembly
-
-import (
-       "github.com/google/gopacket"
-       "github.com/google/gopacket/layers"
-       "net"
-       "reflect"
-       "testing"
-       "time"
-)
-
-var netFlow gopacket.Flow
-
-func init() {
-       netFlow, _ = gopacket.FlowFromEndpoints(
-               layers.NewIPEndpoint(net.IP{1, 2, 3, 4}),
-               layers.NewIPEndpoint(net.IP{5, 6, 7, 8}))
-}
-
-type testSequence struct {
-       in   layers.TCP
-       want []Reassembly
-}
-
-type testFactory struct {
-       reassembly []Reassembly
-}
-
-func (t *testFactory) New(a, b gopacket.Flow) Stream {
-       return t
-}
-func (t *testFactory) Reassembled(r []Reassembly) {
-       t.reassembly = r
-       for i := 0; i < len(r); i++ {
-               t.reassembly[i].Seen = time.Time{}
-       }
-}
-func (t *testFactory) ReassemblyComplete() {
-}
-
-func test(t *testing.T, s []testSequence) {
-       fact := &testFactory{}
-       p := NewStreamPool(fact)
-       a := NewAssembler(p)
-       a.MaxBufferedPagesPerConnection = 4
-       for i, test := range s {
-               fact.reassembly = []Reassembly{}
-               a.Assemble(netFlow, &test.in)
-               if !reflect.DeepEqual(fact.reassembly, test.want) {
-                       t.Fatalf("test %v:\nwant: %v\n got: %v\n", i, test.want, fact.reassembly)
-               }
-       }
-}
-
-func TestReorder(t *testing.T) {
-       test(t, []testSequence{
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1001,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3}},
-                       },
-                       want: []Reassembly{},
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1004,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{2, 2, 3}},
-                       },
-                       want: []Reassembly{},
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1010,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{4, 2, 3}},
-                       },
-                       want: []Reassembly{},
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1007,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{3, 2, 3}},
-                       },
-                       want: []Reassembly{
-                               Reassembly{
-                                       Skip:  -1,
-                                       Bytes: []byte{1, 2, 3},
-                               },
-                               Reassembly{
-                                       Bytes: []byte{2, 2, 3},
-                               },
-                               Reassembly{
-                                       Bytes: []byte{3, 2, 3},
-                               },
-                               Reassembly{
-                                       Bytes: []byte{4, 2, 3},
-                               },
-                       },
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1016,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{2, 2, 3}},
-                       },
-                       want: []Reassembly{},
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1019,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{3, 2, 3}},
-                       },
-                       want: []Reassembly{},
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1013,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3}},
-                       },
-                       want: []Reassembly{
-                               Reassembly{
-                                       Bytes: []byte{1, 2, 3},
-                               },
-                               Reassembly{
-                                       Bytes: []byte{2, 2, 3},
-                               },
-                               Reassembly{
-                                       Bytes: []byte{3, 2, 3},
-                               },
-                       },
-               },
-       })
-}
-
-func TestMaxPerSkip(t *testing.T) {
-       test(t, []testSequence{
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1000,
-                               SYN:       true,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3}},
-                       },
-                       want: []Reassembly{
-                               Reassembly{
-                                       Start: true,
-                                       Bytes: []byte{1, 2, 3},
-                               },
-                       },
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1007,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{3, 2, 3}},
-                       },
-                       want: []Reassembly{},
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1010,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{4, 2, 3}},
-                       },
-                       want: []Reassembly{},
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1013,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{5, 2, 3}},
-                       },
-                       want: []Reassembly{},
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1016,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{6, 2, 3}},
-                       },
-                       want: []Reassembly{
-                               Reassembly{
-                                       Skip:  3,
-                                       Bytes: []byte{3, 2, 3},
-                               },
-                               Reassembly{
-                                       Bytes: []byte{4, 2, 3},
-                               },
-                               Reassembly{
-                                       Bytes: []byte{5, 2, 3},
-                               },
-                               Reassembly{
-                                       Bytes: []byte{6, 2, 3},
-                               },
-                       },
-               },
-       })
-}
-
-func TestReorderFast(t *testing.T) {
-       test(t, []testSequence{
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               SYN:       true,
-                               Seq:       1000,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3}},
-                       },
-                       want: []Reassembly{
-                               Reassembly{
-                                       Start: true,
-                                       Bytes: []byte{1, 2, 3},
-                               },
-                       },
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1007,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{3, 2, 3}},
-                       },
-                       want: []Reassembly{},
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1004,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{2, 2, 3}},
-                       },
-                       want: []Reassembly{
-                               Reassembly{
-                                       Bytes: []byte{2, 2, 3},
-                               },
-                               Reassembly{
-                                       Bytes: []byte{3, 2, 3},
-                               },
-                       },
-               },
-       })
-}
-
-func TestOverlap(t *testing.T) {
-       test(t, []testSequence{
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               SYN:       true,
-                               Seq:       1000,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
-                       },
-                       want: []Reassembly{
-                               Reassembly{
-                                       Start: true,
-                                       Bytes: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0},
-                               },
-                       },
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1007,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{7, 8, 9, 0, 1, 2, 3, 4, 5}},
-                       },
-                       want: []Reassembly{
-                               Reassembly{
-                                       Bytes: []byte{1, 2, 3, 4, 5},
-                               },
-                       },
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1010,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{0, 1, 2, 3, 4, 5, 6, 7}},
-                       },
-                       want: []Reassembly{
-                               Reassembly{
-                                       Bytes: []byte{6, 7},
-                               },
-                       },
-               },
-       })
-}
-
-func TestBufferedOverlap(t *testing.T) {
-       test(t, []testSequence{
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1007,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{7, 8, 9, 0, 1, 2, 3, 4, 5}},
-                       },
-                       want: []Reassembly{},
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1010,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{0, 1, 2, 3, 4, 5, 6, 7}},
-                       },
-                       want: []Reassembly{},
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               SYN:       true,
-                               Seq:       1000,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
-                       },
-                       want: []Reassembly{
-                               Reassembly{
-                                       Start: true,
-                                       Bytes: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0},
-                               },
-                               Reassembly{
-                                       Bytes: []byte{1, 2, 3, 4, 5},
-                               },
-                               Reassembly{
-                                       Bytes: []byte{6, 7},
-                               },
-                       },
-               },
-       })
-}
-
-func TestOverrun1(t *testing.T) {
-       test(t, []testSequence{
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               SYN:       true,
-                               Seq:       0xFFFFFFFF,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
-                       },
-                       want: []Reassembly{
-                               Reassembly{
-                                       Start: true,
-                                       Bytes: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0},
-                               },
-                       },
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       10,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4}},
-                       },
-                       want: []Reassembly{
-                               Reassembly{
-                                       Bytes: []byte{1, 2, 3, 4},
-                               },
-                       },
-               },
-       })
-}
-
-func TestOverrun2(t *testing.T) {
-       test(t, []testSequence{
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       10,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4}},
-                       },
-                       want: []Reassembly{},
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               SYN:       true,
-                               Seq:       0xFFFFFFFF,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
-                       },
-                       want: []Reassembly{
-                               Reassembly{
-                                       Start: true,
-                                       Bytes: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0},
-                               },
-                               Reassembly{
-                                       Bytes: []byte{1, 2, 3, 4},
-                               },
-                       },
-               },
-       })
-}
-
-func TestCacheLargePacket(t *testing.T) {
-       data := make([]byte, pageBytes*3)
-       test(t, []testSequence{
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1001,
-                               BaseLayer: layers.BaseLayer{Payload: data},
-                       },
-                       want: []Reassembly{},
-               },
-               {
-                       in: layers.TCP{
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1000,
-                               SYN:       true,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{}},
-                       },
-                       want: []Reassembly{
-                               Reassembly{
-                                       Start: true,
-                                       Bytes: []byte{},
-                               },
-                               Reassembly{
-                                       Bytes: data[:pageBytes],
-                               },
-                               Reassembly{
-                                       Bytes: data[pageBytes : pageBytes*2],
-                               },
-                               Reassembly{
-                                       Bytes: data[pageBytes*2 : pageBytes*3],
-                               },
-                       },
-               },
-       })
-}
-
-func BenchmarkSingleStream(b *testing.B) {
-       t := layers.TCP{
-               SrcPort:   1,
-               DstPort:   2,
-               SYN:       true,
-               Seq:       1000,
-               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
-       }
-       a := NewAssembler(NewStreamPool(&testFactory{}))
-       for i := 0; i < b.N; i++ {
-               a.Assemble(netFlow, &t)
-               if t.SYN {
-                       t.SYN = false
-                       t.Seq++
-               }
-               t.Seq += 10
-       }
-}
-
-func BenchmarkSingleStreamSkips(b *testing.B) {
-       t := layers.TCP{
-               SrcPort:   1,
-               DstPort:   2,
-               SYN:       true,
-               Seq:       1000,
-               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
-       }
-       a := NewAssembler(NewStreamPool(&testFactory{}))
-       skipped := false
-       for i := 0; i < b.N; i++ {
-               if i%10 == 9 {
-                       t.Seq += 10
-                       skipped = true
-               } else if skipped {
-                       t.Seq -= 20
-               }
-               a.Assemble(netFlow, &t)
-               if t.SYN {
-                       t.SYN = false
-                       t.Seq++
-               }
-               t.Seq += 10
-               if skipped {
-                       t.Seq += 10
-                       skipped = false
-               }
-       }
-}
-
-func BenchmarkSingleStreamLoss(b *testing.B) {
-       t := layers.TCP{
-               SrcPort:   1,
-               DstPort:   2,
-               SYN:       true,
-               Seq:       1000,
-               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
-       }
-       a := NewAssembler(NewStreamPool(&testFactory{}))
-       for i := 0; i < b.N; i++ {
-               a.Assemble(netFlow, &t)
-               t.SYN = false
-               t.Seq += 11
-       }
-}
-
-func BenchmarkMultiStreamGrow(b *testing.B) {
-       t := layers.TCP{
-               SrcPort:   1,
-               DstPort:   2,
-               Seq:       0,
-               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
-       }
-       a := NewAssembler(NewStreamPool(&testFactory{}))
-       for i := 0; i < b.N; i++ {
-               t.SrcPort = layers.TCPPort(i)
-               a.Assemble(netFlow, &t)
-               t.Seq += 10
-       }
-}
-
-func BenchmarkMultiStreamConn(b *testing.B) {
-       t := layers.TCP{
-               SrcPort:   1,
-               DstPort:   2,
-               Seq:       0,
-               SYN:       true,
-               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
-       }
-       a := NewAssembler(NewStreamPool(&testFactory{}))
-       for i := 0; i < b.N; i++ {
-               t.SrcPort = layers.TCPPort(i)
-               a.Assemble(netFlow, &t)
-               if i%65536 == 65535 {
-                       if t.SYN {
-                               t.SYN = false
-                               t.Seq++
-                       }
-                       t.Seq += 10
-               }
-       }
-}
diff --git a/vendor/github.com/google/gopacket/tcpassembly/tcpreader/reader.go b/vendor/github.com/google/gopacket/tcpassembly/tcpreader/reader.go
deleted file mode 100644 (file)
index 092b811..0000000
+++ /dev/null
@@ -1,210 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// Package tcpreader provides an implementation for tcpassembly.Stream which presents
-// the caller with an io.Reader for easy processing.
-//
-// The assembly package handles packet data reordering, but its output is
-// library-specific, thus not usable by the majority of external Go libraries.
-// The io.Reader interface, on the other hand, is used throughout much of Go
-// code as an easy mechanism for reading in data streams and decoding them.  For
-// example, the net/http package provides the ReadRequest function, which can
-// parase an HTTP request from a live data stream, just what we'd want when
-// sniffing HTTP traffic.  Using ReaderStream, this is relatively easy to set
-// up:
-//
-//  // Create our StreamFactory
-//  type httpStreamFactory struct {}
-//  func (f *httpStreamFactory) New(a, b gopacket.Flow) {
-//     r := tcpreader.NewReaderStream(false)
-//     go printRequests(r)
-//     return &r
-//  }
-//  func printRequests(r io.Reader) {
-//    // Convert to bufio, since that's what ReadRequest wants.
-//     buf := bufio.NewReader(r)
-//     for {
-//             if req, err := http.ReadRequest(buf); err == io.EOF {
-//                     return
-//             } else if err != nil {
-//                     log.Println("Error parsing HTTP requests:", err)
-//             } else {
-//                     fmt.Println("HTTP REQUEST:", req)
-//                     fmt.Println("Body contains", tcpreader.DiscardBytesToEOF(req.Body), "bytes")
-//             }
-//     }
-//  }
-//
-// Using just this code, we're able to reference a powerful, built-in library
-// for HTTP request parsing to do all the dirty-work of parsing requests from
-// the wire in real-time.  Pass this stream factory to an tcpassembly.StreamPool,
-// start up an tcpassembly.Assembler, and you're good to go!
-package tcpreader
-
-import (
-       "errors"
-       "github.com/google/gopacket/tcpassembly"
-       "io"
-)
-
-var discardBuffer = make([]byte, 4096)
-
-// DiscardBytesToFirstError will read in all bytes up to the first error
-// reported by the given reader, then return the number of bytes discarded
-// and the error encountered.
-func DiscardBytesToFirstError(r io.Reader) (discarded int, err error) {
-       for {
-               n, e := r.Read(discardBuffer)
-               discarded += n
-               if e != nil {
-                       return discarded, e
-               }
-       }
-}
-
-// DiscardBytesToEOF will read in all bytes from a Reader until it
-// encounters an io.EOF, then return the number of bytes.  Be careful
-// of this... if used on a Reader that returns a non-io.EOF error
-// consistently, this will loop forever discarding that error while
-// it waits for an EOF.
-func DiscardBytesToEOF(r io.Reader) (discarded int) {
-       for {
-               n, e := DiscardBytesToFirstError(r)
-               discarded += n
-               if e == io.EOF {
-                       return
-               }
-       }
-}
-
-// ReaderStream implements both tcpassembly.Stream and io.Reader.  You can use it
-// as a building block to make simple, easy stream handlers.
-//
-// IMPORTANT:  If you use a ReaderStream, you MUST read ALL BYTES from it,
-// quickly.  Not reading available bytes will block TCP stream reassembly.  It's
-// a common pattern to do this by starting a goroutine in the factory's New
-// method:
-//
-//  type myStreamHandler struct {
-//     r ReaderStream
-//  }
-//  func (m *myStreamHandler) run() {
-//     // Do something here that reads all of the ReaderStream, or your assembly
-//     // will block.
-//     fmt.Println(tcpreader.DiscardBytesToEOF(&m.r))
-//  }
-//  func (f *myStreamFactory) New(a, b gopacket.Flow) tcpassembly.Stream {
-//     s := &myStreamHandler{}
-//     go s.run()
-//     // Return the ReaderStream as the stream that assembly should populate.
-//     return &s.r
-//  }
-type ReaderStream struct {
-       ReaderStreamOptions
-       reassembled  chan []tcpassembly.Reassembly
-       done         chan bool
-       current      []tcpassembly.Reassembly
-       closed       bool
-       lossReported bool
-       first        bool
-       initiated    bool
-}
-
-// ReaderStreamOptions provides user-resettable options for a ReaderStream.
-type ReaderStreamOptions struct {
-       // LossErrors determines whether this stream will return
-       // ReaderStreamDataLoss errors from its Read function whenever it
-       // determines data has been lost.
-       LossErrors bool
-}
-
-// NewReaderStream returns a new ReaderStream object.
-func NewReaderStream() ReaderStream {
-       r := ReaderStream{
-               reassembled: make(chan []tcpassembly.Reassembly),
-               done:        make(chan bool),
-               first:       true,
-               initiated:   true,
-       }
-       return r
-}
-
-// Reassembled implements tcpassembly.Stream's Reassembled function.
-func (r *ReaderStream) Reassembled(reassembly []tcpassembly.Reassembly) {
-       if !r.initiated {
-               panic("ReaderStream not created via NewReaderStream")
-       }
-       r.reassembled <- reassembly
-       <-r.done
-}
-
-// ReassemblyComplete implements tcpassembly.Stream's ReassemblyComplete function.
-func (r *ReaderStream) ReassemblyComplete() {
-       close(r.reassembled)
-       close(r.done)
-}
-
-// stripEmpty strips empty reassembly slices off the front of its current set of
-// slices.
-func (r *ReaderStream) stripEmpty() {
-       for len(r.current) > 0 && len(r.current[0].Bytes) == 0 {
-               r.current = r.current[1:]
-               r.lossReported = false
-       }
-}
-
-// DataLost is returned by the ReaderStream's Read function when it encounters
-// a Reassembly with Skip != 0.
-var DataLost = errors.New("lost data")
-
-// Read implements io.Reader's Read function.
-// Given a byte slice, it will either copy a non-zero number of bytes into
-// that slice and return the number of bytes and a nil error, or it will
-// leave slice p as is and return 0, io.EOF.
-func (r *ReaderStream) Read(p []byte) (int, error) {
-       if !r.initiated {
-               panic("ReaderStream not created via NewReaderStream")
-       }
-       var ok bool
-       r.stripEmpty()
-       for !r.closed && len(r.current) == 0 {
-               if r.first {
-                       r.first = false
-               } else {
-                       r.done <- true
-               }
-               if r.current, ok = <-r.reassembled; ok {
-                       r.stripEmpty()
-               } else {
-                       r.closed = true
-               }
-       }
-       if len(r.current) > 0 {
-               current := &r.current[0]
-               if r.LossErrors && !r.lossReported && current.Skip != 0 {
-                       r.lossReported = true
-                       return 0, DataLost
-               }
-               length := copy(p, current.Bytes)
-               current.Bytes = current.Bytes[length:]
-               return length, nil
-       }
-       return 0, io.EOF
-}
-
-// Close implements io.Closer's Close function, making ReaderStream a
-// io.ReadCloser.  It discards all remaining bytes in the reassembly in a
-// manner that's safe for the assembler (IE: it doesn't block).
-func (r *ReaderStream) Close() error {
-       r.current = nil
-       r.closed = true
-       for {
-               if _, ok := <-r.reassembled; !ok {
-                       return nil
-               }
-               r.done <- true
-       }
-}
diff --git a/vendor/github.com/google/gopacket/tcpassembly/tcpreader/reader_test.go b/vendor/github.com/google/gopacket/tcpassembly/tcpreader/reader_test.go
deleted file mode 100644 (file)
index 7da9fd9..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package tcpreader
-
-import (
-       "bytes"
-       "fmt"
-       "github.com/google/gopacket"
-       "github.com/google/gopacket/layers"
-       "github.com/google/gopacket/tcpassembly"
-       "io"
-       "net"
-       "testing"
-)
-
-var netFlow gopacket.Flow
-
-func init() {
-       netFlow, _ = gopacket.FlowFromEndpoints(
-               layers.NewIPEndpoint(net.IP{1, 2, 3, 4}),
-               layers.NewIPEndpoint(net.IP{5, 6, 7, 8}))
-}
-
-type readReturn struct {
-       data []byte
-       err  error
-}
-type readSequence struct {
-       in   []layers.TCP
-       want []readReturn
-}
-type testReaderFactory struct {
-       lossErrors bool
-       readSize   int
-       ReaderStream
-       output chan []byte
-}
-
-func (t *testReaderFactory) New(a, b gopacket.Flow) tcpassembly.Stream {
-       return &t.ReaderStream
-}
-
-func testReadSequence(t *testing.T, lossErrors bool, readSize int, seq readSequence) {
-       f := &testReaderFactory{ReaderStream: NewReaderStream()}
-       f.ReaderStream.LossErrors = lossErrors
-       p := tcpassembly.NewStreamPool(f)
-       a := tcpassembly.NewAssembler(p)
-       buf := make([]byte, readSize)
-       go func() {
-               for i, test := range seq.in {
-                       fmt.Println("Assembling", i)
-                       a.Assemble(netFlow, &test)
-                       fmt.Println("Assembly done")
-               }
-       }()
-       for i, test := range seq.want {
-               fmt.Println("Waiting for read", i)
-               n, err := f.Read(buf[:])
-               fmt.Println("Got read")
-               if n != len(test.data) {
-                       t.Errorf("test %d want %d bytes, got %d bytes", i, len(test.data), n)
-               } else if err != test.err {
-                       t.Errorf("test %d want err %v, got err %v", i, test.err, err)
-               } else if !bytes.Equal(buf[:n], test.data) {
-                       t.Errorf("test %d\nwant: %v\n got: %v\n", i, test.data, buf[:n])
-               }
-       }
-       fmt.Println("All done reads")
-}
-
-func TestRead(t *testing.T) {
-       testReadSequence(t, false, 10, readSequence{
-               in: []layers.TCP{
-                       {
-                               SYN:       true,
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1000,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3}},
-                       },
-                       {
-                               FIN:     true,
-                               SrcPort: 1,
-                               DstPort: 2,
-                               Seq:     1004,
-                       },
-               },
-               want: []readReturn{
-                       {data: []byte{1, 2, 3}},
-                       {err: io.EOF},
-               },
-       })
-}
-
-func TestReadSmallChunks(t *testing.T) {
-       testReadSequence(t, false, 2, readSequence{
-               in: []layers.TCP{
-                       {
-                               SYN:       true,
-                               SrcPort:   1,
-                               DstPort:   2,
-                               Seq:       1000,
-                               BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3}},
-                       },
-                       {
-                               FIN:     true,
-                               SrcPort: 1,
-                               DstPort: 2,
-                               Seq:     1004,
-                       },
-               },
-               want: []readReturn{
-                       {data: []byte{1, 2}},
-                       {data: []byte{3}},
-                       {err: io.EOF},
-               },
-       })
-}
-
-func ExampleDiscardBytesToEOF() {
-       b := bytes.NewBuffer([]byte{1, 2, 3, 4, 5})
-       fmt.Println(DiscardBytesToEOF(b))
-       // Output:
-       // 5
-}
diff --git a/vendor/github.com/google/gopacket/writer_test.go b/vendor/github.com/google/gopacket/writer_test.go
deleted file mode 100644 (file)
index e19069b..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package gopacket
-
-import (
-       "fmt"
-       "testing"
-)
-
-func TestExponentialSizeIncreasePrepend(t *testing.T) {
-       var b serializeBuffer
-       for i, test := range []struct {
-               prepend, size int
-       }{
-               {2, 2},
-               {2, 4},
-               {2, 8},
-               {2, 8},
-               {2, 16},
-               {2, 16},
-               {2, 16},
-               {2, 16},
-               {2, 32},
-       } {
-               b.PrependBytes(test.prepend)
-               if test.size != cap(b.data) {
-                       t.Error(i, "size want", test.size, "got", cap(b.data))
-               }
-       }
-       b.Clear()
-       if b.start != 32 {
-               t.Error(b.start)
-       }
-}
-
-func TestExponentialSizeIncreaseAppend(t *testing.T) {
-       var b serializeBuffer
-       for i, test := range []struct {
-               appnd, size int
-       }{
-               {2, 2},
-               {2, 4},
-               {2, 8},
-               {2, 8},
-               {2, 16},
-               {2, 16},
-               {2, 16},
-               {2, 16},
-               {2, 32},
-       } {
-               b.AppendBytes(test.appnd)
-               if test.size != cap(b.data) {
-                       t.Error(i, "size want", test.size, "got", cap(b.data))
-               }
-       }
-       b.Clear()
-       if b.start != 0 {
-               t.Error(b.start)
-       }
-}
-
-func ExampleSerializeBuffer() {
-       b := NewSerializeBuffer()
-       fmt.Println("1:", b.Bytes())
-       bytes, _ := b.PrependBytes(3)
-       copy(bytes, []byte{1, 2, 3})
-       fmt.Println("2:", b.Bytes())
-       bytes, _ = b.AppendBytes(2)
-       copy(bytes, []byte{4, 5})
-       fmt.Println("3:", b.Bytes())
-       bytes, _ = b.PrependBytes(1)
-       copy(bytes, []byte{0})
-       fmt.Println("4:", b.Bytes())
-       bytes, _ = b.AppendBytes(3)
-       copy(bytes, []byte{6, 7, 8})
-       fmt.Println("5:", b.Bytes())
-       b.Clear()
-       fmt.Println("6:", b.Bytes())
-       bytes, _ = b.PrependBytes(2)
-       copy(bytes, []byte{9, 9})
-       fmt.Println("7:", b.Bytes())
-       // Output:
-       // 1: []
-       // 2: [1 2 3]
-       // 3: [1 2 3 4 5]
-       // 4: [0 1 2 3 4 5]
-       // 5: [0 1 2 3 4 5 6 7 8]
-       // 6: []
-       // 7: [9 9]
-}
diff --git a/vendor/github.com/lunixbochs/struc/bench_test.go b/vendor/github.com/lunixbochs/struc/bench_test.go
deleted file mode 100644 (file)
index d73c110..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-package struc
-
-import (
-       "bytes"
-       "encoding/binary"
-       "testing"
-)
-
-type BenchExample struct {
-       Test    [5]byte
-       A       int32
-       B, C, D int16
-       Test2   [4]byte
-       Length  int32
-}
-
-type BenchStrucExample struct {
-       Test    [5]byte `struc:"[5]byte"`
-       A       int     `struc:"int32"`
-       B, C, D int     `struc:"int16"`
-       Test2   [4]byte `struc:"[4]byte"`
-       Length  int     `struc:"int32,sizeof=Data"`
-       Data    []byte
-}
-
-var benchRef = &BenchExample{
-       [5]byte{1, 2, 3, 4, 5},
-       1, 2, 3, 4,
-       [4]byte{1, 2, 3, 4},
-       8,
-}
-
-var eightBytes = []byte("8bytestr")
-
-var benchStrucRef = &BenchStrucExample{
-       [5]byte{1, 2, 3, 4, 5},
-       1, 2, 3, 4,
-       [4]byte{1, 2, 3, 4},
-       8, eightBytes,
-}
-
-func BenchmarkEncode(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               var buf bytes.Buffer
-               err := Pack(&buf, benchStrucRef)
-               if err != nil {
-                       b.Fatal(err)
-               }
-       }
-}
-
-func BenchmarkStdlibEncode(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               var buf bytes.Buffer
-               err := binary.Write(&buf, binary.BigEndian, benchRef)
-               if err != nil {
-                       b.Fatal(err)
-               }
-               _, err = buf.Write(eightBytes)
-               if err != nil {
-                       b.Fatal(err)
-               }
-       }
-}
-
-func BenchmarkManualEncode(b *testing.B) {
-       order := binary.BigEndian
-       s := benchStrucRef
-       for i := 0; i < b.N; i++ {
-               var buf bytes.Buffer
-               tmp := make([]byte, 29)
-               copy(tmp[0:5], s.Test[:])
-               order.PutUint32(tmp[5:9], uint32(s.A))
-               order.PutUint16(tmp[9:11], uint16(s.B))
-               order.PutUint16(tmp[11:13], uint16(s.C))
-               order.PutUint16(tmp[13:15], uint16(s.D))
-               copy(tmp[15:19], s.Test2[:])
-               order.PutUint32(tmp[19:23], uint32(s.Length))
-               copy(tmp[23:], s.Data)
-               _, err := buf.Write(tmp)
-               if err != nil {
-                       b.Fatal(err)
-               }
-       }
-}
-
-func BenchmarkDecode(b *testing.B) {
-       var out BenchStrucExample
-       var buf bytes.Buffer
-       if err := Pack(&buf, benchStrucRef); err != nil {
-               b.Fatal(err)
-       }
-       bufBytes := buf.Bytes()
-       for i := 0; i < b.N; i++ {
-               buf := bytes.NewReader(bufBytes)
-               err := Unpack(buf, &out)
-               if err != nil {
-                       b.Fatal(err)
-               }
-               out.Data = nil
-       }
-}
-
-func BenchmarkStdlibDecode(b *testing.B) {
-       var out BenchExample
-       var buf bytes.Buffer
-       binary.Write(&buf, binary.BigEndian, *benchRef)
-       _, err := buf.Write(eightBytes)
-       if err != nil {
-               b.Fatal(err)
-       }
-       bufBytes := buf.Bytes()
-       for i := 0; i < b.N; i++ {
-               buf := bytes.NewReader(bufBytes)
-               err := binary.Read(buf, binary.BigEndian, &out)
-               if err != nil {
-                       b.Fatal(err)
-               }
-               tmp := make([]byte, out.Length)
-               _, err = buf.Read(tmp)
-               if err != nil {
-                       b.Fatal(err)
-               }
-       }
-}
-
-func BenchmarkManualDecode(b *testing.B) {
-       var o BenchStrucExample
-       var buf bytes.Buffer
-       if err := Pack(&buf, benchStrucRef); err != nil {
-               b.Fatal(err)
-       }
-       tmp := buf.Bytes()
-       order := binary.BigEndian
-       for i := 0; i < b.N; i++ {
-               copy(o.Test[:], tmp[0:5])
-               o.A = int(order.Uint32(tmp[5:9]))
-               o.B = int(order.Uint16(tmp[9:11]))
-               o.C = int(order.Uint16(tmp[11:13]))
-               o.D = int(order.Uint16(tmp[13:15]))
-               copy(o.Test2[:], tmp[15:19])
-               o.Length = int(order.Uint32(tmp[19:23]))
-               o.Data = make([]byte, o.Length)
-               copy(o.Data, tmp[23:])
-       }
-}
-
-func BenchmarkFullEncode(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               var buf bytes.Buffer
-               if err := Pack(&buf, reference); err != nil {
-                       b.Fatal(err)
-               }
-       }
-}
-
-func BenchmarkFullDecode(b *testing.B) {
-       var out Example
-       for i := 0; i < b.N; i++ {
-               buf := bytes.NewBuffer(referenceBytes)
-               if err := Unpack(buf, &out); err != nil {
-                       b.Fatal(err)
-               }
-       }
-}
diff --git a/vendor/github.com/lunixbochs/struc/custom_float16_test.go b/vendor/github.com/lunixbochs/struc/custom_float16_test.go
deleted file mode 100644 (file)
index 11f73cb..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-package struc
-
-import (
-       "bytes"
-       "encoding/binary"
-       "fmt"
-       "math"
-       "strconv"
-       "strings"
-       "testing"
-)
-
-func TestFloat16(t *testing.T) {
-       // test cases from https://en.wikipedia.org/wiki/Half-precision_floating-point_format#Half_precision_examples
-       tests := []struct {
-               B string
-               F float64
-       }{
-               //s expnt significand
-               {"0 01111 0000000000", 1},
-               {"0 01111 0000000001", 1.0009765625},
-               {"1 10000 0000000000", -2},
-               {"0 11110 1111111111", 65504},
-               // {"0 00001 0000000000", 0.0000610352},
-               // {"0 00000 1111111111", 0.0000609756},
-               // {"0 00000 0000000001", 0.0000000596046},
-               {"0 00000 0000000000", 0},
-               // {"1 00000 0000000000", -0},
-               {"0 11111 0000000000", math.Inf(1)},
-               {"1 11111 0000000000", math.Inf(-1)},
-               {"0 01101 0101010101", 0.333251953125},
-       }
-       for _, test := range tests {
-               var buf bytes.Buffer
-               f := Float16(test.F)
-               if err := Pack(&buf, &f); err != nil {
-                       t.Error("pack failed:", err)
-                       continue
-               }
-               bitval, _ := strconv.ParseUint(strings.Replace(test.B, " ", "", -1), 2, 16)
-               tmp := binary.BigEndian.Uint16(buf.Bytes())
-               if tmp != uint16(bitval) {
-                       t.Errorf("incorrect pack: %s != %016b (%f)", test.B, tmp, test.F)
-                       continue
-               }
-               var f2 Float16
-               if err := Unpack(&buf, &f2); err != nil {
-                       t.Error("unpack failed:", err)
-                       continue
-               }
-               // let sprintf deal with (im)precision for me here
-               if fmt.Sprintf("%f", f) != fmt.Sprintf("%f", f2) {
-                       t.Errorf("incorrect unpack: %016b %f != %f", bitval, f, f2)
-               }
-       }
-}
diff --git a/vendor/github.com/lunixbochs/struc/custom_test.go b/vendor/github.com/lunixbochs/struc/custom_test.go
deleted file mode 100644 (file)
index e601166..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-package struc
-
-import (
-       "bytes"
-       "encoding/binary"
-       "io"
-       "strconv"
-       "testing"
-)
-
-type Int3 uint32
-
-func (i *Int3) Pack(p []byte, opt *Options) (int, error) {
-       var tmp [4]byte
-       binary.BigEndian.PutUint32(tmp[:], uint32(*i))
-       copy(p, tmp[1:])
-       return 3, nil
-}
-func (i *Int3) Unpack(r io.Reader, length int, opt *Options) error {
-       var tmp [4]byte
-       if _, err := r.Read(tmp[1:]); err != nil {
-               return err
-       }
-       *i = Int3(binary.BigEndian.Uint32(tmp[:]))
-       return nil
-}
-func (i *Int3) Size(opt *Options) int {
-       return 3
-}
-func (i *Int3) String() string {
-       return strconv.FormatUint(uint64(*i), 10)
-}
-
-func TestCustom(t *testing.T) {
-       var buf bytes.Buffer
-       var i Int3 = 3
-       if err := Pack(&buf, &i); err != nil {
-               t.Fatal(err)
-       }
-       if !bytes.Equal(buf.Bytes(), []byte{0, 0, 3}) {
-               t.Fatal("error packing custom int")
-       }
-       var i2 Int3
-       if err := Unpack(&buf, &i2); err != nil {
-               t.Fatal(err)
-       }
-       if i2 != 3 {
-               t.Fatal("error unpacking custom int")
-       }
-}
-
-type Int3Struct struct {
-       I Int3
-}
-
-func TestCustomStruct(t *testing.T) {
-       var buf bytes.Buffer
-       i := Int3Struct{3}
-       if err := Pack(&buf, &i); err != nil {
-               t.Fatal(err)
-       }
-       if !bytes.Equal(buf.Bytes(), []byte{0, 0, 3}) {
-               t.Fatal("error packing custom int struct")
-       }
-       var i2 Int3Struct
-       if err := Unpack(&buf, &i2); err != nil {
-               t.Fatal(err)
-       }
-       if i2.I != 3 {
-               t.Fatal("error unpacking custom int struct")
-       }
-}
-
-// TODO: slices of custom types don't work yet
-/*
-type Int3SliceStruct struct {
-       I [2]Int3
-}
-
-func TestCustomSliceStruct(t *testing.T) {
-       var buf bytes.Buffer
-       i := Int3SliceStruct{[2]Int3{3, 4}}
-       if err := Pack(&buf, &i); err != nil {
-               t.Fatal(err)
-       }
-       if !bytes.Equal(buf.Bytes(), []byte{0, 0, 3}) {
-               t.Fatal("error packing custom int struct")
-       }
-       var i2 Int3SliceStruct
-       if err := Unpack(&buf, &i2); err != nil {
-               t.Fatal(err)
-       }
-       if i2.I[0] != 3 && i2.I[1] != 4 {
-               t.Fatal("error unpacking custom int struct")
-       }
-}
-*/
index 5ab7da6..6e59c2a 100644 (file)
@@ -222,13 +222,21 @@ func (f *Field) unpackVal(buf []byte, val reflect.Value, length int, options *Op
        case Bool, Int8, Int16, Int32, Int64, Uint8, Uint16, Uint32, Uint64:
                var n uint64
                switch typ {
-               case Bool, Int8, Uint8:
+               case Int8:
+                       n = uint64(int64(int8(buf[0])))
+               case Int16:
+                       n = uint64(int64(int16(order.Uint16(buf))))
+               case Int32:
+                       n = uint64(int64(int32(order.Uint32(buf))))
+               case Int64:
+                       n = uint64(int64(order.Uint64(buf)))
+               case Bool, Uint8:
                        n = uint64(buf[0])
-               case Int16, Uint16:
+               case Uint16:
                        n = uint64(order.Uint16(buf))
-               case Int32, Uint32:
+               case Uint32:
                        n = uint64(order.Uint32(buf))
-               case Int64, Uint64:
+               case Uint64:
                        n = uint64(order.Uint64(buf))
                }
                switch f.kind {
diff --git a/vendor/github.com/lunixbochs/struc/field_test.go b/vendor/github.com/lunixbochs/struc/field_test.go
deleted file mode 100644 (file)
index 45a07b2..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-package struc
-
-import (
-       "bytes"
-       "testing"
-)
-
-type badFloat struct {
-       BadFloat int `struc:"float64"`
-}
-
-func TestBadFloatField(t *testing.T) {
-       buf := bytes.NewReader([]byte("00000000"))
-       err := Unpack(buf, &badFloat{})
-       if err == nil {
-               t.Fatal("failed to error on bad float unpack")
-       }
-}
-
-type emptyLengthField struct {
-       Strlen int `struc:"sizeof=Str"`
-       Str    []byte
-}
-
-func TestEmptyLengthField(t *testing.T) {
-       var buf bytes.Buffer
-       s := &emptyLengthField{0, []byte("test")}
-       o := &emptyLengthField{}
-       if err := Pack(&buf, s); err != nil {
-               t.Fatal(err)
-       }
-       if err := Unpack(&buf, o); err != nil {
-               t.Fatal(err)
-       }
-       if !bytes.Equal(s.Str, o.Str) {
-               t.Fatal("empty length field encode failed")
-       }
-}
-
-type fixedSlicePad struct {
-       Field []byte `struc:"[4]byte"`
-}
-
-func TestFixedSlicePad(t *testing.T) {
-       var buf bytes.Buffer
-       ref := []byte{0, 0, 0, 0}
-       s := &fixedSlicePad{}
-       if err := Pack(&buf, s); err != nil {
-               t.Fatal(err)
-       }
-       if !bytes.Equal(buf.Bytes(), ref) {
-               t.Fatal("implicit fixed slice pack failed")
-       }
-       if err := Unpack(&buf, s); err != nil {
-               t.Fatal(err)
-       }
-       if !bytes.Equal(s.Field, ref) {
-               t.Fatal("implicit fixed slice unpack failed")
-       }
-}
-
-type sliceCap struct {
-       Len   int `struc:"sizeof=Field"`
-       Field []byte
-}
-
-func TestSliceCap(t *testing.T) {
-       var buf bytes.Buffer
-       tmp := &sliceCap{0, []byte("1234")}
-       if err := Pack(&buf, tmp); err != nil {
-               t.Fatal(err)
-       }
-       tmp.Field = make([]byte, 0, 4)
-       if err := Unpack(&buf, tmp); err != nil {
-               t.Fatal(err)
-       }
-}
diff --git a/vendor/github.com/lunixbochs/struc/fields_test.go b/vendor/github.com/lunixbochs/struc/fields_test.go
deleted file mode 100644 (file)
index 850e377..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-package struc
-
-import (
-       "bytes"
-       "reflect"
-       "testing"
-)
-
-var refVal = reflect.ValueOf(reference)
-
-func TestFieldsParse(t *testing.T) {
-       if _, err := parseFields(refVal); err != nil {
-               t.Fatal(err)
-       }
-}
-
-func TestFieldsString(t *testing.T) {
-       fields, _ := parseFields(refVal)
-       fields.String()
-}
-
-type sizefromStruct struct {
-       Size1 uint `struc:"sizeof=Var1"`
-       Var1  []byte
-       Size2 int `struc:"sizeof=Var2"`
-       Var2  []byte
-}
-
-func TestFieldsSizefrom(t *testing.T) {
-       var test = sizefromStruct{
-               Var1: []byte{1, 2, 3},
-               Var2: []byte{4, 5, 6},
-       }
-       var buf bytes.Buffer
-       err := Pack(&buf, &test)
-       if err != nil {
-               t.Fatal(err)
-       }
-       err = Unpack(&buf, &test)
-       if err != nil {
-               t.Fatal(err)
-       }
-}
-
-type sizefromStructBad struct {
-       Size1 string `struc:"sizeof=Var1"`
-       Var1  []byte
-}
-
-func TestFieldsSizefromBad(t *testing.T) {
-       var test = &sizefromStructBad{Var1: []byte{1, 2, 3}}
-       var buf bytes.Buffer
-       defer func() {
-               if err := recover(); err == nil {
-                       t.Fatal("failed to panic on bad sizeof type")
-               }
-       }()
-       Pack(&buf, &test)
-}
diff --git a/vendor/github.com/lunixbochs/struc/packable_test.go b/vendor/github.com/lunixbochs/struc/packable_test.go
deleted file mode 100644 (file)
index ec2bed9..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-package struc
-
-import (
-       "bytes"
-       "fmt"
-       "testing"
-)
-
-var packableReference = []byte{
-       1, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 5, 0, 6, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 8,
-       9, 10, 11, 12, 13, 14, 15, 16,
-       0, 17, 0, 18, 0, 19, 0, 20, 0, 21, 0, 22, 0, 23, 0, 24,
-}
-
-func TestPackable(t *testing.T) {
-       var (
-               buf bytes.Buffer
-
-               i8  int8   = 1
-               i16 int16  = 2
-               i32 int32  = 3
-               i64 int64  = 4
-               u8  uint8  = 5
-               u16 uint16 = 6
-               u32 uint32 = 7
-               u64 uint64 = 8
-
-               u8a  = [8]uint8{9, 10, 11, 12, 13, 14, 15, 16}
-               u16a = [8]uint16{17, 18, 19, 20, 21, 22, 23, 24}
-       )
-       // pack tests
-       if err := Pack(&buf, i8); err != nil {
-               t.Fatal(err)
-       }
-       if err := Pack(&buf, i16); err != nil {
-               t.Fatal(err)
-       }
-       if err := Pack(&buf, i32); err != nil {
-               t.Fatal(err)
-       }
-       if err := Pack(&buf, i64); err != nil {
-               t.Fatal(err)
-       }
-       if err := Pack(&buf, u8); err != nil {
-               t.Fatal(err)
-       }
-       if err := Pack(&buf, u16); err != nil {
-               t.Fatal(err)
-       }
-       if err := Pack(&buf, u32); err != nil {
-               t.Fatal(err)
-       }
-       if err := Pack(&buf, u64); err != nil {
-               t.Fatal(err)
-       }
-       if err := Pack(&buf, u8a[:]); err != nil {
-               t.Fatal(err)
-       }
-       if err := Pack(&buf, u16a[:]); err != nil {
-               t.Fatal(err)
-       }
-       if !bytes.Equal(buf.Bytes(), packableReference) {
-               fmt.Println(buf.Bytes())
-               fmt.Println(packableReference)
-               t.Fatal("Packable Pack() did not match reference.")
-       }
-       // unpack tests
-       i8 = 0
-       i16 = 0
-       i32 = 0
-       i64 = 0
-       u8 = 0
-       u16 = 0
-       u32 = 0
-       u64 = 0
-       if err := Unpack(&buf, &i8); err != nil {
-               t.Fatal(err)
-       }
-       if err := Unpack(&buf, &i16); err != nil {
-               t.Fatal(err)
-       }
-       if err := Unpack(&buf, &i32); err != nil {
-               t.Fatal(err)
-       }
-       if err := Unpack(&buf, &i64); err != nil {
-               t.Fatal(err)
-       }
-       if err := Unpack(&buf, &u8); err != nil {
-               t.Fatal(err)
-       }
-       if err := Unpack(&buf, &u16); err != nil {
-               t.Fatal(err)
-       }
-       if err := Unpack(&buf, &u32); err != nil {
-               t.Fatal(err)
-       }
-       if err := Unpack(&buf, &u64); err != nil {
-               t.Fatal(err)
-       }
-       if err := Unpack(&buf, u8a[:]); err != nil {
-               t.Fatal(err)
-       }
-       if err := Unpack(&buf, u16a[:]); err != nil {
-               t.Fatal(err)
-       }
-       // unpack checks
-       if i8 != 1 || i16 != 2 || i32 != 3 || i64 != 4 {
-               t.Fatal("Signed integer unpack failed.")
-       }
-       if u8 != 5 || u16 != 6 || u32 != 7 || u64 != 8 {
-               t.Fatal("Unsigned integer unpack failed.")
-       }
-       for i := 0; i < 8; i++ {
-               if u8a[i] != uint8(i+9) {
-                       t.Fatal("uint8 array unpack failed.")
-               }
-       }
-       for i := 0; i < 8; i++ {
-               if u16a[i] != uint16(i+17) {
-                       t.Fatal("uint16 array unpack failed.")
-               }
-       }
-}
index 060f43d..43c5875 100644 (file)
@@ -11,13 +11,14 @@ import (
        "sync"
 )
 
-// struc:"int32,big,sizeof=Data"
+// struc:"int32,big,sizeof=Data,skip,sizefrom=Len"
 
 type strucTag struct {
-       Type   string
-       Order  binary.ByteOrder
-       Sizeof string
-       Skip   bool
+       Type     string
+       Order    binary.ByteOrder
+       Sizeof   string
+       Skip     bool
+       Sizefrom string
 }
 
 func parseStrucTag(tag reflect.StructTag) *strucTag {
@@ -35,6 +36,9 @@ func parseStrucTag(tag reflect.StructTag) *strucTag {
                if strings.HasPrefix(s, "sizeof=") {
                        tmp := strings.SplitN(s, "=", 2)
                        t.Sizeof = tmp[1]
+               } else if strings.HasPrefix(s, "sizefrom=") {
+                       tmp := strings.SplitN(s, "=", 2)
+                       t.Sizefrom = tmp[1]
                } else if s == "big" {
                        t.Order = binary.BigEndian
                } else if s == "little" {
@@ -150,6 +154,13 @@ func parseFieldsLocked(v reflect.Value) (Fields, error) {
                if sizefrom, ok := sizeofMap[field.Name]; ok {
                        f.Sizefrom = sizefrom
                }
+               if tag.Sizefrom != "" {
+                       source, ok := t.FieldByName(tag.Sizefrom)
+                       if !ok {
+                               return nil, fmt.Errorf("struc: `sizefrom=%s` field does not exist", tag.Sizefrom)
+                       }
+                       f.Sizefrom = source.Index
+               }
                if f.Len == -1 && f.Sizefrom == nil {
                        return nil, fmt.Errorf("struc: field `%s` is a slice with no length or sizeof field", field.Name)
                }
diff --git a/vendor/github.com/lunixbochs/struc/parse_test.go b/vendor/github.com/lunixbochs/struc/parse_test.go
deleted file mode 100644 (file)
index 861fdd1..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-package struc
-
-import (
-       "bytes"
-       "reflect"
-       "testing"
-)
-
-func parseTest(data interface{}) error {
-       _, err := parseFields(reflect.ValueOf(data))
-       return err
-}
-
-type empty struct{}
-
-func TestEmptyStruc(t *testing.T) {
-       if err := parseTest(&empty{}); err == nil {
-               t.Fatal("failed to error on empty struct")
-       }
-}
-
-type chanStruct struct {
-       Test chan int
-}
-
-func TestChanError(t *testing.T) {
-       if err := parseTest(&chanStruct{}); err == nil {
-               // TODO: should probably ignore channel fields
-               t.Fatal("failed to error on struct containing channel")
-       }
-}
-
-type badSizeof struct {
-       Size int `struc:"sizeof=Bad"`
-}
-
-func TestBadSizeof(t *testing.T) {
-       if err := parseTest(&badSizeof{}); err == nil {
-               t.Fatal("failed to error on missing Sizeof target")
-       }
-}
-
-type missingSize struct {
-       Test []byte
-}
-
-func TestMissingSize(t *testing.T) {
-       if err := parseTest(&missingSize{}); err == nil {
-               t.Fatal("failed to error on missing field size")
-       }
-}
-
-type badNested struct {
-       Empty empty
-}
-
-func TestNestedParseError(t *testing.T) {
-       var buf bytes.Buffer
-       if err := Pack(&buf, &badNested{}); err == nil {
-               t.Fatal("failed to error on bad nested struct")
-       }
-}
diff --git a/vendor/github.com/lunixbochs/struc/struc_test.go b/vendor/github.com/lunixbochs/struc/struc_test.go
deleted file mode 100644 (file)
index 4b50707..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-package struc
-
-import (
-       "bytes"
-       "encoding/binary"
-       "reflect"
-       "testing"
-)
-
-type Nested struct {
-       Test2 int `struc:"int8"`
-}
-
-type Example struct {
-       Pad    []byte `struc:"[5]pad"`        // 00 00 00 00 00
-       I8f    int    `struc:"int8"`          // 01
-       I16f   int    `struc:"int16"`         // 00 02
-       I32f   int    `struc:"int32"`         // 00 00 00 03
-       I64f   int    `struc:"int64"`         // 00 00 00 00 00 00 00 04
-       U8f    int    `struc:"uint8,little"`  // 05
-       U16f   int    `struc:"uint16,little"` // 06 00
-       U32f   int    `struc:"uint32,little"` // 07 00 00 00
-       U64f   int    `struc:"uint64,little"` // 08 00 00 00 00 00 00 00
-       Boolf  int    `struc:"bool"`          // 01
-       Byte4f []byte `struc:"[4]byte"`       // "abcd"
-
-       I8     int8    // 09
-       I16    int16   // 00 0a
-       I32    int32   // 00 00 00 0b
-       I64    int64   // 00 00 00 00 00 00 00 0c
-       U8     uint8   `struc:"little"` // 0d
-       U16    uint16  `struc:"little"` // 0e 00
-       U32    uint32  `struc:"little"` // 0f 00 00 00
-       U64    uint64  `struc:"little"` // 10 00 00 00 00 00 00 00
-       BoolT  bool    // 01
-       BoolF  bool    // 00
-       Byte4  [4]byte // "efgh"
-       Float1 float32 // 41 a0 00 00
-       Float2 float64 // 41 35 00 00 00 00 00 00
-
-       Size int    `struc:"sizeof=Str,little"` // 0a 00 00 00
-       Str  string `struc:"[]byte"`            // "ijklmnopqr"
-       Strb string `struc:"[4]byte"`           // "stuv"
-
-       Size2 int    `struc:"uint8,sizeof=Str2"` // 04
-       Str2  string // "1234"
-
-       Size3 int    `struc:"uint8,sizeof=Bstr"` // 04
-       Bstr  []byte // "5678"
-
-       Nested  Nested  // 00 00 00 01
-       NestedP *Nested // 00 00 00 02
-       TestP64 *int    `struc:"int64"` // 00 00 00 05
-
-       NestedSize int      `struc:"sizeof=NestedA"` // 00 00 00 02
-       NestedA    []Nested // [00 00 00 03, 00 00 00 04]
-
-       Skip int `struc:"skip"`
-
-       CustomTypeSize    Int3   `struc:"sizeof=CustomTypeSizeArr"` // 00 00 00 04
-       CustomTypeSizeArr []byte // "ABCD"
-}
-
-var five = 5
-
-var reference = &Example{
-       nil,
-       1, 2, 3, 4, 5, 6, 7, 8, 0, []byte{'a', 'b', 'c', 'd'},
-       9, 10, 11, 12, 13, 14, 15, 16, true, false, [4]byte{'e', 'f', 'g', 'h'},
-       20, 21,
-       10, "ijklmnopqr", "stuv",
-       4, "1234",
-       4, []byte("5678"),
-       Nested{1}, &Nested{2}, &five,
-       6, []Nested{{3}, {4}, {5}, {6}, {7}, {8}},
-       0,
-       Int3(4), []byte("ABCD"),
-}
-
-var referenceBytes = []byte{
-       0, 0, 0, 0, 0, // pad(5)
-       1, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, // fake int8-int64(1-4)
-       5, 6, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, // fake little-endian uint8-uint64(5-8)
-       0,                  // fake bool(0)
-       'a', 'b', 'c', 'd', // fake [4]byte
-
-       9, 0, 10, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 12, // real int8-int64(9-12)
-       13, 14, 0, 15, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, // real little-endian uint8-uint64(13-16)
-       1, 0, // real bool(1), bool(0)
-       'e', 'f', 'g', 'h', // real [4]byte
-       65, 160, 0, 0, // real float32(20)
-       64, 53, 0, 0, 0, 0, 0, 0, // real float64(21)
-
-       10, 0, 0, 0, // little-endian int32(10) sizeof=Str
-       'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', // Str
-       's', 't', 'u', 'v', // fake string([4]byte)
-       04, '1', '2', '3', '4', // real string
-       04, '5', '6', '7', '8', // fake []byte(string)
-
-       1, 2, // Nested{1}, Nested{2}
-       0, 0, 0, 0, 0, 0, 0, 5, // &five
-
-       0, 0, 0, 6, // int32(6)
-       3, 4, 5, 6, 7, 8, // [Nested{3}, ...Nested{8}]
-
-       0, 0, 4, 'A', 'B', 'C', 'D', // Int3(4), []byte("ABCD")
-}
-
-func TestCodec(t *testing.T) {
-       var buf bytes.Buffer
-       if err := Pack(&buf, reference); err != nil {
-               t.Fatal(err)
-       }
-       out := &Example{}
-       if err := Unpack(&buf, out); err != nil {
-               t.Fatal(err)
-       }
-       if !reflect.DeepEqual(reference, out) {
-               t.Fatal("encode/decode failed")
-       }
-}
-
-func TestEncode(t *testing.T) {
-       var buf bytes.Buffer
-       if err := Pack(&buf, reference); err != nil {
-               t.Fatal(err)
-       }
-       if !bytes.Equal(buf.Bytes(), referenceBytes) {
-               t.Fatal("encode failed")
-       }
-}
-
-func TestDecode(t *testing.T) {
-       buf := bytes.NewReader(referenceBytes)
-       out := &Example{}
-       if err := Unpack(buf, out); err != nil {
-               t.Fatal(err)
-       }
-       if !reflect.DeepEqual(reference, out) {
-               t.Fatal("decode failed")
-       }
-}
-
-func TestSizeof(t *testing.T) {
-       size, err := Sizeof(reference)
-       if err != nil {
-               t.Fatal(err)
-       }
-       if size != len(referenceBytes) {
-               t.Fatal("sizeof failed")
-       }
-}
-
-type ExampleEndian struct {
-       T int `struc:"int16,big"`
-}
-
-func TestEndianSwap(t *testing.T) {
-       var buf bytes.Buffer
-       big := &ExampleEndian{1}
-       if err := PackWithOrder(&buf, big, binary.BigEndian); err != nil {
-               t.Fatal(err)
-       }
-       little := &ExampleEndian{}
-       if err := UnpackWithOrder(&buf, little, binary.LittleEndian); err != nil {
-               t.Fatal(err)
-       }
-       if little.T != 256 {
-               t.Fatal("big -> little conversion failed")
-       }
-}
-
-func TestNilValue(t *testing.T) {
-       var buf bytes.Buffer
-       if err := Pack(&buf, nil); err == nil {
-               t.Fatal("failed throw error for bad struct value")
-       }
-       if err := Unpack(&buf, nil); err == nil {
-               t.Fatal("failed throw error for bad struct value")
-       }
-       if _, err := Sizeof(nil); err == nil {
-               t.Fatal("failed to throw error for bad struct value")
-       }
-}
-
-type sliceUnderrun struct {
-       Str string   `struc:"[10]byte"`
-       Arr []uint16 `struc:"[10]uint16"`
-}
-
-func TestSliceUnderrun(t *testing.T) {
-       var buf bytes.Buffer
-       v := sliceUnderrun{
-               Str: "foo",
-               Arr: []uint16{1, 2, 3},
-       }
-       if err := Pack(&buf, &v); err != nil {
-               t.Fatal(err)
-       }
-}
diff --git a/vendor/github.com/lunixbochs/struc/types_test.go b/vendor/github.com/lunixbochs/struc/types_test.go
deleted file mode 100644 (file)
index 3b33e8f..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-package struc
-
-import (
-       "bytes"
-       "testing"
-)
-
-func TestBadType(t *testing.T) {
-       defer func() { recover() }()
-       Type(-1).Size()
-       t.Fatal("failed to panic for invalid Type.Size()")
-}
-
-func TestTypeString(t *testing.T) {
-       if Pad.String() != "pad" {
-               t.Fatal("type string representation failed")
-       }
-}
-
-type sizeOffTest struct {
-       Size Size_t
-       Off  Off_t
-}
-
-func TestSizeOffTypes(t *testing.T) {
-       bits := []int{8, 16, 32, 64}
-       var buf bytes.Buffer
-       test := &sizeOffTest{1, 2}
-       for _, b := range bits {
-               if err := PackWithOptions(&buf, test, &Options{PtrSize: b}); err != nil {
-                       t.Fatal(err)
-               }
-       }
-       reference := []byte{
-               1, 2,
-               0, 1, 0, 2,
-               0, 0, 0, 1, 0, 0, 0, 2,
-               0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2,
-       }
-       if !bytes.Equal(reference, buf.Bytes()) {
-               t.Errorf("reference != bytes: %v", reference, buf.Bytes())
-       }
-       reader := bytes.NewReader(buf.Bytes())
-       for _, b := range bits {
-               out := &sizeOffTest{}
-               if err := UnpackWithOptions(reader, out, &Options{PtrSize: b}); err != nil {
-                       t.Fatal(err)
-               }
-               if out.Size != 1 || out.Off != 2 {
-                       t.Errorf("Size_t/Off_t mismatch: {%d, %d}\n%v", out.Size, out.Off, buf.Bytes())
-               }
-       }
-}
diff --git a/vendor/github.com/onsi/gomega/format/format_suite_test.go b/vendor/github.com/onsi/gomega/format/format_suite_test.go
deleted file mode 100644 (file)
index 8e65a95..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-package format_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-
-       "testing"
-)
-
-func TestFormat(t *testing.T) {
-       RegisterFailHandler(Fail)
-       RunSpecs(t, "Format Suite")
-}
diff --git a/vendor/github.com/onsi/gomega/format/format_test.go b/vendor/github.com/onsi/gomega/format/format_test.go
deleted file mode 100644 (file)
index a1a9031..0000000
+++ /dev/null
@@ -1,590 +0,0 @@
-package format_test
-
-import (
-       "fmt"
-       "strings"
-       "time"
-
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/format"
-       "github.com/onsi/gomega/types"
-)
-
-//recursive struct
-
-type StringAlias string
-type ByteAlias []byte
-type IntAlias int
-
-type AStruct struct {
-       Exported string
-}
-
-type SimpleStruct struct {
-       Name        string
-       Enumeration int
-       Veritas     bool
-       Data        []byte
-       secret      uint32
-}
-
-type ComplexStruct struct {
-       Strings      []string
-       SimpleThings []*SimpleStruct
-       DataMaps     map[int]ByteAlias
-}
-
-type SecretiveStruct struct {
-       boolValue      bool
-       intValue       int
-       uintValue      uint
-       uintptrValue   uintptr
-       floatValue     float32
-       complexValue   complex64
-       chanValue      chan bool
-       funcValue      func()
-       pointerValue   *int
-       sliceValue     []string
-       byteSliceValue []byte
-       stringValue    string
-       arrValue       [3]int
-       byteArrValue   [3]byte
-       mapValue       map[string]int
-       structValue    AStruct
-       interfaceValue interface{}
-}
-
-type GoStringer struct {
-}
-
-func (g GoStringer) GoString() string {
-       return "go-string"
-}
-
-func (g GoStringer) String() string {
-       return "string"
-}
-
-type Stringer struct {
-}
-
-func (g Stringer) String() string {
-       return "string"
-}
-
-type ctx struct {
-}
-
-func (c *ctx) Deadline() (deadline time.Time, ok bool) {
-       return time.Time{}, false
-}
-
-func (c *ctx) Done() <-chan struct{} {
-       return nil
-}
-
-func (c *ctx) Err() error {
-       return nil
-}
-
-func (c *ctx) Value(key interface{}) interface{} {
-       return nil
-}
-
-var _ = Describe("Format", func() {
-       match := func(typeRepresentation string, valueRepresentation string, args ...interface{}) types.GomegaMatcher {
-               if len(args) > 0 {
-                       valueRepresentation = fmt.Sprintf(valueRepresentation, args...)
-               }
-               return Equal(fmt.Sprintf("%s<%s>: %s", Indent, typeRepresentation, valueRepresentation))
-       }
-
-       matchRegexp := func(typeRepresentation string, valueRepresentation string, args ...interface{}) types.GomegaMatcher {
-               if len(args) > 0 {
-                       valueRepresentation = fmt.Sprintf(valueRepresentation, args...)
-               }
-               return MatchRegexp(fmt.Sprintf("%s<%s>: %s", Indent, typeRepresentation, valueRepresentation))
-       }
-
-       hashMatchingRegexp := func(entries ...string) string {
-               entriesSwitch := "(" + strings.Join(entries, "|") + ")"
-               arr := make([]string, len(entries))
-               for i := range arr {
-                       arr[i] = entriesSwitch
-               }
-               return "{" + strings.Join(arr, ", ") + "}"
-       }
-
-       Describe("Message", func() {
-               Context("with only an actual value", func() {
-                       It("should print out an indented formatted representation of the value and the message", func() {
-                               Ω(Message(3, "to be three.")).Should(Equal("Expected\n    <int>: 3\nto be three."))
-                       })
-               })
-
-               Context("with an actual and an expected value", func() {
-                       It("should print out an indented formatted representatino of both values, and the message", func() {
-                               Ω(Message(3, "to equal", 4)).Should(Equal("Expected\n    <int>: 3\nto equal\n    <int>: 4"))
-                       })
-               })
-       })
-
-       Describe("MessageWithDiff", func() {
-               It("shows the exact point where two long strings differ", func() {
-                       stringWithB := "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-                       stringWithZ := "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-
-                       Ω(MessageWithDiff(stringWithB, "to equal", stringWithZ)).Should(Equal(expectedLongStringFailureMessage))
-               })
-
-               It("truncates the start of long strings that differ only at their end", func() {
-                       stringWithB := "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab"
-                       stringWithZ := "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz"
-
-                       Ω(MessageWithDiff(stringWithB, "to equal", stringWithZ)).Should(Equal(expectedTruncatedStartStringFailureMessage))
-               })
-
-               It("truncates the start of long strings that differ only in length", func() {
-                       smallString := "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-                       largeString := "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-
-                       Ω(MessageWithDiff(largeString, "to equal", smallString)).Should(Equal(expectedTruncatedStartSizeFailureMessage))
-                       Ω(MessageWithDiff(smallString, "to equal", largeString)).Should(Equal(expectedTruncatedStartSizeSwappedFailureMessage))
-               })
-
-               It("truncates the end of long strings that differ only at their start", func() {
-                       stringWithB := "baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-                       stringWithZ := "zaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-
-                       Ω(MessageWithDiff(stringWithB, "to equal", stringWithZ)).Should(Equal(expectedTruncatedEndStringFailureMessage))
-               })
-       })
-
-       Describe("IndentString", func() {
-               It("should indent the string", func() {
-                       Ω(IndentString("foo\n  bar\nbaz", 2)).Should(Equal("        foo\n          bar\n        baz"))
-               })
-       })
-
-       Describe("Object", func() {
-               Describe("formatting boolean values", func() {
-                       It("should give the type and format values correctly", func() {
-                               Ω(Object(true, 1)).Should(match("bool", "true"))
-                               Ω(Object(false, 1)).Should(match("bool", "false"))
-                       })
-               })
-
-               Describe("formatting numbers", func() {
-                       It("should give the type and format values correctly", func() {
-                               Ω(Object(int(3), 1)).Should(match("int", "3"))
-                               Ω(Object(int8(3), 1)).Should(match("int8", "3"))
-                               Ω(Object(int16(3), 1)).Should(match("int16", "3"))
-                               Ω(Object(int32(3), 1)).Should(match("int32", "3"))
-                               Ω(Object(int64(3), 1)).Should(match("int64", "3"))
-
-                               Ω(Object(uint(3), 1)).Should(match("uint", "3"))
-                               Ω(Object(uint8(3), 1)).Should(match("uint8", "3"))
-                               Ω(Object(uint16(3), 1)).Should(match("uint16", "3"))
-                               Ω(Object(uint32(3), 1)).Should(match("uint32", "3"))
-                               Ω(Object(uint64(3), 1)).Should(match("uint64", "3"))
-                       })
-
-                       It("should handle uintptr differently", func() {
-                               Ω(Object(uintptr(3), 1)).Should(match("uintptr", "0x3"))
-                       })
-               })
-
-               Describe("formatting channels", func() {
-                       It("should give the type and format values correctly", func() {
-                               c := make(chan<- bool, 3)
-                               c <- true
-                               c <- false
-                               Ω(Object(c, 1)).Should(match("chan<- bool | len:2, cap:3", "%v", c))
-                       })
-               })
-
-               Describe("formatting strings", func() {
-                       It("should give the type and format values correctly", func() {
-                               s := "a\nb\nc"
-                               Ω(Object(s, 1)).Should(match("string", `a
-    b
-    c`))
-                       })
-               })
-
-               Describe("formatting []byte slices", func() {
-                       Context("when the slice is made of printable bytes", func() {
-                               It("should present it as string", func() {
-                                       b := []byte("a b c")
-                                       Ω(Object(b, 1)).Should(matchRegexp(`\[\]uint8 \| len:5, cap:\d+`, `a b c`))
-                               })
-                       })
-                       Context("when the slice contains non-printable bytes", func() {
-                               It("should present it as slice", func() {
-                                       b := []byte("a b c\n\x01\x02\x03\xff\x1bH")
-                                       Ω(Object(b, 1)).Should(matchRegexp(`\[\]uint8 \| len:12, cap:\d+`, `\[97, 32, 98, 32, 99, 10, 1, 2, 3, 255, 27, 72\]`))
-                               })
-                       })
-               })
-
-               Describe("formatting functions", func() {
-                       It("should give the type and format values correctly", func() {
-                               f := func(a string, b []int) ([]byte, error) {
-                                       return []byte("abc"), nil
-                               }
-                               Ω(Object(f, 1)).Should(match("func(string, []int) ([]uint8, error)", "%v", f))
-                       })
-               })
-
-               Describe("formatting pointers", func() {
-                       It("should give the type and dereference the value to format it correctly", func() {
-                               a := 3
-                               Ω(Object(&a, 1)).Should(match(fmt.Sprintf("*int | %p", &a), "3"))
-                       })
-
-                       Context("when there are pointers to pointers...", func() {
-                               It("should recursively deference the pointer until it gets to a value", func() {
-                                       a := 3
-                                       var b *int
-                                       var c **int
-                                       var d ***int
-                                       b = &a
-                                       c = &b
-                                       d = &c
-
-                                       Ω(Object(d, 1)).Should(match(fmt.Sprintf("***int | %p", d), "3"))
-                               })
-                       })
-
-                       Context("when the pointer points to nil", func() {
-                               It("should say nil and not explode", func() {
-                                       var a *AStruct
-                                       Ω(Object(a, 1)).Should(match("*format_test.AStruct | 0x0", "nil"))
-                               })
-                       })
-               })
-
-               Describe("formatting arrays", func() {
-                       It("should give the type and format values correctly", func() {
-                               w := [3]string{"Jed Bartlet", "Toby Ziegler", "CJ Cregg"}
-                               Ω(Object(w, 1)).Should(match("[3]string", `["Jed Bartlet", "Toby Ziegler", "CJ Cregg"]`))
-                       })
-
-                       Context("with byte arrays", func() {
-                               It("should give the type and format values correctly", func() {
-                                       w := [3]byte{17, 28, 19}
-                                       Ω(Object(w, 1)).Should(match("[3]uint8", `[17, 28, 19]`))
-                               })
-                       })
-               })
-
-               Describe("formatting slices", func() {
-                       It("should include the length and capacity in the type information", func() {
-                               s := make([]bool, 3, 4)
-                               Ω(Object(s, 1)).Should(match("[]bool | len:3, cap:4", "[false, false, false]"))
-                       })
-
-                       Context("when the slice contains long entries", func() {
-                               It("should format the entries with newlines", func() {
-                                       w := []string{"Josiah Edward Bartlet", "Toby Ziegler", "CJ Cregg"}
-                                       expected := `[
-        "Josiah Edward Bartlet",
-        "Toby Ziegler",
-        "CJ Cregg",
-    ]`
-                                       Ω(Object(w, 1)).Should(match("[]string | len:3, cap:3", expected))
-                               })
-                       })
-               })
-
-               Describe("formatting maps", func() {
-                       It("should include the length in the type information", func() {
-                               m := make(map[int]bool, 5)
-                               m[3] = true
-                               m[4] = false
-                               Ω(Object(m, 1)).Should(matchRegexp(`map\[int\]bool \| len:2`, hashMatchingRegexp("3: true", "4: false")))
-                       })
-
-                       Context("when the slice contains long entries", func() {
-                               It("should format the entries with newlines", func() {
-                                       m := map[string][]byte{}
-                                       m["Josiah Edward Bartlet"] = []byte("Martin Sheen")
-                                       m["Toby Ziegler"] = []byte("Richard Schiff")
-                                       m["CJ Cregg"] = []byte("Allison Janney")
-                                       expected := `{
-        ("Josiah Edward Bartlet": "Martin Sheen"|"Toby Ziegler": "Richard Schiff"|"CJ Cregg": "Allison Janney"),
-        ("Josiah Edward Bartlet": "Martin Sheen"|"Toby Ziegler": "Richard Schiff"|"CJ Cregg": "Allison Janney"),
-        ("Josiah Edward Bartlet": "Martin Sheen"|"Toby Ziegler": "Richard Schiff"|"CJ Cregg": "Allison Janney"),
-    }`
-                                       Ω(Object(m, 1)).Should(matchRegexp(`map\[string\]\[\]uint8 \| len:3`, expected))
-                               })
-                       })
-               })
-
-               Describe("formatting structs", func() {
-                       It("should include the struct name and the field names", func() {
-                               s := SimpleStruct{
-                                       Name:        "Oswald",
-                                       Enumeration: 17,
-                                       Veritas:     true,
-                                       Data:        []byte("datum"),
-                                       secret:      1983,
-                               }
-
-                               Ω(Object(s, 1)).Should(match("format_test.SimpleStruct", `{Name: "Oswald", Enumeration: 17, Veritas: true, Data: "datum", secret: 1983}`))
-                       })
-
-                       Context("when the struct contains long entries", func() {
-                               It("should format the entries with new lines", func() {
-                                       s := &SimpleStruct{
-                                               Name:        "Mithrandir Gandalf Greyhame",
-                                               Enumeration: 2021,
-                                               Veritas:     true,
-                                               Data:        []byte("wizard"),
-                                               secret:      3,
-                                       }
-
-                                       Ω(Object(s, 1)).Should(match(fmt.Sprintf("*format_test.SimpleStruct | %p", s), `{
-        Name: "Mithrandir Gandalf Greyhame",
-        Enumeration: 2021,
-        Veritas: true,
-        Data: "wizard",
-        secret: 3,
-    }`))
-                               })
-                       })
-               })
-
-               Describe("formatting nil values", func() {
-                       It("should print out nil", func() {
-                               Ω(Object(nil, 1)).Should(match("nil", "nil"))
-                               var typedNil *AStruct
-                               Ω(Object(typedNil, 1)).Should(match("*format_test.AStruct | 0x0", "nil"))
-                               var c chan<- bool
-                               Ω(Object(c, 1)).Should(match("chan<- bool | len:0, cap:0", "nil"))
-                               var s []string
-                               Ω(Object(s, 1)).Should(match("[]string | len:0, cap:0", "nil"))
-                               var m map[string]bool
-                               Ω(Object(m, 1)).Should(match("map[string]bool | len:0", "nil"))
-                       })
-               })
-
-               Describe("formatting aliased types", func() {
-                       It("should print out the correct alias type", func() {
-                               Ω(Object(StringAlias("alias"), 1)).Should(match("format_test.StringAlias", `alias`))
-                               Ω(Object(ByteAlias("alias"), 1)).Should(matchRegexp(`format_test\.ByteAlias \| len:5, cap:\d+`, `alias`))
-                               Ω(Object(IntAlias(3), 1)).Should(match("format_test.IntAlias", "3"))
-                       })
-               })
-
-               Describe("handling nested things", func() {
-                       It("should produce a correctly nested representation", func() {
-                               s := ComplexStruct{
-                                       Strings: []string{"lots", "of", "short", "strings"},
-                                       SimpleThings: []*SimpleStruct{
-                                               {"short", 7, true, []byte("succinct"), 17},
-                                               {"something longer", 427, true, []byte("designed to wrap around nicely"), 30},
-                                       },
-                                       DataMaps: map[int]ByteAlias{
-                                               17:   ByteAlias("some substantially longer chunks of data"),
-                                               1138: ByteAlias("that should make things wrap"),
-                                       },
-                               }
-                               expected := `{
-        Strings: \["lots", "of", "short", "strings"\],
-        SimpleThings: \[
-            {Name: "short", Enumeration: 7, Veritas: true, Data: "succinct", secret: 17},
-            {
-                Name: "something longer",
-                Enumeration: 427,
-                Veritas: true,
-                Data: "designed to wrap around nicely",
-                secret: 30,
-            },
-        \],
-        DataMaps: {
-            (17: "some substantially longer chunks of data"|1138: "that should make things wrap"),
-            (17: "some substantially longer chunks of data"|1138: "that should make things wrap"),
-        },
-    }`
-                               Ω(Object(s, 1)).Should(matchRegexp(`format_test\.ComplexStruct`, expected))
-                       })
-               })
-
-               Describe("formatting times", func() {
-                       It("should format time as RFC3339", func() {
-                               t := time.Date(2016, 10, 31, 9, 57, 23, 12345, time.UTC)
-                               Ω(Object(t, 1)).Should(match("time.Time", `2016-10-31T09:57:23.000012345Z`))
-                       })
-               })
-       })
-
-       Describe("Handling unexported fields in structs", func() {
-               It("should handle all the various types correctly", func() {
-                       a := int(5)
-                       s := SecretiveStruct{
-                               boolValue:      true,
-                               intValue:       3,
-                               uintValue:      4,
-                               uintptrValue:   5,
-                               floatValue:     6.0,
-                               complexValue:   complex(5.0, 3.0),
-                               chanValue:      make(chan bool, 2),
-                               funcValue:      func() {},
-                               pointerValue:   &a,
-                               sliceValue:     []string{"string", "slice"},
-                               byteSliceValue: []byte("bytes"),
-                               stringValue:    "a string",
-                               arrValue:       [3]int{11, 12, 13},
-                               byteArrValue:   [3]byte{17, 20, 32},
-                               mapValue:       map[string]int{"a key": 20, "b key": 30},
-                               structValue:    AStruct{"exported"},
-                               interfaceValue: map[string]int{"a key": 17},
-                       }
-
-                       expected := fmt.Sprintf(`{
-        boolValue: true,
-        intValue: 3,
-        uintValue: 4,
-        uintptrValue: 0x5,
-        floatValue: 6,
-        complexValue: \(5\+3i\),
-        chanValue: %p,
-        funcValue: %p,
-        pointerValue: 5,
-        sliceValue: \["string", "slice"\],
-        byteSliceValue: "bytes",
-        stringValue: "a string",
-        arrValue: \[11, 12, 13\],
-        byteArrValue: \[17, 20, 32\],
-        mapValue: %s,
-        structValue: {Exported: "exported"},
-        interfaceValue: {"a key": 17},
-    }`, s.chanValue, s.funcValue, hashMatchingRegexp(`"a key": 20`, `"b key": 30`))
-
-                       Ω(Object(s, 1)).Should(matchRegexp(`format_test\.SecretiveStruct`, expected))
-               })
-       })
-
-       Describe("Handling interfaces", func() {
-               It("should unpack the interface", func() {
-                       outerHash := map[string]interface{}{}
-                       innerHash := map[string]int{}
-
-                       innerHash["inner"] = 3
-                       outerHash["integer"] = 2
-                       outerHash["map"] = innerHash
-
-                       expected := hashMatchingRegexp(`"integer": 2`, `"map": {"inner": 3}`)
-                       Ω(Object(outerHash, 1)).Should(matchRegexp(`map\[string\]interface {} \| len:2`, expected))
-               })
-       })
-
-       Describe("Handling recursive things", func() {
-               It("should not go crazy...", func() {
-                       m := map[string]interface{}{}
-                       m["integer"] = 2
-                       m["map"] = m
-                       Ω(Object(m, 1)).Should(ContainSubstring("..."))
-               })
-
-               It("really should not go crazy...", func() {
-                       type complexKey struct {
-                               Value map[interface{}]int
-                       }
-
-                       complexObject := complexKey{}
-                       complexObject.Value = make(map[interface{}]int)
-
-                       complexObject.Value[&complexObject] = 2
-                       Ω(Object(complexObject, 1)).Should(ContainSubstring("..."))
-               })
-       })
-
-       Describe("When instructed to use the Stringer representation", func() {
-               BeforeEach(func() {
-                       UseStringerRepresentation = true
-               })
-
-               AfterEach(func() {
-                       UseStringerRepresentation = false
-               })
-
-               Context("when passed a GoStringer", func() {
-                       It("should use what GoString() returns", func() {
-                               Ω(Object(GoStringer{}, 1)).Should(ContainSubstring("<format_test.GoStringer>: go-string"))
-                       })
-               })
-
-               Context("when passed a stringer", func() {
-                       It("should use what String() returns", func() {
-                               Ω(Object(Stringer{}, 1)).Should(ContainSubstring("<format_test.Stringer>: string"))
-                       })
-               })
-       })
-
-       Describe("Printing a context.Context field", func() {
-
-               type structWithContext struct {
-                       Context Ctx
-                       Value   string
-               }
-
-               context := ctx{}
-               objWithContext := structWithContext{Value: "some-value", Context: &context}
-
-               It("Suppresses the content by default", func() {
-                       Ω(Object(objWithContext, 1)).Should(ContainSubstring("<suppressed context>"))
-               })
-
-               It("Doesn't supress the context if it's the object being printed", func() {
-                       Ω(Object(context, 1)).ShouldNot(MatchRegexp("^.*<suppressed context>$"))
-               })
-
-               Context("PrintContextObjects is set", func() {
-                       BeforeEach(func() {
-                               PrintContextObjects = true
-                       })
-
-                       AfterEach(func() {
-                               PrintContextObjects = false
-                       })
-
-                       It("Prints the context", func() {
-                               Ω(Object(objWithContext, 1)).ShouldNot(ContainSubstring("<suppressed context>"))
-                       })
-               })
-       })
-})
-
-var expectedLongStringFailureMessage = strings.TrimSpace(`
-Expected
-    <string>: "...aaaaabaaaaa..."
-to equal               |
-    <string>: "...aaaaazaaaaa..."
-`)
-var expectedTruncatedEndStringFailureMessage = strings.TrimSpace(`
-Expected
-    <string>: "baaaaa..."
-to equal       |
-    <string>: "zaaaaa..."
-`)
-var expectedTruncatedStartStringFailureMessage = strings.TrimSpace(`
-Expected
-    <string>: "...aaaaab"
-to equal               |
-    <string>: "...aaaaaz"
-`)
-var expectedTruncatedStartSizeFailureMessage = strings.TrimSpace(`
-Expected
-    <string>: "...aaaaaa"
-to equal               |
-    <string>: "...aaaaa"
-`)
-var expectedTruncatedStartSizeSwappedFailureMessage = strings.TrimSpace(`
-Expected
-    <string>: "...aaaa"
-to equal              |
-    <string>: "...aaaaa"
-`)
diff --git a/vendor/github.com/onsi/gomega/gbytes/buffer.go b/vendor/github.com/onsi/gomega/gbytes/buffer.go
deleted file mode 100644 (file)
index 8775b86..0000000
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
-Package gbytes provides a buffer that supports incrementally detecting input.
-
-You use gbytes.Buffer with the gbytes.Say matcher.  When Say finds a match, it fastforwards the buffer's read cursor to the end of that match.
-
-Subsequent matches against the buffer will only operate against data that appears *after* the read cursor.
-
-The read cursor is an opaque implementation detail that you cannot access.  You should use the Say matcher to sift through the buffer.  You can always
-access the entire buffer's contents with Contents().
-
-*/
-package gbytes
-
-import (
-       "errors"
-       "fmt"
-       "io"
-       "regexp"
-       "sync"
-       "time"
-)
-
-/*
-gbytes.Buffer implements an io.Writer and can be used with the gbytes.Say matcher.
-
-You should only use a gbytes.Buffer in test code.  It stores all writes in an in-memory buffer - behavior that is inappropriate for production code!
-*/
-type Buffer struct {
-       contents     []byte
-       readCursor   uint64
-       lock         *sync.Mutex
-       detectCloser chan interface{}
-       closed       bool
-}
-
-/*
-NewBuffer returns a new gbytes.Buffer
-*/
-func NewBuffer() *Buffer {
-       return &Buffer{
-               lock: &sync.Mutex{},
-       }
-}
-
-/*
-BufferWithBytes returns a new gbytes.Buffer seeded with the passed in bytes
-*/
-func BufferWithBytes(bytes []byte) *Buffer {
-       return &Buffer{
-               lock:     &sync.Mutex{},
-               contents: bytes,
-       }
-}
-
-/*
-Write implements the io.Writer interface
-*/
-func (b *Buffer) Write(p []byte) (n int, err error) {
-       b.lock.Lock()
-       defer b.lock.Unlock()
-
-       if b.closed {
-               return 0, errors.New("attempt to write to closed buffer")
-       }
-
-       b.contents = append(b.contents, p...)
-       return len(p), nil
-}
-
-/*
-Read implements the io.Reader interface. It advances the
-cursor as it reads.
-
-Returns an error if called after Close.
-*/
-func (b *Buffer) Read(d []byte) (int, error) {
-       b.lock.Lock()
-       defer b.lock.Unlock()
-
-       if b.closed {
-               return 0, errors.New("attempt to read from closed buffer")
-       }
-
-       if uint64(len(b.contents)) <= b.readCursor {
-               return 0, io.EOF
-       }
-
-       n := copy(d, b.contents[b.readCursor:])
-       b.readCursor += uint64(n)
-
-       return n, nil
-}
-
-/*
-Close signifies that the buffer will no longer be written to
-*/
-func (b *Buffer) Close() error {
-       b.lock.Lock()
-       defer b.lock.Unlock()
-
-       b.closed = true
-
-       return nil
-}
-
-/*
-Closed returns true if the buffer has been closed
-*/
-func (b *Buffer) Closed() bool {
-       b.lock.Lock()
-       defer b.lock.Unlock()
-
-       return b.closed
-}
-
-/*
-Contents returns all data ever written to the buffer.
-*/
-func (b *Buffer) Contents() []byte {
-       b.lock.Lock()
-       defer b.lock.Unlock()
-
-       contents := make([]byte, len(b.contents))
-       copy(contents, b.contents)
-       return contents
-}
-
-/*
-Detect takes a regular expression and returns a channel.
-
-The channel will receive true the first time data matching the regular expression is written to the buffer.
-The channel is subsequently closed and the buffer's read-cursor is fast-forwarded to just after the matching region.
-
-You typically don't need to use Detect and should use the ghttp.Say matcher instead.  Detect is useful, however, in cases where your code must
-be branch and handle different outputs written to the buffer.
-
-For example, consider a buffer hooked up to the stdout of a client library.  You may (or may not, depending on state outside of your control) need to authenticate the client library.
-
-You could do something like:
-
-select {
-case <-buffer.Detect("You are not logged in"):
-       //log in
-case <-buffer.Detect("Success"):
-       //carry on
-case <-time.After(time.Second):
-       //welp
-}
-buffer.CancelDetects()
-
-You should always call CancelDetects after using Detect.  This will close any channels that have not detected and clean up the goroutines that were spawned to support them.
-
-Finally, you can pass detect a format string followed by variadic arguments.  This will construct the regexp using fmt.Sprintf.
-*/
-func (b *Buffer) Detect(desired string, args ...interface{}) chan bool {
-       formattedRegexp := desired
-       if len(args) > 0 {
-               formattedRegexp = fmt.Sprintf(desired, args...)
-       }
-       re := regexp.MustCompile(formattedRegexp)
-
-       b.lock.Lock()
-       defer b.lock.Unlock()
-
-       if b.detectCloser == nil {
-               b.detectCloser = make(chan interface{})
-       }
-
-       closer := b.detectCloser
-       response := make(chan bool)
-       go func() {
-               ticker := time.NewTicker(10 * time.Millisecond)
-               defer ticker.Stop()
-               defer close(response)
-               for {
-                       select {
-                       case <-ticker.C:
-                               b.lock.Lock()
-                               data, cursor := b.contents[b.readCursor:], b.readCursor
-                               loc := re.FindIndex(data)
-                               b.lock.Unlock()
-
-                               if loc != nil {
-                                       response <- true
-                                       b.lock.Lock()
-                                       newCursorPosition := cursor + uint64(loc[1])
-                                       if newCursorPosition >= b.readCursor {
-                                               b.readCursor = newCursorPosition
-                                       }
-                                       b.lock.Unlock()
-                                       return
-                               }
-                       case <-closer:
-                               return
-                       }
-               }
-       }()
-
-       return response
-}
-
-/*
-CancelDetects cancels any pending detects and cleans up their goroutines.  You should always call this when you're done with a set of Detect channels.
-*/
-func (b *Buffer) CancelDetects() {
-       b.lock.Lock()
-       defer b.lock.Unlock()
-
-       close(b.detectCloser)
-       b.detectCloser = nil
-}
-
-func (b *Buffer) didSay(re *regexp.Regexp) (bool, []byte) {
-       b.lock.Lock()
-       defer b.lock.Unlock()
-
-       unreadBytes := b.contents[b.readCursor:]
-       copyOfUnreadBytes := make([]byte, len(unreadBytes))
-       copy(copyOfUnreadBytes, unreadBytes)
-
-       loc := re.FindIndex(unreadBytes)
-
-       if loc != nil {
-               b.readCursor += uint64(loc[1])
-               return true, copyOfUnreadBytes
-       } else {
-               return false, copyOfUnreadBytes
-       }
-}
diff --git a/vendor/github.com/onsi/gomega/gbytes/buffer_test.go b/vendor/github.com/onsi/gomega/gbytes/buffer_test.go
deleted file mode 100644 (file)
index b111138..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-package gbytes_test
-
-import (
-       "io"
-       "time"
-
-       . "github.com/onsi/gomega/gbytes"
-
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-)
-
-var _ = Describe("Buffer", func() {
-       var buffer *Buffer
-
-       BeforeEach(func() {
-               buffer = NewBuffer()
-       })
-
-       Describe("dumping the entire contents of the buffer", func() {
-               It("should return everything that's been written", func() {
-                       buffer.Write([]byte("abc"))
-                       buffer.Write([]byte("def"))
-                       Ω(buffer.Contents()).Should(Equal([]byte("abcdef")))
-
-                       Ω(buffer).Should(Say("bcd"))
-                       Ω(buffer.Contents()).Should(Equal([]byte("abcdef")))
-               })
-       })
-
-       Describe("creating a buffer with bytes", func() {
-               It("should create the buffer with the cursor set to the beginning", func() {
-                       buffer := BufferWithBytes([]byte("abcdef"))
-                       Ω(buffer.Contents()).Should(Equal([]byte("abcdef")))
-                       Ω(buffer).Should(Say("abc"))
-                       Ω(buffer).ShouldNot(Say("abc"))
-                       Ω(buffer).Should(Say("def"))
-               })
-       })
-
-       Describe("reading from a buffer", func() {
-               It("should read the current contents of the buffer", func() {
-                       buffer := BufferWithBytes([]byte("abcde"))
-
-                       dest := make([]byte, 3)
-                       n, err := buffer.Read(dest)
-                       Ω(err).ShouldNot(HaveOccurred())
-                       Ω(n).Should(Equal(3))
-                       Ω(string(dest)).Should(Equal("abc"))
-
-                       dest = make([]byte, 3)
-                       n, err = buffer.Read(dest)
-                       Ω(err).ShouldNot(HaveOccurred())
-                       Ω(n).Should(Equal(2))
-                       Ω(string(dest[:n])).Should(Equal("de"))
-
-                       n, err = buffer.Read(dest)
-                       Ω(err).Should(Equal(io.EOF))
-                       Ω(n).Should(Equal(0))
-               })
-
-               Context("after the buffer has been closed", func() {
-                       It("returns an error", func() {
-                               buffer := BufferWithBytes([]byte("abcde"))
-
-                               buffer.Close()
-
-                               dest := make([]byte, 3)
-                               n, err := buffer.Read(dest)
-                               Ω(err).Should(HaveOccurred())
-                               Ω(n).Should(Equal(0))
-                       })
-               })
-       })
-
-       Describe("detecting regular expressions", func() {
-               It("should fire the appropriate channel when the passed in pattern matches, then close it", func(done Done) {
-                       go func() {
-                               time.Sleep(10 * time.Millisecond)
-                               buffer.Write([]byte("abcde"))
-                       }()
-
-                       A := buffer.Detect("%s", "a.c")
-                       B := buffer.Detect("def")
-
-                       var gotIt bool
-                       select {
-                       case gotIt = <-A:
-                       case <-B:
-                               Fail("should not have gotten here")
-                       }
-
-                       Ω(gotIt).Should(BeTrue())
-                       Eventually(A).Should(BeClosed())
-
-                       buffer.Write([]byte("f"))
-                       Eventually(B).Should(Receive())
-                       Eventually(B).Should(BeClosed())
-
-                       close(done)
-               })
-
-               It("should fast-forward the buffer upon detection", func(done Done) {
-                       buffer.Write([]byte("abcde"))
-                       <-buffer.Detect("abc")
-                       Ω(buffer).ShouldNot(Say("abc"))
-                       Ω(buffer).Should(Say("de"))
-                       close(done)
-               })
-
-               It("should only fast-forward the buffer when the channel is read, and only if doing so would not rewind it", func(done Done) {
-                       buffer.Write([]byte("abcde"))
-                       A := buffer.Detect("abc")
-                       time.Sleep(20 * time.Millisecond) //give the goroutine a chance to detect and write to the channel
-                       Ω(buffer).Should(Say("abcd"))
-                       <-A
-                       Ω(buffer).ShouldNot(Say("d"))
-                       Ω(buffer).Should(Say("e"))
-                       Eventually(A).Should(BeClosed())
-                       close(done)
-               })
-
-               It("should be possible to cancel a detection", func(done Done) {
-                       A := buffer.Detect("abc")
-                       B := buffer.Detect("def")
-                       buffer.CancelDetects()
-                       buffer.Write([]byte("abcdef"))
-                       Eventually(A).Should(BeClosed())
-                       Eventually(B).Should(BeClosed())
-
-                       Ω(buffer).Should(Say("bcde"))
-                       <-buffer.Detect("f")
-                       close(done)
-               })
-       })
-
-       Describe("closing the buffer", func() {
-               It("should error when further write attempts are made", func() {
-                       _, err := buffer.Write([]byte("abc"))
-                       Ω(err).ShouldNot(HaveOccurred())
-
-                       buffer.Close()
-
-                       _, err = buffer.Write([]byte("def"))
-                       Ω(err).Should(HaveOccurred())
-
-                       Ω(buffer.Contents()).Should(Equal([]byte("abc")))
-               })
-
-               It("should be closed", func() {
-                       Ω(buffer.Closed()).Should(BeFalse())
-
-                       buffer.Close()
-
-                       Ω(buffer.Closed()).Should(BeTrue())
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/gbytes/gbuffer_suite_test.go b/vendor/github.com/onsi/gomega/gbytes/gbuffer_suite_test.go
deleted file mode 100644 (file)
index 3a7dc06..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-package gbytes_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-
-       "testing"
-)
-
-func TestGbytes(t *testing.T) {
-       RegisterFailHandler(Fail)
-       RunSpecs(t, "Gbytes Suite")
-}
diff --git a/vendor/github.com/onsi/gomega/gbytes/say_matcher.go b/vendor/github.com/onsi/gomega/gbytes/say_matcher.go
deleted file mode 100644 (file)
index cbc266c..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-package gbytes
-
-import (
-       "fmt"
-       "regexp"
-
-       "github.com/onsi/gomega/format"
-)
-
-//Objects satisfying the BufferProvider can be used with the Say matcher.
-type BufferProvider interface {
-       Buffer() *Buffer
-}
-
-/*
-Say is a Gomega matcher that operates on gbytes.Buffers:
-
-       Ω(buffer).Should(Say("something"))
-
-will succeed if the unread portion of the buffer matches the regular expression "something".
-
-When Say succeeds, it fast forwards the gbytes.Buffer's read cursor to just after the succesful match.
-Thus, subsequent calls to Say will only match against the unread portion of the buffer
-
-Say pairs very well with Eventually.  To assert that a buffer eventually receives data matching "[123]-star" within 3 seconds you can:
-
-       Eventually(buffer, 3).Should(Say("[123]-star"))
-
-Ditto with consistently.  To assert that a buffer does not receive data matching "never-see-this" for 1 second you can:
-
-       Consistently(buffer, 1).ShouldNot(Say("never-see-this"))
-
-In addition to bytes.Buffers, Say can operate on objects that implement the gbytes.BufferProvider interface.
-In such cases, Say simply operates on the *gbytes.Buffer returned by Buffer()
-
-If the buffer is closed, the Say matcher will tell Eventually to abort.
-*/
-func Say(expected string, args ...interface{}) *sayMatcher {
-       formattedRegexp := expected
-       if len(args) > 0 {
-               formattedRegexp = fmt.Sprintf(expected, args...)
-       }
-       return &sayMatcher{
-               re: regexp.MustCompile(formattedRegexp),
-       }
-}
-
-type sayMatcher struct {
-       re              *regexp.Regexp
-       receivedSayings []byte
-}
-
-func (m *sayMatcher) buffer(actual interface{}) (*Buffer, bool) {
-       var buffer *Buffer
-
-       switch x := actual.(type) {
-       case *Buffer:
-               buffer = x
-       case BufferProvider:
-               buffer = x.Buffer()
-       default:
-               return nil, false
-       }
-
-       return buffer, true
-}
-
-func (m *sayMatcher) Match(actual interface{}) (success bool, err error) {
-       buffer, ok := m.buffer(actual)
-       if !ok {
-               return false, fmt.Errorf("Say must be passed a *gbytes.Buffer or BufferProvider.  Got:\n%s", format.Object(actual, 1))
-       }
-
-       didSay, sayings := buffer.didSay(m.re)
-       m.receivedSayings = sayings
-
-       return didSay, nil
-}
-
-func (m *sayMatcher) FailureMessage(actual interface{}) (message string) {
-       return fmt.Sprintf(
-               "Got stuck at:\n%s\nWaiting for:\n%s",
-               format.IndentString(string(m.receivedSayings), 1),
-               format.IndentString(m.re.String(), 1),
-       )
-}
-
-func (m *sayMatcher) NegatedFailureMessage(actual interface{}) (message string) {
-       return fmt.Sprintf(
-               "Saw:\n%s\nWhich matches the unexpected:\n%s",
-               format.IndentString(string(m.receivedSayings), 1),
-               format.IndentString(m.re.String(), 1),
-       )
-}
-
-func (m *sayMatcher) MatchMayChangeInTheFuture(actual interface{}) bool {
-       switch x := actual.(type) {
-       case *Buffer:
-               return !x.Closed()
-       case BufferProvider:
-               return !x.Buffer().Closed()
-       default:
-               return true
-       }
-}
diff --git a/vendor/github.com/onsi/gomega/gbytes/say_matcher_test.go b/vendor/github.com/onsi/gomega/gbytes/say_matcher_test.go
deleted file mode 100644 (file)
index 63fb3b3..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-package gbytes_test
-
-import (
-       . "github.com/onsi/gomega/gbytes"
-       "time"
-
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-)
-
-type speaker struct {
-       buffer *Buffer
-}
-
-func (s *speaker) Buffer() *Buffer {
-       return s.buffer
-}
-
-var _ = Describe("SayMatcher", func() {
-       var buffer *Buffer
-
-       BeforeEach(func() {
-               buffer = NewBuffer()
-               buffer.Write([]byte("abc"))
-       })
-
-       Context("when actual is not a gexec Buffer, or a BufferProvider", func() {
-               It("should error", func() {
-                       failures := InterceptGomegaFailures(func() {
-                               Ω("foo").Should(Say("foo"))
-                       })
-                       Ω(failures[0]).Should(ContainSubstring("*gbytes.Buffer"))
-               })
-       })
-
-       Context("when a match is found", func() {
-               It("should succeed", func() {
-                       Ω(buffer).Should(Say("abc"))
-               })
-
-               It("should support printf-like formatting", func() {
-                       Ω(buffer).Should(Say("a%sc", "b"))
-               })
-
-               It("should use a regular expression", func() {
-                       Ω(buffer).Should(Say("a.c"))
-               })
-
-               It("should fastforward the buffer", func() {
-                       buffer.Write([]byte("def"))
-                       Ω(buffer).Should(Say("abcd"))
-                       Ω(buffer).Should(Say("ef"))
-                       Ω(buffer).ShouldNot(Say("[a-z]"))
-               })
-       })
-
-       Context("when no match is found", func() {
-               It("should not error", func() {
-                       Ω(buffer).ShouldNot(Say("def"))
-               })
-
-               Context("when the buffer is closed", func() {
-                       BeforeEach(func() {
-                               buffer.Close()
-                       })
-
-                       It("should abort an eventually", func() {
-                               t := time.Now()
-                               failures := InterceptGomegaFailures(func() {
-                                       Eventually(buffer).Should(Say("def"))
-                               })
-                               Eventually(buffer).ShouldNot(Say("def"))
-                               Ω(time.Since(t)).Should(BeNumerically("<", 500*time.Millisecond))
-                               Ω(failures).Should(HaveLen(1))
-
-                               t = time.Now()
-                               Eventually(buffer).Should(Say("abc"))
-                               Ω(time.Since(t)).Should(BeNumerically("<", 500*time.Millisecond))
-                       })
-
-                       It("should abort a consistently", func() {
-                               t := time.Now()
-                               Consistently(buffer, 2.0).ShouldNot(Say("def"))
-                               Ω(time.Since(t)).Should(BeNumerically("<", 500*time.Millisecond))
-                       })
-
-                       It("should not error with a synchronous matcher", func() {
-                               Ω(buffer).ShouldNot(Say("def"))
-                               Ω(buffer).Should(Say("abc"))
-                       })
-               })
-       })
-
-       Context("when a positive match fails", func() {
-               It("should report where it got stuck", func() {
-                       Ω(buffer).Should(Say("abc"))
-                       buffer.Write([]byte("def"))
-                       failures := InterceptGomegaFailures(func() {
-                               Ω(buffer).Should(Say("abc"))
-                       })
-                       Ω(failures[0]).Should(ContainSubstring("Got stuck at:"))
-                       Ω(failures[0]).Should(ContainSubstring("def"))
-               })
-       })
-
-       Context("when a negative match fails", func() {
-               It("should report where it got stuck", func() {
-                       failures := InterceptGomegaFailures(func() {
-                               Ω(buffer).ShouldNot(Say("abc"))
-                       })
-                       Ω(failures[0]).Should(ContainSubstring("Saw:"))
-                       Ω(failures[0]).Should(ContainSubstring("Which matches the unexpected:"))
-                       Ω(failures[0]).Should(ContainSubstring("abc"))
-               })
-       })
-
-       Context("when a match is not found", func() {
-               It("should not fastforward the buffer", func() {
-                       Ω(buffer).ShouldNot(Say("def"))
-                       Ω(buffer).Should(Say("abc"))
-               })
-       })
-
-       Context("a nice real-life example", func() {
-               It("should behave well", func() {
-                       Ω(buffer).Should(Say("abc"))
-                       go func() {
-                               time.Sleep(10 * time.Millisecond)
-                               buffer.Write([]byte("def"))
-                       }()
-                       Ω(buffer).ShouldNot(Say("def"))
-                       Eventually(buffer).Should(Say("def"))
-               })
-       })
-
-       Context("when actual is a BufferProvider", func() {
-               It("should use actual's buffer", func() {
-                       s := &speaker{
-                               buffer: NewBuffer(),
-                       }
-
-                       Ω(s).ShouldNot(Say("abc"))
-
-                       s.Buffer().Write([]byte("abc"))
-                       Ω(s).Should(Say("abc"))
-               })
-
-               It("should abort an eventually", func() {
-                       s := &speaker{
-                               buffer: NewBuffer(),
-                       }
-
-                       s.buffer.Close()
-
-                       t := time.Now()
-                       failures := InterceptGomegaFailures(func() {
-                               Eventually(s).Should(Say("def"))
-                       })
-                       Ω(failures).Should(HaveLen(1))
-                       Ω(time.Since(t)).Should(BeNumerically("<", 500*time.Millisecond))
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/gexec/_fixture/firefly/main.go b/vendor/github.com/onsi/gomega/gexec/_fixture/firefly/main.go
deleted file mode 100644 (file)
index 16091c2..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-package main
-
-import (
-       "fmt"
-       "math/rand"
-       "os"
-       "strconv"
-       "time"
-)
-
-var outQuote = "We've done the impossible, and that makes us mighty."
-var errQuote = "Ah, curse your sudden but inevitable betrayal!"
-
-var randomQuotes = []string{
-       "Can we maybe vote on the whole murdering people issue?",
-       "I swear by my pretty floral bonnet, I will end you.",
-       "My work's illegal, but at least it's honest.",
-}
-
-func main() {
-       fmt.Fprintln(os.Stdout, outQuote)
-       fmt.Fprintln(os.Stderr, errQuote)
-
-       randomIndex := rand.New(rand.NewSource(time.Now().UnixNano())).Intn(len(randomQuotes))
-
-       time.Sleep(100 * time.Millisecond)
-
-       fmt.Fprintln(os.Stdout, randomQuotes[randomIndex])
-
-       if len(os.Args) == 2 {
-               exitCode, _ := strconv.Atoi(os.Args[1])
-               os.Exit(exitCode)
-       } else {
-               os.Exit(randomIndex)
-       }
-}
diff --git a/vendor/github.com/onsi/gomega/gexec/build.go b/vendor/github.com/onsi/gomega/gexec/build.go
deleted file mode 100644 (file)
index d11b2fd..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-package gexec
-
-import (
-       "errors"
-       "fmt"
-       "io/ioutil"
-       "os"
-       "os/exec"
-       "path"
-       "path/filepath"
-       "runtime"
-       "sync"
-)
-
-var (
-       mu     sync.Mutex
-       tmpDir string
-)
-
-/*
-Build uses go build to compile the package at packagePath.  The resulting binary is saved off in a temporary directory.
-A path pointing to this binary is returned.
-
-Build uses the $GOPATH set in your environment.  It passes the variadic args on to `go build`.
-*/
-func Build(packagePath string, args ...string) (compiledPath string, err error) {
-       return doBuild(os.Getenv("GOPATH"), packagePath, nil, args...)
-}
-
-/*
-BuildWithEnvironment is identical to Build but allows you to specify env vars to be set at build time.
-*/
-func BuildWithEnvironment(packagePath string, env []string, args ...string) (compiledPath string, err error) {
-       return doBuild(os.Getenv("GOPATH"), packagePath, env, args...)
-}
-
-/*
-BuildIn is identical to Build but allows you to specify a custom $GOPATH (the first argument).
-*/
-func BuildIn(gopath string, packagePath string, args ...string) (compiledPath string, err error) {
-       return doBuild(gopath, packagePath, nil, args...)
-}
-
-func doBuild(gopath, packagePath string, env []string, args ...string) (compiledPath string, err error) {
-       tmpDir, err := temporaryDirectory()
-       if err != nil {
-               return "", err
-       }
-
-       if len(gopath) == 0 {
-               return "", errors.New("$GOPATH not provided when building " + packagePath)
-       }
-
-       executable := filepath.Join(tmpDir, path.Base(packagePath))
-       if runtime.GOOS == "windows" {
-               executable = executable + ".exe"
-       }
-
-       cmdArgs := append([]string{"build"}, args...)
-       cmdArgs = append(cmdArgs, "-o", executable, packagePath)
-
-       build := exec.Command("go", cmdArgs...)
-       build.Env = append([]string{"GOPATH=" + gopath}, os.Environ()...)
-       build.Env = append(build.Env, env...)
-
-       output, err := build.CombinedOutput()
-       if err != nil {
-               return "", fmt.Errorf("Failed to build %s:\n\nError:\n%s\n\nOutput:\n%s", packagePath, err, string(output))
-       }
-
-       return executable, nil
-}
-
-/*
-You should call CleanupBuildArtifacts before your test ends to clean up any temporary artifacts generated by
-gexec. In Ginkgo this is typically done in an AfterSuite callback.
-*/
-func CleanupBuildArtifacts() {
-       mu.Lock()
-       defer mu.Unlock()
-       if tmpDir != "" {
-               os.RemoveAll(tmpDir)
-               tmpDir = ""
-       }
-}
-
-func temporaryDirectory() (string, error) {
-       var err error
-       mu.Lock()
-       defer mu.Unlock()
-       if tmpDir == "" {
-               tmpDir, err = ioutil.TempDir("", "gexec_artifacts")
-               if err != nil {
-                       return "", err
-               }
-       }
-
-       return ioutil.TempDir(tmpDir, "g")
-}
diff --git a/vendor/github.com/onsi/gomega/gexec/build_test.go b/vendor/github.com/onsi/gomega/gexec/build_test.go
deleted file mode 100644 (file)
index 8df0790..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-package gexec_test
-
-import (
-       "os"
-
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       "github.com/onsi/gomega/gexec"
-)
-
-var packagePath = "./_fixture/firefly"
-
-var _ = Describe(".Build", func() {
-       Context("when there have been previous calls to Build", func() {
-               BeforeEach(func() {
-                       _, err := gexec.Build(packagePath)
-                       Ω(err).ShouldNot(HaveOccurred())
-               })
-
-               It("compiles the specified package", func() {
-                       compiledPath, err := gexec.Build(packagePath)
-                       Ω(err).ShouldNot(HaveOccurred())
-                       Ω(compiledPath).Should(BeAnExistingFile())
-               })
-
-               Context("and CleanupBuildArtifacts has been called", func() {
-                       BeforeEach(func() {
-                               gexec.CleanupBuildArtifacts()
-                       })
-
-                       It("compiles the specified package", func() {
-                               var err error
-                               fireflyPath, err = gexec.Build(packagePath)
-                               Ω(err).ShouldNot(HaveOccurred())
-                               Ω(fireflyPath).Should(BeAnExistingFile())
-                       })
-               })
-       })
-})
-
-var _ = Describe(".BuildWithEnvironment", func() {
-       var err error
-       env := []string{
-               "GOOS=linux",
-               "GOARCH=amd64",
-       }
-
-       It("compiles the specified package with the specified env vars", func() {
-               compiledPath, err := gexec.BuildWithEnvironment(packagePath, env)
-               Ω(err).ShouldNot(HaveOccurred())
-               Ω(compiledPath).Should(BeAnExistingFile())
-       })
-
-       It("returns the environment to a good state", func() {
-               _, err = gexec.BuildWithEnvironment(packagePath, env)
-               Ω(err).ShouldNot(HaveOccurred())
-               Ω(os.Environ()).ShouldNot(ContainElement("GOOS=linux"))
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/gexec/exit_matcher.go b/vendor/github.com/onsi/gomega/gexec/exit_matcher.go
deleted file mode 100644 (file)
index e6f4329..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-package gexec
-
-import (
-       "fmt"
-
-       "github.com/onsi/gomega/format"
-)
-
-/*
-The Exit matcher operates on a session:
-
-       Ω(session).Should(Exit(<optional status code>))
-
-Exit passes if the session has already exited.
-
-If no status code is provided, then Exit will succeed if the session has exited regardless of exit code.
-Otherwise, Exit will only succeed if the process has exited with the provided status code.
-
-Note that the process must have already exited.  To wait for a process to exit, use Eventually:
-
-       Eventually(session, 3).Should(Exit(0))
-*/
-func Exit(optionalExitCode ...int) *exitMatcher {
-       exitCode := -1
-       if len(optionalExitCode) > 0 {
-               exitCode = optionalExitCode[0]
-       }
-
-       return &exitMatcher{
-               exitCode: exitCode,
-       }
-}
-
-type exitMatcher struct {
-       exitCode       int
-       didExit        bool
-       actualExitCode int
-}
-
-type Exiter interface {
-       ExitCode() int
-}
-
-func (m *exitMatcher) Match(actual interface{}) (success bool, err error) {
-       exiter, ok := actual.(Exiter)
-       if !ok {
-               return false, fmt.Errorf("Exit must be passed a gexec.Exiter (Missing method ExitCode() int) Got:\n%s", format.Object(actual, 1))
-       }
-
-       m.actualExitCode = exiter.ExitCode()
-
-       if m.actualExitCode == -1 {
-               return false, nil
-       }
-
-       if m.exitCode == -1 {
-               return true, nil
-       }
-       return m.exitCode == m.actualExitCode, nil
-}
-
-func (m *exitMatcher) FailureMessage(actual interface{}) (message string) {
-       if m.actualExitCode == -1 {
-               return "Expected process to exit.  It did not."
-       } else {
-               return format.Message(m.actualExitCode, "to match exit code:", m.exitCode)
-       }
-}
-
-func (m *exitMatcher) NegatedFailureMessage(actual interface{}) (message string) {
-       if m.actualExitCode == -1 {
-               return "you really shouldn't be able to see this!"
-       } else {
-               if m.exitCode == -1 {
-                       return "Expected process not to exit.  It did."
-               } else {
-                       return format.Message(m.actualExitCode, "not to match exit code:", m.exitCode)
-               }
-       }
-}
-
-func (m *exitMatcher) MatchMayChangeInTheFuture(actual interface{}) bool {
-       session, ok := actual.(*Session)
-       if ok {
-               return session.ExitCode() == -1
-       }
-       return true
-}
diff --git a/vendor/github.com/onsi/gomega/gexec/exit_matcher_test.go b/vendor/github.com/onsi/gomega/gexec/exit_matcher_test.go
deleted file mode 100644 (file)
index 79615dd..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-package gexec_test
-
-import (
-       . "github.com/onsi/gomega/gexec"
-       "os/exec"
-       "time"
-
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-)
-
-type NeverExits struct{}
-
-func (e NeverExits) ExitCode() int {
-       return -1
-}
-
-var _ = Describe("ExitMatcher", func() {
-       var command *exec.Cmd
-       var session *Session
-
-       BeforeEach(func() {
-               var err error
-               command = exec.Command(fireflyPath, "0")
-               session, err = Start(command, nil, nil)
-               Ω(err).ShouldNot(HaveOccurred())
-       })
-
-       Describe("when passed something that is an Exiter", func() {
-               It("should act normally", func() {
-                       failures := InterceptGomegaFailures(func() {
-                               Ω(NeverExits{}).Should(Exit())
-                       })
-
-                       Ω(failures[0]).Should(ContainSubstring("Expected process to exit.  It did not."))
-               })
-       })
-
-       Describe("when passed something that is not an Exiter", func() {
-               It("should error", func() {
-                       failures := InterceptGomegaFailures(func() {
-                               Ω("aardvark").Should(Exit())
-                       })
-
-                       Ω(failures[0]).Should(ContainSubstring("Exit must be passed a gexec.Exiter"))
-               })
-       })
-
-       Context("with no exit code", func() {
-               It("should say the right things when it fails", func() {
-                       Ω(session).ShouldNot(Exit())
-
-                       failures := InterceptGomegaFailures(func() {
-                               Ω(session).Should(Exit())
-                       })
-
-                       Ω(failures[0]).Should(ContainSubstring("Expected process to exit.  It did not."))
-
-                       Eventually(session).Should(Exit())
-
-                       Ω(session).Should(Exit())
-
-                       failures = InterceptGomegaFailures(func() {
-                               Ω(session).ShouldNot(Exit())
-                       })
-
-                       Ω(failures[0]).Should(ContainSubstring("Expected process not to exit.  It did."))
-               })
-       })
-
-       Context("with an exit code", func() {
-               It("should say the right things when it fails", func() {
-                       Ω(session).ShouldNot(Exit(0))
-                       Ω(session).ShouldNot(Exit(1))
-
-                       failures := InterceptGomegaFailures(func() {
-                               Ω(session).Should(Exit(0))
-                       })
-
-                       Ω(failures[0]).Should(ContainSubstring("Expected process to exit.  It did not."))
-
-                       Eventually(session).Should(Exit(0))
-
-                       Ω(session).Should(Exit(0))
-
-                       failures = InterceptGomegaFailures(func() {
-                               Ω(session).Should(Exit(1))
-                       })
-
-                       Ω(failures[0]).Should(ContainSubstring("to match exit code:"))
-
-                       Ω(session).ShouldNot(Exit(1))
-
-                       failures = InterceptGomegaFailures(func() {
-                               Ω(session).ShouldNot(Exit(0))
-                       })
-
-                       Ω(failures[0]).Should(ContainSubstring("not to match exit code:"))
-               })
-       })
-
-       Describe("bailing out early", func() {
-               It("should bail out early once the process exits", func() {
-                       t := time.Now()
-
-                       failures := InterceptGomegaFailures(func() {
-                               Eventually(session).Should(Exit(1))
-                       })
-                       Ω(time.Since(t)).Should(BeNumerically("<=", 500*time.Millisecond))
-                       Ω(failures).Should(HaveLen(1))
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/gexec/gexec_suite_test.go b/vendor/github.com/onsi/gomega/gexec/gexec_suite_test.go
deleted file mode 100644 (file)
index 87672aa..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-package gexec_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       "github.com/onsi/gomega/gexec"
-
-       "testing"
-)
-
-var fireflyPath string
-
-func TestGexec(t *testing.T) {
-       BeforeSuite(func() {
-               var err error
-               fireflyPath, err = gexec.Build("./_fixture/firefly")
-               Ω(err).ShouldNot(HaveOccurred())
-       })
-
-       AfterSuite(func() {
-               gexec.CleanupBuildArtifacts()
-       })
-
-       RegisterFailHandler(Fail)
-       RunSpecs(t, "Gexec Suite")
-}
diff --git a/vendor/github.com/onsi/gomega/gexec/prefixed_writer.go b/vendor/github.com/onsi/gomega/gexec/prefixed_writer.go
deleted file mode 100644 (file)
index 05e695a..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-package gexec
-
-import (
-       "io"
-       "sync"
-)
-
-/*
-PrefixedWriter wraps an io.Writer, emiting the passed in prefix at the beginning of each new line.
-This can be useful when running multiple gexec.Sessions concurrently - you can prefix the log output of each
-session by passing in a PrefixedWriter:
-
-gexec.Start(cmd, NewPrefixedWriter("[my-cmd] ", GinkgoWriter), NewPrefixedWriter("[my-cmd] ", GinkgoWriter))
-*/
-type PrefixedWriter struct {
-       prefix        []byte
-       writer        io.Writer
-       lock          *sync.Mutex
-       atStartOfLine bool
-}
-
-func NewPrefixedWriter(prefix string, writer io.Writer) *PrefixedWriter {
-       return &PrefixedWriter{
-               prefix:        []byte(prefix),
-               writer:        writer,
-               lock:          &sync.Mutex{},
-               atStartOfLine: true,
-       }
-}
-
-func (w *PrefixedWriter) Write(b []byte) (int, error) {
-       w.lock.Lock()
-       defer w.lock.Unlock()
-
-       toWrite := []byte{}
-
-       for _, c := range b {
-               if w.atStartOfLine {
-                       toWrite = append(toWrite, w.prefix...)
-               }
-
-               toWrite = append(toWrite, c)
-
-               w.atStartOfLine = c == '\n'
-       }
-
-       _, err := w.writer.Write(toWrite)
-       if err != nil {
-               return 0, err
-       }
-
-       return len(b), nil
-}
diff --git a/vendor/github.com/onsi/gomega/gexec/prefixed_writer_test.go b/vendor/github.com/onsi/gomega/gexec/prefixed_writer_test.go
deleted file mode 100644 (file)
index 8657d0c..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-package gexec_test
-
-import (
-       "bytes"
-
-       . "github.com/onsi/gomega/gexec"
-
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-)
-
-var _ = Describe("PrefixedWriter", func() {
-       var buffer *bytes.Buffer
-       var writer *PrefixedWriter
-       BeforeEach(func() {
-               buffer = &bytes.Buffer{}
-               writer = NewPrefixedWriter("[p]", buffer)
-       })
-
-       It("should emit the prefix on newlines", func() {
-               writer.Write([]byte("abc"))
-               writer.Write([]byte("def\n"))
-               writer.Write([]byte("hij\n"))
-               writer.Write([]byte("\n\n"))
-               writer.Write([]byte("klm\n\nnop"))
-               writer.Write([]byte(""))
-               writer.Write([]byte("qrs"))
-               writer.Write([]byte("\ntuv\nwx"))
-               writer.Write([]byte("yz\n\n"))
-
-               Ω(buffer.String()).Should(Equal(`[p]abcdef
-[p]hij
-[p]
-[p]
-[p]klm
-[p]
-[p]nopqrs
-[p]tuv
-[p]wxyz
-[p]
-`))
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/gexec/session.go b/vendor/github.com/onsi/gomega/gexec/session.go
deleted file mode 100644 (file)
index 387a72c..0000000
+++ /dev/null
@@ -1,305 +0,0 @@
-/*
-Package gexec provides support for testing external processes.
-*/
-package gexec
-
-import (
-       "io"
-       "os"
-       "os/exec"
-       "reflect"
-       "sync"
-       "syscall"
-
-       . "github.com/onsi/gomega"
-       "github.com/onsi/gomega/gbytes"
-)
-
-const INVALID_EXIT_CODE = 254
-
-type Session struct {
-       //The wrapped command
-       Command *exec.Cmd
-
-       //A *gbytes.Buffer connected to the command's stdout
-       Out *gbytes.Buffer
-
-       //A *gbytes.Buffer connected to the command's stderr
-       Err *gbytes.Buffer
-
-       //A channel that will close when the command exits
-       Exited <-chan struct{}
-
-       lock     *sync.Mutex
-       exitCode int
-}
-
-/*
-Start starts the passed-in *exec.Cmd command.  It wraps the command in a *gexec.Session.
-
-The session pipes the command's stdout and stderr to two *gbytes.Buffers available as properties on the session: session.Out and session.Err.
-These buffers can be used with the gbytes.Say matcher to match against unread output:
-
-       Ω(session.Out).Should(gbytes.Say("foo-out"))
-       Ω(session.Err).Should(gbytes.Say("foo-err"))
-
-In addition, Session satisfies the gbytes.BufferProvider interface and provides the stdout *gbytes.Buffer.  This allows you to replace the first line, above, with:
-
-       Ω(session).Should(gbytes.Say("foo-out"))
-
-When outWriter and/or errWriter are non-nil, the session will pipe stdout and/or stderr output both into the session *gybtes.Buffers and to the passed-in outWriter/errWriter.
-This is useful for capturing the process's output or logging it to screen.  In particular, when using Ginkgo it can be convenient to direct output to the GinkgoWriter:
-
-       session, err := Start(command, GinkgoWriter, GinkgoWriter)
-
-This will log output when running tests in verbose mode, but - otherwise - will only log output when a test fails.
-
-The session wrapper is responsible for waiting on the *exec.Cmd command.  You *should not* call command.Wait() yourself.
-Instead, to assert that the command has exited you can use the gexec.Exit matcher:
-
-       Ω(session).Should(gexec.Exit())
-
-When the session exits it closes the stdout and stderr gbytes buffers.  This will short circuit any
-Eventuallys waiting for the buffers to Say something.
-*/
-func Start(command *exec.Cmd, outWriter io.Writer, errWriter io.Writer) (*Session, error) {
-       exited := make(chan struct{})
-
-       session := &Session{
-               Command:  command,
-               Out:      gbytes.NewBuffer(),
-               Err:      gbytes.NewBuffer(),
-               Exited:   exited,
-               lock:     &sync.Mutex{},
-               exitCode: -1,
-       }
-
-       var commandOut, commandErr io.Writer
-
-       commandOut, commandErr = session.Out, session.Err
-
-       if outWriter != nil && !reflect.ValueOf(outWriter).IsNil() {
-               commandOut = io.MultiWriter(commandOut, outWriter)
-       }
-
-       if errWriter != nil && !reflect.ValueOf(errWriter).IsNil() {
-               commandErr = io.MultiWriter(commandErr, errWriter)
-       }
-
-       command.Stdout = commandOut
-       command.Stderr = commandErr
-
-       err := command.Start()
-       if err == nil {
-               go session.monitorForExit(exited)
-               trackedSessionsMutex.Lock()
-               defer trackedSessionsMutex.Unlock()
-               trackedSessions = append(trackedSessions, session)
-       }
-
-       return session, err
-}
-
-/*
-Buffer implements the gbytes.BufferProvider interface and returns s.Out
-This allows you to make gbytes.Say matcher assertions against stdout without having to reference .Out:
-
-       Eventually(session).Should(gbytes.Say("foo"))
-*/
-func (s *Session) Buffer() *gbytes.Buffer {
-       return s.Out
-}
-
-/*
-ExitCode returns the wrapped command's exit code.  If the command hasn't exited yet, ExitCode returns -1.
-
-To assert that the command has exited it is more convenient to use the Exit matcher:
-
-       Eventually(s).Should(gexec.Exit())
-
-When the process exits because it has received a particular signal, the exit code will be 128+signal-value
-(See http://www.tldp.org/LDP/abs/html/exitcodes.html and http://man7.org/linux/man-pages/man7/signal.7.html)
-
-*/
-func (s *Session) ExitCode() int {
-       s.lock.Lock()
-       defer s.lock.Unlock()
-       return s.exitCode
-}
-
-/*
-Wait waits until the wrapped command exits.  It can be passed an optional timeout.
-If the command does not exit within the timeout, Wait will trigger a test failure.
-
-Wait returns the session, making it possible to chain:
-
-       session.Wait().Out.Contents()
-
-will wait for the command to exit then return the entirety of Out's contents.
-
-Wait uses eventually under the hood and accepts the same timeout/polling intervals that eventually does.
-*/
-func (s *Session) Wait(timeout ...interface{}) *Session {
-       EventuallyWithOffset(1, s, timeout...).Should(Exit())
-       return s
-}
-
-/*
-Kill sends the running command a SIGKILL signal.  It does not wait for the process to exit.
-
-If the command has already exited, Kill returns silently.
-
-The session is returned to enable chaining.
-*/
-func (s *Session) Kill() *Session {
-       if s.ExitCode() != -1 {
-               return s
-       }
-       s.Command.Process.Kill()
-       return s
-}
-
-/*
-Interrupt sends the running command a SIGINT signal.  It does not wait for the process to exit.
-
-If the command has already exited, Interrupt returns silently.
-
-The session is returned to enable chaining.
-*/
-func (s *Session) Interrupt() *Session {
-       return s.Signal(syscall.SIGINT)
-}
-
-/*
-Terminate sends the running command a SIGTERM signal.  It does not wait for the process to exit.
-
-If the command has already exited, Terminate returns silently.
-
-The session is returned to enable chaining.
-*/
-func (s *Session) Terminate() *Session {
-       return s.Signal(syscall.SIGTERM)
-}
-
-/*
-Signal sends the running command the passed in signal.  It does not wait for the process to exit.
-
-If the command has already exited, Signal returns silently.
-
-The session is returned to enable chaining.
-*/
-func (s *Session) Signal(signal os.Signal) *Session {
-       if s.ExitCode() != -1 {
-               return s
-       }
-       s.Command.Process.Signal(signal)
-       return s
-}
-
-func (s *Session) monitorForExit(exited chan<- struct{}) {
-       err := s.Command.Wait()
-       s.lock.Lock()
-       s.Out.Close()
-       s.Err.Close()
-       status := s.Command.ProcessState.Sys().(syscall.WaitStatus)
-       if status.Signaled() {
-               s.exitCode = 128 + int(status.Signal())
-       } else {
-               exitStatus := status.ExitStatus()
-               if exitStatus == -1 && err != nil {
-                       s.exitCode = INVALID_EXIT_CODE
-               }
-               s.exitCode = exitStatus
-       }
-       s.lock.Unlock()
-
-       close(exited)
-}
-
-var trackedSessions = []*Session{}
-var trackedSessionsMutex = &sync.Mutex{}
-
-/*
-Kill sends a SIGKILL signal to all the processes started by Run, and waits for them to exit.
-The timeout specified is applied to each process killed.
-
-If any of the processes already exited, KillAndWait returns silently.
-*/
-func KillAndWait(timeout ...interface{}) {
-       trackedSessionsMutex.Lock()
-       defer trackedSessionsMutex.Unlock()
-       for _, session := range trackedSessions {
-               session.Kill().Wait(timeout...)
-       }
-       trackedSessions = []*Session{}
-}
-
-/*
-Kill sends a SIGTERM signal to all the processes started by Run, and waits for them to exit.
-The timeout specified is applied to each process killed.
-
-If any of the processes already exited, TerminateAndWait returns silently.
-*/
-func TerminateAndWait(timeout ...interface{}) {
-       trackedSessionsMutex.Lock()
-       defer trackedSessionsMutex.Unlock()
-       for _, session := range trackedSessions {
-               session.Terminate().Wait(timeout...)
-       }
-}
-
-/*
-Kill sends a SIGKILL signal to all the processes started by Run.
-It does not wait for the processes to exit.
-
-If any of the processes already exited, Kill returns silently.
-*/
-func Kill() {
-       trackedSessionsMutex.Lock()
-       defer trackedSessionsMutex.Unlock()
-       for _, session := range trackedSessions {
-               session.Kill()
-       }
-}
-
-/*
-Terminate sends a SIGTERM signal to all the processes started by Run.
-It does not wait for the processes to exit.
-
-If any of the processes already exited, Terminate returns silently.
-*/
-func Terminate() {
-       trackedSessionsMutex.Lock()
-       defer trackedSessionsMutex.Unlock()
-       for _, session := range trackedSessions {
-               session.Terminate()
-       }
-}
-
-/*
-Signal sends the passed in signal to all the processes started by Run.
-It does not wait for the processes to exit.
-
-If any of the processes already exited, Signal returns silently.
-*/
-func Signal(signal os.Signal) {
-       trackedSessionsMutex.Lock()
-       defer trackedSessionsMutex.Unlock()
-       for _, session := range trackedSessions {
-               session.Signal(signal)
-       }
-}
-
-/*
-Interrupt sends the SIGINT signal to all the processes started by Run.
-It does not wait for the processes to exit.
-
-If any of the processes already exited, Interrupt returns silently.
-*/
-func Interrupt() {
-       trackedSessionsMutex.Lock()
-       defer trackedSessionsMutex.Unlock()
-       for _, session := range trackedSessions {
-               session.Interrupt()
-       }
-}
diff --git a/vendor/github.com/onsi/gomega/gexec/session_test.go b/vendor/github.com/onsi/gomega/gexec/session_test.go
deleted file mode 100644 (file)
index b7841a0..0000000
+++ /dev/null
@@ -1,351 +0,0 @@
-package gexec_test
-
-import (
-       "os/exec"
-       "syscall"
-       "time"
-
-       . "github.com/onsi/gomega/gbytes"
-       . "github.com/onsi/gomega/gexec"
-
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-)
-
-var _ = Describe("Session", func() {
-       var command *exec.Cmd
-       var session *Session
-
-       var outWriter, errWriter *Buffer
-
-       BeforeEach(func() {
-               outWriter = nil
-               errWriter = nil
-       })
-
-       JustBeforeEach(func() {
-               command = exec.Command(fireflyPath)
-               var err error
-               session, err = Start(command, outWriter, errWriter)
-               Ω(err).ShouldNot(HaveOccurred())
-       })
-
-       Context("running a command", func() {
-               It("should start the process", func() {
-                       Ω(command.Process).ShouldNot(BeNil())
-               })
-
-               It("should wrap the process's stdout and stderr with gbytes buffers", func(done Done) {
-                       Eventually(session.Out).Should(Say("We've done the impossible, and that makes us mighty"))
-                       Eventually(session.Err).Should(Say("Ah, curse your sudden but inevitable betrayal!"))
-                       defer session.Out.CancelDetects()
-
-                       select {
-                       case <-session.Out.Detect("Can we maybe vote on the whole murdering people issue"):
-                               Eventually(session).Should(Exit(0))
-                       case <-session.Out.Detect("I swear by my pretty floral bonnet, I will end you."):
-                               Eventually(session).Should(Exit(1))
-                       case <-session.Out.Detect("My work's illegal, but at least it's honest."):
-                               Eventually(session).Should(Exit(2))
-                       }
-
-                       close(done)
-               })
-
-               It("should satisfy the gbytes.BufferProvider interface, passing Stdout", func() {
-                       Eventually(session).Should(Say("We've done the impossible, and that makes us mighty"))
-                       Eventually(session).Should(Exit())
-               })
-       })
-
-       Describe("providing the exit code", func() {
-               It("should provide the app's exit code", func() {
-                       Ω(session.ExitCode()).Should(Equal(-1))
-
-                       Eventually(session).Should(Exit())
-                       Ω(session.ExitCode()).Should(BeNumerically(">=", 0))
-                       Ω(session.ExitCode()).Should(BeNumerically("<", 3))
-               })
-       })
-
-       Describe("wait", func() {
-               It("should wait till the command exits", func() {
-                       Ω(session.ExitCode()).Should(Equal(-1))
-                       Ω(session.Wait().ExitCode()).Should(BeNumerically(">=", 0))
-                       Ω(session.Wait().ExitCode()).Should(BeNumerically("<", 3))
-               })
-       })
-
-       Describe("exited", func() {
-               It("should close when the command exits", func() {
-                       Eventually(session.Exited).Should(BeClosed())
-                       Ω(session.ExitCode()).ShouldNot(Equal(-1))
-               })
-       })
-
-       Describe("kill", func() {
-               It("should kill the command and don't wait for it to exit", func() {
-                       session, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
-                       Ω(err).ShouldNot(HaveOccurred())
-
-                       session.Kill()
-                       Ω(session).ShouldNot(Exit(), "Should not exit immediately...")
-                       Eventually(session).Should(Exit(128 + 9))
-               })
-       })
-
-       Describe("interrupt", func() {
-               It("should interrupt the command", func() {
-                       session, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
-                       Ω(err).ShouldNot(HaveOccurred())
-
-                       session.Interrupt()
-                       Ω(session).ShouldNot(Exit(), "Should not exit immediately...")
-                       Eventually(session).Should(Exit(128 + 2))
-               })
-       })
-
-       Describe("terminate", func() {
-               It("should terminate the command", func() {
-                       session, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
-                       Ω(err).ShouldNot(HaveOccurred())
-
-                       session.Terminate()
-                       Ω(session).ShouldNot(Exit(), "Should not exit immediately...")
-                       Eventually(session).Should(Exit(128 + 15))
-               })
-       })
-
-       Describe("signal", func() {
-               It("should send the signal to the command", func() {
-                       session, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
-                       Ω(err).ShouldNot(HaveOccurred())
-
-                       session.Signal(syscall.SIGABRT)
-                       Ω(session).ShouldNot(Exit(), "Should not exit immediately...")
-                       Eventually(session).Should(Exit(128 + 6))
-               })
-       })
-
-       Context("tracking sessions", func() {
-               BeforeEach(func() {
-                       KillAndWait()
-               })
-
-               Describe("kill", func() {
-                       It("should kill all the started sessions", func() {
-                               session1, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
-                               Ω(err).ShouldNot(HaveOccurred())
-
-                               session2, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
-                               Ω(err).ShouldNot(HaveOccurred())
-
-                               session3, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
-                               Ω(err).ShouldNot(HaveOccurred())
-
-                               Kill()
-
-                               Eventually(session1).Should(Exit(128 + 9))
-                               Eventually(session2).Should(Exit(128 + 9))
-                               Eventually(session3).Should(Exit(128 + 9))
-                       })
-
-                       It("should not wait for exit", func() {
-                               session1, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
-                               Ω(err).ShouldNot(HaveOccurred())
-
-                               Kill()
-                               Ω(session1).ShouldNot(Exit(), "Should not exit immediately...")
-
-                               Eventually(session1).Should(Exit(128 + 9))
-                       })
-
-                       It("should not track unstarted sessions", func() {
-                               _, err := Start(exec.Command("does not exist", "10000000"), GinkgoWriter, GinkgoWriter)
-                               Ω(err).Should(HaveOccurred())
-
-                               session2, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
-                               Ω(err).ShouldNot(HaveOccurred())
-
-                               session3, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
-                               Ω(err).ShouldNot(HaveOccurred())
-
-                               Kill()
-
-                               Eventually(session2).Should(Exit(128 + 9))
-                               Eventually(session3).Should(Exit(128 + 9))
-                       })
-
-               })
-
-               Describe("killAndWait", func() {
-                       It("should kill all the started sessions and wait for them to finish", func() {
-                               session1, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
-                               Ω(err).ShouldNot(HaveOccurred())
-
-                               session2, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
-                               Ω(err).ShouldNot(HaveOccurred())
-
-                               session3, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
-                               Ω(err).ShouldNot(HaveOccurred())
-
-                               KillAndWait()
-                               Ω(session1).Should(Exit(128+9), "Should have exited")
-                               Ω(session2).Should(Exit(128+9), "Should have exited")
-                               Ω(session3).Should(Exit(128+9), "Should have exited")
-                       })
-               })
-
-               Describe("terminate", func() {
-                       It("should terminate all the started sessions", func() {
-                               session1, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
-                               Ω(err).ShouldNot(HaveOccurred())
-
-                               session2, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
-                               Ω(err).ShouldNot(HaveOccurred())
-
-                               session3, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
-                               Ω(err).ShouldNot(HaveOccurred())
-
-                               Terminate()
-
-                               Eventually(session1).Should(Exit(128 + 15))
-                               Eventually(session2).Should(Exit(128 + 15))
-                               Eventually(session3).Should(Exit(128 + 15))
-                       })
-
-                       It("should not wait for exit", func() {
-                               session1, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
-                               Ω(err).ShouldNot(HaveOccurred())
-
-                               Terminate()
-
-                               Ω(session1).ShouldNot(Exit(), "Should not exit immediately...")
-                       })
-               })
-
-               Describe("terminateAndWait", func() {
-                       It("should terminate all the started sessions, and wait for them to exit", func() {
-                               session1, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
-                               Ω(err).ShouldNot(HaveOccurred())
-
-                               session2, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
-                               Ω(err).ShouldNot(HaveOccurred())
-
-                               session3, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
-                               Ω(err).ShouldNot(HaveOccurred())
-
-                               TerminateAndWait()
-
-                               Ω(session1).Should(Exit(128+15), "Should have exited")
-                               Ω(session2).Should(Exit(128+15), "Should have exited")
-                               Ω(session3).Should(Exit(128+15), "Should have exited")
-                       })
-               })
-
-               Describe("signal", func() {
-                       It("should signal all the started sessions", func() {
-                               session1, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
-                               Ω(err).ShouldNot(HaveOccurred())
-
-                               session2, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
-                               Ω(err).ShouldNot(HaveOccurred())
-
-                               session3, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
-                               Ω(err).ShouldNot(HaveOccurred())
-
-                               Signal(syscall.SIGABRT)
-
-                               Eventually(session1).Should(Exit(128 + 6))
-                               Eventually(session2).Should(Exit(128 + 6))
-                               Eventually(session3).Should(Exit(128 + 6))
-                       })
-
-                       It("should not wait", func() {
-                               session1, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
-                               Ω(err).ShouldNot(HaveOccurred())
-
-                               Signal(syscall.SIGABRT)
-
-                               Ω(session1).ShouldNot(Exit(), "Should not exit immediately...")
-                       })
-               })
-
-               Describe("interrupt", func() {
-                       It("should interrupt all the started sessions, and not wait", func() {
-                               session1, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
-                               Ω(err).ShouldNot(HaveOccurred())
-
-                               session2, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
-                               Ω(err).ShouldNot(HaveOccurred())
-
-                               session3, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
-                               Ω(err).ShouldNot(HaveOccurred())
-
-                               Interrupt()
-
-                               Eventually(session1).Should(Exit(128 + 2))
-                               Eventually(session2).Should(Exit(128 + 2))
-                               Eventually(session3).Should(Exit(128 + 2))
-                       })
-
-                       It("should not wait", func() {
-                               session1, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
-                               Ω(err).ShouldNot(HaveOccurred())
-
-                               Interrupt()
-
-                               Ω(session1).ShouldNot(Exit(), "Should not exit immediately...")
-                       })
-               })
-       })
-
-       Context("when the command exits", func() {
-               It("should close the buffers", func() {
-                       Eventually(session).Should(Exit())
-
-                       Ω(session.Out.Closed()).Should(BeTrue())
-                       Ω(session.Err.Closed()).Should(BeTrue())
-
-                       Ω(session.Out).Should(Say("We've done the impossible, and that makes us mighty"))
-               })
-
-               var So = It
-
-               So("this means that eventually should short circuit", func() {
-                       t := time.Now()
-                       failures := InterceptGomegaFailures(func() {
-                               Eventually(session).Should(Say("blah blah blah blah blah"))
-                       })
-                       Ω(time.Since(t)).Should(BeNumerically("<=", 500*time.Millisecond))
-                       Ω(failures).Should(HaveLen(1))
-               })
-       })
-
-       Context("when wrapping out and err", func() {
-               BeforeEach(func() {
-                       outWriter = NewBuffer()
-                       errWriter = NewBuffer()
-               })
-
-               It("should route to both the provided writers and the gbytes buffers", func() {
-                       Eventually(session.Out).Should(Say("We've done the impossible, and that makes us mighty"))
-                       Eventually(session.Err).Should(Say("Ah, curse your sudden but inevitable betrayal!"))
-
-                       Ω(outWriter.Contents()).Should(ContainSubstring("We've done the impossible, and that makes us mighty"))
-                       Ω(errWriter.Contents()).Should(ContainSubstring("Ah, curse your sudden but inevitable betrayal!"))
-
-                       Eventually(session).Should(Exit())
-
-                       Ω(outWriter.Contents()).Should(Equal(session.Out.Contents()))
-                       Ω(errWriter.Contents()).Should(Equal(session.Err.Contents()))
-               })
-       })
-
-       Describe("when the command fails to start", func() {
-               It("should return an error", func() {
-                       _, err := Start(exec.Command("agklsjdfas"), nil, nil)
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/ghttp/handlers.go b/vendor/github.com/onsi/gomega/ghttp/handlers.go
deleted file mode 100644 (file)
index 63ff691..0000000
+++ /dev/null
@@ -1,313 +0,0 @@
-package ghttp
-
-import (
-       "encoding/base64"
-       "encoding/json"
-       "fmt"
-       "io/ioutil"
-       "net/http"
-       "net/url"
-       "reflect"
-
-       "github.com/golang/protobuf/proto"
-       . "github.com/onsi/gomega"
-       "github.com/onsi/gomega/types"
-)
-
-//CombineHandler takes variadic list of handlers and produces one handler
-//that calls each handler in order.
-func CombineHandlers(handlers ...http.HandlerFunc) http.HandlerFunc {
-       return func(w http.ResponseWriter, req *http.Request) {
-               for _, handler := range handlers {
-                       handler(w, req)
-               }
-       }
-}
-
-//VerifyRequest returns a handler that verifies that a request uses the specified method to connect to the specified path
-//You may also pass in an optional rawQuery string which is tested against the request's `req.URL.RawQuery`
-//
-//For path, you may pass in a string, in which case strict equality will be applied
-//Alternatively you can pass in a matcher (ContainSubstring("/foo") and MatchRegexp("/foo/[a-f0-9]+") for example)
-func VerifyRequest(method string, path interface{}, rawQuery ...string) http.HandlerFunc {
-       return func(w http.ResponseWriter, req *http.Request) {
-               Ω(req.Method).Should(Equal(method), "Method mismatch")
-               switch p := path.(type) {
-               case types.GomegaMatcher:
-                       Ω(req.URL.Path).Should(p, "Path mismatch")
-               default:
-                       Ω(req.URL.Path).Should(Equal(path), "Path mismatch")
-               }
-               if len(rawQuery) > 0 {
-                       values, err := url.ParseQuery(rawQuery[0])
-                       Ω(err).ShouldNot(HaveOccurred(), "Expected RawQuery is malformed")
-
-                       Ω(req.URL.Query()).Should(Equal(values), "RawQuery mismatch")
-               }
-       }
-}
-
-//VerifyContentType returns a handler that verifies that a request has a Content-Type header set to the
-//specified value
-func VerifyContentType(contentType string) http.HandlerFunc {
-       return func(w http.ResponseWriter, req *http.Request) {
-               Ω(req.Header.Get("Content-Type")).Should(Equal(contentType))
-       }
-}
-
-//VerifyBasicAuth returns a handler that verifies the request contains a BasicAuth Authorization header
-//matching the passed in username and password
-func VerifyBasicAuth(username string, password string) http.HandlerFunc {
-       return func(w http.ResponseWriter, req *http.Request) {
-               auth := req.Header.Get("Authorization")
-               Ω(auth).ShouldNot(Equal(""), "Authorization header must be specified")
-
-               decoded, err := base64.StdEncoding.DecodeString(auth[6:])
-               Ω(err).ShouldNot(HaveOccurred())
-
-               Ω(string(decoded)).Should(Equal(fmt.Sprintf("%s:%s", username, password)), "Authorization mismatch")
-       }
-}
-
-//VerifyHeader returns a handler that verifies the request contains the passed in headers.
-//The passed in header keys are first canonicalized via http.CanonicalHeaderKey.
-//
-//The request must contain *all* the passed in headers, but it is allowed to have additional headers
-//beyond the passed in set.
-func VerifyHeader(header http.Header) http.HandlerFunc {
-       return func(w http.ResponseWriter, req *http.Request) {
-               for key, values := range header {
-                       key = http.CanonicalHeaderKey(key)
-                       Ω(req.Header[key]).Should(Equal(values), "Header mismatch for key: %s", key)
-               }
-       }
-}
-
-//VerifyHeaderKV returns a handler that verifies the request contains a header matching the passed in key and values
-//(recall that a `http.Header` is a mapping from string (key) to []string (values))
-//It is a convenience wrapper around `VerifyHeader` that allows you to avoid having to create an `http.Header` object.
-func VerifyHeaderKV(key string, values ...string) http.HandlerFunc {
-       return VerifyHeader(http.Header{key: values})
-}
-
-//VerifyBody returns a handler that verifies that the body of the request matches the passed in byte array.
-//It does this using Equal().
-func VerifyBody(expectedBody []byte) http.HandlerFunc {
-       return CombineHandlers(
-               func(w http.ResponseWriter, req *http.Request) {
-                       body, err := ioutil.ReadAll(req.Body)
-                       req.Body.Close()
-                       Ω(err).ShouldNot(HaveOccurred())
-                       Ω(body).Should(Equal(expectedBody), "Body Mismatch")
-               },
-       )
-}
-
-//VerifyJSON returns a handler that verifies that the body of the request is a valid JSON representation
-//matching the passed in JSON string.  It does this using Gomega's MatchJSON method
-//
-//VerifyJSON also verifies that the request's content type is application/json
-func VerifyJSON(expectedJSON string) http.HandlerFunc {
-       return CombineHandlers(
-               VerifyContentType("application/json"),
-               func(w http.ResponseWriter, req *http.Request) {
-                       body, err := ioutil.ReadAll(req.Body)
-                       req.Body.Close()
-                       Ω(err).ShouldNot(HaveOccurred())
-                       Ω(body).Should(MatchJSON(expectedJSON), "JSON Mismatch")
-               },
-       )
-}
-
-//VerifyJSONRepresenting is similar to VerifyJSON.  Instead of taking a JSON string, however, it
-//takes an arbitrary JSON-encodable object and verifies that the requests's body is a JSON representation
-//that matches the object
-func VerifyJSONRepresenting(object interface{}) http.HandlerFunc {
-       data, err := json.Marshal(object)
-       Ω(err).ShouldNot(HaveOccurred())
-       return CombineHandlers(
-               VerifyContentType("application/json"),
-               VerifyJSON(string(data)),
-       )
-}
-
-//VerifyForm returns a handler that verifies a request contains the specified form values.
-//
-//The request must contain *all* of the specified values, but it is allowed to have additional
-//form values beyond the passed in set.
-func VerifyForm(values url.Values) http.HandlerFunc {
-       return func(w http.ResponseWriter, r *http.Request) {
-               err := r.ParseForm()
-               Ω(err).ShouldNot(HaveOccurred())
-               for key, vals := range values {
-                       Ω(r.Form[key]).Should(Equal(vals), "Form mismatch for key: %s", key)
-               }
-       }
-}
-
-//VerifyFormKV returns a handler that verifies a request contains a form key with the specified values.
-//
-//It is a convenience wrapper around `VerifyForm` that lets you avoid having to create a `url.Values` object.
-func VerifyFormKV(key string, values ...string) http.HandlerFunc {
-       return VerifyForm(url.Values{key: values})
-}
-
-//VerifyProtoRepresenting returns a handler that verifies that the body of the request is a valid protobuf
-//representation of the passed message.
-//
-//VerifyProtoRepresenting also verifies that the request's content type is application/x-protobuf
-func VerifyProtoRepresenting(expected proto.Message) http.HandlerFunc {
-       return CombineHandlers(
-               VerifyContentType("application/x-protobuf"),
-               func(w http.ResponseWriter, req *http.Request) {
-                       body, err := ioutil.ReadAll(req.Body)
-                       Ω(err).ShouldNot(HaveOccurred())
-                       req.Body.Close()
-
-                       expectedType := reflect.TypeOf(expected)
-                       actualValuePtr := reflect.New(expectedType.Elem())
-
-                       actual, ok := actualValuePtr.Interface().(proto.Message)
-                       Ω(ok).Should(BeTrue(), "Message value is not a proto.Message")
-
-                       err = proto.Unmarshal(body, actual)
-                       Ω(err).ShouldNot(HaveOccurred(), "Failed to unmarshal protobuf")
-
-                       Ω(actual).Should(Equal(expected), "ProtoBuf Mismatch")
-               },
-       )
-}
-
-func copyHeader(src http.Header, dst http.Header) {
-       for key, value := range src {
-               dst[key] = value
-       }
-}
-
-/*
-RespondWith returns a handler that responds to a request with the specified status code and body
-
-Body may be a string or []byte
-
-Also, RespondWith can be given an optional http.Header.  The headers defined therein will be added to the response headers.
-*/
-func RespondWith(statusCode int, body interface{}, optionalHeader ...http.Header) http.HandlerFunc {
-       return func(w http.ResponseWriter, req *http.Request) {
-               if len(optionalHeader) == 1 {
-                       copyHeader(optionalHeader[0], w.Header())
-               }
-               w.WriteHeader(statusCode)
-               switch x := body.(type) {
-               case string:
-                       w.Write([]byte(x))
-               case []byte:
-                       w.Write(x)
-               default:
-                       Ω(body).Should(BeNil(), "Invalid type for body.  Should be string or []byte.")
-               }
-       }
-}
-
-/*
-RespondWithPtr returns a handler that responds to a request with the specified status code and body
-
-Unlike RespondWith, you pass RepondWithPtr a pointer to the status code and body allowing different tests
-to share the same setup but specify different status codes and bodies.
-
-Also, RespondWithPtr can be given an optional http.Header.  The headers defined therein will be added to the response headers.
-Since the http.Header can be mutated after the fact you don't need to pass in a pointer.
-*/
-func RespondWithPtr(statusCode *int, body interface{}, optionalHeader ...http.Header) http.HandlerFunc {
-       return func(w http.ResponseWriter, req *http.Request) {
-               if len(optionalHeader) == 1 {
-                       copyHeader(optionalHeader[0], w.Header())
-               }
-               w.WriteHeader(*statusCode)
-               if body != nil {
-                       switch x := (body).(type) {
-                       case *string:
-                               w.Write([]byte(*x))
-                       case *[]byte:
-                               w.Write(*x)
-                       default:
-                               Ω(body).Should(BeNil(), "Invalid type for body.  Should be string or []byte.")
-                       }
-               }
-       }
-}
-
-/*
-RespondWithJSONEncoded returns a handler that responds to a request with the specified status code and a body
-containing the JSON-encoding of the passed in object
-
-Also, RespondWithJSONEncoded can be given an optional http.Header.  The headers defined therein will be added to the response headers.
-*/
-func RespondWithJSONEncoded(statusCode int, object interface{}, optionalHeader ...http.Header) http.HandlerFunc {
-       data, err := json.Marshal(object)
-       Ω(err).ShouldNot(HaveOccurred())
-
-       var headers http.Header
-       if len(optionalHeader) == 1 {
-               headers = optionalHeader[0]
-       } else {
-               headers = make(http.Header)
-       }
-       if _, found := headers["Content-Type"]; !found {
-               headers["Content-Type"] = []string{"application/json"}
-       }
-       return RespondWith(statusCode, string(data), headers)
-}
-
-/*
-RespondWithJSONEncodedPtr behaves like RespondWithJSONEncoded but takes a pointer
-to a status code and object.
-
-This allows different tests to share the same setup but specify different status codes and JSON-encoded
-objects.
-
-Also, RespondWithJSONEncodedPtr can be given an optional http.Header.  The headers defined therein will be added to the response headers.
-Since the http.Header can be mutated after the fact you don't need to pass in a pointer.
-*/
-func RespondWithJSONEncodedPtr(statusCode *int, object interface{}, optionalHeader ...http.Header) http.HandlerFunc {
-       return func(w http.ResponseWriter, req *http.Request) {
-               data, err := json.Marshal(object)
-               Ω(err).ShouldNot(HaveOccurred())
-               var headers http.Header
-               if len(optionalHeader) == 1 {
-                       headers = optionalHeader[0]
-               } else {
-                       headers = make(http.Header)
-               }
-               if _, found := headers["Content-Type"]; !found {
-                       headers["Content-Type"] = []string{"application/json"}
-               }
-               copyHeader(headers, w.Header())
-               w.WriteHeader(*statusCode)
-               w.Write(data)
-       }
-}
-
-//RespondWithProto returns a handler that responds to a request with the specified status code and a body
-//containing the protobuf serialization of the provided message.
-//
-//Also, RespondWithProto can be given an optional http.Header.  The headers defined therein will be added to the response headers.
-func RespondWithProto(statusCode int, message proto.Message, optionalHeader ...http.Header) http.HandlerFunc {
-       return func(w http.ResponseWriter, req *http.Request) {
-               data, err := proto.Marshal(message)
-               Ω(err).ShouldNot(HaveOccurred())
-
-               var headers http.Header
-               if len(optionalHeader) == 1 {
-                       headers = optionalHeader[0]
-               } else {
-                       headers = make(http.Header)
-               }
-               if _, found := headers["Content-Type"]; !found {
-                       headers["Content-Type"] = []string{"application/x-protobuf"}
-               }
-               copyHeader(headers, w.Header())
-
-               w.WriteHeader(statusCode)
-               w.Write(data)
-       }
-}
diff --git a/vendor/github.com/onsi/gomega/ghttp/protobuf/protobuf.go b/vendor/github.com/onsi/gomega/ghttp/protobuf/protobuf.go
deleted file mode 100644 (file)
index b2972bc..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-package protobuf
-
-//go:generate protoc --go_out=. simple_message.proto
diff --git a/vendor/github.com/onsi/gomega/ghttp/protobuf/simple_message.pb.go b/vendor/github.com/onsi/gomega/ghttp/protobuf/simple_message.pb.go
deleted file mode 100644 (file)
index c55a484..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-// Code generated by protoc-gen-go.
-// source: simple_message.proto
-// DO NOT EDIT!
-
-/*
-Package protobuf is a generated protocol buffer package.
-
-It is generated from these files:
-       simple_message.proto
-
-It has these top-level messages:
-       SimpleMessage
-*/
-package protobuf
-
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-type SimpleMessage struct {
-       Description      *string `protobuf:"bytes,1,req,name=description" json:"description,omitempty"`
-       Id               *int32  `protobuf:"varint,2,req,name=id" json:"id,omitempty"`
-       Metadata         *string `protobuf:"bytes,3,opt,name=metadata" json:"metadata,omitempty"`
-       XXX_unrecognized []byte  `json:"-"`
-}
-
-func (m *SimpleMessage) Reset()         { *m = SimpleMessage{} }
-func (m *SimpleMessage) String() string { return proto.CompactTextString(m) }
-func (*SimpleMessage) ProtoMessage()    {}
-
-func (m *SimpleMessage) GetDescription() string {
-       if m != nil && m.Description != nil {
-               return *m.Description
-       }
-       return ""
-}
-
-func (m *SimpleMessage) GetId() int32 {
-       if m != nil && m.Id != nil {
-               return *m.Id
-       }
-       return 0
-}
-
-func (m *SimpleMessage) GetMetadata() string {
-       if m != nil && m.Metadata != nil {
-               return *m.Metadata
-       }
-       return ""
-}
diff --git a/vendor/github.com/onsi/gomega/ghttp/protobuf/simple_message.proto b/vendor/github.com/onsi/gomega/ghttp/protobuf/simple_message.proto
deleted file mode 100644 (file)
index 35b7145..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-syntax = "proto2";
-
-package protobuf;
-
-message SimpleMessage {
-    required string description = 1;
-    required int32 id = 2;
-    optional string metadata = 3;
-}
diff --git a/vendor/github.com/onsi/gomega/ghttp/test_server.go b/vendor/github.com/onsi/gomega/ghttp/test_server.go
deleted file mode 100644 (file)
index 40d92de..0000000
+++ /dev/null
@@ -1,381 +0,0 @@
-/*
-Package ghttp supports testing HTTP clients by providing a test server (simply a thin wrapper around httptest's server) that supports
-registering multiple handlers.  Incoming requests are not routed between the different handlers
-- rather it is merely the order of the handlers that matters.  The first request is handled by the first
-registered handler, the second request by the second handler, etc.
-
-The intent here is to have each handler *verify* that the incoming request is valid.  To accomplish, ghttp
-also provides a collection of bite-size handlers that each perform one aspect of request verification.  These can
-be composed together and registered with a ghttp server.  The result is an expressive language for describing
-the requests generated by the client under test.
-
-Here's a simple example, note that the server handler is only defined in one BeforeEach and then modified, as required, by the nested BeforeEaches.
-A more comprehensive example is available at https://onsi.github.io/gomega/#_testing_http_clients
-
-       var _ = Describe("A Sprockets Client", func() {
-               var server *ghttp.Server
-               var client *SprocketClient
-               BeforeEach(func() {
-                       server = ghttp.NewServer()
-                       client = NewSprocketClient(server.URL(), "skywalker", "tk427")
-               })
-
-               AfterEach(func() {
-                       server.Close()
-               })
-
-               Describe("fetching sprockets", func() {
-                       var statusCode int
-                       var sprockets []Sprocket
-                       BeforeEach(func() {
-                               statusCode = http.StatusOK
-                               sprockets = []Sprocket{}
-                               server.AppendHandlers(ghttp.CombineHandlers(
-                                       ghttp.VerifyRequest("GET", "/sprockets"),
-                                       ghttp.VerifyBasicAuth("skywalker", "tk427"),
-                                       ghttp.RespondWithJSONEncodedPtr(&statusCode, &sprockets),
-                               ))
-                       })
-
-                       Context("when requesting all sprockets", func() {
-                               Context("when the response is succesful", func() {
-                                       BeforeEach(func() {
-                                               sprockets = []Sprocket{
-                                                       NewSprocket("Alfalfa"),
-                                                       NewSprocket("Banana"),
-                                               }
-                                       })
-
-                                       It("should return the returned sprockets", func() {
-                                               Ω(client.Sprockets()).Should(Equal(sprockets))
-                                       })
-                               })
-
-                               Context("when the response is missing", func() {
-                                       BeforeEach(func() {
-                                               statusCode = http.StatusNotFound
-                                       })
-
-                                       It("should return an empty list of sprockets", func() {
-                                               Ω(client.Sprockets()).Should(BeEmpty())
-                                       })
-                               })
-
-                               Context("when the response fails to authenticate", func() {
-                                       BeforeEach(func() {
-                                               statusCode = http.StatusUnauthorized
-                                       })
-
-                                       It("should return an AuthenticationError error", func() {
-                                               sprockets, err := client.Sprockets()
-                                               Ω(sprockets).Should(BeEmpty())
-                                               Ω(err).Should(MatchError(AuthenticationError))
-                                       })
-                               })
-
-                               Context("when the response is a server failure", func() {
-                                       BeforeEach(func() {
-                                               statusCode = http.StatusInternalServerError
-                                       })
-
-                                       It("should return an InternalError error", func() {
-                                               sprockets, err := client.Sprockets()
-                                               Ω(sprockets).Should(BeEmpty())
-                                               Ω(err).Should(MatchError(InternalError))
-                                       })
-                               })
-                       })
-
-                       Context("when requesting some sprockets", func() {
-                               BeforeEach(func() {
-                                       sprockets = []Sprocket{
-                                               NewSprocket("Alfalfa"),
-                                               NewSprocket("Banana"),
-                                       }
-
-                                       server.WrapHandler(0, ghttp.VerifyRequest("GET", "/sprockets", "filter=FOOD"))
-                               })
-
-                               It("should make the request with a filter", func() {
-                                       Ω(client.Sprockets("food")).Should(Equal(sprockets))
-                               })
-                       })
-               })
-       })
-*/
-package ghttp
-
-import (
-       "fmt"
-       "io"
-       "io/ioutil"
-       "net/http"
-       "net/http/httptest"
-       "reflect"
-       "regexp"
-       "strings"
-       "sync"
-
-       . "github.com/onsi/gomega"
-)
-
-func new() *Server {
-       return &Server{
-               AllowUnhandledRequests:     false,
-               UnhandledRequestStatusCode: http.StatusInternalServerError,
-               writeLock:                  &sync.Mutex{},
-       }
-}
-
-type routedHandler struct {
-       method     string
-       pathRegexp *regexp.Regexp
-       path       string
-       handler    http.HandlerFunc
-}
-
-// NewServer returns a new `*ghttp.Server` that wraps an `httptest` server.  The server is started automatically.
-func NewServer() *Server {
-       s := new()
-       s.HTTPTestServer = httptest.NewServer(s)
-       return s
-}
-
-// NewUnstartedServer return a new, unstarted, `*ghttp.Server`.  Useful for specifying a custom listener on `server.HTTPTestServer`.
-func NewUnstartedServer() *Server {
-       s := new()
-       s.HTTPTestServer = httptest.NewUnstartedServer(s)
-       return s
-}
-
-// NewTLSServer returns a new `*ghttp.Server` that wraps an `httptest` TLS server.  The server is started automatically.
-func NewTLSServer() *Server {
-       s := new()
-       s.HTTPTestServer = httptest.NewTLSServer(s)
-       return s
-}
-
-type Server struct {
-       //The underlying httptest server
-       HTTPTestServer *httptest.Server
-
-       //Defaults to false.  If set to true, the Server will allow more requests than there are registered handlers.
-       AllowUnhandledRequests bool
-
-       //The status code returned when receiving an unhandled request.
-       //Defaults to http.StatusInternalServerError.
-       //Only applies if AllowUnhandledRequests is true
-       UnhandledRequestStatusCode int
-
-       //If provided, ghttp will log about each request received to the provided io.Writer
-       //Defaults to nil
-       //If you're using Ginkgo, set this to GinkgoWriter to get improved output during failures
-       Writer io.Writer
-
-       receivedRequests []*http.Request
-       requestHandlers  []http.HandlerFunc
-       routedHandlers   []routedHandler
-
-       writeLock *sync.Mutex
-       calls     int
-}
-
-//Start() starts an unstarted ghttp server.  It is a catastrophic error to call Start more than once (thanks, httptest).
-func (s *Server) Start() {
-       s.HTTPTestServer.Start()
-}
-
-//URL() returns a url that will hit the server
-func (s *Server) URL() string {
-       return s.HTTPTestServer.URL
-}
-
-//Addr() returns the address on which the server is listening.
-func (s *Server) Addr() string {
-       return s.HTTPTestServer.Listener.Addr().String()
-}
-
-//Close() should be called at the end of each test.  It spins down and cleans up the test server.
-func (s *Server) Close() {
-       s.writeLock.Lock()
-       server := s.HTTPTestServer
-       s.HTTPTestServer = nil
-       s.writeLock.Unlock()
-
-       if server != nil {
-               server.Close()
-       }
-}
-
-//ServeHTTP() makes Server an http.Handler
-//When the server receives a request it handles the request in the following order:
-//
-//1. If the request matches a handler registered with RouteToHandler, that handler is called.
-//2. Otherwise, if there are handlers registered via AppendHandlers, those handlers are called in order.
-//3. If all registered handlers have been called then:
-//   a) If AllowUnhandledRequests is true, the request will be handled with response code of UnhandledRequestStatusCode
-//   b) If AllowUnhandledRequests is false, the request will not be handled and the current test will be marked as failed.
-func (s *Server) ServeHTTP(w http.ResponseWriter, req *http.Request) {
-       s.writeLock.Lock()
-       defer func() {
-               e := recover()
-               if e != nil {
-                       w.WriteHeader(http.StatusInternalServerError)
-               }
-
-               //If the handler panics GHTTP will silently succeed.  This is bad™.
-               //To catch this case we need to fail the test if the handler has panicked.
-               //However, if the handler is panicking because Ginkgo's causing it to panic (i.e. an assertion failed)
-               //then we shouldn't double-report the error as this will confuse people.
-
-               //So: step 1, if this is a Ginkgo panic - do nothing, Ginkgo's aware of the failure
-               eAsString, ok := e.(string)
-               if ok && strings.Contains(eAsString, "defer GinkgoRecover()") {
-                       return
-               }
-
-               //If we're here, we have to do step 2: assert that the error is nil.  This assertion will
-               //allow us to fail the test suite (note: we can't call Fail since Gomega is not allowed to import Ginkgo).
-               //Since a failed assertion throws a panic, and we are likely in a goroutine, we need to defer within our defer!
-               defer func() {
-                       recover()
-               }()
-               Ω(e).Should(BeNil(), "Handler Panicked")
-       }()
-
-       if s.Writer != nil {
-               s.Writer.Write([]byte(fmt.Sprintf("GHTTP Received Request: %s - %s\n", req.Method, req.URL)))
-       }
-
-       s.receivedRequests = append(s.receivedRequests, req)
-       if routedHandler, ok := s.handlerForRoute(req.Method, req.URL.Path); ok {
-               s.writeLock.Unlock()
-               routedHandler(w, req)
-       } else if s.calls < len(s.requestHandlers) {
-               h := s.requestHandlers[s.calls]
-               s.calls++
-               s.writeLock.Unlock()
-               h(w, req)
-       } else {
-               s.writeLock.Unlock()
-               if s.AllowUnhandledRequests {
-                       ioutil.ReadAll(req.Body)
-                       req.Body.Close()
-                       w.WriteHeader(s.UnhandledRequestStatusCode)
-               } else {
-                       Ω(req).Should(BeNil(), "Received Unhandled Request")
-               }
-       }
-}
-
-//ReceivedRequests is an array containing all requests received by the server (both handled and unhandled requests)
-func (s *Server) ReceivedRequests() []*http.Request {
-       s.writeLock.Lock()
-       defer s.writeLock.Unlock()
-
-       return s.receivedRequests
-}
-
-//RouteToHandler can be used to register handlers that will always handle requests that match
-//the passed in method and path.
-//
-//The path may be either a string object or a *regexp.Regexp.
-func (s *Server) RouteToHandler(method string, path interface{}, handler http.HandlerFunc) {
-       s.writeLock.Lock()
-       defer s.writeLock.Unlock()
-
-       rh := routedHandler{
-               method:  method,
-               handler: handler,
-       }
-
-       switch p := path.(type) {
-       case *regexp.Regexp:
-               rh.pathRegexp = p
-       case string:
-               rh.path = p
-       default:
-               panic("path must be a string or a regular expression")
-       }
-
-       for i, existingRH := range s.routedHandlers {
-               if existingRH.method == method &&
-                       reflect.DeepEqual(existingRH.pathRegexp, rh.pathRegexp) &&
-                       existingRH.path == rh.path {
-                       s.routedHandlers[i] = rh
-                       return
-               }
-       }
-       s.routedHandlers = append(s.routedHandlers, rh)
-}
-
-func (s *Server) handlerForRoute(method string, path string) (http.HandlerFunc, bool) {
-       for _, rh := range s.routedHandlers {
-               if rh.method == method {
-                       if rh.pathRegexp != nil {
-                               if rh.pathRegexp.Match([]byte(path)) {
-                                       return rh.handler, true
-                               }
-                       } else if rh.path == path {
-                               return rh.handler, true
-                       }
-               }
-       }
-
-       return nil, false
-}
-
-//AppendHandlers will appends http.HandlerFuncs to the server's list of registered handlers.  The first incoming request is handled by the first handler, the second by the second, etc...
-func (s *Server) AppendHandlers(handlers ...http.HandlerFunc) {
-       s.writeLock.Lock()
-       defer s.writeLock.Unlock()
-
-       s.requestHandlers = append(s.requestHandlers, handlers...)
-}
-
-//SetHandler overrides the registered handler at the passed in index with the passed in handler
-//This is useful, for example, when a server has been set up in a shared context, but must be tweaked
-//for a particular test.
-func (s *Server) SetHandler(index int, handler http.HandlerFunc) {
-       s.writeLock.Lock()
-       defer s.writeLock.Unlock()
-
-       s.requestHandlers[index] = handler
-}
-
-//GetHandler returns the handler registered at the passed in index.
-func (s *Server) GetHandler(index int) http.HandlerFunc {
-       s.writeLock.Lock()
-       defer s.writeLock.Unlock()
-
-       return s.requestHandlers[index]
-}
-
-func (s *Server) Reset() {
-       s.writeLock.Lock()
-       defer s.writeLock.Unlock()
-
-       s.HTTPTestServer.CloseClientConnections()
-       s.calls = 0
-       s.receivedRequests = nil
-       s.requestHandlers = nil
-       s.routedHandlers = nil
-}
-
-//WrapHandler combines the passed in handler with the handler registered at the passed in index.
-//This is useful, for example, when a server has been set up in a shared context but must be tweaked
-//for a particular test.
-//
-//If the currently registered handler is A, and the new passed in handler is B then
-//WrapHandler will generate a new handler that first calls A, then calls B, and assign it to index
-func (s *Server) WrapHandler(index int, handler http.HandlerFunc) {
-       existingHandler := s.GetHandler(index)
-       s.SetHandler(index, CombineHandlers(existingHandler, handler))
-}
-
-func (s *Server) CloseClientConnections() {
-       s.writeLock.Lock()
-       defer s.writeLock.Unlock()
-
-       s.HTTPTestServer.CloseClientConnections()
-}
diff --git a/vendor/github.com/onsi/gomega/ghttp/test_server_suite_test.go b/vendor/github.com/onsi/gomega/ghttp/test_server_suite_test.go
deleted file mode 100644 (file)
index 7c12360..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-package ghttp_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-
-       "testing"
-)
-
-func TestGHTTP(t *testing.T) {
-       RegisterFailHandler(Fail)
-       RunSpecs(t, "GHTTP Suite")
-}
diff --git a/vendor/github.com/onsi/gomega/ghttp/test_server_test.go b/vendor/github.com/onsi/gomega/ghttp/test_server_test.go
deleted file mode 100644 (file)
index 88b3246..0000000
+++ /dev/null
@@ -1,1089 +0,0 @@
-package ghttp_test
-
-import (
-       "bytes"
-       "io"
-       "io/ioutil"
-       "net/http"
-       "net/url"
-       "regexp"
-
-       "github.com/golang/protobuf/proto"
-       "github.com/onsi/gomega/gbytes"
-       "github.com/onsi/gomega/ghttp/protobuf"
-
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/ghttp"
-)
-
-var _ = Describe("TestServer", func() {
-       var (
-               resp *http.Response
-               err  error
-               s    *Server
-       )
-
-       BeforeEach(func() {
-               s = NewServer()
-       })
-
-       AfterEach(func() {
-               s.Close()
-       })
-
-       Describe("Resetting the server", func() {
-               BeforeEach(func() {
-                       s.RouteToHandler("GET", "/", func(w http.ResponseWriter, req *http.Request) {})
-                       s.AppendHandlers(func(w http.ResponseWriter, req *http.Request) {})
-                       http.Get(s.URL() + "/")
-
-                       Ω(s.ReceivedRequests()).Should(HaveLen(1))
-               })
-
-               It("clears all handlers and call counts", func() {
-                       s.Reset()
-                       Ω(s.ReceivedRequests()).Should(HaveLen(0))
-                       Ω(func() { s.GetHandler(0) }).Should(Panic())
-               })
-       })
-
-       Describe("closing client connections", func() {
-               It("closes", func() {
-                       s.RouteToHandler("GET", "/",
-                               func(w http.ResponseWriter, req *http.Request) {
-                                       io.WriteString(w, req.RemoteAddr)
-                               },
-                       )
-                       client := http.Client{Transport: &http.Transport{DisableKeepAlives: true}}
-                       resp, err := client.Get(s.URL())
-                       Ω(err).ShouldNot(HaveOccurred())
-                       Ω(resp.StatusCode).Should(Equal(200))
-
-                       body, err := ioutil.ReadAll(resp.Body)
-                       resp.Body.Close()
-                       Ω(err).ShouldNot(HaveOccurred())
-
-                       s.CloseClientConnections()
-
-                       resp, err = client.Get(s.URL())
-                       Ω(err).ShouldNot(HaveOccurred())
-                       Ω(resp.StatusCode).Should(Equal(200))
-
-                       body2, err := ioutil.ReadAll(resp.Body)
-                       resp.Body.Close()
-                       Ω(err).ShouldNot(HaveOccurred())
-
-                       Ω(body2).ShouldNot(Equal(body))
-               })
-       })
-
-       Describe("closing server mulitple times", func() {
-               It("should not fail", func() {
-                       s.Close()
-                       Ω(s.Close).ShouldNot(Panic())
-               })
-       })
-
-       Describe("allowing unhandled requests", func() {
-               Context("when true", func() {
-                       BeforeEach(func() {
-                               s.AllowUnhandledRequests = true
-                               s.UnhandledRequestStatusCode = http.StatusForbidden
-                               resp, err = http.Get(s.URL() + "/foo")
-                               Ω(err).ShouldNot(HaveOccurred())
-                       })
-
-                       It("should allow unhandled requests and respond with the passed in status code", func() {
-                               Ω(err).ShouldNot(HaveOccurred())
-                               Ω(resp.StatusCode).Should(Equal(http.StatusForbidden))
-
-                               data, err := ioutil.ReadAll(resp.Body)
-                               Ω(err).ShouldNot(HaveOccurred())
-                               Ω(data).Should(BeEmpty())
-                       })
-
-                       It("should record the requests", func() {
-                               Ω(s.ReceivedRequests()).Should(HaveLen(1))
-                               Ω(s.ReceivedRequests()[0].URL.Path).Should(Equal("/foo"))
-                       })
-               })
-
-               Context("when false", func() {
-                       It("should fail when attempting a request", func() {
-                               failures := InterceptGomegaFailures(func() {
-                                       http.Get(s.URL() + "/foo")
-                               })
-
-                               Ω(failures[0]).Should(ContainSubstring("Received Unhandled Request"))
-                       })
-               })
-       })
-
-       Describe("Managing Handlers", func() {
-               var called []string
-               BeforeEach(func() {
-                       called = []string{}
-                       s.RouteToHandler("GET", "/routed", func(w http.ResponseWriter, req *http.Request) {
-                               called = append(called, "r1")
-                       })
-                       s.RouteToHandler("POST", regexp.MustCompile(`/routed\d`), func(w http.ResponseWriter, req *http.Request) {
-                               called = append(called, "r2")
-                       })
-                       s.AppendHandlers(func(w http.ResponseWriter, req *http.Request) {
-                               called = append(called, "A")
-                       }, func(w http.ResponseWriter, req *http.Request) {
-                               called = append(called, "B")
-                       })
-               })
-
-               It("should prefer routed handlers if there is a match", func() {
-                       http.Get(s.URL() + "/routed")
-                       http.Post(s.URL()+"/routed7", "application/json", nil)
-                       http.Get(s.URL() + "/foo")
-                       http.Get(s.URL() + "/routed")
-                       http.Post(s.URL()+"/routed9", "application/json", nil)
-                       http.Get(s.URL() + "/bar")
-
-                       failures := InterceptGomegaFailures(func() {
-                               http.Get(s.URL() + "/foo")
-                               http.Get(s.URL() + "/routed/not/a/match")
-                               http.Get(s.URL() + "/routed7")
-                               http.Post(s.URL()+"/routed", "application/json", nil)
-                       })
-
-                       Ω(failures[0]).Should(ContainSubstring("Received Unhandled Request"))
-                       Ω(failures).Should(HaveLen(4))
-
-                       http.Post(s.URL()+"/routed3", "application/json", nil)
-
-                       Ω(called).Should(Equal([]string{"r1", "r2", "A", "r1", "r2", "B", "r2"}))
-               })
-
-               It("should override routed handlers when reregistered", func() {
-                       s.RouteToHandler("GET", "/routed", func(w http.ResponseWriter, req *http.Request) {
-                               called = append(called, "r3")
-                       })
-                       s.RouteToHandler("POST", regexp.MustCompile(`/routed\d`), func(w http.ResponseWriter, req *http.Request) {
-                               called = append(called, "r4")
-                       })
-
-                       http.Get(s.URL() + "/routed")
-                       http.Post(s.URL()+"/routed7", "application/json", nil)
-
-                       Ω(called).Should(Equal([]string{"r3", "r4"}))
-               })
-
-               It("should call the appended handlers, in order, as requests come in", func() {
-                       http.Get(s.URL() + "/foo")
-                       Ω(called).Should(Equal([]string{"A"}))
-
-                       http.Get(s.URL() + "/foo")
-                       Ω(called).Should(Equal([]string{"A", "B"}))
-
-                       failures := InterceptGomegaFailures(func() {
-                               http.Get(s.URL() + "/foo")
-                       })
-
-                       Ω(failures[0]).Should(ContainSubstring("Received Unhandled Request"))
-               })
-
-               Describe("Overwriting an existing handler", func() {
-                       BeforeEach(func() {
-                               s.SetHandler(0, func(w http.ResponseWriter, req *http.Request) {
-                                       called = append(called, "C")
-                               })
-                       })
-
-                       It("should override the specified handler", func() {
-                               http.Get(s.URL() + "/foo")
-                               http.Get(s.URL() + "/foo")
-                               Ω(called).Should(Equal([]string{"C", "B"}))
-                       })
-               })
-
-               Describe("Getting an existing handler", func() {
-                       It("should return the handler func", func() {
-                               s.GetHandler(1)(nil, nil)
-                               Ω(called).Should(Equal([]string{"B"}))
-                       })
-               })
-
-               Describe("Wrapping an existing handler", func() {
-                       BeforeEach(func() {
-                               s.WrapHandler(0, func(w http.ResponseWriter, req *http.Request) {
-                                       called = append(called, "C")
-                               })
-                       })
-
-                       It("should wrap the existing handler in a new handler", func() {
-                               http.Get(s.URL() + "/foo")
-                               http.Get(s.URL() + "/foo")
-                               Ω(called).Should(Equal([]string{"A", "C", "B"}))
-                       })
-               })
-       })
-
-       Describe("When a handler fails", func() {
-               BeforeEach(func() {
-                       s.UnhandledRequestStatusCode = http.StatusForbidden //just to be clear that 500s aren't coming from unhandled requests
-               })
-
-               Context("because the handler has panicked", func() {
-                       BeforeEach(func() {
-                               s.AppendHandlers(func(w http.ResponseWriter, req *http.Request) {
-                                       panic("bam")
-                               })
-                       })
-
-                       It("should respond with a 500 and make a failing assertion", func() {
-                               var resp *http.Response
-                               var err error
-
-                               failures := InterceptGomegaFailures(func() {
-                                       resp, err = http.Get(s.URL())
-                               })
-
-                               Ω(err).ShouldNot(HaveOccurred())
-                               Ω(resp.StatusCode).Should(Equal(http.StatusInternalServerError))
-                               Ω(failures).Should(ConsistOf(ContainSubstring("Handler Panicked")))
-                       })
-               })
-
-               Context("because an assertion has failed", func() {
-                       BeforeEach(func() {
-                               s.AppendHandlers(func(w http.ResponseWriter, req *http.Request) {
-                                       // Ω(true).Should(BeFalse()) <-- would be nice to do it this way, but the test just can't be written this way
-
-                                       By("We're cheating a bit here -- we're throwing a GINKGO_PANIC which simulates a failed assertion")
-                                       panic(GINKGO_PANIC)
-                               })
-                       })
-
-                       It("should respond with a 500 and *not* make a failing assertion, instead relying on Ginkgo to have already been notified of the error", func() {
-                               resp, err := http.Get(s.URL())
-
-                               Ω(err).ShouldNot(HaveOccurred())
-                               Ω(resp.StatusCode).Should(Equal(http.StatusInternalServerError))
-                       })
-               })
-       })
-
-       Describe("Logging to the Writer", func() {
-               var buf *gbytes.Buffer
-               BeforeEach(func() {
-                       buf = gbytes.NewBuffer()
-                       s.Writer = buf
-                       s.AppendHandlers(func(w http.ResponseWriter, req *http.Request) {})
-                       s.AppendHandlers(func(w http.ResponseWriter, req *http.Request) {})
-               })
-
-               It("should write to the buffer when a request comes in", func() {
-                       http.Get(s.URL() + "/foo")
-                       Ω(buf).Should(gbytes.Say("GHTTP Received Request: GET - /foo\n"))
-
-                       http.Post(s.URL()+"/bar", "", nil)
-                       Ω(buf).Should(gbytes.Say("GHTTP Received Request: POST - /bar\n"))
-               })
-       })
-
-       Describe("Request Handlers", func() {
-               Describe("VerifyRequest", func() {
-                       BeforeEach(func() {
-                               s.AppendHandlers(VerifyRequest("GET", "/foo"))
-                       })
-
-                       It("should verify the method, path", func() {
-                               resp, err = http.Get(s.URL() + "/foo?baz=bar")
-                               Ω(err).ShouldNot(HaveOccurred())
-                       })
-
-                       It("should verify the method, path", func() {
-                               failures := InterceptGomegaFailures(func() {
-                                       http.Get(s.URL() + "/foo2")
-                               })
-                               Ω(failures).Should(HaveLen(1))
-                       })
-
-                       It("should verify the method, path", func() {
-                               failures := InterceptGomegaFailures(func() {
-                                       http.Post(s.URL()+"/foo", "application/json", nil)
-                               })
-                               Ω(failures).Should(HaveLen(1))
-                       })
-
-                       Context("when passed a rawQuery", func() {
-                               It("should also be possible to verify the rawQuery", func() {
-                                       s.SetHandler(0, VerifyRequest("GET", "/foo", "baz=bar"))
-                                       resp, err = http.Get(s.URL() + "/foo?baz=bar")
-                                       Ω(err).ShouldNot(HaveOccurred())
-                               })
-
-                               It("should match irregardless of query parameter ordering", func() {
-                                       s.SetHandler(0, VerifyRequest("GET", "/foo", "type=get&name=money"))
-                                       u, _ := url.Parse(s.URL() + "/foo")
-                                       u.RawQuery = url.Values{
-                                               "type": []string{"get"},
-                                               "name": []string{"money"},
-                                       }.Encode()
-
-                                       resp, err = http.Get(u.String())
-                                       Ω(err).ShouldNot(HaveOccurred())
-                               })
-                       })
-
-                       Context("when passed a matcher for path", func() {
-                               It("should apply the matcher", func() {
-                                       s.SetHandler(0, VerifyRequest("GET", MatchRegexp(`/foo/[a-f]*/3`)))
-                                       resp, err = http.Get(s.URL() + "/foo/abcdefa/3")
-                                       Ω(err).ShouldNot(HaveOccurred())
-                               })
-                       })
-               })
-
-               Describe("VerifyContentType", func() {
-                       BeforeEach(func() {
-                               s.AppendHandlers(CombineHandlers(
-                                       VerifyRequest("GET", "/foo"),
-                                       VerifyContentType("application/octet-stream"),
-                               ))
-                       })
-
-                       It("should verify the content type", func() {
-                               req, err := http.NewRequest("GET", s.URL()+"/foo", nil)
-                               Ω(err).ShouldNot(HaveOccurred())
-                               req.Header.Set("Content-Type", "application/octet-stream")
-
-                               resp, err = http.DefaultClient.Do(req)
-                               Ω(err).ShouldNot(HaveOccurred())
-                       })
-
-                       It("should verify the content type", func() {
-                               req, err := http.NewRequest("GET", s.URL()+"/foo", nil)
-                               Ω(err).ShouldNot(HaveOccurred())
-                               req.Header.Set("Content-Type", "application/json")
-
-                               failures := InterceptGomegaFailures(func() {
-                                       http.DefaultClient.Do(req)
-                               })
-                               Ω(failures).Should(HaveLen(1))
-                       })
-               })
-
-               Describe("Verify BasicAuth", func() {
-                       BeforeEach(func() {
-                               s.AppendHandlers(CombineHandlers(
-                                       VerifyRequest("GET", "/foo"),
-                                       VerifyBasicAuth("bob", "password"),
-                               ))
-                       })
-
-                       It("should verify basic auth", func() {
-                               req, err := http.NewRequest("GET", s.URL()+"/foo", nil)
-                               Ω(err).ShouldNot(HaveOccurred())
-                               req.SetBasicAuth("bob", "password")
-
-                               resp, err = http.DefaultClient.Do(req)
-                               Ω(err).ShouldNot(HaveOccurred())
-                       })
-
-                       It("should verify basic auth", func() {
-                               req, err := http.NewRequest("GET", s.URL()+"/foo", nil)
-                               Ω(err).ShouldNot(HaveOccurred())
-                               req.SetBasicAuth("bob", "bassword")
-
-                               failures := InterceptGomegaFailures(func() {
-                                       http.DefaultClient.Do(req)
-                               })
-                               Ω(failures).Should(HaveLen(1))
-                       })
-
-                       It("should require basic auth header", func() {
-                               req, err := http.NewRequest("GET", s.URL()+"/foo", nil)
-                               Ω(err).ShouldNot(HaveOccurred())
-
-                               failures := InterceptGomegaFailures(func() {
-                                       http.DefaultClient.Do(req)
-                               })
-                               Ω(failures).Should(ContainElement(ContainSubstring("Authorization header must be specified")))
-                       })
-               })
-
-               Describe("VerifyHeader", func() {
-                       BeforeEach(func() {
-                               s.AppendHandlers(CombineHandlers(
-                                       VerifyRequest("GET", "/foo"),
-                                       VerifyHeader(http.Header{
-                                               "accept":        []string{"jpeg", "png"},
-                                               "cache-control": []string{"omicron"},
-                                               "Return-Path":   []string{"hobbiton"},
-                                       }),
-                               ))
-                       })
-
-                       It("should verify the headers", func() {
-                               req, err := http.NewRequest("GET", s.URL()+"/foo", nil)
-                               Ω(err).ShouldNot(HaveOccurred())
-                               req.Header.Add("Accept", "jpeg")
-                               req.Header.Add("Accept", "png")
-                               req.Header.Add("Cache-Control", "omicron")
-                               req.Header.Add("return-path", "hobbiton")
-
-                               resp, err = http.DefaultClient.Do(req)
-                               Ω(err).ShouldNot(HaveOccurred())
-                       })
-
-                       It("should verify the headers", func() {
-                               req, err := http.NewRequest("GET", s.URL()+"/foo", nil)
-                               Ω(err).ShouldNot(HaveOccurred())
-                               req.Header.Add("Schmaccept", "jpeg")
-                               req.Header.Add("Schmaccept", "png")
-                               req.Header.Add("Cache-Control", "omicron")
-                               req.Header.Add("return-path", "hobbiton")
-
-                               failures := InterceptGomegaFailures(func() {
-                                       http.DefaultClient.Do(req)
-                               })
-                               Ω(failures).Should(HaveLen(1))
-                       })
-               })
-
-               Describe("VerifyHeaderKV", func() {
-                       BeforeEach(func() {
-                               s.AppendHandlers(CombineHandlers(
-                                       VerifyRequest("GET", "/foo"),
-                                       VerifyHeaderKV("accept", "jpeg", "png"),
-                                       VerifyHeaderKV("cache-control", "omicron"),
-                                       VerifyHeaderKV("Return-Path", "hobbiton"),
-                               ))
-                       })
-
-                       It("should verify the headers", func() {
-                               req, err := http.NewRequest("GET", s.URL()+"/foo", nil)
-                               Ω(err).ShouldNot(HaveOccurred())
-                               req.Header.Add("Accept", "jpeg")
-                               req.Header.Add("Accept", "png")
-                               req.Header.Add("Cache-Control", "omicron")
-                               req.Header.Add("return-path", "hobbiton")
-
-                               resp, err = http.DefaultClient.Do(req)
-                               Ω(err).ShouldNot(HaveOccurred())
-                       })
-
-                       It("should verify the headers", func() {
-                               req, err := http.NewRequest("GET", s.URL()+"/foo", nil)
-                               Ω(err).ShouldNot(HaveOccurred())
-                               req.Header.Add("Accept", "jpeg")
-                               req.Header.Add("Cache-Control", "omicron")
-                               req.Header.Add("return-path", "hobbiton")
-
-                               failures := InterceptGomegaFailures(func() {
-                                       http.DefaultClient.Do(req)
-                               })
-                               Ω(failures).Should(HaveLen(1))
-                       })
-               })
-
-               Describe("VerifyBody", func() {
-                       BeforeEach(func() {
-                               s.AppendHandlers(CombineHandlers(
-                                       VerifyRequest("POST", "/foo"),
-                                       VerifyBody([]byte("some body")),
-                               ))
-                       })
-
-                       It("should verify the body", func() {
-                               resp, err = http.Post(s.URL()+"/foo", "", bytes.NewReader([]byte("some body")))
-                               Ω(err).ShouldNot(HaveOccurred())
-                       })
-
-                       It("should verify the body", func() {
-                               failures := InterceptGomegaFailures(func() {
-                                       http.Post(s.URL()+"/foo", "", bytes.NewReader([]byte("wrong body")))
-                               })
-                               Ω(failures).Should(HaveLen(1))
-                       })
-               })
-
-               Describe("VerifyJSON", func() {
-                       BeforeEach(func() {
-                               s.AppendHandlers(CombineHandlers(
-                                       VerifyRequest("POST", "/foo"),
-                                       VerifyJSON(`{"a":3, "b":2}`),
-                               ))
-                       })
-
-                       It("should verify the json body and the content type", func() {
-                               resp, err = http.Post(s.URL()+"/foo", "application/json", bytes.NewReader([]byte(`{"b":2, "a":3}`)))
-                               Ω(err).ShouldNot(HaveOccurred())
-                       })
-
-                       It("should verify the json body and the content type", func() {
-                               failures := InterceptGomegaFailures(func() {
-                                       http.Post(s.URL()+"/foo", "application/json", bytes.NewReader([]byte(`{"b":2, "a":4}`)))
-                               })
-                               Ω(failures).Should(HaveLen(1))
-                       })
-
-                       It("should verify the json body and the content type", func() {
-                               failures := InterceptGomegaFailures(func() {
-                                       http.Post(s.URL()+"/foo", "application/not-json", bytes.NewReader([]byte(`{"b":2, "a":3}`)))
-                               })
-                               Ω(failures).Should(HaveLen(1))
-                       })
-               })
-
-               Describe("VerifyJSONRepresenting", func() {
-                       BeforeEach(func() {
-                               s.AppendHandlers(CombineHandlers(
-                                       VerifyRequest("POST", "/foo"),
-                                       VerifyJSONRepresenting([]int{1, 3, 5}),
-                               ))
-                       })
-
-                       It("should verify the json body and the content type", func() {
-                               resp, err = http.Post(s.URL()+"/foo", "application/json", bytes.NewReader([]byte(`[1,3,5]`)))
-                               Ω(err).ShouldNot(HaveOccurred())
-                       })
-
-                       It("should verify the json body and the content type", func() {
-                               failures := InterceptGomegaFailures(func() {
-                                       http.Post(s.URL()+"/foo", "application/json", bytes.NewReader([]byte(`[1,3]`)))
-                               })
-                               Ω(failures).Should(HaveLen(1))
-                       })
-               })
-
-               Describe("VerifyForm", func() {
-                       var formValues url.Values
-
-                       BeforeEach(func() {
-                               formValues = make(url.Values)
-                               formValues.Add("users", "user1")
-                               formValues.Add("users", "user2")
-                               formValues.Add("group", "users")
-                       })
-
-                       Context("when encoded in the URL", func() {
-                               BeforeEach(func() {
-                                       s.AppendHandlers(CombineHandlers(
-                                               VerifyRequest("GET", "/foo"),
-                                               VerifyForm(url.Values{
-                                                       "users": []string{"user1", "user2"},
-                                                       "group": []string{"users"},
-                                               }),
-                                       ))
-                               })
-
-                               It("should verify form values", func() {
-                                       resp, err = http.Get(s.URL() + "/foo?" + formValues.Encode())
-                                       Ω(err).ShouldNot(HaveOccurred())
-                               })
-
-                               It("should ignore extra values", func() {
-                                       formValues.Add("extra", "value")
-                                       resp, err = http.Get(s.URL() + "/foo?" + formValues.Encode())
-                                       Ω(err).ShouldNot(HaveOccurred())
-                               })
-
-                               It("fail on missing values", func() {
-                                       formValues.Del("group")
-                                       failures := InterceptGomegaFailures(func() {
-                                               resp, err = http.Get(s.URL() + "/foo?" + formValues.Encode())
-                                       })
-                                       Ω(failures).Should(HaveLen(1))
-                               })
-
-                               It("fail on incorrect values", func() {
-                                       formValues.Set("group", "wheel")
-                                       failures := InterceptGomegaFailures(func() {
-                                               resp, err = http.Get(s.URL() + "/foo?" + formValues.Encode())
-                                       })
-                                       Ω(failures).Should(HaveLen(1))
-                               })
-                       })
-
-                       Context("when present in the body", func() {
-                               BeforeEach(func() {
-                                       s.AppendHandlers(CombineHandlers(
-                                               VerifyRequest("POST", "/foo"),
-                                               VerifyForm(url.Values{
-                                                       "users": []string{"user1", "user2"},
-                                                       "group": []string{"users"},
-                                               }),
-                                       ))
-                               })
-
-                               It("should verify form values", func() {
-                                       resp, err = http.PostForm(s.URL()+"/foo", formValues)
-                                       Ω(err).ShouldNot(HaveOccurred())
-                               })
-
-                               It("should ignore extra values", func() {
-                                       formValues.Add("extra", "value")
-                                       resp, err = http.PostForm(s.URL()+"/foo", formValues)
-                                       Ω(err).ShouldNot(HaveOccurred())
-                               })
-
-                               It("fail on missing values", func() {
-                                       formValues.Del("group")
-                                       failures := InterceptGomegaFailures(func() {
-                                               resp, err = http.PostForm(s.URL()+"/foo", formValues)
-                                       })
-                                       Ω(failures).Should(HaveLen(1))
-                               })
-
-                               It("fail on incorrect values", func() {
-                                       formValues.Set("group", "wheel")
-                                       failures := InterceptGomegaFailures(func() {
-                                               resp, err = http.PostForm(s.URL()+"/foo", formValues)
-                                       })
-                                       Ω(failures).Should(HaveLen(1))
-                               })
-                       })
-               })
-
-               Describe("VerifyFormKV", func() {
-                       Context("when encoded in the URL", func() {
-                               BeforeEach(func() {
-                                       s.AppendHandlers(CombineHandlers(
-                                               VerifyRequest("GET", "/foo"),
-                                               VerifyFormKV("users", "user1", "user2"),
-                                       ))
-                               })
-
-                               It("verifies the form value", func() {
-                                       resp, err = http.Get(s.URL() + "/foo?users=user1&users=user2")
-                                       Ω(err).ShouldNot(HaveOccurred())
-                               })
-
-                               It("verifies the form value", func() {
-                                       failures := InterceptGomegaFailures(func() {
-                                               resp, err = http.Get(s.URL() + "/foo?users=user1")
-                                       })
-                                       Ω(failures).Should(HaveLen(1))
-                               })
-                       })
-
-                       Context("when present in the body", func() {
-                               BeforeEach(func() {
-                                       s.AppendHandlers(CombineHandlers(
-                                               VerifyRequest("POST", "/foo"),
-                                               VerifyFormKV("users", "user1", "user2"),
-                                       ))
-                               })
-
-                               It("verifies the form value", func() {
-                                       resp, err = http.PostForm(s.URL()+"/foo", url.Values{"users": []string{"user1", "user2"}})
-                                       Ω(err).ShouldNot(HaveOccurred())
-                               })
-
-                               It("verifies the form value", func() {
-                                       failures := InterceptGomegaFailures(func() {
-                                               resp, err = http.PostForm(s.URL()+"/foo", url.Values{"users": []string{"user1"}})
-                                       })
-                                       Ω(failures).Should(HaveLen(1))
-                               })
-                       })
-               })
-
-               Describe("VerifyProtoRepresenting", func() {
-                       var message *protobuf.SimpleMessage
-
-                       BeforeEach(func() {
-                               message = new(protobuf.SimpleMessage)
-                               message.Description = proto.String("A description")
-                               message.Id = proto.Int32(0)
-
-                               s.AppendHandlers(CombineHandlers(
-                                       VerifyRequest("POST", "/proto"),
-                                       VerifyProtoRepresenting(message),
-                               ))
-                       })
-
-                       It("verifies the proto body and the content type", func() {
-                               serialized, err := proto.Marshal(message)
-                               Ω(err).ShouldNot(HaveOccurred())
-
-                               resp, err = http.Post(s.URL()+"/proto", "application/x-protobuf", bytes.NewReader(serialized))
-                               Ω(err).ShouldNot(HaveOccurred())
-                       })
-
-                       It("should verify the proto body and the content type", func() {
-                               serialized, err := proto.Marshal(&protobuf.SimpleMessage{
-                                       Description: proto.String("A description"),
-                                       Id:          proto.Int32(0),
-                                       Metadata:    proto.String("some metadata"),
-                               })
-                               Ω(err).ShouldNot(HaveOccurred())
-
-                               failures := InterceptGomegaFailures(func() {
-                                       http.Post(s.URL()+"/proto", "application/x-protobuf", bytes.NewReader(serialized))
-                               })
-                               Ω(failures).Should(HaveLen(1))
-                       })
-
-                       It("should verify the proto body and the content type", func() {
-                               serialized, err := proto.Marshal(message)
-                               Ω(err).ShouldNot(HaveOccurred())
-
-                               failures := InterceptGomegaFailures(func() {
-                                       http.Post(s.URL()+"/proto", "application/not-x-protobuf", bytes.NewReader(serialized))
-                               })
-                               Ω(failures).Should(HaveLen(1))
-                       })
-               })
-
-               Describe("RespondWith", func() {
-                       Context("without headers", func() {
-                               BeforeEach(func() {
-                                       s.AppendHandlers(CombineHandlers(
-                                               VerifyRequest("POST", "/foo"),
-                                               RespondWith(http.StatusCreated, "sweet"),
-                                       ), CombineHandlers(
-                                               VerifyRequest("POST", "/foo"),
-                                               RespondWith(http.StatusOK, []byte("sour")),
-                                       ))
-                               })
-
-                               It("should return the response", func() {
-                                       resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
-                                       Ω(err).ShouldNot(HaveOccurred())
-
-                                       Ω(resp.StatusCode).Should(Equal(http.StatusCreated))
-
-                                       body, err := ioutil.ReadAll(resp.Body)
-                                       Ω(err).ShouldNot(HaveOccurred())
-                                       Ω(body).Should(Equal([]byte("sweet")))
-
-                                       resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
-                                       Ω(err).ShouldNot(HaveOccurred())
-
-                                       Ω(resp.StatusCode).Should(Equal(http.StatusOK))
-
-                                       body, err = ioutil.ReadAll(resp.Body)
-                                       Ω(err).ShouldNot(HaveOccurred())
-                                       Ω(body).Should(Equal([]byte("sour")))
-                               })
-                       })
-
-                       Context("with headers", func() {
-                               BeforeEach(func() {
-                                       s.AppendHandlers(CombineHandlers(
-                                               VerifyRequest("POST", "/foo"),
-                                               RespondWith(http.StatusCreated, "sweet", http.Header{"X-Custom-Header": []string{"my header"}}),
-                                       ))
-                               })
-
-                               It("should return the headers too", func() {
-                                       resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
-                                       Ω(err).ShouldNot(HaveOccurred())
-
-                                       Ω(resp.StatusCode).Should(Equal(http.StatusCreated))
-                                       Ω(ioutil.ReadAll(resp.Body)).Should(Equal([]byte("sweet")))
-                                       Ω(resp.Header.Get("X-Custom-Header")).Should(Equal("my header"))
-                               })
-                       })
-               })
-
-               Describe("RespondWithPtr", func() {
-                       var code int
-                       var byteBody []byte
-                       var stringBody string
-                       BeforeEach(func() {
-                               code = http.StatusOK
-                               byteBody = []byte("sweet")
-                               stringBody = "sour"
-
-                               s.AppendHandlers(CombineHandlers(
-                                       VerifyRequest("POST", "/foo"),
-                                       RespondWithPtr(&code, &byteBody),
-                               ), CombineHandlers(
-                                       VerifyRequest("POST", "/foo"),
-                                       RespondWithPtr(&code, &stringBody),
-                               ))
-                       })
-
-                       It("should return the response", func() {
-                               code = http.StatusCreated
-                               byteBody = []byte("tasty")
-                               stringBody = "treat"
-
-                               resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
-                               Ω(err).ShouldNot(HaveOccurred())
-
-                               Ω(resp.StatusCode).Should(Equal(http.StatusCreated))
-
-                               body, err := ioutil.ReadAll(resp.Body)
-                               Ω(err).ShouldNot(HaveOccurred())
-                               Ω(body).Should(Equal([]byte("tasty")))
-
-                               resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
-                               Ω(err).ShouldNot(HaveOccurred())
-
-                               Ω(resp.StatusCode).Should(Equal(http.StatusCreated))
-
-                               body, err = ioutil.ReadAll(resp.Body)
-                               Ω(err).ShouldNot(HaveOccurred())
-                               Ω(body).Should(Equal([]byte("treat")))
-                       })
-
-                       Context("when passed a nil body", func() {
-                               BeforeEach(func() {
-                                       s.SetHandler(0, CombineHandlers(
-                                               VerifyRequest("POST", "/foo"),
-                                               RespondWithPtr(&code, nil),
-                                       ))
-                               })
-
-                               It("should return an empty body and not explode", func() {
-                                       resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
-
-                                       Ω(err).ShouldNot(HaveOccurred())
-                                       Ω(resp.StatusCode).Should(Equal(http.StatusOK))
-                                       body, err := ioutil.ReadAll(resp.Body)
-                                       Ω(err).ShouldNot(HaveOccurred())
-                                       Ω(body).Should(BeEmpty())
-
-                                       Ω(s.ReceivedRequests()).Should(HaveLen(1))
-                               })
-                       })
-               })
-
-               Describe("RespondWithJSON", func() {
-                       Context("when no optional headers are set", func() {
-                               BeforeEach(func() {
-                                       s.AppendHandlers(CombineHandlers(
-                                               VerifyRequest("POST", "/foo"),
-                                               RespondWithJSONEncoded(http.StatusCreated, []int{1, 2, 3}),
-                                       ))
-                               })
-
-                               It("should return the response", func() {
-                                       resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
-                                       Ω(err).ShouldNot(HaveOccurred())
-
-                                       Ω(resp.StatusCode).Should(Equal(http.StatusCreated))
-
-                                       body, err := ioutil.ReadAll(resp.Body)
-                                       Ω(err).ShouldNot(HaveOccurred())
-                                       Ω(body).Should(MatchJSON("[1,2,3]"))
-                               })
-
-                               It("should set the Content-Type header to application/json", func() {
-                                       resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
-                                       Ω(err).ShouldNot(HaveOccurred())
-
-                                       Ω(resp.Header["Content-Type"]).Should(Equal([]string{"application/json"}))
-                               })
-                       })
-
-                       Context("when optional headers are set", func() {
-                               var headers http.Header
-                               BeforeEach(func() {
-                                       headers = http.Header{"Stuff": []string{"things"}}
-                               })
-
-                               JustBeforeEach(func() {
-                                       s.AppendHandlers(CombineHandlers(
-                                               VerifyRequest("POST", "/foo"),
-                                               RespondWithJSONEncoded(http.StatusCreated, []int{1, 2, 3}, headers),
-                                       ))
-                               })
-
-                               It("should preserve those headers", func() {
-                                       resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
-                                       Ω(err).ShouldNot(HaveOccurred())
-
-                                       Ω(resp.Header["Stuff"]).Should(Equal([]string{"things"}))
-                               })
-
-                               It("should set the Content-Type header to application/json", func() {
-                                       resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
-                                       Ω(err).ShouldNot(HaveOccurred())
-
-                                       Ω(resp.Header["Content-Type"]).Should(Equal([]string{"application/json"}))
-                               })
-
-                               Context("when setting the Content-Type explicitly", func() {
-                                       BeforeEach(func() {
-                                               headers["Content-Type"] = []string{"not-json"}
-                                       })
-
-                                       It("should use the Content-Type header that was explicitly set", func() {
-                                               resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
-                                               Ω(err).ShouldNot(HaveOccurred())
-
-                                               Ω(resp.Header["Content-Type"]).Should(Equal([]string{"not-json"}))
-                                       })
-                               })
-                       })
-               })
-
-               Describe("RespondWithJSONPtr", func() {
-                       type testObject struct {
-                               Key   string
-                               Value string
-                       }
-
-                       var code int
-                       var object testObject
-
-                       Context("when no optional headers are set", func() {
-                               BeforeEach(func() {
-                                       code = http.StatusOK
-                                       object = testObject{}
-                                       s.AppendHandlers(CombineHandlers(
-                                               VerifyRequest("POST", "/foo"),
-                                               RespondWithJSONEncodedPtr(&code, &object),
-                                       ))
-                               })
-
-                               It("should return the response", func() {
-                                       code = http.StatusCreated
-                                       object = testObject{
-                                               Key:   "Jim",
-                                               Value: "Codes",
-                                       }
-                                       resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
-                                       Ω(err).ShouldNot(HaveOccurred())
-
-                                       Ω(resp.StatusCode).Should(Equal(http.StatusCreated))
-
-                                       body, err := ioutil.ReadAll(resp.Body)
-                                       Ω(err).ShouldNot(HaveOccurred())
-                                       Ω(body).Should(MatchJSON(`{"Key": "Jim", "Value": "Codes"}`))
-                               })
-
-                               It("should set the Content-Type header to application/json", func() {
-                                       resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
-                                       Ω(err).ShouldNot(HaveOccurred())
-
-                                       Ω(resp.Header["Content-Type"]).Should(Equal([]string{"application/json"}))
-                               })
-                       })
-
-                       Context("when optional headers are set", func() {
-                               var headers http.Header
-                               BeforeEach(func() {
-                                       headers = http.Header{"Stuff": []string{"things"}}
-                               })
-
-                               JustBeforeEach(func() {
-                                       code = http.StatusOK
-                                       object = testObject{}
-                                       s.AppendHandlers(CombineHandlers(
-                                               VerifyRequest("POST", "/foo"),
-                                               RespondWithJSONEncodedPtr(&code, &object, headers),
-                                       ))
-                               })
-
-                               It("should preserve those headers", func() {
-                                       resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
-                                       Ω(err).ShouldNot(HaveOccurred())
-
-                                       Ω(resp.Header["Stuff"]).Should(Equal([]string{"things"}))
-                               })
-
-                               It("should set the Content-Type header to application/json", func() {
-                                       resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
-                                       Ω(err).ShouldNot(HaveOccurred())
-
-                                       Ω(resp.Header["Content-Type"]).Should(Equal([]string{"application/json"}))
-                               })
-
-                               Context("when setting the Content-Type explicitly", func() {
-                                       BeforeEach(func() {
-                                               headers["Content-Type"] = []string{"not-json"}
-                                       })
-
-                                       It("should use the Content-Type header that was explicitly set", func() {
-                                               resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
-                                               Ω(err).ShouldNot(HaveOccurred())
-
-                                               Ω(resp.Header["Content-Type"]).Should(Equal([]string{"not-json"}))
-                                       })
-                               })
-                       })
-               })
-
-               Describe("RespondWithProto", func() {
-                       var message *protobuf.SimpleMessage
-
-                       BeforeEach(func() {
-                               message = new(protobuf.SimpleMessage)
-                               message.Description = proto.String("A description")
-                               message.Id = proto.Int32(99)
-                       })
-
-                       Context("when no optional headers are set", func() {
-                               BeforeEach(func() {
-                                       s.AppendHandlers(CombineHandlers(
-                                               VerifyRequest("POST", "/proto"),
-                                               RespondWithProto(http.StatusCreated, message),
-                                       ))
-                               })
-
-                               It("should return the response", func() {
-                                       resp, err = http.Post(s.URL()+"/proto", "application/x-protobuf", nil)
-                                       Ω(err).ShouldNot(HaveOccurred())
-
-                                       Ω(resp.StatusCode).Should(Equal(http.StatusCreated))
-
-                                       var received protobuf.SimpleMessage
-                                       body, err := ioutil.ReadAll(resp.Body)
-                                       err = proto.Unmarshal(body, &received)
-                                       Ω(err).ShouldNot(HaveOccurred())
-                               })
-
-                               It("should set the Content-Type header to application/x-protobuf", func() {
-                                       resp, err = http.Post(s.URL()+"/proto", "application/x-protobuf", nil)
-                                       Ω(err).ShouldNot(HaveOccurred())
-
-                                       Ω(resp.Header["Content-Type"]).Should(Equal([]string{"application/x-protobuf"}))
-                               })
-                       })
-
-                       Context("when optional headers are set", func() {
-                               var headers http.Header
-                               BeforeEach(func() {
-                                       headers = http.Header{"Stuff": []string{"things"}}
-                               })
-
-                               JustBeforeEach(func() {
-                                       s.AppendHandlers(CombineHandlers(
-                                               VerifyRequest("POST", "/proto"),
-                                               RespondWithProto(http.StatusCreated, message, headers),
-                                       ))
-                               })
-
-                               It("should preserve those headers", func() {
-                                       resp, err = http.Post(s.URL()+"/proto", "application/x-protobuf", nil)
-                                       Ω(err).ShouldNot(HaveOccurred())
-
-                                       Ω(resp.Header["Stuff"]).Should(Equal([]string{"things"}))
-                               })
-
-                               It("should set the Content-Type header to application/x-protobuf", func() {
-                                       resp, err = http.Post(s.URL()+"/proto", "application/x-protobuf", nil)
-                                       Ω(err).ShouldNot(HaveOccurred())
-
-                                       Ω(resp.Header["Content-Type"]).Should(Equal([]string{"application/x-protobuf"}))
-                               })
-
-                               Context("when setting the Content-Type explicitly", func() {
-                                       BeforeEach(func() {
-                                               headers["Content-Type"] = []string{"not-x-protobuf"}
-                                       })
-
-                                       It("should use the Content-Type header that was explicitly set", func() {
-                                               resp, err = http.Post(s.URL()+"/proto", "application/x-protobuf", nil)
-                                               Ω(err).ShouldNot(HaveOccurred())
-
-                                               Ω(resp.Header["Content-Type"]).Should(Equal([]string{"not-x-protobuf"}))
-                                       })
-                               })
-                       })
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/gstruct/elements.go b/vendor/github.com/onsi/gomega/gstruct/elements.go
deleted file mode 100644 (file)
index a315fa1..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-package gstruct
-
-import (
-       "errors"
-       "fmt"
-       "reflect"
-       "runtime/debug"
-
-       "github.com/onsi/gomega/format"
-       errorsutil "github.com/onsi/gomega/gstruct/errors"
-       "github.com/onsi/gomega/types"
-)
-
-//MatchAllElements succeeds if every element of a slice matches the element matcher it maps to
-//through the id function, and every element matcher is matched.
-//  Expect([]string{"a", "b"}).To(MatchAllElements(idFn, matchers.Elements{
-//      "a": BeEqual("a"),
-//      "b": BeEqual("b"),
-//  })
-func MatchAllElements(identifier Identifier, elements Elements) types.GomegaMatcher {
-       return &ElementsMatcher{
-               Identifier: identifier,
-               Elements:   elements,
-       }
-}
-
-//MatchElements succeeds if each element of a slice matches the element matcher it maps to
-//through the id function. It can ignore extra elements and/or missing elements.
-//  Expect([]string{"a", "c"}).To(MatchElements(idFn, IgnoreMissing|IgnoreExtra, matchers.Elements{
-//      "a": BeEqual("a")
-//      "b": BeEqual("b"),
-//  })
-func MatchElements(identifier Identifier, options Options, elements Elements) types.GomegaMatcher {
-       return &ElementsMatcher{
-               Identifier:      identifier,
-               Elements:        elements,
-               IgnoreExtras:    options&IgnoreExtras != 0,
-               IgnoreMissing:   options&IgnoreMissing != 0,
-               AllowDuplicates: options&AllowDuplicates != 0,
-       }
-}
-
-// ElementsMatcher is a NestingMatcher that applies custom matchers to each element of a slice mapped
-// by the Identifier function.
-// TODO: Extend this to work with arrays & maps (map the key) as well.
-type ElementsMatcher struct {
-       // Matchers for each element.
-       Elements Elements
-       // Function mapping an element to the string key identifying its matcher.
-       Identifier Identifier
-
-       // Whether to ignore extra elements or consider it an error.
-       IgnoreExtras bool
-       // Whether to ignore missing elements or consider it an error.
-       IgnoreMissing bool
-       // Whether to key duplicates when matching IDs.
-       AllowDuplicates bool
-
-       // State.
-       failures []error
-}
-
-// Element ID to matcher.
-type Elements map[string]types.GomegaMatcher
-
-// Function for identifying (mapping) elements.
-type Identifier func(element interface{}) string
-
-func (m *ElementsMatcher) Match(actual interface{}) (success bool, err error) {
-       if reflect.TypeOf(actual).Kind() != reflect.Slice {
-               return false, fmt.Errorf("%v is type %T, expected slice", actual, actual)
-       }
-
-       m.failures = m.matchElements(actual)
-       if len(m.failures) > 0 {
-               return false, nil
-       }
-       return true, nil
-}
-
-func (m *ElementsMatcher) matchElements(actual interface{}) (errs []error) {
-       // Provide more useful error messages in the case of a panic.
-       defer func() {
-               if err := recover(); err != nil {
-                       errs = append(errs, fmt.Errorf("panic checking %+v: %v\n%s", actual, err, debug.Stack()))
-               }
-       }()
-
-       val := reflect.ValueOf(actual)
-       elements := map[string]bool{}
-       for i := 0; i < val.Len(); i++ {
-               element := val.Index(i).Interface()
-               id := m.Identifier(element)
-               if elements[id] {
-                       if !m.AllowDuplicates {
-                               errs = append(errs, fmt.Errorf("found duplicate element ID %s", id))
-                               continue
-                       }
-               }
-               elements[id] = true
-
-               matcher, expected := m.Elements[id]
-               if !expected {
-                       if !m.IgnoreExtras {
-                               errs = append(errs, fmt.Errorf("unexpected element %s", id))
-                       }
-                       continue
-               }
-
-               match, err := matcher.Match(element)
-               if match {
-                       continue
-               }
-
-               if err == nil {
-                       if nesting, ok := matcher.(errorsutil.NestingMatcher); ok {
-                               err = errorsutil.AggregateError(nesting.Failures())
-                       } else {
-                               err = errors.New(matcher.FailureMessage(element))
-                       }
-               }
-               errs = append(errs, errorsutil.Nest(fmt.Sprintf("[%s]", id), err))
-       }
-
-       for id := range m.Elements {
-               if !elements[id] && !m.IgnoreMissing {
-                       errs = append(errs, fmt.Errorf("missing expected element %s", id))
-               }
-       }
-
-       return errs
-}
-
-func (m *ElementsMatcher) FailureMessage(actual interface{}) (message string) {
-       failure := errorsutil.AggregateError(m.failures)
-       return format.Message(actual, fmt.Sprintf("to match elements: %v", failure))
-}
-
-func (m *ElementsMatcher) NegatedFailureMessage(actual interface{}) (message string) {
-       return format.Message(actual, "not to match elements")
-}
-
-func (m *ElementsMatcher) Failures() []error {
-       return m.failures
-}
diff --git a/vendor/github.com/onsi/gomega/gstruct/elements_test.go b/vendor/github.com/onsi/gomega/gstruct/elements_test.go
deleted file mode 100644 (file)
index 8ba78cb..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-package gstruct_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/gstruct"
-)
-
-var _ = Describe("Slice", func() {
-       allElements := []string{"a", "b"}
-       missingElements := []string{"a"}
-       extraElements := []string{"a", "b", "c"}
-       duplicateElements := []string{"a", "a", "b"}
-       empty := []string{}
-       var nils []string
-
-       It("should strictly match all elements", func() {
-               m := MatchAllElements(id, Elements{
-                       "b": Equal("b"),
-                       "a": Equal("a"),
-               })
-               Ω(allElements).Should(m, "should match all elements")
-               Ω(missingElements).ShouldNot(m, "should fail with missing elements")
-               Ω(extraElements).ShouldNot(m, "should fail with extra elements")
-               Ω(duplicateElements).ShouldNot(m, "should fail with duplicate elements")
-               Ω(nils).ShouldNot(m, "should fail with an uninitialized slice")
-
-               m = MatchAllElements(id, Elements{
-                       "a": Equal("a"),
-                       "b": Equal("fail"),
-               })
-               Ω(allElements).ShouldNot(m, "should run nested matchers")
-
-               m = MatchAllElements(id, Elements{})
-               Ω(empty).Should(m, "should handle empty slices")
-               Ω(allElements).ShouldNot(m, "should handle only empty slices")
-               Ω(nils).Should(m, "should handle nil slices")
-       })
-
-       It("should ignore extra elements", func() {
-               m := MatchElements(id, IgnoreExtras, Elements{
-                       "b": Equal("b"),
-                       "a": Equal("a"),
-               })
-               Ω(allElements).Should(m, "should match all elements")
-               Ω(missingElements).ShouldNot(m, "should fail with missing elements")
-               Ω(extraElements).Should(m, "should ignore extra elements")
-               Ω(duplicateElements).ShouldNot(m, "should fail with duplicate elements")
-               Ω(nils).ShouldNot(m, "should fail with an uninitialized slice")
-       })
-
-       It("should ignore missing elements", func() {
-               m := MatchElements(id, IgnoreMissing, Elements{
-                       "a": Equal("a"),
-                       "b": Equal("b"),
-               })
-               Ω(allElements).Should(m, "should match all elements")
-               Ω(missingElements).Should(m, "should ignore missing elements")
-               Ω(extraElements).ShouldNot(m, "should fail with extra elements")
-               Ω(duplicateElements).ShouldNot(m, "should fail with duplicate elements")
-               Ω(nils).Should(m, "should ignore an uninitialized slice")
-       })
-
-       It("should ignore missing and extra elements", func() {
-               m := MatchElements(id, IgnoreMissing|IgnoreExtras, Elements{
-                       "a": Equal("a"),
-                       "b": Equal("b"),
-               })
-               Ω(allElements).Should(m, "should match all elements")
-               Ω(missingElements).Should(m, "should ignore missing elements")
-               Ω(extraElements).Should(m, "should ignore extra elements")
-               Ω(duplicateElements).ShouldNot(m, "should fail with duplicate elements")
-               Ω(nils).Should(m, "should ignore an uninitialized slice")
-
-               m = MatchElements(id, IgnoreExtras|IgnoreMissing, Elements{
-                       "a": Equal("a"),
-                       "b": Equal("fail"),
-               })
-               Ω(allElements).ShouldNot(m, "should run nested matchers")
-       })
-
-       Context("with elements that share a key", func() {
-               nonUniqueID := func(element interface{}) string {
-                       return element.(string)[0:1]
-               }
-
-               allElements := []string{"a123", "a213", "b321"}
-               includingBadElements := []string{"a123", "b123", "b5555"}
-               extraElements := []string{"a123", "b1234", "c345"}
-               missingElements := []string{"b123", "b1234", "b1345"}
-
-               It("should strictly allow multiple matches", func() {
-                       m := MatchElements(nonUniqueID, AllowDuplicates, Elements{
-                               "a": ContainSubstring("1"),
-                               "b": ContainSubstring("1"),
-                       })
-                       Ω(allElements).Should(m, "should match all elements")
-                       Ω(includingBadElements).ShouldNot(m, "should reject if a member fails the matcher")
-                       Ω(extraElements).ShouldNot(m, "should reject with extra keys")
-                       Ω(missingElements).ShouldNot(m, "should reject with missing keys")
-                       Ω(nils).ShouldNot(m, "should fail with an uninitialized slice")
-               })
-
-               It("should ignore missing", func() {
-                       m := MatchElements(nonUniqueID, AllowDuplicates|IgnoreMissing, Elements{
-                               "a": ContainSubstring("1"),
-                               "b": ContainSubstring("1"),
-                       })
-                       Ω(allElements).Should(m, "should match all elements")
-                       Ω(includingBadElements).ShouldNot(m, "should reject if a member fails the matcher")
-                       Ω(extraElements).ShouldNot(m, "should reject with extra keys")
-                       Ω(missingElements).Should(m, "should allow missing keys")
-                       Ω(nils).Should(m, "should allow an uninitialized slice")
-               })
-
-               It("should ignore extras", func() {
-                       m := MatchElements(nonUniqueID, AllowDuplicates|IgnoreExtras, Elements{
-                               "a": ContainSubstring("1"),
-                               "b": ContainSubstring("1"),
-                       })
-                       Ω(allElements).Should(m, "should match all elements")
-                       Ω(includingBadElements).ShouldNot(m, "should reject if a member fails the matcher")
-                       Ω(extraElements).Should(m, "should allow extra keys")
-                       Ω(missingElements).ShouldNot(m, "should reject missing keys")
-                       Ω(nils).ShouldNot(m, "should reject an uninitialized slice")
-               })
-
-               It("should ignore missing and extras", func() {
-                       m := MatchElements(nonUniqueID, AllowDuplicates|IgnoreExtras|IgnoreMissing, Elements{
-                               "a": ContainSubstring("1"),
-                               "b": ContainSubstring("1"),
-                       })
-                       Ω(allElements).Should(m, "should match all elements")
-                       Ω(includingBadElements).ShouldNot(m, "should reject if a member fails the matcher")
-                       Ω(extraElements).Should(m, "should allow extra keys")
-                       Ω(missingElements).Should(m, "should allow missing keys")
-                       Ω(nils).Should(m, "should allow an uninitialized slice")
-               })
-       })
-})
-
-func id(element interface{}) string {
-       return element.(string)
-}
diff --git a/vendor/github.com/onsi/gomega/gstruct/errors/nested_types.go b/vendor/github.com/onsi/gomega/gstruct/errors/nested_types.go
deleted file mode 100644 (file)
index 188492b..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-package errors
-
-import (
-       "fmt"
-       "strings"
-
-       "github.com/onsi/gomega/types"
-)
-
-// A stateful matcher that nests other matchers within it and preserves the error types of the
-// nested matcher failures.
-type NestingMatcher interface {
-       types.GomegaMatcher
-
-       // Returns the failures of nested matchers.
-       Failures() []error
-}
-
-// An error type for labeling errors on deeply nested matchers.
-type NestedError struct {
-       Path string
-       Err  error
-}
-
-func (e *NestedError) Error() string {
-       // Indent Errors.
-       indented := strings.Replace(e.Err.Error(), "\n", "\n\t", -1)
-       return fmt.Sprintf("%s:\n\t%v", e.Path, indented)
-}
-
-// Create a NestedError with the given path.
-// If err is a NestedError, prepend the path to it.
-// If err is an AggregateError, recursively Nest each error.
-func Nest(path string, err error) error {
-       if ag, ok := err.(AggregateError); ok {
-               var errs AggregateError
-               for _, e := range ag {
-                       errs = append(errs, Nest(path, e))
-               }
-               return errs
-       }
-       if ne, ok := err.(*NestedError); ok {
-               return &NestedError{
-                       Path: path + ne.Path,
-                       Err:  ne.Err,
-               }
-       }
-       return &NestedError{
-               Path: path,
-               Err:  err,
-       }
-}
-
-// An error type for treating multiple errors as a single error.
-type AggregateError []error
-
-// Error is part of the error interface.
-func (err AggregateError) Error() string {
-       if len(err) == 0 {
-               // This should never happen, really.
-               return ""
-       }
-       if len(err) == 1 {
-               return err[0].Error()
-       }
-       result := fmt.Sprintf("[%s", err[0].Error())
-       for i := 1; i < len(err); i++ {
-               result += fmt.Sprintf(", %s", err[i].Error())
-       }
-       result += "]"
-       return result
-}
diff --git a/vendor/github.com/onsi/gomega/gstruct/fields.go b/vendor/github.com/onsi/gomega/gstruct/fields.go
deleted file mode 100644 (file)
index f3c1575..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-package gstruct
-
-import (
-       "errors"
-       "fmt"
-       "reflect"
-       "runtime/debug"
-       "strings"
-
-       "github.com/onsi/gomega/format"
-       errorsutil "github.com/onsi/gomega/gstruct/errors"
-       "github.com/onsi/gomega/types"
-)
-
-//MatchAllFields succeeds if every field of a struct matches the field matcher associated with
-//it, and every element matcher is matched.
-//  Expect([]string{"a", "b"}).To(MatchAllFields(idFn, gstruct.Fields{
-//      "a": BeEqual("a"),
-//      "b": BeEqual("b"),
-//  })
-func MatchAllFields(fields Fields) types.GomegaMatcher {
-       return &FieldsMatcher{
-               Fields: fields,
-       }
-}
-
-//MatchFields succeeds if each element of a struct matches the field matcher associated with
-//it. It can ignore extra fields and/or missing fields.
-//  Expect([]string{"a", "c"}).To(MatchFields(idFn, IgnoreMissing|IgnoreExtra, gstruct.Fields{
-//      "a": BeEqual("a")
-//      "b": BeEqual("b"),
-//  })
-func MatchFields(options Options, fields Fields) types.GomegaMatcher {
-       return &FieldsMatcher{
-               Fields:        fields,
-               IgnoreExtras:  options&IgnoreExtras != 0,
-               IgnoreMissing: options&IgnoreMissing != 0,
-       }
-}
-
-type FieldsMatcher struct {
-       // Matchers for each field.
-       Fields Fields
-
-       // Whether to ignore extra elements or consider it an error.
-       IgnoreExtras bool
-       // Whether to ignore missing elements or consider it an error.
-       IgnoreMissing bool
-
-       // State.
-       failures []error
-}
-
-// Field name to matcher.
-type Fields map[string]types.GomegaMatcher
-
-func (m *FieldsMatcher) Match(actual interface{}) (success bool, err error) {
-       if reflect.TypeOf(actual).Kind() != reflect.Struct {
-               return false, fmt.Errorf("%v is type %T, expected struct", actual, actual)
-       }
-
-       m.failures = m.matchFields(actual)
-       if len(m.failures) > 0 {
-               return false, nil
-       }
-       return true, nil
-}
-
-func (m *FieldsMatcher) matchFields(actual interface{}) (errs []error) {
-       val := reflect.ValueOf(actual)
-       typ := val.Type()
-       fields := map[string]bool{}
-       for i := 0; i < val.NumField(); i++ {
-               fieldName := typ.Field(i).Name
-               fields[fieldName] = true
-
-               err := func() (err error) {
-                       // This test relies heavily on reflect, which tends to panic.
-                       // Recover here to provide more useful error messages in that case.
-                       defer func() {
-                               if r := recover(); r != nil {
-                                       err = fmt.Errorf("panic checking %+v: %v\n%s", actual, r, debug.Stack())
-                               }
-                       }()
-
-                       matcher, expected := m.Fields[fieldName]
-                       if !expected {
-                               if !m.IgnoreExtras {
-                                       return fmt.Errorf("unexpected field %s: %+v", fieldName, actual)
-                               }
-                               return nil
-                       }
-
-                       var field interface{}
-                       if val.Field(i).IsValid() {
-                               field = val.Field(i).Interface()
-                       } else {
-                               field = reflect.Zero(typ.Field(i).Type)
-                       }
-
-                       match, err := matcher.Match(field)
-                       if err != nil {
-                               return err
-                       } else if !match {
-                               if nesting, ok := matcher.(errorsutil.NestingMatcher); ok {
-                                       return errorsutil.AggregateError(nesting.Failures())
-                               }
-                               return errors.New(matcher.FailureMessage(field))
-                       }
-                       return nil
-               }()
-               if err != nil {
-                       errs = append(errs, errorsutil.Nest("."+fieldName, err))
-               }
-       }
-
-       for field := range m.Fields {
-               if !fields[field] && !m.IgnoreMissing {
-                       errs = append(errs, fmt.Errorf("missing expected field %s", field))
-               }
-       }
-
-       return errs
-}
-
-func (m *FieldsMatcher) FailureMessage(actual interface{}) (message string) {
-       failures := make([]string, len(m.failures))
-       for i := range m.failures {
-               failures[i] = m.failures[i].Error()
-       }
-       return format.Message(reflect.TypeOf(actual).Name(),
-               fmt.Sprintf("to match fields: {\n%v\n}\n", strings.Join(failures, "\n")))
-}
-
-func (m *FieldsMatcher) NegatedFailureMessage(actual interface{}) (message string) {
-       return format.Message(actual, "not to match fields")
-}
-
-func (m *FieldsMatcher) Failures() []error {
-       return m.failures
-}
diff --git a/vendor/github.com/onsi/gomega/gstruct/fields_test.go b/vendor/github.com/onsi/gomega/gstruct/fields_test.go
deleted file mode 100644 (file)
index 61f4afc..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-package gstruct_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/gstruct"
-)
-
-var _ = Describe("Struct", func() {
-       allFields := struct{ A, B string }{"a", "b"}
-       missingFields := struct{ A string }{"a"}
-       extraFields := struct{ A, B, C string }{"a", "b", "c"}
-       emptyFields := struct{ A, B string }{}
-
-       It("should strictly match all fields", func() {
-               m := MatchAllFields(Fields{
-                       "B": Equal("b"),
-                       "A": Equal("a"),
-               })
-               Ω(allFields).Should(m, "should match all fields")
-               Ω(missingFields).ShouldNot(m, "should fail with missing fields")
-               Ω(extraFields).ShouldNot(m, "should fail with extra fields")
-               Ω(emptyFields).ShouldNot(m, "should fail with empty fields")
-
-               m = MatchAllFields(Fields{
-                       "A": Equal("a"),
-                       "B": Equal("fail"),
-               })
-               Ω(allFields).ShouldNot(m, "should run nested matchers")
-       })
-
-       It("should handle empty structs", func() {
-               m := MatchAllFields(Fields{})
-               Ω(struct{}{}).Should(m, "should handle empty structs")
-               Ω(allFields).ShouldNot(m, "should fail with extra fields")
-       })
-
-       It("should ignore missing fields", func() {
-               m := MatchFields(IgnoreMissing, Fields{
-                       "B": Equal("b"),
-                       "A": Equal("a"),
-               })
-               Ω(allFields).Should(m, "should match all fields")
-               Ω(missingFields).Should(m, "should ignore missing fields")
-               Ω(extraFields).ShouldNot(m, "should fail with extra fields")
-               Ω(emptyFields).ShouldNot(m, "should fail with empty fields")
-       })
-
-       It("should ignore extra fields", func() {
-               m := MatchFields(IgnoreExtras, Fields{
-                       "B": Equal("b"),
-                       "A": Equal("a"),
-               })
-               Ω(allFields).Should(m, "should match all fields")
-               Ω(missingFields).ShouldNot(m, "should fail with missing fields")
-               Ω(extraFields).Should(m, "should ignore extra fields")
-               Ω(emptyFields).ShouldNot(m, "should fail with empty fields")
-       })
-
-       It("should ignore missing and extra fields", func() {
-               m := MatchFields(IgnoreMissing|IgnoreExtras, Fields{
-                       "B": Equal("b"),
-                       "A": Equal("a"),
-               })
-               Ω(allFields).Should(m, "should match all fields")
-               Ω(missingFields).Should(m, "should ignore missing fields")
-               Ω(extraFields).Should(m, "should ignore extra fields")
-               Ω(emptyFields).ShouldNot(m, "should fail with empty fields")
-
-               m = MatchFields(IgnoreMissing|IgnoreExtras, Fields{
-                       "A": Equal("a"),
-                       "B": Equal("fail"),
-               })
-               Ω(allFields).ShouldNot(m, "should run nested matchers")
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/gstruct/gstruct_tests_suite_test.go b/vendor/github.com/onsi/gomega/gstruct/gstruct_tests_suite_test.go
deleted file mode 100644 (file)
index d475663..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-package gstruct_test
-
-import (
-       "testing"
-
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-)
-
-func Test(t *testing.T) {
-       RegisterFailHandler(Fail)
-       RunSpecs(t, "Gstruct Suite")
-}
diff --git a/vendor/github.com/onsi/gomega/gstruct/ignore.go b/vendor/github.com/onsi/gomega/gstruct/ignore.go
deleted file mode 100644 (file)
index 0365f32..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-package gstruct
-
-import (
-       "github.com/onsi/gomega/types"
-)
-
-//Ignore ignores the actual value and always succeeds.
-//  Expect(nil).To(Ignore())
-//  Expect(true).To(Ignore())
-func Ignore() types.GomegaMatcher {
-       return &IgnoreMatcher{true}
-}
-
-//Reject ignores the actual value and always fails. It can be used in conjunction with IgnoreMissing
-//to catch problematic elements, or to verify tests are running.
-//  Expect(nil).NotTo(Reject())
-//  Expect(true).NotTo(Reject())
-func Reject() types.GomegaMatcher {
-       return &IgnoreMatcher{false}
-}
-
-// A matcher that either always succeeds or always fails.
-type IgnoreMatcher struct {
-       Succeed bool
-}
-
-func (m *IgnoreMatcher) Match(actual interface{}) (bool, error) {
-       return m.Succeed, nil
-}
-
-func (m *IgnoreMatcher) FailureMessage(_ interface{}) (message string) {
-       return "Unconditional failure"
-}
-
-func (m *IgnoreMatcher) NegatedFailureMessage(_ interface{}) (message string) {
-       return "Unconditional success"
-}
diff --git a/vendor/github.com/onsi/gomega/gstruct/ignore_test.go b/vendor/github.com/onsi/gomega/gstruct/ignore_test.go
deleted file mode 100644 (file)
index 70e1d40..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-package gstruct_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/gstruct"
-)
-
-var _ = Describe("Ignore", func() {
-       It("should always succeed", func() {
-               Ω(nil).Should(Ignore())
-               Ω(struct{}{}).Should(Ignore())
-               Ω(0).Should(Ignore())
-               Ω(false).Should(Ignore())
-       })
-
-       It("should always fail", func() {
-               Ω(nil).ShouldNot(Reject())
-               Ω(struct{}{}).ShouldNot(Reject())
-               Ω(1).ShouldNot(Reject())
-               Ω(true).ShouldNot(Reject())
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/gstruct/pointer.go b/vendor/github.com/onsi/gomega/gstruct/pointer.go
deleted file mode 100644 (file)
index 0a2f35d..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-package gstruct
-
-import (
-       "fmt"
-       "reflect"
-
-       "github.com/onsi/gomega/format"
-       "github.com/onsi/gomega/types"
-)
-
-//PointTo applies the given matcher to the value pointed to by actual. It fails if the pointer is
-//nil.
-//  actual := 5
-//  Expect(&actual).To(PointTo(Equal(5)))
-func PointTo(matcher types.GomegaMatcher) types.GomegaMatcher {
-       return &PointerMatcher{
-               Matcher: matcher,
-       }
-}
-
-type PointerMatcher struct {
-       Matcher types.GomegaMatcher
-
-       // Failure message.
-       failure string
-}
-
-func (m *PointerMatcher) Match(actual interface{}) (bool, error) {
-       val := reflect.ValueOf(actual)
-
-       // return error if actual type is not a pointer
-       if val.Kind() != reflect.Ptr {
-               return false, fmt.Errorf("PointerMatcher expects a pointer but we have '%s'", val.Kind())
-       }
-
-       if !val.IsValid() || val.IsNil() {
-               m.failure = format.Message(actual, "not to be <nil>")
-               return false, nil
-       }
-
-       // Forward the value.
-       elem := val.Elem().Interface()
-       match, err := m.Matcher.Match(elem)
-       if !match {
-               m.failure = m.Matcher.FailureMessage(elem)
-       }
-       return match, err
-}
-
-func (m *PointerMatcher) FailureMessage(_ interface{}) (message string) {
-       return m.failure
-}
-
-func (m *PointerMatcher) NegatedFailureMessage(actual interface{}) (message string) {
-       return m.Matcher.NegatedFailureMessage(actual)
-}
diff --git a/vendor/github.com/onsi/gomega/gstruct/pointer_test.go b/vendor/github.com/onsi/gomega/gstruct/pointer_test.go
deleted file mode 100644 (file)
index b02081c..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-package gstruct_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/gstruct"
-)
-
-var _ = Describe("PointTo", func() {
-       It("should fail when passed nil", func() {
-               var p *struct{}
-               Ω(p).Should(BeNil())
-       })
-
-       It("should succeed when passed non-nil pointer", func() {
-               var s struct{}
-               Ω(&s).Should(PointTo(Ignore()))
-       })
-
-       It("should unwrap the pointee value", func() {
-               i := 1
-               Ω(&i).Should(PointTo(Equal(1)))
-               Ω(&i).ShouldNot(PointTo(Equal(2)))
-       })
-
-       It("should work with nested pointers", func() {
-               i := 1
-               ip := &i
-               ipp := &ip
-               Ω(ipp).Should(PointTo(PointTo(Equal(1))))
-               Ω(ipp).ShouldNot(PointTo(PointTo(Equal(2))))
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/gstruct/types.go b/vendor/github.com/onsi/gomega/gstruct/types.go
deleted file mode 100644 (file)
index 48cbbe8..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-package gstruct
-
-//Options is the type for options passed to some matchers.
-type Options int
-
-const (
-       //IgnoreExtras tells the matcher to ignore extra elements or fields, rather than triggering a failure.
-       IgnoreExtras Options = 1 << iota
-       //IgnoreMissing tells the matcher to ignore missing elements or fields, rather than triggering a failure.
-       IgnoreMissing
-       //AllowDuplicates tells the matcher to permit multiple members of the slice to produce the same ID when
-       //considered by the indentifier function. All members that map to a given key must still match successfully
-       //with the matcher that is provided for that key.
-       AllowDuplicates
-)
diff --git a/vendor/github.com/onsi/gomega/internal/assertion/assertion_suite_test.go b/vendor/github.com/onsi/gomega/internal/assertion/assertion_suite_test.go
deleted file mode 100644 (file)
index dae47a4..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-package assertion_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-
-       "testing"
-)
-
-func TestAssertion(t *testing.T) {
-       RegisterFailHandler(Fail)
-       RunSpecs(t, "Assertion Suite")
-}
diff --git a/vendor/github.com/onsi/gomega/internal/assertion/assertion_test.go b/vendor/github.com/onsi/gomega/internal/assertion/assertion_test.go
deleted file mode 100644 (file)
index c03b7a3..0000000
+++ /dev/null
@@ -1,252 +0,0 @@
-package assertion_test
-
-import (
-       "errors"
-
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/internal/assertion"
-       "github.com/onsi/gomega/internal/fakematcher"
-)
-
-var _ = Describe("Assertion", func() {
-       var (
-               a                 *Assertion
-               failureMessage    string
-               failureCallerSkip int
-               matcher           *fakematcher.FakeMatcher
-       )
-
-       input := "The thing I'm testing"
-
-       var fakeFailHandler = func(message string, callerSkip ...int) {
-               failureMessage = message
-               if len(callerSkip) == 1 {
-                       failureCallerSkip = callerSkip[0]
-               }
-       }
-
-       BeforeEach(func() {
-               matcher = &fakematcher.FakeMatcher{}
-               failureMessage = ""
-               failureCallerSkip = 0
-               a = New(input, fakeFailHandler, 1)
-       })
-
-       Context("when called", func() {
-               It("should pass the provided input value to the matcher", func() {
-                       a.Should(matcher)
-
-                       Ω(matcher.ReceivedActual).Should(Equal(input))
-                       matcher.ReceivedActual = ""
-
-                       a.ShouldNot(matcher)
-
-                       Ω(matcher.ReceivedActual).Should(Equal(input))
-                       matcher.ReceivedActual = ""
-
-                       a.To(matcher)
-
-                       Ω(matcher.ReceivedActual).Should(Equal(input))
-                       matcher.ReceivedActual = ""
-
-                       a.ToNot(matcher)
-
-                       Ω(matcher.ReceivedActual).Should(Equal(input))
-                       matcher.ReceivedActual = ""
-
-                       a.NotTo(matcher)
-
-                       Ω(matcher.ReceivedActual).Should(Equal(input))
-               })
-       })
-
-       Context("when the matcher succeeds", func() {
-               BeforeEach(func() {
-                       matcher.MatchesToReturn = true
-                       matcher.ErrToReturn = nil
-               })
-
-               Context("and a positive assertion is being made", func() {
-                       It("should not call the failure callback", func() {
-                               a.Should(matcher)
-                               Ω(failureMessage).Should(Equal(""))
-                       })
-
-                       It("should be true", func() {
-                               Ω(a.Should(matcher)).Should(BeTrue())
-                       })
-               })
-
-               Context("and a negative assertion is being made", func() {
-                       It("should call the failure callback", func() {
-                               a.ShouldNot(matcher)
-                               Ω(failureMessage).Should(Equal("negative: The thing I'm testing"))
-                               Ω(failureCallerSkip).Should(Equal(3))
-                       })
-
-                       It("should be false", func() {
-                               Ω(a.ShouldNot(matcher)).Should(BeFalse())
-                       })
-               })
-       })
-
-       Context("when the matcher fails", func() {
-               BeforeEach(func() {
-                       matcher.MatchesToReturn = false
-                       matcher.ErrToReturn = nil
-               })
-
-               Context("and a positive assertion is being made", func() {
-                       It("should call the failure callback", func() {
-                               a.Should(matcher)
-                               Ω(failureMessage).Should(Equal("positive: The thing I'm testing"))
-                               Ω(failureCallerSkip).Should(Equal(3))
-                       })
-
-                       It("should be false", func() {
-                               Ω(a.Should(matcher)).Should(BeFalse())
-                       })
-               })
-
-               Context("and a negative assertion is being made", func() {
-                       It("should not call the failure callback", func() {
-                               a.ShouldNot(matcher)
-                               Ω(failureMessage).Should(Equal(""))
-                       })
-
-                       It("should be true", func() {
-                               Ω(a.ShouldNot(matcher)).Should(BeTrue())
-                       })
-               })
-       })
-
-       Context("When reporting a failure", func() {
-               BeforeEach(func() {
-                       matcher.MatchesToReturn = false
-                       matcher.ErrToReturn = nil
-               })
-
-               Context("and there is an optional description", func() {
-                       It("should append the description to the failure message", func() {
-                               a.Should(matcher, "A description")
-                               Ω(failureMessage).Should(Equal("A description\npositive: The thing I'm testing"))
-                               Ω(failureCallerSkip).Should(Equal(3))
-                       })
-               })
-
-               Context("and there are multiple arguments to the optional description", func() {
-                       It("should append the formatted description to the failure message", func() {
-                               a.Should(matcher, "A description of [%d]", 3)
-                               Ω(failureMessage).Should(Equal("A description of [3]\npositive: The thing I'm testing"))
-                               Ω(failureCallerSkip).Should(Equal(3))
-                       })
-               })
-       })
-
-       Context("When the matcher returns an error", func() {
-               BeforeEach(func() {
-                       matcher.ErrToReturn = errors.New("Kaboom!")
-               })
-
-               Context("and a positive assertion is being made", func() {
-                       It("should call the failure callback", func() {
-                               matcher.MatchesToReturn = true
-                               a.Should(matcher)
-                               Ω(failureMessage).Should(Equal("Kaboom!"))
-                               Ω(failureCallerSkip).Should(Equal(3))
-                       })
-               })
-
-               Context("and a negative assertion is being made", func() {
-                       It("should call the failure callback", func() {
-                               matcher.MatchesToReturn = false
-                               a.ShouldNot(matcher)
-                               Ω(failureMessage).Should(Equal("Kaboom!"))
-                               Ω(failureCallerSkip).Should(Equal(3))
-                       })
-               })
-
-               It("should always be false", func() {
-                       Ω(a.Should(matcher)).Should(BeFalse())
-                       Ω(a.ShouldNot(matcher)).Should(BeFalse())
-               })
-       })
-
-       Context("when there are extra parameters", func() {
-               It("(a simple example)", func() {
-                       Ω(func() (string, int, error) {
-                               return "foo", 0, nil
-                       }()).Should(Equal("foo"))
-               })
-
-               Context("when the parameters are all nil or zero", func() {
-                       It("should invoke the matcher", func() {
-                               matcher.MatchesToReturn = true
-                               matcher.ErrToReturn = nil
-
-                               var typedNil []string
-                               a = New(input, fakeFailHandler, 1, 0, nil, typedNil)
-
-                               result := a.Should(matcher)
-                               Ω(result).Should(BeTrue())
-                               Ω(matcher.ReceivedActual).Should(Equal(input))
-
-                               Ω(failureMessage).Should(BeZero())
-                       })
-               })
-
-               Context("when any of the parameters are not nil or zero", func() {
-                       It("should call the failure callback", func() {
-                               matcher.MatchesToReturn = false
-                               matcher.ErrToReturn = nil
-
-                               a = New(input, fakeFailHandler, 1, errors.New("foo"))
-                               result := a.Should(matcher)
-                               Ω(result).Should(BeFalse())
-                               Ω(matcher.ReceivedActual).Should(BeZero(), "The matcher doesn't even get called")
-                               Ω(failureMessage).Should(ContainSubstring("foo"))
-                               failureMessage = ""
-
-                               a = New(input, fakeFailHandler, 1, nil, 1)
-                               result = a.ShouldNot(matcher)
-                               Ω(result).Should(BeFalse())
-                               Ω(failureMessage).Should(ContainSubstring("1"))
-                               failureMessage = ""
-
-                               a = New(input, fakeFailHandler, 1, nil, 0, []string{"foo"})
-                               result = a.To(matcher)
-                               Ω(result).Should(BeFalse())
-                               Ω(failureMessage).Should(ContainSubstring("foo"))
-                               failureMessage = ""
-
-                               a = New(input, fakeFailHandler, 1, nil, 0, []string{"foo"})
-                               result = a.ToNot(matcher)
-                               Ω(result).Should(BeFalse())
-                               Ω(failureMessage).Should(ContainSubstring("foo"))
-                               failureMessage = ""
-
-                               a = New(input, fakeFailHandler, 1, nil, 0, []string{"foo"})
-                               result = a.NotTo(matcher)
-                               Ω(result).Should(BeFalse())
-                               Ω(failureMessage).Should(ContainSubstring("foo"))
-                               Ω(failureCallerSkip).Should(Equal(3))
-                       })
-               })
-       })
-
-       Context("Making an assertion without a registered fail handler", func() {
-               It("should panic", func() {
-                       defer func() {
-                               e := recover()
-                               RegisterFailHandler(Fail)
-                               if e == nil {
-                                       Fail("expected a panic to have occurred")
-                               }
-                       }()
-
-                       RegisterFailHandler(nil)
-                       Ω(true).Should(BeTrue())
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion_suite_test.go b/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion_suite_test.go
deleted file mode 100644 (file)
index bdb0c3d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-package asyncassertion_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-
-       "testing"
-)
-
-func TestAsyncAssertion(t *testing.T) {
-       RegisterFailHandler(Fail)
-       RunSpecs(t, "AsyncAssertion Suite")
-}
diff --git a/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion_test.go b/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion_test.go
deleted file mode 100644 (file)
index 3d7e348..0000000
+++ /dev/null
@@ -1,345 +0,0 @@
-package asyncassertion_test
-
-import (
-       "errors"
-       "time"
-
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/internal/asyncassertion"
-)
-
-var _ = Describe("Async Assertion", func() {
-       var (
-               failureMessage string
-               callerSkip     int
-       )
-
-       var fakeFailHandler = func(message string, skip ...int) {
-               failureMessage = message
-               callerSkip = skip[0]
-       }
-
-       BeforeEach(func() {
-               failureMessage = ""
-               callerSkip = 0
-       })
-
-       Describe("Eventually", func() {
-               Context("the positive case", func() {
-                       It("should poll the function and matcher", func() {
-                               counter := 0
-                               a := New(AsyncAssertionTypeEventually, func() int {
-                                       counter++
-                                       return counter
-                               }, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1)
-
-                               a.Should(BeNumerically("==", 5))
-                               Ω(failureMessage).Should(BeZero())
-                       })
-
-                       It("should continue when the matcher errors", func() {
-                               counter := 0
-                               a := New(AsyncAssertionTypeEventually, func() interface{} {
-                                       counter++
-                                       if counter == 5 {
-                                               return "not-a-number" //this should cause the matcher to error
-                                       }
-                                       return counter
-                               }, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1)
-
-                               a.Should(BeNumerically("==", 5), "My description %d", 2)
-
-                               Ω(failureMessage).Should(ContainSubstring("Timed out after"))
-                               Ω(failureMessage).Should(ContainSubstring("My description 2"))
-                               Ω(callerSkip).Should(Equal(4))
-                       })
-
-                       It("should be able to timeout", func() {
-                               counter := 0
-                               a := New(AsyncAssertionTypeEventually, func() int {
-                                       counter++
-                                       return counter
-                               }, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1)
-
-                               a.Should(BeNumerically(">", 100), "My description %d", 2)
-
-                               Ω(counter).Should(BeNumerically(">", 8))
-                               Ω(counter).Should(BeNumerically("<=", 10))
-                               Ω(failureMessage).Should(ContainSubstring("Timed out after"))
-                               Ω(failureMessage).Should(MatchRegexp(`\<int\>: \d`), "Should pass the correct value to the matcher message formatter.")
-                               Ω(failureMessage).Should(ContainSubstring("My description 2"))
-                               Ω(callerSkip).Should(Equal(4))
-                       })
-               })
-
-               Context("the negative case", func() {
-                       It("should poll the function and matcher", func() {
-                               counter := 0
-                               a := New(AsyncAssertionTypeEventually, func() int {
-                                       counter += 1
-                                       return counter
-                               }, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1)
-
-                               a.ShouldNot(BeNumerically("<", 3))
-
-                               Ω(counter).Should(Equal(3))
-                               Ω(failureMessage).Should(BeZero())
-                       })
-
-                       It("should timeout when the matcher errors", func() {
-                               a := New(AsyncAssertionTypeEventually, func() interface{} {
-                                       return 0 //this should cause the matcher to error
-                               }, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1)
-
-                               a.ShouldNot(HaveLen(0), "My description %d", 2)
-
-                               Ω(failureMessage).Should(ContainSubstring("Timed out after"))
-                               Ω(failureMessage).Should(ContainSubstring("Error:"))
-                               Ω(failureMessage).Should(ContainSubstring("My description 2"))
-                               Ω(callerSkip).Should(Equal(4))
-                       })
-
-                       It("should be able to timeout", func() {
-                               a := New(AsyncAssertionTypeEventually, func() int {
-                                       return 0
-                               }, fakeFailHandler, time.Duration(0.1*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1)
-
-                               a.ShouldNot(Equal(0), "My description %d", 2)
-
-                               Ω(failureMessage).Should(ContainSubstring("Timed out after"))
-                               Ω(failureMessage).Should(ContainSubstring("<int>: 0"), "Should pass the correct value to the matcher message formatter.")
-                               Ω(failureMessage).Should(ContainSubstring("My description 2"))
-                               Ω(callerSkip).Should(Equal(4))
-                       })
-               })
-
-               Context("with a function that returns multiple values", func() {
-                       It("should eventually succeed if the additional arguments are nil", func() {
-                               i := 0
-                               Eventually(func() (int, error) {
-                                       i++
-                                       return i, nil
-                               }).Should(Equal(10))
-                       })
-
-                       It("should eventually timeout if the additional arguments are not nil", func() {
-                               i := 0
-                               a := New(AsyncAssertionTypeEventually, func() (int, error) {
-                                       i++
-                                       return i, errors.New("bam")
-                               }, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1)
-                               a.Should(Equal(2))
-
-                               Ω(failureMessage).Should(ContainSubstring("Timed out after"))
-                               Ω(failureMessage).Should(ContainSubstring("Error:"))
-                               Ω(failureMessage).Should(ContainSubstring("bam"))
-                               Ω(callerSkip).Should(Equal(4))
-                       })
-               })
-
-               Context("Making an assertion without a registered fail handler", func() {
-                       It("should panic", func() {
-                               defer func() {
-                                       e := recover()
-                                       RegisterFailHandler(Fail)
-                                       if e == nil {
-                                               Fail("expected a panic to have occurred")
-                                       }
-                               }()
-
-                               RegisterFailHandler(nil)
-                               c := make(chan bool, 1)
-                               c <- true
-                               Eventually(c).Should(Receive())
-                       })
-               })
-       })
-
-       Describe("Consistently", func() {
-               Describe("The positive case", func() {
-                       Context("when the matcher consistently passes for the duration", func() {
-                               It("should pass", func() {
-                                       calls := 0
-                                       a := New(AsyncAssertionTypeConsistently, func() string {
-                                               calls++
-                                               return "foo"
-                                       }, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1)
-
-                                       a.Should(Equal("foo"))
-                                       Ω(calls).Should(BeNumerically(">", 8))
-                                       Ω(calls).Should(BeNumerically("<=", 10))
-                                       Ω(failureMessage).Should(BeZero())
-                               })
-                       })
-
-                       Context("when the matcher fails at some point", func() {
-                               It("should fail", func() {
-                                       calls := 0
-                                       a := New(AsyncAssertionTypeConsistently, func() interface{} {
-                                               calls++
-                                               if calls > 5 {
-                                                       return "bar"
-                                               }
-                                               return "foo"
-                                       }, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1)
-
-                                       a.Should(Equal("foo"))
-                                       Ω(failureMessage).Should(ContainSubstring("to equal"))
-                                       Ω(callerSkip).Should(Equal(4))
-                               })
-                       })
-
-                       Context("when the matcher errors at some point", func() {
-                               It("should fail", func() {
-                                       calls := 0
-                                       a := New(AsyncAssertionTypeConsistently, func() interface{} {
-                                               calls++
-                                               if calls > 5 {
-                                                       return 3
-                                               }
-                                               return []int{1, 2, 3}
-                                       }, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1)
-
-                                       a.Should(HaveLen(3))
-                                       Ω(failureMessage).Should(ContainSubstring("HaveLen matcher expects"))
-                                       Ω(callerSkip).Should(Equal(4))
-                               })
-                       })
-               })
-
-               Describe("The negative case", func() {
-                       Context("when the matcher consistently passes for the duration", func() {
-                               It("should pass", func() {
-                                       c := make(chan bool)
-                                       a := New(AsyncAssertionTypeConsistently, c, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1)
-
-                                       a.ShouldNot(Receive())
-                                       Ω(failureMessage).Should(BeZero())
-                               })
-                       })
-
-                       Context("when the matcher fails at some point", func() {
-                               It("should fail", func() {
-                                       c := make(chan bool)
-                                       go func() {
-                                               time.Sleep(time.Duration(100 * time.Millisecond))
-                                               c <- true
-                                       }()
-
-                                       a := New(AsyncAssertionTypeConsistently, c, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1)
-
-                                       a.ShouldNot(Receive())
-                                       Ω(failureMessage).Should(ContainSubstring("not to receive anything"))
-                               })
-                       })
-
-                       Context("when the matcher errors at some point", func() {
-                               It("should fail", func() {
-                                       calls := 0
-                                       a := New(AsyncAssertionTypeConsistently, func() interface{} {
-                                               calls++
-                                               return calls
-                                       }, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1)
-
-                                       a.ShouldNot(BeNumerically(">", 5))
-                                       Ω(failureMessage).Should(ContainSubstring("not to be >"))
-                                       Ω(callerSkip).Should(Equal(4))
-                               })
-                       })
-               })
-
-               Context("with a function that returns multiple values", func() {
-                       It("should consistently succeed if the additional arguments are nil", func() {
-                               i := 2
-                               Consistently(func() (int, error) {
-                                       i++
-                                       return i, nil
-                               }).Should(BeNumerically(">=", 2))
-                       })
-
-                       It("should eventually timeout if the additional arguments are not nil", func() {
-                               i := 2
-                               a := New(AsyncAssertionTypeEventually, func() (int, error) {
-                                       i++
-                                       return i, errors.New("bam")
-                               }, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1)
-                               a.Should(BeNumerically(">=", 2))
-
-                               Ω(failureMessage).Should(ContainSubstring("Error:"))
-                               Ω(failureMessage).Should(ContainSubstring("bam"))
-                               Ω(callerSkip).Should(Equal(4))
-                       })
-               })
-
-               Context("Making an assertion without a registered fail handler", func() {
-                       It("should panic", func() {
-                               defer func() {
-                                       e := recover()
-                                       RegisterFailHandler(Fail)
-                                       if e == nil {
-                                               Fail("expected a panic to have occurred")
-                                       }
-                               }()
-
-                               RegisterFailHandler(nil)
-                               c := make(chan bool)
-                               Consistently(c).ShouldNot(Receive())
-                       })
-               })
-       })
-
-       Context("when passed a function with the wrong # or arguments & returns", func() {
-               It("should panic", func() {
-                       Ω(func() {
-                               New(AsyncAssertionTypeEventually, func() {}, fakeFailHandler, 0, 0, 1)
-                       }).Should(Panic())
-
-                       Ω(func() {
-                               New(AsyncAssertionTypeEventually, func(a string) int { return 0 }, fakeFailHandler, 0, 0, 1)
-                       }).Should(Panic())
-
-                       Ω(func() {
-                               New(AsyncAssertionTypeEventually, func() int { return 0 }, fakeFailHandler, 0, 0, 1)
-                       }).ShouldNot(Panic())
-
-                       Ω(func() {
-                               New(AsyncAssertionTypeEventually, func() (int, error) { return 0, nil }, fakeFailHandler, 0, 0, 1)
-                       }).ShouldNot(Panic())
-               })
-       })
-
-       Describe("bailing early", func() {
-               Context("when actual is a value", func() {
-                       It("Eventually should bail out and fail early if the matcher says to", func() {
-                               c := make(chan bool)
-                               close(c)
-
-                               t := time.Now()
-                               failures := InterceptGomegaFailures(func() {
-                                       Eventually(c, 0.1).Should(Receive())
-                               })
-                               Ω(time.Since(t)).Should(BeNumerically("<", 90*time.Millisecond))
-
-                               Ω(failures).Should(HaveLen(1))
-                       })
-               })
-
-               Context("when actual is a function", func() {
-                       It("should never bail early", func() {
-                               c := make(chan bool)
-                               close(c)
-
-                               t := time.Now()
-                               failures := InterceptGomegaFailures(func() {
-                                       Eventually(func() chan bool {
-                                               return c
-                                       }, 0.1).Should(Receive())
-                               })
-                               Ω(time.Since(t)).Should(BeNumerically(">=", 90*time.Millisecond))
-
-                               Ω(failures).Should(HaveLen(1))
-                       })
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/internal/fakematcher/fake_matcher.go b/vendor/github.com/onsi/gomega/internal/fakematcher/fake_matcher.go
deleted file mode 100644 (file)
index 6e351a7..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-package fakematcher
-
-import "fmt"
-
-type FakeMatcher struct {
-       ReceivedActual  interface{}
-       MatchesToReturn bool
-       ErrToReturn     error
-}
-
-func (matcher *FakeMatcher) Match(actual interface{}) (bool, error) {
-       matcher.ReceivedActual = actual
-
-       return matcher.MatchesToReturn, matcher.ErrToReturn
-}
-
-func (matcher *FakeMatcher) FailureMessage(actual interface{}) string {
-       return fmt.Sprintf("positive: %v", actual)
-}
-
-func (matcher *FakeMatcher) NegatedFailureMessage(actual interface{}) string {
-       return fmt.Sprintf("negative: %v", actual)
-}
diff --git a/vendor/github.com/onsi/gomega/internal/testingtsupport/testing_t_support_test.go b/vendor/github.com/onsi/gomega/internal/testingtsupport/testing_t_support_test.go
deleted file mode 100644 (file)
index b9fbd6c..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-package testingtsupport_test
-
-import (
-       . "github.com/onsi/gomega"
-
-       "testing"
-)
-
-func TestTestingT(t *testing.T) {
-       RegisterTestingT(t)
-       Ω(true).Should(BeTrue())
-}
diff --git a/vendor/github.com/onsi/gomega/matchers/and_test.go b/vendor/github.com/onsi/gomega/matchers/and_test.go
deleted file mode 100644 (file)
index acf778c..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-package matchers_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/matchers"
-       "github.com/onsi/gomega/types"
-)
-
-// sample data
-var (
-       // example input
-       input = "hi"
-       // some matchers that succeed against the input
-       true1 = HaveLen(2)
-       true2 = Equal("hi")
-       true3 = MatchRegexp("hi")
-       // some matchers that fail against the input.
-       false1 = HaveLen(1)
-       false2 = Equal("hip")
-       false3 = MatchRegexp("hope")
-)
-
-// verifyFailureMessage expects the matcher to fail with the given input, and verifies the failure message.
-func verifyFailureMessage(m types.GomegaMatcher, input string, expectedFailureMsgFragment string) {
-       Expect(m.Match(input)).To(BeFalse())
-       Expect(m.FailureMessage(input)).To(Equal(
-               "Expected\n    <string>: " + input + "\n" + expectedFailureMsgFragment))
-}
-
-var _ = Describe("AndMatcher", func() {
-       It("works with positive cases", func() {
-               Expect(input).To(And())
-               Expect(input).To(And(true1))
-               Expect(input).To(And(true1, true2))
-               Expect(input).To(And(true1, true2, true3))
-
-               // use alias
-               Expect(input).To(SatisfyAll(true1, true2, true3))
-       })
-
-       It("works with negative cases", func() {
-               Expect(input).ToNot(And(false1, false2))
-               Expect(input).ToNot(And(true1, true2, false3))
-               Expect(input).ToNot(And(true1, false2, false3))
-               Expect(input).ToNot(And(false1, true1, true2))
-       })
-
-       Context("failure messages", func() {
-               Context("when match fails", func() {
-                       It("gives a descriptive message", func() {
-                               verifyFailureMessage(And(false1, true1), input, "to have length 1")
-                               verifyFailureMessage(And(true1, false2), input, "to equal\n    <string>: hip")
-                               verifyFailureMessage(And(true1, true2, false3), input, "to match regular expression\n    <string>: hope")
-                       })
-               })
-
-               Context("when match succeeds, but expected it to fail", func() {
-                       It("gives a descriptive message", func() {
-                               verifyFailureMessage(Not(And(true1, true2)), input,
-                                       `To not satisfy all of these matchers: [%!s(*matchers.HaveLenMatcher=&{2}) %!s(*matchers.EqualMatcher=&{hi})]`)
-                       })
-               })
-       })
-
-       Context("MatchMayChangeInTheFuture", func() {
-               Context("Match returned false", func() {
-                       Context("returns value of the failed matcher", func() {
-                               It("false if failed matcher not going to change", func() {
-                                       // 3 matchers: 1st returns true, 2nd returns false and is not going to change, 3rd is never called
-                                       m := And(Not(BeNil()), Or(), Equal(1))
-                                       Expect(m.Match("hi")).To(BeFalse())
-                                       Expect(m.(*AndMatcher).MatchMayChangeInTheFuture("hi")).To(BeFalse()) // empty Or() indicates not going to change
-                               })
-                               It("true if failed matcher indicates it might change", func() {
-                                       // 3 matchers: 1st returns true, 2nd returns false and "might" change, 3rd is never called
-                                       m := And(Not(BeNil()), Equal(5), Equal(1))
-                                       Expect(m.Match("hi")).To(BeFalse())
-                                       Expect(m.(*AndMatcher).MatchMayChangeInTheFuture("hi")).To(BeTrue()) // Equal(5) indicates it might change
-                               })
-                       })
-               })
-               Context("Match returned true", func() {
-                       It("returns true if any of the matchers could change", func() {
-                               // 3 matchers, all return true, and all could change
-                               m := And(Not(BeNil()), Equal("hi"), HaveLen(2))
-                               Expect(m.Match("hi")).To(BeTrue())
-                               Expect(m.(*AndMatcher).MatchMayChangeInTheFuture("hi")).To(BeTrue()) // all 3 of these matchers default to 'true'
-                       })
-                       It("returns false if none of the matchers could change", func() {
-                               // empty And() has the property of always matching, and never can change since there are no sub-matchers that could change
-                               m := And()
-                               Expect(m.Match("anything")).To(BeTrue())
-                               Expect(m.(*AndMatcher).MatchMayChangeInTheFuture("anything")).To(BeFalse())
-
-                               // And() with 3 sub-matchers that return true, and can't change
-                               m = And(And(), And(), And())
-                               Expect(m.Match("hi")).To(BeTrue())
-                               Expect(m.(*AndMatcher).MatchMayChangeInTheFuture("hi")).To(BeFalse()) // the 3 empty And()'s won't change
-                       })
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/assignable_to_type_of_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/assignable_to_type_of_matcher_test.go
deleted file mode 100644 (file)
index d2280e0..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-package matchers_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/matchers"
-)
-
-var _ = Describe("AssignableToTypeOf", func() {
-       Context("When asserting assignability between types", func() {
-               It("should do the right thing", func() {
-                       Ω(0).Should(BeAssignableToTypeOf(0))
-                       Ω(5).Should(BeAssignableToTypeOf(-1))
-                       Ω("foo").Should(BeAssignableToTypeOf("bar"))
-                       Ω(struct{ Foo string }{}).Should(BeAssignableToTypeOf(struct{ Foo string }{}))
-
-                       Ω(0).ShouldNot(BeAssignableToTypeOf("bar"))
-                       Ω(5).ShouldNot(BeAssignableToTypeOf(struct{ Foo string }{}))
-                       Ω("foo").ShouldNot(BeAssignableToTypeOf(42))
-               })
-       })
-
-       Context("When asserting nil values", func() {
-               It("should error", func() {
-                       success, err := (&AssignableToTypeOfMatcher{Expected: nil}).Match(nil)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/be_a_directory_test.go b/vendor/github.com/onsi/gomega/matchers/be_a_directory_test.go
deleted file mode 100644 (file)
index e59d769..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-package matchers_test
-
-import (
-       "io/ioutil"
-       "os"
-
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/matchers"
-)
-
-var _ = Describe("BeADirectoryMatcher", func() {
-       Context("when passed a string", func() {
-               It("should do the right thing", func() {
-                       Ω("/dne/test").ShouldNot(BeADirectory())
-
-                       tmpFile, err := ioutil.TempFile("", "gomega-test-tempfile")
-                       Ω(err).ShouldNot(HaveOccurred())
-                       defer os.Remove(tmpFile.Name())
-                       Ω(tmpFile.Name()).ShouldNot(BeADirectory())
-
-                       tmpDir, err := ioutil.TempDir("", "gomega-test-tempdir")
-                       Ω(err).ShouldNot(HaveOccurred())
-                       defer os.Remove(tmpDir)
-                       Ω(tmpDir).Should(BeADirectory())
-               })
-       })
-
-       Context("when passed something else", func() {
-               It("should error", func() {
-                       success, err := (&BeADirectoryMatcher{}).Match(nil)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-
-                       success, err = (&BeADirectoryMatcher{}).Match(true)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/be_a_regular_file_test.go b/vendor/github.com/onsi/gomega/matchers/be_a_regular_file_test.go
deleted file mode 100644 (file)
index 951e750..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-package matchers_test
-
-import (
-       "io/ioutil"
-       "os"
-
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/matchers"
-)
-
-var _ = Describe("BeARegularFileMatcher", func() {
-       Context("when passed a string", func() {
-               It("should do the right thing", func() {
-                       Ω("/dne/test").ShouldNot(BeARegularFile())
-
-                       tmpFile, err := ioutil.TempFile("", "gomega-test-tempfile")
-                       Ω(err).ShouldNot(HaveOccurred())
-                       defer os.Remove(tmpFile.Name())
-                       Ω(tmpFile.Name()).Should(BeARegularFile())
-
-                       tmpDir, err := ioutil.TempDir("", "gomega-test-tempdir")
-                       Ω(err).ShouldNot(HaveOccurred())
-                       defer os.Remove(tmpDir)
-                       Ω(tmpDir).ShouldNot(BeARegularFile())
-               })
-       })
-
-       Context("when passed something else", func() {
-               It("should error", func() {
-                       success, err := (&BeARegularFileMatcher{}).Match(nil)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-
-                       success, err = (&BeARegularFileMatcher{}).Match(true)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/be_an_existing_file_test.go b/vendor/github.com/onsi/gomega/matchers/be_an_existing_file_test.go
deleted file mode 100644 (file)
index 775f7b6..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-package matchers_test
-
-import (
-       "io/ioutil"
-       "os"
-
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/matchers"
-)
-
-var _ = Describe("BeAnExistingFileMatcher", func() {
-       Context("when passed a string", func() {
-               It("should do the right thing", func() {
-                       Ω("/dne/test").ShouldNot(BeAnExistingFile())
-
-                       tmpFile, err := ioutil.TempFile("", "gomega-test-tempfile")
-                       Ω(err).ShouldNot(HaveOccurred())
-                       defer os.Remove(tmpFile.Name())
-                       Ω(tmpFile.Name()).Should(BeAnExistingFile())
-
-                       tmpDir, err := ioutil.TempDir("", "gomega-test-tempdir")
-                       Ω(err).ShouldNot(HaveOccurred())
-                       defer os.Remove(tmpDir)
-                       Ω(tmpDir).Should(BeAnExistingFile())
-               })
-       })
-
-       Context("when passed something else", func() {
-               It("should error", func() {
-                       success, err := (&BeAnExistingFileMatcher{}).Match(nil)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-
-                       success, err = (&BeAnExistingFileMatcher{}).Match(true)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/be_closed_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/be_closed_matcher_test.go
deleted file mode 100644 (file)
index b2c40c9..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-package matchers_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/matchers"
-)
-
-var _ = Describe("BeClosedMatcher", func() {
-       Context("when passed a channel", func() {
-               It("should do the right thing", func() {
-                       openChannel := make(chan bool)
-                       Ω(openChannel).ShouldNot(BeClosed())
-
-                       var openReaderChannel <-chan bool
-                       openReaderChannel = openChannel
-                       Ω(openReaderChannel).ShouldNot(BeClosed())
-
-                       closedChannel := make(chan bool)
-                       close(closedChannel)
-
-                       Ω(closedChannel).Should(BeClosed())
-
-                       var closedReaderChannel <-chan bool
-                       closedReaderChannel = closedChannel
-                       Ω(closedReaderChannel).Should(BeClosed())
-               })
-       })
-
-       Context("when passed a send-only channel", func() {
-               It("should error", func() {
-                       openChannel := make(chan bool)
-                       var openWriterChannel chan<- bool
-                       openWriterChannel = openChannel
-
-                       success, err := (&BeClosedMatcher{}).Match(openWriterChannel)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-
-                       closedChannel := make(chan bool)
-                       close(closedChannel)
-
-                       var closedWriterChannel chan<- bool
-                       closedWriterChannel = closedChannel
-
-                       success, err = (&BeClosedMatcher{}).Match(closedWriterChannel)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-
-               })
-       })
-
-       Context("when passed something else", func() {
-               It("should error", func() {
-                       var nilChannel chan bool
-
-                       success, err := (&BeClosedMatcher{}).Match(nilChannel)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-
-                       success, err = (&BeClosedMatcher{}).Match(nil)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-
-                       success, err = (&BeClosedMatcher{}).Match(7)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/be_empty_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/be_empty_matcher_test.go
deleted file mode 100644 (file)
index 541c1b9..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-package matchers_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/matchers"
-)
-
-var _ = Describe("BeEmpty", func() {
-       Context("when passed a supported type", func() {
-               It("should do the right thing", func() {
-                       Ω("").Should(BeEmpty())
-                       Ω(" ").ShouldNot(BeEmpty())
-
-                       Ω([0]int{}).Should(BeEmpty())
-                       Ω([1]int{1}).ShouldNot(BeEmpty())
-
-                       Ω([]int{}).Should(BeEmpty())
-                       Ω([]int{1}).ShouldNot(BeEmpty())
-
-                       Ω(map[string]int{}).Should(BeEmpty())
-                       Ω(map[string]int{"a": 1}).ShouldNot(BeEmpty())
-
-                       c := make(chan bool, 1)
-                       Ω(c).Should(BeEmpty())
-                       c <- true
-                       Ω(c).ShouldNot(BeEmpty())
-               })
-       })
-
-       Context("when passed a correctly typed nil", func() {
-               It("should be true", func() {
-                       var nilSlice []int
-                       Ω(nilSlice).Should(BeEmpty())
-
-                       var nilMap map[int]string
-                       Ω(nilMap).Should(BeEmpty())
-               })
-       })
-
-       Context("when passed an unsupported type", func() {
-               It("should error", func() {
-                       success, err := (&BeEmptyMatcher{}).Match(0)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-
-                       success, err = (&BeEmptyMatcher{}).Match(nil)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/be_equivalent_to_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/be_equivalent_to_matcher_test.go
deleted file mode 100644 (file)
index def5104..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-package matchers_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/matchers"
-)
-
-var _ = Describe("BeEquivalentTo", func() {
-       Context("when asserting that nil is equivalent to nil", func() {
-               It("should error", func() {
-                       success, err := (&BeEquivalentToMatcher{Expected: nil}).Match(nil)
-
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-
-       Context("When asserting on nil", func() {
-               It("should do the right thing", func() {
-                       Ω("foo").ShouldNot(BeEquivalentTo(nil))
-                       Ω(nil).ShouldNot(BeEquivalentTo(3))
-                       Ω([]int{1, 2}).ShouldNot(BeEquivalentTo(nil))
-               })
-       })
-
-       Context("When asserting on type aliases", func() {
-               It("should the right thing", func() {
-                       Ω(StringAlias("foo")).Should(BeEquivalentTo("foo"))
-                       Ω("foo").Should(BeEquivalentTo(StringAlias("foo")))
-                       Ω(StringAlias("foo")).ShouldNot(BeEquivalentTo("bar"))
-                       Ω("foo").ShouldNot(BeEquivalentTo(StringAlias("bar")))
-               })
-       })
-
-       Context("When asserting on numbers", func() {
-               It("should convert actual to expected and do the right thing", func() {
-                       Ω(5).Should(BeEquivalentTo(5))
-                       Ω(5.0).Should(BeEquivalentTo(5.0))
-                       Ω(5).Should(BeEquivalentTo(5.0))
-
-                       Ω(5).ShouldNot(BeEquivalentTo("5"))
-                       Ω(5).ShouldNot(BeEquivalentTo(3))
-
-                       //Here be dragons!
-                       Ω(5.1).Should(BeEquivalentTo(5))
-                       Ω(5).ShouldNot(BeEquivalentTo(5.1))
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/be_false_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/be_false_matcher_test.go
deleted file mode 100644 (file)
index 3965a2c..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-package matchers_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/matchers"
-)
-
-var _ = Describe("BeFalse", func() {
-       It("should handle true and false correctly", func() {
-               Ω(true).ShouldNot(BeFalse())
-               Ω(false).Should(BeFalse())
-       })
-
-       It("should only support booleans", func() {
-               success, err := (&BeFalseMatcher{}).Match("foo")
-               Ω(success).Should(BeFalse())
-               Ω(err).Should(HaveOccurred())
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/be_identical_to_test.go b/vendor/github.com/onsi/gomega/matchers/be_identical_to_test.go
deleted file mode 100644 (file)
index 8b90a1a..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-package matchers_test
-
-import (
-       "errors"
-
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/matchers"
-)
-
-var _ = Describe("BeIdenticalTo", func() {
-       Context("when asserting that nil equals nil", func() {
-               It("should error", func() {
-                       success, err := (&BeIdenticalToMatcher{Expected: nil}).Match(nil)
-
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-
-       It("should treat the same pointer to a struct as identical", func() {
-               mySpecialStruct := myCustomType{}
-               Ω(&mySpecialStruct).Should(BeIdenticalTo(&mySpecialStruct))
-               Ω(&myCustomType{}).ShouldNot(BeIdenticalTo(&mySpecialStruct))
-       })
-
-       It("should be strict about types", func() {
-               Ω(5).ShouldNot(BeIdenticalTo("5"))
-               Ω(5).ShouldNot(BeIdenticalTo(5.0))
-               Ω(5).ShouldNot(BeIdenticalTo(3))
-       })
-
-       It("should treat primtives as identical", func() {
-               Ω("5").Should(BeIdenticalTo("5"))
-               Ω("5").ShouldNot(BeIdenticalTo("55"))
-
-               Ω(5.55).Should(BeIdenticalTo(5.55))
-               Ω(5.55).ShouldNot(BeIdenticalTo(6.66))
-
-               Ω(5).Should(BeIdenticalTo(5))
-               Ω(5).ShouldNot(BeIdenticalTo(55))
-       })
-
-       It("should treat the same pointers to a slice as identical", func() {
-               mySlice := []int{1, 2}
-               Ω(&mySlice).Should(BeIdenticalTo(&mySlice))
-               Ω(&mySlice).ShouldNot(BeIdenticalTo(&[]int{1, 2}))
-       })
-
-       It("should treat the same pointers to a map as identical", func() {
-               myMap := map[string]string{"a": "b", "c": "d"}
-               Ω(&myMap).Should(BeIdenticalTo(&myMap))
-               Ω(myMap).ShouldNot(BeIdenticalTo(map[string]string{"a": "b", "c": "d"}))
-       })
-
-       It("should treat the same pointers to an error as identical", func() {
-               myError := errors.New("foo")
-               Ω(&myError).Should(BeIdenticalTo(&myError))
-               Ω(errors.New("foo")).ShouldNot(BeIdenticalTo(errors.New("bar")))
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/be_nil_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/be_nil_matcher_test.go
deleted file mode 100644 (file)
index 7533253..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-package matchers_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-)
-
-var _ = Describe("BeNil", func() {
-       It("should succeed when passed nil", func() {
-               Ω(nil).Should(BeNil())
-       })
-
-       It("should succeed when passed a typed nil", func() {
-               var a []int
-               Ω(a).Should(BeNil())
-       })
-
-       It("should succeed when passing nil pointer", func() {
-               var f *struct{}
-               Ω(f).Should(BeNil())
-       })
-
-       It("should not succeed when not passed nil", func() {
-               Ω(0).ShouldNot(BeNil())
-               Ω(false).ShouldNot(BeNil())
-               Ω("").ShouldNot(BeNil())
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/be_numerically_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/be_numerically_matcher_test.go
deleted file mode 100644 (file)
index 43fdb1f..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-package matchers_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/matchers"
-)
-
-var _ = Describe("BeNumerically", func() {
-       Context("when passed a number", func() {
-               It("should support ==", func() {
-                       Ω(uint32(5)).Should(BeNumerically("==", 5))
-                       Ω(float64(5.0)).Should(BeNumerically("==", 5))
-                       Ω(int8(5)).Should(BeNumerically("==", 5))
-               })
-
-               It("should not have false positives", func() {
-                       Ω(5.1).ShouldNot(BeNumerically("==", 5))
-                       Ω(5).ShouldNot(BeNumerically("==", 5.1))
-               })
-
-               It("should support >", func() {
-                       Ω(uint32(5)).Should(BeNumerically(">", 4))
-                       Ω(float64(5.0)).Should(BeNumerically(">", 4.9))
-                       Ω(int8(5)).Should(BeNumerically(">", 4))
-
-                       Ω(uint32(5)).ShouldNot(BeNumerically(">", 5))
-                       Ω(float64(5.0)).ShouldNot(BeNumerically(">", 5.0))
-                       Ω(int8(5)).ShouldNot(BeNumerically(">", 5))
-               })
-
-               It("should support <", func() {
-                       Ω(uint32(5)).Should(BeNumerically("<", 6))
-                       Ω(float64(5.0)).Should(BeNumerically("<", 5.1))
-                       Ω(int8(5)).Should(BeNumerically("<", 6))
-
-                       Ω(uint32(5)).ShouldNot(BeNumerically("<", 5))
-                       Ω(float64(5.0)).ShouldNot(BeNumerically("<", 5.0))
-                       Ω(int8(5)).ShouldNot(BeNumerically("<", 5))
-               })
-
-               It("should support >=", func() {
-                       Ω(uint32(5)).Should(BeNumerically(">=", 4))
-                       Ω(float64(5.0)).Should(BeNumerically(">=", 4.9))
-                       Ω(int8(5)).Should(BeNumerically(">=", 4))
-
-                       Ω(uint32(5)).Should(BeNumerically(">=", 5))
-                       Ω(float64(5.0)).Should(BeNumerically(">=", 5.0))
-                       Ω(int8(5)).Should(BeNumerically(">=", 5))
-
-                       Ω(uint32(5)).ShouldNot(BeNumerically(">=", 6))
-                       Ω(float64(5.0)).ShouldNot(BeNumerically(">=", 5.1))
-                       Ω(int8(5)).ShouldNot(BeNumerically(">=", 6))
-               })
-
-               It("should support <=", func() {
-                       Ω(uint32(5)).Should(BeNumerically("<=", 6))
-                       Ω(float64(5.0)).Should(BeNumerically("<=", 5.1))
-                       Ω(int8(5)).Should(BeNumerically("<=", 6))
-
-                       Ω(uint32(5)).Should(BeNumerically("<=", 5))
-                       Ω(float64(5.0)).Should(BeNumerically("<=", 5.0))
-                       Ω(int8(5)).Should(BeNumerically("<=", 5))
-
-                       Ω(uint32(5)).ShouldNot(BeNumerically("<=", 4))
-                       Ω(float64(5.0)).ShouldNot(BeNumerically("<=", 4.9))
-                       Ω(int8(5)).Should(BeNumerically("<=", 5))
-               })
-
-               Context("when passed ~", func() {
-                       Context("when passed a float", func() {
-                               Context("and there is no precision parameter", func() {
-                                       It("should default to 1e-8", func() {
-                                               Ω(5.00000001).Should(BeNumerically("~", 5.00000002))
-                                               Ω(5.00000001).ShouldNot(BeNumerically("~", 5.0000001))
-                                       })
-                               })
-
-                               Context("and there is a precision parameter", func() {
-                                       It("should use the precision parameter", func() {
-                                               Ω(5.1).Should(BeNumerically("~", 5.19, 0.1))
-                                               Ω(5.1).Should(BeNumerically("~", 5.01, 0.1))
-                                               Ω(5.1).ShouldNot(BeNumerically("~", 5.22, 0.1))
-                                               Ω(5.1).ShouldNot(BeNumerically("~", 4.98, 0.1))
-                                       })
-                               })
-                       })
-
-                       Context("when passed an int/uint", func() {
-                               Context("and there is no precision parameter", func() {
-                                       It("should just do strict equality", func() {
-                                               Ω(5).Should(BeNumerically("~", 5))
-                                               Ω(5).ShouldNot(BeNumerically("~", 6))
-                                               Ω(uint(5)).ShouldNot(BeNumerically("~", 6))
-                                       })
-                               })
-
-                               Context("and there is a precision parameter", func() {
-                                       It("should use precision paramter", func() {
-                                               Ω(5).Should(BeNumerically("~", 6, 2))
-                                               Ω(5).ShouldNot(BeNumerically("~", 8, 2))
-                                               Ω(uint(5)).Should(BeNumerically("~", 6, 1))
-                                       })
-                               })
-                       })
-               })
-       })
-
-       Context("when passed a non-number", func() {
-               It("should error", func() {
-                       success, err := (&BeNumericallyMatcher{Comparator: "==", CompareTo: []interface{}{5}}).Match("foo")
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-
-                       success, err = (&BeNumericallyMatcher{Comparator: "=="}).Match(5)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-
-                       success, err = (&BeNumericallyMatcher{Comparator: "~", CompareTo: []interface{}{3.0, "foo"}}).Match(5.0)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-
-                       success, err = (&BeNumericallyMatcher{Comparator: "==", CompareTo: []interface{}{"bar"}}).Match(5)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-
-                       success, err = (&BeNumericallyMatcher{Comparator: "==", CompareTo: []interface{}{"bar"}}).Match("foo")
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-
-                       success, err = (&BeNumericallyMatcher{Comparator: "==", CompareTo: []interface{}{nil}}).Match(0)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-
-                       success, err = (&BeNumericallyMatcher{Comparator: "==", CompareTo: []interface{}{0}}).Match(nil)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-
-       Context("when passed an unsupported comparator", func() {
-               It("should error", func() {
-                       success, err := (&BeNumericallyMatcher{Comparator: "!=", CompareTo: []interface{}{5}}).Match(4)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/be_sent_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/be_sent_matcher_test.go
deleted file mode 100644 (file)
index 205d71f..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-package matchers_test
-
-import (
-       . "github.com/onsi/gomega/matchers"
-       "time"
-
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-)
-
-var _ = Describe("BeSent", func() {
-       Context("when passed a channel and a matching type", func() {
-               Context("when the channel is ready to receive", func() {
-                       It("should succeed and send the value down the channel", func() {
-                               c := make(chan string)
-                               d := make(chan string)
-                               go func() {
-                                       val := <-c
-                                       d <- val
-                               }()
-
-                               time.Sleep(10 * time.Millisecond)
-
-                               Ω(c).Should(BeSent("foo"))
-                               Eventually(d).Should(Receive(Equal("foo")))
-                       })
-
-                       It("should succeed (with a buffered channel)", func() {
-                               c := make(chan string, 1)
-                               Ω(c).Should(BeSent("foo"))
-                               Ω(<-c).Should(Equal("foo"))
-                       })
-               })
-
-               Context("when the channel is not ready to receive", func() {
-                       It("should fail and not send down the channel", func() {
-                               c := make(chan string)
-                               Ω(c).ShouldNot(BeSent("foo"))
-                               Consistently(c).ShouldNot(Receive())
-                       })
-               })
-
-               Context("when the channel is eventually ready to receive", func() {
-                       It("should succeed", func() {
-                               c := make(chan string)
-                               d := make(chan string)
-                               go func() {
-                                       time.Sleep(30 * time.Millisecond)
-                                       val := <-c
-                                       d <- val
-                               }()
-
-                               Eventually(c).Should(BeSent("foo"))
-                               Eventually(d).Should(Receive(Equal("foo")))
-                       })
-               })
-
-               Context("when the channel is closed", func() {
-                       It("should error", func() {
-                               c := make(chan string)
-                               close(c)
-                               success, err := (&BeSentMatcher{Arg: "foo"}).Match(c)
-                               Ω(success).Should(BeFalse())
-                               Ω(err).Should(HaveOccurred())
-                       })
-
-                       It("should short-circuit Eventually", func() {
-                               c := make(chan string)
-                               close(c)
-
-                               t := time.Now()
-                               failures := InterceptGomegaFailures(func() {
-                                       Eventually(c, 10.0).Should(BeSent("foo"))
-                               })
-                               Ω(failures).Should(HaveLen(1))
-                               Ω(time.Since(t)).Should(BeNumerically("<", time.Second))
-                       })
-               })
-       })
-
-       Context("when passed a channel and a non-matching type", func() {
-               It("should error", func() {
-                       success, err := (&BeSentMatcher{Arg: "foo"}).Match(make(chan int, 1))
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-
-       Context("when passed a receive-only channel", func() {
-               It("should error", func() {
-                       var c <-chan string
-                       c = make(chan string, 1)
-                       success, err := (&BeSentMatcher{Arg: "foo"}).Match(c)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-
-       Context("when passed a nonchannel", func() {
-               It("should error", func() {
-                       success, err := (&BeSentMatcher{Arg: "foo"}).Match("bar")
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/be_temporally_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/be_temporally_matcher_test.go
deleted file mode 100644 (file)
index feb33e5..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-package matchers_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/matchers"
-       "time"
-)
-
-var _ = Describe("BeTemporally", func() {
-
-       var t0, t1, t2 time.Time
-       BeforeEach(func() {
-               t0 = time.Now()
-               t1 = t0.Add(time.Second)
-               t2 = t0.Add(-time.Second)
-       })
-
-       Context("When comparing times", func() {
-
-               It("should support ==", func() {
-                       Ω(t0).Should(BeTemporally("==", t0))
-                       Ω(t1).ShouldNot(BeTemporally("==", t0))
-                       Ω(t0).ShouldNot(BeTemporally("==", t1))
-                       Ω(t0).ShouldNot(BeTemporally("==", time.Time{}))
-               })
-
-               It("should support >", func() {
-                       Ω(t0).Should(BeTemporally(">", t2))
-                       Ω(t0).ShouldNot(BeTemporally(">", t0))
-                       Ω(t2).ShouldNot(BeTemporally(">", t0))
-               })
-
-               It("should support <", func() {
-                       Ω(t0).Should(BeTemporally("<", t1))
-                       Ω(t0).ShouldNot(BeTemporally("<", t0))
-                       Ω(t1).ShouldNot(BeTemporally("<", t0))
-               })
-
-               It("should support >=", func() {
-                       Ω(t0).Should(BeTemporally(">=", t2))
-                       Ω(t0).Should(BeTemporally(">=", t0))
-                       Ω(t0).ShouldNot(BeTemporally(">=", t1))
-               })
-
-               It("should support <=", func() {
-                       Ω(t0).Should(BeTemporally("<=", t1))
-                       Ω(t0).Should(BeTemporally("<=", t0))
-                       Ω(t0).ShouldNot(BeTemporally("<=", t2))
-               })
-
-               Context("when passed ~", func() {
-                       Context("and there is no precision parameter", func() {
-                               BeforeEach(func() {
-                                       t1 = t0.Add(time.Millisecond / 2)
-                                       t2 = t0.Add(-2 * time.Millisecond)
-                               })
-                               It("should approximate", func() {
-                                       Ω(t0).Should(BeTemporally("~", t0))
-                                       Ω(t0).Should(BeTemporally("~", t1))
-                                       Ω(t0).ShouldNot(BeTemporally("~", t2))
-                               })
-                       })
-
-                       Context("and there is a precision parameter", func() {
-                               BeforeEach(func() {
-                                       t2 = t0.Add(3 * time.Second)
-                               })
-                               It("should use precision paramter", func() {
-                                       d := 2 * time.Second
-                                       Ω(t0).Should(BeTemporally("~", t0, d))
-                                       Ω(t0).Should(BeTemporally("~", t1, d))
-                                       Ω(t0).ShouldNot(BeTemporally("~", t2, d))
-                               })
-                       })
-               })
-       })
-
-       Context("when passed a non-time", func() {
-               It("should error", func() {
-                       success, err := (&BeTemporallyMatcher{Comparator: "==", CompareTo: t0}).Match("foo")
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-
-                       success, err = (&BeTemporallyMatcher{Comparator: "=="}).Match(nil)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-
-       Context("when passed an unsupported comparator", func() {
-               It("should error", func() {
-                       success, err := (&BeTemporallyMatcher{Comparator: "!=", CompareTo: t0}).Match(t2)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/be_true_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/be_true_matcher_test.go
deleted file mode 100644 (file)
index ca32e56..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-package matchers_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/matchers"
-)
-
-var _ = Describe("BeTrue", func() {
-       It("should handle true and false correctly", func() {
-               Ω(true).Should(BeTrue())
-               Ω(false).ShouldNot(BeTrue())
-       })
-
-       It("should only support booleans", func() {
-               success, err := (&BeTrueMatcher{}).Match("foo")
-               Ω(success).Should(BeFalse())
-               Ω(err).Should(HaveOccurred())
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/be_zero_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/be_zero_matcher_test.go
deleted file mode 100644 (file)
index 8ec3643..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-package matchers_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-)
-
-var _ = Describe("BeZero", func() {
-       It("should succeed if the passed in object is the zero value for its type", func() {
-               Ω(nil).Should(BeZero())
-
-               Ω("").Should(BeZero())
-               Ω(" ").ShouldNot(BeZero())
-
-               Ω(0).Should(BeZero())
-               Ω(1).ShouldNot(BeZero())
-
-               Ω(0.0).Should(BeZero())
-               Ω(0.1).ShouldNot(BeZero())
-
-               // Ω([]int{}).Should(BeZero())
-               Ω([]int{1}).ShouldNot(BeZero())
-
-               // Ω(map[string]int{}).Should(BeZero())
-               Ω(map[string]int{"a": 1}).ShouldNot(BeZero())
-
-               Ω(myCustomType{}).Should(BeZero())
-               Ω(myCustomType{s: "a"}).ShouldNot(BeZero())
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/consist_of_test.go b/vendor/github.com/onsi/gomega/matchers/consist_of_test.go
deleted file mode 100644 (file)
index dcd1afe..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-package matchers_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-)
-
-var _ = Describe("ConsistOf", func() {
-       Context("with a slice", func() {
-               It("should do the right thing", func() {
-                       Ω([]string{"foo", "bar", "baz"}).Should(ConsistOf("foo", "bar", "baz"))
-                       Ω([]string{"foo", "bar", "baz"}).Should(ConsistOf("foo", "bar", "baz"))
-                       Ω([]string{"foo", "bar", "baz"}).Should(ConsistOf("baz", "bar", "foo"))
-                       Ω([]string{"foo", "bar", "baz"}).ShouldNot(ConsistOf("baz", "bar", "foo", "foo"))
-                       Ω([]string{"foo", "bar", "baz"}).ShouldNot(ConsistOf("baz", "foo"))
-               })
-       })
-
-       Context("with an array", func() {
-               It("should do the right thing", func() {
-                       Ω([3]string{"foo", "bar", "baz"}).Should(ConsistOf("foo", "bar", "baz"))
-                       Ω([3]string{"foo", "bar", "baz"}).Should(ConsistOf("baz", "bar", "foo"))
-                       Ω([3]string{"foo", "bar", "baz"}).ShouldNot(ConsistOf("baz", "bar", "foo", "foo"))
-                       Ω([3]string{"foo", "bar", "baz"}).ShouldNot(ConsistOf("baz", "foo"))
-               })
-       })
-
-       Context("with a map", func() {
-               It("should apply to the values", func() {
-                       Ω(map[int]string{1: "foo", 2: "bar", 3: "baz"}).Should(ConsistOf("foo", "bar", "baz"))
-                       Ω(map[int]string{1: "foo", 2: "bar", 3: "baz"}).Should(ConsistOf("baz", "bar", "foo"))
-                       Ω(map[int]string{1: "foo", 2: "bar", 3: "baz"}).ShouldNot(ConsistOf("baz", "bar", "foo", "foo"))
-                       Ω(map[int]string{1: "foo", 2: "bar", 3: "baz"}).ShouldNot(ConsistOf("baz", "foo"))
-               })
-
-       })
-
-       Context("with anything else", func() {
-               It("should error", func() {
-                       failures := InterceptGomegaFailures(func() {
-                               Ω("foo").Should(ConsistOf("f", "o", "o"))
-                       })
-
-                       Ω(failures).Should(HaveLen(1))
-               })
-       })
-
-       Context("when passed matchers", func() {
-               It("should pass if the matchers pass", func() {
-                       Ω([]string{"foo", "bar", "baz"}).Should(ConsistOf("foo", MatchRegexp("^ba"), "baz"))
-                       Ω([]string{"foo", "bar", "baz"}).ShouldNot(ConsistOf("foo", MatchRegexp("^ba")))
-                       Ω([]string{"foo", "bar", "baz"}).ShouldNot(ConsistOf("foo", MatchRegexp("^ba"), MatchRegexp("foo")))
-                       Ω([]string{"foo", "bar", "baz"}).Should(ConsistOf("foo", MatchRegexp("^ba"), MatchRegexp("^ba")))
-                       Ω([]string{"foo", "bar", "baz"}).ShouldNot(ConsistOf("foo", MatchRegexp("^ba"), MatchRegexp("turducken")))
-               })
-
-               It("should not depend on the order of the matchers", func() {
-                       Ω([][]int{[]int{1, 2}, []int{2}}).Should(ConsistOf(ContainElement(1), ContainElement(2)))
-                       Ω([][]int{[]int{1, 2}, []int{2}}).Should(ConsistOf(ContainElement(2), ContainElement(1)))
-               })
-
-               Context("when a matcher errors", func() {
-                       It("should soldier on", func() {
-                               Ω([]string{"foo", "bar", "baz"}).ShouldNot(ConsistOf(BeFalse(), "foo", "bar"))
-                               Ω([]interface{}{"foo", "bar", false}).Should(ConsistOf(BeFalse(), ContainSubstring("foo"), "bar"))
-                       })
-               })
-       })
-
-       Context("when passed exactly one argument, and that argument is a slice", func() {
-               It("should match against the elements of that argument", func() {
-                       Ω([]string{"foo", "bar", "baz"}).Should(ConsistOf([]string{"foo", "bar", "baz"}))
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/contain_element_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/contain_element_matcher_test.go
deleted file mode 100644 (file)
index 38ee518..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-package matchers_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/matchers"
-)
-
-var _ = Describe("ContainElement", func() {
-       Context("when passed a supported type", func() {
-               Context("and expecting a non-matcher", func() {
-                       It("should do the right thing", func() {
-                               Ω([2]int{1, 2}).Should(ContainElement(2))
-                               Ω([2]int{1, 2}).ShouldNot(ContainElement(3))
-
-                               Ω([]int{1, 2}).Should(ContainElement(2))
-                               Ω([]int{1, 2}).ShouldNot(ContainElement(3))
-
-                               Ω(map[string]int{"foo": 1, "bar": 2}).Should(ContainElement(2))
-                               Ω(map[int]int{3: 1, 4: 2}).ShouldNot(ContainElement(3))
-
-                               arr := make([]myCustomType, 2)
-                               arr[0] = myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b"}}
-                               arr[1] = myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "c"}}
-                               Ω(arr).Should(ContainElement(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b"}}))
-                               Ω(arr).ShouldNot(ContainElement(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"b", "c"}}))
-                       })
-               })
-
-               Context("and expecting a matcher", func() {
-                       It("should pass each element through the matcher", func() {
-                               Ω([]int{1, 2, 3}).Should(ContainElement(BeNumerically(">=", 3)))
-                               Ω([]int{1, 2, 3}).ShouldNot(ContainElement(BeNumerically(">", 3)))
-                               Ω(map[string]int{"foo": 1, "bar": 2}).Should(ContainElement(BeNumerically(">=", 2)))
-                               Ω(map[string]int{"foo": 1, "bar": 2}).ShouldNot(ContainElement(BeNumerically(">", 2)))
-                       })
-
-                       It("should power through even if the matcher ever fails", func() {
-                               Ω([]interface{}{1, 2, "3", 4}).Should(ContainElement(BeNumerically(">=", 3)))
-                       })
-
-                       It("should fail if the matcher fails", func() {
-                               actual := []interface{}{1, 2, "3", "4"}
-                               success, err := (&ContainElementMatcher{Element: BeNumerically(">=", 3)}).Match(actual)
-                               Ω(success).Should(BeFalse())
-                               Ω(err).Should(HaveOccurred())
-                       })
-               })
-       })
-
-       Context("when passed a correctly typed nil", func() {
-               It("should operate succesfully on the passed in value", func() {
-                       var nilSlice []int
-                       Ω(nilSlice).ShouldNot(ContainElement(1))
-
-                       var nilMap map[int]string
-                       Ω(nilMap).ShouldNot(ContainElement("foo"))
-               })
-       })
-
-       Context("when passed an unsupported type", func() {
-               It("should error", func() {
-                       success, err := (&ContainElementMatcher{Element: 0}).Match(0)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-
-                       success, err = (&ContainElementMatcher{Element: 0}).Match("abc")
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-
-                       success, err = (&ContainElementMatcher{Element: 0}).Match(nil)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/contain_substring_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/contain_substring_matcher_test.go
deleted file mode 100644 (file)
index 6935168..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-package matchers_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/matchers"
-)
-
-var _ = Describe("ContainSubstringMatcher", func() {
-       Context("when actual is a string", func() {
-               It("should match against the string", func() {
-                       Ω("Marvelous").Should(ContainSubstring("rve"))
-                       Ω("Marvelous").ShouldNot(ContainSubstring("boo"))
-               })
-       })
-
-       Context("when the matcher is called with multiple arguments", func() {
-               It("should pass the string and arguments to sprintf", func() {
-                       Ω("Marvelous3").Should(ContainSubstring("velous%d", 3))
-               })
-       })
-
-       Context("when actual is a stringer", func() {
-               It("should call the stringer and match agains the returned string", func() {
-                       Ω(&myStringer{a: "Abc3"}).Should(ContainSubstring("bc3"))
-               })
-       })
-
-       Context("when actual is neither a string nor a stringer", func() {
-               It("should error", func() {
-                       success, err := (&ContainSubstringMatcher{Substr: "2"}).Match(2)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/equal_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/equal_matcher_test.go
deleted file mode 100644 (file)
index 2add0b7..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-package matchers_test
-
-import (
-       "errors"
-       "strings"
-
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/matchers"
-)
-
-var _ = Describe("Equal", func() {
-       Context("when asserting that nil equals nil", func() {
-               It("should error", func() {
-                       success, err := (&EqualMatcher{Expected: nil}).Match(nil)
-
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-
-       Context("When asserting equality between objects", func() {
-               It("should do the right thing", func() {
-                       Ω(5).Should(Equal(5))
-                       Ω(5.0).Should(Equal(5.0))
-
-                       Ω(5).ShouldNot(Equal("5"))
-                       Ω(5).ShouldNot(Equal(5.0))
-                       Ω(5).ShouldNot(Equal(3))
-
-                       Ω("5").Should(Equal("5"))
-                       Ω([]int{1, 2}).Should(Equal([]int{1, 2}))
-                       Ω([]int{1, 2}).ShouldNot(Equal([]int{2, 1}))
-                       Ω(map[string]string{"a": "b", "c": "d"}).Should(Equal(map[string]string{"a": "b", "c": "d"}))
-                       Ω(map[string]string{"a": "b", "c": "d"}).ShouldNot(Equal(map[string]string{"a": "b", "c": "e"}))
-                       Ω(errors.New("foo")).Should(Equal(errors.New("foo")))
-                       Ω(errors.New("foo")).ShouldNot(Equal(errors.New("bar")))
-
-                       Ω(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b"}}).Should(Equal(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b"}}))
-                       Ω(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b"}}).ShouldNot(Equal(myCustomType{s: "bar", n: 3, f: 2.0, arr: []string{"a", "b"}}))
-                       Ω(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b"}}).ShouldNot(Equal(myCustomType{s: "foo", n: 2, f: 2.0, arr: []string{"a", "b"}}))
-                       Ω(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b"}}).ShouldNot(Equal(myCustomType{s: "foo", n: 3, f: 3.0, arr: []string{"a", "b"}}))
-                       Ω(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b"}}).ShouldNot(Equal(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b", "c"}}))
-               })
-       })
-
-       Describe("failure messages", func() {
-               It("shows the two strings simply when they are short", func() {
-                       subject := EqualMatcher{Expected: "eric"}
-
-                       failureMessage := subject.FailureMessage("tim")
-                       Ω(failureMessage).To(BeEquivalentTo(expectedShortStringFailureMessage))
-               })
-
-               It("shows the exact point where two long strings differ", func() {
-                       stringWithB := "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-                       stringWithZ := "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-
-                       subject := EqualMatcher{Expected: stringWithZ}
-
-                       failureMessage := subject.FailureMessage(stringWithB)
-                       Ω(failureMessage).To(BeEquivalentTo(expectedLongStringFailureMessage))
-               })
-       })
-})
-
-var expectedShortStringFailureMessage = strings.TrimSpace(`
-Expected
-    <string>: tim
-to equal
-    <string>: eric
-`)
-var expectedLongStringFailureMessage = strings.TrimSpace(`
-Expected
-    <string>: "...aaaaabaaaaa..."
-to equal               |
-    <string>: "...aaaaazaaaaa..."
-`)
diff --git a/vendor/github.com/onsi/gomega/matchers/have_cap_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/have_cap_matcher_test.go
deleted file mode 100644 (file)
index a92a177..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-package matchers_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/matchers"
-)
-
-var _ = Describe("HaveCap", func() {
-       Context("when passed a supported type", func() {
-               It("should do the right thing", func() {
-                       Ω([0]int{}).Should(HaveCap(0))
-                       Ω([2]int{1}).Should(HaveCap(2))
-
-                       Ω([]int{}).Should(HaveCap(0))
-                       Ω([]int{1, 2, 3, 4, 5}[:2]).Should(HaveCap(5))
-                       Ω(make([]int, 0, 5)).Should(HaveCap(5))
-
-                       c := make(chan bool, 3)
-                       Ω(c).Should(HaveCap(3))
-                       c <- true
-                       c <- true
-                       Ω(c).Should(HaveCap(3))
-
-                       Ω(make(chan bool)).Should(HaveCap(0))
-               })
-       })
-
-       Context("when passed a correctly typed nil", func() {
-               It("should operate succesfully on the passed in value", func() {
-                       var nilSlice []int
-                       Ω(nilSlice).Should(HaveCap(0))
-
-                       var nilChan chan int
-                       Ω(nilChan).Should(HaveCap(0))
-               })
-       })
-
-       Context("when passed an unsupported type", func() {
-               It("should error", func() {
-                       success, err := (&HaveCapMatcher{Count: 0}).Match(0)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-
-                       success, err = (&HaveCapMatcher{Count: 0}).Match(nil)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/have_key_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/have_key_matcher_test.go
deleted file mode 100644 (file)
index c663e30..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-package matchers_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/matchers"
-)
-
-var _ = Describe("HaveKey", func() {
-       var (
-               stringKeys map[string]int
-               intKeys    map[int]string
-               objKeys    map[*myCustomType]string
-
-               customA *myCustomType
-               customB *myCustomType
-       )
-       BeforeEach(func() {
-               stringKeys = map[string]int{"foo": 2, "bar": 3}
-               intKeys = map[int]string{2: "foo", 3: "bar"}
-
-               customA = &myCustomType{s: "a", n: 2, f: 2.3, arr: []string{"ice", "cream"}}
-               customB = &myCustomType{s: "b", n: 4, f: 3.1, arr: []string{"cake"}}
-               objKeys = map[*myCustomType]string{customA: "aardvark", customB: "kangaroo"}
-       })
-
-       Context("when passed a map", func() {
-               It("should do the right thing", func() {
-                       Ω(stringKeys).Should(HaveKey("foo"))
-                       Ω(stringKeys).ShouldNot(HaveKey("baz"))
-
-                       Ω(intKeys).Should(HaveKey(2))
-                       Ω(intKeys).ShouldNot(HaveKey(4))
-
-                       Ω(objKeys).Should(HaveKey(customA))
-                       Ω(objKeys).Should(HaveKey(&myCustomType{s: "b", n: 4, f: 3.1, arr: []string{"cake"}}))
-                       Ω(objKeys).ShouldNot(HaveKey(&myCustomType{s: "b", n: 4, f: 3.1, arr: []string{"apple", "pie"}}))
-               })
-       })
-
-       Context("when passed a correctly typed nil", func() {
-               It("should operate succesfully on the passed in value", func() {
-                       var nilMap map[int]string
-                       Ω(nilMap).ShouldNot(HaveKey("foo"))
-               })
-       })
-
-       Context("when the passed in key is actually a matcher", func() {
-               It("should pass each element through the matcher", func() {
-                       Ω(stringKeys).Should(HaveKey(ContainSubstring("oo")))
-                       Ω(stringKeys).ShouldNot(HaveKey(ContainSubstring("foobar")))
-               })
-
-               It("should fail if the matcher ever fails", func() {
-                       actual := map[int]string{1: "a", 3: "b", 2: "c"}
-                       success, err := (&HaveKeyMatcher{Key: ContainSubstring("ar")}).Match(actual)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-
-       Context("when passed something that is not a map", func() {
-               It("should error", func() {
-                       success, err := (&HaveKeyMatcher{Key: "foo"}).Match([]string{"foo"})
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-
-                       success, err = (&HaveKeyMatcher{Key: "foo"}).Match(nil)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/have_key_with_value_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/have_key_with_value_matcher_test.go
deleted file mode 100644 (file)
index 06a2242..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-package matchers_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/matchers"
-)
-
-var _ = Describe("HaveKeyWithValue", func() {
-       var (
-               stringKeys map[string]int
-               intKeys    map[int]string
-               objKeys    map[*myCustomType]*myCustomType
-
-               customA *myCustomType
-               customB *myCustomType
-       )
-       BeforeEach(func() {
-               stringKeys = map[string]int{"foo": 2, "bar": 3}
-               intKeys = map[int]string{2: "foo", 3: "bar"}
-
-               customA = &myCustomType{s: "a", n: 2, f: 2.3, arr: []string{"ice", "cream"}}
-               customB = &myCustomType{s: "b", n: 4, f: 3.1, arr: []string{"cake"}}
-               objKeys = map[*myCustomType]*myCustomType{customA: customA, customB: customA}
-       })
-
-       Context("when passed a map", func() {
-               It("should do the right thing", func() {
-                       Ω(stringKeys).Should(HaveKeyWithValue("foo", 2))
-                       Ω(stringKeys).ShouldNot(HaveKeyWithValue("foo", 1))
-                       Ω(stringKeys).ShouldNot(HaveKeyWithValue("baz", 2))
-                       Ω(stringKeys).ShouldNot(HaveKeyWithValue("baz", 1))
-
-                       Ω(intKeys).Should(HaveKeyWithValue(2, "foo"))
-                       Ω(intKeys).ShouldNot(HaveKeyWithValue(4, "foo"))
-                       Ω(intKeys).ShouldNot(HaveKeyWithValue(2, "baz"))
-
-                       Ω(objKeys).Should(HaveKeyWithValue(customA, customA))
-                       Ω(objKeys).Should(HaveKeyWithValue(&myCustomType{s: "b", n: 4, f: 3.1, arr: []string{"cake"}}, &myCustomType{s: "a", n: 2, f: 2.3, arr: []string{"ice", "cream"}}))
-                       Ω(objKeys).ShouldNot(HaveKeyWithValue(&myCustomType{s: "b", n: 4, f: 3.1, arr: []string{"apple", "pie"}}, customA))
-               })
-       })
-
-       Context("when passed a correctly typed nil", func() {
-               It("should operate succesfully on the passed in value", func() {
-                       var nilMap map[int]string
-                       Ω(nilMap).ShouldNot(HaveKeyWithValue("foo", "bar"))
-               })
-       })
-
-       Context("when the passed in key or value is actually a matcher", func() {
-               It("should pass each element through the matcher", func() {
-                       Ω(stringKeys).Should(HaveKeyWithValue(ContainSubstring("oo"), 2))
-                       Ω(intKeys).Should(HaveKeyWithValue(2, ContainSubstring("oo")))
-                       Ω(stringKeys).ShouldNot(HaveKeyWithValue(ContainSubstring("foobar"), 2))
-               })
-
-               It("should fail if the matcher ever fails", func() {
-                       actual := map[int]string{1: "a", 3: "b", 2: "c"}
-                       success, err := (&HaveKeyWithValueMatcher{Key: ContainSubstring("ar"), Value: 2}).Match(actual)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-
-                       otherActual := map[string]int{"a": 1, "b": 2, "c": 3}
-                       success, err = (&HaveKeyWithValueMatcher{Key: "a", Value: ContainSubstring("1")}).Match(otherActual)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-
-       Context("when passed something that is not a map", func() {
-               It("should error", func() {
-                       success, err := (&HaveKeyWithValueMatcher{Key: "foo", Value: "bar"}).Match([]string{"foo"})
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-
-                       success, err = (&HaveKeyWithValueMatcher{Key: "foo", Value: "bar"}).Match(nil)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/have_len_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/have_len_matcher_test.go
deleted file mode 100644 (file)
index 1e6aa69..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-package matchers_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/matchers"
-)
-
-var _ = Describe("HaveLen", func() {
-       Context("when passed a supported type", func() {
-               It("should do the right thing", func() {
-                       Ω("").Should(HaveLen(0))
-                       Ω("AA").Should(HaveLen(2))
-
-                       Ω([0]int{}).Should(HaveLen(0))
-                       Ω([2]int{1, 2}).Should(HaveLen(2))
-
-                       Ω([]int{}).Should(HaveLen(0))
-                       Ω([]int{1, 2, 3}).Should(HaveLen(3))
-
-                       Ω(map[string]int{}).Should(HaveLen(0))
-                       Ω(map[string]int{"a": 1, "b": 2, "c": 3, "d": 4}).Should(HaveLen(4))
-
-                       c := make(chan bool, 3)
-                       Ω(c).Should(HaveLen(0))
-                       c <- true
-                       c <- true
-                       Ω(c).Should(HaveLen(2))
-               })
-       })
-
-       Context("when passed a correctly typed nil", func() {
-               It("should operate succesfully on the passed in value", func() {
-                       var nilSlice []int
-                       Ω(nilSlice).Should(HaveLen(0))
-
-                       var nilMap map[int]string
-                       Ω(nilMap).Should(HaveLen(0))
-               })
-       })
-
-       Context("when passed an unsupported type", func() {
-               It("should error", func() {
-                       success, err := (&HaveLenMatcher{Count: 0}).Match(0)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-
-                       success, err = (&HaveLenMatcher{Count: 0}).Match(nil)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/have_occurred_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/have_occurred_matcher_test.go
deleted file mode 100644 (file)
index 009e23e..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-package matchers_test
-
-import (
-       "errors"
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/matchers"
-)
-
-type CustomErr struct {
-       msg string
-}
-
-func (e *CustomErr) Error() string {
-       return e.msg
-}
-
-var _ = Describe("HaveOccurred", func() {
-       It("should succeed if matching an error", func() {
-               Ω(errors.New("Foo")).Should(HaveOccurred())
-       })
-
-       It("should not succeed with nil", func() {
-               Ω(nil).ShouldNot(HaveOccurred())
-       })
-
-       It("should only support errors and nil", func() {
-               success, err := (&HaveOccurredMatcher{}).Match("foo")
-               Ω(success).Should(BeFalse())
-               Ω(err).Should(HaveOccurred())
-
-               success, err = (&HaveOccurredMatcher{}).Match("")
-               Ω(success).Should(BeFalse())
-               Ω(err).Should(HaveOccurred())
-       })
-
-       It("doesn't support non-error type", func() {
-               success, err := (&HaveOccurredMatcher{}).Match(AnyType{})
-               Ω(success).Should(BeFalse())
-               Ω(err).Should(MatchError("Expected an error-type.  Got:\n    <matchers_test.AnyType>: {}"))
-       })
-
-       It("doesn't support non-error pointer type", func() {
-               success, err := (&HaveOccurredMatcher{}).Match(&AnyType{})
-               Ω(success).Should(BeFalse())
-               Ω(err).Should(MatchError(MatchRegexp(`Expected an error-type.  Got:\n    <*matchers_test.AnyType | 0x[[:xdigit:]]+>: {}`)))
-       })
-
-       It("should succeed with pointer types that conform to error interface", func() {
-               err := &CustomErr{"ohai"}
-               Ω(err).Should(HaveOccurred())
-       })
-
-       It("should not succeed with nil pointers to types that conform to error interface", func() {
-               var err *CustomErr = nil
-               Ω(err).ShouldNot(HaveOccurred())
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/have_prefix_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/have_prefix_matcher_test.go
deleted file mode 100644 (file)
index bec3f97..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-package matchers_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/matchers"
-)
-
-var _ = Describe("HavePrefixMatcher", func() {
-       Context("when actual is a string", func() {
-               It("should match a string prefix", func() {
-                       Ω("Ab").Should(HavePrefix("A"))
-                       Ω("A").ShouldNot(HavePrefix("Ab"))
-               })
-       })
-
-       Context("when the matcher is called with multiple arguments", func() {
-               It("should pass the string and arguments to sprintf", func() {
-                       Ω("C3PO").Should(HavePrefix("C%dP", 3))
-               })
-       })
-
-       Context("when actual is a stringer", func() {
-               It("should call the stringer and match against the returned string", func() {
-                       Ω(&myStringer{a: "Ab"}).Should(HavePrefix("A"))
-               })
-       })
-
-       Context("when actual is neither a string nor a stringer", func() {
-               It("should error", func() {
-                       success, err := (&HavePrefixMatcher{Prefix: "2"}).Match(2)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/have_suffix_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/have_suffix_matcher_test.go
deleted file mode 100644 (file)
index 72e8975..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-package matchers_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/matchers"
-)
-
-var _ = Describe("HaveSuffixMatcher", func() {
-       Context("when actual is a string", func() {
-               It("should match a string suffix", func() {
-                       Ω("Ab").Should(HaveSuffix("b"))
-                       Ω("A").ShouldNot(HaveSuffix("Ab"))
-               })
-       })
-
-       Context("when the matcher is called with multiple arguments", func() {
-               It("should pass the string and arguments to sprintf", func() {
-                       Ω("C3PO").Should(HaveSuffix("%dPO", 3))
-               })
-       })
-
-       Context("when actual is a stringer", func() {
-               It("should call the stringer and match against the returned string", func() {
-                       Ω(&myStringer{a: "Ab"}).Should(HaveSuffix("b"))
-               })
-       })
-
-       Context("when actual is neither a string nor a stringer", func() {
-               It("should error", func() {
-                       success, err := (&HaveSuffixMatcher{Suffix: "2"}).Match(2)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/match_error_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/match_error_matcher_test.go
deleted file mode 100644 (file)
index 338b512..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-package matchers_test
-
-import (
-       "errors"
-       "fmt"
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/matchers"
-)
-
-type CustomError struct {
-}
-
-func (c CustomError) Error() string {
-       return "an error"
-}
-
-var _ = Describe("MatchErrorMatcher", func() {
-       Context("When asserting against an error", func() {
-               It("should succeed when matching with an error", func() {
-                       err := errors.New("an error")
-                       fmtErr := fmt.Errorf("an error")
-                       customErr := CustomError{}
-
-                       Ω(err).Should(MatchError(errors.New("an error")))
-                       Ω(err).ShouldNot(MatchError(errors.New("another error")))
-
-                       Ω(fmtErr).Should(MatchError(errors.New("an error")))
-                       Ω(customErr).Should(MatchError(CustomError{}))
-               })
-
-               It("should succeed when matching with a string", func() {
-                       err := errors.New("an error")
-                       fmtErr := fmt.Errorf("an error")
-                       customErr := CustomError{}
-
-                       Ω(err).Should(MatchError("an error"))
-                       Ω(err).ShouldNot(MatchError("another error"))
-
-                       Ω(fmtErr).Should(MatchError("an error"))
-                       Ω(customErr).Should(MatchError("an error"))
-               })
-
-               Context("when passed a matcher", func() {
-                       It("should pass if the matcher passes against the error string", func() {
-                               err := errors.New("error 123 abc")
-
-                               Ω(err).Should(MatchError(MatchRegexp(`\d{3}`)))
-                       })
-
-                       It("should fail if the matcher fails against the error string", func() {
-                               err := errors.New("no digits")
-                               Ω(err).ShouldNot(MatchError(MatchRegexp(`\d`)))
-                       })
-               })
-
-               It("should fail when passed anything else", func() {
-                       actualErr := errors.New("an error")
-                       _, err := (&MatchErrorMatcher{
-                               Expected: []byte("an error"),
-                       }).Match(actualErr)
-                       Ω(err).Should(HaveOccurred())
-
-                       _, err = (&MatchErrorMatcher{
-                               Expected: 3,
-                       }).Match(actualErr)
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-
-       Context("when passed nil", func() {
-               It("should fail", func() {
-                       _, err := (&MatchErrorMatcher{
-                               Expected: "an error",
-                       }).Match(nil)
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-
-       Context("when passed a non-error", func() {
-               It("should fail", func() {
-                       _, err := (&MatchErrorMatcher{
-                               Expected: "an error",
-                       }).Match("an error")
-                       Ω(err).Should(HaveOccurred())
-
-                       _, err = (&MatchErrorMatcher{
-                               Expected: "an error",
-                       }).Match(3)
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/match_json_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/match_json_matcher_test.go
deleted file mode 100644 (file)
index 755c4ad..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-package matchers_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/matchers"
-)
-
-var _ = Describe("MatchJSONMatcher", func() {
-       Context("When passed stringifiables", func() {
-               It("should succeed if the JSON matches", func() {
-                       Ω("{}").Should(MatchJSON("{}"))
-                       Ω(`{"a":1}`).Should(MatchJSON(`{"a":1}`))
-                       Ω(`{
-                                    "a":1
-                                }`).Should(MatchJSON(`{"a":1}`))
-                       Ω(`{"a":1, "b":2}`).Should(MatchJSON(`{"b":2, "a":1}`))
-                       Ω(`{"a":1}`).ShouldNot(MatchJSON(`{"b":2, "a":1}`))
-               })
-
-               It("should work with byte arrays", func() {
-                       Ω([]byte("{}")).Should(MatchJSON([]byte("{}")))
-                       Ω("{}").Should(MatchJSON([]byte("{}")))
-                       Ω([]byte("{}")).Should(MatchJSON("{}"))
-               })
-       })
-
-       Context("when the expected is not valid JSON", func() {
-               It("should error and explain why", func() {
-                       success, err := (&MatchJSONMatcher{JSONToMatch: `{}`}).Match(`oops`)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-                       Ω(err.Error()).Should(ContainSubstring("Actual 'oops' should be valid JSON"))
-               })
-       })
-
-       Context("when the actual is not valid JSON", func() {
-               It("should error and explain why", func() {
-                       success, err := (&MatchJSONMatcher{JSONToMatch: `oops`}).Match(`{}`)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-                       Ω(err.Error()).Should(ContainSubstring("Expected 'oops' should be valid JSON"))
-               })
-       })
-
-       Context("when the expected is neither a string nor a stringer nor a byte array", func() {
-               It("should error", func() {
-                       success, err := (&MatchJSONMatcher{JSONToMatch: 2}).Match("{}")
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-                       Ω(err.Error()).Should(ContainSubstring("MatchJSONMatcher matcher requires a string, stringer, or []byte.  Got expected:\n    <int>: 2"))
-
-                       success, err = (&MatchJSONMatcher{JSONToMatch: nil}).Match("{}")
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-                       Ω(err.Error()).Should(ContainSubstring("MatchJSONMatcher matcher requires a string, stringer, or []byte.  Got expected:\n    <nil>: nil"))
-               })
-       })
-
-       Context("when the actual is neither a string nor a stringer nor a byte array", func() {
-               It("should error", func() {
-                       success, err := (&MatchJSONMatcher{JSONToMatch: "{}"}).Match(2)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-                       Ω(err.Error()).Should(ContainSubstring("MatchJSONMatcher matcher requires a string, stringer, or []byte.  Got actual:\n    <int>: 2"))
-
-                       success, err = (&MatchJSONMatcher{JSONToMatch: "{}"}).Match(nil)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-                       Ω(err.Error()).Should(ContainSubstring("MatchJSONMatcher matcher requires a string, stringer, or []byte.  Got actual:\n    <nil>: nil"))
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/match_regexp_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/match_regexp_matcher_test.go
deleted file mode 100644 (file)
index bb521cc..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-package matchers_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/matchers"
-)
-
-var _ = Describe("MatchRegexp", func() {
-       Context("when actual is a string", func() {
-               It("should match against the string", func() {
-                       Ω(" a2!bla").Should(MatchRegexp(`\d!`))
-                       Ω(" a2!bla").ShouldNot(MatchRegexp(`[A-Z]`))
-               })
-       })
-
-       Context("when actual is a stringer", func() {
-               It("should call the stringer and match agains the returned string", func() {
-                       Ω(&myStringer{a: "Abc3"}).Should(MatchRegexp(`[A-Z][a-z]+\d`))
-               })
-       })
-
-       Context("when the matcher is called with multiple arguments", func() {
-               It("should pass the string and arguments to sprintf", func() {
-                       Ω(" a23!bla").Should(MatchRegexp(`\d%d!`, 3))
-               })
-       })
-
-       Context("when actual is neither a string nor a stringer", func() {
-               It("should error", func() {
-                       success, err := (&MatchRegexpMatcher{Regexp: `\d`}).Match(2)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-
-       Context("when the passed in regexp fails to compile", func() {
-               It("should error", func() {
-                       success, err := (&MatchRegexpMatcher{Regexp: "("}).Match("Foo")
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/match_yaml_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/match_yaml_matcher_test.go
deleted file mode 100644 (file)
index 8e63de1..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-package matchers_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-
-       . "github.com/onsi/gomega/matchers"
-)
-
-var _ = Describe("MatchYAMLMatcher", func() {
-       Context("When passed stringifiables", func() {
-               It("should succeed if the YAML matches", func() {
-                       Expect("---").Should(MatchYAML(""))
-                       Expect("a: 1").Should(MatchYAML(`{"a":1}`))
-                       Expect("a: 1\nb: 2").Should(MatchYAML(`{"b":2, "a":1}`))
-               })
-
-               It("should explain if the YAML does not match when it should", func() {
-                       message := (&MatchYAMLMatcher{YAMLToMatch: "a: 1"}).FailureMessage("b: 2")
-                       Expect(message).To(MatchRegexp(`Expected\s+<string>: b: 2\s+to match YAML of\s+<string>: a: 1`))
-               })
-
-               It("should normalise the expected and actual when explaining if the YAML does not match when it should", func() {
-                       message := (&MatchYAMLMatcher{YAMLToMatch: "a: 'one'"}).FailureMessage("{b: two}")
-                       Expect(message).To(MatchRegexp(`Expected\s+<string>: b: two\s+to match YAML of\s+<string>: a: one`))
-               })
-
-               It("should explain if the YAML matches when it should not", func() {
-                       message := (&MatchYAMLMatcher{YAMLToMatch: "a: 1"}).NegatedFailureMessage("a: 1")
-                       Expect(message).To(MatchRegexp(`Expected\s+<string>: a: 1\s+not to match YAML of\s+<string>: a: 1`))
-               })
-
-               It("should normalise the expected and actual when explaining if the YAML matches when it should not", func() {
-                       message := (&MatchYAMLMatcher{YAMLToMatch: "a: 'one'"}).NegatedFailureMessage("{a: one}")
-                       Expect(message).To(MatchRegexp(`Expected\s+<string>: a: one\s+not to match YAML of\s+<string>: a: one`))
-               })
-
-               It("should fail if the YAML does not match", func() {
-                       Expect("a: 1").ShouldNot(MatchYAML(`{"b":2, "a":1}`))
-               })
-
-               It("should work with byte arrays", func() {
-                       Expect([]byte("a: 1")).Should(MatchYAML([]byte("a: 1")))
-                       Expect("a: 1").Should(MatchYAML([]byte("a: 1")))
-                       Expect([]byte("a: 1")).Should(MatchYAML("a: 1"))
-               })
-       })
-
-       Context("when the expected is not valid YAML", func() {
-               It("should error and explain why", func() {
-                       success, err := (&MatchYAMLMatcher{YAMLToMatch: ""}).Match("good:\nbad")
-                       Expect(success).Should(BeFalse())
-                       Expect(err).Should(HaveOccurred())
-                       Expect(err.Error()).Should(ContainSubstring("Actual 'good:\nbad' should be valid YAML"))
-               })
-       })
-
-       Context("when the actual is not valid YAML", func() {
-               It("should error and explain why", func() {
-                       success, err := (&MatchYAMLMatcher{YAMLToMatch: "good:\nbad"}).Match("")
-                       Expect(success).Should(BeFalse())
-                       Expect(err).Should(HaveOccurred())
-                       Expect(err.Error()).Should(ContainSubstring("Expected 'good:\nbad' should be valid YAML"))
-               })
-       })
-
-       Context("when the expected is neither a string nor a stringer nor a byte array", func() {
-               It("should error", func() {
-                       success, err := (&MatchYAMLMatcher{YAMLToMatch: 2}).Match("")
-                       Expect(success).Should(BeFalse())
-                       Expect(err).Should(HaveOccurred())
-                       Expect(err.Error()).Should(ContainSubstring("MatchYAMLMatcher matcher requires a string, stringer, or []byte.  Got expected:\n    <int>: 2"))
-
-                       success, err = (&MatchYAMLMatcher{YAMLToMatch: nil}).Match("")
-                       Expect(success).Should(BeFalse())
-                       Expect(err).Should(HaveOccurred())
-                       Expect(err.Error()).Should(ContainSubstring("MatchYAMLMatcher matcher requires a string, stringer, or []byte.  Got expected:\n    <nil>: nil"))
-               })
-       })
-
-       Context("when the actual is neither a string nor a stringer nor a byte array", func() {
-               It("should error", func() {
-                       success, err := (&MatchYAMLMatcher{YAMLToMatch: ""}).Match(2)
-                       Expect(success).Should(BeFalse())
-                       Expect(err).Should(HaveOccurred())
-                       Expect(err.Error()).Should(ContainSubstring("MatchYAMLMatcher matcher requires a string, stringer, or []byte.  Got actual:\n    <int>: 2"))
-
-                       success, err = (&MatchYAMLMatcher{YAMLToMatch: ""}).Match(nil)
-                       Expect(success).Should(BeFalse())
-                       Expect(err).Should(HaveOccurred())
-                       Expect(err.Error()).Should(ContainSubstring("MatchYAMLMatcher matcher requires a string, stringer, or []byte.  Got actual:\n    <nil>: nil"))
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/matcher_tests_suite_test.go b/vendor/github.com/onsi/gomega/matchers/matcher_tests_suite_test.go
deleted file mode 100644 (file)
index 01b11b9..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-package matchers_test
-
-import (
-       "testing"
-
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-)
-
-type myStringer struct {
-       a string
-}
-
-func (s *myStringer) String() string {
-       return s.a
-}
-
-type StringAlias string
-
-type myCustomType struct {
-       s   string
-       n   int
-       f   float32
-       arr []string
-}
-
-func Test(t *testing.T) {
-       RegisterFailHandler(Fail)
-       RunSpecs(t, "Gomega Matchers")
-}
diff --git a/vendor/github.com/onsi/gomega/matchers/not_test.go b/vendor/github.com/onsi/gomega/matchers/not_test.go
deleted file mode 100644 (file)
index b3c1fdb..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-package matchers_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/matchers"
-)
-
-var _ = Describe("NotMatcher", func() {
-       Context("basic examples", func() {
-               It("works", func() {
-                       Expect(input).To(Not(false1))
-                       Expect(input).To(Not(Not(true2)))
-                       Expect(input).ToNot(Not(true3))
-                       Expect(input).ToNot(Not(Not(false1)))
-                       Expect(input).To(Not(Not(Not(false2))))
-               })
-       })
-
-       Context("De Morgan's laws", func() {
-               It("~(A && B) == ~A || ~B", func() {
-                       Expect(input).To(Not(And(false1, false2)))
-                       Expect(input).To(Or(Not(false1), Not(false2)))
-               })
-               It("~(A || B) == ~A && ~B", func() {
-                       Expect(input).To(Not(Or(false1, false2)))
-                       Expect(input).To(And(Not(false1), Not(false2)))
-               })
-       })
-
-       Context("failure messages are opposite of original matchers' failure messages", func() {
-               Context("when match fails", func() {
-                       It("gives a descriptive message", func() {
-                               verifyFailureMessage(Not(HaveLen(2)), input, "not to have length 2")
-                       })
-               })
-
-               Context("when match succeeds, but expected it to fail", func() {
-                       It("gives a descriptive message", func() {
-                               verifyFailureMessage(Not(Not(HaveLen(3))), input, "to have length 3")
-                       })
-               })
-       })
-
-       Context("MatchMayChangeInTheFuture()", func() {
-               It("Propagates value from wrapped matcher", func() {
-                       m := Not(Or()) // an empty Or() always returns false, and indicates it cannot change
-                       Expect(m.Match("anything")).To(BeTrue())
-                       Expect(m.(*NotMatcher).MatchMayChangeInTheFuture("anything")).To(BeFalse())
-               })
-               It("Defaults to true", func() {
-                       m := Not(Equal(1)) // Equal does not have this method
-                       Expect(m.Match(2)).To(BeTrue())
-                       Expect(m.(*NotMatcher).MatchMayChangeInTheFuture(2)).To(BeTrue()) // defaults to true
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/or_test.go b/vendor/github.com/onsi/gomega/matchers/or_test.go
deleted file mode 100644 (file)
index 9589a17..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-package matchers_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/matchers"
-)
-
-var _ = Describe("OrMatcher", func() {
-       It("works with positive cases", func() {
-               Expect(input).To(Or(true1))
-               Expect(input).To(Or(true1, true2))
-               Expect(input).To(Or(true1, false1))
-               Expect(input).To(Or(false1, true2))
-               Expect(input).To(Or(true1, true2, true3))
-               Expect(input).To(Or(true1, true2, false3))
-               Expect(input).To(Or(true1, false2, true3))
-               Expect(input).To(Or(false1, true2, true3))
-               Expect(input).To(Or(true1, false2, false3))
-               Expect(input).To(Or(false1, false2, true3))
-
-               // use alias
-               Expect(input).To(SatisfyAny(false1, false2, true3))
-       })
-
-       It("works with negative cases", func() {
-               Expect(input).ToNot(Or())
-               Expect(input).ToNot(Or(false1))
-               Expect(input).ToNot(Or(false1, false2))
-               Expect(input).ToNot(Or(false1, false2, false3))
-       })
-
-       Context("failure messages", func() {
-               Context("when match fails", func() {
-                       It("gives a descriptive message", func() {
-                               verifyFailureMessage(Or(false1, false2), input,
-                                       "To satisfy at least one of these matchers: [%!s(*matchers.HaveLenMatcher=&{1}) %!s(*matchers.EqualMatcher=&{hip})]")
-                       })
-               })
-
-               Context("when match succeeds, but expected it to fail", func() {
-                       It("gives a descriptive message", func() {
-                               verifyFailureMessage(Not(Or(true1, true2)), input, `not to have length 2`)
-                       })
-               })
-       })
-
-       Context("MatchMayChangeInTheFuture", func() {
-               Context("Match returned false", func() {
-                       It("returns true if any of the matchers could change", func() {
-                               // 3 matchers, all return false, and all could change
-                               m := Or(BeNil(), Equal("hip"), HaveLen(1))
-                               Expect(m.Match("hi")).To(BeFalse())
-                               Expect(m.(*OrMatcher).MatchMayChangeInTheFuture("hi")).To(BeTrue()) // all 3 of these matchers default to 'true'
-                       })
-                       It("returns false if none of the matchers could change", func() {
-                               // empty Or() has the property of never matching, and never can change since there are no sub-matchers that could change
-                               m := Or()
-                               Expect(m.Match("anything")).To(BeFalse())
-                               Expect(m.(*OrMatcher).MatchMayChangeInTheFuture("anything")).To(BeFalse())
-
-                               // Or() with 3 sub-matchers that return false, and can't change
-                               m = Or(Or(), Or(), Or())
-                               Expect(m.Match("hi")).To(BeFalse())
-                               Expect(m.(*OrMatcher).MatchMayChangeInTheFuture("hi")).To(BeFalse()) // the 3 empty Or()'s won't change
-                       })
-               })
-               Context("Match returned true", func() {
-                       Context("returns value of the successful matcher", func() {
-                               It("false if successful matcher not going to change", func() {
-                                       // 3 matchers: 1st returns false, 2nd returns true and is not going to change, 3rd is never called
-                                       m := Or(BeNil(), And(), Equal(1))
-                                       Expect(m.Match("hi")).To(BeTrue())
-                                       Expect(m.(*OrMatcher).MatchMayChangeInTheFuture("hi")).To(BeFalse())
-                               })
-                               It("true if successful matcher indicates it might change", func() {
-                                       // 3 matchers: 1st returns false, 2nd returns true and "might" change, 3rd is never called
-                                       m := Or(Not(BeNil()), Equal("hi"), Equal(1))
-                                       Expect(m.Match("hi")).To(BeTrue())
-                                       Expect(m.(*OrMatcher).MatchMayChangeInTheFuture("hi")).To(BeTrue()) // Equal("hi") indicates it might change
-                               })
-                       })
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/panic_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/panic_matcher_test.go
deleted file mode 100644 (file)
index 6b859a7..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-package matchers_test
-
-import (
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/matchers"
-)
-
-var _ = Describe("Panic", func() {
-       Context("when passed something that's not a function that takes zero arguments and returns nothing", func() {
-               It("should error", func() {
-                       success, err := (&PanicMatcher{}).Match("foo")
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-
-                       success, err = (&PanicMatcher{}).Match(nil)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-
-                       success, err = (&PanicMatcher{}).Match(func(foo string) {})
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-
-                       success, err = (&PanicMatcher{}).Match(func() string { return "bar" })
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-
-       Context("when passed a function of the correct type", func() {
-               It("should call the function and pass if the function panics", func() {
-                       Ω(func() { panic("ack!") }).Should(Panic())
-                       Ω(func() {}).ShouldNot(Panic())
-               })
-       })
-
-       Context("when assertion fails", func() {
-               It("should print the object passed to Panic", func() {
-                       failuresMessages := InterceptGomegaFailures(func() {
-                               Ω(func() { panic("ack!") }).ShouldNot(Panic())
-                       })
-                       Ω(failuresMessages).Should(ConsistOf(MatchRegexp("not to panic, but panicked with\\s*<string>: ack!")))
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/receive_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/receive_matcher_test.go
deleted file mode 100644 (file)
index 938c078..0000000
+++ /dev/null
@@ -1,280 +0,0 @@
-package matchers_test
-
-import (
-       "time"
-
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/matchers"
-)
-
-type kungFuActor interface {
-       DrunkenMaster() bool
-}
-
-type jackie struct {
-       name string
-}
-
-func (j *jackie) DrunkenMaster() bool {
-       return true
-}
-
-var _ = Describe("ReceiveMatcher", func() {
-       Context("with no argument", func() {
-               Context("for a buffered channel", func() {
-                       It("should succeed", func() {
-                               channel := make(chan bool, 1)
-
-                               Ω(channel).ShouldNot(Receive())
-
-                               channel <- true
-
-                               Ω(channel).Should(Receive())
-                       })
-               })
-
-               Context("for an unbuffered channel", func() {
-                       It("should succeed (eventually)", func() {
-                               channel := make(chan bool)
-
-                               Ω(channel).ShouldNot(Receive())
-
-                               go func() {
-                                       time.Sleep(10 * time.Millisecond)
-                                       channel <- true
-                               }()
-
-                               Eventually(channel).Should(Receive())
-                       })
-               })
-       })
-
-       Context("with a pointer argument", func() {
-               Context("of the correct type", func() {
-                       It("should write the value received on the channel to the pointer", func() {
-                               channel := make(chan int, 1)
-
-                               var value int
-
-                               Ω(channel).ShouldNot(Receive(&value))
-                               Ω(value).Should(BeZero())
-
-                               channel <- 17
-
-                               Ω(channel).Should(Receive(&value))
-                               Ω(value).Should(Equal(17))
-                       })
-               })
-
-               Context("to various types of objects", func() {
-                       It("should work", func() {
-                               //channels of strings
-                               stringChan := make(chan string, 1)
-                               stringChan <- "foo"
-
-                               var s string
-                               Ω(stringChan).Should(Receive(&s))
-                               Ω(s).Should(Equal("foo"))
-
-                               //channels of slices
-                               sliceChan := make(chan []bool, 1)
-                               sliceChan <- []bool{true, true, false}
-
-                               var sl []bool
-                               Ω(sliceChan).Should(Receive(&sl))
-                               Ω(sl).Should(Equal([]bool{true, true, false}))
-
-                               //channels of channels
-                               chanChan := make(chan chan bool, 1)
-                               c := make(chan bool)
-                               chanChan <- c
-
-                               var receivedC chan bool
-                               Ω(chanChan).Should(Receive(&receivedC))
-                               Ω(receivedC).Should(Equal(c))
-
-                               //channels of interfaces
-                               jackieChan := make(chan kungFuActor, 1)
-                               aJackie := &jackie{name: "Jackie Chan"}
-                               jackieChan <- aJackie
-
-                               var theJackie kungFuActor
-                               Ω(jackieChan).Should(Receive(&theJackie))
-                               Ω(theJackie).Should(Equal(aJackie))
-                       })
-               })
-
-               Context("of the wrong type", func() {
-                       It("should error", func() {
-                               channel := make(chan int)
-                               var incorrectType bool
-
-                               success, err := (&ReceiveMatcher{Arg: &incorrectType}).Match(channel)
-                               Ω(success).Should(BeFalse())
-                               Ω(err).Should(HaveOccurred())
-
-                               var notAPointer int
-                               success, err = (&ReceiveMatcher{Arg: notAPointer}).Match(channel)
-                               Ω(success).Should(BeFalse())
-                               Ω(err).Should(HaveOccurred())
-                       })
-               })
-       })
-
-       Context("with a matcher", func() {
-               It("should defer to the underlying matcher", func() {
-                       intChannel := make(chan int, 1)
-                       intChannel <- 3
-                       Ω(intChannel).Should(Receive(Equal(3)))
-
-                       intChannel <- 2
-                       Ω(intChannel).ShouldNot(Receive(Equal(3)))
-
-                       stringChannel := make(chan []string, 1)
-                       stringChannel <- []string{"foo", "bar", "baz"}
-                       Ω(stringChannel).Should(Receive(ContainElement(ContainSubstring("fo"))))
-
-                       stringChannel <- []string{"foo", "bar", "baz"}
-                       Ω(stringChannel).ShouldNot(Receive(ContainElement(ContainSubstring("archipelago"))))
-               })
-
-               It("should defer to the underlying matcher for the message", func() {
-                       matcher := Receive(Equal(3))
-                       channel := make(chan int, 1)
-                       channel <- 2
-                       matcher.Match(channel)
-                       Ω(matcher.FailureMessage(channel)).Should(MatchRegexp(`Expected\s+<int>: 2\s+to equal\s+<int>: 3`))
-
-                       channel <- 3
-                       matcher.Match(channel)
-                       Ω(matcher.NegatedFailureMessage(channel)).Should(MatchRegexp(`Expected\s+<int>: 3\s+not to equal\s+<int>: 3`))
-               })
-
-               It("should work just fine with Eventually", func() {
-                       stringChannel := make(chan string)
-
-                       go func() {
-                               time.Sleep(5 * time.Millisecond)
-                               stringChannel <- "A"
-                               time.Sleep(5 * time.Millisecond)
-                               stringChannel <- "B"
-                       }()
-
-                       Eventually(stringChannel).Should(Receive(Equal("B")))
-               })
-
-               Context("if the matcher errors", func() {
-                       It("should error", func() {
-                               channel := make(chan int, 1)
-                               channel <- 3
-                               success, err := (&ReceiveMatcher{Arg: ContainSubstring("three")}).Match(channel)
-                               Ω(success).Should(BeFalse())
-                               Ω(err).Should(HaveOccurred())
-                       })
-               })
-
-               Context("if nothing is received", func() {
-                       It("should fail", func() {
-                               channel := make(chan int, 1)
-                               success, err := (&ReceiveMatcher{Arg: Equal(1)}).Match(channel)
-                               Ω(success).Should(BeFalse())
-                               Ω(err).ShouldNot(HaveOccurred())
-                       })
-               })
-       })
-
-       Context("When actual is a *closed* channel", func() {
-               Context("for a buffered channel", func() {
-                       It("should work until it hits the end of the buffer", func() {
-                               channel := make(chan bool, 1)
-                               channel <- true
-
-                               close(channel)
-
-                               Ω(channel).Should(Receive())
-                               Ω(channel).ShouldNot(Receive())
-                       })
-               })
-
-               Context("for an unbuffered channel", func() {
-                       It("should always fail", func() {
-                               channel := make(chan bool)
-                               close(channel)
-
-                               Ω(channel).ShouldNot(Receive())
-                       })
-               })
-       })
-
-       Context("When actual is a send-only channel", func() {
-               It("should error", func() {
-                       channel := make(chan bool)
-
-                       var writerChannel chan<- bool
-                       writerChannel = channel
-
-                       success, err := (&ReceiveMatcher{}).Match(writerChannel)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-
-       Context("when acutal is a non-channel", func() {
-               It("should error", func() {
-                       var nilChannel chan bool
-
-                       success, err := (&ReceiveMatcher{}).Match(nilChannel)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-
-                       success, err = (&ReceiveMatcher{}).Match(nil)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-
-                       success, err = (&ReceiveMatcher{}).Match(3)
-                       Ω(success).Should(BeFalse())
-                       Ω(err).Should(HaveOccurred())
-               })
-       })
-
-       Describe("when used with eventually and a custom matcher", func() {
-               It("should return the matcher's error when a failing value is received on the channel, instead of the must receive something failure", func() {
-                       failures := InterceptGomegaFailures(func() {
-                               c := make(chan string, 0)
-                               Eventually(c, 0.01).Should(Receive(Equal("hello")))
-                       })
-                       Ω(failures[0]).Should(ContainSubstring("When passed a matcher, ReceiveMatcher's channel *must* receive something."))
-
-                       failures = InterceptGomegaFailures(func() {
-                               c := make(chan string, 1)
-                               c <- "hi"
-                               Eventually(c, 0.01).Should(Receive(Equal("hello")))
-                       })
-                       Ω(failures[0]).Should(ContainSubstring("<string>: hello"))
-               })
-       })
-
-       Describe("Bailing early", func() {
-               It("should bail early when passed a closed channel", func() {
-                       c := make(chan bool)
-                       close(c)
-
-                       t := time.Now()
-                       failures := InterceptGomegaFailures(func() {
-                               Eventually(c).Should(Receive())
-                       })
-                       Ω(time.Since(t)).Should(BeNumerically("<", 500*time.Millisecond))
-                       Ω(failures).Should(HaveLen(1))
-               })
-
-               It("should bail early when passed a non-channel", func() {
-                       t := time.Now()
-                       failures := InterceptGomegaFailures(func() {
-                               Eventually(3).Should(Receive())
-                       })
-                       Ω(time.Since(t)).Should(BeNumerically("<", 500*time.Millisecond))
-                       Ω(failures).Should(HaveLen(1))
-               })
-       })
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/succeed_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/succeed_matcher_test.go
deleted file mode 100644 (file)
index 6b62c8b..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-package matchers_test
-
-import (
-       "errors"
-
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/matchers"
-)
-
-func Erroring() error {
-       return errors.New("bam")
-}
-
-func NotErroring() error {
-       return nil
-}
-
-type AnyType struct{}
-
-func Invalid() *AnyType {
-       return nil
-}
-
-var _ = Describe("Succeed", func() {
-       It("should succeed if the function succeeds", func() {
-               Ω(NotErroring()).Should(Succeed())
-       })
-
-       It("should succeed (in the negated) if the function errored", func() {
-               Ω(Erroring()).ShouldNot(Succeed())
-       })
-
-       It("should not if passed a non-error", func() {
-               success, err := (&SucceedMatcher{}).Match(Invalid())
-               Ω(success).Should(BeFalse())
-               Ω(err).Should(MatchError("Expected an error-type.  Got:\n    <*matchers_test.AnyType | 0x0>: nil"))
-       })
-
-       It("doesn't support non-error type", func() {
-               success, err := (&SucceedMatcher{}).Match(AnyType{})
-               Ω(success).Should(BeFalse())
-               Ω(err).Should(MatchError("Expected an error-type.  Got:\n    <matchers_test.AnyType>: {}"))
-       })
-
-       It("doesn't support non-error pointer type", func() {
-               success, err := (&SucceedMatcher{}).Match(&AnyType{})
-               Ω(success).Should(BeFalse())
-               Ω(err).Should(MatchError(MatchRegexp(`Expected an error-type.  Got:\n    <*matchers_test.AnyType | 0x[[:xdigit:]]+>: {}`)))
-       })
-
-       It("should not succeed with pointer types that conform to error interface", func() {
-               err := &CustomErr{"ohai"}
-               Ω(err).ShouldNot(Succeed())
-       })
-
-       It("should succeed with nil pointers to types that conform to error interface", func() {
-               var err *CustomErr = nil
-               Ω(err).Should(Succeed())
-       })
-
-})
diff --git a/vendor/github.com/onsi/gomega/matchers/support/goraph/MIT.LICENSE b/vendor/github.com/onsi/gomega/matchers/support/goraph/MIT.LICENSE
deleted file mode 100644 (file)
index 8edd817..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-Copyright (c) 2014 Amit Kumar Gupta
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/vendor/github.com/onsi/gomega/matchers/with_transform_test.go b/vendor/github.com/onsi/gomega/matchers/with_transform_test.go
deleted file mode 100644 (file)
index e52bf8e..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-package matchers_test
-
-import (
-       "errors"
-
-       . "github.com/onsi/ginkgo"
-       . "github.com/onsi/gomega"
-       . "github.com/onsi/gomega/matchers"
-)
-
-var _ = Describe("WithTransformMatcher", func() {
-
-       var plus1 = func(i int) int { return i + 1 }
-
-       Context("Panic if transform function invalid", func() {
-               panicsWithTransformer := func(transform interface{}) {
-                       ExpectWithOffset(1, func() { WithTransform(transform, nil) }).To(Panic())
-               }
-               It("nil", func() {
-                       panicsWithTransformer(nil)
-               })
-               Context("Invalid number of args, but correct return value count", func() {
-                       It("zero", func() {
-                               panicsWithTransformer(func() int { return 5 })
-                       })
-                       It("two", func() {
-                               panicsWithTransformer(func(i, j int) int { return 5 })
-                       })
-               })
-               Context("Invalid number of return values, but correct number of arguments", func() {
-                       It("zero", func() {
-                               panicsWithTransformer(func(i int) {})
-                       })
-                       It("two", func() {
-                               panicsWithTransformer(func(i int) (int, int) { return 5, 6 })
-                       })
-               })
-       })
-
-       It("works with positive cases", func() {
-               Expect(1).To(WithTransform(plus1, Equal(2)))
-               Expect(1).To(WithTransform(plus1, WithTransform(plus1, Equal(3))))
-               Expect(1).To(WithTransform(plus1, And(Equal(2), BeNumerically(">", 1))))
-
-               // transform expects custom type
-               type S struct {
-                       A int
-                       B string
-               }
-               transformer := func(s S) string { return s.B }
-               Expect(S{1, "hi"}).To(WithTransform(transformer, Equal("hi")))
-
-               // transform expects interface
-               errString := func(e error) string { return e.Error() }
-               Expect(errors.New("abc")).To(WithTransform(errString, Equal("abc")))
-       })
-
-       It("works with negative cases", func() {
-               Expect(1).ToNot(WithTransform(plus1, Equal(3)))
-               Expect(1).ToNot(WithTransform(plus1, WithTransform(plus1, Equal(2))))
-       })
-
-       Context("failure messages", func() {
-               Context("when match fails", func() {
-                       It("gives a descriptive message", func() {
-                               m := WithTransform(plus1, Equal(3))
-                               Expect(m.Match(1)).To(BeFalse())
-                               Expect(m.FailureMessage(1)).To(Equal("Expected\n    <int>: 2\nto equal\n    <int>: 3"))
-                       })
-               })
-
-               Context("when match succeeds, but expected it to fail", func() {
-                       It("gives a descriptive message", func() {
-                               m := Not(WithTransform(plus1, Equal(3)))
-                               Expect(m.Match(2)).To(BeFalse())
-                               Expect(m.FailureMessage(2)).To(Equal("Expected\n    <int>: 3\nnot to equal\n    <int>: 3"))
-                       })
-               })
-
-               Context("actual value is incompatible with transform function's argument type", func() {
-                       It("gracefully fails if transform cannot be performed", func() {
-                               m := WithTransform(plus1, Equal(3))
-                               result, err := m.Match("hi") // give it a string but transform expects int; doesn't panic
-                               Expect(result).To(BeFalse())
-                               Expect(err).To(MatchError("Transform function expects 'int' but we have 'string'"))
-                       })
-               })
-       })
-
-       Context("MatchMayChangeInTheFuture()", func() {
-               It("Propagates value from wrapped matcher on the transformed value", func() {
-                       m := WithTransform(plus1, Or()) // empty Or() always returns false, and indicates it cannot change
-                       Expect(m.Match(1)).To(BeFalse())
-                       Expect(m.(*WithTransformMatcher).MatchMayChangeInTheFuture(1)).To(BeFalse()) // empty Or() indicates cannot change
-               })
-               It("Defaults to true", func() {
-                       m := WithTransform(plus1, Equal(2)) // Equal does not have this method
-                       Expect(m.Match(1)).To(BeTrue())
-                       Expect(m.(*WithTransformMatcher).MatchMayChangeInTheFuture(1)).To(BeTrue()) // defaults to true
-               })
-       })
-})
diff --git a/vendor/github.com/pkg/profile/example_test.go b/vendor/github.com/pkg/profile/example_test.go
deleted file mode 100644 (file)
index 98a54b5..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-package profile_test
-
-import (
-       "flag"
-       "os"
-
-       "github.com/pkg/profile"
-)
-
-func ExampleStart() {
-       // start a simple CPU profile and register
-       // a defer to Stop (flush) the profiling data.
-       defer profile.Start().Stop()
-}
-
-func ExampleCPUProfile() {
-       // CPU profiling is the default profiling mode, but you can specify it
-       // explicitly for completeness.
-       defer profile.Start(profile.CPUProfile).Stop()
-}
-
-func ExampleMemProfile() {
-       // use memory profiling, rather than the default cpu profiling.
-       defer profile.Start(profile.MemProfile).Stop()
-}
-
-func ExampleMemProfileRate() {
-       // use memory profiling with custom rate.
-       defer profile.Start(profile.MemProfileRate(2048)).Stop()
-}
-
-func ExampleProfilePath() {
-       // set the location that the profile will be written to
-       defer profile.Start(profile.ProfilePath(os.Getenv("HOME"))).Stop()
-}
-
-func ExampleNoShutdownHook() {
-       // disable the automatic shutdown hook.
-       defer profile.Start(profile.NoShutdownHook).Stop()
-}
-
-func ExampleStart_withFlags() {
-       // use the flags package to selectively enable profiling.
-       mode := flag.String("profile.mode", "", "enable profiling mode, one of [cpu, mem, mutex, block]")
-       flag.Parse()
-       switch *mode {
-       case "cpu":
-               defer profile.Start(profile.CPUProfile).Stop()
-       case "mem":
-               defer profile.Start(profile.MemProfile).Stop()
-       case "mutex":
-               defer profile.Start(profile.MutexProfile).Stop()
-       case "block":
-               defer profile.Start(profile.BlockProfile).Stop()
-       default:
-               // do nothing
-       }
-}
diff --git a/vendor/github.com/pkg/profile/profile_test.go b/vendor/github.com/pkg/profile/profile_test.go
deleted file mode 100644 (file)
index e33012c..0000000
+++ /dev/null
@@ -1,330 +0,0 @@
-package profile
-
-import (
-       "bufio"
-       "bytes"
-       "io"
-       "io/ioutil"
-       "os"
-       "os/exec"
-       "path/filepath"
-       "strings"
-       "testing"
-)
-
-type checkFn func(t *testing.T, stdout, stderr []byte, err error)
-
-func TestProfile(t *testing.T) {
-       f, err := ioutil.TempFile("", "profile_test")
-       if err != nil {
-               t.Fatal(err)
-       }
-       defer os.Remove(f.Name())
-
-       var profileTests = []struct {
-               name   string
-               code   string
-               checks []checkFn
-       }{{
-               name: "default profile (cpu)",
-               code: `
-package main
-
-import "github.com/pkg/profile"
-
-func main() {
-       defer profile.Start().Stop()
-}      
-`,
-               checks: []checkFn{
-                       NoStdout,
-                       Stderr("profile: cpu profiling enabled"),
-                       NoErr,
-               },
-       }, {
-               name: "memory profile",
-               code: `
-package main
-
-import "github.com/pkg/profile"
-
-func main() {
-       defer profile.Start(profile.MemProfile).Stop()
-}      
-`,
-               checks: []checkFn{
-                       NoStdout,
-                       Stderr("profile: memory profiling enabled"),
-                       NoErr,
-               },
-       }, {
-               name: "memory profile (rate 2048)",
-               code: `
-package main
-
-import "github.com/pkg/profile"
-
-func main() {
-       defer profile.Start(profile.MemProfileRate(2048)).Stop()
-}      
-`,
-               checks: []checkFn{
-                       NoStdout,
-                       Stderr("profile: memory profiling enabled (rate 2048)"),
-                       NoErr,
-               },
-       }, {
-               name: "double start",
-               code: `
-package main
-
-import "github.com/pkg/profile"
-
-func main() {
-       profile.Start()
-       profile.Start()
-}      
-`,
-               checks: []checkFn{
-                       NoStdout,
-                       Stderr("cpu profiling enabled", "profile: Start() already called"),
-                       Err,
-               },
-       }, {
-               name: "block profile",
-               code: `
-package main
-
-import "github.com/pkg/profile"
-
-func main() {
-       defer profile.Start(profile.BlockProfile).Stop()
-}      
-`,
-               checks: []checkFn{
-                       NoStdout,
-                       Stderr("profile: block profiling enabled"),
-                       NoErr,
-               },
-       }, {
-               name: "mutex profile",
-               code: `
-package main
-
-import "github.com/pkg/profile"
-
-func main() {
-       defer profile.Start(profile.MutexProfile).Stop()
-}
-`,
-               checks: []checkFn{
-                       NoStdout,
-                       Stderr("profile: mutex profiling enabled"),
-                       NoErr,
-               },
-       }, {
-               name: "profile path",
-               code: `
-package main
-
-import "github.com/pkg/profile"
-
-func main() {
-       defer profile.Start(profile.ProfilePath(".")).Stop()
-}      
-`,
-               checks: []checkFn{
-                       NoStdout,
-                       Stderr("profile: cpu profiling enabled, cpu.pprof"),
-                       NoErr,
-               },
-       }, {
-               name: "profile path error",
-               code: `
-package main
-
-import "github.com/pkg/profile"
-
-func main() {
-               defer profile.Start(profile.ProfilePath("` + f.Name() + `")).Stop()
-}      
-`,
-               checks: []checkFn{
-                       NoStdout,
-                       Stderr("could not create initial output"),
-                       Err,
-               },
-       }, {
-               name: "multiple profile sessions",
-               code: `
-package main
-
-import "github.com/pkg/profile"
-
-func main() {
-       profile.Start(profile.CPUProfile).Stop()
-       profile.Start(profile.MemProfile).Stop()
-       profile.Start(profile.BlockProfile).Stop()
-       profile.Start(profile.CPUProfile).Stop()
-       profile.Start(profile.MutexProfile).Stop()
-}
-`,
-               checks: []checkFn{
-                       NoStdout,
-                       Stderr("profile: cpu profiling enabled",
-                               "profile: cpu profiling disabled",
-                               "profile: memory profiling enabled",
-                               "profile: memory profiling disabled",
-                               "profile: block profiling enabled",
-                               "profile: block profiling disabled",
-                               "profile: cpu profiling enabled",
-                               "profile: cpu profiling disabled",
-                               "profile: mutex profiling enabled",
-                               "profile: mutex profiling disabled"),
-                       NoErr,
-               },
-       }, {
-               name: "profile quiet",
-               code: `
-package main
-
-import "github.com/pkg/profile"
-
-func main() {
-        defer profile.Start(profile.Quiet).Stop()
-}       
-`,
-               checks: []checkFn{NoStdout, NoStderr, NoErr},
-       }}
-       for _, tt := range profileTests {
-               t.Log(tt.name)
-               stdout, stderr, err := runTest(t, tt.code)
-               for _, f := range tt.checks {
-                       f(t, stdout, stderr, err)
-               }
-       }
-}
-
-// NoStdout checks that stdout was blank.
-func NoStdout(t *testing.T, stdout, _ []byte, _ error) {
-       if len := len(stdout); len > 0 {
-               t.Errorf("stdout: wanted 0 bytes, got %d", len)
-       }
-}
-
-// Stderr verifies that the given lines match the output from stderr
-func Stderr(lines ...string) checkFn {
-       return func(t *testing.T, _, stderr []byte, _ error) {
-               r := bytes.NewReader(stderr)
-               if !validateOutput(r, lines) {
-                       t.Errorf("stderr: wanted '%s', got '%s'", lines, stderr)
-               }
-       }
-}
-
-// NoStderr checks that stderr was blank.
-func NoStderr(t *testing.T, _, stderr []byte, _ error) {
-       if len := len(stderr); len > 0 {
-               t.Errorf("stderr: wanted 0 bytes, got %d", len)
-       }
-}
-
-// Err checks that there was an error returned
-func Err(t *testing.T, _, _ []byte, err error) {
-       if err == nil {
-               t.Errorf("expected error")
-       }
-}
-
-// NoErr checks that err was nil
-func NoErr(t *testing.T, _, _ []byte, err error) {
-       if err != nil {
-               t.Errorf("error: expected nil, got %v", err)
-       }
-}
-
-// validatedOutput validates the given slice of lines against data from the given reader.
-func validateOutput(r io.Reader, want []string) bool {
-       s := bufio.NewScanner(r)
-       for _, line := range want {
-               if !s.Scan() || !strings.Contains(s.Text(), line) {
-                       return false
-               }
-       }
-       return true
-}
-
-var validateOutputTests = []struct {
-       input string
-       lines []string
-       want  bool
-}{{
-       input: "",
-       want:  true,
-}, {
-       input: `profile: yes
-`,
-       want: true,
-}, {
-       input: `profile: yes
-`,
-       lines: []string{"profile: yes"},
-       want:  true,
-}, {
-       input: `profile: yes
-profile: no
-`,
-       lines: []string{"profile: yes"},
-       want:  true,
-}, {
-       input: `profile: yes
-profile: no
-`,
-       lines: []string{"profile: yes", "profile: no"},
-       want:  true,
-}, {
-       input: `profile: yes
-profile: no
-`,
-       lines: []string{"profile: no"},
-       want:  false,
-}}
-
-func TestValidateOutput(t *testing.T) {
-       for _, tt := range validateOutputTests {
-               r := strings.NewReader(tt.input)
-               got := validateOutput(r, tt.lines)
-               if tt.want != got {
-                       t.Errorf("validateOutput(%q, %q), want %v, got %v", tt.input, tt.lines, tt.want, got)
-               }
-       }
-}
-
-// runTest executes the go program supplied and returns the contents of stdout,
-// stderr, and an error which may contain status information about the result
-// of the program.
-func runTest(t *testing.T, code string) ([]byte, []byte, error) {
-       chk := func(err error) {
-               if err != nil {
-                       t.Fatal(err)
-               }
-       }
-       gopath, err := ioutil.TempDir("", "profile-gopath")
-       chk(err)
-       defer os.RemoveAll(gopath)
-
-       srcdir := filepath.Join(gopath, "src")
-       err = os.Mkdir(srcdir, 0755)
-       chk(err)
-       src := filepath.Join(srcdir, "main.go")
-       err = ioutil.WriteFile(src, []byte(code), 0644)
-       chk(err)
-
-       cmd := exec.Command("go", "run", src)
-
-       var stdout, stderr bytes.Buffer
-       cmd.Stdout = &stdout
-       cmd.Stderr = &stderr
-       err = cmd.Run()
-       return stdout.Bytes(), stderr.Bytes(), err
-}
diff --git a/vendor/github.com/pkg/profile/trace_test.go b/vendor/github.com/pkg/profile/trace_test.go
deleted file mode 100644 (file)
index 6a61d79..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-package profile_test
-
-import "github.com/pkg/profile"
-
-func ExampleTraceProfile() {
-       // use execution tracing, rather than the default cpu profiling.
-       defer profile.Start(profile.TraceProfile).Stop()
-}
diff --git a/vendor/github.com/sirupsen/logrus/alt_exit_test.go b/vendor/github.com/sirupsen/logrus/alt_exit_test.go
deleted file mode 100644 (file)
index d182963..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-package logrus
-
-import (
-       "io/ioutil"
-       "os/exec"
-       "testing"
-       "time"
-)
-
-func TestRegister(t *testing.T) {
-       current := len(handlers)
-       RegisterExitHandler(func() {})
-       if len(handlers) != current+1 {
-               t.Fatalf("can't add handler")
-       }
-}
-
-func TestHandler(t *testing.T) {
-       gofile := "/tmp/testprog.go"
-       if err := ioutil.WriteFile(gofile, testprog, 0666); err != nil {
-               t.Fatalf("can't create go file")
-       }
-
-       outfile := "/tmp/testprog.out"
-       arg := time.Now().UTC().String()
-       err := exec.Command("go", "run", gofile, outfile, arg).Run()
-       if err == nil {
-               t.Fatalf("completed normally, should have failed")
-       }
-
-       data, err := ioutil.ReadFile(outfile)
-       if err != nil {
-               t.Fatalf("can't read output file %s", outfile)
-       }
-
-       if string(data) != arg {
-               t.Fatalf("bad data")
-       }
-}
-
-var testprog = []byte(`
-// Test program for atexit, gets output file and data as arguments and writes
-// data to output file in atexit handler.
-package main
-
-import (
-       "github.com/sirupsen/logrus"
-       "flag"
-       "fmt"
-       "io/ioutil"
-)
-
-var outfile = ""
-var data = ""
-
-func handler() {
-       ioutil.WriteFile(outfile, []byte(data), 0666)
-}
-
-func badHandler() {
-       n := 0
-       fmt.Println(1/n)
-}
-
-func main() {
-       flag.Parse()
-       outfile = flag.Arg(0)
-       data = flag.Arg(1)
-
-       logrus.RegisterExitHandler(handler)
-       logrus.RegisterExitHandler(badHandler)
-       logrus.Fatal("Bye bye")
-}
-`)
diff --git a/vendor/github.com/sirupsen/logrus/entry_test.go b/vendor/github.com/sirupsen/logrus/entry_test.go
deleted file mode 100644 (file)
index 99c3b41..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-package logrus
-
-import (
-       "bytes"
-       "fmt"
-       "testing"
-
-       "github.com/stretchr/testify/assert"
-)
-
-func TestEntryWithError(t *testing.T) {
-
-       assert := assert.New(t)
-
-       defer func() {
-               ErrorKey = "error"
-       }()
-
-       err := fmt.Errorf("kaboom at layer %d", 4711)
-
-       assert.Equal(err, WithError(err).Data["error"])
-
-       logger := New()
-       logger.Out = &bytes.Buffer{}
-       entry := NewEntry(logger)
-
-       assert.Equal(err, entry.WithError(err).Data["error"])
-
-       ErrorKey = "err"
-
-       assert.Equal(err, entry.WithError(err).Data["err"])
-
-}
-
-func TestEntryPanicln(t *testing.T) {
-       errBoom := fmt.Errorf("boom time")
-
-       defer func() {
-               p := recover()
-               assert.NotNil(t, p)
-
-               switch pVal := p.(type) {
-               case *Entry:
-                       assert.Equal(t, "kaboom", pVal.Message)
-                       assert.Equal(t, errBoom, pVal.Data["err"])
-               default:
-                       t.Fatalf("want type *Entry, got %T: %#v", pVal, pVal)
-               }
-       }()
-
-       logger := New()
-       logger.Out = &bytes.Buffer{}
-       entry := NewEntry(logger)
-       entry.WithField("err", errBoom).Panicln("kaboom")
-}
-
-func TestEntryPanicf(t *testing.T) {
-       errBoom := fmt.Errorf("boom again")
-
-       defer func() {
-               p := recover()
-               assert.NotNil(t, p)
-
-               switch pVal := p.(type) {
-               case *Entry:
-                       assert.Equal(t, "kaboom true", pVal.Message)
-                       assert.Equal(t, errBoom, pVal.Data["err"])
-               default:
-                       t.Fatalf("want type *Entry, got %T: %#v", pVal, pVal)
-               }
-       }()
-
-       logger := New()
-       logger.Out = &bytes.Buffer{}
-       entry := NewEntry(logger)
-       entry.WithField("err", errBoom).Panicf("kaboom %v", true)
-}
diff --git a/vendor/github.com/sirupsen/logrus/examples/basic/basic.go b/vendor/github.com/sirupsen/logrus/examples/basic/basic.go
deleted file mode 100644 (file)
index 3e112b4..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-package main
-
-import (
-       "github.com/sirupsen/logrus"
-       // "os"
-)
-
-var log = logrus.New()
-
-func init() {
-       log.Formatter = new(logrus.JSONFormatter)
-       log.Formatter = new(logrus.TextFormatter) // default
-
-       // file, err := os.OpenFile("logrus.log", os.O_CREATE|os.O_WRONLY, 0666)
-       // if err == nil {
-       //      log.Out = file
-       // } else {
-       //      log.Info("Failed to log to file, using default stderr")
-       // }
-
-       log.Level = logrus.DebugLevel
-}
-
-func main() {
-       defer func() {
-               err := recover()
-               if err != nil {
-                       log.WithFields(logrus.Fields{
-                               "omg":    true,
-                               "err":    err,
-                               "number": 100,
-                       }).Fatal("The ice breaks!")
-               }
-       }()
-
-       log.WithFields(logrus.Fields{
-               "animal": "walrus",
-               "number": 8,
-       }).Debug("Started observing beach")
-
-       log.WithFields(logrus.Fields{
-               "animal": "walrus",
-               "size":   10,
-       }).Info("A group of walrus emerges from the ocean")
-
-       log.WithFields(logrus.Fields{
-               "omg":    true,
-               "number": 122,
-       }).Warn("The group's number increased tremendously!")
-
-       log.WithFields(logrus.Fields{
-               "temperature": -4,
-       }).Debug("Temperature changes")
-
-       log.WithFields(logrus.Fields{
-               "animal": "orca",
-               "size":   9009,
-       }).Panic("It's over 9000!")
-}
diff --git a/vendor/github.com/sirupsen/logrus/examples/hook/hook.go b/vendor/github.com/sirupsen/logrus/examples/hook/hook.go
deleted file mode 100644 (file)
index c8470c3..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-package main
-
-import (
-       "github.com/sirupsen/logrus"
-       "gopkg.in/gemnasium/logrus-airbrake-hook.v2"
-)
-
-var log = logrus.New()
-
-func init() {
-       log.Formatter = new(logrus.TextFormatter) // default
-       log.Hooks.Add(airbrake.NewHook(123, "xyz", "development"))
-}
-
-func main() {
-       log.WithFields(logrus.Fields{
-               "animal": "walrus",
-               "size":   10,
-       }).Info("A group of walrus emerges from the ocean")
-
-       log.WithFields(logrus.Fields{
-               "omg":    true,
-               "number": 122,
-       }).Warn("The group's number increased tremendously!")
-
-       log.WithFields(logrus.Fields{
-               "omg":    true,
-               "number": 100,
-       }).Fatal("The ice breaks!")
-}
diff --git a/vendor/github.com/sirupsen/logrus/formatter_bench_test.go b/vendor/github.com/sirupsen/logrus/formatter_bench_test.go
deleted file mode 100644 (file)
index d948158..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-package logrus
-
-import (
-       "fmt"
-       "testing"
-       "time"
-)
-
-// smallFields is a small size data set for benchmarking
-var smallFields = Fields{
-       "foo":   "bar",
-       "baz":   "qux",
-       "one":   "two",
-       "three": "four",
-}
-
-// largeFields is a large size data set for benchmarking
-var largeFields = Fields{
-       "foo":       "bar",
-       "baz":       "qux",
-       "one":       "two",
-       "three":     "four",
-       "five":      "six",
-       "seven":     "eight",
-       "nine":      "ten",
-       "eleven":    "twelve",
-       "thirteen":  "fourteen",
-       "fifteen":   "sixteen",
-       "seventeen": "eighteen",
-       "nineteen":  "twenty",
-       "a":         "b",
-       "c":         "d",
-       "e":         "f",
-       "g":         "h",
-       "i":         "j",
-       "k":         "l",
-       "m":         "n",
-       "o":         "p",
-       "q":         "r",
-       "s":         "t",
-       "u":         "v",
-       "w":         "x",
-       "y":         "z",
-       "this":      "will",
-       "make":      "thirty",
-       "entries":   "yeah",
-}
-
-var errorFields = Fields{
-       "foo": fmt.Errorf("bar"),
-       "baz": fmt.Errorf("qux"),
-}
-
-func BenchmarkErrorTextFormatter(b *testing.B) {
-       doBenchmark(b, &TextFormatter{DisableColors: true}, errorFields)
-}
-
-func BenchmarkSmallTextFormatter(b *testing.B) {
-       doBenchmark(b, &TextFormatter{DisableColors: true}, smallFields)
-}
-
-func BenchmarkLargeTextFormatter(b *testing.B) {
-       doBenchmark(b, &TextFormatter{DisableColors: true}, largeFields)
-}
-
-func BenchmarkSmallColoredTextFormatter(b *testing.B) {
-       doBenchmark(b, &TextFormatter{ForceColors: true}, smallFields)
-}
-
-func BenchmarkLargeColoredTextFormatter(b *testing.B) {
-       doBenchmark(b, &TextFormatter{ForceColors: true}, largeFields)
-}
-
-func BenchmarkSmallJSONFormatter(b *testing.B) {
-       doBenchmark(b, &JSONFormatter{}, smallFields)
-}
-
-func BenchmarkLargeJSONFormatter(b *testing.B) {
-       doBenchmark(b, &JSONFormatter{}, largeFields)
-}
-
-func doBenchmark(b *testing.B, formatter Formatter, fields Fields) {
-       logger := New()
-
-       entry := &Entry{
-               Time:    time.Time{},
-               Level:   InfoLevel,
-               Message: "message",
-               Data:    fields,
-               Logger:  logger,
-       }
-       var d []byte
-       var err error
-       for i := 0; i < b.N; i++ {
-               d, err = formatter.Format(entry)
-               if err != nil {
-                       b.Fatal(err)
-               }
-               b.SetBytes(int64(len(d)))
-       }
-}
diff --git a/vendor/github.com/sirupsen/logrus/hook_test.go b/vendor/github.com/sirupsen/logrus/hook_test.go
deleted file mode 100644 (file)
index 13f34cb..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-package logrus
-
-import (
-       "testing"
-
-       "github.com/stretchr/testify/assert"
-)
-
-type TestHook struct {
-       Fired bool
-}
-
-func (hook *TestHook) Fire(entry *Entry) error {
-       hook.Fired = true
-       return nil
-}
-
-func (hook *TestHook) Levels() []Level {
-       return []Level{
-               DebugLevel,
-               InfoLevel,
-               WarnLevel,
-               ErrorLevel,
-               FatalLevel,
-               PanicLevel,
-       }
-}
-
-func TestHookFires(t *testing.T) {
-       hook := new(TestHook)
-
-       LogAndAssertJSON(t, func(log *Logger) {
-               log.Hooks.Add(hook)
-               assert.Equal(t, hook.Fired, false)
-
-               log.Print("test")
-       }, func(fields Fields) {
-               assert.Equal(t, hook.Fired, true)
-       })
-}
-
-type ModifyHook struct {
-}
-
-func (hook *ModifyHook) Fire(entry *Entry) error {
-       entry.Data["wow"] = "whale"
-       return nil
-}
-
-func (hook *ModifyHook) Levels() []Level {
-       return []Level{
-               DebugLevel,
-               InfoLevel,
-               WarnLevel,
-               ErrorLevel,
-               FatalLevel,
-               PanicLevel,
-       }
-}
-
-func TestHookCanModifyEntry(t *testing.T) {
-       hook := new(ModifyHook)
-
-       LogAndAssertJSON(t, func(log *Logger) {
-               log.Hooks.Add(hook)
-               log.WithField("wow", "elephant").Print("test")
-       }, func(fields Fields) {
-               assert.Equal(t, fields["wow"], "whale")
-       })
-}
-
-func TestCanFireMultipleHooks(t *testing.T) {
-       hook1 := new(ModifyHook)
-       hook2 := new(TestHook)
-
-       LogAndAssertJSON(t, func(log *Logger) {
-               log.Hooks.Add(hook1)
-               log.Hooks.Add(hook2)
-
-               log.WithField("wow", "elephant").Print("test")
-       }, func(fields Fields) {
-               assert.Equal(t, fields["wow"], "whale")
-               assert.Equal(t, hook2.Fired, true)
-       })
-}
-
-type ErrorHook struct {
-       Fired bool
-}
-
-func (hook *ErrorHook) Fire(entry *Entry) error {
-       hook.Fired = true
-       return nil
-}
-
-func (hook *ErrorHook) Levels() []Level {
-       return []Level{
-               ErrorLevel,
-       }
-}
-
-func TestErrorHookShouldntFireOnInfo(t *testing.T) {
-       hook := new(ErrorHook)
-
-       LogAndAssertJSON(t, func(log *Logger) {
-               log.Hooks.Add(hook)
-               log.Info("test")
-       }, func(fields Fields) {
-               assert.Equal(t, hook.Fired, false)
-       })
-}
-
-func TestErrorHookShouldFireOnError(t *testing.T) {
-       hook := new(ErrorHook)
-
-       LogAndAssertJSON(t, func(log *Logger) {
-               log.Hooks.Add(hook)
-               log.Error("test")
-       }, func(fields Fields) {
-               assert.Equal(t, hook.Fired, true)
-       })
-}
diff --git a/vendor/github.com/sirupsen/logrus/hooks/syslog/README.md b/vendor/github.com/sirupsen/logrus/hooks/syslog/README.md
deleted file mode 100644 (file)
index 92b391c..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-# Syslog Hooks for Logrus <img src="http://i.imgur.com/hTeVwmJ.png" width="40" height="40" alt=":walrus:" class="emoji" title=":walrus:"/>
-
-## Usage
-
-```go
-import (
-  "log/syslog"
-  "github.com/sirupsen/logrus"
-  logrus_syslog "github.com/sirupsen/logrus/hooks/syslog"
-)
-
-func main() {
-  log       := logrus.New()
-  hook, err := logrus_syslog.NewSyslogHook("udp", "localhost:514", syslog.LOG_INFO, "")
-
-  if err == nil {
-    log.Hooks.Add(hook)
-  }
-}
-```
-
-If you want to connect to local syslog (Ex. "/dev/log" or "/var/run/syslog" or "/var/run/log"). Just assign empty string to the first two parameters of `NewSyslogHook`. It should look like the following.
-
-```go
-import (
-  "log/syslog"
-  "github.com/sirupsen/logrus"
-  logrus_syslog "github.com/sirupsen/logrus/hooks/syslog"
-)
-
-func main() {
-  log       := logrus.New()
-  hook, err := logrus_syslog.NewSyslogHook("", "", syslog.LOG_INFO, "")
-
-  if err == nil {
-    log.Hooks.Add(hook)
-  }
-}
-```
diff --git a/vendor/github.com/sirupsen/logrus/hooks/syslog/syslog.go b/vendor/github.com/sirupsen/logrus/hooks/syslog/syslog.go
deleted file mode 100644 (file)
index 204f001..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-// +build !windows,!nacl,!plan9
-
-package logrus_syslog
-
-import (
-       "fmt"
-       "github.com/sirupsen/logrus"
-       "log/syslog"
-       "os"
-)
-
-// SyslogHook to send logs via syslog.
-type SyslogHook struct {
-       Writer        *syslog.Writer
-       SyslogNetwork string
-       SyslogRaddr   string
-}
-
-// Creates a hook to be added to an instance of logger. This is called with
-// `hook, err := NewSyslogHook("udp", "localhost:514", syslog.LOG_DEBUG, "")`
-// `if err == nil { log.Hooks.Add(hook) }`
-func NewSyslogHook(network, raddr string, priority syslog.Priority, tag string) (*SyslogHook, error) {
-       w, err := syslog.Dial(network, raddr, priority, tag)
-       return &SyslogHook{w, network, raddr}, err
-}
-
-func (hook *SyslogHook) Fire(entry *logrus.Entry) error {
-       line, err := entry.String()
-       if err != nil {
-               fmt.Fprintf(os.Stderr, "Unable to read entry, %v", err)
-               return err
-       }
-
-       switch entry.Level {
-       case logrus.PanicLevel:
-               return hook.Writer.Crit(line)
-       case logrus.FatalLevel:
-               return hook.Writer.Crit(line)
-       case logrus.ErrorLevel:
-               return hook.Writer.Err(line)
-       case logrus.WarnLevel:
-               return hook.Writer.Warning(line)
-       case logrus.InfoLevel:
-               return hook.Writer.Info(line)
-       case logrus.DebugLevel:
-               return hook.Writer.Debug(line)
-       default:
-               return nil
-       }
-}
-
-func (hook *SyslogHook) Levels() []logrus.Level {
-       return logrus.AllLevels
-}
diff --git a/vendor/github.com/sirupsen/logrus/hooks/syslog/syslog_test.go b/vendor/github.com/sirupsen/logrus/hooks/syslog/syslog_test.go
deleted file mode 100644 (file)
index 8d7fbe4..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-package logrus_syslog
-
-import (
-       "github.com/sirupsen/logrus"
-       "log/syslog"
-       "testing"
-)
-
-func TestLocalhostAddAndPrint(t *testing.T) {
-       log := logrus.New()
-       hook, err := NewSyslogHook("udp", "localhost:514", syslog.LOG_INFO, "")
-
-       if err != nil {
-               t.Errorf("Unable to connect to local syslog.")
-       }
-
-       log.Hooks.Add(hook)
-
-       for _, level := range hook.Levels() {
-               if len(log.Hooks[level]) != 1 {
-                       t.Errorf("SyslogHook was not added. The length of log.Hooks[%v]: %v", level, len(log.Hooks[level]))
-               }
-       }
-
-       log.Info("Congratulations!")
-}
diff --git a/vendor/github.com/sirupsen/logrus/hooks/test/test.go b/vendor/github.com/sirupsen/logrus/hooks/test/test.go
deleted file mode 100644 (file)
index 62c4845..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-// The Test package is used for testing logrus. It is here for backwards
-// compatibility from when logrus' organization was upper-case. Please use
-// lower-case logrus and the `null` package instead of this one.
-package test
-
-import (
-       "io/ioutil"
-       "sync"
-
-       "github.com/sirupsen/logrus"
-)
-
-// Hook is a hook designed for dealing with logs in test scenarios.
-type Hook struct {
-       // Entries is an array of all entries that have been received by this hook.
-       // For safe access, use the AllEntries() method, rather than reading this
-       // value directly.
-       Entries []*logrus.Entry
-       mu      sync.RWMutex
-}
-
-// NewGlobal installs a test hook for the global logger.
-func NewGlobal() *Hook {
-
-       hook := new(Hook)
-       logrus.AddHook(hook)
-
-       return hook
-
-}
-
-// NewLocal installs a test hook for a given local logger.
-func NewLocal(logger *logrus.Logger) *Hook {
-
-       hook := new(Hook)
-       logger.Hooks.Add(hook)
-
-       return hook
-
-}
-
-// NewNullLogger creates a discarding logger and installs the test hook.
-func NewNullLogger() (*logrus.Logger, *Hook) {
-
-       logger := logrus.New()
-       logger.Out = ioutil.Discard
-
-       return logger, NewLocal(logger)
-
-}
-
-func (t *Hook) Fire(e *logrus.Entry) error {
-       t.mu.Lock()
-       defer t.mu.Unlock()
-       t.Entries = append(t.Entries, e)
-       return nil
-}
-
-func (t *Hook) Levels() []logrus.Level {
-       return logrus.AllLevels
-}
-
-// LastEntry returns the last entry that was logged or nil.
-func (t *Hook) LastEntry() *logrus.Entry {
-       t.mu.RLock()
-       defer t.mu.RUnlock()
-       i := len(t.Entries) - 1
-       if i < 0 {
-               return nil
-       }
-       // Make a copy, for safety
-       e := *t.Entries[i]
-       return &e
-}
-
-// AllEntries returns all entries that were logged.
-func (t *Hook) AllEntries() []*logrus.Entry {
-       t.mu.RLock()
-       defer t.mu.RUnlock()
-       // Make a copy so the returned value won't race with future log requests
-       entries := make([]*logrus.Entry, len(t.Entries))
-       for i, entry := range t.Entries {
-               // Make a copy, for safety
-               e := *entry
-               entries[i] = &e
-       }
-       return entries
-}
-
-// Reset removes all Entries from this test hook.
-func (t *Hook) Reset() {
-       t.mu.Lock()
-       defer t.mu.Unlock()
-       t.Entries = make([]*logrus.Entry, 0)
-}
diff --git a/vendor/github.com/sirupsen/logrus/hooks/test/test_test.go b/vendor/github.com/sirupsen/logrus/hooks/test/test_test.go
deleted file mode 100644 (file)
index 3f55cfe..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-package test
-
-import (
-       "testing"
-
-       "github.com/sirupsen/logrus"
-       "github.com/stretchr/testify/assert"
-)
-
-func TestAllHooks(t *testing.T) {
-
-       assert := assert.New(t)
-
-       logger, hook := NewNullLogger()
-       assert.Nil(hook.LastEntry())
-       assert.Equal(0, len(hook.Entries))
-
-       logger.Error("Hello error")
-       assert.Equal(logrus.ErrorLevel, hook.LastEntry().Level)
-       assert.Equal("Hello error", hook.LastEntry().Message)
-       assert.Equal(1, len(hook.Entries))
-
-       logger.Warn("Hello warning")
-       assert.Equal(logrus.WarnLevel, hook.LastEntry().Level)
-       assert.Equal("Hello warning", hook.LastEntry().Message)
-       assert.Equal(2, len(hook.Entries))
-
-       hook.Reset()
-       assert.Nil(hook.LastEntry())
-       assert.Equal(0, len(hook.Entries))
-
-       hook = NewGlobal()
-
-       logrus.Error("Hello error")
-       assert.Equal(logrus.ErrorLevel, hook.LastEntry().Level)
-       assert.Equal("Hello error", hook.LastEntry().Message)
-       assert.Equal(1, len(hook.Entries))
-
-}
diff --git a/vendor/github.com/sirupsen/logrus/json_formatter_test.go b/vendor/github.com/sirupsen/logrus/json_formatter_test.go
deleted file mode 100644 (file)
index 51093a7..0000000
+++ /dev/null
@@ -1,199 +0,0 @@
-package logrus
-
-import (
-       "encoding/json"
-       "errors"
-       "strings"
-       "testing"
-)
-
-func TestErrorNotLost(t *testing.T) {
-       formatter := &JSONFormatter{}
-
-       b, err := formatter.Format(WithField("error", errors.New("wild walrus")))
-       if err != nil {
-               t.Fatal("Unable to format entry: ", err)
-       }
-
-       entry := make(map[string]interface{})
-       err = json.Unmarshal(b, &entry)
-       if err != nil {
-               t.Fatal("Unable to unmarshal formatted entry: ", err)
-       }
-
-       if entry["error"] != "wild walrus" {
-               t.Fatal("Error field not set")
-       }
-}
-
-func TestErrorNotLostOnFieldNotNamedError(t *testing.T) {
-       formatter := &JSONFormatter{}
-
-       b, err := formatter.Format(WithField("omg", errors.New("wild walrus")))
-       if err != nil {
-               t.Fatal("Unable to format entry: ", err)
-       }
-
-       entry := make(map[string]interface{})
-       err = json.Unmarshal(b, &entry)
-       if err != nil {
-               t.Fatal("Unable to unmarshal formatted entry: ", err)
-       }
-
-       if entry["omg"] != "wild walrus" {
-               t.Fatal("Error field not set")
-       }
-}
-
-func TestFieldClashWithTime(t *testing.T) {
-       formatter := &JSONFormatter{}
-
-       b, err := formatter.Format(WithField("time", "right now!"))
-       if err != nil {
-               t.Fatal("Unable to format entry: ", err)
-       }
-
-       entry := make(map[string]interface{})
-       err = json.Unmarshal(b, &entry)
-       if err != nil {
-               t.Fatal("Unable to unmarshal formatted entry: ", err)
-       }
-
-       if entry["fields.time"] != "right now!" {
-               t.Fatal("fields.time not set to original time field")
-       }
-
-       if entry["time"] != "0001-01-01T00:00:00Z" {
-               t.Fatal("time field not set to current time, was: ", entry["time"])
-       }
-}
-
-func TestFieldClashWithMsg(t *testing.T) {
-       formatter := &JSONFormatter{}
-
-       b, err := formatter.Format(WithField("msg", "something"))
-       if err != nil {
-               t.Fatal("Unable to format entry: ", err)
-       }
-
-       entry := make(map[string]interface{})
-       err = json.Unmarshal(b, &entry)
-       if err != nil {
-               t.Fatal("Unable to unmarshal formatted entry: ", err)
-       }
-
-       if entry["fields.msg"] != "something" {
-               t.Fatal("fields.msg not set to original msg field")
-       }
-}
-
-func TestFieldClashWithLevel(t *testing.T) {
-       formatter := &JSONFormatter{}
-
-       b, err := formatter.Format(WithField("level", "something"))
-       if err != nil {
-               t.Fatal("Unable to format entry: ", err)
-       }
-
-       entry := make(map[string]interface{})
-       err = json.Unmarshal(b, &entry)
-       if err != nil {
-               t.Fatal("Unable to unmarshal formatted entry: ", err)
-       }
-
-       if entry["fields.level"] != "something" {
-               t.Fatal("fields.level not set to original level field")
-       }
-}
-
-func TestJSONEntryEndsWithNewline(t *testing.T) {
-       formatter := &JSONFormatter{}
-
-       b, err := formatter.Format(WithField("level", "something"))
-       if err != nil {
-               t.Fatal("Unable to format entry: ", err)
-       }
-
-       if b[len(b)-1] != '\n' {
-               t.Fatal("Expected JSON log entry to end with a newline")
-       }
-}
-
-func TestJSONMessageKey(t *testing.T) {
-       formatter := &JSONFormatter{
-               FieldMap: FieldMap{
-                       FieldKeyMsg: "message",
-               },
-       }
-
-       b, err := formatter.Format(&Entry{Message: "oh hai"})
-       if err != nil {
-               t.Fatal("Unable to format entry: ", err)
-       }
-       s := string(b)
-       if !(strings.Contains(s, "message") && strings.Contains(s, "oh hai")) {
-               t.Fatal("Expected JSON to format message key")
-       }
-}
-
-func TestJSONLevelKey(t *testing.T) {
-       formatter := &JSONFormatter{
-               FieldMap: FieldMap{
-                       FieldKeyLevel: "somelevel",
-               },
-       }
-
-       b, err := formatter.Format(WithField("level", "something"))
-       if err != nil {
-               t.Fatal("Unable to format entry: ", err)
-       }
-       s := string(b)
-       if !strings.Contains(s, "somelevel") {
-               t.Fatal("Expected JSON to format level key")
-       }
-}
-
-func TestJSONTimeKey(t *testing.T) {
-       formatter := &JSONFormatter{
-               FieldMap: FieldMap{
-                       FieldKeyTime: "timeywimey",
-               },
-       }
-
-       b, err := formatter.Format(WithField("level", "something"))
-       if err != nil {
-               t.Fatal("Unable to format entry: ", err)
-       }
-       s := string(b)
-       if !strings.Contains(s, "timeywimey") {
-               t.Fatal("Expected JSON to format time key")
-       }
-}
-
-func TestJSONDisableTimestamp(t *testing.T) {
-       formatter := &JSONFormatter{
-               DisableTimestamp: true,
-       }
-
-       b, err := formatter.Format(WithField("level", "something"))
-       if err != nil {
-               t.Fatal("Unable to format entry: ", err)
-       }
-       s := string(b)
-       if strings.Contains(s, FieldKeyTime) {
-               t.Error("Did not prevent timestamp", s)
-       }
-}
-
-func TestJSONEnableTimestamp(t *testing.T) {
-       formatter := &JSONFormatter{}
-
-       b, err := formatter.Format(WithField("level", "something"))
-       if err != nil {
-               t.Fatal("Unable to format entry: ", err)
-       }
-       s := string(b)
-       if !strings.Contains(s, FieldKeyTime) {
-               t.Error("Timestamp not present", s)
-       }
-}
diff --git a/vendor/github.com/sirupsen/logrus/logger_bench_test.go b/vendor/github.com/sirupsen/logrus/logger_bench_test.go
deleted file mode 100644 (file)
index dd23a35..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-package logrus
-
-import (
-       "os"
-       "testing"
-)
-
-// smallFields is a small size data set for benchmarking
-var loggerFields = Fields{
-       "foo":   "bar",
-       "baz":   "qux",
-       "one":   "two",
-       "three": "four",
-}
-
-func BenchmarkDummyLogger(b *testing.B) {
-       nullf, err := os.OpenFile("/dev/null", os.O_WRONLY, 0666)
-       if err != nil {
-               b.Fatalf("%v", err)
-       }
-       defer nullf.Close()
-       doLoggerBenchmark(b, nullf, &TextFormatter{DisableColors: true}, smallFields)
-}
-
-func BenchmarkDummyLoggerNoLock(b *testing.B) {
-       nullf, err := os.OpenFile("/dev/null", os.O_WRONLY|os.O_APPEND, 0666)
-       if err != nil {
-               b.Fatalf("%v", err)
-       }
-       defer nullf.Close()
-       doLoggerBenchmarkNoLock(b, nullf, &TextFormatter{DisableColors: true}, smallFields)
-}
-
-func doLoggerBenchmark(b *testing.B, out *os.File, formatter Formatter, fields Fields) {
-       logger := Logger{
-               Out:       out,
-               Level:     InfoLevel,
-               Formatter: formatter,
-       }
-       entry := logger.WithFields(fields)
-       b.RunParallel(func(pb *testing.PB) {
-               for pb.Next() {
-                       entry.Info("aaa")
-               }
-       })
-}
-
-func doLoggerBenchmarkNoLock(b *testing.B, out *os.File, formatter Formatter, fields Fields) {
-       logger := Logger{
-               Out:       out,
-               Level:     InfoLevel,
-               Formatter: formatter,
-       }
-       logger.SetNoLock()
-       entry := logger.WithFields(fields)
-       b.RunParallel(func(pb *testing.PB) {
-               for pb.Next() {
-                       entry.Info("aaa")
-               }
-       })
-}
diff --git a/vendor/github.com/sirupsen/logrus/logrus_test.go b/vendor/github.com/sirupsen/logrus/logrus_test.go
deleted file mode 100644 (file)
index 78cbc28..0000000
+++ /dev/null
@@ -1,386 +0,0 @@
-package logrus
-
-import (
-       "bytes"
-       "encoding/json"
-       "strconv"
-       "strings"
-       "sync"
-       "testing"
-
-       "github.com/stretchr/testify/assert"
-)
-
-func LogAndAssertJSON(t *testing.T, log func(*Logger), assertions func(fields Fields)) {
-       var buffer bytes.Buffer
-       var fields Fields
-
-       logger := New()
-       logger.Out = &buffer
-       logger.Formatter = new(JSONFormatter)
-
-       log(logger)
-
-       err := json.Unmarshal(buffer.Bytes(), &fields)
-       assert.Nil(t, err)
-
-       assertions(fields)
-}
-
-func LogAndAssertText(t *testing.T, log func(*Logger), assertions func(fields map[string]string)) {
-       var buffer bytes.Buffer
-
-       logger := New()
-       logger.Out = &buffer
-       logger.Formatter = &TextFormatter{
-               DisableColors: true,
-       }
-
-       log(logger)
-
-       fields := make(map[string]string)
-       for _, kv := range strings.Split(buffer.String(), " ") {
-               if !strings.Contains(kv, "=") {
-                       continue
-               }
-               kvArr := strings.Split(kv, "=")
-               key := strings.TrimSpace(kvArr[0])
-               val := kvArr[1]
-               if kvArr[1][0] == '"' {
-                       var err error
-                       val, err = strconv.Unquote(val)
-                       assert.NoError(t, err)
-               }
-               fields[key] = val
-       }
-       assertions(fields)
-}
-
-func TestPrint(t *testing.T) {
-       LogAndAssertJSON(t, func(log *Logger) {
-               log.Print("test")
-       }, func(fields Fields) {
-               assert.Equal(t, fields["msg"], "test")
-               assert.Equal(t, fields["level"], "info")
-       })
-}
-
-func TestInfo(t *testing.T) {
-       LogAndAssertJSON(t, func(log *Logger) {
-               log.Info("test")
-       }, func(fields Fields) {
-               assert.Equal(t, fields["msg"], "test")
-               assert.Equal(t, fields["level"], "info")
-       })
-}
-
-func TestWarn(t *testing.T) {
-       LogAndAssertJSON(t, func(log *Logger) {
-               log.Warn("test")
-       }, func(fields Fields) {
-               assert.Equal(t, fields["msg"], "test")
-               assert.Equal(t, fields["level"], "warning")
-       })
-}
-
-func TestInfolnShouldAddSpacesBetweenStrings(t *testing.T) {
-       LogAndAssertJSON(t, func(log *Logger) {
-               log.Infoln("test", "test")
-       }, func(fields Fields) {
-               assert.Equal(t, fields["msg"], "test test")
-       })
-}
-
-func TestInfolnShouldAddSpacesBetweenStringAndNonstring(t *testing.T) {
-       LogAndAssertJSON(t, func(log *Logger) {
-               log.Infoln("test", 10)
-       }, func(fields Fields) {
-               assert.Equal(t, fields["msg"], "test 10")
-       })
-}
-
-func TestInfolnShouldAddSpacesBetweenTwoNonStrings(t *testing.T) {
-       LogAndAssertJSON(t, func(log *Logger) {
-               log.Infoln(10, 10)
-       }, func(fields Fields) {
-               assert.Equal(t, fields["msg"], "10 10")
-       })
-}
-
-func TestInfoShouldAddSpacesBetweenTwoNonStrings(t *testing.T) {
-       LogAndAssertJSON(t, func(log *Logger) {
-               log.Infoln(10, 10)
-       }, func(fields Fields) {
-               assert.Equal(t, fields["msg"], "10 10")
-       })
-}
-
-func TestInfoShouldNotAddSpacesBetweenStringAndNonstring(t *testing.T) {
-       LogAndAssertJSON(t, func(log *Logger) {
-               log.Info("test", 10)
-       }, func(fields Fields) {
-               assert.Equal(t, fields["msg"], "test10")
-       })
-}
-
-func TestInfoShouldNotAddSpacesBetweenStrings(t *testing.T) {
-       LogAndAssertJSON(t, func(log *Logger) {
-               log.Info("test", "test")
-       }, func(fields Fields) {
-               assert.Equal(t, fields["msg"], "testtest")
-       })
-}
-
-func TestWithFieldsShouldAllowAssignments(t *testing.T) {
-       var buffer bytes.Buffer
-       var fields Fields
-
-       logger := New()
-       logger.Out = &buffer
-       logger.Formatter = new(JSONFormatter)
-
-       localLog := logger.WithFields(Fields{
-               "key1": "value1",
-       })
-
-       localLog.WithField("key2", "value2").Info("test")
-       err := json.Unmarshal(buffer.Bytes(), &fields)
-       assert.Nil(t, err)
-
-       assert.Equal(t, "value2", fields["key2"])
-       assert.Equal(t, "value1", fields["key1"])
-
-       buffer = bytes.Buffer{}
-       fields = Fields{}
-       localLog.Info("test")
-       err = json.Unmarshal(buffer.Bytes(), &fields)
-       assert.Nil(t, err)
-
-       _, ok := fields["key2"]
-       assert.Equal(t, false, ok)
-       assert.Equal(t, "value1", fields["key1"])
-}
-
-func TestUserSuppliedFieldDoesNotOverwriteDefaults(t *testing.T) {
-       LogAndAssertJSON(t, func(log *Logger) {
-               log.WithField("msg", "hello").Info("test")
-       }, func(fields Fields) {
-               assert.Equal(t, fields["msg"], "test")
-       })
-}
-
-func TestUserSuppliedMsgFieldHasPrefix(t *testing.T) {
-       LogAndAssertJSON(t, func(log *Logger) {
-               log.WithField("msg", "hello").Info("test")
-       }, func(fields Fields) {
-               assert.Equal(t, fields["msg"], "test")
-               assert.Equal(t, fields["fields.msg"], "hello")
-       })
-}
-
-func TestUserSuppliedTimeFieldHasPrefix(t *testing.T) {
-       LogAndAssertJSON(t, func(log *Logger) {
-               log.WithField("time", "hello").Info("test")
-       }, func(fields Fields) {
-               assert.Equal(t, fields["fields.time"], "hello")
-       })
-}
-
-func TestUserSuppliedLevelFieldHasPrefix(t *testing.T) {
-       LogAndAssertJSON(t, func(log *Logger) {
-               log.WithField("level", 1).Info("test")
-       }, func(fields Fields) {
-               assert.Equal(t, fields["level"], "info")
-               assert.Equal(t, fields["fields.level"], 1.0) // JSON has floats only
-       })
-}
-
-func TestDefaultFieldsAreNotPrefixed(t *testing.T) {
-       LogAndAssertText(t, func(log *Logger) {
-               ll := log.WithField("herp", "derp")
-               ll.Info("hello")
-               ll.Info("bye")
-       }, func(fields map[string]string) {
-               for _, fieldName := range []string{"fields.level", "fields.time", "fields.msg"} {
-                       if _, ok := fields[fieldName]; ok {
-                               t.Fatalf("should not have prefixed %q: %v", fieldName, fields)
-                       }
-               }
-       })
-}
-
-func TestDoubleLoggingDoesntPrefixPreviousFields(t *testing.T) {
-
-       var buffer bytes.Buffer
-       var fields Fields
-
-       logger := New()
-       logger.Out = &buffer
-       logger.Formatter = new(JSONFormatter)
-
-       llog := logger.WithField("context", "eating raw fish")
-
-       llog.Info("looks delicious")
-
-       err := json.Unmarshal(buffer.Bytes(), &fields)
-       assert.NoError(t, err, "should have decoded first message")
-       assert.Equal(t, len(fields), 4, "should only have msg/time/level/context fields")
-       assert.Equal(t, fields["msg"], "looks delicious")
-       assert.Equal(t, fields["context"], "eating raw fish")
-
-       buffer.Reset()
-
-       llog.Warn("omg it is!")
-
-       err = json.Unmarshal(buffer.Bytes(), &fields)
-       assert.NoError(t, err, "should have decoded second message")
-       assert.Equal(t, len(fields), 4, "should only have msg/time/level/context fields")
-       assert.Equal(t, fields["msg"], "omg it is!")
-       assert.Equal(t, fields["context"], "eating raw fish")
-       assert.Nil(t, fields["fields.msg"], "should not have prefixed previous `msg` entry")
-
-}
-
-func TestConvertLevelToString(t *testing.T) {
-       assert.Equal(t, "debug", DebugLevel.String())
-       assert.Equal(t, "info", InfoLevel.String())
-       assert.Equal(t, "warning", WarnLevel.String())
-       assert.Equal(t, "error", ErrorLevel.String())
-       assert.Equal(t, "fatal", FatalLevel.String())
-       assert.Equal(t, "panic", PanicLevel.String())
-}
-
-func TestParseLevel(t *testing.T) {
-       l, err := ParseLevel("panic")
-       assert.Nil(t, err)
-       assert.Equal(t, PanicLevel, l)
-
-       l, err = ParseLevel("PANIC")
-       assert.Nil(t, err)
-       assert.Equal(t, PanicLevel, l)
-
-       l, err = ParseLevel("fatal")
-       assert.Nil(t, err)
-       assert.Equal(t, FatalLevel, l)
-
-       l, err = ParseLevel("FATAL")
-       assert.Nil(t, err)
-       assert.Equal(t, FatalLevel, l)
-
-       l, err = ParseLevel("error")
-       assert.Nil(t, err)
-       assert.Equal(t, ErrorLevel, l)
-
-       l, err = ParseLevel("ERROR")
-       assert.Nil(t, err)
-       assert.Equal(t, ErrorLevel, l)
-
-       l, err = ParseLevel("warn")
-       assert.Nil(t, err)
-       assert.Equal(t, WarnLevel, l)
-
-       l, err = ParseLevel("WARN")
-       assert.Nil(t, err)
-       assert.Equal(t, WarnLevel, l)
-
-       l, err = ParseLevel("warning")
-       assert.Nil(t, err)
-       assert.Equal(t, WarnLevel, l)
-
-       l, err = ParseLevel("WARNING")
-       assert.Nil(t, err)
-       assert.Equal(t, WarnLevel, l)
-
-       l, err = ParseLevel("info")
-       assert.Nil(t, err)
-       assert.Equal(t, InfoLevel, l)
-
-       l, err = ParseLevel("INFO")
-       assert.Nil(t, err)
-       assert.Equal(t, InfoLevel, l)
-
-       l, err = ParseLevel("debug")
-       assert.Nil(t, err)
-       assert.Equal(t, DebugLevel, l)
-
-       l, err = ParseLevel("DEBUG")
-       assert.Nil(t, err)
-       assert.Equal(t, DebugLevel, l)
-
-       l, err = ParseLevel("invalid")
-       assert.Equal(t, "not a valid logrus Level: \"invalid\"", err.Error())
-}
-
-func TestGetSetLevelRace(t *testing.T) {
-       wg := sync.WaitGroup{}
-       for i := 0; i < 100; i++ {
-               wg.Add(1)
-               go func(i int) {
-                       defer wg.Done()
-                       if i%2 == 0 {
-                               SetLevel(InfoLevel)
-                       } else {
-                               GetLevel()
-                       }
-               }(i)
-
-       }
-       wg.Wait()
-}
-
-func TestLoggingRace(t *testing.T) {
-       logger := New()
-
-       var wg sync.WaitGroup
-       wg.Add(100)
-
-       for i := 0; i < 100; i++ {
-               go func() {
-                       logger.Info("info")
-                       wg.Done()
-               }()
-       }
-       wg.Wait()
-}
-
-// Compile test
-func TestLogrusInterface(t *testing.T) {
-       var buffer bytes.Buffer
-       fn := func(l FieldLogger) {
-               b := l.WithField("key", "value")
-               b.Debug("Test")
-       }
-       // test logger
-       logger := New()
-       logger.Out = &buffer
-       fn(logger)
-
-       // test Entry
-       e := logger.WithField("another", "value")
-       fn(e)
-}
-
-// Implements io.Writer using channels for synchronization, so we can wait on
-// the Entry.Writer goroutine to write in a non-racey way. This does assume that
-// there is a single call to Logger.Out for each message.
-type channelWriter chan []byte
-
-func (cw channelWriter) Write(p []byte) (int, error) {
-       cw <- p
-       return len(p), nil
-}
-
-func TestEntryWriter(t *testing.T) {
-       cw := channelWriter(make(chan []byte, 1))
-       log := New()
-       log.Out = cw
-       log.Formatter = new(JSONFormatter)
-       log.WithField("foo", "bar").WriterLevel(WarnLevel).Write([]byte("hello\n"))
-
-       bs := <-cw
-       var fields Fields
-       err := json.Unmarshal(bs, &fields)
-       assert.Nil(t, err)
-       assert.Equal(t, fields["foo"], "bar")
-       assert.Equal(t, fields["level"], "warning")
-}
diff --git a/vendor/github.com/sirupsen/logrus/text_formatter_test.go b/vendor/github.com/sirupsen/logrus/text_formatter_test.go
deleted file mode 100644 (file)
index 9793b5f..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-package logrus
-
-import (
-       "bytes"
-       "errors"
-       "strings"
-       "testing"
-       "time"
-)
-
-func TestQuoting(t *testing.T) {
-       tf := &TextFormatter{DisableColors: true}
-
-       checkQuoting := func(q bool, value interface{}) {
-               b, _ := tf.Format(WithField("test", value))
-               idx := bytes.Index(b, ([]byte)("test="))
-               cont := bytes.Contains(b[idx+5:], []byte(tf.QuoteCharacter))
-               if cont != q {
-                       if q {
-                               t.Errorf("quoting expected for: %#v", value)
-                       } else {
-                               t.Errorf("quoting not expected for: %#v", value)
-                       }
-               }
-       }
-
-       checkQuoting(false, "")
-       checkQuoting(false, "abcd")
-       checkQuoting(false, "v1.0")
-       checkQuoting(false, "1234567890")
-       checkQuoting(true, "/foobar")
-       checkQuoting(true, "x y")
-       checkQuoting(true, "x,y")
-       checkQuoting(false, errors.New("invalid"))
-       checkQuoting(true, errors.New("invalid argument"))
-
-       // Test for custom quote character.
-       tf.QuoteCharacter = "`"
-       checkQuoting(false, "")
-       checkQuoting(false, "abcd")
-       checkQuoting(true, "/foobar")
-       checkQuoting(true, errors.New("invalid argument"))
-
-       // Test for multi-character quotes.
-       tf.QuoteCharacter = "§~±"
-       checkQuoting(false, "abcd")
-       checkQuoting(true, errors.New("invalid argument"))
-
-       // Test for quoting empty fields.
-       tf.QuoteEmptyFields = true
-       checkQuoting(true, "")
-       checkQuoting(false, "abcd")
-       checkQuoting(true, errors.New("invalid argument"))
-}
-
-func TestTimestampFormat(t *testing.T) {
-       checkTimeStr := func(format string) {
-               customFormatter := &TextFormatter{DisableColors: true, TimestampFormat: format}
-               customStr, _ := customFormatter.Format(WithField("test", "test"))
-               timeStart := bytes.Index(customStr, ([]byte)("time="))
-               timeEnd := bytes.Index(customStr, ([]byte)("level="))
-               timeStr := customStr[timeStart+5+len(customFormatter.QuoteCharacter) : timeEnd-1-len(customFormatter.QuoteCharacter)]
-               if format == "" {
-                       format = time.RFC3339
-               }
-               _, e := time.Parse(format, (string)(timeStr))
-               if e != nil {
-                       t.Errorf("time string \"%s\" did not match provided time format \"%s\": %s", timeStr, format, e)
-               }
-       }
-
-       checkTimeStr("2006-01-02T15:04:05.000000000Z07:00")
-       checkTimeStr("Mon Jan _2 15:04:05 2006")
-       checkTimeStr("")
-}
-
-func TestDisableTimestampWithColoredOutput(t *testing.T) {
-       tf := &TextFormatter{DisableTimestamp: true, ForceColors: true}
-
-       b, _ := tf.Format(WithField("test", "test"))
-       if strings.Contains(string(b), "[0000]") {
-               t.Error("timestamp not expected when DisableTimestamp is true")
-       }
-}
-
-// TODO add tests for sorting etc., this requires a parser for the text
-// formatter output.
diff --git a/vendor/golang.org/x/sys/.gitattributes b/vendor/golang.org/x/sys/.gitattributes
deleted file mode 100644 (file)
index d2f212e..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-# Treat all files in this repo as binary, with no git magic updating
-# line endings. Windows users contributing to Go will need to use a
-# modern version of git and editors capable of LF line endings.
-#
-# We'll prevent accidental CRLF line endings from entering the repo
-# via the git-review gofmt checks.
-#
-# See golang.org/issue/9281
-
-* -text
diff --git a/vendor/golang.org/x/sys/.gitignore b/vendor/golang.org/x/sys/.gitignore
deleted file mode 100644 (file)
index 8339fd6..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-# Add no patterns to .hgignore except for files generated by the build.
-last-change
diff --git a/vendor/golang.org/x/sys/CONTRIBUTING.md b/vendor/golang.org/x/sys/CONTRIBUTING.md
deleted file mode 100644 (file)
index 88dff59..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-# Contributing to Go
-
-Go is an open source project.
-
-It is the work of hundreds of contributors. We appreciate your help!
-
-
-## Filing issues
-
-When [filing an issue](https://golang.org/issue/new), make sure to answer these five questions:
-
-1. What version of Go are you using (`go version`)?
-2. What operating system and processor architecture are you using?
-3. What did you do?
-4. What did you expect to see?
-5. What did you see instead?
-
-General questions should go to the [golang-nuts mailing list](https://groups.google.com/group/golang-nuts) instead of the issue tracker.
-The gophers there will answer or ask you to file an issue if you've tripped over a bug.
-
-## Contributing code
-
-Please read the [Contribution Guidelines](https://golang.org/doc/contribute.html)
-before sending patches.
-
-**We do not accept GitHub pull requests**
-(we use [Gerrit](https://code.google.com/p/gerrit/) instead for code review).
-
-Unless otherwise noted, the Go source files are distributed under
-the BSD-style license found in the LICENSE file.
-
diff --git a/vendor/golang.org/x/sys/README b/vendor/golang.org/x/sys/README
deleted file mode 100644 (file)
index bd422b4..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-This repository holds supplemental Go packages for low-level interactions with the operating system.
-
-To submit changes to this repository, see http://golang.org/doc/contribute.html.
diff --git a/vendor/golang.org/x/sys/codereview.cfg b/vendor/golang.org/x/sys/codereview.cfg
deleted file mode 100644 (file)
index 3f8b14b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-issuerepo: golang/go
diff --git a/vendor/golang.org/x/sys/plan9/asm.s b/vendor/golang.org/x/sys/plan9/asm.s
deleted file mode 100644 (file)
index d4ca868..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright 2014 The Go Authors.  All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-#include "textflag.h"
-
-TEXT ·use(SB),NOSPLIT,$0
-       RET
diff --git a/vendor/golang.org/x/sys/plan9/asm_plan9_386.s b/vendor/golang.org/x/sys/plan9/asm_plan9_386.s
deleted file mode 100644 (file)
index bc5cab1..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-#include "textflag.h"
-
-//
-// System call support for 386, Plan 9
-//
-
-// Just jump to package syscall's implementation for all these functions.
-// The runtime may know about them.
-
-TEXT   ·Syscall(SB),NOSPLIT,$0-32
-       JMP     syscall·Syscall(SB)
-
-TEXT   ·Syscall6(SB),NOSPLIT,$0-44
-       JMP     syscall·Syscall6(SB)
-
-TEXT ·RawSyscall(SB),NOSPLIT,$0-28
-       JMP     syscall·RawSyscall(SB)
-
-TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
-       JMP     syscall·RawSyscall6(SB)
-
-TEXT ·seek(SB),NOSPLIT,$0-36
-       JMP     syscall·seek(SB)
-
-TEXT ·exit(SB),NOSPLIT,$4-4
-       JMP     syscall·exit(SB)
diff --git a/vendor/golang.org/x/sys/plan9/asm_plan9_amd64.s b/vendor/golang.org/x/sys/plan9/asm_plan9_amd64.s
deleted file mode 100644 (file)
index d3448e6..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-#include "textflag.h"
-
-//
-// System call support for amd64, Plan 9
-//
-
-// Just jump to package syscall's implementation for all these functions.
-// The runtime may know about them.
-
-TEXT   ·Syscall(SB),NOSPLIT,$0-64
-       JMP     syscall·Syscall(SB)
-
-TEXT   ·Syscall6(SB),NOSPLIT,$0-88
-       JMP     syscall·Syscall6(SB)
-
-TEXT ·RawSyscall(SB),NOSPLIT,$0-56
-       JMP     syscall·RawSyscall(SB)
-
-TEXT   ·RawSyscall6(SB),NOSPLIT,$0-80
-       JMP     syscall·RawSyscall6(SB)
-
-TEXT ·seek(SB),NOSPLIT,$0-56
-       JMP     syscall·seek(SB)
-
-TEXT ·exit(SB),NOSPLIT,$8-8
-       JMP     syscall·exit(SB)
diff --git a/vendor/golang.org/x/sys/plan9/const_plan9.go b/vendor/golang.org/x/sys/plan9/const_plan9.go
deleted file mode 100644 (file)
index b4e85a3..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-package plan9
-
-// Plan 9 Constants
-
-// Open modes
-const (
-       O_RDONLY  = 0
-       O_WRONLY  = 1
-       O_RDWR    = 2
-       O_TRUNC   = 16
-       O_CLOEXEC = 32
-       O_EXCL    = 0x1000
-)
-
-// Rfork flags
-const (
-       RFNAMEG  = 1 << 0
-       RFENVG   = 1 << 1
-       RFFDG    = 1 << 2
-       RFNOTEG  = 1 << 3
-       RFPROC   = 1 << 4
-       RFMEM    = 1 << 5
-       RFNOWAIT = 1 << 6
-       RFCNAMEG = 1 << 10
-       RFCENVG  = 1 << 11
-       RFCFDG   = 1 << 12
-       RFREND   = 1 << 13
-       RFNOMNT  = 1 << 14
-)
-
-// Qid.Type bits
-const (
-       QTDIR    = 0x80
-       QTAPPEND = 0x40
-       QTEXCL   = 0x20
-       QTMOUNT  = 0x10
-       QTAUTH   = 0x08
-       QTTMP    = 0x04
-       QTFILE   = 0x00
-)
-
-// Dir.Mode bits
-const (
-       DMDIR    = 0x80000000
-       DMAPPEND = 0x40000000
-       DMEXCL   = 0x20000000
-       DMMOUNT  = 0x10000000
-       DMAUTH   = 0x08000000
-       DMTMP    = 0x04000000
-       DMREAD   = 0x4
-       DMWRITE  = 0x2
-       DMEXEC   = 0x1
-)
-
-const (
-       STATMAX    = 65535
-       ERRMAX     = 128
-       STATFIXLEN = 49
-)
-
-// Mount and bind flags
-const (
-       MREPL   = 0x0000
-       MBEFORE = 0x0001
-       MAFTER  = 0x0002
-       MORDER  = 0x0003
-       MCREATE = 0x0004
-       MCACHE  = 0x0010
-       MMASK   = 0x0017
-)
diff --git a/vendor/golang.org/x/sys/plan9/dir_plan9.go b/vendor/golang.org/x/sys/plan9/dir_plan9.go
deleted file mode 100644 (file)
index 0955e0c..0000000
+++ /dev/null
@@ -1,212 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Plan 9 directory marshalling. See intro(5).
-
-package plan9
-
-import "errors"
-
-var (
-       ErrShortStat = errors.New("stat buffer too short")
-       ErrBadStat   = errors.New("malformed stat buffer")
-       ErrBadName   = errors.New("bad character in file name")
-)
-
-// A Qid represents a 9P server's unique identification for a file.
-type Qid struct {
-       Path uint64 // the file server's unique identification for the file
-       Vers uint32 // version number for given Path
-       Type uint8  // the type of the file (plan9.QTDIR for example)
-}
-
-// A Dir contains the metadata for a file.
-type Dir struct {
-       // system-modified data
-       Type uint16 // server type
-       Dev  uint32 // server subtype
-
-       // file data
-       Qid    Qid    // unique id from server
-       Mode   uint32 // permissions
-       Atime  uint32 // last read time
-       Mtime  uint32 // last write time
-       Length int64  // file length
-       Name   string // last element of path
-       Uid    string // owner name
-       Gid    string // group name
-       Muid   string // last modifier name
-}
-
-var nullDir = Dir{
-       Type: ^uint16(0),
-       Dev:  ^uint32(0),
-       Qid: Qid{
-               Path: ^uint64(0),
-               Vers: ^uint32(0),
-               Type: ^uint8(0),
-       },
-       Mode:   ^uint32(0),
-       Atime:  ^uint32(0),
-       Mtime:  ^uint32(0),
-       Length: ^int64(0),
-}
-
-// Null assigns special "don't touch" values to members of d to
-// avoid modifying them during plan9.Wstat.
-func (d *Dir) Null() { *d = nullDir }
-
-// Marshal encodes a 9P stat message corresponding to d into b
-//
-// If there isn't enough space in b for a stat message, ErrShortStat is returned.
-func (d *Dir) Marshal(b []byte) (n int, err error) {
-       n = STATFIXLEN + len(d.Name) + len(d.Uid) + len(d.Gid) + len(d.Muid)
-       if n > len(b) {
-               return n, ErrShortStat
-       }
-
-       for _, c := range d.Name {
-               if c == '/' {
-                       return n, ErrBadName
-               }
-       }
-
-       b = pbit16(b, uint16(n)-2)
-       b = pbit16(b, d.Type)
-       b = pbit32(b, d.Dev)
-       b = pbit8(b, d.Qid.Type)
-       b = pbit32(b, d.Qid.Vers)
-       b = pbit64(b, d.Qid.Path)
-       b = pbit32(b, d.Mode)
-       b = pbit32(b, d.Atime)
-       b = pbit32(b, d.Mtime)
-       b = pbit64(b, uint64(d.Length))
-       b = pstring(b, d.Name)
-       b = pstring(b, d.Uid)
-       b = pstring(b, d.Gid)
-       b = pstring(b, d.Muid)
-
-       return n, nil
-}
-
-// UnmarshalDir decodes a single 9P stat message from b and returns the resulting Dir.
-//
-// If b is too small to hold a valid stat message, ErrShortStat is returned.
-//
-// If the stat message itself is invalid, ErrBadStat is returned.
-func UnmarshalDir(b []byte) (*Dir, error) {
-       if len(b) < STATFIXLEN {
-               return nil, ErrShortStat
-       }
-       size, buf := gbit16(b)
-       if len(b) != int(size)+2 {
-               return nil, ErrBadStat
-       }
-       b = buf
-
-       var d Dir
-       d.Type, b = gbit16(b)
-       d.Dev, b = gbit32(b)
-       d.Qid.Type, b = gbit8(b)
-       d.Qid.Vers, b = gbit32(b)
-       d.Qid.Path, b = gbit64(b)
-       d.Mode, b = gbit32(b)
-       d.Atime, b = gbit32(b)
-       d.Mtime, b = gbit32(b)
-
-       n, b := gbit64(b)
-       d.Length = int64(n)
-
-       var ok bool
-       if d.Name, b, ok = gstring(b); !ok {
-               return nil, ErrBadStat
-       }
-       if d.Uid, b, ok = gstring(b); !ok {
-               return nil, ErrBadStat
-       }
-       if d.Gid, b, ok = gstring(b); !ok {
-               return nil, ErrBadStat
-       }
-       if d.Muid, b, ok = gstring(b); !ok {
-               return nil, ErrBadStat
-       }
-
-       return &d, nil
-}
-
-// pbit8 copies the 8-bit number v to b and returns the remaining slice of b.
-func pbit8(b []byte, v uint8) []byte {
-       b[0] = byte(v)
-       return b[1:]
-}
-
-// pbit16 copies the 16-bit number v to b in little-endian order and returns the remaining slice of b.
-func pbit16(b []byte, v uint16) []byte {
-       b[0] = byte(v)
-       b[1] = byte(v >> 8)
-       return b[2:]
-}
-
-// pbit32 copies the 32-bit number v to b in little-endian order and returns the remaining slice of b.
-func pbit32(b []byte, v uint32) []byte {
-       b[0] = byte(v)
-       b[1] = byte(v >> 8)
-       b[2] = byte(v >> 16)
-       b[3] = byte(v >> 24)
-       return b[4:]
-}
-
-// pbit64 copies the 64-bit number v to b in little-endian order and returns the remaining slice of b.
-func pbit64(b []byte, v uint64) []byte {
-       b[0] = byte(v)
-       b[1] = byte(v >> 8)
-       b[2] = byte(v >> 16)
-       b[3] = byte(v >> 24)
-       b[4] = byte(v >> 32)
-       b[5] = byte(v >> 40)
-       b[6] = byte(v >> 48)
-       b[7] = byte(v >> 56)
-       return b[8:]
-}
-
-// pstring copies the string s to b, prepending it with a 16-bit length in little-endian order, and
-// returning the remaining slice of b..
-func pstring(b []byte, s string) []byte {
-       b = pbit16(b, uint16(len(s)))
-       n := copy(b, s)
-       return b[n:]
-}
-
-// gbit8 reads an 8-bit number from b and returns it with the remaining slice of b.
-func gbit8(b []byte) (uint8, []byte) {
-       return uint8(b[0]), b[1:]
-}
-
-// gbit16 reads a 16-bit number in little-endian order from b and returns it with the remaining slice of b.
-func gbit16(b []byte) (uint16, []byte) {
-       return uint16(b[0]) | uint16(b[1])<<8, b[2:]
-}
-
-// gbit32 reads a 32-bit number in little-endian order from b and returns it with the remaining slice of b.
-func gbit32(b []byte) (uint32, []byte) {
-       return uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24, b[4:]
-}
-
-// gbit64 reads a 64-bit number in little-endian order from b and returns it with the remaining slice of b.
-func gbit64(b []byte) (uint64, []byte) {
-       lo := uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24
-       hi := uint32(b[4]) | uint32(b[5])<<8 | uint32(b[6])<<16 | uint32(b[7])<<24
-       return uint64(lo) | uint64(hi)<<32, b[8:]
-}
-
-// gstring reads a string from b, prefixed with a 16-bit length in little-endian order.
-// It returns the string with the remaining slice of b and a boolean. If the length is
-// greater than the number of bytes in b, the boolean will be false.
-func gstring(b []byte) (string, []byte, bool) {
-       n, b := gbit16(b)
-       if int(n) > len(b) {
-               return "", b, false
-       }
-       return string(b[:n]), b[n:], true
-}
diff --git a/vendor/golang.org/x/sys/plan9/env_plan9.go b/vendor/golang.org/x/sys/plan9/env_plan9.go
deleted file mode 100644 (file)
index 25a96e7..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2011 The Go Authors.  All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Plan 9 environment variables.
-
-package plan9
-
-import (
-       "syscall"
-)
-
-func Getenv(key string) (value string, found bool) {
-       return syscall.Getenv(key)
-}
-
-func Setenv(key, value string) error {
-       return syscall.Setenv(key, value)
-}
-
-func Clearenv() {
-       syscall.Clearenv()
-}
-
-func Environ() []string {
-       return syscall.Environ()
-}
diff --git a/vendor/golang.org/x/sys/plan9/env_unset.go b/vendor/golang.org/x/sys/plan9/env_unset.go
deleted file mode 100644 (file)
index c37fc26..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright 2014 The Go Authors.  All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build go1.4
-
-package plan9
-
-import "syscall"
-
-func Unsetenv(key string) error {
-       // This was added in Go 1.4.
-       return syscall.Unsetenv(key)
-}
diff --git a/vendor/golang.org/x/sys/plan9/errors_plan9.go b/vendor/golang.org/x/sys/plan9/errors_plan9.go
deleted file mode 100644 (file)
index 110cf6a..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2011 The Go Authors.  All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package plan9
-
-import "syscall"
-
-// Constants
-const (
-       // Invented values to support what package os expects.
-       O_CREAT    = 0x02000
-       O_APPEND   = 0x00400
-       O_NOCTTY   = 0x00000
-       O_NONBLOCK = 0x00000
-       O_SYNC     = 0x00000
-       O_ASYNC    = 0x00000
-
-       S_IFMT   = 0x1f000
-       S_IFIFO  = 0x1000
-       S_IFCHR  = 0x2000
-       S_IFDIR  = 0x4000
-       S_IFBLK  = 0x6000
-       S_IFREG  = 0x8000
-       S_IFLNK  = 0xa000
-       S_IFSOCK = 0xc000
-)
-
-// Errors
-var (
-       EINVAL       = syscall.NewError("bad arg in system call")
-       ENOTDIR      = syscall.NewError("not a directory")
-       EISDIR       = syscall.NewError("file is a directory")
-       ENOENT       = syscall.NewError("file does not exist")
-       EEXIST       = syscall.NewError("file already exists")
-       EMFILE       = syscall.NewError("no free file descriptors")
-       EIO          = syscall.NewError("i/o error")
-       ENAMETOOLONG = syscall.NewError("file name too long")
-       EINTR        = syscall.NewError("interrupted")
-       EPERM        = syscall.NewError("permission denied")
-       EBUSY        = syscall.NewError("no free devices")
-       ETIMEDOUT    = syscall.NewError("connection timed out")
-       EPLAN9       = syscall.NewError("not supported by plan 9")
-
-       // The following errors do not correspond to any
-       // Plan 9 system messages. Invented to support
-       // what package os and others expect.
-       EACCES       = syscall.NewError("access permission denied")
-       EAFNOSUPPORT = syscall.NewError("address family not supported by protocol")
-)
diff --git a/vendor/golang.org/x/sys/plan9/mkall.sh b/vendor/golang.org/x/sys/plan9/mkall.sh
deleted file mode 100755 (executable)
index 9f73c60..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-#!/usr/bin/env bash
-# Copyright 2009 The Go Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file.
-
-# The plan9 package provides access to the raw system call
-# interface of the underlying operating system.  Porting Go to
-# a new architecture/operating system combination requires
-# some manual effort, though there are tools that automate
-# much of the process.  The auto-generated files have names
-# beginning with z.
-#
-# This script runs or (given -n) prints suggested commands to generate z files
-# for the current system.  Running those commands is not automatic.
-# This script is documentation more than anything else.
-#
-# * asm_${GOOS}_${GOARCH}.s
-#
-# This hand-written assembly file implements system call dispatch.
-# There are three entry points:
-#
-#      func Syscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr);
-#      func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr);
-#      func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr);
-#
-# The first and second are the standard ones; they differ only in
-# how many arguments can be passed to the kernel.
-# The third is for low-level use by the ForkExec wrapper;
-# unlike the first two, it does not call into the scheduler to
-# let it know that a system call is running.
-#
-# * syscall_${GOOS}.go
-#
-# This hand-written Go file implements system calls that need
-# special handling and lists "//sys" comments giving prototypes
-# for ones that can be auto-generated.  Mksyscall reads those
-# comments to generate the stubs.
-#
-# * syscall_${GOOS}_${GOARCH}.go
-#
-# Same as syscall_${GOOS}.go except that it contains code specific
-# to ${GOOS} on one particular architecture.
-#
-# * types_${GOOS}.c
-#
-# This hand-written C file includes standard C headers and then
-# creates typedef or enum names beginning with a dollar sign
-# (use of $ in variable names is a gcc extension).  The hardest
-# part about preparing this file is figuring out which headers to
-# include and which symbols need to be #defined to get the
-# actual data structures that pass through to the kernel system calls.
-# Some C libraries present alternate versions for binary compatibility
-# and translate them on the way in and out of system calls, but
-# there is almost always a #define that can get the real ones.
-# See types_darwin.c and types_linux.c for examples.
-#
-# * zerror_${GOOS}_${GOARCH}.go
-#
-# This machine-generated file defines the system's error numbers,
-# error strings, and signal numbers.  The generator is "mkerrors.sh".
-# Usually no arguments are needed, but mkerrors.sh will pass its
-# arguments on to godefs.
-#
-# * zsyscall_${GOOS}_${GOARCH}.go
-#
-# Generated by mksyscall.pl; see syscall_${GOOS}.go above.
-#
-# * zsysnum_${GOOS}_${GOARCH}.go
-#
-# Generated by mksysnum_${GOOS}.
-#
-# * ztypes_${GOOS}_${GOARCH}.go
-#
-# Generated by godefs; see types_${GOOS}.c above.
-
-GOOSARCH="${GOOS}_${GOARCH}"
-
-# defaults
-mksyscall="./mksyscall.pl"
-mkerrors="./mkerrors.sh"
-zerrors="zerrors_$GOOSARCH.go"
-mksysctl=""
-zsysctl="zsysctl_$GOOSARCH.go"
-mksysnum=
-mktypes=
-run="sh"
-
-case "$1" in
--syscalls)
-       for i in zsyscall*go
-       do
-               sed 1q $i | sed 's;^// ;;' | sh > _$i && gofmt < _$i > $i
-               rm _$i
-       done
-       exit 0
-       ;;
--n)
-       run="cat"
-       shift
-esac
-
-case "$#" in
-0)
-       ;;
-*)
-       echo 'usage: mkall.sh [-n]' 1>&2
-       exit 2
-esac
-
-case "$GOOSARCH" in
-_* | *_ | _)
-       echo 'undefined $GOOS_$GOARCH:' "$GOOSARCH" 1>&2
-       exit 1
-       ;;
-plan9_386)
-       mkerrors=
-       mksyscall="./mksyscall.pl -l32 -plan9"
-       mksysnum="./mksysnum_plan9.sh /n/sources/plan9/sys/src/libc/9syscall/sys.h"
-       mktypes="XXX"
-       ;;
-*)
-       echo 'unrecognized $GOOS_$GOARCH: ' "$GOOSARCH" 1>&2
-       exit 1
-       ;;
-esac
-
-(
-       if [ -n "$mkerrors" ]; then echo "$mkerrors |gofmt >$zerrors"; fi
-       case "$GOOS" in
-       plan9)
-               syscall_goos="syscall_$GOOS.go"
-               if [ -n "$mksyscall" ]; then echo "$mksyscall $syscall_goos syscall_$GOOSARCH.go |gofmt >zsyscall_$GOOSARCH.go"; fi
-               ;;
-       esac
-       if [ -n "$mksysctl" ]; then echo "$mksysctl |gofmt >$zsysctl"; fi
-       if [ -n "$mksysnum" ]; then echo "$mksysnum |gofmt >zsysnum_$GOOSARCH.go"; fi
-       if [ -n "$mktypes" ]; then echo "$mktypes types_$GOOS.go |gofmt >ztypes_$GOOSARCH.go"; fi
-) | $run
diff --git a/vendor/golang.org/x/sys/plan9/mkerrors.sh b/vendor/golang.org/x/sys/plan9/mkerrors.sh
deleted file mode 100755 (executable)
index 052c86d..0000000
+++ /dev/null
@@ -1,246 +0,0 @@
-#!/usr/bin/env bash
-# Copyright 2009 The Go Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file.
-
-# Generate Go code listing errors and other #defined constant
-# values (ENAMETOOLONG etc.), by asking the preprocessor
-# about the definitions.
-
-unset LANG
-export LC_ALL=C
-export LC_CTYPE=C
-
-CC=${CC:-gcc}
-
-uname=$(uname)
-
-includes='
-#include <sys/types.h>
-#include <sys/file.h>
-#include <fcntl.h>
-#include <dirent.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netinet/ip.h>
-#include <netinet/ip6.h>
-#include <netinet/tcp.h>
-#include <errno.h>
-#include <sys/signal.h>
-#include <signal.h>
-#include <sys/resource.h>
-'
-
-ccflags="$@"
-
-# Write go tool cgo -godefs input.
-(
-       echo package plan9
-       echo
-       echo '/*'
-       indirect="includes_$(uname)"
-       echo "${!indirect} $includes"
-       echo '*/'
-       echo 'import "C"'
-       echo
-       echo 'const ('
-
-       # The gcc command line prints all the #defines
-       # it encounters while processing the input
-       echo "${!indirect} $includes" | $CC -x c - -E -dM $ccflags |
-       awk '
-               $1 != "#define" || $2 ~ /\(/ || $3 == "" {next}
-
-               $2 ~ /^E([ABCD]X|[BIS]P|[SD]I|S|FL)$/ {next}  # 386 registers
-               $2 ~ /^(SIGEV_|SIGSTKSZ|SIGRT(MIN|MAX))/ {next}
-               $2 ~ /^(SCM_SRCRT)$/ {next}
-               $2 ~ /^(MAP_FAILED)$/ {next}
-
-               $2 !~ /^ETH_/ &&
-               $2 !~ /^EPROC_/ &&
-               $2 !~ /^EQUIV_/ &&
-               $2 !~ /^EXPR_/ &&
-               $2 ~ /^E[A-Z0-9_]+$/ ||
-               $2 ~ /^B[0-9_]+$/ ||
-               $2 ~ /^V[A-Z0-9]+$/ ||
-               $2 ~ /^CS[A-Z0-9]/ ||
-               $2 ~ /^I(SIG|CANON|CRNL|EXTEN|MAXBEL|STRIP|UTF8)$/ ||
-               $2 ~ /^IGN/ ||
-               $2 ~ /^IX(ON|ANY|OFF)$/ ||
-               $2 ~ /^IN(LCR|PCK)$/ ||
-               $2 ~ /(^FLU?SH)|(FLU?SH$)/ ||
-               $2 ~ /^C(LOCAL|READ)$/ ||
-               $2 == "BRKINT" ||
-               $2 == "HUPCL" ||
-               $2 == "PENDIN" ||
-               $2 == "TOSTOP" ||
-               $2 ~ /^PAR/ ||
-               $2 ~ /^SIG[^_]/ ||
-               $2 ~ /^O[CNPFP][A-Z]+[^_][A-Z]+$/ ||
-               $2 ~ /^IN_/ ||
-               $2 ~ /^LOCK_(SH|EX|NB|UN)$/ ||
-               $2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|ICMP6|TCP|EVFILT|NOTE|EV|SHUT|PROT|MAP|PACKET|MSG|SCM|MCL|DT|MADV|PR)_/ ||
-               $2 == "ICMPV6_FILTER" ||
-               $2 == "SOMAXCONN" ||
-               $2 == "NAME_MAX" ||
-               $2 == "IFNAMSIZ" ||
-               $2 ~ /^CTL_(MAXNAME|NET|QUERY)$/ ||
-               $2 ~ /^SYSCTL_VERS/ ||
-               $2 ~ /^(MS|MNT)_/ ||
-               $2 ~ /^TUN(SET|GET|ATTACH|DETACH)/ ||
-               $2 ~ /^(O|F|FD|NAME|S|PTRACE|PT)_/ ||
-               $2 ~ /^LINUX_REBOOT_CMD_/ ||
-               $2 ~ /^LINUX_REBOOT_MAGIC[12]$/ ||
-               $2 !~ "NLA_TYPE_MASK" &&
-               $2 ~ /^(NETLINK|NLM|NLMSG|NLA|IFA|IFAN|RT|RTCF|RTN|RTPROT|RTNH|ARPHRD|ETH_P)_/ ||
-               $2 ~ /^SIOC/ ||
-               $2 ~ /^TIOC/ ||
-               $2 !~ "RTF_BITS" &&
-               $2 ~ /^(IFF|IFT|NET_RT|RTM|RTF|RTV|RTA|RTAX)_/ ||
-               $2 ~ /^BIOC/ ||
-               $2 ~ /^RUSAGE_(SELF|CHILDREN|THREAD)/ ||
-               $2 ~ /^RLIMIT_(AS|CORE|CPU|DATA|FSIZE|NOFILE|STACK)|RLIM_INFINITY/ ||
-               $2 ~ /^PRIO_(PROCESS|PGRP|USER)/ ||
-               $2 ~ /^CLONE_[A-Z_]+/ ||
-               $2 !~ /^(BPF_TIMEVAL)$/ &&
-               $2 ~ /^(BPF|DLT)_/ ||
-               $2 !~ "WMESGLEN" &&
-               $2 ~ /^W[A-Z0-9]+$/ {printf("\t%s = C.%s\n", $2, $2)}
-               $2 ~ /^__WCOREFLAG$/ {next}
-               $2 ~ /^__W[A-Z0-9]+$/ {printf("\t%s = C.%s\n", substr($2,3), $2)}
-
-               {next}
-       ' | sort
-
-       echo ')'
-) >_const.go
-
-# Pull out the error names for later.
-errors=$(
-       echo '#include <errno.h>' | $CC -x c - -E -dM $ccflags |
-       awk '$1=="#define" && $2 ~ /^E[A-Z0-9_]+$/ { print $2 }' |
-       sort
-)
-
-# Pull out the signal names for later.
-signals=$(
-       echo '#include <signal.h>' | $CC -x c - -E -dM $ccflags |
-       awk '$1=="#define" && $2 ~ /^SIG[A-Z0-9]+$/ { print $2 }' |
-       egrep -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT)' |
-       sort
-)
-
-# Again, writing regexps to a file.
-echo '#include <errno.h>' | $CC -x c - -E -dM $ccflags |
-       awk '$1=="#define" && $2 ~ /^E[A-Z0-9_]+$/ { print "^\t" $2 "[ \t]*=" }' |
-       sort >_error.grep
-echo '#include <signal.h>' | $CC -x c - -E -dM $ccflags |
-       awk '$1=="#define" && $2 ~ /^SIG[A-Z0-9]+$/ { print "^\t" $2 "[ \t]*=" }' |
-       egrep -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT)' |
-       sort >_signal.grep
-
-echo '// mkerrors.sh' "$@"
-echo '// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT'
-echo
-go tool cgo -godefs -- "$@" _const.go >_error.out
-cat _error.out | grep -vf _error.grep | grep -vf _signal.grep
-echo
-echo '// Errors'
-echo 'const ('
-cat _error.out | grep -f _error.grep | sed 's/=\(.*\)/= Errno(\1)/'
-echo ')'
-
-echo
-echo '// Signals'
-echo 'const ('
-cat _error.out | grep -f _signal.grep | sed 's/=\(.*\)/= Signal(\1)/'
-echo ')'
-
-# Run C program to print error and syscall strings.
-(
-       echo -E "
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <ctype.h>
-#include <string.h>
-#include <signal.h>
-
-#define nelem(x) (sizeof(x)/sizeof((x)[0]))
-
-enum { A = 'A', Z = 'Z', a = 'a', z = 'z' }; // avoid need for single quotes below
-
-int errors[] = {
-"
-       for i in $errors
-       do
-               echo -E '       '$i,
-       done
-
-       echo -E "
-};
-
-int signals[] = {
-"
-       for i in $signals
-       do
-               echo -E '       '$i,
-       done
-
-       # Use -E because on some systems bash builtin interprets \n itself.
-       echo -E '
-};
-
-static int
-intcmp(const void *a, const void *b)
-{
-       return *(int*)a - *(int*)b;
-}
-
-int
-main(void)
-{
-       int i, j, e;
-       char buf[1024], *p;
-
-       printf("\n\n// Error table\n");
-       printf("var errors = [...]string {\n");
-       qsort(errors, nelem(errors), sizeof errors[0], intcmp);
-       for(i=0; i<nelem(errors); i++) {
-               e = errors[i];
-               if(i > 0 && errors[i-1] == e)
-                       continue;
-               strcpy(buf, strerror(e));
-               // lowercase first letter: Bad -> bad, but STREAM -> STREAM.
-               if(A <= buf[0] && buf[0] <= Z && a <= buf[1] && buf[1] <= z)
-                       buf[0] += a - A;
-               printf("\t%d: \"%s\",\n", e, buf);
-       }
-       printf("}\n\n");
-       
-       printf("\n\n// Signal table\n");
-       printf("var signals = [...]string {\n");
-       qsort(signals, nelem(signals), sizeof signals[0], intcmp);
-       for(i=0; i<nelem(signals); i++) {
-               e = signals[i];
-               if(i > 0 && signals[i-1] == e)
-                       continue;
-               strcpy(buf, strsignal(e));
-               // lowercase first letter: Bad -> bad, but STREAM -> STREAM.
-               if(A <= buf[0] && buf[0] <= Z && a <= buf[1] && buf[1] <= z)
-                       buf[0] += a - A;
-               // cut trailing : number.
-               p = strrchr(buf, ":"[0]);
-               if(p)
-                       *p = '\0';
-               printf("\t%d: \"%s\",\n", e, buf);
-       }
-       printf("}\n\n");
-
-       return 0;
-}
-
-'
-) >_errors.c
-
-$CC $ccflags -o _errors _errors.c && $GORUN ./_errors && rm -f _errors.c _errors _const.go _error.grep _signal.grep _error.out
diff --git a/vendor/golang.org/x/sys/plan9/mksyscall.pl b/vendor/golang.org/x/sys/plan9/mksyscall.pl
deleted file mode 100755 (executable)
index ce8e1e4..0000000
+++ /dev/null
@@ -1,319 +0,0 @@
-#!/usr/bin/env perl
-# Copyright 2009 The Go Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file.
-
-# This program reads a file containing function prototypes
-# (like syscall_plan9.go) and generates system call bodies.
-# The prototypes are marked by lines beginning with "//sys"
-# and read like func declarations if //sys is replaced by func, but:
-#      * The parameter lists must give a name for each argument.
-#        This includes return parameters.
-#      * The parameter lists must give a type for each argument:
-#        the (x, y, z int) shorthand is not allowed.
-#      * If the return parameter is an error number, it must be named errno.
-
-# A line beginning with //sysnb is like //sys, except that the
-# goroutine will not be suspended during the execution of the system
-# call.  This must only be used for system calls which can never
-# block, as otherwise the system call could cause all goroutines to
-# hang.
-
-use strict;
-
-my $cmdline = "mksyscall.pl " . join(' ', @ARGV);
-my $errors = 0;
-my $_32bit = "";
-my $plan9 = 0;
-my $openbsd = 0;
-my $netbsd = 0;
-my $dragonfly = 0;
-my $nacl = 0;
-my $arm = 0; # 64-bit value should use (even, odd)-pair
-
-if($ARGV[0] eq "-b32") {
-       $_32bit = "big-endian";
-       shift;
-} elsif($ARGV[0] eq "-l32") {
-       $_32bit = "little-endian";
-       shift;
-}
-if($ARGV[0] eq "-plan9") {
-       $plan9 = 1;
-       shift;
-}
-if($ARGV[0] eq "-openbsd") {
-       $openbsd = 1;
-       shift;
-}
-if($ARGV[0] eq "-netbsd") {
-       $netbsd = 1;
-       shift;
-}
-if($ARGV[0] eq "-dragonfly") {
-       $dragonfly = 1;
-       shift;
-}
-if($ARGV[0] eq "-nacl") {
-       $nacl = 1;
-       shift;
-}
-if($ARGV[0] eq "-arm") {
-       $arm = 1;
-       shift;
-}
-
-if($ARGV[0] =~ /^-/) {
-       print STDERR "usage: mksyscall.pl [-b32 | -l32] [file ...]\n";
-       exit 1;
-}
-
-sub parseparamlist($) {
-       my ($list) = @_;
-       $list =~ s/^\s*//;
-       $list =~ s/\s*$//;
-       if($list eq "") {
-               return ();
-       }
-       return split(/\s*,\s*/, $list);
-}
-
-sub parseparam($) {
-       my ($p) = @_;
-       if($p !~ /^(\S*) (\S*)$/) {
-               print STDERR "$ARGV:$.: malformed parameter: $p\n";
-               $errors = 1;
-               return ("xx", "int");
-       }
-       return ($1, $2);
-}
-
-my $text = "";
-while(<>) {
-       chomp;
-       s/\s+/ /g;
-       s/^\s+//;
-       s/\s+$//;
-       my $nonblock = /^\/\/sysnb /;
-       next if !/^\/\/sys / && !$nonblock;
-
-       # Line must be of the form
-       #       func Open(path string, mode int, perm int) (fd int, errno error)
-       # Split into name, in params, out params.
-       if(!/^\/\/sys(nb)? (\w+)\(([^()]*)\)\s*(?:\(([^()]+)\))?\s*(?:=\s*((?i)SYS_[A-Z0-9_]+))?$/) {
-               print STDERR "$ARGV:$.: malformed //sys declaration\n";
-               $errors = 1;
-               next;
-       }
-       my ($func, $in, $out, $sysname) = ($2, $3, $4, $5);
-
-       # Split argument lists on comma.
-       my @in = parseparamlist($in);
-       my @out = parseparamlist($out);
-
-       # Try in vain to keep people from editing this file.
-       # The theory is that they jump into the middle of the file
-       # without reading the header.
-       $text .= "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n";
-
-       # Go function header.
-       my $out_decl = @out ? sprintf(" (%s)", join(', ', @out)) : "";
-       $text .= sprintf "func %s(%s)%s {\n", $func, join(', ', @in), $out_decl;
-
-       # Check if err return available
-       my $errvar = "";
-       foreach my $p (@out) {
-               my ($name, $type) = parseparam($p);
-               if($type eq "error") {
-                       $errvar = $name;
-                       last;
-               }
-       }
-
-       # Prepare arguments to Syscall.
-       my @args = ();
-       my @uses = ();
-       my $n = 0;
-       foreach my $p (@in) {
-               my ($name, $type) = parseparam($p);
-               if($type =~ /^\*/) {
-                       push @args, "uintptr(unsafe.Pointer($name))";
-               } elsif($type eq "string" && $errvar ne "") {
-                       $text .= "\tvar _p$n *byte\n";
-                       $text .= "\t_p$n, $errvar = BytePtrFromString($name)\n";
-                       $text .= "\tif $errvar != nil {\n\t\treturn\n\t}\n";
-                       push @args, "uintptr(unsafe.Pointer(_p$n))";
-                       push @uses, "use(unsafe.Pointer(_p$n))";
-                       $n++;
-               } elsif($type eq "string") {
-                       print STDERR "$ARGV:$.: $func uses string arguments, but has no error return\n";
-                       $text .= "\tvar _p$n *byte\n";
-                       $text .= "\t_p$n, _ = BytePtrFromString($name)\n";
-                       push @args, "uintptr(unsafe.Pointer(_p$n))";
-                       push @uses, "use(unsafe.Pointer(_p$n))";
-                       $n++;
-               } elsif($type =~ /^\[\](.*)/) {
-                       # Convert slice into pointer, length.
-                       # Have to be careful not to take address of &a[0] if len == 0:
-                       # pass dummy pointer in that case.
-                       # Used to pass nil, but some OSes or simulators reject write(fd, nil, 0).
-                       $text .= "\tvar _p$n unsafe.Pointer\n";
-                       $text .= "\tif len($name) > 0 {\n\t\t_p$n = unsafe.Pointer(\&${name}[0])\n\t}";
-                       $text .= " else {\n\t\t_p$n = unsafe.Pointer(&_zero)\n\t}";
-                       $text .= "\n";
-                       push @args, "uintptr(_p$n)", "uintptr(len($name))";
-                       $n++;
-               } elsif($type eq "int64" && ($openbsd || $netbsd)) {
-                       push @args, "0";
-                       if($_32bit eq "big-endian") {
-                               push @args, "uintptr($name>>32)", "uintptr($name)";
-                       } elsif($_32bit eq "little-endian") {
-                               push @args, "uintptr($name)", "uintptr($name>>32)";
-                       } else {
-                               push @args, "uintptr($name)";
-                       }
-               } elsif($type eq "int64" && $dragonfly) {
-                       if ($func !~ /^extp(read|write)/i) {
-                               push @args, "0";
-                       }
-                       if($_32bit eq "big-endian") {
-                               push @args, "uintptr($name>>32)", "uintptr($name)";
-                       } elsif($_32bit eq "little-endian") {
-                               push @args, "uintptr($name)", "uintptr($name>>32)";
-                       } else {
-                               push @args, "uintptr($name)";
-                       }
-               } elsif($type eq "int64" && $_32bit ne "") {
-                       if(@args % 2 && $arm) {
-                               # arm abi specifies 64-bit argument uses 
-                               # (even, odd) pair
-                               push @args, "0"
-                       }
-                       if($_32bit eq "big-endian") {
-                               push @args, "uintptr($name>>32)", "uintptr($name)";
-                       } else {
-                               push @args, "uintptr($name)", "uintptr($name>>32)";
-                       }
-               } else {
-                       push @args, "uintptr($name)";
-               }
-       }
-
-       # Determine which form to use; pad args with zeros.
-       my $asm = "Syscall";
-       if ($nonblock) {
-               $asm = "RawSyscall";
-       }
-       if(@args <= 3) {
-               while(@args < 3) {
-                       push @args, "0";
-               }
-       } elsif(@args <= 6) {
-               $asm .= "6";
-               while(@args < 6) {
-                       push @args, "0";
-               }
-       } elsif(@args <= 9) {
-               $asm .= "9";
-               while(@args < 9) {
-                       push @args, "0";
-               }
-       } else {
-               print STDERR "$ARGV:$.: too many arguments to system call\n";
-       }
-
-       # System call number.
-       if($sysname eq "") {
-               $sysname = "SYS_$func";
-               $sysname =~ s/([a-z])([A-Z])/${1}_$2/g; # turn FooBar into Foo_Bar
-               $sysname =~ y/a-z/A-Z/;
-               if($nacl) {
-                       $sysname =~ y/A-Z/a-z/;
-               }
-       }
-
-       # Actual call.
-       my $args = join(', ', @args);
-       my $call = "$asm($sysname, $args)";
-
-       # Assign return values.
-       my $body = "";
-       my @ret = ("_", "_", "_");
-       my $do_errno = 0;
-       for(my $i=0; $i<@out; $i++) {
-               my $p = $out[$i];
-               my ($name, $type) = parseparam($p);
-               my $reg = "";
-               if($name eq "err" && !$plan9) {
-                       $reg = "e1";
-                       $ret[2] = $reg;
-                       $do_errno = 1;
-               } elsif($name eq "err" && $plan9) {
-                       $ret[0] = "r0";
-                       $ret[2] = "e1";
-                       next;
-               } else {
-                       $reg = sprintf("r%d", $i);
-                       $ret[$i] = $reg;
-               }
-               if($type eq "bool") {
-                       $reg = "$reg != 0";
-               }
-               if($type eq "int64" && $_32bit ne "") {
-                       # 64-bit number in r1:r0 or r0:r1.
-                       if($i+2 > @out) {
-                               print STDERR "$ARGV:$.: not enough registers for int64 return\n";
-                       }
-                       if($_32bit eq "big-endian") {
-                               $reg = sprintf("int64(r%d)<<32 | int64(r%d)", $i, $i+1);
-                       } else {
-                               $reg = sprintf("int64(r%d)<<32 | int64(r%d)", $i+1, $i);
-                       }
-                       $ret[$i] = sprintf("r%d", $i);
-                       $ret[$i+1] = sprintf("r%d", $i+1);
-               }
-               if($reg ne "e1" || $plan9) {
-                       $body .= "\t$name = $type($reg)\n";
-               }
-       }
-       if ($ret[0] eq "_" && $ret[1] eq "_" && $ret[2] eq "_") {
-               $text .= "\t$call\n";
-       } else {
-               $text .= "\t$ret[0], $ret[1], $ret[2] := $call\n";
-       }
-       foreach my $use (@uses) {
-               $text .= "\t$use\n";
-       }
-       $text .= $body;
-       
-       if ($plan9 && $ret[2] eq "e1") {
-               $text .= "\tif int32(r0) == -1 {\n";
-               $text .= "\t\terr = e1\n";
-               $text .= "\t}\n";
-       } elsif ($do_errno) {
-               $text .= "\tif e1 != 0 {\n";
-               $text .= "\t\terr = e1\n";
-               $text .= "\t}\n";
-       }
-       $text .= "\treturn\n";
-       $text .= "}\n\n";
-}
-
-chomp $text;
-chomp $text;
-
-if($errors) {
-       exit 1;
-}
-
-print <<EOF;
-// $cmdline
-// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
-
-package plan9
-
-import "unsafe"
-
-$text
-EOF
-exit 0;
diff --git a/vendor/golang.org/x/sys/plan9/mksysnum_plan9.sh b/vendor/golang.org/x/sys/plan9/mksysnum_plan9.sh
deleted file mode 100755 (executable)
index 3c3ab05..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-# Copyright 2009 The Go Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file.
-
-COMMAND="mksysnum_plan9.sh $@"
-
-cat <<EOF
-// $COMMAND
-// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-
-package plan9
-
-const(
-EOF
-
-SP='[  ]' # space or tab
-sed "s/^#define${SP}\\([A-Z0-9_][A-Z0-9_]*\\)${SP}${SP}*\\([0-9][0-9]*\\)/SYS_\\1=\\2/g" \
-       < $1 | grep -v SYS__
-
-cat <<EOF
-)
-EOF
diff --git a/vendor/golang.org/x/sys/plan9/pwd_go15_plan9.go b/vendor/golang.org/x/sys/plan9/pwd_go15_plan9.go
deleted file mode 100644 (file)
index 87ae9d2..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2015 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build go1.5
-
-package plan9
-
-import "syscall"
-
-func fixwd() {
-       syscall.Fixwd()
-}
-
-func Getwd() (wd string, err error) {
-       return syscall.Getwd()
-}
-
-func Chdir(path string) error {
-       return syscall.Chdir(path)
-}
diff --git a/vendor/golang.org/x/sys/plan9/pwd_plan9.go b/vendor/golang.org/x/sys/plan9/pwd_plan9.go
deleted file mode 100644 (file)
index c07c798..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2015 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build !go1.5
-
-package plan9
-
-func fixwd() {
-}
-
-func Getwd() (wd string, err error) {
-       fd, err := open(".", O_RDONLY)
-       if err != nil {
-               return "", err
-       }
-       defer Close(fd)
-       return Fd2path(fd)
-}
-
-func Chdir(path string) error {
-       return chdir(path)
-}
diff --git a/vendor/golang.org/x/sys/plan9/race.go b/vendor/golang.org/x/sys/plan9/race.go
deleted file mode 100644 (file)
index c7ff5df..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2012 The Go Authors.  All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build plan9,race
-
-package plan9
-
-import (
-       "runtime"
-       "unsafe"
-)
-
-const raceenabled = true
-
-func raceAcquire(addr unsafe.Pointer) {
-       runtime.RaceAcquire(addr)
-}
-
-func raceReleaseMerge(addr unsafe.Pointer) {
-       runtime.RaceReleaseMerge(addr)
-}
-
-func raceReadRange(addr unsafe.Pointer, len int) {
-       runtime.RaceReadRange(addr, len)
-}
-
-func raceWriteRange(addr unsafe.Pointer, len int) {
-       runtime.RaceWriteRange(addr, len)
-}
diff --git a/vendor/golang.org/x/sys/plan9/race0.go b/vendor/golang.org/x/sys/plan9/race0.go
deleted file mode 100644 (file)
index 06cabcc..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2012 The Go Authors.  All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build plan9,!race
-
-package plan9
-
-import (
-       "unsafe"
-)
-
-const raceenabled = false
-
-func raceAcquire(addr unsafe.Pointer) {
-}
-
-func raceReleaseMerge(addr unsafe.Pointer) {
-}
-
-func raceReadRange(addr unsafe.Pointer, len int) {
-}
-
-func raceWriteRange(addr unsafe.Pointer, len int) {
-}
diff --git a/vendor/golang.org/x/sys/plan9/str.go b/vendor/golang.org/x/sys/plan9/str.go
deleted file mode 100644 (file)
index 4f7f9ad..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build plan9
-
-package plan9
-
-func itoa(val int) string { // do it here rather than with fmt to avoid dependency
-       if val < 0 {
-               return "-" + itoa(-val)
-       }
-       var buf [32]byte // big enough for int64
-       i := len(buf) - 1
-       for val >= 10 {
-               buf[i] = byte(val%10 + '0')
-               i--
-               val /= 10
-       }
-       buf[i] = byte(val + '0')
-       return string(buf[i:])
-}
diff --git a/vendor/golang.org/x/sys/plan9/syscall.go b/vendor/golang.org/x/sys/plan9/syscall.go
deleted file mode 100644 (file)
index df6f8c5..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build plan9
-
-// Package plan9 contains an interface to the low-level operating system
-// primitives.  OS details vary depending on the underlying system, and
-// by default, godoc will display the OS-specific documentation for the current
-// system.  If you want godoc to display documentation for another
-// system, set $GOOS and $GOARCH to the desired system.  For example, if
-// you want to view documentation for freebsd/arm on linux/amd64, set $GOOS
-// to freebsd and $GOARCH to arm.
-// The primary use of this package is inside other packages that provide a more
-// portable interface to the system, such as "os", "time" and "net".  Use
-// those packages rather than this one if you can.
-// For details of the functions and data types in this package consult
-// the manuals for the appropriate operating system.
-// These calls return err == nil to indicate success; otherwise
-// err represents an operating system error describing the failure and
-// holds a value of type syscall.ErrorString.
-package plan9 // import "golang.org/x/sys/plan9"
-
-import "unsafe"
-
-// ByteSliceFromString returns a NUL-terminated slice of bytes
-// containing the text of s. If s contains a NUL byte at any
-// location, it returns (nil, EINVAL).
-func ByteSliceFromString(s string) ([]byte, error) {
-       for i := 0; i < len(s); i++ {
-               if s[i] == 0 {
-                       return nil, EINVAL
-               }
-       }
-       a := make([]byte, len(s)+1)
-       copy(a, s)
-       return a, nil
-}
-
-// BytePtrFromString returns a pointer to a NUL-terminated array of
-// bytes containing the text of s. If s contains a NUL byte at any
-// location, it returns (nil, EINVAL).
-func BytePtrFromString(s string) (*byte, error) {
-       a, err := ByteSliceFromString(s)
-       if err != nil {
-               return nil, err
-       }
-       return &a[0], nil
-}
-
-// Single-word zero for use when we need a valid pointer to 0 bytes.
-// See mksyscall.pl.
-var _zero uintptr
-
-func (ts *Timespec) Unix() (sec int64, nsec int64) {
-       return int64(ts.Sec), int64(ts.Nsec)
-}
-
-func (tv *Timeval) Unix() (sec int64, nsec int64) {
-       return int64(tv.Sec), int64(tv.Usec) * 1000
-}
-
-func (ts *Timespec) Nano() int64 {
-       return int64(ts.Sec)*1e9 + int64(ts.Nsec)
-}
-
-func (tv *Timeval) Nano() int64 {
-       return int64(tv.Sec)*1e9 + int64(tv.Usec)*1000
-}
-
-// use is a no-op, but the compiler cannot see that it is.
-// Calling use(p) ensures that p is kept live until that point.
-//go:noescape
-func use(p unsafe.Pointer)
diff --git a/vendor/golang.org/x/sys/plan9/syscall_plan9.go b/vendor/golang.org/x/sys/plan9/syscall_plan9.go
deleted file mode 100644 (file)
index d39d07d..0000000
+++ /dev/null
@@ -1,349 +0,0 @@
-// Copyright 2011 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Plan 9 system calls.
-// This file is compiled as ordinary Go code,
-// but it is also input to mksyscall,
-// which parses the //sys lines and generates system call stubs.
-// Note that sometimes we use a lowercase //sys name and
-// wrap it in our own nicer implementation.
-
-package plan9
-
-import (
-       "syscall"
-       "unsafe"
-)
-
-// A Note is a string describing a process note.
-// It implements the os.Signal interface.
-type Note string
-
-func (n Note) Signal() {}
-
-func (n Note) String() string {
-       return string(n)
-}
-
-var (
-       Stdin  = 0
-       Stdout = 1
-       Stderr = 2
-)
-
-// For testing: clients can set this flag to force
-// creation of IPv6 sockets to return EAFNOSUPPORT.
-var SocketDisableIPv6 bool
-
-func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.ErrorString)
-func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.ErrorString)
-func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr)
-func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr)
-
-func atoi(b []byte) (n uint) {
-       n = 0
-       for i := 0; i < len(b); i++ {
-               n = n*10 + uint(b[i]-'0')
-       }
-       return
-}
-
-func cstring(s []byte) string {
-       for i := range s {
-               if s[i] == 0 {
-                       return string(s[0:i])
-               }
-       }
-       return string(s)
-}
-
-func errstr() string {
-       var buf [ERRMAX]byte
-
-       RawSyscall(SYS_ERRSTR, uintptr(unsafe.Pointer(&buf[0])), uintptr(len(buf)), 0)
-
-       buf[len(buf)-1] = 0
-       return cstring(buf[:])
-}
-
-// Implemented in assembly to import from runtime.
-func exit(code int)
-
-func Exit(code int) { exit(code) }
-
-func readnum(path string) (uint, error) {
-       var b [12]byte
-
-       fd, e := Open(path, O_RDONLY)
-       if e != nil {
-               return 0, e
-       }
-       defer Close(fd)
-
-       n, e := Pread(fd, b[:], 0)
-
-       if e != nil {
-               return 0, e
-       }
-
-       m := 0
-       for ; m < n && b[m] == ' '; m++ {
-       }
-
-       return atoi(b[m : n-1]), nil
-}
-
-func Getpid() (pid int) {
-       n, _ := readnum("#c/pid")
-       return int(n)
-}
-
-func Getppid() (ppid int) {
-       n, _ := readnum("#c/ppid")
-       return int(n)
-}
-
-func Read(fd int, p []byte) (n int, err error) {
-       return Pread(fd, p, -1)
-}
-
-func Write(fd int, p []byte) (n int, err error) {
-       return Pwrite(fd, p, -1)
-}
-
-var ioSync int64
-
-//sys  fd2path(fd int, buf []byte) (err error)
-func Fd2path(fd int) (path string, err error) {
-       var buf [512]byte
-
-       e := fd2path(fd, buf[:])
-       if e != nil {
-               return "", e
-       }
-       return cstring(buf[:]), nil
-}
-
-//sys  pipe(p *[2]int32) (err error)
-func Pipe(p []int) (err error) {
-       if len(p) != 2 {
-               return syscall.ErrorString("bad arg in system call")
-       }
-       var pp [2]int32
-       err = pipe(&pp)
-       p[0] = int(pp[0])
-       p[1] = int(pp[1])
-       return
-}
-
-// Underlying system call writes to newoffset via pointer.
-// Implemented in assembly to avoid allocation.
-func seek(placeholder uintptr, fd int, offset int64, whence int) (newoffset int64, err string)
-
-func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
-       newoffset, e := seek(0, fd, offset, whence)
-
-       if newoffset == -1 {
-               err = syscall.ErrorString(e)
-       }
-       return
-}
-
-func Mkdir(path string, mode uint32) (err error) {
-       fd, err := Create(path, O_RDONLY, DMDIR|mode)
-
-       if fd != -1 {
-               Close(fd)
-       }
-
-       return
-}
-
-type Waitmsg struct {
-       Pid  int
-       Time [3]uint32
-       Msg  string
-}
-
-func (w Waitmsg) Exited() bool   { return true }
-func (w Waitmsg) Signaled() bool { return false }
-
-func (w Waitmsg) ExitStatus() int {
-       if len(w.Msg) == 0 {
-               // a normal exit returns no message
-               return 0
-       }
-       return 1
-}
-
-//sys  await(s []byte) (n int, err error)
-func Await(w *Waitmsg) (err error) {
-       var buf [512]byte
-       var f [5][]byte
-
-       n, err := await(buf[:])
-
-       if err != nil || w == nil {
-               return
-       }
-
-       nf := 0
-       p := 0
-       for i := 0; i < n && nf < len(f)-1; i++ {
-               if buf[i] == ' ' {
-                       f[nf] = buf[p:i]
-                       p = i + 1
-                       nf++
-               }
-       }
-       f[nf] = buf[p:]
-       nf++
-
-       if nf != len(f) {
-               return syscall.ErrorString("invalid wait message")
-       }
-       w.Pid = int(atoi(f[0]))
-       w.Time[0] = uint32(atoi(f[1]))
-       w.Time[1] = uint32(atoi(f[2]))
-       w.Time[2] = uint32(atoi(f[3]))
-       w.Msg = cstring(f[4])
-       if w.Msg == "''" {
-               // await() returns '' for no error
-               w.Msg = ""
-       }
-       return
-}
-
-func Unmount(name, old string) (err error) {
-       fixwd()
-       oldp, err := BytePtrFromString(old)
-       if err != nil {
-               return err
-       }
-       oldptr := uintptr(unsafe.Pointer(oldp))
-
-       var r0 uintptr
-       var e syscall.ErrorString
-
-       // bind(2) man page: If name is zero, everything bound or mounted upon old is unbound or unmounted.
-       if name == "" {
-               r0, _, e = Syscall(SYS_UNMOUNT, _zero, oldptr, 0)
-       } else {
-               namep, err := BytePtrFromString(name)
-               if err != nil {
-                       return err
-               }
-               r0, _, e = Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(namep)), oldptr, 0)
-       }
-
-       if int32(r0) == -1 {
-               err = e
-       }
-       return
-}
-
-func Fchdir(fd int) (err error) {
-       path, err := Fd2path(fd)
-
-       if err != nil {
-               return
-       }
-
-       return Chdir(path)
-}
-
-type Timespec struct {
-       Sec  int32
-       Nsec int32
-}
-
-type Timeval struct {
-       Sec  int32
-       Usec int32
-}
-
-func NsecToTimeval(nsec int64) (tv Timeval) {
-       nsec += 999 // round up to microsecond
-       tv.Usec = int32(nsec % 1e9 / 1e3)
-       tv.Sec = int32(nsec / 1e9)
-       return
-}
-
-func nsec() int64 {
-       var scratch int64
-
-       r0, _, _ := Syscall(SYS_NSEC, uintptr(unsafe.Pointer(&scratch)), 0, 0)
-       // TODO(aram): remove hack after I fix _nsec in the pc64 kernel.
-       if r0 == 0 {
-               return scratch
-       }
-       return int64(r0)
-}
-
-func Gettimeofday(tv *Timeval) error {
-       nsec := nsec()
-       *tv = NsecToTimeval(nsec)
-       return nil
-}
-
-func Getpagesize() int { return 0x1000 }
-
-func Getegid() (egid int) { return -1 }
-func Geteuid() (euid int) { return -1 }
-func Getgid() (gid int)   { return -1 }
-func Getuid() (uid int)   { return -1 }
-
-func Getgroups() (gids []int, err error) {
-       return make([]int, 0), nil
-}
-
-//sys  open(path string, mode int) (fd int, err error)
-func Open(path string, mode int) (fd int, err error) {
-       fixwd()
-       return open(path, mode)
-}
-
-//sys  create(path string, mode int, perm uint32) (fd int, err error)
-func Create(path string, mode int, perm uint32) (fd int, err error) {
-       fixwd()
-       return create(path, mode, perm)
-}
-
-//sys  remove(path string) (err error)
-func Remove(path string) error {
-       fixwd()
-       return remove(path)
-}
-
-//sys  stat(path string, edir []byte) (n int, err error)
-func Stat(path string, edir []byte) (n int, err error) {
-       fixwd()
-       return stat(path, edir)
-}
-
-//sys  bind(name string, old string, flag int) (err error)
-func Bind(name string, old string, flag int) (err error) {
-       fixwd()
-       return bind(name, old, flag)
-}
-
-//sys  mount(fd int, afd int, old string, flag int, aname string) (err error)
-func Mount(fd int, afd int, old string, flag int, aname string) (err error) {
-       fixwd()
-       return mount(fd, afd, old, flag, aname)
-}
-
-//sys  wstat(path string, edir []byte) (err error)
-func Wstat(path string, edir []byte) (err error) {
-       fixwd()
-       return wstat(path, edir)
-}
-
-//sys  chdir(path string) (err error)
-//sys  Dup(oldfd int, newfd int) (fd int, err error)
-//sys  Pread(fd int, p []byte, offset int64) (n int, err error)
-//sys  Pwrite(fd int, p []byte, offset int64) (n int, err error)
-//sys  Close(fd int) (err error)
-//sys  Fstat(fd int, edir []byte) (n int, err error)
-//sys  Fwstat(fd int, edir []byte) (err error)
diff --git a/vendor/golang.org/x/sys/plan9/syscall_test.go b/vendor/golang.org/x/sys/plan9/syscall_test.go
deleted file mode 100644 (file)
index 8f829ba..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2013 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build plan9
-
-package plan9_test
-
-import (
-       "testing"
-
-       "golang.org/x/sys/plan9"
-)
-
-func testSetGetenv(t *testing.T, key, value string) {
-       err := plan9.Setenv(key, value)
-       if err != nil {
-               t.Fatalf("Setenv failed to set %q: %v", value, err)
-       }
-       newvalue, found := plan9.Getenv(key)
-       if !found {
-               t.Fatalf("Getenv failed to find %v variable (want value %q)", key, value)
-       }
-       if newvalue != value {
-               t.Fatalf("Getenv(%v) = %q; want %q", key, newvalue, value)
-       }
-}
-
-func TestEnv(t *testing.T) {
-       testSetGetenv(t, "TESTENV", "AVALUE")
-       // make sure TESTENV gets set to "", not deleted
-       testSetGetenv(t, "TESTENV", "")
-}
diff --git a/vendor/golang.org/x/sys/plan9/zsyscall_plan9_386.go b/vendor/golang.org/x/sys/plan9/zsyscall_plan9_386.go
deleted file mode 100644 (file)
index b35598a..0000000
+++ /dev/null
@@ -1,292 +0,0 @@
-// mksyscall.pl -l32 -plan9 syscall_plan9.go
-// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
-
-package plan9
-
-import "unsafe"
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func fd2path(fd int, buf []byte) (err error) {
-       var _p0 unsafe.Pointer
-       if len(buf) > 0 {
-               _p0 = unsafe.Pointer(&buf[0])
-       } else {
-               _p0 = unsafe.Pointer(&_zero)
-       }
-       r0, _, e1 := Syscall(SYS_FD2PATH, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func pipe(p *[2]int32) (err error) {
-       r0, _, e1 := Syscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func await(s []byte) (n int, err error) {
-       var _p0 unsafe.Pointer
-       if len(s) > 0 {
-               _p0 = unsafe.Pointer(&s[0])
-       } else {
-               _p0 = unsafe.Pointer(&_zero)
-       }
-       r0, _, e1 := Syscall(SYS_AWAIT, uintptr(_p0), uintptr(len(s)), 0)
-       n = int(r0)
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func open(path string, mode int) (fd int, err error) {
-       var _p0 *byte
-       _p0, err = BytePtrFromString(path)
-       if err != nil {
-               return
-       }
-       r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-       use(unsafe.Pointer(_p0))
-       fd = int(r0)
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func create(path string, mode int, perm uint32) (fd int, err error) {
-       var _p0 *byte
-       _p0, err = BytePtrFromString(path)
-       if err != nil {
-               return
-       }
-       r0, _, e1 := Syscall(SYS_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
-       use(unsafe.Pointer(_p0))
-       fd = int(r0)
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func remove(path string) (err error) {
-       var _p0 *byte
-       _p0, err = BytePtrFromString(path)
-       if err != nil {
-               return
-       }
-       r0, _, e1 := Syscall(SYS_REMOVE, uintptr(unsafe.Pointer(_p0)), 0, 0)
-       use(unsafe.Pointer(_p0))
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func stat(path string, edir []byte) (n int, err error) {
-       var _p0 *byte
-       _p0, err = BytePtrFromString(path)
-       if err != nil {
-               return
-       }
-       var _p1 unsafe.Pointer
-       if len(edir) > 0 {
-               _p1 = unsafe.Pointer(&edir[0])
-       } else {
-               _p1 = unsafe.Pointer(&_zero)
-       }
-       r0, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(edir)))
-       use(unsafe.Pointer(_p0))
-       n = int(r0)
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func bind(name string, old string, flag int) (err error) {
-       var _p0 *byte
-       _p0, err = BytePtrFromString(name)
-       if err != nil {
-               return
-       }
-       var _p1 *byte
-       _p1, err = BytePtrFromString(old)
-       if err != nil {
-               return
-       }
-       r0, _, e1 := Syscall(SYS_BIND, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flag))
-       use(unsafe.Pointer(_p0))
-       use(unsafe.Pointer(_p1))
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func mount(fd int, afd int, old string, flag int, aname string) (err error) {
-       var _p0 *byte
-       _p0, err = BytePtrFromString(old)
-       if err != nil {
-               return
-       }
-       var _p1 *byte
-       _p1, err = BytePtrFromString(aname)
-       if err != nil {
-               return
-       }
-       r0, _, e1 := Syscall6(SYS_MOUNT, uintptr(fd), uintptr(afd), uintptr(unsafe.Pointer(_p0)), uintptr(flag), uintptr(unsafe.Pointer(_p1)), 0)
-       use(unsafe.Pointer(_p0))
-       use(unsafe.Pointer(_p1))
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func wstat(path string, edir []byte) (err error) {
-       var _p0 *byte
-       _p0, err = BytePtrFromString(path)
-       if err != nil {
-               return
-       }
-       var _p1 unsafe.Pointer
-       if len(edir) > 0 {
-               _p1 = unsafe.Pointer(&edir[0])
-       } else {
-               _p1 = unsafe.Pointer(&_zero)
-       }
-       r0, _, e1 := Syscall(SYS_WSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(edir)))
-       use(unsafe.Pointer(_p0))
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func chdir(path string) (err error) {
-       var _p0 *byte
-       _p0, err = BytePtrFromString(path)
-       if err != nil {
-               return
-       }
-       r0, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-       use(unsafe.Pointer(_p0))
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Dup(oldfd int, newfd int) (fd int, err error) {
-       r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), uintptr(newfd), 0)
-       fd = int(r0)
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Pread(fd int, p []byte, offset int64) (n int, err error) {
-       var _p0 unsafe.Pointer
-       if len(p) > 0 {
-               _p0 = unsafe.Pointer(&p[0])
-       } else {
-               _p0 = unsafe.Pointer(&_zero)
-       }
-       r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
-       n = int(r0)
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
-       var _p0 unsafe.Pointer
-       if len(p) > 0 {
-               _p0 = unsafe.Pointer(&p[0])
-       } else {
-               _p0 = unsafe.Pointer(&_zero)
-       }
-       r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
-       n = int(r0)
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Close(fd int) (err error) {
-       r0, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fstat(fd int, edir []byte) (n int, err error) {
-       var _p0 unsafe.Pointer
-       if len(edir) > 0 {
-               _p0 = unsafe.Pointer(&edir[0])
-       } else {
-               _p0 = unsafe.Pointer(&_zero)
-       }
-       r0, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(_p0), uintptr(len(edir)))
-       n = int(r0)
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fwstat(fd int, edir []byte) (err error) {
-       var _p0 unsafe.Pointer
-       if len(edir) > 0 {
-               _p0 = unsafe.Pointer(&edir[0])
-       } else {
-               _p0 = unsafe.Pointer(&_zero)
-       }
-       r0, _, e1 := Syscall(SYS_FWSTAT, uintptr(fd), uintptr(_p0), uintptr(len(edir)))
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
diff --git a/vendor/golang.org/x/sys/plan9/zsyscall_plan9_amd64.go b/vendor/golang.org/x/sys/plan9/zsyscall_plan9_amd64.go
deleted file mode 100644 (file)
index b35598a..0000000
+++ /dev/null
@@ -1,292 +0,0 @@
-// mksyscall.pl -l32 -plan9 syscall_plan9.go
-// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
-
-package plan9
-
-import "unsafe"
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func fd2path(fd int, buf []byte) (err error) {
-       var _p0 unsafe.Pointer
-       if len(buf) > 0 {
-               _p0 = unsafe.Pointer(&buf[0])
-       } else {
-               _p0 = unsafe.Pointer(&_zero)
-       }
-       r0, _, e1 := Syscall(SYS_FD2PATH, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func pipe(p *[2]int32) (err error) {
-       r0, _, e1 := Syscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func await(s []byte) (n int, err error) {
-       var _p0 unsafe.Pointer
-       if len(s) > 0 {
-               _p0 = unsafe.Pointer(&s[0])
-       } else {
-               _p0 = unsafe.Pointer(&_zero)
-       }
-       r0, _, e1 := Syscall(SYS_AWAIT, uintptr(_p0), uintptr(len(s)), 0)
-       n = int(r0)
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func open(path string, mode int) (fd int, err error) {
-       var _p0 *byte
-       _p0, err = BytePtrFromString(path)
-       if err != nil {
-               return
-       }
-       r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-       use(unsafe.Pointer(_p0))
-       fd = int(r0)
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func create(path string, mode int, perm uint32) (fd int, err error) {
-       var _p0 *byte
-       _p0, err = BytePtrFromString(path)
-       if err != nil {
-               return
-       }
-       r0, _, e1 := Syscall(SYS_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
-       use(unsafe.Pointer(_p0))
-       fd = int(r0)
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func remove(path string) (err error) {
-       var _p0 *byte
-       _p0, err = BytePtrFromString(path)
-       if err != nil {
-               return
-       }
-       r0, _, e1 := Syscall(SYS_REMOVE, uintptr(unsafe.Pointer(_p0)), 0, 0)
-       use(unsafe.Pointer(_p0))
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func stat(path string, edir []byte) (n int, err error) {
-       var _p0 *byte
-       _p0, err = BytePtrFromString(path)
-       if err != nil {
-               return
-       }
-       var _p1 unsafe.Pointer
-       if len(edir) > 0 {
-               _p1 = unsafe.Pointer(&edir[0])
-       } else {
-               _p1 = unsafe.Pointer(&_zero)
-       }
-       r0, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(edir)))
-       use(unsafe.Pointer(_p0))
-       n = int(r0)
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func bind(name string, old string, flag int) (err error) {
-       var _p0 *byte
-       _p0, err = BytePtrFromString(name)
-       if err != nil {
-               return
-       }
-       var _p1 *byte
-       _p1, err = BytePtrFromString(old)
-       if err != nil {
-               return
-       }
-       r0, _, e1 := Syscall(SYS_BIND, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flag))
-       use(unsafe.Pointer(_p0))
-       use(unsafe.Pointer(_p1))
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func mount(fd int, afd int, old string, flag int, aname string) (err error) {
-       var _p0 *byte
-       _p0, err = BytePtrFromString(old)
-       if err != nil {
-               return
-       }
-       var _p1 *byte
-       _p1, err = BytePtrFromString(aname)
-       if err != nil {
-               return
-       }
-       r0, _, e1 := Syscall6(SYS_MOUNT, uintptr(fd), uintptr(afd), uintptr(unsafe.Pointer(_p0)), uintptr(flag), uintptr(unsafe.Pointer(_p1)), 0)
-       use(unsafe.Pointer(_p0))
-       use(unsafe.Pointer(_p1))
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func wstat(path string, edir []byte) (err error) {
-       var _p0 *byte
-       _p0, err = BytePtrFromString(path)
-       if err != nil {
-               return
-       }
-       var _p1 unsafe.Pointer
-       if len(edir) > 0 {
-               _p1 = unsafe.Pointer(&edir[0])
-       } else {
-               _p1 = unsafe.Pointer(&_zero)
-       }
-       r0, _, e1 := Syscall(SYS_WSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(edir)))
-       use(unsafe.Pointer(_p0))
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func chdir(path string) (err error) {
-       var _p0 *byte
-       _p0, err = BytePtrFromString(path)
-       if err != nil {
-               return
-       }
-       r0, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-       use(unsafe.Pointer(_p0))
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Dup(oldfd int, newfd int) (fd int, err error) {
-       r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), uintptr(newfd), 0)
-       fd = int(r0)
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Pread(fd int, p []byte, offset int64) (n int, err error) {
-       var _p0 unsafe.Pointer
-       if len(p) > 0 {
-               _p0 = unsafe.Pointer(&p[0])
-       } else {
-               _p0 = unsafe.Pointer(&_zero)
-       }
-       r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
-       n = int(r0)
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
-       var _p0 unsafe.Pointer
-       if len(p) > 0 {
-               _p0 = unsafe.Pointer(&p[0])
-       } else {
-               _p0 = unsafe.Pointer(&_zero)
-       }
-       r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
-       n = int(r0)
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Close(fd int) (err error) {
-       r0, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fstat(fd int, edir []byte) (n int, err error) {
-       var _p0 unsafe.Pointer
-       if len(edir) > 0 {
-               _p0 = unsafe.Pointer(&edir[0])
-       } else {
-               _p0 = unsafe.Pointer(&_zero)
-       }
-       r0, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(_p0), uintptr(len(edir)))
-       n = int(r0)
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Fwstat(fd int, edir []byte) (err error) {
-       var _p0 unsafe.Pointer
-       if len(edir) > 0 {
-               _p0 = unsafe.Pointer(&edir[0])
-       } else {
-               _p0 = unsafe.Pointer(&_zero)
-       }
-       r0, _, e1 := Syscall(SYS_FWSTAT, uintptr(fd), uintptr(_p0), uintptr(len(edir)))
-       if int32(r0) == -1 {
-               err = e1
-       }
-       return
-}
diff --git a/vendor/golang.org/x/sys/plan9/zsysnum_plan9.go b/vendor/golang.org/x/sys/plan9/zsysnum_plan9.go
deleted file mode 100644 (file)
index 22e8abd..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-// mksysnum_plan9.sh /opt/plan9/sys/src/libc/9syscall/sys.h
-// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-
-package plan9
-
-const (
-       SYS_SYSR1       = 0
-       SYS_BIND        = 2
-       SYS_CHDIR       = 3
-       SYS_CLOSE       = 4
-       SYS_DUP         = 5
-       SYS_ALARM       = 6
-       SYS_EXEC        = 7
-       SYS_EXITS       = 8
-       SYS_FAUTH       = 10
-       SYS_SEGBRK      = 12
-       SYS_OPEN        = 14
-       SYS_OSEEK       = 16
-       SYS_SLEEP       = 17
-       SYS_RFORK       = 19
-       SYS_PIPE        = 21
-       SYS_CREATE      = 22
-       SYS_FD2PATH     = 23
-       SYS_BRK_        = 24
-       SYS_REMOVE      = 25
-       SYS_NOTIFY      = 28
-       SYS_NOTED       = 29
-       SYS_SEGATTACH   = 30
-       SYS_SEGDETACH   = 31
-       SYS_SEGFREE     = 32
-       SYS_SEGFLUSH    = 33
-       SYS_RENDEZVOUS  = 34
-       SYS_UNMOUNT     = 35
-       SYS_SEMACQUIRE  = 37
-       SYS_SEMRELEASE  = 38
-       SYS_SEEK        = 39
-       SYS_FVERSION    = 40
-       SYS_ERRSTR      = 41
-       SYS_STAT        = 42
-       SYS_FSTAT       = 43
-       SYS_WSTAT       = 44
-       SYS_FWSTAT      = 45
-       SYS_MOUNT       = 46
-       SYS_AWAIT       = 47
-       SYS_PREAD       = 50
-       SYS_PWRITE      = 51
-       SYS_TSEMACQUIRE = 52
-       SYS_NSEC        = 53
-)
diff --git a/vendor/golang.org/x/sys/unix/creds_test.go b/vendor/golang.org/x/sys/unix/creds_test.go
deleted file mode 100644 (file)
index eaae7c3..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-// Copyright 2012 The Go Authors.  All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build linux
-
-package unix_test
-
-import (
-       "bytes"
-       "net"
-       "os"
-       "syscall"
-       "testing"
-
-       "golang.org/x/sys/unix"
-)
-
-// TestSCMCredentials tests the sending and receiving of credentials
-// (PID, UID, GID) in an ancillary message between two UNIX
-// sockets. The SO_PASSCRED socket option is enabled on the sending
-// socket for this to work.
-func TestSCMCredentials(t *testing.T) {
-       fds, err := unix.Socketpair(unix.AF_LOCAL, unix.SOCK_STREAM, 0)
-       if err != nil {
-               t.Fatalf("Socketpair: %v", err)
-       }
-       defer unix.Close(fds[0])
-       defer unix.Close(fds[1])
-
-       err = unix.SetsockoptInt(fds[0], unix.SOL_SOCKET, unix.SO_PASSCRED, 1)
-       if err != nil {
-               t.Fatalf("SetsockoptInt: %v", err)
-       }
-
-       srvFile := os.NewFile(uintptr(fds[0]), "server")
-       defer srvFile.Close()
-       srv, err := net.FileConn(srvFile)
-       if err != nil {
-               t.Errorf("FileConn: %v", err)
-               return
-       }
-       defer srv.Close()
-
-       cliFile := os.NewFile(uintptr(fds[1]), "client")
-       defer cliFile.Close()
-       cli, err := net.FileConn(cliFile)
-       if err != nil {
-               t.Errorf("FileConn: %v", err)
-               return
-       }
-       defer cli.Close()
-
-       var ucred unix.Ucred
-       if os.Getuid() != 0 {
-               ucred.Pid = int32(os.Getpid())
-               ucred.Uid = 0
-               ucred.Gid = 0
-               oob := unix.UnixCredentials(&ucred)
-               _, _, err := cli.(*net.UnixConn).WriteMsgUnix(nil, oob, nil)
-               if op, ok := err.(*net.OpError); ok {
-                       err = op.Err
-               }
-               if sys, ok := err.(*os.SyscallError); ok {
-                       err = sys.Err
-               }
-               if err != syscall.EPERM {
-                       t.Fatalf("WriteMsgUnix failed with %v, want EPERM", err)
-               }
-       }
-
-       ucred.Pid = int32(os.Getpid())
-       ucred.Uid = uint32(os.Getuid())
-       ucred.Gid = uint32(os.Getgid())
-       oob := unix.UnixCredentials(&ucred)
-
-       // this is going to send a dummy byte
-       n, oobn, err := cli.(*net.UnixConn).WriteMsgUnix(nil, oob, nil)
-       if err != nil {
-               t.Fatalf("WriteMsgUnix: %v", err)
-       }
-       if n != 0 {
-               t.Fatalf("WriteMsgUnix n = %d, want 0", n)
-       }
-       if oobn != len(oob) {
-               t.Fatalf("WriteMsgUnix oobn = %d, want %d", oobn, len(oob))
-       }
-
-       oob2 := make([]byte, 10*len(oob))
-       n, oobn2, flags, _, err := srv.(*net.UnixConn).ReadMsgUnix(nil, oob2)
-       if err != nil {
-               t.Fatalf("ReadMsgUnix: %v", err)
-       }
-       if flags != 0 {
-               t.Fatalf("ReadMsgUnix flags = 0x%x, want 0", flags)
-       }
-       if n != 1 {
-               t.Fatalf("ReadMsgUnix n = %d, want 1 (dummy byte)", n)
-       }
-       if oobn2 != oobn {
-               // without SO_PASSCRED set on the socket, ReadMsgUnix will
-               // return zero oob bytes
-               t.Fatalf("ReadMsgUnix oobn = %d, want %d", oobn2, oobn)
-       }
-       oob2 = oob2[:oobn2]
-       if !bytes.Equal(oob, oob2) {
-               t.Fatal("ReadMsgUnix oob bytes don't match")
-       }
-
-       scm, err := unix.ParseSocketControlMessage(oob2)
-       if err != nil {
-               t.Fatalf("ParseSocketControlMessage: %v", err)
-       }
-       newUcred, err := unix.ParseUnixCredentials(&scm[0])
-       if err != nil {
-               t.Fatalf("ParseUnixCredentials: %v", err)
-       }
-       if *newUcred != ucred {
-               t.Fatalf("ParseUnixCredentials = %+v, want %+v", newUcred, ucred)
-       }
-}
diff --git a/vendor/golang.org/x/sys/unix/export_test.go b/vendor/golang.org/x/sys/unix/export_test.go
deleted file mode 100644 (file)
index b4fdd97..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright 2015 The Go Authors.  All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build darwin dragonfly freebsd linux netbsd openbsd solaris
-
-package unix
-
-var Itoa = itoa
diff --git a/vendor/golang.org/x/sys/unix/linux/Dockerfile b/vendor/golang.org/x/sys/unix/linux/Dockerfile
deleted file mode 100644 (file)
index 4397143..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-FROM ubuntu:16.04
-
-# Dependencies to get the git sources and go binaries
-RUN apt-get update && apt-get install -y \
-        curl \
-        git \
-    && rm -rf /var/lib/apt/lists/*
-
-# Get the git sources. If not cached, this takes O(5 minutes).
-WORKDIR /git
-RUN git config --global advice.detachedHead false
-# Linux Kernel: Released 19 Feb 2017
-RUN git clone --branch v4.10 --depth 1 https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux
-# GNU C library: Released 05 Feb 2017 (we should try to get a secure way to clone this)
-RUN git clone --branch glibc-2.25 --depth 1 git://sourceware.org/git/glibc.git
-
-# Get Go 1.8 (https://github.com/docker-library/golang/blob/master/1.8/Dockerfile)
-ENV GOLANG_VERSION 1.8
-ENV GOLANG_DOWNLOAD_URL https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz
-ENV GOLANG_DOWNLOAD_SHA256 53ab94104ee3923e228a2cb2116e5e462ad3ebaeea06ff04463479d7f12d27ca
-
-RUN curl -fsSL "$GOLANG_DOWNLOAD_URL" -o golang.tar.gz \
-    && echo "$GOLANG_DOWNLOAD_SHA256  golang.tar.gz" | sha256sum -c - \
-    && tar -C /usr/local -xzf golang.tar.gz \
-    && rm golang.tar.gz
-
-ENV PATH /usr/local/go/bin:$PATH
-
-# Linux and Glibc build dependencies
-RUN apt-get update && apt-get install -y \
-        gawk make python \
-        gcc gcc-multilib \
-        gettext  texinfo \
-    && rm -rf /var/lib/apt/lists/*
-# Emulator and cross compilers
-RUN apt-get update && apt-get install -y \
-        qemu \
-        gcc-aarch64-linux-gnu       gcc-arm-linux-gnueabi     \
-        gcc-mips-linux-gnu          gcc-mips64-linux-gnuabi64 \
-        gcc-mips64el-linux-gnuabi64 gcc-mipsel-linux-gnu      \
-        gcc-powerpc64-linux-gnu     gcc-powerpc64le-linux-gnu \
-        gcc-s390x-linux-gnu         gcc-sparc64-linux-gnu     \
-    && rm -rf /var/lib/apt/lists/*
-
-# Let the scripts know they are in the docker environment
-ENV GOLANG_SYS_BUILD docker
-WORKDIR /build
-ENTRYPOINT ["go", "run", "linux/mkall.go", "/git/linux", "/git/glibc"]
diff --git a/vendor/golang.org/x/sys/unix/linux/mkall.go b/vendor/golang.org/x/sys/unix/linux/mkall.go
deleted file mode 100644 (file)
index 429754f..0000000
+++ /dev/null
@@ -1,379 +0,0 @@
-// Copyright 2017 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// linux/mkall.go - Generates all Linux zsysnum, zsyscall, zerror, and ztype
-// files for all 11 linux architectures supported by the go compiler. See
-// README.md for more information about the build system.
-
-// To run it you must have a git checkout of the Linux kernel and glibc. Once
-// the appropriate sources are ready, the program is run as:
-//     go run linux/mkall.go <linux_dir> <glibc_dir>
-
-// +build ignore
-
-package main
-
-import (
-       "fmt"
-       "os"
-       "os/exec"
-       "path/filepath"
-       "runtime"
-       "strings"
-)
-
-// These will be paths to the appropriate source directories.
-var LinuxDir string
-var GlibcDir string
-
-const TempDir = "/tmp"
-const IncludeDir = TempDir + "/include" // To hold our C headers
-const BuildDir = TempDir + "/build"     // To hold intermediate build files
-
-const GOOS = "linux"       // Only for Linux targets
-const BuildArch = "amd64"  // Must be built on this architecture
-const MinKernel = "2.6.23" // https://golang.org/doc/install#requirements
-
-type target struct {
-       GoArch     string // Architecture name according to Go
-       LinuxArch  string // Architecture name according to the Linux Kernel
-       GNUArch    string // Architecture name according to GNU tools (https://wiki.debian.org/Multiarch/Tuples)
-       BigEndian  bool   // Default Little Endian
-       SignedChar bool   // Is -fsigned-char needed (default no)
-       Bits       int
-}
-
-// List of the 11 Linux targets supported by the go compiler. sparc64 is not
-// currently supported, though a port is in progress.
-var targets = []target{
-       {
-               GoArch:    "386",
-               LinuxArch: "x86",
-               GNUArch:   "i686-linux-gnu", // Note "i686" not "i386"
-               Bits:      32,
-       },
-       {
-               GoArch:    "amd64",
-               LinuxArch: "x86",
-               GNUArch:   "x86_64-linux-gnu",
-               Bits:      64,
-       },
-       {
-               GoArch:     "arm64",
-               LinuxArch:  "arm64",
-               GNUArch:    "aarch64-linux-gnu",
-               SignedChar: true,
-               Bits:       64,
-       },
-       {
-               GoArch:    "arm",
-               LinuxArch: "arm",
-               GNUArch:   "arm-linux-gnueabi",
-               Bits:      32,
-       },
-       {
-               GoArch:    "mips",
-               LinuxArch: "mips",
-               GNUArch:   "mips-linux-gnu",
-               BigEndian: true,
-               Bits:      32,
-       },
-       {
-               GoArch:    "mipsle",
-               LinuxArch: "mips",
-               GNUArch:   "mipsel-linux-gnu",
-               Bits:      32,
-       },
-       {
-               GoArch:    "mips64",
-               LinuxArch: "mips",
-               GNUArch:   "mips64-linux-gnuabi64",
-               BigEndian: true,
-               Bits:      64,
-       },
-       {
-               GoArch:    "mips64le",
-               LinuxArch: "mips",
-               GNUArch:   "mips64el-linux-gnuabi64",
-               Bits:      64,
-       },
-       {
-               GoArch:    "ppc64",
-               LinuxArch: "powerpc",
-               GNUArch:   "powerpc64-linux-gnu",
-               BigEndian: true,
-               Bits:      64,
-       },
-       {
-               GoArch:    "ppc64le",
-               LinuxArch: "powerpc",
-               GNUArch:   "powerpc64le-linux-gnu",
-               Bits:      64,
-       },
-       {
-               GoArch:     "s390x",
-               LinuxArch:  "s390",
-               GNUArch:    "s390x-linux-gnu",
-               BigEndian:  true,
-               SignedChar: true,
-               Bits:       64,
-       },
-       // {
-       //      GoArch:    "sparc64",
-       //      LinuxArch: "sparc",
-       //      GNUArch:   "sparc64-linux-gnu",
-       //      BigEndian: true,
-       //      Bits:      64,
-       // },
-}
-
-func main() {
-       if runtime.GOOS != GOOS || runtime.GOARCH != BuildArch {
-               fmt.Printf("Build system has GOOS_GOARCH = %s_%s, need %s_%s\n",
-                       runtime.GOOS, runtime.GOARCH, GOOS, BuildArch)
-               return
-       }
-
-       // Check that we are using the new build system if we should
-       if os.Getenv("GOLANG_SYS_BUILD") != "docker" {
-               fmt.Println("In the new build system, mkall.go should not be called directly.")
-               fmt.Println("See README.md")
-               return
-       }
-
-       // Parse the command line options
-       if len(os.Args) != 3 {
-               fmt.Println("USAGE: go run linux/mkall.go <linux_dir> <glibc_dir>")
-               return
-       }
-       LinuxDir = os.Args[1]
-       GlibcDir = os.Args[2]
-
-       for _, t := range targets {
-               fmt.Printf("----- GENERATING: %s -----\n", t.GoArch)
-               if err := t.generateFiles(); err != nil {
-                       fmt.Printf("%v\n***** FAILURE:    %s *****\n\n", err, t.GoArch)
-               } else {
-                       fmt.Printf("----- SUCCESS:    %s -----\n\n", t.GoArch)
-               }
-       }
-}
-
-// Makes an exec.Cmd with Stderr attached to os.Stderr
-func makeCommand(name string, args ...string) *exec.Cmd {
-       cmd := exec.Command(name, args...)
-       cmd.Stderr = os.Stderr
-       return cmd
-}
-
-// Runs the command, pipes output to a formatter, pipes that to an output file.
-func (t *target) commandFormatOutput(formatter string, outputFile string,
-       name string, args ...string) (err error) {
-       mainCmd := makeCommand(name, args...)
-
-       fmtCmd := makeCommand(formatter)
-       if formatter == "mkpost" {
-               fmtCmd = makeCommand("go", "run", "mkpost.go")
-               // Set GOARCH_TARGET so mkpost knows what GOARCH is..
-               fmtCmd.Env = append(os.Environ(), "GOARCH_TARGET="+t.GoArch)
-               // Set GOARCH to host arch for mkpost, so it can run natively.
-               for i, s := range fmtCmd.Env {
-                       if strings.HasPrefix(s, "GOARCH=") {
-                               fmtCmd.Env[i] = "GOARCH=" + BuildArch
-                       }
-               }
-       }
-
-       // mainCmd | fmtCmd > outputFile
-       if fmtCmd.Stdin, err = mainCmd.StdoutPipe(); err != nil {
-               return
-       }
-       if fmtCmd.Stdout, err = os.Create(outputFile); err != nil {
-               return
-       }
-
-       // Make sure the formatter eventually closes
-       if err = fmtCmd.Start(); err != nil {
-               return
-       }
-       defer func() {
-               fmtErr := fmtCmd.Wait()
-               if err == nil {
-                       err = fmtErr
-               }
-       }()
-
-       return mainCmd.Run()
-}
-
-// Generates all the files for a Linux target
-func (t *target) generateFiles() error {
-       // Setup environment variables
-       os.Setenv("GOOS", GOOS)
-       os.Setenv("GOARCH", t.GoArch)
-
-       // Get appropriate compiler and emulator (unless on x86)
-       if t.LinuxArch != "x86" {
-               // Check/Setup cross compiler
-               compiler := t.GNUArch + "-gcc"
-               if _, err := exec.LookPath(compiler); err != nil {
-                       return err
-               }
-               os.Setenv("CC", compiler)
-
-               // Check/Setup emulator (usually first component of GNUArch)
-               qemuArchName := t.GNUArch[:strings.Index(t.GNUArch, "-")]
-               if t.LinuxArch == "powerpc" {
-                       qemuArchName = t.GoArch
-               }
-               os.Setenv("GORUN", "qemu-"+qemuArchName)
-       } else {
-               os.Setenv("CC", "gcc")
-       }
-
-       // Make the include directory and fill it with headers
-       if err := os.MkdirAll(IncludeDir, os.ModePerm); err != nil {
-               return err
-       }
-       defer os.RemoveAll(IncludeDir)
-       if err := t.makeHeaders(); err != nil {
-               return fmt.Errorf("could not make header files: %v", err)
-       }
-       fmt.Println("header files generated")
-
-       // Make each of the four files
-       if err := t.makeZSysnumFile(); err != nil {
-               return fmt.Errorf("could not make zsysnum file: %v", err)
-       }
-       fmt.Println("zsysnum file generated")
-
-       if err := t.makeZSyscallFile(); err != nil {
-               return fmt.Errorf("could not make zsyscall file: %v", err)
-       }
-       fmt.Println("zsyscall file generated")
-
-       if err := t.makeZTypesFile(); err != nil {
-               return fmt.Errorf("could not make ztypes file: %v", err)
-       }
-       fmt.Println("ztypes file generated")
-
-       if err := t.makeZErrorsFile(); err != nil {
-               return fmt.Errorf("could not make zerrors file: %v", err)
-       }
-       fmt.Println("zerrors file generated")
-
-       return nil
-}
-
-// Create the Linux and glibc headers in the include directory.
-func (t *target) makeHeaders() error {
-       // Make the Linux headers we need for this architecture
-       linuxMake := makeCommand("make", "headers_install", "ARCH="+t.LinuxArch, "INSTALL_HDR_PATH="+TempDir)
-       linuxMake.Dir = LinuxDir
-       if err := linuxMake.Run(); err != nil {
-               return err
-       }
-
-       // A Temporary build directory for glibc
-       if err := os.MkdirAll(BuildDir, os.ModePerm); err != nil {
-               return err
-       }
-       defer os.RemoveAll(BuildDir)
-
-       // Make the glibc headers we need for this architecture
-       confScript := filepath.Join(GlibcDir, "configure")
-       glibcConf := makeCommand(confScript, "--prefix="+TempDir, "--host="+t.GNUArch, "--enable-kernel="+MinKernel)
-       glibcConf.Dir = BuildDir
-       if err := glibcConf.Run(); err != nil {
-               return err
-       }
-       glibcMake := makeCommand("make", "install-headers")
-       glibcMake.Dir = BuildDir
-       if err := glibcMake.Run(); err != nil {
-               return err
-       }
-       // We only need an empty stubs file
-       stubsFile := filepath.Join(IncludeDir, "gnu/stubs.h")
-       if file, err := os.Create(stubsFile); err != nil {
-               return err
-       } else {
-               file.Close()
-       }
-
-       return nil
-}
-
-// makes the zsysnum_linux_$GOARCH.go file
-func (t *target) makeZSysnumFile() error {
-       zsysnumFile := fmt.Sprintf("zsysnum_linux_%s.go", t.GoArch)
-       unistdFile := filepath.Join(IncludeDir, "asm/unistd.h")
-
-       args := append(t.cFlags(), unistdFile)
-       return t.commandFormatOutput("gofmt", zsysnumFile, "linux/mksysnum.pl", args...)
-}
-
-// makes the zsyscall_linux_$GOARCH.go file
-func (t *target) makeZSyscallFile() error {
-       zsyscallFile := fmt.Sprintf("zsyscall_linux_%s.go", t.GoArch)
-       // Find the correct architecture syscall file (might end with x.go)
-       archSyscallFile := fmt.Sprintf("syscall_linux_%s.go", t.GoArch)
-       if _, err := os.Stat(archSyscallFile); os.IsNotExist(err) {
-               shortArch := strings.TrimSuffix(t.GoArch, "le")
-               archSyscallFile = fmt.Sprintf("syscall_linux_%sx.go", shortArch)
-       }
-
-       args := append(t.mksyscallFlags(), "-tags", "linux,"+t.GoArch,
-               "syscall_linux.go", archSyscallFile)
-       return t.commandFormatOutput("gofmt", zsyscallFile, "./mksyscall.pl", args...)
-}
-
-// makes the zerrors_linux_$GOARCH.go file
-func (t *target) makeZErrorsFile() error {
-       zerrorsFile := fmt.Sprintf("zerrors_linux_%s.go", t.GoArch)
-
-       return t.commandFormatOutput("gofmt", zerrorsFile, "./mkerrors.sh", t.cFlags()...)
-}
-
-// makes the ztypes_linux_$GOARCH.go file
-func (t *target) makeZTypesFile() error {
-       ztypesFile := fmt.Sprintf("ztypes_linux_%s.go", t.GoArch)
-
-       args := []string{"tool", "cgo", "-godefs", "--"}
-       args = append(args, t.cFlags()...)
-       args = append(args, "linux/types.go")
-       return t.commandFormatOutput("mkpost", ztypesFile, "go", args...)
-}
-
-// Flags that should be given to gcc and cgo for this target
-func (t *target) cFlags() []string {
-       // Compile statically to avoid cross-architecture dynamic linking.
-       flags := []string{"-Wall", "-Werror", "-static", "-I" + IncludeDir}
-
-       // Architecture-specific flags
-       if t.SignedChar {
-               flags = append(flags, "-fsigned-char")
-       }
-       if t.LinuxArch == "x86" {
-               flags = append(flags, fmt.Sprintf("-m%d", t.Bits))
-       }
-
-       return flags
-}
-
-// Flags that should be given to mksyscall for this target
-func (t *target) mksyscallFlags() (flags []string) {
-       if t.Bits == 32 {
-               if t.BigEndian {
-                       flags = append(flags, "-b32")
-               } else {
-                       flags = append(flags, "-l32")
-               }
-       }
-
-       // This flag menas a 64-bit value should use (even, odd)-pair.
-       if t.GoArch == "arm" || (t.LinuxArch == "mips" && t.Bits == 32) {
-               flags = append(flags, "-arm")
-       }
-       return
-}
diff --git a/vendor/golang.org/x/sys/unix/linux/mksysnum.pl b/vendor/golang.org/x/sys/unix/linux/mksysnum.pl
deleted file mode 100755 (executable)
index 63fd800..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-#!/usr/bin/env perl
-# Copyright 2009 The Go Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file.
-
-use strict;
-
-if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") {
-       print STDERR "GOARCH or GOOS not defined in environment\n";
-       exit 1;
-}
-
-# Check that we are using the new build system if we should
-if($ENV{'GOLANG_SYS_BUILD'} ne "docker") {
-       print STDERR "In the new build system, mksysnum should not be called directly.\n";
-       print STDERR "See README.md\n";
-       exit 1;
-}
-
-my $command = "$0 ". join(' ', @ARGV);
-
-print <<EOF;
-// $command
-// Code generated by the command above; see README.md. DO NOT EDIT.
-
-// +build $ENV{'GOARCH'},$ENV{'GOOS'}
-
-package unix
-
-const(
-EOF
-
-my $offset = 0;
-
-sub fmt {
-       my ($name, $num) = @_;
-       if($num > 999){
-               # ignore deprecated syscalls that are no longer implemented
-               # https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/include/uapi/asm-generic/unistd.h?id=refs/heads/master#n716
-               return;
-       }
-       $name =~ y/a-z/A-Z/;
-       $num = $num + $offset;
-       print " SYS_$name = $num;\n";
-}
-
-my $prev;
-open(CC, "$ENV{'CC'} -E -dD @ARGV |") || die "can't run $ENV{'CC'}";
-while(<CC>){
-       if(/^#define __NR_Linux\s+([0-9]+)/){
-               # mips/mips64: extract offset
-               $offset = $1;
-       }
-       elsif(/^#define __NR(\w*)_SYSCALL_BASE\s+([0-9]+)/){
-               # arm: extract offset
-               $offset = $1;
-       }
-       elsif(/^#define __NR_syscalls\s+/) {
-               # ignore redefinitions of __NR_syscalls
-       }
-       elsif(/^#define __NR_(\w*)Linux_syscalls\s+/) {
-               # mips/mips64: ignore definitions about the number of syscalls
-       }
-       elsif(/^#define __NR_(\w+)\s+([0-9]+)/){
-               $prev = $2;
-               fmt($1, $2);
-       }
-       elsif(/^#define __NR3264_(\w+)\s+([0-9]+)/){
-               $prev = $2;
-               fmt($1, $2);
-       }
-       elsif(/^#define __NR_(\w+)\s+\(\w+\+\s*([0-9]+)\)/){
-               fmt($1, $prev+$2)
-       }
-       elsif(/^#define __NR_(\w+)\s+\(__NR_Linux \+ ([0-9]+)/){
-               fmt($1, $2);
-       }
-       elsif(/^#define __NR_(\w+)\s+\(__NR_SYSCALL_BASE \+ ([0-9]+)/){
-               fmt($1, $2);
-       }
-}
-
-print <<EOF;
-)
-EOF
diff --git a/vendor/golang.org/x/sys/unix/linux/types.go b/vendor/golang.org/x/sys/unix/linux/types.go
deleted file mode 100644 (file)
index d3bf24a..0000000
+++ /dev/null
@@ -1,536 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build ignore
-
-/*
-Input to cgo -godefs.  See README.md
-*/
-
-// +godefs map struct_in_addr [4]byte /* in_addr */
-// +godefs map struct_in6_addr [16]byte /* in6_addr */
-
-package unix
-
-/*
-#define _LARGEFILE_SOURCE
-#define _LARGEFILE64_SOURCE
-#define _FILE_OFFSET_BITS 64
-#define _GNU_SOURCE
-
-#include <dirent.h>
-#include <netinet/in.h>
-#include <netinet/tcp.h>
-#include <netpacket/packet.h>
-#include <poll.h>
-#include <signal.h>
-#include <stdio.h>
-#include <sys/epoll.h>
-#include <sys/inotify.h>
-#include <sys/mman.h>
-#include <sys/mount.h>
-#include <sys/param.h>
-#include <sys/ptrace.h>
-#include <sys/resource.h>
-#include <sys/select.h>
-#include <sys/signal.h>
-#include <sys/statfs.h>
-#include <sys/sysinfo.h>
-#include <sys/time.h>
-#include <sys/times.h>
-#include <sys/timex.h>
-#include <sys/un.h>
-#include <sys/user.h>
-#include <sys/utsname.h>
-#include <sys/wait.h>
-#include <linux/filter.h>
-#include <linux/netlink.h>
-#include <linux/rtnetlink.h>
-#include <linux/icmpv6.h>
-#include <asm/termbits.h>
-#include <asm/ptrace.h>
-#include <time.h>
-#include <unistd.h>
-#include <ustat.h>
-#include <utime.h>
-#include <linux/can.h>
-#include <linux/if_alg.h>
-#include <linux/fs.h>
-#include <linux/vm_sockets.h>
-
-// On mips64, the glibc stat and kernel stat do not agree
-#if (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI64)
-
-// Use the stat defined by the kernel with a few modifications. These are:
-//     * The time fields (like st_atime and st_atimensec) use the timespec
-//       struct (like st_atim) for consitancy with the glibc fields.
-//     * The padding fields get different names to not break compatibility.
-//     * st_blocks is signed, again for compatibility.
-struct stat {
-       unsigned int            st_dev;
-       unsigned int            st_pad1[3]; // Reserved for st_dev expansion
-
-       unsigned long           st_ino;
-
-       mode_t                  st_mode;
-       __u32                   st_nlink;
-
-       uid_t                   st_uid;
-       gid_t                   st_gid;
-
-       unsigned int            st_rdev;
-       unsigned int            st_pad2[3]; // Reserved for st_rdev expansion
-
-       off_t                   st_size;
-
-       // These are declared as speperate fields in the kernel. Here we use
-       // the timespec struct for consistancy with the other stat structs.
-       struct timespec         st_atim;
-       struct timespec         st_mtim;
-       struct timespec         st_ctim;
-
-       unsigned int            st_blksize;
-       unsigned int            st_pad4;
-
-       long                    st_blocks;
-};
-
-// These are needed because we do not include fcntl.h or sys/types.h
-#include <linux/fcntl.h>
-#include <linux/fadvise.h>
-
-#else
-
-// Use the stat defined by glibc
-#include <fcntl.h>
-#include <sys/types.h>
-
-#endif
-
-// Certain constants and structs are missing from the fs/crypto UAPI
-#define FS_MAX_KEY_SIZE                 64
-struct fscrypt_key {
-  __u32 mode;
-  __u8 raw[FS_MAX_KEY_SIZE];
-  __u32 size;
-};
-
-#ifdef TCSETS2
-// On systems that have "struct termios2" use this as type Termios.
-typedef struct termios2 termios_t;
-#else
-typedef struct termios termios_t;
-#endif
-
-enum {
-       sizeofPtr = sizeof(void*),
-};
-
-union sockaddr_all {
-       struct sockaddr s1;     // this one gets used for fields
-       struct sockaddr_in s2;  // these pad it out
-       struct sockaddr_in6 s3;
-       struct sockaddr_un s4;
-       struct sockaddr_ll s5;
-       struct sockaddr_nl s6;
-};
-
-struct sockaddr_any {
-       struct sockaddr addr;
-       char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];
-};
-
-// copied from /usr/include/bluetooth/hci.h
-struct sockaddr_hci {
-        sa_family_t     hci_family;
-        unsigned short  hci_dev;
-        unsigned short  hci_channel;
-};;
-
-// copied from /usr/include/linux/un.h
-struct my_sockaddr_un {
-       sa_family_t sun_family;
-#if defined(__ARM_EABI__) || defined(__powerpc64__)
-       // on ARM char is by default unsigned
-       signed char sun_path[108];
-#else
-       char sun_path[108];
-#endif
-};
-
-#ifdef __ARM_EABI__
-typedef struct user_regs PtraceRegs;
-#elif defined(__aarch64__)
-typedef struct user_pt_regs PtraceRegs;
-#elif defined(__powerpc64__)
-typedef struct pt_regs PtraceRegs;
-#elif defined(__mips__)
-typedef struct user PtraceRegs;
-#elif defined(__s390x__)
-typedef struct _user_regs_struct PtraceRegs;
-#elif defined(__sparc__)
-#include <asm/ptrace.h>
-typedef struct pt_regs PtraceRegs;
-#else
-typedef struct user_regs_struct PtraceRegs;
-#endif
-
-#if defined(__s390x__)
-typedef struct _user_psw_struct ptracePsw;
-typedef struct _user_fpregs_struct ptraceFpregs;
-typedef struct _user_per_struct ptracePer;
-#else
-typedef struct {} ptracePsw;
-typedef struct {} ptraceFpregs;
-typedef struct {} ptracePer;
-#endif
-
-// The real epoll_event is a union, and godefs doesn't handle it well.
-struct my_epoll_event {
-       uint32_t events;
-#if defined(__ARM_EABI__) || defined(__aarch64__) || (defined(__mips__) && _MIPS_SIM == _ABIO32)
-       // padding is not specified in linux/eventpoll.h but added to conform to the
-       // alignment requirements of EABI
-       int32_t padFd;
-#elif defined(__powerpc64__) || defined(__s390x__) || defined(__sparc__)
-       int32_t _padFd;
-#endif
-       int32_t fd;
-       int32_t pad;
-};
-
-*/
-import "C"
-
-// Machine characteristics; for internal use.
-
-const (
-       sizeofPtr      = C.sizeofPtr
-       sizeofShort    = C.sizeof_short
-       sizeofInt      = C.sizeof_int
-       sizeofLong     = C.sizeof_long
-       sizeofLongLong = C.sizeof_longlong
-       PathMax        = C.PATH_MAX
-)
-
-// Basic types
-
-type (
-       _C_short     C.short
-       _C_int       C.int
-       _C_long      C.long
-       _C_long_long C.longlong
-)
-
-// Time
-
-type Timespec C.struct_timespec
-
-type Timeval C.struct_timeval
-
-type Timex C.struct_timex
-
-type Time_t C.time_t
-
-type Tms C.struct_tms
-
-type Utimbuf C.struct_utimbuf
-
-// Processes
-
-type Rusage C.struct_rusage
-
-type Rlimit C.struct_rlimit
-
-type _Gid_t C.gid_t
-
-// Files
-
-type Stat_t C.struct_stat
-
-type Statfs_t C.struct_statfs
-
-type Dirent C.struct_dirent
-
-type Fsid C.fsid_t
-
-type Flock_t C.struct_flock
-
-// Filesystem Encryption
-
-type FscryptPolicy C.struct_fscrypt_policy
-
-type FscryptKey C.struct_fscrypt_key
-
-// Advice to Fadvise
-
-const (
-       FADV_NORMAL     = C.POSIX_FADV_NORMAL
-       FADV_RANDOM     = C.POSIX_FADV_RANDOM
-       FADV_SEQUENTIAL = C.POSIX_FADV_SEQUENTIAL
-       FADV_WILLNEED   = C.POSIX_FADV_WILLNEED
-       FADV_DONTNEED   = C.POSIX_FADV_DONTNEED
-       FADV_NOREUSE    = C.POSIX_FADV_NOREUSE
-)
-
-// Sockets
-
-type RawSockaddrInet4 C.struct_sockaddr_in
-
-type RawSockaddrInet6 C.struct_sockaddr_in6
-
-type RawSockaddrUnix C.struct_my_sockaddr_un
-
-type RawSockaddrLinklayer C.struct_sockaddr_ll
-
-type RawSockaddrNetlink C.struct_sockaddr_nl
-
-type RawSockaddrHCI C.struct_sockaddr_hci
-
-type RawSockaddrCAN C.struct_sockaddr_can
-
-type RawSockaddrALG C.struct_sockaddr_alg
-
-type RawSockaddrVM C.struct_sockaddr_vm
-
-type RawSockaddr C.struct_sockaddr
-
-type RawSockaddrAny C.struct_sockaddr_any
-
-type _Socklen C.socklen_t
-
-type Linger C.struct_linger
-
-type Iovec C.struct_iovec
-
-type IPMreq C.struct_ip_mreq
-
-type IPMreqn C.struct_ip_mreqn
-
-type IPv6Mreq C.struct_ipv6_mreq
-
-type Msghdr C.struct_msghdr
-
-type Cmsghdr C.struct_cmsghdr
-
-type Inet4Pktinfo C.struct_in_pktinfo
-
-type Inet6Pktinfo C.struct_in6_pktinfo
-
-type IPv6MTUInfo C.struct_ip6_mtuinfo
-
-type ICMPv6Filter C.struct_icmp6_filter
-
-type Ucred C.struct_ucred
-
-type TCPInfo C.struct_tcp_info
-
-const (
-       SizeofSockaddrInet4     = C.sizeof_struct_sockaddr_in
-       SizeofSockaddrInet6     = C.sizeof_struct_sockaddr_in6
-       SizeofSockaddrAny       = C.sizeof_struct_sockaddr_any
-       SizeofSockaddrUnix      = C.sizeof_struct_sockaddr_un
-       SizeofSockaddrLinklayer = C.sizeof_struct_sockaddr_ll
-       SizeofSockaddrNetlink   = C.sizeof_struct_sockaddr_nl
-       SizeofSockaddrHCI       = C.sizeof_struct_sockaddr_hci
-       SizeofSockaddrCAN       = C.sizeof_struct_sockaddr_can
-       SizeofSockaddrALG       = C.sizeof_struct_sockaddr_alg
-       SizeofSockaddrVM        = C.sizeof_struct_sockaddr_vm
-       SizeofLinger            = C.sizeof_struct_linger
-       SizeofIPMreq            = C.sizeof_struct_ip_mreq
-       SizeofIPMreqn           = C.sizeof_struct_ip_mreqn
-       SizeofIPv6Mreq          = C.sizeof_struct_ipv6_mreq
-       SizeofMsghdr            = C.sizeof_struct_msghdr
-       SizeofCmsghdr           = C.sizeof_struct_cmsghdr
-       SizeofInet4Pktinfo      = C.sizeof_struct_in_pktinfo
-       SizeofInet6Pktinfo      = C.sizeof_struct_in6_pktinfo
-       SizeofIPv6MTUInfo       = C.sizeof_struct_ip6_mtuinfo
-       SizeofICMPv6Filter      = C.sizeof_struct_icmp6_filter
-       SizeofUcred             = C.sizeof_struct_ucred
-       SizeofTCPInfo           = C.sizeof_struct_tcp_info
-)
-
-// Netlink routing and interface messages
-
-const (
-       IFA_UNSPEC          = C.IFA_UNSPEC
-       IFA_ADDRESS         = C.IFA_ADDRESS
-       IFA_LOCAL           = C.IFA_LOCAL
-       IFA_LABEL           = C.IFA_LABEL
-       IFA_BROADCAST       = C.IFA_BROADCAST
-       IFA_ANYCAST         = C.IFA_ANYCAST
-       IFA_CACHEINFO       = C.IFA_CACHEINFO
-       IFA_MULTICAST       = C.IFA_MULTICAST
-       IFLA_UNSPEC         = C.IFLA_UNSPEC
-       IFLA_ADDRESS        = C.IFLA_ADDRESS
-       IFLA_BROADCAST      = C.IFLA_BROADCAST
-       IFLA_IFNAME         = C.IFLA_IFNAME
-       IFLA_MTU            = C.IFLA_MTU
-       IFLA_LINK           = C.IFLA_LINK
-       IFLA_QDISC          = C.IFLA_QDISC
-       IFLA_STATS          = C.IFLA_STATS
-       IFLA_COST           = C.IFLA_COST
-       IFLA_PRIORITY       = C.IFLA_PRIORITY
-       IFLA_MASTER         = C.IFLA_MASTER
-       IFLA_WIRELESS       = C.IFLA_WIRELESS
-       IFLA_PROTINFO       = C.IFLA_PROTINFO
-       IFLA_TXQLEN         = C.IFLA_TXQLEN
-       IFLA_MAP            = C.IFLA_MAP
-       IFLA_WEIGHT         = C.IFLA_WEIGHT
-       IFLA_OPERSTATE      = C.IFLA_OPERSTATE
-       IFLA_LINKMODE       = C.IFLA_LINKMODE
-       IFLA_LINKINFO       = C.IFLA_LINKINFO
-       IFLA_NET_NS_PID     = C.IFLA_NET_NS_PID
-       IFLA_IFALIAS        = C.IFLA_IFALIAS
-       IFLA_MAX            = C.IFLA_MAX
-       RT_SCOPE_UNIVERSE   = C.RT_SCOPE_UNIVERSE
-       RT_SCOPE_SITE       = C.RT_SCOPE_SITE
-       RT_SCOPE_LINK       = C.RT_SCOPE_LINK
-       RT_SCOPE_HOST       = C.RT_SCOPE_HOST
-       RT_SCOPE_NOWHERE    = C.RT_SCOPE_NOWHERE
-       RT_TABLE_UNSPEC     = C.RT_TABLE_UNSPEC
-       RT_TABLE_COMPAT     = C.RT_TABLE_COMPAT
-       RT_TABLE_DEFAULT    = C.RT_TABLE_DEFAULT
-       RT_TABLE_MAIN       = C.RT_TABLE_MAIN
-       RT_TABLE_LOCAL      = C.RT_TABLE_LOCAL
-       RT_TABLE_MAX        = C.RT_TABLE_MAX
-       RTA_UNSPEC          = C.RTA_UNSPEC
-       RTA_DST             = C.RTA_DST
-       RTA_SRC             = C.RTA_SRC
-       RTA_IIF             = C.RTA_IIF
-       RTA_OIF             = C.RTA_OIF
-       RTA_GATEWAY         = C.RTA_GATEWAY
-       RTA_PRIORITY        = C.RTA_PRIORITY
-       RTA_PREFSRC         = C.RTA_PREFSRC
-       RTA_METRICS         = C.RTA_METRICS
-       RTA_MULTIPATH       = C.RTA_MULTIPATH
-       RTA_FLOW            = C.RTA_FLOW
-       RTA_CACHEINFO       = C.RTA_CACHEINFO
-       RTA_TABLE           = C.RTA_TABLE
-       RTN_UNSPEC          = C.RTN_UNSPEC
-       RTN_UNICAST         = C.RTN_UNICAST
-       RTN_LOCAL           = C.RTN_LOCAL
-       RTN_BROADCAST       = C.RTN_BROADCAST
-       RTN_ANYCAST         = C.RTN_ANYCAST
-       RTN_MULTICAST       = C.RTN_MULTICAST
-       RTN_BLACKHOLE       = C.RTN_BLACKHOLE
-       RTN_UNREACHABLE     = C.RTN_UNREACHABLE
-       RTN_PROHIBIT        = C.RTN_PROHIBIT
-       RTN_THROW           = C.RTN_THROW
-       RTN_NAT             = C.RTN_NAT
-       RTN_XRESOLVE        = C.RTN_XRESOLVE
-       RTNLGRP_NONE        = C.RTNLGRP_NONE
-       RTNLGRP_LINK        = C.RTNLGRP_LINK
-       RTNLGRP_NOTIFY      = C.RTNLGRP_NOTIFY
-       RTNLGRP_NEIGH       = C.RTNLGRP_NEIGH
-       RTNLGRP_TC          = C.RTNLGRP_TC
-       RTNLGRP_IPV4_IFADDR = C.RTNLGRP_IPV4_IFADDR
-       RTNLGRP_IPV4_MROUTE = C.RTNLGRP_IPV4_MROUTE
-       RTNLGRP_IPV4_ROUTE  = C.RTNLGRP_IPV4_ROUTE
-       RTNLGRP_IPV4_RULE   = C.RTNLGRP_IPV4_RULE
-       RTNLGRP_IPV6_IFADDR = C.RTNLGRP_IPV6_IFADDR
-       RTNLGRP_IPV6_MROUTE = C.RTNLGRP_IPV6_MROUTE
-       RTNLGRP_IPV6_ROUTE  = C.RTNLGRP_IPV6_ROUTE
-       RTNLGRP_IPV6_IFINFO = C.RTNLGRP_IPV6_IFINFO
-       RTNLGRP_IPV6_PREFIX = C.RTNLGRP_IPV6_PREFIX
-       RTNLGRP_IPV6_RULE   = C.RTNLGRP_IPV6_RULE
-       RTNLGRP_ND_USEROPT  = C.RTNLGRP_ND_USEROPT
-       SizeofNlMsghdr      = C.sizeof_struct_nlmsghdr
-       SizeofNlMsgerr      = C.sizeof_struct_nlmsgerr
-       SizeofRtGenmsg      = C.sizeof_struct_rtgenmsg
-       SizeofNlAttr        = C.sizeof_struct_nlattr
-       SizeofRtAttr        = C.sizeof_struct_rtattr
-       SizeofIfInfomsg     = C.sizeof_struct_ifinfomsg
-       SizeofIfAddrmsg     = C.sizeof_struct_ifaddrmsg
-       SizeofRtMsg         = C.sizeof_struct_rtmsg
-       SizeofRtNexthop     = C.sizeof_struct_rtnexthop
-)
-
-type NlMsghdr C.struct_nlmsghdr
-
-type NlMsgerr C.struct_nlmsgerr
-
-type RtGenmsg C.struct_rtgenmsg
-
-type NlAttr C.struct_nlattr
-
-type RtAttr C.struct_rtattr
-
-type IfInfomsg C.struct_ifinfomsg
-
-type IfAddrmsg C.struct_ifaddrmsg
-
-type RtMsg C.struct_rtmsg
-
-type RtNexthop C.struct_rtnexthop
-
-// Linux socket filter
-
-const (
-       SizeofSockFilter = C.sizeof_struct_sock_filter
-       SizeofSockFprog  = C.sizeof_struct_sock_fprog
-)
-
-type SockFilter C.struct_sock_filter
-
-type SockFprog C.struct_sock_fprog
-
-// Inotify
-
-type InotifyEvent C.struct_inotify_event
-
-const SizeofInotifyEvent = C.sizeof_struct_inotify_event
-
-// Ptrace
-
-// Register structures
-type PtraceRegs C.PtraceRegs
-
-// Structures contained in PtraceRegs on s390x (exported by mkpost.go)
-type PtracePsw C.ptracePsw
-
-type PtraceFpregs C.ptraceFpregs
-
-type PtracePer C.ptracePer
-
-// Misc
-
-type FdSet C.fd_set
-
-type Sysinfo_t C.struct_sysinfo
-
-type Utsname C.struct_utsname
-
-type Ustat_t C.struct_ustat
-
-type EpollEvent C.struct_my_epoll_event
-
-const (
-       AT_FDCWD            = C.AT_FDCWD
-       AT_REMOVEDIR        = C.AT_REMOVEDIR
-       AT_SYMLINK_FOLLOW   = C.AT_SYMLINK_FOLLOW
-       AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW
-)
-
-type PollFd C.struct_pollfd
-
-const (
-       POLLIN    = C.POLLIN
-       POLLPRI   = C.POLLPRI
-       POLLOUT   = C.POLLOUT
-       POLLRDHUP = C.POLLRDHUP
-       POLLERR   = C.POLLERR
-       POLLHUP   = C.POLLHUP
-       POLLNVAL  = C.POLLNVAL
-)
-
-type Sigset_t C.sigset_t
-
-// sysconf information
-
-const _SC_PAGESIZE = C._SC_PAGESIZE
-
-// Terminal handling
-
-type Termios C.termios_t
diff --git a/vendor/golang.org/x/sys/unix/mmap_unix_test.go b/vendor/golang.org/x/sys/unix/mmap_unix_test.go
deleted file mode 100644 (file)
index 18ccec0..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2014 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build darwin dragonfly freebsd linux netbsd openbsd solaris
-
-package unix_test
-
-import (
-       "testing"
-
-       "golang.org/x/sys/unix"
-)
-
-func TestMmap(t *testing.T) {
-       b, err := unix.Mmap(-1, 0, unix.Getpagesize(), unix.PROT_NONE, unix.MAP_ANON|unix.MAP_PRIVATE)
-       if err != nil {
-               t.Fatalf("Mmap: %v", err)
-       }
-       if err := unix.Munmap(b); err != nil {
-               t.Fatalf("Munmap: %v", err)
-       }
-}
diff --git a/vendor/golang.org/x/sys/unix/openbsd_test.go b/vendor/golang.org/x/sys/unix/openbsd_test.go
deleted file mode 100644 (file)
index 734d765..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-// Copyright 2016 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build openbsd
-
-// This, on the face of it, bizarre testing mechanism is necessary because
-// the only reliable way to gauge whether or not a pledge(2) call has succeeded
-// is that the program has been killed as a result of breaking its pledge.
-
-package unix_test
-
-import (
-       "flag"
-       "fmt"
-       "io/ioutil"
-       "os"
-       "os/exec"
-       "path/filepath"
-       "testing"
-
-       "golang.org/x/sys/unix"
-)
-
-type testProc struct {
-       fn      func()       // should always exit instead of returning
-       cleanup func() error // for instance, delete coredumps from testing pledge
-       success bool         // whether zero-exit means success or failure
-}
-
-var (
-       testProcs = map[string]testProc{}
-       procName  = ""
-)
-
-const (
-       optName = "sys-unix-internal-procname"
-)
-
-func init() {
-       flag.StringVar(&procName, optName, "", "internal use only")
-}
-
-// testCmd generates a proper command that, when executed, runs the test
-// corresponding to the given key.
-func testCmd(procName string) (*exec.Cmd, error) {
-       exe, err := filepath.Abs(os.Args[0])
-       if err != nil {
-               return nil, err
-       }
-       cmd := exec.Command(exe, "-"+optName+"="+procName)
-       cmd.Stdout, cmd.Stderr = os.Stdout, os.Stderr
-       return cmd, nil
-}
-
-// ExitsCorrectly is a comprehensive, one-line-of-use wrapper for testing
-// a testProc with a key.
-func ExitsCorrectly(procName string, t *testing.T) {
-       s := testProcs[procName]
-       c, err := testCmd(procName)
-       defer func() {
-               if s.cleanup() != nil {
-                       t.Fatalf("Failed to run cleanup for %s", procName)
-               }
-       }()
-       if err != nil {
-               t.Fatalf("Failed to construct command for %s", procName)
-       }
-       if (c.Run() == nil) != s.success {
-               result := "succeed"
-               if !s.success {
-                       result = "fail"
-               }
-               t.Fatalf("Process did not %s when it was supposed to", result)
-       }
-}
-
-func TestMain(m *testing.M) {
-       flag.Parse()
-       if procName != "" {
-               testProcs[procName].fn()
-       }
-       os.Exit(m.Run())
-}
-
-// For example, add a test for pledge.
-func init() {
-       testProcs["pledge"] = testProc{
-               func() {
-                       fmt.Println(unix.Pledge("", nil))
-                       os.Exit(0)
-               },
-               func() error {
-                       files, err := ioutil.ReadDir(".")
-                       if err != nil {
-                               return err
-                       }
-                       for _, file := range files {
-                               if filepath.Ext(file.Name()) == ".core" {
-                                       if err := os.Remove(file.Name()); err != nil {
-                                               return err
-                                       }
-                               }
-                       }
-                       return nil
-               },
-               false,
-       }
-}
-
-func TestPledge(t *testing.T) {
-       ExitsCorrectly("pledge", t)
-}
diff --git a/vendor/golang.org/x/sys/unix/syscall_bsd_test.go b/vendor/golang.org/x/sys/unix/syscall_bsd_test.go
deleted file mode 100644 (file)
index d8085a0..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2014 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build darwin dragonfly freebsd openbsd
-
-package unix_test
-
-import (
-       "os/exec"
-       "runtime"
-       "testing"
-
-       "golang.org/x/sys/unix"
-)
-
-const MNT_WAIT = 1
-const MNT_NOWAIT = 2
-
-func TestGetfsstat(t *testing.T) {
-       const flags = MNT_NOWAIT // see golang.org/issue/16937
-       n, err := unix.Getfsstat(nil, flags)
-       if err != nil {
-               t.Fatal(err)
-       }
-
-       data := make([]unix.Statfs_t, n)
-       n2, err := unix.Getfsstat(data, flags)
-       if err != nil {
-               t.Fatal(err)
-       }
-       if n != n2 {
-               t.Errorf("Getfsstat(nil) = %d, but subsequent Getfsstat(slice) = %d", n, n2)
-       }
-       for i, stat := range data {
-               if stat == (unix.Statfs_t{}) {
-                       t.Errorf("index %v is an empty Statfs_t struct", i)
-               }
-       }
-       if t.Failed() {
-               for i, stat := range data[:n2] {
-                       t.Logf("data[%v] = %+v", i, stat)
-               }
-               mount, err := exec.Command("mount").CombinedOutput()
-               if err != nil {
-                       t.Logf("mount: %v\n%s", err, mount)
-               } else {
-                       t.Logf("mount: %s", mount)
-               }
-       }
-}
-
-func TestSysctlRaw(t *testing.T) {
-       if runtime.GOOS == "openbsd" {
-               t.Skip("kern.proc.pid does not exist on OpenBSD")
-       }
-
-       _, err := unix.SysctlRaw("kern.proc.pid", unix.Getpid())
-       if err != nil {
-               t.Fatal(err)
-       }
-}
diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_test.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_test.go
deleted file mode 100644 (file)
index 3c3d825..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2014 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build freebsd
-
-package unix_test
-
-import (
-       "testing"
-
-       "golang.org/x/sys/unix"
-)
-
-func TestSysctlUint64(t *testing.T) {
-       _, err := unix.SysctlUint64("security.mac.labeled")
-       if err != nil {
-               t.Fatal(err)
-       }
-}
diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_test.go b/vendor/golang.org/x/sys/unix/syscall_linux_test.go
deleted file mode 100644 (file)
index 91184ca..0000000
+++ /dev/null
@@ -1,186 +0,0 @@
-// Copyright 2016 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build linux
-
-package unix_test
-
-import (
-       "io/ioutil"
-       "os"
-       "testing"
-       "time"
-
-       "golang.org/x/sys/unix"
-)
-
-func TestPoll(t *testing.T) {
-       f, cleanup := mktmpfifo(t)
-       defer cleanup()
-
-       const timeout = 100
-
-       ok := make(chan bool, 1)
-       go func() {
-               select {
-               case <-time.After(10 * timeout * time.Millisecond):
-                       t.Errorf("Poll: failed to timeout after %d milliseconds", 10*timeout)
-               case <-ok:
-               }
-       }()
-
-       fds := []unix.PollFd{{Fd: int32(f.Fd()), Events: unix.POLLIN}}
-       n, err := unix.Poll(fds, timeout)
-       ok <- true
-       if err != nil {
-               t.Errorf("Poll: unexpected error: %v", err)
-               return
-       }
-       if n != 0 {
-               t.Errorf("Poll: wrong number of events: got %v, expected %v", n, 0)
-               return
-       }
-}
-
-func TestPpoll(t *testing.T) {
-       f, cleanup := mktmpfifo(t)
-       defer cleanup()
-
-       const timeout = 100 * time.Millisecond
-
-       ok := make(chan bool, 1)
-       go func() {
-               select {
-               case <-time.After(10 * timeout):
-                       t.Errorf("Ppoll: failed to timeout after %d", 10*timeout)
-               case <-ok:
-               }
-       }()
-
-       fds := []unix.PollFd{{Fd: int32(f.Fd()), Events: unix.POLLIN}}
-       timeoutTs := unix.NsecToTimespec(int64(timeout))
-       n, err := unix.Ppoll(fds, &timeoutTs, nil)
-       ok <- true
-       if err != nil {
-               t.Errorf("Ppoll: unexpected error: %v", err)
-               return
-       }
-       if n != 0 {
-               t.Errorf("Ppoll: wrong number of events: got %v, expected %v", n, 0)
-               return
-       }
-}
-
-// mktmpfifo creates a temporary FIFO and provides a cleanup function.
-func mktmpfifo(t *testing.T) (*os.File, func()) {
-       err := unix.Mkfifo("fifo", 0666)
-       if err != nil {
-               t.Fatalf("mktmpfifo: failed to create FIFO: %v", err)
-       }
-
-       f, err := os.OpenFile("fifo", os.O_RDWR, 0666)
-       if err != nil {
-               os.Remove("fifo")
-               t.Fatalf("mktmpfifo: failed to open FIFO: %v", err)
-       }
-
-       return f, func() {
-               f.Close()
-               os.Remove("fifo")
-       }
-}
-
-func TestTime(t *testing.T) {
-       var ut unix.Time_t
-       ut2, err := unix.Time(&ut)
-       if err != nil {
-               t.Fatalf("Time: %v", err)
-       }
-       if ut != ut2 {
-               t.Errorf("Time: return value %v should be equal to argument %v", ut2, ut)
-       }
-
-       var now time.Time
-
-       for i := 0; i < 10; i++ {
-               ut, err = unix.Time(nil)
-               if err != nil {
-                       t.Fatalf("Time: %v", err)
-               }
-
-               now = time.Now()
-
-               if int64(ut) == now.Unix() {
-                       return
-               }
-       }
-
-       t.Errorf("Time: return value %v should be nearly equal to time.Now().Unix() %v", ut, now.Unix())
-}
-
-func TestUtime(t *testing.T) {
-       defer chtmpdir(t)()
-
-       touch(t, "file1")
-
-       buf := &unix.Utimbuf{
-               Modtime: 12345,
-       }
-
-       err := unix.Utime("file1", buf)
-       if err != nil {
-               t.Fatalf("Utime: %v", err)
-       }
-
-       fi, err := os.Stat("file1")
-       if err != nil {
-               t.Fatal(err)
-       }
-
-       if fi.ModTime().Unix() != 12345 {
-               t.Errorf("Utime: failed to change modtime: expected %v, got %v", 12345, fi.ModTime().Unix())
-       }
-}
-
-func TestGetrlimit(t *testing.T) {
-       var rlim unix.Rlimit
-       err := unix.Getrlimit(unix.RLIMIT_AS, &rlim)
-       if err != nil {
-               t.Fatalf("Getrlimit: %v", err)
-       }
-}
-
-// utilities taken from os/os_test.go
-
-func touch(t *testing.T, name string) {
-       f, err := os.Create(name)
-       if err != nil {
-               t.Fatal(err)
-       }
-       if err := f.Close(); err != nil {
-               t.Fatal(err)
-       }
-}
-
-// chtmpdir changes the working directory to a new temporary directory and
-// provides a cleanup function. Used when PWD is read-only.
-func chtmpdir(t *testing.T) func() {
-       oldwd, err := os.Getwd()
-       if err != nil {
-               t.Fatalf("chtmpdir: %v", err)
-       }
-       d, err := ioutil.TempDir("", "test")
-       if err != nil {
-               t.Fatalf("chtmpdir: %v", err)
-       }
-       if err := os.Chdir(d); err != nil {
-               t.Fatalf("chtmpdir: %v", err)
-       }
-       return func() {
-               if err := os.Chdir(oldwd); err != nil {
-                       t.Fatalf("chtmpdir: %v", err)
-               }
-               os.RemoveAll(d)
-       }
-}
diff --git a/vendor/golang.org/x/sys/unix/syscall_test.go b/vendor/golang.org/x/sys/unix/syscall_test.go
deleted file mode 100644 (file)
index 95eac92..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2013 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build darwin dragonfly freebsd linux netbsd openbsd solaris
-
-package unix_test
-
-import (
-       "fmt"
-       "testing"
-
-       "golang.org/x/sys/unix"
-)
-
-func testSetGetenv(t *testing.T, key, value string) {
-       err := unix.Setenv(key, value)
-       if err != nil {
-               t.Fatalf("Setenv failed to set %q: %v", value, err)
-       }
-       newvalue, found := unix.Getenv(key)
-       if !found {
-               t.Fatalf("Getenv failed to find %v variable (want value %q)", key, value)
-       }
-       if newvalue != value {
-               t.Fatalf("Getenv(%v) = %q; want %q", key, newvalue, value)
-       }
-}
-
-func TestEnv(t *testing.T) {
-       testSetGetenv(t, "TESTENV", "AVALUE")
-       // make sure TESTENV gets set to "", not deleted
-       testSetGetenv(t, "TESTENV", "")
-}
-
-func TestItoa(t *testing.T) {
-       // Make most negative integer: 0x8000...
-       i := 1
-       for i<<1 != 0 {
-               i <<= 1
-       }
-       if i >= 0 {
-               t.Fatal("bad math")
-       }
-       s := unix.Itoa(i)
-       f := fmt.Sprint(i)
-       if s != f {
-               t.Fatalf("itoa(%d) = %s, want %s", i, s, f)
-       }
-}
diff --git a/vendor/golang.org/x/sys/unix/syscall_unix_test.go b/vendor/golang.org/x/sys/unix/syscall_unix_test.go
deleted file mode 100644 (file)
index 49208a0..0000000
+++ /dev/null
@@ -1,353 +0,0 @@
-// Copyright 2013 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build darwin dragonfly freebsd linux netbsd openbsd solaris
-
-package unix_test
-
-import (
-       "flag"
-       "fmt"
-       "io/ioutil"
-       "net"
-       "os"
-       "os/exec"
-       "path/filepath"
-       "runtime"
-       "testing"
-       "time"
-
-       "golang.org/x/sys/unix"
-)
-
-// Tests that below functions, structures and constants are consistent
-// on all Unix-like systems.
-func _() {
-       // program scheduling priority functions and constants
-       var (
-               _ func(int, int, int) error   = unix.Setpriority
-               _ func(int, int) (int, error) = unix.Getpriority
-       )
-       const (
-               _ int = unix.PRIO_USER
-               _ int = unix.PRIO_PROCESS
-               _ int = unix.PRIO_PGRP
-       )
-
-       // termios constants
-       const (
-               _ int = unix.TCIFLUSH
-               _ int = unix.TCIOFLUSH
-               _ int = unix.TCOFLUSH
-       )
-
-       // fcntl file locking structure and constants
-       var (
-               _ = unix.Flock_t{
-                       Type:   int16(0),
-                       Whence: int16(0),
-                       Start:  int64(0),
-                       Len:    int64(0),
-                       Pid:    int32(0),
-               }
-       )
-       const (
-               _ = unix.F_GETLK
-               _ = unix.F_SETLK
-               _ = unix.F_SETLKW
-       )
-}
-
-// TestFcntlFlock tests whether the file locking structure matches
-// the calling convention of each kernel.
-func TestFcntlFlock(t *testing.T) {
-       name := filepath.Join(os.TempDir(), "TestFcntlFlock")
-       fd, err := unix.Open(name, unix.O_CREAT|unix.O_RDWR|unix.O_CLOEXEC, 0)
-       if err != nil {
-               t.Fatalf("Open failed: %v", err)
-       }
-       defer unix.Unlink(name)
-       defer unix.Close(fd)
-       flock := unix.Flock_t{
-               Type:  unix.F_RDLCK,
-               Start: 0, Len: 0, Whence: 1,
-       }
-       if err := unix.FcntlFlock(uintptr(fd), unix.F_GETLK, &flock); err != nil {
-               t.Fatalf("FcntlFlock failed: %v", err)
-       }
-}
-
-// TestPassFD tests passing a file descriptor over a Unix socket.
-//
-// This test involved both a parent and child process. The parent
-// process is invoked as a normal test, with "go test", which then
-// runs the child process by running the current test binary with args
-// "-test.run=^TestPassFD$" and an environment variable used to signal
-// that the test should become the child process instead.
-func TestPassFD(t *testing.T) {
-       switch runtime.GOOS {
-       case "dragonfly":
-               // TODO(jsing): Figure out why sendmsg is returning EINVAL.
-               t.Skip("skipping test on dragonfly")
-       case "solaris":
-               // TODO(aram): Figure out why ReadMsgUnix is returning empty message.
-               t.Skip("skipping test on solaris, see issue 7402")
-       }
-       if os.Getenv("GO_WANT_HELPER_PROCESS") == "1" {
-               passFDChild()
-               return
-       }
-
-       tempDir, err := ioutil.TempDir("", "TestPassFD")
-       if err != nil {
-               t.Fatal(err)
-       }
-       defer os.RemoveAll(tempDir)
-
-       fds, err := unix.Socketpair(unix.AF_LOCAL, unix.SOCK_STREAM, 0)
-       if err != nil {
-               t.Fatalf("Socketpair: %v", err)
-       }
-       defer unix.Close(fds[0])
-       defer unix.Close(fds[1])
-       writeFile := os.NewFile(uintptr(fds[0]), "child-writes")
-       readFile := os.NewFile(uintptr(fds[1]), "parent-reads")
-       defer writeFile.Close()
-       defer readFile.Close()
-
-       cmd := exec.Command(os.Args[0], "-test.run=^TestPassFD$", "--", tempDir)
-       cmd.Env = []string{"GO_WANT_HELPER_PROCESS=1"}
-       if lp := os.Getenv("LD_LIBRARY_PATH"); lp != "" {
-               cmd.Env = append(cmd.Env, "LD_LIBRARY_PATH="+lp)
-       }
-       cmd.ExtraFiles = []*os.File{writeFile}
-
-       out, err := cmd.CombinedOutput()
-       if len(out) > 0 || err != nil {
-               t.Fatalf("child process: %q, %v", out, err)
-       }
-
-       c, err := net.FileConn(readFile)
-       if err != nil {
-               t.Fatalf("FileConn: %v", err)
-       }
-       defer c.Close()
-
-       uc, ok := c.(*net.UnixConn)
-       if !ok {
-               t.Fatalf("unexpected FileConn type; expected UnixConn, got %T", c)
-       }
-
-       buf := make([]byte, 32) // expect 1 byte
-       oob := make([]byte, 32) // expect 24 bytes
-       closeUnix := time.AfterFunc(5*time.Second, func() {
-               t.Logf("timeout reading from unix socket")
-               uc.Close()
-       })
-       _, oobn, _, _, err := uc.ReadMsgUnix(buf, oob)
-       closeUnix.Stop()
-
-       scms, err := unix.ParseSocketControlMessage(oob[:oobn])
-       if err != nil {
-               t.Fatalf("ParseSocketControlMessage: %v", err)
-       }
-       if len(scms) != 1 {
-               t.Fatalf("expected 1 SocketControlMessage; got scms = %#v", scms)
-       }
-       scm := scms[0]
-       gotFds, err := unix.ParseUnixRights(&scm)
-       if err != nil {
-               t.Fatalf("unix.ParseUnixRights: %v", err)
-       }
-       if len(gotFds) != 1 {
-               t.Fatalf("wanted 1 fd; got %#v", gotFds)
-       }
-
-       f := os.NewFile(uintptr(gotFds[0]), "fd-from-child")
-       defer f.Close()
-
-       got, err := ioutil.ReadAll(f)
-       want := "Hello from child process!\n"
-       if string(got) != want {
-               t.Errorf("child process ReadAll: %q, %v; want %q", got, err, want)
-       }
-}
-
-// passFDChild is the child process used by TestPassFD.
-func passFDChild() {
-       defer os.Exit(0)
-
-       // Look for our fd. It should be fd 3, but we work around an fd leak
-       // bug here (http://golang.org/issue/2603) to let it be elsewhere.
-       var uc *net.UnixConn
-       for fd := uintptr(3); fd <= 10; fd++ {
-               f := os.NewFile(fd, "unix-conn")
-               var ok bool
-               netc, _ := net.FileConn(f)
-               uc, ok = netc.(*net.UnixConn)
-               if ok {
-                       break
-               }
-       }
-       if uc == nil {
-               fmt.Println("failed to find unix fd")
-               return
-       }
-
-       // Make a file f to send to our parent process on uc.
-       // We make it in tempDir, which our parent will clean up.
-       flag.Parse()
-       tempDir := flag.Arg(0)
-       f, err := ioutil.TempFile(tempDir, "")
-       if err != nil {
-               fmt.Printf("TempFile: %v", err)
-               return
-       }
-
-       f.Write([]byte("Hello from child process!\n"))
-       f.Seek(0, 0)
-
-       rights := unix.UnixRights(int(f.Fd()))
-       dummyByte := []byte("x")
-       n, oobn, err := uc.WriteMsgUnix(dummyByte, rights, nil)
-       if err != nil {
-               fmt.Printf("WriteMsgUnix: %v", err)
-               return
-       }
-       if n != 1 || oobn != len(rights) {
-               fmt.Printf("WriteMsgUnix = %d, %d; want 1, %d", n, oobn, len(rights))
-               return
-       }
-}
-
-// TestUnixRightsRoundtrip tests that UnixRights, ParseSocketControlMessage,
-// and ParseUnixRights are able to successfully round-trip lists of file descriptors.
-func TestUnixRightsRoundtrip(t *testing.T) {
-       testCases := [...][][]int{
-               {{42}},
-               {{1, 2}},
-               {{3, 4, 5}},
-               {{}},
-               {{1, 2}, {3, 4, 5}, {}, {7}},
-       }
-       for _, testCase := range testCases {
-               b := []byte{}
-               var n int
-               for _, fds := range testCase {
-                       // Last assignment to n wins
-                       n = len(b) + unix.CmsgLen(4*len(fds))
-                       b = append(b, unix.UnixRights(fds...)...)
-               }
-               // Truncate b
-               b = b[:n]
-
-               scms, err := unix.ParseSocketControlMessage(b)
-               if err != nil {
-                       t.Fatalf("ParseSocketControlMessage: %v", err)
-               }
-               if len(scms) != len(testCase) {
-                       t.Fatalf("expected %v SocketControlMessage; got scms = %#v", len(testCase), scms)
-               }
-               for i, scm := range scms {
-                       gotFds, err := unix.ParseUnixRights(&scm)
-                       if err != nil {
-                               t.Fatalf("ParseUnixRights: %v", err)
-                       }
-                       wantFds := testCase[i]
-                       if len(gotFds) != len(wantFds) {
-                               t.Fatalf("expected %v fds, got %#v", len(wantFds), gotFds)
-                       }
-                       for j, fd := range gotFds {
-                               if fd != wantFds[j] {
-                                       t.Fatalf("expected fd %v, got %v", wantFds[j], fd)
-                               }
-                       }
-               }
-       }
-}
-
-func TestRlimit(t *testing.T) {
-       var rlimit, zero unix.Rlimit
-       err := unix.Getrlimit(unix.RLIMIT_NOFILE, &rlimit)
-       if err != nil {
-               t.Fatalf("Getrlimit: save failed: %v", err)
-       }
-       if zero == rlimit {
-               t.Fatalf("Getrlimit: save failed: got zero value %#v", rlimit)
-       }
-       set := rlimit
-       set.Cur = set.Max - 1
-       err = unix.Setrlimit(unix.RLIMIT_NOFILE, &set)
-       if err != nil {
-               t.Fatalf("Setrlimit: set failed: %#v %v", set, err)
-       }
-       var get unix.Rlimit
-       err = unix.Getrlimit(unix.RLIMIT_NOFILE, &get)
-       if err != nil {
-               t.Fatalf("Getrlimit: get failed: %v", err)
-       }
-       set = rlimit
-       set.Cur = set.Max - 1
-       if set != get {
-               // Seems like Darwin requires some privilege to
-               // increase the soft limit of rlimit sandbox, though
-               // Setrlimit never reports an error.
-               switch runtime.GOOS {
-               case "darwin":
-               default:
-                       t.Fatalf("Rlimit: change failed: wanted %#v got %#v", set, get)
-               }
-       }
-       err = unix.Setrlimit(unix.RLIMIT_NOFILE, &rlimit)
-       if err != nil {
-               t.Fatalf("Setrlimit: restore failed: %#v %v", rlimit, err)
-       }
-}
-
-func TestSeekFailure(t *testing.T) {
-       _, err := unix.Seek(-1, 0, 0)
-       if err == nil {
-               t.Fatalf("Seek(-1, 0, 0) did not fail")
-       }
-       str := err.Error() // used to crash on Linux
-       t.Logf("Seek: %v", str)
-       if str == "" {
-               t.Fatalf("Seek(-1, 0, 0) return error with empty message")
-       }
-}
-
-func TestDup(t *testing.T) {
-       file, err := ioutil.TempFile("", "TestDup")
-       if err != nil {
-               t.Fatalf("Tempfile failed: %v", err)
-       }
-       defer os.Remove(file.Name())
-       defer file.Close()
-       f := int(file.Fd())
-
-       newFd, err := unix.Dup(f)
-       if err != nil {
-               t.Fatalf("Dup: %v", err)
-       }
-
-       err = unix.Dup2(newFd, newFd+1)
-       if err != nil {
-               t.Fatalf("Dup2: %v", err)
-       }
-
-       b1 := []byte("Test123")
-       b2 := make([]byte, 7)
-       _, err = unix.Write(newFd+1, b1)
-       if err != nil {
-               t.Fatalf("Write to dup2 fd failed: %v", err)
-       }
-       _, err = unix.Seek(f, 0, 0)
-       _, err = unix.Read(f, b2)
-       if err != nil {
-               t.Fatalf("Read back failed: %v", err)
-       }
-       if string(b1) != string(b2) {
-               t.Errorf("Dup: stdout write not in file, expected %v, got %v", string(b1), string(b2))
-       }
-}
diff --git a/vendor/golang.org/x/sys/windows/asm_windows_386.s b/vendor/golang.org/x/sys/windows/asm_windows_386.s
deleted file mode 100644 (file)
index 1c20dd2..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-//
-// System calls for 386, Windows are implemented in runtime/syscall_windows.goc
-//
-
-TEXT ·getprocaddress(SB), 7, $0-8
-       JMP     syscall·getprocaddress(SB)
-
-TEXT ·loadlibrary(SB), 7, $0-4
-       JMP     syscall·loadlibrary(SB)
diff --git a/vendor/golang.org/x/sys/windows/asm_windows_amd64.s b/vendor/golang.org/x/sys/windows/asm_windows_amd64.s
deleted file mode 100644 (file)
index 4d025ab..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-//
-// System calls for amd64, Windows are implemented in runtime/syscall_windows.goc
-//
-
-TEXT ·getprocaddress(SB), 7, $0-32
-       JMP     syscall·getprocaddress(SB)
-
-TEXT ·loadlibrary(SB), 7, $0-8
-       JMP     syscall·loadlibrary(SB)
diff --git a/vendor/golang.org/x/sys/windows/dll_windows.go b/vendor/golang.org/x/sys/windows/dll_windows.go
deleted file mode 100644 (file)
index 0f62046..0000000
+++ /dev/null
@@ -1,378 +0,0 @@
-// Copyright 2011 The Go Authors.  All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package windows
-
-import (
-       "sync"
-       "sync/atomic"
-       "syscall"
-       "unsafe"
-)
-
-// DLLError describes reasons for DLL load failures.
-type DLLError struct {
-       Err     error
-       ObjName string
-       Msg     string
-}
-
-func (e *DLLError) Error() string { return e.Msg }
-
-// Implemented in runtime/syscall_windows.goc; we provide jumps to them in our assembly file.
-func loadlibrary(filename *uint16) (handle uintptr, err syscall.Errno)
-func getprocaddress(handle uintptr, procname *uint8) (proc uintptr, err syscall.Errno)
-
-// A DLL implements access to a single DLL.
-type DLL struct {
-       Name   string
-       Handle Handle
-}
-
-// LoadDLL loads DLL file into memory.
-//
-// Warning: using LoadDLL without an absolute path name is subject to
-// DLL preloading attacks. To safely load a system DLL, use LazyDLL
-// with System set to true, or use LoadLibraryEx directly.
-func LoadDLL(name string) (dll *DLL, err error) {
-       namep, err := UTF16PtrFromString(name)
-       if err != nil {
-               return nil, err
-       }
-       h, e := loadlibrary(namep)
-       if e != 0 {
-               return nil, &DLLError{
-                       Err:     e,
-                       ObjName: name,
-                       Msg:     "Failed to load " + name + ": " + e.Error(),
-               }
-       }
-       d := &DLL{
-               Name:   name,
-               Handle: Handle(h),
-       }
-       return d, nil
-}
-
-// MustLoadDLL is like LoadDLL but panics if load operation failes.
-func MustLoadDLL(name string) *DLL {
-       d, e := LoadDLL(name)
-       if e != nil {
-               panic(e)
-       }
-       return d
-}
-
-// FindProc searches DLL d for procedure named name and returns *Proc
-// if found. It returns an error if search fails.
-func (d *DLL) FindProc(name string) (proc *Proc, err error) {
-       namep, err := BytePtrFromString(name)
-       if err != nil {
-               return nil, err
-       }
-       a, e := getprocaddress(uintptr(d.Handle), namep)
-       if e != 0 {
-               return nil, &DLLError{
-                       Err:     e,
-                       ObjName: name,
-                       Msg:     "Failed to find " + name + " procedure in " + d.Name + ": " + e.Error(),
-               }
-       }
-       p := &Proc{
-               Dll:  d,
-               Name: name,
-               addr: a,
-       }
-       return p, nil
-}
-
-// MustFindProc is like FindProc but panics if search fails.
-func (d *DLL) MustFindProc(name string) *Proc {
-       p, e := d.FindProc(name)
-       if e != nil {
-               panic(e)
-       }
-       return p
-}
-
-// Release unloads DLL d from memory.
-func (d *DLL) Release() (err error) {
-       return FreeLibrary(d.Handle)
-}
-
-// A Proc implements access to a procedure inside a DLL.
-type Proc struct {
-       Dll  *DLL
-       Name string
-       addr uintptr
-}
-
-// Addr returns the address of the procedure represented by p.
-// The return value can be passed to Syscall to run the procedure.
-func (p *Proc) Addr() uintptr {
-       return p.addr
-}
-
-//go:uintptrescapes
-
-// Call executes procedure p with arguments a. It will panic, if more then 15 arguments
-// are supplied.
-//
-// The returned error is always non-nil, constructed from the result of GetLastError.
-// Callers must inspect the primary return value to decide whether an error occurred
-// (according to the semantics of the specific function being called) before consulting
-// the error. The error will be guaranteed to contain windows.Errno.
-func (p *Proc) Call(a ...uintptr) (r1, r2 uintptr, lastErr error) {
-       switch len(a) {
-       case 0:
-               return syscall.Syscall(p.Addr(), uintptr(len(a)), 0, 0, 0)
-       case 1:
-               return syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], 0, 0)
-       case 2:
-               return syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], a[1], 0)
-       case 3:
-               return syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], a[1], a[2])
-       case 4:
-               return syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], 0, 0)
-       case 5:
-               return syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], 0)
-       case 6:
-               return syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5])
-       case 7:
-               return syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], 0, 0)
-       case 8:
-               return syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], 0)
-       case 9:
-               return syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8])
-       case 10:
-               return syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], 0, 0)
-       case 11:
-               return syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], 0)
-       case 12:
-               return syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11])
-       case 13:
-               return syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], 0, 0)
-       case 14:
-               return syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], 0)
-       case 15:
-               return syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14])
-       default:
-               panic("Call " + p.Name + " with too many arguments " + itoa(len(a)) + ".")
-       }
-       return
-}
-
-// A LazyDLL implements access to a single DLL.
-// It will delay the load of the DLL until the first
-// call to its Handle method or to one of its
-// LazyProc's Addr method.
-type LazyDLL struct {
-       Name string
-
-       // System determines whether the DLL must be loaded from the
-       // Windows System directory, bypassing the normal DLL search
-       // path.
-       System bool
-
-       mu  sync.Mutex
-       dll *DLL // non nil once DLL is loaded
-}
-
-// Load loads DLL file d.Name into memory. It returns an error if fails.
-// Load will not try to load DLL, if it is already loaded into memory.
-func (d *LazyDLL) Load() error {
-       // Non-racy version of:
-       // if d.dll != nil {
-       if atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&d.dll))) != nil {
-               return nil
-       }
-       d.mu.Lock()
-       defer d.mu.Unlock()
-       if d.dll != nil {
-               return nil
-       }
-
-       // kernel32.dll is special, since it's where LoadLibraryEx comes from.
-       // The kernel already special-cases its name, so it's always
-       // loaded from system32.
-       var dll *DLL
-       var err error
-       if d.Name == "kernel32.dll" {
-               dll, err = LoadDLL(d.Name)
-       } else {
-               dll, err = loadLibraryEx(d.Name, d.System)
-       }
-       if err != nil {
-               return err
-       }
-
-       // Non-racy version of:
-       // d.dll = dll
-       atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&d.dll)), unsafe.Pointer(dll))
-       return nil
-}
-
-// mustLoad is like Load but panics if search fails.
-func (d *LazyDLL) mustLoad() {
-       e := d.Load()
-       if e != nil {
-               panic(e)
-       }
-}
-
-// Handle returns d's module handle.
-func (d *LazyDLL) Handle() uintptr {
-       d.mustLoad()
-       return uintptr(d.dll.Handle)
-}
-
-// NewProc returns a LazyProc for accessing the named procedure in the DLL d.
-func (d *LazyDLL) NewProc(name string) *LazyProc {
-       return &LazyProc{l: d, Name: name}
-}
-
-// NewLazyDLL creates new LazyDLL associated with DLL file.
-func NewLazyDLL(name string) *LazyDLL {
-       return &LazyDLL{Name: name}
-}
-
-// NewLazySystemDLL is like NewLazyDLL, but will only
-// search Windows System directory for the DLL if name is
-// a base name (like "advapi32.dll").
-func NewLazySystemDLL(name string) *LazyDLL {
-       return &LazyDLL{Name: name, System: true}
-}
-
-// A LazyProc implements access to a procedure inside a LazyDLL.
-// It delays the lookup until the Addr method is called.
-type LazyProc struct {
-       Name string
-
-       mu   sync.Mutex
-       l    *LazyDLL
-       proc *Proc
-}
-
-// Find searches DLL for procedure named p.Name. It returns
-// an error if search fails. Find will not search procedure,
-// if it is already found and loaded into memory.
-func (p *LazyProc) Find() error {
-       // Non-racy version of:
-       // if p.proc == nil {
-       if atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&p.proc))) == nil {
-               p.mu.Lock()
-               defer p.mu.Unlock()
-               if p.proc == nil {
-                       e := p.l.Load()
-                       if e != nil {
-                               return e
-                       }
-                       proc, e := p.l.dll.FindProc(p.Name)
-                       if e != nil {
-                               return e
-                       }
-                       // Non-racy version of:
-                       // p.proc = proc
-                       atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&p.proc)), unsafe.Pointer(proc))
-               }
-       }
-       return nil
-}
-
-// mustFind is like Find but panics if search fails.
-func (p *LazyProc) mustFind() {
-       e := p.Find()
-       if e != nil {
-               panic(e)
-       }
-}
-
-// Addr returns the address of the procedure represented by p.
-// The return value can be passed to Syscall to run the procedure.
-func (p *LazyProc) Addr() uintptr {
-       p.mustFind()
-       return p.proc.Addr()
-}
-
-//go:uintptrescapes
-
-// Call executes procedure p with arguments a. It will panic, if more then 15 arguments
-// are supplied.
-//
-// The returned error is always non-nil, constructed from the result of GetLastError.
-// Callers must inspect the primary return value to decide whether an error occurred
-// (according to the semantics of the specific function being called) before consulting
-// the error. The error will be guaranteed to contain windows.Errno.
-func (p *LazyProc) Call(a ...uintptr) (r1, r2 uintptr, lastErr error) {
-       p.mustFind()
-       return p.proc.Call(a...)
-}
-
-var canDoSearchSystem32Once struct {
-       sync.Once
-       v bool
-}
-
-func initCanDoSearchSystem32() {
-       // https://msdn.microsoft.com/en-us/library/ms684179(v=vs.85).aspx says:
-       // "Windows 7, Windows Server 2008 R2, Windows Vista, and Windows
-       // Server 2008: The LOAD_LIBRARY_SEARCH_* flags are available on
-       // systems that have KB2533623 installed. To determine whether the
-       // flags are available, use GetProcAddress to get the address of the
-       // AddDllDirectory, RemoveDllDirectory, or SetDefaultDllDirectories
-       // function. If GetProcAddress succeeds, the LOAD_LIBRARY_SEARCH_*
-       // flags can be used with LoadLibraryEx."
-       canDoSearchSystem32Once.v = (modkernel32.NewProc("AddDllDirectory").Find() == nil)
-}
-
-func canDoSearchSystem32() bool {
-       canDoSearchSystem32Once.Do(initCanDoSearchSystem32)
-       return canDoSearchSystem32Once.v
-}
-
-func isBaseName(name string) bool {
-       for _, c := range name {
-               if c == ':' || c == '/' || c == '\\' {
-                       return false
-               }
-       }
-       return true
-}
-
-// loadLibraryEx wraps the Windows LoadLibraryEx function.
-//
-// See https://msdn.microsoft.com/en-us/library/windows/desktop/ms684179(v=vs.85).aspx
-//
-// If name is not an absolute path, LoadLibraryEx searches for the DLL
-// in a variety of automatic locations unless constrained by flags.
-// See: https://msdn.microsoft.com/en-us/library/ff919712%28VS.85%29.aspx
-func loadLibraryEx(name string, system bool) (*DLL, error) {
-       loadDLL := name
-       var flags uintptr
-       if system {
-               if canDoSearchSystem32() {
-                       const LOAD_LIBRARY_SEARCH_SYSTEM32 = 0x00000800
-                       flags = LOAD_LIBRARY_SEARCH_SYSTEM32
-               } else if isBaseName(name) {
-                       // WindowsXP or unpatched Windows machine
-                       // trying to load "foo.dll" out of the system
-                       // folder, but LoadLibraryEx doesn't support
-                       // that yet on their system, so emulate it.
-                       windir, _ := Getenv("WINDIR") // old var; apparently works on XP
-                       if windir == "" {
-                               return nil, errString("%WINDIR% not defined")
-                       }
-                       loadDLL = windir + "\\System32\\" + name
-               }
-       }
-       h, err := LoadLibraryEx(loadDLL, 0, flags)
-       if err != nil {
-               return nil, err
-       }
-       return &DLL{Name: name, Handle: h}, nil
-}
-
-type errString string
-
-func (s errString) Error() string { return string(s) }
diff --git a/vendor/golang.org/x/sys/windows/env_unset.go b/vendor/golang.org/x/sys/windows/env_unset.go
deleted file mode 100644 (file)
index 4ed03ae..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright 2014 The Go Authors.  All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-// +build go1.4
-
-package windows
-
-import "syscall"
-
-func Unsetenv(key string) error {
-       // This was added in Go 1.4.
-       return syscall.Unsetenv(key)
-}
diff --git a/vendor/golang.org/x/sys/windows/env_windows.go b/vendor/golang.org/x/sys/windows/env_windows.go
deleted file mode 100644 (file)
index a9d8ef4..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2010 The Go Authors.  All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Windows environment variables.
-
-package windows
-
-import "syscall"
-
-func Getenv(key string) (value string, found bool) {
-       return syscall.Getenv(key)
-}
-
-func Setenv(key, value string) error {
-       return syscall.Setenv(key, value)
-}
-
-func Clearenv() {
-       syscall.Clearenv()
-}
-
-func Environ() []string {
-       return syscall.Environ()
-}
diff --git a/vendor/golang.org/x/sys/windows/eventlog.go b/vendor/golang.org/x/sys/windows/eventlog.go
deleted file mode 100644 (file)
index 40af946..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-package windows
-
-const (
-       EVENTLOG_SUCCESS          = 0
-       EVENTLOG_ERROR_TYPE       = 1
-       EVENTLOG_WARNING_TYPE     = 2
-       EVENTLOG_INFORMATION_TYPE = 4
-       EVENTLOG_AUDIT_SUCCESS    = 8
-       EVENTLOG_AUDIT_FAILURE    = 16
-)
-
-//sys  RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) [failretval==0] = advapi32.RegisterEventSourceW
-//sys  DeregisterEventSource(handle Handle) (err error) = advapi32.DeregisterEventSource
-//sys  ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) = advapi32.ReportEventW
diff --git a/vendor/golang.org/x/sys/windows/exec_windows.go b/vendor/golang.org/x/sys/windows/exec_windows.go
deleted file mode 100644 (file)
index 3606c3a..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Fork, exec, wait, etc.
-
-package windows
-
-// EscapeArg rewrites command line argument s as prescribed
-// in http://msdn.microsoft.com/en-us/library/ms880421.
-// This function returns "" (2 double quotes) if s is empty.
-// Alternatively, these transformations are done:
-// - every back slash (\) is doubled, but only if immediately
-//   followed by double quote (");
-// - every double quote (") is escaped by back slash (\);
-// - finally, s is wrapped with double quotes (arg -> "arg"),
-//   but only if there is space or tab inside s.
-func EscapeArg(s string) string {
-       if len(s) == 0 {
-               return "\"\""
-       }
-       n := len(s)
-       hasSpace := false
-       for i := 0; i < len(s); i++ {
-               switch s[i] {
-               case '"', '\\':
-                       n++
-               case ' ', '\t':
-                       hasSpace = true
-               }
-       }
-       if hasSpace {
-               n += 2
-       }
-       if n == len(s) {
-               return s
-       }
-
-       qs := make([]byte, n)
-       j := 0
-       if hasSpace {
-               qs[j] = '"'
-               j++
-       }
-       slashes := 0
-       for i := 0; i < len(s); i++ {
-               switch s[i] {
-               default:
-                       slashes = 0
-                       qs[j] = s[i]
-               case '\\':
-                       slashes++
-                       qs[j] = s[i]
-               case '"':
-                       for ; slashes > 0; slashes-- {
-                               qs[j] = '\\'
-                               j++
-                       }
-                       qs[j] = '\\'
-                       j++
-                       qs[j] = s[i]
-               }
-               j++
-       }
-       if hasSpace {
-               for ; slashes > 0; slashes-- {
-                       qs[j] = '\\'
-                       j++
-               }
-               qs[j] = '"'
-               j++
-       }
-       return string(qs[:j])
-}
-
-func CloseOnExec(fd Handle) {
-       SetHandleInformation(Handle(fd), HANDLE_FLAG_INHERIT, 0)
-}
-
-// FullPath retrieves the full path of the specified file.
-func FullPath(name string) (path string, err error) {
-       p, err := UTF16PtrFromString(name)
-       if err != nil {
-               return "", err
-       }
-       n := uint32(100)
-       for {
-               buf := make([]uint16, n)
-               n, err = GetFullPathName(p, uint32(len(buf)), &buf[0], nil)
-               if err != nil {
-                       return "", err
-               }
-               if n <= uint32(len(buf)) {
-                       return UTF16ToString(buf[:n]), nil
-               }
-       }
-}
diff --git a/vendor/golang.org/x/sys/windows/mksyscall.go b/vendor/golang.org/x/sys/windows/mksyscall.go
deleted file mode 100644 (file)
index e1c88c9..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright 2009 The Go Authors.  All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package windows
-
-//go:generate go run $GOROOT/src/syscall/mksyscall_windows.go -output zsyscall_windows.go eventlog.go service.go syscall_windows.go security_windows.go
diff --git a/vendor/golang.org/x/sys/windows/race.go b/vendor/golang.org/x/sys/windows/race.go
deleted file mode 100644 (file)
index 343e18a..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2012 The Go Authors.  All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows,race
-
-package windows
-
-import (
-       "runtime"
-       "unsafe"
-)
-
-const raceenabled = true
-
-func raceAcquire(addr unsafe.Pointer) {
-       runtime.RaceAcquire(addr)
-}
-
-func raceReleaseMerge(addr unsafe.Pointer) {
-       runtime.RaceReleaseMerge(addr)
-}
-
-func raceReadRange(addr unsafe.Pointer, len int) {
-       runtime.RaceReadRange(addr, len)
-}
-
-func raceWriteRange(addr unsafe.Pointer, len int) {
-       runtime.RaceWriteRange(addr, len)
-}
diff --git a/vendor/golang.org/x/sys/windows/race0.go b/vendor/golang.org/x/sys/windows/race0.go
deleted file mode 100644 (file)
index 17af843..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2012 The Go Authors.  All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows,!race
-
-package windows
-
-import (
-       "unsafe"
-)
-
-const raceenabled = false
-
-func raceAcquire(addr unsafe.Pointer) {
-}
-
-func raceReleaseMerge(addr unsafe.Pointer) {
-}
-
-func raceReadRange(addr unsafe.Pointer, len int) {
-}
-
-func raceWriteRange(addr unsafe.Pointer, len int) {
-}
diff --git a/vendor/golang.org/x/sys/windows/registry/export_test.go b/vendor/golang.org/x/sys/windows/registry/export_test.go
deleted file mode 100644 (file)
index 8badf6f..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright 2015 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-package registry
-
-func (k Key) SetValue(name string, valtype uint32, data []byte) error {
-       return k.setValue(name, valtype, data)
-}
diff --git a/vendor/golang.org/x/sys/windows/registry/key.go b/vendor/golang.org/x/sys/windows/registry/key.go
deleted file mode 100644 (file)
index d0beb19..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-// Copyright 2015 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-// Package registry provides access to the Windows registry.
-//
-// Here is a simple example, opening a registry key and reading a string value from it.
-//
-//     k, err := registry.OpenKey(registry.LOCAL_MACHINE, `SOFTWARE\Microsoft\Windows NT\CurrentVersion`, registry.QUERY_VALUE)
-//     if err != nil {
-//             log.Fatal(err)
-//     }
-//     defer k.Close()
-//
-//     s, _, err := k.GetStringValue("SystemRoot")
-//     if err != nil {
-//             log.Fatal(err)
-//     }
-//     fmt.Printf("Windows system root is %q\n", s)
-//
-package registry
-
-import (
-       "io"
-       "syscall"
-       "time"
-)
-
-const (
-       // Registry key security and access rights.
-       // See https://msdn.microsoft.com/en-us/library/windows/desktop/ms724878.aspx
-       // for details.
-       ALL_ACCESS         = 0xf003f
-       CREATE_LINK        = 0x00020
-       CREATE_SUB_KEY     = 0x00004
-       ENUMERATE_SUB_KEYS = 0x00008
-       EXECUTE            = 0x20019
-       NOTIFY             = 0x00010
-       QUERY_VALUE        = 0x00001
-       READ               = 0x20019
-       SET_VALUE          = 0x00002
-       WOW64_32KEY        = 0x00200
-       WOW64_64KEY        = 0x00100
-       WRITE              = 0x20006
-)
-
-// Key is a handle to an open Windows registry key.
-// Keys can be obtained by calling OpenKey; there are
-// also some predefined root keys such as CURRENT_USER.
-// Keys can be used directly in the Windows API.
-type Key syscall.Handle
-
-const (
-       // Windows defines some predefined root keys that are always open.
-       // An application can use these keys as entry points to the registry.
-       // Normally these keys are used in OpenKey to open new keys,
-       // but they can also be used anywhere a Key is required.
-       CLASSES_ROOT     = Key(syscall.HKEY_CLASSES_ROOT)
-       CURRENT_USER     = Key(syscall.HKEY_CURRENT_USER)
-       LOCAL_MACHINE    = Key(syscall.HKEY_LOCAL_MACHINE)
-       USERS            = Key(syscall.HKEY_USERS)
-       CURRENT_CONFIG   = Key(syscall.HKEY_CURRENT_CONFIG)
-       PERFORMANCE_DATA = Key(syscall.HKEY_PERFORMANCE_DATA)
-)
-
-// Close closes open key k.
-func (k Key) Close() error {
-       return syscall.RegCloseKey(syscall.Handle(k))
-}
-
-// OpenKey opens a new key with path name relative to key k.
-// It accepts any open key, including CURRENT_USER and others,
-// and returns the new key and an error.
-// The access parameter specifies desired access rights to the
-// key to be opened.
-func OpenKey(k Key, path string, access uint32) (Key, error) {
-       p, err := syscall.UTF16PtrFromString(path)
-       if err != nil {
-               return 0, err
-       }
-       var subkey syscall.Handle
-       err = syscall.RegOpenKeyEx(syscall.Handle(k), p, 0, access, &subkey)
-       if err != nil {
-               return 0, err
-       }
-       return Key(subkey), nil
-}
-
-// OpenRemoteKey opens a predefined registry key on another
-// computer pcname. The key to be opened is specified by k, but
-// can only be one of LOCAL_MACHINE, PERFORMANCE_DATA or USERS.
-// If pcname is "", OpenRemoteKey returns local computer key.
-func OpenRemoteKey(pcname string, k Key) (Key, error) {
-       var err error
-       var p *uint16
-       if pcname != "" {
-               p, err = syscall.UTF16PtrFromString(`\\` + pcname)
-               if err != nil {
-                       return 0, err
-               }
-       }
-       var remoteKey syscall.Handle
-       err = regConnectRegistry(p, syscall.Handle(k), &remoteKey)
-       if err != nil {
-               return 0, err
-       }
-       return Key(remoteKey), nil
-}
-
-// ReadSubKeyNames returns the names of subkeys of key k.
-// The parameter n controls the number of returned names,
-// analogous to the way os.File.Readdirnames works.
-func (k Key) ReadSubKeyNames(n int) ([]string, error) {
-       ki, err := k.Stat()
-       if err != nil {
-               return nil, err
-       }
-       names := make([]string, 0, ki.SubKeyCount)
-       buf := make([]uint16, ki.MaxSubKeyLen+1) // extra room for terminating zero byte
-loopItems:
-       for i := uint32(0); ; i++ {
-               if n > 0 {
-                       if len(names) == n {
-                               return names, nil
-                       }
-               }
-               l := uint32(len(buf))
-               for {
-                       err := syscall.RegEnumKeyEx(syscall.Handle(k), i, &buf[0], &l, nil, nil, nil, nil)
-                       if err == nil {
-                               break
-                       }
-                       if err == syscall.ERROR_MORE_DATA {
-                               // Double buffer size and try again.
-                               l = uint32(2 * len(buf))
-                               buf = make([]uint16, l)
-                               continue
-                       }
-                       if err == _ERROR_NO_MORE_ITEMS {
-                               break loopItems
-                       }
-                       return names, err
-               }
-               names = append(names, syscall.UTF16ToString(buf[:l]))
-       }
-       if n > len(names) {
-               return names, io.EOF
-       }
-       return names, nil
-}
-
-// CreateKey creates a key named path under open key k.
-// CreateKey returns the new key and a boolean flag that reports
-// whether the key already existed.
-// The access parameter specifies the access rights for the key
-// to be created.
-func CreateKey(k Key, path string, access uint32) (newk Key, openedExisting bool, err error) {
-       var h syscall.Handle
-       var d uint32
-       err = regCreateKeyEx(syscall.Handle(k), syscall.StringToUTF16Ptr(path),
-               0, nil, _REG_OPTION_NON_VOLATILE, access, nil, &h, &d)
-       if err != nil {
-               return 0, false, err
-       }
-       return Key(h), d == _REG_OPENED_EXISTING_KEY, nil
-}
-
-// DeleteKey deletes the subkey path of key k and its values.
-func DeleteKey(k Key, path string) error {
-       return regDeleteKey(syscall.Handle(k), syscall.StringToUTF16Ptr(path))
-}
-
-// A KeyInfo describes the statistics of a key. It is returned by Stat.
-type KeyInfo struct {
-       SubKeyCount     uint32
-       MaxSubKeyLen    uint32 // size of the key's subkey with the longest name, in Unicode characters, not including the terminating zero byte
-       ValueCount      uint32
-       MaxValueNameLen uint32 // size of the key's longest value name, in Unicode characters, not including the terminating zero byte
-       MaxValueLen     uint32 // longest data component among the key's values, in bytes
-       lastWriteTime   syscall.Filetime
-}
-
-// ModTime returns the key's last write time.
-func (ki *KeyInfo) ModTime() time.Time {
-       return time.Unix(0, ki.lastWriteTime.Nanoseconds())
-}
-
-// Stat retrieves information about the open key k.
-func (k Key) Stat() (*KeyInfo, error) {
-       var ki KeyInfo
-       err := syscall.RegQueryInfoKey(syscall.Handle(k), nil, nil, nil,
-               &ki.SubKeyCount, &ki.MaxSubKeyLen, nil, &ki.ValueCount,
-               &ki.MaxValueNameLen, &ki.MaxValueLen, nil, &ki.lastWriteTime)
-       if err != nil {
-               return nil, err
-       }
-       return &ki, nil
-}
diff --git a/vendor/golang.org/x/sys/windows/registry/mksyscall.go b/vendor/golang.org/x/sys/windows/registry/mksyscall.go
deleted file mode 100644 (file)
index 0ac95ff..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright 2015 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package registry
-
-//go:generate go run $GOROOT/src/syscall/mksyscall_windows.go -output zsyscall_windows.go syscall.go
diff --git a/vendor/golang.org/x/sys/windows/registry/registry_test.go b/vendor/golang.org/x/sys/windows/registry/registry_test.go
deleted file mode 100644 (file)
index 9c1b782..0000000
+++ /dev/null
@@ -1,756 +0,0 @@
-// Copyright 2015 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-package registry_test
-
-import (
-       "bytes"
-       "crypto/rand"
-       "os"
-       "syscall"
-       "testing"
-       "time"
-       "unsafe"
-
-       "golang.org/x/sys/windows/registry"
-)
-
-func randKeyName(prefix string) string {
-       const numbers = "0123456789"
-       buf := make([]byte, 10)
-       rand.Read(buf)
-       for i, b := range buf {
-               buf[i] = numbers[b%byte(len(numbers))]
-       }
-       return prefix + string(buf)
-}
-
-func TestReadSubKeyNames(t *testing.T) {
-       k, err := registry.OpenKey(registry.CLASSES_ROOT, "TypeLib", registry.ENUMERATE_SUB_KEYS|registry.QUERY_VALUE)
-       if err != nil {
-               t.Fatal(err)
-       }
-       defer k.Close()
-
-       names, err := k.ReadSubKeyNames(-1)
-       if err != nil {
-               t.Fatal(err)
-       }
-       var foundStdOle bool
-       for _, name := range names {
-               // Every PC has "stdole 2.0 OLE Automation" library installed.
-               if name == "{00020430-0000-0000-C000-000000000046}" {
-                       foundStdOle = true
-               }
-       }
-       if !foundStdOle {
-               t.Fatal("could not find stdole 2.0 OLE Automation")
-       }
-}
-
-func TestCreateOpenDeleteKey(t *testing.T) {
-       k, err := registry.OpenKey(registry.CURRENT_USER, "Software", registry.QUERY_VALUE)
-       if err != nil {
-               t.Fatal(err)
-       }
-       defer k.Close()
-
-       testKName := randKeyName("TestCreateOpenDeleteKey_")
-
-       testK, exist, err := registry.CreateKey(k, testKName, registry.CREATE_SUB_KEY)
-       if err != nil {
-               t.Fatal(err)
-       }
-       defer testK.Close()
-
-       if exist {
-               t.Fatalf("key %q already exists", testKName)
-       }
-
-       testKAgain, exist, err := registry.CreateKey(k, testKName, registry.CREATE_SUB_KEY)
-       if err != nil {
-               t.Fatal(err)
-       }
-       defer testKAgain.Close()
-
-       if !exist {
-               t.Fatalf("key %q should already exist", testKName)
-       }
-
-       testKOpened, err := registry.OpenKey(k, testKName, registry.ENUMERATE_SUB_KEYS)
-       if err != nil {
-               t.Fatal(err)
-       }
-       defer testKOpened.Close()
-
-       err = registry.DeleteKey(k, testKName)
-       if err != nil {
-               t.Fatal(err)
-       }
-
-       testKOpenedAgain, err := registry.OpenKey(k, testKName, registry.ENUMERATE_SUB_KEYS)
-       if err == nil {
-               defer testKOpenedAgain.Close()
-               t.Fatalf("key %q should already been deleted", testKName)
-       }
-       if err != registry.ErrNotExist {
-               t.Fatalf(`unexpected error ("not exist" expected): %v`, err)
-       }
-}
-
-func equalStringSlice(a, b []string) bool {
-       if len(a) != len(b) {
-               return false
-       }
-       if a == nil {
-               return true
-       }
-       for i := range a {
-               if a[i] != b[i] {
-                       return false
-               }
-       }
-       return true
-}
-
-type ValueTest struct {
-       Type     uint32
-       Name     string
-       Value    interface{}
-       WillFail bool
-}
-
-var ValueTests = []ValueTest{
-       {Type: registry.SZ, Name: "String1", Value: ""},
-       {Type: registry.SZ, Name: "String2", Value: "\000", WillFail: true},
-       {Type: registry.SZ, Name: "String3", Value: "Hello World"},
-       {Type: registry.SZ, Name: "String4", Value: "Hello World\000", WillFail: true},
-       {Type: registry.EXPAND_SZ, Name: "ExpString1", Value: ""},
-       {Type: registry.EXPAND_SZ, Name: "ExpString2", Value: "\000", WillFail: true},
-       {Type: registry.EXPAND_SZ, Name: "ExpString3", Value: "Hello World"},
-       {Type: registry.EXPAND_SZ, Name: "ExpString4", Value: "Hello\000World", WillFail: true},
-       {Type: registry.EXPAND_SZ, Name: "ExpString5", Value: "%PATH%"},
-       {Type: registry.EXPAND_SZ, Name: "ExpString6", Value: "%NO_SUCH_VARIABLE%"},
-       {Type: registry.EXPAND_SZ, Name: "ExpString7", Value: "%PATH%;."},
-       {Type: registry.BINARY, Name: "Binary1", Value: []byte{}},
-       {Type: registry.BINARY, Name: "Binary2", Value: []byte{1, 2, 3}},
-       {Type: registry.BINARY, Name: "Binary3", Value: []byte{3, 2, 1, 0, 1, 2, 3}},
-       {Type: registry.DWORD, Name: "Dword1", Value: uint64(0)},
-       {Type: registry.DWORD, Name: "Dword2", Value: uint64(1)},
-       {Type: registry.DWORD, Name: "Dword3", Value: uint64(0xff)},
-       {Type: registry.DWORD, Name: "Dword4", Value: uint64(0xffff)},
-       {Type: registry.QWORD, Name: "Qword1", Value: uint64(0)},
-       {Type: registry.QWORD, Name: "Qword2", Value: uint64(1)},
-       {Type: registry.QWORD, Name: "Qword3", Value: uint64(0xff)},
-       {Type: registry.QWORD, Name: "Qword4", Value: uint64(0xffff)},
-       {Type: registry.QWORD, Name: "Qword5", Value: uint64(0xffffff)},
-       {Type: registry.QWORD, Name: "Qword6", Value: uint64(0xffffffff)},
-       {Type: registry.MULTI_SZ, Name: "MultiString1", Value: []string{"a", "b", "c"}},
-       {Type: registry.MULTI_SZ, Name: "MultiString2", Value: []string{"abc", "", "cba"}},
-       {Type: registry.MULTI_SZ, Name: "MultiString3", Value: []string{""}},
-       {Type: registry.MULTI_SZ, Name: "MultiString4", Value: []string{"abcdef"}},
-       {Type: registry.MULTI_SZ, Name: "MultiString5", Value: []string{"\000"}, WillFail: true},
-       {Type: registry.MULTI_SZ, Name: "MultiString6", Value: []string{"a\000b"}, WillFail: true},
-       {Type: registry.MULTI_SZ, Name: "MultiString7", Value: []string{"ab", "\000", "cd"}, WillFail: true},
-       {Type: registry.MULTI_SZ, Name: "MultiString8", Value: []string{"\000", "cd"}, WillFail: true},
-       {Type: registry.MULTI_SZ, Name: "MultiString9", Value: []string{"ab", "\000"}, WillFail: true},
-}
-
-func setValues(t *testing.T, k registry.Key) {
-       for _, test := range ValueTests {
-               var err error
-               switch test.Type {
-               case registry.SZ:
-                       err = k.SetStringValue(test.Name, test.Value.(string))
-               case registry.EXPAND_SZ:
-                       err = k.SetExpandStringValue(test.Name, test.Value.(string))
-               case registry.MULTI_SZ:
-                       err = k.SetStringsValue(test.Name, test.Value.([]string))
-               case registry.BINARY:
-                       err = k.SetBinaryValue(test.Name, test.Value.([]byte))
-               case registry.DWORD:
-                       err = k.SetDWordValue(test.Name, uint32(test.Value.(uint64)))
-               case registry.QWORD:
-                       err = k.SetQWordValue(test.Name, test.Value.(uint64))
-               default:
-                       t.Fatalf("unsupported type %d for %s value", test.Type, test.Name)
-               }
-               if test.WillFail {
-                       if err == nil {
-                               t.Fatalf("setting %s value %q should fail, but succeeded", test.Name, test.Value)
-                       }
-               } else {
-                       if err != nil {
-                               t.Fatal(err)
-                       }
-               }
-       }
-}
-
-func enumerateValues(t *testing.T, k registry.Key) {
-       names, err := k.ReadValueNames(-1)
-       if err != nil {
-               t.Error(err)
-               return
-       }
-       haveNames := make(map[string]bool)
-       for _, n := range names {
-               haveNames[n] = false
-       }
-       for _, test := range ValueTests {
-               wantFound := !test.WillFail
-               _, haveFound := haveNames[test.Name]
-               if wantFound && !haveFound {
-                       t.Errorf("value %s is not found while enumerating", test.Name)
-               }
-               if haveFound && !wantFound {
-                       t.Errorf("value %s is found while enumerating, but expected to fail", test.Name)
-               }
-               if haveFound {
-                       delete(haveNames, test.Name)
-               }
-       }
-       for n, v := range haveNames {
-               t.Errorf("value %s (%v) is found while enumerating, but has not been cretaed", n, v)
-       }
-}
-
-func testErrNotExist(t *testing.T, name string, err error) {
-       if err == nil {
-               t.Errorf("%s value should not exist", name)
-               return
-       }
-       if err != registry.ErrNotExist {
-               t.Errorf("reading %s value should return 'not exist' error, but got: %s", name, err)
-               return
-       }
-}
-
-func testErrUnexpectedType(t *testing.T, test ValueTest, gottype uint32, err error) {
-       if err == nil {
-               t.Errorf("GetXValue(%q) should not succeed", test.Name)
-               return
-       }
-       if err != registry.ErrUnexpectedType {
-               t.Errorf("reading %s value should return 'unexpected key value type' error, but got: %s", test.Name, err)
-               return
-       }
-       if gottype != test.Type {
-               t.Errorf("want %s value type %v, got %v", test.Name, test.Type, gottype)
-               return
-       }
-}
-
-func testGetStringValue(t *testing.T, k registry.Key, test ValueTest) {
-       got, gottype, err := k.GetStringValue(test.Name)
-       if err != nil {
-               t.Errorf("GetStringValue(%s) failed: %v", test.Name, err)
-               return
-       }
-       if got != test.Value {
-               t.Errorf("want %s value %q, got %q", test.Name, test.Value, got)
-               return
-       }
-       if gottype != test.Type {
-               t.Errorf("want %s value type %v, got %v", test.Name, test.Type, gottype)
-               return
-       }
-       if gottype == registry.EXPAND_SZ {
-               _, err = registry.ExpandString(got)
-               if err != nil {
-                       t.Errorf("ExpandString(%s) failed: %v", got, err)
-                       return
-               }
-       }
-}
-
-func testGetIntegerValue(t *testing.T, k registry.Key, test ValueTest) {
-       got, gottype, err := k.GetIntegerValue(test.Name)
-       if err != nil {
-               t.Errorf("GetIntegerValue(%s) failed: %v", test.Name, err)
-               return
-       }
-       if got != test.Value.(uint64) {
-               t.Errorf("want %s value %v, got %v", test.Name, test.Value, got)
-               return
-       }
-       if gottype != test.Type {
-               t.Errorf("want %s value type %v, got %v", test.Name, test.Type, gottype)
-               return
-       }
-}
-
-func testGetBinaryValue(t *testing.T, k registry.Key, test ValueTest) {
-       got, gottype, err := k.GetBinaryValue(test.Name)
-       if err != nil {
-               t.Errorf("GetBinaryValue(%s) failed: %v", test.Name, err)
-               return
-       }
-       if !bytes.Equal(got, test.Value.([]byte)) {
-               t.Errorf("want %s value %v, got %v", test.Name, test.Value, got)
-               return
-       }
-       if gottype != test.Type {
-               t.Errorf("want %s value type %v, got %v", test.Name, test.Type, gottype)
-               return
-       }
-}
-
-func testGetStringsValue(t *testing.T, k registry.Key, test ValueTest) {
-       got, gottype, err := k.GetStringsValue(test.Name)
-       if err != nil {
-               t.Errorf("GetStringsValue(%s) failed: %v", test.Name, err)
-               return
-       }
-       if !equalStringSlice(got, test.Value.([]string)) {
-               t.Errorf("want %s value %#v, got %#v", test.Name, test.Value, got)
-               return
-       }
-       if gottype != test.Type {
-               t.Errorf("want %s value type %v, got %v", test.Name, test.Type, gottype)
-               return
-       }
-}
-
-func testGetValue(t *testing.T, k registry.Key, test ValueTest, size int) {
-       if size <= 0 {
-               return
-       }
-       // read data with no buffer
-       gotsize, gottype, err := k.GetValue(test.Name, nil)
-       if err != nil {
-               t.Errorf("GetValue(%s, [%d]byte) failed: %v", test.Name, size, err)
-               return
-       }
-       if gotsize != size {
-               t.Errorf("want %s value size of %d, got %v", test.Name, size, gotsize)
-               return
-       }
-       if gottype != test.Type {
-               t.Errorf("want %s value type %v, got %v", test.Name, test.Type, gottype)
-               return
-       }
-       // read data with short buffer
-       gotsize, gottype, err = k.GetValue(test.Name, make([]byte, size-1))
-       if err == nil {
-               t.Errorf("GetValue(%s, [%d]byte) should fail, but suceeded", test.Name, size-1)
-               return
-       }
-       if err != registry.ErrShortBuffer {
-               t.Errorf("reading %s value should return 'short buffer' error, but got: %s", test.Name, err)
-               return
-       }
-       if gotsize != size {
-               t.Errorf("want %s value size of %d, got %v", test.Name, size, gotsize)
-               return
-       }
-       if gottype != test.Type {
-               t.Errorf("want %s value type %v, got %v", test.Name, test.Type, gottype)
-               return
-       }
-       // read full data
-       gotsize, gottype, err = k.GetValue(test.Name, make([]byte, size))
-       if err != nil {
-               t.Errorf("GetValue(%s, [%d]byte) failed: %v", test.Name, size, err)
-               return
-       }
-       if gotsize != size {
-               t.Errorf("want %s value size of %d, got %v", test.Name, size, gotsize)
-               return
-       }
-       if gottype != test.Type {
-               t.Errorf("want %s value type %v, got %v", test.Name, test.Type, gottype)
-               return
-       }
-       // check GetValue returns ErrNotExist as required
-       _, _, err = k.GetValue(test.Name+"_not_there", make([]byte, size))
-       if err == nil {
-               t.Errorf("GetValue(%q) should not succeed", test.Name)
-               return
-       }
-       if err != registry.ErrNotExist {
-               t.Errorf("GetValue(%q) should return 'not exist' error, but got: %s", test.Name, err)
-               return
-       }
-}
-
-func testValues(t *testing.T, k registry.Key) {
-       for _, test := range ValueTests {
-               switch test.Type {
-               case registry.SZ, registry.EXPAND_SZ:
-                       if test.WillFail {
-                               _, _, err := k.GetStringValue(test.Name)
-                               testErrNotExist(t, test.Name, err)
-                       } else {
-                               testGetStringValue(t, k, test)
-                               _, gottype, err := k.GetIntegerValue(test.Name)
-                               testErrUnexpectedType(t, test, gottype, err)
-                               // Size of utf16 string in bytes is not perfect,
-                               // but correct for current test values.
-                               // Size also includes terminating 0.
-                               testGetValue(t, k, test, (len(test.Value.(string))+1)*2)
-                       }
-                       _, _, err := k.GetStringValue(test.Name + "_string_not_created")
-                       testErrNotExist(t, test.Name+"_string_not_created", err)
-               case registry.DWORD, registry.QWORD:
-                       testGetIntegerValue(t, k, test)
-                       _, gottype, err := k.GetBinaryValue(test.Name)
-                       testErrUnexpectedType(t, test, gottype, err)
-                       _, _, err = k.GetIntegerValue(test.Name + "_int_not_created")
-                       testErrNotExist(t, test.Name+"_int_not_created", err)
-                       size := 8
-                       if test.Type == registry.DWORD {
-                               size = 4
-                       }
-                       testGetValue(t, k, test, size)
-               case registry.BINARY:
-                       testGetBinaryValue(t, k, test)
-                       _, gottype, err := k.GetStringsValue(test.Name)
-                       testErrUnexpectedType(t, test, gottype, err)
-                       _, _, err = k.GetBinaryValue(test.Name + "_byte_not_created")
-                       testErrNotExist(t, test.Name+"_byte_not_created", err)
-                       testGetValue(t, k, test, len(test.Value.([]byte)))
-               case registry.MULTI_SZ:
-                       if test.WillFail {
-                               _, _, err := k.GetStringsValue(test.Name)
-                               testErrNotExist(t, test.Name, err)
-                       } else {
-                               testGetStringsValue(t, k, test)
-                               _, gottype, err := k.GetStringValue(test.Name)
-                               testErrUnexpectedType(t, test, gottype, err)
-                               size := 0
-                               for _, s := range test.Value.([]string) {
-                                       size += len(s) + 1 // nil terminated
-                               }
-                               size += 1 // extra nil at the end
-                               size *= 2 // count bytes, not uint16
-                               testGetValue(t, k, test, size)
-                       }
-                       _, _, err := k.GetStringsValue(test.Name + "_strings_not_created")
-                       testErrNotExist(t, test.Name+"_strings_not_created", err)
-               default:
-                       t.Errorf("unsupported type %d for %s value", test.Type, test.Name)
-                       continue
-               }
-       }
-}
-
-func testStat(t *testing.T, k registry.Key) {
-       subk, _, err := registry.CreateKey(k, "subkey", registry.CREATE_SUB_KEY)
-       if err != nil {
-               t.Error(err)
-               return
-       }
-       defer subk.Close()
-
-       defer registry.DeleteKey(k, "subkey")
-
-       ki, err := k.Stat()
-       if err != nil {
-               t.Error(err)
-               return
-       }
-       if ki.SubKeyCount != 1 {
-               t.Error("key must have 1 subkey")
-       }
-       if ki.MaxSubKeyLen != 6 {
-               t.Error("key max subkey name length must be 6")
-       }
-       if ki.ValueCount != 24 {
-               t.Errorf("key must have 24 values, but is %d", ki.ValueCount)
-       }
-       if ki.MaxValueNameLen != 12 {
-               t.Errorf("key max value name length must be 10, but is %d", ki.MaxValueNameLen)
-       }
-       if ki.MaxValueLen != 38 {
-               t.Errorf("key max value length must be 38, but is %d", ki.MaxValueLen)
-       }
-       if mt, ct := ki.ModTime(), time.Now(); ct.Sub(mt) > 100*time.Millisecond {
-               t.Errorf("key mod time is not close to current time: mtime=%v current=%v delta=%v", mt, ct, ct.Sub(mt))
-       }
-}
-
-func deleteValues(t *testing.T, k registry.Key) {
-       for _, test := range ValueTests {
-               if test.WillFail {
-                       continue
-               }
-               err := k.DeleteValue(test.Name)
-               if err != nil {
-                       t.Error(err)
-                       continue
-               }
-       }
-       names, err := k.ReadValueNames(-1)
-       if err != nil {
-               t.Error(err)
-               return
-       }
-       if len(names) != 0 {
-               t.Errorf("some values remain after deletion: %v", names)
-       }
-}
-
-func TestValues(t *testing.T) {
-       softwareK, err := registry.OpenKey(registry.CURRENT_USER, "Software", registry.QUERY_VALUE)
-       if err != nil {
-               t.Fatal(err)
-       }
-       defer softwareK.Close()
-
-       testKName := randKeyName("TestValues_")
-
-       k, exist, err := registry.CreateKey(softwareK, testKName, registry.CREATE_SUB_KEY|registry.QUERY_VALUE|registry.SET_VALUE)
-       if err != nil {
-               t.Fatal(err)
-       }
-       defer k.Close()
-
-       if exist {
-               t.Fatalf("key %q already exists", testKName)
-       }
-
-       defer registry.DeleteKey(softwareK, testKName)
-
-       setValues(t, k)
-
-       enumerateValues(t, k)
-
-       testValues(t, k)
-
-       testStat(t, k)
-
-       deleteValues(t, k)
-}
-
-func walkKey(t *testing.T, k registry.Key, kname string) {
-       names, err := k.ReadValueNames(-1)
-       if err != nil {
-               t.Fatalf("reading value names of %s failed: %v", kname, err)
-       }
-       for _, name := range names {
-               _, valtype, err := k.GetValue(name, nil)
-               if err != nil {
-                       t.Fatalf("reading value type of %s of %s failed: %v", name, kname, err)
-               }
-               switch valtype {
-               case registry.NONE:
-               case registry.SZ:
-                       _, _, err := k.GetStringValue(name)
-                       if err != nil {
-                               t.Error(err)
-                       }
-               case registry.EXPAND_SZ:
-                       s, _, err := k.GetStringValue(name)
-                       if err != nil {
-                               t.Error(err)
-                       }
-                       _, err = registry.ExpandString(s)
-                       if err != nil {
-                               t.Error(err)
-                       }
-               case registry.DWORD, registry.QWORD:
-                       _, _, err := k.GetIntegerValue(name)
-                       if err != nil {
-                               t.Error(err)
-                       }
-               case registry.BINARY:
-                       _, _, err := k.GetBinaryValue(name)
-                       if err != nil {
-                               t.Error(err)
-                       }
-               case registry.MULTI_SZ:
-                       _, _, err := k.GetStringsValue(name)
-                       if err != nil {
-                               t.Error(err)
-                       }
-               case registry.FULL_RESOURCE_DESCRIPTOR, registry.RESOURCE_LIST, registry.RESOURCE_REQUIREMENTS_LIST:
-                       // TODO: not implemented
-               default:
-                       t.Fatalf("value type %d of %s of %s failed: %v", valtype, name, kname, err)
-               }
-       }
-
-       names, err = k.ReadSubKeyNames(-1)
-       if err != nil {
-               t.Fatalf("reading sub-keys of %s failed: %v", kname, err)
-       }
-       for _, name := range names {
-               func() {
-                       subk, err := registry.OpenKey(k, name, registry.ENUMERATE_SUB_KEYS|registry.QUERY_VALUE)
-                       if err != nil {
-                               if err == syscall.ERROR_ACCESS_DENIED {
-                                       // ignore error, if we are not allowed to access this key
-                                       return
-                               }
-                               t.Fatalf("opening sub-keys %s of %s failed: %v", name, kname, err)
-                       }
-                       defer subk.Close()
-
-                       walkKey(t, subk, kname+`\`+name)
-               }()
-       }
-}
-
-func TestWalkFullRegistry(t *testing.T) {
-       if testing.Short() {
-               t.Skip("skipping long running test in short mode")
-       }
-       walkKey(t, registry.CLASSES_ROOT, "CLASSES_ROOT")
-       walkKey(t, registry.CURRENT_USER, "CURRENT_USER")
-       walkKey(t, registry.LOCAL_MACHINE, "LOCAL_MACHINE")
-       walkKey(t, registry.USERS, "USERS")
-       walkKey(t, registry.CURRENT_CONFIG, "CURRENT_CONFIG")
-}
-
-func TestExpandString(t *testing.T) {
-       got, err := registry.ExpandString("%PATH%")
-       if err != nil {
-               t.Fatal(err)
-       }
-       want := os.Getenv("PATH")
-       if got != want {
-               t.Errorf("want %q string expanded, got %q", want, got)
-       }
-}
-
-func TestInvalidValues(t *testing.T) {
-       softwareK, err := registry.OpenKey(registry.CURRENT_USER, "Software", registry.QUERY_VALUE)
-       if err != nil {
-               t.Fatal(err)
-       }
-       defer softwareK.Close()
-
-       testKName := randKeyName("TestInvalidValues_")
-
-       k, exist, err := registry.CreateKey(softwareK, testKName, registry.CREATE_SUB_KEY|registry.QUERY_VALUE|registry.SET_VALUE)
-       if err != nil {
-               t.Fatal(err)
-       }
-       defer k.Close()
-
-       if exist {
-               t.Fatalf("key %q already exists", testKName)
-       }
-
-       defer registry.DeleteKey(softwareK, testKName)
-
-       var tests = []struct {
-               Type uint32
-               Name string
-               Data []byte
-       }{
-               {registry.DWORD, "Dword1", nil},
-               {registry.DWORD, "Dword2", []byte{1, 2, 3}},
-               {registry.QWORD, "Qword1", nil},
-               {registry.QWORD, "Qword2", []byte{1, 2, 3}},
-               {registry.QWORD, "Qword3", []byte{1, 2, 3, 4, 5, 6, 7}},
-               {registry.MULTI_SZ, "MultiString1", nil},
-               {registry.MULTI_SZ, "MultiString2", []byte{0}},
-               {registry.MULTI_SZ, "MultiString3", []byte{'a', 'b', 0}},
-               {registry.MULTI_SZ, "MultiString4", []byte{'a', 0, 0, 'b', 0}},
-               {registry.MULTI_SZ, "MultiString5", []byte{'a', 0, 0}},
-       }
-
-       for _, test := range tests {
-               err := k.SetValue(test.Name, test.Type, test.Data)
-               if err != nil {
-                       t.Fatalf("SetValue for %q failed: %v", test.Name, err)
-               }
-       }
-
-       for _, test := range tests {
-               switch test.Type {
-               case registry.DWORD, registry.QWORD:
-                       value, valType, err := k.GetIntegerValue(test.Name)
-                       if err == nil {
-                               t.Errorf("GetIntegerValue(%q) succeeded. Returns type=%d value=%v", test.Name, valType, value)
-                       }
-               case registry.MULTI_SZ:
-                       value, valType, err := k.GetStringsValue(test.Name)
-                       if err == nil {
-                               if len(value) != 0 {
-                                       t.Errorf("GetStringsValue(%q) succeeded. Returns type=%d value=%v", test.Name, valType, value)
-                               }
-                       }
-               default:
-                       t.Errorf("unsupported type %d for %s value", test.Type, test.Name)
-               }
-       }
-}
-
-func TestGetMUIStringValue(t *testing.T) {
-       if err := registry.LoadRegLoadMUIString(); err != nil {
-               t.Skip("regLoadMUIString not supported; skipping")
-       }
-       if err := procGetDynamicTimeZoneInformation.Find(); err != nil {
-               t.Skipf("%s not supported; skipping", procGetDynamicTimeZoneInformation.Name)
-       }
-       var dtzi DynamicTimezoneinformation
-       if _, err := GetDynamicTimeZoneInformation(&dtzi); err != nil {
-               t.Fatal(err)
-       }
-       tzKeyName := syscall.UTF16ToString(dtzi.TimeZoneKeyName[:])
-       timezoneK, err := registry.OpenKey(registry.LOCAL_MACHINE,
-               `SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\`+tzKeyName, registry.READ)
-       if err != nil {
-               t.Fatal(err)
-       }
-       defer timezoneK.Close()
-
-       type testType struct {
-               name string
-               want string
-       }
-       var tests = []testType{
-               {"MUI_Std", syscall.UTF16ToString(dtzi.StandardName[:])},
-       }
-       if dtzi.DynamicDaylightTimeDisabled == 0 {
-               tests = append(tests, testType{"MUI_Dlt", syscall.UTF16ToString(dtzi.DaylightName[:])})
-       }
-
-       for _, test := range tests {
-               got, err := timezoneK.GetMUIStringValue(test.name)
-               if err != nil {
-                       t.Error("GetMUIStringValue:", err)
-               }
-
-               if got != test.want {
-                       t.Errorf("GetMUIStringValue: %s: Got %q, want %q", test.name, got, test.want)
-               }
-       }
-}
-
-type DynamicTimezoneinformation struct {
-       Bias                        int32
-       StandardName                [32]uint16
-       StandardDate                syscall.Systemtime
-       StandardBias                int32
-       DaylightName                [32]uint16
-       DaylightDate                syscall.Systemtime
-       DaylightBias                int32
-       TimeZoneKeyName             [128]uint16
-       DynamicDaylightTimeDisabled uint8
-}
-
-var (
-       kernel32DLL = syscall.NewLazyDLL("kernel32")
-
-       procGetDynamicTimeZoneInformation = kernel32DLL.NewProc("GetDynamicTimeZoneInformation")
-)
-
-func GetDynamicTimeZoneInformation(dtzi *DynamicTimezoneinformation) (rc uint32, err error) {
-       r0, _, e1 := syscall.Syscall(procGetDynamicTimeZoneInformation.Addr(), 1, uintptr(unsafe.Pointer(dtzi)), 0, 0)
-       rc = uint32(r0)
-       if rc == 0xffffffff {
-               if e1 != 0 {
-                       err = error(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
diff --git a/vendor/golang.org/x/sys/windows/registry/syscall.go b/vendor/golang.org/x/sys/windows/registry/syscall.go
deleted file mode 100644 (file)
index e66643c..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2015 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-package registry
-
-import "syscall"
-
-const (
-       _REG_OPTION_NON_VOLATILE = 0
-
-       _REG_CREATED_NEW_KEY     = 1
-       _REG_OPENED_EXISTING_KEY = 2
-
-       _ERROR_NO_MORE_ITEMS syscall.Errno = 259
-)
-
-func LoadRegLoadMUIString() error {
-       return procRegLoadMUIStringW.Find()
-}
-
-//sys  regCreateKeyEx(key syscall.Handle, subkey *uint16, reserved uint32, class *uint16, options uint32, desired uint32, sa *syscall.SecurityAttributes, result *syscall.Handle, disposition *uint32) (regerrno error) = advapi32.RegCreateKeyExW
-//sys  regDeleteKey(key syscall.Handle, subkey *uint16) (regerrno error) = advapi32.RegDeleteKeyW
-//sys  regSetValueEx(key syscall.Handle, valueName *uint16, reserved uint32, vtype uint32, buf *byte, bufsize uint32) (regerrno error) = advapi32.RegSetValueExW
-//sys  regEnumValue(key syscall.Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) = advapi32.RegEnumValueW
-//sys  regDeleteValue(key syscall.Handle, name *uint16) (regerrno error) = advapi32.RegDeleteValueW
-//sys   regLoadMUIString(key syscall.Handle, name *uint16, buf *uint16, buflen uint32, buflenCopied *uint32, flags uint32, dir *uint16) (regerrno error) = advapi32.RegLoadMUIStringW
-//sys  regConnectRegistry(machinename *uint16, key syscall.Handle, result *syscall.Handle) (regerrno error) = advapi32.RegConnectRegistryW
-
-//sys  expandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) = kernel32.ExpandEnvironmentStringsW
diff --git a/vendor/golang.org/x/sys/windows/registry/value.go b/vendor/golang.org/x/sys/windows/registry/value.go
deleted file mode 100644 (file)
index 71d4e15..0000000
+++ /dev/null
@@ -1,384 +0,0 @@
-// Copyright 2015 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-package registry
-
-import (
-       "errors"
-       "io"
-       "syscall"
-       "unicode/utf16"
-       "unsafe"
-)
-
-const (
-       // Registry value types.
-       NONE                       = 0
-       SZ                         = 1
-       EXPAND_SZ                  = 2
-       BINARY                     = 3
-       DWORD                      = 4
-       DWORD_BIG_ENDIAN           = 5
-       LINK                       = 6
-       MULTI_SZ                   = 7
-       RESOURCE_LIST              = 8
-       FULL_RESOURCE_DESCRIPTOR   = 9
-       RESOURCE_REQUIREMENTS_LIST = 10
-       QWORD                      = 11
-)
-
-var (
-       // ErrShortBuffer is returned when the buffer was too short for the operation.
-       ErrShortBuffer = syscall.ERROR_MORE_DATA
-
-       // ErrNotExist is returned when a registry key or value does not exist.
-       ErrNotExist = syscall.ERROR_FILE_NOT_FOUND
-
-       // ErrUnexpectedType is returned by Get*Value when the value's type was unexpected.
-       ErrUnexpectedType = errors.New("unexpected key value type")
-)
-
-// GetValue retrieves the type and data for the specified value associated
-// with an open key k. It fills up buffer buf and returns the retrieved
-// byte count n. If buf is too small to fit the stored value it returns
-// ErrShortBuffer error along with the required buffer size n.
-// If no buffer is provided, it returns true and actual buffer size n.
-// If no buffer is provided, GetValue returns the value's type only.
-// If the value does not exist, the error returned is ErrNotExist.
-//
-// GetValue is a low level function. If value's type is known, use the appropriate
-// Get*Value function instead.
-func (k Key) GetValue(name string, buf []byte) (n int, valtype uint32, err error) {
-       pname, err := syscall.UTF16PtrFromString(name)
-       if err != nil {
-               return 0, 0, err
-       }
-       var pbuf *byte
-       if len(buf) > 0 {
-               pbuf = (*byte)(unsafe.Pointer(&buf[0]))
-       }
-       l := uint32(len(buf))
-       err = syscall.RegQueryValueEx(syscall.Handle(k), pname, nil, &valtype, pbuf, &l)
-       if err != nil {
-               return int(l), valtype, err
-       }
-       return int(l), valtype, nil
-}
-
-func (k Key) getValue(name string, buf []byte) (date []byte, valtype uint32, err error) {
-       p, err := syscall.UTF16PtrFromString(name)
-       if err != nil {
-               return nil, 0, err
-       }
-       var t uint32
-       n := uint32(len(buf))
-       for {
-               err = syscall.RegQueryValueEx(syscall.Handle(k), p, nil, &t, (*byte)(unsafe.Pointer(&buf[0])), &n)
-               if err == nil {
-                       return buf[:n], t, nil
-               }
-               if err != syscall.ERROR_MORE_DATA {
-                       return nil, 0, err
-               }
-               if n <= uint32(len(buf)) {
-                       return nil, 0, err
-               }
-               buf = make([]byte, n)
-       }
-}
-
-// GetStringValue retrieves the string value for the specified
-// value name associated with an open key k. It also returns the value's type.
-// If value does not exist, GetStringValue returns ErrNotExist.
-// If value is not SZ or EXPAND_SZ, it will return the correct value
-// type and ErrUnexpectedType.
-func (k Key) GetStringValue(name string) (val string, valtype uint32, err error) {
-       data, typ, err2 := k.getValue(name, make([]byte, 64))
-       if err2 != nil {
-               return "", typ, err2
-       }
-       switch typ {
-       case SZ, EXPAND_SZ:
-       default:
-               return "", typ, ErrUnexpectedType
-       }
-       if len(data) == 0 {
-               return "", typ, nil
-       }
-       u := (*[1 << 29]uint16)(unsafe.Pointer(&data[0]))[:]
-       return syscall.UTF16ToString(u), typ, nil
-}
-
-// GetMUIStringValue retrieves the localized string value for
-// the specified value name associated with an open key k.
-// If the value name doesn't exist or the localized string value
-// can't be resolved, GetMUIStringValue returns ErrNotExist.
-// GetMUIStringValue panics if the system doesn't support
-// regLoadMUIString; use LoadRegLoadMUIString to check if
-// regLoadMUIString is supported before calling this function.
-func (k Key) GetMUIStringValue(name string) (string, error) {
-       pname, err := syscall.UTF16PtrFromString(name)
-       if err != nil {
-               return "", err
-       }
-
-       buf := make([]uint16, 1024)
-       var buflen uint32
-       var pdir *uint16
-
-       err = regLoadMUIString(syscall.Handle(k), pname, &buf[0], uint32(len(buf)), &buflen, 0, pdir)
-       if err == syscall.ERROR_FILE_NOT_FOUND { // Try fallback path
-
-               // Try to resolve the string value using the system directory as
-               // a DLL search path; this assumes the string value is of the form
-               // @[path]\dllname,-strID but with no path given, e.g. @tzres.dll,-320.
-
-               // This approach works with tzres.dll but may have to be revised
-               // in the future to allow callers to provide custom search paths.
-
-               var s string
-               s, err = ExpandString("%SystemRoot%\\system32\\")
-               if err != nil {
-                       return "", err
-               }
-               pdir, err = syscall.UTF16PtrFromString(s)
-               if err != nil {
-                       return "", err
-               }
-
-               err = regLoadMUIString(syscall.Handle(k), pname, &buf[0], uint32(len(buf)), &buflen, 0, pdir)
-       }
-
-       for err == syscall.ERROR_MORE_DATA { // Grow buffer if needed
-               if buflen <= uint32(len(buf)) {
-                       break // Buffer not growing, assume race; break
-               }
-               buf = make([]uint16, buflen)
-               err = regLoadMUIString(syscall.Handle(k), pname, &buf[0], uint32(len(buf)), &buflen, 0, pdir)
-       }
-
-       if err != nil {
-               return "", err
-       }
-
-       return syscall.UTF16ToString(buf), nil
-}
-
-// ExpandString expands environment-variable strings and replaces
-// them with the values defined for the current user.
-// Use ExpandString to expand EXPAND_SZ strings.
-func ExpandString(value string) (string, error) {
-       if value == "" {
-               return "", nil
-       }
-       p, err := syscall.UTF16PtrFromString(value)
-       if err != nil {
-               return "", err
-       }
-       r := make([]uint16, 100)
-       for {
-               n, err := expandEnvironmentStrings(p, &r[0], uint32(len(r)))
-               if err != nil {
-                       return "", err
-               }
-               if n <= uint32(len(r)) {
-                       u := (*[1 << 29]uint16)(unsafe.Pointer(&r[0]))[:]
-                       return syscall.UTF16ToString(u), nil
-               }
-               r = make([]uint16, n)
-       }
-}
-
-// GetStringsValue retrieves the []string value for the specified
-// value name associated with an open key k. It also returns the value's type.
-// If value does not exist, GetStringsValue returns ErrNotExist.
-// If value is not MULTI_SZ, it will return the correct value
-// type and ErrUnexpectedType.
-func (k Key) GetStringsValue(name string) (val []string, valtype uint32, err error) {
-       data, typ, err2 := k.getValue(name, make([]byte, 64))
-       if err2 != nil {
-               return nil, typ, err2
-       }
-       if typ != MULTI_SZ {
-               return nil, typ, ErrUnexpectedType
-       }
-       if len(data) == 0 {
-               return nil, typ, nil
-       }
-       p := (*[1 << 29]uint16)(unsafe.Pointer(&data[0]))[:len(data)/2]
-       if len(p) == 0 {
-               return nil, typ, nil
-       }
-       if p[len(p)-1] == 0 {
-               p = p[:len(p)-1] // remove terminating null
-       }
-       val = make([]string, 0, 5)
-       from := 0
-       for i, c := range p {
-               if c == 0 {
-                       val = append(val, string(utf16.Decode(p[from:i])))
-                       from = i + 1
-               }
-       }
-       return val, typ, nil
-}
-
-// GetIntegerValue retrieves the integer value for the specified
-// value name associated with an open key k. It also returns the value's type.
-// If value does not exist, GetIntegerValue returns ErrNotExist.
-// If value is not DWORD or QWORD, it will return the correct value
-// type and ErrUnexpectedType.
-func (k Key) GetIntegerValue(name string) (val uint64, valtype uint32, err error) {
-       data, typ, err2 := k.getValue(name, make([]byte, 8))
-       if err2 != nil {
-               return 0, typ, err2
-       }
-       switch typ {
-       case DWORD:
-               if len(data) != 4 {
-                       return 0, typ, errors.New("DWORD value is not 4 bytes long")
-               }
-               return uint64(*(*uint32)(unsafe.Pointer(&data[0]))), DWORD, nil
-       case QWORD:
-               if len(data) != 8 {
-                       return 0, typ, errors.New("QWORD value is not 8 bytes long")
-               }
-               return uint64(*(*uint64)(unsafe.Pointer(&data[0]))), QWORD, nil
-       default:
-               return 0, typ, ErrUnexpectedType
-       }
-}
-
-// GetBinaryValue retrieves the binary value for the specified
-// value name associated with an open key k. It also returns the value's type.
-// If value does not exist, GetBinaryValue returns ErrNotExist.
-// If value is not BINARY, it will return the correct value
-// type and ErrUnexpectedType.
-func (k Key) GetBinaryValue(name string) (val []byte, valtype uint32, err error) {
-       data, typ, err2 := k.getValue(name, make([]byte, 64))
-       if err2 != nil {
-               return nil, typ, err2
-       }
-       if typ != BINARY {
-               return nil, typ, ErrUnexpectedType
-       }
-       return data, typ, nil
-}
-
-func (k Key) setValue(name string, valtype uint32, data []byte) error {
-       p, err := syscall.UTF16PtrFromString(name)
-       if err != nil {
-               return err
-       }
-       if len(data) == 0 {
-               return regSetValueEx(syscall.Handle(k), p, 0, valtype, nil, 0)
-       }
-       return regSetValueEx(syscall.Handle(k), p, 0, valtype, &data[0], uint32(len(data)))
-}
-
-// SetDWordValue sets the data and type of a name value
-// under key k to value and DWORD.
-func (k Key) SetDWordValue(name string, value uint32) error {
-       return k.setValue(name, DWORD, (*[4]byte)(unsafe.Pointer(&value))[:])
-}
-
-// SetQWordValue sets the data and type of a name value
-// under key k to value and QWORD.
-func (k Key) SetQWordValue(name string, value uint64) error {
-       return k.setValue(name, QWORD, (*[8]byte)(unsafe.Pointer(&value))[:])
-}
-
-func (k Key) setStringValue(name string, valtype uint32, value string) error {
-       v, err := syscall.UTF16FromString(value)
-       if err != nil {
-               return err
-       }
-       buf := (*[1 << 29]byte)(unsafe.Pointer(&v[0]))[:len(v)*2]
-       return k.setValue(name, valtype, buf)
-}
-
-// SetStringValue sets the data and type of a name value
-// under key k to value and SZ. The value must not contain a zero byte.
-func (k Key) SetStringValue(name, value string) error {
-       return k.setStringValue(name, SZ, value)
-}
-
-// SetExpandStringValue sets the data and type of a name value
-// under key k to value and EXPAND_SZ. The value must not contain a zero byte.
-func (k Key) SetExpandStringValue(name, value string) error {
-       return k.setStringValue(name, EXPAND_SZ, value)
-}
-
-// SetStringsValue sets the data and type of a name value
-// under key k to value and MULTI_SZ. The value strings
-// must not contain a zero byte.
-func (k Key) SetStringsValue(name string, value []string) error {
-       ss := ""
-       for _, s := range value {
-               for i := 0; i < len(s); i++ {
-                       if s[i] == 0 {
-                               return errors.New("string cannot have 0 inside")
-                       }
-               }
-               ss += s + "\x00"
-       }
-       v := utf16.Encode([]rune(ss + "\x00"))
-       buf := (*[1 << 29]byte)(unsafe.Pointer(&v[0]))[:len(v)*2]
-       return k.setValue(name, MULTI_SZ, buf)
-}
-
-// SetBinaryValue sets the data and type of a name value
-// under key k to value and BINARY.
-func (k Key) SetBinaryValue(name string, value []byte) error {
-       return k.setValue(name, BINARY, value)
-}
-
-// DeleteValue removes a named value from the key k.
-func (k Key) DeleteValue(name string) error {
-       return regDeleteValue(syscall.Handle(k), syscall.StringToUTF16Ptr(name))
-}
-
-// ReadValueNames returns the value names of key k.
-// The parameter n controls the number of returned names,
-// analogous to the way os.File.Readdirnames works.
-func (k Key) ReadValueNames(n int) ([]string, error) {
-       ki, err := k.Stat()
-       if err != nil {
-               return nil, err
-       }
-       names := make([]string, 0, ki.ValueCount)
-       buf := make([]uint16, ki.MaxValueNameLen+1) // extra room for terminating null character
-loopItems:
-       for i := uint32(0); ; i++ {
-               if n > 0 {
-                       if len(names) == n {
-                               return names, nil
-                       }
-               }
-               l := uint32(len(buf))
-               for {
-                       err := regEnumValue(syscall.Handle(k), i, &buf[0], &l, nil, nil, nil, nil)
-                       if err == nil {
-                               break
-                       }
-                       if err == syscall.ERROR_MORE_DATA {
-                               // Double buffer size and try again.
-                               l = uint32(2 * len(buf))
-                               buf = make([]uint16, l)
-                               continue
-                       }
-                       if err == _ERROR_NO_MORE_ITEMS {
-                               break loopItems
-                       }
-                       return names, err
-               }
-               names = append(names, syscall.UTF16ToString(buf[:l]))
-       }
-       if n > len(names) {
-               return names, io.EOF
-       }
-       return names, nil
-}
diff --git a/vendor/golang.org/x/sys/windows/registry/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/registry/zsyscall_windows.go
deleted file mode 100644 (file)
index ceebdd7..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-// MACHINE GENERATED BY 'go generate' COMMAND; DO NOT EDIT
-
-package registry
-
-import (
-       "syscall"
-       "unsafe"
-
-       "golang.org/x/sys/windows"
-)
-
-var _ unsafe.Pointer
-
-// Do the interface allocations only once for common
-// Errno values.
-const (
-       errnoERROR_IO_PENDING = 997
-)
-
-var (
-       errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING)
-)
-
-// errnoErr returns common boxed Errno values, to prevent
-// allocations at runtime.
-func errnoErr(e syscall.Errno) error {
-       switch e {
-       case 0:
-               return nil
-       case errnoERROR_IO_PENDING:
-               return errERROR_IO_PENDING
-       }
-       // TODO: add more here, after collecting data on the common
-       // error values see on Windows. (perhaps when running
-       // all.bat?)
-       return e
-}
-
-var (
-       modadvapi32 = windows.NewLazySystemDLL("advapi32.dll")
-       modkernel32 = windows.NewLazySystemDLL("kernel32.dll")
-
-       procRegCreateKeyExW           = modadvapi32.NewProc("RegCreateKeyExW")
-       procRegDeleteKeyW             = modadvapi32.NewProc("RegDeleteKeyW")
-       procRegSetValueExW            = modadvapi32.NewProc("RegSetValueExW")
-       procRegEnumValueW             = modadvapi32.NewProc("RegEnumValueW")
-       procRegDeleteValueW           = modadvapi32.NewProc("RegDeleteValueW")
-       procRegLoadMUIStringW         = modadvapi32.NewProc("RegLoadMUIStringW")
-       procRegConnectRegistryW       = modadvapi32.NewProc("RegConnectRegistryW")
-       procExpandEnvironmentStringsW = modkernel32.NewProc("ExpandEnvironmentStringsW")
-)
-
-func regCreateKeyEx(key syscall.Handle, subkey *uint16, reserved uint32, class *uint16, options uint32, desired uint32, sa *syscall.SecurityAttributes, result *syscall.Handle, disposition *uint32) (regerrno error) {
-       r0, _, _ := syscall.Syscall9(procRegCreateKeyExW.Addr(), 9, uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(reserved), uintptr(unsafe.Pointer(class)), uintptr(options), uintptr(desired), uintptr(unsafe.Pointer(sa)), uintptr(unsafe.Pointer(result)), uintptr(unsafe.Pointer(disposition)))
-       if r0 != 0 {
-               regerrno = syscall.Errno(r0)
-       }
-       return
-}
-
-func regDeleteKey(key syscall.Handle, subkey *uint16) (regerrno error) {
-       r0, _, _ := syscall.Syscall(procRegDeleteKeyW.Addr(), 2, uintptr(key), uintptr(unsafe.Pointer(subkey)), 0)
-       if r0 != 0 {
-               regerrno = syscall.Errno(r0)
-       }
-       return
-}
-
-func regSetValueEx(key syscall.Handle, valueName *uint16, reserved uint32, vtype uint32, buf *byte, bufsize uint32) (regerrno error) {
-       r0, _, _ := syscall.Syscall6(procRegSetValueExW.Addr(), 6, uintptr(key), uintptr(unsafe.Pointer(valueName)), uintptr(reserved), uintptr(vtype), uintptr(unsafe.Pointer(buf)), uintptr(bufsize))
-       if r0 != 0 {
-               regerrno = syscall.Errno(r0)
-       }
-       return
-}
-
-func regEnumValue(key syscall.Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) {
-       r0, _, _ := syscall.Syscall9(procRegEnumValueW.Addr(), 8, uintptr(key), uintptr(index), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(valtype)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(buflen)), 0)
-       if r0 != 0 {
-               regerrno = syscall.Errno(r0)
-       }
-       return
-}
-
-func regDeleteValue(key syscall.Handle, name *uint16) (regerrno error) {
-       r0, _, _ := syscall.Syscall(procRegDeleteValueW.Addr(), 2, uintptr(key), uintptr(unsafe.Pointer(name)), 0)
-       if r0 != 0 {
-               regerrno = syscall.Errno(r0)
-       }
-       return
-}
-
-func regLoadMUIString(key syscall.Handle, name *uint16, buf *uint16, buflen uint32, buflenCopied *uint32, flags uint32, dir *uint16) (regerrno error) {
-       r0, _, _ := syscall.Syscall9(procRegLoadMUIStringW.Addr(), 7, uintptr(key), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buf)), uintptr(buflen), uintptr(unsafe.Pointer(buflenCopied)), uintptr(flags), uintptr(unsafe.Pointer(dir)), 0, 0)
-       if r0 != 0 {
-               regerrno = syscall.Errno(r0)
-       }
-       return
-}
-
-func regConnectRegistry(machinename *uint16, key syscall.Handle, result *syscall.Handle) (regerrno error) {
-       r0, _, _ := syscall.Syscall(procRegConnectRegistryW.Addr(), 3, uintptr(unsafe.Pointer(machinename)), uintptr(key), uintptr(unsafe.Pointer(result)))
-       if r0 != 0 {
-               regerrno = syscall.Errno(r0)
-       }
-       return
-}
-
-func expandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) {
-       r0, _, e1 := syscall.Syscall(procExpandEnvironmentStringsW.Addr(), 3, uintptr(unsafe.Pointer(src)), uintptr(unsafe.Pointer(dst)), uintptr(size))
-       n = uint32(r0)
-       if n == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
diff --git a/vendor/golang.org/x/sys/windows/security_windows.go b/vendor/golang.org/x/sys/windows/security_windows.go
deleted file mode 100644 (file)
index ca09bdd..0000000
+++ /dev/null
@@ -1,435 +0,0 @@
-// Copyright 2012 The Go Authors.  All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package windows
-
-import (
-       "syscall"
-       "unsafe"
-)
-
-const (
-       STANDARD_RIGHTS_REQUIRED = 0xf0000
-       STANDARD_RIGHTS_READ     = 0x20000
-       STANDARD_RIGHTS_WRITE    = 0x20000
-       STANDARD_RIGHTS_EXECUTE  = 0x20000
-       STANDARD_RIGHTS_ALL      = 0x1F0000
-)
-
-const (
-       NameUnknown          = 0
-       NameFullyQualifiedDN = 1
-       NameSamCompatible    = 2
-       NameDisplay          = 3
-       NameUniqueId         = 6
-       NameCanonical        = 7
-       NameUserPrincipal    = 8
-       NameCanonicalEx      = 9
-       NameServicePrincipal = 10
-       NameDnsDomain        = 12
-)
-
-// This function returns 1 byte BOOLEAN rather than the 4 byte BOOL.
-// http://blogs.msdn.com/b/drnick/archive/2007/12/19/windows-and-upn-format-credentials.aspx
-//sys  TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) [failretval&0xff==0] = secur32.TranslateNameW
-//sys  GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) [failretval&0xff==0] = secur32.GetUserNameExW
-
-// TranslateAccountName converts a directory service
-// object name from one format to another.
-func TranslateAccountName(username string, from, to uint32, initSize int) (string, error) {
-       u, e := UTF16PtrFromString(username)
-       if e != nil {
-               return "", e
-       }
-       n := uint32(50)
-       for {
-               b := make([]uint16, n)
-               e = TranslateName(u, from, to, &b[0], &n)
-               if e == nil {
-                       return UTF16ToString(b[:n]), nil
-               }
-               if e != ERROR_INSUFFICIENT_BUFFER {
-                       return "", e
-               }
-               if n <= uint32(len(b)) {
-                       return "", e
-               }
-       }
-}
-
-const (
-       // do not reorder
-       NetSetupUnknownStatus = iota
-       NetSetupUnjoined
-       NetSetupWorkgroupName
-       NetSetupDomainName
-)
-
-type UserInfo10 struct {
-       Name       *uint16
-       Comment    *uint16
-       UsrComment *uint16
-       FullName   *uint16
-}
-
-//sys  NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) = netapi32.NetUserGetInfo
-//sys  NetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) = netapi32.NetGetJoinInformation
-//sys  NetApiBufferFree(buf *byte) (neterr error) = netapi32.NetApiBufferFree
-
-const (
-       // do not reorder
-       SidTypeUser = 1 + iota
-       SidTypeGroup
-       SidTypeDomain
-       SidTypeAlias
-       SidTypeWellKnownGroup
-       SidTypeDeletedAccount
-       SidTypeInvalid
-       SidTypeUnknown
-       SidTypeComputer
-       SidTypeLabel
-)
-
-type SidIdentifierAuthority struct {
-       Value [6]byte
-}
-
-var (
-       SECURITY_NULL_SID_AUTHORITY        = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 0}}
-       SECURITY_WORLD_SID_AUTHORITY       = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 1}}
-       SECURITY_LOCAL_SID_AUTHORITY       = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 2}}
-       SECURITY_CREATOR_SID_AUTHORITY     = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 3}}
-       SECURITY_NON_UNIQUE_AUTHORITY      = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 4}}
-       SECURITY_NT_AUTHORITY              = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 5}}
-       SECURITY_MANDATORY_LABEL_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 16}}
-)
-
-const (
-       SECURITY_NULL_RID                   = 0
-       SECURITY_WORLD_RID                  = 0
-       SECURITY_LOCAL_RID                  = 0
-       SECURITY_CREATOR_OWNER_RID          = 0
-       SECURITY_CREATOR_GROUP_RID          = 1
-       SECURITY_DIALUP_RID                 = 1
-       SECURITY_NETWORK_RID                = 2
-       SECURITY_BATCH_RID                  = 3
-       SECURITY_INTERACTIVE_RID            = 4
-       SECURITY_LOGON_IDS_RID              = 5
-       SECURITY_SERVICE_RID                = 6
-       SECURITY_LOCAL_SYSTEM_RID           = 18
-       SECURITY_BUILTIN_DOMAIN_RID         = 32
-       SECURITY_PRINCIPAL_SELF_RID         = 10
-       SECURITY_CREATOR_OWNER_SERVER_RID   = 0x2
-       SECURITY_CREATOR_GROUP_SERVER_RID   = 0x3
-       SECURITY_LOGON_IDS_RID_COUNT        = 0x3
-       SECURITY_ANONYMOUS_LOGON_RID        = 0x7
-       SECURITY_PROXY_RID                  = 0x8
-       SECURITY_ENTERPRISE_CONTROLLERS_RID = 0x9
-       SECURITY_SERVER_LOGON_RID           = SECURITY_ENTERPRISE_CONTROLLERS_RID
-       SECURITY_AUTHENTICATED_USER_RID     = 0xb
-       SECURITY_RESTRICTED_CODE_RID        = 0xc
-       SECURITY_NT_NON_UNIQUE_RID          = 0x15
-)
-
-//sys  LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) = advapi32.LookupAccountSidW
-//sys  LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) = advapi32.LookupAccountNameW
-//sys  ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) = advapi32.ConvertSidToStringSidW
-//sys  ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) = advapi32.ConvertStringSidToSidW
-//sys  GetLengthSid(sid *SID) (len uint32) = advapi32.GetLengthSid
-//sys  CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) = advapi32.CopySid
-//sys  AllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, subAuth0 uint32, subAuth1 uint32, subAuth2 uint32, subAuth3 uint32, subAuth4 uint32, subAuth5 uint32, subAuth6 uint32, subAuth7 uint32, sid **SID) (err error) = advapi32.AllocateAndInitializeSid
-//sys  FreeSid(sid *SID) (err error) [failretval!=0] = advapi32.FreeSid
-//sys  EqualSid(sid1 *SID, sid2 *SID) (isEqual bool) = advapi32.EqualSid
-
-// The security identifier (SID) structure is a variable-length
-// structure used to uniquely identify users or groups.
-type SID struct{}
-
-// StringToSid converts a string-format security identifier
-// sid into a valid, functional sid.
-func StringToSid(s string) (*SID, error) {
-       var sid *SID
-       p, e := UTF16PtrFromString(s)
-       if e != nil {
-               return nil, e
-       }
-       e = ConvertStringSidToSid(p, &sid)
-       if e != nil {
-               return nil, e
-       }
-       defer LocalFree((Handle)(unsafe.Pointer(sid)))
-       return sid.Copy()
-}
-
-// LookupSID retrieves a security identifier sid for the account
-// and the name of the domain on which the account was found.
-// System specify target computer to search.
-func LookupSID(system, account string) (sid *SID, domain string, accType uint32, err error) {
-       if len(account) == 0 {
-               return nil, "", 0, syscall.EINVAL
-       }
-       acc, e := UTF16PtrFromString(account)
-       if e != nil {
-               return nil, "", 0, e
-       }
-       var sys *uint16
-       if len(system) > 0 {
-               sys, e = UTF16PtrFromString(system)
-               if e != nil {
-                       return nil, "", 0, e
-               }
-       }
-       n := uint32(50)
-       dn := uint32(50)
-       for {
-               b := make([]byte, n)
-               db := make([]uint16, dn)
-               sid = (*SID)(unsafe.Pointer(&b[0]))
-               e = LookupAccountName(sys, acc, sid, &n, &db[0], &dn, &accType)
-               if e == nil {
-                       return sid, UTF16ToString(db), accType, nil
-               }
-               if e != ERROR_INSUFFICIENT_BUFFER {
-                       return nil, "", 0, e
-               }
-               if n <= uint32(len(b)) {
-                       return nil, "", 0, e
-               }
-       }
-}
-
-// String converts sid to a string format
-// suitable for display, storage, or transmission.
-func (sid *SID) String() (string, error) {
-       var s *uint16
-       e := ConvertSidToStringSid(sid, &s)
-       if e != nil {
-               return "", e
-       }
-       defer LocalFree((Handle)(unsafe.Pointer(s)))
-       return UTF16ToString((*[256]uint16)(unsafe.Pointer(s))[:]), nil
-}
-
-// Len returns the length, in bytes, of a valid security identifier sid.
-func (sid *SID) Len() int {
-       return int(GetLengthSid(sid))
-}
-
-// Copy creates a duplicate of security identifier sid.
-func (sid *SID) Copy() (*SID, error) {
-       b := make([]byte, sid.Len())
-       sid2 := (*SID)(unsafe.Pointer(&b[0]))
-       e := CopySid(uint32(len(b)), sid2, sid)
-       if e != nil {
-               return nil, e
-       }
-       return sid2, nil
-}
-
-// LookupAccount retrieves the name of the account for this sid
-// and the name of the first domain on which this sid is found.
-// System specify target computer to search for.
-func (sid *SID) LookupAccount(system string) (account, domain string, accType uint32, err error) {
-       var sys *uint16
-       if len(system) > 0 {
-               sys, err = UTF16PtrFromString(system)
-               if err != nil {
-                       return "", "", 0, err
-               }
-       }
-       n := uint32(50)
-       dn := uint32(50)
-       for {
-               b := make([]uint16, n)
-               db := make([]uint16, dn)
-               e := LookupAccountSid(sys, sid, &b[0], &n, &db[0], &dn, &accType)
-               if e == nil {
-                       return UTF16ToString(b), UTF16ToString(db), accType, nil
-               }
-               if e != ERROR_INSUFFICIENT_BUFFER {
-                       return "", "", 0, e
-               }
-               if n <= uint32(len(b)) {
-                       return "", "", 0, e
-               }
-       }
-}
-
-const (
-       // do not reorder
-       TOKEN_ASSIGN_PRIMARY = 1 << iota
-       TOKEN_DUPLICATE
-       TOKEN_IMPERSONATE
-       TOKEN_QUERY
-       TOKEN_QUERY_SOURCE
-       TOKEN_ADJUST_PRIVILEGES
-       TOKEN_ADJUST_GROUPS
-       TOKEN_ADJUST_DEFAULT
-
-       TOKEN_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED |
-               TOKEN_ASSIGN_PRIMARY |
-               TOKEN_DUPLICATE |
-               TOKEN_IMPERSONATE |
-               TOKEN_QUERY |
-               TOKEN_QUERY_SOURCE |
-               TOKEN_ADJUST_PRIVILEGES |
-               TOKEN_ADJUST_GROUPS |
-               TOKEN_ADJUST_DEFAULT
-       TOKEN_READ  = STANDARD_RIGHTS_READ | TOKEN_QUERY
-       TOKEN_WRITE = STANDARD_RIGHTS_WRITE |
-               TOKEN_ADJUST_PRIVILEGES |
-               TOKEN_ADJUST_GROUPS |
-               TOKEN_ADJUST_DEFAULT
-       TOKEN_EXECUTE = STANDARD_RIGHTS_EXECUTE
-)
-
-const (
-       // do not reorder
-       TokenUser = 1 + iota
-       TokenGroups
-       TokenPrivileges
-       TokenOwner
-       TokenPrimaryGroup
-       TokenDefaultDacl
-       TokenSource
-       TokenType
-       TokenImpersonationLevel
-       TokenStatistics
-       TokenRestrictedSids
-       TokenSessionId
-       TokenGroupsAndPrivileges
-       TokenSessionReference
-       TokenSandBoxInert
-       TokenAuditPolicy
-       TokenOrigin
-       TokenElevationType
-       TokenLinkedToken
-       TokenElevation
-       TokenHasRestrictions
-       TokenAccessInformation
-       TokenVirtualizationAllowed
-       TokenVirtualizationEnabled
-       TokenIntegrityLevel
-       TokenUIAccess
-       TokenMandatoryPolicy
-       TokenLogonSid
-       MaxTokenInfoClass
-)
-
-type SIDAndAttributes struct {
-       Sid        *SID
-       Attributes uint32
-}
-
-type Tokenuser struct {
-       User SIDAndAttributes
-}
-
-type Tokenprimarygroup struct {
-       PrimaryGroup *SID
-}
-
-type Tokengroups struct {
-       GroupCount uint32
-       Groups     [1]SIDAndAttributes
-}
-
-//sys  OpenProcessToken(h Handle, access uint32, token *Token) (err error) = advapi32.OpenProcessToken
-//sys  GetTokenInformation(t Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) = advapi32.GetTokenInformation
-//sys  GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) = userenv.GetUserProfileDirectoryW
-
-// An access token contains the security information for a logon session.
-// The system creates an access token when a user logs on, and every
-// process executed on behalf of the user has a copy of the token.
-// The token identifies the user, the user's groups, and the user's
-// privileges. The system uses the token to control access to securable
-// objects and to control the ability of the user to perform various
-// system-related operations on the local computer.
-type Token Handle
-
-// OpenCurrentProcessToken opens the access token
-// associated with current process.
-func OpenCurrentProcessToken() (Token, error) {
-       p, e := GetCurrentProcess()
-       if e != nil {
-               return 0, e
-       }
-       var t Token
-       e = OpenProcessToken(p, TOKEN_QUERY, &t)
-       if e != nil {
-               return 0, e
-       }
-       return t, nil
-}
-
-// Close releases access to access token.
-func (t Token) Close() error {
-       return CloseHandle(Handle(t))
-}
-
-// getInfo retrieves a specified type of information about an access token.
-func (t Token) getInfo(class uint32, initSize int) (unsafe.Pointer, error) {
-       n := uint32(initSize)
-       for {
-               b := make([]byte, n)
-               e := GetTokenInformation(t, class, &b[0], uint32(len(b)), &n)
-               if e == nil {
-                       return unsafe.Pointer(&b[0]), nil
-               }
-               if e != ERROR_INSUFFICIENT_BUFFER {
-                       return nil, e
-               }
-               if n <= uint32(len(b)) {
-                       return nil, e
-               }
-       }
-}
-
-// GetTokenUser retrieves access token t user account information.
-func (t Token) GetTokenUser() (*Tokenuser, error) {
-       i, e := t.getInfo(TokenUser, 50)
-       if e != nil {
-               return nil, e
-       }
-       return (*Tokenuser)(i), nil
-}
-
-// GetTokenGroups retrieves group accounts associated with access token t.
-func (t Token) GetTokenGroups() (*Tokengroups, error) {
-       i, e := t.getInfo(TokenGroups, 50)
-       if e != nil {
-               return nil, e
-       }
-       return (*Tokengroups)(i), nil
-}
-
-// GetTokenPrimaryGroup retrieves access token t primary group information.
-// A pointer to a SID structure representing a group that will become
-// the primary group of any objects created by a process using this access token.
-func (t Token) GetTokenPrimaryGroup() (*Tokenprimarygroup, error) {
-       i, e := t.getInfo(TokenPrimaryGroup, 50)
-       if e != nil {
-               return nil, e
-       }
-       return (*Tokenprimarygroup)(i), nil
-}
-
-// GetUserProfileDirectory retrieves path to the
-// root directory of the access token t user's profile.
-func (t Token) GetUserProfileDirectory() (string, error) {
-       n := uint32(100)
-       for {
-               b := make([]uint16, n)
-               e := GetUserProfileDirectory(t, &b[0], &n)
-               if e == nil {
-                       return UTF16ToString(b), nil
-               }
-               if e != ERROR_INSUFFICIENT_BUFFER {
-                       return "", e
-               }
-               if n <= uint32(len(b)) {
-                       return "", e
-               }
-       }
-}
diff --git a/vendor/golang.org/x/sys/windows/service.go b/vendor/golang.org/x/sys/windows/service.go
deleted file mode 100644 (file)
index 1c11d39..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-package windows
-
-const (
-       SC_MANAGER_CONNECT            = 1
-       SC_MANAGER_CREATE_SERVICE     = 2
-       SC_MANAGER_ENUMERATE_SERVICE  = 4
-       SC_MANAGER_LOCK               = 8
-       SC_MANAGER_QUERY_LOCK_STATUS  = 16
-       SC_MANAGER_MODIFY_BOOT_CONFIG = 32
-       SC_MANAGER_ALL_ACCESS         = 0xf003f
-)
-
-//sys  OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenSCManagerW
-
-const (
-       SERVICE_KERNEL_DRIVER       = 1
-       SERVICE_FILE_SYSTEM_DRIVER  = 2
-       SERVICE_ADAPTER             = 4
-       SERVICE_RECOGNIZER_DRIVER   = 8
-       SERVICE_WIN32_OWN_PROCESS   = 16
-       SERVICE_WIN32_SHARE_PROCESS = 32
-       SERVICE_WIN32               = SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS
-       SERVICE_INTERACTIVE_PROCESS = 256
-       SERVICE_DRIVER              = SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER | SERVICE_RECOGNIZER_DRIVER
-       SERVICE_TYPE_ALL            = SERVICE_WIN32 | SERVICE_ADAPTER | SERVICE_DRIVER | SERVICE_INTERACTIVE_PROCESS
-
-       SERVICE_BOOT_START   = 0
-       SERVICE_SYSTEM_START = 1
-       SERVICE_AUTO_START   = 2
-       SERVICE_DEMAND_START = 3
-       SERVICE_DISABLED     = 4
-
-       SERVICE_ERROR_IGNORE   = 0
-       SERVICE_ERROR_NORMAL   = 1
-       SERVICE_ERROR_SEVERE   = 2
-       SERVICE_ERROR_CRITICAL = 3
-
-       SC_STATUS_PROCESS_INFO = 0
-
-       SERVICE_STOPPED          = 1
-       SERVICE_START_PENDING    = 2
-       SERVICE_STOP_PENDING     = 3
-       SERVICE_RUNNING          = 4
-       SERVICE_CONTINUE_PENDING = 5
-       SERVICE_PAUSE_PENDING    = 6
-       SERVICE_PAUSED           = 7
-       SERVICE_NO_CHANGE        = 0xffffffff
-
-       SERVICE_ACCEPT_STOP                  = 1
-       SERVICE_ACCEPT_PAUSE_CONTINUE        = 2
-       SERVICE_ACCEPT_SHUTDOWN              = 4
-       SERVICE_ACCEPT_PARAMCHANGE           = 8
-       SERVICE_ACCEPT_NETBINDCHANGE         = 16
-       SERVICE_ACCEPT_HARDWAREPROFILECHANGE = 32
-       SERVICE_ACCEPT_POWEREVENT            = 64
-       SERVICE_ACCEPT_SESSIONCHANGE         = 128
-
-       SERVICE_CONTROL_STOP                  = 1
-       SERVICE_CONTROL_PAUSE                 = 2
-       SERVICE_CONTROL_CONTINUE              = 3
-       SERVICE_CONTROL_INTERROGATE           = 4
-       SERVICE_CONTROL_SHUTDOWN              = 5
-       SERVICE_CONTROL_PARAMCHANGE           = 6
-       SERVICE_CONTROL_NETBINDADD            = 7
-       SERVICE_CONTROL_NETBINDREMOVE         = 8
-       SERVICE_CONTROL_NETBINDENABLE         = 9
-       SERVICE_CONTROL_NETBINDDISABLE        = 10
-       SERVICE_CONTROL_DEVICEEVENT           = 11
-       SERVICE_CONTROL_HARDWAREPROFILECHANGE = 12
-       SERVICE_CONTROL_POWEREVENT            = 13
-       SERVICE_CONTROL_SESSIONCHANGE         = 14
-
-       SERVICE_ACTIVE    = 1
-       SERVICE_INACTIVE  = 2
-       SERVICE_STATE_ALL = 3
-
-       SERVICE_QUERY_CONFIG           = 1
-       SERVICE_CHANGE_CONFIG          = 2
-       SERVICE_QUERY_STATUS           = 4
-       SERVICE_ENUMERATE_DEPENDENTS   = 8
-       SERVICE_START                  = 16
-       SERVICE_STOP                   = 32
-       SERVICE_PAUSE_CONTINUE         = 64
-       SERVICE_INTERROGATE            = 128
-       SERVICE_USER_DEFINED_CONTROL   = 256
-       SERVICE_ALL_ACCESS             = STANDARD_RIGHTS_REQUIRED | SERVICE_QUERY_CONFIG | SERVICE_CHANGE_CONFIG | SERVICE_QUERY_STATUS | SERVICE_ENUMERATE_DEPENDENTS | SERVICE_START | SERVICE_STOP | SERVICE_PAUSE_CONTINUE | SERVICE_INTERROGATE | SERVICE_USER_DEFINED_CONTROL
-       SERVICE_RUNS_IN_SYSTEM_PROCESS = 1
-       SERVICE_CONFIG_DESCRIPTION     = 1
-       SERVICE_CONFIG_FAILURE_ACTIONS = 2
-
-       NO_ERROR = 0
-)
-
-type SERVICE_STATUS struct {
-       ServiceType             uint32
-       CurrentState            uint32
-       ControlsAccepted        uint32
-       Win32ExitCode           uint32
-       ServiceSpecificExitCode uint32
-       CheckPoint              uint32
-       WaitHint                uint32
-}
-
-type SERVICE_TABLE_ENTRY struct {
-       ServiceName *uint16
-       ServiceProc uintptr
-}
-
-type QUERY_SERVICE_CONFIG struct {
-       ServiceType      uint32
-       StartType        uint32
-       ErrorControl     uint32
-       BinaryPathName   *uint16
-       LoadOrderGroup   *uint16
-       TagId            uint32
-       Dependencies     *uint16
-       ServiceStartName *uint16
-       DisplayName      *uint16
-}
-
-type SERVICE_DESCRIPTION struct {
-       Description *uint16
-}
-
-//sys  CloseServiceHandle(handle Handle) (err error) = advapi32.CloseServiceHandle
-//sys  CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) [failretval==0] = advapi32.CreateServiceW
-//sys  OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenServiceW
-//sys  DeleteService(service Handle) (err error) = advapi32.DeleteService
-//sys  StartService(service Handle, numArgs uint32, argVectors **uint16) (err error) = advapi32.StartServiceW
-//sys  QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) = advapi32.QueryServiceStatus
-//sys  ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) = advapi32.ControlService
-//sys  StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) = advapi32.StartServiceCtrlDispatcherW
-//sys  SetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) = advapi32.SetServiceStatus
-//sys  ChangeServiceConfig(service Handle, serviceType uint32, startType uint32, errorControl uint32, binaryPathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16, displayName *uint16) (err error) = advapi32.ChangeServiceConfigW
-//sys  QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfigW
-//sys  ChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) = advapi32.ChangeServiceConfig2W
-//sys  QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfig2W
diff --git a/vendor/golang.org/x/sys/windows/str.go b/vendor/golang.org/x/sys/windows/str.go
deleted file mode 100644 (file)
index 917cc2a..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-package windows
-
-func itoa(val int) string { // do it here rather than with fmt to avoid dependency
-       if val < 0 {
-               return "-" + itoa(-val)
-       }
-       var buf [32]byte // big enough for int64
-       i := len(buf) - 1
-       for val >= 10 {
-               buf[i] = byte(val%10 + '0')
-               i--
-               val /= 10
-       }
-       buf[i] = byte(val + '0')
-       return string(buf[i:])
-}
diff --git a/vendor/golang.org/x/sys/windows/svc/debug/log.go b/vendor/golang.org/x/sys/windows/svc/debug/log.go
deleted file mode 100644 (file)
index e51ab42..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-package debug
-
-import (
-       "os"
-       "strconv"
-)
-
-// Log interface allows different log implementations to be used.
-type Log interface {
-       Close() error
-       Info(eid uint32, msg string) error
-       Warning(eid uint32, msg string) error
-       Error(eid uint32, msg string) error
-}
-
-// ConsoleLog provides access to the console.
-type ConsoleLog struct {
-       Name string
-}
-
-// New creates new ConsoleLog.
-func New(source string) *ConsoleLog {
-       return &ConsoleLog{Name: source}
-}
-
-// Close closes console log l.
-func (l *ConsoleLog) Close() error {
-       return nil
-}
-
-func (l *ConsoleLog) report(kind string, eid uint32, msg string) error {
-       s := l.Name + "." + kind + "(" + strconv.Itoa(int(eid)) + "): " + msg + "\n"
-       _, err := os.Stdout.Write([]byte(s))
-       return err
-}
-
-// Info writes an information event msg with event id eid to the console l.
-func (l *ConsoleLog) Info(eid uint32, msg string) error {
-       return l.report("info", eid, msg)
-}
-
-// Warning writes an warning event msg with event id eid to the console l.
-func (l *ConsoleLog) Warning(eid uint32, msg string) error {
-       return l.report("warn", eid, msg)
-}
-
-// Error writes an error event msg with event id eid to the console l.
-func (l *ConsoleLog) Error(eid uint32, msg string) error {
-       return l.report("error", eid, msg)
-}
diff --git a/vendor/golang.org/x/sys/windows/svc/debug/service.go b/vendor/golang.org/x/sys/windows/svc/debug/service.go
deleted file mode 100644 (file)
index d5ab94b..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-// Package debug provides facilities to execute svc.Handler on console.
-//
-package debug
-
-import (
-       "os"
-       "os/signal"
-       "syscall"
-
-       "golang.org/x/sys/windows/svc"
-)
-
-// Run executes service name by calling appropriate handler function.
-// The process is running on console, unlike real service. Use Ctrl+C to
-// send "Stop" command to your service.
-func Run(name string, handler svc.Handler) error {
-       cmds := make(chan svc.ChangeRequest)
-       changes := make(chan svc.Status)
-
-       sig := make(chan os.Signal)
-       signal.Notify(sig)
-
-       go func() {
-               status := svc.Status{State: svc.Stopped}
-               for {
-                       select {
-                       case <-sig:
-                               cmds <- svc.ChangeRequest{svc.Stop, status}
-                       case status = <-changes:
-                       }
-               }
-       }()
-
-       _, errno := handler.Execute([]string{name}, cmds, changes)
-       if errno != 0 {
-               return syscall.Errno(errno)
-       }
-       return nil
-}
diff --git a/vendor/golang.org/x/sys/windows/svc/event.go b/vendor/golang.org/x/sys/windows/svc/event.go
deleted file mode 100644 (file)
index 0508e22..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-package svc
-
-import (
-       "errors"
-
-       "golang.org/x/sys/windows"
-)
-
-// event represents auto-reset, initially non-signaled Windows event.
-// It is used to communicate between go and asm parts of this package.
-type event struct {
-       h windows.Handle
-}
-
-func newEvent() (*event, error) {
-       h, err := windows.CreateEvent(nil, 0, 0, nil)
-       if err != nil {
-               return nil, err
-       }
-       return &event{h: h}, nil
-}
-
-func (e *event) Close() error {
-       return windows.CloseHandle(e.h)
-}
-
-func (e *event) Set() error {
-       return windows.SetEvent(e.h)
-}
-
-func (e *event) Wait() error {
-       s, err := windows.WaitForSingleObject(e.h, windows.INFINITE)
-       switch s {
-       case windows.WAIT_OBJECT_0:
-               break
-       case windows.WAIT_FAILED:
-               return err
-       default:
-               return errors.New("unexpected result from WaitForSingleObject")
-       }
-       return nil
-}
diff --git a/vendor/golang.org/x/sys/windows/svc/eventlog/install.go b/vendor/golang.org/x/sys/windows/svc/eventlog/install.go
deleted file mode 100644 (file)
index c76a376..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-package eventlog
-
-import (
-       "errors"
-
-       "golang.org/x/sys/windows"
-       "golang.org/x/sys/windows/registry"
-)
-
-const (
-       // Log levels.
-       Info    = windows.EVENTLOG_INFORMATION_TYPE
-       Warning = windows.EVENTLOG_WARNING_TYPE
-       Error   = windows.EVENTLOG_ERROR_TYPE
-)
-
-const addKeyName = `SYSTEM\CurrentControlSet\Services\EventLog\Application`
-
-// Install modifies PC registry to allow logging with an event source src.
-// It adds all required keys and values to the event log registry key.
-// Install uses msgFile as the event message file. If useExpandKey is true,
-// the event message file is installed as REG_EXPAND_SZ value,
-// otherwise as REG_SZ. Use bitwise of log.Error, log.Warning and
-// log.Info to specify events supported by the new event source.
-func Install(src, msgFile string, useExpandKey bool, eventsSupported uint32) error {
-       appkey, err := registry.OpenKey(registry.LOCAL_MACHINE, addKeyName, registry.CREATE_SUB_KEY)
-       if err != nil {
-               return err
-       }
-       defer appkey.Close()
-
-       sk, alreadyExist, err := registry.CreateKey(appkey, src, registry.SET_VALUE)
-       if err != nil {
-               return err
-       }
-       defer sk.Close()
-       if alreadyExist {
-               return errors.New(addKeyName + `\` + src + " registry key already exists")
-       }
-
-       err = sk.SetDWordValue("CustomSource", 1)
-       if err != nil {
-               return err
-       }
-       if useExpandKey {
-               err = sk.SetExpandStringValue("EventMessageFile", msgFile)
-       } else {
-               err = sk.SetStringValue("EventMessageFile", msgFile)
-       }
-       if err != nil {
-               return err
-       }
-       err = sk.SetDWordValue("TypesSupported", eventsSupported)
-       if err != nil {
-               return err
-       }
-       return nil
-}
-
-// InstallAsEventCreate is the same as Install, but uses
-// %SystemRoot%\System32\EventCreate.exe as the event message file.
-func InstallAsEventCreate(src string, eventsSupported uint32) error {
-       return Install(src, "%SystemRoot%\\System32\\EventCreate.exe", true, eventsSupported)
-}
-
-// Remove deletes all registry elements installed by the correspondent Install.
-func Remove(src string) error {
-       appkey, err := registry.OpenKey(registry.LOCAL_MACHINE, addKeyName, registry.SET_VALUE)
-       if err != nil {
-               return err
-       }
-       defer appkey.Close()
-       return registry.DeleteKey(appkey, src)
-}
diff --git a/vendor/golang.org/x/sys/windows/svc/eventlog/log.go b/vendor/golang.org/x/sys/windows/svc/eventlog/log.go
deleted file mode 100644 (file)
index 46e5153..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-// Package eventlog implements access to Windows event log.
-//
-package eventlog
-
-import (
-       "errors"
-       "syscall"
-
-       "golang.org/x/sys/windows"
-)
-
-// Log provides access to the system log.
-type Log struct {
-       Handle windows.Handle
-}
-
-// Open retrieves a handle to the specified event log.
-func Open(source string) (*Log, error) {
-       return OpenRemote("", source)
-}
-
-// OpenRemote does the same as Open, but on different computer host.
-func OpenRemote(host, source string) (*Log, error) {
-       if source == "" {
-               return nil, errors.New("Specify event log source")
-       }
-       var s *uint16
-       if host != "" {
-               s = syscall.StringToUTF16Ptr(host)
-       }
-       h, err := windows.RegisterEventSource(s, syscall.StringToUTF16Ptr(source))
-       if err != nil {
-               return nil, err
-       }
-       return &Log{Handle: h}, nil
-}
-
-// Close closes event log l.
-func (l *Log) Close() error {
-       return windows.DeregisterEventSource(l.Handle)
-}
-
-func (l *Log) report(etype uint16, eid uint32, msg string) error {
-       ss := []*uint16{syscall.StringToUTF16Ptr(msg)}
-       return windows.ReportEvent(l.Handle, etype, 0, eid, 0, 1, 0, &ss[0], nil)
-}
-
-// Info writes an information event msg with event id eid to the end of event log l.
-// When EventCreate.exe is used, eid must be between 1 and 1000.
-func (l *Log) Info(eid uint32, msg string) error {
-       return l.report(windows.EVENTLOG_INFORMATION_TYPE, eid, msg)
-}
-
-// Warning writes an warning event msg with event id eid to the end of event log l.
-// When EventCreate.exe is used, eid must be between 1 and 1000.
-func (l *Log) Warning(eid uint32, msg string) error {
-       return l.report(windows.EVENTLOG_WARNING_TYPE, eid, msg)
-}
-
-// Error writes an error event msg with event id eid to the end of event log l.
-// When EventCreate.exe is used, eid must be between 1 and 1000.
-func (l *Log) Error(eid uint32, msg string) error {
-       return l.report(windows.EVENTLOG_ERROR_TYPE, eid, msg)
-}
diff --git a/vendor/golang.org/x/sys/windows/svc/eventlog/log_test.go b/vendor/golang.org/x/sys/windows/svc/eventlog/log_test.go
deleted file mode 100644 (file)
index 4dd8ad9..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2012 The Go Authors.  All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-package eventlog_test
-
-import (
-       "testing"
-
-       "golang.org/x/sys/windows/svc/eventlog"
-)
-
-func TestLog(t *testing.T) {
-       if testing.Short() {
-               t.Skip("skipping test in short mode - it modifies system logs")
-       }
-
-       const name = "mylog"
-       const supports = eventlog.Error | eventlog.Warning | eventlog.Info
-       err := eventlog.InstallAsEventCreate(name, supports)
-       if err != nil {
-               t.Fatalf("Install failed: %s", err)
-       }
-       defer func() {
-               err = eventlog.Remove(name)
-               if err != nil {
-                       t.Fatalf("Remove failed: %s", err)
-               }
-       }()
-
-       l, err := eventlog.Open(name)
-       if err != nil {
-               t.Fatalf("Open failed: %s", err)
-       }
-       defer l.Close()
-
-       err = l.Info(1, "info")
-       if err != nil {
-               t.Fatalf("Info failed: %s", err)
-       }
-       err = l.Warning(2, "warning")
-       if err != nil {
-               t.Fatalf("Warning failed: %s", err)
-       }
-       err = l.Error(3, "error")
-       if err != nil {
-               t.Fatalf("Error failed: %s", err)
-       }
-}
diff --git a/vendor/golang.org/x/sys/windows/svc/example/beep.go b/vendor/golang.org/x/sys/windows/svc/example/beep.go
deleted file mode 100644 (file)
index dcf2340..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-package main
-
-import (
-       "syscall"
-)
-
-// BUG(brainman): MessageBeep Windows api is broken on Windows 7,
-// so this example does not beep when runs as service on Windows 7.
-
-var (
-       beepFunc = syscall.MustLoadDLL("user32.dll").MustFindProc("MessageBeep")
-)
-
-func beep() {
-       beepFunc.Call(0xffffffff)
-}
diff --git a/vendor/golang.org/x/sys/windows/svc/example/install.go b/vendor/golang.org/x/sys/windows/svc/example/install.go
deleted file mode 100644 (file)
index 39cb00d..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-package main
-
-import (
-       "fmt"
-       "os"
-       "path/filepath"
-
-       "golang.org/x/sys/windows/svc/eventlog"
-       "golang.org/x/sys/windows/svc/mgr"
-)
-
-func exePath() (string, error) {
-       prog := os.Args[0]
-       p, err := filepath.Abs(prog)
-       if err != nil {
-               return "", err
-       }
-       fi, err := os.Stat(p)
-       if err == nil {
-               if !fi.Mode().IsDir() {
-                       return p, nil
-               }
-               err = fmt.Errorf("%s is directory", p)
-       }
-       if filepath.Ext(p) == "" {
-               p += ".exe"
-               fi, err := os.Stat(p)
-               if err == nil {
-                       if !fi.Mode().IsDir() {
-                               return p, nil
-                       }
-                       err = fmt.Errorf("%s is directory", p)
-               }
-       }
-       return "", err
-}
-
-func installService(name, desc string) error {
-       exepath, err := exePath()
-       if err != nil {
-               return err
-       }
-       m, err := mgr.Connect()
-       if err != nil {
-               return err
-       }
-       defer m.Disconnect()
-       s, err := m.OpenService(name)
-       if err == nil {
-               s.Close()
-               return fmt.Errorf("service %s already exists", name)
-       }
-       s, err = m.CreateService(name, exepath, mgr.Config{DisplayName: desc}, "is", "auto-started")
-       if err != nil {
-               return err
-       }
-       defer s.Close()
-       err = eventlog.InstallAsEventCreate(name, eventlog.Error|eventlog.Warning|eventlog.Info)
-       if err != nil {
-               s.Delete()
-               return fmt.Errorf("SetupEventLogSource() failed: %s", err)
-       }
-       return nil
-}
-
-func removeService(name string) error {
-       m, err := mgr.Connect()
-       if err != nil {
-               return err
-       }
-       defer m.Disconnect()
-       s, err := m.OpenService(name)
-       if err != nil {
-               return fmt.Errorf("service %s is not installed", name)
-       }
-       defer s.Close()
-       err = s.Delete()
-       if err != nil {
-               return err
-       }
-       err = eventlog.Remove(name)
-       if err != nil {
-               return fmt.Errorf("RemoveEventLogSource() failed: %s", err)
-       }
-       return nil
-}
diff --git a/vendor/golang.org/x/sys/windows/svc/example/main.go b/vendor/golang.org/x/sys/windows/svc/example/main.go
deleted file mode 100644 (file)
index dc96c08..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-// Example service program that beeps.
-//
-// The program demonstrates how to create Windows service and
-// install / remove it on a computer. It also shows how to
-// stop / start / pause / continue any service, and how to
-// write to event log. It also shows how to use debug
-// facilities available in debug package.
-//
-package main
-
-import (
-       "fmt"
-       "log"
-       "os"
-       "strings"
-
-       "golang.org/x/sys/windows/svc"
-)
-
-func usage(errmsg string) {
-       fmt.Fprintf(os.Stderr,
-               "%s\n\n"+
-                       "usage: %s <command>\n"+
-                       "       where <command> is one of\n"+
-                       "       install, remove, debug, start, stop, pause or continue.\n",
-               errmsg, os.Args[0])
-       os.Exit(2)
-}
-
-func main() {
-       const svcName = "myservice"
-
-       isIntSess, err := svc.IsAnInteractiveSession()
-       if err != nil {
-               log.Fatalf("failed to determine if we are running in an interactive session: %v", err)
-       }
-       if !isIntSess {
-               runService(svcName, false)
-               return
-       }
-
-       if len(os.Args) < 2 {
-               usage("no command specified")
-       }
-
-       cmd := strings.ToLower(os.Args[1])
-       switch cmd {
-       case "debug":
-               runService(svcName, true)
-               return
-       case "install":
-               err = installService(svcName, "my service")
-       case "remove":
-               err = removeService(svcName)
-       case "start":
-               err = startService(svcName)
-       case "stop":
-               err = controlService(svcName, svc.Stop, svc.Stopped)
-       case "pause":
-               err = controlService(svcName, svc.Pause, svc.Paused)
-       case "continue":
-               err = controlService(svcName, svc.Continue, svc.Running)
-       default:
-               usage(fmt.Sprintf("invalid command %s", cmd))
-       }
-       if err != nil {
-               log.Fatalf("failed to %s %s: %v", cmd, svcName, err)
-       }
-       return
-}
diff --git a/vendor/golang.org/x/sys/windows/svc/example/manage.go b/vendor/golang.org/x/sys/windows/svc/example/manage.go
deleted file mode 100644 (file)
index 782dbd9..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-package main
-
-import (
-       "fmt"
-       "time"
-
-       "golang.org/x/sys/windows/svc"
-       "golang.org/x/sys/windows/svc/mgr"
-)
-
-func startService(name string) error {
-       m, err := mgr.Connect()
-       if err != nil {
-               return err
-       }
-       defer m.Disconnect()
-       s, err := m.OpenService(name)
-       if err != nil {
-               return fmt.Errorf("could not access service: %v", err)
-       }
-       defer s.Close()
-       err = s.Start("is", "manual-started")
-       if err != nil {
-               return fmt.Errorf("could not start service: %v", err)
-       }
-       return nil
-}
-
-func controlService(name string, c svc.Cmd, to svc.State) error {
-       m, err := mgr.Connect()
-       if err != nil {
-               return err
-       }
-       defer m.Disconnect()
-       s, err := m.OpenService(name)
-       if err != nil {
-               return fmt.Errorf("could not access service: %v", err)
-       }
-       defer s.Close()
-       status, err := s.Control(c)
-       if err != nil {
-               return fmt.Errorf("could not send control=%d: %v", c, err)
-       }
-       timeout := time.Now().Add(10 * time.Second)
-       for status.State != to {
-               if timeout.Before(time.Now()) {
-                       return fmt.Errorf("timeout waiting for service to go to state=%d", to)
-               }
-               time.Sleep(300 * time.Millisecond)
-               status, err = s.Query()
-               if err != nil {
-                       return fmt.Errorf("could not retrieve service status: %v", err)
-               }
-       }
-       return nil
-}
diff --git a/vendor/golang.org/x/sys/windows/svc/example/service.go b/vendor/golang.org/x/sys/windows/svc/example/service.go
deleted file mode 100644 (file)
index 237e809..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-package main
-
-import (
-       "fmt"
-       "time"
-
-       "golang.org/x/sys/windows/svc"
-       "golang.org/x/sys/windows/svc/debug"
-       "golang.org/x/sys/windows/svc/eventlog"
-)
-
-var elog debug.Log
-
-type myservice struct{}
-
-func (m *myservice) Execute(args []string, r <-chan svc.ChangeRequest, changes chan<- svc.Status) (ssec bool, errno uint32) {
-       const cmdsAccepted = svc.AcceptStop | svc.AcceptShutdown | svc.AcceptPauseAndContinue
-       changes <- svc.Status{State: svc.StartPending}
-       fasttick := time.Tick(500 * time.Millisecond)
-       slowtick := time.Tick(2 * time.Second)
-       tick := fasttick
-       changes <- svc.Status{State: svc.Running, Accepts: cmdsAccepted}
-loop:
-       for {
-               select {
-               case <-tick:
-                       beep()
-                       elog.Info(1, "beep")
-               case c := <-r:
-                       switch c.Cmd {
-                       case svc.Interrogate:
-                               changes <- c.CurrentStatus
-                               // Testing deadlock from https://code.google.com/p/winsvc/issues/detail?id=4
-                               time.Sleep(100 * time.Millisecond)
-                               changes <- c.CurrentStatus
-                       case svc.Stop, svc.Shutdown:
-                               break loop
-                       case svc.Pause:
-                               changes <- svc.Status{State: svc.Paused, Accepts: cmdsAccepted}
-                               tick = slowtick
-                       case svc.Continue:
-                               changes <- svc.Status{State: svc.Running, Accepts: cmdsAccepted}
-                               tick = fasttick
-                       default:
-                               elog.Error(1, fmt.Sprintf("unexpected control request #%d", c))
-                       }
-               }
-       }
-       changes <- svc.Status{State: svc.StopPending}
-       return
-}
-
-func runService(name string, isDebug bool) {
-       var err error
-       if isDebug {
-               elog = debug.New(name)
-       } else {
-               elog, err = eventlog.Open(name)
-               if err != nil {
-                       return
-               }
-       }
-       defer elog.Close()
-
-       elog.Info(1, fmt.Sprintf("starting %s service", name))
-       run := svc.Run
-       if isDebug {
-               run = debug.Run
-       }
-       err = run(name, &myservice{})
-       if err != nil {
-               elog.Error(1, fmt.Sprintf("%s service failed: %v", name, err))
-               return
-       }
-       elog.Info(1, fmt.Sprintf("%s service stopped", name))
-}
diff --git a/vendor/golang.org/x/sys/windows/svc/go12.c b/vendor/golang.org/x/sys/windows/svc/go12.c
deleted file mode 100644 (file)
index 6f1be1f..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-// +build !go1.3
-
-// copied from pkg/runtime
-typedef        unsigned int    uint32;
-typedef        unsigned long long int  uint64;
-#ifdef _64BIT
-typedef        uint64          uintptr;
-#else
-typedef        uint32          uintptr;
-#endif
-
-// from sys_386.s or sys_amd64.s
-void ·servicemain(void);
-
-void
-·getServiceMain(uintptr *r)
-{
-       *r = (uintptr)·servicemain;
-}
diff --git a/vendor/golang.org/x/sys/windows/svc/go12.go b/vendor/golang.org/x/sys/windows/svc/go12.go
deleted file mode 100644 (file)
index 6f0a924..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright 2014 The Go Authors.  All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-// +build !go1.3
-
-package svc
-
-// from go12.c
-func getServiceMain(r *uintptr)
diff --git a/vendor/golang.org/x/sys/windows/svc/go13.go b/vendor/golang.org/x/sys/windows/svc/go13.go
deleted file mode 100644 (file)
index 432a9e7..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2014 The Go Authors.  All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-// +build go1.3
-
-package svc
-
-import "unsafe"
-
-const ptrSize = 4 << (^uintptr(0) >> 63) // unsafe.Sizeof(uintptr(0)) but an ideal const
-
-// Should be a built-in for unsafe.Pointer?
-func add(p unsafe.Pointer, x uintptr) unsafe.Pointer {
-       return unsafe.Pointer(uintptr(p) + x)
-}
-
-// funcPC returns the entry PC of the function f.
-// It assumes that f is a func value. Otherwise the behavior is undefined.
-func funcPC(f interface{}) uintptr {
-       return **(**uintptr)(add(unsafe.Pointer(&f), ptrSize))
-}
-
-// from sys_386.s and sys_amd64.s
-func servicectlhandler(ctl uint32) uintptr
-func servicemain(argc uint32, argv **uint16)
-
-func getServiceMain(r *uintptr) {
-       *r = funcPC(servicemain)
-}
diff --git a/vendor/golang.org/x/sys/windows/svc/mgr/config.go b/vendor/golang.org/x/sys/windows/svc/mgr/config.go
deleted file mode 100644 (file)
index 0a6edba..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-package mgr
-
-import (
-       "syscall"
-       "unicode/utf16"
-       "unsafe"
-
-       "golang.org/x/sys/windows"
-)
-
-const (
-       // Service start types.
-       StartManual    = windows.SERVICE_DEMAND_START // the service must be started manually
-       StartAutomatic = windows.SERVICE_AUTO_START   // the service will start by itself whenever the computer reboots
-       StartDisabled  = windows.SERVICE_DISABLED     // the service cannot be started
-
-       // The severity of the error, and action taken,
-       // if this service fails to start.
-       ErrorCritical = windows.SERVICE_ERROR_CRITICAL
-       ErrorIgnore   = windows.SERVICE_ERROR_IGNORE
-       ErrorNormal   = windows.SERVICE_ERROR_NORMAL
-       ErrorSevere   = windows.SERVICE_ERROR_SEVERE
-)
-
-// TODO(brainman): Password is not returned by windows.QueryServiceConfig, not sure how to get it.
-
-type Config struct {
-       ServiceType      uint32
-       StartType        uint32
-       ErrorControl     uint32
-       BinaryPathName   string // fully qualified path to the service binary file, can also include arguments for an auto-start service
-       LoadOrderGroup   string
-       TagId            uint32
-       Dependencies     []string
-       ServiceStartName string // name of the account under which the service should run
-       DisplayName      string
-       Password         string
-       Description      string
-}
-
-func toString(p *uint16) string {
-       if p == nil {
-               return ""
-       }
-       return syscall.UTF16ToString((*[4096]uint16)(unsafe.Pointer(p))[:])
-}
-
-func toStringSlice(ps *uint16) []string {
-       if ps == nil {
-               return nil
-       }
-       r := make([]string, 0)
-       for from, i, p := 0, 0, (*[1 << 24]uint16)(unsafe.Pointer(ps)); true; i++ {
-               if p[i] == 0 {
-                       // empty string marks the end
-                       if i <= from {
-                               break
-                       }
-                       r = append(r, string(utf16.Decode(p[from:i])))
-                       from = i + 1
-               }
-       }
-       return r
-}
-
-// Config retrieves service s configuration paramteres.
-func (s *Service) Config() (Config, error) {
-       var p *windows.QUERY_SERVICE_CONFIG
-       n := uint32(1024)
-       for {
-               b := make([]byte, n)
-               p = (*windows.QUERY_SERVICE_CONFIG)(unsafe.Pointer(&b[0]))
-               err := windows.QueryServiceConfig(s.Handle, p, n, &n)
-               if err == nil {
-                       break
-               }
-               if err.(syscall.Errno) != syscall.ERROR_INSUFFICIENT_BUFFER {
-                       return Config{}, err
-               }
-               if n <= uint32(len(b)) {
-                       return Config{}, err
-               }
-       }
-
-       var p2 *windows.SERVICE_DESCRIPTION
-       n = uint32(1024)
-       for {
-               b := make([]byte, n)
-               p2 = (*windows.SERVICE_DESCRIPTION)(unsafe.Pointer(&b[0]))
-               err := windows.QueryServiceConfig2(s.Handle,
-                       windows.SERVICE_CONFIG_DESCRIPTION, &b[0], n, &n)
-               if err == nil {
-                       break
-               }
-               if err.(syscall.Errno) != syscall.ERROR_INSUFFICIENT_BUFFER {
-                       return Config{}, err
-               }
-               if n <= uint32(len(b)) {
-                       return Config{}, err
-               }
-       }
-
-       return Config{
-               ServiceType:      p.ServiceType,
-               StartType:        p.StartType,
-               ErrorControl:     p.ErrorControl,
-               BinaryPathName:   toString(p.BinaryPathName),
-               LoadOrderGroup:   toString(p.LoadOrderGroup),
-               TagId:            p.TagId,
-               Dependencies:     toStringSlice(p.Dependencies),
-               ServiceStartName: toString(p.ServiceStartName),
-               DisplayName:      toString(p.DisplayName),
-               Description:      toString(p2.Description),
-       }, nil
-}
-
-func updateDescription(handle windows.Handle, desc string) error {
-       d := windows.SERVICE_DESCRIPTION{toPtr(desc)}
-       return windows.ChangeServiceConfig2(handle,
-               windows.SERVICE_CONFIG_DESCRIPTION, (*byte)(unsafe.Pointer(&d)))
-}
-
-// UpdateConfig updates service s configuration parameters.
-func (s *Service) UpdateConfig(c Config) error {
-       err := windows.ChangeServiceConfig(s.Handle, c.ServiceType, c.StartType,
-               c.ErrorControl, toPtr(c.BinaryPathName), toPtr(c.LoadOrderGroup),
-               nil, toStringBlock(c.Dependencies), toPtr(c.ServiceStartName),
-               toPtr(c.Password), toPtr(c.DisplayName))
-       if err != nil {
-               return err
-       }
-       return updateDescription(s.Handle, c.Description)
-}
diff --git a/vendor/golang.org/x/sys/windows/svc/mgr/mgr.go b/vendor/golang.org/x/sys/windows/svc/mgr/mgr.go
deleted file mode 100644 (file)
index da8ceb6..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-// Package mgr can be used to manage Windows service programs.
-// It can be used to install and remove them. It can also start,
-// stop and pause them. The package can query / change current
-// service state and config parameters.
-//
-package mgr
-
-import (
-       "syscall"
-       "unicode/utf16"
-
-       "golang.org/x/sys/windows"
-)
-
-// Mgr is used to manage Windows service.
-type Mgr struct {
-       Handle windows.Handle
-}
-
-// Connect establishes a connection to the service control manager.
-func Connect() (*Mgr, error) {
-       return ConnectRemote("")
-}
-
-// ConnectRemote establishes a connection to the
-// service control manager on computer named host.
-func ConnectRemote(host string) (*Mgr, error) {
-       var s *uint16
-       if host != "" {
-               s = syscall.StringToUTF16Ptr(host)
-       }
-       h, err := windows.OpenSCManager(s, nil, windows.SC_MANAGER_ALL_ACCESS)
-       if err != nil {
-               return nil, err
-       }
-       return &Mgr{Handle: h}, nil
-}
-
-// Disconnect closes connection to the service control manager m.
-func (m *Mgr) Disconnect() error {
-       return windows.CloseServiceHandle(m.Handle)
-}
-
-func toPtr(s string) *uint16 {
-       if len(s) == 0 {
-               return nil
-       }
-       return syscall.StringToUTF16Ptr(s)
-}
-
-// toStringBlock terminates strings in ss with 0, and then
-// concatenates them together. It also adds extra 0 at the end.
-func toStringBlock(ss []string) *uint16 {
-       if len(ss) == 0 {
-               return nil
-       }
-       t := ""
-       for _, s := range ss {
-               if s != "" {
-                       t += s + "\x00"
-               }
-       }
-       if t == "" {
-               return nil
-       }
-       t += "\x00"
-       return &utf16.Encode([]rune(t))[0]
-}
-
-// CreateService installs new service name on the system.
-// The service will be executed by running exepath binary.
-// Use config c to specify service parameters.
-// If service StartType is set to StartAutomatic,
-// args will be passed to svc.Handle.Execute.
-func (m *Mgr) CreateService(name, exepath string, c Config, args ...string) (*Service, error) {
-       if c.StartType == 0 {
-               c.StartType = StartManual
-       }
-       if c.ErrorControl == 0 {
-               c.ErrorControl = ErrorNormal
-       }
-       if c.ServiceType == 0 {
-               c.ServiceType = windows.SERVICE_WIN32_OWN_PROCESS
-       }
-       s := syscall.EscapeArg(exepath)
-       for _, v := range args {
-               s += " " + syscall.EscapeArg(v)
-       }
-       h, err := windows.CreateService(m.Handle, toPtr(name), toPtr(c.DisplayName),
-               windows.SERVICE_ALL_ACCESS, c.ServiceType,
-               c.StartType, c.ErrorControl, toPtr(s), toPtr(c.LoadOrderGroup),
-               nil, toStringBlock(c.Dependencies), toPtr(c.ServiceStartName), toPtr(c.Password))
-       if err != nil {
-               return nil, err
-       }
-       if c.Description != "" {
-               err = updateDescription(h, c.Description)
-               if err != nil {
-                       return nil, err
-               }
-       }
-       return &Service{Name: name, Handle: h}, nil
-}
-
-// OpenService retrieves access to service name, so it can
-// be interrogated and controlled.
-func (m *Mgr) OpenService(name string) (*Service, error) {
-       h, err := windows.OpenService(m.Handle, syscall.StringToUTF16Ptr(name), windows.SERVICE_ALL_ACCESS)
-       if err != nil {
-               return nil, err
-       }
-       return &Service{Name: name, Handle: h}, nil
-}
diff --git a/vendor/golang.org/x/sys/windows/svc/mgr/mgr_test.go b/vendor/golang.org/x/sys/windows/svc/mgr/mgr_test.go
deleted file mode 100644 (file)
index 78be970..0000000
+++ /dev/null
@@ -1,154 +0,0 @@
-// Copyright 2012 The Go Authors.  All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-package mgr_test
-
-import (
-       "os"
-       "path/filepath"
-       "sort"
-       "strings"
-       "syscall"
-       "testing"
-       "time"
-
-       "golang.org/x/sys/windows/svc/mgr"
-)
-
-func TestOpenLanManServer(t *testing.T) {
-       m, err := mgr.Connect()
-       if err != nil {
-               if errno, ok := err.(syscall.Errno); ok && errno == syscall.ERROR_ACCESS_DENIED {
-                       t.Skip("Skipping test: we don't have rights to manage services.")
-               }
-               t.Fatalf("SCM connection failed: %s", err)
-       }
-       defer m.Disconnect()
-
-       s, err := m.OpenService("LanmanServer")
-       if err != nil {
-               t.Fatalf("OpenService(lanmanserver) failed: %s", err)
-       }
-       defer s.Close()
-
-       _, err = s.Config()
-       if err != nil {
-               t.Fatalf("Config failed: %s", err)
-       }
-}
-
-func install(t *testing.T, m *mgr.Mgr, name, exepath string, c mgr.Config) {
-       // Sometimes it takes a while for the service to get
-       // removed after previous test run.
-       for i := 0; ; i++ {
-               s, err := m.OpenService(name)
-               if err != nil {
-                       break
-               }
-               s.Close()
-
-               if i > 10 {
-                       t.Fatalf("service %s already exists", name)
-               }
-               time.Sleep(300 * time.Millisecond)
-       }
-
-       s, err := m.CreateService(name, exepath, c)
-       if err != nil {
-               t.Fatalf("CreateService(%s) failed: %v", name, err)
-       }
-       defer s.Close()
-}
-
-func depString(d []string) string {
-       if len(d) == 0 {
-               return ""
-       }
-       for i := range d {
-               d[i] = strings.ToLower(d[i])
-       }
-       ss := sort.StringSlice(d)
-       ss.Sort()
-       return strings.Join([]string(ss), " ")
-}
-
-func testConfig(t *testing.T, s *mgr.Service, should mgr.Config) mgr.Config {
-       is, err := s.Config()
-       if err != nil {
-               t.Fatalf("Config failed: %s", err)
-       }
-       if should.DisplayName != is.DisplayName {
-               t.Fatalf("config mismatch: DisplayName is %q, but should have %q", is.DisplayName, should.DisplayName)
-       }
-       if should.StartType != is.StartType {
-               t.Fatalf("config mismatch: StartType is %v, but should have %v", is.StartType, should.StartType)
-       }
-       if should.Description != is.Description {
-               t.Fatalf("config mismatch: Description is %q, but should have %q", is.Description, should.Description)
-       }
-       if depString(should.Dependencies) != depString(is.Dependencies) {
-               t.Fatalf("config mismatch: Dependencies is %v, but should have %v", is.Dependencies, should.Dependencies)
-       }
-       return is
-}
-
-func remove(t *testing.T, s *mgr.Service) {
-       err := s.Delete()
-       if err != nil {
-               t.Fatalf("Delete failed: %s", err)
-       }
-}
-
-func TestMyService(t *testing.T) {
-       if testing.Short() {
-               t.Skip("skipping test in short mode - it modifies system services")
-       }
-
-       const name = "myservice"
-
-       m, err := mgr.Connect()
-       if err != nil {
-               if errno, ok := err.(syscall.Errno); ok && errno == syscall.ERROR_ACCESS_DENIED {
-                       t.Skip("Skipping test: we don't have rights to manage services.")
-               }
-               t.Fatalf("SCM connection failed: %s", err)
-       }
-       defer m.Disconnect()
-
-       c := mgr.Config{
-               StartType:    mgr.StartDisabled,
-               DisplayName:  "my service",
-               Description:  "my service is just a test",
-               Dependencies: []string{"LanmanServer", "W32Time"},
-       }
-
-       exename := os.Args[0]
-       exepath, err := filepath.Abs(exename)
-       if err != nil {
-               t.Fatalf("filepath.Abs(%s) failed: %s", exename, err)
-       }
-
-       install(t, m, name, exepath, c)
-
-       s, err := m.OpenService(name)
-       if err != nil {
-               t.Fatalf("service %s is not installed", name)
-       }
-       defer s.Close()
-
-       c.BinaryPathName = exepath
-       c = testConfig(t, s, c)
-
-       c.StartType = mgr.StartManual
-       err = s.UpdateConfig(c)
-       if err != nil {
-               t.Fatalf("UpdateConfig failed: %v", err)
-       }
-
-       testConfig(t, s, c)
-
-       remove(t, s)
-}
diff --git a/vendor/golang.org/x/sys/windows/svc/mgr/service.go b/vendor/golang.org/x/sys/windows/svc/mgr/service.go
deleted file mode 100644 (file)
index 465f3c3..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-package mgr
-
-import (
-       "syscall"
-
-       "golang.org/x/sys/windows"
-       "golang.org/x/sys/windows/svc"
-)
-
-// TODO(brainman): Use EnumDependentServices to enumerate dependent services.
-
-// TODO(brainman): Use EnumServicesStatus to enumerate services in the specified service control manager database.
-
-// Service is used to access Windows service.
-type Service struct {
-       Name   string
-       Handle windows.Handle
-}
-
-// Delete marks service s for deletion from the service control manager database.
-func (s *Service) Delete() error {
-       return windows.DeleteService(s.Handle)
-}
-
-// Close relinquish access to the service s.
-func (s *Service) Close() error {
-       return windows.CloseServiceHandle(s.Handle)
-}
-
-// Start starts service s.
-// args will be passed to svc.Handler.Execute.
-func (s *Service) Start(args ...string) error {
-       var p **uint16
-       if len(args) > 0 {
-               vs := make([]*uint16, len(args))
-               for i, _ := range vs {
-                       vs[i] = syscall.StringToUTF16Ptr(args[i])
-               }
-               p = &vs[0]
-       }
-       return windows.StartService(s.Handle, uint32(len(args)), p)
-}
-
-// Control sends state change request c to the servce s.
-func (s *Service) Control(c svc.Cmd) (svc.Status, error) {
-       var t windows.SERVICE_STATUS
-       err := windows.ControlService(s.Handle, uint32(c), &t)
-       if err != nil {
-               return svc.Status{}, err
-       }
-       return svc.Status{
-               State:   svc.State(t.CurrentState),
-               Accepts: svc.Accepted(t.ControlsAccepted),
-       }, nil
-}
-
-// Query returns current status of service s.
-func (s *Service) Query() (svc.Status, error) {
-       var t windows.SERVICE_STATUS
-       err := windows.QueryServiceStatus(s.Handle, &t)
-       if err != nil {
-               return svc.Status{}, err
-       }
-       return svc.Status{
-               State:   svc.State(t.CurrentState),
-               Accepts: svc.Accepted(t.ControlsAccepted),
-       }, nil
-}
diff --git a/vendor/golang.org/x/sys/windows/svc/security.go b/vendor/golang.org/x/sys/windows/svc/security.go
deleted file mode 100644 (file)
index 6fbc923..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-package svc
-
-import (
-       "unsafe"
-
-       "golang.org/x/sys/windows"
-)
-
-func allocSid(subAuth0 uint32) (*windows.SID, error) {
-       var sid *windows.SID
-       err := windows.AllocateAndInitializeSid(&windows.SECURITY_NT_AUTHORITY,
-               1, subAuth0, 0, 0, 0, 0, 0, 0, 0, &sid)
-       if err != nil {
-               return nil, err
-       }
-       return sid, nil
-}
-
-// IsAnInteractiveSession determines if calling process is running interactively.
-// It queries the process token for membership in the Interactive group.
-// http://stackoverflow.com/questions/2668851/how-do-i-detect-that-my-application-is-running-as-service-or-in-an-interactive-s
-func IsAnInteractiveSession() (bool, error) {
-       interSid, err := allocSid(windows.SECURITY_INTERACTIVE_RID)
-       if err != nil {
-               return false, err
-       }
-       defer windows.FreeSid(interSid)
-
-       serviceSid, err := allocSid(windows.SECURITY_SERVICE_RID)
-       if err != nil {
-               return false, err
-       }
-       defer windows.FreeSid(serviceSid)
-
-       t, err := windows.OpenCurrentProcessToken()
-       if err != nil {
-               return false, err
-       }
-       defer t.Close()
-
-       gs, err := t.GetTokenGroups()
-       if err != nil {
-               return false, err
-       }
-       p := unsafe.Pointer(&gs.Groups[0])
-       groups := (*[2 << 20]windows.SIDAndAttributes)(p)[:gs.GroupCount]
-       for _, g := range groups {
-               if windows.EqualSid(g.Sid, interSid) {
-                       return true, nil
-               }
-               if windows.EqualSid(g.Sid, serviceSid) {
-                       return false, nil
-               }
-       }
-       return false, nil
-}
diff --git a/vendor/golang.org/x/sys/windows/svc/service.go b/vendor/golang.org/x/sys/windows/svc/service.go
deleted file mode 100644 (file)
index 9864f7a..0000000
+++ /dev/null
@@ -1,316 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-// Package svc provides everything required to build Windows service.
-//
-package svc
-
-import (
-       "errors"
-       "runtime"
-       "syscall"
-       "unsafe"
-
-       "golang.org/x/sys/windows"
-)
-
-// State describes service execution state (Stopped, Running and so on).
-type State uint32
-
-const (
-       Stopped         = State(windows.SERVICE_STOPPED)
-       StartPending    = State(windows.SERVICE_START_PENDING)
-       StopPending     = State(windows.SERVICE_STOP_PENDING)
-       Running         = State(windows.SERVICE_RUNNING)
-       ContinuePending = State(windows.SERVICE_CONTINUE_PENDING)
-       PausePending    = State(windows.SERVICE_PAUSE_PENDING)
-       Paused          = State(windows.SERVICE_PAUSED)
-)
-
-// Cmd represents service state change request. It is sent to a service
-// by the service manager, and should be actioned upon by the service.
-type Cmd uint32
-
-const (
-       Stop        = Cmd(windows.SERVICE_CONTROL_STOP)
-       Pause       = Cmd(windows.SERVICE_CONTROL_PAUSE)
-       Continue    = Cmd(windows.SERVICE_CONTROL_CONTINUE)
-       Interrogate = Cmd(windows.SERVICE_CONTROL_INTERROGATE)
-       Shutdown    = Cmd(windows.SERVICE_CONTROL_SHUTDOWN)
-)
-
-// Accepted is used to describe commands accepted by the service.
-// Note that Interrogate is always accepted.
-type Accepted uint32
-
-const (
-       AcceptStop             = Accepted(windows.SERVICE_ACCEPT_STOP)
-       AcceptShutdown         = Accepted(windows.SERVICE_ACCEPT_SHUTDOWN)
-       AcceptPauseAndContinue = Accepted(windows.SERVICE_ACCEPT_PAUSE_CONTINUE)
-)
-
-// Status combines State and Accepted commands to fully describe running service.
-type Status struct {
-       State      State
-       Accepts    Accepted
-       CheckPoint uint32 // used to report progress during a lengthy operation
-       WaitHint   uint32 // estimated time required for a pending operation, in milliseconds
-}
-
-// ChangeRequest is sent to the service Handler to request service status change.
-type ChangeRequest struct {
-       Cmd           Cmd
-       CurrentStatus Status
-}
-
-// Handler is the interface that must be implemented to build Windows service.
-type Handler interface {
-
-       // Execute will be called by the package code at the start of
-       // the service, and the service will exit once Execute completes.
-       // Inside Execute you must read service change requests from r and
-       // act accordingly. You must keep service control manager up to date
-       // about state of your service by writing into s as required.
-       // args contains service name followed by argument strings passed
-       // to the service.
-       // You can provide service exit code in exitCode return parameter,
-       // with 0 being "no error". You can also indicate if exit code,
-       // if any, is service specific or not by using svcSpecificEC
-       // parameter.
-       Execute(args []string, r <-chan ChangeRequest, s chan<- Status) (svcSpecificEC bool, exitCode uint32)
-}
-
-var (
-       // These are used by asm code.
-       goWaitsH                     uintptr
-       cWaitsH                      uintptr
-       ssHandle                     uintptr
-       sName                        *uint16
-       sArgc                        uintptr
-       sArgv                        **uint16
-       ctlHandlerProc               uintptr
-       cSetEvent                    uintptr
-       cWaitForSingleObject         uintptr
-       cRegisterServiceCtrlHandlerW uintptr
-)
-
-func init() {
-       k := syscall.MustLoadDLL("kernel32.dll")
-       cSetEvent = k.MustFindProc("SetEvent").Addr()
-       cWaitForSingleObject = k.MustFindProc("WaitForSingleObject").Addr()
-       a := syscall.MustLoadDLL("advapi32.dll")
-       cRegisterServiceCtrlHandlerW = a.MustFindProc("RegisterServiceCtrlHandlerW").Addr()
-}
-
-type ctlEvent struct {
-       cmd   Cmd
-       errno uint32
-}
-
-// service provides access to windows service api.
-type service struct {
-       name    string
-       h       windows.Handle
-       cWaits  *event
-       goWaits *event
-       c       chan ctlEvent
-       handler Handler
-}
-
-func newService(name string, handler Handler) (*service, error) {
-       var s service
-       var err error
-       s.name = name
-       s.c = make(chan ctlEvent)
-       s.handler = handler
-       s.cWaits, err = newEvent()
-       if err != nil {
-               return nil, err
-       }
-       s.goWaits, err = newEvent()
-       if err != nil {
-               s.cWaits.Close()
-               return nil, err
-       }
-       return &s, nil
-}
-
-func (s *service) close() error {
-       s.cWaits.Close()
-       s.goWaits.Close()
-       return nil
-}
-
-type exitCode struct {
-       isSvcSpecific bool
-       errno         uint32
-}
-
-func (s *service) updateStatus(status *Status, ec *exitCode) error {
-       if s.h == 0 {
-               return errors.New("updateStatus with no service status handle")
-       }
-       var t windows.SERVICE_STATUS
-       t.ServiceType = windows.SERVICE_WIN32_OWN_PROCESS
-       t.CurrentState = uint32(status.State)
-       if status.Accepts&AcceptStop != 0 {
-               t.ControlsAccepted |= windows.SERVICE_ACCEPT_STOP
-       }
-       if status.Accepts&AcceptShutdown != 0 {
-               t.ControlsAccepted |= windows.SERVICE_ACCEPT_SHUTDOWN
-       }
-       if status.Accepts&AcceptPauseAndContinue != 0 {
-               t.ControlsAccepted |= windows.SERVICE_ACCEPT_PAUSE_CONTINUE
-       }
-       if ec.errno == 0 {
-               t.Win32ExitCode = windows.NO_ERROR
-               t.ServiceSpecificExitCode = windows.NO_ERROR
-       } else if ec.isSvcSpecific {
-               t.Win32ExitCode = uint32(windows.ERROR_SERVICE_SPECIFIC_ERROR)
-               t.ServiceSpecificExitCode = ec.errno
-       } else {
-               t.Win32ExitCode = ec.errno
-               t.ServiceSpecificExitCode = windows.NO_ERROR
-       }
-       t.CheckPoint = status.CheckPoint
-       t.WaitHint = status.WaitHint
-       return windows.SetServiceStatus(s.h, &t)
-}
-
-const (
-       sysErrSetServiceStatusFailed = uint32(syscall.APPLICATION_ERROR) + iota
-       sysErrNewThreadInCallback
-)
-
-func (s *service) run() {
-       s.goWaits.Wait()
-       s.h = windows.Handle(ssHandle)
-       argv := (*[100]*int16)(unsafe.Pointer(sArgv))[:sArgc]
-       args := make([]string, len(argv))
-       for i, a := range argv {
-               args[i] = syscall.UTF16ToString((*[1 << 20]uint16)(unsafe.Pointer(a))[:])
-       }
-
-       cmdsToHandler := make(chan ChangeRequest)
-       changesFromHandler := make(chan Status)
-       exitFromHandler := make(chan exitCode)
-
-       go func() {
-               ss, errno := s.handler.Execute(args, cmdsToHandler, changesFromHandler)
-               exitFromHandler <- exitCode{ss, errno}
-       }()
-
-       status := Status{State: Stopped}
-       ec := exitCode{isSvcSpecific: true, errno: 0}
-       var outch chan ChangeRequest
-       inch := s.c
-       var cmd Cmd
-loop:
-       for {
-               select {
-               case r := <-inch:
-                       if r.errno != 0 {
-                               ec.errno = r.errno
-                               break loop
-                       }
-                       inch = nil
-                       outch = cmdsToHandler
-                       cmd = r.cmd
-               case outch <- ChangeRequest{cmd, status}:
-                       inch = s.c
-                       outch = nil
-               case c := <-changesFromHandler:
-                       err := s.updateStatus(&c, &ec)
-                       if err != nil {
-                               // best suitable error number
-                               ec.errno = sysErrSetServiceStatusFailed
-                               if err2, ok := err.(syscall.Errno); ok {
-                                       ec.errno = uint32(err2)
-                               }
-                               break loop
-                       }
-                       status = c
-               case ec = <-exitFromHandler:
-                       break loop
-               }
-       }
-
-       s.updateStatus(&Status{State: Stopped}, &ec)
-       s.cWaits.Set()
-}
-
-func newCallback(fn interface{}) (cb uintptr, err error) {
-       defer func() {
-               r := recover()
-               if r == nil {
-                       return
-               }
-               cb = 0
-               switch v := r.(type) {
-               case string:
-                       err = errors.New(v)
-               case error:
-                       err = v
-               default:
-                       err = errors.New("unexpected panic in syscall.NewCallback")
-               }
-       }()
-       return syscall.NewCallback(fn), nil
-}
-
-// BUG(brainman): There is no mechanism to run multiple services
-// inside one single executable. Perhaps, it can be overcome by
-// using RegisterServiceCtrlHandlerEx Windows api.
-
-// Run executes service name by calling appropriate handler function.
-func Run(name string, handler Handler) error {
-       runtime.LockOSThread()
-
-       tid := windows.GetCurrentThreadId()
-
-       s, err := newService(name, handler)
-       if err != nil {
-               return err
-       }
-
-       ctlHandler := func(ctl uint32) uintptr {
-               e := ctlEvent{cmd: Cmd(ctl)}
-               // We assume that this callback function is running on
-               // the same thread as Run. Nowhere in MS documentation
-               // I could find statement to guarantee that. So putting
-               // check here to verify, otherwise things will go bad
-               // quickly, if ignored.
-               i := windows.GetCurrentThreadId()
-               if i != tid {
-                       e.errno = sysErrNewThreadInCallback
-               }
-               s.c <- e
-               return 0
-       }
-
-       var svcmain uintptr
-       getServiceMain(&svcmain)
-       t := []windows.SERVICE_TABLE_ENTRY{
-               {syscall.StringToUTF16Ptr(s.name), svcmain},
-               {nil, 0},
-       }
-
-       goWaitsH = uintptr(s.goWaits.h)
-       cWaitsH = uintptr(s.cWaits.h)
-       sName = t[0].ServiceName
-       ctlHandlerProc, err = newCallback(ctlHandler)
-       if err != nil {
-               return err
-       }
-
-       go s.run()
-
-       err = windows.StartServiceCtrlDispatcher(&t[0])
-       if err != nil {
-               return err
-       }
-       return nil
-}
diff --git a/vendor/golang.org/x/sys/windows/svc/svc_test.go b/vendor/golang.org/x/sys/windows/svc/svc_test.go
deleted file mode 100644 (file)
index 764da54..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-// Copyright 2012 The Go Authors.  All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-package svc_test
-
-import (
-       "io/ioutil"
-       "os"
-       "os/exec"
-       "path/filepath"
-       "testing"
-       "time"
-
-       "golang.org/x/sys/windows/svc"
-       "golang.org/x/sys/windows/svc/mgr"
-)
-
-func getState(t *testing.T, s *mgr.Service) svc.State {
-       status, err := s.Query()
-       if err != nil {
-               t.Fatalf("Query(%s) failed: %s", s.Name, err)
-       }
-       return status.State
-}
-
-func testState(t *testing.T, s *mgr.Service, want svc.State) {
-       have := getState(t, s)
-       if have != want {
-               t.Fatalf("%s state is=%d want=%d", s.Name, have, want)
-       }
-}
-
-func waitState(t *testing.T, s *mgr.Service, want svc.State) {
-       for i := 0; ; i++ {
-               have := getState(t, s)
-               if have == want {
-                       return
-               }
-               if i > 10 {
-                       t.Fatalf("%s state is=%d, waiting timeout", s.Name, have)
-               }
-               time.Sleep(300 * time.Millisecond)
-       }
-}
-
-func TestExample(t *testing.T) {
-       if testing.Short() {
-               t.Skip("skipping test in short mode - it modifies system services")
-       }
-
-       const name = "myservice"
-
-       m, err := mgr.Connect()
-       if err != nil {
-               t.Fatalf("SCM connection failed: %s", err)
-       }
-       defer m.Disconnect()
-
-       dir, err := ioutil.TempDir("", "svc")
-       if err != nil {
-               t.Fatalf("failed to create temp directory: %v", err)
-       }
-       defer os.RemoveAll(dir)
-
-       exepath := filepath.Join(dir, "a.exe")
-       o, err := exec.Command("go", "build", "-o", exepath, "golang.org/x/sys/windows/svc/example").CombinedOutput()
-       if err != nil {
-               t.Fatalf("failed to build service program: %v\n%v", err, string(o))
-       }
-
-       s, err := m.OpenService(name)
-       if err == nil {
-               err = s.Delete()
-               if err != nil {
-                       s.Close()
-                       t.Fatalf("Delete failed: %s", err)
-               }
-               s.Close()
-       }
-       s, err = m.CreateService(name, exepath, mgr.Config{DisplayName: "my service"}, "is", "auto-started")
-       if err != nil {
-               t.Fatalf("CreateService(%s) failed: %v", name, err)
-       }
-       defer s.Close()
-
-       testState(t, s, svc.Stopped)
-       err = s.Start("is", "manual-started")
-       if err != nil {
-               t.Fatalf("Start(%s) failed: %s", s.Name, err)
-       }
-       waitState(t, s, svc.Running)
-       time.Sleep(1 * time.Second)
-
-       // testing deadlock from issues 4.
-       _, err = s.Control(svc.Interrogate)
-       if err != nil {
-               t.Fatalf("Control(%s) failed: %s", s.Name, err)
-       }
-       _, err = s.Control(svc.Interrogate)
-       if err != nil {
-               t.Fatalf("Control(%s) failed: %s", s.Name, err)
-       }
-       time.Sleep(1 * time.Second)
-
-       _, err = s.Control(svc.Stop)
-       if err != nil {
-               t.Fatalf("Control(%s) failed: %s", s.Name, err)
-       }
-       waitState(t, s, svc.Stopped)
-
-       err = s.Delete()
-       if err != nil {
-               t.Fatalf("Delete failed: %s", err)
-       }
-}
diff --git a/vendor/golang.org/x/sys/windows/svc/sys_386.s b/vendor/golang.org/x/sys/windows/svc/sys_386.s
deleted file mode 100644 (file)
index 5e11bfa..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-// func servicemain(argc uint32, argv **uint16)
-TEXT ·servicemain(SB),7,$0
-       MOVL    argc+0(FP), AX
-       MOVL    AX, ·sArgc(SB)
-       MOVL    argv+4(FP), AX
-       MOVL    AX, ·sArgv(SB)
-
-       PUSHL   BP
-       PUSHL   BX
-       PUSHL   SI
-       PUSHL   DI
-
-       SUBL    $12, SP
-
-       MOVL    ·sName(SB), AX
-       MOVL    AX, (SP)
-       MOVL    $·servicectlhandler(SB), AX
-       MOVL    AX, 4(SP)
-       MOVL    ·cRegisterServiceCtrlHandlerW(SB), AX
-       MOVL    SP, BP
-       CALL    AX
-       MOVL    BP, SP
-       CMPL    AX, $0
-       JE      exit
-       MOVL    AX, ·ssHandle(SB)
-
-       MOVL    ·goWaitsH(SB), AX
-       MOVL    AX, (SP)
-       MOVL    ·cSetEvent(SB), AX
-       MOVL    SP, BP
-       CALL    AX
-       MOVL    BP, SP
-
-       MOVL    ·cWaitsH(SB), AX
-       MOVL    AX, (SP)
-       MOVL    $-1, AX
-       MOVL    AX, 4(SP)
-       MOVL    ·cWaitForSingleObject(SB), AX
-       MOVL    SP, BP
-       CALL    AX
-       MOVL    BP, SP
-
-exit:
-       ADDL    $12, SP
-
-       POPL    DI
-       POPL    SI
-       POPL    BX
-       POPL    BP
-
-       MOVL    0(SP), CX
-       ADDL    $12, SP
-       JMP     CX
-
-// I do not know why, but this seems to be the only way to call
-// ctlHandlerProc on Windows 7.
-
-// func servicectlhandler(ctl uint32) uintptr
-TEXT ·servicectlhandler(SB),7,$0
-       MOVL    ·ctlHandlerProc(SB), CX
-       JMP     CX
diff --git a/vendor/golang.org/x/sys/windows/svc/sys_amd64.s b/vendor/golang.org/x/sys/windows/svc/sys_amd64.s
deleted file mode 100644 (file)
index 87dbec8..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-// func servicemain(argc uint32, argv **uint16)
-TEXT ·servicemain(SB),7,$0
-       MOVL    CX, ·sArgc(SB)
-       MOVL    DX, ·sArgv(SB)
-
-       SUBQ    $32, SP         // stack for the first 4 syscall params
-
-       MOVQ    ·sName(SB), CX
-       MOVQ    $·servicectlhandler(SB), DX
-       MOVQ    ·cRegisterServiceCtrlHandlerW(SB), AX
-       CALL    AX
-       CMPQ    AX, $0
-       JE      exit
-       MOVQ    AX, ·ssHandle(SB)
-
-       MOVQ    ·goWaitsH(SB), CX
-       MOVQ    ·cSetEvent(SB), AX
-       CALL    AX
-
-       MOVQ    ·cWaitsH(SB), CX
-       MOVQ    $4294967295, DX
-       MOVQ    ·cWaitForSingleObject(SB), AX
-       CALL    AX
-
-exit:
-       ADDQ    $32, SP
-       RET
-
-// I do not know why, but this seems to be the only way to call
-// ctlHandlerProc on Windows 7.
-
-// func servicectlhandler(ctl uint32) uintptr
-TEXT ·servicectlhandler(SB),7,$0
-       MOVQ    ·ctlHandlerProc(SB), AX
-       JMP     AX
diff --git a/vendor/golang.org/x/sys/windows/syscall.go b/vendor/golang.org/x/sys/windows/syscall.go
deleted file mode 100644 (file)
index 4e2fbe8..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-// Package windows contains an interface to the low-level operating system
-// primitives.  OS details vary depending on the underlying system, and
-// by default, godoc will display the OS-specific documentation for the current
-// system.  If you want godoc to display syscall documentation for another
-// system, set $GOOS and $GOARCH to the desired system.  For example, if
-// you want to view documentation for freebsd/arm on linux/amd64, set $GOOS
-// to freebsd and $GOARCH to arm.
-// The primary use of this package is inside other packages that provide a more
-// portable interface to the system, such as "os", "time" and "net".  Use
-// those packages rather than this one if you can.
-// For details of the functions and data types in this package consult
-// the manuals for the appropriate operating system.
-// These calls return err == nil to indicate success; otherwise
-// err represents an operating system error describing the failure and
-// holds a value of type syscall.Errno.
-package windows // import "golang.org/x/sys/windows"
-
-import (
-       "syscall"
-)
-
-// ByteSliceFromString returns a NUL-terminated slice of bytes
-// containing the text of s. If s contains a NUL byte at any
-// location, it returns (nil, syscall.EINVAL).
-func ByteSliceFromString(s string) ([]byte, error) {
-       for i := 0; i < len(s); i++ {
-               if s[i] == 0 {
-                       return nil, syscall.EINVAL
-               }
-       }
-       a := make([]byte, len(s)+1)
-       copy(a, s)
-       return a, nil
-}
-
-// BytePtrFromString returns a pointer to a NUL-terminated array of
-// bytes containing the text of s. If s contains a NUL byte at any
-// location, it returns (nil, syscall.EINVAL).
-func BytePtrFromString(s string) (*byte, error) {
-       a, err := ByteSliceFromString(s)
-       if err != nil {
-               return nil, err
-       }
-       return &a[0], nil
-}
-
-// Single-word zero for use when we need a valid pointer to 0 bytes.
-// See mksyscall.pl.
-var _zero uintptr
-
-func (ts *Timespec) Unix() (sec int64, nsec int64) {
-       return int64(ts.Sec), int64(ts.Nsec)
-}
-
-func (tv *Timeval) Unix() (sec int64, nsec int64) {
-       return int64(tv.Sec), int64(tv.Usec) * 1000
-}
-
-func (ts *Timespec) Nano() int64 {
-       return int64(ts.Sec)*1e9 + int64(ts.Nsec)
-}
-
-func (tv *Timeval) Nano() int64 {
-       return int64(tv.Sec)*1e9 + int64(tv.Usec)*1000
-}
diff --git a/vendor/golang.org/x/sys/windows/syscall_test.go b/vendor/golang.org/x/sys/windows/syscall_test.go
deleted file mode 100644 (file)
index 62588b9..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2013 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-package windows_test
-
-import (
-       "testing"
-
-       "golang.org/x/sys/windows"
-)
-
-func testSetGetenv(t *testing.T, key, value string) {
-       err := windows.Setenv(key, value)
-       if err != nil {
-               t.Fatalf("Setenv failed to set %q: %v", value, err)
-       }
-       newvalue, found := windows.Getenv(key)
-       if !found {
-               t.Fatalf("Getenv failed to find %v variable (want value %q)", key, value)
-       }
-       if newvalue != value {
-               t.Fatalf("Getenv(%v) = %q; want %q", key, newvalue, value)
-       }
-}
-
-func TestEnv(t *testing.T) {
-       testSetGetenv(t, "TESTENV", "AVALUE")
-       // make sure TESTENV gets set to "", not deleted
-       testSetGetenv(t, "TESTENV", "")
-}
diff --git a/vendor/golang.org/x/sys/windows/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go
deleted file mode 100644 (file)
index 99b11fe..0000000
+++ /dev/null
@@ -1,991 +0,0 @@
-// Copyright 2009 The Go Authors.  All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Windows system calls.
-
-package windows
-
-import (
-       errorspkg "errors"
-       "sync"
-       "syscall"
-       "unicode/utf16"
-       "unsafe"
-)
-
-type Handle uintptr
-
-const InvalidHandle = ^Handle(0)
-
-// StringToUTF16 is deprecated. Use UTF16FromString instead.
-// If s contains a NUL byte this function panics instead of
-// returning an error.
-func StringToUTF16(s string) []uint16 {
-       a, err := UTF16FromString(s)
-       if err != nil {
-               panic("windows: string with NUL passed to StringToUTF16")
-       }
-       return a
-}
-
-// UTF16FromString returns the UTF-16 encoding of the UTF-8 string
-// s, with a terminating NUL added. If s contains a NUL byte at any
-// location, it returns (nil, syscall.EINVAL).
-func UTF16FromString(s string) ([]uint16, error) {
-       for i := 0; i < len(s); i++ {
-               if s[i] == 0 {
-                       return nil, syscall.EINVAL
-               }
-       }
-       return utf16.Encode([]rune(s + "\x00")), nil
-}
-
-// UTF16ToString returns the UTF-8 encoding of the UTF-16 sequence s,
-// with a terminating NUL removed.
-func UTF16ToString(s []uint16) string {
-       for i, v := range s {
-               if v == 0 {
-                       s = s[0:i]
-                       break
-               }
-       }
-       return string(utf16.Decode(s))
-}
-
-// StringToUTF16Ptr is deprecated. Use UTF16PtrFromString instead.
-// If s contains a NUL byte this function panics instead of
-// returning an error.
-func StringToUTF16Ptr(s string) *uint16 { return &StringToUTF16(s)[0] }
-
-// UTF16PtrFromString returns pointer to the UTF-16 encoding of
-// the UTF-8 string s, with a terminating NUL added. If s
-// contains a NUL byte at any location, it returns (nil, syscall.EINVAL).
-func UTF16PtrFromString(s string) (*uint16, error) {
-       a, err := UTF16FromString(s)
-       if err != nil {
-               return nil, err
-       }
-       return &a[0], nil
-}
-
-func Getpagesize() int { return 4096 }
-
-// Converts a Go function to a function pointer conforming
-// to the stdcall or cdecl calling convention.  This is useful when
-// interoperating with Windows code requiring callbacks.
-// Implemented in runtime/syscall_windows.goc
-func NewCallback(fn interface{}) uintptr
-func NewCallbackCDecl(fn interface{}) uintptr
-
-// windows api calls
-
-//sys  GetLastError() (lasterr error)
-//sys  LoadLibrary(libname string) (handle Handle, err error) = LoadLibraryW
-//sys  LoadLibraryEx(libname string, zero Handle, flags uintptr) (handle Handle, err error) = LoadLibraryExW
-//sys  FreeLibrary(handle Handle) (err error)
-//sys  GetProcAddress(module Handle, procname string) (proc uintptr, err error)
-//sys  GetVersion() (ver uint32, err error)
-//sys  FormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) = FormatMessageW
-//sys  ExitProcess(exitcode uint32)
-//sys  CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile int32) (handle Handle, err error) [failretval==InvalidHandle] = CreateFileW
-//sys  ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error)
-//sys  WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error)
-//sys  SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) [failretval==0xffffffff]
-//sys  CloseHandle(handle Handle) (err error)
-//sys  GetStdHandle(stdhandle uint32) (handle Handle, err error) [failretval==InvalidHandle]
-//sys  SetStdHandle(stdhandle uint32, handle Handle) (err error)
-//sys  findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstFileW
-//sys  findNextFile1(handle Handle, data *win32finddata1) (err error) = FindNextFileW
-//sys  FindClose(handle Handle) (err error)
-//sys  GetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error)
-//sys  GetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) = GetCurrentDirectoryW
-//sys  SetCurrentDirectory(path *uint16) (err error) = SetCurrentDirectoryW
-//sys  CreateDirectory(path *uint16, sa *SecurityAttributes) (err error) = CreateDirectoryW
-//sys  RemoveDirectory(path *uint16) (err error) = RemoveDirectoryW
-//sys  DeleteFile(path *uint16) (err error) = DeleteFileW
-//sys  MoveFile(from *uint16, to *uint16) (err error) = MoveFileW
-//sys  MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) = MoveFileExW
-//sys  GetComputerName(buf *uint16, n *uint32) (err error) = GetComputerNameW
-//sys  GetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) = GetComputerNameExW
-//sys  SetEndOfFile(handle Handle) (err error)
-//sys  GetSystemTimeAsFileTime(time *Filetime)
-//sys  GetSystemTimePreciseAsFileTime(time *Filetime)
-//sys  GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) [failretval==0xffffffff]
-//sys  CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uint32, threadcnt uint32) (handle Handle, err error)
-//sys  GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uint32, overlapped **Overlapped, timeout uint32) (err error)
-//sys  PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uint32, overlapped *Overlapped) (err error)
-//sys  CancelIo(s Handle) (err error)
-//sys  CancelIoEx(s Handle, o *Overlapped) (err error)
-//sys  CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = CreateProcessW
-//sys  OpenProcess(da uint32, inheritHandle bool, pid uint32) (handle Handle, err error)
-//sys  TerminateProcess(handle Handle, exitcode uint32) (err error)
-//sys  GetExitCodeProcess(handle Handle, exitcode *uint32) (err error)
-//sys  GetStartupInfo(startupInfo *StartupInfo) (err error) = GetStartupInfoW
-//sys  GetCurrentProcess() (pseudoHandle Handle, err error)
-//sys  GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error)
-//sys  DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error)
-//sys  WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) [failretval==0xffffffff]
-//sys  GetTempPath(buflen uint32, buf *uint16) (n uint32, err error) = GetTempPathW
-//sys  CreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error)
-//sys  GetFileType(filehandle Handle) (n uint32, err error)
-//sys  CryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) = advapi32.CryptAcquireContextW
-//sys  CryptReleaseContext(provhandle Handle, flags uint32) (err error) = advapi32.CryptReleaseContext
-//sys  CryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) = advapi32.CryptGenRandom
-//sys  GetEnvironmentStrings() (envs *uint16, err error) [failretval==nil] = kernel32.GetEnvironmentStringsW
-//sys  FreeEnvironmentStrings(envs *uint16) (err error) = kernel32.FreeEnvironmentStringsW
-//sys  GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) = kernel32.GetEnvironmentVariableW
-//sys  SetEnvironmentVariable(name *uint16, value *uint16) (err error) = kernel32.SetEnvironmentVariableW
-//sys  SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error)
-//sys  GetFileAttributes(name *uint16) (attrs uint32, err error) [failretval==INVALID_FILE_ATTRIBUTES] = kernel32.GetFileAttributesW
-//sys  SetFileAttributes(name *uint16, attrs uint32) (err error) = kernel32.SetFileAttributesW
-//sys  GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) = kernel32.GetFileAttributesExW
-//sys  GetCommandLine() (cmd *uint16) = kernel32.GetCommandLineW
-//sys  CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) [failretval==nil] = shell32.CommandLineToArgvW
-//sys  LocalFree(hmem Handle) (handle Handle, err error) [failretval!=0]
-//sys  SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error)
-//sys  FlushFileBuffers(handle Handle) (err error)
-//sys  GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) = kernel32.GetFullPathNameW
-//sys  GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) = kernel32.GetLongPathNameW
-//sys  GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) = kernel32.GetShortPathNameW
-//sys  CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) = kernel32.CreateFileMappingW
-//sys  MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error)
-//sys  UnmapViewOfFile(addr uintptr) (err error)
-//sys  FlushViewOfFile(addr uintptr, length uintptr) (err error)
-//sys  VirtualLock(addr uintptr, length uintptr) (err error)
-//sys  VirtualUnlock(addr uintptr, length uintptr) (err error)
-//sys  TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) = mswsock.TransmitFile
-//sys  ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) = kernel32.ReadDirectoryChangesW
-//sys  CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) = crypt32.CertOpenSystemStoreW
-//sys   CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) [failretval==InvalidHandle] = crypt32.CertOpenStore
-//sys  CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) [failretval==nil] = crypt32.CertEnumCertificatesInStore
-//sys   CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) = crypt32.CertAddCertificateContextToStore
-//sys  CertCloseStore(store Handle, flags uint32) (err error) = crypt32.CertCloseStore
-//sys   CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) = crypt32.CertGetCertificateChain
-//sys   CertFreeCertificateChain(ctx *CertChainContext) = crypt32.CertFreeCertificateChain
-//sys   CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) [failretval==nil] = crypt32.CertCreateCertificateContext
-//sys   CertFreeCertificateContext(ctx *CertContext) (err error) = crypt32.CertFreeCertificateContext
-//sys   CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) = crypt32.CertVerifyCertificateChainPolicy
-//sys  RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) = advapi32.RegOpenKeyExW
-//sys  RegCloseKey(key Handle) (regerrno error) = advapi32.RegCloseKey
-//sys  RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegQueryInfoKeyW
-//sys  RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegEnumKeyExW
-//sys  RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) = advapi32.RegQueryValueExW
-//sys  getCurrentProcessId() (pid uint32) = kernel32.GetCurrentProcessId
-//sys  GetConsoleMode(console Handle, mode *uint32) (err error) = kernel32.GetConsoleMode
-//sys  WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) = kernel32.WriteConsoleW
-//sys  ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) = kernel32.ReadConsoleW
-//sys  CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.CreateToolhelp32Snapshot
-//sys  Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32FirstW
-//sys  Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32NextW
-//sys  DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error)
-// This function returns 1 byte BOOLEAN rather than the 4 byte BOOL.
-//sys  CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) [failretval&0xff==0] = CreateSymbolicLinkW
-//sys  CreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) [failretval&0xff==0] = CreateHardLinkW
-//sys  GetCurrentThreadId() (id uint32)
-//sys  CreateEvent(eventAttrs *syscall.SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) = kernel32.CreateEventW
-//sys  SetEvent(event Handle) (err error) = kernel32.SetEvent
-
-// syscall interface implementation for other packages
-
-func Exit(code int) { ExitProcess(uint32(code)) }
-
-func makeInheritSa() *SecurityAttributes {
-       var sa SecurityAttributes
-       sa.Length = uint32(unsafe.Sizeof(sa))
-       sa.InheritHandle = 1
-       return &sa
-}
-
-func Open(path string, mode int, perm uint32) (fd Handle, err error) {
-       if len(path) == 0 {
-               return InvalidHandle, ERROR_FILE_NOT_FOUND
-       }
-       pathp, err := UTF16PtrFromString(path)
-       if err != nil {
-               return InvalidHandle, err
-       }
-       var access uint32
-       switch mode & (O_RDONLY | O_WRONLY | O_RDWR) {
-       case O_RDONLY:
-               access = GENERIC_READ
-       case O_WRONLY:
-               access = GENERIC_WRITE
-       case O_RDWR:
-               access = GENERIC_READ | GENERIC_WRITE
-       }
-       if mode&O_CREAT != 0 {
-               access |= GENERIC_WRITE
-       }
-       if mode&O_APPEND != 0 {
-               access &^= GENERIC_WRITE
-               access |= FILE_APPEND_DATA
-       }
-       sharemode := uint32(FILE_SHARE_READ | FILE_SHARE_WRITE)
-       var sa *SecurityAttributes
-       if mode&O_CLOEXEC == 0 {
-               sa = makeInheritSa()
-       }
-       var createmode uint32
-       switch {
-       case mode&(O_CREAT|O_EXCL) == (O_CREAT | O_EXCL):
-               createmode = CREATE_NEW
-       case mode&(O_CREAT|O_TRUNC) == (O_CREAT | O_TRUNC):
-               createmode = CREATE_ALWAYS
-       case mode&O_CREAT == O_CREAT:
-               createmode = OPEN_ALWAYS
-       case mode&O_TRUNC == O_TRUNC:
-               createmode = TRUNCATE_EXISTING
-       default:
-               createmode = OPEN_EXISTING
-       }
-       h, e := CreateFile(pathp, access, sharemode, sa, createmode, FILE_ATTRIBUTE_NORMAL, 0)
-       return h, e
-}
-
-func Read(fd Handle, p []byte) (n int, err error) {
-       var done uint32
-       e := ReadFile(fd, p, &done, nil)
-       if e != nil {
-               if e == ERROR_BROKEN_PIPE {
-                       // NOTE(brainman): work around ERROR_BROKEN_PIPE is returned on reading EOF from stdin
-                       return 0, nil
-               }
-               return 0, e
-       }
-       if raceenabled {
-               if done > 0 {
-                       raceWriteRange(unsafe.Pointer(&p[0]), int(done))
-               }
-               raceAcquire(unsafe.Pointer(&ioSync))
-       }
-       return int(done), nil
-}
-
-func Write(fd Handle, p []byte) (n int, err error) {
-       if raceenabled {
-               raceReleaseMerge(unsafe.Pointer(&ioSync))
-       }
-       var done uint32
-       e := WriteFile(fd, p, &done, nil)
-       if e != nil {
-               return 0, e
-       }
-       if raceenabled && done > 0 {
-               raceReadRange(unsafe.Pointer(&p[0]), int(done))
-       }
-       return int(done), nil
-}
-
-var ioSync int64
-
-func Seek(fd Handle, offset int64, whence int) (newoffset int64, err error) {
-       var w uint32
-       switch whence {
-       case 0:
-               w = FILE_BEGIN
-       case 1:
-               w = FILE_CURRENT
-       case 2:
-               w = FILE_END
-       }
-       hi := int32(offset >> 32)
-       lo := int32(offset)
-       // use GetFileType to check pipe, pipe can't do seek
-       ft, _ := GetFileType(fd)
-       if ft == FILE_TYPE_PIPE {
-               return 0, syscall.EPIPE
-       }
-       rlo, e := SetFilePointer(fd, lo, &hi, w)
-       if e != nil {
-               return 0, e
-       }
-       return int64(hi)<<32 + int64(rlo), nil
-}
-
-func Close(fd Handle) (err error) {
-       return CloseHandle(fd)
-}
-
-var (
-       Stdin  = getStdHandle(STD_INPUT_HANDLE)
-       Stdout = getStdHandle(STD_OUTPUT_HANDLE)
-       Stderr = getStdHandle(STD_ERROR_HANDLE)
-)
-
-func getStdHandle(stdhandle uint32) (fd Handle) {
-       r, _ := GetStdHandle(stdhandle)
-       CloseOnExec(r)
-       return r
-}
-
-const ImplementsGetwd = true
-
-func Getwd() (wd string, err error) {
-       b := make([]uint16, 300)
-       n, e := GetCurrentDirectory(uint32(len(b)), &b[0])
-       if e != nil {
-               return "", e
-       }
-       return string(utf16.Decode(b[0:n])), nil
-}
-
-func Chdir(path string) (err error) {
-       pathp, err := UTF16PtrFromString(path)
-       if err != nil {
-               return err
-       }
-       return SetCurrentDirectory(pathp)
-}
-
-func Mkdir(path string, mode uint32) (err error) {
-       pathp, err := UTF16PtrFromString(path)
-       if err != nil {
-               return err
-       }
-       return CreateDirectory(pathp, nil)
-}
-
-func Rmdir(path string) (err error) {
-       pathp, err := UTF16PtrFromString(path)
-       if err != nil {
-               return err
-       }
-       return RemoveDirectory(pathp)
-}
-
-func Unlink(path string) (err error) {
-       pathp, err := UTF16PtrFromString(path)
-       if err != nil {
-               return err
-       }
-       return DeleteFile(pathp)
-}
-
-func Rename(oldpath, newpath string) (err error) {
-       from, err := UTF16PtrFromString(oldpath)
-       if err != nil {
-               return err
-       }
-       to, err := UTF16PtrFromString(newpath)
-       if err != nil {
-               return err
-       }
-       return MoveFileEx(from, to, MOVEFILE_REPLACE_EXISTING)
-}
-
-func ComputerName() (name string, err error) {
-       var n uint32 = MAX_COMPUTERNAME_LENGTH + 1
-       b := make([]uint16, n)
-       e := GetComputerName(&b[0], &n)
-       if e != nil {
-               return "", e
-       }
-       return string(utf16.Decode(b[0:n])), nil
-}
-
-func Ftruncate(fd Handle, length int64) (err error) {
-       curoffset, e := Seek(fd, 0, 1)
-       if e != nil {
-               return e
-       }
-       defer Seek(fd, curoffset, 0)
-       _, e = Seek(fd, length, 0)
-       if e != nil {
-               return e
-       }
-       e = SetEndOfFile(fd)
-       if e != nil {
-               return e
-       }
-       return nil
-}
-
-func Gettimeofday(tv *Timeval) (err error) {
-       var ft Filetime
-       GetSystemTimeAsFileTime(&ft)
-       *tv = NsecToTimeval(ft.Nanoseconds())
-       return nil
-}
-
-func Pipe(p []Handle) (err error) {
-       if len(p) != 2 {
-               return syscall.EINVAL
-       }
-       var r, w Handle
-       e := CreatePipe(&r, &w, makeInheritSa(), 0)
-       if e != nil {
-               return e
-       }
-       p[0] = r
-       p[1] = w
-       return nil
-}
-
-func Utimes(path string, tv []Timeval) (err error) {
-       if len(tv) != 2 {
-               return syscall.EINVAL
-       }
-       pathp, e := UTF16PtrFromString(path)
-       if e != nil {
-               return e
-       }
-       h, e := CreateFile(pathp,
-               FILE_WRITE_ATTRIBUTES, FILE_SHARE_WRITE, nil,
-               OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0)
-       if e != nil {
-               return e
-       }
-       defer Close(h)
-       a := NsecToFiletime(tv[0].Nanoseconds())
-       w := NsecToFiletime(tv[1].Nanoseconds())
-       return SetFileTime(h, nil, &a, &w)
-}
-
-func UtimesNano(path string, ts []Timespec) (err error) {
-       if len(ts) != 2 {
-               return syscall.EINVAL
-       }
-       pathp, e := UTF16PtrFromString(path)
-       if e != nil {
-               return e
-       }
-       h, e := CreateFile(pathp,
-               FILE_WRITE_ATTRIBUTES, FILE_SHARE_WRITE, nil,
-               OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0)
-       if e != nil {
-               return e
-       }
-       defer Close(h)
-       a := NsecToFiletime(TimespecToNsec(ts[0]))
-       w := NsecToFiletime(TimespecToNsec(ts[1]))
-       return SetFileTime(h, nil, &a, &w)
-}
-
-func Fsync(fd Handle) (err error) {
-       return FlushFileBuffers(fd)
-}
-
-func Chmod(path string, mode uint32) (err error) {
-       if mode == 0 {
-               return syscall.EINVAL
-       }
-       p, e := UTF16PtrFromString(path)
-       if e != nil {
-               return e
-       }
-       attrs, e := GetFileAttributes(p)
-       if e != nil {
-               return e
-       }
-       if mode&S_IWRITE != 0 {
-               attrs &^= FILE_ATTRIBUTE_READONLY
-       } else {
-               attrs |= FILE_ATTRIBUTE_READONLY
-       }
-       return SetFileAttributes(p, attrs)
-}
-
-func LoadCancelIoEx() error {
-       return procCancelIoEx.Find()
-}
-
-func LoadSetFileCompletionNotificationModes() error {
-       return procSetFileCompletionNotificationModes.Find()
-}
-
-// net api calls
-
-const socket_error = uintptr(^uint32(0))
-
-//sys  WSAStartup(verreq uint32, data *WSAData) (sockerr error) = ws2_32.WSAStartup
-//sys  WSACleanup() (err error) [failretval==socket_error] = ws2_32.WSACleanup
-//sys  WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) [failretval==socket_error] = ws2_32.WSAIoctl
-//sys  socket(af int32, typ int32, protocol int32) (handle Handle, err error) [failretval==InvalidHandle] = ws2_32.socket
-//sys  Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) [failretval==socket_error] = ws2_32.setsockopt
-//sys  Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) [failretval==socket_error] = ws2_32.getsockopt
-//sys  bind(s Handle, name unsafe.Pointer, namelen int32) (err error) [failretval==socket_error] = ws2_32.bind
-//sys  connect(s Handle, name unsafe.Pointer, namelen int32) (err error) [failretval==socket_error] = ws2_32.connect
-//sys  getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) [failretval==socket_error] = ws2_32.getsockname
-//sys  getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) [failretval==socket_error] = ws2_32.getpeername
-//sys  listen(s Handle, backlog int32) (err error) [failretval==socket_error] = ws2_32.listen
-//sys  shutdown(s Handle, how int32) (err error) [failretval==socket_error] = ws2_32.shutdown
-//sys  Closesocket(s Handle) (err error) [failretval==socket_error] = ws2_32.closesocket
-//sys  AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) = mswsock.AcceptEx
-//sys  GetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) = mswsock.GetAcceptExSockaddrs
-//sys  WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSARecv
-//sys  WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSASend
-//sys  WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32,  from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSARecvFrom
-//sys  WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32,  overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSASendTo
-//sys  GetHostByName(name string) (h *Hostent, err error) [failretval==nil] = ws2_32.gethostbyname
-//sys  GetServByName(name string, proto string) (s *Servent, err error) [failretval==nil] = ws2_32.getservbyname
-//sys  Ntohs(netshort uint16) (u uint16) = ws2_32.ntohs
-//sys  GetProtoByName(name string) (p *Protoent, err error) [failretval==nil] = ws2_32.getprotobyname
-//sys  DnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) = dnsapi.DnsQuery_W
-//sys  DnsRecordListFree(rl *DNSRecord, freetype uint32) = dnsapi.DnsRecordListFree
-//sys  DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) = dnsapi.DnsNameCompare_W
-//sys  GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) = ws2_32.GetAddrInfoW
-//sys  FreeAddrInfoW(addrinfo *AddrinfoW) = ws2_32.FreeAddrInfoW
-//sys  GetIfEntry(pIfRow *MibIfRow) (errcode error) = iphlpapi.GetIfEntry
-//sys  GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) = iphlpapi.GetAdaptersInfo
-//sys  SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) = kernel32.SetFileCompletionNotificationModes
-//sys  WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) [failretval==-1] = ws2_32.WSAEnumProtocolsW
-//sys  GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) = iphlpapi.GetAdaptersAddresses
-//sys  GetACP() (acp uint32) = kernel32.GetACP
-//sys  MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) = kernel32.MultiByteToWideChar
-
-// For testing: clients can set this flag to force
-// creation of IPv6 sockets to return EAFNOSUPPORT.
-var SocketDisableIPv6 bool
-
-type RawSockaddrInet4 struct {
-       Family uint16
-       Port   uint16
-       Addr   [4]byte /* in_addr */
-       Zero   [8]uint8
-}
-
-type RawSockaddrInet6 struct {
-       Family   uint16
-       Port     uint16
-       Flowinfo uint32
-       Addr     [16]byte /* in6_addr */
-       Scope_id uint32
-}
-
-type RawSockaddr struct {
-       Family uint16
-       Data   [14]int8
-}
-
-type RawSockaddrAny struct {
-       Addr RawSockaddr
-       Pad  [96]int8
-}
-
-type Sockaddr interface {
-       sockaddr() (ptr unsafe.Pointer, len int32, err error) // lowercase; only we can define Sockaddrs
-}
-
-type SockaddrInet4 struct {
-       Port int
-       Addr [4]byte
-       raw  RawSockaddrInet4
-}
-
-func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, int32, error) {
-       if sa.Port < 0 || sa.Port > 0xFFFF {
-               return nil, 0, syscall.EINVAL
-       }
-       sa.raw.Family = AF_INET
-       p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))
-       p[0] = byte(sa.Port >> 8)
-       p[1] = byte(sa.Port)
-       for i := 0; i < len(sa.Addr); i++ {
-               sa.raw.Addr[i] = sa.Addr[i]
-       }
-       return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil
-}
-
-type SockaddrInet6 struct {
-       Port   int
-       ZoneId uint32
-       Addr   [16]byte
-       raw    RawSockaddrInet6
-}
-
-func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, int32, error) {
-       if sa.Port < 0 || sa.Port > 0xFFFF {
-               return nil, 0, syscall.EINVAL
-       }
-       sa.raw.Family = AF_INET6
-       p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))
-       p[0] = byte(sa.Port >> 8)
-       p[1] = byte(sa.Port)
-       sa.raw.Scope_id = sa.ZoneId
-       for i := 0; i < len(sa.Addr); i++ {
-               sa.raw.Addr[i] = sa.Addr[i]
-       }
-       return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil
-}
-
-type SockaddrUnix struct {
-       Name string
-}
-
-func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, int32, error) {
-       // TODO(brainman): implement SockaddrUnix.sockaddr()
-       return nil, 0, syscall.EWINDOWS
-}
-
-func (rsa *RawSockaddrAny) Sockaddr() (Sockaddr, error) {
-       switch rsa.Addr.Family {
-       case AF_UNIX:
-               return nil, syscall.EWINDOWS
-
-       case AF_INET:
-               pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))
-               sa := new(SockaddrInet4)
-               p := (*[2]byte)(unsafe.Pointer(&pp.Port))
-               sa.Port = int(p[0])<<8 + int(p[1])
-               for i := 0; i < len(sa.Addr); i++ {
-                       sa.Addr[i] = pp.Addr[i]
-               }
-               return sa, nil
-
-       case AF_INET6:
-               pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))
-               sa := new(SockaddrInet6)
-               p := (*[2]byte)(unsafe.Pointer(&pp.Port))
-               sa.Port = int(p[0])<<8 + int(p[1])
-               sa.ZoneId = pp.Scope_id
-               for i := 0; i < len(sa.Addr); i++ {
-                       sa.Addr[i] = pp.Addr[i]
-               }
-               return sa, nil
-       }
-       return nil, syscall.EAFNOSUPPORT
-}
-
-func Socket(domain, typ, proto int) (fd Handle, err error) {
-       if domain == AF_INET6 && SocketDisableIPv6 {
-               return InvalidHandle, syscall.EAFNOSUPPORT
-       }
-       return socket(int32(domain), int32(typ), int32(proto))
-}
-
-func SetsockoptInt(fd Handle, level, opt int, value int) (err error) {
-       v := int32(value)
-       return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&v)), int32(unsafe.Sizeof(v)))
-}
-
-func Bind(fd Handle, sa Sockaddr) (err error) {
-       ptr, n, err := sa.sockaddr()
-       if err != nil {
-               return err
-       }
-       return bind(fd, ptr, n)
-}
-
-func Connect(fd Handle, sa Sockaddr) (err error) {
-       ptr, n, err := sa.sockaddr()
-       if err != nil {
-               return err
-       }
-       return connect(fd, ptr, n)
-}
-
-func Getsockname(fd Handle) (sa Sockaddr, err error) {
-       var rsa RawSockaddrAny
-       l := int32(unsafe.Sizeof(rsa))
-       if err = getsockname(fd, &rsa, &l); err != nil {
-               return
-       }
-       return rsa.Sockaddr()
-}
-
-func Getpeername(fd Handle) (sa Sockaddr, err error) {
-       var rsa RawSockaddrAny
-       l := int32(unsafe.Sizeof(rsa))
-       if err = getpeername(fd, &rsa, &l); err != nil {
-               return
-       }
-       return rsa.Sockaddr()
-}
-
-func Listen(s Handle, n int) (err error) {
-       return listen(s, int32(n))
-}
-
-func Shutdown(fd Handle, how int) (err error) {
-       return shutdown(fd, int32(how))
-}
-
-func WSASendto(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to Sockaddr, overlapped *Overlapped, croutine *byte) (err error) {
-       rsa, l, err := to.sockaddr()
-       if err != nil {
-               return err
-       }
-       return WSASendTo(s, bufs, bufcnt, sent, flags, (*RawSockaddrAny)(unsafe.Pointer(rsa)), l, overlapped, croutine)
-}
-
-func LoadGetAddrInfo() error {
-       return procGetAddrInfoW.Find()
-}
-
-var connectExFunc struct {
-       once sync.Once
-       addr uintptr
-       err  error
-}
-
-func LoadConnectEx() error {
-       connectExFunc.once.Do(func() {
-               var s Handle
-               s, connectExFunc.err = Socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)
-               if connectExFunc.err != nil {
-                       return
-               }
-               defer CloseHandle(s)
-               var n uint32
-               connectExFunc.err = WSAIoctl(s,
-                       SIO_GET_EXTENSION_FUNCTION_POINTER,
-                       (*byte)(unsafe.Pointer(&WSAID_CONNECTEX)),
-                       uint32(unsafe.Sizeof(WSAID_CONNECTEX)),
-                       (*byte)(unsafe.Pointer(&connectExFunc.addr)),
-                       uint32(unsafe.Sizeof(connectExFunc.addr)),
-                       &n, nil, 0)
-       })
-       return connectExFunc.err
-}
-
-func connectEx(s Handle, name unsafe.Pointer, namelen int32, sendBuf *byte, sendDataLen uint32, bytesSent *uint32, overlapped *Overlapped) (err error) {
-       r1, _, e1 := syscall.Syscall9(connectExFunc.addr, 7, uintptr(s), uintptr(name), uintptr(namelen), uintptr(unsafe.Pointer(sendBuf)), uintptr(sendDataLen), uintptr(unsafe.Pointer(bytesSent)), uintptr(unsafe.Pointer(overlapped)), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = error(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func ConnectEx(fd Handle, sa Sockaddr, sendBuf *byte, sendDataLen uint32, bytesSent *uint32, overlapped *Overlapped) error {
-       err := LoadConnectEx()
-       if err != nil {
-               return errorspkg.New("failed to find ConnectEx: " + err.Error())
-       }
-       ptr, n, err := sa.sockaddr()
-       if err != nil {
-               return err
-       }
-       return connectEx(fd, ptr, n, sendBuf, sendDataLen, bytesSent, overlapped)
-}
-
-// Invented structures to support what package os expects.
-type Rusage struct {
-       CreationTime Filetime
-       ExitTime     Filetime
-       KernelTime   Filetime
-       UserTime     Filetime
-}
-
-type WaitStatus struct {
-       ExitCode uint32
-}
-
-func (w WaitStatus) Exited() bool { return true }
-
-func (w WaitStatus) ExitStatus() int { return int(w.ExitCode) }
-
-func (w WaitStatus) Signal() Signal { return -1 }
-
-func (w WaitStatus) CoreDump() bool { return false }
-
-func (w WaitStatus) Stopped() bool { return false }
-
-func (w WaitStatus) Continued() bool { return false }
-
-func (w WaitStatus) StopSignal() Signal { return -1 }
-
-func (w WaitStatus) Signaled() bool { return false }
-
-func (w WaitStatus) TrapCause() int { return -1 }
-
-// Timespec is an invented structure on Windows, but here for
-// consistency with the corresponding package for other operating systems.
-type Timespec struct {
-       Sec  int64
-       Nsec int64
-}
-
-func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
-
-func NsecToTimespec(nsec int64) (ts Timespec) {
-       ts.Sec = nsec / 1e9
-       ts.Nsec = nsec % 1e9
-       return
-}
-
-// TODO(brainman): fix all needed for net
-
-func Accept(fd Handle) (nfd Handle, sa Sockaddr, err error) { return 0, nil, syscall.EWINDOWS }
-func Recvfrom(fd Handle, p []byte, flags int) (n int, from Sockaddr, err error) {
-       return 0, nil, syscall.EWINDOWS
-}
-func Sendto(fd Handle, p []byte, flags int, to Sockaddr) (err error)       { return syscall.EWINDOWS }
-func SetsockoptTimeval(fd Handle, level, opt int, tv *Timeval) (err error) { return syscall.EWINDOWS }
-
-// The Linger struct is wrong but we only noticed after Go 1.
-// sysLinger is the real system call structure.
-
-// BUG(brainman): The definition of Linger is not appropriate for direct use
-// with Setsockopt and Getsockopt.
-// Use SetsockoptLinger instead.
-
-type Linger struct {
-       Onoff  int32
-       Linger int32
-}
-
-type sysLinger struct {
-       Onoff  uint16
-       Linger uint16
-}
-
-type IPMreq struct {
-       Multiaddr [4]byte /* in_addr */
-       Interface [4]byte /* in_addr */
-}
-
-type IPv6Mreq struct {
-       Multiaddr [16]byte /* in6_addr */
-       Interface uint32
-}
-
-func GetsockoptInt(fd Handle, level, opt int) (int, error) { return -1, syscall.EWINDOWS }
-
-func SetsockoptLinger(fd Handle, level, opt int, l *Linger) (err error) {
-       sys := sysLinger{Onoff: uint16(l.Onoff), Linger: uint16(l.Linger)}
-       return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&sys)), int32(unsafe.Sizeof(sys)))
-}
-
-func SetsockoptInet4Addr(fd Handle, level, opt int, value [4]byte) (err error) {
-       return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&value[0])), 4)
-}
-func SetsockoptIPMreq(fd Handle, level, opt int, mreq *IPMreq) (err error) {
-       return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(mreq)), int32(unsafe.Sizeof(*mreq)))
-}
-func SetsockoptIPv6Mreq(fd Handle, level, opt int, mreq *IPv6Mreq) (err error) {
-       return syscall.EWINDOWS
-}
-
-func Getpid() (pid int) { return int(getCurrentProcessId()) }
-
-func FindFirstFile(name *uint16, data *Win32finddata) (handle Handle, err error) {
-       // NOTE(rsc): The Win32finddata struct is wrong for the system call:
-       // the two paths are each one uint16 short. Use the correct struct,
-       // a win32finddata1, and then copy the results out.
-       // There is no loss of expressivity here, because the final
-       // uint16, if it is used, is supposed to be a NUL, and Go doesn't need that.
-       // For Go 1.1, we might avoid the allocation of win32finddata1 here
-       // by adding a final Bug [2]uint16 field to the struct and then
-       // adjusting the fields in the result directly.
-       var data1 win32finddata1
-       handle, err = findFirstFile1(name, &data1)
-       if err == nil {
-               copyFindData(data, &data1)
-       }
-       return
-}
-
-func FindNextFile(handle Handle, data *Win32finddata) (err error) {
-       var data1 win32finddata1
-       err = findNextFile1(handle, &data1)
-       if err == nil {
-               copyFindData(data, &data1)
-       }
-       return
-}
-
-func getProcessEntry(pid int) (*ProcessEntry32, error) {
-       snapshot, err := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
-       if err != nil {
-               return nil, err
-       }
-       defer CloseHandle(snapshot)
-       var procEntry ProcessEntry32
-       procEntry.Size = uint32(unsafe.Sizeof(procEntry))
-       if err = Process32First(snapshot, &procEntry); err != nil {
-               return nil, err
-       }
-       for {
-               if procEntry.ProcessID == uint32(pid) {
-                       return &procEntry, nil
-               }
-               err = Process32Next(snapshot, &procEntry)
-               if err != nil {
-                       return nil, err
-               }
-       }
-}
-
-func Getppid() (ppid int) {
-       pe, err := getProcessEntry(Getpid())
-       if err != nil {
-               return -1
-       }
-       return int(pe.ParentProcessID)
-}
-
-// TODO(brainman): fix all needed for os
-func Fchdir(fd Handle) (err error)             { return syscall.EWINDOWS }
-func Link(oldpath, newpath string) (err error) { return syscall.EWINDOWS }
-func Symlink(path, link string) (err error)    { return syscall.EWINDOWS }
-
-func Fchmod(fd Handle, mode uint32) (err error)        { return syscall.EWINDOWS }
-func Chown(path string, uid int, gid int) (err error)  { return syscall.EWINDOWS }
-func Lchown(path string, uid int, gid int) (err error) { return syscall.EWINDOWS }
-func Fchown(fd Handle, uid int, gid int) (err error)   { return syscall.EWINDOWS }
-
-func Getuid() (uid int)                  { return -1 }
-func Geteuid() (euid int)                { return -1 }
-func Getgid() (gid int)                  { return -1 }
-func Getegid() (egid int)                { return -1 }
-func Getgroups() (gids []int, err error) { return nil, syscall.EWINDOWS }
-
-type Signal int
-
-func (s Signal) Signal() {}
-
-func (s Signal) String() string {
-       if 0 <= s && int(s) < len(signals) {
-               str := signals[s]
-               if str != "" {
-                       return str
-               }
-       }
-       return "signal " + itoa(int(s))
-}
-
-func LoadCreateSymbolicLink() error {
-       return procCreateSymbolicLinkW.Find()
-}
-
-// Readlink returns the destination of the named symbolic link.
-func Readlink(path string, buf []byte) (n int, err error) {
-       fd, err := CreateFile(StringToUTF16Ptr(path), GENERIC_READ, 0, nil, OPEN_EXISTING,
-               FILE_FLAG_OPEN_REPARSE_POINT|FILE_FLAG_BACKUP_SEMANTICS, 0)
-       if err != nil {
-               return -1, err
-       }
-       defer CloseHandle(fd)
-
-       rdbbuf := make([]byte, MAXIMUM_REPARSE_DATA_BUFFER_SIZE)
-       var bytesReturned uint32
-       err = DeviceIoControl(fd, FSCTL_GET_REPARSE_POINT, nil, 0, &rdbbuf[0], uint32(len(rdbbuf)), &bytesReturned, nil)
-       if err != nil {
-               return -1, err
-       }
-
-       rdb := (*reparseDataBuffer)(unsafe.Pointer(&rdbbuf[0]))
-       var s string
-       switch rdb.ReparseTag {
-       case IO_REPARSE_TAG_SYMLINK:
-               data := (*symbolicLinkReparseBuffer)(unsafe.Pointer(&rdb.reparseBuffer))
-               p := (*[0xffff]uint16)(unsafe.Pointer(&data.PathBuffer[0]))
-               s = UTF16ToString(p[data.PrintNameOffset/2 : (data.PrintNameLength-data.PrintNameOffset)/2])
-       case IO_REPARSE_TAG_MOUNT_POINT:
-               data := (*mountPointReparseBuffer)(unsafe.Pointer(&rdb.reparseBuffer))
-               p := (*[0xffff]uint16)(unsafe.Pointer(&data.PathBuffer[0]))
-               s = UTF16ToString(p[data.PrintNameOffset/2 : (data.PrintNameLength-data.PrintNameOffset)/2])
-       default:
-               // the path is not a symlink or junction but another type of reparse
-               // point
-               return -1, syscall.ENOENT
-       }
-       n = copy(buf, []byte(s))
-
-       return n, nil
-}
diff --git a/vendor/golang.org/x/sys/windows/syscall_windows_test.go b/vendor/golang.org/x/sys/windows/syscall_windows_test.go
deleted file mode 100644 (file)
index 0f73c11..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package windows_test
-
-import (
-       "io/ioutil"
-       "os"
-       "path/filepath"
-       "syscall"
-       "testing"
-       "unsafe"
-
-       "golang.org/x/sys/windows"
-)
-
-func TestWin32finddata(t *testing.T) {
-       dir, err := ioutil.TempDir("", "go-build")
-       if err != nil {
-               t.Fatalf("failed to create temp directory: %v", err)
-       }
-       defer os.RemoveAll(dir)
-
-       path := filepath.Join(dir, "long_name.and_extension")
-       f, err := os.Create(path)
-       if err != nil {
-               t.Fatalf("failed to create %v: %v", path, err)
-       }
-       f.Close()
-
-       type X struct {
-               fd  windows.Win32finddata
-               got byte
-               pad [10]byte // to protect ourselves
-
-       }
-       var want byte = 2 // it is unlikely to have this character in the filename
-       x := X{got: want}
-
-       pathp, _ := windows.UTF16PtrFromString(path)
-       h, err := windows.FindFirstFile(pathp, &(x.fd))
-       if err != nil {
-               t.Fatalf("FindFirstFile failed: %v", err)
-       }
-       err = windows.FindClose(h)
-       if err != nil {
-               t.Fatalf("FindClose failed: %v", err)
-       }
-
-       if x.got != want {
-               t.Fatalf("memory corruption: want=%d got=%d", want, x.got)
-       }
-}
-
-func TestFormatMessage(t *testing.T) {
-       dll := windows.MustLoadDLL("pdh.dll")
-
-       pdhOpenQuery := func(datasrc *uint16, userdata uint32, query *windows.Handle) (errno uintptr) {
-               r0, _, _ := syscall.Syscall(dll.MustFindProc("PdhOpenQueryW").Addr(), 3, uintptr(unsafe.Pointer(datasrc)), uintptr(userdata), uintptr(unsafe.Pointer(query)))
-               return r0
-       }
-
-       pdhCloseQuery := func(query windows.Handle) (errno uintptr) {
-               r0, _, _ := syscall.Syscall(dll.MustFindProc("PdhCloseQuery").Addr(), 1, uintptr(query), 0, 0)
-               return r0
-       }
-
-       var q windows.Handle
-       name, err := windows.UTF16PtrFromString("no_such_source")
-       if err != nil {
-               t.Fatal(err)
-       }
-       errno := pdhOpenQuery(name, 0, &q)
-       if errno == 0 {
-               pdhCloseQuery(q)
-               t.Fatal("PdhOpenQuery succeeded, but expected to fail.")
-       }
-
-       const flags uint32 = syscall.FORMAT_MESSAGE_FROM_HMODULE | syscall.FORMAT_MESSAGE_ARGUMENT_ARRAY | syscall.FORMAT_MESSAGE_IGNORE_INSERTS
-       buf := make([]uint16, 300)
-       _, err = windows.FormatMessage(flags, uintptr(dll.Handle), uint32(errno), 0, buf, nil)
-       if err != nil {
-               t.Fatal("FormatMessage for handle=%x and errno=%x failed: %v", dll.Handle, errno, err)
-       }
-}
-
-func abort(funcname string, err error) {
-       panic(funcname + " failed: " + err.Error())
-}
-
-func ExampleLoadLibrary() {
-       h, err := windows.LoadLibrary("kernel32.dll")
-       if err != nil {
-               abort("LoadLibrary", err)
-       }
-       defer windows.FreeLibrary(h)
-       proc, err := windows.GetProcAddress(h, "GetVersion")
-       if err != nil {
-               abort("GetProcAddress", err)
-       }
-       r, _, _ := syscall.Syscall(uintptr(proc), 0, 0, 0, 0)
-       major := byte(r)
-       minor := uint8(r >> 8)
-       build := uint16(r >> 16)
-       print("windows version ", major, ".", minor, " (Build ", build, ")\n")
-}
diff --git a/vendor/golang.org/x/sys/windows/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/zsyscall_windows.go
deleted file mode 100644 (file)
index f7bc8d6..0000000
+++ /dev/null
@@ -1,2289 +0,0 @@
-// MACHINE GENERATED BY 'go generate' COMMAND; DO NOT EDIT
-
-package windows
-
-import (
-       "syscall"
-       "unsafe"
-)
-
-var _ unsafe.Pointer
-
-// Do the interface allocations only once for common
-// Errno values.
-const (
-       errnoERROR_IO_PENDING = 997
-)
-
-var (
-       errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING)
-)
-
-// errnoErr returns common boxed Errno values, to prevent
-// allocations at runtime.
-func errnoErr(e syscall.Errno) error {
-       switch e {
-       case 0:
-               return nil
-       case errnoERROR_IO_PENDING:
-               return errERROR_IO_PENDING
-       }
-       // TODO: add more here, after collecting data on the common
-       // error values see on Windows. (perhaps when running
-       // all.bat?)
-       return e
-}
-
-var (
-       modadvapi32 = NewLazySystemDLL("advapi32.dll")
-       modkernel32 = NewLazySystemDLL("kernel32.dll")
-       modshell32  = NewLazySystemDLL("shell32.dll")
-       modmswsock  = NewLazySystemDLL("mswsock.dll")
-       modcrypt32  = NewLazySystemDLL("crypt32.dll")
-       modws2_32   = NewLazySystemDLL("ws2_32.dll")
-       moddnsapi   = NewLazySystemDLL("dnsapi.dll")
-       modiphlpapi = NewLazySystemDLL("iphlpapi.dll")
-       modsecur32  = NewLazySystemDLL("secur32.dll")
-       modnetapi32 = NewLazySystemDLL("netapi32.dll")
-       moduserenv  = NewLazySystemDLL("userenv.dll")
-
-       procRegisterEventSourceW               = modadvapi32.NewProc("RegisterEventSourceW")
-       procDeregisterEventSource              = modadvapi32.NewProc("DeregisterEventSource")
-       procReportEventW                       = modadvapi32.NewProc("ReportEventW")
-       procOpenSCManagerW                     = modadvapi32.NewProc("OpenSCManagerW")
-       procCloseServiceHandle                 = modadvapi32.NewProc("CloseServiceHandle")
-       procCreateServiceW                     = modadvapi32.NewProc("CreateServiceW")
-       procOpenServiceW                       = modadvapi32.NewProc("OpenServiceW")
-       procDeleteService                      = modadvapi32.NewProc("DeleteService")
-       procStartServiceW                      = modadvapi32.NewProc("StartServiceW")
-       procQueryServiceStatus                 = modadvapi32.NewProc("QueryServiceStatus")
-       procControlService                     = modadvapi32.NewProc("ControlService")
-       procStartServiceCtrlDispatcherW        = modadvapi32.NewProc("StartServiceCtrlDispatcherW")
-       procSetServiceStatus                   = modadvapi32.NewProc("SetServiceStatus")
-       procChangeServiceConfigW               = modadvapi32.NewProc("ChangeServiceConfigW")
-       procQueryServiceConfigW                = modadvapi32.NewProc("QueryServiceConfigW")
-       procChangeServiceConfig2W              = modadvapi32.NewProc("ChangeServiceConfig2W")
-       procQueryServiceConfig2W               = modadvapi32.NewProc("QueryServiceConfig2W")
-       procGetLastError                       = modkernel32.NewProc("GetLastError")
-       procLoadLibraryW                       = modkernel32.NewProc("LoadLibraryW")
-       procLoadLibraryExW                     = modkernel32.NewProc("LoadLibraryExW")
-       procFreeLibrary                        = modkernel32.NewProc("FreeLibrary")
-       procGetProcAddress                     = modkernel32.NewProc("GetProcAddress")
-       procGetVersion                         = modkernel32.NewProc("GetVersion")
-       procFormatMessageW                     = modkernel32.NewProc("FormatMessageW")
-       procExitProcess                        = modkernel32.NewProc("ExitProcess")
-       procCreateFileW                        = modkernel32.NewProc("CreateFileW")
-       procReadFile                           = modkernel32.NewProc("ReadFile")
-       procWriteFile                          = modkernel32.NewProc("WriteFile")
-       procSetFilePointer                     = modkernel32.NewProc("SetFilePointer")
-       procCloseHandle                        = modkernel32.NewProc("CloseHandle")
-       procGetStdHandle                       = modkernel32.NewProc("GetStdHandle")
-       procSetStdHandle                       = modkernel32.NewProc("SetStdHandle")
-       procFindFirstFileW                     = modkernel32.NewProc("FindFirstFileW")
-       procFindNextFileW                      = modkernel32.NewProc("FindNextFileW")
-       procFindClose                          = modkernel32.NewProc("FindClose")
-       procGetFileInformationByHandle         = modkernel32.NewProc("GetFileInformationByHandle")
-       procGetCurrentDirectoryW               = modkernel32.NewProc("GetCurrentDirectoryW")
-       procSetCurrentDirectoryW               = modkernel32.NewProc("SetCurrentDirectoryW")
-       procCreateDirectoryW                   = modkernel32.NewProc("CreateDirectoryW")
-       procRemoveDirectoryW                   = modkernel32.NewProc("RemoveDirectoryW")
-       procDeleteFileW                        = modkernel32.NewProc("DeleteFileW")
-       procMoveFileW                          = modkernel32.NewProc("MoveFileW")
-       procMoveFileExW                        = modkernel32.NewProc("MoveFileExW")
-       procGetComputerNameW                   = modkernel32.NewProc("GetComputerNameW")
-       procGetComputerNameExW                 = modkernel32.NewProc("GetComputerNameExW")
-       procSetEndOfFile                       = modkernel32.NewProc("SetEndOfFile")
-       procGetSystemTimeAsFileTime            = modkernel32.NewProc("GetSystemTimeAsFileTime")
-       procGetSystemTimePreciseAsFileTime     = modkernel32.NewProc("GetSystemTimePreciseAsFileTime")
-       procGetTimeZoneInformation             = modkernel32.NewProc("GetTimeZoneInformation")
-       procCreateIoCompletionPort             = modkernel32.NewProc("CreateIoCompletionPort")
-       procGetQueuedCompletionStatus          = modkernel32.NewProc("GetQueuedCompletionStatus")
-       procPostQueuedCompletionStatus         = modkernel32.NewProc("PostQueuedCompletionStatus")
-       procCancelIo                           = modkernel32.NewProc("CancelIo")
-       procCancelIoEx                         = modkernel32.NewProc("CancelIoEx")
-       procCreateProcessW                     = modkernel32.NewProc("CreateProcessW")
-       procOpenProcess                        = modkernel32.NewProc("OpenProcess")
-       procTerminateProcess                   = modkernel32.NewProc("TerminateProcess")
-       procGetExitCodeProcess                 = modkernel32.NewProc("GetExitCodeProcess")
-       procGetStartupInfoW                    = modkernel32.NewProc("GetStartupInfoW")
-       procGetCurrentProcess                  = modkernel32.NewProc("GetCurrentProcess")
-       procGetProcessTimes                    = modkernel32.NewProc("GetProcessTimes")
-       procDuplicateHandle                    = modkernel32.NewProc("DuplicateHandle")
-       procWaitForSingleObject                = modkernel32.NewProc("WaitForSingleObject")
-       procGetTempPathW                       = modkernel32.NewProc("GetTempPathW")
-       procCreatePipe                         = modkernel32.NewProc("CreatePipe")
-       procGetFileType                        = modkernel32.NewProc("GetFileType")
-       procCryptAcquireContextW               = modadvapi32.NewProc("CryptAcquireContextW")
-       procCryptReleaseContext                = modadvapi32.NewProc("CryptReleaseContext")
-       procCryptGenRandom                     = modadvapi32.NewProc("CryptGenRandom")
-       procGetEnvironmentStringsW             = modkernel32.NewProc("GetEnvironmentStringsW")
-       procFreeEnvironmentStringsW            = modkernel32.NewProc("FreeEnvironmentStringsW")
-       procGetEnvironmentVariableW            = modkernel32.NewProc("GetEnvironmentVariableW")
-       procSetEnvironmentVariableW            = modkernel32.NewProc("SetEnvironmentVariableW")
-       procSetFileTime                        = modkernel32.NewProc("SetFileTime")
-       procGetFileAttributesW                 = modkernel32.NewProc("GetFileAttributesW")
-       procSetFileAttributesW                 = modkernel32.NewProc("SetFileAttributesW")
-       procGetFileAttributesExW               = modkernel32.NewProc("GetFileAttributesExW")
-       procGetCommandLineW                    = modkernel32.NewProc("GetCommandLineW")
-       procCommandLineToArgvW                 = modshell32.NewProc("CommandLineToArgvW")
-       procLocalFree                          = modkernel32.NewProc("LocalFree")
-       procSetHandleInformation               = modkernel32.NewProc("SetHandleInformation")
-       procFlushFileBuffers                   = modkernel32.NewProc("FlushFileBuffers")
-       procGetFullPathNameW                   = modkernel32.NewProc("GetFullPathNameW")
-       procGetLongPathNameW                   = modkernel32.NewProc("GetLongPathNameW")
-       procGetShortPathNameW                  = modkernel32.NewProc("GetShortPathNameW")
-       procCreateFileMappingW                 = modkernel32.NewProc("CreateFileMappingW")
-       procMapViewOfFile                      = modkernel32.NewProc("MapViewOfFile")
-       procUnmapViewOfFile                    = modkernel32.NewProc("UnmapViewOfFile")
-       procFlushViewOfFile                    = modkernel32.NewProc("FlushViewOfFile")
-       procVirtualLock                        = modkernel32.NewProc("VirtualLock")
-       procVirtualUnlock                      = modkernel32.NewProc("VirtualUnlock")
-       procTransmitFile                       = modmswsock.NewProc("TransmitFile")
-       procReadDirectoryChangesW              = modkernel32.NewProc("ReadDirectoryChangesW")
-       procCertOpenSystemStoreW               = modcrypt32.NewProc("CertOpenSystemStoreW")
-       procCertOpenStore                      = modcrypt32.NewProc("CertOpenStore")
-       procCertEnumCertificatesInStore        = modcrypt32.NewProc("CertEnumCertificatesInStore")
-       procCertAddCertificateContextToStore   = modcrypt32.NewProc("CertAddCertificateContextToStore")
-       procCertCloseStore                     = modcrypt32.NewProc("CertCloseStore")
-       procCertGetCertificateChain            = modcrypt32.NewProc("CertGetCertificateChain")
-       procCertFreeCertificateChain           = modcrypt32.NewProc("CertFreeCertificateChain")
-       procCertCreateCertificateContext       = modcrypt32.NewProc("CertCreateCertificateContext")
-       procCertFreeCertificateContext         = modcrypt32.NewProc("CertFreeCertificateContext")
-       procCertVerifyCertificateChainPolicy   = modcrypt32.NewProc("CertVerifyCertificateChainPolicy")
-       procRegOpenKeyExW                      = modadvapi32.NewProc("RegOpenKeyExW")
-       procRegCloseKey                        = modadvapi32.NewProc("RegCloseKey")
-       procRegQueryInfoKeyW                   = modadvapi32.NewProc("RegQueryInfoKeyW")
-       procRegEnumKeyExW                      = modadvapi32.NewProc("RegEnumKeyExW")
-       procRegQueryValueExW                   = modadvapi32.NewProc("RegQueryValueExW")
-       procGetCurrentProcessId                = modkernel32.NewProc("GetCurrentProcessId")
-       procGetConsoleMode                     = modkernel32.NewProc("GetConsoleMode")
-       procWriteConsoleW                      = modkernel32.NewProc("WriteConsoleW")
-       procReadConsoleW                       = modkernel32.NewProc("ReadConsoleW")
-       procCreateToolhelp32Snapshot           = modkernel32.NewProc("CreateToolhelp32Snapshot")
-       procProcess32FirstW                    = modkernel32.NewProc("Process32FirstW")
-       procProcess32NextW                     = modkernel32.NewProc("Process32NextW")
-       procDeviceIoControl                    = modkernel32.NewProc("DeviceIoControl")
-       procCreateSymbolicLinkW                = modkernel32.NewProc("CreateSymbolicLinkW")
-       procCreateHardLinkW                    = modkernel32.NewProc("CreateHardLinkW")
-       procGetCurrentThreadId                 = modkernel32.NewProc("GetCurrentThreadId")
-       procCreateEventW                       = modkernel32.NewProc("CreateEventW")
-       procSetEvent                           = modkernel32.NewProc("SetEvent")
-       procWSAStartup                         = modws2_32.NewProc("WSAStartup")
-       procWSACleanup                         = modws2_32.NewProc("WSACleanup")
-       procWSAIoctl                           = modws2_32.NewProc("WSAIoctl")
-       procsocket                             = modws2_32.NewProc("socket")
-       procsetsockopt                         = modws2_32.NewProc("setsockopt")
-       procgetsockopt                         = modws2_32.NewProc("getsockopt")
-       procbind                               = modws2_32.NewProc("bind")
-       procconnect                            = modws2_32.NewProc("connect")
-       procgetsockname                        = modws2_32.NewProc("getsockname")
-       procgetpeername                        = modws2_32.NewProc("getpeername")
-       proclisten                             = modws2_32.NewProc("listen")
-       procshutdown                           = modws2_32.NewProc("shutdown")
-       procclosesocket                        = modws2_32.NewProc("closesocket")
-       procAcceptEx                           = modmswsock.NewProc("AcceptEx")
-       procGetAcceptExSockaddrs               = modmswsock.NewProc("GetAcceptExSockaddrs")
-       procWSARecv                            = modws2_32.NewProc("WSARecv")
-       procWSASend                            = modws2_32.NewProc("WSASend")
-       procWSARecvFrom                        = modws2_32.NewProc("WSARecvFrom")
-       procWSASendTo                          = modws2_32.NewProc("WSASendTo")
-       procgethostbyname                      = modws2_32.NewProc("gethostbyname")
-       procgetservbyname                      = modws2_32.NewProc("getservbyname")
-       procntohs                              = modws2_32.NewProc("ntohs")
-       procgetprotobyname                     = modws2_32.NewProc("getprotobyname")
-       procDnsQuery_W                         = moddnsapi.NewProc("DnsQuery_W")
-       procDnsRecordListFree                  = moddnsapi.NewProc("DnsRecordListFree")
-       procDnsNameCompare_W                   = moddnsapi.NewProc("DnsNameCompare_W")
-       procGetAddrInfoW                       = modws2_32.NewProc("GetAddrInfoW")
-       procFreeAddrInfoW                      = modws2_32.NewProc("FreeAddrInfoW")
-       procGetIfEntry                         = modiphlpapi.NewProc("GetIfEntry")
-       procGetAdaptersInfo                    = modiphlpapi.NewProc("GetAdaptersInfo")
-       procSetFileCompletionNotificationModes = modkernel32.NewProc("SetFileCompletionNotificationModes")
-       procWSAEnumProtocolsW                  = modws2_32.NewProc("WSAEnumProtocolsW")
-       procGetAdaptersAddresses               = modiphlpapi.NewProc("GetAdaptersAddresses")
-       procGetACP                             = modkernel32.NewProc("GetACP")
-       procMultiByteToWideChar                = modkernel32.NewProc("MultiByteToWideChar")
-       procTranslateNameW                     = modsecur32.NewProc("TranslateNameW")
-       procGetUserNameExW                     = modsecur32.NewProc("GetUserNameExW")
-       procNetUserGetInfo                     = modnetapi32.NewProc("NetUserGetInfo")
-       procNetGetJoinInformation              = modnetapi32.NewProc("NetGetJoinInformation")
-       procNetApiBufferFree                   = modnetapi32.NewProc("NetApiBufferFree")
-       procLookupAccountSidW                  = modadvapi32.NewProc("LookupAccountSidW")
-       procLookupAccountNameW                 = modadvapi32.NewProc("LookupAccountNameW")
-       procConvertSidToStringSidW             = modadvapi32.NewProc("ConvertSidToStringSidW")
-       procConvertStringSidToSidW             = modadvapi32.NewProc("ConvertStringSidToSidW")
-       procGetLengthSid                       = modadvapi32.NewProc("GetLengthSid")
-       procCopySid                            = modadvapi32.NewProc("CopySid")
-       procAllocateAndInitializeSid           = modadvapi32.NewProc("AllocateAndInitializeSid")
-       procFreeSid                            = modadvapi32.NewProc("FreeSid")
-       procEqualSid                           = modadvapi32.NewProc("EqualSid")
-       procOpenProcessToken                   = modadvapi32.NewProc("OpenProcessToken")
-       procGetTokenInformation                = modadvapi32.NewProc("GetTokenInformation")
-       procGetUserProfileDirectoryW           = moduserenv.NewProc("GetUserProfileDirectoryW")
-)
-
-func RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall(procRegisterEventSourceW.Addr(), 2, uintptr(unsafe.Pointer(uncServerName)), uintptr(unsafe.Pointer(sourceName)), 0)
-       handle = Handle(r0)
-       if handle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func DeregisterEventSource(handle Handle) (err error) {
-       r1, _, e1 := syscall.Syscall(procDeregisterEventSource.Addr(), 1, uintptr(handle), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) {
-       r1, _, e1 := syscall.Syscall9(procReportEventW.Addr(), 9, uintptr(log), uintptr(etype), uintptr(category), uintptr(eventId), uintptr(usrSId), uintptr(numStrings), uintptr(dataSize), uintptr(unsafe.Pointer(strings)), uintptr(unsafe.Pointer(rawData)))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall(procOpenSCManagerW.Addr(), 3, uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(databaseName)), uintptr(access))
-       handle = Handle(r0)
-       if handle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func CloseServiceHandle(handle Handle) (err error) {
-       r1, _, e1 := syscall.Syscall(procCloseServiceHandle.Addr(), 1, uintptr(handle), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall15(procCreateServiceW.Addr(), 13, uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(unsafe.Pointer(displayName)), uintptr(access), uintptr(srvType), uintptr(startType), uintptr(errCtl), uintptr(unsafe.Pointer(pathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)), 0, 0)
-       handle = Handle(r0)
-       if handle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall(procOpenServiceW.Addr(), 3, uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(access))
-       handle = Handle(r0)
-       if handle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func DeleteService(service Handle) (err error) {
-       r1, _, e1 := syscall.Syscall(procDeleteService.Addr(), 1, uintptr(service), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func StartService(service Handle, numArgs uint32, argVectors **uint16) (err error) {
-       r1, _, e1 := syscall.Syscall(procStartServiceW.Addr(), 3, uintptr(service), uintptr(numArgs), uintptr(unsafe.Pointer(argVectors)))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) {
-       r1, _, e1 := syscall.Syscall(procQueryServiceStatus.Addr(), 2, uintptr(service), uintptr(unsafe.Pointer(status)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) {
-       r1, _, e1 := syscall.Syscall(procControlService.Addr(), 3, uintptr(service), uintptr(control), uintptr(unsafe.Pointer(status)))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) {
-       r1, _, e1 := syscall.Syscall(procStartServiceCtrlDispatcherW.Addr(), 1, uintptr(unsafe.Pointer(serviceTable)), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func SetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) {
-       r1, _, e1 := syscall.Syscall(procSetServiceStatus.Addr(), 2, uintptr(service), uintptr(unsafe.Pointer(serviceStatus)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func ChangeServiceConfig(service Handle, serviceType uint32, startType uint32, errorControl uint32, binaryPathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16, displayName *uint16) (err error) {
-       r1, _, e1 := syscall.Syscall12(procChangeServiceConfigW.Addr(), 11, uintptr(service), uintptr(serviceType), uintptr(startType), uintptr(errorControl), uintptr(unsafe.Pointer(binaryPathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)), uintptr(unsafe.Pointer(displayName)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procQueryServiceConfigW.Addr(), 4, uintptr(service), uintptr(unsafe.Pointer(serviceConfig)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func ChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) {
-       r1, _, e1 := syscall.Syscall(procChangeServiceConfig2W.Addr(), 3, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(info)))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procQueryServiceConfig2W.Addr(), 5, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func GetLastError() (lasterr error) {
-       r0, _, _ := syscall.Syscall(procGetLastError.Addr(), 0, 0, 0, 0)
-       if r0 != 0 {
-               lasterr = syscall.Errno(r0)
-       }
-       return
-}
-
-func LoadLibrary(libname string) (handle Handle, err error) {
-       var _p0 *uint16
-       _p0, err = syscall.UTF16PtrFromString(libname)
-       if err != nil {
-               return
-       }
-       return _LoadLibrary(_p0)
-}
-
-func _LoadLibrary(libname *uint16) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall(procLoadLibraryW.Addr(), 1, uintptr(unsafe.Pointer(libname)), 0, 0)
-       handle = Handle(r0)
-       if handle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func LoadLibraryEx(libname string, zero Handle, flags uintptr) (handle Handle, err error) {
-       var _p0 *uint16
-       _p0, err = syscall.UTF16PtrFromString(libname)
-       if err != nil {
-               return
-       }
-       return _LoadLibraryEx(_p0, zero, flags)
-}
-
-func _LoadLibraryEx(libname *uint16, zero Handle, flags uintptr) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall(procLoadLibraryExW.Addr(), 3, uintptr(unsafe.Pointer(libname)), uintptr(zero), uintptr(flags))
-       handle = Handle(r0)
-       if handle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func FreeLibrary(handle Handle) (err error) {
-       r1, _, e1 := syscall.Syscall(procFreeLibrary.Addr(), 1, uintptr(handle), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func GetProcAddress(module Handle, procname string) (proc uintptr, err error) {
-       var _p0 *byte
-       _p0, err = syscall.BytePtrFromString(procname)
-       if err != nil {
-               return
-       }
-       return _GetProcAddress(module, _p0)
-}
-
-func _GetProcAddress(module Handle, procname *byte) (proc uintptr, err error) {
-       r0, _, e1 := syscall.Syscall(procGetProcAddress.Addr(), 2, uintptr(module), uintptr(unsafe.Pointer(procname)), 0)
-       proc = uintptr(r0)
-       if proc == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func GetVersion() (ver uint32, err error) {
-       r0, _, e1 := syscall.Syscall(procGetVersion.Addr(), 0, 0, 0, 0)
-       ver = uint32(r0)
-       if ver == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func FormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) {
-       var _p0 *uint16
-       if len(buf) > 0 {
-               _p0 = &buf[0]
-       }
-       r0, _, e1 := syscall.Syscall9(procFormatMessageW.Addr(), 7, uintptr(flags), uintptr(msgsrc), uintptr(msgid), uintptr(langid), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(args)), 0, 0)
-       n = uint32(r0)
-       if n == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func ExitProcess(exitcode uint32) {
-       syscall.Syscall(procExitProcess.Addr(), 1, uintptr(exitcode), 0, 0)
-       return
-}
-
-func CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile int32) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall9(procCreateFileW.Addr(), 7, uintptr(unsafe.Pointer(name)), uintptr(access), uintptr(mode), uintptr(unsafe.Pointer(sa)), uintptr(createmode), uintptr(attrs), uintptr(templatefile), 0, 0)
-       handle = Handle(r0)
-       if handle == InvalidHandle {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
-       var _p0 *byte
-       if len(buf) > 0 {
-               _p0 = &buf[0]
-       }
-       r1, _, e1 := syscall.Syscall6(procReadFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
-       var _p0 *byte
-       if len(buf) > 0 {
-               _p0 = &buf[0]
-       }
-       r1, _, e1 := syscall.Syscall6(procWriteFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) {
-       r0, _, e1 := syscall.Syscall6(procSetFilePointer.Addr(), 4, uintptr(handle), uintptr(lowoffset), uintptr(unsafe.Pointer(highoffsetptr)), uintptr(whence), 0, 0)
-       newlowoffset = uint32(r0)
-       if newlowoffset == 0xffffffff {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func CloseHandle(handle Handle) (err error) {
-       r1, _, e1 := syscall.Syscall(procCloseHandle.Addr(), 1, uintptr(handle), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func GetStdHandle(stdhandle uint32) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall(procGetStdHandle.Addr(), 1, uintptr(stdhandle), 0, 0)
-       handle = Handle(r0)
-       if handle == InvalidHandle {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func SetStdHandle(stdhandle uint32, handle Handle) (err error) {
-       r1, _, e1 := syscall.Syscall(procSetStdHandle.Addr(), 2, uintptr(stdhandle), uintptr(handle), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall(procFindFirstFileW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(data)), 0)
-       handle = Handle(r0)
-       if handle == InvalidHandle {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func findNextFile1(handle Handle, data *win32finddata1) (err error) {
-       r1, _, e1 := syscall.Syscall(procFindNextFileW.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func FindClose(handle Handle) (err error) {
-       r1, _, e1 := syscall.Syscall(procFindClose.Addr(), 1, uintptr(handle), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func GetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error) {
-       r1, _, e1 := syscall.Syscall(procGetFileInformationByHandle.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func GetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) {
-       r0, _, e1 := syscall.Syscall(procGetCurrentDirectoryW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0)
-       n = uint32(r0)
-       if n == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func SetCurrentDirectory(path *uint16) (err error) {
-       r1, _, e1 := syscall.Syscall(procSetCurrentDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func CreateDirectory(path *uint16, sa *SecurityAttributes) (err error) {
-       r1, _, e1 := syscall.Syscall(procCreateDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(sa)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func RemoveDirectory(path *uint16) (err error) {
-       r1, _, e1 := syscall.Syscall(procRemoveDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func DeleteFile(path *uint16) (err error) {
-       r1, _, e1 := syscall.Syscall(procDeleteFileW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func MoveFile(from *uint16, to *uint16) (err error) {
-       r1, _, e1 := syscall.Syscall(procMoveFileW.Addr(), 2, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procMoveFileExW.Addr(), 3, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), uintptr(flags))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func GetComputerName(buf *uint16, n *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procGetComputerNameW.Addr(), 2, uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func GetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procGetComputerNameExW.Addr(), 3, uintptr(nametype), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func SetEndOfFile(handle Handle) (err error) {
-       r1, _, e1 := syscall.Syscall(procSetEndOfFile.Addr(), 1, uintptr(handle), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func GetSystemTimeAsFileTime(time *Filetime) {
-       syscall.Syscall(procGetSystemTimeAsFileTime.Addr(), 1, uintptr(unsafe.Pointer(time)), 0, 0)
-       return
-}
-
-func GetSystemTimePreciseAsFileTime(time *Filetime) {
-       syscall.Syscall(procGetSystemTimePreciseAsFileTime.Addr(), 1, uintptr(unsafe.Pointer(time)), 0, 0)
-       return
-}
-
-func GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) {
-       r0, _, e1 := syscall.Syscall(procGetTimeZoneInformation.Addr(), 1, uintptr(unsafe.Pointer(tzi)), 0, 0)
-       rc = uint32(r0)
-       if rc == 0xffffffff {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uint32, threadcnt uint32) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall6(procCreateIoCompletionPort.Addr(), 4, uintptr(filehandle), uintptr(cphandle), uintptr(key), uintptr(threadcnt), 0, 0)
-       handle = Handle(r0)
-       if handle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uint32, overlapped **Overlapped, timeout uint32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procGetQueuedCompletionStatus.Addr(), 5, uintptr(cphandle), uintptr(unsafe.Pointer(qty)), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(overlapped)), uintptr(timeout), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uint32, overlapped *Overlapped) (err error) {
-       r1, _, e1 := syscall.Syscall6(procPostQueuedCompletionStatus.Addr(), 4, uintptr(cphandle), uintptr(qty), uintptr(key), uintptr(unsafe.Pointer(overlapped)), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func CancelIo(s Handle) (err error) {
-       r1, _, e1 := syscall.Syscall(procCancelIo.Addr(), 1, uintptr(s), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func CancelIoEx(s Handle, o *Overlapped) (err error) {
-       r1, _, e1 := syscall.Syscall(procCancelIoEx.Addr(), 2, uintptr(s), uintptr(unsafe.Pointer(o)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) {
-       var _p0 uint32
-       if inheritHandles {
-               _p0 = 1
-       } else {
-               _p0 = 0
-       }
-       r1, _, e1 := syscall.Syscall12(procCreateProcessW.Addr(), 10, uintptr(unsafe.Pointer(appName)), uintptr(unsafe.Pointer(commandLine)), uintptr(unsafe.Pointer(procSecurity)), uintptr(unsafe.Pointer(threadSecurity)), uintptr(_p0), uintptr(creationFlags), uintptr(unsafe.Pointer(env)), uintptr(unsafe.Pointer(currentDir)), uintptr(unsafe.Pointer(startupInfo)), uintptr(unsafe.Pointer(outProcInfo)), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func OpenProcess(da uint32, inheritHandle bool, pid uint32) (handle Handle, err error) {
-       var _p0 uint32
-       if inheritHandle {
-               _p0 = 1
-       } else {
-               _p0 = 0
-       }
-       r0, _, e1 := syscall.Syscall(procOpenProcess.Addr(), 3, uintptr(da), uintptr(_p0), uintptr(pid))
-       handle = Handle(r0)
-       if handle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func TerminateProcess(handle Handle, exitcode uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procTerminateProcess.Addr(), 2, uintptr(handle), uintptr(exitcode), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procGetExitCodeProcess.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(exitcode)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func GetStartupInfo(startupInfo *StartupInfo) (err error) {
-       r1, _, e1 := syscall.Syscall(procGetStartupInfoW.Addr(), 1, uintptr(unsafe.Pointer(startupInfo)), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func GetCurrentProcess() (pseudoHandle Handle, err error) {
-       r0, _, e1 := syscall.Syscall(procGetCurrentProcess.Addr(), 0, 0, 0, 0)
-       pseudoHandle = Handle(r0)
-       if pseudoHandle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error) {
-       r1, _, e1 := syscall.Syscall6(procGetProcessTimes.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(creationTime)), uintptr(unsafe.Pointer(exitTime)), uintptr(unsafe.Pointer(kernelTime)), uintptr(unsafe.Pointer(userTime)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error) {
-       var _p0 uint32
-       if bInheritHandle {
-               _p0 = 1
-       } else {
-               _p0 = 0
-       }
-       r1, _, e1 := syscall.Syscall9(procDuplicateHandle.Addr(), 7, uintptr(hSourceProcessHandle), uintptr(hSourceHandle), uintptr(hTargetProcessHandle), uintptr(unsafe.Pointer(lpTargetHandle)), uintptr(dwDesiredAccess), uintptr(_p0), uintptr(dwOptions), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) {
-       r0, _, e1 := syscall.Syscall(procWaitForSingleObject.Addr(), 2, uintptr(handle), uintptr(waitMilliseconds), 0)
-       event = uint32(r0)
-       if event == 0xffffffff {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func GetTempPath(buflen uint32, buf *uint16) (n uint32, err error) {
-       r0, _, e1 := syscall.Syscall(procGetTempPathW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0)
-       n = uint32(r0)
-       if n == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func CreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procCreatePipe.Addr(), 4, uintptr(unsafe.Pointer(readhandle)), uintptr(unsafe.Pointer(writehandle)), uintptr(unsafe.Pointer(sa)), uintptr(size), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func GetFileType(filehandle Handle) (n uint32, err error) {
-       r0, _, e1 := syscall.Syscall(procGetFileType.Addr(), 1, uintptr(filehandle), 0, 0)
-       n = uint32(r0)
-       if n == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func CryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procCryptAcquireContextW.Addr(), 5, uintptr(unsafe.Pointer(provhandle)), uintptr(unsafe.Pointer(container)), uintptr(unsafe.Pointer(provider)), uintptr(provtype), uintptr(flags), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func CryptReleaseContext(provhandle Handle, flags uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procCryptReleaseContext.Addr(), 2, uintptr(provhandle), uintptr(flags), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func CryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) {
-       r1, _, e1 := syscall.Syscall(procCryptGenRandom.Addr(), 3, uintptr(provhandle), uintptr(buflen), uintptr(unsafe.Pointer(buf)))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func GetEnvironmentStrings() (envs *uint16, err error) {
-       r0, _, e1 := syscall.Syscall(procGetEnvironmentStringsW.Addr(), 0, 0, 0, 0)
-       envs = (*uint16)(unsafe.Pointer(r0))
-       if envs == nil {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func FreeEnvironmentStrings(envs *uint16) (err error) {
-       r1, _, e1 := syscall.Syscall(procFreeEnvironmentStringsW.Addr(), 1, uintptr(unsafe.Pointer(envs)), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) {
-       r0, _, e1 := syscall.Syscall(procGetEnvironmentVariableW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buffer)), uintptr(size))
-       n = uint32(r0)
-       if n == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func SetEnvironmentVariable(name *uint16, value *uint16) (err error) {
-       r1, _, e1 := syscall.Syscall(procSetEnvironmentVariableW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(value)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) {
-       r1, _, e1 := syscall.Syscall6(procSetFileTime.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(ctime)), uintptr(unsafe.Pointer(atime)), uintptr(unsafe.Pointer(wtime)), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func GetFileAttributes(name *uint16) (attrs uint32, err error) {
-       r0, _, e1 := syscall.Syscall(procGetFileAttributesW.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)
-       attrs = uint32(r0)
-       if attrs == INVALID_FILE_ATTRIBUTES {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func SetFileAttributes(name *uint16, attrs uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procSetFileAttributesW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(attrs), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) {
-       r1, _, e1 := syscall.Syscall(procGetFileAttributesExW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(level), uintptr(unsafe.Pointer(info)))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func GetCommandLine() (cmd *uint16) {
-       r0, _, _ := syscall.Syscall(procGetCommandLineW.Addr(), 0, 0, 0, 0)
-       cmd = (*uint16)(unsafe.Pointer(r0))
-       return
-}
-
-func CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) {
-       r0, _, e1 := syscall.Syscall(procCommandLineToArgvW.Addr(), 2, uintptr(unsafe.Pointer(cmd)), uintptr(unsafe.Pointer(argc)), 0)
-       argv = (*[8192]*[8192]uint16)(unsafe.Pointer(r0))
-       if argv == nil {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func LocalFree(hmem Handle) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall(procLocalFree.Addr(), 1, uintptr(hmem), 0, 0)
-       handle = Handle(r0)
-       if handle != 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procSetHandleInformation.Addr(), 3, uintptr(handle), uintptr(mask), uintptr(flags))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func FlushFileBuffers(handle Handle) (err error) {
-       r1, _, e1 := syscall.Syscall(procFlushFileBuffers.Addr(), 1, uintptr(handle), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) {
-       r0, _, e1 := syscall.Syscall6(procGetFullPathNameW.Addr(), 4, uintptr(unsafe.Pointer(path)), uintptr(buflen), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(fname)), 0, 0)
-       n = uint32(r0)
-       if n == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) {
-       r0, _, e1 := syscall.Syscall(procGetLongPathNameW.Addr(), 3, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(buf)), uintptr(buflen))
-       n = uint32(r0)
-       if n == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) {
-       r0, _, e1 := syscall.Syscall(procGetShortPathNameW.Addr(), 3, uintptr(unsafe.Pointer(longpath)), uintptr(unsafe.Pointer(shortpath)), uintptr(buflen))
-       n = uint32(r0)
-       if n == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall6(procCreateFileMappingW.Addr(), 6, uintptr(fhandle), uintptr(unsafe.Pointer(sa)), uintptr(prot), uintptr(maxSizeHigh), uintptr(maxSizeLow), uintptr(unsafe.Pointer(name)))
-       handle = Handle(r0)
-       if handle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error) {
-       r0, _, e1 := syscall.Syscall6(procMapViewOfFile.Addr(), 5, uintptr(handle), uintptr(access), uintptr(offsetHigh), uintptr(offsetLow), uintptr(length), 0)
-       addr = uintptr(r0)
-       if addr == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func UnmapViewOfFile(addr uintptr) (err error) {
-       r1, _, e1 := syscall.Syscall(procUnmapViewOfFile.Addr(), 1, uintptr(addr), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func FlushViewOfFile(addr uintptr, length uintptr) (err error) {
-       r1, _, e1 := syscall.Syscall(procFlushViewOfFile.Addr(), 2, uintptr(addr), uintptr(length), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func VirtualLock(addr uintptr, length uintptr) (err error) {
-       r1, _, e1 := syscall.Syscall(procVirtualLock.Addr(), 2, uintptr(addr), uintptr(length), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func VirtualUnlock(addr uintptr, length uintptr) (err error) {
-       r1, _, e1 := syscall.Syscall(procVirtualUnlock.Addr(), 2, uintptr(addr), uintptr(length), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) {
-       r1, _, e1 := syscall.Syscall9(procTransmitFile.Addr(), 7, uintptr(s), uintptr(handle), uintptr(bytesToWrite), uintptr(bytsPerSend), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(transmitFileBuf)), uintptr(flags), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) {
-       var _p0 uint32
-       if watchSubTree {
-               _p0 = 1
-       } else {
-               _p0 = 0
-       }
-       r1, _, e1 := syscall.Syscall9(procReadDirectoryChangesW.Addr(), 8, uintptr(handle), uintptr(unsafe.Pointer(buf)), uintptr(buflen), uintptr(_p0), uintptr(mask), uintptr(unsafe.Pointer(retlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) {
-       r0, _, e1 := syscall.Syscall(procCertOpenSystemStoreW.Addr(), 2, uintptr(hprov), uintptr(unsafe.Pointer(name)), 0)
-       store = Handle(r0)
-       if store == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall6(procCertOpenStore.Addr(), 5, uintptr(storeProvider), uintptr(msgAndCertEncodingType), uintptr(cryptProv), uintptr(flags), uintptr(para), 0)
-       handle = Handle(r0)
-       if handle == InvalidHandle {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) {
-       r0, _, e1 := syscall.Syscall(procCertEnumCertificatesInStore.Addr(), 2, uintptr(store), uintptr(unsafe.Pointer(prevContext)), 0)
-       context = (*CertContext)(unsafe.Pointer(r0))
-       if context == nil {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) {
-       r1, _, e1 := syscall.Syscall6(procCertAddCertificateContextToStore.Addr(), 4, uintptr(store), uintptr(unsafe.Pointer(certContext)), uintptr(addDisposition), uintptr(unsafe.Pointer(storeContext)), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func CertCloseStore(store Handle, flags uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procCertCloseStore.Addr(), 2, uintptr(store), uintptr(flags), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) {
-       r1, _, e1 := syscall.Syscall9(procCertGetCertificateChain.Addr(), 8, uintptr(engine), uintptr(unsafe.Pointer(leaf)), uintptr(unsafe.Pointer(time)), uintptr(additionalStore), uintptr(unsafe.Pointer(para)), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(chainCtx)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func CertFreeCertificateChain(ctx *CertChainContext) {
-       syscall.Syscall(procCertFreeCertificateChain.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0)
-       return
-}
-
-func CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) {
-       r0, _, e1 := syscall.Syscall(procCertCreateCertificateContext.Addr(), 3, uintptr(certEncodingType), uintptr(unsafe.Pointer(certEncoded)), uintptr(encodedLen))
-       context = (*CertContext)(unsafe.Pointer(r0))
-       if context == nil {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func CertFreeCertificateContext(ctx *CertContext) (err error) {
-       r1, _, e1 := syscall.Syscall(procCertFreeCertificateContext.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) {
-       r1, _, e1 := syscall.Syscall6(procCertVerifyCertificateChainPolicy.Addr(), 4, uintptr(policyOID), uintptr(unsafe.Pointer(chain)), uintptr(unsafe.Pointer(para)), uintptr(unsafe.Pointer(status)), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) {
-       r0, _, _ := syscall.Syscall6(procRegOpenKeyExW.Addr(), 5, uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(options), uintptr(desiredAccess), uintptr(unsafe.Pointer(result)), 0)
-       if r0 != 0 {
-               regerrno = syscall.Errno(r0)
-       }
-       return
-}
-
-func RegCloseKey(key Handle) (regerrno error) {
-       r0, _, _ := syscall.Syscall(procRegCloseKey.Addr(), 1, uintptr(key), 0, 0)
-       if r0 != 0 {
-               regerrno = syscall.Errno(r0)
-       }
-       return
-}
-
-func RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) {
-       r0, _, _ := syscall.Syscall12(procRegQueryInfoKeyW.Addr(), 12, uintptr(key), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(subkeysLen)), uintptr(unsafe.Pointer(maxSubkeyLen)), uintptr(unsafe.Pointer(maxClassLen)), uintptr(unsafe.Pointer(valuesLen)), uintptr(unsafe.Pointer(maxValueNameLen)), uintptr(unsafe.Pointer(maxValueLen)), uintptr(unsafe.Pointer(saLen)), uintptr(unsafe.Pointer(lastWriteTime)))
-       if r0 != 0 {
-               regerrno = syscall.Errno(r0)
-       }
-       return
-}
-
-func RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) {
-       r0, _, _ := syscall.Syscall9(procRegEnumKeyExW.Addr(), 8, uintptr(key), uintptr(index), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(lastWriteTime)), 0)
-       if r0 != 0 {
-               regerrno = syscall.Errno(r0)
-       }
-       return
-}
-
-func RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) {
-       r0, _, _ := syscall.Syscall6(procRegQueryValueExW.Addr(), 6, uintptr(key), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(valtype)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(buflen)))
-       if r0 != 0 {
-               regerrno = syscall.Errno(r0)
-       }
-       return
-}
-
-func getCurrentProcessId() (pid uint32) {
-       r0, _, _ := syscall.Syscall(procGetCurrentProcessId.Addr(), 0, 0, 0, 0)
-       pid = uint32(r0)
-       return
-}
-
-func GetConsoleMode(console Handle, mode *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procGetConsoleMode.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(mode)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) {
-       r1, _, e1 := syscall.Syscall6(procWriteConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(towrite), uintptr(unsafe.Pointer(written)), uintptr(unsafe.Pointer(reserved)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) {
-       r1, _, e1 := syscall.Syscall6(procReadConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(toread), uintptr(unsafe.Pointer(read)), uintptr(unsafe.Pointer(inputControl)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall(procCreateToolhelp32Snapshot.Addr(), 2, uintptr(flags), uintptr(processId), 0)
-       handle = Handle(r0)
-       if handle == InvalidHandle {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) {
-       r1, _, e1 := syscall.Syscall(procProcess32FirstW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) {
-       r1, _, e1 := syscall.Syscall(procProcess32NextW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error) {
-       r1, _, e1 := syscall.Syscall9(procDeviceIoControl.Addr(), 8, uintptr(handle), uintptr(ioControlCode), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferSize), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferSize), uintptr(unsafe.Pointer(bytesReturned)), uintptr(unsafe.Pointer(overlapped)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procCreateSymbolicLinkW.Addr(), 3, uintptr(unsafe.Pointer(symlinkfilename)), uintptr(unsafe.Pointer(targetfilename)), uintptr(flags))
-       if r1&0xff == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func CreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) {
-       r1, _, e1 := syscall.Syscall(procCreateHardLinkW.Addr(), 3, uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(existingfilename)), uintptr(reserved))
-       if r1&0xff == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func GetCurrentThreadId() (id uint32) {
-       r0, _, _ := syscall.Syscall(procGetCurrentThreadId.Addr(), 0, 0, 0, 0)
-       id = uint32(r0)
-       return
-}
-
-func CreateEvent(eventAttrs *syscall.SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall6(procCreateEventW.Addr(), 4, uintptr(unsafe.Pointer(eventAttrs)), uintptr(manualReset), uintptr(initialState), uintptr(unsafe.Pointer(name)), 0, 0)
-       handle = Handle(r0)
-       if handle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func SetEvent(event Handle) (err error) {
-       r1, _, e1 := syscall.Syscall(procSetEvent.Addr(), 1, uintptr(event), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func WSAStartup(verreq uint32, data *WSAData) (sockerr error) {
-       r0, _, _ := syscall.Syscall(procWSAStartup.Addr(), 2, uintptr(verreq), uintptr(unsafe.Pointer(data)), 0)
-       if r0 != 0 {
-               sockerr = syscall.Errno(r0)
-       }
-       return
-}
-
-func WSACleanup() (err error) {
-       r1, _, e1 := syscall.Syscall(procWSACleanup.Addr(), 0, 0, 0, 0)
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) {
-       r1, _, e1 := syscall.Syscall9(procWSAIoctl.Addr(), 9, uintptr(s), uintptr(iocc), uintptr(unsafe.Pointer(inbuf)), uintptr(cbif), uintptr(unsafe.Pointer(outbuf)), uintptr(cbob), uintptr(unsafe.Pointer(cbbr)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine))
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func socket(af int32, typ int32, protocol int32) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall(procsocket.Addr(), 3, uintptr(af), uintptr(typ), uintptr(protocol))
-       handle = Handle(r0)
-       if handle == InvalidHandle {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procsetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(optlen), 0)
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procgetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(unsafe.Pointer(optlen)), 0)
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func bind(s Handle, name unsafe.Pointer, namelen int32) (err error) {
-       r1, _, e1 := syscall.Syscall(procbind.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen))
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func connect(s Handle, name unsafe.Pointer, namelen int32) (err error) {
-       r1, _, e1 := syscall.Syscall(procconnect.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen))
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) {
-       r1, _, e1 := syscall.Syscall(procgetsockname.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) {
-       r1, _, e1 := syscall.Syscall(procgetpeername.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func listen(s Handle, backlog int32) (err error) {
-       r1, _, e1 := syscall.Syscall(proclisten.Addr(), 2, uintptr(s), uintptr(backlog), 0)
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func shutdown(s Handle, how int32) (err error) {
-       r1, _, e1 := syscall.Syscall(procshutdown.Addr(), 2, uintptr(s), uintptr(how), 0)
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func Closesocket(s Handle) (err error) {
-       r1, _, e1 := syscall.Syscall(procclosesocket.Addr(), 1, uintptr(s), 0, 0)
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) {
-       r1, _, e1 := syscall.Syscall9(procAcceptEx.Addr(), 8, uintptr(ls), uintptr(as), uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(overlapped)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func GetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) {
-       syscall.Syscall9(procGetAcceptExSockaddrs.Addr(), 8, uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(lrsa)), uintptr(unsafe.Pointer(lrsalen)), uintptr(unsafe.Pointer(rrsa)), uintptr(unsafe.Pointer(rrsalen)), 0)
-       return
-}
-
-func WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) {
-       r1, _, e1 := syscall.Syscall9(procWSARecv.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0)
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) {
-       r1, _, e1 := syscall.Syscall9(procWSASend.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0)
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) {
-       r1, _, e1 := syscall.Syscall9(procWSARecvFrom.Addr(), 9, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) {
-       r1, _, e1 := syscall.Syscall9(procWSASendTo.Addr(), 9, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(to)), uintptr(tolen), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func GetHostByName(name string) (h *Hostent, err error) {
-       var _p0 *byte
-       _p0, err = syscall.BytePtrFromString(name)
-       if err != nil {
-               return
-       }
-       return _GetHostByName(_p0)
-}
-
-func _GetHostByName(name *byte) (h *Hostent, err error) {
-       r0, _, e1 := syscall.Syscall(procgethostbyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)
-       h = (*Hostent)(unsafe.Pointer(r0))
-       if h == nil {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func GetServByName(name string, proto string) (s *Servent, err error) {
-       var _p0 *byte
-       _p0, err = syscall.BytePtrFromString(name)
-       if err != nil {
-               return
-       }
-       var _p1 *byte
-       _p1, err = syscall.BytePtrFromString(proto)
-       if err != nil {
-               return
-       }
-       return _GetServByName(_p0, _p1)
-}
-
-func _GetServByName(name *byte, proto *byte) (s *Servent, err error) {
-       r0, _, e1 := syscall.Syscall(procgetservbyname.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(proto)), 0)
-       s = (*Servent)(unsafe.Pointer(r0))
-       if s == nil {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func Ntohs(netshort uint16) (u uint16) {
-       r0, _, _ := syscall.Syscall(procntohs.Addr(), 1, uintptr(netshort), 0, 0)
-       u = uint16(r0)
-       return
-}
-
-func GetProtoByName(name string) (p *Protoent, err error) {
-       var _p0 *byte
-       _p0, err = syscall.BytePtrFromString(name)
-       if err != nil {
-               return
-       }
-       return _GetProtoByName(_p0)
-}
-
-func _GetProtoByName(name *byte) (p *Protoent, err error) {
-       r0, _, e1 := syscall.Syscall(procgetprotobyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)
-       p = (*Protoent)(unsafe.Pointer(r0))
-       if p == nil {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func DnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) {
-       var _p0 *uint16
-       _p0, status = syscall.UTF16PtrFromString(name)
-       if status != nil {
-               return
-       }
-       return _DnsQuery(_p0, qtype, options, extra, qrs, pr)
-}
-
-func _DnsQuery(name *uint16, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) {
-       r0, _, _ := syscall.Syscall6(procDnsQuery_W.Addr(), 6, uintptr(unsafe.Pointer(name)), uintptr(qtype), uintptr(options), uintptr(unsafe.Pointer(extra)), uintptr(unsafe.Pointer(qrs)), uintptr(unsafe.Pointer(pr)))
-       if r0 != 0 {
-               status = syscall.Errno(r0)
-       }
-       return
-}
-
-func DnsRecordListFree(rl *DNSRecord, freetype uint32) {
-       syscall.Syscall(procDnsRecordListFree.Addr(), 2, uintptr(unsafe.Pointer(rl)), uintptr(freetype), 0)
-       return
-}
-
-func DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) {
-       r0, _, _ := syscall.Syscall(procDnsNameCompare_W.Addr(), 2, uintptr(unsafe.Pointer(name1)), uintptr(unsafe.Pointer(name2)), 0)
-       same = r0 != 0
-       return
-}
-
-func GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) {
-       r0, _, _ := syscall.Syscall6(procGetAddrInfoW.Addr(), 4, uintptr(unsafe.Pointer(nodename)), uintptr(unsafe.Pointer(servicename)), uintptr(unsafe.Pointer(hints)), uintptr(unsafe.Pointer(result)), 0, 0)
-       if r0 != 0 {
-               sockerr = syscall.Errno(r0)
-       }
-       return
-}
-
-func FreeAddrInfoW(addrinfo *AddrinfoW) {
-       syscall.Syscall(procFreeAddrInfoW.Addr(), 1, uintptr(unsafe.Pointer(addrinfo)), 0, 0)
-       return
-}
-
-func GetIfEntry(pIfRow *MibIfRow) (errcode error) {
-       r0, _, _ := syscall.Syscall(procGetIfEntry.Addr(), 1, uintptr(unsafe.Pointer(pIfRow)), 0, 0)
-       if r0 != 0 {
-               errcode = syscall.Errno(r0)
-       }
-       return
-}
-
-func GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) {
-       r0, _, _ := syscall.Syscall(procGetAdaptersInfo.Addr(), 2, uintptr(unsafe.Pointer(ai)), uintptr(unsafe.Pointer(ol)), 0)
-       if r0 != 0 {
-               errcode = syscall.Errno(r0)
-       }
-       return
-}
-
-func SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) {
-       r1, _, e1 := syscall.Syscall(procSetFileCompletionNotificationModes.Addr(), 2, uintptr(handle), uintptr(flags), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) {
-       r0, _, e1 := syscall.Syscall(procWSAEnumProtocolsW.Addr(), 3, uintptr(unsafe.Pointer(protocols)), uintptr(unsafe.Pointer(protocolBuffer)), uintptr(unsafe.Pointer(bufferLength)))
-       n = int32(r0)
-       if n == -1 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) {
-       r0, _, _ := syscall.Syscall6(procGetAdaptersAddresses.Addr(), 5, uintptr(family), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(adapterAddresses)), uintptr(unsafe.Pointer(sizePointer)), 0)
-       if r0 != 0 {
-               errcode = syscall.Errno(r0)
-       }
-       return
-}
-
-func GetACP() (acp uint32) {
-       r0, _, _ := syscall.Syscall(procGetACP.Addr(), 0, 0, 0, 0)
-       acp = uint32(r0)
-       return
-}
-
-func MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) {
-       r0, _, e1 := syscall.Syscall6(procMultiByteToWideChar.Addr(), 6, uintptr(codePage), uintptr(dwFlags), uintptr(unsafe.Pointer(str)), uintptr(nstr), uintptr(unsafe.Pointer(wchar)), uintptr(nwchar))
-       nwrite = int32(r0)
-       if nwrite == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procTranslateNameW.Addr(), 5, uintptr(unsafe.Pointer(accName)), uintptr(accNameFormat), uintptr(desiredNameFormat), uintptr(unsafe.Pointer(translatedName)), uintptr(unsafe.Pointer(nSize)), 0)
-       if r1&0xff == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procGetUserNameExW.Addr(), 3, uintptr(nameFormat), uintptr(unsafe.Pointer(nameBuffre)), uintptr(unsafe.Pointer(nSize)))
-       if r1&0xff == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) {
-       r0, _, _ := syscall.Syscall6(procNetUserGetInfo.Addr(), 4, uintptr(unsafe.Pointer(serverName)), uintptr(unsafe.Pointer(userName)), uintptr(level), uintptr(unsafe.Pointer(buf)), 0, 0)
-       if r0 != 0 {
-               neterr = syscall.Errno(r0)
-       }
-       return
-}
-
-func NetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) {
-       r0, _, _ := syscall.Syscall(procNetGetJoinInformation.Addr(), 3, uintptr(unsafe.Pointer(server)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(bufType)))
-       if r0 != 0 {
-               neterr = syscall.Errno(r0)
-       }
-       return
-}
-
-func NetApiBufferFree(buf *byte) (neterr error) {
-       r0, _, _ := syscall.Syscall(procNetApiBufferFree.Addr(), 1, uintptr(unsafe.Pointer(buf)), 0, 0)
-       if r0 != 0 {
-               neterr = syscall.Errno(r0)
-       }
-       return
-}
-
-func LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall9(procLookupAccountSidW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall9(procLookupAccountNameW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(accountName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sidLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) {
-       r1, _, e1 := syscall.Syscall(procConvertSidToStringSidW.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(stringSid)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) {
-       r1, _, e1 := syscall.Syscall(procConvertStringSidToSidW.Addr(), 2, uintptr(unsafe.Pointer(stringSid)), uintptr(unsafe.Pointer(sid)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func GetLengthSid(sid *SID) (len uint32) {
-       r0, _, _ := syscall.Syscall(procGetLengthSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
-       len = uint32(r0)
-       return
-}
-
-func CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) {
-       r1, _, e1 := syscall.Syscall(procCopySid.Addr(), 3, uintptr(destSidLen), uintptr(unsafe.Pointer(destSid)), uintptr(unsafe.Pointer(srcSid)))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func AllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, subAuth0 uint32, subAuth1 uint32, subAuth2 uint32, subAuth3 uint32, subAuth4 uint32, subAuth5 uint32, subAuth6 uint32, subAuth7 uint32, sid **SID) (err error) {
-       r1, _, e1 := syscall.Syscall12(procAllocateAndInitializeSid.Addr(), 11, uintptr(unsafe.Pointer(identAuth)), uintptr(subAuth), uintptr(subAuth0), uintptr(subAuth1), uintptr(subAuth2), uintptr(subAuth3), uintptr(subAuth4), uintptr(subAuth5), uintptr(subAuth6), uintptr(subAuth7), uintptr(unsafe.Pointer(sid)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func FreeSid(sid *SID) (err error) {
-       r1, _, e1 := syscall.Syscall(procFreeSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
-       if r1 != 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func EqualSid(sid1 *SID, sid2 *SID) (isEqual bool) {
-       r0, _, _ := syscall.Syscall(procEqualSid.Addr(), 2, uintptr(unsafe.Pointer(sid1)), uintptr(unsafe.Pointer(sid2)), 0)
-       isEqual = r0 != 0
-       return
-}
-
-func OpenProcessToken(h Handle, access uint32, token *Token) (err error) {
-       r1, _, e1 := syscall.Syscall(procOpenProcessToken.Addr(), 3, uintptr(h), uintptr(access), uintptr(unsafe.Pointer(token)))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func GetTokenInformation(t Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procGetTokenInformation.Addr(), 5, uintptr(t), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), uintptr(unsafe.Pointer(returnedLen)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procGetUserProfileDirectoryW.Addr(), 3, uintptr(t), uintptr(unsafe.Pointer(dir)), uintptr(unsafe.Pointer(dirLen)))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
diff --git a/vendor/golang.org/x/sys/windows/ztypes_windows.go b/vendor/golang.org/x/sys/windows/ztypes_windows.go
deleted file mode 100644 (file)
index a907ff2..0000000
+++ /dev/null
@@ -1,1242 +0,0 @@
-// Copyright 2011 The Go Authors.  All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package windows
-
-import "syscall"
-
-const (
-       // Windows errors.
-       ERROR_FILE_NOT_FOUND         syscall.Errno = 2
-       ERROR_PATH_NOT_FOUND         syscall.Errno = 3
-       ERROR_ACCESS_DENIED          syscall.Errno = 5
-       ERROR_NO_MORE_FILES          syscall.Errno = 18
-       ERROR_HANDLE_EOF             syscall.Errno = 38
-       ERROR_NETNAME_DELETED        syscall.Errno = 64
-       ERROR_FILE_EXISTS            syscall.Errno = 80
-       ERROR_BROKEN_PIPE            syscall.Errno = 109
-       ERROR_BUFFER_OVERFLOW        syscall.Errno = 111
-       ERROR_INSUFFICIENT_BUFFER    syscall.Errno = 122
-       ERROR_MOD_NOT_FOUND          syscall.Errno = 126
-       ERROR_PROC_NOT_FOUND         syscall.Errno = 127
-       ERROR_ALREADY_EXISTS         syscall.Errno = 183
-       ERROR_ENVVAR_NOT_FOUND       syscall.Errno = 203
-       ERROR_MORE_DATA              syscall.Errno = 234
-       ERROR_OPERATION_ABORTED      syscall.Errno = 995
-       ERROR_IO_PENDING             syscall.Errno = 997
-       ERROR_SERVICE_SPECIFIC_ERROR syscall.Errno = 1066
-       ERROR_NOT_FOUND              syscall.Errno = 1168
-       ERROR_PRIVILEGE_NOT_HELD     syscall.Errno = 1314
-       WSAEACCES                    syscall.Errno = 10013
-       WSAECONNRESET                syscall.Errno = 10054
-)
-
-const (
-       // Invented values to support what package os expects.
-       O_RDONLY   = 0x00000
-       O_WRONLY   = 0x00001
-       O_RDWR     = 0x00002
-       O_CREAT    = 0x00040
-       O_EXCL     = 0x00080
-       O_NOCTTY   = 0x00100
-       O_TRUNC    = 0x00200
-       O_NONBLOCK = 0x00800
-       O_APPEND   = 0x00400
-       O_SYNC     = 0x01000
-       O_ASYNC    = 0x02000
-       O_CLOEXEC  = 0x80000
-)
-
-const (
-       // More invented values for signals
-       SIGHUP  = Signal(0x1)
-       SIGINT  = Signal(0x2)
-       SIGQUIT = Signal(0x3)
-       SIGILL  = Signal(0x4)
-       SIGTRAP = Signal(0x5)
-       SIGABRT = Signal(0x6)
-       SIGBUS  = Signal(0x7)
-       SIGFPE  = Signal(0x8)
-       SIGKILL = Signal(0x9)
-       SIGSEGV = Signal(0xb)
-       SIGPIPE = Signal(0xd)
-       SIGALRM = Signal(0xe)
-       SIGTERM = Signal(0xf)
-)
-
-var signals = [...]string{
-       1:  "hangup",
-       2:  "interrupt",
-       3:  "quit",
-       4:  "illegal instruction",
-       5:  "trace/breakpoint trap",
-       6:  "aborted",
-       7:  "bus error",
-       8:  "floating point exception",
-       9:  "killed",
-       10: "user defined signal 1",
-       11: "segmentation fault",
-       12: "user defined signal 2",
-       13: "broken pipe",
-       14: "alarm clock",
-       15: "terminated",
-}
-
-const (
-       GENERIC_READ    = 0x80000000
-       GENERIC_WRITE   = 0x40000000
-       GENERIC_EXECUTE = 0x20000000
-       GENERIC_ALL     = 0x10000000
-
-       FILE_LIST_DIRECTORY   = 0x00000001
-       FILE_APPEND_DATA      = 0x00000004
-       FILE_WRITE_ATTRIBUTES = 0x00000100
-
-       FILE_SHARE_READ              = 0x00000001
-       FILE_SHARE_WRITE             = 0x00000002
-       FILE_SHARE_DELETE            = 0x00000004
-       FILE_ATTRIBUTE_READONLY      = 0x00000001
-       FILE_ATTRIBUTE_HIDDEN        = 0x00000002
-       FILE_ATTRIBUTE_SYSTEM        = 0x00000004
-       FILE_ATTRIBUTE_DIRECTORY     = 0x00000010
-       FILE_ATTRIBUTE_ARCHIVE       = 0x00000020
-       FILE_ATTRIBUTE_NORMAL        = 0x00000080
-       FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400
-
-       INVALID_FILE_ATTRIBUTES = 0xffffffff
-
-       CREATE_NEW        = 1
-       CREATE_ALWAYS     = 2
-       OPEN_EXISTING     = 3
-       OPEN_ALWAYS       = 4
-       TRUNCATE_EXISTING = 5
-
-       FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000
-       FILE_FLAG_BACKUP_SEMANTICS   = 0x02000000
-       FILE_FLAG_OVERLAPPED         = 0x40000000
-
-       HANDLE_FLAG_INHERIT    = 0x00000001
-       STARTF_USESTDHANDLES   = 0x00000100
-       STARTF_USESHOWWINDOW   = 0x00000001
-       DUPLICATE_CLOSE_SOURCE = 0x00000001
-       DUPLICATE_SAME_ACCESS  = 0x00000002
-
-       STD_INPUT_HANDLE  = -10 & (1<<32 - 1)
-       STD_OUTPUT_HANDLE = -11 & (1<<32 - 1)
-       STD_ERROR_HANDLE  = -12 & (1<<32 - 1)
-
-       FILE_BEGIN   = 0
-       FILE_CURRENT = 1
-       FILE_END     = 2
-
-       LANG_ENGLISH       = 0x09
-       SUBLANG_ENGLISH_US = 0x01
-
-       FORMAT_MESSAGE_ALLOCATE_BUFFER = 256
-       FORMAT_MESSAGE_IGNORE_INSERTS  = 512
-       FORMAT_MESSAGE_FROM_STRING     = 1024
-       FORMAT_MESSAGE_FROM_HMODULE    = 2048
-       FORMAT_MESSAGE_FROM_SYSTEM     = 4096
-       FORMAT_MESSAGE_ARGUMENT_ARRAY  = 8192
-       FORMAT_MESSAGE_MAX_WIDTH_MASK  = 255
-
-       MAX_PATH      = 260
-       MAX_LONG_PATH = 32768
-
-       MAX_COMPUTERNAME_LENGTH = 15
-
-       TIME_ZONE_ID_UNKNOWN  = 0
-       TIME_ZONE_ID_STANDARD = 1
-
-       TIME_ZONE_ID_DAYLIGHT = 2
-       IGNORE                = 0
-       INFINITE              = 0xffffffff
-
-       WAIT_TIMEOUT   = 258
-       WAIT_ABANDONED = 0x00000080
-       WAIT_OBJECT_0  = 0x00000000
-       WAIT_FAILED    = 0xFFFFFFFF
-
-       CREATE_NEW_PROCESS_GROUP   = 0x00000200
-       CREATE_UNICODE_ENVIRONMENT = 0x00000400
-
-       PROCESS_TERMINATE         = 1
-       PROCESS_QUERY_INFORMATION = 0x00000400
-       SYNCHRONIZE               = 0x00100000
-
-       PAGE_READONLY          = 0x02
-       PAGE_READWRITE         = 0x04
-       PAGE_WRITECOPY         = 0x08
-       PAGE_EXECUTE_READ      = 0x20
-       PAGE_EXECUTE_READWRITE = 0x40
-       PAGE_EXECUTE_WRITECOPY = 0x80
-
-       FILE_MAP_COPY    = 0x01
-       FILE_MAP_WRITE   = 0x02
-       FILE_MAP_READ    = 0x04
-       FILE_MAP_EXECUTE = 0x20
-
-       CTRL_C_EVENT     = 0
-       CTRL_BREAK_EVENT = 1
-
-       // Windows reserves errors >= 1<<29 for application use.
-       APPLICATION_ERROR = 1 << 29
-)
-
-const (
-       // flags for CreateToolhelp32Snapshot
-       TH32CS_SNAPHEAPLIST = 0x01
-       TH32CS_SNAPPROCESS  = 0x02
-       TH32CS_SNAPTHREAD   = 0x04
-       TH32CS_SNAPMODULE   = 0x08
-       TH32CS_SNAPMODULE32 = 0x10
-       TH32CS_SNAPALL      = TH32CS_SNAPHEAPLIST | TH32CS_SNAPMODULE | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD
-       TH32CS_INHERIT      = 0x80000000
-)
-
-const (
-       // filters for ReadDirectoryChangesW
-       FILE_NOTIFY_CHANGE_FILE_NAME   = 0x001
-       FILE_NOTIFY_CHANGE_DIR_NAME    = 0x002
-       FILE_NOTIFY_CHANGE_ATTRIBUTES  = 0x004
-       FILE_NOTIFY_CHANGE_SIZE        = 0x008
-       FILE_NOTIFY_CHANGE_LAST_WRITE  = 0x010
-       FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x020
-       FILE_NOTIFY_CHANGE_CREATION    = 0x040
-       FILE_NOTIFY_CHANGE_SECURITY    = 0x100
-)
-
-const (
-       // do not reorder
-       FILE_ACTION_ADDED = iota + 1
-       FILE_ACTION_REMOVED
-       FILE_ACTION_MODIFIED
-       FILE_ACTION_RENAMED_OLD_NAME
-       FILE_ACTION_RENAMED_NEW_NAME
-)
-
-const (
-       // wincrypt.h
-       PROV_RSA_FULL                    = 1
-       PROV_RSA_SIG                     = 2
-       PROV_DSS                         = 3
-       PROV_FORTEZZA                    = 4
-       PROV_MS_EXCHANGE                 = 5
-       PROV_SSL                         = 6
-       PROV_RSA_SCHANNEL                = 12
-       PROV_DSS_DH                      = 13
-       PROV_EC_ECDSA_SIG                = 14
-       PROV_EC_ECNRA_SIG                = 15
-       PROV_EC_ECDSA_FULL               = 16
-       PROV_EC_ECNRA_FULL               = 17
-       PROV_DH_SCHANNEL                 = 18
-       PROV_SPYRUS_LYNKS                = 20
-       PROV_RNG                         = 21
-       PROV_INTEL_SEC                   = 22
-       PROV_REPLACE_OWF                 = 23
-       PROV_RSA_AES                     = 24
-       CRYPT_VERIFYCONTEXT              = 0xF0000000
-       CRYPT_NEWKEYSET                  = 0x00000008
-       CRYPT_DELETEKEYSET               = 0x00000010
-       CRYPT_MACHINE_KEYSET             = 0x00000020
-       CRYPT_SILENT                     = 0x00000040
-       CRYPT_DEFAULT_CONTAINER_OPTIONAL = 0x00000080
-
-       USAGE_MATCH_TYPE_AND = 0
-       USAGE_MATCH_TYPE_OR  = 1
-
-       X509_ASN_ENCODING   = 0x00000001
-       PKCS_7_ASN_ENCODING = 0x00010000
-
-       CERT_STORE_PROV_MEMORY = 2
-
-       CERT_STORE_ADD_ALWAYS = 4
-
-       CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG = 0x00000004
-
-       CERT_TRUST_NO_ERROR                          = 0x00000000
-       CERT_TRUST_IS_NOT_TIME_VALID                 = 0x00000001
-       CERT_TRUST_IS_REVOKED                        = 0x00000004
-       CERT_TRUST_IS_NOT_SIGNATURE_VALID            = 0x00000008
-       CERT_TRUST_IS_NOT_VALID_FOR_USAGE            = 0x00000010
-       CERT_TRUST_IS_UNTRUSTED_ROOT                 = 0x00000020
-       CERT_TRUST_REVOCATION_STATUS_UNKNOWN         = 0x00000040
-       CERT_TRUST_IS_CYCLIC                         = 0x00000080
-       CERT_TRUST_INVALID_EXTENSION                 = 0x00000100
-       CERT_TRUST_INVALID_POLICY_CONSTRAINTS        = 0x00000200
-       CERT_TRUST_INVALID_BASIC_CONSTRAINTS         = 0x00000400
-       CERT_TRUST_INVALID_NAME_CONSTRAINTS          = 0x00000800
-       CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT = 0x00001000
-       CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT   = 0x00002000
-       CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = 0x00004000
-       CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT      = 0x00008000
-       CERT_TRUST_IS_OFFLINE_REVOCATION             = 0x01000000
-       CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY          = 0x02000000
-       CERT_TRUST_IS_EXPLICIT_DISTRUST              = 0x04000000
-       CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT    = 0x08000000
-
-       CERT_CHAIN_POLICY_BASE              = 1
-       CERT_CHAIN_POLICY_AUTHENTICODE      = 2
-       CERT_CHAIN_POLICY_AUTHENTICODE_TS   = 3
-       CERT_CHAIN_POLICY_SSL               = 4
-       CERT_CHAIN_POLICY_BASIC_CONSTRAINTS = 5
-       CERT_CHAIN_POLICY_NT_AUTH           = 6
-       CERT_CHAIN_POLICY_MICROSOFT_ROOT    = 7
-       CERT_CHAIN_POLICY_EV                = 8
-
-       CERT_E_EXPIRED       = 0x800B0101
-       CERT_E_ROLE          = 0x800B0103
-       CERT_E_PURPOSE       = 0x800B0106
-       CERT_E_UNTRUSTEDROOT = 0x800B0109
-       CERT_E_CN_NO_MATCH   = 0x800B010F
-
-       AUTHTYPE_CLIENT = 1
-       AUTHTYPE_SERVER = 2
-)
-
-var (
-       OID_PKIX_KP_SERVER_AUTH = []byte("1.3.6.1.5.5.7.3.1\x00")
-       OID_SERVER_GATED_CRYPTO = []byte("1.3.6.1.4.1.311.10.3.3\x00")
-       OID_SGC_NETSCAPE        = []byte("2.16.840.1.113730.4.1\x00")
-)
-
-// Invented values to support what package os expects.
-type Timeval struct {
-       Sec  int32
-       Usec int32
-}
-
-func (tv *Timeval) Nanoseconds() int64 {
-       return (int64(tv.Sec)*1e6 + int64(tv.Usec)) * 1e3
-}
-
-func NsecToTimeval(nsec int64) (tv Timeval) {
-       tv.Sec = int32(nsec / 1e9)
-       tv.Usec = int32(nsec % 1e9 / 1e3)
-       return
-}
-
-type SecurityAttributes struct {
-       Length             uint32
-       SecurityDescriptor uintptr
-       InheritHandle      uint32
-}
-
-type Overlapped struct {
-       Internal     uintptr
-       InternalHigh uintptr
-       Offset       uint32
-       OffsetHigh   uint32
-       HEvent       Handle
-}
-
-type FileNotifyInformation struct {
-       NextEntryOffset uint32
-       Action          uint32
-       FileNameLength  uint32
-       FileName        uint16
-}
-
-type Filetime struct {
-       LowDateTime  uint32
-       HighDateTime uint32
-}
-
-// Nanoseconds returns Filetime ft in nanoseconds
-// since Epoch (00:00:00 UTC, January 1, 1970).
-func (ft *Filetime) Nanoseconds() int64 {
-       // 100-nanosecond intervals since January 1, 1601
-       nsec := int64(ft.HighDateTime)<<32 + int64(ft.LowDateTime)
-       // change starting time to the Epoch (00:00:00 UTC, January 1, 1970)
-       nsec -= 116444736000000000
-       // convert into nanoseconds
-       nsec *= 100
-       return nsec
-}
-
-func NsecToFiletime(nsec int64) (ft Filetime) {
-       // convert into 100-nanosecond
-       nsec /= 100
-       // change starting time to January 1, 1601
-       nsec += 116444736000000000
-       // split into high / low
-       ft.LowDateTime = uint32(nsec & 0xffffffff)
-       ft.HighDateTime = uint32(nsec >> 32 & 0xffffffff)
-       return ft
-}
-
-type Win32finddata struct {
-       FileAttributes    uint32
-       CreationTime      Filetime
-       LastAccessTime    Filetime
-       LastWriteTime     Filetime
-       FileSizeHigh      uint32
-       FileSizeLow       uint32
-       Reserved0         uint32
-       Reserved1         uint32
-       FileName          [MAX_PATH - 1]uint16
-       AlternateFileName [13]uint16
-}
-
-// This is the actual system call structure.
-// Win32finddata is what we committed to in Go 1.
-type win32finddata1 struct {
-       FileAttributes    uint32
-       CreationTime      Filetime
-       LastAccessTime    Filetime
-       LastWriteTime     Filetime
-       FileSizeHigh      uint32
-       FileSizeLow       uint32
-       Reserved0         uint32
-       Reserved1         uint32
-       FileName          [MAX_PATH]uint16
-       AlternateFileName [14]uint16
-}
-
-func copyFindData(dst *Win32finddata, src *win32finddata1) {
-       dst.FileAttributes = src.FileAttributes
-       dst.CreationTime = src.CreationTime
-       dst.LastAccessTime = src.LastAccessTime
-       dst.LastWriteTime = src.LastWriteTime
-       dst.FileSizeHigh = src.FileSizeHigh
-       dst.FileSizeLow = src.FileSizeLow
-       dst.Reserved0 = src.Reserved0
-       dst.Reserved1 = src.Reserved1
-
-       // The src is 1 element bigger than dst, but it must be NUL.
-       copy(dst.FileName[:], src.FileName[:])
-       copy(dst.AlternateFileName[:], src.AlternateFileName[:])
-}
-
-type ByHandleFileInformation struct {
-       FileAttributes     uint32
-       CreationTime       Filetime
-       LastAccessTime     Filetime
-       LastWriteTime      Filetime
-       VolumeSerialNumber uint32
-       FileSizeHigh       uint32
-       FileSizeLow        uint32
-       NumberOfLinks      uint32
-       FileIndexHigh      uint32
-       FileIndexLow       uint32
-}
-
-const (
-       GetFileExInfoStandard = 0
-       GetFileExMaxInfoLevel = 1
-)
-
-type Win32FileAttributeData struct {
-       FileAttributes uint32
-       CreationTime   Filetime
-       LastAccessTime Filetime
-       LastWriteTime  Filetime
-       FileSizeHigh   uint32
-       FileSizeLow    uint32
-}
-
-// ShowWindow constants
-const (
-       // winuser.h
-       SW_HIDE            = 0
-       SW_NORMAL          = 1
-       SW_SHOWNORMAL      = 1
-       SW_SHOWMINIMIZED   = 2
-       SW_SHOWMAXIMIZED   = 3
-       SW_MAXIMIZE        = 3
-       SW_SHOWNOACTIVATE  = 4
-       SW_SHOW            = 5
-       SW_MINIMIZE        = 6
-       SW_SHOWMINNOACTIVE = 7
-       SW_SHOWNA          = 8
-       SW_RESTORE         = 9
-       SW_SHOWDEFAULT     = 10
-       SW_FORCEMINIMIZE   = 11
-)
-
-type StartupInfo struct {
-       Cb            uint32
-       _             *uint16
-       Desktop       *uint16
-       Title         *uint16
-       X             uint32
-       Y             uint32
-       XSize         uint32
-       YSize         uint32
-       XCountChars   uint32
-       YCountChars   uint32
-       FillAttribute uint32
-       Flags         uint32
-       ShowWindow    uint16
-       _             uint16
-       _             *byte
-       StdInput      Handle
-       StdOutput     Handle
-       StdErr        Handle
-}
-
-type ProcessInformation struct {
-       Process   Handle
-       Thread    Handle
-       ProcessId uint32
-       ThreadId  uint32
-}
-
-type ProcessEntry32 struct {
-       Size            uint32
-       Usage           uint32
-       ProcessID       uint32
-       DefaultHeapID   uintptr
-       ModuleID        uint32
-       Threads         uint32
-       ParentProcessID uint32
-       PriClassBase    int32
-       Flags           uint32
-       ExeFile         [MAX_PATH]uint16
-}
-
-type Systemtime struct {
-       Year         uint16
-       Month        uint16
-       DayOfWeek    uint16
-       Day          uint16
-       Hour         uint16
-       Minute       uint16
-       Second       uint16
-       Milliseconds uint16
-}
-
-type Timezoneinformation struct {
-       Bias         int32
-       StandardName [32]uint16
-       StandardDate Systemtime
-       StandardBias int32
-       DaylightName [32]uint16
-       DaylightDate Systemtime
-       DaylightBias int32
-}
-
-// Socket related.
-
-const (
-       AF_UNSPEC  = 0
-       AF_UNIX    = 1
-       AF_INET    = 2
-       AF_INET6   = 23
-       AF_NETBIOS = 17
-
-       SOCK_STREAM    = 1
-       SOCK_DGRAM     = 2
-       SOCK_RAW       = 3
-       SOCK_SEQPACKET = 5
-
-       IPPROTO_IP   = 0
-       IPPROTO_IPV6 = 0x29
-       IPPROTO_TCP  = 6
-       IPPROTO_UDP  = 17
-
-       SOL_SOCKET                = 0xffff
-       SO_REUSEADDR              = 4
-       SO_KEEPALIVE              = 8
-       SO_DONTROUTE              = 16
-       SO_BROADCAST              = 32
-       SO_LINGER                 = 128
-       SO_RCVBUF                 = 0x1002
-       SO_SNDBUF                 = 0x1001
-       SO_UPDATE_ACCEPT_CONTEXT  = 0x700b
-       SO_UPDATE_CONNECT_CONTEXT = 0x7010
-
-       IOC_OUT                            = 0x40000000
-       IOC_IN                             = 0x80000000
-       IOC_VENDOR                         = 0x18000000
-       IOC_INOUT                          = IOC_IN | IOC_OUT
-       IOC_WS2                            = 0x08000000
-       SIO_GET_EXTENSION_FUNCTION_POINTER = IOC_INOUT | IOC_WS2 | 6
-       SIO_KEEPALIVE_VALS                 = IOC_IN | IOC_VENDOR | 4
-       SIO_UDP_CONNRESET                  = IOC_IN | IOC_VENDOR | 12
-
-       // cf. http://support.microsoft.com/default.aspx?scid=kb;en-us;257460
-
-       IP_TOS             = 0x3
-       IP_TTL             = 0x4
-       IP_MULTICAST_IF    = 0x9
-       IP_MULTICAST_TTL   = 0xa
-       IP_MULTICAST_LOOP  = 0xb
-       IP_ADD_MEMBERSHIP  = 0xc
-       IP_DROP_MEMBERSHIP = 0xd
-
-       IPV6_V6ONLY         = 0x1b
-       IPV6_UNICAST_HOPS   = 0x4
-       IPV6_MULTICAST_IF   = 0x9
-       IPV6_MULTICAST_HOPS = 0xa
-       IPV6_MULTICAST_LOOP = 0xb
-       IPV6_JOIN_GROUP     = 0xc
-       IPV6_LEAVE_GROUP    = 0xd
-
-       SOMAXCONN = 0x7fffffff
-
-       TCP_NODELAY = 1
-
-       SHUT_RD   = 0
-       SHUT_WR   = 1
-       SHUT_RDWR = 2
-
-       WSADESCRIPTION_LEN = 256
-       WSASYS_STATUS_LEN  = 128
-)
-
-type WSABuf struct {
-       Len uint32
-       Buf *byte
-}
-
-// Invented values to support what package os expects.
-const (
-       S_IFMT   = 0x1f000
-       S_IFIFO  = 0x1000
-       S_IFCHR  = 0x2000
-       S_IFDIR  = 0x4000
-       S_IFBLK  = 0x6000
-       S_IFREG  = 0x8000
-       S_IFLNK  = 0xa000
-       S_IFSOCK = 0xc000
-       S_ISUID  = 0x800
-       S_ISGID  = 0x400
-       S_ISVTX  = 0x200
-       S_IRUSR  = 0x100
-       S_IWRITE = 0x80
-       S_IWUSR  = 0x80
-       S_IXUSR  = 0x40
-)
-
-const (
-       FILE_TYPE_CHAR    = 0x0002
-       FILE_TYPE_DISK    = 0x0001
-       FILE_TYPE_PIPE    = 0x0003
-       FILE_TYPE_REMOTE  = 0x8000
-       FILE_TYPE_UNKNOWN = 0x0000
-)
-
-type Hostent struct {
-       Name     *byte
-       Aliases  **byte
-       AddrType uint16
-       Length   uint16
-       AddrList **byte
-}
-
-type Protoent struct {
-       Name    *byte
-       Aliases **byte
-       Proto   uint16
-}
-
-const (
-       DNS_TYPE_A       = 0x0001
-       DNS_TYPE_NS      = 0x0002
-       DNS_TYPE_MD      = 0x0003
-       DNS_TYPE_MF      = 0x0004
-       DNS_TYPE_CNAME   = 0x0005
-       DNS_TYPE_SOA     = 0x0006
-       DNS_TYPE_MB      = 0x0007
-       DNS_TYPE_MG      = 0x0008
-       DNS_TYPE_MR      = 0x0009
-       DNS_TYPE_NULL    = 0x000a
-       DNS_TYPE_WKS     = 0x000b
-       DNS_TYPE_PTR     = 0x000c
-       DNS_TYPE_HINFO   = 0x000d
-       DNS_TYPE_MINFO   = 0x000e
-       DNS_TYPE_MX      = 0x000f
-       DNS_TYPE_TEXT    = 0x0010
-       DNS_TYPE_RP      = 0x0011
-       DNS_TYPE_AFSDB   = 0x0012
-       DNS_TYPE_X25     = 0x0013
-       DNS_TYPE_ISDN    = 0x0014
-       DNS_TYPE_RT      = 0x0015
-       DNS_TYPE_NSAP    = 0x0016
-       DNS_TYPE_NSAPPTR = 0x0017
-       DNS_TYPE_SIG     = 0x0018
-       DNS_TYPE_KEY     = 0x0019
-       DNS_TYPE_PX      = 0x001a
-       DNS_TYPE_GPOS    = 0x001b
-       DNS_TYPE_AAAA    = 0x001c
-       DNS_TYPE_LOC     = 0x001d
-       DNS_TYPE_NXT     = 0x001e
-       DNS_TYPE_EID     = 0x001f
-       DNS_TYPE_NIMLOC  = 0x0020
-       DNS_TYPE_SRV     = 0x0021
-       DNS_TYPE_ATMA    = 0x0022
-       DNS_TYPE_NAPTR   = 0x0023
-       DNS_TYPE_KX      = 0x0024
-       DNS_TYPE_CERT    = 0x0025
-       DNS_TYPE_A6      = 0x0026
-       DNS_TYPE_DNAME   = 0x0027
-       DNS_TYPE_SINK    = 0x0028
-       DNS_TYPE_OPT     = 0x0029
-       DNS_TYPE_DS      = 0x002B
-       DNS_TYPE_RRSIG   = 0x002E
-       DNS_TYPE_NSEC    = 0x002F
-       DNS_TYPE_DNSKEY  = 0x0030
-       DNS_TYPE_DHCID   = 0x0031
-       DNS_TYPE_UINFO   = 0x0064
-       DNS_TYPE_UID     = 0x0065
-       DNS_TYPE_GID     = 0x0066
-       DNS_TYPE_UNSPEC  = 0x0067
-       DNS_TYPE_ADDRS   = 0x00f8
-       DNS_TYPE_TKEY    = 0x00f9
-       DNS_TYPE_TSIG    = 0x00fa
-       DNS_TYPE_IXFR    = 0x00fb
-       DNS_TYPE_AXFR    = 0x00fc
-       DNS_TYPE_MAILB   = 0x00fd
-       DNS_TYPE_MAILA   = 0x00fe
-       DNS_TYPE_ALL     = 0x00ff
-       DNS_TYPE_ANY     = 0x00ff
-       DNS_TYPE_WINS    = 0xff01
-       DNS_TYPE_WINSR   = 0xff02
-       DNS_TYPE_NBSTAT  = 0xff01
-)
-
-const (
-       DNS_INFO_NO_RECORDS = 0x251D
-)
-
-const (
-       // flags inside DNSRecord.Dw
-       DnsSectionQuestion   = 0x0000
-       DnsSectionAnswer     = 0x0001
-       DnsSectionAuthority  = 0x0002
-       DnsSectionAdditional = 0x0003
-)
-
-type DNSSRVData struct {
-       Target   *uint16
-       Priority uint16
-       Weight   uint16
-       Port     uint16
-       Pad      uint16
-}
-
-type DNSPTRData struct {
-       Host *uint16
-}
-
-type DNSMXData struct {
-       NameExchange *uint16
-       Preference   uint16
-       Pad          uint16
-}
-
-type DNSTXTData struct {
-       StringCount uint16
-       StringArray [1]*uint16
-}
-
-type DNSRecord struct {
-       Next     *DNSRecord
-       Name     *uint16
-       Type     uint16
-       Length   uint16
-       Dw       uint32
-       Ttl      uint32
-       Reserved uint32
-       Data     [40]byte
-}
-
-const (
-       TF_DISCONNECT         = 1
-       TF_REUSE_SOCKET       = 2
-       TF_WRITE_BEHIND       = 4
-       TF_USE_DEFAULT_WORKER = 0
-       TF_USE_SYSTEM_THREAD  = 16
-       TF_USE_KERNEL_APC     = 32
-)
-
-type TransmitFileBuffers struct {
-       Head       uintptr
-       HeadLength uint32
-       Tail       uintptr
-       TailLength uint32
-}
-
-const (
-       IFF_UP           = 1
-       IFF_BROADCAST    = 2
-       IFF_LOOPBACK     = 4
-       IFF_POINTTOPOINT = 8
-       IFF_MULTICAST    = 16
-)
-
-const SIO_GET_INTERFACE_LIST = 0x4004747F
-
-// TODO(mattn): SockaddrGen is union of sockaddr/sockaddr_in/sockaddr_in6_old.
-// will be fixed to change variable type as suitable.
-
-type SockaddrGen [24]byte
-
-type InterfaceInfo struct {
-       Flags            uint32
-       Address          SockaddrGen
-       BroadcastAddress SockaddrGen
-       Netmask          SockaddrGen
-}
-
-type IpAddressString struct {
-       String [16]byte
-}
-
-type IpMaskString IpAddressString
-
-type IpAddrString struct {
-       Next      *IpAddrString
-       IpAddress IpAddressString
-       IpMask    IpMaskString
-       Context   uint32
-}
-
-const MAX_ADAPTER_NAME_LENGTH = 256
-const MAX_ADAPTER_DESCRIPTION_LENGTH = 128
-const MAX_ADAPTER_ADDRESS_LENGTH = 8
-
-type IpAdapterInfo struct {
-       Next                *IpAdapterInfo
-       ComboIndex          uint32
-       AdapterName         [MAX_ADAPTER_NAME_LENGTH + 4]byte
-       Description         [MAX_ADAPTER_DESCRIPTION_LENGTH + 4]byte
-       AddressLength       uint32
-       Address             [MAX_ADAPTER_ADDRESS_LENGTH]byte
-       Index               uint32
-       Type                uint32
-       DhcpEnabled         uint32
-       CurrentIpAddress    *IpAddrString
-       IpAddressList       IpAddrString
-       GatewayList         IpAddrString
-       DhcpServer          IpAddrString
-       HaveWins            bool
-       PrimaryWinsServer   IpAddrString
-       SecondaryWinsServer IpAddrString
-       LeaseObtained       int64
-       LeaseExpires        int64
-}
-
-const MAXLEN_PHYSADDR = 8
-const MAX_INTERFACE_NAME_LEN = 256
-const MAXLEN_IFDESCR = 256
-
-type MibIfRow struct {
-       Name            [MAX_INTERFACE_NAME_LEN]uint16
-       Index           uint32
-       Type            uint32
-       Mtu             uint32
-       Speed           uint32
-       PhysAddrLen     uint32
-       PhysAddr        [MAXLEN_PHYSADDR]byte
-       AdminStatus     uint32
-       OperStatus      uint32
-       LastChange      uint32
-       InOctets        uint32
-       InUcastPkts     uint32
-       InNUcastPkts    uint32
-       InDiscards      uint32
-       InErrors        uint32
-       InUnknownProtos uint32
-       OutOctets       uint32
-       OutUcastPkts    uint32
-       OutNUcastPkts   uint32
-       OutDiscards     uint32
-       OutErrors       uint32
-       OutQLen         uint32
-       DescrLen        uint32
-       Descr           [MAXLEN_IFDESCR]byte
-}
-
-type CertContext struct {
-       EncodingType uint32
-       EncodedCert  *byte
-       Length       uint32
-       CertInfo     uintptr
-       Store        Handle
-}
-
-type CertChainContext struct {
-       Size                       uint32
-       TrustStatus                CertTrustStatus
-       ChainCount                 uint32
-       Chains                     **CertSimpleChain
-       LowerQualityChainCount     uint32
-       LowerQualityChains         **CertChainContext
-       HasRevocationFreshnessTime uint32
-       RevocationFreshnessTime    uint32
-}
-
-type CertSimpleChain struct {
-       Size                       uint32
-       TrustStatus                CertTrustStatus
-       NumElements                uint32
-       Elements                   **CertChainElement
-       TrustListInfo              uintptr
-       HasRevocationFreshnessTime uint32
-       RevocationFreshnessTime    uint32
-}
-
-type CertChainElement struct {
-       Size              uint32
-       CertContext       *CertContext
-       TrustStatus       CertTrustStatus
-       RevocationInfo    *CertRevocationInfo
-       IssuanceUsage     *CertEnhKeyUsage
-       ApplicationUsage  *CertEnhKeyUsage
-       ExtendedErrorInfo *uint16
-}
-
-type CertRevocationInfo struct {
-       Size             uint32
-       RevocationResult uint32
-       RevocationOid    *byte
-       OidSpecificInfo  uintptr
-       HasFreshnessTime uint32
-       FreshnessTime    uint32
-       CrlInfo          uintptr // *CertRevocationCrlInfo
-}
-
-type CertTrustStatus struct {
-       ErrorStatus uint32
-       InfoStatus  uint32
-}
-
-type CertUsageMatch struct {
-       Type  uint32
-       Usage CertEnhKeyUsage
-}
-
-type CertEnhKeyUsage struct {
-       Length           uint32
-       UsageIdentifiers **byte
-}
-
-type CertChainPara struct {
-       Size                         uint32
-       RequestedUsage               CertUsageMatch
-       RequstedIssuancePolicy       CertUsageMatch
-       URLRetrievalTimeout          uint32
-       CheckRevocationFreshnessTime uint32
-       RevocationFreshnessTime      uint32
-       CacheResync                  *Filetime
-}
-
-type CertChainPolicyPara struct {
-       Size            uint32
-       Flags           uint32
-       ExtraPolicyPara uintptr
-}
-
-type SSLExtraCertChainPolicyPara struct {
-       Size       uint32
-       AuthType   uint32
-       Checks     uint32
-       ServerName *uint16
-}
-
-type CertChainPolicyStatus struct {
-       Size              uint32
-       Error             uint32
-       ChainIndex        uint32
-       ElementIndex      uint32
-       ExtraPolicyStatus uintptr
-}
-
-const (
-       // do not reorder
-       HKEY_CLASSES_ROOT = 0x80000000 + iota
-       HKEY_CURRENT_USER
-       HKEY_LOCAL_MACHINE
-       HKEY_USERS
-       HKEY_PERFORMANCE_DATA
-       HKEY_CURRENT_CONFIG
-       HKEY_DYN_DATA
-
-       KEY_QUERY_VALUE        = 1
-       KEY_SET_VALUE          = 2
-       KEY_CREATE_SUB_KEY     = 4
-       KEY_ENUMERATE_SUB_KEYS = 8
-       KEY_NOTIFY             = 16
-       KEY_CREATE_LINK        = 32
-       KEY_WRITE              = 0x20006
-       KEY_EXECUTE            = 0x20019
-       KEY_READ               = 0x20019
-       KEY_WOW64_64KEY        = 0x0100
-       KEY_WOW64_32KEY        = 0x0200
-       KEY_ALL_ACCESS         = 0xf003f
-)
-
-const (
-       // do not reorder
-       REG_NONE = iota
-       REG_SZ
-       REG_EXPAND_SZ
-       REG_BINARY
-       REG_DWORD_LITTLE_ENDIAN
-       REG_DWORD_BIG_ENDIAN
-       REG_LINK
-       REG_MULTI_SZ
-       REG_RESOURCE_LIST
-       REG_FULL_RESOURCE_DESCRIPTOR
-       REG_RESOURCE_REQUIREMENTS_LIST
-       REG_QWORD_LITTLE_ENDIAN
-       REG_DWORD = REG_DWORD_LITTLE_ENDIAN
-       REG_QWORD = REG_QWORD_LITTLE_ENDIAN
-)
-
-type AddrinfoW struct {
-       Flags     int32
-       Family    int32
-       Socktype  int32
-       Protocol  int32
-       Addrlen   uintptr
-       Canonname *uint16
-       Addr      uintptr
-       Next      *AddrinfoW
-}
-
-const (
-       AI_PASSIVE     = 1
-       AI_CANONNAME   = 2
-       AI_NUMERICHOST = 4
-)
-
-type GUID struct {
-       Data1 uint32
-       Data2 uint16
-       Data3 uint16
-       Data4 [8]byte
-}
-
-var WSAID_CONNECTEX = GUID{
-       0x25a207b9,
-       0xddf3,
-       0x4660,
-       [8]byte{0x8e, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e},
-}
-
-const (
-       FILE_SKIP_COMPLETION_PORT_ON_SUCCESS = 1
-       FILE_SKIP_SET_EVENT_ON_HANDLE        = 2
-)
-
-const (
-       WSAPROTOCOL_LEN    = 255
-       MAX_PROTOCOL_CHAIN = 7
-       BASE_PROTOCOL      = 1
-       LAYERED_PROTOCOL   = 0
-
-       XP1_CONNECTIONLESS           = 0x00000001
-       XP1_GUARANTEED_DELIVERY      = 0x00000002
-       XP1_GUARANTEED_ORDER         = 0x00000004
-       XP1_MESSAGE_ORIENTED         = 0x00000008
-       XP1_PSEUDO_STREAM            = 0x00000010
-       XP1_GRACEFUL_CLOSE           = 0x00000020
-       XP1_EXPEDITED_DATA           = 0x00000040
-       XP1_CONNECT_DATA             = 0x00000080
-       XP1_DISCONNECT_DATA          = 0x00000100
-       XP1_SUPPORT_BROADCAST        = 0x00000200
-       XP1_SUPPORT_MULTIPOINT       = 0x00000400
-       XP1_MULTIPOINT_CONTROL_PLANE = 0x00000800
-       XP1_MULTIPOINT_DATA_PLANE    = 0x00001000
-       XP1_QOS_SUPPORTED            = 0x00002000
-       XP1_UNI_SEND                 = 0x00008000
-       XP1_UNI_RECV                 = 0x00010000
-       XP1_IFS_HANDLES              = 0x00020000
-       XP1_PARTIAL_MESSAGE          = 0x00040000
-       XP1_SAN_SUPPORT_SDP          = 0x00080000
-
-       PFL_MULTIPLE_PROTO_ENTRIES  = 0x00000001
-       PFL_RECOMMENDED_PROTO_ENTRY = 0x00000002
-       PFL_HIDDEN                  = 0x00000004
-       PFL_MATCHES_PROTOCOL_ZERO   = 0x00000008
-       PFL_NETWORKDIRECT_PROVIDER  = 0x00000010
-)
-
-type WSAProtocolInfo struct {
-       ServiceFlags1     uint32
-       ServiceFlags2     uint32
-       ServiceFlags3     uint32
-       ServiceFlags4     uint32
-       ProviderFlags     uint32
-       ProviderId        GUID
-       CatalogEntryId    uint32
-       ProtocolChain     WSAProtocolChain
-       Version           int32
-       AddressFamily     int32
-       MaxSockAddr       int32
-       MinSockAddr       int32
-       SocketType        int32
-       Protocol          int32
-       ProtocolMaxOffset int32
-       NetworkByteOrder  int32
-       SecurityScheme    int32
-       MessageSize       uint32
-       ProviderReserved  uint32
-       ProtocolName      [WSAPROTOCOL_LEN + 1]uint16
-}
-
-type WSAProtocolChain struct {
-       ChainLen     int32
-       ChainEntries [MAX_PROTOCOL_CHAIN]uint32
-}
-
-type TCPKeepalive struct {
-       OnOff    uint32
-       Time     uint32
-       Interval uint32
-}
-
-type symbolicLinkReparseBuffer struct {
-       SubstituteNameOffset uint16
-       SubstituteNameLength uint16
-       PrintNameOffset      uint16
-       PrintNameLength      uint16
-       Flags                uint32
-       PathBuffer           [1]uint16
-}
-
-type mountPointReparseBuffer struct {
-       SubstituteNameOffset uint16
-       SubstituteNameLength uint16
-       PrintNameOffset      uint16
-       PrintNameLength      uint16
-       PathBuffer           [1]uint16
-}
-
-type reparseDataBuffer struct {
-       ReparseTag        uint32
-       ReparseDataLength uint16
-       Reserved          uint16
-
-       // GenericReparseBuffer
-       reparseBuffer byte
-}
-
-const (
-       FSCTL_GET_REPARSE_POINT          = 0x900A8
-       MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024
-       IO_REPARSE_TAG_MOUNT_POINT       = 0xA0000003
-       IO_REPARSE_TAG_SYMLINK           = 0xA000000C
-       SYMBOLIC_LINK_FLAG_DIRECTORY     = 0x1
-)
-
-const (
-       ComputerNameNetBIOS                   = 0
-       ComputerNameDnsHostname               = 1
-       ComputerNameDnsDomain                 = 2
-       ComputerNameDnsFullyQualified         = 3
-       ComputerNamePhysicalNetBIOS           = 4
-       ComputerNamePhysicalDnsHostname       = 5
-       ComputerNamePhysicalDnsDomain         = 6
-       ComputerNamePhysicalDnsFullyQualified = 7
-       ComputerNameMax                       = 8
-)
-
-const (
-       MOVEFILE_REPLACE_EXISTING      = 0x1
-       MOVEFILE_COPY_ALLOWED          = 0x2
-       MOVEFILE_DELAY_UNTIL_REBOOT    = 0x4
-       MOVEFILE_WRITE_THROUGH         = 0x8
-       MOVEFILE_CREATE_HARDLINK       = 0x10
-       MOVEFILE_FAIL_IF_NOT_TRACKABLE = 0x20
-)
-
-const GAA_FLAG_INCLUDE_PREFIX = 0x00000010
-
-const (
-       IF_TYPE_OTHER              = 1
-       IF_TYPE_ETHERNET_CSMACD    = 6
-       IF_TYPE_ISO88025_TOKENRING = 9
-       IF_TYPE_PPP                = 23
-       IF_TYPE_SOFTWARE_LOOPBACK  = 24
-       IF_TYPE_ATM                = 37
-       IF_TYPE_IEEE80211          = 71
-       IF_TYPE_TUNNEL             = 131
-       IF_TYPE_IEEE1394           = 144
-)
-
-type SocketAddress struct {
-       Sockaddr       *syscall.RawSockaddrAny
-       SockaddrLength int32
-}
-
-type IpAdapterUnicastAddress struct {
-       Length             uint32
-       Flags              uint32
-       Next               *IpAdapterUnicastAddress
-       Address            SocketAddress
-       PrefixOrigin       int32
-       SuffixOrigin       int32
-       DadState           int32
-       ValidLifetime      uint32
-       PreferredLifetime  uint32
-       LeaseLifetime      uint32
-       OnLinkPrefixLength uint8
-}
-
-type IpAdapterAnycastAddress struct {
-       Length  uint32
-       Flags   uint32
-       Next    *IpAdapterAnycastAddress
-       Address SocketAddress
-}
-
-type IpAdapterMulticastAddress struct {
-       Length  uint32
-       Flags   uint32
-       Next    *IpAdapterMulticastAddress
-       Address SocketAddress
-}
-
-type IpAdapterDnsServerAdapter struct {
-       Length   uint32
-       Reserved uint32
-       Next     *IpAdapterDnsServerAdapter
-       Address  SocketAddress
-}
-
-type IpAdapterPrefix struct {
-       Length       uint32
-       Flags        uint32
-       Next         *IpAdapterPrefix
-       Address      SocketAddress
-       PrefixLength uint32
-}
-
-type IpAdapterAddresses struct {
-       Length                uint32
-       IfIndex               uint32
-       Next                  *IpAdapterAddresses
-       AdapterName           *byte
-       FirstUnicastAddress   *IpAdapterUnicastAddress
-       FirstAnycastAddress   *IpAdapterAnycastAddress
-       FirstMulticastAddress *IpAdapterMulticastAddress
-       FirstDnsServerAddress *IpAdapterDnsServerAdapter
-       DnsSuffix             *uint16
-       Description           *uint16
-       FriendlyName          *uint16
-       PhysicalAddress       [syscall.MAX_ADAPTER_ADDRESS_LENGTH]byte
-       PhysicalAddressLength uint32
-       Flags                 uint32
-       Mtu                   uint32
-       IfType                uint32
-       OperStatus            uint32
-       Ipv6IfIndex           uint32
-       ZoneIndices           [16]uint32
-       FirstPrefix           *IpAdapterPrefix
-       /* more fields might be present here. */
-}
-
-const (
-       IfOperStatusUp             = 1
-       IfOperStatusDown           = 2
-       IfOperStatusTesting        = 3
-       IfOperStatusUnknown        = 4
-       IfOperStatusDormant        = 5
-       IfOperStatusNotPresent     = 6
-       IfOperStatusLowerLayerDown = 7
-)
diff --git a/vendor/golang.org/x/sys/windows/ztypes_windows_386.go b/vendor/golang.org/x/sys/windows/ztypes_windows_386.go
deleted file mode 100644 (file)
index 10f33be..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2011 The Go Authors.  All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package windows
-
-type WSAData struct {
-       Version      uint16
-       HighVersion  uint16
-       Description  [WSADESCRIPTION_LEN + 1]byte
-       SystemStatus [WSASYS_STATUS_LEN + 1]byte
-       MaxSockets   uint16
-       MaxUdpDg     uint16
-       VendorInfo   *byte
-}
-
-type Servent struct {
-       Name    *byte
-       Aliases **byte
-       Port    uint16
-       Proto   *byte
-}
diff --git a/vendor/golang.org/x/sys/windows/ztypes_windows_amd64.go b/vendor/golang.org/x/sys/windows/ztypes_windows_amd64.go
deleted file mode 100644 (file)
index 3f272c2..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2011 The Go Authors.  All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package windows
-
-type WSAData struct {
-       Version      uint16
-       HighVersion  uint16
-       MaxSockets   uint16
-       MaxUdpDg     uint16
-       VendorInfo   *byte
-       Description  [WSADESCRIPTION_LEN + 1]byte
-       SystemStatus [WSASYS_STATUS_LEN + 1]byte
-}
-
-type Servent struct {
-       Name    *byte
-       Aliases **byte
-       Proto   *byte
-       Port    uint16
-}
diff --git a/vendor/gopkg.in/yaml.v2/decode_test.go b/vendor/gopkg.in/yaml.v2/decode_test.go
deleted file mode 100644 (file)
index a6fea0f..0000000
+++ /dev/null
@@ -1,998 +0,0 @@
-package yaml_test
-
-import (
-       "errors"
-       . "gopkg.in/check.v1"
-       "gopkg.in/yaml.v2"
-       "math"
-       "net"
-       "reflect"
-       "strings"
-       "time"
-)
-
-var unmarshalIntTest = 123
-
-var unmarshalTests = []struct {
-       data  string
-       value interface{}
-}{
-       {
-               "",
-               &struct{}{},
-       }, {
-               "{}", &struct{}{},
-       }, {
-               "v: hi",
-               map[string]string{"v": "hi"},
-       }, {
-               "v: hi", map[string]interface{}{"v": "hi"},
-       }, {
-               "v: true",
-               map[string]string{"v": "true"},
-       }, {
-               "v: true",
-               map[string]interface{}{"v": true},
-       }, {
-               "v: 10",
-               map[string]interface{}{"v": 10},
-       }, {
-               "v: 0b10",
-               map[string]interface{}{"v": 2},
-       }, {
-               "v: 0xA",
-               map[string]interface{}{"v": 10},
-       }, {
-               "v: 4294967296",
-               map[string]int64{"v": 4294967296},
-       }, {
-               "v: 0.1",
-               map[string]interface{}{"v": 0.1},
-       }, {
-               "v: .1",
-               map[string]interface{}{"v": 0.1},
-       }, {
-               "v: .Inf",
-               map[string]interface{}{"v": math.Inf(+1)},
-       }, {
-               "v: -.Inf",
-               map[string]interface{}{"v": math.Inf(-1)},
-       }, {
-               "v: -10",
-               map[string]interface{}{"v": -10},
-       }, {
-               "v: -.1",
-               map[string]interface{}{"v": -0.1},
-       },
-
-       // Simple values.
-       {
-               "123",
-               &unmarshalIntTest,
-       },
-
-       // Floats from spec
-       {
-               "canonical: 6.8523e+5",
-               map[string]interface{}{"canonical": 6.8523e+5},
-       }, {
-               "expo: 685.230_15e+03",
-               map[string]interface{}{"expo": 685.23015e+03},
-       }, {
-               "fixed: 685_230.15",
-               map[string]interface{}{"fixed": 685230.15},
-       }, {
-               "neginf: -.inf",
-               map[string]interface{}{"neginf": math.Inf(-1)},
-       }, {
-               "fixed: 685_230.15",
-               map[string]float64{"fixed": 685230.15},
-       },
-       //{"sexa: 190:20:30.15", map[string]interface{}{"sexa": 0}}, // Unsupported
-       //{"notanum: .NaN", map[string]interface{}{"notanum": math.NaN()}}, // Equality of NaN fails.
-
-       // Bools from spec
-       {
-               "canonical: y",
-               map[string]interface{}{"canonical": true},
-       }, {
-               "answer: NO",
-               map[string]interface{}{"answer": false},
-       }, {
-               "logical: True",
-               map[string]interface{}{"logical": true},
-       }, {
-               "option: on",
-               map[string]interface{}{"option": true},
-       }, {
-               "option: on",
-               map[string]bool{"option": true},
-       },
-       // Ints from spec
-       {
-               "canonical: 685230",
-               map[string]interface{}{"canonical": 685230},
-       }, {
-               "decimal: +685_230",
-               map[string]interface{}{"decimal": 685230},
-       }, {
-               "octal: 02472256",
-               map[string]interface{}{"octal": 685230},
-       }, {
-               "hexa: 0x_0A_74_AE",
-               map[string]interface{}{"hexa": 685230},
-       }, {
-               "bin: 0b1010_0111_0100_1010_1110",
-               map[string]interface{}{"bin": 685230},
-       }, {
-               "bin: -0b101010",
-               map[string]interface{}{"bin": -42},
-       }, {
-               "decimal: +685_230",
-               map[string]int{"decimal": 685230},
-       },
-
-       //{"sexa: 190:20:30", map[string]interface{}{"sexa": 0}}, // Unsupported
-
-       // Nulls from spec
-       {
-               "empty:",
-               map[string]interface{}{"empty": nil},
-       }, {
-               "canonical: ~",
-               map[string]interface{}{"canonical": nil},
-       }, {
-               "english: null",
-               map[string]interface{}{"english": nil},
-       }, {
-               "~: null key",
-               map[interface{}]string{nil: "null key"},
-       }, {
-               "empty:",
-               map[string]*bool{"empty": nil},
-       },
-
-       // Flow sequence
-       {
-               "seq: [A,B]",
-               map[string]interface{}{"seq": []interface{}{"A", "B"}},
-       }, {
-               "seq: [A,B,C,]",
-               map[string][]string{"seq": []string{"A", "B", "C"}},
-       }, {
-               "seq: [A,1,C]",
-               map[string][]string{"seq": []string{"A", "1", "C"}},
-       }, {
-               "seq: [A,1,C]",
-               map[string][]int{"seq": []int{1}},
-       }, {
-               "seq: [A,1,C]",
-               map[string]interface{}{"seq": []interface{}{"A", 1, "C"}},
-       },
-       // Block sequence
-       {
-               "seq:\n - A\n - B",
-               map[string]interface{}{"seq": []interface{}{"A", "B"}},
-       }, {
-               "seq:\n - A\n - B\n - C",
-               map[string][]string{"seq": []string{"A", "B", "C"}},
-       }, {
-               "seq:\n - A\n - 1\n - C",
-               map[string][]string{"seq": []string{"A", "1", "C"}},
-       }, {
-               "seq:\n - A\n - 1\n - C",
-               map[string][]int{"seq": []int{1}},
-       }, {
-               "seq:\n - A\n - 1\n - C",
-               map[string]interface{}{"seq": []interface{}{"A", 1, "C"}},
-       },
-
-       // Literal block scalar
-       {
-               "scalar: | # Comment\n\n literal\n\n \ttext\n\n",
-               map[string]string{"scalar": "\nliteral\n\n\ttext\n"},
-       },
-
-       // Folded block scalar
-       {
-               "scalar: > # Comment\n\n folded\n line\n \n next\n line\n  * one\n  * two\n\n last\n line\n\n",
-               map[string]string{"scalar": "\nfolded line\nnext line\n * one\n * two\n\nlast line\n"},
-       },
-
-       // Map inside interface with no type hints.
-       {
-               "a: {b: c}",
-               map[interface{}]interface{}{"a": map[interface{}]interface{}{"b": "c"}},
-       },
-
-       // Structs and type conversions.
-       {
-               "hello: world",
-               &struct{ Hello string }{"world"},
-       }, {
-               "a: {b: c}",
-               &struct{ A struct{ B string } }{struct{ B string }{"c"}},
-       }, {
-               "a: {b: c}",
-               &struct{ A *struct{ B string } }{&struct{ B string }{"c"}},
-       }, {
-               "a: {b: c}",
-               &struct{ A map[string]string }{map[string]string{"b": "c"}},
-       }, {
-               "a: {b: c}",
-               &struct{ A *map[string]string }{&map[string]string{"b": "c"}},
-       }, {
-               "a:",
-               &struct{ A map[string]string }{},
-       }, {
-               "a: 1",
-               &struct{ A int }{1},
-       }, {
-               "a: 1",
-               &struct{ A float64 }{1},
-       }, {
-               "a: 1.0",
-               &struct{ A int }{1},
-       }, {
-               "a: 1.0",
-               &struct{ A uint }{1},
-       }, {
-               "a: [1, 2]",
-               &struct{ A []int }{[]int{1, 2}},
-       }, {
-               "a: 1",
-               &struct{ B int }{0},
-       }, {
-               "a: 1",
-               &struct {
-                       B int "a"
-               }{1},
-       }, {
-               "a: y",
-               &struct{ A bool }{true},
-       },
-
-       // Some cross type conversions
-       {
-               "v: 42",
-               map[string]uint{"v": 42},
-       }, {
-               "v: -42",
-               map[string]uint{},
-       }, {
-               "v: 4294967296",
-               map[string]uint64{"v": 4294967296},
-       }, {
-               "v: -4294967296",
-               map[string]uint64{},
-       },
-
-       // int
-       {
-               "int_max: 2147483647",
-               map[string]int{"int_max": math.MaxInt32},
-       },
-       {
-               "int_min: -2147483648",
-               map[string]int{"int_min": math.MinInt32},
-       },
-       {
-               "int_overflow: 9223372036854775808", // math.MaxInt64 + 1
-               map[string]int{},
-       },
-
-       // int64
-       {
-               "int64_max: 9223372036854775807",
-               map[string]int64{"int64_max": math.MaxInt64},
-       },
-       {
-               "int64_max_base2: 0b111111111111111111111111111111111111111111111111111111111111111",
-               map[string]int64{"int64_max_base2": math.MaxInt64},
-       },
-       {
-               "int64_min: -9223372036854775808",
-               map[string]int64{"int64_min": math.MinInt64},
-       },
-       {
-               "int64_neg_base2: -0b111111111111111111111111111111111111111111111111111111111111111",
-               map[string]int64{"int64_neg_base2": -math.MaxInt64},
-       },
-       {
-               "int64_overflow: 9223372036854775808", // math.MaxInt64 + 1
-               map[string]int64{},
-       },
-
-       // uint
-       {
-               "uint_min: 0",
-               map[string]uint{"uint_min": 0},
-       },
-       {
-               "uint_max: 4294967295",
-               map[string]uint{"uint_max": math.MaxUint32},
-       },
-       {
-               "uint_underflow: -1",
-               map[string]uint{},
-       },
-
-       // uint64
-       {
-               "uint64_min: 0",
-               map[string]uint{"uint64_min": 0},
-       },
-       {
-               "uint64_max: 18446744073709551615",
-               map[string]uint64{"uint64_max": math.MaxUint64},
-       },
-       {
-               "uint64_max_base2: 0b1111111111111111111111111111111111111111111111111111111111111111",
-               map[string]uint64{"uint64_max_base2": math.MaxUint64},
-       },
-       {
-               "uint64_maxint64: 9223372036854775807",
-               map[string]uint64{"uint64_maxint64": math.MaxInt64},
-       },
-       {
-               "uint64_underflow: -1",
-               map[string]uint64{},
-       },
-
-       // float32
-       {
-               "float32_max: 3.40282346638528859811704183484516925440e+38",
-               map[string]float32{"float32_max": math.MaxFloat32},
-       },
-       {
-               "float32_nonzero: 1.401298464324817070923729583289916131280e-45",
-               map[string]float32{"float32_nonzero": math.SmallestNonzeroFloat32},
-       },
-       {
-               "float32_maxuint64: 18446744073709551615",
-               map[string]float32{"float32_maxuint64": float32(math.MaxUint64)},
-       },
-       {
-               "float32_maxuint64+1: 18446744073709551616",
-               map[string]float32{"float32_maxuint64+1": float32(math.MaxUint64 + 1)},
-       },
-
-       // float64
-       {
-               "float64_max: 1.797693134862315708145274237317043567981e+308",
-               map[string]float64{"float64_max": math.MaxFloat64},
-       },
-       {
-               "float64_nonzero: 4.940656458412465441765687928682213723651e-324",
-               map[string]float64{"float64_nonzero": math.SmallestNonzeroFloat64},
-       },
-       {
-               "float64_maxuint64: 18446744073709551615",
-               map[string]float64{"float64_maxuint64": float64(math.MaxUint64)},
-       },
-       {
-               "float64_maxuint64+1: 18446744073709551616",
-               map[string]float64{"float64_maxuint64+1": float64(math.MaxUint64 + 1)},
-       },
-
-       // Overflow cases.
-       {
-               "v: 4294967297",
-               map[string]int32{},
-       }, {
-               "v: 128",
-               map[string]int8{},
-       },
-
-       // Quoted values.
-       {
-               "'1': '\"2\"'",
-               map[interface{}]interface{}{"1": "\"2\""},
-       }, {
-               "v:\n- A\n- 'B\n\n  C'\n",
-               map[string][]string{"v": []string{"A", "B\nC"}},
-       },
-
-       // Explicit tags.
-       {
-               "v: !!float '1.1'",
-               map[string]interface{}{"v": 1.1},
-       }, {
-               "v: !!null ''",
-               map[string]interface{}{"v": nil},
-       }, {
-               "%TAG !y! tag:yaml.org,2002:\n---\nv: !y!int '1'",
-               map[string]interface{}{"v": 1},
-       },
-
-       // Anchors and aliases.
-       {
-               "a: &x 1\nb: &y 2\nc: *x\nd: *y\n",
-               &struct{ A, B, C, D int }{1, 2, 1, 2},
-       }, {
-               "a: &a {c: 1}\nb: *a",
-               &struct {
-                       A, B struct {
-                               C int
-                       }
-               }{struct{ C int }{1}, struct{ C int }{1}},
-       }, {
-               "a: &a [1, 2]\nb: *a",
-               &struct{ B []int }{[]int{1, 2}},
-       }, {
-               "b: *a\na: &a {c: 1}",
-               &struct {
-                       A, B struct {
-                               C int
-                       }
-               }{struct{ C int }{1}, struct{ C int }{1}},
-       },
-
-       // Bug #1133337
-       {
-               "foo: ''",
-               map[string]*string{"foo": new(string)},
-       }, {
-               "foo: null",
-               map[string]string{"foo": ""},
-       }, {
-               "foo: null",
-               map[string]interface{}{"foo": nil},
-       },
-
-       // Ignored field
-       {
-               "a: 1\nb: 2\n",
-               &struct {
-                       A int
-                       B int "-"
-               }{1, 0},
-       },
-
-       // Bug #1191981
-       {
-               "" +
-                       "%YAML 1.1\n" +
-                       "--- !!str\n" +
-                       `"Generic line break (no glyph)\n\` + "\n" +
-                       ` Generic line break (glyphed)\n\` + "\n" +
-                       ` Line separator\u2028\` + "\n" +
-                       ` Paragraph separator\u2029"` + "\n",
-               "" +
-                       "Generic line break (no glyph)\n" +
-                       "Generic line break (glyphed)\n" +
-                       "Line separator\u2028Paragraph separator\u2029",
-       },
-
-       // Struct inlining
-       {
-               "a: 1\nb: 2\nc: 3\n",
-               &struct {
-                       A int
-                       C inlineB `yaml:",inline"`
-               }{1, inlineB{2, inlineC{3}}},
-       },
-
-       // Map inlining
-       {
-               "a: 1\nb: 2\nc: 3\n",
-               &struct {
-                       A int
-                       C map[string]int `yaml:",inline"`
-               }{1, map[string]int{"b": 2, "c": 3}},
-       },
-
-       // bug 1243827
-       {
-               "a: -b_c",
-               map[string]interface{}{"a": "-b_c"},
-       },
-       {
-               "a: +b_c",
-               map[string]interface{}{"a": "+b_c"},
-       },
-       {
-               "a: 50cent_of_dollar",
-               map[string]interface{}{"a": "50cent_of_dollar"},
-       },
-
-       // Duration
-       {
-               "a: 3s",
-               map[string]time.Duration{"a": 3 * time.Second},
-       },
-
-       // Issue #24.
-       {
-               "a: <foo>",
-               map[string]string{"a": "<foo>"},
-       },
-
-       // Base 60 floats are obsolete and unsupported.
-       {
-               "a: 1:1\n",
-               map[string]string{"a": "1:1"},
-       },
-
-       // Binary data.
-       {
-               "a: !!binary gIGC\n",
-               map[string]string{"a": "\x80\x81\x82"},
-       }, {
-               "a: !!binary |\n  " + strings.Repeat("kJCQ", 17) + "kJ\n  CQ\n",
-               map[string]string{"a": strings.Repeat("\x90", 54)},
-       }, {
-               "a: !!binary |\n  " + strings.Repeat("A", 70) + "\n  ==\n",
-               map[string]string{"a": strings.Repeat("\x00", 52)},
-       },
-
-       // Ordered maps.
-       {
-               "{b: 2, a: 1, d: 4, c: 3, sub: {e: 5}}",
-               &yaml.MapSlice{{"b", 2}, {"a", 1}, {"d", 4}, {"c", 3}, {"sub", yaml.MapSlice{{"e", 5}}}},
-       },
-
-       // Issue #39.
-       {
-               "a:\n b:\n  c: d\n",
-               map[string]struct{ B interface{} }{"a": {map[interface{}]interface{}{"c": "d"}}},
-       },
-
-       // Custom map type.
-       {
-               "a: {b: c}",
-               M{"a": M{"b": "c"}},
-       },
-
-       // Support encoding.TextUnmarshaler.
-       {
-               "a: 1.2.3.4\n",
-               map[string]net.IP{"a": net.IPv4(1, 2, 3, 4)},
-       },
-       {
-               "a: 2015-02-24T18:19:39Z\n",
-               map[string]time.Time{"a": time.Unix(1424801979, 0).In(time.UTC)},
-       },
-
-       // Encode empty lists as zero-length slices.
-       {
-               "a: []",
-               &struct{ A []int }{[]int{}},
-       },
-
-       // UTF-16-LE
-       {
-               "\xff\xfe\xf1\x00o\x00\xf1\x00o\x00:\x00 \x00v\x00e\x00r\x00y\x00 \x00y\x00e\x00s\x00\n\x00",
-               M{"ñoño": "very yes"},
-       },
-       // UTF-16-LE with surrogate.
-       {
-               "\xff\xfe\xf1\x00o\x00\xf1\x00o\x00:\x00 \x00v\x00e\x00r\x00y\x00 \x00y\x00e\x00s\x00 \x00=\xd8\xd4\xdf\n\x00",
-               M{"ñoño": "very yes 🟔"},
-       },
-
-       // UTF-16-BE
-       {
-               "\xfe\xff\x00\xf1\x00o\x00\xf1\x00o\x00:\x00 \x00v\x00e\x00r\x00y\x00 \x00y\x00e\x00s\x00\n",
-               M{"ñoño": "very yes"},
-       },
-       // UTF-16-BE with surrogate.
-       {
-               "\xfe\xff\x00\xf1\x00o\x00\xf1\x00o\x00:\x00 \x00v\x00e\x00r\x00y\x00 \x00y\x00e\x00s\x00 \xd8=\xdf\xd4\x00\n",
-               M{"ñoño": "very yes 🟔"},
-       },
-
-       // YAML Float regex shouldn't match this
-       {
-               "a: 123456e1\n",
-               M{"a": "123456e1"},
-       }, {
-               "a: 123456E1\n",
-               M{"a": "123456E1"},
-       },
-}
-
-type M map[interface{}]interface{}
-
-type inlineB struct {
-       B       int
-       inlineC `yaml:",inline"`
-}
-
-type inlineC struct {
-       C int
-}
-
-func (s *S) TestUnmarshal(c *C) {
-       for _, item := range unmarshalTests {
-               t := reflect.ValueOf(item.value).Type()
-               var value interface{}
-               switch t.Kind() {
-               case reflect.Map:
-                       value = reflect.MakeMap(t).Interface()
-               case reflect.String:
-                       value = reflect.New(t).Interface()
-               case reflect.Ptr:
-                       value = reflect.New(t.Elem()).Interface()
-               default:
-                       c.Fatalf("missing case for %s", t)
-               }
-               err := yaml.Unmarshal([]byte(item.data), value)
-               if _, ok := err.(*yaml.TypeError); !ok {
-                       c.Assert(err, IsNil)
-               }
-               if t.Kind() == reflect.String {
-                       c.Assert(*value.(*string), Equals, item.value)
-               } else {
-                       c.Assert(value, DeepEquals, item.value)
-               }
-       }
-}
-
-func (s *S) TestUnmarshalNaN(c *C) {
-       value := map[string]interface{}{}
-       err := yaml.Unmarshal([]byte("notanum: .NaN"), &value)
-       c.Assert(err, IsNil)
-       c.Assert(math.IsNaN(value["notanum"].(float64)), Equals, true)
-}
-
-var unmarshalErrorTests = []struct {
-       data, error string
-}{
-       {"v: !!float 'error'", "yaml: cannot decode !!str `error` as a !!float"},
-       {"v: [A,", "yaml: line 1: did not find expected node content"},
-       {"v:\n- [A,", "yaml: line 2: did not find expected node content"},
-       {"a: *b\n", "yaml: unknown anchor 'b' referenced"},
-       {"a: &a\n  b: *a\n", "yaml: anchor 'a' value contains itself"},
-       {"value: -", "yaml: block sequence entries are not allowed in this context"},
-       {"a: !!binary ==", "yaml: !!binary value contains invalid base64 data"},
-       {"{[.]}", `yaml: invalid map key: \[\]interface \{\}\{"\."\}`},
-       {"{{.}}", `yaml: invalid map key: map\[interface\ \{\}\]interface \{\}\{".":interface \{\}\(nil\)\}`},
-}
-
-func (s *S) TestUnmarshalErrors(c *C) {
-       for _, item := range unmarshalErrorTests {
-               var value interface{}
-               err := yaml.Unmarshal([]byte(item.data), &value)
-               c.Assert(err, ErrorMatches, item.error, Commentf("Partial unmarshal: %#v", value))
-       }
-}
-
-var unmarshalerTests = []struct {
-       data, tag string
-       value     interface{}
-}{
-       {"_: {hi: there}", "!!map", map[interface{}]interface{}{"hi": "there"}},
-       {"_: [1,A]", "!!seq", []interface{}{1, "A"}},
-       {"_: 10", "!!int", 10},
-       {"_: null", "!!null", nil},
-       {`_: BAR!`, "!!str", "BAR!"},
-       {`_: "BAR!"`, "!!str", "BAR!"},
-       {"_: !!foo 'BAR!'", "!!foo", "BAR!"},
-       {`_: ""`, "!!str", ""},
-}
-
-var unmarshalerResult = map[int]error{}
-
-type unmarshalerType struct {
-       value interface{}
-}
-
-func (o *unmarshalerType) UnmarshalYAML(unmarshal func(v interface{}) error) error {
-       if err := unmarshal(&o.value); err != nil {
-               return err
-       }
-       if i, ok := o.value.(int); ok {
-               if result, ok := unmarshalerResult[i]; ok {
-                       return result
-               }
-       }
-       return nil
-}
-
-type unmarshalerPointer struct {
-       Field *unmarshalerType "_"
-}
-
-type unmarshalerValue struct {
-       Field unmarshalerType "_"
-}
-
-func (s *S) TestUnmarshalerPointerField(c *C) {
-       for _, item := range unmarshalerTests {
-               obj := &unmarshalerPointer{}
-               err := yaml.Unmarshal([]byte(item.data), obj)
-               c.Assert(err, IsNil)
-               if item.value == nil {
-                       c.Assert(obj.Field, IsNil)
-               } else {
-                       c.Assert(obj.Field, NotNil, Commentf("Pointer not initialized (%#v)", item.value))
-                       c.Assert(obj.Field.value, DeepEquals, item.value)
-               }
-       }
-}
-
-func (s *S) TestUnmarshalerValueField(c *C) {
-       for _, item := range unmarshalerTests {
-               obj := &unmarshalerValue{}
-               err := yaml.Unmarshal([]byte(item.data), obj)
-               c.Assert(err, IsNil)
-               c.Assert(obj.Field, NotNil, Commentf("Pointer not initialized (%#v)", item.value))
-               c.Assert(obj.Field.value, DeepEquals, item.value)
-       }
-}
-
-func (s *S) TestUnmarshalerWholeDocument(c *C) {
-       obj := &unmarshalerType{}
-       err := yaml.Unmarshal([]byte(unmarshalerTests[0].data), obj)
-       c.Assert(err, IsNil)
-       value, ok := obj.value.(map[interface{}]interface{})
-       c.Assert(ok, Equals, true, Commentf("value: %#v", obj.value))
-       c.Assert(value["_"], DeepEquals, unmarshalerTests[0].value)
-}
-
-func (s *S) TestUnmarshalerTypeError(c *C) {
-       unmarshalerResult[2] = &yaml.TypeError{[]string{"foo"}}
-       unmarshalerResult[4] = &yaml.TypeError{[]string{"bar"}}
-       defer func() {
-               delete(unmarshalerResult, 2)
-               delete(unmarshalerResult, 4)
-       }()
-
-       type T struct {
-               Before int
-               After  int
-               M      map[string]*unmarshalerType
-       }
-       var v T
-       data := `{before: A, m: {abc: 1, def: 2, ghi: 3, jkl: 4}, after: B}`
-       err := yaml.Unmarshal([]byte(data), &v)
-       c.Assert(err, ErrorMatches, ""+
-               "yaml: unmarshal errors:\n"+
-               "  line 1: cannot unmarshal !!str `A` into int\n"+
-               "  foo\n"+
-               "  bar\n"+
-               "  line 1: cannot unmarshal !!str `B` into int")
-       c.Assert(v.M["abc"], NotNil)
-       c.Assert(v.M["def"], IsNil)
-       c.Assert(v.M["ghi"], NotNil)
-       c.Assert(v.M["jkl"], IsNil)
-
-       c.Assert(v.M["abc"].value, Equals, 1)
-       c.Assert(v.M["ghi"].value, Equals, 3)
-}
-
-type proxyTypeError struct{}
-
-func (v *proxyTypeError) UnmarshalYAML(unmarshal func(interface{}) error) error {
-       var s string
-       var a int32
-       var b int64
-       if err := unmarshal(&s); err != nil {
-               panic(err)
-       }
-       if s == "a" {
-               if err := unmarshal(&b); err == nil {
-                       panic("should have failed")
-               }
-               return unmarshal(&a)
-       }
-       if err := unmarshal(&a); err == nil {
-               panic("should have failed")
-       }
-       return unmarshal(&b)
-}
-
-func (s *S) TestUnmarshalerTypeErrorProxying(c *C) {
-       type T struct {
-               Before int
-               After  int
-               M      map[string]*proxyTypeError
-       }
-       var v T
-       data := `{before: A, m: {abc: a, def: b}, after: B}`
-       err := yaml.Unmarshal([]byte(data), &v)
-       c.Assert(err, ErrorMatches, ""+
-               "yaml: unmarshal errors:\n"+
-               "  line 1: cannot unmarshal !!str `A` into int\n"+
-               "  line 1: cannot unmarshal !!str `a` into int32\n"+
-               "  line 1: cannot unmarshal !!str `b` into int64\n"+
-               "  line 1: cannot unmarshal !!str `B` into int")
-}
-
-type failingUnmarshaler struct{}
-
-var failingErr = errors.New("failingErr")
-
-func (ft *failingUnmarshaler) UnmarshalYAML(unmarshal func(interface{}) error) error {
-       return failingErr
-}
-
-func (s *S) TestUnmarshalerError(c *C) {
-       err := yaml.Unmarshal([]byte("a: b"), &failingUnmarshaler{})
-       c.Assert(err, Equals, failingErr)
-}
-
-type sliceUnmarshaler []int
-
-func (su *sliceUnmarshaler) UnmarshalYAML(unmarshal func(interface{}) error) error {
-       var slice []int
-       err := unmarshal(&slice)
-       if err == nil {
-               *su = slice
-               return nil
-       }
-
-       var intVal int
-       err = unmarshal(&intVal)
-       if err == nil {
-               *su = []int{intVal}
-               return nil
-       }
-
-       return err
-}
-
-func (s *S) TestUnmarshalerRetry(c *C) {
-       var su sliceUnmarshaler
-       err := yaml.Unmarshal([]byte("[1, 2, 3]"), &su)
-       c.Assert(err, IsNil)
-       c.Assert(su, DeepEquals, sliceUnmarshaler([]int{1, 2, 3}))
-
-       err = yaml.Unmarshal([]byte("1"), &su)
-       c.Assert(err, IsNil)
-       c.Assert(su, DeepEquals, sliceUnmarshaler([]int{1}))
-}
-
-// From http://yaml.org/type/merge.html
-var mergeTests = `
-anchors:
-  list:
-    - &CENTER { "x": 1, "y": 2 }
-    - &LEFT   { "x": 0, "y": 2 }
-    - &BIG    { "r": 10 }
-    - &SMALL  { "r": 1 }
-
-# All the following maps are equal:
-
-plain:
-  # Explicit keys
-  "x": 1
-  "y": 2
-  "r": 10
-  label: center/big
-
-mergeOne:
-  # Merge one map
-  << : *CENTER
-  "r": 10
-  label: center/big
-
-mergeMultiple:
-  # Merge multiple maps
-  << : [ *CENTER, *BIG ]
-  label: center/big
-
-override:
-  # Override
-  << : [ *BIG, *LEFT, *SMALL ]
-  "x": 1
-  label: center/big
-
-shortTag:
-  # Explicit short merge tag
-  !!merge "<<" : [ *CENTER, *BIG ]
-  label: center/big
-
-longTag:
-  # Explicit merge long tag
-  !<tag:yaml.org,2002:merge> "<<" : [ *CENTER, *BIG ]
-  label: center/big
-
-inlineMap:
-  # Inlined map 
-  << : {"x": 1, "y": 2, "r": 10}
-  label: center/big
-
-inlineSequenceMap:
-  # Inlined map in sequence
-  << : [ *CENTER, {"r": 10} ]
-  label: center/big
-`
-
-func (s *S) TestMerge(c *C) {
-       var want = map[interface{}]interface{}{
-               "x":     1,
-               "y":     2,
-               "r":     10,
-               "label": "center/big",
-       }
-
-       var m map[interface{}]interface{}
-       err := yaml.Unmarshal([]byte(mergeTests), &m)
-       c.Assert(err, IsNil)
-       for name, test := range m {
-               if name == "anchors" {
-                       continue
-               }
-               c.Assert(test, DeepEquals, want, Commentf("test %q failed", name))
-       }
-}
-
-func (s *S) TestMergeStruct(c *C) {
-       type Data struct {
-               X, Y, R int
-               Label   string
-       }
-       want := Data{1, 2, 10, "center/big"}
-
-       var m map[string]Data
-       err := yaml.Unmarshal([]byte(mergeTests), &m)
-       c.Assert(err, IsNil)
-       for name, test := range m {
-               if name == "anchors" {
-                       continue
-               }
-               c.Assert(test, Equals, want, Commentf("test %q failed", name))
-       }
-}
-
-var unmarshalNullTests = []func() interface{}{
-       func() interface{} { var v interface{}; v = "v"; return &v },
-       func() interface{} { var s = "s"; return &s },
-       func() interface{} { var s = "s"; sptr := &s; return &sptr },
-       func() interface{} { var i = 1; return &i },
-       func() interface{} { var i = 1; iptr := &i; return &iptr },
-       func() interface{} { m := map[string]int{"s": 1}; return &m },
-       func() interface{} { m := map[string]int{"s": 1}; return m },
-}
-
-func (s *S) TestUnmarshalNull(c *C) {
-       for _, test := range unmarshalNullTests {
-               item := test()
-               zero := reflect.Zero(reflect.TypeOf(item).Elem()).Interface()
-               err := yaml.Unmarshal([]byte("null"), item)
-               c.Assert(err, IsNil)
-               if reflect.TypeOf(item).Kind() == reflect.Map {
-                       c.Assert(reflect.ValueOf(item).Interface(), DeepEquals, reflect.MakeMap(reflect.TypeOf(item)).Interface())
-               } else {
-                       c.Assert(reflect.ValueOf(item).Elem().Interface(), DeepEquals, zero)
-               }
-       }
-}
-
-func (s *S) TestUnmarshalSliceOnPreset(c *C) {
-       // Issue #48.
-       v := struct{ A []int }{[]int{1}}
-       yaml.Unmarshal([]byte("a: [2]"), &v)
-       c.Assert(v.A, DeepEquals, []int{2})
-}
-
-//var data []byte
-//func init() {
-//     var err error
-//     data, err = ioutil.ReadFile("/tmp/file.yaml")
-//     if err != nil {
-//             panic(err)
-//     }
-//}
-//
-//func (s *S) BenchmarkUnmarshal(c *C) {
-//     var err error
-//     for i := 0; i < c.N; i++ {
-//             var v map[string]interface{}
-//             err = yaml.Unmarshal(data, &v)
-//     }
-//     if err != nil {
-//             panic(err)
-//     }
-//}
-//
-//func (s *S) BenchmarkMarshal(c *C) {
-//     var v map[string]interface{}
-//     yaml.Unmarshal(data, &v)
-//     c.ResetTimer()
-//     for i := 0; i < c.N; i++ {
-//             yaml.Marshal(&v)
-//     }
-//}
diff --git a/vendor/gopkg.in/yaml.v2/encode_test.go b/vendor/gopkg.in/yaml.v2/encode_test.go
deleted file mode 100644 (file)
index 84099bd..0000000
+++ /dev/null
@@ -1,501 +0,0 @@
-package yaml_test
-
-import (
-       "fmt"
-       "math"
-       "strconv"
-       "strings"
-       "time"
-
-       . "gopkg.in/check.v1"
-       "gopkg.in/yaml.v2"
-       "net"
-       "os"
-)
-
-var marshalIntTest = 123
-
-var marshalTests = []struct {
-       value interface{}
-       data  string
-}{
-       {
-               nil,
-               "null\n",
-       }, {
-               &struct{}{},
-               "{}\n",
-       }, {
-               map[string]string{"v": "hi"},
-               "v: hi\n",
-       }, {
-               map[string]interface{}{"v": "hi"},
-               "v: hi\n",
-       }, {
-               map[string]string{"v": "true"},
-               "v: \"true\"\n",
-       }, {
-               map[string]string{"v": "false"},
-               "v: \"false\"\n",
-       }, {
-               map[string]interface{}{"v": true},
-               "v: true\n",
-       }, {
-               map[string]interface{}{"v": false},
-               "v: false\n",
-       }, {
-               map[string]interface{}{"v": 10},
-               "v: 10\n",
-       }, {
-               map[string]interface{}{"v": -10},
-               "v: -10\n",
-       }, {
-               map[string]uint{"v": 42},
-               "v: 42\n",
-       }, {
-               map[string]interface{}{"v": int64(4294967296)},
-               "v: 4294967296\n",
-       }, {
-               map[string]int64{"v": int64(4294967296)},
-               "v: 4294967296\n",
-       }, {
-               map[string]uint64{"v": 4294967296},
-               "v: 4294967296\n",
-       }, {
-               map[string]interface{}{"v": "10"},
-               "v: \"10\"\n",
-       }, {
-               map[string]interface{}{"v": 0.1},
-               "v: 0.1\n",
-       }, {
-               map[string]interface{}{"v": float64(0.1)},
-               "v: 0.1\n",
-       }, {
-               map[string]interface{}{"v": -0.1},
-               "v: -0.1\n",
-       }, {
-               map[string]interface{}{"v": math.Inf(+1)},
-               "v: .inf\n",
-       }, {
-               map[string]interface{}{"v": math.Inf(-1)},
-               "v: -.inf\n",
-       }, {
-               map[string]interface{}{"v": math.NaN()},
-               "v: .nan\n",
-       }, {
-               map[string]interface{}{"v": nil},
-               "v: null\n",
-       }, {
-               map[string]interface{}{"v": ""},
-               "v: \"\"\n",
-       }, {
-               map[string][]string{"v": []string{"A", "B"}},
-               "v:\n- A\n- B\n",
-       }, {
-               map[string][]string{"v": []string{"A", "B\nC"}},
-               "v:\n- A\n- |-\n  B\n  C\n",
-       }, {
-               map[string][]interface{}{"v": []interface{}{"A", 1, map[string][]int{"B": []int{2, 3}}}},
-               "v:\n- A\n- 1\n- B:\n  - 2\n  - 3\n",
-       }, {
-               map[string]interface{}{"a": map[interface{}]interface{}{"b": "c"}},
-               "a:\n  b: c\n",
-       }, {
-               map[string]interface{}{"a": "-"},
-               "a: '-'\n",
-       },
-
-       // Simple values.
-       {
-               &marshalIntTest,
-               "123\n",
-       },
-
-       // Structures
-       {
-               &struct{ Hello string }{"world"},
-               "hello: world\n",
-       }, {
-               &struct {
-                       A struct {
-                               B string
-                       }
-               }{struct{ B string }{"c"}},
-               "a:\n  b: c\n",
-       }, {
-               &struct {
-                       A *struct {
-                               B string
-                       }
-               }{&struct{ B string }{"c"}},
-               "a:\n  b: c\n",
-       }, {
-               &struct {
-                       A *struct {
-                               B string
-                       }
-               }{},
-               "a: null\n",
-       }, {
-               &struct{ A int }{1},
-               "a: 1\n",
-       }, {
-               &struct{ A []int }{[]int{1, 2}},
-               "a:\n- 1\n- 2\n",
-       }, {
-               &struct {
-                       B int "a"
-               }{1},
-               "a: 1\n",
-       }, {
-               &struct{ A bool }{true},
-               "a: true\n",
-       },
-
-       // Conditional flag
-       {
-               &struct {
-                       A int "a,omitempty"
-                       B int "b,omitempty"
-               }{1, 0},
-               "a: 1\n",
-       }, {
-               &struct {
-                       A int "a,omitempty"
-                       B int "b,omitempty"
-               }{0, 0},
-               "{}\n",
-       }, {
-               &struct {
-                       A *struct{ X, y int } "a,omitempty,flow"
-               }{&struct{ X, y int }{1, 2}},
-               "a: {x: 1}\n",
-       }, {
-               &struct {
-                       A *struct{ X, y int } "a,omitempty,flow"
-               }{nil},
-               "{}\n",
-       }, {
-               &struct {
-                       A *struct{ X, y int } "a,omitempty,flow"
-               }{&struct{ X, y int }{}},
-               "a: {x: 0}\n",
-       }, {
-               &struct {
-                       A struct{ X, y int } "a,omitempty,flow"
-               }{struct{ X, y int }{1, 2}},
-               "a: {x: 1}\n",
-       }, {
-               &struct {
-                       A struct{ X, y int } "a,omitempty,flow"
-               }{struct{ X, y int }{0, 1}},
-               "{}\n",
-       }, {
-               &struct {
-                       A float64 "a,omitempty"
-                       B float64 "b,omitempty"
-               }{1, 0},
-               "a: 1\n",
-       },
-
-       // Flow flag
-       {
-               &struct {
-                       A []int "a,flow"
-               }{[]int{1, 2}},
-               "a: [1, 2]\n",
-       }, {
-               &struct {
-                       A map[string]string "a,flow"
-               }{map[string]string{"b": "c", "d": "e"}},
-               "a: {b: c, d: e}\n",
-       }, {
-               &struct {
-                       A struct {
-                               B, D string
-                       } "a,flow"
-               }{struct{ B, D string }{"c", "e"}},
-               "a: {b: c, d: e}\n",
-       },
-
-       // Unexported field
-       {
-               &struct {
-                       u int
-                       A int
-               }{0, 1},
-               "a: 1\n",
-       },
-
-       // Ignored field
-       {
-               &struct {
-                       A int
-                       B int "-"
-               }{1, 2},
-               "a: 1\n",
-       },
-
-       // Struct inlining
-       {
-               &struct {
-                       A int
-                       C inlineB `yaml:",inline"`
-               }{1, inlineB{2, inlineC{3}}},
-               "a: 1\nb: 2\nc: 3\n",
-       },
-
-       // Map inlining
-       {
-               &struct {
-                       A int
-                       C map[string]int `yaml:",inline"`
-               }{1, map[string]int{"b": 2, "c": 3}},
-               "a: 1\nb: 2\nc: 3\n",
-       },
-
-       // Duration
-       {
-               map[string]time.Duration{"a": 3 * time.Second},
-               "a: 3s\n",
-       },
-
-       // Issue #24: bug in map merging logic.
-       {
-               map[string]string{"a": "<foo>"},
-               "a: <foo>\n",
-       },
-
-       // Issue #34: marshal unsupported base 60 floats quoted for compatibility
-       // with old YAML 1.1 parsers.
-       {
-               map[string]string{"a": "1:1"},
-               "a: \"1:1\"\n",
-       },
-
-       // Binary data.
-       {
-               map[string]string{"a": "\x00"},
-               "a: \"\\0\"\n",
-       }, {
-               map[string]string{"a": "\x80\x81\x82"},
-               "a: !!binary gIGC\n",
-       }, {
-               map[string]string{"a": strings.Repeat("\x90", 54)},
-               "a: !!binary |\n  " + strings.Repeat("kJCQ", 17) + "kJ\n  CQ\n",
-       },
-
-       // Ordered maps.
-       {
-               &yaml.MapSlice{{"b", 2}, {"a", 1}, {"d", 4}, {"c", 3}, {"sub", yaml.MapSlice{{"e", 5}}}},
-               "b: 2\na: 1\nd: 4\nc: 3\nsub:\n  e: 5\n",
-       },
-
-       // Encode unicode as utf-8 rather than in escaped form.
-       {
-               map[string]string{"a": "你好"},
-               "a: 你好\n",
-       },
-
-       // Support encoding.TextMarshaler.
-       {
-               map[string]net.IP{"a": net.IPv4(1, 2, 3, 4)},
-               "a: 1.2.3.4\n",
-       },
-       {
-               map[string]time.Time{"a": time.Unix(1424801979, 0)},
-               "a: 2015-02-24T18:19:39Z\n",
-       },
-
-       // Ensure strings containing ": " are quoted (reported as PR #43, but not reproducible).
-       {
-               map[string]string{"a": "b: c"},
-               "a: 'b: c'\n",
-       },
-
-       // Containing hash mark ('#') in string should be quoted
-       {
-               map[string]string{"a": "Hello #comment"},
-               "a: 'Hello #comment'\n",
-       },
-       {
-               map[string]string{"a": "你好 #comment"},
-               "a: '你好 #comment'\n",
-       },
-}
-
-func (s *S) TestMarshal(c *C) {
-       defer os.Setenv("TZ", os.Getenv("TZ"))
-       os.Setenv("TZ", "UTC")
-       for _, item := range marshalTests {
-               data, err := yaml.Marshal(item.value)
-               c.Assert(err, IsNil)
-               c.Assert(string(data), Equals, item.data)
-       }
-}
-
-var marshalErrorTests = []struct {
-       value interface{}
-       error string
-       panic string
-}{{
-       value: &struct {
-               B       int
-               inlineB ",inline"
-       }{1, inlineB{2, inlineC{3}}},
-       panic: `Duplicated key 'b' in struct struct \{ B int; .*`,
-}, {
-       value: &struct {
-               A int
-               B map[string]int ",inline"
-       }{1, map[string]int{"a": 2}},
-       panic: `Can't have key "a" in inlined map; conflicts with struct field`,
-}}
-
-func (s *S) TestMarshalErrors(c *C) {
-       for _, item := range marshalErrorTests {
-               if item.panic != "" {
-                       c.Assert(func() { yaml.Marshal(item.value) }, PanicMatches, item.panic)
-               } else {
-                       _, err := yaml.Marshal(item.value)
-                       c.Assert(err, ErrorMatches, item.error)
-               }
-       }
-}
-
-func (s *S) TestMarshalTypeCache(c *C) {
-       var data []byte
-       var err error
-       func() {
-               type T struct{ A int }
-               data, err = yaml.Marshal(&T{})
-               c.Assert(err, IsNil)
-       }()
-       func() {
-               type T struct{ B int }
-               data, err = yaml.Marshal(&T{})
-               c.Assert(err, IsNil)
-       }()
-       c.Assert(string(data), Equals, "b: 0\n")
-}
-
-var marshalerTests = []struct {
-       data  string
-       value interface{}
-}{
-       {"_:\n  hi: there\n", map[interface{}]interface{}{"hi": "there"}},
-       {"_:\n- 1\n- A\n", []interface{}{1, "A"}},
-       {"_: 10\n", 10},
-       {"_: null\n", nil},
-       {"_: BAR!\n", "BAR!"},
-}
-
-type marshalerType struct {
-       value interface{}
-}
-
-func (o marshalerType) MarshalText() ([]byte, error) {
-       panic("MarshalText called on type with MarshalYAML")
-}
-
-func (o marshalerType) MarshalYAML() (interface{}, error) {
-       return o.value, nil
-}
-
-type marshalerValue struct {
-       Field marshalerType "_"
-}
-
-func (s *S) TestMarshaler(c *C) {
-       for _, item := range marshalerTests {
-               obj := &marshalerValue{}
-               obj.Field.value = item.value
-               data, err := yaml.Marshal(obj)
-               c.Assert(err, IsNil)
-               c.Assert(string(data), Equals, string(item.data))
-       }
-}
-
-func (s *S) TestMarshalerWholeDocument(c *C) {
-       obj := &marshalerType{}
-       obj.value = map[string]string{"hello": "world!"}
-       data, err := yaml.Marshal(obj)
-       c.Assert(err, IsNil)
-       c.Assert(string(data), Equals, "hello: world!\n")
-}
-
-type failingMarshaler struct{}
-
-func (ft *failingMarshaler) MarshalYAML() (interface{}, error) {
-       return nil, failingErr
-}
-
-func (s *S) TestMarshalerError(c *C) {
-       _, err := yaml.Marshal(&failingMarshaler{})
-       c.Assert(err, Equals, failingErr)
-}
-
-func (s *S) TestSortedOutput(c *C) {
-       order := []interface{}{
-               false,
-               true,
-               1,
-               uint(1),
-               1.0,
-               1.1,
-               1.2,
-               2,
-               uint(2),
-               2.0,
-               2.1,
-               "",
-               ".1",
-               ".2",
-               ".a",
-               "1",
-               "2",
-               "a!10",
-               "a/2",
-               "a/10",
-               "a~10",
-               "ab/1",
-               "b/1",
-               "b/01",
-               "b/2",
-               "b/02",
-               "b/3",
-               "b/03",
-               "b1",
-               "b01",
-               "b3",
-               "c2.10",
-               "c10.2",
-               "d1",
-               "d12",
-               "d12a",
-       }
-       m := make(map[interface{}]int)
-       for _, k := range order {
-               m[k] = 1
-       }
-       data, err := yaml.Marshal(m)
-       c.Assert(err, IsNil)
-       out := "\n" + string(data)
-       last := 0
-       for i, k := range order {
-               repr := fmt.Sprint(k)
-               if s, ok := k.(string); ok {
-                       if _, err = strconv.ParseFloat(repr, 32); s == "" || err == nil {
-                               repr = `"` + repr + `"`
-                       }
-               }
-               index := strings.Index(out, "\n"+repr+":")
-               if index == -1 {
-                       c.Fatalf("%#v is not in the output: %#v", k, out)
-               }
-               if index < last {
-                       c.Fatalf("%#v was generated before %#v: %q", k, order[i-1], out)
-               }
-               last = index
-       }
-}
diff --git a/vendor/gopkg.in/yaml.v2/suite_test.go b/vendor/gopkg.in/yaml.v2/suite_test.go
deleted file mode 100644 (file)
index c5cf1ed..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-package yaml_test
-
-import (
-       . "gopkg.in/check.v1"
-       "testing"
-)
-
-func Test(t *testing.T) { TestingT(t) }
-
-type S struct{}
-
-var _ = Suite(&S{})