From 2bd533c38f0e6793370ceb1bc1989dc775dfb9ab Mon Sep 17 00:00:00 2001 From: john Date: Fri, 11 Nov 2016 19:58:05 -0800 Subject: [PATCH] first commit --- .gitignore | 2 + Dockerfile | 10 + Godeps/Godeps.json | 249 + Godeps/Readme | 5 + Makefile | 13 + Procfile | 1 + README.md | 39 + app.json | 14 + gost-heroku | Bin 0 -> 13193512 bytes main.go | 111 + .../clipperhouse/linkedlist/.gitignore | 2 + .../linkedlist/linkedlistwriter.go | 60 + .../clipperhouse/linkedlist/templates.go | 215 + vendor/github.com/clipperhouse/set/.gitignore | 4 + .../github.com/clipperhouse/set/setwriter.go | 59 + .../github.com/clipperhouse/set/templates.go | 176 + .../github.com/clipperhouse/slice/.gitignore | 2 + .../github.com/clipperhouse/slice/README.md | 5 + .../clipperhouse/slice/aggregate.go | 20 + vendor/github.com/clipperhouse/slice/all.go | 17 + vendor/github.com/clipperhouse/slice/any.go | 17 + .../github.com/clipperhouse/slice/average.go | 47 + vendor/github.com/clipperhouse/slice/count.go | 17 + .../github.com/clipperhouse/slice/distinct.go | 21 + .../clipperhouse/slice/distinctby.go | 21 + vendor/github.com/clipperhouse/slice/each.go | 14 + vendor/github.com/clipperhouse/slice/first.go | 19 + .../github.com/clipperhouse/slice/groupby.go | 22 + vendor/github.com/clipperhouse/slice/max.go | 53 + vendor/github.com/clipperhouse/slice/maxby.go | 24 + vendor/github.com/clipperhouse/slice/min.go | 53 + vendor/github.com/clipperhouse/slice/minby.go | 24 + .../github.com/clipperhouse/slice/select.go | 20 + .../github.com/clipperhouse/slice/shuffle.go | 19 + .../github.com/clipperhouse/slice/single.go | 29 + vendor/github.com/clipperhouse/slice/slice.go | 10 + .../clipperhouse/slice/slicewriter.go | 139 + vendor/github.com/clipperhouse/slice/sort.go | 53 + .../github.com/clipperhouse/slice/sortby.go | 61 + .../clipperhouse/slice/sortimplementation.go | 180 + .../clipperhouse/slice/sortinterface.go | 17 + vendor/github.com/clipperhouse/slice/sum.go | 34 + .../clipperhouse/slice/templates.go | 56 + vendor/github.com/clipperhouse/slice/where.go | 17 + .../clipperhouse/stringer/README.md | 29 + .../clipperhouse/stringer/stringer.go | 569 + .../clipperhouse/stringer/stringerwriter.go | 47 + .../clipperhouse/typewriter/.gitignore | 2 + .../clipperhouse/typewriter/LICENSE | 89 + .../clipperhouse/typewriter/README.md | 25 + .../clipperhouse/typewriter/_gen.go | 7 + .../github.com/clipperhouse/typewriter/app.go | 195 + .../clipperhouse/typewriter/config.go | 10 + .../clipperhouse/typewriter/constraint.go | 29 + .../clipperhouse/typewriter/importspec.go | 9 + .../clipperhouse/typewriter/importspec_set.go | 172 + .../clipperhouse/typewriter/interface.go | 19 + .../typewriter/itemtype_stringer.go | 20 + .../github.com/clipperhouse/typewriter/lex.go | 343 + .../clipperhouse/typewriter/package.go | 117 + .../clipperhouse/typewriter/parse.go | 380 + .../clipperhouse/typewriter/predicates.go | 37 + .../github.com/clipperhouse/typewriter/tag.go | 14 + .../clipperhouse/typewriter/tag_slice.go | 8 + .../clipperhouse/typewriter/template.go | 101 + .../clipperhouse/typewriter/template_slice.go | 18 + .../clipperhouse/typewriter/test.bat | 4 + .../clipperhouse/typewriter/test.sh | 4 + .../clipperhouse/typewriter/type.go | 68 + .../github.com/codahale/chacha20/.gitignore | 3 + .../github.com/codahale/chacha20/.travis.yml | 10 + vendor/github.com/codahale/chacha20/LICENSE | 21 + vendor/github.com/codahale/chacha20/README.md | 8 + .../github.com/codahale/chacha20/chacha20.go | 235 + .../github.com/codahale/chacha20/core_ref.go | 166 + .../github.com/ginuerzh/gosocks5/.gitignore | 23 + vendor/github.com/ginuerzh/gosocks5/LICENSE | 21 + vendor/github.com/ginuerzh/gosocks5/README.md | 4 + vendor/github.com/ginuerzh/gosocks5/conn.go | 171 + .../github.com/ginuerzh/gosocks5/rfc1928.txt | 507 + .../github.com/ginuerzh/gosocks5/rfc1929.txt | 115 + vendor/github.com/ginuerzh/gosocks5/socks5.go | 662 ++ vendor/github.com/ginuerzh/gost/.gitignore | 27 + vendor/github.com/ginuerzh/gost/LICENSE | 21 + vendor/github.com/ginuerzh/gost/README.md | 295 + vendor/github.com/ginuerzh/gost/README_en.md | 298 + vendor/github.com/ginuerzh/gost/chain.go | 357 + vendor/github.com/ginuerzh/gost/conn.go | 252 + vendor/github.com/ginuerzh/gost/forward.go | 472 + vendor/github.com/ginuerzh/gost/gost.go | 144 + vendor/github.com/ginuerzh/gost/http.go | 368 + vendor/github.com/ginuerzh/gost/kcp.go | 369 + vendor/github.com/ginuerzh/gost/node.go | 119 + vendor/github.com/ginuerzh/gost/quic.go | 80 + vendor/github.com/ginuerzh/gost/server.go | 233 + vendor/github.com/ginuerzh/gost/socks.go | 727 ++ vendor/github.com/ginuerzh/gost/ss.go | 278 + vendor/github.com/ginuerzh/gost/ws.go | 142 + vendor/github.com/golang/glog/LICENSE | 191 + vendor/github.com/golang/glog/README | 44 + vendor/github.com/golang/glog/glog.go | 1180 +++ vendor/github.com/golang/glog/glog_file.go | 124 + .../github.com/gorilla/websocket/.gitignore | 25 + .../github.com/gorilla/websocket/.travis.yml | 18 + vendor/github.com/gorilla/websocket/AUTHORS | 8 + vendor/github.com/gorilla/websocket/LICENSE | 22 + vendor/github.com/gorilla/websocket/README.md | 64 + vendor/github.com/gorilla/websocket/client.go | 420 + .../gorilla/websocket/compression.go | 85 + vendor/github.com/gorilla/websocket/conn.go | 986 ++ .../github.com/gorilla/websocket/conn_read.go | 18 + .../gorilla/websocket/conn_read_legacy.go | 21 + vendor/github.com/gorilla/websocket/doc.go | 173 + vendor/github.com/gorilla/websocket/json.go | 55 + vendor/github.com/gorilla/websocket/mask.go | 61 + vendor/github.com/gorilla/websocket/server.go | 292 + vendor/github.com/gorilla/websocket/util.go | 214 + .../hashicorp/golang-lru/.gitignore | 23 + vendor/github.com/hashicorp/golang-lru/2q.go | 212 + .../github.com/hashicorp/golang-lru/LICENSE | 362 + .../github.com/hashicorp/golang-lru/README.md | 25 + vendor/github.com/hashicorp/golang-lru/arc.go | 257 + vendor/github.com/hashicorp/golang-lru/lru.go | 114 + .../hashicorp/golang-lru/simplelru/lru.go | 160 + vendor/github.com/klauspost/compress/LICENSE | 27 + .../klauspost/compress/snappy/.gitignore | 16 + .../klauspost/compress/snappy/AUTHORS | 15 + .../klauspost/compress/snappy/CONTRIBUTORS | 37 + .../klauspost/compress/snappy/LICENSE | 27 + .../klauspost/compress/snappy/README | 107 + .../klauspost/compress/snappy/decode.go | 237 + .../klauspost/compress/snappy/decode_amd64.go | 14 + .../klauspost/compress/snappy/decode_amd64.s | 490 + .../klauspost/compress/snappy/decode_other.go | 101 + .../klauspost/compress/snappy/encode.go | 285 + .../klauspost/compress/snappy/encode_amd64.go | 29 + .../klauspost/compress/snappy/encode_amd64.s | 730 ++ .../klauspost/compress/snappy/encode_other.go | 238 + .../klauspost/compress/snappy/runbench.cmd | 2 + .../klauspost/compress/snappy/snappy.go | 87 + vendor/github.com/klauspost/cpuid/.gitignore | 24 + vendor/github.com/klauspost/cpuid/.travis.yml | 8 + vendor/github.com/klauspost/cpuid/LICENSE | 22 + vendor/github.com/klauspost/cpuid/README.md | 145 + vendor/github.com/klauspost/cpuid/cpuid.go | 1022 ++ vendor/github.com/klauspost/cpuid/cpuid_386.s | 42 + .../github.com/klauspost/cpuid/cpuid_amd64.s | 42 + .../klauspost/cpuid/detect_intel.go | 17 + .../github.com/klauspost/cpuid/detect_ref.go | 23 + vendor/github.com/klauspost/cpuid/generate.go | 3 + .../github.com/klauspost/cpuid/private-gen.go | 476 + vendor/github.com/klauspost/crc32/.gitignore | 24 + vendor/github.com/klauspost/crc32/.travis.yml | 13 + vendor/github.com/klauspost/crc32/LICENSE | 28 + vendor/github.com/klauspost/crc32/README.md | 87 + vendor/github.com/klauspost/crc32/crc32.go | 207 + .../github.com/klauspost/crc32/crc32_amd64.go | 230 + .../github.com/klauspost/crc32/crc32_amd64.s | 319 + .../klauspost/crc32/crc32_amd64p32.go | 43 + .../klauspost/crc32/crc32_amd64p32.s | 67 + .../klauspost/crc32/crc32_generic.go | 89 + .../klauspost/crc32/crc32_otherarch.go | 15 + .../github.com/klauspost/crc32/crc32_s390x.go | 91 + .../github.com/klauspost/crc32/crc32_s390x.s | 249 + .../klauspost/reedsolomon/.gitignore | 24 + .../klauspost/reedsolomon/.travis.yml | 28 + .../github.com/klauspost/reedsolomon/LICENSE | 23 + .../klauspost/reedsolomon/README.md | 204 + .../klauspost/reedsolomon/appveyor.yml | 20 + .../klauspost/reedsolomon/galois.go | 134 + .../klauspost/reedsolomon/galois_amd64.go | 77 + .../klauspost/reedsolomon/galois_amd64.s | 164 + .../klauspost/reedsolomon/galois_noasm.go | 19 + .../klauspost/reedsolomon/gentables.go | 132 + .../klauspost/reedsolomon/inversion_tree.go | 160 + .../klauspost/reedsolomon/matrix.go | 279 + .../klauspost/reedsolomon/reedsolomon.go | 573 + .../klauspost/reedsolomon/streaming.go | 575 + .../github.com/lucas-clemente/aes12/LICENSE | 21 + .../github.com/lucas-clemente/aes12/Readme.md | 28 + .../lucas-clemente/aes12/aes_gcm.go | 148 + .../lucas-clemente/aes12/asm_amd64.s | 285 + .../github.com/lucas-clemente/aes12/block.go | 176 + .../lucas-clemente/aes12/cipher 2.go | 56 + .../github.com/lucas-clemente/aes12/cipher.go | 68 + .../lucas-clemente/aes12/cipher_amd64.go | 79 + .../lucas-clemente/aes12/cipher_generic.go | 22 + .../github.com/lucas-clemente/aes12/const.go | 358 + vendor/github.com/lucas-clemente/aes12/gcm.go | 401 + .../lucas-clemente/aes12/gcm_amd64.s | 1277 +++ vendor/github.com/lucas-clemente/aes12/xor.go | 84 + .../github.com/lucas-clemente/fnv128a/LICENSE | 21 + .../lucas-clemente/fnv128a/README.md | 3 + .../lucas-clemente/fnv128a/fnv128a.go | 87 + .../quic-go-certificates/LICENSE | 21 + .../quic-go-certificates/README.md | 3 + .../quic-go-certificates/cert_set_2.go | 5824 +++++++++++ .../quic-go-certificates/cert_set_3.go | 5456 ++++++++++ .../quic-go-certificates/createCertSets.rb | 34 + .../lucas-clemente/quic-go/.editorconfig | 5 + .../lucas-clemente/quic-go/.gitignore | 3 + .../lucas-clemente/quic-go/.travis.yml | 34 + .../github.com/lucas-clemente/quic-go/LICENSE | 19 + .../lucas-clemente/quic-go/README.md | 64 + .../lucas-clemente/quic-go/ackhandler/_gen.go | 7 + .../quic-go/ackhandler/interfaces.go | 35 + .../quic-go/ackhandler/packet.go | 49 + .../quic-go/ackhandler/packet_linkedlist.go | 214 + .../ackhandler/received_packet_handler.go | 106 + .../ackhandler/received_packet_history.go | 135 + .../quic-go/ackhandler/sent_packet_handler.go | 350 + .../ackhandler/stop_waiting_manager.go | 42 + .../lucas-clemente/quic-go/appveyor.yml | 34 + .../lucas-clemente/quic-go/buffer_pool.go | 26 + .../lucas-clemente/quic-go/codecov.yml | 11 + .../quic-go/congestion/bandwidth.go | 26 + .../quic-go/congestion/clock.go | 18 + .../quic-go/congestion/congestion_vector.go | 12 + .../quic-go/congestion/cubic.go | 218 + .../quic-go/congestion/cubic_sender.go | 309 + .../quic-go/congestion/hybrid_slow_start.go | 111 + .../quic-go/congestion/interface.go | 35 + .../quic-go/congestion/prr_sender.go | 63 + .../quic-go/congestion/rtt_stats.go | 182 + .../quic-go/congestion/stats.go | 8 + .../lucas-clemente/quic-go/crypto/AEAD.go | 9 + .../quic-go/crypto/aesgcm_aead.go | 58 + .../quic-go/crypto/cert_cache.go | 48 + .../quic-go/crypto/cert_compression.go | 156 + .../quic-go/crypto/cert_dict.go | 128 + .../quic-go/crypto/cert_sets.go | 24 + .../quic-go/crypto/chacha20poly1305_aead.go | 53 + .../quic-go/crypto/curve_25519.go | 45 + .../quic-go/crypto/key_derivation.go | 79 + .../quic-go/crypto/key_exchange.go | 7 + .../lucas-clemente/quic-go/crypto/nonce.go | 14 + .../quic-go/crypto/null_aead.go | 53 + .../quic-go/crypto/proof_source.go | 92 + .../lucas-clemente/quic-go/crypto/signer.go | 8 + .../quic-go/crypto/source_address_token.go | 128 + .../flowcontrol/flow_control_manager.go | 188 + .../quic-go/flowcontrol/flow_controller.go | 115 + .../quic-go/flowcontrol/interface.go | 24 + .../quic-go/frames/ack_frame.go | 466 + .../quic-go/frames/ack_range.go | 9 + .../quic-go/frames/blocked_frame.go | 44 + .../quic-go/frames/connection_close_frame.go | 73 + .../lucas-clemente/quic-go/frames/frame.go | 13 + .../quic-go/frames/goaway_frame.go | 73 + .../lucas-clemente/quic-go/frames/log.go | 19 + .../quic-go/frames/ping_frame.go | 33 + .../quic-go/frames/rst_stream_frame.go | 59 + .../quic-go/frames/stop_waiting_frame.go | 92 + .../quic-go/frames/stream_frame.go | 208 + .../quic-go/frames/window_update_frame.go | 54 + .../lucas-clemente/quic-go/h2quic/request.go | 70 + .../quic-go/h2quic/response_writer.go | 81 + .../lucas-clemente/quic-go/h2quic/server.go | 335 + .../connection_parameters_manager.go | 202 + .../quic-go/handshake/crypto_setup.go | 327 + .../quic-go/handshake/ephermal_cache.go | 50 + .../quic-go/handshake/handshake_message.go | 116 + .../quic-go/handshake/server_config.go | 65 + .../lucas-clemente/quic-go/handshake/tags.go | 87 + .../quic-go/packet_number_generator.go | 69 + .../lucas-clemente/quic-go/packet_packer.go | 203 + .../lucas-clemente/quic-go/packet_unpacker.go | 109 + .../quic-go/protocol/packet_number.go | 56 + .../quic-go/protocol/protocol.go | 66 + .../quic-go/protocol/server_parameters.go | 93 + .../quic-go/protocol/version.go | 67 + .../lucas-clemente/quic-go/public_header.go | 178 + .../lucas-clemente/quic-go/public_reset.go | 24 + .../quic-go/qerr/error_codes.go | 190 + .../quic-go/qerr/errorcode_string.go | 43 + .../lucas-clemente/quic-go/qerr/quic_error.go | 45 + .../lucas-clemente/quic-go/server.go | 205 + .../lucas-clemente/quic-go/session.go | 673 ++ .../lucas-clemente/quic-go/stream.go | 267 + .../quic-go/stream_frame_sorter.go | 119 + .../lucas-clemente/quic-go/stream_framer.go | 161 + .../lucas-clemente/quic-go/streams_map.go | 219 + .../lucas-clemente/quic-go/udp_conn.go | 39 + .../lucas-clemente/quic-go/utils/_gen.go | 7 + .../quic-go/utils/byteinterval_linkedlist.go | 214 + .../lucas-clemente/quic-go/utils/float16.go | 86 + .../lucas-clemente/quic-go/utils/log.go | 70 + .../lucas-clemente/quic-go/utils/minmax.go | 123 + .../quic-go/utils/packet_interval.go | 10 + .../utils/packetinterval_linkedlist.go | 214 + .../quic-go/utils/streamframe_interval.go | 10 + .../lucas-clemente/quic-go/utils/utils.go | 147 + vendor/github.com/pkg/errors/.gitignore | 24 + vendor/github.com/pkg/errors/.travis.yml | 11 + vendor/github.com/pkg/errors/LICENSE | 23 + vendor/github.com/pkg/errors/README.md | 52 + vendor/github.com/pkg/errors/appveyor.yml | 32 + vendor/github.com/pkg/errors/errors.go | 269 + vendor/github.com/pkg/errors/stack.go | 178 + .../shadowsocks/shadowsocks-go/LICENSE | 202 + .../shadowsocks-go/shadowsocks/config.go | 136 + .../shadowsocks-go/shadowsocks/conn.go | 186 + .../shadowsocks-go/shadowsocks/encrypt.go | 257 + .../shadowsocks-go/shadowsocks/leakybuf.go | 45 + .../shadowsocks-go/shadowsocks/log.go | 24 + .../shadowsocks-go/shadowsocks/mergesort.go | 32 + .../shadowsocks-go/shadowsocks/pipe.go | 100 + .../shadowsocks-go/shadowsocks/proxy.go | 84 + .../shadowsocks-go/shadowsocks/util.go | 60 + vendor/golang.org/x/crypto/LICENSE | 27 + vendor/golang.org/x/crypto/PATENTS | 22 + vendor/golang.org/x/crypto/blowfish/block.go | 159 + vendor/golang.org/x/crypto/blowfish/cipher.go | 91 + vendor/golang.org/x/crypto/blowfish/const.go | 199 + vendor/golang.org/x/crypto/cast5/cast5.go | 526 + .../x/crypto/curve25519/const_amd64.s | 20 + .../x/crypto/curve25519/cswap_amd64.s | 88 + .../x/crypto/curve25519/curve25519.go | 841 ++ vendor/golang.org/x/crypto/curve25519/doc.go | 23 + .../x/crypto/curve25519/freeze_amd64.s | 71 + .../x/crypto/curve25519/ladderstep_amd64.s | 1375 +++ .../x/crypto/curve25519/mont25519_amd64.go | 240 + .../x/crypto/curve25519/mul_amd64.s | 167 + .../x/crypto/curve25519/square_amd64.s | 130 + vendor/golang.org/x/crypto/hkdf/hkdf.go | 75 + vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go | 77 + .../x/crypto/salsa20/salsa/hsalsa20.go | 144 + .../x/crypto/salsa20/salsa/salsa2020_amd64.s | 889 ++ .../x/crypto/salsa20/salsa/salsa208.go | 199 + .../x/crypto/salsa20/salsa/salsa20_amd64.go | 23 + .../x/crypto/salsa20/salsa/salsa20_ref.go | 234 + vendor/golang.org/x/crypto/salsa20/salsa20.go | 54 + vendor/golang.org/x/crypto/tea/cipher.go | 109 + vendor/golang.org/x/crypto/twofish/twofish.go | 342 + vendor/golang.org/x/crypto/xtea/block.go | 66 + vendor/golang.org/x/crypto/xtea/cipher.go | 82 + vendor/golang.org/x/net/LICENSE | 27 + vendor/golang.org/x/net/PATENTS | 22 + vendor/golang.org/x/net/bpf/asm.go | 41 + vendor/golang.org/x/net/bpf/constants.go | 215 + vendor/golang.org/x/net/bpf/doc.go | 82 + vendor/golang.org/x/net/bpf/instructions.go | 434 + vendor/golang.org/x/net/bpf/vm.go | 140 + .../golang.org/x/net/bpf/vm_instructions.go | 174 + vendor/golang.org/x/net/http2/.gitignore | 2 + vendor/golang.org/x/net/http2/Dockerfile | 51 + vendor/golang.org/x/net/http2/Makefile | 3 + vendor/golang.org/x/net/http2/README | 20 + .../x/net/http2/client_conn_pool.go | 256 + .../x/net/http2/configure_transport.go | 80 + vendor/golang.org/x/net/http2/errors.go | 130 + vendor/golang.org/x/net/http2/fixed_buffer.go | 60 + vendor/golang.org/x/net/http2/flow.go | 50 + vendor/golang.org/x/net/http2/frame.go | 1539 +++ vendor/golang.org/x/net/http2/go16.go | 43 + vendor/golang.org/x/net/http2/go17.go | 106 + vendor/golang.org/x/net/http2/go17_not18.go | 36 + vendor/golang.org/x/net/http2/go18.go | 11 + vendor/golang.org/x/net/http2/gotrack.go | 170 + vendor/golang.org/x/net/http2/headermap.go | 78 + vendor/golang.org/x/net/http2/hpack/encode.go | 251 + vendor/golang.org/x/net/http2/hpack/hpack.go | 542 + .../golang.org/x/net/http2/hpack/huffman.go | 212 + vendor/golang.org/x/net/http2/hpack/tables.go | 352 + vendor/golang.org/x/net/http2/http2.go | 366 + vendor/golang.org/x/net/http2/not_go16.go | 46 + vendor/golang.org/x/net/http2/not_go17.go | 87 + vendor/golang.org/x/net/http2/pipe.go | 153 + vendor/golang.org/x/net/http2/server.go | 2326 +++++ vendor/golang.org/x/net/http2/transport.go | 2063 ++++ vendor/golang.org/x/net/http2/write.go | 264 + vendor/golang.org/x/net/http2/writesched.go | 283 + vendor/golang.org/x/net/idna/idna.go | 68 + vendor/golang.org/x/net/idna/punycode.go | 200 + .../golang.org/x/net/internal/iana/const.go | 180 + vendor/golang.org/x/net/internal/iana/gen.go | 293 + .../x/net/internal/netreflect/socket.go | 37 + .../x/net/internal/netreflect/socket_posix.go | 30 + .../x/net/internal/netreflect/socket_stub.go | 11 + vendor/golang.org/x/net/ipv4/bpfopt_linux.go | 28 + vendor/golang.org/x/net/ipv4/bpfopt_stub.go | 16 + vendor/golang.org/x/net/ipv4/control.go | 70 + vendor/golang.org/x/net/ipv4/control_bsd.go | 40 + .../golang.org/x/net/ipv4/control_pktinfo.go | 37 + vendor/golang.org/x/net/ipv4/control_stub.go | 23 + vendor/golang.org/x/net/ipv4/control_unix.go | 148 + .../golang.org/x/net/ipv4/control_windows.go | 27 + vendor/golang.org/x/net/ipv4/defs_darwin.go | 77 + .../golang.org/x/net/ipv4/defs_dragonfly.go | 38 + vendor/golang.org/x/net/ipv4/defs_freebsd.go | 75 + vendor/golang.org/x/net/ipv4/defs_linux.go | 120 + vendor/golang.org/x/net/ipv4/defs_netbsd.go | 37 + vendor/golang.org/x/net/ipv4/defs_openbsd.go | 37 + vendor/golang.org/x/net/ipv4/defs_solaris.go | 84 + .../golang.org/x/net/ipv4/dgramopt_posix.go | 253 + vendor/golang.org/x/net/ipv4/dgramopt_stub.go | 106 + vendor/golang.org/x/net/ipv4/doc.go | 242 + vendor/golang.org/x/net/ipv4/endpoint.go | 189 + vendor/golang.org/x/net/ipv4/gen.go | 199 + .../golang.org/x/net/ipv4/genericopt_posix.go | 63 + .../golang.org/x/net/ipv4/genericopt_stub.go | 29 + vendor/golang.org/x/net/ipv4/header.go | 145 + vendor/golang.org/x/net/ipv4/helper.go | 59 + vendor/golang.org/x/net/ipv4/iana.go | 34 + vendor/golang.org/x/net/ipv4/icmp.go | 57 + vendor/golang.org/x/net/ipv4/icmp_linux.go | 25 + vendor/golang.org/x/net/ipv4/icmp_stub.go | 25 + vendor/golang.org/x/net/ipv4/packet.go | 97 + vendor/golang.org/x/net/ipv4/payload.go | 15 + vendor/golang.org/x/net/ipv4/payload_cmsg.go | 81 + .../golang.org/x/net/ipv4/payload_nocmsg.go | 42 + vendor/golang.org/x/net/ipv4/sockopt.go | 46 + .../golang.org/x/net/ipv4/sockopt_asmreq.go | 83 + .../x/net/ipv4/sockopt_asmreq_posix.go | 46 + .../x/net/ipv4/sockopt_asmreq_stub.go | 21 + .../x/net/ipv4/sockopt_asmreqn_stub.go | 17 + .../x/net/ipv4/sockopt_asmreqn_unix.go | 42 + vendor/golang.org/x/net/ipv4/sockopt_posix.go | 122 + .../x/net/ipv4/sockopt_ssmreq_stub.go | 17 + .../x/net/ipv4/sockopt_ssmreq_unix.go | 61 + vendor/golang.org/x/net/ipv4/sockopt_stub.go | 11 + vendor/golang.org/x/net/ipv4/sys_bsd.go | 34 + vendor/golang.org/x/net/ipv4/sys_darwin.go | 96 + vendor/golang.org/x/net/ipv4/sys_freebsd.go | 73 + vendor/golang.org/x/net/ipv4/sys_linux.go | 55 + vendor/golang.org/x/net/ipv4/sys_linux_386.s | 8 + vendor/golang.org/x/net/ipv4/sys_openbsd.go | 32 + vendor/golang.org/x/net/ipv4/sys_solaris.go | 54 + .../golang.org/x/net/ipv4/sys_solaris_amd64.s | 8 + vendor/golang.org/x/net/ipv4/sys_stub.go | 13 + vendor/golang.org/x/net/ipv4/sys_windows.go | 61 + .../x/net/ipv4/syscall_linux_386.go | 31 + .../golang.org/x/net/ipv4/syscall_solaris.go | 38 + vendor/golang.org/x/net/ipv4/syscall_unix.go | 26 + .../golang.org/x/net/ipv4/syscall_windows.go | 18 + vendor/golang.org/x/net/ipv4/zsys_darwin.go | 99 + .../golang.org/x/net/ipv4/zsys_dragonfly.go | 31 + .../golang.org/x/net/ipv4/zsys_freebsd_386.go | 93 + .../x/net/ipv4/zsys_freebsd_amd64.go | 95 + .../golang.org/x/net/ipv4/zsys_freebsd_arm.go | 95 + .../golang.org/x/net/ipv4/zsys_linux_386.go | 146 + .../golang.org/x/net/ipv4/zsys_linux_amd64.go | 148 + .../golang.org/x/net/ipv4/zsys_linux_arm.go | 146 + .../golang.org/x/net/ipv4/zsys_linux_arm64.go | 148 + .../x/net/ipv4/zsys_linux_mips64.go | 148 + .../x/net/ipv4/zsys_linux_mips64le.go | 148 + .../golang.org/x/net/ipv4/zsys_linux_ppc.go | 146 + .../golang.org/x/net/ipv4/zsys_linux_ppc64.go | 148 + .../x/net/ipv4/zsys_linux_ppc64le.go | 148 + .../golang.org/x/net/ipv4/zsys_linux_s390x.go | 148 + vendor/golang.org/x/net/ipv4/zsys_netbsd.go | 30 + vendor/golang.org/x/net/ipv4/zsys_openbsd.go | 30 + vendor/golang.org/x/net/ipv4/zsys_solaris.go | 100 + .../golang.org/x/net/lex/httplex/httplex.go | 351 + vendor/golang.org/x/tools/LICENSE | 27 + vendor/golang.org/x/tools/PATENTS | 22 + .../x/tools/go/ast/astutil/enclosing.go | 627 ++ .../x/tools/go/ast/astutil/imports.go | 449 + .../golang.org/x/tools/go/ast/astutil/util.go | 14 + .../x/tools/go/gcimporter15/bexport.go | 824 ++ .../x/tools/go/gcimporter15/bimport.go | 965 ++ .../x/tools/go/gcimporter15/exportdata.go | 93 + .../x/tools/go/gcimporter15/gcimporter.go | 1041 ++ vendor/golang.org/x/tools/imports/fastwalk.go | 172 + .../x/tools/imports/fastwalk_dirent_fileno.go | 13 + .../x/tools/imports/fastwalk_dirent_ino.go | 13 + .../x/tools/imports/fastwalk_portable.go | 29 + .../x/tools/imports/fastwalk_unix.go | 122 + vendor/golang.org/x/tools/imports/fix.go | 975 ++ vendor/golang.org/x/tools/imports/imports.go | 289 + vendor/golang.org/x/tools/imports/mkindex.go | 173 + vendor/golang.org/x/tools/imports/mkstdlib.go | 103 + .../golang.org/x/tools/imports/sortimports.go | 212 + vendor/golang.org/x/tools/imports/zstdlib.go | 9289 +++++++++++++++++ vendor/gopkg.in/xtaci/kcp-go.v2/.gitignore | 24 + vendor/gopkg.in/xtaci/kcp-go.v2/.travis.yml | 15 + vendor/gopkg.in/xtaci/kcp-go.v2/LICENSE | 22 + vendor/gopkg.in/xtaci/kcp-go.v2/README.md | 88 + vendor/gopkg.in/xtaci/kcp-go.v2/crypt.go | 301 + vendor/gopkg.in/xtaci/kcp-go.v2/donate.png | Bin 0 -> 4420 bytes vendor/gopkg.in/xtaci/kcp-go.v2/fec.go | 241 + vendor/gopkg.in/xtaci/kcp-go.v2/frame.png | Bin 0 -> 8179 bytes vendor/gopkg.in/xtaci/kcp-go.v2/kcp.go | 961 ++ vendor/gopkg.in/xtaci/kcp-go.v2/sess.go | 901 ++ vendor/gopkg.in/xtaci/kcp-go.v2/shannon.jpg | Bin 0 -> 52964 bytes vendor/gopkg.in/xtaci/kcp-go.v2/snmp.go | 62 + vendor/gopkg.in/xtaci/kcp-go.v2/xor.go | 105 + vendor/gopkg.in/xtaci/smux.v1/.gitignore | 24 + vendor/gopkg.in/xtaci/smux.v1/.travis.yml | 15 + vendor/gopkg.in/xtaci/smux.v1/LICENSE | 21 + vendor/gopkg.in/xtaci/smux.v1/README.md | 97 + vendor/gopkg.in/xtaci/smux.v1/curve.jpg | Bin 0 -> 106626 bytes vendor/gopkg.in/xtaci/smux.v1/frame.go | 60 + vendor/gopkg.in/xtaci/smux.v1/mux.go | 80 + vendor/gopkg.in/xtaci/smux.v1/mux.jpg | Bin 0 -> 6199 bytes vendor/gopkg.in/xtaci/smux.v1/session.go | 273 + vendor/gopkg.in/xtaci/smux.v1/stream.go | 153 + 497 files changed, 92035 insertions(+) create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 Godeps/Godeps.json create mode 100644 Godeps/Readme create mode 100644 Makefile create mode 100644 Procfile create mode 100644 README.md create mode 100644 app.json create mode 100755 gost-heroku create mode 100644 main.go create mode 100644 vendor/github.com/clipperhouse/linkedlist/.gitignore create mode 100644 vendor/github.com/clipperhouse/linkedlist/linkedlistwriter.go create mode 100644 vendor/github.com/clipperhouse/linkedlist/templates.go create mode 100644 vendor/github.com/clipperhouse/set/.gitignore create mode 100644 vendor/github.com/clipperhouse/set/setwriter.go create mode 100644 vendor/github.com/clipperhouse/set/templates.go create mode 100644 vendor/github.com/clipperhouse/slice/.gitignore create mode 100644 vendor/github.com/clipperhouse/slice/README.md create mode 100644 vendor/github.com/clipperhouse/slice/aggregate.go create mode 100644 vendor/github.com/clipperhouse/slice/all.go create mode 100644 vendor/github.com/clipperhouse/slice/any.go create mode 100644 vendor/github.com/clipperhouse/slice/average.go create mode 100644 vendor/github.com/clipperhouse/slice/count.go create mode 100644 vendor/github.com/clipperhouse/slice/distinct.go create mode 100644 vendor/github.com/clipperhouse/slice/distinctby.go create mode 100644 vendor/github.com/clipperhouse/slice/each.go create mode 100644 vendor/github.com/clipperhouse/slice/first.go create mode 100644 vendor/github.com/clipperhouse/slice/groupby.go create mode 100644 vendor/github.com/clipperhouse/slice/max.go create mode 100644 vendor/github.com/clipperhouse/slice/maxby.go create mode 100644 vendor/github.com/clipperhouse/slice/min.go create mode 100644 vendor/github.com/clipperhouse/slice/minby.go create mode 100644 vendor/github.com/clipperhouse/slice/select.go create mode 100644 vendor/github.com/clipperhouse/slice/shuffle.go create mode 100644 vendor/github.com/clipperhouse/slice/single.go create mode 100644 vendor/github.com/clipperhouse/slice/slice.go create mode 100644 vendor/github.com/clipperhouse/slice/slicewriter.go create mode 100644 vendor/github.com/clipperhouse/slice/sort.go create mode 100644 vendor/github.com/clipperhouse/slice/sortby.go create mode 100644 vendor/github.com/clipperhouse/slice/sortimplementation.go create mode 100644 vendor/github.com/clipperhouse/slice/sortinterface.go create mode 100644 vendor/github.com/clipperhouse/slice/sum.go create mode 100644 vendor/github.com/clipperhouse/slice/templates.go create mode 100644 vendor/github.com/clipperhouse/slice/where.go create mode 100644 vendor/github.com/clipperhouse/stringer/README.md create mode 100644 vendor/github.com/clipperhouse/stringer/stringer.go create mode 100644 vendor/github.com/clipperhouse/stringer/stringerwriter.go create mode 100644 vendor/github.com/clipperhouse/typewriter/.gitignore create mode 100644 vendor/github.com/clipperhouse/typewriter/LICENSE create mode 100644 vendor/github.com/clipperhouse/typewriter/README.md create mode 100644 vendor/github.com/clipperhouse/typewriter/_gen.go create mode 100644 vendor/github.com/clipperhouse/typewriter/app.go create mode 100644 vendor/github.com/clipperhouse/typewriter/config.go create mode 100644 vendor/github.com/clipperhouse/typewriter/constraint.go create mode 100644 vendor/github.com/clipperhouse/typewriter/importspec.go create mode 100644 vendor/github.com/clipperhouse/typewriter/importspec_set.go create mode 100644 vendor/github.com/clipperhouse/typewriter/interface.go create mode 100644 vendor/github.com/clipperhouse/typewriter/itemtype_stringer.go create mode 100644 vendor/github.com/clipperhouse/typewriter/lex.go create mode 100644 vendor/github.com/clipperhouse/typewriter/package.go create mode 100644 vendor/github.com/clipperhouse/typewriter/parse.go create mode 100644 vendor/github.com/clipperhouse/typewriter/predicates.go create mode 100644 vendor/github.com/clipperhouse/typewriter/tag.go create mode 100644 vendor/github.com/clipperhouse/typewriter/tag_slice.go create mode 100644 vendor/github.com/clipperhouse/typewriter/template.go create mode 100644 vendor/github.com/clipperhouse/typewriter/template_slice.go create mode 100644 vendor/github.com/clipperhouse/typewriter/test.bat create mode 100644 vendor/github.com/clipperhouse/typewriter/test.sh create mode 100644 vendor/github.com/clipperhouse/typewriter/type.go create mode 100644 vendor/github.com/codahale/chacha20/.gitignore create mode 100644 vendor/github.com/codahale/chacha20/.travis.yml create mode 100644 vendor/github.com/codahale/chacha20/LICENSE create mode 100644 vendor/github.com/codahale/chacha20/README.md create mode 100644 vendor/github.com/codahale/chacha20/chacha20.go create mode 100644 vendor/github.com/codahale/chacha20/core_ref.go create mode 100644 vendor/github.com/ginuerzh/gosocks5/.gitignore create mode 100644 vendor/github.com/ginuerzh/gosocks5/LICENSE create mode 100644 vendor/github.com/ginuerzh/gosocks5/README.md create mode 100644 vendor/github.com/ginuerzh/gosocks5/conn.go create mode 100644 vendor/github.com/ginuerzh/gosocks5/rfc1928.txt create mode 100644 vendor/github.com/ginuerzh/gosocks5/rfc1929.txt create mode 100644 vendor/github.com/ginuerzh/gosocks5/socks5.go create mode 100644 vendor/github.com/ginuerzh/gost/.gitignore create mode 100644 vendor/github.com/ginuerzh/gost/LICENSE create mode 100644 vendor/github.com/ginuerzh/gost/README.md create mode 100644 vendor/github.com/ginuerzh/gost/README_en.md create mode 100644 vendor/github.com/ginuerzh/gost/chain.go create mode 100644 vendor/github.com/ginuerzh/gost/conn.go create mode 100644 vendor/github.com/ginuerzh/gost/forward.go create mode 100644 vendor/github.com/ginuerzh/gost/gost.go create mode 100644 vendor/github.com/ginuerzh/gost/http.go create mode 100644 vendor/github.com/ginuerzh/gost/kcp.go create mode 100644 vendor/github.com/ginuerzh/gost/node.go create mode 100644 vendor/github.com/ginuerzh/gost/quic.go create mode 100644 vendor/github.com/ginuerzh/gost/server.go create mode 100644 vendor/github.com/ginuerzh/gost/socks.go create mode 100644 vendor/github.com/ginuerzh/gost/ss.go create mode 100644 vendor/github.com/ginuerzh/gost/ws.go create mode 100644 vendor/github.com/golang/glog/LICENSE create mode 100644 vendor/github.com/golang/glog/README create mode 100644 vendor/github.com/golang/glog/glog.go create mode 100644 vendor/github.com/golang/glog/glog_file.go create mode 100644 vendor/github.com/gorilla/websocket/.gitignore create mode 100644 vendor/github.com/gorilla/websocket/.travis.yml create mode 100644 vendor/github.com/gorilla/websocket/AUTHORS create mode 100644 vendor/github.com/gorilla/websocket/LICENSE create mode 100644 vendor/github.com/gorilla/websocket/README.md create mode 100644 vendor/github.com/gorilla/websocket/client.go create mode 100644 vendor/github.com/gorilla/websocket/compression.go create mode 100644 vendor/github.com/gorilla/websocket/conn.go create mode 100644 vendor/github.com/gorilla/websocket/conn_read.go create mode 100644 vendor/github.com/gorilla/websocket/conn_read_legacy.go create mode 100644 vendor/github.com/gorilla/websocket/doc.go create mode 100644 vendor/github.com/gorilla/websocket/json.go create mode 100644 vendor/github.com/gorilla/websocket/mask.go create mode 100644 vendor/github.com/gorilla/websocket/server.go create mode 100644 vendor/github.com/gorilla/websocket/util.go create mode 100644 vendor/github.com/hashicorp/golang-lru/.gitignore create mode 100644 vendor/github.com/hashicorp/golang-lru/2q.go create mode 100644 vendor/github.com/hashicorp/golang-lru/LICENSE create mode 100644 vendor/github.com/hashicorp/golang-lru/README.md create mode 100644 vendor/github.com/hashicorp/golang-lru/arc.go create mode 100644 vendor/github.com/hashicorp/golang-lru/lru.go create mode 100644 vendor/github.com/hashicorp/golang-lru/simplelru/lru.go create mode 100644 vendor/github.com/klauspost/compress/LICENSE create mode 100644 vendor/github.com/klauspost/compress/snappy/.gitignore create mode 100644 vendor/github.com/klauspost/compress/snappy/AUTHORS create mode 100644 vendor/github.com/klauspost/compress/snappy/CONTRIBUTORS create mode 100644 vendor/github.com/klauspost/compress/snappy/LICENSE create mode 100644 vendor/github.com/klauspost/compress/snappy/README create mode 100644 vendor/github.com/klauspost/compress/snappy/decode.go create mode 100644 vendor/github.com/klauspost/compress/snappy/decode_amd64.go create mode 100644 vendor/github.com/klauspost/compress/snappy/decode_amd64.s create mode 100644 vendor/github.com/klauspost/compress/snappy/decode_other.go create mode 100644 vendor/github.com/klauspost/compress/snappy/encode.go create mode 100644 vendor/github.com/klauspost/compress/snappy/encode_amd64.go create mode 100644 vendor/github.com/klauspost/compress/snappy/encode_amd64.s create mode 100644 vendor/github.com/klauspost/compress/snappy/encode_other.go create mode 100644 vendor/github.com/klauspost/compress/snappy/runbench.cmd create mode 100644 vendor/github.com/klauspost/compress/snappy/snappy.go create mode 100644 vendor/github.com/klauspost/cpuid/.gitignore create mode 100644 vendor/github.com/klauspost/cpuid/.travis.yml create mode 100644 vendor/github.com/klauspost/cpuid/LICENSE create mode 100644 vendor/github.com/klauspost/cpuid/README.md create mode 100644 vendor/github.com/klauspost/cpuid/cpuid.go create mode 100644 vendor/github.com/klauspost/cpuid/cpuid_386.s create mode 100644 vendor/github.com/klauspost/cpuid/cpuid_amd64.s create mode 100644 vendor/github.com/klauspost/cpuid/detect_intel.go create mode 100644 vendor/github.com/klauspost/cpuid/detect_ref.go create mode 100644 vendor/github.com/klauspost/cpuid/generate.go create mode 100644 vendor/github.com/klauspost/cpuid/private-gen.go create mode 100644 vendor/github.com/klauspost/crc32/.gitignore create mode 100644 vendor/github.com/klauspost/crc32/.travis.yml create mode 100644 vendor/github.com/klauspost/crc32/LICENSE create mode 100644 vendor/github.com/klauspost/crc32/README.md create mode 100644 vendor/github.com/klauspost/crc32/crc32.go create mode 100644 vendor/github.com/klauspost/crc32/crc32_amd64.go create mode 100644 vendor/github.com/klauspost/crc32/crc32_amd64.s create mode 100644 vendor/github.com/klauspost/crc32/crc32_amd64p32.go create mode 100644 vendor/github.com/klauspost/crc32/crc32_amd64p32.s create mode 100644 vendor/github.com/klauspost/crc32/crc32_generic.go create mode 100644 vendor/github.com/klauspost/crc32/crc32_otherarch.go create mode 100644 vendor/github.com/klauspost/crc32/crc32_s390x.go create mode 100644 vendor/github.com/klauspost/crc32/crc32_s390x.s create mode 100644 vendor/github.com/klauspost/reedsolomon/.gitignore create mode 100644 vendor/github.com/klauspost/reedsolomon/.travis.yml create mode 100644 vendor/github.com/klauspost/reedsolomon/LICENSE create mode 100644 vendor/github.com/klauspost/reedsolomon/README.md create mode 100644 vendor/github.com/klauspost/reedsolomon/appveyor.yml create mode 100644 vendor/github.com/klauspost/reedsolomon/galois.go create mode 100644 vendor/github.com/klauspost/reedsolomon/galois_amd64.go create mode 100644 vendor/github.com/klauspost/reedsolomon/galois_amd64.s create mode 100644 vendor/github.com/klauspost/reedsolomon/galois_noasm.go create mode 100644 vendor/github.com/klauspost/reedsolomon/gentables.go create mode 100644 vendor/github.com/klauspost/reedsolomon/inversion_tree.go create mode 100644 vendor/github.com/klauspost/reedsolomon/matrix.go create mode 100644 vendor/github.com/klauspost/reedsolomon/reedsolomon.go create mode 100644 vendor/github.com/klauspost/reedsolomon/streaming.go create mode 100644 vendor/github.com/lucas-clemente/aes12/LICENSE create mode 100644 vendor/github.com/lucas-clemente/aes12/Readme.md create mode 100644 vendor/github.com/lucas-clemente/aes12/aes_gcm.go create mode 100644 vendor/github.com/lucas-clemente/aes12/asm_amd64.s create mode 100644 vendor/github.com/lucas-clemente/aes12/block.go create mode 100644 vendor/github.com/lucas-clemente/aes12/cipher 2.go create mode 100644 vendor/github.com/lucas-clemente/aes12/cipher.go create mode 100644 vendor/github.com/lucas-clemente/aes12/cipher_amd64.go create mode 100644 vendor/github.com/lucas-clemente/aes12/cipher_generic.go create mode 100644 vendor/github.com/lucas-clemente/aes12/const.go create mode 100644 vendor/github.com/lucas-clemente/aes12/gcm.go create mode 100644 vendor/github.com/lucas-clemente/aes12/gcm_amd64.s create mode 100644 vendor/github.com/lucas-clemente/aes12/xor.go create mode 100644 vendor/github.com/lucas-clemente/fnv128a/LICENSE create mode 100644 vendor/github.com/lucas-clemente/fnv128a/README.md create mode 100644 vendor/github.com/lucas-clemente/fnv128a/fnv128a.go create mode 100644 vendor/github.com/lucas-clemente/quic-go-certificates/LICENSE create mode 100644 vendor/github.com/lucas-clemente/quic-go-certificates/README.md create mode 100644 vendor/github.com/lucas-clemente/quic-go-certificates/cert_set_2.go create mode 100644 vendor/github.com/lucas-clemente/quic-go-certificates/cert_set_3.go create mode 100755 vendor/github.com/lucas-clemente/quic-go-certificates/createCertSets.rb create mode 100644 vendor/github.com/lucas-clemente/quic-go/.editorconfig create mode 100644 vendor/github.com/lucas-clemente/quic-go/.gitignore create mode 100644 vendor/github.com/lucas-clemente/quic-go/.travis.yml create mode 100644 vendor/github.com/lucas-clemente/quic-go/LICENSE create mode 100644 vendor/github.com/lucas-clemente/quic-go/README.md create mode 100644 vendor/github.com/lucas-clemente/quic-go/ackhandler/_gen.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/ackhandler/interfaces.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/ackhandler/packet.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/ackhandler/packet_linkedlist.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/ackhandler/received_packet_handler.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/ackhandler/received_packet_history.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/ackhandler/sent_packet_handler.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/ackhandler/stop_waiting_manager.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/appveyor.yml create mode 100644 vendor/github.com/lucas-clemente/quic-go/buffer_pool.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/codecov.yml create mode 100644 vendor/github.com/lucas-clemente/quic-go/congestion/bandwidth.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/congestion/clock.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/congestion/congestion_vector.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/congestion/cubic.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/congestion/cubic_sender.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/congestion/hybrid_slow_start.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/congestion/interface.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/congestion/prr_sender.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/congestion/rtt_stats.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/congestion/stats.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/crypto/AEAD.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/crypto/aesgcm_aead.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/crypto/cert_cache.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/crypto/cert_compression.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/crypto/cert_dict.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/crypto/cert_sets.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/crypto/chacha20poly1305_aead.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/crypto/curve_25519.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/crypto/key_derivation.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/crypto/key_exchange.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/crypto/nonce.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/crypto/null_aead.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/crypto/proof_source.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/crypto/signer.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/crypto/source_address_token.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/flowcontrol/flow_control_manager.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/flowcontrol/flow_controller.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/flowcontrol/interface.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/frames/ack_frame.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/frames/ack_range.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/frames/blocked_frame.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/frames/connection_close_frame.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/frames/frame.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/frames/goaway_frame.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/frames/log.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/frames/ping_frame.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/frames/rst_stream_frame.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/frames/stop_waiting_frame.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/frames/stream_frame.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/frames/window_update_frame.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/h2quic/request.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/h2quic/response_writer.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/h2quic/server.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/handshake/connection_parameters_manager.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/handshake/crypto_setup.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/handshake/ephermal_cache.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/handshake/handshake_message.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/handshake/server_config.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/handshake/tags.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/packet_number_generator.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/packet_packer.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/packet_unpacker.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/protocol/packet_number.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/protocol/protocol.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/protocol/server_parameters.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/protocol/version.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/public_header.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/public_reset.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/qerr/error_codes.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/qerr/errorcode_string.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/qerr/quic_error.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/server.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/session.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/stream.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/stream_frame_sorter.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/stream_framer.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/streams_map.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/udp_conn.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/utils/_gen.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/utils/byteinterval_linkedlist.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/utils/float16.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/utils/log.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/utils/minmax.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/utils/packet_interval.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/utils/packetinterval_linkedlist.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/utils/streamframe_interval.go create mode 100644 vendor/github.com/lucas-clemente/quic-go/utils/utils.go create mode 100644 vendor/github.com/pkg/errors/.gitignore create mode 100644 vendor/github.com/pkg/errors/.travis.yml create mode 100644 vendor/github.com/pkg/errors/LICENSE create mode 100644 vendor/github.com/pkg/errors/README.md create mode 100644 vendor/github.com/pkg/errors/appveyor.yml create mode 100644 vendor/github.com/pkg/errors/errors.go create mode 100644 vendor/github.com/pkg/errors/stack.go create mode 100644 vendor/github.com/shadowsocks/shadowsocks-go/LICENSE create mode 100644 vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/config.go create mode 100644 vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/conn.go create mode 100644 vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/encrypt.go create mode 100644 vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/leakybuf.go create mode 100644 vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/log.go create mode 100644 vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/mergesort.go create mode 100644 vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/pipe.go create mode 100644 vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/proxy.go create mode 100644 vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/util.go create mode 100644 vendor/golang.org/x/crypto/LICENSE create mode 100644 vendor/golang.org/x/crypto/PATENTS create mode 100644 vendor/golang.org/x/crypto/blowfish/block.go create mode 100644 vendor/golang.org/x/crypto/blowfish/cipher.go create mode 100644 vendor/golang.org/x/crypto/blowfish/const.go create mode 100644 vendor/golang.org/x/crypto/cast5/cast5.go create mode 100644 vendor/golang.org/x/crypto/curve25519/const_amd64.s create mode 100644 vendor/golang.org/x/crypto/curve25519/cswap_amd64.s create mode 100644 vendor/golang.org/x/crypto/curve25519/curve25519.go create mode 100644 vendor/golang.org/x/crypto/curve25519/doc.go create mode 100644 vendor/golang.org/x/crypto/curve25519/freeze_amd64.s create mode 100644 vendor/golang.org/x/crypto/curve25519/ladderstep_amd64.s create mode 100644 vendor/golang.org/x/crypto/curve25519/mont25519_amd64.go create mode 100644 vendor/golang.org/x/crypto/curve25519/mul_amd64.s create mode 100644 vendor/golang.org/x/crypto/curve25519/square_amd64.s create mode 100644 vendor/golang.org/x/crypto/hkdf/hkdf.go create mode 100644 vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go create mode 100644 vendor/golang.org/x/crypto/salsa20/salsa/hsalsa20.go create mode 100644 vendor/golang.org/x/crypto/salsa20/salsa/salsa2020_amd64.s create mode 100644 vendor/golang.org/x/crypto/salsa20/salsa/salsa208.go create mode 100644 vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.go create mode 100644 vendor/golang.org/x/crypto/salsa20/salsa/salsa20_ref.go create mode 100644 vendor/golang.org/x/crypto/salsa20/salsa20.go create mode 100644 vendor/golang.org/x/crypto/tea/cipher.go create mode 100644 vendor/golang.org/x/crypto/twofish/twofish.go create mode 100644 vendor/golang.org/x/crypto/xtea/block.go create mode 100644 vendor/golang.org/x/crypto/xtea/cipher.go create mode 100644 vendor/golang.org/x/net/LICENSE create mode 100644 vendor/golang.org/x/net/PATENTS create mode 100644 vendor/golang.org/x/net/bpf/asm.go create mode 100644 vendor/golang.org/x/net/bpf/constants.go create mode 100644 vendor/golang.org/x/net/bpf/doc.go create mode 100644 vendor/golang.org/x/net/bpf/instructions.go create mode 100644 vendor/golang.org/x/net/bpf/vm.go create mode 100644 vendor/golang.org/x/net/bpf/vm_instructions.go create mode 100644 vendor/golang.org/x/net/http2/.gitignore create mode 100644 vendor/golang.org/x/net/http2/Dockerfile create mode 100644 vendor/golang.org/x/net/http2/Makefile create mode 100644 vendor/golang.org/x/net/http2/README create mode 100644 vendor/golang.org/x/net/http2/client_conn_pool.go create mode 100644 vendor/golang.org/x/net/http2/configure_transport.go create mode 100644 vendor/golang.org/x/net/http2/errors.go create mode 100644 vendor/golang.org/x/net/http2/fixed_buffer.go create mode 100644 vendor/golang.org/x/net/http2/flow.go create mode 100644 vendor/golang.org/x/net/http2/frame.go create mode 100644 vendor/golang.org/x/net/http2/go16.go create mode 100644 vendor/golang.org/x/net/http2/go17.go create mode 100644 vendor/golang.org/x/net/http2/go17_not18.go create mode 100644 vendor/golang.org/x/net/http2/go18.go create mode 100644 vendor/golang.org/x/net/http2/gotrack.go create mode 100644 vendor/golang.org/x/net/http2/headermap.go create mode 100644 vendor/golang.org/x/net/http2/hpack/encode.go create mode 100644 vendor/golang.org/x/net/http2/hpack/hpack.go create mode 100644 vendor/golang.org/x/net/http2/hpack/huffman.go create mode 100644 vendor/golang.org/x/net/http2/hpack/tables.go create mode 100644 vendor/golang.org/x/net/http2/http2.go create mode 100644 vendor/golang.org/x/net/http2/not_go16.go create mode 100644 vendor/golang.org/x/net/http2/not_go17.go create mode 100644 vendor/golang.org/x/net/http2/pipe.go create mode 100644 vendor/golang.org/x/net/http2/server.go create mode 100644 vendor/golang.org/x/net/http2/transport.go create mode 100644 vendor/golang.org/x/net/http2/write.go create mode 100644 vendor/golang.org/x/net/http2/writesched.go create mode 100644 vendor/golang.org/x/net/idna/idna.go create mode 100644 vendor/golang.org/x/net/idna/punycode.go create mode 100644 vendor/golang.org/x/net/internal/iana/const.go create mode 100644 vendor/golang.org/x/net/internal/iana/gen.go create mode 100644 vendor/golang.org/x/net/internal/netreflect/socket.go create mode 100644 vendor/golang.org/x/net/internal/netreflect/socket_posix.go create mode 100644 vendor/golang.org/x/net/internal/netreflect/socket_stub.go create mode 100644 vendor/golang.org/x/net/ipv4/bpfopt_linux.go create mode 100644 vendor/golang.org/x/net/ipv4/bpfopt_stub.go create mode 100644 vendor/golang.org/x/net/ipv4/control.go create mode 100644 vendor/golang.org/x/net/ipv4/control_bsd.go create mode 100644 vendor/golang.org/x/net/ipv4/control_pktinfo.go create mode 100644 vendor/golang.org/x/net/ipv4/control_stub.go create mode 100644 vendor/golang.org/x/net/ipv4/control_unix.go create mode 100644 vendor/golang.org/x/net/ipv4/control_windows.go create mode 100644 vendor/golang.org/x/net/ipv4/defs_darwin.go create mode 100644 vendor/golang.org/x/net/ipv4/defs_dragonfly.go create mode 100644 vendor/golang.org/x/net/ipv4/defs_freebsd.go create mode 100644 vendor/golang.org/x/net/ipv4/defs_linux.go create mode 100644 vendor/golang.org/x/net/ipv4/defs_netbsd.go create mode 100644 vendor/golang.org/x/net/ipv4/defs_openbsd.go create mode 100644 vendor/golang.org/x/net/ipv4/defs_solaris.go create mode 100644 vendor/golang.org/x/net/ipv4/dgramopt_posix.go create mode 100644 vendor/golang.org/x/net/ipv4/dgramopt_stub.go create mode 100644 vendor/golang.org/x/net/ipv4/doc.go create mode 100644 vendor/golang.org/x/net/ipv4/endpoint.go create mode 100644 vendor/golang.org/x/net/ipv4/gen.go create mode 100644 vendor/golang.org/x/net/ipv4/genericopt_posix.go create mode 100644 vendor/golang.org/x/net/ipv4/genericopt_stub.go create mode 100644 vendor/golang.org/x/net/ipv4/header.go create mode 100644 vendor/golang.org/x/net/ipv4/helper.go create mode 100644 vendor/golang.org/x/net/ipv4/iana.go create mode 100644 vendor/golang.org/x/net/ipv4/icmp.go create mode 100644 vendor/golang.org/x/net/ipv4/icmp_linux.go create mode 100644 vendor/golang.org/x/net/ipv4/icmp_stub.go create mode 100644 vendor/golang.org/x/net/ipv4/packet.go create mode 100644 vendor/golang.org/x/net/ipv4/payload.go create mode 100644 vendor/golang.org/x/net/ipv4/payload_cmsg.go create mode 100644 vendor/golang.org/x/net/ipv4/payload_nocmsg.go create mode 100644 vendor/golang.org/x/net/ipv4/sockopt.go create mode 100644 vendor/golang.org/x/net/ipv4/sockopt_asmreq.go create mode 100644 vendor/golang.org/x/net/ipv4/sockopt_asmreq_posix.go create mode 100644 vendor/golang.org/x/net/ipv4/sockopt_asmreq_stub.go create mode 100644 vendor/golang.org/x/net/ipv4/sockopt_asmreqn_stub.go create mode 100644 vendor/golang.org/x/net/ipv4/sockopt_asmreqn_unix.go create mode 100644 vendor/golang.org/x/net/ipv4/sockopt_posix.go create mode 100644 vendor/golang.org/x/net/ipv4/sockopt_ssmreq_stub.go create mode 100644 vendor/golang.org/x/net/ipv4/sockopt_ssmreq_unix.go create mode 100644 vendor/golang.org/x/net/ipv4/sockopt_stub.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_bsd.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_darwin.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_freebsd.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_linux.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_linux_386.s create mode 100644 vendor/golang.org/x/net/ipv4/sys_openbsd.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_solaris.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_solaris_amd64.s create mode 100644 vendor/golang.org/x/net/ipv4/sys_stub.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_windows.go create mode 100644 vendor/golang.org/x/net/ipv4/syscall_linux_386.go create mode 100644 vendor/golang.org/x/net/ipv4/syscall_solaris.go create mode 100644 vendor/golang.org/x/net/ipv4/syscall_unix.go create mode 100644 vendor/golang.org/x/net/ipv4/syscall_windows.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_darwin.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_dragonfly.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_386.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_arm.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_netbsd.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_openbsd.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_solaris.go create mode 100644 vendor/golang.org/x/net/lex/httplex/httplex.go create mode 100644 vendor/golang.org/x/tools/LICENSE create mode 100644 vendor/golang.org/x/tools/PATENTS create mode 100644 vendor/golang.org/x/tools/go/ast/astutil/enclosing.go create mode 100644 vendor/golang.org/x/tools/go/ast/astutil/imports.go create mode 100644 vendor/golang.org/x/tools/go/ast/astutil/util.go create mode 100644 vendor/golang.org/x/tools/go/gcimporter15/bexport.go create mode 100644 vendor/golang.org/x/tools/go/gcimporter15/bimport.go create mode 100644 vendor/golang.org/x/tools/go/gcimporter15/exportdata.go create mode 100644 vendor/golang.org/x/tools/go/gcimporter15/gcimporter.go create mode 100644 vendor/golang.org/x/tools/imports/fastwalk.go create mode 100644 vendor/golang.org/x/tools/imports/fastwalk_dirent_fileno.go create mode 100644 vendor/golang.org/x/tools/imports/fastwalk_dirent_ino.go create mode 100644 vendor/golang.org/x/tools/imports/fastwalk_portable.go create mode 100644 vendor/golang.org/x/tools/imports/fastwalk_unix.go create mode 100644 vendor/golang.org/x/tools/imports/fix.go create mode 100644 vendor/golang.org/x/tools/imports/imports.go create mode 100644 vendor/golang.org/x/tools/imports/mkindex.go create mode 100644 vendor/golang.org/x/tools/imports/mkstdlib.go create mode 100644 vendor/golang.org/x/tools/imports/sortimports.go create mode 100644 vendor/golang.org/x/tools/imports/zstdlib.go create mode 100644 vendor/gopkg.in/xtaci/kcp-go.v2/.gitignore create mode 100644 vendor/gopkg.in/xtaci/kcp-go.v2/.travis.yml create mode 100644 vendor/gopkg.in/xtaci/kcp-go.v2/LICENSE create mode 100644 vendor/gopkg.in/xtaci/kcp-go.v2/README.md create mode 100644 vendor/gopkg.in/xtaci/kcp-go.v2/crypt.go create mode 100644 vendor/gopkg.in/xtaci/kcp-go.v2/donate.png create mode 100644 vendor/gopkg.in/xtaci/kcp-go.v2/fec.go create mode 100644 vendor/gopkg.in/xtaci/kcp-go.v2/frame.png create mode 100644 vendor/gopkg.in/xtaci/kcp-go.v2/kcp.go create mode 100644 vendor/gopkg.in/xtaci/kcp-go.v2/sess.go create mode 100644 vendor/gopkg.in/xtaci/kcp-go.v2/shannon.jpg create mode 100644 vendor/gopkg.in/xtaci/kcp-go.v2/snmp.go create mode 100644 vendor/gopkg.in/xtaci/kcp-go.v2/xor.go create mode 100644 vendor/gopkg.in/xtaci/smux.v1/.gitignore create mode 100644 vendor/gopkg.in/xtaci/smux.v1/.travis.yml create mode 100644 vendor/gopkg.in/xtaci/smux.v1/LICENSE create mode 100644 vendor/gopkg.in/xtaci/smux.v1/README.md create mode 100644 vendor/gopkg.in/xtaci/smux.v1/curve.jpg create mode 100644 vendor/gopkg.in/xtaci/smux.v1/frame.go create mode 100644 vendor/gopkg.in/xtaci/smux.v1/mux.go create mode 100644 vendor/gopkg.in/xtaci/smux.v1/mux.jpg create mode 100644 vendor/gopkg.in/xtaci/smux.v1/session.go create mode 100644 vendor/gopkg.in/xtaci/smux.v1/stream.go diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7bbf2f6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.env +.docker_build/ \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..8a94227 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,10 @@ +FROM alpine:latest + +MAINTAINER Edward Muller + +WORKDIR "/opt" + +ADD .docker_build/gost-heroku /opt/bin/gost-heroku + +CMD ["/opt/bin/gost-heroku"] + diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json new file mode 100644 index 0000000..67ff203 --- /dev/null +++ b/Godeps/Godeps.json @@ -0,0 +1,249 @@ +{ + "ImportPath": "github.com/sorryforhateyou/gost-heroku", + "GoVersion": "go1.6", + "GodepVersion": "v74", + "Deps": [ + { + "ImportPath": "github.com/clipperhouse/linkedlist", + "Rev": "bf5ab6f9daf9ae25214b7cf666233cde3274357a" + }, + { + "ImportPath": "github.com/clipperhouse/set", + "Rev": "c425a638bbb3034eaa3dfe8c2f0f4bc29129b7fc" + }, + { + "ImportPath": "github.com/clipperhouse/slice", + "Rev": "3ae82e00044e045370183e264317ec785b8f0da3" + }, + { + "ImportPath": "github.com/clipperhouse/stringer", + "Rev": "a8382ce6af9a129cab27e7595ef44a4c2b817360" + }, + { + "ImportPath": "github.com/clipperhouse/typewriter", + "Rev": "30db35657b7cdb37c23e6b8ffc81fedd6c0c10e0" + }, + { + "ImportPath": "github.com/codahale/chacha20", + "Rev": "ec07b4f69a3f70b1dd2a8ad77230deb1ba5d6953" + }, + { + "ImportPath": "github.com/ginuerzh/gosocks5", + "Comment": "0.1-6-gbc931b3", + "Rev": "bc931b305d59cdf3d068eacff3c8d81536d3a39f" + }, + { + "ImportPath": "github.com/ginuerzh/gost", + "Comment": "v2.3-dev-10-ge22229b", + "Rev": "e22229b5b1fc2229a8661c35f4d2d8b8889bf8a8" + }, + { + "ImportPath": "github.com/golang/glog", + "Rev": "23def4e6c14b4da8ac2ed8007337bc5eb5007998" + }, + { + "ImportPath": "github.com/gorilla/websocket", + "Comment": "v1.0.0-32-g0b847f2", + "Rev": "0b847f2facc24ec406130a05bb1bb72d41993b05" + }, + { + "ImportPath": "github.com/hashicorp/golang-lru", + "Rev": "0a025b7e63adc15a622f29b0b2c4c3848243bbf6" + }, + { + "ImportPath": "github.com/hashicorp/golang-lru/simplelru", + "Rev": "0a025b7e63adc15a622f29b0b2c4c3848243bbf6" + }, + { + "ImportPath": "github.com/klauspost/compress/snappy", + "Comment": "v1.1-2-ge3b7981", + "Rev": "e3b7981a12dd3cab49afa1d3a50e715846f23732" + }, + { + "ImportPath": "github.com/klauspost/cpuid", + "Comment": "v1.0", + "Rev": "09cded8978dc9e80714c4d85b0322337b0a1e5e0" + }, + { + "ImportPath": "github.com/klauspost/crc32", + "Comment": "v1.0-2-gcb6bfca", + "Rev": "cb6bfca970f6908083f26f39a79009d608efd5cd" + }, + { + "ImportPath": "github.com/klauspost/reedsolomon", + "Comment": "1.2-14-gd0a56f7", + "Rev": "d0a56f72c0d40a6cdde43a1575ad9686a0098b70" + }, + { + "ImportPath": "github.com/lucas-clemente/aes12", + "Rev": "8ee5b5610baca43b60ecfad586b3c40d92a96e0c" + }, + { + "ImportPath": "github.com/lucas-clemente/fnv128a", + "Rev": "393af48d391698c6ae4219566bfbdfef67269997" + }, + { + "ImportPath": "github.com/lucas-clemente/quic-go", + "Comment": "v0.4-122-g0d6356d", + "Rev": "0d6356d9d80226bbd18634d461cdc1d1a81c08bf" + }, + { + "ImportPath": "github.com/lucas-clemente/quic-go-certificates", + "Rev": "d2f86524cced5186554df90d92529757d22c1cb6" + }, + { + "ImportPath": "github.com/lucas-clemente/quic-go/ackhandler", + "Comment": "v0.4-122-g0d6356d", + "Rev": "0d6356d9d80226bbd18634d461cdc1d1a81c08bf" + }, + { + "ImportPath": "github.com/lucas-clemente/quic-go/congestion", + "Comment": "v0.4-122-g0d6356d", + "Rev": "0d6356d9d80226bbd18634d461cdc1d1a81c08bf" + }, + { + "ImportPath": "github.com/lucas-clemente/quic-go/crypto", + "Comment": "v0.4-122-g0d6356d", + "Rev": "0d6356d9d80226bbd18634d461cdc1d1a81c08bf" + }, + { + "ImportPath": "github.com/lucas-clemente/quic-go/flowcontrol", + "Comment": "v0.4-122-g0d6356d", + "Rev": "0d6356d9d80226bbd18634d461cdc1d1a81c08bf" + }, + { + "ImportPath": "github.com/lucas-clemente/quic-go/frames", + "Comment": "v0.4-122-g0d6356d", + "Rev": "0d6356d9d80226bbd18634d461cdc1d1a81c08bf" + }, + { + "ImportPath": "github.com/lucas-clemente/quic-go/h2quic", + "Comment": "v0.4-122-g0d6356d", + "Rev": "0d6356d9d80226bbd18634d461cdc1d1a81c08bf" + }, + { + "ImportPath": "github.com/lucas-clemente/quic-go/handshake", + "Comment": "v0.4-122-g0d6356d", + "Rev": "0d6356d9d80226bbd18634d461cdc1d1a81c08bf" + }, + { + "ImportPath": "github.com/lucas-clemente/quic-go/protocol", + "Comment": "v0.4-122-g0d6356d", + "Rev": "0d6356d9d80226bbd18634d461cdc1d1a81c08bf" + }, + { + "ImportPath": "github.com/lucas-clemente/quic-go/qerr", + "Comment": "v0.4-122-g0d6356d", + "Rev": "0d6356d9d80226bbd18634d461cdc1d1a81c08bf" + }, + { + "ImportPath": "github.com/lucas-clemente/quic-go/utils", + "Comment": "v0.4-122-g0d6356d", + "Rev": "0d6356d9d80226bbd18634d461cdc1d1a81c08bf" + }, + { + "ImportPath": "github.com/pkg/errors", + "Comment": "v0.8.0-2-g248dadf", + "Rev": "248dadf4e9068a0b3e79f02ed0a610d935de5302" + }, + { + "ImportPath": "github.com/shadowsocks/shadowsocks-go/shadowsocks", + "Comment": "1.1.5-4-g5c9897e", + "Rev": "5c9897ecdf623f385ccb8c2c78e32c5256961b41" + }, + { + "ImportPath": "golang.org/x/crypto/blowfish", + "Rev": "3c0d69f1777220f1a1d2ec373cb94a282f03eb42" + }, + { + "ImportPath": "golang.org/x/crypto/cast5", + "Rev": "3c0d69f1777220f1a1d2ec373cb94a282f03eb42" + }, + { + "ImportPath": "golang.org/x/crypto/curve25519", + "Rev": "3c0d69f1777220f1a1d2ec373cb94a282f03eb42" + }, + { + "ImportPath": "golang.org/x/crypto/hkdf", + "Rev": "3c0d69f1777220f1a1d2ec373cb94a282f03eb42" + }, + { + "ImportPath": "golang.org/x/crypto/pbkdf2", + "Rev": "3c0d69f1777220f1a1d2ec373cb94a282f03eb42" + }, + { + "ImportPath": "golang.org/x/crypto/salsa20", + "Rev": "3c0d69f1777220f1a1d2ec373cb94a282f03eb42" + }, + { + "ImportPath": "golang.org/x/crypto/salsa20/salsa", + "Rev": "3c0d69f1777220f1a1d2ec373cb94a282f03eb42" + }, + { + "ImportPath": "golang.org/x/crypto/tea", + "Rev": "3c0d69f1777220f1a1d2ec373cb94a282f03eb42" + }, + { + "ImportPath": "golang.org/x/crypto/twofish", + "Rev": "3c0d69f1777220f1a1d2ec373cb94a282f03eb42" + }, + { + "ImportPath": "golang.org/x/crypto/xtea", + "Rev": "3c0d69f1777220f1a1d2ec373cb94a282f03eb42" + }, + { + "ImportPath": "golang.org/x/net/bpf", + "Rev": "f11d7120b19ae21da5715f3e47621736de1b1da9" + }, + { + "ImportPath": "golang.org/x/net/http2", + "Rev": "f11d7120b19ae21da5715f3e47621736de1b1da9" + }, + { + "ImportPath": "golang.org/x/net/http2/hpack", + "Rev": "f11d7120b19ae21da5715f3e47621736de1b1da9" + }, + { + "ImportPath": "golang.org/x/net/idna", + "Rev": "f11d7120b19ae21da5715f3e47621736de1b1da9" + }, + { + "ImportPath": "golang.org/x/net/internal/iana", + "Rev": "f11d7120b19ae21da5715f3e47621736de1b1da9" + }, + { + "ImportPath": "golang.org/x/net/internal/netreflect", + "Rev": "f11d7120b19ae21da5715f3e47621736de1b1da9" + }, + { + "ImportPath": "golang.org/x/net/ipv4", + "Rev": "f11d7120b19ae21da5715f3e47621736de1b1da9" + }, + { + "ImportPath": "golang.org/x/net/lex/httplex", + "Rev": "f11d7120b19ae21da5715f3e47621736de1b1da9" + }, + { + "ImportPath": "golang.org/x/tools/go/ast/astutil", + "Rev": "5e2ae75eb72a62985e086eed33a5982a929e4fff" + }, + { + "ImportPath": "golang.org/x/tools/go/gcimporter15", + "Rev": "5e2ae75eb72a62985e086eed33a5982a929e4fff" + }, + { + "ImportPath": "golang.org/x/tools/imports", + "Rev": "5e2ae75eb72a62985e086eed33a5982a929e4fff" + }, + { + "ImportPath": "gopkg.in/xtaci/kcp-go.v2", + "Comment": "v2.0.2", + "Rev": "6610d527ea5c4890cf593796ff8ff1f10486bb68" + }, + { + "ImportPath": "gopkg.in/xtaci/smux.v1", + "Comment": "v1.0.3", + "Rev": "6250093011e71f1c87986c575cad1184c717c0ef" + } + ] +} diff --git a/Godeps/Readme b/Godeps/Readme new file mode 100644 index 0000000..4cdaa53 --- /dev/null +++ b/Godeps/Readme @@ -0,0 +1,5 @@ +This directory tree is generated automatically by godep. + +Please do not edit. + +See https://github.com/tools/godep for more information. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..4a3b50d --- /dev/null +++ b/Makefile @@ -0,0 +1,13 @@ +GO_BUILD_ENV := GOOS=linux GOARCH=amd64 +DOCKER_BUILD=$(shell pwd)/.docker_build +DOCKER_CMD=$(DOCKER_BUILD)/gost-heroku + +$(DOCKER_CMD): clean + mkdir -p $(DOCKER_BUILD) + $(GO_BUILD_ENV) go build -v -o $(DOCKER_CMD) . + +clean: + rm -rf $(DOCKER_BUILD) + +heroku: $(DOCKER_CMD) + heroku container:push web diff --git a/Procfile b/Procfile new file mode 100644 index 0000000..5a814e4 --- /dev/null +++ b/Procfile @@ -0,0 +1 @@ +web: gost-heroku -L=ss+ws://aes-128-cfb:1234567890@:80 diff --git a/README.md b/README.md new file mode 100644 index 0000000..a968e93 --- /dev/null +++ b/README.md @@ -0,0 +1,39 @@ + +# go-getting-started + +A barebones Go app, which can easily be deployed to Heroku. + +This application supports the [Getting Started with Go on Heroku](https://devcenter.heroku.com/articles/getting-started-with-go) article - check it out. + +## Running Locally + +Make sure you have [Go](http://golang.org/doc/install) and the [Heroku Toolbelt](https://toolbelt.heroku.com/) installed. + +```sh +$ go get -u github.com/heroku/go-getting-started +$ cd $GOPATH/src/github.com/heroku/go-getting-started +$ heroku local +``` + +Your app should now be running on [localhost:5000](http://localhost:5000/). + +You should also install [Godep](https://github.com/tools/godep) if you are going to add any dependencies to the sample app. + +## Deploying to Heroku + +```sh +$ heroku create +$ git push heroku master +$ heroku open +``` + +or + +[![Deploy](https://www.herokucdn.com/deploy/button.png)](https://heroku.com/deploy) + + +## Documentation + +For more information about using Go on Heroku, see these Dev Center articles: + +- [Go on Heroku](https://devcenter.heroku.com/categories/go) diff --git a/app.json b/app.json new file mode 100644 index 0000000..01823cb --- /dev/null +++ b/app.json @@ -0,0 +1,14 @@ +{ + "name": "Start on Heroku: Go", + "description": "Go Getting Started Example App", + "keywords": [ + "getting-started", + "go", + "sample", + "example" + ], + "image": "heroku/go:1.6", + "mount_dir": "src/github.com/heroku/go-getting-started", + "website": "http://github.com/heroku/go-getting-started", + "repository": "http://github.com/heroku/go-getting-started" +} diff --git a/gost-heroku b/gost-heroku new file mode 100755 index 0000000000000000000000000000000000000000..a21e1435cd8272a49d025c8a270ad58945c96823 GIT binary patch literal 13193512 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%0D+Xg2xwg%;qgWuU93 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

yih6M-WyYNyD0=)Ya|@@_y`^*z9!4`MF^ ze$RwWI^&j*e+gfEIm9*=Nr|>O=e3tV9Rv)0{XyT8Pd@yc&-AqZ_$X7!L&5bQqI=r$ z6Tn;^!?1pd1F(8aN0(qjXilAqR{Z+9i@`YuA){;4tG%mE4(zd6eK=YDei(${b+(pv zO5=B@4Ejmd`I7V?4UjXS2JY|6J)`bne5JC^N#VKp0K52?iing1Q%XoXAMfYej_%)i zDJ4X%9+46qloGjwO_NcU3e;mKfKV$zD0WB~?Z6jTIvTT!xKL|NJ>$c2;#E1x`4sjX zAYQmC=*j{M4-){{4?8y^y9ZZ+u*ma9(h4Z_)^3H?QXSXAo$vbzrS9@Hf_&tRjMwC=>4z)>yt0} z)5zWri$jQ@_7D%0st3}$u-$W8?oho5=_pGpJKfc*pF1=@_NKhty>A=zgb|pomoJtQ z?a_0}alb1)1=e9NwoOmD6`b@ePSLAv((}V(+o$Jtjd!BS2JYieS6@vgdTHkjB{I9% zKHEEEUw0(iJKn862DsY(AzOd78;{k#vP!iN()|MvT8x`*tzTcU7T3VGm@$ukV1lJ- zp)7}B#al1&qPwWcsq5F>h?>hkz^Oj;^JINq&3tKpz`7~rWwCeVrswnYydP~M3V*Yl z@?yCHkd%n;6YmXY3@mCM>8E{J`{D&~jG>pYS|4h&Zt^Uxw)q!+#x5;y@Pg+@Q|Vze z{OYSejJi*RF3wsX$Io~2&@Z>{M5MCLS;(CxVJ2bmJjR)XZeC>?b-IlezY&HE&+EEsKQZLp7G6S z=$*m7km+U8zOeRRt|Ac}S`C`j-u#D#vr)&jSxjeYg>+F~p3$gNrZPq5IMvsWH)h{U zdKt54@Fyky3LihvANiB=(X5>#M9bBrvs`lOT7-J|t@|dm5}))e3D+@PN!n#4+^crG zy2#1trP}|GAm?jta;E72j`%NRjJkV|j5=hgdgTwlhrJ-}JUG)|cPEKp3z4I`W~mak zzr*%|_~~Ej;oFbeun(hBqP_9$!T#XD?`JOvtk*s3Pb1r2kb9XqzR5a=E95Voh%S3! z!_k0r6eP&$dh+1ue;u+fg^!o+-iEwPMN|L1zf0P=3i_;Lvm2MZ1lhiyyciAJF@KTq zd&+LUa+93Dq|QcU3_r!cl%Bt&&PJr2Ju;M#QQy~|UA1dQ4mhN6M*Xz;%eO~D8ocwD zcE^9rRUmW8`3&p<%wDzC>RD}bOPE)_#$hgv!8CbZ9Taan_JDn-w#Obg_ff6t+qVaP z>jy+#_J9W-qah`p%?9Ux6;JiUS^s@JRaau1A)c+h_1$d``K=V>uY7#>YmmJPrMrI#VG){4 zpQ*hnCE6az98GZ^F@Vy^CZBni&N zWG3jsyP9}<2rj_l!G5w%37D`>i2z#DdB>cIrY6JbPk~A3F*U=KaNIwXI(vE$vr0C1-n7`=x@6Nu`YRzBZ|MML`yZD#VrzED1pVBKn?&{kP zPB%vzuJKc?ffY_VqL$QC5}irD`hb|L^TTY3C{oNZW7!v3)=Luf2FO(Xt}9^}#me$tAPu zz5A)$+LkAbe{fv+jDO;vGbtvlc7$m}JJUf#abRc1}5d!x*yWa8pAE$G@Sj z@y~ZtgZiQffMuM&r2B8^FKAm|`r2!c-`7!lt&9L=)|V;vnhnnX%3eFZ)J0*aY7V~J zyZ>PLA;36;y_Pm!b=oodAAD~|>Hprr+e3dFoc|U5-$G;s)q@-xyMy%q919s8razU# zj>!K#9i@L6q3N*v+u;1K=zlySOa5E>4=>yf`seN#{SW?YN9q4wukE3~4bK0H{%;NW z@9F>fftl&w@$&@V`SvXMp)pB^JJvowx2B6ec0-@V(VeVoELgFU8SS$ls6dpt1%o_J z^rk`PIY0LVg4V`)hugItBmSgkaT5U5Gz>KN1WnJkTy|n|zI8)}5;EUPouL66?EjV$ zzP3@iXGZ2*=N$k%edk;CBwAYhL8OY{V_DAGTjXAE93aZRo%t3BkQR54KCyE74_^oY z#`gS&9haB8R;A0!xUCf;8d_c$Ljiet`pYzV$={qoUJSzcd&!IVVyA4Q;>aK`sWTBQ z1t1KtiWZXjF&P%EDomXw%=HyZD#yUJzfB){QOyuY5K#acQ#<_qgameoL>^D zcKNd|=%_uv6mb*IXp38|ahyneq;_Ww(wEmzZc%q)gJrjOnCxV)~Pgn%?h72V#3u>v9Xj_Fif~v>=y}>@;@&6wg@Y7Cm zyZ>3+MXwdBMeywZXX4qG4GX|jh{&dm5IS_qDi>Ua zIR712$1p!^hg8S@LOZ6!StoL@hwlmHU~8|>(6U;zJ6QZEp4dZE`scI^^o@AwYsDv> z#Z-sZe~%MF``!aTdsxRO?SWF>_@v)}AX1$8B%^*MQjA+a=ilEuPU+Cp1q5d`&Mi`r z3QC7CBPmw;)PnwIEqnm-iMR`Q9=o-@8Gy~Bx%R_D9A&IIK_Iae{6IJqx1`z3l0$ZK z4gw7Vi5fDFVfTqsEyii}>g8X$KO3`?q&?(2{>=F{H+}u@@h>_${!HFAqrTwyBkg1S z8E%h1Sls>?XZWB^XZ#uJBq^;!vFX+|{W{1tC1vnIN7mN_*n`jGDTB}R9DMGxsFNb! z9a{epKgy*)X6$WP|G`A~zhD26cCMP*QMqwkE3;IP?eEC?kNV*of6XIN)+np z*n65E9}CN^+S(BeSh*t@Kkmu6K)erBxS#S#8g;IY*CjC->XCaxWzslv7vRA|&oanQ z+IYN$c(fVsJLlWZ>HX_ubYiN?_U*f#gve#zrRZye{X4lI*ak=M2W}#8SYvnZ2iAeO z)_!2XR%-7Do-LVqkQLyy_5-ZnTju0F{rza70{ zFao^t+tJIDeaN*@_{EN1F81=3a}1S$XDjiMr6xV}>QMj3gf^fqZOJJ1=>KTozwiIj z&Q*0u5_EV!Z;k=YH!C_|R}3d| zp^H)f4nNw*Qq1)nOJUSYj9&6+3Zwq7Qt6yf`T!%|-dAhLBisLM4>b{lGp&;|UCuRg zH3M*B2o84{jCgr@w~r2SJEhI|-|i%{;!nws*ENwGv2e1>t2o((wocMy+(iqZSdM{& zg2ID1^4ezGfc&%Tc`TmQKf8dN$Kc84W~zOZrave)JD@*Cf6`I?aU4O)JihHG++I^< zoyTZ{qxHvP;VPvA`U9X-AifiTM-)y<)gSXEGtaxw`a@2Iw6{x`aa>MS3V(u3t#~Ro z2RxS#dmR0t6>^{v&M&KUPHZ%t6C2Cf;qp~COa~k<=rJT+7)N4@6T8HU$*jh`$EkXz zKX^I6uCNBJGKi_F*?NI+;{|R|Im*u3F3~A*lxF?z_))*+f`apGrh58k`h0-vk!|zS zcRny*b(Ei15}M5XEb{Wx21oPrV*+Q72Nplq3BVRVt$BkSo4!;s(_Yc@7l)s-q(mw| z<&=eFjP3Ou<>zsT7om88i|Bhv&N`D42%i%s?#EgB=iB70TxFJ(C?!if$-P+U#ygR- zA-KR2uiKo}eU^4Ft`~}~ImC>9vyRltqtxb`jRQZ(uEm1l1BF!qFe`Qe(l3CsV1F}q zS+HM|ft%nr1tQniZaL-BtE;Q`s{M7$)t8o58?~FSj$C?Wb(i_M*S~u+WKUlTVmut{ zemmY{d)$V_F7*VD8D?Q_Mfq}wW2~zyJTzYf}DeX0&M)(4BFj|T2=VC0Gh%VHr0!g8qb}~ z<_7Y`sN)pD)~y%ed46u`qMN}YTAlNAkK=PoOH#GUQ|kR;1T$zha$!4$xh$jpag5Z0 za0q~4Yz)J*O!TXY(UE&^J#>~hRLbBGl2PRq#pVL`E7UeP zWc}(|7Yr_z_xSn2)>RgqvYvsqG}0D8rUhU{*o=kC0nNB1H1YEx@kf~h=2!0o$_^X? zZ^}vlaxvmzV=I>ebmxI^k&M@{|N}J2p7aY?O{VIEeBVsbb^7 zEXZx_WI#WmoH>y7WT0^_2AZqKnelxAk0k@~i^Hn+?rp7<&Q5s*3xJV={gx$o>4ZaJ z)Ngf__@AdD6OJ;O&Yvq*U<}H^)#fAi36|na_0j<=BRiuqe3SpoXzg@7WI2Li)tG>N zA8=}a?>(qO*hQN|6Ul~uqFc1C#A{eyE3@Ubc5@BNNXid(3jIKm@&H5=MW9UZNm7PG z%jpz6NJ>7&5Sl6SarG9Wy0Fb1-0Rva( z0YH*+D{OfyB}b=JfCg4dP^TP>8JLxlr&E4Tri66LTm%GJdBQs7PR!-4lp38f3VstS zC6Fbp_W^=-O17l@>PpFxl!frQ*?EGJ@>h5U?UX!8xdcvLJ0&D3N5bJ`r-UUX0AD{+ z8gn;>*^7nCN%=YU!n_IB=~#%`E9hC55p_Keelq6Fc zN=zk6K6%qoy6S3;5;8Zd5K+o_e--h840`c_3iaZ{1UEi-Cq7Je@WG3PPx34AkxXg$ zFqQcDTH@Alm3@{MpLMDDK$m;*VS*bUyb~WLJNV$m!YBEa_(-NSe3(jneDbE_ zv-Jv%4>C8aSsUBJCw@(yS-b5^$fQ05)Pw+vt=@Z`Ik5ad7|6D^3xra!WP%$@yc0_% zJ6Phy!ZP`lSW2ceESX9yee$MbxtE0{GB>Mte*u;U*)~&hJZT%h6W#cQQ}JVh8$Y}g zKPEf);l;u)`IY!drZoJRO8k8CrsMa=%QY8~xmkVxpB=&PW;cE{srWI$jUV2LACn#Y z@M7VY{7U>JQyP9uC4N46)A2iRjK&X{n^o5x!Vj0YB;^w$hPM|o!Hpl@i64_4{P1Go zm;6fnBvTrGOeKCkdDHQmSf%kp=4N&1&pX1u>})rF*{S#;!GmA6#t+F!{IVVVoUei( zGo|ClCWv2p-gNx#xy-^Z8~6>~utWIexbe$L#SaM{{BksYNKWFH>G-h;;+LK`9lwp2Soq}u zzo#&0Z~yp^9dhFrO2rQe9{fTYKO`sd3pw~XUj;vAO2>~)5Wn=i>Gi*G8^3G^Kl`i351D-MLlc5uTHbX0?y0o#%f|S(X2!kQ8s=-jDJ{p-+}QV;Buq{0(q(UAGe$a%3dAuac6mgd6cbA8!c4m`qd2Ur+Ruyv zSalqNMUI$WQ^a>J%z%!?dbPDN7wU*>mQkEF@*eVYO~+cMk(KEu*$kG+N@L6AoTrn) zU#|0v21j3*hL0``Z$#QC6Dzfw^a@e$m1ge+X6&~zlu+ZY__Y<}FSI|Q9eeF)wVAcR zjH6VHrEd%;LD1`St|r*5EHj141zEK_u@+CbUy{lX-0J*{|OWm{jgd zzagfEU^4cJfLU&TSN;+B5;sw(`~E0|b--8!1eQ3&dKRkPS%a&fT^?-(S*x{%S~Ku3 zPh+9FdN*UHGWwZw{v9&2mhyYB*_gSmWewU35xycK3c(tR!URheY_UwCPQ`^Y%z&kJ z1O%YPkPWJ|$WK794Bs2iE(|3QU*=vuv-^jMJfQj6h4~3AH@R|bFm42_qm6gwda+{|Wkc;EnQI@~=e% zWf}jh;Gb{!XD$Ey!auDWh8Saq1Z((H7QB-`X9uVAXGCxoe=Z3&@#o6mQvO7OEBP}y zxNh_ilx~v0i{$Sz`MW~?ej|U^%HLn)Z>!n5$efetvcVV|z&|q&f67DnQ&BA6eQLtT z$}s*^mE+I2O8l8LPV)NHKKdkqhJP2y^D_CnLjHauf7i<2U*vDAnOnn-)Vj#1=N@fI zY?8knD!v2xe|!gpeq6#opYYFD{4VD?FNGnk!G08T?sf*|a1j{Yqesecc; zRR8w9O8@q+*1rR%$Zv-PAV8*qC-@7d;BQ4S|NdUQ2ZEH94s&M*@^3GBf9$^PRZY&$ zugP!0F7oRk7etOCT18={r@K0*T@=yEmJFxIa{QGva@yUVU z_mADH1rRih`q|P5bS~7llz*TJ+@06%#y@_D(z`VybC4OJbu75i*+1#pY}PM|K;1Rv zjec^S5!n;j%ynkgB8(gN4!969w4&R>mIX*H3$E13Hy^{~k^s`5V_i+CCc9bmqpjqQ zIWUmTPr0*S(b_HdP5a>;dH955xTVSUkGs5Spn@!^pxQ1s*?x%nR{(euB^N^V7W^Av zn>#HxpTrt`z_^Pe0Gi;kHgxl34p1C$XbL1QOR8wscNi_Z$idmjlb;xjJP6Np-)%sM zo%}e>dt1a{r4kHMl;A#A6e!B_Ac#Zng2v4ZOTtt5+G}bCe)}lKE2B;ar6Oq*h};?f z4E#HnyuE;bMpLLnvL+Pc>89e*Mr02DfvFLQMPws5G#CFMDl6U@ZG4K+e?Ba$1^Cwz zMj&o$AP||37)e-6TY?j?%@e5Yg*>>bbpie%h-SbCkyVl*Ubf#RtoQG~2}#CXQX+iq zzJa6l#pQN_f+8TLh-lmDH6F)5ta^7Dr zv$5M3z&>DZ{489vZPP@I#(xOcv~HT%9YIBA?~Ue%tEJKSWB~Btj~KDz5y11|4=ta$ z=uIkvi7*&22-9RON?<6&I14Tqb%$i3{sAAB#+H^DWz8^)K=L<`hNlyZhI^5*X5iJ2 z2-#0ZGUzD;2N}^TKAmGCS`#8uzX=)f?PSvb42;>{uU&P?lgXGfLaAT>ZIvan&LFcq zHNS?hHn~cpik4g0xFv#71y6Ys4n-j!h^nz29{27=7v!M~{%y*e_zC_7C*bUv&Su=; zjq%3N_>j(%v%Q8jH++b4=sSMdpXfjIPWw8*@%VQ>~@3tY#CDxBV7@ zSjIz5#$9vJ9|q}kEp-6xd}`Is5==6B0VQUddv^M69MW&0s3&YX}oV5|1|q;H0t(8HsJkFNRJu)j(AriMerLM zp9~5?zLpG)M>>mqy{zSn0V}ZYAYU{B(VsE3T|9ArNN@JU!$;GqEBk-!y?bC()zvqg z5CZXff`Ue2AnK^WTSIGWqDF&)oamtODQZBpsTT}_8fyZm2ooj=8Hd4GsZxs?t+rTG zrIun;tO)@_MJwVBw6(EXJ=39r(pnTH@9($PKIhDY1nv7g-~0XZpqYIx`?A*BYpuQ3 z+LvSXOpBc|t@wqSgMmCEYp?uh8<)Lv9eq!yeY`Arfe%Aj%bHz0Emods%I!AghM00U zt=9*&+or{4XHF}Av!=s+^LX+#6dyP{Ph0#db_&}2x%;*`xeadz&pwOLWMTnMY*OBr zu?)%N0%b+GnVpYn{}HP>?aSgft@R7-RvOdAZp^y`pGH-o~iD(hQ`X^G0EoHIIE&#|sE^j-F_fZm>*lp|zmiiO&Og(Ko z>fem|cX;(*kXnBcb3REf@c$Y84t;YwMv4%If`UW=*wD?9_CAmA^Aq$Rz4y_76HjZ= zcJeOQ%r2}GE`EW-Qq4hf_RM?RvHv009{tIukJl8HMc*mQ+));JfBQ7sx*nryrTK%m z5Gwx5+#^^db4zISmYRXcpHtR_^}yu2(f^KY%Pfl)(IB*p#(A}2Q|%y-A~%UaVf7~J z*UT@K5o@>Ev=hP2S~^l7Mg9S#rNUOaGcMPxG3>wEV+

iM6| z&abMz>S=bn3*$Kq1uM^cZ|=Pny5`=qTFkvJ)Hj|33nkKf z3-rqcyS@PW4JOzA@7@1W;(xi||D`Tgi`*L^QV$O)%aP+>XFT)DA*?L%NL{6-MT9qnhQnMSfSvZ@c_%l;3Xo-Hr%CU-ga~^>ukchV&Z7joJlQ%N~KRQb=Y;wjt#3aSllLC3qj#2t$nii#_^X>CRPRlS9EQ z9D}Rd2i+bT*#k}pffGQsZ%Wv4Bf}(XXk;^!Nh4dBOdYv`$yFoUnamuykx9+SZYFa_ zZU>ntG2euc6d8~)1erlHX%wrUKXnwVpMMoZ0m;l!tbTqC*dEDTFnizN6B-3ZVc82P ztXV78diSh$5|AODX}C-h$(!m!5c1xKD1(e1Fz7>B3{e*G0OA-Mgr{FZC_@y=*q~{+ z-7Ufyf^e$IY{$ibKOK`;*|}g2v(3b}r{me9yC53f<_U+BwvUj}%9a{Lp5X-KB9Jq* z4U&f!c1b4IXwAxQL%AMK7^NrxDGv$mBb(UhzJ5T3d2Qg+K60i^>FDsL?dM?|#fe0pex;aVNsRIP>h zU>oGG;S9XgZ~JRq1a*x2#YgJV8JiQ(tm%1Kh>l1$S#In=A{ zEiW(eGxbk&>o0hoUDCUW>FpUW-g}yvspI@$E;enNhMpYXS3`Z2U~?~}(_^D}hlJ4)@9VVs2LqI%rOgQTUXZrs65c%{{G5=;Jx%mTb|_g@K0%<#APqy1*f*bak9Pk_)LJ2Cz(cYl%%wRiqF=J z1zj!B3bnp!RyxN3Nm2`dBs8vUCG=mCTqR92 zS@OmM=l}d%>5XbMQ`qS|(1~X5Go0NA{8r-_?e7ZhZwa2EzgtL5)LUsswPn!Kv@Brd zIv2gomM0OwMZvISuh-sFT{<(EA6_jxATw|ny#GBI9;bnx&rwYZsz_JmJ6GSz`bZ>d zI<hih49yIq8<;95n!IqySScdr6~wg1CV;vbF-s!~5<`f9=F;zOJ2TGrzVSXTlor z#FN4kY5n(qPtQkA`=6!fuv@+k&)3XX0RDUQEV=3H+L`h7?KuB#?}MI*7dPu>!aQ0Y zbzAA1D4%kBDcK;OsrA&d;7+`n2Dc^4YB&+9P9+GOMoEbWc7EqPWQR~%1?*eslCI3m zqsCwJT=cP*w?(H9d~Wxjo>>~5p3^mU|5=m1o%`JO_cnD#@%`kku@$HndUI^0q~OXT zjK9&Q1sP-hfsZ>|^@|ArDuf;x2fcfh98>US#sX_kN`N~xve zfwx*JwFHn8A__>jk?s?iaHHe|OwK9qk?T3SP-Q8%RTB0p5>EI4w}ua@(7>uZ59R$* zP`>954`ordY4{HKM)*3>4$V$HIoR7wmty**M`XR5&RbJmB-_>nZc332A zpmJ*)hAcN}1=HAA1PGj*5YiC7B!(kGtc8@TP;5xq==QSF9byU&oERTEAOusP9k_*} zZ-%1v!jGZoBH=@(!gsO$<)B51){7j4qU|<{Eaju(4o?)6wJ8d^e?LVUuE4$qJGN4} zIB(u%wm+i_A?0Z%WM#*w0u~(y7M6icKkEzm5Z+V(hLa z_s+3FNbQ#;LG71CLFt#ewd}x7eCQ$%Zn|^V(_i8vI8NwUu-jnI97?fY(Em%d{||%; zM*oYrLmiP4+W%571h!J3#7Rd;^-Z;TGKXnwEKG3W2)GGl1;P=(#fwnv!o0p%Vj~(b zEJ2XT3f(4MkJJWB{i@H0L@OV5^ca9cHc_VeXY`c z6e8`s`k-`P-CFj0C(LIq@o=U-C2TY7X|T;ktWWmsCGg7%<(D_I07TtZcB68G(#B|9 zfX`kPjgISXxfW~Gm$+Q#s&7*zix$IYM~F;5Wf$0EU?rntq!6Q$Lo_|iE z_5a3r5a-AfLl3~}jIj&&X5`C+UKJyH-Ff$Rw!)m~xk_F^Yf|ldgF*kTT+weUZ7)eH z@xT*Z#!SGV$3sG4dcaiRg)?xJdMs#fnNf68iQ+P~0z{?bM)*A*nAU$q&yHk8a283F zd_$hqrplG3wpOhO1gs`Pq9npXcysg#tOj8nXqlz*+?0T*i7-GYg!R#38N%o)YP2@m zCI5CZ4n@r_{={fs14Q(6(Y`H`%@ef`uq(nSt#RZ|*Qzn~LNE8%u8;&uP8vg_?b4{L z@?Dwcri_)wvXV#-ZL}NMDD21Ov?5?Xz7nAQh`!-4Uu4Hzld39**GdR{wi(w=Xe3}v>)I>v zq{uX#edRo3h1LYfhj{K*HTxWuumW$9#a%Cu9 zTExu@;-xu%JX#ShN;cs|p8w)^?hE<8i;B`r2*`cj^8-0(jQkzMejm>`fyv;@KhGx` zqxOjJ_W=g2Y)>!%CPSPkSavT76dIgR+hu=S@odLRb)VaamCG3Ph@?kkkkN zSF<C`HQ20^r3&_5$|zA&XWVcoG&{JXPtEQ(JBfq*lu|Xi z5XRe8Xf1q^S}}g&Y3JUGh|E_oH-5thT^#~Dtax8lyEZ4-lKP%qN~r|{iGMwl$kDW` zVJnwQD<0|)q!q%7Mx(Zw8*s5vEvOEC(u+b;iBZgvU76N`0|*=(9+5T;H1!Q3b+Uv} zQ7<5r%KL)Qt32CU@aORq&otKM4(0B#B??aSrHgS>Ya{SULFoa7omaq9$^ z9mUl7|9~9@Vekc{#&tc((6|wV`)9}hS@Mf_hw!_x9qNq@Z@dePBceLg}I>ytEdJs(o6V4)gVT<$-+V2TXaCPlrvr9_LFo?i+LlGQR?baR$|nR zX(FW;rGH)BBbBs$^Ge!HR;gsYxsggX?!A&lCQ1pluL26dW-9K`k}|Y2LaiFgcD)-?1@5&MRY9e&Dj z9S=0U?Ty!8Mg8&m!ucuDf+AI&7?$#ZaE9~x2aIW$FtlxS1UR7EhO$%`>b^+MS`Bv5K>FKo(+eGlPZGVA_Ck zAV&7@Yh9xRD?denNj!_jQe-XGOUDCS@9=OtA_cbw6eLEu&a;0t!I|W9(TwDs&O5Cj z9oK{FkpIo#KgNYW&?o$p-V*pT_ke$Q&DX(yf)D=>oBY06hk^?KuJ_X6AD#|Bn#8;w zFSWg(=>?1!F?2M1Bi2I`s+~24VkBw9)xCT z2f$RSu%quf`CDjqDWxFNI@rRhio58k>}1s|q-u>5EtPA*i%!F-@1#QC znX3@qMMd0YFnB>Rcsm7ynWCtXyUWF*P^xvciHn8ta{$6}dGBKJZeLimOO|?t9$2>V z-os*v@mSRLQH*NXJH(>q?KCX%6^rLtfr~{S{UD@>bmse5M@fAz)V3oH#DN^Z=!403a2Bv;(Fl(QE6>vf#_WYq!ozKEw?d^!QuQw+=ff6>rid2Wk)0V%w_-&#pPCg zW{}LOJ7iZ+@;$`Se~B;N@QD4f(Tv2gCj&p`giXj$luA zVSHcWp2uDdIyl=N25QIQO2>Ns`uN4`gOzxtL)IJ!1w>B3M65}|pa{U$UWUHkr{q%f zm9cWWRB;B0F6PG_vv2{UOE(_@JY7G4n+)fPw>1!$w?`mwm_)x(!%IJMXYvpqq=TL7 zOy4ghG$(QZeDeu`$N_E&ctaJyP_&THg&F)-Dy+3kLep4+4JON#Ct`dqF;h^l(n_u1 zoMT+N7~eucMqy5gJO7YH;u@TDzI>HTgzqc!r`(R489spaG6vDGH1MzsX@ThJ*^T9K_J-Hdk%x%3mYb0l(ZmJ$Xg@KPnVJmr&b zUBDMjVDAB8?1#XnSE>X;(9prq zE>IZwWeJ|s%`LjJ)PefANxLJ*KE4-_E0fT*gRvlO-d&X-8)R$^Lr6n|@abS)N;9w!!KKgyYJ_9)N%TQD1LpIt zDe}ekYSErqe^N@>u=#_&rw|jv3vtkX6FWb4S2Gh>bATkaRIbeumpnoLU}p^$yV)^# zlkkxM3?zjxpxQ~SHiT-qMgGKrjj=xLtUDZAe!JSUvhXPje7~_h zlNY~8VX+i_Ixg6z%5=>@R9?4rJ==iH3plW2HsYS+h&#=)%xHs(B7&Jj|HKf>meAzE ztRZ%T-rbQccjjFK7q>xi-t^97p;{%Kk*Z@%-D2?2jE@JNeCixzK$Ly@AkXJy)Dijv z%8DU&#KglT4_!@Zzn<}QuoGTqzj}@9wBeicAv}W4??(OnN25i07}`=gv2HEVq$hgT zit*AOF7Jt+EwEt`TOfkkq<5V$ue+Yyay!bX2$jQXu_w@QGHlSt-u{<38pSFKg)Ub8 zbG#LEqm@^2e8#2s#L}<@Ls5dONx{D&G4sB|FCO*0Y!|PyBG*Z|5yx4phKF~ZR13lG zw0kz##huo|^Y{ujB6Q6Bmnlruq{AFQe&bqqRi3*v1D_Hh(6nP(gcxiv#f-~y;%gPh zd@fuouww-@SdXL)*Np;w^u9|!s01_&C60?Zq!(#7DxfRv;KcwdXxR*B?oC8gTwV#4 znAl}IYi}p`MeNri8QDf~5K|qogT%l`L?RdQS;yZ7@*9lt6B~!Kf#dOIlpNOH+Y@V( zXQFQW;5F8h1R6&uV7i<{0E^5fVE)X*A`{)x;4R7=+1W2SU87iZnme-ujGZ&&a3SL! zVyqW{(1=Uk(chT7)Ra1S3T+ng!?GM0DU_m$Ps1!F_zKQ>Y=+ovv(Rm7p!VNw&SgK9 zfh;T8;ry3eI?rk{PG1a8OvJcGcB3VTHf*#}`k%G&`BG^kBMCG1bTCLcy7+L8OX;db zG_jEZ@f*}kp$sKzv2WU}SrE_UaoYI?J3o|Qybi;X&TsC;C^AB#s=mTY(|0D`Vb+uF zBq`&8Q#(vQgJ*N_2>tlYR`xzw-zA~P_$FnGYf<3b$zl|-8n_w-jO}b% zH3V-ls!&A%D(VM}1x-?2eK5?FOoE71Z)QE5mY#9DF?x!zj&Wk%6|AL#+JcLsI-d6h zObk1I`bhN^tpfsKZlMbXvKrX0)16UG_lrC>V(3ktIc5s9n;Kb zpz%^kMHjoOR_1z5ASo5=4ZrUX>v-yPhmYFd@o8$3xRUtUJi&*q;6(rq{^ATKnTcE` z1CIt2`sGxo_9rUmiEVTluW|2|;w}_FyU=$^w+`OblPJSu#6HF_?~HpOMgDp+Uw&vG zPJw-xOZ8$LIc)Pw$3V+U&Q7_zKR7f^QW)yp(xNB zkOhj^0ItEefs@U3Ubv+4vIUgaiL5mm*iT-3_hi-@%l@t;f$uQ^vxh-YY?wjK7~^DR zA0h?h5FB~9?Y0v*rCKGMspf*MV->*UeTnzg9433-dT_>{=AHXG$J=k9 zVx(d~>%gp~tl(88f1oz_Oyu!zpe9vy=>T(K%LQ^l-@1$6VAAL!jd02IOBb-)f6Uy* zoSY*A9fGbfDUdIWSK*Se%vX!x4;;C8U_{2{$PUIPo0Umf5*%DrYIvIT6w-H;WurG! zEegfQ#9z6s0kW6lFQTX(sD^G)@@}lINO^II`$FgnF&_%@Ij_Y)6C%DaZQtg1IIOmaBL`4 z4rUZ2tUl0=zHO}s`}Jq( zKmVug$=sfdg#ENv)_;39puJMnk5yy}=nAq2{nv6AKRm(U2Km561yW(AN@XVC4(uq} zblJVh(|qENzT;dhaIXgLrNq6}dG1c|#2j#kOYwAi|4+kX(~N^T+b=vP{=bE%{OjPk zuX(TZxy&EW3fTkD930u8w84VlMO+kwOTKjpH9`PSq_6PGgg4P85*fkp1WegZv-2U+|cV52&o(4Na+{ymF#j0oqhDHc>knn(0gg zK?9rKn~)(?jR$^tv+wWk_<`~FssGMo*_1s8^VSg@u^>zwtWayG0NU}YNad8K6T2@@n_{)L+v-VZ4YTFO&mob$7UniQNc+}Ve7htIH3>@sbC?r+&O?hp z2Yy_;fBBR3ha%Gm!2sluc6`R3q~7ujY#XvKH1503d8oGk^@raBKZd~k*yMT@1r$CE zdMWaG=5515(W|IcU>}6QD}`XoB3Ogb4HDSdU`2TJRayLm5khO8j{Qfw=a1H^q&@m$ zJNhp>@~@ug#~r&z*(f!d>t8R?~yX83FdF6{94hB>j?uHZ-%ZLZ=zLp9R zBMz`)+>TNT?pa3#V=DYDwQ~=MJjP41gRujV4(o4`qLN(2E!ZW2zMoq zw-5sG1ihC+HX*LRXGZYgznjH2mg#N-wB15N6en*Bf^NnKs1J${fERdH zj@}sxuZui_uzh`c!O;%u5~k4plGl@gV<<(r-QYZm zGab0`NQt~eSrNn*?*e!!8)|2iMYl6{vG6{^F#6@P(d)~iuPSFxjPH+;xK(y>kh3cR z8#%iiX<76IYH6$fa+E8>$+Bg#!HLu)HxhIiehlhmU0r$$LWwBlAwwv3d|B7pY+z9a z1ycNpwQ!fz{09uhg>0B1TU-~}@ugwniup*;y04YdAuK2$=|b?Y^GPQHAR|Wzt5`_i z5Wgo7LZ#i34Q59u`f$*Zo2!DQA+Y#%xe@OS5j5P8X^ zn+mS-;v~BHA)50N30M+bA*Hx-2HVc$TG$-R8RUkZ1F9ft2{y*BWoGvbBNMnG@dY6# zdD0=E3JprGqi*;)C}XW!CYm6;tH=1ODB{>1=)Z(gNl|@Co~bdYs?8cQ@irHPw0|3g9I084v7V$whZx zr>V3MHC5|+euKdk{?)yNXr++V*I4IMV|8`pNSnHzxU6{nH&ii^9-NORb6*@M&=Fb< zCe@|0vD^x22%+`pSCB~L-6XmonS&812P3cyBN%|Nnh*F^OQBXX0M(n#R@-e6%sZuI zd$|hjT-=p)wI4vJyZG5^Q0Nm(zn7{_cQG>?iS1gaK-C9xMWkM!CZP0EL*<)vyEJXI zSM)`$EK>n=bsK`yf(k}iN!w-d885xXWmxegwdfK#SNwn(M8i20dpM|(g{MXDJjSLY zE<$(f9khe0+On=S)GJsfB?>%}QB<*7X|Pg3C$>8U zWFWq153Gndi*A&3BeM{}iN&wpmKEY&X;+cxk~zhY^Sgr8*x#yXY0tSElMLq?mKDat zCq8;!3z=avWQI*y8bZ9GVt_bAnJA4$(BIL4=h{n~&YG$+(I(jH6xVnJ$|7sP30%Q- z0iXr{Dklg-5C_E=3X15nC+URb5>Zv99G5|9vL|(tC@Au;C@4`D<^~#V;V%+ASdosSZo|p|~iN#sJg4yZZHBS^(hAjMm z5<8!|EHm+QC@S3D#$-^Uib`y{BCj0a-uF zDvM%HWG7Sxz7KpRoA{~y@6YWhPpL-ObeFKET3uz)ogsK9nIGFdFW4|Rq)2vZ5y;AD zOi{C{4_VNyDsx8&bJ%x0E<9-TEB(&JbSWnmZ?P6Gl2=O%&mzF>$|+e7Jd1Hza+pE2 z4;skkEi=FYP4+ei0MZ2JqP6fSmUo42^qY5=~K7 zgqV1oPi3e4KbNkJAvdy#Iok(B!r&_n^%r>@%?f*W1W&Lylh32CfO8_dGp+a|!aEQE zc?^Akc~ZIjlz=qL<>!o+x0pds7}WLXQ~I7l1NSJ zhOqEAl9YXiKvE|D6S@yxD%UUk>!zFS_=p0mU66T(Eq3vac?A^JufZTu3~$g!Z-+e^ zvS=_Y-ZdNXHz4oU0(bUv#4qRyCo<_p?zlyajk%K8Q3S+bJfaK1HO?j5shP<#=q)8X z-4HwhT-tvWufis^yAnKb+j&SU{Fx-*#NHY6PGUHe0+KJqdP%H7LP5o2N1?vP{>-!E`7@_JdVX-0x12#?5Q$CU1V)>G@56@sX>Wjal{nCs0gTi5rnP z8*dg8MQ??p{V+(99#4yV^KE}1yme;2%{U_v80tu@oWg&EcD=BrtI!oWzJVh_v7g5} zRO~m>8Dcns5`s_yh60Qs#(`rv0zyePrIa?CT6Kie$!m^UE0i9KZ#R>E=vLFW$@e(n zcMo7tE{zW}wiNUdA!(Mg6UiZ@sbxt^FxK-$|w39J7HOJ3az&mX{%5bV0E)q^4mtNyfA% zA{@Bxy&2s-%#Ew~@xVA>_u?tVFd5M0R0$@Y(gHv%#8F6jrtKzGKv%1m8@r)UqY^(x zK|8t&Lnw?+`u^|jj|X7p?daGX6y-G)kX(a(99*;8#0*t~4k4L`Q3`$}Z9_5NOa}Oy z*{Gu|iqAZ>XCs1xD9(9$QpgM`ad26$lR|X))dT_&y9Bhn0bb_=;xPB`brKu_3yhl2 z8^Z3{K&m~#!t^>f;thjZ@H(-mMQ-NO7E-I1ZmUi1X_GhNb*g7bMycS4wqD-I2GCZs zK#j2>m{FuvY>GrcaBKz13N=+liK|8#az!^cE@>)R09I`n zy{}}I&h{BBCGMAr4E@IaY(WpvBZFos8+KPV)^CyaFUZG}0%EkC_a@Y~Q?6&ic3l5# zYN)M6o*RQC9ytCIKh&nhsnP+cmN%g`Erb!vNj|NiHUdTkLBJSlBVfKwxLX<#r8tul zK7EJUgkDi~o}~q`7^#Mo&aOCO@el%{9@B_G|AZ}YiZ(4kHtUu>gJZ(9C{r^fEx&7k zU{E&>f(eXm2PU(QMLi6PVa1qZItztuRh32b+V>N^W+4>EftL6Xqh zWL$+}`}Q5ht^{d0NL5L?$i$#9BSS5E7G&aF)uIPTB?tA^qErC|C`wKU15|3RB38vA zbQ8LR%BBzxCPraIQ|S_wrCNyi;%X1BVu^icnEVi7f(Kf8t!M%pDutZDph>6d^c;U~f zZR(Zs0=XPv<;5d-ZYF3ZVoL5d@d(5nI4nuLSmF`fBBh<%E~$?X@nr`P4>2oN3u>X_w`f`Hq|#J0h6a7~7(2iilk2R+9tA4SumHG3 zT?24-0b6lV#ds<)?W#*lo2sW`dzv4D>0r4o=`-xhV%L$TiVoBa5m1C+U(2|~dPVJk zS1RPDcc_zGRAt`45DaM~q0l@jWoeros086UAN0ObMT{tyG*|}Cs`?N!S-PRhEWxc| zaLkKn%D;8J=!}fSDKL2O@JJ>D5@A^D+;lZr(yYYUNS((duk)}b_er9fzV^6l5((s&^5Cdg=q1e zyefXtTKEgr2=Zwk2_wL673#{eZ{X;AA(1izFa0oJX`4<4>;@r#k;^xN2n?<~=SMrpv1A(Hmn+C}(F>k{S&Y+!noj}xiEt61u;ZkJxr#JreCt3go zgVq0{|0Ef)W%EfesIy4!oCbZEmB{16Q?N=U@zAGxuAezq*Uw0RRU!`8=3;to-WXd9 zb?8y&1R{!!Am9>Y(DA)vHYV!u;o=CF#SWL2l7DkHVXben#rNN^KF4YtM#4n4&Y@)( zma5zXE~cQR4Rg5&V-99N&qBl;o6-hjG|u202PQRg>{q*y&fRIpuH{O{Z{OO$ed`(m$JIxGuz(INNjN?l3z}8mG}W-;NzD2dK#`>P&jST(^mQSTpOM zx+T+XH2g*7d*g7=&!_@is|xOwy9f*IAm$&F^+pelS%AqcKzO|37KQSJE0*IN@eXFD zk_dL(LY@C}e8V^KN7wE3)`0Y)pQtjNkHRjfqUA?CRNYgIs98iq(a8ci5AEYs1P6Th z{W+B`HK>Kk%3)uX;?Qn8cOn+-FZ?6w3l*=i7Ovw(EVpd*#=3JZK9a+r+|I9b+C~hM->&IC%O)wu{1(b8aXT9)^ z5;}e|fYOYEENyOQacW0FzMia5U&M)GB?fyD4O6Q|ur5!;4c(O=E?ILD+57lVRLb(S zIF6xQeT=FzoMkX;SU5MOaD2MWRb)gq#~HqvwS#w(?al+&0Lm$V(qsSh^>edktA663 zOW6f7GZ{b|Z-+}x6*$faMY+QWxB6UR616xvAK`hU-7pl88Tn7TMTH`Y z`EA)i58{K@DKN21L1l_hbbm;WF^3rj1o@rvFO-(Zrf>XV6pZ)`D(@pK;t|8D7t<@2 zve{U9cC`ovXF!kV94N!En^18?>?@5`OD z>}nAD9$yWn@$0NB(f{WBp$gKZGUa^zYrmy?=5$aMM<>oz?+Bpfr7zoX1|Ot5;0sts z1t|paV{H*0K6DsBNG>!inAX14I7<7wQuS(>{Ry0?dJ&6f7b78=k#ONY5^fhqvINQh zRUyMF?jS?00yjgHeSBpwjB5FPLMp(Tc^EAPZ{z1NtVcU z?bt<7Y7@bKml+vFi6WNBPaXe2Ak{%&O-~2)EJ4>(!Q#}gye)bKaQ@_uruEY#w+ zlPMuslbBQP9Ci{bsh3K0fx%DsKD(Q=K~@qt^10|mRZqgmMXVRH$D+dAxMp?XlGURZFqW4ofPt+5jpWV#;CQpy*Q$S# za1dF^v_=jyhZQ7sK~G4EWmo7yJNhcC$ibyT$50ZX(@=}?C8+@~qtXw{x;4bPP^Jmj z;gS;xPVERginW8#L8(MVV2V^vSpZHg{F6;Y6Xpb~0xelhaxGNf10crwo5l+dd<2ew^LiB$JN8pDAjg_y?F7+vddkQ1 zN27V1e$Wk4ITwD;oXQ+jFfcH=)hrOL6LyY0DoM0eg9h9rLKI`ehwiQfRl1n|% z>P?h_bFCO}(EV`z5m8~^v@@0H(Rb19+MBtkjJ?T9LDN6{!8qnBSd53p;U-BYKel1_^o*L*$+vn&GE3!fZF2#wQ~?F~gd1?LAY#=QkuhA6 zDn~Glv)K`BQ_2EimQf_yg^M+APN}PzC}9;ryByR;%oNwy|9%Wv5rnsM6SKe_p*Thd z8G143If0Gj984py9O`G8#0AKP1^-WgTWA`qOxGO69ECJfbss@%aJi6ZWpF7|(3k+U z;M!^|MP_T&Np|$_+%!}&HvGjQRs#bL;V;5g!+p4L)yFx`+oM^rQ6D(UM&fBVF-x{! z520F4DqxL3eAs=vra*ag1o43T>{bW!1%}nZ0;Hu)tAm9m9b?jOoAf&-JsGJGN?=%G z$^&t^N4$&gd2MwpmT&D)-fjHwFXZOoA&t5as86Y`I7Sbi7r6H;bp~ zd8iO6v@+;Ox}D`W@-pRk<8FC%y3BX1mupY+XJZEjc}mfTAI#Ud7x2Mj8Q>`{3nV!( z`sJ8gQU$mBm|GGDxBHq~(g?TvnOl+yxBKH3QgYOT=K@J^c091u_Lb0|VA+WhqRa>s z&`2peB4#cjgV7O$2EibPMO3IZUAu-2D{GX-%zPN_x+qvlF^irj+O-PT_!j6<3;r|h zdWtMRHdTSuSdD5|9=FL4g2P=Oq582AK|RCq`J^dqmuhj$WOYSj1t0d{liFCV(D6P* z0f>3;@eR~5d>>gi02!{!u=j!G_^#A3$JEh-HNt}=PiK}}2i7UXiue&~SkjP9jF>_q zd?ImmQ2ITxb08^3{;(Q5un__+4D=eX01_p2;(5zDWz1QWG*ocUbjbP)l&=1|X0Zxo&r_QNs$t9S`I^ z=!RO*2ALxz&NBB-eLIkD|_+q>CGX?=n{7N@FN1&UnhU?jA6jMy`!1FDpVsJW5 z7Ofk5zH^a_(+Y0|5ZQoUtJO_=?Y`$fSVQ#0$aVYkY2W4BuMZ;N^( z@Kmmnplww-%625zW>eR8rmP^lnjNOKZt{Dp%mdrrS6l!7W#d9!ABhP8lx_T77 zC~mDY8XG%EOoiRoZ326WZX+$ApIqHWlHk_WZKMotUEM|k;nvk{q!Vt9Zkw>o(`~EI z_H|pvaeLQo&3AmgZp#;5f?{S0q@=5T-6q{)bQ`Y2B|Ang_|J6PrC6}ck-L&rQMV!W zb=%ccYJ(E^7yxa*+o9Y1Eyc7u11OysipTD00MB3zQhJszx{zf)9>Y`YVKhNJnvx6~ z!nt_4AfTSWA&zwQHfYO_x1nJJm&XO&4FbH?k5>wpSb3?$d6W*r>9tu=}ztu&2m2X#x3kWt$|ytt;E4 z3~pW7CV_D4$~NhQTO->umU^kw+hb8$Wjiae1oG>e z2@TH-$bca}%&MnFKCWn!RiA2+@9WqjiO*gwat+DSB99%3(-XToz6GM`kX0qb#PU_7 z9J1z^^k$RZV$xepIu|L~dOLt&s^u{sCijb^9u8UZ+#9mgA~(zYdktAwkS}%i9#;zPPCq!Peo%rFYVQ9c)?d6P4 z$uk78c`YRwi?L%Tb}$pJF|?fcoVm_(&U+clUlAwBXPf|MBL)60uiUBw@0(lJ)Mxl& z->3a`1={pfHfNxgp$sZ67px;H&bb9Pu{4N}v!2O(`U)#^4VHP56>1*$;km&xGiv^e z*?4P5M*uB1>!p}$mJkPOIvY99Hh~U>0szoN_WmkiJi`h5+_Q;B=x9<JD0Dy~WV9CKL_{PiPda`Poy!<=b#5AyPS=JRk_HD^Y7StZOH9C&EPIq*82Qf z%yZQ0Y7?m)_o-pi^wU&qtfx&r?270qD#9uAjRkn07>vj8Xc!ewpLN`qZ#(EPWyxVw zZavfSh|FFR-Zjixcn}srhxxUqH-M8owpKy)L*wDlBjaYcoFN-^y9TiDF^xoCp-3S` zH0KT}j#E3amsd{&+}~9qQI>Fn@h3m)3ouy-zB1}UVUM|*i6)t% zXOEV8vHA#i-T1>S&RGoGytm9BNTgwfJ?)vf}*Mc%>*%FB`C~{ zsg+UcWy-^SSwQ@?_l}=JbfLbg>zdTH-MZfXVtwN_=1jEig<@R#Q(@ zgJx?8JoH3$H!n=2abIU3N5H)f2F+Q_?{mRY+$$F}lf>YHr9$$lT)u)s*(AHN0JDZm z)*nD>d*irfz$~zoLTM?WwIsd-*y-3F^^{tmLcix-RKE=hIaT90F-|dWpg^;?dG*di7#?lg+Gn9=die4AoVG+6ZcAqQbP&b;KbTV z3@xF=VD50qv-_tJLo>i`G6k85BxOa3Z5rb-(?BpzokLdjMT`?b3?iSZvNEm4qp87o zcnh=^MDP!SEoLv6f*?#mkYDf?1mSHruVaDsZ-oVjY6@m7@U*#|DW1!#>az|^_h785*VrCDQ ze6TO^#O&P+J8{lmg@;pgzz?uQ*k!H6v3LzNfMcd+hO8_HZ3Y+3aW6G}{^Y7XDz-PlXEH+!}mbI58TD6FgHE7nu>{X&E)J2ZK0*yO@IZuF~Xf zH~xI3xo$raWp7HeTtwVgniaTLrCB~e=~2NHgk|lNC@rCcW$tiEdl0S@kzc5{lId!T`jXrXbGSZv6R(zr@{Wdqupk z7ve=8;wubCwHd~cMuE7NP{f%#ToNCYhPY;cBV`IQ6A@=ci4H8fNJrdxqCdpLyD-mB zr(_R{xc*~76VtzJ1C(G2N^Ia`C>Y*$OBVHBwoC{NsnNllqEB2fY(@_6T$7_$LIvt}qmcRtiQx?b4 zjCZ+8MpMtU=2$AGH5ip{rCQe)|8AJa1&LCuDmO|yxhlNtP^;lr5T`vUoD}jQXvq{5 zW}3olyzR!H&uf)AxZ5kQtq`*KLe}O{z8w7}vcVLvvvvxZmQczwcevz;fuy`=rfCKU znJLIjZbgZUa4bMNug(2+f4nBr?c1&A}NpB?5r+b6$G#{61%bJJ`}Ix zbAQ$8k*PIrgn_-%`OB#k+jIbSwfX=g7H{*qBC+FR|9T;=LvabqXak&E>p;oG#mtqJ zI4vdf`~QH37${9SUlog@_)L>+l3=2);V;PYo_F^r0iQu1zxFFr;R?TvRx%S;GchXn zySP665UYLyzP)%lc!rzw-35FNyS6BM>H@wBF>+13U#6$i7x1;QZ{vZw>n@X?+GxnT z8EGkA8Ka#~A&N_x#sfnqnFV|sxUm9*2pm?lAf1lmfFv_kr=s^*UASad<^sUi#{#~i zz&>V-?Rx=Vv(yExAZb4f_$t{jpsRAZjwsRAk_CLFGJ@&?K3j&|nFQxQS-|(Ym^zDs zQWXN)tVRRcAjaU38?O#bJ=z~}ZE&oPxS!piMC!eOZ=TeubW2;nXS|DYXBoxEovV?) z`!P|>?k0ku_)ezrz~44u-4yU|Cy^i;>yaLbSK4|+czyQ-U&1~T4nPiV61x?pHrHOl7a&|^v(b1!@*a*0 zQ|KAN$8;P96Hy-Lfwxdhw9RjO>a^p&FH1Z`f1|m+_4Xu4>F`HYzNIP<=DAD-tlJ<4W`P_8e-)R?RB(9-dbUHQ|Ca!tiTVkKGK6hNO zTNmd(MO^E)wt!?@?5M-Iu7Xpdh(NM8kt2*veGSzp@j`elelwez*RePj($#hFfiBt< z@^$eIx_?bBljuNMzdOu}^TL|}%`kY%+nEeXyPtf-%1Y-*aJ02bO&NYyP*;rr$K}i~ ztjCWI+S$$g#UcT_DHNOlc8bP~JJ5c=$4>HbSgSsYtgZ*}5x$(IYYXBhe)bmEk{8%r zr8zJJ$&=%5_ssvpj`VxtYM914e#WPwF^r@sYtOb{$M(FnXK+LidZ*35pFkMmQttCg z$**BF5-yqjRUP^GO|}?48$$~VpvrO_^uPZ=kCp5B9*zXwan(I24LXITkT5Nmw4+od z%Ol7GC3B&Ain54pQm{H)asXSRdQmRb{;UtSvy!^CEl5(<2a`){f1#*UQI%FFUxXv~ z7^t$i!ZYQwj_|4S15dHsH$zFDmpB*viIL5Cj~t(lK%I$0@fhRN$I7DBniL_~lha(t zFwp!421xjetE~EkxKPF$kXV3gXX7%?ijWEjhS0SMUyKjqENAI|xbtLh6oo1Ndgm#+QQ=nk)!f^NQP{~Ax|ET3;nDQx-C8Z5Tp4mVY;Hk45 zws1lDArdFPJD+fk_TsIg7el~Hcu=P%=Iukz*v=?rd*g!TYzzj#Ic5-O$1ULzrwrq= zz+gRf-*VI{M}Aog9zho6i|r<}8D1I}x}jst(+d>4A!g(EL5=bISMWg}GqG`ZJ12zJ zIaz#8Ai};vpKRt}p{-!`Gh1_&zX1^|t+BrcOk)l|Aq{{ms38JtWWDwZNJ-9tx|52B zqWaLa(E9BkI#4JN&1N|F&Y}ppka3pwKp`KB3;A#q=IMY!TAfLO=Z0akV`$_H5IRUK z`a$4x+vl3%!`OZd%i$;F;CK+QHr53;el?g%77;Jdth8w~7IR)-h+~1K@nmvt#>}Lp zBEgfFkkgKhvSSyR;-4cHvw{!#v5s}qI{u-D&!*9>u15hP{57^`SYZQbxmqMuC2zSv?x9dfocuut;IZSi?J?fT^>a-L64%?PHR(+ zqWBP3Ay8nC1C?`L^Ux;J$sqQlTkT-Q}C@%id5HIqfIf&Cevr>Ib zJGxs=fkSqlj*x583Kqw`-~tDocyRDj95It4`Id>B5&}0O3r&|$@fL3}h%H697{m?x zKvPo%Yz#n`8a!K?AA>&5jm?;(dnFiY< zVF4S2AQ){4B$pCtF*@Y9QkWrC-jfmvi7`WPA|c|lDl#Ma9Q{*?os-zH*z~VD4)-6y zC<;X<G5SEkuu@ez=wP4=vjPh2<0?BK%!tU;xGd&;gl1) zG`LGr>UkkTQ*8jWG4yCWa7mp}ryS2XDq%;8Yu-4|Ttj`NV}!M8W^h7j(_?D#ZMN$= z)#Rg*BVX(4T7!Bi8M#7b&*U>9Oc_(bzGO9ygLwp%{KiJ}oo~qwpj6V{!grp9R{>Zb zt25T!UuC7g@Y7DE_c_SyT6gzg5$0K9j7(QAk{nT$5xTtS-M2?(R7gl_bu@V|X95$?W(I z`To?v5z+*wFu;nk%FF&jmb<;6=C{7tja!AQ9~_INbEz9=@dB025v8zi2idL3M9^RpeBPg z$c1 zNS^s$x79%x&@J7LR1LYEe1gu+fS%ANIn+ydk}Ij%kM+(0EZ+*p&0&h4RoAU0gs@*!Q61uxtYiNxz^Y3j z@X%8Jz@1A3X!O=|LThhrVDL|CgB~&wLYdx&3j9q@2^`Yb5qHYXYOa&3sU(=Lm-Mx= z$WGW{_wyh@nIgp|A+XjPcnsq!%*WUqBwKen{+5INL3l@IYeQ+|f$aq^5Z6}YM9qs$ zLS`QkTo|%mDHj@LWWvZ_FMMn|XeDpzI=bZ<4Sz$za_1JDGh#>wlU4~N<1G4E#$Hsa zZt4x}k3zKWZnrAJHNJoMaUHZGHuK>N()uw7$)Y^tcVT@RdHo6;@PEs5e^}EW&lQ;Z^O*|I zjr)&z4*ZKQR7r}g83>AYjjckjL9T8za`moV{OLR_IsTNKc{7i@$Scd-7>bqY!5~NT zJi_8GYvBl9#K5IH%SM0h9Sm|RP9%ouJP~`C!Pd5W7{wPE^RRJZY!w(@__YN%Q0FZd zoG>#b_lv~NaStix=A5v3PyW{KR|(fp964WkcbC-Gj$BsbTsVH1D<54N{^|g0;RP`B zaW&9dxDb{huCUbUSxRC&@bTCSz-*W)eq<4cLUG^B8CS9FJOAMg^;4J~HV?;F>ZYBN z>JldITZgta2f)F8APjb>Wft$F96y?H0QXVzf70^h;R!8jr|n#2PzbL>oy z^AsBi8yTZ>GqVD^BDO7cf`{1*31VuBp8$6hRxF{EngtnJ){`$HKVi$0)S~dAAbdn@ z&|5f1p6VI$)N5K;JP8E&OieH$u^&rrYM}nmhEjm;ue(Z$t8r=&b969aF(LCj?iq_-N5WX9&QYLU(pej0tv&eY8!@2PXBw|e^*ER z_%5}jq;k-=3XK>Yk(oG$I>JR24C9jkWOhywLkcF9@CJbcyci|=9oEb^<9wXYp%;uX zez0e&y*-r1H+wH0I56qjYLhBlTdf9$6qtBG?QCR-uRb4{!N4CxQy6%KkSse7rDf`( zCO~-QX)oqYoFQgeVBG;;`%_Zde-mU?Tk-WvO#8`|lqG4rdbq8PUz6JSa&0_(?Mcr$_sc;9JeVu)_?#WE;1PaZs7vNkoT$rge zg_&$zhfB77RQKOyrtz}z)A%xACRUs_;DCtx2@xMV#1QdF*%x6{P>aBs{jrlqM0whq zh;w1|frwd|9ub!wWTkyK#I6j*U0& z?=?O=rSS*6#(#2AYU2l34JXqyj0awxY`nLi05F%@(0Ffm0t)rsx}6D#9$P~u;09U=l58jO|Dh=P2MW zXLx{LF~q0ZJQP=|{b`a5_)|ENpaBjFPpd)i<>CZGz<{d*g_K9#pxXqUDUB(lY*JD- zdfoxnU|4POC5MhpKCIak~_|0OfT5&$iYgurX zr@e8$2VNM!AK7Cf$??E%5A<<<>jM|(6TQZX^VwFzOUmbuxLRhlteY01Pi5#M`+by6 z!F$dgc#qJgf1d4;yC|jUhrOnsywJnj`Nd)4Zd!+nXPJ@s71mWack092HHm1lRT5a? zBjF}E_Ya3t`83Y{_ngWUe{x)~Nu9}yVbH;u6cYp!7x@rF{!{C)0C&WpkSRvJ47taM ztvh1|NZElh5$*io)x$HO9de>uBJXF?x+vmAh+7|)h+h7sepg#6jRh_-x2(I_IpRdj z(|BKv-=n36B~Gj@(aei(K-e4O`u2%z%B6)=KbiSFKxstCB$HJyM}=^rsU6lQ zrvsoedobaY2V61X^x}S%K$PB1-f)?4vKsy=kxw5IXCB>Vn36E;Ip;+4j)h?}iZLK= zaT>~aqXg8Da9~eO(ML2BXk+WM|P0 zYZ%B9Vl(bw&@^`EQg&nP(H16A#OnkNbKV_}eyKSw9gQVkAYJ>a_IMu+vkIlQhT+cg zv~uyl)R`13uuD8JW}qK5yUn#l?6?~U^_O|(;9M(?G6m#2Wffz%YvVhQ^BZTW3IH#J z$|W}3ov}EFSjx#6b-OaNtc5$(KRJIN7n+~0VBS7vvAlVrA5A3`N<+{7mKkpLNuJx( zg1g0+Y1Q4rT`%A{5LQF{P?EM=9?T@W;B*+dq0JA}IB-(8=R0@54|QbPGMG>0B$KRe zok>5%jjO}4U@18PNrGq6sXR0hPG~cMihfMN<$N`M5GjY-d65T`jqVfCJHMf$0+Ugc@2mAm7)Neow*3;xk4I>k4;%~{*YK4rX9FP%h6u) zmsp3j029nVF!sLm5PUkHeC2Gg2VX&bnK8&5-tio@tTKG#f_;kz@I=iU04Oy81*yTK zGkQdd0%hRh=AzT!_Lb22B&@0S=v!{+%X9c#+6y)LK~;~M?ot3fBTh++!HmjYGA|Ia znmNrV$qUa8&%z};|5OL^jH02sX+~Wj>VE}5vQ+ELBYy6QFl;33h>0?An8()0b zoYy&n38qGW_&Nk4=nrI~SU5->*zEk`7@sH}``}$I-re5oT{`;pPZ^EfjXrk{ytN;V z-Qa3$X7e@nG1-+MCC8kHhXMk_g`%;?qr{j^6vcc<`&HH*@+H#PPi?3h+84>%Yuv3y zoJ^kL=^SUv6RFBX)<(>v!kI~-p2Qgw==a~H>1mG%vA7t$i~c`4g&@M`kL$Q03M}UB zX$k`!RtjPG`az>KwbGa@-((zxg3Iq7sBX|mu*wE(y#8fvo z!(3jLXBWR_EgH_z2A?0QThk4=?AUL}4?NViRA5z>QrUtRQPMJP#qpYPA`ohiB4*J>H4agsQO`3EJkktEK*kMohV0F{59sQmRu_yD<@`i2yhUxI7r zCJUu6ht762wWhwlmh;B1A-6@m^PF`Y1lNXzBAAa;ub_b0FnLZ(+bLTIuRslU^$M^@ zGB9a7Jppl<0_Ae8l{7nt6WR#QTBiDjNVo${{a?sNrc!kP@EeS5$V4^!J4dZO9NmSD zjI`C%6W}>ks3S-vKS{pm3|nXdPp#xq2I#|5iSVKp$m(SIf)PDG z06jPo+@3czMLoW`&+CpGZqn|+ z+m!COQQoI_NBk?dJNAPtk3Gp6}vDWlQIS5rF^nXo+uzJ!4>YoN-4T;V>IOD1{jLdYLdmb^d!G&d>aju9jcTQ7h7?Zt zZ6BNv+2wLV=6>XaB~q_2!z^Zp3z_G({%5QoWmwf(HHFJl4`(VdiDQ`4dTI&|a-@*P z@0F(Gv{K(ps@2J2G)w$g*d#>UDsi!ND(C04OyqKfQm%po3QamvL;^VfS_5u)Og~op|8- zPtFpUIhQyEEeH!ZIj7Tj!+djc3DqaNF~_+}mKg(>1ip@e-Fl1>M)b%U_+5l^FoC0ogox6XXi>knZ>dtuG?IPv!yvyOMhWU6oWtsFx znw; z;`1Uci%l-lPzE%9;M+a((TAOXkUrco60f6^i^^itp^7i7;t+z5kOO-@u~ywj;&Etg z_=psV2UgyBnbcdIiCgf~9HixVWm@G^aGUsj@xX-PhO2f@XV<`@Cb2~mfSFj--4Ms> z!X+mWsM;#-VDj>1PXV_PdZ#9zx=!^-y>|e40THcROA1hlyne99I-~#Lv(7M7qO8+- zih`1t{0*nxRf(McBR*8nl94f=2{~lp4;{NZe|{)(!Azhb07<2R!O^ik3&oXB zwIIZt6+pt}=)Tz5A|;Mh|Hs4e*m`Oy10>TZ5%sI}$#Qvuac3^bIo&dgqA;}Nkmwv^ za(UtWej1lTA;d=J6e!ROa{h!sgBv+~0yp4v*au{Y*jZSuE0neBhqJlZa)*@)gY2sh zy7>T{qq}AGJ#M*a7TIOM$8EXXUQ2<7!ZmBSP?oqAivBlJoALS$83IbazWy)<+$VoGL5SVBO8To5M7 z>EnhOTW#bid-2g>Z1Sg9ST|c~T%sZSZW;y*5TbRt)Ixt6^urAOL4%?&XLejHE1YbY&ty8R#fH zljVXF_*_=}X(&F;C9p5bLJI~n{+R4C2J+wi z#R5@LD5yu0az_o%RpZ=R7TPxA24b zxdk-7Ax&YbVkZ&}Xzrb(9elz7?}9hBLusaZkkaHv_83N~3;eVL20&O%cND}I3N`bw zRe0MeR^6R|0ET1Zl-FIpM}tJn1TP*6C;z+st=PhXE_S7nRDX-hDw?u( z0wbi>DCR5T38%3piK*D#D_H}0e-((qJkTTW!z<{KwSDcnETw>iE15%+^DX>k;%a#F zY%4+T)llP~2Cx|CO~&=+!T@?Yn0KA9I71f_2YiC}Me0%042C&Q02ieSEkp`<%P(Nb zerW`_f)aK`fw)iZdS8WTFzG$#J= zT1In_B3Q^QEA$Dbd^gt!+sWLC15TW--aNUKoi$Uxj|;P}n(;eQvUX8D8Ms)PkAeo2 z>~UXC?#Q$hIk}#UhXU3SN=|zHnWO*hf03NLg8-Frg7oENo_UJqik}4 z*vR$4PCmm)ZAo$^HI{%axe;`4*Hy9u@UeHx3+y}JFc?n;(kd9{PxiVEfLe+oEU!C$ znC|$YR`Z$}_D`l8TCf(Qb8H_`e8^+(A=r{4WB~UBIS~?VCuXzI1Bc_J)o^qNF;ib} z#Yy(~e5sVPaSTCxG>f4O)yPF>8=fucc*d?6 z1_8w@Up>x*pNAT&ctk^J!9C;+6KKcVn@7bh(L^}?dqWlc)3on2OwV2Lrs>q8Cy z*ake=HuMD@wQ_eZN-aTP+LW95D|#gEIC3V!*q^13-Eqi(v0EWE2NQ?%95tGX4mt^w zX>|p4y*%$;Y`yYz9<|!cwx+Mh;NT&S(?YL!5pv=F`ahTlZXUTFCi+6a1CY@MP6gkB z;FW~&{2lwcf%7M~Zz65r@Kb-_u((Lcw+rgK51hhhe#pSNzeg}|zJ4b;a6Wk2A2>Je zonhb%lp^F09Cj+!TsSAE>=X4)e?J?IBC}wjA&cJb=zHGvKLJ@DvabkJ=tO8z! zVMwg@wlO4-qgAvts3#Yp7~&f_RriU9hbV{J==6CR!vrxdgvEG=Cf zYI;x3faHV(^SrcCsICPm8iJzddlZC8Os%3hvVy~^m)J(ru12a)Dz}WbVzI5JQ6zpp zf**Ud;pdA)7@@AA72gBDWJ4(@WLI+>;a8rw?gW*02H58owZxg{o%0H=RNk5e7iE5K=Ax-@2@ddS_vG0|~Hn!HT)Yx{0rtl#|^k@#hBjRO1( zARGm!l~JO{L^`a05O+L)gm8%I!M!8_3W<%fAXQc1S-J3>I+&TyABkT3At@D6gNp6GTsk!hg(}^E7g_?s}KIzQZ{ps~z4|gaO`qO2J#X zy5XHdm{-eE2-BKMm|3m@y$mYQQ%VKOwS@}04~ch=WR3oia7}A-H5ana+g;6iiJC)= z8x((rRavH_)UKReY6o968hc$r&~q;^W>(@8gmL-5aS|ceZlwZKc7_k90E3AKb407d z_^U_^WZoVfAK?&+B1Z4_PF&9oDoznQ+UxhEzY9N0R?S^@_aLT2JqzP)+5KE}K@R-X z?}+~!7}xO2c>c-*Y)coJbr!Qpejq4{*F7%c3oN4N>cF=Fc*^p2-`&md)ZPmCnM#77 zTO-~PDLcDl3Gk5u6!u)Hr?G5d3Cb1 z)`uaqDUMN1>S#lx3l>ngNCQR8n+=ty<2s+-!{7!3Ek8qdj45uP2o&3KTnnj^$i|ru z_??5=5*|)^;Cudl48MoIFtjc4Ikxqn15V@)f9`?y61(9i51se`dw5Xmu;h862cg!) zlX#8FCIJjbjLiVS9*OVPvG6uk^eld(=*9L*_0{lqLt77c^Afw_H$UwO2rz^PqN2Wb zY#@f^ybfqvl`sjsHfSD?uww8kKJZ9<3=ig*=zfV7W{&4y_LaGQ z8HNM}lzI<(0D8}OblsGSO*os&T%YuIw5!{bPFu)Q#aS@g4_-v>eD zu-N)Y$*@PrQrpl~%hSw3|6?kQ7^vNQ0^2_~U!5PH->Bjf2aqZHbi~t(sL>8m!!YrA zLUf!@0OEb;vBG*z{>eT+LLZpxK5-v%pvS5#V{4F+J+%`uCi+-Pb6U!`+BoWpco^3e zVG~C|vWwqMO&)2<)ky@NOHKX?_iF)xX9@ZwP6a?*=l;K>SK=AF8*{TTSNxW&#WzN|$QDd^E-;T(Txp*AvF` zYd4v-;O$p#G6VdPwCwq*Z=kTaNXc0b*LOEirlH4WGI2?Ft80ka{~m!tp-{y0PkS|K zpd5)pC`<-;>vqXtpj@r(roMp!`i;Y$6t1E;g~UwW=agJYx49CQ@(8nd3|wy4G{uX zROBJdrT(b_>@BlXHtmO8W~bn|EHvB6lonmzDZ`o!6jlm~@IHY4NJ7Y|&ge?`zgv89 zL>fQ{4e&;n(MJVkn6%5Iy@&@8;x2dRqtj;!mEsE16gr0Z#7+jP#}!!2<{Vx2O}Dh0 zd;oJr`WbFg!hs-j>{YQBieDs3zr^gOK+~n0t75l9#0kg&(-Tc9P#OLSTYlsHcF%E5 z_OBY=L9Uick)fQeoTEF7t+jK%W7tX1-Dqkdo7yT&VC1RKiH7emoT<9aVYsh1?_u(f zpWifdeY1Io;UlvwZps!|=&oRU^C(?xCP4f2Fak3|P4eImx4_~#%<=@`TXnDi(D>dH zhS-}&7|+k&;Ka%s$E1jrb|!-M{LB|CEHYBk^Y`^BV#V_HDw>@pR`eDfVS@niq^W}- zp8wDnfmrE$F)3C$X8B^}_8l{bl|kAw*{G%Djs{ZIxX;46XtNZ6=gNzhg&IC9WYY$A zL`qKk9k9hw;(QUsNso?mn3*kXSezH`Y)fUbmOBwl$rtL#*d=L^IJ-&4+XX#fwqf!b z>|eqUoUxM&Hp1@#;1R~fBnJu~;`v3}I{lDtcyukKKBjp8M;?E8ElW43yaF=X8e$pG zU*B)*-<^{BolL=ae!=T*^ZM5#Q#!XzO{e|+&_2Ww6vUfI$>0a;Nvz-SB?5tDk&kgX zSYV{2kLCE8a#ZI^(Z-NNfI_sofR3eBw9_0$E4}vIbV|bOQpz?h6k(uc6XLlI5WPuy z;i=uF=DAc#b@~gfKj7h)FqyqK-p0pOh2t1p%7F;uXg}TOtpoDl)Nmgfm$W$X1f!CY z2^D1_-DJ;tz42wwlXkCrQt(V3N}upT5-o-^rF_-_{hGes3ojd%W7W7Vg^4D;8gM5r zH6T}F%g-`qjbVC$s}AlkA&td~T(5UOOnYCCqnzQ^HHh>oN}Ou)P7M*Q;~2z49UnB? zfLbDlNO2JhhKR6h3SuuG^oq6lg5W%~`L0L*z#*4-7SJ{3$Ak4_VN+9Nv;oLrwdz4x33igTBLL z$}u!Q9Gx3sop>}JnA_|giFBl7-}^yp%6I_B2o6$A!CWad2po$(o$UFKm z(q;UAMKc)ttkVp>+JmU1Y6ex{LM$U(+qI+mdLthsLM^6C#`E`P8R#FQE@qxo>hkL_ z2q`6w57KI&(dBu+9LZv++JFZ!*CFDA!W#^g*3(g_Ax}Vc-?|#I7u)bd)R40=w!R1rYY}W5OrZ`l1mKx&bfuX=VWb7z( z)|Kd^aYc-o_+oNFXnrBii^0Ko*+_RKWOE+00ID_YLhCd?GDQ{{9YRf)B7hA~qDH8xis5Xi*vem0Mea*OhUb_2c=>RS zvs*esEjXuI2#6fuZf_fz1^;W@mgKCWKRV8OfZ=RuoHYzo17~HLI{MyA{IG^W!p8GE zo{!6cDSF7*_r^jhSmHK0q_}&wX}NX+?TN)pLw~$4*#WZRm&~n zo7VDFCS3{zUhCZ{oS&Q~d}j;IbxjxDW{G)pxw-8gB3t+PaW-y^L6f_ zh$-v!FalEsIJ1=96Xt81;#-{Ri=D*XRNo5k%R3GE@1y#vt3!+F0txZk*S3 zm1~G7S3yIKH}(M%akK$~8OCI2yPVK=N8v=eqi`bKQH6dATi41~qBz0~IbDj)V=p3P zg}z2&+3g%ayIEbuq1Za&g2msvY$XVA0Eq?r{f`zT!r6uhTkzS%42FrHgHVS_R3Q4L z2J503xgt1~>uekjuE@mZy9Pb0Ny|?~W2Fnanowg6o*{FX4Tk1Mmphfj72b)rbLE2! zw~AkL?j(%6XBqHM^GnRIGa*HRv3|Guzd;~t25lQzLvc_7Jq6p4;5B-m@{tt9Rhc zTV~wFXQgbb#ip|0}pV<@*M!?Ge9|_ZHh{rK`Op`>-U$6wgcs94C8S848OU#L30g5 z-n(;yvYZ19C-K0T_kdpfcH_rMJOLtYNcr*aKYr6}5seA-i!}|sOJ2jXT8CbyBEe_B zl>^*!E2u^;@d%MV%RM(cu9)YZr@Lppr<(+ZhMo3a;k|l`QA26uC=uU9(c?MIXpU9G zaKW|)bc~ZOqBq98tAQydtgaG{lDfl`Xi~S-Wz;*0=cd8RnE$JXZBZ&$8S<;#qhGL^ z2y_Op0^VVS&!EoJCIt+iiecj$xh1V(B~|RZo=&P-X{6J8dktp zy%-f|eHni6TT)V3a18N5IH*)SsBcs%vk`YZ6eyc}fLt))*JY6FtZ1G@jv*PQ?5N-{ zuVe>`_;{$|gWp@mT$F2_qzTP>)o@%PT%(XMf%&g2CdAwZhH&)(jfvd;ihqeKni)?3lS8 z4Hl#aYMfs<1g1|Sr^fk(7kF>G#_Hpwt0Pe3FlEU6cZ!(b*;2&(&R*|kK~UDo!q_=D zFNPg-u(*;7PLnt-(36YZE~6mNx!VONKJeb1hMt^%HHi zG&;)1mEtdqzX}`tHtnU02p3|}@f@yZWgW@I_`R`twxb2p;t8A3=} z1AD@)bwf?`zW6y7$$y5|_+X=pxsm9=IMEmddJ-uV4dA%M%5Ri+3PJD0SO(5yCrSzW zB%ZO@nK1?q2dLk0^sh$#X#!O1U{X9`!l5=P9>YGx`?N{1w!fPYvlE~4Y+R(L@?(V; zneK<;tkR%$;m~mx^rjyBm_4>Rg@yuvqXi{bs|1_WYxEle$$PFR%_`bjkRwt>O=@6UFqr zAmWzLFVhiCgC0H5z_|#iAubi7IK~5}n0DdUXt1HJCuII1Z#dH$W&%bQDB#_+U&>PM zN|^)Bo?7J|AS?YnvTheGn4F2QyP$}Shqx(zShWLLnY=fq8KC#L7japf7FZhvaSH$6jB_CQ9i1*$m>9SFtw41YLo zvu7FUULX0*H#ymB1I^Ei-Xj$1*7ou{vy`CGhr zvSOhyrBvxXSC*f2OYd~{i0GTXgtixSm%q){;-}Y0Mq2zd8xSeEHChiIgxZiKACRt5 z_h3*czcZ~+rhSh_;eBGPVywXbl+E79KLbbo0bDZ_9Ocbw`vwOhctZ{BYhX_U0|oqG zuWJ!-#R;=i9Z(AH!m=*8%eZRwYu&i&@WJFNmn%jE0vIn8#*Vw%+=IBQT@Nk?xQmJ4 zu34zhahJYzDd4VY#6&j+f?a&ZO3eetI-7aOP$?G!rdI);DzZ#Dya5n`N_c=53B^j= zAf2paWp9R+=wo%PR7xc_U=Enej+I0@v63{(SUM{i<0V;147nLrvbj27rN_T8R0UYjg#6XmU*HGEb}^8ri?5z z;W@F)ch3rZZD5^&gn_>c_?$BlmxklxT?r5wNYHaH^lermg0MO7DP`tz-`Nhi?RezsFNJHdA^7k7;hYRWC3k1#torWYL5j!n;5FJM}obiJBdIgcL3Wq=Tf08&XyU3xU}7R~F&x^c z?YF$8Hy9QhxDng2Jn=5oAG@*%y3BXfmvR!n1ql56jRh*!@3fpy<8eq%^kr}%3_V`Q zh-Sjk>D~9&0dgUwqunh!$js=Za}mqXK!V+yuI=13&EBqJk3lE*PW+P{yoKtZN>gWn z{6sf_S@Zz@AVgLcR;PF7{ZJ=Rt4Z$EexNZmkZ3ULz(*?8*U43?46u0qS0yK+WEywy z=oF!7JSF3fFau$cM)GCEpi*zxSaZfZLyQb5#NbXB#Qf_ZOEP_TJv$3c$zn=8|G_s# zswLjpdzwauMnepV5fB)r&#{UKhGvnGl9nm;5MR~qgc{4&YhmLLi97n)%R$`HwBIGo z-YZdv%wBJgFBp1*{!BfgX3l=Z&rs`VU?lM)rXJtvf;kHTu@qJsYTAUbPH4DXHp)({ z!vk1tF@Y0&=i|2|-gfwb^>d0+KWzenBT0dZ5|)1{;>I8+2knJ&{K1~sVy zi-=@Ni)moNbor!YdN_J8My;=f$zM)&w*j}>a|jrP;fGN}Y`RoS+;mCABP9bP^(oV( z8Ux9rZ@>)9pLiHysv3-%E*r7SH91`#y+HHitMdig4JY&w0CVBNe zFbQMjx5W=cIMgL$m-o;{+C>s0iL>7gEU?|-pndaKw7d`j^AmPh;D&7a?r%i$a2fpj zdAm1|1KEvcU}f?c>o)n#8CalS9!U>&A`JH>FSXE(_^!===pI`EQtSUwwUqbEWn5Q(>vJ!jZ3AFt?Bs{>|?||;e zGX~JxQ+Z%{PX``J%X`i~Frwf5D>CLJW&n8KJjt@iN%J&G`YQJ8+cJjBj}(KrL`Njv zds`n?0N|!mx2J*%`Kc(DVx^6_p1@(Zn51sznYWs9nB$<-9G6;-6O@BBf~ekhL~Wn9 zfYYyp6J*mDZ>YYT37pjV`gN2FY*QznzTS@Yd~31B=!k#c`kyWO{%8*tv(-gk^7BuD zhxhqYi0>Z!=gq};htV$<-@QM*?e%Nrt^k=zgLx#ZsR8ybAwpfEbIey6T5yRA!C^Qe z2pEpfY!*9CqP3sNg&dAmIv3Oes&>wqRJa*u5^_7&)0C9lrJK(UlhIZGlq>zpXZ*Xgd%+* zo~d59BAxckEar_cXfG~#6j*TvID~At2EK~i@1#j?3 z0qUaz^jk7$k?r+|LMJ<*fEbHP27(kp-J*4Y|EIdz4UGE;`G?5-;ni$k>q7u6VZ8>#VPz_LVu0>P>Mt2)U*hMM` zVgSF}Q)^h6T7x>m*Y(s3()I9-=d!7NI4v&?fiCS-m-y{uzhrFZtW+%KrDCzrJ)muA z)pTj6dev{IbuIdi-)b3i34Z}|z3H`vtVA+X-Wq~46cxuTDhb3I<~~tjcrL}W4pReD zWHAjIOtWB36**u!en(0M)zxEGYm!eoT2W1;RZz6LMh#G=&a0HkIJ&xy<2Q-wJ47x( zm8Ax#R`UTvr$*3qE>H`*=PE)xR{;8`=IR|Z8$m-gg5QynUlWT7Cx;!HD#W450wN`q z%J35eXV=+)OOu`TODSA&KX_@1it$_lw3t8Ro!b*dH}XSx$0ib!j$1HK{RER}`e)OS zCGi!6clwt#?n{z8@fecv@z0s-e{+nQ3^=vajhk}D2r}RUb<9M)VaNe0Jgxf8Y4e%S zEy7-wRW)CO?;r$B5V7mpl=pvOe0AaZ?~mh7sW=v<;#h=-#A5y&rtUpp~W^oWThgo4+*D;Gtt16t5A?RZ0Pp)r{RfNwM3j`3}s$ zr7!3|bMdU;q?gOA5kGMTp&D06aqV#^(Y9_2b);2I`+D_y%g^@4kUL zC#fg)%QwUdI~v&+q4^I-P+l4Ke#UChJNM*~dtgxEbix(v)X@AZPbOi)vAbK5QLAb9 zK0h3%PK9)iN@;{k@*PZa)GG8onJ8*aKi^JNna)I-2!Q+HkHm-9hW{aCA^(M?j%E=A zyrj|$+iFy-8TKqCQu4$VT`BkX+7!ycUDTa&&ge~2?(}B^%FVeoNx7LQ$xQpB-_Jm~ z*LDjiR~o@7hfV(?M!Y~Kz4eI+YW+#)S?eQg16tn76q+;^p<4n??6e``tX_zt$%&jl-9G$ zH`Dr#TD5+MDrncVKdK|Y-a6~9<{$Cs~@w<&vY1!!LxVP{Y z+m+jaw+q-jTNdrRYn?^AROFN;6B|9gOj`^A_l2#7cwJyO4bV9YVSTbO`Al-0No*lg1j$#-3@kUTGY`^Z8bSB{PpEV$mw_qpcA*nHSV4n3o{f%a2K_#}cdaP0` z{nU+?QE7o1HDgS*XHrj;QuU&fu`~7-)!SR)kSeD!dUP4OkYdE|6QUH%wFd;anh3Esiyd z!w+EUQYPnw_r$0jF{nAMY9(ozOhlV=jpOoE&t0}50<<$V5zb!@Sb1d4J)(S+L14uK zenUMEzb${#G2|F=Ih)te6FdP*TOH1R)yIAx=xg=CLw97OOzde?*_asw-5v?x)vRaV zKy&*HP`1&@w}Rl)Wj^#^1!1aBSMSZI8`kf@r#ttJ?>aLKKQ|J54;T-ppxV{Smc>dT z(i9T$(GJFyaHa>?h~9I!$n%L)!x9B0n2+2D zB_FxSBp>-dSZ2D9T+~H(rAH^Axbmoc>^0=mT7?byUEC94I_H%^2jC0Q5OL)isC?Uz`@ zl`V}|$QCaGjVCdiD{g%f=YZ(m5v}I`zE@zeK&pJAE?($G$D@#V{y)c=hQT?O8pcXM zU%&FFK9NRR|G;=pYJJ;NO$2a}zj`l<$tissg{q14ZMQmZYL_5DGCx{YW1E zzcRAQd1(<_+3Brp#mp1)XP&P1TYSVI&nBPKC`{_tnm{tXwoza*7DJEi$B@VQzm!T) z5+>}LAxHgE7J(T9L>W&{76QD-Q`N`B@6Qwpo=Z*>}_$JAhIfSoBHnm;d0#*JDO=(HowshE`>|yYlXX{sDHfdGksZkDz zJxZ~Jp15KF3oyqml>zs`f%u>tkEJ{p6E5%Syz?_2c!!{oA{h}wzx9485- zeEydz_xauW+)*3V)gDb|!$qDCUs#U;x<@!FMRfDbiUpchA{gz7xs*bu-;dz3dKF%T z`S_a(cL-N}0E!LlPLP#&ks4lB;wFNeL>++}c{}5`hU3K$T;8a=F$A08Uhxm0Nz?yU zA+HU=f90aV^=oILGqm#ryJYzjN6u6^NHJ{9SczX$ZdMUO8Jj0qM1}HRGzAwp+&al! zPhdAU*q&cHDBF69YXA*e7 zp}4Bk-5DEr->S|}=3mI_r9$6A4L@E3dVk^_(N6t2ymkHgnLF7^=yxmz(`>UK7SjdY z%r41upbQ9~uXzKcPp#uLZIk&UCG}P6;tnk?ABB!c^#HD8pd91z$^FsRSnp>zB^LBYnU( zCv~#Y0;iof{=S=b{{DBk)C=1AJP|8{cK!>L*Ht?&V3ldwxriE-b}j-*JO3xkOxMmu z*RI-mE{b#7`2dz2o#SkzIc5(=zp+hMrl4P&k%Wc%uqz3lbcP%aokdR0Px48)e1$3K z)^t1b$dC23Uba|I;v6YCcXYk4pud==ps$8bl30+Upx-k?n)yBk3IzO#aa(=rFBk_M z)A3-pjtOtFj+wQ&j^V)V+A;a0LR!bH=jYZj8c3Tnn>7Bqb_}a<9V6C6$Ann}V3BIt zoY^GS#}M#)McrDQG@Hag&TL}uJ3Ww$U9{YK#oF!SP@UPN7C5ts2uDg@IIG_8l{;Vp zaAGkHrmPowWg1@jW>fCX>XjRB61YwPDiyYhQ|ZAZ;O)dudhnB+#EUc|vJyB@KhS9= z!iIpN)Q)=X8>r3R-?8^0@gt@9Me+4Z+7e;&CuQkMe3V!Uj~9xbX<&qb?Et*}XFx&v z~WOOv(B2cQ1knkV~ zeiZlz7faWdszZAK?Jm`=q2BD9zw7Ln<`lGK{qYfl+GzoCw9qPt8LS07E+8|S%dR`&5A1md{j^OaOirJM)MZBpXUaBMh)s_wI{ zr8(qg)#4QsYNK>fs7%|F zp(}FnLADiQPld=L&8YCtlCNp!Ed*HN-;jr@g>?(p?#de429)6#5WEz;%_>le+ojH036VT*37c3W!z6f)aJCq_s51dv7wj}*xI9y^|aOUx#yjb#h zkW=R0DPT)eXZvc;+Of#NJ!{7z18!(~?P-b!W&)+F{lMl>V;-vxEr9zkv|udmjOhr? zSgccD6!|Wm`h=PgeU%JcV&z>!t$EyWsL}S;o>}0q$mmBrt~(at=-aCAO4g$K&bRu2 z=@#odSlQ0>Tb;4KcNTVQwO`-oRM}MDyZjZe1p95VzPZYFCj1C88Zy>*)&nRioyvZF z7YFqz_B>vR&fH>s`&xZi$l82;-z?Z{`#ywz8Ja(n3>2FG5JBm%pmVi7Lyez{Y~`^C z$GgNxI5tm$KwTP>j{1y*0mg7?ICh;$iCT_s4AF4$E1{-yScGN+X<3sv!l4j(2h8h= zT!BxFL53WK50E2BK`zS@86AK`f|SI+N%`dtfS33yuAqUfQ1TAtyrUH*ZHbsa`R!&q z@5G>1MMuSFQsQi-){xbzoLlI^Ve`9EsmQ0&a)>u{;Y!p6LJ*`7;(jC=|H5!1Ay#c2 zr7GpL%g(oe(t`+$+zc1*9Msy|YF)SWTHj=r_#Mi*g<4l{e(Z3?4}_q`140l4gs2@) zBH;3Z_)IBFTN+cfkQH|**A~#2c^@mmQinUtK*ASiwl9rlb==`g|{ww-0`Go8RKlEYKG7NA0o;IvgqwIfSYQpqZWR zd;_IprGu-KV=&dRT5JUy%qduTaAz)mD_`tl$P;W%WL`}5087eaXFwKR48>-6Oq-MI z9MQxDhqcdM!w<4QPr+zC-w-3#rH4#)p%{(_7Sj)Vj8eYOBf;=}=z2Q#&|GXm1WCfN z8#x5ZV^L*@%`RX*5O^NoP=&+I(wiCby_6TfI{93i;D3ReM$2Q{m&cBTZiy8Ml_5-M0p8ZZ)^qq2Upgo&9saDX|+}6z$EcpjbK{yK89?Z&N>OSZY_$8@o z!Vv>)c4`(7Tb_lJ?Vv$!z}A$+jzlzVYYJ1am9w2GUACq$3F~gZvn01QrC~$Q(9{-t z)f0-+!CB1=6qRp+^p)0l}niD9$D;#QwDbnYFRGEAj(^yc3zy@VjRT+_e$>*w!PA<-kH@^!o~}wmog-qDIx{UbVn%3vR>q98TdQ?f*G1OJd%ydVrQuZ zY#WU?>nPWfi%~D5+to>f-z^)wisPWR=cxF$yOc#g9Ti<#9(}beHm*`vCr&+xXfEE= zXL$2qzATTvg!f>;9rzv$_}WJxSy}A3ic#2ii5yi!+scdECyxTJKvI56j(F`OutAUV z;x|JLZ}GIX_`n0Pr7B>y<>A*p#=y@hFaArYVXkF36uYNzp)AH63Y+u<8dMoJ!BQT5 zljAuHO&b+mQyzUlezfx9*F)3B^IL0CbORZb@+jH3a5Mq@YQWkUPsPZKCUHp`Z0;dr zd2|^CgcJY{u_+-I*ZESo^W{;|b_U?CAs4f|bIKr%x7yq6%rbdtpXDW`v6HJorW&9C zE7a!&Y(hXTqEJVe;zY5bVr%#{$`f#O2kcQAT2*xg{_wqX|=vxrOKfA|xoH@k5aqZ6G`T+fk`?HYvz0E8YdTy@Fl;Fx{Zx#+= z;be$;a1!T1dP^`zsvvN;1`C9p2~>X(4htn3D2v>n^5rRZRqMU2G*U2xHP}`#&|^K< zc`B7|gRNA*gTZzUqVSXBjO*x`M%iio{|BQC-0l>6I9eqZdXYX>B=eT_6*jwyf&*eE#AkeWKpWB3{T&33?+n^)2N#(n3zRzfx6^xeO zkYEz3yQ9F=(UQvwI9mE*wCDp#dW?TJVAk}r1_UA{Ibfc%B(U*8;fBxMCuqyP_8ucT zeT?-AO`U8>y;6r)@6eQU^%}}a!)Luyn+a`YD`Lo4HILuN7PO+l<+0n;jM&_Hc!J+^ zRPk$*Cu6ERfYIZk!3Q|o(5AMecx>l+hn-7C;NT3O{1A^1^X-2m9;qh7Ux>;lH9!Ki z0T&ZoT+T5xjzQt6T~TBxEYHC{%mw;@YPjo$ZG{O>|464PM8>DvutbJx9Te_-#lAo< z{K;NJR3s%nM8l(cZK5HS)L_N$Me1Mi``ChoXb?y(G-Gqy@#IK-PH6rC*1n%3XDQ^L zPfyI(1NpJ$Yrkrnr?*yf=W<8O`!Nt#qB2Z7?&5d#=(D-$r2HM8#npQP)iuZ;(6Nar zndSclmLxj*I79T0)a#6*A9jOHhVHZ!Pc=F3FJ^7YG|AEpT)K}fSj7yn8-!78uAjYH z;_NQBwBu{e{$h>4a=Zh4;Jz4?e~g-Q!<=z4W6HK~u`C|;h0H9X23pz9jR7n^wm^-E%`H%6 z<{uf!0}GzCsA8y_HS&KTy*&CCYEm_2yc?=YA0UK9Jw&^E1GL_9EZxK=!gGS<7vm$j zvQbK9X)`Qw*BVIMXQ?A+khT(A)Tf--vU-v>FvS*)DNdj;G>Pa!q5!o~S{a_(`CR-S zwX=1}SRjfhm^;cFSiNho^T5{KoGDZWt9~<UJ1&Dp?_4O+%Lec_`887V?_bnoN&gq&=z%1Tco;q3&IaRI%#7!i?%CQHM87P= z>m{})U_930kNRjsXU9Ts+bgx`e+%5kIHK)(1Jevd4E)-_6$aih@P>iW0yrfwi~j9C ziTmKE_7+;&V+Ia0aF9R(+eSOR+w4_=fn5x2Z=j!nS_7Ld7heAsKs9A_WcNwz4B(w; zS^jESUN>;Ky%?9cX{Kmis2F45EyPFV` z;JsomPd89upv=IL27Y1S0Ruw}>@9#&-p6r@o~v&=OY3VO$H2EWBEVM$J~!a%TVqde z8~C$N6?CBZKkQG zM;n+cFdUH`zxW*0x7ypm25vI2n}Hn+^f%Dkz-0nhirx(*_799)RVjd3fNu2s1A!i=HImFbfZ5(Xj&}CGQ_v4^^h=Te$Aa zq6iFthjb&1jF0dPS=n<;X#Q^SuIGlSVQqw=w@eAkdLiMGtnfA+V}?i1M1!!43q?X< zgGc&KWuZqJ-y}WJD++*!9Gi`oGY4iAO60QWZ(vH8KcOsord-Z7cpoV_+ECjOnSpD8 z;Rb*4CN31fUmTjhA1{q<*i;a@;cdP{9KU?VuZM1U!962rCrk-w*f}@sgDQXy`~pLEqb zC+Q1m&Qa%rXhle;XR zV1b{O%7!<;h4UNXH{?W>33Wh-!SiXH$x}<qDhcCHGNSuhW8r?#} z@G9RNLj3a~^<>WTl=<=sy0=$_;(s7Rr~9^tF$a9xKD)vSEqiSZRt9oL6|W36Y>(t) ze>6kVn1D`Ziz2_dj|}bTp<#OSCvJUyt%_HHSPux?3L&JR07J z-Nw{^)0s8lM`8cM`q{Z`BAw~0LM^zkOgd9dz#-B{-jol$f~ELA^i=lnMn#uM8QGM* zIp*k(Z^0aJs>AJ%5HOLogX&oEl54t&0ge=mjB2DiHYW3x7cU7-dzPMe^2wAZy87Ua z+k789O~uA$=E30QKn_RGsPP9#IC^ni+5q{@LG|p(fy$5gy6Ee~ExK$JIF;3Y3sbh`ivu#xBC>K5h)`SS-DulmZgl$)fkc>4a*5lSvP?7 zm{Eh3jzIpvWL*`Geoj5Ucy+ChL?FhATBz}G88z#BX5tB=(}Kdm@w=M*hOJ3-YFK0E zvS1`cfe!=&kePbCkXh0r5c&KBD)E7Ozbq#ZE?i}WT!F_*L9e+=_Z=z8RXG^**exK+ zngFJhGs)oI!y>|{>*(HqF%6ylL(~2W-xz-N3Qao$O~o&8khZ2m+*AcpohvN~*%z*K zlI|bi;f(!6kHVA4jeg2ANy@GOVYK5brJvqY6LD(*`>7UR`2CdDNm#Wb&$oeJ&{=HY zJhD#lml-+@i3=THg|0u0bOCw0w;gYR<2OhT&EJ6R|4j_94vb4D4s$b9JNM$%tZvklUhppIaF{(4}~XR0HESD6m->_J_0kP6d5 zCcMlz4xg(ss2g?}>KOihBYV@jv|P^iZC5QL%ta<87NJ*2~-+`2K zi9?Fa*3^45U)nJm*nE)W|}Kc4`@16#Q|y(xO~t~T(Y07h0Tuns~&y-jZ< zM^@ria3#Jz6`-rx;vHlCxfVt z=RbaB7gihKg}QJ+GG)St=c zc>ZGtc4M$d+i6O{iegUAW6ZfFu@+ZvxWg))ChgvqHc~$@+cj$#8rK zM;}{~*B|xT3-rQfX>3UCvZ8SrBUC z2cx2k11g)<6@LX+k*H}+dy(C;bta%!agM~++oJ{kY~UpWO9ddWNQ9)k8ntr6W;-Z> z)8JV4c(U@pteD9LCJJ;FYGCy3L(}dz&2|8+T&nXv%Xe4CIMi*baWi{pY9YSZ`~;lC z@_qoXt7_j>LZw>QONq%J+X|D@Rw4aYiCUWCOy;;v&oWmglJlh7o~1Dg-4+Xd&WwPh z`=!PvC7nMHX$@JE-S$jFN3Uc@7r!04AzLrBf61y1W3SURUUk6ESLIGK+0WUnu!2 z(Nux+_(6d;cX_&&h1rj{B5F4ada3pzHWxmjIugUDfg{k9gCb~9q~wY{*MaTanncWPG+~sObjwN${Cytk05z=BnyoE&%t`i8pRv!_P1}B6^(d z;W5oOa?Vd3O>_WTq5$=SCN`G*b0c1VDW$W%!)-af%E$f57ONO9|2%Utmz0l{w7-1*t62h;fzb9iG*cH(jX zug(h0HZaz}m!}K6wF1c5lS=~c*~_;CP&G~gA-%!+-UX_93tr8{WmrEzL5Bi#qeYVy ze2sxm1V+V=9F}Za4$9{icfS?Zv=M{Ci8kD>G90@t8UejI`m|g5d-)|6Bujkk1)H0u zi!SLUC)%*Cz(S{Sec^ONYt3mQ$=d?uQLgcpqvaQGshq!kg74p|#QMbf_?5OkF=Egx zcis=98S2+cfT8oq?%2wBY#4g9AIou%D5BuJw4PpNpSELwCog z#bOb@#%O~#|6%X^S;i5>PKNk!Uq9T;LNF3Jbh%LP3rw!>L!oU`@@upU zhRH7D#sne<<%8bNi&P-CwVs%3SJH5kFBGg<%H|)*Wak}{jq3c%9U{sgO*!>M9yLd( z_EgDNWZ^e(O875<7>7Ia-R3$F38ttYL@w&lI0|F|X-A_xxB_R`aXDv!1*hi#?G zJgahx+e;^HvC3CDRMGqj{5Q5DWozwRB!uQyo)nrt_M~7V8}6F6*C*rk$tka|WHBPv z`TP~HtlSFbIxjqaW~J*j=mbIZuaOl@^Y~a4)vecjVs(HcfM5+UsY$`)Wxbv`UEm>t zl*HMVc%vl}q$EzkBim4mAuw+yA7ag|1ayAl$kWl`*iH7jL9dG!Pr%UAhH)CB<=ih0 z=|yd&lK+A8dF~hf%kx%DF#a!Sb|EcV9j?b}s?_TWQYYg7}4LjR#2njd1@lI!e zfdCMoy2COnaT^p7yyOX+022*BEb{3v0OWk1Aq}`K0{}0#wU=kuOWbA1myHH+j9;gB z(utJDFonP34!rCH4!59Te7LsdVSC*wh8>JP8Irddzx-|FDd!0^4vL@-6TuU?=1{*j ziyVsa%Nqu4e;w}^pk6E91uRew#C5`@03GxI3P*YylGXUw4*^8VF5Dh%#cMfDuMXF5%EHK*G#VQ4Vei=TK3{Nop9&8aMlr1N z@4Y3tysueNj$=nJLpoewrj=igymUqKe}MWD0eGxt?*3*ZRrX{rC{Nsnkj6Fl9IdU zuw-?#C8h4R)2;_ZG(gs7+HF?^vS6#9eb;rj-7wLNyX{u>XPt~~fQjSc3^9Xu+il0* z(AteVy$Bs*9pMgZQWR+;3+uAmPKqE(o}~huOFP(xW~RS|VfkAwq*jo=CqMvDV=CmQ z(6Efo!EQUY5YZF4YC+m=J8PZ`j(A@?6Br!vmhDm4>~6be6zF!_N$G@)FzhW9Qt=vE zBxX6W^xbwwjAS##twA%NG`-mEwli7=afj8=CtSb*L;&}PSVPanZ#zDRHdtDlI{R_B zv>0W&+0j}DQ;5Y%55a*rJ9VcNlN*z|Ug>n2>33b=iBc;Ej9_790_pf6Pg# zdknDhcB#^A={XHVhB5Bm`43O4~3*Y~w(^_7{xXf(6x{Tc?boaNopkgYwu3P;*YN!g;dQB;k6{ zO~JP_2CWleVJ6Ze;)%2`QmL(0@a=0#onfvL9b$2p zx_t^_@9rZ|x(2`D60LpawnFLy7|QJ+SvjnfnlSc-yJ%l^Xv=|6d%(F;0Njqn>$>b< zxDwC6O#8BuYqW)894>Oi^I*D+j;IbCX8+uPN+XTUCC{8#z*KdsTJF`>rm$vtAo zI+T|h*ngg1YcjC^7*(0RPi=pD7XazKIk2qx{-Ev!;;=9@~BT}iq7|G=;(tOi9Y`RC2lM4!vQp1t+uI+ zyvbQFjG-D~gQIY!N+jLPg5%mtNUI83S-%vk$~$EPRiAEyR%Kzhs16L;nW`%}XlwNB zuhKQT!RpRRg>Y$8x(4km{@l!>M~**mh{oi`}uG%aNblO|L{=@ zGhb_U*WVkk#AuY5$`VK8SuBAgE_ke0!}G3pF|q8)w9NdFZAq#6-6zs2$4hx%!`2yNhAz6`X1ln67Qmp7xqMOZr~gGxYZFF>t|MMW2L z0;|@~MS)IRr{`6iJ=*v)Wi!3;@WHy?ZXwd#It*uzdtjI+XOFwAg6_Pic#vtYf-sxs zMTisQVHa;xpqj9C$1yMFB2tz!2#DC0mo|gc({M(;MQX)mAh*A0Y1=0X@gDcT^sP_X zKEZbs4`waj<-T>6HHPvqm!4`hC$~@Zd{WydULGzN>~aGq7zhi%b-?rD5PRQB_rPy0 zZGQuM8Tg5Toec~yu#JH$1n@a*&ra_`d-++Z>igKhY6Ghbyk_7<14|6J`ku0iql?H#wZ?Gc*=nmq>2v^@P?Ylz_6d4$7z}2^#J?&t? z)z{meI*(9m*BdxbFS$s7^%d`A%knp+VK=}8E~&WsR@et^2A($XxPgZaJRpF=u3CrX zwRiC!ehx!q&<85xAkLP_51h0F}8;1TKQ)rFLCbn1koR~AVQ;&-Ivsy;&YLS-IT zVA#SSEmu|P;rxZlM1Kj6fI&Eao_mJQQ0mWCmI&SQU$SUvv3_dSxwBZ4!VZVUC{!ki z^3%vk;XstjqsNsJO+$HH*e%Yj5!Q=)3+vG=IXZ3_m0F`el$K;<|DjB_2{M`%+3&%) zu^7(+&^g(qGB-EEFdow_VEA2{%PG-b$v%RcK9%f`AftA^GI;lPe&wP-5kGMfR33{m zh9x>tX&EiiRY8%_&lyKO4!5mY9Sn~i2Vd&AD*RO^-y%;<@(F2J<#;&4wnc4yCHNj^ zlT%Ah&HS)@xY37O`5v>JmLo_R24NbrBi>fQ4_)ZRnAqRL4DJ@U8>5+>66T;S4+>4j z?Ds3P!F3EuU}i$Y@VCD?y$6$a^@Wg9NM0WH5Ky2ayiO9Ks<^q6#25)hZs#*wF2603iT3I>QY9b|Lv+FGmB*wzE zJc0m0tB7mx~}z(4~#8n{M4+}HFBzU$tR|AyVr zts^ta8+PPkl z*hH9%FR>&6#Tk`kdG)O%xLb6_AYRB+oY;ejyq10;7oD0V_CaeJ-=m#E>w_7iPecS- z%oi1nHR}-?Jz%8drA{P=ni}=V)#$sFtqYBy*z9yl3H&l1smf zfcGzUQC~ujtsquyfI#!AkrZ=6v74Clh$Zv6kS}XUO8+!fLC7VZ;d7`J} zR~$P~JFWv?&FDN7t>$arE5IR_XK`LD#96q_lLl%LIcZox5w3Nd$UT85uZpDb=YB^X zcwHkU@l6plaGP-S5C?w9rh?JcDO#}?%$3dbP99Kz{(7A@Yi-SZiU(IH$fX+=sUCwLFtZq;! zV=8rTxSxaKK?DMOl|M@#6m<_^P)x(1IQL+G$uh&Bc>Hej;B9VD9G5mI*j|!B!{M5Z zKu5!&(p@`#RAq8FZ1`>3aKIgb91f3pj}0Z7PFV>I2k#EO_VzT;A~2?e;e73|oPEa5 zCXc7eT_r;Y-RnQ-nmcr&|RMlo|5hxzwB zGa2&5+tFDVmYi$P3CGXL+kA8o@?qT(`F^H+7Sx6LqkDMJ2gguE!NH4Tj;e%lw0Fmg z_`64K=vb>Wp&4%P%_;(gJ^)*TLYe#_4RoEGKZKhfNVB2uSh$K5_`nP?|3q1AUkN`P ze7Y}%8}pRK#^&-j*#*BPxg>|3Q91O_Ww9gk%3@a(Ahi%zW)y!h`4scAeg|brUe>x? zUNuUyp&gw=7-1*Dt+7(jg_--}6z?T$vp3S67{(0}#a~RCgK7%G1jrcyW156q3w{ylFDVu;xDPJCmGe53^Z~}D=^d%10&Bmbcu3q+t3vsNy{PB zxCe?UkMU+ST$>gfhZ)BdD(6-A)HAyF#LgDtE+r@}xXA;%>aGDdP`O00;C?s|8ehVj zE-v*_bE!Y1ypEztmwF3d`?NM1(8mT^k7EjGo#JhWr{#FP^>^DQ9Z=Xl)#&&NNB{Y! zgCtq14GrO1Z#6fl0^b_>*(Y(5T;#$_ovKSk!rii%;$)vELf8`RO#Sw!Ft7L==VT{p zSSU7;swsRt4{eY`9EYRQ&b3LG@u1z*PB_?+UEXzkQ67bB-NlV!hk}Af1E;#E-!cUw zKA32tS7LNI{=hXuu>Zb{U`_;6{~~bwNZ3-p`{XW6$euTEUy0(`27YE>KLdjV;3Gdk z(`8~6)xK*jE!RM{fsKPz%9jS#8u-Y-djcrs8~Vtz_J^Fp9*H2huB*ISXa3tqOkPPb zftKD%azjy>McA;ukDOQ3=Q(FHll-^VDMyJ4)>)*&h5wAu%o@fLo&R<{M&%xShW{4x z_2Lg8%;18B8)a&aUN7s#4ZVv$%H5{JQZOL@u7SU-H&eFhh`t+L68*ekSs&*N=z&7UQ7HsXoV3Jr`#uj4#e}?vQtW7ONsjvdo z0PaPH?^(3)Hbc22tkveDHfXSe}iT_6tl<(EOVI>6=5~KgKZ*<9`FZ{2NW_gZxSL zY^XEk20Vhb2U7*^pYwIj=uwbWrwpo#ltk94kH6#ai=K><5F0|$VK|5p8oogna7B;W zZmWoDT@g5Y&<}`5z+n(=xQB_-O;;`*&H@z$K$8}y8Hmz2%z*JqS2Hn<(oBFMjWHXV zdYV4969cyC7#@8GoqVv!ihJg8+#HTC2u<5pnZAKgE6^`rsI@tH>I6B?5%??HM4ISG zffaH}HGYWa@))k}id_&$ZiyHArR5HKlLRW|DdG|4E&h9`L4+Ci8O`W&>dxiSlXKZ^ zHE_{m984Ni6)7qD2eMD7gya|zeMd-Rzt}pQU~^T8&j*XkQmg|+cOj;vJ>2RKfU|M|3~`ig(v)%_0t@`g01VPxqEL$KXvz4@5?d1 z)%&Y4sZ&n5J2DweEoH@qdNqWK8}9CYOy%|OdFCze7!$sxc<3SBG{qS$CWz#XfeaZz z4__@TaEV%8)Vw?!o9dvOP|l9!fTh-w44GvL1Z|mya(c)tlb|8;I0I>j2-TC$R7w{# z!~u1uo}npb%lJWi?Gz=j6`T}+0=dd}EVzII4tBPhgNwRD9i>DoA0#;+;;$Ixp?_g`lW7@NfO1O2M^eF^N-2o@alGw&&s(+s=Po+P{-{ENKr9>E-0j zzu4CQqCNbtW63SL+zv{Bf4N=lq|p2`^00>`PdicC4$rE+0A$UoJtG`H0|N|`!M20I zpt)prbQ9+w`o*{*1s3v_cN^8C$}Sdi4_L_A9l!N0=+t6!^e1(ksluUX5jB%;sa0e3@2*yfHxjz;Bi_w_p2ghn~p8qP<2eBpjzaPE-2?}M7pfv_L1e;J0Wxzr92P0 zLGc5bAhX&`FhO}q2KhOeWrrKVs)fwrE9lORmRslTH+<^Khw^-py@xrQE)=0X zA7x31bx5zE4>WO0>ca{o6d^+-6iZQCZfMFzlDwfK7qMfxWsH(4rxbTW5o`mY2wlfX z#EAOGT$>z;H5NKJm#<@|gWpboV7Lq-0frWPpqj;Dh1EYWoVSiRNf_pkM){1Qs;nSy z%Zp%YnCUrA9F|HPa(0Q7eDx7fm@p(9%?U$KZB@PM<4j`FH(n$O;j-{5Zs1r)K@f+1 z61+Rp>z^+4d0!E z^X0Mmc*s=!8kdcqlk6u>xf*hX{ls}>L#pj(PcDlM>%|7)N2z{5zvj@O4FgjO0s15J z5TKuU3q#D?@h2E;Smo&KBA;ffyD6XD6{Ex0V36=gUr6)F%tt?rP(Gi@%s4U=wpp5d z*81Jgl}N)4Jo!@|42VydenbeKfl1Q zVC(vM^{(jV53HM${e}7P|116cw!z(|y?;fvuAgI`b#vYSAN2F*5o)tl{rtk!lpX&g z{rnm1x=iZllXlYJ>Sf@&9rg6JfprFU$pbrWMn6A2kpDDpB>EvgFeB4(=S&O8|M!4( zsHwk1d_Ri#?h+ds&Bv4z{&9`yd`<>1!P@!SKduoX8)qn68f>r!EiHM{rh?h1-6K*Y zv*7M|1@1RZT4lcAhT`*mEr8YUqB&c(08X72SOB{k6@R;fNPCxoTLi*U1{6?a?}hvn zibli4+mzP#?F72Fq)F>;_CZ&9*MC!3Q5#MF?e(%Ze)(UPcUSrqY+c^f?U+g4$$os+ z__L1wW^`JxPG+_?_Nw3=Edb5^a6ph7pv+*}c3P*?{LOZ#22(mEsbOgy3`@8nY_004 zLER+W_LEGpXSJ#GUEqY+6}TCgVzo=~Cv+b`%^c#UPI zFfkmeYEcR^OOeL116EI@7*l(eo~$hxQ6Y7D9#m+k(U(b0(F|TeeuTd?sX}8aHfKUn ziVD5sNE24pINxV64ujrTA}xN0SYiDC75OIQ$~Gt6#P-y44rs(M>40)vL*;ngb{ZnT zHgJW3JAaJMg~Q3|EXn!o2lxjLVEzAB{(;4Bv$0$B4;l6m!izGVIyG|9j* z@Ec-KO;1(rxNz)BFc!U3w3Ybk6mwi*NfO6Ul+Z^8J|kDraYX@0)&l>zV<^CKJcgq5 zAgh4KP!MY&?YE%g3;0)N;qS)a&1yLZwkIoHv>oWS5?qtymw4l#IwaYW)Z<)Osb6dH zu8msaGnarCWFZg=G*|gs!%Z;wE=uKbfkFJS~KFkNNf-OLE)DU=y3gDDl+F2FUX{RJoFK zEX0!pXi_}Uqd7GP*@id6LE!HVbTU_msjnt66})AuANGHh7JpWuRYkgmwcIvI<+{1mQ55YK#&lD3 zTeW31sg~Bvq!`6m=kNPUQ8T0;vwok?=j*)R?|YNmu6(xN&qH(WdB4y5{CWL9uk$+R zpc5O}GMuFfXU4*JRoUvu4Y%_p)>C3B%}cmN7`w^%2h=u|(vS;Q8`{kd1-P_eaOQOPdw!pnnxQwTI1d?Vj6g6ac{Dolk(@dRqDVi@#F~< zsr0h~DG;M^6y*w+1UuK7pU?xcbhou;f`FyC@Y6sQMlBV`12}i^mxfpgua9*Q%8=2L z*KI5#7qH3kc=^9xibI6q-WyPSs3VQ+ov!p*1n=#8$0|PgCurGF#E-lVvTm7o@3$n| zcO0l>fF+ylVT&c7SaPi;S6edCk{?(yYe%p(?`97sq#=Jx9~>dd+fZwwPa;YFVuOc` zQUP>(bBH)imQ*H}asO!)js&AG9Q|*=g1CHo#$wTv_EYzC9=pKu1j;C|oQIralQ3@u zn8YT!1(1WE8(^V!ZxZqkO4hYo_Ce%^!`UV%c5*C;J;dDD(Xeyx=R5b;L`clv|Blog zuDm*t9BGmt9Tio;GB1>hkCzv`C=mRTBTg`4goZn41;?nEmQaL4BVJdb%E{fSjtj<( zxL=_g*g$?i90?d8Bm^*UTWWe=HN-&RAL}4ahKZj2u|oh|>a{DqzilsCxy+Imm4tqF zTFoE-7)ye~Ak?wiurI~_Lss^FOG+%cLrE;4$Vc&&=p)@93c~yDw?I>mxaEiL{sbMA z(HQy@9^Bycs|W{R`ESLe)jQp1$9`Q&8cNo4Wr>%cjbS!*e&LoK?kEe*%d%2REW4H1 zwC()HpkI#1Hy@HD!sg^jOP!B(+%5U{!{+Ygr!2db=GGO0^%x4L=DJ7QmHzu?6m92+ z^Px{YqwU_^-!-wN*#mYkasdX(0Z4FM)YX<-3zERYpCZA-kC{A!A5l_D{`R1h*L_Mc z5fsXwEc@a^Y~^wG1-Xfe$q&)XWnomhsRu&ziYWkCrZU6Az;CemLOYJdiP%xen&QgM zD=VR>8Ld}QU72jao#u75jMm#UZ48}ik*0CzNL4aFmaKuSpNwcd(_Ktw6IGDo>y<8c zIt&M6xaZ~%h4q1Za4roURtqB$Y zc!rP+mz(zJVYqCVWV0j-vU2N9J#3fR{W(?IF|b{9@Ig-7r3NLpV7q+BUeR{ZjE7S$ z_?ipsv0Wq$+pEdhezIxAJ&Yxq@d2Edm~!>U!bN{AT(k;H!P*7ZNwlC#%fKyPtQR0d z&O#?)Y#P`~_xY`Go49#bM@dp$O!qIk|a7b}K{9mR9j8Z>st zXO%GM!PUbM^9g9wQUK5n9r8Jev`b{d_)i2pZd9g=+8fJXA4O6VQO@ySjR^vJLNX#b z6{ol6YNL~}? z@$v=Fpd(WTRwf1&`Lo2TM3FO-i>`*5?0FydlFjp;C0AHdrvy=#$D^g8iGD@tw-ovtrNc_Mw*N+VSIIL)yO}^Lh45;ZFB+doZ32hdU=5L>j--4}x>*^7H!o&_AgW?1d6I)@N;r~_=xVq7gZ>-&6=ik_eED@^%Fs<Pf9{_a09NSq@Tm3=vuSntvl* zb{7*bj$hkpcGc~FbkVqxrDz2)0XTL~Kk~iSAJ`2U96rNL1Tr5|0n<%n*oij5Vl~!o za-2i62-s@Fhn0z|DtwOxF2n>8nwK|T{?e*Axv~U>d5zI0$FzV_`vKsBVSxk#z5+L*F}HopQb z69F+Td|(m0x(C<=x-Q^egrz%nN1sW%qyg)*i8~#-Q4PmV4gS@Nnr2-h zV`R%nJR0rwK%x%#4f%RJU^zk-6x=xE>`zpwZ!Bh5ID|UjO1}w!n=#lCx%rlG7$HB4 zERma0FYOZG$L&VNh>0C)h&a+fuqV&N3>@Q3j;y6jbK6CqWDyM?vov0w;cuxn%-NER zuKEBL;~|ocgXH>^G66Vol~(9 zwFhF<>1RfaufgM$-cDUKCqh@u5tqS%^JDT{DtgqD{+0q?9Z=U55VD2d4@A@q6@eXB zLaHha;6nL1(%-&7um~Ci(rAXi4{7H}p$5*ZRxA@-NY!RIq8)GHr4}nwOCqgKFTt3! zne^f>WcZA;Q1}dpOjRKiI>SmJG6ok67*@OYXO%O$l!m_z-)|M`c}aP=tPP zGhYY6w*@(!o{!J?`NiC-{-jkp(vo48Jg5ZjuoGd4VWfrONS~|&toOuYy!{)t^>#O& zyeqAW|NTs3{nU~Tmb|OP5J#|0L1jEk!C28$Rr(U1MAiAlSDVuV@T7JNn?iob7GWK;ZJlQLFauMf) z|B=|&=Kb7STIjFJ5&PPno&sKhJF12W{ZfAhy?PCw1LU{h7eJn6Z?89d`!H&t=^NTa zS~lbJol%SU41!0p9cjDD94dPi&VS7M{3!fO^Y~lkl9%T5x5`dm)rL>7U@^3qx&^VE z?T9!$S1zG`as=6W7QB(Z7bwx+H)?}@o$rmM&YDWj7K+>r5ugWXF)U+IFcnMc%sd;y z`{~}1z!jtoMLAtTJQQFHuAqO43@r>6W`Y^4?i4ExOUqcgZ6JGfK7ivue*&r)c{=$nD`LjWB;FmC`up#{=TJXK`2A-@&X1?*!I!)%rZ zg6Fz4&Q#9iR{qL5e;c!EDnQs2oJ_57WTiE|AAY^Sw8V$c29Jtnc$O9o5dd zosJ@yasJt3aY$~ci^HKn+VBXd@|TtVaS`Xs@YG%oR`8a5BAIo9C8d_!ZOLJl9B4_a zCA(X)lO@|((#w)VKLtB2c8g3QKS_R_Dw^7WS-lLbV5KE7BF{8aViMwAfBz^t9%b%wXh09DLVbtq-_ER}&!n5Evy^4R6)0#skKS*pc3 z`E^S@k}w!1a-lv5*I_dVcby1#g-^KW-~$jYx3I|$p9I5;t)iC^^->q5SF}vpOE!`1 zLY$#>f`D$bY$8`bs_2t7b~W=5aM^ucrQ12(c{ex{hPNyOQfla`t3&F|Y^3ZEw&|eVT@!vQP;TFGvP~&asJcPNp`!{DiYnSP_v1H2W8)Wce zN=xzO>o*f&;TrVOl90+OPk)?VvEY+5_3GVa1N*6u9!sAPIt9^VwT1APxLo^MSYhaQg`2z->(n_HyLG!zG4a z32FOTaG)=R&GwO*3chSyxqU^;|A@2Pb_Qq@Oy4xr#;zSAGyX~dGJGKb*f zi;f+%%z^owi!6iSck9*QH%xw<_F#NRlWB|W9c!4X$stT76*z{tTU3nVf`FX1ScFXn zL5-L=3OU-P;rj(F$c!C~msc*1huXrB7HEs7$4OiCHEq$-DVE;Zk{vARYso)9(7Vqp z`N)zzJ_G^I5Q}!>&tC}Owm%Is5-L`Bt{``^<6nP^u0@*1vM_e71JF6+UytGY&}-?! zU$sh;Qy+YRac@Z<_2Cm!t%u0%Hdca|Tj*X*3ndp?GRBh8mW;Awgc7q3C~RLIV@v#o zk~FV$^v>u663fj>4t>;F`268Tl+gKAbewPoT#SXE`T^7xlmK+W0=Wf4+GB|?Vr5;^ ziZOLQw5n{))dy9k_Bj!my>TN|P`+_RA6}bN)-`pVw9QJd&C@`h`QR%YpX9pm|7H7y z)_&y{+xPdhZfM}S7vv$`8_2ZmX~k;LFryX2;MdloI5R%W(+xt<$koIkS6PIxM~Zbb zoCpn%FcF}~d#OIf&2XGoaNYnP9BLvf)3e*g*Kl$qo~tTb5ow&k?232$>9ja3-;T^< zAmN2(<0f{KiiHRvhR}Wm|KzjU82=P_U+mxl3As=`$axPmSy_>-L z!4U0AV+eY2gp(Tlw~F2%jpA4$2C5&3Lq?7-0%KjNn)(In!+Bn!dPlh0&GjESr#;rV zy2E=1_#t_zT1@#o!Y$=53_{=a)~oi>!?{hd+2??(SOBXcY!oE_W^hnfQapK~?j7SoQcxm;;&K-CmiY#vUAR=ay5HTe0bIJ-_qn%90C^Rr<^r}ZXz zvvYO?$8YgCUcUbRIIZ~`k)fR*pIUSpvW=`VaeNUz%iF=b^#S(J28L7eu=l_JRjeF+ zjIoc2e$coJae4%QPoz+s=Ptk?VaX4Mq=8xn3v7 za4C2KM74*7GDH+Nt=S!ABTMgGhwgIaInuPmp8SeWbiw?eT+yGnqOS!-uXjcH1VzV} zZHzRI#xuI2$0trJLF{O=e3=doBfQkF{wvEnPf0H_zeZSMyxwxAglOoBfyXC%b*A3dU^AA=R^QDpo5^REkHwG zVxL%umv8@zI3^{N5DLwc8s6D?EQSbgBR4Rg$ePitdLq$@47)24$~Rg)#G69z$8-9k zEQK_hE%|ro!V*oMEzy9Cz5PzZq-TcDOeL@$xK=}^@ulk(I7K76pkb8y=4~F%MWe+= zp=d6zQeN6ecjb7>?!$N@%_(Fm6C*%W5H-Vx02@TF7il^VFJj3B()^giMVc!0VD@?q zwnfjA@r}%Ze-;2nmGmk@Md2sGwn&fu$e-)=2yS#e0!v}BmOptZs_K4s7dG}t8)~ac z-YTJ$oWBUUA)BkpUYRx=Bzc4m!@`|5fa?$hUENz$gI}X~NhTNtKdW$VEhYo06zhsC zEgnA%r%E?pfn4S4)o2ZMg$-7#!Di{<p#rs8XVA6 z6z5B~upUc5*x)z0IbMFu&+!gjq?PEG>wm$0@m`_h6D#wF_vDE=W1b|PlW+uy&Z4N41X-a$jMA`U z`aQgav|Ebb@$!A|iIX*6jj-@pg<=iDn{IO;{V_gI;(rR5g^H>r`0|KD7HFQO0y}p6 z?m86ezm^Hw6s;v-h@)&fdTcgbz@GlNPvOTYT<3xad2l6J8S(3*(9~(b+$iX=)AGF^ zEY3&Oqp9C~CBp4spdctiU#mF{zzNL0vBYkot7>nr`~Jl_Yy(Cb;xAd_p#IcOgnC6D z!h08RK)7<`CoG5pPoH!KQj(9%V`AyLQF%@);tSU8w%*!dY+uECm>;ctS>#((~X#VDSr8 zd_s(XgnZ8p$mPQ!J<$hYze^*f4+7|-uHg))0`q_=Cx&h` z_2MSfbK?8P3SQ+YtjE{rph;D+y{a&DVD^k!D8oB(eM?npctI9I3ifdb*<6{criXdu zOKN_bh8NVti&{}raaK)}?sI*5Bxg-$SxsVuuusQYO%+)+HTk2Ppqh9lGGImmZ;)v5 zb}gmZ(;DbDunMLtBz_4fWC{aLkhkL*+|3d%Kk27&qU=s&Vu|TO2|%Y$Ks5CSvX(kF zMLVt9`|$2u%yKE*r1S3pJUB(Hj3s}mdIaDyR-77FQI#B;Unyy^AD&dE>d27n`~d;AhE@ylCAav@A-2`*d4-!_%(S90ZBp%+RV!`Pjdn37 z*lP6*u=DQOJ8YSrq8h$I%Pax=Cx7~;_)Z;1Mw)MD9BFFsr~O94w*Dy6{I@*hSGS{- zI?}+`fqApP!Kgv40B=lF(N|XaF#1^tqf*toWf)lee7UE%b&z1ir-+vU<;P!;xuSRrk$ zacKwB1p75I&)w;I``A@MdSU+myMj=1>9};>@G5DoTk0AQ{XH1ZW{;Tm^o}B!M5tX z&PJ2p=aE&!a4&#?20q12v3K2k*?jLmY&M^W88#oaNh$sr5?b(!qngb$6+N%h*?c>H zmkcKj;oEW+*6iDStS(+Y^p1E>oA2_wzKPBE*S7$YQYw>Qa6Fo zOf#}{Za6j4xXmY0SjL+1@|y5+>dlVVLj;YhYp{(jojO>w5v8 z0uzgvrlK8bhlv|Xb6|p>`j}vKxc~C@cu!2c4fK3{>-(&?0!;kscOfQjLuH1EVFPkt z;(1vh8JO_xLK|LO{Nb!g-_l>*-WMF1Zs)9%`}j7mNKdARXLzsliF^hEoJ_e>lH#=eGq69!J29Eropv)C$-CSp%YRH8%d=}Qx`XZo-3 zHlc@|Kj8;pb6>shbSI4n2nZ4ep7M7we<#OCvNO_@x@t%}g-4xA!QN(?a(U_a-xIeW zk99dZmxU^a~+_cVV{<+zKlY2|9ff)zg&2p`Pof zQ6)h=AIHJ_>bX8YRLuvbYw<}p06#d_09?qg9Dob>J2^&X#eW^ZXU@q4@T@z}wQdl= zgSP>|&&~Me0KT$3H-Mi4n*h%HA;uPPJ_ez%LjnC)KQlIY0%=uBmMQguCW+p`s>-ay z^hlQMoi1@7toVn0_;Z(D;?hc&?waZwD~S;hp+Iv*)6h@(!hb{Mw%`{NMvRthx$gE8& zhWTb-xag{5OWHjv8^lvsW?t4Uji1|V2nD4?%*WfkVJpt+XvNb=1cXAC!X6%^0 z;{(*YdWGb3+J6+lsBz}9t{=oG~Z)@w5 z!G67YT2gfT^=#WkEQ!8xeLY!6IMd|g>y^x>ZVk*MtcM#N`ym4s-i(M@&Ne4AwyA~X zdw0>~!^tUYINQGN4D_qdtJbd|Vga&~(wOUQ99yBcaR~QLxtd|$swNDem=s?^x`if` zM@F+&EUcfB8ieSuLDDmE^;5Jx6``+hZ~983Z=eop<2!iitZ$vVKA@0>FanCrVKSDn z3s6{!;>DjlXR^`*f;IbE{weS#eZ+d)4TaFmg|tJ95m9%t!T2f2{&@M3H=!?)W?e#) z7*UJ`i<9jh*=$rLCo!O991PnLd9-z5Hg*1x%O%~4v1`dQOJhj{Sw@y(dE8%H(3OQ* zYYTf(lSP(>YYWfQ^uaR3XVeiW8rp7e+mm0J?S{35u1MoDJmcB|CuQ^a-tXdg?2&A~ z5l?unP2gm{QblN8PLp*>uk5C2g=nXkhmp9C`;5o^$jxOaTWNeXH14j|%{5LgK0zGa zdJy%TTdNff15MD}q7_JSoW+1*uLZBQ0D`I>E{eX9xmIRPIAbvV`x7*`Gu2c`CIbqT}0L)3>U5@Umt$^ zI}{a0*Xb&}hEO~jiTB(}MOZ)(|Ai*sfb?TXydOOUVRj;ZWyXWRfSU}9$Koq)A#+XN zkS_|s@)A;9hLm@!!;zr ze0hy3yx3#-z#jr#`E2VCKLN3LHELu05{=C z3cXpgOiTzF$-0nBXZ=xdaFRl3`YoThbpQY~xBL3>3U=2g8!Z7S2*=-;*;*85HCzHf zS6bcCCC;@qeHG~);biCtCu1joVDqX{@wxaU%NhH{T1TaC{?8`2T${xgt|Hh!oy%c3 zjR0G9{?cEjoJJwg?;zCKO9v{!bbXW@+c*6qOL)U5E#SYpiQ-dC`=;+j;yu0soEyV0 zKTPW4SaRS&m}g*Vtf{CPEN%Qd;$Vz&`UdVZW(X5FpaM36cfy9RHb-_oxr-p;Y39b$ zJkFdJLX2q=Bno8(1R7Gn;tOpJ-b`5nL#FJT2eI^mHONDnmPokHdPWa3jah7xwAGUi z6x0%8(|i<)EV=V;e%bgbVg~B+TWkp>5F}Tl2tLdZBn3HG{Q6&`2A{>(&rC&hBmfeL~K* zVw5Nt7aexudw($Edw($Edw(#6-ff65hDrJH;t~4R8-Fk%j~c>O?-F5&^UDro6E0ds z{)Iw3sY+F3FWc;YgX79r32XCXLg4#-Kb5oV-B9wx0cggT!~Q5B$Pw_68zt?F4NMgd z1m5+z+xbQyx;jD8xX|I7L3raPi|=$}L@Ijb!zUZ;4m-%f?&*pG#ori(JYewSBG;Sy zqn|0*KY$@UJAfRfdW1Gia;`ug@|=U*PDdK#Sc*vX-neU9Aa^Aj_&SiA31LnQ1?^19 z-Oe|HTv-bt2XV$hgmysyN(eZvVeiGI3KN5wded13nq)ia273UeD=ZoOz{lL}GLZ{M za9UCSC$Q`aaaqIP$@AnV)A=Hq3(%8Qu(ha;DYeh{f*v~FDfWIc)B3G45XTbB7>9l9 z#Pjr3l<6y-OLr4RD6mSi*JL@bZl^3SaH(cVhy;@n_LnHTh_S@LXcb6%h^2>E!pEf5 z<;0Rz=){uEy(pHJQv?HyVGq`8sPl?Emu_V0_uzuPd-R|Oj;#Vt7XV?aMbid&n^h&J znr8`CSt7c3q*Z%cq3deFuNJwx-m8MOER~nSvXS^0gC=FbKRwJg)_U*nPqN2AapA}Q zcb<<${=@LAK))_Cp5hm)SD<}5`;E z3geO_u(c!3aV6uYf7!S1Rai82-3q)wpfvX=Ir!9F;TlOysE8#8kF=jL{4BxGc=>dz z{DnQ)6HLEC#nnJ6>8!tm6`3xZ&>&m!kZ(tT5+at)+`ujsSTwBbR2ky@G?bAwlD_(V zQY~q{1i$0u+gZ!sRbd{s;QC9!vD>0;5geZupwm9N5mubPgU@_`I&w3JlH5i;j53++ zEPOa;J3WZXuUtfB*m6YWS6=A#YC`Z`I}Irq*yu`=LRgHi)`;{lpLFRurm5(Mt4(q$ z><#?~b-*XWAKr=kG5&^)K(PVmqu~dk@|yVtVmWnp2f}W|rAms>~t^e1;s2;ooy{@aGj33PIrSjmL0>+!9l9hg87`HJY}$J z$m1=p2H{ebhS*~Y82HtBJky_m1hs0Quya*}{(+#Yf+4~rUw7-Z7!&F5Cc{*xpIR~IMUTkTB0n*2ZripgcIJj8@v`g=hg|ozmGFz2=8jXgfJ@7yxcAg@=pSKWnnH5n$*SY1%}`48RbAp4+w7?TXH)&h-OQzLo3D)t!&x z02P9Q&pAqDFeIM^5DrVSFC`&N77&^oefv8=Y;d65O!CM;iT99<$p0AYpd*e+{yf() z$$JV14Va`5NZSIF{00+W(iV$=LT+IV-+)OTh?+D2mbbzrMrXz1Y?zrYEoJJPA}8cC z0~Xw(F|;#F`0QhKIqhT>I_;!dVNMr#4=-Sqj#12lbcB&KbKERRiz*_WNykgjnVm{$ zhVN^IZ3qtht`T93DWSEx+)c!NtCg;G_)eE;ST1I-T^UCB;JKX4Dhjx|MRx%7H=*pN_sX#~z;4I#P z<0f?R&B`cUv4zs!lH1rb?!W_s)RGeF*irGI+8oMSK(5u$V6jB9jj{^Tz-FL!3o!Hp zCwcMmiXTCoM4JD>@W{k1^lz{(VI}zhUV#QMi<Bd?TCL!~qKcMwI>;! z?0$n6qZ8fl0&f@GU#18>&U%~QCmvGKaR<3bAPy9Ir32|PcxC)v!>1T`t%0F>wbLux zeLII<;ivG{O0TTJ?|AvKQ{p}K%0-|K&9>?bw?VJG@kF3kj=Ce%EBm4n(<^^`JBMC5 zXWuNn0wHPY0P0JU0RB^@1EGiDKGkn%Tko__yRhJf(qh!*Rtn1iEPL&q>UU8lu+>CNq?&%w8I)aiU6^$lMuX_X@ z;J*>+kO2M-d1U4)H%%1OAcb1sY$bZvQI~<7T|)@+F2` zt*^0zLWQwPq!eM?dJcQbrQH>0q)A8pX7I7uExY~5WS^Bc(MzcLff<1gbr%a@cxzio zizH#%{H1^bnbdmk<`#?8D^6Hns~=- zurAg}ATv{o|GnK>e?_2ldr5q6eM&Kf+;T*}sCh?eMZ-uTWI z0C}I~!HBQCH5~Cckfx3JTmFdCQ{bl$ZNpm>SZsq%SMXIT`uyF_zd6(G^~fXt<`Wp; zQUOIv`+IPhTfLtk6){(yYzNQ#@mDOmgj0?$&rEq={lFLM_MT-?f+t& zm8r=f_V>O0U!hYzvcxG41fB6WwFeg8FRe_?mD){BWrRRZWBKUc7|;xOE)pPtcuqD8 zdw;gr4|8DU{RJoNv{Jsw763tsi&W0HX)>YlG8a!!qDv(p0br~FU-Cndos&nH+mFlV zcvb9OdHJ3qygI-lh-Yoy%+FKN(T|)hbmb9@5R~~y;r?-)T_=7(FPNsH_qRLFK0lI! zv-zpd*{m*JK5J4OoINdj0`%BqpR|2Q2uh4+~ZoFQ0LF4p=;N#Wumhn#Liys@1{bPl)#eEOuQMz@qLaAuL9tW`jka zzvO^LN|uI`0)$0mi4M9O2r~}3&FRO%EZAbjGRnGZ(0)I;GLU7 z9CQHXhJ))~%YlRKwTCqW2PUXIN&*O~jV|p%TB!xS-O+Sq>PiW!h8MaEs$sa*7ZU1@ zedqf*T(MU-ENgGo1BEOtFV5S@d0{?6+Ez^&t zR67S8qi=RZ$P6_`-}Gw;;VieEBG2O|%D;QM!f~hU<9Le^P>b=(ebPI9KQg$P`TZf! zbpBQ+fj)p($@D5f6hWUvNf`V1%r1z1++?wm%Pg5-$#0@1r}XIaFbI_YqrN`)sK!X9nYOLzqORdNV+I}2yXI=KvfO4(uy z-5h#hQ8DwNMgc&RZt2!!=J{m{DgtD5G_dn+HC z$6rKXMJ432ckfRbDCG^dhoTQ^RctDOG_N7%cie z4j#t2M~GiVz^Gs3IQ;gWvp0^0dcUtg)QsbmN1;>c-@b>h`lf%31YxSBMwu{1yd(K` zZ+natT)HJ;8+!$OeE+-p=n5o+_j(ao1>oT}*BV)tKiq>X?;K!c*{(0PNR|Wt!(=&| z7{al8kd$-zb4z5|qLzq`ir+R$#Nvj zo{%heoF}rp?JgxZS<+(3bR|A{jZiJNBgdCVYkCo|I(Ko{gFO&`cRxeCO2In-0OgWL z|7pb63SL5d9e-{K@iltc4e{F`k2Y%147UFd%cIkuGsLR_Al?RIh}TFQ;@R&+_T1>oXC525hYm@w?qAjL*Nr@NdaYmb57G5#RVG7#{(idogu_<(N0{ z8+$1JBAL+6#J%~)>*4RI{EdwhO!}t(@|u#FNQS(gz642nDE@e-+=Y;{TVHh{XIb%P zG1>;l4b6|t97KoG^bMKn-{#yg8H;X}3$AzYUOshCWa;JI+{fV@5Pra1)(U*Y&ZE4P z+dy3?AWWN_p@5-Bc}7O*iY=E0`7^3&BAv=L%z)n~(z&b*tgDGdb>16|Xc_pckmWL# z5%b~J&4$3hhSmc1A>Z7dOXOQzegQ|1{A`zBCM`5x`8ad~kw@*T?iq3)O%s~&eomakP&jDECINPLovWrbx?oNrp zZUAbDLQzsZ?c6zT>m%)5d~dF=s-j}J@=6#^h(^vTaS=Xa?F0yQ9_wor{s=hceD*1f z5OSFG7jC-LbGJ%slOC74#VAg3MklavAkvnaiLTShveuxh21`V{ z@F9w5(CAvsj=2N7}-MJq3_#)4|(P*!_yu zgZ#a7`mzj)b2$}ohDcWRj`QeL7av-q2+HGIcSa#$CIsl9$Z=;XMwNFzlVkiwy@M`g z3z)-j)fO$xar0)am2$NhZ3=GS_CkKV^)?fo94PyaxqszUE|=o$fB_s+Vr|BX>0FfX zS4{oB5G*@*MdR2Z=O<1@`?C&^lvq6hD4{y2$u51#{TVpB@)GVYcjr82;jW8q zfnLyr!<~u7P_Ax;UJQ2|Sw(7a>PHTDhp^LGxLbe{xp7xF#&E|H@Df(Cj;-NNZTYxU z->GK33%=YI+*L}U#WCT;=GzjiWpIzd8NbJ;_hl?wK=b4>S-t0el5NGs*=209tRep3 zrvUPhE_T+S(~jVdTD-^I#Dxk27yvtoQ5u@<%io8tD6|L&$l2`7(%n!kH(fHqt(n^z zeHWu!3KRXzGgSuIQ3J*N$QU_?%vP_^b1agB-D36|+`G_~&k(&vy-#yEqFxY^z6GSk zKl<3mfm#y|rZuzO#m;)Q^?VZHI@dqZIpAdQ!u&~naC!j!j;kE3WTl8nWSTLLZ_{&g zFHP2Oanmr&<7Yham5V%FuNO|1`bV$2`O*B01W`5(Z(T(TM7PcXG(c&3EHG(${ITGg<*uvHm))kv9Io?= z7(}2ASPmGQtMWXf?=B7H9MH~bh3JgtWO0?ktVF2~$5*G>j%wfX$_dBsk{5t7gODQ= zck6&g;HJgwaJ>A*Gvly=Ku?FKm(z_bSqr`3o%vPQ=JYS|D6w7oe0t<|!736wa(CUR zWR8+d`9wKh?2SDKvLF>5KH8R;Iyg4Crq>}o9RG~k+xZmKvW96YT6&*b-uM{t6Q=io z;bnXYWyVkaqp^A z#sE}eD;bM%zJx?-X1w7E|KvmKT4y8ogf(C-NbYN{*uj=K%#t0MIEwu}%nKFy64r(P zaA*AX;z`&XcfsYIVRK~I8^em`+GJjC`RN-x0mPm0qVrw41RA#hfpuZ*WS>n4;Xt^( z4ANO8rmtcZ*iVDfaoGi z&w~%aZQA6lkGrw?;8&`{ttmT$h=LN10v?5*z~O<(k&t6JA}=*}kqR#~;@CndxLISd z#BN2gl)pt3V$GYq09}ZRu_RM%;#d8KAg(age5|OWibt-%7YTRbWSodw zOu1eQ`@cHQxy%>rPXb=|TtYxaB{hUoFC#1mS=I~|@^-&7r*W}Sbp^(SU~R?) zT6F3}y^&d=?$D-q|9TG0ulvzEa@0N6_S=&QvFpp#29UbiU@p4a3cX*B_CvgLQHM{V z7i*Ss61H^tZtbC)Nc{k%9fI9A{Uqih-tSsK#3LXljEFPnx2dRr!dm{QpVExNdC35l z5vB}YBIr?#Gc=#qMrds*zR#a9XEayL9kMzy`JfjRc9> zu;b;soQj$v%>^oa5~v==D5^3jx3f|Z=^B@IF!jxfF*IY$tWY`asPg&Ft`M^FZe|C% zc1H2;{L(io^ey;GW`#B6JSh4aZ?OMi8k@@O**e#w^)4m<1U=J;t!FCddZx14?zPZO zSA6%Izul3RiYjzH&=>3h6_uJmrqH|pbP|L6Sg?K=U(vQE8IB6~xt>T2$%Y}uhzESt zB7FE#H^f-|rMPYyErqKZhAmr|4Q5n za)snKAe=qKKF7;fo)Y)%q4`<%&`JM*J#=G+J=AB0458$7 zB~40v;mNJyWYIQ`Gepd3xAZ{F!VmrGyKn28mi)&pyQ&Tq4=R2zUT-k98g^PjE^bU0o?0O|1DZ!$xQ)AGM-nIPX&t|9bLRwgH$0G6mJ{^h- zr#59;W8Kc2R<98UqcOP+V&EI=mF=Dy(oQipnI(|UW@j)tu2X(3N2Eu*%14KI@HS6( zV2lEL-ra%S**TW1gtFk`4pv-Mhf{~Bi)#=3$b#%ZfXdHtk(CscexxoPK@cIcRRF#d z@9z2BMJX?c8?lCl;cLV;J|89vi{faRB7Y6WT~+o}q_Kj%OYPH%`!7e}C5~3-gG65n z57i`1Fnn_L0aA&1%>!mV<(^nscV^NjuTw-3K>%Vk27urB_*sLW0f*HxlZt-!E8DuPeWz#; z_9~F-|0v)O@AQi}3P+k9ER%{pz75~)nfaaMWGedZmF~2Gx z0JhJ8A9tt{2rZGXzvULfOV6>o%G5_S;bAE69htF_2J_};W1F7~e5$@)#6fBZ+*S?q z+>Q^pQIv;fM9Q;z5k&7wv;czqq7eBiTy>0Q_=qR=j?w^`p*8CyCc2|BQ%p#Sm9E_h z1^lIDSE{i+4=4L&R5tau97wwcuw1kYv+Y2Rg3AnpFc)?Ke3*RXd8fj4>Y8)mc(A3>)C9V<|8#p-vwR>XUXy^l`J5PNnW+SbG#=4{zw@9bnC_8z!66nnR$S`&N2vGgR})tMpo zI?{Y-?j{p^?ht?feE)B=uaV|{Y%KA}Y>g>XtUWt;fjrsR3!e$OuYPFAOVWM+y9o%5CXNzk4DM zyD&n;&1c44gn&lYsS#jFBnA;Xdy+d}V=3c(Q_;d-al;h27P>0$WYy$*`u+K{s-Q86 zrahM_^v)U77p?k-s%(uDvJC)+MU4T7ytC_Rp2PCq89AIa%hQ^Xe8TA!%20KCN2yHD z%D0BJX7Ye}tm;9XH^I_Lr!g1v-o0A$fm2l{R@ouq{Y~VT$s97@L>g;uoDe_-VUppO zh-H=l!L!8ARDu$mY;Z6edI>St-c&V&D6ZX*!&zli$zfandKcx6N9eQHgxyN%pW*b` z4Bsz*hW<0%2Pp?-|WbN_~xbxtW8@&aypdH%U+FnM?HK!UBEYmwlKvbEE&22uiN?Y_8?==DhR zQc^(p}5yZmVCbuPUm`T ziPqyjdORAB_vho~3LjhlK?{!60KUN|#raL>AIx52p%;y{ZTC1|TE8H3~f!#iF2}Pi{BrqfKun@JP;y<>9Oj7;PW~k z>B_i#!++zvevpc41+CGdfGTV5vR3=uYa63yGYc6$7ik6lSr_B@#V$&7VSo6I&PMrY zotXg;*~92T#xkKwnt{T);^q67;_E3>H7`@4{?*@&yQQyV830hX6&eG;j4oSkO6yZq zD*D?Qfr*kgHZ)QGQ5Hu}p$@!zeqntp=)5x&jf0(0RhPyQlrmNdKqu^gyNha^s2}9V z@J;L)&~Th%j0&%LunI(noo@TjVS7d^-0ucpZ{BnVnipST^PESo?p?xKAoeD+XRzJe z>J%JCVPJ@i`Zw2Gk+p3#Wyug9S0D`xd}2{U`Y#Y}&_(l@ z3`h^A)|_~``M)Nb|I3m+u7D&w0A8{l`sHPgtZ_q(%{iMt&PUkax*a#DQQbgZR_u?5 zRt8drLNgVeaf8E5*~=M33rJ7o8W<^dVo_%!z1x4|I9IrVyB*!1%TXrDd+x1?b93KnG@uzRv!@|y+y#pp;&^v-EebKHo zOTO0x^1YVxsOcL*xlTDAh+=Rm#gyTs&b^t;G!^~vH0Oe&5hcRJk9_{{I$okHZjRv> zL;{k8FGm-%Yce(SZEBUs(#s0QulO*pqUF$FOUFvSz)mB+V<-YDDRCWm(Jn8$lO>Y7 z_3aU_<&!T_!yZ|g0I76DwtWP%rMHCDw=oLI;AQ?(fNM{S}OY23r3(fEr-RD zIL|43-#aq1Ki_X&Sv*_L6BHD+Kcy zo5IZ#_4Dvz_LF72Wn|O)I|M4dOm0&iq2r8l~H8f)xI*d!OT3I@>eIJ!HKtGc z`$)V=){RRnnOz5o{9~-OWJu%;c|5FWkr~@Mb$|K>5|@qCz#Z;^AlUgvAQ=m$O-1Lt z&Y(k(@&nIvT(A>X_wIe*@Jk*~Jn-DdiA(!E{;$70HaBr;-s+(Pe>nQ6{Kq%`?S++z zOW}_nT7za_q7AK83K;;c-v6MIxS3SAXI3;ICd|}RfDZ5>K_RhGMYoy1t;65%he

    ZDr$ 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

    s}?*T;+uHudTLy8dOcMp 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%0DiK+ZLlk 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

    J{B3IS92&bJZ$*oy+42Bi$vPa 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 z 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

    %$#`+SJsCq!Hj|O4 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�}az;F7#j!7%&?; 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

    ^!08{cIp$ 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%0Am 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­IgiiH-p#ZBM6Lf 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%0De2f>L%svy9y8xb`NsU5PvOo- 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

      c+!=Kr-fG# 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

      SBG{8& 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ɻ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

      |Y1X*|%=WGAgHOdiPkT7T@ns8V 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

      42Q_iZptC$7;hiyFH=(ylNu^rLwV{E-Zi^Q!Wd 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

      rDu*C}WP9LERS=kX{Z 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%0DQdr3NHazGtyfV96DCK=TsRA0%S?}MVaZ> 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�UbWUEZ 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

      bly}7o%?~>T!5KqDfev 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 z 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≪A}mR`cG$4T3tt*D>_k< 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ʸN=7Mnc4!I`G)t_B< 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

      b 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 ~HuShZ~OgOCppY`}@ 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
    1. vrn9 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
      {p$R#m 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ℑ9adQi?ab23=oz4@oAwm=|YVtLYBeoOm(b|$c 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

      qB2oWI%AR-mIhoMrj2AL|+H4Js>IfO@&L$)=S zMVc;PXn}QJ>7ym@Bid26B|*xIuq1;p57-Pw=l%!5L zn|uA!WX%~e7Ip#0(;xK5C3T5QodBJqQ8BDjFmW0aPKDDnP?gR}sEjz`w&jnU2|7{a zc+T?$`}0VwR~S%&gbV^T!JS2=5F*D1ZO~=ZP9g^FTt18Tigvyu$gO5yT%gy!c296P zhU^2D*_2SDT9xAW_{C07JhMUmCCQKO9e75Tm&D#lwD@}m_FC{=x5(VehmtPCwUBrL za?Hg*a-A1Lf-a#WEsn%Zv~esN1vdw_X0B@e99vij42l~ofuq)cm@^~`b$1h1mUury z#tGm0Kufc)LW?D_-3L4!sFvv+J1Ya}csRgzPT>gzCPA8cAW#i!d{{JSna0Vys91Pt z$+WWpspjI02rYx%g1|r|b%-W1Jx1+eLIXU$&lJ`^_FI7|{~GDGRj?t5HiU$mPKZus z z)9FKs$X7#ABuZmbl#xzv)(mABhC|puSfPhGt2Wx-eyhrXH%hz-(rN38J14PYasx7P zuhcqvi?2W#6)LnYM&q&_X=J<}o_xFpRfc61eLdtDshgE}uo=KxQkW!q?--kNjQh4+ zacljtIXp%%#JSXO0KZ2Duw%ar*@i&}ua9|W#PRyrmgHX_^8va?@qn!RZGw=t0dQAO zUhNZL*|$N2p_7>#EkO^Td$UhqEqpt`qcLz~rc$zR3AbpAn~pjNs`lGq!1%?uG4E#We;H96${I@CEY_qFg`@lA@egQH6E9mE`(**7FmwUZAvfYR3 z)|tTA8Gvp@TbXzRnq4sNrl0UJm7{sQoHe-+(Lfka;JlbfNL0k?85AIQD_1!B=d z1FFQoZdTugk2KgBIim-(6H)?uR>DI+>Jmj8fL}%-z?^%x=v3=*(>1!O2puxbpSDKJ=aa=Kl+nH_LCR` zR*60$Aj!VhSDPr@UfvhRAWt&H*T14&)Rk7 z?$QY#A&_+yq1C$2%EMc1W_W=-^loN=urv{n0GIs$#JEA`k4_6c?^Xl03m*b|DkmxF z6YbH9nmm65o^3*I#K?A*5v@?=s9(t10bJ)J0y3osjeplW7fbUV4hm9`<)fir*mB^5H_i6E zah8R}*`M*5?VmqJAkwklfoN_2llVIK_Q{F@zA7u(QH!?p_paY?^TaLnW21ia(5yu? zFMV>3wEI2J*>ITda31s%czPd$*elJW`>fm_@YFWQze%@OH2)@_;#>B%3Rn+GMI(C$ z)Hk{wjSOl&Wf|nfOVh?LuU0bpMMC46Mua@Pdt-A7-T)e%{UjPs>uvH@Ddt21pb@G2 zYP{!4mTuGeFJiiuG%FwZhI6|U60exeBLON}%zCJRCVL?sl{#KS$5pnX zGQcsu8lHsLAN_KoW6B07%%`D;d|!erAHXqyz`kHC(~ zHeF+HWe8EWsIX6$8#TI%Z4ZkZz+DFHFv_9H%yrsr6t=Pn;@m9~U?}`CM7WB2M(k41 zj*m{xRZH}UiEz&L zAf>I6f#6u~&2?v0bM;#ih z{5uTTjeijxFv*eYW4W9DLbQ%kj%+%Q*#u5Wa7Z?x(J->zA=@@e%g>1$%dMh|kJwSV z!vJ9Y9{_aLC4N4mujHks=@kvTXr;qC@AxZ+KDD)3r0hIXbMzRC{fQ3kJobONL7dv^ zu1xbI(Dc*7*<9*d_^DE*`)D++Q#l>#`BF}(;eu&9Sn_&llc{pY`(YXhm`IuR^g12k z-gF*+ZGhx<8c1vbl1mQ*LvxOjt28LDfZu6gnfWR@jZG`bi2`+qUhzg~^iA;18ud#^ zMs#>!vNAQ-C?DbHKt=rl%q#;S9XRI$lViCreqIK^w2d8n?@{?nl4c>VUz(#gncOej z;(kvE?#LA7sM$7ZQv^R_a@GJ}0XUOlv)vsfC+Sq(xGPW+@M5Vf@&Uj0*B~D`=|&MR z4a-XYAwT*Uez=al5vgIfekkxqrYf!Jx#M)&clIg@)-~qIr=KP<&e!Iynj&B08Pl{* zJTZ6GU9?WDHK=H&Se+WB+m=_Ix{C53UNzln)pw4D53Fvp(nssf*F_5HqV)z;XR%=h zi6qxLcKNrBCet$i6m;|jac(Etmq$Cz6_Cs5h@`crT|_&8Z1#RD8dPoLlT@R0m+XCF zNH}Tf%aX+%?%V~^U?e9k@1ft|*-p`90PH=Ynrw|b*=sm;*o2^PCbk#o^(g9RePU;; z|K8_jok;8xg5;=W^bzaCT14ku`d>XuMj68IlX3S$G}-?XQgg(1htw*0ug|@MB%K8W z9Yqp-7)N5}cnT>YY;-p~c)&rh07Ld)RdL+rzIQ&|YKiJMYyS{lPW28+C8Gj8ltc&<3B<9d_0m-x_oRF7WgI0`vGgh6`utU)AbaAI0#@Qglt+VSR znhiSbZcgmdsV^~k_$OGC5lAS@BFh7Es6!q}p^uz+OKQ5}!)vZ51#vfNBLo5y!c@cW*|2iR#RJ)CY6XDChks@R?Lwl%|>&V zwb>;(&Ey$8I!+nfeoAkZ3Y&GI6v-Hs(Tq_^>0E58g7D>RX%E`b{tt8`8#PMmuva{K z|J|d6@f{hO1IGgcZCXUz5{7S=1@;)T&HP7utc_ZU9=*ZQ8Idn|cdj@pxe+JIGn90U zoGaQq#>R!DhM=8uT=UwPWnXBj=|5X6Z23ck^z156tu`5?EBhRu=ckdygAqSybBD$IA^p3u*!EP2nt}v;z7wap@P)J zISB{JB_el}CmdteKA_|(G< z<>PZx23XoZG)P98LmN@n#0KHMM#CnnQG);sg&&S!`3y$l@C<@Gi_fYZ=#Su7jN-vl z0A$05qdy)RC^JB0pBfR)Z++=XX9xsLK9{&MdvLU~fTJD7(=VKamDxjslZOCdwyr9i zgu#q#_u$CkW;e2cWju;W1vIRY$+W}9UBM*^GZi%l2WZi%82AxfSVkwGd0V6@D z+Q5J(tz81k07U&qAR4Rp-~U~gORsx=#qzJST_L` zi_h@cCkkkviLP=J_S<|o@FIc2j7G%svQ1$$L+~PfJgPbX zQjY@a7f&$o6ETcF9Qcty(Tk$#7f-@yMz;HSLXITBj9nG!GZoRW97!LN?@0nlCyGeL zG(1nz#}slU0cJ4@3Svskl?+4hd`YnG4IP3#(-wx|{^IM4WPqk-Z8k&T$mAoM^Y(9D z8Co+YegZFwPwY<^9$>Yj@V@vTVR$2Yj3Tizqya|?E+Fa3awvq342FTU?Mre z1w6}9T>T42Uv2R@JqHkwtM?W3I3Orx1m8Sp-J$W_aTUi0V;f zmqEomSb)=w!n!;HbCFzt$?jZLxe|7w`jpGrSpy{PD58EbC5&jmK(qm7fH7CEDyD?p zmp(B`$QwxNQAGV>N*Ga`n7p_*04+s<>F67lQ`ILb4;9eluZeV^ic3(9Bp;%S;tDxe z05l#225}`cF-Jl8u|n`(jADRr62cItIlhx8?3bf3hAj#Y19<1J9iS(Pi6XLvPfAg& zmdY~*oO@9ONSZc01TGaB7`LyBh+y~t`V*1?#Mm*Vhs0t7s`|5hbgx{#Tw?RF0aO0jvDid% ziZw=Zi9|@~#Xgc&xzwTzc)VM&OOcc!nGb}}`H_LMqHMedH znK6J_9D}$7)H3=qX45Gl%Q`Vvr$ofG0bLk`4yf9@Bj^rKheP#2X6(d#u4!I&@2`|+ zCT^m0Lm{aF&-k7QuHV^ET(sRY7X}7E`MnWfxysN5X0u{O_I(6JCyK^<_eC^5;Q)bR z(M=zLU~Y&A<{!QzESQnxj}9rAV8=&L)T3zn1(R?{K(Xj{k3i@}q4WzTVJIWp6-;=q zN05x|i*%I=XINng#S_}-5g45)92L;;;t>ic6o>$l#V8^OC@~x8@%L8V;M*HIf7#fM zY$tG?jSi0YasQ>$vf@_G-HEM zC8oU*$#@zJ-s3~Y5JG^d2uv5F%qP-Ao{GY7M0Wure;}eI{csZ2-7p+aaRH@05K@fE zO?t6olPPV$Oe$c{|kgB3kwg; zaE!EK(E%qA7Nbzwo5KTcOY**-f>GZODDux+RWJ#UH^lR*37NUqStP-0&J^tRz3BH}7^S`Bf zqFOsy4X-G{HgjV{KOT+@<;_VCWgiX<3sBUfXuk8&VZ$7DLEQ}AyH!?tyxp|P7V!WM%LU2B&kevaT zd=wPKl$f0fL-0%uSQiFENZRM~Q|&w756pWC!uo#tu;_;Se*Fl6tX_cngb<1ksECK> z1NK2vUl7oG3Q>GP57lsd!IAATsAS;-G==9wa05{#Zk}RLdFvk_>JCIUEE^RoFK_V< zL`#E^C1w_4B;?r!@LwJ>jy@Ea`oXwxIHEkSe@uAl&m`@L^g}`rN}w#R4k=-M?uXXGdQ4Pc8LY0^S zk6`eOH+Y*{2lUslFvzt}@a+uZALKMh_?Ui3CYVY9!`v1T#}(fbo=OrAPle&gXabD- z>TnVsO<_3RPy&>tfskY0Cz^ww8_-l?lJ-9sbl4*^W!j!5^NjC5b(7AXn|3I!zHD58%(VaN(ai~K$@iAn)X zc6?PaC9G0WNZ4}&l6DkPznBt66elK6%>igR3QRR>ST?&)R30jzDHJ0esN&kl!RJjR z0920xgSZl#NTTA|HtNkIVBa1(jHz0qHb-E&TkvnM8nIQI02 z#?4g&-b;fqcx(IHuX*NAHeISyd@x=Dc)RBPA`aqT%#z%r3TlOkSgNv;RxZO^NmDB+ z`f#MhFDr>X1gLBo;AGAEO|*J=w@HF0o($OcqA-rV$jueWsSUUOwqk`6%?Pv3WTfqh zGcC>3nq|w=KGnU~{$ap$Y%0Qh^gk!u;t+FgICz@rfxNu|lE`9;jPhi;QJ%Ps5+Rl; zfuwM5D*`*xihnM-sxM}w4FeuvjaML`5IpSA18&TaOTTKI8g%du$-~N8_MmJpP!svi%IUb!zPtk6a z^cn_$3Nyagg4Y2z`h@@%Tf+d(Qamh7t9Zn41LQSnvz4=fyRkWCfNOl#7u&DPe75o9 zG>i_Y3e{M2B0WVLBfUiI?#T8KEIk$pSlJrjiCf|!lIVW0C`#Jq2G9_^9dg~q0MuC17u?Kx^e$;=fYgnLCUR4#F>*^pQX|_rM1cEA zq0|h3)@ea{VoUx20$fvSh9q(B$mb=(D6d=Kz9hF|znw=6;MV6Nu%9|317;&(yQjq( zg<`c*qRpC+fPrxAt_aefy&OnGim=;8COn}6V)kSN>OWl$sFO1krsUqfjh96ssDNlr zMW7y;y$t<7Roi{CIKQ7>j0&Yy0Jy~{$PWPI@WKb&t@h4Kw37j*Gar%MmDP)poHrFx z`;Zp}QwYbl;5rY>L@ zo(V2Z&s9%Alli{}m=^DbJjC|iiLR)-<%7OBT(y5^b8q}7d2p=k9-AFW{>@R=AO9e1 zX!rqf=bi}i&jR_H%INQg ztAP8u2@WnTM!-t{oQ&LFOk0W zu>n)|WwF>qa*8!Za*05~Yhf%f&5b6QmKB>A7!OWggeD<4twyohtk)VXip$h%)n?g- z7q*SsmwFBG^j;2`39kKh84v3)e8a`zuRev!!Nsdm>8UKS6$d z*5)bBR%)!dW$Oc?MPsk>TlSAHSclNRt=fh56kZ+MF6l9C=gK{HyKdNnTrWiSJs9a1 zv!fFb1+k^q_*j*wVAa1@#;Uzg%qF5gWP|PNqog`nB29~5QW^jq|7joa$JQf-jerZ7 z=C!eKMZOAuW%=H|;~IN!JTC}V(ahd}4=T*tuND9C`?{uy7+3R&c=f3Ga(q-D%e zucP#^c1V)}HTyar^4r%V<&6Ohpo{Tm>^q~mY&5&y}$B)k!LfwTS#v3NzoihpGZCv75R@Au#hAu9~1<~|?t{?oYLug&6(F+@Fzg$a214w@cfb+)m?anapVX}rH%8m79xGE+7n*M1vXU$sqo8jdXgAc?Rl0>=W$Yxl671Z?&I_J zIfv0h<*EVV4v?oOiSTEjb`l}olEe0~xgu!3l4&*#zVE&rf(_BBxXuEV^o#7@-lnvQ zImi~#$LGk&V%>oL;yc#E$475f;)Y7YfYQ=C(RbWcBy#O4>6izDUP#SUnl0Og1Gz6k zRuh%Rz<$w6+Rz~695l3At8?hOAy*mzsRwAt%92qH@mq8gJ~#NF{Vqr;Ud^9&ol`xZ z%0&6Do91R_WZM%Ix=JY;?HApP>&&<|hR7dr*MvZPNtraQY=aj~px}WXQprxILn|?{ zeY~G8cN$P0|5bD{86IxQc<#-0F*FUwR1FWGoY#E@%IAjR<`=bf&`%)j-?rh{XXKSU(*l$SHwCtq4 z;V$u9L{~Oz9}FT!78g`9?;k{sjc!288QqN1#t_<)i!-_bbhf+T()~@yk4^XirA8AR ztF%rX(YCFECfriBgt7?p+Rso;Rha%|zFvKr-@EsO*t!6yRQ7k$5 zjXyAm?&zF5%^7gc-Io~YVhdZ6e2U}@9zG}@DdOjb!fi$|tg0HEX9d89KVZTi+ zENhQ9^sVJ)$!Bu6{eVn&Lc+Jg)aV1XW{d4S8rVZa(^2n62>8y3CpFtWc5=Y?-QPv; zSkG`EQgVx_U75hGiie555iYKMV6pJgHL+T|P@Y?Em8*9d(CsPx6Xkh-_ESF`-D$31 zi4=;h>3#l-i=bdW2Bg-XzwKmn9*EF6;&diN3M6_VQh$$eu2w2U>R@xRP8%@dtWbke0;%HQ)5%{e8`xn)SO3(;= zx%kP8q~J9I-{$}8MbRMDs#hiqz8crBoo54QOcco(q?_#W4>jBRMQB{b_xs59LzU`@ zkpAHN&ZiYOsp3PcsiH$-ho8ZhozDsd=R{2puubg3c{9%%X6lGp+1)bWm0wyH&)TH; zq#90G!+h(ZkTapeeC&U$3&h1WoLN%K!L0MSbuqovmLDmXPZ;nv{}UKwHi9@;)&RoL zEc5btv#yHLC#TEwq_{Kw(E4=4RafEAJr!0ZD=s06?dmClS$Y4OI zedz?JXKND%bjJRCP*bCT=_~2ZTTkh{w$pZS1Tp6Fz03#$#=c}%rx<*^*E(-8Ll2?GcPKnV{+{l4*etl?>x z-Bdow(F%Oj`CGJOa)KSi=)$w0(Yo~H1kGQd=A2gUIygYVx)&pf$4$9jsh2tZkO8;+ z7lbPZU5P3_NK2Q5I>3%&293|!Ujpb7Yc`>{P5r18Tg+oQn7TeGM~BlS?I%a9W1U{!GsJ(R6oR>!>PQQXr$NvtE76W=9 zqDX;aL8@nE;Y1yiw@^3h7a_05=GieIzw{4avvra!`FL(ptPC`GRV$3ZJDl8zSz>-_@H-aZLfu;>!uYv30*TH?p_9U%HX*&Z7K)V-p zTSU=8G>M92V}i=>yEiZ>vUIl9@ArzWjJW3x1WVG8W#8TrWk>UP*78aLRT;eBg@en3mo zH0NwOj|nHn$6y508cGv(`4rg7=Jd@@cj_&&cHoseXF zI!CO>kI%jm$vd5SgPDk`E{>tVRi=rVkJgK>5168WrrnF%{lu z!zaDRNC%lKyh}%Hp*WzvkFRi|R{gQ)&N}J1Mnx~?B1@DsNOrzEmh_#@g;iE!<@^Y0 z822O%VFO|d|H&t+p7BNEWs)E@_C2vA1*fuz!6`#_)Oq-z(^Y!1#W%Y)|J_l+*Go|< zy0+4h7Mksxn`)I>b6SB!JA(!apq~|69xNy#gBFHp8%46&nhAxm$E`{!GHiWHuxX&O zdB=8Di4M=Dd*;*3Gv?335<&7MZBI8iFn z9uumMujR8QvpP6ipE0Pv@cqIrMV_TKu5~@|k|M{_mUu^C{AQ%>{wn>vS)(r6uu`o) zzjwM^I$;yYx~LEMj6KC~-mi)+(JybDYn4yYfey;iY*4k31;paX+6fL0-L5(ajV_-!^(f&7j^=4)tqP z|H^$&WZ#!o!YrEmWj|OOSfE3;+eQm>ErSmie;CbUaZcwx0RwAI$enMJ4P`#|vssVM zLj))OG9X_c0UM5@l2=dRPecY& zcH504Fs6M#2cGC}FS1BdC$*=tLhiUkCsX|QF$Ek3xUvN5m8t=x{5C)n7T>cRdM&#IQpzw-o;&|>S?tY?EjCh$x_}58G_Rf@x)w#L>&*f);Hy<6N zAP`n$DUKG=k^{;@a&+AhAuFptP|A)9MQJtvywjj~96zTd2Kbs&kr8zGHW@>QdBEa> z9zIMrPLc}$t~6a`8+;~X4tZr0*C3*M+)Q=!Vsh+u7r5N{_ouQsfx$x`T zMr}ZpHnXJun0|M1iaz|Kd);&uz<$Yz$OPt*+C4F0K%jmt1k3Zs3xgSj8A=2U)Y4&Y z6Xls!(aJvvPO9Q~{BEdK%La_PU>K$q_Z`pAsGoTzfUXYA8zTna)$x63wZvA_dIJW( z7j~gX?C6Ida8XHh1EL_-epW0|aafeeV28yT8Pc~R%}1+G{K#p|vyAeD`fR83Zp4}AsOZG%AWEjA74jDg-@1XP^>pyK$N zK9Jmh2DR&}e`WgupP~A~+CMX>+g|;fBduDa3|^?;S^YZ;kyMDJfy&+0KRRZ2U-%&M*6W ztYA(Vt&1}Ur>ZpCNTJIHtjG7j(l&Sa`dw{ctnM;*fJH6TSP{5Wy zh;|<*x@YfsqI1jH#r5vQ45n-MB`LEkZ6$+L{t!rppw1R)!fQ6!naKprDW75o$U6*G zE%VuftS)NPlp==CnNY)iFer0~a#|2{gV)kY3v5q?HeLWKTR@+PUg@fV{|>y|6#qRP ztSSVkw|25;KU89qGjho6IcG$MynE@jls4!Z1c;r$xE>-0VDh?a%BPBSI|eY9o)1~7 z_~^W(Os8pq6u5?IkzEh~b{euJsv&`J1G!oLSMPNE!FSW_s(Y(f#6yb8I;Yeva>Iuz7D^4ovo(ejh z&)YAZ${FcYs>4^8=q$odpvW2|`piFuAVvNW1Sz7R00ys^Ht#r8)YeIjY5gR2@T+Lc z?wo#{*>k#OAk%KKPquIL1Szup1+U1L*?s*oBa!PsLO1xLMH$H!+UxEze4EQw4eJWB z<@wB+K*+Uz9K$AL0*_Z(yx~Tc%sb1+u`zFi3M>D(PGH1unw#C{AMOXIg$Z!9o71;G z>50ycYeWZ17YuiXeG9pP2H%do2wGu3vxCFCLPCK^zDr2Oo(_i<(w-8qX4-3<*JR(s z+ge#w1x(l@dgdnr^B|!FI@173QPaOX8(4)oz6;$utE5wPJWS9+3F^i(aNo{wlRxyy&0wfmZE0{)D3$-L|msohdHps{?Zw8|4?;L1}JGX<&cD`Mg4 z7{Vm#%Z&^)&qCWq1Gg7+%&S1p9R1fcvj~qQ__f|NB7W@_)n`D@=G5ON*P0|q*hg~T`6=->=jwEB+1lqtqlNJ@ zyQ$Wo#gRP@1DyHS#Nuu8z-FE6AGf|NZlqVID)pIp144`O1bMZyc@=n0us66RoB^fo z&j>`fo#d@vXl|%AxF@|OOmX5x``mKNTg8MFLft%WAGFMN$PPZJwPKg(GVMt#b(34T z#aSj_c#{ps6D?eRU8tpl@GDSnO;o8)lqE|*zmX6=Hx{e&20WJ9gLqjJrh`XLr|RFl zLe1#9AP`#IWaYPYf8|tp0$mH{%RdhgRm$~1*&axV{Uf)orBp~x8k&VXIR0_FQ1^%myIq_X*gvT@wf7=lIG%Fh`~*==xFE zy6AA)qSIjd4?k!tdH&(q#_Xk~kK^~c=wBlt#D8mG>7T*F{s(yGImDX_~b_arK zenpw7nen>XnHeIoCFp*8CYoE(k2xYs1AM)=#)`2t*JzZhBzJd_&=Y5?*r0uA{NUN_ z+2SdbZcz^f!|6{ z*G`kOV&GpZIY-ju-pFWy>Zaot3UZ+&tDa2&U^kies)U}vcu4_7+{Wk{OCV))eUL_U zH2IM7L8<8CE_HJQNK@r%xlt+YZ`FzhP!`?|-D`?=+L8RJGb&OWM+b}y zEwXT?H)Z_@OX*&nja?2ZT1>$_(ylqxXnU(G^7?s#I*|K!*rQ0VQEb<$pSLz1PQM+m zOmUx~ud?rp>$6wR2Yn`|IS~Czt=<->d@vcL`x_%}ju+;HcjOI9vSDse>evxCZkI}* z{QqZKag*1BB|@O3lRR?Siqoc>G`0JF4Bbc{sMc~vz?LD<=*{#HK{n`4ZZpAHGOCN* zXexTh1VhhS87k_ICe%0m_9Bp@U}W340f|d$^%Y>=>Bg#1_k5p&IGwoc5a< z^SYMt6ov|E$lo)%B7bk%6!~va`Fp~iZS6CFoB1eUm!@rt-*c}DA;ouUXyQhvx{OE^ zYS9AW8_ZnMwQ;|b%xb!x4!L$S**4zs0f*(!LPv{MQ~u>_?rl%L(nUujtmoWhvl44jmSFXg zF0vbPhy8S$&JScm*lmJNQs9kPUobIl%$;+!R{6F{YuW&4;coz#w!O+nXL(bCCeCYR z+lOxR60x7VH#p*XvNA#6Qz1nv(eZA+^;ZmxA%3;s;q*2a8JcZKM$J@u_mRB^57w%* zs-^PB1r45R6zkKK(#`VASm8-CL~gDV9z+^V&T%YgOYR{4){zI(8EB2ryn3ert)&pn zsg%SSg{GGrQ$}+?&4bMXrI@Az??S2jZ|E>5@lTyqXen3nnX|!uc16CX-dZ}FLz_}w zF>P}J78O(OEXR&MpyiqOf&UB58~7z1Z%X05qdHAVKB6mHfS1iD?1LG_}IMCmNTaM zw|Z=W(7bC$pgti%Di9qH5!VICdVqs8NcQ4M3vOk#HrxpI8&DnFqZM=NGO=<^gdKU5+O%*p=DJ*l*uu9|7QV zb1EDVUic0l{jT+(k0TGVCKXFw@GHC3@bi0b;Rb+mJH+9(^)(=dKImrBehZYov_St} zr3E{${z=|YqeGJ**bWgsxh~)yS&&~MH#)&jx$clv_(nRVgy$b#Hb zJXyi3Y*xX09Y0pU8WId5kRJaoANjAW3wbO95Uy{IWgu-(hB0j@HRkKB+EvA}&E87? z-dm|pmmAOBdn4WQFQ26U8qn@NN_eDruWvf{mV3q0*c*hOM5C%Tx=n`zLZJx24z~*X z=_lzO6mc)$o0%&@Xr@ZDyPLCwLn#7+c{G}9FSRHR-B=F%l~{r|(-}sxpc4jkGD>f) zB#x9Rs*BIEkAq}d#i^U=8X&nT6uEwr_+}|8y|LIlVT+f&;u1v#>Dq)Xrs%a-n>=SK z>jcj`q-<6{Dtgc>qSqvB5&2K>V^efnj!MXN(h_bZm66kgvUEsfc7;Uljh|f7O52tN zi@0=shTL3xcFL9qp`r9dk*@Vv5JAwBmVg|~dN?Q=(5;-s527`7)%~Rk_qE zPaLJ3Uc_;oa-^QHU;Ad>f@sO>ycE%vc)YD!wj^$jaxQGr6;4Rp zlp)d%@ICe}+H-3LVs7VD+&n6$1K+>jVoAL6sNz-a7Hr2^w_p&N+NbTH(Db(roa8 zC$Dk|AtJZVM+79`b)5=Y?w_IUfF$R~zOpwY6lm zofgCgKs?eKJ&5+|KMxya|2Uq<-J2q|jj~d)r3Zv@KuOyvL78fc04yY-5Y2r~UkxaA zuY-(26#LDVC|zK*2J^VVX`lgZvnvrE{!lZZxvaF48#M+*d(Q&!OCzoWz<}cNvq3qc zFc+)-oQMY07OxkogZhTujzFzYe;ME5`3H42)~s1f8OjBEndhLDaw$^jUV?rxC#V=W z%4Zq_UnLc5Ri=wga{FdGASVidUy!N`H z!EgD2b&ebSHXhXR%qEGK)WS9mzb{C=O`)Mc{x|6;4*-K2<9k#H9!2XLmz(=(cr~Z# zs+Ox#*gLrDK^u)ig~GnU6>qRU9V)c<53Wc^4SrvI!Qgr{77Tu0oQ&3U{?90-CE2@Y zufgx*6{&~ha=zzvr=8S1w@Xtc=p=2!>pG)VI1cVT6e6pjk=$!!aA+S07(2)A*(=t9 z9CV=RzDQ7|*T~>gGOI=zjBGC*FDZS0CIyQ{Wp#?$^5hpseS^N4RG>#G?^R!`X+X1A zg>XqUBuYON9^!T}R&W4+daLo^tp*&IY7k(EkL#ge4H6ZX>kqN1)E^*|y%Xe;=ntju z_Xk+ym6b();o|zkqwMzwXm(GbKPY2CgI9HQr2{>jqVp%*O*90wjLwYNo}-gVC`yNL zt+(eqq^{?Htuqf%hxn}4bEJ-w$G43hyZNx4wOVw|(q3+Gq{h#n+3dG^yT06()=Na^ z*U=WMF#GrD05f3K1IzSryC7PdmH3sbaj!w_uV*Fp?@@`-4HKvw`4I*L>#qi3_q(spdQxBw;kFQUdx|57 zxPe9c4Um?dJ#8^Kw&XmS$#Ec{>+g5+ z#QYE?1l57SINmlb?WJ%HhgX8Q=m3Hmq6D3;(pxJD4pHK>!Y`u#wtCS>>K*NgtzJ0t zey^N2@?EdNzd|_D50FXB%pcrtO!+;7n3>-*HXNzq>9_S9P99D;Qq+EAJ9i<6BO#`G z2jYsv9Ut-Hx4tCLc@py_Nuxp~3`sud1!yH8Nkih>MYv8XLkUQR1x_bN4CFli%dli2 zb>Q<^n{zu~KFH{D&&}0o#FzKjiK1yhsr?T0Ae#f4+71LFM$xzyg-2-0g=@ z=`N)*0M7(nQMjwTSH1v{&U*ofCmM2#F!_YRc$_vXr?i@y!SWPaQJkZbieT1${~)F* zF^ZnKWeruGAv_}7qX-&8ZBinuQ^58FsFa0){NKjkp z#yD5b0%PRhtYggP&jg(hU=VJ;028w)%u<{#z>+HjJBRilge^K66!8)K;9kC$KuS$l zbM81T6zpNto8Kx269u_v2Kx3G?KYf^b=e7&j6rZ{O+;rKQ1&)M4WM_>g!K9t>nODx z1cVb3D35&%J(2*2$ub>NEYBDa&3qihT@M6rqVvurN#DElLr<>Lab4Rb8SRn~e)~R_ zz4OkCZjf#(3oCUmbCauGw3Cpf>CNrOnE;gqw@*TRti_=xOF+5s`%oiZbU)}V!}*YM zaNj1HaX3WP?GZTeAlU|KUR`_AQHX(jLc~NAHg2xY8Hlw%0iio8o=jxjy)sdX+r!@j zsrDz=N%BPVaE(*Gfp8$y?GNkzX$G-FauZ2Lnxp!p-d=^$YbQ zA+*7$eclEvxDCAy^o+Wj;wEm#%JU&Z*rvO~Xz@2+VS+CYBeU#BR zpttZpe7Pyzi+> z;Sj07P=U_ECDA)vwy8crqwx7SF@yz3w!xrY=P%Gz(|kFZc1E=4Z7-ERAwH(H4WU^i zxXkvmQYXxX^&8}u!A9#eO4p3~+ASwFP;uce(GENJJm%c0nr-O?a}Pcr|0^_)lUhyd zDmZ#>P3NAc1*`@gzqPFB?Gv8m?CQeGAB+~kkj)#2g<2haN<+(vfcO2L>(WXX5Lo(a z2*Az*AcP2mr_qDwnlR4L-V3OA{w5JFuCImGGH6Cx?e{ip8R~Zb7C2;8_O_rKWJe(I zHu~4Dwxu%5fl}rRplH|KD!+9sSv}$)+KwkKD^+DSc%^D-`n_*JG5fy-whFH~UEF~; z4DsuDd@XWbDpQmiN0m~lbx@tt9{kw`xLeTfv^L;)(xUzWzvg-@E6yd6weKv7Yh9YQVWn@ZL`mqeOq z=Ssj>{3_tkDJZ_*O*a8QA=>ZKr}oa~-Yb2Up0NF)LcNHoGXjBMD6%-fzy3AgphtJD zV2G=(S)5wgQrgo}aO6MOB3jFQWCD>0ADvE!_#&)vY&5`j3GCy-YK&blpknvy&`~?S zRU+#c-#&FvUHV2Wbs6BwZSVkRqHgsIT4Rs8&0Q>1F`T+K|13L`lp8Jg-q0kaF}syQ z_mh?K1f_1Jd{7i7mCv%@EuYgxW|F$ULsFvi*%jLDpnx&`LJPzn`9bLq8z!25q5M%I zK5h@%8iD_Wb2OPv@Vs}690a(1dsaKv3p{I2>^5Z@xaciwdkFC z;8#fr^|H5@O}@rKKEOkbgxTjS!z(mpuuxrM3X7*{pKUGdyOEx*b9gdW0+;J5YF;7t zmjC1IV@etvysI0=P%qCi(TH2*uBZFCw+Bgy!Ur#+OB+oC7=E_OF152{xY7} z@JVux-@^0u9@#;cfbSwLpo!Li)Z$an!mV}sm51<|+y`Id{3(8j)(ZcOZbzVK!8>wb z2Qt;7&01_)_@@v$Ue9@l6T0!m)c5F8+9#*Y3?fY3j37XYH#Ej`=L8|eE$t2qen!x4 zOYRGB5Tuv<3+S=Z+2u(GQdxc~q+``^V((nzuJX+XZ;-~m`?Vq^7M+zUVWrmoG0H_Q zbR0nCB1N=^two+pE_jXiis^WV%EUH@*pQu70#ZchI<&}U6kw(BB0qy9g}2RCSnKcr zZq8HWboOwq)@oX7WFVZetP*+OUr&YsJtGjfh zn{(qoBYu8qniB`GSvp)0Vc0QpeVbKNyZszIey~pqfcL^JYeS1B%Yo{7ZLiP;YAZjvmD|9 z+WBWf>@Ymb_vAn}#kc()xhHq`e{r2lDZK62Ygi?=B0m%S;*Y-j&g5P$Is!x0>9<|o z{-VYHBI;`G3vV#etvc;(ub50^T(PekUTsnktsSEv+*sRAQjttgrW-3JvEEh!L9g<2 z;DK@4bRLF@dymG5w;H6W)6NxHmGo+(-cDgMY7bT^gGps#pBD;7C-%^pX`6Ze>#vhx zY7GL9Q8YHJfCuEga-Sk7EnN@wV0VU0AnZYkQCR7a5d`5>lk#Iz5eUkc0Wn| zQNnShSG2?6{G3Go#BfXXM3s_7@20Z~6s2m-`yc_X{^J12BhokDC6XJz^G%>U`_1zC zzSoB#1W8`P^6{*d&mCOb;LeMuAZJsUi1Q!S@K&0)+Dx=G^3D<QGW8PVxDE9 zByN;!5#)Hx+kTBXW#akjsx!yuDl-!T3~kB30By2Yn;YaERmeC|wiJu-zI$?5Bd6@t zY0DnGCm6y0Cn5=SS89?nAC)Jpn_+*s;C@wySL!iB9REtmltx6OH~nO}|TV+bgz1i_9xi&&E2`J%g#kL%Ya7PhOVbOM zVJZCRw~Z@Nu2!wY_KilIa&ZRFD=19|{X~dp@<5NLSPv{rvQbJv3wuFfWb70v5a1RU z55s6(+`th9r16lAJYG?RNZ6 ztSw{|ZoED5;>xx~Uc5}DVW$%W1s09l>{Al501 z;eJo*och(d`wx1>YHkk}WXu4SI2AN?!Knz_X6iZo5FSYqcmf@g@D3|;|DhG%`{4K+ zn_Nm8N=r+gH4Ivlt)NwNI-6KOM`n|>8`zu9W2D<gMcoY9PU2*bhdqZJw)BcU+nrCRL4%B zofBny{F}9$+=2i4QOwlj$!t3Rhd0WfDpa88<5{4a6_pYRR9gg|;MJZHp6S{E;>VW91ms z!D_QiMn33tn)EdL0yvM|iAGtE|3g0?_Gp7w1H(<)OD9-b4Vw++)=F)Lk3RXtL3CV+ zyO2V>3PmiyKKrVp!KX_~BJ3iyC_Rsx(BL6pClyJ%@~C-)1!1Xljt{-VYHBJv`lANKl-$g$8` z-a6iQF1%vjzwnBE7sD&|y$r9|cQm|W-_79tAaXCT0hf}VBgaC~N)b&=T7<(Z)MP-xyb-P87~uVP2SG2srrPxih(vLg z=f?-{&RzLSGGsUcvUqpy=YLTOf>}!9*ca~3AzYN&%GH4vf~KMP9UsR&dcGG9=L=G9+5$4G}ULm@)i~2nr6y72h9UOpCX; z+85%BABr!2IKKFi_~LV(3mSBkHG}tgaX=Z+24o)k z%E-~uGN)dAQ-*5$hQs?MY(9$3>JI)O)_}l?vaTs=ZO;7@2BYqr>h6R@U{(w?AK87A zj!J{kv+x#-qOH8YMN)bQ`n|PT=5!cjYqd;N*O#0WJ>&_~Q#X=loTfbD6|?9=;*mG2 zy{)T>YSRV`dBL_t7jkKPyLyH;C5S}R{g@Aatki>FoB{n1d_2(!dQby85o2@q2GLyu zIW2t-@}l(H&g5AY{6N)Px^bxRgI)=5dpuap>4MyIUhUV5)f~J}T1wopvypG|N z{Zx6mmV0tX4AxdU^lx`TEs;lRxv#$!<@Fj(B^4J*Td3#0_%{5&VUct7phNA&X>#R> zK)arMb6tE9Tk2L-^uvAi+=rC_Jy1R8wi!Bgk0B+e6yKH2?EUrJk1NQ?Z{2$CPlDej z*sMNS&t3RsU@TTR@!w)SS9`mbS%eqrx#t6jXx&m>dk~&YufJ%yzi8pkz7N~|MVtK%t9k}%(UZ+JMqQc_~OO*;-&cFUVJe<8WT6D7n-rf?fBx3 zS4?_L2l@C`f47FIwy`TIw(A z^%pJo7cI;MxaQa>%;m6j*S-FS=7LEF6V`G}*}1#=>vdwv9*ikliYa?IrflJ4Kacxj z%DORS7rZhyRqVp`PUeomg5f#r`%dRxDH~=fR*wfy=RSIqSSg;d$npC$zH-Kde4#UM zaT?^JW=Gy6e@O^rv)WejLiwQTpp|C9?$G-40PKJFPcRQ`MGT!z|AG;g8srLKe$h3A zzg&P5;7xQIrSVqagU-_Odebf^DCk5;$;G93Sl}rGW3LCSw8X&5le|`V88DpZJcm)t zYa(8&XW7VejWZn7V{ygg!NwJ@!GooS+A&1lD_o?M7bK%qq6W!q%}wV~E8QsHIY;Zd z@&qlPY!u7|1vFA%*Y5l0kfsw$cN;4}KPDX%TJtu@o3p*WId|(Z`JK;RP|+6EBGQk$YA0x! zOATXRbR_qWzbCcrPAf5>zz{@WA2_YJBPz7PsHL>Jb{EU2HtjNE8G((Tb1~_5Szq|f zCv;-`A4E68jw@Z?g-lf<+Ypz=H`y=Cx48WBiFc@h>^m^-hrC0f2LHqZj--R~a+JeY zSK!cpB%Pa!?TURiz)DAc9p;6v0J}Z9`jlT0;OjWL8p8y{vtNy6A}3gtsZJj88$l!6 zLrqW_3GroRBFFYUx_!McKt{3WFbpU!E&I*bd#SRDX9gzie~e`&GE?TO$}E-(WCteW z{{&_tJCA;!?7|v6I8+5DAfEkNgh?F|v{sQ#1*WIIK^PpRWAz1TknBZCzirK=<2N9{ z0E9bVk6{1Qni&k*h5!qY9{)y!#Um@Q7@)uOc3q_uFr*YaLe%^-h}&U~wd6%Tnc{bQ zA0N;ki{~R+t9)a$c0h~x{1u&uGN8N^;xO{gOEg$YA9Tn6#g~-Qmlo*XE4SeG9aq~| zRP5#@=q-on9#{`ts1As33SI_#S%&yp8qAJ3rI z5>PY$Z{TkC8sG3WdBaOh6iQYiSg>h8L8!idg4WmDHhR#e0|piIO~9KWcyIZqC_I$J zz;o2>4OkG#tU?R{wt>WGN0K%hL1t_faw~|=VYAQp8BnQTDz%y7>3JtRp=ADDWS8RY zn0gMvO8c@L*jRc!&K~&!mHM|pjqhI7b7)?O8lA!9nN5GB$DpVn6Vw(x-l8R|0H7n4 zb7ceWTJ96y@!)p{WDsn5=uj7Ou66(tEB&kz90;3ocGm8q z8_R+;zey0UEGJpG2Z9<%|FEMEx`its5$2wcz+0Fbo_kI)`#|(ahfW{omePe^nb^ ze{e(5!1|M=q5RG(q;+x2^BD3VTmSx8^0J~*b}=ie!T4qMWI)?I#peMnyp$$@11M*H zAeMu)LOI5?!i6qI57_0Q{TFXJfLvC|+8i^w2cZi-l#uS)q=hv{hSN;o)7~m1ymgdE z!e+U^m-!z=+u}iBPazCq_g!>cqiEB& zhDWh*ARXW2e@MR7pDAuj#J2^KN0lX1Mcn+A2r3K~K8UgWL15vBfmgzp{e=3u0EBEW z;QO(su1cq`BS0tU3sA{yU6oq2JFc?3CP=V?@5ez05_Pras+Cg*oBMV@clW`Y4C-W` z2A+1eY}0vcm#%Q`m|5Dq!Ui9Am5ANT)BO})=5EPBlDxk{epk#Psh|}*4TzZ$K^AUB zy+Q|^>6CV>JT-4nr-Qou0zC1!Be(bIZd)k)H683fOcJZj9;#I5P8obx*aj)sXs0&7 zokZWFM~lL=tQL=6ZSd{b_E@|&C*NHz3$rA1Ma4p1K1ekwL6=-bq|?2SSE}*x2d=ZL zKRT!Pnr&C|s@>*P<%c%t$gh@By{m1#b7ytyEY+Bh8$tKQ72fX^+J3k5ymx%;_}rv? zP3g*28dg2tf&s^=n!Q7{YfmS`eLY>7DDR%4qxMcRWK~F=Ads;g=#6R1^XR)IWLtNE z5Cz0MM^s+Wue|R0hx?1}uNjbDz8bRU)svTllpA&+cl&oZ^+{>60`J^_Z2|$)eahM5 zDF+P~!qcMq`nMJGDynaQY55veB!4#LiNK9y)hL6yi`PPAR)Mvb*0C$c-4ieX;leXx z8NefeS`3^^9dJtC7w&i&5};n#1ukNj=RH3py8e{6kZ0`a=MTS8_L0=T{2CV zdkb_5d(dQew>7$!@)lR&Rx_{Rr}H+*X62M_EKoX5 zzNM1Axa3=Q00p9UH*5$90CWxkh@{`5nJ6axR{Ly#PSS7DNuXC%<(`E}Wfqm=1&4S~l-;Zo(Lgeevt|0b)L1dSSYs9%3=zw76D|Yj7lp{@z-B z{w4#W?KePxYz-&`{JDR2dux2bo^_o#Lzs2~;sB-1D9Xce8{ zvSdb-QJljgI1S+Ce-2W&$%I$r>G8<+@rZP=mBk*qMoxiaa47uznmI|Idv~uq-n+uQ z$*P5}`cVT*0dp|T{-X8!7cuFs;|H!X881N{q;YV;Is2 zQd{C3AYHxFF0ol7+YeP{D|GZRv|2#R^1lS}+U=TqF*J@?AHrvt1p1mJ1?Zq?Kpaz(+HK!!s<#MRs@Oj~_ zXoDT;|9YwYMsIkvDj`N-u<*-ZG;3}7Ex+b3&@Ng-ZVdPsQ0~1=IHY*pG@g4ecr<8g zDL1TQYLQOpm{deg^-7(Rx!Dg4=w;stbr`nE#HC|-{(#!V`fkmS< zQ)`wDXpj9`EDv%RTti^RLV`HyXyDuSyDy4HfrJ@S27I4+59nB3_>F5sr0jLAPpUqv zz1(i_sK@itff8wVA0hkxn3Q9}y6#FCzN6k-(!DhwsxXmg6y+X?WH6U5|bqL0K zR1ZMcE>SSx+Mt>JKrC%R zuDn)7uCs>$#cqhQ&KnnrI-m=By$||`m98Mxzhe+nI-KdNj#s8et23t!$mBl+a`vg+ z>z^kp6tVuBHDqV5(9cJjRA@A2Lw^7 zTAs3&_YMser%w|`CC=f&&4FVpm@|51K9<=nl!=76flK~Dv_FnE*4r>tv9xJTYNMc_ z)K-dCqVO_6Ve`u948HFE)=Ick25V?DU$F(bo|3iTJTiGV$2}q*L9FPQ5-7Ak91E~W zuR!wz1xjdmc7=xTrjJ0c7f)9@+e5s=@`>#bQP7)6eL!vOBe7`LL6vS_8&ESJ6{>4g zRYlJkIRoq@Bfbr{Wd#{gYG?y~iyz-OzT`+6@XP=Hnxwdn))5!lLYks2RAJHi#2TB( z*`Ylvz+Pv@w+gF@c2A{Ro24hq448I43Fds^j=~VXkEFEB?wI}^wn)5e@v!hV$i-oK z{#?y~{n&+JiJJ~<8c<*Q|G9hn_&SfPPW*AX7hIMFEu~;y3U>tNhGk*DbLM={oag0ASGH5wU;n71bDueHbLPyMGiPT0{c}YHvIIgT(0t!D z5t8UTjSP&HmxPg@{0Shp2FS=3qvtR#Iw$?cudsJ7J)l#}eKy6!rBS~QF8YgWvGfkM zc$I^RUo%cdLt+H!6uO9-9Bjl+;pgg<9N&ybGQ|LLjfJz#ye-}UR-v@x;Fer&yg$z^ zc*%2%x+h~!$dB3IJLBzq=+5iy@|4sIiB-jg?2PjGJl~lbe{g=`CD6>Rv3tp0_Ggv-P#hYPo8MV4D9uxyx%TYr%s4KP zI@ilcZs>neJ2D+%3)zN2d|l81;!QaYATbbXs7!zHs&5C7dzr8=WnZw0zyNZmq>GYj zGPwKM#SKsgR3Ew^qvRWZ@mwkXF4QLwd-hiYQBgZ*A7C_ZyE-}vD#X72*X&L4QG-rA z*FY7yhK$tK{)V#UhKIb2o~l@qXQFiF;el`|ASS}b|G6e{gm4NI<3`6GGi)$YSfP{| zISBVh>Z{Ltr5+x7i)A*RVnXZzpgSKiOJ&ex5zt zeMi!@GQ*L*k1WG?hl5s;$@NdjGy9LN%lmQ32YH%!;Xf_jLMM}_rB6}bwzejl{26|f zE&Eic#UZ-x9-_^STrL-?1~1nXWz6x_wv0G8Kdl;fEPZiH15$Gv`0DmXtPZzKjio(G zrTOWV)NFB3!S=jg2rbkqBs$`RY%x8@2z@c4K`Gjq1*wX| zw9GI>UZf9S;!aJ2NyXUH4j|otk5HXvABBsKLc?d=#hG9f&&>oVJPp+vZYG|IS1nXH~i=H5E?EUdx{0U*6ywdBs4rhg<(Ms%ZW5s47hg-JKMKRdPs4H2W-v<;UH_ zf6vaN#SOL`rZzBdNFK|VS{uiKRoQVNo81u_WY{4#(#m_f*_`!Eevj3#hC1xH|18yI zVTGI#apNZH1Byg%z^7A_%nu*~Wch)>#nHED&4Lb#p<%ud&dGT@F7BBNl?B2F=`WEF zq-Ux~kc0AA7!Tdc<{Mu?acGDL3aNUzEKXL^#Ade$1A4!iVct8c!Cj`*MT3LT5?%ST z8K!#Oq`0$l8t>M3rrH@9?Cv*4qbqYRB4_XBdu%vZ5`Ly*|(*oza_VNVx^t z7Acng*pK68!LzMdnFEM->=xqBala7e2`JY&Y8_=;sq3COoIo`aL_K;dN#sPRATfZ3 zREAfK-+dw@;#DJ%li`|rz(f!V#N2r4jSvC%&h4L^ZMWt#;_K${GH`Qt5t__l(#ZJb zW@QW5vTPCVvEZ+O<9zEJN@=w1%57d6Qsn^-jygJpMn9Y=R|`q5jOZp_R*6<(-aW&` z&Fihuau-+;E*;nkG1ISu@S73U%FDMxX(~~J9POuq7PcFSYT`>2Wjto={g-6S$IPFJ zpE4S%ANyO@1c{=!DL8oC#m`R)eT$21GZG&?m}3I7F}t%S3wo?f2)MyqOd`oh>Jzt9 zyJ0|*?Yc;oOf)9+Q;l;$tn-WEmhJoQ%ZROcn6imJ@86juW`7b69PsuiC&^H8OGX_d zn2ly8!zL?>9-|l*%XmesK&f@BFzc{WgH*^vhKARa+Fw>U?lDJ%wRGf_G za8v98?6ej3=P6ls7p-JV-XuLyX(fhLcHb4-^6?vmH6yC#ee4Pe!;$;8u9y?W`xA^& zG47K~5^E#-O}*&490x`cL^c?aely5J(h6aGf=Frs@p*zsE5G8GES_IgOXA!7XzCtRPnRZ>F%IW6Q>eShpj3ta#HqF|JQ5fe_ zu3N;!*Bn4h9J?PRRFeUYoeu-Vd>YpL(v*_mlc8>~EPdCuDWS!5a@77oZ! z?%IP2TXisTSX+(^**WneLo7Hq4g#UvFbIGxM}e4c&c8_?_(2c=-n&T?KLjp_OY~zP z2q>C%;~;Mu`t+JrvsFoiiN>Oyv z#79Ib%Xi9~@26sjBFp(vGj9ot(L4>}5)1PgNsoQ?KMo6VKZDdKzCLjQ%U*F2UEFMQ z;al9SOkZrR8=Y9$8F98Q)k9#5?2In|lVJ<{-uGqXC;LwFB{Tm- znsjpuRJpXkr7C2p*s$rdVBz7~2s}1P+!L=Ojq|OZ1d~{O(<8@V5|a{5qb9wdwrCN( z!J9e8ayA@D#U+~+WXy(xlL6L9!ia-CU^L((w;A_%EZ_t##!=22Z=eKnH1w(qePvEu zx}4+@2ZagV> zsrBY3wI229%fk91hKGn_gz-@TzAS}+ zhdW`mTL|kzbjDrle8HzDE61uA&9;~2gwA=QIDko z0OCa+1GeKGWSCdTW`S7`ND_gCf`;G;)GXX8pZGMP7HkY>Wee5Vb z09BIh+G&vvL9gjs08py|7UZ@?h>J=1&pBO*l8)MFs%;sE={9+~h0aRY8^#G2fR$Au z!8Gxf0g6v$i>jAV(Dgs1z?iVxl2Gsgyod`~OkD1*8$f0X2xboGLGO*!6;btZAvS8N zsZ-0ca3#)q)ahDEKh;fzNElItg?>cXfxQvR)BLkaZ=ykyHa1tp9OtEfi6zh z(u_uxuH;lUSjW}nHd*G8TeU>mz1k1CSd8m|!I0~QEzwT=%{J&=vRAy- zHoRv<*!|mW5L3BOx4J<>%1Q~Fw?w%5zXwGu>o&LM(sXt5|7Aj9gO&s~|L!>?6!u_A zVEzB}BP0^+HfxF7u*tEO`L~@|;>`Y`A8s`tD!t@zWb}`u0j|ZkDNkNOJuMwbcO`pO ztjR5oPRx$*3{JLUZ%L*o^;O*0bcug#H5KM*-Pf#M|8d}kEhpt^W7oCvHh?9eC*qz9 zscby2A2mIRVk1p_=8)Y{N7ui{?4Yc9*=Zq#p;|vmeROV=yLWHnWU<}(uL z{&SHN=sIZPAD0IBbG3SkS_`DYAfd#67wXu{LlLl7DDMZ5KewWMyf)4 zF+ES56CZyAaff6j5w3hfKg2~7D7xwa+@WUXNn>N^Ii!UwH}N+<@j0Xu(&;2H@q*`& zkR-@SVf2&wQPKx$&6~>%UYQTj$xzec#5nQ7ewdlm-fj7%x+S$!K!_O`W5lh(2N*S) z)>g{vpWKgw?M$#3Eod&-O(Erhl}`tg_Sl|}I1eu6O6seh`jO-!pQ$A6rBCa}15Q)jjv0AhBwSIXz zAxTjY>H25&L#|n(-AQ7SbGZVYMN%HOOfHuwBDu{*Ke7_4xVm_)Uor>jay-s!#hisp z1;q>rT-$-Ftc9vMCV9xq=D+O6lR7fvLFUrrq!~{23HHMf%H4BFLaW0Cg8%xhdW57r zn#4_~RU{9#_)B!%>53xBlZ)7JA-U#f_am!AfhS$+J-i|jrU%#I!FmCyJjyb1lczg= zZl*ilZQ*`Z5?t*^IA=5-$0@wbK9{lG^5^tpyl1q)o3mKG2>R=&*9E~R{BwLzla&XL z@)E`KIigFlGW5CqSW*YIyLyy+A@7@+!l^Q1TJDSS;*16h=1SsgBI&qOUp)r%yB%hT z^InnPiM{>#)sJC}OiiS2|*bECpT)Y}9fq z`?)|*x|p=OBLxYJrp9We;o>&SlxXFt9!E5d6;fO8N7ePQLl6fF8?El^$8v6A$MTnKK%%zU|i6m@CyRedE!6`|s-DWnhwCE3)td>SD6zT`T^3=4Jy0 zV&3Ra!MH=d3Y!%CGW&ehvNMs8W5OH3`b(qY3#4i9y*J}8YZYH0zltyT%fuIysRSH2 zNTR=NR(ug~+?Vl}r5BfRAhB`pJsE%5sQh9cU+|Z){bd|6lX@>C=C8{YUxC}>i?jEF zAO1S}g=JhpbNGZmbt^v6Y!QE2PM^TMP)^!|p>g65MFad`jUOUcx9bXTs6rH>o|pbT zdtMn&yyaUFtZ#!T-N98x6d22hpmDP*AkUG+UM?0JAPA`@gu@La(R_)L;!ZL)x;Xg# zPBM13Y$rLVrXo|K;(Mp}z?5JMR&yHo}Zek?bp_h6+ASAiJtOh{O z_R)eF3w2jzETNBOE+et#ZI%5T&+hKFBhCW`e*NSWk|eeCvgck-c>sWf)?e-kV!Pof zXJD$fqm{Z&N1e?Ox9EWz{GvcvnR1=>sZK_LCcc=0$r>qfn>SE-d}a5ry|*HRc2Bw! zv?3%SZCvIX{Z&R<8>Cqe7c|&_v}v2pD_Ni5=*}YUM@COuj~*iDov{D&$F6Wiwzg4U zLZ4ULE4v1$V)~%YsIj&MUc#t%W~b)xyvD98_kC9W#^yc4_0Nou#7}U+k)7}|nEY2p zepbnsXpn6oD!P4lqNmdCF-SFb>96s4At5n$53A&P3dKGWiV6Q9u`Bxwk2lQEv`^qr z`@a3M<*F3dPEhAkbNQo>6^ey?IYGR2BH#$!1JC=Lt9onVTsWv6$B@C!wJ*u1P|}!v zSq~3H@RK?|Dd_M5ZkR;_Cu4Vhrh`jDBSr(vl(KTm&jGfcn}*vD|0ev=ErYH>gc~N;O)OD*DaKHq+I@z`{36 zX{xBj>o?FdhcP;iWx#AZnkD^KMs+Ps&^)^>yu~#iDsRoV zK$t~Mz8Or%L}U2=A1`~yUInQ%<&jpS&91^K63_0*IcQ7{^iDMa2c`K5Lb?O)kOPE| z;--p2(IVL@`NAztteSCeXJmTwY>xTB<(AcyYBZ0h&W=WdnStSvS_p)tJtzcGBO!U& zZlHxQy;zJ-DCg2wQC?Z}+?S?s*<49iG_XJ1Z8>4cAELYM>+xt>-lxZ04tetZKzh~5FH_8w?^8T z7z@^!3c_F@D6fwj*qh=mC3-#*iihVjs->IvFt+6`&&^QHpo$@i}439jEh5? zz;x(qOa=d4-RXc~Uxl|;2RCG>(tw)n;Aw~6!lBN2TthOB7Y=d18%0{7X!Vx&{W98J ztWerYjX_ArFU9|g8r!#D!gV6ucv$s@?C!2Bl+iBNt6JbtGl_d_kO}FndM_jMYZRh@ zbn!H7GO$~PmtjU3@4>lC8BsRA)^zUqoji-{&vuSk(osa&twya3+g6TQUYX&$pz33C zx`DWszu~#)&LHS>(v!lxD20qSzp+x^eU(zS4#63^kf^$kQzvo{_&ePFiQyES|vSPwXDevd295{BXk19&JCh2EH71r_7L4@%tBiYgdip2|Ntz{Ws(ZLJXlxpeqluoi( zh!h#+-{;h+#-QeZ1ApNGbb1Qk3NF%4OS0sLAMmqXW!^ zs8|?#(uJ@%iD~dv2ajXM0p^M#M41rPnM~)A9l}}|l0EP3KKYUhcy0-J1sM_4E7#t&RC>oUIxPU7nB5GO}t>Zh47i3?8RTKYk%LJJAp{2QG- zjHX{SRa6iv3{ci1R>mL#q325iB>B?BO^D!8%9J%e2pKzVR&UoWJI`r;}FN{ zHzFK+LnX(i$gsD!1}#rj?cq;Zx~v35J|s*m7KM5$Ui~5~ul5xPKZE z%gq@XUNy$k&^c>LmZXeZyvX6qR0o-8$Z=ib%2rhwxkr?lThN_gezeSwabB$&t)@H91wSk*`qg0^a+Q1ljn))SM3GDdp5nu72ETLOh|aGw(a_1V^?&SKaRH%Qt)c5bV;APzQ# z1NC0a55j}`m|Iwn=^gT#y`O6D-R$Y~q+cBk)kHeDfMF9fp?l}Vv+?UW9r)#oobwz@ z!l6tO6m8W|-r2WR1AQFhp3#IP%o9)=PD?PctbE0--SDO~S?Yd(tjVwP2L+-FpgF?@$hN7! zmpW)4U%@NbS6UzjD6VcbXt;}9u04Uj_|4z@BspkbJCEf%zFTs!+Sv|r=YT!#U{fvG zQeSo;JUO1|Jdyt)G{;(;XVhz<_zfVeyQx8fo+^W$E`y$NAaztghltbA#mmneK;2%D z!|lq?wea*JU|6+VQ{K^O0EzLA4x0t!%t3ZY(y1dlT$o4B$J`RAz{eD|WpPbJPfF6>jGIsh6?@d;xv=Rj>m zOB!4O_;VKG4?+MT$AL(1=%Xs>RxF65eK@+1u}!1Swy{oPyP4KzLC2;n#Y=38Wn{#k zeKhHmr}Ql=G|X&OLH^W)h|>)gm=XWj7b%@u_xyN#qw2#Co13n+2>fdY4BqPQ>1nLm zgPC4^IQf`M>a&*IwS4Nc9`_(I!DSDLUhD}6O5SCq68dB%bk#xU)HmV=Li2+06rYSv z4-EiZKWLwsv-DRGo)=f)?;uq7>2D#F$N-lR8mhD6O*cJ6J?vEnQxA)~3az1BtNHjN z!@sW+UQLROaGhixfV&J05PIf>`Z(MeNt>%Br@7{#3sV|Xu6wAy4u%^MQ+qsKG>2q3 zw6y8L0kBkbEz3o~iUZ(q_?h7Ubc#oN@8*)%_MT3z#PoiSZrnRM!n~&=%sV^nGVks< z<9UzQj`bz*c?=V4tvK$$vU7a3mX6P$n&c00M}JVwV>XLK0OlPVpM#C-srGbhadrV` zfLaT9MlQI;hV^$H2X|t5>qvrGWM!1}svDdIrY!1@#TA5@8Syp0l&(e|paYUKR#y~iQ&Dy1ys3F(((ycpXcdE7Y?5eK z{&iorHT9oo8#~GXxEZBjn)uOG$_9G?q~x{n?9&u-{$bfb1~$gXNG_?R@i>ph;25{W z#3_8`flyz0Dw>p;;qW4!S_u|F^eZQ+PK=shZ9o4=^4no;0MIWukX-eP;ZFu?IHryl z67dzTlKqFT(^$AGP6qyfYOh7eGY%pv9k>U>Bthx34xj-aZlk5eG2nar(Guv1GU&-N z=&3RY5p)s#Gi4AW+w4l)j@%Sn6yoLag$@ESZM<$sLVW&TF6-*lLeG?tl`(|V zA%Z1iyXHL{J{s>61$GWG(3`_o7ULSJUd<#wFEV+u9pWNlpSYJ)T9XSiaS#20G)yI_ zJz)aN`j&`67kum;!VXExT5`ho4L*X*7Yv&y~QLj$kL& z?3I)amrf2M-8>xhkr_BTwp{rN@+V8*WJdq>Rb)WVQ}dqDoc z{Kb3>g#C7gL>^VM85e|H(UhEh2j?0x@;LSyO4}D9JCg`YLvL~xQ|0tjMqFLP3E-|P zY_ICZT+*7F%lOg815}o}bT|x?o9+c>x|PommEoJS*0P?XT-Rd*?z|^r|6u%8xiL~# zeq~%wo`V6C)#cM0b*GO|I2WOx_a zgn_$1jzE6bm}IBtG7tK|jf?8UU5=VJQ7#1I?QNv>+8I$z+yIoai}D7w`H|QjBUrxv9m9! z`Xgq|3s8a7W{0YYT}ADz_%9A1p5DlEMj8nK*szp$0~nOaG_7^In`H zt9|zL`Gq6%t;vimEiF>n0i)Y5lfAz^#zbA1$Q#z2M9;~t>T}Yl!2)z+Ik!xDoUT*J+FD-V&2oMV?2&Ysc=r(sDl?<&G$u*9==sS;n`5Q%FjkMH2r zluUBOHS}7=S>wER{VundViM0SKo{D=bqmN@vgYnbD-|&nre<=xOs@0(etL0MkG*pp zT&GlyvP~o-Hj!|)c9m6}fex6DP&Fce5Dk)tvCHh05L)cILJv|WH>ohlxN#fQ#?77* zH;!j=leDGWoCpu9CH`n+7J*N(3{BFa(&)KI<8w`1T`;d~I&De72G0HwT z23#b~W^2{WF$ss+bdS&OO4MIHL;_2aBP6w%(|62Gh9iem z*(OzYy?q1JhY@4~HBnA{haXqh%(I&FE5`4}Yk!Jz<-6G7YD8nH%h(z4Db5n5roo-y zuJ&L>Eta-IN|q>Wk)74=9#rCX+-j-rC6)M8xE_WmhhG0rMPgx#>@>djdLc)ogrf9#zXBFrri&Kj5{`CNZf#Xvld|Zo(m^^_Ak`bDP$~yq4A>>KF5>h37i!(${4bVpq>(0P9-zF!{eud{kr->J2f+!Qg7HN z311yBNMBx$%*^)|BoHFAYfn}(tuA(VF*F{zDfP!Rk=@g4Ph~{Zc=Of>8MpW4@kFTe zAePm)D7IQu1_sLay2FEMlE;eOrv6YZ5{49}(7(DGw}fhhAti1w^h3~FifHP&j$=3N zPTfR@;%h%$| zlg3e-&o2@U#5ll}RQGL4QcgpdNGfznCabPyJFTfOLNKMYGPZ5Jk8Fc3Eb9%aI62;? z_r{CqKuZ|#_~yxrHXijg<%`Kg<1x%4V66yv+5seVfBd20cmJ%GG)Q&AQx6T(9BKks zbATWtIC=IV3ndZU3TWw43G_r6v|0u|T?TEGL08M5<%dfYpDcsc%AjW)h@*J(;ov%K&?m~fYPx%07W5r0BXbxaK3eBM(ptM%LzEsTU-zzO2X{R znVyz1qS(WLt<$IHacKvv2g?|P22BT765#N-GwO(->;<(l|^u2i@{l3>puQ)3G_r6gz;Kz_*5D6bQy#pYz?_o18>hhY%{B0 zAYZKpV{o%S{nt-agP*JhWB6AgdD?;7u@K^!*Cw771kYe%DClY#gvwU?>R~ZFi0U1J zF7UlekTdw+B?!Q~1Oa%LAOP|H7p+;<=O*ZPXv0=}w1AmK!r*!->ogq~cjO9i|(9!r{8`a0qO6R@C9*0>-`> zF?Ro)n5C#0^>1`#9Bjx9C2I&_1soIXVSwC_gx7bJt8&!xpin~`KoZCj5*?n?r$#$N z#vhl`rLr11&`P;B{-??ZC0y#Z_wNr!diMukzh9~H!J)5kb1 zoujgp4w+IGt%D-MjT?qIRznfr>fhcdhP4uj2)qBgA7aZqloAC|qhSkHf8S3y(=~&}0-ED;w36++|FA8dLKzaRHPn8v^=S4L`L~eE-k}dS ztVbe-&FwK2N|MMAtCEOeZC5{@D*A)+bG{weKWRC%s@C(qH zBWpU6JtF>kN%VYuWJA87ossm!$M$34BT`F2&4d~WveNix{aCU=(?_zn%3%AAYsQ0m z2{vB;xPHuF#)^S2R~RYVy9IkvH9@4y|GXb^la$B{_W3HTTrxKAetbVP15TC&?+qZCuIOzhbfTcL__qr5BieapQCYH=EsdD{e9)g^ADgl>YWw_}`Ka z@sIAUq@xlU-K`~h^?{)N{z8$+T8`N8J9R65N1d__DU!%Wyj(^~<+8skN%|!*kcHq7H?(JcLvfVxw8M-q?Q{MGqzs&!b&VsP~wuQ#luv(gW-2y zi=FKsdLfn7(MoE%l%@IAg_>KkDm5RS7paBII*-hE&SxaixRpI4wM95c#Lbo(E^);` z3)?zw+biEWvOlwX_+A$ADo2dgsy4nONAieEcnvNi0~=%nV!1*_%@`*gm%Cdui1#mv zVf8kOGJ5sN}3wIl%hIpff zfMe}wtJjS0cafW=BkY14PMk9h?_{BmtI(#sw&>e{Rv*?Py0JSe(WdKl2SIzvKf^$b zLq{ty%S9P`hIt!4!kJrQnwe^%3Ifvf2m`S-kFj$^_4k|RtGad z;}zG>wssv+4SiW9%B{POqEH>_5eA|gy^E^QM;Mx>3|zb#UfO{U22~K2NW9;dMuV=A z9e@!-OJ4F%Fp!V2di75hRbC%fvJqmC&nw$6bm{eR&vKJ+OdkN zYR03?;opM`840Z3Lv@Ep0rCH`TNSuM$CY&CFR!2?OQB2@9nrAL@wjwJBa73rKcp7T zDXBCtdAmf_%3kx{t@L40waQ-=&{2LD?GWkGeO?FRNf<5liFT^{mW`_WHb#+3YW@C7 zc_uXnW1;-c!pOXgLXd>AS3TDY(9lHp3}Ob+eJW&e zhm*pMc35o!nTx)4@^!~vY}c2JmHUm$O^UPm8j4jsn3=PPYhGC5%BrHqKP(K1nA=H5@e<{L|q6r-1IlsUfAF3%rD%2>Ew|^x4rC^TQg!>HH@vP zDHJ5^x-$1~;$fHUd8JktXBN(m&rf0vq^-JVl%IIq<_VWO>&;IdT!=4E;0*V1P1@E1 z6~f`V4KC*%aI@sIO1)lWrw)XYWZE9 zhi1vLJ%D<4c>c|idL73gc3ru>sec*HKUAGYoZ%gA?c5kB5NCt9B@C~c;d;qpCt%i#DDF88Pd91MU71LPI9ji4OW{z|tn zfPz=qe={!8iE=g{qP%Km;OITtC%AcQq4l13$)an_pizUTFCB07&LIHArO6Tp643+^ z3b*^7%6D(dz*eAOTK#zk4T-c)TMh<1XqDox|i6N9;Uc63=O(A9P=D+Ly7uL z2XiCs^NVu|~-460Qmrk`#2k(#d zRc~e*&-^Nt(MOFME`|c~u{3VOz-s>N^R7>kJKiW!uTYv@63pP?J~*C zbT8Z%=%nM2{rtm+bN(TYrMUc+b%bKfzM7aZ{_@HR4{LI?AYqnge-f8D1L7w!nJ;jj z>R9u_t>fMHJUJl=&qjC>6a+Xb=ivs13Ta@1uM zr{;Rc!wnqxE@c!Wt&y8>llb(${gbUZ9ML{>rjwDvDtUFd$#@CTlZ=wlzA=^SpKUOaQ6 zy>R%%ct%Z6d@nUF$Nu29IdRqy1NPb|2@zdm;qaSZ5}j~OF$E&-#5>K$ofVo21n+8J zXv>&Ns{k6+VGN~^0GPr$QxeDIX8j2crEp69-GBW8DfF(-#V6T!+x-^wZT_;SU}s=` z0k{tnFYyh1AElMs${~QeUMOHs7h%BV#ahvK_=h6n?rjJA1k{dG2r<=Rz`aI7Uw8)%`EwbYj=h1x${gf! z#@+eO0&GV%OOBdl;t9#%+G(iu)^q?sKzG(vS_W8}E15{}*^a=|e7o0~z0eLp>|HYm zN6Ak1B-zsNbJ>NT3i1)DvElYsaLc)4w9ICRvLlx!jqlEMYaDt^`UfvR{Q6H@jPcSi z>^6#B7OXWR_ZudK9FD~py?m8cs{PC^90M<={K@#ruO zx;Ck&>mMCH`ZMZY)CQh%PY{S7#A62J2)PTnd;o`3IWX;*qysI!=Up!eU5S&b_8Ffk zfcGxJo~nT1$ZGm7>dV{;P-7WpKX^lsl`N_PGUKf?2- zAJrv@!5mF^f*A>H!eDv#0AmpsfDU!XjGXmVrIV>tc6_m$r(k`U2EY^iI6HUco$TZ} z+*aBKTadvQnZVxhDhpNdC+u8$yI{_;_{0*G_u1DFUQB`pFu^BW>8Z^`wO+a-E>@vL zTdaac_!xulD}Po8Z?LCbS7=MP6qQ{fDq)Y*$%bgNk+f+J+$n_)f@Gru4_X;-&*T3O z_AcQ8dn#n?r>PkFGIwrQ>=+S(VK1;d-x7v)Cx*fhRaZte)m2T9Xk_@UTt8FafQ}Ad zP<0ep&B$HjJ>)XpAL7=Vd*|g+1{n4aD3+Q(K)mV1Q3+w{)J;r9p!XYb| z%PF%m8*j02-$V#pjNyrpCod;j5dvctPRG6twYmNQYBh2KAqui1-ZdS@Z(uj%R$uOV zZ1`+jM?FW6v#l!k7v_F9(awf%`c1RMO-EOpW^t_hA_f~p8T$i@G#R37#OQL(3%Irr zSze2TNBZE;>)aK66ny#IJ9J8y0NrueYtLVZBie;kh@Imk{EI)Qe(b?;Nm3*t?(&Cl; z$`$u%$vX2yxNeK6vj3vWlWd5wYq^L#3Y>X$IM{aVL&Q;?bSG9u)b|{2VnI9?Z@|JL z=VZIrMOqt2-xblue`Sx#MJT=}&-dgxC=4KW0Rsv@;ke<5Nr&`hEsZXC%Gs*q6dP0~xR;fZEI&($6z5oS#bg#nltSmyQ?5D2 zf)>O}Y|q%KLw%G@mX`jEtckMM-4r8JJUoPrBh@}!1PN37@Nra$ZA3xU=%=FgeLt!5 zKp$D-st#dTx|0qux$_-DX}g=0I&=s)#aw7Sutxx1aRSIaC-51ztrYsic-ujrgfLvz z)A%|P!+~*4j)55{gVd%2t9q8)(nCR5#29s1 z#H>6zeEFR^SH-aI(P0Ws{x;lNgzFB38y4pihG2p)9MhKh!MS0kc$_D;*`bkU2e+6@ zmtVrNW$89*>ICGaVT>1}{Dt{Tck9!b?2e_6VYd)>Fx<;_vu4~KLrhZ~$7^mJt2}6l z0q^u5XG#P$yZ-F>fg6d-J(y%!l4>LL0#iF=IarzGV;1&)3^6)C3k#z(DQGRDhq zasY7#KjHuqT>hv7L=|Cqd_u=rEkdw9X4C-#lvT^Kk6L0LH!(tCOP3P>y9Pmp4iW<_ z0O7Q_Us?}(-F3x@E;H30`+zeQ79b(tGaqu&GiUb64pBzQyF=8#v?ilg-{%57nWEUe z^^j`@$#Rn3=^Au#{mtqF2N9Olwh#m5)2c8!8GCNp4u+x#_pp_%l$3Xb#U^*#hLl`II@=+ zbv5+Ks)kbbA_VhfinrrnUTB4iihnDPV4+TpJ4o=1k8#P|UevJ8eY+j&` z{9sRcdLM@cL=s3JwIn*Fq6t(e41%gjGxHvKENoKnP%fDp`%Ggp_)}Mx(Sh+Y_nx#! zrxTH%>BRkyW6f|AA&$~2w#L6CR=E}nVn6NN=2=Lg9qj!%X-43OTLS_>*7if z#u*BLf(yZmpOkX#<&;+3$PKSBiq-YCT$CO*Hh3d+k{Oa8cHA0=QZP zJnp(S?KQ!7Te}2(vJwi{W#7tP3%K>BrPC}7%N(Ij5YC3gp~69NpwxrhMJuwk45fBM z{wTB>BGmg@v*$AEbNOGXUUB$$*OiZYk4BGDz_@$3_U|m3)HPDkAECFfD(ZzBDikv@ zW?xFo4+8T`iD@U8Po8{$OvisSA{{d1fo-M$(tsz#iSLk!28g0NMm}?>cF5wi6eI#pG3NpNB%Pd@~Oy# zPoh}6J;$e^+999EZ#O21aU+lU=3g}1)D?ZTG6N>zknL9wM<&po{piD+&!Y5G-9m(-&sCLTdNz)`Tj^;7X{L+AZ z4NSrz+h=#?I5a#v3NR-_?>JJad zqo5KViD2kNjz>eZLmp4vf690y%F#UP_r7K`1=g!RlB5|lI`-x9T92m|Ari*h0;v~BAN+n+F#u^+~nj_n9 zM{Qvt9JvDr%8sjC)r}()VPN(Gb2tEtdrC4gH1=vTwl|7&cKGAC8r!R+yTgC{7EP$N z<}N{bU-a*FfK)24psE-PN6jd465aTUj|_2?1k5ccZPHx(N~5j$16zgem3&pRuhh2M zVGl$RgLY4z%!s(zA_4Y~J0>YEjH$apZSa<0mIK-#7$E~oQ;rddS(CBV^!cBrnO|+M zoP?UN4bJWD5yF76hNU9I2r3wXzVlKXFL=KO6{x*4N2jXFED*<3}od05@2zb^3_D;$6F!Fv}($*f-WojUY zbk;#`8)N$y5G<^jX073d1{4}VlPRBF)BR}xC+x#IbcR95Z8KVrJ2ewWvcLa1WU7-= z?h!YYQ5~xf71VN_T8J6fvRbeKW@^#rlab1^QLwF8I_~<*g&`gaG%3&O66Lyvt}F>5 z{e|or2Ys;{Y;nyGm;{)fI*!-4AKJJ7*xV#)hBLCY{?#<`^NZ-ux6;N9QGRY2xv7BY z;M^2$3&vhI5p8@exmlo)dU;84%8>_!`-K-p;wgM zZzO8vdd#@4oezq;uQekP;L!p+93u&=Gz;+C)$N&TD_K)fIWA%p*}1@TCfN zriuMU`*9>$SDd`>o;f)ZKrxoS$%}&_{*-$)T$T6#f`m9Lf@134WH4JOlwwVMvx-;m zhE3yNq|xHR7*XAwPidrJlO%JC91aO_v|eIdt;Sq#cE^Po1Tg%3bI@iuFoMD~l&ffi ziEpWv1kVdf6^=UzHh?UOJ*1E`VqWV*!3KDL)hIeS1)C91<6Ema9sr+=A+}%cgXh{L z52!_KqTTF+en2*(%tX@sw(FAlkd&8VGl_VX``|0fUN*cSDG^4A71??<(ycK>IoWjR z+biXaD6oHmT~^sC=Xayu!SAs(hk?i-g)VEi<@Ct~9M_S<`}X&67z9Qt`vF9ZV9|5P6W9M-ijOd!*rF_TN@er)= z5{at%FWCu(6Led*TZ>DZa|bJ|%C(P%+nwn<;ytj++A3MB=V=x1@@mH*J>Aa$Ly`4F zqhKhZd^RK2iSK5|p@*f++^w8rusUP~o%PT(ZoxH%KjS}Y#O`ZOM{JuL)TLShHKtaC zq!ktw=VsKr!tu9^ENvKTdBOX7nPj5}L%}H9ufC2V=J8lrsjHuzm%UhY@g5VpFuG)8 zj3}G0r}?l>g`r_>R@R(u136FJgkXaL890QwHYPz*SpOkXnhKY#ho#1&!*|VTl}*3~ z(35UQRYBOhq@l3}0{gZG!U07bDVz-ldC@+%hnf2&x0#vy#qVmu1k>RRqmiK4+N^+L zYtusmBiPq0g0PS)g8a5-uzobeQmy#aRR?0p$95$e<$+!!$ek_A_bAGrB|iGZw`zP8 zN6(&N1N0dvS_}{FF;=YfKb>KsKm`k#!sh6F=Tb(?=>Bk}nHO5k#1#rZ-mGqf!K+(e zeTmEBfz6w57=-pbW)4{x@biu8X4_H^h%_iCim^8i!okH*Z!0YD`}OK}+p-{-ln3G% zebXR3#F&`hZdSM1mVWQ-;=)wt;#@`qjVF~jhdJglc3v$%%&}gf*9o&+7_u^{+2>&} z0g{dp7p9)GJhEAgNz&v~FuTdHjFpIrd@hmS0`BcBPcX&EiYPX&5tZ=6#;b2l`V(j9 z{f0VIx8LOL~uffKK- zRcW)g|NlVho_OAox|^Na5&b0P#~-oVVO-;L4yEo6c3x23gZZ*;@1By6(|IK!c>P25~gPN`Jscd z)QX{lOrm|S%pjAR1HnV3gAoNUQW_{b9Vz19aTzitYrKaNsz4a=#!X%zjQR?JZtTF1 zCf`UMCi1zRgP=1gsP7OE`N9~WU>m>uPfEbDbw`m8c#&bD-i&GQFk~}rwVl$bDKq5O zx6WA*L=&w)>=u`xFAhGK5+`Wz*;Q|yPDv87bz%>V$Zk?Z*y%ZWFY_-pH`Qu~M z`8f12*Kp|Jx^Ouxfw{)4Xf}QYle4c>E;qvzMgY)&eVD-RVO#BoMt~G&>8Zu81SNOR z-SH3}r>6=wevPV7llLa(1`xW4QZh8VPDNUO>R#E)hxC$yK1xJVw1-;kg*J|RA8Tf0aN+}GRH~BE zjp^c#^6f*iFm|~C%b3ziW5gFCjH9@Q0&nRm`jtN<8M##nV*-zFTb4yOVOC$8R5TN7 zWnVk|)Mx2g0=zPZMoW(*2n%!ZmbMk<%DNoiExVIHEQwuluybu0mpFJt#%pJ#tQzNz z3=$LxTsU)NK3?Pxe7GuJ9Tzx8WX1go!b;pgTy&yjxCFzB+h9CrfO6>)?D2}T2mUMr z+rleZTfLybA7wZn&in+);DhWtZfG*9tnsY^76iwhjn~b?r0fsp5~Ddt*}O)bSC~Q>4{+=EFhYi7(vdE zafLI|olI4Q-oel1a}~$tFgm7j=K8r?1_SX> zFMG`P;*d1G$c1kic^Uc#@&u*GLoslQFaFhNqMUd z%hoNm7Vf>2@8CiIjM@`*qCdaoSJH^@YuDDpW@c1*>^}rTcg@V5%h+KX&-+R}G8^0k z1Oa9GE^sIY4%#$}nyh>8AO414OT3(i#j~sHQ37#z6o97GFf0XA3O*;A6S*1Now$-T zGXi4DL2E+rYoNR}Km>Eo`Cl+l?3dKZ%N#?gGY z12SQ~UJq){d2pGSb|)9#r!PZ%puH-ZQ z5U1hp21&YkBCoOV;ge+$A_F5N6IU1~mrbl>?a(WYCB8C+0M=Q1-lfKgV2>G7C{>cV zzF|6s#YukgfYAa(wuVakKo}3f{BXcDYOec2YETwpxG<2nk;fypxGT^AGRkp7paDc< zxEas@szjXM=AD_aUSR}|z)sY~BX<7$Y)~j7c8;>DQRgj2I$OpZ`#O!oAyX~2GE&%Q zGMAnU0-|A29V?$gwaiT84&K`WgRpbP81NK;-Wq1;qXxWYyOza6bG|cqqP=kJ&g0FD z)VrTWE~IndU`^9$OpnDl7}sn>P1B>)yDhwS;b!jOJfQZWG#=Dj>@lp--4?Za zTSj%ReIC^+D#1uDs00JqR3hSI6nj4!czni*Z=xYI%8Le@VYnS{5OG(VT(e~1Le-2y zjP0W^qHz$U#^pLy8ce*fb(a}Xyszka>2FD7d{p{7bg2w6qKjG$w54W@bQ?D*{ToE? z3x6!GNh7&%m9LN^neOLPT)7*wYh72zo^7s%7d**uK zj@s!N)VYwz*cVVX9O-nI-|8Btc(=3Q!SUp7xRx?wTZ-C9Ig4PjQG}x zw{+pJEWj$6vk)5_bgkKhleotAUxUC1uL|ghrul`}few$7hXqbBvvNHyMe;ho5!Y~r@$78cbqSjpws%eE0V zKMqkPapXwGMoZSX`WCBvVK2s>kY=my7g14?wjWD=A}`Q+t$*EPJ^@}r>+Y!(dOl`J zhw|OL@(D~k3+@LD29%}2+!~L+R*D+R2jf{ySb4bH9_wB!D z4mW-pav~i%LWPRwcDHZIlNLqC`Q~L^l!eQRqN^`bFD8K?mAu)Mk<{AJYI*dbHugj^ zioDs$%Rdn#F^wG~#=&0w$Rq5{pmweuOgUcepAp^AD~MK1cGne-9kP~EF0|KxWxqV{ z#Ky}B3Fb4yAX6u%%7miM*|TBxn#URs2@v1VUF^8ic!m|2-1~oFxonjBSS)r@LSfvA z#q+1z^C-y=oM%M3ew>nr=T^C}2(w-;KB=D%e>ZF#Cv!tsy)Qh}vVgm%@zjK(8@ro4 z&xwn0FFy#T3B!b4->v9czA@jE!O(>={x9Aytpq1XIFDCVQ;|50XmmKU^~RTzeTh)9 zE;q-rGkN;ZmGD_2O;Q@VhZJQsg7g}L%eYkhCI=A5_00|-bI-RpfJCd``q=PG|6H#v z`KsUzmz@}c%ucyeh}scD=0BqeP?Fm+O0e-NN+R!9xN}>wwzxm3vOPPC%sMtq#HOj? zdX8+^+BrBI67v#6r*jT!qVACg?gEY4aw4+W4BJQ8HzH#juT}>0l==uLt>w`Rwwq{C zz!`WGDHyowRypE9qPFSu<25&c!H^6l85INr9KO0`l}5@o>@ncR3Y?GEXr^M+G9_u4 zhP=eS{TwY6VTq#1`hqvk0&~A@hGxXW*-x7*4rMDjb=^&8`=v9)Q_TtoLJ{S#e@!(nE&T(l?C@%}e zR$=#gfnV*5=R~TNEZ87GMwR-n#liptVPvan%R&4d;%JLM!c~-W z@7MT5s)*dtLYpy2I1Ln%1w>MMRRbk2dq#;jA54-%v(BrvV^P9c8+7s># z;uqgFD1JfDkgw)Lqnhx3lsG@#_ zvPdPC3^d9x@immC)-5VPX(AP?-U6oSs;etjN zV*Bt}xL$F8e2$3i*MFG(MZ;*C^6CK;fS0S5?L3+*%d=Hnl6Mz9%xOcY2WW?h&G z7qev~xB4cM)ps4@RphXiAH<1p-ZmkL2)`D%4jyxFK)AOaa&JH!uqPLy1gINAA;Cda zT}G})-%ReKhQKyLeQHT>UBt+?_Z}l2X!6Cs&Yjm-;j-JVSghl9t_8~17=A53R4+4P z=*4D0v1}pT3%7RWP(?`gR>-DwB&Zud+F`}#=EC!9f`Kg?KUT1^?J$gYXJ-~dK~ED8 za%OBk@iyv9PG`HjCbn6z)I-@%H=uGuPD+6=Gq{_OIAWY zCtN-_`fdk^VKORh7$$S&fsJ4@CbchL3U~PsaDg<>6oX3(a^Y=%#~)@CCL2h1u+Y19^HN*#V_>7>N`1p-le8Sws9{ zx|o_*H;)*1dGQY;r6NV$lzi>?%NqEOM{I1>q}CGEk9=mUHW^>{d1UzCen4HFDhUPQ zrV({ps0cSuQpd(4NlB`X%|}eicup89dfZiUn~GL&o4-C9F6kU`dYI%5D2si}Ku5)s+ z^TLq;S!hjma44Rnnjd1%nb%o$(GE-eVW_Fv1tCzdKA0&z5$zc^n!0Ls1~0DRJ47t@ zUGb7@Z&ze4BTs98WaI*w&wc7sQYbTFw- zJX@gd0w)A>gLS!uv`%;l=ZZak6ba~ya7YIs7x$&f!SbJy6Y=3c?si>td(KrMg#_Yw#{Z5ksTyk^Y%nJBng#~e)hlqvG|Y!V;Si${U!NO<96m%t>kLyq*NzZ zO-79C#4L$1)1!4(K1D$-;VIuvjP^1jX#CaIy2_&x1BxJd}3~ zCS|_>w1Sb@97j6Y-#%yb#F~sC33dPOIU^VZynS(c8kfkB%Ie<_NKMKaLQFBpyWzu*4uLnyzfaRQub zpGU;d!Yg+qvHtu5sY?Y?{ChxB`kYlxVWhE1T7ql22v|Ywl zR6+rpX@Yo$c8E{5)N^tY!&(m0$E1XAA3F%HHiw7^R{t40Mf8Jv#3Ca znA#)CHKLZjD5ENB&!aNc5y|?FklizP4u>M=PQ-vm1lN&8Jk5{uUHfI}^>9&O3V)-a zRNh1{V$W3@QFxSg$KlJfi_3~H$!gjr!@KS1GY!I__av4)z zYR_SE6vQ#MBV1?Nb9lgcGE6jb(+OLTegb>;A}sh1pU+F0f?FFJzW09pTjIHfolow! zAl28gPMw_(VIgrZkw!F+xn6I)vp7H5-rrkj%}pUFJ`|ErcwRc=mm5Rufl2%n7A1kI?YKBZ?uOxJtv9~Z z70}+E;j8SrcJ<~3?)ycsux~%o1GwXtxYi73IJ(TmZ{&h4&a@YBaIhT={BUcbm9fpr zr%@fU35-=Smum4@$Eyy2NA@IXhFp#@?kS>t3R0wsKfU0)SVB&g!axW-W#nP(MdW2x zm_apxF{26@vwo3d+LU!b%AGEX$4F)UGf6F8Em5|(wB9Z~EM|Rf9Q0Y$V;nDJBsJ6^ z$v9k^_5fjtKsJ)%2QrU>(PAssfEr=#wN?3TiJ9*r+O*`g|IT3?Qapx zC3fRo?8#Y1Rv!waNTT_9&o!xAGSX;_RMOJ?9jjv5@p~-E4u~XkKDFTEXBIlGj7T>P z`2}1e>N4P}@Z>I{78a#7TQzS|)@qvSxoh~B9@iiv;(PT+*=#3e4@G>fE(ZP7QQRXy zTti<#oU-}s?0!nFm@wZa-L_}=Yd)w~gPY~^i^#DIwv1T2#GW@VN#hK8)yXJICF&8E zj0&PyzdlsqY7KeiJ&s9YYrdGh?F;%Nd6dDQAIF;&?TlY7?XUWpv-=*K2x9wrWKk}( z4|UF;Z)3ZZZAZV5I3yGA-Z4=dD59C}U~ZT^E0Y5oua2_UbSg;Rxh7~a_?WSU;_e|$-`}E=&-KHnajRT||&mK7)hhYxN&@m;#?O7mo zH2vM0MvVMrxTXi-vj(n*i+ie~MB<4y+nwpgw6iYqGV+qWoI3846|t5o3>!4IYdCUK zXo^D|62|fKRW@V9>r$fOXx`1g9-mXi;M2u9dnXD)tSKc*jALI!NviP_GntV)ml7p{ z^=m@pQ=-JM_OICCD$UU}gu?l!aKA8m)1?t|tjp{_$SveilwzWk)K|asBg{oUeM<5x zV;>1N!hj!-J9E8^B$p49v~15|pke>a{F@BMXB>c+nf%~q$5|IoX(M@wR#-SN6qZ_| zQ11gUmI@qg;hMUO0k-U5;<*9KZ@i)7Q`i@cn@<28ku567{Bcu*I^^I8Zf0K)d8sdQFcE7bMalW{VNmuF#} zWeeUgBG3v2RUF`j>v&OYU|I$DdMgg{0QNnga%9ubOe$v@XtIW99WLBC)UrF}H7+8( zuz>XvpnFUrE;!PTMExuh6|?cIP;s%3>q)dag}PfhWjYKZqFBciqf-0IG6g}SCYXXy zl3}32B`9vIH~$OtXDJAureFgO#uM~W|tmvnl3J24DUTNrpKI()m_xUB)1(HjE>RHMXroC!Y zzIN4z=*SdoD-H*dS!T$1pu&slJ>PmL)J}&?;q54_o9*B#U{&$*YpCj2%>)B6Pbe{w zyCYGDpbK5~cqtd1GPfs|W8a2jNN}elv~-#T(IJs0+$?3Pr9v%eJ3+&6gXc9ssyIUz z7*wl?yem;p4za9L+c7(pJP9L~bhd*K7sCWZE*wjTrkuT}f#FQv28MImRvL$~kQUOZ z8hyA!tHHCX7{F1xW;?FeTc>6he73Mra%6FC636Odca2VJw-v5k4P#Fn z!E1GO!e|cq3XikM;~Q)|Hp9NJ7_#~C39o4#rkBQI$l74j8)7k54TNshkp{~#_Zm7I zN`jRXLEcLAD_BYHD+rdXq#(GJOYTnHV&#&163n_vy1JsL(656(f-oz?7!i9LH*8Uz z&AEbFpC~)WCmkrS>8G5g^S?apeo=*^TTI~!^4*g906pVX`JDC)M{63t1N2q67A81C zbc-9Tw%R1~1#^!24>{;F^XLI;ezV6O2m>b=9JKnoC*z8zwwJ&)2i(yJs8IDk%@JTJ zk-YwTp{zu%Bnc5!r;E#gsIrYks!m-=8gV{uL^q|?6z5t1orliNmdQW6>WSo^ozwQd zI3@f0MJh=W&Zs64CFx##P9(DVzn^OD1|j2!oMe|i!W^B%VohsMNW1x3&jUt?_rH0+ zQ<$uS??6vGy9n-D41%gCjQ8p?77dozMx&GVg0Gk%mn)C{Q|0!{+U@Sa*_jL2cv2pR zmOgU4o&)ukP>23^Tjm_2rJr_@20er7Co;M6HDp%uVwjhIR|5wYr$2{w(QC`g)XpRH z;d|t!Q-}2Gf)lznC*x}rK<*cK+q*1(uW=Bg7ET<7NYiX=zx;JnL@cIH-fgFd-6aS_ znti<@?}IC!OLfxfEeLGCvJIYm>g{B^*O|T0R*5q<9{MIqs$mw=B^-oW6%J#XNGAjf zp|;GP_@ZhT&*@*B#E4!gFL zWT5x6!%x%7v0ihJDcX$0-<=2nVY(6`Bg)a&QS*{*g5oXPBmn5$0P5wp^!uUMmefl* zAPYu_l5VP~0~r93V@Ya<=_@0vYp*BE%8&~=a^!6(MB^^0Ly*gKlM!q4|GQz>ktSAW zOQhMA0g+cZMm>hzR~V2>a}g=6{=k3~`%ff0q1!}pQD-V6)rlV(kh(q;(*3aQjSfKd z1onPrTPWyMDnoA^klLI!EKZq~G{b^fe3fFKcnhhN(%CV4g7p`(pqxT6tI{(Qgpp<- zb;Db)b_-6}mb*j4=5yV0*I<6R>n;k=!~`^Oz^``Y@D~=qHiR$F%k93U^I*O9>~t8Q z;fY9UWc978nL_lZ!*sVz1swJ%x_2X!VLTo}ke6|S?uj{DrS8i^KU4!uzrVPr~8j#t6H`mb9iFw&8A&us{XjwVt2P|WcNP`^_&*smQ_r62+@$&e@D5k!*IIC+T zPea)~!_F!tCMwQ$Si;hkk+F$)lR-^Oz+I5GUxkOnMn03e^Tk;|Z`f}EVUvtHd-9t7 zGI_@ACFcT=oMJFVw+H8Fa;RuNGnHR=q7N9o7lcMv*e`Gen$7Y`O3*Fc>b9w>^2}7J zmyw(9Ib2wvP#+EIMPh#@q2L4iEKm%QE>PHh^S#t>Mg~ zU7)ai_V2gGlXo+^Kv85F8+YGFNrRh*jo-ipic`}z3lwmbk&~fya&!Y1D5gVQFp$V9 ziS_9Vjw!lo!($5+Vpw^9Wp7;H0!2(cznloFBCXBeqN-#8fdNl`^|CmOcP`}=g8e32 z?lCos5zemCuV4h0>Q=kJ>V)1zcAt-p>-@iiV~(VP0VxJiEPkyJH=~T%?<83fN;Q+H zfk9cST{nLmG34)niR}76bqDST3%xOK+p?1 zbKA@3`kEgzCJnP`hQK4n9s73+`%`H%ia7S?D(cqVl&Di6QXef*-@>|tx|$a$Z~P6F zea*Vnd2qWc>H6xnY=o5eK+?9D0@gJ&1v5;4`$#)ZHrT)App7H!Fjj!U!YJ%UHes(M zv9yMor9o|NV_SreX8mq4XE1e9jbYP<)^8NkY+=zVEGw&{A5E5Hz>85)T%&F?1cGv8 z3{W@MDnp+IsS0wyi^kO`NyhGo;e3#eQmy~SaD#+h68_io^++>3TK`-2uRVQd64W>d4Text^%xo0B6@x&`iV!)Y zklj5dYz$2PlGW>&+_q1r=dsFOJ29?(>J7w<(*mK3h;!)EuM>B8E%{Ujdqx>iWuKua z>)Pw7J_!6sz!*F6x z?1I!9!_=_Mk?@mbS;KC)Nt%jm4u$m?;%XU^LNDzytHX3HM=q}0P3>1AA z<;y5j^MJ~>b#^utw5ybd4pF-res80>iXc7O9i}}F->roy zn;FGBkhFVU(RK`aqQ^>`f0T6P4oa*#D{TIm5$LiaZ8~@l?68YoGol?mdVT06?hZXf zM9t$w_>l;_ZMa&vu_yJ4#TKwMw-aQ6w^QAgfwvf-iq*I;FW%GTb;S)C--STXZGM@^ z7N6h#K|7YWMSPxi8saun43<=!^;bHvWbRE*BE*&m$6+Y9RzzULiJXjkjHH%;#_(SrPJp3Tk|}%Eyqy8elYAa5$P(C_d!J; zSk0*4Xdnp< zzK!b(wB=I55Oii-5yNjN-#I=42Gc$AkM^M10mwXY+ z&*6TwhIwYjS-oUL`Ke zdbv{8%c*JTl%N#^d%Sl)uIOZjBdBzDNNCmz;i& zRp>h%KsxGO4iLg9NcmLxa%Y_D41 zn@2N#Ir{B`wYWLsm+J$zxCM2f5qI}H2BYzkj9(5d57y$=j9;z}*y5!bzifWzU^H&a z_~nMRz%3n!%k{GBc=tE_RZ8tK(Ar~{UjriHP;mz?4X&4E#J@>8arlHgfU&5YzPB~2 z!;l|rewT_6Ka>k%r}ym-*J{T(?e6)h_Bz5 z#PKo=WIJ&&9^HYWT7I3PtnHl&H)h<`zR=c3!vFX!abV{nvWPLPXK~0M|F7tXrujYO zFnAZ2riN*I-P ztm)OpkJevL8N%IKJ(q$?7@&!4zNAL$NtpE=plKHhNSMzQbhl{oTke?kxe}8Fwad`a*zUdg1z_79p5T?3$H$ zp^RICa3*(~DmY9R#7l3|q>+)I!WZXCB2(0{H|0cLb|Q-oo^XK3<;rE#dQG(gMU}L& zTA>xpx_PZYomL+fu|shMtzg!rR%$Z8KWA#fTTychIm4iK8b3)bNeuEK_biIUAb;cl z!sCB+0Et2V*a7y6Mc`!3 z^!mUiWG9?47(+F&jvOkc@pe^ET`QJ%U9rQt$f$wn?zAN~6&`{RKJJ=(K_>ruUi2zh zi{n2IB9aYh3(`>Bqd&t=2-kV&%SZ4Nwh@A+0j=BdLzGta{8c`=G27{!TkPta8A_A1 z#(tJG<$(oYPv`nE+Csc#>b12oeOdH{M9<1xr9jNhpSx}f{&r2pPOPi%CH8oY)w7Qz zb>W!>Jk17^!Lt;m!_$*;I}xB)9aKCpU`vmtOEZJ?04=*`d=!M&E2si)72pwh195W} zjn^Jce84Ffe2GYp{!^lWY$zX(2vyaeDMjt$n4Ww|Ts@%2;j^L;5 zI!?K!rt01@;*T9H>gSc8s(I#C=gE3w7*xp33zz_GjS55 z{x+OYs^v`wa=L@NG+`YWOKgJW4owOVBi2wLFO-eq< zHylpSh+%0%iS87W9SF{dV(bsD5!JDfUYu@Cw&i-RgqR4&{_q+R;- ziNxz=Tyj~!^9pHGYcP^tmWB+Yi z-S91Rk4kW`ZSzn1;gDz7Wf&64|E2C-;3T`Mdf}5$B_o0qpCIFtveY;ewW$e77(e{3 zotY%eNRlaMCSf2VRnuKPU8K9KQdK>VJSMGzj3Cl@5u-*dU)OkjwNC;*D3C`k7o_AW z=8AetuU?~wmI5K5z+HRo^Tc98zaKxQcb)TJkG=NVYpuP{-tYiLmE4Dw z(lY>y9}WTQ@P?oAQEsLKq?hRfFFGSG0z~oeGog}RF8N7^bwoGZxlX4I0xtSU2==^n zKj;T1_qanc%G^J9qH$L}0^T5r`%)BpDIDU$o%en9=?2w6Nz3lM1*Z+c=7S<5p!WVD z!L_2N=+z`fb92kJ&hngzyXb#6ULOHr^p8L?!4nqL^2=8EwybuL@UlpOmgsT|Tffr- z1z78!Q$g>vph`qRlNzOMgp`2V`+0!XQ%o5$-j2V(OrbFRr78f1L7*A-z$B+nC1qEx zL8JIlC?d)9ZqTv|h@epk(o&lUa_x?j1jT0E|f?a0@Ab^x=r1Gw1oqu>mKc+;;p z!pI2U7ziTv2-t;>g*tCrG}tnf2*Bremxy+0e{NLhQhc z6hAo5^S7y4C?z__V;r_W7)>i1kUICj|Q1RmLz)d$|eK{y!ivn&& zOY~%`xzbp;aI$uKrGCR&mo7d6cu$EKBmA+4w%MIy_`ogxi?12Q7tQG3LCu`LU?P#5 z>T74Z%lqf(|05s{6j{`>j!;J@9;Cc*CULM6=jeW3plp0v_{{Oi?MGa?%pp>>v>&QT zQsblCy{L-c9}lVGv~Q|+=-L3GS@{ffG$S_Rqw#O&z5Xy~LDxE+#?pldgesp+5PTg} zXTK)hqd~R{KifZNE6s?&Twv$j`4R!S7}X;4AMHXRv-)x=G|V2~`PjgmzbqA7OiF15 zP0GKdW`FuEH6RgP4pP!HijF%bV#h2Uu+g*|g?4o7)jN(FDmf7-^pli+2ll4c>|hgv zn+siZ5!$QWlxt z*cO$9@aBUo^74RaJ<(_NZJ)5E-`FFtjDim*6br>hJiT$6dzf)rp`JL z6&HA|FHFT1j+IUd$F}cGt<@}i?4Mg|w5k3EyvkF7D`xP1m{+IUu665Y_zr|UrN4F; z`5mzSE}4-z3RJc3HaL6)`bJ?!Dzsj8W{?(x7RdfH zQ=x@#C6&UrwI&af&J(7Ho7XddI#P78DFvjf4{cc{xn02RMn}{ZBY|$Wr#%6`xEE3+ z>8NYOrl(ZY>q+SmK&nA75}7v$a%B<~#Jn+g6V6fVUbp@s8r$dZet3>~#_fqqWyMHK zJ2oP4(VLMQb3r=IhXH23sV}x8+grw&p`&rM2nO1NBoE$6N`WGn!f+7`0EI6}^pgVZ zpfIJRY!M7JDxXtYwg?6q8$nuXf5{@4a_x#>K-tPhOS)V|^KMoF%y0*Aeh~~fg)a?t z;?xByWj9#_1NQvx(ufzq0N&bNB3=;;$h{zinTlY(y8I#-;0L=*hKpbTEqqz1ySGsU zBj-k6datjTPjD^lP~pvd{5Oa>W}T0X+Z1FVR=xs^$B<=eQ%V!3HVcXClz=!;WSMR} zF!6`U;qLgODn@gmw!*O@fGS@JR)c`a5$^-Cj|E2ISs|>XkLB%c-o*!IZv)L6ZVR

      F^u)vlI{+28l@#(rv1>*5kTC?j!?3^{W$Xf5&fWY{G*mX@?$?8$m!BW~0Sz&_m}AT;!c2W5y3Pjh&AfBc*FpAXNO?5J4F|`}70oF^&2|2RMTu z9uJ*;{y`FakrRm!_f{Ui$$h=-!x?y7`YcFSqUG&g5@pRL;(;I>C~V+(e;C9`x(ngXn;|r*i5raB;b8f-N(PDI z{)FJl@-C2)WoRK$36jz|D8#dKCIH#U28%lrrvPty1j^R-(fsiZm|+lZ>ZuXEl^orG zE?gPvx9yOKk8NPj??tB|Tb?o1 zL-i!UD|~&Td%f?|1D?d;urC2ZC5W_x0q$s7ZvrBlpIc(qpMXd|NG#}29N*5P0A`d8 zm-HwO&hsh2DSks{7l!eCuL7V-5OC@t?-)+{6@YK-GLg7v0s7W1Q}KKYpoc*cGx?U7 z#(eJr{K7Yex_O&)?D+o01MBCQewc8 z*DIlvygtFRQ9n+uh=4kZq3dBAv$7q-24=tPbFSFJx&EEaITeVlvVk}_;3I$MTerDF zpt!&rJSP=bI958@9McXL+BRdqbq8qmY9G9U-7K@J+J^>Y<(gDz;af>f=3CYa317D= z0e2X~zihY-eW#!UwftP4dqo%S_3z2tn*hM7=DG-g{TT4OAKnJrJ}lrW2Yr4OR`}Jw zr{?#%>#mD{IgDZ7g7u5-83_SjN0+c$ZnwV4=US14YyCT$>vrtx)d;xJ^L+eY-!A6~ zbf9j0b1J%Uuhdeww~=9+z89gh@(*Ai0`Q{$54ci_d=`v5P~ZWOoH~N{HQv#p#w9s#BBpTL#z`LBQ1jttiT12FoQRA5n~5=v2HVluHjA31u_}X@&-5@5WSU;af>f&G+#Lh~?+| z$c=aI%r=fkz$+d}#TAZ~&eR;AihwwZA-{Wv9G{ASH#+KbthmCl{yictj!fAA18|fM49ftaX?Z?z{I&>?{ff`?{+)$y1{i?F(fGj4x43ln|rT9JmY9sya zEydK+7wa76c_C6Z%RFA5)`cpL8|cLgbH_)q!Dq>mb`^bFG=oFiiEy4MZ&m3 zMZ%;`nVc05bjr6U#M@1JR-@M0-XfbDL2#5L{9Q0jt$-)Jw_!i#xq-3u?Fk_!VR=5# z44;=CHVx*0Omc@WtIBk!HIqw+c&15Twdq9Cxj;vI+`LYE znx9uZec={5F0!~VvX|Wc68jJH+jZ2v>A%&_w;Jtwu}fUdnJ*Y<0<3kHbv9fz zKls0P=(Bh;H(q;n@m}6?bw>mVs!2)SB>Ijn|BuG^t!pcEPe}xhH^Q8IqvrN+;?F0% zZ@}y~e|Wo4LrU57PzAMqI#rQYxtJ{N?bn!bU_-uafkCpe;0ydS+Yxv+!XQ{(OeHKbD0$SjYVs!p|I|5Fi0`z{}mqw|GH2U{sX>LDo!0*DOM4(Yw@@eJ%ay!FsG9^&h zJd;XEq*BURQcV&HB#O&Esk!Y5HHi=iR2!*;L?$JiB9obgo?YuUR~rj7Inn8y>lD4- z)TG1b+`WUnonZ=mV;sOQk(uR>`EigEtpuiQ!#E4_nf zqgCND>m5pBBRpJ~_N8m-)L418oc<0)4OR&JJ|BEeIL8Ck;DZE6gzySr^8IKyV@J!h~yU@PS>NcNUUs&wa$T3vfjkEN*;|uDPtXI}g z)42%|93iIYqea$0T4MkB)R3N7!+bm^})BP>@6vyGJ)*V zH=@g9TrAbwtF`XYHTu}DQ;)#G7G0slU&`m!Zf>ltcesvGQH=Z@L{bI4#R$H~{it&m zo=A{nvjK(PJ)m?4F=2X_4z$FJIX*}D5wD?co}jZW^@&?d16?Md4Xb=W9i4Ug1MifM zZ14_uI_mP5#Ex=&WF4J!2`%MLb9zEZy^Ez+{i*Ha+#Pj3+Mdpigm!aeKW#d3-_X3| z9ksjAX|>n*EMqdDH@rfum2Kp*2h>1#6p*S4B^__vd(`BaJ%77WR(a?EYx@15``efm zk&o?mkM-znbUY^=k^#lee>W6-fw#%ue^Ie==edPsR_&cP*mOj(Hk>mJTVBKZRi=dw z;?zgh?e=@Gg?s5?uYr4M;5E?THZXL0=f}_~wwvfoz<4)3?z$=8T0c#O_njY=K?v=6 zHwfjkYVb-2F>vXwtOtuGY;)h0cTvHfD`imJ78IDji-^DVr(}39(l_U9_b?87 z16sTSXrA!D|A=)IpZW>(;mf6)V!H@p&s#4}4n4xdtyjoPd_0NMi)9Rl&Ea^JLJ2LP zLC4PpC;++oJ*gBVOjU|HX$QJAy7g6Q{&u1zxNw>h7C?HCWMLL% z8Ir!P%->E`2^M0CINCY3c6gmW7>~d}<$Hs=FtFZi#Wvwtm3&d|pG6ciWhc9%3Tpi% zRVRL2pVksROVMi@rWruARA=H9P%FPGB&%+9LQs=XqLW1+0kxTgR6+D(ngC?1Urx{m zqP6y+TBmMK^NoO7eszdpj-fnv&I8z)VNz{DaT0_ zpqwH#OALY=-xrcN+s!d+UVy-?O+8Lr7h9b$TVQAYH3_yY=)W5kpT4I`yqUcgiLKpa*C-B;%cAF@?BwRzon_GdJH}%7!`r9WxwQ=qFim>ac?Z5rlP` zv&?Wx*CPvZxI~#{BKsiyqYyp5l}+l`QNW2Xeh6S(P?(j#E%z0xSB@AyEW# zpB4kg-MymH_MZ4G2iRT`URmDZET^QCltFR+^&!ESviI%xHo{M(4#9aw0m zY@fHoiB1_4wJ=}cr=R3&21mzy9Zbx0-o$2SI;ucn#HqEksScw6Vp)|=afo!E&0;<$~7*Vp4BLbSmHzKBHDl>}KrYFSnR$62KgwY>iIC8?+^ zG+N8`HlHa*?|Ly&bB8RSpo6a(%{7x-gX!UqgLy7O^}M@tq{HYs9qk>_5S4#i)2iYA zi1yBo1T?iMLYux%7888}aW;M$VsTZBYBE|}w8b{B!Dy8%jP6rW3u~;kY$KIr(6}SP z=-Qa_G|JVo5DA$^6FRr(n$Ep0=Ts?H5ODFF^ z_WAz;9q^&IryQoaLnSU2+nJW|OgB?YN=e6z15?=4aSkHU&x2Uk9Q$j6WKYGcbH5Wz zO-r7mkqu#Ut#*Bhu3%5}h8^!Sb_J?tdrK>*Wtk>>!E4d=suUho9Y%JdPh9{LkNG)U zc2w~p_WZ9T#iwGeipBb%TCFy)KIpbDZSeF#64 zBFi#IRP#CG17-7_cfhLGx~!iio%u}5Lu_?C2B1;g ziR65mB(M$=#mXDbt`5~TI8zyhRBy+q?6eFVP;)!`duSf=nxIuXbg@}byMUU>lC+sG zGk$c;*!-LM>`hzuy9I>&s<8)ODfLyX{_Is5@|_wLQAkzZAmzTLrh~fN!6k0PYNUgJ znyz8j5g58;#cQNv(`_dV323+XR%m&Rxgk_q^-z`CRh0WQ?2+(;rbV@tvG8MjPKN}U z?ns39rUj0O$R8;=8GMfhpf$z|FF_ms83#4mi2&7l2Rw`{H!CFTg@oDT7HdByA-||;;n~Uo! z>vnD4Yo@8daN)HqG}q3w*XwHwcJ0yoMWS_DG*-Qe->1MM*+el$vWaF9ZSp##=lOiE zc`Ln{q7Usp@lpeaJJwe^2tYaJ6jskH9XNH2KK>QmZTt`DkZ%hm&5&ilo#d`qXs(-^ z^^AGUmu`8TtZpwh&X|dqZASaj1W;ZC?0hp8)AOCW4HR9-6Jw1!z-&W_z|sh;<<0g9 zB*+|Y@qpBbi$ngjA{E|=ky&lhHYC}yAQa~R2uk2EnZ^s=%<;b6bNB^1XP}l#9Iy$rx!@a zL=Ch(@bGe-cArBH(ceHF;sH}{YXnX?QM%;i zMdqel+Gu=ZvwalF@uvT?iEgfXezVEDVea>SvDFN(p|NIja5BROW6hFtlRH*l!bk0! zWcp~wB-h4tAM$?Y@{{kC#rHn!Ia=|4w5dmR&OU{pC^Lj7LMlggs!b~_lc7mg7;iO= zI`Ou*^sb?BD+`$!+#YJ2FL(m2Q86>=%m> zmiVry<3CBrju40v0lNGom4j89HcV7HF;D+)gt)sncKT&>JN?l`+SO?8l_r0|m%D<< zmJ(|=NNc};vq;kHQW4%7m$r%K{C#y9v}`9uAX0fUl*gMuX;kQ>!x0h<00hwaI6I&ic=S^x1>y`y64x|>NJ@dZkS!LS^Sc8c75)cUGi4D z&sBxIOV?aMC?*VUhF==&RaJm;BMR_C*A&}1dfhcb1mNW_-*qClp1kp(PyzbzE1+N* zUEazal3g-SugE+$Shg$j$=Vr;*rj|1KBBMj`JrhjJ7gbYD0^f*CMj56MwX4*bOf3% zqo&v@XiA@*sNczTh+|6;*zWBI`zAZ2bbRq7eG6{D-hWYdBIg{{fmfqmTVItg7ucd7 z@qXfjl7=Wa%+bfi7|Xf#z02sPThRLWPW(L_k(1Dm)fPTi|k1csK;%3P3vn7Q*@xa z)vbc>Z#xCYpnL5SqC{GOA}1y;ov1$Oy~7>2`?v3@OwkI<@aT&SE^; zcAd%%mpX}t2fcY04Qrb4oj`Ok^Z!=2kjW=zLH}$=yvtlg6b2{8|l*${h$Gs+VqJU}JJg-+K z{-p z7{YCxi(^u_7{dcjA9y)77819roys5Dsy>{Edp!}kSVR+Ei0-Xxbg5xynT!sUdJB-i zBs{8GW0$OK3~q{NZS~o!mC#5veMXg%&|IPP%vxo|_6jHt>X5`+@GVG!Ij7plu=;6~dr+>_GE!`#enu)TMX{2}wcCB{{L5sdwr4 zXqhlgyaNSnw4n$U$;Iip&iWE!h|ml#dbO(c|`OWMlFHS|^(k@P=ohbBXA^Qdf+UY^B>%`peIk zSdSM-yln`^T1dih2}XQ^`R+p!Ur>+Eg9}c!TRH;rcI8RcD2p-(qL9`W)IgIO5SkR) z(U;U9(^qng7beHt?9t(uO^!0aYp<3h1yl+b&~>I+rL}o&3+PwNYSO2f`W2DE*ZjT8pD~F{1w;C51+Vb_2_XkE zEs)C_4J+788jj_c0Ic4Ju1nY-(jA~H8vzn>#RwvrsY#4iw1h(C zyU;1gidI6nrrmkDN8>-x&K%mw5(r3EUJlYMl`Hoq?T-`BJvsw{@ZQYvtpyQ~8ouIl zOwuclfL8B&0)4q%u}+?AUf(!lzV`?8;FSRqyeHbt1khaO$i1<--WD3bE`G174h8ye zFJ1EwvR;rdmYM0&`<=#Ool1?zYinof5vXl|YTnG~S`pMzKc?(}heYWTFvV8~6eUAf z2~0a}C5w(A(E7ezCS*#Q6s@c_*CJrgZ=y#!bzc0g=nN_4A#)sqET*`9%P1X@3wHJE z+$w!hPc6$1VzI`%$ir@WW}Q(?*l5LEDnuy04(cK{yi7p*8PipupAR(`FGK(-|Fr6* zYwlvFg>O>=FmdeTcRBfNTzz+<;Zm|;Gud#z*I+_Ag6-X{0i4-3csQOYhyI`ACivl!v?qh8x`D5_HaUAN8KliGIUdB-ch-;DM?hcNMw=bR+GuOTSQ~9M)3!xF^C#R(7u|1dHVw+nP|6tVyxr-z znos3^edA$4#(DLskz<(b5OLPHxPbs+oT~rq{4M8#-no1&2irx{T zsN%qIaDs~2AvqVX#gT7v3s``xDzy37yp2wt<&gFXRDeEAry`%UE7g=w+PhSrnVU7`!W$kjSKjC(A@$-p!*RQ+F+zj!A(5(^0QRzh!+s+P z{QP$FTm-~^5P40$X>v{~o9A2TQ>X}#qe;+QQFPGQOXQ}cY+`&e6o?f68@f2D`qmDP zh|lVNzQ>XBwFu-ZK{giT(Dps0*L=wBSrZ+HGsba~1I-i~R~l<| zVaF-lWUs2nasdLImpX29fWz#>!8^*V>U2>g-VE( z?C~Z-0ihK_a?TE%XJemi)7M|-TNI#f2GO_Umu_8ao7)IXbywSu0zsOp%oeN|hi*=Ua48 z!?zT)2H}mMSw=MT0qYkIHiDecI+}Pnn13Fe#20S1;pLbUT1f)+tsocYlnb|Zv|GNG zOC57(Oc((M20=zh_TXF(Pn&HDmZTZPcCQ5J72X>f3e$L21Y@3Egr~lE7&T``LMHHY6M;hO_d^oE1MbyqS4Uqt%?}(5difOk?EOG{7~}z=-rlrOFFbVz2zDY+ z+I)XVYTwvBs$QJu^z0e?Ov2kBPgp1pLae|M?{y#e!u{<_3-Zddbby@?LdDs#7D*;7IE-;>jNSV zZ@Z-0bVcj0C}XL^Q11pQGDx{NPl)tEYz%s4U*rXOKrQ}ZLX;zFZ4mC1Yf0ZtE&1fQ z$e}%Q@a3WLIw@UZw1*vJm@}((HUu9+Ke>y;Ab`{7zFA0 zKMrXE!QftRBasAyJM+mlEaONJ)O$fLNcq7a0AWFf`>^y}7zkpOM?#`cR zW3zo7Z5E^o3|Ndl1Xk}d!>i>OI8SA2<%XBRJ>r@u;)!u$i5{piT@#;tYi*%2L= z0EKqp&y)xHwz_ktQAN+GB6kyfdY^rSfd!uy#3`-*HQ}dyNsPtZK^SzqYuj-2whbk3x>~c7cgh z|3mlaI#KQ}wqRQD1@pPPuDXluoR;ie+kv}y^WB49+Xa4e%WJWtfmZhQJ?`ng*I@5Y zpv~&~h`m37R{yny?%N_^f9b%}3yJWPGFlZj2KkTPSvNd0=PY4Og&z1V)P;od(x_+tB@X`;>N0LturIWQO< z-uqkW`0dCk9>Eh-&aZWnX7aPh=ku#Uf}hq125C)?_H#qToHePw*J4eIwsz|?XKJf- zLlNnQJ`>YMnseydE^4H`-r9J&Zrf-%U)yRct>qfq7ws~Lx0=^!l^=~MYBSyDxy|I+ z`AMfVrZVb!u2b!3klXWi`FK~TGWsY~YG!LA$D1x{BAh$j=+b6!(@Ltwte-n{S3+Im z@*YY~QiqZfC(o?abNp3_BC#{}OtVRzCoHmUK*n)CnG3hpPFm(s>P(ed5~FgQ3%l=) zZ;XmSYvVE1D{W|{1q)*UN1P6CF@IOaEe03s*rP$|8SkDXob%#U2eMAvH{}D@`;%i15tjWefIWhw*1CS6y>$gx|}T%X4JMWs2jV@|4#M zD|mb`{cDCRJl=Z3wA5JmtFEGJ^W>G{6DJ5n&*Aqzp34-dMerQ@Bj(4e1BE~|w%?EW z$yn*Lv~bYxa9z9)$kvlYiX88n>s>5;`%lQmFFPC2{N!59z@%ZN4c%4VfJmcf@88PC zqcILoH_mW|KrE`Gq_!6stdZAd+!i%G?tg)n9QRHV6TO1>;TJ*%JIT_fJmt_vcaQrm z9A4e;Nns~qnlJP%oBPo8>RR}%$GsM-9`X|U4Be7I0?_B`u7!Q`DQ(CbWiV1w8{Fut z!#oLv#Pr6E8<#m{@)>BCyaw*cP1i6!betX~j)DrKr>QEfFrL6RD2^$`GUz=+xd5r) zbEXs)l`KRR!lHW0m?WwfOF+!(7yXA8x5Kv$$f&?fVsF~;y4RjbfB$s-od`IffZ{Xa zitr8H_PgJwc6h`LokI@K(8t_>lZ8w_E{oTHRu<2g(>qj-Bm>vgF9!Ft55BQ#zl-+R z<3j+S4-X{~)1K0IeaLQ+jJ~oV)9QYo`(qMt9DYf*$Z% zy~2-9*LO+bhiW+5#zh?}#%O~r>QHILwXj-yUW+a2^!*mAdatFO>_IN-_#Mcmg`6A8~?)?#$bpTJ|~zW{Y`6*ISjz$L$o`;U+PZ4OKsG_wRvf&xNRzrN%p&H_AkEHp3eOxK1vPL;;d zV#6F+PBR$Pu<^}P4y8ODi%d7x^4H@9wf=NsUMK|o(YHYDD64!ZURE)h`_qdG>{VJw zpE&w1cNbS${P5ud$7p`|aGt|Be|{z}amqJb`ujx*)1{^tCyckTcFMGP*4tR)*F5uW ztnpi({YoH0FP1e9N!QZJrmQ$XH@!p9k*Vw3YCpMYwNF(0H$C$tzF7fV@itZg74`I8 zNu{VJr>T@##=sDwz$h`46UvZkRICQU^*2`;8kdreZMfKO%Hf)oU}=!K~X zxj;IJlTAYaz|j#UKw=U6^`)OiSje9)s=75u48z-s0F^F)T7H3`r?GO)wXxJ5&(7l= zt?s-}@^3B|aGy`g>;cOG3f<}rysZ~OQl3S~i)!q^4Su*mU(?;h=lhZ^|C1acn!AFJ zy)%QJtoa?Hq#Q3jQQQ4~70o`ZKJD*p-6nShsn>M2*JM5A@j4&AZV#8fZ$gKeiiOdtgKb48NzG5)u;AkJSkRJC412JQrY{ z&$WKr6=WxMn&p?f3_MnsJYN4Ty2r`nY?pe0G~tTKR;J0T9Htj4P5KaP|D66)=Tk^k zxdYPOMgHr=oyGtu8NndRnO4(A!GpH(N;kD_x$?aAO2ndf21SboBW&C9@0lgfrOqbP z`ve{pOpeZjS$3f0-{KyXCi8d$Rm$QG>GpxHm(K!KDtv<@cq)8Z`9*G`L$ zpSH?Tg|)aebHr(|b%2*-J;Zi zu(pT1wl1rax)!>~b=gf)&uNSCXjb&N`HqV*rZ)9W5NB`+V%;TY?$dZszRl%LrhCb6 zyEc2|Jo#;H(kt}HGBhw}CG@BTb&)>y9dUAHgQsoT>V-G@c#}sEqQLwt9}-U@1Ngyj2!nAlciMrf zWOd(^JG3Q(iugtW6Vk=*gH z?QK{Zq1Zdb!BHj58ArapeiET@-WFwCJe#*g87~gm=57p+SAWA5c-`0m&$hDU@oa_g zc(y{g;3@yP++O5KDvM$eZfgfZZgX#u$4p{p5ttcxExPzZS&`D4t7#8N1bX}vi_?mtNO6BEJC#TsOQ`T4hmgz)El zP0VJ_Xi|9KcmQa_$4rL*LrqXlOqrb^S$_u-ZfkaOoFt|u za5De9L7o5mO--`3YX4lypaa9LB;$WGZGgHFpclk+*{ zz)S<6*?Ze0+DS_^RbXy&B{$v($Au{`{x{EYo0kIceCuTZ9L%~>WO_kDc@|d*c6)E% zDcj7B$1=0y*v(+a#$y}{ftA7U?Ube6iH2h1(ekNrBX}IXBgCuYVP}9{l>4dShL zCYaD6#!IUHzDizq_4icTwdu%hAH;H2YzNvgTFEg*w&^z1`9TMGE59qqqpco#EZ7~B zF)sNTf0rXA#>7yJNpA62G^w$1IgV*6np|s|yp4g>#NXcZVoz~d`9aq-Zp1n%%_TfF z1RaD0HZ086DJCCHh--=$)a1)6_uP8|r}2HwwKp}o-Icms1_ql$u$%tMp~jh$P5WMi zM~m;4E=_;s=H^+mc_YGO(ZdrTzomYLAID?W$&a77vmN1)@_QyClXIc7nCv4P@16Ll zS$)5m_KZY$uJyi&&!4ET(2Y|Oo~r!*6i*u;65+|p`zO9}tZkMnBRnf$wXrY1diAi|G>)Q9$6X|D?3KX<%t zPJX~sg?|vp{35NZ{oKdxbyYeP4E`f`ns4qUMtd%@A-kB#uoNZ<8Ik>`?c zo3Y9fz&flQ?K&t;NU^!lhp#>K3V;j5$mYAxjv`$N0-sHH( z`v>CZ1eizsLjuIUjCMU`(bsL@qWm#%V@~rl9+DPOe)Pk3S96Y6>}j>+nUBf+Y>Q>D z^K@&c)_L?xGPDF#ykKtFK0$1NeE$<*W5pidOhg}%qvdmQ_dM}Nt2D}+>~^Acmfu>G zt4Gqi8*jvTVOzc`0^RE4pwHo1OZOp-y%gcmK3<7Ea@rVAgx`9XEhfHLqT7#Xh+`<> z_vrG#bFS0uXu^X%yuc>%ev&G@nh#s-+fFrO^p z^#Z+a{<~~O7$*piEWpeIE+)r>ktJL?I5%2>RoOA79k9UJdLl%gZosNycQ9bb#598i zj0~OxhA?KgF1lS;JZ5Qi^asQ!@;qjhDeQT}2qj%}V&%TCOj?oCwGLZwut3Tgyuz80B!*|ZP8Ww zM?4cAEfjwz1k8#|Q3aI{uw@Vo-YFWmbW;P6}w{gTl3UvPrAHI!8M@Z!(8v z;P=A+3r)Yw5cIw(<&Q``MVmvt%p+cH9rw5S8)o(BT0^Z}Uu~YPzi_!hyEa>N?s5cj zBaqD}$!LGVmJ#+sluGD~f{qmJ#&+H{&?+-tAC-qJQ(TUKd#jH?-T$b_5Odj=)ZnDg~U^b7D57f(D&QZ{#7{72N7Az$fO3ag}A!Ui;=n zbDcKd;F8*pBFZ?SlTA6}34{j6pgyzdnuega`8mOY5cF8knIPq)G-ZKMNJ6^s&Q6jb zSh)>^DJ-=ehp;wZC&>@(k!v-_CPl;L115x<}Vq>s=m}b9QioM)Ac;i-g$1 zEUrRK>YN*7IPIUa!#)DoMit$&D2Cy#Zpw8M7k}m0zb}^{Lq1_SQy6ca6?4#s;OUvZ z=s~SG^^}J3u681cJBKLqbl4_GqPxPL_5A5~iK^Kpd6B^fPKpajB_B~2nPif`OmO#v zAPP(KyVF^%)ec)N_}BnHN#fhETK4GxEZ0TQaqIR6lJ9ZxO0#NC0|^ZpE`^7$YGunYz7{m@J7*M}{R` z18#@`k=DyVOtkmG3GSg?UozD;as~Ak-y3YtvjRqRpJ3Ut16@~z@ov9J_3u^UouB@V zO58yAR_QA=ecBHK=pv=leJu% zU-a%qvRk{84O__u`ncBN8Vm~h;tdq?#Tz!gTb7v0gI)vg7w&rv{KP}|mAZc~M_8Oa zK=ua2{8?G1at)0R#krh_mrGB;ON;eZmrc|2n^Ly+{AP4HI`(?%Slg%Q%fWY|Pl=>a zvM&~^^M2Ptd)mDVmt>2VcL9^EqrqQ0x~sK2>NnTB%gseLs|ZxLUJmLU1QC5I&a`0+ zoofG`P0$$@`%_Ahcpg=t(E)BqVcq6yD#+z=4VR0t!dw!^8;h4_^uUlwj(V zcWN+o#yE#?Zz;&vt(cwkfE)puZ>gLKh;PHQXh4ZB`CTv*nz7;t?-w(0V9+VzwakY% z<~nj<%x7SYyNP{QN+;Oy5CNf*fdqMdt}u-3pt8;<0#NH!=+~tc<2ERN&OO8C$2p#B z$TPp@AH~0{^0}Au>R7nLFzD!_U>?`#_x!5$AM5gVm?b(fPPhU$o8T%=LF0JP2xD5n zLl<~>06nwU!t5{ z?~jQ>AJRY+I{BJsE2?Ya4)+|N$VZD4%D!<=u$5UlPOLJfU9d8It*{gqZkLn^&kZW& z%~Wb?A`=`W+XUX<*gnqT<=Wcyjdlcx;_D`}^s^}=K@@tlb6c(5s4X@Y=pt5&($7Gf zV0bsI)K??CKmUWm6%2!72sI3`6$%!TO*HOfO*9;ijJ2H7mUy3QF95VB(MNQSx4%jRlX^Lr)N4I7RjLMIt zs$T7XG8U;70HYlNnLSfL*nH!*Su!wqee~lA_3uJIi^D{$3lgIqI5vyW@RE~bU5>EK z9h0%B21wPPOfX-G8|kMp9+E~nA!bQXbdx)XwLp~ZN=Zz#g#>79UIkwDXCMqmE&e%F z+^{h|_ft54QI0 z;$790M7Q{xyYadIBvpx|rSJ-Y^P>~_!DIw>=6?xn@iH2HEDJw@Ihr^H8@VN38S@xT zFqSffF>^(A@)^vTS&SzX@HKi1_+tax^lDXSrTRj_FO{%1KPuW}79YO51a;*)l+~ID zdEm9JN!ufLYX*@s3x9{3>$DAy9vQ7U4184{6gaEeWo# zuvs}vk<=kD;f~p|q%i1`*6*NeX#c`>Yfa{fPT)o~XzP!(Pv$79`(6 z890We9jC)&gIAKso#m{Z4D$US6EAC9Xu8mf43~g6?kk}Plj8<5SxoS`E~8K}Sy5~Y zWr426Fh^4kUdo^J%LBJro6#;!S&o6tEH>y6hwjP+XEJn!qSZ<7eb9|~Y|1&4PMmVi zSQB}UBV#QtlGrwz%eAxhql+|N8gyF5tuzU=S1!;Rx$$ff_-s7_e$Or$^^lS^c7T#~ zw(IgEq-1@B=QGkV9@#dpG-uX3hb~BQ9b9ew8MtG^q6LQxKo7xp6!Z-@Hq1iAO|=W=U>k7S`#W$Cj@_TjjXs)@mWcEN)>!o|$N(cu`58kWZCfDUhXxZvch(hz1dFvtXA#&TR zbl*C)_V0BID5tp}X@N_ZREQ7r5FNw@YtPw9fP!wF1jK$R?1n0GTnya2SXzBR7FU=} zGMPtz#BU&zM?>68Vl8Hm(#1bnAI1JnWAg&boo2{ zeJY~Gtu*aHmF3c%vYO=jZr_#ELATK`Zqi1TTB}7Hz9Mwq=)=;9dD7iw4?u79IT;5z z?(%a7N9&koT=8N8Uf=py!WRBz{H)7=9dG*dc++Rbn?CC`+5E`cC2p;ST-_@kgW+ z4;51UMjas~dzUkhFHi7#d%g?eOI!8H<-b}>&?t~tNNMAZ(GB;j`kx& zcy#`=cqP$2Vl}WM$ASepWc&_Z-pl|Q54i+{4=2Ujy{ImGNYYusKG7sA?e#U9C-C;x zWs^}Zz7yZvAk?wE9ImagV(|VT11BUC;hdn!4zG{44MSJS;N{`vsWRD3?0ZWec$Q>j zlDCz$C8?^zwUrfnFE=0uPuL}BiofWrWkK8cGC|EXI+h;I#jm`}<+g5?qaQBarH<3Y z3TEEk^qSU8@Ih_&-{nH1HIkj0dVZ5>cre+pewZJ@X=-tdUm&{=6v9fIVbz)qi%@b=P0wfh{0VMbBj_M~RJafa&j)Jh?= zj+vORp=~oXXL%RE+99^jJub^Tv=a#kZj9Nf=6HRf-k_{E!XW5B3qx%3t{nTiUF;$* zygO&rSg5(IQ!)jf^!Gvcx3vUf4L$5wGo$lno(UtcQ~qj<(fDBWHY*`QC6!S|gbgOS zxQ%)-0{@^kdf%9h-lv@9V51bAfm`Z+lIMumujBig7P@4jmpy=eQZ@!QukBG7Co~*; zD}t=$uYt@mhqrWorcF|5Q4^A}F;w1i4ZJPj#!$xIp<=}fl_~M`#@Eiu&9{7Ia;?wjGWwxU8NV=}+4r)98oMPRfgg|cOO(5&oF(5@=&m}=}!g}v&~k%AVr_fzSh z{0=g$ZvZ)VE>tZ+eL$y;>~>2jwgdIFtn8{x^aF)D3hYIHpEaYdzN@lXcoA zJlmhKr2Gfen?Y#;D(+Y(Ks6=H3_IwT;JuNFq*NSr{W zWk_euTAYKy>y>L$VLG)XPSqSoWb3l66@z}fyF^<48VkVvbOI`I^VR9G_0i5P4LUwR z-X1)6)@}*K+GelK3hg`x;tJ*-_~G)C&sy@flT!gQAnh-`saTql{FAESVJ zX{CA2toLvTB{-w&!Ms3(T)dn&g#Zd#-=`^QQdgjOBTtB+GrVCodYBGDub4^COkkig zx^XsYn7*c`c58#kflPE{HgY(cBAXl^=3>4`5(?F$2};WvCgyk*yQN<@1PleqNV3}~ z`#Ku|zVNL=CJrLDfQZ&C7*b!N3rVOcX9D3vCEkjPPpj7L`RNirgoqn9DPXnypV4;6(nyyMpLzOlzMB?pYWfDrLe+>#(BJukCw@rcx)gft( z>o}Jp@p|?6B$!YklDL7F13>wN0P!9fvZyJ&T#CA^I|JZoMqs$J6ky}G05>=}8^7>d zDX=E00^H`UsruyaI9)240&sAUD)AfP zRFrJQdTwE1_#&_}-82Z#ouVtaYCu+BoT@MJp@^JPfMlH;?++*9jIZ0+kV=Zx^6v0E zd@(6lpeHM@o0&nJd^k zR`jK~H%ta}{N1?sEx#mN;Y6Q>d`<-EdNp54oPTmB|(NrIgU5 z!AS?eT4&H@oS%>l>W&<4APdAspLl1eR#09~4kRAtfZtdKnT%nsu%Ur|>zb(w@PZdW zTa8r3DAahwMaEd~+)S&aH}m%i04Ux8pmWPqOLFV0dAjn4%(+)O&-_GiYSmYMp5zu(Hc?@)#qb{cwTFus$4xc=5r1b265jU_Xmn5Pg zZ;p5H3c_+uNG$hd=F94C9P>BRr@_{9f%AU-kf4%bUEIwWK4^ zcs6QrQyj)*TFz)_(^M6KVxO*-wz}ip;9f|Vpeq(%(CpsH!@ihyiUMmyDz=zB8r>Sd ztuHU@qCS;*)AooW@^%znY%Xa6Y=t(OTXa8X}w^0y=MVTtcOBe_^hsH3uxQIRJ!hm0I>``6F-E zAZZnv8p}E_z-kVLdU#H@YewLBc#qFHfjKtgYzaeZ!_p6FQyxiRwuByQML=)8!ly#| zxs=#ENKI77fwb5sPEI!2M578#GJa7H%Ii5l+M=5u-z)>sS)=*1-^8=vtnxkJ(2N<< zL(6H}-=|@APsx!caJ+Vr&U1NsNzC{lFl23f4uXYOPDz-T&i0fLpU+Aa2?ywnW~8fS zm2pGh;33TrjIfU0ip0wg>Iz>2Ti1yE9|cmlvh zKd=k1MyrAgyy0%(vilHV0FM6iE--8{t#<-o;RkmCm|c%>48Y{USnYRKx<`pF=#_soUBNasnNF1WaaeO^oBx3bz%3<^IPiz_w>>HK>3vsrlAmtc zWhOxe;t=jO~A%5?gyJuA)bOaw}$2Q-tXYWzIQ@o{lr0M7qJD)5~q z^7Fo*&_I3M67;({oQx9zv#QwAUCOtr0AE@;b+X*tqHN>?jNXHp zY#|j(VXJMw3J{EqpUcETf|Y`WZv%ib|6eoFCP*n?2mmDd`JI8$wtGMnejx;9_c8Br zJ6mK@DQZiq*!Wriz{OwORRa9Y05B`R6vDQkY2{mC5+g-fCsQzjQi`Tl+ zPI}J5#?D3f$sbL-^Xe6XqP*5ekq(KLoa&k>~b>0(TI^S7s;a*54fpsKMJpEN|0;>XuL- zZ@xW5VH&2fO%ruVptXK4gvw&1-R3hC~#FA(8DYex{@XH<3u5J_mH6W-W3u+J9m6vfjURt4+4nIcZZ;) zM|GUrZIo$SZ55ffbOLen;SjRj*ysvg`LlLMr<=KD^Jv;WVkO4=Pe7#l-$KL^Vx*WM zZ{7sJ{ClPZlI@vJAF=J38Jv?X3Z24#pORh*<7S7Y`CuFvgDk8Gvz)==-I@UDy*Gog z30YzXdo}^mdS3?Egfx*jgBt?O{O@PL!40J=&H5XFMDNc4gTF}!GmZri{VXUrmUJjH zp#x%L5aKFv!A3fiNy`8+{|7sQ(%=9%R|Srz#RqgWh}#Yri%_| z37D<_5n@;1CKPmtHCf*Q%EljNprw_QWiFDzpA&(|<_EV+j5jV$w@J#mX1jM0M5})sBCgZb1g&8QBTy=jgwPVMUM3Oep;Od^ zeT)Dt|IcZ`wbV1gsh%{SPysUflMu9O0XuzC808THh<-NIgfZgnQUuV(hcbDa5K!pe zEWq^sGz91EwDM{Ma_Q4vxBtg2{T0V{TBU8FP}9R^E3nY}vk)u1yJe5RLMaPEhhS|dPi#h|-8VcG%% zu=T%vo)uVl*1sq7eEY$dV8zd(12y_9AN@7kVS5Z4n1#Pi#TL$$Rto3fm6pY59nrW# z@5UOymK9!B?r=&ShS8psH9+9GHATQwlW_kehu$$9?Rcb9WmDG_l|z~C0koL}9Oo}> z>H>$fhHNgI0ZKm`EzQk3G(IH`D5Gq&w7P^tlZ#;lrucu*)4{Ho49BHniwUgCPBFP$ z29%9#w6t=W6IfRJ=oDB%+R8>uo8BGb0$;}z0cV(vhZS?@hW!EJs!xC_{LK!#McgNF zszJPD*g4^>cc%c0E+0Pwdn-sIrMxx6aq7ONaNh}N4TCf_yqY{x&FVu0l)|H#TAz%D zyH5Z#pACqE{nIVOy8#7Qt!&K6*2_y>KyHC)&Y7hXV16J&rD?Nq|GV^n>3Mf{00jKs87x#iWIfcWAhoA8Gp8NINjx zw`y;>?M9lDB9QF`$xmDfgGNbmrXM&|-HA>od4bd*NHW-glkMXLba(_nqrVIFn~v7W zV5U|Aka9NICCoz{svWL@Pk`H|(J%o?J>fTMDRgz&kEXnHfmZtn-Jd* zY6Y;B4Ln6>*~nI)dfAX^!A62t32y~!7{mDy>mX!n9V>_)VkV8VpFLT?bH8|>6642R=hL5@bDzSJ3W3PcWm1*x2k zIE5Q_5wO5jcMH~p!Gg89TbLXR3s`?wKsg{5q)`xYCsrU)v0xYfDbo(7m_7W^SO6#2AUk$3kM`b3!T+BnyqL&k-#bDGPyNkdO{gH~pk6C@j#2P9|E80MzBf4Mn%w}4s= z1E&?lOHMr#it~=)SaBZM{UD8$0B@$^yd#XX2DC;&n(9?2k5mp(fl_=dQ|pt_4$H;l z0IFmIrX@2@UN4UU)A3)#SZ7T7+1MvObC!;9`utz}}+6iu^NJ%+r?RL$c)()hN zPr+(T&Vj4^wv}@@aDZ0-B^6wf4kb1*=}=TJ>j3VC;!EW0K?bu91$1c#aJG_odH;U9 z@PdLuYTf~)VG?ni!?gIr2Q-NXU<&^Vg$4yqOFTR{&O87!pADDha6LGidH|=jV>~bS z09bFwpqzXFW{?e+mV9_JYxV)C=+l|K;zp&*K0HWCKLAwD22As{9-zxVfK|=L%;;-L zKmfEA1We916A}=Qop*f|OEBd)7=Ooi?W;pgRiE-;GqnV}Jr^&?-ht_9WJPa{dZ-Vuq2JWCW;{ zAi9p*3^bFC0A(W^EyH1IIs&Mz-GDTyo!|_21JC3T04iJ->L1l$hRg;HDDy$I?e?}! zNr2l5;w!fq)1;S^0IU}Tohc{r>_3*20DiFRWa3!~@T1E^J-S_S4$~1TwRY|F3i)FJ zF9(TeN4TjYB`sO4wRj-}IDN%4NeS-G+E!8mXh8O!0DZ)uB_&Z(6H^kw^b!)F_7z?H zn+F(7NCeKMBS0A?(LVfme1FrU>8l{hpM0SJoFbjw$md|g`;K#$7S}j9lZpVOk`0!Y ziYOQ-A^_RQ221lh3TD#~plt0B%}YW6HQXU2ryu|+&{@hE{g9S|sI;1Z0BAlN(2YNr zfGD7(AAo6P!=?FEg>%UVkb2pO6Z=?R z@@JC`ptOQ$NdudhY{b!#Y5;sIOk~znBT0x&0r;aJofK1^HPJ|;%xMOwmiL5uc{kDw zB~MW?C{=?LgPk|gG)#&C%*`OS+U!IulVAX&pN%!qDQbEFpwZ3&O|B*=#m^6QoQj&o zo=FA(Q`sS$!2-rc5NmrqY|{#$ZUxa*@QKr(ms9|17=)ZD3Ri27r4#@!JSo&++anTB zD1bh{>r^zI0CX!zLOZ}s3@Pb^=}xn+3OLahKrtrfFaMaF9lV`=Re%QMW;(Q_6H01g zIw6=|Isw!zMVEBK0}Q4U0_V~RpbV2}uYx9wT4{CT;q-Ju`IB@4IE5!etwHY6;uQyH z(g}dfXM?4s6AH%Z1VCEZU}>&P!E8DKl->@}ymSIkgB?P0IsuUADVhC{mQJX&noa10AWq3p)e2|$;>Fw{pW zG1yG$gwjPi0aDcr1;cO zf2s1);ymTgrV~J^2GNoRHZh%uqa&RFcrQ$3)^s9Ch)n_b!yug$Q=T=QNTbZ@1gI7Z zp^n*&bVA8f91Kd8AjM$kO*9RYP5^Twh&`Q|nREgeTiI9>ouZ}_02=Nbkkkm2!qY+> zr=n)D$7>4$GrvPPg9VIM5NmrqY^(vwK@!>lZemDDCpzYQJWeQpG*U#9P~axuZLLo@aDZ-n5%eAd zmy|+@O-v~i)k`XX+f#fA+dar&QlWq@tpLs-iT7yYTa7?kp^&<13P{n@p@ATWX_1Q$ zXi^Knl(XT|QVS1`lMBF9v*FSlnFnXn3*c<-7|%;E0M_3zD5n^J8D+zzr5K*fnq&Z~ z_>9a>cB9fI86Kph833we1E%>|56~qVz}m>h%;;-LH2^dS0w$-L38{w1axB>Zc=3xv zs!fT|W=b|Z%1AdrtP&)uUN&RUa+C>}jUB@wHO|(&N!49>A#t@sj2?G4V*^BlQ6MW|+*ZsmC}eHVaS~1SzGM_N>WAI&Drr zK)0|r)IqzEes~N}5$%Z7sl&VGQ!iZvRx645+<)?R4Dktfb*QJU6c>7 zN;YU#k4u;jq+Sp)>BJ|6`5x1;I3MVvAeEG0Xtp@tBaJ{G)QVq`*#%kSmqR+>RCbPs zP#;hm*^sHBz9+R8>jP~o8#T+CIoJozFdHv5j`O*s`l_H5zB1G;Nt4r1KMUQ2iGZCC z!s~361!v+!z_haAvWA=niooja3MNI002=HHpb74P6g?}{Nvg#xu{rV-m~s$q+kI|> zMF3ZW1eD(_ck4xqK-&zW&K6#I10fbJ0>8iebmH+M2#h`#gtU$g^kOm7c%1+7>ex0G zE8bnavA9l$HBk>guV^NSBK^=LKgMojA5N<5{` z?a7A1AYZ$2L%ZE-X#|{>qO~HB>iwIMBvS&hL5S$~OlfM#rGr6! z6k=mH)h#qZtME06QRKSVbEoQ-P8Uzpb%D<-o-gY0e#N`*rKtiqJ;gKLyD9cE(-LSl zF%X&mS}-3YCeBugr#M?rw%f0I?n{Uy&3F;;1~J?Rwj+dx3bg(eKDUZ0-0I&c+`^z% z`65`Jbq?3)dU+s5Unj`Xfz?At{M z4&kPHmu`KI@akY25GPu-1uDtNn;ZL}foYj&bPik_;kChjeZ97Jrrsez)?P20cH8#C ztfL=R!T5qZ|K>Ib*62Lvst8!aE5|T@H-Y(GADRa9hVu(6>x*PXH`TfgO1}iR@(qHY zYZFx}jBVXl0)bqcgrnlyk&+X`2zIh|nnZiW8+_6Bl)OG;(fsRPAzGJ?o)?0>Zv^25 z*3Dw+Ge0PRFI}j0>O=u41(^hw0F{FI{kY-8v=>Sr11A^T&oM3glow}jw6O&g3v*Cu zCLy(TkoEy@ZMDeyfYwsfblXWoxT$%L5b)+;W`q-s)z(V=#^%amgqKIphH%re(O9El zh}T9Pd0hp4_Ih{e;M|StD=Wv>*Xj`-D6E5yac#IL730;v6IuG+;#^-hqo0w0uz4;O ziTix7_GG?eYNyn>MZF|4!J>mcx^_ZtXB6ndT_9n`B&s~ttP0~K+*OdNByOs8x>f># z-Mm}ia~-sj{jax{N2*O^D$mUSjTO2IrFyEHe7?L%J;^YTTT%7z?XbQEVXM3 zQ|e-+dFHAJWJXF(RM&EYa4PPNqnb7D@4;FBR?-K^%uo6rv8J%DgW=VH_Mu6COjmpBkxLoU;IB~<(5!!o+ z-*4nzM(bAM*PBeAps_#xV}!QKYn5!L+3wDrsMp#H%MqG~_&LXS7dwxd;~M6&c5aR< zH(qD2ku|}|zn83pcx@F`T-DZH=8^$do&l88x%MZ z?gY9k%>?0P=G0NnFE!d7M)s#5=4QEGYq9v?qWF4nV__@WAJ%5Pd77zsHf70r%q!Um z%ulDZ)%s$iwsvgk z5Jar}+ZQFzlkFJA#b%{(miirZMn8%U=ok*?o&H<=9JL*BZM^d6_0i&bi(m7)i6;WD zn`D;4*v)YdOb{#EyjB~F_8})+p4zNE>{DiCK;OCESh&O5oQPU@BSc=cI3BmFV^+1p zVVGa7oxi@`>axdk48z+PR{(xC!B;+EU-EFfezxB3)aP!hcRCRs9_dRax_sqB;vAUk zg6bmA4%xFujS<}>!voZMQ|tar5DWO|$6@<1-zQ5)4j6KIUX`z4cFrT`FXEuHcCds4L zGsx4Xe9fC=Xe4^hj)zrv7zvrqh1HwuZ7K?YK>ue!$mV5K-PpKK%_P@0<&H~UL(4R5 zdJSu);eM}yMxJTvc};hih6j@kR7FuI@G|qnL$QXq^Wl#291s6paR5A=Jg>ulduo#m z(^DAxrLe;C$(cbmS%76by*iT=1-F~sTDKlSt-}YQUbbM5JPWYvZA<*0sZ6Z4m zfrrhX11}t*R9x)SAWxxkX=0EVTKlf_d;#s#vY{S8tN&HNasJdxKO>$;ZeR5REuI|5 zTtoujI2(W#em(@QOVwasx?v2AJS0%&e*t>n?5tYS$W0cZly&Z-J!)juX%^hy;)VQ5 z4m-^Rb#_FcI{ZaYXN&MmdWYPkOU~{JG&g@KphtbTZKo7kge3Lj@#vQmuN}s$5>~$g zvG73H2qI;uI*mcyqLgAnF0Q9XS6`fs056(1%U!brO@OtrA63i+L zGwVQ-lXP_XTD|-1Sj_0{hrAM(|QB)M9vpEE7=>YkD|%4jL*o1Q%Tt~|WbsIPVR z&vlHa1{b~Gblh}!>KR=uwZ6?#$r-KFv_bRL@4Q@^>TRB}Xo7nG-`R?PuDxI$qRHlN zc%%hl^{r>W$YyJ8@OgAzm|v{d7FQZn$0ha)rMEp6Upd&P^vQO(lwMX^sRCV3Rdo@g z_hyJ=bU|FvBniKmJ6l^>uM4Z%XjhADAg+yzb;iN-&Vz zQnP)BF>h)fcyEh2K6;Pp6c+mUJ+7POsY~~cJ$3(h(}Uwp58dmq)~SHN+d&P3UOVkK z>Aw9I3`o;Fu=GBABS^S zy4HLmnAGS!FfBEg!^@`2DH?vDBkso36C1S^LXfxVck(^ISdrfso35Q?Q$t%|Q#EMh z0Tk_uCK<5dbiVZT8*KDs^+iobR9*RP>P5vc6w1m=-XA%vB@7%-OQ&m{#=>>R^+PSi z_d-3G5j=OKcIho7sof9_Hw9q+EvkWeR6EPf^_9irRC{UH7rM`{({v|PtDv5ztfjl& zIZO*?88NKRdvVlClPXhy+uQ-Ho52jDKx(}&)nBf+SFAC^r&Fg|7rj?K4_tIH&1`Ec z=V})^H`Z2Y5g0T!l$P-^mp$O(ca_~Sx!9y7(Us;oTI_~`DV!37;h&;&+oJp%YYp+N zzkHA8+~gZ=*BC?Ix~GH~JV)ZmfF|$ydruHQZ0wdEBkD^Se@u?{7tUE1 zkXw^i$jj<0WQsgXK5~yn7UX8x*JZd_onXn)LhpuEN^1;XAPB) zpsCgOv}T5;Cg01RZPd8wV(C$cxBm7wJ;$`ge4+Sl@)q!D>N6>Z(Kg@tdA=bwE3*fs z;kHM$mya92vB83?tIueIBxG%UrOSN>8;W2$qd$WQNo;UR%{T|`5_K<(Ot>|pFXkQU za;^fQo#!f?Ve^0n_45A$7Y3c+T22))RgDkG)6GSDn-0C@Efbh#1GKMn+bM|`p|*qZ zp-Uaxk5uR&uM~f;M&PqQ1iu|)2Sn$T8f89%VXhG}v%h#a!C5iR8M8l8iAN{|j=)Us zFNCQq4xorBeb~M$?KH@t*dfyE{<-6ZF6fp23Utj@ngbHf(OMbtzo(?zDH3IExXpd( zsvjeHc%?}W1+@C0nKSVW>mQ1uf{(|ASoNMXDs7VDM7?{s*}S7cJDh+y|8aC~!;Jco z=P)@%*}S*(UP)2BWWe)ECo*R@`4=>K4n8bjG@Gh$NHh8MO; z)27!{6STe;@JS#$ND1!zfRE0T?{=8PeI+cu*FbH6avCg z^O!-mk_#(a>%~mtF>kB}CIf!UUjV*Ijh*^prA8}hEWpK*&bDk#TV8|M$s=B8!A_`W zKsv`cE-8Z~&^GNY>K5%S^B_~DPSHm66^)T2F13zz)ly@{>^R4|t=Y6_gEH^w@2flAQ8sVbgvV6Sl-Az5{M zG@1*tSD`&H5m1JTwjJ&a6f*~yr~qMSX6{(~g|#;AsuG0xrwdZ9$;%BNzo?SY#uzg5 z$1av2JT0YKyN{0{io>+wH0|9pj^aKy(JVFUD~sIoUN5uijfodZ@6XvlmrRuY_F@Lz za+%U~Jg%)#Su=nft!F?p?bO~uqZZlmiD$f? z#vn0b5q(;^0o`GUe#$N>FTXI=$*UH)mPg-HtyO5J`TjY|h-`V!G(|wJela98ONf69 z?MbBO1+BHkMfM_TX=C;CMCmFe=4(&NeOIQkbtc9Z*eQGo3~7OOMWmZiYYTxb*IKmO6Fn)TvWdb&7_9gU})W=tes`3B&o#ACc;$b2$5ouE-gw zNor|t{X<5ygh%!UhwHCpksSnaNxF`V_=*^R-M{3WFR`*w z!wjN$gImC%X7u8*oCpH3J=cw7Q%*_9ytCItgujsW>acxP=4NtX{>;qTrFQeAZ3B>r z%{$4=QtNDcVybzUR28gVt$)X-#}PTOC>fr|uG$zK0G>=Qfqg{3RKAQCG;QU}m)hd3 z;Qv#fuY=oG5H@CPXDTswh$h?3v*`0?``F2ojS~&*@h?m+%w}YJ^|O_I_z_2^D`6cL zRx&)Q$jmPUH=a+GVfHLdo}@MWIiwke@8-$Q!@qoThpAmlRrRsE{?HBRv!a*d6??R;LQHi#0s6pU7noSJZdH+4XYaR4ly}iU$9{D;v4Z+UL zTx?DqS~`QRXU+ByYx58>!%E%tGgRR}bV;pwQVXZqkdQ+lC(a|gFXd+hT1^9*X7Ynt z<GwP)y8rsoR+4a zAaLWDvO3V^CxWl~kQ*FP+UubG<>@vRr?cTfbuvglQj<8pr6sd`R%bd7t!fV%e!d`5&^(pJPY8 zlh{R6>i&_*uqPGQ#N?#$Dq366B^d+vyR8ekW@f&C*11*&RNPq)wL%D5kc1k0ok9+r zkvupuyr00ta5JXHeIV)Ou4Y_pS<+mDAN%|y=Q8*QEiKgtA{GS-wfY6UAh|oT4des3 z0RZQhiM9UvUYI$q8Dbu3dHvBYhDo3Z)f~|?X=>Ao`MC9*UbP!dhE}h zq1GsW9Ljg+Y+b^iSF?{jn|miN9_O%=B5RV}Ao&`|JLA_bOvq6(J%h~%mA!!yg@c{J zcYWuTIz!QcGg55w{a0-8a+e$X5;Sz|pHFlaWUb^kfFyH?jh`+{c3-M-FXyWyE}T|e zQ)}W9j>5@y2u22tY5-L#;1>G^7Wx&HVk43qa7s=F?j=Qqb)5vA85OinMU`|fY7@Uh zt)YxU6oN*V05KDw-l|PNoW5Az{cX&!8A-1$mir3(MWl+QXzafqOSGYWzHe`=HO&)i;CU6LbjT}!sEyVg+b8E9|hjyO|hnmDu|H*=irh_z&7ZuAQaOitI|MjI(*VG#IZ zZ6j=3swhTjPE1ZKFB!?U-c0@Kw1GVlv)$8Lv4ku(jc`EPK>C<#ipz&_Ybk2zj4lVy zKg&k9Ztap#H}f$<*gqmxOZ{bJcKyrAw5;VYD4%gQ>InzyG15@SN%M^j*tIVB{uO!#vN2|u08C11)8W<<)RHKa&dW$4PsJ(kl z;hLpN*l0cg4K*Xo+FNptp;nlNL6%0J1`{`73>JDmu#}OD@vkd$!!C@Sj166DklemA z+hQkApjV`SsSop7#4Iuy_=u6adF#f6l^{t;Q>ii0Jin`Bt1zkRUW8yr*4{PW&$ z*cpMcN2!5eBRF&wJSk)x0vEZcGQ{H25cf%$XuIC-ywvZ2F)lCD!?F@zuL z8kRi`!9!<6+I*Yp@TPWNZha5V%ug*`c%U_f+=d91k>c=ou=i%>WlQi_$=;wlKNA$= znwxH0p3#iFt$sIo+}^@;B*A&m-&zqXMh-U5Eal`g1XWQHbRw(NJPE=`1VtozY{?CG zwVs%lijmKLP5m7Thk>E`vvW8*l~JPM$E@EGFJ{l~!=?0~(TTx0LC3ZMr?=crfH>kJ zHZjL<5;pR#jrPm}Qi^!pT``w;j-6Y&*L_B$^&g@EO^XF#rAJ*e#z&<%JCsdW>y?|Z zw6mssC2-9xxbs%5+vo_e`sb?Qan~xV1}x9)XVQQLNU>qL9InBT-Qr_AmvOorIfuv) zqq?8eq69yx(u`Vc{1mkrr)8Jzm4+X74I&X_e$FRG(~c`8EK{vPI%M-|J_AStlwebW zG;Ea{uqd-%=%7bfXuZSAb?6GyOM1}jPS4*fZ%ln86(bf#Q*BHjM!mBTSeHrz+%+4D5uZsfVIP$e3(lWuwnbl^jQMhxas0%|=;EUC$@a#tkbUjK zMy`FXn*I}KM&mLgW2?VT25*k`5+Rf>yOWb$u0ZT^VyVA`n>ZI@$dr+_<##HJWgEO1 zfkPMB^ju3GvUeFTAvg1!{^#0CLOS6Rd3YNN)f28*9yU_M-+FQxF*koJ?`#--)oQb1 zU?96gFOH9&X=#Sqv}{ingA@Fska^iQT5c?Lrcr7$H`9s1Wx5|I!T7stmWW08z⋘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

      -eD;5sa3GZ9u=4KSB)B=3=@8Tv}^g(R&UDVu{o zC%OEkCoEDEY9VEg3dZx)A*&^CC8HV-yt+~4I#q*+z6*GCO#05IVp)9$JH`6JB9&g! zAqF=y`@j`8kbY6D5CBHV;!}Wvz)y8+nQ;yQh|>dP#VHd2pw#;URWh>(mJVDA63H%G z6%wPCdpWFdxPD-&+Bj#&S?JFlisEqUn^;juP_$9 zORs$Ng&)r!70z3}Hn6S5<+88J2l!1BzfDSl<`-c1s>X8+PbG3Dc{Y2)MFKIaAboEc zZ=fxVJ@m$c07%`4;add|_I0nbngh2s33TC$=z`9j@vcrtl!b9B0H&d~*zDPnN=mWV zTjLMj<UnUHWQ+ep7Nb{mX1E<|$?nhs^^`z%|kqpE@9*w>s|aN`-DyH?4LXcYAw+HN&R@m`C$x_n)I~i=)g1J5k^u-GCB? zKynPuRhwJKc*oN{Vz!q7h|YA2czv=mU7|Z|W^n+Kg?M7DPjM>a*1FZn+%6eRlZ-Q{ z%}zs8_<=oR6{@N#$uYjMhCN!6Rbh)$1w9JHH�i77I;yj^P4B_6){4LRZQ<>74SX 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�jx@Ksj>#qhn8(FEzH7t@DeXu!77u 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 I(QF_2e@J>A4*&oF literal 0 HcmV?d00001 diff --git a/main.go b/main.go new file mode 100644 index 0000000..528d420 --- /dev/null +++ b/main.go @@ -0,0 +1,111 @@ +package main + +import ( + "crypto/tls" + "encoding/json" + "flag" + "fmt" + "github.com/ginuerzh/gost" + "github.com/golang/glog" + "golang.org/x/net/http2" + "io/ioutil" + "os" + "runtime" + "sync" +) + +var ( + options struct { + ChainNodes, ServeNodes flagStringList + } +) + +func init() { + var ( + configureFile string + printVersion bool + ) + + flag.StringVar(&configureFile, "C", "", "configure file") + flag.Var(&options.ChainNodes, "F", "forward address, can make a forward chain") + flag.Var(&options.ServeNodes, "L", "listen address, can listen on multiple ports") + flag.BoolVar(&printVersion, "V", false, "print version") + flag.Parse() + + if err := loadConfigureFile(configureFile); err != nil { + glog.Fatal(err) + } + + if glog.V(5) { + http2.VerboseLogs = true + } + + if flag.NFlag() == 0 { + flag.PrintDefaults() + return + } + + if printVersion { + fmt.Fprintf(os.Stderr, "GOST %s (%s)\n", gost.Version, runtime.Version()) + return + } +} + +func main() { + chain := gost.NewProxyChain() + if err := chain.AddProxyNodeString(options.ChainNodes...); err != nil { + glog.Fatal(err) + } + chain.Init() + + var wg sync.WaitGroup + for _, ns := range options.ServeNodes { + serverNode, err := gost.ParseProxyNode(ns) + if err != nil { + glog.Fatal(err) + } + + wg.Add(1) + go func(node gost.ProxyNode) { + defer wg.Done() + certFile, keyFile := node.Get("cert"), node.Get("key") + if certFile == "" { + certFile = gost.DefaultCertFile + } + if keyFile == "" { + keyFile = gost.DefaultKeyFile + } + cert, err := gost.LoadCertificate(certFile, keyFile) + if err != nil { + glog.Fatal(err) + } + server := gost.NewProxyServer(node, chain, &tls.Config{Certificates: []tls.Certificate{cert}}) + glog.Fatal(server.Serve()) + }(serverNode) + } + wg.Wait() +} + +func loadConfigureFile(configureFile string) error { + if configureFile == "" { + return nil + } + content, err := ioutil.ReadFile(configureFile) + if err != nil { + return err + } + if err := json.Unmarshal(content, &options); err != nil { + return err + } + return nil +} + +type flagStringList []string + +func (this *flagStringList) String() string { + return fmt.Sprintf("%s", *this) +} +func (this *flagStringList) Set(value string) error { + *this = append(*this, value) + return nil +} diff --git a/vendor/github.com/clipperhouse/linkedlist/.gitignore b/vendor/github.com/clipperhouse/linkedlist/.gitignore new file mode 100644 index 0000000..2e77189 --- /dev/null +++ b/vendor/github.com/clipperhouse/linkedlist/.gitignore @@ -0,0 +1,2 @@ + +test/coverage.out diff --git a/vendor/github.com/clipperhouse/linkedlist/linkedlistwriter.go b/vendor/github.com/clipperhouse/linkedlist/linkedlistwriter.go new file mode 100644 index 0000000..8515ba3 --- /dev/null +++ b/vendor/github.com/clipperhouse/linkedlist/linkedlistwriter.go @@ -0,0 +1,60 @@ +package linkedlist + +import ( + "io" + + "github.com/clipperhouse/typewriter" +) + +func init() { + err := typewriter.Register(NewLinkedListWriter()) + if err != nil { + panic(err) + } +} + +type LinkedListWriter struct{} + +func NewLinkedListWriter() *LinkedListWriter { + return &LinkedListWriter{} +} + +func (sw *LinkedListWriter) Name() string { + return "linkedlist" +} + +func (sw *LinkedListWriter) Imports(t typewriter.Type) (result []typewriter.ImportSpec) { + // none + return result +} + +func (sw *LinkedListWriter) Write(w io.Writer, t typewriter.Type) error { + tag, found := t.FindTag(sw) + + if !found { + // nothing to be done + return nil + } + + license := ` +// List is a modification of http://golang.org/pkg/container/list/ +// 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. +` + if _, err := w.Write([]byte(license)); err != nil { + return err + } + + tmpl, err := templates.ByTag(t, tag) + + if err != nil { + return err + } + + if err := tmpl.Execute(w, t); err != nil { + return err + } + + return nil +} diff --git a/vendor/github.com/clipperhouse/linkedlist/templates.go b/vendor/github.com/clipperhouse/linkedlist/templates.go new file mode 100644 index 0000000..8c4ba6f --- /dev/null +++ b/vendor/github.com/clipperhouse/linkedlist/templates.go @@ -0,0 +1,215 @@ +package linkedlist + +import "github.com/clipperhouse/typewriter" + +var templates = typewriter.TemplateSlice{ + list, +} + +var list = &typewriter.Template{ + Name: "LinkedList", + Text: ` +// {{.Name}}Element is an element of a linked list. +type {{.Name}}Element struct { + // Next and previous pointers in the doubly-linked list of elements. + // To simplify the implementation, internally a list l is implemented + // as a ring, such that &l.root is both the next element of the last + // list element (l.Back()) and the previous element of the first list + // element (l.Front()). + next, prev *{{.Name}}Element + + // The list to which this element belongs. + list *{{.Name}}List + + // The value stored with this element. + Value {{.Pointer}}{{.Name}} +} + +// Next returns the next list element or nil. +func (e *{{.Name}}Element) Next() *{{.Name}}Element { + if p := e.next; e.list != nil && p != &e.list.root { + return p + } + return nil +} + +// Prev returns the previous list element or nil. +func (e *{{.Name}}Element) Prev() *{{.Name}}Element { + if p := e.prev; e.list != nil && p != &e.list.root { + return p + } + return nil +} + +// {{.Name}}List represents a doubly linked list. +// The zero value for {{.Name}}List is an empty list ready to use. +type {{.Name}}List struct { + root {{.Name}}Element // sentinel list element, only &root, root.prev, and root.next are used + len int // current list length excluding (this) sentinel element +} + +// Init initializes or clears list l. +func (l *{{.Name}}List) Init() *{{.Name}}List { + l.root.next = &l.root + l.root.prev = &l.root + l.len = 0 + return l +} + +// New returns an initialized list. +func New{{.Name}}List() *{{.Name}}List { return new({{.Name}}List).Init() } + +// Len returns the number of elements of list l. +// The complexity is O(1). +func (l *{{.Name}}List) Len() int { return l.len } + +// Front returns the first element of list l or nil. +func (l *{{.Name}}List) Front() *{{.Name}}Element { + if l.len == 0 { + return nil + } + return l.root.next +} + +// Back returns the last element of list l or nil. +func (l *{{.Name}}List) Back() *{{.Name}}Element { + if l.len == 0 { + return nil + } + return l.root.prev +} + +// lazyInit lazily initializes a zero {{.Name}}List value. +func (l *{{.Name}}List) lazyInit() { + if l.root.next == nil { + l.Init() + } +} + +// insert inserts e after at, increments l.len, and returns e. +func (l *{{.Name}}List) insert(e, at *{{.Name}}Element) *{{.Name}}Element { + n := at.next + at.next = e + e.prev = at + e.next = n + n.prev = e + e.list = l + l.len++ + return e +} + +// insertValue is a convenience wrapper for insert(&{{.Name}}Element{Value: v}, at). +func (l *{{.Name}}List) insertValue(v {{.Pointer}}{{.Name}}, at *{{.Name}}Element) *{{.Name}}Element { + return l.insert(&{{.Name}}Element{Value: v}, at) +} + +// remove removes e from its list, decrements l.len, and returns e. +func (l *{{.Name}}List) remove(e *{{.Name}}Element) *{{.Name}}Element { + e.prev.next = e.next + e.next.prev = e.prev + e.next = nil // avoid memory leaks + e.prev = nil // avoid memory leaks + e.list = nil + l.len-- + return e +} + +// Remove removes e from l if e is an element of list l. +// It returns the element value e.Value. +func (l *{{.Name}}List) Remove(e *{{.Name}}Element) {{.Pointer}}{{.Name}} { + if e.list == l { + // if e.list == l, l must have been initialized when e was inserted + // in l or l == nil (e is a zero {{.Name}}Element) and l.remove will crash + l.remove(e) + } + return e.Value +} + +// PushFront inserts a new element e with value v at the front of list l and returns e. +func (l *{{.Name}}List) PushFront(v {{.Pointer}}{{.Name}}) *{{.Name}}Element { + l.lazyInit() + return l.insertValue(v, &l.root) +} + +// PushBack inserts a new element e with value v at the back of list l and returns e. +func (l *{{.Name}}List) PushBack(v {{.Pointer}}{{.Name}}) *{{.Name}}Element { + l.lazyInit() + return l.insertValue(v, l.root.prev) +} + +// InsertBefore inserts a new element e with value v immediately before mark and returns e. +// If mark is not an element of l, the list is not modified. +func (l *{{.Name}}List) InsertBefore(v {{.Pointer}}{{.Name}}, mark *{{.Name}}Element) *{{.Name}}Element { + if mark.list != l { + return nil + } + // see comment in {{.Name}}List.Remove about initialization of l + return l.insertValue(v, mark.prev) +} + +// InsertAfter inserts a new element e with value v immediately after mark and returns e. +// If mark is not an element of l, the list is not modified. +func (l *{{.Name}}List) InsertAfter(v {{.Pointer}}{{.Name}}, mark *{{.Name}}Element) *{{.Name}}Element { + if mark.list != l { + return nil + } + // see comment in {{.Name}}List.Remove about initialization of l + return l.insertValue(v, mark) +} + +// MoveToFront moves element e to the front of list l. +// If e is not an element of l, the list is not modified. +func (l *{{.Name}}List) MoveToFront(e *{{.Name}}Element) { + if e.list != l || l.root.next == e { + return + } + // see comment in {{.Name}}List.Remove about initialization of l + l.insert(l.remove(e), &l.root) +} + +// MoveToBack moves element e to the back of list l. +// If e is not an element of l, the list is not modified. +func (l *{{.Name}}List) MoveToBack(e *{{.Name}}Element) { + if e.list != l || l.root.prev == e { + return + } + // see comment in {{.Name}}List.Remove about initialization of l + l.insert(l.remove(e), l.root.prev) +} + +// MoveBefore moves element e to its new position before mark. +// If e or mark is not an element of l, or e == mark, the list is not modified. +func (l *{{.Name}}List) MoveBefore(e, mark *{{.Name}}Element) { + if e.list != l || e == mark || mark.list != l { + return + } + l.insert(l.remove(e), mark.prev) +} + +// MoveAfter moves element e to its new position after mark. +// If e is not an element of l, or e == mark, the list is not modified. +func (l *{{.Name}}List) MoveAfter(e, mark *{{.Name}}Element) { + if e.list != l || e == mark || mark.list != l { + return + } + l.insert(l.remove(e), mark) +} + +// PushBackList inserts a copy of an other list at the back of list l. +// The lists l and other may be the same. +func (l *{{.Name}}List) PushBackList(other *{{.Name}}List) { + l.lazyInit() + for i, e := other.Len(), other.Front(); i > 0; i, e = i-1, e.Next() { + l.insertValue(e.Value, l.root.prev) + } +} + +// PushFrontList inserts a copy of an other list at the front of list l. +// The lists l and other may be the same. +func (l *{{.Name}}List) PushFrontList(other *{{.Name}}List) { + l.lazyInit() + for i, e := other.Len(), other.Back(); i > 0; i, e = i-1, e.Prev() { + l.insertValue(e.Value, &l.root) + } +} +`} diff --git a/vendor/github.com/clipperhouse/set/.gitignore b/vendor/github.com/clipperhouse/set/.gitignore new file mode 100644 index 0000000..69e8572 --- /dev/null +++ b/vendor/github.com/clipperhouse/set/.gitignore @@ -0,0 +1,4 @@ + +test/coverage.out + +test/coverage.out diff --git a/vendor/github.com/clipperhouse/set/setwriter.go b/vendor/github.com/clipperhouse/set/setwriter.go new file mode 100644 index 0000000..4485f4d --- /dev/null +++ b/vendor/github.com/clipperhouse/set/setwriter.go @@ -0,0 +1,59 @@ +package set + +import ( + "io" + + "github.com/clipperhouse/typewriter" +) + +func init() { + err := typewriter.Register(NewSetWriter()) + if err != nil { + panic(err) + } +} + +type SetWriter struct{} + +func NewSetWriter() *SetWriter { + return &SetWriter{} +} + +func (sw *SetWriter) Name() string { + return "set" +} + +func (sw *SetWriter) Imports(t typewriter.Type) (result []typewriter.ImportSpec) { + // none + return result +} + +func (sw *SetWriter) Write(w io.Writer, t typewriter.Type) error { + tag, found := t.FindTag(sw) + + if !found { + // nothing to be done + return nil + } + + license := `// Set is a modification of https://github.com/deckarep/golang-set +// The MIT License (MIT) +// Copyright (c) 2013 Ralph Caraveo (deckarep@gmail.com) +` + + if _, err := w.Write([]byte(license)); err != nil { + return err + } + + tmpl, err := templates.ByTag(t, tag) + + if err != nil { + return err + } + + if err := tmpl.Execute(w, t); err != nil { + return err + } + + return nil +} diff --git a/vendor/github.com/clipperhouse/set/templates.go b/vendor/github.com/clipperhouse/set/templates.go new file mode 100644 index 0000000..707d502 --- /dev/null +++ b/vendor/github.com/clipperhouse/set/templates.go @@ -0,0 +1,176 @@ +package set + +import "github.com/clipperhouse/typewriter" + +var templates = typewriter.TemplateSlice{ + set, +} + +var set = &typewriter.Template{ + Name: "Set", + Text: ` +// {{.Name}}Set is the primary type that represents a set +type {{.Name}}Set map[{{.Pointer}}{{.Name}}]struct{} + +// New{{.Name}}Set creates and returns a reference to an empty set. +func New{{.Name}}Set(a ...{{.Pointer}}{{.Name}}) {{.Name}}Set { + s := make({{.Name}}Set) + for _, i := range a { + s.Add(i) + } + return s +} + +// ToSlice returns the elements of the current set as a slice +func (set {{.Name}}Set) ToSlice() []{{.Pointer}}{{.Name}} { + var s []{{.Pointer}}{{.Name}} + for v := range set { + s = append(s, v) + } + return s +} + +// Add adds an item to the current set if it doesn't already exist in the set. +func (set {{.Name}}Set) Add(i {{.Pointer}}{{.Name}}) bool { + _, found := set[i] + set[i] = struct{}{} + return !found //False if it existed already +} + +// Contains determines if a given item is already in the set. +func (set {{.Name}}Set) Contains(i {{.Pointer}}{{.Name}}) bool { + _, found := set[i] + return found +} + +// ContainsAll determines if the given items are all in the set +func (set {{.Name}}Set) ContainsAll(i ...{{.Pointer}}{{.Name}}) bool { + for _, v := range i { + if !set.Contains(v) { + return false + } + } + return true +} + +// IsSubset determines if every item in the other set is in this set. +func (set {{.Name}}Set) IsSubset(other {{.Name}}Set) bool { + for elem := range set { + if !other.Contains(elem) { + return false + } + } + return true +} + +// IsSuperset determines if every item of this set is in the other set. +func (set {{.Name}}Set) IsSuperset(other {{.Name}}Set) bool { + return other.IsSubset(set) +} + +// Union returns a new set with all items in both sets. +func (set {{.Name}}Set) Union(other {{.Name}}Set) {{.Name}}Set { + unionedSet := New{{.Name}}Set() + + for elem := range set { + unionedSet.Add(elem) + } + for elem := range other { + unionedSet.Add(elem) + } + return unionedSet +} + +// Intersect returns a new set with items that exist only in both sets. +func (set {{.Name}}Set) Intersect(other {{.Name}}Set) {{.Name}}Set { + intersection := New{{.Name}}Set() + // loop over smaller set + if set.Cardinality() < other.Cardinality() { + for elem := range set { + if other.Contains(elem) { + intersection.Add(elem) + } + } + } else { + for elem := range other { + if set.Contains(elem) { + intersection.Add(elem) + } + } + } + return intersection +} + +// Difference returns a new set with items in the current set but not in the other set +func (set {{.Name}}Set) Difference(other {{.Name}}Set) {{.Name}}Set { + differencedSet := New{{.Name}}Set() + for elem := range set { + if !other.Contains(elem) { + differencedSet.Add(elem) + } + } + return differencedSet +} + +// SymmetricDifference returns a new set with items in the current set or the other set but not in both. +func (set {{.Name}}Set) SymmetricDifference(other {{.Name}}Set) {{.Name}}Set { + aDiff := set.Difference(other) + bDiff := other.Difference(set) + return aDiff.Union(bDiff) +} + +// Clear clears the entire set to be the empty set. +func (set *{{.Name}}Set) Clear() { + *set = make({{.Name}}Set) +} + +// Remove allows the removal of a single item in the set. +func (set {{.Name}}Set) Remove(i {{.Pointer}}{{.Name}}) { + delete(set, i) +} + +// Cardinality returns how many items are currently in the set. +func (set {{.Name}}Set) Cardinality() int { + return len(set) +} + +// Iter returns a channel of type {{.Pointer}}{{.Name}} that you can range over. +func (set {{.Name}}Set) Iter() <-chan {{.Pointer}}{{.Name}} { + ch := make(chan {{.Pointer}}{{.Name}}) + go func() { + for elem := range set { + ch <- elem + } + close(ch) + }() + + return ch +} + +// Equal determines if two sets are equal to each other. +// If they both are the same size and have the same items they are considered equal. +// Order of items is not relevent for sets to be equal. +func (set {{.Name}}Set) Equal(other {{.Name}}Set) bool { + if set.Cardinality() != other.Cardinality() { + return false + } + for elem := range set { + if !other.Contains(elem) { + return false + } + } + return true +} + +// Clone returns a clone of the set. +// Does NOT clone the underlying elements. +func (set {{.Name}}Set) Clone() {{.Name}}Set { + clonedSet := New{{.Name}}Set() + for elem := range set { + clonedSet.Add(elem) + } + return clonedSet +} +`, + TypeConstraint: typewriter.Constraint{Comparable: true}, +} diff --git a/vendor/github.com/clipperhouse/slice/.gitignore b/vendor/github.com/clipperhouse/slice/.gitignore new file mode 100644 index 0000000..2e77189 --- /dev/null +++ b/vendor/github.com/clipperhouse/slice/.gitignore @@ -0,0 +1,2 @@ + +test/coverage.out diff --git a/vendor/github.com/clipperhouse/slice/README.md b/vendor/github.com/clipperhouse/slice/README.md new file mode 100644 index 0000000..f3bd8f5 --- /dev/null +++ b/vendor/github.com/clipperhouse/slice/README.md @@ -0,0 +1,5 @@ +### [Details and docs...](https://clipperhouse.github.io/gen/slice/) + +This package is a typewriter for use with [gen](https://github.com/clipperhouse/gen), a type-driven code generation tool for Go. + +The slice typewriter offers LINQ-like methods for working with slices, such as filtering and sorting. See the docs above for details. diff --git a/vendor/github.com/clipperhouse/slice/aggregate.go b/vendor/github.com/clipperhouse/slice/aggregate.go new file mode 100644 index 0000000..419dd05 --- /dev/null +++ b/vendor/github.com/clipperhouse/slice/aggregate.go @@ -0,0 +1,20 @@ +package slice + +import "github.com/clipperhouse/typewriter" + +var aggregateT = &typewriter.Template{ + Name: "Aggregate", + Text: ` +// Aggregate{{.TypeParameter.LongName}} iterates over {{.SliceName}}, operating on each element while maintaining ‘state’. See: http://clipperhouse.github.io/gen/#Aggregate +func (rcv {{.SliceName}}) Aggregate{{.TypeParameter.LongName}}(fn func({{.TypeParameter}}, {{.Type}}) {{.TypeParameter}}) (result {{.TypeParameter}}) { + for _, v := range rcv { + result = fn(result, v) + } + return +} +`, + TypeParameterConstraints: []typewriter.Constraint{ + // exactly one type parameter is required, but no constraints on that type + {}, + }, +} diff --git a/vendor/github.com/clipperhouse/slice/all.go b/vendor/github.com/clipperhouse/slice/all.go new file mode 100644 index 0000000..9f919b9 --- /dev/null +++ b/vendor/github.com/clipperhouse/slice/all.go @@ -0,0 +1,17 @@ +package slice + +import "github.com/clipperhouse/typewriter" + +var all = &typewriter.Template{ + Name: "All", + Text: ` +// All verifies that all elements of {{.SliceName}} return true for the passed func. See: http://clipperhouse.github.io/gen/#All +func (rcv {{.SliceName}}) All(fn func({{.Type}}) bool) bool { + for _, v := range rcv { + if !fn(v) { + return false + } + } + return true +} +`} diff --git a/vendor/github.com/clipperhouse/slice/any.go b/vendor/github.com/clipperhouse/slice/any.go new file mode 100644 index 0000000..380628f --- /dev/null +++ b/vendor/github.com/clipperhouse/slice/any.go @@ -0,0 +1,17 @@ +package slice + +import "github.com/clipperhouse/typewriter" + +var any = &typewriter.Template{ + Name: "Any", + Text: ` +// Any verifies that one or more elements of {{.SliceName}} return true for the passed func. See: http://clipperhouse.github.io/gen/#Any +func (rcv {{.SliceName}}) Any(fn func({{.Type}}) bool) bool { + for _, v := range rcv { + if fn(v) { + return true + } + } + return false +} +`} diff --git a/vendor/github.com/clipperhouse/slice/average.go b/vendor/github.com/clipperhouse/slice/average.go new file mode 100644 index 0000000..52fe56b --- /dev/null +++ b/vendor/github.com/clipperhouse/slice/average.go @@ -0,0 +1,47 @@ +package slice + +import "github.com/clipperhouse/typewriter" + +var average = &typewriter.Template{ + Name: "Average", + Text: ` +// Average sums {{.SliceName}} over all elements and divides by len({{.SliceName}}). See: http://clipperhouse.github.io/gen/#Average +func (rcv {{.SliceName}}) Average() ({{.Type}}, error) { + var result {{.Type}} + + l := len(rcv) + if l == 0 { + return result, errors.New("cannot determine Average of zero-length {{.SliceName}}") + } + for _, v := range rcv { + result += v + } + result = result / {{.Type}}(l) + return result, nil +} +`, + TypeConstraint: typewriter.Constraint{Numeric: true}, +} + +var averageT = &typewriter.Template{ + Name: "Average", + Text: ` +// Average{{.TypeParameter.LongName}} sums {{.TypeParameter}} over all elements and divides by len({{.SliceName}}). See: http://clipperhouse.github.io/gen/#Average +func (rcv {{.SliceName}}) Average{{.TypeParameter.LongName}}(fn func({{.Type}}) {{.TypeParameter}}) (result {{.TypeParameter}}, err error) { + l := len(rcv) + if l == 0 { + err = errors.New("cannot determine Average[{{.TypeParameter}}] of zero-length {{.SliceName}}") + return + } + for _, v := range rcv { + result += fn(v) + } + result = result / {{.TypeParameter}}(l) + return +} +`, + TypeParameterConstraints: []typewriter.Constraint{ + // exactly one type parameter is required, and it must be numeric + {Numeric: true}, + }, +} diff --git a/vendor/github.com/clipperhouse/slice/count.go b/vendor/github.com/clipperhouse/slice/count.go new file mode 100644 index 0000000..f5df103 --- /dev/null +++ b/vendor/github.com/clipperhouse/slice/count.go @@ -0,0 +1,17 @@ +package slice + +import "github.com/clipperhouse/typewriter" + +var count = &typewriter.Template{ + Name: "Count", + Text: ` +// Count gives the number elements of {{.SliceName}} that return true for the passed func. See: http://clipperhouse.github.io/gen/#Count +func (rcv {{.SliceName}}) Count(fn func({{.Type}}) bool) (result int) { + for _, v := range rcv { + if fn(v) { + result++ + } + } + return +} +`} diff --git a/vendor/github.com/clipperhouse/slice/distinct.go b/vendor/github.com/clipperhouse/slice/distinct.go new file mode 100644 index 0000000..22c6f13 --- /dev/null +++ b/vendor/github.com/clipperhouse/slice/distinct.go @@ -0,0 +1,21 @@ +package slice + +import "github.com/clipperhouse/typewriter" + +var distinct = &typewriter.Template{ + Name: "Distinct", + Text: ` +// Distinct returns a new {{.SliceName}} whose elements are unique. See: http://clipperhouse.github.io/gen/#Distinct +func (rcv {{.SliceName}}) Distinct() (result {{.SliceName}}) { + appended := make(map[{{.Type}}]bool) + for _, v := range rcv { + if !appended[v] { + result = append(result, v) + appended[v] = true + } + } + return result +} +`, + TypeConstraint: typewriter.Constraint{Comparable: true}, +} diff --git a/vendor/github.com/clipperhouse/slice/distinctby.go b/vendor/github.com/clipperhouse/slice/distinctby.go new file mode 100644 index 0000000..4eb7b75 --- /dev/null +++ b/vendor/github.com/clipperhouse/slice/distinctby.go @@ -0,0 +1,21 @@ +package slice + +import "github.com/clipperhouse/typewriter" + +var distinctBy = &typewriter.Template{ + Name: "DistinctBy", + Text: ` +// DistinctBy returns a new {{.SliceName}} whose elements are unique, where equality is defined by a passed func. See: http://clipperhouse.github.io/gen/#DistinctBy +func (rcv {{.SliceName}}) DistinctBy(equal func({{.Type}}, {{.Type}}) bool) (result {{.SliceName}}) { +Outer: + for _, v := range rcv { + for _, r := range result { + if equal(v, r) { + continue Outer + } + } + result = append(result, v) + } + return result +} +`} diff --git a/vendor/github.com/clipperhouse/slice/each.go b/vendor/github.com/clipperhouse/slice/each.go new file mode 100644 index 0000000..c0c5f0f --- /dev/null +++ b/vendor/github.com/clipperhouse/slice/each.go @@ -0,0 +1,14 @@ +package slice + +import "github.com/clipperhouse/typewriter" + +var each = &typewriter.Template{ + Name: "Each", + Text: ` +// Each iterates over {{.SliceName}} and executes the passed func against each element. See: http://clipperhouse.github.io/gen/#Each +func (rcv {{.SliceName}}) Each(fn func({{.Type}})) { + for _, v := range rcv { + fn(v) + } +} +`} diff --git a/vendor/github.com/clipperhouse/slice/first.go b/vendor/github.com/clipperhouse/slice/first.go new file mode 100644 index 0000000..e6df375 --- /dev/null +++ b/vendor/github.com/clipperhouse/slice/first.go @@ -0,0 +1,19 @@ +package slice + +import "github.com/clipperhouse/typewriter" + +var first = &typewriter.Template{ + Name: "First", + Text: ` +// First returns the first element that returns true for the passed func. Returns error if no elements return true. See: http://clipperhouse.github.io/gen/#First +func (rcv {{.SliceName}}) First(fn func({{.Type}}) bool) (result {{.Type}}, err error) { + for _, v := range rcv { + if fn(v) { + result = v + return + } + } + err = errors.New("no {{.SliceName}} elements return true for passed func") + return +} +`} diff --git a/vendor/github.com/clipperhouse/slice/groupby.go b/vendor/github.com/clipperhouse/slice/groupby.go new file mode 100644 index 0000000..cb47f1a --- /dev/null +++ b/vendor/github.com/clipperhouse/slice/groupby.go @@ -0,0 +1,22 @@ +package slice + +import "github.com/clipperhouse/typewriter" + +var groupByT = &typewriter.Template{ + Name: "GroupBy", + Text: ` +// GroupBy{{.TypeParameter.LongName}} groups elements into a map keyed by {{.TypeParameter}}. See: http://clipperhouse.github.io/gen/#GroupBy +func (rcv {{.SliceName}}) GroupBy{{.TypeParameter.LongName}}(fn func({{.Type}}) {{.TypeParameter}}) map[{{.TypeParameter}}]{{.SliceName}} { + result := make(map[{{.TypeParameter}}]{{.SliceName}}) + for _, v := range rcv { + key := fn(v) + result[key] = append(result[key], v) + } + return result +} +`, + TypeParameterConstraints: []typewriter.Constraint{ + // exactly one type parameter is required, and it must be comparable + {Comparable: true}, + }, +} diff --git a/vendor/github.com/clipperhouse/slice/max.go b/vendor/github.com/clipperhouse/slice/max.go new file mode 100644 index 0000000..7be599c --- /dev/null +++ b/vendor/github.com/clipperhouse/slice/max.go @@ -0,0 +1,53 @@ +package slice + +import "github.com/clipperhouse/typewriter" + +var max = &typewriter.Template{ + Name: "Max", + Text: ` + // Max returns the maximum value of {{.SliceName}}. In the case of multiple items being equally maximal, the first such element is returned. Returns error if no elements. See: http://clipperhouse.github.io/gen/#Max + func (rcv {{.SliceName}}) Max() (result {{.Type}}, err error) { + l := len(rcv) + if l == 0 { + err = errors.New("cannot determine the Max of an empty slice") + return + } + result = rcv[0] + for _, v := range rcv { + if v > result { + result = v + } + } + return + } + `, + TypeConstraint: typewriter.Constraint{Ordered: true}, +} + +var maxT = &typewriter.Template{ + Name: "Max", + Text: ` +// Max{{.TypeParameter.LongName}} selects the largest value of {{.TypeParameter}} in {{.SliceName}}. Returns error on {{.SliceName}} with no elements. See: http://clipperhouse.github.io/gen/#MaxCustom +func (rcv {{.SliceName}}) Max{{.TypeParameter.LongName}}(fn func({{.Type}}) {{.TypeParameter}}) (result {{.TypeParameter}}, err error) { + l := len(rcv) + if l == 0 { + err = errors.New("cannot determine Max of zero-length {{.SliceName}}") + return + } + result = fn(rcv[0]) + if l > 1 { + for _, v := range rcv[1:] { + f := fn(v) + if f > result { + result = f + } + } + } + return +} +`, + TypeParameterConstraints: []typewriter.Constraint{ + // exactly one type parameter is required, and it must be ordered + {Ordered: true}, + }, +} diff --git a/vendor/github.com/clipperhouse/slice/maxby.go b/vendor/github.com/clipperhouse/slice/maxby.go new file mode 100644 index 0000000..62cab61 --- /dev/null +++ b/vendor/github.com/clipperhouse/slice/maxby.go @@ -0,0 +1,24 @@ +package slice + +import "github.com/clipperhouse/typewriter" + +var maxBy = &typewriter.Template{ + Name: "MaxBy", + Text: ` +// MaxBy returns an element of {{.SliceName}} containing the maximum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally maximal, the last such element is returned. Returns error if no elements. See: http://clipperhouse.github.io/gen/#MaxBy +func (rcv {{.SliceName}}) MaxBy(less func({{.Type}}, {{.Type}}) bool) (result {{.Type}}, err error) { + l := len(rcv) + if l == 0 { + err = errors.New("cannot determine the MaxBy of an empty slice") + return + } + m := 0 + for i := 1; i < l; i++ { + if rcv[i] != rcv[m] && !less(rcv[i], rcv[m]) { + m = i + } + } + result = rcv[m] + return +} +`} diff --git a/vendor/github.com/clipperhouse/slice/min.go b/vendor/github.com/clipperhouse/slice/min.go new file mode 100644 index 0000000..3b9b29f --- /dev/null +++ b/vendor/github.com/clipperhouse/slice/min.go @@ -0,0 +1,53 @@ +package slice + +import "github.com/clipperhouse/typewriter" + +var min = &typewriter.Template{ + Name: "Min", + Text: ` + // Min returns the minimum value of {{.SliceName}}. In the case of multiple items being equally minimal, the first such element is returned. Returns error if no elements. See: http://clipperhouse.github.io/gen/#Min + func (rcv {{.SliceName}}) Min() (result {{.Type}}, err error) { + l := len(rcv) + if l == 0 { + err = errors.New("cannot determine the Min of an empty slice") + return + } + result = rcv[0] + for _, v := range rcv { + if v < result { + result = v + } + } + return + } + `, + TypeConstraint: typewriter.Constraint{Ordered: true}, +} + +var minT = &typewriter.Template{ + Name: "Min", + Text: ` +// Min{{.TypeParameter.LongName}} selects the least value of {{.TypeParameter}} in {{.SliceName}}. Returns error on {{.SliceName}} with no elements. See: http://clipperhouse.github.io/gen/#MinCustom +func (rcv {{.SliceName}}) Min{{.TypeParameter.LongName}}(fn func({{.Type}}) {{.TypeParameter}}) (result {{.TypeParameter}}, err error) { + l := len(rcv) + if l == 0 { + err = errors.New("cannot determine Min of zero-length {{.SliceName}}") + return + } + result = fn(rcv[0]) + if l > 1 { + for _, v := range rcv[1:] { + f := fn(v) + if f < result { + result = f + } + } + } + return +} +`, + TypeParameterConstraints: []typewriter.Constraint{ + // exactly one type parameter is required, and it must be ordered + {Ordered: true}, + }, +} diff --git a/vendor/github.com/clipperhouse/slice/minby.go b/vendor/github.com/clipperhouse/slice/minby.go new file mode 100644 index 0000000..8223669 --- /dev/null +++ b/vendor/github.com/clipperhouse/slice/minby.go @@ -0,0 +1,24 @@ +package slice + +import "github.com/clipperhouse/typewriter" + +var minBy = &typewriter.Template{ + Name: "MinBy", + Text: ` +// MinBy returns an element of {{.SliceName}} containing the minimum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally minimal, the first such element is returned. Returns error if no elements. See: http://clipperhouse.github.io/gen/#MinBy +func (rcv {{.SliceName}}) MinBy(less func({{.Type}}, {{.Type}}) bool) (result {{.Type}}, err error) { + l := len(rcv) + if l == 0 { + err = errors.New("cannot determine the Min of an empty slice") + return + } + m := 0 + for i := 1; i < l; i++ { + if less(rcv[i], rcv[m]) { + m = i + } + } + result = rcv[m] + return +} +`} diff --git a/vendor/github.com/clipperhouse/slice/select.go b/vendor/github.com/clipperhouse/slice/select.go new file mode 100644 index 0000000..876f786 --- /dev/null +++ b/vendor/github.com/clipperhouse/slice/select.go @@ -0,0 +1,20 @@ +package slice + +import "github.com/clipperhouse/typewriter" + +var selectT = &typewriter.Template{ + Name: "Select", + Text: ` +// Select{{.TypeParameter.LongName}} projects a slice of {{.TypeParameter}} from {{.SliceName}}, typically called a map in other frameworks. See: http://clipperhouse.github.io/gen/#Select +func (rcv {{.SliceName}}) Select{{.TypeParameter.LongName}}(fn func({{.Type}}) {{.TypeParameter}}) (result []{{.TypeParameter}}) { + for _, v := range rcv { + result = append(result, fn(v)) + } + return +} +`, + TypeParameterConstraints: []typewriter.Constraint{ + // exactly one type parameter is required, but no constraints on that type + {}, + }, +} diff --git a/vendor/github.com/clipperhouse/slice/shuffle.go b/vendor/github.com/clipperhouse/slice/shuffle.go new file mode 100644 index 0000000..ab00189 --- /dev/null +++ b/vendor/github.com/clipperhouse/slice/shuffle.go @@ -0,0 +1,19 @@ +package slice + +import "github.com/clipperhouse/typewriter" + +var shuffle = &typewriter.Template{ + Name: "Shuffle", + Text: ` +// Shuffle returns a shuffled copy of {{.SliceName}}, using a version of the Fisher-Yates shuffle. See: http://clipperhouse.github.io/gen/#Shuffle +func (rcv {{.SliceName}}) Shuffle() {{.SliceName}} { + numItems := len(rcv) + result := make({{.SliceName}}, numItems) + copy(result, rcv) + for i := 0; i < numItems; i++ { + r := i + rand.Intn(numItems-i) + result[r], result[i] = result[i], result[r] + } + return result +} +`} diff --git a/vendor/github.com/clipperhouse/slice/single.go b/vendor/github.com/clipperhouse/slice/single.go new file mode 100644 index 0000000..ffce531 --- /dev/null +++ b/vendor/github.com/clipperhouse/slice/single.go @@ -0,0 +1,29 @@ +package slice + +import "github.com/clipperhouse/typewriter" + +var single = &typewriter.Template{ + Name: "Single", + Text: ` +// Single returns exactly one element of {{.SliceName}} that returns true for the passed func. Returns error if no or multiple elements return true. See: http://clipperhouse.github.io/gen/#Single +func (rcv {{.SliceName}}) Single(fn func({{.Type}}) bool) (result {{.Type}}, err error) { + var candidate {{.Type}} + found := false + for _, v := range rcv { + if fn(v) { + if found { + err = errors.New("multiple {{.SliceName}} elements return true for passed func") + return + } + candidate = v + found = true + } + } + if found { + result = candidate + } else { + err = errors.New("no {{.SliceName}} elements return true for passed func") + } + return +} +`} diff --git a/vendor/github.com/clipperhouse/slice/slice.go b/vendor/github.com/clipperhouse/slice/slice.go new file mode 100644 index 0000000..7a941c0 --- /dev/null +++ b/vendor/github.com/clipperhouse/slice/slice.go @@ -0,0 +1,10 @@ +package slice + +import "github.com/clipperhouse/typewriter" + +var slice = &typewriter.Template{ + Name: "slice", + Text: `// {{.SliceName}} is a slice of type {{.Type}}. Use it where you would use []{{.Type}}. +type {{.SliceName}} []{{.Type}} +`, +} diff --git a/vendor/github.com/clipperhouse/slice/slicewriter.go b/vendor/github.com/clipperhouse/slice/slicewriter.go new file mode 100644 index 0000000..9b10028 --- /dev/null +++ b/vendor/github.com/clipperhouse/slice/slicewriter.go @@ -0,0 +1,139 @@ +package slice + +import ( + "io" + "regexp" + "strings" + + "github.com/clipperhouse/typewriter" +) + +func init() { + err := typewriter.Register(NewSliceWriter()) + if err != nil { + panic(err) + } +} + +func SliceName(typ typewriter.Type) string { + return typ.Name + "Slice" +} + +type SliceWriter struct{} + +func NewSliceWriter() *SliceWriter { + return &SliceWriter{} +} + +func (sw *SliceWriter) Name() string { + return "slice" +} + +func (sw *SliceWriter) Imports(typ typewriter.Type) (result []typewriter.ImportSpec) { + // typewriter uses golang.org/x/tools/imports, depend on that + return +} + +func (sw *SliceWriter) Write(w io.Writer, typ typewriter.Type) error { + tag, found := typ.FindTag(sw) + + if !found { + return nil + } + + if includeSortImplementation(tag.Values) { + s := `// Sort implementation is a modification of http://golang.org/pkg/sort/#Sort +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found at http://golang.org/LICENSE. + +` + w.Write([]byte(s)) + } + + // start with the slice template + tmpl, err := templates.ByTag(typ, tag) + + if err != nil { + return err + } + + m := model{ + Type: typ, + SliceName: SliceName(typ), + } + + if err := tmpl.Execute(w, m); err != nil { + return err + } + + for _, v := range tag.Values { + var tp typewriter.Type + + if len(v.TypeParameters) > 0 { + tp = v.TypeParameters[0] + } + + m := model{ + Type: typ, + SliceName: SliceName(typ), + TypeParameter: tp, + TagValue: v, + } + + tmpl, err := templates.ByTagValue(typ, v) + + if err != nil { + return err + } + + if err := tmpl.Execute(w, m); err != nil { + return err + } + } + + if includeSortInterface(tag.Values) { + tmpl, err := sortInterface.Parse() + + if err != nil { + return err + } + + if err := tmpl.Execute(w, m); err != nil { + return err + } + } + + if includeSortImplementation(tag.Values) { + tmpl, err := sortImplementation.Parse() + + if err != nil { + return err + } + + if err := tmpl.Execute(w, m); err != nil { + return err + } + } + + return nil +} + +func includeSortImplementation(values []typewriter.TagValue) bool { + for _, v := range values { + if strings.HasPrefix(v.Name, "SortBy") { + return true + } + } + return false +} + +func includeSortInterface(values []typewriter.TagValue) bool { + reg := regexp.MustCompile(`^Sort(Desc)?$`) + for _, v := range values { + if reg.MatchString(v.Name) { + return true + } + } + return false +} diff --git a/vendor/github.com/clipperhouse/slice/sort.go b/vendor/github.com/clipperhouse/slice/sort.go new file mode 100644 index 0000000..7d8946b --- /dev/null +++ b/vendor/github.com/clipperhouse/slice/sort.go @@ -0,0 +1,53 @@ +package slice + +import "github.com/clipperhouse/typewriter" + +var sort = &typewriter.Template{ + Name: "Sort", + Text: ` +// Sort returns a new ordered {{.SliceName}}. See: http://clipperhouse.github.io/gen/#Sort +func (rcv {{.SliceName}}) Sort() {{.SliceName}} { + result := make({{.SliceName}}, len(rcv)) + copy(result, rcv) + sort.Sort(result) + return result +} +`, + TypeConstraint: typewriter.Constraint{Ordered: true}, +} + +var isSorted = &typewriter.Template{ + Name: "IsSorted", + Text: ` +// IsSorted reports whether {{.SliceName}} is sorted. See: http://clipperhouse.github.io/gen/#Sort +func (rcv {{.SliceName}}) IsSorted() bool { + return sort.IsSorted(rcv) +} +`, + TypeConstraint: typewriter.Constraint{Ordered: true}, +} + +var sortDesc = &typewriter.Template{ + Name: "SortDesc", + Text: ` +// SortDesc returns a new reverse-ordered {{.SliceName}}. See: http://clipperhouse.github.io/gen/#Sort +func (rcv {{.SliceName}}) SortDesc() {{.SliceName}} { + result := make({{.SliceName}}, len(rcv)) + copy(result, rcv) + sort.Sort(sort.Reverse(result)) + return result +} +`, + TypeConstraint: typewriter.Constraint{Ordered: true}, +} + +var isSortedDesc = &typewriter.Template{ + Name: "IsSortedDesc", + Text: ` +// IsSortedDesc reports whether {{.SliceName}} is reverse-sorted. See: http://clipperhouse.github.io/gen/#Sort +func (rcv {{.SliceName}}) IsSortedDesc() bool { + return sort.IsSorted(sort.Reverse(rcv)) +} +`, + TypeConstraint: typewriter.Constraint{Ordered: true}, +} diff --git a/vendor/github.com/clipperhouse/slice/sortby.go b/vendor/github.com/clipperhouse/slice/sortby.go new file mode 100644 index 0000000..437beb2 --- /dev/null +++ b/vendor/github.com/clipperhouse/slice/sortby.go @@ -0,0 +1,61 @@ +package slice + +import "github.com/clipperhouse/typewriter" + +var sortBy = &typewriter.Template{ + Name: "SortBy", + Text: ` +// SortBy returns a new ordered {{.SliceName}}, determined by a func defining ‘less’. See: http://clipperhouse.github.io/gen/#SortBy +func (rcv {{.SliceName}}) SortBy(less func({{.Type}}, {{.Type}}) bool) {{.SliceName}} { + result := make({{.SliceName}}, len(rcv)) + copy(result, rcv) + // Switch to heapsort if depth of 2*ceil(lg(n+1)) is reached. + n := len(result) + maxDepth := 0 + for i := n; i > 0; i >>= 1 { + maxDepth++ + } + maxDepth *= 2 + quickSort{{.SliceName}}(result, less, 0, n, maxDepth) + return result +} +`} + +var isSortedBy = &typewriter.Template{ + Name: "IsSortedBy", + Text: ` +// IsSortedBy reports whether an instance of {{.SliceName}} is sorted, using the pass func to define ‘less’. See: http://clipperhouse.github.io/gen/#SortBy +func (rcv {{.SliceName}}) IsSortedBy(less func({{.Type}}, {{.Type}}) bool) bool { + n := len(rcv) + for i := n - 1; i > 0; i-- { + if less(rcv[i], rcv[i-1]) { + return false + } + } + return true +} +`} + +var sortByDesc = &typewriter.Template{ + Name: "SortByDesc", + Text: ` +// SortByDesc returns a new, descending-ordered {{.SliceName}}, determined by a func defining ‘less’. See: http://clipperhouse.github.io/gen/#SortBy +func (rcv {{.SliceName}}) SortByDesc(less func({{.Type}}, {{.Type}}) bool) {{.SliceName}} { + greater := func(a, b {{.Type}}) bool { + return less(b, a) + } + return rcv.SortBy(greater) +} +`} + +var isSortedByDesc = &typewriter.Template{ + Name: "IsSortedByDesc", + Text: ` +// IsSortedDesc reports whether an instance of {{.SliceName}} is sorted in descending order, using the pass func to define ‘less’. See: http://clipperhouse.github.io/gen/#SortBy +func (rcv {{.SliceName}}) IsSortedByDesc(less func({{.Type}}, {{.Type}}) bool) bool { + greater := func(a, b {{.Type}}) bool { + return less(b, a) + } + return rcv.IsSortedBy(greater) +} +`} diff --git a/vendor/github.com/clipperhouse/slice/sortimplementation.go b/vendor/github.com/clipperhouse/slice/sortimplementation.go new file mode 100644 index 0000000..1b2bf77 --- /dev/null +++ b/vendor/github.com/clipperhouse/slice/sortimplementation.go @@ -0,0 +1,180 @@ +package slice + +import "github.com/clipperhouse/typewriter" + +var sortImplementation = &typewriter.Template{ + Name: "sortImplementation", + Text: ` +// Sort implementation based on http://golang.org/pkg/sort/#Sort, see top of this file + +func swap{{.SliceName}}(rcv {{.SliceName}}, a, b int) { + rcv[a], rcv[b] = rcv[b], rcv[a] +} + +// Insertion sort +func insertionSort{{.SliceName}}(rcv {{.SliceName}}, less func({{.Type}}, {{.Type}}) bool, a, b int) { + for i := a + 1; i < b; i++ { + for j := i; j > a && less(rcv[j], rcv[j-1]); j-- { + swap{{.SliceName}}(rcv, j, j-1) + } + } +} + +// siftDown implements the heap property on rcv[lo, hi). +// first is an offset into the array where the root of the heap lies. +func siftDown{{.SliceName}}(rcv {{.SliceName}}, less func({{.Type}}, {{.Type}}) bool, lo, hi, first int) { + root := lo + for { + child := 2*root + 1 + if child >= hi { + break + } + if child+1 < hi && less(rcv[first+child], rcv[first+child+1]) { + child++ + } + if !less(rcv[first+root], rcv[first+child]) { + return + } + swap{{.SliceName}}(rcv, first+root, first+child) + root = child + } +} + +func heapSort{{.SliceName}}(rcv {{.SliceName}}, less func({{.Type}}, {{.Type}}) bool, a, b int) { + first := a + lo := 0 + hi := b - a + + // Build heap with greatest element at top. + for i := (hi - 1) / 2; i >= 0; i-- { + siftDown{{.SliceName}}(rcv, less, i, hi, first) + } + + // Pop elements, largest first, into end of rcv. + for i := hi - 1; i >= 0; i-- { + swap{{.SliceName}}(rcv, first, first+i) + siftDown{{.SliceName}}(rcv, less, lo, i, first) + } +} + +// Quicksort, following Bentley and McIlroy, +// Engineering a Sort Function, SP&E November 1993. + +// medianOfThree moves the median of the three values rcv[a], rcv[b], rcv[c] into rcv[a]. +func medianOfThree{{.SliceName}}(rcv {{.SliceName}}, less func({{.Type}}, {{.Type}}) bool, a, b, c int) { + m0 := b + m1 := a + m2 := c + // bubble sort on 3 elements + if less(rcv[m1], rcv[m0]) { + swap{{.SliceName}}(rcv, m1, m0) + } + if less(rcv[m2], rcv[m1]) { + swap{{.SliceName}}(rcv, m2, m1) + } + if less(rcv[m1], rcv[m0]) { + swap{{.SliceName}}(rcv, m1, m0) + } + // now rcv[m0] <= rcv[m1] <= rcv[m2] +} + +func swapRange{{.SliceName}}(rcv {{.SliceName}}, a, b, n int) { + for i := 0; i < n; i++ { + swap{{.SliceName}}(rcv, a+i, b+i) + } +} + +func doPivot{{.SliceName}}(rcv {{.SliceName}}, less func({{.Type}}, {{.Type}}) bool, lo, hi int) (midlo, midhi int) { + m := lo + (hi-lo)/2 // Written like this to avoid integer overflow. + if hi-lo > 40 { + // Tukey's Ninther, median of three medians of three. + s := (hi - lo) / 8 + medianOfThree{{.SliceName}}(rcv, less, lo, lo+s, lo+2*s) + medianOfThree{{.SliceName}}(rcv, less, m, m-s, m+s) + medianOfThree{{.SliceName}}(rcv, less, hi-1, hi-1-s, hi-1-2*s) + } + medianOfThree{{.SliceName}}(rcv, less, lo, m, hi-1) + + // Invariants are: + // rcv[lo] = pivot (set up by ChoosePivot) + // rcv[lo <= i < a] = pivot + // rcv[a <= i < b] < pivot + // rcv[b <= i < c] is unexamined + // rcv[c <= i < d] > pivot + // rcv[d <= i < hi] = pivot + // + // Once b meets c, can swap the "= pivot" sections + // into the middle of the slice. + pivot := lo + a, b, c, d := lo+1, lo+1, hi, hi + for { + for b < c { + if less(rcv[b], rcv[pivot]) { // rcv[b] < pivot + b++ + } else if !less(rcv[pivot], rcv[b]) { // rcv[b] = pivot + swap{{.SliceName}}(rcv, a, b) + a++ + b++ + } else { + break + } + } + for b < c { + if less(rcv[pivot], rcv[c-1]) { // rcv[c-1] > pivot + c-- + } else if !less(rcv[c-1], rcv[pivot]) { // rcv[c-1] = pivot + swap{{.SliceName}}(rcv, c-1, d-1) + c-- + d-- + } else { + break + } + } + if b >= c { + break + } + // rcv[b] > pivot; rcv[c-1] < pivot + swap{{.SliceName}}(rcv, b, c-1) + b++ + c-- + } + + min := func(a, b int) int { + if a < b { + return a + } + return b + } + + n := min(b-a, a-lo) + swapRange{{.SliceName}}(rcv, lo, b-n, n) + + n = min(hi-d, d-c) + swapRange{{.SliceName}}(rcv, c, hi-n, n) + + return lo + b - a, hi - (d - c) +} + +func quickSort{{.SliceName}}(rcv {{.SliceName}}, less func({{.Type}}, {{.Type}}) bool, a, b, maxDepth int) { + for b-a > 7 { + if maxDepth == 0 { + heapSort{{.SliceName}}(rcv, less, a, b) + return + } + maxDepth-- + mlo, mhi := doPivot{{.SliceName}}(rcv, less, a, b) + // Avoiding recursion on the larger subproblem guarantees + // a stack depth of at most lg(b-a). + if mlo-a < b-mhi { + quickSort{{.SliceName}}(rcv, less, a, mlo, maxDepth) + a = mhi // i.e., quickSort{{.SliceName}}(rcv, mhi, b) + } else { + quickSort{{.SliceName}}(rcv, less, mhi, b, maxDepth) + b = mlo // i.e., quickSort{{.SliceName}}(rcv, a, mlo) + } + } + if b-a > 1 { + insertionSort{{.SliceName}}(rcv, less, a, b) + } +} +`} diff --git a/vendor/github.com/clipperhouse/slice/sortinterface.go b/vendor/github.com/clipperhouse/slice/sortinterface.go new file mode 100644 index 0000000..a267df4 --- /dev/null +++ b/vendor/github.com/clipperhouse/slice/sortinterface.go @@ -0,0 +1,17 @@ +package slice + +import "github.com/clipperhouse/typewriter" + +var sortInterface = &typewriter.Template{ + Name: "sortInterface", + Text: ` +func (rcv {{.SliceName}}) Len() int { + return len(rcv) +} +func (rcv {{.SliceName}}) Less(i, j int) bool { + return rcv[i] < rcv[j] +} +func (rcv {{.SliceName}}) Swap(i, j int) { + rcv[i], rcv[j] = rcv[j], rcv[i] +} +`} diff --git a/vendor/github.com/clipperhouse/slice/sum.go b/vendor/github.com/clipperhouse/slice/sum.go new file mode 100644 index 0000000..c20dace --- /dev/null +++ b/vendor/github.com/clipperhouse/slice/sum.go @@ -0,0 +1,34 @@ +package slice + +import "github.com/clipperhouse/typewriter" + +var sum = &typewriter.Template{ + Name: "Sum", + Text: ` +// Sum sums {{.Type}} elements in {{.SliceName}}. See: http://clipperhouse.github.io/gen/#Sum +func (rcv {{.SliceName}}) Sum() (result {{.Type}}) { + for _, v := range rcv { + result += v + } + return +} +`, + TypeConstraint: typewriter.Constraint{Numeric: true}, +} + +var sumT = &typewriter.Template{ + Name: "Sum", + Text: ` +// Sum{{.TypeParameter.LongName}} sums {{.Type}} over elements in {{.SliceName}}. See: http://clipperhouse.github.io/gen/#Sum +func (rcv {{.SliceName}}) Sum{{.TypeParameter.LongName}}(fn func({{.Type}}) {{.TypeParameter}}) (result {{.TypeParameter}}) { + for _, v := range rcv { + result += fn(v) + } + return +} +`, + TypeParameterConstraints: []typewriter.Constraint{ + // exactly one type parameter is required, and it must be numeric + {Numeric: true}, + }, +} diff --git a/vendor/github.com/clipperhouse/slice/templates.go b/vendor/github.com/clipperhouse/slice/templates.go new file mode 100644 index 0000000..0532c50 --- /dev/null +++ b/vendor/github.com/clipperhouse/slice/templates.go @@ -0,0 +1,56 @@ +package slice + +import ( + "github.com/clipperhouse/typewriter" +) + +// a convenience for passing values into templates; in MVC it'd be called a view model +type model struct { + Type typewriter.Type + SliceName string + // these templates only ever happen to use one type parameter + TypeParameter typewriter.Type + typewriter.TagValue +} + +var templates = typewriter.TemplateSlice{ + slice, + + aggregateT, + all, + any, + average, + averageT, + count, + distinct, + distinctBy, + each, + first, + groupByT, + max, + maxT, + maxBy, + min, + minT, + minBy, + selectT, + single, + sum, + sumT, + where, + + sort, + isSorted, + sortDesc, + isSortedDesc, + + sortBy, + isSortedBy, + sortByDesc, + isSortedByDesc, + + sortImplementation, + sortInterface, + + shuffle, +} diff --git a/vendor/github.com/clipperhouse/slice/where.go b/vendor/github.com/clipperhouse/slice/where.go new file mode 100644 index 0000000..b8dd3d7 --- /dev/null +++ b/vendor/github.com/clipperhouse/slice/where.go @@ -0,0 +1,17 @@ +package slice + +import "github.com/clipperhouse/typewriter" + +var where = &typewriter.Template{ + Name: "Where", + Text: ` +// Where returns a new {{.SliceName}} whose elements return true for func. See: http://clipperhouse.github.io/gen/#Where +func (rcv {{.SliceName}}) Where(fn func({{.Type}}) bool) (result {{.SliceName}}) { + for _, v := range rcv { + if fn(v) { + result = append(result, v) + } + } + return result +} +`} diff --git a/vendor/github.com/clipperhouse/stringer/README.md b/vendor/github.com/clipperhouse/stringer/README.md new file mode 100644 index 0000000..da3b6e1 --- /dev/null +++ b/vendor/github.com/clipperhouse/stringer/README.md @@ -0,0 +1,29 @@ +stringer +======== + +This is a typewriter package for use with [gen](https://github.com/clipperhouse/gen), a tool for type-driven code generation. It is a fork of Rob Pike’s [tool](https://godoc.org/golang.org/x/tools/cmd/stringer) of the same name, which generates readable strings for consts. + +It is one of gen’s built-in typewriters. + +To use it: + +``` +go get -u github.com/clipperhouse/gen +``` + +Then, mark up a type in your package, for example: + +``` +// +gen stringer +type Pill int + +const ( + Placebo Pill = iota + Aspirin + Ibuprofen + Paracetamol + Acetaminophen = Paracetamol +) +``` + +...and run `gen` on your package. You should see a new file named `mytype_stringer.go`. See the [gen docs](https://clipperhouse.github.io/gen/) for more information. diff --git a/vendor/github.com/clipperhouse/stringer/stringer.go b/vendor/github.com/clipperhouse/stringer/stringer.go new file mode 100644 index 0000000..8eafcdc --- /dev/null +++ b/vendor/github.com/clipperhouse/stringer/stringer.go @@ -0,0 +1,569 @@ +// 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. + +// Stringer is a tool to automate the creation of methods that satisfy the fmt.Stringer +// interface. Given the name of a (signed or unsigned) integer type T that has constants +// defined, stringer will create a new self-contained Go source file implementing +// func (t T) String() string +// The file is created in the same package and directory as the package that defines T. +// It has helpful defaults designed for use with go generate. +// +// Stringer works best with constants that are consecutive values such as created using iota, +// but creates good code regardless. In the future it might also provide custom support for +// constant sets that are bit patterns. +// +// For example, given this snippet, +// +// package painkiller +// +// type Pill int +// +// const ( +// Placebo Pill = iota +// Aspirin +// Ibuprofen +// Paracetamol +// Acetaminophen = Paracetamol +// ) +// +// running this command +// +// stringer -type=Pill +// +// in the same directory will create the file pill_string.go, in package painkiller, +// containing a definition of +// +// func (Pill) String() string +// +// That method will translate the value of a Pill constant to the string representation +// of the respective constant name, so that the call fmt.Print(painkiller.Aspirin) will +// print the string "Aspirin". +// +// Typically this process would be run using go generate, like this: +// +// //go:generate stringer -type=Pill +// +// If multiple constants have the same value, the lexically first matching name will +// be used (in the example, Acetaminophen will print as "Paracetamol"). +// +// With no arguments, it processes the package in the current directory. +// Otherwise, the arguments must name a single directory holding a Go package +// or a set of Go source files that represent a single Go package. +// +// The -type flag accepts a comma-separated list of types so a single run can +// generate methods for multiple types. The default output file is t_string.go, +// where t is the lower-cased name of the first type listed. It can be overridden +// with the -output flag. +// +package stringer + +import ( + "bytes" + "fmt" + "go/ast" + "go/build" + "go/constant" + "go/format" + "go/parser" + "go/token" + "go/types" + "log" + "path/filepath" + "sort" + "strings" + + _ "golang.org/x/tools/go/gcimporter15" +) + +// Generator holds the state of the analysis. Primarily used to buffer +// the output for format.Source. +type Generator struct { + buf bytes.Buffer // Accumulated output. + pkg *Package // Package we are scanning. +} + +func (g *Generator) Printf(format string, args ...interface{}) { + fmt.Fprintf(&g.buf, format, args...) +} + +// File holds a single parsed file and associated data. +type File struct { + pkg *Package // Package to which this file belongs. + file *ast.File // Parsed AST. + // These fields are reset for each type being generated. + typeName string // Name of the constant type. + values []Value // Accumulator for constant values of that type. +} + +type Package struct { + dir string + name string + defs map[*ast.Ident]types.Object + files []*File + typesPkg *types.Package +} + +// parsePackageDir parses the package residing in the directory. +func (g *Generator) parsePackageDir(directory string) error { + pkg, err := build.Default.ImportDir(directory, 0) + if err != nil { + return err + } + var names []string + names = append(names, pkg.GoFiles...) + names = append(names, pkg.CgoFiles...) + names = append(names, pkg.TestGoFiles...) + names = append(names, pkg.SFiles...) + names = prefixDirectory(directory, names) + return g.parsePackage(directory, names, nil) +} + +// parsePackageFiles parses the package occupying the named files. +func (g *Generator) parsePackageFiles(names []string) error { + return g.parsePackage(".", names, nil) +} + +// prefixDirectory places the directory name on the beginning of each name in the list. +func prefixDirectory(directory string, names []string) []string { + if directory == "." { + return names + } + ret := make([]string, len(names)) + for i, name := range names { + ret[i] = filepath.Join(directory, name) + } + return ret +} + +// parsePackage analyzes the single package constructed from the named files. +// If text is non-nil, it is a string to be used instead of the content of the file, +// to be used for testing. parsePackage exits if there is an error. +func (g *Generator) parsePackage(directory string, names []string, text interface{}) error { + var files []*File + var astFiles []*ast.File + g.pkg = new(Package) + fs := token.NewFileSet() + for _, name := range names { + if !strings.HasSuffix(name, ".go") { + continue + } + parsedFile, err := parser.ParseFile(fs, name, text, 0) + if err != nil { + return err + } + astFiles = append(astFiles, parsedFile) + files = append(files, &File{ + file: parsedFile, + pkg: g.pkg, + }) + } + if len(astFiles) == 0 { + return fmt.Errorf("%s: no buildable Go files", directory) + } + + g.pkg.name = astFiles[0].Name.Name + g.pkg.files = files + g.pkg.dir = directory + + // Type check the package. + return g.pkg.check(fs, astFiles) +} + +// check type-checks the package. The package must be OK to proceed. +func (pkg *Package) check(fs *token.FileSet, astFiles []*ast.File) error { + pkg.defs = make(map[*ast.Ident]types.Object) + config := types.Config{FakeImportC: true} + info := &types.Info{ + Defs: pkg.defs, + } + typesPkg, err := config.Check(pkg.dir, fs, astFiles, info) + if err != nil { + return err + } + pkg.typesPkg = typesPkg + return nil +} + +// generate produces the String method for the named type. +func (g *Generator) generate(typeName string) error { + values := make([]Value, 0, 100) + + for _, file := range g.pkg.files { + // Set the state for this run of the walker. + file.typeName = typeName + file.values = nil + if file.file != nil { + var err error + // a closure to get errors back out of genDecl, + // while maintaining the func signature that + // ast.Inspect requires + f := func(node ast.Node) bool { + b, e := file.genDecl(node) + if e != nil { + err = e + } + return b + } + ast.Inspect(file.file, f) + if err != nil { + return err + } + values = append(values, file.values...) + } + } + + if len(values) == 0 { + return fmt.Errorf("no values defined for type %s", typeName) + } + runs := splitIntoRuns(values) + // The decision of which pattern to use depends on the number of + // runs in the numbers. If there's only one, it's easy. For more than + // one, there's a tradeoff between complexity and size of the data + // and code vs. the simplicity of a map. A map takes more space, + // but so does the code. The decision here (crossover at 10) is + // arbitrary, but considers that for large numbers of runs the cost + // of the linear scan in the switch might become important, and + // rather than use yet another algorithm such as binary search, + // we punt and use a map. In any case, the likelihood of a map + // being necessary for any realistic example other than bitmasks + // is very low. And bitmasks probably deserve their own analysis, + // to be done some other day. + switch { + case len(runs) == 1: + g.buildOneRun(runs, typeName) + case len(runs) <= 10: + g.buildMultipleRuns(runs, typeName) + default: + g.buildMap(runs, typeName) + } + + return nil +} + +// splitIntoRuns breaks the values into runs of contiguous sequences. +// For example, given 1,2,3,5,6,7 it returns {1,2,3},{5,6,7}. +// The input slice is known to be non-empty. +func splitIntoRuns(values []Value) [][]Value { + // We use stable sort so the lexically first name is chosen for equal elements. + sort.Stable(byValue(values)) + // Remove duplicates. Stable sort has put the one we want to print first, + // so use that one. The String method won't care about which named constant + // was the argument, so the first name for the given value is the only one to keep. + // We need to do this because identical values would cause the switch or map + // to fail to compile. + j := 1 + for i := 1; i < len(values); i++ { + if values[i].value != values[i-1].value { + values[j] = values[i] + j++ + } + } + values = values[:j] + runs := make([][]Value, 0, 10) + for len(values) > 0 { + // One contiguous sequence per outer loop. + i := 1 + for i < len(values) && values[i].value == values[i-1].value+1 { + i++ + } + runs = append(runs, values[:i]) + values = values[i:] + } + return runs +} + +// format returns the gofmt-ed contents of the Generator's buffer. +func (g *Generator) format() []byte { + src, err := format.Source(g.buf.Bytes()) + if err != nil { + // Should never happen, but can arise when developing this code. + // The user can compile the output to see the error. + log.Printf("warning: internal error: invalid Go generated: %s", err) + log.Printf("warning: compile the package to analyze the error") + return g.buf.Bytes() + } + return src +} + +// Value represents a declared constant. +type Value struct { + name string // The name of the constant. + // The value is stored as a bit pattern alone. The boolean tells us + // whether to interpret it as an int64 or a uint64; the only place + // this matters is when sorting. + // Much of the time the str field is all we need; it is printed + // by Value.String. + value uint64 // Will be converted to int64 when needed. + signed bool // Whether the constant is a signed type. + str string // The string representation given by the "go/exact" package. +} + +func (v *Value) String() string { + return v.str +} + +// byValue lets us sort the constants into increasing order. +// We take care in the Less method to sort in signed or unsigned order, +// as appropriate. +type byValue []Value + +func (b byValue) Len() int { return len(b) } +func (b byValue) Swap(i, j int) { b[i], b[j] = b[j], b[i] } +func (b byValue) Less(i, j int) bool { + if b[i].signed { + return int64(b[i].value) < int64(b[j].value) + } + return b[i].value < b[j].value +} + +// genDecl processes one declaration clause. +func (f *File) genDecl(node ast.Node) (bool, error) { + decl, ok := node.(*ast.GenDecl) + if !ok || decl.Tok != token.CONST { + // We only care about const declarations. + return true, nil + } + // The name of the type of the constants we are declaring. + // Can change if this is a multi-element declaration. + typ := "" + // Loop over the elements of the declaration. Each element is a ValueSpec: + // a list of names possibly followed by a type, possibly followed by values. + // If the type and value are both missing, we carry down the type (and value, + // but the "go/types" package takes care of that). + for _, spec := range decl.Specs { + vspec := spec.(*ast.ValueSpec) // Guaranteed to succeed as this is CONST. + if vspec.Type == nil && len(vspec.Values) > 0 { + // "X = 1". With no type but a value, the constant is untyped. + // Skip this vspec and reset the remembered type. + typ = "" + continue + } + if vspec.Type != nil { + // "X T". We have a type. Remember it. + ident, ok := vspec.Type.(*ast.Ident) + if !ok { + continue + } + typ = ident.Name + } + if typ != f.typeName { + // This is not the type we're looking for. + continue + } + // We now have a list of names (from one line of source code) all being + // declared with the desired type. + // Grab their names and actual values and store them in f.values. + for _, name := range vspec.Names { + if name.Name == "_" { + continue + } + // This dance lets the type checker find the values for us. It's a + // bit tricky: look up the object declared by the name, find its + // types.Const, and extract its value. + obj, ok := f.pkg.defs[name] + if !ok { + return false, fmt.Errorf("no value for constant %s", name) + } + info := obj.Type().Underlying().(*types.Basic).Info() + if info&types.IsInteger == 0 { + return false, fmt.Errorf("can't handle non-integer constant type %s", typ) + } + value := obj.(*types.Const).Val() // Guaranteed to succeed as this is CONST. + if value.Kind() != constant.Int { + return false, fmt.Errorf("can't happen: constant is not an integer %s", name) + } + i64, isInt := constant.Int64Val(value) + u64, isUint := constant.Uint64Val(value) + if !isInt && !isUint { + return false, fmt.Errorf("internal error: value of %s is not an integer: %s", name, value.String()) + } + if !isInt { + u64 = uint64(i64) + } + v := Value{ + name: name.Name, + value: u64, + signed: info&types.IsUnsigned == 0, + str: value.String(), + } + f.values = append(f.values, v) + } + } + return false, nil +} + +// Helpers + +// usize returns the number of bits of the smallest unsigned integer +// type that will hold n. Used to create the smallest possible slice of +// integers to use as indexes into the concatenated strings. +func usize(n int) int { + switch { + case n < 1<<8: + return 8 + case n < 1<<16: + return 16 + default: + // 2^32 is enough constants for anyone. + return 32 + } +} + +// declareIndexAndNameVars declares the index slices and concatenated names +// strings representing the runs of values. +func (g *Generator) declareIndexAndNameVars(runs [][]Value, typeName string) { + var indexes, names []string + for i, run := range runs { + index, name := g.createIndexAndNameDecl(run, typeName, fmt.Sprintf("_%d", i)) + indexes = append(indexes, index) + names = append(names, name) + } + g.Printf("const (\n") + for _, name := range names { + g.Printf("\t%s\n", name) + } + g.Printf(")\n\n") + g.Printf("var (") + for _, index := range indexes { + g.Printf("\t%s\n", index) + } + g.Printf(")\n\n") +} + +// declareIndexAndNameVar is the single-run version of declareIndexAndNameVars +func (g *Generator) declareIndexAndNameVar(run []Value, typeName string) { + index, name := g.createIndexAndNameDecl(run, typeName, "") + g.Printf("const %s\n", name) + g.Printf("var %s\n", index) +} + +// createIndexAndNameDecl returns the pair of declarations for the run. The caller will add "const" and "var". +func (g *Generator) createIndexAndNameDecl(run []Value, typeName string, suffix string) (string, string) { + b := new(bytes.Buffer) + indexes := make([]int, len(run)) + for i := range run { + b.WriteString(run[i].name) + indexes[i] = b.Len() + } + nameConst := fmt.Sprintf("_%s_name%s = %q", typeName, suffix, b.String()) + nameLen := b.Len() + b.Reset() + fmt.Fprintf(b, "_%s_index%s = [...]uint%d{0, ", typeName, suffix, usize(nameLen)) + for i, v := range indexes { + if i > 0 { + fmt.Fprintf(b, ", ") + } + fmt.Fprintf(b, "%d", v) + } + fmt.Fprintf(b, "}") + return b.String(), nameConst +} + +// declareNameVars declares the concatenated names string representing all the values in the runs. +func (g *Generator) declareNameVars(runs [][]Value, typeName string, suffix string) { + g.Printf("const _%s_name%s = \"", typeName, suffix) + for _, run := range runs { + for i := range run { + g.Printf("%s", run[i].name) + } + } + g.Printf("\"\n") +} + +// buildOneRun generates the variables and String method for a single run of contiguous values. +func (g *Generator) buildOneRun(runs [][]Value, typeName string) { + values := runs[0] + g.Printf("\n") + g.declareIndexAndNameVar(values, typeName) + // The generated code is simple enough to write as a Printf format. + lessThanZero := "" + if values[0].signed { + lessThanZero = "i < 0 || " + } + if values[0].value == 0 { // Signed or unsigned, 0 is still 0. + g.Printf(stringOneRun, typeName, usize(len(values)), lessThanZero) + } else { + g.Printf(stringOneRunWithOffset, typeName, values[0].String(), usize(len(values)), lessThanZero) + } +} + +// Arguments to format are: +// [1]: type name +// [2]: size of index element (8 for uint8 etc.) +// [3]: less than zero check (for signed types) +const stringOneRun = `func (i %[1]s) String() string { + if %[3]si+1 >= %[1]s(len(_%[1]s_index)) { + return fmt.Sprintf("%[1]s(%%d)", i) + } + return _%[1]s_name[_%[1]s_index[i]:_%[1]s_index[i+1]] +} +` + +// Arguments to format are: +// [1]: type name +// [2]: lowest defined value for type, as a string +// [3]: size of index element (8 for uint8 etc.) +// [4]: less than zero check (for signed types) +/* + */ +const stringOneRunWithOffset = `func (i %[1]s) String() string { + i -= %[2]s + if %[4]si+1 >= %[1]s(len(_%[1]s_index)) { + return fmt.Sprintf("%[1]s(%%d)", i + %[2]s) + } + return _%[1]s_name[_%[1]s_index[i] : _%[1]s_index[i+1]] +} +` + +// buildMultipleRuns generates the variables and String method for multiple runs of contiguous values. +// For this pattern, a single Printf format won't do. +func (g *Generator) buildMultipleRuns(runs [][]Value, typeName string) { + g.Printf("\n") + g.declareIndexAndNameVars(runs, typeName) + g.Printf("func (i %s) String() string {\n", typeName) + g.Printf("\tswitch {\n") + for i, values := range runs { + if len(values) == 1 { + g.Printf("\tcase i == %s:\n", &values[0]) + g.Printf("\t\treturn _%s_name_%d\n", typeName, i) + continue + } + g.Printf("\tcase %s <= i && i <= %s:\n", &values[0], &values[len(values)-1]) + if values[0].value != 0 { + g.Printf("\t\ti -= %s\n", &values[0]) + } + g.Printf("\t\treturn _%s_name_%d[_%s_index_%d[i]:_%s_index_%d[i+1]]\n", + typeName, i, typeName, i, typeName, i) + } + g.Printf("\tdefault:\n") + g.Printf("\t\treturn fmt.Sprintf(\"%s(%%d)\", i)\n", typeName) + g.Printf("\t}\n") + g.Printf("}\n") +} + +// buildMap handles the case where the space is so sparse a map is a reasonable fallback. +// It's a rare situation but has simple code. +func (g *Generator) buildMap(runs [][]Value, typeName string) { + g.Printf("\n") + g.declareNameVars(runs, typeName, "") + g.Printf("\nvar _%s_map = map[%s]string{\n", typeName, typeName) + n := 0 + for _, values := range runs { + for _, value := range values { + g.Printf("\t%s: _%s_name[%d:%d],\n", &value, typeName, n, n+len(value.name)) + n += len(value.name) + } + } + g.Printf("}\n\n") + g.Printf(stringMap, typeName) +} + +// Argument to format is the type name. +const stringMap = `func (i %[1]s) String() string { + if str, ok := _%[1]s_map[i]; ok { + return str + } + return fmt.Sprintf("%[1]s(%%d)", i) +} +` diff --git a/vendor/github.com/clipperhouse/stringer/stringerwriter.go b/vendor/github.com/clipperhouse/stringer/stringerwriter.go new file mode 100644 index 0000000..b2815e4 --- /dev/null +++ b/vendor/github.com/clipperhouse/stringer/stringerwriter.go @@ -0,0 +1,47 @@ +package stringer + +import ( + "io" + + "github.com/clipperhouse/typewriter" +) + +func init() { + typewriter.Register(&StringerWriter{}) +} + +type StringerWriter struct { + g Generator +} + +func (sw *StringerWriter) Name() string { + return "stringer" +} + +func (sw *StringerWriter) Imports(t typewriter.Type) []typewriter.ImportSpec { + return []typewriter.ImportSpec{ + {Path: "fmt"}, + } +} + +func (sw *StringerWriter) Write(w io.Writer, t typewriter.Type) error { + _, found := t.FindTag(sw) + + if !found { + return nil + } + + if err := sw.g.parsePackageDir("./"); err != nil { + return err + } + + if err := sw.g.generate(t.Name); err != nil { + return err + } + + if _, err := io.Copy(w, &sw.g.buf); err != nil { + return err + } + + return nil +} diff --git a/vendor/github.com/clipperhouse/typewriter/.gitignore b/vendor/github.com/clipperhouse/typewriter/.gitignore new file mode 100644 index 0000000..1b9f31d --- /dev/null +++ b/vendor/github.com/clipperhouse/typewriter/.gitignore @@ -0,0 +1,2 @@ + +coverage.out diff --git a/vendor/github.com/clipperhouse/typewriter/LICENSE b/vendor/github.com/clipperhouse/typewriter/LICENSE new file mode 100644 index 0000000..c12290a --- /dev/null +++ b/vendor/github.com/clipperhouse/typewriter/LICENSE @@ -0,0 +1,89 @@ +Copyright (c) 2014 Matt Sherman. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Matt Sherman nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + +Portions of this software are derived from Go source, under the following license: + +--- + +Copyright (c) 2012 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +Portions of this software are derived from https://github.com/deckarep/golang-set + +--- + +Open Source Initiative OSI - The MIT License (MIT):Licensing + +The MIT License (MIT) +Copyright (c) 2013 Ralph Caraveo (deckarep@gmail.com) + +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. \ No newline at end of file diff --git a/vendor/github.com/clipperhouse/typewriter/README.md b/vendor/github.com/clipperhouse/typewriter/README.md new file mode 100644 index 0000000..8c81ab3 --- /dev/null +++ b/vendor/github.com/clipperhouse/typewriter/README.md @@ -0,0 +1,25 @@ +##What’s this? + +Typewriter is a package to enable pluggable, type-driven codegen for Go. The envisioned use case is for generics-like functionality. This package forms the underpinning of [gen](https://github.com/clipperhouse/gen). + +Usage is analogous to how codecs work with Go’s [image](http://golang.org/pkg/image/) package, or database drivers in the [sql](http://golang.org/pkg/database/sql/) package. + + import ( + // main package + “github.com/clipperhouse/typewriter” + + // any number of typewriters + _ “github.com/clipperhouse/set” + _ “github.com/clipperhouse/linkedlist” + ) + + func main() { + app, err := typewriter.NewApp(”+gen”) + if err != nil { + panic(err) + } + + app.WriteAll() + } + +Individual typewriters register themselves to the “parent” package via their init() functions. Have a look at one of the above typewriters to get an idea. diff --git a/vendor/github.com/clipperhouse/typewriter/_gen.go b/vendor/github.com/clipperhouse/typewriter/_gen.go new file mode 100644 index 0000000..a065e55 --- /dev/null +++ b/vendor/github.com/clipperhouse/typewriter/_gen.go @@ -0,0 +1,7 @@ +package main + +import ( + _ "github.com/clipperhouse/slice" + _ "github.com/clipperhouse/set" + _ "github.com/clipperhouse/stringer" +) diff --git a/vendor/github.com/clipperhouse/typewriter/app.go b/vendor/github.com/clipperhouse/typewriter/app.go new file mode 100644 index 0000000..41d0958 --- /dev/null +++ b/vendor/github.com/clipperhouse/typewriter/app.go @@ -0,0 +1,195 @@ +package typewriter + +import ( + "bytes" + "fmt" + "go/parser" + "go/token" + "io" + "os" + "path/filepath" + "strings" + "text/template" + + "golang.org/x/tools/imports" +) + +// App is the high-level construct for package-level code generation. Typical usage is along the lines of: +// app, err := typewriter.NewApp() +// err := app.WriteAll() +// +// +test foo:"Bar" baz:"qux[struct{}],thing" +type App struct { + // All typewriter.Package found in the current directory. + Packages []*Package + // All typewriter.Interface's registered on init. + TypeWriters []Interface + Directive string +} + +// NewApp parses the current directory, enumerating registered TypeWriters and collecting Types and their related information. +func NewApp(directive string) (*App, error) { + return DefaultConfig.NewApp(directive) +} + +func (conf *Config) NewApp(directive string) (*App, error) { + a := &App{ + Directive: directive, + TypeWriters: typeWriters, + } + + pkgs, err := getPackages(directive, conf) + + a.Packages = pkgs + return a, err +} + +// NewAppFiltered parses the current directory, collecting Types and their related information. Pass a filter to limit which files are operated on. +func NewAppFiltered(directive string, filter func(os.FileInfo) bool) (*App, error) { + conf := &Config{ + Filter: filter, + } + return conf.NewApp(directive) +} + +// Individual TypeWriters register on init, keyed by name +var typeWriters []Interface + +// Register allows template packages to make themselves known to a 'parent' package, usually in the init() func. +// Comparable to the approach taken by stdlib's image package for registration of image types (eg image/png). +// Your program will do something like: +// import ( +// "github.com/clipperhouse/typewriter" +// _ "github.com/clipperhouse/slice" +// ) +func Register(tw Interface) error { + for _, v := range typeWriters { + if v.Name() == tw.Name() { + return fmt.Errorf("A TypeWriter by the name %s has already been registered", tw.Name()) + } + } + typeWriters = append(typeWriters, tw) + return nil +} + +// WriteAll writes the generated code for all Types and TypeWriters in the App to respective files. +func (a *App) WriteAll() ([]string, error) { + var written []string + + // one buffer for each file, keyed by file name + buffers := make(map[string]*bytes.Buffer) + + // write the generated code for each Type & TypeWriter into memory + for _, p := range a.Packages { + for _, t := range p.Types { + for _, tw := range a.TypeWriters { + var b bytes.Buffer + n, err := write(&b, a, p, t, tw) + + if err != nil { + return written, err + } + + // don't generate a file if no bytes were written by WriteHeader or WriteBody + if n == 0 { + continue + } + + // append _test to file name if the source type is in a _test.go file + f := strings.ToLower(fmt.Sprintf("%s_%s%s.go", t.Name, tw.Name(), t.test)) + + buffers[f] = &b + } + } + } + + // validate generated ast's before committing to files + for f, b := range buffers { + if _, err := parser.ParseFile(token.NewFileSet(), f, b.String(), 0); err != nil { + // TODO: prompt to write (ignored) _file on error? parsing errors are meaningless without. + return written, err + } + } + + // format, remove unused imports, and commit to files + for f, b := range buffers { + src, err := imports.Process(f, b.Bytes(), nil) + + // shouldn't be an error if the ast parsing above succeeded + if err != nil { + return written, err + } + + if err := writeFile(f, src); err != nil { + return written, err + } + + written = append(written, f) + } + + return written, nil +} + +var twoLines = bytes.Repeat([]byte{'\n'}, 2) + +func write(w *bytes.Buffer, a *App, p *Package, t Type, tw Interface) (n int, err error) { + // start with byline at top, give future readers some background + // on where the file came from + bylineFmt := `// Generated by: %s +// TypeWriter: %s +// Directive: %s on %s` + + caller := filepath.Base(os.Args[0]) + byline := fmt.Sprintf(bylineFmt, caller, tw.Name(), a.Directive, t.String()) + w.Write([]byte(byline)) + w.Write(twoLines) + + // add a package declaration + pkg := fmt.Sprintf("package %s", p.Name()) + w.Write([]byte(pkg)) + w.Write(twoLines) + + if err := importsTmpl.Execute(w, tw.Imports(t)); err != nil { + return n, err + } + + c := countingWriter{0, w} + err = tw.Write(&c, t) + n += c.n + + return n, err +} + +func writeFile(filename string, byts []byte) error { + w, err := os.Create(filename) + + if err != nil { + return err + } + + defer w.Close() + + w.Write(byts) + + return nil +} + +var importsTmpl = template.Must(template.New("imports").Parse(`{{if gt (len .) 0}} +import ({{range .}} + {{.Name}} "{{.Path}}"{{end}} +) +{{end}} +`)) + +// a writer that knows how much writing it did +// https://groups.google.com/forum/#!topic/golang-nuts/VQLtfRGqK8Q +type countingWriter struct { + n int + w io.Writer +} + +func (c *countingWriter) Write(p []byte) (n int, err error) { + n, err = c.w.Write(p) + c.n += n + return +} diff --git a/vendor/github.com/clipperhouse/typewriter/config.go b/vendor/github.com/clipperhouse/typewriter/config.go new file mode 100644 index 0000000..970bb63 --- /dev/null +++ b/vendor/github.com/clipperhouse/typewriter/config.go @@ -0,0 +1,10 @@ +package typewriter + +import "os" + +type Config struct { + Filter func(os.FileInfo) bool + IgnoreTypeCheckErrors bool +} + +var DefaultConfig = &Config{} diff --git a/vendor/github.com/clipperhouse/typewriter/constraint.go b/vendor/github.com/clipperhouse/typewriter/constraint.go new file mode 100644 index 0000000..0bfbd82 --- /dev/null +++ b/vendor/github.com/clipperhouse/typewriter/constraint.go @@ -0,0 +1,29 @@ +package typewriter + +import "fmt" + +// Constraint describes type requirements. +type Constraint struct { + // A numeric type is one that supports arithmetic operations. + Numeric bool + // A comparable type is one that supports the == operator. Map keys must be comparable, for example. + Comparable bool + // An ordered type is one where greater-than and less-than are supported + Ordered bool +} + +func (c Constraint) TryType(t Type) error { + if c.Comparable && !t.comparable { + return fmt.Errorf("%s must be comparable (i.e. support == and !=)", t) + } + + if c.Numeric && !t.numeric { + return fmt.Errorf("%s must be numeric", t) + } + + if c.Ordered && !t.ordered { + return fmt.Errorf("%s must be ordered (i.e. support > and <)", t) + } + + return nil +} diff --git a/vendor/github.com/clipperhouse/typewriter/importspec.go b/vendor/github.com/clipperhouse/typewriter/importspec.go new file mode 100644 index 0000000..2a8729d --- /dev/null +++ b/vendor/github.com/clipperhouse/typewriter/importspec.go @@ -0,0 +1,9 @@ +package typewriter + +// ImportSpec describes the name and path of an import. +// The name is often omitted. +// +// +gen set +type ImportSpec struct { + Name, Path string +} diff --git a/vendor/github.com/clipperhouse/typewriter/importspec_set.go b/vendor/github.com/clipperhouse/typewriter/importspec_set.go new file mode 100644 index 0000000..e827461 --- /dev/null +++ b/vendor/github.com/clipperhouse/typewriter/importspec_set.go @@ -0,0 +1,172 @@ +// Generated by: main +// TypeWriter: set +// Directive: +gen on ImportSpec + +package typewriter + +// Set is a modification of https://github.com/deckarep/golang-set +// The MIT License (MIT) +// Copyright (c) 2013 Ralph Caraveo (deckarep@gmail.com) + +// The primary type that represents a set +type ImportSpecSet map[ImportSpec]struct{} + +// Creates and returns a reference to an empty set. +func NewImportSpecSet(a ...ImportSpec) ImportSpecSet { + s := make(ImportSpecSet) + for _, i := range a { + s.Add(i) + } + return s +} + +// ToSlice returns the elements of the current set as a slice +func (set ImportSpecSet) ToSlice() []ImportSpec { + var s []ImportSpec + for v := range set { + s = append(s, v) + } + return s +} + +// Adds an item to the current set if it doesn't already exist in the set. +func (set ImportSpecSet) Add(i ImportSpec) bool { + _, found := set[i] + set[i] = struct{}{} + return !found //False if it existed already +} + +// Determines if a given item is already in the set. +func (set ImportSpecSet) Contains(i ImportSpec) bool { + _, found := set[i] + return found +} + +// Determines if the given items are all in the set +func (set ImportSpecSet) ContainsAll(i ...ImportSpec) bool { + for _, v := range i { + if !set.Contains(v) { + return false + } + } + return true +} + +// Determines if every item in the other set is in this set. +func (set ImportSpecSet) IsSubset(other ImportSpecSet) bool { + for elem := range set { + if !other.Contains(elem) { + return false + } + } + return true +} + +// Determines if every item of this set is in the other set. +func (set ImportSpecSet) IsSuperset(other ImportSpecSet) bool { + return other.IsSubset(set) +} + +// Returns a new set with all items in both sets. +func (set ImportSpecSet) Union(other ImportSpecSet) ImportSpecSet { + unionedSet := NewImportSpecSet() + + for elem := range set { + unionedSet.Add(elem) + } + for elem := range other { + unionedSet.Add(elem) + } + return unionedSet +} + +// Returns a new set with items that exist only in both sets. +func (set ImportSpecSet) Intersect(other ImportSpecSet) ImportSpecSet { + intersection := NewImportSpecSet() + // loop over smaller set + if set.Cardinality() < other.Cardinality() { + for elem := range set { + if other.Contains(elem) { + intersection.Add(elem) + } + } + } else { + for elem := range other { + if set.Contains(elem) { + intersection.Add(elem) + } + } + } + return intersection +} + +// Returns a new set with items in the current set but not in the other set +func (set ImportSpecSet) Difference(other ImportSpecSet) ImportSpecSet { + differencedSet := NewImportSpecSet() + for elem := range set { + if !other.Contains(elem) { + differencedSet.Add(elem) + } + } + return differencedSet +} + +// Returns a new set with items in the current set or the other set but not in both. +func (set ImportSpecSet) SymmetricDifference(other ImportSpecSet) ImportSpecSet { + aDiff := set.Difference(other) + bDiff := other.Difference(set) + return aDiff.Union(bDiff) +} + +// Clears the entire set to be the empty set. +func (set *ImportSpecSet) Clear() { + *set = make(ImportSpecSet) +} + +// Allows the removal of a single item in the set. +func (set ImportSpecSet) Remove(i ImportSpec) { + delete(set, i) +} + +// Cardinality returns how many items are currently in the set. +func (set ImportSpecSet) Cardinality() int { + return len(set) +} + +// Iter() returns a channel of type ImportSpec that you can range over. +func (set ImportSpecSet) Iter() <-chan ImportSpec { + ch := make(chan ImportSpec) + go func() { + for elem := range set { + ch <- elem + } + close(ch) + }() + + return ch +} + +// Equal determines if two sets are equal to each other. +// If they both are the same size and have the same items they are considered equal. +// Order of items is not relevent for sets to be equal. +func (set ImportSpecSet) Equal(other ImportSpecSet) bool { + if set.Cardinality() != other.Cardinality() { + return false + } + for elem := range set { + if !other.Contains(elem) { + return false + } + } + return true +} + +// Returns a clone of the set. +// Does NOT clone the underlying elements. +func (set ImportSpecSet) Clone() ImportSpecSet { + clonedSet := NewImportSpecSet() + for elem := range set { + clonedSet.Add(elem) + } + return clonedSet +} diff --git a/vendor/github.com/clipperhouse/typewriter/interface.go b/vendor/github.com/clipperhouse/typewriter/interface.go new file mode 100644 index 0000000..8e1d1ce --- /dev/null +++ b/vendor/github.com/clipperhouse/typewriter/interface.go @@ -0,0 +1,19 @@ +// The typewriter package provides a framework for type-driven code generation. It implements the core functionality of gen. +// +// This package is primarily of interest to those who wish to extend gen with third-party functionality. +// +// More docs are available at https://clipperhouse.github.io/gen/typewriters. +package typewriter + +import ( + "io" +) + +// Interface is the interface to be implemented for code generation via gen +type Interface interface { + Name() string + // Imports is a slice of imports required for the type; each will be written into the imports declaration. + Imports(t Type) []ImportSpec + // Write writes to the body of the generated code, following package declaration and imports. + Write(w io.Writer, t Type) error +} diff --git a/vendor/github.com/clipperhouse/typewriter/itemtype_stringer.go b/vendor/github.com/clipperhouse/typewriter/itemtype_stringer.go new file mode 100644 index 0000000..f76d654 --- /dev/null +++ b/vendor/github.com/clipperhouse/typewriter/itemtype_stringer.go @@ -0,0 +1,20 @@ +// Generated by: main +// TypeWriter: stringer +// Directive: +gen on itemType + +package typewriter + +import ( + "fmt" +) + +const _itemType_name = "itemErroritemCommentPrefixitemDirectiveitemPointeritemTagitemColonQuoteitemMinusitemTagValueitemTypeParameteritemCloseQuoteitemEOF" + +var _itemType_index = [...]uint8{0, 9, 26, 39, 50, 57, 71, 80, 92, 109, 123, 130} + +func (i itemType) String() string { + if i < 0 || i+1 >= itemType(len(_itemType_index)) { + return fmt.Sprintf("itemType(%d)", i) + } + return _itemType_name[_itemType_index[i]:_itemType_index[i+1]] +} diff --git a/vendor/github.com/clipperhouse/typewriter/lex.go b/vendor/github.com/clipperhouse/typewriter/lex.go new file mode 100644 index 0000000..86543c7 --- /dev/null +++ b/vendor/github.com/clipperhouse/typewriter/lex.go @@ -0,0 +1,343 @@ +// Derived from http://golang.org/pkg/text/template/parse/ + +// 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 typewriter + +import ( + "fmt" + "go/token" + "unicode" + "unicode/utf8" +) + +// item represents a token or text string returned from the scanner. +type item struct { + typ itemType // The type of this item. + pos token.Pos // The starting position, in bytes, of this item in the input string. + val string // The value of this item. +} + +// itemType identifies the type of lex items. +// +gen stringer +type itemType int + +const ( + itemError itemType = iota // error occurred; value is text of error + itemCommentPrefix + itemDirective + itemPointer + itemTag + itemColonQuote + itemMinus + itemTagValue + itemTypeParameter + itemCloseQuote + itemEOF +) + +const eof = -1 + +// stateFn represents the state of the scanner as a function that returns the next state. +type stateFn func(*lexer) stateFn + +// lexer holds the state of the scanner. +type lexer struct { + input string // the string being scanned + state stateFn // the next lexing function to enter + pos token.Pos // current position in the input + start token.Pos // start position of this item + width int // width of last rune read from input + lastPos token.Pos // position of most recent item returned by nextItem + items chan item // channel of scanned items + bracketDepth int +} + +// next returns the next rune in the input. +func (l *lexer) next() rune { + if int(l.pos) >= len(l.input) { + l.width = 0 + return eof + } + r, w := utf8.DecodeRuneInString(l.input[l.pos:]) + l.width = w + l.pos += token.Pos(l.width) + return r +} + +// peek returns but does not consume the next rune in the input. +func (l *lexer) peek() rune { + r := l.next() + l.backup() + return r +} + +// backup steps back one rune. Can only be called once per call of next. +func (l *lexer) backup() { + l.pos -= token.Pos(l.width) +} + +// emit passes an item back to the client. +func (l *lexer) emit(t itemType) { + l.items <- item{t, l.start, l.input[l.start:l.pos]} + l.start = l.pos +} + +// ignore skips over the pending input before this point. +func (l *lexer) ignore() { + l.start = l.pos +} + +// errorf returns an error token and terminates the scan by passing +// back a nil pointer that will be the next state, terminating l.nextItem. +func (l *lexer) errorf(format string, args ...interface{}) stateFn { + l.items <- item{itemError, l.pos, fmt.Sprintf(format, args...)} + return nil +} + +// nextItem returns the next item from the input. +func (l *lexer) nextItem() item { + item := <-l.items + l.lastPos = item.pos + return item +} + +// lex creates a new scanner for the input string. +func lex(input string) *lexer { + l := &lexer{ + input: input, + items: make(chan item), + } + go l.run() + return l +} + +// run runs the state machine for the lexer. +func (l *lexer) run() { + for l.state = lexComment; l.state != nil; { + l.state = l.state(l) + } +} + +// state functions + +func lexComment(l *lexer) stateFn { +Loop: + for { + switch r := l.next(); { + case r == eof: + break Loop + case r == '/': + return lexCommentPrefix + case r == '+': + return lexDirective + case isSpace(r): + l.ignore() + case r == '*': + l.emit(itemPointer) + p := l.peek() + if !isSpace(p) && p != eof { + return l.errorf("pointer must be followed by a space or EOL") + } + case isIdentifierPrefix(r): + l.backup() + return lexTag + default: + return l.errorf("illegal leading character '%s' in tag name", string(r)) + } + } + l.emit(itemEOF) + return nil +} + +// lexTag scans the elements inside quotes +func lexTag(l *lexer) stateFn { + for { + switch r := l.next(); { + case isIdentifierPrefix(r): + l.backup() + return lexIdentifier(l, itemTag) + case r == ':': + if n := l.next(); n != '"' { + return l.errorf(`expected " following :, got %q`, n) + } + l.emit(itemColonQuote) + return lexTagValues + case isSpace(r) || r == eof: + l.backup() + return lexComment + default: + return l.errorf("illegal character '%s' in tag name", string(r)) + } + } +} + +func lexTagValues(l *lexer) stateFn { + for { + switch r := l.next(); { + case r == '-': + l.emit(itemMinus) + case isIdentifierPrefix(r): + return lexIdentifier(l, itemTagValue) + case r == '[': + l.bracketDepth++ + // parser has no use for bracket, only important as delimiter here + l.ignore() + return lexTypeParameters + case isSpace(r) || r == ',': + // parser has no use for comma, only important as delimiter here + l.ignore() + case r == '"': + // we're done + l.emit(itemCloseQuote) + return lexComment + case r == eof: + // we fell off the end without a close quote + return lexComment + default: + return l.errorf("illegal character '%s' in tag value", string(r)) + } + } +} + +func lexTypeParameters(l *lexer) stateFn { + for { + switch r := l.next(); { + case r == ']': + if l.bracketDepth == 0 { + // closing bracket of type parameter + return lexTagValues + } + return l.errorf("additional close bracket") + case isTypeDecl(r): + l.backup() + return lexTypeDeclaration + case isSpace(r) || r == ',': + l.ignore() + case r == '"': + // premature end + return l.errorf("expected close bracket") + default: + return l.errorf("illegal character '%s' in type parameter", string(r)) + } + } +} + +func lexTypeDeclaration(l *lexer) stateFn { +Loop: + for { + switch r := l.next(); { + case r == ']': + l.bracketDepth-- + if l.bracketDepth == 0 { + // closing bracket of type parameter + break Loop + } + // if bracket depth remains > 0, it's part of the type declaration eg []string + // absorb + case isTypeDecl(r): + // absorb + if r == '[' { + l.bracketDepth++ + } + case isSpace(r) || r == ',': + // legal delimiters for multiple type parameters + break Loop + case r == '"': + // premature closing quote + break Loop + default: + // anything else is illegal + return l.errorf("illegal character '%c' in type declaration", r) + } + } + + // once we get here, we've absorbed the delimiter; backup as not to emit it + l.backup() + l.emit(itemTypeParameter) + return lexTypeParameters +} + +func lexCommentPrefix(l *lexer) stateFn { + for l.peek() == '/' { + l.next() + } + l.emit(itemCommentPrefix) + return lexComment +} + +func lexDirective(l *lexer) stateFn { + for isAlphaNumeric(l.peek()) { + l.next() + } + l.emit(itemDirective) + return lexComment +} + +// lexIdentifier scans an alphanumeric. +func lexIdentifier(l *lexer, typ itemType) stateFn { +Loop: + for { + switch r := l.next(); { + case isAlphaNumeric(r): + // absorb. + default: + if !isTerminator(r) { + return l.errorf("illegal character '%c' in identifier", r) + } + break Loop + } + } + + // once we get here, we've absorbed the delimiter; backup as not to emit it + l.backup() + l.emit(typ) + + switch typ { + case itemTag: + return lexTag + case itemTagValue: + return lexTagValues + default: + return l.errorf("unknown itemType %v", typ) + } +} + +func isTerminator(r rune) bool { + if isSpace(r) || isEndOfLine(r) { + return true + } + switch r { + case eof, ':', ',', '"', '[', ']': + return true + } + return false +} + +// isSpace reports whether r is a space character. +func isSpace(r rune) bool { + return r == ' ' || r == '\t' +} + +// isEndOfLine reports whether r is an end-of-line character. +func isEndOfLine(r rune) bool { + return r == '\r' || r == '\n' +} + +// isAlphaNumeric reports whether r is an alphabetic, digit, or underscore. +func isAlphaNumeric(r rune) bool { + return r == '_' || unicode.IsLetter(r) || unicode.IsDigit(r) +} + +// isIdentifierPrefix reports whether r is an alphabetic or underscore, per http://golang.org/ref/spec#Identifiers +func isIdentifierPrefix(r rune) bool { + return r == '_' || unicode.IsLetter(r) +} + +// isTypeDecl reports whether r a character legal in a type declaration, eg map[*Thing]interface{} +// brackets are a special case, handled in lexTypeParameter +func isTypeDecl(r rune) bool { + return r == '*' || r == '{' || r == '}' || r == '[' || r == ']' || isAlphaNumeric(r) +} diff --git a/vendor/github.com/clipperhouse/typewriter/package.go b/vendor/github.com/clipperhouse/typewriter/package.go new file mode 100644 index 0000000..68859f4 --- /dev/null +++ b/vendor/github.com/clipperhouse/typewriter/package.go @@ -0,0 +1,117 @@ +package typewriter + +import ( + "fmt" + "go/ast" + "go/token" + "strings" + + // gcimporter implements Import for gc-generated files + "go/importer" + "go/types" +) + +type evaluator interface { + Eval(string) (Type, error) +} + +func NewPackage(path, name string) *Package { + return &Package{ + types.NewPackage(path, name), + token.NewFileSet(), + []Type{}, + } +} + +type Package struct { + *types.Package + fset *token.FileSet + Types []Type +} + +type TypeCheckError struct { + err error + ignored bool +} + +func (t *TypeCheckError) Error() string { + var result string + if t.ignored { + result += "[ignored] " + } + return result + t.err.Error() +} + +func (t *TypeCheckError) addPos(fset *token.FileSet, pos token.Pos) { + // some errors come with empty pos + err := strings.TrimLeft(t.err.Error(), ":- ") + // prepend position information (file name, line, column) + t.err = fmt.Errorf("%s: %s", fset.Position(pos), err) +} + +func combine(ts []*TypeCheckError) error { + if len(ts) == 0 { + return nil + } + + var errs []string + for _, t := range ts { + errs = append(errs, t.Error()) + } + return fmt.Errorf(strings.Join(errs, "\n")) +} + +func getPackage(fset *token.FileSet, a *ast.Package, conf *Config) (*Package, *TypeCheckError) { + // pull map into a slice + var files []*ast.File + for _, f := range a.Files { + files = append(files, f) + } + + config := types.Config{ + DisableUnusedImportCheck: true, + IgnoreFuncBodies: true, + Importer: importer.Default(), + } + + if conf.IgnoreTypeCheckErrors { + // no-op allows type checking to proceed in presence of errors + // https://godoc.org/golang.org/x/tools/go/types#Config + config.Error = func(err error) {} + } + + typesPkg, err := config.Check(a.Name, fset, files, nil) + + p := &Package{typesPkg, fset, []Type{}} + + if err != nil { + return p, &TypeCheckError{err, conf.IgnoreTypeCheckErrors} + } + + return p, nil +} + +func (p *Package) Eval(name string) (Type, error) { + var result Type + + t, err := types.Eval(p.fset, p.Package, token.NoPos, name) + if err != nil { + return result, err + } + + result = Type{ + Pointer: isPointer(t.Type), + Name: strings.TrimLeft(name, Pointer(true).String()), // trims the * if it exists + comparable: isComparable(t.Type), + numeric: isNumeric(t.Type), + ordered: isOrdered(t.Type), + Type: t.Type, + } + + if isInvalid(t.Type) { + err := fmt.Errorf("invalid type: %s", name) + return result, &TypeCheckError{err, false} + } + + return result, nil +} diff --git a/vendor/github.com/clipperhouse/typewriter/parse.go b/vendor/github.com/clipperhouse/typewriter/parse.go new file mode 100644 index 0000000..189adbc --- /dev/null +++ b/vendor/github.com/clipperhouse/typewriter/parse.go @@ -0,0 +1,380 @@ +package typewriter + +import ( + "fmt" + "go/ast" + "go/parser" + "go/token" + "os" + "strings" +) + +// unlike the go build tool, the parser does not ignore . and _ files +var ignored = func(f os.FileInfo) bool { + return !strings.HasPrefix(f.Name(), "_") && !strings.HasPrefix(f.Name(), ".") +} + +func getPackages(directive string, conf *Config) ([]*Package, error) { + // wrap filter with default filter + filt := func(f os.FileInfo) bool { + if conf.Filter != nil { + return ignored(f) && conf.Filter(f) + } + return ignored(f) + } + + // get the AST + fset := token.NewFileSet() + astPkgs, err := parser.ParseDir(fset, "./", filt, parser.ParseComments) + + if err != nil { + return nil, err + } + + var pkgs []*Package + var typeCheckErrors []*TypeCheckError + + for _, a := range astPkgs { + pkg, err := getPackage(fset, a, conf) + + if err != nil { + err.ignored = conf.IgnoreTypeCheckErrors + typeCheckErrors = append(typeCheckErrors, err) + + // if we have type check errors, and are not ignoring them, bail + if err := combine(typeCheckErrors); err != nil && !conf.IgnoreTypeCheckErrors { + return pkgs, err + } + } + + pkgs = append(pkgs, pkg) + + specs := getTaggedComments(a, directive) + + for s, c := range specs { + pointer, tags, err := parse(fset, c, directive) + + if err != nil { + return nil, err + } + + // evaluate the annotated type + typ, evalErr := pkg.Eval(pointer.String() + s.Name.Name) + + if evalErr != nil { + // if we're not ignoring, can return immediately, normal behavior + if !conf.IgnoreTypeCheckErrors { + return pkgs, evalErr + } + + // is it a TypeCheckError? + tc, isTypeCheckError := evalErr.(*TypeCheckError) + + // if not a TypeCheckError, can return immediately, normal behavior + if !isTypeCheckError { + return pkgs, evalErr + } + + tc.ignored = conf.IgnoreTypeCheckErrors + tc.addPos(fset, s.Pos()) + + typeCheckErrors = append(typeCheckErrors, tc) + } + + // evaluate type parameters + for _, tag := range tags { + for i, val := range tag.Values { + for _, item := range val.typeParameters { + tp, evalErr := pkg.Eval(item.val) + + if evalErr != nil { + // if we're not ignoring, can return immediately, normal behavior + if !conf.IgnoreTypeCheckErrors { + return pkgs, evalErr + } + + // is it a TypeCheckError? + tc, isTypeCheckError := evalErr.(*TypeCheckError) + + // if not a TypeCheckError, can return immediately, normal behavior + if !isTypeCheckError { + return pkgs, evalErr + } + + tc.ignored = conf.IgnoreTypeCheckErrors + tc.addPos(fset, item.pos+c.Slash) + + typeCheckErrors = append(typeCheckErrors, tc) + } + + val.TypeParameters = append(val.TypeParameters, tp) + } + tag.Values[i] = val // mutate the original + } + typ.Tags = append(typ.Tags, tag) + } + + typ.test = test(strings.HasSuffix(fset.Position(s.Pos()).Filename, "_test.go")) + + pkg.Types = append(pkg.Types, typ) + } + } + + // if we have type check errors, but are ignoring them, output as FYI + if err := combine(typeCheckErrors); err != nil && conf.IgnoreTypeCheckErrors { + fmt.Println(err) + } + + return pkgs, nil +} + +// getTaggedComments walks the AST and returns types which have directive comment +// returns a map of TypeSpec to directive +func getTaggedComments(pkg *ast.Package, directive string) map[*ast.TypeSpec]*ast.Comment { + specs := make(map[*ast.TypeSpec]*ast.Comment) + + ast.Inspect(pkg, func(n ast.Node) bool { + g, ok := n.(*ast.GenDecl) + + // is it a type? + // http://golang.org/pkg/go/ast/#GenDecl + if !ok || g.Tok != token.TYPE { + // never mind, move on + return true + } + + if g.Lparen == 0 { + // not parenthesized, copy GenDecl.Doc into TypeSpec.Doc + g.Specs[0].(*ast.TypeSpec).Doc = g.Doc + } + + for _, s := range g.Specs { + t := s.(*ast.TypeSpec) + + if c := findAnnotation(t.Doc, directive); c != nil { + specs[t] = c + } + } + + // no need to keep walking, we don't care about TypeSpec's children + return false + }) + + return specs +} + +// findDirective return the first line of a doc which contains a directive +// the directive and '//' are removed +func findAnnotation(doc *ast.CommentGroup, directive string) *ast.Comment { + if doc == nil { + return nil + } + + // check lines of doc for directive + for _, c := range doc.List { + l := c.Text + // does the line start with the directive? + t := strings.TrimLeft(l, "/ ") + if !strings.HasPrefix(t, directive) { + continue + } + + // remove the directive from the line + t = strings.TrimPrefix(t, directive) + + // must be eof or followed by a space + if len(t) > 0 && t[0] != ' ' { + continue + } + + return c + } + + return nil +} + +type parsr struct { + lex *lexer + token [2]item // two-token lookahead for parser. + peekCount int + fset *token.FileSet + offset token.Pos +} + +// next returns the next token. +func (p *parsr) next() item { + if p.peekCount > 0 { + p.peekCount-- + } else { + p.token[0] = p.lex.nextItem() + } + return p.token[p.peekCount] +} + +// backup backs the input stream up one token. +func (p *parsr) backup() { + p.peekCount++ +} + +// peek returns but does not consume the next token. +func (p *parsr) peek() item { + if p.peekCount > 0 { + return p.token[p.peekCount-1] + } + p.peekCount = 1 + p.token[0] = p.lex.nextItem() + return p.token[0] +} + +func (p *parsr) errorf(item item, format string, args ...interface{}) error { + // some errors come with empty pos + format = strings.TrimLeft(format, ":- ") + // prepend position information (file name, line, column) + format = fmt.Sprintf("%s: %s", p.fset.Position(item.pos+p.offset), format) + return fmt.Errorf(format, args...) +} + +func (p *parsr) unexpected(item item) error { + return p.errorf(item, "unexpected '%v'", item.val) +} + +func parse(fset *token.FileSet, comment *ast.Comment, directive string) (Pointer, TagSlice, error) { + var pointer Pointer + var tags TagSlice + p := &parsr{ + lex: lex(comment.Text), + fset: fset, + offset: comment.Slash, + } + + // to ensure no duplicate tags + exists := make(map[string]struct{}) + +Loop: + for { + item := p.next() + switch item.typ { + case itemEOF: + break Loop + case itemError: + err := p.errorf(item, item.val) + return false, nil, err + case itemCommentPrefix: + // don't care, move on + continue + case itemDirective: + // is it the directive we care about? + if item.val != directive { + return false, nil, nil + } + continue + case itemPointer: + // have we already seen a pointer? + if pointer { + err := p.errorf(item, "second pointer declaration") + return false, nil, err + } + + // have we already seen tags? pointer must be first + if len(tags) > 0 { + err := p.errorf(item, "pointer declaration must precede tags") + return false, nil, err + } + + pointer = true + case itemTag: + // we have an identifier, start a tag + tag := Tag{ + Name: item.val, + } + + // check for duplicate + if _, seen := exists[tag.Name]; seen { + err := p.errorf(item, "duplicate tag %q", tag.Name) + return pointer, nil, err + } + + // mark tag as previously seen + exists[tag.Name] = struct{}{} + + // tag has values + if p.peek().typ == itemColonQuote { + p.next() // absorb the colonQuote + negated, vals, err := parseTagValues(p) + + if err != nil { + return false, nil, err + } + + tag.Negated = negated + tag.Values = vals + } + + tags = append(tags, tag) + default: + return false, nil, p.unexpected(item) + } + } + + return pointer, tags, nil +} + +func parseTagValues(p *parsr) (bool, []TagValue, error) { + var negated bool + var vals []TagValue + + for { + item := p.next() + + switch item.typ { + case itemError: + err := p.errorf(item, item.val) + return false, nil, err + case itemEOF: + // shouldn't happen within a tag + err := p.errorf(item, "expected a close quote") + return false, nil, err + case itemMinus: + if len(vals) > 0 { + err := p.errorf(item, "negation must precede tag values") + return false, nil, err + } + negated = true + case itemTagValue: + val := TagValue{ + Name: item.val, + } + + if p.peek().typ == itemTypeParameter { + tokens, err := parseTypeParameters(p) + if err != nil { + return false, nil, err + } + val.typeParameters = tokens + } + + vals = append(vals, val) + case itemCloseQuote: + // we're done + return negated, vals, nil + default: + return false, nil, p.unexpected(item) + } + } +} + +func parseTypeParameters(p *parsr) ([]item, error) { + var result []item + + for { + item := p.next() + + switch item.typ { + case itemTypeParameter: + result = append(result, item) + default: + p.backup() + return result, nil + } + } +} diff --git a/vendor/github.com/clipperhouse/typewriter/predicates.go b/vendor/github.com/clipperhouse/typewriter/predicates.go new file mode 100644 index 0000000..7c1551c --- /dev/null +++ b/vendor/github.com/clipperhouse/typewriter/predicates.go @@ -0,0 +1,37 @@ +// From: https://code.google.com/p/go/source/browse/go/types/predicates.go?repo=tools + +// 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. + +// This file implements commonly used type predicates. + +package typewriter + +import ( + "go/types" +) + +func isComparable(typ types.Type) bool { + return types.Comparable(typ) +} + +func isNumeric(typ types.Type) bool { + t, ok := typ.Underlying().(*types.Basic) + return ok && t.Info()&types.IsNumeric != 0 +} + +func isOrdered(typ types.Type) bool { + t, ok := typ.Underlying().(*types.Basic) + return ok && t.Info()&types.IsOrdered != 0 +} + +func isInvalid(typ types.Type) bool { + t, ok := typ.Underlying().(*types.Basic) + return ok && t.Kind() == types.Invalid +} + +func isPointer(typ types.Type) Pointer { + _, ok := typ.Underlying().(*types.Pointer) + return Pointer(ok) +} diff --git a/vendor/github.com/clipperhouse/typewriter/tag.go b/vendor/github.com/clipperhouse/typewriter/tag.go new file mode 100644 index 0000000..9fe85d9 --- /dev/null +++ b/vendor/github.com/clipperhouse/typewriter/tag.go @@ -0,0 +1,14 @@ +package typewriter + +// +gen slice +type Tag struct { + Name string + Values []TagValue + Negated bool +} + +type TagValue struct { + Name string + TypeParameters []Type + typeParameters []item +} diff --git a/vendor/github.com/clipperhouse/typewriter/tag_slice.go b/vendor/github.com/clipperhouse/typewriter/tag_slice.go new file mode 100644 index 0000000..57708b8 --- /dev/null +++ b/vendor/github.com/clipperhouse/typewriter/tag_slice.go @@ -0,0 +1,8 @@ +// Generated by: main +// TypeWriter: slice +// Directive: +gen on Tag + +package typewriter + +// TagSlice is a slice of type Tag. Use it where you would use []Tag. +type TagSlice []Tag diff --git a/vendor/github.com/clipperhouse/typewriter/template.go b/vendor/github.com/clipperhouse/typewriter/template.go new file mode 100644 index 0000000..e1fe81f --- /dev/null +++ b/vendor/github.com/clipperhouse/typewriter/template.go @@ -0,0 +1,101 @@ +package typewriter + +import ( + "fmt" + "strings" + + "text/template" +) + +// Template includes the text of a template as well as requirements for the types to which it can be applied. +// +gen * slice:"Where" +type Template struct { + Name, Text string + FuncMap map[string]interface{} + TypeConstraint Constraint + // Indicates both the number of required type parameters, and the constraints of each (if any) + TypeParameterConstraints []Constraint +} + +// Parse parses (converts) a typewriter.Template to a *template.Template +func (tmpl *Template) Parse() (*template.Template, error) { + return template.New(tmpl.Name).Funcs(tmpl.FuncMap).Parse(tmpl.Text) +} + +// TryTypeAndValue verifies that a given Type and TagValue satisfy a Template's type constraints. +func (tmpl *Template) TryTypeAndValue(t Type, v TagValue) error { + if err := tmpl.TypeConstraint.TryType(t); err != nil { + return fmt.Errorf("cannot apply %s to %s: %s", v.Name, t, err) + } + + if len(tmpl.TypeParameterConstraints) != len(v.TypeParameters) { + return fmt.Errorf("%s requires %d type parameters", v.Name, len(v.TypeParameters)) + } + + for i := range v.TypeParameters { + c := tmpl.TypeParameterConstraints[i] + tp := v.TypeParameters[i] + if err := c.TryType(tp); err != nil { + return fmt.Errorf("cannot apply %s on %s: %s", v, t, err) + } + } + + return nil +} + +// Funcs assigns non standard functions used in the template +func (ts TemplateSlice) Funcs(FuncMap map[string]interface{}) { + for _, tmpl := range ts { + tmpl.FuncMap = FuncMap + } +} + +// ByTag attempts to locate a template which meets type constraints, and parses it. +func (ts TemplateSlice) ByTag(t Type, tag Tag) (*template.Template, error) { + // templates which might work + candidates := ts.Where(func(tmpl *Template) bool { + return strings.EqualFold(tmpl.Name, tag.Name) + }) + + if len(candidates) == 0 { + err := fmt.Errorf("could not find template for %q", tag.Name) + return nil, err + } + + // try to find one that meets type constraints + for _, tmpl := range candidates { + if err := tmpl.TypeConstraint.TryType(t); err == nil { + // eagerly return on success + return tmpl.Parse() + } + } + + // send back the first error message; not great but OK most of the time + return nil, candidates[0].TypeConstraint.TryType(t) +} + +// ByTagValue attempts to locate a template which meets type constraints, and parses it. +func (ts TemplateSlice) ByTagValue(t Type, v TagValue) (*template.Template, error) { + // a bit of poor-man's type resolution here + + // templates which might work + candidates := ts.Where(func(tmpl *Template) bool { + return strings.EqualFold(tmpl.Name, v.Name) + }) + + if len(candidates) == 0 { + err := fmt.Errorf("%s is unknown", v.Name) + return nil, err + } + + // try to find one that meets type constraints + for _, tmpl := range candidates { + if err := tmpl.TryTypeAndValue(t, v); err == nil { + // eagerly return on success + return tmpl.Parse() + } + } + + // send back the first error message; not great but OK most of the time + return nil, candidates[0].TryTypeAndValue(t, v) +} diff --git a/vendor/github.com/clipperhouse/typewriter/template_slice.go b/vendor/github.com/clipperhouse/typewriter/template_slice.go new file mode 100644 index 0000000..cf0a8a1 --- /dev/null +++ b/vendor/github.com/clipperhouse/typewriter/template_slice.go @@ -0,0 +1,18 @@ +// Generated by: main +// TypeWriter: slice +// Directive: +gen on *Template + +package typewriter + +// TemplateSlice is a slice of type *Template. Use it where you would use []*Template. +type TemplateSlice []*Template + +// Where returns a new TemplateSlice whose elements return true for func. See: http://clipperhouse.github.io/gen/#Where +func (rcv TemplateSlice) Where(fn func(*Template) bool) (result TemplateSlice) { + for _, v := range rcv { + if fn(v) { + result = append(result, v) + } + } + return result +} diff --git a/vendor/github.com/clipperhouse/typewriter/test.bat b/vendor/github.com/clipperhouse/typewriter/test.bat new file mode 100644 index 0000000..c9f805a --- /dev/null +++ b/vendor/github.com/clipperhouse/typewriter/test.bat @@ -0,0 +1,4 @@ +@echo off +go get +go test -coverprofile=coverage.out +go tool cover -html=coverage.out diff --git a/vendor/github.com/clipperhouse/typewriter/test.sh b/vendor/github.com/clipperhouse/typewriter/test.sh new file mode 100644 index 0000000..92912d7 --- /dev/null +++ b/vendor/github.com/clipperhouse/typewriter/test.sh @@ -0,0 +1,4 @@ +go get +touch coverage.out +go test -coverprofile=coverage.out +go tool cover -html=coverage.out diff --git a/vendor/github.com/clipperhouse/typewriter/type.go b/vendor/github.com/clipperhouse/typewriter/type.go new file mode 100644 index 0000000..41c7180 --- /dev/null +++ b/vendor/github.com/clipperhouse/typewriter/type.go @@ -0,0 +1,68 @@ +package typewriter + +import ( + "fmt" + "regexp" + "strings" + + "go/types" +) + +type Type struct { + Pointer Pointer + Name string + Tags TagSlice + comparable, numeric, ordered bool + test test + types.Type +} + +type test bool + +// a convenience for using bool in file name, see WriteAll +func (t test) String() string { + if t { + return "_test" + } + return "" +} + +func (t Type) String() (result string) { + return fmt.Sprintf("%s%s", t.Pointer.String(), t.Name) +} + +// LongName provides a name that may be useful for generated names. +// For example, map[string]Foo becomes MapStringFoo. +func (t Type) LongName() string { + s := strings.Replace(t.String(), "[]", "Slice[]", -1) // hacktastic + + r := regexp.MustCompile(`[\[\]{}*]`) + els := r.Split(s, -1) + + var parts []string + + for _, s := range els { + parts = append(parts, strings.Title(s)) + } + + return strings.Join(parts, "") +} + +func (t Type) FindTag(tw Interface) (Tag, bool) { + for _, tag := range t.Tags { + if tag.Name == tw.Name() { + return tag, true + } + } + return Tag{}, false +} + +// Pointer exists as a type to allow simple use as bool or as String, which returns * +type Pointer bool + +func (p Pointer) String() string { + if p { + return "*" + } + return "" +} diff --git a/vendor/github.com/codahale/chacha20/.gitignore b/vendor/github.com/codahale/chacha20/.gitignore new file mode 100644 index 0000000..008d117 --- /dev/null +++ b/vendor/github.com/codahale/chacha20/.gitignore @@ -0,0 +1,3 @@ +*.test +*.out +*.6 diff --git a/vendor/github.com/codahale/chacha20/.travis.yml b/vendor/github.com/codahale/chacha20/.travis.yml new file mode 100644 index 0000000..78781ec --- /dev/null +++ b/vendor/github.com/codahale/chacha20/.travis.yml @@ -0,0 +1,10 @@ +language: go +go: + - 1.3.3 + - 1.4rc1 +notifications: + # See http://about.travis-ci.org/docs/user/build-configuration/ to learn more + # about configuring notification recipients and more. + email: + recipients: + - coda.hale@gmail.com diff --git a/vendor/github.com/codahale/chacha20/LICENSE b/vendor/github.com/codahale/chacha20/LICENSE new file mode 100644 index 0000000..f9835c2 --- /dev/null +++ b/vendor/github.com/codahale/chacha20/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Coda Hale + +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/codahale/chacha20/README.md b/vendor/github.com/codahale/chacha20/README.md new file mode 100644 index 0000000..e0cc2ec --- /dev/null +++ b/vendor/github.com/codahale/chacha20/README.md @@ -0,0 +1,8 @@ +chacha20 +======== + +[![Build Status](https://travis-ci.org/codahale/chacha20.png?branch=master)](https://travis-ci.org/codahale/chacha20) + +A pure Go implementation of the ChaCha20 stream cipher. + +For documentation, check [godoc](http://godoc.org/github.com/codahale/chacha20). diff --git a/vendor/github.com/codahale/chacha20/chacha20.go b/vendor/github.com/codahale/chacha20/chacha20.go new file mode 100644 index 0000000..ae671bc --- /dev/null +++ b/vendor/github.com/codahale/chacha20/chacha20.go @@ -0,0 +1,235 @@ +// Package chacha20 provides a pure Go implementation of ChaCha20, a fast, +// secure stream cipher. +// +// From Bernstein, Daniel J. "ChaCha, a variant of Salsa20." Workshop Record of +// SASC. 2008. (http://cr.yp.to/chacha/chacha-20080128.pdf): +// +// ChaCha8 is a 256-bit stream cipher based on the 8-round cipher Salsa20/8. +// The changes from Salsa20/8 to ChaCha8 are designed to improve diffusion per +// round, conjecturally increasing resistance to cryptanalysis, while +// preserving -- and often improving -- time per round. ChaCha12 and ChaCha20 +// are analogous modifications of the 12-round and 20-round ciphers Salsa20/12 +// and Salsa20/20. This paper presents the ChaCha family and explains the +// differences between Salsa20 and ChaCha. +// +// For more information, see http://cr.yp.to/chacha.html +package chacha20 + +import ( + "crypto/cipher" + "encoding/binary" + "errors" + "unsafe" +) + +const ( + // KeySize is the length of ChaCha20 keys, in bytes. + KeySize = 32 + // NonceSize is the length of ChaCha20 nonces, in bytes. + NonceSize = 8 + // XNonceSize is the length of XChaCha20 nonces, in bytes. + XNonceSize = 24 +) + +var ( + // ErrInvalidKey is returned when the provided key is not 256 bits long. + ErrInvalidKey = errors.New("invalid key length (must be 256 bits)") + // ErrInvalidNonce is returned when the provided nonce is not 64 bits long. + ErrInvalidNonce = errors.New("invalid nonce length (must be 64 bits)") + // ErrInvalidXNonce is returned when the provided nonce is not 192 bits + // long. + ErrInvalidXNonce = errors.New("invalid nonce length (must be 192 bits)") + // ErrInvalidRounds is returned when the provided rounds is not + // 8, 12, or 20. + ErrInvalidRounds = errors.New("invalid rounds number (must be 8, 12, or 20)") +) + +// New creates and returns a new cipher.Stream. The key argument must be 256 +// bits long, and the nonce argument must be 64 bits long. The nonce must be +// randomly generated or used only once. This Stream instance must not be used +// to encrypt more than 2^70 bytes (~1 zettabyte). +func New(key []byte, nonce []byte) (cipher.Stream, error) { + return NewWithRounds(key, nonce, 20) +} + +// NewWithRounds creates and returns a new cipher.Stream just like New but +// the rounds number of 8, 12, or 20 can be specified. +func NewWithRounds(key []byte, nonce []byte, rounds uint8) (cipher.Stream, error) { + if len(key) != KeySize { + return nil, ErrInvalidKey + } + + if len(nonce) != NonceSize { + return nil, ErrInvalidNonce + } + + if (rounds != 8) && (rounds != 12) && (rounds != 20) { + return nil, ErrInvalidRounds + } + + s := new(stream) + s.init(key, nonce, rounds) + s.advance() + + return s, nil +} + +// NewXChaCha creates and returns a new cipher.Stream. The key argument must be +// 256 bits long, and the nonce argument must be 192 bits long. The nonce must +// be randomly generated or only used once. This Stream instance must not be +// used to encrypt more than 2^70 bytes (~1 zetta byte). +func NewXChaCha(key []byte, nonce []byte) (cipher.Stream, error) { + return NewXChaChaWithRounds(key, nonce, 20) +} + +// NewXChaChaWithRounds creates and returns a new cipher.Stream just like +// NewXChaCha but the rounds number of 8, 12, or 20 can be specified. +func NewXChaChaWithRounds(key []byte, nonce []byte, rounds uint8) (cipher.Stream, error) { + if len(key) != KeySize { + return nil, ErrInvalidKey + } + + if len(nonce) != XNonceSize { + return nil, ErrInvalidXNonce + } + + if (rounds != 8) && (rounds != 12) && (rounds != 20) { + return nil, ErrInvalidRounds + } + + s := new(stream) + s.init(key, nonce, rounds) + + // Call HChaCha to derive the subkey using the key and the first 16 bytes + // of the nonce, and re-initialize the state using the subkey and the + // remaining nonce. + blockArr := (*[stateSize]uint32)(unsafe.Pointer(&s.block)) + core(&s.state, blockArr, s.rounds, true) + copy(s.state[4:8], blockArr[0:4]) + copy(s.state[8:12], blockArr[12:16]) + s.state[12] = 0 + s.state[13] = 0 + s.state[14] = binary.LittleEndian.Uint32(nonce[16:]) + s.state[15] = binary.LittleEndian.Uint32(nonce[20:]) + + s.advance() + + return s, nil +} + +type stream struct { + state [stateSize]uint32 // the state as an array of 16 32-bit words + block [blockSize]byte // the keystream as an array of 64 bytes + offset int // the offset of used bytes in block + rounds uint8 +} + +func (s *stream) XORKeyStream(dst, src []byte) { + // Stride over the input in 64-byte blocks, minus the amount of keystream + // previously used. This will produce best results when processing blocks + // of a size evenly divisible by 64. + i := 0 + max := len(src) + for i < max { + gap := blockSize - s.offset + + limit := i + gap + if limit > max { + limit = max + } + + o := s.offset + for j := i; j < limit; j++ { + dst[j] = src[j] ^ s.block[o] + o++ + } + + i += gap + s.offset = o + + if o == blockSize { + s.advance() + } + } +} + +func (s *stream) init(key []byte, nonce []byte, rounds uint8) { + // the magic constants for 256-bit keys + s.state[0] = 0x61707865 + s.state[1] = 0x3320646e + s.state[2] = 0x79622d32 + s.state[3] = 0x6b206574 + + s.state[4] = binary.LittleEndian.Uint32(key[0:]) + s.state[5] = binary.LittleEndian.Uint32(key[4:]) + s.state[6] = binary.LittleEndian.Uint32(key[8:]) + s.state[7] = binary.LittleEndian.Uint32(key[12:]) + s.state[8] = binary.LittleEndian.Uint32(key[16:]) + s.state[9] = binary.LittleEndian.Uint32(key[20:]) + s.state[10] = binary.LittleEndian.Uint32(key[24:]) + s.state[11] = binary.LittleEndian.Uint32(key[28:]) + + switch len(nonce) { + case NonceSize: + // ChaCha20 uses 8 byte nonces. + s.state[12] = 0 + s.state[13] = 0 + s.state[14] = binary.LittleEndian.Uint32(nonce[0:]) + s.state[15] = binary.LittleEndian.Uint32(nonce[4:]) + case XNonceSize: + // XChaCha20 derives the subkey via HChaCha initialized + // with the first 16 bytes of the nonce. + s.state[12] = binary.LittleEndian.Uint32(nonce[0:]) + s.state[13] = binary.LittleEndian.Uint32(nonce[4:]) + s.state[14] = binary.LittleEndian.Uint32(nonce[8:]) + s.state[15] = binary.LittleEndian.Uint32(nonce[12:]) + default: + // Never happens, both ctors validate the nonce length. + panic("invalid nonce size") + } + + s.rounds = rounds +} + +// BUG(codahale): Totally untested on big-endian CPUs. Would very much +// appreciate someone with an ARM device giving this a swing. + +// advances the keystream +func (s *stream) advance() { + core(&s.state, (*[stateSize]uint32)(unsafe.Pointer(&s.block)), s.rounds, false) + + if bigEndian { + j := blockSize - 1 + for i := 0; i < blockSize/2; i++ { + s.block[j], s.block[i] = s.block[i], s.block[j] + j-- + } + } + + s.offset = 0 + i := s.state[12] + 1 + s.state[12] = i + if i == 0 { + s.state[13]++ + } +} + +const ( + wordSize = 4 // the size of ChaCha20's words + stateSize = 16 // the size of ChaCha20's state, in words + blockSize = stateSize * wordSize // the size of ChaCha20's block, in bytes +) + +var ( + bigEndian bool // whether or not we're running on a bigEndian CPU +) + +// Do some up-front bookkeeping on what sort of CPU we're using. ChaCha20 treats +// its state as a little-endian byte array when it comes to generating the +// keystream, which allows for a zero-copy approach to the core transform. On +// big-endian architectures, we have to take a hit to reverse the bytes. +func init() { + x := uint32(0x04030201) + y := [4]byte{0x1, 0x2, 0x3, 0x4} + bigEndian = *(*[4]byte)(unsafe.Pointer(&x)) != y +} diff --git a/vendor/github.com/codahale/chacha20/core_ref.go b/vendor/github.com/codahale/chacha20/core_ref.go new file mode 100644 index 0000000..84f5e6c --- /dev/null +++ b/vendor/github.com/codahale/chacha20/core_ref.go @@ -0,0 +1,166 @@ +// The ChaCha20 core transform. +// An unrolled and inlined implementation in pure Go. + +package chacha20 + +func core(input, output *[stateSize]uint32, rounds uint8, hchacha bool) { + var ( + x00 = input[0] + x01 = input[1] + x02 = input[2] + x03 = input[3] + x04 = input[4] + x05 = input[5] + x06 = input[6] + x07 = input[7] + x08 = input[8] + x09 = input[9] + x10 = input[10] + x11 = input[11] + x12 = input[12] + x13 = input[13] + x14 = input[14] + x15 = input[15] + ) + + var x uint32 + + // Unrolling all 20 rounds kills performance on modern Intel processors + // (Tested on a i5 Haswell, likely applies to Sandy Bridge+), due to uop + // cache thrashing. The straight forward 2 rounds per loop implementation + // of this has double the performance of the fully unrolled version. + for i := uint8(0); i < rounds; i += 2 { + x00 += x04 + x = x12 ^ x00 + x12 = (x << 16) | (x >> 16) + x08 += x12 + x = x04 ^ x08 + x04 = (x << 12) | (x >> 20) + x00 += x04 + x = x12 ^ x00 + x12 = (x << 8) | (x >> 24) + x08 += x12 + x = x04 ^ x08 + x04 = (x << 7) | (x >> 25) + x01 += x05 + x = x13 ^ x01 + x13 = (x << 16) | (x >> 16) + x09 += x13 + x = x05 ^ x09 + x05 = (x << 12) | (x >> 20) + x01 += x05 + x = x13 ^ x01 + x13 = (x << 8) | (x >> 24) + x09 += x13 + x = x05 ^ x09 + x05 = (x << 7) | (x >> 25) + x02 += x06 + x = x14 ^ x02 + x14 = (x << 16) | (x >> 16) + x10 += x14 + x = x06 ^ x10 + x06 = (x << 12) | (x >> 20) + x02 += x06 + x = x14 ^ x02 + x14 = (x << 8) | (x >> 24) + x10 += x14 + x = x06 ^ x10 + x06 = (x << 7) | (x >> 25) + x03 += x07 + x = x15 ^ x03 + x15 = (x << 16) | (x >> 16) + x11 += x15 + x = x07 ^ x11 + x07 = (x << 12) | (x >> 20) + x03 += x07 + x = x15 ^ x03 + x15 = (x << 8) | (x >> 24) + x11 += x15 + x = x07 ^ x11 + x07 = (x << 7) | (x >> 25) + x00 += x05 + x = x15 ^ x00 + x15 = (x << 16) | (x >> 16) + x10 += x15 + x = x05 ^ x10 + x05 = (x << 12) | (x >> 20) + x00 += x05 + x = x15 ^ x00 + x15 = (x << 8) | (x >> 24) + x10 += x15 + x = x05 ^ x10 + x05 = (x << 7) | (x >> 25) + x01 += x06 + x = x12 ^ x01 + x12 = (x << 16) | (x >> 16) + x11 += x12 + x = x06 ^ x11 + x06 = (x << 12) | (x >> 20) + x01 += x06 + x = x12 ^ x01 + x12 = (x << 8) | (x >> 24) + x11 += x12 + x = x06 ^ x11 + x06 = (x << 7) | (x >> 25) + x02 += x07 + x = x13 ^ x02 + x13 = (x << 16) | (x >> 16) + x08 += x13 + x = x07 ^ x08 + x07 = (x << 12) | (x >> 20) + x02 += x07 + x = x13 ^ x02 + x13 = (x << 8) | (x >> 24) + x08 += x13 + x = x07 ^ x08 + x07 = (x << 7) | (x >> 25) + x03 += x04 + x = x14 ^ x03 + x14 = (x << 16) | (x >> 16) + x09 += x14 + x = x04 ^ x09 + x04 = (x << 12) | (x >> 20) + x03 += x04 + x = x14 ^ x03 + x14 = (x << 8) | (x >> 24) + x09 += x14 + x = x04 ^ x09 + x04 = (x << 7) | (x >> 25) + } + + if !hchacha { + output[0] = x00 + input[0] + output[1] = x01 + input[1] + output[2] = x02 + input[2] + output[3] = x03 + input[3] + output[4] = x04 + input[4] + output[5] = x05 + input[5] + output[6] = x06 + input[6] + output[7] = x07 + input[7] + output[8] = x08 + input[8] + output[9] = x09 + input[9] + output[10] = x10 + input[10] + output[11] = x11 + input[11] + output[12] = x12 + input[12] + output[13] = x13 + input[13] + output[14] = x14 + input[14] + output[15] = x15 + input[15] + } else { + output[0] = x00 + output[1] = x01 + output[2] = x02 + output[3] = x03 + output[4] = x04 + output[5] = x05 + output[6] = x06 + output[7] = x07 + output[8] = x08 + output[9] = x09 + output[10] = x10 + output[11] = x11 + output[12] = x12 + output[13] = x13 + output[14] = x14 + output[15] = x15 + } +} diff --git a/vendor/github.com/ginuerzh/gosocks5/.gitignore b/vendor/github.com/ginuerzh/gosocks5/.gitignore new file mode 100644 index 0000000..8365624 --- /dev/null +++ b/vendor/github.com/ginuerzh/gosocks5/.gitignore @@ -0,0 +1,23 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test diff --git a/vendor/github.com/ginuerzh/gosocks5/LICENSE b/vendor/github.com/ginuerzh/gosocks5/LICENSE new file mode 100644 index 0000000..36c9d98 --- /dev/null +++ b/vendor/github.com/ginuerzh/gosocks5/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 郑锐 + +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. \ No newline at end of file diff --git a/vendor/github.com/ginuerzh/gosocks5/README.md b/vendor/github.com/ginuerzh/gosocks5/README.md new file mode 100644 index 0000000..9192c60 --- /dev/null +++ b/vendor/github.com/ginuerzh/gosocks5/README.md @@ -0,0 +1,4 @@ +gosocks5 +======== + +golang and SOCKSV5 diff --git a/vendor/github.com/ginuerzh/gosocks5/conn.go b/vendor/github.com/ginuerzh/gosocks5/conn.go new file mode 100644 index 0000000..d20ca2b --- /dev/null +++ b/vendor/github.com/ginuerzh/gosocks5/conn.go @@ -0,0 +1,171 @@ +package gosocks5 + +import ( + "io" + //"log" + "net" + "sync" + "time" +) + +type Selector interface { + // return supported methods + Methods() []uint8 + // select method + Select(methods ...uint8) (method uint8) + // on method selected + OnSelected(method uint8, conn net.Conn) (net.Conn, error) +} + +type Conn struct { + c net.Conn + selector Selector + method uint8 + isClient bool + handshaked bool + handshakeMutex sync.Mutex + handshakeErr error +} + +func ClientConn(conn net.Conn, selector Selector) *Conn { + return &Conn{ + c: conn, + selector: selector, + isClient: true, + } +} + +func ServerConn(conn net.Conn, selector Selector) *Conn { + return &Conn{ + c: conn, + selector: selector, + } +} + +func (conn *Conn) Handleshake() error { + conn.handshakeMutex.Lock() + defer conn.handshakeMutex.Unlock() + + if err := conn.handshakeErr; err != nil { + return err + } + if conn.handshaked { + return nil + } + + if conn.isClient { + conn.handshakeErr = conn.clientHandshake() + } else { + conn.handshakeErr = conn.serverHandshake() + } + + return conn.handshakeErr +} + +func (conn *Conn) clientHandshake() error { + var methods []uint8 + var nm int + + if conn.selector != nil { + methods = conn.selector.Methods() + } + nm = len(methods) + if nm == 0 { + nm = 1 + } + + b := make([]byte, 2+nm) + b[0] = Ver5 + b[1] = uint8(nm) + copy(b[2:], methods) + + if _, err := conn.c.Write(b); err != nil { + return err + } + + if _, err := io.ReadFull(conn.c, b[:2]); err != nil { + return err + } + + if b[0] != Ver5 { + return ErrBadVersion + } + + if conn.selector != nil { + c, err := conn.selector.OnSelected(b[1], conn.c) + if err != nil { + return err + } + conn.c = c + } + conn.method = b[1] + //log.Println("method:", conn.method) + conn.handshaked = true + return nil +} + +func (conn *Conn) serverHandshake() error { + methods, err := ReadMethods(conn.c) + if err != nil { + return err + } + + method := MethodNoAuth + if conn.selector != nil { + method = conn.selector.Select(methods...) + } + + if _, err := conn.c.Write([]byte{Ver5, method}); err != nil { + return err + } + + if conn.selector != nil { + c, err := conn.selector.OnSelected(method, conn.c) + if err != nil { + return err + } + conn.c = c + } + conn.method = method + //log.Println("method:", method) + conn.handshaked = true + return nil +} + +func (conn *Conn) Read(b []byte) (n int, err error) { + if err = conn.Handleshake(); err != nil { + return + } + return conn.c.Read(b) +} + +func (conn *Conn) Write(b []byte) (n int, err error) { + if err = conn.Handleshake(); err != nil { + return + } + return conn.c.Write(b) +} + +func (conn *Conn) Close() error { + return conn.c.Close() +} + +func (conn *Conn) LocalAddr() net.Addr { + return conn.c.LocalAddr() +} + +func (conn *Conn) RemoteAddr() net.Addr { + return conn.c.RemoteAddr() +} + +func (conn *Conn) SetDeadline(t time.Time) error { + return conn.c.SetDeadline(t) +} + +func (conn *Conn) SetReadDeadline(t time.Time) error { + return conn.c.SetReadDeadline(t) +} + +func (conn *Conn) SetWriteDeadline(t time.Time) error { + return conn.c.SetWriteDeadline(t) +} diff --git a/vendor/github.com/ginuerzh/gosocks5/rfc1928.txt b/vendor/github.com/ginuerzh/gosocks5/rfc1928.txt new file mode 100644 index 0000000..46bf46e --- /dev/null +++ b/vendor/github.com/ginuerzh/gosocks5/rfc1928.txt @@ -0,0 +1,507 @@ + + + + + + +Network Working Group M. Leech +Request for Comments: 1928 Bell-Northern Research Ltd +Category: Standards Track M. Ganis + International Business Machines + Y. Lee + NEC Systems Laboratory + R. Kuris + Unify Corporation + D. Koblas + Independent Consultant + L. Jones + Hewlett-Packard Company + March 1996 + + + SOCKS Protocol Version 5 + +Status of this Memo + + This document specifies an Internet standards track protocol for the + Internet community, and requests discussion and suggestions for + improvements. Please refer to the current edition of the "Internet + Official Protocol Standards" (STD 1) for the standardization state + and status of this protocol. Distribution of this memo is unlimited. + +Acknowledgments + + This memo describes a protocol that is an evolution of the previous + version of the protocol, version 4 [1]. This new protocol stems from + active discussions and prototype implementations. The key + contributors are: Marcus Leech: Bell-Northern Research, David Koblas: + Independent Consultant, Ying-Da Lee: NEC Systems Laboratory, LaMont + Jones: Hewlett-Packard Company, Ron Kuris: Unify Corporation, Matt + Ganis: International Business Machines. + +1. Introduction + + The use of network firewalls, systems that effectively isolate an + organizations internal network structure from an exterior network, + such as the INTERNET is becoming increasingly popular. These + firewall systems typically act as application-layer gateways between + networks, usually offering controlled TELNET, FTP, and SMTP access. + With the emergence of more sophisticated application layer protocols + designed to facilitate global information discovery, there exists a + need to provide a general framework for these protocols to + transparently and securely traverse a firewall. + + + + + +Leech, et al Standards Track [Page 1] + +RFC 1928 SOCKS Protocol Version 5 March 1996 + + + There exists, also, a need for strong authentication of such + traversal in as fine-grained a manner as is practical. This + requirement stems from the realization that client-server + relationships emerge between the networks of various organizations, + and that such relationships need to be controlled and often strongly + authenticated. + + The protocol described here is designed to provide a framework for + client-server applications in both the TCP and UDP domains to + conveniently and securely use the services of a network firewall. + The protocol is conceptually a "shim-layer" between the application + layer and the transport layer, and as such does not provide network- + layer gateway services, such as forwarding of ICMP messages. + +2. Existing practice + + There currently exists a protocol, SOCKS Version 4, that provides for + unsecured firewall traversal for TCP-based client-server + applications, including TELNET, FTP and the popular information- + discovery protocols such as HTTP, WAIS and GOPHER. + + This new protocol extends the SOCKS Version 4 model to include UDP, + and extends the framework to include provisions for generalized + strong authentication schemes, and extends the addressing scheme to + encompass domain-name and V6 IP addresses. + + The implementation of the SOCKS protocol typically involves the + recompilation or relinking of TCP-based client applications to use + the appropriate encapsulation routines in the SOCKS library. + +Note: + + Unless otherwise noted, the decimal numbers appearing in packet- + format diagrams represent the length of the corresponding field, in + octets. Where a given octet must take on a specific value, the + syntax X'hh' is used to denote the value of the single octet in that + field. When the word 'Variable' is used, it indicates that the + corresponding field has a variable length defined either by an + associated (one or two octet) length field, or by a data type field. + +3. Procedure for TCP-based clients + + When a TCP-based client wishes to establish a connection to an object + that is reachable only via a firewall (such determination is left up + to the implementation), it must open a TCP connection to the + appropriate SOCKS port on the SOCKS server system. The SOCKS service + is conventionally located on TCP port 1080. If the connection + request succeeds, the client enters a negotiation for the + + + +Leech, et al Standards Track [Page 2] + +RFC 1928 SOCKS Protocol Version 5 March 1996 + + + authentication method to be used, authenticates with the chosen + method, then sends a relay request. The SOCKS server evaluates the + request, and either establishes the appropriate connection or denies + it. + + Unless otherwise noted, the decimal numbers appearing in packet- + format diagrams represent the length of the corresponding field, in + octets. Where a given octet must take on a specific value, the + syntax X'hh' is used to denote the value of the single octet in that + field. When the word 'Variable' is used, it indicates that the + corresponding field has a variable length defined either by an + associated (one or two octet) length field, or by a data type field. + + The client connects to the server, and sends a version + identifier/method selection message: + + +----+----------+----------+ + |VER | NMETHODS | METHODS | + +----+----------+----------+ + | 1 | 1 | 1 to 255 | + +----+----------+----------+ + + The VER field is set to X'05' for this version of the protocol. The + NMETHODS field contains the number of method identifier octets that + appear in the METHODS field. + + The server selects from one of the methods given in METHODS, and + sends a METHOD selection message: + + +----+--------+ + |VER | METHOD | + +----+--------+ + | 1 | 1 | + +----+--------+ + + If the selected METHOD is X'FF', none of the methods listed by the + client are acceptable, and the client MUST close the connection. + + The values currently defined for METHOD are: + + o X'00' NO AUTHENTICATION REQUIRED + o X'01' GSSAPI + o X'02' USERNAME/PASSWORD + o X'03' to X'7F' IANA ASSIGNED + o X'80' to X'FE' RESERVED FOR PRIVATE METHODS + o X'FF' NO ACCEPTABLE METHODS + + The client and server then enter a method-specific sub-negotiation. + + + +Leech, et al Standards Track [Page 3] + +RFC 1928 SOCKS Protocol Version 5 March 1996 + + + Descriptions of the method-dependent sub-negotiations appear in + separate memos. + + Developers of new METHOD support for this protocol should contact + IANA for a METHOD number. The ASSIGNED NUMBERS document should be + referred to for a current list of METHOD numbers and their + corresponding protocols. + + Compliant implementations MUST support GSSAPI and SHOULD support + USERNAME/PASSWORD authentication methods. + +4. Requests + + Once the method-dependent subnegotiation has completed, the client + sends the request details. If the negotiated method includes + encapsulation for purposes of integrity checking and/or + confidentiality, these requests MUST be encapsulated in the method- + dependent encapsulation. + + The SOCKS request is formed as follows: + + +----+-----+-------+------+----------+----------+ + |VER | CMD | RSV | ATYP | DST.ADDR | DST.PORT | + +----+-----+-------+------+----------+----------+ + | 1 | 1 | X'00' | 1 | Variable | 2 | + +----+-----+-------+------+----------+----------+ + + Where: + + o VER protocol version: X'05' + o CMD + o CONNECT X'01' + o BIND X'02' + o UDP ASSOCIATE X'03' + o RSV RESERVED + o ATYP address type of following address + o IP V4 address: X'01' + o DOMAINNAME: X'03' + o IP V6 address: X'04' + o DST.ADDR desired destination address + o DST.PORT desired destination port in network octet + order + + The SOCKS server will typically evaluate the request based on source + and destination addresses, and return one or more reply messages, as + appropriate for the request type. + + + + + +Leech, et al Standards Track [Page 4] + +RFC 1928 SOCKS Protocol Version 5 March 1996 + + +5. Addressing + + In an address field (DST.ADDR, BND.ADDR), the ATYP field specifies + the type of address contained within the field: + + o X'01' + + the address is a version-4 IP address, with a length of 4 octets + + o X'03' + + the address field contains a fully-qualified domain name. The first + octet of the address field contains the number of octets of name that + follow, there is no terminating NUL octet. + + o X'04' + + the address is a version-6 IP address, with a length of 16 octets. + +6. Replies + + The SOCKS request information is sent by the client as soon as it has + established a connection to the SOCKS server, and completed the + authentication negotiations. The server evaluates the request, and + returns a reply formed as follows: + + +----+-----+-------+------+----------+----------+ + |VER | REP | RSV | ATYP | BND.ADDR | BND.PORT | + +----+-----+-------+------+----------+----------+ + | 1 | 1 | X'00' | 1 | Variable | 2 | + +----+-----+-------+------+----------+----------+ + + Where: + + o VER protocol version: X'05' + o REP Reply field: + o X'00' succeeded + o X'01' general SOCKS server failure + o X'02' connection not allowed by ruleset + o X'03' Network unreachable + o X'04' Host unreachable + o X'05' Connection refused + o X'06' TTL expired + o X'07' Command not supported + o X'08' Address type not supported + o X'09' to X'FF' unassigned + o RSV RESERVED + o ATYP address type of following address + + + +Leech, et al Standards Track [Page 5] + +RFC 1928 SOCKS Protocol Version 5 March 1996 + + + o IP V4 address: X'01' + o DOMAINNAME: X'03' + o IP V6 address: X'04' + o BND.ADDR server bound address + o BND.PORT server bound port in network octet order + + Fields marked RESERVED (RSV) must be set to X'00'. + + If the chosen method includes encapsulation for purposes of + authentication, integrity and/or confidentiality, the replies are + encapsulated in the method-dependent encapsulation. + +CONNECT + + In the reply to a CONNECT, BND.PORT contains the port number that the + server assigned to connect to the target host, while BND.ADDR + contains the associated IP address. The supplied BND.ADDR is often + different from the IP address that the client uses to reach the SOCKS + server, since such servers are often multi-homed. It is expected + that the SOCKS server will use DST.ADDR and DST.PORT, and the + client-side source address and port in evaluating the CONNECT + request. + +BIND + + The BIND request is used in protocols which require the client to + accept connections from the server. FTP is a well-known example, + which uses the primary client-to-server connection for commands and + status reports, but may use a server-to-client connection for + transferring data on demand (e.g. LS, GET, PUT). + + It is expected that the client side of an application protocol will + use the BIND request only to establish secondary connections after a + primary connection is established using CONNECT. In is expected that + a SOCKS server will use DST.ADDR and DST.PORT in evaluating the BIND + request. + + Two replies are sent from the SOCKS server to the client during a + BIND operation. The first is sent after the server creates and binds + a new socket. The BND.PORT field contains the port number that the + SOCKS server assigned to listen for an incoming connection. The + BND.ADDR field contains the associated IP address. The client will + typically use these pieces of information to notify (via the primary + or control connection) the application server of the rendezvous + address. The second reply occurs only after the anticipated incoming + connection succeeds or fails. + + + + + +Leech, et al Standards Track [Page 6] + +RFC 1928 SOCKS Protocol Version 5 March 1996 + + + In the second reply, the BND.PORT and BND.ADDR fields contain the + address and port number of the connecting host. + +UDP ASSOCIATE + + The UDP ASSOCIATE request is used to establish an association within + the UDP relay process to handle UDP datagrams. The DST.ADDR and + DST.PORT fields contain the address and port that the client expects + to use to send UDP datagrams on for the association. The server MAY + use this information to limit access to the association. If the + client is not in possesion of the information at the time of the UDP + ASSOCIATE, the client MUST use a port number and address of all + zeros. + + A UDP association terminates when the TCP connection that the UDP + ASSOCIATE request arrived on terminates. + + In the reply to a UDP ASSOCIATE request, the BND.PORT and BND.ADDR + fields indicate the port number/address where the client MUST send + UDP request messages to be relayed. + +Reply Processing + + When a reply (REP value other than X'00') indicates a failure, the + SOCKS server MUST terminate the TCP connection shortly after sending + the reply. This must be no more than 10 seconds after detecting the + condition that caused a failure. + + If the reply code (REP value of X'00') indicates a success, and the + request was either a BIND or a CONNECT, the client may now start + passing data. If the selected authentication method supports + encapsulation for the purposes of integrity, authentication and/or + confidentiality, the data are encapsulated using the method-dependent + encapsulation. Similarly, when data arrives at the SOCKS server for + the client, the server MUST encapsulate the data as appropriate for + the authentication method in use. + +7. Procedure for UDP-based clients + + A UDP-based client MUST send its datagrams to the UDP relay server at + the UDP port indicated by BND.PORT in the reply to the UDP ASSOCIATE + request. If the selected authentication method provides + encapsulation for the purposes of authenticity, integrity, and/or + confidentiality, the datagram MUST be encapsulated using the + appropriate encapsulation. Each UDP datagram carries a UDP request + header with it: + + + + + +Leech, et al Standards Track [Page 7] + +RFC 1928 SOCKS Protocol Version 5 March 1996 + + + +----+------+------+----------+----------+----------+ + |RSV | FRAG | ATYP | DST.ADDR | DST.PORT | DATA | + +----+------+------+----------+----------+----------+ + | 2 | 1 | 1 | Variable | 2 | Variable | + +----+------+------+----------+----------+----------+ + + The fields in the UDP request header are: + + o RSV Reserved X'0000' + o FRAG Current fragment number + o ATYP address type of following addresses: + o IP V4 address: X'01' + o DOMAINNAME: X'03' + o IP V6 address: X'04' + o DST.ADDR desired destination address + o DST.PORT desired destination port + o DATA user data + + When a UDP relay server decides to relay a UDP datagram, it does so + silently, without any notification to the requesting client. + Similarly, it will drop datagrams it cannot or will not relay. When + a UDP relay server receives a reply datagram from a remote host, it + MUST encapsulate that datagram using the above UDP request header, + and any authentication-method-dependent encapsulation. + + The UDP relay server MUST acquire from the SOCKS server the expected + IP address of the client that will send datagrams to the BND.PORT + given in the reply to UDP ASSOCIATE. It MUST drop any datagrams + arriving from any source IP address other than the one recorded for + the particular association. + + The FRAG field indicates whether or not this datagram is one of a + number of fragments. If implemented, the high-order bit indicates + end-of-fragment sequence, while a value of X'00' indicates that this + datagram is standalone. Values between 1 and 127 indicate the + fragment position within a fragment sequence. Each receiver will + have a REASSEMBLY QUEUE and a REASSEMBLY TIMER associated with these + fragments. The reassembly queue must be reinitialized and the + associated fragments abandoned whenever the REASSEMBLY TIMER expires, + or a new datagram arrives carrying a FRAG field whose value is less + than the highest FRAG value processed for this fragment sequence. + The reassembly timer MUST be no less than 5 seconds. It is + recommended that fragmentation be avoided by applications wherever + possible. + + Implementation of fragmentation is optional; an implementation that + does not support fragmentation MUST drop any datagram whose FRAG + field is other than X'00'. + + + +Leech, et al Standards Track [Page 8] + +RFC 1928 SOCKS Protocol Version 5 March 1996 + + + The programming interface for a SOCKS-aware UDP MUST report an + available buffer space for UDP datagrams that is smaller than the + actual space provided by the operating system: + + o if ATYP is X'01' - 10+method_dependent octets smaller + o if ATYP is X'03' - 262+method_dependent octets smaller + o if ATYP is X'04' - 20+method_dependent octets smaller + +8. Security Considerations + + This document describes a protocol for the application-layer + traversal of IP network firewalls. The security of such traversal is + highly dependent on the particular authentication and encapsulation + methods provided in a particular implementation, and selected during + negotiation between SOCKS client and SOCKS server. + + Careful consideration should be given by the administrator to the + selection of authentication methods. + +9. References + + [1] Koblas, D., "SOCKS", Proceedings: 1992 Usenix Security Symposium. + +Author's Address + + Marcus Leech + Bell-Northern Research Ltd + P.O. Box 3511, Stn. C, + Ottawa, ON + CANADA K1Y 4H7 + + Phone: (613) 763-9145 + EMail: mleech@bnr.ca + + + + + + + + + + + + + + + + + + +Leech, et al Standards Track [Page 9] + diff --git a/vendor/github.com/ginuerzh/gosocks5/rfc1929.txt b/vendor/github.com/ginuerzh/gosocks5/rfc1929.txt new file mode 100644 index 0000000..64fa02c --- /dev/null +++ b/vendor/github.com/ginuerzh/gosocks5/rfc1929.txt @@ -0,0 +1,115 @@ + + + + + + +Network Working Group M. Leech +Request for Comments: 1929 Bell-Northern Research Ltd +Category: Standards Track March 1996 + + + Username/Password Authentication for SOCKS V5 + +Status of this Memo + + This document specifies an Internet standards track protocol for the + Internet community, and requests discussion and suggestions for + improvements. Please refer to the current edition of the "Internet + Official Protocol Standards" (STD 1) for the standardization state + and status of this protocol. Distribution of this memo is unlimited. + +1. Introduction + + The protocol specification for SOCKS Version 5 specifies a + generalized framework for the use of arbitrary authentication + protocols in the initial socks connection setup. This document + describes one of those protocols, as it fits into the SOCKS Version 5 + authentication "subnegotiation". + +Note: + + Unless otherwise noted, the decimal numbers appearing in packet- + format diagrams represent the length of the corresponding field, in + octets. Where a given octet must take on a specific value, the + syntax X'hh' is used to denote the value of the single octet in that + field. When the word 'Variable' is used, it indicates that the + corresponding field has a variable length defined either by an + associated (one or two octet) length field, or by a data type field. + +2. Initial negotiation + + Once the SOCKS V5 server has started, and the client has selected the + Username/Password Authentication protocol, the Username/Password + subnegotiation begins. This begins with the client producing a + Username/Password request: + + +----+------+----------+------+----------+ + |VER | ULEN | UNAME | PLEN | PASSWD | + +----+------+----------+------+----------+ + | 1 | 1 | 1 to 255 | 1 | 1 to 255 | + +----+------+----------+------+----------+ + + + + + + +Leech Standards Track [Page 1] + +RFC 1929 Username Authentication for SOCKS V5 March 1996 + + + The VER field contains the current version of the subnegotiation, + which is X'01'. The ULEN field contains the length of the UNAME field + that follows. The UNAME field contains the username as known to the + source operating system. The PLEN field contains the length of the + PASSWD field that follows. The PASSWD field contains the password + association with the given UNAME. + + The server verifies the supplied UNAME and PASSWD, and sends the + following response: + + +----+--------+ + |VER | STATUS | + +----+--------+ + | 1 | 1 | + +----+--------+ + + A STATUS field of X'00' indicates success. If the server returns a + `failure' (STATUS value other than X'00') status, it MUST close the + connection. + +3. Security Considerations + + This document describes a subnegotiation that provides authentication + services to the SOCKS protocol. Since the request carries the + password in cleartext, this subnegotiation is not recommended for + environments where "sniffing" is possible and practical. + +4. Author's Address + + Marcus Leech + Bell-Northern Research Ltd + P.O. Box 3511, Station C + Ottawa, ON + CANADA K1Y 4H7 + + Phone: +1 613 763 9145 + EMail: mleech@bnr.ca + + + + + + + + + + + + + + +Leech Standards Track [Page 2] + diff --git a/vendor/github.com/ginuerzh/gosocks5/socks5.go b/vendor/github.com/ginuerzh/gosocks5/socks5.go new file mode 100644 index 0000000..51aefa7 --- /dev/null +++ b/vendor/github.com/ginuerzh/gosocks5/socks5.go @@ -0,0 +1,662 @@ +// SOCKS Protocol Version 5 +// http://tools.ietf.org/html/rfc1928 +// http://tools.ietf.org/html/rfc1929 +package gosocks5 + +import ( + //"bytes" + "encoding/binary" + "errors" + "fmt" + "io" + //"log" + "net" + "strconv" + "sync" +) + +const ( + Ver5 = 5 + UserPassVer = 1 +) + +const ( + MethodNoAuth uint8 = iota + MethodGSSAPI + MethodUserPass + // X'03' to X'7F' IANA ASSIGNED + // X'80' to X'FE' RESERVED FOR PRIVATE METHODS + MethodNoAcceptable = 0xFF +) + +const ( + CmdConnect uint8 = 1 + CmdBind = 2 + CmdUdp = 3 +) + +const ( + AddrIPv4 uint8 = 1 + AddrDomain = 3 + AddrIPv6 = 4 +) + +const ( + Succeeded uint8 = iota + Failure + NotAllowed + NetUnreachable + HostUnreachable + ConnRefused + TTLExpired + CmdUnsupported + AddrUnsupported +) + +var ( + ErrBadVersion = errors.New("Bad version") + ErrBadFormat = errors.New("Bad format") + ErrBadAddrType = errors.New("Bad address type") + ErrShortBuffer = errors.New("Short buffer") + ErrBadMethod = errors.New("Bad method") + ErrAuthFailure = errors.New("Auth failure") +) + +// buffer pools +var ( + sPool = sync.Pool{ + New: func() interface{} { + return make([]byte, 576) + }, + } // small buff pool + lPool = sync.Pool{ + New: func() interface{} { + return make([]byte, 64*1024+262) + }, + } // large buff pool for udp +) + +/* +Method selection + +----+----------+----------+ + |VER | NMETHODS | METHODS | + +----+----------+----------+ + | 1 | 1 | 1 to 255 | + +----+----------+----------+ +*/ +func ReadMethods(r io.Reader) ([]uint8, error) { + //b := make([]byte, 257) + b := sPool.Get().([]byte) + defer sPool.Put(b) + + n, err := io.ReadAtLeast(r, b, 2) + if err != nil { + return nil, err + } + + if b[0] != Ver5 { + return nil, ErrBadVersion + } + + if b[1] == 0 { + return nil, ErrBadMethod + } + + length := 2 + int(b[1]) + if n < length { + if _, err := io.ReadFull(r, b[n:length]); err != nil { + return nil, err + } + } + + methods := make([]byte, int(b[1])) + copy(methods, b[2:length]) + + return methods, nil +} + +func WriteMethod(method uint8, w io.Writer) error { + _, err := w.Write([]byte{Ver5, method}) + return err +} + +/* + Username/Password authentication request + +----+------+----------+------+----------+ + |VER | ULEN | UNAME | PLEN | PASSWD | + +----+------+----------+------+----------+ + | 1 | 1 | 1 to 255 | 1 | 1 to 255 | + +----+------+----------+------+----------+ +*/ +type UserPassRequest struct { + Version byte + Username string + Password string +} + +func NewUserPassRequest(ver byte, u, p string) *UserPassRequest { + return &UserPassRequest{ + Version: ver, + Username: u, + Password: p, + } +} + +func ReadUserPassRequest(r io.Reader) (*UserPassRequest, error) { + // b := make([]byte, 513) + b := sPool.Get().([]byte) + defer sPool.Put(b) + + n, err := io.ReadAtLeast(r, b, 2) + if err != nil { + return nil, err + } + + if b[0] != UserPassVer { + return nil, ErrBadVersion + } + + req := &UserPassRequest{ + Version: b[0], + } + + ulen := int(b[1]) + length := ulen + 3 + + if n < length { + if _, err := io.ReadFull(r, b[n:length]); err != nil { + return nil, err + } + n = length + } + req.Username = string(b[2 : 2+ulen]) + + plen := int(b[length-1]) + length += plen + if n < length { + if _, err := io.ReadFull(r, b[n:length]); err != nil { + return nil, err + } + } + req.Password = string(b[3+ulen : length]) + return req, nil +} + +func (req *UserPassRequest) Write(w io.Writer) error { + // b := make([]byte, 513) + b := sPool.Get().([]byte) + defer sPool.Put(b) + + b[0] = req.Version + ulen := len(req.Username) + b[1] = byte(ulen) + length := 2 + ulen + copy(b[2:length], req.Username) + + plen := len(req.Password) + b[length] = byte(plen) + length++ + copy(b[length:length+plen], req.Password) + length += plen + + _, err := w.Write(b[:length]) + return err +} + +func (req *UserPassRequest) String() string { + return fmt.Sprintf("%d %s:%s", + req.Version, req.Username, req.Password) +} + +/* + Username/Password authentication response + +----+--------+ + |VER | STATUS | + +----+--------+ + | 1 | 1 | + +----+--------+ +*/ +type UserPassResponse struct { + Version byte + Status byte +} + +func NewUserPassResponse(ver, status byte) *UserPassResponse { + return &UserPassResponse{ + Version: ver, + Status: status, + } +} + +func ReadUserPassResponse(r io.Reader) (*UserPassResponse, error) { + // b := make([]byte, 2) + b := sPool.Get().([]byte) + defer sPool.Put(b) + + if _, err := io.ReadFull(r, b[:2]); err != nil { + return nil, err + } + + if b[0] != UserPassVer { + return nil, ErrBadVersion + } + + res := &UserPassResponse{ + Version: b[0], + Status: b[1], + } + + return res, nil +} + +func (res *UserPassResponse) Write(w io.Writer) error { + _, err := w.Write([]byte{res.Version, res.Status}) + return err +} + +func (res *UserPassResponse) String() string { + return fmt.Sprintf("%d %d", + res.Version, res.Status) +} + +/* +Address + +------+----------+----------+ + | ATYP | ADDR | PORT | + +------+----------+----------+ + | 1 | Variable | 2 | + +------+----------+----------+ +*/ +type Addr struct { + Type uint8 + Host string + Port uint16 +} + +func (addr *Addr) Decode(b []byte) error { + addr.Type = b[0] + pos := 1 + switch addr.Type { + case AddrIPv4: + addr.Host = net.IP(b[pos : pos+net.IPv4len]).String() + pos += net.IPv4len + case AddrIPv6: + addr.Host = net.IP(b[pos : pos+net.IPv6len]).String() + pos += net.IPv6len + case AddrDomain: + addrlen := int(b[pos]) + pos++ + addr.Host = string(b[pos : pos+addrlen]) + pos += addrlen + default: + return ErrBadAddrType + } + + addr.Port = binary.BigEndian.Uint16(b[pos:]) + + return nil +} + +func (addr *Addr) Encode(b []byte) (int, error) { + b[0] = addr.Type + pos := 1 + switch addr.Type { + case AddrIPv4: + ip4 := net.ParseIP(addr.Host).To4() + if ip4 == nil { + ip4 = net.IPv4zero.To4() + } + pos += copy(b[pos:], ip4) + case AddrDomain: + b[pos] = byte(len(addr.Host)) + pos++ + pos += copy(b[pos:], []byte(addr.Host)) + case AddrIPv6: + ip16 := net.ParseIP(addr.Host).To16() + if ip16 == nil { + ip16 = net.IPv6zero.To16() + } + pos += copy(b[pos:], ip16) + default: + b[0] = AddrIPv4 + copy(b[pos:pos+4], net.IPv4zero.To4()) + pos += 4 + } + binary.BigEndian.PutUint16(b[pos:], addr.Port) + pos += 2 + + return pos, nil +} + +func (addr *Addr) Length() (n int) { + switch addr.Type { + case AddrIPv4: + n = 10 + case AddrIPv6: + n = 22 + case AddrDomain: + n = 7 + len(addr.Host) + default: + n = 10 + } + return +} + +func (addr *Addr) String() string { + return net.JoinHostPort(addr.Host, strconv.Itoa(int(addr.Port))) +} + +/* +The SOCKSv5 request + +----+-----+-------+------+----------+----------+ + |VER | CMD | RSV | ATYP | DST.ADDR | DST.PORT | + +----+-----+-------+------+----------+----------+ + | 1 | 1 | X'00' | 1 | Variable | 2 | + +----+-----+-------+------+----------+----------+ +*/ +type Request struct { + Cmd uint8 + Addr *Addr +} + +func NewRequest(cmd uint8, addr *Addr) *Request { + return &Request{ + Cmd: cmd, + Addr: addr, + } +} + +func ReadRequest(r io.Reader) (*Request, error) { + // b := make([]byte, 262) + b := sPool.Get().([]byte) + defer sPool.Put(b) + + n, err := io.ReadAtLeast(r, b, 5) + if err != nil { + return nil, err + } + + if b[0] != Ver5 { + return nil, ErrBadVersion + } + + request := &Request{ + Cmd: b[1], + } + + atype := b[3] + length := 0 + switch atype { + case AddrIPv4: + length = 10 + case AddrIPv6: + length = 22 + case AddrDomain: + length = 7 + int(b[4]) + default: + return nil, ErrBadAddrType + } + + if n < length { + if _, err := io.ReadFull(r, b[n:length]); err != nil { + return nil, err + } + } + addr := new(Addr) + if err := addr.Decode(b[3:length]); err != nil { + return nil, err + } + request.Addr = addr + + return request, nil +} + +func (r *Request) Write(w io.Writer) (err error) { + //b := make([]byte, 262) + b := sPool.Get().([]byte) + defer sPool.Put(b) + + b[0] = Ver5 + b[1] = r.Cmd + b[2] = 0 //rsv + b[3] = AddrIPv4 // default + + addr := r.Addr + if addr == nil { + addr = &Addr{} + } + n, _ := addr.Encode(b[3:]) + length := 3 + n + + _, err = w.Write(b[:length]) + return +} + +func (r *Request) String() string { + addr := r.Addr + if addr == nil { + addr = &Addr{} + } + return fmt.Sprintf("5 %d 0 %d %s", + r.Cmd, addr.Type, addr.String()) +} + +/* +The SOCKSv5 reply + +----+-----+-------+------+----------+----------+ + |VER | REP | RSV | ATYP | BND.ADDR | BND.PORT | + +----+-----+-------+------+----------+----------+ + | 1 | 1 | X'00' | 1 | Variable | 2 | + +----+-----+-------+------+----------+----------+ +*/ +type Reply struct { + Rep uint8 + Addr *Addr +} + +func NewReply(rep uint8, addr *Addr) *Reply { + return &Reply{ + Rep: rep, + Addr: addr, + } +} + +func ReadReply(r io.Reader) (*Reply, error) { + // b := make([]byte, 262) + b := sPool.Get().([]byte) + defer sPool.Put(b) + + n, err := io.ReadAtLeast(r, b, 5) + if err != nil { + return nil, err + } + + if b[0] != Ver5 { + return nil, ErrBadVersion + } + + reply := &Reply{ + Rep: b[1], + } + + atype := b[3] + length := 0 + switch atype { + case AddrIPv4: + length = 10 + case AddrIPv6: + length = 22 + case AddrDomain: + length = 7 + int(b[4]) + default: + return nil, ErrBadAddrType + } + + if n < length { + if _, err := io.ReadFull(r, b[n:length]); err != nil { + return nil, err + } + } + + addr := new(Addr) + if err := addr.Decode(b[3:length]); err != nil { + return nil, err + } + reply.Addr = addr + + return reply, nil +} + +func (r *Reply) Write(w io.Writer) (err error) { + // b := make([]byte, 262) + b := sPool.Get().([]byte) + defer sPool.Put(b) + + b[0] = Ver5 + b[1] = r.Rep + b[2] = 0 //rsv + b[3] = AddrIPv4 // default + + length := 10 + if r.Addr != nil { + n, _ := r.Addr.Encode(b[3:]) + length = 3 + n + } + _, err = w.Write(b[:length]) + + return +} + +func (r *Reply) String() string { + addr := r.Addr + if addr == nil { + addr = &Addr{} + } + return fmt.Sprintf("5 %d 0 %d %s", + r.Rep, addr.Type, addr.String()) +} + +/* +UDP request + +----+------+------+----------+----------+----------+ + |RSV | FRAG | ATYP | DST.ADDR | DST.PORT | DATA | + +----+------+------+----------+----------+----------+ + | 2 | 1 | 1 | Variable | 2 | Variable | + +----+------+------+----------+----------+----------+ +*/ +type UDPHeader struct { + Rsv uint16 + Frag uint8 + Addr *Addr +} + +func NewUDPHeader(rsv uint16, frag uint8, addr *Addr) *UDPHeader { + return &UDPHeader{ + Rsv: rsv, + Frag: frag, + Addr: addr, + } +} + +func (h *UDPHeader) Write(w io.Writer) error { + b := sPool.Get().([]byte) + defer sPool.Put(b) + + binary.BigEndian.PutUint16(b[:2], h.Rsv) + b[2] = h.Frag + + addr := h.Addr + if addr == nil { + addr = &Addr{} + } + length, _ := addr.Encode(b[3:]) + + _, err := w.Write(b[:3+length]) + return err +} + +func (h *UDPHeader) String() string { + return fmt.Sprintf("%d %d %d %s", + h.Rsv, h.Frag, h.Addr.Type, h.Addr.String()) +} + +type UDPDatagram struct { + Header *UDPHeader + Data []byte +} + +func NewUDPDatagram(header *UDPHeader, data []byte) *UDPDatagram { + return &UDPDatagram{ + Header: header, + Data: data, + } +} + +func ReadUDPDatagram(r io.Reader) (*UDPDatagram, error) { + // b := make([]byte, 65797) + b := lPool.Get().([]byte) + defer lPool.Put(b) + + n, err := io.ReadAtLeast(r, b, 5) + if err != nil { + return nil, err + } + + header := &UDPHeader{ + Rsv: binary.BigEndian.Uint16(b[:2]), + Frag: b[2], + } + + atype := b[3] + hlen := 0 + switch atype { + case AddrIPv4: + hlen = 10 + case AddrIPv6: + hlen = 22 + case AddrDomain: + hlen = 7 + int(b[4]) + default: + return nil, ErrBadAddrType + } + + // extended feature, for udp over tcp, using reserved field for data length + dlen := int(header.Rsv) + if n < hlen+dlen { + if _, err := io.ReadFull(r, b[n:hlen+dlen]); err != nil { + return nil, err + } + n = hlen + dlen + } + if dlen == 0 { + dlen = n - hlen + } + + header.Addr = new(Addr) + if err := header.Addr.Decode(b[3:hlen]); err != nil { + return nil, err + } + + data := make([]byte, dlen) + copy(data, b[hlen:n]) + + d := &UDPDatagram{ + Header: header, + Data: data, + } + + return d, nil +} + +func (d *UDPDatagram) Write(w io.Writer) error { + h := d.Header + if h == nil { + h = &UDPHeader{} + } + if err := h.Write(w); err != nil { + return err + } + _, err := w.Write(d.Data) + + return err +} diff --git a/vendor/github.com/ginuerzh/gost/.gitignore b/vendor/github.com/ginuerzh/gost/.gitignore new file mode 100644 index 0000000..7840d7e --- /dev/null +++ b/vendor/github.com/ginuerzh/gost/.gitignore @@ -0,0 +1,27 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test +release +debian + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test + +*.bak diff --git a/vendor/github.com/ginuerzh/gost/LICENSE b/vendor/github.com/ginuerzh/gost/LICENSE new file mode 100644 index 0000000..2033b3a --- /dev/null +++ b/vendor/github.com/ginuerzh/gost/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016 ginuerzh + +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/ginuerzh/gost/README.md b/vendor/github.com/ginuerzh/gost/README.md new file mode 100644 index 0000000..fa2fc26 --- /dev/null +++ b/vendor/github.com/ginuerzh/gost/README.md @@ -0,0 +1,295 @@ +gost - GO Simple Tunnel +====== + +### GO语言实现的安全隧道 + +[English README](README_en.md) + +特性 +------ +* 可同时监听多端口 +* 可设置转发代理,支持多级转发(代理链) +* 支持标准HTTP/HTTPS/SOCKS5代理协议 +* SOCKS5代理支持TLS协商加密 +* Tunnel UDP over TCP +* 支持Shadowsocks协议 (OTA: 2.2+) +* 支持本地/远程端口转发 (2.1+) +* 支持HTTP 2.0 (2.2+) +* 实验性支持QUIC (2.3+) +* 支持KCP协议 (2.3+) + +二进制文件下载:https://github.com/ginuerzh/gost/releases + +Google讨论组: https://groups.google.com/d/forum/go-gost + +在gost中,gost与其他代理服务都被看作是代理节点,gost可以自己处理请求,或者将请求转发给任意一个或多个代理节点。 + +参数说明 +------ +#### 代理及代理链 + +适用于-L和-F参数 + +```bash +[scheme://][user:pass@host]:port +``` +scheme分为两部分: protocol+transport + +protocol: 代理协议类型(http, socks5, shadowsocks), transport: 数据传输方式(ws, wss, tls, http2, quic, kcp), 二者可以任意组合,或单独使用: + +> http - 作为HTTP代理: http://:8080 + +> http+tls - 作为HTTPS代理(可能需要提供受信任的证书): http+tls://:443 + +> http2 - 作为HTTP2代理并向下兼容HTTPS代理: http2://:443 + +> socks - 作为标准SOCKS5代理(支持tls协商加密): socks://:1080 + +> socks+wss - 作为SOCKS5代理,使用websocket传输数据: socks+wss://:1080 + +> tls - 作为HTTPS/SOCKS5代理,使用tls传输数据: tls://:443 + +> ss - 作为Shadowsocks服务,ss://aes-256-cfb:123456@:8338 + +> quic - 作为QUIC代理,quic://:6121 + +> kcp - 作为KCP代理,kcp://:8388或kcp://aes:123456@:8388 + +#### 端口转发 + +适用于-L参数 + +```bash +scheme://[bind_address]:port/[host]:hostport +``` +> scheme - 端口转发模式, 本地端口转发: tcp, udp; 远程端口转发: rtcp, rudp + +> bind_address:port - 本地/远程绑定地址 + +> host:hostport - 目标访问地址 + +#### 开启日志 + +> -logtostderr : 输出到控制台 + +> -v=3 : 日志级别(1-5),级别越高,日志越详细(级别5将开启http2 debug) + +> -log_dir=/log/dir/path : 输出到目录/log/dir/path + + +使用方法 +------ +#### 不设置转发代理 + + + +* 作为标准HTTP/SOCKS5代理 +```bash +gost -L=:8080 +``` + +* 设置代理认证信息 +```bash +gost -L=admin:123456@localhost:8080 +``` + +* 多端口监听 +```bash +gost -L=http2://:443 -L=socks://:1080 -L=ss://aes-128-cfb:123456@:8338 +``` + +#### 设置转发代理 + + +```bash +gost -L=:8080 -F=192.168.1.1:8081 +``` + +* 转发代理认证 +```bash +gost -L=:8080 -F=http://admin:123456@192.168.1.1:8081 +``` + +#### 设置多级转发代理(代理链) + + +```bash +gost -L=:8080 -F=http+tls://192.168.1.1:443 -F=socks+ws://192.168.1.2:1080 -F=ss://aes-128-cfb:123456@192.168.1.3:8338 -F=a.b.c.d:NNNN +``` +gost按照-F设置的顺序通过代理链将请求最终转发给a.b.c.d:NNNN处理,每一个转发代理可以是任意HTTP/HTTPS/HTTP2/SOCKS5/Shadowsocks类型代理。 + +#### 本地端口转发(TCP) + +```bash +gost -L=tcp://:2222/192.168.1.1:22 -F=... +``` +将本地TCP端口2222上的数据(通过代理链)转发到192.168.1.1:22上。 + +#### 本地端口转发(UDP) + +```bash +gost -L=udp://:5353/192.168.1.1:53 -F=... +``` +将本地UDP端口5353上的数据(通过代理链)转发到192.168.1.1:53上。 + +**注:** 转发UDP数据时,如果有代理链,则代理链的末端(最后一个-F参数)必须是gost SOCKS5类型代理。 + +#### 远程端口转发(TCP) + +```bash +gost -L=rtcp://:2222/192.168.1.1:22 -F=... -F=socks://172.24.10.1:1080 +``` +将172.24.10.1:2222上的数据(通过代理链)转发到192.168.1.1:22上。 + +#### 远程端口转发(UDP) + +```bash +gost -L=rudp://:5353/192.168.1.1:53 -F=... -F=socks://172.24.10.1:1080 +``` +将172.24.10.1:5353上的数据(通过代理链)转发到192.168.1.1:53上。 + +**注:** 若要使用远程端口转发功能,代理链不能为空(至少要设置一个-F参数),且代理链的末端(最后一个-F参数)必须是gost SOCKS5类型代理。 + +#### HTTP2 +gost的HTTP2支持两种模式并自适应: +* 作为标准的HTTP2代理,并向下兼容HTTPS代理。 +* 作为transport(类似于wss),传输其他协议。 + +**注:** gost的代理链仅支持一个HTTP2代理节点,采用就近原则,会将第一个遇到的HTTP2代理节点视为HTTP2代理,其他HTTP2代理节点则被视为HTTPS代理。 + +#### QUIC +gost对QUIC的支持是基于[quic-go](https://github.com/lucas-clemente/quic-go)库。 + +服务端: +```bash +gost -L=quic://:6121 +``` + +客户端(Chrome): +```bash +chrome --enable-quic --proxy-server=quic://server_ip:6121 +``` + +**注:** 由于Chrome自身的限制,目前只能通过QUIC访问HTTP网站,无法访问HTTPS网站。 + +#### KCP +gost对KCP的支持是基于[kcp-go](https://github.com/xtaci/kcp-go)和[kcptun](https://github.com/xtaci/kcptun)库。 + +服务端: +```bash +gost -L=kcp://:8388 +``` + +客户端: +```bash +gost -L=:8080 -F=kcp://server_ip:8388 +``` + +或者手动指定加密方法和密码(手动指定的加密方法和密码会覆盖配置文件中的相应值) + +服务端: +```bash +gost -L=kcp://aes:123456@:8388 +``` + +客户端: +```bash +gost -L=:8080 -F=kcp://aes:123456@server_ip:8388 +``` + +gost会自动加载当前工作目录中的kcp.json(如果存在)配置文件,或者可以手动通过参数指定配置文件路径: +```bash +gost -L=kcp://:8388?c=/path/to/conf/file +``` + +**注:** 客户端若要开启KCP转发,当且仅当代理链不为空且首个代理节点(第一个-F参数)为kcp类型。 +当KCP转发开启,代理链中的其他代理节点将被忽略。 + +加密机制 +------ +#### HTTP +对于HTTP可以使用TLS加密整个通讯过程,即HTTPS代理: + +服务端: +```bash +gost -L=http+tls://:443 +``` +客户端: +```bash +gost -L=:8080 -F=http+tls://server_ip:443 +``` + +#### HTTP2 +gost仅支持使用TLS加密的HTTP2协议,不支持明文HTTP2传输。 + +服务端: +```bash +gost -L=http2://:443 +``` +客户端: +```bash +gost -L=:8080 -F=http2://server_ip:443 +``` + +#### SOCKS5 +gost支持标准SOCKS5协议的no-auth(0x00)和user/pass(0x02)方法,并在此基础上扩展了两个:tls(0x80)和tls-auth(0x82),用于数据加密。 + +服务端: +```bash +gost -L=socks://:1080 +``` +客户端: +```bash +gost -L=:8080 -F=socks://server_ip:1080 +``` + +如果两端都是gost(如上)则数据传输会被加密(协商使用tls或tls-auth方法),否则使用标准SOCKS5进行通讯(no-auth或user/pass方法)。 + +**注:** 如果transport已经支持加密(wss, tls, http2),则SOCKS5不会再使用加密方法,防止不必要的双重加密。 + +#### Shadowsocks +gost对shadowsocks的支持是基于[shadowsocks-go](https://github.com/shadowsocks/shadowsocks-go)库。 + +服务端(可以通过ota参数开启OTA模式): +```bash +gost -L=ss://aes-128-cfb:123456@:8338?ota=1 +``` +客户端: +```bash +gost -L=:8080 -F=ss://aes-128-cfb:123456@server_ip:8338 +``` + +#### TLS +gost内置了TLS证书,如果需要使用其他TLS证书,有两种方法: +* 在gost运行目录放置cert.pem(公钥)和key.pem(私钥)两个文件即可,gost会自动加载运行目录下的cert.pem和key.pem文件。 +* 使用参数指定证书文件路径: +```bash +gost -L="http2://:443?cert=/path/to/my/cert/file&key=/path/to/my/key/file" +``` + +SOCKS5 UDP数据处理 +------ +#### 不设置转发代理 + + + +gost作为标准SOCKS5代理处理UDP数据 + +#### 设置转发代理 + + + +#### 设置多个转发代理(代理链) + + + +当设置转发代理时,gost会使用UDP-over-TCP方式转发UDP数据。proxy1 - proxyN可以为任意HTTP/HTTPS/HTTP2/SOCKS5/Shadowsocks类型代理。 + +限制条件 +------ +代理链中的HTTP代理节点必须支持CONNECT方法。 + +如果要转发SOCKS5的BIND和UDP请求,代理链的末端(最后一个-F参数)必须支持gost SOCKS5类型代理。 + + + diff --git a/vendor/github.com/ginuerzh/gost/README_en.md b/vendor/github.com/ginuerzh/gost/README_en.md new file mode 100644 index 0000000..9df0181 --- /dev/null +++ b/vendor/github.com/ginuerzh/gost/README_en.md @@ -0,0 +1,298 @@ +gost - GO Simple Tunnel +====== + +### A simple security tunnel written in Golang + +Features +------ +* Listening on multiple ports +* Multi-level forward proxy - proxy chain +* Standard HTTP/HTTPS/SOCKS5 proxy protocols support +* TLS encryption via negotiation support for SOCKS5 proxy +* Tunnel UDP over TCP +* Shadowsocks protocol support (OTA: 2.2+) +* Local/remote port forwarding (2.1+) +* HTTP 2.0 support (2.2+) +* Experimental QUIC support (2.3+) +* KCP protocol support (2.3+) + +Binary file download:https://github.com/ginuerzh/gost/releases + +Google group: https://groups.google.com/d/forum/go-gost + +Gost and other proxy services are considered to be proxy nodes, +gost can handle the request itself, or forward the request to any one or more proxy nodes. + +Parameter Description +------ +#### Proxy and proxy chain + +Effective for the -L and -F parameters + +```bash +[scheme://][user:pass@host]:port +``` +scheme can be divided into two parts: protocol+transport + +protocol: proxy protocol types (http, socks5, shadowsocks), +transport: data transmission mode (ws, wss, tls, http2, quic, kcp), may be used in any combination or individually: + +> http - standard HTTP proxy: http://:8080 + +> http+tls - standard HTTPS proxy (may need to provide a trusted certificate): http+tls://:443 + +> http2 - HTTP2 proxy and backwards-compatible with HTTPS proxy: http2://:443 + +> socks - standard SOCKS5 proxy: socks://:1080 + +> socks+wss - SOCKS5 over websocket: socks+wss://:1080 + +> tls - HTTPS/SOCKS5 over tls: tls://:443 + +> ss - standard shadowsocks proxy, ss://aes-256-cfb:123456@:8338 + +> quic - standard QUIC proxy, quic://:6121 + +> kcp - standard KCP tunnel,kcp://:8388 or kcp://aes:123456@:8388 + +#### Port forwarding + +Effective for the -L parameter + +```bash +scheme://[bind_address]:port/[host]:hostport +``` +> scheme - forward mode, local: tcp, udp; remote: rtcp, rudp + +> bind_address:port - local/remote binding address + +> host:hostport - target address + +#### Logging + +> -logtostderr : log to console + +> -v=3 : log level (1-5),The higher the level, the more detailed the log (level 5 will enable HTTP2 debug) + +> -log_dir=/log/dir/path : log to directory /log/dir/path + +Usage +------ +#### No forward proxy + + + +* Standard HTTP/SOCKS5 proxy +```bash +gost -L=:8080 +``` + +* Proxy authentication +```bash +gost -L=admin:123456@localhost:8080 +``` + +* Listen on multiple ports +```bash +gost -L=http2://:443 -L=socks://:1080 -L=ss://aes-128-cfb:123456@:8338 +``` + +#### Forward proxy + + +```bash +gost -L=:8080 -F=192.168.1.1:8081 +``` + +* Forward proxy authentication +```bash +gost -L=:8080 -F=http://admin:123456@192.168.1.1:8081 +``` + +#### Multi-level forward proxy + + +```bash +gost -L=:8080 -F=http+tls://192.168.1.1:443 -F=socks+ws://192.168.1.2:1080 -F=ss://aes-128-cfb:123456@192.168.1.3:8338 -F=a.b.c.d:NNNN +``` +Gost forwards the request to a.b.c.d:NNNN through the proxy chain in the order set by -F, +each forward proxy can be any HTTP/HTTPS/HTTP2/SOCKS5/Shadowsocks type. + +#### Local TCP port forwarding + +```bash +gost -L=tcp://:2222/192.168.1.1:22 -F=... +``` +The data on the local TCP port 2222 is forwarded to 192.168.1.1:22 (through the proxy chain). + +#### Local UDP port forwarding + +```bash +gost -L=udp://:5353/192.168.1.1:53 -F=... +``` +The data on the local UDP port 5353 is forwarded to 192.168.1.1:53 (through the proxy chain). + +**NOTE:** When forwarding UDP data, if there is a proxy chain, the end of the chain (the last -F parameter) must be gost SOCKS5 proxy. + +#### Remote TCP port forwarding + +```bash +gost -L=rtcp://:2222/192.168.1.1:22 -F=... -F=socks://172.24.10.1:1080 +``` +The data on 172.24.10.1:2222 is forwarded to 192.168.1.1:22 (through the proxy chain). + +#### Remote UDP port forwarding + +```bash +gost -L=rudp://:5353/192.168.1.1:53 -F=... -F=socks://172.24.10.1:1080 +``` +The data on 172.24.10.1:5353 is forwarded to 192.168.1.1:53 (through the proxy chain). + +**NOTE:** To use the remote port forwarding feature, the proxy chain can not be empty (at least one -F parameter is set) +and the end of the chain (last -F parameter) must be gost SOCKS5 proxy. + +#### HTTP2 +Gost HTTP2 supports two modes and self-adapting: +* As a standard HTTP2 proxy, and backwards-compatible with the HTTPS proxy. +* As transport (similar to wss), tunnel other protocol. + +**NOTE:** The proxy chain of gost supports only one HTTP2 proxy node and the nearest rule applies, +the first HTTP2 proxy node is treated as an HTTP2 proxy, and the other HTTP2 proxy nodes are treated as HTTPS proxies. + +#### QUIC +Support for QUIC is based on library [quic-go](https://github.com/lucas-clemente/quic-go). + +Server: +```bash +gost -L=quic://:6121 +``` +Client(Chrome): +```bash +chrome --enable-quic --proxy-server=quic://server_ip:6121 +``` + +**NOTE:** Due to Chrome's limitations, it is currently only possible to access the HTTP (but not HTTPS) site through QUIC. + +#### KCP +Support for KCP is based on libraries [kcp-go](https://github.com/xtaci/kcp-go) and [kcptun](https://github.com/xtaci/kcptun). + +Server: +```bash +gost -L=kcp://:8388 +``` +Client: +```bash +gost -L=:8080 -F=kcp://server_ip:8388 +``` + +Or manually specify the encryption method and password (Manually specifying the encryption method and password overwrites the corresponding value in the configuration file) + +Server: +```bash +gost -L=kcp://aes:123456@:8388 +``` + +Client: +```bash +gost -L=:8080 -F=kcp://aes:123456@server_ip:8388 +``` + +Gost will automatically load kcp.json configuration file from current working directory if exists, +or you can use the parameter to specify the path to the file. +```bash +gost -L=kcp://:8388?c=/path/to/conf/file +``` + +**NOTE:** KCP will be enabled if and only if the proxy chain is not empty and the first proxy node (the first -F parameter) is of type KCP. +When KCP is enabled, other proxy nodes are ignored. + +Encryption Mechanism +------ +#### HTTP +For HTTP, you can use TLS to encrypt the entire communication process, the HTTPS proxy: + +Server: +```bash +gost -L=http+tls://:443 +``` +Client: +```bash +gost -L=:8080 -F=http+tls://server_ip:443 +``` + +#### HTTP2 +Gost supports only the HTTP2 protocol that uses TLS encryption (h2) and does not support plaintext HTTP2 (h2c) transport. + +Server: +```bash +gost -L=http2://:443 +``` +Client: +```bash +gost -L=:8080 -F=http2://server_ip:443 +``` + +#### SOCKS5 +Gost supports the standard SOCKS5 protocol methods: no-auth (0x00) and user/pass (0x02), +and extends two methods for data encryption: tls(0x80) and tls-auth(0x82). + +Server: +```bash +gost -L=socks://:1080 +``` +Client: +```bash +gost -L=:8080 -F=socks://server_ip:1080 +``` + +If both ends are gosts (as example above), the data transfer will be encrypted (using tls or tls-auth). +Otherwise, use standard SOCKS5 for communication (no-auth or user/pass). + +**NOTE:** If transport already supports encryption (wss, tls, http2), SOCKS5 will no longer use the encryption method to prevent unnecessary double encryption. + +#### Shadowsocks +Support for shadowsocks is based on library [shadowsocks-go](https://github.com/shadowsocks/shadowsocks-go). + +Server (The OTA mode can be enabled by the ota parameter): +```bash +gost -L=ss://aes-128-cfb:123456@:8338?ota=1 +``` +Client: +```bash +gost -L=:8080 -F=ss://aes-128-cfb:123456@server_ip:8338 +``` + +#### TLS +There is built-in TLS certificate in gost, if you need to use other TLS certificate, there are two ways: +* Place two files cert.pem (public key) and key.pem (private key) in the current working directory, gost will automatically load them. +* Use the parameter to specify the path to the certificate file: +```bash +gost -L="http2://:443?cert=/path/to/my/cert/file&key=/path/to/my/key/file" +``` + +SOCKS5 UDP Data Processing +------ +#### No forward proxy + + + +Gost acts as the standard SOCKS5 proxy for UDP relay. + +#### Forward proxy + + + +#### Multi-level forward proxy + + + +When forward proxies are set, gost uses UDP-over-TCP to forward UDP data, proxy1 to proxyN can be any HTTP/HTTPS/HTTP2/SOCKS5/Shadowsocks type. + +Limitation +------ +The HTTP proxy node in the proxy chain must support the CONNECT method. + +If the BIND and UDP requests for SOCKS5 are to be forwarded, the end of the chain (the last -F parameter) must be the gost SOCKS5 proxy. + + + diff --git a/vendor/github.com/ginuerzh/gost/chain.go b/vendor/github.com/ginuerzh/gost/chain.go new file mode 100644 index 0000000..f9820e2 --- /dev/null +++ b/vendor/github.com/ginuerzh/gost/chain.go @@ -0,0 +1,357 @@ +package gost + +import ( + "crypto/tls" + "encoding/base64" + "errors" + "github.com/golang/glog" + "golang.org/x/net/http2" + "io" + //"io/ioutil" + "net" + "net/http" + "net/http/httputil" + "net/url" + "strings" + "sync" +) + +// Proxy chain holds a list of proxy nodes +type ProxyChain struct { + nodes []ProxyNode + lastNode *ProxyNode + http2NodeIndex int + http2Enabled bool + http2Client *http.Client + kcpEnabled bool + kcpConfig *KCPConfig + kcpSession *KCPSession + kcpMutex sync.Mutex +} + +func NewProxyChain(nodes ...ProxyNode) *ProxyChain { + chain := &ProxyChain{nodes: nodes, http2NodeIndex: -1} + return chain +} + +func (c *ProxyChain) AddProxyNode(node ...ProxyNode) { + c.nodes = append(c.nodes, node...) +} + +func (c *ProxyChain) AddProxyNodeString(snode ...string) error { + for _, sn := range snode { + node, err := ParseProxyNode(sn) + if err != nil { + return err + } + c.AddProxyNode(node) + } + return nil +} + +func (c *ProxyChain) Nodes() []ProxyNode { + return c.nodes +} + +func (c *ProxyChain) GetNode(index int) *ProxyNode { + if index < len(c.nodes) { + return &c.nodes[index] + } + return nil +} + +func (c *ProxyChain) SetNode(index int, node ProxyNode) { + if index < len(c.nodes) { + c.nodes[index] = node + } +} + +// Init initialize the proxy chain. +// KCP will be enabled if the first proxy node is KCP proxy (transport == kcp), the remaining nodes are ignored. +// HTTP2 will be enabled when at least one HTTP2 proxy node (scheme == http2) is present. +// +// NOTE: Should be called immediately when proxy nodes are ready. +func (c *ProxyChain) Init() { + length := len(c.nodes) + if length == 0 { + return + } + + c.lastNode = &c.nodes[length-1] + + if c.nodes[0].Transport == "kcp" { + glog.V(LINFO).Infoln("KCP is enabled") + c.kcpEnabled = true + config, err := ParseKCPConfig(c.nodes[0].Get("c")) + if err != nil { + glog.V(LWARNING).Infoln("[kcp]", err) + } + if c.nodes[0].User != nil { + config.Crypt = c.nodes[0].User.Username() + config.Key, _ = c.nodes[0].User.Password() + } + c.kcpConfig = config + return + } + + // HTTP2 restrict: HTTP2 will be enabled when at least one HTTP2 proxy node is present. + for i, node := range c.nodes { + if node.Transport == "http2" { + glog.V(LINFO).Infoln("HTTP2 is enabled") + cfg := &tls.Config{ + InsecureSkipVerify: node.insecureSkipVerify(), + ServerName: node.serverName, + } + c.http2NodeIndex = i + c.initHttp2Client(cfg, c.nodes[:i]...) + break // shortest chain for HTTP2 + } + } +} + +func (c *ProxyChain) KCPEnabled() bool { + return c.kcpEnabled +} + +func (c *ProxyChain) Http2Enabled() bool { + return c.http2Enabled +} + +func (c *ProxyChain) initHttp2Client(config *tls.Config, nodes ...ProxyNode) { + if c.http2NodeIndex < 0 || c.http2NodeIndex >= len(c.nodes) { + return + } + http2Node := c.nodes[c.http2NodeIndex] + + tr := http2.Transport{ + TLSClientConfig: config, + DialTLS: func(network, addr string, cfg *tls.Config) (net.Conn, error) { + // replace the default dialer with our proxy chain. + conn, err := c.dialWithNodes(false, http2Node.Addr, nodes...) + if err != nil { + return conn, err + } + return tls.Client(conn, cfg), nil + }, + } + c.http2Client = &http.Client{Transport: &tr} + c.http2Enabled = true + +} + +// Connect to addr through proxy chain +func (c *ProxyChain) Dial(addr string) (net.Conn, error) { + if !strings.Contains(addr, ":") { + addr += ":80" + } + return c.dialWithNodes(true, addr, c.nodes...) +} + +// GetConn initializes a proxy chain connection, +// if no proxy nodes on this chain, it will return error +func (c *ProxyChain) GetConn() (net.Conn, error) { + nodes := c.nodes + if len(nodes) == 0 { + return nil, ErrEmptyChain + } + + if c.KCPEnabled() { + kcpConn, err := c.getKCPConn() + if err != nil { + return nil, err + } + pc := NewProxyConn(kcpConn, c.nodes[0]) + if err := pc.Handshake(); err != nil { + pc.Close() + return nil, err + } + return pc, nil + } + + if c.Http2Enabled() { + nodes = nodes[c.http2NodeIndex+1:] + if len(nodes) == 0 { + header := make(http.Header) + header.Set("Proxy-Switch", "gost") // Flag header to indicate server to switch to HTTP2 transport mode + conn, err := c.getHttp2Conn(header) + if err != nil { + return nil, err + } + http2Node := c.nodes[c.http2NodeIndex] + if http2Node.Transport == "http2" { + http2Node.Transport = "h2" + } + if http2Node.Protocol == "http2" { + http2Node.Protocol = "socks5" // assume it as socks5 protocol, so we can do much more things. + } + pc := NewProxyConn(conn, http2Node) + if err := pc.Handshake(); err != nil { + conn.Close() + return nil, err + } + return pc, nil + } + } + return c.travelNodes(true, nodes...) +} + +func (c *ProxyChain) dialWithNodes(withHttp2 bool, addr string, nodes ...ProxyNode) (conn net.Conn, err error) { + if len(nodes) == 0 { + return net.DialTimeout("tcp", addr, DialTimeout) + } + + if c.KCPEnabled() { + kcpConn, err := c.getKCPConn() + if err != nil { + return nil, err + } + pc := NewProxyConn(kcpConn, nodes[0]) + if err := pc.Handshake(); err != nil { + pc.Close() + return nil, err + } + if err := pc.Connect(addr); err != nil { + pc.Close() + return nil, err + } + return pc, nil + } + + if withHttp2 && c.Http2Enabled() { + nodes = nodes[c.http2NodeIndex+1:] + if len(nodes) == 0 { + return c.http2Connect(addr) + } + } + pc, err := c.travelNodes(withHttp2, nodes...) + if err != nil { + return + } + if err = pc.Connect(addr); err != nil { + pc.Close() + return + } + conn = pc + return +} + +func (c *ProxyChain) travelNodes(withHttp2 bool, nodes ...ProxyNode) (conn *ProxyConn, err error) { + defer func() { + if err != nil && conn != nil { + conn.Close() + conn = nil + } + }() + + var cc net.Conn + node := nodes[0] + + if withHttp2 && c.Http2Enabled() { + cc, err = c.http2Connect(node.Addr) + } else { + cc, err = net.DialTimeout("tcp", node.Addr, DialTimeout) + } + if err != nil { + return + } + setKeepAlive(cc, KeepAliveTime) + + pc := NewProxyConn(cc, node) + if err = pc.Handshake(); err != nil { + return + } + conn = pc + for _, node := range nodes[1:] { + if err = conn.Connect(node.Addr); err != nil { + return + } + pc := NewProxyConn(conn, node) + if err = pc.Handshake(); err != nil { + return + } + conn = pc + } + return +} + +func (c *ProxyChain) initKCPSession() (err error) { + c.kcpMutex.Lock() + defer c.kcpMutex.Unlock() + + if c.kcpSession == nil || c.kcpSession.IsClosed() { + glog.V(LINFO).Infoln("[kcp] new kcp session") + c.kcpSession, err = DialKCP(c.nodes[0].Addr, c.kcpConfig) + } + return +} + +func (c *ProxyChain) getKCPConn() (conn net.Conn, err error) { + if !c.KCPEnabled() { + return nil, errors.New("KCP is not enabled") + } + + if err = c.initKCPSession(); err != nil { + return nil, err + } + return c.kcpSession.GetConn() +} + +// Initialize an HTTP2 transport if HTTP2 is enabled. +func (c *ProxyChain) getHttp2Conn(header http.Header) (net.Conn, error) { + if !c.Http2Enabled() { + return nil, errors.New("HTTP2 is not enabled") + } + http2Node := c.nodes[c.http2NodeIndex] + pr, pw := io.Pipe() + + if header == nil { + header = make(http.Header) + } + + req := http.Request{ + Method: http.MethodConnect, + URL: &url.URL{Scheme: "https", Host: http2Node.Addr}, + Header: header, + Proto: "HTTP/2.0", + ProtoMajor: 2, + ProtoMinor: 0, + Body: pr, + Host: http2Node.Addr, + ContentLength: -1, + } + if glog.V(LDEBUG) { + dump, _ := httputil.DumpRequest(&req, false) + glog.Infoln(string(dump)) + } + resp, err := c.http2Client.Do(&req) + if err != nil { + return nil, err + } + if glog.V(LDEBUG) { + dump, _ := httputil.DumpResponse(resp, false) + glog.Infoln(string(dump)) + } + if resp.StatusCode != http.StatusOK { + resp.Body.Close() + return nil, errors.New(resp.Status) + } + conn := &http2Conn{r: resp.Body, w: pw} + conn.remoteAddr, _ = net.ResolveTCPAddr("tcp", http2Node.Addr) + return conn, nil +} + +// Use HTTP2 as transport to connect target addr +func (c *ProxyChain) http2Connect(addr string) (net.Conn, error) { + if !c.Http2Enabled() { + return nil, errors.New("HTTP2 is not enabled") + } + http2Node := c.nodes[c.http2NodeIndex] + + header := make(http.Header) + header.Set("Gost-Target", addr) // Flag header to indicate the address that server connected to + if http2Node.User != nil { + header.Set("Proxy-Authorization", + "Basic "+base64.StdEncoding.EncodeToString([]byte(http2Node.User.String()))) + } + return c.getHttp2Conn(header) +} diff --git a/vendor/github.com/ginuerzh/gost/conn.go b/vendor/github.com/ginuerzh/gost/conn.go new file mode 100644 index 0000000..f31e7ae --- /dev/null +++ b/vendor/github.com/ginuerzh/gost/conn.go @@ -0,0 +1,252 @@ +package gost + +import ( + "bufio" + "bytes" + "crypto/tls" + "encoding/base64" + "errors" + "github.com/ginuerzh/gosocks5" + "github.com/golang/glog" + "github.com/shadowsocks/shadowsocks-go/shadowsocks" + "net" + "net/http" + "net/http/httputil" + "net/url" + "strconv" + "sync" + "time" +) + +type ProxyConn struct { + conn net.Conn + Node ProxyNode + handshaked bool + handshakeMutex sync.Mutex + handshakeErr error +} + +func NewProxyConn(conn net.Conn, node ProxyNode) *ProxyConn { + return &ProxyConn{ + conn: conn, + Node: node, + } +} + +// Handshake handshake with this proxy node based on the proxy node info: transport, protocol, authentication, etc. +// +// NOTE: any HTTP2 scheme will be treated as http (for protocol) or tls (for transport). +func (c *ProxyConn) Handshake() error { + c.handshakeMutex.Lock() + defer c.handshakeMutex.Unlock() + + if err := c.handshakeErr; err != nil { + return err + } + if c.handshaked { + return nil + } + c.handshakeErr = c.handshake() + return c.handshakeErr +} + +func (c *ProxyConn) handshake() error { + var tlsUsed bool + + switch c.Node.Transport { + case "ws": // websocket connection + u := url.URL{Scheme: "ws", Host: c.Node.Addr, Path: "/ws"} + conn, err := WebsocketClientConn(u.String(), c.conn, nil) + if err != nil { + return err + } + c.conn = conn + case "wss": // websocket security + tlsUsed = true + u := url.URL{Scheme: "wss", Host: c.Node.Addr, Path: "/ws"} + config := &tls.Config{ + InsecureSkipVerify: c.Node.insecureSkipVerify(), + ServerName: c.Node.serverName, + } + conn, err := WebsocketClientConn(u.String(), c.conn, config) + if err != nil { + return err + } + c.conn = conn + case "tls", "http2": // tls connection + tlsUsed = true + cfg := &tls.Config{ + InsecureSkipVerify: c.Node.insecureSkipVerify(), + ServerName: c.Node.serverName, + } + c.conn = tls.Client(c.conn, cfg) + case "h2": // same as http2, but just set a flag for later using. + tlsUsed = true + case "kcp": // kcp connection + tlsUsed = true + default: + } + + switch c.Node.Protocol { + case "socks", "socks5": // socks5 handshake with auth and tls supported + selector := &clientSelector{ + methods: []uint8{ + gosocks5.MethodNoAuth, + gosocks5.MethodUserPass, + //MethodTLS, + }, + user: c.Node.User, + } + + if !tlsUsed { // if transport is not security, enable security socks5 + selector.methods = append(selector.methods, MethodTLS) + selector.tlsConfig = &tls.Config{ + InsecureSkipVerify: c.Node.insecureSkipVerify(), + ServerName: c.Node.serverName, + } + } + + conn := gosocks5.ClientConn(c.conn, selector) + if err := conn.Handleshake(); err != nil { + return err + } + c.conn = conn + case "ss": // shadowsocks + if c.Node.User != nil { + method := c.Node.User.Username() + password, _ := c.Node.User.Password() + cipher, err := shadowsocks.NewCipher(method, password) + if err != nil { + return err + } + c.conn = &shadowConn{conn: shadowsocks.NewConn(c.conn, cipher)} + } + case "http", "http2": + fallthrough + default: + } + + c.handshaked = true + + return nil +} + +// Connect connect to addr through this proxy node +func (c *ProxyConn) Connect(addr string) error { + switch c.Node.Protocol { + case "ss": // shadowsocks + host, port, err := net.SplitHostPort(addr) + if err != nil { + return err + } + p, _ := strconv.Atoi(port) + req := gosocks5.NewRequest(gosocks5.CmdConnect, &gosocks5.Addr{ + Type: gosocks5.AddrDomain, + Host: host, + Port: uint16(p), + }) + buf := bytes.Buffer{} + if err := req.Write(&buf); err != nil { + return err + } + b := buf.Bytes() + if _, err := c.Write(b[3:]); err != nil { + return err + } + + glog.V(LDEBUG).Infoln("[ss]", req) + case "socks", "socks5": + host, port, err := net.SplitHostPort(addr) + if err != nil { + return err + } + p, _ := strconv.Atoi(port) + req := gosocks5.NewRequest(gosocks5.CmdConnect, &gosocks5.Addr{ + Type: gosocks5.AddrDomain, + Host: host, + Port: uint16(p), + }) + if err := req.Write(c); err != nil { + return err + } + glog.V(LDEBUG).Infoln("[socks5]", req) + + reply, err := gosocks5.ReadReply(c) + if err != nil { + return err + } + glog.V(LDEBUG).Infoln("[socks5]", reply) + if reply.Rep != gosocks5.Succeeded { + return errors.New("Service unavailable") + } + case "http": + fallthrough + default: + req := &http.Request{ + Method: http.MethodConnect, + URL: &url.URL{Host: addr}, + Host: addr, + ProtoMajor: 1, + ProtoMinor: 1, + Header: make(http.Header), + } + req.Header.Set("Proxy-Connection", "keep-alive") + if c.Node.User != nil { + req.Header.Set("Proxy-Authorization", + "Basic "+base64.StdEncoding.EncodeToString([]byte(c.Node.User.String()))) + } + if err := req.Write(c); err != nil { + return err + } + if glog.V(LDEBUG) { + dump, _ := httputil.DumpRequest(req, false) + glog.Infoln(string(dump)) + } + + resp, err := http.ReadResponse(bufio.NewReader(c), req) + if err != nil { + return err + } + if glog.V(LDEBUG) { + dump, _ := httputil.DumpResponse(resp, false) + glog.Infoln(string(dump)) + } + if resp.StatusCode != http.StatusOK { + return errors.New(resp.Status) + } + } + + return nil +} + +func (c *ProxyConn) Read(b []byte) (n int, err error) { + return c.conn.Read(b) +} + +func (c *ProxyConn) Write(b []byte) (n int, err error) { + return c.conn.Write(b) +} + +func (c *ProxyConn) Close() error { + return c.conn.Close() +} + +func (c *ProxyConn) LocalAddr() net.Addr { + return c.conn.LocalAddr() +} + +func (c *ProxyConn) RemoteAddr() net.Addr { + return c.conn.RemoteAddr() +} + +func (c *ProxyConn) SetDeadline(t time.Time) error { + return c.conn.SetDeadline(t) +} + +func (c *ProxyConn) SetReadDeadline(t time.Time) error { + return c.conn.SetReadDeadline(t) +} + +func (c *ProxyConn) SetWriteDeadline(t time.Time) error { + return c.conn.SetWriteDeadline(t) +} diff --git a/vendor/github.com/ginuerzh/gost/forward.go b/vendor/github.com/ginuerzh/gost/forward.go new file mode 100644 index 0000000..6bdbd9c --- /dev/null +++ b/vendor/github.com/ginuerzh/gost/forward.go @@ -0,0 +1,472 @@ +package gost + +import ( + "errors" + "fmt" + "github.com/ginuerzh/gosocks5" + "github.com/golang/glog" + "net" + "time" +) + +type TcpForwardServer struct { + Base *ProxyServer + Handler func(conn net.Conn, raddr net.Addr) +} + +func NewTcpForwardServer(base *ProxyServer) *TcpForwardServer { + return &TcpForwardServer{Base: base} +} + +func (s *TcpForwardServer) ListenAndServe() error { + raddr, err := net.ResolveTCPAddr("tcp", s.Base.Node.Remote) + if err != nil { + return err + } + + ln, err := net.Listen("tcp", s.Base.Node.Addr) + if err != nil { + return err + } + defer ln.Close() + + if s.Handler == nil { + s.Handler = s.handleTcpForward + } + + for { + conn, err := ln.Accept() + if err != nil { + glog.V(LWARNING).Infoln(err) + continue + } + setKeepAlive(conn, KeepAliveTime) + + go s.Handler(conn, raddr) + } +} + +func (s *TcpForwardServer) handleTcpForward(conn net.Conn, raddr net.Addr) { + defer conn.Close() + + glog.V(LINFO).Infof("[tcp] %s - %s", conn.RemoteAddr(), raddr) + cc, err := s.Base.Chain.Dial(raddr.String()) + if err != nil { + glog.V(LWARNING).Infof("[tcp] %s -> %s : %s", conn.RemoteAddr(), raddr, err) + return + } + defer cc.Close() + + glog.V(LINFO).Infof("[tcp] %s <-> %s", conn.RemoteAddr(), raddr) + s.Base.transport(conn, cc) + glog.V(LINFO).Infof("[tcp] %s >-< %s", conn.RemoteAddr(), raddr) +} + +type UdpForwardServer struct { + Base *ProxyServer +} + +func NewUdpForwardServer(base *ProxyServer) *UdpForwardServer { + return &UdpForwardServer{Base: base} +} + +func (s *UdpForwardServer) ListenAndServe() error { + laddr, err := net.ResolveUDPAddr("udp", s.Base.Node.Addr) + if err != nil { + return err + } + + raddr, err := net.ResolveUDPAddr("udp", s.Base.Node.Remote) + if err != nil { + return err + } + + conn, err := net.ListenUDP("udp", laddr) + if err != nil { + glog.V(LWARNING).Infof("[udp] %s -> %s : %s", laddr, raddr, err) + return err + } + defer conn.Close() + + if len(s.Base.Chain.nodes) == 0 { + for { + b := make([]byte, MediumBufferSize) + n, addr, err := conn.ReadFromUDP(b) + if err != nil { + glog.V(LWARNING).Infof("[udp] %s -> %s : %s", laddr, raddr, err) + continue + } + go func() { + s.handleUdpForwardLocal(conn, addr, raddr, b[:n]) + }() + } + } + + rChan, wChan := make(chan *gosocks5.UDPDatagram, 32), make(chan *gosocks5.UDPDatagram, 32) + + go func() { + for { + b := make([]byte, MediumBufferSize) + n, addr, err := conn.ReadFromUDP(b) + if err != nil { + glog.V(LWARNING).Infof("[udp] %s -> %s : %s", laddr, raddr, err) + return + } + + select { + case rChan <- gosocks5.NewUDPDatagram(gosocks5.NewUDPHeader(uint16(n), 0, ToSocksAddr(addr)), b[:n]): + default: + // glog.V(LWARNING).Infof("[udp-connect] %s -> %s : rbuf is full", laddr, raddr) + } + } + }() + + go func() { + for { + dgram := <-wChan + addr, err := net.ResolveUDPAddr("udp", dgram.Header.Addr.String()) + if err != nil { + glog.V(LWARNING).Infof("[udp] %s <- %s : %s", laddr, raddr, err) + continue // drop silently + } + if _, err = conn.WriteToUDP(dgram.Data, addr); err != nil { + glog.V(LWARNING).Infof("[udp] %s <- %s : %s", laddr, raddr, err) + return + } + } + }() + + for { + s.handleUdpForwardTunnel(laddr, raddr, rChan, wChan) + } +} + +func (s *UdpForwardServer) handleUdpForwardLocal(conn *net.UDPConn, laddr, raddr *net.UDPAddr, data []byte) { + lconn, err := net.ListenUDP("udp", nil) + if err != nil { + glog.V(LWARNING).Infof("[udp] %s -> %s : %s", laddr, raddr, err) + return + } + defer lconn.Close() + + if _, err := lconn.WriteToUDP(data, raddr); err != nil { + glog.V(LWARNING).Infof("[udp] %s -> %s : %s", laddr, raddr, err) + return + } + glog.V(LDEBUG).Infof("[udp] %s >>> %s length %d", laddr, raddr, len(data)) + + b := make([]byte, MediumBufferSize) + lconn.SetReadDeadline(time.Now().Add(ReadTimeout)) + n, addr, err := lconn.ReadFromUDP(b) + if err != nil { + glog.V(LWARNING).Infof("[udp] %s <- %s : %s", laddr, raddr, err) + return + } + glog.V(LDEBUG).Infof("[udp] %s <<< %s length %d", laddr, addr, n) + + if _, err := conn.WriteToUDP(b[:n], laddr); err != nil { + glog.V(LWARNING).Infof("[udp] %s <- %s : %s", laddr, raddr, err) + } + return +} + +func (s *UdpForwardServer) handleUdpForwardTunnel(laddr, raddr *net.UDPAddr, rChan, wChan chan *gosocks5.UDPDatagram) { + var cc net.Conn + var err error + retry := 0 + + for { + cc, err = s.prepareUdpConnectTunnel(raddr) + if err != nil { + glog.V(LWARNING).Infof("[udp] %s -> %s : %s", laddr, raddr, err) + time.Sleep((1 << uint(retry)) * time.Second) + if retry < 5 { + retry++ + } + continue + } + break + } + defer cc.Close() + + glog.V(LINFO).Infof("[udp] %s <-> %s", laddr, raddr) + + rExit := make(chan interface{}) + errc := make(chan error, 2) + + go func() { + for { + select { + case dgram := <-rChan: + if err := dgram.Write(cc); err != nil { + glog.V(LWARNING).Infof("[udp] %s -> %s : %s", laddr, raddr, err) + errc <- err + return + } + glog.V(LDEBUG).Infof("[udp-tun] %s >>> %s length: %d", laddr, raddr, len(dgram.Data)) + case <-rExit: + // glog.V(LDEBUG).Infof("[udp-connect] %s -> %s : exited", laddr, raddr) + return + } + } + }() + go func() { + for { + dgram, err := gosocks5.ReadUDPDatagram(cc) + if err != nil { + glog.V(LWARNING).Infof("[udp] %s <- %s : %s", laddr, raddr, err) + close(rExit) + errc <- err + return + } + + select { + case wChan <- dgram: + glog.V(LDEBUG).Infof("[udp-tun] %s <<< %s length: %d", laddr, raddr, len(dgram.Data)) + default: + } + } + }() + + select { + case <-errc: + //log.Println("w exit", err) + } + glog.V(LINFO).Infof("[udp] %s >-< %s", laddr, raddr) +} + +func (s *UdpForwardServer) prepareUdpConnectTunnel(addr net.Addr) (net.Conn, error) { + conn, err := s.Base.Chain.GetConn() + if err != nil { + return nil, err + } + + conn.SetWriteDeadline(time.Now().Add(WriteTimeout)) + if err = gosocks5.NewRequest(CmdUdpConnect, ToSocksAddr(addr)).Write(conn); err != nil { + conn.Close() + return nil, err + } + conn.SetWriteDeadline(time.Time{}) + + conn.SetReadDeadline(time.Now().Add(ReadTimeout)) + reply, err := gosocks5.ReadReply(conn) + if err != nil { + conn.Close() + return nil, err + } + conn.SetReadDeadline(time.Time{}) + + if reply.Rep != gosocks5.Succeeded { + conn.Close() + return nil, errors.New("failure") + } + + return conn, nil +} + +type RTcpForwardServer struct { + Base *ProxyServer +} + +func NewRTcpForwardServer(base *ProxyServer) *RTcpForwardServer { + return &RTcpForwardServer{Base: base} +} + +func (s *RTcpForwardServer) Serve() error { + if len(s.Base.Chain.nodes) == 0 { + return errors.New("rtcp: at least one -F must be assigned") + } + + laddr, err := net.ResolveTCPAddr("tcp", s.Base.Node.Addr) + if err != nil { + return err + } + raddr, err := net.ResolveTCPAddr("tcp", s.Base.Node.Remote) + if err != nil { + return err + } + + retry := 0 + for { + conn, err := s.Base.Chain.GetConn() + if err != nil { + glog.V(LWARNING).Infof("[rtcp] %s - %s : %s", laddr, raddr, err) + time.Sleep((1 << uint(retry)) * time.Second) + if retry < 5 { + retry++ + } + continue + } + retry = 0 + + if err := s.connectRTcpForward(conn, laddr, raddr); err != nil { + conn.Close() + time.Sleep(6 * time.Second) + } + } +} + +func (s *RTcpForwardServer) connectRTcpForward(conn net.Conn, laddr, raddr net.Addr) error { + glog.V(LINFO).Infof("[rtcp] %s - %s", laddr, raddr) + + req := gosocks5.NewRequest(gosocks5.CmdBind, ToSocksAddr(laddr)) + if err := req.Write(conn); err != nil { + glog.V(LWARNING).Infof("[rtcp] %s -> %s : %s", laddr, raddr, err) + return err + } + + // first reply, bind status + conn.SetReadDeadline(time.Now().Add(ReadTimeout)) + rep, err := gosocks5.ReadReply(conn) + if err != nil { + glog.V(LWARNING).Infof("[rtcp] %s -> %s : %s", laddr, raddr, err) + return err + } + conn.SetReadDeadline(time.Time{}) + if rep.Rep != gosocks5.Succeeded { + glog.V(LWARNING).Infof("[rtcp] %s -> %s : bind on %s failure", laddr, raddr, laddr) + return errors.New("Bind on " + laddr.String() + " failure") + } + glog.V(LINFO).Infof("[rtcp] %s - %s BIND ON %s OK", laddr, raddr, rep.Addr) + + // second reply, peer connection + rep, err = gosocks5.ReadReply(conn) + if err != nil { + glog.V(LWARNING).Infof("[rtcp] %s -> %s : %s", laddr, raddr, err) + return err + } + if rep.Rep != gosocks5.Succeeded { + glog.V(LWARNING).Infof("[rtcp] %s -> %s : peer connect failure", laddr, raddr) + return errors.New("peer connect failure") + } + + glog.V(LINFO).Infof("[rtcp] %s -> %s PEER %s CONNECTED", laddr, raddr, rep.Addr) + + go func() { + defer conn.Close() + + lconn, err := net.DialTimeout("tcp", raddr.String(), time.Second*180) + if err != nil { + glog.V(LWARNING).Infof("[rtcp] %s -> %s : %s", rep.Addr, raddr, err) + return + } + defer lconn.Close() + + glog.V(LINFO).Infof("[rtcp] %s <-> %s", rep.Addr, lconn.RemoteAddr()) + s.Base.transport(lconn, conn) + glog.V(LINFO).Infof("[rtcp] %s >-< %s", rep.Addr, lconn.RemoteAddr()) + }() + + return nil +} + +type RUdpForwardServer struct { + Base *ProxyServer +} + +func NewRUdpForwardServer(base *ProxyServer) *RUdpForwardServer { + return &RUdpForwardServer{Base: base} +} + +func (s *RUdpForwardServer) Serve() error { + if len(s.Base.Chain.nodes) == 0 { + return errors.New("rudp: at least one -F must be assigned") + } + + laddr, err := net.ResolveUDPAddr("udp", s.Base.Node.Addr) + if err != nil { + return err + } + raddr, err := net.ResolveUDPAddr("udp", s.Base.Node.Remote) + if err != nil { + return err + } + + retry := 0 + for { + conn, err := s.Base.Chain.GetConn() + if err != nil { + glog.V(LWARNING).Infof("[rudp] %s - %s : %s", laddr, raddr, err) + time.Sleep((1 << uint(retry)) * time.Second) + if retry < 5 { + retry++ + } + continue + } + retry = 0 + + if err := s.connectRUdpForward(conn, laddr, raddr); err != nil { + conn.Close() + time.Sleep(6 * time.Second) + } + } +} + +func (s *RUdpForwardServer) connectRUdpForward(conn net.Conn, laddr, raddr *net.UDPAddr) error { + glog.V(LINFO).Infof("[rudp] %s - %s", laddr, raddr) + + req := gosocks5.NewRequest(CmdUdpTun, ToSocksAddr(laddr)) + conn.SetWriteDeadline(time.Now().Add(WriteTimeout)) + if err := req.Write(conn); err != nil { + glog.V(LWARNING).Infof("[rudp] %s -> %s : %s", laddr, raddr, err) + return err + } + conn.SetWriteDeadline(time.Time{}) + + conn.SetReadDeadline(time.Now().Add(ReadTimeout)) + rep, err := gosocks5.ReadReply(conn) + if err != nil { + glog.V(LWARNING).Infof("[rudp] %s <- %s : %s", laddr, raddr, err) + return err + } + conn.SetReadDeadline(time.Time{}) + + if rep.Rep != gosocks5.Succeeded { + glog.V(LWARNING).Infof("[rudp] %s <- %s : bind on %s failure", laddr, raddr, laddr) + return errors.New(fmt.Sprintf("bind on %s failure", laddr)) + } + + glog.V(LINFO).Infof("[rudp] %s - %s BIND ON %s OK", laddr, raddr, rep.Addr) + + for { + dgram, err := gosocks5.ReadUDPDatagram(conn) + if err != nil { + glog.V(LWARNING).Infof("[rudp] %s <- %s : %s", laddr, raddr, err) + return err + } + + go func() { + b := make([]byte, MediumBufferSize) + + relay, err := net.DialUDP("udp", nil, raddr) + if err != nil { + glog.V(LWARNING).Infof("[rudp] %s -> %s : %s", laddr, raddr, err) + return + } + defer relay.Close() + + if _, err := relay.Write(dgram.Data); err != nil { + glog.V(LWARNING).Infof("[rudp] %s -> %s : %s", laddr, raddr, err) + return + } + glog.V(LDEBUG).Infof("[rudp] %s >>> %s length: %d", laddr, raddr, len(dgram.Data)) + + relay.SetReadDeadline(time.Now().Add(ReadTimeout)) + n, err := relay.Read(b) + if err != nil { + glog.V(LWARNING).Infof("[rudp] %s <- %s : %s", laddr, raddr, err) + return + } + relay.SetReadDeadline(time.Time{}) + + glog.V(LDEBUG).Infof("[rudp] %s <<< %s length: %d", laddr, raddr, n) + + conn.SetWriteDeadline(time.Now().Add(WriteTimeout)) + if err := gosocks5.NewUDPDatagram(gosocks5.NewUDPHeader(uint16(n), 0, dgram.Header.Addr), b[:n]).Write(conn); err != nil { + glog.V(LWARNING).Infof("[rudp] %s <- %s : %s", laddr, raddr, err) + return + } + conn.SetWriteDeadline(time.Time{}) + }() + } +} diff --git a/vendor/github.com/ginuerzh/gost/gost.go b/vendor/github.com/ginuerzh/gost/gost.go new file mode 100644 index 0000000..ef98ce6 --- /dev/null +++ b/vendor/github.com/ginuerzh/gost/gost.go @@ -0,0 +1,144 @@ +package gost + +import ( + "crypto/tls" + "encoding/base64" + "errors" + "github.com/golang/glog" + "net" + "strings" + "time" +) + +const ( + Version = "2.3-dev" +) + +// Log level for glog +const ( + LFATAL = iota + LERROR + LWARNING + LINFO + LDEBUG +) + +var ( + KeepAliveTime = 180 * time.Second + DialTimeout = 30 * time.Second + ReadTimeout = 90 * time.Second + WriteTimeout = 90 * time.Second +) + +var ( + SmallBufferSize = 1 * 1024 // 1KB small buffer + MediumBufferSize = 8 * 1024 // 8KB medium buffer + LargeBufferSize = 32 * 1024 // 32KB large buffer +) + +var ( + DefaultCertFile = "cert.pem" + DefaultKeyFile = "key.pem" + + // This is the default cert and key data for convenience, providing your own cert is recommended. + defaultRawCert = []byte(`-----BEGIN CERTIFICATE----- +MIIC5jCCAdCgAwIBAgIBADALBgkqhkiG9w0BAQUwEjEQMA4GA1UEChMHQWNtZSBD +bzAeFw0xNDAzMTcwNjIwNTFaFw0xNTAzMTcwNjIwNTFaMBIxEDAOBgNVBAoTB0Fj +bWUgQ28wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDccNO1xmd4lWSf +d/0/QS3E93cYIWHw831i/IKxigdRD/XMZonLdEHywW6lOiXazaP8e6CqPGSmnl0x +5k/3dvGCMj2JCVxM6+z7NpL+AiwvXmvkj/TOciCgwqssCwYS2CiVwjfazRjx1ZUJ +VDC5qiyRsfktQ2fVHrpnJGVSRagmiQgwGWBilVG9B8QvRtpQKN/GQGq17oIQm8aK +kOdPt93g93ojMIg7YJpgDgOirvVz/hDn7YD4ryrtPos9CMafFkJprymKpRHyvz7P +8a3+OkuPjFjPnwOHQ5u1U3+8vC44vfb1ExWzDLoT8Xp8Gndx39k0f7MVOol3GnYu +MN/dvNUdAgMBAAGjSzBJMA4GA1UdDwEB/wQEAwIAoDATBgNVHSUEDDAKBggrBgEF +BQcDATAMBgNVHRMBAf8EAjAAMBQGA1UdEQQNMAuCCWxvY2FsaG9zdDALBgkqhkiG +9w0BAQUDggEBAIG8CJqvTIgJnNOK+i5/IUc/3yF/mSCWuG8qP+Fmo2t6T0PVOtc0 +8wiWH5iWtCAhjn0MRY9l/hIjWm6gUZGHCGuEgsOPpJDYGoNLjH9Xwokm4y3LFNRK +UBrrrDbKRNibApBHCapPf6gC5sXcjOwx7P2/kiHDgY7YH47jfcRhtAPNsM4gjsEO +RmwENY+hRUFHIRfQTyalqND+x6PWhRo3K6hpHs4DQEYPq4P2kFPqUqSBymH+Ny5/ +BcQ3wdMNmC6Bm/oiL1QV0M+/InOsAgQk/EDd0kmoU1ZT2lYHQduGmP099bOlHNpS +uqO3vXF3q8SPPr/A9TqSs7BKkBQbe0+cdsA= +-----END CERTIFICATE-----`) + defaultRawKey = []byte(`-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEA3HDTtcZneJVkn3f9P0EtxPd3GCFh8PN9YvyCsYoHUQ/1zGaJ +y3RB8sFupTol2s2j/Hugqjxkpp5dMeZP93bxgjI9iQlcTOvs+zaS/gIsL15r5I/0 +znIgoMKrLAsGEtgolcI32s0Y8dWVCVQwuaoskbH5LUNn1R66ZyRlUkWoJokIMBlg +YpVRvQfEL0baUCjfxkBqte6CEJvGipDnT7fd4Pd6IzCIO2CaYA4Doq71c/4Q5+2A ++K8q7T6LPQjGnxZCaa8piqUR8r8+z/Gt/jpLj4xYz58Dh0ObtVN/vLwuOL329RMV +swy6E/F6fBp3cd/ZNH+zFTqJdxp2LjDf3bzVHQIDAQABAoIBAHal26147nQ+pHwY +jxwers3XDCjWvup7g79lfcqlKi79UiUEA6KYHm7UogMYewt7p4nb2KwH+XycvDiB +aAUf5flXpTs+6IkWauUDiLZi4PlV7uiEexUq5FjirlL0U/6MjbudX4bK4WQ4uxDc +WaV07Kw2iJFOOHLDKT0en9JaX5jtJNc4ZnE9efFoQ5jfypPWtRw65G1rULEg6nvc +GDh+1ce+4foCkpLRC9c24xAwJONZG6x3UqrSS9qfAsb73nWRQrTfUcO3nhoN8VvL +kL9skn1+S06NyUN0KoEtyRBp+RcpXSsBWAo6qZmo/WqhB/gjzWrxVwn20+yJSm35 +ZsMc6QECgYEA8GS+Mp9xfB2szWHz6YTOO1Uu4lHM1ccZMwS1G+dL0KO3uGAiPdvp +woVot6v6w88t7onXsLo5pgz7SYug0CpkF3K/MRd1Ar4lH7PK7IBQ6rFr9ppVxDbx +AEWRswUoPbKCr7W6HU8LbQHDavsDlEIwc6+DiwnL4BzlKjb7RpgQEz0CgYEA6sB5 +uHvx3Y5FDcGk1n73leQSAcq14l3ZLNpjrs8msoREDil/j5WmuSN58/7PGMiMgHEi +1vLm3H796JmvGr9OBvspOjHyk07ui2/We/j9Hoxm1VWhyi8HkLNDj70HKalTTFMz +RHO4O+0xCva+h9mKZrRMVktXr2jjdFn/0MYIZ2ECgYAIIsC1IeRLWQ3CHbCNlKsO +IwHlMvOFwKk/qsceXKOaOhA7szU1dr3gkXdL0Aw6mEZrrkqYdpUA46uVf54/rU+Z +445I8QxKvXiwK/uQKX+TkdGflPWWIG3jnnch4ejMvb/ihnn4B/bRB6A/fKNQXzUY +lTYUfI5j1VaEKTwz1W2l2QKBgByFCcSp+jZqhGUpc3dDsZyaOr3Q/Mvlju7uEVI5 +hIAHpaT60a6GBd1UPAqymEJwivFHzW3D0NxU6VAK68UaHMaoWNfjHY9b9YsnKS2i +kE3XzN56Ks+/avHfdYPO+UHMenw5V28nh+hv5pdoZrlmanQTz3pkaOC8o3WNQZEB +nh/BAoGBAMY5z2f1pmMhrvtPDSlEVjgjELbaInxFaxPLR4Pdyzn83gtIIU14+R8X +2LPs6PPwrNjWnIgrUSVXncIFL3pa45B+Mx1pYCpOAB1+nCZjIBQmpeo4Y0dwA/XH +85EthKPvoszm+OPbyI16OcePV5ocX7lupRYuAo0pek7bomhmHWHz +-----END RSA PRIVATE KEY-----`) +) + +var ( + ErrEmptyChain = errors.New("empty chain") +) + +func setKeepAlive(conn net.Conn, d time.Duration) error { + c, ok := conn.(*net.TCPConn) + if !ok { + return errors.New("Not a TCP connection") + } + if err := c.SetKeepAlive(true); err != nil { + return err + } + if err := c.SetKeepAlivePeriod(d); err != nil { + return err + } + return nil +} + +// Load the certificate from cert and key files, will use the default certificate if the provided info are invalid. +func LoadCertificate(certFile, keyFile string) (tls.Certificate, error) { + tlsCert, err := tls.LoadX509KeyPair(certFile, keyFile) + if err == nil { + return tlsCert, nil + } + glog.V(LWARNING).Infoln(err) + return tls.X509KeyPair(defaultRawCert, defaultRawKey) +} + +// Replace the default certificate by your own +func SetDefaultCertificate(rawCert, rawKey []byte) { + defaultRawCert = rawCert + defaultRawKey = rawKey +} + +func basicProxyAuth(proxyAuth string) (username, password string, ok bool) { + if proxyAuth == "" { + return + } + + if !strings.HasPrefix(proxyAuth, "Basic ") { + return + } + c, err := base64.StdEncoding.DecodeString(strings.TrimPrefix(proxyAuth, "Basic ")) + if err != nil { + return + } + cs := string(c) + s := strings.IndexByte(cs, ':') + if s < 0 { + return + } + + return cs[:s], cs[s+1:], true +} diff --git a/vendor/github.com/ginuerzh/gost/http.go b/vendor/github.com/ginuerzh/gost/http.go new file mode 100644 index 0000000..18418eb --- /dev/null +++ b/vendor/github.com/ginuerzh/gost/http.go @@ -0,0 +1,368 @@ +package gost + +import ( + "bufio" + "crypto/tls" + "encoding/base64" + "github.com/golang/glog" + "golang.org/x/net/http2" + "io" + "net" + "net/http" + "net/http/httputil" + //"strings" + "errors" + "time" +) + +type HttpServer struct { + conn net.Conn + Base *ProxyServer +} + +func NewHttpServer(conn net.Conn, base *ProxyServer) *HttpServer { + return &HttpServer{ + conn: conn, + Base: base, + } +} + +// Default HTTP server handler +func (s *HttpServer) HandleRequest(req *http.Request) { + glog.V(LINFO).Infof("[http] %s %s - %s %s", req.Method, s.conn.RemoteAddr(), req.Host, req.Proto) + + if glog.V(LDEBUG) { + dump, _ := httputil.DumpRequest(req, false) + glog.Infoln(string(dump)) + } + + if req.Method == "PRI" && req.ProtoMajor == 2 { + glog.V(LWARNING).Infof("[http] %s <- %s : Not an HTTP2 server", s.conn.RemoteAddr(), req.Host) + resp := "HTTP/1.1 400 Bad Request\r\n" + + "Proxy-Agent: gost/" + Version + "\r\n\r\n" + s.conn.Write([]byte(resp)) + return + } + + var username, password string + if s.Base.Node.User != nil { + username = s.Base.Node.User.Username() + password, _ = s.Base.Node.User.Password() + } + + u, p, _ := basicProxyAuth(req.Header.Get("Proxy-Authorization")) + req.Header.Del("Proxy-Authorization") + if (username != "" && u != username) || (password != "" && p != password) { + glog.V(LWARNING).Infof("[http] %s <- %s : proxy authentication required", s.conn.RemoteAddr(), req.Host) + resp := "HTTP/1.1 407 Proxy Authentication Required\r\n" + + "Proxy-Authenticate: Basic realm=\"gost\"\r\n" + + "Proxy-Agent: gost/" + Version + "\r\n\r\n" + s.conn.Write([]byte(resp)) + return + } + + // forward http request + lastNode := s.Base.Chain.lastNode + if lastNode != nil && (lastNode.Protocol == "http" || lastNode.Protocol == "") { + s.forwardRequest(req) + return + } + + c, err := s.Base.Chain.Dial(req.Host) + if err != nil { + glog.V(LWARNING).Infof("[http] %s -> %s : %s", s.conn.RemoteAddr(), req.Host, err) + + b := []byte("HTTP/1.1 503 Service unavailable\r\n" + + "Proxy-Agent: gost/" + Version + "\r\n\r\n") + glog.V(LDEBUG).Infof("[http] %s <- %s\n%s", s.conn.RemoteAddr(), req.Host, string(b)) + s.conn.Write(b) + return + } + defer c.Close() + + if req.Method == http.MethodConnect { + b := []byte("HTTP/1.1 200 Connection established\r\n" + + "Proxy-Agent: gost/" + Version + "\r\n\r\n") + glog.V(LDEBUG).Infof("[http] %s <- %s\n%s", s.conn.RemoteAddr(), req.Host, string(b)) + s.conn.Write(b) + } else { + req.Header.Del("Proxy-Connection") + req.Header.Set("Connection", "Keep-Alive") + + if err = req.Write(c); err != nil { + glog.V(LWARNING).Infof("[http] %s -> %s : %s", s.conn.RemoteAddr(), req.Host, err) + return + } + } + + glog.V(LINFO).Infof("[http] %s <-> %s", s.conn.RemoteAddr(), req.Host) + s.Base.transport(s.conn, c) + glog.V(LINFO).Infof("[http] %s >-< %s", s.conn.RemoteAddr(), req.Host) +} + +func (s *HttpServer) forwardRequest(req *http.Request) { + last := s.Base.Chain.lastNode + if last == nil { + return + } + cc, err := s.Base.Chain.GetConn() + if err != nil { + glog.V(LWARNING).Infof("[http] %s -> %s : %s", s.conn.RemoteAddr(), last.Addr, err) + + b := []byte("HTTP/1.1 503 Service unavailable\r\n" + + "Proxy-Agent: gost/" + Version + "\r\n\r\n") + glog.V(LDEBUG).Infof("[http] %s <- %s\n%s", s.conn.RemoteAddr(), last.Addr, string(b)) + s.conn.Write(b) + return + } + defer cc.Close() + + if last.User != nil { + req.Header.Set("Proxy-Authorization", + "Basic "+base64.StdEncoding.EncodeToString([]byte(last.User.String()))) + } + + cc.SetWriteDeadline(time.Now().Add(WriteTimeout)) + if err = req.WriteProxy(cc); err != nil { + glog.V(LWARNING).Infof("[http] %s -> %s : %s", s.conn.RemoteAddr(), req.Host, err) + return + } + cc.SetWriteDeadline(time.Time{}) + + glog.V(LINFO).Infof("[http] %s <-> %s", s.conn.RemoteAddr(), req.Host) + s.Base.transport(s.conn, cc) + glog.V(LINFO).Infof("[http] %s >-< %s", s.conn.RemoteAddr(), req.Host) + return +} + +type Http2Server struct { + Base *ProxyServer + Handler http.Handler + TLSConfig *tls.Config +} + +func NewHttp2Server(base *ProxyServer) *Http2Server { + return &Http2Server{Base: base} +} + +func (s *Http2Server) ListenAndServeTLS(config *tls.Config) error { + srv := http.Server{ + Addr: s.Base.Node.Addr, + Handler: s.Handler, + TLSConfig: config, + } + if srv.Handler == nil { + srv.Handler = http.HandlerFunc(s.HandleRequest) + } + http2.ConfigureServer(&srv, nil) + return srv.ListenAndServeTLS("", "") +} + +// Default HTTP2 server handler +func (s *Http2Server) HandleRequest(w http.ResponseWriter, req *http.Request) { + target := req.Header.Get("Gost-Target") + if target == "" { + target = req.Host + } + glog.V(LINFO).Infof("[http2] %s %s - %s %s", req.Method, req.RemoteAddr, target, req.Proto) + if glog.V(LDEBUG) { + dump, _ := httputil.DumpRequest(req, false) + glog.Infoln(string(dump)) + } + + w.Header().Set("Proxy-Agent", "gost/"+Version) + + // HTTP2 as transport + if req.Header.Get("Proxy-Switch") == "gost" { + conn, err := s.Upgrade(w, req) + if err != nil { + glog.V(LINFO).Infof("[http2] %s -> %s : %s", req.RemoteAddr, target, err) + return + } + glog.V(LINFO).Infof("[http2] %s - %s : switch to HTTP2 transport mode OK", req.RemoteAddr, target) + s.Base.handleConn(conn) + return + } + + var username, password string + if s.Base.Node.User != nil { + username = s.Base.Node.User.Username() + password, _ = s.Base.Node.User.Password() + } + + u, p, _ := basicProxyAuth(req.Header.Get("Proxy-Authorization")) + req.Header.Del("Proxy-Authorization") + if (username != "" && u != username) || (password != "" && p != password) { + glog.V(LWARNING).Infof("[http2] %s <- %s : proxy authentication required", req.RemoteAddr, target) + w.WriteHeader(http.StatusProxyAuthRequired) + return + } + + c, err := s.Base.Chain.Dial(target) + if err != nil { + glog.V(LWARNING).Infof("[http2] %s -> %s : %s", req.RemoteAddr, target, err) + w.WriteHeader(http.StatusServiceUnavailable) + return + } + defer c.Close() + + glog.V(LINFO).Infof("[http2] %s <-> %s", req.RemoteAddr, target) + + if req.Method == http.MethodConnect { + w.WriteHeader(http.StatusOK) + if fw, ok := w.(http.Flusher); ok { + fw.Flush() + } + + // compatible with HTTP1.x + if hj, ok := w.(http.Hijacker); ok && req.ProtoMajor == 1 { + // we take over the underly connection + conn, _, err := hj.Hijack() + if err != nil { + glog.V(LWARNING).Infof("[http2] %s -> %s : %s", req.RemoteAddr, target, err) + w.WriteHeader(http.StatusInternalServerError) + return + } + defer conn.Close() + + s.Base.transport(conn, c) + return + } + + errc := make(chan error, 2) + + go func() { + _, err := io.Copy(c, req.Body) + errc <- err + }() + go func() { + _, err := io.Copy(flushWriter{w}, c) + errc <- err + }() + + select { + case <-errc: + // glog.V(LWARNING).Infoln("exit", err) + } + glog.V(LINFO).Infof("[http2] %s >-< %s", req.RemoteAddr, target) + return + } + + req.Header.Set("Connection", "Keep-Alive") + if err = req.Write(c); err != nil { + glog.V(LWARNING).Infof("[http2] %s -> %s : %s", req.RemoteAddr, target, err) + return + } + + resp, err := http.ReadResponse(bufio.NewReader(c), req) + if err != nil { + glog.V(LWARNING).Infoln(err) + return + } + defer resp.Body.Close() + + for k, v := range resp.Header { + for _, vv := range v { + w.Header().Add(k, vv) + } + } + w.WriteHeader(resp.StatusCode) + if _, err := io.Copy(flushWriter{w}, resp.Body); err != nil { + glog.V(LWARNING).Infof("[http2] %s <- %s : %s", req.RemoteAddr, target, err) + } + + glog.V(LINFO).Infof("[http2] %s >-< %s", req.RemoteAddr, target) +} + +// Upgrade upgrade an HTTP2 request to a bidirectional connection that preparing for tunneling other protocol, just like a websocket connection. +func (s *Http2Server) Upgrade(w http.ResponseWriter, r *http.Request) (net.Conn, error) { + w.Header().Set("Proxy-Agent", "gost/"+Version) + + if r.Method != http.MethodConnect { + w.WriteHeader(http.StatusMethodNotAllowed) + return nil, errors.New("Method not allowed") + } + + w.WriteHeader(http.StatusOK) + + if fw, ok := w.(http.Flusher); ok { + fw.Flush() + } + + conn := &http2Conn{r: r.Body, w: flushWriter{w}} + conn.remoteAddr, _ = net.ResolveTCPAddr("tcp", r.RemoteAddr) + conn.localAddr, _ = net.ResolveTCPAddr("tcp", r.Host) + return conn, nil +} + +// HTTP2 client connection, wrapped up just like a net.Conn +type http2Conn struct { + r io.Reader + w io.Writer + remoteAddr net.Addr + localAddr net.Addr +} + +func (c *http2Conn) Read(b []byte) (n int, err error) { + return c.r.Read(b) +} + +func (c *http2Conn) Write(b []byte) (n int, err error) { + return c.w.Write(b) +} + +func (c *http2Conn) Close() (err error) { + if rc, ok := c.r.(io.Closer); ok { + err = rc.Close() + } + if w, ok := c.w.(io.Closer); ok { + err = w.Close() + } + return +} + +func (c *http2Conn) LocalAddr() net.Addr { + return c.localAddr +} + +func (c *http2Conn) RemoteAddr() net.Addr { + return c.remoteAddr +} + +func (c *http2Conn) SetDeadline(t time.Time) error { + return &net.OpError{Op: "set", Net: "http2", Source: nil, Addr: nil, Err: errors.New("deadline not supported")} +} + +func (c *http2Conn) SetReadDeadline(t time.Time) error { + return &net.OpError{Op: "set", Net: "http2", Source: nil, Addr: nil, Err: errors.New("deadline not supported")} +} + +func (c *http2Conn) SetWriteDeadline(t time.Time) error { + return &net.OpError{Op: "set", Net: "http2", Source: nil, Addr: nil, Err: errors.New("deadline not supported")} +} + +type flushWriter struct { + w io.Writer +} + +func (fw flushWriter) Write(p []byte) (n int, err error) { + defer func() { + if r := recover(); r != nil { + if s, ok := r.(string); ok { + err = errors.New(s) + return + } + err = r.(error) + } + }() + + n, err = fw.w.Write(p) + if err != nil { + // glog.V(LWARNING).Infoln("flush writer:", err) + return + } + if f, ok := fw.w.(http.Flusher); ok { + f.Flush() + } + return +} diff --git a/vendor/github.com/ginuerzh/gost/kcp.go b/vendor/github.com/ginuerzh/gost/kcp.go new file mode 100644 index 0000000..10752c3 --- /dev/null +++ b/vendor/github.com/ginuerzh/gost/kcp.go @@ -0,0 +1,369 @@ +// KCP feature is based on https://github.com/xtaci/kcptun + +package gost + +import ( + "crypto/sha1" + "encoding/json" + "github.com/golang/glog" + "github.com/klauspost/compress/snappy" + "golang.org/x/crypto/pbkdf2" + "gopkg.in/xtaci/kcp-go.v2" + "gopkg.in/xtaci/smux.v1" + "net" + "os" + "time" +) + +const ( + DefaultKCPConfigFile = "kcp.json" +) + +var ( + SALT = "kcp-go" +) + +type KCPConfig struct { + Key string `json:"key"` + Crypt string `json:"crypt"` + Mode string `json:"mode"` + MTU int `json:"mtu"` + SndWnd int `json:"sndwnd"` + RcvWnd int `json:"rcvwnd"` + DataShard int `json:"datashard"` + ParityShard int `json:"parityshard"` + DSCP int `json:"dscp"` + NoComp bool `json:"nocomp"` + AckNodelay bool `json:"acknodelay"` + NoDelay int `json:"nodelay"` + Interval int `json:"interval"` + Resend int `json:"resend"` + NoCongestion int `json:"nc"` + SockBuf int `json:"sockbuf"` + KeepAlive int `json:"keepalive"` +} + +func ParseKCPConfig(configFile string) (*KCPConfig, error) { + if configFile == "" { + configFile = DefaultKCPConfigFile + } + file, err := os.Open(configFile) + if err != nil { + return nil, err + } + defer file.Close() + + config := &KCPConfig{} + if err = json.NewDecoder(file).Decode(config); err != nil { + return nil, err + } + return config, nil +} + +func (c *KCPConfig) Init() { + switch c.Mode { + case "normal": + c.NoDelay, c.Interval, c.Resend, c.NoCongestion = 0, 30, 2, 1 + case "fast2": + c.NoDelay, c.Interval, c.Resend, c.NoCongestion = 1, 20, 2, 1 + case "fast3": + c.NoDelay, c.Interval, c.Resend, c.NoCongestion = 1, 10, 2, 1 + case "fast": + fallthrough + default: + c.NoDelay, c.Interval, c.Resend, c.NoCongestion = 0, 20, 2, 1 + } +} + +var ( + DefaultKCPConfig = &KCPConfig{ + Key: "it's a secrect", + Crypt: "aes", + Mode: "fast", + MTU: 1350, + SndWnd: 1024, + RcvWnd: 1024, + DataShard: 10, + ParityShard: 3, + DSCP: 0, + NoComp: false, + AckNodelay: false, + NoDelay: 0, + Interval: 40, + Resend: 0, + NoCongestion: 0, + SockBuf: 4194304, + KeepAlive: 10, + } +) + +type KCPServer struct { + Base *ProxyServer + Config *KCPConfig +} + +func NewKCPServer(base *ProxyServer, config *KCPConfig) *KCPServer { + return &KCPServer{Base: base, Config: config} +} + +func (s *KCPServer) ListenAndServe() (err error) { + if s.Config == nil { + s.Config = DefaultKCPConfig + } + s.Config.Init() + + ln, err := kcp.ListenWithOptions(s.Base.Node.Addr, + blockCrypt(s.Config.Key, s.Config.Crypt, SALT), s.Config.DataShard, s.Config.ParityShard) + if err != nil { + return err + } + if err = ln.SetDSCP(s.Config.DSCP); err != nil { + glog.V(LWARNING).Infoln("[kcp]", err) + } + if err = ln.SetReadBuffer(s.Config.SockBuf); err != nil { + glog.V(LWARNING).Infoln("[kcp]", err) + } + if err = ln.SetWriteBuffer(s.Config.SockBuf); err != nil { + glog.V(LWARNING).Infoln("[kcp]", err) + } + + for { + conn, err := ln.AcceptKCP() + if err != nil { + glog.V(LWARNING).Infoln(err) + continue + } + + conn.SetStreamMode(true) + conn.SetNoDelay(s.Config.NoDelay, s.Config.Interval, s.Config.Resend, s.Config.NoCongestion) + conn.SetMtu(s.Config.MTU) + conn.SetWindowSize(s.Config.SndWnd, s.Config.RcvWnd) + conn.SetACKNoDelay(s.Config.AckNodelay) + conn.SetKeepAlive(s.Config.KeepAlive) + + go s.handleMux(conn) + } +} + +func (s *KCPServer) handleMux(conn net.Conn) { + smuxConfig := smux.DefaultConfig() + smuxConfig.MaxReceiveBuffer = s.Config.SockBuf + + glog.V(LINFO).Infof("[kcp] %s - %s", conn.RemoteAddr(), s.Base.Node.Addr) + + if !s.Config.NoComp { + conn = newCompStreamConn(conn) + } + + mux, err := smux.Server(conn, smuxConfig) + if err != nil { + glog.V(LWARNING).Infoln("[kcp]", err) + return + } + defer mux.Close() + + glog.V(LINFO).Infof("[kcp] %s <-> %s", conn.RemoteAddr(), s.Base.Node.Addr) + defer glog.V(LINFO).Infof("[kcp] %s >-< %s", conn.RemoteAddr(), s.Base.Node.Addr) + + for { + stream, err := mux.AcceptStream() + if err != nil { + glog.V(LWARNING).Infoln("[kcp]", err) + return + } + go s.Base.handleConn(NewKCPConn(conn, stream)) + } +} + +func blockCrypt(key, crypt, salt string) (block kcp.BlockCrypt) { + pass := pbkdf2.Key([]byte(key), []byte(salt), 4096, 32, sha1.New) + + switch crypt { + case "tea": + block, _ = kcp.NewTEABlockCrypt(pass[:16]) + case "xor": + block, _ = kcp.NewSimpleXORBlockCrypt(pass) + case "none": + block, _ = kcp.NewNoneBlockCrypt(pass) + case "aes-128": + block, _ = kcp.NewAESBlockCrypt(pass[:16]) + case "aes-192": + block, _ = kcp.NewAESBlockCrypt(pass[:24]) + case "blowfish": + block, _ = kcp.NewBlowfishBlockCrypt(pass) + case "twofish": + block, _ = kcp.NewTwofishBlockCrypt(pass) + case "cast5": + block, _ = kcp.NewCast5BlockCrypt(pass[:16]) + case "3des": + block, _ = kcp.NewTripleDESBlockCrypt(pass[:24]) + case "xtea": + block, _ = kcp.NewXTEABlockCrypt(pass[:16]) + case "salsa20": + block, _ = kcp.NewSalsa20BlockCrypt(pass) + case "aes": + fallthrough + default: // aes + block, _ = kcp.NewAESBlockCrypt(pass) + } + return +} + +type KCPSession struct { + conn net.Conn + session *smux.Session +} + +func DialKCP(addr string, config *KCPConfig) (*KCPSession, error) { + if config == nil { + config = DefaultKCPConfig + } + config.Init() + + kcpconn, err := kcp.DialWithOptions(addr, + blockCrypt(config.Key, config.Crypt, SALT), config.DataShard, config.ParityShard) + if err != nil { + return nil, err + } + + kcpconn.SetStreamMode(true) + kcpconn.SetNoDelay(config.NoDelay, config.Interval, config.Resend, config.NoCongestion) + kcpconn.SetWindowSize(config.SndWnd, config.RcvWnd) + kcpconn.SetMtu(config.MTU) + kcpconn.SetACKNoDelay(config.AckNodelay) + kcpconn.SetKeepAlive(config.KeepAlive) + + if err := kcpconn.SetDSCP(config.DSCP); err != nil { + glog.V(LWARNING).Infoln("[kcp]", err) + } + if err := kcpconn.SetReadBuffer(config.SockBuf); err != nil { + glog.V(LWARNING).Infoln("[kcp]", err) + } + if err := kcpconn.SetWriteBuffer(config.SockBuf); err != nil { + glog.V(LWARNING).Infoln("[kcp]", err) + } + + // stream multiplex + smuxConfig := smux.DefaultConfig() + smuxConfig.MaxReceiveBuffer = config.SockBuf + var conn net.Conn = kcpconn + if !config.NoComp { + conn = newCompStreamConn(kcpconn) + } + session, err := smux.Client(conn, smuxConfig) + if err != nil { + conn.Close() + return nil, err + } + return &KCPSession{conn: conn, session: session}, nil +} + +func (session *KCPSession) GetConn() (*KCPConn, error) { + stream, err := session.session.OpenStream() + if err != nil { + session.Close() + return nil, err + } + return NewKCPConn(session.conn, stream), nil +} + +func (session *KCPSession) Close() error { + return session.session.Close() +} + +func (session *KCPSession) IsClosed() bool { + return session.session.IsClosed() +} + +func (session *KCPSession) NumStreams() int { + return session.session.NumStreams() +} + +type KCPConn struct { + conn net.Conn + stream *smux.Stream +} + +func NewKCPConn(conn net.Conn, stream *smux.Stream) *KCPConn { + return &KCPConn{conn: conn, stream: stream} +} + +func (c *KCPConn) Read(b []byte) (n int, err error) { + return c.stream.Read(b) +} + +func (c *KCPConn) Write(b []byte) (n int, err error) { + return c.stream.Write(b) +} + +func (c *KCPConn) Close() error { + return c.stream.Close() +} + +func (c *KCPConn) LocalAddr() net.Addr { + return c.conn.LocalAddr() +} + +func (c *KCPConn) RemoteAddr() net.Addr { + return c.conn.RemoteAddr() +} + +func (c *KCPConn) SetDeadline(t time.Time) error { + return c.conn.SetDeadline(t) +} + +func (c *KCPConn) SetReadDeadline(t time.Time) error { + return c.conn.SetReadDeadline(t) +} + +func (c *KCPConn) SetWriteDeadline(t time.Time) error { + return c.conn.SetWriteDeadline(t) +} + +type compStreamConn struct { + conn net.Conn + w *snappy.Writer + r *snappy.Reader +} + +func newCompStreamConn(conn net.Conn) *compStreamConn { + c := new(compStreamConn) + c.conn = conn + c.w = snappy.NewBufferedWriter(conn) + c.r = snappy.NewReader(conn) + return c +} + +func (c *compStreamConn) Read(b []byte) (n int, err error) { + return c.r.Read(b) +} + +func (c *compStreamConn) Write(b []byte) (n int, err error) { + n, err = c.w.Write(b) + err = c.w.Flush() + return n, err +} + +func (c *compStreamConn) Close() error { + return c.conn.Close() +} + +func (c *compStreamConn) LocalAddr() net.Addr { + return c.conn.LocalAddr() +} + +func (c *compStreamConn) RemoteAddr() net.Addr { + return c.conn.RemoteAddr() +} + +func (c *compStreamConn) SetDeadline(t time.Time) error { + return c.conn.SetDeadline(t) +} + +func (c *compStreamConn) SetReadDeadline(t time.Time) error { + return c.conn.SetReadDeadline(t) +} + +func (c *compStreamConn) SetWriteDeadline(t time.Time) error { + return c.conn.SetWriteDeadline(t) +} diff --git a/vendor/github.com/ginuerzh/gost/node.go b/vendor/github.com/ginuerzh/gost/node.go new file mode 100644 index 0000000..5c730ae --- /dev/null +++ b/vendor/github.com/ginuerzh/gost/node.go @@ -0,0 +1,119 @@ +package gost + +import ( + "fmt" + "net" + "net/url" + "strconv" + "strings" +) + +// Proxy node represent a proxy +type ProxyNode struct { + Addr string // [host]:port + Protocol string // protocol: http/socks5/ss + Transport string // transport: ws/wss/tls/http2/tcp/udp/rtcp/rudp + Remote string // remote address, used by tcp/udp port forwarding + User *url.Userinfo // authentication for proxy + values url.Values + serverName string + conn net.Conn +} + +// The proxy node string pattern is [scheme://][user:pass@host]:port. +// +// Scheme can be devided into two parts by character '+', such as: http+tls. +func ParseProxyNode(s string) (node ProxyNode, err error) { + if !strings.Contains(s, "://") { + s = "gost://" + s + } + u, err := url.Parse(s) + if err != nil { + return + } + + node = ProxyNode{ + Addr: u.Host, + User: u.User, + values: u.Query(), + serverName: u.Host, + } + + if strings.Contains(u.Host, ":") { + node.serverName, _, _ = net.SplitHostPort(u.Host) + if node.serverName == "" { + node.serverName = "localhost" // default server name + } + } + + schemes := strings.Split(u.Scheme, "+") + if len(schemes) == 1 { + node.Protocol = schemes[0] + node.Transport = schemes[0] + } + if len(schemes) == 2 { + node.Protocol = schemes[0] + node.Transport = schemes[1] + } + + switch node.Transport { + case "ws", "wss", "tls", "http2", "ssu", "quic", "kcp": + case "https": + node.Protocol = "http" + node.Transport = "tls" + case "tcp", "udp": // started from v2.1, tcp and udp are for local port forwarding + node.Remote = strings.Trim(u.EscapedPath(), "/") + case "rtcp", "rudp": // started from v2.1, rtcp and rudp are for remote port forwarding + node.Remote = strings.Trim(u.EscapedPath(), "/") + default: + node.Transport = "" + } + + switch node.Protocol { + case "http", "http2", "socks", "socks5", "ss": + default: + node.Protocol = "" + } + + return +} + +// Get get node parameter by key +func (node *ProxyNode) Get(key string) string { + return node.values.Get(key) +} + +func (node *ProxyNode) getBool(key string) bool { + s := node.Get(key) + if b, _ := strconv.ParseBool(s); b { + return b + } + n, _ := strconv.Atoi(s) + return n > 0 +} + +func (node *ProxyNode) Set(key, value string) { + node.values.Set(key, value) +} + +func (node *ProxyNode) insecureSkipVerify() bool { + return !node.getBool("secure") +} + +func (node *ProxyNode) certFile() string { + if cert := node.Get("cert"); cert != "" { + return cert + } + return DefaultCertFile +} + +func (node *ProxyNode) keyFile() string { + if key := node.Get("key"); key != "" { + return key + } + return DefaultKeyFile +} + +func (node ProxyNode) String() string { + return fmt.Sprintf("transport: %s, protocol: %s, addr: %s", node.Transport, node.Protocol, node.Addr) +} diff --git a/vendor/github.com/ginuerzh/gost/quic.go b/vendor/github.com/ginuerzh/gost/quic.go new file mode 100644 index 0000000..0d97061 --- /dev/null +++ b/vendor/github.com/ginuerzh/gost/quic.go @@ -0,0 +1,80 @@ +package gost + +import ( + "bufio" + "crypto/tls" + "github.com/golang/glog" + "github.com/lucas-clemente/quic-go/h2quic" + "io" + "net/http" + "net/http/httputil" +) + +type QuicServer struct { + Base *ProxyServer + Handler http.Handler + TLSConfig *tls.Config +} + +func NewQuicServer(base *ProxyServer) *QuicServer { + return &QuicServer{Base: base} +} + +func (s *QuicServer) ListenAndServeTLS(config *tls.Config) error { + server := &h2quic.Server{ + Server: &http.Server{ + Addr: s.Base.Node.Addr, + Handler: s.Handler, + TLSConfig: config, + }, + } + if server.Handler == nil { + server.Handler = http.HandlerFunc(s.HandleRequest) + } + return server.ListenAndServe() +} + +func (s *QuicServer) HandleRequest(w http.ResponseWriter, req *http.Request) { + target := req.Host + glog.V(LINFO).Infof("[quic] %s %s - %s %s", req.Method, req.RemoteAddr, target, req.Proto) + + if glog.V(LDEBUG) { + dump, _ := httputil.DumpRequest(req, false) + glog.Infoln(string(dump)) + } + + c, err := s.Base.Chain.Dial(target) + if err != nil { + glog.V(LWARNING).Infof("[quic] %s -> %s : %s", req.RemoteAddr, target, err) + w.WriteHeader(http.StatusServiceUnavailable) + return + } + defer c.Close() + + glog.V(LINFO).Infof("[quic] %s <-> %s", req.RemoteAddr, target) + + req.Header.Set("Connection", "Keep-Alive") + if err = req.Write(c); err != nil { + glog.V(LWARNING).Infof("[quic] %s -> %s : %s", req.RemoteAddr, target, err) + return + } + + resp, err := http.ReadResponse(bufio.NewReader(c), req) + if err != nil { + glog.V(LWARNING).Infoln(err) + return + } + defer resp.Body.Close() + + for k, v := range resp.Header { + for _, vv := range v { + w.Header().Add(k, vv) + } + } + w.WriteHeader(resp.StatusCode) + if _, err := io.Copy(flushWriter{w}, resp.Body); err != nil { + glog.V(LWARNING).Infof("[quic] %s <- %s : %s", req.RemoteAddr, target, err) + } + + glog.V(LINFO).Infof("[quic] %s >-< %s", req.RemoteAddr, target) +} diff --git a/vendor/github.com/ginuerzh/gost/server.go b/vendor/github.com/ginuerzh/gost/server.go new file mode 100644 index 0000000..438e542 --- /dev/null +++ b/vendor/github.com/ginuerzh/gost/server.go @@ -0,0 +1,233 @@ +package gost + +import ( + "bufio" + "crypto/tls" + "github.com/ginuerzh/gosocks5" + "github.com/golang/glog" + ss "github.com/shadowsocks/shadowsocks-go/shadowsocks" + "io" + "net" + "net/http" +) + +type ProxyServer struct { + Node ProxyNode + Chain *ProxyChain + TLSConfig *tls.Config + selector *serverSelector + cipher *ss.Cipher +} + +func NewProxyServer(node ProxyNode, chain *ProxyChain, config *tls.Config) *ProxyServer { + if chain == nil { + chain = NewProxyChain() + } + if config == nil { + config = &tls.Config{} + } + + var cipher *ss.Cipher + if node.Protocol == "ss" && node.User != nil { + var err error + method := node.User.Username() + password, _ := node.User.Password() + cipher, err = ss.NewCipher(method, password) + if err != nil { + glog.Fatal(err) + } + } + return &ProxyServer{ + Node: node, + Chain: chain, + TLSConfig: config, + selector: &serverSelector{ // socks5 server selector + // methods that socks5 server supported + methods: []uint8{ + gosocks5.MethodNoAuth, + gosocks5.MethodUserPass, + MethodTLS, + MethodTLSAuth, + }, + user: node.User, + tlsConfig: config, + }, + cipher: cipher, + } +} + +func (s *ProxyServer) Serve() error { + var ln net.Listener + var err error + node := s.Node + + switch node.Transport { + case "ws": // websocket connection + return NewWebsocketServer(s).ListenAndServe() + case "wss": // websocket security connection + return NewWebsocketServer(s).ListenAndServeTLS(s.TLSConfig) + case "tls": // tls connection + ln, err = tls.Listen("tcp", node.Addr, s.TLSConfig) + case "http2": // Standard HTTP2 proxy server, compatible with HTTP1.x. + server := NewHttp2Server(s) + server.Handler = http.HandlerFunc(server.HandleRequest) + return server.ListenAndServeTLS(s.TLSConfig) + case "tcp": // Local TCP port forwarding + return NewTcpForwardServer(s).ListenAndServe() + case "udp": // Local UDP port forwarding + return NewUdpForwardServer(s).ListenAndServe() + case "rtcp": // Remote TCP port forwarding + return NewRTcpForwardServer(s).Serve() + case "rudp": // Remote UDP port forwarding + return NewRUdpForwardServer(s).Serve() + case "ssu": // TODO: shadowsocks udp relay + return NewShadowUdpServer(s).ListenAndServe() + case "quic": + return NewQuicServer(s).ListenAndServeTLS(s.TLSConfig) + case "kcp": + config, err := ParseKCPConfig(s.Node.Get("c")) + if err != nil { + glog.V(LWARNING).Infoln("[kcp]", err) + } + // override crypt and key if specified explicitly + if s.Node.User != nil { + config.Crypt = s.Node.User.Username() + config.Key, _ = s.Node.User.Password() + } + return NewKCPServer(s, config).ListenAndServe() + default: + ln, err = net.Listen("tcp", node.Addr) + } + + if err != nil { + return err + } + + defer ln.Close() + + for { + conn, err := ln.Accept() + if err != nil { + glog.V(LWARNING).Infoln(err) + continue + } + + setKeepAlive(conn, KeepAliveTime) + + go s.handleConn(conn) + } +} + +func (s *ProxyServer) handleConn(conn net.Conn) { + defer conn.Close() + + switch s.Node.Protocol { + case "ss": // shadowsocks + server := NewShadowServer(ss.NewConn(conn, s.cipher.Copy()), s) + server.OTA = s.Node.getBool("ota") + server.Serve() + return + case "http": + req, err := http.ReadRequest(bufio.NewReader(conn)) + if err != nil { + glog.V(LWARNING).Infoln("[http]", err) + return + } + NewHttpServer(conn, s).HandleRequest(req) + return + case "socks", "socks5": + conn = gosocks5.ServerConn(conn, s.selector) + req, err := gosocks5.ReadRequest(conn) + if err != nil { + glog.V(LWARNING).Infoln("[socks5]", err) + return + } + NewSocks5Server(conn, s).HandleRequest(req) + return + } + + // http or socks5 + b := make([]byte, MediumBufferSize) + + n, err := io.ReadAtLeast(conn, b, 2) + if err != nil { + glog.V(LWARNING).Infoln(err) + return + } + + // TODO: use bufio.Reader + if b[0] == gosocks5.Ver5 { + mn := int(b[1]) // methods count + length := 2 + mn + if n < length { + if _, err := io.ReadFull(conn, b[n:length]); err != nil { + glog.V(LWARNING).Infoln("[socks5]", err) + return + } + } + // TODO: use gosocks5.ServerConn + methods := b[2 : 2+mn] + method := s.selector.Select(methods...) + if _, err := conn.Write([]byte{gosocks5.Ver5, method}); err != nil { + glog.V(LWARNING).Infoln("[socks5] select:", err) + return + } + c, err := s.selector.OnSelected(method, conn) + if err != nil { + glog.V(LWARNING).Infoln("[socks5] onselected:", err) + return + } + conn = c + + req, err := gosocks5.ReadRequest(conn) + if err != nil { + glog.V(LWARNING).Infoln("[socks5] request:", err) + return + } + NewSocks5Server(conn, s).HandleRequest(req) + return + } + + req, err := http.ReadRequest(bufio.NewReader(&reqReader{b: b[:n], r: conn})) + if err != nil { + glog.V(LWARNING).Infoln("[http]", err) + return + } + NewHttpServer(conn, s).HandleRequest(req) +} + +func (_ *ProxyServer) transport(conn1, conn2 net.Conn) (err error) { + errc := make(chan error, 2) + + go func() { + _, err := io.Copy(conn1, conn2) + errc <- err + }() + + go func() { + _, err := io.Copy(conn2, conn1) + errc <- err + }() + + select { + case err = <-errc: + //glog.V(LWARNING).Infoln("transport exit", err) + } + + return +} + +type reqReader struct { + b []byte + r io.Reader +} + +func (r *reqReader) Read(p []byte) (n int, err error) { + if len(r.b) == 0 { + return r.r.Read(p) + } + n = copy(p, r.b) + r.b = r.b[n:] + + return +} diff --git a/vendor/github.com/ginuerzh/gost/socks.go b/vendor/github.com/ginuerzh/gost/socks.go new file mode 100644 index 0000000..4a5b21c --- /dev/null +++ b/vendor/github.com/ginuerzh/gost/socks.go @@ -0,0 +1,727 @@ +package gost + +import ( + "bytes" + "crypto/tls" + //"errors" + "github.com/ginuerzh/gosocks5" + "github.com/golang/glog" + //"os/exec" + //"io" + //"io/ioutil" + "net" + "net/url" + "strconv" + "time" +) + +const ( + MethodTLS uint8 = 0x80 // extended method for tls + MethodTLSAuth uint8 = 0x82 // extended method for tls+auth +) + +const ( + CmdUdpConnect uint8 = 0xF1 // extended method for udp local port forwarding + CmdUdpTun uint8 = 0xF3 // extended method for udp over tcp +) + +type clientSelector struct { + methods []uint8 + user *url.Userinfo + tlsConfig *tls.Config +} + +func (selector *clientSelector) Methods() []uint8 { + return selector.methods +} + +func (selector *clientSelector) Select(methods ...uint8) (method uint8) { + return +} + +func (selector *clientSelector) OnSelected(method uint8, conn net.Conn) (net.Conn, error) { + switch method { + case MethodTLS: + conn = tls.Client(conn, selector.tlsConfig) + + case gosocks5.MethodUserPass, MethodTLSAuth: + if method == MethodTLSAuth { + conn = tls.Client(conn, selector.tlsConfig) + } + + var username, password string + if selector.user != nil { + username = selector.user.Username() + password, _ = selector.user.Password() + } + + req := gosocks5.NewUserPassRequest(gosocks5.UserPassVer, username, password) + if err := req.Write(conn); err != nil { + glog.V(LWARNING).Infoln("socks5 auth:", err) + return nil, err + } + glog.V(LDEBUG).Infoln(req) + + resp, err := gosocks5.ReadUserPassResponse(conn) + if err != nil { + glog.V(LWARNING).Infoln("socks5 auth:", err) + return nil, err + } + glog.V(LDEBUG).Infoln(resp) + + if resp.Status != gosocks5.Succeeded { + return nil, gosocks5.ErrAuthFailure + } + case gosocks5.MethodNoAcceptable: + return nil, gosocks5.ErrBadMethod + } + + return conn, nil +} + +type serverSelector struct { + methods []uint8 + user *url.Userinfo + tlsConfig *tls.Config +} + +func (selector *serverSelector) Methods() []uint8 { + return selector.methods +} + +func (selector *serverSelector) Select(methods ...uint8) (method uint8) { + glog.V(LDEBUG).Infof("%d %d %v", gosocks5.Ver5, len(methods), methods) + + method = gosocks5.MethodNoAuth + for _, m := range methods { + if m == MethodTLS { + method = m + break + } + } + + // when user/pass is set, auth is mandatory + if selector.user != nil { + if method == gosocks5.MethodNoAuth { + method = gosocks5.MethodUserPass + } + if method == MethodTLS { + method = MethodTLSAuth + } + } + + return +} + +func (selector *serverSelector) OnSelected(method uint8, conn net.Conn) (net.Conn, error) { + glog.V(LDEBUG).Infof("%d %d", gosocks5.Ver5, method) + + switch method { + case MethodTLS: + conn = tls.Server(conn, selector.tlsConfig) + + case gosocks5.MethodUserPass, MethodTLSAuth: + if method == MethodTLSAuth { + conn = tls.Server(conn, selector.tlsConfig) + } + + req, err := gosocks5.ReadUserPassRequest(conn) + if err != nil { + glog.V(LWARNING).Infoln("[socks5-auth]", err) + return nil, err + } + glog.V(LDEBUG).Infoln("[socks5]", req.String()) + + var username, password string + if selector.user != nil { + username = selector.user.Username() + password, _ = selector.user.Password() + } + + if (username != "" && req.Username != username) || (password != "" && req.Password != password) { + resp := gosocks5.NewUserPassResponse(gosocks5.UserPassVer, gosocks5.Failure) + if err := resp.Write(conn); err != nil { + glog.V(LWARNING).Infoln("[socks5-auth]", err) + return nil, err + } + glog.V(LDEBUG).Infoln("[socks5]", resp) + glog.V(LWARNING).Infoln("[socks5-auth] proxy authentication required") + + return nil, gosocks5.ErrAuthFailure + } + + resp := gosocks5.NewUserPassResponse(gosocks5.UserPassVer, gosocks5.Succeeded) + if err := resp.Write(conn); err != nil { + glog.V(LWARNING).Infoln("[socks5-auth]", err) + return nil, err + } + glog.V(LDEBUG).Infoln(resp) + + case gosocks5.MethodNoAcceptable: + return nil, gosocks5.ErrBadMethod + } + + return conn, nil +} + +type Socks5Server struct { + conn net.Conn + Base *ProxyServer +} + +func NewSocks5Server(conn net.Conn, base *ProxyServer) *Socks5Server { + return &Socks5Server{conn: conn, Base: base} +} + +func (s *Socks5Server) HandleRequest(req *gosocks5.Request) { + glog.V(LDEBUG).Infof("[socks5] %s -> %s\n%s", s.conn.RemoteAddr(), req.Addr, req) + + switch req.Cmd { + case gosocks5.CmdConnect: + glog.V(LINFO).Infof("[socks5-connect] %s -> %s", s.conn.RemoteAddr(), req.Addr) + s.handleConnect(req) + + case gosocks5.CmdBind: + glog.V(LINFO).Infof("[socks5-bind] %s - %s", s.conn.RemoteAddr(), req.Addr) + s.handleBind(req) + + case CmdUdpConnect: + glog.V(LINFO).Infof("[udp] %s - %s", s.conn.RemoteAddr(), req.Addr) + s.handleUDPConnect(req) + + case gosocks5.CmdUdp: + glog.V(LINFO).Infof("[socks5-udp] %s - %s", s.conn.RemoteAddr(), req.Addr) + s.handleUDPRelay(req) + + case CmdUdpTun: + glog.V(LINFO).Infof("[socks5-udp] %s - %s", s.conn.RemoteAddr(), req.Addr) + s.handleUDPTunnel(req) + + default: + glog.V(LWARNING).Infoln("[socks5] Unrecognized request:", req.Cmd) + } +} + +func (s *Socks5Server) handleConnect(req *gosocks5.Request) { + cc, err := s.Base.Chain.Dial(req.Addr.String()) + if err != nil { + glog.V(LWARNING).Infof("[socks5-connect] %s -> %s : %s", s.conn.RemoteAddr(), req.Addr, err) + rep := gosocks5.NewReply(gosocks5.HostUnreachable, nil) + rep.Write(s.conn) + glog.V(LDEBUG).Infof("[socks5-connect] %s <- %s\n%s", s.conn.RemoteAddr(), req.Addr, rep) + return + } + defer cc.Close() + + rep := gosocks5.NewReply(gosocks5.Succeeded, nil) + if err := rep.Write(s.conn); err != nil { + glog.V(LWARNING).Infof("[socks5-connect] %s <- %s : %s", s.conn.RemoteAddr(), req.Addr, err) + return + } + glog.V(LDEBUG).Infof("[socks5-connect] %s <- %s\n%s", s.conn.RemoteAddr(), req.Addr, rep) + + glog.V(LINFO).Infof("[socks5-connect] %s <-> %s", s.conn.RemoteAddr(), req.Addr) + //Transport(conn, cc) + s.Base.transport(s.conn, cc) + glog.V(LINFO).Infof("[socks5-connect] %s >-< %s", s.conn.RemoteAddr(), req.Addr) +} + +func (s *Socks5Server) handleBind(req *gosocks5.Request) { + cc, err := s.Base.Chain.GetConn() + + // connection error + if err != nil && err != ErrEmptyChain { + glog.V(LWARNING).Infof("[socks5-bind] %s <- %s : %s", s.conn.RemoteAddr(), req.Addr, err) + reply := gosocks5.NewReply(gosocks5.Failure, nil) + reply.Write(s.conn) + glog.V(LDEBUG).Infof("[socks5-bind] %s <- %s\n%s", s.conn.RemoteAddr(), req.Addr, reply) + return + } + // serve socks5 bind + if err == ErrEmptyChain { + s.bindOn(req.Addr.String()) + return + } + + defer cc.Close() + // forward request + req.Write(cc) + + glog.V(LINFO).Infof("[socks5-bind] %s <-> %s", s.conn.RemoteAddr(), cc.RemoteAddr()) + s.Base.transport(s.conn, cc) + glog.V(LINFO).Infof("[socks5-bind] %s >-< %s", s.conn.RemoteAddr(), cc.RemoteAddr()) +} + +func (s *Socks5Server) handleUDPConnect(req *gosocks5.Request) { + cc, err := s.Base.Chain.GetConn() + + // connection error + if err != nil && err != ErrEmptyChain { + glog.V(LWARNING).Infof("[udp] %s <- %s : %s", s.conn.RemoteAddr(), req.Addr, err) + reply := gosocks5.NewReply(gosocks5.Failure, nil) + reply.Write(s.conn) + glog.V(LDEBUG).Infof("[udp] %s <- %s\n%s", s.conn.RemoteAddr(), req.Addr, reply) + return + } + + // serve udp connect + if err == ErrEmptyChain { + s.udpConnect(req.Addr.String()) + return + } + + defer cc.Close() + + // forward request + if err := req.Write(cc); err != nil { + glog.V(LINFO).Infof("[udp] %s -> %s : %s", s.conn.RemoteAddr(), req.Addr, err) + gosocks5.NewReply(gosocks5.Failure, nil).Write(s.conn) + return + } + + glog.V(LINFO).Infof("[udp] %s <-> %s", s.conn.RemoteAddr(), req.Addr) + s.Base.transport(s.conn, cc) + glog.V(LINFO).Infof("[udp] %s >-< %s", s.conn.RemoteAddr(), req.Addr) +} + +func (s *Socks5Server) handleUDPRelay(req *gosocks5.Request) { + bindAddr, _ := net.ResolveUDPAddr("udp", req.Addr.String()) + relay, err := net.ListenUDP("udp", bindAddr) // udp associate, strict mode: if the port already in use, it will return error + if err != nil { + glog.V(LWARNING).Infof("[socks5-udp] %s -> %s : %s", s.conn.RemoteAddr(), req.Addr, err) + reply := gosocks5.NewReply(gosocks5.Failure, nil) + reply.Write(s.conn) + glog.V(LDEBUG).Infof("[socks5-udp] %s <- %s\n%s", s.conn.RemoteAddr(), req.Addr, reply) + return + } + defer relay.Close() + + socksAddr := ToSocksAddr(relay.LocalAddr()) + socksAddr.Host, _, _ = net.SplitHostPort(s.conn.LocalAddr().String()) + reply := gosocks5.NewReply(gosocks5.Succeeded, socksAddr) + if err := reply.Write(s.conn); err != nil { + glog.V(LWARNING).Infof("[socks5-udp] %s <- %s : %s", s.conn.RemoteAddr(), req.Addr, err) + return + } + glog.V(LDEBUG).Infof("[socks5-udp] %s <- %s\n%s", s.conn.RemoteAddr(), reply.Addr, reply) + glog.V(LINFO).Infof("[socks5-udp] %s - %s BIND ON %s OK", s.conn.RemoteAddr(), req.Addr, socksAddr) + + cc, err := s.Base.Chain.GetConn() + // connection error + if err != nil && err != ErrEmptyChain { + glog.V(LWARNING).Infof("[socks5-udp] %s -> %s : %s", s.conn.RemoteAddr(), socksAddr, err) + return + } + + // serve as standard socks5 udp relay local <-> remote + if err == ErrEmptyChain { + peer, er := net.ListenUDP("udp", nil) + if er != nil { + glog.V(LWARNING).Infof("[socks5-udp] %s -> %s : %s", s.conn.RemoteAddr(), socksAddr, er) + return + } + defer peer.Close() + + go s.transportUDP(relay, peer) + } + + // forward udp local <-> tunnel + if err == nil { + defer cc.Close() + + cc.SetWriteDeadline(time.Now().Add(WriteTimeout)) + req := gosocks5.NewRequest(CmdUdpTun, nil) + if err := req.Write(cc); err != nil { + glog.V(LWARNING).Infoln("[socks5-udp] %s -> %s : %s", s.conn.RemoteAddr(), cc.RemoteAddr(), err) + return + } + cc.SetWriteDeadline(time.Time{}) + glog.V(LDEBUG).Infof("[socks5-udp] %s -> %s\n%s", s.conn.RemoteAddr(), cc.RemoteAddr(), req) + + cc.SetReadDeadline(time.Now().Add(ReadTimeout)) + reply, err = gosocks5.ReadReply(cc) + if err != nil { + glog.V(LWARNING).Infoln("[socks5-udp] %s -> %s : %s", s.conn.RemoteAddr(), cc.RemoteAddr(), err) + return + } + glog.V(LDEBUG).Infof("[socks5-udp] %s <- %s\n%s", s.conn.RemoteAddr(), cc.RemoteAddr(), reply) + + if reply.Rep != gosocks5.Succeeded { + glog.V(LWARNING).Infoln("[socks5-udp] %s <- %s : udp associate failed", s.conn.RemoteAddr(), cc.RemoteAddr()) + return + } + cc.SetReadDeadline(time.Time{}) + glog.V(LINFO).Infof("[socks5-udp] %s <-> %s [tun: %s]", s.conn.RemoteAddr(), socksAddr, reply.Addr) + + go s.tunnelUDP(relay, cc, true) + } + + glog.V(LINFO).Infof("[socks5-udp] %s <-> %s", s.conn.RemoteAddr(), socksAddr) + b := make([]byte, SmallBufferSize) + for { + _, err := s.conn.Read(b) // discard any data from tcp connection + if err != nil { + glog.V(LWARNING).Infof("[socks5-udp] %s - %s : %s", s.conn.RemoteAddr(), socksAddr, err) + break // client disconnected + } + } + glog.V(LINFO).Infof("[socks5-udp] %s >-< %s", s.conn.RemoteAddr(), socksAddr) +} + +func (s *Socks5Server) handleUDPTunnel(req *gosocks5.Request) { + cc, err := s.Base.Chain.GetConn() + + // connection error + if err != nil && err != ErrEmptyChain { + glog.V(LWARNING).Infof("[socks5-udp] %s -> %s : %s", s.conn.RemoteAddr(), req.Addr, err) + reply := gosocks5.NewReply(gosocks5.Failure, nil) + reply.Write(s.conn) + glog.V(LDEBUG).Infof("[socks5-udp] %s -> %s\n%s", s.conn.RemoteAddr(), req.Addr, reply) + return + } + + // serve tunnel udp, tunnel <-> remote, handle tunnel udp request + if err == ErrEmptyChain { + bindAddr, _ := net.ResolveUDPAddr("udp", req.Addr.String()) + uc, err := net.ListenUDP("udp", bindAddr) + if err != nil { + glog.V(LWARNING).Infof("[socks5-udp] %s -> %s : %s", s.conn.RemoteAddr(), req.Addr, err) + return + } + defer uc.Close() + + socksAddr := ToSocksAddr(uc.LocalAddr()) + socksAddr.Host, _, _ = net.SplitHostPort(s.conn.LocalAddr().String()) + reply := gosocks5.NewReply(gosocks5.Succeeded, socksAddr) + if err := reply.Write(s.conn); err != nil { + glog.V(LWARNING).Infof("[socks5-udp] %s <- %s : %s", s.conn.RemoteAddr(), socksAddr, err) + return + } + glog.V(LDEBUG).Infof("[socks5-udp] %s <- %s\n%s", s.conn.RemoteAddr(), socksAddr, reply) + + glog.V(LINFO).Infof("[socks5-udp] %s <-> %s", s.conn.RemoteAddr(), socksAddr) + s.tunnelUDP(uc, s.conn, false) + glog.V(LINFO).Infof("[socks5-udp] %s >-< %s", s.conn.RemoteAddr(), socksAddr) + return + } + + defer cc.Close() + + // tunnel <-> tunnel, direct forwarding + req.Write(cc) + + glog.V(LINFO).Infof("[socks5-udp] %s <-> %s [tun]", s.conn.RemoteAddr(), cc.RemoteAddr()) + s.Base.transport(s.conn, cc) + glog.V(LINFO).Infof("[socks5-udp] %s >-< %s [tun]", s.conn.RemoteAddr(), cc.RemoteAddr()) +} + +func (s *Socks5Server) bindOn(addr string) { + bindAddr, _ := net.ResolveTCPAddr("tcp", addr) + ln, err := net.ListenTCP("tcp", bindAddr) // strict mode: if the port already in use, it will return error + if err != nil { + glog.V(LWARNING).Infof("[socks5-bind] %s -> %s : %s", s.conn.RemoteAddr(), addr, err) + gosocks5.NewReply(gosocks5.Failure, nil).Write(s.conn) + return + } + + socksAddr := ToSocksAddr(ln.Addr()) + // Issue: may not reachable when host has multi-interface + socksAddr.Host, _, _ = net.SplitHostPort(s.conn.LocalAddr().String()) + reply := gosocks5.NewReply(gosocks5.Succeeded, socksAddr) + if err := reply.Write(s.conn); err != nil { + glog.V(LWARNING).Infof("[socks5-bind] %s <- %s : %s", s.conn.RemoteAddr(), addr, err) + ln.Close() + return + } + glog.V(LDEBUG).Infof("[socks5-bind] %s <- %s\n%s", s.conn.RemoteAddr(), addr, reply) + glog.V(LINFO).Infof("[socks5-bind] %s - %s BIND ON %s OK", s.conn.RemoteAddr(), addr, socksAddr) + + var pconn net.Conn + accept := func() <-chan error { + errc := make(chan error, 1) + + go func() { + defer close(errc) + defer ln.Close() + + c, err := ln.AcceptTCP() + if err != nil { + errc <- err + return + } + pconn = c + }() + + return errc + } + + pc1, pc2 := net.Pipe() + pipe := func() <-chan error { + errc := make(chan error, 1) + + go func() { + defer close(errc) + defer pc1.Close() + + errc <- s.Base.transport(s.conn, pc1) + }() + + return errc + } + + defer pc2.Close() + + for { + select { + case err := <-accept(): + if err != nil || pconn == nil { + glog.V(LWARNING).Infof("[socks5-bind] %s <- %s : %s", s.conn.RemoteAddr(), addr, err) + return + } + defer pconn.Close() + + reply := gosocks5.NewReply(gosocks5.Succeeded, ToSocksAddr(pconn.RemoteAddr())) + if err := reply.Write(pc2); err != nil { + glog.V(LWARNING).Infof("[socks5-bind] %s <- %s : %s", s.conn.RemoteAddr(), addr, err) + } + glog.V(LDEBUG).Infof("[socks5-bind] %s <- %s\n%s", s.conn.RemoteAddr(), addr, reply) + glog.V(LINFO).Infof("[socks5-bind] %s <- %s PEER %s ACCEPTED", s.conn.RemoteAddr(), socksAddr, pconn.RemoteAddr()) + + glog.V(LINFO).Infof("[socks5-bind] %s <-> %s", s.conn.RemoteAddr(), pconn.RemoteAddr()) + if err = s.Base.transport(pc2, pconn); err != nil { + glog.V(LWARNING).Infoln(err) + } + glog.V(LINFO).Infof("[socks5-bind] %s >-< %s", s.conn.RemoteAddr(), pconn.RemoteAddr()) + return + case err := <-pipe(): + glog.V(LWARNING).Infof("[socks5-bind] %s -> %s : %v", s.conn.RemoteAddr(), addr, err) + ln.Close() + return + } + } +} + +func (s *Socks5Server) udpConnect(addr string) { + raddr, err := net.ResolveUDPAddr("udp", addr) + if err != nil { + glog.V(LINFO).Infof("[udp] %s -> %s : %s", s.conn.RemoteAddr(), addr, err) + gosocks5.NewReply(gosocks5.Failure, nil).Write(s.conn) + return + } + + if err := gosocks5.NewReply(gosocks5.Succeeded, nil).Write(s.conn); err != nil { + glog.V(LINFO).Infof("[udp] %s <- %s : %s", s.conn.RemoteAddr(), addr, err) + return + } + + glog.V(LINFO).Infof("[udp] %s <-> %s", s.conn.RemoteAddr(), raddr) + defer glog.V(LINFO).Infof("[udp] %s >-< %s", s.conn.RemoteAddr(), raddr) + + for { + dgram, err := gosocks5.ReadUDPDatagram(s.conn) + if err != nil { + glog.V(LWARNING).Infof("[udp] %s -> %s : %s", s.conn.RemoteAddr(), addr, err) + return + } + + go func() { + b := make([]byte, LargeBufferSize) + + relay, err := net.DialUDP("udp", nil, raddr) + if err != nil { + glog.V(LWARNING).Infof("[udp] %s -> %s : %s", s.conn.RemoteAddr(), raddr, err) + return + } + defer relay.Close() + + if _, err := relay.Write(dgram.Data); err != nil { + glog.V(LWARNING).Infof("[udp] %s -> %s : %s", s.conn.RemoteAddr(), raddr, err) + return + } + glog.V(LDEBUG).Infof("[udp-tun] %s >>> %s length: %d", s.conn.RemoteAddr(), raddr, len(dgram.Data)) + + relay.SetReadDeadline(time.Now().Add(time.Second * 60)) + n, err := relay.Read(b) + if err != nil { + glog.V(LWARNING).Infof("[udp] %s <- %s : %s", s.conn.RemoteAddr(), raddr, err) + return + } + relay.SetReadDeadline(time.Time{}) + + glog.V(LDEBUG).Infof("[udp-tun] %s <<< %s length: %d", s.conn.RemoteAddr(), raddr, n) + + s.conn.SetWriteDeadline(time.Now().Add(time.Second * 90)) + if err := gosocks5.NewUDPDatagram(gosocks5.NewUDPHeader(uint16(n), 0, dgram.Header.Addr), b[:n]).Write(s.conn); err != nil { + glog.V(LWARNING).Infof("[udp] %s <- %s : %s", s.conn.RemoteAddr(), raddr, err) + return + } + s.conn.SetWriteDeadline(time.Time{}) + }() + } +} + +func (s *Socks5Server) transportUDP(relay, peer *net.UDPConn) (err error) { + errc := make(chan error, 2) + + var clientAddr *net.UDPAddr + + go func() { + b := make([]byte, LargeBufferSize) + + for { + n, laddr, err := relay.ReadFromUDP(b) + if err != nil { + errc <- err + return + } + if clientAddr == nil { + clientAddr = laddr + } + dgram, err := gosocks5.ReadUDPDatagram(bytes.NewReader(b[:n])) + if err != nil { + errc <- err + return + } + + raddr, err := net.ResolveUDPAddr("udp", dgram.Header.Addr.String()) + if err != nil { + continue // drop silently + } + if _, err := peer.WriteToUDP(dgram.Data, raddr); err != nil { + errc <- err + return + } + glog.V(LDEBUG).Infof("[socks5-udp] %s >>> %s length: %d", relay.LocalAddr(), raddr, len(dgram.Data)) + } + }() + + go func() { + b := make([]byte, LargeBufferSize) + + for { + n, raddr, err := peer.ReadFromUDP(b) + if err != nil { + errc <- err + return + } + if clientAddr == nil { + continue + } + buf := bytes.Buffer{} + dgram := gosocks5.NewUDPDatagram(gosocks5.NewUDPHeader(0, 0, ToSocksAddr(raddr)), b[:n]) + dgram.Write(&buf) + if _, err := relay.WriteToUDP(buf.Bytes(), clientAddr); err != nil { + errc <- err + return + } + glog.V(LDEBUG).Infof("[socks5-udp] %s <<< %s length: %d", relay.LocalAddr(), raddr, len(dgram.Data)) + } + }() + + select { + case err = <-errc: + //log.Println("w exit", err) + } + + return +} + +func (s *Socks5Server) tunnelUDP(uc *net.UDPConn, cc net.Conn, client bool) (err error) { + errc := make(chan error, 2) + + var clientAddr *net.UDPAddr + + go func() { + b := make([]byte, LargeBufferSize) + + for { + n, addr, err := uc.ReadFromUDP(b) + if err != nil { + errc <- err + return + } + + var dgram *gosocks5.UDPDatagram + if client { // pipe from relay to tunnel + dgram, err = gosocks5.ReadUDPDatagram(bytes.NewReader(b[:n])) + if err != nil { + errc <- err + return + } + if clientAddr == nil { + clientAddr = addr + } + dgram.Header.Rsv = uint16(len(dgram.Data)) + if err := dgram.Write(cc); err != nil { + errc <- err + return + } + glog.V(LDEBUG).Infof("[udp-tun] %s >>> %s length: %d", uc.LocalAddr(), dgram.Header.Addr, len(dgram.Data)) + } else { // pipe from peer to tunnel + dgram = gosocks5.NewUDPDatagram( + gosocks5.NewUDPHeader(uint16(n), 0, ToSocksAddr(addr)), b[:n]) + if err := dgram.Write(cc); err != nil { + errc <- err + return + } + glog.V(LDEBUG).Infof("[udp-tun] %s <<< %s length: %d", cc.RemoteAddr(), dgram.Header.Addr, len(dgram.Data)) + } + } + }() + + go func() { + for { + dgram, err := gosocks5.ReadUDPDatagram(cc) + if err != nil { + errc <- err + return + } + + if client { // pipe from tunnel to relay + if clientAddr == nil { + continue + } + dgram.Header.Rsv = 0 + + buf := bytes.Buffer{} + dgram.Write(&buf) + if _, err := uc.WriteToUDP(buf.Bytes(), clientAddr); err != nil { + errc <- err + return + } + glog.V(LDEBUG).Infof("[udp-tun] %s <<< %s length: %d", uc.LocalAddr(), dgram.Header.Addr, len(dgram.Data)) + } else { // pipe from tunnel to peer + addr, err := net.ResolveUDPAddr("udp", dgram.Header.Addr.String()) + if err != nil { + continue // drop silently + } + if _, err := uc.WriteToUDP(dgram.Data, addr); err != nil { + errc <- err + return + } + glog.V(LDEBUG).Infof("[udp-tun] %s >>> %s length: %d", cc.RemoteAddr(), addr, len(dgram.Data)) + } + } + }() + + select { + case err = <-errc: + } + + return +} + +func ToSocksAddr(addr net.Addr) *gosocks5.Addr { + host := "0.0.0.0" + port := 0 + if addr != nil { + h, p, _ := net.SplitHostPort(addr.String()) + host = h + port, _ = strconv.Atoi(p) + } + return &gosocks5.Addr{ + Type: gosocks5.AddrIPv4, + Host: host, + Port: uint16(port), + } +} diff --git a/vendor/github.com/ginuerzh/gost/ss.go b/vendor/github.com/ginuerzh/gost/ss.go new file mode 100644 index 0000000..12bc167 --- /dev/null +++ b/vendor/github.com/ginuerzh/gost/ss.go @@ -0,0 +1,278 @@ +package gost + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "github.com/golang/glog" + ss "github.com/shadowsocks/shadowsocks-go/shadowsocks" + "io" + "net" + "strconv" + "time" +) + +const ( + idType = 0 // address type index + idIP0 = 1 // ip addres start index + idDmLen = 1 // domain address length index + idDm0 = 2 // domain address start index + + typeIPv4 = 1 // type is ipv4 address + typeDm = 3 // type is domain address + typeIPv6 = 4 // type is ipv6 address + + lenIPv4 = net.IPv4len + 2 // ipv4 + 2port + lenIPv6 = net.IPv6len + 2 // ipv6 + 2port + lenDmBase = 2 // 1addrLen + 2port, plus addrLen + lenHmacSha1 = 10 +) + +type ShadowServer struct { + conn *ss.Conn + Base *ProxyServer + OTA bool // one time auth +} + +func NewShadowServer(conn *ss.Conn, base *ProxyServer) *ShadowServer { + return &ShadowServer{conn: conn, Base: base} +} + +func (s *ShadowServer) Serve() { + glog.V(LINFO).Infof("[ss] %s - %s", s.conn.RemoteAddr(), s.conn.LocalAddr()) + + addr, ota, err := s.getRequest() + if err != nil { + glog.V(LWARNING).Infof("[ss] %s - %s : %s", s.conn.RemoteAddr(), s.conn.LocalAddr(), err) + return + } + glog.V(LINFO).Infof("[ss] %s -> %s, ota: %v", s.conn.RemoteAddr(), addr, ota) + + cc, err := s.Base.Chain.Dial(addr) + if err != nil { + glog.V(LWARNING).Infof("[ss] %s -> %s : %s", s.conn.RemoteAddr(), addr, err) + return + } + defer cc.Close() + + glog.V(LINFO).Infof("[ss] %s <-> %s", s.conn.RemoteAddr(), addr) + if ota { + s.transportOTA(s.conn, cc) + } else { + s.Base.transport(&shadowConn{conn: s.conn}, cc) + } + glog.V(LINFO).Infof("[ss] %s >-< %s", s.conn.RemoteAddr(), addr) +} + +type ShadowUdpServer struct { + Base *ProxyServer + Handler func(conn *net.UDPConn, addr *net.UDPAddr, data []byte) +} + +func NewShadowUdpServer(base *ProxyServer) *ShadowUdpServer { + return &ShadowUdpServer{Base: base} +} + +func (s *ShadowUdpServer) ListenAndServe() error { + laddr, err := net.ResolveUDPAddr("udp", s.Base.Node.Addr) + if err != nil { + return err + } + lconn, err := net.ListenUDP("udp", laddr) + if err != nil { + return err + } + defer lconn.Close() + + if s.Handler == nil { + s.Handler = s.HandleConn + } + + for { + b := make([]byte, LargeBufferSize) + n, addr, err := lconn.ReadFromUDP(b) + if err != nil { + glog.V(LWARNING).Infoln(err) + continue + } + + go s.Handler(lconn, addr, b[:n]) + } +} + +// TODO: shadowsocks udp relay handler +func (s *ShadowUdpServer) HandleConn(conn *net.UDPConn, addr *net.UDPAddr, data []byte) { + +} + +// This function is copied from shadowsocks library with some modification. +func (s *ShadowServer) getRequest() (host string, ota bool, err error) { + // buf size should at least have the same size with the largest possible + // request size (when addrType is 3, domain name has at most 256 bytes) + // 1(addrType) + 1(lenByte) + 256(max length address) + 2(port) + buf := make([]byte, SmallBufferSize) + + // read till we get possible domain length field + s.conn.SetReadDeadline(time.Now().Add(ReadTimeout)) + if _, err = io.ReadFull(s.conn, buf[:idType+1]); err != nil { + return + } + + var reqStart, reqEnd int + addrType := buf[idType] + switch addrType & ss.AddrMask { + case typeIPv4: + reqStart, reqEnd = idIP0, idIP0+lenIPv4 + case typeIPv6: + reqStart, reqEnd = idIP0, idIP0+lenIPv6 + case typeDm: + if _, err = io.ReadFull(s.conn, buf[idType+1:idDmLen+1]); err != nil { + return + } + reqStart, reqEnd = idDm0, int(idDm0+buf[idDmLen]+lenDmBase) + default: + err = fmt.Errorf("addr type %d not supported", addrType&ss.AddrMask) + return + } + + if _, err = io.ReadFull(s.conn, buf[reqStart:reqEnd]); err != nil { + return + } + + // Return string for typeIP is not most efficient, but browsers (Chrome, + // Safari, Firefox) all seems using typeDm exclusively. So this is not a + // big problem. + switch addrType & ss.AddrMask { + case typeIPv4: + host = net.IP(buf[idIP0 : idIP0+net.IPv4len]).String() + case typeIPv6: + host = net.IP(buf[idIP0 : idIP0+net.IPv6len]).String() + case typeDm: + host = string(buf[idDm0 : idDm0+buf[idDmLen]]) + } + // parse port + port := binary.BigEndian.Uint16(buf[reqEnd-2 : reqEnd]) + host = net.JoinHostPort(host, strconv.Itoa(int(port))) + // if specified one time auth enabled, we should verify this + if s.OTA || addrType&ss.OneTimeAuthMask > 0 { + ota = true + if _, err = io.ReadFull(s.conn, buf[reqEnd:reqEnd+lenHmacSha1]); err != nil { + return + } + iv := s.conn.GetIv() + key := s.conn.GetKey() + actualHmacSha1Buf := ss.HmacSha1(append(iv, key...), buf[:reqEnd]) + if !bytes.Equal(buf[reqEnd:reqEnd+lenHmacSha1], actualHmacSha1Buf) { + err = fmt.Errorf("verify one time auth failed, iv=%v key=%v data=%v", iv, key, buf[:reqEnd]) + return + } + } + return +} + +const ( + dataLenLen = 2 + hmacSha1Len = 10 + idxData0 = dataLenLen + hmacSha1Len +) + +// copyOta copies data from src to dst with ota verification. +// +// This function is copied from shadowsocks library with some modification. +func (s *ShadowServer) copyOta(dst net.Conn, src *ss.Conn) (int64, error) { + // sometimes it have to fill large block + buf := make([]byte, LargeBufferSize) + for { + src.SetReadDeadline(time.Now().Add(ReadTimeout)) + if n, err := io.ReadFull(src, buf[:dataLenLen+hmacSha1Len]); err != nil { + return int64(n), err + } + src.SetReadDeadline(time.Time{}) + + dataLen := binary.BigEndian.Uint16(buf[:dataLenLen]) + expectedHmacSha1 := buf[dataLenLen:idxData0] + + var dataBuf []byte + if len(buf) < int(idxData0+dataLen) { + dataBuf = make([]byte, dataLen) + } else { + dataBuf = buf[idxData0 : idxData0+dataLen] + } + if n, err := io.ReadFull(src, dataBuf); err != nil { + return int64(n), err + } + chunkIdBytes := make([]byte, 4) + chunkId := src.GetAndIncrChunkId() + binary.BigEndian.PutUint32(chunkIdBytes, chunkId) + actualHmacSha1 := ss.HmacSha1(append(src.GetIv(), chunkIdBytes...), dataBuf) + if !bytes.Equal(expectedHmacSha1, actualHmacSha1) { + return 0, errors.New("ota error: mismatch") + } + + if n, err := dst.Write(dataBuf); err != nil { + return int64(n), err + } + } +} + +func (s *ShadowServer) transportOTA(sc *ss.Conn, cc net.Conn) (err error) { + errc := make(chan error, 2) + + go func() { + _, err := io.Copy(&shadowConn{conn: sc}, cc) + errc <- err + }() + + go func() { + _, err := s.copyOta(cc, sc) + errc <- err + }() + + select { + case err = <-errc: + //glog.V(LWARNING).Infoln("transport exit", err) + } + + return +} + +// Due to in/out byte length is inconsistent of the shadowsocks.Conn.Write, +// we wrap around it to make io.Copy happy +type shadowConn struct { + conn *ss.Conn +} + +func (c *shadowConn) Read(b []byte) (n int, err error) { + return c.conn.Read(b) +} + +func (c *shadowConn) Write(b []byte) (n int, err error) { + n = len(b) // force byte length consistent + _, err = c.conn.Write(b) + return +} + +func (c *shadowConn) Close() error { + return c.conn.Close() +} + +func (c *shadowConn) LocalAddr() net.Addr { + return c.conn.LocalAddr() +} + +func (c *shadowConn) RemoteAddr() net.Addr { + return c.conn.RemoteAddr() +} + +func (c *shadowConn) SetDeadline(t time.Time) error { + return c.conn.SetDeadline(t) +} + +func (c *shadowConn) SetReadDeadline(t time.Time) error { + return c.conn.SetReadDeadline(t) +} + +func (c *shadowConn) SetWriteDeadline(t time.Time) error { + return c.conn.SetWriteDeadline(t) +} diff --git a/vendor/github.com/ginuerzh/gost/ws.go b/vendor/github.com/ginuerzh/gost/ws.go new file mode 100644 index 0000000..668b65b --- /dev/null +++ b/vendor/github.com/ginuerzh/gost/ws.go @@ -0,0 +1,142 @@ +package gost + +import ( + "crypto/tls" + "github.com/golang/glog" + "github.com/gorilla/websocket" + "net" + "net/http" + "net/http/httputil" + "time" +) + +type WebsocketServer struct { + Addr string + Base *ProxyServer + Handler http.Handler + upgrader websocket.Upgrader +} + +func NewWebsocketServer(base *ProxyServer) *WebsocketServer { + return &WebsocketServer{ + Addr: base.Node.Addr, + Base: base, + upgrader: websocket.Upgrader{ + ReadBufferSize: 1024, + WriteBufferSize: 1024, + CheckOrigin: func(r *http.Request) bool { return true }, + EnableCompression: true, + }, + } +} + +// Default websocket server handler +func (s *WebsocketServer) HandleRequest(w http.ResponseWriter, r *http.Request) { + glog.V(LINFO).Infof("[ws] %s - %s", r.RemoteAddr, s.Addr) + if glog.V(LDEBUG) { + dump, _ := httputil.DumpRequest(r, false) + glog.V(LDEBUG).Infof("[ws] %s - %s\n%s", r.RemoteAddr, s.Addr, string(dump)) + } + conn, err := s.upgrader.Upgrade(w, r, nil) + if err != nil { + glog.V(LERROR).Infof("[ws] %s - %s : %s", r.RemoteAddr, s.Addr, err) + return + } + s.Base.handleConn(WebsocketServerConn(conn)) +} + +func (s *WebsocketServer) ListenAndServe() error { + mux := http.NewServeMux() + if s.Handler == nil { + s.Handler = http.HandlerFunc(s.HandleRequest) + } + mux.Handle("/ws", s.Handler) + return http.ListenAndServe(s.Addr, mux) +} + +func (s *WebsocketServer) ListenAndServeTLS(config *tls.Config) error { + mux := http.NewServeMux() + if s.Handler == nil { + s.Handler = http.HandlerFunc(s.HandleRequest) + } + mux.Handle("/ws", s.Handler) + server := &http.Server{ + Addr: s.Addr, + Handler: mux, + TLSConfig: config, + } + return server.ListenAndServeTLS("", "") +} + +type WebsocketConn struct { + conn *websocket.Conn + rb []byte +} + +func WebsocketClientConn(url string, conn net.Conn, config *tls.Config) (*WebsocketConn, error) { + dialer := websocket.Dialer{ + ReadBufferSize: 1024, + WriteBufferSize: 1024, + TLSClientConfig: config, + HandshakeTimeout: DialTimeout, + EnableCompression: true, + NetDial: func(net, addr string) (net.Conn, error) { + return conn, nil + }, + } + + c, resp, err := dialer.Dial(url, nil) + if err != nil { + return nil, err + } + resp.Body.Close() + return &WebsocketConn{conn: c}, nil +} + +func WebsocketServerConn(conn *websocket.Conn) *WebsocketConn { + conn.EnableWriteCompression(true) + return &WebsocketConn{ + conn: conn, + } +} + +func (c *WebsocketConn) Read(b []byte) (n int, err error) { + if len(c.rb) == 0 { + _, c.rb, err = c.conn.ReadMessage() + } + n = copy(b, c.rb) + c.rb = c.rb[n:] + return +} + +func (c *WebsocketConn) Write(b []byte) (n int, err error) { + err = c.conn.WriteMessage(websocket.BinaryMessage, b) + n = len(b) + return +} + +func (c *WebsocketConn) Close() error { + return c.conn.Close() +} + +func (c *WebsocketConn) LocalAddr() net.Addr { + return c.conn.LocalAddr() +} + +func (c *WebsocketConn) RemoteAddr() net.Addr { + return c.conn.RemoteAddr() +} + +func (conn *WebsocketConn) SetDeadline(t time.Time) error { + if err := conn.SetReadDeadline(t); err != nil { + return err + } + return conn.SetWriteDeadline(t) +} +func (c *WebsocketConn) SetReadDeadline(t time.Time) error { + return c.conn.SetReadDeadline(t) +} + +func (c *WebsocketConn) SetWriteDeadline(t time.Time) error { + return c.conn.SetWriteDeadline(t) +} diff --git a/vendor/github.com/golang/glog/LICENSE b/vendor/github.com/golang/glog/LICENSE new file mode 100644 index 0000000..37ec93a --- /dev/null +++ b/vendor/github.com/golang/glog/LICENSE @@ -0,0 +1,191 @@ +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and +distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright +owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities +that control, are controlled by, or are under common control with that entity. +For the purposes of this definition, "control" means (i) the power, direct or +indirect, to cause the direction or management of such entity, whether by +contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the +outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising +permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including +but not limited to software source code, documentation source, and configuration +files. + +"Object" form shall mean any form resulting from mechanical transformation or +translation of a Source form, including but not limited to compiled object code, +generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made +available under the License, as indicated by a copyright notice that is included +in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that +is based on (or derived from) the Work and for which the editorial revisions, +annotations, elaborations, or other modifications represent, as a whole, an +original work of authorship. For the purposes of this License, Derivative Works +shall not include works that remain separable from, or merely link (or bind by +name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version +of the Work and any modifications or additions to that Work or Derivative Works +thereof, that is intentionally submitted to Licensor for inclusion in the Work +by the copyright owner or by an individual or Legal Entity authorized to submit +on behalf of the copyright owner. For the purposes of this definition, +"submitted" means any form of electronic, verbal, or written communication sent +to the Licensor or its representatives, including but not limited to +communication on electronic mailing lists, source code control systems, and +issue tracking systems that are managed by, or on behalf of, the Licensor for +the purpose of discussing and improving the Work, but excluding communication +that is conspicuously marked or otherwise designated in writing by the copyright +owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf +of whom a Contribution has been received by Licensor and subsequently +incorporated within the Work. + +2. Grant of Copyright License. + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable copyright license to reproduce, prepare Derivative Works of, +publicly display, publicly perform, sublicense, and distribute the Work and such +Derivative Works in Source or Object form. + +3. Grant of Patent License. + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable (except as stated in this section) patent license to make, have +made, use, offer to sell, sell, import, and otherwise transfer the Work, where +such license applies only to those patent claims licensable by such Contributor +that are necessarily infringed by their Contribution(s) alone or by combination +of their Contribution(s) with the Work to which such Contribution(s) was +submitted. If You institute patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Work or a +Contribution incorporated within the Work constitutes direct or contributory +patent infringement, then any patent licenses granted to You under this License +for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. + +You may reproduce and distribute copies of the Work or Derivative Works thereof +in any medium, with or without modifications, and in Source or Object form, +provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of +this License; and +You must cause any modified files to carry prominent notices stating that You +changed the files; and +You must retain, in the Source form of any Derivative Works that You distribute, +all copyright, patent, trademark, and attribution notices from the Source form +of the Work, excluding those notices that do not pertain to any part of the +Derivative Works; and +If the Work includes a "NOTICE" text file as part of its distribution, then any +Derivative Works that You distribute must include a readable copy of the +attribution notices contained within such NOTICE file, excluding those notices +that do not pertain to any part of the Derivative Works, in at least one of the +following places: within a NOTICE text file distributed as part of the +Derivative Works; within the Source form or documentation, if provided along +with the Derivative Works; or, within a display generated by the Derivative +Works, if and wherever such third-party notices normally appear. The contents of +the NOTICE file are for informational purposes only and do not modify the +License. You may add Your own attribution notices within Derivative Works that +You distribute, alongside or as an addendum to the NOTICE text from the Work, +provided that such additional attribution notices cannot be construed as +modifying the License. +You may add Your own copyright statement to Your modifications and may provide +additional or different license terms and conditions for use, reproduction, or +distribution of Your modifications, or for any such Derivative Works as a whole, +provided Your use, reproduction, and distribution of the Work otherwise complies +with the conditions stated in this License. + +5. Submission of Contributions. + +Unless You explicitly state otherwise, any Contribution intentionally submitted +for inclusion in the Work by You to the Licensor shall be under the terms and +conditions of this License, without any additional terms or conditions. +Notwithstanding the above, nothing herein shall supersede or modify the terms of +any separate license agreement you may have executed with Licensor regarding +such Contributions. + +6. Trademarks. + +This License does not grant permission to use the trade names, trademarks, +service marks, or product names of the Licensor, except as required for +reasonable and customary use in describing the origin of the Work and +reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. + +Unless required by applicable law or agreed to in writing, Licensor provides the +Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, +including, without limitation, any warranties or conditions of TITLE, +NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are +solely responsible for determining the appropriateness of using or +redistributing the Work and assume any risks associated with Your exercise of +permissions under this License. + +8. Limitation of Liability. + +In no event and under no legal theory, whether in tort (including negligence), +contract, or otherwise, unless required by applicable law (such as deliberate +and grossly negligent acts) or agreed to in writing, shall any Contributor be +liable to You for damages, including any direct, indirect, special, incidental, +or consequential damages of any character arising as a result of this License or +out of the use or inability to use the Work (including but not limited to +damages for loss of goodwill, work stoppage, computer failure or malfunction, or +any and all other commercial damages or losses), even if such Contributor has +been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. + +While redistributing the Work or Derivative Works thereof, You may choose to +offer, and charge a fee for, acceptance of support, warranty, indemnity, or +other liability obligations and/or rights consistent with this License. However, +in accepting such obligations, You may act only on Your own behalf and on Your +sole responsibility, not on behalf of any other Contributor, and only if You +agree to indemnify, defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason of your +accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work + +To apply the Apache License to your work, attach the following boilerplate +notice, with the fields enclosed by brackets "[]" replaced with your own +identifying information. (Don't include the brackets!) The text should be +enclosed in the appropriate comment syntax for the file format. We also +recommend that a file or class name and description of purpose be included on +the same "printed page" as the copyright notice for easier identification within +third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. diff --git a/vendor/github.com/golang/glog/README b/vendor/github.com/golang/glog/README new file mode 100644 index 0000000..387b4eb --- /dev/null +++ b/vendor/github.com/golang/glog/README @@ -0,0 +1,44 @@ +glog +==== + +Leveled execution logs for Go. + +This is an efficient pure Go implementation of leveled logs in the +manner of the open source C++ package + https://github.com/google/glog + +By binding methods to booleans it is possible to use the log package +without paying the expense of evaluating the arguments to the log. +Through the -vmodule flag, the package also provides fine-grained +control over logging at the file level. + +The comment from glog.go introduces the ideas: + + Package glog implements logging analogous to the Google-internal + C++ INFO/ERROR/V setup. It provides functions Info, Warning, + Error, Fatal, plus formatting variants such as Infof. It + also provides V-style logging controlled by the -v and + -vmodule=file=2 flags. + + Basic examples: + + glog.Info("Prepare to repel boarders") + + glog.Fatalf("Initialization failed: %s", err) + + See the documentation for the V function for an explanation + of these examples: + + if glog.V(2) { + glog.Info("Starting transaction...") + } + + glog.V(2).Infoln("Processed", nItems, "elements") + + +The repository contains an open source version of the log package +used inside Google. The master copy of the source lives inside +Google, not here. The code in this repo is for export only and is not itself +under development. Feature requests will be ignored. + +Send bug reports to golang-nuts@googlegroups.com. diff --git a/vendor/github.com/golang/glog/glog.go b/vendor/github.com/golang/glog/glog.go new file mode 100644 index 0000000..54bd7af --- /dev/null +++ b/vendor/github.com/golang/glog/glog.go @@ -0,0 +1,1180 @@ +// Go support for leveled logs, analogous to https://code.google.com/p/google-glog/ +// +// Copyright 2013 Google Inc. All Rights Reserved. +// +// 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. + +// Package glog implements logging analogous to the Google-internal C++ INFO/ERROR/V setup. +// It provides functions Info, Warning, Error, Fatal, plus formatting variants such as +// Infof. It also provides V-style logging controlled by the -v and -vmodule=file=2 flags. +// +// Basic examples: +// +// glog.Info("Prepare to repel boarders") +// +// glog.Fatalf("Initialization failed: %s", err) +// +// See the documentation for the V function for an explanation of these examples: +// +// if glog.V(2) { +// glog.Info("Starting transaction...") +// } +// +// glog.V(2).Infoln("Processed", nItems, "elements") +// +// Log output is buffered and written periodically using Flush. Programs +// should call Flush before exiting to guarantee all log output is written. +// +// By default, all log statements write to files in a temporary directory. +// This package provides several flags that modify this behavior. +// As a result, flag.Parse must be called before any logging is done. +// +// -logtostderr=false +// Logs are written to standard error instead of to files. +// -alsologtostderr=false +// Logs are written to standard error as well as to files. +// -stderrthreshold=ERROR +// Log events at or above this severity are logged to standard +// error as well as to files. +// -log_dir="" +// Log files will be written to this directory instead of the +// default temporary directory. +// +// Other flags provide aids to debugging. +// +// -log_backtrace_at="" +// When set to a file and line number holding a logging statement, +// such as +// -log_backtrace_at=gopherflakes.go:234 +// a stack trace will be written to the Info log whenever execution +// hits that statement. (Unlike with -vmodule, the ".go" must be +// present.) +// -v=0 +// Enable V-leveled logging at the specified level. +// -vmodule="" +// The syntax of the argument is a comma-separated list of pattern=N, +// where pattern is a literal file name (minus the ".go" suffix) or +// "glob" pattern and N is a V level. For instance, +// -vmodule=gopher*=3 +// sets the V level to 3 in all Go files whose names begin "gopher". +// +package glog + +import ( + "bufio" + "bytes" + "errors" + "flag" + "fmt" + "io" + stdLog "log" + "os" + "path/filepath" + "runtime" + "strconv" + "strings" + "sync" + "sync/atomic" + "time" +) + +// severity identifies the sort of log: info, warning etc. It also implements +// the flag.Value interface. The -stderrthreshold flag is of type severity and +// should be modified only through the flag.Value interface. The values match +// the corresponding constants in C++. +type severity int32 // sync/atomic int32 + +// These constants identify the log levels in order of increasing severity. +// A message written to a high-severity log file is also written to each +// lower-severity log file. +const ( + infoLog severity = iota + warningLog + errorLog + fatalLog + numSeverity = 4 +) + +const severityChar = "IWEF" + +var severityName = []string{ + infoLog: "INFO", + warningLog: "WARNING", + errorLog: "ERROR", + fatalLog: "FATAL", +} + +// get returns the value of the severity. +func (s *severity) get() severity { + return severity(atomic.LoadInt32((*int32)(s))) +} + +// set sets the value of the severity. +func (s *severity) set(val severity) { + atomic.StoreInt32((*int32)(s), int32(val)) +} + +// String is part of the flag.Value interface. +func (s *severity) String() string { + return strconv.FormatInt(int64(*s), 10) +} + +// Get is part of the flag.Value interface. +func (s *severity) Get() interface{} { + return *s +} + +// Set is part of the flag.Value interface. +func (s *severity) Set(value string) error { + var threshold severity + // Is it a known name? + if v, ok := severityByName(value); ok { + threshold = v + } else { + v, err := strconv.Atoi(value) + if err != nil { + return err + } + threshold = severity(v) + } + logging.stderrThreshold.set(threshold) + return nil +} + +func severityByName(s string) (severity, bool) { + s = strings.ToUpper(s) + for i, name := range severityName { + if name == s { + return severity(i), true + } + } + return 0, false +} + +// OutputStats tracks the number of output lines and bytes written. +type OutputStats struct { + lines int64 + bytes int64 +} + +// Lines returns the number of lines written. +func (s *OutputStats) Lines() int64 { + return atomic.LoadInt64(&s.lines) +} + +// Bytes returns the number of bytes written. +func (s *OutputStats) Bytes() int64 { + return atomic.LoadInt64(&s.bytes) +} + +// Stats tracks the number of lines of output and number of bytes +// per severity level. Values must be read with atomic.LoadInt64. +var Stats struct { + Info, Warning, Error OutputStats +} + +var severityStats = [numSeverity]*OutputStats{ + infoLog: &Stats.Info, + warningLog: &Stats.Warning, + errorLog: &Stats.Error, +} + +// Level is exported because it appears in the arguments to V and is +// the type of the v flag, which can be set programmatically. +// It's a distinct type because we want to discriminate it from logType. +// Variables of type level are only changed under logging.mu. +// The -v flag is read only with atomic ops, so the state of the logging +// module is consistent. + +// Level is treated as a sync/atomic int32. + +// Level specifies a level of verbosity for V logs. *Level implements +// flag.Value; the -v flag is of type Level and should be modified +// only through the flag.Value interface. +type Level int32 + +// get returns the value of the Level. +func (l *Level) get() Level { + return Level(atomic.LoadInt32((*int32)(l))) +} + +// set sets the value of the Level. +func (l *Level) set(val Level) { + atomic.StoreInt32((*int32)(l), int32(val)) +} + +// String is part of the flag.Value interface. +func (l *Level) String() string { + return strconv.FormatInt(int64(*l), 10) +} + +// Get is part of the flag.Value interface. +func (l *Level) Get() interface{} { + return *l +} + +// Set is part of the flag.Value interface. +func (l *Level) Set(value string) error { + v, err := strconv.Atoi(value) + if err != nil { + return err + } + logging.mu.Lock() + defer logging.mu.Unlock() + logging.setVState(Level(v), logging.vmodule.filter, false) + return nil +} + +// moduleSpec represents the setting of the -vmodule flag. +type moduleSpec struct { + filter []modulePat +} + +// modulePat contains a filter for the -vmodule flag. +// It holds a verbosity level and a file pattern to match. +type modulePat struct { + pattern string + literal bool // The pattern is a literal string + level Level +} + +// match reports whether the file matches the pattern. It uses a string +// comparison if the pattern contains no metacharacters. +func (m *modulePat) match(file string) bool { + if m.literal { + return file == m.pattern + } + match, _ := filepath.Match(m.pattern, file) + return match +} + +func (m *moduleSpec) String() string { + // Lock because the type is not atomic. TODO: clean this up. + logging.mu.Lock() + defer logging.mu.Unlock() + var b bytes.Buffer + for i, f := range m.filter { + if i > 0 { + b.WriteRune(',') + } + fmt.Fprintf(&b, "%s=%d", f.pattern, f.level) + } + return b.String() +} + +// Get is part of the (Go 1.2) flag.Getter interface. It always returns nil for this flag type since the +// struct is not exported. +func (m *moduleSpec) Get() interface{} { + return nil +} + +var errVmoduleSyntax = errors.New("syntax error: expect comma-separated list of filename=N") + +// Syntax: -vmodule=recordio=2,file=1,gfs*=3 +func (m *moduleSpec) Set(value string) error { + var filter []modulePat + for _, pat := range strings.Split(value, ",") { + if len(pat) == 0 { + // Empty strings such as from a trailing comma can be ignored. + continue + } + patLev := strings.Split(pat, "=") + if len(patLev) != 2 || len(patLev[0]) == 0 || len(patLev[1]) == 0 { + return errVmoduleSyntax + } + pattern := patLev[0] + v, err := strconv.Atoi(patLev[1]) + if err != nil { + return errors.New("syntax error: expect comma-separated list of filename=N") + } + if v < 0 { + return errors.New("negative value for vmodule level") + } + if v == 0 { + continue // Ignore. It's harmless but no point in paying the overhead. + } + // TODO: check syntax of filter? + filter = append(filter, modulePat{pattern, isLiteral(pattern), Level(v)}) + } + logging.mu.Lock() + defer logging.mu.Unlock() + logging.setVState(logging.verbosity, filter, true) + return nil +} + +// isLiteral reports whether the pattern is a literal string, that is, has no metacharacters +// that require filepath.Match to be called to match the pattern. +func isLiteral(pattern string) bool { + return !strings.ContainsAny(pattern, `\*?[]`) +} + +// traceLocation represents the setting of the -log_backtrace_at flag. +type traceLocation struct { + file string + line int +} + +// isSet reports whether the trace location has been specified. +// logging.mu is held. +func (t *traceLocation) isSet() bool { + return t.line > 0 +} + +// match reports whether the specified file and line matches the trace location. +// The argument file name is the full path, not the basename specified in the flag. +// logging.mu is held. +func (t *traceLocation) match(file string, line int) bool { + if t.line != line { + return false + } + if i := strings.LastIndex(file, "/"); i >= 0 { + file = file[i+1:] + } + return t.file == file +} + +func (t *traceLocation) String() string { + // Lock because the type is not atomic. TODO: clean this up. + logging.mu.Lock() + defer logging.mu.Unlock() + return fmt.Sprintf("%s:%d", t.file, t.line) +} + +// Get is part of the (Go 1.2) flag.Getter interface. It always returns nil for this flag type since the +// struct is not exported +func (t *traceLocation) Get() interface{} { + return nil +} + +var errTraceSyntax = errors.New("syntax error: expect file.go:234") + +// Syntax: -log_backtrace_at=gopherflakes.go:234 +// Note that unlike vmodule the file extension is included here. +func (t *traceLocation) Set(value string) error { + if value == "" { + // Unset. + t.line = 0 + t.file = "" + } + fields := strings.Split(value, ":") + if len(fields) != 2 { + return errTraceSyntax + } + file, line := fields[0], fields[1] + if !strings.Contains(file, ".") { + return errTraceSyntax + } + v, err := strconv.Atoi(line) + if err != nil { + return errTraceSyntax + } + if v <= 0 { + return errors.New("negative or zero value for level") + } + logging.mu.Lock() + defer logging.mu.Unlock() + t.line = v + t.file = file + return nil +} + +// flushSyncWriter is the interface satisfied by logging destinations. +type flushSyncWriter interface { + Flush() error + Sync() error + io.Writer +} + +func init() { + flag.BoolVar(&logging.toStderr, "logtostderr", false, "log to standard error instead of files") + flag.BoolVar(&logging.alsoToStderr, "alsologtostderr", false, "log to standard error as well as files") + flag.Var(&logging.verbosity, "v", "log level for V logs") + flag.Var(&logging.stderrThreshold, "stderrthreshold", "logs at or above this threshold go to stderr") + flag.Var(&logging.vmodule, "vmodule", "comma-separated list of pattern=N settings for file-filtered logging") + flag.Var(&logging.traceLocation, "log_backtrace_at", "when logging hits line file:N, emit a stack trace") + + // Default stderrThreshold is ERROR. + logging.stderrThreshold = errorLog + + logging.setVState(0, nil, false) + go logging.flushDaemon() +} + +// Flush flushes all pending log I/O. +func Flush() { + logging.lockAndFlushAll() +} + +// loggingT collects all the global state of the logging setup. +type loggingT struct { + // Boolean flags. Not handled atomically because the flag.Value interface + // does not let us avoid the =true, and that shorthand is necessary for + // compatibility. TODO: does this matter enough to fix? Seems unlikely. + toStderr bool // The -logtostderr flag. + alsoToStderr bool // The -alsologtostderr flag. + + // Level flag. Handled atomically. + stderrThreshold severity // The -stderrthreshold flag. + + // freeList is a list of byte buffers, maintained under freeListMu. + freeList *buffer + // freeListMu maintains the free list. It is separate from the main mutex + // so buffers can be grabbed and printed to without holding the main lock, + // for better parallelization. + freeListMu sync.Mutex + + // mu protects the remaining elements of this structure and is + // used to synchronize logging. + mu sync.Mutex + // file holds writer for each of the log types. + file [numSeverity]flushSyncWriter + // pcs is used in V to avoid an allocation when computing the caller's PC. + pcs [1]uintptr + // vmap is a cache of the V Level for each V() call site, identified by PC. + // It is wiped whenever the vmodule flag changes state. + vmap map[uintptr]Level + // filterLength stores the length of the vmodule filter chain. If greater + // than zero, it means vmodule is enabled. It may be read safely + // using sync.LoadInt32, but is only modified under mu. + filterLength int32 + // traceLocation is the state of the -log_backtrace_at flag. + traceLocation traceLocation + // These flags are modified only under lock, although verbosity may be fetched + // safely using atomic.LoadInt32. + vmodule moduleSpec // The state of the -vmodule flag. + verbosity Level // V logging level, the value of the -v flag/ +} + +// buffer holds a byte Buffer for reuse. The zero value is ready for use. +type buffer struct { + bytes.Buffer + tmp [64]byte // temporary byte array for creating headers. + next *buffer +} + +var logging loggingT + +// setVState sets a consistent state for V logging. +// l.mu is held. +func (l *loggingT) setVState(verbosity Level, filter []modulePat, setFilter bool) { + // Turn verbosity off so V will not fire while we are in transition. + logging.verbosity.set(0) + // Ditto for filter length. + atomic.StoreInt32(&logging.filterLength, 0) + + // Set the new filters and wipe the pc->Level map if the filter has changed. + if setFilter { + logging.vmodule.filter = filter + logging.vmap = make(map[uintptr]Level) + } + + // Things are consistent now, so enable filtering and verbosity. + // They are enabled in order opposite to that in V. + atomic.StoreInt32(&logging.filterLength, int32(len(filter))) + logging.verbosity.set(verbosity) +} + +// getBuffer returns a new, ready-to-use buffer. +func (l *loggingT) getBuffer() *buffer { + l.freeListMu.Lock() + b := l.freeList + if b != nil { + l.freeList = b.next + } + l.freeListMu.Unlock() + if b == nil { + b = new(buffer) + } else { + b.next = nil + b.Reset() + } + return b +} + +// putBuffer returns a buffer to the free list. +func (l *loggingT) putBuffer(b *buffer) { + if b.Len() >= 256 { + // Let big buffers die a natural death. + return + } + l.freeListMu.Lock() + b.next = l.freeList + l.freeList = b + l.freeListMu.Unlock() +} + +var timeNow = time.Now // Stubbed out for testing. + +/* +header formats a log header as defined by the C++ implementation. +It returns a buffer containing the formatted header and the user's file and line number. +The depth specifies how many stack frames above lives the source line to be identified in the log message. + +Log lines have this form: + Lmmdd hh:mm:ss.uuuuuu threadid file:line] msg... +where the fields are defined as follows: + L A single character, representing the log level (eg 'I' for INFO) + mm The month (zero padded; ie May is '05') + dd The day (zero padded) + hh:mm:ss.uuuuuu Time in hours, minutes and fractional seconds + threadid The space-padded thread ID as returned by GetTID() + file The file name + line The line number + msg The user-supplied message +*/ +func (l *loggingT) header(s severity, depth int) (*buffer, string, int) { + _, file, line, ok := runtime.Caller(3 + depth) + if !ok { + file = "???" + line = 1 + } else { + slash := strings.LastIndex(file, "/") + if slash >= 0 { + file = file[slash+1:] + } + } + return l.formatHeader(s, file, line), file, line +} + +// formatHeader formats a log header using the provided file name and line number. +func (l *loggingT) formatHeader(s severity, file string, line int) *buffer { + now := timeNow() + if line < 0 { + line = 0 // not a real line number, but acceptable to someDigits + } + if s > fatalLog { + s = infoLog // for safety. + } + buf := l.getBuffer() + + // Avoid Fprintf, for speed. The format is so simple that we can do it quickly by hand. + // It's worth about 3X. Fprintf is hard. + _, month, day := now.Date() + hour, minute, second := now.Clock() + // Lmmdd hh:mm:ss.uuuuuu threadid file:line] + buf.tmp[0] = severityChar[s] + buf.twoDigits(1, int(month)) + buf.twoDigits(3, day) + buf.tmp[5] = ' ' + buf.twoDigits(6, hour) + buf.tmp[8] = ':' + buf.twoDigits(9, minute) + buf.tmp[11] = ':' + buf.twoDigits(12, second) + buf.tmp[14] = '.' + buf.nDigits(6, 15, now.Nanosecond()/1000, '0') + buf.tmp[21] = ' ' + buf.nDigits(7, 22, pid, ' ') // TODO: should be TID + buf.tmp[29] = ' ' + buf.Write(buf.tmp[:30]) + buf.WriteString(file) + buf.tmp[0] = ':' + n := buf.someDigits(1, line) + buf.tmp[n+1] = ']' + buf.tmp[n+2] = ' ' + buf.Write(buf.tmp[:n+3]) + return buf +} + +// Some custom tiny helper functions to print the log header efficiently. + +const digits = "0123456789" + +// twoDigits formats a zero-prefixed two-digit integer at buf.tmp[i]. +func (buf *buffer) twoDigits(i, d int) { + buf.tmp[i+1] = digits[d%10] + d /= 10 + buf.tmp[i] = digits[d%10] +} + +// nDigits formats an n-digit integer at buf.tmp[i], +// padding with pad on the left. +// It assumes d >= 0. +func (buf *buffer) nDigits(n, i, d int, pad byte) { + j := n - 1 + for ; j >= 0 && d > 0; j-- { + buf.tmp[i+j] = digits[d%10] + d /= 10 + } + for ; j >= 0; j-- { + buf.tmp[i+j] = pad + } +} + +// someDigits formats a zero-prefixed variable-width integer at buf.tmp[i]. +func (buf *buffer) someDigits(i, d int) int { + // Print into the top, then copy down. We know there's space for at least + // a 10-digit number. + j := len(buf.tmp) + for { + j-- + buf.tmp[j] = digits[d%10] + d /= 10 + if d == 0 { + break + } + } + return copy(buf.tmp[i:], buf.tmp[j:]) +} + +func (l *loggingT) println(s severity, args ...interface{}) { + buf, file, line := l.header(s, 0) + fmt.Fprintln(buf, args...) + l.output(s, buf, file, line, false) +} + +func (l *loggingT) print(s severity, args ...interface{}) { + l.printDepth(s, 1, args...) +} + +func (l *loggingT) printDepth(s severity, depth int, args ...interface{}) { + buf, file, line := l.header(s, depth) + fmt.Fprint(buf, args...) + if buf.Bytes()[buf.Len()-1] != '\n' { + buf.WriteByte('\n') + } + l.output(s, buf, file, line, false) +} + +func (l *loggingT) printf(s severity, format string, args ...interface{}) { + buf, file, line := l.header(s, 0) + fmt.Fprintf(buf, format, args...) + if buf.Bytes()[buf.Len()-1] != '\n' { + buf.WriteByte('\n') + } + l.output(s, buf, file, line, false) +} + +// printWithFileLine behaves like print but uses the provided file and line number. If +// alsoLogToStderr is true, the log message always appears on standard error; it +// will also appear in the log file unless --logtostderr is set. +func (l *loggingT) printWithFileLine(s severity, file string, line int, alsoToStderr bool, args ...interface{}) { + buf := l.formatHeader(s, file, line) + fmt.Fprint(buf, args...) + if buf.Bytes()[buf.Len()-1] != '\n' { + buf.WriteByte('\n') + } + l.output(s, buf, file, line, alsoToStderr) +} + +// output writes the data to the log files and releases the buffer. +func (l *loggingT) output(s severity, buf *buffer, file string, line int, alsoToStderr bool) { + l.mu.Lock() + if l.traceLocation.isSet() { + if l.traceLocation.match(file, line) { + buf.Write(stacks(false)) + } + } + data := buf.Bytes() + if !flag.Parsed() { + os.Stderr.Write([]byte("ERROR: logging before flag.Parse: ")) + os.Stderr.Write(data) + } else if l.toStderr { + os.Stderr.Write(data) + } else { + if alsoToStderr || l.alsoToStderr || s >= l.stderrThreshold.get() { + os.Stderr.Write(data) + } + if l.file[s] == nil { + if err := l.createFiles(s); err != nil { + os.Stderr.Write(data) // Make sure the message appears somewhere. + l.exit(err) + } + } + switch s { + case fatalLog: + l.file[fatalLog].Write(data) + fallthrough + case errorLog: + l.file[errorLog].Write(data) + fallthrough + case warningLog: + l.file[warningLog].Write(data) + fallthrough + case infoLog: + l.file[infoLog].Write(data) + } + } + if s == fatalLog { + // If we got here via Exit rather than Fatal, print no stacks. + if atomic.LoadUint32(&fatalNoStacks) > 0 { + l.mu.Unlock() + timeoutFlush(10 * time.Second) + os.Exit(1) + } + // Dump all goroutine stacks before exiting. + // First, make sure we see the trace for the current goroutine on standard error. + // If -logtostderr has been specified, the loop below will do that anyway + // as the first stack in the full dump. + if !l.toStderr { + os.Stderr.Write(stacks(false)) + } + // Write the stack trace for all goroutines to the files. + trace := stacks(true) + logExitFunc = func(error) {} // If we get a write error, we'll still exit below. + for log := fatalLog; log >= infoLog; log-- { + if f := l.file[log]; f != nil { // Can be nil if -logtostderr is set. + f.Write(trace) + } + } + l.mu.Unlock() + timeoutFlush(10 * time.Second) + os.Exit(255) // C++ uses -1, which is silly because it's anded with 255 anyway. + } + l.putBuffer(buf) + l.mu.Unlock() + if stats := severityStats[s]; stats != nil { + atomic.AddInt64(&stats.lines, 1) + atomic.AddInt64(&stats.bytes, int64(len(data))) + } +} + +// timeoutFlush calls Flush and returns when it completes or after timeout +// elapses, whichever happens first. This is needed because the hooks invoked +// by Flush may deadlock when glog.Fatal is called from a hook that holds +// a lock. +func timeoutFlush(timeout time.Duration) { + done := make(chan bool, 1) + go func() { + Flush() // calls logging.lockAndFlushAll() + done <- true + }() + select { + case <-done: + case <-time.After(timeout): + fmt.Fprintln(os.Stderr, "glog: Flush took longer than", timeout) + } +} + +// stacks is a wrapper for runtime.Stack that attempts to recover the data for all goroutines. +func stacks(all bool) []byte { + // We don't know how big the traces are, so grow a few times if they don't fit. Start large, though. + n := 10000 + if all { + n = 100000 + } + var trace []byte + for i := 0; i < 5; i++ { + trace = make([]byte, n) + nbytes := runtime.Stack(trace, all) + if nbytes < len(trace) { + return trace[:nbytes] + } + n *= 2 + } + return trace +} + +// logExitFunc provides a simple mechanism to override the default behavior +// of exiting on error. Used in testing and to guarantee we reach a required exit +// for fatal logs. Instead, exit could be a function rather than a method but that +// would make its use clumsier. +var logExitFunc func(error) + +// exit is called if there is trouble creating or writing log files. +// It flushes the logs and exits the program; there's no point in hanging around. +// l.mu is held. +func (l *loggingT) exit(err error) { + fmt.Fprintf(os.Stderr, "log: exiting because of error: %s\n", err) + // If logExitFunc is set, we do that instead of exiting. + if logExitFunc != nil { + logExitFunc(err) + return + } + l.flushAll() + os.Exit(2) +} + +// syncBuffer joins a bufio.Writer to its underlying file, providing access to the +// file's Sync method and providing a wrapper for the Write method that provides log +// file rotation. There are conflicting methods, so the file cannot be embedded. +// l.mu is held for all its methods. +type syncBuffer struct { + logger *loggingT + *bufio.Writer + file *os.File + sev severity + nbytes uint64 // The number of bytes written to this file +} + +func (sb *syncBuffer) Sync() error { + return sb.file.Sync() +} + +func (sb *syncBuffer) Write(p []byte) (n int, err error) { + if sb.nbytes+uint64(len(p)) >= MaxSize { + if err := sb.rotateFile(time.Now()); err != nil { + sb.logger.exit(err) + } + } + n, err = sb.Writer.Write(p) + sb.nbytes += uint64(n) + if err != nil { + sb.logger.exit(err) + } + return +} + +// rotateFile closes the syncBuffer's file and starts a new one. +func (sb *syncBuffer) rotateFile(now time.Time) error { + if sb.file != nil { + sb.Flush() + sb.file.Close() + } + var err error + sb.file, _, err = create(severityName[sb.sev], now) + sb.nbytes = 0 + if err != nil { + return err + } + + sb.Writer = bufio.NewWriterSize(sb.file, bufferSize) + + // Write header. + var buf bytes.Buffer + fmt.Fprintf(&buf, "Log file created at: %s\n", now.Format("2006/01/02 15:04:05")) + fmt.Fprintf(&buf, "Running on machine: %s\n", host) + fmt.Fprintf(&buf, "Binary: Built with %s %s for %s/%s\n", runtime.Compiler, runtime.Version(), runtime.GOOS, runtime.GOARCH) + fmt.Fprintf(&buf, "Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg\n") + n, err := sb.file.Write(buf.Bytes()) + sb.nbytes += uint64(n) + return err +} + +// bufferSize sizes the buffer associated with each log file. It's large +// so that log records can accumulate without the logging thread blocking +// on disk I/O. The flushDaemon will block instead. +const bufferSize = 256 * 1024 + +// createFiles creates all the log files for severity from sev down to infoLog. +// l.mu is held. +func (l *loggingT) createFiles(sev severity) error { + now := time.Now() + // Files are created in decreasing severity order, so as soon as we find one + // has already been created, we can stop. + for s := sev; s >= infoLog && l.file[s] == nil; s-- { + sb := &syncBuffer{ + logger: l, + sev: s, + } + if err := sb.rotateFile(now); err != nil { + return err + } + l.file[s] = sb + } + return nil +} + +const flushInterval = 30 * time.Second + +// flushDaemon periodically flushes the log file buffers. +func (l *loggingT) flushDaemon() { + for _ = range time.NewTicker(flushInterval).C { + l.lockAndFlushAll() + } +} + +// lockAndFlushAll is like flushAll but locks l.mu first. +func (l *loggingT) lockAndFlushAll() { + l.mu.Lock() + l.flushAll() + l.mu.Unlock() +} + +// flushAll flushes all the logs and attempts to "sync" their data to disk. +// l.mu is held. +func (l *loggingT) flushAll() { + // Flush from fatal down, in case there's trouble flushing. + for s := fatalLog; s >= infoLog; s-- { + file := l.file[s] + if file != nil { + file.Flush() // ignore error + file.Sync() // ignore error + } + } +} + +// CopyStandardLogTo arranges for messages written to the Go "log" package's +// default logs to also appear in the Google logs for the named and lower +// severities. Subsequent changes to the standard log's default output location +// or format may break this behavior. +// +// Valid names are "INFO", "WARNING", "ERROR", and "FATAL". If the name is not +// recognized, CopyStandardLogTo panics. +func CopyStandardLogTo(name string) { + sev, ok := severityByName(name) + if !ok { + panic(fmt.Sprintf("log.CopyStandardLogTo(%q): unrecognized severity name", name)) + } + // Set a log format that captures the user's file and line: + // d.go:23: message + stdLog.SetFlags(stdLog.Lshortfile) + stdLog.SetOutput(logBridge(sev)) +} + +// logBridge provides the Write method that enables CopyStandardLogTo to connect +// Go's standard logs to the logs provided by this package. +type logBridge severity + +// Write parses the standard logging line and passes its components to the +// logger for severity(lb). +func (lb logBridge) Write(b []byte) (n int, err error) { + var ( + file = "???" + line = 1 + text string + ) + // Split "d.go:23: message" into "d.go", "23", and "message". + if parts := bytes.SplitN(b, []byte{':'}, 3); len(parts) != 3 || len(parts[0]) < 1 || len(parts[2]) < 1 { + text = fmt.Sprintf("bad log format: %s", b) + } else { + file = string(parts[0]) + text = string(parts[2][1:]) // skip leading space + line, err = strconv.Atoi(string(parts[1])) + if err != nil { + text = fmt.Sprintf("bad line number: %s", b) + line = 1 + } + } + // printWithFileLine with alsoToStderr=true, so standard log messages + // always appear on standard error. + logging.printWithFileLine(severity(lb), file, line, true, text) + return len(b), nil +} + +// setV computes and remembers the V level for a given PC +// when vmodule is enabled. +// File pattern matching takes the basename of the file, stripped +// of its .go suffix, and uses filepath.Match, which is a little more +// general than the *? matching used in C++. +// l.mu is held. +func (l *loggingT) setV(pc uintptr) Level { + fn := runtime.FuncForPC(pc) + file, _ := fn.FileLine(pc) + // The file is something like /a/b/c/d.go. We want just the d. + if strings.HasSuffix(file, ".go") { + file = file[:len(file)-3] + } + if slash := strings.LastIndex(file, "/"); slash >= 0 { + file = file[slash+1:] + } + for _, filter := range l.vmodule.filter { + if filter.match(file) { + l.vmap[pc] = filter.level + return filter.level + } + } + l.vmap[pc] = 0 + return 0 +} + +// Verbose is a boolean type that implements Infof (like Printf) etc. +// See the documentation of V for more information. +type Verbose bool + +// V reports whether verbosity at the call site is at least the requested level. +// The returned value is a boolean of type Verbose, which implements Info, Infoln +// and Infof. These methods will write to the Info log if called. +// Thus, one may write either +// if glog.V(2) { glog.Info("log this") } +// or +// glog.V(2).Info("log this") +// The second form is shorter but the first is cheaper if logging is off because it does +// not evaluate its arguments. +// +// Whether an individual call to V generates a log record depends on the setting of +// the -v and --vmodule flags; both are off by default. If the level in the call to +// V is at least the value of -v, or of -vmodule for the source file containing the +// call, the V call will log. +func V(level Level) Verbose { + // This function tries hard to be cheap unless there's work to do. + // The fast path is two atomic loads and compares. + + // Here is a cheap but safe test to see if V logging is enabled globally. + if logging.verbosity.get() >= level { + return Verbose(true) + } + + // It's off globally but it vmodule may still be set. + // Here is another cheap but safe test to see if vmodule is enabled. + if atomic.LoadInt32(&logging.filterLength) > 0 { + // Now we need a proper lock to use the logging structure. The pcs field + // is shared so we must lock before accessing it. This is fairly expensive, + // but if V logging is enabled we're slow anyway. + logging.mu.Lock() + defer logging.mu.Unlock() + if runtime.Callers(2, logging.pcs[:]) == 0 { + return Verbose(false) + } + v, ok := logging.vmap[logging.pcs[0]] + if !ok { + v = logging.setV(logging.pcs[0]) + } + return Verbose(v >= level) + } + return Verbose(false) +} + +// Info is equivalent to the global Info function, guarded by the value of v. +// See the documentation of V for usage. +func (v Verbose) Info(args ...interface{}) { + if v { + logging.print(infoLog, args...) + } +} + +// Infoln is equivalent to the global Infoln function, guarded by the value of v. +// See the documentation of V for usage. +func (v Verbose) Infoln(args ...interface{}) { + if v { + logging.println(infoLog, args...) + } +} + +// Infof is equivalent to the global Infof function, guarded by the value of v. +// See the documentation of V for usage. +func (v Verbose) Infof(format string, args ...interface{}) { + if v { + logging.printf(infoLog, format, args...) + } +} + +// Info logs to the INFO log. +// Arguments are handled in the manner of fmt.Print; a newline is appended if missing. +func Info(args ...interface{}) { + logging.print(infoLog, args...) +} + +// InfoDepth acts as Info but uses depth to determine which call frame to log. +// InfoDepth(0, "msg") is the same as Info("msg"). +func InfoDepth(depth int, args ...interface{}) { + logging.printDepth(infoLog, depth, args...) +} + +// Infoln logs to the INFO log. +// Arguments are handled in the manner of fmt.Println; a newline is appended if missing. +func Infoln(args ...interface{}) { + logging.println(infoLog, args...) +} + +// Infof logs to the INFO log. +// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing. +func Infof(format string, args ...interface{}) { + logging.printf(infoLog, format, args...) +} + +// Warning logs to the WARNING and INFO logs. +// Arguments are handled in the manner of fmt.Print; a newline is appended if missing. +func Warning(args ...interface{}) { + logging.print(warningLog, args...) +} + +// WarningDepth acts as Warning but uses depth to determine which call frame to log. +// WarningDepth(0, "msg") is the same as Warning("msg"). +func WarningDepth(depth int, args ...interface{}) { + logging.printDepth(warningLog, depth, args...) +} + +// Warningln logs to the WARNING and INFO logs. +// Arguments are handled in the manner of fmt.Println; a newline is appended if missing. +func Warningln(args ...interface{}) { + logging.println(warningLog, args...) +} + +// Warningf logs to the WARNING and INFO logs. +// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing. +func Warningf(format string, args ...interface{}) { + logging.printf(warningLog, format, args...) +} + +// Error logs to the ERROR, WARNING, and INFO logs. +// Arguments are handled in the manner of fmt.Print; a newline is appended if missing. +func Error(args ...interface{}) { + logging.print(errorLog, args...) +} + +// ErrorDepth acts as Error but uses depth to determine which call frame to log. +// ErrorDepth(0, "msg") is the same as Error("msg"). +func ErrorDepth(depth int, args ...interface{}) { + logging.printDepth(errorLog, depth, args...) +} + +// Errorln logs to the ERROR, WARNING, and INFO logs. +// Arguments are handled in the manner of fmt.Println; a newline is appended if missing. +func Errorln(args ...interface{}) { + logging.println(errorLog, args...) +} + +// Errorf logs to the ERROR, WARNING, and INFO logs. +// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing. +func Errorf(format string, args ...interface{}) { + logging.printf(errorLog, format, args...) +} + +// Fatal logs to the FATAL, ERROR, WARNING, and INFO logs, +// including a stack trace of all running goroutines, then calls os.Exit(255). +// Arguments are handled in the manner of fmt.Print; a newline is appended if missing. +func Fatal(args ...interface{}) { + logging.print(fatalLog, args...) +} + +// FatalDepth acts as Fatal but uses depth to determine which call frame to log. +// FatalDepth(0, "msg") is the same as Fatal("msg"). +func FatalDepth(depth int, args ...interface{}) { + logging.printDepth(fatalLog, depth, args...) +} + +// Fatalln logs to the FATAL, ERROR, WARNING, and INFO logs, +// including a stack trace of all running goroutines, then calls os.Exit(255). +// Arguments are handled in the manner of fmt.Println; a newline is appended if missing. +func Fatalln(args ...interface{}) { + logging.println(fatalLog, args...) +} + +// Fatalf logs to the FATAL, ERROR, WARNING, and INFO logs, +// including a stack trace of all running goroutines, then calls os.Exit(255). +// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing. +func Fatalf(format string, args ...interface{}) { + logging.printf(fatalLog, format, args...) +} + +// fatalNoStacks is non-zero if we are to exit without dumping goroutine stacks. +// It allows Exit and relatives to use the Fatal logs. +var fatalNoStacks uint32 + +// Exit logs to the FATAL, ERROR, WARNING, and INFO logs, then calls os.Exit(1). +// Arguments are handled in the manner of fmt.Print; a newline is appended if missing. +func Exit(args ...interface{}) { + atomic.StoreUint32(&fatalNoStacks, 1) + logging.print(fatalLog, args...) +} + +// ExitDepth acts as Exit but uses depth to determine which call frame to log. +// ExitDepth(0, "msg") is the same as Exit("msg"). +func ExitDepth(depth int, args ...interface{}) { + atomic.StoreUint32(&fatalNoStacks, 1) + logging.printDepth(fatalLog, depth, args...) +} + +// Exitln logs to the FATAL, ERROR, WARNING, and INFO logs, then calls os.Exit(1). +func Exitln(args ...interface{}) { + atomic.StoreUint32(&fatalNoStacks, 1) + logging.println(fatalLog, args...) +} + +// Exitf logs to the FATAL, ERROR, WARNING, and INFO logs, then calls os.Exit(1). +// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing. +func Exitf(format string, args ...interface{}) { + atomic.StoreUint32(&fatalNoStacks, 1) + logging.printf(fatalLog, format, args...) +} diff --git a/vendor/github.com/golang/glog/glog_file.go b/vendor/github.com/golang/glog/glog_file.go new file mode 100644 index 0000000..65075d2 --- /dev/null +++ b/vendor/github.com/golang/glog/glog_file.go @@ -0,0 +1,124 @@ +// Go support for leveled logs, analogous to https://code.google.com/p/google-glog/ +// +// Copyright 2013 Google Inc. All Rights Reserved. +// +// 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. + +// File I/O for logs. + +package glog + +import ( + "errors" + "flag" + "fmt" + "os" + "os/user" + "path/filepath" + "strings" + "sync" + "time" +) + +// MaxSize is the maximum size of a log file in bytes. +var MaxSize uint64 = 1024 * 1024 * 1800 + +// logDirs lists the candidate directories for new log files. +var logDirs []string + +// If non-empty, overrides the choice of directory in which to write logs. +// See createLogDirs for the full list of possible destinations. +var logDir = flag.String("log_dir", "", "If non-empty, write log files in this directory") + +func createLogDirs() { + if *logDir != "" { + logDirs = append(logDirs, *logDir) + } + logDirs = append(logDirs, os.TempDir()) +} + +var ( + pid = os.Getpid() + program = filepath.Base(os.Args[0]) + host = "unknownhost" + userName = "unknownuser" +) + +func init() { + h, err := os.Hostname() + if err == nil { + host = shortHostname(h) + } + + current, err := user.Current() + if err == nil { + userName = current.Username + } + + // Sanitize userName since it may contain filepath separators on Windows. + userName = strings.Replace(userName, `\`, "_", -1) +} + +// shortHostname returns its argument, truncating at the first period. +// For instance, given "www.google.com" it returns "www". +func shortHostname(hostname string) string { + if i := strings.Index(hostname, "."); i >= 0 { + return hostname[:i] + } + return hostname +} + +// logName returns a new log file name containing tag, with start time t, and +// the name for the symlink for tag. +func logName(tag string, t time.Time) (name, link string) { + name = fmt.Sprintf("%s.%s.%s.log.%s.%04d%02d%02d-%02d%02d%02d.%d", + program, + host, + userName, + tag, + t.Year(), + t.Month(), + t.Day(), + t.Hour(), + t.Minute(), + t.Second(), + pid) + return name, program + "." + tag +} + +var onceLogDirs sync.Once + +// create creates a new log file and returns the file and its filename, which +// contains tag ("INFO", "FATAL", etc.) and t. If the file is created +// successfully, create also attempts to update the symlink for that tag, ignoring +// errors. +func create(tag string, t time.Time) (f *os.File, filename string, err error) { + onceLogDirs.Do(createLogDirs) + if len(logDirs) == 0 { + return nil, "", errors.New("log: no log dirs") + } + name, link := logName(tag, t) + var lastErr error + for _, dir := range logDirs { + fname := filepath.Join(dir, name) + f, err := os.Create(fname) + if err == nil { + symlink := filepath.Join(dir, link) + os.Remove(symlink) // ignore err + os.Symlink(name, symlink) // ignore err + return f, fname, nil + } + lastErr = err + } + return nil, "", fmt.Errorf("log: cannot create log: %v", lastErr) +} diff --git a/vendor/github.com/gorilla/websocket/.gitignore b/vendor/github.com/gorilla/websocket/.gitignore new file mode 100644 index 0000000..ac71020 --- /dev/null +++ b/vendor/github.com/gorilla/websocket/.gitignore @@ -0,0 +1,25 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe + +.idea/ +*.iml \ No newline at end of file diff --git a/vendor/github.com/gorilla/websocket/.travis.yml b/vendor/github.com/gorilla/websocket/.travis.yml new file mode 100644 index 0000000..4ea1e7a --- /dev/null +++ b/vendor/github.com/gorilla/websocket/.travis.yml @@ -0,0 +1,18 @@ +language: go +sudo: false + +matrix: + include: + - go: 1.4 + - go: 1.5 + - go: 1.6 + - go: 1.7 + - go: tip + allow_failures: + - go: tip + +script: + - go get -t -v ./... + - diff -u <(echo -n) <(gofmt -d .) + - go vet $(go list ./... | grep -v /vendor/) + - go test -v -race ./... diff --git a/vendor/github.com/gorilla/websocket/AUTHORS b/vendor/github.com/gorilla/websocket/AUTHORS new file mode 100644 index 0000000..b003eca --- /dev/null +++ b/vendor/github.com/gorilla/websocket/AUTHORS @@ -0,0 +1,8 @@ +# This is the official list of Gorilla WebSocket authors for copyright +# purposes. +# +# Please keep the list sorted. + +Gary Burd +Joachim Bauch + diff --git a/vendor/github.com/gorilla/websocket/LICENSE b/vendor/github.com/gorilla/websocket/LICENSE new file mode 100644 index 0000000..9171c97 --- /dev/null +++ b/vendor/github.com/gorilla/websocket/LICENSE @@ -0,0 +1,22 @@ +Copyright (c) 2013 The Gorilla WebSocket Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/gorilla/websocket/README.md b/vendor/github.com/gorilla/websocket/README.md new file mode 100644 index 0000000..33c3d2b --- /dev/null +++ b/vendor/github.com/gorilla/websocket/README.md @@ -0,0 +1,64 @@ +# Gorilla WebSocket + +Gorilla WebSocket is a [Go](http://golang.org/) implementation of the +[WebSocket](http://www.rfc-editor.org/rfc/rfc6455.txt) protocol. + +[![Build Status](https://travis-ci.org/gorilla/websocket.svg?branch=master)](https://travis-ci.org/gorilla/websocket) +[![GoDoc](https://godoc.org/github.com/gorilla/websocket?status.svg)](https://godoc.org/github.com/gorilla/websocket) + +### Documentation + +* [API Reference](http://godoc.org/github.com/gorilla/websocket) +* [Chat example](https://github.com/gorilla/websocket/tree/master/examples/chat) +* [Command example](https://github.com/gorilla/websocket/tree/master/examples/command) +* [Client and server example](https://github.com/gorilla/websocket/tree/master/examples/echo) +* [File watch example](https://github.com/gorilla/websocket/tree/master/examples/filewatch) + +### Status + +The Gorilla WebSocket package provides a complete and tested implementation of +the [WebSocket](http://www.rfc-editor.org/rfc/rfc6455.txt) protocol. The +package API is stable. + +### Installation + + go get github.com/gorilla/websocket + +### Protocol Compliance + +The Gorilla WebSocket package passes the server tests in the [Autobahn Test +Suite](http://autobahn.ws/testsuite) using the application in the [examples/autobahn +subdirectory](https://github.com/gorilla/websocket/tree/master/examples/autobahn). + +### Gorilla WebSocket compared with other packages + + + + + + + + + + + + + + + + + + +
      github.com/gorillagolang.org/x/net
      RFC 6455 Features
      Passes Autobahn Test SuiteYesNo
      Receive fragmented messageYesNo, see note 1
      Send close messageYesNo
      Send pings and receive pongsYesNo
      Get the type of a received data messageYesYes, see note 2
      Other Features
      Compression ExtensionsExperimentalNo
      Read message using io.ReaderYesNo, see note 3
      Write message using io.WriteCloserYesNo, see note 3
      + +Notes: + +1. Large messages are fragmented in [Chrome's new WebSocket implementation](http://www.ietf.org/mail-archive/web/hybi/current/msg10503.html). +2. The application can get the type of a received data message by implementing + a [Codec marshal](http://godoc.org/golang.org/x/net/websocket#Codec.Marshal) + function. +3. The go.net io.Reader and io.Writer operate across WebSocket frame boundaries. + Read returns when the input buffer is full or a frame boundary is + encountered. Each call to Write sends a single frame message. The Gorilla + io.Reader and io.WriteCloser operate on a single WebSocket message. + diff --git a/vendor/github.com/gorilla/websocket/client.go b/vendor/github.com/gorilla/websocket/client.go new file mode 100644 index 0000000..78d9328 --- /dev/null +++ b/vendor/github.com/gorilla/websocket/client.go @@ -0,0 +1,420 @@ +// Copyright 2013 The Gorilla WebSocket 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 websocket + +import ( + "bufio" + "bytes" + "crypto/tls" + "encoding/base64" + "errors" + "io" + "io/ioutil" + "net" + "net/http" + "net/url" + "strings" + "time" +) + +// ErrBadHandshake is returned when the server response to opening handshake is +// invalid. +var ErrBadHandshake = errors.New("websocket: bad handshake") + +var errInvalidCompression = errors.New("websocket: invalid compression negotiation") + +// NewClient creates a new client connection using the given net connection. +// The URL u specifies the host and request URI. Use requestHeader to specify +// the origin (Origin), subprotocols (Sec-WebSocket-Protocol) and cookies +// (Cookie). Use the response.Header to get the selected subprotocol +// (Sec-WebSocket-Protocol) and cookies (Set-Cookie). +// +// If the WebSocket handshake fails, ErrBadHandshake is returned along with a +// non-nil *http.Response so that callers can handle redirects, authentication, +// etc. +// +// Deprecated: Use Dialer instead. +func NewClient(netConn net.Conn, u *url.URL, requestHeader http.Header, readBufSize, writeBufSize int) (c *Conn, response *http.Response, err error) { + d := Dialer{ + ReadBufferSize: readBufSize, + WriteBufferSize: writeBufSize, + NetDial: func(net, addr string) (net.Conn, error) { + return netConn, nil + }, + } + return d.Dial(u.String(), requestHeader) +} + +// A Dialer contains options for connecting to WebSocket server. +type Dialer struct { + // NetDial specifies the dial function for creating TCP connections. If + // NetDial is nil, net.Dial is used. + NetDial func(network, addr string) (net.Conn, error) + + // Proxy specifies a function to return a proxy for a given + // Request. If the function returns a non-nil error, the + // request is aborted with the provided error. + // If Proxy is nil or returns a nil *URL, no proxy is used. + Proxy func(*http.Request) (*url.URL, error) + + // TLSClientConfig specifies the TLS configuration to use with tls.Client. + // If nil, the default configuration is used. + TLSClientConfig *tls.Config + + // HandshakeTimeout specifies the duration for the handshake to complete. + HandshakeTimeout time.Duration + + // Input and output buffer sizes. If the buffer size is zero, then a + // default value of 4096 is used. + ReadBufferSize, WriteBufferSize int + + // Subprotocols specifies the client's requested subprotocols. + Subprotocols []string + + // EnableCompression specifies if the client should attempt to negotiate + // per message compression (RFC 7692). Setting this value to true does not + // guarantee that compression will be supported. Currently only "no context + // takeover" modes are supported. + EnableCompression bool + + // Jar specifies the cookie jar. + // If Jar is nil, cookies are not sent in requests and ignored + // in responses. + Jar http.CookieJar +} + +var errMalformedURL = errors.New("malformed ws or wss URL") + +// parseURL parses the URL. +// +// This function is a replacement for the standard library url.Parse function. +// In Go 1.4 and earlier, url.Parse loses information from the path. +func parseURL(s string) (*url.URL, error) { + // From the RFC: + // + // ws-URI = "ws:" "//" host [ ":" port ] path [ "?" query ] + // wss-URI = "wss:" "//" host [ ":" port ] path [ "?" query ] + var u url.URL + switch { + case strings.HasPrefix(s, "ws://"): + u.Scheme = "ws" + s = s[len("ws://"):] + case strings.HasPrefix(s, "wss://"): + u.Scheme = "wss" + s = s[len("wss://"):] + default: + return nil, errMalformedURL + } + + if i := strings.Index(s, "?"); i >= 0 { + u.RawQuery = s[i+1:] + s = s[:i] + } + + if i := strings.Index(s, "/"); i >= 0 { + u.Opaque = s[i:] + s = s[:i] + } else { + u.Opaque = "/" + } + + u.Host = s + + if strings.Contains(u.Host, "@") { + // Don't bother parsing user information because user information is + // not allowed in websocket URIs. + return nil, errMalformedURL + } + + return &u, nil +} + +func hostPortNoPort(u *url.URL) (hostPort, hostNoPort string) { + hostPort = u.Host + hostNoPort = u.Host + if i := strings.LastIndex(u.Host, ":"); i > strings.LastIndex(u.Host, "]") { + hostNoPort = hostNoPort[:i] + } else { + switch u.Scheme { + case "wss": + hostPort += ":443" + case "https": + hostPort += ":443" + default: + hostPort += ":80" + } + } + return hostPort, hostNoPort +} + +// DefaultDialer is a dialer with all fields set to the default zero values. +var DefaultDialer = &Dialer{ + Proxy: http.ProxyFromEnvironment, +} + +// Dial creates a new client connection. Use requestHeader to specify the +// origin (Origin), subprotocols (Sec-WebSocket-Protocol) and cookies (Cookie). +// Use the response.Header to get the selected subprotocol +// (Sec-WebSocket-Protocol) and cookies (Set-Cookie). +// +// If the WebSocket handshake fails, ErrBadHandshake is returned along with a +// non-nil *http.Response so that callers can handle redirects, authentication, +// etcetera. The response body may not contain the entire response and does not +// need to be closed by the application. +func (d *Dialer) Dial(urlStr string, requestHeader http.Header) (*Conn, *http.Response, error) { + + if d == nil { + d = &Dialer{ + Proxy: http.ProxyFromEnvironment, + } + } + + challengeKey, err := generateChallengeKey() + if err != nil { + return nil, nil, err + } + + u, err := parseURL(urlStr) + if err != nil { + return nil, nil, err + } + + switch u.Scheme { + case "ws": + u.Scheme = "http" + case "wss": + u.Scheme = "https" + default: + return nil, nil, errMalformedURL + } + + if u.User != nil { + // User name and password are not allowed in websocket URIs. + return nil, nil, errMalformedURL + } + + req := &http.Request{ + Method: "GET", + URL: u, + Proto: "HTTP/1.1", + ProtoMajor: 1, + ProtoMinor: 1, + Header: make(http.Header), + Host: u.Host, + } + + // Set the cookies present in the cookie jar of the dialer + if d.Jar != nil { + for _, cookie := range d.Jar.Cookies(u) { + req.AddCookie(cookie) + } + } + + // Set the request headers using the capitalization for names and values in + // RFC examples. Although the capitalization shouldn't matter, there are + // servers that depend on it. The Header.Set method is not used because the + // method canonicalizes the header names. + req.Header["Upgrade"] = []string{"websocket"} + req.Header["Connection"] = []string{"Upgrade"} + req.Header["Sec-WebSocket-Key"] = []string{challengeKey} + req.Header["Sec-WebSocket-Version"] = []string{"13"} + if len(d.Subprotocols) > 0 { + req.Header["Sec-WebSocket-Protocol"] = []string{strings.Join(d.Subprotocols, ", ")} + } + for k, vs := range requestHeader { + switch { + case k == "Host": + if len(vs) > 0 { + req.Host = vs[0] + } + case k == "Upgrade" || + k == "Connection" || + k == "Sec-Websocket-Key" || + k == "Sec-Websocket-Version" || + k == "Sec-Websocket-Extensions" || + (k == "Sec-Websocket-Protocol" && len(d.Subprotocols) > 0): + return nil, nil, errors.New("websocket: duplicate header not allowed: " + k) + default: + req.Header[k] = vs + } + } + + if d.EnableCompression { + req.Header.Set("Sec-Websocket-Extensions", "permessage-deflate; server_no_context_takeover; client_no_context_takeover") + } + + hostPort, hostNoPort := hostPortNoPort(u) + + var proxyURL *url.URL + // Check wether the proxy method has been configured + if d.Proxy != nil { + proxyURL, err = d.Proxy(req) + } + if err != nil { + return nil, nil, err + } + + var targetHostPort string + if proxyURL != nil { + targetHostPort, _ = hostPortNoPort(proxyURL) + } else { + targetHostPort = hostPort + } + + var deadline time.Time + if d.HandshakeTimeout != 0 { + deadline = time.Now().Add(d.HandshakeTimeout) + } + + netDial := d.NetDial + if netDial == nil { + netDialer := &net.Dialer{Deadline: deadline} + netDial = netDialer.Dial + } + + netConn, err := netDial("tcp", targetHostPort) + if err != nil { + return nil, nil, err + } + + defer func() { + if netConn != nil { + netConn.Close() + } + }() + + if err := netConn.SetDeadline(deadline); err != nil { + return nil, nil, err + } + + if proxyURL != nil { + connectHeader := make(http.Header) + if user := proxyURL.User; user != nil { + proxyUser := user.Username() + if proxyPassword, passwordSet := user.Password(); passwordSet { + credential := base64.StdEncoding.EncodeToString([]byte(proxyUser + ":" + proxyPassword)) + connectHeader.Set("Proxy-Authorization", "Basic "+credential) + } + } + connectReq := &http.Request{ + Method: "CONNECT", + URL: &url.URL{Opaque: hostPort}, + Host: hostPort, + Header: connectHeader, + } + + connectReq.Write(netConn) + + // Read response. + // Okay to use and discard buffered reader here, because + // TLS server will not speak until spoken to. + br := bufio.NewReader(netConn) + resp, err := http.ReadResponse(br, connectReq) + if err != nil { + return nil, nil, err + } + if resp.StatusCode != 200 { + f := strings.SplitN(resp.Status, " ", 2) + return nil, nil, errors.New(f[1]) + } + } + + if u.Scheme == "https" { + cfg := cloneTLSConfig(d.TLSClientConfig) + if cfg.ServerName == "" { + cfg.ServerName = hostNoPort + } + tlsConn := tls.Client(netConn, cfg) + netConn = tlsConn + if err := tlsConn.Handshake(); err != nil { + return nil, nil, err + } + if !cfg.InsecureSkipVerify { + if err := tlsConn.VerifyHostname(cfg.ServerName); err != nil { + return nil, nil, err + } + } + } + + conn := newConn(netConn, false, d.ReadBufferSize, d.WriteBufferSize) + + if err := req.Write(netConn); err != nil { + return nil, nil, err + } + + resp, err := http.ReadResponse(conn.br, req) + if err != nil { + return nil, nil, err + } + + if d.Jar != nil { + if rc := resp.Cookies(); len(rc) > 0 { + d.Jar.SetCookies(u, rc) + } + } + + if resp.StatusCode != 101 || + !strings.EqualFold(resp.Header.Get("Upgrade"), "websocket") || + !strings.EqualFold(resp.Header.Get("Connection"), "upgrade") || + resp.Header.Get("Sec-Websocket-Accept") != computeAcceptKey(challengeKey) { + // Before closing the network connection on return from this + // function, slurp up some of the response to aid application + // debugging. + buf := make([]byte, 1024) + n, _ := io.ReadFull(resp.Body, buf) + resp.Body = ioutil.NopCloser(bytes.NewReader(buf[:n])) + return nil, resp, ErrBadHandshake + } + + for _, ext := range parseExtensions(req.Header) { + if ext[""] != "permessage-deflate" { + continue + } + _, snct := ext["server_no_context_takeover"] + _, cnct := ext["client_no_context_takeover"] + if !snct || !cnct { + return nil, resp, errInvalidCompression + } + conn.newCompressionWriter = compressNoContextTakeover + conn.newDecompressionReader = decompressNoContextTakeover + break + } + + resp.Body = ioutil.NopCloser(bytes.NewReader([]byte{})) + conn.subprotocol = resp.Header.Get("Sec-Websocket-Protocol") + + netConn.SetDeadline(time.Time{}) + netConn = nil // to avoid close in defer. + return conn, resp, nil +} + +// cloneTLSConfig clones all public fields except the fields +// SessionTicketsDisabled and SessionTicketKey. This avoids copying the +// sync.Mutex in the sync.Once and makes it safe to call cloneTLSConfig on a +// config in active use. +func cloneTLSConfig(cfg *tls.Config) *tls.Config { + if cfg == nil { + return &tls.Config{} + } + return &tls.Config{ + Rand: cfg.Rand, + Time: cfg.Time, + Certificates: cfg.Certificates, + NameToCertificate: cfg.NameToCertificate, + GetCertificate: cfg.GetCertificate, + RootCAs: cfg.RootCAs, + NextProtos: cfg.NextProtos, + ServerName: cfg.ServerName, + ClientAuth: cfg.ClientAuth, + ClientCAs: cfg.ClientCAs, + InsecureSkipVerify: cfg.InsecureSkipVerify, + CipherSuites: cfg.CipherSuites, + PreferServerCipherSuites: cfg.PreferServerCipherSuites, + ClientSessionCache: cfg.ClientSessionCache, + MinVersion: cfg.MinVersion, + MaxVersion: cfg.MaxVersion, + CurvePreferences: cfg.CurvePreferences, + } +} diff --git a/vendor/github.com/gorilla/websocket/compression.go b/vendor/github.com/gorilla/websocket/compression.go new file mode 100644 index 0000000..e2ac761 --- /dev/null +++ b/vendor/github.com/gorilla/websocket/compression.go @@ -0,0 +1,85 @@ +// Copyright 2016 The Gorilla WebSocket 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 websocket + +import ( + "compress/flate" + "errors" + "io" + "strings" +) + +func decompressNoContextTakeover(r io.Reader) io.Reader { + const tail = + // Add four bytes as specified in RFC + "\x00\x00\xff\xff" + + // Add final block to squelch unexpected EOF error from flate reader. + "\x01\x00\x00\xff\xff" + + return flate.NewReader(io.MultiReader(r, strings.NewReader(tail))) +} + +func compressNoContextTakeover(w io.WriteCloser) (io.WriteCloser, error) { + tw := &truncWriter{w: w} + fw, err := flate.NewWriter(tw, 3) + return &flateWrapper{fw: fw, tw: tw}, err +} + +// truncWriter is an io.Writer that writes all but the last four bytes of the +// stream to another io.Writer. +type truncWriter struct { + w io.WriteCloser + n int + p [4]byte +} + +func (w *truncWriter) Write(p []byte) (int, error) { + n := 0 + + // fill buffer first for simplicity. + if w.n < len(w.p) { + n = copy(w.p[w.n:], p) + p = p[n:] + w.n += n + if len(p) == 0 { + return n, nil + } + } + + m := len(p) + if m > len(w.p) { + m = len(w.p) + } + + if nn, err := w.w.Write(w.p[:m]); err != nil { + return n + nn, err + } + + copy(w.p[:], w.p[m:]) + copy(w.p[len(w.p)-m:], p[len(p)-m:]) + nn, err := w.w.Write(p[:len(p)-m]) + return n + nn, err +} + +type flateWrapper struct { + fw *flate.Writer + tw *truncWriter +} + +func (w *flateWrapper) Write(p []byte) (int, error) { + return w.fw.Write(p) +} + +func (w *flateWrapper) Close() error { + err1 := w.fw.Flush() + if w.tw.p != [4]byte{0, 0, 0xff, 0xff} { + return errors.New("websocket: internal error, unexpected bytes at end of flate stream") + } + err2 := w.tw.w.Close() + if err1 != nil { + return err1 + } + return err2 +} diff --git a/vendor/github.com/gorilla/websocket/conn.go b/vendor/github.com/gorilla/websocket/conn.go new file mode 100644 index 0000000..5b26b53 --- /dev/null +++ b/vendor/github.com/gorilla/websocket/conn.go @@ -0,0 +1,986 @@ +// Copyright 2013 The Gorilla WebSocket 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 websocket + +import ( + "bufio" + "encoding/binary" + "errors" + "io" + "io/ioutil" + "net" + "strconv" + "time" + "unicode/utf8" +) + +const ( + // Frame header byte 0 bits from Section 5.2 of RFC 6455 + finalBit = 1 << 7 + rsv1Bit = 1 << 6 + rsv2Bit = 1 << 5 + rsv3Bit = 1 << 4 + + // Frame header byte 1 bits from Section 5.2 of RFC 6455 + maskBit = 1 << 7 + + maxFrameHeaderSize = 2 + 8 + 4 // Fixed header + length + mask + maxControlFramePayloadSize = 125 + + writeWait = time.Second + + defaultReadBufferSize = 4096 + defaultWriteBufferSize = 4096 + + continuationFrame = 0 + noFrame = -1 +) + +// Close codes defined in RFC 6455, section 11.7. +const ( + CloseNormalClosure = 1000 + CloseGoingAway = 1001 + CloseProtocolError = 1002 + CloseUnsupportedData = 1003 + CloseNoStatusReceived = 1005 + CloseAbnormalClosure = 1006 + CloseInvalidFramePayloadData = 1007 + ClosePolicyViolation = 1008 + CloseMessageTooBig = 1009 + CloseMandatoryExtension = 1010 + CloseInternalServerErr = 1011 + CloseServiceRestart = 1012 + CloseTryAgainLater = 1013 + CloseTLSHandshake = 1015 +) + +// The message types are defined in RFC 6455, section 11.8. +const ( + // TextMessage denotes a text data message. The text message payload is + // interpreted as UTF-8 encoded text data. + TextMessage = 1 + + // BinaryMessage denotes a binary data message. + BinaryMessage = 2 + + // CloseMessage denotes a close control message. The optional message + // payload contains a numeric code and text. Use the FormatCloseMessage + // function to format a close message payload. + CloseMessage = 8 + + // PingMessage denotes a ping control message. The optional message payload + // is UTF-8 encoded text. + PingMessage = 9 + + // PongMessage denotes a ping control message. The optional message payload + // is UTF-8 encoded text. + PongMessage = 10 +) + +// ErrCloseSent is returned when the application writes a message to the +// connection after sending a close message. +var ErrCloseSent = errors.New("websocket: close sent") + +// ErrReadLimit is returned when reading a message that is larger than the +// read limit set for the connection. +var ErrReadLimit = errors.New("websocket: read limit exceeded") + +// netError satisfies the net Error interface. +type netError struct { + msg string + temporary bool + timeout bool +} + +func (e *netError) Error() string { return e.msg } +func (e *netError) Temporary() bool { return e.temporary } +func (e *netError) Timeout() bool { return e.timeout } + +// CloseError represents close frame. +type CloseError struct { + + // Code is defined in RFC 6455, section 11.7. + Code int + + // Text is the optional text payload. + Text string +} + +func (e *CloseError) Error() string { + s := []byte("websocket: close ") + s = strconv.AppendInt(s, int64(e.Code), 10) + switch e.Code { + case CloseNormalClosure: + s = append(s, " (normal)"...) + case CloseGoingAway: + s = append(s, " (going away)"...) + case CloseProtocolError: + s = append(s, " (protocol error)"...) + case CloseUnsupportedData: + s = append(s, " (unsupported data)"...) + case CloseNoStatusReceived: + s = append(s, " (no status)"...) + case CloseAbnormalClosure: + s = append(s, " (abnormal closure)"...) + case CloseInvalidFramePayloadData: + s = append(s, " (invalid payload data)"...) + case ClosePolicyViolation: + s = append(s, " (policy violation)"...) + case CloseMessageTooBig: + s = append(s, " (message too big)"...) + case CloseMandatoryExtension: + s = append(s, " (mandatory extension missing)"...) + case CloseInternalServerErr: + s = append(s, " (internal server error)"...) + case CloseTLSHandshake: + s = append(s, " (TLS handshake error)"...) + } + if e.Text != "" { + s = append(s, ": "...) + s = append(s, e.Text...) + } + return string(s) +} + +// IsCloseError returns boolean indicating whether the error is a *CloseError +// with one of the specified codes. +func IsCloseError(err error, codes ...int) bool { + if e, ok := err.(*CloseError); ok { + for _, code := range codes { + if e.Code == code { + return true + } + } + } + return false +} + +// IsUnexpectedCloseError returns boolean indicating whether the error is a +// *CloseError with a code not in the list of expected codes. +func IsUnexpectedCloseError(err error, expectedCodes ...int) bool { + if e, ok := err.(*CloseError); ok { + for _, code := range expectedCodes { + if e.Code == code { + return false + } + } + return true + } + return false +} + +var ( + errWriteTimeout = &netError{msg: "websocket: write timeout", timeout: true, temporary: true} + errUnexpectedEOF = &CloseError{Code: CloseAbnormalClosure, Text: io.ErrUnexpectedEOF.Error()} + errBadWriteOpCode = errors.New("websocket: bad write message type") + errWriteClosed = errors.New("websocket: write closed") + errInvalidControlFrame = errors.New("websocket: invalid control frame") +) + +func hideTempErr(err error) error { + if e, ok := err.(net.Error); ok && e.Temporary() { + err = &netError{msg: e.Error(), timeout: e.Timeout()} + } + return err +} + +func isControl(frameType int) bool { + return frameType == CloseMessage || frameType == PingMessage || frameType == PongMessage +} + +func isData(frameType int) bool { + return frameType == TextMessage || frameType == BinaryMessage +} + +var validReceivedCloseCodes = map[int]bool{ + // see http://www.iana.org/assignments/websocket/websocket.xhtml#close-code-number + + CloseNormalClosure: true, + CloseGoingAway: true, + CloseProtocolError: true, + CloseUnsupportedData: true, + CloseNoStatusReceived: false, + CloseAbnormalClosure: false, + CloseInvalidFramePayloadData: true, + ClosePolicyViolation: true, + CloseMessageTooBig: true, + CloseMandatoryExtension: true, + CloseInternalServerErr: true, + CloseServiceRestart: true, + CloseTryAgainLater: true, + CloseTLSHandshake: false, +} + +func isValidReceivedCloseCode(code int) bool { + return validReceivedCloseCodes[code] || (code >= 3000 && code <= 4999) +} + +type Conn struct { + conn net.Conn + isServer bool + subprotocol string + + // Write fields + mu chan bool // used as mutex to protect write to conn and closeSent + closeSent bool // whether close message was sent + writeErr error + writeBuf []byte // frame is constructed in this buffer. + writePos int // end of data in writeBuf. + writeFrameType int // type of the current frame. + writeDeadline time.Time + messageWriter *messageWriter // the current low-level message writer + writer io.WriteCloser // the current writer returned to the application + isWriting bool // for best-effort concurrent write detection + + enableWriteCompression bool + writeCompress bool // whether next call to flushFrame should set RSV1 + newCompressionWriter func(io.WriteCloser) (io.WriteCloser, error) + + // Read fields + readErr error + br *bufio.Reader + readRemaining int64 // bytes remaining in current frame. + readFinal bool // true the current message has more frames. + readLength int64 // Message size. + readLimit int64 // Maximum message size. + readMaskPos int + readMaskKey [4]byte + handlePong func(string) error + handlePing func(string) error + readErrCount int + messageReader *messageReader // the current low-level reader + + readDecompress bool // whether last read frame had RSV1 set + newDecompressionReader func(io.Reader) io.Reader +} + +func newConn(conn net.Conn, isServer bool, readBufferSize, writeBufferSize int) *Conn { + mu := make(chan bool, 1) + mu <- true + + if readBufferSize == 0 { + readBufferSize = defaultReadBufferSize + } + if readBufferSize < maxControlFramePayloadSize { + readBufferSize = maxControlFramePayloadSize + } + if writeBufferSize == 0 { + writeBufferSize = defaultWriteBufferSize + } + + c := &Conn{ + isServer: isServer, + br: bufio.NewReaderSize(conn, readBufferSize), + conn: conn, + mu: mu, + readFinal: true, + writeBuf: make([]byte, writeBufferSize+maxFrameHeaderSize), + writeFrameType: noFrame, + writePos: maxFrameHeaderSize, + enableWriteCompression: true, + } + c.SetPingHandler(nil) + c.SetPongHandler(nil) + return c +} + +// Subprotocol returns the negotiated protocol for the connection. +func (c *Conn) Subprotocol() string { + return c.subprotocol +} + +// Close closes the underlying network connection without sending or waiting for a close frame. +func (c *Conn) Close() error { + return c.conn.Close() +} + +// LocalAddr returns the local network address. +func (c *Conn) LocalAddr() net.Addr { + return c.conn.LocalAddr() +} + +// RemoteAddr returns the remote network address. +func (c *Conn) RemoteAddr() net.Addr { + return c.conn.RemoteAddr() +} + +// Write methods + +func (c *Conn) write(frameType int, deadline time.Time, bufs ...[]byte) error { + <-c.mu + defer func() { c.mu <- true }() + + if c.closeSent { + return ErrCloseSent + } else if frameType == CloseMessage { + c.closeSent = true + } + + c.conn.SetWriteDeadline(deadline) + for _, buf := range bufs { + if len(buf) > 0 { + n, err := c.conn.Write(buf) + if n != len(buf) { + // Close on partial write. + c.conn.Close() + } + if err != nil { + return err + } + } + } + return nil +} + +// WriteControl writes a control message with the given deadline. The allowed +// message types are CloseMessage, PingMessage and PongMessage. +func (c *Conn) WriteControl(messageType int, data []byte, deadline time.Time) error { + if !isControl(messageType) { + return errBadWriteOpCode + } + if len(data) > maxControlFramePayloadSize { + return errInvalidControlFrame + } + + b0 := byte(messageType) | finalBit + b1 := byte(len(data)) + if !c.isServer { + b1 |= maskBit + } + + buf := make([]byte, 0, maxFrameHeaderSize+maxControlFramePayloadSize) + buf = append(buf, b0, b1) + + if c.isServer { + buf = append(buf, data...) + } else { + key := newMaskKey() + buf = append(buf, key[:]...) + buf = append(buf, data...) + maskBytes(key, 0, buf[6:]) + } + + d := time.Hour * 1000 + if !deadline.IsZero() { + d = deadline.Sub(time.Now()) + if d < 0 { + return errWriteTimeout + } + } + + timer := time.NewTimer(d) + select { + case <-c.mu: + timer.Stop() + case <-timer.C: + return errWriteTimeout + } + defer func() { c.mu <- true }() + + if c.closeSent { + return ErrCloseSent + } else if messageType == CloseMessage { + c.closeSent = true + } + + c.conn.SetWriteDeadline(deadline) + n, err := c.conn.Write(buf) + if n != 0 && n != len(buf) { + c.conn.Close() + } + return hideTempErr(err) +} + +// NextWriter returns a writer for the next message to send. The writer's Close +// method flushes the complete message to the network. +// +// There can be at most one open writer on a connection. NextWriter closes the +// previous writer if the application has not already done so. +func (c *Conn) NextWriter(messageType int) (io.WriteCloser, error) { + if c.writeErr != nil { + return nil, c.writeErr + } + + // Close previous writer if not already closed by the application. It's + // probably better to return an error in this situation, but we cannot + // change this without breaking existing applications. + if c.writer != nil { + err := c.writer.Close() + if err != nil { + return nil, err + } + } + + if !isControl(messageType) && !isData(messageType) { + return nil, errBadWriteOpCode + } + + c.writeFrameType = messageType + c.messageWriter = &messageWriter{c} + + var w io.WriteCloser = c.messageWriter + if c.newCompressionWriter != nil && c.enableWriteCompression && isData(messageType) { + c.writeCompress = true + var err error + w, err = c.newCompressionWriter(w) + if err != nil { + c.writer.Close() + return nil, err + } + } + + return w, nil +} + +// flushFrame writes buffered data and extra as a frame to the network. The +// final argument indicates that this is the last frame in the message. +func (c *Conn) flushFrame(final bool, extra []byte) error { + length := c.writePos - maxFrameHeaderSize + len(extra) + + // Check for invalid control frames. + if isControl(c.writeFrameType) && + (!final || length > maxControlFramePayloadSize) { + c.messageWriter = nil + c.writer = nil + c.writeFrameType = noFrame + c.writePos = maxFrameHeaderSize + return errInvalidControlFrame + } + + b0 := byte(c.writeFrameType) + if final { + b0 |= finalBit + } + if c.writeCompress { + b0 |= rsv1Bit + } + c.writeCompress = false + + b1 := byte(0) + if !c.isServer { + b1 |= maskBit + } + + // Assume that the frame starts at beginning of c.writeBuf. + framePos := 0 + if c.isServer { + // Adjust up if mask not included in the header. + framePos = 4 + } + + switch { + case length >= 65536: + c.writeBuf[framePos] = b0 + c.writeBuf[framePos+1] = b1 | 127 + binary.BigEndian.PutUint64(c.writeBuf[framePos+2:], uint64(length)) + case length > 125: + framePos += 6 + c.writeBuf[framePos] = b0 + c.writeBuf[framePos+1] = b1 | 126 + binary.BigEndian.PutUint16(c.writeBuf[framePos+2:], uint16(length)) + default: + framePos += 8 + c.writeBuf[framePos] = b0 + c.writeBuf[framePos+1] = b1 | byte(length) + } + + if !c.isServer { + key := newMaskKey() + copy(c.writeBuf[maxFrameHeaderSize-4:], key[:]) + maskBytes(key, 0, c.writeBuf[maxFrameHeaderSize:c.writePos]) + if len(extra) > 0 { + c.writeErr = errors.New("websocket: internal error, extra used in client mode") + return c.writeErr + } + } + + // Write the buffers to the connection with best-effort detection of + // concurrent writes. See the concurrency section in the package + // documentation for more info. + + if c.isWriting { + panic("concurrent write to websocket connection") + } + c.isWriting = true + + c.writeErr = c.write(c.writeFrameType, c.writeDeadline, c.writeBuf[framePos:c.writePos], extra) + + if !c.isWriting { + panic("concurrent write to websocket connection") + } + c.isWriting = false + + // Setup for next frame. + c.writePos = maxFrameHeaderSize + c.writeFrameType = continuationFrame + if final { + c.messageWriter = nil + c.writer = nil + c.writeFrameType = noFrame + } + return c.writeErr +} + +type messageWriter struct{ c *Conn } + +func (w *messageWriter) err() error { + c := w.c + if c.messageWriter != w { + return errWriteClosed + } + if c.writeErr != nil { + return c.writeErr + } + return nil +} + +func (w *messageWriter) ncopy(max int) (int, error) { + n := len(w.c.writeBuf) - w.c.writePos + if n <= 0 { + if err := w.c.flushFrame(false, nil); err != nil { + return 0, err + } + n = len(w.c.writeBuf) - w.c.writePos + } + if n > max { + n = max + } + return n, nil +} + +func (w *messageWriter) Write(p []byte) (int, error) { + if err := w.err(); err != nil { + return 0, err + } + + if len(p) > 2*len(w.c.writeBuf) && w.c.isServer { + // Don't buffer large messages. + err := w.c.flushFrame(false, p) + if err != nil { + return 0, err + } + return len(p), nil + } + + nn := len(p) + for len(p) > 0 { + n, err := w.ncopy(len(p)) + if err != nil { + return 0, err + } + copy(w.c.writeBuf[w.c.writePos:], p[:n]) + w.c.writePos += n + p = p[n:] + } + return nn, nil +} + +func (w *messageWriter) WriteString(p string) (int, error) { + if err := w.err(); err != nil { + return 0, err + } + + nn := len(p) + for len(p) > 0 { + n, err := w.ncopy(len(p)) + if err != nil { + return 0, err + } + copy(w.c.writeBuf[w.c.writePos:], p[:n]) + w.c.writePos += n + p = p[n:] + } + return nn, nil +} + +func (w *messageWriter) ReadFrom(r io.Reader) (nn int64, err error) { + if err := w.err(); err != nil { + return 0, err + } + for { + if w.c.writePos == len(w.c.writeBuf) { + err = w.c.flushFrame(false, nil) + if err != nil { + break + } + } + var n int + n, err = r.Read(w.c.writeBuf[w.c.writePos:]) + w.c.writePos += n + nn += int64(n) + if err != nil { + if err == io.EOF { + err = nil + } + break + } + } + return nn, err +} + +func (w *messageWriter) Close() error { + if err := w.err(); err != nil { + return err + } + return w.c.flushFrame(true, nil) +} + +// WriteMessage is a helper method for getting a writer using NextWriter, +// writing the message and closing the writer. +func (c *Conn) WriteMessage(messageType int, data []byte) error { + w, err := c.NextWriter(messageType) + if err != nil { + return err + } + if _, ok := w.(*messageWriter); ok && c.isServer { + // Optimize write as a single frame. + n := copy(c.writeBuf[c.writePos:], data) + c.writePos += n + data = data[n:] + err = c.flushFrame(true, data) + return err + } + if _, err = w.Write(data); err != nil { + return err + } + return w.Close() +} + +// SetWriteDeadline sets the write deadline on the underlying network +// connection. After a write has timed out, the websocket state is corrupt and +// all future writes will return an error. A zero value for t means writes will +// not time out. +func (c *Conn) SetWriteDeadline(t time.Time) error { + c.writeDeadline = t + return nil +} + +// Read methods + +func (c *Conn) advanceFrame() (int, error) { + + // 1. Skip remainder of previous frame. + + if c.readRemaining > 0 { + if _, err := io.CopyN(ioutil.Discard, c.br, c.readRemaining); err != nil { + return noFrame, err + } + } + + // 2. Read and parse first two bytes of frame header. + + p, err := c.read(2) + if err != nil { + return noFrame, err + } + + final := p[0]&finalBit != 0 + frameType := int(p[0] & 0xf) + mask := p[1]&maskBit != 0 + c.readRemaining = int64(p[1] & 0x7f) + + c.readDecompress = false + if c.newDecompressionReader != nil && (p[0]&rsv1Bit) != 0 { + c.readDecompress = true + p[0] &^= rsv1Bit + } + + if rsv := p[0] & (rsv1Bit | rsv2Bit | rsv3Bit); rsv != 0 { + return noFrame, c.handleProtocolError("unexpected reserved bits 0x" + strconv.FormatInt(int64(rsv), 16)) + } + + switch frameType { + case CloseMessage, PingMessage, PongMessage: + if c.readRemaining > maxControlFramePayloadSize { + return noFrame, c.handleProtocolError("control frame length > 125") + } + if !final { + return noFrame, c.handleProtocolError("control frame not final") + } + case TextMessage, BinaryMessage: + if !c.readFinal { + return noFrame, c.handleProtocolError("message start before final message frame") + } + c.readFinal = final + case continuationFrame: + if c.readFinal { + return noFrame, c.handleProtocolError("continuation after final message frame") + } + c.readFinal = final + default: + return noFrame, c.handleProtocolError("unknown opcode " + strconv.Itoa(frameType)) + } + + // 3. Read and parse frame length. + + switch c.readRemaining { + case 126: + p, err := c.read(2) + if err != nil { + return noFrame, err + } + c.readRemaining = int64(binary.BigEndian.Uint16(p)) + case 127: + p, err := c.read(8) + if err != nil { + return noFrame, err + } + c.readRemaining = int64(binary.BigEndian.Uint64(p)) + } + + // 4. Handle frame masking. + + if mask != c.isServer { + return noFrame, c.handleProtocolError("incorrect mask flag") + } + + if mask { + c.readMaskPos = 0 + p, err := c.read(len(c.readMaskKey)) + if err != nil { + return noFrame, err + } + copy(c.readMaskKey[:], p) + } + + // 5. For text and binary messages, enforce read limit and return. + + if frameType == continuationFrame || frameType == TextMessage || frameType == BinaryMessage { + + c.readLength += c.readRemaining + if c.readLimit > 0 && c.readLength > c.readLimit { + c.WriteControl(CloseMessage, FormatCloseMessage(CloseMessageTooBig, ""), time.Now().Add(writeWait)) + return noFrame, ErrReadLimit + } + + return frameType, nil + } + + // 6. Read control frame payload. + + var payload []byte + if c.readRemaining > 0 { + payload, err = c.read(int(c.readRemaining)) + c.readRemaining = 0 + if err != nil { + return noFrame, err + } + if c.isServer { + maskBytes(c.readMaskKey, 0, payload) + } + } + + // 7. Process control frame payload. + + switch frameType { + case PongMessage: + if err := c.handlePong(string(payload)); err != nil { + return noFrame, err + } + case PingMessage: + if err := c.handlePing(string(payload)); err != nil { + return noFrame, err + } + case CloseMessage: + echoMessage := []byte{} + closeCode := CloseNoStatusReceived + closeText := "" + if len(payload) >= 2 { + echoMessage = payload[:2] + closeCode = int(binary.BigEndian.Uint16(payload)) + if !isValidReceivedCloseCode(closeCode) { + return noFrame, c.handleProtocolError("invalid close code") + } + closeText = string(payload[2:]) + if !utf8.ValidString(closeText) { + return noFrame, c.handleProtocolError("invalid utf8 payload in close frame") + } + } + c.WriteControl(CloseMessage, echoMessage, time.Now().Add(writeWait)) + return noFrame, &CloseError{Code: closeCode, Text: closeText} + } + + return frameType, nil +} + +func (c *Conn) handleProtocolError(message string) error { + c.WriteControl(CloseMessage, FormatCloseMessage(CloseProtocolError, message), time.Now().Add(writeWait)) + return errors.New("websocket: " + message) +} + +// NextReader returns the next data message received from the peer. The +// returned messageType is either TextMessage or BinaryMessage. +// +// There can be at most one open reader on a connection. NextReader discards +// the previous message if the application has not already consumed it. +// +// Applications must break out of the application's read loop when this method +// returns a non-nil error value. Errors returned from this method are +// permanent. Once this method returns a non-nil error, all subsequent calls to +// this method return the same error. +func (c *Conn) NextReader() (messageType int, r io.Reader, err error) { + + c.messageReader = nil + c.readLength = 0 + + for c.readErr == nil { + frameType, err := c.advanceFrame() + if err != nil { + c.readErr = hideTempErr(err) + break + } + if frameType == TextMessage || frameType == BinaryMessage { + c.messageReader = &messageReader{c} + var r io.Reader = c.messageReader + if c.readDecompress { + r = c.newDecompressionReader(r) + } + return frameType, r, nil + } + } + + // Applications that do handle the error returned from this method spin in + // tight loop on connection failure. To help application developers detect + // this error, panic on repeated reads to the failed connection. + c.readErrCount++ + if c.readErrCount >= 1000 { + panic("repeated read on failed websocket connection") + } + + return noFrame, nil, c.readErr +} + +type messageReader struct{ c *Conn } + +func (r *messageReader) Read(b []byte) (int, error) { + c := r.c + if c.messageReader != r { + return 0, io.EOF + } + + for c.readErr == nil { + + if c.readRemaining > 0 { + if int64(len(b)) > c.readRemaining { + b = b[:c.readRemaining] + } + n, err := c.br.Read(b) + c.readErr = hideTempErr(err) + if c.isServer { + c.readMaskPos = maskBytes(c.readMaskKey, c.readMaskPos, b[:n]) + } + c.readRemaining -= int64(n) + if c.readRemaining > 0 && c.readErr == io.EOF { + c.readErr = errUnexpectedEOF + } + return n, c.readErr + } + + if c.readFinal { + c.messageReader = nil + return 0, io.EOF + } + + frameType, err := c.advanceFrame() + switch { + case err != nil: + c.readErr = hideTempErr(err) + case frameType == TextMessage || frameType == BinaryMessage: + c.readErr = errors.New("websocket: internal error, unexpected text or binary in Reader") + } + } + + err := c.readErr + if err == io.EOF && c.messageReader == r { + err = errUnexpectedEOF + } + return 0, err +} + +// ReadMessage is a helper method for getting a reader using NextReader and +// reading from that reader to a buffer. +func (c *Conn) ReadMessage() (messageType int, p []byte, err error) { + var r io.Reader + messageType, r, err = c.NextReader() + if err != nil { + return messageType, nil, err + } + p, err = ioutil.ReadAll(r) + return messageType, p, err +} + +// SetReadDeadline sets the read deadline on the underlying network connection. +// After a read has timed out, the websocket connection state is corrupt and +// all future reads will return an error. A zero value for t means reads will +// not time out. +func (c *Conn) SetReadDeadline(t time.Time) error { + return c.conn.SetReadDeadline(t) +} + +// SetReadLimit sets the maximum size for a message read from the peer. If a +// message exceeds the limit, the connection sends a close frame to the peer +// and returns ErrReadLimit to the application. +func (c *Conn) SetReadLimit(limit int64) { + c.readLimit = limit +} + +// PingHandler returns the current ping handler +func (c *Conn) PingHandler() func(appData string) error { + return c.handlePing +} + +// SetPingHandler sets the handler for ping messages received from the peer. +// The appData argument to h is the PING frame application data. The default +// ping handler sends a pong to the peer. +func (c *Conn) SetPingHandler(h func(appData string) error) { + if h == nil { + h = func(message string) error { + err := c.WriteControl(PongMessage, []byte(message), time.Now().Add(writeWait)) + if err == ErrCloseSent { + return nil + } else if e, ok := err.(net.Error); ok && e.Temporary() { + return nil + } + return err + } + } + c.handlePing = h +} + +// PongHandler returns the current pong handler +func (c *Conn) PongHandler() func(appData string) error { + return c.handlePong +} + +// SetPongHandler sets the handler for pong messages received from the peer. +// The appData argument to h is the PONG frame application data. The default +// pong handler does nothing. +func (c *Conn) SetPongHandler(h func(appData string) error) { + if h == nil { + h = func(string) error { return nil } + } + c.handlePong = h +} + +// UnderlyingConn returns the internal net.Conn. This can be used to further +// modifications to connection specific flags. +func (c *Conn) UnderlyingConn() net.Conn { + return c.conn +} + +// EnableWriteCompression enables and disables write compression of +// subsequent text and binary messages. This function is a noop if +// compression was not negotiated with the peer. +func (c *Conn) EnableWriteCompression(enable bool) { + c.enableWriteCompression = enable +} + +// FormatCloseMessage formats closeCode and text as a WebSocket close message. +func FormatCloseMessage(closeCode int, text string) []byte { + buf := make([]byte, 2+len(text)) + binary.BigEndian.PutUint16(buf, uint16(closeCode)) + copy(buf[2:], text) + return buf +} diff --git a/vendor/github.com/gorilla/websocket/conn_read.go b/vendor/github.com/gorilla/websocket/conn_read.go new file mode 100644 index 0000000..1ea1505 --- /dev/null +++ b/vendor/github.com/gorilla/websocket/conn_read.go @@ -0,0 +1,18 @@ +// Copyright 2016 The Gorilla WebSocket 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 websocket + +import "io" + +func (c *Conn) read(n int) ([]byte, error) { + p, err := c.br.Peek(n) + if err == io.EOF { + err = errUnexpectedEOF + } + c.br.Discard(len(p)) + return p, err +} diff --git a/vendor/github.com/gorilla/websocket/conn_read_legacy.go b/vendor/github.com/gorilla/websocket/conn_read_legacy.go new file mode 100644 index 0000000..018541c --- /dev/null +++ b/vendor/github.com/gorilla/websocket/conn_read_legacy.go @@ -0,0 +1,21 @@ +// Copyright 2016 The Gorilla WebSocket 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 websocket + +import "io" + +func (c *Conn) read(n int) ([]byte, error) { + p, err := c.br.Peek(n) + if err == io.EOF { + err = errUnexpectedEOF + } + if len(p) > 0 { + // advance over the bytes just read + io.ReadFull(c.br, p) + } + return p, err +} diff --git a/vendor/github.com/gorilla/websocket/doc.go b/vendor/github.com/gorilla/websocket/doc.go new file mode 100644 index 0000000..610acf7 --- /dev/null +++ b/vendor/github.com/gorilla/websocket/doc.go @@ -0,0 +1,173 @@ +// Copyright 2013 The Gorilla WebSocket 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 websocket implements the WebSocket protocol defined in RFC 6455. +// +// Overview +// +// The Conn type represents a WebSocket connection. A server application uses +// the Upgrade function from an Upgrader object with a HTTP request handler +// to get a pointer to a Conn: +// +// var upgrader = websocket.Upgrader{ +// ReadBufferSize: 1024, +// WriteBufferSize: 1024, +// } +// +// func handler(w http.ResponseWriter, r *http.Request) { +// conn, err := upgrader.Upgrade(w, r, nil) +// if err != nil { +// log.Println(err) +// return +// } +// ... Use conn to send and receive messages. +// } +// +// Call the connection's WriteMessage and ReadMessage methods to send and +// receive messages as a slice of bytes. This snippet of code shows how to echo +// messages using these methods: +// +// for { +// messageType, p, err := conn.ReadMessage() +// if err != nil { +// return +// } +// if err = conn.WriteMessage(messageType, p); err != nil { +// return err +// } +// } +// +// In above snippet of code, p is a []byte and messageType is an int with value +// websocket.BinaryMessage or websocket.TextMessage. +// +// An application can also send and receive messages using the io.WriteCloser +// and io.Reader interfaces. To send a message, call the connection NextWriter +// method to get an io.WriteCloser, write the message to the writer and close +// the writer when done. To receive a message, call the connection NextReader +// method to get an io.Reader and read until io.EOF is returned. This snippet +// shows how to echo messages using the NextWriter and NextReader methods: +// +// for { +// messageType, r, err := conn.NextReader() +// if err != nil { +// return +// } +// w, err := conn.NextWriter(messageType) +// if err != nil { +// return err +// } +// if _, err := io.Copy(w, r); err != nil { +// return err +// } +// if err := w.Close(); err != nil { +// return err +// } +// } +// +// Data Messages +// +// The WebSocket protocol distinguishes between text and binary data messages. +// Text messages are interpreted as UTF-8 encoded text. The interpretation of +// binary messages is left to the application. +// +// This package uses the TextMessage and BinaryMessage integer constants to +// identify the two data message types. The ReadMessage and NextReader methods +// return the type of the received message. The messageType argument to the +// WriteMessage and NextWriter methods specifies the type of a sent message. +// +// It is the application's responsibility to ensure that text messages are +// valid UTF-8 encoded text. +// +// Control Messages +// +// The WebSocket protocol defines three types of control messages: close, ping +// and pong. Call the connection WriteControl, WriteMessage or NextWriter +// methods to send a control message to the peer. +// +// Connections handle received close messages by sending a close message to the +// peer and returning a *CloseError from the the NextReader, ReadMessage or the +// message Read method. +// +// Connections handle received ping and pong messages by invoking callback +// functions set with SetPingHandler and SetPongHandler methods. The callback +// functions are called from the NextReader, ReadMessage and the message Read +// methods. +// +// The default ping handler sends a pong to the peer. The application's reading +// goroutine can block for a short time while the handler writes the pong data +// to the connection. +// +// The application must read the connection to process ping, pong and close +// messages sent from the peer. If the application is not otherwise interested +// in messages from the peer, then the application should start a goroutine to +// read and discard messages from the peer. A simple example is: +// +// func readLoop(c *websocket.Conn) { +// for { +// if _, _, err := c.NextReader(); err != nil { +// c.Close() +// break +// } +// } +// } +// +// Concurrency +// +// Connections support one concurrent reader and one concurrent writer. +// +// Applications are responsible for ensuring that no more than one goroutine +// calls the write methods (NextWriter, SetWriteDeadline, WriteMessage, +// WriteJSON) concurrently and that no more than one goroutine calls the read +// methods (NextReader, SetReadDeadline, ReadMessage, ReadJSON, SetPongHandler, +// SetPingHandler) concurrently. +// +// The Close and WriteControl methods can be called concurrently with all other +// methods. +// +// Origin Considerations +// +// Web browsers allow Javascript applications to open a WebSocket connection to +// any host. It's up to the server to enforce an origin policy using the Origin +// request header sent by the browser. +// +// The Upgrader calls the function specified in the CheckOrigin field to check +// the origin. If the CheckOrigin function returns false, then the Upgrade +// method fails the WebSocket handshake with HTTP status 403. +// +// If the CheckOrigin field is nil, then the Upgrader uses a safe default: fail +// the handshake if the Origin request header is present and not equal to the +// Host request header. +// +// An application can allow connections from any origin by specifying a +// function that always returns true: +// +// var upgrader = websocket.Upgrader{ +// CheckOrigin: func(r *http.Request) bool { return true }, +// } +// +// The deprecated Upgrade function does not enforce an origin policy. It's the +// application's responsibility to check the Origin header before calling +// Upgrade. +// +// Compression [Experimental] +// +// Per message compression extensions (RFC 7692) are experimentally supported +// by this package in a limited capacity. Setting the EnableCompression option +// to true in Dialer or Upgrader will attempt to negotiate per message deflate +// support. If compression was successfully negotiated with the connection's +// peer, any message received in compressed form will be automatically +// decompressed. All Read methods will return uncompressed bytes. +// +// Per message compression of messages written to a connection can be enabled +// or disabled by calling the corresponding Conn method: +// +// conn.EnableWriteCompression(true) +// +// Currently this package does not support compression with "context takeover". +// This means that messages must be compressed and decompressed in isolation, +// without retaining sliding window or dictionary state across messages. For +// more details refer to RFC 7692. +// +// Use of compression is experimental and may result in decreased performance. +package websocket diff --git a/vendor/github.com/gorilla/websocket/json.go b/vendor/github.com/gorilla/websocket/json.go new file mode 100644 index 0000000..4f0e368 --- /dev/null +++ b/vendor/github.com/gorilla/websocket/json.go @@ -0,0 +1,55 @@ +// Copyright 2013 The Gorilla WebSocket 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 websocket + +import ( + "encoding/json" + "io" +) + +// WriteJSON is deprecated, use c.WriteJSON instead. +func WriteJSON(c *Conn, v interface{}) error { + return c.WriteJSON(v) +} + +// WriteJSON writes the JSON encoding of v to the connection. +// +// See the documentation for encoding/json Marshal for details about the +// conversion of Go values to JSON. +func (c *Conn) WriteJSON(v interface{}) error { + w, err := c.NextWriter(TextMessage) + if err != nil { + return err + } + err1 := json.NewEncoder(w).Encode(v) + err2 := w.Close() + if err1 != nil { + return err1 + } + return err2 +} + +// ReadJSON is deprecated, use c.ReadJSON instead. +func ReadJSON(c *Conn, v interface{}) error { + return c.ReadJSON(v) +} + +// ReadJSON reads the next JSON-encoded message from the connection and stores +// it in the value pointed to by v. +// +// See the documentation for the encoding/json Unmarshal function for details +// about the conversion of JSON to a Go value. +func (c *Conn) ReadJSON(v interface{}) error { + _, r, err := c.NextReader() + if err != nil { + return err + } + err = json.NewDecoder(r).Decode(v) + if err == io.EOF { + // One value is expected in the message. + err = io.ErrUnexpectedEOF + } + return err +} diff --git a/vendor/github.com/gorilla/websocket/mask.go b/vendor/github.com/gorilla/websocket/mask.go new file mode 100644 index 0000000..68861fc --- /dev/null +++ b/vendor/github.com/gorilla/websocket/mask.go @@ -0,0 +1,61 @@ +// Copyright 2016 The Gorilla WebSocket 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 websocket + +import ( + "math/rand" + "unsafe" +) + +const wordSize = int(unsafe.Sizeof(uintptr(0))) + +func newMaskKey() [4]byte { + n := rand.Uint32() + return [4]byte{byte(n), byte(n >> 8), byte(n >> 16), byte(n >> 24)} +} + +func maskBytes(key [4]byte, pos int, b []byte) int { + + // Mask one byte at a time for small buffers. + if len(b) < 2*wordSize { + for i := range b { + b[i] ^= key[pos&3] + pos++ + } + return pos & 3 + } + + // Mask one byte at a time to word boundary. + if n := int(uintptr(unsafe.Pointer(&b))) % wordSize; n != 0 { + n = wordSize - n + for i := range b[:n] { + b[i] ^= key[pos&3] + pos++ + } + b = b[n:] + } + + // Create aligned word size key. + var k [wordSize]byte + for i := range k { + k[i] = key[(pos+i)&3] + } + kw := *(*uintptr)(unsafe.Pointer(&k)) + + // Mask one word at a time. + n := (len(b) / wordSize) * wordSize + for i := 0; i < n; i += wordSize { + *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&b[0])) + uintptr(i))) ^= kw + } + + // Mask one byte at a time for remaining bytes. + b = b[n:] + for i := range b { + b[i] ^= key[pos&3] + pos++ + } + + return pos & 3 +} diff --git a/vendor/github.com/gorilla/websocket/server.go b/vendor/github.com/gorilla/websocket/server.go new file mode 100644 index 0000000..aaedebd --- /dev/null +++ b/vendor/github.com/gorilla/websocket/server.go @@ -0,0 +1,292 @@ +// Copyright 2013 The Gorilla WebSocket 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 websocket + +import ( + "bufio" + "errors" + "net" + "net/http" + "net/url" + "strings" + "time" +) + +// HandshakeError describes an error with the handshake from the peer. +type HandshakeError struct { + message string +} + +func (e HandshakeError) Error() string { return e.message } + +// Upgrader specifies parameters for upgrading an HTTP connection to a +// WebSocket connection. +type Upgrader struct { + // HandshakeTimeout specifies the duration for the handshake to complete. + HandshakeTimeout time.Duration + + // ReadBufferSize and WriteBufferSize specify I/O buffer sizes. If a buffer + // size is zero, then a default value of 4096 is used. The I/O buffer sizes + // do not limit the size of the messages that can be sent or received. + ReadBufferSize, WriteBufferSize int + + // Subprotocols specifies the server's supported protocols in order of + // preference. If this field is set, then the Upgrade method negotiates a + // subprotocol by selecting the first match in this list with a protocol + // requested by the client. + Subprotocols []string + + // Error specifies the function for generating HTTP error responses. If Error + // is nil, then http.Error is used to generate the HTTP response. + Error func(w http.ResponseWriter, r *http.Request, status int, reason error) + + // CheckOrigin returns true if the request Origin header is acceptable. If + // CheckOrigin is nil, the host in the Origin header must not be set or + // must match the host of the request. + CheckOrigin func(r *http.Request) bool + + // EnableCompression specify if the server should attempt to negotiate per + // message compression (RFC 7692). Setting this value to true does not + // guarantee that compression will be supported. Currently only "no context + // takeover" modes are supported. + EnableCompression bool +} + +func (u *Upgrader) returnError(w http.ResponseWriter, r *http.Request, status int, reason string) (*Conn, error) { + err := HandshakeError{reason} + if u.Error != nil { + u.Error(w, r, status, err) + } else { + w.Header().Set("Sec-Websocket-Version", "13") + http.Error(w, http.StatusText(status), status) + } + return nil, err +} + +// checkSameOrigin returns true if the origin is not set or is equal to the request host. +func checkSameOrigin(r *http.Request) bool { + origin := r.Header["Origin"] + if len(origin) == 0 { + return true + } + u, err := url.Parse(origin[0]) + if err != nil { + return false + } + return u.Host == r.Host +} + +func (u *Upgrader) selectSubprotocol(r *http.Request, responseHeader http.Header) string { + if u.Subprotocols != nil { + clientProtocols := Subprotocols(r) + for _, serverProtocol := range u.Subprotocols { + for _, clientProtocol := range clientProtocols { + if clientProtocol == serverProtocol { + return clientProtocol + } + } + } + } else if responseHeader != nil { + return responseHeader.Get("Sec-Websocket-Protocol") + } + return "" +} + +// Upgrade upgrades the HTTP server connection to the WebSocket protocol. +// +// The responseHeader is included in the response to the client's upgrade +// request. Use the responseHeader to specify cookies (Set-Cookie) and the +// application negotiated subprotocol (Sec-Websocket-Protocol). +// +// If the upgrade fails, then Upgrade replies to the client with an HTTP error +// response. +func (u *Upgrader) Upgrade(w http.ResponseWriter, r *http.Request, responseHeader http.Header) (*Conn, error) { + if r.Method != "GET" { + return u.returnError(w, r, http.StatusMethodNotAllowed, "websocket: method not GET") + } + + if _, ok := responseHeader["Sec-Websocket-Extensions"]; ok { + return u.returnError(w, r, http.StatusInternalServerError, "websocket: application specific Sec-Websocket-Extensions headers are unsupported") + } + + if !tokenListContainsValue(r.Header, "Sec-Websocket-Version", "13") { + return u.returnError(w, r, http.StatusBadRequest, "websocket: version != 13") + } + + if !tokenListContainsValue(r.Header, "Connection", "upgrade") { + return u.returnError(w, r, http.StatusBadRequest, "websocket: could not find connection header with token 'upgrade'") + } + + if !tokenListContainsValue(r.Header, "Upgrade", "websocket") { + return u.returnError(w, r, http.StatusBadRequest, "websocket: could not find upgrade header with token 'websocket'") + } + + checkOrigin := u.CheckOrigin + if checkOrigin == nil { + checkOrigin = checkSameOrigin + } + if !checkOrigin(r) { + return u.returnError(w, r, http.StatusForbidden, "websocket: origin not allowed") + } + + challengeKey := r.Header.Get("Sec-Websocket-Key") + if challengeKey == "" { + return u.returnError(w, r, http.StatusBadRequest, "websocket: key missing or blank") + } + + subprotocol := u.selectSubprotocol(r, responseHeader) + + // Negotiate PMCE + var compress bool + if u.EnableCompression { + for _, ext := range parseExtensions(r.Header) { + if ext[""] != "permessage-deflate" { + continue + } + compress = true + break + } + } + + var ( + netConn net.Conn + br *bufio.Reader + err error + ) + + h, ok := w.(http.Hijacker) + if !ok { + return u.returnError(w, r, http.StatusInternalServerError, "websocket: response does not implement http.Hijacker") + } + var rw *bufio.ReadWriter + netConn, rw, err = h.Hijack() + if err != nil { + return u.returnError(w, r, http.StatusInternalServerError, err.Error()) + } + br = rw.Reader + + if br.Buffered() > 0 { + netConn.Close() + return nil, errors.New("websocket: client sent data before handshake is complete") + } + + c := newConn(netConn, true, u.ReadBufferSize, u.WriteBufferSize) + c.subprotocol = subprotocol + + if compress { + c.newCompressionWriter = compressNoContextTakeover + c.newDecompressionReader = decompressNoContextTakeover + } + + p := c.writeBuf[:0] + p = append(p, "HTTP/1.1 101 Switching Protocols\r\nUpgrade: websocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: "...) + p = append(p, computeAcceptKey(challengeKey)...) + p = append(p, "\r\n"...) + if c.subprotocol != "" { + p = append(p, "Sec-Websocket-Protocol: "...) + p = append(p, c.subprotocol...) + p = append(p, "\r\n"...) + } + if compress { + p = append(p, "Sec-Websocket-Extensions: permessage-deflate; server_no_context_takeover; client_no_context_takeover\r\n"...) + } + for k, vs := range responseHeader { + if k == "Sec-Websocket-Protocol" { + continue + } + for _, v := range vs { + p = append(p, k...) + p = append(p, ": "...) + for i := 0; i < len(v); i++ { + b := v[i] + if b <= 31 { + // prevent response splitting. + b = ' ' + } + p = append(p, b) + } + p = append(p, "\r\n"...) + } + } + p = append(p, "\r\n"...) + + // Clear deadlines set by HTTP server. + netConn.SetDeadline(time.Time{}) + + if u.HandshakeTimeout > 0 { + netConn.SetWriteDeadline(time.Now().Add(u.HandshakeTimeout)) + } + if _, err = netConn.Write(p); err != nil { + netConn.Close() + return nil, err + } + if u.HandshakeTimeout > 0 { + netConn.SetWriteDeadline(time.Time{}) + } + + return c, nil +} + +// Upgrade upgrades the HTTP server connection to the WebSocket protocol. +// +// This function is deprecated, use websocket.Upgrader instead. +// +// The application is responsible for checking the request origin before +// calling Upgrade. An example implementation of the same origin policy is: +// +// if req.Header.Get("Origin") != "http://"+req.Host { +// http.Error(w, "Origin not allowed", 403) +// return +// } +// +// If the endpoint supports subprotocols, then the application is responsible +// for negotiating the protocol used on the connection. Use the Subprotocols() +// function to get the subprotocols requested by the client. Use the +// Sec-Websocket-Protocol response header to specify the subprotocol selected +// by the application. +// +// The responseHeader is included in the response to the client's upgrade +// request. Use the responseHeader to specify cookies (Set-Cookie) and the +// negotiated subprotocol (Sec-Websocket-Protocol). +// +// The connection buffers IO to the underlying network connection. The +// readBufSize and writeBufSize parameters specify the size of the buffers to +// use. Messages can be larger than the buffers. +// +// If the request is not a valid WebSocket handshake, then Upgrade returns an +// error of type HandshakeError. Applications should handle this error by +// replying to the client with an HTTP error response. +func Upgrade(w http.ResponseWriter, r *http.Request, responseHeader http.Header, readBufSize, writeBufSize int) (*Conn, error) { + u := Upgrader{ReadBufferSize: readBufSize, WriteBufferSize: writeBufSize} + u.Error = func(w http.ResponseWriter, r *http.Request, status int, reason error) { + // don't return errors to maintain backwards compatibility + } + u.CheckOrigin = func(r *http.Request) bool { + // allow all connections by default + return true + } + return u.Upgrade(w, r, responseHeader) +} + +// Subprotocols returns the subprotocols requested by the client in the +// Sec-Websocket-Protocol header. +func Subprotocols(r *http.Request) []string { + h := strings.TrimSpace(r.Header.Get("Sec-Websocket-Protocol")) + if h == "" { + return nil + } + protocols := strings.Split(h, ",") + for i := range protocols { + protocols[i] = strings.TrimSpace(protocols[i]) + } + return protocols +} + +// IsWebSocketUpgrade returns true if the client requested upgrade to the +// WebSocket protocol. +func IsWebSocketUpgrade(r *http.Request) bool { + return tokenListContainsValue(r.Header, "Connection", "upgrade") && + tokenListContainsValue(r.Header, "Upgrade", "websocket") +} diff --git a/vendor/github.com/gorilla/websocket/util.go b/vendor/github.com/gorilla/websocket/util.go new file mode 100644 index 0000000..9a4908d --- /dev/null +++ b/vendor/github.com/gorilla/websocket/util.go @@ -0,0 +1,214 @@ +// Copyright 2013 The Gorilla WebSocket 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 websocket + +import ( + "crypto/rand" + "crypto/sha1" + "encoding/base64" + "io" + "net/http" + "strings" +) + +var keyGUID = []byte("258EAFA5-E914-47DA-95CA-C5AB0DC85B11") + +func computeAcceptKey(challengeKey string) string { + h := sha1.New() + h.Write([]byte(challengeKey)) + h.Write(keyGUID) + return base64.StdEncoding.EncodeToString(h.Sum(nil)) +} + +func generateChallengeKey() (string, error) { + p := make([]byte, 16) + if _, err := io.ReadFull(rand.Reader, p); err != nil { + return "", err + } + return base64.StdEncoding.EncodeToString(p), nil +} + +// Octet types from RFC 2616. +var octetTypes [256]byte + +const ( + isTokenOctet = 1 << iota + isSpaceOctet +) + +func init() { + // From RFC 2616 + // + // OCTET = + // CHAR = + // CTL = + // CR = + // LF = + // SP = + // HT = + // <"> = + // CRLF = CR LF + // LWS = [CRLF] 1*( SP | HT ) + // TEXT = + // separators = "(" | ")" | "<" | ">" | "@" | "," | ";" | ":" | "\" | <"> + // | "/" | "[" | "]" | "?" | "=" | "{" | "}" | SP | HT + // token = 1* + // qdtext = > + + for c := 0; c < 256; c++ { + var t byte + isCtl := c <= 31 || c == 127 + isChar := 0 <= c && c <= 127 + isSeparator := strings.IndexRune(" \t\"(),/:;<=>?@[]\\{}", rune(c)) >= 0 + if strings.IndexRune(" \t\r\n", rune(c)) >= 0 { + t |= isSpaceOctet + } + if isChar && !isCtl && !isSeparator { + t |= isTokenOctet + } + octetTypes[c] = t + } +} + +func skipSpace(s string) (rest string) { + i := 0 + for ; i < len(s); i++ { + if octetTypes[s[i]]&isSpaceOctet == 0 { + break + } + } + return s[i:] +} + +func nextToken(s string) (token, rest string) { + i := 0 + for ; i < len(s); i++ { + if octetTypes[s[i]]&isTokenOctet == 0 { + break + } + } + return s[:i], s[i:] +} + +func nextTokenOrQuoted(s string) (value string, rest string) { + if !strings.HasPrefix(s, "\"") { + return nextToken(s) + } + s = s[1:] + for i := 0; i < len(s); i++ { + switch s[i] { + case '"': + return s[:i], s[i+1:] + case '\\': + p := make([]byte, len(s)-1) + j := copy(p, s[:i]) + escape := true + for i = i + 1; i < len(s); i++ { + b := s[i] + switch { + case escape: + escape = false + p[j] = b + j += 1 + case b == '\\': + escape = true + case b == '"': + return string(p[:j]), s[i+1:] + default: + p[j] = b + j += 1 + } + } + return "", "" + } + } + return "", "" +} + +// tokenListContainsValue returns true if the 1#token header with the given +// name contains token. +func tokenListContainsValue(header http.Header, name string, value string) bool { +headers: + for _, s := range header[name] { + for { + var t string + t, s = nextToken(skipSpace(s)) + if t == "" { + continue headers + } + s = skipSpace(s) + if s != "" && s[0] != ',' { + continue headers + } + if strings.EqualFold(t, value) { + return true + } + if s == "" { + continue headers + } + s = s[1:] + } + } + return false +} + +// parseExtensiosn parses WebSocket extensions from a header. +func parseExtensions(header http.Header) []map[string]string { + + // From RFC 6455: + // + // Sec-WebSocket-Extensions = extension-list + // extension-list = 1#extension + // extension = extension-token *( ";" extension-param ) + // extension-token = registered-token + // registered-token = token + // extension-param = token [ "=" (token | quoted-string) ] + // ;When using the quoted-string syntax variant, the value + // ;after quoted-string unescaping MUST conform to the + // ;'token' ABNF. + + var result []map[string]string +headers: + for _, s := range header["Sec-Websocket-Extensions"] { + for { + var t string + t, s = nextToken(skipSpace(s)) + if t == "" { + continue headers + } + ext := map[string]string{"": t} + for { + s = skipSpace(s) + if !strings.HasPrefix(s, ";") { + break + } + var k string + k, s = nextToken(skipSpace(s[1:])) + if k == "" { + continue headers + } + s = skipSpace(s) + var v string + if strings.HasPrefix(s, "=") { + v, s = nextTokenOrQuoted(skipSpace(s[1:])) + s = skipSpace(s) + } + if s != "" && s[0] != ',' && s[0] != ';' { + continue headers + } + ext[k] = v + } + if s != "" && s[0] != ',' { + continue headers + } + result = append(result, ext) + if s == "" { + continue headers + } + s = s[1:] + } + } + return result +} diff --git a/vendor/github.com/hashicorp/golang-lru/.gitignore b/vendor/github.com/hashicorp/golang-lru/.gitignore new file mode 100644 index 0000000..8365624 --- /dev/null +++ b/vendor/github.com/hashicorp/golang-lru/.gitignore @@ -0,0 +1,23 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test diff --git a/vendor/github.com/hashicorp/golang-lru/2q.go b/vendor/github.com/hashicorp/golang-lru/2q.go new file mode 100644 index 0000000..337d963 --- /dev/null +++ b/vendor/github.com/hashicorp/golang-lru/2q.go @@ -0,0 +1,212 @@ +package lru + +import ( + "fmt" + "sync" + + "github.com/hashicorp/golang-lru/simplelru" +) + +const ( + // Default2QRecentRatio is the ratio of the 2Q cache dedicated + // to recently added entries that have only been accessed once. + Default2QRecentRatio = 0.25 + + // Default2QGhostEntries is the default ratio of ghost + // entries kept to track entries recently evicted + Default2QGhostEntries = 0.50 +) + +// TwoQueueCache is a thread-safe fixed size 2Q cache. +// 2Q is an enhancement over the standard LRU cache +// in that it tracks both frequently and recently used +// entries separately. This avoids a burst in access to new +// entries from evicting frequently used entries. It adds some +// additional tracking overhead to the standard LRU cache, and is +// computationally about 2x the cost, and adds some metadata over +// head. The ARCCache is similar, but does not require setting any +// parameters. +type TwoQueueCache struct { + size int + recentSize int + + recent *simplelru.LRU + frequent *simplelru.LRU + recentEvict *simplelru.LRU + lock sync.RWMutex +} + +// New2Q creates a new TwoQueueCache using the default +// values for the parameters. +func New2Q(size int) (*TwoQueueCache, error) { + return New2QParams(size, Default2QRecentRatio, Default2QGhostEntries) +} + +// New2QParams creates a new TwoQueueCache using the provided +// parameter values. +func New2QParams(size int, recentRatio float64, ghostRatio float64) (*TwoQueueCache, error) { + if size <= 0 { + return nil, fmt.Errorf("invalid size") + } + if recentRatio < 0.0 || recentRatio > 1.0 { + return nil, fmt.Errorf("invalid recent ratio") + } + if ghostRatio < 0.0 || ghostRatio > 1.0 { + return nil, fmt.Errorf("invalid ghost ratio") + } + + // Determine the sub-sizes + recentSize := int(float64(size) * recentRatio) + evictSize := int(float64(size) * ghostRatio) + + // Allocate the LRUs + recent, err := simplelru.NewLRU(size, nil) + if err != nil { + return nil, err + } + frequent, err := simplelru.NewLRU(size, nil) + if err != nil { + return nil, err + } + recentEvict, err := simplelru.NewLRU(evictSize, nil) + if err != nil { + return nil, err + } + + // Initialize the cache + c := &TwoQueueCache{ + size: size, + recentSize: recentSize, + recent: recent, + frequent: frequent, + recentEvict: recentEvict, + } + return c, nil +} + +func (c *TwoQueueCache) Get(key interface{}) (interface{}, bool) { + c.lock.Lock() + defer c.lock.Unlock() + + // Check if this is a frequent value + if val, ok := c.frequent.Get(key); ok { + return val, ok + } + + // If the value is contained in recent, then we + // promote it to frequent + if val, ok := c.recent.Peek(key); ok { + c.recent.Remove(key) + c.frequent.Add(key, val) + return val, ok + } + + // No hit + return nil, false +} + +func (c *TwoQueueCache) Add(key, value interface{}) { + c.lock.Lock() + defer c.lock.Unlock() + + // Check if the value is frequently used already, + // and just update the value + if c.frequent.Contains(key) { + c.frequent.Add(key, value) + return + } + + // Check if the value is recently used, and promote + // the value into the frequent list + if c.recent.Contains(key) { + c.recent.Remove(key) + c.frequent.Add(key, value) + return + } + + // If the value was recently evicted, add it to the + // frequently used list + if c.recentEvict.Contains(key) { + c.ensureSpace(true) + c.recentEvict.Remove(key) + c.frequent.Add(key, value) + return + } + + // Add to the recently seen list + c.ensureSpace(false) + c.recent.Add(key, value) + return +} + +// ensureSpace is used to ensure we have space in the cache +func (c *TwoQueueCache) ensureSpace(recentEvict bool) { + // If we have space, nothing to do + recentLen := c.recent.Len() + freqLen := c.frequent.Len() + if recentLen+freqLen < c.size { + return + } + + // If the recent buffer is larger than + // the target, evict from there + if recentLen > 0 && (recentLen > c.recentSize || (recentLen == c.recentSize && !recentEvict)) { + k, _, _ := c.recent.RemoveOldest() + c.recentEvict.Add(k, nil) + return + } + + // Remove from the frequent list otherwise + c.frequent.RemoveOldest() +} + +func (c *TwoQueueCache) Len() int { + c.lock.RLock() + defer c.lock.RUnlock() + return c.recent.Len() + c.frequent.Len() +} + +func (c *TwoQueueCache) Keys() []interface{} { + c.lock.RLock() + defer c.lock.RUnlock() + k1 := c.frequent.Keys() + k2 := c.recent.Keys() + return append(k1, k2...) +} + +func (c *TwoQueueCache) Remove(key interface{}) { + c.lock.Lock() + defer c.lock.Unlock() + if c.frequent.Remove(key) { + return + } + if c.recent.Remove(key) { + return + } + if c.recentEvict.Remove(key) { + return + } +} + +func (c *TwoQueueCache) Purge() { + c.lock.Lock() + defer c.lock.Unlock() + c.recent.Purge() + c.frequent.Purge() + c.recentEvict.Purge() +} + +func (c *TwoQueueCache) Contains(key interface{}) bool { + c.lock.RLock() + defer c.lock.RUnlock() + return c.frequent.Contains(key) || c.recent.Contains(key) +} + +func (c *TwoQueueCache) Peek(key interface{}) (interface{}, bool) { + c.lock.RLock() + defer c.lock.RUnlock() + if val, ok := c.frequent.Peek(key); ok { + return val, ok + } + return c.recent.Peek(key) +} diff --git a/vendor/github.com/hashicorp/golang-lru/LICENSE b/vendor/github.com/hashicorp/golang-lru/LICENSE new file mode 100644 index 0000000..be2cc4d --- /dev/null +++ b/vendor/github.com/hashicorp/golang-lru/LICENSE @@ -0,0 +1,362 @@ +Mozilla Public License, version 2.0 + +1. Definitions + +1.1. "Contributor" + + means each individual or legal entity that creates, contributes to the + creation of, or owns Covered Software. + +1.2. "Contributor Version" + + means the combination of the Contributions of others (if any) used by a + Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + + means Source Code Form to which the initial Contributor has attached the + notice in Exhibit A, the Executable Form of such Source Code Form, and + Modifications of such Source Code Form, in each case including portions + thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + a. that the initial Contributor has attached the notice described in + Exhibit B to the Covered Software; or + + b. that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the terms of + a Secondary License. + +1.6. "Executable Form" + + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + + means a work that combines Covered Software with other material, in a + separate file or files, that is not Covered Software. + +1.8. "License" + + means this document. + +1.9. "Licensable" + + means having the right to grant, to the maximum extent possible, whether + at the time of the initial grant or subsequently, any and all of the + rights conveyed by this License. + +1.10. "Modifications" + + means any of the following: + + a. any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered Software; or + + b. any new file in Source Code Form that contains any Covered Software. + +1.11. "Patent Claims" of a Contributor + + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the License, + by the making, using, selling, offering for sale, having made, import, + or transfer of either its Contributions or its Contributor Version. + +1.12. "Secondary License" + + means either the GNU General Public License, Version 2.0, the GNU Lesser + General Public License, Version 2.1, the GNU Affero General Public + License, Version 3.0, or any later versions of those licenses. + +1.13. "Source Code Form" + + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that controls, is + controlled by, or is under common control with You. For purposes of this + definition, "control" means (a) the power, direct or indirect, to cause + the direction or management of such entity, whether by contract or + otherwise, or (b) ownership of more than fifty percent (50%) of the + outstanding shares or beneficial ownership of such entity. + + +2. License Grants and Conditions + +2.1. Grants + + Each Contributor hereby grants You a world-wide, royalty-free, + non-exclusive license: + + a. under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + + b. under Patent Claims of such Contributor to make, use, sell, offer for + sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + + The licenses granted in Section 2.1 with respect to any Contribution + become effective for each Contribution on the date the Contributor first + distributes such Contribution. + +2.3. Limitations on Grant Scope + + The licenses granted in this Section 2 are the only rights granted under + this License. No additional rights or licenses will be implied from the + distribution or licensing of Covered Software under this License. + Notwithstanding Section 2.1(b) above, no patent license is granted by a + Contributor: + + a. for any code that a Contributor has removed from Covered Software; or + + b. for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + + c. under Patent Claims infringed by Covered Software in the absence of + its Contributions. + + This License does not grant any rights in the trademarks, service marks, + or logos of any Contributor (except as may be necessary to comply with + the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + + No Contributor makes additional grants as a result of Your choice to + distribute the Covered Software under a subsequent version of this + License (see Section 10.2) or under the terms of a Secondary License (if + permitted under the terms of Section 3.3). + +2.5. Representation + + Each Contributor represents that the Contributor believes its + Contributions are its original creation(s) or it has sufficient rights to + grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + + This License is not intended to limit any rights You have under + applicable copyright doctrines of fair use, fair dealing, or other + equivalents. + +2.7. Conditions + + Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in + Section 2.1. + + +3. Responsibilities + +3.1. Distribution of Source Form + + All distribution of Covered Software in Source Code Form, including any + Modifications that You create or to which You contribute, must be under + the terms of this License. You must inform recipients that the Source + Code Form of the Covered Software is governed by the terms of this + License, and how they can obtain a copy of this License. You may not + attempt to alter or restrict the recipients' rights in the Source Code + Form. + +3.2. Distribution of Executable Form + + If You distribute Covered Software in Executable Form then: + + a. such Covered Software must also be made available in Source Code Form, + as described in Section 3.1, and You must inform recipients of the + Executable Form how they can obtain a copy of such Source Code Form by + reasonable means in a timely manner, at a charge no more than the cost + of distribution to the recipient; and + + b. You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter the + recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + + You may create and distribute a Larger Work under terms of Your choice, + provided that You also comply with the requirements of this License for + the Covered Software. If the Larger Work is a combination of Covered + Software with a work governed by one or more Secondary Licenses, and the + Covered Software is not Incompatible With Secondary Licenses, this + License permits You to additionally distribute such Covered Software + under the terms of such Secondary License(s), so that the recipient of + the Larger Work may, at their option, further distribute the Covered + Software under the terms of either this License or such Secondary + License(s). + +3.4. Notices + + You may not remove or alter the substance of any license notices + (including copyright notices, patent notices, disclaimers of warranty, or + limitations of liability) contained within the Source Code Form of the + Covered Software, except that You may alter any license notices to the + extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + + You may choose to offer, and to charge a fee for, warranty, support, + indemnity or liability obligations to one or more recipients of Covered + Software. However, You may do so only on Your own behalf, and not on + behalf of any Contributor. You must make it absolutely clear that any + such warranty, support, indemnity, or liability obligation is offered by + You alone, and You hereby agree to indemnify every Contributor for any + liability incurred by such Contributor as a result of warranty, support, + indemnity or liability terms You offer. You may include additional + disclaimers of warranty and limitations of liability specific to any + jurisdiction. + +4. Inability to Comply Due to Statute or Regulation + + If it is impossible for You to comply with any of the terms of this License + with respect to some or all of the Covered Software due to statute, + judicial order, or regulation then You must: (a) comply with the terms of + this License to the maximum extent possible; and (b) describe the + limitations and the code they affect. Such description must be placed in a + text file included with all distributions of the Covered Software under + this License. Except to the extent prohibited by statute or regulation, + such description must be sufficiently detailed for a recipient of ordinary + skill to be able to understand it. + +5. Termination + +5.1. The rights granted under this License will terminate automatically if You + fail to comply with any of its terms. However, if You become compliant, + then the rights granted under this License from a particular Contributor + are reinstated (a) provisionally, unless and until such Contributor + explicitly and finally terminates Your grants, and (b) on an ongoing + basis, if such Contributor fails to notify You of the non-compliance by + some reasonable means prior to 60 days after You have come back into + compliance. Moreover, Your grants from a particular Contributor are + reinstated on an ongoing basis if such Contributor notifies You of the + non-compliance by some reasonable means, this is the first time You have + received notice of non-compliance with this License from such + Contributor, and You become compliant prior to 30 days after Your receipt + of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent + infringement claim (excluding declaratory judgment actions, + counter-claims, and cross-claims) alleging that a Contributor Version + directly or indirectly infringes any patent, then the rights granted to + You by any and all Contributors for the Covered Software under Section + 2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user + license agreements (excluding distributors and resellers) which have been + validly granted by You or Your distributors under this License prior to + termination shall survive termination. + +6. Disclaimer of Warranty + + Covered Software is provided under this License on an "as is" basis, + without warranty of any kind, either expressed, implied, or statutory, + including, without limitation, warranties that the Covered Software is free + of defects, merchantable, fit for a particular purpose or non-infringing. + The entire risk as to the quality and performance of the Covered Software + is with You. Should any Covered Software prove defective in any respect, + You (not any Contributor) assume the cost of any necessary servicing, + repair, or correction. This disclaimer of warranty constitutes an essential + part of this License. No use of any Covered Software is authorized under + this License except under this disclaimer. + +7. Limitation of Liability + + Under no circumstances and under no legal theory, whether tort (including + negligence), contract, or otherwise, shall any Contributor, or anyone who + distributes Covered Software as permitted above, be liable to You for any + direct, indirect, special, incidental, or consequential damages of any + character including, without limitation, damages for lost profits, loss of + goodwill, work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses, even if such party shall have been + informed of the possibility of such damages. This limitation of liability + shall not apply to liability for death or personal injury resulting from + such party's negligence to the extent applicable law prohibits such + limitation. Some jurisdictions do not allow the exclusion or limitation of + incidental or consequential damages, so this exclusion and limitation may + not apply to You. + +8. Litigation + + Any litigation relating to this License may be brought only in the courts + of a jurisdiction where the defendant maintains its principal place of + business and such litigation shall be governed by laws of that + jurisdiction, without reference to its conflict-of-law provisions. Nothing + in this Section shall prevent a party's ability to bring cross-claims or + counter-claims. + +9. Miscellaneous + + This License represents the complete agreement concerning the subject + matter hereof. If any provision of this License is held to be + unenforceable, such provision shall be reformed only to the extent + necessary to make it enforceable. Any law or regulation which provides that + the language of a contract shall be construed against the drafter shall not + be used to construe this License against a Contributor. + + +10. Versions of the License + +10.1. New Versions + + Mozilla Foundation is the license steward. Except as provided in Section + 10.3, no one other than the license steward has the right to modify or + publish new versions of this License. Each version will be given a + distinguishing version number. + +10.2. Effect of New Versions + + You may distribute the Covered Software under the terms of the version + of the License under which You originally received the Covered Software, + or under the terms of any subsequent version published by the license + steward. + +10.3. Modified Versions + + If you create software not governed by this License, and you want to + create a new license for such software, you may create and use a + modified version of this License if you rename the license and remove + any references to the name of the license steward (except to note that + such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary + Licenses If You choose to distribute Source Code Form that is + Incompatible With Secondary Licenses under the terms of this version of + the License, the notice described in Exhibit B of this License must be + attached. + +Exhibit A - Source Code Form License Notice + + This Source Code Form is subject to the + terms of the Mozilla Public License, v. + 2.0. If a copy of the MPL was not + distributed with this file, You can + obtain one at + http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular file, +then You may include the notice in a location (such as a LICENSE file in a +relevant directory) where a recipient would be likely to look for such a +notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice + + This Source Code Form is "Incompatible + With Secondary Licenses", as defined by + the Mozilla Public License, v. 2.0. diff --git a/vendor/github.com/hashicorp/golang-lru/README.md b/vendor/github.com/hashicorp/golang-lru/README.md new file mode 100644 index 0000000..33e58cf --- /dev/null +++ b/vendor/github.com/hashicorp/golang-lru/README.md @@ -0,0 +1,25 @@ +golang-lru +========== + +This provides the `lru` package which implements a fixed-size +thread safe LRU cache. It is based on the cache in Groupcache. + +Documentation +============= + +Full docs are available on [Godoc](http://godoc.org/github.com/hashicorp/golang-lru) + +Example +======= + +Using the LRU is very simple: + +```go +l, _ := New(128) +for i := 0; i < 256; i++ { + l.Add(i, nil) +} +if l.Len() != 128 { + panic(fmt.Sprintf("bad len: %v", l.Len())) +} +``` diff --git a/vendor/github.com/hashicorp/golang-lru/arc.go b/vendor/github.com/hashicorp/golang-lru/arc.go new file mode 100644 index 0000000..a2a2528 --- /dev/null +++ b/vendor/github.com/hashicorp/golang-lru/arc.go @@ -0,0 +1,257 @@ +package lru + +import ( + "sync" + + "github.com/hashicorp/golang-lru/simplelru" +) + +// ARCCache is a thread-safe fixed size Adaptive Replacement Cache (ARC). +// ARC is an enhancement over the standard LRU cache in that tracks both +// frequency and recency of use. This avoids a burst in access to new +// entries from evicting the frequently used older entries. It adds some +// additional tracking overhead to a standard LRU cache, computationally +// it is roughly 2x the cost, and the extra memory overhead is linear +// with the size of the cache. ARC has been patented by IBM, but is +// similar to the TwoQueueCache (2Q) which requires setting parameters. +type ARCCache struct { + size int // Size is the total capacity of the cache + p int // P is the dynamic preference towards T1 or T2 + + t1 *simplelru.LRU // T1 is the LRU for recently accessed items + b1 *simplelru.LRU // B1 is the LRU for evictions from t1 + + t2 *simplelru.LRU // T2 is the LRU for frequently accessed items + b2 *simplelru.LRU // B2 is the LRU for evictions from t2 + + lock sync.RWMutex +} + +// NewARC creates an ARC of the given size +func NewARC(size int) (*ARCCache, error) { + // Create the sub LRUs + b1, err := simplelru.NewLRU(size, nil) + if err != nil { + return nil, err + } + b2, err := simplelru.NewLRU(size, nil) + if err != nil { + return nil, err + } + t1, err := simplelru.NewLRU(size, nil) + if err != nil { + return nil, err + } + t2, err := simplelru.NewLRU(size, nil) + if err != nil { + return nil, err + } + + // Initialize the ARC + c := &ARCCache{ + size: size, + p: 0, + t1: t1, + b1: b1, + t2: t2, + b2: b2, + } + return c, nil +} + +// Get looks up a key's value from the cache. +func (c *ARCCache) Get(key interface{}) (interface{}, bool) { + c.lock.Lock() + defer c.lock.Unlock() + + // Ff the value is contained in T1 (recent), then + // promote it to T2 (frequent) + if val, ok := c.t1.Peek(key); ok { + c.t1.Remove(key) + c.t2.Add(key, val) + return val, ok + } + + // Check if the value is contained in T2 (frequent) + if val, ok := c.t2.Get(key); ok { + return val, ok + } + + // No hit + return nil, false +} + +// Add adds a value to the cache. +func (c *ARCCache) Add(key, value interface{}) { + c.lock.Lock() + defer c.lock.Unlock() + + // Check if the value is contained in T1 (recent), and potentially + // promote it to frequent T2 + if c.t1.Contains(key) { + c.t1.Remove(key) + c.t2.Add(key, value) + return + } + + // Check if the value is already in T2 (frequent) and update it + if c.t2.Contains(key) { + c.t2.Add(key, value) + return + } + + // Check if this value was recently evicted as part of the + // recently used list + if c.b1.Contains(key) { + // T1 set is too small, increase P appropriately + delta := 1 + b1Len := c.b1.Len() + b2Len := c.b2.Len() + if b2Len > b1Len { + delta = b2Len / b1Len + } + if c.p+delta >= c.size { + c.p = c.size + } else { + c.p += delta + } + + // Potentially need to make room in the cache + if c.t1.Len()+c.t2.Len() >= c.size { + c.replace(false) + } + + // Remove from B1 + c.b1.Remove(key) + + // Add the key to the frequently used list + c.t2.Add(key, value) + return + } + + // Check if this value was recently evicted as part of the + // frequently used list + if c.b2.Contains(key) { + // T2 set is too small, decrease P appropriately + delta := 1 + b1Len := c.b1.Len() + b2Len := c.b2.Len() + if b1Len > b2Len { + delta = b1Len / b2Len + } + if delta >= c.p { + c.p = 0 + } else { + c.p -= delta + } + + // Potentially need to make room in the cache + if c.t1.Len()+c.t2.Len() >= c.size { + c.replace(true) + } + + // Remove from B2 + c.b2.Remove(key) + + // Add the key to the frequntly used list + c.t2.Add(key, value) + return + } + + // Potentially need to make room in the cache + if c.t1.Len()+c.t2.Len() >= c.size { + c.replace(false) + } + + // Keep the size of the ghost buffers trim + if c.b1.Len() > c.size-c.p { + c.b1.RemoveOldest() + } + if c.b2.Len() > c.p { + c.b2.RemoveOldest() + } + + // Add to the recently seen list + c.t1.Add(key, value) + return +} + +// replace is used to adaptively evict from either T1 or T2 +// based on the current learned value of P +func (c *ARCCache) replace(b2ContainsKey bool) { + t1Len := c.t1.Len() + if t1Len > 0 && (t1Len > c.p || (t1Len == c.p && b2ContainsKey)) { + k, _, ok := c.t1.RemoveOldest() + if ok { + c.b1.Add(k, nil) + } + } else { + k, _, ok := c.t2.RemoveOldest() + if ok { + c.b2.Add(k, nil) + } + } +} + +// Len returns the number of cached entries +func (c *ARCCache) Len() int { + c.lock.RLock() + defer c.lock.RUnlock() + return c.t1.Len() + c.t2.Len() +} + +// Keys returns all the cached keys +func (c *ARCCache) Keys() []interface{} { + c.lock.RLock() + defer c.lock.RUnlock() + k1 := c.t1.Keys() + k2 := c.t2.Keys() + return append(k1, k2...) +} + +// Remove is used to purge a key from the cache +func (c *ARCCache) Remove(key interface{}) { + c.lock.Lock() + defer c.lock.Unlock() + if c.t1.Remove(key) { + return + } + if c.t2.Remove(key) { + return + } + if c.b1.Remove(key) { + return + } + if c.b2.Remove(key) { + return + } +} + +// Purge is used to clear the cache +func (c *ARCCache) Purge() { + c.lock.Lock() + defer c.lock.Unlock() + c.t1.Purge() + c.t2.Purge() + c.b1.Purge() + c.b2.Purge() +} + +// Contains is used to check if the cache contains a key +// without updating recency or frequency. +func (c *ARCCache) Contains(key interface{}) bool { + c.lock.RLock() + defer c.lock.RUnlock() + return c.t1.Contains(key) || c.t2.Contains(key) +} + +// Peek is used to inspect the cache value of a key +// without updating recency or frequency. +func (c *ARCCache) Peek(key interface{}) (interface{}, bool) { + c.lock.RLock() + defer c.lock.RUnlock() + if val, ok := c.t1.Peek(key); ok { + return val, ok + } + return c.t2.Peek(key) +} diff --git a/vendor/github.com/hashicorp/golang-lru/lru.go b/vendor/github.com/hashicorp/golang-lru/lru.go new file mode 100644 index 0000000..a6285f9 --- /dev/null +++ b/vendor/github.com/hashicorp/golang-lru/lru.go @@ -0,0 +1,114 @@ +// This package provides a simple LRU cache. It is based on the +// LRU implementation in groupcache: +// https://github.com/golang/groupcache/tree/master/lru +package lru + +import ( + "sync" + + "github.com/hashicorp/golang-lru/simplelru" +) + +// Cache is a thread-safe fixed size LRU cache. +type Cache struct { + lru *simplelru.LRU + lock sync.RWMutex +} + +// New creates an LRU of the given size +func New(size int) (*Cache, error) { + return NewWithEvict(size, nil) +} + +// NewWithEvict constructs a fixed size cache with the given eviction +// callback. +func NewWithEvict(size int, onEvicted func(key interface{}, value interface{})) (*Cache, error) { + lru, err := simplelru.NewLRU(size, simplelru.EvictCallback(onEvicted)) + if err != nil { + return nil, err + } + c := &Cache{ + lru: lru, + } + return c, nil +} + +// Purge is used to completely clear the cache +func (c *Cache) Purge() { + c.lock.Lock() + c.lru.Purge() + c.lock.Unlock() +} + +// Add adds a value to the cache. Returns true if an eviction occurred. +func (c *Cache) Add(key, value interface{}) bool { + c.lock.Lock() + defer c.lock.Unlock() + return c.lru.Add(key, value) +} + +// Get looks up a key's value from the cache. +func (c *Cache) Get(key interface{}) (interface{}, bool) { + c.lock.Lock() + defer c.lock.Unlock() + return c.lru.Get(key) +} + +// Check if a key is in the cache, without updating the recent-ness +// or deleting it for being stale. +func (c *Cache) Contains(key interface{}) bool { + c.lock.RLock() + defer c.lock.RUnlock() + return c.lru.Contains(key) +} + +// Returns the key value (or undefined if not found) without updating +// the "recently used"-ness of the key. +func (c *Cache) Peek(key interface{}) (interface{}, bool) { + c.lock.RLock() + defer c.lock.RUnlock() + return c.lru.Peek(key) +} + +// ContainsOrAdd checks if a key is in the cache without updating the +// recent-ness or deleting it for being stale, and if not, adds the value. +// Returns whether found and whether an eviction occurred. +func (c *Cache) ContainsOrAdd(key, value interface{}) (ok, evict bool) { + c.lock.Lock() + defer c.lock.Unlock() + + if c.lru.Contains(key) { + return true, false + } else { + evict := c.lru.Add(key, value) + return false, evict + } +} + +// Remove removes the provided key from the cache. +func (c *Cache) Remove(key interface{}) { + c.lock.Lock() + c.lru.Remove(key) + c.lock.Unlock() +} + +// RemoveOldest removes the oldest item from the cache. +func (c *Cache) RemoveOldest() { + c.lock.Lock() + c.lru.RemoveOldest() + c.lock.Unlock() +} + +// Keys returns a slice of the keys in the cache, from oldest to newest. +func (c *Cache) Keys() []interface{} { + c.lock.RLock() + defer c.lock.RUnlock() + return c.lru.Keys() +} + +// Len returns the number of items in the cache. +func (c *Cache) Len() int { + c.lock.RLock() + defer c.lock.RUnlock() + return c.lru.Len() +} diff --git a/vendor/github.com/hashicorp/golang-lru/simplelru/lru.go b/vendor/github.com/hashicorp/golang-lru/simplelru/lru.go new file mode 100644 index 0000000..cb416b3 --- /dev/null +++ b/vendor/github.com/hashicorp/golang-lru/simplelru/lru.go @@ -0,0 +1,160 @@ +package simplelru + +import ( + "container/list" + "errors" +) + +// EvictCallback is used to get a callback when a cache entry is evicted +type EvictCallback func(key interface{}, value interface{}) + +// LRU implements a non-thread safe fixed size LRU cache +type LRU struct { + size int + evictList *list.List + items map[interface{}]*list.Element + onEvict EvictCallback +} + +// entry is used to hold a value in the evictList +type entry struct { + key interface{} + value interface{} +} + +// NewLRU constructs an LRU of the given size +func NewLRU(size int, onEvict EvictCallback) (*LRU, error) { + if size <= 0 { + return nil, errors.New("Must provide a positive size") + } + c := &LRU{ + size: size, + evictList: list.New(), + items: make(map[interface{}]*list.Element), + onEvict: onEvict, + } + return c, nil +} + +// Purge is used to completely clear the cache +func (c *LRU) Purge() { + for k, v := range c.items { + if c.onEvict != nil { + c.onEvict(k, v.Value.(*entry).value) + } + delete(c.items, k) + } + c.evictList.Init() +} + +// Add adds a value to the cache. Returns true if an eviction occurred. +func (c *LRU) Add(key, value interface{}) bool { + // Check for existing item + if ent, ok := c.items[key]; ok { + c.evictList.MoveToFront(ent) + ent.Value.(*entry).value = value + return false + } + + // Add new item + ent := &entry{key, value} + entry := c.evictList.PushFront(ent) + c.items[key] = entry + + evict := c.evictList.Len() > c.size + // Verify size not exceeded + if evict { + c.removeOldest() + } + return evict +} + +// Get looks up a key's value from the cache. +func (c *LRU) Get(key interface{}) (value interface{}, ok bool) { + if ent, ok := c.items[key]; ok { + c.evictList.MoveToFront(ent) + return ent.Value.(*entry).value, true + } + return +} + +// Check if a key is in the cache, without updating the recent-ness +// or deleting it for being stale. +func (c *LRU) Contains(key interface{}) (ok bool) { + _, ok = c.items[key] + return ok +} + +// Returns the key value (or undefined if not found) without updating +// the "recently used"-ness of the key. +func (c *LRU) Peek(key interface{}) (value interface{}, ok bool) { + if ent, ok := c.items[key]; ok { + return ent.Value.(*entry).value, true + } + return nil, ok +} + +// Remove removes the provided key from the cache, returning if the +// key was contained. +func (c *LRU) Remove(key interface{}) bool { + if ent, ok := c.items[key]; ok { + c.removeElement(ent) + return true + } + return false +} + +// RemoveOldest removes the oldest item from the cache. +func (c *LRU) RemoveOldest() (interface{}, interface{}, bool) { + ent := c.evictList.Back() + if ent != nil { + c.removeElement(ent) + kv := ent.Value.(*entry) + return kv.key, kv.value, true + } + return nil, nil, false +} + +// GetOldest returns the oldest entry +func (c *LRU) GetOldest() (interface{}, interface{}, bool) { + ent := c.evictList.Back() + if ent != nil { + kv := ent.Value.(*entry) + return kv.key, kv.value, true + } + return nil, nil, false +} + +// Keys returns a slice of the keys in the cache, from oldest to newest. +func (c *LRU) Keys() []interface{} { + keys := make([]interface{}, len(c.items)) + i := 0 + for ent := c.evictList.Back(); ent != nil; ent = ent.Prev() { + keys[i] = ent.Value.(*entry).key + i++ + } + return keys +} + +// Len returns the number of items in the cache. +func (c *LRU) Len() int { + return c.evictList.Len() +} + +// removeOldest removes the oldest item from the cache. +func (c *LRU) removeOldest() { + ent := c.evictList.Back() + if ent != nil { + c.removeElement(ent) + } +} + +// removeElement is used to remove a given list element from the cache +func (c *LRU) removeElement(e *list.Element) { + c.evictList.Remove(e) + kv := e.Value.(*entry) + delete(c.items, kv.key) + if c.onEvict != nil { + c.onEvict(kv.key, kv.value) + } +} diff --git a/vendor/github.com/klauspost/compress/LICENSE b/vendor/github.com/klauspost/compress/LICENSE new file mode 100644 index 0000000..7448756 --- /dev/null +++ b/vendor/github.com/klauspost/compress/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2012 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/klauspost/compress/snappy/.gitignore b/vendor/github.com/klauspost/compress/snappy/.gitignore new file mode 100644 index 0000000..042091d --- /dev/null +++ b/vendor/github.com/klauspost/compress/snappy/.gitignore @@ -0,0 +1,16 @@ +cmd/snappytool/snappytool +testdata/bench + +# These explicitly listed benchmark data files are for an obsolete version of +# snappy_test.go. +testdata/alice29.txt +testdata/asyoulik.txt +testdata/fireworks.jpeg +testdata/geo.protodata +testdata/html +testdata/html_x_4 +testdata/kppkn.gtb +testdata/lcet10.txt +testdata/paper-100k.pdf +testdata/plrabn12.txt +testdata/urls.10K diff --git a/vendor/github.com/klauspost/compress/snappy/AUTHORS b/vendor/github.com/klauspost/compress/snappy/AUTHORS new file mode 100644 index 0000000..fd1c6f6 --- /dev/null +++ b/vendor/github.com/klauspost/compress/snappy/AUTHORS @@ -0,0 +1,15 @@ +# This is the official list of Snappy-Go authors for copyright purposes. +# This file is distinct from the CONTRIBUTORS files. +# See the latter for an explanation. + +# Names should be added to this file as +# Name or Organization +# The email address is not required for organizations. + +# Please keep the list sorted. + +Damian Gryski +Google Inc. +Jan Mercl <0xjnml@gmail.com> +Rodolfo Carvalho +Sebastien Binet diff --git a/vendor/github.com/klauspost/compress/snappy/CONTRIBUTORS b/vendor/github.com/klauspost/compress/snappy/CONTRIBUTORS new file mode 100644 index 0000000..a29b133 --- /dev/null +++ b/vendor/github.com/klauspost/compress/snappy/CONTRIBUTORS @@ -0,0 +1,37 @@ +# This is the official list of people who can contribute +# (and typically have contributed) code to the Snappy-Go repository. +# The AUTHORS file lists the copyright holders; this file +# lists people. For example, Google employees are listed here +# but not in AUTHORS, because Google holds the copyright. +# +# The submission process automatically checks to make sure +# that people submitting code are listed in this file (by email address). +# +# Names should be added to this file only after verifying that +# the individual or the individual's organization has agreed to +# the appropriate Contributor License Agreement, found here: +# +# http://code.google.com/legal/individual-cla-v1.0.html +# http://code.google.com/legal/corporate-cla-v1.0.html +# +# The agreement for individuals can be filled out on the web. +# +# When adding J Random Contributor's name to this file, +# either J's name or J's organization's name should be +# added to the AUTHORS file, depending on whether the +# individual or corporate CLA was used. + +# Names should be added to this file like so: +# Name + +# Please keep the list sorted. + +Damian Gryski +Jan Mercl <0xjnml@gmail.com> +Kai Backman +Marc-Antoine Ruel +Nigel Tao +Rob Pike +Rodolfo Carvalho +Russ Cox +Sebastien Binet diff --git a/vendor/github.com/klauspost/compress/snappy/LICENSE b/vendor/github.com/klauspost/compress/snappy/LICENSE new file mode 100644 index 0000000..7e69e1a --- /dev/null +++ b/vendor/github.com/klauspost/compress/snappy/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2011 The Snappy-Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/klauspost/compress/snappy/README b/vendor/github.com/klauspost/compress/snappy/README new file mode 100644 index 0000000..9138fe8 --- /dev/null +++ b/vendor/github.com/klauspost/compress/snappy/README @@ -0,0 +1,107 @@ +The Snappy compression format in the Go programming language. + +To download and install from source: +$ go get github.com/golang/snappy + +Unless otherwise noted, the Snappy-Go source files are distributed +under the BSD-style license found in the LICENSE file. + + + +Benchmarks. + +The golang/snappy benchmarks include compressing (Z) and decompressing (U) ten +or so files, the same set used by the C++ Snappy code (github.com/google/snappy +and note the "google", not "golang"). On an "Intel(R) Core(TM) i7-3770 CPU @ +3.40GHz", Go's GOARCH=amd64 numbers as of 2016-05-29: + +"go test -test.bench=." + +_UFlat0-8 2.19GB/s ± 0% html +_UFlat1-8 1.41GB/s ± 0% urls +_UFlat2-8 23.5GB/s ± 2% jpg +_UFlat3-8 1.91GB/s ± 0% jpg_200 +_UFlat4-8 14.0GB/s ± 1% pdf +_UFlat5-8 1.97GB/s ± 0% html4 +_UFlat6-8 814MB/s ± 0% txt1 +_UFlat7-8 785MB/s ± 0% txt2 +_UFlat8-8 857MB/s ± 0% txt3 +_UFlat9-8 719MB/s ± 1% txt4 +_UFlat10-8 2.84GB/s ± 0% pb +_UFlat11-8 1.05GB/s ± 0% gaviota + +_ZFlat0-8 1.04GB/s ± 0% html +_ZFlat1-8 534MB/s ± 0% urls +_ZFlat2-8 15.7GB/s ± 1% jpg +_ZFlat3-8 740MB/s ± 3% jpg_200 +_ZFlat4-8 9.20GB/s ± 1% pdf +_ZFlat5-8 991MB/s ± 0% html4 +_ZFlat6-8 379MB/s ± 0% txt1 +_ZFlat7-8 352MB/s ± 0% txt2 +_ZFlat8-8 396MB/s ± 1% txt3 +_ZFlat9-8 327MB/s ± 1% txt4 +_ZFlat10-8 1.33GB/s ± 1% pb +_ZFlat11-8 605MB/s ± 1% gaviota + + + +"go test -test.bench=. -tags=noasm" + +_UFlat0-8 621MB/s ± 2% html +_UFlat1-8 494MB/s ± 1% urls +_UFlat2-8 23.2GB/s ± 1% jpg +_UFlat3-8 1.12GB/s ± 1% jpg_200 +_UFlat4-8 4.35GB/s ± 1% pdf +_UFlat5-8 609MB/s ± 0% html4 +_UFlat6-8 296MB/s ± 0% txt1 +_UFlat7-8 288MB/s ± 0% txt2 +_UFlat8-8 309MB/s ± 1% txt3 +_UFlat9-8 280MB/s ± 1% txt4 +_UFlat10-8 753MB/s ± 0% pb +_UFlat11-8 400MB/s ± 0% gaviota + +_ZFlat0-8 409MB/s ± 1% html +_ZFlat1-8 250MB/s ± 1% urls +_ZFlat2-8 12.3GB/s ± 1% jpg +_ZFlat3-8 132MB/s ± 0% jpg_200 +_ZFlat4-8 2.92GB/s ± 0% pdf +_ZFlat5-8 405MB/s ± 1% html4 +_ZFlat6-8 179MB/s ± 1% txt1 +_ZFlat7-8 170MB/s ± 1% txt2 +_ZFlat8-8 189MB/s ± 1% txt3 +_ZFlat9-8 164MB/s ± 1% txt4 +_ZFlat10-8 479MB/s ± 1% pb +_ZFlat11-8 270MB/s ± 1% gaviota + + + +For comparison (Go's encoded output is byte-for-byte identical to C++'s), here +are the numbers from C++ Snappy's + +make CXXFLAGS="-O2 -DNDEBUG -g" clean snappy_unittest.log && cat snappy_unittest.log + +BM_UFlat/0 2.4GB/s html +BM_UFlat/1 1.4GB/s urls +BM_UFlat/2 21.8GB/s jpg +BM_UFlat/3 1.5GB/s jpg_200 +BM_UFlat/4 13.3GB/s pdf +BM_UFlat/5 2.1GB/s html4 +BM_UFlat/6 1.0GB/s txt1 +BM_UFlat/7 959.4MB/s txt2 +BM_UFlat/8 1.0GB/s txt3 +BM_UFlat/9 864.5MB/s txt4 +BM_UFlat/10 2.9GB/s pb +BM_UFlat/11 1.2GB/s gaviota + +BM_ZFlat/0 944.3MB/s html (22.31 %) +BM_ZFlat/1 501.6MB/s urls (47.78 %) +BM_ZFlat/2 14.3GB/s jpg (99.95 %) +BM_ZFlat/3 538.3MB/s jpg_200 (73.00 %) +BM_ZFlat/4 8.3GB/s pdf (83.30 %) +BM_ZFlat/5 903.5MB/s html4 (22.52 %) +BM_ZFlat/6 336.0MB/s txt1 (57.88 %) +BM_ZFlat/7 312.3MB/s txt2 (61.91 %) +BM_ZFlat/8 353.1MB/s txt3 (54.99 %) +BM_ZFlat/9 289.9MB/s txt4 (66.26 %) +BM_ZFlat/10 1.2GB/s pb (19.68 %) +BM_ZFlat/11 527.4MB/s gaviota (37.72 %) diff --git a/vendor/github.com/klauspost/compress/snappy/decode.go b/vendor/github.com/klauspost/compress/snappy/decode.go new file mode 100644 index 0000000..72efb03 --- /dev/null +++ b/vendor/github.com/klauspost/compress/snappy/decode.go @@ -0,0 +1,237 @@ +// Copyright 2011 The Snappy-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 snappy + +import ( + "encoding/binary" + "errors" + "io" +) + +var ( + // ErrCorrupt reports that the input is invalid. + ErrCorrupt = errors.New("snappy: corrupt input") + // ErrTooLarge reports that the uncompressed length is too large. + ErrTooLarge = errors.New("snappy: decoded block is too large") + // ErrUnsupported reports that the input isn't supported. + ErrUnsupported = errors.New("snappy: unsupported input") + + errUnsupportedLiteralLength = errors.New("snappy: unsupported literal length") +) + +// DecodedLen returns the length of the decoded block. +func DecodedLen(src []byte) (int, error) { + v, _, err := decodedLen(src) + return v, err +} + +// decodedLen returns the length of the decoded block and the number of bytes +// that the length header occupied. +func decodedLen(src []byte) (blockLen, headerLen int, err error) { + v, n := binary.Uvarint(src) + if n <= 0 || v > 0xffffffff { + return 0, 0, ErrCorrupt + } + + const wordSize = 32 << (^uint(0) >> 32 & 1) + if wordSize == 32 && v > 0x7fffffff { + return 0, 0, ErrTooLarge + } + return int(v), n, nil +} + +const ( + decodeErrCodeCorrupt = 1 + decodeErrCodeUnsupportedLiteralLength = 2 +) + +// Decode returns the decoded form of src. The returned slice may be a sub- +// slice of dst if dst was large enough to hold the entire decoded block. +// Otherwise, a newly allocated slice will be returned. +// +// The dst and src must not overlap. It is valid to pass a nil dst. +func Decode(dst, src []byte) ([]byte, error) { + dLen, s, err := decodedLen(src) + if err != nil { + return nil, err + } + if dLen <= len(dst) { + dst = dst[:dLen] + } else { + dst = make([]byte, dLen) + } + switch decode(dst, src[s:]) { + case 0: + return dst, nil + case decodeErrCodeUnsupportedLiteralLength: + return nil, errUnsupportedLiteralLength + } + return nil, ErrCorrupt +} + +// NewReader returns a new Reader that decompresses from r, using the framing +// format described at +// https://github.com/google/snappy/blob/master/framing_format.txt +func NewReader(r io.Reader) *Reader { + return &Reader{ + r: r, + decoded: make([]byte, maxBlockSize), + buf: make([]byte, maxEncodedLenOfMaxBlockSize+checksumSize), + } +} + +// Reader is an io.Reader that can read Snappy-compressed bytes. +type Reader struct { + r io.Reader + err error + decoded []byte + buf []byte + // decoded[i:j] contains decoded bytes that have not yet been passed on. + i, j int + readHeader bool +} + +// Reset discards any buffered data, resets all state, and switches the Snappy +// reader to read from r. This permits reusing a Reader rather than allocating +// a new one. +func (r *Reader) Reset(reader io.Reader) { + r.r = reader + r.err = nil + r.i = 0 + r.j = 0 + r.readHeader = false +} + +func (r *Reader) readFull(p []byte, allowEOF bool) (ok bool) { + if _, r.err = io.ReadFull(r.r, p); r.err != nil { + if r.err == io.ErrUnexpectedEOF || (r.err == io.EOF && !allowEOF) { + r.err = ErrCorrupt + } + return false + } + return true +} + +// Read satisfies the io.Reader interface. +func (r *Reader) Read(p []byte) (int, error) { + if r.err != nil { + return 0, r.err + } + for { + if r.i < r.j { + n := copy(p, r.decoded[r.i:r.j]) + r.i += n + return n, nil + } + if !r.readFull(r.buf[:4], true) { + return 0, r.err + } + chunkType := r.buf[0] + if !r.readHeader { + if chunkType != chunkTypeStreamIdentifier { + r.err = ErrCorrupt + return 0, r.err + } + r.readHeader = true + } + chunkLen := int(r.buf[1]) | int(r.buf[2])<<8 | int(r.buf[3])<<16 + if chunkLen > len(r.buf) { + r.err = ErrUnsupported + return 0, r.err + } + + // The chunk types are specified at + // https://github.com/google/snappy/blob/master/framing_format.txt + switch chunkType { + case chunkTypeCompressedData: + // Section 4.2. Compressed data (chunk type 0x00). + if chunkLen < checksumSize { + r.err = ErrCorrupt + return 0, r.err + } + buf := r.buf[:chunkLen] + if !r.readFull(buf, false) { + return 0, r.err + } + checksum := uint32(buf[0]) | uint32(buf[1])<<8 | uint32(buf[2])<<16 | uint32(buf[3])<<24 + buf = buf[checksumSize:] + + n, err := DecodedLen(buf) + if err != nil { + r.err = err + return 0, r.err + } + if n > len(r.decoded) { + r.err = ErrCorrupt + return 0, r.err + } + if _, err := Decode(r.decoded, buf); err != nil { + r.err = err + return 0, r.err + } + if crc(r.decoded[:n]) != checksum { + r.err = ErrCorrupt + return 0, r.err + } + r.i, r.j = 0, n + continue + + case chunkTypeUncompressedData: + // Section 4.3. Uncompressed data (chunk type 0x01). + if chunkLen < checksumSize { + r.err = ErrCorrupt + return 0, r.err + } + buf := r.buf[:checksumSize] + if !r.readFull(buf, false) { + return 0, r.err + } + checksum := uint32(buf[0]) | uint32(buf[1])<<8 | uint32(buf[2])<<16 | uint32(buf[3])<<24 + // Read directly into r.decoded instead of via r.buf. + n := chunkLen - checksumSize + if n > len(r.decoded) { + r.err = ErrCorrupt + return 0, r.err + } + if !r.readFull(r.decoded[:n], false) { + return 0, r.err + } + if crc(r.decoded[:n]) != checksum { + r.err = ErrCorrupt + return 0, r.err + } + r.i, r.j = 0, n + continue + + case chunkTypeStreamIdentifier: + // Section 4.1. Stream identifier (chunk type 0xff). + if chunkLen != len(magicBody) { + r.err = ErrCorrupt + return 0, r.err + } + if !r.readFull(r.buf[:len(magicBody)], false) { + return 0, r.err + } + for i := 0; i < len(magicBody); i++ { + if r.buf[i] != magicBody[i] { + r.err = ErrCorrupt + return 0, r.err + } + } + continue + } + + if chunkType <= 0x7f { + // Section 4.5. Reserved unskippable chunks (chunk types 0x02-0x7f). + r.err = ErrUnsupported + return 0, r.err + } + // Section 4.4 Padding (chunk type 0xfe). + // Section 4.6. Reserved skippable chunks (chunk types 0x80-0xfd). + if !r.readFull(r.buf[:chunkLen], false) { + return 0, r.err + } + } +} diff --git a/vendor/github.com/klauspost/compress/snappy/decode_amd64.go b/vendor/github.com/klauspost/compress/snappy/decode_amd64.go new file mode 100644 index 0000000..fcd192b --- /dev/null +++ b/vendor/github.com/klauspost/compress/snappy/decode_amd64.go @@ -0,0 +1,14 @@ +// Copyright 2016 The Snappy-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 !appengine +// +build gc +// +build !noasm + +package snappy + +// decode has the same semantics as in decode_other.go. +// +//go:noescape +func decode(dst, src []byte) int diff --git a/vendor/github.com/klauspost/compress/snappy/decode_amd64.s b/vendor/github.com/klauspost/compress/snappy/decode_amd64.s new file mode 100644 index 0000000..e6179f6 --- /dev/null +++ b/vendor/github.com/klauspost/compress/snappy/decode_amd64.s @@ -0,0 +1,490 @@ +// 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 !appengine +// +build gc +// +build !noasm + +#include "textflag.h" + +// The asm code generally follows the pure Go code in decode_other.go, except +// where marked with a "!!!". + +// func decode(dst, src []byte) int +// +// All local variables fit into registers. The non-zero stack size is only to +// spill registers and push args when issuing a CALL. The register allocation: +// - AX scratch +// - BX scratch +// - CX length or x +// - DX offset +// - SI &src[s] +// - DI &dst[d] +// + R8 dst_base +// + R9 dst_len +// + R10 dst_base + dst_len +// + R11 src_base +// + R12 src_len +// + R13 src_base + src_len +// - R14 used by doCopy +// - R15 used by doCopy +// +// The registers R8-R13 (marked with a "+") are set at the start of the +// function, and after a CALL returns, and are not otherwise modified. +// +// The d variable is implicitly DI - R8, and len(dst)-d is R10 - DI. +// The s variable is implicitly SI - R11, and len(src)-s is R13 - SI. +TEXT ·decode(SB), NOSPLIT, $48-56 + // Initialize SI, DI and R8-R13. + MOVQ dst_base+0(FP), R8 + MOVQ dst_len+8(FP), R9 + MOVQ R8, DI + MOVQ R8, R10 + ADDQ R9, R10 + MOVQ src_base+24(FP), R11 + MOVQ src_len+32(FP), R12 + MOVQ R11, SI + MOVQ R11, R13 + ADDQ R12, R13 + +loop: + // for s < len(src) + CMPQ SI, R13 + JEQ end + + // CX = uint32(src[s]) + // + // switch src[s] & 0x03 + MOVBLZX (SI), CX + MOVL CX, BX + ANDL $3, BX + CMPL BX, $1 + JAE tagCopy + + // ---------------------------------------- + // The code below handles literal tags. + + // case tagLiteral: + // x := uint32(src[s] >> 2) + // switch + SHRL $2, CX + CMPL CX, $60 + JAE tagLit60Plus + + // case x < 60: + // s++ + INCQ SI + +doLit: + // This is the end of the inner "switch", when we have a literal tag. + // + // We assume that CX == x and x fits in a uint32, where x is the variable + // used in the pure Go decode_other.go code. + + // length = int(x) + 1 + // + // Unlike the pure Go code, we don't need to check if length <= 0 because + // CX can hold 64 bits, so the increment cannot overflow. + INCQ CX + + // Prepare to check if copying length bytes will run past the end of dst or + // src. + // + // AX = len(dst) - d + // BX = len(src) - s + MOVQ R10, AX + SUBQ DI, AX + MOVQ R13, BX + SUBQ SI, BX + + // !!! Try a faster technique for short (16 or fewer bytes) copies. + // + // if length > 16 || len(dst)-d < 16 || len(src)-s < 16 { + // goto callMemmove // Fall back on calling runtime·memmove. + // } + // + // The C++ snappy code calls this TryFastAppend. It also checks len(src)-s + // against 21 instead of 16, because it cannot assume that all of its input + // is contiguous in memory and so it needs to leave enough source bytes to + // read the next tag without refilling buffers, but Go's Decode assumes + // contiguousness (the src argument is a []byte). + CMPQ CX, $16 + JGT callMemmove + CMPQ AX, $16 + JLT callMemmove + CMPQ BX, $16 + JLT callMemmove + + // !!! Implement the copy from src to dst as a 16-byte load and store. + // (Decode's documentation says that dst and src must not overlap.) + // + // This always copies 16 bytes, instead of only length bytes, but that's + // OK. If the input is a valid Snappy encoding then subsequent iterations + // will fix up the overrun. Otherwise, Decode returns a nil []byte (and a + // non-nil error), so the overrun will be ignored. + // + // Note that on amd64, it is legal and cheap to issue unaligned 8-byte or + // 16-byte loads and stores. This technique probably wouldn't be as + // effective on architectures that are fussier about alignment. + MOVOU 0(SI), X0 + MOVOU X0, 0(DI) + + // d += length + // s += length + ADDQ CX, DI + ADDQ CX, SI + JMP loop + +callMemmove: + // if length > len(dst)-d || length > len(src)-s { etc } + CMPQ CX, AX + JGT errCorrupt + CMPQ CX, BX + JGT errCorrupt + + // copy(dst[d:], src[s:s+length]) + // + // This means calling runtime·memmove(&dst[d], &src[s], length), so we push + // DI, SI and CX as arguments. Coincidentally, we also need to spill those + // three registers to the stack, to save local variables across the CALL. + MOVQ DI, 0(SP) + MOVQ SI, 8(SP) + MOVQ CX, 16(SP) + MOVQ DI, 24(SP) + MOVQ SI, 32(SP) + MOVQ CX, 40(SP) + CALL runtime·memmove(SB) + + // Restore local variables: unspill registers from the stack and + // re-calculate R8-R13. + MOVQ 24(SP), DI + MOVQ 32(SP), SI + MOVQ 40(SP), CX + MOVQ dst_base+0(FP), R8 + MOVQ dst_len+8(FP), R9 + MOVQ R8, R10 + ADDQ R9, R10 + MOVQ src_base+24(FP), R11 + MOVQ src_len+32(FP), R12 + MOVQ R11, R13 + ADDQ R12, R13 + + // d += length + // s += length + ADDQ CX, DI + ADDQ CX, SI + JMP loop + +tagLit60Plus: + // !!! This fragment does the + // + // s += x - 58; if uint(s) > uint(len(src)) { etc } + // + // checks. In the asm version, we code it once instead of once per switch case. + ADDQ CX, SI + SUBQ $58, SI + MOVQ SI, BX + SUBQ R11, BX + CMPQ BX, R12 + JA errCorrupt + + // case x == 60: + CMPL CX, $61 + JEQ tagLit61 + JA tagLit62Plus + + // x = uint32(src[s-1]) + MOVBLZX -1(SI), CX + JMP doLit + +tagLit61: + // case x == 61: + // x = uint32(src[s-2]) | uint32(src[s-1])<<8 + MOVWLZX -2(SI), CX + JMP doLit + +tagLit62Plus: + CMPL CX, $62 + JA tagLit63 + + // case x == 62: + // x = uint32(src[s-3]) | uint32(src[s-2])<<8 | uint32(src[s-1])<<16 + MOVWLZX -3(SI), CX + MOVBLZX -1(SI), BX + SHLL $16, BX + ORL BX, CX + JMP doLit + +tagLit63: + // case x == 63: + // x = uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24 + MOVL -4(SI), CX + JMP doLit + +// The code above handles literal tags. +// ---------------------------------------- +// The code below handles copy tags. + +tagCopy4: + // case tagCopy4: + // s += 5 + ADDQ $5, SI + + // if uint(s) > uint(len(src)) { etc } + MOVQ SI, BX + SUBQ R11, BX + CMPQ BX, R12 + JA errCorrupt + + // length = 1 + int(src[s-5])>>2 + SHRQ $2, CX + INCQ CX + + // offset = int(uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24) + MOVLQZX -4(SI), DX + JMP doCopy + +tagCopy2: + // case tagCopy2: + // s += 3 + ADDQ $3, SI + + // if uint(s) > uint(len(src)) { etc } + MOVQ SI, BX + SUBQ R11, BX + CMPQ BX, R12 + JA errCorrupt + + // length = 1 + int(src[s-3])>>2 + SHRQ $2, CX + INCQ CX + + // offset = int(uint32(src[s-2]) | uint32(src[s-1])<<8) + MOVWQZX -2(SI), DX + JMP doCopy + +tagCopy: + // We have a copy tag. We assume that: + // - BX == src[s] & 0x03 + // - CX == src[s] + CMPQ BX, $2 + JEQ tagCopy2 + JA tagCopy4 + + // case tagCopy1: + // s += 2 + ADDQ $2, SI + + // if uint(s) > uint(len(src)) { etc } + MOVQ SI, BX + SUBQ R11, BX + CMPQ BX, R12 + JA errCorrupt + + // offset = int(uint32(src[s-2])&0xe0<<3 | uint32(src[s-1])) + MOVQ CX, DX + ANDQ $0xe0, DX + SHLQ $3, DX + MOVBQZX -1(SI), BX + ORQ BX, DX + + // length = 4 + int(src[s-2])>>2&0x7 + SHRQ $2, CX + ANDQ $7, CX + ADDQ $4, CX + +doCopy: + // This is the end of the outer "switch", when we have a copy tag. + // + // We assume that: + // - CX == length && CX > 0 + // - DX == offset + + // if offset <= 0 { etc } + CMPQ DX, $0 + JLE errCorrupt + + // if d < offset { etc } + MOVQ DI, BX + SUBQ R8, BX + CMPQ BX, DX + JLT errCorrupt + + // if length > len(dst)-d { etc } + MOVQ R10, BX + SUBQ DI, BX + CMPQ CX, BX + JGT errCorrupt + + // forwardCopy(dst[d:d+length], dst[d-offset:]); d += length + // + // Set: + // - R14 = len(dst)-d + // - R15 = &dst[d-offset] + MOVQ R10, R14 + SUBQ DI, R14 + MOVQ DI, R15 + SUBQ DX, R15 + + // !!! Try a faster technique for short (16 or fewer bytes) forward copies. + // + // First, try using two 8-byte load/stores, similar to the doLit technique + // above. Even if dst[d:d+length] and dst[d-offset:] can overlap, this is + // still OK if offset >= 8. Note that this has to be two 8-byte load/stores + // and not one 16-byte load/store, and the first store has to be before the + // second load, due to the overlap if offset is in the range [8, 16). + // + // if length > 16 || offset < 8 || len(dst)-d < 16 { + // goto slowForwardCopy + // } + // copy 16 bytes + // d += length + CMPQ CX, $16 + JGT slowForwardCopy + CMPQ DX, $8 + JLT slowForwardCopy + CMPQ R14, $16 + JLT slowForwardCopy + MOVQ 0(R15), AX + MOVQ AX, 0(DI) + MOVQ 8(R15), BX + MOVQ BX, 8(DI) + ADDQ CX, DI + JMP loop + +slowForwardCopy: + // !!! If the forward copy is longer than 16 bytes, or if offset < 8, we + // can still try 8-byte load stores, provided we can overrun up to 10 extra + // bytes. As above, the overrun will be fixed up by subsequent iterations + // of the outermost loop. + // + // The C++ snappy code calls this technique IncrementalCopyFastPath. Its + // commentary says: + // + // ---- + // + // The main part of this loop is a simple copy of eight bytes at a time + // until we've copied (at least) the requested amount of bytes. However, + // if d and d-offset are less than eight bytes apart (indicating a + // repeating pattern of length < 8), we first need to expand the pattern in + // order to get the correct results. For instance, if the buffer looks like + // this, with the eight-byte and patterns marked as + // intervals: + // + // abxxxxxxxxxxxx + // [------] d-offset + // [------] d + // + // a single eight-byte copy from to will repeat the pattern + // once, after which we can move two bytes without moving : + // + // ababxxxxxxxxxx + // [------] d-offset + // [------] d + // + // and repeat the exercise until the two no longer overlap. + // + // This allows us to do very well in the special case of one single byte + // repeated many times, without taking a big hit for more general cases. + // + // The worst case of extra writing past the end of the match occurs when + // offset == 1 and length == 1; the last copy will read from byte positions + // [0..7] and write to [4..11], whereas it was only supposed to write to + // position 1. Thus, ten excess bytes. + // + // ---- + // + // That "10 byte overrun" worst case is confirmed by Go's + // TestSlowForwardCopyOverrun, which also tests the fixUpSlowForwardCopy + // and finishSlowForwardCopy algorithm. + // + // if length > len(dst)-d-10 { + // goto verySlowForwardCopy + // } + SUBQ $10, R14 + CMPQ CX, R14 + JGT verySlowForwardCopy + +makeOffsetAtLeast8: + // !!! As above, expand the pattern so that offset >= 8 and we can use + // 8-byte load/stores. + // + // for offset < 8 { + // copy 8 bytes from dst[d-offset:] to dst[d:] + // length -= offset + // d += offset + // offset += offset + // // The two previous lines together means that d-offset, and therefore + // // R15, is unchanged. + // } + CMPQ DX, $8 + JGE fixUpSlowForwardCopy + MOVQ (R15), BX + MOVQ BX, (DI) + SUBQ DX, CX + ADDQ DX, DI + ADDQ DX, DX + JMP makeOffsetAtLeast8 + +fixUpSlowForwardCopy: + // !!! Add length (which might be negative now) to d (implied by DI being + // &dst[d]) so that d ends up at the right place when we jump back to the + // top of the loop. Before we do that, though, we save DI to AX so that, if + // length is positive, copying the remaining length bytes will write to the + // right place. + MOVQ DI, AX + ADDQ CX, DI + +finishSlowForwardCopy: + // !!! Repeat 8-byte load/stores until length <= 0. Ending with a negative + // length means that we overrun, but as above, that will be fixed up by + // subsequent iterations of the outermost loop. + CMPQ CX, $0 + JLE loop + MOVQ (R15), BX + MOVQ BX, (AX) + ADDQ $8, R15 + ADDQ $8, AX + SUBQ $8, CX + JMP finishSlowForwardCopy + +verySlowForwardCopy: + // verySlowForwardCopy is a simple implementation of forward copy. In C + // parlance, this is a do/while loop instead of a while loop, since we know + // that length > 0. In Go syntax: + // + // for { + // dst[d] = dst[d - offset] + // d++ + // length-- + // if length == 0 { + // break + // } + // } + MOVB (R15), BX + MOVB BX, (DI) + INCQ R15 + INCQ DI + DECQ CX + JNZ verySlowForwardCopy + JMP loop + +// The code above handles copy tags. +// ---------------------------------------- + +end: + // This is the end of the "for s < len(src)". + // + // if d != len(dst) { etc } + CMPQ DI, R10 + JNE errCorrupt + + // return 0 + MOVQ $0, ret+48(FP) + RET + +errCorrupt: + // return decodeErrCodeCorrupt + MOVQ $1, ret+48(FP) + RET diff --git a/vendor/github.com/klauspost/compress/snappy/decode_other.go b/vendor/github.com/klauspost/compress/snappy/decode_other.go new file mode 100644 index 0000000..8c9f204 --- /dev/null +++ b/vendor/github.com/klauspost/compress/snappy/decode_other.go @@ -0,0 +1,101 @@ +// Copyright 2016 The Snappy-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 !amd64 appengine !gc noasm + +package snappy + +// decode writes the decoding of src to dst. It assumes that the varint-encoded +// length of the decompressed bytes has already been read, and that len(dst) +// equals that length. +// +// It returns 0 on success or a decodeErrCodeXxx error code on failure. +func decode(dst, src []byte) int { + var d, s, offset, length int + for s < len(src) { + switch src[s] & 0x03 { + case tagLiteral: + x := uint32(src[s] >> 2) + switch { + case x < 60: + s++ + case x == 60: + s += 2 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + x = uint32(src[s-1]) + case x == 61: + s += 3 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + x = uint32(src[s-2]) | uint32(src[s-1])<<8 + case x == 62: + s += 4 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + x = uint32(src[s-3]) | uint32(src[s-2])<<8 | uint32(src[s-1])<<16 + case x == 63: + s += 5 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + x = uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24 + } + length = int(x) + 1 + if length <= 0 { + return decodeErrCodeUnsupportedLiteralLength + } + if length > len(dst)-d || length > len(src)-s { + return decodeErrCodeCorrupt + } + copy(dst[d:], src[s:s+length]) + d += length + s += length + continue + + case tagCopy1: + s += 2 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + length = 4 + int(src[s-2])>>2&0x7 + offset = int(uint32(src[s-2])&0xe0<<3 | uint32(src[s-1])) + + case tagCopy2: + s += 3 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + length = 1 + int(src[s-3])>>2 + offset = int(uint32(src[s-2]) | uint32(src[s-1])<<8) + + case tagCopy4: + s += 5 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + length = 1 + int(src[s-5])>>2 + offset = int(uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24) + } + + if offset <= 0 || d < offset || length > len(dst)-d { + return decodeErrCodeCorrupt + } + // Copy from an earlier sub-slice of dst to a later sub-slice. Unlike + // the built-in copy function, this byte-by-byte copy always runs + // forwards, even if the slices overlap. Conceptually, this is: + // + // d += forwardCopy(dst[d:d+length], dst[d-offset:]) + for end := d + length; d != end; d++ { + dst[d] = dst[d-offset] + } + } + if d != len(dst) { + return decodeErrCodeCorrupt + } + return 0 +} diff --git a/vendor/github.com/klauspost/compress/snappy/encode.go b/vendor/github.com/klauspost/compress/snappy/encode.go new file mode 100644 index 0000000..8749689 --- /dev/null +++ b/vendor/github.com/klauspost/compress/snappy/encode.go @@ -0,0 +1,285 @@ +// Copyright 2011 The Snappy-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 snappy + +import ( + "encoding/binary" + "errors" + "io" +) + +// Encode returns the encoded form of src. The returned slice may be a sub- +// slice of dst if dst was large enough to hold the entire encoded block. +// Otherwise, a newly allocated slice will be returned. +// +// The dst and src must not overlap. It is valid to pass a nil dst. +func Encode(dst, src []byte) []byte { + if n := MaxEncodedLen(len(src)); n < 0 { + panic(ErrTooLarge) + } else if len(dst) < n { + dst = make([]byte, n) + } + + // The block starts with the varint-encoded length of the decompressed bytes. + d := binary.PutUvarint(dst, uint64(len(src))) + + for len(src) > 0 { + p := src + src = nil + if len(p) > maxBlockSize { + p, src = p[:maxBlockSize], p[maxBlockSize:] + } + if len(p) < minNonLiteralBlockSize { + d += emitLiteral(dst[d:], p) + } else { + d += encodeBlock(dst[d:], p) + } + } + return dst[:d] +} + +// inputMargin is the minimum number of extra input bytes to keep, inside +// encodeBlock's inner loop. On some architectures, this margin lets us +// implement a fast path for emitLiteral, where the copy of short (<= 16 byte) +// literals can be implemented as a single load to and store from a 16-byte +// register. That literal's actual length can be as short as 1 byte, so this +// can copy up to 15 bytes too much, but that's OK as subsequent iterations of +// the encoding loop will fix up the copy overrun, and this inputMargin ensures +// that we don't overrun the dst and src buffers. +const inputMargin = 16 - 1 + +// minNonLiteralBlockSize is the minimum size of the input to encodeBlock that +// could be encoded with a copy tag. This is the minimum with respect to the +// algorithm used by encodeBlock, not a minimum enforced by the file format. +// +// The encoded output must start with at least a 1 byte literal, as there are +// no previous bytes to copy. A minimal (1 byte) copy after that, generated +// from an emitCopy call in encodeBlock's main loop, would require at least +// another inputMargin bytes, for the reason above: we want any emitLiteral +// calls inside encodeBlock's main loop to use the fast path if possible, which +// requires being able to overrun by inputMargin bytes. Thus, +// minNonLiteralBlockSize equals 1 + 1 + inputMargin. +// +// The C++ code doesn't use this exact threshold, but it could, as discussed at +// https://groups.google.com/d/topic/snappy-compression/oGbhsdIJSJ8/discussion +// The difference between Go (2+inputMargin) and C++ (inputMargin) is purely an +// optimization. It should not affect the encoded form. This is tested by +// TestSameEncodingAsCppShortCopies. +const minNonLiteralBlockSize = 1 + 1 + inputMargin + +// MaxEncodedLen returns the maximum length of a snappy block, given its +// uncompressed length. +// +// It will return a negative value if srcLen is too large to encode. +func MaxEncodedLen(srcLen int) int { + n := uint64(srcLen) + if n > 0xffffffff { + return -1 + } + // Compressed data can be defined as: + // compressed := item* literal* + // item := literal* copy + // + // The trailing literal sequence has a space blowup of at most 62/60 + // since a literal of length 60 needs one tag byte + one extra byte + // for length information. + // + // Item blowup is trickier to measure. Suppose the "copy" op copies + // 4 bytes of data. Because of a special check in the encoding code, + // we produce a 4-byte copy only if the offset is < 65536. Therefore + // the copy op takes 3 bytes to encode, and this type of item leads + // to at most the 62/60 blowup for representing literals. + // + // Suppose the "copy" op copies 5 bytes of data. If the offset is big + // enough, it will take 5 bytes to encode the copy op. Therefore the + // worst case here is a one-byte literal followed by a five-byte copy. + // That is, 6 bytes of input turn into 7 bytes of "compressed" data. + // + // This last factor dominates the blowup, so the final estimate is: + n = 32 + n + n/6 + if n > 0xffffffff { + return -1 + } + return int(n) +} + +var errClosed = errors.New("snappy: Writer is closed") + +// NewWriter returns a new Writer that compresses to w. +// +// The Writer returned does not buffer writes. There is no need to Flush or +// Close such a Writer. +// +// Deprecated: the Writer returned is not suitable for many small writes, only +// for few large writes. Use NewBufferedWriter instead, which is efficient +// regardless of the frequency and shape of the writes, and remember to Close +// that Writer when done. +func NewWriter(w io.Writer) *Writer { + return &Writer{ + w: w, + obuf: make([]byte, obufLen), + } +} + +// NewBufferedWriter returns a new Writer that compresses to w, using the +// framing format described at +// https://github.com/google/snappy/blob/master/framing_format.txt +// +// The Writer returned buffers writes. Users must call Close to guarantee all +// data has been forwarded to the underlying io.Writer. They may also call +// Flush zero or more times before calling Close. +func NewBufferedWriter(w io.Writer) *Writer { + return &Writer{ + w: w, + ibuf: make([]byte, 0, maxBlockSize), + obuf: make([]byte, obufLen), + } +} + +// Writer is an io.Writer than can write Snappy-compressed bytes. +type Writer struct { + w io.Writer + err error + + // ibuf is a buffer for the incoming (uncompressed) bytes. + // + // Its use is optional. For backwards compatibility, Writers created by the + // NewWriter function have ibuf == nil, do not buffer incoming bytes, and + // therefore do not need to be Flush'ed or Close'd. + ibuf []byte + + // obuf is a buffer for the outgoing (compressed) bytes. + obuf []byte + + // wroteStreamHeader is whether we have written the stream header. + wroteStreamHeader bool +} + +// Reset discards the writer's state and switches the Snappy writer to write to +// w. This permits reusing a Writer rather than allocating a new one. +func (w *Writer) Reset(writer io.Writer) { + w.w = writer + w.err = nil + if w.ibuf != nil { + w.ibuf = w.ibuf[:0] + } + w.wroteStreamHeader = false +} + +// Write satisfies the io.Writer interface. +func (w *Writer) Write(p []byte) (nRet int, errRet error) { + if w.ibuf == nil { + // Do not buffer incoming bytes. This does not perform or compress well + // if the caller of Writer.Write writes many small slices. This + // behavior is therefore deprecated, but still supported for backwards + // compatibility with code that doesn't explicitly Flush or Close. + return w.write(p) + } + + // The remainder of this method is based on bufio.Writer.Write from the + // standard library. + + for len(p) > (cap(w.ibuf)-len(w.ibuf)) && w.err == nil { + var n int + if len(w.ibuf) == 0 { + // Large write, empty buffer. + // Write directly from p to avoid copy. + n, _ = w.write(p) + } else { + n = copy(w.ibuf[len(w.ibuf):cap(w.ibuf)], p) + w.ibuf = w.ibuf[:len(w.ibuf)+n] + w.Flush() + } + nRet += n + p = p[n:] + } + if w.err != nil { + return nRet, w.err + } + n := copy(w.ibuf[len(w.ibuf):cap(w.ibuf)], p) + w.ibuf = w.ibuf[:len(w.ibuf)+n] + nRet += n + return nRet, nil +} + +func (w *Writer) write(p []byte) (nRet int, errRet error) { + if w.err != nil { + return 0, w.err + } + for len(p) > 0 { + obufStart := len(magicChunk) + if !w.wroteStreamHeader { + w.wroteStreamHeader = true + copy(w.obuf, magicChunk) + obufStart = 0 + } + + var uncompressed []byte + if len(p) > maxBlockSize { + uncompressed, p = p[:maxBlockSize], p[maxBlockSize:] + } else { + uncompressed, p = p, nil + } + checksum := crc(uncompressed) + + // Compress the buffer, discarding the result if the improvement + // isn't at least 12.5%. + compressed := Encode(w.obuf[obufHeaderLen:], uncompressed) + chunkType := uint8(chunkTypeCompressedData) + chunkLen := 4 + len(compressed) + obufEnd := obufHeaderLen + len(compressed) + if len(compressed) >= len(uncompressed)-len(uncompressed)/8 { + chunkType = chunkTypeUncompressedData + chunkLen = 4 + len(uncompressed) + obufEnd = obufHeaderLen + } + + // Fill in the per-chunk header that comes before the body. + w.obuf[len(magicChunk)+0] = chunkType + w.obuf[len(magicChunk)+1] = uint8(chunkLen >> 0) + w.obuf[len(magicChunk)+2] = uint8(chunkLen >> 8) + w.obuf[len(magicChunk)+3] = uint8(chunkLen >> 16) + w.obuf[len(magicChunk)+4] = uint8(checksum >> 0) + w.obuf[len(magicChunk)+5] = uint8(checksum >> 8) + w.obuf[len(magicChunk)+6] = uint8(checksum >> 16) + w.obuf[len(magicChunk)+7] = uint8(checksum >> 24) + + if _, err := w.w.Write(w.obuf[obufStart:obufEnd]); err != nil { + w.err = err + return nRet, err + } + if chunkType == chunkTypeUncompressedData { + if _, err := w.w.Write(uncompressed); err != nil { + w.err = err + return nRet, err + } + } + nRet += len(uncompressed) + } + return nRet, nil +} + +// Flush flushes the Writer to its underlying io.Writer. +func (w *Writer) Flush() error { + if w.err != nil { + return w.err + } + if len(w.ibuf) == 0 { + return nil + } + w.write(w.ibuf) + w.ibuf = w.ibuf[:0] + return w.err +} + +// Close calls Flush and then closes the Writer. +func (w *Writer) Close() error { + w.Flush() + ret := w.err + if w.err == nil { + w.err = errClosed + } + return ret +} diff --git a/vendor/github.com/klauspost/compress/snappy/encode_amd64.go b/vendor/github.com/klauspost/compress/snappy/encode_amd64.go new file mode 100644 index 0000000..150d91b --- /dev/null +++ b/vendor/github.com/klauspost/compress/snappy/encode_amd64.go @@ -0,0 +1,29 @@ +// Copyright 2016 The Snappy-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 !appengine +// +build gc +// +build !noasm + +package snappy + +// emitLiteral has the same semantics as in encode_other.go. +// +//go:noescape +func emitLiteral(dst, lit []byte) int + +// emitCopy has the same semantics as in encode_other.go. +// +//go:noescape +func emitCopy(dst []byte, offset, length int) int + +// extendMatch has the same semantics as in encode_other.go. +// +//go:noescape +func extendMatch(src []byte, i, j int) int + +// encodeBlock has the same semantics as in encode_other.go. +// +//go:noescape +func encodeBlock(dst, src []byte) (d int) diff --git a/vendor/github.com/klauspost/compress/snappy/encode_amd64.s b/vendor/github.com/klauspost/compress/snappy/encode_amd64.s new file mode 100644 index 0000000..adfd979 --- /dev/null +++ b/vendor/github.com/klauspost/compress/snappy/encode_amd64.s @@ -0,0 +1,730 @@ +// 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 !appengine +// +build gc +// +build !noasm + +#include "textflag.h" + +// The XXX lines assemble on Go 1.4, 1.5 and 1.7, but not 1.6, due to a +// Go toolchain regression. See https://github.com/golang/go/issues/15426 and +// https://github.com/golang/snappy/issues/29 +// +// As a workaround, the package was built with a known good assembler, and +// those instructions were disassembled by "objdump -d" to yield the +// 4e 0f b7 7c 5c 78 movzwq 0x78(%rsp,%r11,2),%r15 +// style comments, in AT&T asm syntax. Note that rsp here is a physical +// register, not Go/asm's SP pseudo-register (see https://golang.org/doc/asm). +// The instructions were then encoded as "BYTE $0x.." sequences, which assemble +// fine on Go 1.6. + +// The asm code generally follows the pure Go code in encode_other.go, except +// where marked with a "!!!". + +// ---------------------------------------------------------------------------- + +// func emitLiteral(dst, lit []byte) int +// +// All local variables fit into registers. The register allocation: +// - AX len(lit) +// - BX n +// - DX return value +// - DI &dst[i] +// - R10 &lit[0] +// +// The 24 bytes of stack space is to call runtime·memmove. +// +// The unusual register allocation of local variables, such as R10 for the +// source pointer, matches the allocation used at the call site in encodeBlock, +// which makes it easier to manually inline this function. +TEXT ·emitLiteral(SB), NOSPLIT, $24-56 + MOVQ dst_base+0(FP), DI + MOVQ lit_base+24(FP), R10 + MOVQ lit_len+32(FP), AX + MOVQ AX, DX + MOVL AX, BX + SUBL $1, BX + + CMPL BX, $60 + JLT oneByte + CMPL BX, $256 + JLT twoBytes + +threeBytes: + MOVB $0xf4, 0(DI) + MOVW BX, 1(DI) + ADDQ $3, DI + ADDQ $3, DX + JMP memmove + +twoBytes: + MOVB $0xf0, 0(DI) + MOVB BX, 1(DI) + ADDQ $2, DI + ADDQ $2, DX + JMP memmove + +oneByte: + SHLB $2, BX + MOVB BX, 0(DI) + ADDQ $1, DI + ADDQ $1, DX + +memmove: + MOVQ DX, ret+48(FP) + + // copy(dst[i:], lit) + // + // This means calling runtime·memmove(&dst[i], &lit[0], len(lit)), so we push + // DI, R10 and AX as arguments. + MOVQ DI, 0(SP) + MOVQ R10, 8(SP) + MOVQ AX, 16(SP) + CALL runtime·memmove(SB) + RET + +// ---------------------------------------------------------------------------- + +// func emitCopy(dst []byte, offset, length int) int +// +// All local variables fit into registers. The register allocation: +// - AX length +// - SI &dst[0] +// - DI &dst[i] +// - R11 offset +// +// The unusual register allocation of local variables, such as R11 for the +// offset, matches the allocation used at the call site in encodeBlock, which +// makes it easier to manually inline this function. +TEXT ·emitCopy(SB), NOSPLIT, $0-48 + MOVQ dst_base+0(FP), DI + MOVQ DI, SI + MOVQ offset+24(FP), R11 + MOVQ length+32(FP), AX + +loop0: + // for length >= 68 { etc } + CMPL AX, $68 + JLT step1 + + // Emit a length 64 copy, encoded as 3 bytes. + MOVB $0xfe, 0(DI) + MOVW R11, 1(DI) + ADDQ $3, DI + SUBL $64, AX + JMP loop0 + +step1: + // if length > 64 { etc } + CMPL AX, $64 + JLE step2 + + // Emit a length 60 copy, encoded as 3 bytes. + MOVB $0xee, 0(DI) + MOVW R11, 1(DI) + ADDQ $3, DI + SUBL $60, AX + +step2: + // if length >= 12 || offset >= 2048 { goto step3 } + CMPL AX, $12 + JGE step3 + CMPL R11, $2048 + JGE step3 + + // Emit the remaining copy, encoded as 2 bytes. + MOVB R11, 1(DI) + SHRL $8, R11 + SHLB $5, R11 + SUBB $4, AX + SHLB $2, AX + ORB AX, R11 + ORB $1, R11 + MOVB R11, 0(DI) + ADDQ $2, DI + + // Return the number of bytes written. + SUBQ SI, DI + MOVQ DI, ret+40(FP) + RET + +step3: + // Emit the remaining copy, encoded as 3 bytes. + SUBL $1, AX + SHLB $2, AX + ORB $2, AX + MOVB AX, 0(DI) + MOVW R11, 1(DI) + ADDQ $3, DI + + // Return the number of bytes written. + SUBQ SI, DI + MOVQ DI, ret+40(FP) + RET + +// ---------------------------------------------------------------------------- + +// func extendMatch(src []byte, i, j int) int +// +// All local variables fit into registers. The register allocation: +// - DX &src[0] +// - SI &src[j] +// - R13 &src[len(src) - 8] +// - R14 &src[len(src)] +// - R15 &src[i] +// +// The unusual register allocation of local variables, such as R15 for a source +// pointer, matches the allocation used at the call site in encodeBlock, which +// makes it easier to manually inline this function. +TEXT ·extendMatch(SB), NOSPLIT, $0-48 + MOVQ src_base+0(FP), DX + MOVQ src_len+8(FP), R14 + MOVQ i+24(FP), R15 + MOVQ j+32(FP), SI + ADDQ DX, R14 + ADDQ DX, R15 + ADDQ DX, SI + MOVQ R14, R13 + SUBQ $8, R13 + +cmp8: + // As long as we are 8 or more bytes before the end of src, we can load and + // compare 8 bytes at a time. If those 8 bytes are equal, repeat. + CMPQ SI, R13 + JA cmp1 + MOVQ (R15), AX + MOVQ (SI), BX + CMPQ AX, BX + JNE bsf + ADDQ $8, R15 + ADDQ $8, SI + JMP cmp8 + +bsf: + // If those 8 bytes were not equal, XOR the two 8 byte values, and return + // the index of the first byte that differs. The BSF instruction finds the + // least significant 1 bit, the amd64 architecture is little-endian, and + // the shift by 3 converts a bit index to a byte index. + XORQ AX, BX + BSFQ BX, BX + SHRQ $3, BX + ADDQ BX, SI + + // Convert from &src[ret] to ret. + SUBQ DX, SI + MOVQ SI, ret+40(FP) + RET + +cmp1: + // In src's tail, compare 1 byte at a time. + CMPQ SI, R14 + JAE extendMatchEnd + MOVB (R15), AX + MOVB (SI), BX + CMPB AX, BX + JNE extendMatchEnd + ADDQ $1, R15 + ADDQ $1, SI + JMP cmp1 + +extendMatchEnd: + // Convert from &src[ret] to ret. + SUBQ DX, SI + MOVQ SI, ret+40(FP) + RET + +// ---------------------------------------------------------------------------- + +// func encodeBlock(dst, src []byte) (d int) +// +// All local variables fit into registers, other than "var table". The register +// allocation: +// - AX . . +// - BX . . +// - CX 56 shift (note that amd64 shifts by non-immediates must use CX). +// - DX 64 &src[0], tableSize +// - SI 72 &src[s] +// - DI 80 &dst[d] +// - R9 88 sLimit +// - R10 . &src[nextEmit] +// - R11 96 prevHash, currHash, nextHash, offset +// - R12 104 &src[base], skip +// - R13 . &src[nextS], &src[len(src) - 8] +// - R14 . len(src), bytesBetweenHashLookups, &src[len(src)], x +// - R15 112 candidate +// +// The second column (56, 64, etc) is the stack offset to spill the registers +// when calling other functions. We could pack this slightly tighter, but it's +// simpler to have a dedicated spill map independent of the function called. +// +// "var table [maxTableSize]uint16" takes up 32768 bytes of stack space. An +// extra 56 bytes, to call other functions, and an extra 64 bytes, to spill +// local variables (registers) during calls gives 32768 + 56 + 64 = 32888. +TEXT ·encodeBlock(SB), 0, $32888-56 + MOVQ dst_base+0(FP), DI + MOVQ src_base+24(FP), SI + MOVQ src_len+32(FP), R14 + + // shift, tableSize := uint32(32-8), 1<<8 + MOVQ $24, CX + MOVQ $256, DX + +calcShift: + // for ; tableSize < maxTableSize && tableSize < len(src); tableSize *= 2 { + // shift-- + // } + CMPQ DX, $16384 + JGE varTable + CMPQ DX, R14 + JGE varTable + SUBQ $1, CX + SHLQ $1, DX + JMP calcShift + +varTable: + // var table [maxTableSize]uint16 + // + // In the asm code, unlike the Go code, we can zero-initialize only the + // first tableSize elements. Each uint16 element is 2 bytes and each MOVOU + // writes 16 bytes, so we can do only tableSize/8 writes instead of the + // 2048 writes that would zero-initialize all of table's 32768 bytes. + SHRQ $3, DX + LEAQ table-32768(SP), BX + PXOR X0, X0 + +memclr: + MOVOU X0, 0(BX) + ADDQ $16, BX + SUBQ $1, DX + JNZ memclr + + // !!! DX = &src[0] + MOVQ SI, DX + + // sLimit := len(src) - inputMargin + MOVQ R14, R9 + SUBQ $15, R9 + + // !!! Pre-emptively spill CX, DX and R9 to the stack. Their values don't + // change for the rest of the function. + MOVQ CX, 56(SP) + MOVQ DX, 64(SP) + MOVQ R9, 88(SP) + + // nextEmit := 0 + MOVQ DX, R10 + + // s := 1 + ADDQ $1, SI + + // nextHash := hash(load32(src, s), shift) + MOVL 0(SI), R11 + IMULL $0x1e35a7bd, R11 + SHRL CX, R11 + +outer: + // for { etc } + + // skip := 32 + MOVQ $32, R12 + + // nextS := s + MOVQ SI, R13 + + // candidate := 0 + MOVQ $0, R15 + +inner0: + // for { etc } + + // s := nextS + MOVQ R13, SI + + // bytesBetweenHashLookups := skip >> 5 + MOVQ R12, R14 + SHRQ $5, R14 + + // nextS = s + bytesBetweenHashLookups + ADDQ R14, R13 + + // skip += bytesBetweenHashLookups + ADDQ R14, R12 + + // if nextS > sLimit { goto emitRemainder } + MOVQ R13, AX + SUBQ DX, AX + CMPQ AX, R9 + JA emitRemainder + + // candidate = int(table[nextHash]) + // XXX: MOVWQZX table-32768(SP)(R11*2), R15 + // XXX: 4e 0f b7 7c 5c 78 movzwq 0x78(%rsp,%r11,2),%r15 + BYTE $0x4e + BYTE $0x0f + BYTE $0xb7 + BYTE $0x7c + BYTE $0x5c + BYTE $0x78 + + // table[nextHash] = uint16(s) + MOVQ SI, AX + SUBQ DX, AX + + // XXX: MOVW AX, table-32768(SP)(R11*2) + // XXX: 66 42 89 44 5c 78 mov %ax,0x78(%rsp,%r11,2) + BYTE $0x66 + BYTE $0x42 + BYTE $0x89 + BYTE $0x44 + BYTE $0x5c + BYTE $0x78 + + // nextHash = hash(load32(src, nextS), shift) + MOVL 0(R13), R11 + IMULL $0x1e35a7bd, R11 + SHRL CX, R11 + + // if load32(src, s) != load32(src, candidate) { continue } break + MOVL 0(SI), AX + MOVL (DX)(R15*1), BX + CMPL AX, BX + JNE inner0 + +fourByteMatch: + // As per the encode_other.go code: + // + // A 4-byte match has been found. We'll later see etc. + + // !!! Jump to a fast path for short (<= 16 byte) literals. See the comment + // on inputMargin in encode.go. + MOVQ SI, AX + SUBQ R10, AX + CMPQ AX, $16 + JLE emitLiteralFastPath + + // ---------------------------------------- + // Begin inline of the emitLiteral call. + // + // d += emitLiteral(dst[d:], src[nextEmit:s]) + + MOVL AX, BX + SUBL $1, BX + + CMPL BX, $60 + JLT inlineEmitLiteralOneByte + CMPL BX, $256 + JLT inlineEmitLiteralTwoBytes + +inlineEmitLiteralThreeBytes: + MOVB $0xf4, 0(DI) + MOVW BX, 1(DI) + ADDQ $3, DI + JMP inlineEmitLiteralMemmove + +inlineEmitLiteralTwoBytes: + MOVB $0xf0, 0(DI) + MOVB BX, 1(DI) + ADDQ $2, DI + JMP inlineEmitLiteralMemmove + +inlineEmitLiteralOneByte: + SHLB $2, BX + MOVB BX, 0(DI) + ADDQ $1, DI + +inlineEmitLiteralMemmove: + // Spill local variables (registers) onto the stack; call; unspill. + // + // copy(dst[i:], lit) + // + // This means calling runtime·memmove(&dst[i], &lit[0], len(lit)), so we push + // DI, R10 and AX as arguments. + MOVQ DI, 0(SP) + MOVQ R10, 8(SP) + MOVQ AX, 16(SP) + ADDQ AX, DI // Finish the "d +=" part of "d += emitLiteral(etc)". + MOVQ SI, 72(SP) + MOVQ DI, 80(SP) + MOVQ R15, 112(SP) + CALL runtime·memmove(SB) + MOVQ 56(SP), CX + MOVQ 64(SP), DX + MOVQ 72(SP), SI + MOVQ 80(SP), DI + MOVQ 88(SP), R9 + MOVQ 112(SP), R15 + JMP inner1 + +inlineEmitLiteralEnd: + // End inline of the emitLiteral call. + // ---------------------------------------- + +emitLiteralFastPath: + // !!! Emit the 1-byte encoding "uint8(len(lit)-1)<<2". + MOVB AX, BX + SUBB $1, BX + SHLB $2, BX + MOVB BX, (DI) + ADDQ $1, DI + + // !!! Implement the copy from lit to dst as a 16-byte load and store. + // (Encode's documentation says that dst and src must not overlap.) + // + // This always copies 16 bytes, instead of only len(lit) bytes, but that's + // OK. Subsequent iterations will fix up the overrun. + // + // Note that on amd64, it is legal and cheap to issue unaligned 8-byte or + // 16-byte loads and stores. This technique probably wouldn't be as + // effective on architectures that are fussier about alignment. + MOVOU 0(R10), X0 + MOVOU X0, 0(DI) + ADDQ AX, DI + +inner1: + // for { etc } + + // base := s + MOVQ SI, R12 + + // !!! offset := base - candidate + MOVQ R12, R11 + SUBQ R15, R11 + SUBQ DX, R11 + + // ---------------------------------------- + // Begin inline of the extendMatch call. + // + // s = extendMatch(src, candidate+4, s+4) + + // !!! R14 = &src[len(src)] + MOVQ src_len+32(FP), R14 + ADDQ DX, R14 + + // !!! R13 = &src[len(src) - 8] + MOVQ R14, R13 + SUBQ $8, R13 + + // !!! R15 = &src[candidate + 4] + ADDQ $4, R15 + ADDQ DX, R15 + + // !!! s += 4 + ADDQ $4, SI + +inlineExtendMatchCmp8: + // As long as we are 8 or more bytes before the end of src, we can load and + // compare 8 bytes at a time. If those 8 bytes are equal, repeat. + CMPQ SI, R13 + JA inlineExtendMatchCmp1 + MOVQ (R15), AX + MOVQ (SI), BX + CMPQ AX, BX + JNE inlineExtendMatchBSF + ADDQ $8, R15 + ADDQ $8, SI + JMP inlineExtendMatchCmp8 + +inlineExtendMatchBSF: + // If those 8 bytes were not equal, XOR the two 8 byte values, and return + // the index of the first byte that differs. The BSF instruction finds the + // least significant 1 bit, the amd64 architecture is little-endian, and + // the shift by 3 converts a bit index to a byte index. + XORQ AX, BX + BSFQ BX, BX + SHRQ $3, BX + ADDQ BX, SI + JMP inlineExtendMatchEnd + +inlineExtendMatchCmp1: + // In src's tail, compare 1 byte at a time. + CMPQ SI, R14 + JAE inlineExtendMatchEnd + MOVB (R15), AX + MOVB (SI), BX + CMPB AX, BX + JNE inlineExtendMatchEnd + ADDQ $1, R15 + ADDQ $1, SI + JMP inlineExtendMatchCmp1 + +inlineExtendMatchEnd: + // End inline of the extendMatch call. + // ---------------------------------------- + + // ---------------------------------------- + // Begin inline of the emitCopy call. + // + // d += emitCopy(dst[d:], base-candidate, s-base) + + // !!! length := s - base + MOVQ SI, AX + SUBQ R12, AX + +inlineEmitCopyLoop0: + // for length >= 68 { etc } + CMPL AX, $68 + JLT inlineEmitCopyStep1 + + // Emit a length 64 copy, encoded as 3 bytes. + MOVB $0xfe, 0(DI) + MOVW R11, 1(DI) + ADDQ $3, DI + SUBL $64, AX + JMP inlineEmitCopyLoop0 + +inlineEmitCopyStep1: + // if length > 64 { etc } + CMPL AX, $64 + JLE inlineEmitCopyStep2 + + // Emit a length 60 copy, encoded as 3 bytes. + MOVB $0xee, 0(DI) + MOVW R11, 1(DI) + ADDQ $3, DI + SUBL $60, AX + +inlineEmitCopyStep2: + // if length >= 12 || offset >= 2048 { goto inlineEmitCopyStep3 } + CMPL AX, $12 + JGE inlineEmitCopyStep3 + CMPL R11, $2048 + JGE inlineEmitCopyStep3 + + // Emit the remaining copy, encoded as 2 bytes. + MOVB R11, 1(DI) + SHRL $8, R11 + SHLB $5, R11 + SUBB $4, AX + SHLB $2, AX + ORB AX, R11 + ORB $1, R11 + MOVB R11, 0(DI) + ADDQ $2, DI + JMP inlineEmitCopyEnd + +inlineEmitCopyStep3: + // Emit the remaining copy, encoded as 3 bytes. + SUBL $1, AX + SHLB $2, AX + ORB $2, AX + MOVB AX, 0(DI) + MOVW R11, 1(DI) + ADDQ $3, DI + +inlineEmitCopyEnd: + // End inline of the emitCopy call. + // ---------------------------------------- + + // nextEmit = s + MOVQ SI, R10 + + // if s >= sLimit { goto emitRemainder } + MOVQ SI, AX + SUBQ DX, AX + CMPQ AX, R9 + JAE emitRemainder + + // As per the encode_other.go code: + // + // We could immediately etc. + + // x := load64(src, s-1) + MOVQ -1(SI), R14 + + // prevHash := hash(uint32(x>>0), shift) + MOVL R14, R11 + IMULL $0x1e35a7bd, R11 + SHRL CX, R11 + + // table[prevHash] = uint16(s-1) + MOVQ SI, AX + SUBQ DX, AX + SUBQ $1, AX + + // XXX: MOVW AX, table-32768(SP)(R11*2) + // XXX: 66 42 89 44 5c 78 mov %ax,0x78(%rsp,%r11,2) + BYTE $0x66 + BYTE $0x42 + BYTE $0x89 + BYTE $0x44 + BYTE $0x5c + BYTE $0x78 + + // currHash := hash(uint32(x>>8), shift) + SHRQ $8, R14 + MOVL R14, R11 + IMULL $0x1e35a7bd, R11 + SHRL CX, R11 + + // candidate = int(table[currHash]) + // XXX: MOVWQZX table-32768(SP)(R11*2), R15 + // XXX: 4e 0f b7 7c 5c 78 movzwq 0x78(%rsp,%r11,2),%r15 + BYTE $0x4e + BYTE $0x0f + BYTE $0xb7 + BYTE $0x7c + BYTE $0x5c + BYTE $0x78 + + // table[currHash] = uint16(s) + ADDQ $1, AX + + // XXX: MOVW AX, table-32768(SP)(R11*2) + // XXX: 66 42 89 44 5c 78 mov %ax,0x78(%rsp,%r11,2) + BYTE $0x66 + BYTE $0x42 + BYTE $0x89 + BYTE $0x44 + BYTE $0x5c + BYTE $0x78 + + // if uint32(x>>8) == load32(src, candidate) { continue } + MOVL (DX)(R15*1), BX + CMPL R14, BX + JEQ inner1 + + // nextHash = hash(uint32(x>>16), shift) + SHRQ $8, R14 + MOVL R14, R11 + IMULL $0x1e35a7bd, R11 + SHRL CX, R11 + + // s++ + ADDQ $1, SI + + // break out of the inner1 for loop, i.e. continue the outer loop. + JMP outer + +emitRemainder: + // if nextEmit < len(src) { etc } + MOVQ src_len+32(FP), AX + ADDQ DX, AX + CMPQ R10, AX + JEQ encodeBlockEnd + + // d += emitLiteral(dst[d:], src[nextEmit:]) + // + // Push args. + MOVQ DI, 0(SP) + MOVQ $0, 8(SP) // Unnecessary, as the callee ignores it, but conservative. + MOVQ $0, 16(SP) // Unnecessary, as the callee ignores it, but conservative. + MOVQ R10, 24(SP) + SUBQ R10, AX + MOVQ AX, 32(SP) + MOVQ AX, 40(SP) // Unnecessary, as the callee ignores it, but conservative. + + // Spill local variables (registers) onto the stack; call; unspill. + MOVQ DI, 80(SP) + CALL ·emitLiteral(SB) + MOVQ 80(SP), DI + + // Finish the "d +=" part of "d += emitLiteral(etc)". + ADDQ 48(SP), DI + +encodeBlockEnd: + MOVQ dst_base+0(FP), AX + SUBQ AX, DI + MOVQ DI, d+48(FP) + RET diff --git a/vendor/github.com/klauspost/compress/snappy/encode_other.go b/vendor/github.com/klauspost/compress/snappy/encode_other.go new file mode 100644 index 0000000..dbcae90 --- /dev/null +++ b/vendor/github.com/klauspost/compress/snappy/encode_other.go @@ -0,0 +1,238 @@ +// Copyright 2016 The Snappy-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 !amd64 appengine !gc noasm + +package snappy + +func load32(b []byte, i int) uint32 { + b = b[i : i+4 : len(b)] // Help the compiler eliminate bounds checks on the next line. + return uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24 +} + +func load64(b []byte, i int) uint64 { + b = b[i : i+8 : len(b)] // Help the compiler eliminate bounds checks on the next line. + return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | + uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 +} + +// emitLiteral writes a literal chunk and returns the number of bytes written. +// +// It assumes that: +// dst is long enough to hold the encoded bytes +// 1 <= len(lit) && len(lit) <= 65536 +func emitLiteral(dst, lit []byte) int { + i, n := 0, uint(len(lit)-1) + switch { + case n < 60: + dst[0] = uint8(n)<<2 | tagLiteral + i = 1 + case n < 1<<8: + dst[0] = 60<<2 | tagLiteral + dst[1] = uint8(n) + i = 2 + default: + dst[0] = 61<<2 | tagLiteral + dst[1] = uint8(n) + dst[2] = uint8(n >> 8) + i = 3 + } + return i + copy(dst[i:], lit) +} + +// emitCopy writes a copy chunk and returns the number of bytes written. +// +// It assumes that: +// dst is long enough to hold the encoded bytes +// 1 <= offset && offset <= 65535 +// 4 <= length && length <= 65535 +func emitCopy(dst []byte, offset, length int) int { + i := 0 + // The maximum length for a single tagCopy1 or tagCopy2 op is 64 bytes. The + // threshold for this loop is a little higher (at 68 = 64 + 4), and the + // length emitted down below is is a little lower (at 60 = 64 - 4), because + // it's shorter to encode a length 67 copy as a length 60 tagCopy2 followed + // by a length 7 tagCopy1 (which encodes as 3+2 bytes) than to encode it as + // a length 64 tagCopy2 followed by a length 3 tagCopy2 (which encodes as + // 3+3 bytes). The magic 4 in the 64±4 is because the minimum length for a + // tagCopy1 op is 4 bytes, which is why a length 3 copy has to be an + // encodes-as-3-bytes tagCopy2 instead of an encodes-as-2-bytes tagCopy1. + for length >= 68 { + // Emit a length 64 copy, encoded as 3 bytes. + dst[i+0] = 63<<2 | tagCopy2 + dst[i+1] = uint8(offset) + dst[i+2] = uint8(offset >> 8) + i += 3 + length -= 64 + } + if length > 64 { + // Emit a length 60 copy, encoded as 3 bytes. + dst[i+0] = 59<<2 | tagCopy2 + dst[i+1] = uint8(offset) + dst[i+2] = uint8(offset >> 8) + i += 3 + length -= 60 + } + if length >= 12 || offset >= 2048 { + // Emit the remaining copy, encoded as 3 bytes. + dst[i+0] = uint8(length-1)<<2 | tagCopy2 + dst[i+1] = uint8(offset) + dst[i+2] = uint8(offset >> 8) + return i + 3 + } + // Emit the remaining copy, encoded as 2 bytes. + dst[i+0] = uint8(offset>>8)<<5 | uint8(length-4)<<2 | tagCopy1 + dst[i+1] = uint8(offset) + return i + 2 +} + +// extendMatch returns the largest k such that k <= len(src) and that +// src[i:i+k-j] and src[j:k] have the same contents. +// +// It assumes that: +// 0 <= i && i < j && j <= len(src) +func extendMatch(src []byte, i, j int) int { + for ; j < len(src) && src[i] == src[j]; i, j = i+1, j+1 { + } + return j +} + +func hash(u, shift uint32) uint32 { + return (u * 0x1e35a7bd) >> shift +} + +// encodeBlock encodes a non-empty src to a guaranteed-large-enough dst. It +// assumes that the varint-encoded length of the decompressed bytes has already +// been written. +// +// It also assumes that: +// len(dst) >= MaxEncodedLen(len(src)) && +// minNonLiteralBlockSize <= len(src) && len(src) <= maxBlockSize +func encodeBlock(dst, src []byte) (d int) { + // Initialize the hash table. Its size ranges from 1<<8 to 1<<14 inclusive. + // The table element type is uint16, as s < sLimit and sLimit < len(src) + // and len(src) <= maxBlockSize and maxBlockSize == 65536. + const ( + maxTableSize = 1 << 14 + // tableMask is redundant, but helps the compiler eliminate bounds + // checks. + tableMask = maxTableSize - 1 + ) + shift := uint32(32 - 8) + for tableSize := 1 << 8; tableSize < maxTableSize && tableSize < len(src); tableSize *= 2 { + shift-- + } + // In Go, all array elements are zero-initialized, so there is no advantage + // to a smaller tableSize per se. However, it matches the C++ algorithm, + // and in the asm versions of this code, we can get away with zeroing only + // the first tableSize elements. + var table [maxTableSize]uint16 + + // sLimit is when to stop looking for offset/length copies. The inputMargin + // lets us use a fast path for emitLiteral in the main loop, while we are + // looking for copies. + sLimit := len(src) - inputMargin + + // nextEmit is where in src the next emitLiteral should start from. + nextEmit := 0 + + // The encoded form must start with a literal, as there are no previous + // bytes to copy, so we start looking for hash matches at s == 1. + s := 1 + nextHash := hash(load32(src, s), shift) + + for { + // Copied from the C++ snappy implementation: + // + // Heuristic match skipping: If 32 bytes are scanned with no matches + // found, start looking only at every other byte. If 32 more bytes are + // scanned (or skipped), look at every third byte, etc.. When a match + // is found, immediately go back to looking at every byte. This is a + // small loss (~5% performance, ~0.1% density) for compressible data + // due to more bookkeeping, but for non-compressible data (such as + // JPEG) it's a huge win since the compressor quickly "realizes" the + // data is incompressible and doesn't bother looking for matches + // everywhere. + // + // The "skip" variable keeps track of how many bytes there are since + // the last match; dividing it by 32 (ie. right-shifting by five) gives + // the number of bytes to move ahead for each iteration. + skip := 32 + + nextS := s + candidate := 0 + for { + s = nextS + bytesBetweenHashLookups := skip >> 5 + nextS = s + bytesBetweenHashLookups + skip += bytesBetweenHashLookups + if nextS > sLimit { + goto emitRemainder + } + candidate = int(table[nextHash&tableMask]) + table[nextHash&tableMask] = uint16(s) + nextHash = hash(load32(src, nextS), shift) + if load32(src, s) == load32(src, candidate) { + break + } + } + + // A 4-byte match has been found. We'll later see if more than 4 bytes + // match. But, prior to the match, src[nextEmit:s] are unmatched. Emit + // them as literal bytes. + d += emitLiteral(dst[d:], src[nextEmit:s]) + + // Call emitCopy, and then see if another emitCopy could be our next + // move. Repeat until we find no match for the input immediately after + // what was consumed by the last emitCopy call. + // + // If we exit this loop normally then we need to call emitLiteral next, + // though we don't yet know how big the literal will be. We handle that + // by proceeding to the next iteration of the main loop. We also can + // exit this loop via goto if we get close to exhausting the input. + for { + // Invariant: we have a 4-byte match at s, and no need to emit any + // literal bytes prior to s. + base := s + + // Extend the 4-byte match as long as possible. + // + // This is an inlined version of: + // s = extendMatch(src, candidate+4, s+4) + s += 4 + for i := candidate + 4; s < len(src) && src[i] == src[s]; i, s = i+1, s+1 { + } + + d += emitCopy(dst[d:], base-candidate, s-base) + nextEmit = s + if s >= sLimit { + goto emitRemainder + } + + // We could immediately start working at s now, but to improve + // compression we first update the hash table at s-1 and at s. If + // another emitCopy is not our next move, also calculate nextHash + // at s+1. At least on GOARCH=amd64, these three hash calculations + // are faster as one load64 call (with some shifts) instead of + // three load32 calls. + x := load64(src, s-1) + prevHash := hash(uint32(x>>0), shift) + table[prevHash&tableMask] = uint16(s - 1) + currHash := hash(uint32(x>>8), shift) + candidate = int(table[currHash&tableMask]) + table[currHash&tableMask] = uint16(s) + if uint32(x>>8) != load32(src, candidate) { + nextHash = hash(uint32(x>>16), shift) + s++ + break + } + } + } + +emitRemainder: + if nextEmit < len(src) { + d += emitLiteral(dst[d:], src[nextEmit:]) + } + return d +} diff --git a/vendor/github.com/klauspost/compress/snappy/runbench.cmd b/vendor/github.com/klauspost/compress/snappy/runbench.cmd new file mode 100644 index 0000000..d24eb4b --- /dev/null +++ b/vendor/github.com/klauspost/compress/snappy/runbench.cmd @@ -0,0 +1,2 @@ +del old.txt +go test -bench=. >>old.txt && go test -bench=. >>old.txt && go test -bench=. >>old.txt && benchstat -delta-test=ttest old.txt new.txt diff --git a/vendor/github.com/klauspost/compress/snappy/snappy.go b/vendor/github.com/klauspost/compress/snappy/snappy.go new file mode 100644 index 0000000..c7f445f --- /dev/null +++ b/vendor/github.com/klauspost/compress/snappy/snappy.go @@ -0,0 +1,87 @@ +// Copyright 2011 The Snappy-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 snappy implements the snappy block-based compression format. +// It aims for very high speeds and reasonable compression. +// +// The C++ snappy implementation is at https://github.com/google/snappy +package snappy + +import ( + "hash/crc32" +) + +/* +Each encoded block begins with the varint-encoded length of the decoded data, +followed by a sequence of chunks. Chunks begin and end on byte boundaries. The +first byte of each chunk is broken into its 2 least and 6 most significant bits +called l and m: l ranges in [0, 4) and m ranges in [0, 64). l is the chunk tag. +Zero means a literal tag. All other values mean a copy tag. + +For literal tags: + - If m < 60, the next 1 + m bytes are literal bytes. + - Otherwise, let n be the little-endian unsigned integer denoted by the next + m - 59 bytes. The next 1 + n bytes after that are literal bytes. + +For copy tags, length bytes are copied from offset bytes ago, in the style of +Lempel-Ziv compression algorithms. In particular: + - For l == 1, the offset ranges in [0, 1<<11) and the length in [4, 12). + The length is 4 + the low 3 bits of m. The high 3 bits of m form bits 8-10 + of the offset. The next byte is bits 0-7 of the offset. + - For l == 2, the offset ranges in [0, 1<<16) and the length in [1, 65). + The length is 1 + m. The offset is the little-endian unsigned integer + denoted by the next 2 bytes. + - For l == 3, this tag is a legacy format that is no longer issued by most + encoders. Nonetheless, the offset ranges in [0, 1<<32) and the length in + [1, 65). The length is 1 + m. The offset is the little-endian unsigned + integer denoted by the next 4 bytes. +*/ +const ( + tagLiteral = 0x00 + tagCopy1 = 0x01 + tagCopy2 = 0x02 + tagCopy4 = 0x03 +) + +const ( + checksumSize = 4 + chunkHeaderSize = 4 + magicChunk = "\xff\x06\x00\x00" + magicBody + magicBody = "sNaPpY" + + // maxBlockSize is the maximum size of the input to encodeBlock. It is not + // part of the wire format per se, but some parts of the encoder assume + // that an offset fits into a uint16. + // + // Also, for the framing format (Writer type instead of Encode function), + // https://github.com/google/snappy/blob/master/framing_format.txt says + // that "the uncompressed data in a chunk must be no longer than 65536 + // bytes". + maxBlockSize = 65536 + + // maxEncodedLenOfMaxBlockSize equals MaxEncodedLen(maxBlockSize), but is + // hard coded to be a const instead of a variable, so that obufLen can also + // be a const. Their equivalence is confirmed by + // TestMaxEncodedLenOfMaxBlockSize. + maxEncodedLenOfMaxBlockSize = 76490 + + obufHeaderLen = len(magicChunk) + checksumSize + chunkHeaderSize + obufLen = obufHeaderLen + maxEncodedLenOfMaxBlockSize +) + +const ( + chunkTypeCompressedData = 0x00 + chunkTypeUncompressedData = 0x01 + chunkTypePadding = 0xfe + chunkTypeStreamIdentifier = 0xff +) + +var crcTable = crc32.MakeTable(crc32.Castagnoli) + +// crc implements the checksum specified in section 3 of +// https://github.com/google/snappy/blob/master/framing_format.txt +func crc(b []byte) uint32 { + c := crc32.Update(0, crcTable, b) + return uint32(c>>15|c<<17) + 0xa282ead8 +} diff --git a/vendor/github.com/klauspost/cpuid/.gitignore b/vendor/github.com/klauspost/cpuid/.gitignore new file mode 100644 index 0000000..daf913b --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/.gitignore @@ -0,0 +1,24 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof diff --git a/vendor/github.com/klauspost/cpuid/.travis.yml b/vendor/github.com/klauspost/cpuid/.travis.yml new file mode 100644 index 0000000..bde823d --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/.travis.yml @@ -0,0 +1,8 @@ +language: go + +go: + - 1.3 + - 1.4 + - 1.5 + - 1.6 + - tip diff --git a/vendor/github.com/klauspost/cpuid/LICENSE b/vendor/github.com/klauspost/cpuid/LICENSE new file mode 100644 index 0000000..5cec7ee --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 Klaus Post + +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/klauspost/cpuid/README.md b/vendor/github.com/klauspost/cpuid/README.md new file mode 100644 index 0000000..b2b6bee --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/README.md @@ -0,0 +1,145 @@ +# cpuid +Package cpuid provides information about the CPU running the current program. + +CPU features are detected on startup, and kept for fast access through the life of the application. +Currently x86 / x64 (AMD64) is supported, and no external C (cgo) code is used, which should make the library very easy to use. + +You can access the CPU information by accessing the shared CPU variable of the cpuid library. + +Package home: https://github.com/klauspost/cpuid + +[![GoDoc][1]][2] [![Build Status][3]][4] + +[1]: https://godoc.org/github.com/klauspost/cpuid?status.svg +[2]: https://godoc.org/github.com/klauspost/cpuid +[3]: https://travis-ci.org/klauspost/cpuid.svg +[4]: https://travis-ci.org/klauspost/cpuid + +# features +## CPU Instructions +* **CMOV** (i686 CMOV) +* **NX** (NX (No-Execute) bit) +* **AMD3DNOW** (AMD 3DNOW) +* **AMD3DNOWEXT** (AMD 3DNowExt) +* **MMX** (standard MMX) +* **MMXEXT** (SSE integer functions or AMD MMX ext) +* **SSE** (SSE functions) +* **SSE2** (P4 SSE functions) +* **SSE3** (Prescott SSE3 functions) +* **SSSE3** (Conroe SSSE3 functions) +* **SSE4** (Penryn SSE4.1 functions) +* **SSE4A** (AMD Barcelona microarchitecture SSE4a instructions) +* **SSE42** (Nehalem SSE4.2 functions) +* **AVX** (AVX functions) +* **AVX2** (AVX2 functions) +* **FMA3** (Intel FMA 3) +* **FMA4** (Bulldozer FMA4 functions) +* **XOP** (Bulldozer XOP functions) +* **F16C** (Half-precision floating-point conversion) +* **BMI1** (Bit Manipulation Instruction Set 1) +* **BMI2** (Bit Manipulation Instruction Set 2) +* **TBM** (AMD Trailing Bit Manipulation) +* **LZCNT** (LZCNT instruction) +* **POPCNT** (POPCNT instruction) +* **AESNI** (Advanced Encryption Standard New Instructions) +* **CLMUL** (Carry-less Multiplication) +* **HTT** (Hyperthreading (enabled)) +* **HLE** (Hardware Lock Elision) +* **RTM** (Restricted Transactional Memory) +* **RDRAND** (RDRAND instruction is available) +* **RDSEED** (RDSEED instruction is available) +* **ADX** (Intel ADX (Multi-Precision Add-Carry Instruction Extensions)) +* **SHA** (Intel SHA Extensions) +* **AVX512F** (AVX-512 Foundation) +* **AVX512DQ** (AVX-512 Doubleword and Quadword Instructions) +* **AVX512IFMA** (AVX-512 Integer Fused Multiply-Add Instructions) +* **AVX512PF** (AVX-512 Prefetch Instructions) +* **AVX512ER** (AVX-512 Exponential and Reciprocal Instructions) +* **AVX512CD** (AVX-512 Conflict Detection Instructions) +* **AVX512BW** (AVX-512 Byte and Word Instructions) +* **AVX512VL** (AVX-512 Vector Length Extensions) +* **AVX512VBMI** (AVX-512 Vector Bit Manipulation Instructions) +* **MPX** (Intel MPX (Memory Protection Extensions)) +* **ERMS** (Enhanced REP MOVSB/STOSB) +* **RDTSCP** (RDTSCP Instruction) +* **CX16** (CMPXCHG16B Instruction) +* **SGX** (Software Guard Extensions, with activation details) + +## Performance +* **RDTSCP()** Returns current cycle count. Can be used for benchmarking. +* **SSE2SLOW** (SSE2 is supported, but usually not faster) +* **SSE3SLOW** (SSE3 is supported, but usually not faster) +* **ATOM** (Atom processor, some SSSE3 instructions are slower) +* **Cache line** (Probable size of a cache line). +* **L1, L2, L3 Cache size** on newer Intel/AMD CPUs. + +## Cpu Vendor/VM +* **Intel** +* **AMD** +* **VIA** +* **Transmeta** +* **NSC** +* **KVM** (Kernel-based Virtual Machine) +* **MSVM** (Microsoft Hyper-V or Windows Virtual PC) +* **VMware** +* **XenHVM** + +# installing + +```go get github.com/klauspost/cpuid``` + +# example + +```Go +package main + +import ( + "fmt" + "github.com/klauspost/cpuid" +) + +func main() { + // Print basic CPU information: + fmt.Println("Name:", cpuid.CPU.BrandName) + fmt.Println("PhysicalCores:", cpuid.CPU.PhysicalCores) + fmt.Println("ThreadsPerCore:", cpuid.CPU.ThreadsPerCore) + fmt.Println("LogicalCores:", cpuid.CPU.LogicalCores) + fmt.Println("Family", cpuid.CPU.Family, "Model:", cpuid.CPU.Model) + fmt.Println("Features:", cpuid.CPU.Features) + fmt.Println("Cacheline bytes:", cpuid.CPU.CacheLine) + fmt.Println("L1 Data Cache:", cpuid.CPU.Cache.L1D, "bytes") + fmt.Println("L1 Instruction Cache:", cpuid.CPU.Cache.L1D, "bytes") + fmt.Println("L2 Cache:", cpuid.CPU.Cache.L2, "bytes") + fmt.Println("L3 Cache:", cpuid.CPU.Cache.L3, "bytes") + + // Test if we have a specific feature: + if cpuid.CPU.SSE() { + fmt.Println("We have Streaming SIMD Extensions") + } +} +``` + +Sample output: +``` +>go run main.go +Name: Intel(R) Core(TM) i5-2540M CPU @ 2.60GHz +PhysicalCores: 2 +ThreadsPerCore: 2 +LogicalCores: 4 +Family 6 Model: 42 +Features: CMOV,MMX,MMXEXT,SSE,SSE2,SSE3,SSSE3,SSE4.1,SSE4.2,AVX,AESNI,CLMUL +Cacheline bytes: 64 +We have Streaming SIMD Extensions +``` + +# private package + +In the "private" folder you can find an autogenerated version of the library you can include in your own packages. + +For this purpose all exports are removed, and functions and constants are lowercased. + +This is not a recommended way of using the library, but provided for convenience, if it is difficult for you to use external packages. + +# license + +This code is published under an MIT license. See LICENSE file for more information. diff --git a/vendor/github.com/klauspost/cpuid/cpuid.go b/vendor/github.com/klauspost/cpuid/cpuid.go new file mode 100644 index 0000000..9230ca5 --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/cpuid.go @@ -0,0 +1,1022 @@ +// Copyright (c) 2015 Klaus Post, released under MIT License. See LICENSE file. + +// Package cpuid provides information about the CPU running the current program. +// +// CPU features are detected on startup, and kept for fast access through the life of the application. +// Currently x86 / x64 (AMD64) is supported. +// +// You can access the CPU information by accessing the shared CPU variable of the cpuid library. +// +// Package home: https://github.com/klauspost/cpuid +package cpuid + +import "strings" + +// Vendor is a representation of a CPU vendor. +type Vendor int + +const ( + Other Vendor = iota + Intel + AMD + VIA + Transmeta + NSC + KVM // Kernel-based Virtual Machine + MSVM // Microsoft Hyper-V or Windows Virtual PC + VMware + XenHVM +) + +const ( + CMOV = 1 << iota // i686 CMOV + NX // NX (No-Execute) bit + AMD3DNOW // AMD 3DNOW + AMD3DNOWEXT // AMD 3DNowExt + MMX // standard MMX + MMXEXT // SSE integer functions or AMD MMX ext + SSE // SSE functions + SSE2 // P4 SSE functions + SSE3 // Prescott SSE3 functions + SSSE3 // Conroe SSSE3 functions + SSE4 // Penryn SSE4.1 functions + SSE4A // AMD Barcelona microarchitecture SSE4a instructions + SSE42 // Nehalem SSE4.2 functions + AVX // AVX functions + AVX2 // AVX2 functions + FMA3 // Intel FMA 3 + FMA4 // Bulldozer FMA4 functions + XOP // Bulldozer XOP functions + F16C // Half-precision floating-point conversion + BMI1 // Bit Manipulation Instruction Set 1 + BMI2 // Bit Manipulation Instruction Set 2 + TBM // AMD Trailing Bit Manipulation + LZCNT // LZCNT instruction + POPCNT // POPCNT instruction + AESNI // Advanced Encryption Standard New Instructions + CLMUL // Carry-less Multiplication + HTT // Hyperthreading (enabled) + HLE // Hardware Lock Elision + RTM // Restricted Transactional Memory + RDRAND // RDRAND instruction is available + RDSEED // RDSEED instruction is available + ADX // Intel ADX (Multi-Precision Add-Carry Instruction Extensions) + SHA // Intel SHA Extensions + AVX512F // AVX-512 Foundation + AVX512DQ // AVX-512 Doubleword and Quadword Instructions + AVX512IFMA // AVX-512 Integer Fused Multiply-Add Instructions + AVX512PF // AVX-512 Prefetch Instructions + AVX512ER // AVX-512 Exponential and Reciprocal Instructions + AVX512CD // AVX-512 Conflict Detection Instructions + AVX512BW // AVX-512 Byte and Word Instructions + AVX512VL // AVX-512 Vector Length Extensions + AVX512VBMI // AVX-512 Vector Bit Manipulation Instructions + MPX // Intel MPX (Memory Protection Extensions) + ERMS // Enhanced REP MOVSB/STOSB + RDTSCP // RDTSCP Instruction + CX16 // CMPXCHG16B Instruction + SGX // Software Guard Extensions + + // Performance indicators + SSE2SLOW // SSE2 is supported, but usually not faster + SSE3SLOW // SSE3 is supported, but usually not faster + ATOM // Atom processor, some SSSE3 instructions are slower +) + +var flagNames = map[Flags]string{ + CMOV: "CMOV", // i686 CMOV + NX: "NX", // NX (No-Execute) bit + AMD3DNOW: "AMD3DNOW", // AMD 3DNOW + AMD3DNOWEXT: "AMD3DNOWEXT", // AMD 3DNowExt + MMX: "MMX", // Standard MMX + MMXEXT: "MMXEXT", // SSE integer functions or AMD MMX ext + SSE: "SSE", // SSE functions + SSE2: "SSE2", // P4 SSE2 functions + SSE3: "SSE3", // Prescott SSE3 functions + SSSE3: "SSSE3", // Conroe SSSE3 functions + SSE4: "SSE4.1", // Penryn SSE4.1 functions + SSE4A: "SSE4A", // AMD Barcelona microarchitecture SSE4a instructions + SSE42: "SSE4.2", // Nehalem SSE4.2 functions + AVX: "AVX", // AVX functions + AVX2: "AVX2", // AVX functions + FMA3: "FMA3", // Intel FMA 3 + FMA4: "FMA4", // Bulldozer FMA4 functions + XOP: "XOP", // Bulldozer XOP functions + F16C: "F16C", // Half-precision floating-point conversion + BMI1: "BMI1", // Bit Manipulation Instruction Set 1 + BMI2: "BMI2", // Bit Manipulation Instruction Set 2 + TBM: "TBM", // AMD Trailing Bit Manipulation + LZCNT: "LZCNT", // LZCNT instruction + POPCNT: "POPCNT", // POPCNT instruction + AESNI: "AESNI", // Advanced Encryption Standard New Instructions + CLMUL: "CLMUL", // Carry-less Multiplication + HTT: "HTT", // Hyperthreading (enabled) + HLE: "HLE", // Hardware Lock Elision + RTM: "RTM", // Restricted Transactional Memory + RDRAND: "RDRAND", // RDRAND instruction is available + RDSEED: "RDSEED", // RDSEED instruction is available + ADX: "ADX", // Intel ADX (Multi-Precision Add-Carry Instruction Extensions) + SHA: "SHA", // Intel SHA Extensions + AVX512F: "AVX512F", // AVX-512 Foundation + AVX512DQ: "AVX512DQ", // AVX-512 Doubleword and Quadword Instructions + AVX512IFMA: "AVX512IFMA", // AVX-512 Integer Fused Multiply-Add Instructions + AVX512PF: "AVX512PF", // AVX-512 Prefetch Instructions + AVX512ER: "AVX512ER", // AVX-512 Exponential and Reciprocal Instructions + AVX512CD: "AVX512CD", // AVX-512 Conflict Detection Instructions + AVX512BW: "AVX512BW", // AVX-512 Byte and Word Instructions + AVX512VL: "AVX512VL", // AVX-512 Vector Length Extensions + AVX512VBMI: "AVX512VBMI", // AVX-512 Vector Bit Manipulation Instructions + MPX: "MPX", // Intel MPX (Memory Protection Extensions) + ERMS: "ERMS", // Enhanced REP MOVSB/STOSB + RDTSCP: "RDTSCP", // RDTSCP Instruction + CX16: "CX16", // CMPXCHG16B Instruction + SGX: "SGX", // Software Guard Extensions + + // Performance indicators + SSE2SLOW: "SSE2SLOW", // SSE2 supported, but usually not faster + SSE3SLOW: "SSE3SLOW", // SSE3 supported, but usually not faster + ATOM: "ATOM", // Atom processor, some SSSE3 instructions are slower + +} + +// CPUInfo contains information about the detected system CPU. +type CPUInfo struct { + BrandName string // Brand name reported by the CPU + VendorID Vendor // Comparable CPU vendor ID + Features Flags // Features of the CPU + PhysicalCores int // Number of physical processor cores in your CPU. Will be 0 if undetectable. + ThreadsPerCore int // Number of threads per physical core. Will be 1 if undetectable. + LogicalCores int // Number of physical cores times threads that can run on each core through the use of hyperthreading. Will be 0 if undetectable. + Family int // CPU family number + Model int // CPU model number + CacheLine int // Cache line size in bytes. Will be 0 if undetectable. + Cache struct { + L1I int // L1 Instruction Cache (per core or shared). Will be -1 if undetected + L1D int // L1 Data Cache (per core or shared). Will be -1 if undetected + L2 int // L2 Cache (per core or shared). Will be -1 if undetected + L3 int // L3 Instruction Cache (per core or shared). Will be -1 if undetected + } + SGX SGXSupport + maxFunc uint32 + maxExFunc uint32 +} + +var cpuid func(op uint32) (eax, ebx, ecx, edx uint32) +var cpuidex func(op, op2 uint32) (eax, ebx, ecx, edx uint32) +var xgetbv func(index uint32) (eax, edx uint32) +var rdtscpAsm func() (eax, ebx, ecx, edx uint32) + +// CPU contains information about the CPU as detected on startup, +// or when Detect last was called. +// +// Use this as the primary entry point to you data, +// this way queries are +var CPU CPUInfo + +func init() { + initCPU() + Detect() +} + +// Detect will re-detect current CPU info. +// This will replace the content of the exported CPU variable. +// +// Unless you expect the CPU to change while you are running your program +// you should not need to call this function. +// If you call this, you must ensure that no other goroutine is accessing the +// exported CPU variable. +func Detect() { + CPU.maxFunc = maxFunctionID() + CPU.maxExFunc = maxExtendedFunction() + CPU.BrandName = brandName() + CPU.CacheLine = cacheLine() + CPU.Family, CPU.Model = familyModel() + CPU.Features = support() + CPU.SGX = sgx(CPU.Features&SGX != 0) + CPU.ThreadsPerCore = threadsPerCore() + CPU.LogicalCores = logicalCores() + CPU.PhysicalCores = physicalCores() + CPU.VendorID = vendorID() + CPU.cacheSize() +} + +// Generated here: http://play.golang.org/p/BxFH2Gdc0G + +// Cmov indicates support of CMOV instructions +func (c CPUInfo) Cmov() bool { + return c.Features&CMOV != 0 +} + +// Amd3dnow indicates support of AMD 3DNOW! instructions +func (c CPUInfo) Amd3dnow() bool { + return c.Features&AMD3DNOW != 0 +} + +// Amd3dnowExt indicates support of AMD 3DNOW! Extended instructions +func (c CPUInfo) Amd3dnowExt() bool { + return c.Features&AMD3DNOWEXT != 0 +} + +// MMX indicates support of MMX instructions +func (c CPUInfo) MMX() bool { + return c.Features&MMX != 0 +} + +// MMXExt indicates support of MMXEXT instructions +// (SSE integer functions or AMD MMX ext) +func (c CPUInfo) MMXExt() bool { + return c.Features&MMXEXT != 0 +} + +// SSE indicates support of SSE instructions +func (c CPUInfo) SSE() bool { + return c.Features&SSE != 0 +} + +// SSE2 indicates support of SSE 2 instructions +func (c CPUInfo) SSE2() bool { + return c.Features&SSE2 != 0 +} + +// SSE3 indicates support of SSE 3 instructions +func (c CPUInfo) SSE3() bool { + return c.Features&SSE3 != 0 +} + +// SSSE3 indicates support of SSSE 3 instructions +func (c CPUInfo) SSSE3() bool { + return c.Features&SSSE3 != 0 +} + +// SSE4 indicates support of SSE 4 (also called SSE 4.1) instructions +func (c CPUInfo) SSE4() bool { + return c.Features&SSE4 != 0 +} + +// SSE42 indicates support of SSE4.2 instructions +func (c CPUInfo) SSE42() bool { + return c.Features&SSE42 != 0 +} + +// AVX indicates support of AVX instructions +// and operating system support of AVX instructions +func (c CPUInfo) AVX() bool { + return c.Features&AVX != 0 +} + +// AVX2 indicates support of AVX2 instructions +func (c CPUInfo) AVX2() bool { + return c.Features&AVX2 != 0 +} + +// FMA3 indicates support of FMA3 instructions +func (c CPUInfo) FMA3() bool { + return c.Features&FMA3 != 0 +} + +// FMA4 indicates support of FMA4 instructions +func (c CPUInfo) FMA4() bool { + return c.Features&FMA4 != 0 +} + +// XOP indicates support of XOP instructions +func (c CPUInfo) XOP() bool { + return c.Features&XOP != 0 +} + +// F16C indicates support of F16C instructions +func (c CPUInfo) F16C() bool { + return c.Features&F16C != 0 +} + +// BMI1 indicates support of BMI1 instructions +func (c CPUInfo) BMI1() bool { + return c.Features&BMI1 != 0 +} + +// BMI2 indicates support of BMI2 instructions +func (c CPUInfo) BMI2() bool { + return c.Features&BMI2 != 0 +} + +// TBM indicates support of TBM instructions +// (AMD Trailing Bit Manipulation) +func (c CPUInfo) TBM() bool { + return c.Features&TBM != 0 +} + +// Lzcnt indicates support of LZCNT instruction +func (c CPUInfo) Lzcnt() bool { + return c.Features&LZCNT != 0 +} + +// Popcnt indicates support of POPCNT instruction +func (c CPUInfo) Popcnt() bool { + return c.Features&POPCNT != 0 +} + +// HTT indicates the processor has Hyperthreading enabled +func (c CPUInfo) HTT() bool { + return c.Features&HTT != 0 +} + +// SSE2Slow indicates that SSE2 may be slow on this processor +func (c CPUInfo) SSE2Slow() bool { + return c.Features&SSE2SLOW != 0 +} + +// SSE3Slow indicates that SSE3 may be slow on this processor +func (c CPUInfo) SSE3Slow() bool { + return c.Features&SSE3SLOW != 0 +} + +// AesNi indicates support of AES-NI instructions +// (Advanced Encryption Standard New Instructions) +func (c CPUInfo) AesNi() bool { + return c.Features&AESNI != 0 +} + +// Clmul indicates support of CLMUL instructions +// (Carry-less Multiplication) +func (c CPUInfo) Clmul() bool { + return c.Features&CLMUL != 0 +} + +// NX indicates support of NX (No-Execute) bit +func (c CPUInfo) NX() bool { + return c.Features&NX != 0 +} + +// SSE4A indicates support of AMD Barcelona microarchitecture SSE4a instructions +func (c CPUInfo) SSE4A() bool { + return c.Features&SSE4A != 0 +} + +// HLE indicates support of Hardware Lock Elision +func (c CPUInfo) HLE() bool { + return c.Features&HLE != 0 +} + +// RTM indicates support of Restricted Transactional Memory +func (c CPUInfo) RTM() bool { + return c.Features&RTM != 0 +} + +// Rdrand indicates support of RDRAND instruction is available +func (c CPUInfo) Rdrand() bool { + return c.Features&RDRAND != 0 +} + +// Rdseed indicates support of RDSEED instruction is available +func (c CPUInfo) Rdseed() bool { + return c.Features&RDSEED != 0 +} + +// ADX indicates support of Intel ADX (Multi-Precision Add-Carry Instruction Extensions) +func (c CPUInfo) ADX() bool { + return c.Features&ADX != 0 +} + +// SHA indicates support of Intel SHA Extensions +func (c CPUInfo) SHA() bool { + return c.Features&SHA != 0 +} + +// AVX512F indicates support of AVX-512 Foundation +func (c CPUInfo) AVX512F() bool { + return c.Features&AVX512F != 0 +} + +// AVX512DQ indicates support of AVX-512 Doubleword and Quadword Instructions +func (c CPUInfo) AVX512DQ() bool { + return c.Features&AVX512DQ != 0 +} + +// AVX512IFMA indicates support of AVX-512 Integer Fused Multiply-Add Instructions +func (c CPUInfo) AVX512IFMA() bool { + return c.Features&AVX512IFMA != 0 +} + +// AVX512PF indicates support of AVX-512 Prefetch Instructions +func (c CPUInfo) AVX512PF() bool { + return c.Features&AVX512PF != 0 +} + +// AVX512ER indicates support of AVX-512 Exponential and Reciprocal Instructions +func (c CPUInfo) AVX512ER() bool { + return c.Features&AVX512ER != 0 +} + +// AVX512CD indicates support of AVX-512 Conflict Detection Instructions +func (c CPUInfo) AVX512CD() bool { + return c.Features&AVX512CD != 0 +} + +// AVX512BW indicates support of AVX-512 Byte and Word Instructions +func (c CPUInfo) AVX512BW() bool { + return c.Features&AVX512BW != 0 +} + +// AVX512VL indicates support of AVX-512 Vector Length Extensions +func (c CPUInfo) AVX512VL() bool { + return c.Features&AVX512VL != 0 +} + +// AVX512VBMI indicates support of AVX-512 Vector Bit Manipulation Instructions +func (c CPUInfo) AVX512VBMI() bool { + return c.Features&AVX512VBMI != 0 +} + +// MPX indicates support of Intel MPX (Memory Protection Extensions) +func (c CPUInfo) MPX() bool { + return c.Features&MPX != 0 +} + +// ERMS indicates support of Enhanced REP MOVSB/STOSB +func (c CPUInfo) ERMS() bool { + return c.Features&ERMS != 0 +} + +func (c CPUInfo) RDTSCP() bool { + return c.Features&RDTSCP != 0 +} + +func (c CPUInfo) CX16() bool { + return c.Features&CX16 != 0 +} + +// Atom indicates an Atom processor +func (c CPUInfo) Atom() bool { + return c.Features&ATOM != 0 +} + +// Intel returns true if vendor is recognized as Intel +func (c CPUInfo) Intel() bool { + return c.VendorID == Intel +} + +// AMD returns true if vendor is recognized as AMD +func (c CPUInfo) AMD() bool { + return c.VendorID == AMD +} + +// Transmeta returns true if vendor is recognized as Transmeta +func (c CPUInfo) Transmeta() bool { + return c.VendorID == Transmeta +} + +// NSC returns true if vendor is recognized as National Semiconductor +func (c CPUInfo) NSC() bool { + return c.VendorID == NSC +} + +// VIA returns true if vendor is recognized as VIA +func (c CPUInfo) VIA() bool { + return c.VendorID == VIA +} + +// RTCounter returns the 64-bit time-stamp counter +// Uses the RDTSCP instruction. The value 0 is returned +// if the CPU does not support the instruction. +func (c CPUInfo) RTCounter() uint64 { + if !c.RDTSCP() { + return 0 + } + a, _, _, d := rdtscpAsm() + return uint64(a) | (uint64(d) << 32) +} + +// Ia32TscAux returns the IA32_TSC_AUX part of the RDTSCP. +// This variable is OS dependent, but on Linux contains information +// about the current cpu/core the code is running on. +// If the RDTSCP instruction isn't supported on the CPU, the value 0 is returned. +func (c CPUInfo) Ia32TscAux() uint32 { + if !c.RDTSCP() { + return 0 + } + _, _, ecx, _ := rdtscpAsm() + return ecx +} + +// LogicalCPU will return the Logical CPU the code is currently executing on. +// This is likely to change when the OS re-schedules the running thread +// to another CPU. +// If the current core cannot be detected, -1 will be returned. +func (c CPUInfo) LogicalCPU() int { + if c.maxFunc < 1 { + return -1 + } + _, ebx, _, _ := cpuid(1) + return int(ebx >> 24) +} + +// VM Will return true if the cpu id indicates we are in +// a virtual machine. This is only a hint, and will very likely +// have many false negatives. +func (c CPUInfo) VM() bool { + switch c.VendorID { + case MSVM, KVM, VMware, XenHVM: + return true + } + return false +} + +// Flags contains detected cpu features and caracteristics +type Flags uint64 + +// String returns a string representation of the detected +// CPU features. +func (f Flags) String() string { + return strings.Join(f.Strings(), ",") +} + +// Strings returns and array of the detected features. +func (f Flags) Strings() []string { + s := support() + r := make([]string, 0, 20) + for i := uint(0); i < 64; i++ { + key := Flags(1 << i) + val := flagNames[key] + if s&key != 0 { + r = append(r, val) + } + } + return r +} + +func maxExtendedFunction() uint32 { + eax, _, _, _ := cpuid(0x80000000) + return eax +} + +func maxFunctionID() uint32 { + a, _, _, _ := cpuid(0) + return a +} + +func brandName() string { + if maxExtendedFunction() >= 0x80000004 { + v := make([]uint32, 0, 48) + for i := uint32(0); i < 3; i++ { + a, b, c, d := cpuid(0x80000002 + i) + v = append(v, a, b, c, d) + } + return strings.Trim(string(valAsString(v...)), " ") + } + return "unknown" +} + +func threadsPerCore() int { + mfi := maxFunctionID() + if mfi < 0x4 || vendorID() != Intel { + return 1 + } + + if mfi < 0xb { + _, b, _, d := cpuid(1) + if (d & (1 << 28)) != 0 { + // v will contain logical core count + v := (b >> 16) & 255 + if v > 1 { + a4, _, _, _ := cpuid(4) + // physical cores + v2 := (a4 >> 26) + 1 + if v2 > 0 { + return int(v) / int(v2) + } + } + } + return 1 + } + _, b, _, _ := cpuidex(0xb, 0) + if b&0xffff == 0 { + return 1 + } + return int(b & 0xffff) +} + +func logicalCores() int { + mfi := maxFunctionID() + switch vendorID() { + case Intel: + // Use this on old Intel processors + if mfi < 0xb { + if mfi < 1 { + return 0 + } + // CPUID.1:EBX[23:16] represents the maximum number of addressable IDs (initial APIC ID) + // that can be assigned to logical processors in a physical package. + // The value may not be the same as the number of logical processors that are present in the hardware of a physical package. + _, ebx, _, _ := cpuid(1) + logical := (ebx >> 16) & 0xff + return int(logical) + } + _, b, _, _ := cpuidex(0xb, 1) + return int(b & 0xffff) + case AMD: + _, b, _, _ := cpuid(1) + return int((b >> 16) & 0xff) + default: + return 0 + } +} + +func familyModel() (int, int) { + if maxFunctionID() < 0x1 { + return 0, 0 + } + eax, _, _, _ := cpuid(1) + family := ((eax >> 8) & 0xf) + ((eax >> 20) & 0xff) + model := ((eax >> 4) & 0xf) + ((eax >> 12) & 0xf0) + return int(family), int(model) +} + +func physicalCores() int { + switch vendorID() { + case Intel: + return logicalCores() / threadsPerCore() + case AMD: + if maxExtendedFunction() >= 0x80000008 { + _, _, c, _ := cpuid(0x80000008) + return int(c&0xff) + 1 + } + } + return 0 +} + +// Except from http://en.wikipedia.org/wiki/CPUID#EAX.3D0:_Get_vendor_ID +var vendorMapping = map[string]Vendor{ + "AMDisbetter!": AMD, + "AuthenticAMD": AMD, + "CentaurHauls": VIA, + "GenuineIntel": Intel, + "TransmetaCPU": Transmeta, + "GenuineTMx86": Transmeta, + "Geode by NSC": NSC, + "VIA VIA VIA ": VIA, + "KVMKVMKVMKVM": KVM, + "Microsoft Hv": MSVM, + "VMwareVMware": VMware, + "XenVMMXenVMM": XenHVM, +} + +func vendorID() Vendor { + _, b, c, d := cpuid(0) + v := valAsString(b, d, c) + vend, ok := vendorMapping[string(v)] + if !ok { + return Other + } + return vend +} + +func cacheLine() int { + if maxFunctionID() < 0x1 { + return 0 + } + + _, ebx, _, _ := cpuid(1) + cache := (ebx & 0xff00) >> 5 // cflush size + if cache == 0 && maxExtendedFunction() >= 0x80000006 { + _, _, ecx, _ := cpuid(0x80000006) + cache = ecx & 0xff // cacheline size + } + // TODO: Read from Cache and TLB Information + return int(cache) +} + +func (c *CPUInfo) cacheSize() { + c.Cache.L1D = -1 + c.Cache.L1I = -1 + c.Cache.L2 = -1 + c.Cache.L3 = -1 + vendor := vendorID() + switch vendor { + case Intel: + if maxFunctionID() < 4 { + return + } + for i := uint32(0); ; i++ { + eax, ebx, ecx, _ := cpuidex(4, i) + cacheType := eax & 15 + if cacheType == 0 { + break + } + cacheLevel := (eax >> 5) & 7 + coherency := int(ebx&0xfff) + 1 + partitions := int((ebx>>12)&0x3ff) + 1 + associativity := int((ebx>>22)&0x3ff) + 1 + sets := int(ecx) + 1 + size := associativity * partitions * coherency * sets + switch cacheLevel { + case 1: + if cacheType == 1 { + // 1 = Data Cache + c.Cache.L1D = size + } else if cacheType == 2 { + // 2 = Instruction Cache + c.Cache.L1I = size + } else { + if c.Cache.L1D < 0 { + c.Cache.L1I = size + } + if c.Cache.L1I < 0 { + c.Cache.L1I = size + } + } + case 2: + c.Cache.L2 = size + case 3: + c.Cache.L3 = size + } + } + case AMD: + // Untested. + if maxExtendedFunction() < 0x80000005 { + return + } + _, _, ecx, edx := cpuid(0x80000005) + c.Cache.L1D = int(((ecx >> 24) & 0xFF) * 1024) + c.Cache.L1I = int(((edx >> 24) & 0xFF) * 1024) + + if maxExtendedFunction() < 0x80000006 { + return + } + _, _, ecx, _ = cpuid(0x80000006) + c.Cache.L2 = int(((ecx >> 16) & 0xFFFF) * 1024) + } + + return +} + +type SGXSupport struct { + Available bool + SGX1Supported bool + SGX2Supported bool + MaxEnclaveSizeNot64 int64 + MaxEnclaveSize64 int64 +} + +func sgx(available bool) (rval SGXSupport) { + rval.Available = available + + if !available { + return + } + + a, _, _, d := cpuidex(0x12, 0) + rval.SGX1Supported = a&0x01 != 0 + rval.SGX2Supported = a&0x02 != 0 + rval.MaxEnclaveSizeNot64 = 1 << (d & 0xFF) // pow 2 + rval.MaxEnclaveSize64 = 1 << ((d >> 8) & 0xFF) // pow 2 + + return +} + +func support() Flags { + mfi := maxFunctionID() + vend := vendorID() + if mfi < 0x1 { + return 0 + } + rval := uint64(0) + _, _, c, d := cpuid(1) + if (d & (1 << 15)) != 0 { + rval |= CMOV + } + if (d & (1 << 23)) != 0 { + rval |= MMX + } + if (d & (1 << 25)) != 0 { + rval |= MMXEXT + } + if (d & (1 << 25)) != 0 { + rval |= SSE + } + if (d & (1 << 26)) != 0 { + rval |= SSE2 + } + if (c & 1) != 0 { + rval |= SSE3 + } + if (c & 0x00000200) != 0 { + rval |= SSSE3 + } + if (c & 0x00080000) != 0 { + rval |= SSE4 + } + if (c & 0x00100000) != 0 { + rval |= SSE42 + } + if (c & (1 << 25)) != 0 { + rval |= AESNI + } + if (c & (1 << 1)) != 0 { + rval |= CLMUL + } + if c&(1<<23) != 0 { + rval |= POPCNT + } + if c&(1<<30) != 0 { + rval |= RDRAND + } + if c&(1<<29) != 0 { + rval |= F16C + } + if c&(1<<13) != 0 { + rval |= CX16 + } + if vend == Intel && (d&(1<<28)) != 0 && mfi >= 4 { + if threadsPerCore() > 1 { + rval |= HTT + } + } + + // Check XGETBV, OXSAVE and AVX bits + if c&(1<<26) != 0 && c&(1<<27) != 0 && c&(1<<28) != 0 { + // Check for OS support + eax, _ := xgetbv(0) + if (eax & 0x6) == 0x6 { + rval |= AVX + if (c & 0x00001000) != 0 { + rval |= FMA3 + } + } + } + + // Check AVX2, AVX2 requires OS support, but BMI1/2 don't. + if mfi >= 7 { + _, ebx, ecx, _ := cpuidex(7, 0) + if (rval&AVX) != 0 && (ebx&0x00000020) != 0 { + rval |= AVX2 + } + if (ebx & 0x00000008) != 0 { + rval |= BMI1 + if (ebx & 0x00000100) != 0 { + rval |= BMI2 + } + } + if ebx&(1<<2) != 0 { + rval |= SGX + } + if ebx&(1<<4) != 0 { + rval |= HLE + } + if ebx&(1<<9) != 0 { + rval |= ERMS + } + if ebx&(1<<11) != 0 { + rval |= RTM + } + if ebx&(1<<14) != 0 { + rval |= MPX + } + if ebx&(1<<18) != 0 { + rval |= RDSEED + } + if ebx&(1<<19) != 0 { + rval |= ADX + } + if ebx&(1<<29) != 0 { + rval |= SHA + } + + // Only detect AVX-512 features if XGETBV is supported + if c&((1<<26)|(1<<27)) == (1<<26)|(1<<27) { + // Check for OS support + eax, _ := xgetbv(0) + + // Verify that XCR0[7:5] = ‘111b’ (OPMASK state, upper 256-bit of ZMM0-ZMM15 and + // ZMM16-ZMM31 state are enabled by OS) + /// and that XCR0[2:1] = ‘11b’ (XMM state and YMM state are enabled by OS). + if (eax>>5)&7 == 7 && (eax>>1)&3 == 3 { + if ebx&(1<<16) != 0 { + rval |= AVX512F + } + if ebx&(1<<17) != 0 { + rval |= AVX512DQ + } + if ebx&(1<<21) != 0 { + rval |= AVX512IFMA + } + if ebx&(1<<26) != 0 { + rval |= AVX512PF + } + if ebx&(1<<27) != 0 { + rval |= AVX512ER + } + if ebx&(1<<28) != 0 { + rval |= AVX512CD + } + if ebx&(1<<30) != 0 { + rval |= AVX512BW + } + if ebx&(1<<31) != 0 { + rval |= AVX512VL + } + // ecx + if ecx&(1<<1) != 0 { + rval |= AVX512VBMI + } + } + } + } + + if maxExtendedFunction() >= 0x80000001 { + _, _, c, d := cpuid(0x80000001) + if (c & (1 << 5)) != 0 { + rval |= LZCNT + rval |= POPCNT + } + if (d & (1 << 31)) != 0 { + rval |= AMD3DNOW + } + if (d & (1 << 30)) != 0 { + rval |= AMD3DNOWEXT + } + if (d & (1 << 23)) != 0 { + rval |= MMX + } + if (d & (1 << 22)) != 0 { + rval |= MMXEXT + } + if (c & (1 << 6)) != 0 { + rval |= SSE4A + } + if d&(1<<20) != 0 { + rval |= NX + } + if d&(1<<27) != 0 { + rval |= RDTSCP + } + + /* Allow for selectively disabling SSE2 functions on AMD processors + with SSE2 support but not SSE4a. This includes Athlon64, some + Opteron, and some Sempron processors. MMX, SSE, or 3DNow! are faster + than SSE2 often enough to utilize this special-case flag. + AV_CPU_FLAG_SSE2 and AV_CPU_FLAG_SSE2SLOW are both set in this case + so that SSE2 is used unless explicitly disabled by checking + AV_CPU_FLAG_SSE2SLOW. */ + if vendorID() != Intel && + rval&SSE2 != 0 && (c&0x00000040) == 0 { + rval |= SSE2SLOW + } + + /* XOP and FMA4 use the AVX instruction coding scheme, so they can't be + * used unless the OS has AVX support. */ + if (rval & AVX) != 0 { + if (c & 0x00000800) != 0 { + rval |= XOP + } + if (c & 0x00010000) != 0 { + rval |= FMA4 + } + } + + if vendorID() == Intel { + family, model := familyModel() + if family == 6 && (model == 9 || model == 13 || model == 14) { + /* 6/9 (pentium-m "banias"), 6/13 (pentium-m "dothan"), and + * 6/14 (core1 "yonah") theoretically support sse2, but it's + * usually slower than mmx. */ + if (rval & SSE2) != 0 { + rval |= SSE2SLOW + } + if (rval & SSE3) != 0 { + rval |= SSE3SLOW + } + } + /* The Atom processor has SSSE3 support, which is useful in many cases, + * but sometimes the SSSE3 version is slower than the SSE2 equivalent + * on the Atom, but is generally faster on other processors supporting + * SSSE3. This flag allows for selectively disabling certain SSSE3 + * functions on the Atom. */ + if family == 6 && model == 28 { + rval |= ATOM + } + } + } + return Flags(rval) +} + +func valAsString(values ...uint32) []byte { + r := make([]byte, 4*len(values)) + for i, v := range values { + dst := r[i*4:] + dst[0] = byte(v & 0xff) + dst[1] = byte((v >> 8) & 0xff) + dst[2] = byte((v >> 16) & 0xff) + dst[3] = byte((v >> 24) & 0xff) + switch { + case dst[0] == 0: + return r[:i*4] + case dst[1] == 0: + return r[:i*4+1] + case dst[2] == 0: + return r[:i*4+2] + case dst[3] == 0: + return r[:i*4+3] + } + } + return r +} diff --git a/vendor/github.com/klauspost/cpuid/cpuid_386.s b/vendor/github.com/klauspost/cpuid/cpuid_386.s new file mode 100644 index 0000000..4d73171 --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/cpuid_386.s @@ -0,0 +1,42 @@ +// Copyright (c) 2015 Klaus Post, released under MIT License. See LICENSE file. + +// +build 386,!gccgo + +// func asmCpuid(op uint32) (eax, ebx, ecx, edx uint32) +TEXT ·asmCpuid(SB), 7, $0 + XORL CX, CX + MOVL op+0(FP), AX + CPUID + MOVL AX, eax+4(FP) + MOVL BX, ebx+8(FP) + MOVL CX, ecx+12(FP) + MOVL DX, edx+16(FP) + RET + +// func asmCpuidex(op, op2 uint32) (eax, ebx, ecx, edx uint32) +TEXT ·asmCpuidex(SB), 7, $0 + MOVL op+0(FP), AX + MOVL op2+4(FP), CX + CPUID + MOVL AX, eax+8(FP) + MOVL BX, ebx+12(FP) + MOVL CX, ecx+16(FP) + MOVL DX, edx+20(FP) + RET + +// func xgetbv(index uint32) (eax, edx uint32) +TEXT ·asmXgetbv(SB), 7, $0 + MOVL index+0(FP), CX + BYTE $0x0f; BYTE $0x01; BYTE $0xd0 // XGETBV + MOVL AX, eax+4(FP) + MOVL DX, edx+8(FP) + RET + +// func asmRdtscpAsm() (eax, ebx, ecx, edx uint32) +TEXT ·asmRdtscpAsm(SB), 7, $0 + BYTE $0x0F; BYTE $0x01; BYTE $0xF9 // RDTSCP + MOVL AX, eax+0(FP) + MOVL BX, ebx+4(FP) + MOVL CX, ecx+8(FP) + MOVL DX, edx+12(FP) + RET diff --git a/vendor/github.com/klauspost/cpuid/cpuid_amd64.s b/vendor/github.com/klauspost/cpuid/cpuid_amd64.s new file mode 100644 index 0000000..3c1d60e --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/cpuid_amd64.s @@ -0,0 +1,42 @@ +// Copyright (c) 2015 Klaus Post, released under MIT License. See LICENSE file. + +//+build amd64,!gccgo + +// func asmCpuid(op uint32) (eax, ebx, ecx, edx uint32) +TEXT ·asmCpuid(SB), 7, $0 + XORQ CX, CX + MOVL op+0(FP), AX + CPUID + MOVL AX, eax+8(FP) + MOVL BX, ebx+12(FP) + MOVL CX, ecx+16(FP) + MOVL DX, edx+20(FP) + RET + +// func asmCpuidex(op, op2 uint32) (eax, ebx, ecx, edx uint32) +TEXT ·asmCpuidex(SB), 7, $0 + MOVL op+0(FP), AX + MOVL op2+4(FP), CX + CPUID + MOVL AX, eax+8(FP) + MOVL BX, ebx+12(FP) + MOVL CX, ecx+16(FP) + MOVL DX, edx+20(FP) + RET + +// func asmXgetbv(index uint32) (eax, edx uint32) +TEXT ·asmXgetbv(SB), 7, $0 + MOVL index+0(FP), CX + BYTE $0x0f; BYTE $0x01; BYTE $0xd0 // XGETBV + MOVL AX, eax+8(FP) + MOVL DX, edx+12(FP) + RET + +// func asmRdtscpAsm() (eax, ebx, ecx, edx uint32) +TEXT ·asmRdtscpAsm(SB), 7, $0 + BYTE $0x0F; BYTE $0x01; BYTE $0xF9 // RDTSCP + MOVL AX, eax+0(FP) + MOVL BX, ebx+4(FP) + MOVL CX, ecx+8(FP) + MOVL DX, edx+12(FP) + RET diff --git a/vendor/github.com/klauspost/cpuid/detect_intel.go b/vendor/github.com/klauspost/cpuid/detect_intel.go new file mode 100644 index 0000000..a5f04dd --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/detect_intel.go @@ -0,0 +1,17 @@ +// Copyright (c) 2015 Klaus Post, released under MIT License. See LICENSE file. + +// +build 386,!gccgo amd64,!gccgo + +package cpuid + +func asmCpuid(op uint32) (eax, ebx, ecx, edx uint32) +func asmCpuidex(op, op2 uint32) (eax, ebx, ecx, edx uint32) +func asmXgetbv(index uint32) (eax, edx uint32) +func asmRdtscpAsm() (eax, ebx, ecx, edx uint32) + +func initCPU() { + cpuid = asmCpuid + cpuidex = asmCpuidex + xgetbv = asmXgetbv + rdtscpAsm = asmRdtscpAsm +} diff --git a/vendor/github.com/klauspost/cpuid/detect_ref.go b/vendor/github.com/klauspost/cpuid/detect_ref.go new file mode 100644 index 0000000..909c5d9 --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/detect_ref.go @@ -0,0 +1,23 @@ +// Copyright (c) 2015 Klaus Post, released under MIT License. See LICENSE file. + +// +build !amd64,!386 gccgo + +package cpuid + +func initCPU() { + cpuid = func(op uint32) (eax, ebx, ecx, edx uint32) { + return 0, 0, 0, 0 + } + + cpuidex = func(op, op2 uint32) (eax, ebx, ecx, edx uint32) { + return 0, 0, 0, 0 + } + + xgetbv = func(index uint32) (eax, edx uint32) { + return 0, 0 + } + + rdtscpAsm = func() (eax, ebx, ecx, edx uint32) { + return 0, 0, 0, 0 + } +} diff --git a/vendor/github.com/klauspost/cpuid/generate.go b/vendor/github.com/klauspost/cpuid/generate.go new file mode 100644 index 0000000..c060b81 --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/generate.go @@ -0,0 +1,3 @@ +package cpuid + +//go:generate go run private-gen.go diff --git a/vendor/github.com/klauspost/cpuid/private-gen.go b/vendor/github.com/klauspost/cpuid/private-gen.go new file mode 100644 index 0000000..437333d --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/private-gen.go @@ -0,0 +1,476 @@ +// +build ignore + +package main + +import ( + "bytes" + "fmt" + "go/ast" + "go/parser" + "go/printer" + "go/token" + "io" + "io/ioutil" + "log" + "os" + "reflect" + "strings" + "unicode" + "unicode/utf8" +) + +var inFiles = []string{"cpuid.go", "cpuid_test.go"} +var copyFiles = []string{"cpuid_amd64.s", "cpuid_386.s", "detect_ref.go", "detect_intel.go"} +var fileSet = token.NewFileSet() +var reWrites = []rewrite{ + initRewrite("CPUInfo -> cpuInfo"), + initRewrite("Vendor -> vendor"), + initRewrite("Flags -> flags"), + initRewrite("Detect -> detect"), + initRewrite("CPU -> cpu"), +} +var excludeNames = map[string]bool{"string": true, "join": true, "trim": true, + // cpuid_test.go + "t": true, "println": true, "logf": true, "log": true, "fatalf": true, "fatal": true, +} + +var excludePrefixes = []string{"test", "benchmark"} + +func main() { + Package := "private" + parserMode := parser.ParseComments + exported := make(map[string]rewrite) + for _, file := range inFiles { + in, err := os.Open(file) + if err != nil { + log.Fatalf("opening input", err) + } + + src, err := ioutil.ReadAll(in) + if err != nil { + log.Fatalf("reading input", err) + } + + astfile, err := parser.ParseFile(fileSet, file, src, parserMode) + if err != nil { + log.Fatalf("parsing input", err) + } + + for _, rw := range reWrites { + astfile = rw(astfile) + } + + // Inspect the AST and print all identifiers and literals. + var startDecl token.Pos + var endDecl token.Pos + ast.Inspect(astfile, func(n ast.Node) bool { + var s string + switch x := n.(type) { + case *ast.Ident: + if x.IsExported() { + t := strings.ToLower(x.Name) + for _, pre := range excludePrefixes { + if strings.HasPrefix(t, pre) { + return true + } + } + if excludeNames[t] != true { + //if x.Pos() > startDecl && x.Pos() < endDecl { + exported[x.Name] = initRewrite(x.Name + " -> " + t) + } + } + + case *ast.GenDecl: + if x.Tok == token.CONST && x.Lparen > 0 { + startDecl = x.Lparen + endDecl = x.Rparen + // fmt.Printf("Decl:%s -> %s\n", fileSet.Position(startDecl), fileSet.Position(endDecl)) + } + } + if s != "" { + fmt.Printf("%s:\t%s\n", fileSet.Position(n.Pos()), s) + } + return true + }) + + for _, rw := range exported { + astfile = rw(astfile) + } + + var buf bytes.Buffer + + printer.Fprint(&buf, fileSet, astfile) + + // Remove package documentation and insert information + s := buf.String() + ind := strings.Index(buf.String(), "\npackage cpuid") + s = s[ind:] + s = "// Generated, DO NOT EDIT,\n" + + "// but copy it to your own project and rename the package.\n" + + "// See more at http://github.com/klauspost/cpuid\n" + + s + + outputName := Package + string(os.PathSeparator) + file + + err = ioutil.WriteFile(outputName, []byte(s), 0644) + if err != nil { + log.Fatalf("writing output: %s", err) + } + log.Println("Generated", outputName) + } + + for _, file := range copyFiles { + dst := "" + if strings.HasPrefix(file, "cpuid") { + dst = Package + string(os.PathSeparator) + file + } else { + dst = Package + string(os.PathSeparator) + "cpuid_" + file + } + err := copyFile(file, dst) + if err != nil { + log.Fatalf("copying file: %s", err) + } + log.Println("Copied", dst) + } +} + +// CopyFile copies a file from src to dst. If src and dst files exist, and are +// the same, then return success. Copy the file contents from src to dst. +func copyFile(src, dst string) (err error) { + sfi, err := os.Stat(src) + if err != nil { + return + } + if !sfi.Mode().IsRegular() { + // cannot copy non-regular files (e.g., directories, + // symlinks, devices, etc.) + return fmt.Errorf("CopyFile: non-regular source file %s (%q)", sfi.Name(), sfi.Mode().String()) + } + dfi, err := os.Stat(dst) + if err != nil { + if !os.IsNotExist(err) { + return + } + } else { + if !(dfi.Mode().IsRegular()) { + return fmt.Errorf("CopyFile: non-regular destination file %s (%q)", dfi.Name(), dfi.Mode().String()) + } + if os.SameFile(sfi, dfi) { + return + } + } + err = copyFileContents(src, dst) + return +} + +// copyFileContents copies the contents of the file named src to the file named +// by dst. The file will be created if it does not already exist. If the +// destination file exists, all it's contents will be replaced by the contents +// of the source file. +func copyFileContents(src, dst string) (err error) { + in, err := os.Open(src) + if err != nil { + return + } + defer in.Close() + out, err := os.Create(dst) + if err != nil { + return + } + defer func() { + cerr := out.Close() + if err == nil { + err = cerr + } + }() + if _, err = io.Copy(out, in); err != nil { + return + } + err = out.Sync() + return +} + +type rewrite func(*ast.File) *ast.File + +// Mostly copied from gofmt +func initRewrite(rewriteRule string) rewrite { + f := strings.Split(rewriteRule, "->") + if len(f) != 2 { + fmt.Fprintf(os.Stderr, "rewrite rule must be of the form 'pattern -> replacement'\n") + os.Exit(2) + } + pattern := parseExpr(f[0], "pattern") + replace := parseExpr(f[1], "replacement") + return func(p *ast.File) *ast.File { return rewriteFile(pattern, replace, p) } +} + +// parseExpr parses s as an expression. +// It might make sense to expand this to allow statement patterns, +// but there are problems with preserving formatting and also +// with what a wildcard for a statement looks like. +func parseExpr(s, what string) ast.Expr { + x, err := parser.ParseExpr(s) + if err != nil { + fmt.Fprintf(os.Stderr, "parsing %s %s at %s\n", what, s, err) + os.Exit(2) + } + return x +} + +// Keep this function for debugging. +/* +func dump(msg string, val reflect.Value) { + fmt.Printf("%s:\n", msg) + ast.Print(fileSet, val.Interface()) + fmt.Println() +} +*/ + +// rewriteFile applies the rewrite rule 'pattern -> replace' to an entire file. +func rewriteFile(pattern, replace ast.Expr, p *ast.File) *ast.File { + cmap := ast.NewCommentMap(fileSet, p, p.Comments) + m := make(map[string]reflect.Value) + pat := reflect.ValueOf(pattern) + repl := reflect.ValueOf(replace) + + var rewriteVal func(val reflect.Value) reflect.Value + rewriteVal = func(val reflect.Value) reflect.Value { + // don't bother if val is invalid to start with + if !val.IsValid() { + return reflect.Value{} + } + for k := range m { + delete(m, k) + } + val = apply(rewriteVal, val) + if match(m, pat, val) { + val = subst(m, repl, reflect.ValueOf(val.Interface().(ast.Node).Pos())) + } + return val + } + + r := apply(rewriteVal, reflect.ValueOf(p)).Interface().(*ast.File) + r.Comments = cmap.Filter(r).Comments() // recreate comments list + return r +} + +// set is a wrapper for x.Set(y); it protects the caller from panics if x cannot be changed to y. +func set(x, y reflect.Value) { + // don't bother if x cannot be set or y is invalid + if !x.CanSet() || !y.IsValid() { + return + } + defer func() { + if x := recover(); x != nil { + if s, ok := x.(string); ok && + (strings.Contains(s, "type mismatch") || strings.Contains(s, "not assignable")) { + // x cannot be set to y - ignore this rewrite + return + } + panic(x) + } + }() + x.Set(y) +} + +// Values/types for special cases. +var ( + objectPtrNil = reflect.ValueOf((*ast.Object)(nil)) + scopePtrNil = reflect.ValueOf((*ast.Scope)(nil)) + + identType = reflect.TypeOf((*ast.Ident)(nil)) + objectPtrType = reflect.TypeOf((*ast.Object)(nil)) + positionType = reflect.TypeOf(token.NoPos) + callExprType = reflect.TypeOf((*ast.CallExpr)(nil)) + scopePtrType = reflect.TypeOf((*ast.Scope)(nil)) +) + +// apply replaces each AST field x in val with f(x), returning val. +// To avoid extra conversions, f operates on the reflect.Value form. +func apply(f func(reflect.Value) reflect.Value, val reflect.Value) reflect.Value { + if !val.IsValid() { + return reflect.Value{} + } + + // *ast.Objects introduce cycles and are likely incorrect after + // rewrite; don't follow them but replace with nil instead + if val.Type() == objectPtrType { + return objectPtrNil + } + + // similarly for scopes: they are likely incorrect after a rewrite; + // replace them with nil + if val.Type() == scopePtrType { + return scopePtrNil + } + + switch v := reflect.Indirect(val); v.Kind() { + case reflect.Slice: + for i := 0; i < v.Len(); i++ { + e := v.Index(i) + set(e, f(e)) + } + case reflect.Struct: + for i := 0; i < v.NumField(); i++ { + e := v.Field(i) + set(e, f(e)) + } + case reflect.Interface: + e := v.Elem() + set(v, f(e)) + } + return val +} + +func isWildcard(s string) bool { + rune, size := utf8.DecodeRuneInString(s) + return size == len(s) && unicode.IsLower(rune) +} + +// match returns true if pattern matches val, +// recording wildcard submatches in m. +// If m == nil, match checks whether pattern == val. +func match(m map[string]reflect.Value, pattern, val reflect.Value) bool { + // Wildcard matches any expression. If it appears multiple + // times in the pattern, it must match the same expression + // each time. + if m != nil && pattern.IsValid() && pattern.Type() == identType { + name := pattern.Interface().(*ast.Ident).Name + if isWildcard(name) && val.IsValid() { + // wildcards only match valid (non-nil) expressions. + if _, ok := val.Interface().(ast.Expr); ok && !val.IsNil() { + if old, ok := m[name]; ok { + return match(nil, old, val) + } + m[name] = val + return true + } + } + } + + // Otherwise, pattern and val must match recursively. + if !pattern.IsValid() || !val.IsValid() { + return !pattern.IsValid() && !val.IsValid() + } + if pattern.Type() != val.Type() { + return false + } + + // Special cases. + switch pattern.Type() { + case identType: + // For identifiers, only the names need to match + // (and none of the other *ast.Object information). + // This is a common case, handle it all here instead + // of recursing down any further via reflection. + p := pattern.Interface().(*ast.Ident) + v := val.Interface().(*ast.Ident) + return p == nil && v == nil || p != nil && v != nil && p.Name == v.Name + case objectPtrType, positionType: + // object pointers and token positions always match + return true + case callExprType: + // For calls, the Ellipsis fields (token.Position) must + // match since that is how f(x) and f(x...) are different. + // Check them here but fall through for the remaining fields. + p := pattern.Interface().(*ast.CallExpr) + v := val.Interface().(*ast.CallExpr) + if p.Ellipsis.IsValid() != v.Ellipsis.IsValid() { + return false + } + } + + p := reflect.Indirect(pattern) + v := reflect.Indirect(val) + if !p.IsValid() || !v.IsValid() { + return !p.IsValid() && !v.IsValid() + } + + switch p.Kind() { + case reflect.Slice: + if p.Len() != v.Len() { + return false + } + for i := 0; i < p.Len(); i++ { + if !match(m, p.Index(i), v.Index(i)) { + return false + } + } + return true + + case reflect.Struct: + for i := 0; i < p.NumField(); i++ { + if !match(m, p.Field(i), v.Field(i)) { + return false + } + } + return true + + case reflect.Interface: + return match(m, p.Elem(), v.Elem()) + } + + // Handle token integers, etc. + return p.Interface() == v.Interface() +} + +// subst returns a copy of pattern with values from m substituted in place +// of wildcards and pos used as the position of tokens from the pattern. +// if m == nil, subst returns a copy of pattern and doesn't change the line +// number information. +func subst(m map[string]reflect.Value, pattern reflect.Value, pos reflect.Value) reflect.Value { + if !pattern.IsValid() { + return reflect.Value{} + } + + // Wildcard gets replaced with map value. + if m != nil && pattern.Type() == identType { + name := pattern.Interface().(*ast.Ident).Name + if isWildcard(name) { + if old, ok := m[name]; ok { + return subst(nil, old, reflect.Value{}) + } + } + } + + if pos.IsValid() && pattern.Type() == positionType { + // use new position only if old position was valid in the first place + if old := pattern.Interface().(token.Pos); !old.IsValid() { + return pattern + } + return pos + } + + // Otherwise copy. + switch p := pattern; p.Kind() { + case reflect.Slice: + v := reflect.MakeSlice(p.Type(), p.Len(), p.Len()) + for i := 0; i < p.Len(); i++ { + v.Index(i).Set(subst(m, p.Index(i), pos)) + } + return v + + case reflect.Struct: + v := reflect.New(p.Type()).Elem() + for i := 0; i < p.NumField(); i++ { + v.Field(i).Set(subst(m, p.Field(i), pos)) + } + return v + + case reflect.Ptr: + v := reflect.New(p.Type()).Elem() + if elem := p.Elem(); elem.IsValid() { + v.Set(subst(m, elem, pos).Addr()) + } + return v + + case reflect.Interface: + v := reflect.New(p.Type()).Elem() + if elem := p.Elem(); elem.IsValid() { + v.Set(subst(m, elem, pos)) + } + return v + } + + return pattern +} diff --git a/vendor/github.com/klauspost/crc32/.gitignore b/vendor/github.com/klauspost/crc32/.gitignore new file mode 100644 index 0000000..daf913b --- /dev/null +++ b/vendor/github.com/klauspost/crc32/.gitignore @@ -0,0 +1,24 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof diff --git a/vendor/github.com/klauspost/crc32/.travis.yml b/vendor/github.com/klauspost/crc32/.travis.yml new file mode 100644 index 0000000..de64ae4 --- /dev/null +++ b/vendor/github.com/klauspost/crc32/.travis.yml @@ -0,0 +1,13 @@ +language: go + +go: + - 1.3 + - 1.4 + - 1.5 + - 1.6 + - 1.7 + - tip + +script: + - go test -v . + - go test -v -race . diff --git a/vendor/github.com/klauspost/crc32/LICENSE b/vendor/github.com/klauspost/crc32/LICENSE new file mode 100644 index 0000000..4fd5963 --- /dev/null +++ b/vendor/github.com/klauspost/crc32/LICENSE @@ -0,0 +1,28 @@ +Copyright (c) 2012 The Go Authors. All rights reserved. +Copyright (c) 2015 Klaus Post + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/klauspost/crc32/README.md b/vendor/github.com/klauspost/crc32/README.md new file mode 100644 index 0000000..029625d --- /dev/null +++ b/vendor/github.com/klauspost/crc32/README.md @@ -0,0 +1,87 @@ +# crc32 +CRC32 hash with x64 optimizations + +This package is a drop-in replacement for the standard library `hash/crc32` package, that features SSE 4.2 optimizations on x64 platforms, for a 10x speedup. + +[![Build Status](https://travis-ci.org/klauspost/crc32.svg?branch=master)](https://travis-ci.org/klauspost/crc32) + +# usage + +Install using `go get github.com/klauspost/crc32`. This library is based on Go 1.5 code and requires Go 1.3 or newer. + +Replace `import "hash/crc32"` with `import "github.com/klauspost/crc32"` and you are good to go. + +# changes +* Oct 20, 2016: Changes have been merged to upstream Go. Package updated to match. +* Dec 4, 2015: Uses the "slice-by-8" trick more extensively, which gives a 1.5 to 2.5x speedup if assembler is unavailable. + + +# performance + +For *Go 1.7* performance is equivalent to the standard library. So if you use this package for Go 1.7 you can switch back. + + +For IEEE tables (the most common), there is approximately a factor 10 speedup with "CLMUL" (Carryless multiplication) instruction: +``` +benchmark old ns/op new ns/op delta +BenchmarkCrc32KB 99955 10258 -89.74% + +benchmark old MB/s new MB/s speedup +BenchmarkCrc32KB 327.83 3194.20 9.74x +``` + +For other tables and "CLMUL" capable machines the performance is the same as the standard library. + +Here are some detailed benchmarks, comparing to go 1.5 standard library with and without assembler enabled. + +``` +Std: Standard Go 1.5 library +Crc: Indicates IEEE type CRC. +40B: Size of each slice encoded. +NoAsm: Assembler was disabled (ie. not an AMD64 or SSE 4.2+ capable machine). +Castagnoli: Castagnoli CRC type. + +BenchmarkStdCrc40B-4 10000000 158 ns/op 252.88 MB/s +BenchmarkCrc40BNoAsm-4 20000000 105 ns/op 377.38 MB/s (slice8) +BenchmarkCrc40B-4 20000000 105 ns/op 378.77 MB/s (slice8) + +BenchmarkStdCrc1KB-4 500000 3604 ns/op 284.10 MB/s +BenchmarkCrc1KBNoAsm-4 1000000 1463 ns/op 699.79 MB/s (slice8) +BenchmarkCrc1KB-4 3000000 396 ns/op 2583.69 MB/s (asm) + +BenchmarkStdCrc8KB-4 200000 11417 ns/op 717.48 MB/s (slice8) +BenchmarkCrc8KBNoAsm-4 200000 11317 ns/op 723.85 MB/s (slice8) +BenchmarkCrc8KB-4 500000 2919 ns/op 2805.73 MB/s (asm) + +BenchmarkStdCrc32KB-4 30000 45749 ns/op 716.24 MB/s (slice8) +BenchmarkCrc32KBNoAsm-4 30000 45109 ns/op 726.42 MB/s (slice8) +BenchmarkCrc32KB-4 100000 11497 ns/op 2850.09 MB/s (asm) + +BenchmarkStdNoAsmCastagnol40B-4 10000000 161 ns/op 246.94 MB/s +BenchmarkStdCastagnoli40B-4 50000000 28.4 ns/op 1410.69 MB/s (asm) +BenchmarkCastagnoli40BNoAsm-4 20000000 100 ns/op 398.01 MB/s (slice8) +BenchmarkCastagnoli40B-4 50000000 28.2 ns/op 1419.54 MB/s (asm) + +BenchmarkStdNoAsmCastagnoli1KB-4 500000 3622 ns/op 282.67 MB/s +BenchmarkStdCastagnoli1KB-4 10000000 144 ns/op 7099.78 MB/s (asm) +BenchmarkCastagnoli1KBNoAsm-4 1000000 1475 ns/op 694.14 MB/s (slice8) +BenchmarkCastagnoli1KB-4 10000000 146 ns/op 6993.35 MB/s (asm) + +BenchmarkStdNoAsmCastagnoli8KB-4 50000 28781 ns/op 284.63 MB/s +BenchmarkStdCastagnoli8KB-4 1000000 1029 ns/op 7957.89 MB/s (asm) +BenchmarkCastagnoli8KBNoAsm-4 200000 11410 ns/op 717.94 MB/s (slice8) +BenchmarkCastagnoli8KB-4 1000000 1000 ns/op 8188.71 MB/s (asm) + +BenchmarkStdNoAsmCastagnoli32KB-4 10000 115426 ns/op 283.89 MB/s +BenchmarkStdCastagnoli32KB-4 300000 4065 ns/op 8059.13 MB/s (asm) +BenchmarkCastagnoli32KBNoAsm-4 30000 45171 ns/op 725.41 MB/s (slice8) +BenchmarkCastagnoli32KB-4 500000 4077 ns/op 8035.89 MB/s (asm) +``` + +The IEEE assembler optimizations has been submitted and will be part of the Go 1.6 standard library. + +However, the improved use of slice-by-8 has not, but will probably be submitted for Go 1.7. + +# license + +Standard Go license. Changes are Copyright (c) 2015 Klaus Post under same conditions. diff --git a/vendor/github.com/klauspost/crc32/crc32.go b/vendor/github.com/klauspost/crc32/crc32.go new file mode 100644 index 0000000..8aa91b1 --- /dev/null +++ b/vendor/github.com/klauspost/crc32/crc32.go @@ -0,0 +1,207 @@ +// 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 crc32 implements the 32-bit cyclic redundancy check, or CRC-32, +// checksum. See http://en.wikipedia.org/wiki/Cyclic_redundancy_check for +// information. +// +// Polynomials are represented in LSB-first form also known as reversed representation. +// +// See http://en.wikipedia.org/wiki/Mathematics_of_cyclic_redundancy_checks#Reversed_representations_and_reciprocal_polynomials +// for information. +package crc32 + +import ( + "hash" + "sync" +) + +// The size of a CRC-32 checksum in bytes. +const Size = 4 + +// Predefined polynomials. +const ( + // IEEE is by far and away the most common CRC-32 polynomial. + // Used by ethernet (IEEE 802.3), v.42, fddi, gzip, zip, png, ... + IEEE = 0xedb88320 + + // Castagnoli's polynomial, used in iSCSI. + // Has better error detection characteristics than IEEE. + // http://dx.doi.org/10.1109/26.231911 + Castagnoli = 0x82f63b78 + + // Koopman's polynomial. + // Also has better error detection characteristics than IEEE. + // http://dx.doi.org/10.1109/DSN.2002.1028931 + Koopman = 0xeb31d82e +) + +// Table is a 256-word table representing the polynomial for efficient processing. +type Table [256]uint32 + +// This file makes use of functions implemented in architecture-specific files. +// The interface that they implement is as follows: +// +// // archAvailableIEEE reports whether an architecture-specific CRC32-IEEE +// // algorithm is available. +// archAvailableIEEE() bool +// +// // archInitIEEE initializes the architecture-specific CRC3-IEEE algorithm. +// // It can only be called if archAvailableIEEE() returns true. +// archInitIEEE() +// +// // archUpdateIEEE updates the given CRC32-IEEE. It can only be called if +// // archInitIEEE() was previously called. +// archUpdateIEEE(crc uint32, p []byte) uint32 +// +// // archAvailableCastagnoli reports whether an architecture-specific +// // CRC32-C algorithm is available. +// archAvailableCastagnoli() bool +// +// // archInitCastagnoli initializes the architecture-specific CRC32-C +// // algorithm. It can only be called if archAvailableCastagnoli() returns +// // true. +// archInitCastagnoli() +// +// // archUpdateCastagnoli updates the given CRC32-C. It can only be called +// // if archInitCastagnoli() was previously called. +// archUpdateCastagnoli(crc uint32, p []byte) uint32 + +// castagnoliTable points to a lazily initialized Table for the Castagnoli +// polynomial. MakeTable will always return this value when asked to make a +// Castagnoli table so we can compare against it to find when the caller is +// using this polynomial. +var castagnoliTable *Table +var castagnoliTable8 *slicing8Table +var castagnoliArchImpl bool +var updateCastagnoli func(crc uint32, p []byte) uint32 +var castagnoliOnce sync.Once + +func castagnoliInit() { + castagnoliTable = simpleMakeTable(Castagnoli) + castagnoliArchImpl = archAvailableCastagnoli() + + if castagnoliArchImpl { + archInitCastagnoli() + updateCastagnoli = archUpdateCastagnoli + } else { + // Initialize the slicing-by-8 table. + castagnoliTable8 = slicingMakeTable(Castagnoli) + updateCastagnoli = func(crc uint32, p []byte) uint32 { + return slicingUpdate(crc, castagnoliTable8, p) + } + } +} + +// IEEETable is the table for the IEEE polynomial. +var IEEETable = simpleMakeTable(IEEE) + +// ieeeTable8 is the slicing8Table for IEEE +var ieeeTable8 *slicing8Table +var ieeeArchImpl bool +var updateIEEE func(crc uint32, p []byte) uint32 +var ieeeOnce sync.Once + +func ieeeInit() { + ieeeArchImpl = archAvailableIEEE() + + if ieeeArchImpl { + archInitIEEE() + updateIEEE = archUpdateIEEE + } else { + // Initialize the slicing-by-8 table. + ieeeTable8 = slicingMakeTable(IEEE) + updateIEEE = func(crc uint32, p []byte) uint32 { + return slicingUpdate(crc, ieeeTable8, p) + } + } +} + +// MakeTable returns a Table constructed from the specified polynomial. +// The contents of this Table must not be modified. +func MakeTable(poly uint32) *Table { + switch poly { + case IEEE: + ieeeOnce.Do(ieeeInit) + return IEEETable + case Castagnoli: + castagnoliOnce.Do(castagnoliInit) + return castagnoliTable + } + return simpleMakeTable(poly) +} + +// digest represents the partial evaluation of a checksum. +type digest struct { + crc uint32 + tab *Table +} + +// New creates a new hash.Hash32 computing the CRC-32 checksum +// using the polynomial represented by the Table. +// Its Sum method will lay the value out in big-endian byte order. +func New(tab *Table) hash.Hash32 { + if tab == IEEETable { + ieeeOnce.Do(ieeeInit) + } + return &digest{0, tab} +} + +// NewIEEE creates a new hash.Hash32 computing the CRC-32 checksum +// using the IEEE polynomial. +// Its Sum method will lay the value out in big-endian byte order. +func NewIEEE() hash.Hash32 { return New(IEEETable) } + +func (d *digest) Size() int { return Size } + +func (d *digest) BlockSize() int { return 1 } + +func (d *digest) Reset() { d.crc = 0 } + +// Update returns the result of adding the bytes in p to the crc. +func Update(crc uint32, tab *Table, p []byte) uint32 { + switch tab { + case castagnoliTable: + return updateCastagnoli(crc, p) + case IEEETable: + // Unfortunately, because IEEETable is exported, IEEE may be used without a + // call to MakeTable. We have to make sure it gets initialized in that case. + ieeeOnce.Do(ieeeInit) + return updateIEEE(crc, p) + default: + return simpleUpdate(crc, tab, p) + } +} + +func (d *digest) Write(p []byte) (n int, err error) { + switch d.tab { + case castagnoliTable: + d.crc = updateCastagnoli(d.crc, p) + case IEEETable: + // We only create digest objects through New() which takes care of + // initialization in this case. + d.crc = updateIEEE(d.crc, p) + default: + d.crc = simpleUpdate(d.crc, d.tab, p) + } + return len(p), nil +} + +func (d *digest) Sum32() uint32 { return d.crc } + +func (d *digest) Sum(in []byte) []byte { + s := d.Sum32() + return append(in, byte(s>>24), byte(s>>16), byte(s>>8), byte(s)) +} + +// Checksum returns the CRC-32 checksum of data +// using the polynomial represented by the Table. +func Checksum(data []byte, tab *Table) uint32 { return Update(0, tab, data) } + +// ChecksumIEEE returns the CRC-32 checksum of data +// using the IEEE polynomial. +func ChecksumIEEE(data []byte) uint32 { + ieeeOnce.Do(ieeeInit) + return updateIEEE(0, data) +} diff --git a/vendor/github.com/klauspost/crc32/crc32_amd64.go b/vendor/github.com/klauspost/crc32/crc32_amd64.go new file mode 100644 index 0000000..af2a0b8 --- /dev/null +++ b/vendor/github.com/klauspost/crc32/crc32_amd64.go @@ -0,0 +1,230 @@ +// 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. + +// +build !appengine,!gccgo + +// AMD64-specific hardware-assisted CRC32 algorithms. See crc32.go for a +// description of the interface that each architecture-specific file +// implements. + +package crc32 + +import "unsafe" + +// This file contains the code to call the SSE 4.2 version of the Castagnoli +// and IEEE CRC. + +// haveSSE41/haveSSE42/haveCLMUL are defined in crc_amd64.s and use +// CPUID to test for SSE 4.1, 4.2 and CLMUL support. +func haveSSE41() bool +func haveSSE42() bool +func haveCLMUL() bool + +// castagnoliSSE42 is defined in crc32_amd64.s and uses the SSE4.2 CRC32 +// instruction. +//go:noescape +func castagnoliSSE42(crc uint32, p []byte) uint32 + +// castagnoliSSE42Triple is defined in crc32_amd64.s and uses the SSE4.2 CRC32 +// instruction. +//go:noescape +func castagnoliSSE42Triple( + crcA, crcB, crcC uint32, + a, b, c []byte, + rounds uint32, +) (retA uint32, retB uint32, retC uint32) + +// ieeeCLMUL is defined in crc_amd64.s and uses the PCLMULQDQ +// instruction as well as SSE 4.1. +//go:noescape +func ieeeCLMUL(crc uint32, p []byte) uint32 + +var sse42 = haveSSE42() +var useFastIEEE = haveCLMUL() && haveSSE41() + +const castagnoliK1 = 168 +const castagnoliK2 = 1344 + +type sse42Table [4]Table + +var castagnoliSSE42TableK1 *sse42Table +var castagnoliSSE42TableK2 *sse42Table + +func archAvailableCastagnoli() bool { + return sse42 +} + +func archInitCastagnoli() { + if !sse42 { + panic("arch-specific Castagnoli not available") + } + castagnoliSSE42TableK1 = new(sse42Table) + castagnoliSSE42TableK2 = new(sse42Table) + // See description in updateCastagnoli. + // t[0][i] = CRC(i000, O) + // t[1][i] = CRC(0i00, O) + // t[2][i] = CRC(00i0, O) + // t[3][i] = CRC(000i, O) + // where O is a sequence of K zeros. + var tmp [castagnoliK2]byte + for b := 0; b < 4; b++ { + for i := 0; i < 256; i++ { + val := uint32(i) << uint32(b*8) + castagnoliSSE42TableK1[b][i] = castagnoliSSE42(val, tmp[:castagnoliK1]) + castagnoliSSE42TableK2[b][i] = castagnoliSSE42(val, tmp[:]) + } + } +} + +// castagnoliShift computes the CRC32-C of K1 or K2 zeroes (depending on the +// table given) with the given initial crc value. This corresponds to +// CRC(crc, O) in the description in updateCastagnoli. +func castagnoliShift(table *sse42Table, crc uint32) uint32 { + return table[3][crc>>24] ^ + table[2][(crc>>16)&0xFF] ^ + table[1][(crc>>8)&0xFF] ^ + table[0][crc&0xFF] +} + +func archUpdateCastagnoli(crc uint32, p []byte) uint32 { + if !sse42 { + panic("not available") + } + + // This method is inspired from the algorithm in Intel's white paper: + // "Fast CRC Computation for iSCSI Polynomial Using CRC32 Instruction" + // The same strategy of splitting the buffer in three is used but the + // combining calculation is different; the complete derivation is explained + // below. + // + // -- The basic idea -- + // + // The CRC32 instruction (available in SSE4.2) can process 8 bytes at a + // time. In recent Intel architectures the instruction takes 3 cycles; + // however the processor can pipeline up to three instructions if they + // don't depend on each other. + // + // Roughly this means that we can process three buffers in about the same + // time we can process one buffer. + // + // The idea is then to split the buffer in three, CRC the three pieces + // separately and then combine the results. + // + // Combining the results requires precomputed tables, so we must choose a + // fixed buffer length to optimize. The longer the length, the faster; but + // only buffers longer than this length will use the optimization. We choose + // two cutoffs and compute tables for both: + // - one around 512: 168*3=504 + // - one around 4KB: 1344*3=4032 + // + // -- The nitty gritty -- + // + // Let CRC(I, X) be the non-inverted CRC32-C of the sequence X (with + // initial non-inverted CRC I). This function has the following properties: + // (a) CRC(I, AB) = CRC(CRC(I, A), B) + // (b) CRC(I, A xor B) = CRC(I, A) xor CRC(0, B) + // + // Say we want to compute CRC(I, ABC) where A, B, C are three sequences of + // K bytes each, where K is a fixed constant. Let O be the sequence of K zero + // bytes. + // + // CRC(I, ABC) = CRC(I, ABO xor C) + // = CRC(I, ABO) xor CRC(0, C) + // = CRC(CRC(I, AB), O) xor CRC(0, C) + // = CRC(CRC(I, AO xor B), O) xor CRC(0, C) + // = CRC(CRC(I, AO) xor CRC(0, B), O) xor CRC(0, C) + // = CRC(CRC(CRC(I, A), O) xor CRC(0, B), O) xor CRC(0, C) + // + // The castagnoliSSE42Triple function can compute CRC(I, A), CRC(0, B), + // and CRC(0, C) efficiently. We just need to find a way to quickly compute + // CRC(uvwx, O) given a 4-byte initial value uvwx. We can precompute these + // values; since we can't have a 32-bit table, we break it up into four + // 8-bit tables: + // + // CRC(uvwx, O) = CRC(u000, O) xor + // CRC(0v00, O) xor + // CRC(00w0, O) xor + // CRC(000x, O) + // + // We can compute tables corresponding to the four terms for all 8-bit + // values. + + crc = ^crc + + // If a buffer is long enough to use the optimization, process the first few + // bytes to align the buffer to an 8 byte boundary (if necessary). + if len(p) >= castagnoliK1*3 { + delta := int(uintptr(unsafe.Pointer(&p[0])) & 7) + if delta != 0 { + delta = 8 - delta + crc = castagnoliSSE42(crc, p[:delta]) + p = p[delta:] + } + } + + // Process 3*K2 at a time. + for len(p) >= castagnoliK2*3 { + // Compute CRC(I, A), CRC(0, B), and CRC(0, C). + crcA, crcB, crcC := castagnoliSSE42Triple( + crc, 0, 0, + p, p[castagnoliK2:], p[castagnoliK2*2:], + castagnoliK2/24) + + // CRC(I, AB) = CRC(CRC(I, A), O) xor CRC(0, B) + crcAB := castagnoliShift(castagnoliSSE42TableK2, crcA) ^ crcB + // CRC(I, ABC) = CRC(CRC(I, AB), O) xor CRC(0, C) + crc = castagnoliShift(castagnoliSSE42TableK2, crcAB) ^ crcC + p = p[castagnoliK2*3:] + } + + // Process 3*K1 at a time. + for len(p) >= castagnoliK1*3 { + // Compute CRC(I, A), CRC(0, B), and CRC(0, C). + crcA, crcB, crcC := castagnoliSSE42Triple( + crc, 0, 0, + p, p[castagnoliK1:], p[castagnoliK1*2:], + castagnoliK1/24) + + // CRC(I, AB) = CRC(CRC(I, A), O) xor CRC(0, B) + crcAB := castagnoliShift(castagnoliSSE42TableK1, crcA) ^ crcB + // CRC(I, ABC) = CRC(CRC(I, AB), O) xor CRC(0, C) + crc = castagnoliShift(castagnoliSSE42TableK1, crcAB) ^ crcC + p = p[castagnoliK1*3:] + } + + // Use the simple implementation for what's left. + crc = castagnoliSSE42(crc, p) + return ^crc +} + +func archAvailableIEEE() bool { + return useFastIEEE +} + +var archIeeeTable8 *slicing8Table + +func archInitIEEE() { + if !useFastIEEE { + panic("not available") + } + // We still use slicing-by-8 for small buffers. + archIeeeTable8 = slicingMakeTable(IEEE) +} + +func archUpdateIEEE(crc uint32, p []byte) uint32 { + if !useFastIEEE { + panic("not available") + } + + if len(p) >= 64 { + left := len(p) & 15 + do := len(p) - left + crc = ^ieeeCLMUL(^crc, p[:do]) + p = p[do:] + } + if len(p) == 0 { + return crc + } + return slicingUpdate(crc, archIeeeTable8, p) +} diff --git a/vendor/github.com/klauspost/crc32/crc32_amd64.s b/vendor/github.com/klauspost/crc32/crc32_amd64.s new file mode 100644 index 0000000..e8a7941 --- /dev/null +++ b/vendor/github.com/klauspost/crc32/crc32_amd64.s @@ -0,0 +1,319 @@ +// 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. + +// +build gc + +#define NOSPLIT 4 +#define RODATA 8 + +// castagnoliSSE42 updates the (non-inverted) crc with the given buffer. +// +// func castagnoliSSE42(crc uint32, p []byte) uint32 +TEXT ·castagnoliSSE42(SB), NOSPLIT, $0 + MOVL crc+0(FP), AX // CRC value + MOVQ p+8(FP), SI // data pointer + MOVQ p_len+16(FP), CX // len(p) + + // If there are fewer than 8 bytes to process, skip alignment. + CMPQ CX, $8 + JL less_than_8 + + MOVQ SI, BX + ANDQ $7, BX + JZ aligned + + // Process the first few bytes to 8-byte align the input. + + // BX = 8 - BX. We need to process this many bytes to align. + SUBQ $1, BX + XORQ $7, BX + + BTQ $0, BX + JNC align_2 + + CRC32B (SI), AX + DECQ CX + INCQ SI + +align_2: + BTQ $1, BX + JNC align_4 + + // CRC32W (SI), AX + BYTE $0x66; BYTE $0xf2; BYTE $0x0f; BYTE $0x38; BYTE $0xf1; BYTE $0x06 + + SUBQ $2, CX + ADDQ $2, SI + +align_4: + BTQ $2, BX + JNC aligned + + // CRC32L (SI), AX + BYTE $0xf2; BYTE $0x0f; BYTE $0x38; BYTE $0xf1; BYTE $0x06 + + SUBQ $4, CX + ADDQ $4, SI + +aligned: + // The input is now 8-byte aligned and we can process 8-byte chunks. + CMPQ CX, $8 + JL less_than_8 + + CRC32Q (SI), AX + ADDQ $8, SI + SUBQ $8, CX + JMP aligned + +less_than_8: + // We may have some bytes left over; process 4 bytes, then 2, then 1. + BTQ $2, CX + JNC less_than_4 + + // CRC32L (SI), AX + BYTE $0xf2; BYTE $0x0f; BYTE $0x38; BYTE $0xf1; BYTE $0x06 + ADDQ $4, SI + +less_than_4: + BTQ $1, CX + JNC less_than_2 + + // CRC32W (SI), AX + BYTE $0x66; BYTE $0xf2; BYTE $0x0f; BYTE $0x38; BYTE $0xf1; BYTE $0x06 + ADDQ $2, SI + +less_than_2: + BTQ $0, CX + JNC done + + CRC32B (SI), AX + +done: + MOVL AX, ret+32(FP) + RET + +// castagnoliSSE42Triple updates three (non-inverted) crcs with (24*rounds) +// bytes from each buffer. +// +// func castagnoliSSE42Triple( +// crc1, crc2, crc3 uint32, +// a, b, c []byte, +// rounds uint32, +// ) (retA uint32, retB uint32, retC uint32) +TEXT ·castagnoliSSE42Triple(SB), NOSPLIT, $0 + MOVL crcA+0(FP), AX + MOVL crcB+4(FP), CX + MOVL crcC+8(FP), DX + + MOVQ a+16(FP), R8 // data pointer + MOVQ b+40(FP), R9 // data pointer + MOVQ c+64(FP), R10 // data pointer + + MOVL rounds+88(FP), R11 + +loop: + CRC32Q (R8), AX + CRC32Q (R9), CX + CRC32Q (R10), DX + + CRC32Q 8(R8), AX + CRC32Q 8(R9), CX + CRC32Q 8(R10), DX + + CRC32Q 16(R8), AX + CRC32Q 16(R9), CX + CRC32Q 16(R10), DX + + ADDQ $24, R8 + ADDQ $24, R9 + ADDQ $24, R10 + + DECQ R11 + JNZ loop + + MOVL AX, retA+96(FP) + MOVL CX, retB+100(FP) + MOVL DX, retC+104(FP) + RET + +// func haveSSE42() bool +TEXT ·haveSSE42(SB), NOSPLIT, $0 + XORQ AX, AX + INCL AX + CPUID + SHRQ $20, CX + ANDQ $1, CX + MOVB CX, ret+0(FP) + RET + +// func haveCLMUL() bool +TEXT ·haveCLMUL(SB), NOSPLIT, $0 + XORQ AX, AX + INCL AX + CPUID + SHRQ $1, CX + ANDQ $1, CX + MOVB CX, ret+0(FP) + RET + +// func haveSSE41() bool +TEXT ·haveSSE41(SB), NOSPLIT, $0 + XORQ AX, AX + INCL AX + CPUID + SHRQ $19, CX + ANDQ $1, CX + MOVB CX, ret+0(FP) + RET + +// CRC32 polynomial data +// +// These constants are lifted from the +// Linux kernel, since they avoid the costly +// PSHUFB 16 byte reversal proposed in the +// original Intel paper. +DATA r2r1kp<>+0(SB)/8, $0x154442bd4 +DATA r2r1kp<>+8(SB)/8, $0x1c6e41596 +DATA r4r3kp<>+0(SB)/8, $0x1751997d0 +DATA r4r3kp<>+8(SB)/8, $0x0ccaa009e +DATA rupolykp<>+0(SB)/8, $0x1db710641 +DATA rupolykp<>+8(SB)/8, $0x1f7011641 +DATA r5kp<>+0(SB)/8, $0x163cd6124 + +GLOBL r2r1kp<>(SB), RODATA, $16 +GLOBL r4r3kp<>(SB), RODATA, $16 +GLOBL rupolykp<>(SB), RODATA, $16 +GLOBL r5kp<>(SB), RODATA, $8 + +// Based on http://www.intel.com/content/dam/www/public/us/en/documents/white-papers/fast-crc-computation-generic-polynomials-pclmulqdq-paper.pdf +// len(p) must be at least 64, and must be a multiple of 16. + +// func ieeeCLMUL(crc uint32, p []byte) uint32 +TEXT ·ieeeCLMUL(SB), NOSPLIT, $0 + MOVL crc+0(FP), X0 // Initial CRC value + MOVQ p+8(FP), SI // data pointer + MOVQ p_len+16(FP), CX // len(p) + + MOVOU (SI), X1 + MOVOU 16(SI), X2 + MOVOU 32(SI), X3 + MOVOU 48(SI), X4 + PXOR X0, X1 + ADDQ $64, SI // buf+=64 + SUBQ $64, CX // len-=64 + CMPQ CX, $64 // Less than 64 bytes left + JB remain64 + + MOVOA r2r1kp<>+0(SB), X0 + +loopback64: + MOVOA X1, X5 + MOVOA X2, X6 + MOVOA X3, X7 + MOVOA X4, X8 + + PCLMULQDQ $0, X0, X1 + PCLMULQDQ $0, X0, X2 + PCLMULQDQ $0, X0, X3 + PCLMULQDQ $0, X0, X4 + + // Load next early + MOVOU (SI), X11 + MOVOU 16(SI), X12 + MOVOU 32(SI), X13 + MOVOU 48(SI), X14 + + PCLMULQDQ $0x11, X0, X5 + PCLMULQDQ $0x11, X0, X6 + PCLMULQDQ $0x11, X0, X7 + PCLMULQDQ $0x11, X0, X8 + + PXOR X5, X1 + PXOR X6, X2 + PXOR X7, X3 + PXOR X8, X4 + + PXOR X11, X1 + PXOR X12, X2 + PXOR X13, X3 + PXOR X14, X4 + + ADDQ $0x40, DI + ADDQ $64, SI // buf+=64 + SUBQ $64, CX // len-=64 + CMPQ CX, $64 // Less than 64 bytes left? + JGE loopback64 + + // Fold result into a single register (X1) +remain64: + MOVOA r4r3kp<>+0(SB), X0 + + MOVOA X1, X5 + PCLMULQDQ $0, X0, X1 + PCLMULQDQ $0x11, X0, X5 + PXOR X5, X1 + PXOR X2, X1 + + MOVOA X1, X5 + PCLMULQDQ $0, X0, X1 + PCLMULQDQ $0x11, X0, X5 + PXOR X5, X1 + PXOR X3, X1 + + MOVOA X1, X5 + PCLMULQDQ $0, X0, X1 + PCLMULQDQ $0x11, X0, X5 + PXOR X5, X1 + PXOR X4, X1 + + // If there is less than 16 bytes left we are done + CMPQ CX, $16 + JB finish + + // Encode 16 bytes +remain16: + MOVOU (SI), X10 + MOVOA X1, X5 + PCLMULQDQ $0, X0, X1 + PCLMULQDQ $0x11, X0, X5 + PXOR X5, X1 + PXOR X10, X1 + SUBQ $16, CX + ADDQ $16, SI + CMPQ CX, $16 + JGE remain16 + +finish: + // Fold final result into 32 bits and return it + PCMPEQB X3, X3 + PCLMULQDQ $1, X1, X0 + PSRLDQ $8, X1 + PXOR X0, X1 + + MOVOA X1, X2 + MOVQ r5kp<>+0(SB), X0 + + // Creates 32 bit mask. Note that we don't care about upper half. + PSRLQ $32, X3 + + PSRLDQ $4, X2 + PAND X3, X1 + PCLMULQDQ $0, X0, X1 + PXOR X2, X1 + + MOVOA rupolykp<>+0(SB), X0 + + MOVOA X1, X2 + PAND X3, X1 + PCLMULQDQ $0x10, X0, X1 + PAND X3, X1 + PCLMULQDQ $0, X0, X1 + PXOR X2, X1 + + // PEXTRD $1, X1, AX (SSE 4.1) + BYTE $0x66; BYTE $0x0f; BYTE $0x3a + BYTE $0x16; BYTE $0xc8; BYTE $0x01 + MOVL AX, ret+32(FP) + + RET diff --git a/vendor/github.com/klauspost/crc32/crc32_amd64p32.go b/vendor/github.com/klauspost/crc32/crc32_amd64p32.go new file mode 100644 index 0000000..3222b06 --- /dev/null +++ b/vendor/github.com/klauspost/crc32/crc32_amd64p32.go @@ -0,0 +1,43 @@ +// 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. + +// +build !appengine,!gccgo + +package crc32 + +// This file contains the code to call the SSE 4.2 version of the Castagnoli +// CRC. + +// haveSSE42 is defined in crc32_amd64p32.s and uses CPUID to test for SSE 4.2 +// support. +func haveSSE42() bool + +// castagnoliSSE42 is defined in crc32_amd64p32.s and uses the SSE4.2 CRC32 +// instruction. +//go:noescape +func castagnoliSSE42(crc uint32, p []byte) uint32 + +var sse42 = haveSSE42() + +func archAvailableCastagnoli() bool { + return sse42 +} + +func archInitCastagnoli() { + if !sse42 { + panic("not available") + } + // No initialization necessary. +} + +func archUpdateCastagnoli(crc uint32, p []byte) uint32 { + if !sse42 { + panic("not available") + } + return castagnoliSSE42(crc, p) +} + +func archAvailableIEEE() bool { return false } +func archInitIEEE() { panic("not available") } +func archUpdateIEEE(crc uint32, p []byte) uint32 { panic("not available") } diff --git a/vendor/github.com/klauspost/crc32/crc32_amd64p32.s b/vendor/github.com/klauspost/crc32/crc32_amd64p32.s new file mode 100644 index 0000000..a578d68 --- /dev/null +++ b/vendor/github.com/klauspost/crc32/crc32_amd64p32.s @@ -0,0 +1,67 @@ +// 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. + +// +build gc + +#define NOSPLIT 4 +#define RODATA 8 + +// func castagnoliSSE42(crc uint32, p []byte) uint32 +TEXT ·castagnoliSSE42(SB), NOSPLIT, $0 + MOVL crc+0(FP), AX // CRC value + MOVL p+4(FP), SI // data pointer + MOVL p_len+8(FP), CX // len(p) + + NOTL AX + + // If there's less than 8 bytes to process, we do it byte-by-byte. + CMPQ CX, $8 + JL cleanup + + // Process individual bytes until the input is 8-byte aligned. +startup: + MOVQ SI, BX + ANDQ $7, BX + JZ aligned + + CRC32B (SI), AX + DECQ CX + INCQ SI + JMP startup + +aligned: + // The input is now 8-byte aligned and we can process 8-byte chunks. + CMPQ CX, $8 + JL cleanup + + CRC32Q (SI), AX + ADDQ $8, SI + SUBQ $8, CX + JMP aligned + +cleanup: + // We may have some bytes left over that we process one at a time. + CMPQ CX, $0 + JE done + + CRC32B (SI), AX + INCQ SI + DECQ CX + JMP cleanup + +done: + NOTL AX + MOVL AX, ret+16(FP) + RET + +// func haveSSE42() bool +TEXT ·haveSSE42(SB), NOSPLIT, $0 + XORQ AX, AX + INCL AX + CPUID + SHRQ $20, CX + ANDQ $1, CX + MOVB CX, ret+0(FP) + RET + diff --git a/vendor/github.com/klauspost/crc32/crc32_generic.go b/vendor/github.com/klauspost/crc32/crc32_generic.go new file mode 100644 index 0000000..abacbb6 --- /dev/null +++ b/vendor/github.com/klauspost/crc32/crc32_generic.go @@ -0,0 +1,89 @@ +// 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. + +// This file contains CRC32 algorithms that are not specific to any architecture +// and don't use hardware acceleration. +// +// The simple (and slow) CRC32 implementation only uses a 256*4 bytes table. +// +// The slicing-by-8 algorithm is a faster implementation that uses a bigger +// table (8*256*4 bytes). + +package crc32 + +// simpleMakeTable allocates and constructs a Table for the specified +// polynomial. The table is suitable for use with the simple algorithm +// (simpleUpdate). +func simpleMakeTable(poly uint32) *Table { + t := new(Table) + simplePopulateTable(poly, t) + return t +} + +// simplePopulateTable constructs a Table for the specified polynomial, suitable +// for use with simpleUpdate. +func simplePopulateTable(poly uint32, t *Table) { + for i := 0; i < 256; i++ { + crc := uint32(i) + for j := 0; j < 8; j++ { + if crc&1 == 1 { + crc = (crc >> 1) ^ poly + } else { + crc >>= 1 + } + } + t[i] = crc + } +} + +// simpleUpdate uses the simple algorithm to update the CRC, given a table that +// was previously computed using simpleMakeTable. +func simpleUpdate(crc uint32, tab *Table, p []byte) uint32 { + crc = ^crc + for _, v := range p { + crc = tab[byte(crc)^v] ^ (crc >> 8) + } + return ^crc +} + +// Use slicing-by-8 when payload >= this value. +const slicing8Cutoff = 16 + +// slicing8Table is array of 8 Tables, used by the slicing-by-8 algorithm. +type slicing8Table [8]Table + +// slicingMakeTable constructs a slicing8Table for the specified polynomial. The +// table is suitable for use with the slicing-by-8 algorithm (slicingUpdate). +func slicingMakeTable(poly uint32) *slicing8Table { + t := new(slicing8Table) + simplePopulateTable(poly, &t[0]) + for i := 0; i < 256; i++ { + crc := t[0][i] + for j := 1; j < 8; j++ { + crc = t[0][crc&0xFF] ^ (crc >> 8) + t[j][i] = crc + } + } + return t +} + +// slicingUpdate uses the slicing-by-8 algorithm to update the CRC, given a +// table that was previously computed using slicingMakeTable. +func slicingUpdate(crc uint32, tab *slicing8Table, p []byte) uint32 { + if len(p) >= slicing8Cutoff { + crc = ^crc + for len(p) > 8 { + crc ^= uint32(p[0]) | uint32(p[1])<<8 | uint32(p[2])<<16 | uint32(p[3])<<24 + crc = tab[0][p[7]] ^ tab[1][p[6]] ^ tab[2][p[5]] ^ tab[3][p[4]] ^ + tab[4][crc>>24] ^ tab[5][(crc>>16)&0xFF] ^ + tab[6][(crc>>8)&0xFF] ^ tab[7][crc&0xFF] + p = p[8:] + } + crc = ^crc + } + if len(p) == 0 { + return crc + } + return simpleUpdate(crc, &tab[0], p) +} diff --git a/vendor/github.com/klauspost/crc32/crc32_otherarch.go b/vendor/github.com/klauspost/crc32/crc32_otherarch.go new file mode 100644 index 0000000..cc96076 --- /dev/null +++ b/vendor/github.com/klauspost/crc32/crc32_otherarch.go @@ -0,0 +1,15 @@ +// 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. + +// +build !amd64,!amd64p32,!s390x + +package crc32 + +func archAvailableIEEE() bool { return false } +func archInitIEEE() { panic("not available") } +func archUpdateIEEE(crc uint32, p []byte) uint32 { panic("not available") } + +func archAvailableCastagnoli() bool { return false } +func archInitCastagnoli() { panic("not available") } +func archUpdateCastagnoli(crc uint32, p []byte) uint32 { panic("not available") } diff --git a/vendor/github.com/klauspost/crc32/crc32_s390x.go b/vendor/github.com/klauspost/crc32/crc32_s390x.go new file mode 100644 index 0000000..ce96f03 --- /dev/null +++ b/vendor/github.com/klauspost/crc32/crc32_s390x.go @@ -0,0 +1,91 @@ +// 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 s390x + +package crc32 + +const ( + vxMinLen = 64 + vxAlignMask = 15 // align to 16 bytes +) + +// hasVectorFacility reports whether the machine has the z/Architecture +// vector facility installed and enabled. +func hasVectorFacility() bool + +var hasVX = hasVectorFacility() + +// vectorizedCastagnoli implements CRC32 using vector instructions. +// It is defined in crc32_s390x.s. +//go:noescape +func vectorizedCastagnoli(crc uint32, p []byte) uint32 + +// vectorizedIEEE implements CRC32 using vector instructions. +// It is defined in crc32_s390x.s. +//go:noescape +func vectorizedIEEE(crc uint32, p []byte) uint32 + +func archAvailableCastagnoli() bool { + return hasVX +} + +var archCastagnoliTable8 *slicing8Table + +func archInitCastagnoli() { + if !hasVX { + panic("not available") + } + // We still use slicing-by-8 for small buffers. + archCastagnoliTable8 = slicingMakeTable(Castagnoli) +} + +// archUpdateCastagnoli calculates the checksum of p using +// vectorizedCastagnoli. +func archUpdateCastagnoli(crc uint32, p []byte) uint32 { + if !hasVX { + panic("not available") + } + // Use vectorized function if data length is above threshold. + if len(p) >= vxMinLen { + aligned := len(p) & ^vxAlignMask + crc = vectorizedCastagnoli(crc, p[:aligned]) + p = p[aligned:] + } + if len(p) == 0 { + return crc + } + return slicingUpdate(crc, archCastagnoliTable8, p) +} + +func archAvailableIEEE() bool { + return hasVX +} + +var archIeeeTable8 *slicing8Table + +func archInitIEEE() { + if !hasVX { + panic("not available") + } + // We still use slicing-by-8 for small buffers. + archIeeeTable8 = slicingMakeTable(IEEE) +} + +// archUpdateIEEE calculates the checksum of p using vectorizedIEEE. +func archUpdateIEEE(crc uint32, p []byte) uint32 { + if !hasVX { + panic("not available") + } + // Use vectorized function if data length is above threshold. + if len(p) >= vxMinLen { + aligned := len(p) & ^vxAlignMask + crc = vectorizedIEEE(crc, p[:aligned]) + p = p[aligned:] + } + if len(p) == 0 { + return crc + } + return slicingUpdate(crc, archIeeeTable8, p) +} diff --git a/vendor/github.com/klauspost/crc32/crc32_s390x.s b/vendor/github.com/klauspost/crc32/crc32_s390x.s new file mode 100644 index 0000000..e980ca2 --- /dev/null +++ b/vendor/github.com/klauspost/crc32/crc32_s390x.s @@ -0,0 +1,249 @@ +// 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 s390x + +#include "textflag.h" + +// Vector register range containing CRC-32 constants + +#define CONST_PERM_LE2BE V9 +#define CONST_R2R1 V10 +#define CONST_R4R3 V11 +#define CONST_R5 V12 +#define CONST_RU_POLY V13 +#define CONST_CRC_POLY V14 + +// The CRC-32 constant block contains reduction constants to fold and +// process particular chunks of the input data stream in parallel. +// +// Note that the constant definitions below are extended in order to compute +// intermediate results with a single VECTOR GALOIS FIELD MULTIPLY instruction. +// The rightmost doubleword can be 0 to prevent contribution to the result or +// can be multiplied by 1 to perform an XOR without the need for a separate +// VECTOR EXCLUSIVE OR instruction. +// +// The polynomials used are bit-reflected: +// +// IEEE: P'(x) = 0x0edb88320 +// Castagnoli: P'(x) = 0x082f63b78 + +// IEEE polynomial constants +DATA ·crcleconskp+0(SB)/8, $0x0F0E0D0C0B0A0908 // LE-to-BE mask +DATA ·crcleconskp+8(SB)/8, $0x0706050403020100 +DATA ·crcleconskp+16(SB)/8, $0x00000001c6e41596 // R2 +DATA ·crcleconskp+24(SB)/8, $0x0000000154442bd4 // R1 +DATA ·crcleconskp+32(SB)/8, $0x00000000ccaa009e // R4 +DATA ·crcleconskp+40(SB)/8, $0x00000001751997d0 // R3 +DATA ·crcleconskp+48(SB)/8, $0x0000000000000000 +DATA ·crcleconskp+56(SB)/8, $0x0000000163cd6124 // R5 +DATA ·crcleconskp+64(SB)/8, $0x0000000000000000 +DATA ·crcleconskp+72(SB)/8, $0x00000001F7011641 // u' +DATA ·crcleconskp+80(SB)/8, $0x0000000000000000 +DATA ·crcleconskp+88(SB)/8, $0x00000001DB710641 // P'(x) << 1 + +GLOBL ·crcleconskp(SB), RODATA, $144 + +// Castagonli Polynomial constants +DATA ·crccleconskp+0(SB)/8, $0x0F0E0D0C0B0A0908 // LE-to-BE mask +DATA ·crccleconskp+8(SB)/8, $0x0706050403020100 +DATA ·crccleconskp+16(SB)/8, $0x000000009e4addf8 // R2 +DATA ·crccleconskp+24(SB)/8, $0x00000000740eef02 // R1 +DATA ·crccleconskp+32(SB)/8, $0x000000014cd00bd6 // R4 +DATA ·crccleconskp+40(SB)/8, $0x00000000f20c0dfe // R3 +DATA ·crccleconskp+48(SB)/8, $0x0000000000000000 +DATA ·crccleconskp+56(SB)/8, $0x00000000dd45aab8 // R5 +DATA ·crccleconskp+64(SB)/8, $0x0000000000000000 +DATA ·crccleconskp+72(SB)/8, $0x00000000dea713f1 // u' +DATA ·crccleconskp+80(SB)/8, $0x0000000000000000 +DATA ·crccleconskp+88(SB)/8, $0x0000000105ec76f0 // P'(x) << 1 + +GLOBL ·crccleconskp(SB), RODATA, $144 + +// func hasVectorFacility() bool +TEXT ·hasVectorFacility(SB), NOSPLIT, $24-1 + MOVD $x-24(SP), R1 + XC $24, 0(R1), 0(R1) // clear the storage + MOVD $2, R0 // R0 is the number of double words stored -1 + WORD $0xB2B01000 // STFLE 0(R1) + XOR R0, R0 // reset the value of R0 + MOVBZ z-8(SP), R1 + AND $0x40, R1 + BEQ novector + +vectorinstalled: + // check if the vector instruction has been enabled + VLEIB $0, $0xF, V16 + VLGVB $0, V16, R1 + CMPBNE R1, $0xF, novector + MOVB $1, ret+0(FP) // have vx + RET + +novector: + MOVB $0, ret+0(FP) // no vx + RET + +// The CRC-32 function(s) use these calling conventions: +// +// Parameters: +// +// R2: Initial CRC value, typically ~0; and final CRC (return) value. +// R3: Input buffer pointer, performance might be improved if the +// buffer is on a doubleword boundary. +// R4: Length of the buffer, must be 64 bytes or greater. +// +// Register usage: +// +// R5: CRC-32 constant pool base pointer. +// V0: Initial CRC value and intermediate constants and results. +// V1..V4: Data for CRC computation. +// V5..V8: Next data chunks that are fetched from the input buffer. +// +// V9..V14: CRC-32 constants. + +// func vectorizedIEEE(crc uint32, p []byte) uint32 +TEXT ·vectorizedIEEE(SB), NOSPLIT, $0 + MOVWZ crc+0(FP), R2 // R2 stores the CRC value + MOVD p+8(FP), R3 // data pointer + MOVD p_len+16(FP), R4 // len(p) + + MOVD $·crcleconskp(SB), R5 + BR vectorizedBody<>(SB) + +// func vectorizedCastagnoli(crc uint32, p []byte) uint32 +TEXT ·vectorizedCastagnoli(SB), NOSPLIT, $0 + MOVWZ crc+0(FP), R2 // R2 stores the CRC value + MOVD p+8(FP), R3 // data pointer + MOVD p_len+16(FP), R4 // len(p) + + // R5: crc-32 constant pool base pointer, constant is used to reduce crc + MOVD $·crccleconskp(SB), R5 + BR vectorizedBody<>(SB) + +TEXT vectorizedBody<>(SB), NOSPLIT, $0 + XOR $0xffffffff, R2 // NOTW R2 + VLM 0(R5), CONST_PERM_LE2BE, CONST_CRC_POLY + + // Load the initial CRC value into the rightmost word of V0 + VZERO V0 + VLVGF $3, R2, V0 + + // Crash if the input size is less than 64-bytes. + CMP R4, $64 + BLT crash + + // Load a 64-byte data chunk and XOR with CRC + VLM 0(R3), V1, V4 // 64-bytes into V1..V4 + + // Reflect the data if the CRC operation is in the bit-reflected domain + VPERM V1, V1, CONST_PERM_LE2BE, V1 + VPERM V2, V2, CONST_PERM_LE2BE, V2 + VPERM V3, V3, CONST_PERM_LE2BE, V3 + VPERM V4, V4, CONST_PERM_LE2BE, V4 + + VX V0, V1, V1 // V1 ^= CRC + ADD $64, R3 // BUF = BUF + 64 + ADD $(-64), R4 + + // Check remaining buffer size and jump to proper folding method + CMP R4, $64 + BLT less_than_64bytes + +fold_64bytes_loop: + // Load the next 64-byte data chunk into V5 to V8 + VLM 0(R3), V5, V8 + VPERM V5, V5, CONST_PERM_LE2BE, V5 + VPERM V6, V6, CONST_PERM_LE2BE, V6 + VPERM V7, V7, CONST_PERM_LE2BE, V7 + VPERM V8, V8, CONST_PERM_LE2BE, V8 + + // Perform a GF(2) multiplication of the doublewords in V1 with + // the reduction constants in V0. The intermediate result is + // then folded (accumulated) with the next data chunk in V5 and + // stored in V1. Repeat this step for the register contents + // in V2, V3, and V4 respectively. + + VGFMAG CONST_R2R1, V1, V5, V1 + VGFMAG CONST_R2R1, V2, V6, V2 + VGFMAG CONST_R2R1, V3, V7, V3 + VGFMAG CONST_R2R1, V4, V8, V4 + + // Adjust buffer pointer and length for next loop + ADD $64, R3 // BUF = BUF + 64 + ADD $(-64), R4 // LEN = LEN - 64 + + CMP R4, $64 + BGE fold_64bytes_loop + +less_than_64bytes: + // Fold V1 to V4 into a single 128-bit value in V1 + VGFMAG CONST_R4R3, V1, V2, V1 + VGFMAG CONST_R4R3, V1, V3, V1 + VGFMAG CONST_R4R3, V1, V4, V1 + + // Check whether to continue with 64-bit folding + CMP R4, $16 + BLT final_fold + +fold_16bytes_loop: + VL 0(R3), V2 // Load next data chunk + VPERM V2, V2, CONST_PERM_LE2BE, V2 + + VGFMAG CONST_R4R3, V1, V2, V1 // Fold next data chunk + + // Adjust buffer pointer and size for folding next data chunk + ADD $16, R3 + ADD $-16, R4 + + // Process remaining data chunks + CMP R4, $16 + BGE fold_16bytes_loop + +final_fold: + VLEIB $7, $0x40, V9 + VSRLB V9, CONST_R4R3, V0 + VLEIG $0, $1, V0 + + VGFMG V0, V1, V1 + + VLEIB $7, $0x20, V9 // Shift by words + VSRLB V9, V1, V2 // Store remaining bits in V2 + VUPLLF V1, V1 // Split rightmost doubleword + VGFMAG CONST_R5, V1, V2, V1 // V1 = (V1 * R5) XOR V2 + + // The input values to the Barret reduction are the degree-63 polynomial + // in V1 (R(x)), degree-32 generator polynomial, and the reduction + // constant u. The Barret reduction result is the CRC value of R(x) mod + // P(x). + // + // The Barret reduction algorithm is defined as: + // + // 1. T1(x) = floor( R(x) / x^32 ) GF2MUL u + // 2. T2(x) = floor( T1(x) / x^32 ) GF2MUL P(x) + // 3. C(x) = R(x) XOR T2(x) mod x^32 + // + // Note: To compensate the division by x^32, use the vector unpack + // instruction to move the leftmost word into the leftmost doubleword + // of the vector register. The rightmost doubleword is multiplied + // with zero to not contribute to the intermedate results. + + // T1(x) = floor( R(x) / x^32 ) GF2MUL u + VUPLLF V1, V2 + VGFMG CONST_RU_POLY, V2, V2 + + // Compute the GF(2) product of the CRC polynomial in VO with T1(x) in + // V2 and XOR the intermediate result, T2(x), with the value in V1. + // The final result is in the rightmost word of V2. + + VUPLLF V2, V2 + VGFMAG CONST_CRC_POLY, V2, V1, V2 + +done: + VLGVF $2, V2, R2 + XOR $0xffffffff, R2 // NOTW R2 + MOVWZ R2, ret + 32(FP) + RET + +crash: + MOVD $0, (R0) // input size is less than 64-bytes diff --git a/vendor/github.com/klauspost/reedsolomon/.gitignore b/vendor/github.com/klauspost/reedsolomon/.gitignore new file mode 100644 index 0000000..daf913b --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/.gitignore @@ -0,0 +1,24 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof diff --git a/vendor/github.com/klauspost/reedsolomon/.travis.yml b/vendor/github.com/klauspost/reedsolomon/.travis.yml new file mode 100644 index 0000000..86b80c4 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/.travis.yml @@ -0,0 +1,28 @@ +language: go + +sudo: false + +os: + - linux + - osx + +go: + - 1.3 + - 1.4 + - 1.5 + - 1.6 + - tip + +install: + - go get ./... + +script: + - go vet ./... + - go test -v -cpu=1,2,4 . + - go test -v -cpu=1,2,4 -short -race . + - go test -tags=noasm -v -cpu=1,2,4 -short -race . + - go build examples/simple-decoder.go + - go build examples/simple-encoder.go + - go build examples/stream-decoder.go + - go build examples/stream-encoder.go + - diff <(gofmt -d .) <("") diff --git a/vendor/github.com/klauspost/reedsolomon/LICENSE b/vendor/github.com/klauspost/reedsolomon/LICENSE new file mode 100644 index 0000000..a947e16 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/LICENSE @@ -0,0 +1,23 @@ +The MIT License (MIT) + +Copyright (c) 2015 Klaus Post +Copyright (c) 2015 Backblaze + +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/klauspost/reedsolomon/README.md b/vendor/github.com/klauspost/reedsolomon/README.md new file mode 100644 index 0000000..3e7f518 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/README.md @@ -0,0 +1,204 @@ +# Reed-Solomon +[![GoDoc][1]][2] [![Build Status][3]][4] + +[1]: https://godoc.org/github.com/klauspost/reedsolomon?status.svg +[2]: https://godoc.org/github.com/klauspost/reedsolomon +[3]: https://travis-ci.org/klauspost/reedsolomon.svg?branch=master +[4]: https://travis-ci.org/klauspost/reedsolomon + +Reed-Solomon Erasure Coding in Go, with speeds exceeding 1GB/s/cpu core implemented in pure Go. + +This is a golang port of the [JavaReedSolomon](https://github.com/Backblaze/JavaReedSolomon) library released by [Backblaze](http://backblaze.com), with some additional optimizations. + +For an introduction on erasure coding, see the post on the [Backblaze blog](https://www.backblaze.com/blog/reed-solomon/). + +Package home: https://github.com/klauspost/reedsolomon + +Godoc: https://godoc.org/github.com/klauspost/reedsolomon + +# Installation +To get the package use the standard: +```bash +go get github.com/klauspost/reedsolomon +``` + +# Usage + +This section assumes you know the basics of Reed-Solomon encoding. A good start is this [Backblaze blog post](https://www.backblaze.com/blog/reed-solomon/). + +This package performs the calculation of the parity sets. The usage is therefore relatively simple. + +First of all, you need to choose your distribution of data and parity shards. A 'good' distribution is very subjective, and will depend a lot on your usage scenario. A good starting point is above 5 and below 257 data shards (the maximum supported number), and the number of parity shards to be 2 or above, and below the number of data shards. + +To create an encoder with 10 data shards (where your data goes) and 3 parity shards (calculated): +```Go + enc, err := reedsolomon.New(10, 3) +``` +This encoder will work for all parity sets with this distribution of data and parity shards. The error will only be set if you specify 0 or negative values in any of the parameters, or if you specify more than 256 data shards. + +The you send and receive data is a simple slice of byte slices; `[][]byte`. In the example above, the top slice must have a length of 13. +```Go + data := make([][]byte, 13) +``` +You should then fill the 10 first slices with *equally sized* data, and create parity shards that will be populated with parity data. In this case we create the data in memory, but you could for instance also use [mmap](https://github.com/edsrzf/mmap-go) to map files. + +```Go + // Create all shards, size them at 50000 each + for i := range input { + data[i] := make([]byte, 50000) + } + + + // Fill some data into the data shards + for i, in := range data[:10] { + for j:= range in { + in[j] = byte((i+j)&0xff) + } + } +``` + +To populate the parity shards, you simply call `Encode()` with your data. +```Go + err = enc.Encode(data) +``` +The only cases where you should get an error is, if the data shards aren't of equal size. The last 3 shards now contain parity data. You can verify this by calling `Verify()`: + +```Go + ok, err = enc.Verify(data) +``` + +The final (and important) part is to be able to reconstruct missing shards. For this to work, you need to know which parts of your data is missing. The encoder *does not know which parts are invalid*, so if data corruption is a likely scenario, you need to implement a hash check for each shard. If a byte has changed in your set, and you don't know which it is, there is no way to reconstruct the data set. + +To indicate missing data, you set the shard to nil before calling `Reconstruct()`: + +```Go + // Delete two data shards + data[3] = nil + data[7] = nil + + // Reconstruct the missing shards + err := enc.Reconstruct(data) +``` +The missing data and parity shards will be recreated. If more than 3 shards are missing, the reconstruction will fail. + +So to sum up reconstruction: +* The number of data/parity shards must match the numbers used for encoding. +* The order of shards must be the same as used when encoding. +* You may only supply data you know is valid. +* Invalid shards should be set to nil. + +For complete examples of an encoder and decoder see the [examples folder](https://github.com/klauspost/reedsolomon/tree/master/examples). + +# Splitting/Joining Data + +You might have a large slice of data. To help you split this, there are some helper functions that can split and join a single byte slice. + +```Go + bigfile, _ := ioutil.Readfile("myfile.data") + + // Split the file + split, err := enc.Split(bigfile) +``` +This will split the file into the number of data shards set when creating the encoder and create empty parity shards. + +An important thing to note is that you have to *keep track of the exact input size*. If the size of the input isn't diviable by the number of data shards, extra zeros will be inserted in the last shard. + +To join a data set, use the `Join()` function, which will join the shards and write it to the `io.Writer` you supply: +```Go + // Join a data set and write it to io.Discard. + err = enc.Join(io.Discard, data, len(bigfile)) +``` + +# Streaming/Merging + +It might seem like a limitation that all data should be in memory, but an important property is that *as long as the number of data/parity shards are the same, you can merge/split data sets*, and they will remain valid as a separate set. + +```Go + // Split the data set of 50000 elements into two of 25000 + splitA := make([][]byte, 13) + splitB := make([][]byte, 13) + + // Merge into a 100000 element set + merged := make([][]byte, 13) + + for i := range data { + splitA[i] = data[i][:25000] + splitB[i] = data[i][25000:] + + // Concencate it to itself + merged[i] = append(make([]byte, 0, len(data[i])*2), data[i]...) + merged[i] = append(merged[i], data[i]...) + } + + // Each part should still verify as ok. + ok, err := enc.Verify(splitA) + if ok && err == nil { + log.Println("splitA ok") + } + + ok, err = enc.Verify(splitB) + if ok && err == nil { + log.Println("splitB ok") + } + + ok, err = enc.Verify(merge) + if ok && err == nil { + log.Println("merge ok") + } +``` + +This means that if you have a data set that may not fit into memory, you can split processing into smaller blocks. For the best throughput, don't use too small blocks. + +This also means that you can divide big input up into smaller blocks, and do reconstruction on parts of your data. This doesn't give the same flexibility of a higher number of data shards, but it will be much more performant. + +# Streaming API + +There has been added a fully streaming API, to help perform fully streaming operations, which enables you to do the same operations, but on streams. To use the stream API, use [`NewStream`](https://godoc.org/github.com/klauspost/reedsolomon#NewStream) function to create the encoding/decoding interfaces. You can use [`NewStreamC`](https://godoc.org/github.com/klauspost/reedsolomon#NewStreamC) to ready an interface that reads/writes concurrently from the streams. + +Input is delivered as `[]io.Reader`, output as `[]io.Writer`, and functionality corresponds to the in-memory API. Each stream must supply the same amount of data, similar to how each slice must be similar size with the in-memory API. +If an error occurs in relation to a stream, a [`StreamReadError`](https://godoc.org/github.com/klauspost/reedsolomon#StreamReadError) or [`StreamWriteError`](https://godoc.org/github.com/klauspost/reedsolomon#StreamWriteError) will help you determine which stream was the offender. + +There is no buffering or timeouts/retry specified. If you want to add that, you need to add it to the Reader/Writer. + +For complete examples of a streaming encoder and decoder see the [examples folder](https://github.com/klauspost/reedsolomon/tree/master/examples). + + +# Performance +Performance depends mainly on the number of parity shards. In rough terms, doubling the number of parity shards will double the encoding time. + +Here are the throughput numbers with some different selections of data and parity shards. For reference each shard is 1MB random data, and 2 CPU cores are used for encoding. + +| Data | Parity | Parity | MB/s | SSSE3 MB/s | SSSE3 Speed | Rel. Speed | +|------|--------|--------|--------|-------------|-------------|------------| +| 5 | 2 | 40% | 576,11 | 2599,2 | 451% | 100,00% | +| 10 | 2 | 20% | 587,73 | 3100,28 | 528% | 102,02% | +| 10 | 4 | 40% | 298,38 | 2470,97 | 828% | 51,79% | +| 50 | 20 | 40% | 59,81 | 713,28 | 1193% | 10,38% | + +If `runtime.GOMAXPROCS()` is set to a value higher than 1, the encoder will use multiple goroutines to perform the calculations in `Verify`, `Encode` and `Reconstruct`. + +Example of performance scaling on Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz - 4 physical cores, 8 logical cores. The example uses 10 blocks with 16MB data each and 4 parity blocks. + +| Threads | MB/s | Speed | +|---------|---------|-------| +| 1 | 1355,11 | 100% | +| 2 | 2339,78 | 172% | +| 4 | 3179,33 | 235% | +| 8 | 4346,18 | 321% | + +# asm2plan9s + +[asm2plan9s](https://github.com/fwessels/asm2plan9s) is used for assembling the AVX2 instructions into their BYTE/WORD/LONG equivalents. + +# Links +* [Backblaze Open Sources Reed-Solomon Erasure Coding Source Code](https://www.backblaze.com/blog/reed-solomon/). +* [JavaReedSolomon](https://github.com/Backblaze/JavaReedSolomon). Compatible java library by Backblaze. +* [reedsolomon-c](https://github.com/jannson/reedsolomon-c). C version, compatible with output from this package. +* [Reed-Solomon Erasure Coding in Haskell](https://github.com/NicolasT/reedsolomon). Haskell port of the package with similar performance. +* [go-erasure](https://github.com/somethingnew2-0/go-erasure). A similar library using cgo, slower in my tests. +* [rsraid](https://github.com/goayame/rsraid). A similar library written in Go. Slower, but supports more shards. +* [Screaming Fast Galois Field Arithmetic](http://www.snia.org/sites/default/files2/SDC2013/presentations/NewThinking/EthanMiller_Screaming_Fast_Galois_Field%20Arithmetic_SIMD%20Instructions.pdf). Basis for SSE3 optimizations. + +# License + +This code, as the original [JavaReedSolomon](https://github.com/Backblaze/JavaReedSolomon) is published under an MIT license. See LICENSE file for more information. diff --git a/vendor/github.com/klauspost/reedsolomon/appveyor.yml b/vendor/github.com/klauspost/reedsolomon/appveyor.yml new file mode 100644 index 0000000..9bb067f --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/appveyor.yml @@ -0,0 +1,20 @@ +os: Visual Studio 2015 + +platform: x64 + +clone_folder: c:\gopath\src\github.com\klauspost\reedsolomon + +# environment variables +environment: + GOPATH: c:\gopath + +install: + - echo %PATH% + - echo %GOPATH% + - go version + - go env + - go get -d ./... + +build_script: + - go test -v -cpu=2 ./... + - go test -cpu=1,2,4 -short -race ./... diff --git a/vendor/github.com/klauspost/reedsolomon/galois.go b/vendor/github.com/klauspost/reedsolomon/galois.go new file mode 100644 index 0000000..b03775c --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/galois.go @@ -0,0 +1,134 @@ +/** + * 8-bit Galois Field + * Copyright 2015, Klaus Post + * Copyright 2015, Backblaze, Inc. All rights reserved. + */ + +package reedsolomon + +const ( + // The number of elements in the field. + fieldSize = 256 + + // The polynomial used to generate the logarithm table. + // + // There are a number of polynomials that work to generate + // a Galois field of 256 elements. The choice is arbitrary, + // and we just use the first one. + // + // The possibilities are: 29, 43, 45, 77, 95, 99, 101, 105, + //* 113, 135, 141, 169, 195, 207, 231, and 245. + generatingPolynomial = 29 +) + +var logTable = [fieldSize]byte{ + 0, 0, 1, 25, 2, 50, 26, 198, + 3, 223, 51, 238, 27, 104, 199, 75, + 4, 100, 224, 14, 52, 141, 239, 129, + 28, 193, 105, 248, 200, 8, 76, 113, + 5, 138, 101, 47, 225, 36, 15, 33, + 53, 147, 142, 218, 240, 18, 130, 69, + 29, 181, 194, 125, 106, 39, 249, 185, + 201, 154, 9, 120, 77, 228, 114, 166, + 6, 191, 139, 98, 102, 221, 48, 253, + 226, 152, 37, 179, 16, 145, 34, 136, + 54, 208, 148, 206, 143, 150, 219, 189, + 241, 210, 19, 92, 131, 56, 70, 64, + 30, 66, 182, 163, 195, 72, 126, 110, + 107, 58, 40, 84, 250, 133, 186, 61, + 202, 94, 155, 159, 10, 21, 121, 43, + 78, 212, 229, 172, 115, 243, 167, 87, + 7, 112, 192, 247, 140, 128, 99, 13, + 103, 74, 222, 237, 49, 197, 254, 24, + 227, 165, 153, 119, 38, 184, 180, 124, + 17, 68, 146, 217, 35, 32, 137, 46, + 55, 63, 209, 91, 149, 188, 207, 205, + 144, 135, 151, 178, 220, 252, 190, 97, + 242, 86, 211, 171, 20, 42, 93, 158, + 132, 60, 57, 83, 71, 109, 65, 162, + 31, 45, 67, 216, 183, 123, 164, 118, + 196, 23, 73, 236, 127, 12, 111, 246, + 108, 161, 59, 82, 41, 157, 85, 170, + 251, 96, 134, 177, 187, 204, 62, 90, + 203, 89, 95, 176, 156, 169, 160, 81, + 11, 245, 22, 235, 122, 117, 44, 215, + 79, 174, 213, 233, 230, 231, 173, 232, + 116, 214, 244, 234, 168, 80, 88, 175, +} + +/** + * Inverse of the logarithm table. Maps integer logarithms + * to members of the field. There is no entry for 255 + * because the highest log is 254. + * + * This table was generated by `go run gentables.go` + */ +var expTable = []byte{0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80, 0x1d, 0x3a, 0x74, 0xe8, 0xcd, 0x87, 0x13, 0x26, 0x4c, 0x98, 0x2d, 0x5a, 0xb4, 0x75, 0xea, 0xc9, 0x8f, 0x3, 0x6, 0xc, 0x18, 0x30, 0x60, 0xc0, 0x9d, 0x27, 0x4e, 0x9c, 0x25, 0x4a, 0x94, 0x35, 0x6a, 0xd4, 0xb5, 0x77, 0xee, 0xc1, 0x9f, 0x23, 0x46, 0x8c, 0x5, 0xa, 0x14, 0x28, 0x50, 0xa0, 0x5d, 0xba, 0x69, 0xd2, 0xb9, 0x6f, 0xde, 0xa1, 0x5f, 0xbe, 0x61, 0xc2, 0x99, 0x2f, 0x5e, 0xbc, 0x65, 0xca, 0x89, 0xf, 0x1e, 0x3c, 0x78, 0xf0, 0xfd, 0xe7, 0xd3, 0xbb, 0x6b, 0xd6, 0xb1, 0x7f, 0xfe, 0xe1, 0xdf, 0xa3, 0x5b, 0xb6, 0x71, 0xe2, 0xd9, 0xaf, 0x43, 0x86, 0x11, 0x22, 0x44, 0x88, 0xd, 0x1a, 0x34, 0x68, 0xd0, 0xbd, 0x67, 0xce, 0x81, 0x1f, 0x3e, 0x7c, 0xf8, 0xed, 0xc7, 0x93, 0x3b, 0x76, 0xec, 0xc5, 0x97, 0x33, 0x66, 0xcc, 0x85, 0x17, 0x2e, 0x5c, 0xb8, 0x6d, 0xda, 0xa9, 0x4f, 0x9e, 0x21, 0x42, 0x84, 0x15, 0x2a, 0x54, 0xa8, 0x4d, 0x9a, 0x29, 0x52, 0xa4, 0x55, 0xaa, 0x49, 0x92, 0x39, 0x72, 0xe4, 0xd5, 0xb7, 0x73, 0xe6, 0xd1, 0xbf, 0x63, 0xc6, 0x91, 0x3f, 0x7e, 0xfc, 0xe5, 0xd7, 0xb3, 0x7b, 0xf6, 0xf1, 0xff, 0xe3, 0xdb, 0xab, 0x4b, 0x96, 0x31, 0x62, 0xc4, 0x95, 0x37, 0x6e, 0xdc, 0xa5, 0x57, 0xae, 0x41, 0x82, 0x19, 0x32, 0x64, 0xc8, 0x8d, 0x7, 0xe, 0x1c, 0x38, 0x70, 0xe0, 0xdd, 0xa7, 0x53, 0xa6, 0x51, 0xa2, 0x59, 0xb2, 0x79, 0xf2, 0xf9, 0xef, 0xc3, 0x9b, 0x2b, 0x56, 0xac, 0x45, 0x8a, 0x9, 0x12, 0x24, 0x48, 0x90, 0x3d, 0x7a, 0xf4, 0xf5, 0xf7, 0xf3, 0xfb, 0xeb, 0xcb, 0x8b, 0xb, 0x16, 0x2c, 0x58, 0xb0, 0x7d, 0xfa, 0xe9, 0xcf, 0x83, 0x1b, 0x36, 0x6c, 0xd8, 0xad, 0x47, 0x8e, 0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80, 0x1d, 0x3a, 0x74, 0xe8, 0xcd, 0x87, 0x13, 0x26, 0x4c, 0x98, 0x2d, 0x5a, 0xb4, 0x75, 0xea, 0xc9, 0x8f, 0x3, 0x6, 0xc, 0x18, 0x30, 0x60, 0xc0, 0x9d, 0x27, 0x4e, 0x9c, 0x25, 0x4a, 0x94, 0x35, 0x6a, 0xd4, 0xb5, 0x77, 0xee, 0xc1, 0x9f, 0x23, 0x46, 0x8c, 0x5, 0xa, 0x14, 0x28, 0x50, 0xa0, 0x5d, 0xba, 0x69, 0xd2, 0xb9, 0x6f, 0xde, 0xa1, 0x5f, 0xbe, 0x61, 0xc2, 0x99, 0x2f, 0x5e, 0xbc, 0x65, 0xca, 0x89, 0xf, 0x1e, 0x3c, 0x78, 0xf0, 0xfd, 0xe7, 0xd3, 0xbb, 0x6b, 0xd6, 0xb1, 0x7f, 0xfe, 0xe1, 0xdf, 0xa3, 0x5b, 0xb6, 0x71, 0xe2, 0xd9, 0xaf, 0x43, 0x86, 0x11, 0x22, 0x44, 0x88, 0xd, 0x1a, 0x34, 0x68, 0xd0, 0xbd, 0x67, 0xce, 0x81, 0x1f, 0x3e, 0x7c, 0xf8, 0xed, 0xc7, 0x93, 0x3b, 0x76, 0xec, 0xc5, 0x97, 0x33, 0x66, 0xcc, 0x85, 0x17, 0x2e, 0x5c, 0xb8, 0x6d, 0xda, 0xa9, 0x4f, 0x9e, 0x21, 0x42, 0x84, 0x15, 0x2a, 0x54, 0xa8, 0x4d, 0x9a, 0x29, 0x52, 0xa4, 0x55, 0xaa, 0x49, 0x92, 0x39, 0x72, 0xe4, 0xd5, 0xb7, 0x73, 0xe6, 0xd1, 0xbf, 0x63, 0xc6, 0x91, 0x3f, 0x7e, 0xfc, 0xe5, 0xd7, 0xb3, 0x7b, 0xf6, 0xf1, 0xff, 0xe3, 0xdb, 0xab, 0x4b, 0x96, 0x31, 0x62, 0xc4, 0x95, 0x37, 0x6e, 0xdc, 0xa5, 0x57, 0xae, 0x41, 0x82, 0x19, 0x32, 0x64, 0xc8, 0x8d, 0x7, 0xe, 0x1c, 0x38, 0x70, 0xe0, 0xdd, 0xa7, 0x53, 0xa6, 0x51, 0xa2, 0x59, 0xb2, 0x79, 0xf2, 0xf9, 0xef, 0xc3, 0x9b, 0x2b, 0x56, 0xac, 0x45, 0x8a, 0x9, 0x12, 0x24, 0x48, 0x90, 0x3d, 0x7a, 0xf4, 0xf5, 0xf7, 0xf3, 0xfb, 0xeb, 0xcb, 0x8b, 0xb, 0x16, 0x2c, 0x58, 0xb0, 0x7d, 0xfa, 0xe9, 0xcf, 0x83, 0x1b, 0x36, 0x6c, 0xd8, 0xad, 0x47, 0x8e} + +func galAdd(a, b byte) byte { + return a ^ b +} + +func galSub(a, b byte) byte { + return a ^ b +} + +var mulTable = [256][256]uint8{[256]uint8{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, 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, 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, 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, 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, 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, 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, 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, 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, 0x0, 0x0, 0x0, 0x0}, [256]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 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, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 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, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 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}, [256]uint8{0x0, 0x2, 0x4, 0x6, 0x8, 0xa, 0xc, 0xe, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e, 0x20, 0x22, 0x24, 0x26, 0x28, 0x2a, 0x2c, 0x2e, 0x30, 0x32, 0x34, 0x36, 0x38, 0x3a, 0x3c, 0x3e, 0x40, 0x42, 0x44, 0x46, 0x48, 0x4a, 0x4c, 0x4e, 0x50, 0x52, 0x54, 0x56, 0x58, 0x5a, 0x5c, 0x5e, 0x60, 0x62, 0x64, 0x66, 0x68, 0x6a, 0x6c, 0x6e, 0x70, 0x72, 0x74, 0x76, 0x78, 0x7a, 0x7c, 0x7e, 0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c, 0x8e, 0x90, 0x92, 0x94, 0x96, 0x98, 0x9a, 0x9c, 0x9e, 0xa0, 0xa2, 0xa4, 0xa6, 0xa8, 0xaa, 0xac, 0xae, 0xb0, 0xb2, 0xb4, 0xb6, 0xb8, 0xba, 0xbc, 0xbe, 0xc0, 0xc2, 0xc4, 0xc6, 0xc8, 0xca, 0xcc, 0xce, 0xd0, 0xd2, 0xd4, 0xd6, 0xd8, 0xda, 0xdc, 0xde, 0xe0, 0xe2, 0xe4, 0xe6, 0xe8, 0xea, 0xec, 0xee, 0xf0, 0xf2, 0xf4, 0xf6, 0xf8, 0xfa, 0xfc, 0xfe, 0x1d, 0x1f, 0x19, 0x1b, 0x15, 0x17, 0x11, 0x13, 0xd, 0xf, 0x9, 0xb, 0x5, 0x7, 0x1, 0x3, 0x3d, 0x3f, 0x39, 0x3b, 0x35, 0x37, 0x31, 0x33, 0x2d, 0x2f, 0x29, 0x2b, 0x25, 0x27, 0x21, 0x23, 0x5d, 0x5f, 0x59, 0x5b, 0x55, 0x57, 0x51, 0x53, 0x4d, 0x4f, 0x49, 0x4b, 0x45, 0x47, 0x41, 0x43, 0x7d, 0x7f, 0x79, 0x7b, 0x75, 0x77, 0x71, 0x73, 0x6d, 0x6f, 0x69, 0x6b, 0x65, 0x67, 0x61, 0x63, 0x9d, 0x9f, 0x99, 0x9b, 0x95, 0x97, 0x91, 0x93, 0x8d, 0x8f, 0x89, 0x8b, 0x85, 0x87, 0x81, 0x83, 0xbd, 0xbf, 0xb9, 0xbb, 0xb5, 0xb7, 0xb1, 0xb3, 0xad, 0xaf, 0xa9, 0xab, 0xa5, 0xa7, 0xa1, 0xa3, 0xdd, 0xdf, 0xd9, 0xdb, 0xd5, 0xd7, 0xd1, 0xd3, 0xcd, 0xcf, 0xc9, 0xcb, 0xc5, 0xc7, 0xc1, 0xc3, 0xfd, 0xff, 0xf9, 0xfb, 0xf5, 0xf7, 0xf1, 0xf3, 0xed, 0xef, 0xe9, 0xeb, 0xe5, 0xe7, 0xe1, 0xe3}, [256]uint8{0x0, 0x3, 0x6, 0x5, 0xc, 0xf, 0xa, 0x9, 0x18, 0x1b, 0x1e, 0x1d, 0x14, 0x17, 0x12, 0x11, 0x30, 0x33, 0x36, 0x35, 0x3c, 0x3f, 0x3a, 0x39, 0x28, 0x2b, 0x2e, 0x2d, 0x24, 0x27, 0x22, 0x21, 0x60, 0x63, 0x66, 0x65, 0x6c, 0x6f, 0x6a, 0x69, 0x78, 0x7b, 0x7e, 0x7d, 0x74, 0x77, 0x72, 0x71, 0x50, 0x53, 0x56, 0x55, 0x5c, 0x5f, 0x5a, 0x59, 0x48, 0x4b, 0x4e, 0x4d, 0x44, 0x47, 0x42, 0x41, 0xc0, 0xc3, 0xc6, 0xc5, 0xcc, 0xcf, 0xca, 0xc9, 0xd8, 0xdb, 0xde, 0xdd, 0xd4, 0xd7, 0xd2, 0xd1, 0xf0, 0xf3, 0xf6, 0xf5, 0xfc, 0xff, 0xfa, 0xf9, 0xe8, 0xeb, 0xee, 0xed, 0xe4, 0xe7, 0xe2, 0xe1, 0xa0, 0xa3, 0xa6, 0xa5, 0xac, 0xaf, 0xaa, 0xa9, 0xb8, 0xbb, 0xbe, 0xbd, 0xb4, 0xb7, 0xb2, 0xb1, 0x90, 0x93, 0x96, 0x95, 0x9c, 0x9f, 0x9a, 0x99, 0x88, 0x8b, 0x8e, 0x8d, 0x84, 0x87, 0x82, 0x81, 0x9d, 0x9e, 0x9b, 0x98, 0x91, 0x92, 0x97, 0x94, 0x85, 0x86, 0x83, 0x80, 0x89, 0x8a, 0x8f, 0x8c, 0xad, 0xae, 0xab, 0xa8, 0xa1, 0xa2, 0xa7, 0xa4, 0xb5, 0xb6, 0xb3, 0xb0, 0xb9, 0xba, 0xbf, 0xbc, 0xfd, 0xfe, 0xfb, 0xf8, 0xf1, 0xf2, 0xf7, 0xf4, 0xe5, 0xe6, 0xe3, 0xe0, 0xe9, 0xea, 0xef, 0xec, 0xcd, 0xce, 0xcb, 0xc8, 0xc1, 0xc2, 0xc7, 0xc4, 0xd5, 0xd6, 0xd3, 0xd0, 0xd9, 0xda, 0xdf, 0xdc, 0x5d, 0x5e, 0x5b, 0x58, 0x51, 0x52, 0x57, 0x54, 0x45, 0x46, 0x43, 0x40, 0x49, 0x4a, 0x4f, 0x4c, 0x6d, 0x6e, 0x6b, 0x68, 0x61, 0x62, 0x67, 0x64, 0x75, 0x76, 0x73, 0x70, 0x79, 0x7a, 0x7f, 0x7c, 0x3d, 0x3e, 0x3b, 0x38, 0x31, 0x32, 0x37, 0x34, 0x25, 0x26, 0x23, 0x20, 0x29, 0x2a, 0x2f, 0x2c, 0xd, 0xe, 0xb, 0x8, 0x1, 0x2, 0x7, 0x4, 0x15, 0x16, 0x13, 0x10, 0x19, 0x1a, 0x1f, 0x1c}, [256]uint8{0x0, 0x4, 0x8, 0xc, 0x10, 0x14, 0x18, 0x1c, 0x20, 0x24, 0x28, 0x2c, 0x30, 0x34, 0x38, 0x3c, 0x40, 0x44, 0x48, 0x4c, 0x50, 0x54, 0x58, 0x5c, 0x60, 0x64, 0x68, 0x6c, 0x70, 0x74, 0x78, 0x7c, 0x80, 0x84, 0x88, 0x8c, 0x90, 0x94, 0x98, 0x9c, 0xa0, 0xa4, 0xa8, 0xac, 0xb0, 0xb4, 0xb8, 0xbc, 0xc0, 0xc4, 0xc8, 0xcc, 0xd0, 0xd4, 0xd8, 0xdc, 0xe0, 0xe4, 0xe8, 0xec, 0xf0, 0xf4, 0xf8, 0xfc, 0x1d, 0x19, 0x15, 0x11, 0xd, 0x9, 0x5, 0x1, 0x3d, 0x39, 0x35, 0x31, 0x2d, 0x29, 0x25, 0x21, 0x5d, 0x59, 0x55, 0x51, 0x4d, 0x49, 0x45, 0x41, 0x7d, 0x79, 0x75, 0x71, 0x6d, 0x69, 0x65, 0x61, 0x9d, 0x99, 0x95, 0x91, 0x8d, 0x89, 0x85, 0x81, 0xbd, 0xb9, 0xb5, 0xb1, 0xad, 0xa9, 0xa5, 0xa1, 0xdd, 0xd9, 0xd5, 0xd1, 0xcd, 0xc9, 0xc5, 0xc1, 0xfd, 0xf9, 0xf5, 0xf1, 0xed, 0xe9, 0xe5, 0xe1, 0x3a, 0x3e, 0x32, 0x36, 0x2a, 0x2e, 0x22, 0x26, 0x1a, 0x1e, 0x12, 0x16, 0xa, 0xe, 0x2, 0x6, 0x7a, 0x7e, 0x72, 0x76, 0x6a, 0x6e, 0x62, 0x66, 0x5a, 0x5e, 0x52, 0x56, 0x4a, 0x4e, 0x42, 0x46, 0xba, 0xbe, 0xb2, 0xb6, 0xaa, 0xae, 0xa2, 0xa6, 0x9a, 0x9e, 0x92, 0x96, 0x8a, 0x8e, 0x82, 0x86, 0xfa, 0xfe, 0xf2, 0xf6, 0xea, 0xee, 0xe2, 0xe6, 0xda, 0xde, 0xd2, 0xd6, 0xca, 0xce, 0xc2, 0xc6, 0x27, 0x23, 0x2f, 0x2b, 0x37, 0x33, 0x3f, 0x3b, 0x7, 0x3, 0xf, 0xb, 0x17, 0x13, 0x1f, 0x1b, 0x67, 0x63, 0x6f, 0x6b, 0x77, 0x73, 0x7f, 0x7b, 0x47, 0x43, 0x4f, 0x4b, 0x57, 0x53, 0x5f, 0x5b, 0xa7, 0xa3, 0xaf, 0xab, 0xb7, 0xb3, 0xbf, 0xbb, 0x87, 0x83, 0x8f, 0x8b, 0x97, 0x93, 0x9f, 0x9b, 0xe7, 0xe3, 0xef, 0xeb, 0xf7, 0xf3, 0xff, 0xfb, 0xc7, 0xc3, 0xcf, 0xcb, 0xd7, 0xd3, 0xdf, 0xdb}, [256]uint8{0x0, 0x5, 0xa, 0xf, 0x14, 0x11, 0x1e, 0x1b, 0x28, 0x2d, 0x22, 0x27, 0x3c, 0x39, 0x36, 0x33, 0x50, 0x55, 0x5a, 0x5f, 0x44, 0x41, 0x4e, 0x4b, 0x78, 0x7d, 0x72, 0x77, 0x6c, 0x69, 0x66, 0x63, 0xa0, 0xa5, 0xaa, 0xaf, 0xb4, 0xb1, 0xbe, 0xbb, 0x88, 0x8d, 0x82, 0x87, 0x9c, 0x99, 0x96, 0x93, 0xf0, 0xf5, 0xfa, 0xff, 0xe4, 0xe1, 0xee, 0xeb, 0xd8, 0xdd, 0xd2, 0xd7, 0xcc, 0xc9, 0xc6, 0xc3, 0x5d, 0x58, 0x57, 0x52, 0x49, 0x4c, 0x43, 0x46, 0x75, 0x70, 0x7f, 0x7a, 0x61, 0x64, 0x6b, 0x6e, 0xd, 0x8, 0x7, 0x2, 0x19, 0x1c, 0x13, 0x16, 0x25, 0x20, 0x2f, 0x2a, 0x31, 0x34, 0x3b, 0x3e, 0xfd, 0xf8, 0xf7, 0xf2, 0xe9, 0xec, 0xe3, 0xe6, 0xd5, 0xd0, 0xdf, 0xda, 0xc1, 0xc4, 0xcb, 0xce, 0xad, 0xa8, 0xa7, 0xa2, 0xb9, 0xbc, 0xb3, 0xb6, 0x85, 0x80, 0x8f, 0x8a, 0x91, 0x94, 0x9b, 0x9e, 0xba, 0xbf, 0xb0, 0xb5, 0xae, 0xab, 0xa4, 0xa1, 0x92, 0x97, 0x98, 0x9d, 0x86, 0x83, 0x8c, 0x89, 0xea, 0xef, 0xe0, 0xe5, 0xfe, 0xfb, 0xf4, 0xf1, 0xc2, 0xc7, 0xc8, 0xcd, 0xd6, 0xd3, 0xdc, 0xd9, 0x1a, 0x1f, 0x10, 0x15, 0xe, 0xb, 0x4, 0x1, 0x32, 0x37, 0x38, 0x3d, 0x26, 0x23, 0x2c, 0x29, 0x4a, 0x4f, 0x40, 0x45, 0x5e, 0x5b, 0x54, 0x51, 0x62, 0x67, 0x68, 0x6d, 0x76, 0x73, 0x7c, 0x79, 0xe7, 0xe2, 0xed, 0xe8, 0xf3, 0xf6, 0xf9, 0xfc, 0xcf, 0xca, 0xc5, 0xc0, 0xdb, 0xde, 0xd1, 0xd4, 0xb7, 0xb2, 0xbd, 0xb8, 0xa3, 0xa6, 0xa9, 0xac, 0x9f, 0x9a, 0x95, 0x90, 0x8b, 0x8e, 0x81, 0x84, 0x47, 0x42, 0x4d, 0x48, 0x53, 0x56, 0x59, 0x5c, 0x6f, 0x6a, 0x65, 0x60, 0x7b, 0x7e, 0x71, 0x74, 0x17, 0x12, 0x1d, 0x18, 0x3, 0x6, 0x9, 0xc, 0x3f, 0x3a, 0x35, 0x30, 0x2b, 0x2e, 0x21, 0x24}, [256]uint8{0x0, 0x6, 0xc, 0xa, 0x18, 0x1e, 0x14, 0x12, 0x30, 0x36, 0x3c, 0x3a, 0x28, 0x2e, 0x24, 0x22, 0x60, 0x66, 0x6c, 0x6a, 0x78, 0x7e, 0x74, 0x72, 0x50, 0x56, 0x5c, 0x5a, 0x48, 0x4e, 0x44, 0x42, 0xc0, 0xc6, 0xcc, 0xca, 0xd8, 0xde, 0xd4, 0xd2, 0xf0, 0xf6, 0xfc, 0xfa, 0xe8, 0xee, 0xe4, 0xe2, 0xa0, 0xa6, 0xac, 0xaa, 0xb8, 0xbe, 0xb4, 0xb2, 0x90, 0x96, 0x9c, 0x9a, 0x88, 0x8e, 0x84, 0x82, 0x9d, 0x9b, 0x91, 0x97, 0x85, 0x83, 0x89, 0x8f, 0xad, 0xab, 0xa1, 0xa7, 0xb5, 0xb3, 0xb9, 0xbf, 0xfd, 0xfb, 0xf1, 0xf7, 0xe5, 0xe3, 0xe9, 0xef, 0xcd, 0xcb, 0xc1, 0xc7, 0xd5, 0xd3, 0xd9, 0xdf, 0x5d, 0x5b, 0x51, 0x57, 0x45, 0x43, 0x49, 0x4f, 0x6d, 0x6b, 0x61, 0x67, 0x75, 0x73, 0x79, 0x7f, 0x3d, 0x3b, 0x31, 0x37, 0x25, 0x23, 0x29, 0x2f, 0xd, 0xb, 0x1, 0x7, 0x15, 0x13, 0x19, 0x1f, 0x27, 0x21, 0x2b, 0x2d, 0x3f, 0x39, 0x33, 0x35, 0x17, 0x11, 0x1b, 0x1d, 0xf, 0x9, 0x3, 0x5, 0x47, 0x41, 0x4b, 0x4d, 0x5f, 0x59, 0x53, 0x55, 0x77, 0x71, 0x7b, 0x7d, 0x6f, 0x69, 0x63, 0x65, 0xe7, 0xe1, 0xeb, 0xed, 0xff, 0xf9, 0xf3, 0xf5, 0xd7, 0xd1, 0xdb, 0xdd, 0xcf, 0xc9, 0xc3, 0xc5, 0x87, 0x81, 0x8b, 0x8d, 0x9f, 0x99, 0x93, 0x95, 0xb7, 0xb1, 0xbb, 0xbd, 0xaf, 0xa9, 0xa3, 0xa5, 0xba, 0xbc, 0xb6, 0xb0, 0xa2, 0xa4, 0xae, 0xa8, 0x8a, 0x8c, 0x86, 0x80, 0x92, 0x94, 0x9e, 0x98, 0xda, 0xdc, 0xd6, 0xd0, 0xc2, 0xc4, 0xce, 0xc8, 0xea, 0xec, 0xe6, 0xe0, 0xf2, 0xf4, 0xfe, 0xf8, 0x7a, 0x7c, 0x76, 0x70, 0x62, 0x64, 0x6e, 0x68, 0x4a, 0x4c, 0x46, 0x40, 0x52, 0x54, 0x5e, 0x58, 0x1a, 0x1c, 0x16, 0x10, 0x2, 0x4, 0xe, 0x8, 0x2a, 0x2c, 0x26, 0x20, 0x32, 0x34, 0x3e, 0x38}, [256]uint8{0x0, 0x7, 0xe, 0x9, 0x1c, 0x1b, 0x12, 0x15, 0x38, 0x3f, 0x36, 0x31, 0x24, 0x23, 0x2a, 0x2d, 0x70, 0x77, 0x7e, 0x79, 0x6c, 0x6b, 0x62, 0x65, 0x48, 0x4f, 0x46, 0x41, 0x54, 0x53, 0x5a, 0x5d, 0xe0, 0xe7, 0xee, 0xe9, 0xfc, 0xfb, 0xf2, 0xf5, 0xd8, 0xdf, 0xd6, 0xd1, 0xc4, 0xc3, 0xca, 0xcd, 0x90, 0x97, 0x9e, 0x99, 0x8c, 0x8b, 0x82, 0x85, 0xa8, 0xaf, 0xa6, 0xa1, 0xb4, 0xb3, 0xba, 0xbd, 0xdd, 0xda, 0xd3, 0xd4, 0xc1, 0xc6, 0xcf, 0xc8, 0xe5, 0xe2, 0xeb, 0xec, 0xf9, 0xfe, 0xf7, 0xf0, 0xad, 0xaa, 0xa3, 0xa4, 0xb1, 0xb6, 0xbf, 0xb8, 0x95, 0x92, 0x9b, 0x9c, 0x89, 0x8e, 0x87, 0x80, 0x3d, 0x3a, 0x33, 0x34, 0x21, 0x26, 0x2f, 0x28, 0x5, 0x2, 0xb, 0xc, 0x19, 0x1e, 0x17, 0x10, 0x4d, 0x4a, 0x43, 0x44, 0x51, 0x56, 0x5f, 0x58, 0x75, 0x72, 0x7b, 0x7c, 0x69, 0x6e, 0x67, 0x60, 0xa7, 0xa0, 0xa9, 0xae, 0xbb, 0xbc, 0xb5, 0xb2, 0x9f, 0x98, 0x91, 0x96, 0x83, 0x84, 0x8d, 0x8a, 0xd7, 0xd0, 0xd9, 0xde, 0xcb, 0xcc, 0xc5, 0xc2, 0xef, 0xe8, 0xe1, 0xe6, 0xf3, 0xf4, 0xfd, 0xfa, 0x47, 0x40, 0x49, 0x4e, 0x5b, 0x5c, 0x55, 0x52, 0x7f, 0x78, 0x71, 0x76, 0x63, 0x64, 0x6d, 0x6a, 0x37, 0x30, 0x39, 0x3e, 0x2b, 0x2c, 0x25, 0x22, 0xf, 0x8, 0x1, 0x6, 0x13, 0x14, 0x1d, 0x1a, 0x7a, 0x7d, 0x74, 0x73, 0x66, 0x61, 0x68, 0x6f, 0x42, 0x45, 0x4c, 0x4b, 0x5e, 0x59, 0x50, 0x57, 0xa, 0xd, 0x4, 0x3, 0x16, 0x11, 0x18, 0x1f, 0x32, 0x35, 0x3c, 0x3b, 0x2e, 0x29, 0x20, 0x27, 0x9a, 0x9d, 0x94, 0x93, 0x86, 0x81, 0x88, 0x8f, 0xa2, 0xa5, 0xac, 0xab, 0xbe, 0xb9, 0xb0, 0xb7, 0xea, 0xed, 0xe4, 0xe3, 0xf6, 0xf1, 0xf8, 0xff, 0xd2, 0xd5, 0xdc, 0xdb, 0xce, 0xc9, 0xc0, 0xc7}, [256]uint8{0x0, 0x8, 0x10, 0x18, 0x20, 0x28, 0x30, 0x38, 0x40, 0x48, 0x50, 0x58, 0x60, 0x68, 0x70, 0x78, 0x80, 0x88, 0x90, 0x98, 0xa0, 0xa8, 0xb0, 0xb8, 0xc0, 0xc8, 0xd0, 0xd8, 0xe0, 0xe8, 0xf0, 0xf8, 0x1d, 0x15, 0xd, 0x5, 0x3d, 0x35, 0x2d, 0x25, 0x5d, 0x55, 0x4d, 0x45, 0x7d, 0x75, 0x6d, 0x65, 0x9d, 0x95, 0x8d, 0x85, 0xbd, 0xb5, 0xad, 0xa5, 0xdd, 0xd5, 0xcd, 0xc5, 0xfd, 0xf5, 0xed, 0xe5, 0x3a, 0x32, 0x2a, 0x22, 0x1a, 0x12, 0xa, 0x2, 0x7a, 0x72, 0x6a, 0x62, 0x5a, 0x52, 0x4a, 0x42, 0xba, 0xb2, 0xaa, 0xa2, 0x9a, 0x92, 0x8a, 0x82, 0xfa, 0xf2, 0xea, 0xe2, 0xda, 0xd2, 0xca, 0xc2, 0x27, 0x2f, 0x37, 0x3f, 0x7, 0xf, 0x17, 0x1f, 0x67, 0x6f, 0x77, 0x7f, 0x47, 0x4f, 0x57, 0x5f, 0xa7, 0xaf, 0xb7, 0xbf, 0x87, 0x8f, 0x97, 0x9f, 0xe7, 0xef, 0xf7, 0xff, 0xc7, 0xcf, 0xd7, 0xdf, 0x74, 0x7c, 0x64, 0x6c, 0x54, 0x5c, 0x44, 0x4c, 0x34, 0x3c, 0x24, 0x2c, 0x14, 0x1c, 0x4, 0xc, 0xf4, 0xfc, 0xe4, 0xec, 0xd4, 0xdc, 0xc4, 0xcc, 0xb4, 0xbc, 0xa4, 0xac, 0x94, 0x9c, 0x84, 0x8c, 0x69, 0x61, 0x79, 0x71, 0x49, 0x41, 0x59, 0x51, 0x29, 0x21, 0x39, 0x31, 0x9, 0x1, 0x19, 0x11, 0xe9, 0xe1, 0xf9, 0xf1, 0xc9, 0xc1, 0xd9, 0xd1, 0xa9, 0xa1, 0xb9, 0xb1, 0x89, 0x81, 0x99, 0x91, 0x4e, 0x46, 0x5e, 0x56, 0x6e, 0x66, 0x7e, 0x76, 0xe, 0x6, 0x1e, 0x16, 0x2e, 0x26, 0x3e, 0x36, 0xce, 0xc6, 0xde, 0xd6, 0xee, 0xe6, 0xfe, 0xf6, 0x8e, 0x86, 0x9e, 0x96, 0xae, 0xa6, 0xbe, 0xb6, 0x53, 0x5b, 0x43, 0x4b, 0x73, 0x7b, 0x63, 0x6b, 0x13, 0x1b, 0x3, 0xb, 0x33, 0x3b, 0x23, 0x2b, 0xd3, 0xdb, 0xc3, 0xcb, 0xf3, 0xfb, 0xe3, 0xeb, 0x93, 0x9b, 0x83, 0x8b, 0xb3, 0xbb, 0xa3, 0xab}, [256]uint8{0x0, 0x9, 0x12, 0x1b, 0x24, 0x2d, 0x36, 0x3f, 0x48, 0x41, 0x5a, 0x53, 0x6c, 0x65, 0x7e, 0x77, 0x90, 0x99, 0x82, 0x8b, 0xb4, 0xbd, 0xa6, 0xaf, 0xd8, 0xd1, 0xca, 0xc3, 0xfc, 0xf5, 0xee, 0xe7, 0x3d, 0x34, 0x2f, 0x26, 0x19, 0x10, 0xb, 0x2, 0x75, 0x7c, 0x67, 0x6e, 0x51, 0x58, 0x43, 0x4a, 0xad, 0xa4, 0xbf, 0xb6, 0x89, 0x80, 0x9b, 0x92, 0xe5, 0xec, 0xf7, 0xfe, 0xc1, 0xc8, 0xd3, 0xda, 0x7a, 0x73, 0x68, 0x61, 0x5e, 0x57, 0x4c, 0x45, 0x32, 0x3b, 0x20, 0x29, 0x16, 0x1f, 0x4, 0xd, 0xea, 0xe3, 0xf8, 0xf1, 0xce, 0xc7, 0xdc, 0xd5, 0xa2, 0xab, 0xb0, 0xb9, 0x86, 0x8f, 0x94, 0x9d, 0x47, 0x4e, 0x55, 0x5c, 0x63, 0x6a, 0x71, 0x78, 0xf, 0x6, 0x1d, 0x14, 0x2b, 0x22, 0x39, 0x30, 0xd7, 0xde, 0xc5, 0xcc, 0xf3, 0xfa, 0xe1, 0xe8, 0x9f, 0x96, 0x8d, 0x84, 0xbb, 0xb2, 0xa9, 0xa0, 0xf4, 0xfd, 0xe6, 0xef, 0xd0, 0xd9, 0xc2, 0xcb, 0xbc, 0xb5, 0xae, 0xa7, 0x98, 0x91, 0x8a, 0x83, 0x64, 0x6d, 0x76, 0x7f, 0x40, 0x49, 0x52, 0x5b, 0x2c, 0x25, 0x3e, 0x37, 0x8, 0x1, 0x1a, 0x13, 0xc9, 0xc0, 0xdb, 0xd2, 0xed, 0xe4, 0xff, 0xf6, 0x81, 0x88, 0x93, 0x9a, 0xa5, 0xac, 0xb7, 0xbe, 0x59, 0x50, 0x4b, 0x42, 0x7d, 0x74, 0x6f, 0x66, 0x11, 0x18, 0x3, 0xa, 0x35, 0x3c, 0x27, 0x2e, 0x8e, 0x87, 0x9c, 0x95, 0xaa, 0xa3, 0xb8, 0xb1, 0xc6, 0xcf, 0xd4, 0xdd, 0xe2, 0xeb, 0xf0, 0xf9, 0x1e, 0x17, 0xc, 0x5, 0x3a, 0x33, 0x28, 0x21, 0x56, 0x5f, 0x44, 0x4d, 0x72, 0x7b, 0x60, 0x69, 0xb3, 0xba, 0xa1, 0xa8, 0x97, 0x9e, 0x85, 0x8c, 0xfb, 0xf2, 0xe9, 0xe0, 0xdf, 0xd6, 0xcd, 0xc4, 0x23, 0x2a, 0x31, 0x38, 0x7, 0xe, 0x15, 0x1c, 0x6b, 0x62, 0x79, 0x70, 0x4f, 0x46, 0x5d, 0x54}, [256]uint8{0x0, 0xa, 0x14, 0x1e, 0x28, 0x22, 0x3c, 0x36, 0x50, 0x5a, 0x44, 0x4e, 0x78, 0x72, 0x6c, 0x66, 0xa0, 0xaa, 0xb4, 0xbe, 0x88, 0x82, 0x9c, 0x96, 0xf0, 0xfa, 0xe4, 0xee, 0xd8, 0xd2, 0xcc, 0xc6, 0x5d, 0x57, 0x49, 0x43, 0x75, 0x7f, 0x61, 0x6b, 0xd, 0x7, 0x19, 0x13, 0x25, 0x2f, 0x31, 0x3b, 0xfd, 0xf7, 0xe9, 0xe3, 0xd5, 0xdf, 0xc1, 0xcb, 0xad, 0xa7, 0xb9, 0xb3, 0x85, 0x8f, 0x91, 0x9b, 0xba, 0xb0, 0xae, 0xa4, 0x92, 0x98, 0x86, 0x8c, 0xea, 0xe0, 0xfe, 0xf4, 0xc2, 0xc8, 0xd6, 0xdc, 0x1a, 0x10, 0xe, 0x4, 0x32, 0x38, 0x26, 0x2c, 0x4a, 0x40, 0x5e, 0x54, 0x62, 0x68, 0x76, 0x7c, 0xe7, 0xed, 0xf3, 0xf9, 0xcf, 0xc5, 0xdb, 0xd1, 0xb7, 0xbd, 0xa3, 0xa9, 0x9f, 0x95, 0x8b, 0x81, 0x47, 0x4d, 0x53, 0x59, 0x6f, 0x65, 0x7b, 0x71, 0x17, 0x1d, 0x3, 0x9, 0x3f, 0x35, 0x2b, 0x21, 0x69, 0x63, 0x7d, 0x77, 0x41, 0x4b, 0x55, 0x5f, 0x39, 0x33, 0x2d, 0x27, 0x11, 0x1b, 0x5, 0xf, 0xc9, 0xc3, 0xdd, 0xd7, 0xe1, 0xeb, 0xf5, 0xff, 0x99, 0x93, 0x8d, 0x87, 0xb1, 0xbb, 0xa5, 0xaf, 0x34, 0x3e, 0x20, 0x2a, 0x1c, 0x16, 0x8, 0x2, 0x64, 0x6e, 0x70, 0x7a, 0x4c, 0x46, 0x58, 0x52, 0x94, 0x9e, 0x80, 0x8a, 0xbc, 0xb6, 0xa8, 0xa2, 0xc4, 0xce, 0xd0, 0xda, 0xec, 0xe6, 0xf8, 0xf2, 0xd3, 0xd9, 0xc7, 0xcd, 0xfb, 0xf1, 0xef, 0xe5, 0x83, 0x89, 0x97, 0x9d, 0xab, 0xa1, 0xbf, 0xb5, 0x73, 0x79, 0x67, 0x6d, 0x5b, 0x51, 0x4f, 0x45, 0x23, 0x29, 0x37, 0x3d, 0xb, 0x1, 0x1f, 0x15, 0x8e, 0x84, 0x9a, 0x90, 0xa6, 0xac, 0xb2, 0xb8, 0xde, 0xd4, 0xca, 0xc0, 0xf6, 0xfc, 0xe2, 0xe8, 0x2e, 0x24, 0x3a, 0x30, 0x6, 0xc, 0x12, 0x18, 0x7e, 0x74, 0x6a, 0x60, 0x56, 0x5c, 0x42, 0x48}, [256]uint8{0x0, 0xb, 0x16, 0x1d, 0x2c, 0x27, 0x3a, 0x31, 0x58, 0x53, 0x4e, 0x45, 0x74, 0x7f, 0x62, 0x69, 0xb0, 0xbb, 0xa6, 0xad, 0x9c, 0x97, 0x8a, 0x81, 0xe8, 0xe3, 0xfe, 0xf5, 0xc4, 0xcf, 0xd2, 0xd9, 0x7d, 0x76, 0x6b, 0x60, 0x51, 0x5a, 0x47, 0x4c, 0x25, 0x2e, 0x33, 0x38, 0x9, 0x2, 0x1f, 0x14, 0xcd, 0xc6, 0xdb, 0xd0, 0xe1, 0xea, 0xf7, 0xfc, 0x95, 0x9e, 0x83, 0x88, 0xb9, 0xb2, 0xaf, 0xa4, 0xfa, 0xf1, 0xec, 0xe7, 0xd6, 0xdd, 0xc0, 0xcb, 0xa2, 0xa9, 0xb4, 0xbf, 0x8e, 0x85, 0x98, 0x93, 0x4a, 0x41, 0x5c, 0x57, 0x66, 0x6d, 0x70, 0x7b, 0x12, 0x19, 0x4, 0xf, 0x3e, 0x35, 0x28, 0x23, 0x87, 0x8c, 0x91, 0x9a, 0xab, 0xa0, 0xbd, 0xb6, 0xdf, 0xd4, 0xc9, 0xc2, 0xf3, 0xf8, 0xe5, 0xee, 0x37, 0x3c, 0x21, 0x2a, 0x1b, 0x10, 0xd, 0x6, 0x6f, 0x64, 0x79, 0x72, 0x43, 0x48, 0x55, 0x5e, 0xe9, 0xe2, 0xff, 0xf4, 0xc5, 0xce, 0xd3, 0xd8, 0xb1, 0xba, 0xa7, 0xac, 0x9d, 0x96, 0x8b, 0x80, 0x59, 0x52, 0x4f, 0x44, 0x75, 0x7e, 0x63, 0x68, 0x1, 0xa, 0x17, 0x1c, 0x2d, 0x26, 0x3b, 0x30, 0x94, 0x9f, 0x82, 0x89, 0xb8, 0xb3, 0xae, 0xa5, 0xcc, 0xc7, 0xda, 0xd1, 0xe0, 0xeb, 0xf6, 0xfd, 0x24, 0x2f, 0x32, 0x39, 0x8, 0x3, 0x1e, 0x15, 0x7c, 0x77, 0x6a, 0x61, 0x50, 0x5b, 0x46, 0x4d, 0x13, 0x18, 0x5, 0xe, 0x3f, 0x34, 0x29, 0x22, 0x4b, 0x40, 0x5d, 0x56, 0x67, 0x6c, 0x71, 0x7a, 0xa3, 0xa8, 0xb5, 0xbe, 0x8f, 0x84, 0x99, 0x92, 0xfb, 0xf0, 0xed, 0xe6, 0xd7, 0xdc, 0xc1, 0xca, 0x6e, 0x65, 0x78, 0x73, 0x42, 0x49, 0x54, 0x5f, 0x36, 0x3d, 0x20, 0x2b, 0x1a, 0x11, 0xc, 0x7, 0xde, 0xd5, 0xc8, 0xc3, 0xf2, 0xf9, 0xe4, 0xef, 0x86, 0x8d, 0x90, 0x9b, 0xaa, 0xa1, 0xbc, 0xb7}, [256]uint8{0x0, 0xc, 0x18, 0x14, 0x30, 0x3c, 0x28, 0x24, 0x60, 0x6c, 0x78, 0x74, 0x50, 0x5c, 0x48, 0x44, 0xc0, 0xcc, 0xd8, 0xd4, 0xf0, 0xfc, 0xe8, 0xe4, 0xa0, 0xac, 0xb8, 0xb4, 0x90, 0x9c, 0x88, 0x84, 0x9d, 0x91, 0x85, 0x89, 0xad, 0xa1, 0xb5, 0xb9, 0xfd, 0xf1, 0xe5, 0xe9, 0xcd, 0xc1, 0xd5, 0xd9, 0x5d, 0x51, 0x45, 0x49, 0x6d, 0x61, 0x75, 0x79, 0x3d, 0x31, 0x25, 0x29, 0xd, 0x1, 0x15, 0x19, 0x27, 0x2b, 0x3f, 0x33, 0x17, 0x1b, 0xf, 0x3, 0x47, 0x4b, 0x5f, 0x53, 0x77, 0x7b, 0x6f, 0x63, 0xe7, 0xeb, 0xff, 0xf3, 0xd7, 0xdb, 0xcf, 0xc3, 0x87, 0x8b, 0x9f, 0x93, 0xb7, 0xbb, 0xaf, 0xa3, 0xba, 0xb6, 0xa2, 0xae, 0x8a, 0x86, 0x92, 0x9e, 0xda, 0xd6, 0xc2, 0xce, 0xea, 0xe6, 0xf2, 0xfe, 0x7a, 0x76, 0x62, 0x6e, 0x4a, 0x46, 0x52, 0x5e, 0x1a, 0x16, 0x2, 0xe, 0x2a, 0x26, 0x32, 0x3e, 0x4e, 0x42, 0x56, 0x5a, 0x7e, 0x72, 0x66, 0x6a, 0x2e, 0x22, 0x36, 0x3a, 0x1e, 0x12, 0x6, 0xa, 0x8e, 0x82, 0x96, 0x9a, 0xbe, 0xb2, 0xa6, 0xaa, 0xee, 0xe2, 0xf6, 0xfa, 0xde, 0xd2, 0xc6, 0xca, 0xd3, 0xdf, 0xcb, 0xc7, 0xe3, 0xef, 0xfb, 0xf7, 0xb3, 0xbf, 0xab, 0xa7, 0x83, 0x8f, 0x9b, 0x97, 0x13, 0x1f, 0xb, 0x7, 0x23, 0x2f, 0x3b, 0x37, 0x73, 0x7f, 0x6b, 0x67, 0x43, 0x4f, 0x5b, 0x57, 0x69, 0x65, 0x71, 0x7d, 0x59, 0x55, 0x41, 0x4d, 0x9, 0x5, 0x11, 0x1d, 0x39, 0x35, 0x21, 0x2d, 0xa9, 0xa5, 0xb1, 0xbd, 0x99, 0x95, 0x81, 0x8d, 0xc9, 0xc5, 0xd1, 0xdd, 0xf9, 0xf5, 0xe1, 0xed, 0xf4, 0xf8, 0xec, 0xe0, 0xc4, 0xc8, 0xdc, 0xd0, 0x94, 0x98, 0x8c, 0x80, 0xa4, 0xa8, 0xbc, 0xb0, 0x34, 0x38, 0x2c, 0x20, 0x4, 0x8, 0x1c, 0x10, 0x54, 0x58, 0x4c, 0x40, 0x64, 0x68, 0x7c, 0x70}, [256]uint8{0x0, 0xd, 0x1a, 0x17, 0x34, 0x39, 0x2e, 0x23, 0x68, 0x65, 0x72, 0x7f, 0x5c, 0x51, 0x46, 0x4b, 0xd0, 0xdd, 0xca, 0xc7, 0xe4, 0xe9, 0xfe, 0xf3, 0xb8, 0xb5, 0xa2, 0xaf, 0x8c, 0x81, 0x96, 0x9b, 0xbd, 0xb0, 0xa7, 0xaa, 0x89, 0x84, 0x93, 0x9e, 0xd5, 0xd8, 0xcf, 0xc2, 0xe1, 0xec, 0xfb, 0xf6, 0x6d, 0x60, 0x77, 0x7a, 0x59, 0x54, 0x43, 0x4e, 0x5, 0x8, 0x1f, 0x12, 0x31, 0x3c, 0x2b, 0x26, 0x67, 0x6a, 0x7d, 0x70, 0x53, 0x5e, 0x49, 0x44, 0xf, 0x2, 0x15, 0x18, 0x3b, 0x36, 0x21, 0x2c, 0xb7, 0xba, 0xad, 0xa0, 0x83, 0x8e, 0x99, 0x94, 0xdf, 0xd2, 0xc5, 0xc8, 0xeb, 0xe6, 0xf1, 0xfc, 0xda, 0xd7, 0xc0, 0xcd, 0xee, 0xe3, 0xf4, 0xf9, 0xb2, 0xbf, 0xa8, 0xa5, 0x86, 0x8b, 0x9c, 0x91, 0xa, 0x7, 0x10, 0x1d, 0x3e, 0x33, 0x24, 0x29, 0x62, 0x6f, 0x78, 0x75, 0x56, 0x5b, 0x4c, 0x41, 0xce, 0xc3, 0xd4, 0xd9, 0xfa, 0xf7, 0xe0, 0xed, 0xa6, 0xab, 0xbc, 0xb1, 0x92, 0x9f, 0x88, 0x85, 0x1e, 0x13, 0x4, 0x9, 0x2a, 0x27, 0x30, 0x3d, 0x76, 0x7b, 0x6c, 0x61, 0x42, 0x4f, 0x58, 0x55, 0x73, 0x7e, 0x69, 0x64, 0x47, 0x4a, 0x5d, 0x50, 0x1b, 0x16, 0x1, 0xc, 0x2f, 0x22, 0x35, 0x38, 0xa3, 0xae, 0xb9, 0xb4, 0x97, 0x9a, 0x8d, 0x80, 0xcb, 0xc6, 0xd1, 0xdc, 0xff, 0xf2, 0xe5, 0xe8, 0xa9, 0xa4, 0xb3, 0xbe, 0x9d, 0x90, 0x87, 0x8a, 0xc1, 0xcc, 0xdb, 0xd6, 0xf5, 0xf8, 0xef, 0xe2, 0x79, 0x74, 0x63, 0x6e, 0x4d, 0x40, 0x57, 0x5a, 0x11, 0x1c, 0xb, 0x6, 0x25, 0x28, 0x3f, 0x32, 0x14, 0x19, 0xe, 0x3, 0x20, 0x2d, 0x3a, 0x37, 0x7c, 0x71, 0x66, 0x6b, 0x48, 0x45, 0x52, 0x5f, 0xc4, 0xc9, 0xde, 0xd3, 0xf0, 0xfd, 0xea, 0xe7, 0xac, 0xa1, 0xb6, 0xbb, 0x98, 0x95, 0x82, 0x8f}, [256]uint8{0x0, 0xe, 0x1c, 0x12, 0x38, 0x36, 0x24, 0x2a, 0x70, 0x7e, 0x6c, 0x62, 0x48, 0x46, 0x54, 0x5a, 0xe0, 0xee, 0xfc, 0xf2, 0xd8, 0xd6, 0xc4, 0xca, 0x90, 0x9e, 0x8c, 0x82, 0xa8, 0xa6, 0xb4, 0xba, 0xdd, 0xd3, 0xc1, 0xcf, 0xe5, 0xeb, 0xf9, 0xf7, 0xad, 0xa3, 0xb1, 0xbf, 0x95, 0x9b, 0x89, 0x87, 0x3d, 0x33, 0x21, 0x2f, 0x5, 0xb, 0x19, 0x17, 0x4d, 0x43, 0x51, 0x5f, 0x75, 0x7b, 0x69, 0x67, 0xa7, 0xa9, 0xbb, 0xb5, 0x9f, 0x91, 0x83, 0x8d, 0xd7, 0xd9, 0xcb, 0xc5, 0xef, 0xe1, 0xf3, 0xfd, 0x47, 0x49, 0x5b, 0x55, 0x7f, 0x71, 0x63, 0x6d, 0x37, 0x39, 0x2b, 0x25, 0xf, 0x1, 0x13, 0x1d, 0x7a, 0x74, 0x66, 0x68, 0x42, 0x4c, 0x5e, 0x50, 0xa, 0x4, 0x16, 0x18, 0x32, 0x3c, 0x2e, 0x20, 0x9a, 0x94, 0x86, 0x88, 0xa2, 0xac, 0xbe, 0xb0, 0xea, 0xe4, 0xf6, 0xf8, 0xd2, 0xdc, 0xce, 0xc0, 0x53, 0x5d, 0x4f, 0x41, 0x6b, 0x65, 0x77, 0x79, 0x23, 0x2d, 0x3f, 0x31, 0x1b, 0x15, 0x7, 0x9, 0xb3, 0xbd, 0xaf, 0xa1, 0x8b, 0x85, 0x97, 0x99, 0xc3, 0xcd, 0xdf, 0xd1, 0xfb, 0xf5, 0xe7, 0xe9, 0x8e, 0x80, 0x92, 0x9c, 0xb6, 0xb8, 0xaa, 0xa4, 0xfe, 0xf0, 0xe2, 0xec, 0xc6, 0xc8, 0xda, 0xd4, 0x6e, 0x60, 0x72, 0x7c, 0x56, 0x58, 0x4a, 0x44, 0x1e, 0x10, 0x2, 0xc, 0x26, 0x28, 0x3a, 0x34, 0xf4, 0xfa, 0xe8, 0xe6, 0xcc, 0xc2, 0xd0, 0xde, 0x84, 0x8a, 0x98, 0x96, 0xbc, 0xb2, 0xa0, 0xae, 0x14, 0x1a, 0x8, 0x6, 0x2c, 0x22, 0x30, 0x3e, 0x64, 0x6a, 0x78, 0x76, 0x5c, 0x52, 0x40, 0x4e, 0x29, 0x27, 0x35, 0x3b, 0x11, 0x1f, 0xd, 0x3, 0x59, 0x57, 0x45, 0x4b, 0x61, 0x6f, 0x7d, 0x73, 0xc9, 0xc7, 0xd5, 0xdb, 0xf1, 0xff, 0xed, 0xe3, 0xb9, 0xb7, 0xa5, 0xab, 0x81, 0x8f, 0x9d, 0x93}, [256]uint8{0x0, 0xf, 0x1e, 0x11, 0x3c, 0x33, 0x22, 0x2d, 0x78, 0x77, 0x66, 0x69, 0x44, 0x4b, 0x5a, 0x55, 0xf0, 0xff, 0xee, 0xe1, 0xcc, 0xc3, 0xd2, 0xdd, 0x88, 0x87, 0x96, 0x99, 0xb4, 0xbb, 0xaa, 0xa5, 0xfd, 0xf2, 0xe3, 0xec, 0xc1, 0xce, 0xdf, 0xd0, 0x85, 0x8a, 0x9b, 0x94, 0xb9, 0xb6, 0xa7, 0xa8, 0xd, 0x2, 0x13, 0x1c, 0x31, 0x3e, 0x2f, 0x20, 0x75, 0x7a, 0x6b, 0x64, 0x49, 0x46, 0x57, 0x58, 0xe7, 0xe8, 0xf9, 0xf6, 0xdb, 0xd4, 0xc5, 0xca, 0x9f, 0x90, 0x81, 0x8e, 0xa3, 0xac, 0xbd, 0xb2, 0x17, 0x18, 0x9, 0x6, 0x2b, 0x24, 0x35, 0x3a, 0x6f, 0x60, 0x71, 0x7e, 0x53, 0x5c, 0x4d, 0x42, 0x1a, 0x15, 0x4, 0xb, 0x26, 0x29, 0x38, 0x37, 0x62, 0x6d, 0x7c, 0x73, 0x5e, 0x51, 0x40, 0x4f, 0xea, 0xe5, 0xf4, 0xfb, 0xd6, 0xd9, 0xc8, 0xc7, 0x92, 0x9d, 0x8c, 0x83, 0xae, 0xa1, 0xb0, 0xbf, 0xd3, 0xdc, 0xcd, 0xc2, 0xef, 0xe0, 0xf1, 0xfe, 0xab, 0xa4, 0xb5, 0xba, 0x97, 0x98, 0x89, 0x86, 0x23, 0x2c, 0x3d, 0x32, 0x1f, 0x10, 0x1, 0xe, 0x5b, 0x54, 0x45, 0x4a, 0x67, 0x68, 0x79, 0x76, 0x2e, 0x21, 0x30, 0x3f, 0x12, 0x1d, 0xc, 0x3, 0x56, 0x59, 0x48, 0x47, 0x6a, 0x65, 0x74, 0x7b, 0xde, 0xd1, 0xc0, 0xcf, 0xe2, 0xed, 0xfc, 0xf3, 0xa6, 0xa9, 0xb8, 0xb7, 0x9a, 0x95, 0x84, 0x8b, 0x34, 0x3b, 0x2a, 0x25, 0x8, 0x7, 0x16, 0x19, 0x4c, 0x43, 0x52, 0x5d, 0x70, 0x7f, 0x6e, 0x61, 0xc4, 0xcb, 0xda, 0xd5, 0xf8, 0xf7, 0xe6, 0xe9, 0xbc, 0xb3, 0xa2, 0xad, 0x80, 0x8f, 0x9e, 0x91, 0xc9, 0xc6, 0xd7, 0xd8, 0xf5, 0xfa, 0xeb, 0xe4, 0xb1, 0xbe, 0xaf, 0xa0, 0x8d, 0x82, 0x93, 0x9c, 0x39, 0x36, 0x27, 0x28, 0x5, 0xa, 0x1b, 0x14, 0x41, 0x4e, 0x5f, 0x50, 0x7d, 0x72, 0x63, 0x6c}, [256]uint8{0x0, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80, 0x90, 0xa0, 0xb0, 0xc0, 0xd0, 0xe0, 0xf0, 0x1d, 0xd, 0x3d, 0x2d, 0x5d, 0x4d, 0x7d, 0x6d, 0x9d, 0x8d, 0xbd, 0xad, 0xdd, 0xcd, 0xfd, 0xed, 0x3a, 0x2a, 0x1a, 0xa, 0x7a, 0x6a, 0x5a, 0x4a, 0xba, 0xaa, 0x9a, 0x8a, 0xfa, 0xea, 0xda, 0xca, 0x27, 0x37, 0x7, 0x17, 0x67, 0x77, 0x47, 0x57, 0xa7, 0xb7, 0x87, 0x97, 0xe7, 0xf7, 0xc7, 0xd7, 0x74, 0x64, 0x54, 0x44, 0x34, 0x24, 0x14, 0x4, 0xf4, 0xe4, 0xd4, 0xc4, 0xb4, 0xa4, 0x94, 0x84, 0x69, 0x79, 0x49, 0x59, 0x29, 0x39, 0x9, 0x19, 0xe9, 0xf9, 0xc9, 0xd9, 0xa9, 0xb9, 0x89, 0x99, 0x4e, 0x5e, 0x6e, 0x7e, 0xe, 0x1e, 0x2e, 0x3e, 0xce, 0xde, 0xee, 0xfe, 0x8e, 0x9e, 0xae, 0xbe, 0x53, 0x43, 0x73, 0x63, 0x13, 0x3, 0x33, 0x23, 0xd3, 0xc3, 0xf3, 0xe3, 0x93, 0x83, 0xb3, 0xa3, 0xe8, 0xf8, 0xc8, 0xd8, 0xa8, 0xb8, 0x88, 0x98, 0x68, 0x78, 0x48, 0x58, 0x28, 0x38, 0x8, 0x18, 0xf5, 0xe5, 0xd5, 0xc5, 0xb5, 0xa5, 0x95, 0x85, 0x75, 0x65, 0x55, 0x45, 0x35, 0x25, 0x15, 0x5, 0xd2, 0xc2, 0xf2, 0xe2, 0x92, 0x82, 0xb2, 0xa2, 0x52, 0x42, 0x72, 0x62, 0x12, 0x2, 0x32, 0x22, 0xcf, 0xdf, 0xef, 0xff, 0x8f, 0x9f, 0xaf, 0xbf, 0x4f, 0x5f, 0x6f, 0x7f, 0xf, 0x1f, 0x2f, 0x3f, 0x9c, 0x8c, 0xbc, 0xac, 0xdc, 0xcc, 0xfc, 0xec, 0x1c, 0xc, 0x3c, 0x2c, 0x5c, 0x4c, 0x7c, 0x6c, 0x81, 0x91, 0xa1, 0xb1, 0xc1, 0xd1, 0xe1, 0xf1, 0x1, 0x11, 0x21, 0x31, 0x41, 0x51, 0x61, 0x71, 0xa6, 0xb6, 0x86, 0x96, 0xe6, 0xf6, 0xc6, 0xd6, 0x26, 0x36, 0x6, 0x16, 0x66, 0x76, 0x46, 0x56, 0xbb, 0xab, 0x9b, 0x8b, 0xfb, 0xeb, 0xdb, 0xcb, 0x3b, 0x2b, 0x1b, 0xb, 0x7b, 0x6b, 0x5b, 0x4b}, [256]uint8{0x0, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0xd, 0x1c, 0x2f, 0x3e, 0x49, 0x58, 0x6b, 0x7a, 0x85, 0x94, 0xa7, 0xb6, 0xc1, 0xd0, 0xe3, 0xf2, 0x1a, 0xb, 0x38, 0x29, 0x5e, 0x4f, 0x7c, 0x6d, 0x92, 0x83, 0xb0, 0xa1, 0xd6, 0xc7, 0xf4, 0xe5, 0x17, 0x6, 0x35, 0x24, 0x53, 0x42, 0x71, 0x60, 0x9f, 0x8e, 0xbd, 0xac, 0xdb, 0xca, 0xf9, 0xe8, 0x34, 0x25, 0x16, 0x7, 0x70, 0x61, 0x52, 0x43, 0xbc, 0xad, 0x9e, 0x8f, 0xf8, 0xe9, 0xda, 0xcb, 0x39, 0x28, 0x1b, 0xa, 0x7d, 0x6c, 0x5f, 0x4e, 0xb1, 0xa0, 0x93, 0x82, 0xf5, 0xe4, 0xd7, 0xc6, 0x2e, 0x3f, 0xc, 0x1d, 0x6a, 0x7b, 0x48, 0x59, 0xa6, 0xb7, 0x84, 0x95, 0xe2, 0xf3, 0xc0, 0xd1, 0x23, 0x32, 0x1, 0x10, 0x67, 0x76, 0x45, 0x54, 0xab, 0xba, 0x89, 0x98, 0xef, 0xfe, 0xcd, 0xdc, 0x68, 0x79, 0x4a, 0x5b, 0x2c, 0x3d, 0xe, 0x1f, 0xe0, 0xf1, 0xc2, 0xd3, 0xa4, 0xb5, 0x86, 0x97, 0x65, 0x74, 0x47, 0x56, 0x21, 0x30, 0x3, 0x12, 0xed, 0xfc, 0xcf, 0xde, 0xa9, 0xb8, 0x8b, 0x9a, 0x72, 0x63, 0x50, 0x41, 0x36, 0x27, 0x14, 0x5, 0xfa, 0xeb, 0xd8, 0xc9, 0xbe, 0xaf, 0x9c, 0x8d, 0x7f, 0x6e, 0x5d, 0x4c, 0x3b, 0x2a, 0x19, 0x8, 0xf7, 0xe6, 0xd5, 0xc4, 0xb3, 0xa2, 0x91, 0x80, 0x5c, 0x4d, 0x7e, 0x6f, 0x18, 0x9, 0x3a, 0x2b, 0xd4, 0xc5, 0xf6, 0xe7, 0x90, 0x81, 0xb2, 0xa3, 0x51, 0x40, 0x73, 0x62, 0x15, 0x4, 0x37, 0x26, 0xd9, 0xc8, 0xfb, 0xea, 0x9d, 0x8c, 0xbf, 0xae, 0x46, 0x57, 0x64, 0x75, 0x2, 0x13, 0x20, 0x31, 0xce, 0xdf, 0xec, 0xfd, 0x8a, 0x9b, 0xa8, 0xb9, 0x4b, 0x5a, 0x69, 0x78, 0xf, 0x1e, 0x2d, 0x3c, 0xc3, 0xd2, 0xe1, 0xf0, 0x87, 0x96, 0xa5, 0xb4}, [256]uint8{0x0, 0x12, 0x24, 0x36, 0x48, 0x5a, 0x6c, 0x7e, 0x90, 0x82, 0xb4, 0xa6, 0xd8, 0xca, 0xfc, 0xee, 0x3d, 0x2f, 0x19, 0xb, 0x75, 0x67, 0x51, 0x43, 0xad, 0xbf, 0x89, 0x9b, 0xe5, 0xf7, 0xc1, 0xd3, 0x7a, 0x68, 0x5e, 0x4c, 0x32, 0x20, 0x16, 0x4, 0xea, 0xf8, 0xce, 0xdc, 0xa2, 0xb0, 0x86, 0x94, 0x47, 0x55, 0x63, 0x71, 0xf, 0x1d, 0x2b, 0x39, 0xd7, 0xc5, 0xf3, 0xe1, 0x9f, 0x8d, 0xbb, 0xa9, 0xf4, 0xe6, 0xd0, 0xc2, 0xbc, 0xae, 0x98, 0x8a, 0x64, 0x76, 0x40, 0x52, 0x2c, 0x3e, 0x8, 0x1a, 0xc9, 0xdb, 0xed, 0xff, 0x81, 0x93, 0xa5, 0xb7, 0x59, 0x4b, 0x7d, 0x6f, 0x11, 0x3, 0x35, 0x27, 0x8e, 0x9c, 0xaa, 0xb8, 0xc6, 0xd4, 0xe2, 0xf0, 0x1e, 0xc, 0x3a, 0x28, 0x56, 0x44, 0x72, 0x60, 0xb3, 0xa1, 0x97, 0x85, 0xfb, 0xe9, 0xdf, 0xcd, 0x23, 0x31, 0x7, 0x15, 0x6b, 0x79, 0x4f, 0x5d, 0xf5, 0xe7, 0xd1, 0xc3, 0xbd, 0xaf, 0x99, 0x8b, 0x65, 0x77, 0x41, 0x53, 0x2d, 0x3f, 0x9, 0x1b, 0xc8, 0xda, 0xec, 0xfe, 0x80, 0x92, 0xa4, 0xb6, 0x58, 0x4a, 0x7c, 0x6e, 0x10, 0x2, 0x34, 0x26, 0x8f, 0x9d, 0xab, 0xb9, 0xc7, 0xd5, 0xe3, 0xf1, 0x1f, 0xd, 0x3b, 0x29, 0x57, 0x45, 0x73, 0x61, 0xb2, 0xa0, 0x96, 0x84, 0xfa, 0xe8, 0xde, 0xcc, 0x22, 0x30, 0x6, 0x14, 0x6a, 0x78, 0x4e, 0x5c, 0x1, 0x13, 0x25, 0x37, 0x49, 0x5b, 0x6d, 0x7f, 0x91, 0x83, 0xb5, 0xa7, 0xd9, 0xcb, 0xfd, 0xef, 0x3c, 0x2e, 0x18, 0xa, 0x74, 0x66, 0x50, 0x42, 0xac, 0xbe, 0x88, 0x9a, 0xe4, 0xf6, 0xc0, 0xd2, 0x7b, 0x69, 0x5f, 0x4d, 0x33, 0x21, 0x17, 0x5, 0xeb, 0xf9, 0xcf, 0xdd, 0xa3, 0xb1, 0x87, 0x95, 0x46, 0x54, 0x62, 0x70, 0xe, 0x1c, 0x2a, 0x38, 0xd6, 0xc4, 0xf2, 0xe0, 0x9e, 0x8c, 0xba, 0xa8}, [256]uint8{0x0, 0x13, 0x26, 0x35, 0x4c, 0x5f, 0x6a, 0x79, 0x98, 0x8b, 0xbe, 0xad, 0xd4, 0xc7, 0xf2, 0xe1, 0x2d, 0x3e, 0xb, 0x18, 0x61, 0x72, 0x47, 0x54, 0xb5, 0xa6, 0x93, 0x80, 0xf9, 0xea, 0xdf, 0xcc, 0x5a, 0x49, 0x7c, 0x6f, 0x16, 0x5, 0x30, 0x23, 0xc2, 0xd1, 0xe4, 0xf7, 0x8e, 0x9d, 0xa8, 0xbb, 0x77, 0x64, 0x51, 0x42, 0x3b, 0x28, 0x1d, 0xe, 0xef, 0xfc, 0xc9, 0xda, 0xa3, 0xb0, 0x85, 0x96, 0xb4, 0xa7, 0x92, 0x81, 0xf8, 0xeb, 0xde, 0xcd, 0x2c, 0x3f, 0xa, 0x19, 0x60, 0x73, 0x46, 0x55, 0x99, 0x8a, 0xbf, 0xac, 0xd5, 0xc6, 0xf3, 0xe0, 0x1, 0x12, 0x27, 0x34, 0x4d, 0x5e, 0x6b, 0x78, 0xee, 0xfd, 0xc8, 0xdb, 0xa2, 0xb1, 0x84, 0x97, 0x76, 0x65, 0x50, 0x43, 0x3a, 0x29, 0x1c, 0xf, 0xc3, 0xd0, 0xe5, 0xf6, 0x8f, 0x9c, 0xa9, 0xba, 0x5b, 0x48, 0x7d, 0x6e, 0x17, 0x4, 0x31, 0x22, 0x75, 0x66, 0x53, 0x40, 0x39, 0x2a, 0x1f, 0xc, 0xed, 0xfe, 0xcb, 0xd8, 0xa1, 0xb2, 0x87, 0x94, 0x58, 0x4b, 0x7e, 0x6d, 0x14, 0x7, 0x32, 0x21, 0xc0, 0xd3, 0xe6, 0xf5, 0x8c, 0x9f, 0xaa, 0xb9, 0x2f, 0x3c, 0x9, 0x1a, 0x63, 0x70, 0x45, 0x56, 0xb7, 0xa4, 0x91, 0x82, 0xfb, 0xe8, 0xdd, 0xce, 0x2, 0x11, 0x24, 0x37, 0x4e, 0x5d, 0x68, 0x7b, 0x9a, 0x89, 0xbc, 0xaf, 0xd6, 0xc5, 0xf0, 0xe3, 0xc1, 0xd2, 0xe7, 0xf4, 0x8d, 0x9e, 0xab, 0xb8, 0x59, 0x4a, 0x7f, 0x6c, 0x15, 0x6, 0x33, 0x20, 0xec, 0xff, 0xca, 0xd9, 0xa0, 0xb3, 0x86, 0x95, 0x74, 0x67, 0x52, 0x41, 0x38, 0x2b, 0x1e, 0xd, 0x9b, 0x88, 0xbd, 0xae, 0xd7, 0xc4, 0xf1, 0xe2, 0x3, 0x10, 0x25, 0x36, 0x4f, 0x5c, 0x69, 0x7a, 0xb6, 0xa5, 0x90, 0x83, 0xfa, 0xe9, 0xdc, 0xcf, 0x2e, 0x3d, 0x8, 0x1b, 0x62, 0x71, 0x44, 0x57}, [256]uint8{0x0, 0x14, 0x28, 0x3c, 0x50, 0x44, 0x78, 0x6c, 0xa0, 0xb4, 0x88, 0x9c, 0xf0, 0xe4, 0xd8, 0xcc, 0x5d, 0x49, 0x75, 0x61, 0xd, 0x19, 0x25, 0x31, 0xfd, 0xe9, 0xd5, 0xc1, 0xad, 0xb9, 0x85, 0x91, 0xba, 0xae, 0x92, 0x86, 0xea, 0xfe, 0xc2, 0xd6, 0x1a, 0xe, 0x32, 0x26, 0x4a, 0x5e, 0x62, 0x76, 0xe7, 0xf3, 0xcf, 0xdb, 0xb7, 0xa3, 0x9f, 0x8b, 0x47, 0x53, 0x6f, 0x7b, 0x17, 0x3, 0x3f, 0x2b, 0x69, 0x7d, 0x41, 0x55, 0x39, 0x2d, 0x11, 0x5, 0xc9, 0xdd, 0xe1, 0xf5, 0x99, 0x8d, 0xb1, 0xa5, 0x34, 0x20, 0x1c, 0x8, 0x64, 0x70, 0x4c, 0x58, 0x94, 0x80, 0xbc, 0xa8, 0xc4, 0xd0, 0xec, 0xf8, 0xd3, 0xc7, 0xfb, 0xef, 0x83, 0x97, 0xab, 0xbf, 0x73, 0x67, 0x5b, 0x4f, 0x23, 0x37, 0xb, 0x1f, 0x8e, 0x9a, 0xa6, 0xb2, 0xde, 0xca, 0xf6, 0xe2, 0x2e, 0x3a, 0x6, 0x12, 0x7e, 0x6a, 0x56, 0x42, 0xd2, 0xc6, 0xfa, 0xee, 0x82, 0x96, 0xaa, 0xbe, 0x72, 0x66, 0x5a, 0x4e, 0x22, 0x36, 0xa, 0x1e, 0x8f, 0x9b, 0xa7, 0xb3, 0xdf, 0xcb, 0xf7, 0xe3, 0x2f, 0x3b, 0x7, 0x13, 0x7f, 0x6b, 0x57, 0x43, 0x68, 0x7c, 0x40, 0x54, 0x38, 0x2c, 0x10, 0x4, 0xc8, 0xdc, 0xe0, 0xf4, 0x98, 0x8c, 0xb0, 0xa4, 0x35, 0x21, 0x1d, 0x9, 0x65, 0x71, 0x4d, 0x59, 0x95, 0x81, 0xbd, 0xa9, 0xc5, 0xd1, 0xed, 0xf9, 0xbb, 0xaf, 0x93, 0x87, 0xeb, 0xff, 0xc3, 0xd7, 0x1b, 0xf, 0x33, 0x27, 0x4b, 0x5f, 0x63, 0x77, 0xe6, 0xf2, 0xce, 0xda, 0xb6, 0xa2, 0x9e, 0x8a, 0x46, 0x52, 0x6e, 0x7a, 0x16, 0x2, 0x3e, 0x2a, 0x1, 0x15, 0x29, 0x3d, 0x51, 0x45, 0x79, 0x6d, 0xa1, 0xb5, 0x89, 0x9d, 0xf1, 0xe5, 0xd9, 0xcd, 0x5c, 0x48, 0x74, 0x60, 0xc, 0x18, 0x24, 0x30, 0xfc, 0xe8, 0xd4, 0xc0, 0xac, 0xb8, 0x84, 0x90}, [256]uint8{0x0, 0x15, 0x2a, 0x3f, 0x54, 0x41, 0x7e, 0x6b, 0xa8, 0xbd, 0x82, 0x97, 0xfc, 0xe9, 0xd6, 0xc3, 0x4d, 0x58, 0x67, 0x72, 0x19, 0xc, 0x33, 0x26, 0xe5, 0xf0, 0xcf, 0xda, 0xb1, 0xa4, 0x9b, 0x8e, 0x9a, 0x8f, 0xb0, 0xa5, 0xce, 0xdb, 0xe4, 0xf1, 0x32, 0x27, 0x18, 0xd, 0x66, 0x73, 0x4c, 0x59, 0xd7, 0xc2, 0xfd, 0xe8, 0x83, 0x96, 0xa9, 0xbc, 0x7f, 0x6a, 0x55, 0x40, 0x2b, 0x3e, 0x1, 0x14, 0x29, 0x3c, 0x3, 0x16, 0x7d, 0x68, 0x57, 0x42, 0x81, 0x94, 0xab, 0xbe, 0xd5, 0xc0, 0xff, 0xea, 0x64, 0x71, 0x4e, 0x5b, 0x30, 0x25, 0x1a, 0xf, 0xcc, 0xd9, 0xe6, 0xf3, 0x98, 0x8d, 0xb2, 0xa7, 0xb3, 0xa6, 0x99, 0x8c, 0xe7, 0xf2, 0xcd, 0xd8, 0x1b, 0xe, 0x31, 0x24, 0x4f, 0x5a, 0x65, 0x70, 0xfe, 0xeb, 0xd4, 0xc1, 0xaa, 0xbf, 0x80, 0x95, 0x56, 0x43, 0x7c, 0x69, 0x2, 0x17, 0x28, 0x3d, 0x52, 0x47, 0x78, 0x6d, 0x6, 0x13, 0x2c, 0x39, 0xfa, 0xef, 0xd0, 0xc5, 0xae, 0xbb, 0x84, 0x91, 0x1f, 0xa, 0x35, 0x20, 0x4b, 0x5e, 0x61, 0x74, 0xb7, 0xa2, 0x9d, 0x88, 0xe3, 0xf6, 0xc9, 0xdc, 0xc8, 0xdd, 0xe2, 0xf7, 0x9c, 0x89, 0xb6, 0xa3, 0x60, 0x75, 0x4a, 0x5f, 0x34, 0x21, 0x1e, 0xb, 0x85, 0x90, 0xaf, 0xba, 0xd1, 0xc4, 0xfb, 0xee, 0x2d, 0x38, 0x7, 0x12, 0x79, 0x6c, 0x53, 0x46, 0x7b, 0x6e, 0x51, 0x44, 0x2f, 0x3a, 0x5, 0x10, 0xd3, 0xc6, 0xf9, 0xec, 0x87, 0x92, 0xad, 0xb8, 0x36, 0x23, 0x1c, 0x9, 0x62, 0x77, 0x48, 0x5d, 0x9e, 0x8b, 0xb4, 0xa1, 0xca, 0xdf, 0xe0, 0xf5, 0xe1, 0xf4, 0xcb, 0xde, 0xb5, 0xa0, 0x9f, 0x8a, 0x49, 0x5c, 0x63, 0x76, 0x1d, 0x8, 0x37, 0x22, 0xac, 0xb9, 0x86, 0x93, 0xf8, 0xed, 0xd2, 0xc7, 0x4, 0x11, 0x2e, 0x3b, 0x50, 0x45, 0x7a, 0x6f}, [256]uint8{0x0, 0x16, 0x2c, 0x3a, 0x58, 0x4e, 0x74, 0x62, 0xb0, 0xa6, 0x9c, 0x8a, 0xe8, 0xfe, 0xc4, 0xd2, 0x7d, 0x6b, 0x51, 0x47, 0x25, 0x33, 0x9, 0x1f, 0xcd, 0xdb, 0xe1, 0xf7, 0x95, 0x83, 0xb9, 0xaf, 0xfa, 0xec, 0xd6, 0xc0, 0xa2, 0xb4, 0x8e, 0x98, 0x4a, 0x5c, 0x66, 0x70, 0x12, 0x4, 0x3e, 0x28, 0x87, 0x91, 0xab, 0xbd, 0xdf, 0xc9, 0xf3, 0xe5, 0x37, 0x21, 0x1b, 0xd, 0x6f, 0x79, 0x43, 0x55, 0xe9, 0xff, 0xc5, 0xd3, 0xb1, 0xa7, 0x9d, 0x8b, 0x59, 0x4f, 0x75, 0x63, 0x1, 0x17, 0x2d, 0x3b, 0x94, 0x82, 0xb8, 0xae, 0xcc, 0xda, 0xe0, 0xf6, 0x24, 0x32, 0x8, 0x1e, 0x7c, 0x6a, 0x50, 0x46, 0x13, 0x5, 0x3f, 0x29, 0x4b, 0x5d, 0x67, 0x71, 0xa3, 0xb5, 0x8f, 0x99, 0xfb, 0xed, 0xd7, 0xc1, 0x6e, 0x78, 0x42, 0x54, 0x36, 0x20, 0x1a, 0xc, 0xde, 0xc8, 0xf2, 0xe4, 0x86, 0x90, 0xaa, 0xbc, 0xcf, 0xd9, 0xe3, 0xf5, 0x97, 0x81, 0xbb, 0xad, 0x7f, 0x69, 0x53, 0x45, 0x27, 0x31, 0xb, 0x1d, 0xb2, 0xa4, 0x9e, 0x88, 0xea, 0xfc, 0xc6, 0xd0, 0x2, 0x14, 0x2e, 0x38, 0x5a, 0x4c, 0x76, 0x60, 0x35, 0x23, 0x19, 0xf, 0x6d, 0x7b, 0x41, 0x57, 0x85, 0x93, 0xa9, 0xbf, 0xdd, 0xcb, 0xf1, 0xe7, 0x48, 0x5e, 0x64, 0x72, 0x10, 0x6, 0x3c, 0x2a, 0xf8, 0xee, 0xd4, 0xc2, 0xa0, 0xb6, 0x8c, 0x9a, 0x26, 0x30, 0xa, 0x1c, 0x7e, 0x68, 0x52, 0x44, 0x96, 0x80, 0xba, 0xac, 0xce, 0xd8, 0xe2, 0xf4, 0x5b, 0x4d, 0x77, 0x61, 0x3, 0x15, 0x2f, 0x39, 0xeb, 0xfd, 0xc7, 0xd1, 0xb3, 0xa5, 0x9f, 0x89, 0xdc, 0xca, 0xf0, 0xe6, 0x84, 0x92, 0xa8, 0xbe, 0x6c, 0x7a, 0x40, 0x56, 0x34, 0x22, 0x18, 0xe, 0xa1, 0xb7, 0x8d, 0x9b, 0xf9, 0xef, 0xd5, 0xc3, 0x11, 0x7, 0x3d, 0x2b, 0x49, 0x5f, 0x65, 0x73}, [256]uint8{0x0, 0x17, 0x2e, 0x39, 0x5c, 0x4b, 0x72, 0x65, 0xb8, 0xaf, 0x96, 0x81, 0xe4, 0xf3, 0xca, 0xdd, 0x6d, 0x7a, 0x43, 0x54, 0x31, 0x26, 0x1f, 0x8, 0xd5, 0xc2, 0xfb, 0xec, 0x89, 0x9e, 0xa7, 0xb0, 0xda, 0xcd, 0xf4, 0xe3, 0x86, 0x91, 0xa8, 0xbf, 0x62, 0x75, 0x4c, 0x5b, 0x3e, 0x29, 0x10, 0x7, 0xb7, 0xa0, 0x99, 0x8e, 0xeb, 0xfc, 0xc5, 0xd2, 0xf, 0x18, 0x21, 0x36, 0x53, 0x44, 0x7d, 0x6a, 0xa9, 0xbe, 0x87, 0x90, 0xf5, 0xe2, 0xdb, 0xcc, 0x11, 0x6, 0x3f, 0x28, 0x4d, 0x5a, 0x63, 0x74, 0xc4, 0xd3, 0xea, 0xfd, 0x98, 0x8f, 0xb6, 0xa1, 0x7c, 0x6b, 0x52, 0x45, 0x20, 0x37, 0xe, 0x19, 0x73, 0x64, 0x5d, 0x4a, 0x2f, 0x38, 0x1, 0x16, 0xcb, 0xdc, 0xe5, 0xf2, 0x97, 0x80, 0xb9, 0xae, 0x1e, 0x9, 0x30, 0x27, 0x42, 0x55, 0x6c, 0x7b, 0xa6, 0xb1, 0x88, 0x9f, 0xfa, 0xed, 0xd4, 0xc3, 0x4f, 0x58, 0x61, 0x76, 0x13, 0x4, 0x3d, 0x2a, 0xf7, 0xe0, 0xd9, 0xce, 0xab, 0xbc, 0x85, 0x92, 0x22, 0x35, 0xc, 0x1b, 0x7e, 0x69, 0x50, 0x47, 0x9a, 0x8d, 0xb4, 0xa3, 0xc6, 0xd1, 0xe8, 0xff, 0x95, 0x82, 0xbb, 0xac, 0xc9, 0xde, 0xe7, 0xf0, 0x2d, 0x3a, 0x3, 0x14, 0x71, 0x66, 0x5f, 0x48, 0xf8, 0xef, 0xd6, 0xc1, 0xa4, 0xb3, 0x8a, 0x9d, 0x40, 0x57, 0x6e, 0x79, 0x1c, 0xb, 0x32, 0x25, 0xe6, 0xf1, 0xc8, 0xdf, 0xba, 0xad, 0x94, 0x83, 0x5e, 0x49, 0x70, 0x67, 0x2, 0x15, 0x2c, 0x3b, 0x8b, 0x9c, 0xa5, 0xb2, 0xd7, 0xc0, 0xf9, 0xee, 0x33, 0x24, 0x1d, 0xa, 0x6f, 0x78, 0x41, 0x56, 0x3c, 0x2b, 0x12, 0x5, 0x60, 0x77, 0x4e, 0x59, 0x84, 0x93, 0xaa, 0xbd, 0xd8, 0xcf, 0xf6, 0xe1, 0x51, 0x46, 0x7f, 0x68, 0xd, 0x1a, 0x23, 0x34, 0xe9, 0xfe, 0xc7, 0xd0, 0xb5, 0xa2, 0x9b, 0x8c}, [256]uint8{0x0, 0x18, 0x30, 0x28, 0x60, 0x78, 0x50, 0x48, 0xc0, 0xd8, 0xf0, 0xe8, 0xa0, 0xb8, 0x90, 0x88, 0x9d, 0x85, 0xad, 0xb5, 0xfd, 0xe5, 0xcd, 0xd5, 0x5d, 0x45, 0x6d, 0x75, 0x3d, 0x25, 0xd, 0x15, 0x27, 0x3f, 0x17, 0xf, 0x47, 0x5f, 0x77, 0x6f, 0xe7, 0xff, 0xd7, 0xcf, 0x87, 0x9f, 0xb7, 0xaf, 0xba, 0xa2, 0x8a, 0x92, 0xda, 0xc2, 0xea, 0xf2, 0x7a, 0x62, 0x4a, 0x52, 0x1a, 0x2, 0x2a, 0x32, 0x4e, 0x56, 0x7e, 0x66, 0x2e, 0x36, 0x1e, 0x6, 0x8e, 0x96, 0xbe, 0xa6, 0xee, 0xf6, 0xde, 0xc6, 0xd3, 0xcb, 0xe3, 0xfb, 0xb3, 0xab, 0x83, 0x9b, 0x13, 0xb, 0x23, 0x3b, 0x73, 0x6b, 0x43, 0x5b, 0x69, 0x71, 0x59, 0x41, 0x9, 0x11, 0x39, 0x21, 0xa9, 0xb1, 0x99, 0x81, 0xc9, 0xd1, 0xf9, 0xe1, 0xf4, 0xec, 0xc4, 0xdc, 0x94, 0x8c, 0xa4, 0xbc, 0x34, 0x2c, 0x4, 0x1c, 0x54, 0x4c, 0x64, 0x7c, 0x9c, 0x84, 0xac, 0xb4, 0xfc, 0xe4, 0xcc, 0xd4, 0x5c, 0x44, 0x6c, 0x74, 0x3c, 0x24, 0xc, 0x14, 0x1, 0x19, 0x31, 0x29, 0x61, 0x79, 0x51, 0x49, 0xc1, 0xd9, 0xf1, 0xe9, 0xa1, 0xb9, 0x91, 0x89, 0xbb, 0xa3, 0x8b, 0x93, 0xdb, 0xc3, 0xeb, 0xf3, 0x7b, 0x63, 0x4b, 0x53, 0x1b, 0x3, 0x2b, 0x33, 0x26, 0x3e, 0x16, 0xe, 0x46, 0x5e, 0x76, 0x6e, 0xe6, 0xfe, 0xd6, 0xce, 0x86, 0x9e, 0xb6, 0xae, 0xd2, 0xca, 0xe2, 0xfa, 0xb2, 0xaa, 0x82, 0x9a, 0x12, 0xa, 0x22, 0x3a, 0x72, 0x6a, 0x42, 0x5a, 0x4f, 0x57, 0x7f, 0x67, 0x2f, 0x37, 0x1f, 0x7, 0x8f, 0x97, 0xbf, 0xa7, 0xef, 0xf7, 0xdf, 0xc7, 0xf5, 0xed, 0xc5, 0xdd, 0x95, 0x8d, 0xa5, 0xbd, 0x35, 0x2d, 0x5, 0x1d, 0x55, 0x4d, 0x65, 0x7d, 0x68, 0x70, 0x58, 0x40, 0x8, 0x10, 0x38, 0x20, 0xa8, 0xb0, 0x98, 0x80, 0xc8, 0xd0, 0xf8, 0xe0}, [256]uint8{0x0, 0x19, 0x32, 0x2b, 0x64, 0x7d, 0x56, 0x4f, 0xc8, 0xd1, 0xfa, 0xe3, 0xac, 0xb5, 0x9e, 0x87, 0x8d, 0x94, 0xbf, 0xa6, 0xe9, 0xf0, 0xdb, 0xc2, 0x45, 0x5c, 0x77, 0x6e, 0x21, 0x38, 0x13, 0xa, 0x7, 0x1e, 0x35, 0x2c, 0x63, 0x7a, 0x51, 0x48, 0xcf, 0xd6, 0xfd, 0xe4, 0xab, 0xb2, 0x99, 0x80, 0x8a, 0x93, 0xb8, 0xa1, 0xee, 0xf7, 0xdc, 0xc5, 0x42, 0x5b, 0x70, 0x69, 0x26, 0x3f, 0x14, 0xd, 0xe, 0x17, 0x3c, 0x25, 0x6a, 0x73, 0x58, 0x41, 0xc6, 0xdf, 0xf4, 0xed, 0xa2, 0xbb, 0x90, 0x89, 0x83, 0x9a, 0xb1, 0xa8, 0xe7, 0xfe, 0xd5, 0xcc, 0x4b, 0x52, 0x79, 0x60, 0x2f, 0x36, 0x1d, 0x4, 0x9, 0x10, 0x3b, 0x22, 0x6d, 0x74, 0x5f, 0x46, 0xc1, 0xd8, 0xf3, 0xea, 0xa5, 0xbc, 0x97, 0x8e, 0x84, 0x9d, 0xb6, 0xaf, 0xe0, 0xf9, 0xd2, 0xcb, 0x4c, 0x55, 0x7e, 0x67, 0x28, 0x31, 0x1a, 0x3, 0x1c, 0x5, 0x2e, 0x37, 0x78, 0x61, 0x4a, 0x53, 0xd4, 0xcd, 0xe6, 0xff, 0xb0, 0xa9, 0x82, 0x9b, 0x91, 0x88, 0xa3, 0xba, 0xf5, 0xec, 0xc7, 0xde, 0x59, 0x40, 0x6b, 0x72, 0x3d, 0x24, 0xf, 0x16, 0x1b, 0x2, 0x29, 0x30, 0x7f, 0x66, 0x4d, 0x54, 0xd3, 0xca, 0xe1, 0xf8, 0xb7, 0xae, 0x85, 0x9c, 0x96, 0x8f, 0xa4, 0xbd, 0xf2, 0xeb, 0xc0, 0xd9, 0x5e, 0x47, 0x6c, 0x75, 0x3a, 0x23, 0x8, 0x11, 0x12, 0xb, 0x20, 0x39, 0x76, 0x6f, 0x44, 0x5d, 0xda, 0xc3, 0xe8, 0xf1, 0xbe, 0xa7, 0x8c, 0x95, 0x9f, 0x86, 0xad, 0xb4, 0xfb, 0xe2, 0xc9, 0xd0, 0x57, 0x4e, 0x65, 0x7c, 0x33, 0x2a, 0x1, 0x18, 0x15, 0xc, 0x27, 0x3e, 0x71, 0x68, 0x43, 0x5a, 0xdd, 0xc4, 0xef, 0xf6, 0xb9, 0xa0, 0x8b, 0x92, 0x98, 0x81, 0xaa, 0xb3, 0xfc, 0xe5, 0xce, 0xd7, 0x50, 0x49, 0x62, 0x7b, 0x34, 0x2d, 0x6, 0x1f}, [256]uint8{0x0, 0x1a, 0x34, 0x2e, 0x68, 0x72, 0x5c, 0x46, 0xd0, 0xca, 0xe4, 0xfe, 0xb8, 0xa2, 0x8c, 0x96, 0xbd, 0xa7, 0x89, 0x93, 0xd5, 0xcf, 0xe1, 0xfb, 0x6d, 0x77, 0x59, 0x43, 0x5, 0x1f, 0x31, 0x2b, 0x67, 0x7d, 0x53, 0x49, 0xf, 0x15, 0x3b, 0x21, 0xb7, 0xad, 0x83, 0x99, 0xdf, 0xc5, 0xeb, 0xf1, 0xda, 0xc0, 0xee, 0xf4, 0xb2, 0xa8, 0x86, 0x9c, 0xa, 0x10, 0x3e, 0x24, 0x62, 0x78, 0x56, 0x4c, 0xce, 0xd4, 0xfa, 0xe0, 0xa6, 0xbc, 0x92, 0x88, 0x1e, 0x4, 0x2a, 0x30, 0x76, 0x6c, 0x42, 0x58, 0x73, 0x69, 0x47, 0x5d, 0x1b, 0x1, 0x2f, 0x35, 0xa3, 0xb9, 0x97, 0x8d, 0xcb, 0xd1, 0xff, 0xe5, 0xa9, 0xb3, 0x9d, 0x87, 0xc1, 0xdb, 0xf5, 0xef, 0x79, 0x63, 0x4d, 0x57, 0x11, 0xb, 0x25, 0x3f, 0x14, 0xe, 0x20, 0x3a, 0x7c, 0x66, 0x48, 0x52, 0xc4, 0xde, 0xf0, 0xea, 0xac, 0xb6, 0x98, 0x82, 0x81, 0x9b, 0xb5, 0xaf, 0xe9, 0xf3, 0xdd, 0xc7, 0x51, 0x4b, 0x65, 0x7f, 0x39, 0x23, 0xd, 0x17, 0x3c, 0x26, 0x8, 0x12, 0x54, 0x4e, 0x60, 0x7a, 0xec, 0xf6, 0xd8, 0xc2, 0x84, 0x9e, 0xb0, 0xaa, 0xe6, 0xfc, 0xd2, 0xc8, 0x8e, 0x94, 0xba, 0xa0, 0x36, 0x2c, 0x2, 0x18, 0x5e, 0x44, 0x6a, 0x70, 0x5b, 0x41, 0x6f, 0x75, 0x33, 0x29, 0x7, 0x1d, 0x8b, 0x91, 0xbf, 0xa5, 0xe3, 0xf9, 0xd7, 0xcd, 0x4f, 0x55, 0x7b, 0x61, 0x27, 0x3d, 0x13, 0x9, 0x9f, 0x85, 0xab, 0xb1, 0xf7, 0xed, 0xc3, 0xd9, 0xf2, 0xe8, 0xc6, 0xdc, 0x9a, 0x80, 0xae, 0xb4, 0x22, 0x38, 0x16, 0xc, 0x4a, 0x50, 0x7e, 0x64, 0x28, 0x32, 0x1c, 0x6, 0x40, 0x5a, 0x74, 0x6e, 0xf8, 0xe2, 0xcc, 0xd6, 0x90, 0x8a, 0xa4, 0xbe, 0x95, 0x8f, 0xa1, 0xbb, 0xfd, 0xe7, 0xc9, 0xd3, 0x45, 0x5f, 0x71, 0x6b, 0x2d, 0x37, 0x19, 0x3}, [256]uint8{0x0, 0x1b, 0x36, 0x2d, 0x6c, 0x77, 0x5a, 0x41, 0xd8, 0xc3, 0xee, 0xf5, 0xb4, 0xaf, 0x82, 0x99, 0xad, 0xb6, 0x9b, 0x80, 0xc1, 0xda, 0xf7, 0xec, 0x75, 0x6e, 0x43, 0x58, 0x19, 0x2, 0x2f, 0x34, 0x47, 0x5c, 0x71, 0x6a, 0x2b, 0x30, 0x1d, 0x6, 0x9f, 0x84, 0xa9, 0xb2, 0xf3, 0xe8, 0xc5, 0xde, 0xea, 0xf1, 0xdc, 0xc7, 0x86, 0x9d, 0xb0, 0xab, 0x32, 0x29, 0x4, 0x1f, 0x5e, 0x45, 0x68, 0x73, 0x8e, 0x95, 0xb8, 0xa3, 0xe2, 0xf9, 0xd4, 0xcf, 0x56, 0x4d, 0x60, 0x7b, 0x3a, 0x21, 0xc, 0x17, 0x23, 0x38, 0x15, 0xe, 0x4f, 0x54, 0x79, 0x62, 0xfb, 0xe0, 0xcd, 0xd6, 0x97, 0x8c, 0xa1, 0xba, 0xc9, 0xd2, 0xff, 0xe4, 0xa5, 0xbe, 0x93, 0x88, 0x11, 0xa, 0x27, 0x3c, 0x7d, 0x66, 0x4b, 0x50, 0x64, 0x7f, 0x52, 0x49, 0x8, 0x13, 0x3e, 0x25, 0xbc, 0xa7, 0x8a, 0x91, 0xd0, 0xcb, 0xe6, 0xfd, 0x1, 0x1a, 0x37, 0x2c, 0x6d, 0x76, 0x5b, 0x40, 0xd9, 0xc2, 0xef, 0xf4, 0xb5, 0xae, 0x83, 0x98, 0xac, 0xb7, 0x9a, 0x81, 0xc0, 0xdb, 0xf6, 0xed, 0x74, 0x6f, 0x42, 0x59, 0x18, 0x3, 0x2e, 0x35, 0x46, 0x5d, 0x70, 0x6b, 0x2a, 0x31, 0x1c, 0x7, 0x9e, 0x85, 0xa8, 0xb3, 0xf2, 0xe9, 0xc4, 0xdf, 0xeb, 0xf0, 0xdd, 0xc6, 0x87, 0x9c, 0xb1, 0xaa, 0x33, 0x28, 0x5, 0x1e, 0x5f, 0x44, 0x69, 0x72, 0x8f, 0x94, 0xb9, 0xa2, 0xe3, 0xf8, 0xd5, 0xce, 0x57, 0x4c, 0x61, 0x7a, 0x3b, 0x20, 0xd, 0x16, 0x22, 0x39, 0x14, 0xf, 0x4e, 0x55, 0x78, 0x63, 0xfa, 0xe1, 0xcc, 0xd7, 0x96, 0x8d, 0xa0, 0xbb, 0xc8, 0xd3, 0xfe, 0xe5, 0xa4, 0xbf, 0x92, 0x89, 0x10, 0xb, 0x26, 0x3d, 0x7c, 0x67, 0x4a, 0x51, 0x65, 0x7e, 0x53, 0x48, 0x9, 0x12, 0x3f, 0x24, 0xbd, 0xa6, 0x8b, 0x90, 0xd1, 0xca, 0xe7, 0xfc}, [256]uint8{0x0, 0x1c, 0x38, 0x24, 0x70, 0x6c, 0x48, 0x54, 0xe0, 0xfc, 0xd8, 0xc4, 0x90, 0x8c, 0xa8, 0xb4, 0xdd, 0xc1, 0xe5, 0xf9, 0xad, 0xb1, 0x95, 0x89, 0x3d, 0x21, 0x5, 0x19, 0x4d, 0x51, 0x75, 0x69, 0xa7, 0xbb, 0x9f, 0x83, 0xd7, 0xcb, 0xef, 0xf3, 0x47, 0x5b, 0x7f, 0x63, 0x37, 0x2b, 0xf, 0x13, 0x7a, 0x66, 0x42, 0x5e, 0xa, 0x16, 0x32, 0x2e, 0x9a, 0x86, 0xa2, 0xbe, 0xea, 0xf6, 0xd2, 0xce, 0x53, 0x4f, 0x6b, 0x77, 0x23, 0x3f, 0x1b, 0x7, 0xb3, 0xaf, 0x8b, 0x97, 0xc3, 0xdf, 0xfb, 0xe7, 0x8e, 0x92, 0xb6, 0xaa, 0xfe, 0xe2, 0xc6, 0xda, 0x6e, 0x72, 0x56, 0x4a, 0x1e, 0x2, 0x26, 0x3a, 0xf4, 0xe8, 0xcc, 0xd0, 0x84, 0x98, 0xbc, 0xa0, 0x14, 0x8, 0x2c, 0x30, 0x64, 0x78, 0x5c, 0x40, 0x29, 0x35, 0x11, 0xd, 0x59, 0x45, 0x61, 0x7d, 0xc9, 0xd5, 0xf1, 0xed, 0xb9, 0xa5, 0x81, 0x9d, 0xa6, 0xba, 0x9e, 0x82, 0xd6, 0xca, 0xee, 0xf2, 0x46, 0x5a, 0x7e, 0x62, 0x36, 0x2a, 0xe, 0x12, 0x7b, 0x67, 0x43, 0x5f, 0xb, 0x17, 0x33, 0x2f, 0x9b, 0x87, 0xa3, 0xbf, 0xeb, 0xf7, 0xd3, 0xcf, 0x1, 0x1d, 0x39, 0x25, 0x71, 0x6d, 0x49, 0x55, 0xe1, 0xfd, 0xd9, 0xc5, 0x91, 0x8d, 0xa9, 0xb5, 0xdc, 0xc0, 0xe4, 0xf8, 0xac, 0xb0, 0x94, 0x88, 0x3c, 0x20, 0x4, 0x18, 0x4c, 0x50, 0x74, 0x68, 0xf5, 0xe9, 0xcd, 0xd1, 0x85, 0x99, 0xbd, 0xa1, 0x15, 0x9, 0x2d, 0x31, 0x65, 0x79, 0x5d, 0x41, 0x28, 0x34, 0x10, 0xc, 0x58, 0x44, 0x60, 0x7c, 0xc8, 0xd4, 0xf0, 0xec, 0xb8, 0xa4, 0x80, 0x9c, 0x52, 0x4e, 0x6a, 0x76, 0x22, 0x3e, 0x1a, 0x6, 0xb2, 0xae, 0x8a, 0x96, 0xc2, 0xde, 0xfa, 0xe6, 0x8f, 0x93, 0xb7, 0xab, 0xff, 0xe3, 0xc7, 0xdb, 0x6f, 0x73, 0x57, 0x4b, 0x1f, 0x3, 0x27, 0x3b}, [256]uint8{0x0, 0x1d, 0x3a, 0x27, 0x74, 0x69, 0x4e, 0x53, 0xe8, 0xf5, 0xd2, 0xcf, 0x9c, 0x81, 0xa6, 0xbb, 0xcd, 0xd0, 0xf7, 0xea, 0xb9, 0xa4, 0x83, 0x9e, 0x25, 0x38, 0x1f, 0x2, 0x51, 0x4c, 0x6b, 0x76, 0x87, 0x9a, 0xbd, 0xa0, 0xf3, 0xee, 0xc9, 0xd4, 0x6f, 0x72, 0x55, 0x48, 0x1b, 0x6, 0x21, 0x3c, 0x4a, 0x57, 0x70, 0x6d, 0x3e, 0x23, 0x4, 0x19, 0xa2, 0xbf, 0x98, 0x85, 0xd6, 0xcb, 0xec, 0xf1, 0x13, 0xe, 0x29, 0x34, 0x67, 0x7a, 0x5d, 0x40, 0xfb, 0xe6, 0xc1, 0xdc, 0x8f, 0x92, 0xb5, 0xa8, 0xde, 0xc3, 0xe4, 0xf9, 0xaa, 0xb7, 0x90, 0x8d, 0x36, 0x2b, 0xc, 0x11, 0x42, 0x5f, 0x78, 0x65, 0x94, 0x89, 0xae, 0xb3, 0xe0, 0xfd, 0xda, 0xc7, 0x7c, 0x61, 0x46, 0x5b, 0x8, 0x15, 0x32, 0x2f, 0x59, 0x44, 0x63, 0x7e, 0x2d, 0x30, 0x17, 0xa, 0xb1, 0xac, 0x8b, 0x96, 0xc5, 0xd8, 0xff, 0xe2, 0x26, 0x3b, 0x1c, 0x1, 0x52, 0x4f, 0x68, 0x75, 0xce, 0xd3, 0xf4, 0xe9, 0xba, 0xa7, 0x80, 0x9d, 0xeb, 0xf6, 0xd1, 0xcc, 0x9f, 0x82, 0xa5, 0xb8, 0x3, 0x1e, 0x39, 0x24, 0x77, 0x6a, 0x4d, 0x50, 0xa1, 0xbc, 0x9b, 0x86, 0xd5, 0xc8, 0xef, 0xf2, 0x49, 0x54, 0x73, 0x6e, 0x3d, 0x20, 0x7, 0x1a, 0x6c, 0x71, 0x56, 0x4b, 0x18, 0x5, 0x22, 0x3f, 0x84, 0x99, 0xbe, 0xa3, 0xf0, 0xed, 0xca, 0xd7, 0x35, 0x28, 0xf, 0x12, 0x41, 0x5c, 0x7b, 0x66, 0xdd, 0xc0, 0xe7, 0xfa, 0xa9, 0xb4, 0x93, 0x8e, 0xf8, 0xe5, 0xc2, 0xdf, 0x8c, 0x91, 0xb6, 0xab, 0x10, 0xd, 0x2a, 0x37, 0x64, 0x79, 0x5e, 0x43, 0xb2, 0xaf, 0x88, 0x95, 0xc6, 0xdb, 0xfc, 0xe1, 0x5a, 0x47, 0x60, 0x7d, 0x2e, 0x33, 0x14, 0x9, 0x7f, 0x62, 0x45, 0x58, 0xb, 0x16, 0x31, 0x2c, 0x97, 0x8a, 0xad, 0xb0, 0xe3, 0xfe, 0xd9, 0xc4}, [256]uint8{0x0, 0x1e, 0x3c, 0x22, 0x78, 0x66, 0x44, 0x5a, 0xf0, 0xee, 0xcc, 0xd2, 0x88, 0x96, 0xb4, 0xaa, 0xfd, 0xe3, 0xc1, 0xdf, 0x85, 0x9b, 0xb9, 0xa7, 0xd, 0x13, 0x31, 0x2f, 0x75, 0x6b, 0x49, 0x57, 0xe7, 0xf9, 0xdb, 0xc5, 0x9f, 0x81, 0xa3, 0xbd, 0x17, 0x9, 0x2b, 0x35, 0x6f, 0x71, 0x53, 0x4d, 0x1a, 0x4, 0x26, 0x38, 0x62, 0x7c, 0x5e, 0x40, 0xea, 0xf4, 0xd6, 0xc8, 0x92, 0x8c, 0xae, 0xb0, 0xd3, 0xcd, 0xef, 0xf1, 0xab, 0xb5, 0x97, 0x89, 0x23, 0x3d, 0x1f, 0x1, 0x5b, 0x45, 0x67, 0x79, 0x2e, 0x30, 0x12, 0xc, 0x56, 0x48, 0x6a, 0x74, 0xde, 0xc0, 0xe2, 0xfc, 0xa6, 0xb8, 0x9a, 0x84, 0x34, 0x2a, 0x8, 0x16, 0x4c, 0x52, 0x70, 0x6e, 0xc4, 0xda, 0xf8, 0xe6, 0xbc, 0xa2, 0x80, 0x9e, 0xc9, 0xd7, 0xf5, 0xeb, 0xb1, 0xaf, 0x8d, 0x93, 0x39, 0x27, 0x5, 0x1b, 0x41, 0x5f, 0x7d, 0x63, 0xbb, 0xa5, 0x87, 0x99, 0xc3, 0xdd, 0xff, 0xe1, 0x4b, 0x55, 0x77, 0x69, 0x33, 0x2d, 0xf, 0x11, 0x46, 0x58, 0x7a, 0x64, 0x3e, 0x20, 0x2, 0x1c, 0xb6, 0xa8, 0x8a, 0x94, 0xce, 0xd0, 0xf2, 0xec, 0x5c, 0x42, 0x60, 0x7e, 0x24, 0x3a, 0x18, 0x6, 0xac, 0xb2, 0x90, 0x8e, 0xd4, 0xca, 0xe8, 0xf6, 0xa1, 0xbf, 0x9d, 0x83, 0xd9, 0xc7, 0xe5, 0xfb, 0x51, 0x4f, 0x6d, 0x73, 0x29, 0x37, 0x15, 0xb, 0x68, 0x76, 0x54, 0x4a, 0x10, 0xe, 0x2c, 0x32, 0x98, 0x86, 0xa4, 0xba, 0xe0, 0xfe, 0xdc, 0xc2, 0x95, 0x8b, 0xa9, 0xb7, 0xed, 0xf3, 0xd1, 0xcf, 0x65, 0x7b, 0x59, 0x47, 0x1d, 0x3, 0x21, 0x3f, 0x8f, 0x91, 0xb3, 0xad, 0xf7, 0xe9, 0xcb, 0xd5, 0x7f, 0x61, 0x43, 0x5d, 0x7, 0x19, 0x3b, 0x25, 0x72, 0x6c, 0x4e, 0x50, 0xa, 0x14, 0x36, 0x28, 0x82, 0x9c, 0xbe, 0xa0, 0xfa, 0xe4, 0xc6, 0xd8}, [256]uint8{0x0, 0x1f, 0x3e, 0x21, 0x7c, 0x63, 0x42, 0x5d, 0xf8, 0xe7, 0xc6, 0xd9, 0x84, 0x9b, 0xba, 0xa5, 0xed, 0xf2, 0xd3, 0xcc, 0x91, 0x8e, 0xaf, 0xb0, 0x15, 0xa, 0x2b, 0x34, 0x69, 0x76, 0x57, 0x48, 0xc7, 0xd8, 0xf9, 0xe6, 0xbb, 0xa4, 0x85, 0x9a, 0x3f, 0x20, 0x1, 0x1e, 0x43, 0x5c, 0x7d, 0x62, 0x2a, 0x35, 0x14, 0xb, 0x56, 0x49, 0x68, 0x77, 0xd2, 0xcd, 0xec, 0xf3, 0xae, 0xb1, 0x90, 0x8f, 0x93, 0x8c, 0xad, 0xb2, 0xef, 0xf0, 0xd1, 0xce, 0x6b, 0x74, 0x55, 0x4a, 0x17, 0x8, 0x29, 0x36, 0x7e, 0x61, 0x40, 0x5f, 0x2, 0x1d, 0x3c, 0x23, 0x86, 0x99, 0xb8, 0xa7, 0xfa, 0xe5, 0xc4, 0xdb, 0x54, 0x4b, 0x6a, 0x75, 0x28, 0x37, 0x16, 0x9, 0xac, 0xb3, 0x92, 0x8d, 0xd0, 0xcf, 0xee, 0xf1, 0xb9, 0xa6, 0x87, 0x98, 0xc5, 0xda, 0xfb, 0xe4, 0x41, 0x5e, 0x7f, 0x60, 0x3d, 0x22, 0x3, 0x1c, 0x3b, 0x24, 0x5, 0x1a, 0x47, 0x58, 0x79, 0x66, 0xc3, 0xdc, 0xfd, 0xe2, 0xbf, 0xa0, 0x81, 0x9e, 0xd6, 0xc9, 0xe8, 0xf7, 0xaa, 0xb5, 0x94, 0x8b, 0x2e, 0x31, 0x10, 0xf, 0x52, 0x4d, 0x6c, 0x73, 0xfc, 0xe3, 0xc2, 0xdd, 0x80, 0x9f, 0xbe, 0xa1, 0x4, 0x1b, 0x3a, 0x25, 0x78, 0x67, 0x46, 0x59, 0x11, 0xe, 0x2f, 0x30, 0x6d, 0x72, 0x53, 0x4c, 0xe9, 0xf6, 0xd7, 0xc8, 0x95, 0x8a, 0xab, 0xb4, 0xa8, 0xb7, 0x96, 0x89, 0xd4, 0xcb, 0xea, 0xf5, 0x50, 0x4f, 0x6e, 0x71, 0x2c, 0x33, 0x12, 0xd, 0x45, 0x5a, 0x7b, 0x64, 0x39, 0x26, 0x7, 0x18, 0xbd, 0xa2, 0x83, 0x9c, 0xc1, 0xde, 0xff, 0xe0, 0x6f, 0x70, 0x51, 0x4e, 0x13, 0xc, 0x2d, 0x32, 0x97, 0x88, 0xa9, 0xb6, 0xeb, 0xf4, 0xd5, 0xca, 0x82, 0x9d, 0xbc, 0xa3, 0xfe, 0xe1, 0xc0, 0xdf, 0x7a, 0x65, 0x44, 0x5b, 0x6, 0x19, 0x38, 0x27}, [256]uint8{0x0, 0x20, 0x40, 0x60, 0x80, 0xa0, 0xc0, 0xe0, 0x1d, 0x3d, 0x5d, 0x7d, 0x9d, 0xbd, 0xdd, 0xfd, 0x3a, 0x1a, 0x7a, 0x5a, 0xba, 0x9a, 0xfa, 0xda, 0x27, 0x7, 0x67, 0x47, 0xa7, 0x87, 0xe7, 0xc7, 0x74, 0x54, 0x34, 0x14, 0xf4, 0xd4, 0xb4, 0x94, 0x69, 0x49, 0x29, 0x9, 0xe9, 0xc9, 0xa9, 0x89, 0x4e, 0x6e, 0xe, 0x2e, 0xce, 0xee, 0x8e, 0xae, 0x53, 0x73, 0x13, 0x33, 0xd3, 0xf3, 0x93, 0xb3, 0xe8, 0xc8, 0xa8, 0x88, 0x68, 0x48, 0x28, 0x8, 0xf5, 0xd5, 0xb5, 0x95, 0x75, 0x55, 0x35, 0x15, 0xd2, 0xf2, 0x92, 0xb2, 0x52, 0x72, 0x12, 0x32, 0xcf, 0xef, 0x8f, 0xaf, 0x4f, 0x6f, 0xf, 0x2f, 0x9c, 0xbc, 0xdc, 0xfc, 0x1c, 0x3c, 0x5c, 0x7c, 0x81, 0xa1, 0xc1, 0xe1, 0x1, 0x21, 0x41, 0x61, 0xa6, 0x86, 0xe6, 0xc6, 0x26, 0x6, 0x66, 0x46, 0xbb, 0x9b, 0xfb, 0xdb, 0x3b, 0x1b, 0x7b, 0x5b, 0xcd, 0xed, 0x8d, 0xad, 0x4d, 0x6d, 0xd, 0x2d, 0xd0, 0xf0, 0x90, 0xb0, 0x50, 0x70, 0x10, 0x30, 0xf7, 0xd7, 0xb7, 0x97, 0x77, 0x57, 0x37, 0x17, 0xea, 0xca, 0xaa, 0x8a, 0x6a, 0x4a, 0x2a, 0xa, 0xb9, 0x99, 0xf9, 0xd9, 0x39, 0x19, 0x79, 0x59, 0xa4, 0x84, 0xe4, 0xc4, 0x24, 0x4, 0x64, 0x44, 0x83, 0xa3, 0xc3, 0xe3, 0x3, 0x23, 0x43, 0x63, 0x9e, 0xbe, 0xde, 0xfe, 0x1e, 0x3e, 0x5e, 0x7e, 0x25, 0x5, 0x65, 0x45, 0xa5, 0x85, 0xe5, 0xc5, 0x38, 0x18, 0x78, 0x58, 0xb8, 0x98, 0xf8, 0xd8, 0x1f, 0x3f, 0x5f, 0x7f, 0x9f, 0xbf, 0xdf, 0xff, 0x2, 0x22, 0x42, 0x62, 0x82, 0xa2, 0xc2, 0xe2, 0x51, 0x71, 0x11, 0x31, 0xd1, 0xf1, 0x91, 0xb1, 0x4c, 0x6c, 0xc, 0x2c, 0xcc, 0xec, 0x8c, 0xac, 0x6b, 0x4b, 0x2b, 0xb, 0xeb, 0xcb, 0xab, 0x8b, 0x76, 0x56, 0x36, 0x16, 0xf6, 0xd6, 0xb6, 0x96}, [256]uint8{0x0, 0x21, 0x42, 0x63, 0x84, 0xa5, 0xc6, 0xe7, 0x15, 0x34, 0x57, 0x76, 0x91, 0xb0, 0xd3, 0xf2, 0x2a, 0xb, 0x68, 0x49, 0xae, 0x8f, 0xec, 0xcd, 0x3f, 0x1e, 0x7d, 0x5c, 0xbb, 0x9a, 0xf9, 0xd8, 0x54, 0x75, 0x16, 0x37, 0xd0, 0xf1, 0x92, 0xb3, 0x41, 0x60, 0x3, 0x22, 0xc5, 0xe4, 0x87, 0xa6, 0x7e, 0x5f, 0x3c, 0x1d, 0xfa, 0xdb, 0xb8, 0x99, 0x6b, 0x4a, 0x29, 0x8, 0xef, 0xce, 0xad, 0x8c, 0xa8, 0x89, 0xea, 0xcb, 0x2c, 0xd, 0x6e, 0x4f, 0xbd, 0x9c, 0xff, 0xde, 0x39, 0x18, 0x7b, 0x5a, 0x82, 0xa3, 0xc0, 0xe1, 0x6, 0x27, 0x44, 0x65, 0x97, 0xb6, 0xd5, 0xf4, 0x13, 0x32, 0x51, 0x70, 0xfc, 0xdd, 0xbe, 0x9f, 0x78, 0x59, 0x3a, 0x1b, 0xe9, 0xc8, 0xab, 0x8a, 0x6d, 0x4c, 0x2f, 0xe, 0xd6, 0xf7, 0x94, 0xb5, 0x52, 0x73, 0x10, 0x31, 0xc3, 0xe2, 0x81, 0xa0, 0x47, 0x66, 0x5, 0x24, 0x4d, 0x6c, 0xf, 0x2e, 0xc9, 0xe8, 0x8b, 0xaa, 0x58, 0x79, 0x1a, 0x3b, 0xdc, 0xfd, 0x9e, 0xbf, 0x67, 0x46, 0x25, 0x4, 0xe3, 0xc2, 0xa1, 0x80, 0x72, 0x53, 0x30, 0x11, 0xf6, 0xd7, 0xb4, 0x95, 0x19, 0x38, 0x5b, 0x7a, 0x9d, 0xbc, 0xdf, 0xfe, 0xc, 0x2d, 0x4e, 0x6f, 0x88, 0xa9, 0xca, 0xeb, 0x33, 0x12, 0x71, 0x50, 0xb7, 0x96, 0xf5, 0xd4, 0x26, 0x7, 0x64, 0x45, 0xa2, 0x83, 0xe0, 0xc1, 0xe5, 0xc4, 0xa7, 0x86, 0x61, 0x40, 0x23, 0x2, 0xf0, 0xd1, 0xb2, 0x93, 0x74, 0x55, 0x36, 0x17, 0xcf, 0xee, 0x8d, 0xac, 0x4b, 0x6a, 0x9, 0x28, 0xda, 0xfb, 0x98, 0xb9, 0x5e, 0x7f, 0x1c, 0x3d, 0xb1, 0x90, 0xf3, 0xd2, 0x35, 0x14, 0x77, 0x56, 0xa4, 0x85, 0xe6, 0xc7, 0x20, 0x1, 0x62, 0x43, 0x9b, 0xba, 0xd9, 0xf8, 0x1f, 0x3e, 0x5d, 0x7c, 0x8e, 0xaf, 0xcc, 0xed, 0xa, 0x2b, 0x48, 0x69}, [256]uint8{0x0, 0x22, 0x44, 0x66, 0x88, 0xaa, 0xcc, 0xee, 0xd, 0x2f, 0x49, 0x6b, 0x85, 0xa7, 0xc1, 0xe3, 0x1a, 0x38, 0x5e, 0x7c, 0x92, 0xb0, 0xd6, 0xf4, 0x17, 0x35, 0x53, 0x71, 0x9f, 0xbd, 0xdb, 0xf9, 0x34, 0x16, 0x70, 0x52, 0xbc, 0x9e, 0xf8, 0xda, 0x39, 0x1b, 0x7d, 0x5f, 0xb1, 0x93, 0xf5, 0xd7, 0x2e, 0xc, 0x6a, 0x48, 0xa6, 0x84, 0xe2, 0xc0, 0x23, 0x1, 0x67, 0x45, 0xab, 0x89, 0xef, 0xcd, 0x68, 0x4a, 0x2c, 0xe, 0xe0, 0xc2, 0xa4, 0x86, 0x65, 0x47, 0x21, 0x3, 0xed, 0xcf, 0xa9, 0x8b, 0x72, 0x50, 0x36, 0x14, 0xfa, 0xd8, 0xbe, 0x9c, 0x7f, 0x5d, 0x3b, 0x19, 0xf7, 0xd5, 0xb3, 0x91, 0x5c, 0x7e, 0x18, 0x3a, 0xd4, 0xf6, 0x90, 0xb2, 0x51, 0x73, 0x15, 0x37, 0xd9, 0xfb, 0x9d, 0xbf, 0x46, 0x64, 0x2, 0x20, 0xce, 0xec, 0x8a, 0xa8, 0x4b, 0x69, 0xf, 0x2d, 0xc3, 0xe1, 0x87, 0xa5, 0xd0, 0xf2, 0x94, 0xb6, 0x58, 0x7a, 0x1c, 0x3e, 0xdd, 0xff, 0x99, 0xbb, 0x55, 0x77, 0x11, 0x33, 0xca, 0xe8, 0x8e, 0xac, 0x42, 0x60, 0x6, 0x24, 0xc7, 0xe5, 0x83, 0xa1, 0x4f, 0x6d, 0xb, 0x29, 0xe4, 0xc6, 0xa0, 0x82, 0x6c, 0x4e, 0x28, 0xa, 0xe9, 0xcb, 0xad, 0x8f, 0x61, 0x43, 0x25, 0x7, 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 0xf3, 0xd1, 0xb7, 0x95, 0x7b, 0x59, 0x3f, 0x1d, 0xb8, 0x9a, 0xfc, 0xde, 0x30, 0x12, 0x74, 0x56, 0xb5, 0x97, 0xf1, 0xd3, 0x3d, 0x1f, 0x79, 0x5b, 0xa2, 0x80, 0xe6, 0xc4, 0x2a, 0x8, 0x6e, 0x4c, 0xaf, 0x8d, 0xeb, 0xc9, 0x27, 0x5, 0x63, 0x41, 0x8c, 0xae, 0xc8, 0xea, 0x4, 0x26, 0x40, 0x62, 0x81, 0xa3, 0xc5, 0xe7, 0x9, 0x2b, 0x4d, 0x6f, 0x96, 0xb4, 0xd2, 0xf0, 0x1e, 0x3c, 0x5a, 0x78, 0x9b, 0xb9, 0xdf, 0xfd, 0x13, 0x31, 0x57, 0x75}, [256]uint8{0x0, 0x23, 0x46, 0x65, 0x8c, 0xaf, 0xca, 0xe9, 0x5, 0x26, 0x43, 0x60, 0x89, 0xaa, 0xcf, 0xec, 0xa, 0x29, 0x4c, 0x6f, 0x86, 0xa5, 0xc0, 0xe3, 0xf, 0x2c, 0x49, 0x6a, 0x83, 0xa0, 0xc5, 0xe6, 0x14, 0x37, 0x52, 0x71, 0x98, 0xbb, 0xde, 0xfd, 0x11, 0x32, 0x57, 0x74, 0x9d, 0xbe, 0xdb, 0xf8, 0x1e, 0x3d, 0x58, 0x7b, 0x92, 0xb1, 0xd4, 0xf7, 0x1b, 0x38, 0x5d, 0x7e, 0x97, 0xb4, 0xd1, 0xf2, 0x28, 0xb, 0x6e, 0x4d, 0xa4, 0x87, 0xe2, 0xc1, 0x2d, 0xe, 0x6b, 0x48, 0xa1, 0x82, 0xe7, 0xc4, 0x22, 0x1, 0x64, 0x47, 0xae, 0x8d, 0xe8, 0xcb, 0x27, 0x4, 0x61, 0x42, 0xab, 0x88, 0xed, 0xce, 0x3c, 0x1f, 0x7a, 0x59, 0xb0, 0x93, 0xf6, 0xd5, 0x39, 0x1a, 0x7f, 0x5c, 0xb5, 0x96, 0xf3, 0xd0, 0x36, 0x15, 0x70, 0x53, 0xba, 0x99, 0xfc, 0xdf, 0x33, 0x10, 0x75, 0x56, 0xbf, 0x9c, 0xf9, 0xda, 0x50, 0x73, 0x16, 0x35, 0xdc, 0xff, 0x9a, 0xb9, 0x55, 0x76, 0x13, 0x30, 0xd9, 0xfa, 0x9f, 0xbc, 0x5a, 0x79, 0x1c, 0x3f, 0xd6, 0xf5, 0x90, 0xb3, 0x5f, 0x7c, 0x19, 0x3a, 0xd3, 0xf0, 0x95, 0xb6, 0x44, 0x67, 0x2, 0x21, 0xc8, 0xeb, 0x8e, 0xad, 0x41, 0x62, 0x7, 0x24, 0xcd, 0xee, 0x8b, 0xa8, 0x4e, 0x6d, 0x8, 0x2b, 0xc2, 0xe1, 0x84, 0xa7, 0x4b, 0x68, 0xd, 0x2e, 0xc7, 0xe4, 0x81, 0xa2, 0x78, 0x5b, 0x3e, 0x1d, 0xf4, 0xd7, 0xb2, 0x91, 0x7d, 0x5e, 0x3b, 0x18, 0xf1, 0xd2, 0xb7, 0x94, 0x72, 0x51, 0x34, 0x17, 0xfe, 0xdd, 0xb8, 0x9b, 0x77, 0x54, 0x31, 0x12, 0xfb, 0xd8, 0xbd, 0x9e, 0x6c, 0x4f, 0x2a, 0x9, 0xe0, 0xc3, 0xa6, 0x85, 0x69, 0x4a, 0x2f, 0xc, 0xe5, 0xc6, 0xa3, 0x80, 0x66, 0x45, 0x20, 0x3, 0xea, 0xc9, 0xac, 0x8f, 0x63, 0x40, 0x25, 0x6, 0xef, 0xcc, 0xa9, 0x8a}, [256]uint8{0x0, 0x24, 0x48, 0x6c, 0x90, 0xb4, 0xd8, 0xfc, 0x3d, 0x19, 0x75, 0x51, 0xad, 0x89, 0xe5, 0xc1, 0x7a, 0x5e, 0x32, 0x16, 0xea, 0xce, 0xa2, 0x86, 0x47, 0x63, 0xf, 0x2b, 0xd7, 0xf3, 0x9f, 0xbb, 0xf4, 0xd0, 0xbc, 0x98, 0x64, 0x40, 0x2c, 0x8, 0xc9, 0xed, 0x81, 0xa5, 0x59, 0x7d, 0x11, 0x35, 0x8e, 0xaa, 0xc6, 0xe2, 0x1e, 0x3a, 0x56, 0x72, 0xb3, 0x97, 0xfb, 0xdf, 0x23, 0x7, 0x6b, 0x4f, 0xf5, 0xd1, 0xbd, 0x99, 0x65, 0x41, 0x2d, 0x9, 0xc8, 0xec, 0x80, 0xa4, 0x58, 0x7c, 0x10, 0x34, 0x8f, 0xab, 0xc7, 0xe3, 0x1f, 0x3b, 0x57, 0x73, 0xb2, 0x96, 0xfa, 0xde, 0x22, 0x6, 0x6a, 0x4e, 0x1, 0x25, 0x49, 0x6d, 0x91, 0xb5, 0xd9, 0xfd, 0x3c, 0x18, 0x74, 0x50, 0xac, 0x88, 0xe4, 0xc0, 0x7b, 0x5f, 0x33, 0x17, 0xeb, 0xcf, 0xa3, 0x87, 0x46, 0x62, 0xe, 0x2a, 0xd6, 0xf2, 0x9e, 0xba, 0xf7, 0xd3, 0xbf, 0x9b, 0x67, 0x43, 0x2f, 0xb, 0xca, 0xee, 0x82, 0xa6, 0x5a, 0x7e, 0x12, 0x36, 0x8d, 0xa9, 0xc5, 0xe1, 0x1d, 0x39, 0x55, 0x71, 0xb0, 0x94, 0xf8, 0xdc, 0x20, 0x4, 0x68, 0x4c, 0x3, 0x27, 0x4b, 0x6f, 0x93, 0xb7, 0xdb, 0xff, 0x3e, 0x1a, 0x76, 0x52, 0xae, 0x8a, 0xe6, 0xc2, 0x79, 0x5d, 0x31, 0x15, 0xe9, 0xcd, 0xa1, 0x85, 0x44, 0x60, 0xc, 0x28, 0xd4, 0xf0, 0x9c, 0xb8, 0x2, 0x26, 0x4a, 0x6e, 0x92, 0xb6, 0xda, 0xfe, 0x3f, 0x1b, 0x77, 0x53, 0xaf, 0x8b, 0xe7, 0xc3, 0x78, 0x5c, 0x30, 0x14, 0xe8, 0xcc, 0xa0, 0x84, 0x45, 0x61, 0xd, 0x29, 0xd5, 0xf1, 0x9d, 0xb9, 0xf6, 0xd2, 0xbe, 0x9a, 0x66, 0x42, 0x2e, 0xa, 0xcb, 0xef, 0x83, 0xa7, 0x5b, 0x7f, 0x13, 0x37, 0x8c, 0xa8, 0xc4, 0xe0, 0x1c, 0x38, 0x54, 0x70, 0xb1, 0x95, 0xf9, 0xdd, 0x21, 0x5, 0x69, 0x4d}, [256]uint8{0x0, 0x25, 0x4a, 0x6f, 0x94, 0xb1, 0xde, 0xfb, 0x35, 0x10, 0x7f, 0x5a, 0xa1, 0x84, 0xeb, 0xce, 0x6a, 0x4f, 0x20, 0x5, 0xfe, 0xdb, 0xb4, 0x91, 0x5f, 0x7a, 0x15, 0x30, 0xcb, 0xee, 0x81, 0xa4, 0xd4, 0xf1, 0x9e, 0xbb, 0x40, 0x65, 0xa, 0x2f, 0xe1, 0xc4, 0xab, 0x8e, 0x75, 0x50, 0x3f, 0x1a, 0xbe, 0x9b, 0xf4, 0xd1, 0x2a, 0xf, 0x60, 0x45, 0x8b, 0xae, 0xc1, 0xe4, 0x1f, 0x3a, 0x55, 0x70, 0xb5, 0x90, 0xff, 0xda, 0x21, 0x4, 0x6b, 0x4e, 0x80, 0xa5, 0xca, 0xef, 0x14, 0x31, 0x5e, 0x7b, 0xdf, 0xfa, 0x95, 0xb0, 0x4b, 0x6e, 0x1, 0x24, 0xea, 0xcf, 0xa0, 0x85, 0x7e, 0x5b, 0x34, 0x11, 0x61, 0x44, 0x2b, 0xe, 0xf5, 0xd0, 0xbf, 0x9a, 0x54, 0x71, 0x1e, 0x3b, 0xc0, 0xe5, 0x8a, 0xaf, 0xb, 0x2e, 0x41, 0x64, 0x9f, 0xba, 0xd5, 0xf0, 0x3e, 0x1b, 0x74, 0x51, 0xaa, 0x8f, 0xe0, 0xc5, 0x77, 0x52, 0x3d, 0x18, 0xe3, 0xc6, 0xa9, 0x8c, 0x42, 0x67, 0x8, 0x2d, 0xd6, 0xf3, 0x9c, 0xb9, 0x1d, 0x38, 0x57, 0x72, 0x89, 0xac, 0xc3, 0xe6, 0x28, 0xd, 0x62, 0x47, 0xbc, 0x99, 0xf6, 0xd3, 0xa3, 0x86, 0xe9, 0xcc, 0x37, 0x12, 0x7d, 0x58, 0x96, 0xb3, 0xdc, 0xf9, 0x2, 0x27, 0x48, 0x6d, 0xc9, 0xec, 0x83, 0xa6, 0x5d, 0x78, 0x17, 0x32, 0xfc, 0xd9, 0xb6, 0x93, 0x68, 0x4d, 0x22, 0x7, 0xc2, 0xe7, 0x88, 0xad, 0x56, 0x73, 0x1c, 0x39, 0xf7, 0xd2, 0xbd, 0x98, 0x63, 0x46, 0x29, 0xc, 0xa8, 0x8d, 0xe2, 0xc7, 0x3c, 0x19, 0x76, 0x53, 0x9d, 0xb8, 0xd7, 0xf2, 0x9, 0x2c, 0x43, 0x66, 0x16, 0x33, 0x5c, 0x79, 0x82, 0xa7, 0xc8, 0xed, 0x23, 0x6, 0x69, 0x4c, 0xb7, 0x92, 0xfd, 0xd8, 0x7c, 0x59, 0x36, 0x13, 0xe8, 0xcd, 0xa2, 0x87, 0x49, 0x6c, 0x3, 0x26, 0xdd, 0xf8, 0x97, 0xb2}, [256]uint8{0x0, 0x26, 0x4c, 0x6a, 0x98, 0xbe, 0xd4, 0xf2, 0x2d, 0xb, 0x61, 0x47, 0xb5, 0x93, 0xf9, 0xdf, 0x5a, 0x7c, 0x16, 0x30, 0xc2, 0xe4, 0x8e, 0xa8, 0x77, 0x51, 0x3b, 0x1d, 0xef, 0xc9, 0xa3, 0x85, 0xb4, 0x92, 0xf8, 0xde, 0x2c, 0xa, 0x60, 0x46, 0x99, 0xbf, 0xd5, 0xf3, 0x1, 0x27, 0x4d, 0x6b, 0xee, 0xc8, 0xa2, 0x84, 0x76, 0x50, 0x3a, 0x1c, 0xc3, 0xe5, 0x8f, 0xa9, 0x5b, 0x7d, 0x17, 0x31, 0x75, 0x53, 0x39, 0x1f, 0xed, 0xcb, 0xa1, 0x87, 0x58, 0x7e, 0x14, 0x32, 0xc0, 0xe6, 0x8c, 0xaa, 0x2f, 0x9, 0x63, 0x45, 0xb7, 0x91, 0xfb, 0xdd, 0x2, 0x24, 0x4e, 0x68, 0x9a, 0xbc, 0xd6, 0xf0, 0xc1, 0xe7, 0x8d, 0xab, 0x59, 0x7f, 0x15, 0x33, 0xec, 0xca, 0xa0, 0x86, 0x74, 0x52, 0x38, 0x1e, 0x9b, 0xbd, 0xd7, 0xf1, 0x3, 0x25, 0x4f, 0x69, 0xb6, 0x90, 0xfa, 0xdc, 0x2e, 0x8, 0x62, 0x44, 0xea, 0xcc, 0xa6, 0x80, 0x72, 0x54, 0x3e, 0x18, 0xc7, 0xe1, 0x8b, 0xad, 0x5f, 0x79, 0x13, 0x35, 0xb0, 0x96, 0xfc, 0xda, 0x28, 0xe, 0x64, 0x42, 0x9d, 0xbb, 0xd1, 0xf7, 0x5, 0x23, 0x49, 0x6f, 0x5e, 0x78, 0x12, 0x34, 0xc6, 0xe0, 0x8a, 0xac, 0x73, 0x55, 0x3f, 0x19, 0xeb, 0xcd, 0xa7, 0x81, 0x4, 0x22, 0x48, 0x6e, 0x9c, 0xba, 0xd0, 0xf6, 0x29, 0xf, 0x65, 0x43, 0xb1, 0x97, 0xfd, 0xdb, 0x9f, 0xb9, 0xd3, 0xf5, 0x7, 0x21, 0x4b, 0x6d, 0xb2, 0x94, 0xfe, 0xd8, 0x2a, 0xc, 0x66, 0x40, 0xc5, 0xe3, 0x89, 0xaf, 0x5d, 0x7b, 0x11, 0x37, 0xe8, 0xce, 0xa4, 0x82, 0x70, 0x56, 0x3c, 0x1a, 0x2b, 0xd, 0x67, 0x41, 0xb3, 0x95, 0xff, 0xd9, 0x6, 0x20, 0x4a, 0x6c, 0x9e, 0xb8, 0xd2, 0xf4, 0x71, 0x57, 0x3d, 0x1b, 0xe9, 0xcf, 0xa5, 0x83, 0x5c, 0x7a, 0x10, 0x36, 0xc4, 0xe2, 0x88, 0xae}, [256]uint8{0x0, 0x27, 0x4e, 0x69, 0x9c, 0xbb, 0xd2, 0xf5, 0x25, 0x2, 0x6b, 0x4c, 0xb9, 0x9e, 0xf7, 0xd0, 0x4a, 0x6d, 0x4, 0x23, 0xd6, 0xf1, 0x98, 0xbf, 0x6f, 0x48, 0x21, 0x6, 0xf3, 0xd4, 0xbd, 0x9a, 0x94, 0xb3, 0xda, 0xfd, 0x8, 0x2f, 0x46, 0x61, 0xb1, 0x96, 0xff, 0xd8, 0x2d, 0xa, 0x63, 0x44, 0xde, 0xf9, 0x90, 0xb7, 0x42, 0x65, 0xc, 0x2b, 0xfb, 0xdc, 0xb5, 0x92, 0x67, 0x40, 0x29, 0xe, 0x35, 0x12, 0x7b, 0x5c, 0xa9, 0x8e, 0xe7, 0xc0, 0x10, 0x37, 0x5e, 0x79, 0x8c, 0xab, 0xc2, 0xe5, 0x7f, 0x58, 0x31, 0x16, 0xe3, 0xc4, 0xad, 0x8a, 0x5a, 0x7d, 0x14, 0x33, 0xc6, 0xe1, 0x88, 0xaf, 0xa1, 0x86, 0xef, 0xc8, 0x3d, 0x1a, 0x73, 0x54, 0x84, 0xa3, 0xca, 0xed, 0x18, 0x3f, 0x56, 0x71, 0xeb, 0xcc, 0xa5, 0x82, 0x77, 0x50, 0x39, 0x1e, 0xce, 0xe9, 0x80, 0xa7, 0x52, 0x75, 0x1c, 0x3b, 0x6a, 0x4d, 0x24, 0x3, 0xf6, 0xd1, 0xb8, 0x9f, 0x4f, 0x68, 0x1, 0x26, 0xd3, 0xf4, 0x9d, 0xba, 0x20, 0x7, 0x6e, 0x49, 0xbc, 0x9b, 0xf2, 0xd5, 0x5, 0x22, 0x4b, 0x6c, 0x99, 0xbe, 0xd7, 0xf0, 0xfe, 0xd9, 0xb0, 0x97, 0x62, 0x45, 0x2c, 0xb, 0xdb, 0xfc, 0x95, 0xb2, 0x47, 0x60, 0x9, 0x2e, 0xb4, 0x93, 0xfa, 0xdd, 0x28, 0xf, 0x66, 0x41, 0x91, 0xb6, 0xdf, 0xf8, 0xd, 0x2a, 0x43, 0x64, 0x5f, 0x78, 0x11, 0x36, 0xc3, 0xe4, 0x8d, 0xaa, 0x7a, 0x5d, 0x34, 0x13, 0xe6, 0xc1, 0xa8, 0x8f, 0x15, 0x32, 0x5b, 0x7c, 0x89, 0xae, 0xc7, 0xe0, 0x30, 0x17, 0x7e, 0x59, 0xac, 0x8b, 0xe2, 0xc5, 0xcb, 0xec, 0x85, 0xa2, 0x57, 0x70, 0x19, 0x3e, 0xee, 0xc9, 0xa0, 0x87, 0x72, 0x55, 0x3c, 0x1b, 0x81, 0xa6, 0xcf, 0xe8, 0x1d, 0x3a, 0x53, 0x74, 0xa4, 0x83, 0xea, 0xcd, 0x38, 0x1f, 0x76, 0x51}, [256]uint8{0x0, 0x28, 0x50, 0x78, 0xa0, 0x88, 0xf0, 0xd8, 0x5d, 0x75, 0xd, 0x25, 0xfd, 0xd5, 0xad, 0x85, 0xba, 0x92, 0xea, 0xc2, 0x1a, 0x32, 0x4a, 0x62, 0xe7, 0xcf, 0xb7, 0x9f, 0x47, 0x6f, 0x17, 0x3f, 0x69, 0x41, 0x39, 0x11, 0xc9, 0xe1, 0x99, 0xb1, 0x34, 0x1c, 0x64, 0x4c, 0x94, 0xbc, 0xc4, 0xec, 0xd3, 0xfb, 0x83, 0xab, 0x73, 0x5b, 0x23, 0xb, 0x8e, 0xa6, 0xde, 0xf6, 0x2e, 0x6, 0x7e, 0x56, 0xd2, 0xfa, 0x82, 0xaa, 0x72, 0x5a, 0x22, 0xa, 0x8f, 0xa7, 0xdf, 0xf7, 0x2f, 0x7, 0x7f, 0x57, 0x68, 0x40, 0x38, 0x10, 0xc8, 0xe0, 0x98, 0xb0, 0x35, 0x1d, 0x65, 0x4d, 0x95, 0xbd, 0xc5, 0xed, 0xbb, 0x93, 0xeb, 0xc3, 0x1b, 0x33, 0x4b, 0x63, 0xe6, 0xce, 0xb6, 0x9e, 0x46, 0x6e, 0x16, 0x3e, 0x1, 0x29, 0x51, 0x79, 0xa1, 0x89, 0xf1, 0xd9, 0x5c, 0x74, 0xc, 0x24, 0xfc, 0xd4, 0xac, 0x84, 0xb9, 0x91, 0xe9, 0xc1, 0x19, 0x31, 0x49, 0x61, 0xe4, 0xcc, 0xb4, 0x9c, 0x44, 0x6c, 0x14, 0x3c, 0x3, 0x2b, 0x53, 0x7b, 0xa3, 0x8b, 0xf3, 0xdb, 0x5e, 0x76, 0xe, 0x26, 0xfe, 0xd6, 0xae, 0x86, 0xd0, 0xf8, 0x80, 0xa8, 0x70, 0x58, 0x20, 0x8, 0x8d, 0xa5, 0xdd, 0xf5, 0x2d, 0x5, 0x7d, 0x55, 0x6a, 0x42, 0x3a, 0x12, 0xca, 0xe2, 0x9a, 0xb2, 0x37, 0x1f, 0x67, 0x4f, 0x97, 0xbf, 0xc7, 0xef, 0x6b, 0x43, 0x3b, 0x13, 0xcb, 0xe3, 0x9b, 0xb3, 0x36, 0x1e, 0x66, 0x4e, 0x96, 0xbe, 0xc6, 0xee, 0xd1, 0xf9, 0x81, 0xa9, 0x71, 0x59, 0x21, 0x9, 0x8c, 0xa4, 0xdc, 0xf4, 0x2c, 0x4, 0x7c, 0x54, 0x2, 0x2a, 0x52, 0x7a, 0xa2, 0x8a, 0xf2, 0xda, 0x5f, 0x77, 0xf, 0x27, 0xff, 0xd7, 0xaf, 0x87, 0xb8, 0x90, 0xe8, 0xc0, 0x18, 0x30, 0x48, 0x60, 0xe5, 0xcd, 0xb5, 0x9d, 0x45, 0x6d, 0x15, 0x3d}, [256]uint8{0x0, 0x29, 0x52, 0x7b, 0xa4, 0x8d, 0xf6, 0xdf, 0x55, 0x7c, 0x7, 0x2e, 0xf1, 0xd8, 0xa3, 0x8a, 0xaa, 0x83, 0xf8, 0xd1, 0xe, 0x27, 0x5c, 0x75, 0xff, 0xd6, 0xad, 0x84, 0x5b, 0x72, 0x9, 0x20, 0x49, 0x60, 0x1b, 0x32, 0xed, 0xc4, 0xbf, 0x96, 0x1c, 0x35, 0x4e, 0x67, 0xb8, 0x91, 0xea, 0xc3, 0xe3, 0xca, 0xb1, 0x98, 0x47, 0x6e, 0x15, 0x3c, 0xb6, 0x9f, 0xe4, 0xcd, 0x12, 0x3b, 0x40, 0x69, 0x92, 0xbb, 0xc0, 0xe9, 0x36, 0x1f, 0x64, 0x4d, 0xc7, 0xee, 0x95, 0xbc, 0x63, 0x4a, 0x31, 0x18, 0x38, 0x11, 0x6a, 0x43, 0x9c, 0xb5, 0xce, 0xe7, 0x6d, 0x44, 0x3f, 0x16, 0xc9, 0xe0, 0x9b, 0xb2, 0xdb, 0xf2, 0x89, 0xa0, 0x7f, 0x56, 0x2d, 0x4, 0x8e, 0xa7, 0xdc, 0xf5, 0x2a, 0x3, 0x78, 0x51, 0x71, 0x58, 0x23, 0xa, 0xd5, 0xfc, 0x87, 0xae, 0x24, 0xd, 0x76, 0x5f, 0x80, 0xa9, 0xd2, 0xfb, 0x39, 0x10, 0x6b, 0x42, 0x9d, 0xb4, 0xcf, 0xe6, 0x6c, 0x45, 0x3e, 0x17, 0xc8, 0xe1, 0x9a, 0xb3, 0x93, 0xba, 0xc1, 0xe8, 0x37, 0x1e, 0x65, 0x4c, 0xc6, 0xef, 0x94, 0xbd, 0x62, 0x4b, 0x30, 0x19, 0x70, 0x59, 0x22, 0xb, 0xd4, 0xfd, 0x86, 0xaf, 0x25, 0xc, 0x77, 0x5e, 0x81, 0xa8, 0xd3, 0xfa, 0xda, 0xf3, 0x88, 0xa1, 0x7e, 0x57, 0x2c, 0x5, 0x8f, 0xa6, 0xdd, 0xf4, 0x2b, 0x2, 0x79, 0x50, 0xab, 0x82, 0xf9, 0xd0, 0xf, 0x26, 0x5d, 0x74, 0xfe, 0xd7, 0xac, 0x85, 0x5a, 0x73, 0x8, 0x21, 0x1, 0x28, 0x53, 0x7a, 0xa5, 0x8c, 0xf7, 0xde, 0x54, 0x7d, 0x6, 0x2f, 0xf0, 0xd9, 0xa2, 0x8b, 0xe2, 0xcb, 0xb0, 0x99, 0x46, 0x6f, 0x14, 0x3d, 0xb7, 0x9e, 0xe5, 0xcc, 0x13, 0x3a, 0x41, 0x68, 0x48, 0x61, 0x1a, 0x33, 0xec, 0xc5, 0xbe, 0x97, 0x1d, 0x34, 0x4f, 0x66, 0xb9, 0x90, 0xeb, 0xc2}, [256]uint8{0x0, 0x2a, 0x54, 0x7e, 0xa8, 0x82, 0xfc, 0xd6, 0x4d, 0x67, 0x19, 0x33, 0xe5, 0xcf, 0xb1, 0x9b, 0x9a, 0xb0, 0xce, 0xe4, 0x32, 0x18, 0x66, 0x4c, 0xd7, 0xfd, 0x83, 0xa9, 0x7f, 0x55, 0x2b, 0x1, 0x29, 0x3, 0x7d, 0x57, 0x81, 0xab, 0xd5, 0xff, 0x64, 0x4e, 0x30, 0x1a, 0xcc, 0xe6, 0x98, 0xb2, 0xb3, 0x99, 0xe7, 0xcd, 0x1b, 0x31, 0x4f, 0x65, 0xfe, 0xd4, 0xaa, 0x80, 0x56, 0x7c, 0x2, 0x28, 0x52, 0x78, 0x6, 0x2c, 0xfa, 0xd0, 0xae, 0x84, 0x1f, 0x35, 0x4b, 0x61, 0xb7, 0x9d, 0xe3, 0xc9, 0xc8, 0xe2, 0x9c, 0xb6, 0x60, 0x4a, 0x34, 0x1e, 0x85, 0xaf, 0xd1, 0xfb, 0x2d, 0x7, 0x79, 0x53, 0x7b, 0x51, 0x2f, 0x5, 0xd3, 0xf9, 0x87, 0xad, 0x36, 0x1c, 0x62, 0x48, 0x9e, 0xb4, 0xca, 0xe0, 0xe1, 0xcb, 0xb5, 0x9f, 0x49, 0x63, 0x1d, 0x37, 0xac, 0x86, 0xf8, 0xd2, 0x4, 0x2e, 0x50, 0x7a, 0xa4, 0x8e, 0xf0, 0xda, 0xc, 0x26, 0x58, 0x72, 0xe9, 0xc3, 0xbd, 0x97, 0x41, 0x6b, 0x15, 0x3f, 0x3e, 0x14, 0x6a, 0x40, 0x96, 0xbc, 0xc2, 0xe8, 0x73, 0x59, 0x27, 0xd, 0xdb, 0xf1, 0x8f, 0xa5, 0x8d, 0xa7, 0xd9, 0xf3, 0x25, 0xf, 0x71, 0x5b, 0xc0, 0xea, 0x94, 0xbe, 0x68, 0x42, 0x3c, 0x16, 0x17, 0x3d, 0x43, 0x69, 0xbf, 0x95, 0xeb, 0xc1, 0x5a, 0x70, 0xe, 0x24, 0xf2, 0xd8, 0xa6, 0x8c, 0xf6, 0xdc, 0xa2, 0x88, 0x5e, 0x74, 0xa, 0x20, 0xbb, 0x91, 0xef, 0xc5, 0x13, 0x39, 0x47, 0x6d, 0x6c, 0x46, 0x38, 0x12, 0xc4, 0xee, 0x90, 0xba, 0x21, 0xb, 0x75, 0x5f, 0x89, 0xa3, 0xdd, 0xf7, 0xdf, 0xf5, 0x8b, 0xa1, 0x77, 0x5d, 0x23, 0x9, 0x92, 0xb8, 0xc6, 0xec, 0x3a, 0x10, 0x6e, 0x44, 0x45, 0x6f, 0x11, 0x3b, 0xed, 0xc7, 0xb9, 0x93, 0x8, 0x22, 0x5c, 0x76, 0xa0, 0x8a, 0xf4, 0xde}, [256]uint8{0x0, 0x2b, 0x56, 0x7d, 0xac, 0x87, 0xfa, 0xd1, 0x45, 0x6e, 0x13, 0x38, 0xe9, 0xc2, 0xbf, 0x94, 0x8a, 0xa1, 0xdc, 0xf7, 0x26, 0xd, 0x70, 0x5b, 0xcf, 0xe4, 0x99, 0xb2, 0x63, 0x48, 0x35, 0x1e, 0x9, 0x22, 0x5f, 0x74, 0xa5, 0x8e, 0xf3, 0xd8, 0x4c, 0x67, 0x1a, 0x31, 0xe0, 0xcb, 0xb6, 0x9d, 0x83, 0xa8, 0xd5, 0xfe, 0x2f, 0x4, 0x79, 0x52, 0xc6, 0xed, 0x90, 0xbb, 0x6a, 0x41, 0x3c, 0x17, 0x12, 0x39, 0x44, 0x6f, 0xbe, 0x95, 0xe8, 0xc3, 0x57, 0x7c, 0x1, 0x2a, 0xfb, 0xd0, 0xad, 0x86, 0x98, 0xb3, 0xce, 0xe5, 0x34, 0x1f, 0x62, 0x49, 0xdd, 0xf6, 0x8b, 0xa0, 0x71, 0x5a, 0x27, 0xc, 0x1b, 0x30, 0x4d, 0x66, 0xb7, 0x9c, 0xe1, 0xca, 0x5e, 0x75, 0x8, 0x23, 0xf2, 0xd9, 0xa4, 0x8f, 0x91, 0xba, 0xc7, 0xec, 0x3d, 0x16, 0x6b, 0x40, 0xd4, 0xff, 0x82, 0xa9, 0x78, 0x53, 0x2e, 0x5, 0x24, 0xf, 0x72, 0x59, 0x88, 0xa3, 0xde, 0xf5, 0x61, 0x4a, 0x37, 0x1c, 0xcd, 0xe6, 0x9b, 0xb0, 0xae, 0x85, 0xf8, 0xd3, 0x2, 0x29, 0x54, 0x7f, 0xeb, 0xc0, 0xbd, 0x96, 0x47, 0x6c, 0x11, 0x3a, 0x2d, 0x6, 0x7b, 0x50, 0x81, 0xaa, 0xd7, 0xfc, 0x68, 0x43, 0x3e, 0x15, 0xc4, 0xef, 0x92, 0xb9, 0xa7, 0x8c, 0xf1, 0xda, 0xb, 0x20, 0x5d, 0x76, 0xe2, 0xc9, 0xb4, 0x9f, 0x4e, 0x65, 0x18, 0x33, 0x36, 0x1d, 0x60, 0x4b, 0x9a, 0xb1, 0xcc, 0xe7, 0x73, 0x58, 0x25, 0xe, 0xdf, 0xf4, 0x89, 0xa2, 0xbc, 0x97, 0xea, 0xc1, 0x10, 0x3b, 0x46, 0x6d, 0xf9, 0xd2, 0xaf, 0x84, 0x55, 0x7e, 0x3, 0x28, 0x3f, 0x14, 0x69, 0x42, 0x93, 0xb8, 0xc5, 0xee, 0x7a, 0x51, 0x2c, 0x7, 0xd6, 0xfd, 0x80, 0xab, 0xb5, 0x9e, 0xe3, 0xc8, 0x19, 0x32, 0x4f, 0x64, 0xf0, 0xdb, 0xa6, 0x8d, 0x5c, 0x77, 0xa, 0x21}, [256]uint8{0x0, 0x2c, 0x58, 0x74, 0xb0, 0x9c, 0xe8, 0xc4, 0x7d, 0x51, 0x25, 0x9, 0xcd, 0xe1, 0x95, 0xb9, 0xfa, 0xd6, 0xa2, 0x8e, 0x4a, 0x66, 0x12, 0x3e, 0x87, 0xab, 0xdf, 0xf3, 0x37, 0x1b, 0x6f, 0x43, 0xe9, 0xc5, 0xb1, 0x9d, 0x59, 0x75, 0x1, 0x2d, 0x94, 0xb8, 0xcc, 0xe0, 0x24, 0x8, 0x7c, 0x50, 0x13, 0x3f, 0x4b, 0x67, 0xa3, 0x8f, 0xfb, 0xd7, 0x6e, 0x42, 0x36, 0x1a, 0xde, 0xf2, 0x86, 0xaa, 0xcf, 0xe3, 0x97, 0xbb, 0x7f, 0x53, 0x27, 0xb, 0xb2, 0x9e, 0xea, 0xc6, 0x2, 0x2e, 0x5a, 0x76, 0x35, 0x19, 0x6d, 0x41, 0x85, 0xa9, 0xdd, 0xf1, 0x48, 0x64, 0x10, 0x3c, 0xf8, 0xd4, 0xa0, 0x8c, 0x26, 0xa, 0x7e, 0x52, 0x96, 0xba, 0xce, 0xe2, 0x5b, 0x77, 0x3, 0x2f, 0xeb, 0xc7, 0xb3, 0x9f, 0xdc, 0xf0, 0x84, 0xa8, 0x6c, 0x40, 0x34, 0x18, 0xa1, 0x8d, 0xf9, 0xd5, 0x11, 0x3d, 0x49, 0x65, 0x83, 0xaf, 0xdb, 0xf7, 0x33, 0x1f, 0x6b, 0x47, 0xfe, 0xd2, 0xa6, 0x8a, 0x4e, 0x62, 0x16, 0x3a, 0x79, 0x55, 0x21, 0xd, 0xc9, 0xe5, 0x91, 0xbd, 0x4, 0x28, 0x5c, 0x70, 0xb4, 0x98, 0xec, 0xc0, 0x6a, 0x46, 0x32, 0x1e, 0xda, 0xf6, 0x82, 0xae, 0x17, 0x3b, 0x4f, 0x63, 0xa7, 0x8b, 0xff, 0xd3, 0x90, 0xbc, 0xc8, 0xe4, 0x20, 0xc, 0x78, 0x54, 0xed, 0xc1, 0xb5, 0x99, 0x5d, 0x71, 0x5, 0x29, 0x4c, 0x60, 0x14, 0x38, 0xfc, 0xd0, 0xa4, 0x88, 0x31, 0x1d, 0x69, 0x45, 0x81, 0xad, 0xd9, 0xf5, 0xb6, 0x9a, 0xee, 0xc2, 0x6, 0x2a, 0x5e, 0x72, 0xcb, 0xe7, 0x93, 0xbf, 0x7b, 0x57, 0x23, 0xf, 0xa5, 0x89, 0xfd, 0xd1, 0x15, 0x39, 0x4d, 0x61, 0xd8, 0xf4, 0x80, 0xac, 0x68, 0x44, 0x30, 0x1c, 0x5f, 0x73, 0x7, 0x2b, 0xef, 0xc3, 0xb7, 0x9b, 0x22, 0xe, 0x7a, 0x56, 0x92, 0xbe, 0xca, 0xe6}, [256]uint8{0x0, 0x2d, 0x5a, 0x77, 0xb4, 0x99, 0xee, 0xc3, 0x75, 0x58, 0x2f, 0x2, 0xc1, 0xec, 0x9b, 0xb6, 0xea, 0xc7, 0xb0, 0x9d, 0x5e, 0x73, 0x4, 0x29, 0x9f, 0xb2, 0xc5, 0xe8, 0x2b, 0x6, 0x71, 0x5c, 0xc9, 0xe4, 0x93, 0xbe, 0x7d, 0x50, 0x27, 0xa, 0xbc, 0x91, 0xe6, 0xcb, 0x8, 0x25, 0x52, 0x7f, 0x23, 0xe, 0x79, 0x54, 0x97, 0xba, 0xcd, 0xe0, 0x56, 0x7b, 0xc, 0x21, 0xe2, 0xcf, 0xb8, 0x95, 0x8f, 0xa2, 0xd5, 0xf8, 0x3b, 0x16, 0x61, 0x4c, 0xfa, 0xd7, 0xa0, 0x8d, 0x4e, 0x63, 0x14, 0x39, 0x65, 0x48, 0x3f, 0x12, 0xd1, 0xfc, 0x8b, 0xa6, 0x10, 0x3d, 0x4a, 0x67, 0xa4, 0x89, 0xfe, 0xd3, 0x46, 0x6b, 0x1c, 0x31, 0xf2, 0xdf, 0xa8, 0x85, 0x33, 0x1e, 0x69, 0x44, 0x87, 0xaa, 0xdd, 0xf0, 0xac, 0x81, 0xf6, 0xdb, 0x18, 0x35, 0x42, 0x6f, 0xd9, 0xf4, 0x83, 0xae, 0x6d, 0x40, 0x37, 0x1a, 0x3, 0x2e, 0x59, 0x74, 0xb7, 0x9a, 0xed, 0xc0, 0x76, 0x5b, 0x2c, 0x1, 0xc2, 0xef, 0x98, 0xb5, 0xe9, 0xc4, 0xb3, 0x9e, 0x5d, 0x70, 0x7, 0x2a, 0x9c, 0xb1, 0xc6, 0xeb, 0x28, 0x5, 0x72, 0x5f, 0xca, 0xe7, 0x90, 0xbd, 0x7e, 0x53, 0x24, 0x9, 0xbf, 0x92, 0xe5, 0xc8, 0xb, 0x26, 0x51, 0x7c, 0x20, 0xd, 0x7a, 0x57, 0x94, 0xb9, 0xce, 0xe3, 0x55, 0x78, 0xf, 0x22, 0xe1, 0xcc, 0xbb, 0x96, 0x8c, 0xa1, 0xd6, 0xfb, 0x38, 0x15, 0x62, 0x4f, 0xf9, 0xd4, 0xa3, 0x8e, 0x4d, 0x60, 0x17, 0x3a, 0x66, 0x4b, 0x3c, 0x11, 0xd2, 0xff, 0x88, 0xa5, 0x13, 0x3e, 0x49, 0x64, 0xa7, 0x8a, 0xfd, 0xd0, 0x45, 0x68, 0x1f, 0x32, 0xf1, 0xdc, 0xab, 0x86, 0x30, 0x1d, 0x6a, 0x47, 0x84, 0xa9, 0xde, 0xf3, 0xaf, 0x82, 0xf5, 0xd8, 0x1b, 0x36, 0x41, 0x6c, 0xda, 0xf7, 0x80, 0xad, 0x6e, 0x43, 0x34, 0x19}, [256]uint8{0x0, 0x2e, 0x5c, 0x72, 0xb8, 0x96, 0xe4, 0xca, 0x6d, 0x43, 0x31, 0x1f, 0xd5, 0xfb, 0x89, 0xa7, 0xda, 0xf4, 0x86, 0xa8, 0x62, 0x4c, 0x3e, 0x10, 0xb7, 0x99, 0xeb, 0xc5, 0xf, 0x21, 0x53, 0x7d, 0xa9, 0x87, 0xf5, 0xdb, 0x11, 0x3f, 0x4d, 0x63, 0xc4, 0xea, 0x98, 0xb6, 0x7c, 0x52, 0x20, 0xe, 0x73, 0x5d, 0x2f, 0x1, 0xcb, 0xe5, 0x97, 0xb9, 0x1e, 0x30, 0x42, 0x6c, 0xa6, 0x88, 0xfa, 0xd4, 0x4f, 0x61, 0x13, 0x3d, 0xf7, 0xd9, 0xab, 0x85, 0x22, 0xc, 0x7e, 0x50, 0x9a, 0xb4, 0xc6, 0xe8, 0x95, 0xbb, 0xc9, 0xe7, 0x2d, 0x3, 0x71, 0x5f, 0xf8, 0xd6, 0xa4, 0x8a, 0x40, 0x6e, 0x1c, 0x32, 0xe6, 0xc8, 0xba, 0x94, 0x5e, 0x70, 0x2, 0x2c, 0x8b, 0xa5, 0xd7, 0xf9, 0x33, 0x1d, 0x6f, 0x41, 0x3c, 0x12, 0x60, 0x4e, 0x84, 0xaa, 0xd8, 0xf6, 0x51, 0x7f, 0xd, 0x23, 0xe9, 0xc7, 0xb5, 0x9b, 0x9e, 0xb0, 0xc2, 0xec, 0x26, 0x8, 0x7a, 0x54, 0xf3, 0xdd, 0xaf, 0x81, 0x4b, 0x65, 0x17, 0x39, 0x44, 0x6a, 0x18, 0x36, 0xfc, 0xd2, 0xa0, 0x8e, 0x29, 0x7, 0x75, 0x5b, 0x91, 0xbf, 0xcd, 0xe3, 0x37, 0x19, 0x6b, 0x45, 0x8f, 0xa1, 0xd3, 0xfd, 0x5a, 0x74, 0x6, 0x28, 0xe2, 0xcc, 0xbe, 0x90, 0xed, 0xc3, 0xb1, 0x9f, 0x55, 0x7b, 0x9, 0x27, 0x80, 0xae, 0xdc, 0xf2, 0x38, 0x16, 0x64, 0x4a, 0xd1, 0xff, 0x8d, 0xa3, 0x69, 0x47, 0x35, 0x1b, 0xbc, 0x92, 0xe0, 0xce, 0x4, 0x2a, 0x58, 0x76, 0xb, 0x25, 0x57, 0x79, 0xb3, 0x9d, 0xef, 0xc1, 0x66, 0x48, 0x3a, 0x14, 0xde, 0xf0, 0x82, 0xac, 0x78, 0x56, 0x24, 0xa, 0xc0, 0xee, 0x9c, 0xb2, 0x15, 0x3b, 0x49, 0x67, 0xad, 0x83, 0xf1, 0xdf, 0xa2, 0x8c, 0xfe, 0xd0, 0x1a, 0x34, 0x46, 0x68, 0xcf, 0xe1, 0x93, 0xbd, 0x77, 0x59, 0x2b, 0x5}, [256]uint8{0x0, 0x2f, 0x5e, 0x71, 0xbc, 0x93, 0xe2, 0xcd, 0x65, 0x4a, 0x3b, 0x14, 0xd9, 0xf6, 0x87, 0xa8, 0xca, 0xe5, 0x94, 0xbb, 0x76, 0x59, 0x28, 0x7, 0xaf, 0x80, 0xf1, 0xde, 0x13, 0x3c, 0x4d, 0x62, 0x89, 0xa6, 0xd7, 0xf8, 0x35, 0x1a, 0x6b, 0x44, 0xec, 0xc3, 0xb2, 0x9d, 0x50, 0x7f, 0xe, 0x21, 0x43, 0x6c, 0x1d, 0x32, 0xff, 0xd0, 0xa1, 0x8e, 0x26, 0x9, 0x78, 0x57, 0x9a, 0xb5, 0xc4, 0xeb, 0xf, 0x20, 0x51, 0x7e, 0xb3, 0x9c, 0xed, 0xc2, 0x6a, 0x45, 0x34, 0x1b, 0xd6, 0xf9, 0x88, 0xa7, 0xc5, 0xea, 0x9b, 0xb4, 0x79, 0x56, 0x27, 0x8, 0xa0, 0x8f, 0xfe, 0xd1, 0x1c, 0x33, 0x42, 0x6d, 0x86, 0xa9, 0xd8, 0xf7, 0x3a, 0x15, 0x64, 0x4b, 0xe3, 0xcc, 0xbd, 0x92, 0x5f, 0x70, 0x1, 0x2e, 0x4c, 0x63, 0x12, 0x3d, 0xf0, 0xdf, 0xae, 0x81, 0x29, 0x6, 0x77, 0x58, 0x95, 0xba, 0xcb, 0xe4, 0x1e, 0x31, 0x40, 0x6f, 0xa2, 0x8d, 0xfc, 0xd3, 0x7b, 0x54, 0x25, 0xa, 0xc7, 0xe8, 0x99, 0xb6, 0xd4, 0xfb, 0x8a, 0xa5, 0x68, 0x47, 0x36, 0x19, 0xb1, 0x9e, 0xef, 0xc0, 0xd, 0x22, 0x53, 0x7c, 0x97, 0xb8, 0xc9, 0xe6, 0x2b, 0x4, 0x75, 0x5a, 0xf2, 0xdd, 0xac, 0x83, 0x4e, 0x61, 0x10, 0x3f, 0x5d, 0x72, 0x3, 0x2c, 0xe1, 0xce, 0xbf, 0x90, 0x38, 0x17, 0x66, 0x49, 0x84, 0xab, 0xda, 0xf5, 0x11, 0x3e, 0x4f, 0x60, 0xad, 0x82, 0xf3, 0xdc, 0x74, 0x5b, 0x2a, 0x5, 0xc8, 0xe7, 0x96, 0xb9, 0xdb, 0xf4, 0x85, 0xaa, 0x67, 0x48, 0x39, 0x16, 0xbe, 0x91, 0xe0, 0xcf, 0x2, 0x2d, 0x5c, 0x73, 0x98, 0xb7, 0xc6, 0xe9, 0x24, 0xb, 0x7a, 0x55, 0xfd, 0xd2, 0xa3, 0x8c, 0x41, 0x6e, 0x1f, 0x30, 0x52, 0x7d, 0xc, 0x23, 0xee, 0xc1, 0xb0, 0x9f, 0x37, 0x18, 0x69, 0x46, 0x8b, 0xa4, 0xd5, 0xfa}, [256]uint8{0x0, 0x30, 0x60, 0x50, 0xc0, 0xf0, 0xa0, 0x90, 0x9d, 0xad, 0xfd, 0xcd, 0x5d, 0x6d, 0x3d, 0xd, 0x27, 0x17, 0x47, 0x77, 0xe7, 0xd7, 0x87, 0xb7, 0xba, 0x8a, 0xda, 0xea, 0x7a, 0x4a, 0x1a, 0x2a, 0x4e, 0x7e, 0x2e, 0x1e, 0x8e, 0xbe, 0xee, 0xde, 0xd3, 0xe3, 0xb3, 0x83, 0x13, 0x23, 0x73, 0x43, 0x69, 0x59, 0x9, 0x39, 0xa9, 0x99, 0xc9, 0xf9, 0xf4, 0xc4, 0x94, 0xa4, 0x34, 0x4, 0x54, 0x64, 0x9c, 0xac, 0xfc, 0xcc, 0x5c, 0x6c, 0x3c, 0xc, 0x1, 0x31, 0x61, 0x51, 0xc1, 0xf1, 0xa1, 0x91, 0xbb, 0x8b, 0xdb, 0xeb, 0x7b, 0x4b, 0x1b, 0x2b, 0x26, 0x16, 0x46, 0x76, 0xe6, 0xd6, 0x86, 0xb6, 0xd2, 0xe2, 0xb2, 0x82, 0x12, 0x22, 0x72, 0x42, 0x4f, 0x7f, 0x2f, 0x1f, 0x8f, 0xbf, 0xef, 0xdf, 0xf5, 0xc5, 0x95, 0xa5, 0x35, 0x5, 0x55, 0x65, 0x68, 0x58, 0x8, 0x38, 0xa8, 0x98, 0xc8, 0xf8, 0x25, 0x15, 0x45, 0x75, 0xe5, 0xd5, 0x85, 0xb5, 0xb8, 0x88, 0xd8, 0xe8, 0x78, 0x48, 0x18, 0x28, 0x2, 0x32, 0x62, 0x52, 0xc2, 0xf2, 0xa2, 0x92, 0x9f, 0xaf, 0xff, 0xcf, 0x5f, 0x6f, 0x3f, 0xf, 0x6b, 0x5b, 0xb, 0x3b, 0xab, 0x9b, 0xcb, 0xfb, 0xf6, 0xc6, 0x96, 0xa6, 0x36, 0x6, 0x56, 0x66, 0x4c, 0x7c, 0x2c, 0x1c, 0x8c, 0xbc, 0xec, 0xdc, 0xd1, 0xe1, 0xb1, 0x81, 0x11, 0x21, 0x71, 0x41, 0xb9, 0x89, 0xd9, 0xe9, 0x79, 0x49, 0x19, 0x29, 0x24, 0x14, 0x44, 0x74, 0xe4, 0xd4, 0x84, 0xb4, 0x9e, 0xae, 0xfe, 0xce, 0x5e, 0x6e, 0x3e, 0xe, 0x3, 0x33, 0x63, 0x53, 0xc3, 0xf3, 0xa3, 0x93, 0xf7, 0xc7, 0x97, 0xa7, 0x37, 0x7, 0x57, 0x67, 0x6a, 0x5a, 0xa, 0x3a, 0xaa, 0x9a, 0xca, 0xfa, 0xd0, 0xe0, 0xb0, 0x80, 0x10, 0x20, 0x70, 0x40, 0x4d, 0x7d, 0x2d, 0x1d, 0x8d, 0xbd, 0xed, 0xdd}, [256]uint8{0x0, 0x31, 0x62, 0x53, 0xc4, 0xf5, 0xa6, 0x97, 0x95, 0xa4, 0xf7, 0xc6, 0x51, 0x60, 0x33, 0x2, 0x37, 0x6, 0x55, 0x64, 0xf3, 0xc2, 0x91, 0xa0, 0xa2, 0x93, 0xc0, 0xf1, 0x66, 0x57, 0x4, 0x35, 0x6e, 0x5f, 0xc, 0x3d, 0xaa, 0x9b, 0xc8, 0xf9, 0xfb, 0xca, 0x99, 0xa8, 0x3f, 0xe, 0x5d, 0x6c, 0x59, 0x68, 0x3b, 0xa, 0x9d, 0xac, 0xff, 0xce, 0xcc, 0xfd, 0xae, 0x9f, 0x8, 0x39, 0x6a, 0x5b, 0xdc, 0xed, 0xbe, 0x8f, 0x18, 0x29, 0x7a, 0x4b, 0x49, 0x78, 0x2b, 0x1a, 0x8d, 0xbc, 0xef, 0xde, 0xeb, 0xda, 0x89, 0xb8, 0x2f, 0x1e, 0x4d, 0x7c, 0x7e, 0x4f, 0x1c, 0x2d, 0xba, 0x8b, 0xd8, 0xe9, 0xb2, 0x83, 0xd0, 0xe1, 0x76, 0x47, 0x14, 0x25, 0x27, 0x16, 0x45, 0x74, 0xe3, 0xd2, 0x81, 0xb0, 0x85, 0xb4, 0xe7, 0xd6, 0x41, 0x70, 0x23, 0x12, 0x10, 0x21, 0x72, 0x43, 0xd4, 0xe5, 0xb6, 0x87, 0xa5, 0x94, 0xc7, 0xf6, 0x61, 0x50, 0x3, 0x32, 0x30, 0x1, 0x52, 0x63, 0xf4, 0xc5, 0x96, 0xa7, 0x92, 0xa3, 0xf0, 0xc1, 0x56, 0x67, 0x34, 0x5, 0x7, 0x36, 0x65, 0x54, 0xc3, 0xf2, 0xa1, 0x90, 0xcb, 0xfa, 0xa9, 0x98, 0xf, 0x3e, 0x6d, 0x5c, 0x5e, 0x6f, 0x3c, 0xd, 0x9a, 0xab, 0xf8, 0xc9, 0xfc, 0xcd, 0x9e, 0xaf, 0x38, 0x9, 0x5a, 0x6b, 0x69, 0x58, 0xb, 0x3a, 0xad, 0x9c, 0xcf, 0xfe, 0x79, 0x48, 0x1b, 0x2a, 0xbd, 0x8c, 0xdf, 0xee, 0xec, 0xdd, 0x8e, 0xbf, 0x28, 0x19, 0x4a, 0x7b, 0x4e, 0x7f, 0x2c, 0x1d, 0x8a, 0xbb, 0xe8, 0xd9, 0xdb, 0xea, 0xb9, 0x88, 0x1f, 0x2e, 0x7d, 0x4c, 0x17, 0x26, 0x75, 0x44, 0xd3, 0xe2, 0xb1, 0x80, 0x82, 0xb3, 0xe0, 0xd1, 0x46, 0x77, 0x24, 0x15, 0x20, 0x11, 0x42, 0x73, 0xe4, 0xd5, 0x86, 0xb7, 0xb5, 0x84, 0xd7, 0xe6, 0x71, 0x40, 0x13, 0x22}, [256]uint8{0x0, 0x32, 0x64, 0x56, 0xc8, 0xfa, 0xac, 0x9e, 0x8d, 0xbf, 0xe9, 0xdb, 0x45, 0x77, 0x21, 0x13, 0x7, 0x35, 0x63, 0x51, 0xcf, 0xfd, 0xab, 0x99, 0x8a, 0xb8, 0xee, 0xdc, 0x42, 0x70, 0x26, 0x14, 0xe, 0x3c, 0x6a, 0x58, 0xc6, 0xf4, 0xa2, 0x90, 0x83, 0xb1, 0xe7, 0xd5, 0x4b, 0x79, 0x2f, 0x1d, 0x9, 0x3b, 0x6d, 0x5f, 0xc1, 0xf3, 0xa5, 0x97, 0x84, 0xb6, 0xe0, 0xd2, 0x4c, 0x7e, 0x28, 0x1a, 0x1c, 0x2e, 0x78, 0x4a, 0xd4, 0xe6, 0xb0, 0x82, 0x91, 0xa3, 0xf5, 0xc7, 0x59, 0x6b, 0x3d, 0xf, 0x1b, 0x29, 0x7f, 0x4d, 0xd3, 0xe1, 0xb7, 0x85, 0x96, 0xa4, 0xf2, 0xc0, 0x5e, 0x6c, 0x3a, 0x8, 0x12, 0x20, 0x76, 0x44, 0xda, 0xe8, 0xbe, 0x8c, 0x9f, 0xad, 0xfb, 0xc9, 0x57, 0x65, 0x33, 0x1, 0x15, 0x27, 0x71, 0x43, 0xdd, 0xef, 0xb9, 0x8b, 0x98, 0xaa, 0xfc, 0xce, 0x50, 0x62, 0x34, 0x6, 0x38, 0xa, 0x5c, 0x6e, 0xf0, 0xc2, 0x94, 0xa6, 0xb5, 0x87, 0xd1, 0xe3, 0x7d, 0x4f, 0x19, 0x2b, 0x3f, 0xd, 0x5b, 0x69, 0xf7, 0xc5, 0x93, 0xa1, 0xb2, 0x80, 0xd6, 0xe4, 0x7a, 0x48, 0x1e, 0x2c, 0x36, 0x4, 0x52, 0x60, 0xfe, 0xcc, 0x9a, 0xa8, 0xbb, 0x89, 0xdf, 0xed, 0x73, 0x41, 0x17, 0x25, 0x31, 0x3, 0x55, 0x67, 0xf9, 0xcb, 0x9d, 0xaf, 0xbc, 0x8e, 0xd8, 0xea, 0x74, 0x46, 0x10, 0x22, 0x24, 0x16, 0x40, 0x72, 0xec, 0xde, 0x88, 0xba, 0xa9, 0x9b, 0xcd, 0xff, 0x61, 0x53, 0x5, 0x37, 0x23, 0x11, 0x47, 0x75, 0xeb, 0xd9, 0x8f, 0xbd, 0xae, 0x9c, 0xca, 0xf8, 0x66, 0x54, 0x2, 0x30, 0x2a, 0x18, 0x4e, 0x7c, 0xe2, 0xd0, 0x86, 0xb4, 0xa7, 0x95, 0xc3, 0xf1, 0x6f, 0x5d, 0xb, 0x39, 0x2d, 0x1f, 0x49, 0x7b, 0xe5, 0xd7, 0x81, 0xb3, 0xa0, 0x92, 0xc4, 0xf6, 0x68, 0x5a, 0xc, 0x3e}, [256]uint8{0x0, 0x33, 0x66, 0x55, 0xcc, 0xff, 0xaa, 0x99, 0x85, 0xb6, 0xe3, 0xd0, 0x49, 0x7a, 0x2f, 0x1c, 0x17, 0x24, 0x71, 0x42, 0xdb, 0xe8, 0xbd, 0x8e, 0x92, 0xa1, 0xf4, 0xc7, 0x5e, 0x6d, 0x38, 0xb, 0x2e, 0x1d, 0x48, 0x7b, 0xe2, 0xd1, 0x84, 0xb7, 0xab, 0x98, 0xcd, 0xfe, 0x67, 0x54, 0x1, 0x32, 0x39, 0xa, 0x5f, 0x6c, 0xf5, 0xc6, 0x93, 0xa0, 0xbc, 0x8f, 0xda, 0xe9, 0x70, 0x43, 0x16, 0x25, 0x5c, 0x6f, 0x3a, 0x9, 0x90, 0xa3, 0xf6, 0xc5, 0xd9, 0xea, 0xbf, 0x8c, 0x15, 0x26, 0x73, 0x40, 0x4b, 0x78, 0x2d, 0x1e, 0x87, 0xb4, 0xe1, 0xd2, 0xce, 0xfd, 0xa8, 0x9b, 0x2, 0x31, 0x64, 0x57, 0x72, 0x41, 0x14, 0x27, 0xbe, 0x8d, 0xd8, 0xeb, 0xf7, 0xc4, 0x91, 0xa2, 0x3b, 0x8, 0x5d, 0x6e, 0x65, 0x56, 0x3, 0x30, 0xa9, 0x9a, 0xcf, 0xfc, 0xe0, 0xd3, 0x86, 0xb5, 0x2c, 0x1f, 0x4a, 0x79, 0xb8, 0x8b, 0xde, 0xed, 0x74, 0x47, 0x12, 0x21, 0x3d, 0xe, 0x5b, 0x68, 0xf1, 0xc2, 0x97, 0xa4, 0xaf, 0x9c, 0xc9, 0xfa, 0x63, 0x50, 0x5, 0x36, 0x2a, 0x19, 0x4c, 0x7f, 0xe6, 0xd5, 0x80, 0xb3, 0x96, 0xa5, 0xf0, 0xc3, 0x5a, 0x69, 0x3c, 0xf, 0x13, 0x20, 0x75, 0x46, 0xdf, 0xec, 0xb9, 0x8a, 0x81, 0xb2, 0xe7, 0xd4, 0x4d, 0x7e, 0x2b, 0x18, 0x4, 0x37, 0x62, 0x51, 0xc8, 0xfb, 0xae, 0x9d, 0xe4, 0xd7, 0x82, 0xb1, 0x28, 0x1b, 0x4e, 0x7d, 0x61, 0x52, 0x7, 0x34, 0xad, 0x9e, 0xcb, 0xf8, 0xf3, 0xc0, 0x95, 0xa6, 0x3f, 0xc, 0x59, 0x6a, 0x76, 0x45, 0x10, 0x23, 0xba, 0x89, 0xdc, 0xef, 0xca, 0xf9, 0xac, 0x9f, 0x6, 0x35, 0x60, 0x53, 0x4f, 0x7c, 0x29, 0x1a, 0x83, 0xb0, 0xe5, 0xd6, 0xdd, 0xee, 0xbb, 0x88, 0x11, 0x22, 0x77, 0x44, 0x58, 0x6b, 0x3e, 0xd, 0x94, 0xa7, 0xf2, 0xc1}, [256]uint8{0x0, 0x34, 0x68, 0x5c, 0xd0, 0xe4, 0xb8, 0x8c, 0xbd, 0x89, 0xd5, 0xe1, 0x6d, 0x59, 0x5, 0x31, 0x67, 0x53, 0xf, 0x3b, 0xb7, 0x83, 0xdf, 0xeb, 0xda, 0xee, 0xb2, 0x86, 0xa, 0x3e, 0x62, 0x56, 0xce, 0xfa, 0xa6, 0x92, 0x1e, 0x2a, 0x76, 0x42, 0x73, 0x47, 0x1b, 0x2f, 0xa3, 0x97, 0xcb, 0xff, 0xa9, 0x9d, 0xc1, 0xf5, 0x79, 0x4d, 0x11, 0x25, 0x14, 0x20, 0x7c, 0x48, 0xc4, 0xf0, 0xac, 0x98, 0x81, 0xb5, 0xe9, 0xdd, 0x51, 0x65, 0x39, 0xd, 0x3c, 0x8, 0x54, 0x60, 0xec, 0xd8, 0x84, 0xb0, 0xe6, 0xd2, 0x8e, 0xba, 0x36, 0x2, 0x5e, 0x6a, 0x5b, 0x6f, 0x33, 0x7, 0x8b, 0xbf, 0xe3, 0xd7, 0x4f, 0x7b, 0x27, 0x13, 0x9f, 0xab, 0xf7, 0xc3, 0xf2, 0xc6, 0x9a, 0xae, 0x22, 0x16, 0x4a, 0x7e, 0x28, 0x1c, 0x40, 0x74, 0xf8, 0xcc, 0x90, 0xa4, 0x95, 0xa1, 0xfd, 0xc9, 0x45, 0x71, 0x2d, 0x19, 0x1f, 0x2b, 0x77, 0x43, 0xcf, 0xfb, 0xa7, 0x93, 0xa2, 0x96, 0xca, 0xfe, 0x72, 0x46, 0x1a, 0x2e, 0x78, 0x4c, 0x10, 0x24, 0xa8, 0x9c, 0xc0, 0xf4, 0xc5, 0xf1, 0xad, 0x99, 0x15, 0x21, 0x7d, 0x49, 0xd1, 0xe5, 0xb9, 0x8d, 0x1, 0x35, 0x69, 0x5d, 0x6c, 0x58, 0x4, 0x30, 0xbc, 0x88, 0xd4, 0xe0, 0xb6, 0x82, 0xde, 0xea, 0x66, 0x52, 0xe, 0x3a, 0xb, 0x3f, 0x63, 0x57, 0xdb, 0xef, 0xb3, 0x87, 0x9e, 0xaa, 0xf6, 0xc2, 0x4e, 0x7a, 0x26, 0x12, 0x23, 0x17, 0x4b, 0x7f, 0xf3, 0xc7, 0x9b, 0xaf, 0xf9, 0xcd, 0x91, 0xa5, 0x29, 0x1d, 0x41, 0x75, 0x44, 0x70, 0x2c, 0x18, 0x94, 0xa0, 0xfc, 0xc8, 0x50, 0x64, 0x38, 0xc, 0x80, 0xb4, 0xe8, 0xdc, 0xed, 0xd9, 0x85, 0xb1, 0x3d, 0x9, 0x55, 0x61, 0x37, 0x3, 0x5f, 0x6b, 0xe7, 0xd3, 0x8f, 0xbb, 0x8a, 0xbe, 0xe2, 0xd6, 0x5a, 0x6e, 0x32, 0x6}, [256]uint8{0x0, 0x35, 0x6a, 0x5f, 0xd4, 0xe1, 0xbe, 0x8b, 0xb5, 0x80, 0xdf, 0xea, 0x61, 0x54, 0xb, 0x3e, 0x77, 0x42, 0x1d, 0x28, 0xa3, 0x96, 0xc9, 0xfc, 0xc2, 0xf7, 0xa8, 0x9d, 0x16, 0x23, 0x7c, 0x49, 0xee, 0xdb, 0x84, 0xb1, 0x3a, 0xf, 0x50, 0x65, 0x5b, 0x6e, 0x31, 0x4, 0x8f, 0xba, 0xe5, 0xd0, 0x99, 0xac, 0xf3, 0xc6, 0x4d, 0x78, 0x27, 0x12, 0x2c, 0x19, 0x46, 0x73, 0xf8, 0xcd, 0x92, 0xa7, 0xc1, 0xf4, 0xab, 0x9e, 0x15, 0x20, 0x7f, 0x4a, 0x74, 0x41, 0x1e, 0x2b, 0xa0, 0x95, 0xca, 0xff, 0xb6, 0x83, 0xdc, 0xe9, 0x62, 0x57, 0x8, 0x3d, 0x3, 0x36, 0x69, 0x5c, 0xd7, 0xe2, 0xbd, 0x88, 0x2f, 0x1a, 0x45, 0x70, 0xfb, 0xce, 0x91, 0xa4, 0x9a, 0xaf, 0xf0, 0xc5, 0x4e, 0x7b, 0x24, 0x11, 0x58, 0x6d, 0x32, 0x7, 0x8c, 0xb9, 0xe6, 0xd3, 0xed, 0xd8, 0x87, 0xb2, 0x39, 0xc, 0x53, 0x66, 0x9f, 0xaa, 0xf5, 0xc0, 0x4b, 0x7e, 0x21, 0x14, 0x2a, 0x1f, 0x40, 0x75, 0xfe, 0xcb, 0x94, 0xa1, 0xe8, 0xdd, 0x82, 0xb7, 0x3c, 0x9, 0x56, 0x63, 0x5d, 0x68, 0x37, 0x2, 0x89, 0xbc, 0xe3, 0xd6, 0x71, 0x44, 0x1b, 0x2e, 0xa5, 0x90, 0xcf, 0xfa, 0xc4, 0xf1, 0xae, 0x9b, 0x10, 0x25, 0x7a, 0x4f, 0x6, 0x33, 0x6c, 0x59, 0xd2, 0xe7, 0xb8, 0x8d, 0xb3, 0x86, 0xd9, 0xec, 0x67, 0x52, 0xd, 0x38, 0x5e, 0x6b, 0x34, 0x1, 0x8a, 0xbf, 0xe0, 0xd5, 0xeb, 0xde, 0x81, 0xb4, 0x3f, 0xa, 0x55, 0x60, 0x29, 0x1c, 0x43, 0x76, 0xfd, 0xc8, 0x97, 0xa2, 0x9c, 0xa9, 0xf6, 0xc3, 0x48, 0x7d, 0x22, 0x17, 0xb0, 0x85, 0xda, 0xef, 0x64, 0x51, 0xe, 0x3b, 0x5, 0x30, 0x6f, 0x5a, 0xd1, 0xe4, 0xbb, 0x8e, 0xc7, 0xf2, 0xad, 0x98, 0x13, 0x26, 0x79, 0x4c, 0x72, 0x47, 0x18, 0x2d, 0xa6, 0x93, 0xcc, 0xf9}, [256]uint8{0x0, 0x36, 0x6c, 0x5a, 0xd8, 0xee, 0xb4, 0x82, 0xad, 0x9b, 0xc1, 0xf7, 0x75, 0x43, 0x19, 0x2f, 0x47, 0x71, 0x2b, 0x1d, 0x9f, 0xa9, 0xf3, 0xc5, 0xea, 0xdc, 0x86, 0xb0, 0x32, 0x4, 0x5e, 0x68, 0x8e, 0xb8, 0xe2, 0xd4, 0x56, 0x60, 0x3a, 0xc, 0x23, 0x15, 0x4f, 0x79, 0xfb, 0xcd, 0x97, 0xa1, 0xc9, 0xff, 0xa5, 0x93, 0x11, 0x27, 0x7d, 0x4b, 0x64, 0x52, 0x8, 0x3e, 0xbc, 0x8a, 0xd0, 0xe6, 0x1, 0x37, 0x6d, 0x5b, 0xd9, 0xef, 0xb5, 0x83, 0xac, 0x9a, 0xc0, 0xf6, 0x74, 0x42, 0x18, 0x2e, 0x46, 0x70, 0x2a, 0x1c, 0x9e, 0xa8, 0xf2, 0xc4, 0xeb, 0xdd, 0x87, 0xb1, 0x33, 0x5, 0x5f, 0x69, 0x8f, 0xb9, 0xe3, 0xd5, 0x57, 0x61, 0x3b, 0xd, 0x22, 0x14, 0x4e, 0x78, 0xfa, 0xcc, 0x96, 0xa0, 0xc8, 0xfe, 0xa4, 0x92, 0x10, 0x26, 0x7c, 0x4a, 0x65, 0x53, 0x9, 0x3f, 0xbd, 0x8b, 0xd1, 0xe7, 0x2, 0x34, 0x6e, 0x58, 0xda, 0xec, 0xb6, 0x80, 0xaf, 0x99, 0xc3, 0xf5, 0x77, 0x41, 0x1b, 0x2d, 0x45, 0x73, 0x29, 0x1f, 0x9d, 0xab, 0xf1, 0xc7, 0xe8, 0xde, 0x84, 0xb2, 0x30, 0x6, 0x5c, 0x6a, 0x8c, 0xba, 0xe0, 0xd6, 0x54, 0x62, 0x38, 0xe, 0x21, 0x17, 0x4d, 0x7b, 0xf9, 0xcf, 0x95, 0xa3, 0xcb, 0xfd, 0xa7, 0x91, 0x13, 0x25, 0x7f, 0x49, 0x66, 0x50, 0xa, 0x3c, 0xbe, 0x88, 0xd2, 0xe4, 0x3, 0x35, 0x6f, 0x59, 0xdb, 0xed, 0xb7, 0x81, 0xae, 0x98, 0xc2, 0xf4, 0x76, 0x40, 0x1a, 0x2c, 0x44, 0x72, 0x28, 0x1e, 0x9c, 0xaa, 0xf0, 0xc6, 0xe9, 0xdf, 0x85, 0xb3, 0x31, 0x7, 0x5d, 0x6b, 0x8d, 0xbb, 0xe1, 0xd7, 0x55, 0x63, 0x39, 0xf, 0x20, 0x16, 0x4c, 0x7a, 0xf8, 0xce, 0x94, 0xa2, 0xca, 0xfc, 0xa6, 0x90, 0x12, 0x24, 0x7e, 0x48, 0x67, 0x51, 0xb, 0x3d, 0xbf, 0x89, 0xd3, 0xe5}, [256]uint8{0x0, 0x37, 0x6e, 0x59, 0xdc, 0xeb, 0xb2, 0x85, 0xa5, 0x92, 0xcb, 0xfc, 0x79, 0x4e, 0x17, 0x20, 0x57, 0x60, 0x39, 0xe, 0x8b, 0xbc, 0xe5, 0xd2, 0xf2, 0xc5, 0x9c, 0xab, 0x2e, 0x19, 0x40, 0x77, 0xae, 0x99, 0xc0, 0xf7, 0x72, 0x45, 0x1c, 0x2b, 0xb, 0x3c, 0x65, 0x52, 0xd7, 0xe0, 0xb9, 0x8e, 0xf9, 0xce, 0x97, 0xa0, 0x25, 0x12, 0x4b, 0x7c, 0x5c, 0x6b, 0x32, 0x5, 0x80, 0xb7, 0xee, 0xd9, 0x41, 0x76, 0x2f, 0x18, 0x9d, 0xaa, 0xf3, 0xc4, 0xe4, 0xd3, 0x8a, 0xbd, 0x38, 0xf, 0x56, 0x61, 0x16, 0x21, 0x78, 0x4f, 0xca, 0xfd, 0xa4, 0x93, 0xb3, 0x84, 0xdd, 0xea, 0x6f, 0x58, 0x1, 0x36, 0xef, 0xd8, 0x81, 0xb6, 0x33, 0x4, 0x5d, 0x6a, 0x4a, 0x7d, 0x24, 0x13, 0x96, 0xa1, 0xf8, 0xcf, 0xb8, 0x8f, 0xd6, 0xe1, 0x64, 0x53, 0xa, 0x3d, 0x1d, 0x2a, 0x73, 0x44, 0xc1, 0xf6, 0xaf, 0x98, 0x82, 0xb5, 0xec, 0xdb, 0x5e, 0x69, 0x30, 0x7, 0x27, 0x10, 0x49, 0x7e, 0xfb, 0xcc, 0x95, 0xa2, 0xd5, 0xe2, 0xbb, 0x8c, 0x9, 0x3e, 0x67, 0x50, 0x70, 0x47, 0x1e, 0x29, 0xac, 0x9b, 0xc2, 0xf5, 0x2c, 0x1b, 0x42, 0x75, 0xf0, 0xc7, 0x9e, 0xa9, 0x89, 0xbe, 0xe7, 0xd0, 0x55, 0x62, 0x3b, 0xc, 0x7b, 0x4c, 0x15, 0x22, 0xa7, 0x90, 0xc9, 0xfe, 0xde, 0xe9, 0xb0, 0x87, 0x2, 0x35, 0x6c, 0x5b, 0xc3, 0xf4, 0xad, 0x9a, 0x1f, 0x28, 0x71, 0x46, 0x66, 0x51, 0x8, 0x3f, 0xba, 0x8d, 0xd4, 0xe3, 0x94, 0xa3, 0xfa, 0xcd, 0x48, 0x7f, 0x26, 0x11, 0x31, 0x6, 0x5f, 0x68, 0xed, 0xda, 0x83, 0xb4, 0x6d, 0x5a, 0x3, 0x34, 0xb1, 0x86, 0xdf, 0xe8, 0xc8, 0xff, 0xa6, 0x91, 0x14, 0x23, 0x7a, 0x4d, 0x3a, 0xd, 0x54, 0x63, 0xe6, 0xd1, 0x88, 0xbf, 0x9f, 0xa8, 0xf1, 0xc6, 0x43, 0x74, 0x2d, 0x1a}, [256]uint8{0x0, 0x38, 0x70, 0x48, 0xe0, 0xd8, 0x90, 0xa8, 0xdd, 0xe5, 0xad, 0x95, 0x3d, 0x5, 0x4d, 0x75, 0xa7, 0x9f, 0xd7, 0xef, 0x47, 0x7f, 0x37, 0xf, 0x7a, 0x42, 0xa, 0x32, 0x9a, 0xa2, 0xea, 0xd2, 0x53, 0x6b, 0x23, 0x1b, 0xb3, 0x8b, 0xc3, 0xfb, 0x8e, 0xb6, 0xfe, 0xc6, 0x6e, 0x56, 0x1e, 0x26, 0xf4, 0xcc, 0x84, 0xbc, 0x14, 0x2c, 0x64, 0x5c, 0x29, 0x11, 0x59, 0x61, 0xc9, 0xf1, 0xb9, 0x81, 0xa6, 0x9e, 0xd6, 0xee, 0x46, 0x7e, 0x36, 0xe, 0x7b, 0x43, 0xb, 0x33, 0x9b, 0xa3, 0xeb, 0xd3, 0x1, 0x39, 0x71, 0x49, 0xe1, 0xd9, 0x91, 0xa9, 0xdc, 0xe4, 0xac, 0x94, 0x3c, 0x4, 0x4c, 0x74, 0xf5, 0xcd, 0x85, 0xbd, 0x15, 0x2d, 0x65, 0x5d, 0x28, 0x10, 0x58, 0x60, 0xc8, 0xf0, 0xb8, 0x80, 0x52, 0x6a, 0x22, 0x1a, 0xb2, 0x8a, 0xc2, 0xfa, 0x8f, 0xb7, 0xff, 0xc7, 0x6f, 0x57, 0x1f, 0x27, 0x51, 0x69, 0x21, 0x19, 0xb1, 0x89, 0xc1, 0xf9, 0x8c, 0xb4, 0xfc, 0xc4, 0x6c, 0x54, 0x1c, 0x24, 0xf6, 0xce, 0x86, 0xbe, 0x16, 0x2e, 0x66, 0x5e, 0x2b, 0x13, 0x5b, 0x63, 0xcb, 0xf3, 0xbb, 0x83, 0x2, 0x3a, 0x72, 0x4a, 0xe2, 0xda, 0x92, 0xaa, 0xdf, 0xe7, 0xaf, 0x97, 0x3f, 0x7, 0x4f, 0x77, 0xa5, 0x9d, 0xd5, 0xed, 0x45, 0x7d, 0x35, 0xd, 0x78, 0x40, 0x8, 0x30, 0x98, 0xa0, 0xe8, 0xd0, 0xf7, 0xcf, 0x87, 0xbf, 0x17, 0x2f, 0x67, 0x5f, 0x2a, 0x12, 0x5a, 0x62, 0xca, 0xf2, 0xba, 0x82, 0x50, 0x68, 0x20, 0x18, 0xb0, 0x88, 0xc0, 0xf8, 0x8d, 0xb5, 0xfd, 0xc5, 0x6d, 0x55, 0x1d, 0x25, 0xa4, 0x9c, 0xd4, 0xec, 0x44, 0x7c, 0x34, 0xc, 0x79, 0x41, 0x9, 0x31, 0x99, 0xa1, 0xe9, 0xd1, 0x3, 0x3b, 0x73, 0x4b, 0xe3, 0xdb, 0x93, 0xab, 0xde, 0xe6, 0xae, 0x96, 0x3e, 0x6, 0x4e, 0x76}, [256]uint8{0x0, 0x39, 0x72, 0x4b, 0xe4, 0xdd, 0x96, 0xaf, 0xd5, 0xec, 0xa7, 0x9e, 0x31, 0x8, 0x43, 0x7a, 0xb7, 0x8e, 0xc5, 0xfc, 0x53, 0x6a, 0x21, 0x18, 0x62, 0x5b, 0x10, 0x29, 0x86, 0xbf, 0xf4, 0xcd, 0x73, 0x4a, 0x1, 0x38, 0x97, 0xae, 0xe5, 0xdc, 0xa6, 0x9f, 0xd4, 0xed, 0x42, 0x7b, 0x30, 0x9, 0xc4, 0xfd, 0xb6, 0x8f, 0x20, 0x19, 0x52, 0x6b, 0x11, 0x28, 0x63, 0x5a, 0xf5, 0xcc, 0x87, 0xbe, 0xe6, 0xdf, 0x94, 0xad, 0x2, 0x3b, 0x70, 0x49, 0x33, 0xa, 0x41, 0x78, 0xd7, 0xee, 0xa5, 0x9c, 0x51, 0x68, 0x23, 0x1a, 0xb5, 0x8c, 0xc7, 0xfe, 0x84, 0xbd, 0xf6, 0xcf, 0x60, 0x59, 0x12, 0x2b, 0x95, 0xac, 0xe7, 0xde, 0x71, 0x48, 0x3, 0x3a, 0x40, 0x79, 0x32, 0xb, 0xa4, 0x9d, 0xd6, 0xef, 0x22, 0x1b, 0x50, 0x69, 0xc6, 0xff, 0xb4, 0x8d, 0xf7, 0xce, 0x85, 0xbc, 0x13, 0x2a, 0x61, 0x58, 0xd1, 0xe8, 0xa3, 0x9a, 0x35, 0xc, 0x47, 0x7e, 0x4, 0x3d, 0x76, 0x4f, 0xe0, 0xd9, 0x92, 0xab, 0x66, 0x5f, 0x14, 0x2d, 0x82, 0xbb, 0xf0, 0xc9, 0xb3, 0x8a, 0xc1, 0xf8, 0x57, 0x6e, 0x25, 0x1c, 0xa2, 0x9b, 0xd0, 0xe9, 0x46, 0x7f, 0x34, 0xd, 0x77, 0x4e, 0x5, 0x3c, 0x93, 0xaa, 0xe1, 0xd8, 0x15, 0x2c, 0x67, 0x5e, 0xf1, 0xc8, 0x83, 0xba, 0xc0, 0xf9, 0xb2, 0x8b, 0x24, 0x1d, 0x56, 0x6f, 0x37, 0xe, 0x45, 0x7c, 0xd3, 0xea, 0xa1, 0x98, 0xe2, 0xdb, 0x90, 0xa9, 0x6, 0x3f, 0x74, 0x4d, 0x80, 0xb9, 0xf2, 0xcb, 0x64, 0x5d, 0x16, 0x2f, 0x55, 0x6c, 0x27, 0x1e, 0xb1, 0x88, 0xc3, 0xfa, 0x44, 0x7d, 0x36, 0xf, 0xa0, 0x99, 0xd2, 0xeb, 0x91, 0xa8, 0xe3, 0xda, 0x75, 0x4c, 0x7, 0x3e, 0xf3, 0xca, 0x81, 0xb8, 0x17, 0x2e, 0x65, 0x5c, 0x26, 0x1f, 0x54, 0x6d, 0xc2, 0xfb, 0xb0, 0x89}, [256]uint8{0x0, 0x3a, 0x74, 0x4e, 0xe8, 0xd2, 0x9c, 0xa6, 0xcd, 0xf7, 0xb9, 0x83, 0x25, 0x1f, 0x51, 0x6b, 0x87, 0xbd, 0xf3, 0xc9, 0x6f, 0x55, 0x1b, 0x21, 0x4a, 0x70, 0x3e, 0x4, 0xa2, 0x98, 0xd6, 0xec, 0x13, 0x29, 0x67, 0x5d, 0xfb, 0xc1, 0x8f, 0xb5, 0xde, 0xe4, 0xaa, 0x90, 0x36, 0xc, 0x42, 0x78, 0x94, 0xae, 0xe0, 0xda, 0x7c, 0x46, 0x8, 0x32, 0x59, 0x63, 0x2d, 0x17, 0xb1, 0x8b, 0xc5, 0xff, 0x26, 0x1c, 0x52, 0x68, 0xce, 0xf4, 0xba, 0x80, 0xeb, 0xd1, 0x9f, 0xa5, 0x3, 0x39, 0x77, 0x4d, 0xa1, 0x9b, 0xd5, 0xef, 0x49, 0x73, 0x3d, 0x7, 0x6c, 0x56, 0x18, 0x22, 0x84, 0xbe, 0xf0, 0xca, 0x35, 0xf, 0x41, 0x7b, 0xdd, 0xe7, 0xa9, 0x93, 0xf8, 0xc2, 0x8c, 0xb6, 0x10, 0x2a, 0x64, 0x5e, 0xb2, 0x88, 0xc6, 0xfc, 0x5a, 0x60, 0x2e, 0x14, 0x7f, 0x45, 0xb, 0x31, 0x97, 0xad, 0xe3, 0xd9, 0x4c, 0x76, 0x38, 0x2, 0xa4, 0x9e, 0xd0, 0xea, 0x81, 0xbb, 0xf5, 0xcf, 0x69, 0x53, 0x1d, 0x27, 0xcb, 0xf1, 0xbf, 0x85, 0x23, 0x19, 0x57, 0x6d, 0x6, 0x3c, 0x72, 0x48, 0xee, 0xd4, 0x9a, 0xa0, 0x5f, 0x65, 0x2b, 0x11, 0xb7, 0x8d, 0xc3, 0xf9, 0x92, 0xa8, 0xe6, 0xdc, 0x7a, 0x40, 0xe, 0x34, 0xd8, 0xe2, 0xac, 0x96, 0x30, 0xa, 0x44, 0x7e, 0x15, 0x2f, 0x61, 0x5b, 0xfd, 0xc7, 0x89, 0xb3, 0x6a, 0x50, 0x1e, 0x24, 0x82, 0xb8, 0xf6, 0xcc, 0xa7, 0x9d, 0xd3, 0xe9, 0x4f, 0x75, 0x3b, 0x1, 0xed, 0xd7, 0x99, 0xa3, 0x5, 0x3f, 0x71, 0x4b, 0x20, 0x1a, 0x54, 0x6e, 0xc8, 0xf2, 0xbc, 0x86, 0x79, 0x43, 0xd, 0x37, 0x91, 0xab, 0xe5, 0xdf, 0xb4, 0x8e, 0xc0, 0xfa, 0x5c, 0x66, 0x28, 0x12, 0xfe, 0xc4, 0x8a, 0xb0, 0x16, 0x2c, 0x62, 0x58, 0x33, 0x9, 0x47, 0x7d, 0xdb, 0xe1, 0xaf, 0x95}, [256]uint8{0x0, 0x3b, 0x76, 0x4d, 0xec, 0xd7, 0x9a, 0xa1, 0xc5, 0xfe, 0xb3, 0x88, 0x29, 0x12, 0x5f, 0x64, 0x97, 0xac, 0xe1, 0xda, 0x7b, 0x40, 0xd, 0x36, 0x52, 0x69, 0x24, 0x1f, 0xbe, 0x85, 0xc8, 0xf3, 0x33, 0x8, 0x45, 0x7e, 0xdf, 0xe4, 0xa9, 0x92, 0xf6, 0xcd, 0x80, 0xbb, 0x1a, 0x21, 0x6c, 0x57, 0xa4, 0x9f, 0xd2, 0xe9, 0x48, 0x73, 0x3e, 0x5, 0x61, 0x5a, 0x17, 0x2c, 0x8d, 0xb6, 0xfb, 0xc0, 0x66, 0x5d, 0x10, 0x2b, 0x8a, 0xb1, 0xfc, 0xc7, 0xa3, 0x98, 0xd5, 0xee, 0x4f, 0x74, 0x39, 0x2, 0xf1, 0xca, 0x87, 0xbc, 0x1d, 0x26, 0x6b, 0x50, 0x34, 0xf, 0x42, 0x79, 0xd8, 0xe3, 0xae, 0x95, 0x55, 0x6e, 0x23, 0x18, 0xb9, 0x82, 0xcf, 0xf4, 0x90, 0xab, 0xe6, 0xdd, 0x7c, 0x47, 0xa, 0x31, 0xc2, 0xf9, 0xb4, 0x8f, 0x2e, 0x15, 0x58, 0x63, 0x7, 0x3c, 0x71, 0x4a, 0xeb, 0xd0, 0x9d, 0xa6, 0xcc, 0xf7, 0xba, 0x81, 0x20, 0x1b, 0x56, 0x6d, 0x9, 0x32, 0x7f, 0x44, 0xe5, 0xde, 0x93, 0xa8, 0x5b, 0x60, 0x2d, 0x16, 0xb7, 0x8c, 0xc1, 0xfa, 0x9e, 0xa5, 0xe8, 0xd3, 0x72, 0x49, 0x4, 0x3f, 0xff, 0xc4, 0x89, 0xb2, 0x13, 0x28, 0x65, 0x5e, 0x3a, 0x1, 0x4c, 0x77, 0xd6, 0xed, 0xa0, 0x9b, 0x68, 0x53, 0x1e, 0x25, 0x84, 0xbf, 0xf2, 0xc9, 0xad, 0x96, 0xdb, 0xe0, 0x41, 0x7a, 0x37, 0xc, 0xaa, 0x91, 0xdc, 0xe7, 0x46, 0x7d, 0x30, 0xb, 0x6f, 0x54, 0x19, 0x22, 0x83, 0xb8, 0xf5, 0xce, 0x3d, 0x6, 0x4b, 0x70, 0xd1, 0xea, 0xa7, 0x9c, 0xf8, 0xc3, 0x8e, 0xb5, 0x14, 0x2f, 0x62, 0x59, 0x99, 0xa2, 0xef, 0xd4, 0x75, 0x4e, 0x3, 0x38, 0x5c, 0x67, 0x2a, 0x11, 0xb0, 0x8b, 0xc6, 0xfd, 0xe, 0x35, 0x78, 0x43, 0xe2, 0xd9, 0x94, 0xaf, 0xcb, 0xf0, 0xbd, 0x86, 0x27, 0x1c, 0x51, 0x6a}, [256]uint8{0x0, 0x3c, 0x78, 0x44, 0xf0, 0xcc, 0x88, 0xb4, 0xfd, 0xc1, 0x85, 0xb9, 0xd, 0x31, 0x75, 0x49, 0xe7, 0xdb, 0x9f, 0xa3, 0x17, 0x2b, 0x6f, 0x53, 0x1a, 0x26, 0x62, 0x5e, 0xea, 0xd6, 0x92, 0xae, 0xd3, 0xef, 0xab, 0x97, 0x23, 0x1f, 0x5b, 0x67, 0x2e, 0x12, 0x56, 0x6a, 0xde, 0xe2, 0xa6, 0x9a, 0x34, 0x8, 0x4c, 0x70, 0xc4, 0xf8, 0xbc, 0x80, 0xc9, 0xf5, 0xb1, 0x8d, 0x39, 0x5, 0x41, 0x7d, 0xbb, 0x87, 0xc3, 0xff, 0x4b, 0x77, 0x33, 0xf, 0x46, 0x7a, 0x3e, 0x2, 0xb6, 0x8a, 0xce, 0xf2, 0x5c, 0x60, 0x24, 0x18, 0xac, 0x90, 0xd4, 0xe8, 0xa1, 0x9d, 0xd9, 0xe5, 0x51, 0x6d, 0x29, 0x15, 0x68, 0x54, 0x10, 0x2c, 0x98, 0xa4, 0xe0, 0xdc, 0x95, 0xa9, 0xed, 0xd1, 0x65, 0x59, 0x1d, 0x21, 0x8f, 0xb3, 0xf7, 0xcb, 0x7f, 0x43, 0x7, 0x3b, 0x72, 0x4e, 0xa, 0x36, 0x82, 0xbe, 0xfa, 0xc6, 0x6b, 0x57, 0x13, 0x2f, 0x9b, 0xa7, 0xe3, 0xdf, 0x96, 0xaa, 0xee, 0xd2, 0x66, 0x5a, 0x1e, 0x22, 0x8c, 0xb0, 0xf4, 0xc8, 0x7c, 0x40, 0x4, 0x38, 0x71, 0x4d, 0x9, 0x35, 0x81, 0xbd, 0xf9, 0xc5, 0xb8, 0x84, 0xc0, 0xfc, 0x48, 0x74, 0x30, 0xc, 0x45, 0x79, 0x3d, 0x1, 0xb5, 0x89, 0xcd, 0xf1, 0x5f, 0x63, 0x27, 0x1b, 0xaf, 0x93, 0xd7, 0xeb, 0xa2, 0x9e, 0xda, 0xe6, 0x52, 0x6e, 0x2a, 0x16, 0xd0, 0xec, 0xa8, 0x94, 0x20, 0x1c, 0x58, 0x64, 0x2d, 0x11, 0x55, 0x69, 0xdd, 0xe1, 0xa5, 0x99, 0x37, 0xb, 0x4f, 0x73, 0xc7, 0xfb, 0xbf, 0x83, 0xca, 0xf6, 0xb2, 0x8e, 0x3a, 0x6, 0x42, 0x7e, 0x3, 0x3f, 0x7b, 0x47, 0xf3, 0xcf, 0x8b, 0xb7, 0xfe, 0xc2, 0x86, 0xba, 0xe, 0x32, 0x76, 0x4a, 0xe4, 0xd8, 0x9c, 0xa0, 0x14, 0x28, 0x6c, 0x50, 0x19, 0x25, 0x61, 0x5d, 0xe9, 0xd5, 0x91, 0xad}, [256]uint8{0x0, 0x3d, 0x7a, 0x47, 0xf4, 0xc9, 0x8e, 0xb3, 0xf5, 0xc8, 0x8f, 0xb2, 0x1, 0x3c, 0x7b, 0x46, 0xf7, 0xca, 0x8d, 0xb0, 0x3, 0x3e, 0x79, 0x44, 0x2, 0x3f, 0x78, 0x45, 0xf6, 0xcb, 0x8c, 0xb1, 0xf3, 0xce, 0x89, 0xb4, 0x7, 0x3a, 0x7d, 0x40, 0x6, 0x3b, 0x7c, 0x41, 0xf2, 0xcf, 0x88, 0xb5, 0x4, 0x39, 0x7e, 0x43, 0xf0, 0xcd, 0x8a, 0xb7, 0xf1, 0xcc, 0x8b, 0xb6, 0x5, 0x38, 0x7f, 0x42, 0xfb, 0xc6, 0x81, 0xbc, 0xf, 0x32, 0x75, 0x48, 0xe, 0x33, 0x74, 0x49, 0xfa, 0xc7, 0x80, 0xbd, 0xc, 0x31, 0x76, 0x4b, 0xf8, 0xc5, 0x82, 0xbf, 0xf9, 0xc4, 0x83, 0xbe, 0xd, 0x30, 0x77, 0x4a, 0x8, 0x35, 0x72, 0x4f, 0xfc, 0xc1, 0x86, 0xbb, 0xfd, 0xc0, 0x87, 0xba, 0x9, 0x34, 0x73, 0x4e, 0xff, 0xc2, 0x85, 0xb8, 0xb, 0x36, 0x71, 0x4c, 0xa, 0x37, 0x70, 0x4d, 0xfe, 0xc3, 0x84, 0xb9, 0xeb, 0xd6, 0x91, 0xac, 0x1f, 0x22, 0x65, 0x58, 0x1e, 0x23, 0x64, 0x59, 0xea, 0xd7, 0x90, 0xad, 0x1c, 0x21, 0x66, 0x5b, 0xe8, 0xd5, 0x92, 0xaf, 0xe9, 0xd4, 0x93, 0xae, 0x1d, 0x20, 0x67, 0x5a, 0x18, 0x25, 0x62, 0x5f, 0xec, 0xd1, 0x96, 0xab, 0xed, 0xd0, 0x97, 0xaa, 0x19, 0x24, 0x63, 0x5e, 0xef, 0xd2, 0x95, 0xa8, 0x1b, 0x26, 0x61, 0x5c, 0x1a, 0x27, 0x60, 0x5d, 0xee, 0xd3, 0x94, 0xa9, 0x10, 0x2d, 0x6a, 0x57, 0xe4, 0xd9, 0x9e, 0xa3, 0xe5, 0xd8, 0x9f, 0xa2, 0x11, 0x2c, 0x6b, 0x56, 0xe7, 0xda, 0x9d, 0xa0, 0x13, 0x2e, 0x69, 0x54, 0x12, 0x2f, 0x68, 0x55, 0xe6, 0xdb, 0x9c, 0xa1, 0xe3, 0xde, 0x99, 0xa4, 0x17, 0x2a, 0x6d, 0x50, 0x16, 0x2b, 0x6c, 0x51, 0xe2, 0xdf, 0x98, 0xa5, 0x14, 0x29, 0x6e, 0x53, 0xe0, 0xdd, 0x9a, 0xa7, 0xe1, 0xdc, 0x9b, 0xa6, 0x15, 0x28, 0x6f, 0x52}, [256]uint8{0x0, 0x3e, 0x7c, 0x42, 0xf8, 0xc6, 0x84, 0xba, 0xed, 0xd3, 0x91, 0xaf, 0x15, 0x2b, 0x69, 0x57, 0xc7, 0xf9, 0xbb, 0x85, 0x3f, 0x1, 0x43, 0x7d, 0x2a, 0x14, 0x56, 0x68, 0xd2, 0xec, 0xae, 0x90, 0x93, 0xad, 0xef, 0xd1, 0x6b, 0x55, 0x17, 0x29, 0x7e, 0x40, 0x2, 0x3c, 0x86, 0xb8, 0xfa, 0xc4, 0x54, 0x6a, 0x28, 0x16, 0xac, 0x92, 0xd0, 0xee, 0xb9, 0x87, 0xc5, 0xfb, 0x41, 0x7f, 0x3d, 0x3, 0x3b, 0x5, 0x47, 0x79, 0xc3, 0xfd, 0xbf, 0x81, 0xd6, 0xe8, 0xaa, 0x94, 0x2e, 0x10, 0x52, 0x6c, 0xfc, 0xc2, 0x80, 0xbe, 0x4, 0x3a, 0x78, 0x46, 0x11, 0x2f, 0x6d, 0x53, 0xe9, 0xd7, 0x95, 0xab, 0xa8, 0x96, 0xd4, 0xea, 0x50, 0x6e, 0x2c, 0x12, 0x45, 0x7b, 0x39, 0x7, 0xbd, 0x83, 0xc1, 0xff, 0x6f, 0x51, 0x13, 0x2d, 0x97, 0xa9, 0xeb, 0xd5, 0x82, 0xbc, 0xfe, 0xc0, 0x7a, 0x44, 0x6, 0x38, 0x76, 0x48, 0xa, 0x34, 0x8e, 0xb0, 0xf2, 0xcc, 0x9b, 0xa5, 0xe7, 0xd9, 0x63, 0x5d, 0x1f, 0x21, 0xb1, 0x8f, 0xcd, 0xf3, 0x49, 0x77, 0x35, 0xb, 0x5c, 0x62, 0x20, 0x1e, 0xa4, 0x9a, 0xd8, 0xe6, 0xe5, 0xdb, 0x99, 0xa7, 0x1d, 0x23, 0x61, 0x5f, 0x8, 0x36, 0x74, 0x4a, 0xf0, 0xce, 0x8c, 0xb2, 0x22, 0x1c, 0x5e, 0x60, 0xda, 0xe4, 0xa6, 0x98, 0xcf, 0xf1, 0xb3, 0x8d, 0x37, 0x9, 0x4b, 0x75, 0x4d, 0x73, 0x31, 0xf, 0xb5, 0x8b, 0xc9, 0xf7, 0xa0, 0x9e, 0xdc, 0xe2, 0x58, 0x66, 0x24, 0x1a, 0x8a, 0xb4, 0xf6, 0xc8, 0x72, 0x4c, 0xe, 0x30, 0x67, 0x59, 0x1b, 0x25, 0x9f, 0xa1, 0xe3, 0xdd, 0xde, 0xe0, 0xa2, 0x9c, 0x26, 0x18, 0x5a, 0x64, 0x33, 0xd, 0x4f, 0x71, 0xcb, 0xf5, 0xb7, 0x89, 0x19, 0x27, 0x65, 0x5b, 0xe1, 0xdf, 0x9d, 0xa3, 0xf4, 0xca, 0x88, 0xb6, 0xc, 0x32, 0x70, 0x4e}, [256]uint8{0x0, 0x3f, 0x7e, 0x41, 0xfc, 0xc3, 0x82, 0xbd, 0xe5, 0xda, 0x9b, 0xa4, 0x19, 0x26, 0x67, 0x58, 0xd7, 0xe8, 0xa9, 0x96, 0x2b, 0x14, 0x55, 0x6a, 0x32, 0xd, 0x4c, 0x73, 0xce, 0xf1, 0xb0, 0x8f, 0xb3, 0x8c, 0xcd, 0xf2, 0x4f, 0x70, 0x31, 0xe, 0x56, 0x69, 0x28, 0x17, 0xaa, 0x95, 0xd4, 0xeb, 0x64, 0x5b, 0x1a, 0x25, 0x98, 0xa7, 0xe6, 0xd9, 0x81, 0xbe, 0xff, 0xc0, 0x7d, 0x42, 0x3, 0x3c, 0x7b, 0x44, 0x5, 0x3a, 0x87, 0xb8, 0xf9, 0xc6, 0x9e, 0xa1, 0xe0, 0xdf, 0x62, 0x5d, 0x1c, 0x23, 0xac, 0x93, 0xd2, 0xed, 0x50, 0x6f, 0x2e, 0x11, 0x49, 0x76, 0x37, 0x8, 0xb5, 0x8a, 0xcb, 0xf4, 0xc8, 0xf7, 0xb6, 0x89, 0x34, 0xb, 0x4a, 0x75, 0x2d, 0x12, 0x53, 0x6c, 0xd1, 0xee, 0xaf, 0x90, 0x1f, 0x20, 0x61, 0x5e, 0xe3, 0xdc, 0x9d, 0xa2, 0xfa, 0xc5, 0x84, 0xbb, 0x6, 0x39, 0x78, 0x47, 0xf6, 0xc9, 0x88, 0xb7, 0xa, 0x35, 0x74, 0x4b, 0x13, 0x2c, 0x6d, 0x52, 0xef, 0xd0, 0x91, 0xae, 0x21, 0x1e, 0x5f, 0x60, 0xdd, 0xe2, 0xa3, 0x9c, 0xc4, 0xfb, 0xba, 0x85, 0x38, 0x7, 0x46, 0x79, 0x45, 0x7a, 0x3b, 0x4, 0xb9, 0x86, 0xc7, 0xf8, 0xa0, 0x9f, 0xde, 0xe1, 0x5c, 0x63, 0x22, 0x1d, 0x92, 0xad, 0xec, 0xd3, 0x6e, 0x51, 0x10, 0x2f, 0x77, 0x48, 0x9, 0x36, 0x8b, 0xb4, 0xf5, 0xca, 0x8d, 0xb2, 0xf3, 0xcc, 0x71, 0x4e, 0xf, 0x30, 0x68, 0x57, 0x16, 0x29, 0x94, 0xab, 0xea, 0xd5, 0x5a, 0x65, 0x24, 0x1b, 0xa6, 0x99, 0xd8, 0xe7, 0xbf, 0x80, 0xc1, 0xfe, 0x43, 0x7c, 0x3d, 0x2, 0x3e, 0x1, 0x40, 0x7f, 0xc2, 0xfd, 0xbc, 0x83, 0xdb, 0xe4, 0xa5, 0x9a, 0x27, 0x18, 0x59, 0x66, 0xe9, 0xd6, 0x97, 0xa8, 0x15, 0x2a, 0x6b, 0x54, 0xc, 0x33, 0x72, 0x4d, 0xf0, 0xcf, 0x8e, 0xb1}, [256]uint8{0x0, 0x40, 0x80, 0xc0, 0x1d, 0x5d, 0x9d, 0xdd, 0x3a, 0x7a, 0xba, 0xfa, 0x27, 0x67, 0xa7, 0xe7, 0x74, 0x34, 0xf4, 0xb4, 0x69, 0x29, 0xe9, 0xa9, 0x4e, 0xe, 0xce, 0x8e, 0x53, 0x13, 0xd3, 0x93, 0xe8, 0xa8, 0x68, 0x28, 0xf5, 0xb5, 0x75, 0x35, 0xd2, 0x92, 0x52, 0x12, 0xcf, 0x8f, 0x4f, 0xf, 0x9c, 0xdc, 0x1c, 0x5c, 0x81, 0xc1, 0x1, 0x41, 0xa6, 0xe6, 0x26, 0x66, 0xbb, 0xfb, 0x3b, 0x7b, 0xcd, 0x8d, 0x4d, 0xd, 0xd0, 0x90, 0x50, 0x10, 0xf7, 0xb7, 0x77, 0x37, 0xea, 0xaa, 0x6a, 0x2a, 0xb9, 0xf9, 0x39, 0x79, 0xa4, 0xe4, 0x24, 0x64, 0x83, 0xc3, 0x3, 0x43, 0x9e, 0xde, 0x1e, 0x5e, 0x25, 0x65, 0xa5, 0xe5, 0x38, 0x78, 0xb8, 0xf8, 0x1f, 0x5f, 0x9f, 0xdf, 0x2, 0x42, 0x82, 0xc2, 0x51, 0x11, 0xd1, 0x91, 0x4c, 0xc, 0xcc, 0x8c, 0x6b, 0x2b, 0xeb, 0xab, 0x76, 0x36, 0xf6, 0xb6, 0x87, 0xc7, 0x7, 0x47, 0x9a, 0xda, 0x1a, 0x5a, 0xbd, 0xfd, 0x3d, 0x7d, 0xa0, 0xe0, 0x20, 0x60, 0xf3, 0xb3, 0x73, 0x33, 0xee, 0xae, 0x6e, 0x2e, 0xc9, 0x89, 0x49, 0x9, 0xd4, 0x94, 0x54, 0x14, 0x6f, 0x2f, 0xef, 0xaf, 0x72, 0x32, 0xf2, 0xb2, 0x55, 0x15, 0xd5, 0x95, 0x48, 0x8, 0xc8, 0x88, 0x1b, 0x5b, 0x9b, 0xdb, 0x6, 0x46, 0x86, 0xc6, 0x21, 0x61, 0xa1, 0xe1, 0x3c, 0x7c, 0xbc, 0xfc, 0x4a, 0xa, 0xca, 0x8a, 0x57, 0x17, 0xd7, 0x97, 0x70, 0x30, 0xf0, 0xb0, 0x6d, 0x2d, 0xed, 0xad, 0x3e, 0x7e, 0xbe, 0xfe, 0x23, 0x63, 0xa3, 0xe3, 0x4, 0x44, 0x84, 0xc4, 0x19, 0x59, 0x99, 0xd9, 0xa2, 0xe2, 0x22, 0x62, 0xbf, 0xff, 0x3f, 0x7f, 0x98, 0xd8, 0x18, 0x58, 0x85, 0xc5, 0x5, 0x45, 0xd6, 0x96, 0x56, 0x16, 0xcb, 0x8b, 0x4b, 0xb, 0xec, 0xac, 0x6c, 0x2c, 0xf1, 0xb1, 0x71, 0x31}, [256]uint8{0x0, 0x41, 0x82, 0xc3, 0x19, 0x58, 0x9b, 0xda, 0x32, 0x73, 0xb0, 0xf1, 0x2b, 0x6a, 0xa9, 0xe8, 0x64, 0x25, 0xe6, 0xa7, 0x7d, 0x3c, 0xff, 0xbe, 0x56, 0x17, 0xd4, 0x95, 0x4f, 0xe, 0xcd, 0x8c, 0xc8, 0x89, 0x4a, 0xb, 0xd1, 0x90, 0x53, 0x12, 0xfa, 0xbb, 0x78, 0x39, 0xe3, 0xa2, 0x61, 0x20, 0xac, 0xed, 0x2e, 0x6f, 0xb5, 0xf4, 0x37, 0x76, 0x9e, 0xdf, 0x1c, 0x5d, 0x87, 0xc6, 0x5, 0x44, 0x8d, 0xcc, 0xf, 0x4e, 0x94, 0xd5, 0x16, 0x57, 0xbf, 0xfe, 0x3d, 0x7c, 0xa6, 0xe7, 0x24, 0x65, 0xe9, 0xa8, 0x6b, 0x2a, 0xf0, 0xb1, 0x72, 0x33, 0xdb, 0x9a, 0x59, 0x18, 0xc2, 0x83, 0x40, 0x1, 0x45, 0x4, 0xc7, 0x86, 0x5c, 0x1d, 0xde, 0x9f, 0x77, 0x36, 0xf5, 0xb4, 0x6e, 0x2f, 0xec, 0xad, 0x21, 0x60, 0xa3, 0xe2, 0x38, 0x79, 0xba, 0xfb, 0x13, 0x52, 0x91, 0xd0, 0xa, 0x4b, 0x88, 0xc9, 0x7, 0x46, 0x85, 0xc4, 0x1e, 0x5f, 0x9c, 0xdd, 0x35, 0x74, 0xb7, 0xf6, 0x2c, 0x6d, 0xae, 0xef, 0x63, 0x22, 0xe1, 0xa0, 0x7a, 0x3b, 0xf8, 0xb9, 0x51, 0x10, 0xd3, 0x92, 0x48, 0x9, 0xca, 0x8b, 0xcf, 0x8e, 0x4d, 0xc, 0xd6, 0x97, 0x54, 0x15, 0xfd, 0xbc, 0x7f, 0x3e, 0xe4, 0xa5, 0x66, 0x27, 0xab, 0xea, 0x29, 0x68, 0xb2, 0xf3, 0x30, 0x71, 0x99, 0xd8, 0x1b, 0x5a, 0x80, 0xc1, 0x2, 0x43, 0x8a, 0xcb, 0x8, 0x49, 0x93, 0xd2, 0x11, 0x50, 0xb8, 0xf9, 0x3a, 0x7b, 0xa1, 0xe0, 0x23, 0x62, 0xee, 0xaf, 0x6c, 0x2d, 0xf7, 0xb6, 0x75, 0x34, 0xdc, 0x9d, 0x5e, 0x1f, 0xc5, 0x84, 0x47, 0x6, 0x42, 0x3, 0xc0, 0x81, 0x5b, 0x1a, 0xd9, 0x98, 0x70, 0x31, 0xf2, 0xb3, 0x69, 0x28, 0xeb, 0xaa, 0x26, 0x67, 0xa4, 0xe5, 0x3f, 0x7e, 0xbd, 0xfc, 0x14, 0x55, 0x96, 0xd7, 0xd, 0x4c, 0x8f, 0xce}, [256]uint8{0x0, 0x42, 0x84, 0xc6, 0x15, 0x57, 0x91, 0xd3, 0x2a, 0x68, 0xae, 0xec, 0x3f, 0x7d, 0xbb, 0xf9, 0x54, 0x16, 0xd0, 0x92, 0x41, 0x3, 0xc5, 0x87, 0x7e, 0x3c, 0xfa, 0xb8, 0x6b, 0x29, 0xef, 0xad, 0xa8, 0xea, 0x2c, 0x6e, 0xbd, 0xff, 0x39, 0x7b, 0x82, 0xc0, 0x6, 0x44, 0x97, 0xd5, 0x13, 0x51, 0xfc, 0xbe, 0x78, 0x3a, 0xe9, 0xab, 0x6d, 0x2f, 0xd6, 0x94, 0x52, 0x10, 0xc3, 0x81, 0x47, 0x5, 0x4d, 0xf, 0xc9, 0x8b, 0x58, 0x1a, 0xdc, 0x9e, 0x67, 0x25, 0xe3, 0xa1, 0x72, 0x30, 0xf6, 0xb4, 0x19, 0x5b, 0x9d, 0xdf, 0xc, 0x4e, 0x88, 0xca, 0x33, 0x71, 0xb7, 0xf5, 0x26, 0x64, 0xa2, 0xe0, 0xe5, 0xa7, 0x61, 0x23, 0xf0, 0xb2, 0x74, 0x36, 0xcf, 0x8d, 0x4b, 0x9, 0xda, 0x98, 0x5e, 0x1c, 0xb1, 0xf3, 0x35, 0x77, 0xa4, 0xe6, 0x20, 0x62, 0x9b, 0xd9, 0x1f, 0x5d, 0x8e, 0xcc, 0xa, 0x48, 0x9a, 0xd8, 0x1e, 0x5c, 0x8f, 0xcd, 0xb, 0x49, 0xb0, 0xf2, 0x34, 0x76, 0xa5, 0xe7, 0x21, 0x63, 0xce, 0x8c, 0x4a, 0x8, 0xdb, 0x99, 0x5f, 0x1d, 0xe4, 0xa6, 0x60, 0x22, 0xf1, 0xb3, 0x75, 0x37, 0x32, 0x70, 0xb6, 0xf4, 0x27, 0x65, 0xa3, 0xe1, 0x18, 0x5a, 0x9c, 0xde, 0xd, 0x4f, 0x89, 0xcb, 0x66, 0x24, 0xe2, 0xa0, 0x73, 0x31, 0xf7, 0xb5, 0x4c, 0xe, 0xc8, 0x8a, 0x59, 0x1b, 0xdd, 0x9f, 0xd7, 0x95, 0x53, 0x11, 0xc2, 0x80, 0x46, 0x4, 0xfd, 0xbf, 0x79, 0x3b, 0xe8, 0xaa, 0x6c, 0x2e, 0x83, 0xc1, 0x7, 0x45, 0x96, 0xd4, 0x12, 0x50, 0xa9, 0xeb, 0x2d, 0x6f, 0xbc, 0xfe, 0x38, 0x7a, 0x7f, 0x3d, 0xfb, 0xb9, 0x6a, 0x28, 0xee, 0xac, 0x55, 0x17, 0xd1, 0x93, 0x40, 0x2, 0xc4, 0x86, 0x2b, 0x69, 0xaf, 0xed, 0x3e, 0x7c, 0xba, 0xf8, 0x1, 0x43, 0x85, 0xc7, 0x14, 0x56, 0x90, 0xd2}, [256]uint8{0x0, 0x43, 0x86, 0xc5, 0x11, 0x52, 0x97, 0xd4, 0x22, 0x61, 0xa4, 0xe7, 0x33, 0x70, 0xb5, 0xf6, 0x44, 0x7, 0xc2, 0x81, 0x55, 0x16, 0xd3, 0x90, 0x66, 0x25, 0xe0, 0xa3, 0x77, 0x34, 0xf1, 0xb2, 0x88, 0xcb, 0xe, 0x4d, 0x99, 0xda, 0x1f, 0x5c, 0xaa, 0xe9, 0x2c, 0x6f, 0xbb, 0xf8, 0x3d, 0x7e, 0xcc, 0x8f, 0x4a, 0x9, 0xdd, 0x9e, 0x5b, 0x18, 0xee, 0xad, 0x68, 0x2b, 0xff, 0xbc, 0x79, 0x3a, 0xd, 0x4e, 0x8b, 0xc8, 0x1c, 0x5f, 0x9a, 0xd9, 0x2f, 0x6c, 0xa9, 0xea, 0x3e, 0x7d, 0xb8, 0xfb, 0x49, 0xa, 0xcf, 0x8c, 0x58, 0x1b, 0xde, 0x9d, 0x6b, 0x28, 0xed, 0xae, 0x7a, 0x39, 0xfc, 0xbf, 0x85, 0xc6, 0x3, 0x40, 0x94, 0xd7, 0x12, 0x51, 0xa7, 0xe4, 0x21, 0x62, 0xb6, 0xf5, 0x30, 0x73, 0xc1, 0x82, 0x47, 0x4, 0xd0, 0x93, 0x56, 0x15, 0xe3, 0xa0, 0x65, 0x26, 0xf2, 0xb1, 0x74, 0x37, 0x1a, 0x59, 0x9c, 0xdf, 0xb, 0x48, 0x8d, 0xce, 0x38, 0x7b, 0xbe, 0xfd, 0x29, 0x6a, 0xaf, 0xec, 0x5e, 0x1d, 0xd8, 0x9b, 0x4f, 0xc, 0xc9, 0x8a, 0x7c, 0x3f, 0xfa, 0xb9, 0x6d, 0x2e, 0xeb, 0xa8, 0x92, 0xd1, 0x14, 0x57, 0x83, 0xc0, 0x5, 0x46, 0xb0, 0xf3, 0x36, 0x75, 0xa1, 0xe2, 0x27, 0x64, 0xd6, 0x95, 0x50, 0x13, 0xc7, 0x84, 0x41, 0x2, 0xf4, 0xb7, 0x72, 0x31, 0xe5, 0xa6, 0x63, 0x20, 0x17, 0x54, 0x91, 0xd2, 0x6, 0x45, 0x80, 0xc3, 0x35, 0x76, 0xb3, 0xf0, 0x24, 0x67, 0xa2, 0xe1, 0x53, 0x10, 0xd5, 0x96, 0x42, 0x1, 0xc4, 0x87, 0x71, 0x32, 0xf7, 0xb4, 0x60, 0x23, 0xe6, 0xa5, 0x9f, 0xdc, 0x19, 0x5a, 0x8e, 0xcd, 0x8, 0x4b, 0xbd, 0xfe, 0x3b, 0x78, 0xac, 0xef, 0x2a, 0x69, 0xdb, 0x98, 0x5d, 0x1e, 0xca, 0x89, 0x4c, 0xf, 0xf9, 0xba, 0x7f, 0x3c, 0xe8, 0xab, 0x6e, 0x2d}, [256]uint8{0x0, 0x44, 0x88, 0xcc, 0xd, 0x49, 0x85, 0xc1, 0x1a, 0x5e, 0x92, 0xd6, 0x17, 0x53, 0x9f, 0xdb, 0x34, 0x70, 0xbc, 0xf8, 0x39, 0x7d, 0xb1, 0xf5, 0x2e, 0x6a, 0xa6, 0xe2, 0x23, 0x67, 0xab, 0xef, 0x68, 0x2c, 0xe0, 0xa4, 0x65, 0x21, 0xed, 0xa9, 0x72, 0x36, 0xfa, 0xbe, 0x7f, 0x3b, 0xf7, 0xb3, 0x5c, 0x18, 0xd4, 0x90, 0x51, 0x15, 0xd9, 0x9d, 0x46, 0x2, 0xce, 0x8a, 0x4b, 0xf, 0xc3, 0x87, 0xd0, 0x94, 0x58, 0x1c, 0xdd, 0x99, 0x55, 0x11, 0xca, 0x8e, 0x42, 0x6, 0xc7, 0x83, 0x4f, 0xb, 0xe4, 0xa0, 0x6c, 0x28, 0xe9, 0xad, 0x61, 0x25, 0xfe, 0xba, 0x76, 0x32, 0xf3, 0xb7, 0x7b, 0x3f, 0xb8, 0xfc, 0x30, 0x74, 0xb5, 0xf1, 0x3d, 0x79, 0xa2, 0xe6, 0x2a, 0x6e, 0xaf, 0xeb, 0x27, 0x63, 0x8c, 0xc8, 0x4, 0x40, 0x81, 0xc5, 0x9, 0x4d, 0x96, 0xd2, 0x1e, 0x5a, 0x9b, 0xdf, 0x13, 0x57, 0xbd, 0xf9, 0x35, 0x71, 0xb0, 0xf4, 0x38, 0x7c, 0xa7, 0xe3, 0x2f, 0x6b, 0xaa, 0xee, 0x22, 0x66, 0x89, 0xcd, 0x1, 0x45, 0x84, 0xc0, 0xc, 0x48, 0x93, 0xd7, 0x1b, 0x5f, 0x9e, 0xda, 0x16, 0x52, 0xd5, 0x91, 0x5d, 0x19, 0xd8, 0x9c, 0x50, 0x14, 0xcf, 0x8b, 0x47, 0x3, 0xc2, 0x86, 0x4a, 0xe, 0xe1, 0xa5, 0x69, 0x2d, 0xec, 0xa8, 0x64, 0x20, 0xfb, 0xbf, 0x73, 0x37, 0xf6, 0xb2, 0x7e, 0x3a, 0x6d, 0x29, 0xe5, 0xa1, 0x60, 0x24, 0xe8, 0xac, 0x77, 0x33, 0xff, 0xbb, 0x7a, 0x3e, 0xf2, 0xb6, 0x59, 0x1d, 0xd1, 0x95, 0x54, 0x10, 0xdc, 0x98, 0x43, 0x7, 0xcb, 0x8f, 0x4e, 0xa, 0xc6, 0x82, 0x5, 0x41, 0x8d, 0xc9, 0x8, 0x4c, 0x80, 0xc4, 0x1f, 0x5b, 0x97, 0xd3, 0x12, 0x56, 0x9a, 0xde, 0x31, 0x75, 0xb9, 0xfd, 0x3c, 0x78, 0xb4, 0xf0, 0x2b, 0x6f, 0xa3, 0xe7, 0x26, 0x62, 0xae, 0xea}, [256]uint8{0x0, 0x45, 0x8a, 0xcf, 0x9, 0x4c, 0x83, 0xc6, 0x12, 0x57, 0x98, 0xdd, 0x1b, 0x5e, 0x91, 0xd4, 0x24, 0x61, 0xae, 0xeb, 0x2d, 0x68, 0xa7, 0xe2, 0x36, 0x73, 0xbc, 0xf9, 0x3f, 0x7a, 0xb5, 0xf0, 0x48, 0xd, 0xc2, 0x87, 0x41, 0x4, 0xcb, 0x8e, 0x5a, 0x1f, 0xd0, 0x95, 0x53, 0x16, 0xd9, 0x9c, 0x6c, 0x29, 0xe6, 0xa3, 0x65, 0x20, 0xef, 0xaa, 0x7e, 0x3b, 0xf4, 0xb1, 0x77, 0x32, 0xfd, 0xb8, 0x90, 0xd5, 0x1a, 0x5f, 0x99, 0xdc, 0x13, 0x56, 0x82, 0xc7, 0x8, 0x4d, 0x8b, 0xce, 0x1, 0x44, 0xb4, 0xf1, 0x3e, 0x7b, 0xbd, 0xf8, 0x37, 0x72, 0xa6, 0xe3, 0x2c, 0x69, 0xaf, 0xea, 0x25, 0x60, 0xd8, 0x9d, 0x52, 0x17, 0xd1, 0x94, 0x5b, 0x1e, 0xca, 0x8f, 0x40, 0x5, 0xc3, 0x86, 0x49, 0xc, 0xfc, 0xb9, 0x76, 0x33, 0xf5, 0xb0, 0x7f, 0x3a, 0xee, 0xab, 0x64, 0x21, 0xe7, 0xa2, 0x6d, 0x28, 0x3d, 0x78, 0xb7, 0xf2, 0x34, 0x71, 0xbe, 0xfb, 0x2f, 0x6a, 0xa5, 0xe0, 0x26, 0x63, 0xac, 0xe9, 0x19, 0x5c, 0x93, 0xd6, 0x10, 0x55, 0x9a, 0xdf, 0xb, 0x4e, 0x81, 0xc4, 0x2, 0x47, 0x88, 0xcd, 0x75, 0x30, 0xff, 0xba, 0x7c, 0x39, 0xf6, 0xb3, 0x67, 0x22, 0xed, 0xa8, 0x6e, 0x2b, 0xe4, 0xa1, 0x51, 0x14, 0xdb, 0x9e, 0x58, 0x1d, 0xd2, 0x97, 0x43, 0x6, 0xc9, 0x8c, 0x4a, 0xf, 0xc0, 0x85, 0xad, 0xe8, 0x27, 0x62, 0xa4, 0xe1, 0x2e, 0x6b, 0xbf, 0xfa, 0x35, 0x70, 0xb6, 0xf3, 0x3c, 0x79, 0x89, 0xcc, 0x3, 0x46, 0x80, 0xc5, 0xa, 0x4f, 0x9b, 0xde, 0x11, 0x54, 0x92, 0xd7, 0x18, 0x5d, 0xe5, 0xa0, 0x6f, 0x2a, 0xec, 0xa9, 0x66, 0x23, 0xf7, 0xb2, 0x7d, 0x38, 0xfe, 0xbb, 0x74, 0x31, 0xc1, 0x84, 0x4b, 0xe, 0xc8, 0x8d, 0x42, 0x7, 0xd3, 0x96, 0x59, 0x1c, 0xda, 0x9f, 0x50, 0x15}, [256]uint8{0x0, 0x46, 0x8c, 0xca, 0x5, 0x43, 0x89, 0xcf, 0xa, 0x4c, 0x86, 0xc0, 0xf, 0x49, 0x83, 0xc5, 0x14, 0x52, 0x98, 0xde, 0x11, 0x57, 0x9d, 0xdb, 0x1e, 0x58, 0x92, 0xd4, 0x1b, 0x5d, 0x97, 0xd1, 0x28, 0x6e, 0xa4, 0xe2, 0x2d, 0x6b, 0xa1, 0xe7, 0x22, 0x64, 0xae, 0xe8, 0x27, 0x61, 0xab, 0xed, 0x3c, 0x7a, 0xb0, 0xf6, 0x39, 0x7f, 0xb5, 0xf3, 0x36, 0x70, 0xba, 0xfc, 0x33, 0x75, 0xbf, 0xf9, 0x50, 0x16, 0xdc, 0x9a, 0x55, 0x13, 0xd9, 0x9f, 0x5a, 0x1c, 0xd6, 0x90, 0x5f, 0x19, 0xd3, 0x95, 0x44, 0x2, 0xc8, 0x8e, 0x41, 0x7, 0xcd, 0x8b, 0x4e, 0x8, 0xc2, 0x84, 0x4b, 0xd, 0xc7, 0x81, 0x78, 0x3e, 0xf4, 0xb2, 0x7d, 0x3b, 0xf1, 0xb7, 0x72, 0x34, 0xfe, 0xb8, 0x77, 0x31, 0xfb, 0xbd, 0x6c, 0x2a, 0xe0, 0xa6, 0x69, 0x2f, 0xe5, 0xa3, 0x66, 0x20, 0xea, 0xac, 0x63, 0x25, 0xef, 0xa9, 0xa0, 0xe6, 0x2c, 0x6a, 0xa5, 0xe3, 0x29, 0x6f, 0xaa, 0xec, 0x26, 0x60, 0xaf, 0xe9, 0x23, 0x65, 0xb4, 0xf2, 0x38, 0x7e, 0xb1, 0xf7, 0x3d, 0x7b, 0xbe, 0xf8, 0x32, 0x74, 0xbb, 0xfd, 0x37, 0x71, 0x88, 0xce, 0x4, 0x42, 0x8d, 0xcb, 0x1, 0x47, 0x82, 0xc4, 0xe, 0x48, 0x87, 0xc1, 0xb, 0x4d, 0x9c, 0xda, 0x10, 0x56, 0x99, 0xdf, 0x15, 0x53, 0x96, 0xd0, 0x1a, 0x5c, 0x93, 0xd5, 0x1f, 0x59, 0xf0, 0xb6, 0x7c, 0x3a, 0xf5, 0xb3, 0x79, 0x3f, 0xfa, 0xbc, 0x76, 0x30, 0xff, 0xb9, 0x73, 0x35, 0xe4, 0xa2, 0x68, 0x2e, 0xe1, 0xa7, 0x6d, 0x2b, 0xee, 0xa8, 0x62, 0x24, 0xeb, 0xad, 0x67, 0x21, 0xd8, 0x9e, 0x54, 0x12, 0xdd, 0x9b, 0x51, 0x17, 0xd2, 0x94, 0x5e, 0x18, 0xd7, 0x91, 0x5b, 0x1d, 0xcc, 0x8a, 0x40, 0x6, 0xc9, 0x8f, 0x45, 0x3, 0xc6, 0x80, 0x4a, 0xc, 0xc3, 0x85, 0x4f, 0x9}, [256]uint8{0x0, 0x47, 0x8e, 0xc9, 0x1, 0x46, 0x8f, 0xc8, 0x2, 0x45, 0x8c, 0xcb, 0x3, 0x44, 0x8d, 0xca, 0x4, 0x43, 0x8a, 0xcd, 0x5, 0x42, 0x8b, 0xcc, 0x6, 0x41, 0x88, 0xcf, 0x7, 0x40, 0x89, 0xce, 0x8, 0x4f, 0x86, 0xc1, 0x9, 0x4e, 0x87, 0xc0, 0xa, 0x4d, 0x84, 0xc3, 0xb, 0x4c, 0x85, 0xc2, 0xc, 0x4b, 0x82, 0xc5, 0xd, 0x4a, 0x83, 0xc4, 0xe, 0x49, 0x80, 0xc7, 0xf, 0x48, 0x81, 0xc6, 0x10, 0x57, 0x9e, 0xd9, 0x11, 0x56, 0x9f, 0xd8, 0x12, 0x55, 0x9c, 0xdb, 0x13, 0x54, 0x9d, 0xda, 0x14, 0x53, 0x9a, 0xdd, 0x15, 0x52, 0x9b, 0xdc, 0x16, 0x51, 0x98, 0xdf, 0x17, 0x50, 0x99, 0xde, 0x18, 0x5f, 0x96, 0xd1, 0x19, 0x5e, 0x97, 0xd0, 0x1a, 0x5d, 0x94, 0xd3, 0x1b, 0x5c, 0x95, 0xd2, 0x1c, 0x5b, 0x92, 0xd5, 0x1d, 0x5a, 0x93, 0xd4, 0x1e, 0x59, 0x90, 0xd7, 0x1f, 0x58, 0x91, 0xd6, 0x20, 0x67, 0xae, 0xe9, 0x21, 0x66, 0xaf, 0xe8, 0x22, 0x65, 0xac, 0xeb, 0x23, 0x64, 0xad, 0xea, 0x24, 0x63, 0xaa, 0xed, 0x25, 0x62, 0xab, 0xec, 0x26, 0x61, 0xa8, 0xef, 0x27, 0x60, 0xa9, 0xee, 0x28, 0x6f, 0xa6, 0xe1, 0x29, 0x6e, 0xa7, 0xe0, 0x2a, 0x6d, 0xa4, 0xe3, 0x2b, 0x6c, 0xa5, 0xe2, 0x2c, 0x6b, 0xa2, 0xe5, 0x2d, 0x6a, 0xa3, 0xe4, 0x2e, 0x69, 0xa0, 0xe7, 0x2f, 0x68, 0xa1, 0xe6, 0x30, 0x77, 0xbe, 0xf9, 0x31, 0x76, 0xbf, 0xf8, 0x32, 0x75, 0xbc, 0xfb, 0x33, 0x74, 0xbd, 0xfa, 0x34, 0x73, 0xba, 0xfd, 0x35, 0x72, 0xbb, 0xfc, 0x36, 0x71, 0xb8, 0xff, 0x37, 0x70, 0xb9, 0xfe, 0x38, 0x7f, 0xb6, 0xf1, 0x39, 0x7e, 0xb7, 0xf0, 0x3a, 0x7d, 0xb4, 0xf3, 0x3b, 0x7c, 0xb5, 0xf2, 0x3c, 0x7b, 0xb2, 0xf5, 0x3d, 0x7a, 0xb3, 0xf4, 0x3e, 0x79, 0xb0, 0xf7, 0x3f, 0x78, 0xb1, 0xf6}, [256]uint8{0x0, 0x48, 0x90, 0xd8, 0x3d, 0x75, 0xad, 0xe5, 0x7a, 0x32, 0xea, 0xa2, 0x47, 0xf, 0xd7, 0x9f, 0xf4, 0xbc, 0x64, 0x2c, 0xc9, 0x81, 0x59, 0x11, 0x8e, 0xc6, 0x1e, 0x56, 0xb3, 0xfb, 0x23, 0x6b, 0xf5, 0xbd, 0x65, 0x2d, 0xc8, 0x80, 0x58, 0x10, 0x8f, 0xc7, 0x1f, 0x57, 0xb2, 0xfa, 0x22, 0x6a, 0x1, 0x49, 0x91, 0xd9, 0x3c, 0x74, 0xac, 0xe4, 0x7b, 0x33, 0xeb, 0xa3, 0x46, 0xe, 0xd6, 0x9e, 0xf7, 0xbf, 0x67, 0x2f, 0xca, 0x82, 0x5a, 0x12, 0x8d, 0xc5, 0x1d, 0x55, 0xb0, 0xf8, 0x20, 0x68, 0x3, 0x4b, 0x93, 0xdb, 0x3e, 0x76, 0xae, 0xe6, 0x79, 0x31, 0xe9, 0xa1, 0x44, 0xc, 0xd4, 0x9c, 0x2, 0x4a, 0x92, 0xda, 0x3f, 0x77, 0xaf, 0xe7, 0x78, 0x30, 0xe8, 0xa0, 0x45, 0xd, 0xd5, 0x9d, 0xf6, 0xbe, 0x66, 0x2e, 0xcb, 0x83, 0x5b, 0x13, 0x8c, 0xc4, 0x1c, 0x54, 0xb1, 0xf9, 0x21, 0x69, 0xf3, 0xbb, 0x63, 0x2b, 0xce, 0x86, 0x5e, 0x16, 0x89, 0xc1, 0x19, 0x51, 0xb4, 0xfc, 0x24, 0x6c, 0x7, 0x4f, 0x97, 0xdf, 0x3a, 0x72, 0xaa, 0xe2, 0x7d, 0x35, 0xed, 0xa5, 0x40, 0x8, 0xd0, 0x98, 0x6, 0x4e, 0x96, 0xde, 0x3b, 0x73, 0xab, 0xe3, 0x7c, 0x34, 0xec, 0xa4, 0x41, 0x9, 0xd1, 0x99, 0xf2, 0xba, 0x62, 0x2a, 0xcf, 0x87, 0x5f, 0x17, 0x88, 0xc0, 0x18, 0x50, 0xb5, 0xfd, 0x25, 0x6d, 0x4, 0x4c, 0x94, 0xdc, 0x39, 0x71, 0xa9, 0xe1, 0x7e, 0x36, 0xee, 0xa6, 0x43, 0xb, 0xd3, 0x9b, 0xf0, 0xb8, 0x60, 0x28, 0xcd, 0x85, 0x5d, 0x15, 0x8a, 0xc2, 0x1a, 0x52, 0xb7, 0xff, 0x27, 0x6f, 0xf1, 0xb9, 0x61, 0x29, 0xcc, 0x84, 0x5c, 0x14, 0x8b, 0xc3, 0x1b, 0x53, 0xb6, 0xfe, 0x26, 0x6e, 0x5, 0x4d, 0x95, 0xdd, 0x38, 0x70, 0xa8, 0xe0, 0x7f, 0x37, 0xef, 0xa7, 0x42, 0xa, 0xd2, 0x9a}, [256]uint8{0x0, 0x49, 0x92, 0xdb, 0x39, 0x70, 0xab, 0xe2, 0x72, 0x3b, 0xe0, 0xa9, 0x4b, 0x2, 0xd9, 0x90, 0xe4, 0xad, 0x76, 0x3f, 0xdd, 0x94, 0x4f, 0x6, 0x96, 0xdf, 0x4, 0x4d, 0xaf, 0xe6, 0x3d, 0x74, 0xd5, 0x9c, 0x47, 0xe, 0xec, 0xa5, 0x7e, 0x37, 0xa7, 0xee, 0x35, 0x7c, 0x9e, 0xd7, 0xc, 0x45, 0x31, 0x78, 0xa3, 0xea, 0x8, 0x41, 0x9a, 0xd3, 0x43, 0xa, 0xd1, 0x98, 0x7a, 0x33, 0xe8, 0xa1, 0xb7, 0xfe, 0x25, 0x6c, 0x8e, 0xc7, 0x1c, 0x55, 0xc5, 0x8c, 0x57, 0x1e, 0xfc, 0xb5, 0x6e, 0x27, 0x53, 0x1a, 0xc1, 0x88, 0x6a, 0x23, 0xf8, 0xb1, 0x21, 0x68, 0xb3, 0xfa, 0x18, 0x51, 0x8a, 0xc3, 0x62, 0x2b, 0xf0, 0xb9, 0x5b, 0x12, 0xc9, 0x80, 0x10, 0x59, 0x82, 0xcb, 0x29, 0x60, 0xbb, 0xf2, 0x86, 0xcf, 0x14, 0x5d, 0xbf, 0xf6, 0x2d, 0x64, 0xf4, 0xbd, 0x66, 0x2f, 0xcd, 0x84, 0x5f, 0x16, 0x73, 0x3a, 0xe1, 0xa8, 0x4a, 0x3, 0xd8, 0x91, 0x1, 0x48, 0x93, 0xda, 0x38, 0x71, 0xaa, 0xe3, 0x97, 0xde, 0x5, 0x4c, 0xae, 0xe7, 0x3c, 0x75, 0xe5, 0xac, 0x77, 0x3e, 0xdc, 0x95, 0x4e, 0x7, 0xa6, 0xef, 0x34, 0x7d, 0x9f, 0xd6, 0xd, 0x44, 0xd4, 0x9d, 0x46, 0xf, 0xed, 0xa4, 0x7f, 0x36, 0x42, 0xb, 0xd0, 0x99, 0x7b, 0x32, 0xe9, 0xa0, 0x30, 0x79, 0xa2, 0xeb, 0x9, 0x40, 0x9b, 0xd2, 0xc4, 0x8d, 0x56, 0x1f, 0xfd, 0xb4, 0x6f, 0x26, 0xb6, 0xff, 0x24, 0x6d, 0x8f, 0xc6, 0x1d, 0x54, 0x20, 0x69, 0xb2, 0xfb, 0x19, 0x50, 0x8b, 0xc2, 0x52, 0x1b, 0xc0, 0x89, 0x6b, 0x22, 0xf9, 0xb0, 0x11, 0x58, 0x83, 0xca, 0x28, 0x61, 0xba, 0xf3, 0x63, 0x2a, 0xf1, 0xb8, 0x5a, 0x13, 0xc8, 0x81, 0xf5, 0xbc, 0x67, 0x2e, 0xcc, 0x85, 0x5e, 0x17, 0x87, 0xce, 0x15, 0x5c, 0xbe, 0xf7, 0x2c, 0x65}, [256]uint8{0x0, 0x4a, 0x94, 0xde, 0x35, 0x7f, 0xa1, 0xeb, 0x6a, 0x20, 0xfe, 0xb4, 0x5f, 0x15, 0xcb, 0x81, 0xd4, 0x9e, 0x40, 0xa, 0xe1, 0xab, 0x75, 0x3f, 0xbe, 0xf4, 0x2a, 0x60, 0x8b, 0xc1, 0x1f, 0x55, 0xb5, 0xff, 0x21, 0x6b, 0x80, 0xca, 0x14, 0x5e, 0xdf, 0x95, 0x4b, 0x1, 0xea, 0xa0, 0x7e, 0x34, 0x61, 0x2b, 0xf5, 0xbf, 0x54, 0x1e, 0xc0, 0x8a, 0xb, 0x41, 0x9f, 0xd5, 0x3e, 0x74, 0xaa, 0xe0, 0x77, 0x3d, 0xe3, 0xa9, 0x42, 0x8, 0xd6, 0x9c, 0x1d, 0x57, 0x89, 0xc3, 0x28, 0x62, 0xbc, 0xf6, 0xa3, 0xe9, 0x37, 0x7d, 0x96, 0xdc, 0x2, 0x48, 0xc9, 0x83, 0x5d, 0x17, 0xfc, 0xb6, 0x68, 0x22, 0xc2, 0x88, 0x56, 0x1c, 0xf7, 0xbd, 0x63, 0x29, 0xa8, 0xe2, 0x3c, 0x76, 0x9d, 0xd7, 0x9, 0x43, 0x16, 0x5c, 0x82, 0xc8, 0x23, 0x69, 0xb7, 0xfd, 0x7c, 0x36, 0xe8, 0xa2, 0x49, 0x3, 0xdd, 0x97, 0xee, 0xa4, 0x7a, 0x30, 0xdb, 0x91, 0x4f, 0x5, 0x84, 0xce, 0x10, 0x5a, 0xb1, 0xfb, 0x25, 0x6f, 0x3a, 0x70, 0xae, 0xe4, 0xf, 0x45, 0x9b, 0xd1, 0x50, 0x1a, 0xc4, 0x8e, 0x65, 0x2f, 0xf1, 0xbb, 0x5b, 0x11, 0xcf, 0x85, 0x6e, 0x24, 0xfa, 0xb0, 0x31, 0x7b, 0xa5, 0xef, 0x4, 0x4e, 0x90, 0xda, 0x8f, 0xc5, 0x1b, 0x51, 0xba, 0xf0, 0x2e, 0x64, 0xe5, 0xaf, 0x71, 0x3b, 0xd0, 0x9a, 0x44, 0xe, 0x99, 0xd3, 0xd, 0x47, 0xac, 0xe6, 0x38, 0x72, 0xf3, 0xb9, 0x67, 0x2d, 0xc6, 0x8c, 0x52, 0x18, 0x4d, 0x7, 0xd9, 0x93, 0x78, 0x32, 0xec, 0xa6, 0x27, 0x6d, 0xb3, 0xf9, 0x12, 0x58, 0x86, 0xcc, 0x2c, 0x66, 0xb8, 0xf2, 0x19, 0x53, 0x8d, 0xc7, 0x46, 0xc, 0xd2, 0x98, 0x73, 0x39, 0xe7, 0xad, 0xf8, 0xb2, 0x6c, 0x26, 0xcd, 0x87, 0x59, 0x13, 0x92, 0xd8, 0x6, 0x4c, 0xa7, 0xed, 0x33, 0x79}, [256]uint8{0x0, 0x4b, 0x96, 0xdd, 0x31, 0x7a, 0xa7, 0xec, 0x62, 0x29, 0xf4, 0xbf, 0x53, 0x18, 0xc5, 0x8e, 0xc4, 0x8f, 0x52, 0x19, 0xf5, 0xbe, 0x63, 0x28, 0xa6, 0xed, 0x30, 0x7b, 0x97, 0xdc, 0x1, 0x4a, 0x95, 0xde, 0x3, 0x48, 0xa4, 0xef, 0x32, 0x79, 0xf7, 0xbc, 0x61, 0x2a, 0xc6, 0x8d, 0x50, 0x1b, 0x51, 0x1a, 0xc7, 0x8c, 0x60, 0x2b, 0xf6, 0xbd, 0x33, 0x78, 0xa5, 0xee, 0x2, 0x49, 0x94, 0xdf, 0x37, 0x7c, 0xa1, 0xea, 0x6, 0x4d, 0x90, 0xdb, 0x55, 0x1e, 0xc3, 0x88, 0x64, 0x2f, 0xf2, 0xb9, 0xf3, 0xb8, 0x65, 0x2e, 0xc2, 0x89, 0x54, 0x1f, 0x91, 0xda, 0x7, 0x4c, 0xa0, 0xeb, 0x36, 0x7d, 0xa2, 0xe9, 0x34, 0x7f, 0x93, 0xd8, 0x5, 0x4e, 0xc0, 0x8b, 0x56, 0x1d, 0xf1, 0xba, 0x67, 0x2c, 0x66, 0x2d, 0xf0, 0xbb, 0x57, 0x1c, 0xc1, 0x8a, 0x4, 0x4f, 0x92, 0xd9, 0x35, 0x7e, 0xa3, 0xe8, 0x6e, 0x25, 0xf8, 0xb3, 0x5f, 0x14, 0xc9, 0x82, 0xc, 0x47, 0x9a, 0xd1, 0x3d, 0x76, 0xab, 0xe0, 0xaa, 0xe1, 0x3c, 0x77, 0x9b, 0xd0, 0xd, 0x46, 0xc8, 0x83, 0x5e, 0x15, 0xf9, 0xb2, 0x6f, 0x24, 0xfb, 0xb0, 0x6d, 0x26, 0xca, 0x81, 0x5c, 0x17, 0x99, 0xd2, 0xf, 0x44, 0xa8, 0xe3, 0x3e, 0x75, 0x3f, 0x74, 0xa9, 0xe2, 0xe, 0x45, 0x98, 0xd3, 0x5d, 0x16, 0xcb, 0x80, 0x6c, 0x27, 0xfa, 0xb1, 0x59, 0x12, 0xcf, 0x84, 0x68, 0x23, 0xfe, 0xb5, 0x3b, 0x70, 0xad, 0xe6, 0xa, 0x41, 0x9c, 0xd7, 0x9d, 0xd6, 0xb, 0x40, 0xac, 0xe7, 0x3a, 0x71, 0xff, 0xb4, 0x69, 0x22, 0xce, 0x85, 0x58, 0x13, 0xcc, 0x87, 0x5a, 0x11, 0xfd, 0xb6, 0x6b, 0x20, 0xae, 0xe5, 0x38, 0x73, 0x9f, 0xd4, 0x9, 0x42, 0x8, 0x43, 0x9e, 0xd5, 0x39, 0x72, 0xaf, 0xe4, 0x6a, 0x21, 0xfc, 0xb7, 0x5b, 0x10, 0xcd, 0x86}, [256]uint8{0x0, 0x4c, 0x98, 0xd4, 0x2d, 0x61, 0xb5, 0xf9, 0x5a, 0x16, 0xc2, 0x8e, 0x77, 0x3b, 0xef, 0xa3, 0xb4, 0xf8, 0x2c, 0x60, 0x99, 0xd5, 0x1, 0x4d, 0xee, 0xa2, 0x76, 0x3a, 0xc3, 0x8f, 0x5b, 0x17, 0x75, 0x39, 0xed, 0xa1, 0x58, 0x14, 0xc0, 0x8c, 0x2f, 0x63, 0xb7, 0xfb, 0x2, 0x4e, 0x9a, 0xd6, 0xc1, 0x8d, 0x59, 0x15, 0xec, 0xa0, 0x74, 0x38, 0x9b, 0xd7, 0x3, 0x4f, 0xb6, 0xfa, 0x2e, 0x62, 0xea, 0xa6, 0x72, 0x3e, 0xc7, 0x8b, 0x5f, 0x13, 0xb0, 0xfc, 0x28, 0x64, 0x9d, 0xd1, 0x5, 0x49, 0x5e, 0x12, 0xc6, 0x8a, 0x73, 0x3f, 0xeb, 0xa7, 0x4, 0x48, 0x9c, 0xd0, 0x29, 0x65, 0xb1, 0xfd, 0x9f, 0xd3, 0x7, 0x4b, 0xb2, 0xfe, 0x2a, 0x66, 0xc5, 0x89, 0x5d, 0x11, 0xe8, 0xa4, 0x70, 0x3c, 0x2b, 0x67, 0xb3, 0xff, 0x6, 0x4a, 0x9e, 0xd2, 0x71, 0x3d, 0xe9, 0xa5, 0x5c, 0x10, 0xc4, 0x88, 0xc9, 0x85, 0x51, 0x1d, 0xe4, 0xa8, 0x7c, 0x30, 0x93, 0xdf, 0xb, 0x47, 0xbe, 0xf2, 0x26, 0x6a, 0x7d, 0x31, 0xe5, 0xa9, 0x50, 0x1c, 0xc8, 0x84, 0x27, 0x6b, 0xbf, 0xf3, 0xa, 0x46, 0x92, 0xde, 0xbc, 0xf0, 0x24, 0x68, 0x91, 0xdd, 0x9, 0x45, 0xe6, 0xaa, 0x7e, 0x32, 0xcb, 0x87, 0x53, 0x1f, 0x8, 0x44, 0x90, 0xdc, 0x25, 0x69, 0xbd, 0xf1, 0x52, 0x1e, 0xca, 0x86, 0x7f, 0x33, 0xe7, 0xab, 0x23, 0x6f, 0xbb, 0xf7, 0xe, 0x42, 0x96, 0xda, 0x79, 0x35, 0xe1, 0xad, 0x54, 0x18, 0xcc, 0x80, 0x97, 0xdb, 0xf, 0x43, 0xba, 0xf6, 0x22, 0x6e, 0xcd, 0x81, 0x55, 0x19, 0xe0, 0xac, 0x78, 0x34, 0x56, 0x1a, 0xce, 0x82, 0x7b, 0x37, 0xe3, 0xaf, 0xc, 0x40, 0x94, 0xd8, 0x21, 0x6d, 0xb9, 0xf5, 0xe2, 0xae, 0x7a, 0x36, 0xcf, 0x83, 0x57, 0x1b, 0xb8, 0xf4, 0x20, 0x6c, 0x95, 0xd9, 0xd, 0x41}, [256]uint8{0x0, 0x4d, 0x9a, 0xd7, 0x29, 0x64, 0xb3, 0xfe, 0x52, 0x1f, 0xc8, 0x85, 0x7b, 0x36, 0xe1, 0xac, 0xa4, 0xe9, 0x3e, 0x73, 0x8d, 0xc0, 0x17, 0x5a, 0xf6, 0xbb, 0x6c, 0x21, 0xdf, 0x92, 0x45, 0x8, 0x55, 0x18, 0xcf, 0x82, 0x7c, 0x31, 0xe6, 0xab, 0x7, 0x4a, 0x9d, 0xd0, 0x2e, 0x63, 0xb4, 0xf9, 0xf1, 0xbc, 0x6b, 0x26, 0xd8, 0x95, 0x42, 0xf, 0xa3, 0xee, 0x39, 0x74, 0x8a, 0xc7, 0x10, 0x5d, 0xaa, 0xe7, 0x30, 0x7d, 0x83, 0xce, 0x19, 0x54, 0xf8, 0xb5, 0x62, 0x2f, 0xd1, 0x9c, 0x4b, 0x6, 0xe, 0x43, 0x94, 0xd9, 0x27, 0x6a, 0xbd, 0xf0, 0x5c, 0x11, 0xc6, 0x8b, 0x75, 0x38, 0xef, 0xa2, 0xff, 0xb2, 0x65, 0x28, 0xd6, 0x9b, 0x4c, 0x1, 0xad, 0xe0, 0x37, 0x7a, 0x84, 0xc9, 0x1e, 0x53, 0x5b, 0x16, 0xc1, 0x8c, 0x72, 0x3f, 0xe8, 0xa5, 0x9, 0x44, 0x93, 0xde, 0x20, 0x6d, 0xba, 0xf7, 0x49, 0x4, 0xd3, 0x9e, 0x60, 0x2d, 0xfa, 0xb7, 0x1b, 0x56, 0x81, 0xcc, 0x32, 0x7f, 0xa8, 0xe5, 0xed, 0xa0, 0x77, 0x3a, 0xc4, 0x89, 0x5e, 0x13, 0xbf, 0xf2, 0x25, 0x68, 0x96, 0xdb, 0xc, 0x41, 0x1c, 0x51, 0x86, 0xcb, 0x35, 0x78, 0xaf, 0xe2, 0x4e, 0x3, 0xd4, 0x99, 0x67, 0x2a, 0xfd, 0xb0, 0xb8, 0xf5, 0x22, 0x6f, 0x91, 0xdc, 0xb, 0x46, 0xea, 0xa7, 0x70, 0x3d, 0xc3, 0x8e, 0x59, 0x14, 0xe3, 0xae, 0x79, 0x34, 0xca, 0x87, 0x50, 0x1d, 0xb1, 0xfc, 0x2b, 0x66, 0x98, 0xd5, 0x2, 0x4f, 0x47, 0xa, 0xdd, 0x90, 0x6e, 0x23, 0xf4, 0xb9, 0x15, 0x58, 0x8f, 0xc2, 0x3c, 0x71, 0xa6, 0xeb, 0xb6, 0xfb, 0x2c, 0x61, 0x9f, 0xd2, 0x5, 0x48, 0xe4, 0xa9, 0x7e, 0x33, 0xcd, 0x80, 0x57, 0x1a, 0x12, 0x5f, 0x88, 0xc5, 0x3b, 0x76, 0xa1, 0xec, 0x40, 0xd, 0xda, 0x97, 0x69, 0x24, 0xf3, 0xbe}, [256]uint8{0x0, 0x4e, 0x9c, 0xd2, 0x25, 0x6b, 0xb9, 0xf7, 0x4a, 0x4, 0xd6, 0x98, 0x6f, 0x21, 0xf3, 0xbd, 0x94, 0xda, 0x8, 0x46, 0xb1, 0xff, 0x2d, 0x63, 0xde, 0x90, 0x42, 0xc, 0xfb, 0xb5, 0x67, 0x29, 0x35, 0x7b, 0xa9, 0xe7, 0x10, 0x5e, 0x8c, 0xc2, 0x7f, 0x31, 0xe3, 0xad, 0x5a, 0x14, 0xc6, 0x88, 0xa1, 0xef, 0x3d, 0x73, 0x84, 0xca, 0x18, 0x56, 0xeb, 0xa5, 0x77, 0x39, 0xce, 0x80, 0x52, 0x1c, 0x6a, 0x24, 0xf6, 0xb8, 0x4f, 0x1, 0xd3, 0x9d, 0x20, 0x6e, 0xbc, 0xf2, 0x5, 0x4b, 0x99, 0xd7, 0xfe, 0xb0, 0x62, 0x2c, 0xdb, 0x95, 0x47, 0x9, 0xb4, 0xfa, 0x28, 0x66, 0x91, 0xdf, 0xd, 0x43, 0x5f, 0x11, 0xc3, 0x8d, 0x7a, 0x34, 0xe6, 0xa8, 0x15, 0x5b, 0x89, 0xc7, 0x30, 0x7e, 0xac, 0xe2, 0xcb, 0x85, 0x57, 0x19, 0xee, 0xa0, 0x72, 0x3c, 0x81, 0xcf, 0x1d, 0x53, 0xa4, 0xea, 0x38, 0x76, 0xd4, 0x9a, 0x48, 0x6, 0xf1, 0xbf, 0x6d, 0x23, 0x9e, 0xd0, 0x2, 0x4c, 0xbb, 0xf5, 0x27, 0x69, 0x40, 0xe, 0xdc, 0x92, 0x65, 0x2b, 0xf9, 0xb7, 0xa, 0x44, 0x96, 0xd8, 0x2f, 0x61, 0xb3, 0xfd, 0xe1, 0xaf, 0x7d, 0x33, 0xc4, 0x8a, 0x58, 0x16, 0xab, 0xe5, 0x37, 0x79, 0x8e, 0xc0, 0x12, 0x5c, 0x75, 0x3b, 0xe9, 0xa7, 0x50, 0x1e, 0xcc, 0x82, 0x3f, 0x71, 0xa3, 0xed, 0x1a, 0x54, 0x86, 0xc8, 0xbe, 0xf0, 0x22, 0x6c, 0x9b, 0xd5, 0x7, 0x49, 0xf4, 0xba, 0x68, 0x26, 0xd1, 0x9f, 0x4d, 0x3, 0x2a, 0x64, 0xb6, 0xf8, 0xf, 0x41, 0x93, 0xdd, 0x60, 0x2e, 0xfc, 0xb2, 0x45, 0xb, 0xd9, 0x97, 0x8b, 0xc5, 0x17, 0x59, 0xae, 0xe0, 0x32, 0x7c, 0xc1, 0x8f, 0x5d, 0x13, 0xe4, 0xaa, 0x78, 0x36, 0x1f, 0x51, 0x83, 0xcd, 0x3a, 0x74, 0xa6, 0xe8, 0x55, 0x1b, 0xc9, 0x87, 0x70, 0x3e, 0xec, 0xa2}, [256]uint8{0x0, 0x4f, 0x9e, 0xd1, 0x21, 0x6e, 0xbf, 0xf0, 0x42, 0xd, 0xdc, 0x93, 0x63, 0x2c, 0xfd, 0xb2, 0x84, 0xcb, 0x1a, 0x55, 0xa5, 0xea, 0x3b, 0x74, 0xc6, 0x89, 0x58, 0x17, 0xe7, 0xa8, 0x79, 0x36, 0x15, 0x5a, 0x8b, 0xc4, 0x34, 0x7b, 0xaa, 0xe5, 0x57, 0x18, 0xc9, 0x86, 0x76, 0x39, 0xe8, 0xa7, 0x91, 0xde, 0xf, 0x40, 0xb0, 0xff, 0x2e, 0x61, 0xd3, 0x9c, 0x4d, 0x2, 0xf2, 0xbd, 0x6c, 0x23, 0x2a, 0x65, 0xb4, 0xfb, 0xb, 0x44, 0x95, 0xda, 0x68, 0x27, 0xf6, 0xb9, 0x49, 0x6, 0xd7, 0x98, 0xae, 0xe1, 0x30, 0x7f, 0x8f, 0xc0, 0x11, 0x5e, 0xec, 0xa3, 0x72, 0x3d, 0xcd, 0x82, 0x53, 0x1c, 0x3f, 0x70, 0xa1, 0xee, 0x1e, 0x51, 0x80, 0xcf, 0x7d, 0x32, 0xe3, 0xac, 0x5c, 0x13, 0xc2, 0x8d, 0xbb, 0xf4, 0x25, 0x6a, 0x9a, 0xd5, 0x4, 0x4b, 0xf9, 0xb6, 0x67, 0x28, 0xd8, 0x97, 0x46, 0x9, 0x54, 0x1b, 0xca, 0x85, 0x75, 0x3a, 0xeb, 0xa4, 0x16, 0x59, 0x88, 0xc7, 0x37, 0x78, 0xa9, 0xe6, 0xd0, 0x9f, 0x4e, 0x1, 0xf1, 0xbe, 0x6f, 0x20, 0x92, 0xdd, 0xc, 0x43, 0xb3, 0xfc, 0x2d, 0x62, 0x41, 0xe, 0xdf, 0x90, 0x60, 0x2f, 0xfe, 0xb1, 0x3, 0x4c, 0x9d, 0xd2, 0x22, 0x6d, 0xbc, 0xf3, 0xc5, 0x8a, 0x5b, 0x14, 0xe4, 0xab, 0x7a, 0x35, 0x87, 0xc8, 0x19, 0x56, 0xa6, 0xe9, 0x38, 0x77, 0x7e, 0x31, 0xe0, 0xaf, 0x5f, 0x10, 0xc1, 0x8e, 0x3c, 0x73, 0xa2, 0xed, 0x1d, 0x52, 0x83, 0xcc, 0xfa, 0xb5, 0x64, 0x2b, 0xdb, 0x94, 0x45, 0xa, 0xb8, 0xf7, 0x26, 0x69, 0x99, 0xd6, 0x7, 0x48, 0x6b, 0x24, 0xf5, 0xba, 0x4a, 0x5, 0xd4, 0x9b, 0x29, 0x66, 0xb7, 0xf8, 0x8, 0x47, 0x96, 0xd9, 0xef, 0xa0, 0x71, 0x3e, 0xce, 0x81, 0x50, 0x1f, 0xad, 0xe2, 0x33, 0x7c, 0x8c, 0xc3, 0x12, 0x5d}, [256]uint8{0x0, 0x50, 0xa0, 0xf0, 0x5d, 0xd, 0xfd, 0xad, 0xba, 0xea, 0x1a, 0x4a, 0xe7, 0xb7, 0x47, 0x17, 0x69, 0x39, 0xc9, 0x99, 0x34, 0x64, 0x94, 0xc4, 0xd3, 0x83, 0x73, 0x23, 0x8e, 0xde, 0x2e, 0x7e, 0xd2, 0x82, 0x72, 0x22, 0x8f, 0xdf, 0x2f, 0x7f, 0x68, 0x38, 0xc8, 0x98, 0x35, 0x65, 0x95, 0xc5, 0xbb, 0xeb, 0x1b, 0x4b, 0xe6, 0xb6, 0x46, 0x16, 0x1, 0x51, 0xa1, 0xf1, 0x5c, 0xc, 0xfc, 0xac, 0xb9, 0xe9, 0x19, 0x49, 0xe4, 0xb4, 0x44, 0x14, 0x3, 0x53, 0xa3, 0xf3, 0x5e, 0xe, 0xfe, 0xae, 0xd0, 0x80, 0x70, 0x20, 0x8d, 0xdd, 0x2d, 0x7d, 0x6a, 0x3a, 0xca, 0x9a, 0x37, 0x67, 0x97, 0xc7, 0x6b, 0x3b, 0xcb, 0x9b, 0x36, 0x66, 0x96, 0xc6, 0xd1, 0x81, 0x71, 0x21, 0x8c, 0xdc, 0x2c, 0x7c, 0x2, 0x52, 0xa2, 0xf2, 0x5f, 0xf, 0xff, 0xaf, 0xb8, 0xe8, 0x18, 0x48, 0xe5, 0xb5, 0x45, 0x15, 0x6f, 0x3f, 0xcf, 0x9f, 0x32, 0x62, 0x92, 0xc2, 0xd5, 0x85, 0x75, 0x25, 0x88, 0xd8, 0x28, 0x78, 0x6, 0x56, 0xa6, 0xf6, 0x5b, 0xb, 0xfb, 0xab, 0xbc, 0xec, 0x1c, 0x4c, 0xe1, 0xb1, 0x41, 0x11, 0xbd, 0xed, 0x1d, 0x4d, 0xe0, 0xb0, 0x40, 0x10, 0x7, 0x57, 0xa7, 0xf7, 0x5a, 0xa, 0xfa, 0xaa, 0xd4, 0x84, 0x74, 0x24, 0x89, 0xd9, 0x29, 0x79, 0x6e, 0x3e, 0xce, 0x9e, 0x33, 0x63, 0x93, 0xc3, 0xd6, 0x86, 0x76, 0x26, 0x8b, 0xdb, 0x2b, 0x7b, 0x6c, 0x3c, 0xcc, 0x9c, 0x31, 0x61, 0x91, 0xc1, 0xbf, 0xef, 0x1f, 0x4f, 0xe2, 0xb2, 0x42, 0x12, 0x5, 0x55, 0xa5, 0xf5, 0x58, 0x8, 0xf8, 0xa8, 0x4, 0x54, 0xa4, 0xf4, 0x59, 0x9, 0xf9, 0xa9, 0xbe, 0xee, 0x1e, 0x4e, 0xe3, 0xb3, 0x43, 0x13, 0x6d, 0x3d, 0xcd, 0x9d, 0x30, 0x60, 0x90, 0xc0, 0xd7, 0x87, 0x77, 0x27, 0x8a, 0xda, 0x2a, 0x7a}, [256]uint8{0x0, 0x51, 0xa2, 0xf3, 0x59, 0x8, 0xfb, 0xaa, 0xb2, 0xe3, 0x10, 0x41, 0xeb, 0xba, 0x49, 0x18, 0x79, 0x28, 0xdb, 0x8a, 0x20, 0x71, 0x82, 0xd3, 0xcb, 0x9a, 0x69, 0x38, 0x92, 0xc3, 0x30, 0x61, 0xf2, 0xa3, 0x50, 0x1, 0xab, 0xfa, 0x9, 0x58, 0x40, 0x11, 0xe2, 0xb3, 0x19, 0x48, 0xbb, 0xea, 0x8b, 0xda, 0x29, 0x78, 0xd2, 0x83, 0x70, 0x21, 0x39, 0x68, 0x9b, 0xca, 0x60, 0x31, 0xc2, 0x93, 0xf9, 0xa8, 0x5b, 0xa, 0xa0, 0xf1, 0x2, 0x53, 0x4b, 0x1a, 0xe9, 0xb8, 0x12, 0x43, 0xb0, 0xe1, 0x80, 0xd1, 0x22, 0x73, 0xd9, 0x88, 0x7b, 0x2a, 0x32, 0x63, 0x90, 0xc1, 0x6b, 0x3a, 0xc9, 0x98, 0xb, 0x5a, 0xa9, 0xf8, 0x52, 0x3, 0xf0, 0xa1, 0xb9, 0xe8, 0x1b, 0x4a, 0xe0, 0xb1, 0x42, 0x13, 0x72, 0x23, 0xd0, 0x81, 0x2b, 0x7a, 0x89, 0xd8, 0xc0, 0x91, 0x62, 0x33, 0x99, 0xc8, 0x3b, 0x6a, 0xef, 0xbe, 0x4d, 0x1c, 0xb6, 0xe7, 0x14, 0x45, 0x5d, 0xc, 0xff, 0xae, 0x4, 0x55, 0xa6, 0xf7, 0x96, 0xc7, 0x34, 0x65, 0xcf, 0x9e, 0x6d, 0x3c, 0x24, 0x75, 0x86, 0xd7, 0x7d, 0x2c, 0xdf, 0x8e, 0x1d, 0x4c, 0xbf, 0xee, 0x44, 0x15, 0xe6, 0xb7, 0xaf, 0xfe, 0xd, 0x5c, 0xf6, 0xa7, 0x54, 0x5, 0x64, 0x35, 0xc6, 0x97, 0x3d, 0x6c, 0x9f, 0xce, 0xd6, 0x87, 0x74, 0x25, 0x8f, 0xde, 0x2d, 0x7c, 0x16, 0x47, 0xb4, 0xe5, 0x4f, 0x1e, 0xed, 0xbc, 0xa4, 0xf5, 0x6, 0x57, 0xfd, 0xac, 0x5f, 0xe, 0x6f, 0x3e, 0xcd, 0x9c, 0x36, 0x67, 0x94, 0xc5, 0xdd, 0x8c, 0x7f, 0x2e, 0x84, 0xd5, 0x26, 0x77, 0xe4, 0xb5, 0x46, 0x17, 0xbd, 0xec, 0x1f, 0x4e, 0x56, 0x7, 0xf4, 0xa5, 0xf, 0x5e, 0xad, 0xfc, 0x9d, 0xcc, 0x3f, 0x6e, 0xc4, 0x95, 0x66, 0x37, 0x2f, 0x7e, 0x8d, 0xdc, 0x76, 0x27, 0xd4, 0x85}, [256]uint8{0x0, 0x52, 0xa4, 0xf6, 0x55, 0x7, 0xf1, 0xa3, 0xaa, 0xf8, 0xe, 0x5c, 0xff, 0xad, 0x5b, 0x9, 0x49, 0x1b, 0xed, 0xbf, 0x1c, 0x4e, 0xb8, 0xea, 0xe3, 0xb1, 0x47, 0x15, 0xb6, 0xe4, 0x12, 0x40, 0x92, 0xc0, 0x36, 0x64, 0xc7, 0x95, 0x63, 0x31, 0x38, 0x6a, 0x9c, 0xce, 0x6d, 0x3f, 0xc9, 0x9b, 0xdb, 0x89, 0x7f, 0x2d, 0x8e, 0xdc, 0x2a, 0x78, 0x71, 0x23, 0xd5, 0x87, 0x24, 0x76, 0x80, 0xd2, 0x39, 0x6b, 0x9d, 0xcf, 0x6c, 0x3e, 0xc8, 0x9a, 0x93, 0xc1, 0x37, 0x65, 0xc6, 0x94, 0x62, 0x30, 0x70, 0x22, 0xd4, 0x86, 0x25, 0x77, 0x81, 0xd3, 0xda, 0x88, 0x7e, 0x2c, 0x8f, 0xdd, 0x2b, 0x79, 0xab, 0xf9, 0xf, 0x5d, 0xfe, 0xac, 0x5a, 0x8, 0x1, 0x53, 0xa5, 0xf7, 0x54, 0x6, 0xf0, 0xa2, 0xe2, 0xb0, 0x46, 0x14, 0xb7, 0xe5, 0x13, 0x41, 0x48, 0x1a, 0xec, 0xbe, 0x1d, 0x4f, 0xb9, 0xeb, 0x72, 0x20, 0xd6, 0x84, 0x27, 0x75, 0x83, 0xd1, 0xd8, 0x8a, 0x7c, 0x2e, 0x8d, 0xdf, 0x29, 0x7b, 0x3b, 0x69, 0x9f, 0xcd, 0x6e, 0x3c, 0xca, 0x98, 0x91, 0xc3, 0x35, 0x67, 0xc4, 0x96, 0x60, 0x32, 0xe0, 0xb2, 0x44, 0x16, 0xb5, 0xe7, 0x11, 0x43, 0x4a, 0x18, 0xee, 0xbc, 0x1f, 0x4d, 0xbb, 0xe9, 0xa9, 0xfb, 0xd, 0x5f, 0xfc, 0xae, 0x58, 0xa, 0x3, 0x51, 0xa7, 0xf5, 0x56, 0x4, 0xf2, 0xa0, 0x4b, 0x19, 0xef, 0xbd, 0x1e, 0x4c, 0xba, 0xe8, 0xe1, 0xb3, 0x45, 0x17, 0xb4, 0xe6, 0x10, 0x42, 0x2, 0x50, 0xa6, 0xf4, 0x57, 0x5, 0xf3, 0xa1, 0xa8, 0xfa, 0xc, 0x5e, 0xfd, 0xaf, 0x59, 0xb, 0xd9, 0x8b, 0x7d, 0x2f, 0x8c, 0xde, 0x28, 0x7a, 0x73, 0x21, 0xd7, 0x85, 0x26, 0x74, 0x82, 0xd0, 0x90, 0xc2, 0x34, 0x66, 0xc5, 0x97, 0x61, 0x33, 0x3a, 0x68, 0x9e, 0xcc, 0x6f, 0x3d, 0xcb, 0x99}, [256]uint8{0x0, 0x53, 0xa6, 0xf5, 0x51, 0x2, 0xf7, 0xa4, 0xa2, 0xf1, 0x4, 0x57, 0xf3, 0xa0, 0x55, 0x6, 0x59, 0xa, 0xff, 0xac, 0x8, 0x5b, 0xae, 0xfd, 0xfb, 0xa8, 0x5d, 0xe, 0xaa, 0xf9, 0xc, 0x5f, 0xb2, 0xe1, 0x14, 0x47, 0xe3, 0xb0, 0x45, 0x16, 0x10, 0x43, 0xb6, 0xe5, 0x41, 0x12, 0xe7, 0xb4, 0xeb, 0xb8, 0x4d, 0x1e, 0xba, 0xe9, 0x1c, 0x4f, 0x49, 0x1a, 0xef, 0xbc, 0x18, 0x4b, 0xbe, 0xed, 0x79, 0x2a, 0xdf, 0x8c, 0x28, 0x7b, 0x8e, 0xdd, 0xdb, 0x88, 0x7d, 0x2e, 0x8a, 0xd9, 0x2c, 0x7f, 0x20, 0x73, 0x86, 0xd5, 0x71, 0x22, 0xd7, 0x84, 0x82, 0xd1, 0x24, 0x77, 0xd3, 0x80, 0x75, 0x26, 0xcb, 0x98, 0x6d, 0x3e, 0x9a, 0xc9, 0x3c, 0x6f, 0x69, 0x3a, 0xcf, 0x9c, 0x38, 0x6b, 0x9e, 0xcd, 0x92, 0xc1, 0x34, 0x67, 0xc3, 0x90, 0x65, 0x36, 0x30, 0x63, 0x96, 0xc5, 0x61, 0x32, 0xc7, 0x94, 0xf2, 0xa1, 0x54, 0x7, 0xa3, 0xf0, 0x5, 0x56, 0x50, 0x3, 0xf6, 0xa5, 0x1, 0x52, 0xa7, 0xf4, 0xab, 0xf8, 0xd, 0x5e, 0xfa, 0xa9, 0x5c, 0xf, 0x9, 0x5a, 0xaf, 0xfc, 0x58, 0xb, 0xfe, 0xad, 0x40, 0x13, 0xe6, 0xb5, 0x11, 0x42, 0xb7, 0xe4, 0xe2, 0xb1, 0x44, 0x17, 0xb3, 0xe0, 0x15, 0x46, 0x19, 0x4a, 0xbf, 0xec, 0x48, 0x1b, 0xee, 0xbd, 0xbb, 0xe8, 0x1d, 0x4e, 0xea, 0xb9, 0x4c, 0x1f, 0x8b, 0xd8, 0x2d, 0x7e, 0xda, 0x89, 0x7c, 0x2f, 0x29, 0x7a, 0x8f, 0xdc, 0x78, 0x2b, 0xde, 0x8d, 0xd2, 0x81, 0x74, 0x27, 0x83, 0xd0, 0x25, 0x76, 0x70, 0x23, 0xd6, 0x85, 0x21, 0x72, 0x87, 0xd4, 0x39, 0x6a, 0x9f, 0xcc, 0x68, 0x3b, 0xce, 0x9d, 0x9b, 0xc8, 0x3d, 0x6e, 0xca, 0x99, 0x6c, 0x3f, 0x60, 0x33, 0xc6, 0x95, 0x31, 0x62, 0x97, 0xc4, 0xc2, 0x91, 0x64, 0x37, 0x93, 0xc0, 0x35, 0x66}, [256]uint8{0x0, 0x54, 0xa8, 0xfc, 0x4d, 0x19, 0xe5, 0xb1, 0x9a, 0xce, 0x32, 0x66, 0xd7, 0x83, 0x7f, 0x2b, 0x29, 0x7d, 0x81, 0xd5, 0x64, 0x30, 0xcc, 0x98, 0xb3, 0xe7, 0x1b, 0x4f, 0xfe, 0xaa, 0x56, 0x2, 0x52, 0x6, 0xfa, 0xae, 0x1f, 0x4b, 0xb7, 0xe3, 0xc8, 0x9c, 0x60, 0x34, 0x85, 0xd1, 0x2d, 0x79, 0x7b, 0x2f, 0xd3, 0x87, 0x36, 0x62, 0x9e, 0xca, 0xe1, 0xb5, 0x49, 0x1d, 0xac, 0xf8, 0x4, 0x50, 0xa4, 0xf0, 0xc, 0x58, 0xe9, 0xbd, 0x41, 0x15, 0x3e, 0x6a, 0x96, 0xc2, 0x73, 0x27, 0xdb, 0x8f, 0x8d, 0xd9, 0x25, 0x71, 0xc0, 0x94, 0x68, 0x3c, 0x17, 0x43, 0xbf, 0xeb, 0x5a, 0xe, 0xf2, 0xa6, 0xf6, 0xa2, 0x5e, 0xa, 0xbb, 0xef, 0x13, 0x47, 0x6c, 0x38, 0xc4, 0x90, 0x21, 0x75, 0x89, 0xdd, 0xdf, 0x8b, 0x77, 0x23, 0x92, 0xc6, 0x3a, 0x6e, 0x45, 0x11, 0xed, 0xb9, 0x8, 0x5c, 0xa0, 0xf4, 0x55, 0x1, 0xfd, 0xa9, 0x18, 0x4c, 0xb0, 0xe4, 0xcf, 0x9b, 0x67, 0x33, 0x82, 0xd6, 0x2a, 0x7e, 0x7c, 0x28, 0xd4, 0x80, 0x31, 0x65, 0x99, 0xcd, 0xe6, 0xb2, 0x4e, 0x1a, 0xab, 0xff, 0x3, 0x57, 0x7, 0x53, 0xaf, 0xfb, 0x4a, 0x1e, 0xe2, 0xb6, 0x9d, 0xc9, 0x35, 0x61, 0xd0, 0x84, 0x78, 0x2c, 0x2e, 0x7a, 0x86, 0xd2, 0x63, 0x37, 0xcb, 0x9f, 0xb4, 0xe0, 0x1c, 0x48, 0xf9, 0xad, 0x51, 0x5, 0xf1, 0xa5, 0x59, 0xd, 0xbc, 0xe8, 0x14, 0x40, 0x6b, 0x3f, 0xc3, 0x97, 0x26, 0x72, 0x8e, 0xda, 0xd8, 0x8c, 0x70, 0x24, 0x95, 0xc1, 0x3d, 0x69, 0x42, 0x16, 0xea, 0xbe, 0xf, 0x5b, 0xa7, 0xf3, 0xa3, 0xf7, 0xb, 0x5f, 0xee, 0xba, 0x46, 0x12, 0x39, 0x6d, 0x91, 0xc5, 0x74, 0x20, 0xdc, 0x88, 0x8a, 0xde, 0x22, 0x76, 0xc7, 0x93, 0x6f, 0x3b, 0x10, 0x44, 0xb8, 0xec, 0x5d, 0x9, 0xf5, 0xa1}, [256]uint8{0x0, 0x55, 0xaa, 0xff, 0x49, 0x1c, 0xe3, 0xb6, 0x92, 0xc7, 0x38, 0x6d, 0xdb, 0x8e, 0x71, 0x24, 0x39, 0x6c, 0x93, 0xc6, 0x70, 0x25, 0xda, 0x8f, 0xab, 0xfe, 0x1, 0x54, 0xe2, 0xb7, 0x48, 0x1d, 0x72, 0x27, 0xd8, 0x8d, 0x3b, 0x6e, 0x91, 0xc4, 0xe0, 0xb5, 0x4a, 0x1f, 0xa9, 0xfc, 0x3, 0x56, 0x4b, 0x1e, 0xe1, 0xb4, 0x2, 0x57, 0xa8, 0xfd, 0xd9, 0x8c, 0x73, 0x26, 0x90, 0xc5, 0x3a, 0x6f, 0xe4, 0xb1, 0x4e, 0x1b, 0xad, 0xf8, 0x7, 0x52, 0x76, 0x23, 0xdc, 0x89, 0x3f, 0x6a, 0x95, 0xc0, 0xdd, 0x88, 0x77, 0x22, 0x94, 0xc1, 0x3e, 0x6b, 0x4f, 0x1a, 0xe5, 0xb0, 0x6, 0x53, 0xac, 0xf9, 0x96, 0xc3, 0x3c, 0x69, 0xdf, 0x8a, 0x75, 0x20, 0x4, 0x51, 0xae, 0xfb, 0x4d, 0x18, 0xe7, 0xb2, 0xaf, 0xfa, 0x5, 0x50, 0xe6, 0xb3, 0x4c, 0x19, 0x3d, 0x68, 0x97, 0xc2, 0x74, 0x21, 0xde, 0x8b, 0xd5, 0x80, 0x7f, 0x2a, 0x9c, 0xc9, 0x36, 0x63, 0x47, 0x12, 0xed, 0xb8, 0xe, 0x5b, 0xa4, 0xf1, 0xec, 0xb9, 0x46, 0x13, 0xa5, 0xf0, 0xf, 0x5a, 0x7e, 0x2b, 0xd4, 0x81, 0x37, 0x62, 0x9d, 0xc8, 0xa7, 0xf2, 0xd, 0x58, 0xee, 0xbb, 0x44, 0x11, 0x35, 0x60, 0x9f, 0xca, 0x7c, 0x29, 0xd6, 0x83, 0x9e, 0xcb, 0x34, 0x61, 0xd7, 0x82, 0x7d, 0x28, 0xc, 0x59, 0xa6, 0xf3, 0x45, 0x10, 0xef, 0xba, 0x31, 0x64, 0x9b, 0xce, 0x78, 0x2d, 0xd2, 0x87, 0xa3, 0xf6, 0x9, 0x5c, 0xea, 0xbf, 0x40, 0x15, 0x8, 0x5d, 0xa2, 0xf7, 0x41, 0x14, 0xeb, 0xbe, 0x9a, 0xcf, 0x30, 0x65, 0xd3, 0x86, 0x79, 0x2c, 0x43, 0x16, 0xe9, 0xbc, 0xa, 0x5f, 0xa0, 0xf5, 0xd1, 0x84, 0x7b, 0x2e, 0x98, 0xcd, 0x32, 0x67, 0x7a, 0x2f, 0xd0, 0x85, 0x33, 0x66, 0x99, 0xcc, 0xe8, 0xbd, 0x42, 0x17, 0xa1, 0xf4, 0xb, 0x5e}, [256]uint8{0x0, 0x56, 0xac, 0xfa, 0x45, 0x13, 0xe9, 0xbf, 0x8a, 0xdc, 0x26, 0x70, 0xcf, 0x99, 0x63, 0x35, 0x9, 0x5f, 0xa5, 0xf3, 0x4c, 0x1a, 0xe0, 0xb6, 0x83, 0xd5, 0x2f, 0x79, 0xc6, 0x90, 0x6a, 0x3c, 0x12, 0x44, 0xbe, 0xe8, 0x57, 0x1, 0xfb, 0xad, 0x98, 0xce, 0x34, 0x62, 0xdd, 0x8b, 0x71, 0x27, 0x1b, 0x4d, 0xb7, 0xe1, 0x5e, 0x8, 0xf2, 0xa4, 0x91, 0xc7, 0x3d, 0x6b, 0xd4, 0x82, 0x78, 0x2e, 0x24, 0x72, 0x88, 0xde, 0x61, 0x37, 0xcd, 0x9b, 0xae, 0xf8, 0x2, 0x54, 0xeb, 0xbd, 0x47, 0x11, 0x2d, 0x7b, 0x81, 0xd7, 0x68, 0x3e, 0xc4, 0x92, 0xa7, 0xf1, 0xb, 0x5d, 0xe2, 0xb4, 0x4e, 0x18, 0x36, 0x60, 0x9a, 0xcc, 0x73, 0x25, 0xdf, 0x89, 0xbc, 0xea, 0x10, 0x46, 0xf9, 0xaf, 0x55, 0x3, 0x3f, 0x69, 0x93, 0xc5, 0x7a, 0x2c, 0xd6, 0x80, 0xb5, 0xe3, 0x19, 0x4f, 0xf0, 0xa6, 0x5c, 0xa, 0x48, 0x1e, 0xe4, 0xb2, 0xd, 0x5b, 0xa1, 0xf7, 0xc2, 0x94, 0x6e, 0x38, 0x87, 0xd1, 0x2b, 0x7d, 0x41, 0x17, 0xed, 0xbb, 0x4, 0x52, 0xa8, 0xfe, 0xcb, 0x9d, 0x67, 0x31, 0x8e, 0xd8, 0x22, 0x74, 0x5a, 0xc, 0xf6, 0xa0, 0x1f, 0x49, 0xb3, 0xe5, 0xd0, 0x86, 0x7c, 0x2a, 0x95, 0xc3, 0x39, 0x6f, 0x53, 0x5, 0xff, 0xa9, 0x16, 0x40, 0xba, 0xec, 0xd9, 0x8f, 0x75, 0x23, 0x9c, 0xca, 0x30, 0x66, 0x6c, 0x3a, 0xc0, 0x96, 0x29, 0x7f, 0x85, 0xd3, 0xe6, 0xb0, 0x4a, 0x1c, 0xa3, 0xf5, 0xf, 0x59, 0x65, 0x33, 0xc9, 0x9f, 0x20, 0x76, 0x8c, 0xda, 0xef, 0xb9, 0x43, 0x15, 0xaa, 0xfc, 0x6, 0x50, 0x7e, 0x28, 0xd2, 0x84, 0x3b, 0x6d, 0x97, 0xc1, 0xf4, 0xa2, 0x58, 0xe, 0xb1, 0xe7, 0x1d, 0x4b, 0x77, 0x21, 0xdb, 0x8d, 0x32, 0x64, 0x9e, 0xc8, 0xfd, 0xab, 0x51, 0x7, 0xb8, 0xee, 0x14, 0x42}, [256]uint8{0x0, 0x57, 0xae, 0xf9, 0x41, 0x16, 0xef, 0xb8, 0x82, 0xd5, 0x2c, 0x7b, 0xc3, 0x94, 0x6d, 0x3a, 0x19, 0x4e, 0xb7, 0xe0, 0x58, 0xf, 0xf6, 0xa1, 0x9b, 0xcc, 0x35, 0x62, 0xda, 0x8d, 0x74, 0x23, 0x32, 0x65, 0x9c, 0xcb, 0x73, 0x24, 0xdd, 0x8a, 0xb0, 0xe7, 0x1e, 0x49, 0xf1, 0xa6, 0x5f, 0x8, 0x2b, 0x7c, 0x85, 0xd2, 0x6a, 0x3d, 0xc4, 0x93, 0xa9, 0xfe, 0x7, 0x50, 0xe8, 0xbf, 0x46, 0x11, 0x64, 0x33, 0xca, 0x9d, 0x25, 0x72, 0x8b, 0xdc, 0xe6, 0xb1, 0x48, 0x1f, 0xa7, 0xf0, 0x9, 0x5e, 0x7d, 0x2a, 0xd3, 0x84, 0x3c, 0x6b, 0x92, 0xc5, 0xff, 0xa8, 0x51, 0x6, 0xbe, 0xe9, 0x10, 0x47, 0x56, 0x1, 0xf8, 0xaf, 0x17, 0x40, 0xb9, 0xee, 0xd4, 0x83, 0x7a, 0x2d, 0x95, 0xc2, 0x3b, 0x6c, 0x4f, 0x18, 0xe1, 0xb6, 0xe, 0x59, 0xa0, 0xf7, 0xcd, 0x9a, 0x63, 0x34, 0x8c, 0xdb, 0x22, 0x75, 0xc8, 0x9f, 0x66, 0x31, 0x89, 0xde, 0x27, 0x70, 0x4a, 0x1d, 0xe4, 0xb3, 0xb, 0x5c, 0xa5, 0xf2, 0xd1, 0x86, 0x7f, 0x28, 0x90, 0xc7, 0x3e, 0x69, 0x53, 0x4, 0xfd, 0xaa, 0x12, 0x45, 0xbc, 0xeb, 0xfa, 0xad, 0x54, 0x3, 0xbb, 0xec, 0x15, 0x42, 0x78, 0x2f, 0xd6, 0x81, 0x39, 0x6e, 0x97, 0xc0, 0xe3, 0xb4, 0x4d, 0x1a, 0xa2, 0xf5, 0xc, 0x5b, 0x61, 0x36, 0xcf, 0x98, 0x20, 0x77, 0x8e, 0xd9, 0xac, 0xfb, 0x2, 0x55, 0xed, 0xba, 0x43, 0x14, 0x2e, 0x79, 0x80, 0xd7, 0x6f, 0x38, 0xc1, 0x96, 0xb5, 0xe2, 0x1b, 0x4c, 0xf4, 0xa3, 0x5a, 0xd, 0x37, 0x60, 0x99, 0xce, 0x76, 0x21, 0xd8, 0x8f, 0x9e, 0xc9, 0x30, 0x67, 0xdf, 0x88, 0x71, 0x26, 0x1c, 0x4b, 0xb2, 0xe5, 0x5d, 0xa, 0xf3, 0xa4, 0x87, 0xd0, 0x29, 0x7e, 0xc6, 0x91, 0x68, 0x3f, 0x5, 0x52, 0xab, 0xfc, 0x44, 0x13, 0xea, 0xbd}, [256]uint8{0x0, 0x58, 0xb0, 0xe8, 0x7d, 0x25, 0xcd, 0x95, 0xfa, 0xa2, 0x4a, 0x12, 0x87, 0xdf, 0x37, 0x6f, 0xe9, 0xb1, 0x59, 0x1, 0x94, 0xcc, 0x24, 0x7c, 0x13, 0x4b, 0xa3, 0xfb, 0x6e, 0x36, 0xde, 0x86, 0xcf, 0x97, 0x7f, 0x27, 0xb2, 0xea, 0x2, 0x5a, 0x35, 0x6d, 0x85, 0xdd, 0x48, 0x10, 0xf8, 0xa0, 0x26, 0x7e, 0x96, 0xce, 0x5b, 0x3, 0xeb, 0xb3, 0xdc, 0x84, 0x6c, 0x34, 0xa1, 0xf9, 0x11, 0x49, 0x83, 0xdb, 0x33, 0x6b, 0xfe, 0xa6, 0x4e, 0x16, 0x79, 0x21, 0xc9, 0x91, 0x4, 0x5c, 0xb4, 0xec, 0x6a, 0x32, 0xda, 0x82, 0x17, 0x4f, 0xa7, 0xff, 0x90, 0xc8, 0x20, 0x78, 0xed, 0xb5, 0x5d, 0x5, 0x4c, 0x14, 0xfc, 0xa4, 0x31, 0x69, 0x81, 0xd9, 0xb6, 0xee, 0x6, 0x5e, 0xcb, 0x93, 0x7b, 0x23, 0xa5, 0xfd, 0x15, 0x4d, 0xd8, 0x80, 0x68, 0x30, 0x5f, 0x7, 0xef, 0xb7, 0x22, 0x7a, 0x92, 0xca, 0x1b, 0x43, 0xab, 0xf3, 0x66, 0x3e, 0xd6, 0x8e, 0xe1, 0xb9, 0x51, 0x9, 0x9c, 0xc4, 0x2c, 0x74, 0xf2, 0xaa, 0x42, 0x1a, 0x8f, 0xd7, 0x3f, 0x67, 0x8, 0x50, 0xb8, 0xe0, 0x75, 0x2d, 0xc5, 0x9d, 0xd4, 0x8c, 0x64, 0x3c, 0xa9, 0xf1, 0x19, 0x41, 0x2e, 0x76, 0x9e, 0xc6, 0x53, 0xb, 0xe3, 0xbb, 0x3d, 0x65, 0x8d, 0xd5, 0x40, 0x18, 0xf0, 0xa8, 0xc7, 0x9f, 0x77, 0x2f, 0xba, 0xe2, 0xa, 0x52, 0x98, 0xc0, 0x28, 0x70, 0xe5, 0xbd, 0x55, 0xd, 0x62, 0x3a, 0xd2, 0x8a, 0x1f, 0x47, 0xaf, 0xf7, 0x71, 0x29, 0xc1, 0x99, 0xc, 0x54, 0xbc, 0xe4, 0x8b, 0xd3, 0x3b, 0x63, 0xf6, 0xae, 0x46, 0x1e, 0x57, 0xf, 0xe7, 0xbf, 0x2a, 0x72, 0x9a, 0xc2, 0xad, 0xf5, 0x1d, 0x45, 0xd0, 0x88, 0x60, 0x38, 0xbe, 0xe6, 0xe, 0x56, 0xc3, 0x9b, 0x73, 0x2b, 0x44, 0x1c, 0xf4, 0xac, 0x39, 0x61, 0x89, 0xd1}, [256]uint8{0x0, 0x59, 0xb2, 0xeb, 0x79, 0x20, 0xcb, 0x92, 0xf2, 0xab, 0x40, 0x19, 0x8b, 0xd2, 0x39, 0x60, 0xf9, 0xa0, 0x4b, 0x12, 0x80, 0xd9, 0x32, 0x6b, 0xb, 0x52, 0xb9, 0xe0, 0x72, 0x2b, 0xc0, 0x99, 0xef, 0xb6, 0x5d, 0x4, 0x96, 0xcf, 0x24, 0x7d, 0x1d, 0x44, 0xaf, 0xf6, 0x64, 0x3d, 0xd6, 0x8f, 0x16, 0x4f, 0xa4, 0xfd, 0x6f, 0x36, 0xdd, 0x84, 0xe4, 0xbd, 0x56, 0xf, 0x9d, 0xc4, 0x2f, 0x76, 0xc3, 0x9a, 0x71, 0x28, 0xba, 0xe3, 0x8, 0x51, 0x31, 0x68, 0x83, 0xda, 0x48, 0x11, 0xfa, 0xa3, 0x3a, 0x63, 0x88, 0xd1, 0x43, 0x1a, 0xf1, 0xa8, 0xc8, 0x91, 0x7a, 0x23, 0xb1, 0xe8, 0x3, 0x5a, 0x2c, 0x75, 0x9e, 0xc7, 0x55, 0xc, 0xe7, 0xbe, 0xde, 0x87, 0x6c, 0x35, 0xa7, 0xfe, 0x15, 0x4c, 0xd5, 0x8c, 0x67, 0x3e, 0xac, 0xf5, 0x1e, 0x47, 0x27, 0x7e, 0x95, 0xcc, 0x5e, 0x7, 0xec, 0xb5, 0x9b, 0xc2, 0x29, 0x70, 0xe2, 0xbb, 0x50, 0x9, 0x69, 0x30, 0xdb, 0x82, 0x10, 0x49, 0xa2, 0xfb, 0x62, 0x3b, 0xd0, 0x89, 0x1b, 0x42, 0xa9, 0xf0, 0x90, 0xc9, 0x22, 0x7b, 0xe9, 0xb0, 0x5b, 0x2, 0x74, 0x2d, 0xc6, 0x9f, 0xd, 0x54, 0xbf, 0xe6, 0x86, 0xdf, 0x34, 0x6d, 0xff, 0xa6, 0x4d, 0x14, 0x8d, 0xd4, 0x3f, 0x66, 0xf4, 0xad, 0x46, 0x1f, 0x7f, 0x26, 0xcd, 0x94, 0x6, 0x5f, 0xb4, 0xed, 0x58, 0x1, 0xea, 0xb3, 0x21, 0x78, 0x93, 0xca, 0xaa, 0xf3, 0x18, 0x41, 0xd3, 0x8a, 0x61, 0x38, 0xa1, 0xf8, 0x13, 0x4a, 0xd8, 0x81, 0x6a, 0x33, 0x53, 0xa, 0xe1, 0xb8, 0x2a, 0x73, 0x98, 0xc1, 0xb7, 0xee, 0x5, 0x5c, 0xce, 0x97, 0x7c, 0x25, 0x45, 0x1c, 0xf7, 0xae, 0x3c, 0x65, 0x8e, 0xd7, 0x4e, 0x17, 0xfc, 0xa5, 0x37, 0x6e, 0x85, 0xdc, 0xbc, 0xe5, 0xe, 0x57, 0xc5, 0x9c, 0x77, 0x2e}, [256]uint8{0x0, 0x5a, 0xb4, 0xee, 0x75, 0x2f, 0xc1, 0x9b, 0xea, 0xb0, 0x5e, 0x4, 0x9f, 0xc5, 0x2b, 0x71, 0xc9, 0x93, 0x7d, 0x27, 0xbc, 0xe6, 0x8, 0x52, 0x23, 0x79, 0x97, 0xcd, 0x56, 0xc, 0xe2, 0xb8, 0x8f, 0xd5, 0x3b, 0x61, 0xfa, 0xa0, 0x4e, 0x14, 0x65, 0x3f, 0xd1, 0x8b, 0x10, 0x4a, 0xa4, 0xfe, 0x46, 0x1c, 0xf2, 0xa8, 0x33, 0x69, 0x87, 0xdd, 0xac, 0xf6, 0x18, 0x42, 0xd9, 0x83, 0x6d, 0x37, 0x3, 0x59, 0xb7, 0xed, 0x76, 0x2c, 0xc2, 0x98, 0xe9, 0xb3, 0x5d, 0x7, 0x9c, 0xc6, 0x28, 0x72, 0xca, 0x90, 0x7e, 0x24, 0xbf, 0xe5, 0xb, 0x51, 0x20, 0x7a, 0x94, 0xce, 0x55, 0xf, 0xe1, 0xbb, 0x8c, 0xd6, 0x38, 0x62, 0xf9, 0xa3, 0x4d, 0x17, 0x66, 0x3c, 0xd2, 0x88, 0x13, 0x49, 0xa7, 0xfd, 0x45, 0x1f, 0xf1, 0xab, 0x30, 0x6a, 0x84, 0xde, 0xaf, 0xf5, 0x1b, 0x41, 0xda, 0x80, 0x6e, 0x34, 0x6, 0x5c, 0xb2, 0xe8, 0x73, 0x29, 0xc7, 0x9d, 0xec, 0xb6, 0x58, 0x2, 0x99, 0xc3, 0x2d, 0x77, 0xcf, 0x95, 0x7b, 0x21, 0xba, 0xe0, 0xe, 0x54, 0x25, 0x7f, 0x91, 0xcb, 0x50, 0xa, 0xe4, 0xbe, 0x89, 0xd3, 0x3d, 0x67, 0xfc, 0xa6, 0x48, 0x12, 0x63, 0x39, 0xd7, 0x8d, 0x16, 0x4c, 0xa2, 0xf8, 0x40, 0x1a, 0xf4, 0xae, 0x35, 0x6f, 0x81, 0xdb, 0xaa, 0xf0, 0x1e, 0x44, 0xdf, 0x85, 0x6b, 0x31, 0x5, 0x5f, 0xb1, 0xeb, 0x70, 0x2a, 0xc4, 0x9e, 0xef, 0xb5, 0x5b, 0x1, 0x9a, 0xc0, 0x2e, 0x74, 0xcc, 0x96, 0x78, 0x22, 0xb9, 0xe3, 0xd, 0x57, 0x26, 0x7c, 0x92, 0xc8, 0x53, 0x9, 0xe7, 0xbd, 0x8a, 0xd0, 0x3e, 0x64, 0xff, 0xa5, 0x4b, 0x11, 0x60, 0x3a, 0xd4, 0x8e, 0x15, 0x4f, 0xa1, 0xfb, 0x43, 0x19, 0xf7, 0xad, 0x36, 0x6c, 0x82, 0xd8, 0xa9, 0xf3, 0x1d, 0x47, 0xdc, 0x86, 0x68, 0x32}, [256]uint8{0x0, 0x5b, 0xb6, 0xed, 0x71, 0x2a, 0xc7, 0x9c, 0xe2, 0xb9, 0x54, 0xf, 0x93, 0xc8, 0x25, 0x7e, 0xd9, 0x82, 0x6f, 0x34, 0xa8, 0xf3, 0x1e, 0x45, 0x3b, 0x60, 0x8d, 0xd6, 0x4a, 0x11, 0xfc, 0xa7, 0xaf, 0xf4, 0x19, 0x42, 0xde, 0x85, 0x68, 0x33, 0x4d, 0x16, 0xfb, 0xa0, 0x3c, 0x67, 0x8a, 0xd1, 0x76, 0x2d, 0xc0, 0x9b, 0x7, 0x5c, 0xb1, 0xea, 0x94, 0xcf, 0x22, 0x79, 0xe5, 0xbe, 0x53, 0x8, 0x43, 0x18, 0xf5, 0xae, 0x32, 0x69, 0x84, 0xdf, 0xa1, 0xfa, 0x17, 0x4c, 0xd0, 0x8b, 0x66, 0x3d, 0x9a, 0xc1, 0x2c, 0x77, 0xeb, 0xb0, 0x5d, 0x6, 0x78, 0x23, 0xce, 0x95, 0x9, 0x52, 0xbf, 0xe4, 0xec, 0xb7, 0x5a, 0x1, 0x9d, 0xc6, 0x2b, 0x70, 0xe, 0x55, 0xb8, 0xe3, 0x7f, 0x24, 0xc9, 0x92, 0x35, 0x6e, 0x83, 0xd8, 0x44, 0x1f, 0xf2, 0xa9, 0xd7, 0x8c, 0x61, 0x3a, 0xa6, 0xfd, 0x10, 0x4b, 0x86, 0xdd, 0x30, 0x6b, 0xf7, 0xac, 0x41, 0x1a, 0x64, 0x3f, 0xd2, 0x89, 0x15, 0x4e, 0xa3, 0xf8, 0x5f, 0x4, 0xe9, 0xb2, 0x2e, 0x75, 0x98, 0xc3, 0xbd, 0xe6, 0xb, 0x50, 0xcc, 0x97, 0x7a, 0x21, 0x29, 0x72, 0x9f, 0xc4, 0x58, 0x3, 0xee, 0xb5, 0xcb, 0x90, 0x7d, 0x26, 0xba, 0xe1, 0xc, 0x57, 0xf0, 0xab, 0x46, 0x1d, 0x81, 0xda, 0x37, 0x6c, 0x12, 0x49, 0xa4, 0xff, 0x63, 0x38, 0xd5, 0x8e, 0xc5, 0x9e, 0x73, 0x28, 0xb4, 0xef, 0x2, 0x59, 0x27, 0x7c, 0x91, 0xca, 0x56, 0xd, 0xe0, 0xbb, 0x1c, 0x47, 0xaa, 0xf1, 0x6d, 0x36, 0xdb, 0x80, 0xfe, 0xa5, 0x48, 0x13, 0x8f, 0xd4, 0x39, 0x62, 0x6a, 0x31, 0xdc, 0x87, 0x1b, 0x40, 0xad, 0xf6, 0x88, 0xd3, 0x3e, 0x65, 0xf9, 0xa2, 0x4f, 0x14, 0xb3, 0xe8, 0x5, 0x5e, 0xc2, 0x99, 0x74, 0x2f, 0x51, 0xa, 0xe7, 0xbc, 0x20, 0x7b, 0x96, 0xcd}, [256]uint8{0x0, 0x5c, 0xb8, 0xe4, 0x6d, 0x31, 0xd5, 0x89, 0xda, 0x86, 0x62, 0x3e, 0xb7, 0xeb, 0xf, 0x53, 0xa9, 0xf5, 0x11, 0x4d, 0xc4, 0x98, 0x7c, 0x20, 0x73, 0x2f, 0xcb, 0x97, 0x1e, 0x42, 0xa6, 0xfa, 0x4f, 0x13, 0xf7, 0xab, 0x22, 0x7e, 0x9a, 0xc6, 0x95, 0xc9, 0x2d, 0x71, 0xf8, 0xa4, 0x40, 0x1c, 0xe6, 0xba, 0x5e, 0x2, 0x8b, 0xd7, 0x33, 0x6f, 0x3c, 0x60, 0x84, 0xd8, 0x51, 0xd, 0xe9, 0xb5, 0x9e, 0xc2, 0x26, 0x7a, 0xf3, 0xaf, 0x4b, 0x17, 0x44, 0x18, 0xfc, 0xa0, 0x29, 0x75, 0x91, 0xcd, 0x37, 0x6b, 0x8f, 0xd3, 0x5a, 0x6, 0xe2, 0xbe, 0xed, 0xb1, 0x55, 0x9, 0x80, 0xdc, 0x38, 0x64, 0xd1, 0x8d, 0x69, 0x35, 0xbc, 0xe0, 0x4, 0x58, 0xb, 0x57, 0xb3, 0xef, 0x66, 0x3a, 0xde, 0x82, 0x78, 0x24, 0xc0, 0x9c, 0x15, 0x49, 0xad, 0xf1, 0xa2, 0xfe, 0x1a, 0x46, 0xcf, 0x93, 0x77, 0x2b, 0x21, 0x7d, 0x99, 0xc5, 0x4c, 0x10, 0xf4, 0xa8, 0xfb, 0xa7, 0x43, 0x1f, 0x96, 0xca, 0x2e, 0x72, 0x88, 0xd4, 0x30, 0x6c, 0xe5, 0xb9, 0x5d, 0x1, 0x52, 0xe, 0xea, 0xb6, 0x3f, 0x63, 0x87, 0xdb, 0x6e, 0x32, 0xd6, 0x8a, 0x3, 0x5f, 0xbb, 0xe7, 0xb4, 0xe8, 0xc, 0x50, 0xd9, 0x85, 0x61, 0x3d, 0xc7, 0x9b, 0x7f, 0x23, 0xaa, 0xf6, 0x12, 0x4e, 0x1d, 0x41, 0xa5, 0xf9, 0x70, 0x2c, 0xc8, 0x94, 0xbf, 0xe3, 0x7, 0x5b, 0xd2, 0x8e, 0x6a, 0x36, 0x65, 0x39, 0xdd, 0x81, 0x8, 0x54, 0xb0, 0xec, 0x16, 0x4a, 0xae, 0xf2, 0x7b, 0x27, 0xc3, 0x9f, 0xcc, 0x90, 0x74, 0x28, 0xa1, 0xfd, 0x19, 0x45, 0xf0, 0xac, 0x48, 0x14, 0x9d, 0xc1, 0x25, 0x79, 0x2a, 0x76, 0x92, 0xce, 0x47, 0x1b, 0xff, 0xa3, 0x59, 0x5, 0xe1, 0xbd, 0x34, 0x68, 0x8c, 0xd0, 0x83, 0xdf, 0x3b, 0x67, 0xee, 0xb2, 0x56, 0xa}, [256]uint8{0x0, 0x5d, 0xba, 0xe7, 0x69, 0x34, 0xd3, 0x8e, 0xd2, 0x8f, 0x68, 0x35, 0xbb, 0xe6, 0x1, 0x5c, 0xb9, 0xe4, 0x3, 0x5e, 0xd0, 0x8d, 0x6a, 0x37, 0x6b, 0x36, 0xd1, 0x8c, 0x2, 0x5f, 0xb8, 0xe5, 0x6f, 0x32, 0xd5, 0x88, 0x6, 0x5b, 0xbc, 0xe1, 0xbd, 0xe0, 0x7, 0x5a, 0xd4, 0x89, 0x6e, 0x33, 0xd6, 0x8b, 0x6c, 0x31, 0xbf, 0xe2, 0x5, 0x58, 0x4, 0x59, 0xbe, 0xe3, 0x6d, 0x30, 0xd7, 0x8a, 0xde, 0x83, 0x64, 0x39, 0xb7, 0xea, 0xd, 0x50, 0xc, 0x51, 0xb6, 0xeb, 0x65, 0x38, 0xdf, 0x82, 0x67, 0x3a, 0xdd, 0x80, 0xe, 0x53, 0xb4, 0xe9, 0xb5, 0xe8, 0xf, 0x52, 0xdc, 0x81, 0x66, 0x3b, 0xb1, 0xec, 0xb, 0x56, 0xd8, 0x85, 0x62, 0x3f, 0x63, 0x3e, 0xd9, 0x84, 0xa, 0x57, 0xb0, 0xed, 0x8, 0x55, 0xb2, 0xef, 0x61, 0x3c, 0xdb, 0x86, 0xda, 0x87, 0x60, 0x3d, 0xb3, 0xee, 0x9, 0x54, 0xa1, 0xfc, 0x1b, 0x46, 0xc8, 0x95, 0x72, 0x2f, 0x73, 0x2e, 0xc9, 0x94, 0x1a, 0x47, 0xa0, 0xfd, 0x18, 0x45, 0xa2, 0xff, 0x71, 0x2c, 0xcb, 0x96, 0xca, 0x97, 0x70, 0x2d, 0xa3, 0xfe, 0x19, 0x44, 0xce, 0x93, 0x74, 0x29, 0xa7, 0xfa, 0x1d, 0x40, 0x1c, 0x41, 0xa6, 0xfb, 0x75, 0x28, 0xcf, 0x92, 0x77, 0x2a, 0xcd, 0x90, 0x1e, 0x43, 0xa4, 0xf9, 0xa5, 0xf8, 0x1f, 0x42, 0xcc, 0x91, 0x76, 0x2b, 0x7f, 0x22, 0xc5, 0x98, 0x16, 0x4b, 0xac, 0xf1, 0xad, 0xf0, 0x17, 0x4a, 0xc4, 0x99, 0x7e, 0x23, 0xc6, 0x9b, 0x7c, 0x21, 0xaf, 0xf2, 0x15, 0x48, 0x14, 0x49, 0xae, 0xf3, 0x7d, 0x20, 0xc7, 0x9a, 0x10, 0x4d, 0xaa, 0xf7, 0x79, 0x24, 0xc3, 0x9e, 0xc2, 0x9f, 0x78, 0x25, 0xab, 0xf6, 0x11, 0x4c, 0xa9, 0xf4, 0x13, 0x4e, 0xc0, 0x9d, 0x7a, 0x27, 0x7b, 0x26, 0xc1, 0x9c, 0x12, 0x4f, 0xa8, 0xf5}, [256]uint8{0x0, 0x5e, 0xbc, 0xe2, 0x65, 0x3b, 0xd9, 0x87, 0xca, 0x94, 0x76, 0x28, 0xaf, 0xf1, 0x13, 0x4d, 0x89, 0xd7, 0x35, 0x6b, 0xec, 0xb2, 0x50, 0xe, 0x43, 0x1d, 0xff, 0xa1, 0x26, 0x78, 0x9a, 0xc4, 0xf, 0x51, 0xb3, 0xed, 0x6a, 0x34, 0xd6, 0x88, 0xc5, 0x9b, 0x79, 0x27, 0xa0, 0xfe, 0x1c, 0x42, 0x86, 0xd8, 0x3a, 0x64, 0xe3, 0xbd, 0x5f, 0x1, 0x4c, 0x12, 0xf0, 0xae, 0x29, 0x77, 0x95, 0xcb, 0x1e, 0x40, 0xa2, 0xfc, 0x7b, 0x25, 0xc7, 0x99, 0xd4, 0x8a, 0x68, 0x36, 0xb1, 0xef, 0xd, 0x53, 0x97, 0xc9, 0x2b, 0x75, 0xf2, 0xac, 0x4e, 0x10, 0x5d, 0x3, 0xe1, 0xbf, 0x38, 0x66, 0x84, 0xda, 0x11, 0x4f, 0xad, 0xf3, 0x74, 0x2a, 0xc8, 0x96, 0xdb, 0x85, 0x67, 0x39, 0xbe, 0xe0, 0x2, 0x5c, 0x98, 0xc6, 0x24, 0x7a, 0xfd, 0xa3, 0x41, 0x1f, 0x52, 0xc, 0xee, 0xb0, 0x37, 0x69, 0x8b, 0xd5, 0x3c, 0x62, 0x80, 0xde, 0x59, 0x7, 0xe5, 0xbb, 0xf6, 0xa8, 0x4a, 0x14, 0x93, 0xcd, 0x2f, 0x71, 0xb5, 0xeb, 0x9, 0x57, 0xd0, 0x8e, 0x6c, 0x32, 0x7f, 0x21, 0xc3, 0x9d, 0x1a, 0x44, 0xa6, 0xf8, 0x33, 0x6d, 0x8f, 0xd1, 0x56, 0x8, 0xea, 0xb4, 0xf9, 0xa7, 0x45, 0x1b, 0x9c, 0xc2, 0x20, 0x7e, 0xba, 0xe4, 0x6, 0x58, 0xdf, 0x81, 0x63, 0x3d, 0x70, 0x2e, 0xcc, 0x92, 0x15, 0x4b, 0xa9, 0xf7, 0x22, 0x7c, 0x9e, 0xc0, 0x47, 0x19, 0xfb, 0xa5, 0xe8, 0xb6, 0x54, 0xa, 0x8d, 0xd3, 0x31, 0x6f, 0xab, 0xf5, 0x17, 0x49, 0xce, 0x90, 0x72, 0x2c, 0x61, 0x3f, 0xdd, 0x83, 0x4, 0x5a, 0xb8, 0xe6, 0x2d, 0x73, 0x91, 0xcf, 0x48, 0x16, 0xf4, 0xaa, 0xe7, 0xb9, 0x5b, 0x5, 0x82, 0xdc, 0x3e, 0x60, 0xa4, 0xfa, 0x18, 0x46, 0xc1, 0x9f, 0x7d, 0x23, 0x6e, 0x30, 0xd2, 0x8c, 0xb, 0x55, 0xb7, 0xe9}, [256]uint8{0x0, 0x5f, 0xbe, 0xe1, 0x61, 0x3e, 0xdf, 0x80, 0xc2, 0x9d, 0x7c, 0x23, 0xa3, 0xfc, 0x1d, 0x42, 0x99, 0xc6, 0x27, 0x78, 0xf8, 0xa7, 0x46, 0x19, 0x5b, 0x4, 0xe5, 0xba, 0x3a, 0x65, 0x84, 0xdb, 0x2f, 0x70, 0x91, 0xce, 0x4e, 0x11, 0xf0, 0xaf, 0xed, 0xb2, 0x53, 0xc, 0x8c, 0xd3, 0x32, 0x6d, 0xb6, 0xe9, 0x8, 0x57, 0xd7, 0x88, 0x69, 0x36, 0x74, 0x2b, 0xca, 0x95, 0x15, 0x4a, 0xab, 0xf4, 0x5e, 0x1, 0xe0, 0xbf, 0x3f, 0x60, 0x81, 0xde, 0x9c, 0xc3, 0x22, 0x7d, 0xfd, 0xa2, 0x43, 0x1c, 0xc7, 0x98, 0x79, 0x26, 0xa6, 0xf9, 0x18, 0x47, 0x5, 0x5a, 0xbb, 0xe4, 0x64, 0x3b, 0xda, 0x85, 0x71, 0x2e, 0xcf, 0x90, 0x10, 0x4f, 0xae, 0xf1, 0xb3, 0xec, 0xd, 0x52, 0xd2, 0x8d, 0x6c, 0x33, 0xe8, 0xb7, 0x56, 0x9, 0x89, 0xd6, 0x37, 0x68, 0x2a, 0x75, 0x94, 0xcb, 0x4b, 0x14, 0xf5, 0xaa, 0xbc, 0xe3, 0x2, 0x5d, 0xdd, 0x82, 0x63, 0x3c, 0x7e, 0x21, 0xc0, 0x9f, 0x1f, 0x40, 0xa1, 0xfe, 0x25, 0x7a, 0x9b, 0xc4, 0x44, 0x1b, 0xfa, 0xa5, 0xe7, 0xb8, 0x59, 0x6, 0x86, 0xd9, 0x38, 0x67, 0x93, 0xcc, 0x2d, 0x72, 0xf2, 0xad, 0x4c, 0x13, 0x51, 0xe, 0xef, 0xb0, 0x30, 0x6f, 0x8e, 0xd1, 0xa, 0x55, 0xb4, 0xeb, 0x6b, 0x34, 0xd5, 0x8a, 0xc8, 0x97, 0x76, 0x29, 0xa9, 0xf6, 0x17, 0x48, 0xe2, 0xbd, 0x5c, 0x3, 0x83, 0xdc, 0x3d, 0x62, 0x20, 0x7f, 0x9e, 0xc1, 0x41, 0x1e, 0xff, 0xa0, 0x7b, 0x24, 0xc5, 0x9a, 0x1a, 0x45, 0xa4, 0xfb, 0xb9, 0xe6, 0x7, 0x58, 0xd8, 0x87, 0x66, 0x39, 0xcd, 0x92, 0x73, 0x2c, 0xac, 0xf3, 0x12, 0x4d, 0xf, 0x50, 0xb1, 0xee, 0x6e, 0x31, 0xd0, 0x8f, 0x54, 0xb, 0xea, 0xb5, 0x35, 0x6a, 0x8b, 0xd4, 0x96, 0xc9, 0x28, 0x77, 0xf7, 0xa8, 0x49, 0x16}, [256]uint8{0x0, 0x60, 0xc0, 0xa0, 0x9d, 0xfd, 0x5d, 0x3d, 0x27, 0x47, 0xe7, 0x87, 0xba, 0xda, 0x7a, 0x1a, 0x4e, 0x2e, 0x8e, 0xee, 0xd3, 0xb3, 0x13, 0x73, 0x69, 0x9, 0xa9, 0xc9, 0xf4, 0x94, 0x34, 0x54, 0x9c, 0xfc, 0x5c, 0x3c, 0x1, 0x61, 0xc1, 0xa1, 0xbb, 0xdb, 0x7b, 0x1b, 0x26, 0x46, 0xe6, 0x86, 0xd2, 0xb2, 0x12, 0x72, 0x4f, 0x2f, 0x8f, 0xef, 0xf5, 0x95, 0x35, 0x55, 0x68, 0x8, 0xa8, 0xc8, 0x25, 0x45, 0xe5, 0x85, 0xb8, 0xd8, 0x78, 0x18, 0x2, 0x62, 0xc2, 0xa2, 0x9f, 0xff, 0x5f, 0x3f, 0x6b, 0xb, 0xab, 0xcb, 0xf6, 0x96, 0x36, 0x56, 0x4c, 0x2c, 0x8c, 0xec, 0xd1, 0xb1, 0x11, 0x71, 0xb9, 0xd9, 0x79, 0x19, 0x24, 0x44, 0xe4, 0x84, 0x9e, 0xfe, 0x5e, 0x3e, 0x3, 0x63, 0xc3, 0xa3, 0xf7, 0x97, 0x37, 0x57, 0x6a, 0xa, 0xaa, 0xca, 0xd0, 0xb0, 0x10, 0x70, 0x4d, 0x2d, 0x8d, 0xed, 0x4a, 0x2a, 0x8a, 0xea, 0xd7, 0xb7, 0x17, 0x77, 0x6d, 0xd, 0xad, 0xcd, 0xf0, 0x90, 0x30, 0x50, 0x4, 0x64, 0xc4, 0xa4, 0x99, 0xf9, 0x59, 0x39, 0x23, 0x43, 0xe3, 0x83, 0xbe, 0xde, 0x7e, 0x1e, 0xd6, 0xb6, 0x16, 0x76, 0x4b, 0x2b, 0x8b, 0xeb, 0xf1, 0x91, 0x31, 0x51, 0x6c, 0xc, 0xac, 0xcc, 0x98, 0xf8, 0x58, 0x38, 0x5, 0x65, 0xc5, 0xa5, 0xbf, 0xdf, 0x7f, 0x1f, 0x22, 0x42, 0xe2, 0x82, 0x6f, 0xf, 0xaf, 0xcf, 0xf2, 0x92, 0x32, 0x52, 0x48, 0x28, 0x88, 0xe8, 0xd5, 0xb5, 0x15, 0x75, 0x21, 0x41, 0xe1, 0x81, 0xbc, 0xdc, 0x7c, 0x1c, 0x6, 0x66, 0xc6, 0xa6, 0x9b, 0xfb, 0x5b, 0x3b, 0xf3, 0x93, 0x33, 0x53, 0x6e, 0xe, 0xae, 0xce, 0xd4, 0xb4, 0x14, 0x74, 0x49, 0x29, 0x89, 0xe9, 0xbd, 0xdd, 0x7d, 0x1d, 0x20, 0x40, 0xe0, 0x80, 0x9a, 0xfa, 0x5a, 0x3a, 0x7, 0x67, 0xc7, 0xa7}, [256]uint8{0x0, 0x61, 0xc2, 0xa3, 0x99, 0xf8, 0x5b, 0x3a, 0x2f, 0x4e, 0xed, 0x8c, 0xb6, 0xd7, 0x74, 0x15, 0x5e, 0x3f, 0x9c, 0xfd, 0xc7, 0xa6, 0x5, 0x64, 0x71, 0x10, 0xb3, 0xd2, 0xe8, 0x89, 0x2a, 0x4b, 0xbc, 0xdd, 0x7e, 0x1f, 0x25, 0x44, 0xe7, 0x86, 0x93, 0xf2, 0x51, 0x30, 0xa, 0x6b, 0xc8, 0xa9, 0xe2, 0x83, 0x20, 0x41, 0x7b, 0x1a, 0xb9, 0xd8, 0xcd, 0xac, 0xf, 0x6e, 0x54, 0x35, 0x96, 0xf7, 0x65, 0x4, 0xa7, 0xc6, 0xfc, 0x9d, 0x3e, 0x5f, 0x4a, 0x2b, 0x88, 0xe9, 0xd3, 0xb2, 0x11, 0x70, 0x3b, 0x5a, 0xf9, 0x98, 0xa2, 0xc3, 0x60, 0x1, 0x14, 0x75, 0xd6, 0xb7, 0x8d, 0xec, 0x4f, 0x2e, 0xd9, 0xb8, 0x1b, 0x7a, 0x40, 0x21, 0x82, 0xe3, 0xf6, 0x97, 0x34, 0x55, 0x6f, 0xe, 0xad, 0xcc, 0x87, 0xe6, 0x45, 0x24, 0x1e, 0x7f, 0xdc, 0xbd, 0xa8, 0xc9, 0x6a, 0xb, 0x31, 0x50, 0xf3, 0x92, 0xca, 0xab, 0x8, 0x69, 0x53, 0x32, 0x91, 0xf0, 0xe5, 0x84, 0x27, 0x46, 0x7c, 0x1d, 0xbe, 0xdf, 0x94, 0xf5, 0x56, 0x37, 0xd, 0x6c, 0xcf, 0xae, 0xbb, 0xda, 0x79, 0x18, 0x22, 0x43, 0xe0, 0x81, 0x76, 0x17, 0xb4, 0xd5, 0xef, 0x8e, 0x2d, 0x4c, 0x59, 0x38, 0x9b, 0xfa, 0xc0, 0xa1, 0x2, 0x63, 0x28, 0x49, 0xea, 0x8b, 0xb1, 0xd0, 0x73, 0x12, 0x7, 0x66, 0xc5, 0xa4, 0x9e, 0xff, 0x5c, 0x3d, 0xaf, 0xce, 0x6d, 0xc, 0x36, 0x57, 0xf4, 0x95, 0x80, 0xe1, 0x42, 0x23, 0x19, 0x78, 0xdb, 0xba, 0xf1, 0x90, 0x33, 0x52, 0x68, 0x9, 0xaa, 0xcb, 0xde, 0xbf, 0x1c, 0x7d, 0x47, 0x26, 0x85, 0xe4, 0x13, 0x72, 0xd1, 0xb0, 0x8a, 0xeb, 0x48, 0x29, 0x3c, 0x5d, 0xfe, 0x9f, 0xa5, 0xc4, 0x67, 0x6, 0x4d, 0x2c, 0x8f, 0xee, 0xd4, 0xb5, 0x16, 0x77, 0x62, 0x3, 0xa0, 0xc1, 0xfb, 0x9a, 0x39, 0x58}, [256]uint8{0x0, 0x62, 0xc4, 0xa6, 0x95, 0xf7, 0x51, 0x33, 0x37, 0x55, 0xf3, 0x91, 0xa2, 0xc0, 0x66, 0x4, 0x6e, 0xc, 0xaa, 0xc8, 0xfb, 0x99, 0x3f, 0x5d, 0x59, 0x3b, 0x9d, 0xff, 0xcc, 0xae, 0x8, 0x6a, 0xdc, 0xbe, 0x18, 0x7a, 0x49, 0x2b, 0x8d, 0xef, 0xeb, 0x89, 0x2f, 0x4d, 0x7e, 0x1c, 0xba, 0xd8, 0xb2, 0xd0, 0x76, 0x14, 0x27, 0x45, 0xe3, 0x81, 0x85, 0xe7, 0x41, 0x23, 0x10, 0x72, 0xd4, 0xb6, 0xa5, 0xc7, 0x61, 0x3, 0x30, 0x52, 0xf4, 0x96, 0x92, 0xf0, 0x56, 0x34, 0x7, 0x65, 0xc3, 0xa1, 0xcb, 0xa9, 0xf, 0x6d, 0x5e, 0x3c, 0x9a, 0xf8, 0xfc, 0x9e, 0x38, 0x5a, 0x69, 0xb, 0xad, 0xcf, 0x79, 0x1b, 0xbd, 0xdf, 0xec, 0x8e, 0x28, 0x4a, 0x4e, 0x2c, 0x8a, 0xe8, 0xdb, 0xb9, 0x1f, 0x7d, 0x17, 0x75, 0xd3, 0xb1, 0x82, 0xe0, 0x46, 0x24, 0x20, 0x42, 0xe4, 0x86, 0xb5, 0xd7, 0x71, 0x13, 0x57, 0x35, 0x93, 0xf1, 0xc2, 0xa0, 0x6, 0x64, 0x60, 0x2, 0xa4, 0xc6, 0xf5, 0x97, 0x31, 0x53, 0x39, 0x5b, 0xfd, 0x9f, 0xac, 0xce, 0x68, 0xa, 0xe, 0x6c, 0xca, 0xa8, 0x9b, 0xf9, 0x5f, 0x3d, 0x8b, 0xe9, 0x4f, 0x2d, 0x1e, 0x7c, 0xda, 0xb8, 0xbc, 0xde, 0x78, 0x1a, 0x29, 0x4b, 0xed, 0x8f, 0xe5, 0x87, 0x21, 0x43, 0x70, 0x12, 0xb4, 0xd6, 0xd2, 0xb0, 0x16, 0x74, 0x47, 0x25, 0x83, 0xe1, 0xf2, 0x90, 0x36, 0x54, 0x67, 0x5, 0xa3, 0xc1, 0xc5, 0xa7, 0x1, 0x63, 0x50, 0x32, 0x94, 0xf6, 0x9c, 0xfe, 0x58, 0x3a, 0x9, 0x6b, 0xcd, 0xaf, 0xab, 0xc9, 0x6f, 0xd, 0x3e, 0x5c, 0xfa, 0x98, 0x2e, 0x4c, 0xea, 0x88, 0xbb, 0xd9, 0x7f, 0x1d, 0x19, 0x7b, 0xdd, 0xbf, 0x8c, 0xee, 0x48, 0x2a, 0x40, 0x22, 0x84, 0xe6, 0xd5, 0xb7, 0x11, 0x73, 0x77, 0x15, 0xb3, 0xd1, 0xe2, 0x80, 0x26, 0x44}, [256]uint8{0x0, 0x63, 0xc6, 0xa5, 0x91, 0xf2, 0x57, 0x34, 0x3f, 0x5c, 0xf9, 0x9a, 0xae, 0xcd, 0x68, 0xb, 0x7e, 0x1d, 0xb8, 0xdb, 0xef, 0x8c, 0x29, 0x4a, 0x41, 0x22, 0x87, 0xe4, 0xd0, 0xb3, 0x16, 0x75, 0xfc, 0x9f, 0x3a, 0x59, 0x6d, 0xe, 0xab, 0xc8, 0xc3, 0xa0, 0x5, 0x66, 0x52, 0x31, 0x94, 0xf7, 0x82, 0xe1, 0x44, 0x27, 0x13, 0x70, 0xd5, 0xb6, 0xbd, 0xde, 0x7b, 0x18, 0x2c, 0x4f, 0xea, 0x89, 0xe5, 0x86, 0x23, 0x40, 0x74, 0x17, 0xb2, 0xd1, 0xda, 0xb9, 0x1c, 0x7f, 0x4b, 0x28, 0x8d, 0xee, 0x9b, 0xf8, 0x5d, 0x3e, 0xa, 0x69, 0xcc, 0xaf, 0xa4, 0xc7, 0x62, 0x1, 0x35, 0x56, 0xf3, 0x90, 0x19, 0x7a, 0xdf, 0xbc, 0x88, 0xeb, 0x4e, 0x2d, 0x26, 0x45, 0xe0, 0x83, 0xb7, 0xd4, 0x71, 0x12, 0x67, 0x4, 0xa1, 0xc2, 0xf6, 0x95, 0x30, 0x53, 0x58, 0x3b, 0x9e, 0xfd, 0xc9, 0xaa, 0xf, 0x6c, 0xd7, 0xb4, 0x11, 0x72, 0x46, 0x25, 0x80, 0xe3, 0xe8, 0x8b, 0x2e, 0x4d, 0x79, 0x1a, 0xbf, 0xdc, 0xa9, 0xca, 0x6f, 0xc, 0x38, 0x5b, 0xfe, 0x9d, 0x96, 0xf5, 0x50, 0x33, 0x7, 0x64, 0xc1, 0xa2, 0x2b, 0x48, 0xed, 0x8e, 0xba, 0xd9, 0x7c, 0x1f, 0x14, 0x77, 0xd2, 0xb1, 0x85, 0xe6, 0x43, 0x20, 0x55, 0x36, 0x93, 0xf0, 0xc4, 0xa7, 0x2, 0x61, 0x6a, 0x9, 0xac, 0xcf, 0xfb, 0x98, 0x3d, 0x5e, 0x32, 0x51, 0xf4, 0x97, 0xa3, 0xc0, 0x65, 0x6, 0xd, 0x6e, 0xcb, 0xa8, 0x9c, 0xff, 0x5a, 0x39, 0x4c, 0x2f, 0x8a, 0xe9, 0xdd, 0xbe, 0x1b, 0x78, 0x73, 0x10, 0xb5, 0xd6, 0xe2, 0x81, 0x24, 0x47, 0xce, 0xad, 0x8, 0x6b, 0x5f, 0x3c, 0x99, 0xfa, 0xf1, 0x92, 0x37, 0x54, 0x60, 0x3, 0xa6, 0xc5, 0xb0, 0xd3, 0x76, 0x15, 0x21, 0x42, 0xe7, 0x84, 0x8f, 0xec, 0x49, 0x2a, 0x1e, 0x7d, 0xd8, 0xbb}, [256]uint8{0x0, 0x64, 0xc8, 0xac, 0x8d, 0xe9, 0x45, 0x21, 0x7, 0x63, 0xcf, 0xab, 0x8a, 0xee, 0x42, 0x26, 0xe, 0x6a, 0xc6, 0xa2, 0x83, 0xe7, 0x4b, 0x2f, 0x9, 0x6d, 0xc1, 0xa5, 0x84, 0xe0, 0x4c, 0x28, 0x1c, 0x78, 0xd4, 0xb0, 0x91, 0xf5, 0x59, 0x3d, 0x1b, 0x7f, 0xd3, 0xb7, 0x96, 0xf2, 0x5e, 0x3a, 0x12, 0x76, 0xda, 0xbe, 0x9f, 0xfb, 0x57, 0x33, 0x15, 0x71, 0xdd, 0xb9, 0x98, 0xfc, 0x50, 0x34, 0x38, 0x5c, 0xf0, 0x94, 0xb5, 0xd1, 0x7d, 0x19, 0x3f, 0x5b, 0xf7, 0x93, 0xb2, 0xd6, 0x7a, 0x1e, 0x36, 0x52, 0xfe, 0x9a, 0xbb, 0xdf, 0x73, 0x17, 0x31, 0x55, 0xf9, 0x9d, 0xbc, 0xd8, 0x74, 0x10, 0x24, 0x40, 0xec, 0x88, 0xa9, 0xcd, 0x61, 0x5, 0x23, 0x47, 0xeb, 0x8f, 0xae, 0xca, 0x66, 0x2, 0x2a, 0x4e, 0xe2, 0x86, 0xa7, 0xc3, 0x6f, 0xb, 0x2d, 0x49, 0xe5, 0x81, 0xa0, 0xc4, 0x68, 0xc, 0x70, 0x14, 0xb8, 0xdc, 0xfd, 0x99, 0x35, 0x51, 0x77, 0x13, 0xbf, 0xdb, 0xfa, 0x9e, 0x32, 0x56, 0x7e, 0x1a, 0xb6, 0xd2, 0xf3, 0x97, 0x3b, 0x5f, 0x79, 0x1d, 0xb1, 0xd5, 0xf4, 0x90, 0x3c, 0x58, 0x6c, 0x8, 0xa4, 0xc0, 0xe1, 0x85, 0x29, 0x4d, 0x6b, 0xf, 0xa3, 0xc7, 0xe6, 0x82, 0x2e, 0x4a, 0x62, 0x6, 0xaa, 0xce, 0xef, 0x8b, 0x27, 0x43, 0x65, 0x1, 0xad, 0xc9, 0xe8, 0x8c, 0x20, 0x44, 0x48, 0x2c, 0x80, 0xe4, 0xc5, 0xa1, 0xd, 0x69, 0x4f, 0x2b, 0x87, 0xe3, 0xc2, 0xa6, 0xa, 0x6e, 0x46, 0x22, 0x8e, 0xea, 0xcb, 0xaf, 0x3, 0x67, 0x41, 0x25, 0x89, 0xed, 0xcc, 0xa8, 0x4, 0x60, 0x54, 0x30, 0x9c, 0xf8, 0xd9, 0xbd, 0x11, 0x75, 0x53, 0x37, 0x9b, 0xff, 0xde, 0xba, 0x16, 0x72, 0x5a, 0x3e, 0x92, 0xf6, 0xd7, 0xb3, 0x1f, 0x7b, 0x5d, 0x39, 0x95, 0xf1, 0xd0, 0xb4, 0x18, 0x7c}, [256]uint8{0x0, 0x65, 0xca, 0xaf, 0x89, 0xec, 0x43, 0x26, 0xf, 0x6a, 0xc5, 0xa0, 0x86, 0xe3, 0x4c, 0x29, 0x1e, 0x7b, 0xd4, 0xb1, 0x97, 0xf2, 0x5d, 0x38, 0x11, 0x74, 0xdb, 0xbe, 0x98, 0xfd, 0x52, 0x37, 0x3c, 0x59, 0xf6, 0x93, 0xb5, 0xd0, 0x7f, 0x1a, 0x33, 0x56, 0xf9, 0x9c, 0xba, 0xdf, 0x70, 0x15, 0x22, 0x47, 0xe8, 0x8d, 0xab, 0xce, 0x61, 0x4, 0x2d, 0x48, 0xe7, 0x82, 0xa4, 0xc1, 0x6e, 0xb, 0x78, 0x1d, 0xb2, 0xd7, 0xf1, 0x94, 0x3b, 0x5e, 0x77, 0x12, 0xbd, 0xd8, 0xfe, 0x9b, 0x34, 0x51, 0x66, 0x3, 0xac, 0xc9, 0xef, 0x8a, 0x25, 0x40, 0x69, 0xc, 0xa3, 0xc6, 0xe0, 0x85, 0x2a, 0x4f, 0x44, 0x21, 0x8e, 0xeb, 0xcd, 0xa8, 0x7, 0x62, 0x4b, 0x2e, 0x81, 0xe4, 0xc2, 0xa7, 0x8, 0x6d, 0x5a, 0x3f, 0x90, 0xf5, 0xd3, 0xb6, 0x19, 0x7c, 0x55, 0x30, 0x9f, 0xfa, 0xdc, 0xb9, 0x16, 0x73, 0xf0, 0x95, 0x3a, 0x5f, 0x79, 0x1c, 0xb3, 0xd6, 0xff, 0x9a, 0x35, 0x50, 0x76, 0x13, 0xbc, 0xd9, 0xee, 0x8b, 0x24, 0x41, 0x67, 0x2, 0xad, 0xc8, 0xe1, 0x84, 0x2b, 0x4e, 0x68, 0xd, 0xa2, 0xc7, 0xcc, 0xa9, 0x6, 0x63, 0x45, 0x20, 0x8f, 0xea, 0xc3, 0xa6, 0x9, 0x6c, 0x4a, 0x2f, 0x80, 0xe5, 0xd2, 0xb7, 0x18, 0x7d, 0x5b, 0x3e, 0x91, 0xf4, 0xdd, 0xb8, 0x17, 0x72, 0x54, 0x31, 0x9e, 0xfb, 0x88, 0xed, 0x42, 0x27, 0x1, 0x64, 0xcb, 0xae, 0x87, 0xe2, 0x4d, 0x28, 0xe, 0x6b, 0xc4, 0xa1, 0x96, 0xf3, 0x5c, 0x39, 0x1f, 0x7a, 0xd5, 0xb0, 0x99, 0xfc, 0x53, 0x36, 0x10, 0x75, 0xda, 0xbf, 0xb4, 0xd1, 0x7e, 0x1b, 0x3d, 0x58, 0xf7, 0x92, 0xbb, 0xde, 0x71, 0x14, 0x32, 0x57, 0xf8, 0x9d, 0xaa, 0xcf, 0x60, 0x5, 0x23, 0x46, 0xe9, 0x8c, 0xa5, 0xc0, 0x6f, 0xa, 0x2c, 0x49, 0xe6, 0x83}, [256]uint8{0x0, 0x66, 0xcc, 0xaa, 0x85, 0xe3, 0x49, 0x2f, 0x17, 0x71, 0xdb, 0xbd, 0x92, 0xf4, 0x5e, 0x38, 0x2e, 0x48, 0xe2, 0x84, 0xab, 0xcd, 0x67, 0x1, 0x39, 0x5f, 0xf5, 0x93, 0xbc, 0xda, 0x70, 0x16, 0x5c, 0x3a, 0x90, 0xf6, 0xd9, 0xbf, 0x15, 0x73, 0x4b, 0x2d, 0x87, 0xe1, 0xce, 0xa8, 0x2, 0x64, 0x72, 0x14, 0xbe, 0xd8, 0xf7, 0x91, 0x3b, 0x5d, 0x65, 0x3, 0xa9, 0xcf, 0xe0, 0x86, 0x2c, 0x4a, 0xb8, 0xde, 0x74, 0x12, 0x3d, 0x5b, 0xf1, 0x97, 0xaf, 0xc9, 0x63, 0x5, 0x2a, 0x4c, 0xe6, 0x80, 0x96, 0xf0, 0x5a, 0x3c, 0x13, 0x75, 0xdf, 0xb9, 0x81, 0xe7, 0x4d, 0x2b, 0x4, 0x62, 0xc8, 0xae, 0xe4, 0x82, 0x28, 0x4e, 0x61, 0x7, 0xad, 0xcb, 0xf3, 0x95, 0x3f, 0x59, 0x76, 0x10, 0xba, 0xdc, 0xca, 0xac, 0x6, 0x60, 0x4f, 0x29, 0x83, 0xe5, 0xdd, 0xbb, 0x11, 0x77, 0x58, 0x3e, 0x94, 0xf2, 0x6d, 0xb, 0xa1, 0xc7, 0xe8, 0x8e, 0x24, 0x42, 0x7a, 0x1c, 0xb6, 0xd0, 0xff, 0x99, 0x33, 0x55, 0x43, 0x25, 0x8f, 0xe9, 0xc6, 0xa0, 0xa, 0x6c, 0x54, 0x32, 0x98, 0xfe, 0xd1, 0xb7, 0x1d, 0x7b, 0x31, 0x57, 0xfd, 0x9b, 0xb4, 0xd2, 0x78, 0x1e, 0x26, 0x40, 0xea, 0x8c, 0xa3, 0xc5, 0x6f, 0x9, 0x1f, 0x79, 0xd3, 0xb5, 0x9a, 0xfc, 0x56, 0x30, 0x8, 0x6e, 0xc4, 0xa2, 0x8d, 0xeb, 0x41, 0x27, 0xd5, 0xb3, 0x19, 0x7f, 0x50, 0x36, 0x9c, 0xfa, 0xc2, 0xa4, 0xe, 0x68, 0x47, 0x21, 0x8b, 0xed, 0xfb, 0x9d, 0x37, 0x51, 0x7e, 0x18, 0xb2, 0xd4, 0xec, 0x8a, 0x20, 0x46, 0x69, 0xf, 0xa5, 0xc3, 0x89, 0xef, 0x45, 0x23, 0xc, 0x6a, 0xc0, 0xa6, 0x9e, 0xf8, 0x52, 0x34, 0x1b, 0x7d, 0xd7, 0xb1, 0xa7, 0xc1, 0x6b, 0xd, 0x22, 0x44, 0xee, 0x88, 0xb0, 0xd6, 0x7c, 0x1a, 0x35, 0x53, 0xf9, 0x9f}, [256]uint8{0x0, 0x67, 0xce, 0xa9, 0x81, 0xe6, 0x4f, 0x28, 0x1f, 0x78, 0xd1, 0xb6, 0x9e, 0xf9, 0x50, 0x37, 0x3e, 0x59, 0xf0, 0x97, 0xbf, 0xd8, 0x71, 0x16, 0x21, 0x46, 0xef, 0x88, 0xa0, 0xc7, 0x6e, 0x9, 0x7c, 0x1b, 0xb2, 0xd5, 0xfd, 0x9a, 0x33, 0x54, 0x63, 0x4, 0xad, 0xca, 0xe2, 0x85, 0x2c, 0x4b, 0x42, 0x25, 0x8c, 0xeb, 0xc3, 0xa4, 0xd, 0x6a, 0x5d, 0x3a, 0x93, 0xf4, 0xdc, 0xbb, 0x12, 0x75, 0xf8, 0x9f, 0x36, 0x51, 0x79, 0x1e, 0xb7, 0xd0, 0xe7, 0x80, 0x29, 0x4e, 0x66, 0x1, 0xa8, 0xcf, 0xc6, 0xa1, 0x8, 0x6f, 0x47, 0x20, 0x89, 0xee, 0xd9, 0xbe, 0x17, 0x70, 0x58, 0x3f, 0x96, 0xf1, 0x84, 0xe3, 0x4a, 0x2d, 0x5, 0x62, 0xcb, 0xac, 0x9b, 0xfc, 0x55, 0x32, 0x1a, 0x7d, 0xd4, 0xb3, 0xba, 0xdd, 0x74, 0x13, 0x3b, 0x5c, 0xf5, 0x92, 0xa5, 0xc2, 0x6b, 0xc, 0x24, 0x43, 0xea, 0x8d, 0xed, 0x8a, 0x23, 0x44, 0x6c, 0xb, 0xa2, 0xc5, 0xf2, 0x95, 0x3c, 0x5b, 0x73, 0x14, 0xbd, 0xda, 0xd3, 0xb4, 0x1d, 0x7a, 0x52, 0x35, 0x9c, 0xfb, 0xcc, 0xab, 0x2, 0x65, 0x4d, 0x2a, 0x83, 0xe4, 0x91, 0xf6, 0x5f, 0x38, 0x10, 0x77, 0xde, 0xb9, 0x8e, 0xe9, 0x40, 0x27, 0xf, 0x68, 0xc1, 0xa6, 0xaf, 0xc8, 0x61, 0x6, 0x2e, 0x49, 0xe0, 0x87, 0xb0, 0xd7, 0x7e, 0x19, 0x31, 0x56, 0xff, 0x98, 0x15, 0x72, 0xdb, 0xbc, 0x94, 0xf3, 0x5a, 0x3d, 0xa, 0x6d, 0xc4, 0xa3, 0x8b, 0xec, 0x45, 0x22, 0x2b, 0x4c, 0xe5, 0x82, 0xaa, 0xcd, 0x64, 0x3, 0x34, 0x53, 0xfa, 0x9d, 0xb5, 0xd2, 0x7b, 0x1c, 0x69, 0xe, 0xa7, 0xc0, 0xe8, 0x8f, 0x26, 0x41, 0x76, 0x11, 0xb8, 0xdf, 0xf7, 0x90, 0x39, 0x5e, 0x57, 0x30, 0x99, 0xfe, 0xd6, 0xb1, 0x18, 0x7f, 0x48, 0x2f, 0x86, 0xe1, 0xc9, 0xae, 0x7, 0x60}, [256]uint8{0x0, 0x68, 0xd0, 0xb8, 0xbd, 0xd5, 0x6d, 0x5, 0x67, 0xf, 0xb7, 0xdf, 0xda, 0xb2, 0xa, 0x62, 0xce, 0xa6, 0x1e, 0x76, 0x73, 0x1b, 0xa3, 0xcb, 0xa9, 0xc1, 0x79, 0x11, 0x14, 0x7c, 0xc4, 0xac, 0x81, 0xe9, 0x51, 0x39, 0x3c, 0x54, 0xec, 0x84, 0xe6, 0x8e, 0x36, 0x5e, 0x5b, 0x33, 0x8b, 0xe3, 0x4f, 0x27, 0x9f, 0xf7, 0xf2, 0x9a, 0x22, 0x4a, 0x28, 0x40, 0xf8, 0x90, 0x95, 0xfd, 0x45, 0x2d, 0x1f, 0x77, 0xcf, 0xa7, 0xa2, 0xca, 0x72, 0x1a, 0x78, 0x10, 0xa8, 0xc0, 0xc5, 0xad, 0x15, 0x7d, 0xd1, 0xb9, 0x1, 0x69, 0x6c, 0x4, 0xbc, 0xd4, 0xb6, 0xde, 0x66, 0xe, 0xb, 0x63, 0xdb, 0xb3, 0x9e, 0xf6, 0x4e, 0x26, 0x23, 0x4b, 0xf3, 0x9b, 0xf9, 0x91, 0x29, 0x41, 0x44, 0x2c, 0x94, 0xfc, 0x50, 0x38, 0x80, 0xe8, 0xed, 0x85, 0x3d, 0x55, 0x37, 0x5f, 0xe7, 0x8f, 0x8a, 0xe2, 0x5a, 0x32, 0x3e, 0x56, 0xee, 0x86, 0x83, 0xeb, 0x53, 0x3b, 0x59, 0x31, 0x89, 0xe1, 0xe4, 0x8c, 0x34, 0x5c, 0xf0, 0x98, 0x20, 0x48, 0x4d, 0x25, 0x9d, 0xf5, 0x97, 0xff, 0x47, 0x2f, 0x2a, 0x42, 0xfa, 0x92, 0xbf, 0xd7, 0x6f, 0x7, 0x2, 0x6a, 0xd2, 0xba, 0xd8, 0xb0, 0x8, 0x60, 0x65, 0xd, 0xb5, 0xdd, 0x71, 0x19, 0xa1, 0xc9, 0xcc, 0xa4, 0x1c, 0x74, 0x16, 0x7e, 0xc6, 0xae, 0xab, 0xc3, 0x7b, 0x13, 0x21, 0x49, 0xf1, 0x99, 0x9c, 0xf4, 0x4c, 0x24, 0x46, 0x2e, 0x96, 0xfe, 0xfb, 0x93, 0x2b, 0x43, 0xef, 0x87, 0x3f, 0x57, 0x52, 0x3a, 0x82, 0xea, 0x88, 0xe0, 0x58, 0x30, 0x35, 0x5d, 0xe5, 0x8d, 0xa0, 0xc8, 0x70, 0x18, 0x1d, 0x75, 0xcd, 0xa5, 0xc7, 0xaf, 0x17, 0x7f, 0x7a, 0x12, 0xaa, 0xc2, 0x6e, 0x6, 0xbe, 0xd6, 0xd3, 0xbb, 0x3, 0x6b, 0x9, 0x61, 0xd9, 0xb1, 0xb4, 0xdc, 0x64, 0xc}, [256]uint8{0x0, 0x69, 0xd2, 0xbb, 0xb9, 0xd0, 0x6b, 0x2, 0x6f, 0x6, 0xbd, 0xd4, 0xd6, 0xbf, 0x4, 0x6d, 0xde, 0xb7, 0xc, 0x65, 0x67, 0xe, 0xb5, 0xdc, 0xb1, 0xd8, 0x63, 0xa, 0x8, 0x61, 0xda, 0xb3, 0xa1, 0xc8, 0x73, 0x1a, 0x18, 0x71, 0xca, 0xa3, 0xce, 0xa7, 0x1c, 0x75, 0x77, 0x1e, 0xa5, 0xcc, 0x7f, 0x16, 0xad, 0xc4, 0xc6, 0xaf, 0x14, 0x7d, 0x10, 0x79, 0xc2, 0xab, 0xa9, 0xc0, 0x7b, 0x12, 0x5f, 0x36, 0x8d, 0xe4, 0xe6, 0x8f, 0x34, 0x5d, 0x30, 0x59, 0xe2, 0x8b, 0x89, 0xe0, 0x5b, 0x32, 0x81, 0xe8, 0x53, 0x3a, 0x38, 0x51, 0xea, 0x83, 0xee, 0x87, 0x3c, 0x55, 0x57, 0x3e, 0x85, 0xec, 0xfe, 0x97, 0x2c, 0x45, 0x47, 0x2e, 0x95, 0xfc, 0x91, 0xf8, 0x43, 0x2a, 0x28, 0x41, 0xfa, 0x93, 0x20, 0x49, 0xf2, 0x9b, 0x99, 0xf0, 0x4b, 0x22, 0x4f, 0x26, 0x9d, 0xf4, 0xf6, 0x9f, 0x24, 0x4d, 0xbe, 0xd7, 0x6c, 0x5, 0x7, 0x6e, 0xd5, 0xbc, 0xd1, 0xb8, 0x3, 0x6a, 0x68, 0x1, 0xba, 0xd3, 0x60, 0x9, 0xb2, 0xdb, 0xd9, 0xb0, 0xb, 0x62, 0xf, 0x66, 0xdd, 0xb4, 0xb6, 0xdf, 0x64, 0xd, 0x1f, 0x76, 0xcd, 0xa4, 0xa6, 0xcf, 0x74, 0x1d, 0x70, 0x19, 0xa2, 0xcb, 0xc9, 0xa0, 0x1b, 0x72, 0xc1, 0xa8, 0x13, 0x7a, 0x78, 0x11, 0xaa, 0xc3, 0xae, 0xc7, 0x7c, 0x15, 0x17, 0x7e, 0xc5, 0xac, 0xe1, 0x88, 0x33, 0x5a, 0x58, 0x31, 0x8a, 0xe3, 0x8e, 0xe7, 0x5c, 0x35, 0x37, 0x5e, 0xe5, 0x8c, 0x3f, 0x56, 0xed, 0x84, 0x86, 0xef, 0x54, 0x3d, 0x50, 0x39, 0x82, 0xeb, 0xe9, 0x80, 0x3b, 0x52, 0x40, 0x29, 0x92, 0xfb, 0xf9, 0x90, 0x2b, 0x42, 0x2f, 0x46, 0xfd, 0x94, 0x96, 0xff, 0x44, 0x2d, 0x9e, 0xf7, 0x4c, 0x25, 0x27, 0x4e, 0xf5, 0x9c, 0xf1, 0x98, 0x23, 0x4a, 0x48, 0x21, 0x9a, 0xf3}, [256]uint8{0x0, 0x6a, 0xd4, 0xbe, 0xb5, 0xdf, 0x61, 0xb, 0x77, 0x1d, 0xa3, 0xc9, 0xc2, 0xa8, 0x16, 0x7c, 0xee, 0x84, 0x3a, 0x50, 0x5b, 0x31, 0x8f, 0xe5, 0x99, 0xf3, 0x4d, 0x27, 0x2c, 0x46, 0xf8, 0x92, 0xc1, 0xab, 0x15, 0x7f, 0x74, 0x1e, 0xa0, 0xca, 0xb6, 0xdc, 0x62, 0x8, 0x3, 0x69, 0xd7, 0xbd, 0x2f, 0x45, 0xfb, 0x91, 0x9a, 0xf0, 0x4e, 0x24, 0x58, 0x32, 0x8c, 0xe6, 0xed, 0x87, 0x39, 0x53, 0x9f, 0xf5, 0x4b, 0x21, 0x2a, 0x40, 0xfe, 0x94, 0xe8, 0x82, 0x3c, 0x56, 0x5d, 0x37, 0x89, 0xe3, 0x71, 0x1b, 0xa5, 0xcf, 0xc4, 0xae, 0x10, 0x7a, 0x6, 0x6c, 0xd2, 0xb8, 0xb3, 0xd9, 0x67, 0xd, 0x5e, 0x34, 0x8a, 0xe0, 0xeb, 0x81, 0x3f, 0x55, 0x29, 0x43, 0xfd, 0x97, 0x9c, 0xf6, 0x48, 0x22, 0xb0, 0xda, 0x64, 0xe, 0x5, 0x6f, 0xd1, 0xbb, 0xc7, 0xad, 0x13, 0x79, 0x72, 0x18, 0xa6, 0xcc, 0x23, 0x49, 0xf7, 0x9d, 0x96, 0xfc, 0x42, 0x28, 0x54, 0x3e, 0x80, 0xea, 0xe1, 0x8b, 0x35, 0x5f, 0xcd, 0xa7, 0x19, 0x73, 0x78, 0x12, 0xac, 0xc6, 0xba, 0xd0, 0x6e, 0x4, 0xf, 0x65, 0xdb, 0xb1, 0xe2, 0x88, 0x36, 0x5c, 0x57, 0x3d, 0x83, 0xe9, 0x95, 0xff, 0x41, 0x2b, 0x20, 0x4a, 0xf4, 0x9e, 0xc, 0x66, 0xd8, 0xb2, 0xb9, 0xd3, 0x6d, 0x7, 0x7b, 0x11, 0xaf, 0xc5, 0xce, 0xa4, 0x1a, 0x70, 0xbc, 0xd6, 0x68, 0x2, 0x9, 0x63, 0xdd, 0xb7, 0xcb, 0xa1, 0x1f, 0x75, 0x7e, 0x14, 0xaa, 0xc0, 0x52, 0x38, 0x86, 0xec, 0xe7, 0x8d, 0x33, 0x59, 0x25, 0x4f, 0xf1, 0x9b, 0x90, 0xfa, 0x44, 0x2e, 0x7d, 0x17, 0xa9, 0xc3, 0xc8, 0xa2, 0x1c, 0x76, 0xa, 0x60, 0xde, 0xb4, 0xbf, 0xd5, 0x6b, 0x1, 0x93, 0xf9, 0x47, 0x2d, 0x26, 0x4c, 0xf2, 0x98, 0xe4, 0x8e, 0x30, 0x5a, 0x51, 0x3b, 0x85, 0xef}, [256]uint8{0x0, 0x6b, 0xd6, 0xbd, 0xb1, 0xda, 0x67, 0xc, 0x7f, 0x14, 0xa9, 0xc2, 0xce, 0xa5, 0x18, 0x73, 0xfe, 0x95, 0x28, 0x43, 0x4f, 0x24, 0x99, 0xf2, 0x81, 0xea, 0x57, 0x3c, 0x30, 0x5b, 0xe6, 0x8d, 0xe1, 0x8a, 0x37, 0x5c, 0x50, 0x3b, 0x86, 0xed, 0x9e, 0xf5, 0x48, 0x23, 0x2f, 0x44, 0xf9, 0x92, 0x1f, 0x74, 0xc9, 0xa2, 0xae, 0xc5, 0x78, 0x13, 0x60, 0xb, 0xb6, 0xdd, 0xd1, 0xba, 0x7, 0x6c, 0xdf, 0xb4, 0x9, 0x62, 0x6e, 0x5, 0xb8, 0xd3, 0xa0, 0xcb, 0x76, 0x1d, 0x11, 0x7a, 0xc7, 0xac, 0x21, 0x4a, 0xf7, 0x9c, 0x90, 0xfb, 0x46, 0x2d, 0x5e, 0x35, 0x88, 0xe3, 0xef, 0x84, 0x39, 0x52, 0x3e, 0x55, 0xe8, 0x83, 0x8f, 0xe4, 0x59, 0x32, 0x41, 0x2a, 0x97, 0xfc, 0xf0, 0x9b, 0x26, 0x4d, 0xc0, 0xab, 0x16, 0x7d, 0x71, 0x1a, 0xa7, 0xcc, 0xbf, 0xd4, 0x69, 0x2, 0xe, 0x65, 0xd8, 0xb3, 0xa3, 0xc8, 0x75, 0x1e, 0x12, 0x79, 0xc4, 0xaf, 0xdc, 0xb7, 0xa, 0x61, 0x6d, 0x6, 0xbb, 0xd0, 0x5d, 0x36, 0x8b, 0xe0, 0xec, 0x87, 0x3a, 0x51, 0x22, 0x49, 0xf4, 0x9f, 0x93, 0xf8, 0x45, 0x2e, 0x42, 0x29, 0x94, 0xff, 0xf3, 0x98, 0x25, 0x4e, 0x3d, 0x56, 0xeb, 0x80, 0x8c, 0xe7, 0x5a, 0x31, 0xbc, 0xd7, 0x6a, 0x1, 0xd, 0x66, 0xdb, 0xb0, 0xc3, 0xa8, 0x15, 0x7e, 0x72, 0x19, 0xa4, 0xcf, 0x7c, 0x17, 0xaa, 0xc1, 0xcd, 0xa6, 0x1b, 0x70, 0x3, 0x68, 0xd5, 0xbe, 0xb2, 0xd9, 0x64, 0xf, 0x82, 0xe9, 0x54, 0x3f, 0x33, 0x58, 0xe5, 0x8e, 0xfd, 0x96, 0x2b, 0x40, 0x4c, 0x27, 0x9a, 0xf1, 0x9d, 0xf6, 0x4b, 0x20, 0x2c, 0x47, 0xfa, 0x91, 0xe2, 0x89, 0x34, 0x5f, 0x53, 0x38, 0x85, 0xee, 0x63, 0x8, 0xb5, 0xde, 0xd2, 0xb9, 0x4, 0x6f, 0x1c, 0x77, 0xca, 0xa1, 0xad, 0xc6, 0x7b, 0x10}, [256]uint8{0x0, 0x6c, 0xd8, 0xb4, 0xad, 0xc1, 0x75, 0x19, 0x47, 0x2b, 0x9f, 0xf3, 0xea, 0x86, 0x32, 0x5e, 0x8e, 0xe2, 0x56, 0x3a, 0x23, 0x4f, 0xfb, 0x97, 0xc9, 0xa5, 0x11, 0x7d, 0x64, 0x8, 0xbc, 0xd0, 0x1, 0x6d, 0xd9, 0xb5, 0xac, 0xc0, 0x74, 0x18, 0x46, 0x2a, 0x9e, 0xf2, 0xeb, 0x87, 0x33, 0x5f, 0x8f, 0xe3, 0x57, 0x3b, 0x22, 0x4e, 0xfa, 0x96, 0xc8, 0xa4, 0x10, 0x7c, 0x65, 0x9, 0xbd, 0xd1, 0x2, 0x6e, 0xda, 0xb6, 0xaf, 0xc3, 0x77, 0x1b, 0x45, 0x29, 0x9d, 0xf1, 0xe8, 0x84, 0x30, 0x5c, 0x8c, 0xe0, 0x54, 0x38, 0x21, 0x4d, 0xf9, 0x95, 0xcb, 0xa7, 0x13, 0x7f, 0x66, 0xa, 0xbe, 0xd2, 0x3, 0x6f, 0xdb, 0xb7, 0xae, 0xc2, 0x76, 0x1a, 0x44, 0x28, 0x9c, 0xf0, 0xe9, 0x85, 0x31, 0x5d, 0x8d, 0xe1, 0x55, 0x39, 0x20, 0x4c, 0xf8, 0x94, 0xca, 0xa6, 0x12, 0x7e, 0x67, 0xb, 0xbf, 0xd3, 0x4, 0x68, 0xdc, 0xb0, 0xa9, 0xc5, 0x71, 0x1d, 0x43, 0x2f, 0x9b, 0xf7, 0xee, 0x82, 0x36, 0x5a, 0x8a, 0xe6, 0x52, 0x3e, 0x27, 0x4b, 0xff, 0x93, 0xcd, 0xa1, 0x15, 0x79, 0x60, 0xc, 0xb8, 0xd4, 0x5, 0x69, 0xdd, 0xb1, 0xa8, 0xc4, 0x70, 0x1c, 0x42, 0x2e, 0x9a, 0xf6, 0xef, 0x83, 0x37, 0x5b, 0x8b, 0xe7, 0x53, 0x3f, 0x26, 0x4a, 0xfe, 0x92, 0xcc, 0xa0, 0x14, 0x78, 0x61, 0xd, 0xb9, 0xd5, 0x6, 0x6a, 0xde, 0xb2, 0xab, 0xc7, 0x73, 0x1f, 0x41, 0x2d, 0x99, 0xf5, 0xec, 0x80, 0x34, 0x58, 0x88, 0xe4, 0x50, 0x3c, 0x25, 0x49, 0xfd, 0x91, 0xcf, 0xa3, 0x17, 0x7b, 0x62, 0xe, 0xba, 0xd6, 0x7, 0x6b, 0xdf, 0xb3, 0xaa, 0xc6, 0x72, 0x1e, 0x40, 0x2c, 0x98, 0xf4, 0xed, 0x81, 0x35, 0x59, 0x89, 0xe5, 0x51, 0x3d, 0x24, 0x48, 0xfc, 0x90, 0xce, 0xa2, 0x16, 0x7a, 0x63, 0xf, 0xbb, 0xd7}, [256]uint8{0x0, 0x6d, 0xda, 0xb7, 0xa9, 0xc4, 0x73, 0x1e, 0x4f, 0x22, 0x95, 0xf8, 0xe6, 0x8b, 0x3c, 0x51, 0x9e, 0xf3, 0x44, 0x29, 0x37, 0x5a, 0xed, 0x80, 0xd1, 0xbc, 0xb, 0x66, 0x78, 0x15, 0xa2, 0xcf, 0x21, 0x4c, 0xfb, 0x96, 0x88, 0xe5, 0x52, 0x3f, 0x6e, 0x3, 0xb4, 0xd9, 0xc7, 0xaa, 0x1d, 0x70, 0xbf, 0xd2, 0x65, 0x8, 0x16, 0x7b, 0xcc, 0xa1, 0xf0, 0x9d, 0x2a, 0x47, 0x59, 0x34, 0x83, 0xee, 0x42, 0x2f, 0x98, 0xf5, 0xeb, 0x86, 0x31, 0x5c, 0xd, 0x60, 0xd7, 0xba, 0xa4, 0xc9, 0x7e, 0x13, 0xdc, 0xb1, 0x6, 0x6b, 0x75, 0x18, 0xaf, 0xc2, 0x93, 0xfe, 0x49, 0x24, 0x3a, 0x57, 0xe0, 0x8d, 0x63, 0xe, 0xb9, 0xd4, 0xca, 0xa7, 0x10, 0x7d, 0x2c, 0x41, 0xf6, 0x9b, 0x85, 0xe8, 0x5f, 0x32, 0xfd, 0x90, 0x27, 0x4a, 0x54, 0x39, 0x8e, 0xe3, 0xb2, 0xdf, 0x68, 0x5, 0x1b, 0x76, 0xc1, 0xac, 0x84, 0xe9, 0x5e, 0x33, 0x2d, 0x40, 0xf7, 0x9a, 0xcb, 0xa6, 0x11, 0x7c, 0x62, 0xf, 0xb8, 0xd5, 0x1a, 0x77, 0xc0, 0xad, 0xb3, 0xde, 0x69, 0x4, 0x55, 0x38, 0x8f, 0xe2, 0xfc, 0x91, 0x26, 0x4b, 0xa5, 0xc8, 0x7f, 0x12, 0xc, 0x61, 0xd6, 0xbb, 0xea, 0x87, 0x30, 0x5d, 0x43, 0x2e, 0x99, 0xf4, 0x3b, 0x56, 0xe1, 0x8c, 0x92, 0xff, 0x48, 0x25, 0x74, 0x19, 0xae, 0xc3, 0xdd, 0xb0, 0x7, 0x6a, 0xc6, 0xab, 0x1c, 0x71, 0x6f, 0x2, 0xb5, 0xd8, 0x89, 0xe4, 0x53, 0x3e, 0x20, 0x4d, 0xfa, 0x97, 0x58, 0x35, 0x82, 0xef, 0xf1, 0x9c, 0x2b, 0x46, 0x17, 0x7a, 0xcd, 0xa0, 0xbe, 0xd3, 0x64, 0x9, 0xe7, 0x8a, 0x3d, 0x50, 0x4e, 0x23, 0x94, 0xf9, 0xa8, 0xc5, 0x72, 0x1f, 0x1, 0x6c, 0xdb, 0xb6, 0x79, 0x14, 0xa3, 0xce, 0xd0, 0xbd, 0xa, 0x67, 0x36, 0x5b, 0xec, 0x81, 0x9f, 0xf2, 0x45, 0x28}, [256]uint8{0x0, 0x6e, 0xdc, 0xb2, 0xa5, 0xcb, 0x79, 0x17, 0x57, 0x39, 0x8b, 0xe5, 0xf2, 0x9c, 0x2e, 0x40, 0xae, 0xc0, 0x72, 0x1c, 0xb, 0x65, 0xd7, 0xb9, 0xf9, 0x97, 0x25, 0x4b, 0x5c, 0x32, 0x80, 0xee, 0x41, 0x2f, 0x9d, 0xf3, 0xe4, 0x8a, 0x38, 0x56, 0x16, 0x78, 0xca, 0xa4, 0xb3, 0xdd, 0x6f, 0x1, 0xef, 0x81, 0x33, 0x5d, 0x4a, 0x24, 0x96, 0xf8, 0xb8, 0xd6, 0x64, 0xa, 0x1d, 0x73, 0xc1, 0xaf, 0x82, 0xec, 0x5e, 0x30, 0x27, 0x49, 0xfb, 0x95, 0xd5, 0xbb, 0x9, 0x67, 0x70, 0x1e, 0xac, 0xc2, 0x2c, 0x42, 0xf0, 0x9e, 0x89, 0xe7, 0x55, 0x3b, 0x7b, 0x15, 0xa7, 0xc9, 0xde, 0xb0, 0x2, 0x6c, 0xc3, 0xad, 0x1f, 0x71, 0x66, 0x8, 0xba, 0xd4, 0x94, 0xfa, 0x48, 0x26, 0x31, 0x5f, 0xed, 0x83, 0x6d, 0x3, 0xb1, 0xdf, 0xc8, 0xa6, 0x14, 0x7a, 0x3a, 0x54, 0xe6, 0x88, 0x9f, 0xf1, 0x43, 0x2d, 0x19, 0x77, 0xc5, 0xab, 0xbc, 0xd2, 0x60, 0xe, 0x4e, 0x20, 0x92, 0xfc, 0xeb, 0x85, 0x37, 0x59, 0xb7, 0xd9, 0x6b, 0x5, 0x12, 0x7c, 0xce, 0xa0, 0xe0, 0x8e, 0x3c, 0x52, 0x45, 0x2b, 0x99, 0xf7, 0x58, 0x36, 0x84, 0xea, 0xfd, 0x93, 0x21, 0x4f, 0xf, 0x61, 0xd3, 0xbd, 0xaa, 0xc4, 0x76, 0x18, 0xf6, 0x98, 0x2a, 0x44, 0x53, 0x3d, 0x8f, 0xe1, 0xa1, 0xcf, 0x7d, 0x13, 0x4, 0x6a, 0xd8, 0xb6, 0x9b, 0xf5, 0x47, 0x29, 0x3e, 0x50, 0xe2, 0x8c, 0xcc, 0xa2, 0x10, 0x7e, 0x69, 0x7, 0xb5, 0xdb, 0x35, 0x5b, 0xe9, 0x87, 0x90, 0xfe, 0x4c, 0x22, 0x62, 0xc, 0xbe, 0xd0, 0xc7, 0xa9, 0x1b, 0x75, 0xda, 0xb4, 0x6, 0x68, 0x7f, 0x11, 0xa3, 0xcd, 0x8d, 0xe3, 0x51, 0x3f, 0x28, 0x46, 0xf4, 0x9a, 0x74, 0x1a, 0xa8, 0xc6, 0xd1, 0xbf, 0xd, 0x63, 0x23, 0x4d, 0xff, 0x91, 0x86, 0xe8, 0x5a, 0x34}, [256]uint8{0x0, 0x6f, 0xde, 0xb1, 0xa1, 0xce, 0x7f, 0x10, 0x5f, 0x30, 0x81, 0xee, 0xfe, 0x91, 0x20, 0x4f, 0xbe, 0xd1, 0x60, 0xf, 0x1f, 0x70, 0xc1, 0xae, 0xe1, 0x8e, 0x3f, 0x50, 0x40, 0x2f, 0x9e, 0xf1, 0x61, 0xe, 0xbf, 0xd0, 0xc0, 0xaf, 0x1e, 0x71, 0x3e, 0x51, 0xe0, 0x8f, 0x9f, 0xf0, 0x41, 0x2e, 0xdf, 0xb0, 0x1, 0x6e, 0x7e, 0x11, 0xa0, 0xcf, 0x80, 0xef, 0x5e, 0x31, 0x21, 0x4e, 0xff, 0x90, 0xc2, 0xad, 0x1c, 0x73, 0x63, 0xc, 0xbd, 0xd2, 0x9d, 0xf2, 0x43, 0x2c, 0x3c, 0x53, 0xe2, 0x8d, 0x7c, 0x13, 0xa2, 0xcd, 0xdd, 0xb2, 0x3, 0x6c, 0x23, 0x4c, 0xfd, 0x92, 0x82, 0xed, 0x5c, 0x33, 0xa3, 0xcc, 0x7d, 0x12, 0x2, 0x6d, 0xdc, 0xb3, 0xfc, 0x93, 0x22, 0x4d, 0x5d, 0x32, 0x83, 0xec, 0x1d, 0x72, 0xc3, 0xac, 0xbc, 0xd3, 0x62, 0xd, 0x42, 0x2d, 0x9c, 0xf3, 0xe3, 0x8c, 0x3d, 0x52, 0x99, 0xf6, 0x47, 0x28, 0x38, 0x57, 0xe6, 0x89, 0xc6, 0xa9, 0x18, 0x77, 0x67, 0x8, 0xb9, 0xd6, 0x27, 0x48, 0xf9, 0x96, 0x86, 0xe9, 0x58, 0x37, 0x78, 0x17, 0xa6, 0xc9, 0xd9, 0xb6, 0x7, 0x68, 0xf8, 0x97, 0x26, 0x49, 0x59, 0x36, 0x87, 0xe8, 0xa7, 0xc8, 0x79, 0x16, 0x6, 0x69, 0xd8, 0xb7, 0x46, 0x29, 0x98, 0xf7, 0xe7, 0x88, 0x39, 0x56, 0x19, 0x76, 0xc7, 0xa8, 0xb8, 0xd7, 0x66, 0x9, 0x5b, 0x34, 0x85, 0xea, 0xfa, 0x95, 0x24, 0x4b, 0x4, 0x6b, 0xda, 0xb5, 0xa5, 0xca, 0x7b, 0x14, 0xe5, 0x8a, 0x3b, 0x54, 0x44, 0x2b, 0x9a, 0xf5, 0xba, 0xd5, 0x64, 0xb, 0x1b, 0x74, 0xc5, 0xaa, 0x3a, 0x55, 0xe4, 0x8b, 0x9b, 0xf4, 0x45, 0x2a, 0x65, 0xa, 0xbb, 0xd4, 0xc4, 0xab, 0x1a, 0x75, 0x84, 0xeb, 0x5a, 0x35, 0x25, 0x4a, 0xfb, 0x94, 0xdb, 0xb4, 0x5, 0x6a, 0x7a, 0x15, 0xa4, 0xcb}, [256]uint8{0x0, 0x70, 0xe0, 0x90, 0xdd, 0xad, 0x3d, 0x4d, 0xa7, 0xd7, 0x47, 0x37, 0x7a, 0xa, 0x9a, 0xea, 0x53, 0x23, 0xb3, 0xc3, 0x8e, 0xfe, 0x6e, 0x1e, 0xf4, 0x84, 0x14, 0x64, 0x29, 0x59, 0xc9, 0xb9, 0xa6, 0xd6, 0x46, 0x36, 0x7b, 0xb, 0x9b, 0xeb, 0x1, 0x71, 0xe1, 0x91, 0xdc, 0xac, 0x3c, 0x4c, 0xf5, 0x85, 0x15, 0x65, 0x28, 0x58, 0xc8, 0xb8, 0x52, 0x22, 0xb2, 0xc2, 0x8f, 0xff, 0x6f, 0x1f, 0x51, 0x21, 0xb1, 0xc1, 0x8c, 0xfc, 0x6c, 0x1c, 0xf6, 0x86, 0x16, 0x66, 0x2b, 0x5b, 0xcb, 0xbb, 0x2, 0x72, 0xe2, 0x92, 0xdf, 0xaf, 0x3f, 0x4f, 0xa5, 0xd5, 0x45, 0x35, 0x78, 0x8, 0x98, 0xe8, 0xf7, 0x87, 0x17, 0x67, 0x2a, 0x5a, 0xca, 0xba, 0x50, 0x20, 0xb0, 0xc0, 0x8d, 0xfd, 0x6d, 0x1d, 0xa4, 0xd4, 0x44, 0x34, 0x79, 0x9, 0x99, 0xe9, 0x3, 0x73, 0xe3, 0x93, 0xde, 0xae, 0x3e, 0x4e, 0xa2, 0xd2, 0x42, 0x32, 0x7f, 0xf, 0x9f, 0xef, 0x5, 0x75, 0xe5, 0x95, 0xd8, 0xa8, 0x38, 0x48, 0xf1, 0x81, 0x11, 0x61, 0x2c, 0x5c, 0xcc, 0xbc, 0x56, 0x26, 0xb6, 0xc6, 0x8b, 0xfb, 0x6b, 0x1b, 0x4, 0x74, 0xe4, 0x94, 0xd9, 0xa9, 0x39, 0x49, 0xa3, 0xd3, 0x43, 0x33, 0x7e, 0xe, 0x9e, 0xee, 0x57, 0x27, 0xb7, 0xc7, 0x8a, 0xfa, 0x6a, 0x1a, 0xf0, 0x80, 0x10, 0x60, 0x2d, 0x5d, 0xcd, 0xbd, 0xf3, 0x83, 0x13, 0x63, 0x2e, 0x5e, 0xce, 0xbe, 0x54, 0x24, 0xb4, 0xc4, 0x89, 0xf9, 0x69, 0x19, 0xa0, 0xd0, 0x40, 0x30, 0x7d, 0xd, 0x9d, 0xed, 0x7, 0x77, 0xe7, 0x97, 0xda, 0xaa, 0x3a, 0x4a, 0x55, 0x25, 0xb5, 0xc5, 0x88, 0xf8, 0x68, 0x18, 0xf2, 0x82, 0x12, 0x62, 0x2f, 0x5f, 0xcf, 0xbf, 0x6, 0x76, 0xe6, 0x96, 0xdb, 0xab, 0x3b, 0x4b, 0xa1, 0xd1, 0x41, 0x31, 0x7c, 0xc, 0x9c, 0xec}, [256]uint8{0x0, 0x71, 0xe2, 0x93, 0xd9, 0xa8, 0x3b, 0x4a, 0xaf, 0xde, 0x4d, 0x3c, 0x76, 0x7, 0x94, 0xe5, 0x43, 0x32, 0xa1, 0xd0, 0x9a, 0xeb, 0x78, 0x9, 0xec, 0x9d, 0xe, 0x7f, 0x35, 0x44, 0xd7, 0xa6, 0x86, 0xf7, 0x64, 0x15, 0x5f, 0x2e, 0xbd, 0xcc, 0x29, 0x58, 0xcb, 0xba, 0xf0, 0x81, 0x12, 0x63, 0xc5, 0xb4, 0x27, 0x56, 0x1c, 0x6d, 0xfe, 0x8f, 0x6a, 0x1b, 0x88, 0xf9, 0xb3, 0xc2, 0x51, 0x20, 0x11, 0x60, 0xf3, 0x82, 0xc8, 0xb9, 0x2a, 0x5b, 0xbe, 0xcf, 0x5c, 0x2d, 0x67, 0x16, 0x85, 0xf4, 0x52, 0x23, 0xb0, 0xc1, 0x8b, 0xfa, 0x69, 0x18, 0xfd, 0x8c, 0x1f, 0x6e, 0x24, 0x55, 0xc6, 0xb7, 0x97, 0xe6, 0x75, 0x4, 0x4e, 0x3f, 0xac, 0xdd, 0x38, 0x49, 0xda, 0xab, 0xe1, 0x90, 0x3, 0x72, 0xd4, 0xa5, 0x36, 0x47, 0xd, 0x7c, 0xef, 0x9e, 0x7b, 0xa, 0x99, 0xe8, 0xa2, 0xd3, 0x40, 0x31, 0x22, 0x53, 0xc0, 0xb1, 0xfb, 0x8a, 0x19, 0x68, 0x8d, 0xfc, 0x6f, 0x1e, 0x54, 0x25, 0xb6, 0xc7, 0x61, 0x10, 0x83, 0xf2, 0xb8, 0xc9, 0x5a, 0x2b, 0xce, 0xbf, 0x2c, 0x5d, 0x17, 0x66, 0xf5, 0x84, 0xa4, 0xd5, 0x46, 0x37, 0x7d, 0xc, 0x9f, 0xee, 0xb, 0x7a, 0xe9, 0x98, 0xd2, 0xa3, 0x30, 0x41, 0xe7, 0x96, 0x5, 0x74, 0x3e, 0x4f, 0xdc, 0xad, 0x48, 0x39, 0xaa, 0xdb, 0x91, 0xe0, 0x73, 0x2, 0x33, 0x42, 0xd1, 0xa0, 0xea, 0x9b, 0x8, 0x79, 0x9c, 0xed, 0x7e, 0xf, 0x45, 0x34, 0xa7, 0xd6, 0x70, 0x1, 0x92, 0xe3, 0xa9, 0xd8, 0x4b, 0x3a, 0xdf, 0xae, 0x3d, 0x4c, 0x6, 0x77, 0xe4, 0x95, 0xb5, 0xc4, 0x57, 0x26, 0x6c, 0x1d, 0x8e, 0xff, 0x1a, 0x6b, 0xf8, 0x89, 0xc3, 0xb2, 0x21, 0x50, 0xf6, 0x87, 0x14, 0x65, 0x2f, 0x5e, 0xcd, 0xbc, 0x59, 0x28, 0xbb, 0xca, 0x80, 0xf1, 0x62, 0x13}, [256]uint8{0x0, 0x72, 0xe4, 0x96, 0xd5, 0xa7, 0x31, 0x43, 0xb7, 0xc5, 0x53, 0x21, 0x62, 0x10, 0x86, 0xf4, 0x73, 0x1, 0x97, 0xe5, 0xa6, 0xd4, 0x42, 0x30, 0xc4, 0xb6, 0x20, 0x52, 0x11, 0x63, 0xf5, 0x87, 0xe6, 0x94, 0x2, 0x70, 0x33, 0x41, 0xd7, 0xa5, 0x51, 0x23, 0xb5, 0xc7, 0x84, 0xf6, 0x60, 0x12, 0x95, 0xe7, 0x71, 0x3, 0x40, 0x32, 0xa4, 0xd6, 0x22, 0x50, 0xc6, 0xb4, 0xf7, 0x85, 0x13, 0x61, 0xd1, 0xa3, 0x35, 0x47, 0x4, 0x76, 0xe0, 0x92, 0x66, 0x14, 0x82, 0xf0, 0xb3, 0xc1, 0x57, 0x25, 0xa2, 0xd0, 0x46, 0x34, 0x77, 0x5, 0x93, 0xe1, 0x15, 0x67, 0xf1, 0x83, 0xc0, 0xb2, 0x24, 0x56, 0x37, 0x45, 0xd3, 0xa1, 0xe2, 0x90, 0x6, 0x74, 0x80, 0xf2, 0x64, 0x16, 0x55, 0x27, 0xb1, 0xc3, 0x44, 0x36, 0xa0, 0xd2, 0x91, 0xe3, 0x75, 0x7, 0xf3, 0x81, 0x17, 0x65, 0x26, 0x54, 0xc2, 0xb0, 0xbf, 0xcd, 0x5b, 0x29, 0x6a, 0x18, 0x8e, 0xfc, 0x8, 0x7a, 0xec, 0x9e, 0xdd, 0xaf, 0x39, 0x4b, 0xcc, 0xbe, 0x28, 0x5a, 0x19, 0x6b, 0xfd, 0x8f, 0x7b, 0x9, 0x9f, 0xed, 0xae, 0xdc, 0x4a, 0x38, 0x59, 0x2b, 0xbd, 0xcf, 0x8c, 0xfe, 0x68, 0x1a, 0xee, 0x9c, 0xa, 0x78, 0x3b, 0x49, 0xdf, 0xad, 0x2a, 0x58, 0xce, 0xbc, 0xff, 0x8d, 0x1b, 0x69, 0x9d, 0xef, 0x79, 0xb, 0x48, 0x3a, 0xac, 0xde, 0x6e, 0x1c, 0x8a, 0xf8, 0xbb, 0xc9, 0x5f, 0x2d, 0xd9, 0xab, 0x3d, 0x4f, 0xc, 0x7e, 0xe8, 0x9a, 0x1d, 0x6f, 0xf9, 0x8b, 0xc8, 0xba, 0x2c, 0x5e, 0xaa, 0xd8, 0x4e, 0x3c, 0x7f, 0xd, 0x9b, 0xe9, 0x88, 0xfa, 0x6c, 0x1e, 0x5d, 0x2f, 0xb9, 0xcb, 0x3f, 0x4d, 0xdb, 0xa9, 0xea, 0x98, 0xe, 0x7c, 0xfb, 0x89, 0x1f, 0x6d, 0x2e, 0x5c, 0xca, 0xb8, 0x4c, 0x3e, 0xa8, 0xda, 0x99, 0xeb, 0x7d, 0xf}, [256]uint8{0x0, 0x73, 0xe6, 0x95, 0xd1, 0xa2, 0x37, 0x44, 0xbf, 0xcc, 0x59, 0x2a, 0x6e, 0x1d, 0x88, 0xfb, 0x63, 0x10, 0x85, 0xf6, 0xb2, 0xc1, 0x54, 0x27, 0xdc, 0xaf, 0x3a, 0x49, 0xd, 0x7e, 0xeb, 0x98, 0xc6, 0xb5, 0x20, 0x53, 0x17, 0x64, 0xf1, 0x82, 0x79, 0xa, 0x9f, 0xec, 0xa8, 0xdb, 0x4e, 0x3d, 0xa5, 0xd6, 0x43, 0x30, 0x74, 0x7, 0x92, 0xe1, 0x1a, 0x69, 0xfc, 0x8f, 0xcb, 0xb8, 0x2d, 0x5e, 0x91, 0xe2, 0x77, 0x4, 0x40, 0x33, 0xa6, 0xd5, 0x2e, 0x5d, 0xc8, 0xbb, 0xff, 0x8c, 0x19, 0x6a, 0xf2, 0x81, 0x14, 0x67, 0x23, 0x50, 0xc5, 0xb6, 0x4d, 0x3e, 0xab, 0xd8, 0x9c, 0xef, 0x7a, 0x9, 0x57, 0x24, 0xb1, 0xc2, 0x86, 0xf5, 0x60, 0x13, 0xe8, 0x9b, 0xe, 0x7d, 0x39, 0x4a, 0xdf, 0xac, 0x34, 0x47, 0xd2, 0xa1, 0xe5, 0x96, 0x3, 0x70, 0x8b, 0xf8, 0x6d, 0x1e, 0x5a, 0x29, 0xbc, 0xcf, 0x3f, 0x4c, 0xd9, 0xaa, 0xee, 0x9d, 0x8, 0x7b, 0x80, 0xf3, 0x66, 0x15, 0x51, 0x22, 0xb7, 0xc4, 0x5c, 0x2f, 0xba, 0xc9, 0x8d, 0xfe, 0x6b, 0x18, 0xe3, 0x90, 0x5, 0x76, 0x32, 0x41, 0xd4, 0xa7, 0xf9, 0x8a, 0x1f, 0x6c, 0x28, 0x5b, 0xce, 0xbd, 0x46, 0x35, 0xa0, 0xd3, 0x97, 0xe4, 0x71, 0x2, 0x9a, 0xe9, 0x7c, 0xf, 0x4b, 0x38, 0xad, 0xde, 0x25, 0x56, 0xc3, 0xb0, 0xf4, 0x87, 0x12, 0x61, 0xae, 0xdd, 0x48, 0x3b, 0x7f, 0xc, 0x99, 0xea, 0x11, 0x62, 0xf7, 0x84, 0xc0, 0xb3, 0x26, 0x55, 0xcd, 0xbe, 0x2b, 0x58, 0x1c, 0x6f, 0xfa, 0x89, 0x72, 0x1, 0x94, 0xe7, 0xa3, 0xd0, 0x45, 0x36, 0x68, 0x1b, 0x8e, 0xfd, 0xb9, 0xca, 0x5f, 0x2c, 0xd7, 0xa4, 0x31, 0x42, 0x6, 0x75, 0xe0, 0x93, 0xb, 0x78, 0xed, 0x9e, 0xda, 0xa9, 0x3c, 0x4f, 0xb4, 0xc7, 0x52, 0x21, 0x65, 0x16, 0x83, 0xf0}, [256]uint8{0x0, 0x74, 0xe8, 0x9c, 0xcd, 0xb9, 0x25, 0x51, 0x87, 0xf3, 0x6f, 0x1b, 0x4a, 0x3e, 0xa2, 0xd6, 0x13, 0x67, 0xfb, 0x8f, 0xde, 0xaa, 0x36, 0x42, 0x94, 0xe0, 0x7c, 0x8, 0x59, 0x2d, 0xb1, 0xc5, 0x26, 0x52, 0xce, 0xba, 0xeb, 0x9f, 0x3, 0x77, 0xa1, 0xd5, 0x49, 0x3d, 0x6c, 0x18, 0x84, 0xf0, 0x35, 0x41, 0xdd, 0xa9, 0xf8, 0x8c, 0x10, 0x64, 0xb2, 0xc6, 0x5a, 0x2e, 0x7f, 0xb, 0x97, 0xe3, 0x4c, 0x38, 0xa4, 0xd0, 0x81, 0xf5, 0x69, 0x1d, 0xcb, 0xbf, 0x23, 0x57, 0x6, 0x72, 0xee, 0x9a, 0x5f, 0x2b, 0xb7, 0xc3, 0x92, 0xe6, 0x7a, 0xe, 0xd8, 0xac, 0x30, 0x44, 0x15, 0x61, 0xfd, 0x89, 0x6a, 0x1e, 0x82, 0xf6, 0xa7, 0xd3, 0x4f, 0x3b, 0xed, 0x99, 0x5, 0x71, 0x20, 0x54, 0xc8, 0xbc, 0x79, 0xd, 0x91, 0xe5, 0xb4, 0xc0, 0x5c, 0x28, 0xfe, 0x8a, 0x16, 0x62, 0x33, 0x47, 0xdb, 0xaf, 0x98, 0xec, 0x70, 0x4, 0x55, 0x21, 0xbd, 0xc9, 0x1f, 0x6b, 0xf7, 0x83, 0xd2, 0xa6, 0x3a, 0x4e, 0x8b, 0xff, 0x63, 0x17, 0x46, 0x32, 0xae, 0xda, 0xc, 0x78, 0xe4, 0x90, 0xc1, 0xb5, 0x29, 0x5d, 0xbe, 0xca, 0x56, 0x22, 0x73, 0x7, 0x9b, 0xef, 0x39, 0x4d, 0xd1, 0xa5, 0xf4, 0x80, 0x1c, 0x68, 0xad, 0xd9, 0x45, 0x31, 0x60, 0x14, 0x88, 0xfc, 0x2a, 0x5e, 0xc2, 0xb6, 0xe7, 0x93, 0xf, 0x7b, 0xd4, 0xa0, 0x3c, 0x48, 0x19, 0x6d, 0xf1, 0x85, 0x53, 0x27, 0xbb, 0xcf, 0x9e, 0xea, 0x76, 0x2, 0xc7, 0xb3, 0x2f, 0x5b, 0xa, 0x7e, 0xe2, 0x96, 0x40, 0x34, 0xa8, 0xdc, 0x8d, 0xf9, 0x65, 0x11, 0xf2, 0x86, 0x1a, 0x6e, 0x3f, 0x4b, 0xd7, 0xa3, 0x75, 0x1, 0x9d, 0xe9, 0xb8, 0xcc, 0x50, 0x24, 0xe1, 0x95, 0x9, 0x7d, 0x2c, 0x58, 0xc4, 0xb0, 0x66, 0x12, 0x8e, 0xfa, 0xab, 0xdf, 0x43, 0x37}, [256]uint8{0x0, 0x75, 0xea, 0x9f, 0xc9, 0xbc, 0x23, 0x56, 0x8f, 0xfa, 0x65, 0x10, 0x46, 0x33, 0xac, 0xd9, 0x3, 0x76, 0xe9, 0x9c, 0xca, 0xbf, 0x20, 0x55, 0x8c, 0xf9, 0x66, 0x13, 0x45, 0x30, 0xaf, 0xda, 0x6, 0x73, 0xec, 0x99, 0xcf, 0xba, 0x25, 0x50, 0x89, 0xfc, 0x63, 0x16, 0x40, 0x35, 0xaa, 0xdf, 0x5, 0x70, 0xef, 0x9a, 0xcc, 0xb9, 0x26, 0x53, 0x8a, 0xff, 0x60, 0x15, 0x43, 0x36, 0xa9, 0xdc, 0xc, 0x79, 0xe6, 0x93, 0xc5, 0xb0, 0x2f, 0x5a, 0x83, 0xf6, 0x69, 0x1c, 0x4a, 0x3f, 0xa0, 0xd5, 0xf, 0x7a, 0xe5, 0x90, 0xc6, 0xb3, 0x2c, 0x59, 0x80, 0xf5, 0x6a, 0x1f, 0x49, 0x3c, 0xa3, 0xd6, 0xa, 0x7f, 0xe0, 0x95, 0xc3, 0xb6, 0x29, 0x5c, 0x85, 0xf0, 0x6f, 0x1a, 0x4c, 0x39, 0xa6, 0xd3, 0x9, 0x7c, 0xe3, 0x96, 0xc0, 0xb5, 0x2a, 0x5f, 0x86, 0xf3, 0x6c, 0x19, 0x4f, 0x3a, 0xa5, 0xd0, 0x18, 0x6d, 0xf2, 0x87, 0xd1, 0xa4, 0x3b, 0x4e, 0x97, 0xe2, 0x7d, 0x8, 0x5e, 0x2b, 0xb4, 0xc1, 0x1b, 0x6e, 0xf1, 0x84, 0xd2, 0xa7, 0x38, 0x4d, 0x94, 0xe1, 0x7e, 0xb, 0x5d, 0x28, 0xb7, 0xc2, 0x1e, 0x6b, 0xf4, 0x81, 0xd7, 0xa2, 0x3d, 0x48, 0x91, 0xe4, 0x7b, 0xe, 0x58, 0x2d, 0xb2, 0xc7, 0x1d, 0x68, 0xf7, 0x82, 0xd4, 0xa1, 0x3e, 0x4b, 0x92, 0xe7, 0x78, 0xd, 0x5b, 0x2e, 0xb1, 0xc4, 0x14, 0x61, 0xfe, 0x8b, 0xdd, 0xa8, 0x37, 0x42, 0x9b, 0xee, 0x71, 0x4, 0x52, 0x27, 0xb8, 0xcd, 0x17, 0x62, 0xfd, 0x88, 0xde, 0xab, 0x34, 0x41, 0x98, 0xed, 0x72, 0x7, 0x51, 0x24, 0xbb, 0xce, 0x12, 0x67, 0xf8, 0x8d, 0xdb, 0xae, 0x31, 0x44, 0x9d, 0xe8, 0x77, 0x2, 0x54, 0x21, 0xbe, 0xcb, 0x11, 0x64, 0xfb, 0x8e, 0xd8, 0xad, 0x32, 0x47, 0x9e, 0xeb, 0x74, 0x1, 0x57, 0x22, 0xbd, 0xc8}, [256]uint8{0x0, 0x76, 0xec, 0x9a, 0xc5, 0xb3, 0x29, 0x5f, 0x97, 0xe1, 0x7b, 0xd, 0x52, 0x24, 0xbe, 0xc8, 0x33, 0x45, 0xdf, 0xa9, 0xf6, 0x80, 0x1a, 0x6c, 0xa4, 0xd2, 0x48, 0x3e, 0x61, 0x17, 0x8d, 0xfb, 0x66, 0x10, 0x8a, 0xfc, 0xa3, 0xd5, 0x4f, 0x39, 0xf1, 0x87, 0x1d, 0x6b, 0x34, 0x42, 0xd8, 0xae, 0x55, 0x23, 0xb9, 0xcf, 0x90, 0xe6, 0x7c, 0xa, 0xc2, 0xb4, 0x2e, 0x58, 0x7, 0x71, 0xeb, 0x9d, 0xcc, 0xba, 0x20, 0x56, 0x9, 0x7f, 0xe5, 0x93, 0x5b, 0x2d, 0xb7, 0xc1, 0x9e, 0xe8, 0x72, 0x4, 0xff, 0x89, 0x13, 0x65, 0x3a, 0x4c, 0xd6, 0xa0, 0x68, 0x1e, 0x84, 0xf2, 0xad, 0xdb, 0x41, 0x37, 0xaa, 0xdc, 0x46, 0x30, 0x6f, 0x19, 0x83, 0xf5, 0x3d, 0x4b, 0xd1, 0xa7, 0xf8, 0x8e, 0x14, 0x62, 0x99, 0xef, 0x75, 0x3, 0x5c, 0x2a, 0xb0, 0xc6, 0xe, 0x78, 0xe2, 0x94, 0xcb, 0xbd, 0x27, 0x51, 0x85, 0xf3, 0x69, 0x1f, 0x40, 0x36, 0xac, 0xda, 0x12, 0x64, 0xfe, 0x88, 0xd7, 0xa1, 0x3b, 0x4d, 0xb6, 0xc0, 0x5a, 0x2c, 0x73, 0x5, 0x9f, 0xe9, 0x21, 0x57, 0xcd, 0xbb, 0xe4, 0x92, 0x8, 0x7e, 0xe3, 0x95, 0xf, 0x79, 0x26, 0x50, 0xca, 0xbc, 0x74, 0x2, 0x98, 0xee, 0xb1, 0xc7, 0x5d, 0x2b, 0xd0, 0xa6, 0x3c, 0x4a, 0x15, 0x63, 0xf9, 0x8f, 0x47, 0x31, 0xab, 0xdd, 0x82, 0xf4, 0x6e, 0x18, 0x49, 0x3f, 0xa5, 0xd3, 0x8c, 0xfa, 0x60, 0x16, 0xde, 0xa8, 0x32, 0x44, 0x1b, 0x6d, 0xf7, 0x81, 0x7a, 0xc, 0x96, 0xe0, 0xbf, 0xc9, 0x53, 0x25, 0xed, 0x9b, 0x1, 0x77, 0x28, 0x5e, 0xc4, 0xb2, 0x2f, 0x59, 0xc3, 0xb5, 0xea, 0x9c, 0x6, 0x70, 0xb8, 0xce, 0x54, 0x22, 0x7d, 0xb, 0x91, 0xe7, 0x1c, 0x6a, 0xf0, 0x86, 0xd9, 0xaf, 0x35, 0x43, 0x8b, 0xfd, 0x67, 0x11, 0x4e, 0x38, 0xa2, 0xd4}, [256]uint8{0x0, 0x77, 0xee, 0x99, 0xc1, 0xb6, 0x2f, 0x58, 0x9f, 0xe8, 0x71, 0x6, 0x5e, 0x29, 0xb0, 0xc7, 0x23, 0x54, 0xcd, 0xba, 0xe2, 0x95, 0xc, 0x7b, 0xbc, 0xcb, 0x52, 0x25, 0x7d, 0xa, 0x93, 0xe4, 0x46, 0x31, 0xa8, 0xdf, 0x87, 0xf0, 0x69, 0x1e, 0xd9, 0xae, 0x37, 0x40, 0x18, 0x6f, 0xf6, 0x81, 0x65, 0x12, 0x8b, 0xfc, 0xa4, 0xd3, 0x4a, 0x3d, 0xfa, 0x8d, 0x14, 0x63, 0x3b, 0x4c, 0xd5, 0xa2, 0x8c, 0xfb, 0x62, 0x15, 0x4d, 0x3a, 0xa3, 0xd4, 0x13, 0x64, 0xfd, 0x8a, 0xd2, 0xa5, 0x3c, 0x4b, 0xaf, 0xd8, 0x41, 0x36, 0x6e, 0x19, 0x80, 0xf7, 0x30, 0x47, 0xde, 0xa9, 0xf1, 0x86, 0x1f, 0x68, 0xca, 0xbd, 0x24, 0x53, 0xb, 0x7c, 0xe5, 0x92, 0x55, 0x22, 0xbb, 0xcc, 0x94, 0xe3, 0x7a, 0xd, 0xe9, 0x9e, 0x7, 0x70, 0x28, 0x5f, 0xc6, 0xb1, 0x76, 0x1, 0x98, 0xef, 0xb7, 0xc0, 0x59, 0x2e, 0x5, 0x72, 0xeb, 0x9c, 0xc4, 0xb3, 0x2a, 0x5d, 0x9a, 0xed, 0x74, 0x3, 0x5b, 0x2c, 0xb5, 0xc2, 0x26, 0x51, 0xc8, 0xbf, 0xe7, 0x90, 0x9, 0x7e, 0xb9, 0xce, 0x57, 0x20, 0x78, 0xf, 0x96, 0xe1, 0x43, 0x34, 0xad, 0xda, 0x82, 0xf5, 0x6c, 0x1b, 0xdc, 0xab, 0x32, 0x45, 0x1d, 0x6a, 0xf3, 0x84, 0x60, 0x17, 0x8e, 0xf9, 0xa1, 0xd6, 0x4f, 0x38, 0xff, 0x88, 0x11, 0x66, 0x3e, 0x49, 0xd0, 0xa7, 0x89, 0xfe, 0x67, 0x10, 0x48, 0x3f, 0xa6, 0xd1, 0x16, 0x61, 0xf8, 0x8f, 0xd7, 0xa0, 0x39, 0x4e, 0xaa, 0xdd, 0x44, 0x33, 0x6b, 0x1c, 0x85, 0xf2, 0x35, 0x42, 0xdb, 0xac, 0xf4, 0x83, 0x1a, 0x6d, 0xcf, 0xb8, 0x21, 0x56, 0xe, 0x79, 0xe0, 0x97, 0x50, 0x27, 0xbe, 0xc9, 0x91, 0xe6, 0x7f, 0x8, 0xec, 0x9b, 0x2, 0x75, 0x2d, 0x5a, 0xc3, 0xb4, 0x73, 0x4, 0x9d, 0xea, 0xb2, 0xc5, 0x5c, 0x2b}, [256]uint8{0x0, 0x78, 0xf0, 0x88, 0xfd, 0x85, 0xd, 0x75, 0xe7, 0x9f, 0x17, 0x6f, 0x1a, 0x62, 0xea, 0x92, 0xd3, 0xab, 0x23, 0x5b, 0x2e, 0x56, 0xde, 0xa6, 0x34, 0x4c, 0xc4, 0xbc, 0xc9, 0xb1, 0x39, 0x41, 0xbb, 0xc3, 0x4b, 0x33, 0x46, 0x3e, 0xb6, 0xce, 0x5c, 0x24, 0xac, 0xd4, 0xa1, 0xd9, 0x51, 0x29, 0x68, 0x10, 0x98, 0xe0, 0x95, 0xed, 0x65, 0x1d, 0x8f, 0xf7, 0x7f, 0x7, 0x72, 0xa, 0x82, 0xfa, 0x6b, 0x13, 0x9b, 0xe3, 0x96, 0xee, 0x66, 0x1e, 0x8c, 0xf4, 0x7c, 0x4, 0x71, 0x9, 0x81, 0xf9, 0xb8, 0xc0, 0x48, 0x30, 0x45, 0x3d, 0xb5, 0xcd, 0x5f, 0x27, 0xaf, 0xd7, 0xa2, 0xda, 0x52, 0x2a, 0xd0, 0xa8, 0x20, 0x58, 0x2d, 0x55, 0xdd, 0xa5, 0x37, 0x4f, 0xc7, 0xbf, 0xca, 0xb2, 0x3a, 0x42, 0x3, 0x7b, 0xf3, 0x8b, 0xfe, 0x86, 0xe, 0x76, 0xe4, 0x9c, 0x14, 0x6c, 0x19, 0x61, 0xe9, 0x91, 0xd6, 0xae, 0x26, 0x5e, 0x2b, 0x53, 0xdb, 0xa3, 0x31, 0x49, 0xc1, 0xb9, 0xcc, 0xb4, 0x3c, 0x44, 0x5, 0x7d, 0xf5, 0x8d, 0xf8, 0x80, 0x8, 0x70, 0xe2, 0x9a, 0x12, 0x6a, 0x1f, 0x67, 0xef, 0x97, 0x6d, 0x15, 0x9d, 0xe5, 0x90, 0xe8, 0x60, 0x18, 0x8a, 0xf2, 0x7a, 0x2, 0x77, 0xf, 0x87, 0xff, 0xbe, 0xc6, 0x4e, 0x36, 0x43, 0x3b, 0xb3, 0xcb, 0x59, 0x21, 0xa9, 0xd1, 0xa4, 0xdc, 0x54, 0x2c, 0xbd, 0xc5, 0x4d, 0x35, 0x40, 0x38, 0xb0, 0xc8, 0x5a, 0x22, 0xaa, 0xd2, 0xa7, 0xdf, 0x57, 0x2f, 0x6e, 0x16, 0x9e, 0xe6, 0x93, 0xeb, 0x63, 0x1b, 0x89, 0xf1, 0x79, 0x1, 0x74, 0xc, 0x84, 0xfc, 0x6, 0x7e, 0xf6, 0x8e, 0xfb, 0x83, 0xb, 0x73, 0xe1, 0x99, 0x11, 0x69, 0x1c, 0x64, 0xec, 0x94, 0xd5, 0xad, 0x25, 0x5d, 0x28, 0x50, 0xd8, 0xa0, 0x32, 0x4a, 0xc2, 0xba, 0xcf, 0xb7, 0x3f, 0x47}, [256]uint8{0x0, 0x79, 0xf2, 0x8b, 0xf9, 0x80, 0xb, 0x72, 0xef, 0x96, 0x1d, 0x64, 0x16, 0x6f, 0xe4, 0x9d, 0xc3, 0xba, 0x31, 0x48, 0x3a, 0x43, 0xc8, 0xb1, 0x2c, 0x55, 0xde, 0xa7, 0xd5, 0xac, 0x27, 0x5e, 0x9b, 0xe2, 0x69, 0x10, 0x62, 0x1b, 0x90, 0xe9, 0x74, 0xd, 0x86, 0xff, 0x8d, 0xf4, 0x7f, 0x6, 0x58, 0x21, 0xaa, 0xd3, 0xa1, 0xd8, 0x53, 0x2a, 0xb7, 0xce, 0x45, 0x3c, 0x4e, 0x37, 0xbc, 0xc5, 0x2b, 0x52, 0xd9, 0xa0, 0xd2, 0xab, 0x20, 0x59, 0xc4, 0xbd, 0x36, 0x4f, 0x3d, 0x44, 0xcf, 0xb6, 0xe8, 0x91, 0x1a, 0x63, 0x11, 0x68, 0xe3, 0x9a, 0x7, 0x7e, 0xf5, 0x8c, 0xfe, 0x87, 0xc, 0x75, 0xb0, 0xc9, 0x42, 0x3b, 0x49, 0x30, 0xbb, 0xc2, 0x5f, 0x26, 0xad, 0xd4, 0xa6, 0xdf, 0x54, 0x2d, 0x73, 0xa, 0x81, 0xf8, 0x8a, 0xf3, 0x78, 0x1, 0x9c, 0xe5, 0x6e, 0x17, 0x65, 0x1c, 0x97, 0xee, 0x56, 0x2f, 0xa4, 0xdd, 0xaf, 0xd6, 0x5d, 0x24, 0xb9, 0xc0, 0x4b, 0x32, 0x40, 0x39, 0xb2, 0xcb, 0x95, 0xec, 0x67, 0x1e, 0x6c, 0x15, 0x9e, 0xe7, 0x7a, 0x3, 0x88, 0xf1, 0x83, 0xfa, 0x71, 0x8, 0xcd, 0xb4, 0x3f, 0x46, 0x34, 0x4d, 0xc6, 0xbf, 0x22, 0x5b, 0xd0, 0xa9, 0xdb, 0xa2, 0x29, 0x50, 0xe, 0x77, 0xfc, 0x85, 0xf7, 0x8e, 0x5, 0x7c, 0xe1, 0x98, 0x13, 0x6a, 0x18, 0x61, 0xea, 0x93, 0x7d, 0x4, 0x8f, 0xf6, 0x84, 0xfd, 0x76, 0xf, 0x92, 0xeb, 0x60, 0x19, 0x6b, 0x12, 0x99, 0xe0, 0xbe, 0xc7, 0x4c, 0x35, 0x47, 0x3e, 0xb5, 0xcc, 0x51, 0x28, 0xa3, 0xda, 0xa8, 0xd1, 0x5a, 0x23, 0xe6, 0x9f, 0x14, 0x6d, 0x1f, 0x66, 0xed, 0x94, 0x9, 0x70, 0xfb, 0x82, 0xf0, 0x89, 0x2, 0x7b, 0x25, 0x5c, 0xd7, 0xae, 0xdc, 0xa5, 0x2e, 0x57, 0xca, 0xb3, 0x38, 0x41, 0x33, 0x4a, 0xc1, 0xb8}, [256]uint8{0x0, 0x7a, 0xf4, 0x8e, 0xf5, 0x8f, 0x1, 0x7b, 0xf7, 0x8d, 0x3, 0x79, 0x2, 0x78, 0xf6, 0x8c, 0xf3, 0x89, 0x7, 0x7d, 0x6, 0x7c, 0xf2, 0x88, 0x4, 0x7e, 0xf0, 0x8a, 0xf1, 0x8b, 0x5, 0x7f, 0xfb, 0x81, 0xf, 0x75, 0xe, 0x74, 0xfa, 0x80, 0xc, 0x76, 0xf8, 0x82, 0xf9, 0x83, 0xd, 0x77, 0x8, 0x72, 0xfc, 0x86, 0xfd, 0x87, 0x9, 0x73, 0xff, 0x85, 0xb, 0x71, 0xa, 0x70, 0xfe, 0x84, 0xeb, 0x91, 0x1f, 0x65, 0x1e, 0x64, 0xea, 0x90, 0x1c, 0x66, 0xe8, 0x92, 0xe9, 0x93, 0x1d, 0x67, 0x18, 0x62, 0xec, 0x96, 0xed, 0x97, 0x19, 0x63, 0xef, 0x95, 0x1b, 0x61, 0x1a, 0x60, 0xee, 0x94, 0x10, 0x6a, 0xe4, 0x9e, 0xe5, 0x9f, 0x11, 0x6b, 0xe7, 0x9d, 0x13, 0x69, 0x12, 0x68, 0xe6, 0x9c, 0xe3, 0x99, 0x17, 0x6d, 0x16, 0x6c, 0xe2, 0x98, 0x14, 0x6e, 0xe0, 0x9a, 0xe1, 0x9b, 0x15, 0x6f, 0xcb, 0xb1, 0x3f, 0x45, 0x3e, 0x44, 0xca, 0xb0, 0x3c, 0x46, 0xc8, 0xb2, 0xc9, 0xb3, 0x3d, 0x47, 0x38, 0x42, 0xcc, 0xb6, 0xcd, 0xb7, 0x39, 0x43, 0xcf, 0xb5, 0x3b, 0x41, 0x3a, 0x40, 0xce, 0xb4, 0x30, 0x4a, 0xc4, 0xbe, 0xc5, 0xbf, 0x31, 0x4b, 0xc7, 0xbd, 0x33, 0x49, 0x32, 0x48, 0xc6, 0xbc, 0xc3, 0xb9, 0x37, 0x4d, 0x36, 0x4c, 0xc2, 0xb8, 0x34, 0x4e, 0xc0, 0xba, 0xc1, 0xbb, 0x35, 0x4f, 0x20, 0x5a, 0xd4, 0xae, 0xd5, 0xaf, 0x21, 0x5b, 0xd7, 0xad, 0x23, 0x59, 0x22, 0x58, 0xd6, 0xac, 0xd3, 0xa9, 0x27, 0x5d, 0x26, 0x5c, 0xd2, 0xa8, 0x24, 0x5e, 0xd0, 0xaa, 0xd1, 0xab, 0x25, 0x5f, 0xdb, 0xa1, 0x2f, 0x55, 0x2e, 0x54, 0xda, 0xa0, 0x2c, 0x56, 0xd8, 0xa2, 0xd9, 0xa3, 0x2d, 0x57, 0x28, 0x52, 0xdc, 0xa6, 0xdd, 0xa7, 0x29, 0x53, 0xdf, 0xa5, 0x2b, 0x51, 0x2a, 0x50, 0xde, 0xa4}, [256]uint8{0x0, 0x7b, 0xf6, 0x8d, 0xf1, 0x8a, 0x7, 0x7c, 0xff, 0x84, 0x9, 0x72, 0xe, 0x75, 0xf8, 0x83, 0xe3, 0x98, 0x15, 0x6e, 0x12, 0x69, 0xe4, 0x9f, 0x1c, 0x67, 0xea, 0x91, 0xed, 0x96, 0x1b, 0x60, 0xdb, 0xa0, 0x2d, 0x56, 0x2a, 0x51, 0xdc, 0xa7, 0x24, 0x5f, 0xd2, 0xa9, 0xd5, 0xae, 0x23, 0x58, 0x38, 0x43, 0xce, 0xb5, 0xc9, 0xb2, 0x3f, 0x44, 0xc7, 0xbc, 0x31, 0x4a, 0x36, 0x4d, 0xc0, 0xbb, 0xab, 0xd0, 0x5d, 0x26, 0x5a, 0x21, 0xac, 0xd7, 0x54, 0x2f, 0xa2, 0xd9, 0xa5, 0xde, 0x53, 0x28, 0x48, 0x33, 0xbe, 0xc5, 0xb9, 0xc2, 0x4f, 0x34, 0xb7, 0xcc, 0x41, 0x3a, 0x46, 0x3d, 0xb0, 0xcb, 0x70, 0xb, 0x86, 0xfd, 0x81, 0xfa, 0x77, 0xc, 0x8f, 0xf4, 0x79, 0x2, 0x7e, 0x5, 0x88, 0xf3, 0x93, 0xe8, 0x65, 0x1e, 0x62, 0x19, 0x94, 0xef, 0x6c, 0x17, 0x9a, 0xe1, 0x9d, 0xe6, 0x6b, 0x10, 0x4b, 0x30, 0xbd, 0xc6, 0xba, 0xc1, 0x4c, 0x37, 0xb4, 0xcf, 0x42, 0x39, 0x45, 0x3e, 0xb3, 0xc8, 0xa8, 0xd3, 0x5e, 0x25, 0x59, 0x22, 0xaf, 0xd4, 0x57, 0x2c, 0xa1, 0xda, 0xa6, 0xdd, 0x50, 0x2b, 0x90, 0xeb, 0x66, 0x1d, 0x61, 0x1a, 0x97, 0xec, 0x6f, 0x14, 0x99, 0xe2, 0x9e, 0xe5, 0x68, 0x13, 0x73, 0x8, 0x85, 0xfe, 0x82, 0xf9, 0x74, 0xf, 0x8c, 0xf7, 0x7a, 0x1, 0x7d, 0x6, 0x8b, 0xf0, 0xe0, 0x9b, 0x16, 0x6d, 0x11, 0x6a, 0xe7, 0x9c, 0x1f, 0x64, 0xe9, 0x92, 0xee, 0x95, 0x18, 0x63, 0x3, 0x78, 0xf5, 0x8e, 0xf2, 0x89, 0x4, 0x7f, 0xfc, 0x87, 0xa, 0x71, 0xd, 0x76, 0xfb, 0x80, 0x3b, 0x40, 0xcd, 0xb6, 0xca, 0xb1, 0x3c, 0x47, 0xc4, 0xbf, 0x32, 0x49, 0x35, 0x4e, 0xc3, 0xb8, 0xd8, 0xa3, 0x2e, 0x55, 0x29, 0x52, 0xdf, 0xa4, 0x27, 0x5c, 0xd1, 0xaa, 0xd6, 0xad, 0x20, 0x5b}, [256]uint8{0x0, 0x7c, 0xf8, 0x84, 0xed, 0x91, 0x15, 0x69, 0xc7, 0xbb, 0x3f, 0x43, 0x2a, 0x56, 0xd2, 0xae, 0x93, 0xef, 0x6b, 0x17, 0x7e, 0x2, 0x86, 0xfa, 0x54, 0x28, 0xac, 0xd0, 0xb9, 0xc5, 0x41, 0x3d, 0x3b, 0x47, 0xc3, 0xbf, 0xd6, 0xaa, 0x2e, 0x52, 0xfc, 0x80, 0x4, 0x78, 0x11, 0x6d, 0xe9, 0x95, 0xa8, 0xd4, 0x50, 0x2c, 0x45, 0x39, 0xbd, 0xc1, 0x6f, 0x13, 0x97, 0xeb, 0x82, 0xfe, 0x7a, 0x6, 0x76, 0xa, 0x8e, 0xf2, 0x9b, 0xe7, 0x63, 0x1f, 0xb1, 0xcd, 0x49, 0x35, 0x5c, 0x20, 0xa4, 0xd8, 0xe5, 0x99, 0x1d, 0x61, 0x8, 0x74, 0xf0, 0x8c, 0x22, 0x5e, 0xda, 0xa6, 0xcf, 0xb3, 0x37, 0x4b, 0x4d, 0x31, 0xb5, 0xc9, 0xa0, 0xdc, 0x58, 0x24, 0x8a, 0xf6, 0x72, 0xe, 0x67, 0x1b, 0x9f, 0xe3, 0xde, 0xa2, 0x26, 0x5a, 0x33, 0x4f, 0xcb, 0xb7, 0x19, 0x65, 0xe1, 0x9d, 0xf4, 0x88, 0xc, 0x70, 0xec, 0x90, 0x14, 0x68, 0x1, 0x7d, 0xf9, 0x85, 0x2b, 0x57, 0xd3, 0xaf, 0xc6, 0xba, 0x3e, 0x42, 0x7f, 0x3, 0x87, 0xfb, 0x92, 0xee, 0x6a, 0x16, 0xb8, 0xc4, 0x40, 0x3c, 0x55, 0x29, 0xad, 0xd1, 0xd7, 0xab, 0x2f, 0x53, 0x3a, 0x46, 0xc2, 0xbe, 0x10, 0x6c, 0xe8, 0x94, 0xfd, 0x81, 0x5, 0x79, 0x44, 0x38, 0xbc, 0xc0, 0xa9, 0xd5, 0x51, 0x2d, 0x83, 0xff, 0x7b, 0x7, 0x6e, 0x12, 0x96, 0xea, 0x9a, 0xe6, 0x62, 0x1e, 0x77, 0xb, 0x8f, 0xf3, 0x5d, 0x21, 0xa5, 0xd9, 0xb0, 0xcc, 0x48, 0x34, 0x9, 0x75, 0xf1, 0x8d, 0xe4, 0x98, 0x1c, 0x60, 0xce, 0xb2, 0x36, 0x4a, 0x23, 0x5f, 0xdb, 0xa7, 0xa1, 0xdd, 0x59, 0x25, 0x4c, 0x30, 0xb4, 0xc8, 0x66, 0x1a, 0x9e, 0xe2, 0x8b, 0xf7, 0x73, 0xf, 0x32, 0x4e, 0xca, 0xb6, 0xdf, 0xa3, 0x27, 0x5b, 0xf5, 0x89, 0xd, 0x71, 0x18, 0x64, 0xe0, 0x9c}, [256]uint8{0x0, 0x7d, 0xfa, 0x87, 0xe9, 0x94, 0x13, 0x6e, 0xcf, 0xb2, 0x35, 0x48, 0x26, 0x5b, 0xdc, 0xa1, 0x83, 0xfe, 0x79, 0x4, 0x6a, 0x17, 0x90, 0xed, 0x4c, 0x31, 0xb6, 0xcb, 0xa5, 0xd8, 0x5f, 0x22, 0x1b, 0x66, 0xe1, 0x9c, 0xf2, 0x8f, 0x8, 0x75, 0xd4, 0xa9, 0x2e, 0x53, 0x3d, 0x40, 0xc7, 0xba, 0x98, 0xe5, 0x62, 0x1f, 0x71, 0xc, 0x8b, 0xf6, 0x57, 0x2a, 0xad, 0xd0, 0xbe, 0xc3, 0x44, 0x39, 0x36, 0x4b, 0xcc, 0xb1, 0xdf, 0xa2, 0x25, 0x58, 0xf9, 0x84, 0x3, 0x7e, 0x10, 0x6d, 0xea, 0x97, 0xb5, 0xc8, 0x4f, 0x32, 0x5c, 0x21, 0xa6, 0xdb, 0x7a, 0x7, 0x80, 0xfd, 0x93, 0xee, 0x69, 0x14, 0x2d, 0x50, 0xd7, 0xaa, 0xc4, 0xb9, 0x3e, 0x43, 0xe2, 0x9f, 0x18, 0x65, 0xb, 0x76, 0xf1, 0x8c, 0xae, 0xd3, 0x54, 0x29, 0x47, 0x3a, 0xbd, 0xc0, 0x61, 0x1c, 0x9b, 0xe6, 0x88, 0xf5, 0x72, 0xf, 0x6c, 0x11, 0x96, 0xeb, 0x85, 0xf8, 0x7f, 0x2, 0xa3, 0xde, 0x59, 0x24, 0x4a, 0x37, 0xb0, 0xcd, 0xef, 0x92, 0x15, 0x68, 0x6, 0x7b, 0xfc, 0x81, 0x20, 0x5d, 0xda, 0xa7, 0xc9, 0xb4, 0x33, 0x4e, 0x77, 0xa, 0x8d, 0xf0, 0x9e, 0xe3, 0x64, 0x19, 0xb8, 0xc5, 0x42, 0x3f, 0x51, 0x2c, 0xab, 0xd6, 0xf4, 0x89, 0xe, 0x73, 0x1d, 0x60, 0xe7, 0x9a, 0x3b, 0x46, 0xc1, 0xbc, 0xd2, 0xaf, 0x28, 0x55, 0x5a, 0x27, 0xa0, 0xdd, 0xb3, 0xce, 0x49, 0x34, 0x95, 0xe8, 0x6f, 0x12, 0x7c, 0x1, 0x86, 0xfb, 0xd9, 0xa4, 0x23, 0x5e, 0x30, 0x4d, 0xca, 0xb7, 0x16, 0x6b, 0xec, 0x91, 0xff, 0x82, 0x5, 0x78, 0x41, 0x3c, 0xbb, 0xc6, 0xa8, 0xd5, 0x52, 0x2f, 0x8e, 0xf3, 0x74, 0x9, 0x67, 0x1a, 0x9d, 0xe0, 0xc2, 0xbf, 0x38, 0x45, 0x2b, 0x56, 0xd1, 0xac, 0xd, 0x70, 0xf7, 0x8a, 0xe4, 0x99, 0x1e, 0x63}, [256]uint8{0x0, 0x7e, 0xfc, 0x82, 0xe5, 0x9b, 0x19, 0x67, 0xd7, 0xa9, 0x2b, 0x55, 0x32, 0x4c, 0xce, 0xb0, 0xb3, 0xcd, 0x4f, 0x31, 0x56, 0x28, 0xaa, 0xd4, 0x64, 0x1a, 0x98, 0xe6, 0x81, 0xff, 0x7d, 0x3, 0x7b, 0x5, 0x87, 0xf9, 0x9e, 0xe0, 0x62, 0x1c, 0xac, 0xd2, 0x50, 0x2e, 0x49, 0x37, 0xb5, 0xcb, 0xc8, 0xb6, 0x34, 0x4a, 0x2d, 0x53, 0xd1, 0xaf, 0x1f, 0x61, 0xe3, 0x9d, 0xfa, 0x84, 0x6, 0x78, 0xf6, 0x88, 0xa, 0x74, 0x13, 0x6d, 0xef, 0x91, 0x21, 0x5f, 0xdd, 0xa3, 0xc4, 0xba, 0x38, 0x46, 0x45, 0x3b, 0xb9, 0xc7, 0xa0, 0xde, 0x5c, 0x22, 0x92, 0xec, 0x6e, 0x10, 0x77, 0x9, 0x8b, 0xf5, 0x8d, 0xf3, 0x71, 0xf, 0x68, 0x16, 0x94, 0xea, 0x5a, 0x24, 0xa6, 0xd8, 0xbf, 0xc1, 0x43, 0x3d, 0x3e, 0x40, 0xc2, 0xbc, 0xdb, 0xa5, 0x27, 0x59, 0xe9, 0x97, 0x15, 0x6b, 0xc, 0x72, 0xf0, 0x8e, 0xf1, 0x8f, 0xd, 0x73, 0x14, 0x6a, 0xe8, 0x96, 0x26, 0x58, 0xda, 0xa4, 0xc3, 0xbd, 0x3f, 0x41, 0x42, 0x3c, 0xbe, 0xc0, 0xa7, 0xd9, 0x5b, 0x25, 0x95, 0xeb, 0x69, 0x17, 0x70, 0xe, 0x8c, 0xf2, 0x8a, 0xf4, 0x76, 0x8, 0x6f, 0x11, 0x93, 0xed, 0x5d, 0x23, 0xa1, 0xdf, 0xb8, 0xc6, 0x44, 0x3a, 0x39, 0x47, 0xc5, 0xbb, 0xdc, 0xa2, 0x20, 0x5e, 0xee, 0x90, 0x12, 0x6c, 0xb, 0x75, 0xf7, 0x89, 0x7, 0x79, 0xfb, 0x85, 0xe2, 0x9c, 0x1e, 0x60, 0xd0, 0xae, 0x2c, 0x52, 0x35, 0x4b, 0xc9, 0xb7, 0xb4, 0xca, 0x48, 0x36, 0x51, 0x2f, 0xad, 0xd3, 0x63, 0x1d, 0x9f, 0xe1, 0x86, 0xf8, 0x7a, 0x4, 0x7c, 0x2, 0x80, 0xfe, 0x99, 0xe7, 0x65, 0x1b, 0xab, 0xd5, 0x57, 0x29, 0x4e, 0x30, 0xb2, 0xcc, 0xcf, 0xb1, 0x33, 0x4d, 0x2a, 0x54, 0xd6, 0xa8, 0x18, 0x66, 0xe4, 0x9a, 0xfd, 0x83, 0x1, 0x7f}, [256]uint8{0x0, 0x7f, 0xfe, 0x81, 0xe1, 0x9e, 0x1f, 0x60, 0xdf, 0xa0, 0x21, 0x5e, 0x3e, 0x41, 0xc0, 0xbf, 0xa3, 0xdc, 0x5d, 0x22, 0x42, 0x3d, 0xbc, 0xc3, 0x7c, 0x3, 0x82, 0xfd, 0x9d, 0xe2, 0x63, 0x1c, 0x5b, 0x24, 0xa5, 0xda, 0xba, 0xc5, 0x44, 0x3b, 0x84, 0xfb, 0x7a, 0x5, 0x65, 0x1a, 0x9b, 0xe4, 0xf8, 0x87, 0x6, 0x79, 0x19, 0x66, 0xe7, 0x98, 0x27, 0x58, 0xd9, 0xa6, 0xc6, 0xb9, 0x38, 0x47, 0xb6, 0xc9, 0x48, 0x37, 0x57, 0x28, 0xa9, 0xd6, 0x69, 0x16, 0x97, 0xe8, 0x88, 0xf7, 0x76, 0x9, 0x15, 0x6a, 0xeb, 0x94, 0xf4, 0x8b, 0xa, 0x75, 0xca, 0xb5, 0x34, 0x4b, 0x2b, 0x54, 0xd5, 0xaa, 0xed, 0x92, 0x13, 0x6c, 0xc, 0x73, 0xf2, 0x8d, 0x32, 0x4d, 0xcc, 0xb3, 0xd3, 0xac, 0x2d, 0x52, 0x4e, 0x31, 0xb0, 0xcf, 0xaf, 0xd0, 0x51, 0x2e, 0x91, 0xee, 0x6f, 0x10, 0x70, 0xf, 0x8e, 0xf1, 0x71, 0xe, 0x8f, 0xf0, 0x90, 0xef, 0x6e, 0x11, 0xae, 0xd1, 0x50, 0x2f, 0x4f, 0x30, 0xb1, 0xce, 0xd2, 0xad, 0x2c, 0x53, 0x33, 0x4c, 0xcd, 0xb2, 0xd, 0x72, 0xf3, 0x8c, 0xec, 0x93, 0x12, 0x6d, 0x2a, 0x55, 0xd4, 0xab, 0xcb, 0xb4, 0x35, 0x4a, 0xf5, 0x8a, 0xb, 0x74, 0x14, 0x6b, 0xea, 0x95, 0x89, 0xf6, 0x77, 0x8, 0x68, 0x17, 0x96, 0xe9, 0x56, 0x29, 0xa8, 0xd7, 0xb7, 0xc8, 0x49, 0x36, 0xc7, 0xb8, 0x39, 0x46, 0x26, 0x59, 0xd8, 0xa7, 0x18, 0x67, 0xe6, 0x99, 0xf9, 0x86, 0x7, 0x78, 0x64, 0x1b, 0x9a, 0xe5, 0x85, 0xfa, 0x7b, 0x4, 0xbb, 0xc4, 0x45, 0x3a, 0x5a, 0x25, 0xa4, 0xdb, 0x9c, 0xe3, 0x62, 0x1d, 0x7d, 0x2, 0x83, 0xfc, 0x43, 0x3c, 0xbd, 0xc2, 0xa2, 0xdd, 0x5c, 0x23, 0x3f, 0x40, 0xc1, 0xbe, 0xde, 0xa1, 0x20, 0x5f, 0xe0, 0x9f, 0x1e, 0x61, 0x1, 0x7e, 0xff, 0x80}, [256]uint8{0x0, 0x80, 0x1d, 0x9d, 0x3a, 0xba, 0x27, 0xa7, 0x74, 0xf4, 0x69, 0xe9, 0x4e, 0xce, 0x53, 0xd3, 0xe8, 0x68, 0xf5, 0x75, 0xd2, 0x52, 0xcf, 0x4f, 0x9c, 0x1c, 0x81, 0x1, 0xa6, 0x26, 0xbb, 0x3b, 0xcd, 0x4d, 0xd0, 0x50, 0xf7, 0x77, 0xea, 0x6a, 0xb9, 0x39, 0xa4, 0x24, 0x83, 0x3, 0x9e, 0x1e, 0x25, 0xa5, 0x38, 0xb8, 0x1f, 0x9f, 0x2, 0x82, 0x51, 0xd1, 0x4c, 0xcc, 0x6b, 0xeb, 0x76, 0xf6, 0x87, 0x7, 0x9a, 0x1a, 0xbd, 0x3d, 0xa0, 0x20, 0xf3, 0x73, 0xee, 0x6e, 0xc9, 0x49, 0xd4, 0x54, 0x6f, 0xef, 0x72, 0xf2, 0x55, 0xd5, 0x48, 0xc8, 0x1b, 0x9b, 0x6, 0x86, 0x21, 0xa1, 0x3c, 0xbc, 0x4a, 0xca, 0x57, 0xd7, 0x70, 0xf0, 0x6d, 0xed, 0x3e, 0xbe, 0x23, 0xa3, 0x4, 0x84, 0x19, 0x99, 0xa2, 0x22, 0xbf, 0x3f, 0x98, 0x18, 0x85, 0x5, 0xd6, 0x56, 0xcb, 0x4b, 0xec, 0x6c, 0xf1, 0x71, 0x13, 0x93, 0xe, 0x8e, 0x29, 0xa9, 0x34, 0xb4, 0x67, 0xe7, 0x7a, 0xfa, 0x5d, 0xdd, 0x40, 0xc0, 0xfb, 0x7b, 0xe6, 0x66, 0xc1, 0x41, 0xdc, 0x5c, 0x8f, 0xf, 0x92, 0x12, 0xb5, 0x35, 0xa8, 0x28, 0xde, 0x5e, 0xc3, 0x43, 0xe4, 0x64, 0xf9, 0x79, 0xaa, 0x2a, 0xb7, 0x37, 0x90, 0x10, 0x8d, 0xd, 0x36, 0xb6, 0x2b, 0xab, 0xc, 0x8c, 0x11, 0x91, 0x42, 0xc2, 0x5f, 0xdf, 0x78, 0xf8, 0x65, 0xe5, 0x94, 0x14, 0x89, 0x9, 0xae, 0x2e, 0xb3, 0x33, 0xe0, 0x60, 0xfd, 0x7d, 0xda, 0x5a, 0xc7, 0x47, 0x7c, 0xfc, 0x61, 0xe1, 0x46, 0xc6, 0x5b, 0xdb, 0x8, 0x88, 0x15, 0x95, 0x32, 0xb2, 0x2f, 0xaf, 0x59, 0xd9, 0x44, 0xc4, 0x63, 0xe3, 0x7e, 0xfe, 0x2d, 0xad, 0x30, 0xb0, 0x17, 0x97, 0xa, 0x8a, 0xb1, 0x31, 0xac, 0x2c, 0x8b, 0xb, 0x96, 0x16, 0xc5, 0x45, 0xd8, 0x58, 0xff, 0x7f, 0xe2, 0x62}, [256]uint8{0x0, 0x81, 0x1f, 0x9e, 0x3e, 0xbf, 0x21, 0xa0, 0x7c, 0xfd, 0x63, 0xe2, 0x42, 0xc3, 0x5d, 0xdc, 0xf8, 0x79, 0xe7, 0x66, 0xc6, 0x47, 0xd9, 0x58, 0x84, 0x5, 0x9b, 0x1a, 0xba, 0x3b, 0xa5, 0x24, 0xed, 0x6c, 0xf2, 0x73, 0xd3, 0x52, 0xcc, 0x4d, 0x91, 0x10, 0x8e, 0xf, 0xaf, 0x2e, 0xb0, 0x31, 0x15, 0x94, 0xa, 0x8b, 0x2b, 0xaa, 0x34, 0xb5, 0x69, 0xe8, 0x76, 0xf7, 0x57, 0xd6, 0x48, 0xc9, 0xc7, 0x46, 0xd8, 0x59, 0xf9, 0x78, 0xe6, 0x67, 0xbb, 0x3a, 0xa4, 0x25, 0x85, 0x4, 0x9a, 0x1b, 0x3f, 0xbe, 0x20, 0xa1, 0x1, 0x80, 0x1e, 0x9f, 0x43, 0xc2, 0x5c, 0xdd, 0x7d, 0xfc, 0x62, 0xe3, 0x2a, 0xab, 0x35, 0xb4, 0x14, 0x95, 0xb, 0x8a, 0x56, 0xd7, 0x49, 0xc8, 0x68, 0xe9, 0x77, 0xf6, 0xd2, 0x53, 0xcd, 0x4c, 0xec, 0x6d, 0xf3, 0x72, 0xae, 0x2f, 0xb1, 0x30, 0x90, 0x11, 0x8f, 0xe, 0x93, 0x12, 0x8c, 0xd, 0xad, 0x2c, 0xb2, 0x33, 0xef, 0x6e, 0xf0, 0x71, 0xd1, 0x50, 0xce, 0x4f, 0x6b, 0xea, 0x74, 0xf5, 0x55, 0xd4, 0x4a, 0xcb, 0x17, 0x96, 0x8, 0x89, 0x29, 0xa8, 0x36, 0xb7, 0x7e, 0xff, 0x61, 0xe0, 0x40, 0xc1, 0x5f, 0xde, 0x2, 0x83, 0x1d, 0x9c, 0x3c, 0xbd, 0x23, 0xa2, 0x86, 0x7, 0x99, 0x18, 0xb8, 0x39, 0xa7, 0x26, 0xfa, 0x7b, 0xe5, 0x64, 0xc4, 0x45, 0xdb, 0x5a, 0x54, 0xd5, 0x4b, 0xca, 0x6a, 0xeb, 0x75, 0xf4, 0x28, 0xa9, 0x37, 0xb6, 0x16, 0x97, 0x9, 0x88, 0xac, 0x2d, 0xb3, 0x32, 0x92, 0x13, 0x8d, 0xc, 0xd0, 0x51, 0xcf, 0x4e, 0xee, 0x6f, 0xf1, 0x70, 0xb9, 0x38, 0xa6, 0x27, 0x87, 0x6, 0x98, 0x19, 0xc5, 0x44, 0xda, 0x5b, 0xfb, 0x7a, 0xe4, 0x65, 0x41, 0xc0, 0x5e, 0xdf, 0x7f, 0xfe, 0x60, 0xe1, 0x3d, 0xbc, 0x22, 0xa3, 0x3, 0x82, 0x1c, 0x9d}, [256]uint8{0x0, 0x82, 0x19, 0x9b, 0x32, 0xb0, 0x2b, 0xa9, 0x64, 0xe6, 0x7d, 0xff, 0x56, 0xd4, 0x4f, 0xcd, 0xc8, 0x4a, 0xd1, 0x53, 0xfa, 0x78, 0xe3, 0x61, 0xac, 0x2e, 0xb5, 0x37, 0x9e, 0x1c, 0x87, 0x5, 0x8d, 0xf, 0x94, 0x16, 0xbf, 0x3d, 0xa6, 0x24, 0xe9, 0x6b, 0xf0, 0x72, 0xdb, 0x59, 0xc2, 0x40, 0x45, 0xc7, 0x5c, 0xde, 0x77, 0xf5, 0x6e, 0xec, 0x21, 0xa3, 0x38, 0xba, 0x13, 0x91, 0xa, 0x88, 0x7, 0x85, 0x1e, 0x9c, 0x35, 0xb7, 0x2c, 0xae, 0x63, 0xe1, 0x7a, 0xf8, 0x51, 0xd3, 0x48, 0xca, 0xcf, 0x4d, 0xd6, 0x54, 0xfd, 0x7f, 0xe4, 0x66, 0xab, 0x29, 0xb2, 0x30, 0x99, 0x1b, 0x80, 0x2, 0x8a, 0x8, 0x93, 0x11, 0xb8, 0x3a, 0xa1, 0x23, 0xee, 0x6c, 0xf7, 0x75, 0xdc, 0x5e, 0xc5, 0x47, 0x42, 0xc0, 0x5b, 0xd9, 0x70, 0xf2, 0x69, 0xeb, 0x26, 0xa4, 0x3f, 0xbd, 0x14, 0x96, 0xd, 0x8f, 0xe, 0x8c, 0x17, 0x95, 0x3c, 0xbe, 0x25, 0xa7, 0x6a, 0xe8, 0x73, 0xf1, 0x58, 0xda, 0x41, 0xc3, 0xc6, 0x44, 0xdf, 0x5d, 0xf4, 0x76, 0xed, 0x6f, 0xa2, 0x20, 0xbb, 0x39, 0x90, 0x12, 0x89, 0xb, 0x83, 0x1, 0x9a, 0x18, 0xb1, 0x33, 0xa8, 0x2a, 0xe7, 0x65, 0xfe, 0x7c, 0xd5, 0x57, 0xcc, 0x4e, 0x4b, 0xc9, 0x52, 0xd0, 0x79, 0xfb, 0x60, 0xe2, 0x2f, 0xad, 0x36, 0xb4, 0x1d, 0x9f, 0x4, 0x86, 0x9, 0x8b, 0x10, 0x92, 0x3b, 0xb9, 0x22, 0xa0, 0x6d, 0xef, 0x74, 0xf6, 0x5f, 0xdd, 0x46, 0xc4, 0xc1, 0x43, 0xd8, 0x5a, 0xf3, 0x71, 0xea, 0x68, 0xa5, 0x27, 0xbc, 0x3e, 0x97, 0x15, 0x8e, 0xc, 0x84, 0x6, 0x9d, 0x1f, 0xb6, 0x34, 0xaf, 0x2d, 0xe0, 0x62, 0xf9, 0x7b, 0xd2, 0x50, 0xcb, 0x49, 0x4c, 0xce, 0x55, 0xd7, 0x7e, 0xfc, 0x67, 0xe5, 0x28, 0xaa, 0x31, 0xb3, 0x1a, 0x98, 0x3, 0x81}, [256]uint8{0x0, 0x83, 0x1b, 0x98, 0x36, 0xb5, 0x2d, 0xae, 0x6c, 0xef, 0x77, 0xf4, 0x5a, 0xd9, 0x41, 0xc2, 0xd8, 0x5b, 0xc3, 0x40, 0xee, 0x6d, 0xf5, 0x76, 0xb4, 0x37, 0xaf, 0x2c, 0x82, 0x1, 0x99, 0x1a, 0xad, 0x2e, 0xb6, 0x35, 0x9b, 0x18, 0x80, 0x3, 0xc1, 0x42, 0xda, 0x59, 0xf7, 0x74, 0xec, 0x6f, 0x75, 0xf6, 0x6e, 0xed, 0x43, 0xc0, 0x58, 0xdb, 0x19, 0x9a, 0x2, 0x81, 0x2f, 0xac, 0x34, 0xb7, 0x47, 0xc4, 0x5c, 0xdf, 0x71, 0xf2, 0x6a, 0xe9, 0x2b, 0xa8, 0x30, 0xb3, 0x1d, 0x9e, 0x6, 0x85, 0x9f, 0x1c, 0x84, 0x7, 0xa9, 0x2a, 0xb2, 0x31, 0xf3, 0x70, 0xe8, 0x6b, 0xc5, 0x46, 0xde, 0x5d, 0xea, 0x69, 0xf1, 0x72, 0xdc, 0x5f, 0xc7, 0x44, 0x86, 0x5, 0x9d, 0x1e, 0xb0, 0x33, 0xab, 0x28, 0x32, 0xb1, 0x29, 0xaa, 0x4, 0x87, 0x1f, 0x9c, 0x5e, 0xdd, 0x45, 0xc6, 0x68, 0xeb, 0x73, 0xf0, 0x8e, 0xd, 0x95, 0x16, 0xb8, 0x3b, 0xa3, 0x20, 0xe2, 0x61, 0xf9, 0x7a, 0xd4, 0x57, 0xcf, 0x4c, 0x56, 0xd5, 0x4d, 0xce, 0x60, 0xe3, 0x7b, 0xf8, 0x3a, 0xb9, 0x21, 0xa2, 0xc, 0x8f, 0x17, 0x94, 0x23, 0xa0, 0x38, 0xbb, 0x15, 0x96, 0xe, 0x8d, 0x4f, 0xcc, 0x54, 0xd7, 0x79, 0xfa, 0x62, 0xe1, 0xfb, 0x78, 0xe0, 0x63, 0xcd, 0x4e, 0xd6, 0x55, 0x97, 0x14, 0x8c, 0xf, 0xa1, 0x22, 0xba, 0x39, 0xc9, 0x4a, 0xd2, 0x51, 0xff, 0x7c, 0xe4, 0x67, 0xa5, 0x26, 0xbe, 0x3d, 0x93, 0x10, 0x88, 0xb, 0x11, 0x92, 0xa, 0x89, 0x27, 0xa4, 0x3c, 0xbf, 0x7d, 0xfe, 0x66, 0xe5, 0x4b, 0xc8, 0x50, 0xd3, 0x64, 0xe7, 0x7f, 0xfc, 0x52, 0xd1, 0x49, 0xca, 0x8, 0x8b, 0x13, 0x90, 0x3e, 0xbd, 0x25, 0xa6, 0xbc, 0x3f, 0xa7, 0x24, 0x8a, 0x9, 0x91, 0x12, 0xd0, 0x53, 0xcb, 0x48, 0xe6, 0x65, 0xfd, 0x7e}, [256]uint8{0x0, 0x84, 0x15, 0x91, 0x2a, 0xae, 0x3f, 0xbb, 0x54, 0xd0, 0x41, 0xc5, 0x7e, 0xfa, 0x6b, 0xef, 0xa8, 0x2c, 0xbd, 0x39, 0x82, 0x6, 0x97, 0x13, 0xfc, 0x78, 0xe9, 0x6d, 0xd6, 0x52, 0xc3, 0x47, 0x4d, 0xc9, 0x58, 0xdc, 0x67, 0xe3, 0x72, 0xf6, 0x19, 0x9d, 0xc, 0x88, 0x33, 0xb7, 0x26, 0xa2, 0xe5, 0x61, 0xf0, 0x74, 0xcf, 0x4b, 0xda, 0x5e, 0xb1, 0x35, 0xa4, 0x20, 0x9b, 0x1f, 0x8e, 0xa, 0x9a, 0x1e, 0x8f, 0xb, 0xb0, 0x34, 0xa5, 0x21, 0xce, 0x4a, 0xdb, 0x5f, 0xe4, 0x60, 0xf1, 0x75, 0x32, 0xb6, 0x27, 0xa3, 0x18, 0x9c, 0xd, 0x89, 0x66, 0xe2, 0x73, 0xf7, 0x4c, 0xc8, 0x59, 0xdd, 0xd7, 0x53, 0xc2, 0x46, 0xfd, 0x79, 0xe8, 0x6c, 0x83, 0x7, 0x96, 0x12, 0xa9, 0x2d, 0xbc, 0x38, 0x7f, 0xfb, 0x6a, 0xee, 0x55, 0xd1, 0x40, 0xc4, 0x2b, 0xaf, 0x3e, 0xba, 0x1, 0x85, 0x14, 0x90, 0x29, 0xad, 0x3c, 0xb8, 0x3, 0x87, 0x16, 0x92, 0x7d, 0xf9, 0x68, 0xec, 0x57, 0xd3, 0x42, 0xc6, 0x81, 0x5, 0x94, 0x10, 0xab, 0x2f, 0xbe, 0x3a, 0xd5, 0x51, 0xc0, 0x44, 0xff, 0x7b, 0xea, 0x6e, 0x64, 0xe0, 0x71, 0xf5, 0x4e, 0xca, 0x5b, 0xdf, 0x30, 0xb4, 0x25, 0xa1, 0x1a, 0x9e, 0xf, 0x8b, 0xcc, 0x48, 0xd9, 0x5d, 0xe6, 0x62, 0xf3, 0x77, 0x98, 0x1c, 0x8d, 0x9, 0xb2, 0x36, 0xa7, 0x23, 0xb3, 0x37, 0xa6, 0x22, 0x99, 0x1d, 0x8c, 0x8, 0xe7, 0x63, 0xf2, 0x76, 0xcd, 0x49, 0xd8, 0x5c, 0x1b, 0x9f, 0xe, 0x8a, 0x31, 0xb5, 0x24, 0xa0, 0x4f, 0xcb, 0x5a, 0xde, 0x65, 0xe1, 0x70, 0xf4, 0xfe, 0x7a, 0xeb, 0x6f, 0xd4, 0x50, 0xc1, 0x45, 0xaa, 0x2e, 0xbf, 0x3b, 0x80, 0x4, 0x95, 0x11, 0x56, 0xd2, 0x43, 0xc7, 0x7c, 0xf8, 0x69, 0xed, 0x2, 0x86, 0x17, 0x93, 0x28, 0xac, 0x3d, 0xb9}, [256]uint8{0x0, 0x85, 0x17, 0x92, 0x2e, 0xab, 0x39, 0xbc, 0x5c, 0xd9, 0x4b, 0xce, 0x72, 0xf7, 0x65, 0xe0, 0xb8, 0x3d, 0xaf, 0x2a, 0x96, 0x13, 0x81, 0x4, 0xe4, 0x61, 0xf3, 0x76, 0xca, 0x4f, 0xdd, 0x58, 0x6d, 0xe8, 0x7a, 0xff, 0x43, 0xc6, 0x54, 0xd1, 0x31, 0xb4, 0x26, 0xa3, 0x1f, 0x9a, 0x8, 0x8d, 0xd5, 0x50, 0xc2, 0x47, 0xfb, 0x7e, 0xec, 0x69, 0x89, 0xc, 0x9e, 0x1b, 0xa7, 0x22, 0xb0, 0x35, 0xda, 0x5f, 0xcd, 0x48, 0xf4, 0x71, 0xe3, 0x66, 0x86, 0x3, 0x91, 0x14, 0xa8, 0x2d, 0xbf, 0x3a, 0x62, 0xe7, 0x75, 0xf0, 0x4c, 0xc9, 0x5b, 0xde, 0x3e, 0xbb, 0x29, 0xac, 0x10, 0x95, 0x7, 0x82, 0xb7, 0x32, 0xa0, 0x25, 0x99, 0x1c, 0x8e, 0xb, 0xeb, 0x6e, 0xfc, 0x79, 0xc5, 0x40, 0xd2, 0x57, 0xf, 0x8a, 0x18, 0x9d, 0x21, 0xa4, 0x36, 0xb3, 0x53, 0xd6, 0x44, 0xc1, 0x7d, 0xf8, 0x6a, 0xef, 0xa9, 0x2c, 0xbe, 0x3b, 0x87, 0x2, 0x90, 0x15, 0xf5, 0x70, 0xe2, 0x67, 0xdb, 0x5e, 0xcc, 0x49, 0x11, 0x94, 0x6, 0x83, 0x3f, 0xba, 0x28, 0xad, 0x4d, 0xc8, 0x5a, 0xdf, 0x63, 0xe6, 0x74, 0xf1, 0xc4, 0x41, 0xd3, 0x56, 0xea, 0x6f, 0xfd, 0x78, 0x98, 0x1d, 0x8f, 0xa, 0xb6, 0x33, 0xa1, 0x24, 0x7c, 0xf9, 0x6b, 0xee, 0x52, 0xd7, 0x45, 0xc0, 0x20, 0xa5, 0x37, 0xb2, 0xe, 0x8b, 0x19, 0x9c, 0x73, 0xf6, 0x64, 0xe1, 0x5d, 0xd8, 0x4a, 0xcf, 0x2f, 0xaa, 0x38, 0xbd, 0x1, 0x84, 0x16, 0x93, 0xcb, 0x4e, 0xdc, 0x59, 0xe5, 0x60, 0xf2, 0x77, 0x97, 0x12, 0x80, 0x5, 0xb9, 0x3c, 0xae, 0x2b, 0x1e, 0x9b, 0x9, 0x8c, 0x30, 0xb5, 0x27, 0xa2, 0x42, 0xc7, 0x55, 0xd0, 0x6c, 0xe9, 0x7b, 0xfe, 0xa6, 0x23, 0xb1, 0x34, 0x88, 0xd, 0x9f, 0x1a, 0xfa, 0x7f, 0xed, 0x68, 0xd4, 0x51, 0xc3, 0x46}, [256]uint8{0x0, 0x86, 0x11, 0x97, 0x22, 0xa4, 0x33, 0xb5, 0x44, 0xc2, 0x55, 0xd3, 0x66, 0xe0, 0x77, 0xf1, 0x88, 0xe, 0x99, 0x1f, 0xaa, 0x2c, 0xbb, 0x3d, 0xcc, 0x4a, 0xdd, 0x5b, 0xee, 0x68, 0xff, 0x79, 0xd, 0x8b, 0x1c, 0x9a, 0x2f, 0xa9, 0x3e, 0xb8, 0x49, 0xcf, 0x58, 0xde, 0x6b, 0xed, 0x7a, 0xfc, 0x85, 0x3, 0x94, 0x12, 0xa7, 0x21, 0xb6, 0x30, 0xc1, 0x47, 0xd0, 0x56, 0xe3, 0x65, 0xf2, 0x74, 0x1a, 0x9c, 0xb, 0x8d, 0x38, 0xbe, 0x29, 0xaf, 0x5e, 0xd8, 0x4f, 0xc9, 0x7c, 0xfa, 0x6d, 0xeb, 0x92, 0x14, 0x83, 0x5, 0xb0, 0x36, 0xa1, 0x27, 0xd6, 0x50, 0xc7, 0x41, 0xf4, 0x72, 0xe5, 0x63, 0x17, 0x91, 0x6, 0x80, 0x35, 0xb3, 0x24, 0xa2, 0x53, 0xd5, 0x42, 0xc4, 0x71, 0xf7, 0x60, 0xe6, 0x9f, 0x19, 0x8e, 0x8, 0xbd, 0x3b, 0xac, 0x2a, 0xdb, 0x5d, 0xca, 0x4c, 0xf9, 0x7f, 0xe8, 0x6e, 0x34, 0xb2, 0x25, 0xa3, 0x16, 0x90, 0x7, 0x81, 0x70, 0xf6, 0x61, 0xe7, 0x52, 0xd4, 0x43, 0xc5, 0xbc, 0x3a, 0xad, 0x2b, 0x9e, 0x18, 0x8f, 0x9, 0xf8, 0x7e, 0xe9, 0x6f, 0xda, 0x5c, 0xcb, 0x4d, 0x39, 0xbf, 0x28, 0xae, 0x1b, 0x9d, 0xa, 0x8c, 0x7d, 0xfb, 0x6c, 0xea, 0x5f, 0xd9, 0x4e, 0xc8, 0xb1, 0x37, 0xa0, 0x26, 0x93, 0x15, 0x82, 0x4, 0xf5, 0x73, 0xe4, 0x62, 0xd7, 0x51, 0xc6, 0x40, 0x2e, 0xa8, 0x3f, 0xb9, 0xc, 0x8a, 0x1d, 0x9b, 0x6a, 0xec, 0x7b, 0xfd, 0x48, 0xce, 0x59, 0xdf, 0xa6, 0x20, 0xb7, 0x31, 0x84, 0x2, 0x95, 0x13, 0xe2, 0x64, 0xf3, 0x75, 0xc0, 0x46, 0xd1, 0x57, 0x23, 0xa5, 0x32, 0xb4, 0x1, 0x87, 0x10, 0x96, 0x67, 0xe1, 0x76, 0xf0, 0x45, 0xc3, 0x54, 0xd2, 0xab, 0x2d, 0xba, 0x3c, 0x89, 0xf, 0x98, 0x1e, 0xef, 0x69, 0xfe, 0x78, 0xcd, 0x4b, 0xdc, 0x5a}, [256]uint8{0x0, 0x87, 0x13, 0x94, 0x26, 0xa1, 0x35, 0xb2, 0x4c, 0xcb, 0x5f, 0xd8, 0x6a, 0xed, 0x79, 0xfe, 0x98, 0x1f, 0x8b, 0xc, 0xbe, 0x39, 0xad, 0x2a, 0xd4, 0x53, 0xc7, 0x40, 0xf2, 0x75, 0xe1, 0x66, 0x2d, 0xaa, 0x3e, 0xb9, 0xb, 0x8c, 0x18, 0x9f, 0x61, 0xe6, 0x72, 0xf5, 0x47, 0xc0, 0x54, 0xd3, 0xb5, 0x32, 0xa6, 0x21, 0x93, 0x14, 0x80, 0x7, 0xf9, 0x7e, 0xea, 0x6d, 0xdf, 0x58, 0xcc, 0x4b, 0x5a, 0xdd, 0x49, 0xce, 0x7c, 0xfb, 0x6f, 0xe8, 0x16, 0x91, 0x5, 0x82, 0x30, 0xb7, 0x23, 0xa4, 0xc2, 0x45, 0xd1, 0x56, 0xe4, 0x63, 0xf7, 0x70, 0x8e, 0x9, 0x9d, 0x1a, 0xa8, 0x2f, 0xbb, 0x3c, 0x77, 0xf0, 0x64, 0xe3, 0x51, 0xd6, 0x42, 0xc5, 0x3b, 0xbc, 0x28, 0xaf, 0x1d, 0x9a, 0xe, 0x89, 0xef, 0x68, 0xfc, 0x7b, 0xc9, 0x4e, 0xda, 0x5d, 0xa3, 0x24, 0xb0, 0x37, 0x85, 0x2, 0x96, 0x11, 0xb4, 0x33, 0xa7, 0x20, 0x92, 0x15, 0x81, 0x6, 0xf8, 0x7f, 0xeb, 0x6c, 0xde, 0x59, 0xcd, 0x4a, 0x2c, 0xab, 0x3f, 0xb8, 0xa, 0x8d, 0x19, 0x9e, 0x60, 0xe7, 0x73, 0xf4, 0x46, 0xc1, 0x55, 0xd2, 0x99, 0x1e, 0x8a, 0xd, 0xbf, 0x38, 0xac, 0x2b, 0xd5, 0x52, 0xc6, 0x41, 0xf3, 0x74, 0xe0, 0x67, 0x1, 0x86, 0x12, 0x95, 0x27, 0xa0, 0x34, 0xb3, 0x4d, 0xca, 0x5e, 0xd9, 0x6b, 0xec, 0x78, 0xff, 0xee, 0x69, 0xfd, 0x7a, 0xc8, 0x4f, 0xdb, 0x5c, 0xa2, 0x25, 0xb1, 0x36, 0x84, 0x3, 0x97, 0x10, 0x76, 0xf1, 0x65, 0xe2, 0x50, 0xd7, 0x43, 0xc4, 0x3a, 0xbd, 0x29, 0xae, 0x1c, 0x9b, 0xf, 0x88, 0xc3, 0x44, 0xd0, 0x57, 0xe5, 0x62, 0xf6, 0x71, 0x8f, 0x8, 0x9c, 0x1b, 0xa9, 0x2e, 0xba, 0x3d, 0x5b, 0xdc, 0x48, 0xcf, 0x7d, 0xfa, 0x6e, 0xe9, 0x17, 0x90, 0x4, 0x83, 0x31, 0xb6, 0x22, 0xa5}, [256]uint8{0x0, 0x88, 0xd, 0x85, 0x1a, 0x92, 0x17, 0x9f, 0x34, 0xbc, 0x39, 0xb1, 0x2e, 0xa6, 0x23, 0xab, 0x68, 0xe0, 0x65, 0xed, 0x72, 0xfa, 0x7f, 0xf7, 0x5c, 0xd4, 0x51, 0xd9, 0x46, 0xce, 0x4b, 0xc3, 0xd0, 0x58, 0xdd, 0x55, 0xca, 0x42, 0xc7, 0x4f, 0xe4, 0x6c, 0xe9, 0x61, 0xfe, 0x76, 0xf3, 0x7b, 0xb8, 0x30, 0xb5, 0x3d, 0xa2, 0x2a, 0xaf, 0x27, 0x8c, 0x4, 0x81, 0x9, 0x96, 0x1e, 0x9b, 0x13, 0xbd, 0x35, 0xb0, 0x38, 0xa7, 0x2f, 0xaa, 0x22, 0x89, 0x1, 0x84, 0xc, 0x93, 0x1b, 0x9e, 0x16, 0xd5, 0x5d, 0xd8, 0x50, 0xcf, 0x47, 0xc2, 0x4a, 0xe1, 0x69, 0xec, 0x64, 0xfb, 0x73, 0xf6, 0x7e, 0x6d, 0xe5, 0x60, 0xe8, 0x77, 0xff, 0x7a, 0xf2, 0x59, 0xd1, 0x54, 0xdc, 0x43, 0xcb, 0x4e, 0xc6, 0x5, 0x8d, 0x8, 0x80, 0x1f, 0x97, 0x12, 0x9a, 0x31, 0xb9, 0x3c, 0xb4, 0x2b, 0xa3, 0x26, 0xae, 0x67, 0xef, 0x6a, 0xe2, 0x7d, 0xf5, 0x70, 0xf8, 0x53, 0xdb, 0x5e, 0xd6, 0x49, 0xc1, 0x44, 0xcc, 0xf, 0x87, 0x2, 0x8a, 0x15, 0x9d, 0x18, 0x90, 0x3b, 0xb3, 0x36, 0xbe, 0x21, 0xa9, 0x2c, 0xa4, 0xb7, 0x3f, 0xba, 0x32, 0xad, 0x25, 0xa0, 0x28, 0x83, 0xb, 0x8e, 0x6, 0x99, 0x11, 0x94, 0x1c, 0xdf, 0x57, 0xd2, 0x5a, 0xc5, 0x4d, 0xc8, 0x40, 0xeb, 0x63, 0xe6, 0x6e, 0xf1, 0x79, 0xfc, 0x74, 0xda, 0x52, 0xd7, 0x5f, 0xc0, 0x48, 0xcd, 0x45, 0xee, 0x66, 0xe3, 0x6b, 0xf4, 0x7c, 0xf9, 0x71, 0xb2, 0x3a, 0xbf, 0x37, 0xa8, 0x20, 0xa5, 0x2d, 0x86, 0xe, 0x8b, 0x3, 0x9c, 0x14, 0x91, 0x19, 0xa, 0x82, 0x7, 0x8f, 0x10, 0x98, 0x1d, 0x95, 0x3e, 0xb6, 0x33, 0xbb, 0x24, 0xac, 0x29, 0xa1, 0x62, 0xea, 0x6f, 0xe7, 0x78, 0xf0, 0x75, 0xfd, 0x56, 0xde, 0x5b, 0xd3, 0x4c, 0xc4, 0x41, 0xc9}, [256]uint8{0x0, 0x89, 0xf, 0x86, 0x1e, 0x97, 0x11, 0x98, 0x3c, 0xb5, 0x33, 0xba, 0x22, 0xab, 0x2d, 0xa4, 0x78, 0xf1, 0x77, 0xfe, 0x66, 0xef, 0x69, 0xe0, 0x44, 0xcd, 0x4b, 0xc2, 0x5a, 0xd3, 0x55, 0xdc, 0xf0, 0x79, 0xff, 0x76, 0xee, 0x67, 0xe1, 0x68, 0xcc, 0x45, 0xc3, 0x4a, 0xd2, 0x5b, 0xdd, 0x54, 0x88, 0x1, 0x87, 0xe, 0x96, 0x1f, 0x99, 0x10, 0xb4, 0x3d, 0xbb, 0x32, 0xaa, 0x23, 0xa5, 0x2c, 0xfd, 0x74, 0xf2, 0x7b, 0xe3, 0x6a, 0xec, 0x65, 0xc1, 0x48, 0xce, 0x47, 0xdf, 0x56, 0xd0, 0x59, 0x85, 0xc, 0x8a, 0x3, 0x9b, 0x12, 0x94, 0x1d, 0xb9, 0x30, 0xb6, 0x3f, 0xa7, 0x2e, 0xa8, 0x21, 0xd, 0x84, 0x2, 0x8b, 0x13, 0x9a, 0x1c, 0x95, 0x31, 0xb8, 0x3e, 0xb7, 0x2f, 0xa6, 0x20, 0xa9, 0x75, 0xfc, 0x7a, 0xf3, 0x6b, 0xe2, 0x64, 0xed, 0x49, 0xc0, 0x46, 0xcf, 0x57, 0xde, 0x58, 0xd1, 0xe7, 0x6e, 0xe8, 0x61, 0xf9, 0x70, 0xf6, 0x7f, 0xdb, 0x52, 0xd4, 0x5d, 0xc5, 0x4c, 0xca, 0x43, 0x9f, 0x16, 0x90, 0x19, 0x81, 0x8, 0x8e, 0x7, 0xa3, 0x2a, 0xac, 0x25, 0xbd, 0x34, 0xb2, 0x3b, 0x17, 0x9e, 0x18, 0x91, 0x9, 0x80, 0x6, 0x8f, 0x2b, 0xa2, 0x24, 0xad, 0x35, 0xbc, 0x3a, 0xb3, 0x6f, 0xe6, 0x60, 0xe9, 0x71, 0xf8, 0x7e, 0xf7, 0x53, 0xda, 0x5c, 0xd5, 0x4d, 0xc4, 0x42, 0xcb, 0x1a, 0x93, 0x15, 0x9c, 0x4, 0x8d, 0xb, 0x82, 0x26, 0xaf, 0x29, 0xa0, 0x38, 0xb1, 0x37, 0xbe, 0x62, 0xeb, 0x6d, 0xe4, 0x7c, 0xf5, 0x73, 0xfa, 0x5e, 0xd7, 0x51, 0xd8, 0x40, 0xc9, 0x4f, 0xc6, 0xea, 0x63, 0xe5, 0x6c, 0xf4, 0x7d, 0xfb, 0x72, 0xd6, 0x5f, 0xd9, 0x50, 0xc8, 0x41, 0xc7, 0x4e, 0x92, 0x1b, 0x9d, 0x14, 0x8c, 0x5, 0x83, 0xa, 0xae, 0x27, 0xa1, 0x28, 0xb0, 0x39, 0xbf, 0x36}, [256]uint8{0x0, 0x8a, 0x9, 0x83, 0x12, 0x98, 0x1b, 0x91, 0x24, 0xae, 0x2d, 0xa7, 0x36, 0xbc, 0x3f, 0xb5, 0x48, 0xc2, 0x41, 0xcb, 0x5a, 0xd0, 0x53, 0xd9, 0x6c, 0xe6, 0x65, 0xef, 0x7e, 0xf4, 0x77, 0xfd, 0x90, 0x1a, 0x99, 0x13, 0x82, 0x8, 0x8b, 0x1, 0xb4, 0x3e, 0xbd, 0x37, 0xa6, 0x2c, 0xaf, 0x25, 0xd8, 0x52, 0xd1, 0x5b, 0xca, 0x40, 0xc3, 0x49, 0xfc, 0x76, 0xf5, 0x7f, 0xee, 0x64, 0xe7, 0x6d, 0x3d, 0xb7, 0x34, 0xbe, 0x2f, 0xa5, 0x26, 0xac, 0x19, 0x93, 0x10, 0x9a, 0xb, 0x81, 0x2, 0x88, 0x75, 0xff, 0x7c, 0xf6, 0x67, 0xed, 0x6e, 0xe4, 0x51, 0xdb, 0x58, 0xd2, 0x43, 0xc9, 0x4a, 0xc0, 0xad, 0x27, 0xa4, 0x2e, 0xbf, 0x35, 0xb6, 0x3c, 0x89, 0x3, 0x80, 0xa, 0x9b, 0x11, 0x92, 0x18, 0xe5, 0x6f, 0xec, 0x66, 0xf7, 0x7d, 0xfe, 0x74, 0xc1, 0x4b, 0xc8, 0x42, 0xd3, 0x59, 0xda, 0x50, 0x7a, 0xf0, 0x73, 0xf9, 0x68, 0xe2, 0x61, 0xeb, 0x5e, 0xd4, 0x57, 0xdd, 0x4c, 0xc6, 0x45, 0xcf, 0x32, 0xb8, 0x3b, 0xb1, 0x20, 0xaa, 0x29, 0xa3, 0x16, 0x9c, 0x1f, 0x95, 0x4, 0x8e, 0xd, 0x87, 0xea, 0x60, 0xe3, 0x69, 0xf8, 0x72, 0xf1, 0x7b, 0xce, 0x44, 0xc7, 0x4d, 0xdc, 0x56, 0xd5, 0x5f, 0xa2, 0x28, 0xab, 0x21, 0xb0, 0x3a, 0xb9, 0x33, 0x86, 0xc, 0x8f, 0x5, 0x94, 0x1e, 0x9d, 0x17, 0x47, 0xcd, 0x4e, 0xc4, 0x55, 0xdf, 0x5c, 0xd6, 0x63, 0xe9, 0x6a, 0xe0, 0x71, 0xfb, 0x78, 0xf2, 0xf, 0x85, 0x6, 0x8c, 0x1d, 0x97, 0x14, 0x9e, 0x2b, 0xa1, 0x22, 0xa8, 0x39, 0xb3, 0x30, 0xba, 0xd7, 0x5d, 0xde, 0x54, 0xc5, 0x4f, 0xcc, 0x46, 0xf3, 0x79, 0xfa, 0x70, 0xe1, 0x6b, 0xe8, 0x62, 0x9f, 0x15, 0x96, 0x1c, 0x8d, 0x7, 0x84, 0xe, 0xbb, 0x31, 0xb2, 0x38, 0xa9, 0x23, 0xa0, 0x2a}, [256]uint8{0x0, 0x8b, 0xb, 0x80, 0x16, 0x9d, 0x1d, 0x96, 0x2c, 0xa7, 0x27, 0xac, 0x3a, 0xb1, 0x31, 0xba, 0x58, 0xd3, 0x53, 0xd8, 0x4e, 0xc5, 0x45, 0xce, 0x74, 0xff, 0x7f, 0xf4, 0x62, 0xe9, 0x69, 0xe2, 0xb0, 0x3b, 0xbb, 0x30, 0xa6, 0x2d, 0xad, 0x26, 0x9c, 0x17, 0x97, 0x1c, 0x8a, 0x1, 0x81, 0xa, 0xe8, 0x63, 0xe3, 0x68, 0xfe, 0x75, 0xf5, 0x7e, 0xc4, 0x4f, 0xcf, 0x44, 0xd2, 0x59, 0xd9, 0x52, 0x7d, 0xf6, 0x76, 0xfd, 0x6b, 0xe0, 0x60, 0xeb, 0x51, 0xda, 0x5a, 0xd1, 0x47, 0xcc, 0x4c, 0xc7, 0x25, 0xae, 0x2e, 0xa5, 0x33, 0xb8, 0x38, 0xb3, 0x9, 0x82, 0x2, 0x89, 0x1f, 0x94, 0x14, 0x9f, 0xcd, 0x46, 0xc6, 0x4d, 0xdb, 0x50, 0xd0, 0x5b, 0xe1, 0x6a, 0xea, 0x61, 0xf7, 0x7c, 0xfc, 0x77, 0x95, 0x1e, 0x9e, 0x15, 0x83, 0x8, 0x88, 0x3, 0xb9, 0x32, 0xb2, 0x39, 0xaf, 0x24, 0xa4, 0x2f, 0xfa, 0x71, 0xf1, 0x7a, 0xec, 0x67, 0xe7, 0x6c, 0xd6, 0x5d, 0xdd, 0x56, 0xc0, 0x4b, 0xcb, 0x40, 0xa2, 0x29, 0xa9, 0x22, 0xb4, 0x3f, 0xbf, 0x34, 0x8e, 0x5, 0x85, 0xe, 0x98, 0x13, 0x93, 0x18, 0x4a, 0xc1, 0x41, 0xca, 0x5c, 0xd7, 0x57, 0xdc, 0x66, 0xed, 0x6d, 0xe6, 0x70, 0xfb, 0x7b, 0xf0, 0x12, 0x99, 0x19, 0x92, 0x4, 0x8f, 0xf, 0x84, 0x3e, 0xb5, 0x35, 0xbe, 0x28, 0xa3, 0x23, 0xa8, 0x87, 0xc, 0x8c, 0x7, 0x91, 0x1a, 0x9a, 0x11, 0xab, 0x20, 0xa0, 0x2b, 0xbd, 0x36, 0xb6, 0x3d, 0xdf, 0x54, 0xd4, 0x5f, 0xc9, 0x42, 0xc2, 0x49, 0xf3, 0x78, 0xf8, 0x73, 0xe5, 0x6e, 0xee, 0x65, 0x37, 0xbc, 0x3c, 0xb7, 0x21, 0xaa, 0x2a, 0xa1, 0x1b, 0x90, 0x10, 0x9b, 0xd, 0x86, 0x6, 0x8d, 0x6f, 0xe4, 0x64, 0xef, 0x79, 0xf2, 0x72, 0xf9, 0x43, 0xc8, 0x48, 0xc3, 0x55, 0xde, 0x5e, 0xd5}, [256]uint8{0x0, 0x8c, 0x5, 0x89, 0xa, 0x86, 0xf, 0x83, 0x14, 0x98, 0x11, 0x9d, 0x1e, 0x92, 0x1b, 0x97, 0x28, 0xa4, 0x2d, 0xa1, 0x22, 0xae, 0x27, 0xab, 0x3c, 0xb0, 0x39, 0xb5, 0x36, 0xba, 0x33, 0xbf, 0x50, 0xdc, 0x55, 0xd9, 0x5a, 0xd6, 0x5f, 0xd3, 0x44, 0xc8, 0x41, 0xcd, 0x4e, 0xc2, 0x4b, 0xc7, 0x78, 0xf4, 0x7d, 0xf1, 0x72, 0xfe, 0x77, 0xfb, 0x6c, 0xe0, 0x69, 0xe5, 0x66, 0xea, 0x63, 0xef, 0xa0, 0x2c, 0xa5, 0x29, 0xaa, 0x26, 0xaf, 0x23, 0xb4, 0x38, 0xb1, 0x3d, 0xbe, 0x32, 0xbb, 0x37, 0x88, 0x4, 0x8d, 0x1, 0x82, 0xe, 0x87, 0xb, 0x9c, 0x10, 0x99, 0x15, 0x96, 0x1a, 0x93, 0x1f, 0xf0, 0x7c, 0xf5, 0x79, 0xfa, 0x76, 0xff, 0x73, 0xe4, 0x68, 0xe1, 0x6d, 0xee, 0x62, 0xeb, 0x67, 0xd8, 0x54, 0xdd, 0x51, 0xd2, 0x5e, 0xd7, 0x5b, 0xcc, 0x40, 0xc9, 0x45, 0xc6, 0x4a, 0xc3, 0x4f, 0x5d, 0xd1, 0x58, 0xd4, 0x57, 0xdb, 0x52, 0xde, 0x49, 0xc5, 0x4c, 0xc0, 0x43, 0xcf, 0x46, 0xca, 0x75, 0xf9, 0x70, 0xfc, 0x7f, 0xf3, 0x7a, 0xf6, 0x61, 0xed, 0x64, 0xe8, 0x6b, 0xe7, 0x6e, 0xe2, 0xd, 0x81, 0x8, 0x84, 0x7, 0x8b, 0x2, 0x8e, 0x19, 0x95, 0x1c, 0x90, 0x13, 0x9f, 0x16, 0x9a, 0x25, 0xa9, 0x20, 0xac, 0x2f, 0xa3, 0x2a, 0xa6, 0x31, 0xbd, 0x34, 0xb8, 0x3b, 0xb7, 0x3e, 0xb2, 0xfd, 0x71, 0xf8, 0x74, 0xf7, 0x7b, 0xf2, 0x7e, 0xe9, 0x65, 0xec, 0x60, 0xe3, 0x6f, 0xe6, 0x6a, 0xd5, 0x59, 0xd0, 0x5c, 0xdf, 0x53, 0xda, 0x56, 0xc1, 0x4d, 0xc4, 0x48, 0xcb, 0x47, 0xce, 0x42, 0xad, 0x21, 0xa8, 0x24, 0xa7, 0x2b, 0xa2, 0x2e, 0xb9, 0x35, 0xbc, 0x30, 0xb3, 0x3f, 0xb6, 0x3a, 0x85, 0x9, 0x80, 0xc, 0x8f, 0x3, 0x8a, 0x6, 0x91, 0x1d, 0x94, 0x18, 0x9b, 0x17, 0x9e, 0x12}, [256]uint8{0x0, 0x8d, 0x7, 0x8a, 0xe, 0x83, 0x9, 0x84, 0x1c, 0x91, 0x1b, 0x96, 0x12, 0x9f, 0x15, 0x98, 0x38, 0xb5, 0x3f, 0xb2, 0x36, 0xbb, 0x31, 0xbc, 0x24, 0xa9, 0x23, 0xae, 0x2a, 0xa7, 0x2d, 0xa0, 0x70, 0xfd, 0x77, 0xfa, 0x7e, 0xf3, 0x79, 0xf4, 0x6c, 0xe1, 0x6b, 0xe6, 0x62, 0xef, 0x65, 0xe8, 0x48, 0xc5, 0x4f, 0xc2, 0x46, 0xcb, 0x41, 0xcc, 0x54, 0xd9, 0x53, 0xde, 0x5a, 0xd7, 0x5d, 0xd0, 0xe0, 0x6d, 0xe7, 0x6a, 0xee, 0x63, 0xe9, 0x64, 0xfc, 0x71, 0xfb, 0x76, 0xf2, 0x7f, 0xf5, 0x78, 0xd8, 0x55, 0xdf, 0x52, 0xd6, 0x5b, 0xd1, 0x5c, 0xc4, 0x49, 0xc3, 0x4e, 0xca, 0x47, 0xcd, 0x40, 0x90, 0x1d, 0x97, 0x1a, 0x9e, 0x13, 0x99, 0x14, 0x8c, 0x1, 0x8b, 0x6, 0x82, 0xf, 0x85, 0x8, 0xa8, 0x25, 0xaf, 0x22, 0xa6, 0x2b, 0xa1, 0x2c, 0xb4, 0x39, 0xb3, 0x3e, 0xba, 0x37, 0xbd, 0x30, 0xdd, 0x50, 0xda, 0x57, 0xd3, 0x5e, 0xd4, 0x59, 0xc1, 0x4c, 0xc6, 0x4b, 0xcf, 0x42, 0xc8, 0x45, 0xe5, 0x68, 0xe2, 0x6f, 0xeb, 0x66, 0xec, 0x61, 0xf9, 0x74, 0xfe, 0x73, 0xf7, 0x7a, 0xf0, 0x7d, 0xad, 0x20, 0xaa, 0x27, 0xa3, 0x2e, 0xa4, 0x29, 0xb1, 0x3c, 0xb6, 0x3b, 0xbf, 0x32, 0xb8, 0x35, 0x95, 0x18, 0x92, 0x1f, 0x9b, 0x16, 0x9c, 0x11, 0x89, 0x4, 0x8e, 0x3, 0x87, 0xa, 0x80, 0xd, 0x3d, 0xb0, 0x3a, 0xb7, 0x33, 0xbe, 0x34, 0xb9, 0x21, 0xac, 0x26, 0xab, 0x2f, 0xa2, 0x28, 0xa5, 0x5, 0x88, 0x2, 0x8f, 0xb, 0x86, 0xc, 0x81, 0x19, 0x94, 0x1e, 0x93, 0x17, 0x9a, 0x10, 0x9d, 0x4d, 0xc0, 0x4a, 0xc7, 0x43, 0xce, 0x44, 0xc9, 0x51, 0xdc, 0x56, 0xdb, 0x5f, 0xd2, 0x58, 0xd5, 0x75, 0xf8, 0x72, 0xff, 0x7b, 0xf6, 0x7c, 0xf1, 0x69, 0xe4, 0x6e, 0xe3, 0x67, 0xea, 0x60, 0xed}, [256]uint8{0x0, 0x8e, 0x1, 0x8f, 0x2, 0x8c, 0x3, 0x8d, 0x4, 0x8a, 0x5, 0x8b, 0x6, 0x88, 0x7, 0x89, 0x8, 0x86, 0x9, 0x87, 0xa, 0x84, 0xb, 0x85, 0xc, 0x82, 0xd, 0x83, 0xe, 0x80, 0xf, 0x81, 0x10, 0x9e, 0x11, 0x9f, 0x12, 0x9c, 0x13, 0x9d, 0x14, 0x9a, 0x15, 0x9b, 0x16, 0x98, 0x17, 0x99, 0x18, 0x96, 0x19, 0x97, 0x1a, 0x94, 0x1b, 0x95, 0x1c, 0x92, 0x1d, 0x93, 0x1e, 0x90, 0x1f, 0x91, 0x20, 0xae, 0x21, 0xaf, 0x22, 0xac, 0x23, 0xad, 0x24, 0xaa, 0x25, 0xab, 0x26, 0xa8, 0x27, 0xa9, 0x28, 0xa6, 0x29, 0xa7, 0x2a, 0xa4, 0x2b, 0xa5, 0x2c, 0xa2, 0x2d, 0xa3, 0x2e, 0xa0, 0x2f, 0xa1, 0x30, 0xbe, 0x31, 0xbf, 0x32, 0xbc, 0x33, 0xbd, 0x34, 0xba, 0x35, 0xbb, 0x36, 0xb8, 0x37, 0xb9, 0x38, 0xb6, 0x39, 0xb7, 0x3a, 0xb4, 0x3b, 0xb5, 0x3c, 0xb2, 0x3d, 0xb3, 0x3e, 0xb0, 0x3f, 0xb1, 0x40, 0xce, 0x41, 0xcf, 0x42, 0xcc, 0x43, 0xcd, 0x44, 0xca, 0x45, 0xcb, 0x46, 0xc8, 0x47, 0xc9, 0x48, 0xc6, 0x49, 0xc7, 0x4a, 0xc4, 0x4b, 0xc5, 0x4c, 0xc2, 0x4d, 0xc3, 0x4e, 0xc0, 0x4f, 0xc1, 0x50, 0xde, 0x51, 0xdf, 0x52, 0xdc, 0x53, 0xdd, 0x54, 0xda, 0x55, 0xdb, 0x56, 0xd8, 0x57, 0xd9, 0x58, 0xd6, 0x59, 0xd7, 0x5a, 0xd4, 0x5b, 0xd5, 0x5c, 0xd2, 0x5d, 0xd3, 0x5e, 0xd0, 0x5f, 0xd1, 0x60, 0xee, 0x61, 0xef, 0x62, 0xec, 0x63, 0xed, 0x64, 0xea, 0x65, 0xeb, 0x66, 0xe8, 0x67, 0xe9, 0x68, 0xe6, 0x69, 0xe7, 0x6a, 0xe4, 0x6b, 0xe5, 0x6c, 0xe2, 0x6d, 0xe3, 0x6e, 0xe0, 0x6f, 0xe1, 0x70, 0xfe, 0x71, 0xff, 0x72, 0xfc, 0x73, 0xfd, 0x74, 0xfa, 0x75, 0xfb, 0x76, 0xf8, 0x77, 0xf9, 0x78, 0xf6, 0x79, 0xf7, 0x7a, 0xf4, 0x7b, 0xf5, 0x7c, 0xf2, 0x7d, 0xf3, 0x7e, 0xf0, 0x7f, 0xf1}, [256]uint8{0x0, 0x8f, 0x3, 0x8c, 0x6, 0x89, 0x5, 0x8a, 0xc, 0x83, 0xf, 0x80, 0xa, 0x85, 0x9, 0x86, 0x18, 0x97, 0x1b, 0x94, 0x1e, 0x91, 0x1d, 0x92, 0x14, 0x9b, 0x17, 0x98, 0x12, 0x9d, 0x11, 0x9e, 0x30, 0xbf, 0x33, 0xbc, 0x36, 0xb9, 0x35, 0xba, 0x3c, 0xb3, 0x3f, 0xb0, 0x3a, 0xb5, 0x39, 0xb6, 0x28, 0xa7, 0x2b, 0xa4, 0x2e, 0xa1, 0x2d, 0xa2, 0x24, 0xab, 0x27, 0xa8, 0x22, 0xad, 0x21, 0xae, 0x60, 0xef, 0x63, 0xec, 0x66, 0xe9, 0x65, 0xea, 0x6c, 0xe3, 0x6f, 0xe0, 0x6a, 0xe5, 0x69, 0xe6, 0x78, 0xf7, 0x7b, 0xf4, 0x7e, 0xf1, 0x7d, 0xf2, 0x74, 0xfb, 0x77, 0xf8, 0x72, 0xfd, 0x71, 0xfe, 0x50, 0xdf, 0x53, 0xdc, 0x56, 0xd9, 0x55, 0xda, 0x5c, 0xd3, 0x5f, 0xd0, 0x5a, 0xd5, 0x59, 0xd6, 0x48, 0xc7, 0x4b, 0xc4, 0x4e, 0xc1, 0x4d, 0xc2, 0x44, 0xcb, 0x47, 0xc8, 0x42, 0xcd, 0x41, 0xce, 0xc0, 0x4f, 0xc3, 0x4c, 0xc6, 0x49, 0xc5, 0x4a, 0xcc, 0x43, 0xcf, 0x40, 0xca, 0x45, 0xc9, 0x46, 0xd8, 0x57, 0xdb, 0x54, 0xde, 0x51, 0xdd, 0x52, 0xd4, 0x5b, 0xd7, 0x58, 0xd2, 0x5d, 0xd1, 0x5e, 0xf0, 0x7f, 0xf3, 0x7c, 0xf6, 0x79, 0xf5, 0x7a, 0xfc, 0x73, 0xff, 0x70, 0xfa, 0x75, 0xf9, 0x76, 0xe8, 0x67, 0xeb, 0x64, 0xee, 0x61, 0xed, 0x62, 0xe4, 0x6b, 0xe7, 0x68, 0xe2, 0x6d, 0xe1, 0x6e, 0xa0, 0x2f, 0xa3, 0x2c, 0xa6, 0x29, 0xa5, 0x2a, 0xac, 0x23, 0xaf, 0x20, 0xaa, 0x25, 0xa9, 0x26, 0xb8, 0x37, 0xbb, 0x34, 0xbe, 0x31, 0xbd, 0x32, 0xb4, 0x3b, 0xb7, 0x38, 0xb2, 0x3d, 0xb1, 0x3e, 0x90, 0x1f, 0x93, 0x1c, 0x96, 0x19, 0x95, 0x1a, 0x9c, 0x13, 0x9f, 0x10, 0x9a, 0x15, 0x99, 0x16, 0x88, 0x7, 0x8b, 0x4, 0x8e, 0x1, 0x8d, 0x2, 0x84, 0xb, 0x87, 0x8, 0x82, 0xd, 0x81, 0xe}, [256]uint8{0x0, 0x90, 0x3d, 0xad, 0x7a, 0xea, 0x47, 0xd7, 0xf4, 0x64, 0xc9, 0x59, 0x8e, 0x1e, 0xb3, 0x23, 0xf5, 0x65, 0xc8, 0x58, 0x8f, 0x1f, 0xb2, 0x22, 0x1, 0x91, 0x3c, 0xac, 0x7b, 0xeb, 0x46, 0xd6, 0xf7, 0x67, 0xca, 0x5a, 0x8d, 0x1d, 0xb0, 0x20, 0x3, 0x93, 0x3e, 0xae, 0x79, 0xe9, 0x44, 0xd4, 0x2, 0x92, 0x3f, 0xaf, 0x78, 0xe8, 0x45, 0xd5, 0xf6, 0x66, 0xcb, 0x5b, 0x8c, 0x1c, 0xb1, 0x21, 0xf3, 0x63, 0xce, 0x5e, 0x89, 0x19, 0xb4, 0x24, 0x7, 0x97, 0x3a, 0xaa, 0x7d, 0xed, 0x40, 0xd0, 0x6, 0x96, 0x3b, 0xab, 0x7c, 0xec, 0x41, 0xd1, 0xf2, 0x62, 0xcf, 0x5f, 0x88, 0x18, 0xb5, 0x25, 0x4, 0x94, 0x39, 0xa9, 0x7e, 0xee, 0x43, 0xd3, 0xf0, 0x60, 0xcd, 0x5d, 0x8a, 0x1a, 0xb7, 0x27, 0xf1, 0x61, 0xcc, 0x5c, 0x8b, 0x1b, 0xb6, 0x26, 0x5, 0x95, 0x38, 0xa8, 0x7f, 0xef, 0x42, 0xd2, 0xfb, 0x6b, 0xc6, 0x56, 0x81, 0x11, 0xbc, 0x2c, 0xf, 0x9f, 0x32, 0xa2, 0x75, 0xe5, 0x48, 0xd8, 0xe, 0x9e, 0x33, 0xa3, 0x74, 0xe4, 0x49, 0xd9, 0xfa, 0x6a, 0xc7, 0x57, 0x80, 0x10, 0xbd, 0x2d, 0xc, 0x9c, 0x31, 0xa1, 0x76, 0xe6, 0x4b, 0xdb, 0xf8, 0x68, 0xc5, 0x55, 0x82, 0x12, 0xbf, 0x2f, 0xf9, 0x69, 0xc4, 0x54, 0x83, 0x13, 0xbe, 0x2e, 0xd, 0x9d, 0x30, 0xa0, 0x77, 0xe7, 0x4a, 0xda, 0x8, 0x98, 0x35, 0xa5, 0x72, 0xe2, 0x4f, 0xdf, 0xfc, 0x6c, 0xc1, 0x51, 0x86, 0x16, 0xbb, 0x2b, 0xfd, 0x6d, 0xc0, 0x50, 0x87, 0x17, 0xba, 0x2a, 0x9, 0x99, 0x34, 0xa4, 0x73, 0xe3, 0x4e, 0xde, 0xff, 0x6f, 0xc2, 0x52, 0x85, 0x15, 0xb8, 0x28, 0xb, 0x9b, 0x36, 0xa6, 0x71, 0xe1, 0x4c, 0xdc, 0xa, 0x9a, 0x37, 0xa7, 0x70, 0xe0, 0x4d, 0xdd, 0xfe, 0x6e, 0xc3, 0x53, 0x84, 0x14, 0xb9, 0x29}, [256]uint8{0x0, 0x91, 0x3f, 0xae, 0x7e, 0xef, 0x41, 0xd0, 0xfc, 0x6d, 0xc3, 0x52, 0x82, 0x13, 0xbd, 0x2c, 0xe5, 0x74, 0xda, 0x4b, 0x9b, 0xa, 0xa4, 0x35, 0x19, 0x88, 0x26, 0xb7, 0x67, 0xf6, 0x58, 0xc9, 0xd7, 0x46, 0xe8, 0x79, 0xa9, 0x38, 0x96, 0x7, 0x2b, 0xba, 0x14, 0x85, 0x55, 0xc4, 0x6a, 0xfb, 0x32, 0xa3, 0xd, 0x9c, 0x4c, 0xdd, 0x73, 0xe2, 0xce, 0x5f, 0xf1, 0x60, 0xb0, 0x21, 0x8f, 0x1e, 0xb3, 0x22, 0x8c, 0x1d, 0xcd, 0x5c, 0xf2, 0x63, 0x4f, 0xde, 0x70, 0xe1, 0x31, 0xa0, 0xe, 0x9f, 0x56, 0xc7, 0x69, 0xf8, 0x28, 0xb9, 0x17, 0x86, 0xaa, 0x3b, 0x95, 0x4, 0xd4, 0x45, 0xeb, 0x7a, 0x64, 0xf5, 0x5b, 0xca, 0x1a, 0x8b, 0x25, 0xb4, 0x98, 0x9, 0xa7, 0x36, 0xe6, 0x77, 0xd9, 0x48, 0x81, 0x10, 0xbe, 0x2f, 0xff, 0x6e, 0xc0, 0x51, 0x7d, 0xec, 0x42, 0xd3, 0x3, 0x92, 0x3c, 0xad, 0x7b, 0xea, 0x44, 0xd5, 0x5, 0x94, 0x3a, 0xab, 0x87, 0x16, 0xb8, 0x29, 0xf9, 0x68, 0xc6, 0x57, 0x9e, 0xf, 0xa1, 0x30, 0xe0, 0x71, 0xdf, 0x4e, 0x62, 0xf3, 0x5d, 0xcc, 0x1c, 0x8d, 0x23, 0xb2, 0xac, 0x3d, 0x93, 0x2, 0xd2, 0x43, 0xed, 0x7c, 0x50, 0xc1, 0x6f, 0xfe, 0x2e, 0xbf, 0x11, 0x80, 0x49, 0xd8, 0x76, 0xe7, 0x37, 0xa6, 0x8, 0x99, 0xb5, 0x24, 0x8a, 0x1b, 0xcb, 0x5a, 0xf4, 0x65, 0xc8, 0x59, 0xf7, 0x66, 0xb6, 0x27, 0x89, 0x18, 0x34, 0xa5, 0xb, 0x9a, 0x4a, 0xdb, 0x75, 0xe4, 0x2d, 0xbc, 0x12, 0x83, 0x53, 0xc2, 0x6c, 0xfd, 0xd1, 0x40, 0xee, 0x7f, 0xaf, 0x3e, 0x90, 0x1, 0x1f, 0x8e, 0x20, 0xb1, 0x61, 0xf0, 0x5e, 0xcf, 0xe3, 0x72, 0xdc, 0x4d, 0x9d, 0xc, 0xa2, 0x33, 0xfa, 0x6b, 0xc5, 0x54, 0x84, 0x15, 0xbb, 0x2a, 0x6, 0x97, 0x39, 0xa8, 0x78, 0xe9, 0x47, 0xd6}, [256]uint8{0x0, 0x92, 0x39, 0xab, 0x72, 0xe0, 0x4b, 0xd9, 0xe4, 0x76, 0xdd, 0x4f, 0x96, 0x4, 0xaf, 0x3d, 0xd5, 0x47, 0xec, 0x7e, 0xa7, 0x35, 0x9e, 0xc, 0x31, 0xa3, 0x8, 0x9a, 0x43, 0xd1, 0x7a, 0xe8, 0xb7, 0x25, 0x8e, 0x1c, 0xc5, 0x57, 0xfc, 0x6e, 0x53, 0xc1, 0x6a, 0xf8, 0x21, 0xb3, 0x18, 0x8a, 0x62, 0xf0, 0x5b, 0xc9, 0x10, 0x82, 0x29, 0xbb, 0x86, 0x14, 0xbf, 0x2d, 0xf4, 0x66, 0xcd, 0x5f, 0x73, 0xe1, 0x4a, 0xd8, 0x1, 0x93, 0x38, 0xaa, 0x97, 0x5, 0xae, 0x3c, 0xe5, 0x77, 0xdc, 0x4e, 0xa6, 0x34, 0x9f, 0xd, 0xd4, 0x46, 0xed, 0x7f, 0x42, 0xd0, 0x7b, 0xe9, 0x30, 0xa2, 0x9, 0x9b, 0xc4, 0x56, 0xfd, 0x6f, 0xb6, 0x24, 0x8f, 0x1d, 0x20, 0xb2, 0x19, 0x8b, 0x52, 0xc0, 0x6b, 0xf9, 0x11, 0x83, 0x28, 0xba, 0x63, 0xf1, 0x5a, 0xc8, 0xf5, 0x67, 0xcc, 0x5e, 0x87, 0x15, 0xbe, 0x2c, 0xe6, 0x74, 0xdf, 0x4d, 0x94, 0x6, 0xad, 0x3f, 0x2, 0x90, 0x3b, 0xa9, 0x70, 0xe2, 0x49, 0xdb, 0x33, 0xa1, 0xa, 0x98, 0x41, 0xd3, 0x78, 0xea, 0xd7, 0x45, 0xee, 0x7c, 0xa5, 0x37, 0x9c, 0xe, 0x51, 0xc3, 0x68, 0xfa, 0x23, 0xb1, 0x1a, 0x88, 0xb5, 0x27, 0x8c, 0x1e, 0xc7, 0x55, 0xfe, 0x6c, 0x84, 0x16, 0xbd, 0x2f, 0xf6, 0x64, 0xcf, 0x5d, 0x60, 0xf2, 0x59, 0xcb, 0x12, 0x80, 0x2b, 0xb9, 0x95, 0x7, 0xac, 0x3e, 0xe7, 0x75, 0xde, 0x4c, 0x71, 0xe3, 0x48, 0xda, 0x3, 0x91, 0x3a, 0xa8, 0x40, 0xd2, 0x79, 0xeb, 0x32, 0xa0, 0xb, 0x99, 0xa4, 0x36, 0x9d, 0xf, 0xd6, 0x44, 0xef, 0x7d, 0x22, 0xb0, 0x1b, 0x89, 0x50, 0xc2, 0x69, 0xfb, 0xc6, 0x54, 0xff, 0x6d, 0xb4, 0x26, 0x8d, 0x1f, 0xf7, 0x65, 0xce, 0x5c, 0x85, 0x17, 0xbc, 0x2e, 0x13, 0x81, 0x2a, 0xb8, 0x61, 0xf3, 0x58, 0xca}, [256]uint8{0x0, 0x93, 0x3b, 0xa8, 0x76, 0xe5, 0x4d, 0xde, 0xec, 0x7f, 0xd7, 0x44, 0x9a, 0x9, 0xa1, 0x32, 0xc5, 0x56, 0xfe, 0x6d, 0xb3, 0x20, 0x88, 0x1b, 0x29, 0xba, 0x12, 0x81, 0x5f, 0xcc, 0x64, 0xf7, 0x97, 0x4, 0xac, 0x3f, 0xe1, 0x72, 0xda, 0x49, 0x7b, 0xe8, 0x40, 0xd3, 0xd, 0x9e, 0x36, 0xa5, 0x52, 0xc1, 0x69, 0xfa, 0x24, 0xb7, 0x1f, 0x8c, 0xbe, 0x2d, 0x85, 0x16, 0xc8, 0x5b, 0xf3, 0x60, 0x33, 0xa0, 0x8, 0x9b, 0x45, 0xd6, 0x7e, 0xed, 0xdf, 0x4c, 0xe4, 0x77, 0xa9, 0x3a, 0x92, 0x1, 0xf6, 0x65, 0xcd, 0x5e, 0x80, 0x13, 0xbb, 0x28, 0x1a, 0x89, 0x21, 0xb2, 0x6c, 0xff, 0x57, 0xc4, 0xa4, 0x37, 0x9f, 0xc, 0xd2, 0x41, 0xe9, 0x7a, 0x48, 0xdb, 0x73, 0xe0, 0x3e, 0xad, 0x5, 0x96, 0x61, 0xf2, 0x5a, 0xc9, 0x17, 0x84, 0x2c, 0xbf, 0x8d, 0x1e, 0xb6, 0x25, 0xfb, 0x68, 0xc0, 0x53, 0x66, 0xf5, 0x5d, 0xce, 0x10, 0x83, 0x2b, 0xb8, 0x8a, 0x19, 0xb1, 0x22, 0xfc, 0x6f, 0xc7, 0x54, 0xa3, 0x30, 0x98, 0xb, 0xd5, 0x46, 0xee, 0x7d, 0x4f, 0xdc, 0x74, 0xe7, 0x39, 0xaa, 0x2, 0x91, 0xf1, 0x62, 0xca, 0x59, 0x87, 0x14, 0xbc, 0x2f, 0x1d, 0x8e, 0x26, 0xb5, 0x6b, 0xf8, 0x50, 0xc3, 0x34, 0xa7, 0xf, 0x9c, 0x42, 0xd1, 0x79, 0xea, 0xd8, 0x4b, 0xe3, 0x70, 0xae, 0x3d, 0x95, 0x6, 0x55, 0xc6, 0x6e, 0xfd, 0x23, 0xb0, 0x18, 0x8b, 0xb9, 0x2a, 0x82, 0x11, 0xcf, 0x5c, 0xf4, 0x67, 0x90, 0x3, 0xab, 0x38, 0xe6, 0x75, 0xdd, 0x4e, 0x7c, 0xef, 0x47, 0xd4, 0xa, 0x99, 0x31, 0xa2, 0xc2, 0x51, 0xf9, 0x6a, 0xb4, 0x27, 0x8f, 0x1c, 0x2e, 0xbd, 0x15, 0x86, 0x58, 0xcb, 0x63, 0xf0, 0x7, 0x94, 0x3c, 0xaf, 0x71, 0xe2, 0x4a, 0xd9, 0xeb, 0x78, 0xd0, 0x43, 0x9d, 0xe, 0xa6, 0x35}, [256]uint8{0x0, 0x94, 0x35, 0xa1, 0x6a, 0xfe, 0x5f, 0xcb, 0xd4, 0x40, 0xe1, 0x75, 0xbe, 0x2a, 0x8b, 0x1f, 0xb5, 0x21, 0x80, 0x14, 0xdf, 0x4b, 0xea, 0x7e, 0x61, 0xf5, 0x54, 0xc0, 0xb, 0x9f, 0x3e, 0xaa, 0x77, 0xe3, 0x42, 0xd6, 0x1d, 0x89, 0x28, 0xbc, 0xa3, 0x37, 0x96, 0x2, 0xc9, 0x5d, 0xfc, 0x68, 0xc2, 0x56, 0xf7, 0x63, 0xa8, 0x3c, 0x9d, 0x9, 0x16, 0x82, 0x23, 0xb7, 0x7c, 0xe8, 0x49, 0xdd, 0xee, 0x7a, 0xdb, 0x4f, 0x84, 0x10, 0xb1, 0x25, 0x3a, 0xae, 0xf, 0x9b, 0x50, 0xc4, 0x65, 0xf1, 0x5b, 0xcf, 0x6e, 0xfa, 0x31, 0xa5, 0x4, 0x90, 0x8f, 0x1b, 0xba, 0x2e, 0xe5, 0x71, 0xd0, 0x44, 0x99, 0xd, 0xac, 0x38, 0xf3, 0x67, 0xc6, 0x52, 0x4d, 0xd9, 0x78, 0xec, 0x27, 0xb3, 0x12, 0x86, 0x2c, 0xb8, 0x19, 0x8d, 0x46, 0xd2, 0x73, 0xe7, 0xf8, 0x6c, 0xcd, 0x59, 0x92, 0x6, 0xa7, 0x33, 0xc1, 0x55, 0xf4, 0x60, 0xab, 0x3f, 0x9e, 0xa, 0x15, 0x81, 0x20, 0xb4, 0x7f, 0xeb, 0x4a, 0xde, 0x74, 0xe0, 0x41, 0xd5, 0x1e, 0x8a, 0x2b, 0xbf, 0xa0, 0x34, 0x95, 0x1, 0xca, 0x5e, 0xff, 0x6b, 0xb6, 0x22, 0x83, 0x17, 0xdc, 0x48, 0xe9, 0x7d, 0x62, 0xf6, 0x57, 0xc3, 0x8, 0x9c, 0x3d, 0xa9, 0x3, 0x97, 0x36, 0xa2, 0x69, 0xfd, 0x5c, 0xc8, 0xd7, 0x43, 0xe2, 0x76, 0xbd, 0x29, 0x88, 0x1c, 0x2f, 0xbb, 0x1a, 0x8e, 0x45, 0xd1, 0x70, 0xe4, 0xfb, 0x6f, 0xce, 0x5a, 0x91, 0x5, 0xa4, 0x30, 0x9a, 0xe, 0xaf, 0x3b, 0xf0, 0x64, 0xc5, 0x51, 0x4e, 0xda, 0x7b, 0xef, 0x24, 0xb0, 0x11, 0x85, 0x58, 0xcc, 0x6d, 0xf9, 0x32, 0xa6, 0x7, 0x93, 0x8c, 0x18, 0xb9, 0x2d, 0xe6, 0x72, 0xd3, 0x47, 0xed, 0x79, 0xd8, 0x4c, 0x87, 0x13, 0xb2, 0x26, 0x39, 0xad, 0xc, 0x98, 0x53, 0xc7, 0x66, 0xf2}, [256]uint8{0x0, 0x95, 0x37, 0xa2, 0x6e, 0xfb, 0x59, 0xcc, 0xdc, 0x49, 0xeb, 0x7e, 0xb2, 0x27, 0x85, 0x10, 0xa5, 0x30, 0x92, 0x7, 0xcb, 0x5e, 0xfc, 0x69, 0x79, 0xec, 0x4e, 0xdb, 0x17, 0x82, 0x20, 0xb5, 0x57, 0xc2, 0x60, 0xf5, 0x39, 0xac, 0xe, 0x9b, 0x8b, 0x1e, 0xbc, 0x29, 0xe5, 0x70, 0xd2, 0x47, 0xf2, 0x67, 0xc5, 0x50, 0x9c, 0x9, 0xab, 0x3e, 0x2e, 0xbb, 0x19, 0x8c, 0x40, 0xd5, 0x77, 0xe2, 0xae, 0x3b, 0x99, 0xc, 0xc0, 0x55, 0xf7, 0x62, 0x72, 0xe7, 0x45, 0xd0, 0x1c, 0x89, 0x2b, 0xbe, 0xb, 0x9e, 0x3c, 0xa9, 0x65, 0xf0, 0x52, 0xc7, 0xd7, 0x42, 0xe0, 0x75, 0xb9, 0x2c, 0x8e, 0x1b, 0xf9, 0x6c, 0xce, 0x5b, 0x97, 0x2, 0xa0, 0x35, 0x25, 0xb0, 0x12, 0x87, 0x4b, 0xde, 0x7c, 0xe9, 0x5c, 0xc9, 0x6b, 0xfe, 0x32, 0xa7, 0x5, 0x90, 0x80, 0x15, 0xb7, 0x22, 0xee, 0x7b, 0xd9, 0x4c, 0x41, 0xd4, 0x76, 0xe3, 0x2f, 0xba, 0x18, 0x8d, 0x9d, 0x8, 0xaa, 0x3f, 0xf3, 0x66, 0xc4, 0x51, 0xe4, 0x71, 0xd3, 0x46, 0x8a, 0x1f, 0xbd, 0x28, 0x38, 0xad, 0xf, 0x9a, 0x56, 0xc3, 0x61, 0xf4, 0x16, 0x83, 0x21, 0xb4, 0x78, 0xed, 0x4f, 0xda, 0xca, 0x5f, 0xfd, 0x68, 0xa4, 0x31, 0x93, 0x6, 0xb3, 0x26, 0x84, 0x11, 0xdd, 0x48, 0xea, 0x7f, 0x6f, 0xfa, 0x58, 0xcd, 0x1, 0x94, 0x36, 0xa3, 0xef, 0x7a, 0xd8, 0x4d, 0x81, 0x14, 0xb6, 0x23, 0x33, 0xa6, 0x4, 0x91, 0x5d, 0xc8, 0x6a, 0xff, 0x4a, 0xdf, 0x7d, 0xe8, 0x24, 0xb1, 0x13, 0x86, 0x96, 0x3, 0xa1, 0x34, 0xf8, 0x6d, 0xcf, 0x5a, 0xb8, 0x2d, 0x8f, 0x1a, 0xd6, 0x43, 0xe1, 0x74, 0x64, 0xf1, 0x53, 0xc6, 0xa, 0x9f, 0x3d, 0xa8, 0x1d, 0x88, 0x2a, 0xbf, 0x73, 0xe6, 0x44, 0xd1, 0xc1, 0x54, 0xf6, 0x63, 0xaf, 0x3a, 0x98, 0xd}, [256]uint8{0x0, 0x96, 0x31, 0xa7, 0x62, 0xf4, 0x53, 0xc5, 0xc4, 0x52, 0xf5, 0x63, 0xa6, 0x30, 0x97, 0x1, 0x95, 0x3, 0xa4, 0x32, 0xf7, 0x61, 0xc6, 0x50, 0x51, 0xc7, 0x60, 0xf6, 0x33, 0xa5, 0x2, 0x94, 0x37, 0xa1, 0x6, 0x90, 0x55, 0xc3, 0x64, 0xf2, 0xf3, 0x65, 0xc2, 0x54, 0x91, 0x7, 0xa0, 0x36, 0xa2, 0x34, 0x93, 0x5, 0xc0, 0x56, 0xf1, 0x67, 0x66, 0xf0, 0x57, 0xc1, 0x4, 0x92, 0x35, 0xa3, 0x6e, 0xf8, 0x5f, 0xc9, 0xc, 0x9a, 0x3d, 0xab, 0xaa, 0x3c, 0x9b, 0xd, 0xc8, 0x5e, 0xf9, 0x6f, 0xfb, 0x6d, 0xca, 0x5c, 0x99, 0xf, 0xa8, 0x3e, 0x3f, 0xa9, 0xe, 0x98, 0x5d, 0xcb, 0x6c, 0xfa, 0x59, 0xcf, 0x68, 0xfe, 0x3b, 0xad, 0xa, 0x9c, 0x9d, 0xb, 0xac, 0x3a, 0xff, 0x69, 0xce, 0x58, 0xcc, 0x5a, 0xfd, 0x6b, 0xae, 0x38, 0x9f, 0x9, 0x8, 0x9e, 0x39, 0xaf, 0x6a, 0xfc, 0x5b, 0xcd, 0xdc, 0x4a, 0xed, 0x7b, 0xbe, 0x28, 0x8f, 0x19, 0x18, 0x8e, 0x29, 0xbf, 0x7a, 0xec, 0x4b, 0xdd, 0x49, 0xdf, 0x78, 0xee, 0x2b, 0xbd, 0x1a, 0x8c, 0x8d, 0x1b, 0xbc, 0x2a, 0xef, 0x79, 0xde, 0x48, 0xeb, 0x7d, 0xda, 0x4c, 0x89, 0x1f, 0xb8, 0x2e, 0x2f, 0xb9, 0x1e, 0x88, 0x4d, 0xdb, 0x7c, 0xea, 0x7e, 0xe8, 0x4f, 0xd9, 0x1c, 0x8a, 0x2d, 0xbb, 0xba, 0x2c, 0x8b, 0x1d, 0xd8, 0x4e, 0xe9, 0x7f, 0xb2, 0x24, 0x83, 0x15, 0xd0, 0x46, 0xe1, 0x77, 0x76, 0xe0, 0x47, 0xd1, 0x14, 0x82, 0x25, 0xb3, 0x27, 0xb1, 0x16, 0x80, 0x45, 0xd3, 0x74, 0xe2, 0xe3, 0x75, 0xd2, 0x44, 0x81, 0x17, 0xb0, 0x26, 0x85, 0x13, 0xb4, 0x22, 0xe7, 0x71, 0xd6, 0x40, 0x41, 0xd7, 0x70, 0xe6, 0x23, 0xb5, 0x12, 0x84, 0x10, 0x86, 0x21, 0xb7, 0x72, 0xe4, 0x43, 0xd5, 0xd4, 0x42, 0xe5, 0x73, 0xb6, 0x20, 0x87, 0x11}, [256]uint8{0x0, 0x97, 0x33, 0xa4, 0x66, 0xf1, 0x55, 0xc2, 0xcc, 0x5b, 0xff, 0x68, 0xaa, 0x3d, 0x99, 0xe, 0x85, 0x12, 0xb6, 0x21, 0xe3, 0x74, 0xd0, 0x47, 0x49, 0xde, 0x7a, 0xed, 0x2f, 0xb8, 0x1c, 0x8b, 0x17, 0x80, 0x24, 0xb3, 0x71, 0xe6, 0x42, 0xd5, 0xdb, 0x4c, 0xe8, 0x7f, 0xbd, 0x2a, 0x8e, 0x19, 0x92, 0x5, 0xa1, 0x36, 0xf4, 0x63, 0xc7, 0x50, 0x5e, 0xc9, 0x6d, 0xfa, 0x38, 0xaf, 0xb, 0x9c, 0x2e, 0xb9, 0x1d, 0x8a, 0x48, 0xdf, 0x7b, 0xec, 0xe2, 0x75, 0xd1, 0x46, 0x84, 0x13, 0xb7, 0x20, 0xab, 0x3c, 0x98, 0xf, 0xcd, 0x5a, 0xfe, 0x69, 0x67, 0xf0, 0x54, 0xc3, 0x1, 0x96, 0x32, 0xa5, 0x39, 0xae, 0xa, 0x9d, 0x5f, 0xc8, 0x6c, 0xfb, 0xf5, 0x62, 0xc6, 0x51, 0x93, 0x4, 0xa0, 0x37, 0xbc, 0x2b, 0x8f, 0x18, 0xda, 0x4d, 0xe9, 0x7e, 0x70, 0xe7, 0x43, 0xd4, 0x16, 0x81, 0x25, 0xb2, 0x5c, 0xcb, 0x6f, 0xf8, 0x3a, 0xad, 0x9, 0x9e, 0x90, 0x7, 0xa3, 0x34, 0xf6, 0x61, 0xc5, 0x52, 0xd9, 0x4e, 0xea, 0x7d, 0xbf, 0x28, 0x8c, 0x1b, 0x15, 0x82, 0x26, 0xb1, 0x73, 0xe4, 0x40, 0xd7, 0x4b, 0xdc, 0x78, 0xef, 0x2d, 0xba, 0x1e, 0x89, 0x87, 0x10, 0xb4, 0x23, 0xe1, 0x76, 0xd2, 0x45, 0xce, 0x59, 0xfd, 0x6a, 0xa8, 0x3f, 0x9b, 0xc, 0x2, 0x95, 0x31, 0xa6, 0x64, 0xf3, 0x57, 0xc0, 0x72, 0xe5, 0x41, 0xd6, 0x14, 0x83, 0x27, 0xb0, 0xbe, 0x29, 0x8d, 0x1a, 0xd8, 0x4f, 0xeb, 0x7c, 0xf7, 0x60, 0xc4, 0x53, 0x91, 0x6, 0xa2, 0x35, 0x3b, 0xac, 0x8, 0x9f, 0x5d, 0xca, 0x6e, 0xf9, 0x65, 0xf2, 0x56, 0xc1, 0x3, 0x94, 0x30, 0xa7, 0xa9, 0x3e, 0x9a, 0xd, 0xcf, 0x58, 0xfc, 0x6b, 0xe0, 0x77, 0xd3, 0x44, 0x86, 0x11, 0xb5, 0x22, 0x2c, 0xbb, 0x1f, 0x88, 0x4a, 0xdd, 0x79, 0xee}, [256]uint8{0x0, 0x98, 0x2d, 0xb5, 0x5a, 0xc2, 0x77, 0xef, 0xb4, 0x2c, 0x99, 0x1, 0xee, 0x76, 0xc3, 0x5b, 0x75, 0xed, 0x58, 0xc0, 0x2f, 0xb7, 0x2, 0x9a, 0xc1, 0x59, 0xec, 0x74, 0x9b, 0x3, 0xb6, 0x2e, 0xea, 0x72, 0xc7, 0x5f, 0xb0, 0x28, 0x9d, 0x5, 0x5e, 0xc6, 0x73, 0xeb, 0x4, 0x9c, 0x29, 0xb1, 0x9f, 0x7, 0xb2, 0x2a, 0xc5, 0x5d, 0xe8, 0x70, 0x2b, 0xb3, 0x6, 0x9e, 0x71, 0xe9, 0x5c, 0xc4, 0xc9, 0x51, 0xe4, 0x7c, 0x93, 0xb, 0xbe, 0x26, 0x7d, 0xe5, 0x50, 0xc8, 0x27, 0xbf, 0xa, 0x92, 0xbc, 0x24, 0x91, 0x9, 0xe6, 0x7e, 0xcb, 0x53, 0x8, 0x90, 0x25, 0xbd, 0x52, 0xca, 0x7f, 0xe7, 0x23, 0xbb, 0xe, 0x96, 0x79, 0xe1, 0x54, 0xcc, 0x97, 0xf, 0xba, 0x22, 0xcd, 0x55, 0xe0, 0x78, 0x56, 0xce, 0x7b, 0xe3, 0xc, 0x94, 0x21, 0xb9, 0xe2, 0x7a, 0xcf, 0x57, 0xb8, 0x20, 0x95, 0xd, 0x8f, 0x17, 0xa2, 0x3a, 0xd5, 0x4d, 0xf8, 0x60, 0x3b, 0xa3, 0x16, 0x8e, 0x61, 0xf9, 0x4c, 0xd4, 0xfa, 0x62, 0xd7, 0x4f, 0xa0, 0x38, 0x8d, 0x15, 0x4e, 0xd6, 0x63, 0xfb, 0x14, 0x8c, 0x39, 0xa1, 0x65, 0xfd, 0x48, 0xd0, 0x3f, 0xa7, 0x12, 0x8a, 0xd1, 0x49, 0xfc, 0x64, 0x8b, 0x13, 0xa6, 0x3e, 0x10, 0x88, 0x3d, 0xa5, 0x4a, 0xd2, 0x67, 0xff, 0xa4, 0x3c, 0x89, 0x11, 0xfe, 0x66, 0xd3, 0x4b, 0x46, 0xde, 0x6b, 0xf3, 0x1c, 0x84, 0x31, 0xa9, 0xf2, 0x6a, 0xdf, 0x47, 0xa8, 0x30, 0x85, 0x1d, 0x33, 0xab, 0x1e, 0x86, 0x69, 0xf1, 0x44, 0xdc, 0x87, 0x1f, 0xaa, 0x32, 0xdd, 0x45, 0xf0, 0x68, 0xac, 0x34, 0x81, 0x19, 0xf6, 0x6e, 0xdb, 0x43, 0x18, 0x80, 0x35, 0xad, 0x42, 0xda, 0x6f, 0xf7, 0xd9, 0x41, 0xf4, 0x6c, 0x83, 0x1b, 0xae, 0x36, 0x6d, 0xf5, 0x40, 0xd8, 0x37, 0xaf, 0x1a, 0x82}, [256]uint8{0x0, 0x99, 0x2f, 0xb6, 0x5e, 0xc7, 0x71, 0xe8, 0xbc, 0x25, 0x93, 0xa, 0xe2, 0x7b, 0xcd, 0x54, 0x65, 0xfc, 0x4a, 0xd3, 0x3b, 0xa2, 0x14, 0x8d, 0xd9, 0x40, 0xf6, 0x6f, 0x87, 0x1e, 0xa8, 0x31, 0xca, 0x53, 0xe5, 0x7c, 0x94, 0xd, 0xbb, 0x22, 0x76, 0xef, 0x59, 0xc0, 0x28, 0xb1, 0x7, 0x9e, 0xaf, 0x36, 0x80, 0x19, 0xf1, 0x68, 0xde, 0x47, 0x13, 0x8a, 0x3c, 0xa5, 0x4d, 0xd4, 0x62, 0xfb, 0x89, 0x10, 0xa6, 0x3f, 0xd7, 0x4e, 0xf8, 0x61, 0x35, 0xac, 0x1a, 0x83, 0x6b, 0xf2, 0x44, 0xdd, 0xec, 0x75, 0xc3, 0x5a, 0xb2, 0x2b, 0x9d, 0x4, 0x50, 0xc9, 0x7f, 0xe6, 0xe, 0x97, 0x21, 0xb8, 0x43, 0xda, 0x6c, 0xf5, 0x1d, 0x84, 0x32, 0xab, 0xff, 0x66, 0xd0, 0x49, 0xa1, 0x38, 0x8e, 0x17, 0x26, 0xbf, 0x9, 0x90, 0x78, 0xe1, 0x57, 0xce, 0x9a, 0x3, 0xb5, 0x2c, 0xc4, 0x5d, 0xeb, 0x72, 0xf, 0x96, 0x20, 0xb9, 0x51, 0xc8, 0x7e, 0xe7, 0xb3, 0x2a, 0x9c, 0x5, 0xed, 0x74, 0xc2, 0x5b, 0x6a, 0xf3, 0x45, 0xdc, 0x34, 0xad, 0x1b, 0x82, 0xd6, 0x4f, 0xf9, 0x60, 0x88, 0x11, 0xa7, 0x3e, 0xc5, 0x5c, 0xea, 0x73, 0x9b, 0x2, 0xb4, 0x2d, 0x79, 0xe0, 0x56, 0xcf, 0x27, 0xbe, 0x8, 0x91, 0xa0, 0x39, 0x8f, 0x16, 0xfe, 0x67, 0xd1, 0x48, 0x1c, 0x85, 0x33, 0xaa, 0x42, 0xdb, 0x6d, 0xf4, 0x86, 0x1f, 0xa9, 0x30, 0xd8, 0x41, 0xf7, 0x6e, 0x3a, 0xa3, 0x15, 0x8c, 0x64, 0xfd, 0x4b, 0xd2, 0xe3, 0x7a, 0xcc, 0x55, 0xbd, 0x24, 0x92, 0xb, 0x5f, 0xc6, 0x70, 0xe9, 0x1, 0x98, 0x2e, 0xb7, 0x4c, 0xd5, 0x63, 0xfa, 0x12, 0x8b, 0x3d, 0xa4, 0xf0, 0x69, 0xdf, 0x46, 0xae, 0x37, 0x81, 0x18, 0x29, 0xb0, 0x6, 0x9f, 0x77, 0xee, 0x58, 0xc1, 0x95, 0xc, 0xba, 0x23, 0xcb, 0x52, 0xe4, 0x7d}, [256]uint8{0x0, 0x9a, 0x29, 0xb3, 0x52, 0xc8, 0x7b, 0xe1, 0xa4, 0x3e, 0x8d, 0x17, 0xf6, 0x6c, 0xdf, 0x45, 0x55, 0xcf, 0x7c, 0xe6, 0x7, 0x9d, 0x2e, 0xb4, 0xf1, 0x6b, 0xd8, 0x42, 0xa3, 0x39, 0x8a, 0x10, 0xaa, 0x30, 0x83, 0x19, 0xf8, 0x62, 0xd1, 0x4b, 0xe, 0x94, 0x27, 0xbd, 0x5c, 0xc6, 0x75, 0xef, 0xff, 0x65, 0xd6, 0x4c, 0xad, 0x37, 0x84, 0x1e, 0x5b, 0xc1, 0x72, 0xe8, 0x9, 0x93, 0x20, 0xba, 0x49, 0xd3, 0x60, 0xfa, 0x1b, 0x81, 0x32, 0xa8, 0xed, 0x77, 0xc4, 0x5e, 0xbf, 0x25, 0x96, 0xc, 0x1c, 0x86, 0x35, 0xaf, 0x4e, 0xd4, 0x67, 0xfd, 0xb8, 0x22, 0x91, 0xb, 0xea, 0x70, 0xc3, 0x59, 0xe3, 0x79, 0xca, 0x50, 0xb1, 0x2b, 0x98, 0x2, 0x47, 0xdd, 0x6e, 0xf4, 0x15, 0x8f, 0x3c, 0xa6, 0xb6, 0x2c, 0x9f, 0x5, 0xe4, 0x7e, 0xcd, 0x57, 0x12, 0x88, 0x3b, 0xa1, 0x40, 0xda, 0x69, 0xf3, 0x92, 0x8, 0xbb, 0x21, 0xc0, 0x5a, 0xe9, 0x73, 0x36, 0xac, 0x1f, 0x85, 0x64, 0xfe, 0x4d, 0xd7, 0xc7, 0x5d, 0xee, 0x74, 0x95, 0xf, 0xbc, 0x26, 0x63, 0xf9, 0x4a, 0xd0, 0x31, 0xab, 0x18, 0x82, 0x38, 0xa2, 0x11, 0x8b, 0x6a, 0xf0, 0x43, 0xd9, 0x9c, 0x6, 0xb5, 0x2f, 0xce, 0x54, 0xe7, 0x7d, 0x6d, 0xf7, 0x44, 0xde, 0x3f, 0xa5, 0x16, 0x8c, 0xc9, 0x53, 0xe0, 0x7a, 0x9b, 0x1, 0xb2, 0x28, 0xdb, 0x41, 0xf2, 0x68, 0x89, 0x13, 0xa0, 0x3a, 0x7f, 0xe5, 0x56, 0xcc, 0x2d, 0xb7, 0x4, 0x9e, 0x8e, 0x14, 0xa7, 0x3d, 0xdc, 0x46, 0xf5, 0x6f, 0x2a, 0xb0, 0x3, 0x99, 0x78, 0xe2, 0x51, 0xcb, 0x71, 0xeb, 0x58, 0xc2, 0x23, 0xb9, 0xa, 0x90, 0xd5, 0x4f, 0xfc, 0x66, 0x87, 0x1d, 0xae, 0x34, 0x24, 0xbe, 0xd, 0x97, 0x76, 0xec, 0x5f, 0xc5, 0x80, 0x1a, 0xa9, 0x33, 0xd2, 0x48, 0xfb, 0x61}, [256]uint8{0x0, 0x9b, 0x2b, 0xb0, 0x56, 0xcd, 0x7d, 0xe6, 0xac, 0x37, 0x87, 0x1c, 0xfa, 0x61, 0xd1, 0x4a, 0x45, 0xde, 0x6e, 0xf5, 0x13, 0x88, 0x38, 0xa3, 0xe9, 0x72, 0xc2, 0x59, 0xbf, 0x24, 0x94, 0xf, 0x8a, 0x11, 0xa1, 0x3a, 0xdc, 0x47, 0xf7, 0x6c, 0x26, 0xbd, 0xd, 0x96, 0x70, 0xeb, 0x5b, 0xc0, 0xcf, 0x54, 0xe4, 0x7f, 0x99, 0x2, 0xb2, 0x29, 0x63, 0xf8, 0x48, 0xd3, 0x35, 0xae, 0x1e, 0x85, 0x9, 0x92, 0x22, 0xb9, 0x5f, 0xc4, 0x74, 0xef, 0xa5, 0x3e, 0x8e, 0x15, 0xf3, 0x68, 0xd8, 0x43, 0x4c, 0xd7, 0x67, 0xfc, 0x1a, 0x81, 0x31, 0xaa, 0xe0, 0x7b, 0xcb, 0x50, 0xb6, 0x2d, 0x9d, 0x6, 0x83, 0x18, 0xa8, 0x33, 0xd5, 0x4e, 0xfe, 0x65, 0x2f, 0xb4, 0x4, 0x9f, 0x79, 0xe2, 0x52, 0xc9, 0xc6, 0x5d, 0xed, 0x76, 0x90, 0xb, 0xbb, 0x20, 0x6a, 0xf1, 0x41, 0xda, 0x3c, 0xa7, 0x17, 0x8c, 0x12, 0x89, 0x39, 0xa2, 0x44, 0xdf, 0x6f, 0xf4, 0xbe, 0x25, 0x95, 0xe, 0xe8, 0x73, 0xc3, 0x58, 0x57, 0xcc, 0x7c, 0xe7, 0x1, 0x9a, 0x2a, 0xb1, 0xfb, 0x60, 0xd0, 0x4b, 0xad, 0x36, 0x86, 0x1d, 0x98, 0x3, 0xb3, 0x28, 0xce, 0x55, 0xe5, 0x7e, 0x34, 0xaf, 0x1f, 0x84, 0x62, 0xf9, 0x49, 0xd2, 0xdd, 0x46, 0xf6, 0x6d, 0x8b, 0x10, 0xa0, 0x3b, 0x71, 0xea, 0x5a, 0xc1, 0x27, 0xbc, 0xc, 0x97, 0x1b, 0x80, 0x30, 0xab, 0x4d, 0xd6, 0x66, 0xfd, 0xb7, 0x2c, 0x9c, 0x7, 0xe1, 0x7a, 0xca, 0x51, 0x5e, 0xc5, 0x75, 0xee, 0x8, 0x93, 0x23, 0xb8, 0xf2, 0x69, 0xd9, 0x42, 0xa4, 0x3f, 0x8f, 0x14, 0x91, 0xa, 0xba, 0x21, 0xc7, 0x5c, 0xec, 0x77, 0x3d, 0xa6, 0x16, 0x8d, 0x6b, 0xf0, 0x40, 0xdb, 0xd4, 0x4f, 0xff, 0x64, 0x82, 0x19, 0xa9, 0x32, 0x78, 0xe3, 0x53, 0xc8, 0x2e, 0xb5, 0x5, 0x9e}, [256]uint8{0x0, 0x9c, 0x25, 0xb9, 0x4a, 0xd6, 0x6f, 0xf3, 0x94, 0x8, 0xb1, 0x2d, 0xde, 0x42, 0xfb, 0x67, 0x35, 0xa9, 0x10, 0x8c, 0x7f, 0xe3, 0x5a, 0xc6, 0xa1, 0x3d, 0x84, 0x18, 0xeb, 0x77, 0xce, 0x52, 0x6a, 0xf6, 0x4f, 0xd3, 0x20, 0xbc, 0x5, 0x99, 0xfe, 0x62, 0xdb, 0x47, 0xb4, 0x28, 0x91, 0xd, 0x5f, 0xc3, 0x7a, 0xe6, 0x15, 0x89, 0x30, 0xac, 0xcb, 0x57, 0xee, 0x72, 0x81, 0x1d, 0xa4, 0x38, 0xd4, 0x48, 0xf1, 0x6d, 0x9e, 0x2, 0xbb, 0x27, 0x40, 0xdc, 0x65, 0xf9, 0xa, 0x96, 0x2f, 0xb3, 0xe1, 0x7d, 0xc4, 0x58, 0xab, 0x37, 0x8e, 0x12, 0x75, 0xe9, 0x50, 0xcc, 0x3f, 0xa3, 0x1a, 0x86, 0xbe, 0x22, 0x9b, 0x7, 0xf4, 0x68, 0xd1, 0x4d, 0x2a, 0xb6, 0xf, 0x93, 0x60, 0xfc, 0x45, 0xd9, 0x8b, 0x17, 0xae, 0x32, 0xc1, 0x5d, 0xe4, 0x78, 0x1f, 0x83, 0x3a, 0xa6, 0x55, 0xc9, 0x70, 0xec, 0xb5, 0x29, 0x90, 0xc, 0xff, 0x63, 0xda, 0x46, 0x21, 0xbd, 0x4, 0x98, 0x6b, 0xf7, 0x4e, 0xd2, 0x80, 0x1c, 0xa5, 0x39, 0xca, 0x56, 0xef, 0x73, 0x14, 0x88, 0x31, 0xad, 0x5e, 0xc2, 0x7b, 0xe7, 0xdf, 0x43, 0xfa, 0x66, 0x95, 0x9, 0xb0, 0x2c, 0x4b, 0xd7, 0x6e, 0xf2, 0x1, 0x9d, 0x24, 0xb8, 0xea, 0x76, 0xcf, 0x53, 0xa0, 0x3c, 0x85, 0x19, 0x7e, 0xe2, 0x5b, 0xc7, 0x34, 0xa8, 0x11, 0x8d, 0x61, 0xfd, 0x44, 0xd8, 0x2b, 0xb7, 0xe, 0x92, 0xf5, 0x69, 0xd0, 0x4c, 0xbf, 0x23, 0x9a, 0x6, 0x54, 0xc8, 0x71, 0xed, 0x1e, 0x82, 0x3b, 0xa7, 0xc0, 0x5c, 0xe5, 0x79, 0x8a, 0x16, 0xaf, 0x33, 0xb, 0x97, 0x2e, 0xb2, 0x41, 0xdd, 0x64, 0xf8, 0x9f, 0x3, 0xba, 0x26, 0xd5, 0x49, 0xf0, 0x6c, 0x3e, 0xa2, 0x1b, 0x87, 0x74, 0xe8, 0x51, 0xcd, 0xaa, 0x36, 0x8f, 0x13, 0xe0, 0x7c, 0xc5, 0x59}, [256]uint8{0x0, 0x9d, 0x27, 0xba, 0x4e, 0xd3, 0x69, 0xf4, 0x9c, 0x1, 0xbb, 0x26, 0xd2, 0x4f, 0xf5, 0x68, 0x25, 0xb8, 0x2, 0x9f, 0x6b, 0xf6, 0x4c, 0xd1, 0xb9, 0x24, 0x9e, 0x3, 0xf7, 0x6a, 0xd0, 0x4d, 0x4a, 0xd7, 0x6d, 0xf0, 0x4, 0x99, 0x23, 0xbe, 0xd6, 0x4b, 0xf1, 0x6c, 0x98, 0x5, 0xbf, 0x22, 0x6f, 0xf2, 0x48, 0xd5, 0x21, 0xbc, 0x6, 0x9b, 0xf3, 0x6e, 0xd4, 0x49, 0xbd, 0x20, 0x9a, 0x7, 0x94, 0x9, 0xb3, 0x2e, 0xda, 0x47, 0xfd, 0x60, 0x8, 0x95, 0x2f, 0xb2, 0x46, 0xdb, 0x61, 0xfc, 0xb1, 0x2c, 0x96, 0xb, 0xff, 0x62, 0xd8, 0x45, 0x2d, 0xb0, 0xa, 0x97, 0x63, 0xfe, 0x44, 0xd9, 0xde, 0x43, 0xf9, 0x64, 0x90, 0xd, 0xb7, 0x2a, 0x42, 0xdf, 0x65, 0xf8, 0xc, 0x91, 0x2b, 0xb6, 0xfb, 0x66, 0xdc, 0x41, 0xb5, 0x28, 0x92, 0xf, 0x67, 0xfa, 0x40, 0xdd, 0x29, 0xb4, 0xe, 0x93, 0x35, 0xa8, 0x12, 0x8f, 0x7b, 0xe6, 0x5c, 0xc1, 0xa9, 0x34, 0x8e, 0x13, 0xe7, 0x7a, 0xc0, 0x5d, 0x10, 0x8d, 0x37, 0xaa, 0x5e, 0xc3, 0x79, 0xe4, 0x8c, 0x11, 0xab, 0x36, 0xc2, 0x5f, 0xe5, 0x78, 0x7f, 0xe2, 0x58, 0xc5, 0x31, 0xac, 0x16, 0x8b, 0xe3, 0x7e, 0xc4, 0x59, 0xad, 0x30, 0x8a, 0x17, 0x5a, 0xc7, 0x7d, 0xe0, 0x14, 0x89, 0x33, 0xae, 0xc6, 0x5b, 0xe1, 0x7c, 0x88, 0x15, 0xaf, 0x32, 0xa1, 0x3c, 0x86, 0x1b, 0xef, 0x72, 0xc8, 0x55, 0x3d, 0xa0, 0x1a, 0x87, 0x73, 0xee, 0x54, 0xc9, 0x84, 0x19, 0xa3, 0x3e, 0xca, 0x57, 0xed, 0x70, 0x18, 0x85, 0x3f, 0xa2, 0x56, 0xcb, 0x71, 0xec, 0xeb, 0x76, 0xcc, 0x51, 0xa5, 0x38, 0x82, 0x1f, 0x77, 0xea, 0x50, 0xcd, 0x39, 0xa4, 0x1e, 0x83, 0xce, 0x53, 0xe9, 0x74, 0x80, 0x1d, 0xa7, 0x3a, 0x52, 0xcf, 0x75, 0xe8, 0x1c, 0x81, 0x3b, 0xa6}, [256]uint8{0x0, 0x9e, 0x21, 0xbf, 0x42, 0xdc, 0x63, 0xfd, 0x84, 0x1a, 0xa5, 0x3b, 0xc6, 0x58, 0xe7, 0x79, 0x15, 0x8b, 0x34, 0xaa, 0x57, 0xc9, 0x76, 0xe8, 0x91, 0xf, 0xb0, 0x2e, 0xd3, 0x4d, 0xf2, 0x6c, 0x2a, 0xb4, 0xb, 0x95, 0x68, 0xf6, 0x49, 0xd7, 0xae, 0x30, 0x8f, 0x11, 0xec, 0x72, 0xcd, 0x53, 0x3f, 0xa1, 0x1e, 0x80, 0x7d, 0xe3, 0x5c, 0xc2, 0xbb, 0x25, 0x9a, 0x4, 0xf9, 0x67, 0xd8, 0x46, 0x54, 0xca, 0x75, 0xeb, 0x16, 0x88, 0x37, 0xa9, 0xd0, 0x4e, 0xf1, 0x6f, 0x92, 0xc, 0xb3, 0x2d, 0x41, 0xdf, 0x60, 0xfe, 0x3, 0x9d, 0x22, 0xbc, 0xc5, 0x5b, 0xe4, 0x7a, 0x87, 0x19, 0xa6, 0x38, 0x7e, 0xe0, 0x5f, 0xc1, 0x3c, 0xa2, 0x1d, 0x83, 0xfa, 0x64, 0xdb, 0x45, 0xb8, 0x26, 0x99, 0x7, 0x6b, 0xf5, 0x4a, 0xd4, 0x29, 0xb7, 0x8, 0x96, 0xef, 0x71, 0xce, 0x50, 0xad, 0x33, 0x8c, 0x12, 0xa8, 0x36, 0x89, 0x17, 0xea, 0x74, 0xcb, 0x55, 0x2c, 0xb2, 0xd, 0x93, 0x6e, 0xf0, 0x4f, 0xd1, 0xbd, 0x23, 0x9c, 0x2, 0xff, 0x61, 0xde, 0x40, 0x39, 0xa7, 0x18, 0x86, 0x7b, 0xe5, 0x5a, 0xc4, 0x82, 0x1c, 0xa3, 0x3d, 0xc0, 0x5e, 0xe1, 0x7f, 0x6, 0x98, 0x27, 0xb9, 0x44, 0xda, 0x65, 0xfb, 0x97, 0x9, 0xb6, 0x28, 0xd5, 0x4b, 0xf4, 0x6a, 0x13, 0x8d, 0x32, 0xac, 0x51, 0xcf, 0x70, 0xee, 0xfc, 0x62, 0xdd, 0x43, 0xbe, 0x20, 0x9f, 0x1, 0x78, 0xe6, 0x59, 0xc7, 0x3a, 0xa4, 0x1b, 0x85, 0xe9, 0x77, 0xc8, 0x56, 0xab, 0x35, 0x8a, 0x14, 0x6d, 0xf3, 0x4c, 0xd2, 0x2f, 0xb1, 0xe, 0x90, 0xd6, 0x48, 0xf7, 0x69, 0x94, 0xa, 0xb5, 0x2b, 0x52, 0xcc, 0x73, 0xed, 0x10, 0x8e, 0x31, 0xaf, 0xc3, 0x5d, 0xe2, 0x7c, 0x81, 0x1f, 0xa0, 0x3e, 0x47, 0xd9, 0x66, 0xf8, 0x5, 0x9b, 0x24, 0xba}, [256]uint8{0x0, 0x9f, 0x23, 0xbc, 0x46, 0xd9, 0x65, 0xfa, 0x8c, 0x13, 0xaf, 0x30, 0xca, 0x55, 0xe9, 0x76, 0x5, 0x9a, 0x26, 0xb9, 0x43, 0xdc, 0x60, 0xff, 0x89, 0x16, 0xaa, 0x35, 0xcf, 0x50, 0xec, 0x73, 0xa, 0x95, 0x29, 0xb6, 0x4c, 0xd3, 0x6f, 0xf0, 0x86, 0x19, 0xa5, 0x3a, 0xc0, 0x5f, 0xe3, 0x7c, 0xf, 0x90, 0x2c, 0xb3, 0x49, 0xd6, 0x6a, 0xf5, 0x83, 0x1c, 0xa0, 0x3f, 0xc5, 0x5a, 0xe6, 0x79, 0x14, 0x8b, 0x37, 0xa8, 0x52, 0xcd, 0x71, 0xee, 0x98, 0x7, 0xbb, 0x24, 0xde, 0x41, 0xfd, 0x62, 0x11, 0x8e, 0x32, 0xad, 0x57, 0xc8, 0x74, 0xeb, 0x9d, 0x2, 0xbe, 0x21, 0xdb, 0x44, 0xf8, 0x67, 0x1e, 0x81, 0x3d, 0xa2, 0x58, 0xc7, 0x7b, 0xe4, 0x92, 0xd, 0xb1, 0x2e, 0xd4, 0x4b, 0xf7, 0x68, 0x1b, 0x84, 0x38, 0xa7, 0x5d, 0xc2, 0x7e, 0xe1, 0x97, 0x8, 0xb4, 0x2b, 0xd1, 0x4e, 0xf2, 0x6d, 0x28, 0xb7, 0xb, 0x94, 0x6e, 0xf1, 0x4d, 0xd2, 0xa4, 0x3b, 0x87, 0x18, 0xe2, 0x7d, 0xc1, 0x5e, 0x2d, 0xb2, 0xe, 0x91, 0x6b, 0xf4, 0x48, 0xd7, 0xa1, 0x3e, 0x82, 0x1d, 0xe7, 0x78, 0xc4, 0x5b, 0x22, 0xbd, 0x1, 0x9e, 0x64, 0xfb, 0x47, 0xd8, 0xae, 0x31, 0x8d, 0x12, 0xe8, 0x77, 0xcb, 0x54, 0x27, 0xb8, 0x4, 0x9b, 0x61, 0xfe, 0x42, 0xdd, 0xab, 0x34, 0x88, 0x17, 0xed, 0x72, 0xce, 0x51, 0x3c, 0xa3, 0x1f, 0x80, 0x7a, 0xe5, 0x59, 0xc6, 0xb0, 0x2f, 0x93, 0xc, 0xf6, 0x69, 0xd5, 0x4a, 0x39, 0xa6, 0x1a, 0x85, 0x7f, 0xe0, 0x5c, 0xc3, 0xb5, 0x2a, 0x96, 0x9, 0xf3, 0x6c, 0xd0, 0x4f, 0x36, 0xa9, 0x15, 0x8a, 0x70, 0xef, 0x53, 0xcc, 0xba, 0x25, 0x99, 0x6, 0xfc, 0x63, 0xdf, 0x40, 0x33, 0xac, 0x10, 0x8f, 0x75, 0xea, 0x56, 0xc9, 0xbf, 0x20, 0x9c, 0x3, 0xf9, 0x66, 0xda, 0x45}, [256]uint8{0x0, 0xa0, 0x5d, 0xfd, 0xba, 0x1a, 0xe7, 0x47, 0x69, 0xc9, 0x34, 0x94, 0xd3, 0x73, 0x8e, 0x2e, 0xd2, 0x72, 0x8f, 0x2f, 0x68, 0xc8, 0x35, 0x95, 0xbb, 0x1b, 0xe6, 0x46, 0x1, 0xa1, 0x5c, 0xfc, 0xb9, 0x19, 0xe4, 0x44, 0x3, 0xa3, 0x5e, 0xfe, 0xd0, 0x70, 0x8d, 0x2d, 0x6a, 0xca, 0x37, 0x97, 0x6b, 0xcb, 0x36, 0x96, 0xd1, 0x71, 0x8c, 0x2c, 0x2, 0xa2, 0x5f, 0xff, 0xb8, 0x18, 0xe5, 0x45, 0x6f, 0xcf, 0x32, 0x92, 0xd5, 0x75, 0x88, 0x28, 0x6, 0xa6, 0x5b, 0xfb, 0xbc, 0x1c, 0xe1, 0x41, 0xbd, 0x1d, 0xe0, 0x40, 0x7, 0xa7, 0x5a, 0xfa, 0xd4, 0x74, 0x89, 0x29, 0x6e, 0xce, 0x33, 0x93, 0xd6, 0x76, 0x8b, 0x2b, 0x6c, 0xcc, 0x31, 0x91, 0xbf, 0x1f, 0xe2, 0x42, 0x5, 0xa5, 0x58, 0xf8, 0x4, 0xa4, 0x59, 0xf9, 0xbe, 0x1e, 0xe3, 0x43, 0x6d, 0xcd, 0x30, 0x90, 0xd7, 0x77, 0x8a, 0x2a, 0xde, 0x7e, 0x83, 0x23, 0x64, 0xc4, 0x39, 0x99, 0xb7, 0x17, 0xea, 0x4a, 0xd, 0xad, 0x50, 0xf0, 0xc, 0xac, 0x51, 0xf1, 0xb6, 0x16, 0xeb, 0x4b, 0x65, 0xc5, 0x38, 0x98, 0xdf, 0x7f, 0x82, 0x22, 0x67, 0xc7, 0x3a, 0x9a, 0xdd, 0x7d, 0x80, 0x20, 0xe, 0xae, 0x53, 0xf3, 0xb4, 0x14, 0xe9, 0x49, 0xb5, 0x15, 0xe8, 0x48, 0xf, 0xaf, 0x52, 0xf2, 0xdc, 0x7c, 0x81, 0x21, 0x66, 0xc6, 0x3b, 0x9b, 0xb1, 0x11, 0xec, 0x4c, 0xb, 0xab, 0x56, 0xf6, 0xd8, 0x78, 0x85, 0x25, 0x62, 0xc2, 0x3f, 0x9f, 0x63, 0xc3, 0x3e, 0x9e, 0xd9, 0x79, 0x84, 0x24, 0xa, 0xaa, 0x57, 0xf7, 0xb0, 0x10, 0xed, 0x4d, 0x8, 0xa8, 0x55, 0xf5, 0xb2, 0x12, 0xef, 0x4f, 0x61, 0xc1, 0x3c, 0x9c, 0xdb, 0x7b, 0x86, 0x26, 0xda, 0x7a, 0x87, 0x27, 0x60, 0xc0, 0x3d, 0x9d, 0xb3, 0x13, 0xee, 0x4e, 0x9, 0xa9, 0x54, 0xf4}, [256]uint8{0x0, 0xa1, 0x5f, 0xfe, 0xbe, 0x1f, 0xe1, 0x40, 0x61, 0xc0, 0x3e, 0x9f, 0xdf, 0x7e, 0x80, 0x21, 0xc2, 0x63, 0x9d, 0x3c, 0x7c, 0xdd, 0x23, 0x82, 0xa3, 0x2, 0xfc, 0x5d, 0x1d, 0xbc, 0x42, 0xe3, 0x99, 0x38, 0xc6, 0x67, 0x27, 0x86, 0x78, 0xd9, 0xf8, 0x59, 0xa7, 0x6, 0x46, 0xe7, 0x19, 0xb8, 0x5b, 0xfa, 0x4, 0xa5, 0xe5, 0x44, 0xba, 0x1b, 0x3a, 0x9b, 0x65, 0xc4, 0x84, 0x25, 0xdb, 0x7a, 0x2f, 0x8e, 0x70, 0xd1, 0x91, 0x30, 0xce, 0x6f, 0x4e, 0xef, 0x11, 0xb0, 0xf0, 0x51, 0xaf, 0xe, 0xed, 0x4c, 0xb2, 0x13, 0x53, 0xf2, 0xc, 0xad, 0x8c, 0x2d, 0xd3, 0x72, 0x32, 0x93, 0x6d, 0xcc, 0xb6, 0x17, 0xe9, 0x48, 0x8, 0xa9, 0x57, 0xf6, 0xd7, 0x76, 0x88, 0x29, 0x69, 0xc8, 0x36, 0x97, 0x74, 0xd5, 0x2b, 0x8a, 0xca, 0x6b, 0x95, 0x34, 0x15, 0xb4, 0x4a, 0xeb, 0xab, 0xa, 0xf4, 0x55, 0x5e, 0xff, 0x1, 0xa0, 0xe0, 0x41, 0xbf, 0x1e, 0x3f, 0x9e, 0x60, 0xc1, 0x81, 0x20, 0xde, 0x7f, 0x9c, 0x3d, 0xc3, 0x62, 0x22, 0x83, 0x7d, 0xdc, 0xfd, 0x5c, 0xa2, 0x3, 0x43, 0xe2, 0x1c, 0xbd, 0xc7, 0x66, 0x98, 0x39, 0x79, 0xd8, 0x26, 0x87, 0xa6, 0x7, 0xf9, 0x58, 0x18, 0xb9, 0x47, 0xe6, 0x5, 0xa4, 0x5a, 0xfb, 0xbb, 0x1a, 0xe4, 0x45, 0x64, 0xc5, 0x3b, 0x9a, 0xda, 0x7b, 0x85, 0x24, 0x71, 0xd0, 0x2e, 0x8f, 0xcf, 0x6e, 0x90, 0x31, 0x10, 0xb1, 0x4f, 0xee, 0xae, 0xf, 0xf1, 0x50, 0xb3, 0x12, 0xec, 0x4d, 0xd, 0xac, 0x52, 0xf3, 0xd2, 0x73, 0x8d, 0x2c, 0x6c, 0xcd, 0x33, 0x92, 0xe8, 0x49, 0xb7, 0x16, 0x56, 0xf7, 0x9, 0xa8, 0x89, 0x28, 0xd6, 0x77, 0x37, 0x96, 0x68, 0xc9, 0x2a, 0x8b, 0x75, 0xd4, 0x94, 0x35, 0xcb, 0x6a, 0x4b, 0xea, 0x14, 0xb5, 0xf5, 0x54, 0xaa, 0xb}, [256]uint8{0x0, 0xa2, 0x59, 0xfb, 0xb2, 0x10, 0xeb, 0x49, 0x79, 0xdb, 0x20, 0x82, 0xcb, 0x69, 0x92, 0x30, 0xf2, 0x50, 0xab, 0x9, 0x40, 0xe2, 0x19, 0xbb, 0x8b, 0x29, 0xd2, 0x70, 0x39, 0x9b, 0x60, 0xc2, 0xf9, 0x5b, 0xa0, 0x2, 0x4b, 0xe9, 0x12, 0xb0, 0x80, 0x22, 0xd9, 0x7b, 0x32, 0x90, 0x6b, 0xc9, 0xb, 0xa9, 0x52, 0xf0, 0xb9, 0x1b, 0xe0, 0x42, 0x72, 0xd0, 0x2b, 0x89, 0xc0, 0x62, 0x99, 0x3b, 0xef, 0x4d, 0xb6, 0x14, 0x5d, 0xff, 0x4, 0xa6, 0x96, 0x34, 0xcf, 0x6d, 0x24, 0x86, 0x7d, 0xdf, 0x1d, 0xbf, 0x44, 0xe6, 0xaf, 0xd, 0xf6, 0x54, 0x64, 0xc6, 0x3d, 0x9f, 0xd6, 0x74, 0x8f, 0x2d, 0x16, 0xb4, 0x4f, 0xed, 0xa4, 0x6, 0xfd, 0x5f, 0x6f, 0xcd, 0x36, 0x94, 0xdd, 0x7f, 0x84, 0x26, 0xe4, 0x46, 0xbd, 0x1f, 0x56, 0xf4, 0xf, 0xad, 0x9d, 0x3f, 0xc4, 0x66, 0x2f, 0x8d, 0x76, 0xd4, 0xc3, 0x61, 0x9a, 0x38, 0x71, 0xd3, 0x28, 0x8a, 0xba, 0x18, 0xe3, 0x41, 0x8, 0xaa, 0x51, 0xf3, 0x31, 0x93, 0x68, 0xca, 0x83, 0x21, 0xda, 0x78, 0x48, 0xea, 0x11, 0xb3, 0xfa, 0x58, 0xa3, 0x1, 0x3a, 0x98, 0x63, 0xc1, 0x88, 0x2a, 0xd1, 0x73, 0x43, 0xe1, 0x1a, 0xb8, 0xf1, 0x53, 0xa8, 0xa, 0xc8, 0x6a, 0x91, 0x33, 0x7a, 0xd8, 0x23, 0x81, 0xb1, 0x13, 0xe8, 0x4a, 0x3, 0xa1, 0x5a, 0xf8, 0x2c, 0x8e, 0x75, 0xd7, 0x9e, 0x3c, 0xc7, 0x65, 0x55, 0xf7, 0xc, 0xae, 0xe7, 0x45, 0xbe, 0x1c, 0xde, 0x7c, 0x87, 0x25, 0x6c, 0xce, 0x35, 0x97, 0xa7, 0x5, 0xfe, 0x5c, 0x15, 0xb7, 0x4c, 0xee, 0xd5, 0x77, 0x8c, 0x2e, 0x67, 0xc5, 0x3e, 0x9c, 0xac, 0xe, 0xf5, 0x57, 0x1e, 0xbc, 0x47, 0xe5, 0x27, 0x85, 0x7e, 0xdc, 0x95, 0x37, 0xcc, 0x6e, 0x5e, 0xfc, 0x7, 0xa5, 0xec, 0x4e, 0xb5, 0x17}, [256]uint8{0x0, 0xa3, 0x5b, 0xf8, 0xb6, 0x15, 0xed, 0x4e, 0x71, 0xd2, 0x2a, 0x89, 0xc7, 0x64, 0x9c, 0x3f, 0xe2, 0x41, 0xb9, 0x1a, 0x54, 0xf7, 0xf, 0xac, 0x93, 0x30, 0xc8, 0x6b, 0x25, 0x86, 0x7e, 0xdd, 0xd9, 0x7a, 0x82, 0x21, 0x6f, 0xcc, 0x34, 0x97, 0xa8, 0xb, 0xf3, 0x50, 0x1e, 0xbd, 0x45, 0xe6, 0x3b, 0x98, 0x60, 0xc3, 0x8d, 0x2e, 0xd6, 0x75, 0x4a, 0xe9, 0x11, 0xb2, 0xfc, 0x5f, 0xa7, 0x4, 0xaf, 0xc, 0xf4, 0x57, 0x19, 0xba, 0x42, 0xe1, 0xde, 0x7d, 0x85, 0x26, 0x68, 0xcb, 0x33, 0x90, 0x4d, 0xee, 0x16, 0xb5, 0xfb, 0x58, 0xa0, 0x3, 0x3c, 0x9f, 0x67, 0xc4, 0x8a, 0x29, 0xd1, 0x72, 0x76, 0xd5, 0x2d, 0x8e, 0xc0, 0x63, 0x9b, 0x38, 0x7, 0xa4, 0x5c, 0xff, 0xb1, 0x12, 0xea, 0x49, 0x94, 0x37, 0xcf, 0x6c, 0x22, 0x81, 0x79, 0xda, 0xe5, 0x46, 0xbe, 0x1d, 0x53, 0xf0, 0x8, 0xab, 0x43, 0xe0, 0x18, 0xbb, 0xf5, 0x56, 0xae, 0xd, 0x32, 0x91, 0x69, 0xca, 0x84, 0x27, 0xdf, 0x7c, 0xa1, 0x2, 0xfa, 0x59, 0x17, 0xb4, 0x4c, 0xef, 0xd0, 0x73, 0x8b, 0x28, 0x66, 0xc5, 0x3d, 0x9e, 0x9a, 0x39, 0xc1, 0x62, 0x2c, 0x8f, 0x77, 0xd4, 0xeb, 0x48, 0xb0, 0x13, 0x5d, 0xfe, 0x6, 0xa5, 0x78, 0xdb, 0x23, 0x80, 0xce, 0x6d, 0x95, 0x36, 0x9, 0xaa, 0x52, 0xf1, 0xbf, 0x1c, 0xe4, 0x47, 0xec, 0x4f, 0xb7, 0x14, 0x5a, 0xf9, 0x1, 0xa2, 0x9d, 0x3e, 0xc6, 0x65, 0x2b, 0x88, 0x70, 0xd3, 0xe, 0xad, 0x55, 0xf6, 0xb8, 0x1b, 0xe3, 0x40, 0x7f, 0xdc, 0x24, 0x87, 0xc9, 0x6a, 0x92, 0x31, 0x35, 0x96, 0x6e, 0xcd, 0x83, 0x20, 0xd8, 0x7b, 0x44, 0xe7, 0x1f, 0xbc, 0xf2, 0x51, 0xa9, 0xa, 0xd7, 0x74, 0x8c, 0x2f, 0x61, 0xc2, 0x3a, 0x99, 0xa6, 0x5, 0xfd, 0x5e, 0x10, 0xb3, 0x4b, 0xe8}, [256]uint8{0x0, 0xa4, 0x55, 0xf1, 0xaa, 0xe, 0xff, 0x5b, 0x49, 0xed, 0x1c, 0xb8, 0xe3, 0x47, 0xb6, 0x12, 0x92, 0x36, 0xc7, 0x63, 0x38, 0x9c, 0x6d, 0xc9, 0xdb, 0x7f, 0x8e, 0x2a, 0x71, 0xd5, 0x24, 0x80, 0x39, 0x9d, 0x6c, 0xc8, 0x93, 0x37, 0xc6, 0x62, 0x70, 0xd4, 0x25, 0x81, 0xda, 0x7e, 0x8f, 0x2b, 0xab, 0xf, 0xfe, 0x5a, 0x1, 0xa5, 0x54, 0xf0, 0xe2, 0x46, 0xb7, 0x13, 0x48, 0xec, 0x1d, 0xb9, 0x72, 0xd6, 0x27, 0x83, 0xd8, 0x7c, 0x8d, 0x29, 0x3b, 0x9f, 0x6e, 0xca, 0x91, 0x35, 0xc4, 0x60, 0xe0, 0x44, 0xb5, 0x11, 0x4a, 0xee, 0x1f, 0xbb, 0xa9, 0xd, 0xfc, 0x58, 0x3, 0xa7, 0x56, 0xf2, 0x4b, 0xef, 0x1e, 0xba, 0xe1, 0x45, 0xb4, 0x10, 0x2, 0xa6, 0x57, 0xf3, 0xa8, 0xc, 0xfd, 0x59, 0xd9, 0x7d, 0x8c, 0x28, 0x73, 0xd7, 0x26, 0x82, 0x90, 0x34, 0xc5, 0x61, 0x3a, 0x9e, 0x6f, 0xcb, 0xe4, 0x40, 0xb1, 0x15, 0x4e, 0xea, 0x1b, 0xbf, 0xad, 0x9, 0xf8, 0x5c, 0x7, 0xa3, 0x52, 0xf6, 0x76, 0xd2, 0x23, 0x87, 0xdc, 0x78, 0x89, 0x2d, 0x3f, 0x9b, 0x6a, 0xce, 0x95, 0x31, 0xc0, 0x64, 0xdd, 0x79, 0x88, 0x2c, 0x77, 0xd3, 0x22, 0x86, 0x94, 0x30, 0xc1, 0x65, 0x3e, 0x9a, 0x6b, 0xcf, 0x4f, 0xeb, 0x1a, 0xbe, 0xe5, 0x41, 0xb0, 0x14, 0x6, 0xa2, 0x53, 0xf7, 0xac, 0x8, 0xf9, 0x5d, 0x96, 0x32, 0xc3, 0x67, 0x3c, 0x98, 0x69, 0xcd, 0xdf, 0x7b, 0x8a, 0x2e, 0x75, 0xd1, 0x20, 0x84, 0x4, 0xa0, 0x51, 0xf5, 0xae, 0xa, 0xfb, 0x5f, 0x4d, 0xe9, 0x18, 0xbc, 0xe7, 0x43, 0xb2, 0x16, 0xaf, 0xb, 0xfa, 0x5e, 0x5, 0xa1, 0x50, 0xf4, 0xe6, 0x42, 0xb3, 0x17, 0x4c, 0xe8, 0x19, 0xbd, 0x3d, 0x99, 0x68, 0xcc, 0x97, 0x33, 0xc2, 0x66, 0x74, 0xd0, 0x21, 0x85, 0xde, 0x7a, 0x8b, 0x2f}, [256]uint8{0x0, 0xa5, 0x57, 0xf2, 0xae, 0xb, 0xf9, 0x5c, 0x41, 0xe4, 0x16, 0xb3, 0xef, 0x4a, 0xb8, 0x1d, 0x82, 0x27, 0xd5, 0x70, 0x2c, 0x89, 0x7b, 0xde, 0xc3, 0x66, 0x94, 0x31, 0x6d, 0xc8, 0x3a, 0x9f, 0x19, 0xbc, 0x4e, 0xeb, 0xb7, 0x12, 0xe0, 0x45, 0x58, 0xfd, 0xf, 0xaa, 0xf6, 0x53, 0xa1, 0x4, 0x9b, 0x3e, 0xcc, 0x69, 0x35, 0x90, 0x62, 0xc7, 0xda, 0x7f, 0x8d, 0x28, 0x74, 0xd1, 0x23, 0x86, 0x32, 0x97, 0x65, 0xc0, 0x9c, 0x39, 0xcb, 0x6e, 0x73, 0xd6, 0x24, 0x81, 0xdd, 0x78, 0x8a, 0x2f, 0xb0, 0x15, 0xe7, 0x42, 0x1e, 0xbb, 0x49, 0xec, 0xf1, 0x54, 0xa6, 0x3, 0x5f, 0xfa, 0x8, 0xad, 0x2b, 0x8e, 0x7c, 0xd9, 0x85, 0x20, 0xd2, 0x77, 0x6a, 0xcf, 0x3d, 0x98, 0xc4, 0x61, 0x93, 0x36, 0xa9, 0xc, 0xfe, 0x5b, 0x7, 0xa2, 0x50, 0xf5, 0xe8, 0x4d, 0xbf, 0x1a, 0x46, 0xe3, 0x11, 0xb4, 0x64, 0xc1, 0x33, 0x96, 0xca, 0x6f, 0x9d, 0x38, 0x25, 0x80, 0x72, 0xd7, 0x8b, 0x2e, 0xdc, 0x79, 0xe6, 0x43, 0xb1, 0x14, 0x48, 0xed, 0x1f, 0xba, 0xa7, 0x2, 0xf0, 0x55, 0x9, 0xac, 0x5e, 0xfb, 0x7d, 0xd8, 0x2a, 0x8f, 0xd3, 0x76, 0x84, 0x21, 0x3c, 0x99, 0x6b, 0xce, 0x92, 0x37, 0xc5, 0x60, 0xff, 0x5a, 0xa8, 0xd, 0x51, 0xf4, 0x6, 0xa3, 0xbe, 0x1b, 0xe9, 0x4c, 0x10, 0xb5, 0x47, 0xe2, 0x56, 0xf3, 0x1, 0xa4, 0xf8, 0x5d, 0xaf, 0xa, 0x17, 0xb2, 0x40, 0xe5, 0xb9, 0x1c, 0xee, 0x4b, 0xd4, 0x71, 0x83, 0x26, 0x7a, 0xdf, 0x2d, 0x88, 0x95, 0x30, 0xc2, 0x67, 0x3b, 0x9e, 0x6c, 0xc9, 0x4f, 0xea, 0x18, 0xbd, 0xe1, 0x44, 0xb6, 0x13, 0xe, 0xab, 0x59, 0xfc, 0xa0, 0x5, 0xf7, 0x52, 0xcd, 0x68, 0x9a, 0x3f, 0x63, 0xc6, 0x34, 0x91, 0x8c, 0x29, 0xdb, 0x7e, 0x22, 0x87, 0x75, 0xd0}, [256]uint8{0x0, 0xa6, 0x51, 0xf7, 0xa2, 0x4, 0xf3, 0x55, 0x59, 0xff, 0x8, 0xae, 0xfb, 0x5d, 0xaa, 0xc, 0xb2, 0x14, 0xe3, 0x45, 0x10, 0xb6, 0x41, 0xe7, 0xeb, 0x4d, 0xba, 0x1c, 0x49, 0xef, 0x18, 0xbe, 0x79, 0xdf, 0x28, 0x8e, 0xdb, 0x7d, 0x8a, 0x2c, 0x20, 0x86, 0x71, 0xd7, 0x82, 0x24, 0xd3, 0x75, 0xcb, 0x6d, 0x9a, 0x3c, 0x69, 0xcf, 0x38, 0x9e, 0x92, 0x34, 0xc3, 0x65, 0x30, 0x96, 0x61, 0xc7, 0xf2, 0x54, 0xa3, 0x5, 0x50, 0xf6, 0x1, 0xa7, 0xab, 0xd, 0xfa, 0x5c, 0x9, 0xaf, 0x58, 0xfe, 0x40, 0xe6, 0x11, 0xb7, 0xe2, 0x44, 0xb3, 0x15, 0x19, 0xbf, 0x48, 0xee, 0xbb, 0x1d, 0xea, 0x4c, 0x8b, 0x2d, 0xda, 0x7c, 0x29, 0x8f, 0x78, 0xde, 0xd2, 0x74, 0x83, 0x25, 0x70, 0xd6, 0x21, 0x87, 0x39, 0x9f, 0x68, 0xce, 0x9b, 0x3d, 0xca, 0x6c, 0x60, 0xc6, 0x31, 0x97, 0xc2, 0x64, 0x93, 0x35, 0xf9, 0x5f, 0xa8, 0xe, 0x5b, 0xfd, 0xa, 0xac, 0xa0, 0x6, 0xf1, 0x57, 0x2, 0xa4, 0x53, 0xf5, 0x4b, 0xed, 0x1a, 0xbc, 0xe9, 0x4f, 0xb8, 0x1e, 0x12, 0xb4, 0x43, 0xe5, 0xb0, 0x16, 0xe1, 0x47, 0x80, 0x26, 0xd1, 0x77, 0x22, 0x84, 0x73, 0xd5, 0xd9, 0x7f, 0x88, 0x2e, 0x7b, 0xdd, 0x2a, 0x8c, 0x32, 0x94, 0x63, 0xc5, 0x90, 0x36, 0xc1, 0x67, 0x6b, 0xcd, 0x3a, 0x9c, 0xc9, 0x6f, 0x98, 0x3e, 0xb, 0xad, 0x5a, 0xfc, 0xa9, 0xf, 0xf8, 0x5e, 0x52, 0xf4, 0x3, 0xa5, 0xf0, 0x56, 0xa1, 0x7, 0xb9, 0x1f, 0xe8, 0x4e, 0x1b, 0xbd, 0x4a, 0xec, 0xe0, 0x46, 0xb1, 0x17, 0x42, 0xe4, 0x13, 0xb5, 0x72, 0xd4, 0x23, 0x85, 0xd0, 0x76, 0x81, 0x27, 0x2b, 0x8d, 0x7a, 0xdc, 0x89, 0x2f, 0xd8, 0x7e, 0xc0, 0x66, 0x91, 0x37, 0x62, 0xc4, 0x33, 0x95, 0x99, 0x3f, 0xc8, 0x6e, 0x3b, 0x9d, 0x6a, 0xcc}, [256]uint8{0x0, 0xa7, 0x53, 0xf4, 0xa6, 0x1, 0xf5, 0x52, 0x51, 0xf6, 0x2, 0xa5, 0xf7, 0x50, 0xa4, 0x3, 0xa2, 0x5, 0xf1, 0x56, 0x4, 0xa3, 0x57, 0xf0, 0xf3, 0x54, 0xa0, 0x7, 0x55, 0xf2, 0x6, 0xa1, 0x59, 0xfe, 0xa, 0xad, 0xff, 0x58, 0xac, 0xb, 0x8, 0xaf, 0x5b, 0xfc, 0xae, 0x9, 0xfd, 0x5a, 0xfb, 0x5c, 0xa8, 0xf, 0x5d, 0xfa, 0xe, 0xa9, 0xaa, 0xd, 0xf9, 0x5e, 0xc, 0xab, 0x5f, 0xf8, 0xb2, 0x15, 0xe1, 0x46, 0x14, 0xb3, 0x47, 0xe0, 0xe3, 0x44, 0xb0, 0x17, 0x45, 0xe2, 0x16, 0xb1, 0x10, 0xb7, 0x43, 0xe4, 0xb6, 0x11, 0xe5, 0x42, 0x41, 0xe6, 0x12, 0xb5, 0xe7, 0x40, 0xb4, 0x13, 0xeb, 0x4c, 0xb8, 0x1f, 0x4d, 0xea, 0x1e, 0xb9, 0xba, 0x1d, 0xe9, 0x4e, 0x1c, 0xbb, 0x4f, 0xe8, 0x49, 0xee, 0x1a, 0xbd, 0xef, 0x48, 0xbc, 0x1b, 0x18, 0xbf, 0x4b, 0xec, 0xbe, 0x19, 0xed, 0x4a, 0x79, 0xde, 0x2a, 0x8d, 0xdf, 0x78, 0x8c, 0x2b, 0x28, 0x8f, 0x7b, 0xdc, 0x8e, 0x29, 0xdd, 0x7a, 0xdb, 0x7c, 0x88, 0x2f, 0x7d, 0xda, 0x2e, 0x89, 0x8a, 0x2d, 0xd9, 0x7e, 0x2c, 0x8b, 0x7f, 0xd8, 0x20, 0x87, 0x73, 0xd4, 0x86, 0x21, 0xd5, 0x72, 0x71, 0xd6, 0x22, 0x85, 0xd7, 0x70, 0x84, 0x23, 0x82, 0x25, 0xd1, 0x76, 0x24, 0x83, 0x77, 0xd0, 0xd3, 0x74, 0x80, 0x27, 0x75, 0xd2, 0x26, 0x81, 0xcb, 0x6c, 0x98, 0x3f, 0x6d, 0xca, 0x3e, 0x99, 0x9a, 0x3d, 0xc9, 0x6e, 0x3c, 0x9b, 0x6f, 0xc8, 0x69, 0xce, 0x3a, 0x9d, 0xcf, 0x68, 0x9c, 0x3b, 0x38, 0x9f, 0x6b, 0xcc, 0x9e, 0x39, 0xcd, 0x6a, 0x92, 0x35, 0xc1, 0x66, 0x34, 0x93, 0x67, 0xc0, 0xc3, 0x64, 0x90, 0x37, 0x65, 0xc2, 0x36, 0x91, 0x30, 0x97, 0x63, 0xc4, 0x96, 0x31, 0xc5, 0x62, 0x61, 0xc6, 0x32, 0x95, 0xc7, 0x60, 0x94, 0x33}, [256]uint8{0x0, 0xa8, 0x4d, 0xe5, 0x9a, 0x32, 0xd7, 0x7f, 0x29, 0x81, 0x64, 0xcc, 0xb3, 0x1b, 0xfe, 0x56, 0x52, 0xfa, 0x1f, 0xb7, 0xc8, 0x60, 0x85, 0x2d, 0x7b, 0xd3, 0x36, 0x9e, 0xe1, 0x49, 0xac, 0x4, 0xa4, 0xc, 0xe9, 0x41, 0x3e, 0x96, 0x73, 0xdb, 0x8d, 0x25, 0xc0, 0x68, 0x17, 0xbf, 0x5a, 0xf2, 0xf6, 0x5e, 0xbb, 0x13, 0x6c, 0xc4, 0x21, 0x89, 0xdf, 0x77, 0x92, 0x3a, 0x45, 0xed, 0x8, 0xa0, 0x55, 0xfd, 0x18, 0xb0, 0xcf, 0x67, 0x82, 0x2a, 0x7c, 0xd4, 0x31, 0x99, 0xe6, 0x4e, 0xab, 0x3, 0x7, 0xaf, 0x4a, 0xe2, 0x9d, 0x35, 0xd0, 0x78, 0x2e, 0x86, 0x63, 0xcb, 0xb4, 0x1c, 0xf9, 0x51, 0xf1, 0x59, 0xbc, 0x14, 0x6b, 0xc3, 0x26, 0x8e, 0xd8, 0x70, 0x95, 0x3d, 0x42, 0xea, 0xf, 0xa7, 0xa3, 0xb, 0xee, 0x46, 0x39, 0x91, 0x74, 0xdc, 0x8a, 0x22, 0xc7, 0x6f, 0x10, 0xb8, 0x5d, 0xf5, 0xaa, 0x2, 0xe7, 0x4f, 0x30, 0x98, 0x7d, 0xd5, 0x83, 0x2b, 0xce, 0x66, 0x19, 0xb1, 0x54, 0xfc, 0xf8, 0x50, 0xb5, 0x1d, 0x62, 0xca, 0x2f, 0x87, 0xd1, 0x79, 0x9c, 0x34, 0x4b, 0xe3, 0x6, 0xae, 0xe, 0xa6, 0x43, 0xeb, 0x94, 0x3c, 0xd9, 0x71, 0x27, 0x8f, 0x6a, 0xc2, 0xbd, 0x15, 0xf0, 0x58, 0x5c, 0xf4, 0x11, 0xb9, 0xc6, 0x6e, 0x8b, 0x23, 0x75, 0xdd, 0x38, 0x90, 0xef, 0x47, 0xa2, 0xa, 0xff, 0x57, 0xb2, 0x1a, 0x65, 0xcd, 0x28, 0x80, 0xd6, 0x7e, 0x9b, 0x33, 0x4c, 0xe4, 0x1, 0xa9, 0xad, 0x5, 0xe0, 0x48, 0x37, 0x9f, 0x7a, 0xd2, 0x84, 0x2c, 0xc9, 0x61, 0x1e, 0xb6, 0x53, 0xfb, 0x5b, 0xf3, 0x16, 0xbe, 0xc1, 0x69, 0x8c, 0x24, 0x72, 0xda, 0x3f, 0x97, 0xe8, 0x40, 0xa5, 0xd, 0x9, 0xa1, 0x44, 0xec, 0x93, 0x3b, 0xde, 0x76, 0x20, 0x88, 0x6d, 0xc5, 0xba, 0x12, 0xf7, 0x5f}, [256]uint8{0x0, 0xa9, 0x4f, 0xe6, 0x9e, 0x37, 0xd1, 0x78, 0x21, 0x88, 0x6e, 0xc7, 0xbf, 0x16, 0xf0, 0x59, 0x42, 0xeb, 0xd, 0xa4, 0xdc, 0x75, 0x93, 0x3a, 0x63, 0xca, 0x2c, 0x85, 0xfd, 0x54, 0xb2, 0x1b, 0x84, 0x2d, 0xcb, 0x62, 0x1a, 0xb3, 0x55, 0xfc, 0xa5, 0xc, 0xea, 0x43, 0x3b, 0x92, 0x74, 0xdd, 0xc6, 0x6f, 0x89, 0x20, 0x58, 0xf1, 0x17, 0xbe, 0xe7, 0x4e, 0xa8, 0x1, 0x79, 0xd0, 0x36, 0x9f, 0x15, 0xbc, 0x5a, 0xf3, 0x8b, 0x22, 0xc4, 0x6d, 0x34, 0x9d, 0x7b, 0xd2, 0xaa, 0x3, 0xe5, 0x4c, 0x57, 0xfe, 0x18, 0xb1, 0xc9, 0x60, 0x86, 0x2f, 0x76, 0xdf, 0x39, 0x90, 0xe8, 0x41, 0xa7, 0xe, 0x91, 0x38, 0xde, 0x77, 0xf, 0xa6, 0x40, 0xe9, 0xb0, 0x19, 0xff, 0x56, 0x2e, 0x87, 0x61, 0xc8, 0xd3, 0x7a, 0x9c, 0x35, 0x4d, 0xe4, 0x2, 0xab, 0xf2, 0x5b, 0xbd, 0x14, 0x6c, 0xc5, 0x23, 0x8a, 0x2a, 0x83, 0x65, 0xcc, 0xb4, 0x1d, 0xfb, 0x52, 0xb, 0xa2, 0x44, 0xed, 0x95, 0x3c, 0xda, 0x73, 0x68, 0xc1, 0x27, 0x8e, 0xf6, 0x5f, 0xb9, 0x10, 0x49, 0xe0, 0x6, 0xaf, 0xd7, 0x7e, 0x98, 0x31, 0xae, 0x7, 0xe1, 0x48, 0x30, 0x99, 0x7f, 0xd6, 0x8f, 0x26, 0xc0, 0x69, 0x11, 0xb8, 0x5e, 0xf7, 0xec, 0x45, 0xa3, 0xa, 0x72, 0xdb, 0x3d, 0x94, 0xcd, 0x64, 0x82, 0x2b, 0x53, 0xfa, 0x1c, 0xb5, 0x3f, 0x96, 0x70, 0xd9, 0xa1, 0x8, 0xee, 0x47, 0x1e, 0xb7, 0x51, 0xf8, 0x80, 0x29, 0xcf, 0x66, 0x7d, 0xd4, 0x32, 0x9b, 0xe3, 0x4a, 0xac, 0x5, 0x5c, 0xf5, 0x13, 0xba, 0xc2, 0x6b, 0x8d, 0x24, 0xbb, 0x12, 0xf4, 0x5d, 0x25, 0x8c, 0x6a, 0xc3, 0x9a, 0x33, 0xd5, 0x7c, 0x4, 0xad, 0x4b, 0xe2, 0xf9, 0x50, 0xb6, 0x1f, 0x67, 0xce, 0x28, 0x81, 0xd8, 0x71, 0x97, 0x3e, 0x46, 0xef, 0x9, 0xa0}, [256]uint8{0x0, 0xaa, 0x49, 0xe3, 0x92, 0x38, 0xdb, 0x71, 0x39, 0x93, 0x70, 0xda, 0xab, 0x1, 0xe2, 0x48, 0x72, 0xd8, 0x3b, 0x91, 0xe0, 0x4a, 0xa9, 0x3, 0x4b, 0xe1, 0x2, 0xa8, 0xd9, 0x73, 0x90, 0x3a, 0xe4, 0x4e, 0xad, 0x7, 0x76, 0xdc, 0x3f, 0x95, 0xdd, 0x77, 0x94, 0x3e, 0x4f, 0xe5, 0x6, 0xac, 0x96, 0x3c, 0xdf, 0x75, 0x4, 0xae, 0x4d, 0xe7, 0xaf, 0x5, 0xe6, 0x4c, 0x3d, 0x97, 0x74, 0xde, 0xd5, 0x7f, 0x9c, 0x36, 0x47, 0xed, 0xe, 0xa4, 0xec, 0x46, 0xa5, 0xf, 0x7e, 0xd4, 0x37, 0x9d, 0xa7, 0xd, 0xee, 0x44, 0x35, 0x9f, 0x7c, 0xd6, 0x9e, 0x34, 0xd7, 0x7d, 0xc, 0xa6, 0x45, 0xef, 0x31, 0x9b, 0x78, 0xd2, 0xa3, 0x9, 0xea, 0x40, 0x8, 0xa2, 0x41, 0xeb, 0x9a, 0x30, 0xd3, 0x79, 0x43, 0xe9, 0xa, 0xa0, 0xd1, 0x7b, 0x98, 0x32, 0x7a, 0xd0, 0x33, 0x99, 0xe8, 0x42, 0xa1, 0xb, 0xb7, 0x1d, 0xfe, 0x54, 0x25, 0x8f, 0x6c, 0xc6, 0x8e, 0x24, 0xc7, 0x6d, 0x1c, 0xb6, 0x55, 0xff, 0xc5, 0x6f, 0x8c, 0x26, 0x57, 0xfd, 0x1e, 0xb4, 0xfc, 0x56, 0xb5, 0x1f, 0x6e, 0xc4, 0x27, 0x8d, 0x53, 0xf9, 0x1a, 0xb0, 0xc1, 0x6b, 0x88, 0x22, 0x6a, 0xc0, 0x23, 0x89, 0xf8, 0x52, 0xb1, 0x1b, 0x21, 0x8b, 0x68, 0xc2, 0xb3, 0x19, 0xfa, 0x50, 0x18, 0xb2, 0x51, 0xfb, 0x8a, 0x20, 0xc3, 0x69, 0x62, 0xc8, 0x2b, 0x81, 0xf0, 0x5a, 0xb9, 0x13, 0x5b, 0xf1, 0x12, 0xb8, 0xc9, 0x63, 0x80, 0x2a, 0x10, 0xba, 0x59, 0xf3, 0x82, 0x28, 0xcb, 0x61, 0x29, 0x83, 0x60, 0xca, 0xbb, 0x11, 0xf2, 0x58, 0x86, 0x2c, 0xcf, 0x65, 0x14, 0xbe, 0x5d, 0xf7, 0xbf, 0x15, 0xf6, 0x5c, 0x2d, 0x87, 0x64, 0xce, 0xf4, 0x5e, 0xbd, 0x17, 0x66, 0xcc, 0x2f, 0x85, 0xcd, 0x67, 0x84, 0x2e, 0x5f, 0xf5, 0x16, 0xbc}, [256]uint8{0x0, 0xab, 0x4b, 0xe0, 0x96, 0x3d, 0xdd, 0x76, 0x31, 0x9a, 0x7a, 0xd1, 0xa7, 0xc, 0xec, 0x47, 0x62, 0xc9, 0x29, 0x82, 0xf4, 0x5f, 0xbf, 0x14, 0x53, 0xf8, 0x18, 0xb3, 0xc5, 0x6e, 0x8e, 0x25, 0xc4, 0x6f, 0x8f, 0x24, 0x52, 0xf9, 0x19, 0xb2, 0xf5, 0x5e, 0xbe, 0x15, 0x63, 0xc8, 0x28, 0x83, 0xa6, 0xd, 0xed, 0x46, 0x30, 0x9b, 0x7b, 0xd0, 0x97, 0x3c, 0xdc, 0x77, 0x1, 0xaa, 0x4a, 0xe1, 0x95, 0x3e, 0xde, 0x75, 0x3, 0xa8, 0x48, 0xe3, 0xa4, 0xf, 0xef, 0x44, 0x32, 0x99, 0x79, 0xd2, 0xf7, 0x5c, 0xbc, 0x17, 0x61, 0xca, 0x2a, 0x81, 0xc6, 0x6d, 0x8d, 0x26, 0x50, 0xfb, 0x1b, 0xb0, 0x51, 0xfa, 0x1a, 0xb1, 0xc7, 0x6c, 0x8c, 0x27, 0x60, 0xcb, 0x2b, 0x80, 0xf6, 0x5d, 0xbd, 0x16, 0x33, 0x98, 0x78, 0xd3, 0xa5, 0xe, 0xee, 0x45, 0x2, 0xa9, 0x49, 0xe2, 0x94, 0x3f, 0xdf, 0x74, 0x37, 0x9c, 0x7c, 0xd7, 0xa1, 0xa, 0xea, 0x41, 0x6, 0xad, 0x4d, 0xe6, 0x90, 0x3b, 0xdb, 0x70, 0x55, 0xfe, 0x1e, 0xb5, 0xc3, 0x68, 0x88, 0x23, 0x64, 0xcf, 0x2f, 0x84, 0xf2, 0x59, 0xb9, 0x12, 0xf3, 0x58, 0xb8, 0x13, 0x65, 0xce, 0x2e, 0x85, 0xc2, 0x69, 0x89, 0x22, 0x54, 0xff, 0x1f, 0xb4, 0x91, 0x3a, 0xda, 0x71, 0x7, 0xac, 0x4c, 0xe7, 0xa0, 0xb, 0xeb, 0x40, 0x36, 0x9d, 0x7d, 0xd6, 0xa2, 0x9, 0xe9, 0x42, 0x34, 0x9f, 0x7f, 0xd4, 0x93, 0x38, 0xd8, 0x73, 0x5, 0xae, 0x4e, 0xe5, 0xc0, 0x6b, 0x8b, 0x20, 0x56, 0xfd, 0x1d, 0xb6, 0xf1, 0x5a, 0xba, 0x11, 0x67, 0xcc, 0x2c, 0x87, 0x66, 0xcd, 0x2d, 0x86, 0xf0, 0x5b, 0xbb, 0x10, 0x57, 0xfc, 0x1c, 0xb7, 0xc1, 0x6a, 0x8a, 0x21, 0x4, 0xaf, 0x4f, 0xe4, 0x92, 0x39, 0xd9, 0x72, 0x35, 0x9e, 0x7e, 0xd5, 0xa3, 0x8, 0xe8, 0x43}, [256]uint8{0x0, 0xac, 0x45, 0xe9, 0x8a, 0x26, 0xcf, 0x63, 0x9, 0xa5, 0x4c, 0xe0, 0x83, 0x2f, 0xc6, 0x6a, 0x12, 0xbe, 0x57, 0xfb, 0x98, 0x34, 0xdd, 0x71, 0x1b, 0xb7, 0x5e, 0xf2, 0x91, 0x3d, 0xd4, 0x78, 0x24, 0x88, 0x61, 0xcd, 0xae, 0x2, 0xeb, 0x47, 0x2d, 0x81, 0x68, 0xc4, 0xa7, 0xb, 0xe2, 0x4e, 0x36, 0x9a, 0x73, 0xdf, 0xbc, 0x10, 0xf9, 0x55, 0x3f, 0x93, 0x7a, 0xd6, 0xb5, 0x19, 0xf0, 0x5c, 0x48, 0xe4, 0xd, 0xa1, 0xc2, 0x6e, 0x87, 0x2b, 0x41, 0xed, 0x4, 0xa8, 0xcb, 0x67, 0x8e, 0x22, 0x5a, 0xf6, 0x1f, 0xb3, 0xd0, 0x7c, 0x95, 0x39, 0x53, 0xff, 0x16, 0xba, 0xd9, 0x75, 0x9c, 0x30, 0x6c, 0xc0, 0x29, 0x85, 0xe6, 0x4a, 0xa3, 0xf, 0x65, 0xc9, 0x20, 0x8c, 0xef, 0x43, 0xaa, 0x6, 0x7e, 0xd2, 0x3b, 0x97, 0xf4, 0x58, 0xb1, 0x1d, 0x77, 0xdb, 0x32, 0x9e, 0xfd, 0x51, 0xb8, 0x14, 0x90, 0x3c, 0xd5, 0x79, 0x1a, 0xb6, 0x5f, 0xf3, 0x99, 0x35, 0xdc, 0x70, 0x13, 0xbf, 0x56, 0xfa, 0x82, 0x2e, 0xc7, 0x6b, 0x8, 0xa4, 0x4d, 0xe1, 0x8b, 0x27, 0xce, 0x62, 0x1, 0xad, 0x44, 0xe8, 0xb4, 0x18, 0xf1, 0x5d, 0x3e, 0x92, 0x7b, 0xd7, 0xbd, 0x11, 0xf8, 0x54, 0x37, 0x9b, 0x72, 0xde, 0xa6, 0xa, 0xe3, 0x4f, 0x2c, 0x80, 0x69, 0xc5, 0xaf, 0x3, 0xea, 0x46, 0x25, 0x89, 0x60, 0xcc, 0xd8, 0x74, 0x9d, 0x31, 0x52, 0xfe, 0x17, 0xbb, 0xd1, 0x7d, 0x94, 0x38, 0x5b, 0xf7, 0x1e, 0xb2, 0xca, 0x66, 0x8f, 0x23, 0x40, 0xec, 0x5, 0xa9, 0xc3, 0x6f, 0x86, 0x2a, 0x49, 0xe5, 0xc, 0xa0, 0xfc, 0x50, 0xb9, 0x15, 0x76, 0xda, 0x33, 0x9f, 0xf5, 0x59, 0xb0, 0x1c, 0x7f, 0xd3, 0x3a, 0x96, 0xee, 0x42, 0xab, 0x7, 0x64, 0xc8, 0x21, 0x8d, 0xe7, 0x4b, 0xa2, 0xe, 0x6d, 0xc1, 0x28, 0x84}, [256]uint8{0x0, 0xad, 0x47, 0xea, 0x8e, 0x23, 0xc9, 0x64, 0x1, 0xac, 0x46, 0xeb, 0x8f, 0x22, 0xc8, 0x65, 0x2, 0xaf, 0x45, 0xe8, 0x8c, 0x21, 0xcb, 0x66, 0x3, 0xae, 0x44, 0xe9, 0x8d, 0x20, 0xca, 0x67, 0x4, 0xa9, 0x43, 0xee, 0x8a, 0x27, 0xcd, 0x60, 0x5, 0xa8, 0x42, 0xef, 0x8b, 0x26, 0xcc, 0x61, 0x6, 0xab, 0x41, 0xec, 0x88, 0x25, 0xcf, 0x62, 0x7, 0xaa, 0x40, 0xed, 0x89, 0x24, 0xce, 0x63, 0x8, 0xa5, 0x4f, 0xe2, 0x86, 0x2b, 0xc1, 0x6c, 0x9, 0xa4, 0x4e, 0xe3, 0x87, 0x2a, 0xc0, 0x6d, 0xa, 0xa7, 0x4d, 0xe0, 0x84, 0x29, 0xc3, 0x6e, 0xb, 0xa6, 0x4c, 0xe1, 0x85, 0x28, 0xc2, 0x6f, 0xc, 0xa1, 0x4b, 0xe6, 0x82, 0x2f, 0xc5, 0x68, 0xd, 0xa0, 0x4a, 0xe7, 0x83, 0x2e, 0xc4, 0x69, 0xe, 0xa3, 0x49, 0xe4, 0x80, 0x2d, 0xc7, 0x6a, 0xf, 0xa2, 0x48, 0xe5, 0x81, 0x2c, 0xc6, 0x6b, 0x10, 0xbd, 0x57, 0xfa, 0x9e, 0x33, 0xd9, 0x74, 0x11, 0xbc, 0x56, 0xfb, 0x9f, 0x32, 0xd8, 0x75, 0x12, 0xbf, 0x55, 0xf8, 0x9c, 0x31, 0xdb, 0x76, 0x13, 0xbe, 0x54, 0xf9, 0x9d, 0x30, 0xda, 0x77, 0x14, 0xb9, 0x53, 0xfe, 0x9a, 0x37, 0xdd, 0x70, 0x15, 0xb8, 0x52, 0xff, 0x9b, 0x36, 0xdc, 0x71, 0x16, 0xbb, 0x51, 0xfc, 0x98, 0x35, 0xdf, 0x72, 0x17, 0xba, 0x50, 0xfd, 0x99, 0x34, 0xde, 0x73, 0x18, 0xb5, 0x5f, 0xf2, 0x96, 0x3b, 0xd1, 0x7c, 0x19, 0xb4, 0x5e, 0xf3, 0x97, 0x3a, 0xd0, 0x7d, 0x1a, 0xb7, 0x5d, 0xf0, 0x94, 0x39, 0xd3, 0x7e, 0x1b, 0xb6, 0x5c, 0xf1, 0x95, 0x38, 0xd2, 0x7f, 0x1c, 0xb1, 0x5b, 0xf6, 0x92, 0x3f, 0xd5, 0x78, 0x1d, 0xb0, 0x5a, 0xf7, 0x93, 0x3e, 0xd4, 0x79, 0x1e, 0xb3, 0x59, 0xf4, 0x90, 0x3d, 0xd7, 0x7a, 0x1f, 0xb2, 0x58, 0xf5, 0x91, 0x3c, 0xd6, 0x7b}, [256]uint8{0x0, 0xae, 0x41, 0xef, 0x82, 0x2c, 0xc3, 0x6d, 0x19, 0xb7, 0x58, 0xf6, 0x9b, 0x35, 0xda, 0x74, 0x32, 0x9c, 0x73, 0xdd, 0xb0, 0x1e, 0xf1, 0x5f, 0x2b, 0x85, 0x6a, 0xc4, 0xa9, 0x7, 0xe8, 0x46, 0x64, 0xca, 0x25, 0x8b, 0xe6, 0x48, 0xa7, 0x9, 0x7d, 0xd3, 0x3c, 0x92, 0xff, 0x51, 0xbe, 0x10, 0x56, 0xf8, 0x17, 0xb9, 0xd4, 0x7a, 0x95, 0x3b, 0x4f, 0xe1, 0xe, 0xa0, 0xcd, 0x63, 0x8c, 0x22, 0xc8, 0x66, 0x89, 0x27, 0x4a, 0xe4, 0xb, 0xa5, 0xd1, 0x7f, 0x90, 0x3e, 0x53, 0xfd, 0x12, 0xbc, 0xfa, 0x54, 0xbb, 0x15, 0x78, 0xd6, 0x39, 0x97, 0xe3, 0x4d, 0xa2, 0xc, 0x61, 0xcf, 0x20, 0x8e, 0xac, 0x2, 0xed, 0x43, 0x2e, 0x80, 0x6f, 0xc1, 0xb5, 0x1b, 0xf4, 0x5a, 0x37, 0x99, 0x76, 0xd8, 0x9e, 0x30, 0xdf, 0x71, 0x1c, 0xb2, 0x5d, 0xf3, 0x87, 0x29, 0xc6, 0x68, 0x5, 0xab, 0x44, 0xea, 0x8d, 0x23, 0xcc, 0x62, 0xf, 0xa1, 0x4e, 0xe0, 0x94, 0x3a, 0xd5, 0x7b, 0x16, 0xb8, 0x57, 0xf9, 0xbf, 0x11, 0xfe, 0x50, 0x3d, 0x93, 0x7c, 0xd2, 0xa6, 0x8, 0xe7, 0x49, 0x24, 0x8a, 0x65, 0xcb, 0xe9, 0x47, 0xa8, 0x6, 0x6b, 0xc5, 0x2a, 0x84, 0xf0, 0x5e, 0xb1, 0x1f, 0x72, 0xdc, 0x33, 0x9d, 0xdb, 0x75, 0x9a, 0x34, 0x59, 0xf7, 0x18, 0xb6, 0xc2, 0x6c, 0x83, 0x2d, 0x40, 0xee, 0x1, 0xaf, 0x45, 0xeb, 0x4, 0xaa, 0xc7, 0x69, 0x86, 0x28, 0x5c, 0xf2, 0x1d, 0xb3, 0xde, 0x70, 0x9f, 0x31, 0x77, 0xd9, 0x36, 0x98, 0xf5, 0x5b, 0xb4, 0x1a, 0x6e, 0xc0, 0x2f, 0x81, 0xec, 0x42, 0xad, 0x3, 0x21, 0x8f, 0x60, 0xce, 0xa3, 0xd, 0xe2, 0x4c, 0x38, 0x96, 0x79, 0xd7, 0xba, 0x14, 0xfb, 0x55, 0x13, 0xbd, 0x52, 0xfc, 0x91, 0x3f, 0xd0, 0x7e, 0xa, 0xa4, 0x4b, 0xe5, 0x88, 0x26, 0xc9, 0x67}, [256]uint8{0x0, 0xaf, 0x43, 0xec, 0x86, 0x29, 0xc5, 0x6a, 0x11, 0xbe, 0x52, 0xfd, 0x97, 0x38, 0xd4, 0x7b, 0x22, 0x8d, 0x61, 0xce, 0xa4, 0xb, 0xe7, 0x48, 0x33, 0x9c, 0x70, 0xdf, 0xb5, 0x1a, 0xf6, 0x59, 0x44, 0xeb, 0x7, 0xa8, 0xc2, 0x6d, 0x81, 0x2e, 0x55, 0xfa, 0x16, 0xb9, 0xd3, 0x7c, 0x90, 0x3f, 0x66, 0xc9, 0x25, 0x8a, 0xe0, 0x4f, 0xa3, 0xc, 0x77, 0xd8, 0x34, 0x9b, 0xf1, 0x5e, 0xb2, 0x1d, 0x88, 0x27, 0xcb, 0x64, 0xe, 0xa1, 0x4d, 0xe2, 0x99, 0x36, 0xda, 0x75, 0x1f, 0xb0, 0x5c, 0xf3, 0xaa, 0x5, 0xe9, 0x46, 0x2c, 0x83, 0x6f, 0xc0, 0xbb, 0x14, 0xf8, 0x57, 0x3d, 0x92, 0x7e, 0xd1, 0xcc, 0x63, 0x8f, 0x20, 0x4a, 0xe5, 0x9, 0xa6, 0xdd, 0x72, 0x9e, 0x31, 0x5b, 0xf4, 0x18, 0xb7, 0xee, 0x41, 0xad, 0x2, 0x68, 0xc7, 0x2b, 0x84, 0xff, 0x50, 0xbc, 0x13, 0x79, 0xd6, 0x3a, 0x95, 0xd, 0xa2, 0x4e, 0xe1, 0x8b, 0x24, 0xc8, 0x67, 0x1c, 0xb3, 0x5f, 0xf0, 0x9a, 0x35, 0xd9, 0x76, 0x2f, 0x80, 0x6c, 0xc3, 0xa9, 0x6, 0xea, 0x45, 0x3e, 0x91, 0x7d, 0xd2, 0xb8, 0x17, 0xfb, 0x54, 0x49, 0xe6, 0xa, 0xa5, 0xcf, 0x60, 0x8c, 0x23, 0x58, 0xf7, 0x1b, 0xb4, 0xde, 0x71, 0x9d, 0x32, 0x6b, 0xc4, 0x28, 0x87, 0xed, 0x42, 0xae, 0x1, 0x7a, 0xd5, 0x39, 0x96, 0xfc, 0x53, 0xbf, 0x10, 0x85, 0x2a, 0xc6, 0x69, 0x3, 0xac, 0x40, 0xef, 0x94, 0x3b, 0xd7, 0x78, 0x12, 0xbd, 0x51, 0xfe, 0xa7, 0x8, 0xe4, 0x4b, 0x21, 0x8e, 0x62, 0xcd, 0xb6, 0x19, 0xf5, 0x5a, 0x30, 0x9f, 0x73, 0xdc, 0xc1, 0x6e, 0x82, 0x2d, 0x47, 0xe8, 0x4, 0xab, 0xd0, 0x7f, 0x93, 0x3c, 0x56, 0xf9, 0x15, 0xba, 0xe3, 0x4c, 0xa0, 0xf, 0x65, 0xca, 0x26, 0x89, 0xf2, 0x5d, 0xb1, 0x1e, 0x74, 0xdb, 0x37, 0x98}, [256]uint8{0x0, 0xb0, 0x7d, 0xcd, 0xfa, 0x4a, 0x87, 0x37, 0xe9, 0x59, 0x94, 0x24, 0x13, 0xa3, 0x6e, 0xde, 0xcf, 0x7f, 0xb2, 0x2, 0x35, 0x85, 0x48, 0xf8, 0x26, 0x96, 0x5b, 0xeb, 0xdc, 0x6c, 0xa1, 0x11, 0x83, 0x33, 0xfe, 0x4e, 0x79, 0xc9, 0x4, 0xb4, 0x6a, 0xda, 0x17, 0xa7, 0x90, 0x20, 0xed, 0x5d, 0x4c, 0xfc, 0x31, 0x81, 0xb6, 0x6, 0xcb, 0x7b, 0xa5, 0x15, 0xd8, 0x68, 0x5f, 0xef, 0x22, 0x92, 0x1b, 0xab, 0x66, 0xd6, 0xe1, 0x51, 0x9c, 0x2c, 0xf2, 0x42, 0x8f, 0x3f, 0x8, 0xb8, 0x75, 0xc5, 0xd4, 0x64, 0xa9, 0x19, 0x2e, 0x9e, 0x53, 0xe3, 0x3d, 0x8d, 0x40, 0xf0, 0xc7, 0x77, 0xba, 0xa, 0x98, 0x28, 0xe5, 0x55, 0x62, 0xd2, 0x1f, 0xaf, 0x71, 0xc1, 0xc, 0xbc, 0x8b, 0x3b, 0xf6, 0x46, 0x57, 0xe7, 0x2a, 0x9a, 0xad, 0x1d, 0xd0, 0x60, 0xbe, 0xe, 0xc3, 0x73, 0x44, 0xf4, 0x39, 0x89, 0x36, 0x86, 0x4b, 0xfb, 0xcc, 0x7c, 0xb1, 0x1, 0xdf, 0x6f, 0xa2, 0x12, 0x25, 0x95, 0x58, 0xe8, 0xf9, 0x49, 0x84, 0x34, 0x3, 0xb3, 0x7e, 0xce, 0x10, 0xa0, 0x6d, 0xdd, 0xea, 0x5a, 0x97, 0x27, 0xb5, 0x5, 0xc8, 0x78, 0x4f, 0xff, 0x32, 0x82, 0x5c, 0xec, 0x21, 0x91, 0xa6, 0x16, 0xdb, 0x6b, 0x7a, 0xca, 0x7, 0xb7, 0x80, 0x30, 0xfd, 0x4d, 0x93, 0x23, 0xee, 0x5e, 0x69, 0xd9, 0x14, 0xa4, 0x2d, 0x9d, 0x50, 0xe0, 0xd7, 0x67, 0xaa, 0x1a, 0xc4, 0x74, 0xb9, 0x9, 0x3e, 0x8e, 0x43, 0xf3, 0xe2, 0x52, 0x9f, 0x2f, 0x18, 0xa8, 0x65, 0xd5, 0xb, 0xbb, 0x76, 0xc6, 0xf1, 0x41, 0x8c, 0x3c, 0xae, 0x1e, 0xd3, 0x63, 0x54, 0xe4, 0x29, 0x99, 0x47, 0xf7, 0x3a, 0x8a, 0xbd, 0xd, 0xc0, 0x70, 0x61, 0xd1, 0x1c, 0xac, 0x9b, 0x2b, 0xe6, 0x56, 0x88, 0x38, 0xf5, 0x45, 0x72, 0xc2, 0xf, 0xbf}, [256]uint8{0x0, 0xb1, 0x7f, 0xce, 0xfe, 0x4f, 0x81, 0x30, 0xe1, 0x50, 0x9e, 0x2f, 0x1f, 0xae, 0x60, 0xd1, 0xdf, 0x6e, 0xa0, 0x11, 0x21, 0x90, 0x5e, 0xef, 0x3e, 0x8f, 0x41, 0xf0, 0xc0, 0x71, 0xbf, 0xe, 0xa3, 0x12, 0xdc, 0x6d, 0x5d, 0xec, 0x22, 0x93, 0x42, 0xf3, 0x3d, 0x8c, 0xbc, 0xd, 0xc3, 0x72, 0x7c, 0xcd, 0x3, 0xb2, 0x82, 0x33, 0xfd, 0x4c, 0x9d, 0x2c, 0xe2, 0x53, 0x63, 0xd2, 0x1c, 0xad, 0x5b, 0xea, 0x24, 0x95, 0xa5, 0x14, 0xda, 0x6b, 0xba, 0xb, 0xc5, 0x74, 0x44, 0xf5, 0x3b, 0x8a, 0x84, 0x35, 0xfb, 0x4a, 0x7a, 0xcb, 0x5, 0xb4, 0x65, 0xd4, 0x1a, 0xab, 0x9b, 0x2a, 0xe4, 0x55, 0xf8, 0x49, 0x87, 0x36, 0x6, 0xb7, 0x79, 0xc8, 0x19, 0xa8, 0x66, 0xd7, 0xe7, 0x56, 0x98, 0x29, 0x27, 0x96, 0x58, 0xe9, 0xd9, 0x68, 0xa6, 0x17, 0xc6, 0x77, 0xb9, 0x8, 0x38, 0x89, 0x47, 0xf6, 0xb6, 0x7, 0xc9, 0x78, 0x48, 0xf9, 0x37, 0x86, 0x57, 0xe6, 0x28, 0x99, 0xa9, 0x18, 0xd6, 0x67, 0x69, 0xd8, 0x16, 0xa7, 0x97, 0x26, 0xe8, 0x59, 0x88, 0x39, 0xf7, 0x46, 0x76, 0xc7, 0x9, 0xb8, 0x15, 0xa4, 0x6a, 0xdb, 0xeb, 0x5a, 0x94, 0x25, 0xf4, 0x45, 0x8b, 0x3a, 0xa, 0xbb, 0x75, 0xc4, 0xca, 0x7b, 0xb5, 0x4, 0x34, 0x85, 0x4b, 0xfa, 0x2b, 0x9a, 0x54, 0xe5, 0xd5, 0x64, 0xaa, 0x1b, 0xed, 0x5c, 0x92, 0x23, 0x13, 0xa2, 0x6c, 0xdd, 0xc, 0xbd, 0x73, 0xc2, 0xf2, 0x43, 0x8d, 0x3c, 0x32, 0x83, 0x4d, 0xfc, 0xcc, 0x7d, 0xb3, 0x2, 0xd3, 0x62, 0xac, 0x1d, 0x2d, 0x9c, 0x52, 0xe3, 0x4e, 0xff, 0x31, 0x80, 0xb0, 0x1, 0xcf, 0x7e, 0xaf, 0x1e, 0xd0, 0x61, 0x51, 0xe0, 0x2e, 0x9f, 0x91, 0x20, 0xee, 0x5f, 0x6f, 0xde, 0x10, 0xa1, 0x70, 0xc1, 0xf, 0xbe, 0x8e, 0x3f, 0xf1, 0x40}, [256]uint8{0x0, 0xb2, 0x79, 0xcb, 0xf2, 0x40, 0x8b, 0x39, 0xf9, 0x4b, 0x80, 0x32, 0xb, 0xb9, 0x72, 0xc0, 0xef, 0x5d, 0x96, 0x24, 0x1d, 0xaf, 0x64, 0xd6, 0x16, 0xa4, 0x6f, 0xdd, 0xe4, 0x56, 0x9d, 0x2f, 0xc3, 0x71, 0xba, 0x8, 0x31, 0x83, 0x48, 0xfa, 0x3a, 0x88, 0x43, 0xf1, 0xc8, 0x7a, 0xb1, 0x3, 0x2c, 0x9e, 0x55, 0xe7, 0xde, 0x6c, 0xa7, 0x15, 0xd5, 0x67, 0xac, 0x1e, 0x27, 0x95, 0x5e, 0xec, 0x9b, 0x29, 0xe2, 0x50, 0x69, 0xdb, 0x10, 0xa2, 0x62, 0xd0, 0x1b, 0xa9, 0x90, 0x22, 0xe9, 0x5b, 0x74, 0xc6, 0xd, 0xbf, 0x86, 0x34, 0xff, 0x4d, 0x8d, 0x3f, 0xf4, 0x46, 0x7f, 0xcd, 0x6, 0xb4, 0x58, 0xea, 0x21, 0x93, 0xaa, 0x18, 0xd3, 0x61, 0xa1, 0x13, 0xd8, 0x6a, 0x53, 0xe1, 0x2a, 0x98, 0xb7, 0x5, 0xce, 0x7c, 0x45, 0xf7, 0x3c, 0x8e, 0x4e, 0xfc, 0x37, 0x85, 0xbc, 0xe, 0xc5, 0x77, 0x2b, 0x99, 0x52, 0xe0, 0xd9, 0x6b, 0xa0, 0x12, 0xd2, 0x60, 0xab, 0x19, 0x20, 0x92, 0x59, 0xeb, 0xc4, 0x76, 0xbd, 0xf, 0x36, 0x84, 0x4f, 0xfd, 0x3d, 0x8f, 0x44, 0xf6, 0xcf, 0x7d, 0xb6, 0x4, 0xe8, 0x5a, 0x91, 0x23, 0x1a, 0xa8, 0x63, 0xd1, 0x11, 0xa3, 0x68, 0xda, 0xe3, 0x51, 0x9a, 0x28, 0x7, 0xb5, 0x7e, 0xcc, 0xf5, 0x47, 0x8c, 0x3e, 0xfe, 0x4c, 0x87, 0x35, 0xc, 0xbe, 0x75, 0xc7, 0xb0, 0x2, 0xc9, 0x7b, 0x42, 0xf0, 0x3b, 0x89, 0x49, 0xfb, 0x30, 0x82, 0xbb, 0x9, 0xc2, 0x70, 0x5f, 0xed, 0x26, 0x94, 0xad, 0x1f, 0xd4, 0x66, 0xa6, 0x14, 0xdf, 0x6d, 0x54, 0xe6, 0x2d, 0x9f, 0x73, 0xc1, 0xa, 0xb8, 0x81, 0x33, 0xf8, 0x4a, 0x8a, 0x38, 0xf3, 0x41, 0x78, 0xca, 0x1, 0xb3, 0x9c, 0x2e, 0xe5, 0x57, 0x6e, 0xdc, 0x17, 0xa5, 0x65, 0xd7, 0x1c, 0xae, 0x97, 0x25, 0xee, 0x5c}, [256]uint8{0x0, 0xb3, 0x7b, 0xc8, 0xf6, 0x45, 0x8d, 0x3e, 0xf1, 0x42, 0x8a, 0x39, 0x7, 0xb4, 0x7c, 0xcf, 0xff, 0x4c, 0x84, 0x37, 0x9, 0xba, 0x72, 0xc1, 0xe, 0xbd, 0x75, 0xc6, 0xf8, 0x4b, 0x83, 0x30, 0xe3, 0x50, 0x98, 0x2b, 0x15, 0xa6, 0x6e, 0xdd, 0x12, 0xa1, 0x69, 0xda, 0xe4, 0x57, 0x9f, 0x2c, 0x1c, 0xaf, 0x67, 0xd4, 0xea, 0x59, 0x91, 0x22, 0xed, 0x5e, 0x96, 0x25, 0x1b, 0xa8, 0x60, 0xd3, 0xdb, 0x68, 0xa0, 0x13, 0x2d, 0x9e, 0x56, 0xe5, 0x2a, 0x99, 0x51, 0xe2, 0xdc, 0x6f, 0xa7, 0x14, 0x24, 0x97, 0x5f, 0xec, 0xd2, 0x61, 0xa9, 0x1a, 0xd5, 0x66, 0xae, 0x1d, 0x23, 0x90, 0x58, 0xeb, 0x38, 0x8b, 0x43, 0xf0, 0xce, 0x7d, 0xb5, 0x6, 0xc9, 0x7a, 0xb2, 0x1, 0x3f, 0x8c, 0x44, 0xf7, 0xc7, 0x74, 0xbc, 0xf, 0x31, 0x82, 0x4a, 0xf9, 0x36, 0x85, 0x4d, 0xfe, 0xc0, 0x73, 0xbb, 0x8, 0xab, 0x18, 0xd0, 0x63, 0x5d, 0xee, 0x26, 0x95, 0x5a, 0xe9, 0x21, 0x92, 0xac, 0x1f, 0xd7, 0x64, 0x54, 0xe7, 0x2f, 0x9c, 0xa2, 0x11, 0xd9, 0x6a, 0xa5, 0x16, 0xde, 0x6d, 0x53, 0xe0, 0x28, 0x9b, 0x48, 0xfb, 0x33, 0x80, 0xbe, 0xd, 0xc5, 0x76, 0xb9, 0xa, 0xc2, 0x71, 0x4f, 0xfc, 0x34, 0x87, 0xb7, 0x4, 0xcc, 0x7f, 0x41, 0xf2, 0x3a, 0x89, 0x46, 0xf5, 0x3d, 0x8e, 0xb0, 0x3, 0xcb, 0x78, 0x70, 0xc3, 0xb, 0xb8, 0x86, 0x35, 0xfd, 0x4e, 0x81, 0x32, 0xfa, 0x49, 0x77, 0xc4, 0xc, 0xbf, 0x8f, 0x3c, 0xf4, 0x47, 0x79, 0xca, 0x2, 0xb1, 0x7e, 0xcd, 0x5, 0xb6, 0x88, 0x3b, 0xf3, 0x40, 0x93, 0x20, 0xe8, 0x5b, 0x65, 0xd6, 0x1e, 0xad, 0x62, 0xd1, 0x19, 0xaa, 0x94, 0x27, 0xef, 0x5c, 0x6c, 0xdf, 0x17, 0xa4, 0x9a, 0x29, 0xe1, 0x52, 0x9d, 0x2e, 0xe6, 0x55, 0x6b, 0xd8, 0x10, 0xa3}, [256]uint8{0x0, 0xb4, 0x75, 0xc1, 0xea, 0x5e, 0x9f, 0x2b, 0xc9, 0x7d, 0xbc, 0x8, 0x23, 0x97, 0x56, 0xe2, 0x8f, 0x3b, 0xfa, 0x4e, 0x65, 0xd1, 0x10, 0xa4, 0x46, 0xf2, 0x33, 0x87, 0xac, 0x18, 0xd9, 0x6d, 0x3, 0xb7, 0x76, 0xc2, 0xe9, 0x5d, 0x9c, 0x28, 0xca, 0x7e, 0xbf, 0xb, 0x20, 0x94, 0x55, 0xe1, 0x8c, 0x38, 0xf9, 0x4d, 0x66, 0xd2, 0x13, 0xa7, 0x45, 0xf1, 0x30, 0x84, 0xaf, 0x1b, 0xda, 0x6e, 0x6, 0xb2, 0x73, 0xc7, 0xec, 0x58, 0x99, 0x2d, 0xcf, 0x7b, 0xba, 0xe, 0x25, 0x91, 0x50, 0xe4, 0x89, 0x3d, 0xfc, 0x48, 0x63, 0xd7, 0x16, 0xa2, 0x40, 0xf4, 0x35, 0x81, 0xaa, 0x1e, 0xdf, 0x6b, 0x5, 0xb1, 0x70, 0xc4, 0xef, 0x5b, 0x9a, 0x2e, 0xcc, 0x78, 0xb9, 0xd, 0x26, 0x92, 0x53, 0xe7, 0x8a, 0x3e, 0xff, 0x4b, 0x60, 0xd4, 0x15, 0xa1, 0x43, 0xf7, 0x36, 0x82, 0xa9, 0x1d, 0xdc, 0x68, 0xc, 0xb8, 0x79, 0xcd, 0xe6, 0x52, 0x93, 0x27, 0xc5, 0x71, 0xb0, 0x4, 0x2f, 0x9b, 0x5a, 0xee, 0x83, 0x37, 0xf6, 0x42, 0x69, 0xdd, 0x1c, 0xa8, 0x4a, 0xfe, 0x3f, 0x8b, 0xa0, 0x14, 0xd5, 0x61, 0xf, 0xbb, 0x7a, 0xce, 0xe5, 0x51, 0x90, 0x24, 0xc6, 0x72, 0xb3, 0x7, 0x2c, 0x98, 0x59, 0xed, 0x80, 0x34, 0xf5, 0x41, 0x6a, 0xde, 0x1f, 0xab, 0x49, 0xfd, 0x3c, 0x88, 0xa3, 0x17, 0xd6, 0x62, 0xa, 0xbe, 0x7f, 0xcb, 0xe0, 0x54, 0x95, 0x21, 0xc3, 0x77, 0xb6, 0x2, 0x29, 0x9d, 0x5c, 0xe8, 0x85, 0x31, 0xf0, 0x44, 0x6f, 0xdb, 0x1a, 0xae, 0x4c, 0xf8, 0x39, 0x8d, 0xa6, 0x12, 0xd3, 0x67, 0x9, 0xbd, 0x7c, 0xc8, 0xe3, 0x57, 0x96, 0x22, 0xc0, 0x74, 0xb5, 0x1, 0x2a, 0x9e, 0x5f, 0xeb, 0x86, 0x32, 0xf3, 0x47, 0x6c, 0xd8, 0x19, 0xad, 0x4f, 0xfb, 0x3a, 0x8e, 0xa5, 0x11, 0xd0, 0x64}, [256]uint8{0x0, 0xb5, 0x77, 0xc2, 0xee, 0x5b, 0x99, 0x2c, 0xc1, 0x74, 0xb6, 0x3, 0x2f, 0x9a, 0x58, 0xed, 0x9f, 0x2a, 0xe8, 0x5d, 0x71, 0xc4, 0x6, 0xb3, 0x5e, 0xeb, 0x29, 0x9c, 0xb0, 0x5, 0xc7, 0x72, 0x23, 0x96, 0x54, 0xe1, 0xcd, 0x78, 0xba, 0xf, 0xe2, 0x57, 0x95, 0x20, 0xc, 0xb9, 0x7b, 0xce, 0xbc, 0x9, 0xcb, 0x7e, 0x52, 0xe7, 0x25, 0x90, 0x7d, 0xc8, 0xa, 0xbf, 0x93, 0x26, 0xe4, 0x51, 0x46, 0xf3, 0x31, 0x84, 0xa8, 0x1d, 0xdf, 0x6a, 0x87, 0x32, 0xf0, 0x45, 0x69, 0xdc, 0x1e, 0xab, 0xd9, 0x6c, 0xae, 0x1b, 0x37, 0x82, 0x40, 0xf5, 0x18, 0xad, 0x6f, 0xda, 0xf6, 0x43, 0x81, 0x34, 0x65, 0xd0, 0x12, 0xa7, 0x8b, 0x3e, 0xfc, 0x49, 0xa4, 0x11, 0xd3, 0x66, 0x4a, 0xff, 0x3d, 0x88, 0xfa, 0x4f, 0x8d, 0x38, 0x14, 0xa1, 0x63, 0xd6, 0x3b, 0x8e, 0x4c, 0xf9, 0xd5, 0x60, 0xa2, 0x17, 0x8c, 0x39, 0xfb, 0x4e, 0x62, 0xd7, 0x15, 0xa0, 0x4d, 0xf8, 0x3a, 0x8f, 0xa3, 0x16, 0xd4, 0x61, 0x13, 0xa6, 0x64, 0xd1, 0xfd, 0x48, 0x8a, 0x3f, 0xd2, 0x67, 0xa5, 0x10, 0x3c, 0x89, 0x4b, 0xfe, 0xaf, 0x1a, 0xd8, 0x6d, 0x41, 0xf4, 0x36, 0x83, 0x6e, 0xdb, 0x19, 0xac, 0x80, 0x35, 0xf7, 0x42, 0x30, 0x85, 0x47, 0xf2, 0xde, 0x6b, 0xa9, 0x1c, 0xf1, 0x44, 0x86, 0x33, 0x1f, 0xaa, 0x68, 0xdd, 0xca, 0x7f, 0xbd, 0x8, 0x24, 0x91, 0x53, 0xe6, 0xb, 0xbe, 0x7c, 0xc9, 0xe5, 0x50, 0x92, 0x27, 0x55, 0xe0, 0x22, 0x97, 0xbb, 0xe, 0xcc, 0x79, 0x94, 0x21, 0xe3, 0x56, 0x7a, 0xcf, 0xd, 0xb8, 0xe9, 0x5c, 0x9e, 0x2b, 0x7, 0xb2, 0x70, 0xc5, 0x28, 0x9d, 0x5f, 0xea, 0xc6, 0x73, 0xb1, 0x4, 0x76, 0xc3, 0x1, 0xb4, 0x98, 0x2d, 0xef, 0x5a, 0xb7, 0x2, 0xc0, 0x75, 0x59, 0xec, 0x2e, 0x9b}, [256]uint8{0x0, 0xb6, 0x71, 0xc7, 0xe2, 0x54, 0x93, 0x25, 0xd9, 0x6f, 0xa8, 0x1e, 0x3b, 0x8d, 0x4a, 0xfc, 0xaf, 0x19, 0xde, 0x68, 0x4d, 0xfb, 0x3c, 0x8a, 0x76, 0xc0, 0x7, 0xb1, 0x94, 0x22, 0xe5, 0x53, 0x43, 0xf5, 0x32, 0x84, 0xa1, 0x17, 0xd0, 0x66, 0x9a, 0x2c, 0xeb, 0x5d, 0x78, 0xce, 0x9, 0xbf, 0xec, 0x5a, 0x9d, 0x2b, 0xe, 0xb8, 0x7f, 0xc9, 0x35, 0x83, 0x44, 0xf2, 0xd7, 0x61, 0xa6, 0x10, 0x86, 0x30, 0xf7, 0x41, 0x64, 0xd2, 0x15, 0xa3, 0x5f, 0xe9, 0x2e, 0x98, 0xbd, 0xb, 0xcc, 0x7a, 0x29, 0x9f, 0x58, 0xee, 0xcb, 0x7d, 0xba, 0xc, 0xf0, 0x46, 0x81, 0x37, 0x12, 0xa4, 0x63, 0xd5, 0xc5, 0x73, 0xb4, 0x2, 0x27, 0x91, 0x56, 0xe0, 0x1c, 0xaa, 0x6d, 0xdb, 0xfe, 0x48, 0x8f, 0x39, 0x6a, 0xdc, 0x1b, 0xad, 0x88, 0x3e, 0xf9, 0x4f, 0xb3, 0x5, 0xc2, 0x74, 0x51, 0xe7, 0x20, 0x96, 0x11, 0xa7, 0x60, 0xd6, 0xf3, 0x45, 0x82, 0x34, 0xc8, 0x7e, 0xb9, 0xf, 0x2a, 0x9c, 0x5b, 0xed, 0xbe, 0x8, 0xcf, 0x79, 0x5c, 0xea, 0x2d, 0x9b, 0x67, 0xd1, 0x16, 0xa0, 0x85, 0x33, 0xf4, 0x42, 0x52, 0xe4, 0x23, 0x95, 0xb0, 0x6, 0xc1, 0x77, 0x8b, 0x3d, 0xfa, 0x4c, 0x69, 0xdf, 0x18, 0xae, 0xfd, 0x4b, 0x8c, 0x3a, 0x1f, 0xa9, 0x6e, 0xd8, 0x24, 0x92, 0x55, 0xe3, 0xc6, 0x70, 0xb7, 0x1, 0x97, 0x21, 0xe6, 0x50, 0x75, 0xc3, 0x4, 0xb2, 0x4e, 0xf8, 0x3f, 0x89, 0xac, 0x1a, 0xdd, 0x6b, 0x38, 0x8e, 0x49, 0xff, 0xda, 0x6c, 0xab, 0x1d, 0xe1, 0x57, 0x90, 0x26, 0x3, 0xb5, 0x72, 0xc4, 0xd4, 0x62, 0xa5, 0x13, 0x36, 0x80, 0x47, 0xf1, 0xd, 0xbb, 0x7c, 0xca, 0xef, 0x59, 0x9e, 0x28, 0x7b, 0xcd, 0xa, 0xbc, 0x99, 0x2f, 0xe8, 0x5e, 0xa2, 0x14, 0xd3, 0x65, 0x40, 0xf6, 0x31, 0x87}, [256]uint8{0x0, 0xb7, 0x73, 0xc4, 0xe6, 0x51, 0x95, 0x22, 0xd1, 0x66, 0xa2, 0x15, 0x37, 0x80, 0x44, 0xf3, 0xbf, 0x8, 0xcc, 0x7b, 0x59, 0xee, 0x2a, 0x9d, 0x6e, 0xd9, 0x1d, 0xaa, 0x88, 0x3f, 0xfb, 0x4c, 0x63, 0xd4, 0x10, 0xa7, 0x85, 0x32, 0xf6, 0x41, 0xb2, 0x5, 0xc1, 0x76, 0x54, 0xe3, 0x27, 0x90, 0xdc, 0x6b, 0xaf, 0x18, 0x3a, 0x8d, 0x49, 0xfe, 0xd, 0xba, 0x7e, 0xc9, 0xeb, 0x5c, 0x98, 0x2f, 0xc6, 0x71, 0xb5, 0x2, 0x20, 0x97, 0x53, 0xe4, 0x17, 0xa0, 0x64, 0xd3, 0xf1, 0x46, 0x82, 0x35, 0x79, 0xce, 0xa, 0xbd, 0x9f, 0x28, 0xec, 0x5b, 0xa8, 0x1f, 0xdb, 0x6c, 0x4e, 0xf9, 0x3d, 0x8a, 0xa5, 0x12, 0xd6, 0x61, 0x43, 0xf4, 0x30, 0x87, 0x74, 0xc3, 0x7, 0xb0, 0x92, 0x25, 0xe1, 0x56, 0x1a, 0xad, 0x69, 0xde, 0xfc, 0x4b, 0x8f, 0x38, 0xcb, 0x7c, 0xb8, 0xf, 0x2d, 0x9a, 0x5e, 0xe9, 0x91, 0x26, 0xe2, 0x55, 0x77, 0xc0, 0x4, 0xb3, 0x40, 0xf7, 0x33, 0x84, 0xa6, 0x11, 0xd5, 0x62, 0x2e, 0x99, 0x5d, 0xea, 0xc8, 0x7f, 0xbb, 0xc, 0xff, 0x48, 0x8c, 0x3b, 0x19, 0xae, 0x6a, 0xdd, 0xf2, 0x45, 0x81, 0x36, 0x14, 0xa3, 0x67, 0xd0, 0x23, 0x94, 0x50, 0xe7, 0xc5, 0x72, 0xb6, 0x1, 0x4d, 0xfa, 0x3e, 0x89, 0xab, 0x1c, 0xd8, 0x6f, 0x9c, 0x2b, 0xef, 0x58, 0x7a, 0xcd, 0x9, 0xbe, 0x57, 0xe0, 0x24, 0x93, 0xb1, 0x6, 0xc2, 0x75, 0x86, 0x31, 0xf5, 0x42, 0x60, 0xd7, 0x13, 0xa4, 0xe8, 0x5f, 0x9b, 0x2c, 0xe, 0xb9, 0x7d, 0xca, 0x39, 0x8e, 0x4a, 0xfd, 0xdf, 0x68, 0xac, 0x1b, 0x34, 0x83, 0x47, 0xf0, 0xd2, 0x65, 0xa1, 0x16, 0xe5, 0x52, 0x96, 0x21, 0x3, 0xb4, 0x70, 0xc7, 0x8b, 0x3c, 0xf8, 0x4f, 0x6d, 0xda, 0x1e, 0xa9, 0x5a, 0xed, 0x29, 0x9e, 0xbc, 0xb, 0xcf, 0x78}, [256]uint8{0x0, 0xb8, 0x6d, 0xd5, 0xda, 0x62, 0xb7, 0xf, 0xa9, 0x11, 0xc4, 0x7c, 0x73, 0xcb, 0x1e, 0xa6, 0x4f, 0xf7, 0x22, 0x9a, 0x95, 0x2d, 0xf8, 0x40, 0xe6, 0x5e, 0x8b, 0x33, 0x3c, 0x84, 0x51, 0xe9, 0x9e, 0x26, 0xf3, 0x4b, 0x44, 0xfc, 0x29, 0x91, 0x37, 0x8f, 0x5a, 0xe2, 0xed, 0x55, 0x80, 0x38, 0xd1, 0x69, 0xbc, 0x4, 0xb, 0xb3, 0x66, 0xde, 0x78, 0xc0, 0x15, 0xad, 0xa2, 0x1a, 0xcf, 0x77, 0x21, 0x99, 0x4c, 0xf4, 0xfb, 0x43, 0x96, 0x2e, 0x88, 0x30, 0xe5, 0x5d, 0x52, 0xea, 0x3f, 0x87, 0x6e, 0xd6, 0x3, 0xbb, 0xb4, 0xc, 0xd9, 0x61, 0xc7, 0x7f, 0xaa, 0x12, 0x1d, 0xa5, 0x70, 0xc8, 0xbf, 0x7, 0xd2, 0x6a, 0x65, 0xdd, 0x8, 0xb0, 0x16, 0xae, 0x7b, 0xc3, 0xcc, 0x74, 0xa1, 0x19, 0xf0, 0x48, 0x9d, 0x25, 0x2a, 0x92, 0x47, 0xff, 0x59, 0xe1, 0x34, 0x8c, 0x83, 0x3b, 0xee, 0x56, 0x42, 0xfa, 0x2f, 0x97, 0x98, 0x20, 0xf5, 0x4d, 0xeb, 0x53, 0x86, 0x3e, 0x31, 0x89, 0x5c, 0xe4, 0xd, 0xb5, 0x60, 0xd8, 0xd7, 0x6f, 0xba, 0x2, 0xa4, 0x1c, 0xc9, 0x71, 0x7e, 0xc6, 0x13, 0xab, 0xdc, 0x64, 0xb1, 0x9, 0x6, 0xbe, 0x6b, 0xd3, 0x75, 0xcd, 0x18, 0xa0, 0xaf, 0x17, 0xc2, 0x7a, 0x93, 0x2b, 0xfe, 0x46, 0x49, 0xf1, 0x24, 0x9c, 0x3a, 0x82, 0x57, 0xef, 0xe0, 0x58, 0x8d, 0x35, 0x63, 0xdb, 0xe, 0xb6, 0xb9, 0x1, 0xd4, 0x6c, 0xca, 0x72, 0xa7, 0x1f, 0x10, 0xa8, 0x7d, 0xc5, 0x2c, 0x94, 0x41, 0xf9, 0xf6, 0x4e, 0x9b, 0x23, 0x85, 0x3d, 0xe8, 0x50, 0x5f, 0xe7, 0x32, 0x8a, 0xfd, 0x45, 0x90, 0x28, 0x27, 0x9f, 0x4a, 0xf2, 0x54, 0xec, 0x39, 0x81, 0x8e, 0x36, 0xe3, 0x5b, 0xb2, 0xa, 0xdf, 0x67, 0x68, 0xd0, 0x5, 0xbd, 0x1b, 0xa3, 0x76, 0xce, 0xc1, 0x79, 0xac, 0x14}, [256]uint8{0x0, 0xb9, 0x6f, 0xd6, 0xde, 0x67, 0xb1, 0x8, 0xa1, 0x18, 0xce, 0x77, 0x7f, 0xc6, 0x10, 0xa9, 0x5f, 0xe6, 0x30, 0x89, 0x81, 0x38, 0xee, 0x57, 0xfe, 0x47, 0x91, 0x28, 0x20, 0x99, 0x4f, 0xf6, 0xbe, 0x7, 0xd1, 0x68, 0x60, 0xd9, 0xf, 0xb6, 0x1f, 0xa6, 0x70, 0xc9, 0xc1, 0x78, 0xae, 0x17, 0xe1, 0x58, 0x8e, 0x37, 0x3f, 0x86, 0x50, 0xe9, 0x40, 0xf9, 0x2f, 0x96, 0x9e, 0x27, 0xf1, 0x48, 0x61, 0xd8, 0xe, 0xb7, 0xbf, 0x6, 0xd0, 0x69, 0xc0, 0x79, 0xaf, 0x16, 0x1e, 0xa7, 0x71, 0xc8, 0x3e, 0x87, 0x51, 0xe8, 0xe0, 0x59, 0x8f, 0x36, 0x9f, 0x26, 0xf0, 0x49, 0x41, 0xf8, 0x2e, 0x97, 0xdf, 0x66, 0xb0, 0x9, 0x1, 0xb8, 0x6e, 0xd7, 0x7e, 0xc7, 0x11, 0xa8, 0xa0, 0x19, 0xcf, 0x76, 0x80, 0x39, 0xef, 0x56, 0x5e, 0xe7, 0x31, 0x88, 0x21, 0x98, 0x4e, 0xf7, 0xff, 0x46, 0x90, 0x29, 0xc2, 0x7b, 0xad, 0x14, 0x1c, 0xa5, 0x73, 0xca, 0x63, 0xda, 0xc, 0xb5, 0xbd, 0x4, 0xd2, 0x6b, 0x9d, 0x24, 0xf2, 0x4b, 0x43, 0xfa, 0x2c, 0x95, 0x3c, 0x85, 0x53, 0xea, 0xe2, 0x5b, 0x8d, 0x34, 0x7c, 0xc5, 0x13, 0xaa, 0xa2, 0x1b, 0xcd, 0x74, 0xdd, 0x64, 0xb2, 0xb, 0x3, 0xba, 0x6c, 0xd5, 0x23, 0x9a, 0x4c, 0xf5, 0xfd, 0x44, 0x92, 0x2b, 0x82, 0x3b, 0xed, 0x54, 0x5c, 0xe5, 0x33, 0x8a, 0xa3, 0x1a, 0xcc, 0x75, 0x7d, 0xc4, 0x12, 0xab, 0x2, 0xbb, 0x6d, 0xd4, 0xdc, 0x65, 0xb3, 0xa, 0xfc, 0x45, 0x93, 0x2a, 0x22, 0x9b, 0x4d, 0xf4, 0x5d, 0xe4, 0x32, 0x8b, 0x83, 0x3a, 0xec, 0x55, 0x1d, 0xa4, 0x72, 0xcb, 0xc3, 0x7a, 0xac, 0x15, 0xbc, 0x5, 0xd3, 0x6a, 0x62, 0xdb, 0xd, 0xb4, 0x42, 0xfb, 0x2d, 0x94, 0x9c, 0x25, 0xf3, 0x4a, 0xe3, 0x5a, 0x8c, 0x35, 0x3d, 0x84, 0x52, 0xeb}, [256]uint8{0x0, 0xba, 0x69, 0xd3, 0xd2, 0x68, 0xbb, 0x1, 0xb9, 0x3, 0xd0, 0x6a, 0x6b, 0xd1, 0x2, 0xb8, 0x6f, 0xd5, 0x6, 0xbc, 0xbd, 0x7, 0xd4, 0x6e, 0xd6, 0x6c, 0xbf, 0x5, 0x4, 0xbe, 0x6d, 0xd7, 0xde, 0x64, 0xb7, 0xd, 0xc, 0xb6, 0x65, 0xdf, 0x67, 0xdd, 0xe, 0xb4, 0xb5, 0xf, 0xdc, 0x66, 0xb1, 0xb, 0xd8, 0x62, 0x63, 0xd9, 0xa, 0xb0, 0x8, 0xb2, 0x61, 0xdb, 0xda, 0x60, 0xb3, 0x9, 0xa1, 0x1b, 0xc8, 0x72, 0x73, 0xc9, 0x1a, 0xa0, 0x18, 0xa2, 0x71, 0xcb, 0xca, 0x70, 0xa3, 0x19, 0xce, 0x74, 0xa7, 0x1d, 0x1c, 0xa6, 0x75, 0xcf, 0x77, 0xcd, 0x1e, 0xa4, 0xa5, 0x1f, 0xcc, 0x76, 0x7f, 0xc5, 0x16, 0xac, 0xad, 0x17, 0xc4, 0x7e, 0xc6, 0x7c, 0xaf, 0x15, 0x14, 0xae, 0x7d, 0xc7, 0x10, 0xaa, 0x79, 0xc3, 0xc2, 0x78, 0xab, 0x11, 0xa9, 0x13, 0xc0, 0x7a, 0x7b, 0xc1, 0x12, 0xa8, 0x5f, 0xe5, 0x36, 0x8c, 0x8d, 0x37, 0xe4, 0x5e, 0xe6, 0x5c, 0x8f, 0x35, 0x34, 0x8e, 0x5d, 0xe7, 0x30, 0x8a, 0x59, 0xe3, 0xe2, 0x58, 0x8b, 0x31, 0x89, 0x33, 0xe0, 0x5a, 0x5b, 0xe1, 0x32, 0x88, 0x81, 0x3b, 0xe8, 0x52, 0x53, 0xe9, 0x3a, 0x80, 0x38, 0x82, 0x51, 0xeb, 0xea, 0x50, 0x83, 0x39, 0xee, 0x54, 0x87, 0x3d, 0x3c, 0x86, 0x55, 0xef, 0x57, 0xed, 0x3e, 0x84, 0x85, 0x3f, 0xec, 0x56, 0xfe, 0x44, 0x97, 0x2d, 0x2c, 0x96, 0x45, 0xff, 0x47, 0xfd, 0x2e, 0x94, 0x95, 0x2f, 0xfc, 0x46, 0x91, 0x2b, 0xf8, 0x42, 0x43, 0xf9, 0x2a, 0x90, 0x28, 0x92, 0x41, 0xfb, 0xfa, 0x40, 0x93, 0x29, 0x20, 0x9a, 0x49, 0xf3, 0xf2, 0x48, 0x9b, 0x21, 0x99, 0x23, 0xf0, 0x4a, 0x4b, 0xf1, 0x22, 0x98, 0x4f, 0xf5, 0x26, 0x9c, 0x9d, 0x27, 0xf4, 0x4e, 0xf6, 0x4c, 0x9f, 0x25, 0x24, 0x9e, 0x4d, 0xf7}, [256]uint8{0x0, 0xbb, 0x6b, 0xd0, 0xd6, 0x6d, 0xbd, 0x6, 0xb1, 0xa, 0xda, 0x61, 0x67, 0xdc, 0xc, 0xb7, 0x7f, 0xc4, 0x14, 0xaf, 0xa9, 0x12, 0xc2, 0x79, 0xce, 0x75, 0xa5, 0x1e, 0x18, 0xa3, 0x73, 0xc8, 0xfe, 0x45, 0x95, 0x2e, 0x28, 0x93, 0x43, 0xf8, 0x4f, 0xf4, 0x24, 0x9f, 0x99, 0x22, 0xf2, 0x49, 0x81, 0x3a, 0xea, 0x51, 0x57, 0xec, 0x3c, 0x87, 0x30, 0x8b, 0x5b, 0xe0, 0xe6, 0x5d, 0x8d, 0x36, 0xe1, 0x5a, 0x8a, 0x31, 0x37, 0x8c, 0x5c, 0xe7, 0x50, 0xeb, 0x3b, 0x80, 0x86, 0x3d, 0xed, 0x56, 0x9e, 0x25, 0xf5, 0x4e, 0x48, 0xf3, 0x23, 0x98, 0x2f, 0x94, 0x44, 0xff, 0xf9, 0x42, 0x92, 0x29, 0x1f, 0xa4, 0x74, 0xcf, 0xc9, 0x72, 0xa2, 0x19, 0xae, 0x15, 0xc5, 0x7e, 0x78, 0xc3, 0x13, 0xa8, 0x60, 0xdb, 0xb, 0xb0, 0xb6, 0xd, 0xdd, 0x66, 0xd1, 0x6a, 0xba, 0x1, 0x7, 0xbc, 0x6c, 0xd7, 0xdf, 0x64, 0xb4, 0xf, 0x9, 0xb2, 0x62, 0xd9, 0x6e, 0xd5, 0x5, 0xbe, 0xb8, 0x3, 0xd3, 0x68, 0xa0, 0x1b, 0xcb, 0x70, 0x76, 0xcd, 0x1d, 0xa6, 0x11, 0xaa, 0x7a, 0xc1, 0xc7, 0x7c, 0xac, 0x17, 0x21, 0x9a, 0x4a, 0xf1, 0xf7, 0x4c, 0x9c, 0x27, 0x90, 0x2b, 0xfb, 0x40, 0x46, 0xfd, 0x2d, 0x96, 0x5e, 0xe5, 0x35, 0x8e, 0x88, 0x33, 0xe3, 0x58, 0xef, 0x54, 0x84, 0x3f, 0x39, 0x82, 0x52, 0xe9, 0x3e, 0x85, 0x55, 0xee, 0xe8, 0x53, 0x83, 0x38, 0x8f, 0x34, 0xe4, 0x5f, 0x59, 0xe2, 0x32, 0x89, 0x41, 0xfa, 0x2a, 0x91, 0x97, 0x2c, 0xfc, 0x47, 0xf0, 0x4b, 0x9b, 0x20, 0x26, 0x9d, 0x4d, 0xf6, 0xc0, 0x7b, 0xab, 0x10, 0x16, 0xad, 0x7d, 0xc6, 0x71, 0xca, 0x1a, 0xa1, 0xa7, 0x1c, 0xcc, 0x77, 0xbf, 0x4, 0xd4, 0x6f, 0x69, 0xd2, 0x2, 0xb9, 0xe, 0xb5, 0x65, 0xde, 0xd8, 0x63, 0xb3, 0x8}, [256]uint8{0x0, 0xbc, 0x65, 0xd9, 0xca, 0x76, 0xaf, 0x13, 0x89, 0x35, 0xec, 0x50, 0x43, 0xff, 0x26, 0x9a, 0xf, 0xb3, 0x6a, 0xd6, 0xc5, 0x79, 0xa0, 0x1c, 0x86, 0x3a, 0xe3, 0x5f, 0x4c, 0xf0, 0x29, 0x95, 0x1e, 0xa2, 0x7b, 0xc7, 0xd4, 0x68, 0xb1, 0xd, 0x97, 0x2b, 0xf2, 0x4e, 0x5d, 0xe1, 0x38, 0x84, 0x11, 0xad, 0x74, 0xc8, 0xdb, 0x67, 0xbe, 0x2, 0x98, 0x24, 0xfd, 0x41, 0x52, 0xee, 0x37, 0x8b, 0x3c, 0x80, 0x59, 0xe5, 0xf6, 0x4a, 0x93, 0x2f, 0xb5, 0x9, 0xd0, 0x6c, 0x7f, 0xc3, 0x1a, 0xa6, 0x33, 0x8f, 0x56, 0xea, 0xf9, 0x45, 0x9c, 0x20, 0xba, 0x6, 0xdf, 0x63, 0x70, 0xcc, 0x15, 0xa9, 0x22, 0x9e, 0x47, 0xfb, 0xe8, 0x54, 0x8d, 0x31, 0xab, 0x17, 0xce, 0x72, 0x61, 0xdd, 0x4, 0xb8, 0x2d, 0x91, 0x48, 0xf4, 0xe7, 0x5b, 0x82, 0x3e, 0xa4, 0x18, 0xc1, 0x7d, 0x6e, 0xd2, 0xb, 0xb7, 0x78, 0xc4, 0x1d, 0xa1, 0xb2, 0xe, 0xd7, 0x6b, 0xf1, 0x4d, 0x94, 0x28, 0x3b, 0x87, 0x5e, 0xe2, 0x77, 0xcb, 0x12, 0xae, 0xbd, 0x1, 0xd8, 0x64, 0xfe, 0x42, 0x9b, 0x27, 0x34, 0x88, 0x51, 0xed, 0x66, 0xda, 0x3, 0xbf, 0xac, 0x10, 0xc9, 0x75, 0xef, 0x53, 0x8a, 0x36, 0x25, 0x99, 0x40, 0xfc, 0x69, 0xd5, 0xc, 0xb0, 0xa3, 0x1f, 0xc6, 0x7a, 0xe0, 0x5c, 0x85, 0x39, 0x2a, 0x96, 0x4f, 0xf3, 0x44, 0xf8, 0x21, 0x9d, 0x8e, 0x32, 0xeb, 0x57, 0xcd, 0x71, 0xa8, 0x14, 0x7, 0xbb, 0x62, 0xde, 0x4b, 0xf7, 0x2e, 0x92, 0x81, 0x3d, 0xe4, 0x58, 0xc2, 0x7e, 0xa7, 0x1b, 0x8, 0xb4, 0x6d, 0xd1, 0x5a, 0xe6, 0x3f, 0x83, 0x90, 0x2c, 0xf5, 0x49, 0xd3, 0x6f, 0xb6, 0xa, 0x19, 0xa5, 0x7c, 0xc0, 0x55, 0xe9, 0x30, 0x8c, 0x9f, 0x23, 0xfa, 0x46, 0xdc, 0x60, 0xb9, 0x5, 0x16, 0xaa, 0x73, 0xcf}, [256]uint8{0x0, 0xbd, 0x67, 0xda, 0xce, 0x73, 0xa9, 0x14, 0x81, 0x3c, 0xe6, 0x5b, 0x4f, 0xf2, 0x28, 0x95, 0x1f, 0xa2, 0x78, 0xc5, 0xd1, 0x6c, 0xb6, 0xb, 0x9e, 0x23, 0xf9, 0x44, 0x50, 0xed, 0x37, 0x8a, 0x3e, 0x83, 0x59, 0xe4, 0xf0, 0x4d, 0x97, 0x2a, 0xbf, 0x2, 0xd8, 0x65, 0x71, 0xcc, 0x16, 0xab, 0x21, 0x9c, 0x46, 0xfb, 0xef, 0x52, 0x88, 0x35, 0xa0, 0x1d, 0xc7, 0x7a, 0x6e, 0xd3, 0x9, 0xb4, 0x7c, 0xc1, 0x1b, 0xa6, 0xb2, 0xf, 0xd5, 0x68, 0xfd, 0x40, 0x9a, 0x27, 0x33, 0x8e, 0x54, 0xe9, 0x63, 0xde, 0x4, 0xb9, 0xad, 0x10, 0xca, 0x77, 0xe2, 0x5f, 0x85, 0x38, 0x2c, 0x91, 0x4b, 0xf6, 0x42, 0xff, 0x25, 0x98, 0x8c, 0x31, 0xeb, 0x56, 0xc3, 0x7e, 0xa4, 0x19, 0xd, 0xb0, 0x6a, 0xd7, 0x5d, 0xe0, 0x3a, 0x87, 0x93, 0x2e, 0xf4, 0x49, 0xdc, 0x61, 0xbb, 0x6, 0x12, 0xaf, 0x75, 0xc8, 0xf8, 0x45, 0x9f, 0x22, 0x36, 0x8b, 0x51, 0xec, 0x79, 0xc4, 0x1e, 0xa3, 0xb7, 0xa, 0xd0, 0x6d, 0xe7, 0x5a, 0x80, 0x3d, 0x29, 0x94, 0x4e, 0xf3, 0x66, 0xdb, 0x1, 0xbc, 0xa8, 0x15, 0xcf, 0x72, 0xc6, 0x7b, 0xa1, 0x1c, 0x8, 0xb5, 0x6f, 0xd2, 0x47, 0xfa, 0x20, 0x9d, 0x89, 0x34, 0xee, 0x53, 0xd9, 0x64, 0xbe, 0x3, 0x17, 0xaa, 0x70, 0xcd, 0x58, 0xe5, 0x3f, 0x82, 0x96, 0x2b, 0xf1, 0x4c, 0x84, 0x39, 0xe3, 0x5e, 0x4a, 0xf7, 0x2d, 0x90, 0x5, 0xb8, 0x62, 0xdf, 0xcb, 0x76, 0xac, 0x11, 0x9b, 0x26, 0xfc, 0x41, 0x55, 0xe8, 0x32, 0x8f, 0x1a, 0xa7, 0x7d, 0xc0, 0xd4, 0x69, 0xb3, 0xe, 0xba, 0x7, 0xdd, 0x60, 0x74, 0xc9, 0x13, 0xae, 0x3b, 0x86, 0x5c, 0xe1, 0xf5, 0x48, 0x92, 0x2f, 0xa5, 0x18, 0xc2, 0x7f, 0x6b, 0xd6, 0xc, 0xb1, 0x24, 0x99, 0x43, 0xfe, 0xea, 0x57, 0x8d, 0x30}, [256]uint8{0x0, 0xbe, 0x61, 0xdf, 0xc2, 0x7c, 0xa3, 0x1d, 0x99, 0x27, 0xf8, 0x46, 0x5b, 0xe5, 0x3a, 0x84, 0x2f, 0x91, 0x4e, 0xf0, 0xed, 0x53, 0x8c, 0x32, 0xb6, 0x8, 0xd7, 0x69, 0x74, 0xca, 0x15, 0xab, 0x5e, 0xe0, 0x3f, 0x81, 0x9c, 0x22, 0xfd, 0x43, 0xc7, 0x79, 0xa6, 0x18, 0x5, 0xbb, 0x64, 0xda, 0x71, 0xcf, 0x10, 0xae, 0xb3, 0xd, 0xd2, 0x6c, 0xe8, 0x56, 0x89, 0x37, 0x2a, 0x94, 0x4b, 0xf5, 0xbc, 0x2, 0xdd, 0x63, 0x7e, 0xc0, 0x1f, 0xa1, 0x25, 0x9b, 0x44, 0xfa, 0xe7, 0x59, 0x86, 0x38, 0x93, 0x2d, 0xf2, 0x4c, 0x51, 0xef, 0x30, 0x8e, 0xa, 0xb4, 0x6b, 0xd5, 0xc8, 0x76, 0xa9, 0x17, 0xe2, 0x5c, 0x83, 0x3d, 0x20, 0x9e, 0x41, 0xff, 0x7b, 0xc5, 0x1a, 0xa4, 0xb9, 0x7, 0xd8, 0x66, 0xcd, 0x73, 0xac, 0x12, 0xf, 0xb1, 0x6e, 0xd0, 0x54, 0xea, 0x35, 0x8b, 0x96, 0x28, 0xf7, 0x49, 0x65, 0xdb, 0x4, 0xba, 0xa7, 0x19, 0xc6, 0x78, 0xfc, 0x42, 0x9d, 0x23, 0x3e, 0x80, 0x5f, 0xe1, 0x4a, 0xf4, 0x2b, 0x95, 0x88, 0x36, 0xe9, 0x57, 0xd3, 0x6d, 0xb2, 0xc, 0x11, 0xaf, 0x70, 0xce, 0x3b, 0x85, 0x5a, 0xe4, 0xf9, 0x47, 0x98, 0x26, 0xa2, 0x1c, 0xc3, 0x7d, 0x60, 0xde, 0x1, 0xbf, 0x14, 0xaa, 0x75, 0xcb, 0xd6, 0x68, 0xb7, 0x9, 0x8d, 0x33, 0xec, 0x52, 0x4f, 0xf1, 0x2e, 0x90, 0xd9, 0x67, 0xb8, 0x6, 0x1b, 0xa5, 0x7a, 0xc4, 0x40, 0xfe, 0x21, 0x9f, 0x82, 0x3c, 0xe3, 0x5d, 0xf6, 0x48, 0x97, 0x29, 0x34, 0x8a, 0x55, 0xeb, 0x6f, 0xd1, 0xe, 0xb0, 0xad, 0x13, 0xcc, 0x72, 0x87, 0x39, 0xe6, 0x58, 0x45, 0xfb, 0x24, 0x9a, 0x1e, 0xa0, 0x7f, 0xc1, 0xdc, 0x62, 0xbd, 0x3, 0xa8, 0x16, 0xc9, 0x77, 0x6a, 0xd4, 0xb, 0xb5, 0x31, 0x8f, 0x50, 0xee, 0xf3, 0x4d, 0x92, 0x2c}, [256]uint8{0x0, 0xbf, 0x63, 0xdc, 0xc6, 0x79, 0xa5, 0x1a, 0x91, 0x2e, 0xf2, 0x4d, 0x57, 0xe8, 0x34, 0x8b, 0x3f, 0x80, 0x5c, 0xe3, 0xf9, 0x46, 0x9a, 0x25, 0xae, 0x11, 0xcd, 0x72, 0x68, 0xd7, 0xb, 0xb4, 0x7e, 0xc1, 0x1d, 0xa2, 0xb8, 0x7, 0xdb, 0x64, 0xef, 0x50, 0x8c, 0x33, 0x29, 0x96, 0x4a, 0xf5, 0x41, 0xfe, 0x22, 0x9d, 0x87, 0x38, 0xe4, 0x5b, 0xd0, 0x6f, 0xb3, 0xc, 0x16, 0xa9, 0x75, 0xca, 0xfc, 0x43, 0x9f, 0x20, 0x3a, 0x85, 0x59, 0xe6, 0x6d, 0xd2, 0xe, 0xb1, 0xab, 0x14, 0xc8, 0x77, 0xc3, 0x7c, 0xa0, 0x1f, 0x5, 0xba, 0x66, 0xd9, 0x52, 0xed, 0x31, 0x8e, 0x94, 0x2b, 0xf7, 0x48, 0x82, 0x3d, 0xe1, 0x5e, 0x44, 0xfb, 0x27, 0x98, 0x13, 0xac, 0x70, 0xcf, 0xd5, 0x6a, 0xb6, 0x9, 0xbd, 0x2, 0xde, 0x61, 0x7b, 0xc4, 0x18, 0xa7, 0x2c, 0x93, 0x4f, 0xf0, 0xea, 0x55, 0x89, 0x36, 0xe5, 0x5a, 0x86, 0x39, 0x23, 0x9c, 0x40, 0xff, 0x74, 0xcb, 0x17, 0xa8, 0xb2, 0xd, 0xd1, 0x6e, 0xda, 0x65, 0xb9, 0x6, 0x1c, 0xa3, 0x7f, 0xc0, 0x4b, 0xf4, 0x28, 0x97, 0x8d, 0x32, 0xee, 0x51, 0x9b, 0x24, 0xf8, 0x47, 0x5d, 0xe2, 0x3e, 0x81, 0xa, 0xb5, 0x69, 0xd6, 0xcc, 0x73, 0xaf, 0x10, 0xa4, 0x1b, 0xc7, 0x78, 0x62, 0xdd, 0x1, 0xbe, 0x35, 0x8a, 0x56, 0xe9, 0xf3, 0x4c, 0x90, 0x2f, 0x19, 0xa6, 0x7a, 0xc5, 0xdf, 0x60, 0xbc, 0x3, 0x88, 0x37, 0xeb, 0x54, 0x4e, 0xf1, 0x2d, 0x92, 0x26, 0x99, 0x45, 0xfa, 0xe0, 0x5f, 0x83, 0x3c, 0xb7, 0x8, 0xd4, 0x6b, 0x71, 0xce, 0x12, 0xad, 0x67, 0xd8, 0x4, 0xbb, 0xa1, 0x1e, 0xc2, 0x7d, 0xf6, 0x49, 0x95, 0x2a, 0x30, 0x8f, 0x53, 0xec, 0x58, 0xe7, 0x3b, 0x84, 0x9e, 0x21, 0xfd, 0x42, 0xc9, 0x76, 0xaa, 0x15, 0xf, 0xb0, 0x6c, 0xd3}, [256]uint8{0x0, 0xc0, 0x9d, 0x5d, 0x27, 0xe7, 0xba, 0x7a, 0x4e, 0x8e, 0xd3, 0x13, 0x69, 0xa9, 0xf4, 0x34, 0x9c, 0x5c, 0x1, 0xc1, 0xbb, 0x7b, 0x26, 0xe6, 0xd2, 0x12, 0x4f, 0x8f, 0xf5, 0x35, 0x68, 0xa8, 0x25, 0xe5, 0xb8, 0x78, 0x2, 0xc2, 0x9f, 0x5f, 0x6b, 0xab, 0xf6, 0x36, 0x4c, 0x8c, 0xd1, 0x11, 0xb9, 0x79, 0x24, 0xe4, 0x9e, 0x5e, 0x3, 0xc3, 0xf7, 0x37, 0x6a, 0xaa, 0xd0, 0x10, 0x4d, 0x8d, 0x4a, 0x8a, 0xd7, 0x17, 0x6d, 0xad, 0xf0, 0x30, 0x4, 0xc4, 0x99, 0x59, 0x23, 0xe3, 0xbe, 0x7e, 0xd6, 0x16, 0x4b, 0x8b, 0xf1, 0x31, 0x6c, 0xac, 0x98, 0x58, 0x5, 0xc5, 0xbf, 0x7f, 0x22, 0xe2, 0x6f, 0xaf, 0xf2, 0x32, 0x48, 0x88, 0xd5, 0x15, 0x21, 0xe1, 0xbc, 0x7c, 0x6, 0xc6, 0x9b, 0x5b, 0xf3, 0x33, 0x6e, 0xae, 0xd4, 0x14, 0x49, 0x89, 0xbd, 0x7d, 0x20, 0xe0, 0x9a, 0x5a, 0x7, 0xc7, 0x94, 0x54, 0x9, 0xc9, 0xb3, 0x73, 0x2e, 0xee, 0xda, 0x1a, 0x47, 0x87, 0xfd, 0x3d, 0x60, 0xa0, 0x8, 0xc8, 0x95, 0x55, 0x2f, 0xef, 0xb2, 0x72, 0x46, 0x86, 0xdb, 0x1b, 0x61, 0xa1, 0xfc, 0x3c, 0xb1, 0x71, 0x2c, 0xec, 0x96, 0x56, 0xb, 0xcb, 0xff, 0x3f, 0x62, 0xa2, 0xd8, 0x18, 0x45, 0x85, 0x2d, 0xed, 0xb0, 0x70, 0xa, 0xca, 0x97, 0x57, 0x63, 0xa3, 0xfe, 0x3e, 0x44, 0x84, 0xd9, 0x19, 0xde, 0x1e, 0x43, 0x83, 0xf9, 0x39, 0x64, 0xa4, 0x90, 0x50, 0xd, 0xcd, 0xb7, 0x77, 0x2a, 0xea, 0x42, 0x82, 0xdf, 0x1f, 0x65, 0xa5, 0xf8, 0x38, 0xc, 0xcc, 0x91, 0x51, 0x2b, 0xeb, 0xb6, 0x76, 0xfb, 0x3b, 0x66, 0xa6, 0xdc, 0x1c, 0x41, 0x81, 0xb5, 0x75, 0x28, 0xe8, 0x92, 0x52, 0xf, 0xcf, 0x67, 0xa7, 0xfa, 0x3a, 0x40, 0x80, 0xdd, 0x1d, 0x29, 0xe9, 0xb4, 0x74, 0xe, 0xce, 0x93, 0x53}, [256]uint8{0x0, 0xc1, 0x9f, 0x5e, 0x23, 0xe2, 0xbc, 0x7d, 0x46, 0x87, 0xd9, 0x18, 0x65, 0xa4, 0xfa, 0x3b, 0x8c, 0x4d, 0x13, 0xd2, 0xaf, 0x6e, 0x30, 0xf1, 0xca, 0xb, 0x55, 0x94, 0xe9, 0x28, 0x76, 0xb7, 0x5, 0xc4, 0x9a, 0x5b, 0x26, 0xe7, 0xb9, 0x78, 0x43, 0x82, 0xdc, 0x1d, 0x60, 0xa1, 0xff, 0x3e, 0x89, 0x48, 0x16, 0xd7, 0xaa, 0x6b, 0x35, 0xf4, 0xcf, 0xe, 0x50, 0x91, 0xec, 0x2d, 0x73, 0xb2, 0xa, 0xcb, 0x95, 0x54, 0x29, 0xe8, 0xb6, 0x77, 0x4c, 0x8d, 0xd3, 0x12, 0x6f, 0xae, 0xf0, 0x31, 0x86, 0x47, 0x19, 0xd8, 0xa5, 0x64, 0x3a, 0xfb, 0xc0, 0x1, 0x5f, 0x9e, 0xe3, 0x22, 0x7c, 0xbd, 0xf, 0xce, 0x90, 0x51, 0x2c, 0xed, 0xb3, 0x72, 0x49, 0x88, 0xd6, 0x17, 0x6a, 0xab, 0xf5, 0x34, 0x83, 0x42, 0x1c, 0xdd, 0xa0, 0x61, 0x3f, 0xfe, 0xc5, 0x4, 0x5a, 0x9b, 0xe6, 0x27, 0x79, 0xb8, 0x14, 0xd5, 0x8b, 0x4a, 0x37, 0xf6, 0xa8, 0x69, 0x52, 0x93, 0xcd, 0xc, 0x71, 0xb0, 0xee, 0x2f, 0x98, 0x59, 0x7, 0xc6, 0xbb, 0x7a, 0x24, 0xe5, 0xde, 0x1f, 0x41, 0x80, 0xfd, 0x3c, 0x62, 0xa3, 0x11, 0xd0, 0x8e, 0x4f, 0x32, 0xf3, 0xad, 0x6c, 0x57, 0x96, 0xc8, 0x9, 0x74, 0xb5, 0xeb, 0x2a, 0x9d, 0x5c, 0x2, 0xc3, 0xbe, 0x7f, 0x21, 0xe0, 0xdb, 0x1a, 0x44, 0x85, 0xf8, 0x39, 0x67, 0xa6, 0x1e, 0xdf, 0x81, 0x40, 0x3d, 0xfc, 0xa2, 0x63, 0x58, 0x99, 0xc7, 0x6, 0x7b, 0xba, 0xe4, 0x25, 0x92, 0x53, 0xd, 0xcc, 0xb1, 0x70, 0x2e, 0xef, 0xd4, 0x15, 0x4b, 0x8a, 0xf7, 0x36, 0x68, 0xa9, 0x1b, 0xda, 0x84, 0x45, 0x38, 0xf9, 0xa7, 0x66, 0x5d, 0x9c, 0xc2, 0x3, 0x7e, 0xbf, 0xe1, 0x20, 0x97, 0x56, 0x8, 0xc9, 0xb4, 0x75, 0x2b, 0xea, 0xd1, 0x10, 0x4e, 0x8f, 0xf2, 0x33, 0x6d, 0xac}, [256]uint8{0x0, 0xc2, 0x99, 0x5b, 0x2f, 0xed, 0xb6, 0x74, 0x5e, 0x9c, 0xc7, 0x5, 0x71, 0xb3, 0xe8, 0x2a, 0xbc, 0x7e, 0x25, 0xe7, 0x93, 0x51, 0xa, 0xc8, 0xe2, 0x20, 0x7b, 0xb9, 0xcd, 0xf, 0x54, 0x96, 0x65, 0xa7, 0xfc, 0x3e, 0x4a, 0x88, 0xd3, 0x11, 0x3b, 0xf9, 0xa2, 0x60, 0x14, 0xd6, 0x8d, 0x4f, 0xd9, 0x1b, 0x40, 0x82, 0xf6, 0x34, 0x6f, 0xad, 0x87, 0x45, 0x1e, 0xdc, 0xa8, 0x6a, 0x31, 0xf3, 0xca, 0x8, 0x53, 0x91, 0xe5, 0x27, 0x7c, 0xbe, 0x94, 0x56, 0xd, 0xcf, 0xbb, 0x79, 0x22, 0xe0, 0x76, 0xb4, 0xef, 0x2d, 0x59, 0x9b, 0xc0, 0x2, 0x28, 0xea, 0xb1, 0x73, 0x7, 0xc5, 0x9e, 0x5c, 0xaf, 0x6d, 0x36, 0xf4, 0x80, 0x42, 0x19, 0xdb, 0xf1, 0x33, 0x68, 0xaa, 0xde, 0x1c, 0x47, 0x85, 0x13, 0xd1, 0x8a, 0x48, 0x3c, 0xfe, 0xa5, 0x67, 0x4d, 0x8f, 0xd4, 0x16, 0x62, 0xa0, 0xfb, 0x39, 0x89, 0x4b, 0x10, 0xd2, 0xa6, 0x64, 0x3f, 0xfd, 0xd7, 0x15, 0x4e, 0x8c, 0xf8, 0x3a, 0x61, 0xa3, 0x35, 0xf7, 0xac, 0x6e, 0x1a, 0xd8, 0x83, 0x41, 0x6b, 0xa9, 0xf2, 0x30, 0x44, 0x86, 0xdd, 0x1f, 0xec, 0x2e, 0x75, 0xb7, 0xc3, 0x1, 0x5a, 0x98, 0xb2, 0x70, 0x2b, 0xe9, 0x9d, 0x5f, 0x4, 0xc6, 0x50, 0x92, 0xc9, 0xb, 0x7f, 0xbd, 0xe6, 0x24, 0xe, 0xcc, 0x97, 0x55, 0x21, 0xe3, 0xb8, 0x7a, 0x43, 0x81, 0xda, 0x18, 0x6c, 0xae, 0xf5, 0x37, 0x1d, 0xdf, 0x84, 0x46, 0x32, 0xf0, 0xab, 0x69, 0xff, 0x3d, 0x66, 0xa4, 0xd0, 0x12, 0x49, 0x8b, 0xa1, 0x63, 0x38, 0xfa, 0x8e, 0x4c, 0x17, 0xd5, 0x26, 0xe4, 0xbf, 0x7d, 0x9, 0xcb, 0x90, 0x52, 0x78, 0xba, 0xe1, 0x23, 0x57, 0x95, 0xce, 0xc, 0x9a, 0x58, 0x3, 0xc1, 0xb5, 0x77, 0x2c, 0xee, 0xc4, 0x6, 0x5d, 0x9f, 0xeb, 0x29, 0x72, 0xb0}, [256]uint8{0x0, 0xc3, 0x9b, 0x58, 0x2b, 0xe8, 0xb0, 0x73, 0x56, 0x95, 0xcd, 0xe, 0x7d, 0xbe, 0xe6, 0x25, 0xac, 0x6f, 0x37, 0xf4, 0x87, 0x44, 0x1c, 0xdf, 0xfa, 0x39, 0x61, 0xa2, 0xd1, 0x12, 0x4a, 0x89, 0x45, 0x86, 0xde, 0x1d, 0x6e, 0xad, 0xf5, 0x36, 0x13, 0xd0, 0x88, 0x4b, 0x38, 0xfb, 0xa3, 0x60, 0xe9, 0x2a, 0x72, 0xb1, 0xc2, 0x1, 0x59, 0x9a, 0xbf, 0x7c, 0x24, 0xe7, 0x94, 0x57, 0xf, 0xcc, 0x8a, 0x49, 0x11, 0xd2, 0xa1, 0x62, 0x3a, 0xf9, 0xdc, 0x1f, 0x47, 0x84, 0xf7, 0x34, 0x6c, 0xaf, 0x26, 0xe5, 0xbd, 0x7e, 0xd, 0xce, 0x96, 0x55, 0x70, 0xb3, 0xeb, 0x28, 0x5b, 0x98, 0xc0, 0x3, 0xcf, 0xc, 0x54, 0x97, 0xe4, 0x27, 0x7f, 0xbc, 0x99, 0x5a, 0x2, 0xc1, 0xb2, 0x71, 0x29, 0xea, 0x63, 0xa0, 0xf8, 0x3b, 0x48, 0x8b, 0xd3, 0x10, 0x35, 0xf6, 0xae, 0x6d, 0x1e, 0xdd, 0x85, 0x46, 0x9, 0xca, 0x92, 0x51, 0x22, 0xe1, 0xb9, 0x7a, 0x5f, 0x9c, 0xc4, 0x7, 0x74, 0xb7, 0xef, 0x2c, 0xa5, 0x66, 0x3e, 0xfd, 0x8e, 0x4d, 0x15, 0xd6, 0xf3, 0x30, 0x68, 0xab, 0xd8, 0x1b, 0x43, 0x80, 0x4c, 0x8f, 0xd7, 0x14, 0x67, 0xa4, 0xfc, 0x3f, 0x1a, 0xd9, 0x81, 0x42, 0x31, 0xf2, 0xaa, 0x69, 0xe0, 0x23, 0x7b, 0xb8, 0xcb, 0x8, 0x50, 0x93, 0xb6, 0x75, 0x2d, 0xee, 0x9d, 0x5e, 0x6, 0xc5, 0x83, 0x40, 0x18, 0xdb, 0xa8, 0x6b, 0x33, 0xf0, 0xd5, 0x16, 0x4e, 0x8d, 0xfe, 0x3d, 0x65, 0xa6, 0x2f, 0xec, 0xb4, 0x77, 0x4, 0xc7, 0x9f, 0x5c, 0x79, 0xba, 0xe2, 0x21, 0x52, 0x91, 0xc9, 0xa, 0xc6, 0x5, 0x5d, 0x9e, 0xed, 0x2e, 0x76, 0xb5, 0x90, 0x53, 0xb, 0xc8, 0xbb, 0x78, 0x20, 0xe3, 0x6a, 0xa9, 0xf1, 0x32, 0x41, 0x82, 0xda, 0x19, 0x3c, 0xff, 0xa7, 0x64, 0x17, 0xd4, 0x8c, 0x4f}, [256]uint8{0x0, 0xc4, 0x95, 0x51, 0x37, 0xf3, 0xa2, 0x66, 0x6e, 0xaa, 0xfb, 0x3f, 0x59, 0x9d, 0xcc, 0x8, 0xdc, 0x18, 0x49, 0x8d, 0xeb, 0x2f, 0x7e, 0xba, 0xb2, 0x76, 0x27, 0xe3, 0x85, 0x41, 0x10, 0xd4, 0xa5, 0x61, 0x30, 0xf4, 0x92, 0x56, 0x7, 0xc3, 0xcb, 0xf, 0x5e, 0x9a, 0xfc, 0x38, 0x69, 0xad, 0x79, 0xbd, 0xec, 0x28, 0x4e, 0x8a, 0xdb, 0x1f, 0x17, 0xd3, 0x82, 0x46, 0x20, 0xe4, 0xb5, 0x71, 0x57, 0x93, 0xc2, 0x6, 0x60, 0xa4, 0xf5, 0x31, 0x39, 0xfd, 0xac, 0x68, 0xe, 0xca, 0x9b, 0x5f, 0x8b, 0x4f, 0x1e, 0xda, 0xbc, 0x78, 0x29, 0xed, 0xe5, 0x21, 0x70, 0xb4, 0xd2, 0x16, 0x47, 0x83, 0xf2, 0x36, 0x67, 0xa3, 0xc5, 0x1, 0x50, 0x94, 0x9c, 0x58, 0x9, 0xcd, 0xab, 0x6f, 0x3e, 0xfa, 0x2e, 0xea, 0xbb, 0x7f, 0x19, 0xdd, 0x8c, 0x48, 0x40, 0x84, 0xd5, 0x11, 0x77, 0xb3, 0xe2, 0x26, 0xae, 0x6a, 0x3b, 0xff, 0x99, 0x5d, 0xc, 0xc8, 0xc0, 0x4, 0x55, 0x91, 0xf7, 0x33, 0x62, 0xa6, 0x72, 0xb6, 0xe7, 0x23, 0x45, 0x81, 0xd0, 0x14, 0x1c, 0xd8, 0x89, 0x4d, 0x2b, 0xef, 0xbe, 0x7a, 0xb, 0xcf, 0x9e, 0x5a, 0x3c, 0xf8, 0xa9, 0x6d, 0x65, 0xa1, 0xf0, 0x34, 0x52, 0x96, 0xc7, 0x3, 0xd7, 0x13, 0x42, 0x86, 0xe0, 0x24, 0x75, 0xb1, 0xb9, 0x7d, 0x2c, 0xe8, 0x8e, 0x4a, 0x1b, 0xdf, 0xf9, 0x3d, 0x6c, 0xa8, 0xce, 0xa, 0x5b, 0x9f, 0x97, 0x53, 0x2, 0xc6, 0xa0, 0x64, 0x35, 0xf1, 0x25, 0xe1, 0xb0, 0x74, 0x12, 0xd6, 0x87, 0x43, 0x4b, 0x8f, 0xde, 0x1a, 0x7c, 0xb8, 0xe9, 0x2d, 0x5c, 0x98, 0xc9, 0xd, 0x6b, 0xaf, 0xfe, 0x3a, 0x32, 0xf6, 0xa7, 0x63, 0x5, 0xc1, 0x90, 0x54, 0x80, 0x44, 0x15, 0xd1, 0xb7, 0x73, 0x22, 0xe6, 0xee, 0x2a, 0x7b, 0xbf, 0xd9, 0x1d, 0x4c, 0x88}, [256]uint8{0x0, 0xc5, 0x97, 0x52, 0x33, 0xf6, 0xa4, 0x61, 0x66, 0xa3, 0xf1, 0x34, 0x55, 0x90, 0xc2, 0x7, 0xcc, 0x9, 0x5b, 0x9e, 0xff, 0x3a, 0x68, 0xad, 0xaa, 0x6f, 0x3d, 0xf8, 0x99, 0x5c, 0xe, 0xcb, 0x85, 0x40, 0x12, 0xd7, 0xb6, 0x73, 0x21, 0xe4, 0xe3, 0x26, 0x74, 0xb1, 0xd0, 0x15, 0x47, 0x82, 0x49, 0x8c, 0xde, 0x1b, 0x7a, 0xbf, 0xed, 0x28, 0x2f, 0xea, 0xb8, 0x7d, 0x1c, 0xd9, 0x8b, 0x4e, 0x17, 0xd2, 0x80, 0x45, 0x24, 0xe1, 0xb3, 0x76, 0x71, 0xb4, 0xe6, 0x23, 0x42, 0x87, 0xd5, 0x10, 0xdb, 0x1e, 0x4c, 0x89, 0xe8, 0x2d, 0x7f, 0xba, 0xbd, 0x78, 0x2a, 0xef, 0x8e, 0x4b, 0x19, 0xdc, 0x92, 0x57, 0x5, 0xc0, 0xa1, 0x64, 0x36, 0xf3, 0xf4, 0x31, 0x63, 0xa6, 0xc7, 0x2, 0x50, 0x95, 0x5e, 0x9b, 0xc9, 0xc, 0x6d, 0xa8, 0xfa, 0x3f, 0x38, 0xfd, 0xaf, 0x6a, 0xb, 0xce, 0x9c, 0x59, 0x2e, 0xeb, 0xb9, 0x7c, 0x1d, 0xd8, 0x8a, 0x4f, 0x48, 0x8d, 0xdf, 0x1a, 0x7b, 0xbe, 0xec, 0x29, 0xe2, 0x27, 0x75, 0xb0, 0xd1, 0x14, 0x46, 0x83, 0x84, 0x41, 0x13, 0xd6, 0xb7, 0x72, 0x20, 0xe5, 0xab, 0x6e, 0x3c, 0xf9, 0x98, 0x5d, 0xf, 0xca, 0xcd, 0x8, 0x5a, 0x9f, 0xfe, 0x3b, 0x69, 0xac, 0x67, 0xa2, 0xf0, 0x35, 0x54, 0x91, 0xc3, 0x6, 0x1, 0xc4, 0x96, 0x53, 0x32, 0xf7, 0xa5, 0x60, 0x39, 0xfc, 0xae, 0x6b, 0xa, 0xcf, 0x9d, 0x58, 0x5f, 0x9a, 0xc8, 0xd, 0x6c, 0xa9, 0xfb, 0x3e, 0xf5, 0x30, 0x62, 0xa7, 0xc6, 0x3, 0x51, 0x94, 0x93, 0x56, 0x4, 0xc1, 0xa0, 0x65, 0x37, 0xf2, 0xbc, 0x79, 0x2b, 0xee, 0x8f, 0x4a, 0x18, 0xdd, 0xda, 0x1f, 0x4d, 0x88, 0xe9, 0x2c, 0x7e, 0xbb, 0x70, 0xb5, 0xe7, 0x22, 0x43, 0x86, 0xd4, 0x11, 0x16, 0xd3, 0x81, 0x44, 0x25, 0xe0, 0xb2, 0x77}, [256]uint8{0x0, 0xc6, 0x91, 0x57, 0x3f, 0xf9, 0xae, 0x68, 0x7e, 0xb8, 0xef, 0x29, 0x41, 0x87, 0xd0, 0x16, 0xfc, 0x3a, 0x6d, 0xab, 0xc3, 0x5, 0x52, 0x94, 0x82, 0x44, 0x13, 0xd5, 0xbd, 0x7b, 0x2c, 0xea, 0xe5, 0x23, 0x74, 0xb2, 0xda, 0x1c, 0x4b, 0x8d, 0x9b, 0x5d, 0xa, 0xcc, 0xa4, 0x62, 0x35, 0xf3, 0x19, 0xdf, 0x88, 0x4e, 0x26, 0xe0, 0xb7, 0x71, 0x67, 0xa1, 0xf6, 0x30, 0x58, 0x9e, 0xc9, 0xf, 0xd7, 0x11, 0x46, 0x80, 0xe8, 0x2e, 0x79, 0xbf, 0xa9, 0x6f, 0x38, 0xfe, 0x96, 0x50, 0x7, 0xc1, 0x2b, 0xed, 0xba, 0x7c, 0x14, 0xd2, 0x85, 0x43, 0x55, 0x93, 0xc4, 0x2, 0x6a, 0xac, 0xfb, 0x3d, 0x32, 0xf4, 0xa3, 0x65, 0xd, 0xcb, 0x9c, 0x5a, 0x4c, 0x8a, 0xdd, 0x1b, 0x73, 0xb5, 0xe2, 0x24, 0xce, 0x8, 0x5f, 0x99, 0xf1, 0x37, 0x60, 0xa6, 0xb0, 0x76, 0x21, 0xe7, 0x8f, 0x49, 0x1e, 0xd8, 0xb3, 0x75, 0x22, 0xe4, 0x8c, 0x4a, 0x1d, 0xdb, 0xcd, 0xb, 0x5c, 0x9a, 0xf2, 0x34, 0x63, 0xa5, 0x4f, 0x89, 0xde, 0x18, 0x70, 0xb6, 0xe1, 0x27, 0x31, 0xf7, 0xa0, 0x66, 0xe, 0xc8, 0x9f, 0x59, 0x56, 0x90, 0xc7, 0x1, 0x69, 0xaf, 0xf8, 0x3e, 0x28, 0xee, 0xb9, 0x7f, 0x17, 0xd1, 0x86, 0x40, 0xaa, 0x6c, 0x3b, 0xfd, 0x95, 0x53, 0x4, 0xc2, 0xd4, 0x12, 0x45, 0x83, 0xeb, 0x2d, 0x7a, 0xbc, 0x64, 0xa2, 0xf5, 0x33, 0x5b, 0x9d, 0xca, 0xc, 0x1a, 0xdc, 0x8b, 0x4d, 0x25, 0xe3, 0xb4, 0x72, 0x98, 0x5e, 0x9, 0xcf, 0xa7, 0x61, 0x36, 0xf0, 0xe6, 0x20, 0x77, 0xb1, 0xd9, 0x1f, 0x48, 0x8e, 0x81, 0x47, 0x10, 0xd6, 0xbe, 0x78, 0x2f, 0xe9, 0xff, 0x39, 0x6e, 0xa8, 0xc0, 0x6, 0x51, 0x97, 0x7d, 0xbb, 0xec, 0x2a, 0x42, 0x84, 0xd3, 0x15, 0x3, 0xc5, 0x92, 0x54, 0x3c, 0xfa, 0xad, 0x6b}, [256]uint8{0x0, 0xc7, 0x93, 0x54, 0x3b, 0xfc, 0xa8, 0x6f, 0x76, 0xb1, 0xe5, 0x22, 0x4d, 0x8a, 0xde, 0x19, 0xec, 0x2b, 0x7f, 0xb8, 0xd7, 0x10, 0x44, 0x83, 0x9a, 0x5d, 0x9, 0xce, 0xa1, 0x66, 0x32, 0xf5, 0xc5, 0x2, 0x56, 0x91, 0xfe, 0x39, 0x6d, 0xaa, 0xb3, 0x74, 0x20, 0xe7, 0x88, 0x4f, 0x1b, 0xdc, 0x29, 0xee, 0xba, 0x7d, 0x12, 0xd5, 0x81, 0x46, 0x5f, 0x98, 0xcc, 0xb, 0x64, 0xa3, 0xf7, 0x30, 0x97, 0x50, 0x4, 0xc3, 0xac, 0x6b, 0x3f, 0xf8, 0xe1, 0x26, 0x72, 0xb5, 0xda, 0x1d, 0x49, 0x8e, 0x7b, 0xbc, 0xe8, 0x2f, 0x40, 0x87, 0xd3, 0x14, 0xd, 0xca, 0x9e, 0x59, 0x36, 0xf1, 0xa5, 0x62, 0x52, 0x95, 0xc1, 0x6, 0x69, 0xae, 0xfa, 0x3d, 0x24, 0xe3, 0xb7, 0x70, 0x1f, 0xd8, 0x8c, 0x4b, 0xbe, 0x79, 0x2d, 0xea, 0x85, 0x42, 0x16, 0xd1, 0xc8, 0xf, 0x5b, 0x9c, 0xf3, 0x34, 0x60, 0xa7, 0x33, 0xf4, 0xa0, 0x67, 0x8, 0xcf, 0x9b, 0x5c, 0x45, 0x82, 0xd6, 0x11, 0x7e, 0xb9, 0xed, 0x2a, 0xdf, 0x18, 0x4c, 0x8b, 0xe4, 0x23, 0x77, 0xb0, 0xa9, 0x6e, 0x3a, 0xfd, 0x92, 0x55, 0x1, 0xc6, 0xf6, 0x31, 0x65, 0xa2, 0xcd, 0xa, 0x5e, 0x99, 0x80, 0x47, 0x13, 0xd4, 0xbb, 0x7c, 0x28, 0xef, 0x1a, 0xdd, 0x89, 0x4e, 0x21, 0xe6, 0xb2, 0x75, 0x6c, 0xab, 0xff, 0x38, 0x57, 0x90, 0xc4, 0x3, 0xa4, 0x63, 0x37, 0xf0, 0x9f, 0x58, 0xc, 0xcb, 0xd2, 0x15, 0x41, 0x86, 0xe9, 0x2e, 0x7a, 0xbd, 0x48, 0x8f, 0xdb, 0x1c, 0x73, 0xb4, 0xe0, 0x27, 0x3e, 0xf9, 0xad, 0x6a, 0x5, 0xc2, 0x96, 0x51, 0x61, 0xa6, 0xf2, 0x35, 0x5a, 0x9d, 0xc9, 0xe, 0x17, 0xd0, 0x84, 0x43, 0x2c, 0xeb, 0xbf, 0x78, 0x8d, 0x4a, 0x1e, 0xd9, 0xb6, 0x71, 0x25, 0xe2, 0xfb, 0x3c, 0x68, 0xaf, 0xc0, 0x7, 0x53, 0x94}, [256]uint8{0x0, 0xc8, 0x8d, 0x45, 0x7, 0xcf, 0x8a, 0x42, 0xe, 0xc6, 0x83, 0x4b, 0x9, 0xc1, 0x84, 0x4c, 0x1c, 0xd4, 0x91, 0x59, 0x1b, 0xd3, 0x96, 0x5e, 0x12, 0xda, 0x9f, 0x57, 0x15, 0xdd, 0x98, 0x50, 0x38, 0xf0, 0xb5, 0x7d, 0x3f, 0xf7, 0xb2, 0x7a, 0x36, 0xfe, 0xbb, 0x73, 0x31, 0xf9, 0xbc, 0x74, 0x24, 0xec, 0xa9, 0x61, 0x23, 0xeb, 0xae, 0x66, 0x2a, 0xe2, 0xa7, 0x6f, 0x2d, 0xe5, 0xa0, 0x68, 0x70, 0xb8, 0xfd, 0x35, 0x77, 0xbf, 0xfa, 0x32, 0x7e, 0xb6, 0xf3, 0x3b, 0x79, 0xb1, 0xf4, 0x3c, 0x6c, 0xa4, 0xe1, 0x29, 0x6b, 0xa3, 0xe6, 0x2e, 0x62, 0xaa, 0xef, 0x27, 0x65, 0xad, 0xe8, 0x20, 0x48, 0x80, 0xc5, 0xd, 0x4f, 0x87, 0xc2, 0xa, 0x46, 0x8e, 0xcb, 0x3, 0x41, 0x89, 0xcc, 0x4, 0x54, 0x9c, 0xd9, 0x11, 0x53, 0x9b, 0xde, 0x16, 0x5a, 0x92, 0xd7, 0x1f, 0x5d, 0x95, 0xd0, 0x18, 0xe0, 0x28, 0x6d, 0xa5, 0xe7, 0x2f, 0x6a, 0xa2, 0xee, 0x26, 0x63, 0xab, 0xe9, 0x21, 0x64, 0xac, 0xfc, 0x34, 0x71, 0xb9, 0xfb, 0x33, 0x76, 0xbe, 0xf2, 0x3a, 0x7f, 0xb7, 0xf5, 0x3d, 0x78, 0xb0, 0xd8, 0x10, 0x55, 0x9d, 0xdf, 0x17, 0x52, 0x9a, 0xd6, 0x1e, 0x5b, 0x93, 0xd1, 0x19, 0x5c, 0x94, 0xc4, 0xc, 0x49, 0x81, 0xc3, 0xb, 0x4e, 0x86, 0xca, 0x2, 0x47, 0x8f, 0xcd, 0x5, 0x40, 0x88, 0x90, 0x58, 0x1d, 0xd5, 0x97, 0x5f, 0x1a, 0xd2, 0x9e, 0x56, 0x13, 0xdb, 0x99, 0x51, 0x14, 0xdc, 0x8c, 0x44, 0x1, 0xc9, 0x8b, 0x43, 0x6, 0xce, 0x82, 0x4a, 0xf, 0xc7, 0x85, 0x4d, 0x8, 0xc0, 0xa8, 0x60, 0x25, 0xed, 0xaf, 0x67, 0x22, 0xea, 0xa6, 0x6e, 0x2b, 0xe3, 0xa1, 0x69, 0x2c, 0xe4, 0xb4, 0x7c, 0x39, 0xf1, 0xb3, 0x7b, 0x3e, 0xf6, 0xba, 0x72, 0x37, 0xff, 0xbd, 0x75, 0x30, 0xf8}, [256]uint8{0x0, 0xc9, 0x8f, 0x46, 0x3, 0xca, 0x8c, 0x45, 0x6, 0xcf, 0x89, 0x40, 0x5, 0xcc, 0x8a, 0x43, 0xc, 0xc5, 0x83, 0x4a, 0xf, 0xc6, 0x80, 0x49, 0xa, 0xc3, 0x85, 0x4c, 0x9, 0xc0, 0x86, 0x4f, 0x18, 0xd1, 0x97, 0x5e, 0x1b, 0xd2, 0x94, 0x5d, 0x1e, 0xd7, 0x91, 0x58, 0x1d, 0xd4, 0x92, 0x5b, 0x14, 0xdd, 0x9b, 0x52, 0x17, 0xde, 0x98, 0x51, 0x12, 0xdb, 0x9d, 0x54, 0x11, 0xd8, 0x9e, 0x57, 0x30, 0xf9, 0xbf, 0x76, 0x33, 0xfa, 0xbc, 0x75, 0x36, 0xff, 0xb9, 0x70, 0x35, 0xfc, 0xba, 0x73, 0x3c, 0xf5, 0xb3, 0x7a, 0x3f, 0xf6, 0xb0, 0x79, 0x3a, 0xf3, 0xb5, 0x7c, 0x39, 0xf0, 0xb6, 0x7f, 0x28, 0xe1, 0xa7, 0x6e, 0x2b, 0xe2, 0xa4, 0x6d, 0x2e, 0xe7, 0xa1, 0x68, 0x2d, 0xe4, 0xa2, 0x6b, 0x24, 0xed, 0xab, 0x62, 0x27, 0xee, 0xa8, 0x61, 0x22, 0xeb, 0xad, 0x64, 0x21, 0xe8, 0xae, 0x67, 0x60, 0xa9, 0xef, 0x26, 0x63, 0xaa, 0xec, 0x25, 0x66, 0xaf, 0xe9, 0x20, 0x65, 0xac, 0xea, 0x23, 0x6c, 0xa5, 0xe3, 0x2a, 0x6f, 0xa6, 0xe0, 0x29, 0x6a, 0xa3, 0xe5, 0x2c, 0x69, 0xa0, 0xe6, 0x2f, 0x78, 0xb1, 0xf7, 0x3e, 0x7b, 0xb2, 0xf4, 0x3d, 0x7e, 0xb7, 0xf1, 0x38, 0x7d, 0xb4, 0xf2, 0x3b, 0x74, 0xbd, 0xfb, 0x32, 0x77, 0xbe, 0xf8, 0x31, 0x72, 0xbb, 0xfd, 0x34, 0x71, 0xb8, 0xfe, 0x37, 0x50, 0x99, 0xdf, 0x16, 0x53, 0x9a, 0xdc, 0x15, 0x56, 0x9f, 0xd9, 0x10, 0x55, 0x9c, 0xda, 0x13, 0x5c, 0x95, 0xd3, 0x1a, 0x5f, 0x96, 0xd0, 0x19, 0x5a, 0x93, 0xd5, 0x1c, 0x59, 0x90, 0xd6, 0x1f, 0x48, 0x81, 0xc7, 0xe, 0x4b, 0x82, 0xc4, 0xd, 0x4e, 0x87, 0xc1, 0x8, 0x4d, 0x84, 0xc2, 0xb, 0x44, 0x8d, 0xcb, 0x2, 0x47, 0x8e, 0xc8, 0x1, 0x42, 0x8b, 0xcd, 0x4, 0x41, 0x88, 0xce, 0x7}, [256]uint8{0x0, 0xca, 0x89, 0x43, 0xf, 0xc5, 0x86, 0x4c, 0x1e, 0xd4, 0x97, 0x5d, 0x11, 0xdb, 0x98, 0x52, 0x3c, 0xf6, 0xb5, 0x7f, 0x33, 0xf9, 0xba, 0x70, 0x22, 0xe8, 0xab, 0x61, 0x2d, 0xe7, 0xa4, 0x6e, 0x78, 0xb2, 0xf1, 0x3b, 0x77, 0xbd, 0xfe, 0x34, 0x66, 0xac, 0xef, 0x25, 0x69, 0xa3, 0xe0, 0x2a, 0x44, 0x8e, 0xcd, 0x7, 0x4b, 0x81, 0xc2, 0x8, 0x5a, 0x90, 0xd3, 0x19, 0x55, 0x9f, 0xdc, 0x16, 0xf0, 0x3a, 0x79, 0xb3, 0xff, 0x35, 0x76, 0xbc, 0xee, 0x24, 0x67, 0xad, 0xe1, 0x2b, 0x68, 0xa2, 0xcc, 0x6, 0x45, 0x8f, 0xc3, 0x9, 0x4a, 0x80, 0xd2, 0x18, 0x5b, 0x91, 0xdd, 0x17, 0x54, 0x9e, 0x88, 0x42, 0x1, 0xcb, 0x87, 0x4d, 0xe, 0xc4, 0x96, 0x5c, 0x1f, 0xd5, 0x99, 0x53, 0x10, 0xda, 0xb4, 0x7e, 0x3d, 0xf7, 0xbb, 0x71, 0x32, 0xf8, 0xaa, 0x60, 0x23, 0xe9, 0xa5, 0x6f, 0x2c, 0xe6, 0xfd, 0x37, 0x74, 0xbe, 0xf2, 0x38, 0x7b, 0xb1, 0xe3, 0x29, 0x6a, 0xa0, 0xec, 0x26, 0x65, 0xaf, 0xc1, 0xb, 0x48, 0x82, 0xce, 0x4, 0x47, 0x8d, 0xdf, 0x15, 0x56, 0x9c, 0xd0, 0x1a, 0x59, 0x93, 0x85, 0x4f, 0xc, 0xc6, 0x8a, 0x40, 0x3, 0xc9, 0x9b, 0x51, 0x12, 0xd8, 0x94, 0x5e, 0x1d, 0xd7, 0xb9, 0x73, 0x30, 0xfa, 0xb6, 0x7c, 0x3f, 0xf5, 0xa7, 0x6d, 0x2e, 0xe4, 0xa8, 0x62, 0x21, 0xeb, 0xd, 0xc7, 0x84, 0x4e, 0x2, 0xc8, 0x8b, 0x41, 0x13, 0xd9, 0x9a, 0x50, 0x1c, 0xd6, 0x95, 0x5f, 0x31, 0xfb, 0xb8, 0x72, 0x3e, 0xf4, 0xb7, 0x7d, 0x2f, 0xe5, 0xa6, 0x6c, 0x20, 0xea, 0xa9, 0x63, 0x75, 0xbf, 0xfc, 0x36, 0x7a, 0xb0, 0xf3, 0x39, 0x6b, 0xa1, 0xe2, 0x28, 0x64, 0xae, 0xed, 0x27, 0x49, 0x83, 0xc0, 0xa, 0x46, 0x8c, 0xcf, 0x5, 0x57, 0x9d, 0xde, 0x14, 0x58, 0x92, 0xd1, 0x1b}, [256]uint8{0x0, 0xcb, 0x8b, 0x40, 0xb, 0xc0, 0x80, 0x4b, 0x16, 0xdd, 0x9d, 0x56, 0x1d, 0xd6, 0x96, 0x5d, 0x2c, 0xe7, 0xa7, 0x6c, 0x27, 0xec, 0xac, 0x67, 0x3a, 0xf1, 0xb1, 0x7a, 0x31, 0xfa, 0xba, 0x71, 0x58, 0x93, 0xd3, 0x18, 0x53, 0x98, 0xd8, 0x13, 0x4e, 0x85, 0xc5, 0xe, 0x45, 0x8e, 0xce, 0x5, 0x74, 0xbf, 0xff, 0x34, 0x7f, 0xb4, 0xf4, 0x3f, 0x62, 0xa9, 0xe9, 0x22, 0x69, 0xa2, 0xe2, 0x29, 0xb0, 0x7b, 0x3b, 0xf0, 0xbb, 0x70, 0x30, 0xfb, 0xa6, 0x6d, 0x2d, 0xe6, 0xad, 0x66, 0x26, 0xed, 0x9c, 0x57, 0x17, 0xdc, 0x97, 0x5c, 0x1c, 0xd7, 0x8a, 0x41, 0x1, 0xca, 0x81, 0x4a, 0xa, 0xc1, 0xe8, 0x23, 0x63, 0xa8, 0xe3, 0x28, 0x68, 0xa3, 0xfe, 0x35, 0x75, 0xbe, 0xf5, 0x3e, 0x7e, 0xb5, 0xc4, 0xf, 0x4f, 0x84, 0xcf, 0x4, 0x44, 0x8f, 0xd2, 0x19, 0x59, 0x92, 0xd9, 0x12, 0x52, 0x99, 0x7d, 0xb6, 0xf6, 0x3d, 0x76, 0xbd, 0xfd, 0x36, 0x6b, 0xa0, 0xe0, 0x2b, 0x60, 0xab, 0xeb, 0x20, 0x51, 0x9a, 0xda, 0x11, 0x5a, 0x91, 0xd1, 0x1a, 0x47, 0x8c, 0xcc, 0x7, 0x4c, 0x87, 0xc7, 0xc, 0x25, 0xee, 0xae, 0x65, 0x2e, 0xe5, 0xa5, 0x6e, 0x33, 0xf8, 0xb8, 0x73, 0x38, 0xf3, 0xb3, 0x78, 0x9, 0xc2, 0x82, 0x49, 0x2, 0xc9, 0x89, 0x42, 0x1f, 0xd4, 0x94, 0x5f, 0x14, 0xdf, 0x9f, 0x54, 0xcd, 0x6, 0x46, 0x8d, 0xc6, 0xd, 0x4d, 0x86, 0xdb, 0x10, 0x50, 0x9b, 0xd0, 0x1b, 0x5b, 0x90, 0xe1, 0x2a, 0x6a, 0xa1, 0xea, 0x21, 0x61, 0xaa, 0xf7, 0x3c, 0x7c, 0xb7, 0xfc, 0x37, 0x77, 0xbc, 0x95, 0x5e, 0x1e, 0xd5, 0x9e, 0x55, 0x15, 0xde, 0x83, 0x48, 0x8, 0xc3, 0x88, 0x43, 0x3, 0xc8, 0xb9, 0x72, 0x32, 0xf9, 0xb2, 0x79, 0x39, 0xf2, 0xaf, 0x64, 0x24, 0xef, 0xa4, 0x6f, 0x2f, 0xe4}, [256]uint8{0x0, 0xcc, 0x85, 0x49, 0x17, 0xdb, 0x92, 0x5e, 0x2e, 0xe2, 0xab, 0x67, 0x39, 0xf5, 0xbc, 0x70, 0x5c, 0x90, 0xd9, 0x15, 0x4b, 0x87, 0xce, 0x2, 0x72, 0xbe, 0xf7, 0x3b, 0x65, 0xa9, 0xe0, 0x2c, 0xb8, 0x74, 0x3d, 0xf1, 0xaf, 0x63, 0x2a, 0xe6, 0x96, 0x5a, 0x13, 0xdf, 0x81, 0x4d, 0x4, 0xc8, 0xe4, 0x28, 0x61, 0xad, 0xf3, 0x3f, 0x76, 0xba, 0xca, 0x6, 0x4f, 0x83, 0xdd, 0x11, 0x58, 0x94, 0x6d, 0xa1, 0xe8, 0x24, 0x7a, 0xb6, 0xff, 0x33, 0x43, 0x8f, 0xc6, 0xa, 0x54, 0x98, 0xd1, 0x1d, 0x31, 0xfd, 0xb4, 0x78, 0x26, 0xea, 0xa3, 0x6f, 0x1f, 0xd3, 0x9a, 0x56, 0x8, 0xc4, 0x8d, 0x41, 0xd5, 0x19, 0x50, 0x9c, 0xc2, 0xe, 0x47, 0x8b, 0xfb, 0x37, 0x7e, 0xb2, 0xec, 0x20, 0x69, 0xa5, 0x89, 0x45, 0xc, 0xc0, 0x9e, 0x52, 0x1b, 0xd7, 0xa7, 0x6b, 0x22, 0xee, 0xb0, 0x7c, 0x35, 0xf9, 0xda, 0x16, 0x5f, 0x93, 0xcd, 0x1, 0x48, 0x84, 0xf4, 0x38, 0x71, 0xbd, 0xe3, 0x2f, 0x66, 0xaa, 0x86, 0x4a, 0x3, 0xcf, 0x91, 0x5d, 0x14, 0xd8, 0xa8, 0x64, 0x2d, 0xe1, 0xbf, 0x73, 0x3a, 0xf6, 0x62, 0xae, 0xe7, 0x2b, 0x75, 0xb9, 0xf0, 0x3c, 0x4c, 0x80, 0xc9, 0x5, 0x5b, 0x97, 0xde, 0x12, 0x3e, 0xf2, 0xbb, 0x77, 0x29, 0xe5, 0xac, 0x60, 0x10, 0xdc, 0x95, 0x59, 0x7, 0xcb, 0x82, 0x4e, 0xb7, 0x7b, 0x32, 0xfe, 0xa0, 0x6c, 0x25, 0xe9, 0x99, 0x55, 0x1c, 0xd0, 0x8e, 0x42, 0xb, 0xc7, 0xeb, 0x27, 0x6e, 0xa2, 0xfc, 0x30, 0x79, 0xb5, 0xc5, 0x9, 0x40, 0x8c, 0xd2, 0x1e, 0x57, 0x9b, 0xf, 0xc3, 0x8a, 0x46, 0x18, 0xd4, 0x9d, 0x51, 0x21, 0xed, 0xa4, 0x68, 0x36, 0xfa, 0xb3, 0x7f, 0x53, 0x9f, 0xd6, 0x1a, 0x44, 0x88, 0xc1, 0xd, 0x7d, 0xb1, 0xf8, 0x34, 0x6a, 0xa6, 0xef, 0x23}, [256]uint8{0x0, 0xcd, 0x87, 0x4a, 0x13, 0xde, 0x94, 0x59, 0x26, 0xeb, 0xa1, 0x6c, 0x35, 0xf8, 0xb2, 0x7f, 0x4c, 0x81, 0xcb, 0x6, 0x5f, 0x92, 0xd8, 0x15, 0x6a, 0xa7, 0xed, 0x20, 0x79, 0xb4, 0xfe, 0x33, 0x98, 0x55, 0x1f, 0xd2, 0x8b, 0x46, 0xc, 0xc1, 0xbe, 0x73, 0x39, 0xf4, 0xad, 0x60, 0x2a, 0xe7, 0xd4, 0x19, 0x53, 0x9e, 0xc7, 0xa, 0x40, 0x8d, 0xf2, 0x3f, 0x75, 0xb8, 0xe1, 0x2c, 0x66, 0xab, 0x2d, 0xe0, 0xaa, 0x67, 0x3e, 0xf3, 0xb9, 0x74, 0xb, 0xc6, 0x8c, 0x41, 0x18, 0xd5, 0x9f, 0x52, 0x61, 0xac, 0xe6, 0x2b, 0x72, 0xbf, 0xf5, 0x38, 0x47, 0x8a, 0xc0, 0xd, 0x54, 0x99, 0xd3, 0x1e, 0xb5, 0x78, 0x32, 0xff, 0xa6, 0x6b, 0x21, 0xec, 0x93, 0x5e, 0x14, 0xd9, 0x80, 0x4d, 0x7, 0xca, 0xf9, 0x34, 0x7e, 0xb3, 0xea, 0x27, 0x6d, 0xa0, 0xdf, 0x12, 0x58, 0x95, 0xcc, 0x1, 0x4b, 0x86, 0x5a, 0x97, 0xdd, 0x10, 0x49, 0x84, 0xce, 0x3, 0x7c, 0xb1, 0xfb, 0x36, 0x6f, 0xa2, 0xe8, 0x25, 0x16, 0xdb, 0x91, 0x5c, 0x5, 0xc8, 0x82, 0x4f, 0x30, 0xfd, 0xb7, 0x7a, 0x23, 0xee, 0xa4, 0x69, 0xc2, 0xf, 0x45, 0x88, 0xd1, 0x1c, 0x56, 0x9b, 0xe4, 0x29, 0x63, 0xae, 0xf7, 0x3a, 0x70, 0xbd, 0x8e, 0x43, 0x9, 0xc4, 0x9d, 0x50, 0x1a, 0xd7, 0xa8, 0x65, 0x2f, 0xe2, 0xbb, 0x76, 0x3c, 0xf1, 0x77, 0xba, 0xf0, 0x3d, 0x64, 0xa9, 0xe3, 0x2e, 0x51, 0x9c, 0xd6, 0x1b, 0x42, 0x8f, 0xc5, 0x8, 0x3b, 0xf6, 0xbc, 0x71, 0x28, 0xe5, 0xaf, 0x62, 0x1d, 0xd0, 0x9a, 0x57, 0xe, 0xc3, 0x89, 0x44, 0xef, 0x22, 0x68, 0xa5, 0xfc, 0x31, 0x7b, 0xb6, 0xc9, 0x4, 0x4e, 0x83, 0xda, 0x17, 0x5d, 0x90, 0xa3, 0x6e, 0x24, 0xe9, 0xb0, 0x7d, 0x37, 0xfa, 0x85, 0x48, 0x2, 0xcf, 0x96, 0x5b, 0x11, 0xdc}, [256]uint8{0x0, 0xce, 0x81, 0x4f, 0x1f, 0xd1, 0x9e, 0x50, 0x3e, 0xf0, 0xbf, 0x71, 0x21, 0xef, 0xa0, 0x6e, 0x7c, 0xb2, 0xfd, 0x33, 0x63, 0xad, 0xe2, 0x2c, 0x42, 0x8c, 0xc3, 0xd, 0x5d, 0x93, 0xdc, 0x12, 0xf8, 0x36, 0x79, 0xb7, 0xe7, 0x29, 0x66, 0xa8, 0xc6, 0x8, 0x47, 0x89, 0xd9, 0x17, 0x58, 0x96, 0x84, 0x4a, 0x5, 0xcb, 0x9b, 0x55, 0x1a, 0xd4, 0xba, 0x74, 0x3b, 0xf5, 0xa5, 0x6b, 0x24, 0xea, 0xed, 0x23, 0x6c, 0xa2, 0xf2, 0x3c, 0x73, 0xbd, 0xd3, 0x1d, 0x52, 0x9c, 0xcc, 0x2, 0x4d, 0x83, 0x91, 0x5f, 0x10, 0xde, 0x8e, 0x40, 0xf, 0xc1, 0xaf, 0x61, 0x2e, 0xe0, 0xb0, 0x7e, 0x31, 0xff, 0x15, 0xdb, 0x94, 0x5a, 0xa, 0xc4, 0x8b, 0x45, 0x2b, 0xe5, 0xaa, 0x64, 0x34, 0xfa, 0xb5, 0x7b, 0x69, 0xa7, 0xe8, 0x26, 0x76, 0xb8, 0xf7, 0x39, 0x57, 0x99, 0xd6, 0x18, 0x48, 0x86, 0xc9, 0x7, 0xc7, 0x9, 0x46, 0x88, 0xd8, 0x16, 0x59, 0x97, 0xf9, 0x37, 0x78, 0xb6, 0xe6, 0x28, 0x67, 0xa9, 0xbb, 0x75, 0x3a, 0xf4, 0xa4, 0x6a, 0x25, 0xeb, 0x85, 0x4b, 0x4, 0xca, 0x9a, 0x54, 0x1b, 0xd5, 0x3f, 0xf1, 0xbe, 0x70, 0x20, 0xee, 0xa1, 0x6f, 0x1, 0xcf, 0x80, 0x4e, 0x1e, 0xd0, 0x9f, 0x51, 0x43, 0x8d, 0xc2, 0xc, 0x5c, 0x92, 0xdd, 0x13, 0x7d, 0xb3, 0xfc, 0x32, 0x62, 0xac, 0xe3, 0x2d, 0x2a, 0xe4, 0xab, 0x65, 0x35, 0xfb, 0xb4, 0x7a, 0x14, 0xda, 0x95, 0x5b, 0xb, 0xc5, 0x8a, 0x44, 0x56, 0x98, 0xd7, 0x19, 0x49, 0x87, 0xc8, 0x6, 0x68, 0xa6, 0xe9, 0x27, 0x77, 0xb9, 0xf6, 0x38, 0xd2, 0x1c, 0x53, 0x9d, 0xcd, 0x3, 0x4c, 0x82, 0xec, 0x22, 0x6d, 0xa3, 0xf3, 0x3d, 0x72, 0xbc, 0xae, 0x60, 0x2f, 0xe1, 0xb1, 0x7f, 0x30, 0xfe, 0x90, 0x5e, 0x11, 0xdf, 0x8f, 0x41, 0xe, 0xc0}, [256]uint8{0x0, 0xcf, 0x83, 0x4c, 0x1b, 0xd4, 0x98, 0x57, 0x36, 0xf9, 0xb5, 0x7a, 0x2d, 0xe2, 0xae, 0x61, 0x6c, 0xa3, 0xef, 0x20, 0x77, 0xb8, 0xf4, 0x3b, 0x5a, 0x95, 0xd9, 0x16, 0x41, 0x8e, 0xc2, 0xd, 0xd8, 0x17, 0x5b, 0x94, 0xc3, 0xc, 0x40, 0x8f, 0xee, 0x21, 0x6d, 0xa2, 0xf5, 0x3a, 0x76, 0xb9, 0xb4, 0x7b, 0x37, 0xf8, 0xaf, 0x60, 0x2c, 0xe3, 0x82, 0x4d, 0x1, 0xce, 0x99, 0x56, 0x1a, 0xd5, 0xad, 0x62, 0x2e, 0xe1, 0xb6, 0x79, 0x35, 0xfa, 0x9b, 0x54, 0x18, 0xd7, 0x80, 0x4f, 0x3, 0xcc, 0xc1, 0xe, 0x42, 0x8d, 0xda, 0x15, 0x59, 0x96, 0xf7, 0x38, 0x74, 0xbb, 0xec, 0x23, 0x6f, 0xa0, 0x75, 0xba, 0xf6, 0x39, 0x6e, 0xa1, 0xed, 0x22, 0x43, 0x8c, 0xc0, 0xf, 0x58, 0x97, 0xdb, 0x14, 0x19, 0xd6, 0x9a, 0x55, 0x2, 0xcd, 0x81, 0x4e, 0x2f, 0xe0, 0xac, 0x63, 0x34, 0xfb, 0xb7, 0x78, 0x47, 0x88, 0xc4, 0xb, 0x5c, 0x93, 0xdf, 0x10, 0x71, 0xbe, 0xf2, 0x3d, 0x6a, 0xa5, 0xe9, 0x26, 0x2b, 0xe4, 0xa8, 0x67, 0x30, 0xff, 0xb3, 0x7c, 0x1d, 0xd2, 0x9e, 0x51, 0x6, 0xc9, 0x85, 0x4a, 0x9f, 0x50, 0x1c, 0xd3, 0x84, 0x4b, 0x7, 0xc8, 0xa9, 0x66, 0x2a, 0xe5, 0xb2, 0x7d, 0x31, 0xfe, 0xf3, 0x3c, 0x70, 0xbf, 0xe8, 0x27, 0x6b, 0xa4, 0xc5, 0xa, 0x46, 0x89, 0xde, 0x11, 0x5d, 0x92, 0xea, 0x25, 0x69, 0xa6, 0xf1, 0x3e, 0x72, 0xbd, 0xdc, 0x13, 0x5f, 0x90, 0xc7, 0x8, 0x44, 0x8b, 0x86, 0x49, 0x5, 0xca, 0x9d, 0x52, 0x1e, 0xd1, 0xb0, 0x7f, 0x33, 0xfc, 0xab, 0x64, 0x28, 0xe7, 0x32, 0xfd, 0xb1, 0x7e, 0x29, 0xe6, 0xaa, 0x65, 0x4, 0xcb, 0x87, 0x48, 0x1f, 0xd0, 0x9c, 0x53, 0x5e, 0x91, 0xdd, 0x12, 0x45, 0x8a, 0xc6, 0x9, 0x68, 0xa7, 0xeb, 0x24, 0x73, 0xbc, 0xf0, 0x3f}, [256]uint8{0x0, 0xd0, 0xbd, 0x6d, 0x67, 0xb7, 0xda, 0xa, 0xce, 0x1e, 0x73, 0xa3, 0xa9, 0x79, 0x14, 0xc4, 0x81, 0x51, 0x3c, 0xec, 0xe6, 0x36, 0x5b, 0x8b, 0x4f, 0x9f, 0xf2, 0x22, 0x28, 0xf8, 0x95, 0x45, 0x1f, 0xcf, 0xa2, 0x72, 0x78, 0xa8, 0xc5, 0x15, 0xd1, 0x1, 0x6c, 0xbc, 0xb6, 0x66, 0xb, 0xdb, 0x9e, 0x4e, 0x23, 0xf3, 0xf9, 0x29, 0x44, 0x94, 0x50, 0x80, 0xed, 0x3d, 0x37, 0xe7, 0x8a, 0x5a, 0x3e, 0xee, 0x83, 0x53, 0x59, 0x89, 0xe4, 0x34, 0xf0, 0x20, 0x4d, 0x9d, 0x97, 0x47, 0x2a, 0xfa, 0xbf, 0x6f, 0x2, 0xd2, 0xd8, 0x8, 0x65, 0xb5, 0x71, 0xa1, 0xcc, 0x1c, 0x16, 0xc6, 0xab, 0x7b, 0x21, 0xf1, 0x9c, 0x4c, 0x46, 0x96, 0xfb, 0x2b, 0xef, 0x3f, 0x52, 0x82, 0x88, 0x58, 0x35, 0xe5, 0xa0, 0x70, 0x1d, 0xcd, 0xc7, 0x17, 0x7a, 0xaa, 0x6e, 0xbe, 0xd3, 0x3, 0x9, 0xd9, 0xb4, 0x64, 0x7c, 0xac, 0xc1, 0x11, 0x1b, 0xcb, 0xa6, 0x76, 0xb2, 0x62, 0xf, 0xdf, 0xd5, 0x5, 0x68, 0xb8, 0xfd, 0x2d, 0x40, 0x90, 0x9a, 0x4a, 0x27, 0xf7, 0x33, 0xe3, 0x8e, 0x5e, 0x54, 0x84, 0xe9, 0x39, 0x63, 0xb3, 0xde, 0xe, 0x4, 0xd4, 0xb9, 0x69, 0xad, 0x7d, 0x10, 0xc0, 0xca, 0x1a, 0x77, 0xa7, 0xe2, 0x32, 0x5f, 0x8f, 0x85, 0x55, 0x38, 0xe8, 0x2c, 0xfc, 0x91, 0x41, 0x4b, 0x9b, 0xf6, 0x26, 0x42, 0x92, 0xff, 0x2f, 0x25, 0xf5, 0x98, 0x48, 0x8c, 0x5c, 0x31, 0xe1, 0xeb, 0x3b, 0x56, 0x86, 0xc3, 0x13, 0x7e, 0xae, 0xa4, 0x74, 0x19, 0xc9, 0xd, 0xdd, 0xb0, 0x60, 0x6a, 0xba, 0xd7, 0x7, 0x5d, 0x8d, 0xe0, 0x30, 0x3a, 0xea, 0x87, 0x57, 0x93, 0x43, 0x2e, 0xfe, 0xf4, 0x24, 0x49, 0x99, 0xdc, 0xc, 0x61, 0xb1, 0xbb, 0x6b, 0x6, 0xd6, 0x12, 0xc2, 0xaf, 0x7f, 0x75, 0xa5, 0xc8, 0x18}, [256]uint8{0x0, 0xd1, 0xbf, 0x6e, 0x63, 0xb2, 0xdc, 0xd, 0xc6, 0x17, 0x79, 0xa8, 0xa5, 0x74, 0x1a, 0xcb, 0x91, 0x40, 0x2e, 0xff, 0xf2, 0x23, 0x4d, 0x9c, 0x57, 0x86, 0xe8, 0x39, 0x34, 0xe5, 0x8b, 0x5a, 0x3f, 0xee, 0x80, 0x51, 0x5c, 0x8d, 0xe3, 0x32, 0xf9, 0x28, 0x46, 0x97, 0x9a, 0x4b, 0x25, 0xf4, 0xae, 0x7f, 0x11, 0xc0, 0xcd, 0x1c, 0x72, 0xa3, 0x68, 0xb9, 0xd7, 0x6, 0xb, 0xda, 0xb4, 0x65, 0x7e, 0xaf, 0xc1, 0x10, 0x1d, 0xcc, 0xa2, 0x73, 0xb8, 0x69, 0x7, 0xd6, 0xdb, 0xa, 0x64, 0xb5, 0xef, 0x3e, 0x50, 0x81, 0x8c, 0x5d, 0x33, 0xe2, 0x29, 0xf8, 0x96, 0x47, 0x4a, 0x9b, 0xf5, 0x24, 0x41, 0x90, 0xfe, 0x2f, 0x22, 0xf3, 0x9d, 0x4c, 0x87, 0x56, 0x38, 0xe9, 0xe4, 0x35, 0x5b, 0x8a, 0xd0, 0x1, 0x6f, 0xbe, 0xb3, 0x62, 0xc, 0xdd, 0x16, 0xc7, 0xa9, 0x78, 0x75, 0xa4, 0xca, 0x1b, 0xfc, 0x2d, 0x43, 0x92, 0x9f, 0x4e, 0x20, 0xf1, 0x3a, 0xeb, 0x85, 0x54, 0x59, 0x88, 0xe6, 0x37, 0x6d, 0xbc, 0xd2, 0x3, 0xe, 0xdf, 0xb1, 0x60, 0xab, 0x7a, 0x14, 0xc5, 0xc8, 0x19, 0x77, 0xa6, 0xc3, 0x12, 0x7c, 0xad, 0xa0, 0x71, 0x1f, 0xce, 0x5, 0xd4, 0xba, 0x6b, 0x66, 0xb7, 0xd9, 0x8, 0x52, 0x83, 0xed, 0x3c, 0x31, 0xe0, 0x8e, 0x5f, 0x94, 0x45, 0x2b, 0xfa, 0xf7, 0x26, 0x48, 0x99, 0x82, 0x53, 0x3d, 0xec, 0xe1, 0x30, 0x5e, 0x8f, 0x44, 0x95, 0xfb, 0x2a, 0x27, 0xf6, 0x98, 0x49, 0x13, 0xc2, 0xac, 0x7d, 0x70, 0xa1, 0xcf, 0x1e, 0xd5, 0x4, 0x6a, 0xbb, 0xb6, 0x67, 0x9, 0xd8, 0xbd, 0x6c, 0x2, 0xd3, 0xde, 0xf, 0x61, 0xb0, 0x7b, 0xaa, 0xc4, 0x15, 0x18, 0xc9, 0xa7, 0x76, 0x2c, 0xfd, 0x93, 0x42, 0x4f, 0x9e, 0xf0, 0x21, 0xea, 0x3b, 0x55, 0x84, 0x89, 0x58, 0x36, 0xe7}, [256]uint8{0x0, 0xd2, 0xb9, 0x6b, 0x6f, 0xbd, 0xd6, 0x4, 0xde, 0xc, 0x67, 0xb5, 0xb1, 0x63, 0x8, 0xda, 0xa1, 0x73, 0x18, 0xca, 0xce, 0x1c, 0x77, 0xa5, 0x7f, 0xad, 0xc6, 0x14, 0x10, 0xc2, 0xa9, 0x7b, 0x5f, 0x8d, 0xe6, 0x34, 0x30, 0xe2, 0x89, 0x5b, 0x81, 0x53, 0x38, 0xea, 0xee, 0x3c, 0x57, 0x85, 0xfe, 0x2c, 0x47, 0x95, 0x91, 0x43, 0x28, 0xfa, 0x20, 0xf2, 0x99, 0x4b, 0x4f, 0x9d, 0xf6, 0x24, 0xbe, 0x6c, 0x7, 0xd5, 0xd1, 0x3, 0x68, 0xba, 0x60, 0xb2, 0xd9, 0xb, 0xf, 0xdd, 0xb6, 0x64, 0x1f, 0xcd, 0xa6, 0x74, 0x70, 0xa2, 0xc9, 0x1b, 0xc1, 0x13, 0x78, 0xaa, 0xae, 0x7c, 0x17, 0xc5, 0xe1, 0x33, 0x58, 0x8a, 0x8e, 0x5c, 0x37, 0xe5, 0x3f, 0xed, 0x86, 0x54, 0x50, 0x82, 0xe9, 0x3b, 0x40, 0x92, 0xf9, 0x2b, 0x2f, 0xfd, 0x96, 0x44, 0x9e, 0x4c, 0x27, 0xf5, 0xf1, 0x23, 0x48, 0x9a, 0x61, 0xb3, 0xd8, 0xa, 0xe, 0xdc, 0xb7, 0x65, 0xbf, 0x6d, 0x6, 0xd4, 0xd0, 0x2, 0x69, 0xbb, 0xc0, 0x12, 0x79, 0xab, 0xaf, 0x7d, 0x16, 0xc4, 0x1e, 0xcc, 0xa7, 0x75, 0x71, 0xa3, 0xc8, 0x1a, 0x3e, 0xec, 0x87, 0x55, 0x51, 0x83, 0xe8, 0x3a, 0xe0, 0x32, 0x59, 0x8b, 0x8f, 0x5d, 0x36, 0xe4, 0x9f, 0x4d, 0x26, 0xf4, 0xf0, 0x22, 0x49, 0x9b, 0x41, 0x93, 0xf8, 0x2a, 0x2e, 0xfc, 0x97, 0x45, 0xdf, 0xd, 0x66, 0xb4, 0xb0, 0x62, 0x9, 0xdb, 0x1, 0xd3, 0xb8, 0x6a, 0x6e, 0xbc, 0xd7, 0x5, 0x7e, 0xac, 0xc7, 0x15, 0x11, 0xc3, 0xa8, 0x7a, 0xa0, 0x72, 0x19, 0xcb, 0xcf, 0x1d, 0x76, 0xa4, 0x80, 0x52, 0x39, 0xeb, 0xef, 0x3d, 0x56, 0x84, 0x5e, 0x8c, 0xe7, 0x35, 0x31, 0xe3, 0x88, 0x5a, 0x21, 0xf3, 0x98, 0x4a, 0x4e, 0x9c, 0xf7, 0x25, 0xff, 0x2d, 0x46, 0x94, 0x90, 0x42, 0x29, 0xfb}, [256]uint8{0x0, 0xd3, 0xbb, 0x68, 0x6b, 0xb8, 0xd0, 0x3, 0xd6, 0x5, 0x6d, 0xbe, 0xbd, 0x6e, 0x6, 0xd5, 0xb1, 0x62, 0xa, 0xd9, 0xda, 0x9, 0x61, 0xb2, 0x67, 0xb4, 0xdc, 0xf, 0xc, 0xdf, 0xb7, 0x64, 0x7f, 0xac, 0xc4, 0x17, 0x14, 0xc7, 0xaf, 0x7c, 0xa9, 0x7a, 0x12, 0xc1, 0xc2, 0x11, 0x79, 0xaa, 0xce, 0x1d, 0x75, 0xa6, 0xa5, 0x76, 0x1e, 0xcd, 0x18, 0xcb, 0xa3, 0x70, 0x73, 0xa0, 0xc8, 0x1b, 0xfe, 0x2d, 0x45, 0x96, 0x95, 0x46, 0x2e, 0xfd, 0x28, 0xfb, 0x93, 0x40, 0x43, 0x90, 0xf8, 0x2b, 0x4f, 0x9c, 0xf4, 0x27, 0x24, 0xf7, 0x9f, 0x4c, 0x99, 0x4a, 0x22, 0xf1, 0xf2, 0x21, 0x49, 0x9a, 0x81, 0x52, 0x3a, 0xe9, 0xea, 0x39, 0x51, 0x82, 0x57, 0x84, 0xec, 0x3f, 0x3c, 0xef, 0x87, 0x54, 0x30, 0xe3, 0x8b, 0x58, 0x5b, 0x88, 0xe0, 0x33, 0xe6, 0x35, 0x5d, 0x8e, 0x8d, 0x5e, 0x36, 0xe5, 0xe1, 0x32, 0x5a, 0x89, 0x8a, 0x59, 0x31, 0xe2, 0x37, 0xe4, 0x8c, 0x5f, 0x5c, 0x8f, 0xe7, 0x34, 0x50, 0x83, 0xeb, 0x38, 0x3b, 0xe8, 0x80, 0x53, 0x86, 0x55, 0x3d, 0xee, 0xed, 0x3e, 0x56, 0x85, 0x9e, 0x4d, 0x25, 0xf6, 0xf5, 0x26, 0x4e, 0x9d, 0x48, 0x9b, 0xf3, 0x20, 0x23, 0xf0, 0x98, 0x4b, 0x2f, 0xfc, 0x94, 0x47, 0x44, 0x97, 0xff, 0x2c, 0xf9, 0x2a, 0x42, 0x91, 0x92, 0x41, 0x29, 0xfa, 0x1f, 0xcc, 0xa4, 0x77, 0x74, 0xa7, 0xcf, 0x1c, 0xc9, 0x1a, 0x72, 0xa1, 0xa2, 0x71, 0x19, 0xca, 0xae, 0x7d, 0x15, 0xc6, 0xc5, 0x16, 0x7e, 0xad, 0x78, 0xab, 0xc3, 0x10, 0x13, 0xc0, 0xa8, 0x7b, 0x60, 0xb3, 0xdb, 0x8, 0xb, 0xd8, 0xb0, 0x63, 0xb6, 0x65, 0xd, 0xde, 0xdd, 0xe, 0x66, 0xb5, 0xd1, 0x2, 0x6a, 0xb9, 0xba, 0x69, 0x1, 0xd2, 0x7, 0xd4, 0xbc, 0x6f, 0x6c, 0xbf, 0xd7, 0x4}, [256]uint8{0x0, 0xd4, 0xb5, 0x61, 0x77, 0xa3, 0xc2, 0x16, 0xee, 0x3a, 0x5b, 0x8f, 0x99, 0x4d, 0x2c, 0xf8, 0xc1, 0x15, 0x74, 0xa0, 0xb6, 0x62, 0x3, 0xd7, 0x2f, 0xfb, 0x9a, 0x4e, 0x58, 0x8c, 0xed, 0x39, 0x9f, 0x4b, 0x2a, 0xfe, 0xe8, 0x3c, 0x5d, 0x89, 0x71, 0xa5, 0xc4, 0x10, 0x6, 0xd2, 0xb3, 0x67, 0x5e, 0x8a, 0xeb, 0x3f, 0x29, 0xfd, 0x9c, 0x48, 0xb0, 0x64, 0x5, 0xd1, 0xc7, 0x13, 0x72, 0xa6, 0x23, 0xf7, 0x96, 0x42, 0x54, 0x80, 0xe1, 0x35, 0xcd, 0x19, 0x78, 0xac, 0xba, 0x6e, 0xf, 0xdb, 0xe2, 0x36, 0x57, 0x83, 0x95, 0x41, 0x20, 0xf4, 0xc, 0xd8, 0xb9, 0x6d, 0x7b, 0xaf, 0xce, 0x1a, 0xbc, 0x68, 0x9, 0xdd, 0xcb, 0x1f, 0x7e, 0xaa, 0x52, 0x86, 0xe7, 0x33, 0x25, 0xf1, 0x90, 0x44, 0x7d, 0xa9, 0xc8, 0x1c, 0xa, 0xde, 0xbf, 0x6b, 0x93, 0x47, 0x26, 0xf2, 0xe4, 0x30, 0x51, 0x85, 0x46, 0x92, 0xf3, 0x27, 0x31, 0xe5, 0x84, 0x50, 0xa8, 0x7c, 0x1d, 0xc9, 0xdf, 0xb, 0x6a, 0xbe, 0x87, 0x53, 0x32, 0xe6, 0xf0, 0x24, 0x45, 0x91, 0x69, 0xbd, 0xdc, 0x8, 0x1e, 0xca, 0xab, 0x7f, 0xd9, 0xd, 0x6c, 0xb8, 0xae, 0x7a, 0x1b, 0xcf, 0x37, 0xe3, 0x82, 0x56, 0x40, 0x94, 0xf5, 0x21, 0x18, 0xcc, 0xad, 0x79, 0x6f, 0xbb, 0xda, 0xe, 0xf6, 0x22, 0x43, 0x97, 0x81, 0x55, 0x34, 0xe0, 0x65, 0xb1, 0xd0, 0x4, 0x12, 0xc6, 0xa7, 0x73, 0x8b, 0x5f, 0x3e, 0xea, 0xfc, 0x28, 0x49, 0x9d, 0xa4, 0x70, 0x11, 0xc5, 0xd3, 0x7, 0x66, 0xb2, 0x4a, 0x9e, 0xff, 0x2b, 0x3d, 0xe9, 0x88, 0x5c, 0xfa, 0x2e, 0x4f, 0x9b, 0x8d, 0x59, 0x38, 0xec, 0x14, 0xc0, 0xa1, 0x75, 0x63, 0xb7, 0xd6, 0x2, 0x3b, 0xef, 0x8e, 0x5a, 0x4c, 0x98, 0xf9, 0x2d, 0xd5, 0x1, 0x60, 0xb4, 0xa2, 0x76, 0x17, 0xc3}, [256]uint8{0x0, 0xd5, 0xb7, 0x62, 0x73, 0xa6, 0xc4, 0x11, 0xe6, 0x33, 0x51, 0x84, 0x95, 0x40, 0x22, 0xf7, 0xd1, 0x4, 0x66, 0xb3, 0xa2, 0x77, 0x15, 0xc0, 0x37, 0xe2, 0x80, 0x55, 0x44, 0x91, 0xf3, 0x26, 0xbf, 0x6a, 0x8, 0xdd, 0xcc, 0x19, 0x7b, 0xae, 0x59, 0x8c, 0xee, 0x3b, 0x2a, 0xff, 0x9d, 0x48, 0x6e, 0xbb, 0xd9, 0xc, 0x1d, 0xc8, 0xaa, 0x7f, 0x88, 0x5d, 0x3f, 0xea, 0xfb, 0x2e, 0x4c, 0x99, 0x63, 0xb6, 0xd4, 0x1, 0x10, 0xc5, 0xa7, 0x72, 0x85, 0x50, 0x32, 0xe7, 0xf6, 0x23, 0x41, 0x94, 0xb2, 0x67, 0x5, 0xd0, 0xc1, 0x14, 0x76, 0xa3, 0x54, 0x81, 0xe3, 0x36, 0x27, 0xf2, 0x90, 0x45, 0xdc, 0x9, 0x6b, 0xbe, 0xaf, 0x7a, 0x18, 0xcd, 0x3a, 0xef, 0x8d, 0x58, 0x49, 0x9c, 0xfe, 0x2b, 0xd, 0xd8, 0xba, 0x6f, 0x7e, 0xab, 0xc9, 0x1c, 0xeb, 0x3e, 0x5c, 0x89, 0x98, 0x4d, 0x2f, 0xfa, 0xc6, 0x13, 0x71, 0xa4, 0xb5, 0x60, 0x2, 0xd7, 0x20, 0xf5, 0x97, 0x42, 0x53, 0x86, 0xe4, 0x31, 0x17, 0xc2, 0xa0, 0x75, 0x64, 0xb1, 0xd3, 0x6, 0xf1, 0x24, 0x46, 0x93, 0x82, 0x57, 0x35, 0xe0, 0x79, 0xac, 0xce, 0x1b, 0xa, 0xdf, 0xbd, 0x68, 0x9f, 0x4a, 0x28, 0xfd, 0xec, 0x39, 0x5b, 0x8e, 0xa8, 0x7d, 0x1f, 0xca, 0xdb, 0xe, 0x6c, 0xb9, 0x4e, 0x9b, 0xf9, 0x2c, 0x3d, 0xe8, 0x8a, 0x5f, 0xa5, 0x70, 0x12, 0xc7, 0xd6, 0x3, 0x61, 0xb4, 0x43, 0x96, 0xf4, 0x21, 0x30, 0xe5, 0x87, 0x52, 0x74, 0xa1, 0xc3, 0x16, 0x7, 0xd2, 0xb0, 0x65, 0x92, 0x47, 0x25, 0xf0, 0xe1, 0x34, 0x56, 0x83, 0x1a, 0xcf, 0xad, 0x78, 0x69, 0xbc, 0xde, 0xb, 0xfc, 0x29, 0x4b, 0x9e, 0x8f, 0x5a, 0x38, 0xed, 0xcb, 0x1e, 0x7c, 0xa9, 0xb8, 0x6d, 0xf, 0xda, 0x2d, 0xf8, 0x9a, 0x4f, 0x5e, 0x8b, 0xe9, 0x3c}, [256]uint8{0x0, 0xd6, 0xb1, 0x67, 0x7f, 0xa9, 0xce, 0x18, 0xfe, 0x28, 0x4f, 0x99, 0x81, 0x57, 0x30, 0xe6, 0xe1, 0x37, 0x50, 0x86, 0x9e, 0x48, 0x2f, 0xf9, 0x1f, 0xc9, 0xae, 0x78, 0x60, 0xb6, 0xd1, 0x7, 0xdf, 0x9, 0x6e, 0xb8, 0xa0, 0x76, 0x11, 0xc7, 0x21, 0xf7, 0x90, 0x46, 0x5e, 0x88, 0xef, 0x39, 0x3e, 0xe8, 0x8f, 0x59, 0x41, 0x97, 0xf0, 0x26, 0xc0, 0x16, 0x71, 0xa7, 0xbf, 0x69, 0xe, 0xd8, 0xa3, 0x75, 0x12, 0xc4, 0xdc, 0xa, 0x6d, 0xbb, 0x5d, 0x8b, 0xec, 0x3a, 0x22, 0xf4, 0x93, 0x45, 0x42, 0x94, 0xf3, 0x25, 0x3d, 0xeb, 0x8c, 0x5a, 0xbc, 0x6a, 0xd, 0xdb, 0xc3, 0x15, 0x72, 0xa4, 0x7c, 0xaa, 0xcd, 0x1b, 0x3, 0xd5, 0xb2, 0x64, 0x82, 0x54, 0x33, 0xe5, 0xfd, 0x2b, 0x4c, 0x9a, 0x9d, 0x4b, 0x2c, 0xfa, 0xe2, 0x34, 0x53, 0x85, 0x63, 0xb5, 0xd2, 0x4, 0x1c, 0xca, 0xad, 0x7b, 0x5b, 0x8d, 0xea, 0x3c, 0x24, 0xf2, 0x95, 0x43, 0xa5, 0x73, 0x14, 0xc2, 0xda, 0xc, 0x6b, 0xbd, 0xba, 0x6c, 0xb, 0xdd, 0xc5, 0x13, 0x74, 0xa2, 0x44, 0x92, 0xf5, 0x23, 0x3b, 0xed, 0x8a, 0x5c, 0x84, 0x52, 0x35, 0xe3, 0xfb, 0x2d, 0x4a, 0x9c, 0x7a, 0xac, 0xcb, 0x1d, 0x5, 0xd3, 0xb4, 0x62, 0x65, 0xb3, 0xd4, 0x2, 0x1a, 0xcc, 0xab, 0x7d, 0x9b, 0x4d, 0x2a, 0xfc, 0xe4, 0x32, 0x55, 0x83, 0xf8, 0x2e, 0x49, 0x9f, 0x87, 0x51, 0x36, 0xe0, 0x6, 0xd0, 0xb7, 0x61, 0x79, 0xaf, 0xc8, 0x1e, 0x19, 0xcf, 0xa8, 0x7e, 0x66, 0xb0, 0xd7, 0x1, 0xe7, 0x31, 0x56, 0x80, 0x98, 0x4e, 0x29, 0xff, 0x27, 0xf1, 0x96, 0x40, 0x58, 0x8e, 0xe9, 0x3f, 0xd9, 0xf, 0x68, 0xbe, 0xa6, 0x70, 0x17, 0xc1, 0xc6, 0x10, 0x77, 0xa1, 0xb9, 0x6f, 0x8, 0xde, 0x38, 0xee, 0x89, 0x5f, 0x47, 0x91, 0xf6, 0x20}, [256]uint8{0x0, 0xd7, 0xb3, 0x64, 0x7b, 0xac, 0xc8, 0x1f, 0xf6, 0x21, 0x45, 0x92, 0x8d, 0x5a, 0x3e, 0xe9, 0xf1, 0x26, 0x42, 0x95, 0x8a, 0x5d, 0x39, 0xee, 0x7, 0xd0, 0xb4, 0x63, 0x7c, 0xab, 0xcf, 0x18, 0xff, 0x28, 0x4c, 0x9b, 0x84, 0x53, 0x37, 0xe0, 0x9, 0xde, 0xba, 0x6d, 0x72, 0xa5, 0xc1, 0x16, 0xe, 0xd9, 0xbd, 0x6a, 0x75, 0xa2, 0xc6, 0x11, 0xf8, 0x2f, 0x4b, 0x9c, 0x83, 0x54, 0x30, 0xe7, 0xe3, 0x34, 0x50, 0x87, 0x98, 0x4f, 0x2b, 0xfc, 0x15, 0xc2, 0xa6, 0x71, 0x6e, 0xb9, 0xdd, 0xa, 0x12, 0xc5, 0xa1, 0x76, 0x69, 0xbe, 0xda, 0xd, 0xe4, 0x33, 0x57, 0x80, 0x9f, 0x48, 0x2c, 0xfb, 0x1c, 0xcb, 0xaf, 0x78, 0x67, 0xb0, 0xd4, 0x3, 0xea, 0x3d, 0x59, 0x8e, 0x91, 0x46, 0x22, 0xf5, 0xed, 0x3a, 0x5e, 0x89, 0x96, 0x41, 0x25, 0xf2, 0x1b, 0xcc, 0xa8, 0x7f, 0x60, 0xb7, 0xd3, 0x4, 0xdb, 0xc, 0x68, 0xbf, 0xa0, 0x77, 0x13, 0xc4, 0x2d, 0xfa, 0x9e, 0x49, 0x56, 0x81, 0xe5, 0x32, 0x2a, 0xfd, 0x99, 0x4e, 0x51, 0x86, 0xe2, 0x35, 0xdc, 0xb, 0x6f, 0xb8, 0xa7, 0x70, 0x14, 0xc3, 0x24, 0xf3, 0x97, 0x40, 0x5f, 0x88, 0xec, 0x3b, 0xd2, 0x5, 0x61, 0xb6, 0xa9, 0x7e, 0x1a, 0xcd, 0xd5, 0x2, 0x66, 0xb1, 0xae, 0x79, 0x1d, 0xca, 0x23, 0xf4, 0x90, 0x47, 0x58, 0x8f, 0xeb, 0x3c, 0x38, 0xef, 0x8b, 0x5c, 0x43, 0x94, 0xf0, 0x27, 0xce, 0x19, 0x7d, 0xaa, 0xb5, 0x62, 0x6, 0xd1, 0xc9, 0x1e, 0x7a, 0xad, 0xb2, 0x65, 0x1, 0xd6, 0x3f, 0xe8, 0x8c, 0x5b, 0x44, 0x93, 0xf7, 0x20, 0xc7, 0x10, 0x74, 0xa3, 0xbc, 0x6b, 0xf, 0xd8, 0x31, 0xe6, 0x82, 0x55, 0x4a, 0x9d, 0xf9, 0x2e, 0x36, 0xe1, 0x85, 0x52, 0x4d, 0x9a, 0xfe, 0x29, 0xc0, 0x17, 0x73, 0xa4, 0xbb, 0x6c, 0x8, 0xdf}, [256]uint8{0x0, 0xd8, 0xad, 0x75, 0x47, 0x9f, 0xea, 0x32, 0x8e, 0x56, 0x23, 0xfb, 0xc9, 0x11, 0x64, 0xbc, 0x1, 0xd9, 0xac, 0x74, 0x46, 0x9e, 0xeb, 0x33, 0x8f, 0x57, 0x22, 0xfa, 0xc8, 0x10, 0x65, 0xbd, 0x2, 0xda, 0xaf, 0x77, 0x45, 0x9d, 0xe8, 0x30, 0x8c, 0x54, 0x21, 0xf9, 0xcb, 0x13, 0x66, 0xbe, 0x3, 0xdb, 0xae, 0x76, 0x44, 0x9c, 0xe9, 0x31, 0x8d, 0x55, 0x20, 0xf8, 0xca, 0x12, 0x67, 0xbf, 0x4, 0xdc, 0xa9, 0x71, 0x43, 0x9b, 0xee, 0x36, 0x8a, 0x52, 0x27, 0xff, 0xcd, 0x15, 0x60, 0xb8, 0x5, 0xdd, 0xa8, 0x70, 0x42, 0x9a, 0xef, 0x37, 0x8b, 0x53, 0x26, 0xfe, 0xcc, 0x14, 0x61, 0xb9, 0x6, 0xde, 0xab, 0x73, 0x41, 0x99, 0xec, 0x34, 0x88, 0x50, 0x25, 0xfd, 0xcf, 0x17, 0x62, 0xba, 0x7, 0xdf, 0xaa, 0x72, 0x40, 0x98, 0xed, 0x35, 0x89, 0x51, 0x24, 0xfc, 0xce, 0x16, 0x63, 0xbb, 0x8, 0xd0, 0xa5, 0x7d, 0x4f, 0x97, 0xe2, 0x3a, 0x86, 0x5e, 0x2b, 0xf3, 0xc1, 0x19, 0x6c, 0xb4, 0x9, 0xd1, 0xa4, 0x7c, 0x4e, 0x96, 0xe3, 0x3b, 0x87, 0x5f, 0x2a, 0xf2, 0xc0, 0x18, 0x6d, 0xb5, 0xa, 0xd2, 0xa7, 0x7f, 0x4d, 0x95, 0xe0, 0x38, 0x84, 0x5c, 0x29, 0xf1, 0xc3, 0x1b, 0x6e, 0xb6, 0xb, 0xd3, 0xa6, 0x7e, 0x4c, 0x94, 0xe1, 0x39, 0x85, 0x5d, 0x28, 0xf0, 0xc2, 0x1a, 0x6f, 0xb7, 0xc, 0xd4, 0xa1, 0x79, 0x4b, 0x93, 0xe6, 0x3e, 0x82, 0x5a, 0x2f, 0xf7, 0xc5, 0x1d, 0x68, 0xb0, 0xd, 0xd5, 0xa0, 0x78, 0x4a, 0x92, 0xe7, 0x3f, 0x83, 0x5b, 0x2e, 0xf6, 0xc4, 0x1c, 0x69, 0xb1, 0xe, 0xd6, 0xa3, 0x7b, 0x49, 0x91, 0xe4, 0x3c, 0x80, 0x58, 0x2d, 0xf5, 0xc7, 0x1f, 0x6a, 0xb2, 0xf, 0xd7, 0xa2, 0x7a, 0x48, 0x90, 0xe5, 0x3d, 0x81, 0x59, 0x2c, 0xf4, 0xc6, 0x1e, 0x6b, 0xb3}, [256]uint8{0x0, 0xd9, 0xaf, 0x76, 0x43, 0x9a, 0xec, 0x35, 0x86, 0x5f, 0x29, 0xf0, 0xc5, 0x1c, 0x6a, 0xb3, 0x11, 0xc8, 0xbe, 0x67, 0x52, 0x8b, 0xfd, 0x24, 0x97, 0x4e, 0x38, 0xe1, 0xd4, 0xd, 0x7b, 0xa2, 0x22, 0xfb, 0x8d, 0x54, 0x61, 0xb8, 0xce, 0x17, 0xa4, 0x7d, 0xb, 0xd2, 0xe7, 0x3e, 0x48, 0x91, 0x33, 0xea, 0x9c, 0x45, 0x70, 0xa9, 0xdf, 0x6, 0xb5, 0x6c, 0x1a, 0xc3, 0xf6, 0x2f, 0x59, 0x80, 0x44, 0x9d, 0xeb, 0x32, 0x7, 0xde, 0xa8, 0x71, 0xc2, 0x1b, 0x6d, 0xb4, 0x81, 0x58, 0x2e, 0xf7, 0x55, 0x8c, 0xfa, 0x23, 0x16, 0xcf, 0xb9, 0x60, 0xd3, 0xa, 0x7c, 0xa5, 0x90, 0x49, 0x3f, 0xe6, 0x66, 0xbf, 0xc9, 0x10, 0x25, 0xfc, 0x8a, 0x53, 0xe0, 0x39, 0x4f, 0x96, 0xa3, 0x7a, 0xc, 0xd5, 0x77, 0xae, 0xd8, 0x1, 0x34, 0xed, 0x9b, 0x42, 0xf1, 0x28, 0x5e, 0x87, 0xb2, 0x6b, 0x1d, 0xc4, 0x88, 0x51, 0x27, 0xfe, 0xcb, 0x12, 0x64, 0xbd, 0xe, 0xd7, 0xa1, 0x78, 0x4d, 0x94, 0xe2, 0x3b, 0x99, 0x40, 0x36, 0xef, 0xda, 0x3, 0x75, 0xac, 0x1f, 0xc6, 0xb0, 0x69, 0x5c, 0x85, 0xf3, 0x2a, 0xaa, 0x73, 0x5, 0xdc, 0xe9, 0x30, 0x46, 0x9f, 0x2c, 0xf5, 0x83, 0x5a, 0x6f, 0xb6, 0xc0, 0x19, 0xbb, 0x62, 0x14, 0xcd, 0xf8, 0x21, 0x57, 0x8e, 0x3d, 0xe4, 0x92, 0x4b, 0x7e, 0xa7, 0xd1, 0x8, 0xcc, 0x15, 0x63, 0xba, 0x8f, 0x56, 0x20, 0xf9, 0x4a, 0x93, 0xe5, 0x3c, 0x9, 0xd0, 0xa6, 0x7f, 0xdd, 0x4, 0x72, 0xab, 0x9e, 0x47, 0x31, 0xe8, 0x5b, 0x82, 0xf4, 0x2d, 0x18, 0xc1, 0xb7, 0x6e, 0xee, 0x37, 0x41, 0x98, 0xad, 0x74, 0x2, 0xdb, 0x68, 0xb1, 0xc7, 0x1e, 0x2b, 0xf2, 0x84, 0x5d, 0xff, 0x26, 0x50, 0x89, 0xbc, 0x65, 0x13, 0xca, 0x79, 0xa0, 0xd6, 0xf, 0x3a, 0xe3, 0x95, 0x4c}, [256]uint8{0x0, 0xda, 0xa9, 0x73, 0x4f, 0x95, 0xe6, 0x3c, 0x9e, 0x44, 0x37, 0xed, 0xd1, 0xb, 0x78, 0xa2, 0x21, 0xfb, 0x88, 0x52, 0x6e, 0xb4, 0xc7, 0x1d, 0xbf, 0x65, 0x16, 0xcc, 0xf0, 0x2a, 0x59, 0x83, 0x42, 0x98, 0xeb, 0x31, 0xd, 0xd7, 0xa4, 0x7e, 0xdc, 0x6, 0x75, 0xaf, 0x93, 0x49, 0x3a, 0xe0, 0x63, 0xb9, 0xca, 0x10, 0x2c, 0xf6, 0x85, 0x5f, 0xfd, 0x27, 0x54, 0x8e, 0xb2, 0x68, 0x1b, 0xc1, 0x84, 0x5e, 0x2d, 0xf7, 0xcb, 0x11, 0x62, 0xb8, 0x1a, 0xc0, 0xb3, 0x69, 0x55, 0x8f, 0xfc, 0x26, 0xa5, 0x7f, 0xc, 0xd6, 0xea, 0x30, 0x43, 0x99, 0x3b, 0xe1, 0x92, 0x48, 0x74, 0xae, 0xdd, 0x7, 0xc6, 0x1c, 0x6f, 0xb5, 0x89, 0x53, 0x20, 0xfa, 0x58, 0x82, 0xf1, 0x2b, 0x17, 0xcd, 0xbe, 0x64, 0xe7, 0x3d, 0x4e, 0x94, 0xa8, 0x72, 0x1, 0xdb, 0x79, 0xa3, 0xd0, 0xa, 0x36, 0xec, 0x9f, 0x45, 0x15, 0xcf, 0xbc, 0x66, 0x5a, 0x80, 0xf3, 0x29, 0x8b, 0x51, 0x22, 0xf8, 0xc4, 0x1e, 0x6d, 0xb7, 0x34, 0xee, 0x9d, 0x47, 0x7b, 0xa1, 0xd2, 0x8, 0xaa, 0x70, 0x3, 0xd9, 0xe5, 0x3f, 0x4c, 0x96, 0x57, 0x8d, 0xfe, 0x24, 0x18, 0xc2, 0xb1, 0x6b, 0xc9, 0x13, 0x60, 0xba, 0x86, 0x5c, 0x2f, 0xf5, 0x76, 0xac, 0xdf, 0x5, 0x39, 0xe3, 0x90, 0x4a, 0xe8, 0x32, 0x41, 0x9b, 0xa7, 0x7d, 0xe, 0xd4, 0x91, 0x4b, 0x38, 0xe2, 0xde, 0x4, 0x77, 0xad, 0xf, 0xd5, 0xa6, 0x7c, 0x40, 0x9a, 0xe9, 0x33, 0xb0, 0x6a, 0x19, 0xc3, 0xff, 0x25, 0x56, 0x8c, 0x2e, 0xf4, 0x87, 0x5d, 0x61, 0xbb, 0xc8, 0x12, 0xd3, 0x9, 0x7a, 0xa0, 0x9c, 0x46, 0x35, 0xef, 0x4d, 0x97, 0xe4, 0x3e, 0x2, 0xd8, 0xab, 0x71, 0xf2, 0x28, 0x5b, 0x81, 0xbd, 0x67, 0x14, 0xce, 0x6c, 0xb6, 0xc5, 0x1f, 0x23, 0xf9, 0x8a, 0x50}, [256]uint8{0x0, 0xdb, 0xab, 0x70, 0x4b, 0x90, 0xe0, 0x3b, 0x96, 0x4d, 0x3d, 0xe6, 0xdd, 0x6, 0x76, 0xad, 0x31, 0xea, 0x9a, 0x41, 0x7a, 0xa1, 0xd1, 0xa, 0xa7, 0x7c, 0xc, 0xd7, 0xec, 0x37, 0x47, 0x9c, 0x62, 0xb9, 0xc9, 0x12, 0x29, 0xf2, 0x82, 0x59, 0xf4, 0x2f, 0x5f, 0x84, 0xbf, 0x64, 0x14, 0xcf, 0x53, 0x88, 0xf8, 0x23, 0x18, 0xc3, 0xb3, 0x68, 0xc5, 0x1e, 0x6e, 0xb5, 0x8e, 0x55, 0x25, 0xfe, 0xc4, 0x1f, 0x6f, 0xb4, 0x8f, 0x54, 0x24, 0xff, 0x52, 0x89, 0xf9, 0x22, 0x19, 0xc2, 0xb2, 0x69, 0xf5, 0x2e, 0x5e, 0x85, 0xbe, 0x65, 0x15, 0xce, 0x63, 0xb8, 0xc8, 0x13, 0x28, 0xf3, 0x83, 0x58, 0xa6, 0x7d, 0xd, 0xd6, 0xed, 0x36, 0x46, 0x9d, 0x30, 0xeb, 0x9b, 0x40, 0x7b, 0xa0, 0xd0, 0xb, 0x97, 0x4c, 0x3c, 0xe7, 0xdc, 0x7, 0x77, 0xac, 0x1, 0xda, 0xaa, 0x71, 0x4a, 0x91, 0xe1, 0x3a, 0x95, 0x4e, 0x3e, 0xe5, 0xde, 0x5, 0x75, 0xae, 0x3, 0xd8, 0xa8, 0x73, 0x48, 0x93, 0xe3, 0x38, 0xa4, 0x7f, 0xf, 0xd4, 0xef, 0x34, 0x44, 0x9f, 0x32, 0xe9, 0x99, 0x42, 0x79, 0xa2, 0xd2, 0x9, 0xf7, 0x2c, 0x5c, 0x87, 0xbc, 0x67, 0x17, 0xcc, 0x61, 0xba, 0xca, 0x11, 0x2a, 0xf1, 0x81, 0x5a, 0xc6, 0x1d, 0x6d, 0xb6, 0x8d, 0x56, 0x26, 0xfd, 0x50, 0x8b, 0xfb, 0x20, 0x1b, 0xc0, 0xb0, 0x6b, 0x51, 0x8a, 0xfa, 0x21, 0x1a, 0xc1, 0xb1, 0x6a, 0xc7, 0x1c, 0x6c, 0xb7, 0x8c, 0x57, 0x27, 0xfc, 0x60, 0xbb, 0xcb, 0x10, 0x2b, 0xf0, 0x80, 0x5b, 0xf6, 0x2d, 0x5d, 0x86, 0xbd, 0x66, 0x16, 0xcd, 0x33, 0xe8, 0x98, 0x43, 0x78, 0xa3, 0xd3, 0x8, 0xa5, 0x7e, 0xe, 0xd5, 0xee, 0x35, 0x45, 0x9e, 0x2, 0xd9, 0xa9, 0x72, 0x49, 0x92, 0xe2, 0x39, 0x94, 0x4f, 0x3f, 0xe4, 0xdf, 0x4, 0x74, 0xaf}, [256]uint8{0x0, 0xdc, 0xa5, 0x79, 0x57, 0x8b, 0xf2, 0x2e, 0xae, 0x72, 0xb, 0xd7, 0xf9, 0x25, 0x5c, 0x80, 0x41, 0x9d, 0xe4, 0x38, 0x16, 0xca, 0xb3, 0x6f, 0xef, 0x33, 0x4a, 0x96, 0xb8, 0x64, 0x1d, 0xc1, 0x82, 0x5e, 0x27, 0xfb, 0xd5, 0x9, 0x70, 0xac, 0x2c, 0xf0, 0x89, 0x55, 0x7b, 0xa7, 0xde, 0x2, 0xc3, 0x1f, 0x66, 0xba, 0x94, 0x48, 0x31, 0xed, 0x6d, 0xb1, 0xc8, 0x14, 0x3a, 0xe6, 0x9f, 0x43, 0x19, 0xc5, 0xbc, 0x60, 0x4e, 0x92, 0xeb, 0x37, 0xb7, 0x6b, 0x12, 0xce, 0xe0, 0x3c, 0x45, 0x99, 0x58, 0x84, 0xfd, 0x21, 0xf, 0xd3, 0xaa, 0x76, 0xf6, 0x2a, 0x53, 0x8f, 0xa1, 0x7d, 0x4, 0xd8, 0x9b, 0x47, 0x3e, 0xe2, 0xcc, 0x10, 0x69, 0xb5, 0x35, 0xe9, 0x90, 0x4c, 0x62, 0xbe, 0xc7, 0x1b, 0xda, 0x6, 0x7f, 0xa3, 0x8d, 0x51, 0x28, 0xf4, 0x74, 0xa8, 0xd1, 0xd, 0x23, 0xff, 0x86, 0x5a, 0x32, 0xee, 0x97, 0x4b, 0x65, 0xb9, 0xc0, 0x1c, 0x9c, 0x40, 0x39, 0xe5, 0xcb, 0x17, 0x6e, 0xb2, 0x73, 0xaf, 0xd6, 0xa, 0x24, 0xf8, 0x81, 0x5d, 0xdd, 0x1, 0x78, 0xa4, 0x8a, 0x56, 0x2f, 0xf3, 0xb0, 0x6c, 0x15, 0xc9, 0xe7, 0x3b, 0x42, 0x9e, 0x1e, 0xc2, 0xbb, 0x67, 0x49, 0x95, 0xec, 0x30, 0xf1, 0x2d, 0x54, 0x88, 0xa6, 0x7a, 0x3, 0xdf, 0x5f, 0x83, 0xfa, 0x26, 0x8, 0xd4, 0xad, 0x71, 0x2b, 0xf7, 0x8e, 0x52, 0x7c, 0xa0, 0xd9, 0x5, 0x85, 0x59, 0x20, 0xfc, 0xd2, 0xe, 0x77, 0xab, 0x6a, 0xb6, 0xcf, 0x13, 0x3d, 0xe1, 0x98, 0x44, 0xc4, 0x18, 0x61, 0xbd, 0x93, 0x4f, 0x36, 0xea, 0xa9, 0x75, 0xc, 0xd0, 0xfe, 0x22, 0x5b, 0x87, 0x7, 0xdb, 0xa2, 0x7e, 0x50, 0x8c, 0xf5, 0x29, 0xe8, 0x34, 0x4d, 0x91, 0xbf, 0x63, 0x1a, 0xc6, 0x46, 0x9a, 0xe3, 0x3f, 0x11, 0xcd, 0xb4, 0x68}, [256]uint8{0x0, 0xdd, 0xa7, 0x7a, 0x53, 0x8e, 0xf4, 0x29, 0xa6, 0x7b, 0x1, 0xdc, 0xf5, 0x28, 0x52, 0x8f, 0x51, 0x8c, 0xf6, 0x2b, 0x2, 0xdf, 0xa5, 0x78, 0xf7, 0x2a, 0x50, 0x8d, 0xa4, 0x79, 0x3, 0xde, 0xa2, 0x7f, 0x5, 0xd8, 0xf1, 0x2c, 0x56, 0x8b, 0x4, 0xd9, 0xa3, 0x7e, 0x57, 0x8a, 0xf0, 0x2d, 0xf3, 0x2e, 0x54, 0x89, 0xa0, 0x7d, 0x7, 0xda, 0x55, 0x88, 0xf2, 0x2f, 0x6, 0xdb, 0xa1, 0x7c, 0x59, 0x84, 0xfe, 0x23, 0xa, 0xd7, 0xad, 0x70, 0xff, 0x22, 0x58, 0x85, 0xac, 0x71, 0xb, 0xd6, 0x8, 0xd5, 0xaf, 0x72, 0x5b, 0x86, 0xfc, 0x21, 0xae, 0x73, 0x9, 0xd4, 0xfd, 0x20, 0x5a, 0x87, 0xfb, 0x26, 0x5c, 0x81, 0xa8, 0x75, 0xf, 0xd2, 0x5d, 0x80, 0xfa, 0x27, 0xe, 0xd3, 0xa9, 0x74, 0xaa, 0x77, 0xd, 0xd0, 0xf9, 0x24, 0x5e, 0x83, 0xc, 0xd1, 0xab, 0x76, 0x5f, 0x82, 0xf8, 0x25, 0xb2, 0x6f, 0x15, 0xc8, 0xe1, 0x3c, 0x46, 0x9b, 0x14, 0xc9, 0xb3, 0x6e, 0x47, 0x9a, 0xe0, 0x3d, 0xe3, 0x3e, 0x44, 0x99, 0xb0, 0x6d, 0x17, 0xca, 0x45, 0x98, 0xe2, 0x3f, 0x16, 0xcb, 0xb1, 0x6c, 0x10, 0xcd, 0xb7, 0x6a, 0x43, 0x9e, 0xe4, 0x39, 0xb6, 0x6b, 0x11, 0xcc, 0xe5, 0x38, 0x42, 0x9f, 0x41, 0x9c, 0xe6, 0x3b, 0x12, 0xcf, 0xb5, 0x68, 0xe7, 0x3a, 0x40, 0x9d, 0xb4, 0x69, 0x13, 0xce, 0xeb, 0x36, 0x4c, 0x91, 0xb8, 0x65, 0x1f, 0xc2, 0x4d, 0x90, 0xea, 0x37, 0x1e, 0xc3, 0xb9, 0x64, 0xba, 0x67, 0x1d, 0xc0, 0xe9, 0x34, 0x4e, 0x93, 0x1c, 0xc1, 0xbb, 0x66, 0x4f, 0x92, 0xe8, 0x35, 0x49, 0x94, 0xee, 0x33, 0x1a, 0xc7, 0xbd, 0x60, 0xef, 0x32, 0x48, 0x95, 0xbc, 0x61, 0x1b, 0xc6, 0x18, 0xc5, 0xbf, 0x62, 0x4b, 0x96, 0xec, 0x31, 0xbe, 0x63, 0x19, 0xc4, 0xed, 0x30, 0x4a, 0x97}, [256]uint8{0x0, 0xde, 0xa1, 0x7f, 0x5f, 0x81, 0xfe, 0x20, 0xbe, 0x60, 0x1f, 0xc1, 0xe1, 0x3f, 0x40, 0x9e, 0x61, 0xbf, 0xc0, 0x1e, 0x3e, 0xe0, 0x9f, 0x41, 0xdf, 0x1, 0x7e, 0xa0, 0x80, 0x5e, 0x21, 0xff, 0xc2, 0x1c, 0x63, 0xbd, 0x9d, 0x43, 0x3c, 0xe2, 0x7c, 0xa2, 0xdd, 0x3, 0x23, 0xfd, 0x82, 0x5c, 0xa3, 0x7d, 0x2, 0xdc, 0xfc, 0x22, 0x5d, 0x83, 0x1d, 0xc3, 0xbc, 0x62, 0x42, 0x9c, 0xe3, 0x3d, 0x99, 0x47, 0x38, 0xe6, 0xc6, 0x18, 0x67, 0xb9, 0x27, 0xf9, 0x86, 0x58, 0x78, 0xa6, 0xd9, 0x7, 0xf8, 0x26, 0x59, 0x87, 0xa7, 0x79, 0x6, 0xd8, 0x46, 0x98, 0xe7, 0x39, 0x19, 0xc7, 0xb8, 0x66, 0x5b, 0x85, 0xfa, 0x24, 0x4, 0xda, 0xa5, 0x7b, 0xe5, 0x3b, 0x44, 0x9a, 0xba, 0x64, 0x1b, 0xc5, 0x3a, 0xe4, 0x9b, 0x45, 0x65, 0xbb, 0xc4, 0x1a, 0x84, 0x5a, 0x25, 0xfb, 0xdb, 0x5, 0x7a, 0xa4, 0x2f, 0xf1, 0x8e, 0x50, 0x70, 0xae, 0xd1, 0xf, 0x91, 0x4f, 0x30, 0xee, 0xce, 0x10, 0x6f, 0xb1, 0x4e, 0x90, 0xef, 0x31, 0x11, 0xcf, 0xb0, 0x6e, 0xf0, 0x2e, 0x51, 0x8f, 0xaf, 0x71, 0xe, 0xd0, 0xed, 0x33, 0x4c, 0x92, 0xb2, 0x6c, 0x13, 0xcd, 0x53, 0x8d, 0xf2, 0x2c, 0xc, 0xd2, 0xad, 0x73, 0x8c, 0x52, 0x2d, 0xf3, 0xd3, 0xd, 0x72, 0xac, 0x32, 0xec, 0x93, 0x4d, 0x6d, 0xb3, 0xcc, 0x12, 0xb6, 0x68, 0x17, 0xc9, 0xe9, 0x37, 0x48, 0x96, 0x8, 0xd6, 0xa9, 0x77, 0x57, 0x89, 0xf6, 0x28, 0xd7, 0x9, 0x76, 0xa8, 0x88, 0x56, 0x29, 0xf7, 0x69, 0xb7, 0xc8, 0x16, 0x36, 0xe8, 0x97, 0x49, 0x74, 0xaa, 0xd5, 0xb, 0x2b, 0xf5, 0x8a, 0x54, 0xca, 0x14, 0x6b, 0xb5, 0x95, 0x4b, 0x34, 0xea, 0x15, 0xcb, 0xb4, 0x6a, 0x4a, 0x94, 0xeb, 0x35, 0xab, 0x75, 0xa, 0xd4, 0xf4, 0x2a, 0x55, 0x8b}, [256]uint8{0x0, 0xdf, 0xa3, 0x7c, 0x5b, 0x84, 0xf8, 0x27, 0xb6, 0x69, 0x15, 0xca, 0xed, 0x32, 0x4e, 0x91, 0x71, 0xae, 0xd2, 0xd, 0x2a, 0xf5, 0x89, 0x56, 0xc7, 0x18, 0x64, 0xbb, 0x9c, 0x43, 0x3f, 0xe0, 0xe2, 0x3d, 0x41, 0x9e, 0xb9, 0x66, 0x1a, 0xc5, 0x54, 0x8b, 0xf7, 0x28, 0xf, 0xd0, 0xac, 0x73, 0x93, 0x4c, 0x30, 0xef, 0xc8, 0x17, 0x6b, 0xb4, 0x25, 0xfa, 0x86, 0x59, 0x7e, 0xa1, 0xdd, 0x2, 0xd9, 0x6, 0x7a, 0xa5, 0x82, 0x5d, 0x21, 0xfe, 0x6f, 0xb0, 0xcc, 0x13, 0x34, 0xeb, 0x97, 0x48, 0xa8, 0x77, 0xb, 0xd4, 0xf3, 0x2c, 0x50, 0x8f, 0x1e, 0xc1, 0xbd, 0x62, 0x45, 0x9a, 0xe6, 0x39, 0x3b, 0xe4, 0x98, 0x47, 0x60, 0xbf, 0xc3, 0x1c, 0x8d, 0x52, 0x2e, 0xf1, 0xd6, 0x9, 0x75, 0xaa, 0x4a, 0x95, 0xe9, 0x36, 0x11, 0xce, 0xb2, 0x6d, 0xfc, 0x23, 0x5f, 0x80, 0xa7, 0x78, 0x4, 0xdb, 0xaf, 0x70, 0xc, 0xd3, 0xf4, 0x2b, 0x57, 0x88, 0x19, 0xc6, 0xba, 0x65, 0x42, 0x9d, 0xe1, 0x3e, 0xde, 0x1, 0x7d, 0xa2, 0x85, 0x5a, 0x26, 0xf9, 0x68, 0xb7, 0xcb, 0x14, 0x33, 0xec, 0x90, 0x4f, 0x4d, 0x92, 0xee, 0x31, 0x16, 0xc9, 0xb5, 0x6a, 0xfb, 0x24, 0x58, 0x87, 0xa0, 0x7f, 0x3, 0xdc, 0x3c, 0xe3, 0x9f, 0x40, 0x67, 0xb8, 0xc4, 0x1b, 0x8a, 0x55, 0x29, 0xf6, 0xd1, 0xe, 0x72, 0xad, 0x76, 0xa9, 0xd5, 0xa, 0x2d, 0xf2, 0x8e, 0x51, 0xc0, 0x1f, 0x63, 0xbc, 0x9b, 0x44, 0x38, 0xe7, 0x7, 0xd8, 0xa4, 0x7b, 0x5c, 0x83, 0xff, 0x20, 0xb1, 0x6e, 0x12, 0xcd, 0xea, 0x35, 0x49, 0x96, 0x94, 0x4b, 0x37, 0xe8, 0xcf, 0x10, 0x6c, 0xb3, 0x22, 0xfd, 0x81, 0x5e, 0x79, 0xa6, 0xda, 0x5, 0xe5, 0x3a, 0x46, 0x99, 0xbe, 0x61, 0x1d, 0xc2, 0x53, 0x8c, 0xf0, 0x2f, 0x8, 0xd7, 0xab, 0x74}, [256]uint8{0x0, 0xe0, 0xdd, 0x3d, 0xa7, 0x47, 0x7a, 0x9a, 0x53, 0xb3, 0x8e, 0x6e, 0xf4, 0x14, 0x29, 0xc9, 0xa6, 0x46, 0x7b, 0x9b, 0x1, 0xe1, 0xdc, 0x3c, 0xf5, 0x15, 0x28, 0xc8, 0x52, 0xb2, 0x8f, 0x6f, 0x51, 0xb1, 0x8c, 0x6c, 0xf6, 0x16, 0x2b, 0xcb, 0x2, 0xe2, 0xdf, 0x3f, 0xa5, 0x45, 0x78, 0x98, 0xf7, 0x17, 0x2a, 0xca, 0x50, 0xb0, 0x8d, 0x6d, 0xa4, 0x44, 0x79, 0x99, 0x3, 0xe3, 0xde, 0x3e, 0xa2, 0x42, 0x7f, 0x9f, 0x5, 0xe5, 0xd8, 0x38, 0xf1, 0x11, 0x2c, 0xcc, 0x56, 0xb6, 0x8b, 0x6b, 0x4, 0xe4, 0xd9, 0x39, 0xa3, 0x43, 0x7e, 0x9e, 0x57, 0xb7, 0x8a, 0x6a, 0xf0, 0x10, 0x2d, 0xcd, 0xf3, 0x13, 0x2e, 0xce, 0x54, 0xb4, 0x89, 0x69, 0xa0, 0x40, 0x7d, 0x9d, 0x7, 0xe7, 0xda, 0x3a, 0x55, 0xb5, 0x88, 0x68, 0xf2, 0x12, 0x2f, 0xcf, 0x6, 0xe6, 0xdb, 0x3b, 0xa1, 0x41, 0x7c, 0x9c, 0x59, 0xb9, 0x84, 0x64, 0xfe, 0x1e, 0x23, 0xc3, 0xa, 0xea, 0xd7, 0x37, 0xad, 0x4d, 0x70, 0x90, 0xff, 0x1f, 0x22, 0xc2, 0x58, 0xb8, 0x85, 0x65, 0xac, 0x4c, 0x71, 0x91, 0xb, 0xeb, 0xd6, 0x36, 0x8, 0xe8, 0xd5, 0x35, 0xaf, 0x4f, 0x72, 0x92, 0x5b, 0xbb, 0x86, 0x66, 0xfc, 0x1c, 0x21, 0xc1, 0xae, 0x4e, 0x73, 0x93, 0x9, 0xe9, 0xd4, 0x34, 0xfd, 0x1d, 0x20, 0xc0, 0x5a, 0xba, 0x87, 0x67, 0xfb, 0x1b, 0x26, 0xc6, 0x5c, 0xbc, 0x81, 0x61, 0xa8, 0x48, 0x75, 0x95, 0xf, 0xef, 0xd2, 0x32, 0x5d, 0xbd, 0x80, 0x60, 0xfa, 0x1a, 0x27, 0xc7, 0xe, 0xee, 0xd3, 0x33, 0xa9, 0x49, 0x74, 0x94, 0xaa, 0x4a, 0x77, 0x97, 0xd, 0xed, 0xd0, 0x30, 0xf9, 0x19, 0x24, 0xc4, 0x5e, 0xbe, 0x83, 0x63, 0xc, 0xec, 0xd1, 0x31, 0xab, 0x4b, 0x76, 0x96, 0x5f, 0xbf, 0x82, 0x62, 0xf8, 0x18, 0x25, 0xc5}, [256]uint8{0x0, 0xe1, 0xdf, 0x3e, 0xa3, 0x42, 0x7c, 0x9d, 0x5b, 0xba, 0x84, 0x65, 0xf8, 0x19, 0x27, 0xc6, 0xb6, 0x57, 0x69, 0x88, 0x15, 0xf4, 0xca, 0x2b, 0xed, 0xc, 0x32, 0xd3, 0x4e, 0xaf, 0x91, 0x70, 0x71, 0x90, 0xae, 0x4f, 0xd2, 0x33, 0xd, 0xec, 0x2a, 0xcb, 0xf5, 0x14, 0x89, 0x68, 0x56, 0xb7, 0xc7, 0x26, 0x18, 0xf9, 0x64, 0x85, 0xbb, 0x5a, 0x9c, 0x7d, 0x43, 0xa2, 0x3f, 0xde, 0xe0, 0x1, 0xe2, 0x3, 0x3d, 0xdc, 0x41, 0xa0, 0x9e, 0x7f, 0xb9, 0x58, 0x66, 0x87, 0x1a, 0xfb, 0xc5, 0x24, 0x54, 0xb5, 0x8b, 0x6a, 0xf7, 0x16, 0x28, 0xc9, 0xf, 0xee, 0xd0, 0x31, 0xac, 0x4d, 0x73, 0x92, 0x93, 0x72, 0x4c, 0xad, 0x30, 0xd1, 0xef, 0xe, 0xc8, 0x29, 0x17, 0xf6, 0x6b, 0x8a, 0xb4, 0x55, 0x25, 0xc4, 0xfa, 0x1b, 0x86, 0x67, 0x59, 0xb8, 0x7e, 0x9f, 0xa1, 0x40, 0xdd, 0x3c, 0x2, 0xe3, 0xd9, 0x38, 0x6, 0xe7, 0x7a, 0x9b, 0xa5, 0x44, 0x82, 0x63, 0x5d, 0xbc, 0x21, 0xc0, 0xfe, 0x1f, 0x6f, 0x8e, 0xb0, 0x51, 0xcc, 0x2d, 0x13, 0xf2, 0x34, 0xd5, 0xeb, 0xa, 0x97, 0x76, 0x48, 0xa9, 0xa8, 0x49, 0x77, 0x96, 0xb, 0xea, 0xd4, 0x35, 0xf3, 0x12, 0x2c, 0xcd, 0x50, 0xb1, 0x8f, 0x6e, 0x1e, 0xff, 0xc1, 0x20, 0xbd, 0x5c, 0x62, 0x83, 0x45, 0xa4, 0x9a, 0x7b, 0xe6, 0x7, 0x39, 0xd8, 0x3b, 0xda, 0xe4, 0x5, 0x98, 0x79, 0x47, 0xa6, 0x60, 0x81, 0xbf, 0x5e, 0xc3, 0x22, 0x1c, 0xfd, 0x8d, 0x6c, 0x52, 0xb3, 0x2e, 0xcf, 0xf1, 0x10, 0xd6, 0x37, 0x9, 0xe8, 0x75, 0x94, 0xaa, 0x4b, 0x4a, 0xab, 0x95, 0x74, 0xe9, 0x8, 0x36, 0xd7, 0x11, 0xf0, 0xce, 0x2f, 0xb2, 0x53, 0x6d, 0x8c, 0xfc, 0x1d, 0x23, 0xc2, 0x5f, 0xbe, 0x80, 0x61, 0xa7, 0x46, 0x78, 0x99, 0x4, 0xe5, 0xdb, 0x3a}, [256]uint8{0x0, 0xe2, 0xd9, 0x3b, 0xaf, 0x4d, 0x76, 0x94, 0x43, 0xa1, 0x9a, 0x78, 0xec, 0xe, 0x35, 0xd7, 0x86, 0x64, 0x5f, 0xbd, 0x29, 0xcb, 0xf0, 0x12, 0xc5, 0x27, 0x1c, 0xfe, 0x6a, 0x88, 0xb3, 0x51, 0x11, 0xf3, 0xc8, 0x2a, 0xbe, 0x5c, 0x67, 0x85, 0x52, 0xb0, 0x8b, 0x69, 0xfd, 0x1f, 0x24, 0xc6, 0x97, 0x75, 0x4e, 0xac, 0x38, 0xda, 0xe1, 0x3, 0xd4, 0x36, 0xd, 0xef, 0x7b, 0x99, 0xa2, 0x40, 0x22, 0xc0, 0xfb, 0x19, 0x8d, 0x6f, 0x54, 0xb6, 0x61, 0x83, 0xb8, 0x5a, 0xce, 0x2c, 0x17, 0xf5, 0xa4, 0x46, 0x7d, 0x9f, 0xb, 0xe9, 0xd2, 0x30, 0xe7, 0x5, 0x3e, 0xdc, 0x48, 0xaa, 0x91, 0x73, 0x33, 0xd1, 0xea, 0x8, 0x9c, 0x7e, 0x45, 0xa7, 0x70, 0x92, 0xa9, 0x4b, 0xdf, 0x3d, 0x6, 0xe4, 0xb5, 0x57, 0x6c, 0x8e, 0x1a, 0xf8, 0xc3, 0x21, 0xf6, 0x14, 0x2f, 0xcd, 0x59, 0xbb, 0x80, 0x62, 0x44, 0xa6, 0x9d, 0x7f, 0xeb, 0x9, 0x32, 0xd0, 0x7, 0xe5, 0xde, 0x3c, 0xa8, 0x4a, 0x71, 0x93, 0xc2, 0x20, 0x1b, 0xf9, 0x6d, 0x8f, 0xb4, 0x56, 0x81, 0x63, 0x58, 0xba, 0x2e, 0xcc, 0xf7, 0x15, 0x55, 0xb7, 0x8c, 0x6e, 0xfa, 0x18, 0x23, 0xc1, 0x16, 0xf4, 0xcf, 0x2d, 0xb9, 0x5b, 0x60, 0x82, 0xd3, 0x31, 0xa, 0xe8, 0x7c, 0x9e, 0xa5, 0x47, 0x90, 0x72, 0x49, 0xab, 0x3f, 0xdd, 0xe6, 0x4, 0x66, 0x84, 0xbf, 0x5d, 0xc9, 0x2b, 0x10, 0xf2, 0x25, 0xc7, 0xfc, 0x1e, 0x8a, 0x68, 0x53, 0xb1, 0xe0, 0x2, 0x39, 0xdb, 0x4f, 0xad, 0x96, 0x74, 0xa3, 0x41, 0x7a, 0x98, 0xc, 0xee, 0xd5, 0x37, 0x77, 0x95, 0xae, 0x4c, 0xd8, 0x3a, 0x1, 0xe3, 0x34, 0xd6, 0xed, 0xf, 0x9b, 0x79, 0x42, 0xa0, 0xf1, 0x13, 0x28, 0xca, 0x5e, 0xbc, 0x87, 0x65, 0xb2, 0x50, 0x6b, 0x89, 0x1d, 0xff, 0xc4, 0x26}, [256]uint8{0x0, 0xe3, 0xdb, 0x38, 0xab, 0x48, 0x70, 0x93, 0x4b, 0xa8, 0x90, 0x73, 0xe0, 0x3, 0x3b, 0xd8, 0x96, 0x75, 0x4d, 0xae, 0x3d, 0xde, 0xe6, 0x5, 0xdd, 0x3e, 0x6, 0xe5, 0x76, 0x95, 0xad, 0x4e, 0x31, 0xd2, 0xea, 0x9, 0x9a, 0x79, 0x41, 0xa2, 0x7a, 0x99, 0xa1, 0x42, 0xd1, 0x32, 0xa, 0xe9, 0xa7, 0x44, 0x7c, 0x9f, 0xc, 0xef, 0xd7, 0x34, 0xec, 0xf, 0x37, 0xd4, 0x47, 0xa4, 0x9c, 0x7f, 0x62, 0x81, 0xb9, 0x5a, 0xc9, 0x2a, 0x12, 0xf1, 0x29, 0xca, 0xf2, 0x11, 0x82, 0x61, 0x59, 0xba, 0xf4, 0x17, 0x2f, 0xcc, 0x5f, 0xbc, 0x84, 0x67, 0xbf, 0x5c, 0x64, 0x87, 0x14, 0xf7, 0xcf, 0x2c, 0x53, 0xb0, 0x88, 0x6b, 0xf8, 0x1b, 0x23, 0xc0, 0x18, 0xfb, 0xc3, 0x20, 0xb3, 0x50, 0x68, 0x8b, 0xc5, 0x26, 0x1e, 0xfd, 0x6e, 0x8d, 0xb5, 0x56, 0x8e, 0x6d, 0x55, 0xb6, 0x25, 0xc6, 0xfe, 0x1d, 0xc4, 0x27, 0x1f, 0xfc, 0x6f, 0x8c, 0xb4, 0x57, 0x8f, 0x6c, 0x54, 0xb7, 0x24, 0xc7, 0xff, 0x1c, 0x52, 0xb1, 0x89, 0x6a, 0xf9, 0x1a, 0x22, 0xc1, 0x19, 0xfa, 0xc2, 0x21, 0xb2, 0x51, 0x69, 0x8a, 0xf5, 0x16, 0x2e, 0xcd, 0x5e, 0xbd, 0x85, 0x66, 0xbe, 0x5d, 0x65, 0x86, 0x15, 0xf6, 0xce, 0x2d, 0x63, 0x80, 0xb8, 0x5b, 0xc8, 0x2b, 0x13, 0xf0, 0x28, 0xcb, 0xf3, 0x10, 0x83, 0x60, 0x58, 0xbb, 0xa6, 0x45, 0x7d, 0x9e, 0xd, 0xee, 0xd6, 0x35, 0xed, 0xe, 0x36, 0xd5, 0x46, 0xa5, 0x9d, 0x7e, 0x30, 0xd3, 0xeb, 0x8, 0x9b, 0x78, 0x40, 0xa3, 0x7b, 0x98, 0xa0, 0x43, 0xd0, 0x33, 0xb, 0xe8, 0x97, 0x74, 0x4c, 0xaf, 0x3c, 0xdf, 0xe7, 0x4, 0xdc, 0x3f, 0x7, 0xe4, 0x77, 0x94, 0xac, 0x4f, 0x1, 0xe2, 0xda, 0x39, 0xaa, 0x49, 0x71, 0x92, 0x4a, 0xa9, 0x91, 0x72, 0xe1, 0x2, 0x3a, 0xd9}, [256]uint8{0x0, 0xe4, 0xd5, 0x31, 0xb7, 0x53, 0x62, 0x86, 0x73, 0x97, 0xa6, 0x42, 0xc4, 0x20, 0x11, 0xf5, 0xe6, 0x2, 0x33, 0xd7, 0x51, 0xb5, 0x84, 0x60, 0x95, 0x71, 0x40, 0xa4, 0x22, 0xc6, 0xf7, 0x13, 0xd1, 0x35, 0x4, 0xe0, 0x66, 0x82, 0xb3, 0x57, 0xa2, 0x46, 0x77, 0x93, 0x15, 0xf1, 0xc0, 0x24, 0x37, 0xd3, 0xe2, 0x6, 0x80, 0x64, 0x55, 0xb1, 0x44, 0xa0, 0x91, 0x75, 0xf3, 0x17, 0x26, 0xc2, 0xbf, 0x5b, 0x6a, 0x8e, 0x8, 0xec, 0xdd, 0x39, 0xcc, 0x28, 0x19, 0xfd, 0x7b, 0x9f, 0xae, 0x4a, 0x59, 0xbd, 0x8c, 0x68, 0xee, 0xa, 0x3b, 0xdf, 0x2a, 0xce, 0xff, 0x1b, 0x9d, 0x79, 0x48, 0xac, 0x6e, 0x8a, 0xbb, 0x5f, 0xd9, 0x3d, 0xc, 0xe8, 0x1d, 0xf9, 0xc8, 0x2c, 0xaa, 0x4e, 0x7f, 0x9b, 0x88, 0x6c, 0x5d, 0xb9, 0x3f, 0xdb, 0xea, 0xe, 0xfb, 0x1f, 0x2e, 0xca, 0x4c, 0xa8, 0x99, 0x7d, 0x63, 0x87, 0xb6, 0x52, 0xd4, 0x30, 0x1, 0xe5, 0x10, 0xf4, 0xc5, 0x21, 0xa7, 0x43, 0x72, 0x96, 0x85, 0x61, 0x50, 0xb4, 0x32, 0xd6, 0xe7, 0x3, 0xf6, 0x12, 0x23, 0xc7, 0x41, 0xa5, 0x94, 0x70, 0xb2, 0x56, 0x67, 0x83, 0x5, 0xe1, 0xd0, 0x34, 0xc1, 0x25, 0x14, 0xf0, 0x76, 0x92, 0xa3, 0x47, 0x54, 0xb0, 0x81, 0x65, 0xe3, 0x7, 0x36, 0xd2, 0x27, 0xc3, 0xf2, 0x16, 0x90, 0x74, 0x45, 0xa1, 0xdc, 0x38, 0x9, 0xed, 0x6b, 0x8f, 0xbe, 0x5a, 0xaf, 0x4b, 0x7a, 0x9e, 0x18, 0xfc, 0xcd, 0x29, 0x3a, 0xde, 0xef, 0xb, 0x8d, 0x69, 0x58, 0xbc, 0x49, 0xad, 0x9c, 0x78, 0xfe, 0x1a, 0x2b, 0xcf, 0xd, 0xe9, 0xd8, 0x3c, 0xba, 0x5e, 0x6f, 0x8b, 0x7e, 0x9a, 0xab, 0x4f, 0xc9, 0x2d, 0x1c, 0xf8, 0xeb, 0xf, 0x3e, 0xda, 0x5c, 0xb8, 0x89, 0x6d, 0x98, 0x7c, 0x4d, 0xa9, 0x2f, 0xcb, 0xfa, 0x1e}, [256]uint8{0x0, 0xe5, 0xd7, 0x32, 0xb3, 0x56, 0x64, 0x81, 0x7b, 0x9e, 0xac, 0x49, 0xc8, 0x2d, 0x1f, 0xfa, 0xf6, 0x13, 0x21, 0xc4, 0x45, 0xa0, 0x92, 0x77, 0x8d, 0x68, 0x5a, 0xbf, 0x3e, 0xdb, 0xe9, 0xc, 0xf1, 0x14, 0x26, 0xc3, 0x42, 0xa7, 0x95, 0x70, 0x8a, 0x6f, 0x5d, 0xb8, 0x39, 0xdc, 0xee, 0xb, 0x7, 0xe2, 0xd0, 0x35, 0xb4, 0x51, 0x63, 0x86, 0x7c, 0x99, 0xab, 0x4e, 0xcf, 0x2a, 0x18, 0xfd, 0xff, 0x1a, 0x28, 0xcd, 0x4c, 0xa9, 0x9b, 0x7e, 0x84, 0x61, 0x53, 0xb6, 0x37, 0xd2, 0xe0, 0x5, 0x9, 0xec, 0xde, 0x3b, 0xba, 0x5f, 0x6d, 0x88, 0x72, 0x97, 0xa5, 0x40, 0xc1, 0x24, 0x16, 0xf3, 0xe, 0xeb, 0xd9, 0x3c, 0xbd, 0x58, 0x6a, 0x8f, 0x75, 0x90, 0xa2, 0x47, 0xc6, 0x23, 0x11, 0xf4, 0xf8, 0x1d, 0x2f, 0xca, 0x4b, 0xae, 0x9c, 0x79, 0x83, 0x66, 0x54, 0xb1, 0x30, 0xd5, 0xe7, 0x2, 0xe3, 0x6, 0x34, 0xd1, 0x50, 0xb5, 0x87, 0x62, 0x98, 0x7d, 0x4f, 0xaa, 0x2b, 0xce, 0xfc, 0x19, 0x15, 0xf0, 0xc2, 0x27, 0xa6, 0x43, 0x71, 0x94, 0x6e, 0x8b, 0xb9, 0x5c, 0xdd, 0x38, 0xa, 0xef, 0x12, 0xf7, 0xc5, 0x20, 0xa1, 0x44, 0x76, 0x93, 0x69, 0x8c, 0xbe, 0x5b, 0xda, 0x3f, 0xd, 0xe8, 0xe4, 0x1, 0x33, 0xd6, 0x57, 0xb2, 0x80, 0x65, 0x9f, 0x7a, 0x48, 0xad, 0x2c, 0xc9, 0xfb, 0x1e, 0x1c, 0xf9, 0xcb, 0x2e, 0xaf, 0x4a, 0x78, 0x9d, 0x67, 0x82, 0xb0, 0x55, 0xd4, 0x31, 0x3, 0xe6, 0xea, 0xf, 0x3d, 0xd8, 0x59, 0xbc, 0x8e, 0x6b, 0x91, 0x74, 0x46, 0xa3, 0x22, 0xc7, 0xf5, 0x10, 0xed, 0x8, 0x3a, 0xdf, 0x5e, 0xbb, 0x89, 0x6c, 0x96, 0x73, 0x41, 0xa4, 0x25, 0xc0, 0xf2, 0x17, 0x1b, 0xfe, 0xcc, 0x29, 0xa8, 0x4d, 0x7f, 0x9a, 0x60, 0x85, 0xb7, 0x52, 0xd3, 0x36, 0x4, 0xe1}, [256]uint8{0x0, 0xe6, 0xd1, 0x37, 0xbf, 0x59, 0x6e, 0x88, 0x63, 0x85, 0xb2, 0x54, 0xdc, 0x3a, 0xd, 0xeb, 0xc6, 0x20, 0x17, 0xf1, 0x79, 0x9f, 0xa8, 0x4e, 0xa5, 0x43, 0x74, 0x92, 0x1a, 0xfc, 0xcb, 0x2d, 0x91, 0x77, 0x40, 0xa6, 0x2e, 0xc8, 0xff, 0x19, 0xf2, 0x14, 0x23, 0xc5, 0x4d, 0xab, 0x9c, 0x7a, 0x57, 0xb1, 0x86, 0x60, 0xe8, 0xe, 0x39, 0xdf, 0x34, 0xd2, 0xe5, 0x3, 0x8b, 0x6d, 0x5a, 0xbc, 0x3f, 0xd9, 0xee, 0x8, 0x80, 0x66, 0x51, 0xb7, 0x5c, 0xba, 0x8d, 0x6b, 0xe3, 0x5, 0x32, 0xd4, 0xf9, 0x1f, 0x28, 0xce, 0x46, 0xa0, 0x97, 0x71, 0x9a, 0x7c, 0x4b, 0xad, 0x25, 0xc3, 0xf4, 0x12, 0xae, 0x48, 0x7f, 0x99, 0x11, 0xf7, 0xc0, 0x26, 0xcd, 0x2b, 0x1c, 0xfa, 0x72, 0x94, 0xa3, 0x45, 0x68, 0x8e, 0xb9, 0x5f, 0xd7, 0x31, 0x6, 0xe0, 0xb, 0xed, 0xda, 0x3c, 0xb4, 0x52, 0x65, 0x83, 0x7e, 0x98, 0xaf, 0x49, 0xc1, 0x27, 0x10, 0xf6, 0x1d, 0xfb, 0xcc, 0x2a, 0xa2, 0x44, 0x73, 0x95, 0xb8, 0x5e, 0x69, 0x8f, 0x7, 0xe1, 0xd6, 0x30, 0xdb, 0x3d, 0xa, 0xec, 0x64, 0x82, 0xb5, 0x53, 0xef, 0x9, 0x3e, 0xd8, 0x50, 0xb6, 0x81, 0x67, 0x8c, 0x6a, 0x5d, 0xbb, 0x33, 0xd5, 0xe2, 0x4, 0x29, 0xcf, 0xf8, 0x1e, 0x96, 0x70, 0x47, 0xa1, 0x4a, 0xac, 0x9b, 0x7d, 0xf5, 0x13, 0x24, 0xc2, 0x41, 0xa7, 0x90, 0x76, 0xfe, 0x18, 0x2f, 0xc9, 0x22, 0xc4, 0xf3, 0x15, 0x9d, 0x7b, 0x4c, 0xaa, 0x87, 0x61, 0x56, 0xb0, 0x38, 0xde, 0xe9, 0xf, 0xe4, 0x2, 0x35, 0xd3, 0x5b, 0xbd, 0x8a, 0x6c, 0xd0, 0x36, 0x1, 0xe7, 0x6f, 0x89, 0xbe, 0x58, 0xb3, 0x55, 0x62, 0x84, 0xc, 0xea, 0xdd, 0x3b, 0x16, 0xf0, 0xc7, 0x21, 0xa9, 0x4f, 0x78, 0x9e, 0x75, 0x93, 0xa4, 0x42, 0xca, 0x2c, 0x1b, 0xfd}, [256]uint8{0x0, 0xe7, 0xd3, 0x34, 0xbb, 0x5c, 0x68, 0x8f, 0x6b, 0x8c, 0xb8, 0x5f, 0xd0, 0x37, 0x3, 0xe4, 0xd6, 0x31, 0x5, 0xe2, 0x6d, 0x8a, 0xbe, 0x59, 0xbd, 0x5a, 0x6e, 0x89, 0x6, 0xe1, 0xd5, 0x32, 0xb1, 0x56, 0x62, 0x85, 0xa, 0xed, 0xd9, 0x3e, 0xda, 0x3d, 0x9, 0xee, 0x61, 0x86, 0xb2, 0x55, 0x67, 0x80, 0xb4, 0x53, 0xdc, 0x3b, 0xf, 0xe8, 0xc, 0xeb, 0xdf, 0x38, 0xb7, 0x50, 0x64, 0x83, 0x7f, 0x98, 0xac, 0x4b, 0xc4, 0x23, 0x17, 0xf0, 0x14, 0xf3, 0xc7, 0x20, 0xaf, 0x48, 0x7c, 0x9b, 0xa9, 0x4e, 0x7a, 0x9d, 0x12, 0xf5, 0xc1, 0x26, 0xc2, 0x25, 0x11, 0xf6, 0x79, 0x9e, 0xaa, 0x4d, 0xce, 0x29, 0x1d, 0xfa, 0x75, 0x92, 0xa6, 0x41, 0xa5, 0x42, 0x76, 0x91, 0x1e, 0xf9, 0xcd, 0x2a, 0x18, 0xff, 0xcb, 0x2c, 0xa3, 0x44, 0x70, 0x97, 0x73, 0x94, 0xa0, 0x47, 0xc8, 0x2f, 0x1b, 0xfc, 0xfe, 0x19, 0x2d, 0xca, 0x45, 0xa2, 0x96, 0x71, 0x95, 0x72, 0x46, 0xa1, 0x2e, 0xc9, 0xfd, 0x1a, 0x28, 0xcf, 0xfb, 0x1c, 0x93, 0x74, 0x40, 0xa7, 0x43, 0xa4, 0x90, 0x77, 0xf8, 0x1f, 0x2b, 0xcc, 0x4f, 0xa8, 0x9c, 0x7b, 0xf4, 0x13, 0x27, 0xc0, 0x24, 0xc3, 0xf7, 0x10, 0x9f, 0x78, 0x4c, 0xab, 0x99, 0x7e, 0x4a, 0xad, 0x22, 0xc5, 0xf1, 0x16, 0xf2, 0x15, 0x21, 0xc6, 0x49, 0xae, 0x9a, 0x7d, 0x81, 0x66, 0x52, 0xb5, 0x3a, 0xdd, 0xe9, 0xe, 0xea, 0xd, 0x39, 0xde, 0x51, 0xb6, 0x82, 0x65, 0x57, 0xb0, 0x84, 0x63, 0xec, 0xb, 0x3f, 0xd8, 0x3c, 0xdb, 0xef, 0x8, 0x87, 0x60, 0x54, 0xb3, 0x30, 0xd7, 0xe3, 0x4, 0x8b, 0x6c, 0x58, 0xbf, 0x5b, 0xbc, 0x88, 0x6f, 0xe0, 0x7, 0x33, 0xd4, 0xe6, 0x1, 0x35, 0xd2, 0x5d, 0xba, 0x8e, 0x69, 0x8d, 0x6a, 0x5e, 0xb9, 0x36, 0xd1, 0xe5, 0x2}, [256]uint8{0x0, 0xe8, 0xcd, 0x25, 0x87, 0x6f, 0x4a, 0xa2, 0x13, 0xfb, 0xde, 0x36, 0x94, 0x7c, 0x59, 0xb1, 0x26, 0xce, 0xeb, 0x3, 0xa1, 0x49, 0x6c, 0x84, 0x35, 0xdd, 0xf8, 0x10, 0xb2, 0x5a, 0x7f, 0x97, 0x4c, 0xa4, 0x81, 0x69, 0xcb, 0x23, 0x6, 0xee, 0x5f, 0xb7, 0x92, 0x7a, 0xd8, 0x30, 0x15, 0xfd, 0x6a, 0x82, 0xa7, 0x4f, 0xed, 0x5, 0x20, 0xc8, 0x79, 0x91, 0xb4, 0x5c, 0xfe, 0x16, 0x33, 0xdb, 0x98, 0x70, 0x55, 0xbd, 0x1f, 0xf7, 0xd2, 0x3a, 0x8b, 0x63, 0x46, 0xae, 0xc, 0xe4, 0xc1, 0x29, 0xbe, 0x56, 0x73, 0x9b, 0x39, 0xd1, 0xf4, 0x1c, 0xad, 0x45, 0x60, 0x88, 0x2a, 0xc2, 0xe7, 0xf, 0xd4, 0x3c, 0x19, 0xf1, 0x53, 0xbb, 0x9e, 0x76, 0xc7, 0x2f, 0xa, 0xe2, 0x40, 0xa8, 0x8d, 0x65, 0xf2, 0x1a, 0x3f, 0xd7, 0x75, 0x9d, 0xb8, 0x50, 0xe1, 0x9, 0x2c, 0xc4, 0x66, 0x8e, 0xab, 0x43, 0x2d, 0xc5, 0xe0, 0x8, 0xaa, 0x42, 0x67, 0x8f, 0x3e, 0xd6, 0xf3, 0x1b, 0xb9, 0x51, 0x74, 0x9c, 0xb, 0xe3, 0xc6, 0x2e, 0x8c, 0x64, 0x41, 0xa9, 0x18, 0xf0, 0xd5, 0x3d, 0x9f, 0x77, 0x52, 0xba, 0x61, 0x89, 0xac, 0x44, 0xe6, 0xe, 0x2b, 0xc3, 0x72, 0x9a, 0xbf, 0x57, 0xf5, 0x1d, 0x38, 0xd0, 0x47, 0xaf, 0x8a, 0x62, 0xc0, 0x28, 0xd, 0xe5, 0x54, 0xbc, 0x99, 0x71, 0xd3, 0x3b, 0x1e, 0xf6, 0xb5, 0x5d, 0x78, 0x90, 0x32, 0xda, 0xff, 0x17, 0xa6, 0x4e, 0x6b, 0x83, 0x21, 0xc9, 0xec, 0x4, 0x93, 0x7b, 0x5e, 0xb6, 0x14, 0xfc, 0xd9, 0x31, 0x80, 0x68, 0x4d, 0xa5, 0x7, 0xef, 0xca, 0x22, 0xf9, 0x11, 0x34, 0xdc, 0x7e, 0x96, 0xb3, 0x5b, 0xea, 0x2, 0x27, 0xcf, 0x6d, 0x85, 0xa0, 0x48, 0xdf, 0x37, 0x12, 0xfa, 0x58, 0xb0, 0x95, 0x7d, 0xcc, 0x24, 0x1, 0xe9, 0x4b, 0xa3, 0x86, 0x6e}, [256]uint8{0x0, 0xe9, 0xcf, 0x26, 0x83, 0x6a, 0x4c, 0xa5, 0x1b, 0xf2, 0xd4, 0x3d, 0x98, 0x71, 0x57, 0xbe, 0x36, 0xdf, 0xf9, 0x10, 0xb5, 0x5c, 0x7a, 0x93, 0x2d, 0xc4, 0xe2, 0xb, 0xae, 0x47, 0x61, 0x88, 0x6c, 0x85, 0xa3, 0x4a, 0xef, 0x6, 0x20, 0xc9, 0x77, 0x9e, 0xb8, 0x51, 0xf4, 0x1d, 0x3b, 0xd2, 0x5a, 0xb3, 0x95, 0x7c, 0xd9, 0x30, 0x16, 0xff, 0x41, 0xa8, 0x8e, 0x67, 0xc2, 0x2b, 0xd, 0xe4, 0xd8, 0x31, 0x17, 0xfe, 0x5b, 0xb2, 0x94, 0x7d, 0xc3, 0x2a, 0xc, 0xe5, 0x40, 0xa9, 0x8f, 0x66, 0xee, 0x7, 0x21, 0xc8, 0x6d, 0x84, 0xa2, 0x4b, 0xf5, 0x1c, 0x3a, 0xd3, 0x76, 0x9f, 0xb9, 0x50, 0xb4, 0x5d, 0x7b, 0x92, 0x37, 0xde, 0xf8, 0x11, 0xaf, 0x46, 0x60, 0x89, 0x2c, 0xc5, 0xe3, 0xa, 0x82, 0x6b, 0x4d, 0xa4, 0x1, 0xe8, 0xce, 0x27, 0x99, 0x70, 0x56, 0xbf, 0x1a, 0xf3, 0xd5, 0x3c, 0xad, 0x44, 0x62, 0x8b, 0x2e, 0xc7, 0xe1, 0x8, 0xb6, 0x5f, 0x79, 0x90, 0x35, 0xdc, 0xfa, 0x13, 0x9b, 0x72, 0x54, 0xbd, 0x18, 0xf1, 0xd7, 0x3e, 0x80, 0x69, 0x4f, 0xa6, 0x3, 0xea, 0xcc, 0x25, 0xc1, 0x28, 0xe, 0xe7, 0x42, 0xab, 0x8d, 0x64, 0xda, 0x33, 0x15, 0xfc, 0x59, 0xb0, 0x96, 0x7f, 0xf7, 0x1e, 0x38, 0xd1, 0x74, 0x9d, 0xbb, 0x52, 0xec, 0x5, 0x23, 0xca, 0x6f, 0x86, 0xa0, 0x49, 0x75, 0x9c, 0xba, 0x53, 0xf6, 0x1f, 0x39, 0xd0, 0x6e, 0x87, 0xa1, 0x48, 0xed, 0x4, 0x22, 0xcb, 0x43, 0xaa, 0x8c, 0x65, 0xc0, 0x29, 0xf, 0xe6, 0x58, 0xb1, 0x97, 0x7e, 0xdb, 0x32, 0x14, 0xfd, 0x19, 0xf0, 0xd6, 0x3f, 0x9a, 0x73, 0x55, 0xbc, 0x2, 0xeb, 0xcd, 0x24, 0x81, 0x68, 0x4e, 0xa7, 0x2f, 0xc6, 0xe0, 0x9, 0xac, 0x45, 0x63, 0x8a, 0x34, 0xdd, 0xfb, 0x12, 0xb7, 0x5e, 0x78, 0x91}, [256]uint8{0x0, 0xea, 0xc9, 0x23, 0x8f, 0x65, 0x46, 0xac, 0x3, 0xe9, 0xca, 0x20, 0x8c, 0x66, 0x45, 0xaf, 0x6, 0xec, 0xcf, 0x25, 0x89, 0x63, 0x40, 0xaa, 0x5, 0xef, 0xcc, 0x26, 0x8a, 0x60, 0x43, 0xa9, 0xc, 0xe6, 0xc5, 0x2f, 0x83, 0x69, 0x4a, 0xa0, 0xf, 0xe5, 0xc6, 0x2c, 0x80, 0x6a, 0x49, 0xa3, 0xa, 0xe0, 0xc3, 0x29, 0x85, 0x6f, 0x4c, 0xa6, 0x9, 0xe3, 0xc0, 0x2a, 0x86, 0x6c, 0x4f, 0xa5, 0x18, 0xf2, 0xd1, 0x3b, 0x97, 0x7d, 0x5e, 0xb4, 0x1b, 0xf1, 0xd2, 0x38, 0x94, 0x7e, 0x5d, 0xb7, 0x1e, 0xf4, 0xd7, 0x3d, 0x91, 0x7b, 0x58, 0xb2, 0x1d, 0xf7, 0xd4, 0x3e, 0x92, 0x78, 0x5b, 0xb1, 0x14, 0xfe, 0xdd, 0x37, 0x9b, 0x71, 0x52, 0xb8, 0x17, 0xfd, 0xde, 0x34, 0x98, 0x72, 0x51, 0xbb, 0x12, 0xf8, 0xdb, 0x31, 0x9d, 0x77, 0x54, 0xbe, 0x11, 0xfb, 0xd8, 0x32, 0x9e, 0x74, 0x57, 0xbd, 0x30, 0xda, 0xf9, 0x13, 0xbf, 0x55, 0x76, 0x9c, 0x33, 0xd9, 0xfa, 0x10, 0xbc, 0x56, 0x75, 0x9f, 0x36, 0xdc, 0xff, 0x15, 0xb9, 0x53, 0x70, 0x9a, 0x35, 0xdf, 0xfc, 0x16, 0xba, 0x50, 0x73, 0x99, 0x3c, 0xd6, 0xf5, 0x1f, 0xb3, 0x59, 0x7a, 0x90, 0x3f, 0xd5, 0xf6, 0x1c, 0xb0, 0x5a, 0x79, 0x93, 0x3a, 0xd0, 0xf3, 0x19, 0xb5, 0x5f, 0x7c, 0x96, 0x39, 0xd3, 0xf0, 0x1a, 0xb6, 0x5c, 0x7f, 0x95, 0x28, 0xc2, 0xe1, 0xb, 0xa7, 0x4d, 0x6e, 0x84, 0x2b, 0xc1, 0xe2, 0x8, 0xa4, 0x4e, 0x6d, 0x87, 0x2e, 0xc4, 0xe7, 0xd, 0xa1, 0x4b, 0x68, 0x82, 0x2d, 0xc7, 0xe4, 0xe, 0xa2, 0x48, 0x6b, 0x81, 0x24, 0xce, 0xed, 0x7, 0xab, 0x41, 0x62, 0x88, 0x27, 0xcd, 0xee, 0x4, 0xa8, 0x42, 0x61, 0x8b, 0x22, 0xc8, 0xeb, 0x1, 0xad, 0x47, 0x64, 0x8e, 0x21, 0xcb, 0xe8, 0x2, 0xae, 0x44, 0x67, 0x8d}, [256]uint8{0x0, 0xeb, 0xcb, 0x20, 0x8b, 0x60, 0x40, 0xab, 0xb, 0xe0, 0xc0, 0x2b, 0x80, 0x6b, 0x4b, 0xa0, 0x16, 0xfd, 0xdd, 0x36, 0x9d, 0x76, 0x56, 0xbd, 0x1d, 0xf6, 0xd6, 0x3d, 0x96, 0x7d, 0x5d, 0xb6, 0x2c, 0xc7, 0xe7, 0xc, 0xa7, 0x4c, 0x6c, 0x87, 0x27, 0xcc, 0xec, 0x7, 0xac, 0x47, 0x67, 0x8c, 0x3a, 0xd1, 0xf1, 0x1a, 0xb1, 0x5a, 0x7a, 0x91, 0x31, 0xda, 0xfa, 0x11, 0xba, 0x51, 0x71, 0x9a, 0x58, 0xb3, 0x93, 0x78, 0xd3, 0x38, 0x18, 0xf3, 0x53, 0xb8, 0x98, 0x73, 0xd8, 0x33, 0x13, 0xf8, 0x4e, 0xa5, 0x85, 0x6e, 0xc5, 0x2e, 0xe, 0xe5, 0x45, 0xae, 0x8e, 0x65, 0xce, 0x25, 0x5, 0xee, 0x74, 0x9f, 0xbf, 0x54, 0xff, 0x14, 0x34, 0xdf, 0x7f, 0x94, 0xb4, 0x5f, 0xf4, 0x1f, 0x3f, 0xd4, 0x62, 0x89, 0xa9, 0x42, 0xe9, 0x2, 0x22, 0xc9, 0x69, 0x82, 0xa2, 0x49, 0xe2, 0x9, 0x29, 0xc2, 0xb0, 0x5b, 0x7b, 0x90, 0x3b, 0xd0, 0xf0, 0x1b, 0xbb, 0x50, 0x70, 0x9b, 0x30, 0xdb, 0xfb, 0x10, 0xa6, 0x4d, 0x6d, 0x86, 0x2d, 0xc6, 0xe6, 0xd, 0xad, 0x46, 0x66, 0x8d, 0x26, 0xcd, 0xed, 0x6, 0x9c, 0x77, 0x57, 0xbc, 0x17, 0xfc, 0xdc, 0x37, 0x97, 0x7c, 0x5c, 0xb7, 0x1c, 0xf7, 0xd7, 0x3c, 0x8a, 0x61, 0x41, 0xaa, 0x1, 0xea, 0xca, 0x21, 0x81, 0x6a, 0x4a, 0xa1, 0xa, 0xe1, 0xc1, 0x2a, 0xe8, 0x3, 0x23, 0xc8, 0x63, 0x88, 0xa8, 0x43, 0xe3, 0x8, 0x28, 0xc3, 0x68, 0x83, 0xa3, 0x48, 0xfe, 0x15, 0x35, 0xde, 0x75, 0x9e, 0xbe, 0x55, 0xf5, 0x1e, 0x3e, 0xd5, 0x7e, 0x95, 0xb5, 0x5e, 0xc4, 0x2f, 0xf, 0xe4, 0x4f, 0xa4, 0x84, 0x6f, 0xcf, 0x24, 0x4, 0xef, 0x44, 0xaf, 0x8f, 0x64, 0xd2, 0x39, 0x19, 0xf2, 0x59, 0xb2, 0x92, 0x79, 0xd9, 0x32, 0x12, 0xf9, 0x52, 0xb9, 0x99, 0x72}, [256]uint8{0x0, 0xec, 0xc5, 0x29, 0x97, 0x7b, 0x52, 0xbe, 0x33, 0xdf, 0xf6, 0x1a, 0xa4, 0x48, 0x61, 0x8d, 0x66, 0x8a, 0xa3, 0x4f, 0xf1, 0x1d, 0x34, 0xd8, 0x55, 0xb9, 0x90, 0x7c, 0xc2, 0x2e, 0x7, 0xeb, 0xcc, 0x20, 0x9, 0xe5, 0x5b, 0xb7, 0x9e, 0x72, 0xff, 0x13, 0x3a, 0xd6, 0x68, 0x84, 0xad, 0x41, 0xaa, 0x46, 0x6f, 0x83, 0x3d, 0xd1, 0xf8, 0x14, 0x99, 0x75, 0x5c, 0xb0, 0xe, 0xe2, 0xcb, 0x27, 0x85, 0x69, 0x40, 0xac, 0x12, 0xfe, 0xd7, 0x3b, 0xb6, 0x5a, 0x73, 0x9f, 0x21, 0xcd, 0xe4, 0x8, 0xe3, 0xf, 0x26, 0xca, 0x74, 0x98, 0xb1, 0x5d, 0xd0, 0x3c, 0x15, 0xf9, 0x47, 0xab, 0x82, 0x6e, 0x49, 0xa5, 0x8c, 0x60, 0xde, 0x32, 0x1b, 0xf7, 0x7a, 0x96, 0xbf, 0x53, 0xed, 0x1, 0x28, 0xc4, 0x2f, 0xc3, 0xea, 0x6, 0xb8, 0x54, 0x7d, 0x91, 0x1c, 0xf0, 0xd9, 0x35, 0x8b, 0x67, 0x4e, 0xa2, 0x17, 0xfb, 0xd2, 0x3e, 0x80, 0x6c, 0x45, 0xa9, 0x24, 0xc8, 0xe1, 0xd, 0xb3, 0x5f, 0x76, 0x9a, 0x71, 0x9d, 0xb4, 0x58, 0xe6, 0xa, 0x23, 0xcf, 0x42, 0xae, 0x87, 0x6b, 0xd5, 0x39, 0x10, 0xfc, 0xdb, 0x37, 0x1e, 0xf2, 0x4c, 0xa0, 0x89, 0x65, 0xe8, 0x4, 0x2d, 0xc1, 0x7f, 0x93, 0xba, 0x56, 0xbd, 0x51, 0x78, 0x94, 0x2a, 0xc6, 0xef, 0x3, 0x8e, 0x62, 0x4b, 0xa7, 0x19, 0xf5, 0xdc, 0x30, 0x92, 0x7e, 0x57, 0xbb, 0x5, 0xe9, 0xc0, 0x2c, 0xa1, 0x4d, 0x64, 0x88, 0x36, 0xda, 0xf3, 0x1f, 0xf4, 0x18, 0x31, 0xdd, 0x63, 0x8f, 0xa6, 0x4a, 0xc7, 0x2b, 0x2, 0xee, 0x50, 0xbc, 0x95, 0x79, 0x5e, 0xb2, 0x9b, 0x77, 0xc9, 0x25, 0xc, 0xe0, 0x6d, 0x81, 0xa8, 0x44, 0xfa, 0x16, 0x3f, 0xd3, 0x38, 0xd4, 0xfd, 0x11, 0xaf, 0x43, 0x6a, 0x86, 0xb, 0xe7, 0xce, 0x22, 0x9c, 0x70, 0x59, 0xb5}, [256]uint8{0x0, 0xed, 0xc7, 0x2a, 0x93, 0x7e, 0x54, 0xb9, 0x3b, 0xd6, 0xfc, 0x11, 0xa8, 0x45, 0x6f, 0x82, 0x76, 0x9b, 0xb1, 0x5c, 0xe5, 0x8, 0x22, 0xcf, 0x4d, 0xa0, 0x8a, 0x67, 0xde, 0x33, 0x19, 0xf4, 0xec, 0x1, 0x2b, 0xc6, 0x7f, 0x92, 0xb8, 0x55, 0xd7, 0x3a, 0x10, 0xfd, 0x44, 0xa9, 0x83, 0x6e, 0x9a, 0x77, 0x5d, 0xb0, 0x9, 0xe4, 0xce, 0x23, 0xa1, 0x4c, 0x66, 0x8b, 0x32, 0xdf, 0xf5, 0x18, 0xc5, 0x28, 0x2, 0xef, 0x56, 0xbb, 0x91, 0x7c, 0xfe, 0x13, 0x39, 0xd4, 0x6d, 0x80, 0xaa, 0x47, 0xb3, 0x5e, 0x74, 0x99, 0x20, 0xcd, 0xe7, 0xa, 0x88, 0x65, 0x4f, 0xa2, 0x1b, 0xf6, 0xdc, 0x31, 0x29, 0xc4, 0xee, 0x3, 0xba, 0x57, 0x7d, 0x90, 0x12, 0xff, 0xd5, 0x38, 0x81, 0x6c, 0x46, 0xab, 0x5f, 0xb2, 0x98, 0x75, 0xcc, 0x21, 0xb, 0xe6, 0x64, 0x89, 0xa3, 0x4e, 0xf7, 0x1a, 0x30, 0xdd, 0x97, 0x7a, 0x50, 0xbd, 0x4, 0xe9, 0xc3, 0x2e, 0xac, 0x41, 0x6b, 0x86, 0x3f, 0xd2, 0xf8, 0x15, 0xe1, 0xc, 0x26, 0xcb, 0x72, 0x9f, 0xb5, 0x58, 0xda, 0x37, 0x1d, 0xf0, 0x49, 0xa4, 0x8e, 0x63, 0x7b, 0x96, 0xbc, 0x51, 0xe8, 0x5, 0x2f, 0xc2, 0x40, 0xad, 0x87, 0x6a, 0xd3, 0x3e, 0x14, 0xf9, 0xd, 0xe0, 0xca, 0x27, 0x9e, 0x73, 0x59, 0xb4, 0x36, 0xdb, 0xf1, 0x1c, 0xa5, 0x48, 0x62, 0x8f, 0x52, 0xbf, 0x95, 0x78, 0xc1, 0x2c, 0x6, 0xeb, 0x69, 0x84, 0xae, 0x43, 0xfa, 0x17, 0x3d, 0xd0, 0x24, 0xc9, 0xe3, 0xe, 0xb7, 0x5a, 0x70, 0x9d, 0x1f, 0xf2, 0xd8, 0x35, 0x8c, 0x61, 0x4b, 0xa6, 0xbe, 0x53, 0x79, 0x94, 0x2d, 0xc0, 0xea, 0x7, 0x85, 0x68, 0x42, 0xaf, 0x16, 0xfb, 0xd1, 0x3c, 0xc8, 0x25, 0xf, 0xe2, 0x5b, 0xb6, 0x9c, 0x71, 0xf3, 0x1e, 0x34, 0xd9, 0x60, 0x8d, 0xa7, 0x4a}, [256]uint8{0x0, 0xee, 0xc1, 0x2f, 0x9f, 0x71, 0x5e, 0xb0, 0x23, 0xcd, 0xe2, 0xc, 0xbc, 0x52, 0x7d, 0x93, 0x46, 0xa8, 0x87, 0x69, 0xd9, 0x37, 0x18, 0xf6, 0x65, 0x8b, 0xa4, 0x4a, 0xfa, 0x14, 0x3b, 0xd5, 0x8c, 0x62, 0x4d, 0xa3, 0x13, 0xfd, 0xd2, 0x3c, 0xaf, 0x41, 0x6e, 0x80, 0x30, 0xde, 0xf1, 0x1f, 0xca, 0x24, 0xb, 0xe5, 0x55, 0xbb, 0x94, 0x7a, 0xe9, 0x7, 0x28, 0xc6, 0x76, 0x98, 0xb7, 0x59, 0x5, 0xeb, 0xc4, 0x2a, 0x9a, 0x74, 0x5b, 0xb5, 0x26, 0xc8, 0xe7, 0x9, 0xb9, 0x57, 0x78, 0x96, 0x43, 0xad, 0x82, 0x6c, 0xdc, 0x32, 0x1d, 0xf3, 0x60, 0x8e, 0xa1, 0x4f, 0xff, 0x11, 0x3e, 0xd0, 0x89, 0x67, 0x48, 0xa6, 0x16, 0xf8, 0xd7, 0x39, 0xaa, 0x44, 0x6b, 0x85, 0x35, 0xdb, 0xf4, 0x1a, 0xcf, 0x21, 0xe, 0xe0, 0x50, 0xbe, 0x91, 0x7f, 0xec, 0x2, 0x2d, 0xc3, 0x73, 0x9d, 0xb2, 0x5c, 0xa, 0xe4, 0xcb, 0x25, 0x95, 0x7b, 0x54, 0xba, 0x29, 0xc7, 0xe8, 0x6, 0xb6, 0x58, 0x77, 0x99, 0x4c, 0xa2, 0x8d, 0x63, 0xd3, 0x3d, 0x12, 0xfc, 0x6f, 0x81, 0xae, 0x40, 0xf0, 0x1e, 0x31, 0xdf, 0x86, 0x68, 0x47, 0xa9, 0x19, 0xf7, 0xd8, 0x36, 0xa5, 0x4b, 0x64, 0x8a, 0x3a, 0xd4, 0xfb, 0x15, 0xc0, 0x2e, 0x1, 0xef, 0x5f, 0xb1, 0x9e, 0x70, 0xe3, 0xd, 0x22, 0xcc, 0x7c, 0x92, 0xbd, 0x53, 0xf, 0xe1, 0xce, 0x20, 0x90, 0x7e, 0x51, 0xbf, 0x2c, 0xc2, 0xed, 0x3, 0xb3, 0x5d, 0x72, 0x9c, 0x49, 0xa7, 0x88, 0x66, 0xd6, 0x38, 0x17, 0xf9, 0x6a, 0x84, 0xab, 0x45, 0xf5, 0x1b, 0x34, 0xda, 0x83, 0x6d, 0x42, 0xac, 0x1c, 0xf2, 0xdd, 0x33, 0xa0, 0x4e, 0x61, 0x8f, 0x3f, 0xd1, 0xfe, 0x10, 0xc5, 0x2b, 0x4, 0xea, 0x5a, 0xb4, 0x9b, 0x75, 0xe6, 0x8, 0x27, 0xc9, 0x79, 0x97, 0xb8, 0x56}, [256]uint8{0x0, 0xef, 0xc3, 0x2c, 0x9b, 0x74, 0x58, 0xb7, 0x2b, 0xc4, 0xe8, 0x7, 0xb0, 0x5f, 0x73, 0x9c, 0x56, 0xb9, 0x95, 0x7a, 0xcd, 0x22, 0xe, 0xe1, 0x7d, 0x92, 0xbe, 0x51, 0xe6, 0x9, 0x25, 0xca, 0xac, 0x43, 0x6f, 0x80, 0x37, 0xd8, 0xf4, 0x1b, 0x87, 0x68, 0x44, 0xab, 0x1c, 0xf3, 0xdf, 0x30, 0xfa, 0x15, 0x39, 0xd6, 0x61, 0x8e, 0xa2, 0x4d, 0xd1, 0x3e, 0x12, 0xfd, 0x4a, 0xa5, 0x89, 0x66, 0x45, 0xaa, 0x86, 0x69, 0xde, 0x31, 0x1d, 0xf2, 0x6e, 0x81, 0xad, 0x42, 0xf5, 0x1a, 0x36, 0xd9, 0x13, 0xfc, 0xd0, 0x3f, 0x88, 0x67, 0x4b, 0xa4, 0x38, 0xd7, 0xfb, 0x14, 0xa3, 0x4c, 0x60, 0x8f, 0xe9, 0x6, 0x2a, 0xc5, 0x72, 0x9d, 0xb1, 0x5e, 0xc2, 0x2d, 0x1, 0xee, 0x59, 0xb6, 0x9a, 0x75, 0xbf, 0x50, 0x7c, 0x93, 0x24, 0xcb, 0xe7, 0x8, 0x94, 0x7b, 0x57, 0xb8, 0xf, 0xe0, 0xcc, 0x23, 0x8a, 0x65, 0x49, 0xa6, 0x11, 0xfe, 0xd2, 0x3d, 0xa1, 0x4e, 0x62, 0x8d, 0x3a, 0xd5, 0xf9, 0x16, 0xdc, 0x33, 0x1f, 0xf0, 0x47, 0xa8, 0x84, 0x6b, 0xf7, 0x18, 0x34, 0xdb, 0x6c, 0x83, 0xaf, 0x40, 0x26, 0xc9, 0xe5, 0xa, 0xbd, 0x52, 0x7e, 0x91, 0xd, 0xe2, 0xce, 0x21, 0x96, 0x79, 0x55, 0xba, 0x70, 0x9f, 0xb3, 0x5c, 0xeb, 0x4, 0x28, 0xc7, 0x5b, 0xb4, 0x98, 0x77, 0xc0, 0x2f, 0x3, 0xec, 0xcf, 0x20, 0xc, 0xe3, 0x54, 0xbb, 0x97, 0x78, 0xe4, 0xb, 0x27, 0xc8, 0x7f, 0x90, 0xbc, 0x53, 0x99, 0x76, 0x5a, 0xb5, 0x2, 0xed, 0xc1, 0x2e, 0xb2, 0x5d, 0x71, 0x9e, 0x29, 0xc6, 0xea, 0x5, 0x63, 0x8c, 0xa0, 0x4f, 0xf8, 0x17, 0x3b, 0xd4, 0x48, 0xa7, 0x8b, 0x64, 0xd3, 0x3c, 0x10, 0xff, 0x35, 0xda, 0xf6, 0x19, 0xae, 0x41, 0x6d, 0x82, 0x1e, 0xf1, 0xdd, 0x32, 0x85, 0x6a, 0x46, 0xa9}, [256]uint8{0x0, 0xf0, 0xfd, 0xd, 0xe7, 0x17, 0x1a, 0xea, 0xd3, 0x23, 0x2e, 0xde, 0x34, 0xc4, 0xc9, 0x39, 0xbb, 0x4b, 0x46, 0xb6, 0x5c, 0xac, 0xa1, 0x51, 0x68, 0x98, 0x95, 0x65, 0x8f, 0x7f, 0x72, 0x82, 0x6b, 0x9b, 0x96, 0x66, 0x8c, 0x7c, 0x71, 0x81, 0xb8, 0x48, 0x45, 0xb5, 0x5f, 0xaf, 0xa2, 0x52, 0xd0, 0x20, 0x2d, 0xdd, 0x37, 0xc7, 0xca, 0x3a, 0x3, 0xf3, 0xfe, 0xe, 0xe4, 0x14, 0x19, 0xe9, 0xd6, 0x26, 0x2b, 0xdb, 0x31, 0xc1, 0xcc, 0x3c, 0x5, 0xf5, 0xf8, 0x8, 0xe2, 0x12, 0x1f, 0xef, 0x6d, 0x9d, 0x90, 0x60, 0x8a, 0x7a, 0x77, 0x87, 0xbe, 0x4e, 0x43, 0xb3, 0x59, 0xa9, 0xa4, 0x54, 0xbd, 0x4d, 0x40, 0xb0, 0x5a, 0xaa, 0xa7, 0x57, 0x6e, 0x9e, 0x93, 0x63, 0x89, 0x79, 0x74, 0x84, 0x6, 0xf6, 0xfb, 0xb, 0xe1, 0x11, 0x1c, 0xec, 0xd5, 0x25, 0x28, 0xd8, 0x32, 0xc2, 0xcf, 0x3f, 0xb1, 0x41, 0x4c, 0xbc, 0x56, 0xa6, 0xab, 0x5b, 0x62, 0x92, 0x9f, 0x6f, 0x85, 0x75, 0x78, 0x88, 0xa, 0xfa, 0xf7, 0x7, 0xed, 0x1d, 0x10, 0xe0, 0xd9, 0x29, 0x24, 0xd4, 0x3e, 0xce, 0xc3, 0x33, 0xda, 0x2a, 0x27, 0xd7, 0x3d, 0xcd, 0xc0, 0x30, 0x9, 0xf9, 0xf4, 0x4, 0xee, 0x1e, 0x13, 0xe3, 0x61, 0x91, 0x9c, 0x6c, 0x86, 0x76, 0x7b, 0x8b, 0xb2, 0x42, 0x4f, 0xbf, 0x55, 0xa5, 0xa8, 0x58, 0x67, 0x97, 0x9a, 0x6a, 0x80, 0x70, 0x7d, 0x8d, 0xb4, 0x44, 0x49, 0xb9, 0x53, 0xa3, 0xae, 0x5e, 0xdc, 0x2c, 0x21, 0xd1, 0x3b, 0xcb, 0xc6, 0x36, 0xf, 0xff, 0xf2, 0x2, 0xe8, 0x18, 0x15, 0xe5, 0xc, 0xfc, 0xf1, 0x1, 0xeb, 0x1b, 0x16, 0xe6, 0xdf, 0x2f, 0x22, 0xd2, 0x38, 0xc8, 0xc5, 0x35, 0xb7, 0x47, 0x4a, 0xba, 0x50, 0xa0, 0xad, 0x5d, 0x64, 0x94, 0x99, 0x69, 0x83, 0x73, 0x7e, 0x8e}, [256]uint8{0x0, 0xf1, 0xff, 0xe, 0xe3, 0x12, 0x1c, 0xed, 0xdb, 0x2a, 0x24, 0xd5, 0x38, 0xc9, 0xc7, 0x36, 0xab, 0x5a, 0x54, 0xa5, 0x48, 0xb9, 0xb7, 0x46, 0x70, 0x81, 0x8f, 0x7e, 0x93, 0x62, 0x6c, 0x9d, 0x4b, 0xba, 0xb4, 0x45, 0xa8, 0x59, 0x57, 0xa6, 0x90, 0x61, 0x6f, 0x9e, 0x73, 0x82, 0x8c, 0x7d, 0xe0, 0x11, 0x1f, 0xee, 0x3, 0xf2, 0xfc, 0xd, 0x3b, 0xca, 0xc4, 0x35, 0xd8, 0x29, 0x27, 0xd6, 0x96, 0x67, 0x69, 0x98, 0x75, 0x84, 0x8a, 0x7b, 0x4d, 0xbc, 0xb2, 0x43, 0xae, 0x5f, 0x51, 0xa0, 0x3d, 0xcc, 0xc2, 0x33, 0xde, 0x2f, 0x21, 0xd0, 0xe6, 0x17, 0x19, 0xe8, 0x5, 0xf4, 0xfa, 0xb, 0xdd, 0x2c, 0x22, 0xd3, 0x3e, 0xcf, 0xc1, 0x30, 0x6, 0xf7, 0xf9, 0x8, 0xe5, 0x14, 0x1a, 0xeb, 0x76, 0x87, 0x89, 0x78, 0x95, 0x64, 0x6a, 0x9b, 0xad, 0x5c, 0x52, 0xa3, 0x4e, 0xbf, 0xb1, 0x40, 0x31, 0xc0, 0xce, 0x3f, 0xd2, 0x23, 0x2d, 0xdc, 0xea, 0x1b, 0x15, 0xe4, 0x9, 0xf8, 0xf6, 0x7, 0x9a, 0x6b, 0x65, 0x94, 0x79, 0x88, 0x86, 0x77, 0x41, 0xb0, 0xbe, 0x4f, 0xa2, 0x53, 0x5d, 0xac, 0x7a, 0x8b, 0x85, 0x74, 0x99, 0x68, 0x66, 0x97, 0xa1, 0x50, 0x5e, 0xaf, 0x42, 0xb3, 0xbd, 0x4c, 0xd1, 0x20, 0x2e, 0xdf, 0x32, 0xc3, 0xcd, 0x3c, 0xa, 0xfb, 0xf5, 0x4, 0xe9, 0x18, 0x16, 0xe7, 0xa7, 0x56, 0x58, 0xa9, 0x44, 0xb5, 0xbb, 0x4a, 0x7c, 0x8d, 0x83, 0x72, 0x9f, 0x6e, 0x60, 0x91, 0xc, 0xfd, 0xf3, 0x2, 0xef, 0x1e, 0x10, 0xe1, 0xd7, 0x26, 0x28, 0xd9, 0x34, 0xc5, 0xcb, 0x3a, 0xec, 0x1d, 0x13, 0xe2, 0xf, 0xfe, 0xf0, 0x1, 0x37, 0xc6, 0xc8, 0x39, 0xd4, 0x25, 0x2b, 0xda, 0x47, 0xb6, 0xb8, 0x49, 0xa4, 0x55, 0x5b, 0xaa, 0x9c, 0x6d, 0x63, 0x92, 0x7f, 0x8e, 0x80, 0x71}, [256]uint8{0x0, 0xf2, 0xf9, 0xb, 0xef, 0x1d, 0x16, 0xe4, 0xc3, 0x31, 0x3a, 0xc8, 0x2c, 0xde, 0xd5, 0x27, 0x9b, 0x69, 0x62, 0x90, 0x74, 0x86, 0x8d, 0x7f, 0x58, 0xaa, 0xa1, 0x53, 0xb7, 0x45, 0x4e, 0xbc, 0x2b, 0xd9, 0xd2, 0x20, 0xc4, 0x36, 0x3d, 0xcf, 0xe8, 0x1a, 0x11, 0xe3, 0x7, 0xf5, 0xfe, 0xc, 0xb0, 0x42, 0x49, 0xbb, 0x5f, 0xad, 0xa6, 0x54, 0x73, 0x81, 0x8a, 0x78, 0x9c, 0x6e, 0x65, 0x97, 0x56, 0xa4, 0xaf, 0x5d, 0xb9, 0x4b, 0x40, 0xb2, 0x95, 0x67, 0x6c, 0x9e, 0x7a, 0x88, 0x83, 0x71, 0xcd, 0x3f, 0x34, 0xc6, 0x22, 0xd0, 0xdb, 0x29, 0xe, 0xfc, 0xf7, 0x5, 0xe1, 0x13, 0x18, 0xea, 0x7d, 0x8f, 0x84, 0x76, 0x92, 0x60, 0x6b, 0x99, 0xbe, 0x4c, 0x47, 0xb5, 0x51, 0xa3, 0xa8, 0x5a, 0xe6, 0x14, 0x1f, 0xed, 0x9, 0xfb, 0xf0, 0x2, 0x25, 0xd7, 0xdc, 0x2e, 0xca, 0x38, 0x33, 0xc1, 0xac, 0x5e, 0x55, 0xa7, 0x43, 0xb1, 0xba, 0x48, 0x6f, 0x9d, 0x96, 0x64, 0x80, 0x72, 0x79, 0x8b, 0x37, 0xc5, 0xce, 0x3c, 0xd8, 0x2a, 0x21, 0xd3, 0xf4, 0x6, 0xd, 0xff, 0x1b, 0xe9, 0xe2, 0x10, 0x87, 0x75, 0x7e, 0x8c, 0x68, 0x9a, 0x91, 0x63, 0x44, 0xb6, 0xbd, 0x4f, 0xab, 0x59, 0x52, 0xa0, 0x1c, 0xee, 0xe5, 0x17, 0xf3, 0x1, 0xa, 0xf8, 0xdf, 0x2d, 0x26, 0xd4, 0x30, 0xc2, 0xc9, 0x3b, 0xfa, 0x8, 0x3, 0xf1, 0x15, 0xe7, 0xec, 0x1e, 0x39, 0xcb, 0xc0, 0x32, 0xd6, 0x24, 0x2f, 0xdd, 0x61, 0x93, 0x98, 0x6a, 0x8e, 0x7c, 0x77, 0x85, 0xa2, 0x50, 0x5b, 0xa9, 0x4d, 0xbf, 0xb4, 0x46, 0xd1, 0x23, 0x28, 0xda, 0x3e, 0xcc, 0xc7, 0x35, 0x12, 0xe0, 0xeb, 0x19, 0xfd, 0xf, 0x4, 0xf6, 0x4a, 0xb8, 0xb3, 0x41, 0xa5, 0x57, 0x5c, 0xae, 0x89, 0x7b, 0x70, 0x82, 0x66, 0x94, 0x9f, 0x6d}, [256]uint8{0x0, 0xf3, 0xfb, 0x8, 0xeb, 0x18, 0x10, 0xe3, 0xcb, 0x38, 0x30, 0xc3, 0x20, 0xd3, 0xdb, 0x28, 0x8b, 0x78, 0x70, 0x83, 0x60, 0x93, 0x9b, 0x68, 0x40, 0xb3, 0xbb, 0x48, 0xab, 0x58, 0x50, 0xa3, 0xb, 0xf8, 0xf0, 0x3, 0xe0, 0x13, 0x1b, 0xe8, 0xc0, 0x33, 0x3b, 0xc8, 0x2b, 0xd8, 0xd0, 0x23, 0x80, 0x73, 0x7b, 0x88, 0x6b, 0x98, 0x90, 0x63, 0x4b, 0xb8, 0xb0, 0x43, 0xa0, 0x53, 0x5b, 0xa8, 0x16, 0xe5, 0xed, 0x1e, 0xfd, 0xe, 0x6, 0xf5, 0xdd, 0x2e, 0x26, 0xd5, 0x36, 0xc5, 0xcd, 0x3e, 0x9d, 0x6e, 0x66, 0x95, 0x76, 0x85, 0x8d, 0x7e, 0x56, 0xa5, 0xad, 0x5e, 0xbd, 0x4e, 0x46, 0xb5, 0x1d, 0xee, 0xe6, 0x15, 0xf6, 0x5, 0xd, 0xfe, 0xd6, 0x25, 0x2d, 0xde, 0x3d, 0xce, 0xc6, 0x35, 0x96, 0x65, 0x6d, 0x9e, 0x7d, 0x8e, 0x86, 0x75, 0x5d, 0xae, 0xa6, 0x55, 0xb6, 0x45, 0x4d, 0xbe, 0x2c, 0xdf, 0xd7, 0x24, 0xc7, 0x34, 0x3c, 0xcf, 0xe7, 0x14, 0x1c, 0xef, 0xc, 0xff, 0xf7, 0x4, 0xa7, 0x54, 0x5c, 0xaf, 0x4c, 0xbf, 0xb7, 0x44, 0x6c, 0x9f, 0x97, 0x64, 0x87, 0x74, 0x7c, 0x8f, 0x27, 0xd4, 0xdc, 0x2f, 0xcc, 0x3f, 0x37, 0xc4, 0xec, 0x1f, 0x17, 0xe4, 0x7, 0xf4, 0xfc, 0xf, 0xac, 0x5f, 0x57, 0xa4, 0x47, 0xb4, 0xbc, 0x4f, 0x67, 0x94, 0x9c, 0x6f, 0x8c, 0x7f, 0x77, 0x84, 0x3a, 0xc9, 0xc1, 0x32, 0xd1, 0x22, 0x2a, 0xd9, 0xf1, 0x2, 0xa, 0xf9, 0x1a, 0xe9, 0xe1, 0x12, 0xb1, 0x42, 0x4a, 0xb9, 0x5a, 0xa9, 0xa1, 0x52, 0x7a, 0x89, 0x81, 0x72, 0x91, 0x62, 0x6a, 0x99, 0x31, 0xc2, 0xca, 0x39, 0xda, 0x29, 0x21, 0xd2, 0xfa, 0x9, 0x1, 0xf2, 0x11, 0xe2, 0xea, 0x19, 0xba, 0x49, 0x41, 0xb2, 0x51, 0xa2, 0xaa, 0x59, 0x71, 0x82, 0x8a, 0x79, 0x9a, 0x69, 0x61, 0x92}, [256]uint8{0x0, 0xf4, 0xf5, 0x1, 0xf7, 0x3, 0x2, 0xf6, 0xf3, 0x7, 0x6, 0xf2, 0x4, 0xf0, 0xf1, 0x5, 0xfb, 0xf, 0xe, 0xfa, 0xc, 0xf8, 0xf9, 0xd, 0x8, 0xfc, 0xfd, 0x9, 0xff, 0xb, 0xa, 0xfe, 0xeb, 0x1f, 0x1e, 0xea, 0x1c, 0xe8, 0xe9, 0x1d, 0x18, 0xec, 0xed, 0x19, 0xef, 0x1b, 0x1a, 0xee, 0x10, 0xe4, 0xe5, 0x11, 0xe7, 0x13, 0x12, 0xe6, 0xe3, 0x17, 0x16, 0xe2, 0x14, 0xe0, 0xe1, 0x15, 0xcb, 0x3f, 0x3e, 0xca, 0x3c, 0xc8, 0xc9, 0x3d, 0x38, 0xcc, 0xcd, 0x39, 0xcf, 0x3b, 0x3a, 0xce, 0x30, 0xc4, 0xc5, 0x31, 0xc7, 0x33, 0x32, 0xc6, 0xc3, 0x37, 0x36, 0xc2, 0x34, 0xc0, 0xc1, 0x35, 0x20, 0xd4, 0xd5, 0x21, 0xd7, 0x23, 0x22, 0xd6, 0xd3, 0x27, 0x26, 0xd2, 0x24, 0xd0, 0xd1, 0x25, 0xdb, 0x2f, 0x2e, 0xda, 0x2c, 0xd8, 0xd9, 0x2d, 0x28, 0xdc, 0xdd, 0x29, 0xdf, 0x2b, 0x2a, 0xde, 0x8b, 0x7f, 0x7e, 0x8a, 0x7c, 0x88, 0x89, 0x7d, 0x78, 0x8c, 0x8d, 0x79, 0x8f, 0x7b, 0x7a, 0x8e, 0x70, 0x84, 0x85, 0x71, 0x87, 0x73, 0x72, 0x86, 0x83, 0x77, 0x76, 0x82, 0x74, 0x80, 0x81, 0x75, 0x60, 0x94, 0x95, 0x61, 0x97, 0x63, 0x62, 0x96, 0x93, 0x67, 0x66, 0x92, 0x64, 0x90, 0x91, 0x65, 0x9b, 0x6f, 0x6e, 0x9a, 0x6c, 0x98, 0x99, 0x6d, 0x68, 0x9c, 0x9d, 0x69, 0x9f, 0x6b, 0x6a, 0x9e, 0x40, 0xb4, 0xb5, 0x41, 0xb7, 0x43, 0x42, 0xb6, 0xb3, 0x47, 0x46, 0xb2, 0x44, 0xb0, 0xb1, 0x45, 0xbb, 0x4f, 0x4e, 0xba, 0x4c, 0xb8, 0xb9, 0x4d, 0x48, 0xbc, 0xbd, 0x49, 0xbf, 0x4b, 0x4a, 0xbe, 0xab, 0x5f, 0x5e, 0xaa, 0x5c, 0xa8, 0xa9, 0x5d, 0x58, 0xac, 0xad, 0x59, 0xaf, 0x5b, 0x5a, 0xae, 0x50, 0xa4, 0xa5, 0x51, 0xa7, 0x53, 0x52, 0xa6, 0xa3, 0x57, 0x56, 0xa2, 0x54, 0xa0, 0xa1, 0x55}, [256]uint8{0x0, 0xf5, 0xf7, 0x2, 0xf3, 0x6, 0x4, 0xf1, 0xfb, 0xe, 0xc, 0xf9, 0x8, 0xfd, 0xff, 0xa, 0xeb, 0x1e, 0x1c, 0xe9, 0x18, 0xed, 0xef, 0x1a, 0x10, 0xe5, 0xe7, 0x12, 0xe3, 0x16, 0x14, 0xe1, 0xcb, 0x3e, 0x3c, 0xc9, 0x38, 0xcd, 0xcf, 0x3a, 0x30, 0xc5, 0xc7, 0x32, 0xc3, 0x36, 0x34, 0xc1, 0x20, 0xd5, 0xd7, 0x22, 0xd3, 0x26, 0x24, 0xd1, 0xdb, 0x2e, 0x2c, 0xd9, 0x28, 0xdd, 0xdf, 0x2a, 0x8b, 0x7e, 0x7c, 0x89, 0x78, 0x8d, 0x8f, 0x7a, 0x70, 0x85, 0x87, 0x72, 0x83, 0x76, 0x74, 0x81, 0x60, 0x95, 0x97, 0x62, 0x93, 0x66, 0x64, 0x91, 0x9b, 0x6e, 0x6c, 0x99, 0x68, 0x9d, 0x9f, 0x6a, 0x40, 0xb5, 0xb7, 0x42, 0xb3, 0x46, 0x44, 0xb1, 0xbb, 0x4e, 0x4c, 0xb9, 0x48, 0xbd, 0xbf, 0x4a, 0xab, 0x5e, 0x5c, 0xa9, 0x58, 0xad, 0xaf, 0x5a, 0x50, 0xa5, 0xa7, 0x52, 0xa3, 0x56, 0x54, 0xa1, 0xb, 0xfe, 0xfc, 0x9, 0xf8, 0xd, 0xf, 0xfa, 0xf0, 0x5, 0x7, 0xf2, 0x3, 0xf6, 0xf4, 0x1, 0xe0, 0x15, 0x17, 0xe2, 0x13, 0xe6, 0xe4, 0x11, 0x1b, 0xee, 0xec, 0x19, 0xe8, 0x1d, 0x1f, 0xea, 0xc0, 0x35, 0x37, 0xc2, 0x33, 0xc6, 0xc4, 0x31, 0x3b, 0xce, 0xcc, 0x39, 0xc8, 0x3d, 0x3f, 0xca, 0x2b, 0xde, 0xdc, 0x29, 0xd8, 0x2d, 0x2f, 0xda, 0xd0, 0x25, 0x27, 0xd2, 0x23, 0xd6, 0xd4, 0x21, 0x80, 0x75, 0x77, 0x82, 0x73, 0x86, 0x84, 0x71, 0x7b, 0x8e, 0x8c, 0x79, 0x88, 0x7d, 0x7f, 0x8a, 0x6b, 0x9e, 0x9c, 0x69, 0x98, 0x6d, 0x6f, 0x9a, 0x90, 0x65, 0x67, 0x92, 0x63, 0x96, 0x94, 0x61, 0x4b, 0xbe, 0xbc, 0x49, 0xb8, 0x4d, 0x4f, 0xba, 0xb0, 0x45, 0x47, 0xb2, 0x43, 0xb6, 0xb4, 0x41, 0xa0, 0x55, 0x57, 0xa2, 0x53, 0xa6, 0xa4, 0x51, 0x5b, 0xae, 0xac, 0x59, 0xa8, 0x5d, 0x5f, 0xaa}, [256]uint8{0x0, 0xf6, 0xf1, 0x7, 0xff, 0x9, 0xe, 0xf8, 0xe3, 0x15, 0x12, 0xe4, 0x1c, 0xea, 0xed, 0x1b, 0xdb, 0x2d, 0x2a, 0xdc, 0x24, 0xd2, 0xd5, 0x23, 0x38, 0xce, 0xc9, 0x3f, 0xc7, 0x31, 0x36, 0xc0, 0xab, 0x5d, 0x5a, 0xac, 0x54, 0xa2, 0xa5, 0x53, 0x48, 0xbe, 0xb9, 0x4f, 0xb7, 0x41, 0x46, 0xb0, 0x70, 0x86, 0x81, 0x77, 0x8f, 0x79, 0x7e, 0x88, 0x93, 0x65, 0x62, 0x94, 0x6c, 0x9a, 0x9d, 0x6b, 0x4b, 0xbd, 0xba, 0x4c, 0xb4, 0x42, 0x45, 0xb3, 0xa8, 0x5e, 0x59, 0xaf, 0x57, 0xa1, 0xa6, 0x50, 0x90, 0x66, 0x61, 0x97, 0x6f, 0x99, 0x9e, 0x68, 0x73, 0x85, 0x82, 0x74, 0x8c, 0x7a, 0x7d, 0x8b, 0xe0, 0x16, 0x11, 0xe7, 0x1f, 0xe9, 0xee, 0x18, 0x3, 0xf5, 0xf2, 0x4, 0xfc, 0xa, 0xd, 0xfb, 0x3b, 0xcd, 0xca, 0x3c, 0xc4, 0x32, 0x35, 0xc3, 0xd8, 0x2e, 0x29, 0xdf, 0x27, 0xd1, 0xd6, 0x20, 0x96, 0x60, 0x67, 0x91, 0x69, 0x9f, 0x98, 0x6e, 0x75, 0x83, 0x84, 0x72, 0x8a, 0x7c, 0x7b, 0x8d, 0x4d, 0xbb, 0xbc, 0x4a, 0xb2, 0x44, 0x43, 0xb5, 0xae, 0x58, 0x5f, 0xa9, 0x51, 0xa7, 0xa0, 0x56, 0x3d, 0xcb, 0xcc, 0x3a, 0xc2, 0x34, 0x33, 0xc5, 0xde, 0x28, 0x2f, 0xd9, 0x21, 0xd7, 0xd0, 0x26, 0xe6, 0x10, 0x17, 0xe1, 0x19, 0xef, 0xe8, 0x1e, 0x5, 0xf3, 0xf4, 0x2, 0xfa, 0xc, 0xb, 0xfd, 0xdd, 0x2b, 0x2c, 0xda, 0x22, 0xd4, 0xd3, 0x25, 0x3e, 0xc8, 0xcf, 0x39, 0xc1, 0x37, 0x30, 0xc6, 0x6, 0xf0, 0xf7, 0x1, 0xf9, 0xf, 0x8, 0xfe, 0xe5, 0x13, 0x14, 0xe2, 0x1a, 0xec, 0xeb, 0x1d, 0x76, 0x80, 0x87, 0x71, 0x89, 0x7f, 0x78, 0x8e, 0x95, 0x63, 0x64, 0x92, 0x6a, 0x9c, 0x9b, 0x6d, 0xad, 0x5b, 0x5c, 0xaa, 0x52, 0xa4, 0xa3, 0x55, 0x4e, 0xb8, 0xbf, 0x49, 0xb1, 0x47, 0x40, 0xb6}, [256]uint8{0x0, 0xf7, 0xf3, 0x4, 0xfb, 0xc, 0x8, 0xff, 0xeb, 0x1c, 0x18, 0xef, 0x10, 0xe7, 0xe3, 0x14, 0xcb, 0x3c, 0x38, 0xcf, 0x30, 0xc7, 0xc3, 0x34, 0x20, 0xd7, 0xd3, 0x24, 0xdb, 0x2c, 0x28, 0xdf, 0x8b, 0x7c, 0x78, 0x8f, 0x70, 0x87, 0x83, 0x74, 0x60, 0x97, 0x93, 0x64, 0x9b, 0x6c, 0x68, 0x9f, 0x40, 0xb7, 0xb3, 0x44, 0xbb, 0x4c, 0x48, 0xbf, 0xab, 0x5c, 0x58, 0xaf, 0x50, 0xa7, 0xa3, 0x54, 0xb, 0xfc, 0xf8, 0xf, 0xf0, 0x7, 0x3, 0xf4, 0xe0, 0x17, 0x13, 0xe4, 0x1b, 0xec, 0xe8, 0x1f, 0xc0, 0x37, 0x33, 0xc4, 0x3b, 0xcc, 0xc8, 0x3f, 0x2b, 0xdc, 0xd8, 0x2f, 0xd0, 0x27, 0x23, 0xd4, 0x80, 0x77, 0x73, 0x84, 0x7b, 0x8c, 0x88, 0x7f, 0x6b, 0x9c, 0x98, 0x6f, 0x90, 0x67, 0x63, 0x94, 0x4b, 0xbc, 0xb8, 0x4f, 0xb0, 0x47, 0x43, 0xb4, 0xa0, 0x57, 0x53, 0xa4, 0x5b, 0xac, 0xa8, 0x5f, 0x16, 0xe1, 0xe5, 0x12, 0xed, 0x1a, 0x1e, 0xe9, 0xfd, 0xa, 0xe, 0xf9, 0x6, 0xf1, 0xf5, 0x2, 0xdd, 0x2a, 0x2e, 0xd9, 0x26, 0xd1, 0xd5, 0x22, 0x36, 0xc1, 0xc5, 0x32, 0xcd, 0x3a, 0x3e, 0xc9, 0x9d, 0x6a, 0x6e, 0x99, 0x66, 0x91, 0x95, 0x62, 0x76, 0x81, 0x85, 0x72, 0x8d, 0x7a, 0x7e, 0x89, 0x56, 0xa1, 0xa5, 0x52, 0xad, 0x5a, 0x5e, 0xa9, 0xbd, 0x4a, 0x4e, 0xb9, 0x46, 0xb1, 0xb5, 0x42, 0x1d, 0xea, 0xee, 0x19, 0xe6, 0x11, 0x15, 0xe2, 0xf6, 0x1, 0x5, 0xf2, 0xd, 0xfa, 0xfe, 0x9, 0xd6, 0x21, 0x25, 0xd2, 0x2d, 0xda, 0xde, 0x29, 0x3d, 0xca, 0xce, 0x39, 0xc6, 0x31, 0x35, 0xc2, 0x96, 0x61, 0x65, 0x92, 0x6d, 0x9a, 0x9e, 0x69, 0x7d, 0x8a, 0x8e, 0x79, 0x86, 0x71, 0x75, 0x82, 0x5d, 0xaa, 0xae, 0x59, 0xa6, 0x51, 0x55, 0xa2, 0xb6, 0x41, 0x45, 0xb2, 0x4d, 0xba, 0xbe, 0x49}, [256]uint8{0x0, 0xf8, 0xed, 0x15, 0xc7, 0x3f, 0x2a, 0xd2, 0x93, 0x6b, 0x7e, 0x86, 0x54, 0xac, 0xb9, 0x41, 0x3b, 0xc3, 0xd6, 0x2e, 0xfc, 0x4, 0x11, 0xe9, 0xa8, 0x50, 0x45, 0xbd, 0x6f, 0x97, 0x82, 0x7a, 0x76, 0x8e, 0x9b, 0x63, 0xb1, 0x49, 0x5c, 0xa4, 0xe5, 0x1d, 0x8, 0xf0, 0x22, 0xda, 0xcf, 0x37, 0x4d, 0xb5, 0xa0, 0x58, 0x8a, 0x72, 0x67, 0x9f, 0xde, 0x26, 0x33, 0xcb, 0x19, 0xe1, 0xf4, 0xc, 0xec, 0x14, 0x1, 0xf9, 0x2b, 0xd3, 0xc6, 0x3e, 0x7f, 0x87, 0x92, 0x6a, 0xb8, 0x40, 0x55, 0xad, 0xd7, 0x2f, 0x3a, 0xc2, 0x10, 0xe8, 0xfd, 0x5, 0x44, 0xbc, 0xa9, 0x51, 0x83, 0x7b, 0x6e, 0x96, 0x9a, 0x62, 0x77, 0x8f, 0x5d, 0xa5, 0xb0, 0x48, 0x9, 0xf1, 0xe4, 0x1c, 0xce, 0x36, 0x23, 0xdb, 0xa1, 0x59, 0x4c, 0xb4, 0x66, 0x9e, 0x8b, 0x73, 0x32, 0xca, 0xdf, 0x27, 0xf5, 0xd, 0x18, 0xe0, 0xc5, 0x3d, 0x28, 0xd0, 0x2, 0xfa, 0xef, 0x17, 0x56, 0xae, 0xbb, 0x43, 0x91, 0x69, 0x7c, 0x84, 0xfe, 0x6, 0x13, 0xeb, 0x39, 0xc1, 0xd4, 0x2c, 0x6d, 0x95, 0x80, 0x78, 0xaa, 0x52, 0x47, 0xbf, 0xb3, 0x4b, 0x5e, 0xa6, 0x74, 0x8c, 0x99, 0x61, 0x20, 0xd8, 0xcd, 0x35, 0xe7, 0x1f, 0xa, 0xf2, 0x88, 0x70, 0x65, 0x9d, 0x4f, 0xb7, 0xa2, 0x5a, 0x1b, 0xe3, 0xf6, 0xe, 0xdc, 0x24, 0x31, 0xc9, 0x29, 0xd1, 0xc4, 0x3c, 0xee, 0x16, 0x3, 0xfb, 0xba, 0x42, 0x57, 0xaf, 0x7d, 0x85, 0x90, 0x68, 0x12, 0xea, 0xff, 0x7, 0xd5, 0x2d, 0x38, 0xc0, 0x81, 0x79, 0x6c, 0x94, 0x46, 0xbe, 0xab, 0x53, 0x5f, 0xa7, 0xb2, 0x4a, 0x98, 0x60, 0x75, 0x8d, 0xcc, 0x34, 0x21, 0xd9, 0xb, 0xf3, 0xe6, 0x1e, 0x64, 0x9c, 0x89, 0x71, 0xa3, 0x5b, 0x4e, 0xb6, 0xf7, 0xf, 0x1a, 0xe2, 0x30, 0xc8, 0xdd, 0x25}, [256]uint8{0x0, 0xf9, 0xef, 0x16, 0xc3, 0x3a, 0x2c, 0xd5, 0x9b, 0x62, 0x74, 0x8d, 0x58, 0xa1, 0xb7, 0x4e, 0x2b, 0xd2, 0xc4, 0x3d, 0xe8, 0x11, 0x7, 0xfe, 0xb0, 0x49, 0x5f, 0xa6, 0x73, 0x8a, 0x9c, 0x65, 0x56, 0xaf, 0xb9, 0x40, 0x95, 0x6c, 0x7a, 0x83, 0xcd, 0x34, 0x22, 0xdb, 0xe, 0xf7, 0xe1, 0x18, 0x7d, 0x84, 0x92, 0x6b, 0xbe, 0x47, 0x51, 0xa8, 0xe6, 0x1f, 0x9, 0xf0, 0x25, 0xdc, 0xca, 0x33, 0xac, 0x55, 0x43, 0xba, 0x6f, 0x96, 0x80, 0x79, 0x37, 0xce, 0xd8, 0x21, 0xf4, 0xd, 0x1b, 0xe2, 0x87, 0x7e, 0x68, 0x91, 0x44, 0xbd, 0xab, 0x52, 0x1c, 0xe5, 0xf3, 0xa, 0xdf, 0x26, 0x30, 0xc9, 0xfa, 0x3, 0x15, 0xec, 0x39, 0xc0, 0xd6, 0x2f, 0x61, 0x98, 0x8e, 0x77, 0xa2, 0x5b, 0x4d, 0xb4, 0xd1, 0x28, 0x3e, 0xc7, 0x12, 0xeb, 0xfd, 0x4, 0x4a, 0xb3, 0xa5, 0x5c, 0x89, 0x70, 0x66, 0x9f, 0x45, 0xbc, 0xaa, 0x53, 0x86, 0x7f, 0x69, 0x90, 0xde, 0x27, 0x31, 0xc8, 0x1d, 0xe4, 0xf2, 0xb, 0x6e, 0x97, 0x81, 0x78, 0xad, 0x54, 0x42, 0xbb, 0xf5, 0xc, 0x1a, 0xe3, 0x36, 0xcf, 0xd9, 0x20, 0x13, 0xea, 0xfc, 0x5, 0xd0, 0x29, 0x3f, 0xc6, 0x88, 0x71, 0x67, 0x9e, 0x4b, 0xb2, 0xa4, 0x5d, 0x38, 0xc1, 0xd7, 0x2e, 0xfb, 0x2, 0x14, 0xed, 0xa3, 0x5a, 0x4c, 0xb5, 0x60, 0x99, 0x8f, 0x76, 0xe9, 0x10, 0x6, 0xff, 0x2a, 0xd3, 0xc5, 0x3c, 0x72, 0x8b, 0x9d, 0x64, 0xb1, 0x48, 0x5e, 0xa7, 0xc2, 0x3b, 0x2d, 0xd4, 0x1, 0xf8, 0xee, 0x17, 0x59, 0xa0, 0xb6, 0x4f, 0x9a, 0x63, 0x75, 0x8c, 0xbf, 0x46, 0x50, 0xa9, 0x7c, 0x85, 0x93, 0x6a, 0x24, 0xdd, 0xcb, 0x32, 0xe7, 0x1e, 0x8, 0xf1, 0x94, 0x6d, 0x7b, 0x82, 0x57, 0xae, 0xb8, 0x41, 0xf, 0xf6, 0xe0, 0x19, 0xcc, 0x35, 0x23, 0xda}, [256]uint8{0x0, 0xfa, 0xe9, 0x13, 0xcf, 0x35, 0x26, 0xdc, 0x83, 0x79, 0x6a, 0x90, 0x4c, 0xb6, 0xa5, 0x5f, 0x1b, 0xe1, 0xf2, 0x8, 0xd4, 0x2e, 0x3d, 0xc7, 0x98, 0x62, 0x71, 0x8b, 0x57, 0xad, 0xbe, 0x44, 0x36, 0xcc, 0xdf, 0x25, 0xf9, 0x3, 0x10, 0xea, 0xb5, 0x4f, 0x5c, 0xa6, 0x7a, 0x80, 0x93, 0x69, 0x2d, 0xd7, 0xc4, 0x3e, 0xe2, 0x18, 0xb, 0xf1, 0xae, 0x54, 0x47, 0xbd, 0x61, 0x9b, 0x88, 0x72, 0x6c, 0x96, 0x85, 0x7f, 0xa3, 0x59, 0x4a, 0xb0, 0xef, 0x15, 0x6, 0xfc, 0x20, 0xda, 0xc9, 0x33, 0x77, 0x8d, 0x9e, 0x64, 0xb8, 0x42, 0x51, 0xab, 0xf4, 0xe, 0x1d, 0xe7, 0x3b, 0xc1, 0xd2, 0x28, 0x5a, 0xa0, 0xb3, 0x49, 0x95, 0x6f, 0x7c, 0x86, 0xd9, 0x23, 0x30, 0xca, 0x16, 0xec, 0xff, 0x5, 0x41, 0xbb, 0xa8, 0x52, 0x8e, 0x74, 0x67, 0x9d, 0xc2, 0x38, 0x2b, 0xd1, 0xd, 0xf7, 0xe4, 0x1e, 0xd8, 0x22, 0x31, 0xcb, 0x17, 0xed, 0xfe, 0x4, 0x5b, 0xa1, 0xb2, 0x48, 0x94, 0x6e, 0x7d, 0x87, 0xc3, 0x39, 0x2a, 0xd0, 0xc, 0xf6, 0xe5, 0x1f, 0x40, 0xba, 0xa9, 0x53, 0x8f, 0x75, 0x66, 0x9c, 0xee, 0x14, 0x7, 0xfd, 0x21, 0xdb, 0xc8, 0x32, 0x6d, 0x97, 0x84, 0x7e, 0xa2, 0x58, 0x4b, 0xb1, 0xf5, 0xf, 0x1c, 0xe6, 0x3a, 0xc0, 0xd3, 0x29, 0x76, 0x8c, 0x9f, 0x65, 0xb9, 0x43, 0x50, 0xaa, 0xb4, 0x4e, 0x5d, 0xa7, 0x7b, 0x81, 0x92, 0x68, 0x37, 0xcd, 0xde, 0x24, 0xf8, 0x2, 0x11, 0xeb, 0xaf, 0x55, 0x46, 0xbc, 0x60, 0x9a, 0x89, 0x73, 0x2c, 0xd6, 0xc5, 0x3f, 0xe3, 0x19, 0xa, 0xf0, 0x82, 0x78, 0x6b, 0x91, 0x4d, 0xb7, 0xa4, 0x5e, 0x1, 0xfb, 0xe8, 0x12, 0xce, 0x34, 0x27, 0xdd, 0x99, 0x63, 0x70, 0x8a, 0x56, 0xac, 0xbf, 0x45, 0x1a, 0xe0, 0xf3, 0x9, 0xd5, 0x2f, 0x3c, 0xc6}, [256]uint8{0x0, 0xfb, 0xeb, 0x10, 0xcb, 0x30, 0x20, 0xdb, 0x8b, 0x70, 0x60, 0x9b, 0x40, 0xbb, 0xab, 0x50, 0xb, 0xf0, 0xe0, 0x1b, 0xc0, 0x3b, 0x2b, 0xd0, 0x80, 0x7b, 0x6b, 0x90, 0x4b, 0xb0, 0xa0, 0x5b, 0x16, 0xed, 0xfd, 0x6, 0xdd, 0x26, 0x36, 0xcd, 0x9d, 0x66, 0x76, 0x8d, 0x56, 0xad, 0xbd, 0x46, 0x1d, 0xe6, 0xf6, 0xd, 0xd6, 0x2d, 0x3d, 0xc6, 0x96, 0x6d, 0x7d, 0x86, 0x5d, 0xa6, 0xb6, 0x4d, 0x2c, 0xd7, 0xc7, 0x3c, 0xe7, 0x1c, 0xc, 0xf7, 0xa7, 0x5c, 0x4c, 0xb7, 0x6c, 0x97, 0x87, 0x7c, 0x27, 0xdc, 0xcc, 0x37, 0xec, 0x17, 0x7, 0xfc, 0xac, 0x57, 0x47, 0xbc, 0x67, 0x9c, 0x8c, 0x77, 0x3a, 0xc1, 0xd1, 0x2a, 0xf1, 0xa, 0x1a, 0xe1, 0xb1, 0x4a, 0x5a, 0xa1, 0x7a, 0x81, 0x91, 0x6a, 0x31, 0xca, 0xda, 0x21, 0xfa, 0x1, 0x11, 0xea, 0xba, 0x41, 0x51, 0xaa, 0x71, 0x8a, 0x9a, 0x61, 0x58, 0xa3, 0xb3, 0x48, 0x93, 0x68, 0x78, 0x83, 0xd3, 0x28, 0x38, 0xc3, 0x18, 0xe3, 0xf3, 0x8, 0x53, 0xa8, 0xb8, 0x43, 0x98, 0x63, 0x73, 0x88, 0xd8, 0x23, 0x33, 0xc8, 0x13, 0xe8, 0xf8, 0x3, 0x4e, 0xb5, 0xa5, 0x5e, 0x85, 0x7e, 0x6e, 0x95, 0xc5, 0x3e, 0x2e, 0xd5, 0xe, 0xf5, 0xe5, 0x1e, 0x45, 0xbe, 0xae, 0x55, 0x8e, 0x75, 0x65, 0x9e, 0xce, 0x35, 0x25, 0xde, 0x5, 0xfe, 0xee, 0x15, 0x74, 0x8f, 0x9f, 0x64, 0xbf, 0x44, 0x54, 0xaf, 0xff, 0x4, 0x14, 0xef, 0x34, 0xcf, 0xdf, 0x24, 0x7f, 0x84, 0x94, 0x6f, 0xb4, 0x4f, 0x5f, 0xa4, 0xf4, 0xf, 0x1f, 0xe4, 0x3f, 0xc4, 0xd4, 0x2f, 0x62, 0x99, 0x89, 0x72, 0xa9, 0x52, 0x42, 0xb9, 0xe9, 0x12, 0x2, 0xf9, 0x22, 0xd9, 0xc9, 0x32, 0x69, 0x92, 0x82, 0x79, 0xa2, 0x59, 0x49, 0xb2, 0xe2, 0x19, 0x9, 0xf2, 0x29, 0xd2, 0xc2, 0x39}, [256]uint8{0x0, 0xfc, 0xe5, 0x19, 0xd7, 0x2b, 0x32, 0xce, 0xb3, 0x4f, 0x56, 0xaa, 0x64, 0x98, 0x81, 0x7d, 0x7b, 0x87, 0x9e, 0x62, 0xac, 0x50, 0x49, 0xb5, 0xc8, 0x34, 0x2d, 0xd1, 0x1f, 0xe3, 0xfa, 0x6, 0xf6, 0xa, 0x13, 0xef, 0x21, 0xdd, 0xc4, 0x38, 0x45, 0xb9, 0xa0, 0x5c, 0x92, 0x6e, 0x77, 0x8b, 0x8d, 0x71, 0x68, 0x94, 0x5a, 0xa6, 0xbf, 0x43, 0x3e, 0xc2, 0xdb, 0x27, 0xe9, 0x15, 0xc, 0xf0, 0xf1, 0xd, 0x14, 0xe8, 0x26, 0xda, 0xc3, 0x3f, 0x42, 0xbe, 0xa7, 0x5b, 0x95, 0x69, 0x70, 0x8c, 0x8a, 0x76, 0x6f, 0x93, 0x5d, 0xa1, 0xb8, 0x44, 0x39, 0xc5, 0xdc, 0x20, 0xee, 0x12, 0xb, 0xf7, 0x7, 0xfb, 0xe2, 0x1e, 0xd0, 0x2c, 0x35, 0xc9, 0xb4, 0x48, 0x51, 0xad, 0x63, 0x9f, 0x86, 0x7a, 0x7c, 0x80, 0x99, 0x65, 0xab, 0x57, 0x4e, 0xb2, 0xcf, 0x33, 0x2a, 0xd6, 0x18, 0xe4, 0xfd, 0x1, 0xff, 0x3, 0x1a, 0xe6, 0x28, 0xd4, 0xcd, 0x31, 0x4c, 0xb0, 0xa9, 0x55, 0x9b, 0x67, 0x7e, 0x82, 0x84, 0x78, 0x61, 0x9d, 0x53, 0xaf, 0xb6, 0x4a, 0x37, 0xcb, 0xd2, 0x2e, 0xe0, 0x1c, 0x5, 0xf9, 0x9, 0xf5, 0xec, 0x10, 0xde, 0x22, 0x3b, 0xc7, 0xba, 0x46, 0x5f, 0xa3, 0x6d, 0x91, 0x88, 0x74, 0x72, 0x8e, 0x97, 0x6b, 0xa5, 0x59, 0x40, 0xbc, 0xc1, 0x3d, 0x24, 0xd8, 0x16, 0xea, 0xf3, 0xf, 0xe, 0xf2, 0xeb, 0x17, 0xd9, 0x25, 0x3c, 0xc0, 0xbd, 0x41, 0x58, 0xa4, 0x6a, 0x96, 0x8f, 0x73, 0x75, 0x89, 0x90, 0x6c, 0xa2, 0x5e, 0x47, 0xbb, 0xc6, 0x3a, 0x23, 0xdf, 0x11, 0xed, 0xf4, 0x8, 0xf8, 0x4, 0x1d, 0xe1, 0x2f, 0xd3, 0xca, 0x36, 0x4b, 0xb7, 0xae, 0x52, 0x9c, 0x60, 0x79, 0x85, 0x83, 0x7f, 0x66, 0x9a, 0x54, 0xa8, 0xb1, 0x4d, 0x30, 0xcc, 0xd5, 0x29, 0xe7, 0x1b, 0x2, 0xfe}, [256]uint8{0x0, 0xfd, 0xe7, 0x1a, 0xd3, 0x2e, 0x34, 0xc9, 0xbb, 0x46, 0x5c, 0xa1, 0x68, 0x95, 0x8f, 0x72, 0x6b, 0x96, 0x8c, 0x71, 0xb8, 0x45, 0x5f, 0xa2, 0xd0, 0x2d, 0x37, 0xca, 0x3, 0xfe, 0xe4, 0x19, 0xd6, 0x2b, 0x31, 0xcc, 0x5, 0xf8, 0xe2, 0x1f, 0x6d, 0x90, 0x8a, 0x77, 0xbe, 0x43, 0x59, 0xa4, 0xbd, 0x40, 0x5a, 0xa7, 0x6e, 0x93, 0x89, 0x74, 0x6, 0xfb, 0xe1, 0x1c, 0xd5, 0x28, 0x32, 0xcf, 0xb1, 0x4c, 0x56, 0xab, 0x62, 0x9f, 0x85, 0x78, 0xa, 0xf7, 0xed, 0x10, 0xd9, 0x24, 0x3e, 0xc3, 0xda, 0x27, 0x3d, 0xc0, 0x9, 0xf4, 0xee, 0x13, 0x61, 0x9c, 0x86, 0x7b, 0xb2, 0x4f, 0x55, 0xa8, 0x67, 0x9a, 0x80, 0x7d, 0xb4, 0x49, 0x53, 0xae, 0xdc, 0x21, 0x3b, 0xc6, 0xf, 0xf2, 0xe8, 0x15, 0xc, 0xf1, 0xeb, 0x16, 0xdf, 0x22, 0x38, 0xc5, 0xb7, 0x4a, 0x50, 0xad, 0x64, 0x99, 0x83, 0x7e, 0x7f, 0x82, 0x98, 0x65, 0xac, 0x51, 0x4b, 0xb6, 0xc4, 0x39, 0x23, 0xde, 0x17, 0xea, 0xf0, 0xd, 0x14, 0xe9, 0xf3, 0xe, 0xc7, 0x3a, 0x20, 0xdd, 0xaf, 0x52, 0x48, 0xb5, 0x7c, 0x81, 0x9b, 0x66, 0xa9, 0x54, 0x4e, 0xb3, 0x7a, 0x87, 0x9d, 0x60, 0x12, 0xef, 0xf5, 0x8, 0xc1, 0x3c, 0x26, 0xdb, 0xc2, 0x3f, 0x25, 0xd8, 0x11, 0xec, 0xf6, 0xb, 0x79, 0x84, 0x9e, 0x63, 0xaa, 0x57, 0x4d, 0xb0, 0xce, 0x33, 0x29, 0xd4, 0x1d, 0xe0, 0xfa, 0x7, 0x75, 0x88, 0x92, 0x6f, 0xa6, 0x5b, 0x41, 0xbc, 0xa5, 0x58, 0x42, 0xbf, 0x76, 0x8b, 0x91, 0x6c, 0x1e, 0xe3, 0xf9, 0x4, 0xcd, 0x30, 0x2a, 0xd7, 0x18, 0xe5, 0xff, 0x2, 0xcb, 0x36, 0x2c, 0xd1, 0xa3, 0x5e, 0x44, 0xb9, 0x70, 0x8d, 0x97, 0x6a, 0x73, 0x8e, 0x94, 0x69, 0xa0, 0x5d, 0x47, 0xba, 0xc8, 0x35, 0x2f, 0xd2, 0x1b, 0xe6, 0xfc, 0x1}, [256]uint8{0x0, 0xfe, 0xe1, 0x1f, 0xdf, 0x21, 0x3e, 0xc0, 0xa3, 0x5d, 0x42, 0xbc, 0x7c, 0x82, 0x9d, 0x63, 0x5b, 0xa5, 0xba, 0x44, 0x84, 0x7a, 0x65, 0x9b, 0xf8, 0x6, 0x19, 0xe7, 0x27, 0xd9, 0xc6, 0x38, 0xb6, 0x48, 0x57, 0xa9, 0x69, 0x97, 0x88, 0x76, 0x15, 0xeb, 0xf4, 0xa, 0xca, 0x34, 0x2b, 0xd5, 0xed, 0x13, 0xc, 0xf2, 0x32, 0xcc, 0xd3, 0x2d, 0x4e, 0xb0, 0xaf, 0x51, 0x91, 0x6f, 0x70, 0x8e, 0x71, 0x8f, 0x90, 0x6e, 0xae, 0x50, 0x4f, 0xb1, 0xd2, 0x2c, 0x33, 0xcd, 0xd, 0xf3, 0xec, 0x12, 0x2a, 0xd4, 0xcb, 0x35, 0xf5, 0xb, 0x14, 0xea, 0x89, 0x77, 0x68, 0x96, 0x56, 0xa8, 0xb7, 0x49, 0xc7, 0x39, 0x26, 0xd8, 0x18, 0xe6, 0xf9, 0x7, 0x64, 0x9a, 0x85, 0x7b, 0xbb, 0x45, 0x5a, 0xa4, 0x9c, 0x62, 0x7d, 0x83, 0x43, 0xbd, 0xa2, 0x5c, 0x3f, 0xc1, 0xde, 0x20, 0xe0, 0x1e, 0x1, 0xff, 0xe2, 0x1c, 0x3, 0xfd, 0x3d, 0xc3, 0xdc, 0x22, 0x41, 0xbf, 0xa0, 0x5e, 0x9e, 0x60, 0x7f, 0x81, 0xb9, 0x47, 0x58, 0xa6, 0x66, 0x98, 0x87, 0x79, 0x1a, 0xe4, 0xfb, 0x5, 0xc5, 0x3b, 0x24, 0xda, 0x54, 0xaa, 0xb5, 0x4b, 0x8b, 0x75, 0x6a, 0x94, 0xf7, 0x9, 0x16, 0xe8, 0x28, 0xd6, 0xc9, 0x37, 0xf, 0xf1, 0xee, 0x10, 0xd0, 0x2e, 0x31, 0xcf, 0xac, 0x52, 0x4d, 0xb3, 0x73, 0x8d, 0x92, 0x6c, 0x93, 0x6d, 0x72, 0x8c, 0x4c, 0xb2, 0xad, 0x53, 0x30, 0xce, 0xd1, 0x2f, 0xef, 0x11, 0xe, 0xf0, 0xc8, 0x36, 0x29, 0xd7, 0x17, 0xe9, 0xf6, 0x8, 0x6b, 0x95, 0x8a, 0x74, 0xb4, 0x4a, 0x55, 0xab, 0x25, 0xdb, 0xc4, 0x3a, 0xfa, 0x4, 0x1b, 0xe5, 0x86, 0x78, 0x67, 0x99, 0x59, 0xa7, 0xb8, 0x46, 0x7e, 0x80, 0x9f, 0x61, 0xa1, 0x5f, 0x40, 0xbe, 0xdd, 0x23, 0x3c, 0xc2, 0x2, 0xfc, 0xe3, 0x1d}, [256]uint8{0x0, 0xff, 0xe3, 0x1c, 0xdb, 0x24, 0x38, 0xc7, 0xab, 0x54, 0x48, 0xb7, 0x70, 0x8f, 0x93, 0x6c, 0x4b, 0xb4, 0xa8, 0x57, 0x90, 0x6f, 0x73, 0x8c, 0xe0, 0x1f, 0x3, 0xfc, 0x3b, 0xc4, 0xd8, 0x27, 0x96, 0x69, 0x75, 0x8a, 0x4d, 0xb2, 0xae, 0x51, 0x3d, 0xc2, 0xde, 0x21, 0xe6, 0x19, 0x5, 0xfa, 0xdd, 0x22, 0x3e, 0xc1, 0x6, 0xf9, 0xe5, 0x1a, 0x76, 0x89, 0x95, 0x6a, 0xad, 0x52, 0x4e, 0xb1, 0x31, 0xce, 0xd2, 0x2d, 0xea, 0x15, 0x9, 0xf6, 0x9a, 0x65, 0x79, 0x86, 0x41, 0xbe, 0xa2, 0x5d, 0x7a, 0x85, 0x99, 0x66, 0xa1, 0x5e, 0x42, 0xbd, 0xd1, 0x2e, 0x32, 0xcd, 0xa, 0xf5, 0xe9, 0x16, 0xa7, 0x58, 0x44, 0xbb, 0x7c, 0x83, 0x9f, 0x60, 0xc, 0xf3, 0xef, 0x10, 0xd7, 0x28, 0x34, 0xcb, 0xec, 0x13, 0xf, 0xf0, 0x37, 0xc8, 0xd4, 0x2b, 0x47, 0xb8, 0xa4, 0x5b, 0x9c, 0x63, 0x7f, 0x80, 0x62, 0x9d, 0x81, 0x7e, 0xb9, 0x46, 0x5a, 0xa5, 0xc9, 0x36, 0x2a, 0xd5, 0x12, 0xed, 0xf1, 0xe, 0x29, 0xd6, 0xca, 0x35, 0xf2, 0xd, 0x11, 0xee, 0x82, 0x7d, 0x61, 0x9e, 0x59, 0xa6, 0xba, 0x45, 0xf4, 0xb, 0x17, 0xe8, 0x2f, 0xd0, 0xcc, 0x33, 0x5f, 0xa0, 0xbc, 0x43, 0x84, 0x7b, 0x67, 0x98, 0xbf, 0x40, 0x5c, 0xa3, 0x64, 0x9b, 0x87, 0x78, 0x14, 0xeb, 0xf7, 0x8, 0xcf, 0x30, 0x2c, 0xd3, 0x53, 0xac, 0xb0, 0x4f, 0x88, 0x77, 0x6b, 0x94, 0xf8, 0x7, 0x1b, 0xe4, 0x23, 0xdc, 0xc0, 0x3f, 0x18, 0xe7, 0xfb, 0x4, 0xc3, 0x3c, 0x20, 0xdf, 0xb3, 0x4c, 0x50, 0xaf, 0x68, 0x97, 0x8b, 0x74, 0xc5, 0x3a, 0x26, 0xd9, 0x1e, 0xe1, 0xfd, 0x2, 0x6e, 0x91, 0x8d, 0x72, 0xb5, 0x4a, 0x56, 0xa9, 0x8e, 0x71, 0x6d, 0x92, 0x55, 0xaa, 0xb6, 0x49, 0x25, 0xda, 0xc6, 0x39, 0xfe, 0x1, 0x1d, 0xe2}} + +var mulTableLow = [256][16]uint8{[16]uint8{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, [16]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf}, [16]uint8{0x0, 0x2, 0x4, 0x6, 0x8, 0xa, 0xc, 0xe, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e}, [16]uint8{0x0, 0x3, 0x6, 0x5, 0xc, 0xf, 0xa, 0x9, 0x18, 0x1b, 0x1e, 0x1d, 0x14, 0x17, 0x12, 0x11}, [16]uint8{0x0, 0x4, 0x8, 0xc, 0x10, 0x14, 0x18, 0x1c, 0x20, 0x24, 0x28, 0x2c, 0x30, 0x34, 0x38, 0x3c}, [16]uint8{0x0, 0x5, 0xa, 0xf, 0x14, 0x11, 0x1e, 0x1b, 0x28, 0x2d, 0x22, 0x27, 0x3c, 0x39, 0x36, 0x33}, [16]uint8{0x0, 0x6, 0xc, 0xa, 0x18, 0x1e, 0x14, 0x12, 0x30, 0x36, 0x3c, 0x3a, 0x28, 0x2e, 0x24, 0x22}, [16]uint8{0x0, 0x7, 0xe, 0x9, 0x1c, 0x1b, 0x12, 0x15, 0x38, 0x3f, 0x36, 0x31, 0x24, 0x23, 0x2a, 0x2d}, [16]uint8{0x0, 0x8, 0x10, 0x18, 0x20, 0x28, 0x30, 0x38, 0x40, 0x48, 0x50, 0x58, 0x60, 0x68, 0x70, 0x78}, [16]uint8{0x0, 0x9, 0x12, 0x1b, 0x24, 0x2d, 0x36, 0x3f, 0x48, 0x41, 0x5a, 0x53, 0x6c, 0x65, 0x7e, 0x77}, [16]uint8{0x0, 0xa, 0x14, 0x1e, 0x28, 0x22, 0x3c, 0x36, 0x50, 0x5a, 0x44, 0x4e, 0x78, 0x72, 0x6c, 0x66}, [16]uint8{0x0, 0xb, 0x16, 0x1d, 0x2c, 0x27, 0x3a, 0x31, 0x58, 0x53, 0x4e, 0x45, 0x74, 0x7f, 0x62, 0x69}, [16]uint8{0x0, 0xc, 0x18, 0x14, 0x30, 0x3c, 0x28, 0x24, 0x60, 0x6c, 0x78, 0x74, 0x50, 0x5c, 0x48, 0x44}, [16]uint8{0x0, 0xd, 0x1a, 0x17, 0x34, 0x39, 0x2e, 0x23, 0x68, 0x65, 0x72, 0x7f, 0x5c, 0x51, 0x46, 0x4b}, [16]uint8{0x0, 0xe, 0x1c, 0x12, 0x38, 0x36, 0x24, 0x2a, 0x70, 0x7e, 0x6c, 0x62, 0x48, 0x46, 0x54, 0x5a}, [16]uint8{0x0, 0xf, 0x1e, 0x11, 0x3c, 0x33, 0x22, 0x2d, 0x78, 0x77, 0x66, 0x69, 0x44, 0x4b, 0x5a, 0x55}, [16]uint8{0x0, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80, 0x90, 0xa0, 0xb0, 0xc0, 0xd0, 0xe0, 0xf0}, [16]uint8{0x0, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}, [16]uint8{0x0, 0x12, 0x24, 0x36, 0x48, 0x5a, 0x6c, 0x7e, 0x90, 0x82, 0xb4, 0xa6, 0xd8, 0xca, 0xfc, 0xee}, [16]uint8{0x0, 0x13, 0x26, 0x35, 0x4c, 0x5f, 0x6a, 0x79, 0x98, 0x8b, 0xbe, 0xad, 0xd4, 0xc7, 0xf2, 0xe1}, [16]uint8{0x0, 0x14, 0x28, 0x3c, 0x50, 0x44, 0x78, 0x6c, 0xa0, 0xb4, 0x88, 0x9c, 0xf0, 0xe4, 0xd8, 0xcc}, [16]uint8{0x0, 0x15, 0x2a, 0x3f, 0x54, 0x41, 0x7e, 0x6b, 0xa8, 0xbd, 0x82, 0x97, 0xfc, 0xe9, 0xd6, 0xc3}, [16]uint8{0x0, 0x16, 0x2c, 0x3a, 0x58, 0x4e, 0x74, 0x62, 0xb0, 0xa6, 0x9c, 0x8a, 0xe8, 0xfe, 0xc4, 0xd2}, [16]uint8{0x0, 0x17, 0x2e, 0x39, 0x5c, 0x4b, 0x72, 0x65, 0xb8, 0xaf, 0x96, 0x81, 0xe4, 0xf3, 0xca, 0xdd}, [16]uint8{0x0, 0x18, 0x30, 0x28, 0x60, 0x78, 0x50, 0x48, 0xc0, 0xd8, 0xf0, 0xe8, 0xa0, 0xb8, 0x90, 0x88}, [16]uint8{0x0, 0x19, 0x32, 0x2b, 0x64, 0x7d, 0x56, 0x4f, 0xc8, 0xd1, 0xfa, 0xe3, 0xac, 0xb5, 0x9e, 0x87}, [16]uint8{0x0, 0x1a, 0x34, 0x2e, 0x68, 0x72, 0x5c, 0x46, 0xd0, 0xca, 0xe4, 0xfe, 0xb8, 0xa2, 0x8c, 0x96}, [16]uint8{0x0, 0x1b, 0x36, 0x2d, 0x6c, 0x77, 0x5a, 0x41, 0xd8, 0xc3, 0xee, 0xf5, 0xb4, 0xaf, 0x82, 0x99}, [16]uint8{0x0, 0x1c, 0x38, 0x24, 0x70, 0x6c, 0x48, 0x54, 0xe0, 0xfc, 0xd8, 0xc4, 0x90, 0x8c, 0xa8, 0xb4}, [16]uint8{0x0, 0x1d, 0x3a, 0x27, 0x74, 0x69, 0x4e, 0x53, 0xe8, 0xf5, 0xd2, 0xcf, 0x9c, 0x81, 0xa6, 0xbb}, [16]uint8{0x0, 0x1e, 0x3c, 0x22, 0x78, 0x66, 0x44, 0x5a, 0xf0, 0xee, 0xcc, 0xd2, 0x88, 0x96, 0xb4, 0xaa}, [16]uint8{0x0, 0x1f, 0x3e, 0x21, 0x7c, 0x63, 0x42, 0x5d, 0xf8, 0xe7, 0xc6, 0xd9, 0x84, 0x9b, 0xba, 0xa5}, [16]uint8{0x0, 0x20, 0x40, 0x60, 0x80, 0xa0, 0xc0, 0xe0, 0x1d, 0x3d, 0x5d, 0x7d, 0x9d, 0xbd, 0xdd, 0xfd}, [16]uint8{0x0, 0x21, 0x42, 0x63, 0x84, 0xa5, 0xc6, 0xe7, 0x15, 0x34, 0x57, 0x76, 0x91, 0xb0, 0xd3, 0xf2}, [16]uint8{0x0, 0x22, 0x44, 0x66, 0x88, 0xaa, 0xcc, 0xee, 0xd, 0x2f, 0x49, 0x6b, 0x85, 0xa7, 0xc1, 0xe3}, [16]uint8{0x0, 0x23, 0x46, 0x65, 0x8c, 0xaf, 0xca, 0xe9, 0x5, 0x26, 0x43, 0x60, 0x89, 0xaa, 0xcf, 0xec}, [16]uint8{0x0, 0x24, 0x48, 0x6c, 0x90, 0xb4, 0xd8, 0xfc, 0x3d, 0x19, 0x75, 0x51, 0xad, 0x89, 0xe5, 0xc1}, [16]uint8{0x0, 0x25, 0x4a, 0x6f, 0x94, 0xb1, 0xde, 0xfb, 0x35, 0x10, 0x7f, 0x5a, 0xa1, 0x84, 0xeb, 0xce}, [16]uint8{0x0, 0x26, 0x4c, 0x6a, 0x98, 0xbe, 0xd4, 0xf2, 0x2d, 0xb, 0x61, 0x47, 0xb5, 0x93, 0xf9, 0xdf}, [16]uint8{0x0, 0x27, 0x4e, 0x69, 0x9c, 0xbb, 0xd2, 0xf5, 0x25, 0x2, 0x6b, 0x4c, 0xb9, 0x9e, 0xf7, 0xd0}, [16]uint8{0x0, 0x28, 0x50, 0x78, 0xa0, 0x88, 0xf0, 0xd8, 0x5d, 0x75, 0xd, 0x25, 0xfd, 0xd5, 0xad, 0x85}, [16]uint8{0x0, 0x29, 0x52, 0x7b, 0xa4, 0x8d, 0xf6, 0xdf, 0x55, 0x7c, 0x7, 0x2e, 0xf1, 0xd8, 0xa3, 0x8a}, [16]uint8{0x0, 0x2a, 0x54, 0x7e, 0xa8, 0x82, 0xfc, 0xd6, 0x4d, 0x67, 0x19, 0x33, 0xe5, 0xcf, 0xb1, 0x9b}, [16]uint8{0x0, 0x2b, 0x56, 0x7d, 0xac, 0x87, 0xfa, 0xd1, 0x45, 0x6e, 0x13, 0x38, 0xe9, 0xc2, 0xbf, 0x94}, [16]uint8{0x0, 0x2c, 0x58, 0x74, 0xb0, 0x9c, 0xe8, 0xc4, 0x7d, 0x51, 0x25, 0x9, 0xcd, 0xe1, 0x95, 0xb9}, [16]uint8{0x0, 0x2d, 0x5a, 0x77, 0xb4, 0x99, 0xee, 0xc3, 0x75, 0x58, 0x2f, 0x2, 0xc1, 0xec, 0x9b, 0xb6}, [16]uint8{0x0, 0x2e, 0x5c, 0x72, 0xb8, 0x96, 0xe4, 0xca, 0x6d, 0x43, 0x31, 0x1f, 0xd5, 0xfb, 0x89, 0xa7}, [16]uint8{0x0, 0x2f, 0x5e, 0x71, 0xbc, 0x93, 0xe2, 0xcd, 0x65, 0x4a, 0x3b, 0x14, 0xd9, 0xf6, 0x87, 0xa8}, [16]uint8{0x0, 0x30, 0x60, 0x50, 0xc0, 0xf0, 0xa0, 0x90, 0x9d, 0xad, 0xfd, 0xcd, 0x5d, 0x6d, 0x3d, 0xd}, [16]uint8{0x0, 0x31, 0x62, 0x53, 0xc4, 0xf5, 0xa6, 0x97, 0x95, 0xa4, 0xf7, 0xc6, 0x51, 0x60, 0x33, 0x2}, [16]uint8{0x0, 0x32, 0x64, 0x56, 0xc8, 0xfa, 0xac, 0x9e, 0x8d, 0xbf, 0xe9, 0xdb, 0x45, 0x77, 0x21, 0x13}, [16]uint8{0x0, 0x33, 0x66, 0x55, 0xcc, 0xff, 0xaa, 0x99, 0x85, 0xb6, 0xe3, 0xd0, 0x49, 0x7a, 0x2f, 0x1c}, [16]uint8{0x0, 0x34, 0x68, 0x5c, 0xd0, 0xe4, 0xb8, 0x8c, 0xbd, 0x89, 0xd5, 0xe1, 0x6d, 0x59, 0x5, 0x31}, [16]uint8{0x0, 0x35, 0x6a, 0x5f, 0xd4, 0xe1, 0xbe, 0x8b, 0xb5, 0x80, 0xdf, 0xea, 0x61, 0x54, 0xb, 0x3e}, [16]uint8{0x0, 0x36, 0x6c, 0x5a, 0xd8, 0xee, 0xb4, 0x82, 0xad, 0x9b, 0xc1, 0xf7, 0x75, 0x43, 0x19, 0x2f}, [16]uint8{0x0, 0x37, 0x6e, 0x59, 0xdc, 0xeb, 0xb2, 0x85, 0xa5, 0x92, 0xcb, 0xfc, 0x79, 0x4e, 0x17, 0x20}, [16]uint8{0x0, 0x38, 0x70, 0x48, 0xe0, 0xd8, 0x90, 0xa8, 0xdd, 0xe5, 0xad, 0x95, 0x3d, 0x5, 0x4d, 0x75}, [16]uint8{0x0, 0x39, 0x72, 0x4b, 0xe4, 0xdd, 0x96, 0xaf, 0xd5, 0xec, 0xa7, 0x9e, 0x31, 0x8, 0x43, 0x7a}, [16]uint8{0x0, 0x3a, 0x74, 0x4e, 0xe8, 0xd2, 0x9c, 0xa6, 0xcd, 0xf7, 0xb9, 0x83, 0x25, 0x1f, 0x51, 0x6b}, [16]uint8{0x0, 0x3b, 0x76, 0x4d, 0xec, 0xd7, 0x9a, 0xa1, 0xc5, 0xfe, 0xb3, 0x88, 0x29, 0x12, 0x5f, 0x64}, [16]uint8{0x0, 0x3c, 0x78, 0x44, 0xf0, 0xcc, 0x88, 0xb4, 0xfd, 0xc1, 0x85, 0xb9, 0xd, 0x31, 0x75, 0x49}, [16]uint8{0x0, 0x3d, 0x7a, 0x47, 0xf4, 0xc9, 0x8e, 0xb3, 0xf5, 0xc8, 0x8f, 0xb2, 0x1, 0x3c, 0x7b, 0x46}, [16]uint8{0x0, 0x3e, 0x7c, 0x42, 0xf8, 0xc6, 0x84, 0xba, 0xed, 0xd3, 0x91, 0xaf, 0x15, 0x2b, 0x69, 0x57}, [16]uint8{0x0, 0x3f, 0x7e, 0x41, 0xfc, 0xc3, 0x82, 0xbd, 0xe5, 0xda, 0x9b, 0xa4, 0x19, 0x26, 0x67, 0x58}, [16]uint8{0x0, 0x40, 0x80, 0xc0, 0x1d, 0x5d, 0x9d, 0xdd, 0x3a, 0x7a, 0xba, 0xfa, 0x27, 0x67, 0xa7, 0xe7}, [16]uint8{0x0, 0x41, 0x82, 0xc3, 0x19, 0x58, 0x9b, 0xda, 0x32, 0x73, 0xb0, 0xf1, 0x2b, 0x6a, 0xa9, 0xe8}, [16]uint8{0x0, 0x42, 0x84, 0xc6, 0x15, 0x57, 0x91, 0xd3, 0x2a, 0x68, 0xae, 0xec, 0x3f, 0x7d, 0xbb, 0xf9}, [16]uint8{0x0, 0x43, 0x86, 0xc5, 0x11, 0x52, 0x97, 0xd4, 0x22, 0x61, 0xa4, 0xe7, 0x33, 0x70, 0xb5, 0xf6}, [16]uint8{0x0, 0x44, 0x88, 0xcc, 0xd, 0x49, 0x85, 0xc1, 0x1a, 0x5e, 0x92, 0xd6, 0x17, 0x53, 0x9f, 0xdb}, [16]uint8{0x0, 0x45, 0x8a, 0xcf, 0x9, 0x4c, 0x83, 0xc6, 0x12, 0x57, 0x98, 0xdd, 0x1b, 0x5e, 0x91, 0xd4}, [16]uint8{0x0, 0x46, 0x8c, 0xca, 0x5, 0x43, 0x89, 0xcf, 0xa, 0x4c, 0x86, 0xc0, 0xf, 0x49, 0x83, 0xc5}, [16]uint8{0x0, 0x47, 0x8e, 0xc9, 0x1, 0x46, 0x8f, 0xc8, 0x2, 0x45, 0x8c, 0xcb, 0x3, 0x44, 0x8d, 0xca}, [16]uint8{0x0, 0x48, 0x90, 0xd8, 0x3d, 0x75, 0xad, 0xe5, 0x7a, 0x32, 0xea, 0xa2, 0x47, 0xf, 0xd7, 0x9f}, [16]uint8{0x0, 0x49, 0x92, 0xdb, 0x39, 0x70, 0xab, 0xe2, 0x72, 0x3b, 0xe0, 0xa9, 0x4b, 0x2, 0xd9, 0x90}, [16]uint8{0x0, 0x4a, 0x94, 0xde, 0x35, 0x7f, 0xa1, 0xeb, 0x6a, 0x20, 0xfe, 0xb4, 0x5f, 0x15, 0xcb, 0x81}, [16]uint8{0x0, 0x4b, 0x96, 0xdd, 0x31, 0x7a, 0xa7, 0xec, 0x62, 0x29, 0xf4, 0xbf, 0x53, 0x18, 0xc5, 0x8e}, [16]uint8{0x0, 0x4c, 0x98, 0xd4, 0x2d, 0x61, 0xb5, 0xf9, 0x5a, 0x16, 0xc2, 0x8e, 0x77, 0x3b, 0xef, 0xa3}, [16]uint8{0x0, 0x4d, 0x9a, 0xd7, 0x29, 0x64, 0xb3, 0xfe, 0x52, 0x1f, 0xc8, 0x85, 0x7b, 0x36, 0xe1, 0xac}, [16]uint8{0x0, 0x4e, 0x9c, 0xd2, 0x25, 0x6b, 0xb9, 0xf7, 0x4a, 0x4, 0xd6, 0x98, 0x6f, 0x21, 0xf3, 0xbd}, [16]uint8{0x0, 0x4f, 0x9e, 0xd1, 0x21, 0x6e, 0xbf, 0xf0, 0x42, 0xd, 0xdc, 0x93, 0x63, 0x2c, 0xfd, 0xb2}, [16]uint8{0x0, 0x50, 0xa0, 0xf0, 0x5d, 0xd, 0xfd, 0xad, 0xba, 0xea, 0x1a, 0x4a, 0xe7, 0xb7, 0x47, 0x17}, [16]uint8{0x0, 0x51, 0xa2, 0xf3, 0x59, 0x8, 0xfb, 0xaa, 0xb2, 0xe3, 0x10, 0x41, 0xeb, 0xba, 0x49, 0x18}, [16]uint8{0x0, 0x52, 0xa4, 0xf6, 0x55, 0x7, 0xf1, 0xa3, 0xaa, 0xf8, 0xe, 0x5c, 0xff, 0xad, 0x5b, 0x9}, [16]uint8{0x0, 0x53, 0xa6, 0xf5, 0x51, 0x2, 0xf7, 0xa4, 0xa2, 0xf1, 0x4, 0x57, 0xf3, 0xa0, 0x55, 0x6}, [16]uint8{0x0, 0x54, 0xa8, 0xfc, 0x4d, 0x19, 0xe5, 0xb1, 0x9a, 0xce, 0x32, 0x66, 0xd7, 0x83, 0x7f, 0x2b}, [16]uint8{0x0, 0x55, 0xaa, 0xff, 0x49, 0x1c, 0xe3, 0xb6, 0x92, 0xc7, 0x38, 0x6d, 0xdb, 0x8e, 0x71, 0x24}, [16]uint8{0x0, 0x56, 0xac, 0xfa, 0x45, 0x13, 0xe9, 0xbf, 0x8a, 0xdc, 0x26, 0x70, 0xcf, 0x99, 0x63, 0x35}, [16]uint8{0x0, 0x57, 0xae, 0xf9, 0x41, 0x16, 0xef, 0xb8, 0x82, 0xd5, 0x2c, 0x7b, 0xc3, 0x94, 0x6d, 0x3a}, [16]uint8{0x0, 0x58, 0xb0, 0xe8, 0x7d, 0x25, 0xcd, 0x95, 0xfa, 0xa2, 0x4a, 0x12, 0x87, 0xdf, 0x37, 0x6f}, [16]uint8{0x0, 0x59, 0xb2, 0xeb, 0x79, 0x20, 0xcb, 0x92, 0xf2, 0xab, 0x40, 0x19, 0x8b, 0xd2, 0x39, 0x60}, [16]uint8{0x0, 0x5a, 0xb4, 0xee, 0x75, 0x2f, 0xc1, 0x9b, 0xea, 0xb0, 0x5e, 0x4, 0x9f, 0xc5, 0x2b, 0x71}, [16]uint8{0x0, 0x5b, 0xb6, 0xed, 0x71, 0x2a, 0xc7, 0x9c, 0xe2, 0xb9, 0x54, 0xf, 0x93, 0xc8, 0x25, 0x7e}, [16]uint8{0x0, 0x5c, 0xb8, 0xe4, 0x6d, 0x31, 0xd5, 0x89, 0xda, 0x86, 0x62, 0x3e, 0xb7, 0xeb, 0xf, 0x53}, [16]uint8{0x0, 0x5d, 0xba, 0xe7, 0x69, 0x34, 0xd3, 0x8e, 0xd2, 0x8f, 0x68, 0x35, 0xbb, 0xe6, 0x1, 0x5c}, [16]uint8{0x0, 0x5e, 0xbc, 0xe2, 0x65, 0x3b, 0xd9, 0x87, 0xca, 0x94, 0x76, 0x28, 0xaf, 0xf1, 0x13, 0x4d}, [16]uint8{0x0, 0x5f, 0xbe, 0xe1, 0x61, 0x3e, 0xdf, 0x80, 0xc2, 0x9d, 0x7c, 0x23, 0xa3, 0xfc, 0x1d, 0x42}, [16]uint8{0x0, 0x60, 0xc0, 0xa0, 0x9d, 0xfd, 0x5d, 0x3d, 0x27, 0x47, 0xe7, 0x87, 0xba, 0xda, 0x7a, 0x1a}, [16]uint8{0x0, 0x61, 0xc2, 0xa3, 0x99, 0xf8, 0x5b, 0x3a, 0x2f, 0x4e, 0xed, 0x8c, 0xb6, 0xd7, 0x74, 0x15}, [16]uint8{0x0, 0x62, 0xc4, 0xa6, 0x95, 0xf7, 0x51, 0x33, 0x37, 0x55, 0xf3, 0x91, 0xa2, 0xc0, 0x66, 0x4}, [16]uint8{0x0, 0x63, 0xc6, 0xa5, 0x91, 0xf2, 0x57, 0x34, 0x3f, 0x5c, 0xf9, 0x9a, 0xae, 0xcd, 0x68, 0xb}, [16]uint8{0x0, 0x64, 0xc8, 0xac, 0x8d, 0xe9, 0x45, 0x21, 0x7, 0x63, 0xcf, 0xab, 0x8a, 0xee, 0x42, 0x26}, [16]uint8{0x0, 0x65, 0xca, 0xaf, 0x89, 0xec, 0x43, 0x26, 0xf, 0x6a, 0xc5, 0xa0, 0x86, 0xe3, 0x4c, 0x29}, [16]uint8{0x0, 0x66, 0xcc, 0xaa, 0x85, 0xe3, 0x49, 0x2f, 0x17, 0x71, 0xdb, 0xbd, 0x92, 0xf4, 0x5e, 0x38}, [16]uint8{0x0, 0x67, 0xce, 0xa9, 0x81, 0xe6, 0x4f, 0x28, 0x1f, 0x78, 0xd1, 0xb6, 0x9e, 0xf9, 0x50, 0x37}, [16]uint8{0x0, 0x68, 0xd0, 0xb8, 0xbd, 0xd5, 0x6d, 0x5, 0x67, 0xf, 0xb7, 0xdf, 0xda, 0xb2, 0xa, 0x62}, [16]uint8{0x0, 0x69, 0xd2, 0xbb, 0xb9, 0xd0, 0x6b, 0x2, 0x6f, 0x6, 0xbd, 0xd4, 0xd6, 0xbf, 0x4, 0x6d}, [16]uint8{0x0, 0x6a, 0xd4, 0xbe, 0xb5, 0xdf, 0x61, 0xb, 0x77, 0x1d, 0xa3, 0xc9, 0xc2, 0xa8, 0x16, 0x7c}, [16]uint8{0x0, 0x6b, 0xd6, 0xbd, 0xb1, 0xda, 0x67, 0xc, 0x7f, 0x14, 0xa9, 0xc2, 0xce, 0xa5, 0x18, 0x73}, [16]uint8{0x0, 0x6c, 0xd8, 0xb4, 0xad, 0xc1, 0x75, 0x19, 0x47, 0x2b, 0x9f, 0xf3, 0xea, 0x86, 0x32, 0x5e}, [16]uint8{0x0, 0x6d, 0xda, 0xb7, 0xa9, 0xc4, 0x73, 0x1e, 0x4f, 0x22, 0x95, 0xf8, 0xe6, 0x8b, 0x3c, 0x51}, [16]uint8{0x0, 0x6e, 0xdc, 0xb2, 0xa5, 0xcb, 0x79, 0x17, 0x57, 0x39, 0x8b, 0xe5, 0xf2, 0x9c, 0x2e, 0x40}, [16]uint8{0x0, 0x6f, 0xde, 0xb1, 0xa1, 0xce, 0x7f, 0x10, 0x5f, 0x30, 0x81, 0xee, 0xfe, 0x91, 0x20, 0x4f}, [16]uint8{0x0, 0x70, 0xe0, 0x90, 0xdd, 0xad, 0x3d, 0x4d, 0xa7, 0xd7, 0x47, 0x37, 0x7a, 0xa, 0x9a, 0xea}, [16]uint8{0x0, 0x71, 0xe2, 0x93, 0xd9, 0xa8, 0x3b, 0x4a, 0xaf, 0xde, 0x4d, 0x3c, 0x76, 0x7, 0x94, 0xe5}, [16]uint8{0x0, 0x72, 0xe4, 0x96, 0xd5, 0xa7, 0x31, 0x43, 0xb7, 0xc5, 0x53, 0x21, 0x62, 0x10, 0x86, 0xf4}, [16]uint8{0x0, 0x73, 0xe6, 0x95, 0xd1, 0xa2, 0x37, 0x44, 0xbf, 0xcc, 0x59, 0x2a, 0x6e, 0x1d, 0x88, 0xfb}, [16]uint8{0x0, 0x74, 0xe8, 0x9c, 0xcd, 0xb9, 0x25, 0x51, 0x87, 0xf3, 0x6f, 0x1b, 0x4a, 0x3e, 0xa2, 0xd6}, [16]uint8{0x0, 0x75, 0xea, 0x9f, 0xc9, 0xbc, 0x23, 0x56, 0x8f, 0xfa, 0x65, 0x10, 0x46, 0x33, 0xac, 0xd9}, [16]uint8{0x0, 0x76, 0xec, 0x9a, 0xc5, 0xb3, 0x29, 0x5f, 0x97, 0xe1, 0x7b, 0xd, 0x52, 0x24, 0xbe, 0xc8}, [16]uint8{0x0, 0x77, 0xee, 0x99, 0xc1, 0xb6, 0x2f, 0x58, 0x9f, 0xe8, 0x71, 0x6, 0x5e, 0x29, 0xb0, 0xc7}, [16]uint8{0x0, 0x78, 0xf0, 0x88, 0xfd, 0x85, 0xd, 0x75, 0xe7, 0x9f, 0x17, 0x6f, 0x1a, 0x62, 0xea, 0x92}, [16]uint8{0x0, 0x79, 0xf2, 0x8b, 0xf9, 0x80, 0xb, 0x72, 0xef, 0x96, 0x1d, 0x64, 0x16, 0x6f, 0xe4, 0x9d}, [16]uint8{0x0, 0x7a, 0xf4, 0x8e, 0xf5, 0x8f, 0x1, 0x7b, 0xf7, 0x8d, 0x3, 0x79, 0x2, 0x78, 0xf6, 0x8c}, [16]uint8{0x0, 0x7b, 0xf6, 0x8d, 0xf1, 0x8a, 0x7, 0x7c, 0xff, 0x84, 0x9, 0x72, 0xe, 0x75, 0xf8, 0x83}, [16]uint8{0x0, 0x7c, 0xf8, 0x84, 0xed, 0x91, 0x15, 0x69, 0xc7, 0xbb, 0x3f, 0x43, 0x2a, 0x56, 0xd2, 0xae}, [16]uint8{0x0, 0x7d, 0xfa, 0x87, 0xe9, 0x94, 0x13, 0x6e, 0xcf, 0xb2, 0x35, 0x48, 0x26, 0x5b, 0xdc, 0xa1}, [16]uint8{0x0, 0x7e, 0xfc, 0x82, 0xe5, 0x9b, 0x19, 0x67, 0xd7, 0xa9, 0x2b, 0x55, 0x32, 0x4c, 0xce, 0xb0}, [16]uint8{0x0, 0x7f, 0xfe, 0x81, 0xe1, 0x9e, 0x1f, 0x60, 0xdf, 0xa0, 0x21, 0x5e, 0x3e, 0x41, 0xc0, 0xbf}, [16]uint8{0x0, 0x80, 0x1d, 0x9d, 0x3a, 0xba, 0x27, 0xa7, 0x74, 0xf4, 0x69, 0xe9, 0x4e, 0xce, 0x53, 0xd3}, [16]uint8{0x0, 0x81, 0x1f, 0x9e, 0x3e, 0xbf, 0x21, 0xa0, 0x7c, 0xfd, 0x63, 0xe2, 0x42, 0xc3, 0x5d, 0xdc}, [16]uint8{0x0, 0x82, 0x19, 0x9b, 0x32, 0xb0, 0x2b, 0xa9, 0x64, 0xe6, 0x7d, 0xff, 0x56, 0xd4, 0x4f, 0xcd}, [16]uint8{0x0, 0x83, 0x1b, 0x98, 0x36, 0xb5, 0x2d, 0xae, 0x6c, 0xef, 0x77, 0xf4, 0x5a, 0xd9, 0x41, 0xc2}, [16]uint8{0x0, 0x84, 0x15, 0x91, 0x2a, 0xae, 0x3f, 0xbb, 0x54, 0xd0, 0x41, 0xc5, 0x7e, 0xfa, 0x6b, 0xef}, [16]uint8{0x0, 0x85, 0x17, 0x92, 0x2e, 0xab, 0x39, 0xbc, 0x5c, 0xd9, 0x4b, 0xce, 0x72, 0xf7, 0x65, 0xe0}, [16]uint8{0x0, 0x86, 0x11, 0x97, 0x22, 0xa4, 0x33, 0xb5, 0x44, 0xc2, 0x55, 0xd3, 0x66, 0xe0, 0x77, 0xf1}, [16]uint8{0x0, 0x87, 0x13, 0x94, 0x26, 0xa1, 0x35, 0xb2, 0x4c, 0xcb, 0x5f, 0xd8, 0x6a, 0xed, 0x79, 0xfe}, [16]uint8{0x0, 0x88, 0xd, 0x85, 0x1a, 0x92, 0x17, 0x9f, 0x34, 0xbc, 0x39, 0xb1, 0x2e, 0xa6, 0x23, 0xab}, [16]uint8{0x0, 0x89, 0xf, 0x86, 0x1e, 0x97, 0x11, 0x98, 0x3c, 0xb5, 0x33, 0xba, 0x22, 0xab, 0x2d, 0xa4}, [16]uint8{0x0, 0x8a, 0x9, 0x83, 0x12, 0x98, 0x1b, 0x91, 0x24, 0xae, 0x2d, 0xa7, 0x36, 0xbc, 0x3f, 0xb5}, [16]uint8{0x0, 0x8b, 0xb, 0x80, 0x16, 0x9d, 0x1d, 0x96, 0x2c, 0xa7, 0x27, 0xac, 0x3a, 0xb1, 0x31, 0xba}, [16]uint8{0x0, 0x8c, 0x5, 0x89, 0xa, 0x86, 0xf, 0x83, 0x14, 0x98, 0x11, 0x9d, 0x1e, 0x92, 0x1b, 0x97}, [16]uint8{0x0, 0x8d, 0x7, 0x8a, 0xe, 0x83, 0x9, 0x84, 0x1c, 0x91, 0x1b, 0x96, 0x12, 0x9f, 0x15, 0x98}, [16]uint8{0x0, 0x8e, 0x1, 0x8f, 0x2, 0x8c, 0x3, 0x8d, 0x4, 0x8a, 0x5, 0x8b, 0x6, 0x88, 0x7, 0x89}, [16]uint8{0x0, 0x8f, 0x3, 0x8c, 0x6, 0x89, 0x5, 0x8a, 0xc, 0x83, 0xf, 0x80, 0xa, 0x85, 0x9, 0x86}, [16]uint8{0x0, 0x90, 0x3d, 0xad, 0x7a, 0xea, 0x47, 0xd7, 0xf4, 0x64, 0xc9, 0x59, 0x8e, 0x1e, 0xb3, 0x23}, [16]uint8{0x0, 0x91, 0x3f, 0xae, 0x7e, 0xef, 0x41, 0xd0, 0xfc, 0x6d, 0xc3, 0x52, 0x82, 0x13, 0xbd, 0x2c}, [16]uint8{0x0, 0x92, 0x39, 0xab, 0x72, 0xe0, 0x4b, 0xd9, 0xe4, 0x76, 0xdd, 0x4f, 0x96, 0x4, 0xaf, 0x3d}, [16]uint8{0x0, 0x93, 0x3b, 0xa8, 0x76, 0xe5, 0x4d, 0xde, 0xec, 0x7f, 0xd7, 0x44, 0x9a, 0x9, 0xa1, 0x32}, [16]uint8{0x0, 0x94, 0x35, 0xa1, 0x6a, 0xfe, 0x5f, 0xcb, 0xd4, 0x40, 0xe1, 0x75, 0xbe, 0x2a, 0x8b, 0x1f}, [16]uint8{0x0, 0x95, 0x37, 0xa2, 0x6e, 0xfb, 0x59, 0xcc, 0xdc, 0x49, 0xeb, 0x7e, 0xb2, 0x27, 0x85, 0x10}, [16]uint8{0x0, 0x96, 0x31, 0xa7, 0x62, 0xf4, 0x53, 0xc5, 0xc4, 0x52, 0xf5, 0x63, 0xa6, 0x30, 0x97, 0x1}, [16]uint8{0x0, 0x97, 0x33, 0xa4, 0x66, 0xf1, 0x55, 0xc2, 0xcc, 0x5b, 0xff, 0x68, 0xaa, 0x3d, 0x99, 0xe}, [16]uint8{0x0, 0x98, 0x2d, 0xb5, 0x5a, 0xc2, 0x77, 0xef, 0xb4, 0x2c, 0x99, 0x1, 0xee, 0x76, 0xc3, 0x5b}, [16]uint8{0x0, 0x99, 0x2f, 0xb6, 0x5e, 0xc7, 0x71, 0xe8, 0xbc, 0x25, 0x93, 0xa, 0xe2, 0x7b, 0xcd, 0x54}, [16]uint8{0x0, 0x9a, 0x29, 0xb3, 0x52, 0xc8, 0x7b, 0xe1, 0xa4, 0x3e, 0x8d, 0x17, 0xf6, 0x6c, 0xdf, 0x45}, [16]uint8{0x0, 0x9b, 0x2b, 0xb0, 0x56, 0xcd, 0x7d, 0xe6, 0xac, 0x37, 0x87, 0x1c, 0xfa, 0x61, 0xd1, 0x4a}, [16]uint8{0x0, 0x9c, 0x25, 0xb9, 0x4a, 0xd6, 0x6f, 0xf3, 0x94, 0x8, 0xb1, 0x2d, 0xde, 0x42, 0xfb, 0x67}, [16]uint8{0x0, 0x9d, 0x27, 0xba, 0x4e, 0xd3, 0x69, 0xf4, 0x9c, 0x1, 0xbb, 0x26, 0xd2, 0x4f, 0xf5, 0x68}, [16]uint8{0x0, 0x9e, 0x21, 0xbf, 0x42, 0xdc, 0x63, 0xfd, 0x84, 0x1a, 0xa5, 0x3b, 0xc6, 0x58, 0xe7, 0x79}, [16]uint8{0x0, 0x9f, 0x23, 0xbc, 0x46, 0xd9, 0x65, 0xfa, 0x8c, 0x13, 0xaf, 0x30, 0xca, 0x55, 0xe9, 0x76}, [16]uint8{0x0, 0xa0, 0x5d, 0xfd, 0xba, 0x1a, 0xe7, 0x47, 0x69, 0xc9, 0x34, 0x94, 0xd3, 0x73, 0x8e, 0x2e}, [16]uint8{0x0, 0xa1, 0x5f, 0xfe, 0xbe, 0x1f, 0xe1, 0x40, 0x61, 0xc0, 0x3e, 0x9f, 0xdf, 0x7e, 0x80, 0x21}, [16]uint8{0x0, 0xa2, 0x59, 0xfb, 0xb2, 0x10, 0xeb, 0x49, 0x79, 0xdb, 0x20, 0x82, 0xcb, 0x69, 0x92, 0x30}, [16]uint8{0x0, 0xa3, 0x5b, 0xf8, 0xb6, 0x15, 0xed, 0x4e, 0x71, 0xd2, 0x2a, 0x89, 0xc7, 0x64, 0x9c, 0x3f}, [16]uint8{0x0, 0xa4, 0x55, 0xf1, 0xaa, 0xe, 0xff, 0x5b, 0x49, 0xed, 0x1c, 0xb8, 0xe3, 0x47, 0xb6, 0x12}, [16]uint8{0x0, 0xa5, 0x57, 0xf2, 0xae, 0xb, 0xf9, 0x5c, 0x41, 0xe4, 0x16, 0xb3, 0xef, 0x4a, 0xb8, 0x1d}, [16]uint8{0x0, 0xa6, 0x51, 0xf7, 0xa2, 0x4, 0xf3, 0x55, 0x59, 0xff, 0x8, 0xae, 0xfb, 0x5d, 0xaa, 0xc}, [16]uint8{0x0, 0xa7, 0x53, 0xf4, 0xa6, 0x1, 0xf5, 0x52, 0x51, 0xf6, 0x2, 0xa5, 0xf7, 0x50, 0xa4, 0x3}, [16]uint8{0x0, 0xa8, 0x4d, 0xe5, 0x9a, 0x32, 0xd7, 0x7f, 0x29, 0x81, 0x64, 0xcc, 0xb3, 0x1b, 0xfe, 0x56}, [16]uint8{0x0, 0xa9, 0x4f, 0xe6, 0x9e, 0x37, 0xd1, 0x78, 0x21, 0x88, 0x6e, 0xc7, 0xbf, 0x16, 0xf0, 0x59}, [16]uint8{0x0, 0xaa, 0x49, 0xe3, 0x92, 0x38, 0xdb, 0x71, 0x39, 0x93, 0x70, 0xda, 0xab, 0x1, 0xe2, 0x48}, [16]uint8{0x0, 0xab, 0x4b, 0xe0, 0x96, 0x3d, 0xdd, 0x76, 0x31, 0x9a, 0x7a, 0xd1, 0xa7, 0xc, 0xec, 0x47}, [16]uint8{0x0, 0xac, 0x45, 0xe9, 0x8a, 0x26, 0xcf, 0x63, 0x9, 0xa5, 0x4c, 0xe0, 0x83, 0x2f, 0xc6, 0x6a}, [16]uint8{0x0, 0xad, 0x47, 0xea, 0x8e, 0x23, 0xc9, 0x64, 0x1, 0xac, 0x46, 0xeb, 0x8f, 0x22, 0xc8, 0x65}, [16]uint8{0x0, 0xae, 0x41, 0xef, 0x82, 0x2c, 0xc3, 0x6d, 0x19, 0xb7, 0x58, 0xf6, 0x9b, 0x35, 0xda, 0x74}, [16]uint8{0x0, 0xaf, 0x43, 0xec, 0x86, 0x29, 0xc5, 0x6a, 0x11, 0xbe, 0x52, 0xfd, 0x97, 0x38, 0xd4, 0x7b}, [16]uint8{0x0, 0xb0, 0x7d, 0xcd, 0xfa, 0x4a, 0x87, 0x37, 0xe9, 0x59, 0x94, 0x24, 0x13, 0xa3, 0x6e, 0xde}, [16]uint8{0x0, 0xb1, 0x7f, 0xce, 0xfe, 0x4f, 0x81, 0x30, 0xe1, 0x50, 0x9e, 0x2f, 0x1f, 0xae, 0x60, 0xd1}, [16]uint8{0x0, 0xb2, 0x79, 0xcb, 0xf2, 0x40, 0x8b, 0x39, 0xf9, 0x4b, 0x80, 0x32, 0xb, 0xb9, 0x72, 0xc0}, [16]uint8{0x0, 0xb3, 0x7b, 0xc8, 0xf6, 0x45, 0x8d, 0x3e, 0xf1, 0x42, 0x8a, 0x39, 0x7, 0xb4, 0x7c, 0xcf}, [16]uint8{0x0, 0xb4, 0x75, 0xc1, 0xea, 0x5e, 0x9f, 0x2b, 0xc9, 0x7d, 0xbc, 0x8, 0x23, 0x97, 0x56, 0xe2}, [16]uint8{0x0, 0xb5, 0x77, 0xc2, 0xee, 0x5b, 0x99, 0x2c, 0xc1, 0x74, 0xb6, 0x3, 0x2f, 0x9a, 0x58, 0xed}, [16]uint8{0x0, 0xb6, 0x71, 0xc7, 0xe2, 0x54, 0x93, 0x25, 0xd9, 0x6f, 0xa8, 0x1e, 0x3b, 0x8d, 0x4a, 0xfc}, [16]uint8{0x0, 0xb7, 0x73, 0xc4, 0xe6, 0x51, 0x95, 0x22, 0xd1, 0x66, 0xa2, 0x15, 0x37, 0x80, 0x44, 0xf3}, [16]uint8{0x0, 0xb8, 0x6d, 0xd5, 0xda, 0x62, 0xb7, 0xf, 0xa9, 0x11, 0xc4, 0x7c, 0x73, 0xcb, 0x1e, 0xa6}, [16]uint8{0x0, 0xb9, 0x6f, 0xd6, 0xde, 0x67, 0xb1, 0x8, 0xa1, 0x18, 0xce, 0x77, 0x7f, 0xc6, 0x10, 0xa9}, [16]uint8{0x0, 0xba, 0x69, 0xd3, 0xd2, 0x68, 0xbb, 0x1, 0xb9, 0x3, 0xd0, 0x6a, 0x6b, 0xd1, 0x2, 0xb8}, [16]uint8{0x0, 0xbb, 0x6b, 0xd0, 0xd6, 0x6d, 0xbd, 0x6, 0xb1, 0xa, 0xda, 0x61, 0x67, 0xdc, 0xc, 0xb7}, [16]uint8{0x0, 0xbc, 0x65, 0xd9, 0xca, 0x76, 0xaf, 0x13, 0x89, 0x35, 0xec, 0x50, 0x43, 0xff, 0x26, 0x9a}, [16]uint8{0x0, 0xbd, 0x67, 0xda, 0xce, 0x73, 0xa9, 0x14, 0x81, 0x3c, 0xe6, 0x5b, 0x4f, 0xf2, 0x28, 0x95}, [16]uint8{0x0, 0xbe, 0x61, 0xdf, 0xc2, 0x7c, 0xa3, 0x1d, 0x99, 0x27, 0xf8, 0x46, 0x5b, 0xe5, 0x3a, 0x84}, [16]uint8{0x0, 0xbf, 0x63, 0xdc, 0xc6, 0x79, 0xa5, 0x1a, 0x91, 0x2e, 0xf2, 0x4d, 0x57, 0xe8, 0x34, 0x8b}, [16]uint8{0x0, 0xc0, 0x9d, 0x5d, 0x27, 0xe7, 0xba, 0x7a, 0x4e, 0x8e, 0xd3, 0x13, 0x69, 0xa9, 0xf4, 0x34}, [16]uint8{0x0, 0xc1, 0x9f, 0x5e, 0x23, 0xe2, 0xbc, 0x7d, 0x46, 0x87, 0xd9, 0x18, 0x65, 0xa4, 0xfa, 0x3b}, [16]uint8{0x0, 0xc2, 0x99, 0x5b, 0x2f, 0xed, 0xb6, 0x74, 0x5e, 0x9c, 0xc7, 0x5, 0x71, 0xb3, 0xe8, 0x2a}, [16]uint8{0x0, 0xc3, 0x9b, 0x58, 0x2b, 0xe8, 0xb0, 0x73, 0x56, 0x95, 0xcd, 0xe, 0x7d, 0xbe, 0xe6, 0x25}, [16]uint8{0x0, 0xc4, 0x95, 0x51, 0x37, 0xf3, 0xa2, 0x66, 0x6e, 0xaa, 0xfb, 0x3f, 0x59, 0x9d, 0xcc, 0x8}, [16]uint8{0x0, 0xc5, 0x97, 0x52, 0x33, 0xf6, 0xa4, 0x61, 0x66, 0xa3, 0xf1, 0x34, 0x55, 0x90, 0xc2, 0x7}, [16]uint8{0x0, 0xc6, 0x91, 0x57, 0x3f, 0xf9, 0xae, 0x68, 0x7e, 0xb8, 0xef, 0x29, 0x41, 0x87, 0xd0, 0x16}, [16]uint8{0x0, 0xc7, 0x93, 0x54, 0x3b, 0xfc, 0xa8, 0x6f, 0x76, 0xb1, 0xe5, 0x22, 0x4d, 0x8a, 0xde, 0x19}, [16]uint8{0x0, 0xc8, 0x8d, 0x45, 0x7, 0xcf, 0x8a, 0x42, 0xe, 0xc6, 0x83, 0x4b, 0x9, 0xc1, 0x84, 0x4c}, [16]uint8{0x0, 0xc9, 0x8f, 0x46, 0x3, 0xca, 0x8c, 0x45, 0x6, 0xcf, 0x89, 0x40, 0x5, 0xcc, 0x8a, 0x43}, [16]uint8{0x0, 0xca, 0x89, 0x43, 0xf, 0xc5, 0x86, 0x4c, 0x1e, 0xd4, 0x97, 0x5d, 0x11, 0xdb, 0x98, 0x52}, [16]uint8{0x0, 0xcb, 0x8b, 0x40, 0xb, 0xc0, 0x80, 0x4b, 0x16, 0xdd, 0x9d, 0x56, 0x1d, 0xd6, 0x96, 0x5d}, [16]uint8{0x0, 0xcc, 0x85, 0x49, 0x17, 0xdb, 0x92, 0x5e, 0x2e, 0xe2, 0xab, 0x67, 0x39, 0xf5, 0xbc, 0x70}, [16]uint8{0x0, 0xcd, 0x87, 0x4a, 0x13, 0xde, 0x94, 0x59, 0x26, 0xeb, 0xa1, 0x6c, 0x35, 0xf8, 0xb2, 0x7f}, [16]uint8{0x0, 0xce, 0x81, 0x4f, 0x1f, 0xd1, 0x9e, 0x50, 0x3e, 0xf0, 0xbf, 0x71, 0x21, 0xef, 0xa0, 0x6e}, [16]uint8{0x0, 0xcf, 0x83, 0x4c, 0x1b, 0xd4, 0x98, 0x57, 0x36, 0xf9, 0xb5, 0x7a, 0x2d, 0xe2, 0xae, 0x61}, [16]uint8{0x0, 0xd0, 0xbd, 0x6d, 0x67, 0xb7, 0xda, 0xa, 0xce, 0x1e, 0x73, 0xa3, 0xa9, 0x79, 0x14, 0xc4}, [16]uint8{0x0, 0xd1, 0xbf, 0x6e, 0x63, 0xb2, 0xdc, 0xd, 0xc6, 0x17, 0x79, 0xa8, 0xa5, 0x74, 0x1a, 0xcb}, [16]uint8{0x0, 0xd2, 0xb9, 0x6b, 0x6f, 0xbd, 0xd6, 0x4, 0xde, 0xc, 0x67, 0xb5, 0xb1, 0x63, 0x8, 0xda}, [16]uint8{0x0, 0xd3, 0xbb, 0x68, 0x6b, 0xb8, 0xd0, 0x3, 0xd6, 0x5, 0x6d, 0xbe, 0xbd, 0x6e, 0x6, 0xd5}, [16]uint8{0x0, 0xd4, 0xb5, 0x61, 0x77, 0xa3, 0xc2, 0x16, 0xee, 0x3a, 0x5b, 0x8f, 0x99, 0x4d, 0x2c, 0xf8}, [16]uint8{0x0, 0xd5, 0xb7, 0x62, 0x73, 0xa6, 0xc4, 0x11, 0xe6, 0x33, 0x51, 0x84, 0x95, 0x40, 0x22, 0xf7}, [16]uint8{0x0, 0xd6, 0xb1, 0x67, 0x7f, 0xa9, 0xce, 0x18, 0xfe, 0x28, 0x4f, 0x99, 0x81, 0x57, 0x30, 0xe6}, [16]uint8{0x0, 0xd7, 0xb3, 0x64, 0x7b, 0xac, 0xc8, 0x1f, 0xf6, 0x21, 0x45, 0x92, 0x8d, 0x5a, 0x3e, 0xe9}, [16]uint8{0x0, 0xd8, 0xad, 0x75, 0x47, 0x9f, 0xea, 0x32, 0x8e, 0x56, 0x23, 0xfb, 0xc9, 0x11, 0x64, 0xbc}, [16]uint8{0x0, 0xd9, 0xaf, 0x76, 0x43, 0x9a, 0xec, 0x35, 0x86, 0x5f, 0x29, 0xf0, 0xc5, 0x1c, 0x6a, 0xb3}, [16]uint8{0x0, 0xda, 0xa9, 0x73, 0x4f, 0x95, 0xe6, 0x3c, 0x9e, 0x44, 0x37, 0xed, 0xd1, 0xb, 0x78, 0xa2}, [16]uint8{0x0, 0xdb, 0xab, 0x70, 0x4b, 0x90, 0xe0, 0x3b, 0x96, 0x4d, 0x3d, 0xe6, 0xdd, 0x6, 0x76, 0xad}, [16]uint8{0x0, 0xdc, 0xa5, 0x79, 0x57, 0x8b, 0xf2, 0x2e, 0xae, 0x72, 0xb, 0xd7, 0xf9, 0x25, 0x5c, 0x80}, [16]uint8{0x0, 0xdd, 0xa7, 0x7a, 0x53, 0x8e, 0xf4, 0x29, 0xa6, 0x7b, 0x1, 0xdc, 0xf5, 0x28, 0x52, 0x8f}, [16]uint8{0x0, 0xde, 0xa1, 0x7f, 0x5f, 0x81, 0xfe, 0x20, 0xbe, 0x60, 0x1f, 0xc1, 0xe1, 0x3f, 0x40, 0x9e}, [16]uint8{0x0, 0xdf, 0xa3, 0x7c, 0x5b, 0x84, 0xf8, 0x27, 0xb6, 0x69, 0x15, 0xca, 0xed, 0x32, 0x4e, 0x91}, [16]uint8{0x0, 0xe0, 0xdd, 0x3d, 0xa7, 0x47, 0x7a, 0x9a, 0x53, 0xb3, 0x8e, 0x6e, 0xf4, 0x14, 0x29, 0xc9}, [16]uint8{0x0, 0xe1, 0xdf, 0x3e, 0xa3, 0x42, 0x7c, 0x9d, 0x5b, 0xba, 0x84, 0x65, 0xf8, 0x19, 0x27, 0xc6}, [16]uint8{0x0, 0xe2, 0xd9, 0x3b, 0xaf, 0x4d, 0x76, 0x94, 0x43, 0xa1, 0x9a, 0x78, 0xec, 0xe, 0x35, 0xd7}, [16]uint8{0x0, 0xe3, 0xdb, 0x38, 0xab, 0x48, 0x70, 0x93, 0x4b, 0xa8, 0x90, 0x73, 0xe0, 0x3, 0x3b, 0xd8}, [16]uint8{0x0, 0xe4, 0xd5, 0x31, 0xb7, 0x53, 0x62, 0x86, 0x73, 0x97, 0xa6, 0x42, 0xc4, 0x20, 0x11, 0xf5}, [16]uint8{0x0, 0xe5, 0xd7, 0x32, 0xb3, 0x56, 0x64, 0x81, 0x7b, 0x9e, 0xac, 0x49, 0xc8, 0x2d, 0x1f, 0xfa}, [16]uint8{0x0, 0xe6, 0xd1, 0x37, 0xbf, 0x59, 0x6e, 0x88, 0x63, 0x85, 0xb2, 0x54, 0xdc, 0x3a, 0xd, 0xeb}, [16]uint8{0x0, 0xe7, 0xd3, 0x34, 0xbb, 0x5c, 0x68, 0x8f, 0x6b, 0x8c, 0xb8, 0x5f, 0xd0, 0x37, 0x3, 0xe4}, [16]uint8{0x0, 0xe8, 0xcd, 0x25, 0x87, 0x6f, 0x4a, 0xa2, 0x13, 0xfb, 0xde, 0x36, 0x94, 0x7c, 0x59, 0xb1}, [16]uint8{0x0, 0xe9, 0xcf, 0x26, 0x83, 0x6a, 0x4c, 0xa5, 0x1b, 0xf2, 0xd4, 0x3d, 0x98, 0x71, 0x57, 0xbe}, [16]uint8{0x0, 0xea, 0xc9, 0x23, 0x8f, 0x65, 0x46, 0xac, 0x3, 0xe9, 0xca, 0x20, 0x8c, 0x66, 0x45, 0xaf}, [16]uint8{0x0, 0xeb, 0xcb, 0x20, 0x8b, 0x60, 0x40, 0xab, 0xb, 0xe0, 0xc0, 0x2b, 0x80, 0x6b, 0x4b, 0xa0}, [16]uint8{0x0, 0xec, 0xc5, 0x29, 0x97, 0x7b, 0x52, 0xbe, 0x33, 0xdf, 0xf6, 0x1a, 0xa4, 0x48, 0x61, 0x8d}, [16]uint8{0x0, 0xed, 0xc7, 0x2a, 0x93, 0x7e, 0x54, 0xb9, 0x3b, 0xd6, 0xfc, 0x11, 0xa8, 0x45, 0x6f, 0x82}, [16]uint8{0x0, 0xee, 0xc1, 0x2f, 0x9f, 0x71, 0x5e, 0xb0, 0x23, 0xcd, 0xe2, 0xc, 0xbc, 0x52, 0x7d, 0x93}, [16]uint8{0x0, 0xef, 0xc3, 0x2c, 0x9b, 0x74, 0x58, 0xb7, 0x2b, 0xc4, 0xe8, 0x7, 0xb0, 0x5f, 0x73, 0x9c}, [16]uint8{0x0, 0xf0, 0xfd, 0xd, 0xe7, 0x17, 0x1a, 0xea, 0xd3, 0x23, 0x2e, 0xde, 0x34, 0xc4, 0xc9, 0x39}, [16]uint8{0x0, 0xf1, 0xff, 0xe, 0xe3, 0x12, 0x1c, 0xed, 0xdb, 0x2a, 0x24, 0xd5, 0x38, 0xc9, 0xc7, 0x36}, [16]uint8{0x0, 0xf2, 0xf9, 0xb, 0xef, 0x1d, 0x16, 0xe4, 0xc3, 0x31, 0x3a, 0xc8, 0x2c, 0xde, 0xd5, 0x27}, [16]uint8{0x0, 0xf3, 0xfb, 0x8, 0xeb, 0x18, 0x10, 0xe3, 0xcb, 0x38, 0x30, 0xc3, 0x20, 0xd3, 0xdb, 0x28}, [16]uint8{0x0, 0xf4, 0xf5, 0x1, 0xf7, 0x3, 0x2, 0xf6, 0xf3, 0x7, 0x6, 0xf2, 0x4, 0xf0, 0xf1, 0x5}, [16]uint8{0x0, 0xf5, 0xf7, 0x2, 0xf3, 0x6, 0x4, 0xf1, 0xfb, 0xe, 0xc, 0xf9, 0x8, 0xfd, 0xff, 0xa}, [16]uint8{0x0, 0xf6, 0xf1, 0x7, 0xff, 0x9, 0xe, 0xf8, 0xe3, 0x15, 0x12, 0xe4, 0x1c, 0xea, 0xed, 0x1b}, [16]uint8{0x0, 0xf7, 0xf3, 0x4, 0xfb, 0xc, 0x8, 0xff, 0xeb, 0x1c, 0x18, 0xef, 0x10, 0xe7, 0xe3, 0x14}, [16]uint8{0x0, 0xf8, 0xed, 0x15, 0xc7, 0x3f, 0x2a, 0xd2, 0x93, 0x6b, 0x7e, 0x86, 0x54, 0xac, 0xb9, 0x41}, [16]uint8{0x0, 0xf9, 0xef, 0x16, 0xc3, 0x3a, 0x2c, 0xd5, 0x9b, 0x62, 0x74, 0x8d, 0x58, 0xa1, 0xb7, 0x4e}, [16]uint8{0x0, 0xfa, 0xe9, 0x13, 0xcf, 0x35, 0x26, 0xdc, 0x83, 0x79, 0x6a, 0x90, 0x4c, 0xb6, 0xa5, 0x5f}, [16]uint8{0x0, 0xfb, 0xeb, 0x10, 0xcb, 0x30, 0x20, 0xdb, 0x8b, 0x70, 0x60, 0x9b, 0x40, 0xbb, 0xab, 0x50}, [16]uint8{0x0, 0xfc, 0xe5, 0x19, 0xd7, 0x2b, 0x32, 0xce, 0xb3, 0x4f, 0x56, 0xaa, 0x64, 0x98, 0x81, 0x7d}, [16]uint8{0x0, 0xfd, 0xe7, 0x1a, 0xd3, 0x2e, 0x34, 0xc9, 0xbb, 0x46, 0x5c, 0xa1, 0x68, 0x95, 0x8f, 0x72}, [16]uint8{0x0, 0xfe, 0xe1, 0x1f, 0xdf, 0x21, 0x3e, 0xc0, 0xa3, 0x5d, 0x42, 0xbc, 0x7c, 0x82, 0x9d, 0x63}, [16]uint8{0x0, 0xff, 0xe3, 0x1c, 0xdb, 0x24, 0x38, 0xc7, 0xab, 0x54, 0x48, 0xb7, 0x70, 0x8f, 0x93, 0x6c}} +var mulTableHigh = [256][16]uint8{[16]uint8{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, [16]uint8{0x0, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80, 0x90, 0xa0, 0xb0, 0xc0, 0xd0, 0xe0, 0xf0}, [16]uint8{0x0, 0x20, 0x40, 0x60, 0x80, 0xa0, 0xc0, 0xe0, 0x1d, 0x3d, 0x5d, 0x7d, 0x9d, 0xbd, 0xdd, 0xfd}, [16]uint8{0x0, 0x30, 0x60, 0x50, 0xc0, 0xf0, 0xa0, 0x90, 0x9d, 0xad, 0xfd, 0xcd, 0x5d, 0x6d, 0x3d, 0xd}, [16]uint8{0x0, 0x40, 0x80, 0xc0, 0x1d, 0x5d, 0x9d, 0xdd, 0x3a, 0x7a, 0xba, 0xfa, 0x27, 0x67, 0xa7, 0xe7}, [16]uint8{0x0, 0x50, 0xa0, 0xf0, 0x5d, 0xd, 0xfd, 0xad, 0xba, 0xea, 0x1a, 0x4a, 0xe7, 0xb7, 0x47, 0x17}, [16]uint8{0x0, 0x60, 0xc0, 0xa0, 0x9d, 0xfd, 0x5d, 0x3d, 0x27, 0x47, 0xe7, 0x87, 0xba, 0xda, 0x7a, 0x1a}, [16]uint8{0x0, 0x70, 0xe0, 0x90, 0xdd, 0xad, 0x3d, 0x4d, 0xa7, 0xd7, 0x47, 0x37, 0x7a, 0xa, 0x9a, 0xea}, [16]uint8{0x0, 0x80, 0x1d, 0x9d, 0x3a, 0xba, 0x27, 0xa7, 0x74, 0xf4, 0x69, 0xe9, 0x4e, 0xce, 0x53, 0xd3}, [16]uint8{0x0, 0x90, 0x3d, 0xad, 0x7a, 0xea, 0x47, 0xd7, 0xf4, 0x64, 0xc9, 0x59, 0x8e, 0x1e, 0xb3, 0x23}, [16]uint8{0x0, 0xa0, 0x5d, 0xfd, 0xba, 0x1a, 0xe7, 0x47, 0x69, 0xc9, 0x34, 0x94, 0xd3, 0x73, 0x8e, 0x2e}, [16]uint8{0x0, 0xb0, 0x7d, 0xcd, 0xfa, 0x4a, 0x87, 0x37, 0xe9, 0x59, 0x94, 0x24, 0x13, 0xa3, 0x6e, 0xde}, [16]uint8{0x0, 0xc0, 0x9d, 0x5d, 0x27, 0xe7, 0xba, 0x7a, 0x4e, 0x8e, 0xd3, 0x13, 0x69, 0xa9, 0xf4, 0x34}, [16]uint8{0x0, 0xd0, 0xbd, 0x6d, 0x67, 0xb7, 0xda, 0xa, 0xce, 0x1e, 0x73, 0xa3, 0xa9, 0x79, 0x14, 0xc4}, [16]uint8{0x0, 0xe0, 0xdd, 0x3d, 0xa7, 0x47, 0x7a, 0x9a, 0x53, 0xb3, 0x8e, 0x6e, 0xf4, 0x14, 0x29, 0xc9}, [16]uint8{0x0, 0xf0, 0xfd, 0xd, 0xe7, 0x17, 0x1a, 0xea, 0xd3, 0x23, 0x2e, 0xde, 0x34, 0xc4, 0xc9, 0x39}, [16]uint8{0x0, 0x1d, 0x3a, 0x27, 0x74, 0x69, 0x4e, 0x53, 0xe8, 0xf5, 0xd2, 0xcf, 0x9c, 0x81, 0xa6, 0xbb}, [16]uint8{0x0, 0xd, 0x1a, 0x17, 0x34, 0x39, 0x2e, 0x23, 0x68, 0x65, 0x72, 0x7f, 0x5c, 0x51, 0x46, 0x4b}, [16]uint8{0x0, 0x3d, 0x7a, 0x47, 0xf4, 0xc9, 0x8e, 0xb3, 0xf5, 0xc8, 0x8f, 0xb2, 0x1, 0x3c, 0x7b, 0x46}, [16]uint8{0x0, 0x2d, 0x5a, 0x77, 0xb4, 0x99, 0xee, 0xc3, 0x75, 0x58, 0x2f, 0x2, 0xc1, 0xec, 0x9b, 0xb6}, [16]uint8{0x0, 0x5d, 0xba, 0xe7, 0x69, 0x34, 0xd3, 0x8e, 0xd2, 0x8f, 0x68, 0x35, 0xbb, 0xe6, 0x1, 0x5c}, [16]uint8{0x0, 0x4d, 0x9a, 0xd7, 0x29, 0x64, 0xb3, 0xfe, 0x52, 0x1f, 0xc8, 0x85, 0x7b, 0x36, 0xe1, 0xac}, [16]uint8{0x0, 0x7d, 0xfa, 0x87, 0xe9, 0x94, 0x13, 0x6e, 0xcf, 0xb2, 0x35, 0x48, 0x26, 0x5b, 0xdc, 0xa1}, [16]uint8{0x0, 0x6d, 0xda, 0xb7, 0xa9, 0xc4, 0x73, 0x1e, 0x4f, 0x22, 0x95, 0xf8, 0xe6, 0x8b, 0x3c, 0x51}, [16]uint8{0x0, 0x9d, 0x27, 0xba, 0x4e, 0xd3, 0x69, 0xf4, 0x9c, 0x1, 0xbb, 0x26, 0xd2, 0x4f, 0xf5, 0x68}, [16]uint8{0x0, 0x8d, 0x7, 0x8a, 0xe, 0x83, 0x9, 0x84, 0x1c, 0x91, 0x1b, 0x96, 0x12, 0x9f, 0x15, 0x98}, [16]uint8{0x0, 0xbd, 0x67, 0xda, 0xce, 0x73, 0xa9, 0x14, 0x81, 0x3c, 0xe6, 0x5b, 0x4f, 0xf2, 0x28, 0x95}, [16]uint8{0x0, 0xad, 0x47, 0xea, 0x8e, 0x23, 0xc9, 0x64, 0x1, 0xac, 0x46, 0xeb, 0x8f, 0x22, 0xc8, 0x65}, [16]uint8{0x0, 0xdd, 0xa7, 0x7a, 0x53, 0x8e, 0xf4, 0x29, 0xa6, 0x7b, 0x1, 0xdc, 0xf5, 0x28, 0x52, 0x8f}, [16]uint8{0x0, 0xcd, 0x87, 0x4a, 0x13, 0xde, 0x94, 0x59, 0x26, 0xeb, 0xa1, 0x6c, 0x35, 0xf8, 0xb2, 0x7f}, [16]uint8{0x0, 0xfd, 0xe7, 0x1a, 0xd3, 0x2e, 0x34, 0xc9, 0xbb, 0x46, 0x5c, 0xa1, 0x68, 0x95, 0x8f, 0x72}, [16]uint8{0x0, 0xed, 0xc7, 0x2a, 0x93, 0x7e, 0x54, 0xb9, 0x3b, 0xd6, 0xfc, 0x11, 0xa8, 0x45, 0x6f, 0x82}, [16]uint8{0x0, 0x3a, 0x74, 0x4e, 0xe8, 0xd2, 0x9c, 0xa6, 0xcd, 0xf7, 0xb9, 0x83, 0x25, 0x1f, 0x51, 0x6b}, [16]uint8{0x0, 0x2a, 0x54, 0x7e, 0xa8, 0x82, 0xfc, 0xd6, 0x4d, 0x67, 0x19, 0x33, 0xe5, 0xcf, 0xb1, 0x9b}, [16]uint8{0x0, 0x1a, 0x34, 0x2e, 0x68, 0x72, 0x5c, 0x46, 0xd0, 0xca, 0xe4, 0xfe, 0xb8, 0xa2, 0x8c, 0x96}, [16]uint8{0x0, 0xa, 0x14, 0x1e, 0x28, 0x22, 0x3c, 0x36, 0x50, 0x5a, 0x44, 0x4e, 0x78, 0x72, 0x6c, 0x66}, [16]uint8{0x0, 0x7a, 0xf4, 0x8e, 0xf5, 0x8f, 0x1, 0x7b, 0xf7, 0x8d, 0x3, 0x79, 0x2, 0x78, 0xf6, 0x8c}, [16]uint8{0x0, 0x6a, 0xd4, 0xbe, 0xb5, 0xdf, 0x61, 0xb, 0x77, 0x1d, 0xa3, 0xc9, 0xc2, 0xa8, 0x16, 0x7c}, [16]uint8{0x0, 0x5a, 0xb4, 0xee, 0x75, 0x2f, 0xc1, 0x9b, 0xea, 0xb0, 0x5e, 0x4, 0x9f, 0xc5, 0x2b, 0x71}, [16]uint8{0x0, 0x4a, 0x94, 0xde, 0x35, 0x7f, 0xa1, 0xeb, 0x6a, 0x20, 0xfe, 0xb4, 0x5f, 0x15, 0xcb, 0x81}, [16]uint8{0x0, 0xba, 0x69, 0xd3, 0xd2, 0x68, 0xbb, 0x1, 0xb9, 0x3, 0xd0, 0x6a, 0x6b, 0xd1, 0x2, 0xb8}, [16]uint8{0x0, 0xaa, 0x49, 0xe3, 0x92, 0x38, 0xdb, 0x71, 0x39, 0x93, 0x70, 0xda, 0xab, 0x1, 0xe2, 0x48}, [16]uint8{0x0, 0x9a, 0x29, 0xb3, 0x52, 0xc8, 0x7b, 0xe1, 0xa4, 0x3e, 0x8d, 0x17, 0xf6, 0x6c, 0xdf, 0x45}, [16]uint8{0x0, 0x8a, 0x9, 0x83, 0x12, 0x98, 0x1b, 0x91, 0x24, 0xae, 0x2d, 0xa7, 0x36, 0xbc, 0x3f, 0xb5}, [16]uint8{0x0, 0xfa, 0xe9, 0x13, 0xcf, 0x35, 0x26, 0xdc, 0x83, 0x79, 0x6a, 0x90, 0x4c, 0xb6, 0xa5, 0x5f}, [16]uint8{0x0, 0xea, 0xc9, 0x23, 0x8f, 0x65, 0x46, 0xac, 0x3, 0xe9, 0xca, 0x20, 0x8c, 0x66, 0x45, 0xaf}, [16]uint8{0x0, 0xda, 0xa9, 0x73, 0x4f, 0x95, 0xe6, 0x3c, 0x9e, 0x44, 0x37, 0xed, 0xd1, 0xb, 0x78, 0xa2}, [16]uint8{0x0, 0xca, 0x89, 0x43, 0xf, 0xc5, 0x86, 0x4c, 0x1e, 0xd4, 0x97, 0x5d, 0x11, 0xdb, 0x98, 0x52}, [16]uint8{0x0, 0x27, 0x4e, 0x69, 0x9c, 0xbb, 0xd2, 0xf5, 0x25, 0x2, 0x6b, 0x4c, 0xb9, 0x9e, 0xf7, 0xd0}, [16]uint8{0x0, 0x37, 0x6e, 0x59, 0xdc, 0xeb, 0xb2, 0x85, 0xa5, 0x92, 0xcb, 0xfc, 0x79, 0x4e, 0x17, 0x20}, [16]uint8{0x0, 0x7, 0xe, 0x9, 0x1c, 0x1b, 0x12, 0x15, 0x38, 0x3f, 0x36, 0x31, 0x24, 0x23, 0x2a, 0x2d}, [16]uint8{0x0, 0x17, 0x2e, 0x39, 0x5c, 0x4b, 0x72, 0x65, 0xb8, 0xaf, 0x96, 0x81, 0xe4, 0xf3, 0xca, 0xdd}, [16]uint8{0x0, 0x67, 0xce, 0xa9, 0x81, 0xe6, 0x4f, 0x28, 0x1f, 0x78, 0xd1, 0xb6, 0x9e, 0xf9, 0x50, 0x37}, [16]uint8{0x0, 0x77, 0xee, 0x99, 0xc1, 0xb6, 0x2f, 0x58, 0x9f, 0xe8, 0x71, 0x6, 0x5e, 0x29, 0xb0, 0xc7}, [16]uint8{0x0, 0x47, 0x8e, 0xc9, 0x1, 0x46, 0x8f, 0xc8, 0x2, 0x45, 0x8c, 0xcb, 0x3, 0x44, 0x8d, 0xca}, [16]uint8{0x0, 0x57, 0xae, 0xf9, 0x41, 0x16, 0xef, 0xb8, 0x82, 0xd5, 0x2c, 0x7b, 0xc3, 0x94, 0x6d, 0x3a}, [16]uint8{0x0, 0xa7, 0x53, 0xf4, 0xa6, 0x1, 0xf5, 0x52, 0x51, 0xf6, 0x2, 0xa5, 0xf7, 0x50, 0xa4, 0x3}, [16]uint8{0x0, 0xb7, 0x73, 0xc4, 0xe6, 0x51, 0x95, 0x22, 0xd1, 0x66, 0xa2, 0x15, 0x37, 0x80, 0x44, 0xf3}, [16]uint8{0x0, 0x87, 0x13, 0x94, 0x26, 0xa1, 0x35, 0xb2, 0x4c, 0xcb, 0x5f, 0xd8, 0x6a, 0xed, 0x79, 0xfe}, [16]uint8{0x0, 0x97, 0x33, 0xa4, 0x66, 0xf1, 0x55, 0xc2, 0xcc, 0x5b, 0xff, 0x68, 0xaa, 0x3d, 0x99, 0xe}, [16]uint8{0x0, 0xe7, 0xd3, 0x34, 0xbb, 0x5c, 0x68, 0x8f, 0x6b, 0x8c, 0xb8, 0x5f, 0xd0, 0x37, 0x3, 0xe4}, [16]uint8{0x0, 0xf7, 0xf3, 0x4, 0xfb, 0xc, 0x8, 0xff, 0xeb, 0x1c, 0x18, 0xef, 0x10, 0xe7, 0xe3, 0x14}, [16]uint8{0x0, 0xc7, 0x93, 0x54, 0x3b, 0xfc, 0xa8, 0x6f, 0x76, 0xb1, 0xe5, 0x22, 0x4d, 0x8a, 0xde, 0x19}, [16]uint8{0x0, 0xd7, 0xb3, 0x64, 0x7b, 0xac, 0xc8, 0x1f, 0xf6, 0x21, 0x45, 0x92, 0x8d, 0x5a, 0x3e, 0xe9}, [16]uint8{0x0, 0x74, 0xe8, 0x9c, 0xcd, 0xb9, 0x25, 0x51, 0x87, 0xf3, 0x6f, 0x1b, 0x4a, 0x3e, 0xa2, 0xd6}, [16]uint8{0x0, 0x64, 0xc8, 0xac, 0x8d, 0xe9, 0x45, 0x21, 0x7, 0x63, 0xcf, 0xab, 0x8a, 0xee, 0x42, 0x26}, [16]uint8{0x0, 0x54, 0xa8, 0xfc, 0x4d, 0x19, 0xe5, 0xb1, 0x9a, 0xce, 0x32, 0x66, 0xd7, 0x83, 0x7f, 0x2b}, [16]uint8{0x0, 0x44, 0x88, 0xcc, 0xd, 0x49, 0x85, 0xc1, 0x1a, 0x5e, 0x92, 0xd6, 0x17, 0x53, 0x9f, 0xdb}, [16]uint8{0x0, 0x34, 0x68, 0x5c, 0xd0, 0xe4, 0xb8, 0x8c, 0xbd, 0x89, 0xd5, 0xe1, 0x6d, 0x59, 0x5, 0x31}, [16]uint8{0x0, 0x24, 0x48, 0x6c, 0x90, 0xb4, 0xd8, 0xfc, 0x3d, 0x19, 0x75, 0x51, 0xad, 0x89, 0xe5, 0xc1}, [16]uint8{0x0, 0x14, 0x28, 0x3c, 0x50, 0x44, 0x78, 0x6c, 0xa0, 0xb4, 0x88, 0x9c, 0xf0, 0xe4, 0xd8, 0xcc}, [16]uint8{0x0, 0x4, 0x8, 0xc, 0x10, 0x14, 0x18, 0x1c, 0x20, 0x24, 0x28, 0x2c, 0x30, 0x34, 0x38, 0x3c}, [16]uint8{0x0, 0xf4, 0xf5, 0x1, 0xf7, 0x3, 0x2, 0xf6, 0xf3, 0x7, 0x6, 0xf2, 0x4, 0xf0, 0xf1, 0x5}, [16]uint8{0x0, 0xe4, 0xd5, 0x31, 0xb7, 0x53, 0x62, 0x86, 0x73, 0x97, 0xa6, 0x42, 0xc4, 0x20, 0x11, 0xf5}, [16]uint8{0x0, 0xd4, 0xb5, 0x61, 0x77, 0xa3, 0xc2, 0x16, 0xee, 0x3a, 0x5b, 0x8f, 0x99, 0x4d, 0x2c, 0xf8}, [16]uint8{0x0, 0xc4, 0x95, 0x51, 0x37, 0xf3, 0xa2, 0x66, 0x6e, 0xaa, 0xfb, 0x3f, 0x59, 0x9d, 0xcc, 0x8}, [16]uint8{0x0, 0xb4, 0x75, 0xc1, 0xea, 0x5e, 0x9f, 0x2b, 0xc9, 0x7d, 0xbc, 0x8, 0x23, 0x97, 0x56, 0xe2}, [16]uint8{0x0, 0xa4, 0x55, 0xf1, 0xaa, 0xe, 0xff, 0x5b, 0x49, 0xed, 0x1c, 0xb8, 0xe3, 0x47, 0xb6, 0x12}, [16]uint8{0x0, 0x94, 0x35, 0xa1, 0x6a, 0xfe, 0x5f, 0xcb, 0xd4, 0x40, 0xe1, 0x75, 0xbe, 0x2a, 0x8b, 0x1f}, [16]uint8{0x0, 0x84, 0x15, 0x91, 0x2a, 0xae, 0x3f, 0xbb, 0x54, 0xd0, 0x41, 0xc5, 0x7e, 0xfa, 0x6b, 0xef}, [16]uint8{0x0, 0x69, 0xd2, 0xbb, 0xb9, 0xd0, 0x6b, 0x2, 0x6f, 0x6, 0xbd, 0xd4, 0xd6, 0xbf, 0x4, 0x6d}, [16]uint8{0x0, 0x79, 0xf2, 0x8b, 0xf9, 0x80, 0xb, 0x72, 0xef, 0x96, 0x1d, 0x64, 0x16, 0x6f, 0xe4, 0x9d}, [16]uint8{0x0, 0x49, 0x92, 0xdb, 0x39, 0x70, 0xab, 0xe2, 0x72, 0x3b, 0xe0, 0xa9, 0x4b, 0x2, 0xd9, 0x90}, [16]uint8{0x0, 0x59, 0xb2, 0xeb, 0x79, 0x20, 0xcb, 0x92, 0xf2, 0xab, 0x40, 0x19, 0x8b, 0xd2, 0x39, 0x60}, [16]uint8{0x0, 0x29, 0x52, 0x7b, 0xa4, 0x8d, 0xf6, 0xdf, 0x55, 0x7c, 0x7, 0x2e, 0xf1, 0xd8, 0xa3, 0x8a}, [16]uint8{0x0, 0x39, 0x72, 0x4b, 0xe4, 0xdd, 0x96, 0xaf, 0xd5, 0xec, 0xa7, 0x9e, 0x31, 0x8, 0x43, 0x7a}, [16]uint8{0x0, 0x9, 0x12, 0x1b, 0x24, 0x2d, 0x36, 0x3f, 0x48, 0x41, 0x5a, 0x53, 0x6c, 0x65, 0x7e, 0x77}, [16]uint8{0x0, 0x19, 0x32, 0x2b, 0x64, 0x7d, 0x56, 0x4f, 0xc8, 0xd1, 0xfa, 0xe3, 0xac, 0xb5, 0x9e, 0x87}, [16]uint8{0x0, 0xe9, 0xcf, 0x26, 0x83, 0x6a, 0x4c, 0xa5, 0x1b, 0xf2, 0xd4, 0x3d, 0x98, 0x71, 0x57, 0xbe}, [16]uint8{0x0, 0xf9, 0xef, 0x16, 0xc3, 0x3a, 0x2c, 0xd5, 0x9b, 0x62, 0x74, 0x8d, 0x58, 0xa1, 0xb7, 0x4e}, [16]uint8{0x0, 0xc9, 0x8f, 0x46, 0x3, 0xca, 0x8c, 0x45, 0x6, 0xcf, 0x89, 0x40, 0x5, 0xcc, 0x8a, 0x43}, [16]uint8{0x0, 0xd9, 0xaf, 0x76, 0x43, 0x9a, 0xec, 0x35, 0x86, 0x5f, 0x29, 0xf0, 0xc5, 0x1c, 0x6a, 0xb3}, [16]uint8{0x0, 0xa9, 0x4f, 0xe6, 0x9e, 0x37, 0xd1, 0x78, 0x21, 0x88, 0x6e, 0xc7, 0xbf, 0x16, 0xf0, 0x59}, [16]uint8{0x0, 0xb9, 0x6f, 0xd6, 0xde, 0x67, 0xb1, 0x8, 0xa1, 0x18, 0xce, 0x77, 0x7f, 0xc6, 0x10, 0xa9}, [16]uint8{0x0, 0x89, 0xf, 0x86, 0x1e, 0x97, 0x11, 0x98, 0x3c, 0xb5, 0x33, 0xba, 0x22, 0xab, 0x2d, 0xa4}, [16]uint8{0x0, 0x99, 0x2f, 0xb6, 0x5e, 0xc7, 0x71, 0xe8, 0xbc, 0x25, 0x93, 0xa, 0xe2, 0x7b, 0xcd, 0x54}, [16]uint8{0x0, 0x4e, 0x9c, 0xd2, 0x25, 0x6b, 0xb9, 0xf7, 0x4a, 0x4, 0xd6, 0x98, 0x6f, 0x21, 0xf3, 0xbd}, [16]uint8{0x0, 0x5e, 0xbc, 0xe2, 0x65, 0x3b, 0xd9, 0x87, 0xca, 0x94, 0x76, 0x28, 0xaf, 0xf1, 0x13, 0x4d}, [16]uint8{0x0, 0x6e, 0xdc, 0xb2, 0xa5, 0xcb, 0x79, 0x17, 0x57, 0x39, 0x8b, 0xe5, 0xf2, 0x9c, 0x2e, 0x40}, [16]uint8{0x0, 0x7e, 0xfc, 0x82, 0xe5, 0x9b, 0x19, 0x67, 0xd7, 0xa9, 0x2b, 0x55, 0x32, 0x4c, 0xce, 0xb0}, [16]uint8{0x0, 0xe, 0x1c, 0x12, 0x38, 0x36, 0x24, 0x2a, 0x70, 0x7e, 0x6c, 0x62, 0x48, 0x46, 0x54, 0x5a}, [16]uint8{0x0, 0x1e, 0x3c, 0x22, 0x78, 0x66, 0x44, 0x5a, 0xf0, 0xee, 0xcc, 0xd2, 0x88, 0x96, 0xb4, 0xaa}, [16]uint8{0x0, 0x2e, 0x5c, 0x72, 0xb8, 0x96, 0xe4, 0xca, 0x6d, 0x43, 0x31, 0x1f, 0xd5, 0xfb, 0x89, 0xa7}, [16]uint8{0x0, 0x3e, 0x7c, 0x42, 0xf8, 0xc6, 0x84, 0xba, 0xed, 0xd3, 0x91, 0xaf, 0x15, 0x2b, 0x69, 0x57}, [16]uint8{0x0, 0xce, 0x81, 0x4f, 0x1f, 0xd1, 0x9e, 0x50, 0x3e, 0xf0, 0xbf, 0x71, 0x21, 0xef, 0xa0, 0x6e}, [16]uint8{0x0, 0xde, 0xa1, 0x7f, 0x5f, 0x81, 0xfe, 0x20, 0xbe, 0x60, 0x1f, 0xc1, 0xe1, 0x3f, 0x40, 0x9e}, [16]uint8{0x0, 0xee, 0xc1, 0x2f, 0x9f, 0x71, 0x5e, 0xb0, 0x23, 0xcd, 0xe2, 0xc, 0xbc, 0x52, 0x7d, 0x93}, [16]uint8{0x0, 0xfe, 0xe1, 0x1f, 0xdf, 0x21, 0x3e, 0xc0, 0xa3, 0x5d, 0x42, 0xbc, 0x7c, 0x82, 0x9d, 0x63}, [16]uint8{0x0, 0x8e, 0x1, 0x8f, 0x2, 0x8c, 0x3, 0x8d, 0x4, 0x8a, 0x5, 0x8b, 0x6, 0x88, 0x7, 0x89}, [16]uint8{0x0, 0x9e, 0x21, 0xbf, 0x42, 0xdc, 0x63, 0xfd, 0x84, 0x1a, 0xa5, 0x3b, 0xc6, 0x58, 0xe7, 0x79}, [16]uint8{0x0, 0xae, 0x41, 0xef, 0x82, 0x2c, 0xc3, 0x6d, 0x19, 0xb7, 0x58, 0xf6, 0x9b, 0x35, 0xda, 0x74}, [16]uint8{0x0, 0xbe, 0x61, 0xdf, 0xc2, 0x7c, 0xa3, 0x1d, 0x99, 0x27, 0xf8, 0x46, 0x5b, 0xe5, 0x3a, 0x84}, [16]uint8{0x0, 0x53, 0xa6, 0xf5, 0x51, 0x2, 0xf7, 0xa4, 0xa2, 0xf1, 0x4, 0x57, 0xf3, 0xa0, 0x55, 0x6}, [16]uint8{0x0, 0x43, 0x86, 0xc5, 0x11, 0x52, 0x97, 0xd4, 0x22, 0x61, 0xa4, 0xe7, 0x33, 0x70, 0xb5, 0xf6}, [16]uint8{0x0, 0x73, 0xe6, 0x95, 0xd1, 0xa2, 0x37, 0x44, 0xbf, 0xcc, 0x59, 0x2a, 0x6e, 0x1d, 0x88, 0xfb}, [16]uint8{0x0, 0x63, 0xc6, 0xa5, 0x91, 0xf2, 0x57, 0x34, 0x3f, 0x5c, 0xf9, 0x9a, 0xae, 0xcd, 0x68, 0xb}, [16]uint8{0x0, 0x13, 0x26, 0x35, 0x4c, 0x5f, 0x6a, 0x79, 0x98, 0x8b, 0xbe, 0xad, 0xd4, 0xc7, 0xf2, 0xe1}, [16]uint8{0x0, 0x3, 0x6, 0x5, 0xc, 0xf, 0xa, 0x9, 0x18, 0x1b, 0x1e, 0x1d, 0x14, 0x17, 0x12, 0x11}, [16]uint8{0x0, 0x33, 0x66, 0x55, 0xcc, 0xff, 0xaa, 0x99, 0x85, 0xb6, 0xe3, 0xd0, 0x49, 0x7a, 0x2f, 0x1c}, [16]uint8{0x0, 0x23, 0x46, 0x65, 0x8c, 0xaf, 0xca, 0xe9, 0x5, 0x26, 0x43, 0x60, 0x89, 0xaa, 0xcf, 0xec}, [16]uint8{0x0, 0xd3, 0xbb, 0x68, 0x6b, 0xb8, 0xd0, 0x3, 0xd6, 0x5, 0x6d, 0xbe, 0xbd, 0x6e, 0x6, 0xd5}, [16]uint8{0x0, 0xc3, 0x9b, 0x58, 0x2b, 0xe8, 0xb0, 0x73, 0x56, 0x95, 0xcd, 0xe, 0x7d, 0xbe, 0xe6, 0x25}, [16]uint8{0x0, 0xf3, 0xfb, 0x8, 0xeb, 0x18, 0x10, 0xe3, 0xcb, 0x38, 0x30, 0xc3, 0x20, 0xd3, 0xdb, 0x28}, [16]uint8{0x0, 0xe3, 0xdb, 0x38, 0xab, 0x48, 0x70, 0x93, 0x4b, 0xa8, 0x90, 0x73, 0xe0, 0x3, 0x3b, 0xd8}, [16]uint8{0x0, 0x93, 0x3b, 0xa8, 0x76, 0xe5, 0x4d, 0xde, 0xec, 0x7f, 0xd7, 0x44, 0x9a, 0x9, 0xa1, 0x32}, [16]uint8{0x0, 0x83, 0x1b, 0x98, 0x36, 0xb5, 0x2d, 0xae, 0x6c, 0xef, 0x77, 0xf4, 0x5a, 0xd9, 0x41, 0xc2}, [16]uint8{0x0, 0xb3, 0x7b, 0xc8, 0xf6, 0x45, 0x8d, 0x3e, 0xf1, 0x42, 0x8a, 0x39, 0x7, 0xb4, 0x7c, 0xcf}, [16]uint8{0x0, 0xa3, 0x5b, 0xf8, 0xb6, 0x15, 0xed, 0x4e, 0x71, 0xd2, 0x2a, 0x89, 0xc7, 0x64, 0x9c, 0x3f}, [16]uint8{0x0, 0xe8, 0xcd, 0x25, 0x87, 0x6f, 0x4a, 0xa2, 0x13, 0xfb, 0xde, 0x36, 0x94, 0x7c, 0x59, 0xb1}, [16]uint8{0x0, 0xf8, 0xed, 0x15, 0xc7, 0x3f, 0x2a, 0xd2, 0x93, 0x6b, 0x7e, 0x86, 0x54, 0xac, 0xb9, 0x41}, [16]uint8{0x0, 0xc8, 0x8d, 0x45, 0x7, 0xcf, 0x8a, 0x42, 0xe, 0xc6, 0x83, 0x4b, 0x9, 0xc1, 0x84, 0x4c}, [16]uint8{0x0, 0xd8, 0xad, 0x75, 0x47, 0x9f, 0xea, 0x32, 0x8e, 0x56, 0x23, 0xfb, 0xc9, 0x11, 0x64, 0xbc}, [16]uint8{0x0, 0xa8, 0x4d, 0xe5, 0x9a, 0x32, 0xd7, 0x7f, 0x29, 0x81, 0x64, 0xcc, 0xb3, 0x1b, 0xfe, 0x56}, [16]uint8{0x0, 0xb8, 0x6d, 0xd5, 0xda, 0x62, 0xb7, 0xf, 0xa9, 0x11, 0xc4, 0x7c, 0x73, 0xcb, 0x1e, 0xa6}, [16]uint8{0x0, 0x88, 0xd, 0x85, 0x1a, 0x92, 0x17, 0x9f, 0x34, 0xbc, 0x39, 0xb1, 0x2e, 0xa6, 0x23, 0xab}, [16]uint8{0x0, 0x98, 0x2d, 0xb5, 0x5a, 0xc2, 0x77, 0xef, 0xb4, 0x2c, 0x99, 0x1, 0xee, 0x76, 0xc3, 0x5b}, [16]uint8{0x0, 0x68, 0xd0, 0xb8, 0xbd, 0xd5, 0x6d, 0x5, 0x67, 0xf, 0xb7, 0xdf, 0xda, 0xb2, 0xa, 0x62}, [16]uint8{0x0, 0x78, 0xf0, 0x88, 0xfd, 0x85, 0xd, 0x75, 0xe7, 0x9f, 0x17, 0x6f, 0x1a, 0x62, 0xea, 0x92}, [16]uint8{0x0, 0x48, 0x90, 0xd8, 0x3d, 0x75, 0xad, 0xe5, 0x7a, 0x32, 0xea, 0xa2, 0x47, 0xf, 0xd7, 0x9f}, [16]uint8{0x0, 0x58, 0xb0, 0xe8, 0x7d, 0x25, 0xcd, 0x95, 0xfa, 0xa2, 0x4a, 0x12, 0x87, 0xdf, 0x37, 0x6f}, [16]uint8{0x0, 0x28, 0x50, 0x78, 0xa0, 0x88, 0xf0, 0xd8, 0x5d, 0x75, 0xd, 0x25, 0xfd, 0xd5, 0xad, 0x85}, [16]uint8{0x0, 0x38, 0x70, 0x48, 0xe0, 0xd8, 0x90, 0xa8, 0xdd, 0xe5, 0xad, 0x95, 0x3d, 0x5, 0x4d, 0x75}, [16]uint8{0x0, 0x8, 0x10, 0x18, 0x20, 0x28, 0x30, 0x38, 0x40, 0x48, 0x50, 0x58, 0x60, 0x68, 0x70, 0x78}, [16]uint8{0x0, 0x18, 0x30, 0x28, 0x60, 0x78, 0x50, 0x48, 0xc0, 0xd8, 0xf0, 0xe8, 0xa0, 0xb8, 0x90, 0x88}, [16]uint8{0x0, 0xf5, 0xf7, 0x2, 0xf3, 0x6, 0x4, 0xf1, 0xfb, 0xe, 0xc, 0xf9, 0x8, 0xfd, 0xff, 0xa}, [16]uint8{0x0, 0xe5, 0xd7, 0x32, 0xb3, 0x56, 0x64, 0x81, 0x7b, 0x9e, 0xac, 0x49, 0xc8, 0x2d, 0x1f, 0xfa}, [16]uint8{0x0, 0xd5, 0xb7, 0x62, 0x73, 0xa6, 0xc4, 0x11, 0xe6, 0x33, 0x51, 0x84, 0x95, 0x40, 0x22, 0xf7}, [16]uint8{0x0, 0xc5, 0x97, 0x52, 0x33, 0xf6, 0xa4, 0x61, 0x66, 0xa3, 0xf1, 0x34, 0x55, 0x90, 0xc2, 0x7}, [16]uint8{0x0, 0xb5, 0x77, 0xc2, 0xee, 0x5b, 0x99, 0x2c, 0xc1, 0x74, 0xb6, 0x3, 0x2f, 0x9a, 0x58, 0xed}, [16]uint8{0x0, 0xa5, 0x57, 0xf2, 0xae, 0xb, 0xf9, 0x5c, 0x41, 0xe4, 0x16, 0xb3, 0xef, 0x4a, 0xb8, 0x1d}, [16]uint8{0x0, 0x95, 0x37, 0xa2, 0x6e, 0xfb, 0x59, 0xcc, 0xdc, 0x49, 0xeb, 0x7e, 0xb2, 0x27, 0x85, 0x10}, [16]uint8{0x0, 0x85, 0x17, 0x92, 0x2e, 0xab, 0x39, 0xbc, 0x5c, 0xd9, 0x4b, 0xce, 0x72, 0xf7, 0x65, 0xe0}, [16]uint8{0x0, 0x75, 0xea, 0x9f, 0xc9, 0xbc, 0x23, 0x56, 0x8f, 0xfa, 0x65, 0x10, 0x46, 0x33, 0xac, 0xd9}, [16]uint8{0x0, 0x65, 0xca, 0xaf, 0x89, 0xec, 0x43, 0x26, 0xf, 0x6a, 0xc5, 0xa0, 0x86, 0xe3, 0x4c, 0x29}, [16]uint8{0x0, 0x55, 0xaa, 0xff, 0x49, 0x1c, 0xe3, 0xb6, 0x92, 0xc7, 0x38, 0x6d, 0xdb, 0x8e, 0x71, 0x24}, [16]uint8{0x0, 0x45, 0x8a, 0xcf, 0x9, 0x4c, 0x83, 0xc6, 0x12, 0x57, 0x98, 0xdd, 0x1b, 0x5e, 0x91, 0xd4}, [16]uint8{0x0, 0x35, 0x6a, 0x5f, 0xd4, 0xe1, 0xbe, 0x8b, 0xb5, 0x80, 0xdf, 0xea, 0x61, 0x54, 0xb, 0x3e}, [16]uint8{0x0, 0x25, 0x4a, 0x6f, 0x94, 0xb1, 0xde, 0xfb, 0x35, 0x10, 0x7f, 0x5a, 0xa1, 0x84, 0xeb, 0xce}, [16]uint8{0x0, 0x15, 0x2a, 0x3f, 0x54, 0x41, 0x7e, 0x6b, 0xa8, 0xbd, 0x82, 0x97, 0xfc, 0xe9, 0xd6, 0xc3}, [16]uint8{0x0, 0x5, 0xa, 0xf, 0x14, 0x11, 0x1e, 0x1b, 0x28, 0x2d, 0x22, 0x27, 0x3c, 0x39, 0x36, 0x33}, [16]uint8{0x0, 0xd2, 0xb9, 0x6b, 0x6f, 0xbd, 0xd6, 0x4, 0xde, 0xc, 0x67, 0xb5, 0xb1, 0x63, 0x8, 0xda}, [16]uint8{0x0, 0xc2, 0x99, 0x5b, 0x2f, 0xed, 0xb6, 0x74, 0x5e, 0x9c, 0xc7, 0x5, 0x71, 0xb3, 0xe8, 0x2a}, [16]uint8{0x0, 0xf2, 0xf9, 0xb, 0xef, 0x1d, 0x16, 0xe4, 0xc3, 0x31, 0x3a, 0xc8, 0x2c, 0xde, 0xd5, 0x27}, [16]uint8{0x0, 0xe2, 0xd9, 0x3b, 0xaf, 0x4d, 0x76, 0x94, 0x43, 0xa1, 0x9a, 0x78, 0xec, 0xe, 0x35, 0xd7}, [16]uint8{0x0, 0x92, 0x39, 0xab, 0x72, 0xe0, 0x4b, 0xd9, 0xe4, 0x76, 0xdd, 0x4f, 0x96, 0x4, 0xaf, 0x3d}, [16]uint8{0x0, 0x82, 0x19, 0x9b, 0x32, 0xb0, 0x2b, 0xa9, 0x64, 0xe6, 0x7d, 0xff, 0x56, 0xd4, 0x4f, 0xcd}, [16]uint8{0x0, 0xb2, 0x79, 0xcb, 0xf2, 0x40, 0x8b, 0x39, 0xf9, 0x4b, 0x80, 0x32, 0xb, 0xb9, 0x72, 0xc0}, [16]uint8{0x0, 0xa2, 0x59, 0xfb, 0xb2, 0x10, 0xeb, 0x49, 0x79, 0xdb, 0x20, 0x82, 0xcb, 0x69, 0x92, 0x30}, [16]uint8{0x0, 0x52, 0xa4, 0xf6, 0x55, 0x7, 0xf1, 0xa3, 0xaa, 0xf8, 0xe, 0x5c, 0xff, 0xad, 0x5b, 0x9}, [16]uint8{0x0, 0x42, 0x84, 0xc6, 0x15, 0x57, 0x91, 0xd3, 0x2a, 0x68, 0xae, 0xec, 0x3f, 0x7d, 0xbb, 0xf9}, [16]uint8{0x0, 0x72, 0xe4, 0x96, 0xd5, 0xa7, 0x31, 0x43, 0xb7, 0xc5, 0x53, 0x21, 0x62, 0x10, 0x86, 0xf4}, [16]uint8{0x0, 0x62, 0xc4, 0xa6, 0x95, 0xf7, 0x51, 0x33, 0x37, 0x55, 0xf3, 0x91, 0xa2, 0xc0, 0x66, 0x4}, [16]uint8{0x0, 0x12, 0x24, 0x36, 0x48, 0x5a, 0x6c, 0x7e, 0x90, 0x82, 0xb4, 0xa6, 0xd8, 0xca, 0xfc, 0xee}, [16]uint8{0x0, 0x2, 0x4, 0x6, 0x8, 0xa, 0xc, 0xe, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e}, [16]uint8{0x0, 0x32, 0x64, 0x56, 0xc8, 0xfa, 0xac, 0x9e, 0x8d, 0xbf, 0xe9, 0xdb, 0x45, 0x77, 0x21, 0x13}, [16]uint8{0x0, 0x22, 0x44, 0x66, 0x88, 0xaa, 0xcc, 0xee, 0xd, 0x2f, 0x49, 0x6b, 0x85, 0xa7, 0xc1, 0xe3}, [16]uint8{0x0, 0xcf, 0x83, 0x4c, 0x1b, 0xd4, 0x98, 0x57, 0x36, 0xf9, 0xb5, 0x7a, 0x2d, 0xe2, 0xae, 0x61}, [16]uint8{0x0, 0xdf, 0xa3, 0x7c, 0x5b, 0x84, 0xf8, 0x27, 0xb6, 0x69, 0x15, 0xca, 0xed, 0x32, 0x4e, 0x91}, [16]uint8{0x0, 0xef, 0xc3, 0x2c, 0x9b, 0x74, 0x58, 0xb7, 0x2b, 0xc4, 0xe8, 0x7, 0xb0, 0x5f, 0x73, 0x9c}, [16]uint8{0x0, 0xff, 0xe3, 0x1c, 0xdb, 0x24, 0x38, 0xc7, 0xab, 0x54, 0x48, 0xb7, 0x70, 0x8f, 0x93, 0x6c}, [16]uint8{0x0, 0x8f, 0x3, 0x8c, 0x6, 0x89, 0x5, 0x8a, 0xc, 0x83, 0xf, 0x80, 0xa, 0x85, 0x9, 0x86}, [16]uint8{0x0, 0x9f, 0x23, 0xbc, 0x46, 0xd9, 0x65, 0xfa, 0x8c, 0x13, 0xaf, 0x30, 0xca, 0x55, 0xe9, 0x76}, [16]uint8{0x0, 0xaf, 0x43, 0xec, 0x86, 0x29, 0xc5, 0x6a, 0x11, 0xbe, 0x52, 0xfd, 0x97, 0x38, 0xd4, 0x7b}, [16]uint8{0x0, 0xbf, 0x63, 0xdc, 0xc6, 0x79, 0xa5, 0x1a, 0x91, 0x2e, 0xf2, 0x4d, 0x57, 0xe8, 0x34, 0x8b}, [16]uint8{0x0, 0x4f, 0x9e, 0xd1, 0x21, 0x6e, 0xbf, 0xf0, 0x42, 0xd, 0xdc, 0x93, 0x63, 0x2c, 0xfd, 0xb2}, [16]uint8{0x0, 0x5f, 0xbe, 0xe1, 0x61, 0x3e, 0xdf, 0x80, 0xc2, 0x9d, 0x7c, 0x23, 0xa3, 0xfc, 0x1d, 0x42}, [16]uint8{0x0, 0x6f, 0xde, 0xb1, 0xa1, 0xce, 0x7f, 0x10, 0x5f, 0x30, 0x81, 0xee, 0xfe, 0x91, 0x20, 0x4f}, [16]uint8{0x0, 0x7f, 0xfe, 0x81, 0xe1, 0x9e, 0x1f, 0x60, 0xdf, 0xa0, 0x21, 0x5e, 0x3e, 0x41, 0xc0, 0xbf}, [16]uint8{0x0, 0xf, 0x1e, 0x11, 0x3c, 0x33, 0x22, 0x2d, 0x78, 0x77, 0x66, 0x69, 0x44, 0x4b, 0x5a, 0x55}, [16]uint8{0x0, 0x1f, 0x3e, 0x21, 0x7c, 0x63, 0x42, 0x5d, 0xf8, 0xe7, 0xc6, 0xd9, 0x84, 0x9b, 0xba, 0xa5}, [16]uint8{0x0, 0x2f, 0x5e, 0x71, 0xbc, 0x93, 0xe2, 0xcd, 0x65, 0x4a, 0x3b, 0x14, 0xd9, 0xf6, 0x87, 0xa8}, [16]uint8{0x0, 0x3f, 0x7e, 0x41, 0xfc, 0xc3, 0x82, 0xbd, 0xe5, 0xda, 0x9b, 0xa4, 0x19, 0x26, 0x67, 0x58}, [16]uint8{0x0, 0x9c, 0x25, 0xb9, 0x4a, 0xd6, 0x6f, 0xf3, 0x94, 0x8, 0xb1, 0x2d, 0xde, 0x42, 0xfb, 0x67}, [16]uint8{0x0, 0x8c, 0x5, 0x89, 0xa, 0x86, 0xf, 0x83, 0x14, 0x98, 0x11, 0x9d, 0x1e, 0x92, 0x1b, 0x97}, [16]uint8{0x0, 0xbc, 0x65, 0xd9, 0xca, 0x76, 0xaf, 0x13, 0x89, 0x35, 0xec, 0x50, 0x43, 0xff, 0x26, 0x9a}, [16]uint8{0x0, 0xac, 0x45, 0xe9, 0x8a, 0x26, 0xcf, 0x63, 0x9, 0xa5, 0x4c, 0xe0, 0x83, 0x2f, 0xc6, 0x6a}, [16]uint8{0x0, 0xdc, 0xa5, 0x79, 0x57, 0x8b, 0xf2, 0x2e, 0xae, 0x72, 0xb, 0xd7, 0xf9, 0x25, 0x5c, 0x80}, [16]uint8{0x0, 0xcc, 0x85, 0x49, 0x17, 0xdb, 0x92, 0x5e, 0x2e, 0xe2, 0xab, 0x67, 0x39, 0xf5, 0xbc, 0x70}, [16]uint8{0x0, 0xfc, 0xe5, 0x19, 0xd7, 0x2b, 0x32, 0xce, 0xb3, 0x4f, 0x56, 0xaa, 0x64, 0x98, 0x81, 0x7d}, [16]uint8{0x0, 0xec, 0xc5, 0x29, 0x97, 0x7b, 0x52, 0xbe, 0x33, 0xdf, 0xf6, 0x1a, 0xa4, 0x48, 0x61, 0x8d}, [16]uint8{0x0, 0x1c, 0x38, 0x24, 0x70, 0x6c, 0x48, 0x54, 0xe0, 0xfc, 0xd8, 0xc4, 0x90, 0x8c, 0xa8, 0xb4}, [16]uint8{0x0, 0xc, 0x18, 0x14, 0x30, 0x3c, 0x28, 0x24, 0x60, 0x6c, 0x78, 0x74, 0x50, 0x5c, 0x48, 0x44}, [16]uint8{0x0, 0x3c, 0x78, 0x44, 0xf0, 0xcc, 0x88, 0xb4, 0xfd, 0xc1, 0x85, 0xb9, 0xd, 0x31, 0x75, 0x49}, [16]uint8{0x0, 0x2c, 0x58, 0x74, 0xb0, 0x9c, 0xe8, 0xc4, 0x7d, 0x51, 0x25, 0x9, 0xcd, 0xe1, 0x95, 0xb9}, [16]uint8{0x0, 0x5c, 0xb8, 0xe4, 0x6d, 0x31, 0xd5, 0x89, 0xda, 0x86, 0x62, 0x3e, 0xb7, 0xeb, 0xf, 0x53}, [16]uint8{0x0, 0x4c, 0x98, 0xd4, 0x2d, 0x61, 0xb5, 0xf9, 0x5a, 0x16, 0xc2, 0x8e, 0x77, 0x3b, 0xef, 0xa3}, [16]uint8{0x0, 0x7c, 0xf8, 0x84, 0xed, 0x91, 0x15, 0x69, 0xc7, 0xbb, 0x3f, 0x43, 0x2a, 0x56, 0xd2, 0xae}, [16]uint8{0x0, 0x6c, 0xd8, 0xb4, 0xad, 0xc1, 0x75, 0x19, 0x47, 0x2b, 0x9f, 0xf3, 0xea, 0x86, 0x32, 0x5e}, [16]uint8{0x0, 0x81, 0x1f, 0x9e, 0x3e, 0xbf, 0x21, 0xa0, 0x7c, 0xfd, 0x63, 0xe2, 0x42, 0xc3, 0x5d, 0xdc}, [16]uint8{0x0, 0x91, 0x3f, 0xae, 0x7e, 0xef, 0x41, 0xd0, 0xfc, 0x6d, 0xc3, 0x52, 0x82, 0x13, 0xbd, 0x2c}, [16]uint8{0x0, 0xa1, 0x5f, 0xfe, 0xbe, 0x1f, 0xe1, 0x40, 0x61, 0xc0, 0x3e, 0x9f, 0xdf, 0x7e, 0x80, 0x21}, [16]uint8{0x0, 0xb1, 0x7f, 0xce, 0xfe, 0x4f, 0x81, 0x30, 0xe1, 0x50, 0x9e, 0x2f, 0x1f, 0xae, 0x60, 0xd1}, [16]uint8{0x0, 0xc1, 0x9f, 0x5e, 0x23, 0xe2, 0xbc, 0x7d, 0x46, 0x87, 0xd9, 0x18, 0x65, 0xa4, 0xfa, 0x3b}, [16]uint8{0x0, 0xd1, 0xbf, 0x6e, 0x63, 0xb2, 0xdc, 0xd, 0xc6, 0x17, 0x79, 0xa8, 0xa5, 0x74, 0x1a, 0xcb}, [16]uint8{0x0, 0xe1, 0xdf, 0x3e, 0xa3, 0x42, 0x7c, 0x9d, 0x5b, 0xba, 0x84, 0x65, 0xf8, 0x19, 0x27, 0xc6}, [16]uint8{0x0, 0xf1, 0xff, 0xe, 0xe3, 0x12, 0x1c, 0xed, 0xdb, 0x2a, 0x24, 0xd5, 0x38, 0xc9, 0xc7, 0x36}, [16]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf}, [16]uint8{0x0, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}, [16]uint8{0x0, 0x21, 0x42, 0x63, 0x84, 0xa5, 0xc6, 0xe7, 0x15, 0x34, 0x57, 0x76, 0x91, 0xb0, 0xd3, 0xf2}, [16]uint8{0x0, 0x31, 0x62, 0x53, 0xc4, 0xf5, 0xa6, 0x97, 0x95, 0xa4, 0xf7, 0xc6, 0x51, 0x60, 0x33, 0x2}, [16]uint8{0x0, 0x41, 0x82, 0xc3, 0x19, 0x58, 0x9b, 0xda, 0x32, 0x73, 0xb0, 0xf1, 0x2b, 0x6a, 0xa9, 0xe8}, [16]uint8{0x0, 0x51, 0xa2, 0xf3, 0x59, 0x8, 0xfb, 0xaa, 0xb2, 0xe3, 0x10, 0x41, 0xeb, 0xba, 0x49, 0x18}, [16]uint8{0x0, 0x61, 0xc2, 0xa3, 0x99, 0xf8, 0x5b, 0x3a, 0x2f, 0x4e, 0xed, 0x8c, 0xb6, 0xd7, 0x74, 0x15}, [16]uint8{0x0, 0x71, 0xe2, 0x93, 0xd9, 0xa8, 0x3b, 0x4a, 0xaf, 0xde, 0x4d, 0x3c, 0x76, 0x7, 0x94, 0xe5}, [16]uint8{0x0, 0xa6, 0x51, 0xf7, 0xa2, 0x4, 0xf3, 0x55, 0x59, 0xff, 0x8, 0xae, 0xfb, 0x5d, 0xaa, 0xc}, [16]uint8{0x0, 0xb6, 0x71, 0xc7, 0xe2, 0x54, 0x93, 0x25, 0xd9, 0x6f, 0xa8, 0x1e, 0x3b, 0x8d, 0x4a, 0xfc}, [16]uint8{0x0, 0x86, 0x11, 0x97, 0x22, 0xa4, 0x33, 0xb5, 0x44, 0xc2, 0x55, 0xd3, 0x66, 0xe0, 0x77, 0xf1}, [16]uint8{0x0, 0x96, 0x31, 0xa7, 0x62, 0xf4, 0x53, 0xc5, 0xc4, 0x52, 0xf5, 0x63, 0xa6, 0x30, 0x97, 0x1}, [16]uint8{0x0, 0xe6, 0xd1, 0x37, 0xbf, 0x59, 0x6e, 0x88, 0x63, 0x85, 0xb2, 0x54, 0xdc, 0x3a, 0xd, 0xeb}, [16]uint8{0x0, 0xf6, 0xf1, 0x7, 0xff, 0x9, 0xe, 0xf8, 0xe3, 0x15, 0x12, 0xe4, 0x1c, 0xea, 0xed, 0x1b}, [16]uint8{0x0, 0xc6, 0x91, 0x57, 0x3f, 0xf9, 0xae, 0x68, 0x7e, 0xb8, 0xef, 0x29, 0x41, 0x87, 0xd0, 0x16}, [16]uint8{0x0, 0xd6, 0xb1, 0x67, 0x7f, 0xa9, 0xce, 0x18, 0xfe, 0x28, 0x4f, 0x99, 0x81, 0x57, 0x30, 0xe6}, [16]uint8{0x0, 0x26, 0x4c, 0x6a, 0x98, 0xbe, 0xd4, 0xf2, 0x2d, 0xb, 0x61, 0x47, 0xb5, 0x93, 0xf9, 0xdf}, [16]uint8{0x0, 0x36, 0x6c, 0x5a, 0xd8, 0xee, 0xb4, 0x82, 0xad, 0x9b, 0xc1, 0xf7, 0x75, 0x43, 0x19, 0x2f}, [16]uint8{0x0, 0x6, 0xc, 0xa, 0x18, 0x1e, 0x14, 0x12, 0x30, 0x36, 0x3c, 0x3a, 0x28, 0x2e, 0x24, 0x22}, [16]uint8{0x0, 0x16, 0x2c, 0x3a, 0x58, 0x4e, 0x74, 0x62, 0xb0, 0xa6, 0x9c, 0x8a, 0xe8, 0xfe, 0xc4, 0xd2}, [16]uint8{0x0, 0x66, 0xcc, 0xaa, 0x85, 0xe3, 0x49, 0x2f, 0x17, 0x71, 0xdb, 0xbd, 0x92, 0xf4, 0x5e, 0x38}, [16]uint8{0x0, 0x76, 0xec, 0x9a, 0xc5, 0xb3, 0x29, 0x5f, 0x97, 0xe1, 0x7b, 0xd, 0x52, 0x24, 0xbe, 0xc8}, [16]uint8{0x0, 0x46, 0x8c, 0xca, 0x5, 0x43, 0x89, 0xcf, 0xa, 0x4c, 0x86, 0xc0, 0xf, 0x49, 0x83, 0xc5}, [16]uint8{0x0, 0x56, 0xac, 0xfa, 0x45, 0x13, 0xe9, 0xbf, 0x8a, 0xdc, 0x26, 0x70, 0xcf, 0x99, 0x63, 0x35}, [16]uint8{0x0, 0xbb, 0x6b, 0xd0, 0xd6, 0x6d, 0xbd, 0x6, 0xb1, 0xa, 0xda, 0x61, 0x67, 0xdc, 0xc, 0xb7}, [16]uint8{0x0, 0xab, 0x4b, 0xe0, 0x96, 0x3d, 0xdd, 0x76, 0x31, 0x9a, 0x7a, 0xd1, 0xa7, 0xc, 0xec, 0x47}, [16]uint8{0x0, 0x9b, 0x2b, 0xb0, 0x56, 0xcd, 0x7d, 0xe6, 0xac, 0x37, 0x87, 0x1c, 0xfa, 0x61, 0xd1, 0x4a}, [16]uint8{0x0, 0x8b, 0xb, 0x80, 0x16, 0x9d, 0x1d, 0x96, 0x2c, 0xa7, 0x27, 0xac, 0x3a, 0xb1, 0x31, 0xba}, [16]uint8{0x0, 0xfb, 0xeb, 0x10, 0xcb, 0x30, 0x20, 0xdb, 0x8b, 0x70, 0x60, 0x9b, 0x40, 0xbb, 0xab, 0x50}, [16]uint8{0x0, 0xeb, 0xcb, 0x20, 0x8b, 0x60, 0x40, 0xab, 0xb, 0xe0, 0xc0, 0x2b, 0x80, 0x6b, 0x4b, 0xa0}, [16]uint8{0x0, 0xdb, 0xab, 0x70, 0x4b, 0x90, 0xe0, 0x3b, 0x96, 0x4d, 0x3d, 0xe6, 0xdd, 0x6, 0x76, 0xad}, [16]uint8{0x0, 0xcb, 0x8b, 0x40, 0xb, 0xc0, 0x80, 0x4b, 0x16, 0xdd, 0x9d, 0x56, 0x1d, 0xd6, 0x96, 0x5d}, [16]uint8{0x0, 0x3b, 0x76, 0x4d, 0xec, 0xd7, 0x9a, 0xa1, 0xc5, 0xfe, 0xb3, 0x88, 0x29, 0x12, 0x5f, 0x64}, [16]uint8{0x0, 0x2b, 0x56, 0x7d, 0xac, 0x87, 0xfa, 0xd1, 0x45, 0x6e, 0x13, 0x38, 0xe9, 0xc2, 0xbf, 0x94}, [16]uint8{0x0, 0x1b, 0x36, 0x2d, 0x6c, 0x77, 0x5a, 0x41, 0xd8, 0xc3, 0xee, 0xf5, 0xb4, 0xaf, 0x82, 0x99}, [16]uint8{0x0, 0xb, 0x16, 0x1d, 0x2c, 0x27, 0x3a, 0x31, 0x58, 0x53, 0x4e, 0x45, 0x74, 0x7f, 0x62, 0x69}, [16]uint8{0x0, 0x7b, 0xf6, 0x8d, 0xf1, 0x8a, 0x7, 0x7c, 0xff, 0x84, 0x9, 0x72, 0xe, 0x75, 0xf8, 0x83}, [16]uint8{0x0, 0x6b, 0xd6, 0xbd, 0xb1, 0xda, 0x67, 0xc, 0x7f, 0x14, 0xa9, 0xc2, 0xce, 0xa5, 0x18, 0x73}, [16]uint8{0x0, 0x5b, 0xb6, 0xed, 0x71, 0x2a, 0xc7, 0x9c, 0xe2, 0xb9, 0x54, 0xf, 0x93, 0xc8, 0x25, 0x7e}, [16]uint8{0x0, 0x4b, 0x96, 0xdd, 0x31, 0x7a, 0xa7, 0xec, 0x62, 0x29, 0xf4, 0xbf, 0x53, 0x18, 0xc5, 0x8e}} + +// galMultiply multiplies to elements of the field. +// Uses lookup table ~40% faster +func galMultiply(a, b byte) byte { + return mulTable[a][b] +} + +// Original function: +/* +// galMultiply multiplies to elements of the field. +func galMultiply(a, b byte) byte { + if a == 0 || b == 0 { + return 0 + } + logA := int(logTable[a]) + logB := int(logTable[b]) + return expTable[logA+logB] +} +*/ + +// galDivide is inverse of galMultiply. +func galDivide(a, b byte) byte { + if a == 0 { + return 0 + } + if b == 0 { + panic("Argument 'divisor' is 0") + } + logA := int(logTable[a]) + logB := int(logTable[b]) + logResult := logA - logB + if logResult < 0 { + logResult += 255 + } + return expTable[logResult] +} + +// Computes a**n. +// +// The result will be the same as multiplying a times itself n times. +func galExp(a byte, n int) byte { + if n == 0 { + return 1 + } + if a == 0 { + return 0 + } + + logA := logTable[a] + logResult := int(logA) * n + for logResult >= 255 { + logResult -= 255 + } + return byte(expTable[logResult]) +} diff --git a/vendor/github.com/klauspost/reedsolomon/galois_amd64.go b/vendor/github.com/klauspost/reedsolomon/galois_amd64.go new file mode 100644 index 0000000..e4d686e --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/galois_amd64.go @@ -0,0 +1,77 @@ +//+build !noasm +//+build !appengine + +// Copyright 2015, Klaus Post, see LICENSE for details. + +package reedsolomon + +import ( + "github.com/klauspost/cpuid" +) + +//go:noescape +func galMulSSSE3(low, high, in, out []byte) + +//go:noescape +func galMulSSSE3Xor(low, high, in, out []byte) + +//go:noescape +func galMulAVX2Xor(low, high, in, out []byte) + +//go:noescape +func galMulAVX2(low, high, in, out []byte) + +// This is what the assembler rountes does in blocks of 16 bytes: +/* +func galMulSSSE3(low, high, in, out []byte) { + for n, input := range in { + l := input & 0xf + h := input >> 4 + out[n] = low[l] ^ high[h] + } +} + +func galMulSSSE3Xor(low, high, in, out []byte) { + for n, input := range in { + l := input & 0xf + h := input >> 4 + out[n] ^= low[l] ^ high[h] + } +} +*/ + +func galMulSlice(c byte, in, out []byte) { + var done int + if cpuid.CPU.AVX2() { + galMulAVX2(mulTableLow[c][:], mulTableHigh[c][:], in, out) + done = (len(in) >> 5) << 5 + } else if cpuid.CPU.SSSE3() { + galMulSSSE3(mulTableLow[c][:], mulTableHigh[c][:], in, out) + done = (len(in) >> 4) << 4 + } + remain := len(in) - done + if remain > 0 { + mt := mulTable[c] + for i := done; i < len(in); i++ { + out[i] = mt[in[i]] + } + } +} + +func galMulSliceXor(c byte, in, out []byte) { + var done int + if cpuid.CPU.AVX2() { + galMulAVX2Xor(mulTableLow[c][:], mulTableHigh[c][:], in, out) + done = (len(in) >> 5) << 5 + } else if cpuid.CPU.SSSE3() { + galMulSSSE3Xor(mulTableLow[c][:], mulTableHigh[c][:], in, out) + done = (len(in) >> 4) << 4 + } + remain := len(in) - done + if remain > 0 { + mt := mulTable[c] + for i := done; i < len(in); i++ { + out[i] ^= mt[in[i]] + } + } +} diff --git a/vendor/github.com/klauspost/reedsolomon/galois_amd64.s b/vendor/github.com/klauspost/reedsolomon/galois_amd64.s new file mode 100644 index 0000000..b20338a --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/galois_amd64.s @@ -0,0 +1,164 @@ +//+build !noasm !appengine + +// Copyright 2015, Klaus Post, see LICENSE for details. + +// Based on http://www.snia.org/sites/default/files2/SDC2013/presentations/NewThinking/EthanMiller_Screaming_Fast_Galois_Field%20Arithmetic_SIMD%20Instructions.pdf +// and http://jerasure.org/jerasure/gf-complete/tree/master + +// func galMulSSSE3Xor(low, high, in, out []byte) +TEXT ·galMulSSSE3Xor(SB), 7, $0 + MOVQ low+0(FP), SI // SI: &low + MOVQ high+24(FP), DX // DX: &high + MOVOU (SI), X6 // X6 low + MOVOU (DX), X7 // X7: high + MOVQ $15, BX // BX: low mask + MOVQ BX, X8 + PXOR X5, X5 + MOVQ in+48(FP), SI // R11: &in + MOVQ in_len+56(FP), R9 // R9: len(in) + MOVQ out+72(FP), DX // DX: &out + PSHUFB X5, X8 // X8: lomask (unpacked) + SHRQ $4, R9 // len(in) / 16 + CMPQ R9, $0 + JEQ done_xor + +loopback_xor: + MOVOU (SI), X0 // in[x] + MOVOU (DX), X4 // out[x] + MOVOU X0, X1 // in[x] + MOVOU X6, X2 // low copy + MOVOU X7, X3 // high copy + PSRLQ $4, X1 // X1: high input + PAND X8, X0 // X0: low input + PAND X8, X1 // X0: high input + PSHUFB X0, X2 // X2: mul low part + PSHUFB X1, X3 // X3: mul high part + PXOR X2, X3 // X3: Result + PXOR X4, X3 // X3: Result xor existing out + MOVOU X3, (DX) // Store + ADDQ $16, SI // in+=16 + ADDQ $16, DX // out+=16 + SUBQ $1, R9 + JNZ loopback_xor + +done_xor: + RET + +// func galMulSSSE3(low, high, in, out []byte) +TEXT ·galMulSSSE3(SB), 7, $0 + MOVQ low+0(FP), SI // SI: &low + MOVQ high+24(FP), DX // DX: &high + MOVOU (SI), X6 // X6 low + MOVOU (DX), X7 // X7: high + MOVQ $15, BX // BX: low mask + MOVQ BX, X8 + PXOR X5, X5 + MOVQ in+48(FP), SI // R11: &in + MOVQ in_len+56(FP), R9 // R9: len(in) + MOVQ out+72(FP), DX // DX: &out + PSHUFB X5, X8 // X8: lomask (unpacked) + SHRQ $4, R9 // len(in) / 16 + CMPQ R9, $0 + JEQ done + +loopback: + MOVOU (SI), X0 // in[x] + MOVOU X0, X1 // in[x] + MOVOU X6, X2 // low copy + MOVOU X7, X3 // high copy + PSRLQ $4, X1 // X1: high input + PAND X8, X0 // X0: low input + PAND X8, X1 // X0: high input + PSHUFB X0, X2 // X2: mul low part + PSHUFB X1, X3 // X3: mul high part + PXOR X2, X3 // X3: Result + MOVOU X3, (DX) // Store + ADDQ $16, SI // in+=16 + ADDQ $16, DX // out+=16 + SUBQ $1, R9 + JNZ loopback + +done: + RET + +// func galMulAVX2Xor(low, high, in, out []byte) +TEXT ·galMulAVX2Xor(SB), 7, $0 + MOVQ low+0(FP), SI // SI: &low + MOVQ high+24(FP), DX // DX: &high + MOVQ $15, BX // BX: low mask + MOVQ BX, X5 + MOVOU (SI), X6 // X6 low + MOVOU (DX), X7 // X7: high + MOVQ in_len+56(FP), R9 // R9: len(in) + + LONG $0x384de3c4; WORD $0x01f6 // VINSERTI128 YMM6, YMM6, XMM6, 1 ; low + LONG $0x3845e3c4; WORD $0x01ff // VINSERTI128 YMM7, YMM7, XMM7, 1 ; high + LONG $0x787d62c4; BYTE $0xc5 // VPBROADCASTB YMM8, XMM5 ; X8: lomask (unpacked) + + SHRQ $5, R9 // len(in) /32 + MOVQ out+72(FP), DX // DX: &out + MOVQ in+48(FP), SI // R11: &in + TESTQ R9, R9 + JZ done_xor_avx2 + +loopback_xor_avx2: + LONG $0x066ffec5 // VMOVDQU YMM0, [rsi] + LONG $0x226ffec5 // VMOVDQU YMM4, [rdx] + LONG $0xd073f5c5; BYTE $0x04 // VPSRLQ YMM1, YMM0, 4 ; X1: high input + LONG $0xdb7dc1c4; BYTE $0xc0 // VPAND YMM0, YMM0, YMM8 ; X0: low input + LONG $0xdb75c1c4; BYTE $0xc8 // VPAND YMM1, YMM1, YMM8 ; X1: high input + LONG $0x004de2c4; BYTE $0xd0 // VPSHUFB YMM2, YMM6, YMM0 ; X2: mul low part + LONG $0x0045e2c4; BYTE $0xd9 // VPSHUFB YMM3, YMM7, YMM1 ; X2: mul high part + LONG $0xdbefedc5 // VPXOR YMM3, YMM2, YMM3 ; X3: Result + LONG $0xe4efe5c5 // VPXOR YMM4, YMM3, YMM4 ; X4: Result + LONG $0x227ffec5 // VMOVDQU [rdx], YMM4 + + ADDQ $32, SI // in+=32 + ADDQ $32, DX // out+=32 + SUBQ $1, R9 + JNZ loopback_xor_avx2 + +done_xor_avx2: + // VZEROUPPER + BYTE $0xc5; BYTE $0xf8; BYTE $0x77 + RET + +// func galMulAVX2(low, high, in, out []byte) +TEXT ·galMulAVX2(SB), 7, $0 + MOVQ low+0(FP), SI // SI: &low + MOVQ high+24(FP), DX // DX: &high + MOVQ $15, BX // BX: low mask + MOVQ BX, X5 + MOVOU (SI), X6 // X6 low + MOVOU (DX), X7 // X7: high + MOVQ in_len+56(FP), R9 // R9: len(in) + + LONG $0x384de3c4; WORD $0x01f6 // VINSERTI128 YMM6, YMM6, XMM6, 1 ; low + LONG $0x3845e3c4; WORD $0x01ff // VINSERTI128 YMM7, YMM7, XMM7, 1 ; high + LONG $0x787d62c4; BYTE $0xc5 // VPBROADCASTB YMM8, XMM5 ; X8: lomask (unpacked) + + SHRQ $5, R9 // len(in) /32 + MOVQ out+72(FP), DX // DX: &out + MOVQ in+48(FP), SI // R11: &in + TESTQ R9, R9 + JZ done_avx2 + +loopback_avx2: + LONG $0x066ffec5 // VMOVDQU YMM0, [rsi] + LONG $0xd073f5c5; BYTE $0x04 // VPSRLQ YMM1, YMM0, 4 ; X1: high input + LONG $0xdb7dc1c4; BYTE $0xc0 // VPAND YMM0, YMM0, YMM8 ; X0: low input + LONG $0xdb75c1c4; BYTE $0xc8 // VPAND YMM1, YMM1, YMM8 ; X1: high input + LONG $0x004de2c4; BYTE $0xd0 // VPSHUFB YMM2, YMM6, YMM0 ; X2: mul low part + LONG $0x0045e2c4; BYTE $0xd9 // VPSHUFB YMM3, YMM7, YMM1 ; X2: mul high part + LONG $0xe3efedc5 // VPXOR YMM4, YMM2, YMM3 ; X4: Result + LONG $0x227ffec5 // VMOVDQU [rdx], YMM4 + + ADDQ $32, SI // in+=32 + ADDQ $32, DX // out+=32 + SUBQ $1, R9 + JNZ loopback_avx2 + +done_avx2: + + BYTE $0xc5; BYTE $0xf8; BYTE $0x77 // VZEROUPPER + RET diff --git a/vendor/github.com/klauspost/reedsolomon/galois_noasm.go b/vendor/github.com/klauspost/reedsolomon/galois_noasm.go new file mode 100644 index 0000000..1c6b8c4 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/galois_noasm.go @@ -0,0 +1,19 @@ +//+build !amd64 noasm appengine + +// Copyright 2015, Klaus Post, see LICENSE for details. + +package reedsolomon + +func galMulSlice(c byte, in, out []byte) { + mt := mulTable[c] + for n, input := range in { + out[n] = mt[input] + } +} + +func galMulSliceXor(c byte, in, out []byte) { + mt := mulTable[c] + for n, input := range in { + out[n] ^= mt[input] + } +} diff --git a/vendor/github.com/klauspost/reedsolomon/gentables.go b/vendor/github.com/klauspost/reedsolomon/gentables.go new file mode 100644 index 0000000..843aade --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/gentables.go @@ -0,0 +1,132 @@ +//+build ignore + +package main + +import ( + "fmt" +) + +var logTable = [fieldSize]int16{ + -1, 0, 1, 25, 2, 50, 26, 198, + 3, 223, 51, 238, 27, 104, 199, 75, + 4, 100, 224, 14, 52, 141, 239, 129, + 28, 193, 105, 248, 200, 8, 76, 113, + 5, 138, 101, 47, 225, 36, 15, 33, + 53, 147, 142, 218, 240, 18, 130, 69, + 29, 181, 194, 125, 106, 39, 249, 185, + 201, 154, 9, 120, 77, 228, 114, 166, + 6, 191, 139, 98, 102, 221, 48, 253, + 226, 152, 37, 179, 16, 145, 34, 136, + 54, 208, 148, 206, 143, 150, 219, 189, + 241, 210, 19, 92, 131, 56, 70, 64, + 30, 66, 182, 163, 195, 72, 126, 110, + 107, 58, 40, 84, 250, 133, 186, 61, + 202, 94, 155, 159, 10, 21, 121, 43, + 78, 212, 229, 172, 115, 243, 167, 87, + 7, 112, 192, 247, 140, 128, 99, 13, + 103, 74, 222, 237, 49, 197, 254, 24, + 227, 165, 153, 119, 38, 184, 180, 124, + 17, 68, 146, 217, 35, 32, 137, 46, + 55, 63, 209, 91, 149, 188, 207, 205, + 144, 135, 151, 178, 220, 252, 190, 97, + 242, 86, 211, 171, 20, 42, 93, 158, + 132, 60, 57, 83, 71, 109, 65, 162, + 31, 45, 67, 216, 183, 123, 164, 118, + 196, 23, 73, 236, 127, 12, 111, 246, + 108, 161, 59, 82, 41, 157, 85, 170, + 251, 96, 134, 177, 187, 204, 62, 90, + 203, 89, 95, 176, 156, 169, 160, 81, + 11, 245, 22, 235, 122, 117, 44, 215, + 79, 174, 213, 233, 230, 231, 173, 232, + 116, 214, 244, 234, 168, 80, 88, 175, +} + +const ( + // The number of elements in the field. + fieldSize = 256 + + // The polynomial used to generate the logarithm table. + // + // There are a number of polynomials that work to generate + // a Galois field of 256 elements. The choice is arbitrary, + // and we just use the first one. + // + // The possibilities are: 29, 43, 45, 77, 95, 99, 101, 105, + //* 113, 135, 141, 169, 195, 207, 231, and 245. + generatingPolynomial = 29 +) + +func main() { + t := generateExpTable() + fmt.Printf("var expTable = %#v\n", t) + //t2 := generateMulTableSplit(t) + //fmt.Printf("var mulTable = %#v\n", t2) + low, high := generateMulTableHalf(t) + fmt.Printf("var mulTableLow = %#v\n", low) + fmt.Printf("var mulTableHigh = %#v\n", high) +} + +/** + * Generates the inverse log table. + */ +func generateExpTable() []byte { + result := make([]byte, fieldSize*2-2) + for i := 1; i < fieldSize; i++ { + log := logTable[i] + result[log] = byte(i) + result[log+fieldSize-1] = byte(i) + } + return result +} + +func generateMulTable(expTable []byte) []byte { + result := make([]byte, 256*256) + for v := range result { + a := byte(v & 0xff) + b := byte(v >> 8) + if a == 0 || b == 0 { + result[v] = 0 + continue + } + logA := int(logTable[a]) + logB := int(logTable[b]) + result[v] = expTable[logA+logB] + } + return result +} + +func generateMulTableSplit(expTable []byte) [256][256]byte { + var result [256][256]byte + for a := range result { + for b := range result[a] { + if a == 0 || b == 0 { + result[a][b] = 0 + continue + } + logA := int(logTable[a]) + logB := int(logTable[b]) + result[a][b] = expTable[logA+logB] + } + } + return result +} + +func generateMulTableHalf(expTable []byte) (low [256][16]byte, high [256][16]byte) { + for a := range low { + for b := range low { + result := 0 + if !(a == 0 || b == 0) { + logA := int(logTable[a]) + logB := int(logTable[b]) + result = int(expTable[logA+logB]) + } + if (b & 0xf) == b { + low[a][b] = byte(result) + } + if (b & 0xf0) == b { + high[a][b>>4] = byte(result) + } + } + } + return +} diff --git a/vendor/github.com/klauspost/reedsolomon/inversion_tree.go b/vendor/github.com/klauspost/reedsolomon/inversion_tree.go new file mode 100644 index 0000000..c9d8ab2 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/inversion_tree.go @@ -0,0 +1,160 @@ +/** + * A thread-safe tree which caches inverted matrices. + * + * Copyright 2016, Peter Collins + */ + +package reedsolomon + +import ( + "errors" + "sync" +) + +// The tree uses a Reader-Writer mutex to make it thread-safe +// when accessing cached matrices and inserting new ones. +type inversionTree struct { + mutex *sync.RWMutex + root inversionNode +} + +type inversionNode struct { + matrix matrix + children []*inversionNode +} + +// newInversionTree initializes a tree for storing inverted matrices. +// Note that the root node is the identity matrix as it implies +// there were no errors with the original data. +func newInversionTree(dataShards, parityShards int) inversionTree { + identity, _ := identityMatrix(dataShards) + root := inversionNode{ + matrix: identity, + children: make([]*inversionNode, dataShards+parityShards), + } + return inversionTree{ + mutex: &sync.RWMutex{}, + root: root, + } +} + +// GetInvertedMatrix returns the cached inverted matrix or nil if it +// is not found in the tree keyed on the indices of invalid rows. +func (t inversionTree) GetInvertedMatrix(invalidIndices []int) matrix { + // Lock the tree for reading before accessing the tree. + t.mutex.RLock() + defer t.mutex.RUnlock() + + // If no invalid indices were give we should return the root + // identity matrix. + if len(invalidIndices) == 0 { + return t.root.matrix + } + + // Recursively search for the inverted matrix in the tree, passing in + // 0 as the parent index as we start at the root of the tree. + return t.root.getInvertedMatrix(invalidIndices, 0) +} + +// errAlreadySet is returned if the root node matrix is overwritten +var errAlreadySet = errors.New("the root node identity matrix is already set") + +// InsertInvertedMatrix inserts a new inverted matrix into the tree +// keyed by the indices of invalid rows. The total number of shards +// is required for creating the proper length lists of child nodes for +// each node. +func (t inversionTree) InsertInvertedMatrix(invalidIndices []int, matrix matrix, shards int) error { + // If no invalid indices were given then we are done because the + // root node is already set with the identity matrix. + if len(invalidIndices) == 0 { + return errAlreadySet + } + + if !matrix.IsSquare() { + return errNotSquare + } + + // Lock the tree for writing and reading before accessing the tree. + t.mutex.Lock() + defer t.mutex.Unlock() + + // Recursively create nodes for the inverted matrix in the tree until + // we reach the node to insert the matrix to. We start by passing in + // 0 as the parent index as we start at the root of the tree. + t.root.insertInvertedMatrix(invalidIndices, matrix, shards, 0) + + return nil +} + +func (n inversionNode) getInvertedMatrix(invalidIndices []int, parent int) matrix { + // Get the child node to search next from the list of children. The + // list of children starts relative to the parent index passed in + // because the indices of invalid rows is sorted (by default). As we + // search recursively, the first invalid index gets popped off the list, + // so when searching through the list of children, use that first invalid + // index to find the child node. + firstIndex := invalidIndices[0] + node := n.children[firstIndex-parent] + + // If the child node doesn't exist in the list yet, fail fast by + // returning, so we can construct and insert the proper inverted matrix. + if node == nil { + return nil + } + + // If there's more than one invalid index left in the list we should + // keep searching recursively. + if len(invalidIndices) > 1 { + // Search recursively on the child node by passing in the invalid indices + // with the first index popped off the front. Also the parent index to + // pass down is the first index plus one. + return node.getInvertedMatrix(invalidIndices[1:], firstIndex+1) + } + // If there aren't any more invalid indices to search, we've found our + // node. Return it, however keep in mind that the matrix could still be + // nil because intermediary nodes in the tree are created sometimes with + // their inversion matrices uninitialized. + return node.matrix +} + +func (n inversionNode) insertInvertedMatrix(invalidIndices []int, matrix matrix, shards, parent int) { + // As above, get the child node to search next from the list of children. + // The list of children starts relative to the parent index passed in + // because the indices of invalid rows is sorted (by default). As we + // search recursively, the first invalid index gets popped off the list, + // so when searching through the list of children, use that first invalid + // index to find the child node. + firstIndex := invalidIndices[0] + node := n.children[firstIndex-parent] + + // If the child node doesn't exist in the list yet, create a new + // node because we have the writer lock and add it to the list + // of children. + if node == nil { + // Make the length of the list of children equal to the number + // of shards minus the first invalid index because the list of + // invalid indices is sorted, so only this length of errors + // are possible in the tree. + node = &inversionNode{ + children: make([]*inversionNode, shards-firstIndex), + } + // Insert the new node into the tree at the first index relative + // to the parent index that was given in this recursive call. + n.children[firstIndex-parent] = node + } + + // If there's more than one invalid index left in the list we should + // keep searching recursively in order to find the node to add our + // matrix. + if len(invalidIndices) > 1 { + // As above, search recursively on the child node by passing in + // the invalid indices with the first index popped off the front. + // Also the total number of shards and parent index are passed down + // which is equal to the first index plus one. + node.insertInvertedMatrix(invalidIndices[1:], matrix, shards, firstIndex+1) + } else { + // If there aren't any more invalid indices to search, we've found our + // node. Cache the inverted matrix in this node. + node.matrix = matrix + } +} diff --git a/vendor/github.com/klauspost/reedsolomon/matrix.go b/vendor/github.com/klauspost/reedsolomon/matrix.go new file mode 100644 index 0000000..e942ead --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/matrix.go @@ -0,0 +1,279 @@ +/** + * Matrix Algebra over an 8-bit Galois Field + * + * Copyright 2015, Klaus Post + * Copyright 2015, Backblaze, Inc. + */ + +package reedsolomon + +import ( + "errors" + "fmt" + "strconv" + "strings" +) + +// byte[row][col] +type matrix [][]byte + +// newMatrix returns a matrix of zeros. +func newMatrix(rows, cols int) (matrix, error) { + if rows <= 0 { + return nil, errInvalidRowSize + } + if cols <= 0 { + return nil, errInvalidColSize + } + + m := matrix(make([][]byte, rows)) + for i := range m { + m[i] = make([]byte, cols) + } + return m, nil +} + +// NewMatrixData initializes a matrix with the given row-major data. +// Note that data is not copied from input. +func newMatrixData(data [][]byte) (matrix, error) { + m := matrix(data) + err := m.Check() + if err != nil { + return nil, err + } + return m, nil +} + +// IdentityMatrix returns an identity matrix of the given size. +func identityMatrix(size int) (matrix, error) { + m, err := newMatrix(size, size) + if err != nil { + return nil, err + } + for i := range m { + m[i][i] = 1 + } + return m, nil +} + +// errInvalidRowSize will be returned if attempting to create a matrix with negative or zero row number. +var errInvalidRowSize = errors.New("invalid row size") + +// errInvalidColSize will be returned if attempting to create a matrix with negative or zero column number. +var errInvalidColSize = errors.New("invalid column size") + +// errColSizeMismatch is returned if the size of matrix columns mismatch. +var errColSizeMismatch = errors.New("column size is not the same for all rows") + +func (m matrix) Check() error { + rows := len(m) + if rows <= 0 { + return errInvalidRowSize + } + cols := len(m[0]) + if cols <= 0 { + return errInvalidColSize + } + + for _, col := range m { + if len(col) != cols { + return errColSizeMismatch + } + } + return nil +} + +// String returns a human-readable string of the matrix contents. +// +// Example: [[1, 2], [3, 4]] +func (m matrix) String() string { + rowOut := make([]string, 0, len(m)) + for _, row := range m { + colOut := make([]string, 0, len(row)) + for _, col := range row { + colOut = append(colOut, strconv.Itoa(int(col))) + } + rowOut = append(rowOut, "["+strings.Join(colOut, ", ")+"]") + } + return "[" + strings.Join(rowOut, ", ") + "]" +} + +// Multiply multiplies this matrix (the one on the left) by another +// matrix (the one on the right) and returns a new matrix with the result. +func (m matrix) Multiply(right matrix) (matrix, error) { + if len(m[0]) != len(right) { + return nil, fmt.Errorf("columns on left (%d) is different than rows on right (%d)", len(m[0]), len(right)) + } + result, _ := newMatrix(len(m), len(right[0])) + for r, row := range result { + for c := range row { + var value byte + for i := range m[0] { + value ^= galMultiply(m[r][i], right[i][c]) + } + result[r][c] = value + } + } + return result, nil +} + +// Augment returns the concatenation of this matrix and the matrix on the right. +func (m matrix) Augment(right matrix) (matrix, error) { + if len(m) != len(right) { + return nil, errMatrixSize + } + + result, _ := newMatrix(len(m), len(m[0])+len(right[0])) + for r, row := range m { + for c := range row { + result[r][c] = m[r][c] + } + cols := len(m[0]) + for c := range right[0] { + result[r][cols+c] = right[r][c] + } + } + return result, nil +} + +// errMatrixSize is returned if matrix dimensions are doesn't match. +var errMatrixSize = errors.New("matrix sizes does not match") + +func (m matrix) SameSize(n matrix) error { + if len(m) != len(n) { + return errMatrixSize + } + for i := range m { + if len(m[i]) != len(n[i]) { + return errMatrixSize + } + } + return nil +} + +// Returns a part of this matrix. Data is copied. +func (m matrix) SubMatrix(rmin, cmin, rmax, cmax int) (matrix, error) { + result, err := newMatrix(rmax-rmin, cmax-cmin) + if err != nil { + return nil, err + } + // OPTME: If used heavily, use copy function to copy slice + for r := rmin; r < rmax; r++ { + for c := cmin; c < cmax; c++ { + result[r-rmin][c-cmin] = m[r][c] + } + } + return result, nil +} + +// SwapRows Exchanges two rows in the matrix. +func (m matrix) SwapRows(r1, r2 int) error { + if r1 < 0 || len(m) <= r1 || r2 < 0 || len(m) <= r2 { + return errInvalidRowSize + } + m[r2], m[r1] = m[r1], m[r2] + return nil +} + +// IsSquare will return true if the matrix is square +// and nil if the matrix is square +func (m matrix) IsSquare() bool { + return len(m) == len(m[0]) +} + +// errSingular is returned if the matrix is singular and cannot be inversed +var errSingular = errors.New("matrix is singular") + +// errNotSquare is returned if attempting to inverse a non-square matrix. +var errNotSquare = errors.New("only square matrices can be inverted") + +// Invert returns the inverse of this matrix. +// Returns ErrSingular when the matrix is singular and doesn't have an inverse. +// The matrix must be square, otherwise ErrNotSquare is returned. +func (m matrix) Invert() (matrix, error) { + if !m.IsSquare() { + return nil, errNotSquare + } + + size := len(m) + work, _ := identityMatrix(size) + work, _ = m.Augment(work) + + err := work.gaussianElimination() + if err != nil { + return nil, err + } + + return work.SubMatrix(0, size, size, size*2) +} + +func (m matrix) gaussianElimination() error { + rows := len(m) + columns := len(m[0]) + // Clear out the part below the main diagonal and scale the main + // diagonal to be 1. + for r := 0; r < rows; r++ { + // If the element on the diagonal is 0, find a row below + // that has a non-zero and swap them. + if m[r][r] == 0 { + for rowBelow := r + 1; rowBelow < rows; rowBelow++ { + if m[rowBelow][r] != 0 { + m.SwapRows(r, rowBelow) + break + } + } + } + // If we couldn't find one, the matrix is singular. + if m[r][r] == 0 { + return errSingular + } + // Scale to 1. + if m[r][r] != 1 { + scale := galDivide(1, m[r][r]) + for c := 0; c < columns; c++ { + m[r][c] = galMultiply(m[r][c], scale) + } + } + // Make everything below the 1 be a 0 by subtracting + // a multiple of it. (Subtraction and addition are + // both exclusive or in the Galois field.) + for rowBelow := r + 1; rowBelow < rows; rowBelow++ { + if m[rowBelow][r] != 0 { + scale := m[rowBelow][r] + for c := 0; c < columns; c++ { + m[rowBelow][c] ^= galMultiply(scale, m[r][c]) + } + } + } + } + + // Now clear the part above the main diagonal. + for d := 0; d < rows; d++ { + for rowAbove := 0; rowAbove < d; rowAbove++ { + if m[rowAbove][d] != 0 { + scale := m[rowAbove][d] + for c := 0; c < columns; c++ { + m[rowAbove][c] ^= galMultiply(scale, m[d][c]) + } + + } + } + } + return nil +} + +// Create a Vandermonde matrix, which is guaranteed to have the +// property that any subset of rows that forms a square matrix +// is invertible. +func vandermonde(rows, cols int) (matrix, error) { + result, err := newMatrix(rows, cols) + if err != nil { + return nil, err + } + for r, row := range result { + for c := range row { + result[r][c] = galExp(byte(r), c) + } + } + return result, nil +} diff --git a/vendor/github.com/klauspost/reedsolomon/reedsolomon.go b/vendor/github.com/klauspost/reedsolomon/reedsolomon.go new file mode 100644 index 0000000..914ebe0 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/reedsolomon.go @@ -0,0 +1,573 @@ +/** + * Reed-Solomon Coding over 8-bit values. + * + * Copyright 2015, Klaus Post + * Copyright 2015, Backblaze, Inc. + */ + +// Package reedsolomon enables Erasure Coding in Go +// +// For usage and examples, see https://github.com/klauspost/reedsolomon +// +package reedsolomon + +import ( + "bytes" + "errors" + "io" + "runtime" + "sync" +) + +// Encoder is an interface to encode Reed-Salomon parity sets for your data. +type Encoder interface { + // Encodes parity for a set of data shards. + // Input is 'shards' containing data shards followed by parity shards. + // The number of shards must match the number given to New(). + // Each shard is a byte array, and they must all be the same size. + // The parity shards will always be overwritten and the data shards + // will remain the same, so it is safe for you to read from the + // data shards while this is running. + Encode(shards [][]byte) error + + // Verify returns true if the parity shards contain correct data. + // The data is the same format as Encode. No data is modified, so + // you are allowed to read from data while this is running. + Verify(shards [][]byte) (bool, error) + + // Reconstruct will recreate the missing shards if possible. + // + // Given a list of shards, some of which contain data, fills in the + // ones that don't have data. + // + // The length of the array must be equal to the total number of shards. + // You indicate that a shard is missing by setting it to nil. + // + // If there are too few shards to reconstruct the missing + // ones, ErrTooFewShards will be returned. + // + // The reconstructed shard set is complete, but integrity is not verified. + // Use the Verify function to check if data set is ok. + Reconstruct(shards [][]byte) error + + // Split a data slice into the number of shards given to the encoder, + // and create empty parity shards. + // + // The data will be split into equally sized shards. + // If the data size isn't dividable by the number of shards, + // the last shard will contain extra zeros. + // + // There must be at least 1 byte otherwise ErrShortData will be + // returned. + // + // The data will not be copied, except for the last shard, so you + // should not modify the data of the input slice afterwards. + Split(data []byte) ([][]byte, error) + + // Join the shards and write the data segment to dst. + // + // Only the data shards are considered. + // You must supply the exact output size you want. + // If there are to few shards given, ErrTooFewShards will be returned. + // If the total data size is less than outSize, ErrShortData will be returned. + Join(dst io.Writer, shards [][]byte, outSize int) error +} + +// reedSolomon contains a matrix for a specific +// distribution of datashards and parity shards. +// Construct if using New() +type reedSolomon struct { + DataShards int // Number of data shards, should not be modified. + ParityShards int // Number of parity shards, should not be modified. + Shards int // Total number of shards. Calculated, and should not be modified. + m matrix + tree inversionTree + parity [][]byte +} + +// ErrInvShardNum will be returned by New, if you attempt to create +// an Encoder where either data or parity shards is zero or less. +var ErrInvShardNum = errors.New("cannot create Encoder with zero or less data/parity shards") + +// ErrMaxShardNum will be returned by New, if you attempt to create +// an Encoder where data and parity shards cannot be bigger than +// Galois field GF(2^8) - 1. +var ErrMaxShardNum = errors.New("cannot create Encoder with 255 or more data+parity shards") + +// New creates a new encoder and initializes it to +// the number of data shards and parity shards that +// you want to use. You can reuse this encoder. +// Note that the maximum number of data shards is 256. +func New(dataShards, parityShards int) (Encoder, error) { + r := reedSolomon{ + DataShards: dataShards, + ParityShards: parityShards, + Shards: dataShards + parityShards, + } + + if dataShards <= 0 || parityShards <= 0 { + return nil, ErrInvShardNum + } + + if dataShards+parityShards > 255 { + return nil, ErrMaxShardNum + } + + // Start with a Vandermonde matrix. This matrix would work, + // in theory, but doesn't have the property that the data + // shards are unchanged after encoding. + vm, err := vandermonde(r.Shards, dataShards) + if err != nil { + return nil, err + } + + // Multiply by the inverse of the top square of the matrix. + // This will make the top square be the identity matrix, but + // preserve the property that any square subset of rows is + // invertible. + top, _ := vm.SubMatrix(0, 0, dataShards, dataShards) + top, _ = top.Invert() + r.m, _ = vm.Multiply(top) + + // Inverted matrices are cached in a tree keyed by the indices + // of the invalid rows of the data to reconstruct. + // The inversion root node will have the identity matrix as + // its inversion matrix because it implies there are no errors + // with the original data. + r.tree = newInversionTree(dataShards, parityShards) + + r.parity = make([][]byte, parityShards) + for i := range r.parity { + r.parity[i] = r.m[dataShards+i] + } + + return &r, err +} + +// ErrTooFewShards is returned if too few shards where given to +// Encode/Verify/Reconstruct. It will also be returned from Reconstruct +// if there were too few shards to reconstruct the missing data. +var ErrTooFewShards = errors.New("too few shards given") + +// Encodes parity for a set of data shards. +// An array 'shards' containing data shards followed by parity shards. +// The number of shards must match the number given to New. +// Each shard is a byte array, and they must all be the same size. +// The parity shards will always be overwritten and the data shards +// will remain the same. +func (r reedSolomon) Encode(shards [][]byte) error { + if len(shards) != r.Shards { + return ErrTooFewShards + } + + err := checkShards(shards, false) + if err != nil { + return err + } + + // Get the slice of output buffers. + output := shards[r.DataShards:] + + // Do the coding. + r.codeSomeShards(r.parity, shards[0:r.DataShards], output, r.ParityShards, len(shards[0])) + return nil +} + +// Verify returns true if the parity shards contain the right data. +// The data is the same format as Encode. No data is modified. +func (r reedSolomon) Verify(shards [][]byte) (bool, error) { + if len(shards) != r.Shards { + return false, ErrTooFewShards + } + err := checkShards(shards, false) + if err != nil { + return false, err + } + + // Slice of buffers being checked. + toCheck := shards[r.DataShards:] + + // Do the checking. + return r.checkSomeShards(r.parity, shards[0:r.DataShards], toCheck, r.ParityShards, len(shards[0])), nil +} + +// Multiplies a subset of rows from a coding matrix by a full set of +// input shards to produce some output shards. +// 'matrixRows' is The rows from the matrix to use. +// 'inputs' An array of byte arrays, each of which is one input shard. +// The number of inputs used is determined by the length of each matrix row. +// outputs Byte arrays where the computed shards are stored. +// The number of outputs computed, and the +// number of matrix rows used, is determined by +// outputCount, which is the number of outputs to compute. +func (r reedSolomon) codeSomeShards(matrixRows, inputs, outputs [][]byte, outputCount, byteCount int) { + if runtime.GOMAXPROCS(0) > 1 && len(inputs[0]) > minSplitSize { + r.codeSomeShardsP(matrixRows, inputs, outputs, outputCount, byteCount) + return + } + for c := 0; c < r.DataShards; c++ { + in := inputs[c] + for iRow := 0; iRow < outputCount; iRow++ { + if c == 0 { + galMulSlice(matrixRows[iRow][c], in, outputs[iRow]) + } else { + galMulSliceXor(matrixRows[iRow][c], in, outputs[iRow]) + } + } + } +} + +const ( + minSplitSize = 512 // min split size per goroutine + maxGoroutines = 50 // max goroutines number for encoding & decoding +) + +// Perform the same as codeSomeShards, but split the workload into +// several goroutines. +func (r reedSolomon) codeSomeShardsP(matrixRows, inputs, outputs [][]byte, outputCount, byteCount int) { + var wg sync.WaitGroup + do := byteCount / maxGoroutines + if do < minSplitSize { + do = minSplitSize + } + start := 0 + for start < byteCount { + if start+do > byteCount { + do = byteCount - start + } + wg.Add(1) + go func(start, stop int) { + for c := 0; c < r.DataShards; c++ { + in := inputs[c] + for iRow := 0; iRow < outputCount; iRow++ { + if c == 0 { + galMulSlice(matrixRows[iRow][c], in[start:stop], outputs[iRow][start:stop]) + } else { + galMulSliceXor(matrixRows[iRow][c], in[start:stop], outputs[iRow][start:stop]) + } + } + } + wg.Done() + }(start, start+do) + start += do + } + wg.Wait() +} + +// checkSomeShards is mostly the same as codeSomeShards, +// except this will check values and return +// as soon as a difference is found. +func (r reedSolomon) checkSomeShards(matrixRows, inputs, toCheck [][]byte, outputCount, byteCount int) bool { + same := true + var mu sync.RWMutex // For above + + var wg sync.WaitGroup + do := byteCount / maxGoroutines + if do < minSplitSize { + do = minSplitSize + } + start := 0 + for start < byteCount { + if start+do > byteCount { + do = byteCount - start + } + wg.Add(1) + go func(start, do int) { + defer wg.Done() + outputs := make([][]byte, len(toCheck)) + for i := range outputs { + outputs[i] = make([]byte, do) + } + for c := 0; c < r.DataShards; c++ { + mu.RLock() + if !same { + mu.RUnlock() + return + } + mu.RUnlock() + in := inputs[c][start : start+do] + for iRow := 0; iRow < outputCount; iRow++ { + galMulSliceXor(matrixRows[iRow][c], in, outputs[iRow]) + } + } + + for i, calc := range outputs { + if !bytes.Equal(calc, toCheck[i][start:start+do]) { + mu.Lock() + same = false + mu.Unlock() + return + } + } + }(start, do) + start += do + } + wg.Wait() + return same +} + +// ErrShardNoData will be returned if there are no shards, +// or if the length of all shards is zero. +var ErrShardNoData = errors.New("no shard data") + +// ErrShardSize is returned if shard length isn't the same for all +// shards. +var ErrShardSize = errors.New("shard sizes does not match") + +// checkShards will check if shards are the same size +// or 0, if allowed. An error is returned if this fails. +// An error is also returned if all shards are size 0. +func checkShards(shards [][]byte, nilok bool) error { + size := shardSize(shards) + if size == 0 { + return ErrShardNoData + } + for _, shard := range shards { + if len(shard) != size { + if len(shard) != 0 || !nilok { + return ErrShardSize + } + } + } + return nil +} + +// shardSize return the size of a single shard. +// The first non-zero size is returned, +// or 0 if all shards are size 0. +func shardSize(shards [][]byte) int { + for _, shard := range shards { + if len(shard) != 0 { + return len(shard) + } + } + return 0 +} + +// Reconstruct will recreate the missing shards, if possible. +// +// Given a list of shards, some of which contain data, fills in the +// ones that don't have data. +// +// The length of the array must be equal to Shards. +// You indicate that a shard is missing by setting it to nil. +// +// If there are too few shards to reconstruct the missing +// ones, ErrTooFewShards will be returned. +// +// The reconstructed shard set is complete, but integrity is not verified. +// Use the Verify function to check if data set is ok. +func (r reedSolomon) Reconstruct(shards [][]byte) error { + if len(shards) != r.Shards { + return ErrTooFewShards + } + // Check arguments. + err := checkShards(shards, true) + if err != nil { + return err + } + + shardSize := shardSize(shards) + + // Quick check: are all of the shards present? If so, there's + // nothing to do. + numberPresent := 0 + for i := 0; i < r.Shards; i++ { + if len(shards[i]) != 0 { + numberPresent++ + } + } + if numberPresent == r.Shards { + // Cool. All of the shards data data. We don't + // need to do anything. + return nil + } + + // More complete sanity check + if numberPresent < r.DataShards { + return ErrTooFewShards + } + + // Pull out an array holding just the shards that + // correspond to the rows of the submatrix. These shards + // will be the input to the decoding process that re-creates + // the missing data shards. + // + // Also, create an array of indices of the valid rows we do have + // and the invalid rows we don't have up until we have enough valid rows. + subShards := make([][]byte, r.DataShards) + validIndices := make([]int, r.DataShards) + invalidIndices := make([]int, 0) + subMatrixRow := 0 + for matrixRow := 0; matrixRow < r.Shards && subMatrixRow < r.DataShards; matrixRow++ { + if len(shards[matrixRow]) != 0 { + subShards[subMatrixRow] = shards[matrixRow] + validIndices[subMatrixRow] = matrixRow + subMatrixRow++ + } else { + invalidIndices = append(invalidIndices, matrixRow) + } + } + + // Attempt to get the cached inverted matrix out of the tree + // based on the indices of the invalid rows. + dataDecodeMatrix := r.tree.GetInvertedMatrix(invalidIndices) + + // If the inverted matrix isn't cached in the tree yet we must + // construct it ourselves and insert it into the tree for the + // future. In this way the inversion tree is lazily loaded. + if dataDecodeMatrix == nil { + // Pull out the rows of the matrix that correspond to the + // shards that we have and build a square matrix. This + // matrix could be used to generate the shards that we have + // from the original data. + subMatrix, _ := newMatrix(r.DataShards, r.DataShards) + for subMatrixRow, validIndex := range validIndices { + for c := 0; c < r.DataShards; c++ { + subMatrix[subMatrixRow][c] = r.m[validIndex][c] + } + } + // Invert the matrix, so we can go from the encoded shards + // back to the original data. Then pull out the row that + // generates the shard that we want to decode. Note that + // since this matrix maps back to the original data, it can + // be used to create a data shard, but not a parity shard. + dataDecodeMatrix, err = subMatrix.Invert() + if err != nil { + return err + } + + // Cache the inverted matrix in the tree for future use keyed on the + // indices of the invalid rows. + err = r.tree.InsertInvertedMatrix(invalidIndices, dataDecodeMatrix, r.Shards) + if err != nil { + return err + } + } + + // Re-create any data shards that were missing. + // + // The input to the coding is all of the shards we actually + // have, and the output is the missing data shards. The computation + // is done using the special decode matrix we just built. + outputs := make([][]byte, r.ParityShards) + matrixRows := make([][]byte, r.ParityShards) + outputCount := 0 + + for iShard := 0; iShard < r.DataShards; iShard++ { + if len(shards[iShard]) == 0 { + shards[iShard] = make([]byte, shardSize) + outputs[outputCount] = shards[iShard] + matrixRows[outputCount] = dataDecodeMatrix[iShard] + outputCount++ + } + } + r.codeSomeShards(matrixRows, subShards, outputs[:outputCount], outputCount, shardSize) + + // Now that we have all of the data shards intact, we can + // compute any of the parity that is missing. + // + // The input to the coding is ALL of the data shards, including + // any that we just calculated. The output is whichever of the + // data shards were missing. + outputCount = 0 + for iShard := r.DataShards; iShard < r.Shards; iShard++ { + if len(shards[iShard]) == 0 { + shards[iShard] = make([]byte, shardSize) + outputs[outputCount] = shards[iShard] + matrixRows[outputCount] = r.parity[iShard-r.DataShards] + outputCount++ + } + } + r.codeSomeShards(matrixRows, shards[:r.DataShards], outputs[:outputCount], outputCount, shardSize) + return nil +} + +// ErrShortData will be returned by Split(), if there isn't enough data +// to fill the number of shards. +var ErrShortData = errors.New("not enough data to fill the number of requested shards") + +// Split a data slice into the number of shards given to the encoder, +// and create empty parity shards. +// +// The data will be split into equally sized shards. +// If the data size isn't divisible by the number of shards, +// the last shard will contain extra zeros. +// +// There must be at least 1 byte otherwise ErrShortData will be +// returned. +// +// The data will not be copied, except for the last shard, so you +// should not modify the data of the input slice afterwards. +func (r reedSolomon) Split(data []byte) ([][]byte, error) { + if len(data) == 0 { + return nil, ErrShortData + } + // Calculate number of bytes per shard. + perShard := (len(data) + r.DataShards - 1) / r.DataShards + + // Pad data to r.Shards*perShard. + padding := make([]byte, (r.Shards*perShard)-len(data)) + data = append(data, padding...) + + // Split into equal-length shards. + dst := make([][]byte, r.Shards) + for i := range dst { + dst[i] = data[:perShard] + data = data[perShard:] + } + + return dst, nil +} + +// ErrReconstructRequired is returned if too few data shards are intact and a +// reconstruction is required before you can successfully join the shards. +var ErrReconstructRequired = errors.New("reconstruction required as one or more required data shards are nil") + +// Join the shards and write the data segment to dst. +// +// Only the data shards are considered. +// You must supply the exact output size you want. +// +// If there are to few shards given, ErrTooFewShards will be returned. +// If the total data size is less than outSize, ErrShortData will be returned. +// If one or more required data shards are nil, ErrReconstructRequired will be returned. +func (r reedSolomon) Join(dst io.Writer, shards [][]byte, outSize int) error { + // Do we have enough shards? + if len(shards) < r.DataShards { + return ErrTooFewShards + } + shards = shards[:r.DataShards] + + // Do we have enough data? + size := 0 + for _, shard := range shards { + if shard == nil { + return ErrReconstructRequired + } + size += len(shard) + + // Do we have enough data already? + if size >= outSize { + break + } + } + if size < outSize { + return ErrShortData + } + + // Copy data to dst + write := outSize + for _, shard := range shards { + if write < len(shard) { + _, err := dst.Write(shard[:write]) + return err + } + n, err := dst.Write(shard) + if err != nil { + return err + } + write -= n + } + return nil +} diff --git a/vendor/github.com/klauspost/reedsolomon/streaming.go b/vendor/github.com/klauspost/reedsolomon/streaming.go new file mode 100644 index 0000000..293a8b1 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/streaming.go @@ -0,0 +1,575 @@ +/** + * Reed-Solomon Coding over 8-bit values. + * + * Copyright 2015, Klaus Post + * Copyright 2015, Backblaze, Inc. + */ + +package reedsolomon + +import ( + "bytes" + "errors" + "fmt" + "io" + "sync" +) + +// StreamEncoder is an interface to encode Reed-Salomon parity sets for your data. +// It provides a fully streaming interface, and processes data in blocks of up to 4MB. +// +// For small shard sizes, 10MB and below, it is recommended to use the in-memory interface, +// since the streaming interface has a start up overhead. +// +// For all operations, no readers and writers should not assume any order/size of +// individual reads/writes. +// +// For usage examples, see "stream-encoder.go" and "streamdecoder.go" in the examples +// folder. +type StreamEncoder interface { + // Encodes parity shards for a set of data shards. + // + // Input is 'shards' containing readers for data shards followed by parity shards + // io.Writer. + // + // The number of shards must match the number given to NewStream(). + // + // Each reader must supply the same number of bytes. + // + // The parity shards will be written to the writer. + // The number of bytes written will match the input size. + // + // If a data stream returns an error, a StreamReadError type error + // will be returned. If a parity writer returns an error, a + // StreamWriteError will be returned. + Encode(data []io.Reader, parity []io.Writer) error + + // Verify returns true if the parity shards contain correct data. + // + // The number of shards must match the number total data+parity shards + // given to NewStream(). + // + // Each reader must supply the same number of bytes. + // If a shard stream returns an error, a StreamReadError type error + // will be returned. + Verify(shards []io.Reader) (bool, error) + + // Reconstruct will recreate the missing shards if possible. + // + // Given a list of valid shards (to read) and invalid shards (to write) + // + // You indicate that a shard is missing by setting it to nil in the 'valid' + // slice and at the same time setting a non-nil writer in "fill". + // An index cannot contain both non-nil 'valid' and 'fill' entry. + // If both are provided 'ErrReconstructMismatch' is returned. + // + // If there are too few shards to reconstruct the missing + // ones, ErrTooFewShards will be returned. + // + // The reconstructed shard set is complete, but integrity is not verified. + // Use the Verify function to check if data set is ok. + Reconstruct(valid []io.Reader, fill []io.Writer) error + + // Split a an input stream into the number of shards given to the encoder. + // + // The data will be split into equally sized shards. + // If the data size isn't dividable by the number of shards, + // the last shard will contain extra zeros. + // + // You must supply the total size of your input. + // 'ErrShortData' will be returned if it is unable to retrieve the + // number of bytes indicated. + Split(data io.Reader, dst []io.Writer, size int64) (err error) + + // Join the shards and write the data segment to dst. + // + // Only the data shards are considered. + // + // You must supply the exact output size you want. + // If there are to few shards given, ErrTooFewShards will be returned. + // If the total data size is less than outSize, ErrShortData will be returned. + Join(dst io.Writer, shards []io.Reader, outSize int64) error +} + +// StreamReadError is returned when a read error is encountered +// that relates to a supplied stream. +// This will allow you to find out which reader has failed. +type StreamReadError struct { + Err error // The error + Stream int // The stream number on which the error occurred +} + +// Error returns the error as a string +func (s StreamReadError) Error() string { + return fmt.Sprintf("error reading stream %d: %s", s.Stream, s.Err) +} + +// String returns the error as a string +func (s StreamReadError) String() string { + return s.Error() +} + +// StreamWriteError is returned when a write error is encountered +// that relates to a supplied stream. This will allow you to +// find out which reader has failed. +type StreamWriteError struct { + Err error // The error + Stream int // The stream number on which the error occurred +} + +// Error returns the error as a string +func (s StreamWriteError) Error() string { + return fmt.Sprintf("error writing stream %d: %s", s.Stream, s.Err) +} + +// String returns the error as a string +func (s StreamWriteError) String() string { + return s.Error() +} + +// rsStream contains a matrix for a specific +// distribution of datashards and parity shards. +// Construct if using NewStream() +type rsStream struct { + r *reedSolomon + bs int // Block size + // Shard reader + readShards func(dst [][]byte, in []io.Reader) error + // Shard writer + writeShards func(out []io.Writer, in [][]byte) error + creads bool + cwrites bool +} + +// NewStream creates a new encoder and initializes it to +// the number of data shards and parity shards that +// you want to use. You can reuse this encoder. +// Note that the maximum number of data shards is 256. +func NewStream(dataShards, parityShards int) (StreamEncoder, error) { + enc, err := New(dataShards, parityShards) + if err != nil { + return nil, err + } + rs := enc.(*reedSolomon) + r := rsStream{r: rs, bs: 4 << 20} + r.readShards = readShards + r.writeShards = writeShards + return &r, err +} + +// NewStreamC creates a new encoder and initializes it to +// the number of data shards and parity shards given. +// +// This functions as 'NewStream', but allows you to enable CONCURRENT reads and writes. +func NewStreamC(dataShards, parityShards int, conReads, conWrites bool) (StreamEncoder, error) { + enc, err := New(dataShards, parityShards) + if err != nil { + return nil, err + } + rs := enc.(*reedSolomon) + r := rsStream{r: rs, bs: 4 << 20} + r.readShards = readShards + r.writeShards = writeShards + if conReads { + r.readShards = cReadShards + } + if conWrites { + r.writeShards = cWriteShards + } + return &r, err +} + +func createSlice(n, length int) [][]byte { + out := make([][]byte, n) + for i := range out { + out[i] = make([]byte, length) + } + return out +} + +// Encodes parity shards for a set of data shards. +// +// Input is 'shards' containing readers for data shards followed by parity shards +// io.Writer. +// +// The number of shards must match the number given to NewStream(). +// +// Each reader must supply the same number of bytes. +// +// The parity shards will be written to the writer. +// The number of bytes written will match the input size. +// +// If a data stream returns an error, a StreamReadError type error +// will be returned. If a parity writer returns an error, a +// StreamWriteError will be returned. +func (r rsStream) Encode(data []io.Reader, parity []io.Writer) error { + if len(data) != r.r.DataShards { + return ErrTooFewShards + } + + if len(parity) != r.r.ParityShards { + return ErrTooFewShards + } + + all := createSlice(r.r.Shards, r.bs) + in := all[:r.r.DataShards] + out := all[r.r.DataShards:] + read := 0 + + for { + err := r.readShards(in, data) + switch err { + case nil: + case io.EOF: + if read == 0 { + return ErrShardNoData + } + return nil + default: + return err + } + out = trimShards(out, shardSize(in)) + read += shardSize(in) + err = r.r.Encode(all) + if err != nil { + return err + } + err = r.writeShards(parity, out) + if err != nil { + return err + } + } +} + +// Trim the shards so they are all the same size +func trimShards(in [][]byte, size int) [][]byte { + for i := range in { + if in[i] != nil { + in[i] = in[i][0:size] + } + if len(in[i]) < size { + in[i] = nil + } + } + return in +} + +func readShards(dst [][]byte, in []io.Reader) error { + if len(in) != len(dst) { + panic("internal error: in and dst size does not match") + } + size := -1 + for i := range in { + if in[i] == nil { + dst[i] = nil + continue + } + n, err := io.ReadFull(in[i], dst[i]) + // The error is EOF only if no bytes were read. + // If an EOF happens after reading some but not all the bytes, + // ReadFull returns ErrUnexpectedEOF. + switch err { + case io.ErrUnexpectedEOF, io.EOF: + if size < 0 { + size = n + } else if n != size { + // Shard sizes must match. + return ErrShardSize + } + dst[i] = dst[i][0:n] + case nil: + continue + default: + return StreamReadError{Err: err, Stream: i} + } + } + if size == 0 { + return io.EOF + } + return nil +} + +func writeShards(out []io.Writer, in [][]byte) error { + if len(out) != len(in) { + panic("internal error: in and out size does not match") + } + for i := range in { + if out[i] == nil { + continue + } + n, err := out[i].Write(in[i]) + if err != nil { + return StreamWriteError{Err: err, Stream: i} + } + // + if n != len(in[i]) { + return StreamWriteError{Err: io.ErrShortWrite, Stream: i} + } + } + return nil +} + +type readResult struct { + n int + size int + err error +} + +// cReadShards reads shards concurrently +func cReadShards(dst [][]byte, in []io.Reader) error { + if len(in) != len(dst) { + panic("internal error: in and dst size does not match") + } + var wg sync.WaitGroup + wg.Add(len(in)) + res := make(chan readResult, len(in)) + for i := range in { + if in[i] == nil { + dst[i] = nil + wg.Done() + continue + } + go func(i int) { + defer wg.Done() + n, err := io.ReadFull(in[i], dst[i]) + // The error is EOF only if no bytes were read. + // If an EOF happens after reading some but not all the bytes, + // ReadFull returns ErrUnexpectedEOF. + res <- readResult{size: n, err: err, n: i} + + }(i) + } + wg.Wait() + close(res) + size := -1 + for r := range res { + switch r.err { + case io.ErrUnexpectedEOF, io.EOF: + if size < 0 { + size = r.size + } else if r.size != size { + // Shard sizes must match. + return ErrShardSize + } + dst[r.n] = dst[r.n][0:r.size] + case nil: + default: + return StreamReadError{Err: r.err, Stream: r.n} + } + } + if size == 0 { + return io.EOF + } + return nil +} + +// cWriteShards writes shards concurrently +func cWriteShards(out []io.Writer, in [][]byte) error { + if len(out) != len(in) { + panic("internal error: in and out size does not match") + } + var errs = make(chan error, len(out)) + var wg sync.WaitGroup + wg.Add(len(out)) + for i := range in { + go func(i int) { + defer wg.Done() + if out[i] == nil { + errs <- nil + return + } + n, err := out[i].Write(in[i]) + if err != nil { + errs <- StreamWriteError{Err: err, Stream: i} + return + } + if n != len(in[i]) { + errs <- StreamWriteError{Err: io.ErrShortWrite, Stream: i} + } + }(i) + } + wg.Wait() + close(errs) + for err := range errs { + if err != nil { + return err + } + } + + return nil +} + +// Verify returns true if the parity shards contain correct data. +// +// The number of shards must match the number total data+parity shards +// given to NewStream(). +// +// Each reader must supply the same number of bytes. +// If a shard stream returns an error, a StreamReadError type error +// will be returned. +func (r rsStream) Verify(shards []io.Reader) (bool, error) { + if len(shards) != r.r.Shards { + return false, ErrTooFewShards + } + + read := 0 + all := createSlice(r.r.Shards, r.bs) + for { + err := r.readShards(all, shards) + if err == io.EOF { + if read == 0 { + return false, ErrShardNoData + } + return true, nil + } + if err != nil { + return false, err + } + read += shardSize(all) + ok, err := r.r.Verify(all) + if !ok || err != nil { + return ok, err + } + } +} + +// ErrReconstructMismatch is returned by the StreamEncoder, if you supply +// "valid" and "fill" streams on the same index. +// Therefore it is impossible to see if you consider the shard valid +// or would like to have it reconstructed. +var ErrReconstructMismatch = errors.New("valid shards and fill shards are mutually exclusive") + +// Reconstruct will recreate the missing shards if possible. +// +// Given a list of valid shards (to read) and invalid shards (to write) +// +// You indicate that a shard is missing by setting it to nil in the 'valid' +// slice and at the same time setting a non-nil writer in "fill". +// An index cannot contain both non-nil 'valid' and 'fill' entry. +// +// If there are too few shards to reconstruct the missing +// ones, ErrTooFewShards will be returned. +// +// The reconstructed shard set is complete, but integrity is not verified. +// Use the Verify function to check if data set is ok. +func (r rsStream) Reconstruct(valid []io.Reader, fill []io.Writer) error { + if len(valid) != r.r.Shards { + return ErrTooFewShards + } + if len(fill) != r.r.Shards { + return ErrTooFewShards + } + + all := createSlice(r.r.Shards, r.bs) + for i := range valid { + if valid[i] != nil && fill[i] != nil { + return ErrReconstructMismatch + } + } + + read := 0 + for { + err := r.readShards(all, valid) + if err == io.EOF { + if read == 0 { + return ErrShardNoData + } + return nil + } + if err != nil { + return err + } + read += shardSize(all) + all = trimShards(all, shardSize(all)) + + err = r.r.Reconstruct(all) + if err != nil { + return err + } + err = r.writeShards(fill, all) + if err != nil { + return err + } + } +} + +// Join the shards and write the data segment to dst. +// +// Only the data shards are considered. +// +// You must supply the exact output size you want. +// If there are to few shards given, ErrTooFewShards will be returned. +// If the total data size is less than outSize, ErrShortData will be returned. +func (r rsStream) Join(dst io.Writer, shards []io.Reader, outSize int64) error { + // Do we have enough shards? + if len(shards) < r.r.DataShards { + return ErrTooFewShards + } + + // Trim off parity shards if any + shards = shards[:r.r.DataShards] + for i := range shards { + if shards[i] == nil { + return StreamReadError{Err: ErrShardNoData, Stream: i} + } + } + // Join all shards + src := io.MultiReader(shards...) + + // Copy data to dst + n, err := io.CopyN(dst, src, outSize) + if err == io.EOF { + return ErrShortData + } + if err != nil { + return err + } + if n != outSize { + return ErrShortData + } + return nil +} + +// Split a an input stream into the number of shards given to the encoder. +// +// The data will be split into equally sized shards. +// If the data size isn't dividable by the number of shards, +// the last shard will contain extra zeros. +// +// You must supply the total size of your input. +// 'ErrShortData' will be returned if it is unable to retrieve the +// number of bytes indicated. +func (r rsStream) Split(data io.Reader, dst []io.Writer, size int64) error { + if size == 0 { + return ErrShortData + } + if len(dst) != r.r.DataShards { + return ErrInvShardNum + } + + for i := range dst { + if dst[i] == nil { + return StreamWriteError{Err: ErrShardNoData, Stream: i} + } + } + + // Calculate number of bytes per shard. + perShard := (size + int64(r.r.DataShards) - 1) / int64(r.r.DataShards) + + // Pad data to r.Shards*perShard. + padding := make([]byte, (int64(r.r.Shards)*perShard)-size) + data = io.MultiReader(data, bytes.NewBuffer(padding)) + + // Split into equal-length shards and copy. + for i := range dst { + n, err := io.CopyN(dst[i], data, perShard) + if err != io.EOF && err != nil { + return err + } + if n != perShard { + return ErrShortData + } + } + + return nil +} diff --git a/vendor/github.com/lucas-clemente/aes12/LICENSE b/vendor/github.com/lucas-clemente/aes12/LICENSE new file mode 100644 index 0000000..2c08ae2 --- /dev/null +++ b/vendor/github.com/lucas-clemente/aes12/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016 Lucas Clemente + +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/lucas-clemente/aes12/Readme.md b/vendor/github.com/lucas-clemente/aes12/Readme.md new file mode 100644 index 0000000..ef4e316 --- /dev/null +++ b/vendor/github.com/lucas-clemente/aes12/Readme.md @@ -0,0 +1,28 @@ +# aes12 + +This package modifies the AES-GCM implementation from Go's standard library to use 12 byte tag sizes. It is not intended for a general audience, and used in [quic-go](https://github.com/lucas-clemente/quic-go). + +To make use of the in-place encryption / decryption feature, the `dst` parameter to `Seal` and `Open` should be 16 bytes longer than plaintext, not 12. + +Command for testing: + +``` +go test . --bench=. && GOARCH=386 go test . --bench=. +``` + +The output (on my machine): + +``` +BenchmarkAESGCMSeal1K-8 3000000 467 ns/op 2192.37 MB/s +BenchmarkAESGCMOpen1K-8 3000000 416 ns/op 2456.72 MB/s +BenchmarkAESGCMSeal8K-8 500000 2742 ns/op 2986.53 MB/s +BenchmarkAESGCMOpen8K-8 500000 2791 ns/op 2934.65 MB/s +PASS +ok github.com/lucas-clemente/aes12 6.383s +BenchmarkAESGCMSeal1K-8 50000 35233 ns/op 29.06 MB/s +BenchmarkAESGCMOpen1K-8 50000 34529 ns/op 29.66 MB/s +BenchmarkAESGCMSeal8K-8 5000 262678 ns/op 31.19 MB/s +BenchmarkAESGCMOpen8K-8 5000 267296 ns/op 30.65 MB/s +PASS +ok github.com/lucas-clemente/aes12 6.972s +``` diff --git a/vendor/github.com/lucas-clemente/aes12/aes_gcm.go b/vendor/github.com/lucas-clemente/aes12/aes_gcm.go new file mode 100644 index 0000000..21f2b23 --- /dev/null +++ b/vendor/github.com/lucas-clemente/aes12/aes_gcm.go @@ -0,0 +1,148 @@ +// 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 amd64 + +package aes12 + +import "crypto/subtle" + +// The following functions are defined in gcm_amd64.s. +func hasGCMAsm() bool + +//go:noescape +func aesEncBlock(dst, src *[16]byte, ks []uint32) + +//go:noescape +func gcmAesInit(productTable *[256]byte, ks []uint32) + +//go:noescape +func gcmAesData(productTable *[256]byte, data []byte, T *[16]byte) + +//go:noescape +func gcmAesEnc(productTable *[256]byte, dst, src []byte, ctr, T *[16]byte, ks []uint32) + +//go:noescape +func gcmAesDec(productTable *[256]byte, dst, src []byte, ctr, T *[16]byte, ks []uint32) + +//go:noescape +func gcmAesFinish(productTable *[256]byte, tagMask, T *[16]byte, pLen, dLen uint64) + +// aesCipherGCM implements crypto/cipher.gcmAble so that crypto/cipher.NewGCM +// will use the optimised implementation in this file when possible. Instances +// of this type only exist when hasGCMAsm returns true. +type aesCipherGCM struct { + aesCipherAsm +} + +// Assert that aesCipherGCM implements the gcmAble interface. +var _ gcmAble = (*aesCipherGCM)(nil) + +// NewGCM returns the AES cipher wrapped in Galois Counter Mode. This is only +// called by crypto/cipher.NewGCM via the gcmAble interface. +func (c *aesCipherGCM) NewGCM(nonceSize int) (AEAD, error) { + g := &gcmAsm{ks: c.enc, nonceSize: nonceSize} + gcmAesInit(&g.productTable, g.ks) + return g, nil +} + +type gcmAsm struct { + // ks is the key schedule, the length of which depends on the size of + // the AES key. + ks []uint32 + // productTable contains pre-computed multiples of the binary-field + // element used in GHASH. + productTable [256]byte + // nonceSize contains the expected size of the nonce, in bytes. + nonceSize int +} + +func (g *gcmAsm) NonceSize() int { + return g.nonceSize +} + +func (*gcmAsm) Overhead() int { + return gcmTagSize +} + +// Seal encrypts and authenticates plaintext. See the AEAD interface for +// details. +func (g *gcmAsm) Seal(dst, nonce, plaintext, data []byte) []byte { + if len(nonce) != g.nonceSize { + panic("cipher: incorrect nonce length given to GCM") + } + + var counter, tagMask [gcmBlockSize]byte + + if len(nonce) == gcmStandardNonceSize { + // Init counter to nonce||1 + copy(counter[:], nonce) + counter[gcmBlockSize-1] = 1 + } else { + // Otherwise counter = GHASH(nonce) + gcmAesData(&g.productTable, nonce, &counter) + gcmAesFinish(&g.productTable, &tagMask, &counter, uint64(len(nonce)), uint64(0)) + } + + aesEncBlock(&tagMask, &counter, g.ks) + + var tagOut [16]byte + gcmAesData(&g.productTable, data, &tagOut) + + ret, out := sliceForAppend(dst, len(plaintext)+gcmTagSize) + if len(plaintext) > 0 { + gcmAesEnc(&g.productTable, out, plaintext, &counter, &tagOut, g.ks) + } + gcmAesFinish(&g.productTable, &tagMask, &tagOut, uint64(len(plaintext)), uint64(len(data))) + copy(out[len(plaintext):], tagOut[:gcmTagSize]) + + return ret +} + +// Open authenticates and decrypts ciphertext. See the AEAD interface +// for details. +func (g *gcmAsm) Open(dst, nonce, ciphertext, data []byte) ([]byte, error) { + if len(nonce) != g.nonceSize { + panic("cipher: incorrect nonce length given to GCM") + } + + if len(ciphertext) < gcmTagSize { + return nil, errOpen + } + tag := ciphertext[len(ciphertext)-gcmTagSize:] + ciphertext = ciphertext[:len(ciphertext)-gcmTagSize] + + // See GCM spec, section 7.1. + var counter, tagMask [gcmBlockSize]byte + + if len(nonce) == gcmStandardNonceSize { + // Init counter to nonce||1 + copy(counter[:], nonce) + counter[gcmBlockSize-1] = 1 + } else { + // Otherwise counter = GHASH(nonce) + gcmAesData(&g.productTable, nonce, &counter) + gcmAesFinish(&g.productTable, &tagMask, &counter, uint64(len(nonce)), uint64(0)) + } + + aesEncBlock(&tagMask, &counter, g.ks) + + var expectedTag [16]byte + gcmAesData(&g.productTable, data, &expectedTag) + + ret, out := sliceForAppend(dst, len(ciphertext)) + if len(ciphertext) > 0 { + gcmAesDec(&g.productTable, out, ciphertext, &counter, &expectedTag, g.ks) + } + gcmAesFinish(&g.productTable, &tagMask, &expectedTag, uint64(len(ciphertext)), uint64(len(data))) + + if subtle.ConstantTimeCompare(expectedTag[:12], tag) != 1 { + for i := range out { + out[i] = 0 + } + return nil, errOpen + } + + return ret, nil +} diff --git a/vendor/github.com/lucas-clemente/aes12/asm_amd64.s b/vendor/github.com/lucas-clemente/aes12/asm_amd64.s new file mode 100644 index 0000000..b257998 --- /dev/null +++ b/vendor/github.com/lucas-clemente/aes12/asm_amd64.s @@ -0,0 +1,285 @@ +// 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. + +#include "textflag.h" + +// func hasAsm() bool +// returns whether AES-NI is supported +TEXT ·hasAsm(SB),NOSPLIT,$0 + XORQ AX, AX + INCL AX + CPUID + SHRQ $25, CX + ANDQ $1, CX + MOVB CX, ret+0(FP) + RET + +// func encryptBlockAsm(nr int, xk *uint32, dst, src *byte) +TEXT ·encryptBlockAsm(SB),NOSPLIT,$0 + MOVQ nr+0(FP), CX + MOVQ xk+8(FP), AX + MOVQ dst+16(FP), DX + MOVQ src+24(FP), BX + MOVUPS 0(AX), X1 + MOVUPS 0(BX), X0 + ADDQ $16, AX + PXOR X1, X0 + SUBQ $12, CX + JE Lenc196 + JB Lenc128 +Lenc256: + MOVUPS 0(AX), X1 + AESENC X1, X0 + MOVUPS 16(AX), X1 + AESENC X1, X0 + ADDQ $32, AX +Lenc196: + MOVUPS 0(AX), X1 + AESENC X1, X0 + MOVUPS 16(AX), X1 + AESENC X1, X0 + ADDQ $32, AX +Lenc128: + MOVUPS 0(AX), X1 + AESENC X1, X0 + MOVUPS 16(AX), X1 + AESENC X1, X0 + MOVUPS 32(AX), X1 + AESENC X1, X0 + MOVUPS 48(AX), X1 + AESENC X1, X0 + MOVUPS 64(AX), X1 + AESENC X1, X0 + MOVUPS 80(AX), X1 + AESENC X1, X0 + MOVUPS 96(AX), X1 + AESENC X1, X0 + MOVUPS 112(AX), X1 + AESENC X1, X0 + MOVUPS 128(AX), X1 + AESENC X1, X0 + MOVUPS 144(AX), X1 + AESENCLAST X1, X0 + MOVUPS X0, 0(DX) + RET + +// func decryptBlockAsm(nr int, xk *uint32, dst, src *byte) +TEXT ·decryptBlockAsm(SB),NOSPLIT,$0 + MOVQ nr+0(FP), CX + MOVQ xk+8(FP), AX + MOVQ dst+16(FP), DX + MOVQ src+24(FP), BX + MOVUPS 0(AX), X1 + MOVUPS 0(BX), X0 + ADDQ $16, AX + PXOR X1, X0 + SUBQ $12, CX + JE Ldec196 + JB Ldec128 +Ldec256: + MOVUPS 0(AX), X1 + AESDEC X1, X0 + MOVUPS 16(AX), X1 + AESDEC X1, X0 + ADDQ $32, AX +Ldec196: + MOVUPS 0(AX), X1 + AESDEC X1, X0 + MOVUPS 16(AX), X1 + AESDEC X1, X0 + ADDQ $32, AX +Ldec128: + MOVUPS 0(AX), X1 + AESDEC X1, X0 + MOVUPS 16(AX), X1 + AESDEC X1, X0 + MOVUPS 32(AX), X1 + AESDEC X1, X0 + MOVUPS 48(AX), X1 + AESDEC X1, X0 + MOVUPS 64(AX), X1 + AESDEC X1, X0 + MOVUPS 80(AX), X1 + AESDEC X1, X0 + MOVUPS 96(AX), X1 + AESDEC X1, X0 + MOVUPS 112(AX), X1 + AESDEC X1, X0 + MOVUPS 128(AX), X1 + AESDEC X1, X0 + MOVUPS 144(AX), X1 + AESDECLAST X1, X0 + MOVUPS X0, 0(DX) + RET + +// func expandKeyAsm(nr int, key *byte, enc, dec *uint32) { +// Note that round keys are stored in uint128 format, not uint32 +TEXT ·expandKeyAsm(SB),NOSPLIT,$0 + MOVQ nr+0(FP), CX + MOVQ key+8(FP), AX + MOVQ enc+16(FP), BX + MOVQ dec+24(FP), DX + MOVUPS (AX), X0 + // enc + MOVUPS X0, (BX) + ADDQ $16, BX + PXOR X4, X4 // _expand_key_* expect X4 to be zero + CMPL CX, $12 + JE Lexp_enc196 + JB Lexp_enc128 +Lexp_enc256: + MOVUPS 16(AX), X2 + MOVUPS X2, (BX) + ADDQ $16, BX + AESKEYGENASSIST $0x01, X2, X1 + CALL _expand_key_256a<>(SB) + AESKEYGENASSIST $0x01, X0, X1 + CALL _expand_key_256b<>(SB) + AESKEYGENASSIST $0x02, X2, X1 + CALL _expand_key_256a<>(SB) + AESKEYGENASSIST $0x02, X0, X1 + CALL _expand_key_256b<>(SB) + AESKEYGENASSIST $0x04, X2, X1 + CALL _expand_key_256a<>(SB) + AESKEYGENASSIST $0x04, X0, X1 + CALL _expand_key_256b<>(SB) + AESKEYGENASSIST $0x08, X2, X1 + CALL _expand_key_256a<>(SB) + AESKEYGENASSIST $0x08, X0, X1 + CALL _expand_key_256b<>(SB) + AESKEYGENASSIST $0x10, X2, X1 + CALL _expand_key_256a<>(SB) + AESKEYGENASSIST $0x10, X0, X1 + CALL _expand_key_256b<>(SB) + AESKEYGENASSIST $0x20, X2, X1 + CALL _expand_key_256a<>(SB) + AESKEYGENASSIST $0x20, X0, X1 + CALL _expand_key_256b<>(SB) + AESKEYGENASSIST $0x40, X2, X1 + CALL _expand_key_256a<>(SB) + JMP Lexp_dec +Lexp_enc196: + MOVQ 16(AX), X2 + AESKEYGENASSIST $0x01, X2, X1 + CALL _expand_key_192a<>(SB) + AESKEYGENASSIST $0x02, X2, X1 + CALL _expand_key_192b<>(SB) + AESKEYGENASSIST $0x04, X2, X1 + CALL _expand_key_192a<>(SB) + AESKEYGENASSIST $0x08, X2, X1 + CALL _expand_key_192b<>(SB) + AESKEYGENASSIST $0x10, X2, X1 + CALL _expand_key_192a<>(SB) + AESKEYGENASSIST $0x20, X2, X1 + CALL _expand_key_192b<>(SB) + AESKEYGENASSIST $0x40, X2, X1 + CALL _expand_key_192a<>(SB) + AESKEYGENASSIST $0x80, X2, X1 + CALL _expand_key_192b<>(SB) + JMP Lexp_dec +Lexp_enc128: + AESKEYGENASSIST $0x01, X0, X1 + CALL _expand_key_128<>(SB) + AESKEYGENASSIST $0x02, X0, X1 + CALL _expand_key_128<>(SB) + AESKEYGENASSIST $0x04, X0, X1 + CALL _expand_key_128<>(SB) + AESKEYGENASSIST $0x08, X0, X1 + CALL _expand_key_128<>(SB) + AESKEYGENASSIST $0x10, X0, X1 + CALL _expand_key_128<>(SB) + AESKEYGENASSIST $0x20, X0, X1 + CALL _expand_key_128<>(SB) + AESKEYGENASSIST $0x40, X0, X1 + CALL _expand_key_128<>(SB) + AESKEYGENASSIST $0x80, X0, X1 + CALL _expand_key_128<>(SB) + AESKEYGENASSIST $0x1b, X0, X1 + CALL _expand_key_128<>(SB) + AESKEYGENASSIST $0x36, X0, X1 + CALL _expand_key_128<>(SB) +Lexp_dec: + // dec + SUBQ $16, BX + MOVUPS (BX), X1 + MOVUPS X1, (DX) + DECQ CX +Lexp_dec_loop: + MOVUPS -16(BX), X1 + AESIMC X1, X0 + MOVUPS X0, 16(DX) + SUBQ $16, BX + ADDQ $16, DX + DECQ CX + JNZ Lexp_dec_loop + MOVUPS -16(BX), X0 + MOVUPS X0, 16(DX) + RET + +TEXT _expand_key_128<>(SB),NOSPLIT,$0 + PSHUFD $0xff, X1, X1 + SHUFPS $0x10, X0, X4 + PXOR X4, X0 + SHUFPS $0x8c, X0, X4 + PXOR X4, X0 + PXOR X1, X0 + MOVUPS X0, (BX) + ADDQ $16, BX + RET + +TEXT _expand_key_192a<>(SB),NOSPLIT,$0 + PSHUFD $0x55, X1, X1 + SHUFPS $0x10, X0, X4 + PXOR X4, X0 + SHUFPS $0x8c, X0, X4 + PXOR X4, X0 + PXOR X1, X0 + + MOVAPS X2, X5 + MOVAPS X2, X6 + PSLLDQ $0x4, X5 + PSHUFD $0xff, X0, X3 + PXOR X3, X2 + PXOR X5, X2 + + MOVAPS X0, X1 + SHUFPS $0x44, X0, X6 + MOVUPS X6, (BX) + SHUFPS $0x4e, X2, X1 + MOVUPS X1, 16(BX) + ADDQ $32, BX + RET + +TEXT _expand_key_192b<>(SB),NOSPLIT,$0 + PSHUFD $0x55, X1, X1 + SHUFPS $0x10, X0, X4 + PXOR X4, X0 + SHUFPS $0x8c, X0, X4 + PXOR X4, X0 + PXOR X1, X0 + + MOVAPS X2, X5 + PSLLDQ $0x4, X5 + PSHUFD $0xff, X0, X3 + PXOR X3, X2 + PXOR X5, X2 + + MOVUPS X0, (BX) + ADDQ $16, BX + RET + +TEXT _expand_key_256a<>(SB),NOSPLIT,$0 + JMP _expand_key_128<>(SB) + +TEXT _expand_key_256b<>(SB),NOSPLIT,$0 + PSHUFD $0xaa, X1, X1 + SHUFPS $0x10, X2, X4 + PXOR X4, X2 + SHUFPS $0x8c, X2, X4 + PXOR X4, X2 + PXOR X1, X2 + + MOVUPS X2, (BX) + ADDQ $16, BX + RET diff --git a/vendor/github.com/lucas-clemente/aes12/block.go b/vendor/github.com/lucas-clemente/aes12/block.go new file mode 100644 index 0000000..1f29dda --- /dev/null +++ b/vendor/github.com/lucas-clemente/aes12/block.go @@ -0,0 +1,176 @@ +// 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 Go implementation is derived in part from the reference +// ANSI C implementation, which carries the following notice: +// +// rijndael-alg-fst.c +// +// @version 3.0 (December 2000) +// +// Optimised ANSI C code for the Rijndael cipher (now AES) +// +// @author Vincent Rijmen +// @author Antoon Bosselaers +// @author Paulo Barreto +// +// This code is hereby placed in the public domain. +// +// THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS +// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +// OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// See FIPS 197 for specification, and see Daemen and Rijmen's Rijndael submission +// for implementation details. +// http://www.csrc.nist.gov/publications/fips/fips197/fips-197.pdf +// http://csrc.nist.gov/archive/aes/rijndael/Rijndael-ammended.pdf + +package aes12 + +// Encrypt one block from src into dst, using the expanded key xk. +func encryptBlockGo(xk []uint32, dst, src []byte) { + var s0, s1, s2, s3, t0, t1, t2, t3 uint32 + + s0 = uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) + s1 = uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) + s2 = uint32(src[8])<<24 | uint32(src[9])<<16 | uint32(src[10])<<8 | uint32(src[11]) + s3 = uint32(src[12])<<24 | uint32(src[13])<<16 | uint32(src[14])<<8 | uint32(src[15]) + + // First round just XORs input with key. + s0 ^= xk[0] + s1 ^= xk[1] + s2 ^= xk[2] + s3 ^= xk[3] + + // Middle rounds shuffle using tables. + // Number of rounds is set by length of expanded key. + nr := len(xk)/4 - 2 // - 2: one above, one more below + k := 4 + for r := 0; r < nr; r++ { + t0 = xk[k+0] ^ te0[uint8(s0>>24)] ^ te1[uint8(s1>>16)] ^ te2[uint8(s2>>8)] ^ te3[uint8(s3)] + t1 = xk[k+1] ^ te0[uint8(s1>>24)] ^ te1[uint8(s2>>16)] ^ te2[uint8(s3>>8)] ^ te3[uint8(s0)] + t2 = xk[k+2] ^ te0[uint8(s2>>24)] ^ te1[uint8(s3>>16)] ^ te2[uint8(s0>>8)] ^ te3[uint8(s1)] + t3 = xk[k+3] ^ te0[uint8(s3>>24)] ^ te1[uint8(s0>>16)] ^ te2[uint8(s1>>8)] ^ te3[uint8(s2)] + k += 4 + s0, s1, s2, s3 = t0, t1, t2, t3 + } + + // Last round uses s-box directly and XORs to produce output. + s0 = uint32(sbox0[t0>>24])<<24 | uint32(sbox0[t1>>16&0xff])<<16 | uint32(sbox0[t2>>8&0xff])<<8 | uint32(sbox0[t3&0xff]) + s1 = uint32(sbox0[t1>>24])<<24 | uint32(sbox0[t2>>16&0xff])<<16 | uint32(sbox0[t3>>8&0xff])<<8 | uint32(sbox0[t0&0xff]) + s2 = uint32(sbox0[t2>>24])<<24 | uint32(sbox0[t3>>16&0xff])<<16 | uint32(sbox0[t0>>8&0xff])<<8 | uint32(sbox0[t1&0xff]) + s3 = uint32(sbox0[t3>>24])<<24 | uint32(sbox0[t0>>16&0xff])<<16 | uint32(sbox0[t1>>8&0xff])<<8 | uint32(sbox0[t2&0xff]) + + s0 ^= xk[k+0] + s1 ^= xk[k+1] + s2 ^= xk[k+2] + s3 ^= xk[k+3] + + dst[0], dst[1], dst[2], dst[3] = byte(s0>>24), byte(s0>>16), byte(s0>>8), byte(s0) + dst[4], dst[5], dst[6], dst[7] = byte(s1>>24), byte(s1>>16), byte(s1>>8), byte(s1) + dst[8], dst[9], dst[10], dst[11] = byte(s2>>24), byte(s2>>16), byte(s2>>8), byte(s2) + dst[12], dst[13], dst[14], dst[15] = byte(s3>>24), byte(s3>>16), byte(s3>>8), byte(s3) +} + +// Decrypt one block from src into dst, using the expanded key xk. +func decryptBlockGo(xk []uint32, dst, src []byte) { + var s0, s1, s2, s3, t0, t1, t2, t3 uint32 + + s0 = uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) + s1 = uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) + s2 = uint32(src[8])<<24 | uint32(src[9])<<16 | uint32(src[10])<<8 | uint32(src[11]) + s3 = uint32(src[12])<<24 | uint32(src[13])<<16 | uint32(src[14])<<8 | uint32(src[15]) + + // First round just XORs input with key. + s0 ^= xk[0] + s1 ^= xk[1] + s2 ^= xk[2] + s3 ^= xk[3] + + // Middle rounds shuffle using tables. + // Number of rounds is set by length of expanded key. + nr := len(xk)/4 - 2 // - 2: one above, one more below + k := 4 + for r := 0; r < nr; r++ { + t0 = xk[k+0] ^ td0[uint8(s0>>24)] ^ td1[uint8(s3>>16)] ^ td2[uint8(s2>>8)] ^ td3[uint8(s1)] + t1 = xk[k+1] ^ td0[uint8(s1>>24)] ^ td1[uint8(s0>>16)] ^ td2[uint8(s3>>8)] ^ td3[uint8(s2)] + t2 = xk[k+2] ^ td0[uint8(s2>>24)] ^ td1[uint8(s1>>16)] ^ td2[uint8(s0>>8)] ^ td3[uint8(s3)] + t3 = xk[k+3] ^ td0[uint8(s3>>24)] ^ td1[uint8(s2>>16)] ^ td2[uint8(s1>>8)] ^ td3[uint8(s0)] + k += 4 + s0, s1, s2, s3 = t0, t1, t2, t3 + } + + // Last round uses s-box directly and XORs to produce output. + s0 = uint32(sbox1[t0>>24])<<24 | uint32(sbox1[t3>>16&0xff])<<16 | uint32(sbox1[t2>>8&0xff])<<8 | uint32(sbox1[t1&0xff]) + s1 = uint32(sbox1[t1>>24])<<24 | uint32(sbox1[t0>>16&0xff])<<16 | uint32(sbox1[t3>>8&0xff])<<8 | uint32(sbox1[t2&0xff]) + s2 = uint32(sbox1[t2>>24])<<24 | uint32(sbox1[t1>>16&0xff])<<16 | uint32(sbox1[t0>>8&0xff])<<8 | uint32(sbox1[t3&0xff]) + s3 = uint32(sbox1[t3>>24])<<24 | uint32(sbox1[t2>>16&0xff])<<16 | uint32(sbox1[t1>>8&0xff])<<8 | uint32(sbox1[t0&0xff]) + + s0 ^= xk[k+0] + s1 ^= xk[k+1] + s2 ^= xk[k+2] + s3 ^= xk[k+3] + + dst[0], dst[1], dst[2], dst[3] = byte(s0>>24), byte(s0>>16), byte(s0>>8), byte(s0) + dst[4], dst[5], dst[6], dst[7] = byte(s1>>24), byte(s1>>16), byte(s1>>8), byte(s1) + dst[8], dst[9], dst[10], dst[11] = byte(s2>>24), byte(s2>>16), byte(s2>>8), byte(s2) + dst[12], dst[13], dst[14], dst[15] = byte(s3>>24), byte(s3>>16), byte(s3>>8), byte(s3) +} + +// Apply sbox0 to each byte in w. +func subw(w uint32) uint32 { + return uint32(sbox0[w>>24])<<24 | + uint32(sbox0[w>>16&0xff])<<16 | + uint32(sbox0[w>>8&0xff])<<8 | + uint32(sbox0[w&0xff]) +} + +// Rotate +func rotw(w uint32) uint32 { return w<<8 | w>>24 } + +// Key expansion algorithm. See FIPS-197, Figure 11. +// Their rcon[i] is our powx[i-1] << 24. +func expandKeyGo(key []byte, enc, dec []uint32) { + // Encryption key setup. + var i int + nk := len(key) / 4 + for i = 0; i < nk; i++ { + enc[i] = uint32(key[4*i])<<24 | uint32(key[4*i+1])<<16 | uint32(key[4*i+2])<<8 | uint32(key[4*i+3]) + } + for ; i < len(enc); i++ { + t := enc[i-1] + if i%nk == 0 { + t = subw(rotw(t)) ^ (uint32(powx[i/nk-1]) << 24) + } else if nk > 6 && i%nk == 4 { + t = subw(t) + } + enc[i] = enc[i-nk] ^ t + } + + // Derive decryption key from encryption key. + // Reverse the 4-word round key sets from enc to produce dec. + // All sets but the first and last get the MixColumn transform applied. + if dec == nil { + return + } + n := len(enc) + for i := 0; i < n; i += 4 { + ei := n - i - 4 + for j := 0; j < 4; j++ { + x := enc[ei+j] + if i > 0 && i+4 < n { + x = td0[sbox0[x>>24]] ^ td1[sbox0[x>>16&0xff]] ^ td2[sbox0[x>>8&0xff]] ^ td3[sbox0[x&0xff]] + } + dec[i+j] = x + } + } +} diff --git a/vendor/github.com/lucas-clemente/aes12/cipher 2.go b/vendor/github.com/lucas-clemente/aes12/cipher 2.go new file mode 100644 index 0000000..ae2f520 --- /dev/null +++ b/vendor/github.com/lucas-clemente/aes12/cipher 2.go @@ -0,0 +1,56 @@ +// 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. + +// package aes12 implements standard block cipher modes that can be wrapped +// around low-level block cipher implementations. +// See http://csrc.nist.gov/groups/ST/toolkit/BCM/current_modes.html +// and NIST Special Publication 800-38A. +package aes12 + +// A Block represents an implementation of block cipher +// using a given key. It provides the capability to encrypt +// or decrypt individual blocks. The mode implementations +// extend that capability to streams of blocks. +type Block interface { + // BlockSize returns the cipher's block size. + BlockSize() int + + // Encrypt encrypts the first block in src into dst. + // Dst and src may point at the same memory. + Encrypt(dst, src []byte) + + // Decrypt decrypts the first block in src into dst. + // Dst and src may point at the same memory. + Decrypt(dst, src []byte) +} + +// A Stream represents a stream cipher. +type Stream interface { + // XORKeyStream XORs each byte in the given slice with a byte from the + // cipher's key stream. Dst and src may point to the same memory. + // If len(dst) < len(src), XORKeyStream should panic. It is acceptable + // to pass a dst bigger than src, and in that case, XORKeyStream will + // only update dst[:len(src)] and will not touch the rest of dst. + XORKeyStream(dst, src []byte) +} + +// A BlockMode represents a block cipher running in a block-based mode (CBC, +// ECB etc). +type BlockMode interface { + // BlockSize returns the mode's block size. + BlockSize() int + + // CryptBlocks encrypts or decrypts a number of blocks. The length of + // src must be a multiple of the block size. Dst and src may point to + // the same memory. + CryptBlocks(dst, src []byte) +} + +// Utility routines + +func dup(p []byte) []byte { + q := make([]byte, len(p)) + copy(q, p) + return q +} diff --git a/vendor/github.com/lucas-clemente/aes12/cipher.go b/vendor/github.com/lucas-clemente/aes12/cipher.go new file mode 100644 index 0000000..a9b8e54 --- /dev/null +++ b/vendor/github.com/lucas-clemente/aes12/cipher.go @@ -0,0 +1,68 @@ +// 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 aes12 + +import "strconv" + +// The AES block size in bytes. +const BlockSize = 16 + +// A cipher is an instance of AES encryption using a particular key. +type aesCipher struct { + enc []uint32 + dec []uint32 +} + +type KeySizeError int + +func (k KeySizeError) Error() string { + return "crypto/aes: invalid key size " + strconv.Itoa(int(k)) +} + +// NewCipher creates and returns a new Block. +// The key argument should be the AES key, +// either 16, 24, or 32 bytes to select +// AES-128, AES-192, or AES-256. +func NewCipher(key []byte) (Block, error) { + k := len(key) + switch k { + default: + return nil, KeySizeError(k) + case 16, 24, 32: + break + } + return newCipher(key) +} + +// newCipherGeneric creates and returns a new Block +// implemented in pure Go. +func newCipherGeneric(key []byte) (Block, error) { + n := len(key) + 28 + c := aesCipher{make([]uint32, n), make([]uint32, n)} + expandKeyGo(key, c.enc, c.dec) + return &c, nil +} + +func (c *aesCipher) BlockSize() int { return BlockSize } + +func (c *aesCipher) Encrypt(dst, src []byte) { + if len(src) < BlockSize { + panic("crypto/aes: input not full block") + } + if len(dst) < BlockSize { + panic("crypto/aes: output not full block") + } + encryptBlockGo(c.enc, dst, src) +} + +func (c *aesCipher) Decrypt(dst, src []byte) { + if len(src) < BlockSize { + panic("crypto/aes: input not full block") + } + if len(dst) < BlockSize { + panic("crypto/aes: output not full block") + } + decryptBlockGo(c.dec, dst, src) +} diff --git a/vendor/github.com/lucas-clemente/aes12/cipher_amd64.go b/vendor/github.com/lucas-clemente/aes12/cipher_amd64.go new file mode 100644 index 0000000..cd0544f --- /dev/null +++ b/vendor/github.com/lucas-clemente/aes12/cipher_amd64.go @@ -0,0 +1,79 @@ +// 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 aes12 + +// defined in asm_amd64.s +func hasAsm() bool +func encryptBlockAsm(nr int, xk *uint32, dst, src *byte) +func decryptBlockAsm(nr int, xk *uint32, dst, src *byte) +func expandKeyAsm(nr int, key *byte, enc *uint32, dec *uint32) + +type aesCipherAsm struct { + aesCipher +} + +var useAsm = hasAsm() + +func newCipher(key []byte) (Block, error) { + if !useAsm { + return newCipherGeneric(key) + } + n := len(key) + 28 + c := aesCipherAsm{aesCipher{make([]uint32, n), make([]uint32, n)}} + rounds := 10 + switch len(key) { + case 128 / 8: + rounds = 10 + case 192 / 8: + rounds = 12 + case 256 / 8: + rounds = 14 + } + expandKeyAsm(rounds, &key[0], &c.enc[0], &c.dec[0]) + if hasGCMAsm() { + return &aesCipherGCM{c}, nil + } + + return &c, nil +} + +func (c *aesCipherAsm) BlockSize() int { return BlockSize } + +func (c *aesCipherAsm) Encrypt(dst, src []byte) { + if len(src) < BlockSize { + panic("crypto/aes: input not full block") + } + if len(dst) < BlockSize { + panic("crypto/aes: output not full block") + } + encryptBlockAsm(len(c.enc)/4-1, &c.enc[0], &dst[0], &src[0]) +} + +func (c *aesCipherAsm) Decrypt(dst, src []byte) { + if len(src) < BlockSize { + panic("crypto/aes: input not full block") + } + if len(dst) < BlockSize { + panic("crypto/aes: output not full block") + } + decryptBlockAsm(len(c.dec)/4-1, &c.dec[0], &dst[0], &src[0]) +} + +// expandKey is used by BenchmarkExpand to ensure that the asm implementation +// of key expansion is used for the benchmark when it is available. +func expandKey(key []byte, enc, dec []uint32) { + if useAsm { + rounds := 10 // rounds needed for AES128 + switch len(key) { + case 192 / 8: + rounds = 12 + case 256 / 8: + rounds = 14 + } + expandKeyAsm(rounds, &key[0], &enc[0], &dec[0]) + } else { + expandKeyGo(key, enc, dec) + } +} diff --git a/vendor/github.com/lucas-clemente/aes12/cipher_generic.go b/vendor/github.com/lucas-clemente/aes12/cipher_generic.go new file mode 100644 index 0000000..a9a6abd --- /dev/null +++ b/vendor/github.com/lucas-clemente/aes12/cipher_generic.go @@ -0,0 +1,22 @@ +// 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 !amd64,!s390x + +package aes12 + +// newCipher calls the newCipherGeneric function +// directly. Platforms with hardware accelerated +// implementations of AES should implement their +// own version of newCipher (which may then call +// newCipherGeneric if needed). +func newCipher(key []byte) (Block, error) { + return newCipherGeneric(key) +} + +// expandKey is used by BenchmarkExpand and should +// call an assembly implementation if one is available. +func expandKey(key []byte, enc, dec []uint32) { + expandKeyGo(key, enc, dec) +} diff --git a/vendor/github.com/lucas-clemente/aes12/const.go b/vendor/github.com/lucas-clemente/aes12/const.go new file mode 100644 index 0000000..40296fa --- /dev/null +++ b/vendor/github.com/lucas-clemente/aes12/const.go @@ -0,0 +1,358 @@ +// 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 aes12 implements AES encryption (formerly Rijndael), as defined in +// U.S. Federal Information Processing Standards Publication 197. +package aes12 + +// This file contains AES constants - 8720 bytes of initialized data. + +// http://www.csrc.nist.gov/publications/fips/fips197/fips-197.pdf + +// AES is based on the mathematical behavior of binary polynomials +// (polynomials over GF(2)) modulo the irreducible polynomial x⁸ + x⁴ + x³ + x + 1. +// Addition of these binary polynomials corresponds to binary xor. +// Reducing mod poly corresponds to binary xor with poly every +// time a 0x100 bit appears. +const poly = 1<<8 | 1<<4 | 1<<3 | 1<<1 | 1<<0 // x⁸ + x⁴ + x³ + x + 1 + +// Powers of x mod poly in GF(2). +var powx = [16]byte{ + 0x01, + 0x02, + 0x04, + 0x08, + 0x10, + 0x20, + 0x40, + 0x80, + 0x1b, + 0x36, + 0x6c, + 0xd8, + 0xab, + 0x4d, + 0x9a, + 0x2f, +} + +// FIPS-197 Figure 7. S-box substitution values in hexadecimal format. +var sbox0 = [256]byte{ + 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, + 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, + 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, + 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, + 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, + 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, + 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, + 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, + 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, + 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, + 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, + 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, + 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, + 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, + 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, + 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16, +} + +// FIPS-197 Figure 14. Inverse S-box substitution values in hexadecimal format. +var sbox1 = [256]byte{ + 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, + 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, + 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, + 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, + 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, + 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, + 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, + 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, + 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, + 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, + 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, + 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, + 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, + 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, + 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, + 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d, +} + +// Lookup tables for encryption. +// These can be recomputed by adapting the tests in aes_test.go. + +var te0 = [256]uint32{ + 0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, + 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, + 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, + 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, + 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, + 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, + 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, + 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, + 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, + 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, + 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, + 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, + 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, + 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, + 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, + 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, + 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, + 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, + 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, + 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, + 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, + 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, + 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, + 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, + 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, + 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, + 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, + 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, + 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, + 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, + 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, + 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a, +} +var te1 = [256]uint32{ + 0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, + 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, + 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, + 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, + 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, + 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, + 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, + 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, + 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, + 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, + 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, + 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, + 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, + 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, + 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, + 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, + 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, + 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, + 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, + 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, + 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, + 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, + 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, + 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, + 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, + 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, + 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, + 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, + 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, + 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, + 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, + 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616, +} +var te2 = [256]uint32{ + 0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, + 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, + 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, + 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, + 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, + 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, + 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, + 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, + 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, + 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, + 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, + 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, + 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, + 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, + 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, + 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, + 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, + 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, + 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, + 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, + 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, + 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, + 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, + 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, + 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, + 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, + 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, + 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, + 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, + 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, + 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, + 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16, +} +var te3 = [256]uint32{ + 0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, + 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, + 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, + 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, + 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, + 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, + 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, + 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, + 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, + 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, + 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, + 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, + 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, + 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, + 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, + 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, + 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, + 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, + 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, + 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, + 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, + 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, + 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, + 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, + 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, + 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, + 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, + 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, + 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, + 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, + 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, + 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c, +} + +// Lookup tables for decryption. +// These can be recomputed by adapting the tests in aes_test.go. + +var td0 = [256]uint32{ + 0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, + 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, + 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, + 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, + 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, + 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, + 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, + 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, + 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, + 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, + 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, + 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, + 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, + 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, + 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, + 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, + 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, + 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, + 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, + 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, + 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, + 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, + 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, + 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, + 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, + 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, + 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, + 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, + 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, + 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, + 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, + 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742, +} +var td1 = [256]uint32{ + 0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, + 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, + 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, + 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, + 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, + 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, + 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, + 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, + 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, + 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, + 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, + 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, + 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, + 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, + 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, + 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, + 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, + 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, + 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, + 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, + 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, + 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, + 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, + 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, + 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, + 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, + 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, + 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, + 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, + 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, + 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, + 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857, +} +var td2 = [256]uint32{ + 0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, + 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, + 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, + 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, + 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, + 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, + 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, + 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, + 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, + 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, + 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, + 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, + 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, + 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, + 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, + 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, + 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, + 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, + 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, + 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, + 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, + 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, + 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, + 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, + 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, + 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, + 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, + 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, + 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, + 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, + 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, + 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8, +} +var td3 = [256]uint32{ + 0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, + 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, + 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, + 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, + 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, + 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, + 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, + 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, + 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, + 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, + 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, + 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, + 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, + 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, + 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, + 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, + 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, + 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, + 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, + 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, + 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, + 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, + 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, + 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, + 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, + 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, + 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, + 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, + 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, + 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, + 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, + 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0, +} diff --git a/vendor/github.com/lucas-clemente/aes12/gcm.go b/vendor/github.com/lucas-clemente/aes12/gcm.go new file mode 100644 index 0000000..ed7dc91 --- /dev/null +++ b/vendor/github.com/lucas-clemente/aes12/gcm.go @@ -0,0 +1,401 @@ +// 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. + +package aes12 + +import ( + "crypto/subtle" + "errors" +) + +// AEAD is a cipher mode providing authenticated encryption with associated +// data. For a description of the methodology, see +// https://en.wikipedia.org/wiki/Authenticated_encryption +type AEAD interface { + // NonceSize returns the size of the nonce that must be passed to Seal + // and Open. + NonceSize() int + + // Overhead returns the maximum difference between the lengths of a + // plaintext and its ciphertext. + Overhead() int + + // Seal encrypts and authenticates plaintext, authenticates the + // additional data and appends the result to dst, returning the updated + // slice. The nonce must be NonceSize() bytes long and unique for all + // time, for a given key. + // + // The plaintext and dst may alias exactly or not at all. To reuse + // plaintext's storage for the encrypted output, use plaintext[:0] as dst. + Seal(dst, nonce, plaintext, additionalData []byte) []byte + + // Open decrypts and authenticates ciphertext, authenticates the + // additional data and, if successful, appends the resulting plaintext + // to dst, returning the updated slice. The nonce must be NonceSize() + // bytes long and both it and the additional data must match the + // value passed to Seal. + // + // The ciphertext and dst may alias exactly or not at all. To reuse + // ciphertext's storage for the decrypted output, use ciphertext[:0] as dst. + // + // Even if the function fails, the contents of dst, up to its capacity, + // may be overwritten. + Open(dst, nonce, ciphertext, additionalData []byte) ([]byte, error) +} + +// gcmAble is an interface implemented by ciphers that have a specific optimized +// implementation of GCM, like crypto/aes. NewGCM will check for this interface +// and return the specific AEAD if found. +type gcmAble interface { + NewGCM(int) (AEAD, error) +} + +// gcmFieldElement represents a value in GF(2¹²⁸). In order to reflect the GCM +// standard and make getUint64 suitable for marshaling these values, the bits +// are stored backwards. For example: +// the coefficient of x⁰ can be obtained by v.low >> 63. +// the coefficient of x⁶³ can be obtained by v.low & 1. +// the coefficient of x⁶⁴ can be obtained by v.high >> 63. +// the coefficient of x¹²⁷ can be obtained by v.high & 1. +type gcmFieldElement struct { + low, high uint64 +} + +// gcm represents a Galois Counter Mode with a specific key. See +// http://csrc.nist.gov/groups/ST/toolkit/BCM/documents/proposedmodes/gcm/gcm-revised-spec.pdf +type gcm struct { + cipher Block + nonceSize int + // productTable contains the first sixteen powers of the key, H. + // However, they are in bit reversed order. See NewGCMWithNonceSize. + productTable [16]gcmFieldElement +} + +// NewGCM returns the given 128-bit, block cipher wrapped in Galois Counter Mode +// with the standard nonce length. +func NewGCM(cipher Block) (AEAD, error) { + return NewGCMWithNonceSize(cipher, gcmStandardNonceSize) +} + +// NewGCMWithNonceSize returns the given 128-bit, block cipher wrapped in Galois +// Counter Mode, which accepts nonces of the given length. +// +// Only use this function if you require compatibility with an existing +// cryptosystem that uses non-standard nonce lengths. All other users should use +// NewGCM, which is faster and more resistant to misuse. +func NewGCMWithNonceSize(cipher Block, size int) (AEAD, error) { + if cipher, ok := cipher.(gcmAble); ok { + return cipher.NewGCM(size) + } + + if cipher.BlockSize() != gcmBlockSize { + return nil, errors.New("cipher: NewGCM requires 128-bit block cipher") + } + + var key [gcmBlockSize]byte + cipher.Encrypt(key[:], key[:]) + + g := &gcm{cipher: cipher, nonceSize: size} + + // We precompute 16 multiples of |key|. However, when we do lookups + // into this table we'll be using bits from a field element and + // therefore the bits will be in the reverse order. So normally one + // would expect, say, 4*key to be in index 4 of the table but due to + // this bit ordering it will actually be in index 0010 (base 2) = 2. + x := gcmFieldElement{ + getUint64(key[:8]), + getUint64(key[8:]), + } + g.productTable[reverseBits(1)] = x + + for i := 2; i < 16; i += 2 { + g.productTable[reverseBits(i)] = gcmDouble(&g.productTable[reverseBits(i/2)]) + g.productTable[reverseBits(i+1)] = gcmAdd(&g.productTable[reverseBits(i)], &x) + } + + return g, nil +} + +const ( + gcmBlockSize = 16 + gcmTagSize = 12 + gcmStandardNonceSize = 12 +) + +func (g *gcm) NonceSize() int { + return g.nonceSize +} + +func (*gcm) Overhead() int { + return gcmTagSize +} + +func (g *gcm) Seal(dst, nonce, plaintext, data []byte) []byte { + if len(nonce) != g.nonceSize { + panic("cipher: incorrect nonce length given to GCM") + } + ret, out := sliceForAppend(dst, len(plaintext)+gcmTagSize) + + var counter, tagMask [gcmBlockSize]byte + g.deriveCounter(&counter, nonce) + + g.cipher.Encrypt(tagMask[:], counter[:]) + gcmInc32(&counter) + + g.counterCrypt(out, plaintext, &counter) + + tag := make([]byte, 16) + g.auth(tag, out[:len(plaintext)], data, &tagMask) + copy(ret[len(ret)-12:], tag) + + return ret +} + +var errOpen = errors.New("cipher: message authentication failed") + +func (g *gcm) Open(dst, nonce, ciphertext, data []byte) ([]byte, error) { + if len(nonce) != g.nonceSize { + panic("cipher: incorrect nonce length given to GCM") + } + + if len(ciphertext) < gcmTagSize { + return nil, errOpen + } + tag := ciphertext[len(ciphertext)-gcmTagSize:] + ciphertext = ciphertext[:len(ciphertext)-gcmTagSize] + + var counter, tagMask [gcmBlockSize]byte + g.deriveCounter(&counter, nonce) + + g.cipher.Encrypt(tagMask[:], counter[:]) + gcmInc32(&counter) + + var expectedTag [gcmBlockSize]byte + g.auth(expectedTag[:], ciphertext, data, &tagMask) + + ret, out := sliceForAppend(dst, len(ciphertext)) + + if subtle.ConstantTimeCompare(expectedTag[:gcmTagSize], tag) != 1 { + // The AESNI code decrypts and authenticates concurrently, and + // so overwrites dst in the event of a tag mismatch. That + // behaviour is mimicked here in order to be consistent across + // platforms. + for i := range out { + out[i] = 0 + } + return nil, errOpen + } + + g.counterCrypt(out, ciphertext, &counter) + + return ret, nil +} + +// reverseBits reverses the order of the bits of 4-bit number in i. +func reverseBits(i int) int { + i = ((i << 2) & 0xc) | ((i >> 2) & 0x3) + i = ((i << 1) & 0xa) | ((i >> 1) & 0x5) + return i +} + +// gcmAdd adds two elements of GF(2¹²⁸) and returns the sum. +func gcmAdd(x, y *gcmFieldElement) gcmFieldElement { + // Addition in a characteristic 2 field is just XOR. + return gcmFieldElement{x.low ^ y.low, x.high ^ y.high} +} + +// gcmDouble returns the result of doubling an element of GF(2¹²⁸). +func gcmDouble(x *gcmFieldElement) (double gcmFieldElement) { + msbSet := x.high&1 == 1 + + // Because of the bit-ordering, doubling is actually a right shift. + double.high = x.high >> 1 + double.high |= x.low << 63 + double.low = x.low >> 1 + + // If the most-significant bit was set before shifting then it, + // conceptually, becomes a term of x^128. This is greater than the + // irreducible polynomial so the result has to be reduced. The + // irreducible polynomial is 1+x+x^2+x^7+x^128. We can subtract that to + // eliminate the term at x^128 which also means subtracting the other + // four terms. In characteristic 2 fields, subtraction == addition == + // XOR. + if msbSet { + double.low ^= 0xe100000000000000 + } + + return +} + +var gcmReductionTable = []uint16{ + 0x0000, 0x1c20, 0x3840, 0x2460, 0x7080, 0x6ca0, 0x48c0, 0x54e0, + 0xe100, 0xfd20, 0xd940, 0xc560, 0x9180, 0x8da0, 0xa9c0, 0xb5e0, +} + +// mul sets y to y*H, where H is the GCM key, fixed during NewGCMWithNonceSize. +func (g *gcm) mul(y *gcmFieldElement) { + var z gcmFieldElement + + for i := 0; i < 2; i++ { + word := y.high + if i == 1 { + word = y.low + } + + // Multiplication works by multiplying z by 16 and adding in + // one of the precomputed multiples of H. + for j := 0; j < 64; j += 4 { + msw := z.high & 0xf + z.high >>= 4 + z.high |= z.low << 60 + z.low >>= 4 + z.low ^= uint64(gcmReductionTable[msw]) << 48 + + // the values in |table| are ordered for + // little-endian bit positions. See the comment + // in NewGCMWithNonceSize. + t := &g.productTable[word&0xf] + + z.low ^= t.low + z.high ^= t.high + word >>= 4 + } + } + + *y = z +} + +// updateBlocks extends y with more polynomial terms from blocks, based on +// Horner's rule. There must be a multiple of gcmBlockSize bytes in blocks. +func (g *gcm) updateBlocks(y *gcmFieldElement, blocks []byte) { + for len(blocks) > 0 { + y.low ^= getUint64(blocks) + y.high ^= getUint64(blocks[8:]) + g.mul(y) + blocks = blocks[gcmBlockSize:] + } +} + +// update extends y with more polynomial terms from data. If data is not a +// multiple of gcmBlockSize bytes long then the remainder is zero padded. +func (g *gcm) update(y *gcmFieldElement, data []byte) { + fullBlocks := (len(data) >> 4) << 4 + g.updateBlocks(y, data[:fullBlocks]) + + if len(data) != fullBlocks { + var partialBlock [gcmBlockSize]byte + copy(partialBlock[:], data[fullBlocks:]) + g.updateBlocks(y, partialBlock[:]) + } +} + +// gcmInc32 treats the final four bytes of counterBlock as a big-endian value +// and increments it. +func gcmInc32(counterBlock *[16]byte) { + for i := gcmBlockSize - 1; i >= gcmBlockSize-4; i-- { + counterBlock[i]++ + if counterBlock[i] != 0 { + break + } + } +} + +// sliceForAppend takes a slice and a requested number of bytes. It returns a +// slice with the contents of the given slice followed by that many bytes and a +// second slice that aliases into it and contains only the extra bytes. If the +// original slice has sufficient capacity then no allocation is performed. +func sliceForAppend(in []byte, n int) (head, tail []byte) { + if total := len(in) + n; cap(in) >= total { + head = in[:total] + } else { + head = make([]byte, total) + copy(head, in) + } + tail = head[len(in):] + return +} + +// counterCrypt crypts in to out using g.cipher in counter mode. +func (g *gcm) counterCrypt(out, in []byte, counter *[gcmBlockSize]byte) { + var mask [gcmBlockSize]byte + + for len(in) >= gcmBlockSize { + g.cipher.Encrypt(mask[:], counter[:]) + gcmInc32(counter) + + xorWords(out, in, mask[:]) + out = out[gcmBlockSize:] + in = in[gcmBlockSize:] + } + + if len(in) > 0 { + g.cipher.Encrypt(mask[:], counter[:]) + gcmInc32(counter) + xorBytes(out, in, mask[:]) + } +} + +// deriveCounter computes the initial GCM counter state from the given nonce. +// See NIST SP 800-38D, section 7.1. This assumes that counter is filled with +// zeros on entry. +func (g *gcm) deriveCounter(counter *[gcmBlockSize]byte, nonce []byte) { + // GCM has two modes of operation with respect to the initial counter + // state: a "fast path" for 96-bit (12-byte) nonces, and a "slow path" + // for nonces of other lengths. For a 96-bit nonce, the nonce, along + // with a four-byte big-endian counter starting at one, is used + // directly as the starting counter. For other nonce sizes, the counter + // is computed by passing it through the GHASH function. + if len(nonce) == gcmStandardNonceSize { + copy(counter[:], nonce) + counter[gcmBlockSize-1] = 1 + } else { + var y gcmFieldElement + g.update(&y, nonce) + y.high ^= uint64(len(nonce)) * 8 + g.mul(&y) + putUint64(counter[:8], y.low) + putUint64(counter[8:], y.high) + } +} + +// auth calculates GHASH(ciphertext, additionalData), masks the result with +// tagMask and writes the result to out. +func (g *gcm) auth(out, ciphertext, additionalData []byte, tagMask *[gcmBlockSize]byte) { + var y gcmFieldElement + g.update(&y, additionalData) + g.update(&y, ciphertext) + + y.low ^= uint64(len(additionalData)) * 8 + y.high ^= uint64(len(ciphertext)) * 8 + + g.mul(&y) + + putUint64(out, y.low) + putUint64(out[8:], y.high) + + xorWords(out, out, tagMask[:]) +} + +func getUint64(data []byte) uint64 { + r := uint64(data[0])<<56 | + uint64(data[1])<<48 | + uint64(data[2])<<40 | + uint64(data[3])<<32 | + uint64(data[4])<<24 | + uint64(data[5])<<16 | + uint64(data[6])<<8 | + uint64(data[7]) + return r +} + +func putUint64(out []byte, v uint64) { + out[0] = byte(v >> 56) + out[1] = byte(v >> 48) + out[2] = byte(v >> 40) + out[3] = byte(v >> 32) + out[4] = byte(v >> 24) + out[5] = byte(v >> 16) + out[6] = byte(v >> 8) + out[7] = byte(v) +} diff --git a/vendor/github.com/lucas-clemente/aes12/gcm_amd64.s b/vendor/github.com/lucas-clemente/aes12/gcm_amd64.s new file mode 100644 index 0000000..c25badd --- /dev/null +++ b/vendor/github.com/lucas-clemente/aes12/gcm_amd64.s @@ -0,0 +1,1277 @@ +// 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. + +// This is an optimized implementation of AES-GCM using AES-NI and CLMUL-NI +// The implementation uses some optimization as described in: +// [1] Gueron, S., Kounavis, M.E.: Intel® Carry-Less Multiplication +// Instruction and its Usage for Computing the GCM Mode rev. 2.02 +// [2] Gueron, S., Krasnov, V.: Speeding up Counter Mode in Software and +// Hardware + +#include "textflag.h" + +#define B0 X0 +#define B1 X1 +#define B2 X2 +#define B3 X3 +#define B4 X4 +#define B5 X5 +#define B6 X6 +#define B7 X7 + +#define ACC0 X8 +#define ACC1 X9 +#define ACCM X10 + +#define T0 X11 +#define T1 X12 +#define T2 X13 +#define POLY X14 +#define BSWAP X15 + +DATA bswapMask<>+0x00(SB)/8, $0x08090a0b0c0d0e0f +DATA bswapMask<>+0x08(SB)/8, $0x0001020304050607 + +DATA gcmPoly<>+0x00(SB)/8, $0x0000000000000001 +DATA gcmPoly<>+0x08(SB)/8, $0xc200000000000000 + +DATA andMask<>+0x00(SB)/8, $0x00000000000000ff +DATA andMask<>+0x08(SB)/8, $0x0000000000000000 +DATA andMask<>+0x10(SB)/8, $0x000000000000ffff +DATA andMask<>+0x18(SB)/8, $0x0000000000000000 +DATA andMask<>+0x20(SB)/8, $0x0000000000ffffff +DATA andMask<>+0x28(SB)/8, $0x0000000000000000 +DATA andMask<>+0x30(SB)/8, $0x00000000ffffffff +DATA andMask<>+0x38(SB)/8, $0x0000000000000000 +DATA andMask<>+0x40(SB)/8, $0x000000ffffffffff +DATA andMask<>+0x48(SB)/8, $0x0000000000000000 +DATA andMask<>+0x50(SB)/8, $0x0000ffffffffffff +DATA andMask<>+0x58(SB)/8, $0x0000000000000000 +DATA andMask<>+0x60(SB)/8, $0x00ffffffffffffff +DATA andMask<>+0x68(SB)/8, $0x0000000000000000 +DATA andMask<>+0x70(SB)/8, $0xffffffffffffffff +DATA andMask<>+0x78(SB)/8, $0x0000000000000000 +DATA andMask<>+0x80(SB)/8, $0xffffffffffffffff +DATA andMask<>+0x88(SB)/8, $0x00000000000000ff +DATA andMask<>+0x90(SB)/8, $0xffffffffffffffff +DATA andMask<>+0x98(SB)/8, $0x000000000000ffff +DATA andMask<>+0xa0(SB)/8, $0xffffffffffffffff +DATA andMask<>+0xa8(SB)/8, $0x0000000000ffffff +DATA andMask<>+0xb0(SB)/8, $0xffffffffffffffff +DATA andMask<>+0xb8(SB)/8, $0x00000000ffffffff +DATA andMask<>+0xc0(SB)/8, $0xffffffffffffffff +DATA andMask<>+0xc8(SB)/8, $0x000000ffffffffff +DATA andMask<>+0xd0(SB)/8, $0xffffffffffffffff +DATA andMask<>+0xd8(SB)/8, $0x0000ffffffffffff +DATA andMask<>+0xe0(SB)/8, $0xffffffffffffffff +DATA andMask<>+0xe8(SB)/8, $0x00ffffffffffffff + +GLOBL bswapMask<>(SB), (NOPTR+RODATA), $16 +GLOBL gcmPoly<>(SB), (NOPTR+RODATA), $16 +GLOBL andMask<>(SB), (NOPTR+RODATA), $240 + +// func hasGCMAsm() bool +// returns whether AES-NI AND CLMUL-NI are supported +TEXT ·hasGCMAsm(SB),NOSPLIT,$0 + XORQ AX, AX + INCL AX + CPUID + MOVQ CX, DX + SHRQ $25, CX + SHRQ $1, DX + ANDQ DX, CX + ANDQ $1, CX + MOVB CX, ret+0(FP) + RET + +// func aesEncBlock(dst, src *[16]byte, ks []uint32) +TEXT ·aesEncBlock(SB),NOSPLIT,$0 + MOVQ dst+0(FP), DI + MOVQ src+8(FP), SI + MOVQ ks_base+16(FP), DX + MOVQ ks_len+24(FP), CX + + SHRQ $2, CX + DECQ CX + + MOVOU (SI), X0 + MOVOU (16*0)(DX), X1 + PXOR X1, X0 + MOVOU (16*1)(DX), X1 + AESENC X1, X0 + MOVOU (16*2)(DX), X1 + AESENC X1, X0 + MOVOU (16*3)(DX), X1 + AESENC X1, X0 + MOVOU (16*4)(DX), X1 + AESENC X1, X0 + MOVOU (16*5)(DX), X1 + AESENC X1, X0 + MOVOU (16*6)(DX), X1 + AESENC X1, X0 + MOVOU (16*7)(DX), X1 + AESENC X1, X0 + MOVOU (16*8)(DX), X1 + AESENC X1, X0 + MOVOU (16*9)(DX), X1 + AESENC X1, X0 + MOVOU (16*10)(DX), X1 + CMPQ CX, $12 + JB encLast + AESENC X1, X0 + MOVOU (16*11)(DX), X1 + AESENC X1, X0 + MOVOU (16*12)(DX), X1 + JE encLast + AESENC X1, X0 + MOVOU (16*13)(DX), X1 + AESENC X1, X0 + MOVOU (16*14)(DX), X1 + +encLast: + AESENCLAST X1, X0 + MOVOU X0, (DI) + + RET + +// func gcmAesFinish(productTable *[256]byte, tagMask, T *[16]byte, pLen, dLen uint64) +TEXT ·gcmAesFinish(SB),NOSPLIT,$0 +#define pTbl DI +#define tMsk SI +#define tPtr DX +#define plen AX +#define dlen CX + + MOVQ productTable+0(FP), pTbl + MOVQ tagMask+8(FP), tMsk + MOVQ T+16(FP), tPtr + MOVQ pLen+24(FP), plen + MOVQ dLen+32(FP), dlen + + MOVOU (tPtr), ACC0 + MOVOU (tMsk), T2 + + MOVOU bswapMask<>(SB), BSWAP + MOVOU gcmPoly<>(SB), POLY + + SHLQ $3, plen + SHLQ $3, dlen + + MOVQ plen, B0 + PINSRQ $1, dlen, B0 + + PXOR ACC0, B0 + + MOVOU (16*14)(pTbl), ACC0 + MOVOU (16*15)(pTbl), ACCM + MOVOU ACC0, ACC1 + + PCLMULQDQ $0x00, B0, ACC0 + PCLMULQDQ $0x11, B0, ACC1 + PSHUFD $78, B0, T0 + PXOR B0, T0 + PCLMULQDQ $0x00, T0, ACCM + + PXOR ACC0, ACCM + PXOR ACC1, ACCM + MOVOU ACCM, T0 + PSRLDQ $8, ACCM + PSLLDQ $8, T0 + PXOR ACCM, ACC1 + PXOR T0, ACC0 + + MOVOU POLY, T0 + PCLMULQDQ $0x01, ACC0, T0 + PSHUFD $78, ACC0, ACC0 + PXOR T0, ACC0 + + MOVOU POLY, T0 + PCLMULQDQ $0x01, ACC0, T0 + PSHUFD $78, ACC0, ACC0 + PXOR T0, ACC0 + + PXOR ACC1, ACC0 + + PSHUFB BSWAP, ACC0 + PXOR T2, ACC0 + MOVOU ACC0, (tPtr) + + RET +#undef pTbl +#undef tMsk +#undef tPtr +#undef plen +#undef dlen + +// func gcmAesInit(productTable *[256]byte, ks []uint32) +TEXT ·gcmAesInit(SB),NOSPLIT,$0 +#define dst DI +#define KS SI +#define NR DX + + MOVQ productTable+0(FP), dst + MOVQ ks_base+8(FP), KS + MOVQ ks_len+16(FP), NR + + SHRQ $2, NR + DECQ NR + + MOVOU bswapMask<>(SB), BSWAP + MOVOU gcmPoly<>(SB), POLY + + // Encrypt block 0, with the AES key to generate the hash key H + MOVOU (16*0)(KS), B0 + MOVOU (16*1)(KS), T0 + AESENC T0, B0 + MOVOU (16*2)(KS), T0 + AESENC T0, B0 + MOVOU (16*3)(KS), T0 + AESENC T0, B0 + MOVOU (16*4)(KS), T0 + AESENC T0, B0 + MOVOU (16*5)(KS), T0 + AESENC T0, B0 + MOVOU (16*6)(KS), T0 + AESENC T0, B0 + MOVOU (16*7)(KS), T0 + AESENC T0, B0 + MOVOU (16*8)(KS), T0 + AESENC T0, B0 + MOVOU (16*9)(KS), T0 + AESENC T0, B0 + MOVOU (16*10)(KS), T0 + CMPQ NR, $12 + JB initEncLast + AESENC T0, B0 + MOVOU (16*11)(KS), T0 + AESENC T0, B0 + MOVOU (16*12)(KS), T0 + JE initEncLast + AESENC T0, B0 + MOVOU (16*13)(KS), T0 + AESENC T0, B0 + MOVOU (16*14)(KS), T0 +initEncLast: + AESENCLAST T0, B0 + + PSHUFB BSWAP, B0 + // H * 2 + PSHUFD $0xff, B0, T0 + MOVOU B0, T1 + PSRAL $31, T0 + PAND POLY, T0 + PSRLL $31, T1 + PSLLDQ $4, T1 + PSLLL $1, B0 + PXOR T0, B0 + PXOR T1, B0 + // Karatsuba pre-computations + MOVOU B0, (16*14)(dst) + PSHUFD $78, B0, B1 + PXOR B0, B1 + MOVOU B1, (16*15)(dst) + + MOVOU B0, B2 + MOVOU B1, B3 + // Now prepare powers of H and pre-computations for them + MOVQ $7, AX + +initLoop: + MOVOU B2, T0 + MOVOU B2, T1 + MOVOU B3, T2 + PCLMULQDQ $0x00, B0, T0 + PCLMULQDQ $0x11, B0, T1 + PCLMULQDQ $0x00, B1, T2 + + PXOR T0, T2 + PXOR T1, T2 + MOVOU T2, B4 + PSLLDQ $8, B4 + PSRLDQ $8, T2 + PXOR B4, T0 + PXOR T2, T1 + + MOVOU POLY, B2 + PCLMULQDQ $0x01, T0, B2 + PSHUFD $78, T0, T0 + PXOR B2, T0 + MOVOU POLY, B2 + PCLMULQDQ $0x01, T0, B2 + PSHUFD $78, T0, T0 + PXOR T0, B2 + PXOR T1, B2 + + MOVOU B2, (16*12)(dst) + PSHUFD $78, B2, B3 + PXOR B2, B3 + MOVOU B3, (16*13)(dst) + + DECQ AX + LEAQ (-16*2)(dst), dst + JNE initLoop + + RET +#undef NR +#undef KS +#undef dst + +// func gcmAesData(productTable *[256]byte, data []byte, T *[16]byte) +TEXT ·gcmAesData(SB),NOSPLIT,$0 +#define pTbl DI +#define aut SI +#define tPtr CX +#define autLen DX + + MOVQ productTable+0(FP), pTbl + MOVQ data_base+8(FP), aut + MOVQ data_len+16(FP), autLen + MOVQ T+32(FP), tPtr + + PXOR ACC0, ACC0 + MOVOU bswapMask<>(SB), BSWAP + MOVOU gcmPoly<>(SB), POLY + + MOVOU (16*14)(pTbl), T1 + MOVOU (16*15)(pTbl), T2 + + TESTQ autLen, autLen + JEQ dataBail + + CMPQ autLen, $13 // optimize the TLS case + JNE dataSinglesLoop + + PXOR B0, B0 + MOVQ (aut), B0 + PINSRD $2, 8(aut), B0 + PINSRB $12, 12(aut), B0 + XORQ autLen, autLen + JMP dataMul + +dataSinglesLoop: + + CMPQ autLen, $16 + JB dataEnd + SUBQ $16, autLen + + MOVOU (aut), B0 +dataMul: + PSHUFB BSWAP, B0 + PXOR ACC0, B0 + + MOVOU T1, ACC0 + MOVOU T2, ACCM + MOVOU T1, ACC1 + + PSHUFD $78, B0, T0 + PXOR B0, T0 + PCLMULQDQ $0x00, B0, ACC0 + PCLMULQDQ $0x11, B0, ACC1 + PCLMULQDQ $0x00, T0, ACCM + + PXOR ACC0, ACCM + PXOR ACC1, ACCM + MOVOU ACCM, T0 + PSRLDQ $8, ACCM + PSLLDQ $8, T0 + PXOR ACCM, ACC1 + PXOR T0, ACC0 + + MOVOU POLY, T0 + PCLMULQDQ $0x01, ACC0, T0 + PSHUFD $78, ACC0, ACC0 + PXOR T0, ACC0 + + MOVOU POLY, T0 + PCLMULQDQ $0x01, ACC0, T0 + PSHUFD $78, ACC0, ACC0 + PXOR T0, ACC0 + PXOR ACC1, ACC0 + + LEAQ 16(aut), aut + + JMP dataSinglesLoop + +dataEnd: + + TESTQ autLen, autLen + JEQ dataBail + + PXOR B0, B0 + LEAQ -1(aut)(autLen*1), aut + +dataLoadLoop: + + PSLLDQ $1, B0 + PINSRB $0, (aut), B0 + + LEAQ -1(aut), aut + DECQ autLen + JNE dataLoadLoop + + JMP dataMul + +dataBail: + MOVOU ACC0, (tPtr) + RET +#undef pTbl +#undef aut +#undef tPtr +#undef autLen + +// func gcmAesEnc(productTable *[256]byte, dst, src []byte, ctr, T *[16]byte, ks []uint32) +TEXT ·gcmAesEnc(SB),0,$256-96 +#define pTbl DI +#define ctx DX +#define ctrPtr CX +#define ptx SI +#define ks AX +#define tPtr R8 +#define ptxLen R9 +#define aluCTR R10 +#define aluTMP R11 +#define aluK R12 +#define NR R13 + +#define increment(i) ADDL $1, aluCTR; MOVL aluCTR, aluTMP; XORL aluK, aluTMP; BSWAPL aluTMP; MOVL aluTMP, (3*4 + 8*16 + i*16)(SP) +#define aesRnd(k) AESENC k, B0; AESENC k, B1; AESENC k, B2; AESENC k, B3; AESENC k, B4; AESENC k, B5; AESENC k, B6; AESENC k, B7 +#define aesRound(i) MOVOU (16*i)(ks), T0;AESENC T0, B0; AESENC T0, B1; AESENC T0, B2; AESENC T0, B3; AESENC T0, B4; AESENC T0, B5; AESENC T0, B6; AESENC T0, B7 +#define aesRndLast(k) AESENCLAST k, B0; AESENCLAST k, B1; AESENCLAST k, B2; AESENCLAST k, B3; AESENCLAST k, B4; AESENCLAST k, B5; AESENCLAST k, B6; AESENCLAST k, B7 +#define reduceRound(a) MOVOU POLY, T0; PCLMULQDQ $0x01, a, T0; PSHUFD $78, a, a; PXOR T0, a +#define combinedRound(i) \ + MOVOU (16*i)(ks), T0;\ + AESENC T0, B0;\ + AESENC T0, B1;\ + AESENC T0, B2;\ + AESENC T0, B3;\ + MOVOU (16*(i*2))(pTbl), T1;\ + MOVOU T1, T2;\ + AESENC T0, B4;\ + AESENC T0, B5;\ + AESENC T0, B6;\ + AESENC T0, B7;\ + MOVOU (16*i)(SP), T0;\ + PCLMULQDQ $0x00, T0, T1;\ + PXOR T1, ACC0;\ + PSHUFD $78, T0, T1;\ + PCLMULQDQ $0x11, T0, T2;\ + PXOR T1, T0;\ + PXOR T2, ACC1;\ + MOVOU (16*(i*2+1))(pTbl), T2;\ + PCLMULQDQ $0x00, T2, T0;\ + PXOR T0, ACCM +#define mulRound(i) \ + MOVOU (16*i)(SP), T0;\ + MOVOU (16*(i*2))(pTbl), T1;\ + MOVOU T1, T2;\ + PCLMULQDQ $0x00, T0, T1;\ + PXOR T1, ACC0;\ + PCLMULQDQ $0x11, T0, T2;\ + PXOR T2, ACC1;\ + PSHUFD $78, T0, T1;\ + PXOR T1, T0;\ + MOVOU (16*(i*2+1))(pTbl), T1;\ + PCLMULQDQ $0x00, T0, T1;\ + PXOR T1, ACCM + + MOVQ productTable+0(FP), pTbl + MOVQ dst+8(FP), ctx + MOVQ src_base+32(FP), ptx + MOVQ src_len+40(FP), ptxLen + MOVQ ctr+56(FP), ctrPtr + MOVQ T+64(FP), tPtr + MOVQ ks_base+72(FP), ks + MOVQ ks_len+80(FP), NR + + SHRQ $2, NR + DECQ NR + + MOVOU bswapMask<>(SB), BSWAP + MOVOU gcmPoly<>(SB), POLY + + MOVOU (tPtr), ACC0 + PXOR ACC1, ACC1 + PXOR ACCM, ACCM + MOVOU (ctrPtr), B0 + MOVL (3*4)(ctrPtr), aluCTR + MOVOU (ks), T0 + MOVL (3*4)(ks), aluK + BSWAPL aluCTR + BSWAPL aluK + + PXOR B0, T0 + MOVOU T0, (8*16 + 0*16)(SP) + increment(0) + + CMPQ ptxLen, $128 + JB gcmAesEncSingles + SUBQ $128, ptxLen + + // We have at least 8 blocks to encrypt, prepare the rest of the counters + MOVOU T0, (8*16 + 1*16)(SP) + increment(1) + MOVOU T0, (8*16 + 2*16)(SP) + increment(2) + MOVOU T0, (8*16 + 3*16)(SP) + increment(3) + MOVOU T0, (8*16 + 4*16)(SP) + increment(4) + MOVOU T0, (8*16 + 5*16)(SP) + increment(5) + MOVOU T0, (8*16 + 6*16)(SP) + increment(6) + MOVOU T0, (8*16 + 7*16)(SP) + increment(7) + + MOVOU (8*16 + 0*16)(SP), B0 + MOVOU (8*16 + 1*16)(SP), B1 + MOVOU (8*16 + 2*16)(SP), B2 + MOVOU (8*16 + 3*16)(SP), B3 + MOVOU (8*16 + 4*16)(SP), B4 + MOVOU (8*16 + 5*16)(SP), B5 + MOVOU (8*16 + 6*16)(SP), B6 + MOVOU (8*16 + 7*16)(SP), B7 + + aesRound(1) + increment(0) + aesRound(2) + increment(1) + aesRound(3) + increment(2) + aesRound(4) + increment(3) + aesRound(5) + increment(4) + aesRound(6) + increment(5) + aesRound(7) + increment(6) + aesRound(8) + increment(7) + aesRound(9) + MOVOU (16*10)(ks), T0 + CMPQ NR, $12 + JB encLast1 + aesRnd(T0) + aesRound(11) + MOVOU (16*12)(ks), T0 + JE encLast1 + aesRnd(T0) + aesRound(13) + MOVOU (16*14)(ks), T0 +encLast1: + aesRndLast(T0) + + MOVOU (16*0)(ptx), T0 + PXOR T0, B0 + MOVOU (16*1)(ptx), T0 + PXOR T0, B1 + MOVOU (16*2)(ptx), T0 + PXOR T0, B2 + MOVOU (16*3)(ptx), T0 + PXOR T0, B3 + MOVOU (16*4)(ptx), T0 + PXOR T0, B4 + MOVOU (16*5)(ptx), T0 + PXOR T0, B5 + MOVOU (16*6)(ptx), T0 + PXOR T0, B6 + MOVOU (16*7)(ptx), T0 + PXOR T0, B7 + + MOVOU B0, (16*0)(ctx) + PSHUFB BSWAP, B0 + PXOR ACC0, B0 + MOVOU B1, (16*1)(ctx) + PSHUFB BSWAP, B1 + MOVOU B2, (16*2)(ctx) + PSHUFB BSWAP, B2 + MOVOU B3, (16*3)(ctx) + PSHUFB BSWAP, B3 + MOVOU B4, (16*4)(ctx) + PSHUFB BSWAP, B4 + MOVOU B5, (16*5)(ctx) + PSHUFB BSWAP, B5 + MOVOU B6, (16*6)(ctx) + PSHUFB BSWAP, B6 + MOVOU B7, (16*7)(ctx) + PSHUFB BSWAP, B7 + + MOVOU B0, (16*0)(SP) + MOVOU B1, (16*1)(SP) + MOVOU B2, (16*2)(SP) + MOVOU B3, (16*3)(SP) + MOVOU B4, (16*4)(SP) + MOVOU B5, (16*5)(SP) + MOVOU B6, (16*6)(SP) + MOVOU B7, (16*7)(SP) + + LEAQ 128(ptx), ptx + LEAQ 128(ctx), ctx + +gcmAesEncOctetsLoop: + + CMPQ ptxLen, $128 + JB gcmAesEncOctetsEnd + SUBQ $128, ptxLen + + MOVOU (8*16 + 0*16)(SP), B0 + MOVOU (8*16 + 1*16)(SP), B1 + MOVOU (8*16 + 2*16)(SP), B2 + MOVOU (8*16 + 3*16)(SP), B3 + MOVOU (8*16 + 4*16)(SP), B4 + MOVOU (8*16 + 5*16)(SP), B5 + MOVOU (8*16 + 6*16)(SP), B6 + MOVOU (8*16 + 7*16)(SP), B7 + + MOVOU (16*0)(SP), T0 + PSHUFD $78, T0, T1 + PXOR T0, T1 + + MOVOU (16*0)(pTbl), ACC0 + MOVOU (16*1)(pTbl), ACCM + MOVOU ACC0, ACC1 + + PCLMULQDQ $0x00, T1, ACCM + PCLMULQDQ $0x00, T0, ACC0 + PCLMULQDQ $0x11, T0, ACC1 + + combinedRound(1) + increment(0) + combinedRound(2) + increment(1) + combinedRound(3) + increment(2) + combinedRound(4) + increment(3) + combinedRound(5) + increment(4) + combinedRound(6) + increment(5) + combinedRound(7) + increment(6) + + aesRound(8) + increment(7) + + PXOR ACC0, ACCM + PXOR ACC1, ACCM + MOVOU ACCM, T0 + PSRLDQ $8, ACCM + PSLLDQ $8, T0 + PXOR ACCM, ACC1 + PXOR T0, ACC0 + + reduceRound(ACC0) + aesRound(9) + + reduceRound(ACC0) + PXOR ACC1, ACC0 + + MOVOU (16*10)(ks), T0 + CMPQ NR, $12 + JB encLast2 + aesRnd(T0) + aesRound(11) + MOVOU (16*12)(ks), T0 + JE encLast2 + aesRnd(T0) + aesRound(13) + MOVOU (16*14)(ks), T0 +encLast2: + aesRndLast(T0) + + MOVOU (16*0)(ptx), T0 + PXOR T0, B0 + MOVOU (16*1)(ptx), T0 + PXOR T0, B1 + MOVOU (16*2)(ptx), T0 + PXOR T0, B2 + MOVOU (16*3)(ptx), T0 + PXOR T0, B3 + MOVOU (16*4)(ptx), T0 + PXOR T0, B4 + MOVOU (16*5)(ptx), T0 + PXOR T0, B5 + MOVOU (16*6)(ptx), T0 + PXOR T0, B6 + MOVOU (16*7)(ptx), T0 + PXOR T0, B7 + + MOVOU B0, (16*0)(ctx) + PSHUFB BSWAP, B0 + PXOR ACC0, B0 + MOVOU B1, (16*1)(ctx) + PSHUFB BSWAP, B1 + MOVOU B2, (16*2)(ctx) + PSHUFB BSWAP, B2 + MOVOU B3, (16*3)(ctx) + PSHUFB BSWAP, B3 + MOVOU B4, (16*4)(ctx) + PSHUFB BSWAP, B4 + MOVOU B5, (16*5)(ctx) + PSHUFB BSWAP, B5 + MOVOU B6, (16*6)(ctx) + PSHUFB BSWAP, B6 + MOVOU B7, (16*7)(ctx) + PSHUFB BSWAP, B7 + + MOVOU B0, (16*0)(SP) + MOVOU B1, (16*1)(SP) + MOVOU B2, (16*2)(SP) + MOVOU B3, (16*3)(SP) + MOVOU B4, (16*4)(SP) + MOVOU B5, (16*5)(SP) + MOVOU B6, (16*6)(SP) + MOVOU B7, (16*7)(SP) + + LEAQ 128(ptx), ptx + LEAQ 128(ctx), ctx + + JMP gcmAesEncOctetsLoop + +gcmAesEncOctetsEnd: + + MOVOU (16*0)(SP), T0 + MOVOU (16*0)(pTbl), ACC0 + MOVOU (16*1)(pTbl), ACCM + MOVOU ACC0, ACC1 + PSHUFD $78, T0, T1 + PXOR T0, T1 + PCLMULQDQ $0x00, T0, ACC0 + PCLMULQDQ $0x11, T0, ACC1 + PCLMULQDQ $0x00, T1, ACCM + + mulRound(1) + mulRound(2) + mulRound(3) + mulRound(4) + mulRound(5) + mulRound(6) + mulRound(7) + + PXOR ACC0, ACCM + PXOR ACC1, ACCM + MOVOU ACCM, T0 + PSRLDQ $8, ACCM + PSLLDQ $8, T0 + PXOR ACCM, ACC1 + PXOR T0, ACC0 + + reduceRound(ACC0) + reduceRound(ACC0) + PXOR ACC1, ACC0 + + TESTQ ptxLen, ptxLen + JE gcmAesEncDone + + SUBQ $7, aluCTR + +gcmAesEncSingles: + + MOVOU (16*1)(ks), B1 + MOVOU (16*2)(ks), B2 + MOVOU (16*3)(ks), B3 + MOVOU (16*4)(ks), B4 + MOVOU (16*5)(ks), B5 + MOVOU (16*6)(ks), B6 + MOVOU (16*7)(ks), B7 + + MOVOU (16*14)(pTbl), T2 + +gcmAesEncSinglesLoop: + + CMPQ ptxLen, $16 + JB gcmAesEncTail + SUBQ $16, ptxLen + + MOVOU (8*16 + 0*16)(SP), B0 + increment(0) + + AESENC B1, B0 + AESENC B2, B0 + AESENC B3, B0 + AESENC B4, B0 + AESENC B5, B0 + AESENC B6, B0 + AESENC B7, B0 + MOVOU (16*8)(ks), T0 + AESENC T0, B0 + MOVOU (16*9)(ks), T0 + AESENC T0, B0 + MOVOU (16*10)(ks), T0 + CMPQ NR, $12 + JB encLast3 + AESENC T0, B0 + MOVOU (16*11)(ks), T0 + AESENC T0, B0 + MOVOU (16*12)(ks), T0 + JE encLast3 + AESENC T0, B0 + MOVOU (16*13)(ks), T0 + AESENC T0, B0 + MOVOU (16*14)(ks), T0 +encLast3: + AESENCLAST T0, B0 + + MOVOU (ptx), T0 + PXOR T0, B0 + MOVOU B0, (ctx) + + PSHUFB BSWAP, B0 + PXOR ACC0, B0 + + MOVOU T2, ACC0 + MOVOU T2, ACC1 + MOVOU (16*15)(pTbl), ACCM + + PSHUFD $78, B0, T0 + PXOR B0, T0 + PCLMULQDQ $0x00, B0, ACC0 + PCLMULQDQ $0x11, B0, ACC1 + PCLMULQDQ $0x00, T0, ACCM + + PXOR ACC0, ACCM + PXOR ACC1, ACCM + MOVOU ACCM, T0 + PSRLDQ $8, ACCM + PSLLDQ $8, T0 + PXOR ACCM, ACC1 + PXOR T0, ACC0 + + reduceRound(ACC0) + reduceRound(ACC0) + PXOR ACC1, ACC0 + + LEAQ (16*1)(ptx), ptx + LEAQ (16*1)(ctx), ctx + + JMP gcmAesEncSinglesLoop + +gcmAesEncTail: + TESTQ ptxLen, ptxLen + JE gcmAesEncDone + + MOVOU (8*16 + 0*16)(SP), B0 + AESENC B1, B0 + AESENC B2, B0 + AESENC B3, B0 + AESENC B4, B0 + AESENC B5, B0 + AESENC B6, B0 + AESENC B7, B0 + MOVOU (16*8)(ks), T0 + AESENC T0, B0 + MOVOU (16*9)(ks), T0 + AESENC T0, B0 + MOVOU (16*10)(ks), T0 + CMPQ NR, $12 + JB encLast4 + AESENC T0, B0 + MOVOU (16*11)(ks), T0 + AESENC T0, B0 + MOVOU (16*12)(ks), T0 + JE encLast4 + AESENC T0, B0 + MOVOU (16*13)(ks), T0 + AESENC T0, B0 + MOVOU (16*14)(ks), T0 +encLast4: + AESENCLAST T0, B0 + MOVOU B0, T0 + + LEAQ -1(ptx)(ptxLen*1), ptx + + MOVQ ptxLen, aluTMP + SHLQ $4, aluTMP + + LEAQ andMask<>(SB), aluCTR + MOVOU -16(aluCTR)(aluTMP*1), T1 + + PXOR B0, B0 +ptxLoadLoop: + PSLLDQ $1, B0 + PINSRB $0, (ptx), B0 + LEAQ -1(ptx), ptx + DECQ ptxLen + JNE ptxLoadLoop + + PXOR T0, B0 + PAND T1, B0 + MOVOU B0, (ctx) // I assume there is always space, due to TAG in the end of the CT + + PSHUFB BSWAP, B0 + PXOR ACC0, B0 + + MOVOU T2, ACC0 + MOVOU T2, ACC1 + MOVOU (16*15)(pTbl), ACCM + + PSHUFD $78, B0, T0 + PXOR B0, T0 + PCLMULQDQ $0x00, B0, ACC0 + PCLMULQDQ $0x11, B0, ACC1 + PCLMULQDQ $0x00, T0, ACCM + + PXOR ACC0, ACCM + PXOR ACC1, ACCM + MOVOU ACCM, T0 + PSRLDQ $8, ACCM + PSLLDQ $8, T0 + PXOR ACCM, ACC1 + PXOR T0, ACC0 + + reduceRound(ACC0) + reduceRound(ACC0) + PXOR ACC1, ACC0 + +gcmAesEncDone: + MOVOU ACC0, (tPtr) + RET +#undef increment + +// func gcmAesDec(productTable *[256]byte, dst, src []byte, ctr, T *[16]byte, ks []uint32) +TEXT ·gcmAesDec(SB),0,$128-96 +#define increment(i) ADDL $1, aluCTR; MOVL aluCTR, aluTMP; XORL aluK, aluTMP; BSWAPL aluTMP; MOVL aluTMP, (3*4 + i*16)(SP) +#define combinedDecRound(i) \ + MOVOU (16*i)(ks), T0;\ + AESENC T0, B0;\ + AESENC T0, B1;\ + AESENC T0, B2;\ + AESENC T0, B3;\ + MOVOU (16*(i*2))(pTbl), T1;\ + MOVOU T1, T2;\ + AESENC T0, B4;\ + AESENC T0, B5;\ + AESENC T0, B6;\ + AESENC T0, B7;\ + MOVOU (16*i)(ctx), T0;\ + PSHUFB BSWAP, T0;\ + PCLMULQDQ $0x00, T0, T1;\ + PXOR T1, ACC0;\ + PSHUFD $78, T0, T1;\ + PCLMULQDQ $0x11, T0, T2;\ + PXOR T1, T0;\ + PXOR T2, ACC1;\ + MOVOU (16*(i*2+1))(pTbl), T2;\ + PCLMULQDQ $0x00, T2, T0;\ + PXOR T0, ACCM + + MOVQ productTable+0(FP), pTbl + MOVQ dst+8(FP), ptx + MOVQ src_base+32(FP), ctx + MOVQ src_len+40(FP), ptxLen + MOVQ ctr+56(FP), ctrPtr + MOVQ T+64(FP), tPtr + MOVQ ks_base+72(FP), ks + MOVQ ks_len+80(FP), NR + + SHRQ $2, NR + DECQ NR + + MOVOU bswapMask<>(SB), BSWAP + MOVOU gcmPoly<>(SB), POLY + + MOVOU (tPtr), ACC0 + PXOR ACC1, ACC1 + PXOR ACCM, ACCM + MOVOU (ctrPtr), B0 + MOVL (3*4)(ctrPtr), aluCTR + MOVOU (ks), T0 + MOVL (3*4)(ks), aluK + BSWAPL aluCTR + BSWAPL aluK + + PXOR B0, T0 + MOVOU T0, (0*16)(SP) + increment(0) + + CMPQ ptxLen, $128 + JB gcmAesDecSingles + + MOVOU T0, (1*16)(SP) + increment(1) + MOVOU T0, (2*16)(SP) + increment(2) + MOVOU T0, (3*16)(SP) + increment(3) + MOVOU T0, (4*16)(SP) + increment(4) + MOVOU T0, (5*16)(SP) + increment(5) + MOVOU T0, (6*16)(SP) + increment(6) + MOVOU T0, (7*16)(SP) + increment(7) + +gcmAesDecOctetsLoop: + + CMPQ ptxLen, $128 + JB gcmAesDecEndOctets + SUBQ $128, ptxLen + + MOVOU (0*16)(SP), B0 + MOVOU (1*16)(SP), B1 + MOVOU (2*16)(SP), B2 + MOVOU (3*16)(SP), B3 + MOVOU (4*16)(SP), B4 + MOVOU (5*16)(SP), B5 + MOVOU (6*16)(SP), B6 + MOVOU (7*16)(SP), B7 + + MOVOU (16*0)(ctx), T0 + PSHUFB BSWAP, T0 + PXOR ACC0, T0 + PSHUFD $78, T0, T1 + PXOR T0, T1 + + MOVOU (16*0)(pTbl), ACC0 + MOVOU (16*1)(pTbl), ACCM + MOVOU ACC0, ACC1 + + PCLMULQDQ $0x00, T1, ACCM + PCLMULQDQ $0x00, T0, ACC0 + PCLMULQDQ $0x11, T0, ACC1 + + combinedDecRound(1) + increment(0) + combinedDecRound(2) + increment(1) + combinedDecRound(3) + increment(2) + combinedDecRound(4) + increment(3) + combinedDecRound(5) + increment(4) + combinedDecRound(6) + increment(5) + combinedDecRound(7) + increment(6) + + aesRound(8) + increment(7) + + PXOR ACC0, ACCM + PXOR ACC1, ACCM + MOVOU ACCM, T0 + PSRLDQ $8, ACCM + PSLLDQ $8, T0 + PXOR ACCM, ACC1 + PXOR T0, ACC0 + + reduceRound(ACC0) + aesRound(9) + + reduceRound(ACC0) + PXOR ACC1, ACC0 + + MOVOU (16*10)(ks), T0 + CMPQ NR, $12 + JB decLast1 + aesRnd(T0) + aesRound(11) + MOVOU (16*12)(ks), T0 + JE decLast1 + aesRnd(T0) + aesRound(13) + MOVOU (16*14)(ks), T0 +decLast1: + aesRndLast(T0) + + MOVOU (16*0)(ctx), T0 + PXOR T0, B0 + MOVOU (16*1)(ctx), T0 + PXOR T0, B1 + MOVOU (16*2)(ctx), T0 + PXOR T0, B2 + MOVOU (16*3)(ctx), T0 + PXOR T0, B3 + MOVOU (16*4)(ctx), T0 + PXOR T0, B4 + MOVOU (16*5)(ctx), T0 + PXOR T0, B5 + MOVOU (16*6)(ctx), T0 + PXOR T0, B6 + MOVOU (16*7)(ctx), T0 + PXOR T0, B7 + + MOVOU B0, (16*0)(ptx) + MOVOU B1, (16*1)(ptx) + MOVOU B2, (16*2)(ptx) + MOVOU B3, (16*3)(ptx) + MOVOU B4, (16*4)(ptx) + MOVOU B5, (16*5)(ptx) + MOVOU B6, (16*6)(ptx) + MOVOU B7, (16*7)(ptx) + + LEAQ 128(ptx), ptx + LEAQ 128(ctx), ctx + + JMP gcmAesDecOctetsLoop + +gcmAesDecEndOctets: + + SUBQ $7, aluCTR + +gcmAesDecSingles: + + MOVOU (16*1)(ks), B1 + MOVOU (16*2)(ks), B2 + MOVOU (16*3)(ks), B3 + MOVOU (16*4)(ks), B4 + MOVOU (16*5)(ks), B5 + MOVOU (16*6)(ks), B6 + MOVOU (16*7)(ks), B7 + + MOVOU (16*14)(pTbl), T2 + +gcmAesDecSinglesLoop: + + CMPQ ptxLen, $16 + JB gcmAesDecTail + SUBQ $16, ptxLen + + MOVOU (ctx), B0 + MOVOU B0, T1 + PSHUFB BSWAP, B0 + PXOR ACC0, B0 + + MOVOU T2, ACC0 + MOVOU T2, ACC1 + MOVOU (16*15)(pTbl), ACCM + + PCLMULQDQ $0x00, B0, ACC0 + PCLMULQDQ $0x11, B0, ACC1 + PSHUFD $78, B0, T0 + PXOR B0, T0 + PCLMULQDQ $0x00, T0, ACCM + + PXOR ACC0, ACCM + PXOR ACC1, ACCM + MOVOU ACCM, T0 + PSRLDQ $8, ACCM + PSLLDQ $8, T0 + PXOR ACCM, ACC1 + PXOR T0, ACC0 + + reduceRound(ACC0) + reduceRound(ACC0) + PXOR ACC1, ACC0 + + MOVOU (0*16)(SP), B0 + increment(0) + AESENC B1, B0 + AESENC B2, B0 + AESENC B3, B0 + AESENC B4, B0 + AESENC B5, B0 + AESENC B6, B0 + AESENC B7, B0 + MOVOU (16*8)(ks), T0 + AESENC T0, B0 + MOVOU (16*9)(ks), T0 + AESENC T0, B0 + MOVOU (16*10)(ks), T0 + CMPQ NR, $12 + JB decLast2 + AESENC T0, B0 + MOVOU (16*11)(ks), T0 + AESENC T0, B0 + MOVOU (16*12)(ks), T0 + JE decLast2 + AESENC T0, B0 + MOVOU (16*13)(ks), T0 + AESENC T0, B0 + MOVOU (16*14)(ks), T0 +decLast2: + AESENCLAST T0, B0 + + PXOR T1, B0 + MOVOU B0, (ptx) + + LEAQ (16*1)(ptx), ptx + LEAQ (16*1)(ctx), ctx + + JMP gcmAesDecSinglesLoop + +gcmAesDecTail: + + TESTQ ptxLen, ptxLen + JE gcmAesDecDone + + MOVQ ptxLen, aluTMP + SHLQ $4, aluTMP + LEAQ andMask<>(SB), aluCTR + MOVOU -16(aluCTR)(aluTMP*1), T1 + + MOVOU (ctx), B0 // I assume there is TAG attached to the ctx, and there is no read overflow + PAND T1, B0 + + MOVOU B0, T1 + PSHUFB BSWAP, B0 + PXOR ACC0, B0 + + MOVOU (16*14)(pTbl), ACC0 + MOVOU (16*15)(pTbl), ACCM + MOVOU ACC0, ACC1 + + PCLMULQDQ $0x00, B0, ACC0 + PCLMULQDQ $0x11, B0, ACC1 + PSHUFD $78, B0, T0 + PXOR B0, T0 + PCLMULQDQ $0x00, T0, ACCM + + PXOR ACC0, ACCM + PXOR ACC1, ACCM + MOVOU ACCM, T0 + PSRLDQ $8, ACCM + PSLLDQ $8, T0 + PXOR ACCM, ACC1 + PXOR T0, ACC0 + + reduceRound(ACC0) + reduceRound(ACC0) + PXOR ACC1, ACC0 + + MOVOU (0*16)(SP), B0 + increment(0) + AESENC B1, B0 + AESENC B2, B0 + AESENC B3, B0 + AESENC B4, B0 + AESENC B5, B0 + AESENC B6, B0 + AESENC B7, B0 + MOVOU (16*8)(ks), T0 + AESENC T0, B0 + MOVOU (16*9)(ks), T0 + AESENC T0, B0 + MOVOU (16*10)(ks), T0 + CMPQ NR, $12 + JB decLast3 + AESENC T0, B0 + MOVOU (16*11)(ks), T0 + AESENC T0, B0 + MOVOU (16*12)(ks), T0 + JE decLast3 + AESENC T0, B0 + MOVOU (16*13)(ks), T0 + AESENC T0, B0 + MOVOU (16*14)(ks), T0 +decLast3: + AESENCLAST T0, B0 + PXOR T1, B0 + +ptxStoreLoop: + PEXTRB $0, B0, (ptx) + PSRLDQ $1, B0 + LEAQ 1(ptx), ptx + DECQ ptxLen + + JNE ptxStoreLoop + +gcmAesDecDone: + + MOVOU ACC0, (tPtr) + RET diff --git a/vendor/github.com/lucas-clemente/aes12/xor.go b/vendor/github.com/lucas-clemente/aes12/xor.go new file mode 100644 index 0000000..668c13f --- /dev/null +++ b/vendor/github.com/lucas-clemente/aes12/xor.go @@ -0,0 +1,84 @@ +// 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. + +package aes12 + +import ( + "runtime" + "unsafe" +) + +const wordSize = int(unsafe.Sizeof(uintptr(0))) +const supportsUnaligned = runtime.GOARCH == "386" || runtime.GOARCH == "amd64" || runtime.GOARCH == "ppc64" || runtime.GOARCH == "ppc64le" || runtime.GOARCH == "s390x" + +// fastXORBytes xors in bulk. It only works on architectures that +// support unaligned read/writes. +func fastXORBytes(dst, a, b []byte) int { + n := len(a) + if len(b) < n { + n = len(b) + } + + w := n / wordSize + if w > 0 { + dw := *(*[]uintptr)(unsafe.Pointer(&dst)) + aw := *(*[]uintptr)(unsafe.Pointer(&a)) + bw := *(*[]uintptr)(unsafe.Pointer(&b)) + for i := 0; i < w; i++ { + dw[i] = aw[i] ^ bw[i] + } + } + + for i := (n - n%wordSize); i < n; i++ { + dst[i] = a[i] ^ b[i] + } + + return n +} + +func safeXORBytes(dst, a, b []byte) int { + n := len(a) + if len(b) < n { + n = len(b) + } + for i := 0; i < n; i++ { + dst[i] = a[i] ^ b[i] + } + return n +} + +// xorBytes xors the bytes in a and b. The destination is assumed to have enough +// space. Returns the number of bytes xor'd. +func xorBytes(dst, a, b []byte) int { + if supportsUnaligned { + return fastXORBytes(dst, a, b) + } else { + // TODO(hanwen): if (dst, a, b) have common alignment + // we could still try fastXORBytes. It is not clear + // how often this happens, and it's only worth it if + // the block encryption itself is hardware + // accelerated. + return safeXORBytes(dst, a, b) + } +} + +// fastXORWords XORs multiples of 4 or 8 bytes (depending on architecture.) +// The arguments are assumed to be of equal length. +func fastXORWords(dst, a, b []byte) { + dw := *(*[]uintptr)(unsafe.Pointer(&dst)) + aw := *(*[]uintptr)(unsafe.Pointer(&a)) + bw := *(*[]uintptr)(unsafe.Pointer(&b)) + n := len(b) / wordSize + for i := 0; i < n; i++ { + dw[i] = aw[i] ^ bw[i] + } +} + +func xorWords(dst, a, b []byte) { + if supportsUnaligned { + fastXORWords(dst, a, b) + } else { + safeXORBytes(dst, a, b) + } +} diff --git a/vendor/github.com/lucas-clemente/fnv128a/LICENSE b/vendor/github.com/lucas-clemente/fnv128a/LICENSE new file mode 100644 index 0000000..06dc795 --- /dev/null +++ b/vendor/github.com/lucas-clemente/fnv128a/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 Lucas Clemente + +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/lucas-clemente/fnv128a/README.md b/vendor/github.com/lucas-clemente/fnv128a/README.md new file mode 100644 index 0000000..9a5ef49 --- /dev/null +++ b/vendor/github.com/lucas-clemente/fnv128a/README.md @@ -0,0 +1,3 @@ +# fnv128a + +Implementation of the FNV-1a 128bit hash in go diff --git a/vendor/github.com/lucas-clemente/fnv128a/fnv128a.go b/vendor/github.com/lucas-clemente/fnv128a/fnv128a.go new file mode 100644 index 0000000..5921239 --- /dev/null +++ b/vendor/github.com/lucas-clemente/fnv128a/fnv128a.go @@ -0,0 +1,87 @@ +// Package fnv128a implements FNV-1 and FNV-1a, non-cryptographic hash functions +// created by Glenn Fowler, Landon Curt Noll, and Phong Vo. +// See https://en.wikipedia.org/wiki/Fowler-Noll-Vo_hash_function. +// +// Write() algorithm taken and modified from github.com/romain-jacotin/quic +package fnv128a + +import "hash" + +// Hash128 is the common interface implemented by all 128-bit hash functions. +type Hash128 interface { + hash.Hash + Sum128() (uint64, uint64) +} + +type sum128a struct { + v0, v1, v2, v3 uint64 +} + +var _ Hash128 = &sum128a{} + +// New1 returns a new 128-bit FNV-1a hash.Hash. +func New() Hash128 { + s := &sum128a{} + s.Reset() + return s +} + +func (s *sum128a) Reset() { + s.v0 = 0x6295C58D + s.v1 = 0x62B82175 + s.v2 = 0x07BB0142 + s.v3 = 0x6C62272E +} + +func (s *sum128a) Sum128() (uint64, uint64) { + return s.v3<<32 | s.v2, s.v1<<32 | s.v0 +} + +func (s *sum128a) Write(data []byte) (int, error) { + var t0, t1, t2, t3 uint64 + const fnv128PrimeLow = 0x0000013B + const fnv128PrimeShift = 24 + + for _, v := range data { + // xor the bottom with the current octet + s.v0 ^= uint64(v) + + // multiply by the 128 bit FNV magic prime mod 2^128 + // fnv_prime = 309485009821345068724781371 (decimal) + // = 0x0000000001000000000000000000013B (hexadecimal) + // = 0x00000000 0x01000000 0x00000000 0x0000013B (in 4*32 words) + // = 0x0 1<> 32) + t2 += (t1 >> 32) + t3 += (t2 >> 32) + + s.v0 = t0 & 0xffffffff + s.v1 = t1 & 0xffffffff + s.v2 = t2 & 0xffffffff + s.v3 = t3 // & 0xffffffff + // Doing a s.v3 &= 0xffffffff is not really needed since it simply + // removes multiples of 2^128. We can discard these excess bits + // outside of the loop when writing the hash in Little Endian. + } + + return len(data), nil +} + +func (s *sum128a) Size() int { return 16 } + +func (s *sum128a) BlockSize() int { return 1 } + +func (s *sum128a) Sum(in []byte) []byte { + panic("FNV: not supported") +} diff --git a/vendor/github.com/lucas-clemente/quic-go-certificates/LICENSE b/vendor/github.com/lucas-clemente/quic-go-certificates/LICENSE new file mode 100644 index 0000000..2c08ae2 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go-certificates/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016 Lucas Clemente + +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/lucas-clemente/quic-go-certificates/README.md b/vendor/github.com/lucas-clemente/quic-go-certificates/README.md new file mode 100644 index 0000000..c9621d5 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go-certificates/README.md @@ -0,0 +1,3 @@ +# certsets + +Common certificate sets for quic-go diff --git a/vendor/github.com/lucas-clemente/quic-go-certificates/cert_set_2.go b/vendor/github.com/lucas-clemente/quic-go-certificates/cert_set_2.go new file mode 100644 index 0000000..f2f2250 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go-certificates/cert_set_2.go @@ -0,0 +1,5824 @@ +package certsets + +var CertSet2 = [][]byte{ + certSet2Cert0, + certSet2Cert1, + certSet2Cert2, + certSet2Cert3, + certSet2Cert4, + certSet2Cert5, + certSet2Cert6, + certSet2Cert7, + certSet2Cert8, + certSet2Cert9, + certSet2Cert10, + certSet2Cert11, + certSet2Cert12, + certSet2Cert13, + certSet2Cert14, + certSet2Cert15, + certSet2Cert16, + certSet2Cert17, + certSet2Cert18, + certSet2Cert19, + certSet2Cert20, + certSet2Cert21, + certSet2Cert22, + certSet2Cert23, + certSet2Cert24, + certSet2Cert25, + certSet2Cert26, + certSet2Cert27, + certSet2Cert28, + certSet2Cert29, + certSet2Cert30, + certSet2Cert31, + certSet2Cert32, + certSet2Cert33, + certSet2Cert34, + certSet2Cert35, + certSet2Cert36, + certSet2Cert37, + certSet2Cert38, + certSet2Cert39, + certSet2Cert40, + certSet2Cert41, + certSet2Cert42, + certSet2Cert43, + certSet2Cert44, + certSet2Cert45, + certSet2Cert46, + certSet2Cert47, + certSet2Cert48, + certSet2Cert49, + certSet2Cert50, + certSet2Cert51, + certSet2Cert52, + certSet2Cert53, +} + +const CertSet2Hash uint64 = (0xe81a92926081e801) + +var certSet2Cert0 = []byte{ + 0x30, 0x82, 0x03, 0x7d, 0x30, 0x82, 0x02, 0xe6, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x12, 0xbb, 0xe6, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x4e, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x07, 0x45, + 0x71, 0x75, 0x69, 0x66, 0x61, 0x78, 0x31, 0x2d, 0x30, 0x2b, 0x06, 0x03, + 0x55, 0x04, 0x0b, 0x13, 0x24, 0x45, 0x71, 0x75, 0x69, 0x66, 0x61, 0x78, + 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x32, 0x30, + 0x35, 0x32, 0x31, 0x30, 0x34, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, + 0x31, 0x38, 0x30, 0x38, 0x32, 0x31, 0x30, 0x34, 0x30, 0x30, 0x30, 0x30, + 0x5a, 0x30, 0x42, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x12, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, + 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, + 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xda, 0xcc, 0x18, 0x63, 0x30, 0xfd, + 0xf4, 0x17, 0x23, 0x1a, 0x56, 0x7e, 0x5b, 0xdf, 0x3c, 0x6c, 0x38, 0xe4, + 0x71, 0xb7, 0x78, 0x91, 0xd4, 0xbc, 0xa1, 0xd8, 0x4c, 0xf8, 0xa8, 0x43, + 0xb6, 0x03, 0xe9, 0x4d, 0x21, 0x07, 0x08, 0x88, 0xda, 0x58, 0x2f, 0x66, + 0x39, 0x29, 0xbd, 0x05, 0x78, 0x8b, 0x9d, 0x38, 0xe8, 0x05, 0xb7, 0x6a, + 0x7e, 0x71, 0xa4, 0xe6, 0xc4, 0x60, 0xa6, 0xb0, 0xef, 0x80, 0xe4, 0x89, + 0x28, 0x0f, 0x9e, 0x25, 0xd6, 0xed, 0x83, 0xf3, 0xad, 0xa6, 0x91, 0xc7, + 0x98, 0xc9, 0x42, 0x18, 0x35, 0x14, 0x9d, 0xad, 0x98, 0x46, 0x92, 0x2e, + 0x4f, 0xca, 0xf1, 0x87, 0x43, 0xc1, 0x16, 0x95, 0x57, 0x2d, 0x50, 0xef, + 0x89, 0x2d, 0x80, 0x7a, 0x57, 0xad, 0xf2, 0xee, 0x5f, 0x6b, 0xd2, 0x00, + 0x8d, 0xb9, 0x14, 0xf8, 0x14, 0x15, 0x35, 0xd9, 0xc0, 0x46, 0xa3, 0x7b, + 0x72, 0xc8, 0x91, 0xbf, 0xc9, 0x55, 0x2b, 0xcd, 0xd0, 0x97, 0x3e, 0x9c, + 0x26, 0x64, 0xcc, 0xdf, 0xce, 0x83, 0x19, 0x71, 0xca, 0x4e, 0xe6, 0xd4, + 0xd5, 0x7b, 0xa9, 0x19, 0xcd, 0x55, 0xde, 0xc8, 0xec, 0xd2, 0x5e, 0x38, + 0x53, 0xe5, 0x5c, 0x4f, 0x8c, 0x2d, 0xfe, 0x50, 0x23, 0x36, 0xfc, 0x66, + 0xe6, 0xcb, 0x8e, 0xa4, 0x39, 0x19, 0x00, 0xb7, 0x95, 0x02, 0x39, 0x91, + 0x0b, 0x0e, 0xfe, 0x38, 0x2e, 0xd1, 0x1d, 0x05, 0x9a, 0xf6, 0x4d, 0x3e, + 0x6f, 0x0f, 0x07, 0x1d, 0xaf, 0x2c, 0x1e, 0x8f, 0x60, 0x39, 0xe2, 0xfa, + 0x36, 0x53, 0x13, 0x39, 0xd4, 0x5e, 0x26, 0x2b, 0xdb, 0x3d, 0xa8, 0x14, + 0xbd, 0x32, 0xeb, 0x18, 0x03, 0x28, 0x52, 0x04, 0x71, 0xe5, 0xab, 0x33, + 0x3d, 0xe1, 0x38, 0xbb, 0x07, 0x36, 0x84, 0x62, 0x9c, 0x79, 0xea, 0x16, + 0x30, 0xf4, 0x5f, 0xc0, 0x2b, 0xe8, 0x71, 0x6b, 0xe4, 0xf9, 0x02, 0x03, + 0x01, 0x00, 0x01, 0xa3, 0x81, 0xf0, 0x30, 0x81, 0xed, 0x30, 0x1f, 0x06, + 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x48, 0xe6, + 0x68, 0xf9, 0x2b, 0xd2, 0xb2, 0x95, 0xd7, 0x47, 0xd8, 0x23, 0x20, 0x10, + 0x4f, 0x33, 0x98, 0x90, 0x9f, 0xd4, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, + 0x0e, 0x04, 0x16, 0x04, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, + 0xab, 0x05, 0x64, 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, + 0x4e, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, + 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x3a, + 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x33, 0x30, 0x31, 0x30, 0x2f, 0xa0, + 0x2d, 0xa0, 0x2b, 0x86, 0x29, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x63, 0x72, 0x6c, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x73, 0x65, + 0x63, 0x75, 0x72, 0x65, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x4e, + 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x47, 0x30, 0x45, 0x30, 0x43, 0x06, + 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x3b, 0x30, 0x39, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x2d, 0x68, 0x74, 0x74, + 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, + 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x72, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, + 0x00, 0x76, 0xe1, 0x12, 0x6e, 0x4e, 0x4b, 0x16, 0x12, 0x86, 0x30, 0x06, + 0xb2, 0x81, 0x08, 0xcf, 0xf0, 0x08, 0xc7, 0xc7, 0x71, 0x7e, 0x66, 0xee, + 0xc2, 0xed, 0xd4, 0x3b, 0x1f, 0xff, 0xf0, 0xf0, 0xc8, 0x4e, 0xd6, 0x43, + 0x38, 0xb0, 0xb9, 0x30, 0x7d, 0x18, 0xd0, 0x55, 0x83, 0xa2, 0x6a, 0xcb, + 0x36, 0x11, 0x9c, 0xe8, 0x48, 0x66, 0xa3, 0x6d, 0x7f, 0xb8, 0x13, 0xd4, + 0x47, 0xfe, 0x8b, 0x5a, 0x5c, 0x73, 0xfc, 0xae, 0xd9, 0x1b, 0x32, 0x19, + 0x38, 0xab, 0x97, 0x34, 0x14, 0xaa, 0x96, 0xd2, 0xeb, 0xa3, 0x1c, 0x14, + 0x08, 0x49, 0xb6, 0xbb, 0xe5, 0x91, 0xef, 0x83, 0x36, 0xeb, 0x1d, 0x56, + 0x6f, 0xca, 0xda, 0xbc, 0x73, 0x63, 0x90, 0xe4, 0x7f, 0x7b, 0x3e, 0x22, + 0xcb, 0x3d, 0x07, 0xed, 0x5f, 0x38, 0x74, 0x9c, 0xe3, 0x03, 0x50, 0x4e, + 0xa1, 0xaf, 0x98, 0xee, 0x61, 0xf2, 0x84, 0x3f, 0x12, +} + +var certSet2Cert1 = []byte{ + 0x30, 0x82, 0x03, 0x8b, 0x30, 0x82, 0x02, 0xf4, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x0d, 0x6e, 0x62, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x4e, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x07, 0x45, + 0x71, 0x75, 0x69, 0x66, 0x61, 0x78, 0x31, 0x2d, 0x30, 0x2b, 0x06, 0x03, + 0x55, 0x04, 0x0b, 0x13, 0x24, 0x45, 0x71, 0x75, 0x69, 0x66, 0x61, 0x78, + 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x31, + 0x31, 0x32, 0x37, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, + 0x31, 0x38, 0x30, 0x38, 0x32, 0x31, 0x31, 0x36, 0x31, 0x35, 0x30, 0x30, + 0x5a, 0x30, 0x58, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x31, 0x30, 0x2f, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x28, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x82, 0x01, 0x22, 0x30, + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, + 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, + 0x82, 0x01, 0x01, 0x00, 0xbe, 0xb8, 0x15, 0x7b, 0xff, 0xd4, 0x7c, 0x7d, + 0x67, 0xad, 0x83, 0x64, 0x7b, 0xc8, 0x42, 0x53, 0x2d, 0xdf, 0xf6, 0x84, + 0x08, 0x20, 0x61, 0xd6, 0x01, 0x59, 0x6a, 0x9c, 0x44, 0x11, 0xaf, 0xef, + 0x76, 0xfd, 0x95, 0x7e, 0xce, 0x61, 0x30, 0xbb, 0x7a, 0x83, 0x5f, 0x02, + 0xbd, 0x01, 0x66, 0xca, 0xee, 0x15, 0x8d, 0x6f, 0xa1, 0x30, 0x9c, 0xbd, + 0xa1, 0x85, 0x9e, 0x94, 0x3a, 0xf3, 0x56, 0x88, 0x00, 0x31, 0xcf, 0xd8, + 0xee, 0x6a, 0x96, 0x02, 0xd9, 0xed, 0x03, 0x8c, 0xfb, 0x75, 0x6d, 0xe7, + 0xea, 0xb8, 0x55, 0x16, 0x05, 0x16, 0x9a, 0xf4, 0xe0, 0x5e, 0xb1, 0x88, + 0xc0, 0x64, 0x85, 0x5c, 0x15, 0x4d, 0x88, 0xc7, 0xb7, 0xba, 0xe0, 0x75, + 0xe9, 0xad, 0x05, 0x3d, 0x9d, 0xc7, 0x89, 0x48, 0xe0, 0xbb, 0x28, 0xc8, + 0x03, 0xe1, 0x30, 0x93, 0x64, 0x5e, 0x52, 0xc0, 0x59, 0x70, 0x22, 0x35, + 0x57, 0x88, 0x8a, 0xf1, 0x95, 0x0a, 0x83, 0xd7, 0xbc, 0x31, 0x73, 0x01, + 0x34, 0xed, 0xef, 0x46, 0x71, 0xe0, 0x6b, 0x02, 0xa8, 0x35, 0x72, 0x6b, + 0x97, 0x9b, 0x66, 0xe0, 0xcb, 0x1c, 0x79, 0x5f, 0xd8, 0x1a, 0x04, 0x68, + 0x1e, 0x47, 0x02, 0xe6, 0x9d, 0x60, 0xe2, 0x36, 0x97, 0x01, 0xdf, 0xce, + 0x35, 0x92, 0xdf, 0xbe, 0x67, 0xc7, 0x6d, 0x77, 0x59, 0x3b, 0x8f, 0x9d, + 0xd6, 0x90, 0x15, 0x94, 0xbc, 0x42, 0x34, 0x10, 0xc1, 0x39, 0xf9, 0xb1, + 0x27, 0x3e, 0x7e, 0xd6, 0x8a, 0x75, 0xc5, 0xb2, 0xaf, 0x96, 0xd3, 0xa2, + 0xde, 0x9b, 0xe4, 0x98, 0xbe, 0x7d, 0xe1, 0xe9, 0x81, 0xad, 0xb6, 0x6f, + 0xfc, 0xd7, 0x0e, 0xda, 0xe0, 0x34, 0xb0, 0x0d, 0x1a, 0x77, 0xe7, 0xe3, + 0x08, 0x98, 0xef, 0x58, 0xfa, 0x9c, 0x84, 0xb7, 0x36, 0xaf, 0xc2, 0xdf, + 0xac, 0xd2, 0xf4, 0x10, 0x06, 0x70, 0x71, 0x35, 0x02, 0x03, 0x01, 0x00, + 0x01, 0xa3, 0x81, 0xe8, 0x30, 0x81, 0xe5, 0x30, 0x0e, 0x06, 0x03, 0x55, + 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, + 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x2c, 0xd5, + 0x50, 0x41, 0x97, 0x15, 0x8b, 0xf0, 0x8f, 0x36, 0x61, 0x5b, 0x4a, 0xfb, + 0x6b, 0xd9, 0x99, 0xc9, 0x33, 0x92, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, + 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x48, 0xe6, 0x68, 0xf9, 0x2b, + 0xd2, 0xb2, 0x95, 0xd7, 0x47, 0xd8, 0x23, 0x20, 0x10, 0x4f, 0x33, 0x98, + 0x90, 0x9f, 0xd4, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, + 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x3a, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x33, 0x30, 0x31, 0x30, 0x2f, 0xa0, 0x2d, 0xa0, + 0x2b, 0x86, 0x29, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, + 0x6c, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x65, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x46, 0x06, 0x03, + 0x55, 0x1d, 0x20, 0x04, 0x3f, 0x30, 0x3d, 0x30, 0x3b, 0x06, 0x04, 0x55, + 0x1d, 0x20, 0x00, 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, + 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, + 0x81, 0x81, 0x00, 0xaf, 0xf3, 0x0e, 0xd6, 0x72, 0xab, 0xc7, 0xa9, 0x97, + 0xca, 0x2a, 0x6b, 0x84, 0x39, 0xde, 0x79, 0xa9, 0xf0, 0x81, 0xe5, 0x08, + 0x67, 0xab, 0xd7, 0x2f, 0x20, 0x02, 0x01, 0x71, 0x0c, 0x04, 0x22, 0xc9, + 0x1e, 0x88, 0x95, 0x03, 0xc9, 0x49, 0x3a, 0xaf, 0x67, 0x08, 0x49, 0xb0, + 0xd5, 0x08, 0xf5, 0x20, 0x3d, 0x80, 0x91, 0xa0, 0xc5, 0x87, 0xa3, 0xfb, + 0xc9, 0xa3, 0x17, 0x91, 0xf9, 0xa8, 0x2f, 0xae, 0xe9, 0x0f, 0xdf, 0x96, + 0x72, 0x0f, 0x75, 0x17, 0x80, 0x5d, 0x78, 0x01, 0x4d, 0x9f, 0x1f, 0x6d, + 0x7b, 0xd8, 0xf5, 0x42, 0x38, 0x23, 0x1a, 0x99, 0x93, 0xf4, 0x83, 0xbe, + 0x3b, 0x35, 0x74, 0xe7, 0x37, 0x13, 0x35, 0x7a, 0xac, 0xb4, 0xb6, 0x90, + 0x82, 0x6c, 0x27, 0xa4, 0xe0, 0xec, 0x9e, 0x35, 0xbd, 0xbf, 0xe5, 0x29, + 0xa1, 0x47, 0x9f, 0x5b, 0x32, 0xfc, 0xe9, 0x99, 0x7d, 0x2b, 0x39, +} + +var certSet2Cert2 = []byte{ + 0x30, 0x82, 0x03, 0xd5, 0x30, 0x82, 0x02, 0xbd, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x02, 0x36, 0xd1, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x42, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, + 0x32, 0x31, 0x39, 0x32, 0x32, 0x34, 0x35, 0x30, 0x35, 0x5a, 0x17, 0x0d, + 0x32, 0x30, 0x30, 0x32, 0x31, 0x38, 0x32, 0x32, 0x34, 0x35, 0x30, 0x35, + 0x5a, 0x30, 0x3c, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0e, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x2c, + 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x0b, 0x52, 0x61, 0x70, 0x69, 0x64, 0x53, 0x53, 0x4c, + 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, + 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, + 0xc7, 0x71, 0xf8, 0x56, 0xc7, 0x1e, 0xd9, 0xcc, 0xb5, 0xad, 0xf6, 0xb4, + 0x97, 0xa3, 0xfb, 0xa1, 0xe6, 0x0b, 0x50, 0x5f, 0x50, 0xaa, 0x3a, 0xda, + 0x0f, 0xfc, 0x3d, 0x29, 0x24, 0x43, 0xc6, 0x10, 0x29, 0xc1, 0xfc, 0x55, + 0x40, 0x72, 0xee, 0xbd, 0xea, 0xdf, 0x9f, 0xb6, 0x41, 0xf4, 0x48, 0x4b, + 0xc8, 0x6e, 0xfe, 0x4f, 0x57, 0x12, 0x8b, 0x5b, 0xfa, 0x92, 0xdd, 0x5e, + 0xe8, 0xad, 0xf3, 0xf0, 0x1b, 0xb1, 0x7b, 0x4d, 0xfb, 0xcf, 0xfd, 0xd1, + 0xe5, 0xf8, 0xe3, 0xdc, 0xe7, 0xf5, 0x73, 0x7f, 0xdf, 0x01, 0x49, 0xcf, + 0x8c, 0x56, 0xc1, 0xbd, 0x37, 0xe3, 0x5b, 0xbe, 0xb5, 0x4f, 0x8b, 0x8b, + 0xf0, 0xda, 0x4f, 0xc7, 0xe3, 0xdd, 0x55, 0x47, 0x69, 0xdf, 0xf2, 0x5b, + 0x7b, 0x07, 0x4f, 0x3d, 0xe5, 0xac, 0x21, 0xc1, 0xc8, 0x1d, 0x7a, 0xe8, + 0xe7, 0xf6, 0x0f, 0xa1, 0xaa, 0xf5, 0x6f, 0xde, 0xa8, 0x65, 0x4f, 0x10, + 0x89, 0x9c, 0x03, 0xf3, 0x89, 0x7a, 0xa5, 0x5e, 0x01, 0x72, 0x33, 0xed, + 0xa9, 0xe9, 0x5a, 0x1e, 0x79, 0xf3, 0x87, 0xc8, 0xdf, 0xc8, 0xc5, 0xfc, + 0x37, 0xc8, 0x9a, 0x9a, 0xd7, 0xb8, 0x76, 0xcc, 0xb0, 0x3e, 0xe7, 0xfd, + 0xe6, 0x54, 0xea, 0xdf, 0x5f, 0x52, 0x41, 0x78, 0x59, 0x57, 0xad, 0xf1, + 0x12, 0xd6, 0x7f, 0xbc, 0xd5, 0x9f, 0x70, 0xd3, 0x05, 0x6c, 0xfa, 0xa3, + 0x7d, 0x67, 0x58, 0xdd, 0x26, 0x62, 0x1d, 0x31, 0x92, 0x0c, 0x79, 0x79, + 0x1c, 0x8e, 0xcf, 0xca, 0x7b, 0xc1, 0x66, 0xaf, 0xa8, 0x74, 0x48, 0xfb, + 0x8e, 0x82, 0xc2, 0x9e, 0x2c, 0x99, 0x5c, 0x7b, 0x2d, 0x5d, 0x9b, 0xbc, + 0x5b, 0x57, 0x9e, 0x7c, 0x3a, 0x7a, 0x13, 0xad, 0xf2, 0xa3, 0x18, 0x5b, + 0x2b, 0x59, 0x0f, 0xcd, 0x5c, 0x3a, 0xeb, 0x68, 0x33, 0xc6, 0x28, 0x1d, + 0x82, 0xd1, 0x50, 0x8b, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x81, 0xd9, + 0x30, 0x81, 0xd6, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, + 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x6b, 0x69, 0x3d, 0x6a, 0x18, 0x42, + 0x4a, 0xdd, 0x8f, 0x02, 0x65, 0x39, 0xfd, 0x35, 0x24, 0x86, 0x78, 0x91, + 0x16, 0x30, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, + 0x16, 0x80, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, 0xab, 0x05, + 0x64, 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, 0x4e, 0x30, + 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, + 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x3a, 0x06, 0x03, 0x55, + 0x1d, 0x1f, 0x04, 0x33, 0x30, 0x31, 0x30, 0x2f, 0xa0, 0x2d, 0xa0, 0x2b, + 0x86, 0x29, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, + 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x67, 0x74, 0x67, 0x6c, 0x6f, + 0x62, 0x61, 0x6c, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x34, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, + 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, + 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, + 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, + 0x6d, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xab, 0xbc, 0xbc, + 0x0a, 0x5d, 0x18, 0x94, 0xe3, 0xc1, 0xb1, 0xc3, 0xa8, 0x4c, 0x55, 0xd6, + 0xbe, 0xb4, 0x98, 0xf1, 0xee, 0x3c, 0x1c, 0xcd, 0xcf, 0xf3, 0x24, 0x24, + 0x5c, 0x96, 0x03, 0x27, 0x58, 0xfc, 0x36, 0xae, 0xa2, 0x2f, 0x8f, 0xf1, + 0xfe, 0xda, 0x2b, 0x02, 0xc3, 0x33, 0xbd, 0xc8, 0xdd, 0x48, 0x22, 0x2b, + 0x60, 0x0f, 0xa5, 0x03, 0x10, 0xfd, 0x77, 0xf8, 0xd0, 0xed, 0x96, 0x67, + 0x4f, 0xfd, 0xea, 0x47, 0x20, 0x70, 0x54, 0xdc, 0xa9, 0x0c, 0x55, 0x7e, + 0xe1, 0x96, 0x25, 0x8a, 0xd9, 0xb5, 0xda, 0x57, 0x4a, 0xbe, 0x8d, 0x8e, + 0x49, 0x43, 0x63, 0xa5, 0x6c, 0x4e, 0x27, 0x87, 0x25, 0xeb, 0x5b, 0x6d, + 0xfe, 0xa2, 0x7f, 0x38, 0x28, 0xe0, 0x36, 0xab, 0xad, 0x39, 0xa5, 0xa5, + 0x62, 0xc4, 0xb7, 0x5c, 0x58, 0x2c, 0xaa, 0x5d, 0x01, 0x60, 0xa6, 0x62, + 0x67, 0xa3, 0xc0, 0xc7, 0x62, 0x23, 0xf4, 0xe7, 0x6c, 0x46, 0xee, 0xb5, + 0xd3, 0x80, 0x6a, 0x22, 0x13, 0xd2, 0x2d, 0x3f, 0x74, 0x4f, 0xea, 0xaf, + 0x8c, 0x5f, 0xb4, 0x38, 0x9c, 0xdb, 0xae, 0xce, 0xaf, 0x84, 0x1e, 0xa6, + 0xf6, 0x34, 0x51, 0x59, 0x79, 0xd3, 0xe3, 0x75, 0xdc, 0xbc, 0xd7, 0xf3, + 0x73, 0xdf, 0x92, 0xec, 0xd2, 0x20, 0x59, 0x6f, 0x9c, 0xfb, 0x95, 0xf8, + 0x92, 0x76, 0x18, 0x0a, 0x7c, 0x0f, 0x2c, 0xa6, 0xca, 0xde, 0x8a, 0x62, + 0x7b, 0xd8, 0xf3, 0xce, 0x5f, 0x68, 0xbd, 0x8f, 0x3e, 0xc1, 0x74, 0xbb, + 0x15, 0x72, 0x3a, 0x16, 0x83, 0xa9, 0x0b, 0xe6, 0x4d, 0x99, 0x9c, 0xd8, + 0x57, 0xec, 0xa8, 0x01, 0x51, 0xc7, 0x6f, 0x57, 0x34, 0x5e, 0xab, 0x4a, + 0x2c, 0x42, 0xf6, 0x4f, 0x1c, 0x89, 0x78, 0xde, 0x26, 0x4e, 0xf5, 0x6f, + 0x93, 0x4c, 0x15, 0x6b, 0x27, 0x56, 0x4d, 0x00, 0x54, 0x6c, 0x7a, 0xb7, + 0xb7, +} + +var certSet2Cert3 = []byte{ + 0x30, 0x82, 0x03, 0xf0, 0x30, 0x82, 0x02, 0xd8, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x02, 0x3a, 0x83, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x30, + 0x34, 0x30, 0x35, 0x31, 0x35, 0x31, 0x35, 0x35, 0x36, 0x5a, 0x17, 0x0d, + 0x31, 0x36, 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, + 0x5a, 0x30, 0x49, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x20, 0x49, 0x6e, + 0x63, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1c, + 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x6e, 0x65, 0x74, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, + 0x00, 0x9c, 0x2a, 0x04, 0x77, 0x5c, 0xd8, 0x50, 0x91, 0x3a, 0x06, 0xa3, + 0x82, 0xe0, 0xd8, 0x50, 0x48, 0xbc, 0x89, 0x3f, 0xf1, 0x19, 0x70, 0x1a, + 0x88, 0x46, 0x7e, 0xe0, 0x8f, 0xc5, 0xf1, 0x89, 0xce, 0x21, 0xee, 0x5a, + 0xfe, 0x61, 0x0d, 0xb7, 0x32, 0x44, 0x89, 0xa0, 0x74, 0x0b, 0x53, 0x4f, + 0x55, 0xa4, 0xce, 0x82, 0x62, 0x95, 0xee, 0xeb, 0x59, 0x5f, 0xc6, 0xe1, + 0x05, 0x80, 0x12, 0xc4, 0x5e, 0x94, 0x3f, 0xbc, 0x5b, 0x48, 0x38, 0xf4, + 0x53, 0xf7, 0x24, 0xe6, 0xfb, 0x91, 0xe9, 0x15, 0xc4, 0xcf, 0xf4, 0x53, + 0x0d, 0xf4, 0x4a, 0xfc, 0x9f, 0x54, 0xde, 0x7d, 0xbe, 0xa0, 0x6b, 0x6f, + 0x87, 0xc0, 0xd0, 0x50, 0x1f, 0x28, 0x30, 0x03, 0x40, 0xda, 0x08, 0x73, + 0x51, 0x6c, 0x7f, 0xff, 0x3a, 0x3c, 0xa7, 0x37, 0x06, 0x8e, 0xbd, 0x4b, + 0x11, 0x04, 0xeb, 0x7d, 0x24, 0xde, 0xe6, 0xf9, 0xfc, 0x31, 0x71, 0xfb, + 0x94, 0xd5, 0x60, 0xf3, 0x2e, 0x4a, 0xaf, 0x42, 0xd2, 0xcb, 0xea, 0xc4, + 0x6a, 0x1a, 0xb2, 0xcc, 0x53, 0xdd, 0x15, 0x4b, 0x8b, 0x1f, 0xc8, 0x19, + 0x61, 0x1f, 0xcd, 0x9d, 0xa8, 0x3e, 0x63, 0x2b, 0x84, 0x35, 0x69, 0x65, + 0x84, 0xc8, 0x19, 0xc5, 0x46, 0x22, 0xf8, 0x53, 0x95, 0xbe, 0xe3, 0x80, + 0x4a, 0x10, 0xc6, 0x2a, 0xec, 0xba, 0x97, 0x20, 0x11, 0xc7, 0x39, 0x99, + 0x10, 0x04, 0xa0, 0xf0, 0x61, 0x7a, 0x95, 0x25, 0x8c, 0x4e, 0x52, 0x75, + 0xe2, 0xb6, 0xed, 0x08, 0xca, 0x14, 0xfc, 0xce, 0x22, 0x6a, 0xb3, 0x4e, + 0xcf, 0x46, 0x03, 0x97, 0x97, 0x03, 0x7e, 0xc0, 0xb1, 0xde, 0x7b, 0xaf, + 0x45, 0x33, 0xcf, 0xba, 0x3e, 0x71, 0xb7, 0xde, 0xf4, 0x25, 0x25, 0xc2, + 0x0d, 0x35, 0x89, 0x9d, 0x9d, 0xfb, 0x0e, 0x11, 0x79, 0x89, 0x1e, 0x37, + 0xc5, 0xaf, 0x8e, 0x72, 0x69, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x81, + 0xe7, 0x30, 0x81, 0xe4, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, + 0x18, 0x30, 0x16, 0x80, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, + 0xab, 0x05, 0x64, 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, + 0x4e, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0x4a, 0xdd, 0x06, 0x16, 0x1b, 0xbc, 0xf6, 0x68, 0xb5, 0x76, 0xf5, 0x81, + 0xb6, 0xbb, 0x62, 0x1a, 0xba, 0x5a, 0x81, 0x2f, 0x30, 0x0e, 0x06, 0x03, + 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, + 0x30, 0x2e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, + 0x04, 0x22, 0x30, 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x30, 0x01, 0x86, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x67, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x64, 0x2e, 0x63, 0x6f, 0x6d, + 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, + 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x35, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x2e, 0x30, 0x2c, 0x30, 0x2a, 0xa0, 0x28, 0xa0, + 0x26, 0x86, 0x24, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, + 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, + 0x6c, 0x73, 0x2f, 0x67, 0x74, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x17, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x10, + 0x30, 0x0e, 0x30, 0x0c, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xd6, + 0x79, 0x02, 0x05, 0x01, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, + 0xaa, 0xfa, 0xa9, 0x20, 0xcd, 0x6a, 0x67, 0x83, 0xed, 0x5e, 0xd4, 0x7e, + 0xde, 0x1d, 0xc4, 0x7f, 0xe0, 0x25, 0x06, 0x00, 0xc5, 0x24, 0xfb, 0xa9, + 0xc8, 0x2d, 0x6d, 0x7e, 0xde, 0x9d, 0x82, 0x65, 0x2c, 0x81, 0x63, 0x34, + 0x66, 0x3e, 0xe9, 0x52, 0xc2, 0x08, 0xb4, 0xcb, 0x2f, 0xf7, 0x5f, 0x99, + 0x3a, 0x6a, 0x9c, 0x50, 0x7a, 0x85, 0x05, 0x8c, 0x7d, 0xd1, 0x2a, 0x48, + 0x84, 0xd3, 0x09, 0x6c, 0x7c, 0xc2, 0xcd, 0x35, 0x9f, 0xf3, 0x82, 0xee, + 0x52, 0xde, 0x68, 0x5f, 0xe4, 0x00, 0x8a, 0x17, 0x20, 0x96, 0xf7, 0x29, + 0x8d, 0x9a, 0x4d, 0xcb, 0xa8, 0xde, 0x86, 0xc8, 0x0d, 0x6f, 0x56, 0x87, + 0x03, 0x7d, 0x03, 0x3f, 0xdc, 0xfa, 0x79, 0x7d, 0x21, 0x19, 0xf9, 0xc8, + 0x3a, 0x2f, 0x51, 0x76, 0x8c, 0xc7, 0x41, 0x92, 0x71, 0x8f, 0x25, 0xce, + 0x37, 0xf8, 0x4a, 0x4c, 0x00, 0x23, 0xef, 0xc4, 0x35, 0x10, 0xae, 0xe0, + 0x23, 0x80, 0x73, 0x7c, 0x4d, 0x34, 0x2e, 0xc8, 0x6e, 0x90, 0xd6, 0x10, + 0x1e, 0x99, 0x84, 0x73, 0x1a, 0x70, 0xf2, 0xed, 0x55, 0x0e, 0xee, 0x17, + 0x06, 0xea, 0x67, 0xee, 0x32, 0xeb, 0x2c, 0xdd, 0x67, 0x07, 0x3f, 0xf6, + 0x8b, 0xc2, 0x70, 0xde, 0x5b, 0x00, 0xe6, 0xbb, 0x1b, 0xd3, 0x36, 0x1a, + 0x22, 0x6c, 0x6c, 0xb0, 0x35, 0x42, 0x6c, 0x90, 0x09, 0x3d, 0x93, 0xe9, + 0x64, 0x09, 0x22, 0x0e, 0x85, 0x06, 0x9f, 0xc2, 0x73, 0x21, 0xd3, 0xe6, + 0x5f, 0x80, 0xe4, 0x8d, 0x85, 0x22, 0x3a, 0x73, 0x03, 0xb1, 0x60, 0x8e, + 0xae, 0x68, 0xe2, 0xf4, 0x3e, 0x97, 0xe7, 0x60, 0x12, 0x09, 0x68, 0x36, + 0xde, 0x3a, 0xd6, 0xe2, 0x43, 0x95, 0x5b, 0x37, 0x81, 0x92, 0x81, 0x1f, + 0xbb, 0x8d, 0xd7, 0xad, 0x52, 0x64, 0x16, 0x57, 0x96, 0xd9, 0x5e, 0x34, + 0x7e, 0xc8, 0x35, 0xd8, +} + +var certSet2Cert4 = []byte{ + 0x30, 0x82, 0x04, 0x15, 0x30, 0x82, 0x03, 0x7e, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x04, 0x07, 0x27, 0x8e, 0xed, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x75, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0f, + 0x47, 0x54, 0x45, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x1e, 0x47, 0x54, 0x45, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, + 0x72, 0x75, 0x73, 0x74, 0x20, 0x53, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x23, 0x30, 0x21, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1a, 0x47, 0x54, 0x45, 0x20, 0x43, + 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, + 0x0d, 0x31, 0x32, 0x30, 0x34, 0x31, 0x38, 0x31, 0x36, 0x33, 0x36, 0x31, + 0x38, 0x5a, 0x17, 0x0d, 0x31, 0x38, 0x30, 0x38, 0x31, 0x33, 0x31, 0x36, + 0x33, 0x35, 0x31, 0x37, 0x5a, 0x30, 0x5a, 0x31, 0x0b, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, 0x45, 0x31, 0x12, 0x30, 0x10, + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x09, 0x42, 0x61, 0x6c, 0x74, 0x69, + 0x6d, 0x6f, 0x72, 0x65, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, + 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x19, + 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x43, 0x79, + 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6f, 0x6f, + 0x74, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, + 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, + 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xa3, 0x04, + 0xbb, 0x22, 0xab, 0x98, 0x3d, 0x57, 0xe8, 0x26, 0x72, 0x9a, 0xb5, 0x79, + 0xd4, 0x29, 0xe2, 0xe1, 0xe8, 0x95, 0x80, 0xb1, 0xb0, 0xe3, 0x5b, 0x8e, + 0x2b, 0x29, 0x9a, 0x64, 0xdf, 0xa1, 0x5d, 0xed, 0xb0, 0x09, 0x05, 0x6d, + 0xdb, 0x28, 0x2e, 0xce, 0x62, 0xa2, 0x62, 0xfe, 0xb4, 0x88, 0xda, 0x12, + 0xeb, 0x38, 0xeb, 0x21, 0x9d, 0xc0, 0x41, 0x2b, 0x01, 0x52, 0x7b, 0x88, + 0x77, 0xd3, 0x1c, 0x8f, 0xc7, 0xba, 0xb9, 0x88, 0xb5, 0x6a, 0x09, 0xe7, + 0x73, 0xe8, 0x11, 0x40, 0xa7, 0xd1, 0xcc, 0xca, 0x62, 0x8d, 0x2d, 0xe5, + 0x8f, 0x0b, 0xa6, 0x50, 0xd2, 0xa8, 0x50, 0xc3, 0x28, 0xea, 0xf5, 0xab, + 0x25, 0x87, 0x8a, 0x9a, 0x96, 0x1c, 0xa9, 0x67, 0xb8, 0x3f, 0x0c, 0xd5, + 0xf7, 0xf9, 0x52, 0x13, 0x2f, 0xc2, 0x1b, 0xd5, 0x70, 0x70, 0xf0, 0x8f, + 0xc0, 0x12, 0xca, 0x06, 0xcb, 0x9a, 0xe1, 0xd9, 0xca, 0x33, 0x7a, 0x77, + 0xd6, 0xf8, 0xec, 0xb9, 0xf1, 0x68, 0x44, 0x42, 0x48, 0x13, 0xd2, 0xc0, + 0xc2, 0xa4, 0xae, 0x5e, 0x60, 0xfe, 0xb6, 0xa6, 0x05, 0xfc, 0xb4, 0xdd, + 0x07, 0x59, 0x02, 0xd4, 0x59, 0x18, 0x98, 0x63, 0xf5, 0xa5, 0x63, 0xe0, + 0x90, 0x0c, 0x7d, 0x5d, 0xb2, 0x06, 0x7a, 0xf3, 0x85, 0xea, 0xeb, 0xd4, + 0x03, 0xae, 0x5e, 0x84, 0x3e, 0x5f, 0xff, 0x15, 0xed, 0x69, 0xbc, 0xf9, + 0x39, 0x36, 0x72, 0x75, 0xcf, 0x77, 0x52, 0x4d, 0xf3, 0xc9, 0x90, 0x2c, + 0xb9, 0x3d, 0xe5, 0xc9, 0x23, 0x53, 0x3f, 0x1f, 0x24, 0x98, 0x21, 0x5c, + 0x07, 0x99, 0x29, 0xbd, 0xc6, 0x3a, 0xec, 0xe7, 0x6e, 0x86, 0x3a, 0x6b, + 0x97, 0x74, 0x63, 0x33, 0xbd, 0x68, 0x18, 0x31, 0xf0, 0x78, 0x8d, 0x76, + 0xbf, 0xfc, 0x9e, 0x8e, 0x5d, 0x2a, 0x86, 0xa7, 0x4d, 0x90, 0xdc, 0x27, + 0x1a, 0x39, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x47, 0x30, + 0x82, 0x01, 0x43, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, + 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x03, 0x30, + 0x4a, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x43, 0x30, 0x41, 0x30, 0x3f, + 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x37, 0x30, 0x35, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x29, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x6f, 0x72, 0x79, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, + 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x81, 0x89, 0x06, 0x03, + 0x55, 0x1d, 0x23, 0x04, 0x81, 0x81, 0x30, 0x7f, 0xa1, 0x79, 0xa4, 0x77, + 0x30, 0x75, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0a, + 0x13, 0x0f, 0x47, 0x54, 0x45, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, + 0x04, 0x0b, 0x13, 0x1e, 0x47, 0x54, 0x45, 0x20, 0x43, 0x79, 0x62, 0x65, + 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x53, 0x6f, 0x6c, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x23, + 0x30, 0x21, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1a, 0x47, 0x54, 0x45, + 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x82, + 0x02, 0x01, 0xa5, 0x30, 0x45, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x3e, + 0x30, 0x3c, 0x30, 0x3a, 0xa0, 0x38, 0xa0, 0x36, 0x86, 0x34, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x2d, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x63, 0x67, 0x69, 0x2d, 0x62, 0x69, 0x6e, 0x2f, 0x43, 0x52, + 0x4c, 0x2f, 0x32, 0x30, 0x31, 0x38, 0x2f, 0x63, 0x64, 0x70, 0x2e, 0x63, + 0x72, 0x6c, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x93, 0x1d, 0xfe, + 0x8b, 0xae, 0x46, 0xec, 0xcb, 0xa9, 0x0f, 0xab, 0xe5, 0xef, 0xca, 0xb2, + 0x68, 0x16, 0x68, 0xd8, 0x8f, 0xfa, 0x13, 0xa9, 0xaf, 0xb3, 0xcb, 0x2d, + 0xe7, 0x4b, 0x6e, 0x8e, 0x69, 0x2a, 0xc2, 0x2b, 0x10, 0x0a, 0x8d, 0xf6, + 0xae, 0x73, 0xb6, 0xb9, 0xfb, 0x14, 0xfd, 0x5f, 0x6d, 0xb8, 0x50, 0xb6, + 0xc4, 0x8a, 0xd6, 0x40, 0x7e, 0xd7, 0xc3, 0xcb, 0x73, 0xdc, 0xc9, 0x5d, + 0x5b, 0xaf, 0xb0, 0x41, 0xb5, 0x37, 0xeb, 0xea, 0xdc, 0x20, 0x91, 0xc4, + 0x34, 0x6a, 0xf4, 0xa1, 0xf3, 0x96, 0x9d, 0x37, 0x86, 0x97, 0xe1, 0x71, + 0xa4, 0xdd, 0x7d, 0xfa, 0x44, 0x84, 0x94, 0xae, 0xd7, 0x09, 0x04, 0x22, + 0x76, 0x0f, 0x64, 0x51, 0x35, 0xa9, 0x24, 0x0f, 0xf9, 0x0b, 0xdb, 0x32, + 0xda, 0xc2, 0xfe, 0xc1, 0xb9, 0x2a, 0x5c, 0x7a, 0x27, 0x13, 0xca, 0xb1, + 0x48, 0x3a, 0x71, 0xd0, 0x43, +} + +var certSet2Cert5 = []byte{ + 0x30, 0x82, 0x04, 0x22, 0x30, 0x82, 0x03, 0x0a, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x02, 0x3a, 0x79, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x30, + 0x39, 0x30, 0x38, 0x32, 0x30, 0x34, 0x31, 0x31, 0x30, 0x5a, 0x17, 0x0d, + 0x32, 0x32, 0x30, 0x35, 0x32, 0x30, 0x32, 0x30, 0x34, 0x31, 0x31, 0x30, + 0x5a, 0x30, 0x44, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x14, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x34, 0x30, + 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, + 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0x9a, 0x7d, 0x98, 0x68, + 0x11, 0x40, 0xc1, 0x5f, 0x72, 0xec, 0x55, 0xb3, 0xb1, 0x63, 0xf3, 0x32, + 0x22, 0x72, 0x91, 0xc6, 0x16, 0x05, 0xbb, 0x08, 0x82, 0x31, 0xb4, 0xf6, + 0xee, 0xd4, 0x18, 0x39, 0x11, 0x2f, 0x2e, 0xda, 0x47, 0xfe, 0x51, 0x31, + 0x6e, 0x5b, 0xf2, 0xa9, 0x0a, 0xeb, 0x2f, 0xbb, 0xf5, 0x61, 0x59, 0x65, + 0x57, 0x02, 0xcd, 0x80, 0xff, 0xc7, 0x70, 0x32, 0x54, 0x89, 0xfd, 0xdb, + 0xae, 0x99, 0x72, 0xd4, 0x4f, 0x0c, 0x26, 0xb9, 0x2e, 0x63, 0x30, 0x7d, + 0xde, 0x14, 0x5b, 0x6a, 0xd7, 0x52, 0x78, 0x21, 0xf9, 0xbf, 0xbc, 0x50, + 0xd5, 0x54, 0x12, 0x59, 0xd8, 0xb5, 0x36, 0xd9, 0x21, 0x47, 0xb8, 0x3f, + 0x6a, 0x58, 0x1d, 0x8c, 0x72, 0xe1, 0x97, 0x95, 0xd3, 0xe1, 0x45, 0xa8, + 0xf1, 0x5a, 0xe5, 0xbe, 0xfe, 0xe3, 0x53, 0x7c, 0xa5, 0xf0, 0x52, 0xe0, + 0xcf, 0x39, 0x94, 0x0c, 0x19, 0x71, 0xf2, 0xc0, 0x25, 0x07, 0x48, 0x7d, + 0x1c, 0xe6, 0xf1, 0x39, 0x25, 0x2f, 0x98, 0x79, 0x43, 0xe8, 0x18, 0x72, + 0xf4, 0x65, 0x86, 0x98, 0x5a, 0x00, 0x04, 0x47, 0xda, 0x4b, 0x58, 0x1e, + 0x7c, 0x86, 0xb1, 0x4b, 0x35, 0xa6, 0x20, 0x00, 0x1c, 0xcd, 0x1b, 0x3b, + 0x22, 0x5d, 0xd1, 0x93, 0x28, 0x33, 0x12, 0x23, 0x94, 0x08, 0xaa, 0xc3, + 0x3a, 0xf5, 0xd1, 0xc6, 0x8c, 0x7e, 0x99, 0xd3, 0x18, 0xa0, 0xad, 0x9d, + 0x18, 0xcf, 0x49, 0xad, 0x10, 0x03, 0xf7, 0x99, 0x33, 0x26, 0x86, 0x46, + 0x9a, 0x2f, 0xa0, 0xba, 0x6c, 0x6e, 0xc8, 0x88, 0x02, 0xb7, 0x6e, 0xfa, + 0x7a, 0x9e, 0x98, 0x4a, 0xee, 0x9a, 0x31, 0x7d, 0x19, 0x14, 0x60, 0x0c, + 0xec, 0x8f, 0x20, 0x23, 0x3c, 0xda, 0x97, 0x26, 0xb6, 0xea, 0x80, 0x6c, + 0x8a, 0x57, 0x9e, 0x20, 0xee, 0x6f, 0x17, 0x25, 0x4a, 0x32, 0xad, 0x35, + 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x1d, 0x30, 0x82, 0x01, + 0x19, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, + 0x80, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, 0xab, 0x05, 0x64, + 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, 0x4e, 0x30, 0x1d, + 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xac, 0x32, 0xed, + 0x5a, 0xc9, 0xe0, 0xde, 0x30, 0x9c, 0x90, 0x58, 0x55, 0x26, 0x63, 0xf6, + 0x72, 0xa6, 0x54, 0x5f, 0xe3, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, + 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, + 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, + 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x35, 0x06, 0x03, 0x55, 0x1d, 0x1f, + 0x04, 0x2e, 0x30, 0x2c, 0x30, 0x2a, 0xa0, 0x28, 0xa0, 0x26, 0x86, 0x24, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, 0x73, 0x79, 0x6d, + 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x2f, + 0x67, 0x74, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x63, 0x72, 0x6c, + 0x30, 0x2e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, + 0x04, 0x22, 0x30, 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x30, 0x01, 0x86, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x67, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x64, 0x2e, 0x63, 0x6f, 0x6d, + 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, + 0x41, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07, + 0x36, 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x01, 0x00, 0x61, 0x40, 0xad, 0x21, 0x0f, 0x03, 0xbb, 0x95, 0xdc, 0x89, + 0xfc, 0xa3, 0xcb, 0x05, 0x71, 0xe9, 0x1c, 0x59, 0x97, 0x35, 0xc2, 0xfa, + 0x6b, 0x05, 0xa4, 0x16, 0xc6, 0x56, 0x46, 0x37, 0x74, 0x1b, 0x1b, 0xf1, + 0x3e, 0x2c, 0xe8, 0x37, 0x19, 0xb7, 0x94, 0xd2, 0x0f, 0x0e, 0xc5, 0xbf, + 0x14, 0x07, 0x2b, 0x34, 0xcd, 0x5b, 0xb4, 0x8d, 0xc7, 0x56, 0x9d, 0x19, + 0xfc, 0x02, 0xb4, 0x9e, 0x90, 0x31, 0xfa, 0xa4, 0x44, 0xc6, 0x75, 0xdd, + 0xdd, 0x1f, 0x25, 0x54, 0xa3, 0x30, 0x4c, 0xac, 0xdb, 0xfe, 0xc4, 0x88, + 0xf7, 0x31, 0x26, 0x18, 0x47, 0xae, 0x4c, 0x20, 0x19, 0x1a, 0xc7, 0xae, + 0x3e, 0x98, 0x0a, 0x16, 0x3d, 0xd2, 0xc2, 0xa6, 0x5d, 0x0d, 0x2e, 0x29, + 0x7d, 0xb2, 0x9d, 0xc7, 0x41, 0x32, 0x17, 0xca, 0x9d, 0xae, 0x39, 0xbf, + 0x91, 0x98, 0xde, 0xe7, 0x44, 0xe2, 0x95, 0x9c, 0x94, 0x5c, 0x6c, 0x42, + 0x1b, 0x59, 0xc9, 0x7b, 0x68, 0x13, 0xa8, 0x96, 0x09, 0x74, 0xee, 0x40, + 0x14, 0xa4, 0xd5, 0xd7, 0xc9, 0x7b, 0x33, 0xa3, 0x0f, 0x5a, 0x69, 0x9c, + 0x1a, 0xfa, 0x6f, 0x12, 0x47, 0x1c, 0xdf, 0x1e, 0x4c, 0x70, 0x4e, 0x6d, + 0xdd, 0xfe, 0x1c, 0x87, 0xb5, 0x9d, 0xe1, 0x54, 0x07, 0x09, 0x8a, 0xcd, + 0xbe, 0xaa, 0xa8, 0x46, 0x78, 0x6e, 0x16, 0xf2, 0xe7, 0x91, 0x0e, 0xc3, + 0xaf, 0xda, 0x76, 0x00, 0xd1, 0xd8, 0xa2, 0x46, 0x24, 0x03, 0xa5, 0x1a, + 0x85, 0x81, 0x56, 0x83, 0x63, 0x27, 0xba, 0x90, 0x8e, 0xf9, 0x62, 0x11, + 0xba, 0xa7, 0x7c, 0x90, 0xa9, 0x1a, 0x66, 0xb4, 0xc5, 0xbc, 0x8f, 0x29, + 0x41, 0xab, 0xeb, 0x8d, 0x99, 0xa6, 0xcc, 0x91, 0x64, 0xba, 0xdc, 0xc6, + 0xa6, 0x4c, 0xb3, 0xb4, 0x23, 0x26, 0x51, 0x72, 0x56, 0xf9, 0xf3, 0x74, + 0x55, 0x9f, 0x25, 0x75, 0x4f, 0x2b, +} + +var certSet2Cert6 = []byte{ + 0x30, 0x82, 0x04, 0x25, 0x30, 0x82, 0x03, 0x0d, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x02, 0x3a, 0x77, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x30, + 0x38, 0x32, 0x39, 0x32, 0x31, 0x33, 0x39, 0x33, 0x32, 0x5a, 0x17, 0x0d, + 0x32, 0x32, 0x30, 0x35, 0x32, 0x30, 0x32, 0x31, 0x33, 0x39, 0x33, 0x32, + 0x5a, 0x30, 0x47, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x17, 0x52, 0x61, 0x70, 0x69, 0x64, 0x53, 0x53, 0x4c, 0x20, + 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, + 0x47, 0x33, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xaf, + 0x54, 0x9b, 0xd9, 0x58, 0x5d, 0x1e, 0x2c, 0x56, 0xc6, 0xd5, 0xe8, 0x7f, + 0xf4, 0x7d, 0x16, 0x03, 0xff, 0xd0, 0x8b, 0x5a, 0xe4, 0x8e, 0xa7, 0xdd, + 0x54, 0x2e, 0xd4, 0x04, 0xc0, 0x5d, 0x98, 0x9c, 0x8d, 0x90, 0x0f, 0xbc, + 0x10, 0x65, 0x5f, 0xda, 0x9a, 0xd6, 0x44, 0x7c, 0xc0, 0x9f, 0xb5, 0xe9, + 0x4a, 0x8c, 0x0b, 0x06, 0x43, 0x04, 0xbb, 0xf4, 0x96, 0xe2, 0x26, 0xf6, + 0x61, 0x01, 0x91, 0x66, 0x31, 0x22, 0xc3, 0x34, 0x34, 0x5f, 0x3f, 0x3f, + 0x91, 0x2f, 0x44, 0x5f, 0xdc, 0xc7, 0x14, 0xb6, 0x03, 0x9f, 0x86, 0x4b, + 0x0e, 0xa3, 0xff, 0xa0, 0x80, 0x02, 0x83, 0xc3, 0xd3, 0x1f, 0x69, 0x52, + 0xd6, 0x9d, 0x64, 0x0f, 0xc9, 0x83, 0xe7, 0x1b, 0xc4, 0x70, 0xac, 0x94, + 0xe7, 0xc3, 0xa4, 0x6a, 0x2c, 0xbd, 0xb8, 0x9e, 0x69, 0xd8, 0xbe, 0x0a, + 0x8f, 0x16, 0x63, 0x5a, 0x68, 0x71, 0x80, 0x7b, 0x30, 0xde, 0x15, 0x04, + 0xbf, 0xcc, 0xd3, 0xbf, 0x3e, 0x48, 0x05, 0x55, 0x7a, 0xb3, 0xd7, 0x10, + 0x0c, 0x03, 0xfc, 0x9b, 0xfd, 0x08, 0xa7, 0x8c, 0x8c, 0xdb, 0xa7, 0x8e, + 0xf1, 0x1e, 0x63, 0xdc, 0xb3, 0x01, 0x2f, 0x7f, 0xaf, 0x57, 0xc3, 0x3c, + 0x48, 0xa7, 0x83, 0x68, 0x21, 0xa7, 0x2f, 0xe7, 0xa7, 0x3f, 0xf0, 0xb5, + 0x0c, 0xfc, 0xf5, 0x84, 0xd1, 0x53, 0xbc, 0x0e, 0x72, 0x4f, 0x60, 0x0c, + 0x42, 0xb8, 0x98, 0xad, 0x19, 0x88, 0x57, 0xd7, 0x04, 0xec, 0x87, 0xbf, + 0x7e, 0x87, 0x4e, 0xa3, 0x21, 0xf9, 0x53, 0xfd, 0x36, 0x98, 0x48, 0x8d, + 0xd6, 0xf8, 0xbb, 0x48, 0xf2, 0x29, 0xc8, 0x64, 0xd1, 0xcc, 0x54, 0x48, + 0x53, 0x8b, 0xaf, 0xb7, 0x65, 0x1e, 0xbf, 0x29, 0x33, 0x29, 0xd9, 0x29, + 0x60, 0x48, 0xf8, 0xff, 0x91, 0xbc, 0x57, 0x58, 0xe5, 0x35, 0x2e, 0xbb, + 0x69, 0xb6, 0x59, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x1d, + 0x30, 0x82, 0x01, 0x19, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, + 0x18, 0x30, 0x16, 0x80, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, + 0xab, 0x05, 0x64, 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, + 0x4e, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0xc3, 0x9c, 0xf3, 0xfc, 0xd3, 0x46, 0x08, 0x34, 0xbb, 0xce, 0x46, 0x7f, + 0xa0, 0x7c, 0x5b, 0xf3, 0xe2, 0x08, 0xcb, 0x59, 0x30, 0x12, 0x06, 0x03, + 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, + 0xff, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, + 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x35, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x2e, 0x30, 0x2c, 0x30, 0x2a, 0xa0, 0x28, 0xa0, + 0x26, 0x86, 0x24, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, + 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, + 0x6c, 0x73, 0x2f, 0x67, 0x74, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x2e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x01, 0x01, 0x04, 0x22, 0x30, 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x12, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x64, 0x2e, + 0x63, 0x6f, 0x6d, 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, + 0x30, 0x43, 0x30, 0x41, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, + 0x45, 0x01, 0x07, 0x36, 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, + 0x03, 0x82, 0x01, 0x01, 0x00, 0xa3, 0x58, 0x1e, 0xc6, 0x43, 0x32, 0xac, + 0xac, 0x2f, 0x93, 0x78, 0xb7, 0xea, 0xae, 0x54, 0x40, 0x47, 0x2d, 0x7e, + 0x78, 0x8d, 0x50, 0xf6, 0xf8, 0x66, 0xac, 0xd6, 0x4f, 0x73, 0xd6, 0x44, + 0xef, 0xaf, 0x0b, 0xcc, 0x5b, 0xc1, 0xf4, 0x4f, 0x9a, 0x8f, 0x49, 0x7e, + 0x60, 0xaf, 0xc2, 0x27, 0xc7, 0x16, 0xf1, 0xfb, 0x93, 0x81, 0x90, 0xa9, + 0x7c, 0xef, 0x6f, 0x7e, 0x6e, 0x45, 0x94, 0x16, 0x84, 0xbd, 0xec, 0x49, + 0xf1, 0xc4, 0x0e, 0xf4, 0xaf, 0x04, 0x59, 0x83, 0x87, 0x0f, 0x2c, 0x3b, + 0x97, 0xc3, 0x5a, 0x12, 0x9b, 0x7b, 0x04, 0x35, 0x7b, 0xa3, 0x95, 0x33, + 0x08, 0x7b, 0x93, 0x71, 0x22, 0x42, 0xb3, 0xa9, 0xd9, 0x6f, 0x4f, 0x81, + 0x92, 0xfc, 0x07, 0xb6, 0x79, 0xbc, 0x84, 0x4a, 0x9d, 0x77, 0x09, 0xf1, + 0xc5, 0x89, 0xf2, 0xf0, 0xb4, 0x9c, 0x54, 0xaa, 0x12, 0x7b, 0x0d, 0xba, + 0x4f, 0xef, 0x93, 0x19, 0xec, 0xef, 0x7d, 0x4e, 0x61, 0xa3, 0x8e, 0x76, + 0x9c, 0x59, 0xcf, 0x8c, 0x94, 0xb1, 0x84, 0x97, 0xf7, 0x1a, 0xb9, 0x07, + 0xb8, 0xb2, 0xc6, 0x4f, 0x13, 0x79, 0xdb, 0xbf, 0x4f, 0x51, 0x1b, 0x7f, + 0x69, 0x0d, 0x51, 0x2a, 0xc1, 0xd6, 0x15, 0xff, 0x37, 0x51, 0x34, 0x65, + 0x51, 0xf4, 0x1e, 0xbe, 0x38, 0x6a, 0xec, 0x0e, 0xab, 0xbf, 0x3d, 0x7b, + 0x39, 0x05, 0x7b, 0xf4, 0xf3, 0xfb, 0x1a, 0xa1, 0xd0, 0xc8, 0x7e, 0x4e, + 0x64, 0x8d, 0xcd, 0x8c, 0x61, 0x55, 0x90, 0xfe, 0x3a, 0xca, 0x5d, 0x25, + 0x0f, 0xf8, 0x1d, 0xa3, 0x4a, 0x74, 0x56, 0x4f, 0x1a, 0x55, 0x40, 0x70, + 0x75, 0x25, 0xa6, 0x33, 0x2e, 0xba, 0x4b, 0xa5, 0x5d, 0x53, 0x9a, 0x0d, + 0x30, 0xe1, 0x8d, 0x5f, 0x61, 0x2c, 0xaf, 0xcc, 0xef, 0xb0, 0x99, 0xa1, + 0x80, 0xff, 0x0b, 0xf2, 0x62, 0x4c, 0x70, 0x26, 0x98, +} + +var certSet2Cert7 = []byte{ + 0x30, 0x82, 0x04, 0x2b, 0x30, 0x82, 0x03, 0x13, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x12, 0x11, 0x20, 0x96, 0xf6, 0xc8, 0x03, 0x7c, 0x9e, 0x07, + 0xb1, 0x38, 0xbf, 0x2e, 0x72, 0x10, 0x8a, 0xd7, 0xed, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, + 0x30, 0x3d, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x46, 0x52, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x0a, + 0x13, 0x08, 0x43, 0x65, 0x72, 0x74, 0x70, 0x6c, 0x75, 0x73, 0x31, 0x1b, + 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x20, 0x32, 0x20, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, + 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x37, 0x30, 0x36, 0x30, + 0x35, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x31, 0x39, + 0x30, 0x36, 0x32, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, + 0x40, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x46, 0x52, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x09, 0x4b, 0x45, 0x59, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x53, 0x31, 0x1d, + 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x14, 0x43, 0x4c, 0x41, + 0x53, 0x53, 0x20, 0x32, 0x20, 0x4b, 0x45, 0x59, 0x4e, 0x45, 0x43, 0x54, + 0x49, 0x53, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, + 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, + 0x01, 0x00, 0xc6, 0xbe, 0xfe, 0x44, 0x23, 0x04, 0xd4, 0xef, 0x2f, 0x3b, + 0x86, 0xaa, 0x35, 0x58, 0x81, 0xd1, 0xe1, 0x9a, 0xd6, 0xb1, 0xd4, 0x27, + 0x45, 0x28, 0xfc, 0xd1, 0x1e, 0x46, 0x85, 0xba, 0x54, 0x23, 0x11, 0x7d, + 0xe0, 0x66, 0x3f, 0xd4, 0xa3, 0x57, 0x66, 0x78, 0xf9, 0x6b, 0xeb, 0x74, + 0x7c, 0x2a, 0xb8, 0x37, 0xa5, 0xe8, 0x70, 0xae, 0x82, 0xb5, 0x4e, 0xd4, + 0x81, 0xfe, 0x5b, 0xe2, 0xea, 0xe7, 0x22, 0x16, 0xf8, 0xf9, 0xd7, 0xba, + 0x3a, 0xf6, 0x88, 0x56, 0xdc, 0xc4, 0xf2, 0xa0, 0xa4, 0xe5, 0x75, 0x06, + 0x60, 0x72, 0x2b, 0xfb, 0xf5, 0x94, 0xee, 0x2c, 0x83, 0x28, 0xde, 0x91, + 0x9a, 0xb3, 0x83, 0x3a, 0xb0, 0x9f, 0x08, 0xfa, 0xdd, 0xd8, 0x9e, 0x8c, + 0x24, 0xe6, 0xdf, 0x66, 0x5b, 0xc8, 0x7e, 0xa3, 0x62, 0x4d, 0x3f, 0x3a, + 0x85, 0x23, 0xec, 0xe8, 0x71, 0x8f, 0x0a, 0x00, 0xac, 0x89, 0x6d, 0x7e, + 0xd8, 0x72, 0xe5, 0xdd, 0xc1, 0x94, 0x8e, 0x5f, 0xe4, 0x73, 0xe6, 0xc1, + 0xc6, 0x0c, 0x87, 0x58, 0x4f, 0x37, 0xda, 0xd1, 0xa9, 0x88, 0x26, 0x76, + 0xb4, 0xee, 0x11, 0x8d, 0xf6, 0xad, 0xb2, 0xa7, 0xbc, 0x73, 0xc4, 0xcd, + 0x1c, 0x6e, 0x1a, 0xe6, 0x8d, 0x72, 0x56, 0x44, 0xa0, 0x98, 0xf7, 0x92, + 0xf9, 0xd7, 0x79, 0x9b, 0x03, 0xe6, 0x68, 0x5f, 0xa4, 0x5c, 0x7c, 0x3d, + 0x50, 0xb4, 0x83, 0xcc, 0xe5, 0xac, 0x0d, 0xe1, 0x3e, 0x4f, 0x14, 0xf2, + 0xb4, 0xe4, 0x7d, 0xbf, 0x71, 0xa4, 0xc3, 0x97, 0x73, 0x38, 0xd6, 0x52, + 0x7c, 0xc8, 0xa4, 0xb5, 0xea, 0xe9, 0xb2, 0x54, 0x56, 0xd4, 0xeb, 0xb8, + 0x57, 0x3a, 0x40, 0x52, 0x5a, 0x5e, 0x46, 0x27, 0xa3, 0x7b, 0x30, 0x2d, + 0x08, 0x3d, 0x85, 0x1e, 0x9a, 0xf0, 0x32, 0xa8, 0xf2, 0x10, 0xa2, 0x83, + 0x9b, 0xe2, 0x28, 0xf6, 0x9d, 0xcb, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, + 0x82, 0x01, 0x20, 0x30, 0x82, 0x01, 0x1c, 0x30, 0x12, 0x06, 0x03, 0x55, + 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, + 0x02, 0x01, 0x00, 0x30, 0x7d, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x76, + 0x30, 0x74, 0x30, 0x38, 0x06, 0x0b, 0x2b, 0x06, 0x04, 0x01, 0x81, 0xad, + 0x5a, 0x02, 0x05, 0x03, 0x03, 0x30, 0x29, 0x30, 0x27, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1b, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x6b, 0x65, 0x79, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x43, + 0x30, 0x38, 0x06, 0x0b, 0x2b, 0x06, 0x04, 0x01, 0x81, 0xad, 0x5a, 0x02, + 0x05, 0x01, 0x03, 0x30, 0x29, 0x30, 0x27, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1b, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x6b, 0x65, 0x79, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x43, 0x30, 0x37, + 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0xa0, + 0x2a, 0xa0, 0x28, 0x86, 0x26, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x77, 0x77, 0x77, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x70, 0x6c, 0x75, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x52, 0x4c, 0x2f, 0x63, 0x6c, 0x61, + 0x73, 0x73, 0x32, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, + 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, + 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x00, 0x11, + 0x41, 0xdf, 0x3b, 0x9d, 0x3b, 0xcb, 0xb8, 0xa2, 0xc1, 0x33, 0x92, 0xa8, + 0x81, 0xcc, 0xe5, 0x7d, 0xe7, 0x99, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, + 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xe3, 0x73, 0x2d, 0xdf, 0xcb, + 0x0e, 0x28, 0x0c, 0xde, 0xdd, 0xb3, 0xa4, 0xca, 0x79, 0xb8, 0x8e, 0xbb, + 0xe8, 0x30, 0x89, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x08, + 0x88, 0xfe, 0x1f, 0xa2, 0xca, 0xcd, 0xe2, 0xa0, 0xf1, 0x2e, 0x7c, 0x67, + 0x49, 0xfb, 0xdc, 0x94, 0xac, 0x7f, 0x41, 0x0d, 0x78, 0x01, 0xba, 0x31, + 0xf7, 0x9b, 0xfb, 0x31, 0x18, 0x77, 0x2f, 0x66, 0x25, 0x94, 0xb8, 0x6d, + 0x16, 0x74, 0x81, 0xf1, 0xc0, 0xae, 0x67, 0xc6, 0x14, 0x45, 0x7a, 0x01, + 0xd1, 0x13, 0x88, 0xfc, 0xe2, 0x8d, 0x22, 0x1d, 0xbd, 0x1e, 0x0c, 0xc7, + 0xa9, 0x7e, 0xd0, 0xc3, 0x97, 0xf6, 0x37, 0x5b, 0x41, 0x5e, 0x67, 0x94, + 0x8e, 0xab, 0x69, 0x02, 0x17, 0x18, 0xf5, 0x4d, 0x38, 0xc2, 0x49, 0x28, + 0x09, 0x6e, 0x5a, 0x9b, 0xa6, 0x27, 0xdb, 0xc0, 0x5f, 0x8f, 0x44, 0x9c, + 0x90, 0x65, 0x99, 0xd8, 0xb3, 0x2e, 0xc1, 0x92, 0xee, 0x1a, 0x9d, 0x0f, + 0x72, 0x45, 0x20, 0xfa, 0x2c, 0x0c, 0x9c, 0x5d, 0xcd, 0x5b, 0x54, 0x41, + 0x54, 0x4f, 0xd3, 0xe2, 0xc7, 0x59, 0x84, 0x3f, 0x17, 0x7b, 0x7d, 0x0e, + 0xc2, 0xef, 0x62, 0xc7, 0xba, 0xb1, 0x26, 0x6c, 0x83, 0x4e, 0xd3, 0x19, + 0xc5, 0xff, 0x56, 0xa7, 0xb4, 0x45, 0x3f, 0x7a, 0x9e, 0xfa, 0xd0, 0x39, + 0x3e, 0x80, 0x46, 0x75, 0x5d, 0x5a, 0x79, 0x7a, 0x33, 0xc5, 0x01, 0xbc, + 0x02, 0x44, 0xce, 0x1b, 0xc0, 0x31, 0x4e, 0x47, 0x96, 0x15, 0x6e, 0xe7, + 0xe4, 0x76, 0xf0, 0xc2, 0x90, 0x0d, 0xa1, 0x78, 0xf4, 0x38, 0x00, 0x91, + 0x2b, 0x65, 0x7c, 0x79, 0x13, 0xa8, 0x3e, 0x91, 0x14, 0xdc, 0x88, 0x05, + 0x08, 0xd7, 0x6f, 0x53, 0xf6, 0x15, 0x43, 0xee, 0xc5, 0x53, 0x56, 0x1a, + 0x02, 0xb5, 0xa6, 0xa2, 0x46, 0x8d, 0x1e, 0x13, 0xe4, 0x67, 0xc2, 0x45, + 0x5f, 0x40, 0x5e, 0x10, 0x42, 0x58, 0xb5, 0xcd, 0x44, 0xa3, 0x94, 0x4c, + 0x1c, 0x54, 0x90, 0x4d, 0x91, 0x9a, 0x26, 0x8b, 0xad, 0xa2, 0x80, 0x50, + 0x8d, 0x14, 0x14, +} + +var certSet2Cert8 = []byte{ + 0x30, 0x82, 0x04, 0x38, 0x30, 0x82, 0x03, 0xa1, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x04, 0x07, 0x27, 0x6d, 0xb9, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x75, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0f, + 0x47, 0x54, 0x45, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x1e, 0x47, 0x54, 0x45, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, + 0x72, 0x75, 0x73, 0x74, 0x20, 0x53, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x23, 0x30, 0x21, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1a, 0x47, 0x54, 0x45, 0x20, 0x43, + 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, + 0x0d, 0x31, 0x30, 0x31, 0x31, 0x33, 0x30, 0x31, 0x36, 0x33, 0x35, 0x32, + 0x31, 0x5a, 0x17, 0x0d, 0x31, 0x38, 0x30, 0x38, 0x31, 0x30, 0x31, 0x35, + 0x33, 0x34, 0x32, 0x36, 0x5a, 0x30, 0x5a, 0x31, 0x0b, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, 0x45, 0x31, 0x12, 0x30, 0x10, + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x09, 0x42, 0x61, 0x6c, 0x74, 0x69, + 0x6d, 0x6f, 0x72, 0x65, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, + 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x19, + 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x43, 0x79, + 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6f, 0x6f, + 0x74, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, + 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, + 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xa3, 0x04, + 0xbb, 0x22, 0xab, 0x98, 0x3d, 0x57, 0xe8, 0x26, 0x72, 0x9a, 0xb5, 0x79, + 0xd4, 0x29, 0xe2, 0xe1, 0xe8, 0x95, 0x80, 0xb1, 0xb0, 0xe3, 0x5b, 0x8e, + 0x2b, 0x29, 0x9a, 0x64, 0xdf, 0xa1, 0x5d, 0xed, 0xb0, 0x09, 0x05, 0x6d, + 0xdb, 0x28, 0x2e, 0xce, 0x62, 0xa2, 0x62, 0xfe, 0xb4, 0x88, 0xda, 0x12, + 0xeb, 0x38, 0xeb, 0x21, 0x9d, 0xc0, 0x41, 0x2b, 0x01, 0x52, 0x7b, 0x88, + 0x77, 0xd3, 0x1c, 0x8f, 0xc7, 0xba, 0xb9, 0x88, 0xb5, 0x6a, 0x09, 0xe7, + 0x73, 0xe8, 0x11, 0x40, 0xa7, 0xd1, 0xcc, 0xca, 0x62, 0x8d, 0x2d, 0xe5, + 0x8f, 0x0b, 0xa6, 0x50, 0xd2, 0xa8, 0x50, 0xc3, 0x28, 0xea, 0xf5, 0xab, + 0x25, 0x87, 0x8a, 0x9a, 0x96, 0x1c, 0xa9, 0x67, 0xb8, 0x3f, 0x0c, 0xd5, + 0xf7, 0xf9, 0x52, 0x13, 0x2f, 0xc2, 0x1b, 0xd5, 0x70, 0x70, 0xf0, 0x8f, + 0xc0, 0x12, 0xca, 0x06, 0xcb, 0x9a, 0xe1, 0xd9, 0xca, 0x33, 0x7a, 0x77, + 0xd6, 0xf8, 0xec, 0xb9, 0xf1, 0x68, 0x44, 0x42, 0x48, 0x13, 0xd2, 0xc0, + 0xc2, 0xa4, 0xae, 0x5e, 0x60, 0xfe, 0xb6, 0xa6, 0x05, 0xfc, 0xb4, 0xdd, + 0x07, 0x59, 0x02, 0xd4, 0x59, 0x18, 0x98, 0x63, 0xf5, 0xa5, 0x63, 0xe0, + 0x90, 0x0c, 0x7d, 0x5d, 0xb2, 0x06, 0x7a, 0xf3, 0x85, 0xea, 0xeb, 0xd4, + 0x03, 0xae, 0x5e, 0x84, 0x3e, 0x5f, 0xff, 0x15, 0xed, 0x69, 0xbc, 0xf9, + 0x39, 0x36, 0x72, 0x75, 0xcf, 0x77, 0x52, 0x4d, 0xf3, 0xc9, 0x90, 0x2c, + 0xb9, 0x3d, 0xe5, 0xc9, 0x23, 0x53, 0x3f, 0x1f, 0x24, 0x98, 0x21, 0x5c, + 0x07, 0x99, 0x29, 0xbd, 0xc6, 0x3a, 0xec, 0xe7, 0x6e, 0x86, 0x3a, 0x6b, + 0x97, 0x74, 0x63, 0x33, 0xbd, 0x68, 0x18, 0x31, 0xf0, 0x78, 0x8d, 0x76, + 0xbf, 0xfc, 0x9e, 0x8e, 0x5d, 0x2a, 0x86, 0xa7, 0x4d, 0x90, 0xdc, 0x27, + 0x1a, 0x39, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x6a, 0x30, + 0x82, 0x01, 0x66, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, + 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x03, 0x30, + 0x4e, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x47, 0x30, 0x45, 0x30, 0x43, + 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x3b, 0x30, 0x39, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x2d, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x6f, 0x72, 0x79, 0x2e, 0x63, 0x66, 0x6d, 0x30, 0x0e, 0x06, 0x03, 0x55, + 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, + 0x81, 0x89, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x81, 0x81, 0x30, 0x7f, + 0xa1, 0x79, 0xa4, 0x77, 0x30, 0x75, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, + 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x18, 0x30, 0x16, 0x06, + 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0f, 0x47, 0x54, 0x45, 0x20, 0x43, 0x6f, + 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x27, 0x30, + 0x25, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1e, 0x47, 0x54, 0x45, 0x20, + 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x53, + 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2c, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x31, 0x23, 0x30, 0x21, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x1a, 0x47, 0x54, 0x45, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, + 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, + 0x6f, 0x6f, 0x74, 0x82, 0x02, 0x01, 0xa5, 0x30, 0x45, 0x06, 0x03, 0x55, + 0x1d, 0x1f, 0x04, 0x3e, 0x30, 0x3c, 0x30, 0x3a, 0xa0, 0x38, 0xa0, 0x36, + 0x86, 0x34, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, + 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x74, 0x72, 0x75, 0x73, + 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x67, 0x69, 0x2d, 0x62, 0x69, + 0x6e, 0x2f, 0x43, 0x52, 0x4c, 0x2f, 0x32, 0x30, 0x31, 0x38, 0x2f, 0x63, + 0x64, 0x70, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, + 0x0e, 0x04, 0x16, 0x04, 0x14, 0xe5, 0x9d, 0x59, 0x30, 0x82, 0x47, 0x58, + 0xcc, 0xac, 0xfa, 0x08, 0x54, 0x36, 0x86, 0x7b, 0x3a, 0xb5, 0x04, 0x4d, + 0xf0, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x16, 0xb4, 0x2c, 0xc9, + 0xf1, 0x5e, 0xe1, 0xa2, 0x7b, 0x9b, 0x78, 0x20, 0x7a, 0x4a, 0x70, 0x70, + 0x86, 0x19, 0x00, 0xb7, 0x05, 0x2a, 0xe8, 0xc9, 0x25, 0x39, 0x0f, 0xc3, + 0x64, 0x3c, 0x75, 0x09, 0xd9, 0x89, 0x15, 0x80, 0x07, 0xc2, 0x8d, 0xbc, + 0x29, 0xa5, 0x64, 0x50, 0xcf, 0x71, 0x75, 0x47, 0x23, 0xbd, 0x4d, 0xd8, + 0x7f, 0x77, 0x9a, 0x51, 0x10, 0x6e, 0x4e, 0x1f, 0x20, 0x3c, 0x47, 0x9c, + 0x43, 0x74, 0x7f, 0x96, 0x84, 0x10, 0x4c, 0x13, 0x43, 0xbe, 0xf8, 0xe0, + 0x72, 0x2e, 0xff, 0xbf, 0xae, 0x3c, 0x0a, 0x03, 0x60, 0x82, 0x4b, 0x6f, + 0xf9, 0x9a, 0xc5, 0x1e, 0xf6, 0xaf, 0x90, 0x3b, 0x9f, 0x61, 0x3b, 0x3e, + 0xde, 0x9b, 0x05, 0x1a, 0xc6, 0x2c, 0x3c, 0x57, 0x21, 0x08, 0x0f, 0x54, + 0xfa, 0x28, 0x63, 0x6c, 0xe8, 0x1b, 0x9c, 0x0f, 0xcf, 0xdd, 0x30, 0x44, + 0x13, 0xb9, 0x57, 0xfe, +} + +var certSet2Cert9 = []byte{ + 0x30, 0x82, 0x04, 0x44, 0x30, 0x82, 0x03, 0x2c, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x02, 0x3a, 0x78, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x30, + 0x38, 0x32, 0x39, 0x32, 0x32, 0x32, 0x34, 0x35, 0x38, 0x5a, 0x17, 0x0d, + 0x32, 0x32, 0x30, 0x35, 0x32, 0x30, 0x32, 0x32, 0x32, 0x34, 0x35, 0x38, + 0x5a, 0x30, 0x66, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, + 0x0b, 0x13, 0x14, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x20, 0x53, 0x53, 0x4c, 0x31, + 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x17, 0x47, 0x65, + 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x44, 0x56, 0x20, 0x53, 0x53, + 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x34, 0x30, 0x82, 0x01, + 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, + 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xdf, 0x41, 0x94, 0x7a, 0xda, 0xf7, + 0xe4, 0x31, 0x43, 0xb6, 0xea, 0x01, 0x1b, 0x5c, 0xce, 0x63, 0xea, 0xfa, + 0x6d, 0xa3, 0xd9, 0x6a, 0xee, 0x2d, 0x9a, 0x75, 0xf9, 0xd5, 0x9c, 0x5b, + 0xbd, 0x34, 0xdf, 0xd8, 0x1c, 0xc9, 0x6d, 0xd8, 0x04, 0x88, 0xda, 0x6e, + 0xb5, 0xb7, 0xb5, 0xf0, 0x30, 0xae, 0x40, 0xd6, 0x5d, 0xfa, 0xc4, 0x53, + 0xc1, 0xd4, 0x22, 0x9d, 0x04, 0x4e, 0x11, 0xa6, 0x95, 0xd5, 0x45, 0x7c, + 0x41, 0x05, 0x58, 0xe0, 0x4c, 0xdd, 0xf9, 0xee, 0x55, 0xbd, 0x5f, 0x46, + 0xdc, 0xad, 0x13, 0x08, 0x9d, 0x2c, 0xe4, 0xf7, 0x82, 0xe6, 0x07, 0x2b, + 0x9e, 0x0e, 0x8c, 0x34, 0xa1, 0xce, 0xc4, 0xa1, 0xe0, 0x81, 0x70, 0x86, + 0x00, 0x06, 0x3f, 0x2d, 0xea, 0x7c, 0x9b, 0x28, 0xae, 0x1b, 0x28, 0x8b, + 0x39, 0x09, 0xd3, 0xe7, 0xf0, 0x45, 0xa4, 0xb1, 0xba, 0x11, 0x67, 0x90, + 0x55, 0x7b, 0x8f, 0xde, 0xed, 0x38, 0x5c, 0xa1, 0xe1, 0xe3, 0x83, 0xc4, + 0xc3, 0x72, 0x91, 0x4f, 0x98, 0xee, 0x1c, 0xc2, 0x80, 0xaa, 0x64, 0xa5, + 0x3e, 0x83, 0x62, 0x1c, 0xcc, 0xe0, 0x9e, 0xf8, 0x5a, 0xc0, 0x13, 0x12, + 0x7d, 0xa2, 0xa7, 0x8b, 0xa3, 0xe7, 0x9f, 0x2a, 0xd7, 0x9b, 0xca, 0xcb, + 0xed, 0x97, 0x01, 0x9c, 0x28, 0x84, 0x51, 0x04, 0x50, 0x41, 0xbc, 0xb4, + 0xfc, 0x78, 0xe9, 0x1b, 0xcf, 0x14, 0xea, 0x1f, 0x0f, 0xfc, 0x2e, 0x01, + 0x32, 0x8d, 0xb6, 0x35, 0xcb, 0x0a, 0x18, 0x3b, 0xec, 0x5a, 0x3e, 0x3c, + 0x1b, 0xd3, 0x99, 0x43, 0x1e, 0x2f, 0xf7, 0xbd, 0xf3, 0x5b, 0x12, 0xb9, + 0x07, 0x5e, 0xed, 0x3e, 0xd1, 0xa9, 0x87, 0xcc, 0x77, 0x72, 0x27, 0xd4, + 0xd9, 0x75, 0xa2, 0x63, 0x4b, 0x93, 0x36, 0xbd, 0xe5, 0x5c, 0xd7, 0xbf, + 0x5f, 0x79, 0x0d, 0xb3, 0x32, 0xa7, 0x0b, 0xb2, 0x63, 0x23, 0x02, 0x03, + 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x1d, 0x30, 0x82, 0x01, 0x19, 0x30, + 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, + 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, 0xab, 0x05, 0x64, 0x0c, 0x11, + 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, 0x4e, 0x30, 0x1d, 0x06, 0x03, + 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x0b, 0x50, 0xec, 0x77, 0xef, + 0x2a, 0x9b, 0xff, 0xec, 0x03, 0xa1, 0x0a, 0xff, 0xad, 0xc6, 0xe4, 0x2a, + 0x18, 0xc7, 0x3e, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, + 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, + 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, + 0x02, 0x01, 0x06, 0x30, 0x35, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2e, + 0x30, 0x2c, 0x30, 0x2a, 0xa0, 0x28, 0xa0, 0x26, 0x86, 0x24, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x67, 0x74, + 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x2e, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x22, + 0x30, 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x30, 0x01, 0x86, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, + 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x64, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x4c, + 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, 0x41, 0x06, + 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07, 0x36, 0x30, + 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, + 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, + 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x2f, 0x63, 0x70, 0x73, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, + 0x33, 0x24, 0xd5, 0x90, 0xaa, 0x29, 0x0c, 0x35, 0xb9, 0x2f, 0xc3, 0xc7, + 0x42, 0x93, 0xc0, 0xc6, 0x10, 0x4b, 0x03, 0x08, 0x76, 0x84, 0x10, 0xa2, + 0xe0, 0xe7, 0x53, 0x12, 0x27, 0xf2, 0x0a, 0xda, 0x7f, 0x3a, 0xdc, 0xfd, + 0x5c, 0x79, 0x5a, 0x8f, 0x17, 0x74, 0x43, 0x53, 0xb1, 0xd5, 0xd1, 0x5d, + 0x59, 0xb9, 0xa6, 0x84, 0x64, 0xca, 0xf1, 0x3a, 0x0a, 0x59, 0x96, 0x10, + 0xbf, 0xa9, 0x81, 0x57, 0x8b, 0x5c, 0x87, 0xdc, 0x7f, 0xe3, 0xe4, 0xbb, + 0x05, 0x7a, 0xa0, 0x32, 0x09, 0x13, 0x4e, 0x10, 0x81, 0x28, 0x1f, 0x9c, + 0x03, 0x62, 0xbc, 0xf4, 0x01, 0xb5, 0x29, 0x83, 0x46, 0x07, 0xb9, 0xe7, + 0xb8, 0x5d, 0xc8, 0xe9, 0xd1, 0xdd, 0xad, 0x3b, 0xf8, 0x34, 0xdb, 0xc1, + 0xd1, 0x95, 0xa9, 0x91, 0x18, 0xed, 0x3c, 0x2c, 0x37, 0x11, 0x4d, 0xcc, + 0xfe, 0x53, 0x3e, 0x50, 0x43, 0xf9, 0xc3, 0x56, 0x41, 0xac, 0x53, 0x9b, + 0x6c, 0x05, 0xb2, 0x9a, 0xe2, 0xe0, 0x59, 0x57, 0x30, 0x32, 0xb6, 0x26, + 0x4e, 0x13, 0x25, 0xcd, 0xfa, 0x48, 0x70, 0x0f, 0x75, 0x55, 0x60, 0x11, + 0xf5, 0x3b, 0xd5, 0x5e, 0x5a, 0x3c, 0x8b, 0x5b, 0x0f, 0x0f, 0x62, 0x42, + 0x48, 0x61, 0x85, 0x8b, 0x10, 0xf4, 0xc1, 0x88, 0xbf, 0x7f, 0x5f, 0x8a, + 0xc2, 0xd7, 0xcd, 0x2b, 0x94, 0x5c, 0x1f, 0x34, 0x4a, 0x08, 0xaf, 0xeb, + 0xae, 0x89, 0xa8, 0x48, 0x75, 0x55, 0x95, 0x1d, 0xbb, 0xc0, 0x9a, 0x01, + 0xb9, 0xf4, 0x03, 0x22, 0x3e, 0xd4, 0xe6, 0x52, 0x30, 0x0d, 0x67, 0xb9, + 0xc0, 0x91, 0xfd, 0x2d, 0x4c, 0x30, 0x8e, 0xbd, 0x8c, 0xa5, 0x04, 0x91, + 0xbb, 0xa4, 0xab, 0x7f, 0x0f, 0xd8, 0x6f, 0xf0, 0x66, 0x00, 0xc9, 0xa3, + 0x5c, 0xf5, 0xb0, 0x8f, 0x83, 0xe6, 0x9c, 0x5a, 0xe6, 0xb6, 0xb9, 0xc5, + 0xbc, 0xbe, 0xe4, 0x02, +} + +var certSet2Cert10 = []byte{ + 0x30, 0x82, 0x04, 0x45, 0x30, 0x82, 0x03, 0xae, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x33, 0x65, 0x50, 0x08, 0x79, 0xad, 0x73, 0xe2, 0x30, + 0xb9, 0xe0, 0x1d, 0x0d, 0x7f, 0xac, 0x91, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81, + 0xce, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x5a, 0x41, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, + 0x0c, 0x57, 0x65, 0x73, 0x74, 0x65, 0x72, 0x6e, 0x20, 0x43, 0x61, 0x70, + 0x65, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x09, + 0x43, 0x61, 0x70, 0x65, 0x20, 0x54, 0x6f, 0x77, 0x6e, 0x31, 0x1d, 0x30, + 0x1b, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x14, 0x54, 0x68, 0x61, 0x77, + 0x74, 0x65, 0x20, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x74, 0x69, 0x6e, + 0x67, 0x20, 0x63, 0x63, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, + 0x0b, 0x13, 0x1f, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x73, 0x20, 0x44, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x21, + 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x18, 0x54, 0x68, 0x61, + 0x77, 0x74, 0x65, 0x20, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x75, 0x6d, 0x20, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x31, 0x28, 0x30, + 0x26, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x01, + 0x16, 0x19, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x75, 0x6d, 0x2d, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x40, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, + 0x63, 0x6f, 0x6d, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x31, 0x31, 0x31, + 0x37, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x30, + 0x31, 0x32, 0x33, 0x30, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, + 0x81, 0xa9, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, + 0x13, 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x1f, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, + 0x44, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, + 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, + 0x30, 0x30, 0x36, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, + 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x16, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, + 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, + 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, + 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, + 0xac, 0xa0, 0xf0, 0xfb, 0x80, 0x59, 0xd4, 0x9c, 0xc7, 0xa4, 0xcf, 0x9d, + 0xa1, 0x59, 0x73, 0x09, 0x10, 0x45, 0x0c, 0x0d, 0x2c, 0x6e, 0x68, 0xf1, + 0x6c, 0x5b, 0x48, 0x68, 0x49, 0x59, 0x37, 0xfc, 0x0b, 0x33, 0x19, 0xc2, + 0x77, 0x7f, 0xcc, 0x10, 0x2d, 0x95, 0x34, 0x1c, 0xe6, 0xeb, 0x4d, 0x09, + 0xa7, 0x1c, 0xd2, 0xb8, 0xc9, 0x97, 0x36, 0x02, 0xb7, 0x89, 0xd4, 0x24, + 0x5f, 0x06, 0xc0, 0xcc, 0x44, 0x94, 0x94, 0x8d, 0x02, 0x62, 0x6f, 0xeb, + 0x5a, 0xdd, 0x11, 0x8d, 0x28, 0x9a, 0x5c, 0x84, 0x90, 0x10, 0x7a, 0x0d, + 0xbd, 0x74, 0x66, 0x2f, 0x6a, 0x38, 0xa0, 0xe2, 0xd5, 0x54, 0x44, 0xeb, + 0x1d, 0x07, 0x9f, 0x07, 0xba, 0x6f, 0xee, 0xe9, 0xfd, 0x4e, 0x0b, 0x29, + 0xf5, 0x3e, 0x84, 0xa0, 0x01, 0xf1, 0x9c, 0xab, 0xf8, 0x1c, 0x7e, 0x89, + 0xa4, 0xe8, 0xa1, 0xd8, 0x71, 0x65, 0x0d, 0xa3, 0x51, 0x7b, 0xee, 0xbc, + 0xd2, 0x22, 0x60, 0x0d, 0xb9, 0x5b, 0x9d, 0xdf, 0xba, 0xfc, 0x51, 0x5b, + 0x0b, 0xaf, 0x98, 0xb2, 0xe9, 0x2e, 0xe9, 0x04, 0xe8, 0x62, 0x87, 0xde, + 0x2b, 0xc8, 0xd7, 0x4e, 0xc1, 0x4c, 0x64, 0x1e, 0xdd, 0xcf, 0x87, 0x58, + 0xba, 0x4a, 0x4f, 0xca, 0x68, 0x07, 0x1d, 0x1c, 0x9d, 0x4a, 0xc6, 0xd5, + 0x2f, 0x91, 0xcc, 0x7c, 0x71, 0x72, 0x1c, 0xc5, 0xc0, 0x67, 0xeb, 0x32, + 0xfd, 0xc9, 0x92, 0x5c, 0x94, 0xda, 0x85, 0xc0, 0x9b, 0xbf, 0x53, 0x7d, + 0x2b, 0x09, 0xf4, 0x8c, 0x9d, 0x91, 0x1f, 0x97, 0x6a, 0x52, 0xcb, 0xde, + 0x09, 0x36, 0xa4, 0x77, 0xd8, 0x7b, 0x87, 0x50, 0x44, 0xd5, 0x3e, 0x6e, + 0x29, 0x69, 0xfb, 0x39, 0x49, 0x26, 0x1e, 0x09, 0xa5, 0x80, 0x7b, 0x40, + 0x2d, 0xeb, 0xe8, 0x27, 0x85, 0xc9, 0xfe, 0x61, 0xfd, 0x7e, 0xe6, 0x7c, + 0x97, 0x1d, 0xd5, 0x9d, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x81, 0xc2, + 0x30, 0x81, 0xbf, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, + 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x3b, 0x06, 0x03, + 0x55, 0x1d, 0x20, 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, 0x06, 0x04, 0x55, + 0x1d, 0x20, 0x00, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x73, + 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, + 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x0e, 0x06, + 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, + 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0x7b, 0x5b, 0x45, 0xcf, 0xaf, 0xce, 0xcb, 0x7a, 0xfd, 0x31, 0x92, 0x1a, + 0x6a, 0xb6, 0xf3, 0x46, 0xeb, 0x57, 0x48, 0x50, 0x30, 0x40, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x39, 0x30, 0x37, 0x30, 0x35, 0xa0, 0x33, 0xa0, + 0x31, 0x86, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, + 0x6c, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x50, 0x72, 0x65, 0x6d, 0x69, + 0x75, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x41, 0x2e, 0x63, + 0x72, 0x6c, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x84, 0xa8, 0x4c, + 0xc9, 0x3e, 0x2a, 0xbc, 0x9a, 0xe2, 0xcc, 0x8f, 0x0b, 0xb2, 0x25, 0x77, + 0xc4, 0x61, 0x89, 0x89, 0x63, 0x5a, 0xd4, 0xa3, 0x15, 0x40, 0xd4, 0xfb, + 0x5e, 0x3f, 0xb4, 0x43, 0xea, 0x63, 0x17, 0x2b, 0x6b, 0x99, 0x74, 0x9e, + 0x09, 0xa8, 0xdd, 0xd4, 0x56, 0x15, 0x2e, 0x7a, 0x79, 0x31, 0x5f, 0x63, + 0x96, 0x53, 0x1b, 0x34, 0xd9, 0x15, 0xea, 0x4f, 0x6d, 0x70, 0xca, 0xbe, + 0xf6, 0x82, 0xa9, 0xed, 0xda, 0x85, 0x77, 0xcc, 0x76, 0x1c, 0x6a, 0x81, + 0x0a, 0x21, 0xd8, 0x41, 0x99, 0x7f, 0x5e, 0x2e, 0x82, 0xc1, 0xe8, 0xaa, + 0xf7, 0x93, 0x81, 0x05, 0xaa, 0x92, 0xb4, 0x1f, 0xb7, 0x9a, 0xc0, 0x07, + 0x17, 0xf5, 0xcb, 0xc6, 0xb4, 0x4c, 0x0e, 0xd7, 0x56, 0xdc, 0x71, 0x20, + 0x74, 0x38, 0xd6, 0x74, 0xc6, 0xd6, 0x8f, 0x6b, 0xaf, 0x8b, 0x8d, 0xa0, + 0x6c, 0x29, 0x0b, 0x61, 0xe0, +} + +var certSet2Cert11 = []byte{ + 0x30, 0x82, 0x04, 0x4d, 0x30, 0x82, 0x03, 0x35, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x0b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x44, 0x4e, 0xf0, + 0x36, 0x31, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x57, 0x31, 0x0b, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30, 0x17, + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61, 0x31, + 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x07, 0x52, 0x6f, + 0x6f, 0x74, 0x20, 0x43, 0x41, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x12, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, + 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30, 0x1e, + 0x17, 0x0d, 0x31, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x4c, 0x31, 0x0b, 0x30, 0x09, + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30, + 0x17, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61, + 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x19, 0x41, + 0x6c, 0x70, 0x68, 0x61, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, + 0x20, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x2d, 0x20, 0x47, 0x32, + 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, + 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xda, 0x01, 0xec, + 0xe4, 0xec, 0x73, 0x60, 0xfb, 0x7e, 0x8f, 0x6a, 0xb7, 0xc6, 0x17, 0xe3, + 0x92, 0x64, 0x32, 0xd4, 0xac, 0x00, 0xd9, 0xa2, 0x0f, 0xb9, 0xed, 0xee, + 0x6b, 0x8a, 0x86, 0xca, 0x92, 0x67, 0xd9, 0x74, 0xd7, 0x5d, 0x47, 0x02, + 0x3c, 0x8f, 0x40, 0xd6, 0x9e, 0x6d, 0x14, 0xcd, 0xc3, 0xda, 0x29, 0x39, + 0xa7, 0x0f, 0x05, 0x0a, 0x68, 0xa2, 0x66, 0x1a, 0x1e, 0xc4, 0xb2, 0x8b, + 0x76, 0x58, 0xe5, 0xab, 0x5d, 0x1d, 0x8f, 0x40, 0xb3, 0x39, 0x8b, 0xef, + 0x1e, 0x83, 0x7d, 0x22, 0xd0, 0xe3, 0xa9, 0x00, 0x2e, 0xec, 0x53, 0xcf, + 0x62, 0x19, 0x85, 0x44, 0x28, 0x4c, 0xc0, 0x27, 0xcb, 0x7b, 0x0e, 0xec, + 0x10, 0x64, 0x00, 0x10, 0xa4, 0x05, 0xcc, 0xa0, 0x72, 0xbe, 0x41, 0x6c, + 0x31, 0x5b, 0x48, 0xe4, 0xb1, 0xec, 0xb9, 0x23, 0xeb, 0x55, 0x4d, 0xd0, + 0x7d, 0x62, 0x4a, 0xa5, 0xb4, 0xa5, 0xa4, 0x59, 0x85, 0xc5, 0x25, 0x91, + 0xa6, 0xfe, 0xa6, 0x09, 0x9f, 0x06, 0x10, 0x6d, 0x8f, 0x81, 0x0c, 0x64, + 0x40, 0x5e, 0x73, 0x00, 0x9a, 0xe0, 0x2e, 0x65, 0x98, 0x54, 0x10, 0x00, + 0x70, 0x98, 0xc8, 0xe1, 0xed, 0x34, 0x5f, 0xd8, 0x9c, 0xc7, 0x0d, 0xc0, + 0xd6, 0x23, 0x59, 0x45, 0xfc, 0xfe, 0x55, 0x7a, 0x86, 0xee, 0x94, 0x60, + 0x22, 0xf1, 0xae, 0xd1, 0xe6, 0x55, 0x46, 0xf6, 0x99, 0xc5, 0x1b, 0x08, + 0x74, 0x5f, 0xac, 0xb0, 0x64, 0x84, 0x8f, 0x89, 0x38, 0x1c, 0xa1, 0xa7, + 0x90, 0x21, 0x4f, 0x02, 0x6e, 0xbd, 0xe0, 0x61, 0x67, 0xd4, 0xf8, 0x42, + 0x87, 0x0f, 0x0a, 0xf7, 0xc9, 0x04, 0x6d, 0x2a, 0xa9, 0x2f, 0xef, 0x42, + 0xa5, 0xdf, 0xdd, 0xa3, 0x53, 0xdb, 0x98, 0x1e, 0x81, 0xf9, 0x9a, 0x72, + 0x7b, 0x5a, 0xde, 0x4f, 0x3e, 0x7f, 0xa2, 0x58, 0xa0, 0xe2, 0x17, 0xad, + 0x67, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x23, 0x30, 0x82, + 0x01, 0x1f, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, + 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, + 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, + 0x01, 0x00, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, + 0x14, 0xf5, 0xcd, 0xd5, 0x3c, 0x08, 0x50, 0xf9, 0x6a, 0x4f, 0x3a, 0xb7, + 0x97, 0xda, 0x56, 0x83, 0xe6, 0x69, 0xd2, 0x68, 0xf7, 0x30, 0x45, 0x06, + 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3e, 0x30, 0x3c, 0x30, 0x3a, 0x06, 0x04, + 0x55, 0x1d, 0x20, 0x00, 0x30, 0x32, 0x30, 0x30, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x24, 0x68, 0x74, 0x74, 0x70, + 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x30, 0x33, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x2c, 0x30, 0x2a, 0x30, 0x28, 0xa0, 0x26, 0xa0, + 0x24, 0x86, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, + 0x6c, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e, + 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x72, + 0x6c, 0x30, 0x3d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, + 0x01, 0x04, 0x31, 0x30, 0x2f, 0x30, 0x2d, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x6f, + 0x6f, 0x74, 0x72, 0x31, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, + 0x18, 0x30, 0x16, 0x80, 0x14, 0x60, 0x7b, 0x66, 0x1a, 0x45, 0x0d, 0x97, + 0xca, 0x89, 0x50, 0x2f, 0x7d, 0x04, 0xcd, 0x34, 0xa8, 0xff, 0xfc, 0xfd, + 0x4b, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x60, 0x40, 0x68, + 0x16, 0x47, 0xe7, 0x16, 0x8d, 0xdb, 0x5c, 0xa1, 0x56, 0x2a, 0xcb, 0xf4, + 0x5c, 0x9b, 0xb0, 0x1e, 0xa2, 0x4b, 0xf5, 0xcb, 0x02, 0x3f, 0xf8, 0x0b, + 0xa1, 0xf2, 0xa7, 0x42, 0xd4, 0xb7, 0x4c, 0xeb, 0xe3, 0x66, 0x80, 0xf3, + 0x25, 0x43, 0x78, 0x2e, 0x1b, 0x17, 0x56, 0x07, 0x52, 0x18, 0xcb, 0xd1, + 0xa8, 0xec, 0xe6, 0xfb, 0x73, 0x3e, 0xa4, 0x62, 0x8c, 0x80, 0xb4, 0xd2, + 0xc5, 0x12, 0x73, 0xa3, 0xd3, 0xfa, 0x02, 0x38, 0xbe, 0x63, 0x3d, 0x84, + 0xb8, 0x99, 0xc1, 0xf1, 0xba, 0xf7, 0x9f, 0xc3, 0x40, 0xd1, 0x58, 0x18, + 0x53, 0xc1, 0x62, 0xdd, 0xaf, 0x18, 0x42, 0x7f, 0x34, 0x4e, 0xc5, 0x43, + 0xd5, 0x71, 0xb0, 0x30, 0x00, 0xc7, 0xe3, 0x90, 0xae, 0x3f, 0x57, 0x86, + 0x97, 0xce, 0xea, 0x0c, 0x12, 0x8e, 0x22, 0x70, 0xe3, 0x66, 0xa7, 0x54, + 0x7f, 0x2e, 0x28, 0xcb, 0xd4, 0x54, 0xd0, 0xb3, 0x1e, 0x62, 0x67, 0x08, + 0xf9, 0x27, 0xe1, 0xcb, 0xe3, 0x66, 0xb8, 0x24, 0x1b, 0x89, 0x6a, 0x89, + 0x44, 0x65, 0xf2, 0xd9, 0x4c, 0xd2, 0x58, 0x1c, 0x8c, 0x4e, 0xc0, 0x95, + 0xa1, 0xd4, 0xef, 0x67, 0x2f, 0x38, 0x20, 0xe8, 0x2e, 0xff, 0x96, 0x51, + 0xf0, 0xba, 0xd8, 0x3d, 0x92, 0x70, 0x47, 0x65, 0x1c, 0x9e, 0x73, 0x72, + 0xb4, 0x60, 0x0c, 0x5c, 0xe2, 0xd1, 0x73, 0x76, 0xe0, 0xaf, 0x4e, 0xe2, + 0xe5, 0x37, 0xa5, 0x45, 0x2f, 0x8a, 0x23, 0x3e, 0x87, 0xc7, 0x30, 0xe6, + 0x31, 0x38, 0x7c, 0xf4, 0xdd, 0x52, 0xca, 0xf3, 0x53, 0x04, 0x25, 0x57, + 0x56, 0x66, 0x94, 0xe8, 0x0b, 0xee, 0xe6, 0x03, 0x14, 0x4e, 0xee, 0xfd, + 0x6d, 0x94, 0x64, 0x9e, 0x5e, 0xce, 0x79, 0xd4, 0xb2, 0xa6, 0xcf, 0x40, + 0xb1, 0x44, 0xa8, 0x3e, 0x87, 0x19, 0x5e, 0xe9, 0xf8, 0x21, 0x16, 0x59, + 0x53, +} + +var certSet2Cert12 = []byte{ + 0x30, 0x82, 0x04, 0x4f, 0x30, 0x82, 0x03, 0x37, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x02, 0x3a, 0x6f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, + 0x31, 0x30, 0x35, 0x32, 0x31, 0x33, 0x36, 0x35, 0x30, 0x5a, 0x17, 0x0d, + 0x32, 0x32, 0x30, 0x35, 0x32, 0x30, 0x32, 0x31, 0x33, 0x36, 0x35, 0x30, + 0x5a, 0x30, 0x44, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x14, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, + 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, + 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xe3, 0xbe, 0x7e, 0x0a, + 0x86, 0xa3, 0xcf, 0x6b, 0x6d, 0x3d, 0x2b, 0xa1, 0x97, 0xad, 0x49, 0x24, + 0x4d, 0xd7, 0x77, 0xb9, 0x34, 0x79, 0x08, 0xa5, 0x9e, 0xa2, 0x9e, 0xde, + 0x47, 0x12, 0x92, 0x3d, 0x7e, 0xea, 0x19, 0x86, 0xb1, 0xe8, 0x4f, 0x3d, + 0x5f, 0xf7, 0xd0, 0xa7, 0x77, 0x9a, 0x5b, 0x1f, 0x0a, 0x03, 0xb5, 0x19, + 0x53, 0xdb, 0xa5, 0x21, 0x94, 0x69, 0x63, 0x9d, 0x6a, 0x4c, 0x91, 0x0c, + 0x10, 0x47, 0xbe, 0x11, 0xfa, 0x6c, 0x86, 0x25, 0xb7, 0xab, 0x04, 0x68, + 0x42, 0x38, 0x09, 0x65, 0xf0, 0x14, 0xda, 0x19, 0x9e, 0xfa, 0x6b, 0x0b, + 0xab, 0x62, 0xef, 0x8d, 0xa7, 0xef, 0x63, 0x70, 0x23, 0xa8, 0xaf, 0x81, + 0xf3, 0xd1, 0x6e, 0x88, 0x67, 0x53, 0xec, 0x12, 0xa4, 0x29, 0x75, 0x8a, + 0xa7, 0xf2, 0x57, 0x3d, 0xa2, 0x83, 0x98, 0x97, 0xf2, 0x0a, 0x7d, 0xd4, + 0xe7, 0x43, 0x6e, 0x30, 0x78, 0x62, 0x22, 0x59, 0x59, 0xb8, 0x71, 0x27, + 0x45, 0xaa, 0x0f, 0x66, 0xc6, 0x55, 0x3f, 0xfa, 0x32, 0x17, 0x2b, 0x31, + 0x8f, 0x46, 0xa0, 0xfa, 0x69, 0x14, 0x7c, 0x9d, 0x9f, 0x5a, 0xe2, 0xeb, + 0x33, 0x4e, 0x10, 0xa6, 0xb3, 0xed, 0x77, 0x63, 0xd8, 0xc3, 0x9e, 0xf4, + 0xdd, 0xdf, 0x79, 0x9a, 0x7a, 0xd4, 0xee, 0xde, 0xdd, 0x9a, 0xcc, 0xc3, + 0xb7, 0xa9, 0x5d, 0xcc, 0x11, 0x3a, 0x07, 0xbb, 0x6f, 0x97, 0xa4, 0x01, + 0x23, 0x47, 0x95, 0x1f, 0xa3, 0x77, 0xfa, 0x58, 0x92, 0xc6, 0xc7, 0xd0, + 0xbd, 0xcf, 0x93, 0x18, 0x42, 0xb7, 0x7e, 0xf7, 0x9e, 0x65, 0xea, 0xd5, + 0x3b, 0xca, 0xed, 0xac, 0xc5, 0x70, 0xa1, 0xfe, 0xd4, 0x10, 0x9a, 0xf0, + 0x12, 0x04, 0x44, 0xac, 0x1a, 0x5b, 0x78, 0x50, 0x45, 0x57, 0x4c, 0x6f, + 0xbd, 0x80, 0xcb, 0x81, 0x5c, 0x2d, 0xb3, 0xbc, 0x76, 0xa1, 0x1e, 0x65, + 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x4a, 0x30, 0x82, 0x01, + 0x46, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, + 0x80, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, 0xab, 0x05, 0x64, + 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, 0x4e, 0x30, 0x1d, + 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xd2, 0x6f, 0xf7, + 0x96, 0xf4, 0x85, 0x3f, 0x72, 0x3c, 0x30, 0x7d, 0x23, 0xda, 0x85, 0x78, + 0x9b, 0xa3, 0x7c, 0x5a, 0x7c, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, + 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, + 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, + 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x36, 0x06, 0x03, 0x55, 0x1d, 0x1f, + 0x04, 0x2f, 0x30, 0x2d, 0x30, 0x2b, 0xa0, 0x29, 0xa0, 0x27, 0x86, 0x25, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x31, 0x2e, 0x73, 0x79, + 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, + 0x2f, 0x67, 0x74, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x63, 0x72, + 0x6c, 0x30, 0x2f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, + 0x01, 0x04, 0x23, 0x30, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x67, 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, 0x30, + 0x43, 0x30, 0x41, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, + 0x01, 0x07, 0x36, 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, + 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x29, 0x06, 0x03, + 0x55, 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31, + 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79, + 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d, + 0x35, 0x33, 0x39, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xa0, + 0xd4, 0xf7, 0x2c, 0xfb, 0x74, 0x0b, 0x7f, 0x64, 0xf1, 0xcd, 0x43, 0x6a, + 0x9f, 0x62, 0x53, 0x1c, 0x02, 0x7c, 0x98, 0x90, 0xa2, 0xee, 0x4f, 0x68, + 0xd4, 0x20, 0x1a, 0x73, 0x12, 0x3e, 0x77, 0xb3, 0x50, 0xeb, 0x72, 0xbc, + 0xee, 0x88, 0xbe, 0x7f, 0x17, 0xea, 0x77, 0x8f, 0x83, 0x61, 0x95, 0x4f, + 0x84, 0xa1, 0xcb, 0x32, 0x4f, 0x6c, 0x21, 0xbe, 0xd2, 0x69, 0x96, 0x7d, + 0x63, 0xbd, 0xdc, 0x2b, 0xa8, 0x1f, 0xd0, 0x13, 0x84, 0x70, 0xfe, 0xf6, + 0x35, 0x95, 0x89, 0xf9, 0xa6, 0x77, 0xb0, 0x46, 0xc8, 0xbb, 0xb7, 0x13, + 0xf5, 0xc9, 0x60, 0x69, 0xd6, 0x4c, 0xfe, 0xd2, 0x8e, 0xef, 0xd3, 0x60, + 0xc1, 0x80, 0x80, 0xe1, 0xe7, 0xfb, 0x8b, 0x6f, 0x21, 0x79, 0x4a, 0xe0, + 0xdc, 0xa9, 0x1b, 0xc1, 0xb7, 0xfb, 0xc3, 0x49, 0x59, 0x5c, 0xb5, 0x77, + 0x07, 0x44, 0xd4, 0x97, 0xfc, 0x49, 0x00, 0x89, 0x6f, 0x06, 0x4e, 0x01, + 0x70, 0x19, 0xac, 0x2f, 0x11, 0xc0, 0xe2, 0xe6, 0x0f, 0x2f, 0x86, 0x4b, + 0x8d, 0x7b, 0xc3, 0xb9, 0xa7, 0x2e, 0xf4, 0xf1, 0xac, 0x16, 0x3e, 0x39, + 0x49, 0x51, 0x9e, 0x17, 0x4b, 0x4f, 0x10, 0x3a, 0x5b, 0xa5, 0xa8, 0x92, + 0x6f, 0xfd, 0xfa, 0xd6, 0x0b, 0x03, 0x4d, 0x47, 0x56, 0x57, 0x19, 0xf3, + 0xcb, 0x6b, 0xf5, 0xf3, 0xd6, 0xcf, 0xb0, 0xf5, 0xf5, 0xa3, 0x11, 0xd2, + 0x20, 0x53, 0x13, 0x34, 0x37, 0x05, 0x2c, 0x43, 0x5a, 0x63, 0xdf, 0x8d, + 0x40, 0xd6, 0x85, 0x1e, 0x51, 0xe9, 0x51, 0x17, 0x1e, 0x03, 0x56, 0xc9, + 0xf1, 0x30, 0xad, 0xe7, 0x9b, 0x11, 0xa2, 0xb9, 0xd0, 0x31, 0x81, 0x9b, + 0x68, 0xb1, 0xd9, 0xe8, 0xf3, 0xe6, 0x94, 0x7e, 0xc7, 0xae, 0x13, 0x2f, + 0x87, 0xed, 0xd0, 0x25, 0xb0, 0x68, 0xf9, 0xde, 0x08, 0x5a, 0xf3, 0x29, + 0xcc, 0xd4, 0x92, +} + +var certSet2Cert13 = []byte{ + 0x30, 0x82, 0x04, 0x59, 0x30, 0x82, 0x03, 0x41, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x02, 0x3a, 0x63, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x42, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x32, 0x30, + 0x38, 0x32, 0x37, 0x32, 0x30, 0x34, 0x30, 0x34, 0x30, 0x5a, 0x17, 0x0d, + 0x32, 0x32, 0x30, 0x35, 0x32, 0x30, 0x32, 0x30, 0x34, 0x30, 0x34, 0x30, + 0x5a, 0x30, 0x44, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x14, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, + 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, + 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xb9, 0x27, 0xf9, 0x4f, + 0xd8, 0xf6, 0xb7, 0x15, 0x3f, 0x8f, 0xcd, 0xce, 0xd6, 0x8d, 0x1c, 0x6b, + 0xfd, 0x7f, 0xda, 0x54, 0x21, 0x4e, 0x03, 0xd8, 0xca, 0xd0, 0x72, 0x52, + 0x15, 0xb8, 0xc9, 0x82, 0x5b, 0x58, 0x79, 0x84, 0xff, 0x24, 0x72, 0x6f, + 0xf2, 0x69, 0x7f, 0xbc, 0x96, 0xd9, 0x9a, 0x7a, 0xc3, 0x3e, 0xa9, 0xcf, + 0x50, 0x22, 0x13, 0x0e, 0x86, 0x19, 0xdb, 0xe8, 0x49, 0xef, 0x8b, 0xe6, + 0xd6, 0x47, 0xf2, 0xfd, 0x73, 0x45, 0x08, 0xae, 0x8f, 0xac, 0x5e, 0xb6, + 0xf8, 0x9e, 0x7c, 0xf7, 0x10, 0xff, 0x92, 0x43, 0x66, 0xef, 0x1c, 0xd4, + 0xee, 0xa1, 0x46, 0x88, 0x11, 0x89, 0x49, 0x79, 0x7a, 0x25, 0xce, 0x4b, + 0x6a, 0xf0, 0xd7, 0x1c, 0x76, 0x1a, 0x29, 0x3c, 0xc9, 0xe4, 0xfd, 0x1e, + 0x85, 0xdc, 0xe0, 0x31, 0x65, 0x05, 0x47, 0x16, 0xac, 0x0a, 0x07, 0x4b, + 0x2e, 0x70, 0x5e, 0x6b, 0x06, 0xa7, 0x6b, 0x3a, 0x6c, 0xaf, 0x05, 0x12, + 0xc4, 0xb2, 0x11, 0x25, 0xd6, 0x3e, 0x97, 0x29, 0xf0, 0x83, 0x6c, 0x57, + 0x1c, 0xd8, 0xa5, 0xef, 0xcc, 0xec, 0xfd, 0xd6, 0x12, 0xf1, 0x3f, 0xdb, + 0x40, 0xb4, 0xae, 0x0f, 0x18, 0xd3, 0xc5, 0xaf, 0x40, 0x92, 0x5d, 0x07, + 0x5e, 0x4e, 0xfe, 0x62, 0x17, 0x37, 0x89, 0xe9, 0x8b, 0x74, 0x26, 0xa2, + 0xed, 0xb8, 0x0a, 0xe7, 0x6c, 0x15, 0x5b, 0x35, 0x90, 0x72, 0xdd, 0xd8, + 0x4d, 0x21, 0xd4, 0x40, 0x23, 0x5c, 0x8f, 0xee, 0x80, 0x31, 0x16, 0xab, + 0x68, 0x55, 0xf4, 0x0e, 0x3b, 0x54, 0xe9, 0x04, 0x4d, 0xf0, 0xcc, 0x4e, + 0x81, 0x5e, 0xe9, 0x6f, 0x52, 0x69, 0x4e, 0xbe, 0xa6, 0x16, 0x6d, 0x42, + 0xf5, 0x51, 0xff, 0xe0, 0x0b, 0x56, 0x3c, 0x98, 0x4f, 0x73, 0x8f, 0x0e, + 0x6f, 0x1a, 0x23, 0xf1, 0xc9, 0xc8, 0xd9, 0xdf, 0xbc, 0xec, 0x52, 0xd7, + 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x54, 0x30, 0x82, 0x01, + 0x50, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, + 0x80, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, 0xab, 0x05, 0x64, + 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, 0x4e, 0x30, 0x1d, + 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x11, 0x4a, 0xd0, + 0x73, 0x39, 0xd5, 0x5b, 0x69, 0x08, 0x5c, 0xba, 0x3d, 0xbf, 0x64, 0x9a, + 0xa8, 0x8b, 0x1c, 0x55, 0xbc, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, + 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, + 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, + 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x3a, 0x06, 0x03, 0x55, 0x1d, 0x1f, + 0x04, 0x33, 0x30, 0x31, 0x30, 0x2f, 0xa0, 0x2d, 0xa0, 0x2b, 0x86, 0x29, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x67, + 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x67, 0x74, 0x67, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, + 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, + 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, 0x41, + 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07, 0x36, + 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, + 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x2a, 0x06, 0x03, 0x55, 0x1d, 0x11, + 0x04, 0x23, 0x30, 0x21, 0xa4, 0x1f, 0x30, 0x1d, 0x31, 0x1b, 0x30, 0x19, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x56, 0x65, 0x72, 0x69, 0x53, + 0x69, 0x67, 0x6e, 0x4d, 0x50, 0x4b, 0x49, 0x2d, 0x32, 0x2d, 0x32, 0x35, + 0x34, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x3c, 0xe5, 0x3d, + 0x5a, 0x1b, 0xa2, 0x37, 0x2a, 0xe3, 0x46, 0xcf, 0x36, 0x96, 0x18, 0x3c, + 0x7b, 0xf1, 0x84, 0xc5, 0x57, 0x86, 0x77, 0x40, 0x9d, 0x35, 0xf0, 0x12, + 0xf0, 0x78, 0x18, 0xfb, 0x22, 0xa4, 0xde, 0x98, 0x4b, 0x78, 0x81, 0xe6, + 0x4d, 0x86, 0xe3, 0x91, 0x0f, 0x42, 0xe3, 0xb9, 0xdc, 0xa0, 0xd6, 0xff, + 0xa9, 0xf8, 0xb1, 0x79, 0x97, 0x99, 0xd1, 0xc3, 0x6c, 0x42, 0xa5, 0x92, + 0x94, 0xe0, 0x5d, 0x0c, 0x33, 0x18, 0x25, 0xc9, 0x2b, 0x95, 0x53, 0xe0, + 0xe5, 0xa9, 0x0c, 0x7d, 0x47, 0xfe, 0x7f, 0x51, 0x31, 0x44, 0x5e, 0xf7, + 0x2a, 0x1e, 0x35, 0xa2, 0x94, 0x32, 0xf7, 0xc9, 0xee, 0xc0, 0xb6, 0xc6, + 0x9a, 0xac, 0xde, 0x99, 0x21, 0x6a, 0x23, 0xa0, 0x38, 0x64, 0xee, 0xa3, + 0xc4, 0x88, 0x73, 0x32, 0x3b, 0x50, 0xce, 0xbf, 0xad, 0xd3, 0x75, 0x1e, + 0xa6, 0xf4, 0xe9, 0xf9, 0x42, 0x6b, 0x60, 0xb2, 0xdd, 0x45, 0xfd, 0x5d, + 0x57, 0x08, 0xce, 0x2d, 0x50, 0xe6, 0x12, 0x32, 0x16, 0x13, 0x8a, 0xf2, + 0x94, 0xa2, 0x9b, 0x47, 0xa8, 0x86, 0x7f, 0xd9, 0x98, 0xe5, 0xf7, 0xe5, + 0x76, 0x74, 0x64, 0xd8, 0x91, 0xbc, 0x84, 0x16, 0x28, 0xd8, 0x25, 0x44, + 0x30, 0x7e, 0x82, 0xd8, 0xac, 0xb1, 0xe4, 0xc0, 0xe4, 0x15, 0x6c, 0xdb, + 0xb6, 0x24, 0x27, 0x02, 0x2a, 0x01, 0x12, 0x85, 0xba, 0x31, 0x88, 0x58, + 0x47, 0x74, 0xe3, 0xb8, 0xd2, 0x64, 0xa6, 0xc3, 0x32, 0x59, 0x2e, 0x29, + 0x4b, 0x45, 0xf1, 0x5b, 0x89, 0x49, 0x2e, 0x82, 0x9a, 0xc6, 0x18, 0x15, + 0x44, 0xd0, 0x2e, 0x64, 0x01, 0x15, 0x68, 0x38, 0xf9, 0xf6, 0xf9, 0x66, + 0x03, 0x0c, 0x55, 0x1b, 0x9d, 0xbf, 0x00, 0x40, 0xae, 0xf0, 0x48, 0x27, + 0x4c, 0xe0, 0x80, 0x5e, 0x2d, 0xb9, 0x2a, 0x15, 0x7a, 0xbc, 0x66, 0xf8, + 0x35, +} + +var certSet2Cert14 = []byte{ + 0x30, 0x82, 0x04, 0x63, 0x30, 0x82, 0x03, 0x4b, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x0b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x44, 0x4e, 0xf0, + 0x3e, 0x20, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x57, 0x31, 0x0b, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30, 0x17, + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61, 0x31, + 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x07, 0x52, 0x6f, + 0x6f, 0x74, 0x20, 0x43, 0x41, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x12, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, + 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30, 0x1e, + 0x17, 0x0d, 0x31, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x60, 0x31, 0x0b, 0x30, 0x09, + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30, + 0x17, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61, + 0x31, 0x36, 0x30, 0x34, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2d, 0x47, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x44, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x53, 0x48, 0x41, + 0x32, 0x35, 0x36, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xa9, 0xdd, 0xcc, 0x0e, 0xb3, 0xe2, 0x32, + 0x39, 0xdd, 0x49, 0x22, 0xa8, 0x13, 0x69, 0x93, 0x87, 0x88, 0xe1, 0x0c, + 0xee, 0x71, 0x7d, 0xbd, 0x90, 0x87, 0x96, 0x5d, 0x59, 0xf2, 0xcc, 0xb3, + 0xd2, 0x58, 0x57, 0x57, 0xf9, 0x46, 0xef, 0x6c, 0x26, 0xd8, 0x36, 0x42, + 0x8e, 0x7e, 0x30, 0xb3, 0x2f, 0x9a, 0x3e, 0x53, 0x7b, 0x1f, 0x6e, 0xb6, + 0xa2, 0x4c, 0x45, 0x1f, 0x3c, 0xd3, 0x15, 0x93, 0x1c, 0x89, 0xed, 0x3c, + 0xf4, 0x57, 0xde, 0xca, 0xbd, 0xec, 0x06, 0x9a, 0x6a, 0x2a, 0xa0, 0x19, + 0x52, 0x7f, 0x51, 0xd1, 0x74, 0x39, 0x08, 0x9f, 0xab, 0xeb, 0xd7, 0x86, + 0x13, 0x15, 0x97, 0xae, 0x36, 0xc3, 0x54, 0x66, 0x0e, 0x5a, 0xf2, 0xa0, + 0x73, 0x85, 0x31, 0xe3, 0xb2, 0x64, 0x14, 0x6a, 0xff, 0xa5, 0xa2, 0x8e, + 0x24, 0xbb, 0xbd, 0x85, 0x52, 0x15, 0xa2, 0x79, 0xee, 0xf0, 0xb5, 0xee, + 0x3d, 0xb8, 0xf4, 0x7d, 0x80, 0xbc, 0xd9, 0x90, 0x35, 0x65, 0xb8, 0x17, + 0xa9, 0xad, 0xb3, 0x98, 0x9f, 0xa0, 0x7e, 0x7d, 0x6e, 0xfb, 0x3f, 0xad, + 0x7c, 0xc2, 0x1b, 0x59, 0x36, 0x96, 0xda, 0x37, 0x32, 0x4b, 0x4b, 0x5d, + 0x35, 0x02, 0x63, 0x8e, 0xdb, 0xa7, 0xcf, 0x62, 0xee, 0xcc, 0x2e, 0xd4, + 0x8d, 0xc9, 0xbd, 0x3c, 0x6a, 0x91, 0x72, 0xa2, 0x22, 0xa7, 0x72, 0x2d, + 0x20, 0xd1, 0xfa, 0xca, 0x37, 0xda, 0x18, 0x98, 0xe6, 0x16, 0x24, 0x71, + 0x25, 0x4b, 0xc4, 0xe5, 0x7b, 0x89, 0x52, 0x09, 0x02, 0xfd, 0x59, 0x2b, + 0x04, 0x6e, 0xca, 0x07, 0x81, 0xd4, 0xb3, 0xda, 0xda, 0xdb, 0xe3, 0xcc, + 0x80, 0xa8, 0x56, 0x07, 0x06, 0x7c, 0x96, 0x08, 0x37, 0x9d, 0xdb, 0x38, + 0xb6, 0x62, 0x34, 0x91, 0x62, 0x07, 0x74, 0x01, 0x38, 0xd8, 0x72, 0x30, + 0xe2, 0xeb, 0x90, 0x71, 0x26, 0x62, 0xc0, 0x57, 0xf3, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x82, 0x01, 0x25, 0x30, 0x82, 0x01, 0x21, 0x30, 0x0e, + 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, + 0x01, 0x06, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, + 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x1d, + 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xea, 0x4e, 0x7c, + 0xd4, 0x80, 0x2d, 0xe5, 0x15, 0x81, 0x86, 0x26, 0x8c, 0x82, 0x6d, 0xc0, + 0x98, 0xa4, 0xcf, 0x97, 0x0f, 0x30, 0x47, 0x06, 0x03, 0x55, 0x1d, 0x20, + 0x04, 0x40, 0x30, 0x3e, 0x30, 0x3c, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, + 0x30, 0x34, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x02, 0x01, 0x16, 0x26, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, + 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, + 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x30, 0x33, 0x06, 0x03, 0x55, 0x1d, + 0x1f, 0x04, 0x2c, 0x30, 0x2a, 0x30, 0x28, 0xa0, 0x26, 0xa0, 0x24, 0x86, + 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, + 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x6e, + 0x65, 0x74, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x72, 0x6c, 0x30, + 0x3d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, + 0x31, 0x30, 0x2f, 0x30, 0x2d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, + 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x6f, 0x6f, 0x74, + 0x72, 0x31, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, + 0x16, 0x80, 0x14, 0x60, 0x7b, 0x66, 0x1a, 0x45, 0x0d, 0x97, 0xca, 0x89, + 0x50, 0x2f, 0x7d, 0x04, 0xcd, 0x34, 0xa8, 0xff, 0xfc, 0xfd, 0x4b, 0x30, + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, + 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xd7, 0x45, 0x9e, 0xa0, 0xdc, + 0xe0, 0xe3, 0x61, 0x5a, 0x0b, 0x7d, 0x77, 0x84, 0x17, 0x2d, 0x65, 0x5a, + 0x82, 0x9a, 0x8d, 0xa3, 0x27, 0x2a, 0x85, 0xf7, 0xc9, 0xef, 0xe9, 0x86, + 0xfd, 0xd4, 0x47, 0xcd, 0x01, 0x52, 0x96, 0xc5, 0x43, 0xbd, 0x37, 0xb1, + 0xe1, 0xb8, 0xf2, 0xa9, 0xd2, 0x8a, 0x11, 0x84, 0x71, 0x91, 0x15, 0x89, + 0xdc, 0x02, 0x9d, 0x0b, 0xcb, 0x6c, 0x33, 0x85, 0x34, 0x28, 0x9e, 0x20, + 0xb2, 0xb1, 0x97, 0xdc, 0x6d, 0x0b, 0x10, 0xc1, 0x3c, 0xcd, 0x5f, 0xea, + 0x5d, 0xd7, 0x98, 0x31, 0xc5, 0x34, 0x99, 0x5c, 0x00, 0x61, 0x55, 0xc4, + 0x1b, 0x02, 0x5b, 0xc5, 0xe3, 0x89, 0xc8, 0xb4, 0xb8, 0x6f, 0x1e, 0x38, + 0xf2, 0x56, 0x26, 0xe9, 0x41, 0xef, 0x3d, 0xcd, 0xac, 0x99, 0x4f, 0x59, + 0x4a, 0x57, 0x2d, 0x4b, 0x7d, 0xae, 0xc7, 0x88, 0xfb, 0xd6, 0x98, 0x3b, + 0xf5, 0xe5, 0xf0, 0xe8, 0x89, 0x89, 0xb9, 0x8b, 0x03, 0xcb, 0x5a, 0x23, + 0x1f, 0xa4, 0xfd, 0xb8, 0xea, 0xfb, 0x2e, 0x9d, 0xae, 0x6a, 0x73, 0x09, + 0xbc, 0xfc, 0xd5, 0xa0, 0xb5, 0x44, 0x82, 0xab, 0x44, 0x91, 0x2e, 0x50, + 0x2e, 0x57, 0xc1, 0x43, 0xd8, 0x91, 0x04, 0x8b, 0xe9, 0x11, 0x2e, 0x5f, + 0xb4, 0x3f, 0x79, 0xdf, 0x1e, 0xfb, 0x3f, 0x30, 0x00, 0x8b, 0x53, 0xe3, + 0xb7, 0x2c, 0x1d, 0x3b, 0x4d, 0x8b, 0xdc, 0xe4, 0x64, 0x1d, 0x04, 0x58, + 0x33, 0xaf, 0x1b, 0x55, 0xe7, 0xab, 0x0c, 0xbf, 0x30, 0x04, 0x74, 0xe4, + 0xf3, 0x0e, 0x2f, 0x30, 0x39, 0x8d, 0x4b, 0x04, 0x8c, 0x1e, 0x75, 0x66, + 0x66, 0x49, 0xe0, 0xbe, 0x40, 0x34, 0xc7, 0x5c, 0x5a, 0x51, 0x92, 0xba, + 0x12, 0x3c, 0x52, 0xd5, 0x04, 0x82, 0x55, 0x2d, 0x67, 0xa5, 0xdf, 0xb7, + 0x95, 0x7c, 0xee, 0x3f, 0xc3, 0x08, 0xba, 0x04, 0xbe, 0xc0, 0x46, +} + +var certSet2Cert15 = []byte{ + 0x30, 0x82, 0x04, 0x69, 0x30, 0x82, 0x03, 0x51, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x0b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x44, 0x4e, 0xf0, + 0x42, 0x47, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x57, 0x31, 0x0b, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30, 0x17, + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61, 0x31, + 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x07, 0x52, 0x6f, + 0x6f, 0x74, 0x20, 0x43, 0x41, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x12, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, + 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30, 0x1e, + 0x17, 0x0d, 0x31, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x66, 0x31, 0x0b, 0x30, 0x09, + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30, + 0x17, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61, + 0x31, 0x3c, 0x30, 0x3a, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x33, 0x47, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x4f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x43, 0x41, + 0x20, 0x2d, 0x20, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x2d, 0x20, + 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xc7, + 0x0e, 0x6c, 0x3f, 0x23, 0x93, 0x7f, 0xcc, 0x70, 0xa5, 0x9d, 0x20, 0xc3, + 0x0e, 0x53, 0x3f, 0x7e, 0xc0, 0x4e, 0xc2, 0x98, 0x49, 0xca, 0x47, 0xd5, + 0x23, 0xef, 0x03, 0x34, 0x85, 0x74, 0xc8, 0xa3, 0x02, 0x2e, 0x46, 0x5c, + 0x0b, 0x7d, 0xc9, 0x88, 0x9d, 0x4f, 0x8b, 0xf0, 0xf8, 0x9c, 0x6c, 0x8c, + 0x55, 0x35, 0xdb, 0xbf, 0xf2, 0xb3, 0xea, 0xfb, 0xe3, 0x56, 0xe7, 0x4a, + 0x46, 0xd9, 0x13, 0x22, 0xca, 0x36, 0xd5, 0x9b, 0xc1, 0xa8, 0xe3, 0x96, + 0x43, 0x93, 0xf2, 0x0c, 0xbc, 0xe6, 0xf9, 0xe6, 0xe8, 0x99, 0xc8, 0x63, + 0x48, 0x78, 0x7f, 0x57, 0x36, 0x69, 0x1a, 0x19, 0x1d, 0x5a, 0xd1, 0xd4, + 0x7d, 0xc2, 0x9c, 0xd4, 0x7f, 0xe1, 0x80, 0x12, 0xae, 0x7a, 0xea, 0x88, + 0xea, 0x57, 0xd8, 0xca, 0x0a, 0x0a, 0x3a, 0x12, 0x49, 0xa2, 0x62, 0x19, + 0x7a, 0x0d, 0x24, 0xf7, 0x37, 0xeb, 0xb4, 0x73, 0x92, 0x7b, 0x05, 0x23, + 0x9b, 0x12, 0xb5, 0xce, 0xeb, 0x29, 0xdf, 0xa4, 0x14, 0x02, 0xb9, 0x01, + 0xa5, 0xd4, 0xa6, 0x9c, 0x43, 0x64, 0x88, 0xde, 0xf8, 0x7e, 0xfe, 0xe3, + 0xf5, 0x1e, 0xe5, 0xfe, 0xdc, 0xa3, 0xa8, 0xe4, 0x66, 0x31, 0xd9, 0x4c, + 0x25, 0xe9, 0x18, 0xb9, 0x89, 0x59, 0x09, 0xae, 0xe9, 0x9d, 0x1c, 0x6d, + 0x37, 0x0f, 0x4a, 0x1e, 0x35, 0x20, 0x28, 0xe2, 0xaf, 0xd4, 0x21, 0x8b, + 0x01, 0xc4, 0x45, 0xad, 0x6e, 0x2b, 0x63, 0xab, 0x92, 0x6b, 0x61, 0x0a, + 0x4d, 0x20, 0xed, 0x73, 0xba, 0x7c, 0xce, 0xfe, 0x16, 0xb5, 0xdb, 0x9f, + 0x80, 0xf0, 0xd6, 0x8b, 0x6c, 0xd9, 0x08, 0x79, 0x4a, 0x4f, 0x78, 0x65, + 0xda, 0x92, 0xbc, 0xbe, 0x35, 0xf9, 0xb3, 0xc4, 0xf9, 0x27, 0x80, 0x4e, + 0xff, 0x96, 0x52, 0xe6, 0x02, 0x20, 0xe1, 0x07, 0x73, 0xe9, 0x5d, 0x2b, + 0xbd, 0xb2, 0xf1, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x25, + 0x30, 0x82, 0x01, 0x21, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, + 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x12, 0x06, 0x03, + 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, + 0xff, 0x02, 0x01, 0x00, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, + 0x16, 0x04, 0x14, 0x96, 0xde, 0x61, 0xf1, 0xbd, 0x1c, 0x16, 0x29, 0x53, + 0x1c, 0xc0, 0xcc, 0x7d, 0x3b, 0x83, 0x00, 0x40, 0xe6, 0x1a, 0x7c, 0x30, + 0x47, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x40, 0x30, 0x3e, 0x30, 0x3c, + 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x34, 0x30, 0x32, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x26, 0x68, 0x74, + 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, + 0x30, 0x33, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2c, 0x30, 0x2a, 0x30, + 0x28, 0xa0, 0x26, 0xa0, 0x24, 0x86, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x6f, 0x6f, + 0x74, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3d, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x31, 0x30, 0x2f, 0x30, 0x2d, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x21, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x72, 0x31, 0x30, 0x1f, 0x06, 0x03, + 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x60, 0x7b, 0x66, + 0x1a, 0x45, 0x0d, 0x97, 0xca, 0x89, 0x50, 0x2f, 0x7d, 0x04, 0xcd, 0x34, + 0xa8, 0xff, 0xfc, 0xfd, 0x4b, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, + 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, + 0x00, 0x46, 0x2a, 0xee, 0x5e, 0xbd, 0xae, 0x01, 0x60, 0x37, 0x31, 0x11, + 0x86, 0x71, 0x74, 0xb6, 0x46, 0x49, 0xc8, 0x10, 0x16, 0xfe, 0x2f, 0x62, + 0x23, 0x17, 0xab, 0x1f, 0x87, 0xf8, 0x82, 0xed, 0xca, 0xdf, 0x0e, 0x2c, + 0xdf, 0x64, 0x75, 0x8e, 0xe5, 0x18, 0x72, 0xa7, 0x8c, 0x3a, 0x8b, 0xc9, + 0xac, 0xa5, 0x77, 0x50, 0xf7, 0xef, 0x9e, 0xa4, 0xe0, 0xa0, 0x8f, 0x14, + 0x57, 0xa3, 0x2a, 0x5f, 0xec, 0x7e, 0x6d, 0x10, 0xe6, 0xba, 0x8d, 0xb0, + 0x08, 0x87, 0x76, 0x0e, 0x4c, 0xb2, 0xd9, 0x51, 0xbb, 0x11, 0x02, 0xf2, + 0x5c, 0xdd, 0x1c, 0xbd, 0xf3, 0x55, 0x96, 0x0f, 0xd4, 0x06, 0xc0, 0xfc, + 0xe2, 0x23, 0x8a, 0x24, 0x70, 0xd3, 0xbb, 0xf0, 0x79, 0x1a, 0xa7, 0x61, + 0x70, 0x83, 0x8a, 0xaf, 0x06, 0xc5, 0x20, 0xd8, 0xa1, 0x63, 0xd0, 0x6c, + 0xae, 0x4f, 0x32, 0xd7, 0xae, 0x7c, 0x18, 0x45, 0x75, 0x05, 0x29, 0x77, + 0xdf, 0x42, 0x40, 0x64, 0x64, 0x86, 0xbe, 0x2a, 0x76, 0x09, 0x31, 0x6f, + 0x1d, 0x24, 0xf4, 0x99, 0xd0, 0x85, 0xfe, 0xf2, 0x21, 0x08, 0xf9, 0xc6, + 0xf6, 0xf1, 0xd0, 0x59, 0xed, 0xd6, 0x56, 0x3c, 0x08, 0x28, 0x03, 0x67, + 0xba, 0xf0, 0xf9, 0xf1, 0x90, 0x16, 0x47, 0xae, 0x67, 0xe6, 0xbc, 0x80, + 0x48, 0xe9, 0x42, 0x76, 0x34, 0x97, 0x55, 0x69, 0x24, 0x0e, 0x83, 0xd6, + 0xa0, 0x2d, 0xb4, 0xf5, 0xf3, 0x79, 0x8a, 0x49, 0x28, 0x74, 0x1a, 0x41, + 0xa1, 0xc2, 0xd3, 0x24, 0x88, 0x35, 0x30, 0x60, 0x94, 0x17, 0xb4, 0xe1, + 0x04, 0x22, 0x31, 0x3d, 0x3b, 0x2f, 0x17, 0x06, 0xb2, 0xb8, 0x9d, 0x86, + 0x2b, 0x5a, 0x69, 0xef, 0x83, 0xf5, 0x4b, 0xc4, 0xaa, 0xb4, 0x2a, 0xf8, + 0x7c, 0xa1, 0xb1, 0x85, 0x94, 0x8c, 0xf4, 0x0c, 0x87, 0x0c, 0xf4, 0xac, + 0x40, 0xf8, 0x59, 0x49, 0x98, +} + +var certSet2Cert16 = []byte{ + 0x30, 0x82, 0x04, 0x6c, 0x30, 0x82, 0x03, 0x54, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x4d, 0x5f, 0x2c, 0x34, 0x08, 0xb2, 0x4c, 0x20, 0xcd, + 0x6d, 0x50, 0x7e, 0x24, 0x4d, 0xc9, 0xec, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81, + 0xa9, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, + 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, 0x06, + 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, + 0x30, 0x36, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, + 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x16, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, + 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x32, 0x30, 0x38, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x30, + 0x32, 0x30, 0x37, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x3c, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0d, 0x54, + 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, + 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, + 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0x99, 0xe4, 0x85, + 0x5b, 0x76, 0x49, 0x7d, 0x2f, 0x05, 0xd8, 0xc5, 0xac, 0xc8, 0xc8, 0xa9, + 0xd3, 0xdc, 0x98, 0xe6, 0xd7, 0x34, 0xa6, 0x2f, 0x0c, 0xf2, 0x22, 0x26, + 0xd8, 0xa3, 0xc9, 0x14, 0x4c, 0x8f, 0x05, 0xa4, 0x45, 0xe8, 0x14, 0x0c, + 0x58, 0x90, 0x05, 0x1a, 0xb7, 0xc5, 0xc1, 0x06, 0xa5, 0x80, 0xaf, 0xbb, + 0x1d, 0x49, 0x6b, 0x52, 0x34, 0x88, 0xc3, 0x59, 0xe7, 0xef, 0x6b, 0xc4, + 0x27, 0x41, 0x8c, 0x2b, 0x66, 0x1d, 0xd0, 0xe0, 0xa3, 0x97, 0x98, 0x19, + 0x34, 0x4b, 0x41, 0xd5, 0x98, 0xd5, 0xc7, 0x05, 0xad, 0xa2, 0xe4, 0xd7, + 0xed, 0x0c, 0xad, 0x4f, 0xc1, 0xb5, 0xb0, 0x21, 0xfd, 0x3e, 0x50, 0x53, + 0xb2, 0xc4, 0x90, 0xd0, 0xd4, 0x30, 0x67, 0x6c, 0x9a, 0xf1, 0x0e, 0x74, + 0xc4, 0xc2, 0xdc, 0x8a, 0xe8, 0x97, 0xff, 0xc9, 0x92, 0xae, 0x01, 0x8a, + 0x56, 0x0a, 0x98, 0x32, 0xb0, 0x00, 0x23, 0xec, 0x90, 0x1a, 0x60, 0xc3, + 0xed, 0xbb, 0x3a, 0xcb, 0x0f, 0x63, 0x9f, 0x0d, 0x44, 0xc9, 0x52, 0xe1, + 0x25, 0x96, 0xbf, 0xed, 0x50, 0x95, 0x89, 0x7f, 0x56, 0x14, 0xb1, 0xb7, + 0x61, 0x1d, 0x1c, 0x07, 0x8c, 0x3a, 0x2c, 0xf7, 0xff, 0x80, 0xde, 0x39, + 0x45, 0xd5, 0xaf, 0x1a, 0xd1, 0x78, 0xd8, 0xc7, 0x71, 0x6a, 0xa3, 0x19, + 0xa7, 0x32, 0x50, 0x21, 0xe9, 0xf2, 0x0e, 0xa1, 0xc6, 0x13, 0x03, 0x44, + 0x48, 0xd1, 0x66, 0xa8, 0x52, 0x57, 0xd7, 0x11, 0xb4, 0x93, 0x8b, 0xe5, + 0x99, 0x9f, 0x5d, 0xe7, 0x78, 0x51, 0xe5, 0x4d, 0xf6, 0xb7, 0x59, 0xb4, + 0x76, 0xb5, 0x09, 0x37, 0x4d, 0x06, 0x38, 0x13, 0x7a, 0x1c, 0x08, 0x98, + 0x5c, 0xc4, 0x48, 0x4a, 0xcb, 0x52, 0xa0, 0xa9, 0xf8, 0xb1, 0x9d, 0x8e, + 0x7b, 0x79, 0xb0, 0x20, 0x2f, 0x3c, 0x96, 0xa8, 0x11, 0x62, 0x47, 0xbb, + 0x11, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x81, 0xfb, 0x30, 0x81, 0xf8, + 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, + 0x04, 0x26, 0x30, 0x24, 0x30, 0x22, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x30, 0x01, 0x86, 0x16, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, + 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, + 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, + 0x30, 0x34, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2d, 0x30, 0x2b, 0x30, + 0x29, 0xa0, 0x27, 0xa0, 0x25, 0x86, 0x23, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x50, + 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x28, + 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x21, 0x30, 0x1f, 0xa4, 0x1d, 0x30, + 0x1b, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x10, + 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x50, 0x4b, 0x49, + 0x2d, 0x32, 0x2d, 0x39, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, + 0x16, 0x04, 0x14, 0xa7, 0xa2, 0x83, 0xbb, 0x34, 0x45, 0x40, 0x3d, 0xfc, + 0xd5, 0x30, 0x4f, 0x12, 0xb9, 0x3e, 0xa1, 0x01, 0x9f, 0xf6, 0xdb, 0x30, + 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, + 0x7b, 0x5b, 0x45, 0xcf, 0xaf, 0xce, 0xcb, 0x7a, 0xfd, 0x31, 0x92, 0x1a, + 0x6a, 0xb6, 0xf3, 0x46, 0xeb, 0x57, 0x48, 0x50, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x01, 0x00, 0x80, 0x22, 0x80, 0xe0, 0x6c, 0xc8, 0x95, 0x16, + 0xd7, 0x57, 0x26, 0x87, 0xf3, 0x72, 0x34, 0xdb, 0xc6, 0x72, 0x56, 0x27, + 0x3e, 0xd3, 0x96, 0xf6, 0x2e, 0x25, 0x91, 0xa5, 0x3e, 0x33, 0x97, 0xa7, + 0x4b, 0xe5, 0x2f, 0xfb, 0x25, 0x7d, 0x2f, 0x07, 0x61, 0xfa, 0x6f, 0x83, + 0x74, 0x4c, 0x4c, 0x53, 0x72, 0x20, 0xa4, 0x7a, 0xcf, 0x51, 0x51, 0x56, + 0x81, 0x88, 0xb0, 0x6d, 0x1f, 0x36, 0x2c, 0xc8, 0x2b, 0xb1, 0x88, 0x99, + 0xc1, 0xfe, 0x44, 0xab, 0x48, 0x51, 0x7c, 0xd8, 0xf2, 0x44, 0x64, 0x2a, + 0xd8, 0x71, 0xa7, 0xfb, 0x1a, 0x2f, 0xf9, 0x19, 0x8d, 0x34, 0xb2, 0x23, + 0xbf, 0xc4, 0x4c, 0x55, 0x1d, 0x8e, 0x44, 0xe8, 0xaa, 0x5d, 0x9a, 0xdd, + 0x9f, 0xfd, 0x03, 0xc7, 0xba, 0x24, 0x43, 0x8d, 0x2d, 0x47, 0x44, 0xdb, + 0xf6, 0xd8, 0x98, 0xc8, 0xb2, 0xf9, 0xda, 0xef, 0xed, 0x29, 0x5c, 0x69, + 0x12, 0xfa, 0xd1, 0x23, 0x96, 0x0f, 0xbf, 0x9c, 0x0d, 0xf2, 0x79, 0x45, + 0x53, 0x37, 0x9a, 0x56, 0x2f, 0xe8, 0x57, 0x10, 0x70, 0xf6, 0xee, 0x89, + 0x0c, 0x49, 0x89, 0x9a, 0xc1, 0x23, 0xf5, 0xc2, 0x2a, 0xcc, 0x41, 0xcf, + 0x22, 0xab, 0x65, 0x6e, 0xb7, 0x94, 0x82, 0x6d, 0x2f, 0x40, 0x5f, 0x58, + 0xde, 0xeb, 0x95, 0x2b, 0xa6, 0x72, 0x68, 0x52, 0x19, 0x91, 0x2a, 0xae, + 0x75, 0x9d, 0x4e, 0x92, 0xe6, 0xca, 0xde, 0x54, 0xea, 0x18, 0xab, 0x25, + 0x3c, 0xe6, 0x64, 0xa6, 0x79, 0x1f, 0x26, 0x7d, 0x61, 0xed, 0x7d, 0xd2, + 0xe5, 0x71, 0x55, 0xd8, 0x93, 0x17, 0x7c, 0x14, 0x38, 0x30, 0x3c, 0xdf, + 0x86, 0xe3, 0x4c, 0xad, 0x49, 0xe3, 0x97, 0x59, 0xce, 0x1b, 0x9b, 0x2b, + 0xce, 0xdc, 0x65, 0xd4, 0x0b, 0x28, 0x6b, 0x4e, 0x84, 0x46, 0x51, 0x44, + 0xf7, 0x33, 0x08, 0x2d, 0x58, 0x97, 0x21, 0xae, +} + +var certSet2Cert17 = []byte{ + 0x30, 0x82, 0x04, 0x6e, 0x30, 0x82, 0x03, 0x56, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x6e, 0x8a, 0x90, 0xeb, 0xcf, 0xf0, 0x44, 0x8a, 0x72, + 0x0d, 0x08, 0x05, 0xd0, 0x82, 0xa5, 0x44, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x58, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, + 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x31, 0x30, 0x2f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x28, + 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x50, 0x72, 0x69, + 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, + 0x33, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, + 0x33, 0x31, 0x30, 0x33, 0x30, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, + 0x30, 0x47, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, + 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x17, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x45, + 0x56, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, + 0x34, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, + 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, + 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xd9, 0xb4, + 0x05, 0xf2, 0x38, 0x67, 0x0f, 0x09, 0xe7, 0x7c, 0xf5, 0x63, 0x2a, 0xe5, + 0xb9, 0x5e, 0xa8, 0x11, 0xae, 0x75, 0x71, 0xd9, 0x4c, 0x84, 0x67, 0xad, + 0x89, 0x5d, 0xfc, 0x28, 0x3d, 0x2a, 0xb0, 0xa5, 0xd5, 0xd4, 0xe6, 0x30, + 0x0a, 0x84, 0xd4, 0xe4, 0x18, 0xcb, 0x85, 0x37, 0xc5, 0x46, 0x71, 0xeb, + 0x1c, 0x7b, 0x69, 0xdb, 0x65, 0x69, 0x8c, 0x30, 0x05, 0x3e, 0x07, 0xe1, + 0x6f, 0x3c, 0xc1, 0x0b, 0x61, 0xe6, 0x38, 0x44, 0xfc, 0xbc, 0x8c, 0x2f, + 0x4e, 0x75, 0x57, 0xf5, 0x96, 0x99, 0x7c, 0x3e, 0x87, 0x1f, 0x0f, 0x90, + 0x4b, 0x70, 0xc3, 0x3f, 0x39, 0x45, 0x3b, 0x3a, 0x6b, 0xcb, 0xbb, 0x7b, + 0x40, 0x54, 0xd1, 0x8b, 0x4b, 0xa1, 0x72, 0xd2, 0x04, 0xe9, 0xe0, 0x72, + 0x1a, 0x93, 0x11, 0x7a, 0x2f, 0xf1, 0xab, 0x9d, 0x9c, 0x98, 0x58, 0xae, + 0x2c, 0xea, 0x77, 0x5f, 0x2f, 0x2e, 0x87, 0xaf, 0xb8, 0x6b, 0xe3, 0xe2, + 0xe2, 0x3f, 0xd6, 0x3d, 0xe0, 0x96, 0x44, 0xdf, 0x11, 0x55, 0x63, 0x52, + 0x2f, 0xf4, 0x26, 0x78, 0xc4, 0x0f, 0x20, 0x4d, 0x0a, 0xc0, 0x68, 0x70, + 0x15, 0x86, 0x38, 0xee, 0xb7, 0x76, 0x88, 0xab, 0x18, 0x8f, 0x4f, 0x35, + 0x1e, 0xd4, 0x8c, 0xc9, 0xdb, 0x7e, 0x3d, 0x44, 0xd4, 0x36, 0x8c, 0xc1, + 0x37, 0xb5, 0x59, 0x5b, 0x87, 0xf9, 0xe9, 0xf1, 0xd4, 0xc5, 0x28, 0xbd, + 0x1d, 0xdc, 0xcc, 0x96, 0x72, 0xd1, 0x7a, 0xa1, 0xa7, 0x20, 0xb5, 0xb8, + 0xaf, 0xf8, 0x6e, 0xa5, 0x60, 0x7b, 0x2b, 0x8d, 0x1f, 0xee, 0xf4, 0x2b, + 0xd6, 0x69, 0xcd, 0xaf, 0xca, 0x80, 0x58, 0x29, 0xe8, 0x4c, 0x00, 0x20, + 0x8a, 0x49, 0x0a, 0x6e, 0x8e, 0x8c, 0xa8, 0xd1, 0x00, 0x12, 0x84, 0xb6, + 0xc5, 0xe2, 0x95, 0xa2, 0xc0, 0x3b, 0xa4, 0x6b, 0xf0, 0x82, 0xd0, 0x96, + 0x5d, 0x25, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x43, 0x30, + 0x82, 0x01, 0x3f, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, + 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, + 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, + 0x02, 0x01, 0x06, 0x30, 0x2f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x01, 0x01, 0x04, 0x23, 0x30, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x47, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, + 0x40, 0x30, 0x3e, 0x30, 0x3c, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, + 0x34, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, + 0x01, 0x16, 0x26, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, + 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x34, 0x06, 0x03, 0x55, 0x1d, 0x1f, + 0x04, 0x2d, 0x30, 0x2b, 0x30, 0x29, 0xa0, 0x27, 0xa0, 0x25, 0x86, 0x23, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x31, 0x2e, 0x73, 0x79, + 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x65, 0x6f, 0x54, + 0x72, 0x75, 0x73, 0x74, 0x50, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, + 0x29, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, + 0x30, 0x1c, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x11, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, + 0x2d, 0x31, 0x2d, 0x35, 0x33, 0x38, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, + 0x0e, 0x04, 0x16, 0x04, 0x14, 0xde, 0xcf, 0x5c, 0x50, 0xb7, 0xae, 0x02, + 0x1f, 0x15, 0x17, 0xaa, 0x16, 0xe8, 0x0d, 0xb5, 0x28, 0x9d, 0x6a, 0x5a, + 0xf3, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, + 0x80, 0x14, 0x2c, 0xd5, 0x50, 0x41, 0x97, 0x15, 0x8b, 0xf0, 0x8f, 0x36, + 0x61, 0x5b, 0x4a, 0xfb, 0x6b, 0xd9, 0x99, 0xc9, 0x33, 0x92, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xb4, 0x8e, 0xbd, 0x07, 0xb9, 0x9a, + 0x85, 0xec, 0x3b, 0x67, 0xbd, 0x07, 0x60, 0x61, 0xe6, 0x84, 0xd1, 0xd4, + 0xef, 0xeb, 0x1b, 0xba, 0x0b, 0x82, 0x4b, 0x95, 0x64, 0xb6, 0x66, 0x53, + 0x23, 0xbd, 0xb7, 0x84, 0xdd, 0xe4, 0x7b, 0x8d, 0x09, 0xda, 0xcf, 0xb2, + 0xf5, 0xf1, 0xc3, 0xbf, 0x87, 0x84, 0xbe, 0x4e, 0xa6, 0xa8, 0xc2, 0xe7, + 0x12, 0x39, 0x28, 0x34, 0xe0, 0xa4, 0x56, 0x44, 0x40, 0x0c, 0x9f, 0x88, + 0xa3, 0x15, 0xd3, 0xe8, 0xd3, 0x5e, 0xe3, 0x1c, 0x04, 0x60, 0xfb, 0x69, + 0x36, 0x4f, 0x6a, 0x7e, 0x0c, 0x2a, 0x28, 0xc1, 0xf3, 0xaa, 0x58, 0x0e, + 0x6c, 0xce, 0x1d, 0x07, 0xc3, 0x4a, 0xc0, 0x9c, 0x8d, 0xc3, 0x74, 0xb1, + 0xae, 0x82, 0xf0, 0x1a, 0xe1, 0xf9, 0x4e, 0x29, 0xbd, 0x46, 0xde, 0xb7, + 0x1d, 0xf9, 0x7d, 0xdb, 0xd9, 0x0f, 0x84, 0xcb, 0x92, 0x45, 0xcc, 0x1c, + 0xb3, 0x18, 0xf6, 0xa0, 0xcf, 0x71, 0x6f, 0x0c, 0x2e, 0x9b, 0xd2, 0x2d, + 0xb3, 0x99, 0x93, 0x83, 0x44, 0xac, 0x15, 0xaa, 0x9b, 0x2e, 0x67, 0xec, + 0x4f, 0x88, 0x69, 0x05, 0x56, 0x7b, 0x8b, 0xb2, 0x43, 0xa9, 0x3a, 0x6c, + 0x1c, 0x13, 0x33, 0x25, 0x1b, 0xfd, 0xa8, 0xc8, 0x57, 0x02, 0xfb, 0x1c, + 0xe0, 0xd1, 0xbd, 0x3b, 0x56, 0x44, 0x65, 0xc3, 0x63, 0xf5, 0x1b, 0xef, + 0xec, 0x30, 0xd9, 0xe3, 0x6e, 0x2e, 0x13, 0xe9, 0x39, 0x08, 0x2a, 0x0c, + 0x72, 0xf3, 0x9a, 0xcc, 0xf6, 0x27, 0x29, 0x84, 0xd3, 0xef, 0x4c, 0xc7, + 0x84, 0x11, 0x65, 0x1f, 0xc6, 0xe3, 0x81, 0x03, 0xdb, 0x87, 0xcc, 0x78, + 0xf7, 0xb5, 0x9d, 0x96, 0x3e, 0x6a, 0x7f, 0xbc, 0x11, 0x85, 0x7a, 0x75, + 0xe6, 0x41, 0x7d, 0x0d, 0xcf, 0xf9, 0xe5, 0x85, 0x69, 0x25, 0x8f, 0xc7, + 0x8d, 0x07, 0x2d, 0xf8, 0x69, 0x0f, 0xcb, 0x41, 0x53, 0x00, +} + +var certSet2Cert18 = []byte{ + 0x30, 0x82, 0x04, 0x7d, 0x30, 0x82, 0x03, 0x65, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x1b, 0xe7, 0x15, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x63, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x18, 0x54, + 0x68, 0x65, 0x20, 0x47, 0x6f, 0x20, 0x44, 0x61, 0x64, 0x64, 0x79, 0x20, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, + 0x31, 0x30, 0x2f, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x28, 0x47, 0x6f, + 0x20, 0x44, 0x61, 0x64, 0x64, 0x79, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0x20, 0x32, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x30, 0x31, 0x30, 0x31, + 0x30, 0x37, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x33, 0x31, 0x30, + 0x35, 0x33, 0x30, 0x30, 0x37, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x81, + 0x83, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, + 0x07, 0x41, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, + 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, + 0x73, 0x64, 0x61, 0x6c, 0x65, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, + 0x04, 0x0a, 0x13, 0x11, 0x47, 0x6f, 0x44, 0x61, 0x64, 0x64, 0x79, 0x2e, + 0x63, 0x6f, 0x6d, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x31, 0x30, + 0x2f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x28, 0x47, 0x6f, 0x20, 0x44, + 0x61, 0x64, 0x64, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, + 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, + 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xbf, 0x71, 0x62, + 0x08, 0xf1, 0xfa, 0x59, 0x34, 0xf7, 0x1b, 0xc9, 0x18, 0xa3, 0xf7, 0x80, + 0x49, 0x58, 0xe9, 0x22, 0x83, 0x13, 0xa6, 0xc5, 0x20, 0x43, 0x01, 0x3b, + 0x84, 0xf1, 0xe6, 0x85, 0x49, 0x9f, 0x27, 0xea, 0xf6, 0x84, 0x1b, 0x4e, + 0xa0, 0xb4, 0xdb, 0x70, 0x98, 0xc7, 0x32, 0x01, 0xb1, 0x05, 0x3e, 0x07, + 0x4e, 0xee, 0xf4, 0xfa, 0x4f, 0x2f, 0x59, 0x30, 0x22, 0xe7, 0xab, 0x19, + 0x56, 0x6b, 0xe2, 0x80, 0x07, 0xfc, 0xf3, 0x16, 0x75, 0x80, 0x39, 0x51, + 0x7b, 0xe5, 0xf9, 0x35, 0xb6, 0x74, 0x4e, 0xa9, 0x8d, 0x82, 0x13, 0xe4, + 0xb6, 0x3f, 0xa9, 0x03, 0x83, 0xfa, 0xa2, 0xbe, 0x8a, 0x15, 0x6a, 0x7f, + 0xde, 0x0b, 0xc3, 0xb6, 0x19, 0x14, 0x05, 0xca, 0xea, 0xc3, 0xa8, 0x04, + 0x94, 0x3b, 0x46, 0x7c, 0x32, 0x0d, 0xf3, 0x00, 0x66, 0x22, 0xc8, 0x8d, + 0x69, 0x6d, 0x36, 0x8c, 0x11, 0x18, 0xb7, 0xd3, 0xb2, 0x1c, 0x60, 0xb4, + 0x38, 0xfa, 0x02, 0x8c, 0xce, 0xd3, 0xdd, 0x46, 0x07, 0xde, 0x0a, 0x3e, + 0xeb, 0x5d, 0x7c, 0xc8, 0x7c, 0xfb, 0xb0, 0x2b, 0x53, 0xa4, 0x92, 0x62, + 0x69, 0x51, 0x25, 0x05, 0x61, 0x1a, 0x44, 0x81, 0x8c, 0x2c, 0xa9, 0x43, + 0x96, 0x23, 0xdf, 0xac, 0x3a, 0x81, 0x9a, 0x0e, 0x29, 0xc5, 0x1c, 0xa9, + 0xe9, 0x5d, 0x1e, 0xb6, 0x9e, 0x9e, 0x30, 0x0a, 0x39, 0xce, 0xf1, 0x88, + 0x80, 0xfb, 0x4b, 0x5d, 0xcc, 0x32, 0xec, 0x85, 0x62, 0x43, 0x25, 0x34, + 0x02, 0x56, 0x27, 0x01, 0x91, 0xb4, 0x3b, 0x70, 0x2a, 0x3f, 0x6e, 0xb1, + 0xe8, 0x9c, 0x88, 0x01, 0x7d, 0x9f, 0xd4, 0xf9, 0xdb, 0x53, 0x6d, 0x60, + 0x9d, 0xbf, 0x2c, 0xe7, 0x58, 0xab, 0xb8, 0x5f, 0x46, 0xfc, 0xce, 0xc4, + 0x1b, 0x03, 0x3c, 0x09, 0xeb, 0x49, 0x31, 0x5c, 0x69, 0x46, 0xb3, 0xe0, + 0x47, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x17, 0x30, 0x82, + 0x01, 0x13, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, + 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0e, 0x06, 0x03, 0x55, + 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, + 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x3a, 0x9a, + 0x85, 0x07, 0x10, 0x67, 0x28, 0xb6, 0xef, 0xf6, 0xbd, 0x05, 0x41, 0x6e, + 0x20, 0xc1, 0x94, 0xda, 0x0f, 0xde, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, + 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xd2, 0xc4, 0xb0, 0xd2, 0x91, + 0xd4, 0x4c, 0x11, 0x71, 0xb3, 0x61, 0xcb, 0x3d, 0xa1, 0xfe, 0xdd, 0xa8, + 0x6a, 0xd4, 0xe3, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x6f, 0x64, + 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x30, 0x32, 0x06, + 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2b, 0x30, 0x29, 0x30, 0x27, 0xa0, 0x25, + 0xa0, 0x23, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, + 0x72, 0x6c, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x67, 0x64, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x72, + 0x6c, 0x30, 0x46, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3f, 0x30, 0x3d, + 0x30, 0x3b, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x33, 0x30, 0x31, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, + 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x63, 0x65, 0x72, 0x74, + 0x73, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, + 0x2f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x59, 0x0b, 0x53, + 0xbd, 0x92, 0x86, 0x11, 0xa7, 0x24, 0x7b, 0xed, 0x5b, 0x31, 0xcf, 0x1d, + 0x1f, 0x6c, 0x70, 0xc5, 0xb8, 0x6e, 0xbe, 0x4e, 0xbb, 0xf6, 0xbe, 0x97, + 0x50, 0xe1, 0x30, 0x7f, 0xba, 0x28, 0x5c, 0x62, 0x94, 0xc2, 0xe3, 0x7e, + 0x33, 0xf7, 0xfb, 0x42, 0x76, 0x85, 0xdb, 0x95, 0x1c, 0x8c, 0x22, 0x58, + 0x75, 0x09, 0x0c, 0x88, 0x65, 0x67, 0x39, 0x0a, 0x16, 0x09, 0xc5, 0xa0, + 0x38, 0x97, 0xa4, 0xc5, 0x23, 0x93, 0x3f, 0xb4, 0x18, 0xa6, 0x01, 0x06, + 0x44, 0x91, 0xe3, 0xa7, 0x69, 0x27, 0xb4, 0x5a, 0x25, 0x7f, 0x3a, 0xb7, + 0x32, 0xcd, 0xdd, 0x84, 0xff, 0x2a, 0x38, 0x29, 0x33, 0xa4, 0xdd, 0x67, + 0xb2, 0x85, 0xfe, 0xa1, 0x88, 0x20, 0x1c, 0x50, 0x89, 0xc8, 0xdc, 0x2a, + 0xf6, 0x42, 0x03, 0x37, 0x4c, 0xe6, 0x88, 0xdf, 0xd5, 0xaf, 0x24, 0xf2, + 0xb1, 0xc3, 0xdf, 0xcc, 0xb5, 0xec, 0xe0, 0x99, 0x5e, 0xb7, 0x49, 0x54, + 0x20, 0x3c, 0x94, 0x18, 0x0c, 0xc7, 0x1c, 0x52, 0x18, 0x49, 0xa4, 0x6d, + 0xe1, 0xb3, 0x58, 0x0b, 0xc9, 0xd8, 0xec, 0xd9, 0xae, 0x1c, 0x32, 0x8e, + 0x28, 0x70, 0x0d, 0xe2, 0xfe, 0xa6, 0x17, 0x9e, 0x84, 0x0f, 0xbd, 0x57, + 0x70, 0xb3, 0x5a, 0xe9, 0x1f, 0xa0, 0x86, 0x53, 0xbb, 0xef, 0x7c, 0xff, + 0x69, 0x0b, 0xe0, 0x48, 0xc3, 0xb7, 0x93, 0x0b, 0xc8, 0x0a, 0x54, 0xc4, + 0xac, 0x5d, 0x14, 0x67, 0x37, 0x6c, 0xca, 0xa5, 0x2f, 0x31, 0x08, 0x37, + 0xaa, 0x6e, 0x6f, 0x8c, 0xbc, 0x9b, 0xe2, 0x57, 0x5d, 0x24, 0x81, 0xaf, + 0x97, 0x97, 0x9c, 0x84, 0xad, 0x6c, 0xac, 0x37, 0x4c, 0x66, 0xf3, 0x61, + 0x91, 0x11, 0x20, 0xe4, 0xbe, 0x30, 0x9f, 0x7a, 0xa4, 0x29, 0x09, 0xb0, + 0xe1, 0x34, 0x5f, 0x64, 0x77, 0x18, 0x40, 0x51, 0xdf, 0x8c, 0x30, 0xa6, + 0xaf, +} + +var certSet2Cert19 = []byte{ + 0x30, 0x82, 0x04, 0x8f, 0x30, 0x82, 0x03, 0x77, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x06, 0x9e, 0x1d, 0xb7, 0x7f, 0xcf, 0x1d, 0xfb, 0xa9, + 0x7a, 0xf5, 0xe5, 0xc9, 0xa2, 0x40, 0x37, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x61, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, + 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, + 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x17, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x47, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, + 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x30, 0x33, 0x30, 0x38, 0x31, + 0x32, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x30, 0x33, + 0x30, 0x38, 0x31, 0x32, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x48, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44, + 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31, + 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x19, 0x44, 0x69, + 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, + 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x30, + 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, + 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xbb, 0x57, 0xe4, 0x21, + 0xa9, 0xd5, 0x9b, 0x60, 0x37, 0x7e, 0x8e, 0xa1, 0x61, 0x7f, 0x81, 0xe2, + 0x1a, 0xc2, 0x75, 0x64, 0xd9, 0x91, 0x50, 0x0b, 0xe4, 0x36, 0x44, 0x24, + 0x6e, 0x30, 0xd2, 0x9b, 0x7a, 0x27, 0xfa, 0xc2, 0x6a, 0xae, 0x6a, 0x70, + 0x09, 0x38, 0xb9, 0x20, 0x0a, 0xc8, 0x65, 0x10, 0x4a, 0x88, 0xac, 0x31, + 0xf2, 0xdc, 0x92, 0xf2, 0x63, 0xa1, 0x5d, 0x80, 0x63, 0x59, 0x80, 0x92, + 0x23, 0x1c, 0xe6, 0xef, 0x76, 0x4a, 0x50, 0x35, 0xc9, 0xd8, 0x71, 0x38, + 0xb9, 0xed, 0xf0, 0xe6, 0x42, 0xae, 0xd3, 0x38, 0x26, 0x79, 0x30, 0xf9, + 0x22, 0x94, 0xc6, 0xdb, 0xa6, 0x3f, 0x41, 0x78, 0x90, 0xd8, 0xde, 0x5c, + 0x7e, 0x69, 0x7d, 0xf8, 0x90, 0x15, 0x3a, 0xd0, 0xa1, 0xa0, 0xbe, 0xfa, + 0xb2, 0xb2, 0x19, 0xa1, 0xd8, 0x2b, 0xd1, 0xce, 0xbf, 0x6b, 0xdd, 0x49, + 0xab, 0xa3, 0x92, 0xfe, 0xb5, 0xab, 0xc8, 0xc1, 0x3e, 0xee, 0x01, 0x00, + 0xd8, 0xa9, 0x44, 0xb8, 0x42, 0x73, 0x88, 0xc3, 0x61, 0xf5, 0xab, 0x4a, + 0x83, 0x28, 0x0a, 0xd2, 0xd4, 0x49, 0xfa, 0x6a, 0xb1, 0xcd, 0xdf, 0x57, + 0x2c, 0x94, 0xe5, 0xe2, 0xca, 0x83, 0x5f, 0xb7, 0xba, 0x62, 0x5c, 0x2f, + 0x68, 0xa5, 0xf0, 0xc0, 0xb9, 0xfd, 0x2b, 0xd1, 0xe9, 0x1f, 0xd8, 0x1a, + 0x62, 0x15, 0xbd, 0xff, 0x3d, 0xa6, 0xf7, 0xcb, 0xef, 0xe6, 0xdb, 0x65, + 0x2f, 0x25, 0x38, 0xec, 0xfb, 0xe6, 0x20, 0x66, 0x58, 0x96, 0x34, 0x19, + 0xd2, 0x15, 0xce, 0x21, 0xd3, 0x24, 0xcc, 0xd9, 0x14, 0x6f, 0xd8, 0xfe, + 0x55, 0xc7, 0xe7, 0x6f, 0xb6, 0x0f, 0x1a, 0x8c, 0x49, 0xbe, 0x29, 0xf2, + 0xba, 0x5a, 0x9a, 0x81, 0x26, 0x37, 0x24, 0x6f, 0xd7, 0x48, 0x12, 0x6c, + 0x2e, 0x59, 0xf5, 0x9c, 0x18, 0xbb, 0xd9, 0xf6, 0x68, 0xe2, 0xdf, 0x45, + 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x5a, 0x30, 0x82, 0x01, + 0x56, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, + 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, + 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, + 0x86, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, + 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, + 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x7b, 0x06, 0x03, 0x55, + 0x1d, 0x1f, 0x04, 0x74, 0x30, 0x72, 0x30, 0x37, 0xa0, 0x35, 0xa0, 0x33, + 0x86, 0x31, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, + 0x33, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x47, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x37, 0xa0, 0x35, 0xa0, 0x33, 0x86, 0x31, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x34, 0x2e, 0x64, + 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, + 0x30, 0x3d, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x36, 0x30, 0x34, 0x30, + 0x32, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x2a, 0x30, 0x28, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, + 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x64, + 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x43, 0x50, 0x53, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, + 0x04, 0x14, 0x90, 0x71, 0xdb, 0x37, 0xeb, 0x73, 0xc8, 0xef, 0xdc, 0xd5, + 0x1e, 0x12, 0xb6, 0x34, 0xba, 0x2b, 0x5a, 0xa0, 0xa6, 0x92, 0x30, 0x1f, + 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x03, + 0xde, 0x50, 0x35, 0x56, 0xd1, 0x4c, 0xbb, 0x66, 0xf0, 0xa3, 0xe2, 0x1b, + 0x1b, 0xc3, 0x97, 0xb2, 0x3d, 0xd1, 0x55, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, + 0x01, 0x01, 0x00, 0x30, 0xce, 0xd1, 0x95, 0x51, 0x00, 0xae, 0x06, 0x0b, + 0xa1, 0x0e, 0x02, 0xc0, 0x17, 0xac, 0xb6, 0x7f, 0x8f, 0x20, 0xf6, 0x40, + 0x75, 0x74, 0x1c, 0xcc, 0x78, 0xb1, 0xa4, 0x4f, 0xea, 0xf4, 0xd0, 0xc4, + 0x9d, 0xa2, 0xde, 0x81, 0x07, 0x26, 0x1f, 0x40, 0x88, 0x51, 0xf0, 0x1f, + 0xcf, 0xb7, 0x4c, 0x40, 0x99, 0xd0, 0xf4, 0x3c, 0x71, 0x98, 0x73, 0x88, + 0x97, 0x2c, 0x19, 0xd7, 0x6e, 0x84, 0x8f, 0xa4, 0x1f, 0x9c, 0x5a, 0x20, + 0xe3, 0x51, 0x5c, 0xb0, 0xc5, 0x9e, 0x99, 0x6a, 0x4f, 0xc8, 0x69, 0xf7, + 0x10, 0xff, 0x4e, 0xad, 0x19, 0xd9, 0xc9, 0x58, 0xb3, 0x33, 0xae, 0x0c, + 0xd9, 0x96, 0x29, 0x9e, 0x71, 0xb2, 0x70, 0x63, 0xa3, 0xb6, 0x99, 0x16, + 0x42, 0x1d, 0x65, 0xf3, 0xf7, 0xa0, 0x1e, 0x7d, 0xc5, 0xd4, 0x65, 0x14, + 0xb2, 0x62, 0x84, 0xd4, 0x6c, 0x5c, 0x08, 0x0c, 0xd8, 0x6c, 0x93, 0x2b, + 0xb4, 0x76, 0x59, 0x8a, 0xd1, 0x7f, 0xff, 0x03, 0xd8, 0xc2, 0x5d, 0xb8, + 0x2f, 0x22, 0xd6, 0x38, 0xf0, 0xf6, 0x9c, 0x6b, 0x7d, 0x46, 0xeb, 0x99, + 0x74, 0xf7, 0xeb, 0x4a, 0x0e, 0xa9, 0xa6, 0x04, 0xeb, 0x7b, 0xce, 0xf0, + 0x5c, 0x6b, 0x98, 0x31, 0x5a, 0x98, 0x40, 0xeb, 0x69, 0xc4, 0x05, 0xf4, + 0x20, 0xa8, 0xca, 0x08, 0x3a, 0x65, 0x6c, 0x38, 0x15, 0xf5, 0x5c, 0x2c, + 0xb2, 0x55, 0xe4, 0x2c, 0x6b, 0x41, 0xf0, 0xbe, 0x5c, 0x46, 0xca, 0x4a, + 0x29, 0xa0, 0x48, 0x5e, 0x20, 0xd2, 0x45, 0xff, 0x05, 0xde, 0x34, 0xaf, + 0x70, 0x4b, 0x81, 0x39, 0xe2, 0xca, 0x07, 0x57, 0x7c, 0xb6, 0x31, 0xdc, + 0x21, 0x29, 0xe2, 0xbe, 0x97, 0x0e, 0x77, 0x90, 0x14, 0x51, 0x40, 0xe1, + 0xbf, 0xe3, 0xcc, 0x1b, 0x19, 0x9c, 0x25, 0xca, 0xa7, 0x06, 0xb2, 0x53, + 0xdf, 0x23, 0xb2, 0xcf, 0x12, 0x19, 0xa3, +} + +var certSet2Cert20 = []byte{ + 0x30, 0x82, 0x04, 0x90, 0x30, 0x82, 0x03, 0xf9, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x1b, 0x09, 0x3b, 0x78, 0x60, 0x96, 0xda, 0x37, 0xbb, + 0xa4, 0x51, 0x94, 0x46, 0xc8, 0x96, 0x78, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x5f, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, + 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x31, 0x37, 0x30, 0x35, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, + 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x31, 0x31, 0x30, 0x38, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x31, 0x31, 0x31, 0x30, 0x37, + 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x81, 0xca, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65, + 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, 0x56, + 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x3a, 0x30, + 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28, 0x63, 0x29, 0x20, + 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, + 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, + 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, + 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x45, 0x30, + 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56, 0x65, 0x72, 0x69, + 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, + 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d, + 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xaf, 0x24, 0x08, 0x08, 0x29, 0x7a, 0x35, + 0x9e, 0x60, 0x0c, 0xaa, 0xe7, 0x4b, 0x3b, 0x4e, 0xdc, 0x7c, 0xbc, 0x3c, + 0x45, 0x1c, 0xbb, 0x2b, 0xe0, 0xfe, 0x29, 0x02, 0xf9, 0x57, 0x08, 0xa3, + 0x64, 0x85, 0x15, 0x27, 0xf5, 0xf1, 0xad, 0xc8, 0x31, 0x89, 0x5d, 0x22, + 0xe8, 0x2a, 0xaa, 0xa6, 0x42, 0xb3, 0x8f, 0xf8, 0xb9, 0x55, 0xb7, 0xb1, + 0xb7, 0x4b, 0xb3, 0xfe, 0x8f, 0x7e, 0x07, 0x57, 0xec, 0xef, 0x43, 0xdb, + 0x66, 0x62, 0x15, 0x61, 0xcf, 0x60, 0x0d, 0xa4, 0xd8, 0xde, 0xf8, 0xe0, + 0xc3, 0x62, 0x08, 0x3d, 0x54, 0x13, 0xeb, 0x49, 0xca, 0x59, 0x54, 0x85, + 0x26, 0xe5, 0x2b, 0x8f, 0x1b, 0x9f, 0xeb, 0xf5, 0xa1, 0x91, 0xc2, 0x33, + 0x49, 0xd8, 0x43, 0x63, 0x6a, 0x52, 0x4b, 0xd2, 0x8f, 0xe8, 0x70, 0x51, + 0x4d, 0xd1, 0x89, 0x69, 0x7b, 0xc7, 0x70, 0xf6, 0xb3, 0xdc, 0x12, 0x74, + 0xdb, 0x7b, 0x5d, 0x4b, 0x56, 0xd3, 0x96, 0xbf, 0x15, 0x77, 0xa1, 0xb0, + 0xf4, 0xa2, 0x25, 0xf2, 0xaf, 0x1c, 0x92, 0x67, 0x18, 0xe5, 0xf4, 0x06, + 0x04, 0xef, 0x90, 0xb9, 0xe4, 0x00, 0xe4, 0xdd, 0x3a, 0xb5, 0x19, 0xff, + 0x02, 0xba, 0xf4, 0x3c, 0xee, 0xe0, 0x8b, 0xeb, 0x37, 0x8b, 0xec, 0xf4, + 0xd7, 0xac, 0xf2, 0xf6, 0xf0, 0x3d, 0xaf, 0xdd, 0x75, 0x91, 0x33, 0x19, + 0x1d, 0x1c, 0x40, 0xcb, 0x74, 0x24, 0x19, 0x21, 0x93, 0xd9, 0x14, 0xfe, + 0xac, 0x2a, 0x52, 0xc7, 0x8f, 0xd5, 0x04, 0x49, 0xe4, 0x8d, 0x63, 0x47, + 0x88, 0x3c, 0x69, 0x83, 0xcb, 0xfe, 0x47, 0xbd, 0x2b, 0x7e, 0x4f, 0xc5, + 0x95, 0xae, 0x0e, 0x9d, 0xd4, 0xd1, 0x43, 0xc0, 0x67, 0x73, 0xe3, 0x14, + 0x08, 0x7e, 0xe5, 0x3f, 0x9f, 0x73, 0xb8, 0x33, 0x0a, 0xcf, 0x5d, 0x3f, + 0x34, 0x87, 0x96, 0x8a, 0xee, 0x53, 0xe8, 0x25, 0x15, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x82, 0x01, 0x5b, 0x30, 0x82, 0x01, 0x57, 0x30, 0x0f, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, + 0x01, 0x01, 0xff, 0x30, 0x31, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2a, + 0x30, 0x28, 0x30, 0x26, 0xa0, 0x24, 0xa0, 0x22, 0x86, 0x20, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x76, 0x65, 0x72, + 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63, + 0x61, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x3d, + 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06, + 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x2a, 0x30, 0x28, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, 0x74, + 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, 0x72, + 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, + 0x73, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0x7f, 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09, 0xf3, + 0x43, 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, 0x33, 0x30, 0x6d, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x0c, 0x04, 0x61, 0x30, 0x5f, + 0xa1, 0x5d, 0xa0, 0x5b, 0x30, 0x59, 0x30, 0x57, 0x30, 0x55, 0x16, 0x09, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0x30, 0x21, 0x30, + 0x1f, 0x30, 0x07, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x04, 0x14, + 0x8f, 0xe5, 0xd3, 0x1a, 0x86, 0xac, 0x8d, 0x8e, 0x6b, 0xc3, 0xcf, 0x80, + 0x6a, 0xd4, 0x48, 0x18, 0x2c, 0x7b, 0x19, 0x2e, 0x30, 0x25, 0x16, 0x23, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, + 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x76, 0x73, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x67, 0x69, 0x66, 0x30, + 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, + 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, + 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, + 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, + 0xa3, 0xcd, 0x7d, 0x1e, 0xf7, 0xc7, 0x75, 0x8d, 0x48, 0xe7, 0x56, 0x34, + 0x4c, 0x00, 0x90, 0x75, 0xa9, 0x51, 0xa5, 0x56, 0xc1, 0x6d, 0xbc, 0xfe, + 0xf5, 0x53, 0x22, 0xe9, 0x98, 0xa2, 0xac, 0x9a, 0x7e, 0x70, 0x1e, 0xb3, + 0x8e, 0x3b, 0x45, 0xe3, 0x86, 0x95, 0x31, 0xda, 0x6d, 0x4c, 0xfb, 0x34, + 0x50, 0x80, 0x96, 0xcd, 0x24, 0xf2, 0x40, 0xdf, 0x04, 0x3f, 0xe2, 0x65, + 0xce, 0x34, 0x22, 0x61, 0x15, 0xea, 0x66, 0x70, 0x64, 0xd2, 0xf1, 0x6e, + 0xf3, 0xca, 0x18, 0x59, 0x6a, 0x41, 0x46, 0x7e, 0x82, 0xde, 0x19, 0xb0, + 0x70, 0x31, 0x56, 0x69, 0x0d, 0x0c, 0xe6, 0x1d, 0x9d, 0x71, 0x58, 0xdc, + 0xcc, 0xde, 0x62, 0xf5, 0xe1, 0x7a, 0x10, 0x02, 0xd8, 0x7a, 0xdc, 0x3b, + 0xfa, 0x57, 0xbd, 0xc9, 0xe9, 0x8f, 0x46, 0x21, 0x39, 0x9f, 0x51, 0x65, + 0x4c, 0x8e, 0x3a, 0xbe, 0x28, 0x41, 0x70, 0x1d, +} + +var certSet2Cert21 = []byte{ + 0x30, 0x82, 0x04, 0x94, 0x30, 0x82, 0x03, 0x7c, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x01, 0xfd, 0xa3, 0xeb, 0x6e, 0xca, 0x75, 0xc8, 0x88, + 0x43, 0x8b, 0x72, 0x4b, 0xcf, 0xbc, 0x91, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x61, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, + 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, + 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x17, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x47, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, + 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x30, 0x33, 0x30, 0x38, 0x31, + 0x32, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x30, 0x33, + 0x30, 0x38, 0x31, 0x32, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x4d, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44, + 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31, + 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1e, 0x44, 0x69, + 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x53, 0x48, 0x41, 0x32, 0x20, + 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, + 0x00, 0xdc, 0xae, 0x58, 0x90, 0x4d, 0xc1, 0xc4, 0x30, 0x15, 0x90, 0x35, + 0x5b, 0x6e, 0x3c, 0x82, 0x15, 0xf5, 0x2c, 0x5c, 0xbd, 0xe3, 0xdb, 0xff, + 0x71, 0x43, 0xfa, 0x64, 0x25, 0x80, 0xd4, 0xee, 0x18, 0xa2, 0x4d, 0xf0, + 0x66, 0xd0, 0x0a, 0x73, 0x6e, 0x11, 0x98, 0x36, 0x17, 0x64, 0xaf, 0x37, + 0x9d, 0xfd, 0xfa, 0x41, 0x84, 0xaf, 0xc7, 0xaf, 0x8c, 0xfe, 0x1a, 0x73, + 0x4d, 0xcf, 0x33, 0x97, 0x90, 0xa2, 0x96, 0x87, 0x53, 0x83, 0x2b, 0xb9, + 0xa6, 0x75, 0x48, 0x2d, 0x1d, 0x56, 0x37, 0x7b, 0xda, 0x31, 0x32, 0x1a, + 0xd7, 0xac, 0xab, 0x06, 0xf4, 0xaa, 0x5d, 0x4b, 0xb7, 0x47, 0x46, 0xdd, + 0x2a, 0x93, 0xc3, 0x90, 0x2e, 0x79, 0x80, 0x80, 0xef, 0x13, 0x04, 0x6a, + 0x14, 0x3b, 0xb5, 0x9b, 0x92, 0xbe, 0xc2, 0x07, 0x65, 0x4e, 0xfc, 0xda, + 0xfc, 0xff, 0x7a, 0xae, 0xdc, 0x5c, 0x7e, 0x55, 0x31, 0x0c, 0xe8, 0x39, + 0x07, 0xa4, 0xd7, 0xbe, 0x2f, 0xd3, 0x0b, 0x6a, 0xd2, 0xb1, 0xdf, 0x5f, + 0xfe, 0x57, 0x74, 0x53, 0x3b, 0x35, 0x80, 0xdd, 0xae, 0x8e, 0x44, 0x98, + 0xb3, 0x9f, 0x0e, 0xd3, 0xda, 0xe0, 0xd7, 0xf4, 0x6b, 0x29, 0xab, 0x44, + 0xa7, 0x4b, 0x58, 0x84, 0x6d, 0x92, 0x4b, 0x81, 0xc3, 0xda, 0x73, 0x8b, + 0x12, 0x97, 0x48, 0x90, 0x04, 0x45, 0x75, 0x1a, 0xdd, 0x37, 0x31, 0x97, + 0x92, 0xe8, 0xcd, 0x54, 0x0d, 0x3b, 0xe4, 0xc1, 0x3f, 0x39, 0x5e, 0x2e, + 0xb8, 0xf3, 0x5c, 0x7e, 0x10, 0x8e, 0x86, 0x41, 0x00, 0x8d, 0x45, 0x66, + 0x47, 0xb0, 0xa1, 0x65, 0xce, 0xa0, 0xaa, 0x29, 0x09, 0x4e, 0xf3, 0x97, + 0xeb, 0xe8, 0x2e, 0xab, 0x0f, 0x72, 0xa7, 0x30, 0x0e, 0xfa, 0xc7, 0xf4, + 0xfd, 0x14, 0x77, 0xc3, 0xa4, 0x5b, 0x28, 0x57, 0xc2, 0xb3, 0xf9, 0x82, + 0xfd, 0xb7, 0x45, 0x58, 0x9b, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, + 0x01, 0x5a, 0x30, 0x82, 0x01, 0x56, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, + 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, + 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, + 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, + 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, + 0x30, 0x7b, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x74, 0x30, 0x72, 0x30, + 0x37, 0xa0, 0x35, 0xa0, 0x33, 0x86, 0x31, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x33, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, + 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x69, 0x67, 0x69, + 0x43, 0x65, 0x72, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x52, 0x6f, + 0x6f, 0x74, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x37, 0xa0, 0x35, + 0xa0, 0x33, 0x86, 0x31, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, + 0x72, 0x6c, 0x34, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, + 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x52, 0x6f, 0x6f, 0x74, 0x43, + 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3d, 0x06, 0x03, 0x55, 0x1d, 0x20, + 0x04, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, + 0x30, 0x2a, 0x30, 0x28, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, + 0x77, 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x50, 0x53, 0x30, 0x1d, 0x06, 0x03, + 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x0f, 0x80, 0x61, 0x1c, 0x82, + 0x31, 0x61, 0xd5, 0x2f, 0x28, 0xe7, 0x8d, 0x46, 0x38, 0xb4, 0x2c, 0xe1, + 0xc6, 0xd9, 0xe2, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, + 0x30, 0x16, 0x80, 0x14, 0x03, 0xde, 0x50, 0x35, 0x56, 0xd1, 0x4c, 0xbb, + 0x66, 0xf0, 0xa3, 0xe2, 0x1b, 0x1b, 0xc3, 0x97, 0xb2, 0x3d, 0xd1, 0x55, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x23, 0x3e, 0xdf, 0x4b, + 0xd2, 0x31, 0x42, 0xa5, 0xb6, 0x7e, 0x42, 0x5c, 0x1a, 0x44, 0xcc, 0x69, + 0xd1, 0x68, 0xb4, 0x5d, 0x4b, 0xe0, 0x04, 0x21, 0x6c, 0x4b, 0xe2, 0x6d, + 0xcc, 0xb1, 0xe0, 0x97, 0x8f, 0xa6, 0x53, 0x09, 0xcd, 0xaa, 0x2a, 0x65, + 0xe5, 0x39, 0x4f, 0x1e, 0x83, 0xa5, 0x6e, 0x5c, 0x98, 0xa2, 0x24, 0x26, + 0xe6, 0xfb, 0xa1, 0xed, 0x93, 0xc7, 0x2e, 0x02, 0xc6, 0x4d, 0x4a, 0xbf, + 0xb0, 0x42, 0xdf, 0x78, 0xda, 0xb3, 0xa8, 0xf9, 0x6d, 0xff, 0x21, 0x85, + 0x53, 0x36, 0x60, 0x4c, 0x76, 0xce, 0xec, 0x38, 0xdc, 0xd6, 0x51, 0x80, + 0xf0, 0xc5, 0xd6, 0xe5, 0xd4, 0x4d, 0x27, 0x64, 0xab, 0x9b, 0xc7, 0x3e, + 0x71, 0xfb, 0x48, 0x97, 0xb8, 0x33, 0x6d, 0xc9, 0x13, 0x07, 0xee, 0x96, + 0xa2, 0x1b, 0x18, 0x15, 0xf6, 0x5c, 0x4c, 0x40, 0xed, 0xb3, 0xc2, 0xec, + 0xff, 0x71, 0xc1, 0xe3, 0x47, 0xff, 0xd4, 0xb9, 0x00, 0xb4, 0x37, 0x42, + 0xda, 0x20, 0xc9, 0xea, 0x6e, 0x8a, 0xee, 0x14, 0x06, 0xae, 0x7d, 0xa2, + 0x59, 0x98, 0x88, 0xa8, 0x1b, 0x6f, 0x2d, 0xf4, 0xf2, 0xc9, 0x14, 0x5f, + 0x26, 0xcf, 0x2c, 0x8d, 0x7e, 0xed, 0x37, 0xc0, 0xa9, 0xd5, 0x39, 0xb9, + 0x82, 0xbf, 0x19, 0x0c, 0xea, 0x34, 0xaf, 0x00, 0x21, 0x68, 0xf8, 0xad, + 0x73, 0xe2, 0xc9, 0x32, 0xda, 0x38, 0x25, 0x0b, 0x55, 0xd3, 0x9a, 0x1d, + 0xf0, 0x68, 0x86, 0xed, 0x2e, 0x41, 0x34, 0xef, 0x7c, 0xa5, 0x50, 0x1d, + 0xbf, 0x3a, 0xf9, 0xd3, 0xc1, 0x08, 0x0c, 0xe6, 0xed, 0x1e, 0x8a, 0x58, + 0x25, 0xe4, 0xb8, 0x77, 0xad, 0x2d, 0x6e, 0xf5, 0x52, 0xdd, 0xb4, 0x74, + 0x8f, 0xab, 0x49, 0x2e, 0x9d, 0x3b, 0x93, 0x34, 0x28, 0x1f, 0x78, 0xce, + 0x94, 0xea, 0xc7, 0xbd, 0xd3, 0xc9, 0x6d, 0x1c, 0xde, 0x5c, 0x32, 0xf3, +} + +var certSet2Cert22 = []byte{ + 0x30, 0x82, 0x04, 0x9a, 0x30, 0x82, 0x03, 0x82, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x0b, 0x1d, 0xb1, 0xa9, 0x19, 0xf2, 0x4c, 0x3c, 0x4e, + 0xfc, 0xb5, 0x7a, 0x6a, 0x4e, 0x6c, 0xbf, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x58, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, + 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x31, 0x30, 0x2f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x28, + 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x50, 0x72, 0x69, + 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x32, 0x30, 0x38, + 0x32, 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, + 0x32, 0x30, 0x38, 0x32, 0x32, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, + 0x30, 0x58, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, + 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x31, 0x31, 0x30, 0x2f, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x28, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x20, 0x56, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, + 0x41, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, + 0x01, 0x01, 0x00, 0x9e, 0xc6, 0x21, 0xcd, 0x2e, 0x3d, 0xd0, 0xbb, 0x2a, + 0x4d, 0xa4, 0x7b, 0x1f, 0xa8, 0x1a, 0xc2, 0x03, 0xa6, 0xff, 0x43, 0x62, + 0x5b, 0xbf, 0x91, 0xd1, 0x66, 0x52, 0xa9, 0x81, 0x90, 0x68, 0x31, 0x86, + 0x16, 0xbb, 0x1d, 0x85, 0x58, 0xa9, 0x7e, 0x91, 0x6a, 0x1e, 0x4c, 0x31, + 0xca, 0x21, 0xc4, 0xbe, 0x70, 0x1b, 0x9f, 0x8c, 0xe4, 0x05, 0x2d, 0x9c, + 0xed, 0x11, 0x79, 0xad, 0x8f, 0x9c, 0x25, 0x86, 0x4c, 0xba, 0xf2, 0xe5, + 0x62, 0x79, 0x8e, 0x22, 0x5f, 0x85, 0x7c, 0x22, 0x35, 0x38, 0x23, 0x8d, + 0x80, 0x3c, 0xac, 0xcc, 0x2d, 0xfc, 0x58, 0xf2, 0x35, 0xbf, 0x66, 0x5b, + 0xeb, 0xc1, 0x24, 0xf8, 0x70, 0x80, 0x74, 0x32, 0xf9, 0x46, 0xde, 0x32, + 0x19, 0x80, 0x8c, 0xb7, 0xe7, 0x1a, 0xa1, 0xaa, 0x64, 0x98, 0x8d, 0xca, + 0xce, 0x0e, 0xdc, 0x6b, 0xf7, 0xe2, 0x90, 0x0a, 0x6c, 0x1c, 0xa5, 0xf4, + 0x90, 0x32, 0x52, 0xe5, 0xf1, 0x00, 0x42, 0x31, 0x91, 0x48, 0x42, 0x89, + 0xa8, 0x5d, 0x7f, 0x63, 0x8d, 0x31, 0xb2, 0xd6, 0x48, 0x5c, 0x45, 0x45, + 0x22, 0xc9, 0xc5, 0x59, 0x12, 0xab, 0x41, 0x94, 0xea, 0xfe, 0x9c, 0x46, + 0x4d, 0x9a, 0xbc, 0x9c, 0xe0, 0xe2, 0xc6, 0x46, 0xb3, 0xe6, 0x7f, 0xdc, + 0xf5, 0x0f, 0xa3, 0x13, 0x45, 0x86, 0x6d, 0x79, 0x78, 0xfc, 0xe1, 0x50, + 0xcf, 0x09, 0x86, 0xe5, 0x9f, 0xbf, 0xcb, 0x3a, 0xd4, 0xe0, 0xb1, 0xd4, + 0xff, 0xa8, 0x3f, 0x7d, 0x62, 0x1f, 0xc0, 0x6d, 0x78, 0x48, 0xc3, 0xd7, + 0xa3, 0xa5, 0x23, 0x61, 0xc5, 0x3e, 0x35, 0x4d, 0xb2, 0xe5, 0xf8, 0xfd, + 0x94, 0x4b, 0xbc, 0x73, 0x53, 0xaf, 0xe3, 0x9a, 0x69, 0x55, 0xbe, 0xcb, + 0x67, 0xab, 0xe1, 0xbe, 0xef, 0x1b, 0xc2, 0x4d, 0xac, 0xcb, 0x29, 0x5c, + 0xbc, 0xed, 0xb8, 0x62, 0x9d, 0x10, 0xe9, 0x02, 0x03, 0x01, 0x00, 0x01, + 0xa3, 0x82, 0x01, 0x5e, 0x30, 0x82, 0x01, 0x5a, 0x30, 0x3d, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x31, 0x30, 0x2f, + 0x30, 0x2d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, + 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x45, 0x56, 0x53, + 0x65, 0x63, 0x75, 0x72, 0x65, 0x2d, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, + 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, + 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, + 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x46, 0x06, 0x03, 0x55, + 0x1d, 0x20, 0x04, 0x3f, 0x30, 0x3d, 0x30, 0x3b, 0x06, 0x04, 0x55, 0x1d, + 0x20, 0x00, 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, + 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x41, 0x06, 0x03, 0x55, + 0x1d, 0x1f, 0x04, 0x3a, 0x30, 0x38, 0x30, 0x36, 0xa0, 0x34, 0xa0, 0x32, + 0x86, 0x30, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x45, 0x56, 0x53, + 0x65, 0x63, 0x75, 0x72, 0x65, 0x2d, 0x63, 0x72, 0x6c, 0x2e, 0x67, 0x65, + 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x50, 0x43, 0x41, 0x2e, 0x63, + 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, + 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x2a, 0x06, 0x03, 0x55, 0x1d, + 0x11, 0x04, 0x23, 0x30, 0x21, 0xa4, 0x1f, 0x30, 0x1d, 0x31, 0x1b, 0x30, + 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x56, 0x65, 0x72, 0x69, + 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x50, 0x4b, 0x49, 0x2d, 0x32, 0x2d, 0x32, + 0x35, 0x33, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, + 0x14, 0x6f, 0x26, 0x56, 0xd9, 0x5c, 0xe7, 0xf7, 0xc9, 0x04, 0x20, 0xf8, + 0x1e, 0xba, 0x7c, 0x91, 0x27, 0x2f, 0x8c, 0xfa, 0x07, 0x30, 0x1f, 0x06, + 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x2c, 0xd5, + 0x50, 0x41, 0x97, 0x15, 0x8b, 0xf0, 0x8f, 0x36, 0x61, 0x5b, 0x4a, 0xfb, + 0x6b, 0xd9, 0x99, 0xc9, 0x33, 0x92, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x01, 0x00, 0x92, 0x77, 0xe9, 0x57, 0xc9, 0xeb, 0xc4, 0x45, 0x6f, 0xc9, + 0x4c, 0x6e, 0x7d, 0x00, 0x12, 0x71, 0xa5, 0xe3, 0x39, 0xfe, 0x13, 0x84, + 0x49, 0x6c, 0xe7, 0x49, 0x71, 0xf5, 0x2c, 0xc7, 0xc0, 0x36, 0xc2, 0x08, + 0x58, 0xf3, 0x83, 0x75, 0xc5, 0x72, 0xd8, 0x8d, 0x78, 0xf4, 0x65, 0xea, + 0x8c, 0xd5, 0xe3, 0xa5, 0x0e, 0xa9, 0xad, 0xeb, 0xe3, 0xa1, 0x23, 0xae, + 0x93, 0xb7, 0xd8, 0x75, 0x75, 0x4a, 0x59, 0xcb, 0xf2, 0x9e, 0xdb, 0x40, + 0xbf, 0x4e, 0x89, 0xfe, 0x95, 0x42, 0x29, 0x34, 0x7b, 0xf4, 0xdd, 0x6a, + 0x0d, 0x74, 0x5f, 0xc7, 0x11, 0x13, 0x2e, 0xdd, 0x11, 0x6e, 0xc6, 0xe3, + 0x5b, 0xb3, 0xcf, 0xa6, 0x8d, 0xe5, 0xf7, 0x67, 0x7b, 0xba, 0xb3, 0xb3, + 0x69, 0x70, 0x14, 0xb0, 0xc2, 0x99, 0xb4, 0xd2, 0x76, 0x5b, 0x38, 0x17, + 0x39, 0x45, 0x1b, 0x82, 0xf1, 0x53, 0xb8, 0x3d, 0x55, 0x39, 0x0b, 0x7f, + 0xff, 0x98, 0xad, 0x6e, 0x96, 0x9a, 0xb6, 0x6a, 0x4c, 0x7a, 0x5e, 0xbd, + 0xb1, 0x86, 0x12, 0x9d, 0x7c, 0x2c, 0x62, 0xbb, 0x09, 0x93, 0x5f, 0x3f, + 0xd8, 0xb5, 0x8a, 0xc3, 0x49, 0x28, 0x0f, 0x0b, 0xf9, 0x39, 0x22, 0x1a, + 0xfe, 0x5d, 0xd3, 0xe8, 0x18, 0x5f, 0x9d, 0x5f, 0xb4, 0xc0, 0x20, 0xc6, + 0xa9, 0x49, 0x0d, 0x55, 0x73, 0x6a, 0x09, 0x7a, 0xff, 0xa2, 0x99, 0xbf, + 0xd8, 0xbb, 0x91, 0xdc, 0x30, 0x39, 0xae, 0x28, 0x4b, 0xf6, 0xc5, 0x77, + 0x24, 0xe8, 0xd6, 0xc6, 0xa7, 0xa0, 0x4e, 0xf2, 0xa6, 0x99, 0x75, 0xcd, + 0xdd, 0x57, 0xdd, 0x0a, 0x47, 0x92, 0xcb, 0xbb, 0xb7, 0x48, 0xfa, 0x21, + 0xf0, 0x69, 0x21, 0xff, 0xe5, 0x0c, 0xaa, 0x0c, 0xb1, 0xea, 0xdd, 0x05, + 0x1c, 0x19, 0x8e, 0xd1, 0x2a, 0x79, 0x68, 0x02, 0x5e, 0xcc, 0x38, 0xe6, + 0x29, 0xc4, 0x77, 0xf5, 0x19, 0x1c, +} + +var certSet2Cert23 = []byte{ + 0x30, 0x82, 0x04, 0xa0, 0x30, 0x82, 0x03, 0x88, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x39, 0x14, 0x84, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x68, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x1c, 0x53, + 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x54, 0x65, 0x63, + 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x29, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x32, 0x20, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x31, + 0x34, 0x30, 0x31, 0x30, 0x31, 0x30, 0x37, 0x30, 0x30, 0x30, 0x30, 0x5a, + 0x17, 0x0d, 0x33, 0x31, 0x30, 0x35, 0x33, 0x30, 0x30, 0x37, 0x30, 0x30, + 0x30, 0x30, 0x5a, 0x30, 0x81, 0x8f, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, + 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0e, 0x06, + 0x03, 0x55, 0x04, 0x08, 0x13, 0x07, 0x41, 0x72, 0x69, 0x7a, 0x6f, 0x6e, + 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0a, + 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61, 0x6c, 0x65, 0x31, 0x25, + 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x1c, 0x53, 0x74, 0x61, + 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x54, 0x65, 0x63, 0x68, 0x6e, + 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x29, + 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x52, 0x6f, + 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, + 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, + 0x01, 0x00, 0xbd, 0xed, 0xc1, 0x03, 0xfc, 0xf6, 0x8f, 0xfc, 0x02, 0xb1, + 0x6f, 0x5b, 0x9f, 0x48, 0xd9, 0x9d, 0x79, 0xe2, 0xa2, 0xb7, 0x03, 0x61, + 0x56, 0x18, 0xc3, 0x47, 0xb6, 0xd7, 0xca, 0x3d, 0x35, 0x2e, 0x89, 0x43, + 0xf7, 0xa1, 0x69, 0x9b, 0xde, 0x8a, 0x1a, 0xfd, 0x13, 0x20, 0x9c, 0xb4, + 0x49, 0x77, 0x32, 0x29, 0x56, 0xfd, 0xb9, 0xec, 0x8c, 0xdd, 0x22, 0xfa, + 0x72, 0xdc, 0x27, 0x61, 0x97, 0xee, 0xf6, 0x5a, 0x84, 0xec, 0x6e, 0x19, + 0xb9, 0x89, 0x2c, 0xdc, 0x84, 0x5b, 0xd5, 0x74, 0xfb, 0x6b, 0x5f, 0xc5, + 0x89, 0xa5, 0x10, 0x52, 0x89, 0x46, 0x55, 0xf4, 0xb8, 0x75, 0x1c, 0xe6, + 0x7f, 0xe4, 0x54, 0xae, 0x4b, 0xf8, 0x55, 0x72, 0x57, 0x02, 0x19, 0xf8, + 0x17, 0x71, 0x59, 0xeb, 0x1e, 0x28, 0x07, 0x74, 0xc5, 0x9d, 0x48, 0xbe, + 0x6c, 0xb4, 0xf4, 0xa4, 0xb0, 0xf3, 0x64, 0x37, 0x79, 0x92, 0xc0, 0xec, + 0x46, 0x5e, 0x7f, 0xe1, 0x6d, 0x53, 0x4c, 0x62, 0xaf, 0xcd, 0x1f, 0x0b, + 0x63, 0xbb, 0x3a, 0x9d, 0xfb, 0xfc, 0x79, 0x00, 0x98, 0x61, 0x74, 0xcf, + 0x26, 0x82, 0x40, 0x63, 0xf3, 0xb2, 0x72, 0x6a, 0x19, 0x0d, 0x99, 0xca, + 0xd4, 0x0e, 0x75, 0xcc, 0x37, 0xfb, 0x8b, 0x89, 0xc1, 0x59, 0xf1, 0x62, + 0x7f, 0x5f, 0xb3, 0x5f, 0x65, 0x30, 0xf8, 0xa7, 0xb7, 0x4d, 0x76, 0x5a, + 0x1e, 0x76, 0x5e, 0x34, 0xc0, 0xe8, 0x96, 0x56, 0x99, 0x8a, 0xb3, 0xf0, + 0x7f, 0xa4, 0xcd, 0xbd, 0xdc, 0x32, 0x31, 0x7c, 0x91, 0xcf, 0xe0, 0x5f, + 0x11, 0xf8, 0x6b, 0xaa, 0x49, 0x5c, 0xd1, 0x99, 0x94, 0xd1, 0xa2, 0xe3, + 0x63, 0x5b, 0x09, 0x76, 0xb5, 0x56, 0x62, 0xe1, 0x4b, 0x74, 0x1d, 0x96, + 0xd4, 0x26, 0xd4, 0x08, 0x04, 0x59, 0xd0, 0x98, 0x0e, 0x0e, 0xe6, 0xde, + 0xfc, 0xc3, 0xec, 0x1f, 0x90, 0xf1, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, + 0x82, 0x01, 0x29, 0x30, 0x82, 0x01, 0x25, 0x30, 0x0f, 0x06, 0x03, 0x55, + 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, + 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, + 0x03, 0x02, 0x01, 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, + 0x16, 0x04, 0x14, 0x7c, 0x0c, 0x32, 0x1f, 0xa7, 0xd9, 0x30, 0x7f, 0xc4, + 0x7d, 0x68, 0xa3, 0x62, 0xa8, 0xa1, 0xce, 0xab, 0x07, 0x5b, 0x27, 0x30, + 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, + 0xbf, 0x5f, 0xb7, 0xd1, 0xce, 0xdd, 0x1f, 0x86, 0xf4, 0x5b, 0x55, 0xac, + 0xdc, 0xd7, 0x10, 0xc2, 0x0e, 0xa9, 0x88, 0xe7, 0x30, 0x3a, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x2e, 0x30, 0x2c, + 0x30, 0x2a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, + 0x86, 0x1e, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, + 0x70, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x74, + 0x65, 0x63, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x30, 0x38, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x31, 0x30, 0x2f, 0x30, 0x2d, 0xa0, 0x2b, 0xa0, + 0x29, 0x86, 0x27, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, + 0x6c, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x74, + 0x65, 0x63, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x66, 0x72, 0x6f, + 0x6f, 0x74, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, + 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, 0x41, 0x06, 0x04, 0x55, 0x1d, 0x20, + 0x00, 0x30, 0x39, 0x30, 0x37, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x01, 0x16, 0x2b, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, + 0x2f, 0x63, 0x65, 0x72, 0x74, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x74, 0x65, 0x63, 0x68, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x85, 0x63, 0xc1, 0xd9, + 0xdd, 0xb9, 0xff, 0xa9, 0xbd, 0xa6, 0x19, 0xdc, 0xbf, 0x13, 0x3a, 0x11, + 0x38, 0x22, 0x54, 0xb1, 0xac, 0x05, 0x10, 0xfb, 0x7c, 0xb3, 0x96, 0x3f, + 0x31, 0x8b, 0x66, 0xff, 0x88, 0xf3, 0xe1, 0xbf, 0xfb, 0xc7, 0x1f, 0x00, + 0xff, 0x46, 0x6a, 0x8b, 0x61, 0x32, 0xc9, 0x01, 0x51, 0x76, 0xfb, 0x9a, + 0xc6, 0xfa, 0x20, 0x51, 0xc8, 0x46, 0xc4, 0x98, 0xd7, 0x79, 0xa3, 0xe3, + 0x04, 0x72, 0x3f, 0x8b, 0x4d, 0x34, 0x53, 0x67, 0xec, 0x33, 0x2c, 0x7b, + 0xe8, 0x94, 0x01, 0x28, 0x7c, 0x3a, 0x34, 0x5b, 0x02, 0x77, 0x16, 0x8d, + 0x40, 0x25, 0x33, 0xb0, 0xbc, 0x6c, 0x97, 0xd7, 0x05, 0x7a, 0xff, 0x8c, + 0x85, 0xce, 0x6f, 0xa0, 0x53, 0x00, 0x17, 0x6e, 0x1e, 0x6c, 0xbd, 0x22, + 0xd7, 0x0a, 0x88, 0x37, 0xf6, 0x7d, 0xeb, 0x99, 0x41, 0xef, 0x27, 0xcb, + 0x8c, 0x60, 0x6b, 0x4c, 0x01, 0x7e, 0x65, 0x50, 0x0b, 0x4f, 0xb8, 0x95, + 0x9a, 0x9a, 0x6e, 0x34, 0xfd, 0x73, 0x3a, 0x33, 0xf1, 0x91, 0xd5, 0xf3, + 0x4e, 0x2d, 0x74, 0xe8, 0xef, 0xd3, 0x90, 0x35, 0xf1, 0x06, 0x68, 0x64, + 0xd4, 0xd0, 0x13, 0xfd, 0x52, 0xd3, 0xc6, 0x6d, 0xc1, 0x3a, 0x8a, 0x31, + 0xdd, 0x05, 0x26, 0x35, 0x4a, 0x8c, 0x65, 0xb8, 0x52, 0x6b, 0x81, 0xec, + 0xd2, 0x9c, 0xb5, 0x34, 0x10, 0x97, 0x9c, 0x3e, 0xc6, 0x2f, 0xed, 0x8e, + 0x42, 0x42, 0x24, 0x2e, 0xe9, 0x73, 0x9a, 0x25, 0xf9, 0x11, 0xf1, 0xf2, + 0x23, 0x69, 0xcb, 0xe5, 0x94, 0x69, 0xa0, 0xd2, 0xdc, 0xb0, 0xfc, 0x44, + 0x89, 0xac, 0x17, 0xa8, 0xcc, 0xd5, 0x37, 0x77, 0x16, 0xc5, 0x80, 0xb9, + 0x0c, 0x8f, 0x57, 0x02, 0x55, 0x99, 0x85, 0x7b, 0x49, 0xf0, 0x2e, 0x5b, + 0xa0, 0xc2, 0x57, 0x53, 0x5d, 0xa2, 0xe8, 0xa6, 0x37, 0xc3, 0x01, 0xfa, +} + +var certSet2Cert24 = []byte{ + 0x30, 0x82, 0x04, 0xa6, 0x30, 0x82, 0x03, 0x8e, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x28, 0x1c, 0x89, 0x29, 0x66, 0x14, 0x43, 0x80, 0x42, + 0x63, 0x55, 0x3a, 0x32, 0x40, 0xae, 0xb3, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0x98, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x30, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x38, 0x20, 0x47, 0x65, + 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, + 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, + 0x79, 0x31, 0x36, 0x30, 0x34, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2d, + 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x50, 0x72, 0x69, + 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x1e, 0x17, + 0x0d, 0x31, 0x35, 0x30, 0x36, 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x35, 0x30, 0x36, 0x32, 0x39, 0x32, 0x33, + 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x47, 0x31, 0x0b, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, + 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x20, 0x30, 0x1e, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x17, 0x52, 0x61, 0x70, 0x69, 0x64, + 0x53, 0x53, 0x4c, 0x20, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x43, + 0x41, 0x20, 0x2d, 0x20, 0x47, 0x34, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, + 0x01, 0x01, 0x00, 0xc0, 0x9e, 0x3a, 0x0f, 0x9a, 0xb2, 0xba, 0xd3, 0xd2, + 0xdc, 0x15, 0xec, 0xd0, 0x30, 0x54, 0x59, 0x30, 0x4d, 0x40, 0x51, 0xae, + 0x42, 0x71, 0x71, 0xd2, 0x8d, 0x53, 0x73, 0x81, 0xfe, 0xb8, 0xe0, 0xc4, + 0x96, 0xc5, 0x8e, 0x7e, 0xc2, 0xf1, 0xb7, 0x63, 0x4a, 0xcf, 0xa7, 0x1e, + 0x3f, 0xa8, 0xe7, 0xce, 0x53, 0xa0, 0xfa, 0x2d, 0xf7, 0xd6, 0xe6, 0xce, + 0x70, 0x11, 0xa6, 0xee, 0xe1, 0x03, 0x52, 0xd2, 0x68, 0xde, 0x3d, 0x08, + 0x0d, 0x87, 0xfd, 0x1c, 0xd7, 0x0b, 0x97, 0x62, 0x6d, 0x82, 0x30, 0x76, + 0x1b, 0x47, 0x3a, 0xc4, 0xf7, 0xce, 0xed, 0x1d, 0x7c, 0x8c, 0xb7, 0x17, + 0x8e, 0x53, 0x80, 0x1e, 0x1d, 0x0f, 0x5d, 0x8c, 0xf9, 0x90, 0xe4, 0x04, + 0x1e, 0x02, 0x7e, 0xcb, 0xb0, 0x49, 0xef, 0xda, 0x52, 0x25, 0xfb, 0xfb, + 0x67, 0xed, 0xdd, 0x84, 0x74, 0x59, 0x84, 0x0e, 0xf3, 0xde, 0x70, 0x66, + 0x8d, 0xe4, 0x52, 0x38, 0xf7, 0x53, 0x5a, 0x37, 0x13, 0x67, 0x0b, 0x3e, + 0xbb, 0xa8, 0x58, 0xb7, 0x2e, 0xed, 0xff, 0xb7, 0x5e, 0x11, 0x73, 0xb9, + 0x77, 0x45, 0x52, 0x67, 0x46, 0xae, 0xc4, 0xdc, 0x24, 0x81, 0x89, 0x76, + 0x0a, 0xca, 0xa1, 0x6c, 0x66, 0x73, 0x04, 0x82, 0xaa, 0xf5, 0x70, 0x6c, + 0x5f, 0x1b, 0x9a, 0x00, 0x79, 0x46, 0xd6, 0x7f, 0x7a, 0x26, 0x17, 0x30, + 0xcf, 0x39, 0x4b, 0x2c, 0x74, 0xd9, 0x89, 0x44, 0x76, 0x10, 0xd0, 0xed, + 0xf7, 0x8b, 0xbb, 0x89, 0x05, 0x75, 0x4d, 0x0b, 0x0d, 0xb3, 0xda, 0xe9, + 0xbf, 0xf1, 0x6a, 0x7d, 0x2a, 0x11, 0xdb, 0x1e, 0x9f, 0x8c, 0xe3, 0xc4, + 0x06, 0x69, 0xe1, 0x1d, 0x88, 0x45, 0x39, 0xd1, 0x6e, 0x55, 0xd8, 0xaa, + 0xb7, 0x9b, 0x6f, 0xea, 0xf4, 0xde, 0xac, 0x17, 0x11, 0x92, 0x5d, 0x40, + 0x9b, 0x83, 0x7b, 0x9a, 0xe2, 0xf7, 0xa9, 0x02, 0x03, 0x01, 0x00, 0x01, + 0xa3, 0x82, 0x01, 0x3a, 0x30, 0x82, 0x01, 0x36, 0x30, 0x2e, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x22, 0x30, 0x20, + 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, + 0x86, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, 0x73, + 0x79, 0x6d, 0x63, 0x64, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x12, 0x06, 0x03, + 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, + 0xff, 0x02, 0x01, 0x00, 0x30, 0x49, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, + 0x42, 0x30, 0x40, 0x30, 0x3e, 0x06, 0x06, 0x67, 0x81, 0x0c, 0x01, 0x02, + 0x01, 0x30, 0x34, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x01, 0x16, 0x26, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, + 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, + 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x36, 0x06, 0x03, 0x55, + 0x1d, 0x1f, 0x04, 0x2f, 0x30, 0x2d, 0x30, 0x2b, 0xa0, 0x29, 0xa0, 0x27, + 0x86, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, 0x73, + 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x65, 0x6f, + 0x54, 0x72, 0x75, 0x73, 0x74, 0x50, 0x43, 0x41, 0x2d, 0x47, 0x33, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, 0x16, + 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x01, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x30, 0x0e, + 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, + 0x01, 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, + 0x14, 0xf3, 0xb5, 0x56, 0x0c, 0xc4, 0x09, 0xb0, 0xb4, 0xcf, 0x1f, 0xaa, + 0xf9, 0xdd, 0x23, 0x56, 0xf0, 0x77, 0xe8, 0xa1, 0xf9, 0x30, 0x1f, 0x06, + 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xc4, 0x79, + 0xca, 0x8e, 0xa1, 0x4e, 0x03, 0x1d, 0x1c, 0xdc, 0x6b, 0xdb, 0x31, 0x5b, + 0x94, 0x3e, 0x3f, 0x30, 0x7f, 0x2d, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x01, 0x00, 0xc3, 0x7e, 0xd8, 0x83, 0x4b, 0x04, 0x4c, 0x55, 0x29, 0x2a, + 0x4f, 0x14, 0x9d, 0x9a, 0x6e, 0xde, 0x90, 0x70, 0xc1, 0xa4, 0x26, 0x4c, + 0x88, 0x8e, 0x78, 0x48, 0xef, 0xbd, 0x9c, 0xb0, 0xa0, 0xf5, 0xf0, 0x66, + 0xfc, 0xfe, 0x59, 0x26, 0xe1, 0x79, 0xef, 0xc8, 0xb7, 0x60, 0x64, 0xa8, + 0x8b, 0x47, 0xea, 0x2f, 0xe0, 0x83, 0x99, 0xda, 0x41, 0x19, 0xd7, 0xc5, + 0xbe, 0x05, 0xfa, 0xf2, 0x90, 0x11, 0xf0, 0x0a, 0xff, 0x6c, 0xdc, 0x05, + 0xb4, 0xd8, 0x06, 0x6f, 0xa4, 0x6f, 0x8d, 0xbe, 0x20, 0x2b, 0x54, 0xdb, + 0xf9, 0xa2, 0x45, 0x83, 0x9a, 0x1e, 0xa5, 0x21, 0x89, 0x35, 0x1d, 0x7c, + 0x20, 0x5c, 0x17, 0xfd, 0x04, 0x2e, 0x45, 0xd8, 0xb2, 0xc6, 0xf8, 0x42, + 0x99, 0xfc, 0x54, 0x08, 0x4e, 0x4b, 0x80, 0x5f, 0x39, 0x37, 0xba, 0x95, + 0x4e, 0xa6, 0x37, 0x0a, 0x9e, 0x93, 0x5e, 0x87, 0x5b, 0xe9, 0x90, 0xd6, + 0xa8, 0xb6, 0x65, 0x08, 0x8d, 0x61, 0x49, 0xeb, 0x83, 0x20, 0xa9, 0x5d, + 0x1b, 0x16, 0x60, 0x62, 0x6b, 0x2f, 0x54, 0xfb, 0x5a, 0x02, 0x0d, 0x7a, + 0x27, 0xe2, 0x4b, 0xe1, 0x05, 0x14, 0xc2, 0xe4, 0xe9, 0xf9, 0x70, 0xc0, + 0xd9, 0xf7, 0x34, 0x65, 0x0e, 0xa2, 0x91, 0x4b, 0xac, 0x28, 0xf2, 0xb7, + 0x08, 0x0f, 0x98, 0xca, 0xd7, 0x3e, 0x70, 0xb6, 0xc8, 0x0b, 0xf1, 0x8b, + 0x9c, 0x51, 0xf8, 0xc6, 0x10, 0x6c, 0xd2, 0x53, 0x4f, 0x62, 0x8c, 0x11, + 0x00, 0x3e, 0x88, 0xdf, 0xbf, 0xe6, 0xd2, 0xcc, 0x70, 0xbd, 0xed, 0x25, + 0x9c, 0xfb, 0xdd, 0x24, 0x0a, 0xbd, 0x59, 0x91, 0x4a, 0x42, 0x03, 0x38, + 0x12, 0x71, 0x32, 0x88, 0x76, 0xa0, 0x8e, 0x7c, 0xbb, 0x32, 0xef, 0x88, + 0x2a, 0x1b, 0xd4, 0x6a, 0x6f, 0x50, 0xb9, 0x52, 0x67, 0x8b, 0xab, 0x30, + 0xfa, 0x1f, 0xfd, 0xe3, 0x24, 0x9a, +} + +var certSet2Cert25 = []byte{ + 0x30, 0x82, 0x04, 0xaf, 0x30, 0x82, 0x03, 0x97, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x5d, 0x72, 0xfb, 0x33, 0x76, 0x20, 0xf6, 0x4c, 0x72, + 0x80, 0xdb, 0xe9, 0x12, 0x81, 0xff, 0x6a, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xa9, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, + 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, 0x06, + 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, + 0x30, 0x36, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, + 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x16, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, + 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x33, 0x31, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x31, + 0x30, 0x33, 0x30, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x44, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x15, 0x74, + 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x45, 0x56, 0x20, 0x53, 0x53, 0x4c, + 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xc4, 0xdd, 0xda, 0x94, 0x1e, 0x32, 0xb2, + 0x2e, 0xa0, 0x83, 0xc0, 0xa6, 0x7d, 0x5f, 0x65, 0x2d, 0xfd, 0x27, 0xb8, + 0x73, 0x0e, 0xf8, 0x0b, 0xa9, 0xd4, 0x56, 0x26, 0x69, 0x98, 0x67, 0x35, + 0x39, 0x64, 0x58, 0xce, 0x82, 0x6f, 0x98, 0x94, 0xd1, 0x8f, 0xe0, 0x90, + 0xd6, 0xed, 0x55, 0x4b, 0x98, 0x4b, 0xd7, 0x10, 0x59, 0x34, 0x02, 0x1b, + 0xe7, 0x51, 0x31, 0x51, 0xc4, 0x38, 0xc2, 0xbc, 0xdb, 0x03, 0x5c, 0xca, + 0xe1, 0x7c, 0xdc, 0x4f, 0x59, 0x97, 0xea, 0x07, 0x7f, 0x0f, 0x85, 0x3e, + 0x92, 0xea, 0xaa, 0xa7, 0xd9, 0xbe, 0x01, 0x41, 0xe4, 0x62, 0x56, 0x47, + 0x36, 0xbd, 0x57, 0x91, 0xe6, 0x21, 0xd3, 0xf8, 0x41, 0x0b, 0xd8, 0xba, + 0xe8, 0xed, 0x81, 0xad, 0x70, 0xc0, 0x8b, 0x6e, 0xf3, 0x89, 0x6e, 0x27, + 0x9e, 0xa6, 0xa6, 0x73, 0x59, 0xbb, 0x71, 0x00, 0xd4, 0x4f, 0x4b, 0x48, + 0xe9, 0xd5, 0xc9, 0x27, 0x36, 0x9c, 0x7c, 0x1c, 0x02, 0xaa, 0xac, 0xbd, + 0x3b, 0xd1, 0x53, 0x83, 0x6a, 0x1f, 0xe6, 0x08, 0x47, 0x33, 0xa7, 0xb1, + 0x9f, 0x02, 0xbe, 0x9b, 0x47, 0xed, 0x33, 0x04, 0xdc, 0x1c, 0x80, 0x27, + 0xd1, 0x4a, 0x33, 0xa0, 0x8c, 0xeb, 0x01, 0x47, 0xa1, 0x32, 0x90, 0x64, + 0x7b, 0xc4, 0xe0, 0x84, 0xc9, 0x32, 0xe9, 0xdd, 0x34, 0x1f, 0x8a, 0x68, + 0x67, 0xf3, 0xad, 0x10, 0x63, 0xeb, 0xee, 0x8a, 0x9a, 0xb1, 0x2a, 0x1b, + 0x26, 0x74, 0xa1, 0x2a, 0xb0, 0x8f, 0xfe, 0x52, 0x98, 0x46, 0x97, 0xcf, + 0xa3, 0x56, 0x1c, 0x6f, 0x6e, 0x99, 0x97, 0x8d, 0x26, 0x0e, 0xa9, 0xec, + 0xc2, 0x53, 0x70, 0xfc, 0x7a, 0xa5, 0x19, 0x49, 0xbd, 0xb5, 0x17, 0x82, + 0x55, 0xde, 0x97, 0xe0, 0x5d, 0x62, 0x84, 0x81, 0xf0, 0x70, 0xa8, 0x34, + 0x53, 0x4f, 0x14, 0xfd, 0x3d, 0x5d, 0x3d, 0x6f, 0xb9, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x82, 0x01, 0x35, 0x30, 0x82, 0x01, 0x31, 0x30, 0x12, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, + 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x2f, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x23, + 0x30, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x74, + 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x30, + 0x3b, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, + 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, + 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68, + 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, + 0x30, 0x32, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2b, 0x30, 0x29, 0x30, + 0x27, 0xa0, 0x25, 0xa0, 0x23, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x74, 0x31, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x50, 0x43, 0x41, + 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x29, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, + 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31, 0x1a, 0x30, 0x18, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, + 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d, 0x35, 0x33, 0x36, 0x30, + 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xf0, 0x70, + 0x51, 0xda, 0xd3, 0x2a, 0x91, 0x4f, 0x52, 0x77, 0xd7, 0x86, 0x77, 0x74, + 0x0f, 0xce, 0x71, 0x1a, 0x6c, 0x22, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, + 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x7b, 0x5b, 0x45, 0xcf, 0xaf, + 0xce, 0xcb, 0x7a, 0xfd, 0x31, 0x92, 0x1a, 0x6a, 0xb6, 0xf3, 0x46, 0xeb, + 0x57, 0x48, 0x50, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xa1, + 0x2e, 0x94, 0x3e, 0x9b, 0x16, 0xf4, 0x58, 0x1a, 0x6f, 0xc1, 0xfa, 0xc1, + 0x7e, 0x43, 0x93, 0xb2, 0xc3, 0xf7, 0x89, 0xeb, 0x13, 0x62, 0x5d, 0xdd, + 0xcc, 0x61, 0x13, 0x2b, 0x1d, 0x4e, 0x88, 0x79, 0x11, 0x62, 0x14, 0x37, + 0x30, 0x46, 0xff, 0x89, 0x62, 0x10, 0x85, 0x2a, 0x87, 0x1e, 0xf8, 0xe2, + 0xaf, 0xfe, 0x93, 0x02, 0x93, 0xca, 0xf2, 0xe9, 0x46, 0x03, 0x6b, 0xa1, + 0x1a, 0xac, 0xd5, 0xf0, 0x80, 0x1b, 0x98, 0x6f, 0xb8, 0x3a, 0x50, 0xf8, + 0x54, 0x71, 0x06, 0x03, 0xe7, 0x84, 0xcc, 0x8e, 0x61, 0xd2, 0x5f, 0x4d, + 0x0c, 0x97, 0x02, 0x65, 0xb5, 0x8c, 0x26, 0xbc, 0x05, 0x98, 0xf4, 0xdc, + 0xc6, 0xaf, 0xe4, 0x57, 0x7f, 0xe3, 0xdc, 0xa1, 0xd7, 0x27, 0x47, 0x2a, + 0xe0, 0x2c, 0x3f, 0x09, 0x74, 0xdc, 0x5a, 0xe5, 0xb5, 0x7c, 0xfa, 0x82, + 0x9a, 0x15, 0xfa, 0x74, 0x2b, 0x84, 0x2e, 0x6b, 0xac, 0xef, 0x35, 0xa6, + 0x30, 0xfa, 0x47, 0x4a, 0xaa, 0x36, 0x44, 0xf6, 0x5a, 0x91, 0x07, 0xd3, + 0xe4, 0x4e, 0x97, 0x3f, 0xa6, 0x53, 0xd8, 0x29, 0x33, 0x32, 0x6f, 0x8b, + 0x3d, 0xb5, 0xa5, 0x0d, 0xe5, 0xe4, 0x8a, 0xe8, 0xf5, 0xc0, 0xfa, 0xaf, + 0xd8, 0x37, 0x28, 0x27, 0xc3, 0xed, 0x34, 0x31, 0xd9, 0x7c, 0xa6, 0xaf, + 0x4d, 0x12, 0x4f, 0xd0, 0x2b, 0x92, 0x9c, 0x69, 0x95, 0xf2, 0x28, 0xa6, + 0xfe, 0xa8, 0xc6, 0xe0, 0x2c, 0x4d, 0x36, 0xeb, 0x11, 0x34, 0xd6, 0xe1, + 0x81, 0x99, 0x9d, 0x41, 0xf2, 0xe7, 0xc5, 0x57, 0x05, 0x0e, 0x19, 0xca, + 0xaf, 0x42, 0x39, 0x1f, 0xa7, 0x27, 0x5e, 0xe0, 0x0a, 0x17, 0xb8, 0xae, + 0x47, 0xab, 0x92, 0xf1, 0x8a, 0x04, 0xdf, 0x30, 0xe0, 0xbb, 0x4f, 0x8a, + 0xf9, 0x1b, 0x88, 0x4f, 0x03, 0xb4, 0x25, 0x7a, 0x78, 0xde, 0x2e, 0x7d, + 0x29, 0xd1, 0x31, +} + +var certSet2Cert26 = []byte{ + 0x30, 0x82, 0x04, 0xb1, 0x30, 0x82, 0x03, 0x99, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x04, 0xe1, 0xe7, 0xa4, 0xdc, 0x5c, 0xf2, 0xf3, 0x6d, + 0xc0, 0x2b, 0x42, 0xb8, 0x5d, 0x15, 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x6c, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, + 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, + 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x22, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48, + 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, + 0x65, 0x20, 0x45, 0x56, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, + 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x32, 0x32, 0x31, 0x32, + 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x38, 0x31, 0x30, 0x32, + 0x32, 0x31, 0x32, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x70, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44, 0x69, + 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31, 0x19, + 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, 0x77, 0x77, + 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, + 0x6d, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x26, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x53, 0x48, 0x41, + 0x32, 0x20, 0x48, 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, + 0x61, 0x6e, 0x63, 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, + 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xb6, + 0xe0, 0x2f, 0xc2, 0x24, 0x06, 0xc8, 0x6d, 0x04, 0x5f, 0xd7, 0xef, 0x0a, + 0x64, 0x06, 0xb2, 0x7d, 0x22, 0x26, 0x65, 0x16, 0xae, 0x42, 0x40, 0x9b, + 0xce, 0xdc, 0x9f, 0x9f, 0x76, 0x07, 0x3e, 0xc3, 0x30, 0x55, 0x87, 0x19, + 0xb9, 0x4f, 0x94, 0x0e, 0x5a, 0x94, 0x1f, 0x55, 0x56, 0xb4, 0xc2, 0x02, + 0x2a, 0xaf, 0xd0, 0x98, 0xee, 0x0b, 0x40, 0xd7, 0xc4, 0xd0, 0x3b, 0x72, + 0xc8, 0x14, 0x9e, 0xef, 0x90, 0xb1, 0x11, 0xa9, 0xae, 0xd2, 0xc8, 0xb8, + 0x43, 0x3a, 0xd9, 0x0b, 0x0b, 0xd5, 0xd5, 0x95, 0xf5, 0x40, 0xaf, 0xc8, + 0x1d, 0xed, 0x4d, 0x9c, 0x5f, 0x57, 0xb7, 0x86, 0x50, 0x68, 0x99, 0xf5, + 0x8a, 0xda, 0xd2, 0xc7, 0x05, 0x1f, 0xa8, 0x97, 0xc9, 0xdc, 0xa4, 0xb1, + 0x82, 0x84, 0x2d, 0xc6, 0xad, 0xa5, 0x9c, 0xc7, 0x19, 0x82, 0xa6, 0x85, + 0x0f, 0x5e, 0x44, 0x58, 0x2a, 0x37, 0x8f, 0xfd, 0x35, 0xf1, 0x0b, 0x08, + 0x27, 0x32, 0x5a, 0xf5, 0xbb, 0x8b, 0x9e, 0xa4, 0xbd, 0x51, 0xd0, 0x27, + 0xe2, 0xdd, 0x3b, 0x42, 0x33, 0xa3, 0x05, 0x28, 0xc4, 0xbb, 0x28, 0xcc, + 0x9a, 0xac, 0x2b, 0x23, 0x0d, 0x78, 0xc6, 0x7b, 0xe6, 0x5e, 0x71, 0xb7, + 0x4a, 0x3e, 0x08, 0xfb, 0x81, 0xb7, 0x16, 0x16, 0xa1, 0x9d, 0x23, 0x12, + 0x4d, 0xe5, 0xd7, 0x92, 0x08, 0xac, 0x75, 0xa4, 0x9c, 0xba, 0xcd, 0x17, + 0xb2, 0x1e, 0x44, 0x35, 0x65, 0x7f, 0x53, 0x25, 0x39, 0xd1, 0x1c, 0x0a, + 0x9a, 0x63, 0x1b, 0x19, 0x92, 0x74, 0x68, 0x0a, 0x37, 0xc2, 0xc2, 0x52, + 0x48, 0xcb, 0x39, 0x5a, 0xa2, 0xb6, 0xe1, 0x5d, 0xc1, 0xdd, 0xa0, 0x20, + 0xb8, 0x21, 0xa2, 0x93, 0x26, 0x6f, 0x14, 0x4a, 0x21, 0x41, 0xc7, 0xed, + 0x6d, 0x9b, 0xf2, 0x48, 0x2f, 0xf3, 0x03, 0xf5, 0xa2, 0x68, 0x92, 0x53, + 0x2f, 0x5e, 0xe3, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x49, + 0x30, 0x82, 0x01, 0x45, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, + 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, + 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, + 0x03, 0x02, 0x01, 0x86, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, + 0x16, 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, + 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x30, + 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, + 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, + 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x4b, 0x06, 0x03, 0x55, 0x1d, 0x1f, + 0x04, 0x44, 0x30, 0x42, 0x30, 0x40, 0xa0, 0x3e, 0xa0, 0x3c, 0x86, 0x3a, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x34, 0x2e, + 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x48, 0x69, 0x67, + 0x68, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x45, 0x56, + 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3d, + 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06, + 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x2a, 0x30, 0x28, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, 0x74, + 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, + 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x50, + 0x53, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0x51, 0x68, 0xff, 0x90, 0xaf, 0x02, 0x07, 0x75, 0x3c, 0xcc, 0xd9, 0x65, + 0x64, 0x62, 0xa2, 0x12, 0xb8, 0x59, 0x72, 0x3b, 0x30, 0x1f, 0x06, 0x03, + 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xb1, 0x3e, 0xc3, + 0x69, 0x03, 0xf8, 0xbf, 0x47, 0x01, 0xd4, 0x98, 0x26, 0x1a, 0x08, 0x02, + 0xef, 0x63, 0x64, 0x2b, 0xc3, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, + 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, + 0x00, 0x18, 0x8a, 0x95, 0x89, 0x03, 0xe6, 0x6d, 0xdf, 0x5c, 0xfc, 0x1d, + 0x68, 0xea, 0x4a, 0x8f, 0x83, 0xd6, 0x51, 0x2f, 0x8d, 0x6b, 0x44, 0x16, + 0x9e, 0xac, 0x63, 0xf5, 0xd2, 0x6e, 0x6c, 0x84, 0x99, 0x8b, 0xaa, 0x81, + 0x71, 0x84, 0x5b, 0xed, 0x34, 0x4e, 0xb0, 0xb7, 0x79, 0x92, 0x29, 0xcc, + 0x2d, 0x80, 0x6a, 0xf0, 0x8e, 0x20, 0xe1, 0x79, 0xa4, 0xfe, 0x03, 0x47, + 0x13, 0xea, 0xf5, 0x86, 0xca, 0x59, 0x71, 0x7d, 0xf4, 0x04, 0x96, 0x6b, + 0xd3, 0x59, 0x58, 0x3d, 0xfe, 0xd3, 0x31, 0x25, 0x5c, 0x18, 0x38, 0x84, + 0xa3, 0xe6, 0x9f, 0x82, 0xfd, 0x8c, 0x5b, 0x98, 0x31, 0x4e, 0xcd, 0x78, + 0x9e, 0x1a, 0xfd, 0x85, 0xcb, 0x49, 0xaa, 0xf2, 0x27, 0x8b, 0x99, 0x72, + 0xfc, 0x3e, 0xaa, 0xd5, 0x41, 0x0b, 0xda, 0xd5, 0x36, 0xa1, 0xbf, 0x1c, + 0x6e, 0x47, 0x49, 0x7f, 0x5e, 0xd9, 0x48, 0x7c, 0x03, 0xd9, 0xfd, 0x8b, + 0x49, 0xa0, 0x98, 0x26, 0x42, 0x40, 0xeb, 0xd6, 0x92, 0x11, 0xa4, 0x64, + 0x0a, 0x57, 0x54, 0xc4, 0xf5, 0x1d, 0xd6, 0x02, 0x5e, 0x6b, 0xac, 0xee, + 0xc4, 0x80, 0x9a, 0x12, 0x72, 0xfa, 0x56, 0x93, 0xd7, 0xff, 0xbf, 0x30, + 0x85, 0x06, 0x30, 0xbf, 0x0b, 0x7f, 0x4e, 0xff, 0x57, 0x05, 0x9d, 0x24, + 0xed, 0x85, 0xc3, 0x2b, 0xfb, 0xa6, 0x75, 0xa8, 0xac, 0x2d, 0x16, 0xef, + 0x7d, 0x79, 0x27, 0xb2, 0xeb, 0xc2, 0x9d, 0x0b, 0x07, 0xea, 0xaa, 0x85, + 0xd3, 0x01, 0xa3, 0x20, 0x28, 0x41, 0x59, 0x43, 0x28, 0xd2, 0x81, 0xe3, + 0xaa, 0xf6, 0xec, 0x7b, 0x3b, 0x77, 0xb6, 0x40, 0x62, 0x80, 0x05, 0x41, + 0x45, 0x01, 0xef, 0x17, 0x06, 0x3e, 0xde, 0xc0, 0x33, 0x9b, 0x67, 0xd3, + 0x61, 0x2e, 0x72, 0x87, 0xe4, 0x69, 0xfc, 0x12, 0x00, 0x57, 0x40, 0x1e, + 0x70, 0xf5, 0x1e, 0xc9, 0xb4, +} + +var certSet2Cert27 = []byte{ + 0x30, 0x82, 0x04, 0xb2, 0x30, 0x82, 0x03, 0x9a, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x16, 0x87, 0xd6, 0x88, 0x6d, 0xe2, 0x30, 0x06, 0x85, + 0x23, 0x3d, 0xbf, 0x11, 0xbf, 0x65, 0x97, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xa9, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, + 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, 0x06, + 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, + 0x30, 0x36, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, + 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x16, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, + 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x33, 0x31, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x31, + 0x30, 0x33, 0x30, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x41, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x74, + 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, + 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, + 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, + 0x01, 0x00, 0xb2, 0xfc, 0x06, 0xfb, 0x04, 0x93, 0xd2, 0xea, 0x59, 0x20, + 0x3b, 0x44, 0x85, 0x97, 0x52, 0x39, 0xe7, 0x10, 0xf0, 0x7a, 0xe0, 0xb0, + 0x94, 0x40, 0xda, 0x46, 0xf8, 0x0c, 0x28, 0xbb, 0xb9, 0xce, 0x60, 0x38, + 0x3f, 0xd2, 0xd8, 0x11, 0x42, 0x1b, 0x91, 0xad, 0x49, 0xee, 0x8f, 0xc7, + 0xde, 0x6c, 0xde, 0x37, 0x6f, 0xfd, 0x8b, 0x20, 0x3c, 0x6d, 0xe7, 0x74, + 0xd3, 0xdc, 0xd5, 0x24, 0x88, 0x41, 0x80, 0x89, 0xee, 0x36, 0xbe, 0xc4, + 0xd5, 0xbe, 0x8d, 0x53, 0x13, 0xaa, 0xe4, 0xa5, 0xb8, 0x93, 0x0a, 0xbe, + 0xec, 0xda, 0xcd, 0x3c, 0xd4, 0x32, 0x56, 0xef, 0xd0, 0x4e, 0xa0, 0xb8, + 0x97, 0xbb, 0x39, 0x50, 0x1e, 0x6e, 0x65, 0xc3, 0xfd, 0xb2, 0xce, 0xe0, + 0x59, 0xa9, 0x48, 0x09, 0xc6, 0xfe, 0xbe, 0xae, 0xfc, 0x3e, 0x3b, 0x81, + 0x20, 0x97, 0x8b, 0x8f, 0x46, 0xdf, 0x60, 0x64, 0x07, 0x75, 0xbb, 0x1b, + 0x86, 0x38, 0x9f, 0x47, 0x7b, 0x34, 0xce, 0xa1, 0xd1, 0x97, 0xad, 0x76, + 0xd8, 0x9f, 0xb7, 0x26, 0xdb, 0x79, 0x80, 0x36, 0x48, 0xf2, 0xc5, 0x37, + 0xf8, 0xd9, 0x32, 0xae, 0x7c, 0xa4, 0x53, 0x81, 0xc7, 0x99, 0xa1, 0x54, + 0x38, 0x2f, 0x4f, 0x75, 0xa0, 0xbb, 0x5a, 0xa5, 0xbb, 0xcd, 0xac, 0x02, + 0x5b, 0x19, 0x02, 0xd5, 0x13, 0x18, 0xa7, 0xce, 0xac, 0x74, 0x55, 0x12, + 0x05, 0x8b, 0x9b, 0xa2, 0x95, 0x46, 0x64, 0x72, 0x38, 0xcd, 0x5a, 0x1b, + 0x3a, 0x16, 0xa7, 0xbe, 0x71, 0x99, 0x8c, 0x54, 0x03, 0xb8, 0x96, 0x6c, + 0x01, 0xd3, 0x3e, 0x06, 0x98, 0x3f, 0x21, 0x81, 0x3b, 0x02, 0x7e, 0x00, + 0x47, 0x53, 0x01, 0x1e, 0x0e, 0x46, 0x43, 0xfb, 0x4b, 0x2d, 0xdc, 0x0b, + 0x1a, 0xe8, 0x2f, 0x98, 0xf8, 0x7e, 0xd1, 0x99, 0xab, 0x13, 0x6c, 0xa4, + 0x17, 0xde, 0x6f, 0xf6, 0x15, 0xf5, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, + 0x82, 0x01, 0x3b, 0x30, 0x82, 0x01, 0x37, 0x30, 0x12, 0x06, 0x03, 0x55, + 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, + 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, + 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x32, 0x06, 0x03, 0x55, + 0x1d, 0x1f, 0x04, 0x2b, 0x30, 0x29, 0x30, 0x27, 0xa0, 0x25, 0xa0, 0x23, + 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x74, 0x31, 0x2e, + 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, + 0x61, 0x77, 0x74, 0x65, 0x50, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, + 0x2f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, + 0x23, 0x30, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x74, 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x30, 0x41, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3a, 0x30, 0x38, 0x30, + 0x36, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07, + 0x36, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, + 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x29, 0x06, 0x03, 0x55, + 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31, 0x1a, + 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79, 0x6d, + 0x61, 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d, 0x35, + 0x33, 0x37, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, + 0x14, 0xc2, 0x4f, 0x48, 0x57, 0xfc, 0xd1, 0x4f, 0x9a, 0xc0, 0x5d, 0x38, + 0x7d, 0x0e, 0x05, 0xdb, 0xd9, 0x2e, 0xb5, 0x52, 0x60, 0x30, 0x1f, 0x06, + 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x7b, 0x5b, + 0x45, 0xcf, 0xaf, 0xce, 0xcb, 0x7a, 0xfd, 0x31, 0x92, 0x1a, 0x6a, 0xb6, + 0xf3, 0x46, 0xeb, 0x57, 0x48, 0x50, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x01, 0x00, 0x8d, 0x06, 0xde, 0x43, 0xc9, 0x76, 0x02, 0xca, 0xd9, 0x23, + 0x97, 0x5e, 0xf3, 0x63, 0xd7, 0x7d, 0x44, 0xc2, 0x0f, 0x6b, 0x0a, 0xf5, + 0x07, 0xe5, 0x8b, 0xb8, 0xfa, 0xe0, 0xa3, 0xfa, 0x6b, 0x80, 0x92, 0xb5, + 0x03, 0x2c, 0xc5, 0x37, 0xe0, 0xc2, 0xe5, 0x95, 0xb5, 0x92, 0x70, 0x18, + 0x28, 0x42, 0x94, 0xee, 0x4b, 0x77, 0x6a, 0x01, 0x0f, 0x8b, 0x23, 0xec, + 0x56, 0x4d, 0xf4, 0x00, 0x69, 0xe5, 0x84, 0xc8, 0xe2, 0xea, 0xde, 0x5b, + 0x3e, 0xf6, 0x3c, 0x07, 0x3a, 0x94, 0xca, 0x6c, 0x27, 0xb1, 0xcc, 0x83, + 0x1a, 0x60, 0x71, 0x27, 0xd2, 0xbf, 0x02, 0xf5, 0x1e, 0x44, 0xd3, 0x48, + 0xd5, 0xa6, 0xd3, 0x76, 0x21, 0x00, 0x9c, 0xfa, 0x98, 0x64, 0xeb, 0x17, + 0x36, 0x3f, 0xeb, 0x1b, 0x3c, 0x3e, 0xa6, 0xb1, 0xd9, 0x58, 0x06, 0x0e, + 0x72, 0xd9, 0x68, 0xbe, 0xf1, 0xa7, 0x20, 0xd7, 0x52, 0xe4, 0xa4, 0x77, + 0x1f, 0x71, 0x70, 0x9d, 0x55, 0x35, 0x85, 0x37, 0xe1, 0x1d, 0x4d, 0x94, + 0xc2, 0x70, 0x7f, 0x95, 0x40, 0x6e, 0x4b, 0x7d, 0xb2, 0xb4, 0x29, 0x2a, + 0x03, 0x79, 0xc8, 0xb9, 0x4c, 0x67, 0x61, 0x04, 0xa0, 0x8b, 0x27, 0xff, + 0x59, 0x00, 0xeb, 0x55, 0x7f, 0xc6, 0xb7, 0x33, 0x35, 0x2d, 0x5e, 0x4e, + 0xac, 0xb8, 0xea, 0x12, 0xc5, 0xe8, 0xf7, 0xb9, 0xab, 0xbe, 0x74, 0x92, + 0x2c, 0xb7, 0xd9, 0x4d, 0xca, 0x84, 0x2f, 0x1c, 0xc2, 0xf0, 0x72, 0x7c, + 0xb2, 0x31, 0x6e, 0xcf, 0x80, 0xe5, 0x88, 0x07, 0x36, 0x51, 0x7b, 0xba, + 0x61, 0xaf, 0x6d, 0x8d, 0x23, 0x5b, 0x34, 0xa3, 0x95, 0xbc, 0xa2, 0x31, + 0x7f, 0xf2, 0xf5, 0xe7, 0xb7, 0xe8, 0xef, 0xc4, 0xb5, 0x27, 0x32, 0xe9, + 0xf7, 0x9e, 0x69, 0xc7, 0x2b, 0xe8, 0xbe, 0xbb, 0x0c, 0xaa, 0xe7, 0xea, + 0x60, 0x12, 0xea, 0x26, 0x8a, 0x78, +} + +var certSet2Cert28 = []byte{ + 0x30, 0x82, 0x04, 0xb6, 0x30, 0x82, 0x03, 0x9e, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x0c, 0x79, 0xa9, 0x44, 0xb0, 0x8c, 0x11, 0x95, 0x20, + 0x92, 0x61, 0x5f, 0xe2, 0x6b, 0x1d, 0x83, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x6c, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, + 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, + 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x22, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48, + 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, + 0x65, 0x20, 0x45, 0x56, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, + 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x32, 0x32, 0x31, 0x32, + 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x38, 0x31, 0x30, 0x32, + 0x32, 0x31, 0x32, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x75, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44, 0x69, + 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31, 0x19, + 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, 0x77, 0x77, + 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, + 0x6d, 0x31, 0x34, 0x30, 0x32, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2b, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x53, 0x48, 0x41, + 0x32, 0x20, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x20, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, + 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, + 0x82, 0x01, 0x01, 0x00, 0xd7, 0x53, 0xa4, 0x04, 0x51, 0xf8, 0x99, 0xa6, + 0x16, 0x48, 0x4b, 0x67, 0x27, 0xaa, 0x93, 0x49, 0xd0, 0x39, 0xed, 0x0c, + 0xb0, 0xb0, 0x00, 0x87, 0xf1, 0x67, 0x28, 0x86, 0x85, 0x8c, 0x8e, 0x63, + 0xda, 0xbc, 0xb1, 0x40, 0x38, 0xe2, 0xd3, 0xf5, 0xec, 0xa5, 0x05, 0x18, + 0xb8, 0x3d, 0x3e, 0xc5, 0x99, 0x17, 0x32, 0xec, 0x18, 0x8c, 0xfa, 0xf1, + 0x0c, 0xa6, 0x64, 0x21, 0x85, 0xcb, 0x07, 0x10, 0x34, 0xb0, 0x52, 0x88, + 0x2b, 0x1f, 0x68, 0x9b, 0xd2, 0xb1, 0x8f, 0x12, 0xb0, 0xb3, 0xd2, 0xe7, + 0x88, 0x1f, 0x1f, 0xef, 0x38, 0x77, 0x54, 0x53, 0x5f, 0x80, 0x79, 0x3f, + 0x2e, 0x1a, 0xaa, 0xa8, 0x1e, 0x4b, 0x2b, 0x0d, 0xab, 0xb7, 0x63, 0xb9, + 0x35, 0xb7, 0x7d, 0x14, 0xbc, 0x59, 0x4b, 0xdf, 0x51, 0x4a, 0xd2, 0xa1, + 0xe2, 0x0c, 0xe2, 0x90, 0x82, 0x87, 0x6a, 0xae, 0xea, 0xd7, 0x64, 0xd6, + 0x98, 0x55, 0xe8, 0xfd, 0xaf, 0x1a, 0x50, 0x6c, 0x54, 0xbc, 0x11, 0xf2, + 0xfd, 0x4a, 0xf2, 0x9d, 0xbb, 0x7f, 0x0e, 0xf4, 0xd5, 0xbe, 0x8e, 0x16, + 0x89, 0x12, 0x55, 0xd8, 0xc0, 0x71, 0x34, 0xee, 0xf6, 0xdc, 0x2d, 0xec, + 0xc4, 0x87, 0x25, 0x86, 0x8d, 0xd8, 0x21, 0xe4, 0xb0, 0x4d, 0x0c, 0x89, + 0xdc, 0x39, 0x26, 0x17, 0xdd, 0xf6, 0xd7, 0x94, 0x85, 0xd8, 0x04, 0x21, + 0x70, 0x9d, 0x6f, 0x6f, 0xff, 0x5c, 0xba, 0x19, 0xe1, 0x45, 0xcb, 0x56, + 0x57, 0x28, 0x7e, 0x1c, 0x0d, 0x41, 0x57, 0xaa, 0xb7, 0xb8, 0x27, 0xbb, + 0xb1, 0xe4, 0xfa, 0x2a, 0xef, 0x21, 0x23, 0x75, 0x1a, 0xad, 0x2d, 0x9b, + 0x86, 0x35, 0x8c, 0x9c, 0x77, 0xb5, 0x73, 0xad, 0xd8, 0x94, 0x2d, 0xe4, + 0xf3, 0x0c, 0x9d, 0xee, 0xc1, 0x4e, 0x62, 0x7e, 0x17, 0xc0, 0x71, 0x9e, + 0x2c, 0xde, 0xf1, 0xf9, 0x10, 0x28, 0x19, 0x33, 0x02, 0x03, 0x01, 0x00, + 0x01, 0xa3, 0x82, 0x01, 0x49, 0x30, 0x82, 0x01, 0x45, 0x30, 0x12, 0x06, + 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, + 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, + 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x1d, 0x06, + 0x03, 0x55, 0x1d, 0x25, 0x04, 0x16, 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x03, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x03, 0x02, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x64, 0x69, + 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x4b, + 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x44, 0x30, 0x42, 0x30, 0x40, 0xa0, + 0x3e, 0xa0, 0x3c, 0x86, 0x3a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x63, 0x72, 0x6c, 0x34, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, + 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, + 0x72, 0x74, 0x48, 0x69, 0x67, 0x68, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, + 0x6e, 0x63, 0x65, 0x45, 0x56, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x3d, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x36, + 0x30, 0x34, 0x30, 0x32, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x2a, + 0x30, 0x28, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, + 0x16, 0x1c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, + 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x43, 0x50, 0x53, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, + 0x0e, 0x04, 0x16, 0x04, 0x14, 0x3d, 0xd3, 0x50, 0xa5, 0xd6, 0xa0, 0xad, + 0xee, 0xf3, 0x4a, 0x60, 0x0a, 0x65, 0xd3, 0x21, 0xd4, 0xf8, 0xf8, 0xd6, + 0x0f, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, + 0x80, 0x14, 0xb1, 0x3e, 0xc3, 0x69, 0x03, 0xf8, 0xbf, 0x47, 0x01, 0xd4, + 0x98, 0x26, 0x1a, 0x08, 0x02, 0xef, 0x63, 0x64, 0x2b, 0xc3, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x9d, 0xb6, 0xd0, 0x90, 0x86, 0xe1, + 0x86, 0x02, 0xed, 0xc5, 0xa0, 0xf0, 0x34, 0x1c, 0x74, 0xc1, 0x8d, 0x76, + 0xcc, 0x86, 0x0a, 0xa8, 0xf0, 0x4a, 0x8a, 0x42, 0xd6, 0x3f, 0xc8, 0xa9, + 0x4d, 0xad, 0x7c, 0x08, 0xad, 0xe6, 0xb6, 0x50, 0xb8, 0xa2, 0x1a, 0x4d, + 0x88, 0x07, 0xb1, 0x29, 0x21, 0xdc, 0xe7, 0xda, 0xc6, 0x3c, 0x21, 0xe0, + 0xe3, 0x11, 0x49, 0x70, 0xac, 0x7a, 0x1d, 0x01, 0xa4, 0xca, 0x11, 0x3a, + 0x57, 0xab, 0x7d, 0x57, 0x2a, 0x40, 0x74, 0xfd, 0xd3, 0x1d, 0x85, 0x18, + 0x50, 0xdf, 0x57, 0x47, 0x75, 0xa1, 0x7d, 0x55, 0x20, 0x2e, 0x47, 0x37, + 0x50, 0x72, 0x8c, 0x7f, 0x82, 0x1b, 0xd2, 0x62, 0x8f, 0x2d, 0x03, 0x5a, + 0xda, 0xc3, 0xc8, 0xa1, 0xce, 0x2c, 0x52, 0xa2, 0x00, 0x63, 0xeb, 0x73, + 0xba, 0x71, 0xc8, 0x49, 0x27, 0x23, 0x97, 0x64, 0x85, 0x9e, 0x38, 0x0e, + 0xad, 0x63, 0x68, 0x3c, 0xba, 0x52, 0x81, 0x58, 0x79, 0xa3, 0x2c, 0x0c, + 0xdf, 0xde, 0x6d, 0xeb, 0x31, 0xf2, 0xba, 0xa0, 0x7c, 0x6c, 0xf1, 0x2c, + 0xd4, 0xe1, 0xbd, 0x77, 0x84, 0x37, 0x03, 0xce, 0x32, 0xb5, 0xc8, 0x9a, + 0x81, 0x1a, 0x4a, 0x92, 0x4e, 0x3b, 0x46, 0x9a, 0x85, 0xfe, 0x83, 0xa2, + 0xf9, 0x9e, 0x8c, 0xa3, 0xcc, 0x0d, 0x5e, 0xb3, 0x3d, 0xcf, 0x04, 0x78, + 0x8f, 0x14, 0x14, 0x7b, 0x32, 0x9c, 0xc7, 0x00, 0xa6, 0x5c, 0xc4, 0xb5, + 0xa1, 0x55, 0x8d, 0x5a, 0x56, 0x68, 0xa4, 0x22, 0x70, 0xaa, 0x3c, 0x81, + 0x71, 0xd9, 0x9d, 0xa8, 0x45, 0x3b, 0xf4, 0xe5, 0xf6, 0xa2, 0x51, 0xdd, + 0xc7, 0x7b, 0x62, 0xe8, 0x6f, 0x0c, 0x74, 0xeb, 0xb8, 0xda, 0xf8, 0xbf, + 0x87, 0x0d, 0x79, 0x50, 0x91, 0x90, 0x9b, 0x18, 0x3b, 0x91, 0x59, 0x27, + 0xf1, 0x35, 0x28, 0x13, 0xab, 0x26, 0x7e, 0xd5, 0xf7, 0x7a, +} + +var certSet2Cert29 = []byte{ + 0x30, 0x82, 0x04, 0xc2, 0x30, 0x82, 0x03, 0xaa, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x36, 0x34, 0x9e, 0x18, 0xc9, 0x9c, 0x26, 0x69, 0xb6, + 0x56, 0x2e, 0x6c, 0xe5, 0xad, 0x71, 0x32, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xae, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, + 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, 0x06, + 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, + 0x30, 0x38, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, + 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x1b, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, + 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x1e, 0x17, 0x0d, 0x31, + 0x33, 0x30, 0x35, 0x32, 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, + 0x17, 0x0d, 0x32, 0x33, 0x30, 0x35, 0x32, 0x32, 0x32, 0x33, 0x35, 0x39, + 0x35, 0x39, 0x5a, 0x30, 0x43, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, + 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, + 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, + 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x14, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x53, + 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, + 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, + 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xa3, 0x63, 0x2b, + 0xd4, 0xba, 0x5d, 0x38, 0xae, 0xb0, 0xcf, 0xb9, 0x4c, 0x38, 0xdf, 0x20, + 0x7d, 0xf1, 0x2b, 0x47, 0x71, 0x1d, 0x8b, 0x68, 0xf3, 0x56, 0xf9, 0x9c, + 0xda, 0xaa, 0xe5, 0x84, 0x26, 0xde, 0xa5, 0x71, 0x30, 0xbc, 0xf3, 0x31, + 0x23, 0x9d, 0xe8, 0x3b, 0x80, 0xc8, 0x66, 0x57, 0x75, 0xb6, 0x57, 0x0e, + 0xdb, 0x93, 0xf5, 0x26, 0x8e, 0x70, 0xba, 0x64, 0x52, 0x66, 0x8a, 0x2a, + 0x88, 0x5c, 0x44, 0x18, 0x4d, 0xa8, 0xa2, 0x7c, 0xbd, 0x56, 0x61, 0x32, + 0x90, 0x12, 0xf9, 0x35, 0x87, 0x48, 0x60, 0xb0, 0x6e, 0x90, 0x67, 0x44, + 0x01, 0x8d, 0xe7, 0xc9, 0x0d, 0x63, 0x68, 0x72, 0x72, 0xab, 0x63, 0x3c, + 0x86, 0xb8, 0x1f, 0x7d, 0xad, 0x88, 0x25, 0xa7, 0x6a, 0x88, 0x29, 0xfb, + 0x59, 0xc6, 0x78, 0x71, 0x5f, 0x2c, 0xba, 0x89, 0xe6, 0xd3, 0x80, 0xfd, + 0x57, 0xec, 0xb9, 0x51, 0x5f, 0x43, 0x33, 0x2e, 0x7e, 0x25, 0x3b, 0xa4, + 0x04, 0xd1, 0x60, 0x8c, 0xb3, 0x44, 0x33, 0x93, 0x0c, 0xad, 0x2a, 0xb6, + 0x44, 0xa2, 0x19, 0x3b, 0xaf, 0xc4, 0x90, 0x6f, 0x7b, 0x05, 0x87, 0x86, + 0x9b, 0x2c, 0x6a, 0x9d, 0x2b, 0x6c, 0x77, 0xc9, 0x00, 0x9f, 0xc9, 0xcf, + 0xac, 0xed, 0x3e, 0x1b, 0xf7, 0xc3, 0xf3, 0xd9, 0xf8, 0x6c, 0xd4, 0xa0, + 0x57, 0xc4, 0xfb, 0x28, 0x32, 0xaa, 0x33, 0xf0, 0xe6, 0xba, 0x98, 0xdf, + 0xe5, 0xc2, 0x4e, 0x9c, 0x74, 0xbf, 0x8a, 0x48, 0xc2, 0xf2, 0x1b, 0xf0, + 0x77, 0x40, 0x41, 0x07, 0x04, 0xb2, 0x3a, 0xd5, 0x4c, 0xc4, 0x29, 0xa9, + 0x11, 0x40, 0x3f, 0x02, 0x46, 0xf0, 0x91, 0xd5, 0xd2, 0x81, 0x83, 0x86, + 0x13, 0xb3, 0x31, 0xed, 0x46, 0xab, 0xa8, 0x87, 0x76, 0xa9, 0x99, 0x7d, + 0xbc, 0xcd, 0x31, 0x50, 0xf4, 0xa5, 0xb5, 0xdc, 0xa5, 0x32, 0xb3, 0x8b, + 0x8b, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x44, 0x30, 0x82, + 0x01, 0x40, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x01, 0x01, 0x04, 0x26, 0x30, 0x24, 0x30, 0x22, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x16, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x74, 0x68, 0x61, 0x77, + 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, + 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, + 0x01, 0x00, 0x30, 0x41, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3a, 0x30, + 0x38, 0x30, 0x36, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, + 0x01, 0x07, 0x36, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x73, + 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, + 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x37, 0x06, + 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0xa0, 0x2a, + 0xa0, 0x28, 0x86, 0x26, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, + 0x72, 0x6c, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x50, 0x43, 0x41, 0x2d, + 0x47, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x2a, + 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x23, 0x30, 0x21, 0xa4, 0x1f, 0x30, + 0x1d, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, + 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x50, 0x4b, 0x49, + 0x2d, 0x32, 0x2d, 0x34, 0x31, 0x35, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, + 0x0e, 0x04, 0x16, 0x04, 0x14, 0x2b, 0x9a, 0x35, 0xae, 0x01, 0x18, 0x38, + 0x30, 0xe1, 0x70, 0x7a, 0x05, 0xe0, 0x11, 0x76, 0xa3, 0xce, 0xbd, 0x90, + 0x14, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, + 0x80, 0x14, 0xad, 0x6c, 0xaa, 0x94, 0x60, 0x9c, 0xed, 0xe4, 0xff, 0xfa, + 0x3e, 0x0a, 0x74, 0x2b, 0x63, 0x03, 0xf7, 0xb6, 0x59, 0xbf, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x74, 0xa6, 0x56, 0xe8, 0xaf, 0x93, + 0x96, 0x19, 0xfb, 0x26, 0xf9, 0x0d, 0xb0, 0x44, 0xa5, 0xcd, 0xe9, 0x7a, + 0x48, 0x03, 0x74, 0x01, 0x6c, 0x13, 0x71, 0xb7, 0xe0, 0x82, 0x90, 0x99, + 0x62, 0x23, 0xe3, 0xd6, 0x99, 0xaf, 0xf0, 0xc7, 0x1e, 0x9e, 0xa8, 0x18, + 0x21, 0xdb, 0xb4, 0x94, 0x3f, 0x34, 0x56, 0x1b, 0x99, 0x55, 0x2f, 0x8e, + 0xf0, 0x45, 0x33, 0x32, 0xb7, 0x72, 0xc1, 0x13, 0x5b, 0x34, 0xd3, 0xf5, + 0x60, 0xe5, 0x2e, 0x18, 0xd1, 0x5c, 0xc5, 0x6a, 0xc1, 0xaa, 0x87, 0x50, + 0x0c, 0x1c, 0x9d, 0x64, 0x2b, 0xff, 0x1b, 0xdc, 0xd5, 0x2e, 0x61, 0x0b, + 0xe7, 0xb9, 0xb6, 0x91, 0x53, 0x86, 0xd9, 0x03, 0x2a, 0xd1, 0x3d, 0x7b, + 0x4a, 0xda, 0x2b, 0x07, 0xbe, 0x29, 0xf2, 0x60, 0x42, 0xa9, 0x91, 0x1a, + 0x0e, 0x2e, 0x3c, 0xd1, 0x7d, 0xa5, 0x13, 0x14, 0x02, 0xfa, 0xee, 0x8b, + 0x8d, 0xb6, 0xc8, 0xb8, 0x3e, 0x56, 0x81, 0x57, 0x21, 0x24, 0x3f, 0x65, + 0xc3, 0xb4, 0xc9, 0xce, 0x5c, 0x8d, 0x46, 0xac, 0x53, 0xf3, 0xf9, 0x55, + 0x74, 0xc8, 0x2b, 0xfd, 0xd2, 0x78, 0x70, 0xf5, 0xf8, 0x11, 0xe5, 0xf4, + 0xa7, 0xad, 0x20, 0xf5, 0x9d, 0xf1, 0xec, 0x70, 0xf6, 0x13, 0xac, 0xe6, + 0x8c, 0x8d, 0xdb, 0x3f, 0xc6, 0xf2, 0x79, 0x0e, 0xab, 0x52, 0xf2, 0xcc, + 0x1b, 0x79, 0x27, 0xcf, 0x16, 0xb3, 0xd6, 0xf3, 0xc6, 0x36, 0x80, 0x43, + 0xec, 0xc5, 0x94, 0xf0, 0xdd, 0x90, 0x8d, 0xf8, 0xc6, 0x52, 0x46, 0x56, + 0xeb, 0x74, 0x47, 0xbe, 0xa6, 0xf3, 0x19, 0xae, 0x71, 0x4c, 0xc0, 0xe1, + 0xe7, 0xd4, 0xcf, 0xed, 0xd4, 0x06, 0x28, 0x2a, 0x11, 0x3c, 0xba, 0xd9, + 0x41, 0x6e, 0x00, 0xe7, 0x81, 0x37, 0x93, 0xe4, 0xda, 0x62, 0xc6, 0x1d, + 0x67, 0x6f, 0x63, 0xb4, 0x14, 0x86, 0xd9, 0xa6, 0x62, 0xf0, +} + +var certSet2Cert30 = []byte{ + 0x30, 0x82, 0x04, 0xc6, 0x30, 0x82, 0x04, 0x2f, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x35, 0x97, 0x31, 0x87, 0xf3, 0x87, 0x3a, 0x07, 0x32, + 0x7e, 0xce, 0x58, 0x0c, 0x9b, 0x7e, 0xda, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x5f, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, + 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x31, 0x37, 0x30, 0x35, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, + 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x31, 0x31, 0x30, 0x38, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x31, 0x31, 0x31, 0x30, 0x37, + 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x81, 0xca, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65, + 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, 0x56, + 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x3a, 0x30, + 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28, 0x63, 0x29, 0x20, + 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, + 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, + 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, + 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x45, 0x30, + 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56, 0x65, 0x72, 0x69, + 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, + 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d, + 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xaf, 0x24, 0x08, 0x08, 0x29, 0x7a, 0x35, + 0x9e, 0x60, 0x0c, 0xaa, 0xe7, 0x4b, 0x3b, 0x4e, 0xdc, 0x7c, 0xbc, 0x3c, + 0x45, 0x1c, 0xbb, 0x2b, 0xe0, 0xfe, 0x29, 0x02, 0xf9, 0x57, 0x08, 0xa3, + 0x64, 0x85, 0x15, 0x27, 0xf5, 0xf1, 0xad, 0xc8, 0x31, 0x89, 0x5d, 0x22, + 0xe8, 0x2a, 0xaa, 0xa6, 0x42, 0xb3, 0x8f, 0xf8, 0xb9, 0x55, 0xb7, 0xb1, + 0xb7, 0x4b, 0xb3, 0xfe, 0x8f, 0x7e, 0x07, 0x57, 0xec, 0xef, 0x43, 0xdb, + 0x66, 0x62, 0x15, 0x61, 0xcf, 0x60, 0x0d, 0xa4, 0xd8, 0xde, 0xf8, 0xe0, + 0xc3, 0x62, 0x08, 0x3d, 0x54, 0x13, 0xeb, 0x49, 0xca, 0x59, 0x54, 0x85, + 0x26, 0xe5, 0x2b, 0x8f, 0x1b, 0x9f, 0xeb, 0xf5, 0xa1, 0x91, 0xc2, 0x33, + 0x49, 0xd8, 0x43, 0x63, 0x6a, 0x52, 0x4b, 0xd2, 0x8f, 0xe8, 0x70, 0x51, + 0x4d, 0xd1, 0x89, 0x69, 0x7b, 0xc7, 0x70, 0xf6, 0xb3, 0xdc, 0x12, 0x74, + 0xdb, 0x7b, 0x5d, 0x4b, 0x56, 0xd3, 0x96, 0xbf, 0x15, 0x77, 0xa1, 0xb0, + 0xf4, 0xa2, 0x25, 0xf2, 0xaf, 0x1c, 0x92, 0x67, 0x18, 0xe5, 0xf4, 0x06, + 0x04, 0xef, 0x90, 0xb9, 0xe4, 0x00, 0xe4, 0xdd, 0x3a, 0xb5, 0x19, 0xff, + 0x02, 0xba, 0xf4, 0x3c, 0xee, 0xe0, 0x8b, 0xeb, 0x37, 0x8b, 0xec, 0xf4, + 0xd7, 0xac, 0xf2, 0xf6, 0xf0, 0x3d, 0xaf, 0xdd, 0x75, 0x91, 0x33, 0x19, + 0x1d, 0x1c, 0x40, 0xcb, 0x74, 0x24, 0x19, 0x21, 0x93, 0xd9, 0x14, 0xfe, + 0xac, 0x2a, 0x52, 0xc7, 0x8f, 0xd5, 0x04, 0x49, 0xe4, 0x8d, 0x63, 0x47, + 0x88, 0x3c, 0x69, 0x83, 0xcb, 0xfe, 0x47, 0xbd, 0x2b, 0x7e, 0x4f, 0xc5, + 0x95, 0xae, 0x0e, 0x9d, 0xd4, 0xd1, 0x43, 0xc0, 0x67, 0x73, 0xe3, 0x14, + 0x08, 0x7e, 0xe5, 0x3f, 0x9f, 0x73, 0xb8, 0x33, 0x0a, 0xcf, 0x5d, 0x3f, + 0x34, 0x87, 0x96, 0x8a, 0xee, 0x53, 0xe8, 0x25, 0x15, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x82, 0x01, 0x91, 0x30, 0x82, 0x01, 0x8d, 0x30, 0x0f, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, + 0x01, 0x01, 0xff, 0x30, 0x31, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2a, + 0x30, 0x28, 0x30, 0x26, 0xa0, 0x24, 0xa0, 0x22, 0x86, 0x20, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x76, 0x65, 0x72, + 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63, + 0x61, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x3d, + 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06, + 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x2a, 0x30, 0x28, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, 0x74, + 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, 0x72, + 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, + 0x73, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0x7f, 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09, 0xf3, + 0x43, 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, 0x33, 0x30, 0x34, 0x06, 0x03, + 0x55, 0x1d, 0x25, 0x04, 0x2d, 0x30, 0x2b, 0x06, 0x09, 0x60, 0x86, 0x48, + 0x01, 0x86, 0xf8, 0x42, 0x04, 0x01, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, + 0x86, 0xf8, 0x45, 0x01, 0x08, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x03, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x03, 0x02, 0x30, 0x6d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x01, 0x0c, 0x04, 0x61, 0x30, 0x5f, 0xa1, 0x5d, 0xa0, 0x5b, 0x30, 0x59, + 0x30, 0x57, 0x30, 0x55, 0x16, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, + 0x67, 0x69, 0x66, 0x30, 0x21, 0x30, 0x1f, 0x30, 0x07, 0x06, 0x05, 0x2b, + 0x0e, 0x03, 0x02, 0x1a, 0x04, 0x14, 0x8f, 0xe5, 0xd3, 0x1a, 0x86, 0xac, + 0x8d, 0x8e, 0x6b, 0xc3, 0xcf, 0x80, 0x6a, 0xd4, 0x48, 0x18, 0x2c, 0x7b, + 0x19, 0x2e, 0x30, 0x25, 0x16, 0x23, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, + 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x76, 0x73, 0x6c, 0x6f, 0x67, + 0x6f, 0x2e, 0x67, 0x69, 0x66, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x76, + 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x30, + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, + 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x0f, 0x25, 0xae, 0x48, 0xed, 0x1b, + 0x33, 0x85, 0x4c, 0x0c, 0xb5, 0xc2, 0xd7, 0xfe, 0x4d, 0xd6, 0x83, 0x28, + 0x4c, 0x41, 0x65, 0x60, 0x00, 0x0b, 0x77, 0x48, 0x71, 0x82, 0xfe, 0x7f, + 0xdb, 0x5a, 0x0e, 0x20, 0xcc, 0xd2, 0xea, 0x47, 0xbc, 0x64, 0x42, 0x61, + 0x44, 0x34, 0x74, 0x30, 0x81, 0x81, 0x26, 0x8a, 0x4a, 0xf7, 0x44, 0x5d, + 0x7e, 0x34, 0x80, 0xa8, 0xb8, 0x83, 0xe2, 0x09, 0xd7, 0x6d, 0x23, 0xdd, + 0x89, 0xed, 0x28, 0x08, 0xbd, 0x63, 0x5a, 0x11, 0x57, 0x08, 0xc4, 0x9e, + 0xda, 0xe2, 0x68, 0x28, 0xaf, 0xdd, 0x50, 0x3c, 0xec, 0x82, 0x21, 0xd8, + 0x00, 0xc2, 0x55, 0x44, 0x50, 0x70, 0x41, 0xad, 0x83, 0x17, 0x79, 0xba, + 0x08, 0xf3, 0x2b, 0xde, 0xed, 0x34, 0x1d, 0x44, 0x9e, 0xd2, 0x04, 0x93, + 0xf4, 0xcb, 0x05, 0x17, 0x2d, 0x09, 0x2d, 0x2d, 0x63, 0xef, 0xf6, 0x26, + 0x0b, 0x7b, +} + +var certSet2Cert31 = []byte{ + 0x30, 0x82, 0x04, 0xd0, 0x30, 0x82, 0x03, 0xb8, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x01, 0x07, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, 0x83, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x07, 0x41, 0x72, + 0x69, 0x7a, 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, + 0x04, 0x07, 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61, + 0x6c, 0x65, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x11, 0x47, 0x6f, 0x44, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, + 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x31, 0x30, 0x2f, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x28, 0x47, 0x6f, 0x20, 0x44, 0x61, 0x64, 0x64, + 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x1e, 0x17, + 0x0d, 0x31, 0x31, 0x30, 0x35, 0x30, 0x33, 0x30, 0x37, 0x30, 0x30, 0x30, + 0x30, 0x5a, 0x17, 0x0d, 0x33, 0x31, 0x30, 0x35, 0x30, 0x33, 0x30, 0x37, + 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x81, 0xb4, 0x31, 0x0b, 0x30, 0x09, + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, + 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x07, 0x41, 0x72, 0x69, 0x7a, + 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x07, + 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61, 0x6c, 0x65, + 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x11, 0x47, + 0x6f, 0x44, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x2c, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x2d, 0x30, 0x2b, 0x06, 0x03, 0x55, 0x04, + 0x0b, 0x13, 0x24, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x65, + 0x72, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x79, 0x2f, 0x31, 0x33, 0x30, 0x31, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x2a, 0x47, 0x6f, 0x20, 0x44, 0x61, 0x64, 0x64, 0x79, 0x20, 0x53, + 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xb9, 0xe0, 0xcb, 0x10, 0xd4, 0xaf, 0x76, + 0xbd, 0xd4, 0x93, 0x62, 0xeb, 0x30, 0x64, 0xb8, 0x81, 0x08, 0x6c, 0xc3, + 0x04, 0xd9, 0x62, 0x17, 0x8e, 0x2f, 0xff, 0x3e, 0x65, 0xcf, 0x8f, 0xce, + 0x62, 0xe6, 0x3c, 0x52, 0x1c, 0xda, 0x16, 0x45, 0x4b, 0x55, 0xab, 0x78, + 0x6b, 0x63, 0x83, 0x62, 0x90, 0xce, 0x0f, 0x69, 0x6c, 0x99, 0xc8, 0x1a, + 0x14, 0x8b, 0x4c, 0xcc, 0x45, 0x33, 0xea, 0x88, 0xdc, 0x9e, 0xa3, 0xaf, + 0x2b, 0xfe, 0x80, 0x61, 0x9d, 0x79, 0x57, 0xc4, 0xcf, 0x2e, 0xf4, 0x3f, + 0x30, 0x3c, 0x5d, 0x47, 0xfc, 0x9a, 0x16, 0xbc, 0xc3, 0x37, 0x96, 0x41, + 0x51, 0x8e, 0x11, 0x4b, 0x54, 0xf8, 0x28, 0xbe, 0xd0, 0x8c, 0xbe, 0xf0, + 0x30, 0x38, 0x1e, 0xf3, 0xb0, 0x26, 0xf8, 0x66, 0x47, 0x63, 0x6d, 0xde, + 0x71, 0x26, 0x47, 0x8f, 0x38, 0x47, 0x53, 0xd1, 0x46, 0x1d, 0xb4, 0xe3, + 0xdc, 0x00, 0xea, 0x45, 0xac, 0xbd, 0xbc, 0x71, 0xd9, 0xaa, 0x6f, 0x00, + 0xdb, 0xdb, 0xcd, 0x30, 0x3a, 0x79, 0x4f, 0x5f, 0x4c, 0x47, 0xf8, 0x1d, + 0xef, 0x5b, 0xc2, 0xc4, 0x9d, 0x60, 0x3b, 0xb1, 0xb2, 0x43, 0x91, 0xd8, + 0xa4, 0x33, 0x4e, 0xea, 0xb3, 0xd6, 0x27, 0x4f, 0xad, 0x25, 0x8a, 0xa5, + 0xc6, 0xf4, 0xd5, 0xd0, 0xa6, 0xae, 0x74, 0x05, 0x64, 0x57, 0x88, 0xb5, + 0x44, 0x55, 0xd4, 0x2d, 0x2a, 0x3a, 0x3e, 0xf8, 0xb8, 0xbd, 0xe9, 0x32, + 0x0a, 0x02, 0x94, 0x64, 0xc4, 0x16, 0x3a, 0x50, 0xf1, 0x4a, 0xae, 0xe7, + 0x79, 0x33, 0xaf, 0x0c, 0x20, 0x07, 0x7f, 0xe8, 0xdf, 0x04, 0x39, 0xc2, + 0x69, 0x02, 0x6c, 0x63, 0x52, 0xfa, 0x77, 0xc1, 0x1b, 0xc8, 0x74, 0x87, + 0xc8, 0xb9, 0x93, 0x18, 0x50, 0x54, 0x35, 0x4b, 0x69, 0x4e, 0xbc, 0x3b, + 0xd3, 0x49, 0x2e, 0x1f, 0xdc, 0xc1, 0xd2, 0x52, 0xfb, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x82, 0x01, 0x1a, 0x30, 0x82, 0x01, 0x16, 0x30, 0x0f, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, + 0x01, 0x01, 0xff, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, + 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x40, 0xc2, 0xbd, 0x27, 0x8e, 0xcc, + 0x34, 0x83, 0x30, 0xa2, 0x33, 0xd7, 0xfb, 0x6c, 0xb3, 0xf0, 0xb4, 0x2c, + 0x80, 0xce, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, + 0x16, 0x80, 0x14, 0x3a, 0x9a, 0x85, 0x07, 0x10, 0x67, 0x28, 0xb6, 0xef, + 0xf6, 0xbd, 0x05, 0x41, 0x6e, 0x20, 0xc1, 0x94, 0xda, 0x0f, 0xde, 0x30, + 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, + 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x30, 0x35, 0x06, 0x03, 0x55, 0x1d, 0x1f, + 0x04, 0x2e, 0x30, 0x2c, 0x30, 0x2a, 0xa0, 0x28, 0xa0, 0x26, 0x86, 0x24, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x67, + 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, + 0x64, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x67, 0x32, 0x2e, 0x63, 0x72, 0x6c, + 0x30, 0x46, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3f, 0x30, 0x3d, 0x30, + 0x3b, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x33, 0x30, 0x31, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, + 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x73, + 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x08, 0x7e, 0x6c, 0x93, + 0x10, 0xc8, 0x38, 0xb8, 0x96, 0xa9, 0x90, 0x4b, 0xff, 0xa1, 0x5f, 0x4f, + 0x04, 0xef, 0x6c, 0x3e, 0x9c, 0x88, 0x06, 0xc9, 0x50, 0x8f, 0xa6, 0x73, + 0xf7, 0x57, 0x31, 0x1b, 0xbe, 0xbc, 0xe4, 0x2f, 0xdb, 0xf8, 0xba, 0xd3, + 0x5b, 0xe0, 0xb4, 0xe7, 0xe6, 0x79, 0x62, 0x0e, 0x0c, 0xa2, 0xd7, 0x6a, + 0x63, 0x73, 0x31, 0xb5, 0xf5, 0xa8, 0x48, 0xa4, 0x3b, 0x08, 0x2d, 0xa2, + 0x5d, 0x90, 0xd7, 0xb4, 0x7c, 0x25, 0x4f, 0x11, 0x56, 0x30, 0xc4, 0xb6, + 0x44, 0x9d, 0x7b, 0x2c, 0x9d, 0xe5, 0x5e, 0xe6, 0xef, 0x0c, 0x61, 0xaa, + 0xbf, 0xe4, 0x2a, 0x1b, 0xee, 0x84, 0x9e, 0xb8, 0x83, 0x7d, 0xc1, 0x43, + 0xce, 0x44, 0xa7, 0x13, 0x70, 0x0d, 0x91, 0x1f, 0xf4, 0xc8, 0x13, 0xad, + 0x83, 0x60, 0xd9, 0xd8, 0x72, 0xa8, 0x73, 0x24, 0x1e, 0xb5, 0xac, 0x22, + 0x0e, 0xca, 0x17, 0x89, 0x62, 0x58, 0x44, 0x1b, 0xab, 0x89, 0x25, 0x01, + 0x00, 0x0f, 0xcd, 0xc4, 0x1b, 0x62, 0xdb, 0x51, 0xb4, 0xd3, 0x0f, 0x51, + 0x2a, 0x9b, 0xf4, 0xbc, 0x73, 0xfc, 0x76, 0xce, 0x36, 0xa4, 0xcd, 0xd9, + 0xd8, 0x2c, 0xea, 0xae, 0x9b, 0xf5, 0x2a, 0xb2, 0x90, 0xd1, 0x4d, 0x75, + 0x18, 0x8a, 0x3f, 0x8a, 0x41, 0x90, 0x23, 0x7d, 0x5b, 0x4b, 0xfe, 0xa4, + 0x03, 0x58, 0x9b, 0x46, 0xb2, 0xc3, 0x60, 0x60, 0x83, 0xf8, 0x7d, 0x50, + 0x41, 0xce, 0xc2, 0xa1, 0x90, 0xc3, 0xbb, 0xef, 0x02, 0x2f, 0xd2, 0x15, + 0x54, 0xee, 0x44, 0x15, 0xd9, 0x0a, 0xae, 0xa7, 0x8a, 0x33, 0xed, 0xb1, + 0x2d, 0x76, 0x36, 0x26, 0xdc, 0x04, 0xeb, 0x9f, 0xf7, 0x61, 0x1f, 0x15, + 0xdc, 0x87, 0x6f, 0xee, 0x46, 0x96, 0x28, 0xad, 0xa1, 0x26, 0x7d, 0x0a, + 0x09, 0xa7, 0x2e, 0x04, 0xa3, 0x8d, 0xbc, 0xf8, 0xbc, 0x04, 0x30, 0x01, +} + +var certSet2Cert32 = []byte{ + 0x30, 0x82, 0x04, 0xd0, 0x30, 0x82, 0x03, 0xb8, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x0a, 0x48, 0x9e, 0x88, 0x53, 0x7e, 0x8a, 0xa6, 0x45, + 0x4d, 0x6e, 0x2c, 0x4b, 0x2a, 0xeb, 0x20, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xae, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, + 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, 0x06, + 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, + 0x30, 0x38, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, + 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x1b, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, + 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x1e, 0x17, 0x0d, 0x31, + 0x33, 0x30, 0x34, 0x30, 0x39, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, + 0x17, 0x0d, 0x32, 0x33, 0x30, 0x34, 0x30, 0x38, 0x32, 0x33, 0x35, 0x39, + 0x35, 0x39, 0x5a, 0x30, 0x57, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, + 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, + 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, + 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x31, 0x30, 0x2f, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x28, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x20, 0x56, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x53, 0x48, 0x41, 0x32, 0x35, + 0x36, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xf2, 0xc4, 0xbc, 0x74, 0xe8, 0x25, 0xf6, + 0x00, 0x62, 0x28, 0xe3, 0x4c, 0xe8, 0xb8, 0xdf, 0x13, 0x9f, 0x8b, 0x07, + 0x37, 0xef, 0x62, 0x4a, 0xf1, 0x57, 0x09, 0xf6, 0x82, 0xe8, 0x75, 0xf0, + 0x0a, 0xa9, 0x27, 0xcf, 0x93, 0x3b, 0xec, 0x36, 0x89, 0xa5, 0x6e, 0x1d, + 0xd6, 0x54, 0xf3, 0xb8, 0x04, 0x97, 0x72, 0xb4, 0x69, 0x25, 0xcc, 0xd1, + 0x42, 0x0e, 0x5b, 0xd5, 0x1c, 0x7f, 0xa2, 0x60, 0x6e, 0xb1, 0x52, 0x1a, + 0xdb, 0x93, 0x2f, 0xbb, 0x0b, 0x0d, 0x64, 0x53, 0x16, 0xcb, 0x1c, 0x09, + 0x24, 0x95, 0x29, 0x22, 0xb4, 0x8a, 0x18, 0x00, 0x89, 0xfe, 0xf7, 0x1f, + 0x72, 0xc8, 0xe8, 0x5c, 0x2f, 0x1a, 0x1b, 0xa2, 0x18, 0xb8, 0xef, 0x18, + 0x5c, 0xcb, 0xb5, 0xdb, 0x3a, 0x4e, 0xdb, 0x0f, 0xae, 0xdf, 0xc4, 0x79, + 0xe3, 0x1e, 0xaa, 0x5c, 0xa3, 0xa4, 0xe5, 0xac, 0x61, 0x9b, 0x37, 0x85, + 0x8f, 0x48, 0x75, 0x1b, 0xb9, 0xd5, 0x68, 0x96, 0xe9, 0x27, 0x79, 0x70, + 0x57, 0x23, 0x1a, 0xbb, 0x6c, 0x93, 0x90, 0xc7, 0x45, 0xd7, 0x17, 0xd2, + 0x37, 0x2a, 0x76, 0xb3, 0xcd, 0x82, 0xa9, 0x4f, 0xc0, 0x03, 0x7b, 0xe1, + 0x3d, 0x7a, 0x7e, 0x5b, 0xb8, 0x85, 0xf2, 0xf5, 0x15, 0xfb, 0x70, 0xa9, + 0xbd, 0xf5, 0x50, 0x65, 0x16, 0x9d, 0xe3, 0xb6, 0x6b, 0x61, 0x6e, 0xa1, + 0x7a, 0x9e, 0xe8, 0x0d, 0x1c, 0xf7, 0x2a, 0x8e, 0x69, 0x7e, 0x43, 0x30, + 0x8e, 0x78, 0xce, 0xee, 0x65, 0x1e, 0x3b, 0x9b, 0x87, 0x1e, 0x49, 0x1c, + 0xf8, 0x32, 0x46, 0x5d, 0x28, 0x46, 0x79, 0x2a, 0x4e, 0x27, 0x5d, 0x17, + 0x58, 0xa8, 0x37, 0xfe, 0xa8, 0x13, 0xa9, 0x69, 0x15, 0xdf, 0x36, 0x22, + 0x89, 0x75, 0xba, 0xca, 0x01, 0x40, 0x2e, 0xed, 0x9d, 0xd7, 0x0c, 0xaa, + 0x31, 0xce, 0x27, 0xae, 0x57, 0xd5, 0xd2, 0x51, 0xfb, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x82, 0x01, 0x3e, 0x30, 0x82, 0x01, 0x3a, 0x30, 0x12, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, + 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x32, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x26, + 0x30, 0x24, 0x30, 0x22, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x30, 0x01, 0x86, 0x16, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, + 0x63, 0x73, 0x70, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63, + 0x6f, 0x6d, 0x30, 0x3b, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x34, 0x30, + 0x32, 0x30, 0x30, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x28, 0x30, + 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, + 0x1a, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, + 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x63, 0x70, 0x73, 0x30, 0x37, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x30, + 0x30, 0x2e, 0x30, 0x2c, 0xa0, 0x2a, 0xa0, 0x28, 0x86, 0x26, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x74, 0x68, 0x61, + 0x77, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x61, 0x77, + 0x74, 0x65, 0x50, 0x43, 0x41, 0x2d, 0x47, 0x33, 0x2e, 0x63, 0x72, 0x6c, + 0x30, 0x2a, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x23, 0x30, 0x21, 0xa4, + 0x1f, 0x30, 0x1d, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x12, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x50, + 0x4b, 0x49, 0x2d, 0x32, 0x2d, 0x33, 0x37, 0x34, 0x30, 0x1d, 0x06, 0x03, + 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x3b, 0x24, 0xc8, 0x31, 0xa0, + 0xb7, 0x5a, 0xd0, 0x6a, 0xb8, 0xd2, 0xca, 0x07, 0x74, 0xcc, 0x1e, 0x24, + 0xd4, 0xc4, 0xdc, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, + 0x30, 0x16, 0x80, 0x14, 0xad, 0x6c, 0xaa, 0x94, 0x60, 0x9c, 0xed, 0xe4, + 0xff, 0xfa, 0x3e, 0x0a, 0x74, 0x2b, 0x63, 0x03, 0xf7, 0xb6, 0x59, 0xbf, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x68, 0x98, 0x26, 0xaa, + 0xd4, 0x33, 0xc9, 0xba, 0x75, 0x70, 0xd4, 0x9f, 0x49, 0xad, 0xd6, 0xc1, + 0x54, 0xdc, 0xee, 0xaa, 0x56, 0x1f, 0x78, 0xa7, 0xf0, 0xa1, 0xa4, 0xee, + 0x0b, 0xf9, 0x12, 0xaf, 0xdf, 0xa6, 0xb8, 0xee, 0xc3, 0xcb, 0x35, 0x13, + 0x6a, 0x59, 0x2a, 0xf8, 0xc9, 0xe9, 0x4c, 0x2f, 0xbc, 0xb1, 0xbc, 0x2b, + 0xc2, 0x02, 0x30, 0xe1, 0xc3, 0xbe, 0xc2, 0xf0, 0x81, 0x8c, 0x99, 0x77, + 0x89, 0x58, 0x00, 0xa3, 0xcc, 0x7f, 0xa3, 0x02, 0x4c, 0x53, 0xb2, 0x6e, + 0x36, 0x4f, 0xfe, 0xdf, 0x87, 0x76, 0xb3, 0x3f, 0xec, 0x5a, 0x62, 0x50, + 0xb6, 0x00, 0x45, 0x58, 0xf2, 0x87, 0xac, 0x77, 0xe6, 0xd0, 0x20, 0x50, + 0x63, 0xc5, 0xe4, 0xb2, 0x70, 0x15, 0x18, 0x90, 0x05, 0x7b, 0x7b, 0xaf, + 0x2b, 0x46, 0xbe, 0x6b, 0x4e, 0x1f, 0x53, 0xfc, 0x84, 0x27, 0xae, 0x83, + 0xd2, 0x8d, 0x47, 0x53, 0xa7, 0x0e, 0x1f, 0x63, 0xb5, 0xba, 0xdb, 0x16, + 0xd8, 0x6a, 0x09, 0x25, 0x55, 0x7d, 0x8f, 0x3d, 0x4a, 0xc1, 0x83, 0xf9, + 0xb3, 0xb9, 0xa7, 0x04, 0x5a, 0xc8, 0xf3, 0x11, 0x04, 0x91, 0x53, 0x30, + 0xd9, 0x52, 0x87, 0xcb, 0x39, 0x00, 0x9c, 0xec, 0x53, 0xc3, 0x02, 0x09, + 0x7e, 0xa7, 0x36, 0x8e, 0x72, 0x21, 0x2f, 0x23, 0xbb, 0x4c, 0xc6, 0x47, + 0xa5, 0xa1, 0xee, 0x67, 0xc4, 0x2f, 0x5c, 0x3a, 0x47, 0x38, 0x61, 0xe2, + 0xc3, 0x1e, 0x37, 0x92, 0x9e, 0xc8, 0x2f, 0x6b, 0xfa, 0xef, 0xd2, 0xc3, + 0xcd, 0x29, 0x8d, 0x98, 0xf8, 0x52, 0x17, 0xed, 0xb5, 0x53, 0x3c, 0xdf, + 0xaf, 0xc9, 0x1b, 0x62, 0xad, 0xdf, 0x02, 0xee, 0x5d, 0x34, 0xf6, 0x41, + 0x4b, 0xcb, 0xc3, 0x55, 0xaf, 0xb1, 0xcb, 0xda, 0x9c, 0x73, 0xd5, 0x02, + 0xa8, 0x2d, 0xa7, 0xac, 0xfc, 0xe1, 0xe5, 0x07, 0xd0, 0x51, 0xe8, 0x35, +} + +var certSet2Cert33 = []byte{ + 0x30, 0x82, 0x04, 0xd0, 0x30, 0x82, 0x04, 0x39, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x25, 0x0c, 0xe8, 0xe0, 0x30, 0x61, 0x2e, 0x9f, 0x2b, + 0x89, 0xf7, 0x05, 0x4d, 0x7c, 0xf8, 0xfd, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x5f, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, + 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x31, 0x37, 0x30, 0x35, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, + 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x31, 0x31, 0x30, 0x38, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x31, 0x31, 0x31, 0x30, 0x37, + 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x81, 0xca, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65, + 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, 0x56, + 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x3a, 0x30, + 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28, 0x63, 0x29, 0x20, + 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, + 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, + 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, + 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x45, 0x30, + 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56, 0x65, 0x72, 0x69, + 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, + 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d, + 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xaf, 0x24, 0x08, 0x08, 0x29, 0x7a, 0x35, + 0x9e, 0x60, 0x0c, 0xaa, 0xe7, 0x4b, 0x3b, 0x4e, 0xdc, 0x7c, 0xbc, 0x3c, + 0x45, 0x1c, 0xbb, 0x2b, 0xe0, 0xfe, 0x29, 0x02, 0xf9, 0x57, 0x08, 0xa3, + 0x64, 0x85, 0x15, 0x27, 0xf5, 0xf1, 0xad, 0xc8, 0x31, 0x89, 0x5d, 0x22, + 0xe8, 0x2a, 0xaa, 0xa6, 0x42, 0xb3, 0x8f, 0xf8, 0xb9, 0x55, 0xb7, 0xb1, + 0xb7, 0x4b, 0xb3, 0xfe, 0x8f, 0x7e, 0x07, 0x57, 0xec, 0xef, 0x43, 0xdb, + 0x66, 0x62, 0x15, 0x61, 0xcf, 0x60, 0x0d, 0xa4, 0xd8, 0xde, 0xf8, 0xe0, + 0xc3, 0x62, 0x08, 0x3d, 0x54, 0x13, 0xeb, 0x49, 0xca, 0x59, 0x54, 0x85, + 0x26, 0xe5, 0x2b, 0x8f, 0x1b, 0x9f, 0xeb, 0xf5, 0xa1, 0x91, 0xc2, 0x33, + 0x49, 0xd8, 0x43, 0x63, 0x6a, 0x52, 0x4b, 0xd2, 0x8f, 0xe8, 0x70, 0x51, + 0x4d, 0xd1, 0x89, 0x69, 0x7b, 0xc7, 0x70, 0xf6, 0xb3, 0xdc, 0x12, 0x74, + 0xdb, 0x7b, 0x5d, 0x4b, 0x56, 0xd3, 0x96, 0xbf, 0x15, 0x77, 0xa1, 0xb0, + 0xf4, 0xa2, 0x25, 0xf2, 0xaf, 0x1c, 0x92, 0x67, 0x18, 0xe5, 0xf4, 0x06, + 0x04, 0xef, 0x90, 0xb9, 0xe4, 0x00, 0xe4, 0xdd, 0x3a, 0xb5, 0x19, 0xff, + 0x02, 0xba, 0xf4, 0x3c, 0xee, 0xe0, 0x8b, 0xeb, 0x37, 0x8b, 0xec, 0xf4, + 0xd7, 0xac, 0xf2, 0xf6, 0xf0, 0x3d, 0xaf, 0xdd, 0x75, 0x91, 0x33, 0x19, + 0x1d, 0x1c, 0x40, 0xcb, 0x74, 0x24, 0x19, 0x21, 0x93, 0xd9, 0x14, 0xfe, + 0xac, 0x2a, 0x52, 0xc7, 0x8f, 0xd5, 0x04, 0x49, 0xe4, 0x8d, 0x63, 0x47, + 0x88, 0x3c, 0x69, 0x83, 0xcb, 0xfe, 0x47, 0xbd, 0x2b, 0x7e, 0x4f, 0xc5, + 0x95, 0xae, 0x0e, 0x9d, 0xd4, 0xd1, 0x43, 0xc0, 0x67, 0x73, 0xe3, 0x14, + 0x08, 0x7e, 0xe5, 0x3f, 0x9f, 0x73, 0xb8, 0x33, 0x0a, 0xcf, 0x5d, 0x3f, + 0x34, 0x87, 0x96, 0x8a, 0xee, 0x53, 0xe8, 0x25, 0x15, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x82, 0x01, 0x9b, 0x30, 0x82, 0x01, 0x97, 0x30, 0x0f, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, + 0x01, 0x01, 0xff, 0x30, 0x31, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2a, + 0x30, 0x28, 0x30, 0x26, 0xa0, 0x24, 0xa0, 0x22, 0x86, 0x20, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x76, 0x65, 0x72, + 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63, + 0x61, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x3d, + 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06, + 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x2a, 0x30, 0x28, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, 0x74, + 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, 0x72, + 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, + 0x73, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0x7f, 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09, 0xf3, + 0x43, 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, 0x33, 0x30, 0x6d, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x0c, 0x04, 0x61, 0x30, 0x5f, + 0xa1, 0x5d, 0xa0, 0x5b, 0x30, 0x59, 0x30, 0x57, 0x30, 0x55, 0x16, 0x09, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0x30, 0x21, 0x30, + 0x1f, 0x30, 0x07, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x04, 0x14, + 0x8f, 0xe5, 0xd3, 0x1a, 0x86, 0xac, 0x8d, 0x8e, 0x6b, 0xc3, 0xcf, 0x80, + 0x6a, 0xd4, 0x48, 0x18, 0x2c, 0x7b, 0x19, 0x2e, 0x30, 0x25, 0x16, 0x23, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, + 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x76, 0x73, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x67, 0x69, 0x66, 0x30, + 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, + 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, + 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x3e, 0x06, 0x03, 0x55, 0x1d, 0x25, + 0x04, 0x37, 0x30, 0x35, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x03, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x03, 0x06, 0x09, + 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x42, 0x04, 0x01, 0x06, 0x0a, 0x60, + 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x08, 0x01, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, + 0x03, 0x81, 0x81, 0x00, 0x13, 0x02, 0xdd, 0xf8, 0xe8, 0x86, 0x00, 0xf2, + 0x5a, 0xf8, 0xf8, 0x20, 0x0c, 0x59, 0x88, 0x62, 0x07, 0xce, 0xce, 0xf7, + 0x4e, 0xf9, 0xbb, 0x59, 0xa1, 0x98, 0xe5, 0xe1, 0x38, 0xdd, 0x4e, 0xbc, + 0x66, 0x18, 0xd3, 0xad, 0xeb, 0x18, 0xf2, 0x0d, 0xc9, 0x6d, 0x3e, 0x4a, + 0x94, 0x20, 0xc3, 0x3c, 0xba, 0xbd, 0x65, 0x54, 0xc6, 0xaf, 0x44, 0xb3, + 0x10, 0xad, 0x2c, 0x6b, 0x3e, 0xab, 0xd7, 0x07, 0xb6, 0xb8, 0x81, 0x63, + 0xc5, 0xf9, 0x5e, 0x2e, 0xe5, 0x2a, 0x67, 0xce, 0xcd, 0x33, 0x0c, 0x2a, + 0xd7, 0x89, 0x56, 0x03, 0x23, 0x1f, 0xb3, 0xbe, 0xe8, 0x3a, 0x08, 0x59, + 0xb4, 0xec, 0x45, 0x35, 0xf7, 0x8a, 0x5b, 0xff, 0x66, 0xcf, 0x50, 0xaf, + 0xc6, 0x6d, 0x57, 0x8d, 0x19, 0x78, 0xb7, 0xb9, 0xa2, 0xd1, 0x57, 0xea, + 0x1f, 0x9a, 0x4b, 0xaf, 0xba, 0xc9, 0x8e, 0x12, 0x7e, 0xc6, 0xbd, 0xff, +} + +var certSet2Cert34 = []byte{ + 0x30, 0x82, 0x04, 0xd2, 0x30, 0x82, 0x03, 0xba, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x2c, 0x69, 0xe1, 0x2f, 0x6a, 0x67, 0x0b, 0xd9, 0x9d, + 0xd2, 0x0f, 0x91, 0x9e, 0xf0, 0x9e, 0x51, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xa9, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, + 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, 0x06, + 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, + 0x30, 0x36, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, + 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x16, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, + 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x30, 0x36, 0x31, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, + 0x36, 0x30, 0x39, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x63, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x14, 0x44, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x20, 0x53, 0x53, 0x4c, 0x31, 0x1e, 0x30, 0x1c, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x15, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, + 0x20, 0x44, 0x56, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, + 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, + 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, + 0xea, 0x94, 0x07, 0x85, 0xc8, 0x41, 0x2c, 0xf6, 0x83, 0x12, 0x6c, 0x92, + 0x5f, 0xab, 0x1f, 0x00, 0xd4, 0x96, 0x6f, 0x74, 0xcd, 0x2e, 0x11, 0xe9, + 0x6c, 0x0f, 0x39, 0x01, 0xb9, 0x48, 0x90, 0x40, 0x39, 0x4d, 0xc4, 0xa2, + 0xc8, 0x79, 0x6a, 0xa5, 0x9a, 0xbd, 0x91, 0x44, 0x65, 0x77, 0x54, 0xad, + 0xff, 0x25, 0x5f, 0xee, 0x42, 0xfb, 0xb3, 0x02, 0x0f, 0xea, 0x5d, 0x7a, + 0xdd, 0x1a, 0x54, 0x9e, 0xd7, 0x73, 0x42, 0x9b, 0xcc, 0x79, 0x5f, 0xc5, + 0x4d, 0xf4, 0xb7, 0x0b, 0x18, 0x39, 0x20, 0x7a, 0xdd, 0x50, 0x01, 0x5d, + 0x34, 0x45, 0x5f, 0x4c, 0x11, 0x0e, 0xf5, 0x87, 0x26, 0x26, 0xb4, 0xb0, + 0xf3, 0x7e, 0x71, 0xa0, 0x31, 0x71, 0x50, 0x89, 0x68, 0x5a, 0x63, 0x8a, + 0x14, 0x62, 0xe5, 0x8c, 0x3a, 0x16, 0x55, 0x0d, 0x3e, 0xeb, 0xaa, 0x80, + 0x1d, 0x71, 0x7a, 0xe3, 0x87, 0x07, 0xab, 0xbd, 0xa2, 0x74, 0xcd, 0xda, + 0x08, 0x01, 0x9d, 0x1b, 0xcc, 0x27, 0x88, 0x8c, 0x47, 0xd4, 0x69, 0x25, + 0x42, 0xd6, 0xbb, 0x50, 0x6d, 0x85, 0x50, 0xd0, 0x48, 0x82, 0x0d, 0x08, + 0x9f, 0xe9, 0x23, 0xe3, 0x42, 0xc6, 0x3c, 0x98, 0xb8, 0xbb, 0x6e, 0xc5, + 0x70, 0x13, 0xdf, 0x19, 0x1d, 0x01, 0xfd, 0xd2, 0xb5, 0x4e, 0xe6, 0x62, + 0xf4, 0x07, 0xfa, 0x6b, 0x7d, 0x11, 0x77, 0xc4, 0x62, 0x4f, 0x40, 0x4e, + 0xa5, 0x78, 0x97, 0xab, 0x2c, 0x4d, 0x0c, 0xa7, 0x7c, 0xc3, 0xc4, 0x50, + 0x32, 0x9f, 0xd0, 0x70, 0x9b, 0x0f, 0xff, 0xff, 0x75, 0x59, 0x34, 0x85, + 0xad, 0x49, 0xd5, 0x35, 0xee, 0x4f, 0x5b, 0xd4, 0xd4, 0x36, 0x95, 0xa0, + 0x7e, 0xe8, 0xc5, 0xa1, 0x1c, 0xbd, 0x13, 0x4e, 0x7d, 0xee, 0x63, 0x6a, + 0x96, 0x19, 0x99, 0xc8, 0xa7, 0x2a, 0x00, 0xe6, 0x51, 0x8d, 0x46, 0xeb, + 0x30, 0x58, 0xe8, 0x2d, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, + 0x39, 0x30, 0x82, 0x01, 0x35, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, + 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, + 0x00, 0x30, 0x41, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3a, 0x30, 0x38, + 0x30, 0x36, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, + 0x07, 0x36, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, + 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x0e, 0x06, 0x03, + 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, + 0x30, 0x2e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, + 0x04, 0x22, 0x30, 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x30, 0x01, 0x86, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x74, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x64, 0x2e, 0x63, 0x6f, 0x6d, + 0x30, 0x31, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2a, 0x30, 0x28, 0x30, + 0x26, 0xa0, 0x24, 0xa0, 0x22, 0x86, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x74, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x50, 0x43, 0x41, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x29, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x22, + 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, + 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d, 0x36, 0x39, 0x38, 0x30, 0x1d, + 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x9f, 0xb8, 0xc1, + 0xa9, 0x6c, 0xf2, 0xf5, 0xc0, 0x22, 0x2a, 0x94, 0xed, 0x5c, 0x99, 0xac, + 0xd4, 0xec, 0xd7, 0xc6, 0x07, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, + 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x7b, 0x5b, 0x45, 0xcf, 0xaf, 0xce, + 0xcb, 0x7a, 0xfd, 0x31, 0x92, 0x1a, 0x6a, 0xb6, 0xf3, 0x46, 0xeb, 0x57, + 0x48, 0x50, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x53, 0x54, + 0xf2, 0x47, 0xa8, 0x02, 0xd7, 0xef, 0xaa, 0x35, 0x78, 0xbe, 0x4a, 0x08, + 0x0d, 0x90, 0x18, 0x4b, 0x6d, 0x9e, 0x2a, 0x53, 0x2b, 0xe9, 0x54, 0x17, + 0x77, 0x74, 0x29, 0x7e, 0xd0, 0x37, 0x07, 0x05, 0xb8, 0xe4, 0xfa, 0xb8, + 0xb4, 0x63, 0x98, 0x44, 0xdc, 0xc6, 0x4f, 0x81, 0x06, 0x8c, 0x3a, 0xbe, + 0xc7, 0x30, 0x57, 0xc6, 0x70, 0xfc, 0xd6, 0x93, 0x19, 0x9f, 0xc3, 0x55, + 0xd7, 0x3e, 0x1f, 0x72, 0x8a, 0x9d, 0x30, 0x5a, 0x35, 0x97, 0x32, 0xcb, + 0x63, 0xe4, 0xc6, 0x72, 0xdf, 0xfb, 0x68, 0xca, 0x69, 0x2f, 0xdb, 0xcd, + 0x50, 0x38, 0x3e, 0x2b, 0xbb, 0xab, 0x3b, 0x82, 0xc7, 0xfd, 0x4b, 0x9b, + 0xbd, 0x7c, 0x41, 0x98, 0xef, 0x01, 0x53, 0xd8, 0x35, 0x8f, 0x25, 0xc9, + 0x03, 0x06, 0xe6, 0x9c, 0x57, 0xc1, 0x51, 0x0f, 0x9e, 0xf6, 0x7d, 0x93, + 0x4d, 0xf8, 0x76, 0xc8, 0x3a, 0x6b, 0xf4, 0xc4, 0x8f, 0x33, 0x32, 0x7f, + 0x9d, 0x21, 0x84, 0x34, 0xd9, 0xa7, 0xf9, 0x92, 0xfa, 0x41, 0x91, 0x61, + 0x84, 0x05, 0x9d, 0xa3, 0x79, 0x46, 0xce, 0x67, 0xe7, 0x81, 0xf2, 0x5e, + 0xac, 0x4c, 0xbc, 0xa8, 0xab, 0x6a, 0x6d, 0x15, 0xe2, 0x9c, 0x4e, 0x5a, + 0xd9, 0x63, 0x80, 0xbc, 0xf7, 0x42, 0xeb, 0x9a, 0x44, 0xc6, 0x8c, 0x6b, + 0x06, 0x36, 0xb4, 0x8b, 0x32, 0x89, 0xde, 0xc2, 0xf1, 0xa8, 0x26, 0xaa, + 0xa9, 0xac, 0xff, 0xea, 0x71, 0xa6, 0xe7, 0x8c, 0x41, 0xfa, 0x17, 0x35, + 0xbb, 0xb3, 0x87, 0x31, 0xa9, 0x93, 0xc2, 0xc8, 0x58, 0xe1, 0x0a, 0x4e, + 0x95, 0x83, 0x9c, 0xb9, 0xed, 0x3b, 0xa5, 0xef, 0x08, 0xe0, 0x74, 0xf9, + 0xc3, 0x1b, 0xe6, 0x07, 0xa3, 0xee, 0x07, 0xd7, 0x42, 0x22, 0x79, 0x21, + 0xa0, 0xa1, 0xd4, 0x1d, 0x26, 0xd3, 0xd0, 0xd6, 0xa6, 0x5d, 0x2b, 0x41, + 0xc0, 0x79, +} + +var certSet2Cert35 = []byte{ + 0x30, 0x82, 0x04, 0xe4, 0x30, 0x82, 0x03, 0xcc, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x4f, 0xe3, 0xe2, 0x65, 0x21, 0x07, 0xab, 0x20, 0x37, + 0x41, 0x6e, 0x48, 0x70, 0xce, 0xd2, 0xc2, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x6f, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x53, + 0x45, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0b, + 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x41, 0x42, 0x31, + 0x26, 0x30, 0x24, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1d, 0x41, 0x64, + 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x45, 0x78, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x20, 0x54, 0x54, 0x50, 0x20, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x19, 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x45, + 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x43, 0x41, 0x20, 0x52, + 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x35, 0x32, + 0x35, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x30, + 0x30, 0x35, 0x33, 0x30, 0x31, 0x30, 0x34, 0x38, 0x33, 0x38, 0x5a, 0x30, + 0x6b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x2d, 0x30, 0x2b, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x24, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x20, 0x53, 0x65, 0x63, + 0x75, 0x72, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x31, 0x2d, 0x30, 0x2b, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x24, + 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x20, 0x53, 0x65, 0x63, 0x75, + 0x72, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, + 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0x80, 0x0b, 0x42, + 0xc6, 0x06, 0x6c, 0xcf, 0x22, 0xb3, 0x1a, 0x9e, 0x11, 0x2e, 0x42, 0x6e, + 0x39, 0xbf, 0xe8, 0x12, 0xaf, 0x3c, 0x42, 0x21, 0x12, 0x95, 0x40, 0x5d, + 0x32, 0xb1, 0x6d, 0x1c, 0x21, 0xd1, 0x34, 0xe5, 0x4f, 0xa8, 0xd1, 0x43, + 0xa2, 0x26, 0x4e, 0x30, 0x7d, 0x73, 0x44, 0x2c, 0x73, 0xaa, 0xc5, 0x4d, + 0x66, 0x01, 0x19, 0xd2, 0xea, 0x50, 0x59, 0x65, 0xd0, 0x68, 0x9d, 0x05, + 0xa0, 0x7c, 0xa1, 0x79, 0x53, 0xd0, 0x21, 0x90, 0x59, 0x0e, 0x37, 0xdb, + 0x1e, 0xdc, 0x92, 0xa7, 0x8b, 0x0d, 0xc4, 0xf5, 0xf8, 0xe6, 0xff, 0xb5, + 0x35, 0x1a, 0xda, 0xa8, 0xb6, 0x9b, 0x20, 0x85, 0x65, 0xc4, 0xa2, 0x4d, + 0xdf, 0xf3, 0x94, 0x4d, 0x63, 0x7e, 0xee, 0x89, 0x07, 0xaf, 0xfe, 0xe1, + 0xba, 0x00, 0x15, 0x2d, 0xc6, 0x77, 0x8e, 0xa3, 0xfe, 0xad, 0xcf, 0x26, + 0x54, 0x5a, 0xdf, 0xfc, 0xd2, 0xde, 0xc2, 0xad, 0xf6, 0xb2, 0x23, 0xfd, + 0xa8, 0x83, 0xe5, 0x65, 0xbd, 0x27, 0xf7, 0x27, 0x1a, 0x18, 0x59, 0x6a, + 0x9e, 0x14, 0xf6, 0xb4, 0x86, 0xff, 0x1c, 0x58, 0x14, 0x43, 0x73, 0x96, + 0x24, 0xbf, 0x10, 0x43, 0xd5, 0x5c, 0x89, 0xf0, 0xce, 0xf7, 0xe1, 0x96, + 0x16, 0x5e, 0x18, 0x4a, 0x27, 0x28, 0x90, 0x80, 0x18, 0xfc, 0x32, 0xfe, + 0xf4, 0xc7, 0xb8, 0xd6, 0x82, 0x3d, 0x35, 0xaf, 0xbb, 0x4a, 0x1c, 0x5b, + 0x05, 0x78, 0xf6, 0xfd, 0x55, 0x3e, 0x82, 0x74, 0xb2, 0x73, 0xb8, 0x89, + 0x4e, 0xf7, 0x1b, 0x85, 0x9a, 0xd8, 0xca, 0xb1, 0x5a, 0xb1, 0x00, 0x20, + 0x41, 0x14, 0x30, 0x2b, 0x14, 0x24, 0xed, 0x37, 0x0e, 0x32, 0x3e, 0x23, + 0x88, 0x39, 0x7e, 0xb9, 0xd9, 0x38, 0x03, 0xe2, 0x4c, 0xd9, 0x0d, 0x43, + 0x41, 0x33, 0x10, 0xeb, 0x30, 0x72, 0x53, 0x88, 0xf7, 0x52, 0x9b, 0x4f, + 0x81, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x7e, 0x30, 0x82, + 0x01, 0x7a, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, + 0x16, 0x80, 0x14, 0xad, 0xbd, 0x98, 0x7a, 0x34, 0xb4, 0x26, 0xf7, 0xfa, + 0xc4, 0x26, 0x54, 0xef, 0x03, 0xbd, 0xe0, 0x24, 0xcb, 0x54, 0x1a, 0x30, + 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xcc, 0x03, + 0x5b, 0x96, 0x5a, 0x9e, 0x16, 0xcc, 0x26, 0x1e, 0xbd, 0xa3, 0x70, 0xfb, + 0xe3, 0xcb, 0x79, 0x19, 0xfc, 0x4d, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x12, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, + 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x18, 0x06, 0x03, 0x55, 0x1d, + 0x20, 0x04, 0x11, 0x30, 0x0f, 0x30, 0x0d, 0x06, 0x0b, 0x2b, 0x06, 0x01, + 0x04, 0x01, 0xb2, 0x31, 0x01, 0x02, 0x02, 0x08, 0x30, 0x44, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x3d, 0x30, 0x3b, 0x30, 0x39, 0xa0, 0x37, 0xa0, + 0x35, 0x86, 0x33, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, + 0x6c, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, + 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x41, 0x52, 0x6f, + 0x6f, 0x74, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x81, 0xb3, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x81, 0xa6, 0x30, 0x81, + 0xa3, 0x30, 0x3f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, + 0x02, 0x86, 0x33, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, + 0x74, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, + 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x41, 0x52, 0x6f, + 0x6f, 0x74, 0x2e, 0x70, 0x37, 0x63, 0x30, 0x39, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x2d, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x74, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x64, 0x64, + 0x54, 0x72, 0x75, 0x73, 0x74, 0x55, 0x54, 0x4e, 0x53, 0x47, 0x43, 0x43, + 0x41, 0x2e, 0x63, 0x72, 0x74, 0x30, 0x25, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x19, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x01, 0x00, 0x7b, 0xf0, 0xfc, 0xa1, 0x28, 0x47, 0xbc, 0x2b, + 0xb4, 0x04, 0x73, 0x3f, 0x4b, 0xdd, 0x1e, 0xd1, 0xb9, 0xcd, 0x1c, 0xed, + 0x7d, 0xe5, 0xe8, 0xcb, 0x51, 0xf4, 0x92, 0xbf, 0xdd, 0x9c, 0x0d, 0x5c, + 0x6e, 0x1d, 0x95, 0xed, 0x5b, 0x70, 0x50, 0x89, 0xd4, 0x67, 0x9a, 0x15, + 0x54, 0xd1, 0x90, 0x0a, 0xfa, 0x09, 0x68, 0x06, 0x18, 0xbb, 0xd7, 0x27, + 0xe4, 0x93, 0xff, 0x43, 0x48, 0x81, 0x3b, 0xc8, 0x59, 0x49, 0x35, 0xea, + 0xac, 0xb6, 0xae, 0x46, 0xb5, 0xd4, 0xf3, 0xb8, 0xc3, 0xc6, 0xe4, 0x91, + 0xbf, 0xc9, 0x34, 0xfd, 0x7e, 0xd0, 0x59, 0x6e, 0x61, 0xa1, 0x1f, 0x48, + 0x63, 0x54, 0xb2, 0x7d, 0x46, 0xbf, 0xc8, 0xfa, 0xc3, 0xbf, 0x48, 0x58, + 0x98, 0xf6, 0x69, 0x84, 0xa7, 0x16, 0x69, 0x08, 0x27, 0xa4, 0x22, 0xcb, + 0xa2, 0x2c, 0xc8, 0xdf, 0x6e, 0xa9, 0xee, 0xf8, 0x41, 0xdf, 0x1b, 0xa8, + 0xb7, 0xf3, 0xe3, 0xae, 0xce, 0xa3, 0xfe, 0xd9, 0x27, 0x60, 0x50, 0x3f, + 0x04, 0x7d, 0x7a, 0x44, 0xea, 0x76, 0x42, 0x5c, 0xd3, 0x55, 0x46, 0xef, + 0x27, 0xc5, 0x6a, 0x4a, 0x80, 0xe7, 0x35, 0xa0, 0x91, 0xc6, 0x1b, 0xa6, + 0x86, 0x9c, 0x5a, 0x3b, 0x04, 0x83, 0x54, 0x34, 0xd7, 0xd1, 0x88, 0xa6, + 0x36, 0xe9, 0x7f, 0x40, 0x27, 0xda, 0x56, 0x0a, 0x50, 0x21, 0x9d, 0x29, + 0x8b, 0xa0, 0x84, 0xec, 0xfe, 0x71, 0x23, 0x53, 0x04, 0x18, 0x19, 0x70, + 0x67, 0x86, 0x44, 0x95, 0x72, 0x40, 0x55, 0xf6, 0xdd, 0xa3, 0xb4, 0x3d, + 0x2d, 0x09, 0x60, 0xa5, 0xe7, 0x5f, 0xfc, 0xac, 0x3b, 0xec, 0x0c, 0x91, + 0x9f, 0xf8, 0xee, 0x6a, 0xba, 0xb2, 0x3c, 0xfd, 0x95, 0x7d, 0x9a, 0x07, + 0xf4, 0xb0, 0x65, 0x43, 0xa2, 0xf6, 0xdf, 0x7d, 0xb8, 0x21, 0x49, 0x84, + 0x04, 0xee, 0xbd, 0xce, 0x53, 0x8f, 0x0f, 0x29, +} + +var certSet2Cert36 = []byte{ + 0x30, 0x82, 0x04, 0xf2, 0x30, 0x82, 0x03, 0xda, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x04, 0x38, 0x63, 0xe9, 0xfc, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81, + 0xb4, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0b, + 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x31, + 0x40, 0x30, 0x3e, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x14, 0x37, 0x77, 0x77, + 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, + 0x74, 0x2f, 0x43, 0x50, 0x53, 0x5f, 0x32, 0x30, 0x34, 0x38, 0x20, 0x69, + 0x6e, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x20, 0x62, 0x79, 0x20, 0x72, 0x65, + 0x66, 0x2e, 0x20, 0x28, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x20, 0x6c, + 0x69, 0x61, 0x62, 0x2e, 0x29, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, + 0x04, 0x0b, 0x13, 0x1c, 0x28, 0x63, 0x29, 0x20, 0x31, 0x39, 0x39, 0x39, + 0x20, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, + 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x31, 0x33, 0x30, 0x31, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2a, 0x45, 0x6e, 0x74, 0x72, 0x75, + 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x28, 0x32, 0x30, 0x34, 0x38, + 0x29, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x39, 0x31, 0x32, 0x31, 0x30, 0x32, + 0x30, 0x34, 0x33, 0x35, 0x34, 0x5a, 0x17, 0x0d, 0x31, 0x39, 0x31, 0x32, + 0x31, 0x30, 0x32, 0x31, 0x31, 0x33, 0x35, 0x34, 0x5a, 0x30, 0x81, 0xb1, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, + 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x30, + 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x70, 0x61, 0x20, 0x69, 0x73, 0x20, 0x69, + 0x6e, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, + 0x62, 0x79, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, 0x28, + 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x39, 0x20, 0x45, 0x6e, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x2e, 0x30, + 0x2c, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x25, 0x45, 0x6e, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x4c, 0x31, 0x43, 0x30, 0x82, 0x01, + 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, + 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0x97, 0xa3, 0x2d, 0x3c, 0x9e, 0xde, + 0x05, 0xda, 0x13, 0xc2, 0x11, 0x8d, 0x9d, 0x8e, 0xe3, 0x7f, 0xc7, 0x4b, + 0x7e, 0x5a, 0x9f, 0xb3, 0xff, 0x62, 0xab, 0x73, 0xc8, 0x28, 0x6b, 0xba, + 0x10, 0x64, 0x82, 0x87, 0x13, 0xcd, 0x57, 0x18, 0xff, 0x28, 0xce, 0xc0, + 0xe6, 0x0e, 0x06, 0x91, 0x50, 0x29, 0x83, 0xd1, 0xf2, 0xc3, 0x2a, 0xdb, + 0xd8, 0xdb, 0x4e, 0x04, 0xcc, 0x00, 0xeb, 0x8b, 0xb6, 0x96, 0xdc, 0xbc, + 0xaa, 0xfa, 0x52, 0x77, 0x04, 0xc1, 0xdb, 0x19, 0xe4, 0xae, 0x9c, 0xfd, + 0x3c, 0x8b, 0x03, 0xef, 0x4d, 0xbc, 0x1a, 0x03, 0x65, 0xf9, 0xc1, 0xb1, + 0x3f, 0x72, 0x86, 0xf2, 0x38, 0xaa, 0x19, 0xae, 0x10, 0x88, 0x78, 0x28, + 0xda, 0x75, 0xc3, 0x3d, 0x02, 0x82, 0x02, 0x9c, 0xb9, 0xc1, 0x65, 0x77, + 0x76, 0x24, 0x4c, 0x98, 0xf7, 0x6d, 0x31, 0x38, 0xfb, 0xdb, 0xfe, 0xdb, + 0x37, 0x02, 0x76, 0xa1, 0x18, 0x97, 0xa6, 0xcc, 0xde, 0x20, 0x09, 0x49, + 0x36, 0x24, 0x69, 0x42, 0xf6, 0xe4, 0x37, 0x62, 0xf1, 0x59, 0x6d, 0xa9, + 0x3c, 0xed, 0x34, 0x9c, 0xa3, 0x8e, 0xdb, 0xdc, 0x3a, 0xd7, 0xf7, 0x0a, + 0x6f, 0xef, 0x2e, 0xd8, 0xd5, 0x93, 0x5a, 0x7a, 0xed, 0x08, 0x49, 0x68, + 0xe2, 0x41, 0xe3, 0x5a, 0x90, 0xc1, 0x86, 0x55, 0xfc, 0x51, 0x43, 0x9d, + 0xe0, 0xb2, 0xc4, 0x67, 0xb4, 0xcb, 0x32, 0x31, 0x25, 0xf0, 0x54, 0x9f, + 0x4b, 0xd1, 0x6f, 0xdb, 0xd4, 0xdd, 0xfc, 0xaf, 0x5e, 0x6c, 0x78, 0x90, + 0x95, 0xde, 0xca, 0x3a, 0x48, 0xb9, 0x79, 0x3c, 0x9b, 0x19, 0xd6, 0x75, + 0x05, 0xa0, 0xf9, 0x88, 0xd7, 0xc1, 0xe8, 0xa5, 0x09, 0xe4, 0x1a, 0x15, + 0xdc, 0x87, 0x23, 0xaa, 0xb2, 0x75, 0x8c, 0x63, 0x25, 0x87, 0xd8, 0xf8, + 0x3d, 0xa6, 0xc2, 0xcc, 0x66, 0xff, 0xa5, 0x66, 0x68, 0x55, 0x02, 0x03, + 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x0b, 0x30, 0x82, 0x01, 0x07, 0x30, + 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, + 0x02, 0x01, 0x06, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, + 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x33, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x27, 0x30, 0x25, + 0x30, 0x23, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, + 0x86, 0x17, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, + 0x70, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, + 0x74, 0x30, 0x32, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2b, 0x30, 0x29, + 0x30, 0x27, 0xa0, 0x25, 0xa0, 0x23, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, + 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x32, 0x30, 0x34, 0x38, 0x63, + 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3b, 0x06, 0x03, 0x55, 0x1d, 0x20, + 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, + 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, + 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, + 0x65, 0x74, 0x2f, 0x72, 0x70, 0x61, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, + 0x0e, 0x04, 0x16, 0x04, 0x14, 0x1e, 0xf1, 0xab, 0x89, 0x06, 0xf8, 0x49, + 0x0f, 0x01, 0x33, 0x77, 0xee, 0x14, 0x7a, 0xee, 0x19, 0x7c, 0x93, 0x28, + 0x4d, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, + 0x80, 0x14, 0x55, 0xe4, 0x81, 0xd1, 0x11, 0x80, 0xbe, 0xd8, 0x89, 0xb9, + 0x08, 0xa3, 0x31, 0xf9, 0xa1, 0x24, 0x09, 0x16, 0xb9, 0x70, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x07, 0xf6, 0x5f, 0x82, 0x84, 0x7f, + 0x80, 0x40, 0xc7, 0x90, 0x34, 0x46, 0x42, 0x24, 0x03, 0xce, 0x2f, 0xab, + 0xba, 0x83, 0x9e, 0x25, 0x73, 0x0d, 0xed, 0xac, 0x05, 0x69, 0xc6, 0x87, + 0xed, 0xa3, 0x5c, 0xf2, 0x57, 0xc1, 0xb1, 0x49, 0x76, 0x9a, 0x4d, 0xf2, + 0x3f, 0xdd, 0xe4, 0x0e, 0xfe, 0x0b, 0x3e, 0xb9, 0x98, 0xd9, 0x32, 0x95, + 0x1d, 0x32, 0xf4, 0x01, 0xee, 0x9c, 0xc8, 0xc8, 0xe5, 0x3f, 0xe0, 0x53, + 0x76, 0x62, 0xfc, 0xdd, 0xab, 0x6d, 0x3d, 0x94, 0x90, 0xf2, 0xc0, 0xb3, + 0x3c, 0x98, 0x27, 0x36, 0x5e, 0x28, 0x97, 0x22, 0xfc, 0x1b, 0x40, 0xd3, + 0x2b, 0x0d, 0xad, 0xb5, 0x57, 0x6d, 0xdf, 0x0f, 0xe3, 0x4b, 0xef, 0x73, + 0x02, 0x10, 0x65, 0xfa, 0x1b, 0xd0, 0xac, 0x31, 0xd5, 0xe3, 0x0f, 0xe8, + 0xba, 0x32, 0x30, 0x83, 0xee, 0x4a, 0xd0, 0xbf, 0xdf, 0x22, 0x90, 0x7a, + 0xbe, 0xec, 0x3a, 0x1b, 0xc4, 0x49, 0x04, 0x1d, 0xf1, 0xae, 0x80, 0x77, + 0x3c, 0x42, 0x08, 0xdb, 0xa7, 0x3b, 0x28, 0xa6, 0x80, 0x01, 0x03, 0xe6, + 0x39, 0xa3, 0xeb, 0xdf, 0x80, 0x59, 0x1b, 0xf3, 0x2c, 0xbe, 0xdc, 0x72, + 0x44, 0x79, 0xa0, 0x6c, 0x07, 0xa5, 0x6d, 0x4d, 0x44, 0x8e, 0x42, 0x68, + 0xca, 0x94, 0x7c, 0x2e, 0x36, 0xba, 0x85, 0x9e, 0xcd, 0xaa, 0xc4, 0x5e, + 0x3c, 0x54, 0xbe, 0xfe, 0x2f, 0xea, 0x69, 0x9d, 0x1c, 0x1e, 0x29, 0x9b, + 0x96, 0xd8, 0xc8, 0xfe, 0x51, 0x90, 0xf1, 0x24, 0xa6, 0x90, 0x06, 0xb3, + 0xf0, 0x29, 0xa2, 0xff, 0x78, 0x2e, 0x77, 0x5c, 0x45, 0x21, 0xd9, 0x44, + 0x00, 0x31, 0xf3, 0xbe, 0x32, 0x4f, 0xf5, 0x0a, 0x32, 0x0d, 0xfc, 0xfc, + 0xba, 0x16, 0x76, 0x56, 0xb2, 0xd6, 0x48, 0x92, 0xf2, 0x8b, 0xa6, 0x3e, + 0xb7, 0xac, 0x5c, 0x69, 0xea, 0x0b, 0x3f, 0x66, 0x45, 0xb9, +} + +var certSet2Cert37 = []byte{ + 0x30, 0x82, 0x04, 0xfc, 0x30, 0x82, 0x03, 0xe4, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x16, 0x90, 0xc3, 0x29, 0xb6, 0x78, 0x06, 0x07, 0x51, + 0x1f, 0x05, 0xb0, 0x34, 0x48, 0x46, 0xcb, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x6f, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x53, + 0x45, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0b, + 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x41, 0x42, 0x31, + 0x26, 0x30, 0x24, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1d, 0x41, 0x64, + 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x45, 0x78, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x20, 0x54, 0x54, 0x50, 0x20, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x19, 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x45, + 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x43, 0x41, 0x20, 0x52, + 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x34, 0x31, + 0x36, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x30, + 0x30, 0x35, 0x33, 0x30, 0x31, 0x30, 0x34, 0x38, 0x33, 0x38, 0x5a, 0x30, + 0x81, 0x89, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x47, 0x42, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x08, + 0x13, 0x12, 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x4d, 0x61, + 0x6e, 0x63, 0x68, 0x65, 0x73, 0x74, 0x65, 0x72, 0x31, 0x10, 0x30, 0x0e, + 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x53, 0x61, 0x6c, 0x66, 0x6f, + 0x72, 0x64, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x11, 0x43, 0x4f, 0x4d, 0x4f, 0x44, 0x4f, 0x20, 0x43, 0x41, 0x20, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x26, 0x43, 0x4f, 0x4d, 0x4f, 0x44, 0x4f, 0x20, + 0x48, 0x69, 0x67, 0x68, 0x2d, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, + 0x63, 0x65, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, + 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, + 0x82, 0x01, 0x01, 0x00, 0xe7, 0x87, 0xda, 0xc0, 0x77, 0xe4, 0xbb, 0x3a, + 0xfa, 0x6a, 0x24, 0xc8, 0x80, 0x41, 0xac, 0xd2, 0x16, 0x13, 0x15, 0x3d, + 0xfa, 0xf7, 0xf8, 0x2a, 0x76, 0xdc, 0xa8, 0x2d, 0x39, 0x08, 0xce, 0x48, + 0x4a, 0xbe, 0x0f, 0x7d, 0xf0, 0xde, 0xba, 0xbb, 0x47, 0xd5, 0xbd, 0x2d, + 0xd7, 0x1b, 0xab, 0x0f, 0x20, 0x81, 0x23, 0x08, 0x72, 0xb1, 0xc0, 0x11, + 0x95, 0x0d, 0xe6, 0xea, 0xa9, 0x87, 0xff, 0xc7, 0x6e, 0x1e, 0x4f, 0x66, + 0x32, 0xba, 0x53, 0xbc, 0x05, 0xaa, 0x1c, 0x2c, 0x0c, 0xef, 0x4d, 0x37, + 0x47, 0x6b, 0x10, 0x0c, 0xdb, 0xc5, 0xa0, 0x98, 0x7e, 0x58, 0xdb, 0x37, + 0xd6, 0xae, 0xe9, 0x06, 0xbd, 0xd7, 0xa8, 0x65, 0xf3, 0x37, 0xb9, 0xc7, + 0x6d, 0xce, 0x77, 0xc7, 0x26, 0xe0, 0xd7, 0x74, 0x1f, 0xa6, 0x98, 0x16, + 0xbb, 0x0c, 0x6b, 0xc8, 0xbe, 0x77, 0xd0, 0xef, 0x58, 0xa7, 0x29, 0xa0, + 0xb9, 0xb8, 0x69, 0x05, 0x36, 0xcb, 0xb2, 0xda, 0x58, 0xa3, 0x0b, 0x75, + 0xad, 0x3d, 0x8b, 0x22, 0x82, 0x20, 0x3e, 0x70, 0x86, 0x99, 0x1c, 0xb9, + 0x4f, 0xcf, 0x77, 0xa4, 0x07, 0x1a, 0x23, 0x63, 0xd1, 0x38, 0x56, 0x84, + 0xec, 0xbf, 0x8f, 0xc5, 0x4e, 0xf4, 0x18, 0x96, 0x9b, 0x1a, 0xe8, 0x93, + 0xec, 0x8d, 0xaf, 0x15, 0x9c, 0x24, 0xf0, 0x5a, 0x3b, 0xe8, 0x0f, 0xb9, + 0xa8, 0x5a, 0x01, 0xd3, 0xb2, 0x1c, 0x60, 0xc9, 0x9c, 0x52, 0x04, 0xdd, + 0x92, 0xa7, 0xfe, 0x0c, 0xac, 0xe2, 0x45, 0x8d, 0x03, 0x61, 0xbc, 0x79, + 0xe0, 0x77, 0x2e, 0x87, 0x41, 0x3c, 0x58, 0x5f, 0xcb, 0xf5, 0xc5, 0x77, + 0xf2, 0x58, 0xc8, 0x4d, 0x28, 0xd0, 0x9a, 0xfa, 0xf3, 0x73, 0x09, 0x24, + 0x68, 0x74, 0xbc, 0x20, 0x4c, 0xd8, 0x2c, 0xb0, 0xaa, 0xe8, 0xd9, 0x4e, + 0x6d, 0xf2, 0x8c, 0x24, 0xd3, 0x93, 0x5d, 0x91, 0x02, 0x03, 0x01, 0x00, + 0x01, 0xa3, 0x82, 0x01, 0x77, 0x30, 0x82, 0x01, 0x73, 0x30, 0x1f, 0x06, + 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xad, 0xbd, + 0x98, 0x7a, 0x34, 0xb4, 0x26, 0xf7, 0xfa, 0xc4, 0x26, 0x54, 0xef, 0x03, + 0xbd, 0xe0, 0x24, 0xcb, 0x54, 0x1a, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, + 0x0e, 0x04, 0x16, 0x04, 0x14, 0x3f, 0xd5, 0xb5, 0xd0, 0xd6, 0x44, 0x79, + 0x50, 0x4a, 0x17, 0xa3, 0x9b, 0x8c, 0x4a, 0xdc, 0xb8, 0xb0, 0x22, 0x64, + 0x6b, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, + 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, + 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, + 0x00, 0x30, 0x11, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x0a, 0x30, 0x08, + 0x30, 0x06, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x44, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x3d, 0x30, 0x3b, 0x30, 0x39, 0xa0, 0x37, 0xa0, + 0x35, 0x86, 0x33, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, + 0x6c, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, + 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x41, 0x52, 0x6f, + 0x6f, 0x74, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x81, 0xb3, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x81, 0xa6, 0x30, 0x81, + 0xa3, 0x30, 0x3f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, + 0x02, 0x86, 0x33, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, + 0x74, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, + 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x41, 0x52, 0x6f, + 0x6f, 0x74, 0x2e, 0x70, 0x37, 0x63, 0x30, 0x39, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x2d, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x74, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x64, 0x64, + 0x54, 0x72, 0x75, 0x73, 0x74, 0x55, 0x54, 0x4e, 0x53, 0x47, 0x43, 0x43, + 0x41, 0x2e, 0x63, 0x72, 0x74, 0x30, 0x25, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x19, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x01, 0x00, 0x13, 0x85, 0x1f, 0x52, 0x80, 0x18, 0xc9, 0x53, + 0xf7, 0xfe, 0x2e, 0x1a, 0xaf, 0xcc, 0xd9, 0x0b, 0x3c, 0xc2, 0xd3, 0x85, + 0x81, 0x10, 0xf0, 0x28, 0x8d, 0xb9, 0x40, 0x7e, 0x2c, 0x9e, 0x8f, 0xd6, + 0x36, 0x86, 0x0a, 0x4c, 0x14, 0x2d, 0xd6, 0x97, 0x43, 0x92, 0x41, 0x19, + 0x37, 0x4b, 0x96, 0x9e, 0xeb, 0xa9, 0x30, 0x79, 0x12, 0x95, 0xb3, 0x02, + 0x36, 0x57, 0xed, 0x2b, 0xb9, 0x1d, 0x98, 0x1a, 0xa3, 0x18, 0x0a, 0x3f, + 0x9b, 0x39, 0x8b, 0xcd, 0xa1, 0x49, 0x29, 0x4c, 0x2f, 0xf9, 0xd0, 0x95, + 0x8c, 0xc8, 0x4d, 0x95, 0xba, 0xa8, 0x43, 0xcf, 0x33, 0xaa, 0x25, 0x2a, + 0x5a, 0x0e, 0xaa, 0x27, 0xc9, 0x4e, 0x6b, 0xb1, 0xe6, 0x73, 0x1f, 0xb3, + 0x74, 0x04, 0xc3, 0xf3, 0x4c, 0xe2, 0xa8, 0xeb, 0x67, 0xb7, 0x5d, 0xb8, + 0x08, 0x05, 0x1a, 0x56, 0x9a, 0x54, 0x29, 0x85, 0xf5, 0x29, 0x4e, 0x80, + 0x3b, 0x95, 0xd0, 0x7b, 0x53, 0x96, 0x11, 0x56, 0xc1, 0x02, 0xd3, 0xea, + 0xb2, 0x7f, 0xca, 0x8f, 0x9c, 0x70, 0x4a, 0x14, 0x8d, 0x5a, 0xb9, 0x16, + 0x60, 0x75, 0xd6, 0xcd, 0x27, 0x1e, 0x16, 0xcd, 0x5b, 0x33, 0x8e, 0x79, + 0x40, 0xcf, 0x28, 0x48, 0xe7, 0xdc, 0x71, 0x16, 0x4e, 0x74, 0x91, 0x75, + 0xb9, 0x2a, 0x8c, 0xf1, 0x70, 0xac, 0x26, 0xdd, 0x04, 0xb9, 0x40, 0xc2, + 0x85, 0xde, 0x1c, 0x93, 0x40, 0xd0, 0xcc, 0x6e, 0xc3, 0x9b, 0xaa, 0xef, + 0x60, 0x65, 0xdf, 0x60, 0x22, 0xf0, 0x5a, 0xa5, 0x7a, 0xa2, 0x2f, 0xe4, + 0x70, 0x73, 0xee, 0x3c, 0xd4, 0x26, 0x2b, 0x68, 0x07, 0xc1, 0x20, 0x7a, + 0xe8, 0x98, 0x5a, 0x3e, 0x7b, 0x9f, 0x02, 0x8b, 0x62, 0xc0, 0x85, 0x81, + 0x80, 0x60, 0x35, 0x7e, 0xa5, 0x1d, 0x0c, 0xd2, 0x9c, 0xdf, 0x62, 0x45, + 0x0d, 0xdb, 0xfc, 0x37, 0xfb, 0xf5, 0x25, 0x22, +} + +var certSet2Cert38 = []byte{ + 0x30, 0x82, 0x04, 0xff, 0x30, 0x82, 0x03, 0xe7, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x04, 0x51, 0xd3, 0x40, 0x44, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xb0, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0d, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x30, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, + 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x43, 0x50, 0x53, 0x20, 0x69, 0x73, 0x20, + 0x69, 0x6e, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x20, 0x62, 0x79, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, + 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x36, 0x20, 0x45, 0x6e, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x2d, + 0x30, 0x2b, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x24, 0x45, 0x6e, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, + 0x0d, 0x31, 0x34, 0x30, 0x39, 0x32, 0x32, 0x31, 0x37, 0x31, 0x34, 0x35, + 0x37, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x39, 0x32, 0x33, 0x30, 0x31, + 0x33, 0x31, 0x35, 0x33, 0x5a, 0x30, 0x81, 0xbe, 0x31, 0x0b, 0x30, 0x09, + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, + 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x45, 0x6e, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x28, 0x30, + 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, 0x53, 0x65, 0x65, 0x20, + 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x6e, 0x65, 0x74, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x2d, 0x74, 0x65, + 0x72, 0x6d, 0x73, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x30, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x39, 0x20, 0x45, + 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x20, 0x2d, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, + 0x6c, 0x79, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x29, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6f, 0x6f, + 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, + 0x01, 0x01, 0x00, 0xba, 0x84, 0xb6, 0x72, 0xdb, 0x9e, 0x0c, 0x6b, 0xe2, + 0x99, 0xe9, 0x30, 0x01, 0xa7, 0x76, 0xea, 0x32, 0xb8, 0x95, 0x41, 0x1a, + 0xc9, 0xda, 0x61, 0x4e, 0x58, 0x72, 0xcf, 0xfe, 0xf6, 0x82, 0x79, 0xbf, + 0x73, 0x61, 0x06, 0x0a, 0xa5, 0x27, 0xd8, 0xb3, 0x5f, 0xd3, 0x45, 0x4e, + 0x1c, 0x72, 0xd6, 0x4e, 0x32, 0xf2, 0x72, 0x8a, 0x0f, 0xf7, 0x83, 0x19, + 0xd0, 0x6a, 0x80, 0x80, 0x00, 0x45, 0x1e, 0xb0, 0xc7, 0xe7, 0x9a, 0xbf, + 0x12, 0x57, 0x27, 0x1c, 0xa3, 0x68, 0x2f, 0x0a, 0x87, 0xbd, 0x6a, 0x6b, + 0x0e, 0x5e, 0x65, 0xf3, 0x1c, 0x77, 0xd5, 0xd4, 0x85, 0x8d, 0x70, 0x21, + 0xb4, 0xb3, 0x32, 0xe7, 0x8b, 0xa2, 0xd5, 0x86, 0x39, 0x02, 0xb1, 0xb8, + 0xd2, 0x47, 0xce, 0xe4, 0xc9, 0x49, 0xc4, 0x3b, 0xa7, 0xde, 0xfb, 0x54, + 0x7d, 0x57, 0xbe, 0xf0, 0xe8, 0x6e, 0xc2, 0x79, 0xb2, 0x3a, 0x0b, 0x55, + 0xe2, 0x50, 0x98, 0x16, 0x32, 0x13, 0x5c, 0x2f, 0x78, 0x56, 0xc1, 0xc2, + 0x94, 0xb3, 0xf2, 0x5a, 0xe4, 0x27, 0x9a, 0x9f, 0x24, 0xd7, 0xc6, 0xec, + 0xd0, 0x9b, 0x25, 0x82, 0xe3, 0xcc, 0xc2, 0xc4, 0x45, 0xc5, 0x8c, 0x97, + 0x7a, 0x06, 0x6b, 0x2a, 0x11, 0x9f, 0xa9, 0x0a, 0x6e, 0x48, 0x3b, 0x6f, + 0xdb, 0xd4, 0x11, 0x19, 0x42, 0xf7, 0x8f, 0x07, 0xbf, 0xf5, 0x53, 0x5f, + 0x9c, 0x3e, 0xf4, 0x17, 0x2c, 0xe6, 0x69, 0xac, 0x4e, 0x32, 0x4c, 0x62, + 0x77, 0xea, 0xb7, 0xe8, 0xe5, 0xbb, 0x34, 0xbc, 0x19, 0x8b, 0xae, 0x9c, + 0x51, 0xe7, 0xb7, 0x7e, 0xb5, 0x53, 0xb1, 0x33, 0x22, 0xe5, 0x6d, 0xcf, + 0x70, 0x3c, 0x1a, 0xfa, 0xe2, 0x9b, 0x67, 0xb6, 0x83, 0xf4, 0x8d, 0xa5, + 0xaf, 0x62, 0x4c, 0x4d, 0xe0, 0x58, 0xac, 0x64, 0x34, 0x12, 0x03, 0xf8, + 0xb6, 0x8d, 0x94, 0x63, 0x24, 0xa4, 0x71, 0x02, 0x03, 0x01, 0x00, 0x01, + 0xa3, 0x82, 0x01, 0x0f, 0x30, 0x82, 0x01, 0x0b, 0x30, 0x0e, 0x06, 0x03, + 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, + 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, + 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x01, 0x30, 0x33, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x27, 0x30, 0x25, + 0x30, 0x23, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, + 0x86, 0x17, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, + 0x70, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, + 0x74, 0x30, 0x33, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2c, 0x30, 0x2a, + 0x30, 0x28, 0xa0, 0x26, 0xa0, 0x24, 0x86, 0x22, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, + 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x63, + 0x61, 0x31, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3b, 0x06, 0x03, 0x55, 0x1d, + 0x20, 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, 0x06, 0x04, 0x55, 0x1d, 0x20, + 0x00, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x6e, 0x65, 0x74, 0x2f, 0x43, 0x50, 0x53, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x6a, 0x72, 0x26, 0x7a, 0xd0, 0x1e, + 0xef, 0x7d, 0xe7, 0x3b, 0x69, 0x51, 0xd4, 0x6c, 0x8d, 0x9f, 0x90, 0x12, + 0x66, 0xab, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, + 0x16, 0x80, 0x14, 0x68, 0x90, 0xe4, 0x67, 0xa4, 0xa6, 0x53, 0x80, 0xc7, + 0x86, 0x66, 0xa4, 0xf1, 0xf7, 0x4b, 0x43, 0xfb, 0x84, 0xbd, 0x6d, 0x30, + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, + 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x69, 0x33, 0x83, 0xfc, 0x28, + 0x7a, 0x6f, 0x7d, 0xef, 0x9d, 0x55, 0xeb, 0xc5, 0x3e, 0x7a, 0x9d, 0x75, + 0xb3, 0xcc, 0xc3, 0x38, 0x36, 0xd9, 0x34, 0xa2, 0x28, 0x68, 0x18, 0xea, + 0x1e, 0x69, 0xd3, 0xbd, 0xe7, 0xd0, 0x77, 0xda, 0xb8, 0x00, 0x83, 0x4e, + 0x4a, 0xcf, 0x6f, 0xd1, 0xf1, 0xc1, 0x22, 0x3f, 0x74, 0xe4, 0xf7, 0x98, + 0x49, 0x9e, 0x9b, 0xb6, 0x9e, 0xe1, 0xdb, 0x98, 0x77, 0x2d, 0x56, 0x34, + 0xb1, 0xa8, 0x3c, 0xd9, 0xfd, 0xc0, 0xcd, 0xc7, 0xbf, 0x05, 0x03, 0xd4, + 0x02, 0xc5, 0xf1, 0xe5, 0xc6, 0xda, 0x08, 0xa5, 0x13, 0xc7, 0x62, 0x23, + 0x11, 0xd1, 0x61, 0x30, 0x1d, 0x60, 0x84, 0x45, 0xef, 0x79, 0xa8, 0xc6, + 0x26, 0x93, 0xa4, 0xb7, 0xcd, 0x34, 0xb8, 0x69, 0xc5, 0x13, 0xf6, 0x91, + 0xb3, 0xc9, 0x45, 0x73, 0x76, 0xb6, 0x92, 0xf6, 0x76, 0x0a, 0x5b, 0xe1, + 0x03, 0x47, 0xb7, 0xe9, 0x29, 0x4c, 0x91, 0x32, 0x23, 0x37, 0x4a, 0x9c, + 0x35, 0xd8, 0x78, 0xfd, 0x1d, 0x1f, 0xe4, 0x83, 0x89, 0x24, 0x80, 0xad, + 0xb7, 0xf9, 0xcf, 0xe4, 0x5d, 0xa5, 0xd4, 0x71, 0xc4, 0x85, 0x5b, 0x70, + 0x1f, 0xdb, 0x3f, 0x1c, 0x01, 0xeb, 0x1a, 0x45, 0x26, 0x31, 0x14, 0xcc, + 0x65, 0xbf, 0x67, 0xde, 0xca, 0xcc, 0x33, 0x65, 0xe5, 0x41, 0x91, 0xd7, + 0x37, 0xbe, 0x41, 0x1a, 0x96, 0x9d, 0xe6, 0x8a, 0x97, 0x9d, 0xa7, 0xce, + 0xac, 0x4e, 0x9a, 0x3d, 0xbd, 0x01, 0xa0, 0x6a, 0xd9, 0x4f, 0x22, 0x00, + 0x8b, 0x44, 0xd5, 0x69, 0x62, 0x7b, 0x2e, 0xeb, 0xcc, 0xba, 0xe7, 0x92, + 0x7d, 0x69, 0x67, 0x3d, 0xfc, 0xb8, 0x7c, 0xde, 0x41, 0x87, 0xd0, 0x69, + 0xea, 0xba, 0x0a, 0x18, 0x7a, 0x1a, 0x95, 0x43, 0xb3, 0x79, 0x71, 0x28, + 0x76, 0x6d, 0xa1, 0xfb, 0x57, 0x4a, 0xec, 0x4d, 0xc8, 0x0e, 0x10, +} + +var certSet2Cert39 = []byte{ + 0x30, 0x82, 0x05, 0x00, 0x30, 0x82, 0x03, 0xe8, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x01, 0x07, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, 0x8f, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x07, 0x41, 0x72, + 0x69, 0x7a, 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, + 0x04, 0x07, 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61, + 0x6c, 0x65, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x1c, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x54, + 0x65, 0x63, 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x2c, + 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x29, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x1e, 0x17, + 0x0d, 0x31, 0x31, 0x30, 0x35, 0x30, 0x33, 0x30, 0x37, 0x30, 0x30, 0x30, + 0x30, 0x5a, 0x17, 0x0d, 0x33, 0x31, 0x30, 0x35, 0x30, 0x33, 0x30, 0x37, + 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x81, 0xc6, 0x31, 0x0b, 0x30, 0x09, + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, + 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x07, 0x41, 0x72, 0x69, 0x7a, + 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x07, + 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61, 0x6c, 0x65, + 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x1c, 0x53, + 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x54, 0x65, 0x63, + 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x31, 0x33, 0x30, 0x31, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x2a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x65, 0x72, + 0x74, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x74, 0x65, 0x63, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x31, 0x34, 0x30, 0x32, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2b, 0x53, 0x74, 0x61, 0x72, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, + 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, + 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xe5, + 0x90, 0x66, 0x4b, 0xec, 0xf9, 0x46, 0x71, 0xa9, 0x20, 0x83, 0xbe, 0xe9, + 0x6c, 0xbf, 0x4a, 0xc9, 0x48, 0x69, 0x81, 0x75, 0x4e, 0x6d, 0x24, 0xf6, + 0xcb, 0x17, 0x13, 0xf8, 0xb0, 0x71, 0x59, 0x84, 0x7a, 0x6b, 0x2b, 0x85, + 0xa4, 0x34, 0xb5, 0x16, 0xe5, 0xcb, 0xcc, 0xe9, 0x41, 0x70, 0x2c, 0xa4, + 0x2e, 0xd6, 0xfa, 0x32, 0x7d, 0xe1, 0xa8, 0xde, 0x94, 0x10, 0xac, 0x31, + 0xc1, 0xc0, 0xd8, 0x6a, 0xff, 0x59, 0x27, 0xab, 0x76, 0xd6, 0xfc, 0x0b, + 0x74, 0x6b, 0xb8, 0xa7, 0xae, 0x3f, 0xc4, 0x54, 0xf4, 0xb4, 0x31, 0x44, + 0xdd, 0x93, 0x56, 0x8c, 0xa4, 0x4c, 0x5e, 0x9b, 0x89, 0xcb, 0x24, 0x83, + 0x9b, 0xe2, 0x57, 0x7d, 0xb7, 0xd8, 0x12, 0x1f, 0xc9, 0x85, 0x6d, 0xf4, + 0xd1, 0x80, 0xf1, 0x50, 0x9b, 0x87, 0xae, 0xd4, 0x0b, 0x10, 0x05, 0xfb, + 0x27, 0xba, 0x28, 0x6d, 0x17, 0xe9, 0x0e, 0xd6, 0x4d, 0xb9, 0x39, 0x55, + 0x06, 0xff, 0x0a, 0x24, 0x05, 0x7e, 0x2f, 0xc6, 0x1d, 0x72, 0x6c, 0xd4, + 0x8b, 0x29, 0x8c, 0x57, 0x7d, 0xda, 0xd9, 0xeb, 0x66, 0x1a, 0xd3, 0x4f, + 0xa7, 0xdf, 0x7f, 0x52, 0xc4, 0x30, 0xc5, 0xa5, 0xc9, 0x0e, 0x02, 0xc5, + 0x53, 0xbf, 0x77, 0x38, 0x68, 0x06, 0x24, 0xc3, 0x66, 0xc8, 0x37, 0x7e, + 0x30, 0x1e, 0x45, 0x71, 0x23, 0x35, 0xff, 0x90, 0xd8, 0x2a, 0x9d, 0x8d, + 0xe7, 0xb0, 0x92, 0x4d, 0x3c, 0x7f, 0x2a, 0x0a, 0x93, 0xdc, 0xcd, 0x16, + 0x46, 0x65, 0xf7, 0x60, 0x84, 0x8b, 0x76, 0x4b, 0x91, 0x27, 0x73, 0x14, + 0x92, 0xe0, 0xea, 0xee, 0x8f, 0x16, 0xea, 0x8d, 0x0e, 0x3e, 0x76, 0x17, + 0xbf, 0x7d, 0x89, 0x80, 0x80, 0x44, 0x43, 0xe7, 0x2d, 0xe0, 0x43, 0x09, + 0x75, 0xda, 0x36, 0xe8, 0xad, 0xdb, 0x89, 0x3a, 0xf5, 0x5d, 0x12, 0x8e, + 0x23, 0x04, 0x83, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x2c, + 0x30, 0x82, 0x01, 0x28, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, + 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0e, 0x06, + 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, + 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0x25, 0x45, 0x81, 0x68, 0x50, 0x26, 0x38, 0x3d, 0x3b, 0x2d, 0x2c, 0xbe, + 0xcd, 0x6a, 0xd9, 0xb6, 0x3d, 0xb3, 0x66, 0x63, 0x30, 0x1f, 0x06, 0x03, + 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x7c, 0x0c, 0x32, + 0x1f, 0xa7, 0xd9, 0x30, 0x7f, 0xc4, 0x7d, 0x68, 0xa3, 0x62, 0xa8, 0xa1, + 0xce, 0xab, 0x07, 0x5b, 0x27, 0x30, 0x3a, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x2e, 0x30, 0x2c, 0x30, 0x2a, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x1e, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x73, + 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x74, 0x65, 0x63, 0x68, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x30, 0x3b, 0x06, 0x03, 0x55, 0x1d, 0x1f, + 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, 0xa0, 0x2e, 0xa0, 0x2c, 0x86, 0x2a, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x73, + 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x74, 0x65, 0x63, 0x68, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x66, 0x72, 0x6f, 0x6f, 0x74, 0x2d, + 0x67, 0x32, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, + 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, 0x41, 0x06, 0x04, 0x55, 0x1d, 0x20, + 0x00, 0x30, 0x39, 0x30, 0x37, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x01, 0x16, 0x2b, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, + 0x2f, 0x63, 0x65, 0x72, 0x74, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x74, 0x65, 0x63, 0x68, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x56, 0x65, 0xca, 0xfe, + 0xf3, 0x3f, 0x0a, 0xa8, 0x93, 0x8b, 0x18, 0xc7, 0xde, 0x43, 0x69, 0x13, + 0x34, 0x20, 0xbe, 0x4e, 0x5f, 0x78, 0xa8, 0x6b, 0x9c, 0xdb, 0x6a, 0x4d, + 0x41, 0xdb, 0xc1, 0x13, 0xec, 0xdc, 0x31, 0x00, 0x22, 0x5e, 0xf7, 0x00, + 0x9e, 0x0c, 0xe0, 0x34, 0x65, 0x34, 0xf9, 0xb1, 0x3a, 0x4e, 0x48, 0xc8, + 0x12, 0x81, 0x88, 0x5c, 0x5b, 0x3e, 0x08, 0x53, 0x7a, 0xf7, 0x1a, 0x64, + 0xdf, 0xb8, 0x50, 0x61, 0xcc, 0x53, 0x51, 0x40, 0x29, 0x4b, 0xc2, 0xf4, + 0xae, 0x3a, 0x5f, 0xe4, 0xca, 0xad, 0x26, 0xcc, 0x4e, 0x61, 0x43, 0xe5, + 0xfd, 0x57, 0xa6, 0x37, 0x70, 0xce, 0x43, 0x2b, 0xb0, 0x94, 0xc3, 0x92, + 0xe9, 0xe1, 0x5f, 0xaa, 0x10, 0x49, 0xb7, 0x69, 0xe4, 0xe0, 0xd0, 0x1f, + 0x64, 0xa4, 0x2b, 0xcd, 0x1f, 0x6f, 0xa0, 0xf8, 0x84, 0x24, 0x18, 0xce, + 0x79, 0x3d, 0xa9, 0x91, 0xbf, 0x54, 0x18, 0x13, 0x89, 0x99, 0x54, 0x11, + 0x0d, 0x55, 0xc5, 0x26, 0x0b, 0x79, 0x4f, 0x5a, 0x1c, 0x6e, 0xf9, 0x63, + 0xdb, 0x14, 0x80, 0xa4, 0x07, 0xab, 0xfa, 0xb2, 0xa5, 0xb9, 0x88, 0xdd, + 0x91, 0xfe, 0x65, 0x3b, 0xa4, 0xa3, 0x79, 0xbe, 0x89, 0x4d, 0xe1, 0xd0, + 0xb0, 0xf4, 0xc8, 0x17, 0x0c, 0x0a, 0x96, 0x14, 0x7c, 0x09, 0xb7, 0x6c, + 0xe1, 0xc2, 0xd8, 0x55, 0xd4, 0x18, 0xa0, 0xaa, 0x41, 0x69, 0x70, 0x24, + 0xa3, 0xb9, 0xef, 0xe9, 0x5a, 0xdc, 0x3e, 0xeb, 0x94, 0x4a, 0xf0, 0xb7, + 0xde, 0x5f, 0x0e, 0x76, 0xfa, 0xfb, 0xfb, 0x69, 0x03, 0x45, 0x40, 0x50, + 0xee, 0x72, 0x0c, 0xa4, 0x12, 0x86, 0x81, 0xcd, 0x13, 0xd1, 0x4e, 0xc4, + 0x3c, 0xca, 0x4e, 0x0d, 0xd2, 0x26, 0xf1, 0x00, 0xb7, 0xb4, 0xa6, 0xa2, + 0xe1, 0x6e, 0x7a, 0x81, 0xfd, 0x30, 0xac, 0x7a, 0x1f, 0xc7, 0x59, 0x7b, +} + +var certSet2Cert40 = []byte{ + 0x30, 0x82, 0x05, 0x03, 0x30, 0x82, 0x03, 0xeb, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x04, 0x51, 0xd3, 0x60, 0xee, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xbe, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0d, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x1f, 0x53, 0x65, 0x65, 0x20, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x6c, 0x65, 0x67, + 0x61, 0x6c, 0x2d, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x31, 0x39, 0x30, 0x37, + 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x30, 0x28, 0x63, 0x29, 0x20, 0x32, + 0x30, 0x30, 0x39, 0x20, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, + 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, + 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x32, 0x30, 0x30, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x29, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, + 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x31, 0x30, 0x32, 0x32, 0x31, 0x37, 0x30, + 0x35, 0x31, 0x34, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x31, 0x30, 0x32, 0x33, + 0x30, 0x37, 0x33, 0x33, 0x32, 0x32, 0x5a, 0x30, 0x81, 0xba, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x45, 0x6e, + 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, + 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, 0x53, 0x65, + 0x65, 0x20, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, + 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x2d, + 0x74, 0x65, 0x72, 0x6d, 0x73, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, + 0x04, 0x0b, 0x13, 0x30, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x31, 0x32, + 0x20, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, + 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x2e, 0x30, 0x2c, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x25, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x20, 0x43, + 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, + 0x20, 0x4c, 0x31, 0x4b, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, + 0x00, 0xda, 0x3f, 0x96, 0xd0, 0x4d, 0xb9, 0x2f, 0x44, 0xe7, 0xdb, 0x39, + 0x5e, 0x9b, 0x50, 0xee, 0x5c, 0xa5, 0x61, 0xda, 0x41, 0x67, 0x53, 0x09, + 0xaa, 0x00, 0x9a, 0x8e, 0x57, 0x7f, 0x29, 0x6b, 0xdb, 0xc7, 0xe1, 0x21, + 0x24, 0xaa, 0x3a, 0xd0, 0x8d, 0x47, 0x23, 0xd2, 0xed, 0x72, 0x16, 0xf0, + 0x91, 0x21, 0xd2, 0x5d, 0xb7, 0xb8, 0x4b, 0xa8, 0x83, 0x8f, 0xb7, 0x91, + 0x32, 0x68, 0xcf, 0xce, 0x25, 0x93, 0x2c, 0xb2, 0x7d, 0x97, 0xc8, 0xfe, + 0xc1, 0xb4, 0x17, 0xba, 0x09, 0x9e, 0x03, 0x90, 0x93, 0x7b, 0x7c, 0x49, + 0x83, 0x22, 0x68, 0x8a, 0x9b, 0xde, 0x47, 0xc3, 0x31, 0x98, 0x7a, 0x2e, + 0x7d, 0x40, 0x0b, 0xd2, 0xef, 0x3e, 0xd3, 0xb2, 0x8c, 0xaa, 0x8f, 0x48, + 0xa9, 0xff, 0x00, 0xe8, 0x29, 0x58, 0x06, 0xf7, 0xb6, 0x93, 0x5a, 0x94, + 0x73, 0x26, 0x26, 0xad, 0x58, 0x0e, 0xe5, 0x42, 0xb8, 0xd5, 0xea, 0x73, + 0x79, 0x64, 0x68, 0x53, 0x25, 0xb8, 0x84, 0xcf, 0x94, 0x7a, 0xae, 0x06, + 0x45, 0x0c, 0xa3, 0x6b, 0x4d, 0xd0, 0xc6, 0xbe, 0xea, 0x18, 0xa4, 0x36, + 0xf0, 0x92, 0xb2, 0xba, 0x1c, 0x88, 0x8f, 0x3a, 0x52, 0x7f, 0xf7, 0x5e, + 0x6d, 0x83, 0x1c, 0x9d, 0xf0, 0x1f, 0xe5, 0xc3, 0xd6, 0xdd, 0xa5, 0x78, + 0x92, 0x3d, 0xb0, 0x6d, 0x2c, 0xea, 0xc9, 0xcf, 0x94, 0x41, 0x19, 0x71, + 0x44, 0x68, 0xba, 0x47, 0x3c, 0x04, 0xe9, 0x5d, 0xba, 0x3e, 0xf0, 0x35, + 0xf7, 0x15, 0xb6, 0x9e, 0xf2, 0x2e, 0x15, 0x1e, 0x3f, 0x47, 0xc8, 0xc8, + 0x38, 0xa7, 0x73, 0x45, 0x5d, 0x4d, 0xb0, 0x3b, 0xb1, 0x8e, 0x17, 0x29, + 0x37, 0xea, 0xdd, 0x05, 0x01, 0x22, 0xbb, 0x94, 0x36, 0x2a, 0x8d, 0x5b, + 0x35, 0xfe, 0x53, 0x19, 0x2f, 0x08, 0x46, 0xc1, 0x2a, 0xb3, 0x1a, 0x62, + 0x1d, 0x4e, 0x2b, 0xd9, 0x1b, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, + 0x01, 0x09, 0x30, 0x82, 0x01, 0x05, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x0f, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, + 0x02, 0x01, 0x00, 0x30, 0x33, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x01, 0x01, 0x04, 0x27, 0x30, 0x25, 0x30, 0x23, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x17, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x65, 0x6e, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x30, 0x30, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x29, 0x30, 0x27, 0x30, 0x25, 0xa0, 0x23, 0xa0, + 0x21, 0x86, 0x1f, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, + 0x6c, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, + 0x74, 0x2f, 0x67, 0x32, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3b, + 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, 0x06, + 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x70, 0x61, 0x30, + 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x82, 0xa2, + 0x70, 0x74, 0xdd, 0xbc, 0x53, 0x3f, 0xcf, 0x7b, 0xd4, 0xf7, 0xcd, 0x7f, + 0xa7, 0x60, 0xc6, 0x0a, 0x4c, 0xbf, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, + 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x6a, 0x72, 0x26, 0x7a, 0xd0, + 0x1e, 0xef, 0x7d, 0xe7, 0x3b, 0x69, 0x51, 0xd4, 0x6c, 0x8d, 0x9f, 0x90, + 0x12, 0x66, 0xab, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x3f, + 0x1c, 0x1a, 0x5b, 0xff, 0x40, 0x22, 0x1d, 0x8f, 0x35, 0x0c, 0x2d, 0xaa, + 0x99, 0x27, 0xab, 0xc0, 0x11, 0x32, 0x70, 0xd7, 0x36, 0x28, 0x69, 0xa5, + 0x8d, 0xb1, 0x27, 0x99, 0x42, 0xbe, 0xc4, 0x93, 0xeb, 0x48, 0x57, 0x43, + 0x71, 0x23, 0xc4, 0xe5, 0x4e, 0xad, 0xae, 0x43, 0x6f, 0x92, 0x76, 0xc5, + 0x19, 0xef, 0xca, 0xbc, 0x6f, 0x42, 0x4c, 0x16, 0x9a, 0x86, 0xa9, 0x04, + 0x38, 0xc7, 0x65, 0xf0, 0xf5, 0x0c, 0xe0, 0x4a, 0xdf, 0xa2, 0xfa, 0xce, + 0x1a, 0x11, 0xa8, 0x9c, 0x69, 0x2f, 0x1b, 0xdf, 0xea, 0xe2, 0x32, 0xf3, + 0xce, 0x4c, 0xbc, 0x46, 0x0c, 0xc0, 0x89, 0x80, 0xd1, 0x87, 0x6b, 0xa2, + 0xcf, 0x6b, 0xd4, 0x7f, 0xfd, 0xf5, 0x60, 0x52, 0x67, 0x57, 0xa0, 0x6d, + 0xd1, 0x64, 0x41, 0x14, 0x6d, 0x34, 0x62, 0xed, 0x06, 0x6c, 0x24, 0xf2, + 0x06, 0xbc, 0x28, 0x02, 0xaf, 0x03, 0x2d, 0xc2, 0x33, 0x05, 0xfb, 0xcb, + 0xaa, 0x16, 0xe8, 0x65, 0x10, 0x43, 0xf5, 0x69, 0x5c, 0xe3, 0x81, 0x58, + 0x99, 0xcd, 0x6b, 0xd3, 0xb8, 0xc7, 0x7b, 0x19, 0x55, 0xc9, 0x40, 0xce, + 0x79, 0x55, 0xb8, 0x73, 0x89, 0xe9, 0x5c, 0x40, 0x66, 0x43, 0x12, 0x7f, + 0x07, 0xb8, 0x65, 0x56, 0xd5, 0x8d, 0xc3, 0xa7, 0xf5, 0xb1, 0xb6, 0x65, + 0x9e, 0xc0, 0x83, 0x36, 0x7f, 0x16, 0x45, 0x3c, 0x74, 0x4b, 0x93, 0x8a, + 0x3c, 0xf1, 0x2b, 0xf5, 0x35, 0x70, 0x73, 0x7b, 0xe7, 0x82, 0x04, 0xb1, + 0x18, 0x98, 0x0e, 0xd4, 0x9c, 0x6f, 0x1a, 0xfc, 0xfc, 0xa7, 0x33, 0xa5, + 0xbb, 0xbb, 0x18, 0xf3, 0x6b, 0x7a, 0x5d, 0x32, 0x87, 0xf7, 0x6d, 0x25, + 0xe4, 0xe2, 0x76, 0x86, 0x21, 0x1e, 0x11, 0x46, 0xcd, 0x76, 0x0e, 0x6f, + 0x4f, 0xa4, 0x21, 0x71, 0x0a, 0x84, 0xa7, 0x2d, 0x36, 0xa9, 0x48, 0x22, + 0x51, 0x7e, 0x82, +} + +var certSet2Cert41 = []byte{ + 0x30, 0x82, 0x05, 0x1f, 0x30, 0x82, 0x04, 0x07, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x04, 0x07, 0x27, 0xa4, 0x6b, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x5a, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, + 0x45, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x09, + 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x31, 0x13, 0x30, + 0x11, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65, + 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x19, 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, + 0x72, 0x65, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, + 0x30, 0x34, 0x30, 0x32, 0x31, 0x34, 0x33, 0x36, 0x31, 0x30, 0x5a, 0x17, + 0x0d, 0x32, 0x31, 0x30, 0x34, 0x30, 0x32, 0x31, 0x34, 0x33, 0x35, 0x35, + 0x32, 0x5a, 0x30, 0x81, 0x8d, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, + 0x04, 0x06, 0x13, 0x02, 0x4e, 0x4c, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, + 0x55, 0x04, 0x07, 0x13, 0x09, 0x41, 0x6d, 0x73, 0x74, 0x65, 0x72, 0x64, + 0x61, 0x6d, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x1c, 0x56, 0x65, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x20, 0x45, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x20, 0x53, 0x6f, 0x6c, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, + 0x04, 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72, 0x75, + 0x73, 0x74, 0x31, 0x2e, 0x30, 0x2c, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x25, 0x56, 0x65, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x20, 0x41, 0x6b, 0x61, + 0x6d, 0x61, 0x69, 0x20, 0x53, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x20, 0x43, 0x41, 0x20, 0x47, 0x31, 0x34, 0x2d, 0x53, 0x48, + 0x41, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xdd, + 0x6e, 0x9e, 0x02, 0x69, 0x02, 0xb5, 0xa3, 0x99, 0x2e, 0x08, 0x64, 0x32, + 0x6a, 0x59, 0xf3, 0xc6, 0x9e, 0xa6, 0x20, 0x07, 0xd2, 0x48, 0xd1, 0xa8, + 0x93, 0xc7, 0xea, 0x47, 0x8f, 0x83, 0x39, 0x40, 0xd7, 0x20, 0x5d, 0x8d, + 0x9a, 0xba, 0xab, 0xd8, 0x70, 0xec, 0x9d, 0x88, 0xd1, 0xbd, 0x62, 0xf6, + 0xdb, 0xec, 0x9d, 0x5e, 0x35, 0x01, 0x76, 0x03, 0x23, 0xe5, 0x6f, 0xd2, + 0xaf, 0x46, 0x35, 0x59, 0x5a, 0x5c, 0xd1, 0xa8, 0x23, 0xc1, 0xeb, 0xe9, + 0x20, 0xd4, 0x49, 0xd6, 0x3f, 0x00, 0xd8, 0xa8, 0x22, 0xde, 0x43, 0x79, + 0x81, 0xac, 0xe9, 0xa4, 0x92, 0xf5, 0x77, 0x70, 0x05, 0x1e, 0x5c, 0xb6, + 0xa0, 0xf7, 0x90, 0xa4, 0xcd, 0xab, 0x28, 0x2c, 0x90, 0xc2, 0xe7, 0x0f, + 0xc3, 0xaf, 0x1c, 0x47, 0x59, 0xd5, 0x84, 0x2e, 0xdf, 0x26, 0x07, 0x45, + 0x23, 0x5a, 0xc6, 0xe8, 0x90, 0xc8, 0x85, 0x4b, 0x8c, 0x16, 0x1e, 0x60, + 0xf9, 0x01, 0x13, 0xf1, 0x14, 0x1f, 0xe6, 0xe8, 0x14, 0xed, 0xc5, 0xd2, + 0x6f, 0x63, 0x28, 0x6e, 0x72, 0x8c, 0x49, 0xae, 0x08, 0x72, 0xc7, 0x93, + 0x95, 0xb4, 0x0b, 0x0c, 0xae, 0x8f, 0x9a, 0x67, 0x84, 0xf5, 0x57, 0x1b, + 0xdb, 0x81, 0xd7, 0x17, 0x9d, 0x41, 0x11, 0x43, 0x19, 0xbd, 0x6d, 0x4a, + 0x85, 0xed, 0x8f, 0x70, 0x25, 0xab, 0x66, 0xab, 0xf6, 0xfa, 0x6d, 0x1c, + 0x3c, 0xab, 0xed, 0x17, 0xbd, 0x56, 0x84, 0xe1, 0xdb, 0x75, 0x33, 0xb2, + 0x28, 0x4b, 0x99, 0x8e, 0xf9, 0x4b, 0x82, 0x33, 0x50, 0x9f, 0x92, 0x53, + 0xed, 0xfa, 0xad, 0x0f, 0x95, 0x9c, 0xa3, 0xf2, 0xcb, 0x60, 0xf0, 0x77, + 0x1d, 0xc9, 0x01, 0x8b, 0x5f, 0x2d, 0x86, 0xbe, 0xbf, 0x36, 0xb8, 0x24, + 0x96, 0x13, 0x7c, 0xc1, 0x86, 0x5a, 0x6c, 0xc1, 0x48, 0x2a, 0x7f, 0x3e, + 0x93, 0x60, 0xc5, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0xb7, + 0x30, 0x82, 0x01, 0xb3, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, + 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x02, + 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, + 0x41, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xb1, 0x3e, 0x01, 0x32, + 0x30, 0x34, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x02, 0x01, 0x16, 0x26, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x72, + 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x30, 0x81, 0xba, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x81, 0xad, 0x30, 0x81, + 0xaa, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, + 0x01, 0x86, 0x26, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, + 0x73, 0x70, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, + 0x65, 0x72, 0x6f, 0x6f, 0x74, 0x30, 0x39, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x2d, 0x68, 0x74, 0x74, 0x70, 0x73, + 0x3a, 0x2f, 0x2f, 0x63, 0x61, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x6f, 0x6d, + 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, + 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x72, 0x6f, 0x6f, 0x74, + 0x2e, 0x63, 0x72, 0x74, 0x30, 0x39, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x30, 0x02, 0x86, 0x2d, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, + 0x2f, 0x2f, 0x63, 0x61, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x6f, 0x6d, 0x6e, + 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x61, + 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x72, 0x6f, 0x6f, 0x74, 0x2e, + 0x64, 0x65, 0x72, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, + 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0xc6, 0x30, 0x1f, 0x06, 0x03, 0x55, + 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xe5, 0x9d, 0x59, 0x30, + 0x82, 0x47, 0x58, 0xcc, 0xac, 0xfa, 0x08, 0x54, 0x36, 0x86, 0x7b, 0x3a, + 0xb5, 0x04, 0x4d, 0xf0, 0x30, 0x42, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, + 0x3b, 0x30, 0x39, 0x30, 0x37, 0xa0, 0x35, 0xa0, 0x33, 0x86, 0x31, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x64, 0x70, 0x31, 0x2e, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x52, 0x4c, 0x2f, 0x4f, 0x6d, 0x6e, 0x69, + 0x72, 0x6f, 0x6f, 0x74, 0x32, 0x30, 0x32, 0x35, 0x2e, 0x63, 0x72, 0x6c, + 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xf8, + 0xbd, 0xfa, 0xaf, 0x73, 0x77, 0xc6, 0xc7, 0x1b, 0xf9, 0x4b, 0x4d, 0x11, + 0xa7, 0xd1, 0x33, 0xaf, 0xaf, 0x72, 0x11, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, + 0x01, 0x01, 0x00, 0x80, 0xd9, 0x7a, 0xed, 0x72, 0x05, 0x37, 0x8f, 0x61, + 0xaa, 0x73, 0x7c, 0x9a, 0x6a, 0xfc, 0xfe, 0x01, 0xe2, 0x19, 0x81, 0x70, + 0x07, 0x25, 0x32, 0xb0, 0xf0, 0x6f, 0x3b, 0xc7, 0x6a, 0x28, 0x3d, 0xe4, + 0x51, 0x87, 0xe6, 0x7e, 0x82, 0xec, 0xae, 0x48, 0xa7, 0xb1, 0x77, 0x38, + 0xc2, 0xd6, 0x56, 0xaf, 0x8f, 0xf2, 0x01, 0xfc, 0x65, 0x65, 0x10, 0x09, + 0xf7, 0x74, 0x29, 0xb5, 0x0e, 0x92, 0xee, 0x90, 0x98, 0xd1, 0x88, 0xa2, + 0x65, 0xb7, 0xcd, 0x9c, 0x0e, 0xa7, 0x86, 0x98, 0x28, 0xbc, 0xae, 0x15, + 0x83, 0xb6, 0x1a, 0xd7, 0x1d, 0xec, 0x19, 0xda, 0x7a, 0x8e, 0x40, 0xf9, + 0x99, 0x15, 0xd5, 0x7d, 0xa5, 0xba, 0xab, 0xfd, 0x26, 0x98, 0x6e, 0x9c, + 0x41, 0x3b, 0xb6, 0x81, 0x18, 0xec, 0x70, 0x48, 0xd7, 0x6e, 0x7f, 0xa6, + 0xe1, 0x77, 0x25, 0xd6, 0xdd, 0x62, 0xe8, 0x52, 0xf3, 0x8c, 0x16, 0x39, + 0x67, 0xe2, 0x22, 0x0d, 0x77, 0x2e, 0xfb, 0x11, 0x6c, 0xe4, 0xdd, 0x38, + 0xb4, 0x27, 0x5f, 0x03, 0xa8, 0x3d, 0x44, 0xe2, 0xf2, 0x84, 0x4b, 0x84, + 0xfd, 0x56, 0xa6, 0x9e, 0x4d, 0x7b, 0xa2, 0x16, 0x4f, 0x07, 0xf5, 0x34, + 0x24, 0x72, 0xa5, 0xa2, 0xfa, 0x16, 0x66, 0x2a, 0xa4, 0x4a, 0x0e, 0xc8, + 0x0d, 0x27, 0x44, 0x9c, 0x77, 0xd4, 0x12, 0x10, 0x87, 0xd2, 0x00, 0x2c, + 0x7a, 0xbb, 0x8e, 0x88, 0x22, 0x91, 0x15, 0xbe, 0xa2, 0x59, 0xca, 0x34, + 0xe0, 0x1c, 0x61, 0x94, 0x86, 0x20, 0x33, 0xcd, 0xe7, 0x4c, 0x5d, 0x3b, + 0x92, 0x3e, 0xcb, 0xd6, 0x2d, 0xea, 0x54, 0xfa, 0xfb, 0xaf, 0x54, 0xf5, + 0xa8, 0xc5, 0x0b, 0xca, 0x8b, 0x87, 0x00, 0xe6, 0x9f, 0xe6, 0x95, 0xbf, + 0xb7, 0xc4, 0xa3, 0x59, 0xf5, 0x16, 0x6c, 0x5f, 0x3e, 0x69, 0x55, 0x80, + 0x39, 0xf6, 0x75, 0x50, 0x14, 0x3e, 0x32, +} + +var certSet2Cert42 = []byte{ + 0x30, 0x82, 0x05, 0x2b, 0x30, 0x82, 0x04, 0x13, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x7e, 0xe1, 0x4a, 0x6f, 0x6f, 0xef, 0xf2, 0xd3, 0x7f, + 0x3f, 0xad, 0x65, 0x4d, 0x3a, 0xda, 0xb4, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xca, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, + 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x31, 0x3a, 0x30, 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28, + 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69, + 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, + 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, + 0x31, 0x45, 0x30, 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56, + 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30, + 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x33, 0x31, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x31, 0x30, 0x33, 0x30, + 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x77, 0x31, 0x0b, 0x30, + 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x1d, + 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x14, 0x53, 0x79, 0x6d, + 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x04, 0x0b, 0x13, 0x16, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, + 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x1f, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x45, 0x56, 0x20, 0x53, 0x53, 0x4c, + 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xd8, 0xa1, 0x65, 0x74, 0x23, 0xe8, 0x2b, + 0x64, 0xe2, 0x32, 0xd7, 0x33, 0x37, 0x3d, 0x8e, 0xf5, 0x34, 0x16, 0x48, + 0xdd, 0x4f, 0x7f, 0x87, 0x1c, 0xf8, 0x44, 0x23, 0x13, 0x8e, 0xfb, 0x11, + 0xd8, 0x44, 0x5a, 0x18, 0x71, 0x8e, 0x60, 0x16, 0x26, 0x92, 0x9b, 0xfd, + 0x17, 0x0b, 0xe1, 0x71, 0x70, 0x42, 0xfe, 0xbf, 0xfa, 0x1c, 0xc0, 0xaa, + 0xa3, 0xa7, 0xb5, 0x71, 0xe8, 0xff, 0x18, 0x83, 0xf6, 0xdf, 0x10, 0x0a, + 0x13, 0x62, 0xc8, 0x3d, 0x9c, 0xa7, 0xde, 0x2e, 0x3f, 0x0c, 0xd9, 0x1d, + 0xe7, 0x2e, 0xfb, 0x2a, 0xce, 0xc8, 0x9a, 0x7f, 0x87, 0xbf, 0xd8, 0x4c, + 0x04, 0x15, 0x32, 0xc9, 0xd1, 0xcc, 0x95, 0x71, 0xa0, 0x4e, 0x28, 0x4f, + 0x84, 0xd9, 0x35, 0xfb, 0xe3, 0x86, 0x6f, 0x94, 0x53, 0xe6, 0x72, 0x8a, + 0x63, 0x67, 0x2e, 0xbe, 0x69, 0xf6, 0xf7, 0x6e, 0x8e, 0x9c, 0x60, 0x04, + 0xeb, 0x29, 0xfa, 0xc4, 0x47, 0x42, 0xd2, 0x78, 0x98, 0xe3, 0xec, 0x0b, + 0xa5, 0x92, 0xdc, 0xb7, 0x9a, 0xbd, 0x80, 0x64, 0x2b, 0x38, 0x7c, 0x38, + 0x09, 0x5b, 0x66, 0xf6, 0x2d, 0x95, 0x7a, 0x86, 0xb2, 0x34, 0x2e, 0x85, + 0x9e, 0x90, 0x0e, 0x5f, 0xb7, 0x5d, 0xa4, 0x51, 0x72, 0x46, 0x70, 0x13, + 0xbf, 0x67, 0xf2, 0xb6, 0xa7, 0x4d, 0x14, 0x1e, 0x6c, 0xb9, 0x53, 0xee, + 0x23, 0x1a, 0x4e, 0x8d, 0x48, 0x55, 0x43, 0x41, 0xb1, 0x89, 0x75, 0x6a, + 0x40, 0x28, 0xc5, 0x7d, 0xdd, 0xd2, 0x6e, 0xd2, 0x02, 0x19, 0x2f, 0x7b, + 0x24, 0x94, 0x4b, 0xeb, 0xf1, 0x1a, 0xa9, 0x9b, 0xe3, 0x23, 0x9a, 0xea, + 0xfa, 0x33, 0xab, 0x0a, 0x2c, 0xb7, 0xf4, 0x60, 0x08, 0xdd, 0x9f, 0x1c, + 0xcd, 0xdd, 0x2d, 0x01, 0x66, 0x80, 0xaf, 0xb3, 0x2f, 0x29, 0x1d, 0x23, + 0xb8, 0x8a, 0xe1, 0xa1, 0x70, 0x07, 0x0c, 0x34, 0x0f, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x82, 0x01, 0x5d, 0x30, 0x82, 0x01, 0x59, 0x30, 0x2f, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x23, + 0x30, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x73, + 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x30, + 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, + 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x65, 0x06, 0x03, 0x55, + 0x1d, 0x20, 0x04, 0x5e, 0x30, 0x5c, 0x30, 0x5a, 0x06, 0x04, 0x55, 0x1d, + 0x20, 0x00, 0x30, 0x52, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x79, 0x6d, 0x61, 0x75, 0x74, 0x68, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x28, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x02, 0x30, 0x1c, 0x1a, 0x1a, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, + 0x79, 0x6d, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, + 0x70, 0x61, 0x30, 0x30, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x29, 0x30, + 0x27, 0x30, 0x25, 0xa0, 0x23, 0xa0, 0x21, 0x86, 0x1f, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x73, 0x31, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63, 0x61, 0x33, 0x2d, 0x67, 0x35, + 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, + 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x29, 0x06, 0x03, + 0x55, 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31, + 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79, + 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d, + 0x35, 0x33, 0x33, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, + 0x04, 0x14, 0x01, 0x59, 0xab, 0xe7, 0xdd, 0x3a, 0x0b, 0x59, 0xa6, 0x64, + 0x63, 0xd6, 0xcf, 0x20, 0x07, 0x57, 0xd5, 0x91, 0xe7, 0x6a, 0x30, 0x1f, + 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x7f, + 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09, 0xf3, 0x43, + 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, 0x33, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, + 0x01, 0x01, 0x00, 0x42, 0x01, 0x55, 0x7b, 0xd0, 0x16, 0x1a, 0x5d, 0x58, + 0xe8, 0xbb, 0x9b, 0xa8, 0x4d, 0xd7, 0xf3, 0xd7, 0xeb, 0x13, 0x94, 0x86, + 0xd6, 0x7f, 0x21, 0x0b, 0x47, 0xbc, 0x57, 0x9b, 0x92, 0x5d, 0x4f, 0x05, + 0x9f, 0x38, 0xa4, 0x10, 0x7c, 0xcf, 0x83, 0xbe, 0x06, 0x43, 0x46, 0x8d, + 0x08, 0xbc, 0x6a, 0xd7, 0x10, 0xa6, 0xfa, 0xab, 0xaf, 0x2f, 0x61, 0xa8, + 0x63, 0xf2, 0x65, 0xdf, 0x7f, 0x4c, 0x88, 0x12, 0x88, 0x4f, 0xb3, 0x69, + 0xd9, 0xff, 0x27, 0xc0, 0x0a, 0x97, 0x91, 0x8f, 0x56, 0xfb, 0x89, 0xc4, + 0xa8, 0xbb, 0x92, 0x2d, 0x1b, 0x73, 0xb0, 0xc6, 0xab, 0x36, 0xf4, 0x96, + 0x6c, 0x20, 0x08, 0xef, 0x0a, 0x1e, 0x66, 0x24, 0x45, 0x4f, 0x67, 0x00, + 0x40, 0xc8, 0x07, 0x54, 0x74, 0x33, 0x3b, 0xa6, 0xad, 0xbb, 0x23, 0x9f, + 0x66, 0xed, 0xa2, 0x44, 0x70, 0x34, 0xfb, 0x0e, 0xea, 0x01, 0xfd, 0xcf, + 0x78, 0x74, 0xdf, 0xa7, 0xad, 0x55, 0xb7, 0x5f, 0x4d, 0xf6, 0xd6, 0x3f, + 0xe0, 0x86, 0xce, 0x24, 0xc7, 0x42, 0xa9, 0x13, 0x14, 0x44, 0x35, 0x4b, + 0xb6, 0xdf, 0xc9, 0x60, 0xac, 0x0c, 0x7f, 0xd9, 0x93, 0x21, 0x4b, 0xee, + 0x9c, 0xe4, 0x49, 0x02, 0x98, 0xd3, 0x60, 0x7b, 0x5c, 0xbc, 0xd5, 0x30, + 0x2f, 0x07, 0xce, 0x44, 0x42, 0xc4, 0x0b, 0x99, 0xfe, 0xe6, 0x9f, 0xfc, + 0xb0, 0x78, 0x86, 0x51, 0x6d, 0xd1, 0x2c, 0x9d, 0xc6, 0x96, 0xfb, 0x85, + 0x82, 0xbb, 0x04, 0x2f, 0xf7, 0x62, 0x80, 0xef, 0x62, 0xda, 0x7f, 0xf6, + 0x0e, 0xac, 0x90, 0xb8, 0x56, 0xbd, 0x79, 0x3f, 0xf2, 0x80, 0x6e, 0xa3, + 0xd9, 0xb9, 0x0f, 0x5d, 0x3a, 0x07, 0x1d, 0x91, 0x93, 0x86, 0x4b, 0x29, + 0x4c, 0xe1, 0xdc, 0xb5, 0xe1, 0xe0, 0x33, 0x9d, 0xb3, 0xcb, 0x36, 0x91, + 0x4b, 0xfe, 0xa1, 0xb4, 0xee, 0xf0, 0xf9, +} + +var certSet2Cert43 = []byte{ + 0x30, 0x82, 0x05, 0x38, 0x30, 0x82, 0x04, 0x20, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x51, 0x3f, 0xb9, 0x74, 0x38, 0x70, 0xb7, 0x34, 0x40, + 0x41, 0x8d, 0x30, 0x93, 0x06, 0x99, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xca, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, + 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x31, 0x3a, 0x30, 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28, + 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69, + 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, + 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, + 0x31, 0x45, 0x30, 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56, + 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30, + 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x33, 0x31, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x31, 0x30, 0x33, 0x30, + 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x7e, 0x31, 0x0b, 0x30, + 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x1d, + 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x14, 0x53, 0x79, 0x6d, + 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x04, 0x0b, 0x13, 0x16, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, + 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x26, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, + 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x20, 0x2d, + 0x20, 0x47, 0x34, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, + 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, + 0xb2, 0xd8, 0x05, 0xca, 0x1c, 0x74, 0x2d, 0xb5, 0x17, 0x56, 0x39, 0xc5, + 0x4a, 0x52, 0x09, 0x96, 0xe8, 0x4b, 0xd8, 0x0c, 0xf1, 0x68, 0x9f, 0x9a, + 0x42, 0x28, 0x62, 0xc3, 0xa5, 0x30, 0x53, 0x7e, 0x55, 0x11, 0x82, 0x5b, + 0x03, 0x7a, 0x0d, 0x2f, 0xe1, 0x79, 0x04, 0xc9, 0xb4, 0x96, 0x77, 0x19, + 0x81, 0x01, 0x94, 0x59, 0xf9, 0xbc, 0xf7, 0x7a, 0x99, 0x27, 0x82, 0x2d, + 0xb7, 0x83, 0xdd, 0x5a, 0x27, 0x7f, 0xb2, 0x03, 0x7a, 0x9c, 0x53, 0x25, + 0xe9, 0x48, 0x1f, 0x46, 0x4f, 0xc8, 0x9d, 0x29, 0xf8, 0xbe, 0x79, 0x56, + 0xf6, 0xf7, 0xfd, 0xd9, 0x3a, 0x68, 0xda, 0x8b, 0x4b, 0x82, 0x33, 0x41, + 0x12, 0xc3, 0xc8, 0x3c, 0xcc, 0xd6, 0x96, 0x7a, 0x84, 0x21, 0x1a, 0x22, + 0x04, 0x03, 0x27, 0x17, 0x8b, 0x1c, 0x68, 0x61, 0x93, 0x0f, 0x0e, 0x51, + 0x80, 0x33, 0x1d, 0xb4, 0xb5, 0xce, 0xeb, 0x7e, 0xd0, 0x62, 0xac, 0xee, + 0xb3, 0x7b, 0x01, 0x74, 0xef, 0x69, 0x35, 0xeb, 0xca, 0xd5, 0x3d, 0xa9, + 0xee, 0x97, 0x98, 0xca, 0x8d, 0xaa, 0x44, 0x0e, 0x25, 0x99, 0x4a, 0x15, + 0x96, 0xa4, 0xce, 0x6d, 0x02, 0x54, 0x1f, 0x2a, 0x6a, 0x26, 0xe2, 0x06, + 0x3a, 0x63, 0x48, 0xac, 0xb4, 0x4c, 0xd1, 0x75, 0x93, 0x50, 0xff, 0x13, + 0x2f, 0xd6, 0xda, 0xe1, 0xc6, 0x18, 0xf5, 0x9f, 0xc9, 0x25, 0x5d, 0xf3, + 0x00, 0x3a, 0xde, 0x26, 0x4d, 0xb4, 0x29, 0x09, 0xcd, 0x0f, 0x3d, 0x23, + 0x6f, 0x16, 0x4a, 0x81, 0x16, 0xfb, 0xf2, 0x83, 0x10, 0xc3, 0xb8, 0xd6, + 0xd8, 0x55, 0x32, 0x3d, 0xf1, 0xbd, 0x0f, 0xbd, 0x8c, 0x52, 0x95, 0x4a, + 0x16, 0x97, 0x7a, 0x52, 0x21, 0x63, 0x75, 0x2f, 0x16, 0xf9, 0xc4, 0x66, + 0xbe, 0xf5, 0xb5, 0x09, 0xd8, 0xff, 0x27, 0x00, 0xcd, 0x44, 0x7c, 0x6f, + 0x4b, 0x3f, 0xb0, 0xf7, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, + 0x63, 0x30, 0x82, 0x01, 0x5f, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, + 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, + 0x00, 0x30, 0x30, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x29, 0x30, 0x27, + 0x30, 0x25, 0xa0, 0x23, 0xa0, 0x21, 0x86, 0x1f, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x73, 0x31, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63, 0x61, 0x33, 0x2d, 0x67, 0x35, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, + 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x2f, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x23, 0x30, 0x21, 0x30, + 0x1f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, + 0x13, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x73, 0x32, 0x2e, 0x73, + 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x6b, 0x06, 0x03, + 0x55, 0x1d, 0x20, 0x04, 0x64, 0x30, 0x62, 0x30, 0x60, 0x06, 0x0a, 0x60, + 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07, 0x36, 0x30, 0x52, 0x30, + 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, + 0x1a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, + 0x73, 0x79, 0x6d, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x63, 0x70, 0x73, 0x30, 0x28, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x02, 0x30, 0x1c, 0x1a, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x79, 0x6d, 0x61, 0x75, 0x74, + 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x70, 0x61, 0x30, 0x29, 0x06, + 0x03, 0x55, 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, + 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, + 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, + 0x2d, 0x35, 0x33, 0x34, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, + 0x16, 0x04, 0x14, 0x5f, 0x60, 0xcf, 0x61, 0x90, 0x55, 0xdf, 0x84, 0x43, + 0x14, 0x8a, 0x60, 0x2a, 0xb2, 0xf5, 0x7a, 0xf4, 0x43, 0x18, 0xef, 0x30, + 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, + 0x7f, 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09, 0xf3, + 0x43, 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, 0x33, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x01, 0x00, 0x5e, 0x94, 0x56, 0x49, 0xdd, 0x8e, 0x2d, 0x65, + 0xf5, 0xc1, 0x36, 0x51, 0xb6, 0x03, 0xe3, 0xda, 0x9e, 0x73, 0x19, 0xf2, + 0x1f, 0x59, 0xab, 0x58, 0x7e, 0x6c, 0x26, 0x05, 0x2c, 0xfa, 0x81, 0xd7, + 0x5c, 0x23, 0x17, 0x22, 0x2c, 0x37, 0x93, 0xf7, 0x86, 0xec, 0x85, 0xe6, + 0xb0, 0xa3, 0xfd, 0x1f, 0xe2, 0x32, 0xa8, 0x45, 0x6f, 0xe1, 0xd9, 0xfb, + 0xb9, 0xaf, 0xd2, 0x70, 0xa0, 0x32, 0x42, 0x65, 0xbf, 0x84, 0xfe, 0x16, + 0x2a, 0x8f, 0x3f, 0xc5, 0xa6, 0xd6, 0xa3, 0x93, 0x7d, 0x43, 0xe9, 0x74, + 0x21, 0x91, 0x35, 0x28, 0xf4, 0x63, 0xe9, 0x2e, 0xed, 0xf7, 0xf5, 0x5c, + 0x7f, 0x4b, 0x9a, 0xb5, 0x20, 0xe9, 0x0a, 0xbd, 0xe0, 0x45, 0x10, 0x0c, + 0x14, 0x94, 0x9a, 0x5d, 0xa5, 0xe3, 0x4b, 0x91, 0xe8, 0x24, 0x9b, 0x46, + 0x40, 0x65, 0xf4, 0x22, 0x72, 0xcd, 0x99, 0xf8, 0x88, 0x11, 0xf5, 0xf3, + 0x7f, 0xe6, 0x33, 0x82, 0xe6, 0xa8, 0xc5, 0x7e, 0xfe, 0xd0, 0x08, 0xe2, + 0x25, 0x58, 0x08, 0x71, 0x68, 0xe6, 0xcd, 0xa2, 0xe6, 0x14, 0xde, 0x4e, + 0x52, 0x24, 0x2d, 0xfd, 0xe5, 0x79, 0x13, 0x53, 0xe7, 0x5e, 0x2f, 0x2d, + 0x4d, 0x1b, 0x6d, 0x40, 0x15, 0x52, 0x2b, 0xf7, 0x87, 0x89, 0x78, 0x12, + 0x81, 0x6e, 0xd9, 0x4d, 0xaa, 0x2d, 0x78, 0xd4, 0xc2, 0x2c, 0x3d, 0x08, + 0x5f, 0x87, 0x91, 0x9e, 0x1f, 0x0e, 0xb0, 0xde, 0x30, 0x52, 0x64, 0x86, + 0x89, 0xaa, 0x9d, 0x66, 0x9c, 0x0e, 0x76, 0x0c, 0x80, 0xf2, 0x74, 0xd8, + 0x2a, 0xf8, 0xb8, 0x3a, 0xce, 0xd7, 0xd6, 0x0f, 0x11, 0xbe, 0x6b, 0xab, + 0x14, 0xf5, 0xbd, 0x41, 0xa0, 0x22, 0x63, 0x89, 0xf1, 0xba, 0x0f, 0x6f, + 0x29, 0x63, 0x66, 0x2d, 0x3f, 0xac, 0x8c, 0x72, 0xc5, 0xfb, 0xc7, 0xe4, + 0xd4, 0x0f, 0xf2, 0x3b, 0x4f, 0x8c, 0x29, 0xc7, +} + +var certSet2Cert44 = []byte{ + 0x30, 0x82, 0x05, 0x86, 0x30, 0x82, 0x04, 0x6e, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x04, 0x07, 0x27, 0x9a, 0xa9, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x5a, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, + 0x45, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x09, + 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x31, 0x13, 0x30, + 0x11, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65, + 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x19, 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, + 0x72, 0x65, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, + 0x31, 0x32, 0x31, 0x39, 0x32, 0x30, 0x30, 0x37, 0x33, 0x32, 0x5a, 0x17, + 0x0d, 0x31, 0x37, 0x31, 0x32, 0x31, 0x39, 0x32, 0x30, 0x30, 0x36, 0x35, + 0x35, 0x5a, 0x30, 0x81, 0x8b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, + 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, + 0x55, 0x04, 0x08, 0x13, 0x0a, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, + 0x74, 0x6f, 0x6e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07, + 0x13, 0x07, 0x52, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, 0x1e, 0x30, + 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72, + 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, + 0x04, 0x0b, 0x13, 0x0c, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, + 0x74, 0x20, 0x49, 0x54, 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, + 0x20, 0x49, 0x54, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x53, 0x48, 0x41, 0x32, + 0x30, 0x82, 0x02, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00, + 0x30, 0x82, 0x02, 0x0a, 0x02, 0x82, 0x02, 0x01, 0x00, 0xd1, 0xe8, 0x37, + 0xa7, 0x76, 0x8a, 0x70, 0x4b, 0x19, 0xf0, 0x20, 0x37, 0x09, 0x24, 0x37, + 0x7f, 0xea, 0xfb, 0x78, 0xe6, 0x05, 0xba, 0x6a, 0xad, 0x4e, 0x27, 0x0d, + 0xfc, 0x72, 0x6a, 0xd9, 0x6c, 0x21, 0xc4, 0x64, 0x11, 0x95, 0x73, 0x10, + 0x0a, 0x5c, 0x25, 0x7b, 0x88, 0x6c, 0x94, 0x04, 0xfd, 0xc7, 0xdb, 0xae, + 0x7b, 0xdc, 0x4a, 0x08, 0xb3, 0x3e, 0x16, 0xf1, 0xd0, 0xad, 0xdb, 0x30, + 0x6d, 0xd7, 0x1a, 0x1e, 0x52, 0xb5, 0x3d, 0xf0, 0x47, 0x19, 0x03, 0xe2, + 0x7d, 0xa6, 0xbd, 0x57, 0x13, 0x3f, 0x54, 0xea, 0x3a, 0xa3, 0xb1, 0x77, + 0xfc, 0x42, 0xf0, 0x63, 0x49, 0x6a, 0x91, 0x80, 0x2e, 0x30, 0x49, 0xc0, + 0x8a, 0xeb, 0x2b, 0xaf, 0xfe, 0x3a, 0xeb, 0x07, 0x5d, 0x06, 0xf7, 0xe9, + 0xfd, 0x84, 0x0e, 0x91, 0xbd, 0x09, 0x20, 0x29, 0xe8, 0x6e, 0x5d, 0x09, + 0xce, 0x15, 0xd3, 0xe7, 0xef, 0xdb, 0x50, 0xeb, 0x44, 0xef, 0x18, 0x57, + 0xab, 0x04, 0x1d, 0xbc, 0x31, 0xf9, 0xf7, 0x7b, 0x2a, 0x13, 0xcf, 0xd1, + 0x3d, 0x51, 0xaf, 0x1b, 0xc5, 0xb5, 0x7b, 0xe7, 0xb0, 0xfc, 0x53, 0xbb, + 0x9a, 0xe7, 0x63, 0xde, 0x41, 0x33, 0xb6, 0x47, 0x24, 0x69, 0x5d, 0xb8, + 0x46, 0xa7, 0xff, 0xad, 0xab, 0xdf, 0x4f, 0x7a, 0x78, 0x25, 0x27, 0x21, + 0x26, 0x34, 0xca, 0x02, 0x6e, 0x37, 0x51, 0xf0, 0xed, 0x58, 0x1a, 0x60, + 0x94, 0xf6, 0xc4, 0x93, 0xd8, 0xdd, 0x30, 0x24, 0x25, 0xd7, 0x1c, 0xeb, + 0x19, 0x94, 0x35, 0x5d, 0x93, 0xb2, 0xae, 0xaa, 0x29, 0x83, 0x73, 0xc4, + 0x74, 0x59, 0x05, 0x52, 0x67, 0x9d, 0xda, 0x67, 0x51, 0x39, 0x05, 0x3a, + 0x36, 0xea, 0xf2, 0x1e, 0x76, 0x2b, 0x14, 0xae, 0xec, 0x3d, 0xf9, 0x14, + 0x99, 0x8b, 0x07, 0x6e, 0xbc, 0xe7, 0x0c, 0x56, 0xde, 0xac, 0xbe, 0xae, + 0xdb, 0x75, 0x32, 0x90, 0x9e, 0x63, 0xbd, 0x74, 0xbf, 0xe0, 0x0a, 0xca, + 0xf8, 0x34, 0x96, 0x67, 0x84, 0xcd, 0xd1, 0x42, 0x38, 0x78, 0xc7, 0x99, + 0xb6, 0x0c, 0xce, 0xb6, 0x0f, 0xe9, 0x1b, 0xcb, 0xf4, 0x59, 0xbe, 0x11, + 0x0e, 0xcb, 0x2c, 0x32, 0xc8, 0xfa, 0x83, 0x29, 0x64, 0x79, 0x3c, 0x8b, + 0x4b, 0xf0, 0x32, 0x74, 0x6c, 0xf3, 0x93, 0xb8, 0x96, 0x6b, 0x5d, 0x57, + 0x5a, 0x68, 0xc1, 0xcc, 0x0c, 0x79, 0x8a, 0x19, 0xde, 0xf5, 0x49, 0x02, + 0x5e, 0x08, 0x80, 0x01, 0x89, 0x0c, 0x32, 0xcd, 0xd2, 0xd6, 0x96, 0xd5, + 0x4b, 0xa0, 0xf3, 0xec, 0xbf, 0xab, 0xf4, 0x7d, 0xb3, 0xa1, 0xb9, 0x7c, + 0xda, 0x4e, 0xd7, 0xe5, 0xb7, 0xac, 0xb9, 0xf2, 0x25, 0x5f, 0x01, 0xcb, + 0x8c, 0x96, 0xa8, 0x28, 0xae, 0xc1, 0x33, 0x5a, 0xf6, 0x3f, 0x08, 0x90, + 0xdc, 0xeb, 0xff, 0x39, 0xd8, 0x26, 0xc8, 0x12, 0x9d, 0x1c, 0x9a, 0xaa, + 0xa9, 0xc0, 0x16, 0x8e, 0x86, 0xed, 0x67, 0x52, 0x96, 0x00, 0x7f, 0x0d, + 0x92, 0x3d, 0x3d, 0xd9, 0x70, 0x36, 0xe5, 0xea, 0x42, 0x6f, 0x1f, 0xae, + 0x95, 0xe5, 0x5b, 0x5d, 0xf8, 0xd0, 0x3a, 0xc7, 0xd4, 0xde, 0x77, 0x86, + 0xd0, 0xfc, 0x9e, 0x4e, 0xe2, 0xe2, 0xb8, 0xa9, 0x68, 0x37, 0x09, 0xc4, + 0x39, 0xe3, 0x85, 0xb8, 0x89, 0xf3, 0x1f, 0x6e, 0xb7, 0x6d, 0x1f, 0x4a, + 0x2f, 0x18, 0x09, 0x6f, 0xde, 0x4a, 0x01, 0x8f, 0x14, 0xc9, 0xb7, 0xa6, + 0xee, 0xa7, 0x63, 0x9f, 0x33, 0xa4, 0x54, 0x7c, 0x42, 0x83, 0x68, 0xb8, + 0xa5, 0xdf, 0xbf, 0xec, 0xb9, 0x1a, 0x5d, 0x13, 0x3b, 0xd9, 0xad, 0x68, + 0xfd, 0x20, 0x0a, 0x55, 0x91, 0x21, 0x64, 0xf9, 0xd7, 0x13, 0x01, 0xa0, + 0x08, 0x5d, 0x59, 0x89, 0x1b, 0x44, 0xaf, 0xa4, 0xac, 0xc7, 0x05, 0x10, + 0xfa, 0x41, 0x4a, 0xa8, 0xfb, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, + 0x01, 0x20, 0x30, 0x82, 0x01, 0x1c, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, + 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, + 0x01, 0x00, 0x30, 0x53, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x4c, 0x30, + 0x4a, 0x30, 0x48, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xb1, 0x3e, + 0x01, 0x00, 0x30, 0x3b, 0x30, 0x39, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x02, 0x01, 0x16, 0x2d, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x63, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x6f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2e, + 0x63, 0x66, 0x6d, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, + 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x1d, 0x25, 0x04, 0x16, 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x03, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x03, 0x02, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, + 0x16, 0x80, 0x14, 0xe5, 0x9d, 0x59, 0x30, 0x82, 0x47, 0x58, 0xcc, 0xac, + 0xfa, 0x08, 0x54, 0x36, 0x86, 0x7b, 0x3a, 0xb5, 0x04, 0x4d, 0xf0, 0x30, + 0x42, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x3b, 0x30, 0x39, 0x30, 0x37, + 0xa0, 0x35, 0xa0, 0x33, 0x86, 0x31, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x63, 0x64, 0x70, 0x31, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, + 0x2d, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, + 0x52, 0x4c, 0x2f, 0x4f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x32, + 0x30, 0x32, 0x35, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x51, 0xaf, 0x24, 0x26, 0x9c, 0xf4, + 0x68, 0x22, 0x57, 0x80, 0x26, 0x2b, 0x3b, 0x46, 0x62, 0x15, 0x7b, 0x1e, + 0xcc, 0xa5, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x76, 0x85, + 0xc5, 0x23, 0x31, 0x1f, 0xb4, 0x73, 0xea, 0xa0, 0xbc, 0xa5, 0xed, 0xdf, + 0x45, 0x43, 0x6a, 0x7f, 0x69, 0x20, 0x1b, 0x80, 0xb2, 0xfb, 0x1c, 0xdd, + 0xaa, 0x7f, 0x88, 0xd3, 0x31, 0x41, 0x36, 0xf7, 0xfb, 0xfb, 0x6b, 0xad, + 0x98, 0x8c, 0x78, 0x1f, 0x9d, 0x11, 0x67, 0x3a, 0xcd, 0x4b, 0xec, 0xa8, + 0xbc, 0x9d, 0x15, 0x19, 0xc4, 0x3b, 0x0b, 0xa7, 0x93, 0xce, 0xe8, 0xfc, + 0x9d, 0x5b, 0xe8, 0x1f, 0xcb, 0x56, 0xae, 0x76, 0x43, 0x2b, 0xc7, 0x13, + 0x51, 0x77, 0x41, 0xa8, 0x66, 0x4c, 0x5f, 0xa7, 0xd1, 0xd7, 0xaa, 0x75, + 0xc5, 0x1b, 0x29, 0x4c, 0xc9, 0xf4, 0x6d, 0xa1, 0x5e, 0xa1, 0x85, 0x93, + 0x16, 0xc2, 0xcb, 0x3b, 0xab, 0x14, 0x7d, 0x44, 0xfd, 0xda, 0x25, 0x29, + 0x86, 0x2a, 0xfe, 0x63, 0x20, 0xca, 0xd2, 0x0b, 0xc2, 0x34, 0x15, 0xbb, + 0xaf, 0x5b, 0x7f, 0x8a, 0xe0, 0xaa, 0xed, 0x45, 0xa6, 0xea, 0x79, 0xdb, + 0xd8, 0x35, 0x66, 0x54, 0x43, 0xde, 0x37, 0x33, 0xd1, 0xe4, 0xe0, 0xcd, + 0x57, 0xca, 0x71, 0xb0, 0x7d, 0xe9, 0x16, 0x77, 0x64, 0xe8, 0x59, 0x97, + 0xb9, 0xd5, 0x2e, 0xd1, 0xb4, 0x91, 0xda, 0x77, 0x71, 0xf3, 0x4a, 0x0f, + 0x48, 0xd2, 0x34, 0x99, 0x60, 0x95, 0x37, 0xac, 0x1f, 0x01, 0xcd, 0x10, + 0x9d, 0xe8, 0x2a, 0xa5, 0x20, 0xc7, 0x50, 0x9b, 0xb3, 0x6c, 0x49, 0x78, + 0x2b, 0x58, 0x92, 0x64, 0x89, 0xb8, 0x95, 0x36, 0xa8, 0x34, 0xaa, 0xf0, + 0x41, 0xd2, 0x95, 0x5a, 0x24, 0x54, 0x97, 0x4d, 0x6e, 0x05, 0xc4, 0x95, + 0xad, 0xc4, 0x7a, 0xa3, 0x39, 0xfb, 0x79, 0x06, 0x8a, 0x9b, 0xa6, 0x4f, + 0xd9, 0x22, 0xfa, 0x44, 0x4e, 0x36, 0xf3, 0xc9, 0x0f, 0xa6, 0x39, 0xe7, + 0x80, 0xb2, 0x5e, 0xbf, 0xbd, 0x39, 0xd1, 0x46, 0xe5, 0x55, 0x47, 0xdb, + 0xbc, 0x6e, +} + +var certSet2Cert45 = []byte{ + 0x30, 0x82, 0x05, 0xa3, 0x30, 0x82, 0x03, 0x8b, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x67, 0x3f, 0x33, 0x4f, 0x21, 0x53, 0x36, 0x52, 0xc3, + 0x5e, 0x15, 0xd2, 0xfd, 0xb3, 0x02, 0x0f, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x55, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, + 0x4e, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x11, + 0x57, 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x41, 0x20, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x65, 0x64, 0x31, 0x2a, 0x30, 0x28, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x21, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x57, 0x6f, 0x53, 0x69, 0x67, + 0x6e, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x39, 0x30, 0x38, 0x30, 0x38, 0x30, + 0x31, 0x30, 0x30, 0x30, 0x35, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x38, + 0x30, 0x38, 0x30, 0x31, 0x30, 0x30, 0x30, 0x35, 0x5a, 0x30, 0x4f, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, 0x4e, + 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x11, 0x57, + 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x41, 0x20, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x65, 0x64, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x1b, 0x57, 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x4f, 0x56, 0x20, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, + 0x01, 0x01, 0x00, 0xbc, 0x89, 0xbe, 0x61, 0x51, 0x53, 0xc8, 0x2b, 0x96, + 0x75, 0xb3, 0x5a, 0xd3, 0x0e, 0x34, 0xfe, 0x4a, 0xc2, 0x9f, 0xa3, 0x18, + 0x83, 0xa2, 0xac, 0xe3, 0x2e, 0x5e, 0x93, 0x79, 0x0b, 0x13, 0x49, 0x5e, + 0x93, 0xb2, 0x8f, 0x84, 0x10, 0xed, 0x91, 0x8f, 0x82, 0xba, 0xad, 0x67, + 0xdf, 0x33, 0x1b, 0xae, 0x84, 0xf2, 0x55, 0xb0, 0x5b, 0xf4, 0xb3, 0x9e, + 0xbc, 0xe6, 0x04, 0x0f, 0x1d, 0xef, 0x04, 0x5a, 0xa8, 0x0b, 0xec, 0x12, + 0x6d, 0x56, 0x19, 0x64, 0x70, 0x49, 0x0f, 0x57, 0x92, 0xf3, 0x5f, 0x21, + 0xa6, 0x4d, 0xb4, 0xd2, 0x96, 0x2b, 0x3c, 0x32, 0xb3, 0xef, 0x8f, 0x59, + 0x0b, 0x14, 0xba, 0x6e, 0xa2, 0x9e, 0x71, 0xdb, 0xf2, 0x88, 0x3f, 0x28, + 0x3b, 0xec, 0xce, 0xbe, 0x47, 0xac, 0x45, 0xc7, 0x8a, 0x9e, 0xfa, 0x61, + 0x93, 0xc5, 0x49, 0x17, 0xb6, 0x46, 0xb6, 0xf7, 0x99, 0x16, 0x8c, 0x1c, + 0x6e, 0x31, 0xae, 0x69, 0xce, 0xed, 0xc6, 0x24, 0x92, 0x70, 0xa1, 0xcb, + 0x96, 0xc3, 0x6c, 0x16, 0xd0, 0xee, 0xcc, 0x4f, 0x86, 0x33, 0xb3, 0x41, + 0xe6, 0x3d, 0x3d, 0xdb, 0x0e, 0x8c, 0x33, 0x74, 0xbb, 0xc3, 0xfc, 0x0b, + 0xa7, 0xfc, 0xd1, 0x71, 0xe2, 0xc1, 0x0c, 0xd4, 0xf7, 0xba, 0x3e, 0x80, + 0x90, 0xd4, 0x48, 0xeb, 0xa2, 0x83, 0x70, 0xd8, 0xdb, 0x30, 0x07, 0x29, + 0x89, 0xf9, 0x81, 0x21, 0x2c, 0xff, 0xeb, 0x47, 0xf6, 0x7a, 0x6d, 0x43, + 0x96, 0x67, 0x17, 0x3e, 0xf3, 0xe2, 0x73, 0x51, 0xc7, 0x76, 0x1e, 0xe9, + 0x1c, 0xa0, 0xec, 0x11, 0x1a, 0xb1, 0xcf, 0x1e, 0x2d, 0x9c, 0x55, 0xee, + 0x3b, 0xc6, 0x2d, 0xae, 0xdc, 0x66, 0x65, 0x91, 0xa2, 0x66, 0x9c, 0xac, + 0x82, 0xf1, 0xa4, 0x17, 0xb5, 0xd7, 0x43, 0x83, 0xc3, 0x88, 0xa0, 0x64, + 0xde, 0xca, 0x72, 0x45, 0xdc, 0x38, 0xfb, 0x02, 0x03, 0x01, 0x00, 0x01, + 0xa3, 0x82, 0x01, 0x73, 0x30, 0x82, 0x01, 0x6f, 0x30, 0x0e, 0x06, 0x03, + 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, + 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, 0x16, 0x30, 0x14, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x01, 0x30, 0x12, 0x06, 0x03, 0x55, + 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, + 0x02, 0x01, 0x00, 0x30, 0x30, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x29, + 0x30, 0x27, 0x30, 0x25, 0xa0, 0x23, 0xa0, 0x21, 0x86, 0x1f, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x31, 0x2e, 0x77, + 0x6f, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x61, + 0x31, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x71, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x65, 0x30, 0x63, 0x30, 0x27, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x1b, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x31, 0x2e, + 0x77, 0x6f, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, + 0x61, 0x31, 0x30, 0x38, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x30, 0x02, 0x86, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x61, + 0x69, 0x61, 0x31, 0x2e, 0x77, 0x6f, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x63, 0x61, 0x31, 0x2d, 0x63, 0x6c, 0x61, 0x73, 0x73, + 0x33, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x63, 0x65, 0x72, + 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x62, + 0x2e, 0x81, 0xd9, 0xe3, 0x42, 0x79, 0x14, 0xa3, 0xcd, 0xd9, 0x54, 0x8a, + 0x6e, 0xf8, 0xde, 0x95, 0xaa, 0x8f, 0x98, 0x30, 0x1f, 0x06, 0x03, 0x55, + 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xe1, 0x66, 0xcf, 0x0e, + 0xd1, 0xf1, 0xb3, 0x4b, 0xb7, 0x06, 0x20, 0x14, 0xfe, 0x87, 0x12, 0xd5, + 0xf6, 0xfe, 0xfb, 0x3e, 0x30, 0x45, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, + 0x3e, 0x30, 0x3c, 0x30, 0x3a, 0x06, 0x0b, 0x2b, 0x06, 0x01, 0x04, 0x01, + 0x82, 0x9b, 0x51, 0x01, 0x03, 0x02, 0x30, 0x2b, 0x30, 0x29, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1d, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x6f, 0x73, + 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x2f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x02, 0x01, 0x00, 0xab, + 0x70, 0xaa, 0x64, 0xc4, 0x0b, 0x34, 0x91, 0xb9, 0x63, 0x20, 0x5e, 0xb0, + 0x9c, 0x21, 0xff, 0x25, 0x79, 0x6c, 0x57, 0x4e, 0x56, 0x44, 0x58, 0x83, + 0xb9, 0x00, 0xce, 0x2d, 0x65, 0xa8, 0x6d, 0x95, 0x38, 0xea, 0x82, 0x2d, + 0x55, 0x18, 0x60, 0x12, 0x7e, 0x1a, 0x1d, 0x6b, 0x62, 0x34, 0x2c, 0xd9, + 0xcd, 0x17, 0x00, 0x43, 0x84, 0x3e, 0xad, 0xbc, 0xff, 0x26, 0x85, 0x1f, + 0x4a, 0xa7, 0x46, 0x13, 0xb0, 0x7d, 0x3b, 0x0b, 0xd9, 0x4b, 0x9d, 0xb0, + 0xcf, 0x8d, 0xf4, 0x05, 0xcb, 0x12, 0x29, 0xfe, 0xe1, 0x97, 0xc7, 0xb7, + 0xc7, 0xaa, 0x53, 0x7e, 0x39, 0x2d, 0x9d, 0xf6, 0xd4, 0x5e, 0xb7, 0x8c, + 0x15, 0x6a, 0x81, 0xd2, 0x37, 0x1a, 0x43, 0x0e, 0xcb, 0xe6, 0x30, 0x21, + 0x43, 0x83, 0x69, 0x0f, 0xef, 0x6b, 0xcd, 0x10, 0xf9, 0x84, 0x60, 0xcf, + 0x89, 0xe9, 0x88, 0x10, 0x01, 0xaf, 0x09, 0xf3, 0x48, 0xbb, 0x07, 0x09, + 0x75, 0x01, 0x84, 0xfa, 0xb1, 0x1e, 0x51, 0x19, 0x8f, 0xc6, 0xc9, 0x85, + 0x65, 0x16, 0x5f, 0xe0, 0x56, 0x7e, 0xb7, 0xbf, 0x40, 0xc2, 0xd4, 0xd0, + 0x05, 0x1f, 0x93, 0x63, 0xc9, 0x24, 0x08, 0x3b, 0x91, 0xb2, 0x35, 0xe1, + 0xa4, 0x8f, 0x35, 0xdb, 0x24, 0x58, 0x75, 0x39, 0xe4, 0xdd, 0x10, 0x1a, + 0xb0, 0xdf, 0x13, 0x12, 0x73, 0x9e, 0x6d, 0xe7, 0x67, 0x3c, 0xdb, 0x1c, + 0x1c, 0xdd, 0x10, 0xdd, 0xcc, 0xf4, 0x07, 0x09, 0xb9, 0x2e, 0xe5, 0x75, + 0x6d, 0x97, 0xb7, 0x60, 0x5b, 0x89, 0x70, 0x81, 0xd2, 0x26, 0xd8, 0xc6, + 0x09, 0x2b, 0xb2, 0x05, 0x7f, 0xc4, 0xb8, 0x14, 0x41, 0x1e, 0x07, 0xf0, + 0x48, 0x41, 0x63, 0xcb, 0x0c, 0xaa, 0x45, 0x7e, 0x84, 0xf9, 0x33, 0xb3, + 0x58, 0x87, 0xbc, 0xb1, 0xd6, 0xc2, 0x65, 0xc7, 0x57, 0xc6, 0x95, 0xe8, + 0x85, 0x90, 0xb0, 0x62, 0x50, 0xf5, 0xee, 0x12, 0xf1, 0xd8, 0x7e, 0x73, + 0xcb, 0xc0, 0xc3, 0xa0, 0x25, 0x17, 0x23, 0x37, 0x91, 0xba, 0x63, 0xbd, + 0x84, 0xaf, 0xf3, 0x89, 0xe0, 0x51, 0xc2, 0x73, 0x35, 0x6d, 0x63, 0x86, + 0x21, 0xf2, 0x73, 0xbd, 0xc2, 0x47, 0xe0, 0x4d, 0x7e, 0x46, 0x37, 0x4b, + 0xd0, 0xf7, 0x61, 0x2a, 0xc7, 0x94, 0x50, 0x25, 0x36, 0xe8, 0xae, 0xda, + 0x2e, 0x1f, 0xb8, 0x08, 0xb2, 0x55, 0x7c, 0x6b, 0x66, 0x43, 0x8f, 0x02, + 0x1d, 0xdd, 0xa7, 0xeb, 0x98, 0x00, 0xa7, 0x25, 0x74, 0xf5, 0x93, 0x1b, + 0x6d, 0x26, 0xbb, 0x1d, 0xe5, 0xb7, 0xfc, 0x21, 0x25, 0x26, 0xd1, 0x77, + 0x1b, 0xa8, 0x6e, 0xaa, 0xc3, 0x4b, 0x64, 0x51, 0x7f, 0x91, 0x0e, 0x41, + 0x5c, 0x19, 0x83, 0xa1, 0xa8, 0x1f, 0x94, 0x99, 0x43, 0x0f, 0x99, 0xdb, + 0x18, 0xdc, 0x21, 0x6f, 0x76, 0xd1, 0x9e, 0xea, 0xa3, 0x76, 0xe0, 0xf0, + 0x09, 0xbc, 0xb9, 0xb4, 0xf7, 0x43, 0x6c, 0x1f, 0xd3, 0x2a, 0x86, 0x6a, + 0x2f, 0xe0, 0x6c, 0xf1, 0x83, 0x39, 0xd7, 0x70, 0xdb, 0xa2, 0x91, 0xab, + 0x54, 0xbe, 0xf4, 0x47, 0x88, 0x8c, 0xf0, 0x10, 0xd2, 0xe4, 0xad, 0xeb, + 0x7e, 0xb1, 0xba, 0x08, 0x4b, 0x67, 0x04, 0xa3, 0xf2, 0xe9, 0x90, 0x2b, + 0x81, 0xe3, 0x74, 0x76, 0x3d, 0x00, 0x9d, 0xd2, 0xbb, 0xfc, 0xa5, 0xa0, + 0x15, 0x1c, 0x28, 0xdf, 0x10, 0x4f, 0x47, 0xd7, 0x33, 0x46, 0x9d, 0xb2, + 0x57, 0xd2, 0xc6, 0x1f, 0xfb, 0xe4, 0x59, 0x4a, 0x2b, 0x28, 0xa9, 0x13, + 0xdd, 0xb9, 0xe9, 0x93, 0xb4, 0x88, 0xee, 0xe2, 0x5b, 0xa0, 0x07, 0x25, + 0xfe, 0x8a, 0x2e, 0x78, 0xe4, 0xb4, 0xe1, 0xd5, 0x1d, 0xf6, 0x1a, 0x3a, + 0xe3, 0x1c, 0x01, 0x2a, 0x1e, 0xa1, 0x86, 0x54, 0x9e, 0x49, 0xdc, 0xc9, + 0x59, 0xe3, 0x0d, 0x6d, 0x5a, 0x13, 0x36, +} + +var certSet2Cert46 = []byte{ + 0x30, 0x82, 0x05, 0xe1, 0x30, 0x82, 0x04, 0xc9, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x04, 0x07, 0x27, 0xaa, 0x47, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x5a, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, + 0x45, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x09, + 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x31, 0x13, 0x30, + 0x11, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65, + 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x19, 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, + 0x72, 0x65, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, + 0x30, 0x35, 0x30, 0x37, 0x31, 0x37, 0x30, 0x34, 0x30, 0x39, 0x5a, 0x17, + 0x0d, 0x31, 0x38, 0x30, 0x35, 0x30, 0x37, 0x31, 0x37, 0x30, 0x33, 0x33, + 0x30, 0x5a, 0x30, 0x81, 0x8b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, + 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, + 0x55, 0x04, 0x08, 0x13, 0x0a, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, + 0x74, 0x6f, 0x6e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07, + 0x13, 0x07, 0x52, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, 0x1e, 0x30, + 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72, + 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, + 0x04, 0x0b, 0x13, 0x0c, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, + 0x74, 0x20, 0x49, 0x54, 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, + 0x20, 0x49, 0x54, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x53, 0x48, 0x41, 0x32, + 0x30, 0x82, 0x02, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00, + 0x30, 0x82, 0x02, 0x0a, 0x02, 0x82, 0x02, 0x01, 0x00, 0xd1, 0xe8, 0x37, + 0xa7, 0x76, 0x8a, 0x70, 0x4b, 0x19, 0xf0, 0x20, 0x37, 0x09, 0x24, 0x37, + 0x7f, 0xea, 0xfb, 0x78, 0xe6, 0x05, 0xba, 0x6a, 0xad, 0x4e, 0x27, 0x0d, + 0xfc, 0x72, 0x6a, 0xd9, 0x6c, 0x21, 0xc4, 0x64, 0x11, 0x95, 0x73, 0x10, + 0x0a, 0x5c, 0x25, 0x7b, 0x88, 0x6c, 0x94, 0x04, 0xfd, 0xc7, 0xdb, 0xae, + 0x7b, 0xdc, 0x4a, 0x08, 0xb3, 0x3e, 0x16, 0xf1, 0xd0, 0xad, 0xdb, 0x30, + 0x6d, 0xd7, 0x1a, 0x1e, 0x52, 0xb5, 0x3d, 0xf0, 0x47, 0x19, 0x03, 0xe2, + 0x7d, 0xa6, 0xbd, 0x57, 0x13, 0x3f, 0x54, 0xea, 0x3a, 0xa3, 0xb1, 0x77, + 0xfc, 0x42, 0xf0, 0x63, 0x49, 0x6a, 0x91, 0x80, 0x2e, 0x30, 0x49, 0xc0, + 0x8a, 0xeb, 0x2b, 0xaf, 0xfe, 0x3a, 0xeb, 0x07, 0x5d, 0x06, 0xf7, 0xe9, + 0xfd, 0x84, 0x0e, 0x91, 0xbd, 0x09, 0x20, 0x29, 0xe8, 0x6e, 0x5d, 0x09, + 0xce, 0x15, 0xd3, 0xe7, 0xef, 0xdb, 0x50, 0xeb, 0x44, 0xef, 0x18, 0x57, + 0xab, 0x04, 0x1d, 0xbc, 0x31, 0xf9, 0xf7, 0x7b, 0x2a, 0x13, 0xcf, 0xd1, + 0x3d, 0x51, 0xaf, 0x1b, 0xc5, 0xb5, 0x7b, 0xe7, 0xb0, 0xfc, 0x53, 0xbb, + 0x9a, 0xe7, 0x63, 0xde, 0x41, 0x33, 0xb6, 0x47, 0x24, 0x69, 0x5d, 0xb8, + 0x46, 0xa7, 0xff, 0xad, 0xab, 0xdf, 0x4f, 0x7a, 0x78, 0x25, 0x27, 0x21, + 0x26, 0x34, 0xca, 0x02, 0x6e, 0x37, 0x51, 0xf0, 0xed, 0x58, 0x1a, 0x60, + 0x94, 0xf6, 0xc4, 0x93, 0xd8, 0xdd, 0x30, 0x24, 0x25, 0xd7, 0x1c, 0xeb, + 0x19, 0x94, 0x35, 0x5d, 0x93, 0xb2, 0xae, 0xaa, 0x29, 0x83, 0x73, 0xc4, + 0x74, 0x59, 0x05, 0x52, 0x67, 0x9d, 0xda, 0x67, 0x51, 0x39, 0x05, 0x3a, + 0x36, 0xea, 0xf2, 0x1e, 0x76, 0x2b, 0x14, 0xae, 0xec, 0x3d, 0xf9, 0x14, + 0x99, 0x8b, 0x07, 0x6e, 0xbc, 0xe7, 0x0c, 0x56, 0xde, 0xac, 0xbe, 0xae, + 0xdb, 0x75, 0x32, 0x90, 0x9e, 0x63, 0xbd, 0x74, 0xbf, 0xe0, 0x0a, 0xca, + 0xf8, 0x34, 0x96, 0x67, 0x84, 0xcd, 0xd1, 0x42, 0x38, 0x78, 0xc7, 0x99, + 0xb6, 0x0c, 0xce, 0xb6, 0x0f, 0xe9, 0x1b, 0xcb, 0xf4, 0x59, 0xbe, 0x11, + 0x0e, 0xcb, 0x2c, 0x32, 0xc8, 0xfa, 0x83, 0x29, 0x64, 0x79, 0x3c, 0x8b, + 0x4b, 0xf0, 0x32, 0x74, 0x6c, 0xf3, 0x93, 0xb8, 0x96, 0x6b, 0x5d, 0x57, + 0x5a, 0x68, 0xc1, 0xcc, 0x0c, 0x79, 0x8a, 0x19, 0xde, 0xf5, 0x49, 0x02, + 0x5e, 0x08, 0x80, 0x01, 0x89, 0x0c, 0x32, 0xcd, 0xd2, 0xd6, 0x96, 0xd5, + 0x4b, 0xa0, 0xf3, 0xec, 0xbf, 0xab, 0xf4, 0x7d, 0xb3, 0xa1, 0xb9, 0x7c, + 0xda, 0x4e, 0xd7, 0xe5, 0xb7, 0xac, 0xb9, 0xf2, 0x25, 0x5f, 0x01, 0xcb, + 0x8c, 0x96, 0xa8, 0x28, 0xae, 0xc1, 0x33, 0x5a, 0xf6, 0x3f, 0x08, 0x90, + 0xdc, 0xeb, 0xff, 0x39, 0xd8, 0x26, 0xc8, 0x12, 0x9d, 0x1c, 0x9a, 0xaa, + 0xa9, 0xc0, 0x16, 0x8e, 0x86, 0xed, 0x67, 0x52, 0x96, 0x00, 0x7f, 0x0d, + 0x92, 0x3d, 0x3d, 0xd9, 0x70, 0x36, 0xe5, 0xea, 0x42, 0x6f, 0x1f, 0xae, + 0x95, 0xe5, 0x5b, 0x5d, 0xf8, 0xd0, 0x3a, 0xc7, 0xd4, 0xde, 0x77, 0x86, + 0xd0, 0xfc, 0x9e, 0x4e, 0xe2, 0xe2, 0xb8, 0xa9, 0x68, 0x37, 0x09, 0xc4, + 0x39, 0xe3, 0x85, 0xb8, 0x89, 0xf3, 0x1f, 0x6e, 0xb7, 0x6d, 0x1f, 0x4a, + 0x2f, 0x18, 0x09, 0x6f, 0xde, 0x4a, 0x01, 0x8f, 0x14, 0xc9, 0xb7, 0xa6, + 0xee, 0xa7, 0x63, 0x9f, 0x33, 0xa4, 0x54, 0x7c, 0x42, 0x83, 0x68, 0xb8, + 0xa5, 0xdf, 0xbf, 0xec, 0xb9, 0x1a, 0x5d, 0x13, 0x3b, 0xd9, 0xad, 0x68, + 0xfd, 0x20, 0x0a, 0x55, 0x91, 0x21, 0x64, 0xf9, 0xd7, 0x13, 0x01, 0xa0, + 0x08, 0x5d, 0x59, 0x89, 0x1b, 0x44, 0xaf, 0xa4, 0xac, 0xc7, 0x05, 0x10, + 0xfa, 0x41, 0x4a, 0xa8, 0xfb, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, + 0x01, 0x7b, 0x30, 0x82, 0x01, 0x77, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, + 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, + 0x01, 0x00, 0x30, 0x60, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x59, 0x30, + 0x57, 0x30, 0x48, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xb1, 0x3e, + 0x01, 0x00, 0x30, 0x3b, 0x30, 0x39, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x02, 0x01, 0x16, 0x2d, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x63, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x6f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2e, + 0x63, 0x66, 0x6d, 0x30, 0x0b, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, + 0x82, 0x37, 0x2a, 0x01, 0x30, 0x42, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x01, 0x01, 0x04, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x26, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x6f, 0x6d, + 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, + 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x72, 0x6f, 0x6f, 0x74, + 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, + 0x03, 0x02, 0x01, 0x86, 0x30, 0x27, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, + 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, + 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x09, 0x30, 0x1f, 0x06, + 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xe5, 0x9d, + 0x59, 0x30, 0x82, 0x47, 0x58, 0xcc, 0xac, 0xfa, 0x08, 0x54, 0x36, 0x86, + 0x7b, 0x3a, 0xb5, 0x04, 0x4d, 0xf0, 0x30, 0x42, 0x06, 0x03, 0x55, 0x1d, + 0x1f, 0x04, 0x3b, 0x30, 0x39, 0x30, 0x37, 0xa0, 0x35, 0xa0, 0x33, 0x86, + 0x31, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x64, 0x70, 0x31, + 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x74, 0x72, 0x75, 0x73, + 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x52, 0x4c, 0x2f, 0x4f, 0x6d, + 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x32, 0x30, 0x32, 0x35, 0x2e, 0x63, + 0x72, 0x6c, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, + 0x14, 0x51, 0xaf, 0x24, 0x26, 0x9c, 0xf4, 0x68, 0x22, 0x57, 0x80, 0x26, + 0x2b, 0x3b, 0x46, 0x62, 0x15, 0x7b, 0x1e, 0xcc, 0xa5, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, + 0x03, 0x82, 0x01, 0x01, 0x00, 0x69, 0x62, 0xf6, 0x84, 0x91, 0x00, 0xc4, + 0x6f, 0x82, 0x7b, 0x24, 0xe1, 0x42, 0xa2, 0xa5, 0x8b, 0x82, 0x5c, 0xa7, + 0xc5, 0x44, 0xcb, 0xe7, 0x52, 0x76, 0x63, 0xd3, 0x76, 0x9e, 0x78, 0xe2, + 0x69, 0x35, 0xb1, 0x38, 0xba, 0xb0, 0x96, 0xc6, 0x1f, 0xac, 0x7b, 0xc6, + 0xb2, 0x65, 0x77, 0x8b, 0x7d, 0x8d, 0xae, 0x64, 0xb9, 0xa5, 0x8c, 0x17, + 0xca, 0x58, 0x65, 0xc3, 0xad, 0x82, 0xf5, 0xc5, 0xa2, 0xf5, 0x01, 0x13, + 0x93, 0xc6, 0x7e, 0x44, 0xe5, 0xc4, 0x61, 0xfa, 0x03, 0xb6, 0x56, 0xc1, + 0x72, 0xe1, 0xc8, 0x28, 0xc5, 0x69, 0x21, 0x8f, 0xac, 0x6e, 0xfd, 0x7f, + 0x43, 0x83, 0x36, 0xb8, 0xc0, 0xd6, 0xa0, 0x28, 0xfe, 0x1a, 0x45, 0xbe, + 0xfd, 0x93, 0x8c, 0x8d, 0xa4, 0x64, 0x79, 0x1f, 0x14, 0xdb, 0xa1, 0x9f, + 0x21, 0xdc, 0xc0, 0x4e, 0x7b, 0x17, 0x22, 0x17, 0xb1, 0xb6, 0x3c, 0xd3, + 0x9b, 0xe2, 0x0a, 0xa3, 0x7e, 0x99, 0xb0, 0xc1, 0xac, 0xd8, 0xf4, 0x86, + 0xdf, 0x3c, 0xda, 0x7d, 0x14, 0x9c, 0x40, 0xc1, 0x7c, 0xd2, 0x18, 0x6f, + 0xf1, 0x4f, 0x26, 0x45, 0x09, 0x95, 0x94, 0x5c, 0xda, 0xd0, 0x98, 0xf8, + 0xf4, 0x4c, 0x82, 0x96, 0x10, 0xde, 0xac, 0x30, 0xcb, 0x2b, 0xae, 0xf9, + 0x92, 0xea, 0xbf, 0x79, 0x03, 0xfc, 0x1e, 0x3f, 0xac, 0x09, 0xa4, 0x3f, + 0x65, 0xfd, 0x91, 0x4f, 0x96, 0x24, 0xa7, 0xce, 0xb4, 0x4e, 0x6a, 0x96, + 0x29, 0x17, 0xae, 0xc0, 0xa8, 0xdf, 0x17, 0x22, 0xf4, 0x17, 0xe3, 0xdc, + 0x1c, 0x39, 0x06, 0x56, 0x10, 0xea, 0xea, 0xb5, 0x74, 0x17, 0x3c, 0x4e, + 0xdd, 0x7e, 0x91, 0x0a, 0xa8, 0x0b, 0x78, 0x07, 0xa7, 0x31, 0x44, 0x08, + 0x31, 0xab, 0x18, 0x84, 0x0f, 0x12, 0x9c, 0xe7, 0xde, 0x84, 0x2c, 0xe9, + 0x6d, 0x93, 0x45, 0xbf, 0xa8, 0xc1, 0x3f, 0x34, 0xdc, +} + +var certSet2Cert47 = []byte{ + 0x30, 0x82, 0x05, 0xec, 0x30, 0x82, 0x04, 0xd4, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x6e, 0xcc, 0x7a, 0xa5, 0xa7, 0x03, 0x20, 0x09, 0xb8, + 0xce, 0xbc, 0xf4, 0xe9, 0x52, 0xd4, 0x91, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81, + 0xca, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, + 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x31, 0x3a, 0x30, 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28, + 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69, + 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, + 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, + 0x31, 0x45, 0x30, 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56, + 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30, + 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x32, 0x30, 0x38, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x30, 0x32, 0x30, 0x37, + 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x81, 0xb5, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65, + 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, 0x56, + 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x3b, 0x30, + 0x39, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x32, 0x54, 0x65, 0x72, 0x6d, + 0x73, 0x20, 0x6f, 0x66, 0x20, 0x75, 0x73, 0x65, 0x20, 0x61, 0x74, 0x20, + 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, + 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x72, 0x70, 0x61, 0x20, 0x28, 0x63, 0x29, 0x31, 0x30, 0x31, 0x2f, + 0x30, 0x2d, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x26, 0x56, 0x65, 0x72, + 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, + 0x33, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, + 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, + 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xb1, 0x87, 0x84, 0x1f, + 0xc2, 0x0c, 0x45, 0xf5, 0xbc, 0xab, 0x25, 0x97, 0xa7, 0xad, 0xa2, 0x3e, + 0x9c, 0xba, 0xf6, 0xc1, 0x39, 0xb8, 0x8b, 0xca, 0xc2, 0xac, 0x56, 0xc6, + 0xe5, 0xbb, 0x65, 0x8e, 0x44, 0x4f, 0x4d, 0xce, 0x6f, 0xed, 0x09, 0x4a, + 0xd4, 0xaf, 0x4e, 0x10, 0x9c, 0x68, 0x8b, 0x2e, 0x95, 0x7b, 0x89, 0x9b, + 0x13, 0xca, 0xe2, 0x34, 0x34, 0xc1, 0xf3, 0x5b, 0xf3, 0x49, 0x7b, 0x62, + 0x83, 0x48, 0x81, 0x74, 0xd1, 0x88, 0x78, 0x6c, 0x02, 0x53, 0xf9, 0xbc, + 0x7f, 0x43, 0x26, 0x57, 0x58, 0x33, 0x83, 0x3b, 0x33, 0x0a, 0x17, 0xb0, + 0xd0, 0x4e, 0x91, 0x24, 0xad, 0x86, 0x7d, 0x64, 0x12, 0xdc, 0x74, 0x4a, + 0x34, 0xa1, 0x1d, 0x0a, 0xea, 0x96, 0x1d, 0x0b, 0x15, 0xfc, 0xa3, 0x4b, + 0x3b, 0xce, 0x63, 0x88, 0xd0, 0xf8, 0x2d, 0x0c, 0x94, 0x86, 0x10, 0xca, + 0xb6, 0x9a, 0x3d, 0xca, 0xeb, 0x37, 0x9c, 0x00, 0x48, 0x35, 0x86, 0x29, + 0x50, 0x78, 0xe8, 0x45, 0x63, 0xcd, 0x19, 0x41, 0x4f, 0xf5, 0x95, 0xec, + 0x7b, 0x98, 0xd4, 0xc4, 0x71, 0xb3, 0x50, 0xbe, 0x28, 0xb3, 0x8f, 0xa0, + 0xb9, 0x53, 0x9c, 0xf5, 0xca, 0x2c, 0x23, 0xa9, 0xfd, 0x14, 0x06, 0xe8, + 0x18, 0xb4, 0x9a, 0xe8, 0x3c, 0x6e, 0x81, 0xfd, 0xe4, 0xcd, 0x35, 0x36, + 0xb3, 0x51, 0xd3, 0x69, 0xec, 0x12, 0xba, 0x56, 0x6e, 0x6f, 0x9b, 0x57, + 0xc5, 0x8b, 0x14, 0xe7, 0x0e, 0xc7, 0x9c, 0xed, 0x4a, 0x54, 0x6a, 0xc9, + 0x4d, 0xc5, 0xbf, 0x11, 0xb1, 0xae, 0x1c, 0x67, 0x81, 0xcb, 0x44, 0x55, + 0x33, 0x99, 0x7f, 0x24, 0x9b, 0x3f, 0x53, 0x45, 0x7f, 0x86, 0x1a, 0xf3, + 0x3c, 0xfa, 0x6d, 0x7f, 0x81, 0xf5, 0xb8, 0x4a, 0xd3, 0xf5, 0x85, 0x37, + 0x1c, 0xb5, 0xa6, 0xd0, 0x09, 0xe4, 0x18, 0x7b, 0x38, 0x4e, 0xfa, 0x0f, + 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0xdf, 0x30, 0x82, 0x01, + 0xdb, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, + 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, + 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x12, 0x06, 0x03, 0x55, + 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, + 0x02, 0x01, 0x00, 0x30, 0x70, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x69, + 0x30, 0x67, 0x30, 0x65, 0x06, 0x0b, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, + 0x45, 0x01, 0x07, 0x17, 0x03, 0x30, 0x56, 0x30, 0x28, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, 0x74, + 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, 0x72, + 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, + 0x73, 0x30, 0x2a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, + 0x02, 0x30, 0x1e, 0x1a, 0x1c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, + 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, + 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x70, 0x61, 0x30, 0x34, 0x06, + 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2d, 0x30, 0x2b, 0x30, 0x29, 0xa0, 0x27, + 0xa0, 0x25, 0x86, 0x23, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, + 0x72, 0x6c, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63, 0x61, 0x33, 0x2d, 0x67, 0x35, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, + 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x6d, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x0c, 0x04, 0x61, 0x30, 0x5f, 0xa1, + 0x5d, 0xa0, 0x5b, 0x30, 0x59, 0x30, 0x57, 0x30, 0x55, 0x16, 0x09, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0x30, 0x21, 0x30, 0x1f, + 0x30, 0x07, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x04, 0x14, 0x8f, + 0xe5, 0xd3, 0x1a, 0x86, 0xac, 0x8d, 0x8e, 0x6b, 0xc3, 0xcf, 0x80, 0x6a, + 0xd4, 0x48, 0x18, 0x2c, 0x7b, 0x19, 0x2e, 0x30, 0x25, 0x16, 0x23, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x76, + 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x76, 0x73, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x67, 0x69, 0x66, 0x30, 0x28, + 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x21, 0x30, 0x1f, 0xa4, 0x1d, 0x30, + 0x1b, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x10, + 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x50, 0x4b, 0x49, + 0x2d, 0x32, 0x2d, 0x36, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, + 0x16, 0x04, 0x14, 0x0d, 0x44, 0x5c, 0x16, 0x53, 0x44, 0xc1, 0x82, 0x7e, + 0x1d, 0x20, 0xab, 0x25, 0xf4, 0x01, 0x63, 0xd8, 0xbe, 0x79, 0xa5, 0x30, + 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, + 0x7f, 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09, 0xf3, + 0x43, 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, 0x33, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x01, 0x00, 0x0c, 0x83, 0x24, 0xef, 0xdd, 0xc3, 0x0c, 0xd9, + 0x58, 0x9c, 0xfe, 0x36, 0xb6, 0xeb, 0x8a, 0x80, 0x4b, 0xd1, 0xa3, 0xf7, + 0x9d, 0xf3, 0xcc, 0x53, 0xef, 0x82, 0x9e, 0xa3, 0xa1, 0xe6, 0x97, 0xc1, + 0x58, 0x9d, 0x75, 0x6c, 0xe0, 0x1d, 0x1b, 0x4c, 0xfa, 0xd1, 0xc1, 0x2d, + 0x05, 0xc0, 0xea, 0x6e, 0xb2, 0x22, 0x70, 0x55, 0xd9, 0x20, 0x33, 0x40, + 0x33, 0x07, 0xc2, 0x65, 0x83, 0xfa, 0x8f, 0x43, 0x37, 0x9b, 0xea, 0x0e, + 0x9a, 0x6c, 0x70, 0xee, 0xf6, 0x9c, 0x80, 0x3b, 0xd9, 0x37, 0xf4, 0x7a, + 0x6d, 0xec, 0xd0, 0x18, 0x7d, 0x49, 0x4a, 0xca, 0x99, 0xc7, 0x19, 0x28, + 0xa2, 0xbe, 0xd8, 0x77, 0x24, 0xf7, 0x85, 0x26, 0x86, 0x6d, 0x87, 0x05, + 0x40, 0x41, 0x67, 0xd1, 0x27, 0x3a, 0xed, 0xdc, 0x48, 0x1d, 0x22, 0xcd, + 0x0b, 0x0b, 0x8b, 0xbc, 0xf4, 0xb1, 0x7b, 0xfd, 0xb4, 0x99, 0xa8, 0xe9, + 0x76, 0x2a, 0xe1, 0x1a, 0x2d, 0x87, 0x6e, 0x74, 0xd3, 0x88, 0xdd, 0x1e, + 0x22, 0xc6, 0xdf, 0x16, 0xb6, 0x2b, 0x82, 0x14, 0x0a, 0x94, 0x5c, 0xf2, + 0x50, 0xec, 0xaf, 0xce, 0xff, 0x62, 0x37, 0x0d, 0xad, 0x65, 0xd3, 0x06, + 0x41, 0x53, 0xed, 0x02, 0x14, 0xc8, 0xb5, 0x58, 0x28, 0xa1, 0xac, 0xe0, + 0x5b, 0xec, 0xb3, 0x7f, 0x95, 0x4a, 0xfb, 0x03, 0xc8, 0xad, 0x26, 0xdb, + 0xe6, 0x66, 0x78, 0x12, 0x4a, 0xd9, 0x9f, 0x42, 0xfb, 0xe1, 0x98, 0xe6, + 0x42, 0x83, 0x9b, 0x8f, 0x8f, 0x67, 0x24, 0xe8, 0x61, 0x19, 0xb5, 0xdd, + 0xcd, 0xb5, 0x0b, 0x26, 0x05, 0x8e, 0xc3, 0x6e, 0xc4, 0xc8, 0x75, 0xb8, + 0x46, 0xcf, 0xe2, 0x18, 0x06, 0x5e, 0xa9, 0xae, 0xa8, 0x81, 0x9a, 0x47, + 0x16, 0xde, 0x0c, 0x28, 0x6c, 0x25, 0x27, 0xb9, 0xde, 0xb7, 0x84, 0x58, + 0xc6, 0x1f, 0x38, 0x1e, 0xa4, 0xc4, 0xcb, 0x66, +} + +var certSet2Cert48 = []byte{ + 0x30, 0x82, 0x06, 0x1e, 0x30, 0x82, 0x05, 0x06, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x2c, 0x48, 0xdd, 0x93, 0x0d, 0xf5, 0x59, 0x8e, 0xf9, + 0x3c, 0x99, 0x54, 0x7a, 0x60, 0xed, 0x43, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81, + 0xca, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, + 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x31, 0x3a, 0x30, 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28, + 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69, + 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, + 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, + 0x31, 0x45, 0x30, 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56, + 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30, + 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x31, 0x31, 0x30, 0x38, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x31, 0x36, 0x31, 0x31, 0x30, 0x37, + 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x81, 0xbe, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65, + 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, 0x56, + 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x3b, 0x30, + 0x39, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x32, 0x54, 0x65, 0x72, 0x6d, + 0x73, 0x20, 0x6f, 0x66, 0x20, 0x75, 0x73, 0x65, 0x20, 0x61, 0x74, 0x20, + 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, + 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x72, 0x70, 0x61, 0x20, 0x28, 0x63, 0x29, 0x30, 0x36, 0x31, 0x38, + 0x30, 0x36, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2f, 0x56, 0x65, 0x72, + 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, + 0x33, 0x20, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x20, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x53, 0x53, + 0x4c, 0x20, 0x53, 0x47, 0x43, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xbd, 0x56, 0x88, 0xba, 0x88, 0x34, 0x64, + 0x64, 0xcf, 0xcd, 0xca, 0xb0, 0xee, 0xe7, 0x19, 0x73, 0xc5, 0x72, 0xd9, + 0xbb, 0x45, 0xbc, 0xb5, 0xa8, 0xff, 0x83, 0xbe, 0x1c, 0x03, 0xdb, 0xed, + 0x89, 0xb7, 0x2e, 0x10, 0x1a, 0x25, 0xbc, 0x55, 0xca, 0x41, 0xa1, 0x9f, + 0x0b, 0xcf, 0x19, 0x5e, 0x70, 0xb9, 0x5e, 0x39, 0x4b, 0x9e, 0x31, 0x1c, + 0x5f, 0x87, 0xae, 0x2a, 0xaa, 0xa8, 0x2b, 0xa2, 0x1b, 0x3b, 0x10, 0x23, + 0x5f, 0x13, 0xb1, 0xdd, 0x08, 0x8c, 0x4e, 0x14, 0xda, 0x83, 0x81, 0xe3, + 0xb5, 0x8c, 0xe3, 0x68, 0xed, 0x24, 0x67, 0xce, 0x56, 0xb6, 0xac, 0x9b, + 0x73, 0x96, 0x44, 0xdb, 0x8a, 0x8c, 0xb3, 0xd6, 0xf0, 0x71, 0x93, 0x8e, + 0xdb, 0x71, 0x54, 0x4a, 0xeb, 0x73, 0x59, 0x6a, 0x8f, 0x70, 0x51, 0x2c, + 0x03, 0x9f, 0x97, 0xd1, 0xcc, 0x11, 0x7a, 0xbc, 0x62, 0x0d, 0x95, 0x2a, + 0xc9, 0x1c, 0x75, 0x57, 0xe9, 0xf5, 0xc7, 0xea, 0xba, 0x84, 0x35, 0xcb, + 0xc7, 0x85, 0x5a, 0x7e, 0xe4, 0x4d, 0xe1, 0x11, 0x97, 0x7d, 0x0e, 0x20, + 0x34, 0x45, 0xdb, 0xf1, 0xa2, 0x09, 0xeb, 0xeb, 0x3d, 0x9e, 0xb8, 0x96, + 0x43, 0x5e, 0x34, 0x4b, 0x08, 0x25, 0x1e, 0x43, 0x1a, 0xa2, 0xd9, 0xb7, + 0x8a, 0x01, 0x34, 0x3d, 0xc3, 0xf8, 0xe5, 0xaf, 0x4f, 0x8c, 0xff, 0xcd, + 0x65, 0xf0, 0x23, 0x4e, 0xc5, 0x97, 0xb3, 0x5c, 0xda, 0x90, 0x1c, 0x82, + 0x85, 0x0d, 0x06, 0x0d, 0xc1, 0x22, 0xb6, 0x7b, 0x28, 0xa4, 0x03, 0xc3, + 0x4c, 0x53, 0xd1, 0x58, 0xbc, 0x72, 0xbc, 0x08, 0x39, 0xfc, 0xa0, 0x76, + 0xa8, 0xa8, 0xe9, 0x4b, 0x6e, 0x88, 0x3d, 0xe3, 0xb3, 0x31, 0x25, 0x8c, + 0x73, 0x29, 0x48, 0x0e, 0x32, 0x79, 0x06, 0xed, 0x3d, 0x43, 0xf4, 0xf6, + 0xe4, 0xe9, 0xfc, 0x7d, 0xbe, 0x8e, 0x08, 0xd5, 0x1f, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x82, 0x02, 0x08, 0x30, 0x82, 0x02, 0x04, 0x30, 0x1d, + 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x4e, 0x43, 0xc8, + 0x1d, 0x76, 0xef, 0x37, 0x53, 0x7a, 0x4f, 0xf2, 0x58, 0x6f, 0x94, 0xf3, + 0x38, 0xe2, 0xd5, 0xbd, 0xdf, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, + 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, + 0x00, 0x30, 0x3d, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x36, 0x30, 0x34, + 0x30, 0x32, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x2a, 0x30, 0x28, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, + 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, + 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x63, 0x70, 0x73, 0x30, 0x3d, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, + 0x36, 0x30, 0x34, 0x30, 0x32, 0xa0, 0x30, 0xa0, 0x2e, 0x86, 0x2c, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x45, 0x56, 0x53, 0x65, 0x63, 0x75, + 0x72, 0x65, 0x2d, 0x63, 0x72, 0x6c, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, + 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63, 0x61, 0x33, + 0x2d, 0x67, 0x35, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, + 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, + 0x11, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x42, 0x01, 0x01, + 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x6d, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x01, 0x0c, 0x04, 0x61, 0x30, 0x5f, 0xa1, 0x5d, + 0xa0, 0x5b, 0x30, 0x59, 0x30, 0x57, 0x30, 0x55, 0x16, 0x09, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0x30, 0x21, 0x30, 0x1f, 0x30, + 0x07, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x04, 0x14, 0x8f, 0xe5, + 0xd3, 0x1a, 0x86, 0xac, 0x8d, 0x8e, 0x6b, 0xc3, 0xcf, 0x80, 0x6a, 0xd4, + 0x48, 0x18, 0x2c, 0x7b, 0x19, 0x2e, 0x30, 0x25, 0x16, 0x23, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x76, 0x65, + 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x76, + 0x73, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x67, 0x69, 0x66, 0x30, 0x29, 0x06, + 0x03, 0x55, 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, + 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x43, + 0x6c, 0x61, 0x73, 0x73, 0x33, 0x43, 0x41, 0x32, 0x30, 0x34, 0x38, 0x2d, + 0x31, 0x2d, 0x34, 0x38, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, + 0x18, 0x30, 0x16, 0x80, 0x14, 0x7f, 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, + 0xbb, 0xf0, 0x30, 0x09, 0xf3, 0x43, 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, + 0x33, 0x30, 0x3d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, + 0x01, 0x04, 0x31, 0x30, 0x2f, 0x30, 0x2d, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x45, 0x56, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x2d, 0x6f, + 0x63, 0x73, 0x70, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, + 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x34, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, + 0x2d, 0x30, 0x2b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x42, + 0x04, 0x01, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, + 0x08, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x01, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x27, 0x74, 0xa6, 0x34, 0xea, 0x1d, + 0x9d, 0xe1, 0x53, 0xd6, 0x1c, 0x9d, 0x0c, 0xa7, 0x5b, 0x4c, 0xa9, 0x67, + 0xf2, 0xf0, 0x32, 0xb7, 0x01, 0x0f, 0xfb, 0x42, 0x18, 0x38, 0xde, 0xe4, + 0xee, 0x49, 0xc8, 0x13, 0xc9, 0x0b, 0xec, 0x04, 0xc3, 0x40, 0x71, 0x18, + 0x72, 0x76, 0x43, 0x02, 0x23, 0x5d, 0xab, 0x7b, 0xc8, 0x48, 0x14, 0x1a, + 0xc8, 0x7b, 0x1d, 0xfc, 0xf6, 0x0a, 0x9f, 0x36, 0xa1, 0xd2, 0x09, 0x73, + 0x71, 0x66, 0x96, 0x75, 0x51, 0x34, 0xbf, 0x99, 0x30, 0x51, 0x67, 0x9d, + 0x54, 0xb7, 0x26, 0x45, 0xac, 0x73, 0x08, 0x23, 0x86, 0x26, 0x99, 0x71, + 0xf4, 0x8e, 0xd7, 0xea, 0x39, 0x9b, 0x06, 0x09, 0x23, 0xbf, 0x62, 0xdd, + 0xa8, 0xc4, 0xb6, 0x7d, 0xa4, 0x89, 0x07, 0x3e, 0xf3, 0x6d, 0xae, 0x40, + 0x59, 0x50, 0x79, 0x97, 0x37, 0x3d, 0x32, 0x78, 0x7d, 0xb2, 0x63, 0x4b, + 0xf9, 0xea, 0x08, 0x69, 0x0e, 0x13, 0xed, 0xe8, 0xcf, 0xbb, 0xac, 0x05, + 0x86, 0xca, 0x22, 0xcf, 0x88, 0x62, 0x5d, 0x3c, 0x22, 0x49, 0xd8, 0x63, + 0xd5, 0x24, 0xa6, 0xbd, 0xef, 0x5c, 0xe3, 0xcc, 0x20, 0x3b, 0x22, 0xea, + 0xfc, 0x44, 0xc6, 0xa8, 0xe5, 0x1f, 0xe1, 0x86, 0xcd, 0x0c, 0x4d, 0x8f, + 0x93, 0x53, 0xd9, 0x7f, 0xee, 0xa1, 0x08, 0xa7, 0xb3, 0x30, 0x96, 0x49, + 0x70, 0x6e, 0xa3, 0x6c, 0x3d, 0xd0, 0x63, 0xef, 0x25, 0x66, 0x63, 0xcc, + 0xaa, 0xb7, 0x18, 0x17, 0x4e, 0xea, 0x70, 0x76, 0xf6, 0xba, 0x42, 0xa6, + 0x80, 0x37, 0x09, 0x4e, 0x9f, 0x66, 0x88, 0x2e, 0x6b, 0x33, 0x66, 0xc8, + 0xc0, 0x71, 0xa4, 0x41, 0xeb, 0x5a, 0xe3, 0xfc, 0x14, 0x2e, 0x4b, 0x88, + 0xfd, 0xae, 0x6e, 0x5b, 0x65, 0xe9, 0x27, 0xe4, 0xbf, 0xe4, 0xb0, 0x23, + 0xc1, 0xb2, 0x7d, 0x5b, 0x62, 0x25, 0xd7, 0x3e, 0x10, 0xd4, +} + +var certSet2Cert49 = []byte{ + 0x30, 0x82, 0x06, 0x29, 0x30, 0x82, 0x05, 0x11, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x64, 0x1b, 0xe8, 0x20, 0xce, 0x02, 0x08, 0x13, 0xf3, + 0x2d, 0x4d, 0x2d, 0x95, 0xd6, 0x7e, 0x67, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81, + 0xca, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, + 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x31, 0x3a, 0x30, 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28, + 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69, + 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, + 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, + 0x31, 0x45, 0x30, 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56, + 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30, + 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x32, 0x30, 0x38, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x30, 0x32, 0x30, 0x37, + 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x81, 0xbc, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65, + 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, 0x56, + 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x3b, 0x30, + 0x39, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x32, 0x54, 0x65, 0x72, 0x6d, + 0x73, 0x20, 0x6f, 0x66, 0x20, 0x75, 0x73, 0x65, 0x20, 0x61, 0x74, 0x20, + 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, + 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x72, 0x70, 0x61, 0x20, 0x28, 0x63, 0x29, 0x31, 0x30, 0x31, 0x36, + 0x30, 0x34, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2d, 0x56, 0x65, 0x72, + 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, + 0x33, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, + 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, + 0x01, 0x01, 0x00, 0x99, 0xd6, 0x9c, 0x62, 0xf0, 0x15, 0xf4, 0x81, 0x9a, + 0x41, 0x08, 0x59, 0x8f, 0x13, 0x9d, 0x17, 0xc9, 0x9f, 0x51, 0xdc, 0xda, + 0xb1, 0x52, 0xef, 0xff, 0xe3, 0x41, 0xdd, 0xe0, 0xdf, 0xc4, 0x28, 0xc6, + 0xe3, 0xad, 0x79, 0x1f, 0x27, 0x10, 0x98, 0xb8, 0xbb, 0x20, 0x97, 0xc1, + 0x28, 0x44, 0x41, 0x0f, 0xea, 0xa9, 0xa8, 0x52, 0xcf, 0x4d, 0x4e, 0x1b, + 0x8b, 0xbb, 0xb5, 0xc4, 0x76, 0xd9, 0xcc, 0x56, 0x06, 0xee, 0xb3, 0x55, + 0x20, 0x2a, 0xde, 0x15, 0x8d, 0x71, 0xcb, 0x54, 0xc8, 0x6f, 0x17, 0xcd, + 0x89, 0x00, 0xe4, 0xdc, 0xff, 0xe1, 0xc0, 0x1f, 0x68, 0x71, 0xe9, 0xc7, + 0x29, 0x2e, 0x7e, 0xbc, 0x3b, 0xfc, 0xe5, 0xbb, 0xab, 0x26, 0x54, 0x8b, + 0x66, 0x90, 0xcd, 0xf6, 0x92, 0xb9, 0x31, 0x24, 0x80, 0xbc, 0x9e, 0x6c, + 0xd5, 0xfc, 0x7e, 0xd2, 0xe1, 0x4b, 0x8c, 0xdc, 0x42, 0xfa, 0x44, 0x4b, + 0x5f, 0xf8, 0x18, 0xb5, 0x2e, 0x30, 0xf4, 0x3d, 0x12, 0x98, 0xd3, 0x62, + 0x05, 0x73, 0x54, 0xa6, 0x9c, 0xa2, 0x1d, 0xbe, 0x52, 0x83, 0x3a, 0x07, + 0x46, 0xc4, 0x3b, 0x02, 0x56, 0x21, 0xbf, 0xf2, 0x51, 0x4f, 0xd0, 0xa6, + 0x99, 0x39, 0xe9, 0xae, 0xa5, 0x3f, 0x89, 0x9b, 0x9c, 0x7d, 0xfe, 0x4d, + 0x60, 0x07, 0x25, 0x20, 0xf7, 0xbb, 0xd7, 0x69, 0x83, 0x2b, 0x82, 0x93, + 0x43, 0x37, 0xd9, 0x83, 0x41, 0x1b, 0x6b, 0x0b, 0xab, 0x4a, 0x66, 0x84, + 0x4f, 0x4a, 0x8e, 0xde, 0x7e, 0x34, 0x99, 0x8e, 0x68, 0xd6, 0xca, 0x39, + 0x06, 0x9b, 0x4c, 0xb3, 0x9a, 0x48, 0x4d, 0x13, 0x46, 0xb4, 0x58, 0x21, + 0x04, 0xc4, 0xfb, 0xa0, 0x4d, 0xac, 0x2e, 0x4b, 0x62, 0x12, 0xe3, 0xfb, + 0x4d, 0xf6, 0xc9, 0x51, 0x00, 0x01, 0x1f, 0xfc, 0x1e, 0x6a, 0x81, 0x2a, + 0x38, 0xe0, 0xb9, 0x4f, 0xd6, 0x2d, 0x45, 0x02, 0x03, 0x01, 0x00, 0x01, + 0xa3, 0x82, 0x02, 0x15, 0x30, 0x82, 0x02, 0x11, 0x30, 0x12, 0x06, 0x03, + 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, + 0xff, 0x02, 0x01, 0x00, 0x30, 0x70, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, + 0x69, 0x30, 0x67, 0x30, 0x65, 0x06, 0x0b, 0x60, 0x86, 0x48, 0x01, 0x86, + 0xf8, 0x45, 0x01, 0x07, 0x17, 0x03, 0x30, 0x56, 0x30, 0x28, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, + 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, + 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, + 0x70, 0x73, 0x30, 0x2a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x02, 0x02, 0x30, 0x1e, 0x1a, 0x1c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, + 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, + 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x70, 0x61, 0x30, 0x0e, + 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, + 0x01, 0x06, 0x30, 0x6d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x01, 0x0c, 0x04, 0x61, 0x30, 0x5f, 0xa1, 0x5d, 0xa0, 0x5b, 0x30, 0x59, + 0x30, 0x57, 0x30, 0x55, 0x16, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, + 0x67, 0x69, 0x66, 0x30, 0x21, 0x30, 0x1f, 0x30, 0x07, 0x06, 0x05, 0x2b, + 0x0e, 0x03, 0x02, 0x1a, 0x04, 0x14, 0x8f, 0xe5, 0xd3, 0x1a, 0x86, 0xac, + 0x8d, 0x8e, 0x6b, 0xc3, 0xcf, 0x80, 0x6a, 0xd4, 0x48, 0x18, 0x2c, 0x7b, + 0x19, 0x2e, 0x30, 0x25, 0x16, 0x23, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, + 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x76, 0x73, 0x6c, 0x6f, 0x67, + 0x6f, 0x2e, 0x67, 0x69, 0x66, 0x30, 0x34, 0x06, 0x03, 0x55, 0x1d, 0x25, + 0x04, 0x2d, 0x30, 0x2b, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x03, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, + 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x42, 0x04, 0x01, 0x06, + 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x08, 0x01, 0x30, + 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, + 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, + 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x34, 0x06, 0x03, 0x55, 0x1d, 0x1f, + 0x04, 0x2d, 0x30, 0x2b, 0x30, 0x29, 0xa0, 0x27, 0xa0, 0x25, 0x86, 0x23, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x76, + 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x70, 0x63, 0x61, 0x33, 0x2d, 0x67, 0x35, 0x2e, 0x63, 0x72, 0x6c, 0x30, + 0x28, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x21, 0x30, 0x1f, 0xa4, 0x1d, + 0x30, 0x1b, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x10, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x50, 0x4b, + 0x49, 0x2d, 0x32, 0x2d, 0x37, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, + 0x04, 0x16, 0x04, 0x14, 0xd7, 0x9b, 0x7c, 0xd8, 0x22, 0xa0, 0x15, 0xf7, + 0xdd, 0xad, 0x5f, 0xce, 0x29, 0x9b, 0x58, 0xc3, 0xbc, 0x46, 0x00, 0xb5, + 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, + 0x14, 0x7f, 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09, + 0xf3, 0x43, 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, 0x33, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, + 0x03, 0x82, 0x01, 0x01, 0x00, 0x71, 0xb5, 0x7d, 0x73, 0x52, 0x4a, 0xdd, + 0xd7, 0x4d, 0x34, 0x2b, 0x2e, 0xaf, 0x94, 0x46, 0xa5, 0x49, 0x50, 0x02, + 0x4f, 0xf8, 0x2f, 0x17, 0x70, 0xf2, 0x13, 0xdc, 0x1f, 0x21, 0x86, 0xaa, + 0xc2, 0x4f, 0x7c, 0x37, 0x3c, 0xd4, 0x46, 0x78, 0xae, 0x5d, 0x78, 0x6f, + 0xd1, 0xba, 0x5a, 0xbc, 0x10, 0xab, 0x58, 0x36, 0xc5, 0x8c, 0x62, 0x15, + 0x45, 0x60, 0x17, 0x21, 0xe2, 0xd5, 0x42, 0xa8, 0x77, 0xa1, 0x55, 0xd8, + 0x43, 0x04, 0x51, 0xf6, 0x6e, 0xba, 0x48, 0xe6, 0x5d, 0x4c, 0xb7, 0x44, + 0xd3, 0x3e, 0xa4, 0xd5, 0xd6, 0x33, 0x9a, 0x9f, 0x0d, 0xe6, 0xd7, 0x4e, + 0x96, 0x44, 0x95, 0x5a, 0x6c, 0xd6, 0xa3, 0x16, 0x53, 0x0e, 0x98, 0x43, + 0xce, 0xa4, 0xb8, 0xc3, 0x66, 0x7a, 0x05, 0x5c, 0x62, 0x10, 0xe8, 0x1b, + 0x12, 0xdb, 0x7d, 0x2e, 0x76, 0x50, 0xff, 0xdf, 0xd7, 0x6b, 0x1b, 0xcc, + 0x8a, 0xcc, 0x71, 0xfa, 0xb3, 0x40, 0x56, 0x7c, 0x33, 0x7a, 0x77, 0x94, + 0x5b, 0xf5, 0x0b, 0x53, 0xfb, 0x0e, 0x5f, 0xbc, 0x68, 0xfb, 0xaf, 0x2a, + 0xee, 0x30, 0x37, 0x79, 0x16, 0x93, 0x25, 0x7f, 0x4d, 0x10, 0xff, 0x57, + 0xfb, 0xbf, 0x6e, 0x3b, 0x33, 0x21, 0xde, 0x79, 0xdc, 0x86, 0x17, 0x59, + 0x2d, 0x43, 0x64, 0xb7, 0xa6, 0x66, 0x87, 0xea, 0xbc, 0x96, 0x46, 0x19, + 0x1a, 0x86, 0x8b, 0x6f, 0xd7, 0xb7, 0x49, 0x00, 0x5b, 0xdb, 0xa3, 0xbf, + 0x29, 0x9a, 0xee, 0xf7, 0xd3, 0x33, 0xae, 0xa3, 0xf4, 0x9e, 0x4c, 0xca, + 0x5e, 0x69, 0xd4, 0x1b, 0xad, 0xb7, 0x90, 0x77, 0x6a, 0xd8, 0x59, 0x6f, + 0x79, 0xab, 0x01, 0xfa, 0x55, 0xf0, 0x8a, 0x21, 0x66, 0xe5, 0x65, 0x6e, + 0xfd, 0x7c, 0xd3, 0xdf, 0x1e, 0xeb, 0x7e, 0x3f, 0x06, 0x90, 0xfb, 0x19, + 0x0b, 0xd3, 0x06, 0x02, 0x1b, 0x78, 0x43, 0x99, 0xa8, +} + +var certSet2Cert50 = []byte{ + 0x30, 0x82, 0x06, 0x34, 0x30, 0x82, 0x04, 0x1c, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x01, 0x1a, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x7d, 0x31, 0x0b, 0x30, + 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, 0x4c, 0x31, 0x16, + 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, 0x4c, 0x74, 0x64, 0x2e, 0x31, 0x2b, + 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x22, 0x53, 0x65, 0x63, + 0x75, 0x72, 0x65, 0x20, 0x44, 0x69, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x20, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, + 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x31, 0x29, 0x30, 0x27, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x20, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, + 0x6f, 0x6d, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x37, 0x31, 0x30, 0x32, 0x34, + 0x32, 0x30, 0x35, 0x37, 0x30, 0x39, 0x5a, 0x17, 0x0d, 0x31, 0x37, 0x31, + 0x30, 0x32, 0x34, 0x32, 0x30, 0x35, 0x37, 0x30, 0x39, 0x5a, 0x30, 0x81, + 0x8c, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x49, 0x4c, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, 0x4c, 0x74, + 0x64, 0x2e, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x22, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x44, 0x69, 0x67, 0x69, + 0x74, 0x61, 0x6c, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x31, + 0x38, 0x30, 0x36, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2f, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0x20, 0x32, 0x20, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x49, + 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x20, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, + 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, + 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xe2, 0x4f, 0x39, 0x2f, 0xa1, 0x8c, + 0x9a, 0x85, 0xad, 0x08, 0x0e, 0x08, 0x3e, 0x57, 0xf2, 0x88, 0x01, 0x21, + 0x1b, 0x94, 0xa9, 0x6c, 0xe2, 0xb8, 0xdb, 0xaa, 0x19, 0x18, 0x46, 0x3a, + 0x52, 0xa1, 0xf5, 0x0f, 0xf4, 0x6e, 0x8c, 0xea, 0x96, 0x8c, 0x96, 0x87, + 0x79, 0x13, 0x40, 0x51, 0x2f, 0x22, 0xf2, 0x0c, 0x8b, 0x87, 0x0f, 0x65, + 0xdf, 0x71, 0x74, 0x34, 0x43, 0x55, 0xb1, 0x35, 0x09, 0x9b, 0xd9, 0xbc, + 0x1f, 0xfa, 0xeb, 0x42, 0xd0, 0x97, 0x40, 0x72, 0xb7, 0x43, 0x96, 0x3d, + 0xba, 0x96, 0x9d, 0x5d, 0x50, 0x02, 0x1c, 0x9b, 0x91, 0x8d, 0x9c, 0xc0, + 0xac, 0xd7, 0xbb, 0x2f, 0x17, 0xd7, 0xcb, 0x3e, 0x82, 0x9d, 0x73, 0xeb, + 0x07, 0x42, 0x92, 0xb2, 0xcd, 0x64, 0xb3, 0x74, 0x55, 0x1b, 0xb4, 0x4b, + 0x86, 0x21, 0x2c, 0xf7, 0x78, 0x87, 0x32, 0xe0, 0x16, 0xe4, 0xda, 0xbd, + 0x4c, 0x95, 0xea, 0xa4, 0x0a, 0x7e, 0xb6, 0x0a, 0x0d, 0x2e, 0x8a, 0xcf, + 0x55, 0xab, 0xc3, 0xe5, 0xdd, 0x41, 0x8a, 0x4e, 0xe6, 0x6f, 0x65, 0x6c, + 0xb2, 0x40, 0xcf, 0x17, 0x5d, 0xb9, 0xc3, 0x6a, 0x0b, 0x27, 0x11, 0x84, + 0x77, 0x61, 0xf6, 0xc2, 0x7c, 0xed, 0xc0, 0x8d, 0x78, 0x14, 0x18, 0x99, + 0x81, 0x99, 0x75, 0x63, 0xb7, 0xe8, 0x53, 0xd3, 0xba, 0x61, 0xe9, 0x0e, + 0xfa, 0xa2, 0x30, 0xf3, 0x46, 0xa2, 0xb9, 0xc9, 0x1f, 0x6c, 0x80, 0x5a, + 0x40, 0xac, 0x27, 0xed, 0x48, 0x47, 0x33, 0xb0, 0x54, 0xc6, 0x46, 0x1a, + 0xf3, 0x35, 0x61, 0xc1, 0x02, 0x29, 0x90, 0x54, 0x7e, 0x64, 0x4d, 0xc4, + 0x30, 0x52, 0x02, 0x82, 0xd7, 0xdf, 0xce, 0x21, 0x6e, 0x18, 0x91, 0xd7, + 0xb8, 0xab, 0x8c, 0x27, 0x17, 0xb5, 0xf0, 0xa3, 0x01, 0x2f, 0x8e, 0xd2, + 0x2e, 0x87, 0x3a, 0x3d, 0xb4, 0x29, 0x67, 0x8a, 0xc4, 0x03, 0x02, 0x03, + 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0xad, 0x30, 0x82, 0x01, 0xa9, 0x30, + 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, + 0x03, 0x01, 0x01, 0xff, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, + 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x1d, 0x06, 0x03, + 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x11, 0xdb, 0x23, 0x45, 0xfd, + 0x54, 0xcc, 0x6a, 0x71, 0x6f, 0x84, 0x8a, 0x03, 0xd7, 0xbe, 0xf7, 0x01, + 0x2f, 0x26, 0x86, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, + 0x30, 0x16, 0x80, 0x14, 0x4e, 0x0b, 0xef, 0x1a, 0xa4, 0x40, 0x5b, 0xa5, + 0x17, 0x69, 0x87, 0x30, 0xca, 0x34, 0x68, 0x43, 0xd0, 0x41, 0xae, 0xf2, + 0x30, 0x66, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, + 0x04, 0x5a, 0x30, 0x58, 0x30, 0x27, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x30, 0x01, 0x86, 0x1b, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, + 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x61, 0x30, 0x2d, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x21, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x66, 0x73, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x74, 0x30, 0x5b, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x54, 0x30, 0x52, 0x30, 0x27, 0xa0, 0x25, 0xa0, + 0x23, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, + 0x77, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x66, 0x73, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, + 0x30, 0x27, 0xa0, 0x25, 0xa0, 0x23, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x66, 0x73, 0x63, + 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x81, 0x80, 0x06, 0x03, 0x55, 0x1d, + 0x20, 0x04, 0x79, 0x30, 0x77, 0x30, 0x75, 0x06, 0x0b, 0x2b, 0x06, 0x01, + 0x04, 0x01, 0x81, 0xb5, 0x37, 0x01, 0x02, 0x01, 0x30, 0x66, 0x30, 0x2e, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x22, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x70, 0x64, 0x66, 0x30, 0x34, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x28, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, + 0x2e, 0x70, 0x64, 0x66, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x02, 0x01, 0x00, + 0x9d, 0x07, 0xe1, 0xee, 0x90, 0x76, 0x31, 0x67, 0x16, 0x45, 0x70, 0x8c, + 0xcb, 0x84, 0x8b, 0x4b, 0x57, 0x68, 0x44, 0xa5, 0x89, 0xc1, 0xf2, 0x7e, + 0xcb, 0x28, 0x8b, 0xf5, 0xe7, 0x70, 0x77, 0xd5, 0xb6, 0xf4, 0x0b, 0x21, + 0x60, 0xa5, 0xa1, 0x74, 0x73, 0x24, 0x22, 0x80, 0xd6, 0xd8, 0xba, 0x8d, + 0xa2, 0x62, 0x5d, 0x09, 0x35, 0x42, 0x29, 0xfb, 0x39, 0x63, 0x45, 0x0b, + 0xa4, 0xb0, 0x38, 0x1a, 0x68, 0xf4, 0x95, 0x13, 0xcc, 0xe0, 0x43, 0x94, + 0xec, 0xeb, 0x39, 0x1a, 0xec, 0x57, 0x29, 0xd9, 0x99, 0x6d, 0xf5, 0x84, + 0xcd, 0x8e, 0x73, 0xae, 0xc9, 0xdc, 0x6a, 0xfa, 0x9e, 0x9d, 0x16, 0x64, + 0x93, 0x08, 0xc7, 0x1c, 0xc2, 0x89, 0x54, 0x9e, 0x77, 0x80, 0x90, 0xf6, + 0xb9, 0x29, 0x76, 0xeb, 0x13, 0x67, 0x48, 0x59, 0xf8, 0x2e, 0x3a, 0x31, + 0xb8, 0xc9, 0xd3, 0x88, 0xe5, 0x5f, 0x4e, 0xd2, 0x19, 0x3d, 0x43, 0x8e, + 0xd7, 0x92, 0xff, 0xcf, 0x38, 0xb6, 0xe1, 0x5b, 0x8a, 0x53, 0x1d, 0xce, + 0xac, 0xb4, 0x76, 0x2f, 0xd8, 0xf7, 0x40, 0x63, 0xd5, 0xee, 0x69, 0xf3, + 0x45, 0x7d, 0xa0, 0x62, 0xc1, 0x61, 0xc3, 0x75, 0xed, 0xb2, 0x7b, 0x4d, + 0xac, 0x21, 0x27, 0x30, 0x4e, 0x59, 0x46, 0x6a, 0x93, 0x17, 0xca, 0xc8, + 0x39, 0x2d, 0x01, 0x73, 0x65, 0x5b, 0xe9, 0x41, 0x9b, 0x11, 0x17, 0x9c, + 0xc8, 0xc8, 0x4a, 0xef, 0xa1, 0x76, 0x60, 0x2d, 0xae, 0x93, 0xff, 0x0c, + 0xd5, 0x33, 0x13, 0x9f, 0x4f, 0x13, 0xce, 0xdd, 0x86, 0xf1, 0xfc, 0xf8, + 0x35, 0x54, 0x15, 0xa8, 0x5b, 0xe7, 0x85, 0x7e, 0xfa, 0x37, 0x09, 0xff, + 0x8b, 0xb8, 0x31, 0x49, 0x9e, 0x0d, 0x6e, 0xde, 0xb4, 0xd2, 0x12, 0x2d, + 0xb8, 0xed, 0xc8, 0xc3, 0xf1, 0xb6, 0x42, 0xa0, 0x4c, 0x97, 0x79, 0xdf, + 0xfe, 0xc3, 0xa3, 0x9f, 0xa1, 0xf4, 0x6d, 0x2c, 0x84, 0x77, 0xa4, 0xa2, + 0x05, 0xe1, 0x17, 0xff, 0x31, 0xdd, 0x9a, 0xf3, 0xb8, 0x7a, 0xc3, 0x52, + 0xc2, 0x11, 0x11, 0xb7, 0x50, 0x31, 0x8a, 0x7f, 0xcc, 0xe7, 0x5a, 0x89, + 0xcc, 0xf7, 0x86, 0x9a, 0x61, 0x92, 0x4f, 0x2f, 0x94, 0xb6, 0x98, 0xc7, + 0x78, 0xe0, 0x62, 0x4b, 0x43, 0x7d, 0x3c, 0xde, 0xd6, 0x9a, 0xb4, 0x10, + 0xa1, 0x40, 0x9c, 0x4b, 0x2a, 0xdc, 0xb8, 0xd0, 0xd4, 0x9e, 0xfd, 0xf1, + 0x84, 0x78, 0x1b, 0x0e, 0x57, 0x8f, 0x69, 0x54, 0x42, 0x68, 0x7b, 0xea, + 0xa0, 0xef, 0x75, 0x0f, 0x07, 0xa2, 0x8c, 0x73, 0x99, 0xab, 0x55, 0xf5, + 0x07, 0x09, 0xd2, 0xaf, 0x38, 0x03, 0x6a, 0x90, 0x03, 0x0c, 0x2f, 0x8f, + 0xe2, 0xe8, 0x43, 0xc2, 0x31, 0xe9, 0x6f, 0xad, 0x87, 0xe5, 0x8d, 0xbd, + 0x4e, 0x2c, 0x89, 0x4b, 0x51, 0xe6, 0x9c, 0x4c, 0x54, 0x76, 0xc0, 0x12, + 0x81, 0x53, 0x9b, 0xec, 0xa0, 0xfc, 0x2c, 0x9c, 0xda, 0x18, 0x95, 0x6e, + 0x1e, 0x38, 0x26, 0x42, 0x27, 0x78, 0x60, 0x08, 0xdf, 0x7f, 0x6d, 0x32, + 0xe8, 0xd8, 0xc0, 0x6f, 0x1f, 0xeb, 0x26, 0x75, 0x9f, 0x93, 0xfc, 0x7b, + 0x1b, 0xfe, 0x35, 0x90, 0xdc, 0x53, 0xa3, 0x07, 0xa6, 0x3f, 0x83, 0x55, + 0x0a, 0x2b, 0x4e, 0x62, 0x82, 0x25, 0xce, 0x66, 0x30, 0x5d, 0x2c, 0xe0, + 0xf9, 0x19, 0x1b, 0x75, 0xb9, 0x9d, 0x98, 0x56, 0xa6, 0x83, 0x27, 0x7a, + 0xd1, 0x8f, 0x8d, 0x59, 0x93, 0xfc, 0x3f, 0x73, 0xd7, 0x2e, 0xb4, 0x2c, + 0x95, 0xd8, 0x8b, 0xf7, 0xc9, 0x7e, 0xc7, 0xfc, 0x9d, 0xac, 0x72, 0x04, + 0x1f, 0xd2, 0xcc, 0x17, 0xf4, 0xed, 0x34, 0x60, 0x9b, 0x9e, 0x4a, 0x97, + 0x04, 0xfe, 0xdd, 0x72, 0x0e, 0x57, 0x54, 0x51, 0x06, 0x70, 0x4d, 0xef, + 0xaa, 0x1c, 0xa4, 0x82, 0xe0, 0x33, 0xc7, 0xf4, +} + +var certSet2Cert51 = []byte{ + 0x30, 0x82, 0x06, 0x58, 0x30, 0x82, 0x05, 0x40, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x0a, 0x5f, 0x11, 0x4d, 0x03, 0x5b, 0x17, 0x91, 0x17, + 0xd2, 0xef, 0xd4, 0x03, 0x8c, 0x3f, 0x3b, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x6c, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, + 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, + 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x22, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48, + 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, + 0x65, 0x20, 0x45, 0x56, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, + 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x38, 0x30, 0x34, 0x30, 0x32, 0x31, 0x32, + 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x32, 0x30, 0x34, 0x30, + 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x66, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44, 0x69, + 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31, 0x19, + 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, 0x77, 0x77, + 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, + 0x6d, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1c, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48, 0x69, 0x67, + 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x20, + 0x43, 0x41, 0x2d, 0x33, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, + 0x00, 0xbf, 0x61, 0x0a, 0x29, 0x10, 0x1f, 0x5e, 0xfe, 0x34, 0x37, 0x51, + 0x08, 0xf8, 0x1e, 0xfb, 0x22, 0xed, 0x61, 0xbe, 0x0b, 0x0d, 0x70, 0x4c, + 0x50, 0x63, 0x26, 0x75, 0x15, 0xb9, 0x41, 0x88, 0x97, 0xb6, 0xf0, 0xa0, + 0x15, 0xbb, 0x08, 0x60, 0xe0, 0x42, 0xe8, 0x05, 0x29, 0x10, 0x87, 0x36, + 0x8a, 0x28, 0x65, 0xa8, 0xef, 0x31, 0x07, 0x74, 0x6d, 0x36, 0x97, 0x2f, + 0x28, 0x46, 0x66, 0x04, 0xc7, 0x2a, 0x79, 0x26, 0x7a, 0x99, 0xd5, 0x8e, + 0xc3, 0x6d, 0x4f, 0xa0, 0x5e, 0xad, 0xbc, 0x3d, 0x91, 0xc2, 0x59, 0x7b, + 0x5e, 0x36, 0x6c, 0xc0, 0x53, 0xcf, 0x00, 0x08, 0x32, 0x3e, 0x10, 0x64, + 0x58, 0x10, 0x13, 0x69, 0xc7, 0x0c, 0xee, 0x9c, 0x42, 0x51, 0x00, 0xf9, + 0x05, 0x44, 0xee, 0x24, 0xce, 0x7a, 0x1f, 0xed, 0x8c, 0x11, 0xbd, 0x12, + 0xa8, 0xf3, 0x15, 0xf4, 0x1c, 0x7a, 0x31, 0x69, 0x01, 0x1b, 0xa7, 0xe6, + 0x5d, 0xc0, 0x9a, 0x6c, 0x7e, 0x09, 0x9e, 0xe7, 0x52, 0x44, 0x4a, 0x10, + 0x3a, 0x23, 0xe4, 0x9b, 0xb6, 0x03, 0xaf, 0xa8, 0x9c, 0xb4, 0x5b, 0x9f, + 0xd4, 0x4b, 0xad, 0x92, 0x8c, 0xce, 0xb5, 0x11, 0x2a, 0xaa, 0x37, 0x18, + 0x8d, 0xb4, 0xc2, 0xb8, 0xd8, 0x5c, 0x06, 0x8c, 0xf8, 0xff, 0x23, 0xbd, + 0x35, 0x5e, 0xd4, 0x7c, 0x3e, 0x7e, 0x83, 0x0e, 0x91, 0x96, 0x05, 0x98, + 0xc3, 0xb2, 0x1f, 0xe3, 0xc8, 0x65, 0xeb, 0xa9, 0x7b, 0x5d, 0xa0, 0x2c, + 0xcc, 0xfc, 0x3c, 0xd9, 0x6d, 0xed, 0xcc, 0xfa, 0x4b, 0x43, 0x8c, 0xc9, + 0xd4, 0xb8, 0xa5, 0x61, 0x1c, 0xb2, 0x40, 0xb6, 0x28, 0x12, 0xdf, 0xb9, + 0xf8, 0x5f, 0xfe, 0xd3, 0xb2, 0xc9, 0xef, 0x3d, 0xb4, 0x1e, 0x4b, 0x7c, + 0x1c, 0x4c, 0x99, 0x36, 0x9e, 0x3d, 0xeb, 0xec, 0xa7, 0x68, 0x5e, 0x1d, + 0xdf, 0x67, 0x6e, 0x5e, 0xfb, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, + 0x02, 0xfa, 0x30, 0x82, 0x02, 0xf6, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x82, + 0x01, 0xc6, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x82, 0x01, 0xbd, 0x30, + 0x82, 0x01, 0xb9, 0x30, 0x82, 0x01, 0xb5, 0x06, 0x0b, 0x60, 0x86, 0x48, + 0x01, 0x86, 0xfd, 0x6c, 0x01, 0x03, 0x00, 0x02, 0x30, 0x82, 0x01, 0xa4, + 0x30, 0x3a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, + 0x16, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, + 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x73, 0x73, 0x6c, 0x2d, 0x63, 0x70, 0x73, 0x2d, 0x72, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x68, 0x74, 0x6d, + 0x30, 0x82, 0x01, 0x64, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x02, 0x02, 0x30, 0x82, 0x01, 0x56, 0x1e, 0x82, 0x01, 0x52, 0x00, 0x41, + 0x00, 0x6e, 0x00, 0x79, 0x00, 0x20, 0x00, 0x75, 0x00, 0x73, 0x00, 0x65, + 0x00, 0x20, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x20, 0x00, 0x74, 0x00, 0x68, + 0x00, 0x69, 0x00, 0x73, 0x00, 0x20, 0x00, 0x43, 0x00, 0x65, 0x00, 0x72, + 0x00, 0x74, 0x00, 0x69, 0x00, 0x66, 0x00, 0x69, 0x00, 0x63, 0x00, 0x61, + 0x00, 0x74, 0x00, 0x65, 0x00, 0x20, 0x00, 0x63, 0x00, 0x6f, 0x00, 0x6e, + 0x00, 0x73, 0x00, 0x74, 0x00, 0x69, 0x00, 0x74, 0x00, 0x75, 0x00, 0x74, + 0x00, 0x65, 0x00, 0x73, 0x00, 0x20, 0x00, 0x61, 0x00, 0x63, 0x00, 0x63, + 0x00, 0x65, 0x00, 0x70, 0x00, 0x74, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x63, + 0x00, 0x65, 0x00, 0x20, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x20, 0x00, 0x74, + 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x44, 0x00, 0x69, 0x00, 0x67, + 0x00, 0x69, 0x00, 0x43, 0x00, 0x65, 0x00, 0x72, 0x00, 0x74, 0x00, 0x20, + 0x00, 0x43, 0x00, 0x50, 0x00, 0x2f, 0x00, 0x43, 0x00, 0x50, 0x00, 0x53, + 0x00, 0x20, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x64, 0x00, 0x20, 0x00, 0x74, + 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x52, 0x00, 0x65, 0x00, 0x6c, + 0x00, 0x79, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x67, 0x00, 0x20, 0x00, 0x50, + 0x00, 0x61, 0x00, 0x72, 0x00, 0x74, 0x00, 0x79, 0x00, 0x20, 0x00, 0x41, + 0x00, 0x67, 0x00, 0x72, 0x00, 0x65, 0x00, 0x65, 0x00, 0x6d, 0x00, 0x65, + 0x00, 0x6e, 0x00, 0x74, 0x00, 0x20, 0x00, 0x77, 0x00, 0x68, 0x00, 0x69, + 0x00, 0x63, 0x00, 0x68, 0x00, 0x20, 0x00, 0x6c, 0x00, 0x69, 0x00, 0x6d, + 0x00, 0x69, 0x00, 0x74, 0x00, 0x20, 0x00, 0x6c, 0x00, 0x69, 0x00, 0x61, + 0x00, 0x62, 0x00, 0x69, 0x00, 0x6c, 0x00, 0x69, 0x00, 0x74, 0x00, 0x79, + 0x00, 0x20, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x64, 0x00, 0x20, 0x00, 0x61, + 0x00, 0x72, 0x00, 0x65, 0x00, 0x20, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x63, + 0x00, 0x6f, 0x00, 0x72, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x61, + 0x00, 0x74, 0x00, 0x65, 0x00, 0x64, 0x00, 0x20, 0x00, 0x68, 0x00, 0x65, + 0x00, 0x72, 0x00, 0x65, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x20, 0x00, 0x62, + 0x00, 0x79, 0x00, 0x20, 0x00, 0x72, 0x00, 0x65, 0x00, 0x66, 0x00, 0x65, + 0x00, 0x72, 0x00, 0x65, 0x00, 0x6e, 0x00, 0x63, 0x00, 0x65, 0x00, 0x2e, + 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, + 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x34, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, + 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, + 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, + 0x70, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, + 0x6f, 0x6d, 0x30, 0x81, 0x8f, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x81, + 0x87, 0x30, 0x81, 0x84, 0x30, 0x40, 0xa0, 0x3e, 0xa0, 0x3c, 0x86, 0x3a, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x33, 0x2e, + 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x48, 0x69, 0x67, + 0x68, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x45, 0x56, + 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x40, + 0xa0, 0x3e, 0xa0, 0x3c, 0x86, 0x3a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x63, 0x72, 0x6c, 0x34, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, + 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x69, 0x67, 0x69, 0x43, + 0x65, 0x72, 0x74, 0x48, 0x69, 0x67, 0x68, 0x41, 0x73, 0x73, 0x75, 0x72, + 0x61, 0x6e, 0x63, 0x65, 0x45, 0x56, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, + 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, + 0x18, 0x30, 0x16, 0x80, 0x14, 0xb1, 0x3e, 0xc3, 0x69, 0x03, 0xf8, 0xbf, + 0x47, 0x01, 0xd4, 0x98, 0x26, 0x1a, 0x08, 0x02, 0xef, 0x63, 0x64, 0x2b, + 0xc3, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0x50, 0xea, 0x73, 0x89, 0xdb, 0x29, 0xfb, 0x10, 0x8f, 0x9e, 0xe5, 0x01, + 0x20, 0xd4, 0xde, 0x79, 0x99, 0x48, 0x83, 0xf7, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x01, 0x00, 0x1e, 0xe2, 0xa5, 0x48, 0x9e, 0x6c, 0xdb, 0x53, + 0x38, 0x0f, 0xef, 0xa6, 0x1a, 0x2a, 0xac, 0xe2, 0x03, 0x43, 0xed, 0x9a, + 0xbc, 0x3e, 0x8e, 0x75, 0x1b, 0xf0, 0xfd, 0x2e, 0x22, 0x59, 0xac, 0x13, + 0xc0, 0x61, 0xe2, 0xe7, 0xfa, 0xe9, 0x99, 0xcd, 0x87, 0x09, 0x75, 0x54, + 0x28, 0xbf, 0x46, 0x60, 0xdc, 0xbe, 0x51, 0x2c, 0x92, 0xf3, 0x1b, 0x91, + 0x7c, 0x31, 0x08, 0x70, 0xe2, 0x37, 0xb9, 0xc1, 0x5b, 0xa8, 0xbd, 0xa3, + 0x0b, 0x00, 0xfb, 0x1a, 0x15, 0xfd, 0x03, 0xad, 0x58, 0x6a, 0xc5, 0xc7, + 0x24, 0x99, 0x48, 0x47, 0x46, 0x31, 0x1e, 0x92, 0xef, 0xb4, 0x5f, 0x4e, + 0x34, 0xc7, 0x90, 0xbf, 0x31, 0xc1, 0xf8, 0xb1, 0x84, 0x86, 0xd0, 0x9c, + 0x01, 0xaa, 0xdf, 0x8a, 0x56, 0x06, 0xce, 0x3a, 0xe9, 0x0e, 0xae, 0x97, + 0x74, 0x5d, 0xd7, 0x71, 0x9a, 0x42, 0x74, 0x5f, 0xde, 0x8d, 0x43, 0x7c, + 0xde, 0xe9, 0x55, 0xed, 0x69, 0x00, 0xcb, 0x05, 0xe0, 0x7a, 0x61, 0x61, + 0x33, 0xd1, 0x19, 0x4d, 0xf9, 0x08, 0xee, 0xa0, 0x39, 0xc5, 0x25, 0x35, + 0xb7, 0x2b, 0xc4, 0x0f, 0xb2, 0xdd, 0xf1, 0xa5, 0xb7, 0x0e, 0x24, 0xc4, + 0x26, 0x28, 0x8d, 0x79, 0x77, 0xf5, 0x2f, 0xf0, 0x57, 0xba, 0x7c, 0x07, + 0xd4, 0xe1, 0xfc, 0xcd, 0x5a, 0x30, 0x57, 0x7e, 0x86, 0x10, 0x47, 0xdd, + 0x31, 0x1f, 0xd7, 0xfc, 0xa2, 0xc2, 0xbf, 0x30, 0x7c, 0x5d, 0x24, 0xaa, + 0xe8, 0xf9, 0xae, 0x5f, 0x6a, 0x74, 0xc2, 0xce, 0x6b, 0xb3, 0x46, 0xd8, + 0x21, 0xbe, 0x29, 0xd4, 0x8e, 0x5e, 0x15, 0xd6, 0x42, 0x4a, 0xe7, 0x32, + 0x6f, 0xa4, 0xb1, 0x6b, 0x51, 0x83, 0x58, 0xbe, 0x3f, 0x6d, 0xc7, 0xfb, + 0xda, 0x03, 0x21, 0xcb, 0x6a, 0x16, 0x19, 0x4e, 0x0a, 0xf0, 0xad, 0x84, + 0xca, 0x5d, 0x94, 0xb3, 0x5a, 0x76, 0xf7, 0x61, +} + +var certSet2Cert52 = []byte{ + 0x30, 0x82, 0x06, 0x5c, 0x30, 0x82, 0x04, 0x44, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x07, 0x19, 0xc2, 0x85, 0x30, 0xe9, 0x3b, 0x36, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, + 0x00, 0x30, 0x7d, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x49, 0x4c, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, + 0x4c, 0x74, 0x64, 0x2e, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, + 0x0b, 0x13, 0x22, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x44, 0x69, + 0x67, 0x69, 0x74, 0x61, 0x6c, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, + 0x67, 0x31, 0x29, 0x30, 0x27, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x20, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, 0x43, 0x65, 0x72, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, + 0x30, 0x36, 0x30, 0x39, 0x31, 0x37, 0x32, 0x32, 0x34, 0x36, 0x33, 0x36, + 0x5a, 0x17, 0x0d, 0x31, 0x39, 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x35, + 0x39, 0x35, 0x39, 0x5a, 0x30, 0x55, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, + 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, 0x4e, 0x31, 0x1a, 0x30, 0x18, 0x06, + 0x03, 0x55, 0x04, 0x0a, 0x13, 0x11, 0x57, 0x6f, 0x53, 0x69, 0x67, 0x6e, + 0x20, 0x43, 0x41, 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x31, + 0x2a, 0x30, 0x28, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x21, 0x43, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x6f, 0x66, + 0x20, 0x57, 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x30, 0x82, 0x02, 0x22, 0x30, + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, + 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00, 0x30, 0x82, 0x02, 0x0a, 0x02, + 0x82, 0x02, 0x01, 0x00, 0xbd, 0xca, 0x8d, 0xac, 0xb8, 0x91, 0x15, 0x56, + 0x97, 0x7b, 0x6b, 0x5c, 0x7a, 0xc2, 0xde, 0x6b, 0xd9, 0xa1, 0xb0, 0xc3, + 0x10, 0x23, 0xfa, 0xa7, 0xa1, 0xb2, 0xcc, 0x31, 0xfa, 0x3e, 0xd9, 0xa6, + 0x29, 0x6f, 0x16, 0x3d, 0xe0, 0x6b, 0xf8, 0xb8, 0x40, 0x5f, 0xdb, 0x39, + 0xa8, 0x00, 0x7a, 0x8b, 0xa0, 0x4d, 0x54, 0x7d, 0xc2, 0x22, 0x78, 0xfc, + 0x8e, 0x09, 0xb8, 0xa8, 0x85, 0xd7, 0xcc, 0x95, 0x97, 0x4b, 0x74, 0xd8, + 0x9e, 0x7e, 0xf0, 0x00, 0xe4, 0x0e, 0x89, 0xae, 0x49, 0x28, 0x44, 0x1a, + 0x10, 0x99, 0x32, 0x0f, 0x25, 0x88, 0x53, 0xa4, 0x0d, 0xb3, 0x0f, 0x12, + 0x08, 0x16, 0x0b, 0x03, 0x71, 0x27, 0x1c, 0x7f, 0xe1, 0xdb, 0xd2, 0xfd, + 0x67, 0x68, 0xc4, 0x05, 0x5d, 0x0a, 0x0e, 0x5d, 0x70, 0xd7, 0xd8, 0x97, + 0xa0, 0xbc, 0x53, 0x41, 0x9a, 0x91, 0x8d, 0xf4, 0x9e, 0x36, 0x66, 0x7a, + 0x7e, 0x56, 0xc1, 0x90, 0x5f, 0xe6, 0xb1, 0x68, 0x20, 0x36, 0xa4, 0x8c, + 0x24, 0x2c, 0x2c, 0x47, 0x0b, 0x59, 0x76, 0x66, 0x30, 0xb5, 0xbe, 0xde, + 0xed, 0x8f, 0xf8, 0x9d, 0xd3, 0xbb, 0x01, 0x30, 0xe6, 0xf2, 0xf3, 0x0e, + 0xe0, 0x2c, 0x92, 0x80, 0xf3, 0x85, 0xf9, 0x28, 0x8a, 0xb4, 0x54, 0x2e, + 0x9a, 0xed, 0xf7, 0x76, 0xfc, 0x15, 0x68, 0x16, 0xeb, 0x4a, 0x6c, 0xeb, + 0x2e, 0x12, 0x8f, 0xd4, 0xcf, 0xfe, 0x0c, 0xc7, 0x5c, 0x1d, 0x0b, 0x7e, + 0x05, 0x32, 0xbe, 0x5e, 0xb0, 0x09, 0x2a, 0x42, 0xd5, 0xc9, 0x4e, 0x90, + 0xb3, 0x59, 0x0d, 0xbb, 0x7a, 0x7e, 0xcd, 0xd5, 0x08, 0x5a, 0xb4, 0x7f, + 0xd8, 0x1c, 0x69, 0x11, 0xf9, 0x27, 0x0f, 0x7b, 0x06, 0xaf, 0x54, 0x83, + 0x18, 0x7b, 0xe1, 0xdd, 0x54, 0x7a, 0x51, 0x68, 0x6e, 0x77, 0xfc, 0xc6, + 0xbf, 0x52, 0x4a, 0x66, 0x46, 0xa1, 0xb2, 0x67, 0x1a, 0xbb, 0xa3, 0x4f, + 0x77, 0xa0, 0xbe, 0x5d, 0xff, 0xfc, 0x56, 0x0b, 0x43, 0x72, 0x77, 0x90, + 0xca, 0x9e, 0xf9, 0xf2, 0x39, 0xf5, 0x0d, 0xa9, 0xf4, 0xea, 0xd7, 0xe7, + 0xb3, 0x10, 0x2f, 0x30, 0x42, 0x37, 0x21, 0xcc, 0x30, 0x70, 0xc9, 0x86, + 0x98, 0x0f, 0xcc, 0x58, 0x4d, 0x83, 0xbb, 0x7d, 0xe5, 0x1a, 0xa5, 0x37, + 0x8d, 0xb6, 0xac, 0x32, 0x97, 0x00, 0x3a, 0x63, 0x71, 0x24, 0x1e, 0x9e, + 0x37, 0xc4, 0xff, 0x74, 0xd4, 0x37, 0xc0, 0xe2, 0xfe, 0x88, 0x46, 0x60, + 0x11, 0xdd, 0x08, 0x3f, 0x50, 0x36, 0xab, 0xb8, 0x7a, 0xa4, 0x95, 0x62, + 0x6a, 0x6e, 0xb0, 0xca, 0x6a, 0x21, 0x5a, 0x69, 0xf3, 0xf3, 0xfb, 0x1d, + 0x70, 0x39, 0x95, 0xf3, 0xa7, 0x6e, 0xa6, 0x81, 0x89, 0xa1, 0x88, 0xc5, + 0x3b, 0x71, 0xca, 0xa3, 0x52, 0xee, 0x83, 0xbb, 0xfd, 0xa0, 0x77, 0xf4, + 0xe4, 0x6f, 0xe7, 0x42, 0xdb, 0x6d, 0x4a, 0x99, 0x8a, 0x34, 0x48, 0xbc, + 0x17, 0xdc, 0xe4, 0x80, 0x08, 0x22, 0xb6, 0xf2, 0x31, 0xc0, 0x3f, 0x04, + 0x3e, 0xeb, 0x9f, 0x20, 0x79, 0xd6, 0xb8, 0x06, 0x64, 0x64, 0x02, 0x31, + 0xd7, 0xa9, 0xcd, 0x52, 0xfb, 0x84, 0x45, 0x69, 0x09, 0x00, 0x2a, 0xdc, + 0x55, 0x8b, 0xc4, 0x06, 0x46, 0x4b, 0xc0, 0x4a, 0x1d, 0x09, 0x5b, 0x39, + 0x28, 0xfd, 0xa9, 0xab, 0xce, 0x00, 0xf9, 0x2e, 0x48, 0x4b, 0x26, 0xe6, + 0x30, 0x4c, 0xa5, 0x58, 0xca, 0xb4, 0x44, 0x82, 0x4f, 0xe7, 0x91, 0x1e, + 0x33, 0xc3, 0xb0, 0x93, 0xff, 0x11, 0xfc, 0x81, 0xd2, 0xca, 0x1f, 0x71, + 0x29, 0xdd, 0x76, 0x4f, 0x92, 0x25, 0xaf, 0x1d, 0x81, 0xb7, 0x0f, 0x2f, + 0x8c, 0xc3, 0x06, 0xcc, 0x2f, 0x27, 0xa3, 0x4a, 0xe4, 0x0e, 0x99, 0xba, + 0x7c, 0x1e, 0x45, 0x1f, 0x7f, 0xaa, 0x19, 0x45, 0x96, 0xfd, 0xfc, 0x3d, + 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x07, 0x30, 0x82, 0x01, + 0x03, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, + 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x02, 0x30, 0x0e, 0x06, + 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, + 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0xe1, 0x66, 0xcf, 0x0e, 0xd1, 0xf1, 0xb3, 0x4b, 0xb7, 0x06, 0x20, 0x14, + 0xfe, 0x87, 0x12, 0xd5, 0xf6, 0xfe, 0xfb, 0x3e, 0x30, 0x1f, 0x06, 0x03, + 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x4e, 0x0b, 0xef, + 0x1a, 0xa4, 0x40, 0x5b, 0xa5, 0x17, 0x69, 0x87, 0x30, 0xca, 0x34, 0x68, + 0x43, 0xd0, 0x41, 0xae, 0xf2, 0x30, 0x69, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x5d, 0x30, 0x5b, 0x30, 0x27, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x1b, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x63, 0x61, 0x30, 0x30, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x30, 0x02, 0x86, 0x24, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x61, + 0x69, 0x61, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x63, 0x61, + 0x2e, 0x63, 0x72, 0x74, 0x30, 0x32, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, + 0x2b, 0x30, 0x29, 0x30, 0x27, 0xa0, 0x25, 0xa0, 0x23, 0x86, 0x21, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x66, 0x73, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, + 0x82, 0x02, 0x01, 0x00, 0xb6, 0x6d, 0xf8, 0x70, 0xfb, 0xe2, 0x0d, 0x4c, + 0x98, 0xb3, 0x07, 0x49, 0x15, 0xf5, 0x04, 0xc4, 0x6c, 0xca, 0xca, 0xf5, + 0x68, 0xa0, 0x08, 0xfe, 0x12, 0x6d, 0x9c, 0x04, 0x06, 0xc9, 0xad, 0x9a, + 0x91, 0x52, 0x3e, 0x78, 0xc4, 0x5c, 0xee, 0x9f, 0x54, 0x1d, 0xee, 0xe3, + 0xf1, 0x5e, 0x30, 0xc9, 0x49, 0xe1, 0x39, 0xe0, 0xa6, 0x9d, 0x36, 0x6c, + 0x57, 0xfa, 0xe6, 0x34, 0x4f, 0x55, 0xe8, 0x87, 0xa8, 0x2c, 0xdd, 0x05, + 0xf1, 0x58, 0x12, 0x91, 0xe8, 0xca, 0xce, 0x28, 0x78, 0x8f, 0xdf, 0x07, + 0x85, 0x01, 0xa5, 0xdc, 0x45, 0x96, 0x05, 0xd4, 0x80, 0xb2, 0x2b, 0x05, + 0x9a, 0xcb, 0x9a, 0xa5, 0x8b, 0xe0, 0x3a, 0x67, 0xe6, 0x73, 0x47, 0xbe, + 0x4a, 0xfd, 0x27, 0xb1, 0x88, 0xef, 0xe6, 0xca, 0xcf, 0x8d, 0x0e, 0x26, + 0x9f, 0xfa, 0x5f, 0x57, 0x78, 0xad, 0x6d, 0xfe, 0xae, 0x9b, 0x35, 0x08, + 0xb1, 0xc3, 0xba, 0xc1, 0x00, 0x4a, 0x4b, 0x7d, 0x14, 0xbd, 0xf7, 0xf1, + 0xd3, 0x55, 0x18, 0xac, 0xd0, 0x33, 0x70, 0x88, 0x6d, 0xc4, 0x09, 0x71, + 0x14, 0xa6, 0x2b, 0x4f, 0x88, 0x81, 0xe7, 0x0b, 0x00, 0x37, 0xa9, 0x15, + 0x7d, 0x7e, 0xd7, 0x01, 0x96, 0x3f, 0x2f, 0xaf, 0x7b, 0x62, 0xae, 0x0a, + 0x4a, 0xbf, 0x4b, 0x39, 0x2e, 0x35, 0x10, 0x8b, 0xfe, 0x04, 0x39, 0xe4, + 0x3c, 0x3a, 0x0c, 0x09, 0x56, 0x40, 0x3a, 0xb5, 0xf4, 0xc2, 0x68, 0x0c, + 0xb5, 0xf9, 0x52, 0xcd, 0xee, 0x9d, 0xf8, 0x98, 0xfc, 0x78, 0xe7, 0x58, + 0x47, 0x8f, 0x1c, 0x73, 0x58, 0x69, 0x33, 0xab, 0xff, 0xdd, 0xdf, 0x8e, + 0x24, 0x01, 0x77, 0x98, 0x19, 0x3a, 0xb0, 0x66, 0x79, 0xbc, 0xe1, 0x08, + 0xa3, 0x0e, 0x4f, 0xc1, 0x04, 0xb3, 0xf3, 0x01, 0xc8, 0xeb, 0xd3, 0x59, + 0x1c, 0x35, 0xd2, 0x93, 0x1e, 0x70, 0x65, 0x82, 0x7f, 0xdb, 0xcf, 0xfb, + 0xc8, 0x99, 0x12, 0x60, 0xc3, 0x44, 0x6f, 0x3a, 0x80, 0x4b, 0xd7, 0xbe, + 0x21, 0xaa, 0x14, 0x7a, 0x64, 0xcb, 0xdd, 0x37, 0x43, 0x45, 0x5b, 0x32, + 0x2e, 0x45, 0xf0, 0xd9, 0x59, 0x1f, 0x6b, 0x18, 0xf0, 0x7c, 0xe9, 0x55, + 0x36, 0x19, 0x61, 0x5f, 0xb5, 0x7d, 0xf1, 0x8d, 0xbd, 0x88, 0xe4, 0x75, + 0x4b, 0x98, 0xdd, 0x27, 0xb0, 0xe4, 0x84, 0x44, 0x2a, 0x61, 0x84, 0x57, + 0x05, 0x82, 0x11, 0x1f, 0xaa, 0x35, 0x58, 0xf3, 0x20, 0x0e, 0xaf, 0x59, + 0xef, 0xfa, 0x55, 0x72, 0x72, 0x0d, 0x26, 0xd0, 0x9b, 0x53, 0x49, 0xac, + 0xce, 0x37, 0x2e, 0x65, 0x61, 0xff, 0xf6, 0xec, 0x1b, 0xea, 0xf6, 0xf1, + 0xa6, 0xd3, 0xd1, 0xb5, 0x7b, 0xbe, 0x35, 0xf4, 0x22, 0xc1, 0xbc, 0x8d, + 0x01, 0xbd, 0x68, 0x5e, 0x83, 0x0d, 0x2f, 0xec, 0xd6, 0xda, 0x63, 0x0c, + 0x27, 0xd1, 0x54, 0x3e, 0xe4, 0xa8, 0xd3, 0xce, 0x4b, 0x32, 0xb8, 0x91, + 0x94, 0xff, 0xfb, 0x5b, 0x49, 0x2d, 0x75, 0x18, 0xa8, 0xba, 0x71, 0x9a, + 0x3b, 0xae, 0xd9, 0xc0, 0xa9, 0x4f, 0x87, 0x91, 0xed, 0x8b, 0x7b, 0x6b, + 0x20, 0x98, 0x89, 0x39, 0x83, 0x4f, 0x80, 0xc4, 0x69, 0xcc, 0x17, 0xc9, + 0xc8, 0x4e, 0xbe, 0xe4, 0xa9, 0xa5, 0x81, 0x76, 0x70, 0x06, 0x04, 0x32, + 0xcd, 0x83, 0x65, 0xf4, 0xbc, 0x7d, 0x3e, 0x13, 0xbc, 0xd2, 0xe8, 0x6f, + 0x63, 0xaa, 0xb5, 0x3b, 0xda, 0x8d, 0x86, 0x32, 0x82, 0x78, 0x9d, 0xd9, + 0xcc, 0xff, 0xbf, 0x57, 0x64, 0x74, 0xed, 0x28, 0x3d, 0x44, 0x62, 0x15, + 0x61, 0x4b, 0xf7, 0x94, 0xb0, 0x0d, 0x2a, 0x67, 0x1c, 0xf0, 0xcb, 0x9b, + 0xa5, 0x92, 0xbf, 0xf8, 0x41, 0x5a, 0xc1, 0x3d, 0x60, 0xed, 0x9f, 0xbb, + 0xb8, 0x6d, 0x9b, 0xce, 0xa9, 0x6a, 0x16, 0x3f, 0x7e, 0xea, 0x06, 0xf1, +} + +var certSet2Cert53 = []byte{ + 0x30, 0x82, 0x06, 0xe6, 0x30, 0x82, 0x05, 0xce, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x03, 0x37, 0xb9, 0x28, 0x34, 0x7c, 0x60, 0xa6, 0xae, + 0xc5, 0xad, 0xb1, 0x21, 0x7f, 0x38, 0x60, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x6c, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, + 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, + 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x22, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48, + 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, + 0x65, 0x20, 0x45, 0x56, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, + 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x37, 0x31, 0x31, 0x30, 0x39, 0x31, 0x32, + 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x31, 0x31, 0x31, 0x31, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x69, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44, 0x69, + 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31, 0x19, + 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, 0x77, 0x77, + 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, + 0x6d, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1f, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48, 0x69, 0x67, + 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x20, + 0x45, 0x56, 0x20, 0x43, 0x41, 0x2d, 0x31, 0x30, 0x82, 0x01, 0x22, 0x30, + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, + 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, + 0x82, 0x01, 0x01, 0x00, 0xf3, 0x96, 0x62, 0xd8, 0x75, 0x6e, 0x19, 0xff, + 0x3f, 0x34, 0x7c, 0x49, 0x4f, 0x31, 0x7e, 0x0d, 0x04, 0x4e, 0x99, 0x81, + 0xe2, 0xb3, 0x85, 0x55, 0x91, 0x30, 0xb1, 0xc0, 0xaf, 0x70, 0xbb, 0x2c, + 0xa8, 0xe7, 0x18, 0xaa, 0x3f, 0x78, 0xf7, 0x90, 0x68, 0x52, 0x86, 0x01, + 0x88, 0x97, 0xe2, 0x3b, 0x06, 0x65, 0x90, 0xaa, 0xbd, 0x65, 0x76, 0xc2, + 0xec, 0xbe, 0x10, 0x5b, 0x37, 0x78, 0x83, 0x60, 0x75, 0x45, 0xc6, 0xbd, + 0x74, 0xaa, 0xb6, 0x9f, 0xa4, 0x3a, 0x01, 0x50, 0x17, 0xc4, 0x39, 0x69, + 0xb9, 0xf1, 0x4f, 0xef, 0x82, 0xc1, 0xca, 0xf3, 0x4a, 0xdb, 0xcc, 0x9e, + 0x50, 0x4f, 0x4d, 0x40, 0xa3, 0x3a, 0x90, 0xe7, 0x86, 0x66, 0xbc, 0xf0, + 0x3e, 0x76, 0x28, 0x4c, 0xd1, 0x75, 0x80, 0x9e, 0x6a, 0x35, 0x14, 0x35, + 0x03, 0x9e, 0xdb, 0x0c, 0x8c, 0xc2, 0x28, 0xad, 0x50, 0xb2, 0xce, 0xf6, + 0x91, 0xa3, 0xc3, 0xa5, 0x0a, 0x58, 0x49, 0xf6, 0x75, 0x44, 0x6c, 0xba, + 0xf9, 0xce, 0xe9, 0xab, 0x3a, 0x02, 0xe0, 0x4d, 0xf3, 0xac, 0xe2, 0x7a, + 0xe0, 0x60, 0x22, 0x05, 0x3c, 0x82, 0xd3, 0x52, 0xe2, 0xf3, 0x9c, 0x47, + 0xf8, 0x3b, 0xd8, 0xb2, 0x4b, 0x93, 0x56, 0x4a, 0xbf, 0x70, 0xab, 0x3e, + 0xe9, 0x68, 0xc8, 0x1d, 0x8f, 0x58, 0x1d, 0x2a, 0x4d, 0x5e, 0x27, 0x3d, + 0xad, 0x0a, 0x59, 0x2f, 0x5a, 0x11, 0x20, 0x40, 0xd9, 0x68, 0x04, 0x68, + 0x2d, 0xf4, 0xc0, 0x84, 0x0b, 0x0a, 0x1b, 0x78, 0xdf, 0xed, 0x1a, 0x58, + 0xdc, 0xfb, 0x41, 0x5a, 0x6d, 0x6b, 0xf2, 0xed, 0x1c, 0xee, 0x5c, 0x32, + 0xb6, 0x5c, 0xec, 0xd7, 0xa6, 0x03, 0x32, 0xa6, 0xe8, 0xde, 0xb7, 0x28, + 0x27, 0x59, 0x88, 0x80, 0xff, 0x7b, 0xad, 0x89, 0x58, 0xd5, 0x1e, 0x14, + 0xa4, 0xf2, 0xb0, 0x70, 0xd4, 0xa0, 0x3e, 0xa7, 0x02, 0x03, 0x01, 0x00, + 0x01, 0xa3, 0x82, 0x03, 0x85, 0x30, 0x82, 0x03, 0x81, 0x30, 0x0e, 0x06, + 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, + 0x86, 0x30, 0x3b, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, 0x34, 0x30, 0x32, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x01, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x03, 0x03, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x03, 0x04, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x03, 0x08, 0x30, 0x82, 0x01, 0xc4, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, + 0x82, 0x01, 0xbb, 0x30, 0x82, 0x01, 0xb7, 0x30, 0x82, 0x01, 0xb3, 0x06, + 0x09, 0x60, 0x86, 0x48, 0x01, 0x86, 0xfd, 0x6c, 0x02, 0x01, 0x30, 0x82, + 0x01, 0xa4, 0x30, 0x3a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x02, 0x01, 0x16, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, + 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x73, 0x6c, 0x2d, 0x63, 0x70, 0x73, 0x2d, + 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x68, + 0x74, 0x6d, 0x30, 0x82, 0x01, 0x64, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x02, 0x02, 0x30, 0x82, 0x01, 0x56, 0x1e, 0x82, 0x01, 0x52, + 0x00, 0x41, 0x00, 0x6e, 0x00, 0x79, 0x00, 0x20, 0x00, 0x75, 0x00, 0x73, + 0x00, 0x65, 0x00, 0x20, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x20, 0x00, 0x74, + 0x00, 0x68, 0x00, 0x69, 0x00, 0x73, 0x00, 0x20, 0x00, 0x43, 0x00, 0x65, + 0x00, 0x72, 0x00, 0x74, 0x00, 0x69, 0x00, 0x66, 0x00, 0x69, 0x00, 0x63, + 0x00, 0x61, 0x00, 0x74, 0x00, 0x65, 0x00, 0x20, 0x00, 0x63, 0x00, 0x6f, + 0x00, 0x6e, 0x00, 0x73, 0x00, 0x74, 0x00, 0x69, 0x00, 0x74, 0x00, 0x75, + 0x00, 0x74, 0x00, 0x65, 0x00, 0x73, 0x00, 0x20, 0x00, 0x61, 0x00, 0x63, + 0x00, 0x63, 0x00, 0x65, 0x00, 0x70, 0x00, 0x74, 0x00, 0x61, 0x00, 0x6e, + 0x00, 0x63, 0x00, 0x65, 0x00, 0x20, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x20, + 0x00, 0x74, 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x44, 0x00, 0x69, + 0x00, 0x67, 0x00, 0x69, 0x00, 0x43, 0x00, 0x65, 0x00, 0x72, 0x00, 0x74, + 0x00, 0x20, 0x00, 0x45, 0x00, 0x56, 0x00, 0x20, 0x00, 0x43, 0x00, 0x50, + 0x00, 0x53, 0x00, 0x20, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x64, 0x00, 0x20, + 0x00, 0x74, 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x52, 0x00, 0x65, + 0x00, 0x6c, 0x00, 0x79, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x67, 0x00, 0x20, + 0x00, 0x50, 0x00, 0x61, 0x00, 0x72, 0x00, 0x74, 0x00, 0x79, 0x00, 0x20, + 0x00, 0x41, 0x00, 0x67, 0x00, 0x72, 0x00, 0x65, 0x00, 0x65, 0x00, 0x6d, + 0x00, 0x65, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x20, 0x00, 0x77, 0x00, 0x68, + 0x00, 0x69, 0x00, 0x63, 0x00, 0x68, 0x00, 0x20, 0x00, 0x6c, 0x00, 0x69, + 0x00, 0x6d, 0x00, 0x69, 0x00, 0x74, 0x00, 0x20, 0x00, 0x6c, 0x00, 0x69, + 0x00, 0x61, 0x00, 0x62, 0x00, 0x69, 0x00, 0x6c, 0x00, 0x69, 0x00, 0x74, + 0x00, 0x79, 0x00, 0x20, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x64, 0x00, 0x20, + 0x00, 0x61, 0x00, 0x72, 0x00, 0x65, 0x00, 0x20, 0x00, 0x69, 0x00, 0x6e, + 0x00, 0x63, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x72, + 0x00, 0x61, 0x00, 0x74, 0x00, 0x65, 0x00, 0x64, 0x00, 0x20, 0x00, 0x68, + 0x00, 0x65, 0x00, 0x72, 0x00, 0x65, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x20, + 0x00, 0x62, 0x00, 0x79, 0x00, 0x20, 0x00, 0x72, 0x00, 0x65, 0x00, 0x66, + 0x00, 0x65, 0x00, 0x72, 0x00, 0x65, 0x00, 0x6e, 0x00, 0x63, 0x00, 0x65, + 0x00, 0x2e, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, + 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x81, + 0x83, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, + 0x77, 0x30, 0x75, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, + 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x4d, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x41, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, + 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x41, 0x43, 0x65, 0x72, + 0x74, 0x73, 0x2f, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x48, + 0x69, 0x67, 0x68, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, 0x65, + 0x45, 0x56, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x74, + 0x30, 0x81, 0x8f, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x81, 0x87, 0x30, + 0x81, 0x84, 0x30, 0x40, 0xa0, 0x3e, 0xa0, 0x3c, 0x86, 0x3a, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x33, 0x2e, 0x64, 0x69, + 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, + 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x48, 0x69, 0x67, 0x68, 0x41, + 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x45, 0x56, 0x52, 0x6f, + 0x6f, 0x74, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x40, 0xa0, 0x3e, + 0xa0, 0x3c, 0x86, 0x3a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, + 0x72, 0x6c, 0x34, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, + 0x74, 0x48, 0x69, 0x67, 0x68, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, + 0x63, 0x65, 0x45, 0x56, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, 0x2e, 0x63, + 0x72, 0x6c, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, + 0x14, 0x4c, 0x58, 0xcb, 0x25, 0xf0, 0x41, 0x4f, 0x52, 0xf4, 0x28, 0xc8, + 0x81, 0x43, 0x9b, 0xa6, 0xa8, 0xa0, 0xe6, 0x92, 0xe5, 0x30, 0x1f, 0x06, + 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xb1, 0x3e, + 0xc3, 0x69, 0x03, 0xf8, 0xbf, 0x47, 0x01, 0xd4, 0x98, 0x26, 0x1a, 0x08, + 0x02, 0xef, 0x63, 0x64, 0x2b, 0xc3, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x01, 0x00, 0x4c, 0x7a, 0x17, 0x87, 0x28, 0x5d, 0x17, 0xbc, 0xb2, 0x32, + 0x73, 0xbf, 0xcd, 0x2e, 0xf5, 0x58, 0x31, 0x1d, 0xf0, 0xb1, 0x71, 0x54, + 0x9c, 0xd6, 0x9b, 0x67, 0x93, 0xdb, 0x2f, 0x03, 0x3e, 0x16, 0x6f, 0x1e, + 0x03, 0xc9, 0x53, 0x84, 0xa3, 0x56, 0x60, 0x1e, 0x78, 0x94, 0x1b, 0xa2, + 0xa8, 0x6f, 0xa3, 0xa4, 0x8b, 0x52, 0x91, 0xd7, 0xdd, 0x5c, 0x95, 0xbb, + 0xef, 0xb5, 0x16, 0x49, 0xe9, 0xa5, 0x42, 0x4f, 0x34, 0xf2, 0x47, 0xff, + 0xae, 0x81, 0x7f, 0x13, 0x54, 0xb7, 0x20, 0xc4, 0x70, 0x15, 0xcb, 0x81, + 0x0a, 0x81, 0xcb, 0x74, 0x57, 0xdc, 0x9c, 0xdf, 0x24, 0xa4, 0x29, 0x0c, + 0x18, 0xf0, 0x1c, 0xe4, 0xae, 0x07, 0x33, 0xec, 0xf1, 0x49, 0x3e, 0x55, + 0xcf, 0x6e, 0x4f, 0x0d, 0x54, 0x7b, 0xd3, 0xc9, 0xe8, 0x15, 0x48, 0xd4, + 0xc5, 0xbb, 0xdc, 0x35, 0x1c, 0x77, 0x45, 0x07, 0x48, 0x45, 0x85, 0xbd, + 0xd7, 0x7e, 0x53, 0xb8, 0xc0, 0x16, 0xd9, 0x95, 0xcd, 0x8b, 0x8d, 0x7d, + 0xc9, 0x60, 0x4f, 0xd1, 0xa2, 0x9b, 0xe3, 0xd0, 0x30, 0xd6, 0xb4, 0x73, + 0x36, 0xe6, 0xd2, 0xf9, 0x03, 0xb2, 0xe3, 0xa4, 0xf5, 0xe5, 0xb8, 0x3e, + 0x04, 0x49, 0x00, 0xba, 0x2e, 0xa6, 0x4a, 0x72, 0x83, 0x72, 0x9d, 0xf7, + 0x0b, 0x8c, 0xa9, 0x89, 0xe7, 0xb3, 0xd7, 0x64, 0x1f, 0xd6, 0xe3, 0x60, + 0xcb, 0x03, 0xc4, 0xdc, 0x88, 0xe9, 0x9d, 0x25, 0x01, 0x00, 0x71, 0xcb, + 0x03, 0xb4, 0x29, 0x60, 0x25, 0x8f, 0xf9, 0x46, 0xd1, 0x7b, 0x71, 0xae, + 0xcd, 0x53, 0x12, 0x5b, 0x84, 0x8e, 0xc2, 0x0f, 0xc7, 0xed, 0x93, 0x19, + 0xd9, 0xc9, 0xfa, 0x8f, 0x58, 0x34, 0x76, 0x32, 0x2f, 0xae, 0xe1, 0x50, + 0x14, 0x61, 0xd4, 0xa8, 0x58, 0xa3, 0xc8, 0x30, 0x13, 0x23, 0xef, 0xc6, + 0x25, 0x8c, 0x36, 0x8f, 0x1c, 0x80, +} diff --git a/vendor/github.com/lucas-clemente/quic-go-certificates/cert_set_3.go b/vendor/github.com/lucas-clemente/quic-go-certificates/cert_set_3.go new file mode 100644 index 0000000..e3dfed9 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go-certificates/cert_set_3.go @@ -0,0 +1,5456 @@ +package certsets + +var CertSet3 = [][]byte{ + certSet3Cert0, + certSet3Cert1, + certSet3Cert2, + certSet3Cert3, + certSet3Cert4, + certSet3Cert5, + certSet3Cert6, + certSet3Cert7, + certSet3Cert8, + certSet3Cert9, + certSet3Cert10, + certSet3Cert11, + certSet3Cert12, + certSet3Cert13, + certSet3Cert14, + certSet3Cert15, + certSet3Cert16, + certSet3Cert17, + certSet3Cert18, + certSet3Cert19, + certSet3Cert20, + certSet3Cert21, + certSet3Cert22, + certSet3Cert23, + certSet3Cert24, + certSet3Cert25, + certSet3Cert26, + certSet3Cert27, + certSet3Cert28, + certSet3Cert29, + certSet3Cert30, + certSet3Cert31, + certSet3Cert32, + certSet3Cert33, + certSet3Cert34, + certSet3Cert35, + certSet3Cert36, + certSet3Cert37, + certSet3Cert38, + certSet3Cert39, + certSet3Cert40, + certSet3Cert41, + certSet3Cert42, + certSet3Cert43, + certSet3Cert44, + certSet3Cert45, + certSet3Cert46, + certSet3Cert47, + certSet3Cert48, + certSet3Cert49, + certSet3Cert50, + certSet3Cert51, +} + +const CertSet3Hash uint64 = (0x918215a28680ed7e) + +var certSet3Cert0 = []byte{ + 0x30, 0x82, 0x03, 0x7d, 0x30, 0x82, 0x02, 0xe6, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x12, 0xbb, 0xe6, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x4e, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x07, 0x45, + 0x71, 0x75, 0x69, 0x66, 0x61, 0x78, 0x31, 0x2d, 0x30, 0x2b, 0x06, 0x03, + 0x55, 0x04, 0x0b, 0x13, 0x24, 0x45, 0x71, 0x75, 0x69, 0x66, 0x61, 0x78, + 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x32, 0x30, + 0x35, 0x32, 0x31, 0x30, 0x34, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, + 0x31, 0x38, 0x30, 0x38, 0x32, 0x31, 0x30, 0x34, 0x30, 0x30, 0x30, 0x30, + 0x5a, 0x30, 0x42, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x12, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, + 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, + 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xda, 0xcc, 0x18, 0x63, 0x30, 0xfd, + 0xf4, 0x17, 0x23, 0x1a, 0x56, 0x7e, 0x5b, 0xdf, 0x3c, 0x6c, 0x38, 0xe4, + 0x71, 0xb7, 0x78, 0x91, 0xd4, 0xbc, 0xa1, 0xd8, 0x4c, 0xf8, 0xa8, 0x43, + 0xb6, 0x03, 0xe9, 0x4d, 0x21, 0x07, 0x08, 0x88, 0xda, 0x58, 0x2f, 0x66, + 0x39, 0x29, 0xbd, 0x05, 0x78, 0x8b, 0x9d, 0x38, 0xe8, 0x05, 0xb7, 0x6a, + 0x7e, 0x71, 0xa4, 0xe6, 0xc4, 0x60, 0xa6, 0xb0, 0xef, 0x80, 0xe4, 0x89, + 0x28, 0x0f, 0x9e, 0x25, 0xd6, 0xed, 0x83, 0xf3, 0xad, 0xa6, 0x91, 0xc7, + 0x98, 0xc9, 0x42, 0x18, 0x35, 0x14, 0x9d, 0xad, 0x98, 0x46, 0x92, 0x2e, + 0x4f, 0xca, 0xf1, 0x87, 0x43, 0xc1, 0x16, 0x95, 0x57, 0x2d, 0x50, 0xef, + 0x89, 0x2d, 0x80, 0x7a, 0x57, 0xad, 0xf2, 0xee, 0x5f, 0x6b, 0xd2, 0x00, + 0x8d, 0xb9, 0x14, 0xf8, 0x14, 0x15, 0x35, 0xd9, 0xc0, 0x46, 0xa3, 0x7b, + 0x72, 0xc8, 0x91, 0xbf, 0xc9, 0x55, 0x2b, 0xcd, 0xd0, 0x97, 0x3e, 0x9c, + 0x26, 0x64, 0xcc, 0xdf, 0xce, 0x83, 0x19, 0x71, 0xca, 0x4e, 0xe6, 0xd4, + 0xd5, 0x7b, 0xa9, 0x19, 0xcd, 0x55, 0xde, 0xc8, 0xec, 0xd2, 0x5e, 0x38, + 0x53, 0xe5, 0x5c, 0x4f, 0x8c, 0x2d, 0xfe, 0x50, 0x23, 0x36, 0xfc, 0x66, + 0xe6, 0xcb, 0x8e, 0xa4, 0x39, 0x19, 0x00, 0xb7, 0x95, 0x02, 0x39, 0x91, + 0x0b, 0x0e, 0xfe, 0x38, 0x2e, 0xd1, 0x1d, 0x05, 0x9a, 0xf6, 0x4d, 0x3e, + 0x6f, 0x0f, 0x07, 0x1d, 0xaf, 0x2c, 0x1e, 0x8f, 0x60, 0x39, 0xe2, 0xfa, + 0x36, 0x53, 0x13, 0x39, 0xd4, 0x5e, 0x26, 0x2b, 0xdb, 0x3d, 0xa8, 0x14, + 0xbd, 0x32, 0xeb, 0x18, 0x03, 0x28, 0x52, 0x04, 0x71, 0xe5, 0xab, 0x33, + 0x3d, 0xe1, 0x38, 0xbb, 0x07, 0x36, 0x84, 0x62, 0x9c, 0x79, 0xea, 0x16, + 0x30, 0xf4, 0x5f, 0xc0, 0x2b, 0xe8, 0x71, 0x6b, 0xe4, 0xf9, 0x02, 0x03, + 0x01, 0x00, 0x01, 0xa3, 0x81, 0xf0, 0x30, 0x81, 0xed, 0x30, 0x1f, 0x06, + 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x48, 0xe6, + 0x68, 0xf9, 0x2b, 0xd2, 0xb2, 0x95, 0xd7, 0x47, 0xd8, 0x23, 0x20, 0x10, + 0x4f, 0x33, 0x98, 0x90, 0x9f, 0xd4, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, + 0x0e, 0x04, 0x16, 0x04, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, + 0xab, 0x05, 0x64, 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, + 0x4e, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, + 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x3a, + 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x33, 0x30, 0x31, 0x30, 0x2f, 0xa0, + 0x2d, 0xa0, 0x2b, 0x86, 0x29, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x63, 0x72, 0x6c, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x73, 0x65, + 0x63, 0x75, 0x72, 0x65, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x4e, + 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x47, 0x30, 0x45, 0x30, 0x43, 0x06, + 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x3b, 0x30, 0x39, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x2d, 0x68, 0x74, 0x74, + 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, + 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x72, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, + 0x00, 0x76, 0xe1, 0x12, 0x6e, 0x4e, 0x4b, 0x16, 0x12, 0x86, 0x30, 0x06, + 0xb2, 0x81, 0x08, 0xcf, 0xf0, 0x08, 0xc7, 0xc7, 0x71, 0x7e, 0x66, 0xee, + 0xc2, 0xed, 0xd4, 0x3b, 0x1f, 0xff, 0xf0, 0xf0, 0xc8, 0x4e, 0xd6, 0x43, + 0x38, 0xb0, 0xb9, 0x30, 0x7d, 0x18, 0xd0, 0x55, 0x83, 0xa2, 0x6a, 0xcb, + 0x36, 0x11, 0x9c, 0xe8, 0x48, 0x66, 0xa3, 0x6d, 0x7f, 0xb8, 0x13, 0xd4, + 0x47, 0xfe, 0x8b, 0x5a, 0x5c, 0x73, 0xfc, 0xae, 0xd9, 0x1b, 0x32, 0x19, + 0x38, 0xab, 0x97, 0x34, 0x14, 0xaa, 0x96, 0xd2, 0xeb, 0xa3, 0x1c, 0x14, + 0x08, 0x49, 0xb6, 0xbb, 0xe5, 0x91, 0xef, 0x83, 0x36, 0xeb, 0x1d, 0x56, + 0x6f, 0xca, 0xda, 0xbc, 0x73, 0x63, 0x90, 0xe4, 0x7f, 0x7b, 0x3e, 0x22, + 0xcb, 0x3d, 0x07, 0xed, 0x5f, 0x38, 0x74, 0x9c, 0xe3, 0x03, 0x50, 0x4e, + 0xa1, 0xaf, 0x98, 0xee, 0x61, 0xf2, 0x84, 0x3f, 0x12, +} + +var certSet3Cert1 = []byte{ + 0x30, 0x82, 0x03, 0x8b, 0x30, 0x82, 0x02, 0xf4, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x0d, 0x6e, 0x62, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x4e, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x07, 0x45, + 0x71, 0x75, 0x69, 0x66, 0x61, 0x78, 0x31, 0x2d, 0x30, 0x2b, 0x06, 0x03, + 0x55, 0x04, 0x0b, 0x13, 0x24, 0x45, 0x71, 0x75, 0x69, 0x66, 0x61, 0x78, + 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x31, + 0x31, 0x32, 0x37, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, + 0x31, 0x38, 0x30, 0x38, 0x32, 0x31, 0x31, 0x36, 0x31, 0x35, 0x30, 0x30, + 0x5a, 0x30, 0x58, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x31, 0x30, 0x2f, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x28, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x82, 0x01, 0x22, 0x30, + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, + 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, + 0x82, 0x01, 0x01, 0x00, 0xbe, 0xb8, 0x15, 0x7b, 0xff, 0xd4, 0x7c, 0x7d, + 0x67, 0xad, 0x83, 0x64, 0x7b, 0xc8, 0x42, 0x53, 0x2d, 0xdf, 0xf6, 0x84, + 0x08, 0x20, 0x61, 0xd6, 0x01, 0x59, 0x6a, 0x9c, 0x44, 0x11, 0xaf, 0xef, + 0x76, 0xfd, 0x95, 0x7e, 0xce, 0x61, 0x30, 0xbb, 0x7a, 0x83, 0x5f, 0x02, + 0xbd, 0x01, 0x66, 0xca, 0xee, 0x15, 0x8d, 0x6f, 0xa1, 0x30, 0x9c, 0xbd, + 0xa1, 0x85, 0x9e, 0x94, 0x3a, 0xf3, 0x56, 0x88, 0x00, 0x31, 0xcf, 0xd8, + 0xee, 0x6a, 0x96, 0x02, 0xd9, 0xed, 0x03, 0x8c, 0xfb, 0x75, 0x6d, 0xe7, + 0xea, 0xb8, 0x55, 0x16, 0x05, 0x16, 0x9a, 0xf4, 0xe0, 0x5e, 0xb1, 0x88, + 0xc0, 0x64, 0x85, 0x5c, 0x15, 0x4d, 0x88, 0xc7, 0xb7, 0xba, 0xe0, 0x75, + 0xe9, 0xad, 0x05, 0x3d, 0x9d, 0xc7, 0x89, 0x48, 0xe0, 0xbb, 0x28, 0xc8, + 0x03, 0xe1, 0x30, 0x93, 0x64, 0x5e, 0x52, 0xc0, 0x59, 0x70, 0x22, 0x35, + 0x57, 0x88, 0x8a, 0xf1, 0x95, 0x0a, 0x83, 0xd7, 0xbc, 0x31, 0x73, 0x01, + 0x34, 0xed, 0xef, 0x46, 0x71, 0xe0, 0x6b, 0x02, 0xa8, 0x35, 0x72, 0x6b, + 0x97, 0x9b, 0x66, 0xe0, 0xcb, 0x1c, 0x79, 0x5f, 0xd8, 0x1a, 0x04, 0x68, + 0x1e, 0x47, 0x02, 0xe6, 0x9d, 0x60, 0xe2, 0x36, 0x97, 0x01, 0xdf, 0xce, + 0x35, 0x92, 0xdf, 0xbe, 0x67, 0xc7, 0x6d, 0x77, 0x59, 0x3b, 0x8f, 0x9d, + 0xd6, 0x90, 0x15, 0x94, 0xbc, 0x42, 0x34, 0x10, 0xc1, 0x39, 0xf9, 0xb1, + 0x27, 0x3e, 0x7e, 0xd6, 0x8a, 0x75, 0xc5, 0xb2, 0xaf, 0x96, 0xd3, 0xa2, + 0xde, 0x9b, 0xe4, 0x98, 0xbe, 0x7d, 0xe1, 0xe9, 0x81, 0xad, 0xb6, 0x6f, + 0xfc, 0xd7, 0x0e, 0xda, 0xe0, 0x34, 0xb0, 0x0d, 0x1a, 0x77, 0xe7, 0xe3, + 0x08, 0x98, 0xef, 0x58, 0xfa, 0x9c, 0x84, 0xb7, 0x36, 0xaf, 0xc2, 0xdf, + 0xac, 0xd2, 0xf4, 0x10, 0x06, 0x70, 0x71, 0x35, 0x02, 0x03, 0x01, 0x00, + 0x01, 0xa3, 0x81, 0xe8, 0x30, 0x81, 0xe5, 0x30, 0x0e, 0x06, 0x03, 0x55, + 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, + 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x2c, 0xd5, + 0x50, 0x41, 0x97, 0x15, 0x8b, 0xf0, 0x8f, 0x36, 0x61, 0x5b, 0x4a, 0xfb, + 0x6b, 0xd9, 0x99, 0xc9, 0x33, 0x92, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, + 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x48, 0xe6, 0x68, 0xf9, 0x2b, + 0xd2, 0xb2, 0x95, 0xd7, 0x47, 0xd8, 0x23, 0x20, 0x10, 0x4f, 0x33, 0x98, + 0x90, 0x9f, 0xd4, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, + 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x3a, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x33, 0x30, 0x31, 0x30, 0x2f, 0xa0, 0x2d, 0xa0, + 0x2b, 0x86, 0x29, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, + 0x6c, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x65, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x46, 0x06, 0x03, + 0x55, 0x1d, 0x20, 0x04, 0x3f, 0x30, 0x3d, 0x30, 0x3b, 0x06, 0x04, 0x55, + 0x1d, 0x20, 0x00, 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, + 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, + 0x81, 0x81, 0x00, 0xaf, 0xf3, 0x0e, 0xd6, 0x72, 0xab, 0xc7, 0xa9, 0x97, + 0xca, 0x2a, 0x6b, 0x84, 0x39, 0xde, 0x79, 0xa9, 0xf0, 0x81, 0xe5, 0x08, + 0x67, 0xab, 0xd7, 0x2f, 0x20, 0x02, 0x01, 0x71, 0x0c, 0x04, 0x22, 0xc9, + 0x1e, 0x88, 0x95, 0x03, 0xc9, 0x49, 0x3a, 0xaf, 0x67, 0x08, 0x49, 0xb0, + 0xd5, 0x08, 0xf5, 0x20, 0x3d, 0x80, 0x91, 0xa0, 0xc5, 0x87, 0xa3, 0xfb, + 0xc9, 0xa3, 0x17, 0x91, 0xf9, 0xa8, 0x2f, 0xae, 0xe9, 0x0f, 0xdf, 0x96, + 0x72, 0x0f, 0x75, 0x17, 0x80, 0x5d, 0x78, 0x01, 0x4d, 0x9f, 0x1f, 0x6d, + 0x7b, 0xd8, 0xf5, 0x42, 0x38, 0x23, 0x1a, 0x99, 0x93, 0xf4, 0x83, 0xbe, + 0x3b, 0x35, 0x74, 0xe7, 0x37, 0x13, 0x35, 0x7a, 0xac, 0xb4, 0xb6, 0x90, + 0x82, 0x6c, 0x27, 0xa4, 0xe0, 0xec, 0x9e, 0x35, 0xbd, 0xbf, 0xe5, 0x29, + 0xa1, 0x47, 0x9f, 0x5b, 0x32, 0xfc, 0xe9, 0x99, 0x7d, 0x2b, 0x39, +} + +var certSet3Cert2 = []byte{ + 0x30, 0x82, 0x03, 0xf0, 0x30, 0x82, 0x02, 0xd8, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x02, 0x3a, 0x92, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x35, 0x30, + 0x34, 0x30, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, + 0x31, 0x37, 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, + 0x5a, 0x30, 0x49, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x20, 0x49, 0x6e, + 0x63, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1c, + 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x6e, 0x65, 0x74, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, + 0x00, 0x9c, 0x2a, 0x04, 0x77, 0x5c, 0xd8, 0x50, 0x91, 0x3a, 0x06, 0xa3, + 0x82, 0xe0, 0xd8, 0x50, 0x48, 0xbc, 0x89, 0x3f, 0xf1, 0x19, 0x70, 0x1a, + 0x88, 0x46, 0x7e, 0xe0, 0x8f, 0xc5, 0xf1, 0x89, 0xce, 0x21, 0xee, 0x5a, + 0xfe, 0x61, 0x0d, 0xb7, 0x32, 0x44, 0x89, 0xa0, 0x74, 0x0b, 0x53, 0x4f, + 0x55, 0xa4, 0xce, 0x82, 0x62, 0x95, 0xee, 0xeb, 0x59, 0x5f, 0xc6, 0xe1, + 0x05, 0x80, 0x12, 0xc4, 0x5e, 0x94, 0x3f, 0xbc, 0x5b, 0x48, 0x38, 0xf4, + 0x53, 0xf7, 0x24, 0xe6, 0xfb, 0x91, 0xe9, 0x15, 0xc4, 0xcf, 0xf4, 0x53, + 0x0d, 0xf4, 0x4a, 0xfc, 0x9f, 0x54, 0xde, 0x7d, 0xbe, 0xa0, 0x6b, 0x6f, + 0x87, 0xc0, 0xd0, 0x50, 0x1f, 0x28, 0x30, 0x03, 0x40, 0xda, 0x08, 0x73, + 0x51, 0x6c, 0x7f, 0xff, 0x3a, 0x3c, 0xa7, 0x37, 0x06, 0x8e, 0xbd, 0x4b, + 0x11, 0x04, 0xeb, 0x7d, 0x24, 0xde, 0xe6, 0xf9, 0xfc, 0x31, 0x71, 0xfb, + 0x94, 0xd5, 0x60, 0xf3, 0x2e, 0x4a, 0xaf, 0x42, 0xd2, 0xcb, 0xea, 0xc4, + 0x6a, 0x1a, 0xb2, 0xcc, 0x53, 0xdd, 0x15, 0x4b, 0x8b, 0x1f, 0xc8, 0x19, + 0x61, 0x1f, 0xcd, 0x9d, 0xa8, 0x3e, 0x63, 0x2b, 0x84, 0x35, 0x69, 0x65, + 0x84, 0xc8, 0x19, 0xc5, 0x46, 0x22, 0xf8, 0x53, 0x95, 0xbe, 0xe3, 0x80, + 0x4a, 0x10, 0xc6, 0x2a, 0xec, 0xba, 0x97, 0x20, 0x11, 0xc7, 0x39, 0x99, + 0x10, 0x04, 0xa0, 0xf0, 0x61, 0x7a, 0x95, 0x25, 0x8c, 0x4e, 0x52, 0x75, + 0xe2, 0xb6, 0xed, 0x08, 0xca, 0x14, 0xfc, 0xce, 0x22, 0x6a, 0xb3, 0x4e, + 0xcf, 0x46, 0x03, 0x97, 0x97, 0x03, 0x7e, 0xc0, 0xb1, 0xde, 0x7b, 0xaf, + 0x45, 0x33, 0xcf, 0xba, 0x3e, 0x71, 0xb7, 0xde, 0xf4, 0x25, 0x25, 0xc2, + 0x0d, 0x35, 0x89, 0x9d, 0x9d, 0xfb, 0x0e, 0x11, 0x79, 0x89, 0x1e, 0x37, + 0xc5, 0xaf, 0x8e, 0x72, 0x69, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x81, + 0xe7, 0x30, 0x81, 0xe4, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, + 0x18, 0x30, 0x16, 0x80, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, + 0xab, 0x05, 0x64, 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, + 0x4e, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0x4a, 0xdd, 0x06, 0x16, 0x1b, 0xbc, 0xf6, 0x68, 0xb5, 0x76, 0xf5, 0x81, + 0xb6, 0xbb, 0x62, 0x1a, 0xba, 0x5a, 0x81, 0x2f, 0x30, 0x0e, 0x06, 0x03, + 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, + 0x30, 0x2e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, + 0x04, 0x22, 0x30, 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x30, 0x01, 0x86, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x67, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x64, 0x2e, 0x63, 0x6f, 0x6d, + 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, + 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x35, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x2e, 0x30, 0x2c, 0x30, 0x2a, 0xa0, 0x28, 0xa0, + 0x26, 0x86, 0x24, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, + 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, + 0x6c, 0x73, 0x2f, 0x67, 0x74, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x17, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x10, + 0x30, 0x0e, 0x30, 0x0c, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xd6, + 0x79, 0x02, 0x05, 0x01, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, + 0x08, 0x4e, 0x04, 0xa7, 0x80, 0x7f, 0x10, 0x16, 0x43, 0x5e, 0x02, 0xad, + 0xd7, 0x42, 0x80, 0xf4, 0xb0, 0x8e, 0xd2, 0xae, 0xb3, 0xeb, 0x11, 0x7d, + 0x90, 0x84, 0x18, 0x7d, 0xe7, 0x90, 0x15, 0xfb, 0x49, 0x7f, 0xa8, 0x99, + 0x05, 0x91, 0xbb, 0x7a, 0xc9, 0xd6, 0x3c, 0x37, 0x18, 0x09, 0x9a, 0xb6, + 0xc7, 0x92, 0x20, 0x07, 0x35, 0x33, 0x09, 0xe4, 0x28, 0x63, 0x72, 0x0d, + 0xb4, 0xe0, 0x32, 0x9c, 0x87, 0x98, 0xc4, 0x1b, 0x76, 0x89, 0x67, 0xc1, + 0x50, 0x58, 0xb0, 0x13, 0xaa, 0x13, 0x1a, 0x1b, 0x32, 0xa5, 0xbe, 0xea, + 0x11, 0x95, 0x4c, 0x48, 0x63, 0x49, 0xe9, 0x99, 0x5d, 0x20, 0x37, 0xcc, + 0xfe, 0x2a, 0x69, 0x51, 0x16, 0x95, 0x4b, 0xa9, 0xde, 0x49, 0x82, 0xc0, + 0x10, 0x70, 0xf4, 0x2c, 0xf3, 0xec, 0xbc, 0x24, 0x24, 0xd0, 0x4e, 0xac, + 0xa5, 0xd9, 0x5e, 0x1e, 0x6d, 0x92, 0xc1, 0xa7, 0xac, 0x48, 0x35, 0x81, + 0xf9, 0xe5, 0xe4, 0x9c, 0x65, 0x69, 0xcd, 0x87, 0xa4, 0x41, 0x50, 0x3f, + 0x2e, 0x57, 0xa5, 0x91, 0x51, 0x12, 0x58, 0x0e, 0x8c, 0x09, 0xa1, 0xac, + 0x7a, 0xa4, 0x12, 0xa5, 0x27, 0xf3, 0x9a, 0x10, 0x97, 0x7d, 0x55, 0x03, + 0x06, 0xf7, 0x66, 0x58, 0x5f, 0x5f, 0x64, 0xe1, 0xab, 0x5d, 0x6d, 0xa5, + 0x39, 0x48, 0x75, 0x98, 0x4c, 0x29, 0x5a, 0x3a, 0x8d, 0xd3, 0x2b, 0xca, + 0x9c, 0x55, 0x04, 0xbf, 0xf4, 0xe6, 0x14, 0xd5, 0x80, 0xac, 0x26, 0xed, + 0x17, 0x89, 0xa6, 0x93, 0x6c, 0x5c, 0xa4, 0xcc, 0xb8, 0xf0, 0x66, 0x8e, + 0x64, 0xe3, 0x7d, 0x9a, 0xe2, 0x00, 0xb3, 0x49, 0xc7, 0xe4, 0x0a, 0xaa, + 0xdd, 0x5b, 0x83, 0xc7, 0x70, 0x90, 0x46, 0x4e, 0xbe, 0xd0, 0xdb, 0x59, + 0x96, 0x6c, 0x2e, 0xf5, 0x16, 0x36, 0xde, 0x71, 0xcc, 0x01, 0xc2, 0x12, + 0xc1, 0x21, 0xc6, 0x16, +} + +var certSet3Cert3 = []byte{ + 0x30, 0x82, 0x04, 0x15, 0x30, 0x82, 0x03, 0x7e, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x04, 0x07, 0x27, 0x8e, 0xed, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x75, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0f, + 0x47, 0x54, 0x45, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x1e, 0x47, 0x54, 0x45, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, + 0x72, 0x75, 0x73, 0x74, 0x20, 0x53, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x23, 0x30, 0x21, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1a, 0x47, 0x54, 0x45, 0x20, 0x43, + 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, + 0x0d, 0x31, 0x32, 0x30, 0x34, 0x31, 0x38, 0x31, 0x36, 0x33, 0x36, 0x31, + 0x38, 0x5a, 0x17, 0x0d, 0x31, 0x38, 0x30, 0x38, 0x31, 0x33, 0x31, 0x36, + 0x33, 0x35, 0x31, 0x37, 0x5a, 0x30, 0x5a, 0x31, 0x0b, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, 0x45, 0x31, 0x12, 0x30, 0x10, + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x09, 0x42, 0x61, 0x6c, 0x74, 0x69, + 0x6d, 0x6f, 0x72, 0x65, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, + 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x19, + 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x43, 0x79, + 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6f, 0x6f, + 0x74, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, + 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, + 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xa3, 0x04, + 0xbb, 0x22, 0xab, 0x98, 0x3d, 0x57, 0xe8, 0x26, 0x72, 0x9a, 0xb5, 0x79, + 0xd4, 0x29, 0xe2, 0xe1, 0xe8, 0x95, 0x80, 0xb1, 0xb0, 0xe3, 0x5b, 0x8e, + 0x2b, 0x29, 0x9a, 0x64, 0xdf, 0xa1, 0x5d, 0xed, 0xb0, 0x09, 0x05, 0x6d, + 0xdb, 0x28, 0x2e, 0xce, 0x62, 0xa2, 0x62, 0xfe, 0xb4, 0x88, 0xda, 0x12, + 0xeb, 0x38, 0xeb, 0x21, 0x9d, 0xc0, 0x41, 0x2b, 0x01, 0x52, 0x7b, 0x88, + 0x77, 0xd3, 0x1c, 0x8f, 0xc7, 0xba, 0xb9, 0x88, 0xb5, 0x6a, 0x09, 0xe7, + 0x73, 0xe8, 0x11, 0x40, 0xa7, 0xd1, 0xcc, 0xca, 0x62, 0x8d, 0x2d, 0xe5, + 0x8f, 0x0b, 0xa6, 0x50, 0xd2, 0xa8, 0x50, 0xc3, 0x28, 0xea, 0xf5, 0xab, + 0x25, 0x87, 0x8a, 0x9a, 0x96, 0x1c, 0xa9, 0x67, 0xb8, 0x3f, 0x0c, 0xd5, + 0xf7, 0xf9, 0x52, 0x13, 0x2f, 0xc2, 0x1b, 0xd5, 0x70, 0x70, 0xf0, 0x8f, + 0xc0, 0x12, 0xca, 0x06, 0xcb, 0x9a, 0xe1, 0xd9, 0xca, 0x33, 0x7a, 0x77, + 0xd6, 0xf8, 0xec, 0xb9, 0xf1, 0x68, 0x44, 0x42, 0x48, 0x13, 0xd2, 0xc0, + 0xc2, 0xa4, 0xae, 0x5e, 0x60, 0xfe, 0xb6, 0xa6, 0x05, 0xfc, 0xb4, 0xdd, + 0x07, 0x59, 0x02, 0xd4, 0x59, 0x18, 0x98, 0x63, 0xf5, 0xa5, 0x63, 0xe0, + 0x90, 0x0c, 0x7d, 0x5d, 0xb2, 0x06, 0x7a, 0xf3, 0x85, 0xea, 0xeb, 0xd4, + 0x03, 0xae, 0x5e, 0x84, 0x3e, 0x5f, 0xff, 0x15, 0xed, 0x69, 0xbc, 0xf9, + 0x39, 0x36, 0x72, 0x75, 0xcf, 0x77, 0x52, 0x4d, 0xf3, 0xc9, 0x90, 0x2c, + 0xb9, 0x3d, 0xe5, 0xc9, 0x23, 0x53, 0x3f, 0x1f, 0x24, 0x98, 0x21, 0x5c, + 0x07, 0x99, 0x29, 0xbd, 0xc6, 0x3a, 0xec, 0xe7, 0x6e, 0x86, 0x3a, 0x6b, + 0x97, 0x74, 0x63, 0x33, 0xbd, 0x68, 0x18, 0x31, 0xf0, 0x78, 0x8d, 0x76, + 0xbf, 0xfc, 0x9e, 0x8e, 0x5d, 0x2a, 0x86, 0xa7, 0x4d, 0x90, 0xdc, 0x27, + 0x1a, 0x39, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x47, 0x30, + 0x82, 0x01, 0x43, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, + 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x03, 0x30, + 0x4a, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x43, 0x30, 0x41, 0x30, 0x3f, + 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x37, 0x30, 0x35, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x29, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x6f, 0x72, 0x79, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, + 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x81, 0x89, 0x06, 0x03, + 0x55, 0x1d, 0x23, 0x04, 0x81, 0x81, 0x30, 0x7f, 0xa1, 0x79, 0xa4, 0x77, + 0x30, 0x75, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0a, + 0x13, 0x0f, 0x47, 0x54, 0x45, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, + 0x04, 0x0b, 0x13, 0x1e, 0x47, 0x54, 0x45, 0x20, 0x43, 0x79, 0x62, 0x65, + 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x53, 0x6f, 0x6c, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x23, + 0x30, 0x21, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1a, 0x47, 0x54, 0x45, + 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x82, + 0x02, 0x01, 0xa5, 0x30, 0x45, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x3e, + 0x30, 0x3c, 0x30, 0x3a, 0xa0, 0x38, 0xa0, 0x36, 0x86, 0x34, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x2d, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x63, 0x67, 0x69, 0x2d, 0x62, 0x69, 0x6e, 0x2f, 0x43, 0x52, + 0x4c, 0x2f, 0x32, 0x30, 0x31, 0x38, 0x2f, 0x63, 0x64, 0x70, 0x2e, 0x63, + 0x72, 0x6c, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x93, 0x1d, 0xfe, + 0x8b, 0xae, 0x46, 0xec, 0xcb, 0xa9, 0x0f, 0xab, 0xe5, 0xef, 0xca, 0xb2, + 0x68, 0x16, 0x68, 0xd8, 0x8f, 0xfa, 0x13, 0xa9, 0xaf, 0xb3, 0xcb, 0x2d, + 0xe7, 0x4b, 0x6e, 0x8e, 0x69, 0x2a, 0xc2, 0x2b, 0x10, 0x0a, 0x8d, 0xf6, + 0xae, 0x73, 0xb6, 0xb9, 0xfb, 0x14, 0xfd, 0x5f, 0x6d, 0xb8, 0x50, 0xb6, + 0xc4, 0x8a, 0xd6, 0x40, 0x7e, 0xd7, 0xc3, 0xcb, 0x73, 0xdc, 0xc9, 0x5d, + 0x5b, 0xaf, 0xb0, 0x41, 0xb5, 0x37, 0xeb, 0xea, 0xdc, 0x20, 0x91, 0xc4, + 0x34, 0x6a, 0xf4, 0xa1, 0xf3, 0x96, 0x9d, 0x37, 0x86, 0x97, 0xe1, 0x71, + 0xa4, 0xdd, 0x7d, 0xfa, 0x44, 0x84, 0x94, 0xae, 0xd7, 0x09, 0x04, 0x22, + 0x76, 0x0f, 0x64, 0x51, 0x35, 0xa9, 0x24, 0x0f, 0xf9, 0x0b, 0xdb, 0x32, + 0xda, 0xc2, 0xfe, 0xc1, 0xb9, 0x2a, 0x5c, 0x7a, 0x27, 0x13, 0xca, 0xb1, + 0x48, 0x3a, 0x71, 0xd0, 0x43, +} + +var certSet3Cert4 = []byte{ + 0x30, 0x82, 0x04, 0x25, 0x30, 0x82, 0x03, 0x0d, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x02, 0x3a, 0x77, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x30, + 0x38, 0x32, 0x39, 0x32, 0x31, 0x33, 0x39, 0x33, 0x32, 0x5a, 0x17, 0x0d, + 0x32, 0x32, 0x30, 0x35, 0x32, 0x30, 0x32, 0x31, 0x33, 0x39, 0x33, 0x32, + 0x5a, 0x30, 0x47, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x17, 0x52, 0x61, 0x70, 0x69, 0x64, 0x53, 0x53, 0x4c, 0x20, + 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, + 0x47, 0x33, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xaf, + 0x54, 0x9b, 0xd9, 0x58, 0x5d, 0x1e, 0x2c, 0x56, 0xc6, 0xd5, 0xe8, 0x7f, + 0xf4, 0x7d, 0x16, 0x03, 0xff, 0xd0, 0x8b, 0x5a, 0xe4, 0x8e, 0xa7, 0xdd, + 0x54, 0x2e, 0xd4, 0x04, 0xc0, 0x5d, 0x98, 0x9c, 0x8d, 0x90, 0x0f, 0xbc, + 0x10, 0x65, 0x5f, 0xda, 0x9a, 0xd6, 0x44, 0x7c, 0xc0, 0x9f, 0xb5, 0xe9, + 0x4a, 0x8c, 0x0b, 0x06, 0x43, 0x04, 0xbb, 0xf4, 0x96, 0xe2, 0x26, 0xf6, + 0x61, 0x01, 0x91, 0x66, 0x31, 0x22, 0xc3, 0x34, 0x34, 0x5f, 0x3f, 0x3f, + 0x91, 0x2f, 0x44, 0x5f, 0xdc, 0xc7, 0x14, 0xb6, 0x03, 0x9f, 0x86, 0x4b, + 0x0e, 0xa3, 0xff, 0xa0, 0x80, 0x02, 0x83, 0xc3, 0xd3, 0x1f, 0x69, 0x52, + 0xd6, 0x9d, 0x64, 0x0f, 0xc9, 0x83, 0xe7, 0x1b, 0xc4, 0x70, 0xac, 0x94, + 0xe7, 0xc3, 0xa4, 0x6a, 0x2c, 0xbd, 0xb8, 0x9e, 0x69, 0xd8, 0xbe, 0x0a, + 0x8f, 0x16, 0x63, 0x5a, 0x68, 0x71, 0x80, 0x7b, 0x30, 0xde, 0x15, 0x04, + 0xbf, 0xcc, 0xd3, 0xbf, 0x3e, 0x48, 0x05, 0x55, 0x7a, 0xb3, 0xd7, 0x10, + 0x0c, 0x03, 0xfc, 0x9b, 0xfd, 0x08, 0xa7, 0x8c, 0x8c, 0xdb, 0xa7, 0x8e, + 0xf1, 0x1e, 0x63, 0xdc, 0xb3, 0x01, 0x2f, 0x7f, 0xaf, 0x57, 0xc3, 0x3c, + 0x48, 0xa7, 0x83, 0x68, 0x21, 0xa7, 0x2f, 0xe7, 0xa7, 0x3f, 0xf0, 0xb5, + 0x0c, 0xfc, 0xf5, 0x84, 0xd1, 0x53, 0xbc, 0x0e, 0x72, 0x4f, 0x60, 0x0c, + 0x42, 0xb8, 0x98, 0xad, 0x19, 0x88, 0x57, 0xd7, 0x04, 0xec, 0x87, 0xbf, + 0x7e, 0x87, 0x4e, 0xa3, 0x21, 0xf9, 0x53, 0xfd, 0x36, 0x98, 0x48, 0x8d, + 0xd6, 0xf8, 0xbb, 0x48, 0xf2, 0x29, 0xc8, 0x64, 0xd1, 0xcc, 0x54, 0x48, + 0x53, 0x8b, 0xaf, 0xb7, 0x65, 0x1e, 0xbf, 0x29, 0x33, 0x29, 0xd9, 0x29, + 0x60, 0x48, 0xf8, 0xff, 0x91, 0xbc, 0x57, 0x58, 0xe5, 0x35, 0x2e, 0xbb, + 0x69, 0xb6, 0x59, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x1d, + 0x30, 0x82, 0x01, 0x19, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, + 0x18, 0x30, 0x16, 0x80, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, + 0xab, 0x05, 0x64, 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, + 0x4e, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0xc3, 0x9c, 0xf3, 0xfc, 0xd3, 0x46, 0x08, 0x34, 0xbb, 0xce, 0x46, 0x7f, + 0xa0, 0x7c, 0x5b, 0xf3, 0xe2, 0x08, 0xcb, 0x59, 0x30, 0x12, 0x06, 0x03, + 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, + 0xff, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, + 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x35, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x2e, 0x30, 0x2c, 0x30, 0x2a, 0xa0, 0x28, 0xa0, + 0x26, 0x86, 0x24, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, + 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, + 0x6c, 0x73, 0x2f, 0x67, 0x74, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x2e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x01, 0x01, 0x04, 0x22, 0x30, 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x12, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x64, 0x2e, + 0x63, 0x6f, 0x6d, 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, + 0x30, 0x43, 0x30, 0x41, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, + 0x45, 0x01, 0x07, 0x36, 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, + 0x03, 0x82, 0x01, 0x01, 0x00, 0xa3, 0x58, 0x1e, 0xc6, 0x43, 0x32, 0xac, + 0xac, 0x2f, 0x93, 0x78, 0xb7, 0xea, 0xae, 0x54, 0x40, 0x47, 0x2d, 0x7e, + 0x78, 0x8d, 0x50, 0xf6, 0xf8, 0x66, 0xac, 0xd6, 0x4f, 0x73, 0xd6, 0x44, + 0xef, 0xaf, 0x0b, 0xcc, 0x5b, 0xc1, 0xf4, 0x4f, 0x9a, 0x8f, 0x49, 0x7e, + 0x60, 0xaf, 0xc2, 0x27, 0xc7, 0x16, 0xf1, 0xfb, 0x93, 0x81, 0x90, 0xa9, + 0x7c, 0xef, 0x6f, 0x7e, 0x6e, 0x45, 0x94, 0x16, 0x84, 0xbd, 0xec, 0x49, + 0xf1, 0xc4, 0x0e, 0xf4, 0xaf, 0x04, 0x59, 0x83, 0x87, 0x0f, 0x2c, 0x3b, + 0x97, 0xc3, 0x5a, 0x12, 0x9b, 0x7b, 0x04, 0x35, 0x7b, 0xa3, 0x95, 0x33, + 0x08, 0x7b, 0x93, 0x71, 0x22, 0x42, 0xb3, 0xa9, 0xd9, 0x6f, 0x4f, 0x81, + 0x92, 0xfc, 0x07, 0xb6, 0x79, 0xbc, 0x84, 0x4a, 0x9d, 0x77, 0x09, 0xf1, + 0xc5, 0x89, 0xf2, 0xf0, 0xb4, 0x9c, 0x54, 0xaa, 0x12, 0x7b, 0x0d, 0xba, + 0x4f, 0xef, 0x93, 0x19, 0xec, 0xef, 0x7d, 0x4e, 0x61, 0xa3, 0x8e, 0x76, + 0x9c, 0x59, 0xcf, 0x8c, 0x94, 0xb1, 0x84, 0x97, 0xf7, 0x1a, 0xb9, 0x07, + 0xb8, 0xb2, 0xc6, 0x4f, 0x13, 0x79, 0xdb, 0xbf, 0x4f, 0x51, 0x1b, 0x7f, + 0x69, 0x0d, 0x51, 0x2a, 0xc1, 0xd6, 0x15, 0xff, 0x37, 0x51, 0x34, 0x65, + 0x51, 0xf4, 0x1e, 0xbe, 0x38, 0x6a, 0xec, 0x0e, 0xab, 0xbf, 0x3d, 0x7b, + 0x39, 0x05, 0x7b, 0xf4, 0xf3, 0xfb, 0x1a, 0xa1, 0xd0, 0xc8, 0x7e, 0x4e, + 0x64, 0x8d, 0xcd, 0x8c, 0x61, 0x55, 0x90, 0xfe, 0x3a, 0xca, 0x5d, 0x25, + 0x0f, 0xf8, 0x1d, 0xa3, 0x4a, 0x74, 0x56, 0x4f, 0x1a, 0x55, 0x40, 0x70, + 0x75, 0x25, 0xa6, 0x33, 0x2e, 0xba, 0x4b, 0xa5, 0x5d, 0x53, 0x9a, 0x0d, + 0x30, 0xe1, 0x8d, 0x5f, 0x61, 0x2c, 0xaf, 0xcc, 0xef, 0xb0, 0x99, 0xa1, + 0x80, 0xff, 0x0b, 0xf2, 0x62, 0x4c, 0x70, 0x26, 0x98, +} + +var certSet3Cert5 = []byte{ + 0x30, 0x82, 0x04, 0x44, 0x30, 0x82, 0x03, 0x2c, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x02, 0x3a, 0x78, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x30, + 0x38, 0x32, 0x39, 0x32, 0x32, 0x32, 0x34, 0x35, 0x38, 0x5a, 0x17, 0x0d, + 0x32, 0x32, 0x30, 0x35, 0x32, 0x30, 0x32, 0x32, 0x32, 0x34, 0x35, 0x38, + 0x5a, 0x30, 0x66, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, + 0x0b, 0x13, 0x14, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x20, 0x53, 0x53, 0x4c, 0x31, + 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x17, 0x47, 0x65, + 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x44, 0x56, 0x20, 0x53, 0x53, + 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x34, 0x30, 0x82, 0x01, + 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, + 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xdf, 0x41, 0x94, 0x7a, 0xda, 0xf7, + 0xe4, 0x31, 0x43, 0xb6, 0xea, 0x01, 0x1b, 0x5c, 0xce, 0x63, 0xea, 0xfa, + 0x6d, 0xa3, 0xd9, 0x6a, 0xee, 0x2d, 0x9a, 0x75, 0xf9, 0xd5, 0x9c, 0x5b, + 0xbd, 0x34, 0xdf, 0xd8, 0x1c, 0xc9, 0x6d, 0xd8, 0x04, 0x88, 0xda, 0x6e, + 0xb5, 0xb7, 0xb5, 0xf0, 0x30, 0xae, 0x40, 0xd6, 0x5d, 0xfa, 0xc4, 0x53, + 0xc1, 0xd4, 0x22, 0x9d, 0x04, 0x4e, 0x11, 0xa6, 0x95, 0xd5, 0x45, 0x7c, + 0x41, 0x05, 0x58, 0xe0, 0x4c, 0xdd, 0xf9, 0xee, 0x55, 0xbd, 0x5f, 0x46, + 0xdc, 0xad, 0x13, 0x08, 0x9d, 0x2c, 0xe4, 0xf7, 0x82, 0xe6, 0x07, 0x2b, + 0x9e, 0x0e, 0x8c, 0x34, 0xa1, 0xce, 0xc4, 0xa1, 0xe0, 0x81, 0x70, 0x86, + 0x00, 0x06, 0x3f, 0x2d, 0xea, 0x7c, 0x9b, 0x28, 0xae, 0x1b, 0x28, 0x8b, + 0x39, 0x09, 0xd3, 0xe7, 0xf0, 0x45, 0xa4, 0xb1, 0xba, 0x11, 0x67, 0x90, + 0x55, 0x7b, 0x8f, 0xde, 0xed, 0x38, 0x5c, 0xa1, 0xe1, 0xe3, 0x83, 0xc4, + 0xc3, 0x72, 0x91, 0x4f, 0x98, 0xee, 0x1c, 0xc2, 0x80, 0xaa, 0x64, 0xa5, + 0x3e, 0x83, 0x62, 0x1c, 0xcc, 0xe0, 0x9e, 0xf8, 0x5a, 0xc0, 0x13, 0x12, + 0x7d, 0xa2, 0xa7, 0x8b, 0xa3, 0xe7, 0x9f, 0x2a, 0xd7, 0x9b, 0xca, 0xcb, + 0xed, 0x97, 0x01, 0x9c, 0x28, 0x84, 0x51, 0x04, 0x50, 0x41, 0xbc, 0xb4, + 0xfc, 0x78, 0xe9, 0x1b, 0xcf, 0x14, 0xea, 0x1f, 0x0f, 0xfc, 0x2e, 0x01, + 0x32, 0x8d, 0xb6, 0x35, 0xcb, 0x0a, 0x18, 0x3b, 0xec, 0x5a, 0x3e, 0x3c, + 0x1b, 0xd3, 0x99, 0x43, 0x1e, 0x2f, 0xf7, 0xbd, 0xf3, 0x5b, 0x12, 0xb9, + 0x07, 0x5e, 0xed, 0x3e, 0xd1, 0xa9, 0x87, 0xcc, 0x77, 0x72, 0x27, 0xd4, + 0xd9, 0x75, 0xa2, 0x63, 0x4b, 0x93, 0x36, 0xbd, 0xe5, 0x5c, 0xd7, 0xbf, + 0x5f, 0x79, 0x0d, 0xb3, 0x32, 0xa7, 0x0b, 0xb2, 0x63, 0x23, 0x02, 0x03, + 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x1d, 0x30, 0x82, 0x01, 0x19, 0x30, + 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, + 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, 0xab, 0x05, 0x64, 0x0c, 0x11, + 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, 0x4e, 0x30, 0x1d, 0x06, 0x03, + 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x0b, 0x50, 0xec, 0x77, 0xef, + 0x2a, 0x9b, 0xff, 0xec, 0x03, 0xa1, 0x0a, 0xff, 0xad, 0xc6, 0xe4, 0x2a, + 0x18, 0xc7, 0x3e, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, + 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, + 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, + 0x02, 0x01, 0x06, 0x30, 0x35, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2e, + 0x30, 0x2c, 0x30, 0x2a, 0xa0, 0x28, 0xa0, 0x26, 0x86, 0x24, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x67, 0x74, + 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x2e, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x22, + 0x30, 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x30, 0x01, 0x86, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, + 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x64, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x4c, + 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, 0x41, 0x06, + 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07, 0x36, 0x30, + 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, + 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, + 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x2f, 0x63, 0x70, 0x73, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, + 0x33, 0x24, 0xd5, 0x90, 0xaa, 0x29, 0x0c, 0x35, 0xb9, 0x2f, 0xc3, 0xc7, + 0x42, 0x93, 0xc0, 0xc6, 0x10, 0x4b, 0x03, 0x08, 0x76, 0x84, 0x10, 0xa2, + 0xe0, 0xe7, 0x53, 0x12, 0x27, 0xf2, 0x0a, 0xda, 0x7f, 0x3a, 0xdc, 0xfd, + 0x5c, 0x79, 0x5a, 0x8f, 0x17, 0x74, 0x43, 0x53, 0xb1, 0xd5, 0xd1, 0x5d, + 0x59, 0xb9, 0xa6, 0x84, 0x64, 0xca, 0xf1, 0x3a, 0x0a, 0x59, 0x96, 0x10, + 0xbf, 0xa9, 0x81, 0x57, 0x8b, 0x5c, 0x87, 0xdc, 0x7f, 0xe3, 0xe4, 0xbb, + 0x05, 0x7a, 0xa0, 0x32, 0x09, 0x13, 0x4e, 0x10, 0x81, 0x28, 0x1f, 0x9c, + 0x03, 0x62, 0xbc, 0xf4, 0x01, 0xb5, 0x29, 0x83, 0x46, 0x07, 0xb9, 0xe7, + 0xb8, 0x5d, 0xc8, 0xe9, 0xd1, 0xdd, 0xad, 0x3b, 0xf8, 0x34, 0xdb, 0xc1, + 0xd1, 0x95, 0xa9, 0x91, 0x18, 0xed, 0x3c, 0x2c, 0x37, 0x11, 0x4d, 0xcc, + 0xfe, 0x53, 0x3e, 0x50, 0x43, 0xf9, 0xc3, 0x56, 0x41, 0xac, 0x53, 0x9b, + 0x6c, 0x05, 0xb2, 0x9a, 0xe2, 0xe0, 0x59, 0x57, 0x30, 0x32, 0xb6, 0x26, + 0x4e, 0x13, 0x25, 0xcd, 0xfa, 0x48, 0x70, 0x0f, 0x75, 0x55, 0x60, 0x11, + 0xf5, 0x3b, 0xd5, 0x5e, 0x5a, 0x3c, 0x8b, 0x5b, 0x0f, 0x0f, 0x62, 0x42, + 0x48, 0x61, 0x85, 0x8b, 0x10, 0xf4, 0xc1, 0x88, 0xbf, 0x7f, 0x5f, 0x8a, + 0xc2, 0xd7, 0xcd, 0x2b, 0x94, 0x5c, 0x1f, 0x34, 0x4a, 0x08, 0xaf, 0xeb, + 0xae, 0x89, 0xa8, 0x48, 0x75, 0x55, 0x95, 0x1d, 0xbb, 0xc0, 0x9a, 0x01, + 0xb9, 0xf4, 0x03, 0x22, 0x3e, 0xd4, 0xe6, 0x52, 0x30, 0x0d, 0x67, 0xb9, + 0xc0, 0x91, 0xfd, 0x2d, 0x4c, 0x30, 0x8e, 0xbd, 0x8c, 0xa5, 0x04, 0x91, + 0xbb, 0xa4, 0xab, 0x7f, 0x0f, 0xd8, 0x6f, 0xf0, 0x66, 0x00, 0xc9, 0xa3, + 0x5c, 0xf5, 0xb0, 0x8f, 0x83, 0xe6, 0x9c, 0x5a, 0xe6, 0xb6, 0xb9, 0xc5, + 0xbc, 0xbe, 0xe4, 0x02, +} + +var certSet3Cert6 = []byte{ + 0x30, 0x82, 0x04, 0x45, 0x30, 0x82, 0x03, 0xae, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x33, 0x65, 0x50, 0x08, 0x79, 0xad, 0x73, 0xe2, 0x30, + 0xb9, 0xe0, 0x1d, 0x0d, 0x7f, 0xac, 0x91, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81, + 0xce, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x5a, 0x41, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, + 0x0c, 0x57, 0x65, 0x73, 0x74, 0x65, 0x72, 0x6e, 0x20, 0x43, 0x61, 0x70, + 0x65, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x09, + 0x43, 0x61, 0x70, 0x65, 0x20, 0x54, 0x6f, 0x77, 0x6e, 0x31, 0x1d, 0x30, + 0x1b, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x14, 0x54, 0x68, 0x61, 0x77, + 0x74, 0x65, 0x20, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x74, 0x69, 0x6e, + 0x67, 0x20, 0x63, 0x63, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, + 0x0b, 0x13, 0x1f, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x73, 0x20, 0x44, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x21, + 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x18, 0x54, 0x68, 0x61, + 0x77, 0x74, 0x65, 0x20, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x75, 0x6d, 0x20, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x31, 0x28, 0x30, + 0x26, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x01, + 0x16, 0x19, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x75, 0x6d, 0x2d, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x40, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, + 0x63, 0x6f, 0x6d, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x31, 0x31, 0x31, + 0x37, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x30, + 0x31, 0x32, 0x33, 0x30, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, + 0x81, 0xa9, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, + 0x13, 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x1f, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, + 0x44, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, + 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, + 0x30, 0x30, 0x36, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, + 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x16, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, + 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, + 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, + 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, + 0xac, 0xa0, 0xf0, 0xfb, 0x80, 0x59, 0xd4, 0x9c, 0xc7, 0xa4, 0xcf, 0x9d, + 0xa1, 0x59, 0x73, 0x09, 0x10, 0x45, 0x0c, 0x0d, 0x2c, 0x6e, 0x68, 0xf1, + 0x6c, 0x5b, 0x48, 0x68, 0x49, 0x59, 0x37, 0xfc, 0x0b, 0x33, 0x19, 0xc2, + 0x77, 0x7f, 0xcc, 0x10, 0x2d, 0x95, 0x34, 0x1c, 0xe6, 0xeb, 0x4d, 0x09, + 0xa7, 0x1c, 0xd2, 0xb8, 0xc9, 0x97, 0x36, 0x02, 0xb7, 0x89, 0xd4, 0x24, + 0x5f, 0x06, 0xc0, 0xcc, 0x44, 0x94, 0x94, 0x8d, 0x02, 0x62, 0x6f, 0xeb, + 0x5a, 0xdd, 0x11, 0x8d, 0x28, 0x9a, 0x5c, 0x84, 0x90, 0x10, 0x7a, 0x0d, + 0xbd, 0x74, 0x66, 0x2f, 0x6a, 0x38, 0xa0, 0xe2, 0xd5, 0x54, 0x44, 0xeb, + 0x1d, 0x07, 0x9f, 0x07, 0xba, 0x6f, 0xee, 0xe9, 0xfd, 0x4e, 0x0b, 0x29, + 0xf5, 0x3e, 0x84, 0xa0, 0x01, 0xf1, 0x9c, 0xab, 0xf8, 0x1c, 0x7e, 0x89, + 0xa4, 0xe8, 0xa1, 0xd8, 0x71, 0x65, 0x0d, 0xa3, 0x51, 0x7b, 0xee, 0xbc, + 0xd2, 0x22, 0x60, 0x0d, 0xb9, 0x5b, 0x9d, 0xdf, 0xba, 0xfc, 0x51, 0x5b, + 0x0b, 0xaf, 0x98, 0xb2, 0xe9, 0x2e, 0xe9, 0x04, 0xe8, 0x62, 0x87, 0xde, + 0x2b, 0xc8, 0xd7, 0x4e, 0xc1, 0x4c, 0x64, 0x1e, 0xdd, 0xcf, 0x87, 0x58, + 0xba, 0x4a, 0x4f, 0xca, 0x68, 0x07, 0x1d, 0x1c, 0x9d, 0x4a, 0xc6, 0xd5, + 0x2f, 0x91, 0xcc, 0x7c, 0x71, 0x72, 0x1c, 0xc5, 0xc0, 0x67, 0xeb, 0x32, + 0xfd, 0xc9, 0x92, 0x5c, 0x94, 0xda, 0x85, 0xc0, 0x9b, 0xbf, 0x53, 0x7d, + 0x2b, 0x09, 0xf4, 0x8c, 0x9d, 0x91, 0x1f, 0x97, 0x6a, 0x52, 0xcb, 0xde, + 0x09, 0x36, 0xa4, 0x77, 0xd8, 0x7b, 0x87, 0x50, 0x44, 0xd5, 0x3e, 0x6e, + 0x29, 0x69, 0xfb, 0x39, 0x49, 0x26, 0x1e, 0x09, 0xa5, 0x80, 0x7b, 0x40, + 0x2d, 0xeb, 0xe8, 0x27, 0x85, 0xc9, 0xfe, 0x61, 0xfd, 0x7e, 0xe6, 0x7c, + 0x97, 0x1d, 0xd5, 0x9d, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x81, 0xc2, + 0x30, 0x81, 0xbf, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, + 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x3b, 0x06, 0x03, + 0x55, 0x1d, 0x20, 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, 0x06, 0x04, 0x55, + 0x1d, 0x20, 0x00, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x73, + 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, + 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x0e, 0x06, + 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, + 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0x7b, 0x5b, 0x45, 0xcf, 0xaf, 0xce, 0xcb, 0x7a, 0xfd, 0x31, 0x92, 0x1a, + 0x6a, 0xb6, 0xf3, 0x46, 0xeb, 0x57, 0x48, 0x50, 0x30, 0x40, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x39, 0x30, 0x37, 0x30, 0x35, 0xa0, 0x33, 0xa0, + 0x31, 0x86, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, + 0x6c, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x50, 0x72, 0x65, 0x6d, 0x69, + 0x75, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x41, 0x2e, 0x63, + 0x72, 0x6c, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x84, 0xa8, 0x4c, + 0xc9, 0x3e, 0x2a, 0xbc, 0x9a, 0xe2, 0xcc, 0x8f, 0x0b, 0xb2, 0x25, 0x77, + 0xc4, 0x61, 0x89, 0x89, 0x63, 0x5a, 0xd4, 0xa3, 0x15, 0x40, 0xd4, 0xfb, + 0x5e, 0x3f, 0xb4, 0x43, 0xea, 0x63, 0x17, 0x2b, 0x6b, 0x99, 0x74, 0x9e, + 0x09, 0xa8, 0xdd, 0xd4, 0x56, 0x15, 0x2e, 0x7a, 0x79, 0x31, 0x5f, 0x63, + 0x96, 0x53, 0x1b, 0x34, 0xd9, 0x15, 0xea, 0x4f, 0x6d, 0x70, 0xca, 0xbe, + 0xf6, 0x82, 0xa9, 0xed, 0xda, 0x85, 0x77, 0xcc, 0x76, 0x1c, 0x6a, 0x81, + 0x0a, 0x21, 0xd8, 0x41, 0x99, 0x7f, 0x5e, 0x2e, 0x82, 0xc1, 0xe8, 0xaa, + 0xf7, 0x93, 0x81, 0x05, 0xaa, 0x92, 0xb4, 0x1f, 0xb7, 0x9a, 0xc0, 0x07, + 0x17, 0xf5, 0xcb, 0xc6, 0xb4, 0x4c, 0x0e, 0xd7, 0x56, 0xdc, 0x71, 0x20, + 0x74, 0x38, 0xd6, 0x74, 0xc6, 0xd6, 0x8f, 0x6b, 0xaf, 0x8b, 0x8d, 0xa0, + 0x6c, 0x29, 0x0b, 0x61, 0xe0, +} + +var certSet3Cert7 = []byte{ + 0x30, 0x82, 0x04, 0x49, 0x30, 0x82, 0x03, 0x31, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x13, 0x06, 0x7f, 0x94, 0x57, 0x85, 0x87, 0xe8, 0xac, 0x77, + 0xde, 0xb2, 0x53, 0x32, 0x5b, 0xbc, 0x99, 0x8b, 0x56, 0x0d, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, + 0x00, 0x30, 0x39, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x06, 0x41, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x31, 0x19, 0x30, + 0x17, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x10, 0x41, 0x6d, 0x61, 0x7a, + 0x6f, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x31, + 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x35, 0x31, 0x30, 0x32, 0x32, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x35, 0x31, 0x30, 0x31, + 0x39, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x46, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x06, 0x41, 0x6d, + 0x61, 0x7a, 0x6f, 0x6e, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, + 0x0b, 0x13, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, + 0x20, 0x31, 0x42, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x06, 0x41, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xc2, 0x4e, 0x16, 0x67, 0xdd, 0xce, 0xbc, + 0x6a, 0xc8, 0x37, 0x5a, 0xec, 0x3a, 0x30, 0xb0, 0x1d, 0xe6, 0xd1, 0x12, + 0xe8, 0x12, 0x28, 0x48, 0xcc, 0xe8, 0x29, 0xc1, 0xb9, 0x6e, 0x53, 0xd5, + 0xa3, 0xeb, 0x03, 0x39, 0x1a, 0xcc, 0x77, 0x87, 0xf6, 0x01, 0xb9, 0xd9, + 0x70, 0xcc, 0xcf, 0x6b, 0x8d, 0xe3, 0xe3, 0x03, 0x71, 0x86, 0x99, 0x6d, + 0xcb, 0xa6, 0x94, 0x2a, 0x4e, 0x13, 0xd6, 0xa7, 0xbd, 0x04, 0xec, 0x0a, + 0x16, 0x3c, 0x0a, 0xeb, 0x39, 0xb1, 0xc4, 0xb5, 0x58, 0xa3, 0xb6, 0xc7, + 0x56, 0x25, 0xec, 0x3e, 0x52, 0x7a, 0xa8, 0xe3, 0x29, 0x16, 0x07, 0xb9, + 0x6e, 0x50, 0xcf, 0xfb, 0x5f, 0x31, 0xf8, 0x1d, 0xba, 0x03, 0x4a, 0x62, + 0x89, 0x03, 0xae, 0x3e, 0x47, 0xf2, 0x0f, 0x27, 0x91, 0xe3, 0x14, 0x20, + 0x85, 0xf8, 0xfa, 0xe9, 0x8a, 0x35, 0xf5, 0x5f, 0x9e, 0x99, 0x4d, 0xe7, + 0x6b, 0x37, 0xef, 0xa4, 0x50, 0x3e, 0x44, 0xec, 0xfa, 0x5a, 0x85, 0x66, + 0x07, 0x9c, 0x7e, 0x17, 0x6a, 0x55, 0xf3, 0x17, 0x8a, 0x35, 0x1e, 0xee, + 0xe9, 0xac, 0xc3, 0x75, 0x4e, 0x58, 0x55, 0x7d, 0x53, 0x6b, 0x0a, 0x6b, + 0x9b, 0x14, 0x42, 0xd7, 0xe5, 0xac, 0x01, 0x89, 0xb3, 0xea, 0xa3, 0xfe, + 0xcf, 0xc0, 0x2b, 0x0c, 0x84, 0xc2, 0xd8, 0x53, 0x15, 0xcb, 0x67, 0xf0, + 0xd0, 0x88, 0xca, 0x3a, 0xd1, 0x17, 0x73, 0xf5, 0x5f, 0x9a, 0xd4, 0xc5, + 0x72, 0x1e, 0x7e, 0x01, 0xf1, 0x98, 0x30, 0x63, 0x2a, 0xaa, 0xf2, 0x7a, + 0x2d, 0xc5, 0xe2, 0x02, 0x1a, 0x86, 0xe5, 0x32, 0x3e, 0x0e, 0xbd, 0x11, + 0xb4, 0xcf, 0x3c, 0x93, 0xef, 0x17, 0x50, 0x10, 0x9e, 0x43, 0xc2, 0x06, + 0x2a, 0xe0, 0x0d, 0x68, 0xbe, 0xd3, 0x88, 0x8b, 0x4a, 0x65, 0x8c, 0x4a, + 0xd4, 0xc3, 0x2e, 0x4c, 0x9b, 0x55, 0xf4, 0x86, 0xe5, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x82, 0x01, 0x3b, 0x30, 0x82, 0x01, 0x37, 0x30, 0x12, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, + 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x1d, + 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x59, 0xa4, 0x66, + 0x06, 0x52, 0xa0, 0x7b, 0x95, 0x92, 0x3c, 0xa3, 0x94, 0x07, 0x27, 0x96, + 0x74, 0x5b, 0xf9, 0x3d, 0xd0, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, + 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x84, 0x18, 0xcc, 0x85, 0x34, 0xec, + 0xbc, 0x0c, 0x94, 0x94, 0x2e, 0x08, 0x59, 0x9c, 0xc7, 0xb2, 0x10, 0x4e, + 0x0a, 0x08, 0x30, 0x7b, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x01, 0x01, 0x04, 0x6f, 0x30, 0x6d, 0x30, 0x2f, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x23, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x72, 0x6f, 0x6f, 0x74, + 0x63, 0x61, 0x31, 0x2e, 0x61, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x3a, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x2e, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x74, 0x2e, 0x72, 0x6f, 0x6f, 0x74, + 0x63, 0x61, 0x31, 0x2e, 0x61, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x6f, 0x6f, 0x74, + 0x63, 0x61, 0x31, 0x2e, 0x63, 0x65, 0x72, 0x30, 0x3f, 0x06, 0x03, 0x55, + 0x1d, 0x1f, 0x04, 0x38, 0x30, 0x36, 0x30, 0x34, 0xa0, 0x32, 0xa0, 0x30, + 0x86, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, + 0x2e, 0x72, 0x6f, 0x6f, 0x74, 0x63, 0x61, 0x31, 0x2e, 0x61, 0x6d, 0x61, + 0x7a, 0x6f, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x63, 0x61, 0x31, 0x2e, 0x63, 0x72, 0x6c, + 0x30, 0x13, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x0c, 0x30, 0x0a, 0x30, + 0x08, 0x06, 0x06, 0x67, 0x81, 0x0c, 0x01, 0x02, 0x01, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, + 0x03, 0x82, 0x01, 0x01, 0x00, 0x85, 0x92, 0xbe, 0x35, 0xbb, 0x79, 0xcf, + 0xa3, 0x81, 0x42, 0x1c, 0xe4, 0xe3, 0x63, 0x73, 0x53, 0x39, 0x52, 0x35, + 0xe7, 0xd1, 0xad, 0xfd, 0xae, 0x99, 0x8a, 0xac, 0x89, 0x12, 0x2f, 0xbb, + 0xe7, 0x6f, 0x9a, 0xd5, 0x4e, 0x72, 0xea, 0x20, 0x30, 0x61, 0xf9, 0x97, + 0xb2, 0xcd, 0xa5, 0x27, 0x02, 0x45, 0xa8, 0xca, 0x76, 0x3e, 0x98, 0x4a, + 0x83, 0x9e, 0xb6, 0xe6, 0x45, 0xe0, 0xf2, 0x43, 0xf6, 0x08, 0xde, 0x6d, + 0xe8, 0x6e, 0xdb, 0x31, 0x07, 0x13, 0xf0, 0x2f, 0x31, 0x0d, 0x93, 0x6d, + 0x61, 0x37, 0x7b, 0x58, 0xf0, 0xfc, 0x51, 0x98, 0x91, 0x28, 0x02, 0x4f, + 0x05, 0x76, 0xb7, 0xd3, 0xf0, 0x1b, 0xc2, 0xe6, 0x5e, 0xd0, 0x66, 0x85, + 0x11, 0x0f, 0x2e, 0x81, 0xc6, 0x10, 0x81, 0x29, 0xfe, 0x20, 0x60, 0x48, + 0xf3, 0xf2, 0xf0, 0x84, 0x13, 0x53, 0x65, 0x35, 0x15, 0x11, 0x6b, 0x82, + 0x51, 0x40, 0x55, 0x57, 0x5f, 0x18, 0xb5, 0xb0, 0x22, 0x3e, 0xad, 0xf2, + 0x5e, 0xa3, 0x01, 0xe3, 0xc3, 0xb3, 0xf9, 0xcb, 0x41, 0x5a, 0xe6, 0x52, + 0x91, 0xbb, 0xe4, 0x36, 0x87, 0x4f, 0x2d, 0xa9, 0xa4, 0x07, 0x68, 0x35, + 0xba, 0x94, 0x72, 0xcd, 0x0e, 0xea, 0x0e, 0x7d, 0x57, 0xf2, 0x79, 0xfc, + 0x37, 0xc5, 0x7b, 0x60, 0x9e, 0xb2, 0xeb, 0xc0, 0x2d, 0x90, 0x77, 0x0d, + 0x49, 0x10, 0x27, 0xa5, 0x38, 0xad, 0xc4, 0x12, 0xa3, 0xb4, 0xa3, 0xc8, + 0x48, 0xb3, 0x15, 0x0b, 0x1e, 0xe2, 0xe2, 0x19, 0xdc, 0xc4, 0x76, 0x52, + 0xc8, 0xbc, 0x8a, 0x41, 0x78, 0x70, 0xd9, 0x6d, 0x97, 0xb3, 0x4a, 0x8b, + 0x78, 0x2d, 0x5e, 0xb4, 0x0f, 0xa3, 0x4c, 0x60, 0xca, 0xe1, 0x47, 0xcb, + 0x78, 0x2d, 0x12, 0x17, 0xb1, 0x52, 0x8b, 0xca, 0x39, 0x2c, 0xbd, 0xb5, + 0x2f, 0xc2, 0x33, 0x02, 0x96, 0xab, 0xda, 0x94, 0x7f, +} + +var certSet3Cert8 = []byte{ + 0x30, 0x82, 0x04, 0x4d, 0x30, 0x82, 0x03, 0x35, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x02, 0x3a, 0x71, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, + 0x32, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x35, 0x31, 0x5a, 0x17, 0x0d, + 0x32, 0x32, 0x30, 0x35, 0x32, 0x30, 0x32, 0x33, 0x34, 0x35, 0x35, 0x31, + 0x5a, 0x30, 0x42, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x12, 0x52, 0x61, 0x70, 0x69, 0x64, 0x53, 0x53, 0x4c, 0x20, + 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, + 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, + 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xbb, 0x58, 0xc1, 0x12, 0x01, 0x2e, + 0x97, 0xd8, 0x7d, 0x18, 0xaa, 0xc8, 0xc2, 0xe5, 0x85, 0xe2, 0x17, 0x6c, + 0x60, 0x2e, 0xc9, 0x8d, 0x31, 0x05, 0x39, 0x1a, 0x06, 0x98, 0x56, 0xdd, + 0x54, 0xd7, 0x11, 0x8c, 0x59, 0x5b, 0x3d, 0xb1, 0x54, 0xae, 0x4b, 0x21, + 0x85, 0x32, 0x16, 0x5f, 0x54, 0x86, 0xe6, 0xd9, 0xb1, 0xd8, 0x60, 0x89, + 0x6b, 0x58, 0xbe, 0x72, 0xda, 0xa0, 0x00, 0x42, 0x76, 0xb1, 0x27, 0x59, + 0x4c, 0xcd, 0xe3, 0xba, 0xd4, 0x5c, 0xd9, 0xa6, 0x7f, 0xbb, 0x2b, 0x75, + 0xd5, 0x46, 0x44, 0xbd, 0xec, 0x40, 0x5c, 0x59, 0xb7, 0xdd, 0x59, 0x9f, + 0xf1, 0x6a, 0xf7, 0x06, 0xfc, 0xd6, 0x2f, 0x19, 0x8a, 0x95, 0x12, 0xba, + 0x9a, 0xca, 0xd5, 0x30, 0xd2, 0x38, 0xfc, 0x19, 0x3b, 0x5b, 0x15, 0x3b, + 0x36, 0xd0, 0x43, 0x4d, 0xd1, 0x65, 0xa1, 0xd4, 0x8b, 0xc1, 0x60, 0x41, + 0xb3, 0xd6, 0x70, 0x17, 0xcc, 0x39, 0xc0, 0x9c, 0x0c, 0xa0, 0x3d, 0xb7, + 0x11, 0x22, 0x4e, 0xce, 0xd9, 0xa9, 0x7a, 0xd2, 0x2a, 0x62, 0x9c, 0xa0, + 0x0b, 0x4e, 0x2a, 0xd7, 0xc3, 0x61, 0x5a, 0x85, 0xdd, 0x5c, 0x10, 0xb9, + 0x54, 0x3d, 0x2d, 0x03, 0xf8, 0x49, 0xf0, 0xbc, 0x92, 0xb7, 0xb7, 0x9c, + 0x31, 0xc7, 0xe9, 0xb8, 0xaa, 0x82, 0x0b, 0x05, 0xb9, 0x31, 0xcd, 0x08, + 0x5b, 0xbb, 0x22, 0x0b, 0xf6, 0x9c, 0x8e, 0x8a, 0x55, 0x1c, 0x76, 0x43, + 0x76, 0xf0, 0xe2, 0x6e, 0xf0, 0xdf, 0xa8, 0x29, 0x75, 0xe7, 0xc8, 0xa4, + 0x87, 0x8b, 0x6a, 0xf1, 0xbb, 0x08, 0xc9, 0x36, 0x18, 0x65, 0xee, 0x50, + 0x43, 0xb8, 0x5d, 0x72, 0xd5, 0x28, 0x39, 0xe1, 0x53, 0x3e, 0x25, 0x2c, + 0xda, 0x2b, 0x4f, 0xdd, 0x8a, 0x9e, 0x50, 0x50, 0xe0, 0x6f, 0x9a, 0xc4, + 0xd5, 0x19, 0x26, 0x89, 0x01, 0x75, 0x73, 0x09, 0x9b, 0x3b, 0x02, 0x03, + 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x4a, 0x30, 0x82, 0x01, 0x46, 0x30, + 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, + 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, 0xab, 0x05, 0x64, 0x0c, 0x11, + 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, 0x4e, 0x30, 0x1d, 0x06, 0x03, + 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x97, 0xc2, 0x27, 0x50, 0x9e, + 0xc2, 0xc9, 0xec, 0x0c, 0x88, 0x32, 0xc8, 0x7c, 0xad, 0xe2, 0xa6, 0x01, + 0x4f, 0xda, 0x6f, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, + 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, + 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, + 0x02, 0x01, 0x06, 0x30, 0x36, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2f, + 0x30, 0x2d, 0x30, 0x2b, 0xa0, 0x29, 0xa0, 0x27, 0x86, 0x25, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x31, 0x2e, 0x73, 0x79, 0x6d, 0x63, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x67, + 0x74, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x63, 0x72, 0x6c, 0x30, + 0x2f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, + 0x23, 0x30, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x67, 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, + 0x41, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07, + 0x36, 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x29, 0x06, 0x03, 0x55, 0x1d, + 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31, 0x1a, 0x30, + 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79, 0x6d, 0x61, + 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d, 0x35, 0x36, + 0x39, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x35, 0xeb, 0xe1, + 0x8b, 0x20, 0x56, 0x94, 0xba, 0x7a, 0xbd, 0x79, 0xa9, 0xf6, 0xe3, 0xfe, + 0x6e, 0x38, 0xb4, 0x32, 0xc1, 0xa3, 0xdb, 0x58, 0x56, 0x20, 0x3e, 0x7d, + 0xc7, 0x3a, 0xb1, 0x67, 0x69, 0xd5, 0x79, 0x14, 0x1b, 0xf6, 0xfa, 0xec, + 0x60, 0xf2, 0x79, 0xcd, 0x0a, 0x0c, 0x60, 0x8a, 0x74, 0x4c, 0xa3, 0x93, + 0x2a, 0xa0, 0xf0, 0x51, 0x7f, 0xcd, 0xe9, 0xf9, 0x92, 0xfd, 0x96, 0xab, + 0x45, 0xf5, 0x62, 0x3d, 0x3f, 0x60, 0x46, 0x50, 0x13, 0x3d, 0x20, 0x13, + 0x18, 0x2e, 0x94, 0x46, 0xae, 0xd5, 0x21, 0xfe, 0x43, 0xa1, 0xc9, 0x23, + 0xfe, 0x53, 0xc4, 0xbf, 0x1a, 0xd8, 0xac, 0x3a, 0xca, 0xde, 0x66, 0x97, + 0x23, 0xae, 0xd3, 0xdf, 0x4a, 0x4d, 0x73, 0x1f, 0x6f, 0x31, 0xa2, 0x51, + 0x04, 0x16, 0x6a, 0x00, 0xeb, 0xf9, 0x8d, 0x43, 0x81, 0xf0, 0x50, 0xa1, + 0x1f, 0xa6, 0xca, 0x3a, 0xf3, 0x28, 0x3c, 0x5f, 0x51, 0xac, 0xd7, 0x0a, + 0x45, 0x77, 0x4b, 0x0e, 0x52, 0x62, 0x1b, 0xd8, 0x38, 0x51, 0xa0, 0x92, + 0x2d, 0x3f, 0x90, 0x6e, 0xc8, 0x7e, 0x40, 0x9f, 0x20, 0x46, 0x15, 0x5d, + 0xe0, 0x50, 0x7c, 0xe1, 0x76, 0xaf, 0x5e, 0xed, 0x11, 0xd3, 0x2f, 0x13, + 0xb9, 0xb8, 0x25, 0xa4, 0xaf, 0x58, 0x09, 0xaf, 0x35, 0xb4, 0x62, 0x54, + 0x85, 0xe3, 0x48, 0xde, 0xbc, 0xd2, 0x90, 0x7a, 0x7a, 0xa4, 0x84, 0x0d, + 0xa3, 0x42, 0xf2, 0x51, 0xc0, 0xd4, 0xad, 0x53, 0x65, 0x5d, 0x6c, 0xf8, + 0x3f, 0x1f, 0x06, 0xf2, 0x4f, 0xcb, 0x97, 0xa0, 0x4a, 0x59, 0xc6, 0x78, + 0xd1, 0xe8, 0x03, 0xb9, 0x85, 0x6d, 0x2c, 0xba, 0xe1, 0x5f, 0xb6, 0xad, + 0x2b, 0x3e, 0x25, 0x79, 0xc5, 0x8b, 0x56, 0xd5, 0xe3, 0x09, 0x80, 0xea, + 0xc1, 0x27, 0xc2, 0xd9, 0x0e, 0xec, 0x47, 0x0a, 0xe9, 0xd0, 0xca, 0xfc, + 0xd8, +} + +var certSet3Cert9 = []byte{ + 0x30, 0x82, 0x04, 0x4d, 0x30, 0x82, 0x03, 0x35, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x0b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x44, 0x4e, 0xf0, + 0x36, 0x31, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x57, 0x31, 0x0b, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30, 0x17, + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61, 0x31, + 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x07, 0x52, 0x6f, + 0x6f, 0x74, 0x20, 0x43, 0x41, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x12, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, + 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30, 0x1e, + 0x17, 0x0d, 0x31, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x4c, 0x31, 0x0b, 0x30, 0x09, + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30, + 0x17, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61, + 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x19, 0x41, + 0x6c, 0x70, 0x68, 0x61, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, + 0x20, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x2d, 0x20, 0x47, 0x32, + 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, + 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xda, 0x01, 0xec, + 0xe4, 0xec, 0x73, 0x60, 0xfb, 0x7e, 0x8f, 0x6a, 0xb7, 0xc6, 0x17, 0xe3, + 0x92, 0x64, 0x32, 0xd4, 0xac, 0x00, 0xd9, 0xa2, 0x0f, 0xb9, 0xed, 0xee, + 0x6b, 0x8a, 0x86, 0xca, 0x92, 0x67, 0xd9, 0x74, 0xd7, 0x5d, 0x47, 0x02, + 0x3c, 0x8f, 0x40, 0xd6, 0x9e, 0x6d, 0x14, 0xcd, 0xc3, 0xda, 0x29, 0x39, + 0xa7, 0x0f, 0x05, 0x0a, 0x68, 0xa2, 0x66, 0x1a, 0x1e, 0xc4, 0xb2, 0x8b, + 0x76, 0x58, 0xe5, 0xab, 0x5d, 0x1d, 0x8f, 0x40, 0xb3, 0x39, 0x8b, 0xef, + 0x1e, 0x83, 0x7d, 0x22, 0xd0, 0xe3, 0xa9, 0x00, 0x2e, 0xec, 0x53, 0xcf, + 0x62, 0x19, 0x85, 0x44, 0x28, 0x4c, 0xc0, 0x27, 0xcb, 0x7b, 0x0e, 0xec, + 0x10, 0x64, 0x00, 0x10, 0xa4, 0x05, 0xcc, 0xa0, 0x72, 0xbe, 0x41, 0x6c, + 0x31, 0x5b, 0x48, 0xe4, 0xb1, 0xec, 0xb9, 0x23, 0xeb, 0x55, 0x4d, 0xd0, + 0x7d, 0x62, 0x4a, 0xa5, 0xb4, 0xa5, 0xa4, 0x59, 0x85, 0xc5, 0x25, 0x91, + 0xa6, 0xfe, 0xa6, 0x09, 0x9f, 0x06, 0x10, 0x6d, 0x8f, 0x81, 0x0c, 0x64, + 0x40, 0x5e, 0x73, 0x00, 0x9a, 0xe0, 0x2e, 0x65, 0x98, 0x54, 0x10, 0x00, + 0x70, 0x98, 0xc8, 0xe1, 0xed, 0x34, 0x5f, 0xd8, 0x9c, 0xc7, 0x0d, 0xc0, + 0xd6, 0x23, 0x59, 0x45, 0xfc, 0xfe, 0x55, 0x7a, 0x86, 0xee, 0x94, 0x60, + 0x22, 0xf1, 0xae, 0xd1, 0xe6, 0x55, 0x46, 0xf6, 0x99, 0xc5, 0x1b, 0x08, + 0x74, 0x5f, 0xac, 0xb0, 0x64, 0x84, 0x8f, 0x89, 0x38, 0x1c, 0xa1, 0xa7, + 0x90, 0x21, 0x4f, 0x02, 0x6e, 0xbd, 0xe0, 0x61, 0x67, 0xd4, 0xf8, 0x42, + 0x87, 0x0f, 0x0a, 0xf7, 0xc9, 0x04, 0x6d, 0x2a, 0xa9, 0x2f, 0xef, 0x42, + 0xa5, 0xdf, 0xdd, 0xa3, 0x53, 0xdb, 0x98, 0x1e, 0x81, 0xf9, 0x9a, 0x72, + 0x7b, 0x5a, 0xde, 0x4f, 0x3e, 0x7f, 0xa2, 0x58, 0xa0, 0xe2, 0x17, 0xad, + 0x67, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x23, 0x30, 0x82, + 0x01, 0x1f, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, + 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, + 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, + 0x01, 0x00, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, + 0x14, 0xf5, 0xcd, 0xd5, 0x3c, 0x08, 0x50, 0xf9, 0x6a, 0x4f, 0x3a, 0xb7, + 0x97, 0xda, 0x56, 0x83, 0xe6, 0x69, 0xd2, 0x68, 0xf7, 0x30, 0x45, 0x06, + 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3e, 0x30, 0x3c, 0x30, 0x3a, 0x06, 0x04, + 0x55, 0x1d, 0x20, 0x00, 0x30, 0x32, 0x30, 0x30, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x24, 0x68, 0x74, 0x74, 0x70, + 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x30, 0x33, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x2c, 0x30, 0x2a, 0x30, 0x28, 0xa0, 0x26, 0xa0, + 0x24, 0x86, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, + 0x6c, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e, + 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x72, + 0x6c, 0x30, 0x3d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, + 0x01, 0x04, 0x31, 0x30, 0x2f, 0x30, 0x2d, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x6f, + 0x6f, 0x74, 0x72, 0x31, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, + 0x18, 0x30, 0x16, 0x80, 0x14, 0x60, 0x7b, 0x66, 0x1a, 0x45, 0x0d, 0x97, + 0xca, 0x89, 0x50, 0x2f, 0x7d, 0x04, 0xcd, 0x34, 0xa8, 0xff, 0xfc, 0xfd, + 0x4b, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x60, 0x40, 0x68, + 0x16, 0x47, 0xe7, 0x16, 0x8d, 0xdb, 0x5c, 0xa1, 0x56, 0x2a, 0xcb, 0xf4, + 0x5c, 0x9b, 0xb0, 0x1e, 0xa2, 0x4b, 0xf5, 0xcb, 0x02, 0x3f, 0xf8, 0x0b, + 0xa1, 0xf2, 0xa7, 0x42, 0xd4, 0xb7, 0x4c, 0xeb, 0xe3, 0x66, 0x80, 0xf3, + 0x25, 0x43, 0x78, 0x2e, 0x1b, 0x17, 0x56, 0x07, 0x52, 0x18, 0xcb, 0xd1, + 0xa8, 0xec, 0xe6, 0xfb, 0x73, 0x3e, 0xa4, 0x62, 0x8c, 0x80, 0xb4, 0xd2, + 0xc5, 0x12, 0x73, 0xa3, 0xd3, 0xfa, 0x02, 0x38, 0xbe, 0x63, 0x3d, 0x84, + 0xb8, 0x99, 0xc1, 0xf1, 0xba, 0xf7, 0x9f, 0xc3, 0x40, 0xd1, 0x58, 0x18, + 0x53, 0xc1, 0x62, 0xdd, 0xaf, 0x18, 0x42, 0x7f, 0x34, 0x4e, 0xc5, 0x43, + 0xd5, 0x71, 0xb0, 0x30, 0x00, 0xc7, 0xe3, 0x90, 0xae, 0x3f, 0x57, 0x86, + 0x97, 0xce, 0xea, 0x0c, 0x12, 0x8e, 0x22, 0x70, 0xe3, 0x66, 0xa7, 0x54, + 0x7f, 0x2e, 0x28, 0xcb, 0xd4, 0x54, 0xd0, 0xb3, 0x1e, 0x62, 0x67, 0x08, + 0xf9, 0x27, 0xe1, 0xcb, 0xe3, 0x66, 0xb8, 0x24, 0x1b, 0x89, 0x6a, 0x89, + 0x44, 0x65, 0xf2, 0xd9, 0x4c, 0xd2, 0x58, 0x1c, 0x8c, 0x4e, 0xc0, 0x95, + 0xa1, 0xd4, 0xef, 0x67, 0x2f, 0x38, 0x20, 0xe8, 0x2e, 0xff, 0x96, 0x51, + 0xf0, 0xba, 0xd8, 0x3d, 0x92, 0x70, 0x47, 0x65, 0x1c, 0x9e, 0x73, 0x72, + 0xb4, 0x60, 0x0c, 0x5c, 0xe2, 0xd1, 0x73, 0x76, 0xe0, 0xaf, 0x4e, 0xe2, + 0xe5, 0x37, 0xa5, 0x45, 0x2f, 0x8a, 0x23, 0x3e, 0x87, 0xc7, 0x30, 0xe6, + 0x31, 0x38, 0x7c, 0xf4, 0xdd, 0x52, 0xca, 0xf3, 0x53, 0x04, 0x25, 0x57, + 0x56, 0x66, 0x94, 0xe8, 0x0b, 0xee, 0xe6, 0x03, 0x14, 0x4e, 0xee, 0xfd, + 0x6d, 0x94, 0x64, 0x9e, 0x5e, 0xce, 0x79, 0xd4, 0xb2, 0xa6, 0xcf, 0x40, + 0xb1, 0x44, 0xa8, 0x3e, 0x87, 0x19, 0x5e, 0xe9, 0xf8, 0x21, 0x16, 0x59, + 0x53, +} + +var certSet3Cert10 = []byte{ + 0x30, 0x82, 0x04, 0x4f, 0x30, 0x82, 0x03, 0x37, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x02, 0x3a, 0x6f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, + 0x31, 0x30, 0x35, 0x32, 0x31, 0x33, 0x36, 0x35, 0x30, 0x5a, 0x17, 0x0d, + 0x32, 0x32, 0x30, 0x35, 0x32, 0x30, 0x32, 0x31, 0x33, 0x36, 0x35, 0x30, + 0x5a, 0x30, 0x44, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x14, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, + 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, + 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xe3, 0xbe, 0x7e, 0x0a, + 0x86, 0xa3, 0xcf, 0x6b, 0x6d, 0x3d, 0x2b, 0xa1, 0x97, 0xad, 0x49, 0x24, + 0x4d, 0xd7, 0x77, 0xb9, 0x34, 0x79, 0x08, 0xa5, 0x9e, 0xa2, 0x9e, 0xde, + 0x47, 0x12, 0x92, 0x3d, 0x7e, 0xea, 0x19, 0x86, 0xb1, 0xe8, 0x4f, 0x3d, + 0x5f, 0xf7, 0xd0, 0xa7, 0x77, 0x9a, 0x5b, 0x1f, 0x0a, 0x03, 0xb5, 0x19, + 0x53, 0xdb, 0xa5, 0x21, 0x94, 0x69, 0x63, 0x9d, 0x6a, 0x4c, 0x91, 0x0c, + 0x10, 0x47, 0xbe, 0x11, 0xfa, 0x6c, 0x86, 0x25, 0xb7, 0xab, 0x04, 0x68, + 0x42, 0x38, 0x09, 0x65, 0xf0, 0x14, 0xda, 0x19, 0x9e, 0xfa, 0x6b, 0x0b, + 0xab, 0x62, 0xef, 0x8d, 0xa7, 0xef, 0x63, 0x70, 0x23, 0xa8, 0xaf, 0x81, + 0xf3, 0xd1, 0x6e, 0x88, 0x67, 0x53, 0xec, 0x12, 0xa4, 0x29, 0x75, 0x8a, + 0xa7, 0xf2, 0x57, 0x3d, 0xa2, 0x83, 0x98, 0x97, 0xf2, 0x0a, 0x7d, 0xd4, + 0xe7, 0x43, 0x6e, 0x30, 0x78, 0x62, 0x22, 0x59, 0x59, 0xb8, 0x71, 0x27, + 0x45, 0xaa, 0x0f, 0x66, 0xc6, 0x55, 0x3f, 0xfa, 0x32, 0x17, 0x2b, 0x31, + 0x8f, 0x46, 0xa0, 0xfa, 0x69, 0x14, 0x7c, 0x9d, 0x9f, 0x5a, 0xe2, 0xeb, + 0x33, 0x4e, 0x10, 0xa6, 0xb3, 0xed, 0x77, 0x63, 0xd8, 0xc3, 0x9e, 0xf4, + 0xdd, 0xdf, 0x79, 0x9a, 0x7a, 0xd4, 0xee, 0xde, 0xdd, 0x9a, 0xcc, 0xc3, + 0xb7, 0xa9, 0x5d, 0xcc, 0x11, 0x3a, 0x07, 0xbb, 0x6f, 0x97, 0xa4, 0x01, + 0x23, 0x47, 0x95, 0x1f, 0xa3, 0x77, 0xfa, 0x58, 0x92, 0xc6, 0xc7, 0xd0, + 0xbd, 0xcf, 0x93, 0x18, 0x42, 0xb7, 0x7e, 0xf7, 0x9e, 0x65, 0xea, 0xd5, + 0x3b, 0xca, 0xed, 0xac, 0xc5, 0x70, 0xa1, 0xfe, 0xd4, 0x10, 0x9a, 0xf0, + 0x12, 0x04, 0x44, 0xac, 0x1a, 0x5b, 0x78, 0x50, 0x45, 0x57, 0x4c, 0x6f, + 0xbd, 0x80, 0xcb, 0x81, 0x5c, 0x2d, 0xb3, 0xbc, 0x76, 0xa1, 0x1e, 0x65, + 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x4a, 0x30, 0x82, 0x01, + 0x46, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, + 0x80, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, 0xab, 0x05, 0x64, + 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, 0x4e, 0x30, 0x1d, + 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xd2, 0x6f, 0xf7, + 0x96, 0xf4, 0x85, 0x3f, 0x72, 0x3c, 0x30, 0x7d, 0x23, 0xda, 0x85, 0x78, + 0x9b, 0xa3, 0x7c, 0x5a, 0x7c, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, + 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, + 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, + 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x36, 0x06, 0x03, 0x55, 0x1d, 0x1f, + 0x04, 0x2f, 0x30, 0x2d, 0x30, 0x2b, 0xa0, 0x29, 0xa0, 0x27, 0x86, 0x25, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x31, 0x2e, 0x73, 0x79, + 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, + 0x2f, 0x67, 0x74, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x63, 0x72, + 0x6c, 0x30, 0x2f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, + 0x01, 0x04, 0x23, 0x30, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x67, 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, 0x30, + 0x43, 0x30, 0x41, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, + 0x01, 0x07, 0x36, 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, + 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x29, 0x06, 0x03, + 0x55, 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31, + 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79, + 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d, + 0x35, 0x33, 0x39, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xa0, + 0xd4, 0xf7, 0x2c, 0xfb, 0x74, 0x0b, 0x7f, 0x64, 0xf1, 0xcd, 0x43, 0x6a, + 0x9f, 0x62, 0x53, 0x1c, 0x02, 0x7c, 0x98, 0x90, 0xa2, 0xee, 0x4f, 0x68, + 0xd4, 0x20, 0x1a, 0x73, 0x12, 0x3e, 0x77, 0xb3, 0x50, 0xeb, 0x72, 0xbc, + 0xee, 0x88, 0xbe, 0x7f, 0x17, 0xea, 0x77, 0x8f, 0x83, 0x61, 0x95, 0x4f, + 0x84, 0xa1, 0xcb, 0x32, 0x4f, 0x6c, 0x21, 0xbe, 0xd2, 0x69, 0x96, 0x7d, + 0x63, 0xbd, 0xdc, 0x2b, 0xa8, 0x1f, 0xd0, 0x13, 0x84, 0x70, 0xfe, 0xf6, + 0x35, 0x95, 0x89, 0xf9, 0xa6, 0x77, 0xb0, 0x46, 0xc8, 0xbb, 0xb7, 0x13, + 0xf5, 0xc9, 0x60, 0x69, 0xd6, 0x4c, 0xfe, 0xd2, 0x8e, 0xef, 0xd3, 0x60, + 0xc1, 0x80, 0x80, 0xe1, 0xe7, 0xfb, 0x8b, 0x6f, 0x21, 0x79, 0x4a, 0xe0, + 0xdc, 0xa9, 0x1b, 0xc1, 0xb7, 0xfb, 0xc3, 0x49, 0x59, 0x5c, 0xb5, 0x77, + 0x07, 0x44, 0xd4, 0x97, 0xfc, 0x49, 0x00, 0x89, 0x6f, 0x06, 0x4e, 0x01, + 0x70, 0x19, 0xac, 0x2f, 0x11, 0xc0, 0xe2, 0xe6, 0x0f, 0x2f, 0x86, 0x4b, + 0x8d, 0x7b, 0xc3, 0xb9, 0xa7, 0x2e, 0xf4, 0xf1, 0xac, 0x16, 0x3e, 0x39, + 0x49, 0x51, 0x9e, 0x17, 0x4b, 0x4f, 0x10, 0x3a, 0x5b, 0xa5, 0xa8, 0x92, + 0x6f, 0xfd, 0xfa, 0xd6, 0x0b, 0x03, 0x4d, 0x47, 0x56, 0x57, 0x19, 0xf3, + 0xcb, 0x6b, 0xf5, 0xf3, 0xd6, 0xcf, 0xb0, 0xf5, 0xf5, 0xa3, 0x11, 0xd2, + 0x20, 0x53, 0x13, 0x34, 0x37, 0x05, 0x2c, 0x43, 0x5a, 0x63, 0xdf, 0x8d, + 0x40, 0xd6, 0x85, 0x1e, 0x51, 0xe9, 0x51, 0x17, 0x1e, 0x03, 0x56, 0xc9, + 0xf1, 0x30, 0xad, 0xe7, 0x9b, 0x11, 0xa2, 0xb9, 0xd0, 0x31, 0x81, 0x9b, + 0x68, 0xb1, 0xd9, 0xe8, 0xf3, 0xe6, 0x94, 0x7e, 0xc7, 0xae, 0x13, 0x2f, + 0x87, 0xed, 0xd0, 0x25, 0xb0, 0x68, 0xf9, 0xde, 0x08, 0x5a, 0xf3, 0x29, + 0xcc, 0xd4, 0x92, +} + +var certSet3Cert11 = []byte{ + 0x30, 0x82, 0x04, 0x59, 0x30, 0x82, 0x03, 0x41, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x02, 0x3a, 0x63, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x42, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x32, 0x30, + 0x38, 0x32, 0x37, 0x32, 0x30, 0x34, 0x30, 0x34, 0x30, 0x5a, 0x17, 0x0d, + 0x32, 0x32, 0x30, 0x35, 0x32, 0x30, 0x32, 0x30, 0x34, 0x30, 0x34, 0x30, + 0x5a, 0x30, 0x44, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x14, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, + 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, + 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xb9, 0x27, 0xf9, 0x4f, + 0xd8, 0xf6, 0xb7, 0x15, 0x3f, 0x8f, 0xcd, 0xce, 0xd6, 0x8d, 0x1c, 0x6b, + 0xfd, 0x7f, 0xda, 0x54, 0x21, 0x4e, 0x03, 0xd8, 0xca, 0xd0, 0x72, 0x52, + 0x15, 0xb8, 0xc9, 0x82, 0x5b, 0x58, 0x79, 0x84, 0xff, 0x24, 0x72, 0x6f, + 0xf2, 0x69, 0x7f, 0xbc, 0x96, 0xd9, 0x9a, 0x7a, 0xc3, 0x3e, 0xa9, 0xcf, + 0x50, 0x22, 0x13, 0x0e, 0x86, 0x19, 0xdb, 0xe8, 0x49, 0xef, 0x8b, 0xe6, + 0xd6, 0x47, 0xf2, 0xfd, 0x73, 0x45, 0x08, 0xae, 0x8f, 0xac, 0x5e, 0xb6, + 0xf8, 0x9e, 0x7c, 0xf7, 0x10, 0xff, 0x92, 0x43, 0x66, 0xef, 0x1c, 0xd4, + 0xee, 0xa1, 0x46, 0x88, 0x11, 0x89, 0x49, 0x79, 0x7a, 0x25, 0xce, 0x4b, + 0x6a, 0xf0, 0xd7, 0x1c, 0x76, 0x1a, 0x29, 0x3c, 0xc9, 0xe4, 0xfd, 0x1e, + 0x85, 0xdc, 0xe0, 0x31, 0x65, 0x05, 0x47, 0x16, 0xac, 0x0a, 0x07, 0x4b, + 0x2e, 0x70, 0x5e, 0x6b, 0x06, 0xa7, 0x6b, 0x3a, 0x6c, 0xaf, 0x05, 0x12, + 0xc4, 0xb2, 0x11, 0x25, 0xd6, 0x3e, 0x97, 0x29, 0xf0, 0x83, 0x6c, 0x57, + 0x1c, 0xd8, 0xa5, 0xef, 0xcc, 0xec, 0xfd, 0xd6, 0x12, 0xf1, 0x3f, 0xdb, + 0x40, 0xb4, 0xae, 0x0f, 0x18, 0xd3, 0xc5, 0xaf, 0x40, 0x92, 0x5d, 0x07, + 0x5e, 0x4e, 0xfe, 0x62, 0x17, 0x37, 0x89, 0xe9, 0x8b, 0x74, 0x26, 0xa2, + 0xed, 0xb8, 0x0a, 0xe7, 0x6c, 0x15, 0x5b, 0x35, 0x90, 0x72, 0xdd, 0xd8, + 0x4d, 0x21, 0xd4, 0x40, 0x23, 0x5c, 0x8f, 0xee, 0x80, 0x31, 0x16, 0xab, + 0x68, 0x55, 0xf4, 0x0e, 0x3b, 0x54, 0xe9, 0x04, 0x4d, 0xf0, 0xcc, 0x4e, + 0x81, 0x5e, 0xe9, 0x6f, 0x52, 0x69, 0x4e, 0xbe, 0xa6, 0x16, 0x6d, 0x42, + 0xf5, 0x51, 0xff, 0xe0, 0x0b, 0x56, 0x3c, 0x98, 0x4f, 0x73, 0x8f, 0x0e, + 0x6f, 0x1a, 0x23, 0xf1, 0xc9, 0xc8, 0xd9, 0xdf, 0xbc, 0xec, 0x52, 0xd7, + 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x54, 0x30, 0x82, 0x01, + 0x50, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, + 0x80, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, 0xab, 0x05, 0x64, + 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, 0x4e, 0x30, 0x1d, + 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x11, 0x4a, 0xd0, + 0x73, 0x39, 0xd5, 0x5b, 0x69, 0x08, 0x5c, 0xba, 0x3d, 0xbf, 0x64, 0x9a, + 0xa8, 0x8b, 0x1c, 0x55, 0xbc, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, + 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, + 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, + 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x3a, 0x06, 0x03, 0x55, 0x1d, 0x1f, + 0x04, 0x33, 0x30, 0x31, 0x30, 0x2f, 0xa0, 0x2d, 0xa0, 0x2b, 0x86, 0x29, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x67, + 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x67, 0x74, 0x67, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, + 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, + 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, 0x41, + 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07, 0x36, + 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, + 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x2a, 0x06, 0x03, 0x55, 0x1d, 0x11, + 0x04, 0x23, 0x30, 0x21, 0xa4, 0x1f, 0x30, 0x1d, 0x31, 0x1b, 0x30, 0x19, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x56, 0x65, 0x72, 0x69, 0x53, + 0x69, 0x67, 0x6e, 0x4d, 0x50, 0x4b, 0x49, 0x2d, 0x32, 0x2d, 0x32, 0x35, + 0x34, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x3c, 0xe5, 0x3d, + 0x5a, 0x1b, 0xa2, 0x37, 0x2a, 0xe3, 0x46, 0xcf, 0x36, 0x96, 0x18, 0x3c, + 0x7b, 0xf1, 0x84, 0xc5, 0x57, 0x86, 0x77, 0x40, 0x9d, 0x35, 0xf0, 0x12, + 0xf0, 0x78, 0x18, 0xfb, 0x22, 0xa4, 0xde, 0x98, 0x4b, 0x78, 0x81, 0xe6, + 0x4d, 0x86, 0xe3, 0x91, 0x0f, 0x42, 0xe3, 0xb9, 0xdc, 0xa0, 0xd6, 0xff, + 0xa9, 0xf8, 0xb1, 0x79, 0x97, 0x99, 0xd1, 0xc3, 0x6c, 0x42, 0xa5, 0x92, + 0x94, 0xe0, 0x5d, 0x0c, 0x33, 0x18, 0x25, 0xc9, 0x2b, 0x95, 0x53, 0xe0, + 0xe5, 0xa9, 0x0c, 0x7d, 0x47, 0xfe, 0x7f, 0x51, 0x31, 0x44, 0x5e, 0xf7, + 0x2a, 0x1e, 0x35, 0xa2, 0x94, 0x32, 0xf7, 0xc9, 0xee, 0xc0, 0xb6, 0xc6, + 0x9a, 0xac, 0xde, 0x99, 0x21, 0x6a, 0x23, 0xa0, 0x38, 0x64, 0xee, 0xa3, + 0xc4, 0x88, 0x73, 0x32, 0x3b, 0x50, 0xce, 0xbf, 0xad, 0xd3, 0x75, 0x1e, + 0xa6, 0xf4, 0xe9, 0xf9, 0x42, 0x6b, 0x60, 0xb2, 0xdd, 0x45, 0xfd, 0x5d, + 0x57, 0x08, 0xce, 0x2d, 0x50, 0xe6, 0x12, 0x32, 0x16, 0x13, 0x8a, 0xf2, + 0x94, 0xa2, 0x9b, 0x47, 0xa8, 0x86, 0x7f, 0xd9, 0x98, 0xe5, 0xf7, 0xe5, + 0x76, 0x74, 0x64, 0xd8, 0x91, 0xbc, 0x84, 0x16, 0x28, 0xd8, 0x25, 0x44, + 0x30, 0x7e, 0x82, 0xd8, 0xac, 0xb1, 0xe4, 0xc0, 0xe4, 0x15, 0x6c, 0xdb, + 0xb6, 0x24, 0x27, 0x02, 0x2a, 0x01, 0x12, 0x85, 0xba, 0x31, 0x88, 0x58, + 0x47, 0x74, 0xe3, 0xb8, 0xd2, 0x64, 0xa6, 0xc3, 0x32, 0x59, 0x2e, 0x29, + 0x4b, 0x45, 0xf1, 0x5b, 0x89, 0x49, 0x2e, 0x82, 0x9a, 0xc6, 0x18, 0x15, + 0x44, 0xd0, 0x2e, 0x64, 0x01, 0x15, 0x68, 0x38, 0xf9, 0xf6, 0xf9, 0x66, + 0x03, 0x0c, 0x55, 0x1b, 0x9d, 0xbf, 0x00, 0x40, 0xae, 0xf0, 0x48, 0x27, + 0x4c, 0xe0, 0x80, 0x5e, 0x2d, 0xb9, 0x2a, 0x15, 0x7a, 0xbc, 0x66, 0xf8, + 0x35, +} + +var certSet3Cert12 = []byte{ + 0x30, 0x82, 0x04, 0x63, 0x30, 0x82, 0x03, 0x4b, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x0b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x44, 0x4e, 0xf0, + 0x3e, 0x20, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x57, 0x31, 0x0b, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30, 0x17, + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61, 0x31, + 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x07, 0x52, 0x6f, + 0x6f, 0x74, 0x20, 0x43, 0x41, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x12, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, + 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30, 0x1e, + 0x17, 0x0d, 0x31, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x60, 0x31, 0x0b, 0x30, 0x09, + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30, + 0x17, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61, + 0x31, 0x36, 0x30, 0x34, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2d, 0x47, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x44, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x53, 0x48, 0x41, + 0x32, 0x35, 0x36, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xa9, 0xdd, 0xcc, 0x0e, 0xb3, 0xe2, 0x32, + 0x39, 0xdd, 0x49, 0x22, 0xa8, 0x13, 0x69, 0x93, 0x87, 0x88, 0xe1, 0x0c, + 0xee, 0x71, 0x7d, 0xbd, 0x90, 0x87, 0x96, 0x5d, 0x59, 0xf2, 0xcc, 0xb3, + 0xd2, 0x58, 0x57, 0x57, 0xf9, 0x46, 0xef, 0x6c, 0x26, 0xd8, 0x36, 0x42, + 0x8e, 0x7e, 0x30, 0xb3, 0x2f, 0x9a, 0x3e, 0x53, 0x7b, 0x1f, 0x6e, 0xb6, + 0xa2, 0x4c, 0x45, 0x1f, 0x3c, 0xd3, 0x15, 0x93, 0x1c, 0x89, 0xed, 0x3c, + 0xf4, 0x57, 0xde, 0xca, 0xbd, 0xec, 0x06, 0x9a, 0x6a, 0x2a, 0xa0, 0x19, + 0x52, 0x7f, 0x51, 0xd1, 0x74, 0x39, 0x08, 0x9f, 0xab, 0xeb, 0xd7, 0x86, + 0x13, 0x15, 0x97, 0xae, 0x36, 0xc3, 0x54, 0x66, 0x0e, 0x5a, 0xf2, 0xa0, + 0x73, 0x85, 0x31, 0xe3, 0xb2, 0x64, 0x14, 0x6a, 0xff, 0xa5, 0xa2, 0x8e, + 0x24, 0xbb, 0xbd, 0x85, 0x52, 0x15, 0xa2, 0x79, 0xee, 0xf0, 0xb5, 0xee, + 0x3d, 0xb8, 0xf4, 0x7d, 0x80, 0xbc, 0xd9, 0x90, 0x35, 0x65, 0xb8, 0x17, + 0xa9, 0xad, 0xb3, 0x98, 0x9f, 0xa0, 0x7e, 0x7d, 0x6e, 0xfb, 0x3f, 0xad, + 0x7c, 0xc2, 0x1b, 0x59, 0x36, 0x96, 0xda, 0x37, 0x32, 0x4b, 0x4b, 0x5d, + 0x35, 0x02, 0x63, 0x8e, 0xdb, 0xa7, 0xcf, 0x62, 0xee, 0xcc, 0x2e, 0xd4, + 0x8d, 0xc9, 0xbd, 0x3c, 0x6a, 0x91, 0x72, 0xa2, 0x22, 0xa7, 0x72, 0x2d, + 0x20, 0xd1, 0xfa, 0xca, 0x37, 0xda, 0x18, 0x98, 0xe6, 0x16, 0x24, 0x71, + 0x25, 0x4b, 0xc4, 0xe5, 0x7b, 0x89, 0x52, 0x09, 0x02, 0xfd, 0x59, 0x2b, + 0x04, 0x6e, 0xca, 0x07, 0x81, 0xd4, 0xb3, 0xda, 0xda, 0xdb, 0xe3, 0xcc, + 0x80, 0xa8, 0x56, 0x07, 0x06, 0x7c, 0x96, 0x08, 0x37, 0x9d, 0xdb, 0x38, + 0xb6, 0x62, 0x34, 0x91, 0x62, 0x07, 0x74, 0x01, 0x38, 0xd8, 0x72, 0x30, + 0xe2, 0xeb, 0x90, 0x71, 0x26, 0x62, 0xc0, 0x57, 0xf3, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x82, 0x01, 0x25, 0x30, 0x82, 0x01, 0x21, 0x30, 0x0e, + 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, + 0x01, 0x06, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, + 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x1d, + 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xea, 0x4e, 0x7c, + 0xd4, 0x80, 0x2d, 0xe5, 0x15, 0x81, 0x86, 0x26, 0x8c, 0x82, 0x6d, 0xc0, + 0x98, 0xa4, 0xcf, 0x97, 0x0f, 0x30, 0x47, 0x06, 0x03, 0x55, 0x1d, 0x20, + 0x04, 0x40, 0x30, 0x3e, 0x30, 0x3c, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, + 0x30, 0x34, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x02, 0x01, 0x16, 0x26, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, + 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, + 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x30, 0x33, 0x06, 0x03, 0x55, 0x1d, + 0x1f, 0x04, 0x2c, 0x30, 0x2a, 0x30, 0x28, 0xa0, 0x26, 0xa0, 0x24, 0x86, + 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, + 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x6e, + 0x65, 0x74, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x72, 0x6c, 0x30, + 0x3d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, + 0x31, 0x30, 0x2f, 0x30, 0x2d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, + 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x6f, 0x6f, 0x74, + 0x72, 0x31, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, + 0x16, 0x80, 0x14, 0x60, 0x7b, 0x66, 0x1a, 0x45, 0x0d, 0x97, 0xca, 0x89, + 0x50, 0x2f, 0x7d, 0x04, 0xcd, 0x34, 0xa8, 0xff, 0xfc, 0xfd, 0x4b, 0x30, + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, + 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xd7, 0x45, 0x9e, 0xa0, 0xdc, + 0xe0, 0xe3, 0x61, 0x5a, 0x0b, 0x7d, 0x77, 0x84, 0x17, 0x2d, 0x65, 0x5a, + 0x82, 0x9a, 0x8d, 0xa3, 0x27, 0x2a, 0x85, 0xf7, 0xc9, 0xef, 0xe9, 0x86, + 0xfd, 0xd4, 0x47, 0xcd, 0x01, 0x52, 0x96, 0xc5, 0x43, 0xbd, 0x37, 0xb1, + 0xe1, 0xb8, 0xf2, 0xa9, 0xd2, 0x8a, 0x11, 0x84, 0x71, 0x91, 0x15, 0x89, + 0xdc, 0x02, 0x9d, 0x0b, 0xcb, 0x6c, 0x33, 0x85, 0x34, 0x28, 0x9e, 0x20, + 0xb2, 0xb1, 0x97, 0xdc, 0x6d, 0x0b, 0x10, 0xc1, 0x3c, 0xcd, 0x5f, 0xea, + 0x5d, 0xd7, 0x98, 0x31, 0xc5, 0x34, 0x99, 0x5c, 0x00, 0x61, 0x55, 0xc4, + 0x1b, 0x02, 0x5b, 0xc5, 0xe3, 0x89, 0xc8, 0xb4, 0xb8, 0x6f, 0x1e, 0x38, + 0xf2, 0x56, 0x26, 0xe9, 0x41, 0xef, 0x3d, 0xcd, 0xac, 0x99, 0x4f, 0x59, + 0x4a, 0x57, 0x2d, 0x4b, 0x7d, 0xae, 0xc7, 0x88, 0xfb, 0xd6, 0x98, 0x3b, + 0xf5, 0xe5, 0xf0, 0xe8, 0x89, 0x89, 0xb9, 0x8b, 0x03, 0xcb, 0x5a, 0x23, + 0x1f, 0xa4, 0xfd, 0xb8, 0xea, 0xfb, 0x2e, 0x9d, 0xae, 0x6a, 0x73, 0x09, + 0xbc, 0xfc, 0xd5, 0xa0, 0xb5, 0x44, 0x82, 0xab, 0x44, 0x91, 0x2e, 0x50, + 0x2e, 0x57, 0xc1, 0x43, 0xd8, 0x91, 0x04, 0x8b, 0xe9, 0x11, 0x2e, 0x5f, + 0xb4, 0x3f, 0x79, 0xdf, 0x1e, 0xfb, 0x3f, 0x30, 0x00, 0x8b, 0x53, 0xe3, + 0xb7, 0x2c, 0x1d, 0x3b, 0x4d, 0x8b, 0xdc, 0xe4, 0x64, 0x1d, 0x04, 0x58, + 0x33, 0xaf, 0x1b, 0x55, 0xe7, 0xab, 0x0c, 0xbf, 0x30, 0x04, 0x74, 0xe4, + 0xf3, 0x0e, 0x2f, 0x30, 0x39, 0x8d, 0x4b, 0x04, 0x8c, 0x1e, 0x75, 0x66, + 0x66, 0x49, 0xe0, 0xbe, 0x40, 0x34, 0xc7, 0x5c, 0x5a, 0x51, 0x92, 0xba, + 0x12, 0x3c, 0x52, 0xd5, 0x04, 0x82, 0x55, 0x2d, 0x67, 0xa5, 0xdf, 0xb7, + 0x95, 0x7c, 0xee, 0x3f, 0xc3, 0x08, 0xba, 0x04, 0xbe, 0xc0, 0x46, +} + +var certSet3Cert13 = []byte{ + 0x30, 0x82, 0x04, 0x69, 0x30, 0x82, 0x03, 0x51, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x0b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x44, 0x4e, 0xf0, + 0x42, 0x47, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x57, 0x31, 0x0b, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30, 0x17, + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61, 0x31, + 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x07, 0x52, 0x6f, + 0x6f, 0x74, 0x20, 0x43, 0x41, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x12, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, + 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30, 0x1e, + 0x17, 0x0d, 0x31, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x66, 0x31, 0x0b, 0x30, 0x09, + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30, + 0x17, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61, + 0x31, 0x3c, 0x30, 0x3a, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x33, 0x47, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x4f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x43, 0x41, + 0x20, 0x2d, 0x20, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x2d, 0x20, + 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xc7, + 0x0e, 0x6c, 0x3f, 0x23, 0x93, 0x7f, 0xcc, 0x70, 0xa5, 0x9d, 0x20, 0xc3, + 0x0e, 0x53, 0x3f, 0x7e, 0xc0, 0x4e, 0xc2, 0x98, 0x49, 0xca, 0x47, 0xd5, + 0x23, 0xef, 0x03, 0x34, 0x85, 0x74, 0xc8, 0xa3, 0x02, 0x2e, 0x46, 0x5c, + 0x0b, 0x7d, 0xc9, 0x88, 0x9d, 0x4f, 0x8b, 0xf0, 0xf8, 0x9c, 0x6c, 0x8c, + 0x55, 0x35, 0xdb, 0xbf, 0xf2, 0xb3, 0xea, 0xfb, 0xe3, 0x56, 0xe7, 0x4a, + 0x46, 0xd9, 0x13, 0x22, 0xca, 0x36, 0xd5, 0x9b, 0xc1, 0xa8, 0xe3, 0x96, + 0x43, 0x93, 0xf2, 0x0c, 0xbc, 0xe6, 0xf9, 0xe6, 0xe8, 0x99, 0xc8, 0x63, + 0x48, 0x78, 0x7f, 0x57, 0x36, 0x69, 0x1a, 0x19, 0x1d, 0x5a, 0xd1, 0xd4, + 0x7d, 0xc2, 0x9c, 0xd4, 0x7f, 0xe1, 0x80, 0x12, 0xae, 0x7a, 0xea, 0x88, + 0xea, 0x57, 0xd8, 0xca, 0x0a, 0x0a, 0x3a, 0x12, 0x49, 0xa2, 0x62, 0x19, + 0x7a, 0x0d, 0x24, 0xf7, 0x37, 0xeb, 0xb4, 0x73, 0x92, 0x7b, 0x05, 0x23, + 0x9b, 0x12, 0xb5, 0xce, 0xeb, 0x29, 0xdf, 0xa4, 0x14, 0x02, 0xb9, 0x01, + 0xa5, 0xd4, 0xa6, 0x9c, 0x43, 0x64, 0x88, 0xde, 0xf8, 0x7e, 0xfe, 0xe3, + 0xf5, 0x1e, 0xe5, 0xfe, 0xdc, 0xa3, 0xa8, 0xe4, 0x66, 0x31, 0xd9, 0x4c, + 0x25, 0xe9, 0x18, 0xb9, 0x89, 0x59, 0x09, 0xae, 0xe9, 0x9d, 0x1c, 0x6d, + 0x37, 0x0f, 0x4a, 0x1e, 0x35, 0x20, 0x28, 0xe2, 0xaf, 0xd4, 0x21, 0x8b, + 0x01, 0xc4, 0x45, 0xad, 0x6e, 0x2b, 0x63, 0xab, 0x92, 0x6b, 0x61, 0x0a, + 0x4d, 0x20, 0xed, 0x73, 0xba, 0x7c, 0xce, 0xfe, 0x16, 0xb5, 0xdb, 0x9f, + 0x80, 0xf0, 0xd6, 0x8b, 0x6c, 0xd9, 0x08, 0x79, 0x4a, 0x4f, 0x78, 0x65, + 0xda, 0x92, 0xbc, 0xbe, 0x35, 0xf9, 0xb3, 0xc4, 0xf9, 0x27, 0x80, 0x4e, + 0xff, 0x96, 0x52, 0xe6, 0x02, 0x20, 0xe1, 0x07, 0x73, 0xe9, 0x5d, 0x2b, + 0xbd, 0xb2, 0xf1, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x25, + 0x30, 0x82, 0x01, 0x21, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, + 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x12, 0x06, 0x03, + 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, + 0xff, 0x02, 0x01, 0x00, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, + 0x16, 0x04, 0x14, 0x96, 0xde, 0x61, 0xf1, 0xbd, 0x1c, 0x16, 0x29, 0x53, + 0x1c, 0xc0, 0xcc, 0x7d, 0x3b, 0x83, 0x00, 0x40, 0xe6, 0x1a, 0x7c, 0x30, + 0x47, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x40, 0x30, 0x3e, 0x30, 0x3c, + 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x34, 0x30, 0x32, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x26, 0x68, 0x74, + 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, + 0x30, 0x33, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2c, 0x30, 0x2a, 0x30, + 0x28, 0xa0, 0x26, 0xa0, 0x24, 0x86, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x6f, 0x6f, + 0x74, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3d, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x31, 0x30, 0x2f, 0x30, 0x2d, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x21, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x72, 0x31, 0x30, 0x1f, 0x06, 0x03, + 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x60, 0x7b, 0x66, + 0x1a, 0x45, 0x0d, 0x97, 0xca, 0x89, 0x50, 0x2f, 0x7d, 0x04, 0xcd, 0x34, + 0xa8, 0xff, 0xfc, 0xfd, 0x4b, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, + 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, + 0x00, 0x46, 0x2a, 0xee, 0x5e, 0xbd, 0xae, 0x01, 0x60, 0x37, 0x31, 0x11, + 0x86, 0x71, 0x74, 0xb6, 0x46, 0x49, 0xc8, 0x10, 0x16, 0xfe, 0x2f, 0x62, + 0x23, 0x17, 0xab, 0x1f, 0x87, 0xf8, 0x82, 0xed, 0xca, 0xdf, 0x0e, 0x2c, + 0xdf, 0x64, 0x75, 0x8e, 0xe5, 0x18, 0x72, 0xa7, 0x8c, 0x3a, 0x8b, 0xc9, + 0xac, 0xa5, 0x77, 0x50, 0xf7, 0xef, 0x9e, 0xa4, 0xe0, 0xa0, 0x8f, 0x14, + 0x57, 0xa3, 0x2a, 0x5f, 0xec, 0x7e, 0x6d, 0x10, 0xe6, 0xba, 0x8d, 0xb0, + 0x08, 0x87, 0x76, 0x0e, 0x4c, 0xb2, 0xd9, 0x51, 0xbb, 0x11, 0x02, 0xf2, + 0x5c, 0xdd, 0x1c, 0xbd, 0xf3, 0x55, 0x96, 0x0f, 0xd4, 0x06, 0xc0, 0xfc, + 0xe2, 0x23, 0x8a, 0x24, 0x70, 0xd3, 0xbb, 0xf0, 0x79, 0x1a, 0xa7, 0x61, + 0x70, 0x83, 0x8a, 0xaf, 0x06, 0xc5, 0x20, 0xd8, 0xa1, 0x63, 0xd0, 0x6c, + 0xae, 0x4f, 0x32, 0xd7, 0xae, 0x7c, 0x18, 0x45, 0x75, 0x05, 0x29, 0x77, + 0xdf, 0x42, 0x40, 0x64, 0x64, 0x86, 0xbe, 0x2a, 0x76, 0x09, 0x31, 0x6f, + 0x1d, 0x24, 0xf4, 0x99, 0xd0, 0x85, 0xfe, 0xf2, 0x21, 0x08, 0xf9, 0xc6, + 0xf6, 0xf1, 0xd0, 0x59, 0xed, 0xd6, 0x56, 0x3c, 0x08, 0x28, 0x03, 0x67, + 0xba, 0xf0, 0xf9, 0xf1, 0x90, 0x16, 0x47, 0xae, 0x67, 0xe6, 0xbc, 0x80, + 0x48, 0xe9, 0x42, 0x76, 0x34, 0x97, 0x55, 0x69, 0x24, 0x0e, 0x83, 0xd6, + 0xa0, 0x2d, 0xb4, 0xf5, 0xf3, 0x79, 0x8a, 0x49, 0x28, 0x74, 0x1a, 0x41, + 0xa1, 0xc2, 0xd3, 0x24, 0x88, 0x35, 0x30, 0x60, 0x94, 0x17, 0xb4, 0xe1, + 0x04, 0x22, 0x31, 0x3d, 0x3b, 0x2f, 0x17, 0x06, 0xb2, 0xb8, 0x9d, 0x86, + 0x2b, 0x5a, 0x69, 0xef, 0x83, 0xf5, 0x4b, 0xc4, 0xaa, 0xb4, 0x2a, 0xf8, + 0x7c, 0xa1, 0xb1, 0x85, 0x94, 0x8c, 0xf4, 0x0c, 0x87, 0x0c, 0xf4, 0xac, + 0x40, 0xf8, 0x59, 0x49, 0x98, +} + +var certSet3Cert14 = []byte{ + 0x30, 0x82, 0x04, 0x6c, 0x30, 0x82, 0x03, 0x54, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x4d, 0x5f, 0x2c, 0x34, 0x08, 0xb2, 0x4c, 0x20, 0xcd, + 0x6d, 0x50, 0x7e, 0x24, 0x4d, 0xc9, 0xec, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81, + 0xa9, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, + 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, 0x06, + 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, + 0x30, 0x36, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, + 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x16, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, + 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x32, 0x30, 0x38, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x30, + 0x32, 0x30, 0x37, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x3c, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0d, 0x54, + 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, + 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, + 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0x99, 0xe4, 0x85, + 0x5b, 0x76, 0x49, 0x7d, 0x2f, 0x05, 0xd8, 0xc5, 0xac, 0xc8, 0xc8, 0xa9, + 0xd3, 0xdc, 0x98, 0xe6, 0xd7, 0x34, 0xa6, 0x2f, 0x0c, 0xf2, 0x22, 0x26, + 0xd8, 0xa3, 0xc9, 0x14, 0x4c, 0x8f, 0x05, 0xa4, 0x45, 0xe8, 0x14, 0x0c, + 0x58, 0x90, 0x05, 0x1a, 0xb7, 0xc5, 0xc1, 0x06, 0xa5, 0x80, 0xaf, 0xbb, + 0x1d, 0x49, 0x6b, 0x52, 0x34, 0x88, 0xc3, 0x59, 0xe7, 0xef, 0x6b, 0xc4, + 0x27, 0x41, 0x8c, 0x2b, 0x66, 0x1d, 0xd0, 0xe0, 0xa3, 0x97, 0x98, 0x19, + 0x34, 0x4b, 0x41, 0xd5, 0x98, 0xd5, 0xc7, 0x05, 0xad, 0xa2, 0xe4, 0xd7, + 0xed, 0x0c, 0xad, 0x4f, 0xc1, 0xb5, 0xb0, 0x21, 0xfd, 0x3e, 0x50, 0x53, + 0xb2, 0xc4, 0x90, 0xd0, 0xd4, 0x30, 0x67, 0x6c, 0x9a, 0xf1, 0x0e, 0x74, + 0xc4, 0xc2, 0xdc, 0x8a, 0xe8, 0x97, 0xff, 0xc9, 0x92, 0xae, 0x01, 0x8a, + 0x56, 0x0a, 0x98, 0x32, 0xb0, 0x00, 0x23, 0xec, 0x90, 0x1a, 0x60, 0xc3, + 0xed, 0xbb, 0x3a, 0xcb, 0x0f, 0x63, 0x9f, 0x0d, 0x44, 0xc9, 0x52, 0xe1, + 0x25, 0x96, 0xbf, 0xed, 0x50, 0x95, 0x89, 0x7f, 0x56, 0x14, 0xb1, 0xb7, + 0x61, 0x1d, 0x1c, 0x07, 0x8c, 0x3a, 0x2c, 0xf7, 0xff, 0x80, 0xde, 0x39, + 0x45, 0xd5, 0xaf, 0x1a, 0xd1, 0x78, 0xd8, 0xc7, 0x71, 0x6a, 0xa3, 0x19, + 0xa7, 0x32, 0x50, 0x21, 0xe9, 0xf2, 0x0e, 0xa1, 0xc6, 0x13, 0x03, 0x44, + 0x48, 0xd1, 0x66, 0xa8, 0x52, 0x57, 0xd7, 0x11, 0xb4, 0x93, 0x8b, 0xe5, + 0x99, 0x9f, 0x5d, 0xe7, 0x78, 0x51, 0xe5, 0x4d, 0xf6, 0xb7, 0x59, 0xb4, + 0x76, 0xb5, 0x09, 0x37, 0x4d, 0x06, 0x38, 0x13, 0x7a, 0x1c, 0x08, 0x98, + 0x5c, 0xc4, 0x48, 0x4a, 0xcb, 0x52, 0xa0, 0xa9, 0xf8, 0xb1, 0x9d, 0x8e, + 0x7b, 0x79, 0xb0, 0x20, 0x2f, 0x3c, 0x96, 0xa8, 0x11, 0x62, 0x47, 0xbb, + 0x11, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x81, 0xfb, 0x30, 0x81, 0xf8, + 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, + 0x04, 0x26, 0x30, 0x24, 0x30, 0x22, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x30, 0x01, 0x86, 0x16, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, + 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, + 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, + 0x30, 0x34, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2d, 0x30, 0x2b, 0x30, + 0x29, 0xa0, 0x27, 0xa0, 0x25, 0x86, 0x23, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x50, + 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x28, + 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x21, 0x30, 0x1f, 0xa4, 0x1d, 0x30, + 0x1b, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x10, + 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x50, 0x4b, 0x49, + 0x2d, 0x32, 0x2d, 0x39, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, + 0x16, 0x04, 0x14, 0xa7, 0xa2, 0x83, 0xbb, 0x34, 0x45, 0x40, 0x3d, 0xfc, + 0xd5, 0x30, 0x4f, 0x12, 0xb9, 0x3e, 0xa1, 0x01, 0x9f, 0xf6, 0xdb, 0x30, + 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, + 0x7b, 0x5b, 0x45, 0xcf, 0xaf, 0xce, 0xcb, 0x7a, 0xfd, 0x31, 0x92, 0x1a, + 0x6a, 0xb6, 0xf3, 0x46, 0xeb, 0x57, 0x48, 0x50, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x01, 0x00, 0x80, 0x22, 0x80, 0xe0, 0x6c, 0xc8, 0x95, 0x16, + 0xd7, 0x57, 0x26, 0x87, 0xf3, 0x72, 0x34, 0xdb, 0xc6, 0x72, 0x56, 0x27, + 0x3e, 0xd3, 0x96, 0xf6, 0x2e, 0x25, 0x91, 0xa5, 0x3e, 0x33, 0x97, 0xa7, + 0x4b, 0xe5, 0x2f, 0xfb, 0x25, 0x7d, 0x2f, 0x07, 0x61, 0xfa, 0x6f, 0x83, + 0x74, 0x4c, 0x4c, 0x53, 0x72, 0x20, 0xa4, 0x7a, 0xcf, 0x51, 0x51, 0x56, + 0x81, 0x88, 0xb0, 0x6d, 0x1f, 0x36, 0x2c, 0xc8, 0x2b, 0xb1, 0x88, 0x99, + 0xc1, 0xfe, 0x44, 0xab, 0x48, 0x51, 0x7c, 0xd8, 0xf2, 0x44, 0x64, 0x2a, + 0xd8, 0x71, 0xa7, 0xfb, 0x1a, 0x2f, 0xf9, 0x19, 0x8d, 0x34, 0xb2, 0x23, + 0xbf, 0xc4, 0x4c, 0x55, 0x1d, 0x8e, 0x44, 0xe8, 0xaa, 0x5d, 0x9a, 0xdd, + 0x9f, 0xfd, 0x03, 0xc7, 0xba, 0x24, 0x43, 0x8d, 0x2d, 0x47, 0x44, 0xdb, + 0xf6, 0xd8, 0x98, 0xc8, 0xb2, 0xf9, 0xda, 0xef, 0xed, 0x29, 0x5c, 0x69, + 0x12, 0xfa, 0xd1, 0x23, 0x96, 0x0f, 0xbf, 0x9c, 0x0d, 0xf2, 0x79, 0x45, + 0x53, 0x37, 0x9a, 0x56, 0x2f, 0xe8, 0x57, 0x10, 0x70, 0xf6, 0xee, 0x89, + 0x0c, 0x49, 0x89, 0x9a, 0xc1, 0x23, 0xf5, 0xc2, 0x2a, 0xcc, 0x41, 0xcf, + 0x22, 0xab, 0x65, 0x6e, 0xb7, 0x94, 0x82, 0x6d, 0x2f, 0x40, 0x5f, 0x58, + 0xde, 0xeb, 0x95, 0x2b, 0xa6, 0x72, 0x68, 0x52, 0x19, 0x91, 0x2a, 0xae, + 0x75, 0x9d, 0x4e, 0x92, 0xe6, 0xca, 0xde, 0x54, 0xea, 0x18, 0xab, 0x25, + 0x3c, 0xe6, 0x64, 0xa6, 0x79, 0x1f, 0x26, 0x7d, 0x61, 0xed, 0x7d, 0xd2, + 0xe5, 0x71, 0x55, 0xd8, 0x93, 0x17, 0x7c, 0x14, 0x38, 0x30, 0x3c, 0xdf, + 0x86, 0xe3, 0x4c, 0xad, 0x49, 0xe3, 0x97, 0x59, 0xce, 0x1b, 0x9b, 0x2b, + 0xce, 0xdc, 0x65, 0xd4, 0x0b, 0x28, 0x6b, 0x4e, 0x84, 0x46, 0x51, 0x44, + 0xf7, 0x33, 0x08, 0x2d, 0x58, 0x97, 0x21, 0xae, +} + +var certSet3Cert15 = []byte{ + 0x30, 0x82, 0x04, 0x6e, 0x30, 0x82, 0x03, 0x56, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x6e, 0x8a, 0x90, 0xeb, 0xcf, 0xf0, 0x44, 0x8a, 0x72, + 0x0d, 0x08, 0x05, 0xd0, 0x82, 0xa5, 0x44, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x58, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, + 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x31, 0x30, 0x2f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x28, + 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x50, 0x72, 0x69, + 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, + 0x33, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, + 0x33, 0x31, 0x30, 0x33, 0x30, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, + 0x30, 0x47, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, + 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x17, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x45, + 0x56, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, + 0x34, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, + 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, + 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xd9, 0xb4, + 0x05, 0xf2, 0x38, 0x67, 0x0f, 0x09, 0xe7, 0x7c, 0xf5, 0x63, 0x2a, 0xe5, + 0xb9, 0x5e, 0xa8, 0x11, 0xae, 0x75, 0x71, 0xd9, 0x4c, 0x84, 0x67, 0xad, + 0x89, 0x5d, 0xfc, 0x28, 0x3d, 0x2a, 0xb0, 0xa5, 0xd5, 0xd4, 0xe6, 0x30, + 0x0a, 0x84, 0xd4, 0xe4, 0x18, 0xcb, 0x85, 0x37, 0xc5, 0x46, 0x71, 0xeb, + 0x1c, 0x7b, 0x69, 0xdb, 0x65, 0x69, 0x8c, 0x30, 0x05, 0x3e, 0x07, 0xe1, + 0x6f, 0x3c, 0xc1, 0x0b, 0x61, 0xe6, 0x38, 0x44, 0xfc, 0xbc, 0x8c, 0x2f, + 0x4e, 0x75, 0x57, 0xf5, 0x96, 0x99, 0x7c, 0x3e, 0x87, 0x1f, 0x0f, 0x90, + 0x4b, 0x70, 0xc3, 0x3f, 0x39, 0x45, 0x3b, 0x3a, 0x6b, 0xcb, 0xbb, 0x7b, + 0x40, 0x54, 0xd1, 0x8b, 0x4b, 0xa1, 0x72, 0xd2, 0x04, 0xe9, 0xe0, 0x72, + 0x1a, 0x93, 0x11, 0x7a, 0x2f, 0xf1, 0xab, 0x9d, 0x9c, 0x98, 0x58, 0xae, + 0x2c, 0xea, 0x77, 0x5f, 0x2f, 0x2e, 0x87, 0xaf, 0xb8, 0x6b, 0xe3, 0xe2, + 0xe2, 0x3f, 0xd6, 0x3d, 0xe0, 0x96, 0x44, 0xdf, 0x11, 0x55, 0x63, 0x52, + 0x2f, 0xf4, 0x26, 0x78, 0xc4, 0x0f, 0x20, 0x4d, 0x0a, 0xc0, 0x68, 0x70, + 0x15, 0x86, 0x38, 0xee, 0xb7, 0x76, 0x88, 0xab, 0x18, 0x8f, 0x4f, 0x35, + 0x1e, 0xd4, 0x8c, 0xc9, 0xdb, 0x7e, 0x3d, 0x44, 0xd4, 0x36, 0x8c, 0xc1, + 0x37, 0xb5, 0x59, 0x5b, 0x87, 0xf9, 0xe9, 0xf1, 0xd4, 0xc5, 0x28, 0xbd, + 0x1d, 0xdc, 0xcc, 0x96, 0x72, 0xd1, 0x7a, 0xa1, 0xa7, 0x20, 0xb5, 0xb8, + 0xaf, 0xf8, 0x6e, 0xa5, 0x60, 0x7b, 0x2b, 0x8d, 0x1f, 0xee, 0xf4, 0x2b, + 0xd6, 0x69, 0xcd, 0xaf, 0xca, 0x80, 0x58, 0x29, 0xe8, 0x4c, 0x00, 0x20, + 0x8a, 0x49, 0x0a, 0x6e, 0x8e, 0x8c, 0xa8, 0xd1, 0x00, 0x12, 0x84, 0xb6, + 0xc5, 0xe2, 0x95, 0xa2, 0xc0, 0x3b, 0xa4, 0x6b, 0xf0, 0x82, 0xd0, 0x96, + 0x5d, 0x25, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x43, 0x30, + 0x82, 0x01, 0x3f, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, + 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, + 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, + 0x02, 0x01, 0x06, 0x30, 0x2f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x01, 0x01, 0x04, 0x23, 0x30, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x47, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, + 0x40, 0x30, 0x3e, 0x30, 0x3c, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, + 0x34, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, + 0x01, 0x16, 0x26, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, + 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x34, 0x06, 0x03, 0x55, 0x1d, 0x1f, + 0x04, 0x2d, 0x30, 0x2b, 0x30, 0x29, 0xa0, 0x27, 0xa0, 0x25, 0x86, 0x23, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x31, 0x2e, 0x73, 0x79, + 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x65, 0x6f, 0x54, + 0x72, 0x75, 0x73, 0x74, 0x50, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, + 0x29, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, + 0x30, 0x1c, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x11, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, + 0x2d, 0x31, 0x2d, 0x35, 0x33, 0x38, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, + 0x0e, 0x04, 0x16, 0x04, 0x14, 0xde, 0xcf, 0x5c, 0x50, 0xb7, 0xae, 0x02, + 0x1f, 0x15, 0x17, 0xaa, 0x16, 0xe8, 0x0d, 0xb5, 0x28, 0x9d, 0x6a, 0x5a, + 0xf3, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, + 0x80, 0x14, 0x2c, 0xd5, 0x50, 0x41, 0x97, 0x15, 0x8b, 0xf0, 0x8f, 0x36, + 0x61, 0x5b, 0x4a, 0xfb, 0x6b, 0xd9, 0x99, 0xc9, 0x33, 0x92, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xb4, 0x8e, 0xbd, 0x07, 0xb9, 0x9a, + 0x85, 0xec, 0x3b, 0x67, 0xbd, 0x07, 0x60, 0x61, 0xe6, 0x84, 0xd1, 0xd4, + 0xef, 0xeb, 0x1b, 0xba, 0x0b, 0x82, 0x4b, 0x95, 0x64, 0xb6, 0x66, 0x53, + 0x23, 0xbd, 0xb7, 0x84, 0xdd, 0xe4, 0x7b, 0x8d, 0x09, 0xda, 0xcf, 0xb2, + 0xf5, 0xf1, 0xc3, 0xbf, 0x87, 0x84, 0xbe, 0x4e, 0xa6, 0xa8, 0xc2, 0xe7, + 0x12, 0x39, 0x28, 0x34, 0xe0, 0xa4, 0x56, 0x44, 0x40, 0x0c, 0x9f, 0x88, + 0xa3, 0x15, 0xd3, 0xe8, 0xd3, 0x5e, 0xe3, 0x1c, 0x04, 0x60, 0xfb, 0x69, + 0x36, 0x4f, 0x6a, 0x7e, 0x0c, 0x2a, 0x28, 0xc1, 0xf3, 0xaa, 0x58, 0x0e, + 0x6c, 0xce, 0x1d, 0x07, 0xc3, 0x4a, 0xc0, 0x9c, 0x8d, 0xc3, 0x74, 0xb1, + 0xae, 0x82, 0xf0, 0x1a, 0xe1, 0xf9, 0x4e, 0x29, 0xbd, 0x46, 0xde, 0xb7, + 0x1d, 0xf9, 0x7d, 0xdb, 0xd9, 0x0f, 0x84, 0xcb, 0x92, 0x45, 0xcc, 0x1c, + 0xb3, 0x18, 0xf6, 0xa0, 0xcf, 0x71, 0x6f, 0x0c, 0x2e, 0x9b, 0xd2, 0x2d, + 0xb3, 0x99, 0x93, 0x83, 0x44, 0xac, 0x15, 0xaa, 0x9b, 0x2e, 0x67, 0xec, + 0x4f, 0x88, 0x69, 0x05, 0x56, 0x7b, 0x8b, 0xb2, 0x43, 0xa9, 0x3a, 0x6c, + 0x1c, 0x13, 0x33, 0x25, 0x1b, 0xfd, 0xa8, 0xc8, 0x57, 0x02, 0xfb, 0x1c, + 0xe0, 0xd1, 0xbd, 0x3b, 0x56, 0x44, 0x65, 0xc3, 0x63, 0xf5, 0x1b, 0xef, + 0xec, 0x30, 0xd9, 0xe3, 0x6e, 0x2e, 0x13, 0xe9, 0x39, 0x08, 0x2a, 0x0c, + 0x72, 0xf3, 0x9a, 0xcc, 0xf6, 0x27, 0x29, 0x84, 0xd3, 0xef, 0x4c, 0xc7, + 0x84, 0x11, 0x65, 0x1f, 0xc6, 0xe3, 0x81, 0x03, 0xdb, 0x87, 0xcc, 0x78, + 0xf7, 0xb5, 0x9d, 0x96, 0x3e, 0x6a, 0x7f, 0xbc, 0x11, 0x85, 0x7a, 0x75, + 0xe6, 0x41, 0x7d, 0x0d, 0xcf, 0xf9, 0xe5, 0x85, 0x69, 0x25, 0x8f, 0xc7, + 0x8d, 0x07, 0x2d, 0xf8, 0x69, 0x0f, 0xcb, 0x41, 0x53, 0x00, +} + +var certSet3Cert16 = []byte{ + 0x30, 0x82, 0x04, 0x6f, 0x30, 0x82, 0x03, 0x57, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x02, 0x3a, 0x73, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x30, + 0x36, 0x31, 0x31, 0x32, 0x32, 0x30, 0x32, 0x35, 0x39, 0x5a, 0x17, 0x0d, + 0x32, 0x32, 0x30, 0x35, 0x32, 0x30, 0x32, 0x32, 0x30, 0x32, 0x35, 0x39, + 0x5a, 0x30, 0x66, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, + 0x0b, 0x13, 0x14, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x20, 0x53, 0x53, 0x4c, 0x31, + 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x17, 0x47, 0x65, + 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x44, 0x56, 0x20, 0x53, 0x53, + 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x82, 0x01, + 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, + 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xb3, 0x44, 0x3a, 0x6c, 0xb0, 0xae, + 0xcb, 0x14, 0xf9, 0x8c, 0x19, 0x74, 0x34, 0x5c, 0xa9, 0x69, 0xe3, 0x88, + 0x53, 0x77, 0xa5, 0xa7, 0xff, 0xbd, 0xd1, 0x3c, 0x0d, 0x27, 0xe4, 0xde, + 0xad, 0x7f, 0xbc, 0xd1, 0x90, 0x58, 0x93, 0xd6, 0xa6, 0xda, 0x39, 0x9c, + 0xad, 0xe1, 0x0e, 0x56, 0x46, 0xee, 0x95, 0x9e, 0x10, 0x68, 0x4c, 0x9c, + 0x2b, 0xf6, 0x6a, 0x3a, 0x8b, 0x80, 0x81, 0x87, 0x06, 0x57, 0x25, 0x1a, + 0x56, 0x52, 0x94, 0xdd, 0x90, 0xeb, 0x67, 0x3b, 0xde, 0xfa, 0xae, 0x36, + 0x68, 0xd3, 0x62, 0x69, 0xf6, 0x6c, 0x82, 0x24, 0x44, 0x4f, 0x87, 0x5c, + 0x98, 0x11, 0x95, 0x64, 0x6b, 0xe8, 0x0c, 0xd1, 0xdd, 0xe6, 0x27, 0x97, + 0xae, 0xcc, 0xe2, 0x91, 0x6a, 0x41, 0x12, 0xb6, 0xab, 0xe5, 0xcc, 0x6e, + 0xcc, 0x23, 0xb8, 0x63, 0x8a, 0x1f, 0x31, 0x93, 0x2d, 0x06, 0xc4, 0xf7, + 0xe8, 0x3d, 0x58, 0xcd, 0x97, 0x08, 0x46, 0x6c, 0x7b, 0x74, 0xc0, 0xf8, + 0xfc, 0x31, 0x3b, 0xa7, 0x7f, 0xd7, 0x8f, 0xb0, 0xc9, 0x15, 0x63, 0x50, + 0x7a, 0x12, 0x4d, 0xf5, 0x12, 0x1e, 0xa3, 0x7e, 0x55, 0xe3, 0x75, 0xb7, + 0xea, 0x1e, 0xea, 0x31, 0x2c, 0x08, 0x4e, 0xd8, 0xcb, 0x43, 0x74, 0x89, + 0x24, 0xbc, 0xd2, 0x0e, 0x1e, 0xf0, 0xdb, 0x05, 0x24, 0xf6, 0x8a, 0xbf, + 0x10, 0x27, 0x84, 0x41, 0x1a, 0xf6, 0x18, 0x53, 0xee, 0x91, 0xd0, 0x54, + 0x17, 0xd3, 0x7d, 0x3e, 0x7e, 0xb2, 0x7d, 0xa8, 0xbf, 0xdb, 0xb9, 0x21, + 0x2a, 0xf0, 0x89, 0xb9, 0x08, 0x6e, 0x5a, 0xb3, 0x5e, 0xea, 0x82, 0xb8, + 0x7e, 0x27, 0x0b, 0xcc, 0x56, 0x73, 0x81, 0x05, 0x4f, 0xe3, 0x96, 0x2d, + 0x71, 0xd5, 0x78, 0xa7, 0x60, 0xc3, 0xd7, 0xec, 0xaa, 0x39, 0x1a, 0x05, + 0x39, 0x82, 0x81, 0xe0, 0x15, 0x2c, 0x35, 0xd1, 0xee, 0x25, 0x02, 0x03, + 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x48, 0x30, 0x82, 0x01, 0x44, 0x30, + 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, + 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, 0xab, 0x05, 0x64, 0x0c, 0x11, + 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, 0x4e, 0x30, 0x1d, 0x06, 0x03, + 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xad, 0x65, 0x22, 0x85, 0x90, + 0xd0, 0x3b, 0xe3, 0xa1, 0x49, 0x8b, 0x37, 0xf9, 0xf1, 0x0b, 0x1d, 0x5f, + 0x17, 0xa0, 0x77, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, + 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, + 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, + 0x02, 0x01, 0x06, 0x30, 0x35, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2e, + 0x30, 0x2c, 0x30, 0x2a, 0xa0, 0x28, 0xa0, 0x26, 0x86, 0x24, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x67, 0x74, + 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x2e, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x22, + 0x30, 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x30, 0x01, 0x86, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, + 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x64, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x4c, + 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, 0x41, 0x06, + 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07, 0x36, 0x30, + 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, + 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, + 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x2f, 0x63, 0x70, 0x73, 0x30, 0x29, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, + 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31, 0x1a, 0x30, 0x18, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, + 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d, 0x36, 0x39, 0x39, 0x30, + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, + 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x4e, 0x27, 0xb8, 0x1a, 0xc7, + 0x3b, 0xdc, 0x5d, 0xbb, 0x9e, 0x1a, 0x35, 0x23, 0x1e, 0x88, 0x55, 0x90, + 0xd1, 0xec, 0x86, 0x9c, 0x88, 0xb7, 0xe0, 0x1f, 0x67, 0x87, 0xe2, 0x7c, + 0xb5, 0x43, 0x03, 0x0e, 0xb6, 0x02, 0xe8, 0xe0, 0xff, 0x86, 0x84, 0x19, + 0x71, 0xe9, 0xf2, 0x4b, 0xf5, 0x9e, 0x2e, 0x2e, 0x5e, 0xdb, 0xab, 0xd6, + 0x1c, 0x4e, 0xc4, 0x3e, 0xb8, 0x2c, 0x78, 0x86, 0x71, 0x10, 0xae, 0x8d, + 0xc5, 0x70, 0xbf, 0xa4, 0xf9, 0x89, 0xe6, 0xb4, 0xed, 0xe8, 0x4b, 0xed, + 0x7c, 0x09, 0x2a, 0x09, 0x08, 0x06, 0x3e, 0xd4, 0xe1, 0xde, 0x82, 0x92, + 0x0c, 0x34, 0x30, 0x35, 0x0a, 0xc1, 0x60, 0x75, 0xca, 0xb6, 0x55, 0x6b, + 0xaa, 0x00, 0x42, 0xcb, 0x3f, 0xfb, 0x10, 0xe1, 0xfb, 0x85, 0xc1, 0x21, + 0x90, 0x72, 0x2b, 0x6e, 0xc0, 0xe8, 0x9d, 0xd9, 0xb5, 0x5a, 0x50, 0x8e, + 0x34, 0x1e, 0xbb, 0x38, 0xa7, 0x3c, 0x31, 0xbd, 0x7a, 0xf2, 0x43, 0x8b, + 0xeb, 0x16, 0xca, 0xad, 0x9b, 0xde, 0x6b, 0x1e, 0xf8, 0x4f, 0xb6, 0x5e, + 0x4a, 0x29, 0x1f, 0x7a, 0x14, 0xee, 0x91, 0xf4, 0x94, 0x4f, 0xa4, 0xbd, + 0x9b, 0x76, 0x7a, 0xbc, 0xf1, 0x51, 0x7a, 0x96, 0xa8, 0x81, 0x0e, 0x83, + 0x87, 0x3f, 0x8b, 0xae, 0x5e, 0x32, 0x9b, 0x34, 0x9e, 0xb2, 0xe7, 0xdb, + 0x2f, 0xec, 0x02, 0xa0, 0xe1, 0xfd, 0x51, 0x52, 0xfe, 0x2c, 0xdb, 0x36, + 0xba, 0xc1, 0xd6, 0x5e, 0x4b, 0x58, 0x6d, 0xde, 0xc6, 0xe1, 0xe1, 0xfa, + 0x9a, 0x03, 0x2c, 0x5b, 0xa2, 0xe1, 0xb3, 0x9b, 0xf9, 0x36, 0xec, 0xc1, + 0x73, 0xfa, 0x33, 0x12, 0x66, 0x95, 0xe3, 0x69, 0x10, 0xb6, 0xd7, 0xaa, + 0x33, 0xfa, 0xf6, 0x9d, 0x41, 0x6d, 0x96, 0x2a, 0xba, 0xbe, 0x83, 0x31, + 0x41, 0x7f, 0x0c, 0x0a, 0xd2, 0x69, 0xd6, 0xfc, 0x35, 0x4c, 0xc3, +} + +var certSet3Cert17 = []byte{ + 0x30, 0x82, 0x04, 0x75, 0x30, 0x82, 0x03, 0x5d, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x09, 0x00, 0xa7, 0x0e, 0x4a, 0x4c, 0x34, 0x82, 0xb7, 0x7f, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x0b, 0x05, 0x00, 0x30, 0x68, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, + 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, + 0x55, 0x04, 0x0a, 0x13, 0x1c, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x20, 0x54, 0x65, 0x63, 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, + 0x69, 0x65, 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x32, 0x30, + 0x30, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x29, 0x53, 0x74, 0x61, 0x72, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, + 0x32, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x39, 0x30, 0x39, 0x30, 0x32, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x33, 0x34, 0x30, 0x36, + 0x32, 0x38, 0x31, 0x37, 0x33, 0x39, 0x31, 0x36, 0x5a, 0x30, 0x81, 0x98, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x07, + 0x41, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, + 0x03, 0x55, 0x04, 0x07, 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, + 0x64, 0x61, 0x6c, 0x65, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x1c, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x20, 0x54, 0x65, 0x63, 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, + 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x3b, 0x30, 0x39, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x32, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, + 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xd5, 0x0c, 0x3a, 0xc4, 0x2a, 0xf9, 0x4e, + 0xe2, 0xf5, 0xbe, 0x19, 0x97, 0x5f, 0x8e, 0x88, 0x53, 0xb1, 0x1f, 0x3f, + 0xcb, 0xcf, 0x9f, 0x20, 0x13, 0x6d, 0x29, 0x3a, 0xc8, 0x0f, 0x7d, 0x3c, + 0xf7, 0x6b, 0x76, 0x38, 0x63, 0xd9, 0x36, 0x60, 0xa8, 0x9b, 0x5e, 0x5c, + 0x00, 0x80, 0xb2, 0x2f, 0x59, 0x7f, 0xf6, 0x87, 0xf9, 0x25, 0x43, 0x86, + 0xe7, 0x69, 0x1b, 0x52, 0x9a, 0x90, 0xe1, 0x71, 0xe3, 0xd8, 0x2d, 0x0d, + 0x4e, 0x6f, 0xf6, 0xc8, 0x49, 0xd9, 0xb6, 0xf3, 0x1a, 0x56, 0xae, 0x2b, + 0xb6, 0x74, 0x14, 0xeb, 0xcf, 0xfb, 0x26, 0xe3, 0x1a, 0xba, 0x1d, 0x96, + 0x2e, 0x6a, 0x3b, 0x58, 0x94, 0x89, 0x47, 0x56, 0xff, 0x25, 0xa0, 0x93, + 0x70, 0x53, 0x83, 0xda, 0x84, 0x74, 0x14, 0xc3, 0x67, 0x9e, 0x04, 0x68, + 0x3a, 0xdf, 0x8e, 0x40, 0x5a, 0x1d, 0x4a, 0x4e, 0xcf, 0x43, 0x91, 0x3b, + 0xe7, 0x56, 0xd6, 0x00, 0x70, 0xcb, 0x52, 0xee, 0x7b, 0x7d, 0xae, 0x3a, + 0xe7, 0xbc, 0x31, 0xf9, 0x45, 0xf6, 0xc2, 0x60, 0xcf, 0x13, 0x59, 0x02, + 0x2b, 0x80, 0xcc, 0x34, 0x47, 0xdf, 0xb9, 0xde, 0x90, 0x65, 0x6d, 0x02, + 0xcf, 0x2c, 0x91, 0xa6, 0xa6, 0xe7, 0xde, 0x85, 0x18, 0x49, 0x7c, 0x66, + 0x4e, 0xa3, 0x3a, 0x6d, 0xa9, 0xb5, 0xee, 0x34, 0x2e, 0xba, 0x0d, 0x03, + 0xb8, 0x33, 0xdf, 0x47, 0xeb, 0xb1, 0x6b, 0x8d, 0x25, 0xd9, 0x9b, 0xce, + 0x81, 0xd1, 0x45, 0x46, 0x32, 0x96, 0x70, 0x87, 0xde, 0x02, 0x0e, 0x49, + 0x43, 0x85, 0xb6, 0x6c, 0x73, 0xbb, 0x64, 0xea, 0x61, 0x41, 0xac, 0xc9, + 0xd4, 0x54, 0xdf, 0x87, 0x2f, 0xc7, 0x22, 0xb2, 0x26, 0xcc, 0x9f, 0x59, + 0x54, 0x68, 0x9f, 0xfc, 0xbe, 0x2a, 0x2f, 0xc4, 0x55, 0x1c, 0x75, 0x40, + 0x60, 0x17, 0x85, 0x02, 0x55, 0x39, 0x8b, 0x7f, 0x05, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x81, 0xf0, 0x30, 0x81, 0xed, 0x30, 0x0f, 0x06, 0x03, + 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, + 0xff, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, + 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, + 0x04, 0x16, 0x04, 0x14, 0x9c, 0x5f, 0x00, 0xdf, 0xaa, 0x01, 0xd7, 0x30, + 0x2b, 0x38, 0x88, 0xa2, 0xb8, 0x6d, 0x4a, 0x9c, 0xf2, 0x11, 0x91, 0x83, + 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, + 0x14, 0xbf, 0x5f, 0xb7, 0xd1, 0xce, 0xdd, 0x1f, 0x86, 0xf4, 0x5b, 0x55, + 0xac, 0xdc, 0xd7, 0x10, 0xc2, 0x0e, 0xa9, 0x88, 0xe7, 0x30, 0x4f, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x43, 0x30, + 0x41, 0x30, 0x1c, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, + 0x01, 0x86, 0x10, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x2e, + 0x73, 0x73, 0x32, 0x2e, 0x75, 0x73, 0x2f, 0x30, 0x21, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x15, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x78, 0x2e, 0x73, 0x73, 0x32, 0x2e, 0x75, 0x73, + 0x2f, 0x78, 0x2e, 0x63, 0x65, 0x72, 0x30, 0x26, 0x06, 0x03, 0x55, 0x1d, + 0x1f, 0x04, 0x1f, 0x30, 0x1d, 0x30, 0x1b, 0xa0, 0x19, 0xa0, 0x17, 0x86, + 0x15, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x73, 0x2e, 0x73, 0x73, + 0x32, 0x2e, 0x75, 0x73, 0x2f, 0x72, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x11, + 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x0a, 0x30, 0x08, 0x30, 0x06, 0x06, + 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, + 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, + 0x00, 0x23, 0x1d, 0xe3, 0x8a, 0x57, 0xca, 0x7d, 0xe9, 0x17, 0x79, 0x4c, + 0xf1, 0x1e, 0x55, 0xfd, 0xcc, 0x53, 0x6e, 0x3e, 0x47, 0x0f, 0xdf, 0xc6, + 0x55, 0xf2, 0xb2, 0x04, 0x36, 0xed, 0x80, 0x1f, 0x53, 0xc4, 0x5d, 0x34, + 0x28, 0x6b, 0xbe, 0xc7, 0x55, 0xfc, 0x67, 0xea, 0xcb, 0x3f, 0x7f, 0x90, + 0xb2, 0x33, 0xcd, 0x1b, 0x58, 0x10, 0x82, 0x02, 0xf8, 0xf8, 0x2f, 0xf5, + 0x13, 0x60, 0xd4, 0x05, 0xce, 0xf1, 0x81, 0x08, 0xc1, 0xdd, 0xa7, 0x75, + 0x97, 0x4f, 0x18, 0xb9, 0x6d, 0xde, 0xf7, 0x93, 0x91, 0x08, 0xba, 0x7e, + 0x40, 0x2c, 0xed, 0xc1, 0xea, 0xbb, 0x76, 0x9e, 0x33, 0x06, 0x77, 0x1d, + 0x0d, 0x08, 0x7f, 0x53, 0xdd, 0x1b, 0x64, 0xab, 0x82, 0x27, 0xf1, 0x69, + 0xd5, 0x4d, 0x5e, 0xae, 0xf4, 0xa1, 0xc3, 0x75, 0xa7, 0x58, 0x44, 0x2d, + 0xf2, 0x3c, 0x70, 0x98, 0xac, 0xba, 0x69, 0xb6, 0x95, 0x77, 0x7f, 0x0f, + 0x31, 0x5e, 0x2c, 0xfc, 0xa0, 0x87, 0x3a, 0x47, 0x69, 0xf0, 0x79, 0x5f, + 0xf4, 0x14, 0x54, 0xa4, 0x95, 0x5e, 0x11, 0x78, 0x12, 0x60, 0x27, 0xce, + 0x9f, 0xc2, 0x77, 0xff, 0x23, 0x53, 0x77, 0x5d, 0xba, 0xff, 0xea, 0x59, + 0xe7, 0xdb, 0xcf, 0xaf, 0x92, 0x96, 0xef, 0x24, 0x9a, 0x35, 0x10, 0x7a, + 0x9c, 0x91, 0xc6, 0x0e, 0x7d, 0x99, 0xf6, 0x3f, 0x19, 0xdf, 0xf5, 0x72, + 0x54, 0xe1, 0x15, 0xa9, 0x07, 0x59, 0x7b, 0x83, 0xbf, 0x52, 0x2e, 0x46, + 0x8c, 0xb2, 0x00, 0x64, 0x76, 0x1c, 0x48, 0xd3, 0xd8, 0x79, 0xe8, 0x6e, + 0x56, 0xcc, 0xae, 0x2c, 0x03, 0x90, 0xd7, 0x19, 0x38, 0x99, 0xe4, 0xca, + 0x09, 0x19, 0x5b, 0xff, 0x07, 0x96, 0xb0, 0xa8, 0x7f, 0x34, 0x49, 0xdf, + 0x56, 0xa9, 0xf7, 0xb0, 0x5f, 0xed, 0x33, 0xed, 0x8c, 0x47, 0xb7, 0x30, + 0x03, 0x5d, 0xf4, 0x03, 0x8c, +} + +var certSet3Cert18 = []byte{ + 0x30, 0x82, 0x04, 0x79, 0x30, 0x82, 0x03, 0x61, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x04, 0x07, 0x27, 0xa2, 0x76, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x5a, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, + 0x45, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x09, + 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x31, 0x13, 0x30, + 0x11, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65, + 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x19, 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, + 0x72, 0x65, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, + 0x30, 0x32, 0x32, 0x37, 0x31, 0x38, 0x30, 0x39, 0x32, 0x37, 0x5a, 0x17, + 0x0d, 0x32, 0x30, 0x30, 0x36, 0x30, 0x39, 0x31, 0x37, 0x30, 0x37, 0x32, + 0x39, 0x5a, 0x30, 0x5a, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, + 0x06, 0x13, 0x02, 0x4a, 0x50, 0x31, 0x23, 0x30, 0x21, 0x06, 0x03, 0x55, + 0x04, 0x0a, 0x13, 0x1a, 0x43, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72, 0x75, + 0x73, 0x74, 0x20, 0x4a, 0x61, 0x70, 0x61, 0x6e, 0x20, 0x43, 0x6f, 0x2e, + 0x2c, 0x20, 0x4c, 0x74, 0x64, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x1d, 0x43, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x20, 0x4a, 0x61, 0x70, 0x61, 0x6e, 0x20, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x20, 0x43, 0x41, 0x20, 0x47, 0x33, 0x30, 0x82, + 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, + 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0x94, 0x56, 0xa3, 0x45, 0x44, + 0x54, 0xaa, 0x60, 0x64, 0xbf, 0xb8, 0x57, 0x9f, 0x4e, 0xdb, 0xd4, 0x79, + 0x68, 0x5f, 0x13, 0x05, 0xf4, 0x3f, 0xcd, 0x25, 0xdd, 0x3c, 0x5e, 0x58, + 0x77, 0x1c, 0x9d, 0xe6, 0x9f, 0xe3, 0x32, 0x49, 0xef, 0x02, 0x3a, 0x34, + 0x53, 0x8d, 0x52, 0xe5, 0xe3, 0x39, 0x66, 0x1f, 0xe7, 0x33, 0x61, 0xb6, + 0x27, 0xc6, 0x24, 0x55, 0x50, 0x27, 0x02, 0x65, 0xf0, 0xb0, 0x8c, 0x41, + 0x8d, 0x30, 0x5e, 0x47, 0x5b, 0x82, 0x6f, 0xc7, 0x9c, 0xa3, 0x28, 0x43, + 0x6d, 0x58, 0x7b, 0xc8, 0x15, 0x98, 0x4e, 0x25, 0x6f, 0xcb, 0x76, 0x27, + 0x5b, 0x0b, 0x2c, 0x2c, 0xb5, 0x98, 0x23, 0xe7, 0x8b, 0x7c, 0xfd, 0x77, + 0x1a, 0xc4, 0x52, 0xba, 0x5d, 0x19, 0xee, 0x78, 0x21, 0x4d, 0x21, 0x9a, + 0xd9, 0x12, 0x7c, 0x33, 0x15, 0x6b, 0x1a, 0xc9, 0x81, 0xea, 0xda, 0xda, + 0x57, 0xb7, 0xd5, 0x2f, 0xce, 0x1f, 0x4b, 0xfc, 0xb4, 0x33, 0xe0, 0xa0, + 0xc9, 0x94, 0x27, 0xbb, 0x27, 0x40, 0xb6, 0x90, 0xdb, 0xac, 0x9e, 0x75, + 0xa6, 0x11, 0x2b, 0x49, 0x19, 0x2d, 0xc3, 0xc2, 0x43, 0x07, 0x09, 0xbb, + 0x3d, 0x6e, 0x88, 0xa3, 0xe3, 0x8a, 0xc5, 0xd2, 0x86, 0xf6, 0x65, 0x5b, + 0x34, 0xc3, 0x9f, 0x4c, 0x02, 0xe5, 0x09, 0xba, 0x2c, 0xc6, 0x76, 0x66, + 0xeb, 0xd1, 0x76, 0x25, 0xf4, 0x30, 0x13, 0xfb, 0x58, 0x60, 0xa8, 0x58, + 0xe3, 0x51, 0x6f, 0x4b, 0x08, 0x04, 0x61, 0x8d, 0xac, 0xa9, 0x30, 0x2f, + 0x52, 0x41, 0xa3, 0x22, 0xc1, 0x33, 0x59, 0xab, 0x7b, 0x59, 0xf9, 0x93, + 0x67, 0x4b, 0xc9, 0x89, 0x75, 0x52, 0xef, 0x29, 0x49, 0x34, 0x93, 0x1c, + 0x9c, 0x93, 0x73, 0x9c, 0x19, 0xce, 0x5c, 0x18, 0xcd, 0x4c, 0x09, 0x27, + 0xc1, 0x3f, 0xf5, 0x49, 0xec, 0xf4, 0xe2, 0xdf, 0x4b, 0xaf, 0x8f, 0x02, + 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x45, 0x30, 0x82, 0x01, 0x41, + 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, + 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x53, 0x06, 0x03, + 0x55, 0x1d, 0x20, 0x04, 0x4c, 0x30, 0x4a, 0x30, 0x48, 0x06, 0x09, 0x2b, + 0x06, 0x01, 0x04, 0x01, 0xb1, 0x3e, 0x01, 0x00, 0x30, 0x3b, 0x30, 0x39, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x2d, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x79, 0x62, 0x65, 0x72, + 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, + 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x63, 0x66, 0x6d, 0x30, 0x42, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x36, 0x30, + 0x34, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, + 0x01, 0x86, 0x26, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, + 0x73, 0x70, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, + 0x65, 0x72, 0x6f, 0x6f, 0x74, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, + 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x1f, 0x06, + 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xe5, 0x9d, + 0x59, 0x30, 0x82, 0x47, 0x58, 0xcc, 0xac, 0xfa, 0x08, 0x54, 0x36, 0x86, + 0x7b, 0x3a, 0xb5, 0x04, 0x4d, 0xf0, 0x30, 0x42, 0x06, 0x03, 0x55, 0x1d, + 0x1f, 0x04, 0x3b, 0x30, 0x39, 0x30, 0x37, 0xa0, 0x35, 0xa0, 0x33, 0x86, + 0x31, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x64, 0x70, 0x31, + 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x74, 0x72, 0x75, 0x73, + 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x52, 0x4c, 0x2f, 0x4f, 0x6d, + 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x32, 0x30, 0x32, 0x35, 0x2e, 0x63, + 0x72, 0x6c, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, + 0x14, 0x73, 0xa8, 0x08, 0x53, 0x29, 0xb8, 0x15, 0xfb, 0x99, 0x80, 0xe5, + 0xc5, 0x37, 0xd8, 0xf8, 0x39, 0x7b, 0xa4, 0x13, 0x06, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, + 0x03, 0x82, 0x01, 0x01, 0x00, 0x68, 0xdf, 0xfe, 0x72, 0x54, 0x4e, 0x1b, + 0xfb, 0x5c, 0x6e, 0x5a, 0x45, 0x46, 0xcf, 0x42, 0xbe, 0xb2, 0x02, 0x9c, + 0x9d, 0x90, 0x6a, 0x09, 0x2e, 0xb7, 0x36, 0x64, 0x24, 0xb6, 0xb1, 0xe2, + 0x48, 0x67, 0xce, 0x17, 0x46, 0x9b, 0x23, 0x75, 0x78, 0x11, 0xf6, 0xc6, + 0x09, 0x38, 0x42, 0x62, 0x96, 0x97, 0x30, 0x7b, 0x51, 0x77, 0xdf, 0x33, + 0xb5, 0x00, 0x51, 0x29, 0xd5, 0x24, 0xfe, 0xb7, 0x98, 0xa2, 0xac, 0x6c, + 0xa1, 0x13, 0x7f, 0xca, 0xf3, 0xb7, 0xa6, 0x52, 0xc2, 0x16, 0x0d, 0xec, + 0x3a, 0xbf, 0xa3, 0x37, 0x77, 0x4f, 0xae, 0x7b, 0x55, 0x1d, 0x46, 0xe9, + 0x10, 0xda, 0xc3, 0xb4, 0x05, 0x5c, 0x5b, 0xf6, 0x48, 0x21, 0x00, 0x89, + 0xf4, 0xbb, 0x38, 0x8e, 0x1e, 0x33, 0xf3, 0x49, 0x97, 0x81, 0x31, 0x6c, + 0x16, 0x74, 0x08, 0x91, 0x17, 0xc0, 0xd3, 0x25, 0xb3, 0xbc, 0xc1, 0x15, + 0xb5, 0xa4, 0xcd, 0x84, 0x4d, 0xb9, 0xc8, 0xeb, 0xc5, 0x59, 0x42, 0x10, + 0x14, 0x25, 0x79, 0xf8, 0xdb, 0xb6, 0xd0, 0xe6, 0xd3, 0xa0, 0x14, 0x7c, + 0x17, 0x1c, 0x20, 0x1e, 0xed, 0x99, 0x90, 0x65, 0xc0, 0x41, 0x71, 0xc3, + 0xab, 0x3f, 0x29, 0x41, 0x67, 0xf9, 0xe2, 0xd1, 0x98, 0xe3, 0xf8, 0xdf, + 0x3a, 0xb8, 0xca, 0xa3, 0x6f, 0x68, 0x8b, 0x6c, 0x9f, 0x6e, 0x88, 0x7c, + 0x9d, 0x41, 0x5c, 0xba, 0xcb, 0x19, 0x05, 0x83, 0x9c, 0x99, 0xf4, 0x1a, + 0xd2, 0x24, 0x69, 0x57, 0x0a, 0x0f, 0x7a, 0xc3, 0x1b, 0x2c, 0x4b, 0x06, + 0xd3, 0x2a, 0x97, 0x7e, 0x07, 0xb0, 0xf9, 0x20, 0x5a, 0xb5, 0x92, 0x4b, + 0x5b, 0xa8, 0xeb, 0xeb, 0x36, 0x33, 0x47, 0x36, 0xda, 0x72, 0x9c, 0xbf, + 0x68, 0x45, 0x81, 0x31, 0xbe, 0xd2, 0xfd, 0x3b, 0xe9, 0x72, 0xd5, 0x70, + 0xdd, 0xa6, 0xde, 0x5f, 0x0d, 0xb6, 0x5e, 0x00, 0x49, +} + +var certSet3Cert19 = []byte{ + 0x30, 0x82, 0x04, 0x7d, 0x30, 0x82, 0x03, 0x65, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x1b, 0xe7, 0x15, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x63, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x18, 0x54, + 0x68, 0x65, 0x20, 0x47, 0x6f, 0x20, 0x44, 0x61, 0x64, 0x64, 0x79, 0x20, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, + 0x31, 0x30, 0x2f, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x28, 0x47, 0x6f, + 0x20, 0x44, 0x61, 0x64, 0x64, 0x79, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0x20, 0x32, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x30, 0x31, 0x30, 0x31, + 0x30, 0x37, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x33, 0x31, 0x30, + 0x35, 0x33, 0x30, 0x30, 0x37, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x81, + 0x83, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, + 0x07, 0x41, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, + 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, + 0x73, 0x64, 0x61, 0x6c, 0x65, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, + 0x04, 0x0a, 0x13, 0x11, 0x47, 0x6f, 0x44, 0x61, 0x64, 0x64, 0x79, 0x2e, + 0x63, 0x6f, 0x6d, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x31, 0x30, + 0x2f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x28, 0x47, 0x6f, 0x20, 0x44, + 0x61, 0x64, 0x64, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, + 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, + 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xbf, 0x71, 0x62, + 0x08, 0xf1, 0xfa, 0x59, 0x34, 0xf7, 0x1b, 0xc9, 0x18, 0xa3, 0xf7, 0x80, + 0x49, 0x58, 0xe9, 0x22, 0x83, 0x13, 0xa6, 0xc5, 0x20, 0x43, 0x01, 0x3b, + 0x84, 0xf1, 0xe6, 0x85, 0x49, 0x9f, 0x27, 0xea, 0xf6, 0x84, 0x1b, 0x4e, + 0xa0, 0xb4, 0xdb, 0x70, 0x98, 0xc7, 0x32, 0x01, 0xb1, 0x05, 0x3e, 0x07, + 0x4e, 0xee, 0xf4, 0xfa, 0x4f, 0x2f, 0x59, 0x30, 0x22, 0xe7, 0xab, 0x19, + 0x56, 0x6b, 0xe2, 0x80, 0x07, 0xfc, 0xf3, 0x16, 0x75, 0x80, 0x39, 0x51, + 0x7b, 0xe5, 0xf9, 0x35, 0xb6, 0x74, 0x4e, 0xa9, 0x8d, 0x82, 0x13, 0xe4, + 0xb6, 0x3f, 0xa9, 0x03, 0x83, 0xfa, 0xa2, 0xbe, 0x8a, 0x15, 0x6a, 0x7f, + 0xde, 0x0b, 0xc3, 0xb6, 0x19, 0x14, 0x05, 0xca, 0xea, 0xc3, 0xa8, 0x04, + 0x94, 0x3b, 0x46, 0x7c, 0x32, 0x0d, 0xf3, 0x00, 0x66, 0x22, 0xc8, 0x8d, + 0x69, 0x6d, 0x36, 0x8c, 0x11, 0x18, 0xb7, 0xd3, 0xb2, 0x1c, 0x60, 0xb4, + 0x38, 0xfa, 0x02, 0x8c, 0xce, 0xd3, 0xdd, 0x46, 0x07, 0xde, 0x0a, 0x3e, + 0xeb, 0x5d, 0x7c, 0xc8, 0x7c, 0xfb, 0xb0, 0x2b, 0x53, 0xa4, 0x92, 0x62, + 0x69, 0x51, 0x25, 0x05, 0x61, 0x1a, 0x44, 0x81, 0x8c, 0x2c, 0xa9, 0x43, + 0x96, 0x23, 0xdf, 0xac, 0x3a, 0x81, 0x9a, 0x0e, 0x29, 0xc5, 0x1c, 0xa9, + 0xe9, 0x5d, 0x1e, 0xb6, 0x9e, 0x9e, 0x30, 0x0a, 0x39, 0xce, 0xf1, 0x88, + 0x80, 0xfb, 0x4b, 0x5d, 0xcc, 0x32, 0xec, 0x85, 0x62, 0x43, 0x25, 0x34, + 0x02, 0x56, 0x27, 0x01, 0x91, 0xb4, 0x3b, 0x70, 0x2a, 0x3f, 0x6e, 0xb1, + 0xe8, 0x9c, 0x88, 0x01, 0x7d, 0x9f, 0xd4, 0xf9, 0xdb, 0x53, 0x6d, 0x60, + 0x9d, 0xbf, 0x2c, 0xe7, 0x58, 0xab, 0xb8, 0x5f, 0x46, 0xfc, 0xce, 0xc4, + 0x1b, 0x03, 0x3c, 0x09, 0xeb, 0x49, 0x31, 0x5c, 0x69, 0x46, 0xb3, 0xe0, + 0x47, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x17, 0x30, 0x82, + 0x01, 0x13, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, + 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0e, 0x06, 0x03, 0x55, + 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, + 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x3a, 0x9a, + 0x85, 0x07, 0x10, 0x67, 0x28, 0xb6, 0xef, 0xf6, 0xbd, 0x05, 0x41, 0x6e, + 0x20, 0xc1, 0x94, 0xda, 0x0f, 0xde, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, + 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xd2, 0xc4, 0xb0, 0xd2, 0x91, + 0xd4, 0x4c, 0x11, 0x71, 0xb3, 0x61, 0xcb, 0x3d, 0xa1, 0xfe, 0xdd, 0xa8, + 0x6a, 0xd4, 0xe3, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x6f, 0x64, + 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x30, 0x32, 0x06, + 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2b, 0x30, 0x29, 0x30, 0x27, 0xa0, 0x25, + 0xa0, 0x23, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, + 0x72, 0x6c, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x67, 0x64, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x72, + 0x6c, 0x30, 0x46, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3f, 0x30, 0x3d, + 0x30, 0x3b, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x33, 0x30, 0x31, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, + 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x63, 0x65, 0x72, 0x74, + 0x73, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, + 0x2f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x59, 0x0b, 0x53, + 0xbd, 0x92, 0x86, 0x11, 0xa7, 0x24, 0x7b, 0xed, 0x5b, 0x31, 0xcf, 0x1d, + 0x1f, 0x6c, 0x70, 0xc5, 0xb8, 0x6e, 0xbe, 0x4e, 0xbb, 0xf6, 0xbe, 0x97, + 0x50, 0xe1, 0x30, 0x7f, 0xba, 0x28, 0x5c, 0x62, 0x94, 0xc2, 0xe3, 0x7e, + 0x33, 0xf7, 0xfb, 0x42, 0x76, 0x85, 0xdb, 0x95, 0x1c, 0x8c, 0x22, 0x58, + 0x75, 0x09, 0x0c, 0x88, 0x65, 0x67, 0x39, 0x0a, 0x16, 0x09, 0xc5, 0xa0, + 0x38, 0x97, 0xa4, 0xc5, 0x23, 0x93, 0x3f, 0xb4, 0x18, 0xa6, 0x01, 0x06, + 0x44, 0x91, 0xe3, 0xa7, 0x69, 0x27, 0xb4, 0x5a, 0x25, 0x7f, 0x3a, 0xb7, + 0x32, 0xcd, 0xdd, 0x84, 0xff, 0x2a, 0x38, 0x29, 0x33, 0xa4, 0xdd, 0x67, + 0xb2, 0x85, 0xfe, 0xa1, 0x88, 0x20, 0x1c, 0x50, 0x89, 0xc8, 0xdc, 0x2a, + 0xf6, 0x42, 0x03, 0x37, 0x4c, 0xe6, 0x88, 0xdf, 0xd5, 0xaf, 0x24, 0xf2, + 0xb1, 0xc3, 0xdf, 0xcc, 0xb5, 0xec, 0xe0, 0x99, 0x5e, 0xb7, 0x49, 0x54, + 0x20, 0x3c, 0x94, 0x18, 0x0c, 0xc7, 0x1c, 0x52, 0x18, 0x49, 0xa4, 0x6d, + 0xe1, 0xb3, 0x58, 0x0b, 0xc9, 0xd8, 0xec, 0xd9, 0xae, 0x1c, 0x32, 0x8e, + 0x28, 0x70, 0x0d, 0xe2, 0xfe, 0xa6, 0x17, 0x9e, 0x84, 0x0f, 0xbd, 0x57, + 0x70, 0xb3, 0x5a, 0xe9, 0x1f, 0xa0, 0x86, 0x53, 0xbb, 0xef, 0x7c, 0xff, + 0x69, 0x0b, 0xe0, 0x48, 0xc3, 0xb7, 0x93, 0x0b, 0xc8, 0x0a, 0x54, 0xc4, + 0xac, 0x5d, 0x14, 0x67, 0x37, 0x6c, 0xca, 0xa5, 0x2f, 0x31, 0x08, 0x37, + 0xaa, 0x6e, 0x6f, 0x8c, 0xbc, 0x9b, 0xe2, 0x57, 0x5d, 0x24, 0x81, 0xaf, + 0x97, 0x97, 0x9c, 0x84, 0xad, 0x6c, 0xac, 0x37, 0x4c, 0x66, 0xf3, 0x61, + 0x91, 0x11, 0x20, 0xe4, 0xbe, 0x30, 0x9f, 0x7a, 0xa4, 0x29, 0x09, 0xb0, + 0xe1, 0x34, 0x5f, 0x64, 0x77, 0x18, 0x40, 0x51, 0xdf, 0x8c, 0x30, 0xa6, + 0xaf, +} + +var certSet3Cert20 = []byte{ + 0x30, 0x82, 0x04, 0x8b, 0x30, 0x82, 0x03, 0x73, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x0e, 0x46, 0xf0, 0x8c, 0xdb, 0xcf, 0x2c, 0x54, 0x66, 0xef, + 0x33, 0x01, 0xdd, 0x5f, 0x34, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, + 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x57, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, + 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, + 0x73, 0x61, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x07, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x31, 0x1b, 0x30, 0x19, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, + 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x35, 0x30, 0x38, 0x31, 0x39, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x35, 0x30, 0x38, + 0x31, 0x39, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x57, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, + 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, + 0x2d, 0x73, 0x61, 0x31, 0x2d, 0x30, 0x2b, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, + 0x20, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, + 0x20, 0x2d, 0x20, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x2d, 0x20, + 0x47, 0x33, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xa3, + 0xc0, 0x75, 0xe1, 0x32, 0x98, 0xe5, 0xd9, 0xae, 0x84, 0x7c, 0x8d, 0xe8, + 0x23, 0x5f, 0x46, 0x95, 0x5b, 0x4c, 0xa2, 0x25, 0x70, 0xd7, 0x90, 0x04, + 0x85, 0x80, 0xc9, 0xb5, 0xf4, 0x8a, 0x65, 0x4d, 0x92, 0xcb, 0xa5, 0xc4, + 0x42, 0xa0, 0xb6, 0x79, 0x25, 0x31, 0xed, 0xf1, 0x85, 0x20, 0xcd, 0x13, + 0x51, 0x3d, 0x67, 0xac, 0x97, 0x4d, 0x68, 0x9b, 0x33, 0x86, 0x5c, 0xb3, + 0x7b, 0x2d, 0xaa, 0xdf, 0x77, 0xa0, 0x61, 0xd1, 0xf5, 0x3c, 0xfb, 0x9a, + 0xfc, 0xd3, 0xd5, 0x94, 0xca, 0xc9, 0x1e, 0x80, 0x1b, 0x90, 0x90, 0xc8, + 0xac, 0x8d, 0xf6, 0x60, 0x17, 0x9c, 0x31, 0xb8, 0xc5, 0x61, 0xa2, 0xe2, + 0x6e, 0x57, 0x25, 0x08, 0x6f, 0x24, 0x99, 0x99, 0xcf, 0x94, 0xbf, 0xc7, + 0x8b, 0x6b, 0xb0, 0x1f, 0xca, 0x14, 0xfa, 0x18, 0x9b, 0x6c, 0x10, 0x7c, + 0x99, 0x2b, 0xda, 0x4a, 0x63, 0xe5, 0xb2, 0x4e, 0xc2, 0xfd, 0x3e, 0x10, + 0x0b, 0x48, 0xf4, 0x77, 0x0b, 0x2f, 0xf0, 0x96, 0x4b, 0x3a, 0xee, 0xbd, + 0x35, 0xde, 0x85, 0x8d, 0xda, 0x13, 0x0e, 0xce, 0x01, 0xc4, 0x71, 0xd3, + 0xd3, 0x77, 0xc5, 0x08, 0xa6, 0x60, 0x39, 0x25, 0xa7, 0x27, 0x69, 0x5c, + 0x83, 0xd1, 0x6f, 0x76, 0x78, 0xee, 0xc5, 0x44, 0x5b, 0x45, 0xbd, 0x29, + 0x3b, 0xe2, 0xc6, 0x09, 0x0f, 0xa2, 0xbe, 0x2b, 0xdc, 0xe3, 0x5c, 0xda, + 0x5a, 0x6f, 0x8e, 0xe7, 0xc9, 0x07, 0x6b, 0x7e, 0xa1, 0xc0, 0x53, 0x95, + 0x82, 0x89, 0xe0, 0x78, 0x5c, 0x72, 0xa8, 0x6c, 0xbe, 0x67, 0x6b, 0xab, + 0xe7, 0x33, 0xd9, 0x87, 0xf2, 0xf8, 0x5c, 0x27, 0xf4, 0xf6, 0x2a, 0x3b, + 0x87, 0xef, 0xda, 0xc2, 0x47, 0xda, 0xbf, 0xac, 0xeb, 0x27, 0x64, 0x7b, + 0x4c, 0x53, 0xeb, 0x34, 0xe1, 0x2f, 0x9b, 0x20, 0x4d, 0x54, 0x12, 0x6b, + 0x7d, 0x28, 0xbd, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x53, + 0x30, 0x82, 0x01, 0x4f, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, + 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x1d, 0x06, 0x03, + 0x55, 0x1d, 0x25, 0x04, 0x16, 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x03, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x03, 0x02, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, + 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, + 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xa9, 0x2b, + 0x87, 0xe1, 0xce, 0x24, 0x47, 0x3b, 0x1b, 0xbf, 0xcf, 0x85, 0x37, 0x02, + 0x55, 0x9d, 0x0d, 0x94, 0x58, 0xe6, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, + 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x60, 0x7b, 0x66, 0x1a, 0x45, + 0x0d, 0x97, 0xca, 0x89, 0x50, 0x2f, 0x7d, 0x04, 0xcd, 0x34, 0xa8, 0xff, + 0xfc, 0xfd, 0x4b, 0x30, 0x3d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x01, 0x01, 0x04, 0x31, 0x30, 0x2f, 0x30, 0x2d, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x21, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x6c, 0x6f, + 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x72, 0x6f, 0x6f, 0x74, 0x72, 0x31, 0x30, 0x33, 0x06, 0x03, 0x55, 0x1d, + 0x1f, 0x04, 0x2c, 0x30, 0x2a, 0x30, 0x28, 0xa0, 0x26, 0xa0, 0x24, 0x86, + 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, + 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x72, 0x6c, 0x30, + 0x56, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x4f, 0x30, 0x4d, 0x30, 0x0b, + 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xa0, 0x32, 0x01, 0x14, 0x30, + 0x3e, 0x06, 0x06, 0x67, 0x81, 0x0c, 0x01, 0x02, 0x02, 0x30, 0x34, 0x30, + 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, + 0x26, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, + 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x79, 0x2f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xa2, + 0x1d, 0x69, 0x8a, 0x0a, 0x8e, 0xc4, 0x14, 0x83, 0x2a, 0x2a, 0x12, 0x4d, + 0x39, 0x27, 0x90, 0x4e, 0xf0, 0x8d, 0xac, 0xd2, 0x96, 0x62, 0x47, 0x36, + 0x5e, 0x92, 0xd1, 0xfa, 0xc5, 0x93, 0xb5, 0x37, 0x07, 0x65, 0x29, 0xd2, + 0xf4, 0x53, 0x50, 0x6b, 0xc9, 0xf4, 0xfe, 0x34, 0xf5, 0xdd, 0xb8, 0x1d, + 0xfa, 0xfc, 0xdc, 0x14, 0xac, 0x56, 0x94, 0x27, 0x9c, 0x42, 0xaa, 0x04, + 0x4d, 0xb7, 0xed, 0x58, 0xd9, 0x99, 0xd2, 0x49, 0xe6, 0x20, 0x2f, 0xd3, + 0xa7, 0x77, 0xb8, 0x2a, 0x89, 0x1a, 0xef, 0xa7, 0xcf, 0x86, 0x2d, 0xd6, + 0x53, 0xe9, 0x0b, 0x93, 0x9c, 0x4e, 0xab, 0xd9, 0x45, 0xee, 0xa4, 0x84, + 0x85, 0xff, 0x34, 0xe4, 0x0e, 0xc0, 0xbb, 0xa5, 0xce, 0x5f, 0x95, 0x89, + 0x85, 0x70, 0xaa, 0xc1, 0x5d, 0xec, 0xcf, 0x2b, 0xd3, 0xd9, 0x83, 0xdf, + 0x03, 0xca, 0x81, 0xa7, 0x02, 0x32, 0xb7, 0x77, 0x61, 0x10, 0x25, 0x4e, + 0xd9, 0x74, 0xf3, 0xd9, 0x79, 0x82, 0xb5, 0x26, 0x70, 0xb4, 0x52, 0xbc, + 0x8f, 0x33, 0xd7, 0x8a, 0xae, 0x19, 0xd0, 0xfc, 0x92, 0xad, 0x2f, 0xba, + 0x3c, 0xa0, 0x48, 0x58, 0x47, 0x5e, 0xfd, 0x20, 0x56, 0x95, 0x20, 0xc1, + 0x72, 0x1d, 0xab, 0x66, 0x99, 0xa4, 0xd5, 0x78, 0x37, 0x48, 0x1b, 0x9f, + 0xb2, 0x4c, 0x37, 0x67, 0x7a, 0xfd, 0x42, 0xd2, 0xd3, 0x56, 0x9e, 0xd3, + 0x1d, 0x8e, 0xc4, 0x0c, 0x68, 0x96, 0xb6, 0x47, 0x51, 0x10, 0xf7, 0x7b, + 0xeb, 0x15, 0x09, 0x64, 0xf5, 0xf9, 0xf0, 0x63, 0x16, 0x2d, 0x3d, 0xdf, + 0x23, 0x42, 0x3a, 0x93, 0x63, 0xcc, 0xab, 0xaf, 0x4f, 0x57, 0x06, 0xc7, + 0xfe, 0x14, 0x55, 0x62, 0xce, 0x27, 0x11, 0x19, 0xe1, 0xf4, 0x42, 0xed, + 0x22, 0x30, 0x6b, 0x35, 0x1a, 0x4a, 0x05, 0x80, 0xa4, 0x65, 0xdf, 0xcc, + 0xcb, 0x6f, 0xd0, +} + +var certSet3Cert21 = []byte{ + 0x30, 0x82, 0x04, 0x90, 0x30, 0x82, 0x03, 0xf9, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x1b, 0x09, 0x3b, 0x78, 0x60, 0x96, 0xda, 0x37, 0xbb, + 0xa4, 0x51, 0x94, 0x46, 0xc8, 0x96, 0x78, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x5f, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, + 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x31, 0x37, 0x30, 0x35, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, + 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x31, 0x31, 0x30, 0x38, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x31, 0x31, 0x31, 0x30, 0x37, + 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x81, 0xca, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65, + 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, 0x56, + 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x3a, 0x30, + 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28, 0x63, 0x29, 0x20, + 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, + 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, + 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, + 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x45, 0x30, + 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56, 0x65, 0x72, 0x69, + 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, + 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d, + 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xaf, 0x24, 0x08, 0x08, 0x29, 0x7a, 0x35, + 0x9e, 0x60, 0x0c, 0xaa, 0xe7, 0x4b, 0x3b, 0x4e, 0xdc, 0x7c, 0xbc, 0x3c, + 0x45, 0x1c, 0xbb, 0x2b, 0xe0, 0xfe, 0x29, 0x02, 0xf9, 0x57, 0x08, 0xa3, + 0x64, 0x85, 0x15, 0x27, 0xf5, 0xf1, 0xad, 0xc8, 0x31, 0x89, 0x5d, 0x22, + 0xe8, 0x2a, 0xaa, 0xa6, 0x42, 0xb3, 0x8f, 0xf8, 0xb9, 0x55, 0xb7, 0xb1, + 0xb7, 0x4b, 0xb3, 0xfe, 0x8f, 0x7e, 0x07, 0x57, 0xec, 0xef, 0x43, 0xdb, + 0x66, 0x62, 0x15, 0x61, 0xcf, 0x60, 0x0d, 0xa4, 0xd8, 0xde, 0xf8, 0xe0, + 0xc3, 0x62, 0x08, 0x3d, 0x54, 0x13, 0xeb, 0x49, 0xca, 0x59, 0x54, 0x85, + 0x26, 0xe5, 0x2b, 0x8f, 0x1b, 0x9f, 0xeb, 0xf5, 0xa1, 0x91, 0xc2, 0x33, + 0x49, 0xd8, 0x43, 0x63, 0x6a, 0x52, 0x4b, 0xd2, 0x8f, 0xe8, 0x70, 0x51, + 0x4d, 0xd1, 0x89, 0x69, 0x7b, 0xc7, 0x70, 0xf6, 0xb3, 0xdc, 0x12, 0x74, + 0xdb, 0x7b, 0x5d, 0x4b, 0x56, 0xd3, 0x96, 0xbf, 0x15, 0x77, 0xa1, 0xb0, + 0xf4, 0xa2, 0x25, 0xf2, 0xaf, 0x1c, 0x92, 0x67, 0x18, 0xe5, 0xf4, 0x06, + 0x04, 0xef, 0x90, 0xb9, 0xe4, 0x00, 0xe4, 0xdd, 0x3a, 0xb5, 0x19, 0xff, + 0x02, 0xba, 0xf4, 0x3c, 0xee, 0xe0, 0x8b, 0xeb, 0x37, 0x8b, 0xec, 0xf4, + 0xd7, 0xac, 0xf2, 0xf6, 0xf0, 0x3d, 0xaf, 0xdd, 0x75, 0x91, 0x33, 0x19, + 0x1d, 0x1c, 0x40, 0xcb, 0x74, 0x24, 0x19, 0x21, 0x93, 0xd9, 0x14, 0xfe, + 0xac, 0x2a, 0x52, 0xc7, 0x8f, 0xd5, 0x04, 0x49, 0xe4, 0x8d, 0x63, 0x47, + 0x88, 0x3c, 0x69, 0x83, 0xcb, 0xfe, 0x47, 0xbd, 0x2b, 0x7e, 0x4f, 0xc5, + 0x95, 0xae, 0x0e, 0x9d, 0xd4, 0xd1, 0x43, 0xc0, 0x67, 0x73, 0xe3, 0x14, + 0x08, 0x7e, 0xe5, 0x3f, 0x9f, 0x73, 0xb8, 0x33, 0x0a, 0xcf, 0x5d, 0x3f, + 0x34, 0x87, 0x96, 0x8a, 0xee, 0x53, 0xe8, 0x25, 0x15, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x82, 0x01, 0x5b, 0x30, 0x82, 0x01, 0x57, 0x30, 0x0f, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, + 0x01, 0x01, 0xff, 0x30, 0x31, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2a, + 0x30, 0x28, 0x30, 0x26, 0xa0, 0x24, 0xa0, 0x22, 0x86, 0x20, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x76, 0x65, 0x72, + 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63, + 0x61, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x3d, + 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06, + 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x2a, 0x30, 0x28, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, 0x74, + 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, 0x72, + 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, + 0x73, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0x7f, 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09, 0xf3, + 0x43, 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, 0x33, 0x30, 0x6d, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x0c, 0x04, 0x61, 0x30, 0x5f, + 0xa1, 0x5d, 0xa0, 0x5b, 0x30, 0x59, 0x30, 0x57, 0x30, 0x55, 0x16, 0x09, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0x30, 0x21, 0x30, + 0x1f, 0x30, 0x07, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x04, 0x14, + 0x8f, 0xe5, 0xd3, 0x1a, 0x86, 0xac, 0x8d, 0x8e, 0x6b, 0xc3, 0xcf, 0x80, + 0x6a, 0xd4, 0x48, 0x18, 0x2c, 0x7b, 0x19, 0x2e, 0x30, 0x25, 0x16, 0x23, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, + 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x76, 0x73, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x67, 0x69, 0x66, 0x30, + 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, + 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, + 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, + 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, + 0xa3, 0xcd, 0x7d, 0x1e, 0xf7, 0xc7, 0x75, 0x8d, 0x48, 0xe7, 0x56, 0x34, + 0x4c, 0x00, 0x90, 0x75, 0xa9, 0x51, 0xa5, 0x56, 0xc1, 0x6d, 0xbc, 0xfe, + 0xf5, 0x53, 0x22, 0xe9, 0x98, 0xa2, 0xac, 0x9a, 0x7e, 0x70, 0x1e, 0xb3, + 0x8e, 0x3b, 0x45, 0xe3, 0x86, 0x95, 0x31, 0xda, 0x6d, 0x4c, 0xfb, 0x34, + 0x50, 0x80, 0x96, 0xcd, 0x24, 0xf2, 0x40, 0xdf, 0x04, 0x3f, 0xe2, 0x65, + 0xce, 0x34, 0x22, 0x61, 0x15, 0xea, 0x66, 0x70, 0x64, 0xd2, 0xf1, 0x6e, + 0xf3, 0xca, 0x18, 0x59, 0x6a, 0x41, 0x46, 0x7e, 0x82, 0xde, 0x19, 0xb0, + 0x70, 0x31, 0x56, 0x69, 0x0d, 0x0c, 0xe6, 0x1d, 0x9d, 0x71, 0x58, 0xdc, + 0xcc, 0xde, 0x62, 0xf5, 0xe1, 0x7a, 0x10, 0x02, 0xd8, 0x7a, 0xdc, 0x3b, + 0xfa, 0x57, 0xbd, 0xc9, 0xe9, 0x8f, 0x46, 0x21, 0x39, 0x9f, 0x51, 0x65, + 0x4c, 0x8e, 0x3a, 0xbe, 0x28, 0x41, 0x70, 0x1d, +} + +var certSet3Cert22 = []byte{ + 0x30, 0x82, 0x04, 0x92, 0x30, 0x82, 0x03, 0x7a, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x0a, 0x01, 0x41, 0x42, 0x00, 0x00, 0x01, 0x53, 0x85, + 0x73, 0x6a, 0x0b, 0x85, 0xec, 0xa7, 0x08, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x3f, + 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x1b, 0x44, + 0x69, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x43, + 0x6f, 0x2e, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x0e, 0x44, 0x53, 0x54, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, + 0x20, 0x58, 0x33, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x36, 0x30, 0x33, 0x31, + 0x37, 0x31, 0x36, 0x34, 0x30, 0x34, 0x36, 0x5a, 0x17, 0x0d, 0x32, 0x31, + 0x30, 0x33, 0x31, 0x37, 0x31, 0x36, 0x34, 0x30, 0x34, 0x36, 0x5a, 0x30, + 0x4a, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0d, 0x4c, 0x65, 0x74, 0x27, 0x73, 0x20, 0x45, 0x6e, 0x63, 0x72, 0x79, + 0x70, 0x74, 0x31, 0x23, 0x30, 0x21, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x1a, 0x4c, 0x65, 0x74, 0x27, 0x73, 0x20, 0x45, 0x6e, 0x63, 0x72, 0x79, + 0x70, 0x74, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x20, 0x58, 0x33, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, + 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, + 0x9c, 0xd3, 0x0c, 0xf0, 0x5a, 0xe5, 0x2e, 0x47, 0xb7, 0x72, 0x5d, 0x37, + 0x83, 0xb3, 0x68, 0x63, 0x30, 0xea, 0xd7, 0x35, 0x26, 0x19, 0x25, 0xe1, + 0xbd, 0xbe, 0x35, 0xf1, 0x70, 0x92, 0x2f, 0xb7, 0xb8, 0x4b, 0x41, 0x05, + 0xab, 0xa9, 0x9e, 0x35, 0x08, 0x58, 0xec, 0xb1, 0x2a, 0xc4, 0x68, 0x87, + 0x0b, 0xa3, 0xe3, 0x75, 0xe4, 0xe6, 0xf3, 0xa7, 0x62, 0x71, 0xba, 0x79, + 0x81, 0x60, 0x1f, 0xd7, 0x91, 0x9a, 0x9f, 0xf3, 0xd0, 0x78, 0x67, 0x71, + 0xc8, 0x69, 0x0e, 0x95, 0x91, 0xcf, 0xfe, 0xe6, 0x99, 0xe9, 0x60, 0x3c, + 0x48, 0xcc, 0x7e, 0xca, 0x4d, 0x77, 0x12, 0x24, 0x9d, 0x47, 0x1b, 0x5a, + 0xeb, 0xb9, 0xec, 0x1e, 0x37, 0x00, 0x1c, 0x9c, 0xac, 0x7b, 0xa7, 0x05, + 0xea, 0xce, 0x4a, 0xeb, 0xbd, 0x41, 0xe5, 0x36, 0x98, 0xb9, 0xcb, 0xfd, + 0x6d, 0x3c, 0x96, 0x68, 0xdf, 0x23, 0x2a, 0x42, 0x90, 0x0c, 0x86, 0x74, + 0x67, 0xc8, 0x7f, 0xa5, 0x9a, 0xb8, 0x52, 0x61, 0x14, 0x13, 0x3f, 0x65, + 0xe9, 0x82, 0x87, 0xcb, 0xdb, 0xfa, 0x0e, 0x56, 0xf6, 0x86, 0x89, 0xf3, + 0x85, 0x3f, 0x97, 0x86, 0xaf, 0xb0, 0xdc, 0x1a, 0xef, 0x6b, 0x0d, 0x95, + 0x16, 0x7d, 0xc4, 0x2b, 0xa0, 0x65, 0xb2, 0x99, 0x04, 0x36, 0x75, 0x80, + 0x6b, 0xac, 0x4a, 0xf3, 0x1b, 0x90, 0x49, 0x78, 0x2f, 0xa2, 0x96, 0x4f, + 0x2a, 0x20, 0x25, 0x29, 0x04, 0xc6, 0x74, 0xc0, 0xd0, 0x31, 0xcd, 0x8f, + 0x31, 0x38, 0x95, 0x16, 0xba, 0xa8, 0x33, 0xb8, 0x43, 0xf1, 0xb1, 0x1f, + 0xc3, 0x30, 0x7f, 0xa2, 0x79, 0x31, 0x13, 0x3d, 0x2d, 0x36, 0xf8, 0xe3, + 0xfc, 0xf2, 0x33, 0x6a, 0xb9, 0x39, 0x31, 0xc5, 0xaf, 0xc4, 0x8d, 0x0d, + 0x1d, 0x64, 0x16, 0x33, 0xaa, 0xfa, 0x84, 0x29, 0xb6, 0xd4, 0x0b, 0xc0, + 0xd8, 0x7d, 0xc3, 0x93, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, + 0x7d, 0x30, 0x82, 0x01, 0x79, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, + 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, + 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, + 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x7f, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x73, 0x30, 0x71, 0x30, 0x32, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x26, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x69, 0x73, 0x72, 0x67, 0x2e, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x69, 0x64, 0x2e, 0x6f, 0x63, 0x73, 0x70, 0x2e, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, + 0x6d, 0x30, 0x3b, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, + 0x02, 0x86, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x61, 0x70, + 0x70, 0x73, 0x2e, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x73, 0x2f, 0x64, + 0x73, 0x74, 0x72, 0x6f, 0x6f, 0x74, 0x63, 0x61, 0x78, 0x33, 0x2e, 0x70, + 0x37, 0x63, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, + 0x16, 0x80, 0x14, 0xc4, 0xa7, 0xb1, 0xa4, 0x7b, 0x2c, 0x71, 0xfa, 0xdb, + 0xe1, 0x4b, 0x90, 0x75, 0xff, 0xc4, 0x15, 0x60, 0x85, 0x89, 0x10, 0x30, + 0x54, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x4d, 0x30, 0x4b, 0x30, 0x08, + 0x06, 0x06, 0x67, 0x81, 0x0c, 0x01, 0x02, 0x01, 0x30, 0x3f, 0x06, 0x0b, + 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0xdf, 0x13, 0x01, 0x01, 0x01, 0x30, + 0x30, 0x30, 0x2e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, + 0x01, 0x16, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x70, + 0x73, 0x2e, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x78, 0x31, 0x2e, 0x6c, 0x65, + 0x74, 0x73, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x2e, 0x6f, 0x72, + 0x67, 0x30, 0x3c, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x35, 0x30, 0x33, + 0x30, 0x31, 0xa0, 0x2f, 0xa0, 0x2d, 0x86, 0x2b, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x69, 0x64, 0x65, 0x6e, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x53, 0x54, + 0x52, 0x4f, 0x4f, 0x54, 0x43, 0x41, 0x58, 0x33, 0x43, 0x52, 0x4c, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, + 0x04, 0x14, 0xa8, 0x4a, 0x6a, 0x63, 0x04, 0x7d, 0xdd, 0xba, 0xe6, 0xd1, + 0x39, 0xb7, 0xa6, 0x45, 0x65, 0xef, 0xf3, 0xa8, 0xec, 0xa1, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xdd, 0x33, 0xd7, 0x11, 0xf3, 0x63, + 0x58, 0x38, 0xdd, 0x18, 0x15, 0xfb, 0x09, 0x55, 0xbe, 0x76, 0x56, 0xb9, + 0x70, 0x48, 0xa5, 0x69, 0x47, 0x27, 0x7b, 0xc2, 0x24, 0x08, 0x92, 0xf1, + 0x5a, 0x1f, 0x4a, 0x12, 0x29, 0x37, 0x24, 0x74, 0x51, 0x1c, 0x62, 0x68, + 0xb8, 0xcd, 0x95, 0x70, 0x67, 0xe5, 0xf7, 0xa4, 0xbc, 0x4e, 0x28, 0x51, + 0xcd, 0x9b, 0xe8, 0xae, 0x87, 0x9d, 0xea, 0xd8, 0xba, 0x5a, 0xa1, 0x01, + 0x9a, 0xdc, 0xf0, 0xdd, 0x6a, 0x1d, 0x6a, 0xd8, 0x3e, 0x57, 0x23, 0x9e, + 0xa6, 0x1e, 0x04, 0x62, 0x9a, 0xff, 0xd7, 0x05, 0xca, 0xb7, 0x1f, 0x3f, + 0xc0, 0x0a, 0x48, 0xbc, 0x94, 0xb0, 0xb6, 0x65, 0x62, 0xe0, 0xc1, 0x54, + 0xe5, 0xa3, 0x2a, 0xad, 0x20, 0xc4, 0xe9, 0xe6, 0xbb, 0xdc, 0xc8, 0xf6, + 0xb5, 0xc3, 0x32, 0xa3, 0x98, 0xcc, 0x77, 0xa8, 0xe6, 0x79, 0x65, 0x07, + 0x2b, 0xcb, 0x28, 0xfe, 0x3a, 0x16, 0x52, 0x81, 0xce, 0x52, 0x0c, 0x2e, + 0x5f, 0x83, 0xe8, 0xd5, 0x06, 0x33, 0xfb, 0x77, 0x6c, 0xce, 0x40, 0xea, + 0x32, 0x9e, 0x1f, 0x92, 0x5c, 0x41, 0xc1, 0x74, 0x6c, 0x5b, 0x5d, 0x0a, + 0x5f, 0x33, 0xcc, 0x4d, 0x9f, 0xac, 0x38, 0xf0, 0x2f, 0x7b, 0x2c, 0x62, + 0x9d, 0xd9, 0xa3, 0x91, 0x6f, 0x25, 0x1b, 0x2f, 0x90, 0xb1, 0x19, 0x46, + 0x3d, 0xf6, 0x7e, 0x1b, 0xa6, 0x7a, 0x87, 0xb9, 0xa3, 0x7a, 0x6d, 0x18, + 0xfa, 0x25, 0xa5, 0x91, 0x87, 0x15, 0xe0, 0xf2, 0x16, 0x2f, 0x58, 0xb0, + 0x06, 0x2f, 0x2c, 0x68, 0x26, 0xc6, 0x4b, 0x98, 0xcd, 0xda, 0x9f, 0x0c, + 0xf9, 0x7f, 0x90, 0xed, 0x43, 0x4a, 0x12, 0x44, 0x4e, 0x6f, 0x73, 0x7a, + 0x28, 0xea, 0xa4, 0xaa, 0x6e, 0x7b, 0x4c, 0x7d, 0x87, 0xdd, 0xe0, 0xc9, + 0x02, 0x44, 0xa7, 0x87, 0xaf, 0xc3, 0x34, 0x5b, 0xb4, 0x42, +} + +var certSet3Cert23 = []byte{ + 0x30, 0x82, 0x04, 0x92, 0x30, 0x82, 0x03, 0x7a, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x13, 0x06, 0x7f, 0x94, 0x4a, 0x2a, 0x27, 0xcd, 0xf3, 0xfa, + 0xc2, 0xae, 0x2b, 0x01, 0xf9, 0x08, 0xee, 0xb9, 0xc4, 0xc6, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, + 0x00, 0x30, 0x81, 0x98, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, + 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, + 0x04, 0x08, 0x13, 0x07, 0x41, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x61, 0x31, + 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0a, 0x53, 0x63, + 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61, 0x6c, 0x65, 0x31, 0x25, 0x30, 0x23, + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x1c, 0x53, 0x74, 0x61, 0x72, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x20, 0x54, 0x65, 0x63, 0x68, 0x6e, 0x6f, 0x6c, + 0x6f, 0x67, 0x69, 0x65, 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, + 0x3b, 0x30, 0x39, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x32, 0x53, 0x74, + 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x73, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, + 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x35, 0x30, 0x35, 0x32, 0x35, 0x31, 0x32, + 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x33, 0x37, 0x31, 0x32, 0x33, + 0x31, 0x30, 0x31, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x39, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x06, 0x41, 0x6d, + 0x61, 0x7a, 0x6f, 0x6e, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x10, 0x41, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x20, 0x52, 0x6f, + 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x31, 0x30, 0x82, 0x01, 0x22, 0x30, + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, + 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, + 0x82, 0x01, 0x01, 0x00, 0xb2, 0x78, 0x80, 0x71, 0xca, 0x78, 0xd5, 0xe3, + 0x71, 0xaf, 0x47, 0x80, 0x50, 0x74, 0x7d, 0x6e, 0xd8, 0xd7, 0x88, 0x76, + 0xf4, 0x99, 0x68, 0xf7, 0x58, 0x21, 0x60, 0xf9, 0x74, 0x84, 0x01, 0x2f, + 0xac, 0x02, 0x2d, 0x86, 0xd3, 0xa0, 0x43, 0x7a, 0x4e, 0xb2, 0xa4, 0xd0, + 0x36, 0xba, 0x01, 0xbe, 0x8d, 0xdb, 0x48, 0xc8, 0x07, 0x17, 0x36, 0x4c, + 0xf4, 0xee, 0x88, 0x23, 0xc7, 0x3e, 0xeb, 0x37, 0xf5, 0xb5, 0x19, 0xf8, + 0x49, 0x68, 0xb0, 0xde, 0xd7, 0xb9, 0x76, 0x38, 0x1d, 0x61, 0x9e, 0xa4, + 0xfe, 0x82, 0x36, 0xa5, 0xe5, 0x4a, 0x56, 0xe4, 0x45, 0xe1, 0xf9, 0xfd, + 0xb4, 0x16, 0xfa, 0x74, 0xda, 0x9c, 0x9b, 0x35, 0x39, 0x2f, 0xfa, 0xb0, + 0x20, 0x50, 0x06, 0x6c, 0x7a, 0xd0, 0x80, 0xb2, 0xa6, 0xf9, 0xaf, 0xec, + 0x47, 0x19, 0x8f, 0x50, 0x38, 0x07, 0xdc, 0xa2, 0x87, 0x39, 0x58, 0xf8, + 0xba, 0xd5, 0xa9, 0xf9, 0x48, 0x67, 0x30, 0x96, 0xee, 0x94, 0x78, 0x5e, + 0x6f, 0x89, 0xa3, 0x51, 0xc0, 0x30, 0x86, 0x66, 0xa1, 0x45, 0x66, 0xba, + 0x54, 0xeb, 0xa3, 0xc3, 0x91, 0xf9, 0x48, 0xdc, 0xff, 0xd1, 0xe8, 0x30, + 0x2d, 0x7d, 0x2d, 0x74, 0x70, 0x35, 0xd7, 0x88, 0x24, 0xf7, 0x9e, 0xc4, + 0x59, 0x6e, 0xbb, 0x73, 0x87, 0x17, 0xf2, 0x32, 0x46, 0x28, 0xb8, 0x43, + 0xfa, 0xb7, 0x1d, 0xaa, 0xca, 0xb4, 0xf2, 0x9f, 0x24, 0x0e, 0x2d, 0x4b, + 0xf7, 0x71, 0x5c, 0x5e, 0x69, 0xff, 0xea, 0x95, 0x02, 0xcb, 0x38, 0x8a, + 0xae, 0x50, 0x38, 0x6f, 0xdb, 0xfb, 0x2d, 0x62, 0x1b, 0xc5, 0xc7, 0x1e, + 0x54, 0xe1, 0x77, 0xe0, 0x67, 0xc8, 0x0f, 0x9c, 0x87, 0x23, 0xd6, 0x3f, + 0x40, 0x20, 0x7f, 0x20, 0x80, 0xc4, 0x80, 0x4c, 0x3e, 0x3b, 0x24, 0x26, + 0x8e, 0x04, 0xae, 0x6c, 0x9a, 0xc8, 0xaa, 0x0d, 0x02, 0x03, 0x01, 0x00, + 0x01, 0xa3, 0x82, 0x01, 0x31, 0x30, 0x82, 0x01, 0x2d, 0x30, 0x0f, 0x06, + 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, + 0x01, 0xff, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, + 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, + 0x0e, 0x04, 0x16, 0x04, 0x14, 0x84, 0x18, 0xcc, 0x85, 0x34, 0xec, 0xbc, + 0x0c, 0x94, 0x94, 0x2e, 0x08, 0x59, 0x9c, 0xc7, 0xb2, 0x10, 0x4e, 0x0a, + 0x08, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, + 0x80, 0x14, 0x9c, 0x5f, 0x00, 0xdf, 0xaa, 0x01, 0xd7, 0x30, 0x2b, 0x38, + 0x88, 0xa2, 0xb8, 0x6d, 0x4a, 0x9c, 0xf2, 0x11, 0x91, 0x83, 0x30, 0x78, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x6c, + 0x30, 0x6a, 0x30, 0x2e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x30, 0x01, 0x86, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, + 0x63, 0x73, 0x70, 0x2e, 0x72, 0x6f, 0x6f, 0x74, 0x67, 0x32, 0x2e, 0x61, + 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, + 0x6f, 0x6d, 0x30, 0x38, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x30, 0x02, 0x86, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, + 0x72, 0x74, 0x2e, 0x72, 0x6f, 0x6f, 0x74, 0x67, 0x32, 0x2e, 0x61, 0x6d, + 0x61, 0x7a, 0x6f, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x67, 0x32, 0x2e, 0x63, 0x65, 0x72, + 0x30, 0x3d, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x36, 0x30, 0x34, 0x30, + 0x32, 0xa0, 0x30, 0xa0, 0x2e, 0x86, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x72, 0x6f, 0x6f, 0x74, 0x67, 0x32, + 0x2e, 0x61, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x67, 0x32, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x11, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x0a, + 0x30, 0x08, 0x30, 0x06, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x62, 0x37, 0x42, 0x5c, 0xbc, 0x10, + 0xb5, 0x3e, 0x8b, 0x2c, 0xe9, 0x0c, 0x9b, 0x6c, 0x45, 0xe2, 0x07, 0x00, + 0x7a, 0xf9, 0xc5, 0x58, 0x0b, 0xb9, 0x08, 0x8c, 0x3e, 0xed, 0xb3, 0x25, + 0x3c, 0xb5, 0x6f, 0x50, 0xe4, 0xcd, 0x35, 0x6a, 0xa7, 0x93, 0x34, 0x96, + 0x32, 0x21, 0xa9, 0x48, 0x44, 0xab, 0x9c, 0xed, 0x3d, 0xb4, 0xaa, 0x73, + 0x6d, 0xe4, 0x7f, 0x16, 0x80, 0x89, 0x6c, 0xcf, 0x28, 0x03, 0x18, 0x83, + 0x47, 0x79, 0xa3, 0x10, 0x7e, 0x30, 0x5b, 0xac, 0x3b, 0xb0, 0x60, 0xe0, + 0x77, 0xd4, 0x08, 0xa6, 0xe1, 0x1d, 0x7c, 0x5e, 0xc0, 0xbb, 0xf9, 0x9a, + 0x7b, 0x22, 0x9d, 0xa7, 0x00, 0x09, 0x7e, 0xac, 0x46, 0x17, 0x83, 0xdc, + 0x9c, 0x26, 0x57, 0x99, 0x30, 0x39, 0x62, 0x96, 0x8f, 0xed, 0xda, 0xde, + 0xaa, 0xc5, 0xcc, 0x1b, 0x3e, 0xca, 0x43, 0x68, 0x6c, 0x57, 0x16, 0xbc, + 0xd5, 0x0e, 0x20, 0x2e, 0xfe, 0xff, 0xc2, 0x6a, 0x5d, 0x2e, 0xa0, 0x4a, + 0x6d, 0x14, 0x58, 0x87, 0x94, 0xe6, 0x39, 0x31, 0x5f, 0x7c, 0x73, 0xcb, + 0x90, 0x88, 0x6a, 0x84, 0x11, 0x96, 0x27, 0xa6, 0xed, 0xd9, 0x81, 0x46, + 0xa6, 0x7e, 0xa3, 0x72, 0x00, 0x0a, 0x52, 0x3e, 0x83, 0x88, 0x07, 0x63, + 0x77, 0x89, 0x69, 0x17, 0x0f, 0x39, 0x85, 0xd2, 0xab, 0x08, 0x45, 0x4d, + 0xd0, 0x51, 0x3a, 0xfd, 0x5d, 0x5d, 0x37, 0x64, 0x4c, 0x7e, 0x30, 0xb2, + 0x55, 0x24, 0x42, 0x9d, 0x36, 0xb0, 0x5d, 0x9c, 0x17, 0x81, 0x61, 0xf1, + 0xca, 0xf9, 0x10, 0x02, 0x24, 0xab, 0xeb, 0x0d, 0x74, 0x91, 0x8d, 0x7b, + 0x45, 0x29, 0x50, 0x39, 0x88, 0xb2, 0xa6, 0x89, 0x35, 0x25, 0x1e, 0x14, + 0x6a, 0x47, 0x23, 0x31, 0x2f, 0x5c, 0x9a, 0xfa, 0xad, 0x9a, 0x0e, 0x62, + 0x51, 0xa4, 0x2a, 0xa9, 0xc4, 0xf9, 0x34, 0x9d, 0x21, 0x18, +} + +var certSet3Cert24 = []byte{ + 0x30, 0x82, 0x04, 0x94, 0x30, 0x82, 0x03, 0x7c, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x01, 0xfd, 0xa3, 0xeb, 0x6e, 0xca, 0x75, 0xc8, 0x88, + 0x43, 0x8b, 0x72, 0x4b, 0xcf, 0xbc, 0x91, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x61, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, + 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, + 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x17, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x47, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, + 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x30, 0x33, 0x30, 0x38, 0x31, + 0x32, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x30, 0x33, + 0x30, 0x38, 0x31, 0x32, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x4d, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44, + 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31, + 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1e, 0x44, 0x69, + 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x53, 0x48, 0x41, 0x32, 0x20, + 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, + 0x00, 0xdc, 0xae, 0x58, 0x90, 0x4d, 0xc1, 0xc4, 0x30, 0x15, 0x90, 0x35, + 0x5b, 0x6e, 0x3c, 0x82, 0x15, 0xf5, 0x2c, 0x5c, 0xbd, 0xe3, 0xdb, 0xff, + 0x71, 0x43, 0xfa, 0x64, 0x25, 0x80, 0xd4, 0xee, 0x18, 0xa2, 0x4d, 0xf0, + 0x66, 0xd0, 0x0a, 0x73, 0x6e, 0x11, 0x98, 0x36, 0x17, 0x64, 0xaf, 0x37, + 0x9d, 0xfd, 0xfa, 0x41, 0x84, 0xaf, 0xc7, 0xaf, 0x8c, 0xfe, 0x1a, 0x73, + 0x4d, 0xcf, 0x33, 0x97, 0x90, 0xa2, 0x96, 0x87, 0x53, 0x83, 0x2b, 0xb9, + 0xa6, 0x75, 0x48, 0x2d, 0x1d, 0x56, 0x37, 0x7b, 0xda, 0x31, 0x32, 0x1a, + 0xd7, 0xac, 0xab, 0x06, 0xf4, 0xaa, 0x5d, 0x4b, 0xb7, 0x47, 0x46, 0xdd, + 0x2a, 0x93, 0xc3, 0x90, 0x2e, 0x79, 0x80, 0x80, 0xef, 0x13, 0x04, 0x6a, + 0x14, 0x3b, 0xb5, 0x9b, 0x92, 0xbe, 0xc2, 0x07, 0x65, 0x4e, 0xfc, 0xda, + 0xfc, 0xff, 0x7a, 0xae, 0xdc, 0x5c, 0x7e, 0x55, 0x31, 0x0c, 0xe8, 0x39, + 0x07, 0xa4, 0xd7, 0xbe, 0x2f, 0xd3, 0x0b, 0x6a, 0xd2, 0xb1, 0xdf, 0x5f, + 0xfe, 0x57, 0x74, 0x53, 0x3b, 0x35, 0x80, 0xdd, 0xae, 0x8e, 0x44, 0x98, + 0xb3, 0x9f, 0x0e, 0xd3, 0xda, 0xe0, 0xd7, 0xf4, 0x6b, 0x29, 0xab, 0x44, + 0xa7, 0x4b, 0x58, 0x84, 0x6d, 0x92, 0x4b, 0x81, 0xc3, 0xda, 0x73, 0x8b, + 0x12, 0x97, 0x48, 0x90, 0x04, 0x45, 0x75, 0x1a, 0xdd, 0x37, 0x31, 0x97, + 0x92, 0xe8, 0xcd, 0x54, 0x0d, 0x3b, 0xe4, 0xc1, 0x3f, 0x39, 0x5e, 0x2e, + 0xb8, 0xf3, 0x5c, 0x7e, 0x10, 0x8e, 0x86, 0x41, 0x00, 0x8d, 0x45, 0x66, + 0x47, 0xb0, 0xa1, 0x65, 0xce, 0xa0, 0xaa, 0x29, 0x09, 0x4e, 0xf3, 0x97, + 0xeb, 0xe8, 0x2e, 0xab, 0x0f, 0x72, 0xa7, 0x30, 0x0e, 0xfa, 0xc7, 0xf4, + 0xfd, 0x14, 0x77, 0xc3, 0xa4, 0x5b, 0x28, 0x57, 0xc2, 0xb3, 0xf9, 0x82, + 0xfd, 0xb7, 0x45, 0x58, 0x9b, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, + 0x01, 0x5a, 0x30, 0x82, 0x01, 0x56, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, + 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, + 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, + 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, + 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, + 0x30, 0x7b, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x74, 0x30, 0x72, 0x30, + 0x37, 0xa0, 0x35, 0xa0, 0x33, 0x86, 0x31, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x33, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, + 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x69, 0x67, 0x69, + 0x43, 0x65, 0x72, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x52, 0x6f, + 0x6f, 0x74, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x37, 0xa0, 0x35, + 0xa0, 0x33, 0x86, 0x31, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, + 0x72, 0x6c, 0x34, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, + 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x52, 0x6f, 0x6f, 0x74, 0x43, + 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3d, 0x06, 0x03, 0x55, 0x1d, 0x20, + 0x04, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, + 0x30, 0x2a, 0x30, 0x28, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, + 0x77, 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x50, 0x53, 0x30, 0x1d, 0x06, 0x03, + 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x0f, 0x80, 0x61, 0x1c, 0x82, + 0x31, 0x61, 0xd5, 0x2f, 0x28, 0xe7, 0x8d, 0x46, 0x38, 0xb4, 0x2c, 0xe1, + 0xc6, 0xd9, 0xe2, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, + 0x30, 0x16, 0x80, 0x14, 0x03, 0xde, 0x50, 0x35, 0x56, 0xd1, 0x4c, 0xbb, + 0x66, 0xf0, 0xa3, 0xe2, 0x1b, 0x1b, 0xc3, 0x97, 0xb2, 0x3d, 0xd1, 0x55, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x23, 0x3e, 0xdf, 0x4b, + 0xd2, 0x31, 0x42, 0xa5, 0xb6, 0x7e, 0x42, 0x5c, 0x1a, 0x44, 0xcc, 0x69, + 0xd1, 0x68, 0xb4, 0x5d, 0x4b, 0xe0, 0x04, 0x21, 0x6c, 0x4b, 0xe2, 0x6d, + 0xcc, 0xb1, 0xe0, 0x97, 0x8f, 0xa6, 0x53, 0x09, 0xcd, 0xaa, 0x2a, 0x65, + 0xe5, 0x39, 0x4f, 0x1e, 0x83, 0xa5, 0x6e, 0x5c, 0x98, 0xa2, 0x24, 0x26, + 0xe6, 0xfb, 0xa1, 0xed, 0x93, 0xc7, 0x2e, 0x02, 0xc6, 0x4d, 0x4a, 0xbf, + 0xb0, 0x42, 0xdf, 0x78, 0xda, 0xb3, 0xa8, 0xf9, 0x6d, 0xff, 0x21, 0x85, + 0x53, 0x36, 0x60, 0x4c, 0x76, 0xce, 0xec, 0x38, 0xdc, 0xd6, 0x51, 0x80, + 0xf0, 0xc5, 0xd6, 0xe5, 0xd4, 0x4d, 0x27, 0x64, 0xab, 0x9b, 0xc7, 0x3e, + 0x71, 0xfb, 0x48, 0x97, 0xb8, 0x33, 0x6d, 0xc9, 0x13, 0x07, 0xee, 0x96, + 0xa2, 0x1b, 0x18, 0x15, 0xf6, 0x5c, 0x4c, 0x40, 0xed, 0xb3, 0xc2, 0xec, + 0xff, 0x71, 0xc1, 0xe3, 0x47, 0xff, 0xd4, 0xb9, 0x00, 0xb4, 0x37, 0x42, + 0xda, 0x20, 0xc9, 0xea, 0x6e, 0x8a, 0xee, 0x14, 0x06, 0xae, 0x7d, 0xa2, + 0x59, 0x98, 0x88, 0xa8, 0x1b, 0x6f, 0x2d, 0xf4, 0xf2, 0xc9, 0x14, 0x5f, + 0x26, 0xcf, 0x2c, 0x8d, 0x7e, 0xed, 0x37, 0xc0, 0xa9, 0xd5, 0x39, 0xb9, + 0x82, 0xbf, 0x19, 0x0c, 0xea, 0x34, 0xaf, 0x00, 0x21, 0x68, 0xf8, 0xad, + 0x73, 0xe2, 0xc9, 0x32, 0xda, 0x38, 0x25, 0x0b, 0x55, 0xd3, 0x9a, 0x1d, + 0xf0, 0x68, 0x86, 0xed, 0x2e, 0x41, 0x34, 0xef, 0x7c, 0xa5, 0x50, 0x1d, + 0xbf, 0x3a, 0xf9, 0xd3, 0xc1, 0x08, 0x0c, 0xe6, 0xed, 0x1e, 0x8a, 0x58, + 0x25, 0xe4, 0xb8, 0x77, 0xad, 0x2d, 0x6e, 0xf5, 0x52, 0xdd, 0xb4, 0x74, + 0x8f, 0xab, 0x49, 0x2e, 0x9d, 0x3b, 0x93, 0x34, 0x28, 0x1f, 0x78, 0xce, + 0x94, 0xea, 0xc7, 0xbd, 0xd3, 0xc9, 0x6d, 0x1c, 0xde, 0x5c, 0x32, 0xf3, +} + +var certSet3Cert25 = []byte{ + 0x30, 0x82, 0x04, 0xa0, 0x30, 0x82, 0x03, 0x88, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x39, 0x14, 0x84, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x68, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x1c, 0x53, + 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x54, 0x65, 0x63, + 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x29, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x32, 0x20, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x31, + 0x34, 0x30, 0x31, 0x30, 0x31, 0x30, 0x37, 0x30, 0x30, 0x30, 0x30, 0x5a, + 0x17, 0x0d, 0x33, 0x31, 0x30, 0x35, 0x33, 0x30, 0x30, 0x37, 0x30, 0x30, + 0x30, 0x30, 0x5a, 0x30, 0x81, 0x8f, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, + 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0e, 0x06, + 0x03, 0x55, 0x04, 0x08, 0x13, 0x07, 0x41, 0x72, 0x69, 0x7a, 0x6f, 0x6e, + 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0a, + 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61, 0x6c, 0x65, 0x31, 0x25, + 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x1c, 0x53, 0x74, 0x61, + 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x54, 0x65, 0x63, 0x68, 0x6e, + 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x29, + 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x52, 0x6f, + 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, + 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, + 0x01, 0x00, 0xbd, 0xed, 0xc1, 0x03, 0xfc, 0xf6, 0x8f, 0xfc, 0x02, 0xb1, + 0x6f, 0x5b, 0x9f, 0x48, 0xd9, 0x9d, 0x79, 0xe2, 0xa2, 0xb7, 0x03, 0x61, + 0x56, 0x18, 0xc3, 0x47, 0xb6, 0xd7, 0xca, 0x3d, 0x35, 0x2e, 0x89, 0x43, + 0xf7, 0xa1, 0x69, 0x9b, 0xde, 0x8a, 0x1a, 0xfd, 0x13, 0x20, 0x9c, 0xb4, + 0x49, 0x77, 0x32, 0x29, 0x56, 0xfd, 0xb9, 0xec, 0x8c, 0xdd, 0x22, 0xfa, + 0x72, 0xdc, 0x27, 0x61, 0x97, 0xee, 0xf6, 0x5a, 0x84, 0xec, 0x6e, 0x19, + 0xb9, 0x89, 0x2c, 0xdc, 0x84, 0x5b, 0xd5, 0x74, 0xfb, 0x6b, 0x5f, 0xc5, + 0x89, 0xa5, 0x10, 0x52, 0x89, 0x46, 0x55, 0xf4, 0xb8, 0x75, 0x1c, 0xe6, + 0x7f, 0xe4, 0x54, 0xae, 0x4b, 0xf8, 0x55, 0x72, 0x57, 0x02, 0x19, 0xf8, + 0x17, 0x71, 0x59, 0xeb, 0x1e, 0x28, 0x07, 0x74, 0xc5, 0x9d, 0x48, 0xbe, + 0x6c, 0xb4, 0xf4, 0xa4, 0xb0, 0xf3, 0x64, 0x37, 0x79, 0x92, 0xc0, 0xec, + 0x46, 0x5e, 0x7f, 0xe1, 0x6d, 0x53, 0x4c, 0x62, 0xaf, 0xcd, 0x1f, 0x0b, + 0x63, 0xbb, 0x3a, 0x9d, 0xfb, 0xfc, 0x79, 0x00, 0x98, 0x61, 0x74, 0xcf, + 0x26, 0x82, 0x40, 0x63, 0xf3, 0xb2, 0x72, 0x6a, 0x19, 0x0d, 0x99, 0xca, + 0xd4, 0x0e, 0x75, 0xcc, 0x37, 0xfb, 0x8b, 0x89, 0xc1, 0x59, 0xf1, 0x62, + 0x7f, 0x5f, 0xb3, 0x5f, 0x65, 0x30, 0xf8, 0xa7, 0xb7, 0x4d, 0x76, 0x5a, + 0x1e, 0x76, 0x5e, 0x34, 0xc0, 0xe8, 0x96, 0x56, 0x99, 0x8a, 0xb3, 0xf0, + 0x7f, 0xa4, 0xcd, 0xbd, 0xdc, 0x32, 0x31, 0x7c, 0x91, 0xcf, 0xe0, 0x5f, + 0x11, 0xf8, 0x6b, 0xaa, 0x49, 0x5c, 0xd1, 0x99, 0x94, 0xd1, 0xa2, 0xe3, + 0x63, 0x5b, 0x09, 0x76, 0xb5, 0x56, 0x62, 0xe1, 0x4b, 0x74, 0x1d, 0x96, + 0xd4, 0x26, 0xd4, 0x08, 0x04, 0x59, 0xd0, 0x98, 0x0e, 0x0e, 0xe6, 0xde, + 0xfc, 0xc3, 0xec, 0x1f, 0x90, 0xf1, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, + 0x82, 0x01, 0x29, 0x30, 0x82, 0x01, 0x25, 0x30, 0x0f, 0x06, 0x03, 0x55, + 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, + 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, + 0x03, 0x02, 0x01, 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, + 0x16, 0x04, 0x14, 0x7c, 0x0c, 0x32, 0x1f, 0xa7, 0xd9, 0x30, 0x7f, 0xc4, + 0x7d, 0x68, 0xa3, 0x62, 0xa8, 0xa1, 0xce, 0xab, 0x07, 0x5b, 0x27, 0x30, + 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, + 0xbf, 0x5f, 0xb7, 0xd1, 0xce, 0xdd, 0x1f, 0x86, 0xf4, 0x5b, 0x55, 0xac, + 0xdc, 0xd7, 0x10, 0xc2, 0x0e, 0xa9, 0x88, 0xe7, 0x30, 0x3a, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x2e, 0x30, 0x2c, + 0x30, 0x2a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, + 0x86, 0x1e, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, + 0x70, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x74, + 0x65, 0x63, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x30, 0x38, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x31, 0x30, 0x2f, 0x30, 0x2d, 0xa0, 0x2b, 0xa0, + 0x29, 0x86, 0x27, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, + 0x6c, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x74, + 0x65, 0x63, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x66, 0x72, 0x6f, + 0x6f, 0x74, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, + 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, 0x41, 0x06, 0x04, 0x55, 0x1d, 0x20, + 0x00, 0x30, 0x39, 0x30, 0x37, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x01, 0x16, 0x2b, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, + 0x2f, 0x63, 0x65, 0x72, 0x74, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x74, 0x65, 0x63, 0x68, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x85, 0x63, 0xc1, 0xd9, + 0xdd, 0xb9, 0xff, 0xa9, 0xbd, 0xa6, 0x19, 0xdc, 0xbf, 0x13, 0x3a, 0x11, + 0x38, 0x22, 0x54, 0xb1, 0xac, 0x05, 0x10, 0xfb, 0x7c, 0xb3, 0x96, 0x3f, + 0x31, 0x8b, 0x66, 0xff, 0x88, 0xf3, 0xe1, 0xbf, 0xfb, 0xc7, 0x1f, 0x00, + 0xff, 0x46, 0x6a, 0x8b, 0x61, 0x32, 0xc9, 0x01, 0x51, 0x76, 0xfb, 0x9a, + 0xc6, 0xfa, 0x20, 0x51, 0xc8, 0x46, 0xc4, 0x98, 0xd7, 0x79, 0xa3, 0xe3, + 0x04, 0x72, 0x3f, 0x8b, 0x4d, 0x34, 0x53, 0x67, 0xec, 0x33, 0x2c, 0x7b, + 0xe8, 0x94, 0x01, 0x28, 0x7c, 0x3a, 0x34, 0x5b, 0x02, 0x77, 0x16, 0x8d, + 0x40, 0x25, 0x33, 0xb0, 0xbc, 0x6c, 0x97, 0xd7, 0x05, 0x7a, 0xff, 0x8c, + 0x85, 0xce, 0x6f, 0xa0, 0x53, 0x00, 0x17, 0x6e, 0x1e, 0x6c, 0xbd, 0x22, + 0xd7, 0x0a, 0x88, 0x37, 0xf6, 0x7d, 0xeb, 0x99, 0x41, 0xef, 0x27, 0xcb, + 0x8c, 0x60, 0x6b, 0x4c, 0x01, 0x7e, 0x65, 0x50, 0x0b, 0x4f, 0xb8, 0x95, + 0x9a, 0x9a, 0x6e, 0x34, 0xfd, 0x73, 0x3a, 0x33, 0xf1, 0x91, 0xd5, 0xf3, + 0x4e, 0x2d, 0x74, 0xe8, 0xef, 0xd3, 0x90, 0x35, 0xf1, 0x06, 0x68, 0x64, + 0xd4, 0xd0, 0x13, 0xfd, 0x52, 0xd3, 0xc6, 0x6d, 0xc1, 0x3a, 0x8a, 0x31, + 0xdd, 0x05, 0x26, 0x35, 0x4a, 0x8c, 0x65, 0xb8, 0x52, 0x6b, 0x81, 0xec, + 0xd2, 0x9c, 0xb5, 0x34, 0x10, 0x97, 0x9c, 0x3e, 0xc6, 0x2f, 0xed, 0x8e, + 0x42, 0x42, 0x24, 0x2e, 0xe9, 0x73, 0x9a, 0x25, 0xf9, 0x11, 0xf1, 0xf2, + 0x23, 0x69, 0xcb, 0xe5, 0x94, 0x69, 0xa0, 0xd2, 0xdc, 0xb0, 0xfc, 0x44, + 0x89, 0xac, 0x17, 0xa8, 0xcc, 0xd5, 0x37, 0x77, 0x16, 0xc5, 0x80, 0xb9, + 0x0c, 0x8f, 0x57, 0x02, 0x55, 0x99, 0x85, 0x7b, 0x49, 0xf0, 0x2e, 0x5b, + 0xa0, 0xc2, 0x57, 0x53, 0x5d, 0xa2, 0xe8, 0xa6, 0x37, 0xc3, 0x01, 0xfa, +} + +var certSet3Cert26 = []byte{ + 0x30, 0x82, 0x04, 0xa6, 0x30, 0x82, 0x03, 0x8e, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x28, 0x1c, 0x89, 0x29, 0x66, 0x14, 0x43, 0x80, 0x42, + 0x63, 0x55, 0x3a, 0x32, 0x40, 0xae, 0xb3, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0x98, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x30, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x38, 0x20, 0x47, 0x65, + 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, + 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, + 0x79, 0x31, 0x36, 0x30, 0x34, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2d, + 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x50, 0x72, 0x69, + 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x1e, 0x17, + 0x0d, 0x31, 0x35, 0x30, 0x36, 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x35, 0x30, 0x36, 0x32, 0x39, 0x32, 0x33, + 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x47, 0x31, 0x0b, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, + 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x20, 0x30, 0x1e, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x17, 0x52, 0x61, 0x70, 0x69, 0x64, + 0x53, 0x53, 0x4c, 0x20, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x43, + 0x41, 0x20, 0x2d, 0x20, 0x47, 0x34, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, + 0x01, 0x01, 0x00, 0xc0, 0x9e, 0x3a, 0x0f, 0x9a, 0xb2, 0xba, 0xd3, 0xd2, + 0xdc, 0x15, 0xec, 0xd0, 0x30, 0x54, 0x59, 0x30, 0x4d, 0x40, 0x51, 0xae, + 0x42, 0x71, 0x71, 0xd2, 0x8d, 0x53, 0x73, 0x81, 0xfe, 0xb8, 0xe0, 0xc4, + 0x96, 0xc5, 0x8e, 0x7e, 0xc2, 0xf1, 0xb7, 0x63, 0x4a, 0xcf, 0xa7, 0x1e, + 0x3f, 0xa8, 0xe7, 0xce, 0x53, 0xa0, 0xfa, 0x2d, 0xf7, 0xd6, 0xe6, 0xce, + 0x70, 0x11, 0xa6, 0xee, 0xe1, 0x03, 0x52, 0xd2, 0x68, 0xde, 0x3d, 0x08, + 0x0d, 0x87, 0xfd, 0x1c, 0xd7, 0x0b, 0x97, 0x62, 0x6d, 0x82, 0x30, 0x76, + 0x1b, 0x47, 0x3a, 0xc4, 0xf7, 0xce, 0xed, 0x1d, 0x7c, 0x8c, 0xb7, 0x17, + 0x8e, 0x53, 0x80, 0x1e, 0x1d, 0x0f, 0x5d, 0x8c, 0xf9, 0x90, 0xe4, 0x04, + 0x1e, 0x02, 0x7e, 0xcb, 0xb0, 0x49, 0xef, 0xda, 0x52, 0x25, 0xfb, 0xfb, + 0x67, 0xed, 0xdd, 0x84, 0x74, 0x59, 0x84, 0x0e, 0xf3, 0xde, 0x70, 0x66, + 0x8d, 0xe4, 0x52, 0x38, 0xf7, 0x53, 0x5a, 0x37, 0x13, 0x67, 0x0b, 0x3e, + 0xbb, 0xa8, 0x58, 0xb7, 0x2e, 0xed, 0xff, 0xb7, 0x5e, 0x11, 0x73, 0xb9, + 0x77, 0x45, 0x52, 0x67, 0x46, 0xae, 0xc4, 0xdc, 0x24, 0x81, 0x89, 0x76, + 0x0a, 0xca, 0xa1, 0x6c, 0x66, 0x73, 0x04, 0x82, 0xaa, 0xf5, 0x70, 0x6c, + 0x5f, 0x1b, 0x9a, 0x00, 0x79, 0x46, 0xd6, 0x7f, 0x7a, 0x26, 0x17, 0x30, + 0xcf, 0x39, 0x4b, 0x2c, 0x74, 0xd9, 0x89, 0x44, 0x76, 0x10, 0xd0, 0xed, + 0xf7, 0x8b, 0xbb, 0x89, 0x05, 0x75, 0x4d, 0x0b, 0x0d, 0xb3, 0xda, 0xe9, + 0xbf, 0xf1, 0x6a, 0x7d, 0x2a, 0x11, 0xdb, 0x1e, 0x9f, 0x8c, 0xe3, 0xc4, + 0x06, 0x69, 0xe1, 0x1d, 0x88, 0x45, 0x39, 0xd1, 0x6e, 0x55, 0xd8, 0xaa, + 0xb7, 0x9b, 0x6f, 0xea, 0xf4, 0xde, 0xac, 0x17, 0x11, 0x92, 0x5d, 0x40, + 0x9b, 0x83, 0x7b, 0x9a, 0xe2, 0xf7, 0xa9, 0x02, 0x03, 0x01, 0x00, 0x01, + 0xa3, 0x82, 0x01, 0x3a, 0x30, 0x82, 0x01, 0x36, 0x30, 0x2e, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x22, 0x30, 0x20, + 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, + 0x86, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, 0x73, + 0x79, 0x6d, 0x63, 0x64, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x12, 0x06, 0x03, + 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, + 0xff, 0x02, 0x01, 0x00, 0x30, 0x49, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, + 0x42, 0x30, 0x40, 0x30, 0x3e, 0x06, 0x06, 0x67, 0x81, 0x0c, 0x01, 0x02, + 0x01, 0x30, 0x34, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x01, 0x16, 0x26, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, + 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, + 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x36, 0x06, 0x03, 0x55, + 0x1d, 0x1f, 0x04, 0x2f, 0x30, 0x2d, 0x30, 0x2b, 0xa0, 0x29, 0xa0, 0x27, + 0x86, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, 0x73, + 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x65, 0x6f, + 0x54, 0x72, 0x75, 0x73, 0x74, 0x50, 0x43, 0x41, 0x2d, 0x47, 0x33, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, 0x16, + 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x01, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x30, 0x0e, + 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, + 0x01, 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, + 0x14, 0xf3, 0xb5, 0x56, 0x0c, 0xc4, 0x09, 0xb0, 0xb4, 0xcf, 0x1f, 0xaa, + 0xf9, 0xdd, 0x23, 0x56, 0xf0, 0x77, 0xe8, 0xa1, 0xf9, 0x30, 0x1f, 0x06, + 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xc4, 0x79, + 0xca, 0x8e, 0xa1, 0x4e, 0x03, 0x1d, 0x1c, 0xdc, 0x6b, 0xdb, 0x31, 0x5b, + 0x94, 0x3e, 0x3f, 0x30, 0x7f, 0x2d, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x01, 0x00, 0xc3, 0x7e, 0xd8, 0x83, 0x4b, 0x04, 0x4c, 0x55, 0x29, 0x2a, + 0x4f, 0x14, 0x9d, 0x9a, 0x6e, 0xde, 0x90, 0x70, 0xc1, 0xa4, 0x26, 0x4c, + 0x88, 0x8e, 0x78, 0x48, 0xef, 0xbd, 0x9c, 0xb0, 0xa0, 0xf5, 0xf0, 0x66, + 0xfc, 0xfe, 0x59, 0x26, 0xe1, 0x79, 0xef, 0xc8, 0xb7, 0x60, 0x64, 0xa8, + 0x8b, 0x47, 0xea, 0x2f, 0xe0, 0x83, 0x99, 0xda, 0x41, 0x19, 0xd7, 0xc5, + 0xbe, 0x05, 0xfa, 0xf2, 0x90, 0x11, 0xf0, 0x0a, 0xff, 0x6c, 0xdc, 0x05, + 0xb4, 0xd8, 0x06, 0x6f, 0xa4, 0x6f, 0x8d, 0xbe, 0x20, 0x2b, 0x54, 0xdb, + 0xf9, 0xa2, 0x45, 0x83, 0x9a, 0x1e, 0xa5, 0x21, 0x89, 0x35, 0x1d, 0x7c, + 0x20, 0x5c, 0x17, 0xfd, 0x04, 0x2e, 0x45, 0xd8, 0xb2, 0xc6, 0xf8, 0x42, + 0x99, 0xfc, 0x54, 0x08, 0x4e, 0x4b, 0x80, 0x5f, 0x39, 0x37, 0xba, 0x95, + 0x4e, 0xa6, 0x37, 0x0a, 0x9e, 0x93, 0x5e, 0x87, 0x5b, 0xe9, 0x90, 0xd6, + 0xa8, 0xb6, 0x65, 0x08, 0x8d, 0x61, 0x49, 0xeb, 0x83, 0x20, 0xa9, 0x5d, + 0x1b, 0x16, 0x60, 0x62, 0x6b, 0x2f, 0x54, 0xfb, 0x5a, 0x02, 0x0d, 0x7a, + 0x27, 0xe2, 0x4b, 0xe1, 0x05, 0x14, 0xc2, 0xe4, 0xe9, 0xf9, 0x70, 0xc0, + 0xd9, 0xf7, 0x34, 0x65, 0x0e, 0xa2, 0x91, 0x4b, 0xac, 0x28, 0xf2, 0xb7, + 0x08, 0x0f, 0x98, 0xca, 0xd7, 0x3e, 0x70, 0xb6, 0xc8, 0x0b, 0xf1, 0x8b, + 0x9c, 0x51, 0xf8, 0xc6, 0x10, 0x6c, 0xd2, 0x53, 0x4f, 0x62, 0x8c, 0x11, + 0x00, 0x3e, 0x88, 0xdf, 0xbf, 0xe6, 0xd2, 0xcc, 0x70, 0xbd, 0xed, 0x25, + 0x9c, 0xfb, 0xdd, 0x24, 0x0a, 0xbd, 0x59, 0x91, 0x4a, 0x42, 0x03, 0x38, + 0x12, 0x71, 0x32, 0x88, 0x76, 0xa0, 0x8e, 0x7c, 0xbb, 0x32, 0xef, 0x88, + 0x2a, 0x1b, 0xd4, 0x6a, 0x6f, 0x50, 0xb9, 0x52, 0x67, 0x8b, 0xab, 0x30, + 0xfa, 0x1f, 0xfd, 0xe3, 0x24, 0x9a, +} + +var certSet3Cert27 = []byte{ + 0x30, 0x82, 0x04, 0xa8, 0x30, 0x82, 0x03, 0x90, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x11, 0x00, 0xe4, 0x05, 0x47, 0x83, 0x0e, 0x0c, 0x64, 0x52, + 0x97, 0x6f, 0x7a, 0x35, 0x49, 0xc0, 0xdd, 0x48, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, + 0x7e, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x50, 0x4c, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x19, 0x55, 0x6e, 0x69, 0x7a, 0x65, 0x74, 0x6f, 0x20, 0x54, 0x65, 0x63, + 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x20, 0x53, 0x2e, + 0x41, 0x2e, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x1e, 0x43, 0x65, 0x72, 0x74, 0x75, 0x6d, 0x20, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x22, 0x30, 0x20, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x19, 0x43, 0x65, 0x72, 0x74, 0x75, 0x6d, + 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x20, 0x4e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, + 0x35, 0x30, 0x31, 0x32, 0x31, 0x31, 0x32, 0x30, 0x30, 0x30, 0x30, 0x5a, + 0x17, 0x0d, 0x32, 0x35, 0x30, 0x31, 0x31, 0x38, 0x31, 0x32, 0x30, 0x30, + 0x30, 0x30, 0x5a, 0x30, 0x5f, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, + 0x04, 0x06, 0x13, 0x02, 0x52, 0x55, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, + 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x59, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x20, + 0x4c, 0x4c, 0x43, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x1e, 0x59, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x43, 0x65, 0x72, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x12, 0x30, 0x10, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x09, 0x59, 0x61, 0x6e, 0x64, 0x65, + 0x78, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, + 0x00, 0xa6, 0x05, 0x24, 0x76, 0x61, 0xb9, 0x9e, 0x42, 0x60, 0x22, 0x63, + 0x85, 0x59, 0xe5, 0x9d, 0x88, 0x0d, 0xdf, 0xef, 0x21, 0x64, 0x5a, 0x26, + 0x94, 0x71, 0x3a, 0xa4, 0x7f, 0x2b, 0x53, 0xc3, 0xac, 0x7b, 0xba, 0x95, + 0x42, 0x6d, 0x6a, 0x5b, 0xd6, 0x7e, 0x78, 0x0c, 0x67, 0x40, 0x98, 0x2f, + 0x6a, 0x2d, 0xd0, 0xb7, 0x18, 0x3a, 0x7e, 0x99, 0x60, 0x01, 0xe5, 0x27, + 0xbf, 0xff, 0x49, 0xf5, 0xcd, 0xc4, 0x58, 0xc3, 0x4c, 0xe1, 0x70, 0xd5, + 0xfd, 0x08, 0xa8, 0x79, 0x95, 0x76, 0x1c, 0x0e, 0x05, 0x41, 0xfa, 0xbd, + 0x80, 0x38, 0x2a, 0x87, 0x4f, 0xc1, 0x67, 0x42, 0xaa, 0x17, 0xa6, 0xee, + 0xa7, 0x8c, 0x8e, 0xef, 0x2d, 0x7f, 0x7a, 0x1d, 0x05, 0x17, 0x8f, 0x7e, + 0x3b, 0x92, 0x35, 0xf5, 0x68, 0xed, 0x93, 0x03, 0x55, 0x23, 0x4f, 0x4b, + 0xa2, 0x00, 0x86, 0x65, 0x91, 0x0f, 0xeb, 0xf6, 0x3c, 0xd5, 0xdb, 0x6d, + 0x0e, 0xed, 0xe8, 0x7c, 0x3a, 0xc8, 0xba, 0xb7, 0x53, 0xc1, 0xa4, 0xd8, + 0x40, 0x02, 0xe5, 0xb5, 0xa2, 0xca, 0xbf, 0xda, 0x9c, 0x94, 0x0d, 0xfc, + 0xc5, 0x1c, 0x2a, 0x59, 0x88, 0x62, 0x57, 0x93, 0x2e, 0x11, 0xf0, 0x38, + 0x2c, 0x7a, 0x81, 0x2a, 0xf2, 0x25, 0x15, 0x17, 0x35, 0x70, 0x2c, 0x4b, + 0xf7, 0x23, 0x4c, 0x82, 0xef, 0x33, 0x9f, 0xc2, 0x9a, 0x0b, 0xa3, 0xe2, + 0x5d, 0x6b, 0x38, 0x77, 0xf9, 0x60, 0x33, 0xcf, 0x2e, 0x7b, 0x56, 0xb7, + 0x13, 0x93, 0x1f, 0x34, 0x97, 0x71, 0x99, 0x76, 0x02, 0x46, 0x35, 0x14, + 0x7c, 0xdc, 0xca, 0x48, 0x8a, 0x0a, 0x72, 0x4b, 0x78, 0x6d, 0x82, 0x34, + 0x96, 0x13, 0x45, 0xcf, 0x02, 0x2f, 0x50, 0x13, 0x39, 0x43, 0x89, 0xc0, + 0xe1, 0x74, 0xd7, 0x28, 0x71, 0x21, 0xe5, 0xaa, 0x97, 0x0e, 0xee, 0x46, + 0xec, 0x93, 0xf7, 0x23, 0x7d, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, + 0x01, 0x3e, 0x30, 0x82, 0x01, 0x3a, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, + 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, + 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x37, 0x5c, + 0xe3, 0x19, 0xe0, 0xb2, 0x8e, 0xa1, 0xa8, 0x4e, 0xd2, 0xcf, 0xab, 0xd0, + 0xdc, 0xe3, 0x0b, 0x5c, 0x35, 0x4d, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, + 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x08, 0x76, 0xcd, 0xcb, 0x07, + 0xff, 0x24, 0xf6, 0xc5, 0xcd, 0xed, 0xbb, 0x90, 0xbc, 0xe2, 0x84, 0x37, + 0x46, 0x75, 0xf7, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, + 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x2f, 0x06, 0x03, 0x55, + 0x1d, 0x1f, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, 0xa0, 0x22, 0xa0, 0x20, + 0x86, 0x1e, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, + 0x2e, 0x63, 0x65, 0x72, 0x74, 0x75, 0x6d, 0x2e, 0x70, 0x6c, 0x2f, 0x63, + 0x74, 0x6e, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x6b, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x5f, 0x30, 0x5d, + 0x30, 0x28, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, + 0x86, 0x1c, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x73, 0x75, 0x62, + 0x63, 0x61, 0x2e, 0x6f, 0x63, 0x73, 0x70, 0x2d, 0x63, 0x65, 0x72, 0x74, + 0x75, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x25, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, + 0x79, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x75, 0x6d, 0x2e, 0x70, 0x6c, 0x2f, + 0x63, 0x74, 0x6e, 0x63, 0x61, 0x2e, 0x63, 0x65, 0x72, 0x30, 0x39, 0x06, + 0x03, 0x55, 0x1d, 0x20, 0x04, 0x32, 0x30, 0x30, 0x30, 0x2e, 0x06, 0x04, + 0x55, 0x1d, 0x20, 0x00, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x18, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x75, + 0x6d, 0x2e, 0x70, 0x6c, 0x2f, 0x43, 0x50, 0x53, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x01, 0x00, 0x02, 0x5e, 0x8e, 0x7b, 0xe0, 0x66, 0xa1, 0xc6, + 0xab, 0x8b, 0x18, 0x1f, 0x0e, 0xb9, 0xc4, 0xcd, 0x71, 0xdb, 0x44, 0x5c, + 0x03, 0x7d, 0x65, 0xea, 0xb8, 0x47, 0xb5, 0x1e, 0xce, 0x24, 0x70, 0xa0, + 0x7f, 0xd3, 0xdf, 0x66, 0x4b, 0x8c, 0x90, 0xe2, 0xa5, 0xed, 0x9b, 0x94, + 0x36, 0xb4, 0xa8, 0xbe, 0xf0, 0x74, 0x8c, 0x26, 0x92, 0x75, 0x9d, 0x56, + 0x50, 0x9e, 0xad, 0xd0, 0x1a, 0xa0, 0xdf, 0xa4, 0x14, 0x56, 0x10, 0x75, + 0x93, 0x7a, 0xc1, 0xf4, 0x53, 0xa0, 0x76, 0x74, 0x2c, 0x72, 0xba, 0xb5, + 0xd1, 0xc9, 0xe2, 0xdc, 0x46, 0x86, 0x3f, 0x1d, 0xf6, 0x33, 0x87, 0x59, + 0xec, 0x9c, 0xdc, 0x2d, 0x1e, 0x4d, 0x43, 0x1a, 0xce, 0xba, 0xd9, 0x87, + 0x7e, 0xe2, 0x47, 0x45, 0x72, 0x3d, 0x28, 0x03, 0xc9, 0x0a, 0x4d, 0xe0, + 0x57, 0xa3, 0x5e, 0x6e, 0x7e, 0xcc, 0x5a, 0xc8, 0xc4, 0x78, 0x01, 0x57, + 0x68, 0x7a, 0x38, 0x3b, 0x53, 0x36, 0xe7, 0x92, 0x6d, 0x8a, 0x2c, 0x2f, + 0xd7, 0x8b, 0xb6, 0x34, 0xa8, 0xd1, 0xb6, 0xf8, 0x5e, 0x3b, 0xab, 0xed, + 0xa5, 0x8f, 0x39, 0x6f, 0x45, 0xad, 0xcb, 0x63, 0xed, 0x6a, 0x64, 0xc9, + 0x10, 0xa7, 0x03, 0x08, 0x12, 0x53, 0xb1, 0x1c, 0xaf, 0xca, 0xf7, 0x53, + 0xfc, 0xd8, 0x29, 0x4b, 0x1b, 0xfb, 0x38, 0xcd, 0xc0, 0x63, 0xff, 0x5f, + 0xe4, 0xb9, 0x8d, 0x5e, 0xaa, 0x2b, 0xd2, 0xc3, 0x22, 0x35, 0x31, 0xf6, + 0x30, 0x0e, 0x53, 0x32, 0xf4, 0x93, 0xc5, 0x43, 0xcb, 0xc8, 0xf0, 0x15, + 0x56, 0x8f, 0x00, 0x19, 0x87, 0xca, 0x78, 0x22, 0x8d, 0xa0, 0x2e, 0xdb, + 0x2f, 0xa0, 0xc3, 0x7e, 0x29, 0x5d, 0x91, 0x25, 0x84, 0x1d, 0x1d, 0x39, + 0xab, 0x1b, 0xc5, 0xd6, 0x91, 0xfe, 0x69, 0x0e, 0x46, 0x80, 0xbc, 0x45, + 0x7b, 0x35, 0x53, 0x2a, 0xdf, 0x00, 0xb6, 0x77, +} + +var certSet3Cert28 = []byte{ + 0x30, 0x82, 0x04, 0xaf, 0x30, 0x82, 0x03, 0x97, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x5d, 0x72, 0xfb, 0x33, 0x76, 0x20, 0xf6, 0x4c, 0x72, + 0x80, 0xdb, 0xe9, 0x12, 0x81, 0xff, 0x6a, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xa9, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, + 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, 0x06, + 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, + 0x30, 0x36, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, + 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x16, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, + 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x33, 0x31, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x31, + 0x30, 0x33, 0x30, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x44, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x15, 0x74, + 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x45, 0x56, 0x20, 0x53, 0x53, 0x4c, + 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xc4, 0xdd, 0xda, 0x94, 0x1e, 0x32, 0xb2, + 0x2e, 0xa0, 0x83, 0xc0, 0xa6, 0x7d, 0x5f, 0x65, 0x2d, 0xfd, 0x27, 0xb8, + 0x73, 0x0e, 0xf8, 0x0b, 0xa9, 0xd4, 0x56, 0x26, 0x69, 0x98, 0x67, 0x35, + 0x39, 0x64, 0x58, 0xce, 0x82, 0x6f, 0x98, 0x94, 0xd1, 0x8f, 0xe0, 0x90, + 0xd6, 0xed, 0x55, 0x4b, 0x98, 0x4b, 0xd7, 0x10, 0x59, 0x34, 0x02, 0x1b, + 0xe7, 0x51, 0x31, 0x51, 0xc4, 0x38, 0xc2, 0xbc, 0xdb, 0x03, 0x5c, 0xca, + 0xe1, 0x7c, 0xdc, 0x4f, 0x59, 0x97, 0xea, 0x07, 0x7f, 0x0f, 0x85, 0x3e, + 0x92, 0xea, 0xaa, 0xa7, 0xd9, 0xbe, 0x01, 0x41, 0xe4, 0x62, 0x56, 0x47, + 0x36, 0xbd, 0x57, 0x91, 0xe6, 0x21, 0xd3, 0xf8, 0x41, 0x0b, 0xd8, 0xba, + 0xe8, 0xed, 0x81, 0xad, 0x70, 0xc0, 0x8b, 0x6e, 0xf3, 0x89, 0x6e, 0x27, + 0x9e, 0xa6, 0xa6, 0x73, 0x59, 0xbb, 0x71, 0x00, 0xd4, 0x4f, 0x4b, 0x48, + 0xe9, 0xd5, 0xc9, 0x27, 0x36, 0x9c, 0x7c, 0x1c, 0x02, 0xaa, 0xac, 0xbd, + 0x3b, 0xd1, 0x53, 0x83, 0x6a, 0x1f, 0xe6, 0x08, 0x47, 0x33, 0xa7, 0xb1, + 0x9f, 0x02, 0xbe, 0x9b, 0x47, 0xed, 0x33, 0x04, 0xdc, 0x1c, 0x80, 0x27, + 0xd1, 0x4a, 0x33, 0xa0, 0x8c, 0xeb, 0x01, 0x47, 0xa1, 0x32, 0x90, 0x64, + 0x7b, 0xc4, 0xe0, 0x84, 0xc9, 0x32, 0xe9, 0xdd, 0x34, 0x1f, 0x8a, 0x68, + 0x67, 0xf3, 0xad, 0x10, 0x63, 0xeb, 0xee, 0x8a, 0x9a, 0xb1, 0x2a, 0x1b, + 0x26, 0x74, 0xa1, 0x2a, 0xb0, 0x8f, 0xfe, 0x52, 0x98, 0x46, 0x97, 0xcf, + 0xa3, 0x56, 0x1c, 0x6f, 0x6e, 0x99, 0x97, 0x8d, 0x26, 0x0e, 0xa9, 0xec, + 0xc2, 0x53, 0x70, 0xfc, 0x7a, 0xa5, 0x19, 0x49, 0xbd, 0xb5, 0x17, 0x82, + 0x55, 0xde, 0x97, 0xe0, 0x5d, 0x62, 0x84, 0x81, 0xf0, 0x70, 0xa8, 0x34, + 0x53, 0x4f, 0x14, 0xfd, 0x3d, 0x5d, 0x3d, 0x6f, 0xb9, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x82, 0x01, 0x35, 0x30, 0x82, 0x01, 0x31, 0x30, 0x12, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, + 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x2f, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x23, + 0x30, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x74, + 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x30, + 0x3b, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, + 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, + 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68, + 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, + 0x30, 0x32, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2b, 0x30, 0x29, 0x30, + 0x27, 0xa0, 0x25, 0xa0, 0x23, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x74, 0x31, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x50, 0x43, 0x41, + 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x29, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, + 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31, 0x1a, 0x30, 0x18, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, + 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d, 0x35, 0x33, 0x36, 0x30, + 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xf0, 0x70, + 0x51, 0xda, 0xd3, 0x2a, 0x91, 0x4f, 0x52, 0x77, 0xd7, 0x86, 0x77, 0x74, + 0x0f, 0xce, 0x71, 0x1a, 0x6c, 0x22, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, + 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x7b, 0x5b, 0x45, 0xcf, 0xaf, + 0xce, 0xcb, 0x7a, 0xfd, 0x31, 0x92, 0x1a, 0x6a, 0xb6, 0xf3, 0x46, 0xeb, + 0x57, 0x48, 0x50, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xa1, + 0x2e, 0x94, 0x3e, 0x9b, 0x16, 0xf4, 0x58, 0x1a, 0x6f, 0xc1, 0xfa, 0xc1, + 0x7e, 0x43, 0x93, 0xb2, 0xc3, 0xf7, 0x89, 0xeb, 0x13, 0x62, 0x5d, 0xdd, + 0xcc, 0x61, 0x13, 0x2b, 0x1d, 0x4e, 0x88, 0x79, 0x11, 0x62, 0x14, 0x37, + 0x30, 0x46, 0xff, 0x89, 0x62, 0x10, 0x85, 0x2a, 0x87, 0x1e, 0xf8, 0xe2, + 0xaf, 0xfe, 0x93, 0x02, 0x93, 0xca, 0xf2, 0xe9, 0x46, 0x03, 0x6b, 0xa1, + 0x1a, 0xac, 0xd5, 0xf0, 0x80, 0x1b, 0x98, 0x6f, 0xb8, 0x3a, 0x50, 0xf8, + 0x54, 0x71, 0x06, 0x03, 0xe7, 0x84, 0xcc, 0x8e, 0x61, 0xd2, 0x5f, 0x4d, + 0x0c, 0x97, 0x02, 0x65, 0xb5, 0x8c, 0x26, 0xbc, 0x05, 0x98, 0xf4, 0xdc, + 0xc6, 0xaf, 0xe4, 0x57, 0x7f, 0xe3, 0xdc, 0xa1, 0xd7, 0x27, 0x47, 0x2a, + 0xe0, 0x2c, 0x3f, 0x09, 0x74, 0xdc, 0x5a, 0xe5, 0xb5, 0x7c, 0xfa, 0x82, + 0x9a, 0x15, 0xfa, 0x74, 0x2b, 0x84, 0x2e, 0x6b, 0xac, 0xef, 0x35, 0xa6, + 0x30, 0xfa, 0x47, 0x4a, 0xaa, 0x36, 0x44, 0xf6, 0x5a, 0x91, 0x07, 0xd3, + 0xe4, 0x4e, 0x97, 0x3f, 0xa6, 0x53, 0xd8, 0x29, 0x33, 0x32, 0x6f, 0x8b, + 0x3d, 0xb5, 0xa5, 0x0d, 0xe5, 0xe4, 0x8a, 0xe8, 0xf5, 0xc0, 0xfa, 0xaf, + 0xd8, 0x37, 0x28, 0x27, 0xc3, 0xed, 0x34, 0x31, 0xd9, 0x7c, 0xa6, 0xaf, + 0x4d, 0x12, 0x4f, 0xd0, 0x2b, 0x92, 0x9c, 0x69, 0x95, 0xf2, 0x28, 0xa6, + 0xfe, 0xa8, 0xc6, 0xe0, 0x2c, 0x4d, 0x36, 0xeb, 0x11, 0x34, 0xd6, 0xe1, + 0x81, 0x99, 0x9d, 0x41, 0xf2, 0xe7, 0xc5, 0x57, 0x05, 0x0e, 0x19, 0xca, + 0xaf, 0x42, 0x39, 0x1f, 0xa7, 0x27, 0x5e, 0xe0, 0x0a, 0x17, 0xb8, 0xae, + 0x47, 0xab, 0x92, 0xf1, 0x8a, 0x04, 0xdf, 0x30, 0xe0, 0xbb, 0x4f, 0x8a, + 0xf9, 0x1b, 0x88, 0x4f, 0x03, 0xb4, 0x25, 0x7a, 0x78, 0xde, 0x2e, 0x7d, + 0x29, 0xd1, 0x31, +} + +var certSet3Cert29 = []byte{ + 0x30, 0x82, 0x04, 0xb1, 0x30, 0x82, 0x03, 0x99, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x04, 0xe1, 0xe7, 0xa4, 0xdc, 0x5c, 0xf2, 0xf3, 0x6d, + 0xc0, 0x2b, 0x42, 0xb8, 0x5d, 0x15, 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x6c, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, + 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, + 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x22, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48, + 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, + 0x65, 0x20, 0x45, 0x56, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, + 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x32, 0x32, 0x31, 0x32, + 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x38, 0x31, 0x30, 0x32, + 0x32, 0x31, 0x32, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x70, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44, 0x69, + 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31, 0x19, + 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, 0x77, 0x77, + 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, + 0x6d, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x26, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x53, 0x48, 0x41, + 0x32, 0x20, 0x48, 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, + 0x61, 0x6e, 0x63, 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, + 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xb6, + 0xe0, 0x2f, 0xc2, 0x24, 0x06, 0xc8, 0x6d, 0x04, 0x5f, 0xd7, 0xef, 0x0a, + 0x64, 0x06, 0xb2, 0x7d, 0x22, 0x26, 0x65, 0x16, 0xae, 0x42, 0x40, 0x9b, + 0xce, 0xdc, 0x9f, 0x9f, 0x76, 0x07, 0x3e, 0xc3, 0x30, 0x55, 0x87, 0x19, + 0xb9, 0x4f, 0x94, 0x0e, 0x5a, 0x94, 0x1f, 0x55, 0x56, 0xb4, 0xc2, 0x02, + 0x2a, 0xaf, 0xd0, 0x98, 0xee, 0x0b, 0x40, 0xd7, 0xc4, 0xd0, 0x3b, 0x72, + 0xc8, 0x14, 0x9e, 0xef, 0x90, 0xb1, 0x11, 0xa9, 0xae, 0xd2, 0xc8, 0xb8, + 0x43, 0x3a, 0xd9, 0x0b, 0x0b, 0xd5, 0xd5, 0x95, 0xf5, 0x40, 0xaf, 0xc8, + 0x1d, 0xed, 0x4d, 0x9c, 0x5f, 0x57, 0xb7, 0x86, 0x50, 0x68, 0x99, 0xf5, + 0x8a, 0xda, 0xd2, 0xc7, 0x05, 0x1f, 0xa8, 0x97, 0xc9, 0xdc, 0xa4, 0xb1, + 0x82, 0x84, 0x2d, 0xc6, 0xad, 0xa5, 0x9c, 0xc7, 0x19, 0x82, 0xa6, 0x85, + 0x0f, 0x5e, 0x44, 0x58, 0x2a, 0x37, 0x8f, 0xfd, 0x35, 0xf1, 0x0b, 0x08, + 0x27, 0x32, 0x5a, 0xf5, 0xbb, 0x8b, 0x9e, 0xa4, 0xbd, 0x51, 0xd0, 0x27, + 0xe2, 0xdd, 0x3b, 0x42, 0x33, 0xa3, 0x05, 0x28, 0xc4, 0xbb, 0x28, 0xcc, + 0x9a, 0xac, 0x2b, 0x23, 0x0d, 0x78, 0xc6, 0x7b, 0xe6, 0x5e, 0x71, 0xb7, + 0x4a, 0x3e, 0x08, 0xfb, 0x81, 0xb7, 0x16, 0x16, 0xa1, 0x9d, 0x23, 0x12, + 0x4d, 0xe5, 0xd7, 0x92, 0x08, 0xac, 0x75, 0xa4, 0x9c, 0xba, 0xcd, 0x17, + 0xb2, 0x1e, 0x44, 0x35, 0x65, 0x7f, 0x53, 0x25, 0x39, 0xd1, 0x1c, 0x0a, + 0x9a, 0x63, 0x1b, 0x19, 0x92, 0x74, 0x68, 0x0a, 0x37, 0xc2, 0xc2, 0x52, + 0x48, 0xcb, 0x39, 0x5a, 0xa2, 0xb6, 0xe1, 0x5d, 0xc1, 0xdd, 0xa0, 0x20, + 0xb8, 0x21, 0xa2, 0x93, 0x26, 0x6f, 0x14, 0x4a, 0x21, 0x41, 0xc7, 0xed, + 0x6d, 0x9b, 0xf2, 0x48, 0x2f, 0xf3, 0x03, 0xf5, 0xa2, 0x68, 0x92, 0x53, + 0x2f, 0x5e, 0xe3, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x49, + 0x30, 0x82, 0x01, 0x45, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, + 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, + 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, + 0x03, 0x02, 0x01, 0x86, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, + 0x16, 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, + 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x30, + 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, + 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, + 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x4b, 0x06, 0x03, 0x55, 0x1d, 0x1f, + 0x04, 0x44, 0x30, 0x42, 0x30, 0x40, 0xa0, 0x3e, 0xa0, 0x3c, 0x86, 0x3a, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x34, 0x2e, + 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x48, 0x69, 0x67, + 0x68, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x45, 0x56, + 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3d, + 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06, + 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x2a, 0x30, 0x28, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, 0x74, + 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, + 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x50, + 0x53, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0x51, 0x68, 0xff, 0x90, 0xaf, 0x02, 0x07, 0x75, 0x3c, 0xcc, 0xd9, 0x65, + 0x64, 0x62, 0xa2, 0x12, 0xb8, 0x59, 0x72, 0x3b, 0x30, 0x1f, 0x06, 0x03, + 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xb1, 0x3e, 0xc3, + 0x69, 0x03, 0xf8, 0xbf, 0x47, 0x01, 0xd4, 0x98, 0x26, 0x1a, 0x08, 0x02, + 0xef, 0x63, 0x64, 0x2b, 0xc3, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, + 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, + 0x00, 0x18, 0x8a, 0x95, 0x89, 0x03, 0xe6, 0x6d, 0xdf, 0x5c, 0xfc, 0x1d, + 0x68, 0xea, 0x4a, 0x8f, 0x83, 0xd6, 0x51, 0x2f, 0x8d, 0x6b, 0x44, 0x16, + 0x9e, 0xac, 0x63, 0xf5, 0xd2, 0x6e, 0x6c, 0x84, 0x99, 0x8b, 0xaa, 0x81, + 0x71, 0x84, 0x5b, 0xed, 0x34, 0x4e, 0xb0, 0xb7, 0x79, 0x92, 0x29, 0xcc, + 0x2d, 0x80, 0x6a, 0xf0, 0x8e, 0x20, 0xe1, 0x79, 0xa4, 0xfe, 0x03, 0x47, + 0x13, 0xea, 0xf5, 0x86, 0xca, 0x59, 0x71, 0x7d, 0xf4, 0x04, 0x96, 0x6b, + 0xd3, 0x59, 0x58, 0x3d, 0xfe, 0xd3, 0x31, 0x25, 0x5c, 0x18, 0x38, 0x84, + 0xa3, 0xe6, 0x9f, 0x82, 0xfd, 0x8c, 0x5b, 0x98, 0x31, 0x4e, 0xcd, 0x78, + 0x9e, 0x1a, 0xfd, 0x85, 0xcb, 0x49, 0xaa, 0xf2, 0x27, 0x8b, 0x99, 0x72, + 0xfc, 0x3e, 0xaa, 0xd5, 0x41, 0x0b, 0xda, 0xd5, 0x36, 0xa1, 0xbf, 0x1c, + 0x6e, 0x47, 0x49, 0x7f, 0x5e, 0xd9, 0x48, 0x7c, 0x03, 0xd9, 0xfd, 0x8b, + 0x49, 0xa0, 0x98, 0x26, 0x42, 0x40, 0xeb, 0xd6, 0x92, 0x11, 0xa4, 0x64, + 0x0a, 0x57, 0x54, 0xc4, 0xf5, 0x1d, 0xd6, 0x02, 0x5e, 0x6b, 0xac, 0xee, + 0xc4, 0x80, 0x9a, 0x12, 0x72, 0xfa, 0x56, 0x93, 0xd7, 0xff, 0xbf, 0x30, + 0x85, 0x06, 0x30, 0xbf, 0x0b, 0x7f, 0x4e, 0xff, 0x57, 0x05, 0x9d, 0x24, + 0xed, 0x85, 0xc3, 0x2b, 0xfb, 0xa6, 0x75, 0xa8, 0xac, 0x2d, 0x16, 0xef, + 0x7d, 0x79, 0x27, 0xb2, 0xeb, 0xc2, 0x9d, 0x0b, 0x07, 0xea, 0xaa, 0x85, + 0xd3, 0x01, 0xa3, 0x20, 0x28, 0x41, 0x59, 0x43, 0x28, 0xd2, 0x81, 0xe3, + 0xaa, 0xf6, 0xec, 0x7b, 0x3b, 0x77, 0xb6, 0x40, 0x62, 0x80, 0x05, 0x41, + 0x45, 0x01, 0xef, 0x17, 0x06, 0x3e, 0xde, 0xc0, 0x33, 0x9b, 0x67, 0xd3, + 0x61, 0x2e, 0x72, 0x87, 0xe4, 0x69, 0xfc, 0x12, 0x00, 0x57, 0x40, 0x1e, + 0x70, 0xf5, 0x1e, 0xc9, 0xb4, +} + +var certSet3Cert30 = []byte{ + 0x30, 0x82, 0x04, 0xb2, 0x30, 0x82, 0x03, 0x9a, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x16, 0x87, 0xd6, 0x88, 0x6d, 0xe2, 0x30, 0x06, 0x85, + 0x23, 0x3d, 0xbf, 0x11, 0xbf, 0x65, 0x97, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xa9, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, + 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, 0x06, + 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, + 0x30, 0x36, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, + 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x16, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, + 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x33, 0x31, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x31, + 0x30, 0x33, 0x30, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x41, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x74, + 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, + 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, + 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, + 0x01, 0x00, 0xb2, 0xfc, 0x06, 0xfb, 0x04, 0x93, 0xd2, 0xea, 0x59, 0x20, + 0x3b, 0x44, 0x85, 0x97, 0x52, 0x39, 0xe7, 0x10, 0xf0, 0x7a, 0xe0, 0xb0, + 0x94, 0x40, 0xda, 0x46, 0xf8, 0x0c, 0x28, 0xbb, 0xb9, 0xce, 0x60, 0x38, + 0x3f, 0xd2, 0xd8, 0x11, 0x42, 0x1b, 0x91, 0xad, 0x49, 0xee, 0x8f, 0xc7, + 0xde, 0x6c, 0xde, 0x37, 0x6f, 0xfd, 0x8b, 0x20, 0x3c, 0x6d, 0xe7, 0x74, + 0xd3, 0xdc, 0xd5, 0x24, 0x88, 0x41, 0x80, 0x89, 0xee, 0x36, 0xbe, 0xc4, + 0xd5, 0xbe, 0x8d, 0x53, 0x13, 0xaa, 0xe4, 0xa5, 0xb8, 0x93, 0x0a, 0xbe, + 0xec, 0xda, 0xcd, 0x3c, 0xd4, 0x32, 0x56, 0xef, 0xd0, 0x4e, 0xa0, 0xb8, + 0x97, 0xbb, 0x39, 0x50, 0x1e, 0x6e, 0x65, 0xc3, 0xfd, 0xb2, 0xce, 0xe0, + 0x59, 0xa9, 0x48, 0x09, 0xc6, 0xfe, 0xbe, 0xae, 0xfc, 0x3e, 0x3b, 0x81, + 0x20, 0x97, 0x8b, 0x8f, 0x46, 0xdf, 0x60, 0x64, 0x07, 0x75, 0xbb, 0x1b, + 0x86, 0x38, 0x9f, 0x47, 0x7b, 0x34, 0xce, 0xa1, 0xd1, 0x97, 0xad, 0x76, + 0xd8, 0x9f, 0xb7, 0x26, 0xdb, 0x79, 0x80, 0x36, 0x48, 0xf2, 0xc5, 0x37, + 0xf8, 0xd9, 0x32, 0xae, 0x7c, 0xa4, 0x53, 0x81, 0xc7, 0x99, 0xa1, 0x54, + 0x38, 0x2f, 0x4f, 0x75, 0xa0, 0xbb, 0x5a, 0xa5, 0xbb, 0xcd, 0xac, 0x02, + 0x5b, 0x19, 0x02, 0xd5, 0x13, 0x18, 0xa7, 0xce, 0xac, 0x74, 0x55, 0x12, + 0x05, 0x8b, 0x9b, 0xa2, 0x95, 0x46, 0x64, 0x72, 0x38, 0xcd, 0x5a, 0x1b, + 0x3a, 0x16, 0xa7, 0xbe, 0x71, 0x99, 0x8c, 0x54, 0x03, 0xb8, 0x96, 0x6c, + 0x01, 0xd3, 0x3e, 0x06, 0x98, 0x3f, 0x21, 0x81, 0x3b, 0x02, 0x7e, 0x00, + 0x47, 0x53, 0x01, 0x1e, 0x0e, 0x46, 0x43, 0xfb, 0x4b, 0x2d, 0xdc, 0x0b, + 0x1a, 0xe8, 0x2f, 0x98, 0xf8, 0x7e, 0xd1, 0x99, 0xab, 0x13, 0x6c, 0xa4, + 0x17, 0xde, 0x6f, 0xf6, 0x15, 0xf5, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, + 0x82, 0x01, 0x3b, 0x30, 0x82, 0x01, 0x37, 0x30, 0x12, 0x06, 0x03, 0x55, + 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, + 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, + 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x32, 0x06, 0x03, 0x55, + 0x1d, 0x1f, 0x04, 0x2b, 0x30, 0x29, 0x30, 0x27, 0xa0, 0x25, 0xa0, 0x23, + 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x74, 0x31, 0x2e, + 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, + 0x61, 0x77, 0x74, 0x65, 0x50, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, + 0x2f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, + 0x23, 0x30, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x74, 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x30, 0x41, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3a, 0x30, 0x38, 0x30, + 0x36, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07, + 0x36, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, + 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x29, 0x06, 0x03, 0x55, + 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31, 0x1a, + 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79, 0x6d, + 0x61, 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d, 0x35, + 0x33, 0x37, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, + 0x14, 0xc2, 0x4f, 0x48, 0x57, 0xfc, 0xd1, 0x4f, 0x9a, 0xc0, 0x5d, 0x38, + 0x7d, 0x0e, 0x05, 0xdb, 0xd9, 0x2e, 0xb5, 0x52, 0x60, 0x30, 0x1f, 0x06, + 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x7b, 0x5b, + 0x45, 0xcf, 0xaf, 0xce, 0xcb, 0x7a, 0xfd, 0x31, 0x92, 0x1a, 0x6a, 0xb6, + 0xf3, 0x46, 0xeb, 0x57, 0x48, 0x50, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x01, 0x00, 0x8d, 0x06, 0xde, 0x43, 0xc9, 0x76, 0x02, 0xca, 0xd9, 0x23, + 0x97, 0x5e, 0xf3, 0x63, 0xd7, 0x7d, 0x44, 0xc2, 0x0f, 0x6b, 0x0a, 0xf5, + 0x07, 0xe5, 0x8b, 0xb8, 0xfa, 0xe0, 0xa3, 0xfa, 0x6b, 0x80, 0x92, 0xb5, + 0x03, 0x2c, 0xc5, 0x37, 0xe0, 0xc2, 0xe5, 0x95, 0xb5, 0x92, 0x70, 0x18, + 0x28, 0x42, 0x94, 0xee, 0x4b, 0x77, 0x6a, 0x01, 0x0f, 0x8b, 0x23, 0xec, + 0x56, 0x4d, 0xf4, 0x00, 0x69, 0xe5, 0x84, 0xc8, 0xe2, 0xea, 0xde, 0x5b, + 0x3e, 0xf6, 0x3c, 0x07, 0x3a, 0x94, 0xca, 0x6c, 0x27, 0xb1, 0xcc, 0x83, + 0x1a, 0x60, 0x71, 0x27, 0xd2, 0xbf, 0x02, 0xf5, 0x1e, 0x44, 0xd3, 0x48, + 0xd5, 0xa6, 0xd3, 0x76, 0x21, 0x00, 0x9c, 0xfa, 0x98, 0x64, 0xeb, 0x17, + 0x36, 0x3f, 0xeb, 0x1b, 0x3c, 0x3e, 0xa6, 0xb1, 0xd9, 0x58, 0x06, 0x0e, + 0x72, 0xd9, 0x68, 0xbe, 0xf1, 0xa7, 0x20, 0xd7, 0x52, 0xe4, 0xa4, 0x77, + 0x1f, 0x71, 0x70, 0x9d, 0x55, 0x35, 0x85, 0x37, 0xe1, 0x1d, 0x4d, 0x94, + 0xc2, 0x70, 0x7f, 0x95, 0x40, 0x6e, 0x4b, 0x7d, 0xb2, 0xb4, 0x29, 0x2a, + 0x03, 0x79, 0xc8, 0xb9, 0x4c, 0x67, 0x61, 0x04, 0xa0, 0x8b, 0x27, 0xff, + 0x59, 0x00, 0xeb, 0x55, 0x7f, 0xc6, 0xb7, 0x33, 0x35, 0x2d, 0x5e, 0x4e, + 0xac, 0xb8, 0xea, 0x12, 0xc5, 0xe8, 0xf7, 0xb9, 0xab, 0xbe, 0x74, 0x92, + 0x2c, 0xb7, 0xd9, 0x4d, 0xca, 0x84, 0x2f, 0x1c, 0xc2, 0xf0, 0x72, 0x7c, + 0xb2, 0x31, 0x6e, 0xcf, 0x80, 0xe5, 0x88, 0x07, 0x36, 0x51, 0x7b, 0xba, + 0x61, 0xaf, 0x6d, 0x8d, 0x23, 0x5b, 0x34, 0xa3, 0x95, 0xbc, 0xa2, 0x31, + 0x7f, 0xf2, 0xf5, 0xe7, 0xb7, 0xe8, 0xef, 0xc4, 0xb5, 0x27, 0x32, 0xe9, + 0xf7, 0x9e, 0x69, 0xc7, 0x2b, 0xe8, 0xbe, 0xbb, 0x0c, 0xaa, 0xe7, 0xea, + 0x60, 0x12, 0xea, 0x26, 0x8a, 0x78, +} + +var certSet3Cert31 = []byte{ + 0x30, 0x82, 0x04, 0xb4, 0x30, 0x82, 0x03, 0x9c, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x11, 0x00, 0x93, 0x92, 0x85, 0x40, 0x01, 0x65, 0x71, 0x5f, + 0x94, 0x7f, 0x28, 0x8f, 0xef, 0xc9, 0x9b, 0x28, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, + 0x3e, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x50, 0x4c, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x12, 0x55, 0x6e, 0x69, 0x7a, 0x65, 0x74, 0x6f, 0x20, 0x53, 0x70, 0x2e, + 0x20, 0x7a, 0x20, 0x6f, 0x2e, 0x6f, 0x2e, 0x31, 0x12, 0x30, 0x10, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x09, 0x43, 0x65, 0x72, 0x74, 0x75, 0x6d, + 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x38, 0x31, 0x30, 0x32, + 0x32, 0x31, 0x32, 0x30, 0x37, 0x33, 0x37, 0x5a, 0x17, 0x0d, 0x32, 0x37, + 0x30, 0x36, 0x31, 0x30, 0x31, 0x30, 0x34, 0x36, 0x33, 0x39, 0x5a, 0x30, + 0x7e, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x50, 0x4c, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x19, 0x55, 0x6e, 0x69, 0x7a, 0x65, 0x74, 0x6f, 0x20, 0x54, 0x65, 0x63, + 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x20, 0x53, 0x2e, + 0x41, 0x2e, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x1e, 0x43, 0x65, 0x72, 0x74, 0x75, 0x6d, 0x20, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x22, 0x30, 0x20, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x19, 0x43, 0x65, 0x72, 0x74, 0x75, 0x6d, + 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x20, 0x4e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, + 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, + 0x82, 0x01, 0x01, 0x00, 0xe3, 0xfb, 0x7d, 0xa3, 0x72, 0xba, 0xc2, 0xf0, + 0xc9, 0x14, 0x87, 0xf5, 0x6b, 0x01, 0x4e, 0xe1, 0x6e, 0x40, 0x07, 0xba, + 0x6d, 0x27, 0x5d, 0x7f, 0xf7, 0x5b, 0x2d, 0xb3, 0x5a, 0xc7, 0x51, 0x5f, + 0xab, 0xa4, 0x32, 0xa6, 0x61, 0x87, 0xb6, 0x6e, 0x0f, 0x86, 0xd2, 0x30, + 0x02, 0x97, 0xf8, 0xd7, 0x69, 0x57, 0xa1, 0x18, 0x39, 0x5d, 0x6a, 0x64, + 0x79, 0xc6, 0x01, 0x59, 0xac, 0x3c, 0x31, 0x4a, 0x38, 0x7c, 0xd2, 0x04, + 0xd2, 0x4b, 0x28, 0xe8, 0x20, 0x5f, 0x3b, 0x07, 0xa2, 0xcc, 0x4d, 0x73, + 0xdb, 0xf3, 0xae, 0x4f, 0xc7, 0x56, 0xd5, 0x5a, 0xa7, 0x96, 0x89, 0xfa, + 0xf3, 0xab, 0x68, 0xd4, 0x23, 0x86, 0x59, 0x27, 0xcf, 0x09, 0x27, 0xbc, + 0xac, 0x6e, 0x72, 0x83, 0x1c, 0x30, 0x72, 0xdf, 0xe0, 0xa2, 0xe9, 0xd2, + 0xe1, 0x74, 0x75, 0x19, 0xbd, 0x2a, 0x9e, 0x7b, 0x15, 0x54, 0x04, 0x1b, + 0xd7, 0x43, 0x39, 0xad, 0x55, 0x28, 0xc5, 0xe2, 0x1a, 0xbb, 0xf4, 0xc0, + 0xe4, 0xae, 0x38, 0x49, 0x33, 0xcc, 0x76, 0x85, 0x9f, 0x39, 0x45, 0xd2, + 0xa4, 0x9e, 0xf2, 0x12, 0x8c, 0x51, 0xf8, 0x7c, 0xe4, 0x2d, 0x7f, 0xf5, + 0xac, 0x5f, 0xeb, 0x16, 0x9f, 0xb1, 0x2d, 0xd1, 0xba, 0xcc, 0x91, 0x42, + 0x77, 0x4c, 0x25, 0xc9, 0x90, 0x38, 0x6f, 0xdb, 0xf0, 0xcc, 0xfb, 0x8e, + 0x1e, 0x97, 0x59, 0x3e, 0xd5, 0x60, 0x4e, 0xe6, 0x05, 0x28, 0xed, 0x49, + 0x79, 0x13, 0x4b, 0xba, 0x48, 0xdb, 0x2f, 0xf9, 0x72, 0xd3, 0x39, 0xca, + 0xfe, 0x1f, 0xd8, 0x34, 0x72, 0xf5, 0xb4, 0x40, 0xcf, 0x31, 0x01, 0xc3, + 0xec, 0xde, 0x11, 0x2d, 0x17, 0x5d, 0x1f, 0xb8, 0x50, 0xd1, 0x5e, 0x19, + 0xa7, 0x69, 0xde, 0x07, 0x33, 0x28, 0xca, 0x50, 0x95, 0xf9, 0xa7, 0x54, + 0xcb, 0x54, 0x86, 0x50, 0x45, 0xa9, 0xf9, 0x49, 0x02, 0x03, 0x01, 0x00, + 0x01, 0xa3, 0x82, 0x01, 0x6b, 0x30, 0x82, 0x01, 0x67, 0x30, 0x0f, 0x06, + 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, + 0x01, 0xff, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, + 0x14, 0x08, 0x76, 0xcd, 0xcb, 0x07, 0xff, 0x24, 0xf6, 0xc5, 0xcd, 0xed, + 0xbb, 0x90, 0xbc, 0xe2, 0x84, 0x37, 0x46, 0x75, 0xf7, 0x30, 0x52, 0x06, + 0x03, 0x55, 0x1d, 0x23, 0x04, 0x4b, 0x30, 0x49, 0xa1, 0x42, 0xa4, 0x40, + 0x30, 0x3e, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x50, 0x4c, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x0a, + 0x13, 0x12, 0x55, 0x6e, 0x69, 0x7a, 0x65, 0x74, 0x6f, 0x20, 0x53, 0x70, + 0x2e, 0x20, 0x7a, 0x20, 0x6f, 0x2e, 0x6f, 0x2e, 0x31, 0x12, 0x30, 0x10, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x09, 0x43, 0x65, 0x72, 0x74, 0x75, + 0x6d, 0x20, 0x43, 0x41, 0x82, 0x03, 0x01, 0x00, 0x20, 0x30, 0x0e, 0x06, + 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, + 0x06, 0x30, 0x2c, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x25, 0x30, 0x23, + 0x30, 0x21, 0xa0, 0x1f, 0xa0, 0x1d, 0x86, 0x1b, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x75, + 0x6d, 0x2e, 0x70, 0x6c, 0x2f, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, + 0x68, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, + 0x5c, 0x30, 0x5a, 0x30, 0x28, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x1c, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x73, 0x75, 0x62, 0x63, 0x61, 0x2e, 0x6f, 0x63, 0x73, 0x70, 0x2d, 0x63, + 0x65, 0x72, 0x74, 0x75, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x2e, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x22, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x75, 0x6d, 0x2e, + 0x70, 0x6c, 0x2f, 0x63, 0x61, 0x2e, 0x63, 0x65, 0x72, 0x30, 0x39, 0x06, + 0x03, 0x55, 0x1d, 0x20, 0x04, 0x32, 0x30, 0x30, 0x30, 0x2e, 0x06, 0x04, + 0x55, 0x1d, 0x20, 0x00, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x18, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x75, + 0x6d, 0x2e, 0x70, 0x6c, 0x2f, 0x43, 0x50, 0x53, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x01, 0x00, 0x8d, 0xe6, 0xfd, 0x40, 0x66, 0xa3, 0x4c, 0x9c, + 0xa7, 0xab, 0xa1, 0xda, 0x84, 0xdd, 0x1c, 0x30, 0x07, 0xe6, 0xdb, 0xc7, + 0x2d, 0xec, 0x83, 0xa1, 0x56, 0xe4, 0x1d, 0x3c, 0x26, 0xa1, 0xa5, 0x09, + 0x2b, 0xe8, 0x7d, 0x62, 0xbe, 0xb2, 0x75, 0x94, 0xdd, 0x08, 0xf2, 0x7f, + 0x28, 0x41, 0xe4, 0x80, 0x67, 0x02, 0x4e, 0x8a, 0x8f, 0xc3, 0x35, 0xd0, + 0xd5, 0xa9, 0x27, 0x28, 0xea, 0xd2, 0xf4, 0xab, 0x06, 0x86, 0x43, 0xae, + 0x8c, 0xe3, 0xf9, 0x88, 0x7d, 0xe0, 0xdb, 0xbd, 0x42, 0x81, 0x80, 0x02, + 0x12, 0x75, 0xb2, 0xe8, 0x17, 0x71, 0xab, 0x21, 0x95, 0x31, 0x46, 0x42, + 0x0d, 0x88, 0x10, 0x39, 0xd3, 0x6f, 0xec, 0x2f, 0x42, 0xea, 0x40, 0x53, + 0x62, 0xbf, 0xeb, 0xca, 0x78, 0x9e, 0xab, 0xa2, 0xd5, 0x2e, 0x05, 0xea, + 0x33, 0xab, 0xe9, 0xd6, 0x97, 0x94, 0x42, 0x5e, 0x04, 0xed, 0x2c, 0xed, + 0x6a, 0x9c, 0x7a, 0x95, 0x7d, 0x05, 0x2a, 0x05, 0x7f, 0x08, 0x5d, 0x66, + 0xad, 0x61, 0xd4, 0x76, 0xac, 0x75, 0x96, 0x97, 0x73, 0x63, 0xbd, 0x1a, + 0x41, 0x59, 0x29, 0xa5, 0x5e, 0x22, 0x83, 0xc3, 0x8b, 0x59, 0xfa, 0x9a, + 0xa2, 0xf6, 0xbd, 0x30, 0xbf, 0x72, 0x1d, 0x1c, 0x99, 0x86, 0x9c, 0xf2, + 0x85, 0x3c, 0x1d, 0xf7, 0x26, 0x96, 0x2f, 0x2e, 0xf9, 0x02, 0xb1, 0xb5, + 0xa9, 0x50, 0xe8, 0x38, 0xfa, 0x9b, 0x0a, 0x5e, 0xb4, 0x04, 0xc0, 0xce, + 0x4e, 0x39, 0x2c, 0xca, 0x0b, 0x5b, 0x62, 0xf0, 0x4d, 0x58, 0x50, 0x34, + 0x99, 0xe6, 0x9a, 0x2c, 0xd2, 0x90, 0xd7, 0x09, 0x81, 0xd6, 0xc0, 0xaa, + 0x5e, 0xce, 0xfe, 0xd2, 0xf7, 0xa1, 0xba, 0x4b, 0xd9, 0xd6, 0x86, 0x8e, + 0x19, 0x1f, 0xa6, 0x06, 0x47, 0x42, 0x72, 0xe0, 0x56, 0x0a, 0x00, 0x1c, + 0x78, 0xb9, 0x8d, 0xcc, 0x99, 0x04, 0x37, 0x49, +} + +var certSet3Cert32 = []byte{ + 0x30, 0x82, 0x04, 0xb5, 0x30, 0x82, 0x03, 0x9d, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x48, 0xe9, 0x94, 0x40, 0xd4, 0x36, 0x49, 0x1c, 0xb8, + 0xb8, 0x82, 0x3d, 0x09, 0x43, 0x94, 0xc7, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0x98, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x30, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x38, 0x20, 0x47, 0x65, + 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, + 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, + 0x79, 0x31, 0x36, 0x30, 0x34, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2d, + 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x50, 0x72, 0x69, + 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x1e, 0x17, + 0x0d, 0x31, 0x34, 0x30, 0x36, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x36, 0x30, 0x39, 0x32, 0x33, + 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x47, 0x31, 0x0b, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, + 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x20, 0x30, 0x1e, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x17, 0x52, 0x61, 0x70, 0x69, 0x64, + 0x53, 0x53, 0x4c, 0x20, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x43, + 0x41, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, + 0x01, 0x01, 0x00, 0xc4, 0x95, 0x63, 0x28, 0xd0, 0x4e, 0x30, 0x45, 0xaf, + 0x8b, 0x97, 0x34, 0x14, 0x45, 0xf8, 0x5c, 0x58, 0x4a, 0xfa, 0x33, 0x8e, + 0x6e, 0x9c, 0x60, 0xab, 0xf3, 0x86, 0xff, 0x34, 0x74, 0xb2, 0x2b, 0xbe, + 0xa1, 0x8c, 0xd5, 0xa2, 0xa3, 0x60, 0x7a, 0x40, 0xb9, 0xe1, 0xfc, 0x22, + 0xca, 0x67, 0xba, 0x60, 0xaa, 0xc7, 0x9a, 0xf9, 0x06, 0x7f, 0xee, 0xf7, + 0xba, 0x85, 0x05, 0xb0, 0x03, 0xff, 0x72, 0xae, 0x15, 0x41, 0x4a, 0x98, + 0x64, 0xd7, 0x17, 0x4b, 0x54, 0xef, 0x05, 0xc6, 0x98, 0x07, 0x93, 0x27, + 0x3e, 0x4f, 0xdc, 0x0f, 0xc6, 0x7b, 0x8b, 0xe7, 0xf3, 0x06, 0x5e, 0x8d, + 0xe8, 0xb4, 0xae, 0x29, 0xb4, 0x1e, 0x1e, 0x2d, 0x16, 0x90, 0xd3, 0xea, + 0xaa, 0xe7, 0x8c, 0x3b, 0x6d, 0xaf, 0x36, 0x59, 0xff, 0xc5, 0x0a, 0xfa, + 0xc7, 0x4c, 0xbd, 0x36, 0x8b, 0x64, 0xc4, 0x4a, 0xf5, 0xce, 0x33, 0xf9, + 0x07, 0xbe, 0x7f, 0x45, 0x90, 0xa8, 0x08, 0x14, 0xb0, 0xd0, 0xa5, 0x4f, + 0xdf, 0x82, 0x80, 0xda, 0x1b, 0xee, 0xc3, 0x13, 0xb0, 0x98, 0xf5, 0x0f, + 0xf9, 0x7e, 0x76, 0xb5, 0xe6, 0xb9, 0x5d, 0x68, 0xb9, 0x5c, 0x50, 0x90, + 0x89, 0xa4, 0x36, 0xb1, 0x70, 0x16, 0xea, 0xb1, 0x10, 0xb5, 0x6a, 0x76, + 0xdf, 0xe1, 0xbb, 0xfc, 0x78, 0xf2, 0x72, 0x99, 0xcf, 0xc9, 0xa2, 0xd4, + 0x73, 0x54, 0x77, 0xbf, 0xc0, 0x39, 0x77, 0xe5, 0xae, 0x12, 0xc5, 0x78, + 0x5a, 0x19, 0x45, 0xd4, 0x41, 0x19, 0xd3, 0x7c, 0xf5, 0x6f, 0x99, 0x6b, + 0xd7, 0x8b, 0xbc, 0x2d, 0x09, 0x9d, 0x4b, 0x10, 0x61, 0xc0, 0xda, 0x52, + 0xc3, 0xaf, 0x22, 0x43, 0xc6, 0xeb, 0x37, 0x7e, 0x63, 0x74, 0x30, 0x0d, + 0x6a, 0x71, 0x8e, 0xde, 0x5d, 0x5b, 0x8a, 0xc8, 0xc5, 0xd7, 0x9b, 0x29, + 0xe8, 0xae, 0xb6, 0x25, 0x61, 0x81, 0xeb, 0x02, 0x03, 0x01, 0x00, 0x01, + 0xa3, 0x82, 0x01, 0x49, 0x30, 0x82, 0x01, 0x45, 0x30, 0x2e, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x22, 0x30, 0x20, + 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, + 0x86, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, 0x73, + 0x79, 0x6d, 0x63, 0x64, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x12, 0x06, 0x03, + 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, + 0xff, 0x02, 0x01, 0x00, 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, + 0x45, 0x30, 0x43, 0x30, 0x41, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, + 0xf8, 0x45, 0x01, 0x07, 0x36, 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x36, + 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2f, 0x30, 0x2d, 0x30, 0x2b, 0xa0, + 0x29, 0xa0, 0x27, 0x86, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x67, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x50, 0x43, 0x41, 0x2d, + 0x47, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x29, + 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, + 0x1c, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, + 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, + 0x31, 0x2d, 0x36, 0x39, 0x37, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, + 0x04, 0x16, 0x04, 0x14, 0x4c, 0xf4, 0xbf, 0xe8, 0x3b, 0xbe, 0xc2, 0x24, + 0xf3, 0x1b, 0x47, 0x3b, 0xb5, 0x6e, 0x48, 0x8e, 0x16, 0xab, 0xaf, 0x12, + 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, + 0x14, 0xc4, 0x79, 0xca, 0x8e, 0xa1, 0x4e, 0x03, 0x1d, 0x1c, 0xdc, 0x6b, + 0xdb, 0x31, 0x5b, 0x94, 0x3e, 0x3f, 0x30, 0x7f, 0x2d, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, + 0x03, 0x82, 0x01, 0x01, 0x00, 0x7a, 0x53, 0xb5, 0xde, 0xb6, 0xef, 0x52, + 0xa3, 0x5f, 0x8a, 0xf5, 0x89, 0xf1, 0x42, 0xcc, 0x5e, 0x46, 0x88, 0xae, + 0xa5, 0x08, 0x87, 0x51, 0xde, 0x0f, 0x0f, 0x02, 0xeb, 0x0c, 0x82, 0x78, + 0xe3, 0x73, 0x7d, 0x71, 0xbd, 0x43, 0xe9, 0xca, 0x8a, 0x3f, 0xe0, 0x25, + 0x92, 0x9b, 0x33, 0x33, 0x74, 0x49, 0x5e, 0x00, 0xd9, 0x73, 0x14, 0x1c, + 0x0b, 0x46, 0x76, 0x1c, 0x8a, 0x0d, 0x4d, 0x8c, 0x6c, 0x7e, 0x4b, 0xf7, + 0x60, 0xd8, 0x81, 0x78, 0xa0, 0x78, 0xd0, 0x25, 0x62, 0xab, 0x10, 0xca, + 0x22, 0xe8, 0x1c, 0x19, 0xdd, 0x52, 0x83, 0x64, 0x05, 0xe5, 0x87, 0x66, + 0xae, 0xe7, 0x7a, 0xa4, 0x3b, 0x3e, 0xd8, 0x70, 0x7a, 0x76, 0xa2, 0x67, + 0x39, 0xd4, 0xc9, 0xfa, 0xe5, 0xb7, 0x1e, 0x41, 0xe2, 0x09, 0x39, 0x88, + 0x1c, 0x18, 0x55, 0x0a, 0xc4, 0x41, 0xaf, 0xb2, 0xf3, 0xf3, 0x0f, 0x42, + 0x14, 0x61, 0x74, 0x81, 0xe3, 0xda, 0x87, 0x5a, 0x9a, 0x4d, 0x8b, 0xd3, + 0xc9, 0x8f, 0x89, 0x66, 0x13, 0x29, 0x11, 0xe4, 0xff, 0xe2, 0xdf, 0x8e, + 0x96, 0x0c, 0x5a, 0xa1, 0xaa, 0x6b, 0x9b, 0xfd, 0xfc, 0x03, 0x3b, 0x55, + 0x0d, 0xa6, 0xa2, 0x25, 0x48, 0x17, 0x1f, 0x42, 0xa8, 0xda, 0x6c, 0x7e, + 0x69, 0x6e, 0xa0, 0xdf, 0x67, 0xd2, 0x6d, 0xf4, 0x0e, 0x6a, 0x12, 0x79, + 0xf5, 0x7c, 0xc8, 0xa5, 0x32, 0x1c, 0xc4, 0x31, 0xb2, 0xe6, 0xbb, 0xa8, + 0x6b, 0x6a, 0xa2, 0x8a, 0x60, 0x69, 0xc0, 0x57, 0x7d, 0xb2, 0xf2, 0x31, + 0x0c, 0x98, 0x65, 0x32, 0xec, 0x08, 0x5a, 0xce, 0xc6, 0x98, 0xe9, 0x21, + 0x97, 0x3f, 0x2c, 0x79, 0x29, 0x03, 0xf5, 0xf6, 0x94, 0x2b, 0x53, 0x31, + 0xf3, 0x93, 0x68, 0x57, 0xe1, 0xd7, 0x4f, 0x3a, 0xd1, 0x61, 0xa1, 0x60, + 0xce, 0xb9, 0xab, 0x98, 0xae, 0x35, 0x54, 0x63, 0x8b, +} + +var certSet3Cert33 = []byte{ + 0x30, 0x82, 0x04, 0xb6, 0x30, 0x82, 0x03, 0x9e, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x0c, 0x79, 0xa9, 0x44, 0xb0, 0x8c, 0x11, 0x95, 0x20, + 0x92, 0x61, 0x5f, 0xe2, 0x6b, 0x1d, 0x83, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x6c, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, + 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, + 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x22, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48, + 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, + 0x65, 0x20, 0x45, 0x56, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, + 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x32, 0x32, 0x31, 0x32, + 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x38, 0x31, 0x30, 0x32, + 0x32, 0x31, 0x32, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x75, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44, 0x69, + 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31, 0x19, + 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, 0x77, 0x77, + 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, + 0x6d, 0x31, 0x34, 0x30, 0x32, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2b, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x53, 0x48, 0x41, + 0x32, 0x20, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x20, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, + 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, + 0x82, 0x01, 0x01, 0x00, 0xd7, 0x53, 0xa4, 0x04, 0x51, 0xf8, 0x99, 0xa6, + 0x16, 0x48, 0x4b, 0x67, 0x27, 0xaa, 0x93, 0x49, 0xd0, 0x39, 0xed, 0x0c, + 0xb0, 0xb0, 0x00, 0x87, 0xf1, 0x67, 0x28, 0x86, 0x85, 0x8c, 0x8e, 0x63, + 0xda, 0xbc, 0xb1, 0x40, 0x38, 0xe2, 0xd3, 0xf5, 0xec, 0xa5, 0x05, 0x18, + 0xb8, 0x3d, 0x3e, 0xc5, 0x99, 0x17, 0x32, 0xec, 0x18, 0x8c, 0xfa, 0xf1, + 0x0c, 0xa6, 0x64, 0x21, 0x85, 0xcb, 0x07, 0x10, 0x34, 0xb0, 0x52, 0x88, + 0x2b, 0x1f, 0x68, 0x9b, 0xd2, 0xb1, 0x8f, 0x12, 0xb0, 0xb3, 0xd2, 0xe7, + 0x88, 0x1f, 0x1f, 0xef, 0x38, 0x77, 0x54, 0x53, 0x5f, 0x80, 0x79, 0x3f, + 0x2e, 0x1a, 0xaa, 0xa8, 0x1e, 0x4b, 0x2b, 0x0d, 0xab, 0xb7, 0x63, 0xb9, + 0x35, 0xb7, 0x7d, 0x14, 0xbc, 0x59, 0x4b, 0xdf, 0x51, 0x4a, 0xd2, 0xa1, + 0xe2, 0x0c, 0xe2, 0x90, 0x82, 0x87, 0x6a, 0xae, 0xea, 0xd7, 0x64, 0xd6, + 0x98, 0x55, 0xe8, 0xfd, 0xaf, 0x1a, 0x50, 0x6c, 0x54, 0xbc, 0x11, 0xf2, + 0xfd, 0x4a, 0xf2, 0x9d, 0xbb, 0x7f, 0x0e, 0xf4, 0xd5, 0xbe, 0x8e, 0x16, + 0x89, 0x12, 0x55, 0xd8, 0xc0, 0x71, 0x34, 0xee, 0xf6, 0xdc, 0x2d, 0xec, + 0xc4, 0x87, 0x25, 0x86, 0x8d, 0xd8, 0x21, 0xe4, 0xb0, 0x4d, 0x0c, 0x89, + 0xdc, 0x39, 0x26, 0x17, 0xdd, 0xf6, 0xd7, 0x94, 0x85, 0xd8, 0x04, 0x21, + 0x70, 0x9d, 0x6f, 0x6f, 0xff, 0x5c, 0xba, 0x19, 0xe1, 0x45, 0xcb, 0x56, + 0x57, 0x28, 0x7e, 0x1c, 0x0d, 0x41, 0x57, 0xaa, 0xb7, 0xb8, 0x27, 0xbb, + 0xb1, 0xe4, 0xfa, 0x2a, 0xef, 0x21, 0x23, 0x75, 0x1a, 0xad, 0x2d, 0x9b, + 0x86, 0x35, 0x8c, 0x9c, 0x77, 0xb5, 0x73, 0xad, 0xd8, 0x94, 0x2d, 0xe4, + 0xf3, 0x0c, 0x9d, 0xee, 0xc1, 0x4e, 0x62, 0x7e, 0x17, 0xc0, 0x71, 0x9e, + 0x2c, 0xde, 0xf1, 0xf9, 0x10, 0x28, 0x19, 0x33, 0x02, 0x03, 0x01, 0x00, + 0x01, 0xa3, 0x82, 0x01, 0x49, 0x30, 0x82, 0x01, 0x45, 0x30, 0x12, 0x06, + 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, + 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, + 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x1d, 0x06, + 0x03, 0x55, 0x1d, 0x25, 0x04, 0x16, 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x03, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x03, 0x02, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x64, 0x69, + 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x4b, + 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x44, 0x30, 0x42, 0x30, 0x40, 0xa0, + 0x3e, 0xa0, 0x3c, 0x86, 0x3a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x63, 0x72, 0x6c, 0x34, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, + 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, + 0x72, 0x74, 0x48, 0x69, 0x67, 0x68, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, + 0x6e, 0x63, 0x65, 0x45, 0x56, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x3d, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x36, + 0x30, 0x34, 0x30, 0x32, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x2a, + 0x30, 0x28, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, + 0x16, 0x1c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, + 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x43, 0x50, 0x53, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, + 0x0e, 0x04, 0x16, 0x04, 0x14, 0x3d, 0xd3, 0x50, 0xa5, 0xd6, 0xa0, 0xad, + 0xee, 0xf3, 0x4a, 0x60, 0x0a, 0x65, 0xd3, 0x21, 0xd4, 0xf8, 0xf8, 0xd6, + 0x0f, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, + 0x80, 0x14, 0xb1, 0x3e, 0xc3, 0x69, 0x03, 0xf8, 0xbf, 0x47, 0x01, 0xd4, + 0x98, 0x26, 0x1a, 0x08, 0x02, 0xef, 0x63, 0x64, 0x2b, 0xc3, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x9d, 0xb6, 0xd0, 0x90, 0x86, 0xe1, + 0x86, 0x02, 0xed, 0xc5, 0xa0, 0xf0, 0x34, 0x1c, 0x74, 0xc1, 0x8d, 0x76, + 0xcc, 0x86, 0x0a, 0xa8, 0xf0, 0x4a, 0x8a, 0x42, 0xd6, 0x3f, 0xc8, 0xa9, + 0x4d, 0xad, 0x7c, 0x08, 0xad, 0xe6, 0xb6, 0x50, 0xb8, 0xa2, 0x1a, 0x4d, + 0x88, 0x07, 0xb1, 0x29, 0x21, 0xdc, 0xe7, 0xda, 0xc6, 0x3c, 0x21, 0xe0, + 0xe3, 0x11, 0x49, 0x70, 0xac, 0x7a, 0x1d, 0x01, 0xa4, 0xca, 0x11, 0x3a, + 0x57, 0xab, 0x7d, 0x57, 0x2a, 0x40, 0x74, 0xfd, 0xd3, 0x1d, 0x85, 0x18, + 0x50, 0xdf, 0x57, 0x47, 0x75, 0xa1, 0x7d, 0x55, 0x20, 0x2e, 0x47, 0x37, + 0x50, 0x72, 0x8c, 0x7f, 0x82, 0x1b, 0xd2, 0x62, 0x8f, 0x2d, 0x03, 0x5a, + 0xda, 0xc3, 0xc8, 0xa1, 0xce, 0x2c, 0x52, 0xa2, 0x00, 0x63, 0xeb, 0x73, + 0xba, 0x71, 0xc8, 0x49, 0x27, 0x23, 0x97, 0x64, 0x85, 0x9e, 0x38, 0x0e, + 0xad, 0x63, 0x68, 0x3c, 0xba, 0x52, 0x81, 0x58, 0x79, 0xa3, 0x2c, 0x0c, + 0xdf, 0xde, 0x6d, 0xeb, 0x31, 0xf2, 0xba, 0xa0, 0x7c, 0x6c, 0xf1, 0x2c, + 0xd4, 0xe1, 0xbd, 0x77, 0x84, 0x37, 0x03, 0xce, 0x32, 0xb5, 0xc8, 0x9a, + 0x81, 0x1a, 0x4a, 0x92, 0x4e, 0x3b, 0x46, 0x9a, 0x85, 0xfe, 0x83, 0xa2, + 0xf9, 0x9e, 0x8c, 0xa3, 0xcc, 0x0d, 0x5e, 0xb3, 0x3d, 0xcf, 0x04, 0x78, + 0x8f, 0x14, 0x14, 0x7b, 0x32, 0x9c, 0xc7, 0x00, 0xa6, 0x5c, 0xc4, 0xb5, + 0xa1, 0x55, 0x8d, 0x5a, 0x56, 0x68, 0xa4, 0x22, 0x70, 0xaa, 0x3c, 0x81, + 0x71, 0xd9, 0x9d, 0xa8, 0x45, 0x3b, 0xf4, 0xe5, 0xf6, 0xa2, 0x51, 0xdd, + 0xc7, 0x7b, 0x62, 0xe8, 0x6f, 0x0c, 0x74, 0xeb, 0xb8, 0xda, 0xf8, 0xbf, + 0x87, 0x0d, 0x79, 0x50, 0x91, 0x90, 0x9b, 0x18, 0x3b, 0x91, 0x59, 0x27, + 0xf1, 0x35, 0x28, 0x13, 0xab, 0x26, 0x7e, 0xd5, 0xf7, 0x7a, +} + +var certSet3Cert34 = []byte{ + 0x30, 0x82, 0x04, 0xc2, 0x30, 0x82, 0x03, 0xaa, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x36, 0x34, 0x9e, 0x18, 0xc9, 0x9c, 0x26, 0x69, 0xb6, + 0x56, 0x2e, 0x6c, 0xe5, 0xad, 0x71, 0x32, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xae, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, + 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, 0x06, + 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, + 0x30, 0x38, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, + 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x1b, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, + 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x1e, 0x17, 0x0d, 0x31, + 0x33, 0x30, 0x35, 0x32, 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, + 0x17, 0x0d, 0x32, 0x33, 0x30, 0x35, 0x32, 0x32, 0x32, 0x33, 0x35, 0x39, + 0x35, 0x39, 0x5a, 0x30, 0x43, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, + 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, + 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, + 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x14, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x53, + 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, + 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, + 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xa3, 0x63, 0x2b, + 0xd4, 0xba, 0x5d, 0x38, 0xae, 0xb0, 0xcf, 0xb9, 0x4c, 0x38, 0xdf, 0x20, + 0x7d, 0xf1, 0x2b, 0x47, 0x71, 0x1d, 0x8b, 0x68, 0xf3, 0x56, 0xf9, 0x9c, + 0xda, 0xaa, 0xe5, 0x84, 0x26, 0xde, 0xa5, 0x71, 0x30, 0xbc, 0xf3, 0x31, + 0x23, 0x9d, 0xe8, 0x3b, 0x80, 0xc8, 0x66, 0x57, 0x75, 0xb6, 0x57, 0x0e, + 0xdb, 0x93, 0xf5, 0x26, 0x8e, 0x70, 0xba, 0x64, 0x52, 0x66, 0x8a, 0x2a, + 0x88, 0x5c, 0x44, 0x18, 0x4d, 0xa8, 0xa2, 0x7c, 0xbd, 0x56, 0x61, 0x32, + 0x90, 0x12, 0xf9, 0x35, 0x87, 0x48, 0x60, 0xb0, 0x6e, 0x90, 0x67, 0x44, + 0x01, 0x8d, 0xe7, 0xc9, 0x0d, 0x63, 0x68, 0x72, 0x72, 0xab, 0x63, 0x3c, + 0x86, 0xb8, 0x1f, 0x7d, 0xad, 0x88, 0x25, 0xa7, 0x6a, 0x88, 0x29, 0xfb, + 0x59, 0xc6, 0x78, 0x71, 0x5f, 0x2c, 0xba, 0x89, 0xe6, 0xd3, 0x80, 0xfd, + 0x57, 0xec, 0xb9, 0x51, 0x5f, 0x43, 0x33, 0x2e, 0x7e, 0x25, 0x3b, 0xa4, + 0x04, 0xd1, 0x60, 0x8c, 0xb3, 0x44, 0x33, 0x93, 0x0c, 0xad, 0x2a, 0xb6, + 0x44, 0xa2, 0x19, 0x3b, 0xaf, 0xc4, 0x90, 0x6f, 0x7b, 0x05, 0x87, 0x86, + 0x9b, 0x2c, 0x6a, 0x9d, 0x2b, 0x6c, 0x77, 0xc9, 0x00, 0x9f, 0xc9, 0xcf, + 0xac, 0xed, 0x3e, 0x1b, 0xf7, 0xc3, 0xf3, 0xd9, 0xf8, 0x6c, 0xd4, 0xa0, + 0x57, 0xc4, 0xfb, 0x28, 0x32, 0xaa, 0x33, 0xf0, 0xe6, 0xba, 0x98, 0xdf, + 0xe5, 0xc2, 0x4e, 0x9c, 0x74, 0xbf, 0x8a, 0x48, 0xc2, 0xf2, 0x1b, 0xf0, + 0x77, 0x40, 0x41, 0x07, 0x04, 0xb2, 0x3a, 0xd5, 0x4c, 0xc4, 0x29, 0xa9, + 0x11, 0x40, 0x3f, 0x02, 0x46, 0xf0, 0x91, 0xd5, 0xd2, 0x81, 0x83, 0x86, + 0x13, 0xb3, 0x31, 0xed, 0x46, 0xab, 0xa8, 0x87, 0x76, 0xa9, 0x99, 0x7d, + 0xbc, 0xcd, 0x31, 0x50, 0xf4, 0xa5, 0xb5, 0xdc, 0xa5, 0x32, 0xb3, 0x8b, + 0x8b, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x44, 0x30, 0x82, + 0x01, 0x40, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x01, 0x01, 0x04, 0x26, 0x30, 0x24, 0x30, 0x22, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x16, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x74, 0x68, 0x61, 0x77, + 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, + 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, + 0x01, 0x00, 0x30, 0x41, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3a, 0x30, + 0x38, 0x30, 0x36, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, + 0x01, 0x07, 0x36, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x73, + 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, + 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x37, 0x06, + 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0xa0, 0x2a, + 0xa0, 0x28, 0x86, 0x26, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, + 0x72, 0x6c, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x50, 0x43, 0x41, 0x2d, + 0x47, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x2a, + 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x23, 0x30, 0x21, 0xa4, 0x1f, 0x30, + 0x1d, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, + 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x50, 0x4b, 0x49, + 0x2d, 0x32, 0x2d, 0x34, 0x31, 0x35, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, + 0x0e, 0x04, 0x16, 0x04, 0x14, 0x2b, 0x9a, 0x35, 0xae, 0x01, 0x18, 0x38, + 0x30, 0xe1, 0x70, 0x7a, 0x05, 0xe0, 0x11, 0x76, 0xa3, 0xce, 0xbd, 0x90, + 0x14, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, + 0x80, 0x14, 0xad, 0x6c, 0xaa, 0x94, 0x60, 0x9c, 0xed, 0xe4, 0xff, 0xfa, + 0x3e, 0x0a, 0x74, 0x2b, 0x63, 0x03, 0xf7, 0xb6, 0x59, 0xbf, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x74, 0xa6, 0x56, 0xe8, 0xaf, 0x93, + 0x96, 0x19, 0xfb, 0x26, 0xf9, 0x0d, 0xb0, 0x44, 0xa5, 0xcd, 0xe9, 0x7a, + 0x48, 0x03, 0x74, 0x01, 0x6c, 0x13, 0x71, 0xb7, 0xe0, 0x82, 0x90, 0x99, + 0x62, 0x23, 0xe3, 0xd6, 0x99, 0xaf, 0xf0, 0xc7, 0x1e, 0x9e, 0xa8, 0x18, + 0x21, 0xdb, 0xb4, 0x94, 0x3f, 0x34, 0x56, 0x1b, 0x99, 0x55, 0x2f, 0x8e, + 0xf0, 0x45, 0x33, 0x32, 0xb7, 0x72, 0xc1, 0x13, 0x5b, 0x34, 0xd3, 0xf5, + 0x60, 0xe5, 0x2e, 0x18, 0xd1, 0x5c, 0xc5, 0x6a, 0xc1, 0xaa, 0x87, 0x50, + 0x0c, 0x1c, 0x9d, 0x64, 0x2b, 0xff, 0x1b, 0xdc, 0xd5, 0x2e, 0x61, 0x0b, + 0xe7, 0xb9, 0xb6, 0x91, 0x53, 0x86, 0xd9, 0x03, 0x2a, 0xd1, 0x3d, 0x7b, + 0x4a, 0xda, 0x2b, 0x07, 0xbe, 0x29, 0xf2, 0x60, 0x42, 0xa9, 0x91, 0x1a, + 0x0e, 0x2e, 0x3c, 0xd1, 0x7d, 0xa5, 0x13, 0x14, 0x02, 0xfa, 0xee, 0x8b, + 0x8d, 0xb6, 0xc8, 0xb8, 0x3e, 0x56, 0x81, 0x57, 0x21, 0x24, 0x3f, 0x65, + 0xc3, 0xb4, 0xc9, 0xce, 0x5c, 0x8d, 0x46, 0xac, 0x53, 0xf3, 0xf9, 0x55, + 0x74, 0xc8, 0x2b, 0xfd, 0xd2, 0x78, 0x70, 0xf5, 0xf8, 0x11, 0xe5, 0xf4, + 0xa7, 0xad, 0x20, 0xf5, 0x9d, 0xf1, 0xec, 0x70, 0xf6, 0x13, 0xac, 0xe6, + 0x8c, 0x8d, 0xdb, 0x3f, 0xc6, 0xf2, 0x79, 0x0e, 0xab, 0x52, 0xf2, 0xcc, + 0x1b, 0x79, 0x27, 0xcf, 0x16, 0xb3, 0xd6, 0xf3, 0xc6, 0x36, 0x80, 0x43, + 0xec, 0xc5, 0x94, 0xf0, 0xdd, 0x90, 0x8d, 0xf8, 0xc6, 0x52, 0x46, 0x56, + 0xeb, 0x74, 0x47, 0xbe, 0xa6, 0xf3, 0x19, 0xae, 0x71, 0x4c, 0xc0, 0xe1, + 0xe7, 0xd4, 0xcf, 0xed, 0xd4, 0x06, 0x28, 0x2a, 0x11, 0x3c, 0xba, 0xd9, + 0x41, 0x6e, 0x00, 0xe7, 0x81, 0x37, 0x93, 0xe4, 0xda, 0x62, 0xc6, 0x1d, + 0x67, 0x6f, 0x63, 0xb4, 0x14, 0x86, 0xd9, 0xa6, 0x62, 0xf0, +} + +var certSet3Cert35 = []byte{ + 0x30, 0x82, 0x04, 0xc7, 0x30, 0x82, 0x03, 0xaf, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x41, 0x82, 0x12, 0x7d, 0x12, 0xd9, 0xc6, 0xb3, 0x21, + 0x39, 0x43, 0x12, 0x56, 0x64, 0x00, 0xb8, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0x98, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x30, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x38, 0x20, 0x47, 0x65, + 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, + 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, + 0x79, 0x31, 0x36, 0x30, 0x34, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2d, + 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x50, 0x72, 0x69, + 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x1e, 0x17, + 0x0d, 0x31, 0x33, 0x30, 0x35, 0x32, 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x30, 0x35, 0x32, 0x32, 0x32, 0x33, + 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x46, 0x31, 0x0b, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, + 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1f, 0x30, 0x1d, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x16, 0x47, 0x65, 0x6f, 0x54, 0x72, + 0x75, 0x73, 0x74, 0x20, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x53, + 0x53, 0x4c, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, + 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, + 0x01, 0x00, 0xc6, 0xa9, 0x0b, 0x5d, 0x17, 0xa5, 0x7d, 0xc6, 0xcf, 0x2a, + 0xef, 0xc6, 0x66, 0xd1, 0x42, 0x1e, 0x5f, 0x83, 0x78, 0x68, 0x91, 0xaf, + 0xe6, 0xa7, 0x8b, 0xf0, 0x1d, 0x44, 0x01, 0x0a, 0x19, 0xca, 0x9c, 0xd4, + 0x8b, 0x1d, 0xe1, 0xa1, 0x90, 0xa3, 0xc1, 0x5b, 0xb4, 0xd7, 0x5b, 0x6a, + 0x8b, 0xfc, 0x0e, 0x49, 0x1e, 0xc2, 0x62, 0x29, 0xfe, 0x80, 0x15, 0x39, + 0x8b, 0x81, 0x2a, 0x27, 0xb5, 0xfb, 0x12, 0xa8, 0x05, 0x22, 0x0b, 0xc5, + 0x2c, 0xf5, 0xd9, 0x98, 0xdd, 0x16, 0x2f, 0x3b, 0x66, 0xe7, 0x62, 0xa2, + 0x43, 0x32, 0xac, 0x8f, 0xb5, 0x85, 0xc8, 0x52, 0x06, 0x2c, 0x5c, 0xc0, + 0x77, 0xfa, 0x67, 0xf7, 0x83, 0xe8, 0x5e, 0x05, 0x8d, 0xc8, 0xab, 0xa1, + 0x16, 0x32, 0x8a, 0xd2, 0x40, 0xec, 0x86, 0x3a, 0x1c, 0x23, 0xa9, 0x8d, + 0xb5, 0x00, 0xde, 0x72, 0xbd, 0x85, 0x55, 0xfe, 0x06, 0x01, 0x60, 0x5d, + 0xad, 0xb3, 0xe0, 0x65, 0x73, 0xa5, 0x92, 0x14, 0x9e, 0x94, 0x56, 0x6f, + 0x93, 0xee, 0xaf, 0xa9, 0x3a, 0x30, 0x25, 0x4a, 0x8e, 0x09, 0x84, 0xef, + 0xb7, 0xd2, 0xd5, 0xd7, 0x9b, 0x49, 0xcd, 0xe9, 0xc0, 0x5e, 0x67, 0x71, + 0x22, 0xac, 0x50, 0x90, 0x43, 0x20, 0x5d, 0xa1, 0xa3, 0x15, 0x83, 0xfd, + 0xfc, 0xa7, 0x39, 0xbc, 0x6b, 0x65, 0x48, 0x12, 0x60, 0xff, 0xdd, 0x23, + 0xb3, 0x3a, 0xaa, 0xf4, 0x9f, 0x9c, 0x37, 0x53, 0x41, 0xa2, 0x47, 0x93, + 0x81, 0x33, 0x09, 0xe5, 0x22, 0xc6, 0xc8, 0x1c, 0x49, 0xa1, 0x6e, 0x8d, + 0xcc, 0x83, 0xb3, 0x9a, 0xcd, 0xea, 0x43, 0xf2, 0x19, 0xd3, 0x24, 0xcb, + 0xa8, 0x29, 0xae, 0x52, 0xcc, 0xf4, 0x08, 0x27, 0xb0, 0x84, 0xea, 0xce, + 0x27, 0xb5, 0xe1, 0x34, 0x13, 0x73, 0x92, 0x5c, 0x87, 0x86, 0x2a, 0xc6, + 0xb0, 0x68, 0x36, 0xad, 0xcb, 0x09, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, + 0x82, 0x01, 0x5c, 0x30, 0x82, 0x01, 0x58, 0x30, 0x3b, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x2f, 0x30, 0x2d, 0x30, + 0x2b, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, + 0x1f, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x70, 0x63, 0x61, 0x2d, + 0x67, 0x33, 0x2d, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x65, 0x6f, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x12, 0x06, 0x03, + 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, + 0xff, 0x02, 0x01, 0x00, 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, + 0x45, 0x30, 0x43, 0x30, 0x41, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, + 0xf8, 0x45, 0x01, 0x07, 0x36, 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x3b, + 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, 0xa0, + 0x2e, 0xa0, 0x2c, 0x86, 0x2a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x63, 0x72, 0x6c, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x50, 0x43, 0x41, 0x2d, 0x47, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x30, + 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, + 0x02, 0x01, 0x06, 0x30, 0x2a, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x23, + 0x30, 0x21, 0xa4, 0x1f, 0x30, 0x1d, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x12, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, + 0x6e, 0x4d, 0x50, 0x4b, 0x49, 0x2d, 0x32, 0x2d, 0x34, 0x31, 0x36, 0x30, + 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x14, 0x67, + 0x8e, 0xed, 0x83, 0x4f, 0xd6, 0x1e, 0x9d, 0x40, 0x04, 0x0c, 0x04, 0x46, + 0xa1, 0x70, 0x34, 0xb2, 0x0f, 0x72, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, + 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xc4, 0x79, 0xca, 0x8e, 0xa1, + 0x4e, 0x03, 0x1d, 0x1c, 0xdc, 0x6b, 0xdb, 0x31, 0x5b, 0x94, 0x3e, 0x3f, + 0x30, 0x7f, 0x2d, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x10, + 0x10, 0xea, 0xf2, 0x10, 0xd6, 0x08, 0x46, 0xe2, 0xc1, 0x8f, 0x3e, 0x36, + 0x59, 0xc8, 0x2b, 0x0f, 0xfe, 0x4d, 0xec, 0xe3, 0xf8, 0xb6, 0x56, 0x31, + 0x78, 0x25, 0xd4, 0x76, 0xf2, 0x08, 0xdd, 0xef, 0x3f, 0xcd, 0x8b, 0x1c, + 0x7e, 0xaa, 0x7f, 0xfc, 0x0b, 0xa8, 0x23, 0x64, 0x51, 0xb3, 0x87, 0xd6, + 0x09, 0xfa, 0x22, 0xfa, 0xc7, 0x0a, 0x51, 0xe8, 0xce, 0xb8, 0xf6, 0x03, + 0x70, 0xe0, 0x1b, 0x5a, 0xb9, 0xb1, 0xb2, 0x93, 0x11, 0x10, 0xf9, 0x97, + 0x05, 0x07, 0x29, 0x6c, 0x6d, 0x57, 0x25, 0x54, 0xe8, 0xf9, 0x66, 0x9b, + 0x0e, 0xfb, 0xdb, 0x9f, 0xee, 0x96, 0x6f, 0x65, 0xcb, 0x1f, 0xd8, 0x55, + 0xce, 0x31, 0xfa, 0xcf, 0x02, 0xf4, 0xd0, 0x7f, 0x50, 0x66, 0xff, 0x2f, + 0x79, 0x9b, 0xa5, 0xc2, 0xdf, 0xd6, 0xcf, 0xc8, 0x15, 0x83, 0x96, 0x84, + 0x98, 0xb2, 0x46, 0xd4, 0x5f, 0x13, 0xa8, 0x3e, 0xa7, 0x34, 0x9c, 0x05, + 0x38, 0xda, 0xcf, 0xd6, 0x69, 0x95, 0xa9, 0x26, 0x87, 0x76, 0x01, 0xd7, + 0xb2, 0x51, 0x0f, 0x81, 0x69, 0x46, 0x26, 0x1c, 0x99, 0xb6, 0x83, 0x58, + 0xe3, 0x3b, 0x58, 0x8f, 0xdc, 0xb4, 0x71, 0xc0, 0xb9, 0xbf, 0x42, 0x9c, + 0x1c, 0x03, 0x9e, 0xe4, 0x46, 0xa8, 0xea, 0xb9, 0xc1, 0xcd, 0xf6, 0x5b, + 0xa9, 0x3c, 0x96, 0xfb, 0x79, 0xa4, 0x33, 0x73, 0xa7, 0x9e, 0x78, 0xb9, + 0x70, 0xdc, 0x72, 0x74, 0xc4, 0x32, 0xc8, 0x00, 0x1b, 0xc9, 0xef, 0x48, + 0xd3, 0xfb, 0x3a, 0x9b, 0xfa, 0xfe, 0x7a, 0x9a, 0x40, 0x69, 0x1c, 0xc8, + 0xda, 0x28, 0x37, 0x0b, 0xd3, 0xa3, 0xb9, 0x7e, 0x96, 0xcc, 0x2b, 0x28, + 0xc3, 0x56, 0x6c, 0x6f, 0xe9, 0xdb, 0x52, 0xb1, 0xfa, 0x9a, 0xfb, 0xe7, + 0xaf, 0xb5, 0x97, 0xa6, 0x22, 0xc3, 0xc5, 0xa8, 0x93, 0xb1, 0x00, 0xc9, + 0x07, 0xb2, 0x7d, +} + +var certSet3Cert36 = []byte{ + 0x30, 0x82, 0x04, 0xd0, 0x30, 0x82, 0x03, 0xb8, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x01, 0x07, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, 0x83, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x07, 0x41, 0x72, + 0x69, 0x7a, 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, + 0x04, 0x07, 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61, + 0x6c, 0x65, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x11, 0x47, 0x6f, 0x44, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, + 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x31, 0x30, 0x2f, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x28, 0x47, 0x6f, 0x20, 0x44, 0x61, 0x64, 0x64, + 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x1e, 0x17, + 0x0d, 0x31, 0x31, 0x30, 0x35, 0x30, 0x33, 0x30, 0x37, 0x30, 0x30, 0x30, + 0x30, 0x5a, 0x17, 0x0d, 0x33, 0x31, 0x30, 0x35, 0x30, 0x33, 0x30, 0x37, + 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x81, 0xb4, 0x31, 0x0b, 0x30, 0x09, + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, + 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x07, 0x41, 0x72, 0x69, 0x7a, + 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x07, + 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61, 0x6c, 0x65, + 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x11, 0x47, + 0x6f, 0x44, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x2c, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x2d, 0x30, 0x2b, 0x06, 0x03, 0x55, 0x04, + 0x0b, 0x13, 0x24, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x65, + 0x72, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x79, 0x2f, 0x31, 0x33, 0x30, 0x31, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x2a, 0x47, 0x6f, 0x20, 0x44, 0x61, 0x64, 0x64, 0x79, 0x20, 0x53, + 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xb9, 0xe0, 0xcb, 0x10, 0xd4, 0xaf, 0x76, + 0xbd, 0xd4, 0x93, 0x62, 0xeb, 0x30, 0x64, 0xb8, 0x81, 0x08, 0x6c, 0xc3, + 0x04, 0xd9, 0x62, 0x17, 0x8e, 0x2f, 0xff, 0x3e, 0x65, 0xcf, 0x8f, 0xce, + 0x62, 0xe6, 0x3c, 0x52, 0x1c, 0xda, 0x16, 0x45, 0x4b, 0x55, 0xab, 0x78, + 0x6b, 0x63, 0x83, 0x62, 0x90, 0xce, 0x0f, 0x69, 0x6c, 0x99, 0xc8, 0x1a, + 0x14, 0x8b, 0x4c, 0xcc, 0x45, 0x33, 0xea, 0x88, 0xdc, 0x9e, 0xa3, 0xaf, + 0x2b, 0xfe, 0x80, 0x61, 0x9d, 0x79, 0x57, 0xc4, 0xcf, 0x2e, 0xf4, 0x3f, + 0x30, 0x3c, 0x5d, 0x47, 0xfc, 0x9a, 0x16, 0xbc, 0xc3, 0x37, 0x96, 0x41, + 0x51, 0x8e, 0x11, 0x4b, 0x54, 0xf8, 0x28, 0xbe, 0xd0, 0x8c, 0xbe, 0xf0, + 0x30, 0x38, 0x1e, 0xf3, 0xb0, 0x26, 0xf8, 0x66, 0x47, 0x63, 0x6d, 0xde, + 0x71, 0x26, 0x47, 0x8f, 0x38, 0x47, 0x53, 0xd1, 0x46, 0x1d, 0xb4, 0xe3, + 0xdc, 0x00, 0xea, 0x45, 0xac, 0xbd, 0xbc, 0x71, 0xd9, 0xaa, 0x6f, 0x00, + 0xdb, 0xdb, 0xcd, 0x30, 0x3a, 0x79, 0x4f, 0x5f, 0x4c, 0x47, 0xf8, 0x1d, + 0xef, 0x5b, 0xc2, 0xc4, 0x9d, 0x60, 0x3b, 0xb1, 0xb2, 0x43, 0x91, 0xd8, + 0xa4, 0x33, 0x4e, 0xea, 0xb3, 0xd6, 0x27, 0x4f, 0xad, 0x25, 0x8a, 0xa5, + 0xc6, 0xf4, 0xd5, 0xd0, 0xa6, 0xae, 0x74, 0x05, 0x64, 0x57, 0x88, 0xb5, + 0x44, 0x55, 0xd4, 0x2d, 0x2a, 0x3a, 0x3e, 0xf8, 0xb8, 0xbd, 0xe9, 0x32, + 0x0a, 0x02, 0x94, 0x64, 0xc4, 0x16, 0x3a, 0x50, 0xf1, 0x4a, 0xae, 0xe7, + 0x79, 0x33, 0xaf, 0x0c, 0x20, 0x07, 0x7f, 0xe8, 0xdf, 0x04, 0x39, 0xc2, + 0x69, 0x02, 0x6c, 0x63, 0x52, 0xfa, 0x77, 0xc1, 0x1b, 0xc8, 0x74, 0x87, + 0xc8, 0xb9, 0x93, 0x18, 0x50, 0x54, 0x35, 0x4b, 0x69, 0x4e, 0xbc, 0x3b, + 0xd3, 0x49, 0x2e, 0x1f, 0xdc, 0xc1, 0xd2, 0x52, 0xfb, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x82, 0x01, 0x1a, 0x30, 0x82, 0x01, 0x16, 0x30, 0x0f, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, + 0x01, 0x01, 0xff, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, + 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x40, 0xc2, 0xbd, 0x27, 0x8e, 0xcc, + 0x34, 0x83, 0x30, 0xa2, 0x33, 0xd7, 0xfb, 0x6c, 0xb3, 0xf0, 0xb4, 0x2c, + 0x80, 0xce, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, + 0x16, 0x80, 0x14, 0x3a, 0x9a, 0x85, 0x07, 0x10, 0x67, 0x28, 0xb6, 0xef, + 0xf6, 0xbd, 0x05, 0x41, 0x6e, 0x20, 0xc1, 0x94, 0xda, 0x0f, 0xde, 0x30, + 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, + 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x30, 0x35, 0x06, 0x03, 0x55, 0x1d, 0x1f, + 0x04, 0x2e, 0x30, 0x2c, 0x30, 0x2a, 0xa0, 0x28, 0xa0, 0x26, 0x86, 0x24, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x67, + 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, + 0x64, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x67, 0x32, 0x2e, 0x63, 0x72, 0x6c, + 0x30, 0x46, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3f, 0x30, 0x3d, 0x30, + 0x3b, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x33, 0x30, 0x31, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, + 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x73, + 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x08, 0x7e, 0x6c, 0x93, + 0x10, 0xc8, 0x38, 0xb8, 0x96, 0xa9, 0x90, 0x4b, 0xff, 0xa1, 0x5f, 0x4f, + 0x04, 0xef, 0x6c, 0x3e, 0x9c, 0x88, 0x06, 0xc9, 0x50, 0x8f, 0xa6, 0x73, + 0xf7, 0x57, 0x31, 0x1b, 0xbe, 0xbc, 0xe4, 0x2f, 0xdb, 0xf8, 0xba, 0xd3, + 0x5b, 0xe0, 0xb4, 0xe7, 0xe6, 0x79, 0x62, 0x0e, 0x0c, 0xa2, 0xd7, 0x6a, + 0x63, 0x73, 0x31, 0xb5, 0xf5, 0xa8, 0x48, 0xa4, 0x3b, 0x08, 0x2d, 0xa2, + 0x5d, 0x90, 0xd7, 0xb4, 0x7c, 0x25, 0x4f, 0x11, 0x56, 0x30, 0xc4, 0xb6, + 0x44, 0x9d, 0x7b, 0x2c, 0x9d, 0xe5, 0x5e, 0xe6, 0xef, 0x0c, 0x61, 0xaa, + 0xbf, 0xe4, 0x2a, 0x1b, 0xee, 0x84, 0x9e, 0xb8, 0x83, 0x7d, 0xc1, 0x43, + 0xce, 0x44, 0xa7, 0x13, 0x70, 0x0d, 0x91, 0x1f, 0xf4, 0xc8, 0x13, 0xad, + 0x83, 0x60, 0xd9, 0xd8, 0x72, 0xa8, 0x73, 0x24, 0x1e, 0xb5, 0xac, 0x22, + 0x0e, 0xca, 0x17, 0x89, 0x62, 0x58, 0x44, 0x1b, 0xab, 0x89, 0x25, 0x01, + 0x00, 0x0f, 0xcd, 0xc4, 0x1b, 0x62, 0xdb, 0x51, 0xb4, 0xd3, 0x0f, 0x51, + 0x2a, 0x9b, 0xf4, 0xbc, 0x73, 0xfc, 0x76, 0xce, 0x36, 0xa4, 0xcd, 0xd9, + 0xd8, 0x2c, 0xea, 0xae, 0x9b, 0xf5, 0x2a, 0xb2, 0x90, 0xd1, 0x4d, 0x75, + 0x18, 0x8a, 0x3f, 0x8a, 0x41, 0x90, 0x23, 0x7d, 0x5b, 0x4b, 0xfe, 0xa4, + 0x03, 0x58, 0x9b, 0x46, 0xb2, 0xc3, 0x60, 0x60, 0x83, 0xf8, 0x7d, 0x50, + 0x41, 0xce, 0xc2, 0xa1, 0x90, 0xc3, 0xbb, 0xef, 0x02, 0x2f, 0xd2, 0x15, + 0x54, 0xee, 0x44, 0x15, 0xd9, 0x0a, 0xae, 0xa7, 0x8a, 0x33, 0xed, 0xb1, + 0x2d, 0x76, 0x36, 0x26, 0xdc, 0x04, 0xeb, 0x9f, 0xf7, 0x61, 0x1f, 0x15, + 0xdc, 0x87, 0x6f, 0xee, 0x46, 0x96, 0x28, 0xad, 0xa1, 0x26, 0x7d, 0x0a, + 0x09, 0xa7, 0x2e, 0x04, 0xa3, 0x8d, 0xbc, 0xf8, 0xbc, 0x04, 0x30, 0x01, +} + +var certSet3Cert37 = []byte{ + 0x30, 0x82, 0x04, 0xd0, 0x30, 0x82, 0x04, 0x39, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x25, 0x0c, 0xe8, 0xe0, 0x30, 0x61, 0x2e, 0x9f, 0x2b, + 0x89, 0xf7, 0x05, 0x4d, 0x7c, 0xf8, 0xfd, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x5f, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, + 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x31, 0x37, 0x30, 0x35, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, + 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x31, 0x31, 0x30, 0x38, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x31, 0x31, 0x31, 0x30, 0x37, + 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x81, 0xca, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65, + 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, 0x56, + 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x3a, 0x30, + 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28, 0x63, 0x29, 0x20, + 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, + 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, + 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, + 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x45, 0x30, + 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56, 0x65, 0x72, 0x69, + 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, + 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d, + 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xaf, 0x24, 0x08, 0x08, 0x29, 0x7a, 0x35, + 0x9e, 0x60, 0x0c, 0xaa, 0xe7, 0x4b, 0x3b, 0x4e, 0xdc, 0x7c, 0xbc, 0x3c, + 0x45, 0x1c, 0xbb, 0x2b, 0xe0, 0xfe, 0x29, 0x02, 0xf9, 0x57, 0x08, 0xa3, + 0x64, 0x85, 0x15, 0x27, 0xf5, 0xf1, 0xad, 0xc8, 0x31, 0x89, 0x5d, 0x22, + 0xe8, 0x2a, 0xaa, 0xa6, 0x42, 0xb3, 0x8f, 0xf8, 0xb9, 0x55, 0xb7, 0xb1, + 0xb7, 0x4b, 0xb3, 0xfe, 0x8f, 0x7e, 0x07, 0x57, 0xec, 0xef, 0x43, 0xdb, + 0x66, 0x62, 0x15, 0x61, 0xcf, 0x60, 0x0d, 0xa4, 0xd8, 0xde, 0xf8, 0xe0, + 0xc3, 0x62, 0x08, 0x3d, 0x54, 0x13, 0xeb, 0x49, 0xca, 0x59, 0x54, 0x85, + 0x26, 0xe5, 0x2b, 0x8f, 0x1b, 0x9f, 0xeb, 0xf5, 0xa1, 0x91, 0xc2, 0x33, + 0x49, 0xd8, 0x43, 0x63, 0x6a, 0x52, 0x4b, 0xd2, 0x8f, 0xe8, 0x70, 0x51, + 0x4d, 0xd1, 0x89, 0x69, 0x7b, 0xc7, 0x70, 0xf6, 0xb3, 0xdc, 0x12, 0x74, + 0xdb, 0x7b, 0x5d, 0x4b, 0x56, 0xd3, 0x96, 0xbf, 0x15, 0x77, 0xa1, 0xb0, + 0xf4, 0xa2, 0x25, 0xf2, 0xaf, 0x1c, 0x92, 0x67, 0x18, 0xe5, 0xf4, 0x06, + 0x04, 0xef, 0x90, 0xb9, 0xe4, 0x00, 0xe4, 0xdd, 0x3a, 0xb5, 0x19, 0xff, + 0x02, 0xba, 0xf4, 0x3c, 0xee, 0xe0, 0x8b, 0xeb, 0x37, 0x8b, 0xec, 0xf4, + 0xd7, 0xac, 0xf2, 0xf6, 0xf0, 0x3d, 0xaf, 0xdd, 0x75, 0x91, 0x33, 0x19, + 0x1d, 0x1c, 0x40, 0xcb, 0x74, 0x24, 0x19, 0x21, 0x93, 0xd9, 0x14, 0xfe, + 0xac, 0x2a, 0x52, 0xc7, 0x8f, 0xd5, 0x04, 0x49, 0xe4, 0x8d, 0x63, 0x47, + 0x88, 0x3c, 0x69, 0x83, 0xcb, 0xfe, 0x47, 0xbd, 0x2b, 0x7e, 0x4f, 0xc5, + 0x95, 0xae, 0x0e, 0x9d, 0xd4, 0xd1, 0x43, 0xc0, 0x67, 0x73, 0xe3, 0x14, + 0x08, 0x7e, 0xe5, 0x3f, 0x9f, 0x73, 0xb8, 0x33, 0x0a, 0xcf, 0x5d, 0x3f, + 0x34, 0x87, 0x96, 0x8a, 0xee, 0x53, 0xe8, 0x25, 0x15, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x82, 0x01, 0x9b, 0x30, 0x82, 0x01, 0x97, 0x30, 0x0f, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, + 0x01, 0x01, 0xff, 0x30, 0x31, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2a, + 0x30, 0x28, 0x30, 0x26, 0xa0, 0x24, 0xa0, 0x22, 0x86, 0x20, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x76, 0x65, 0x72, + 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63, + 0x61, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x3d, + 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06, + 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x2a, 0x30, 0x28, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, 0x74, + 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, 0x72, + 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, + 0x73, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0x7f, 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09, 0xf3, + 0x43, 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, 0x33, 0x30, 0x6d, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x0c, 0x04, 0x61, 0x30, 0x5f, + 0xa1, 0x5d, 0xa0, 0x5b, 0x30, 0x59, 0x30, 0x57, 0x30, 0x55, 0x16, 0x09, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0x30, 0x21, 0x30, + 0x1f, 0x30, 0x07, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x04, 0x14, + 0x8f, 0xe5, 0xd3, 0x1a, 0x86, 0xac, 0x8d, 0x8e, 0x6b, 0xc3, 0xcf, 0x80, + 0x6a, 0xd4, 0x48, 0x18, 0x2c, 0x7b, 0x19, 0x2e, 0x30, 0x25, 0x16, 0x23, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, + 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x76, 0x73, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x67, 0x69, 0x66, 0x30, + 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, + 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, + 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x3e, 0x06, 0x03, 0x55, 0x1d, 0x25, + 0x04, 0x37, 0x30, 0x35, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x03, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x03, 0x06, 0x09, + 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x42, 0x04, 0x01, 0x06, 0x0a, 0x60, + 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x08, 0x01, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, + 0x03, 0x81, 0x81, 0x00, 0x13, 0x02, 0xdd, 0xf8, 0xe8, 0x86, 0x00, 0xf2, + 0x5a, 0xf8, 0xf8, 0x20, 0x0c, 0x59, 0x88, 0x62, 0x07, 0xce, 0xce, 0xf7, + 0x4e, 0xf9, 0xbb, 0x59, 0xa1, 0x98, 0xe5, 0xe1, 0x38, 0xdd, 0x4e, 0xbc, + 0x66, 0x18, 0xd3, 0xad, 0xeb, 0x18, 0xf2, 0x0d, 0xc9, 0x6d, 0x3e, 0x4a, + 0x94, 0x20, 0xc3, 0x3c, 0xba, 0xbd, 0x65, 0x54, 0xc6, 0xaf, 0x44, 0xb3, + 0x10, 0xad, 0x2c, 0x6b, 0x3e, 0xab, 0xd7, 0x07, 0xb6, 0xb8, 0x81, 0x63, + 0xc5, 0xf9, 0x5e, 0x2e, 0xe5, 0x2a, 0x67, 0xce, 0xcd, 0x33, 0x0c, 0x2a, + 0xd7, 0x89, 0x56, 0x03, 0x23, 0x1f, 0xb3, 0xbe, 0xe8, 0x3a, 0x08, 0x59, + 0xb4, 0xec, 0x45, 0x35, 0xf7, 0x8a, 0x5b, 0xff, 0x66, 0xcf, 0x50, 0xaf, + 0xc6, 0x6d, 0x57, 0x8d, 0x19, 0x78, 0xb7, 0xb9, 0xa2, 0xd1, 0x57, 0xea, + 0x1f, 0x9a, 0x4b, 0xaf, 0xba, 0xc9, 0x8e, 0x12, 0x7e, 0xc6, 0xbd, 0xff, +} + +var certSet3Cert38 = []byte{ + 0x30, 0x82, 0x04, 0xd2, 0x30, 0x82, 0x03, 0xba, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x2c, 0x69, 0xe1, 0x2f, 0x6a, 0x67, 0x0b, 0xd9, 0x9d, + 0xd2, 0x0f, 0x91, 0x9e, 0xf0, 0x9e, 0x51, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xa9, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, + 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, 0x06, + 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, + 0x30, 0x36, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, + 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x16, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, + 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x30, 0x36, 0x31, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, + 0x36, 0x30, 0x39, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x63, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x14, 0x44, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x20, 0x53, 0x53, 0x4c, 0x31, 0x1e, 0x30, 0x1c, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x15, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, + 0x20, 0x44, 0x56, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, + 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, + 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, + 0xea, 0x94, 0x07, 0x85, 0xc8, 0x41, 0x2c, 0xf6, 0x83, 0x12, 0x6c, 0x92, + 0x5f, 0xab, 0x1f, 0x00, 0xd4, 0x96, 0x6f, 0x74, 0xcd, 0x2e, 0x11, 0xe9, + 0x6c, 0x0f, 0x39, 0x01, 0xb9, 0x48, 0x90, 0x40, 0x39, 0x4d, 0xc4, 0xa2, + 0xc8, 0x79, 0x6a, 0xa5, 0x9a, 0xbd, 0x91, 0x44, 0x65, 0x77, 0x54, 0xad, + 0xff, 0x25, 0x5f, 0xee, 0x42, 0xfb, 0xb3, 0x02, 0x0f, 0xea, 0x5d, 0x7a, + 0xdd, 0x1a, 0x54, 0x9e, 0xd7, 0x73, 0x42, 0x9b, 0xcc, 0x79, 0x5f, 0xc5, + 0x4d, 0xf4, 0xb7, 0x0b, 0x18, 0x39, 0x20, 0x7a, 0xdd, 0x50, 0x01, 0x5d, + 0x34, 0x45, 0x5f, 0x4c, 0x11, 0x0e, 0xf5, 0x87, 0x26, 0x26, 0xb4, 0xb0, + 0xf3, 0x7e, 0x71, 0xa0, 0x31, 0x71, 0x50, 0x89, 0x68, 0x5a, 0x63, 0x8a, + 0x14, 0x62, 0xe5, 0x8c, 0x3a, 0x16, 0x55, 0x0d, 0x3e, 0xeb, 0xaa, 0x80, + 0x1d, 0x71, 0x7a, 0xe3, 0x87, 0x07, 0xab, 0xbd, 0xa2, 0x74, 0xcd, 0xda, + 0x08, 0x01, 0x9d, 0x1b, 0xcc, 0x27, 0x88, 0x8c, 0x47, 0xd4, 0x69, 0x25, + 0x42, 0xd6, 0xbb, 0x50, 0x6d, 0x85, 0x50, 0xd0, 0x48, 0x82, 0x0d, 0x08, + 0x9f, 0xe9, 0x23, 0xe3, 0x42, 0xc6, 0x3c, 0x98, 0xb8, 0xbb, 0x6e, 0xc5, + 0x70, 0x13, 0xdf, 0x19, 0x1d, 0x01, 0xfd, 0xd2, 0xb5, 0x4e, 0xe6, 0x62, + 0xf4, 0x07, 0xfa, 0x6b, 0x7d, 0x11, 0x77, 0xc4, 0x62, 0x4f, 0x40, 0x4e, + 0xa5, 0x78, 0x97, 0xab, 0x2c, 0x4d, 0x0c, 0xa7, 0x7c, 0xc3, 0xc4, 0x50, + 0x32, 0x9f, 0xd0, 0x70, 0x9b, 0x0f, 0xff, 0xff, 0x75, 0x59, 0x34, 0x85, + 0xad, 0x49, 0xd5, 0x35, 0xee, 0x4f, 0x5b, 0xd4, 0xd4, 0x36, 0x95, 0xa0, + 0x7e, 0xe8, 0xc5, 0xa1, 0x1c, 0xbd, 0x13, 0x4e, 0x7d, 0xee, 0x63, 0x6a, + 0x96, 0x19, 0x99, 0xc8, 0xa7, 0x2a, 0x00, 0xe6, 0x51, 0x8d, 0x46, 0xeb, + 0x30, 0x58, 0xe8, 0x2d, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, + 0x39, 0x30, 0x82, 0x01, 0x35, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, + 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, + 0x00, 0x30, 0x41, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3a, 0x30, 0x38, + 0x30, 0x36, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, + 0x07, 0x36, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, + 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x0e, 0x06, 0x03, + 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, + 0x30, 0x2e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, + 0x04, 0x22, 0x30, 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x30, 0x01, 0x86, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x74, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x64, 0x2e, 0x63, 0x6f, 0x6d, + 0x30, 0x31, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2a, 0x30, 0x28, 0x30, + 0x26, 0xa0, 0x24, 0xa0, 0x22, 0x86, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x74, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x50, 0x43, 0x41, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x29, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x22, + 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, + 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d, 0x36, 0x39, 0x38, 0x30, 0x1d, + 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x9f, 0xb8, 0xc1, + 0xa9, 0x6c, 0xf2, 0xf5, 0xc0, 0x22, 0x2a, 0x94, 0xed, 0x5c, 0x99, 0xac, + 0xd4, 0xec, 0xd7, 0xc6, 0x07, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, + 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x7b, 0x5b, 0x45, 0xcf, 0xaf, 0xce, + 0xcb, 0x7a, 0xfd, 0x31, 0x92, 0x1a, 0x6a, 0xb6, 0xf3, 0x46, 0xeb, 0x57, + 0x48, 0x50, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x53, 0x54, + 0xf2, 0x47, 0xa8, 0x02, 0xd7, 0xef, 0xaa, 0x35, 0x78, 0xbe, 0x4a, 0x08, + 0x0d, 0x90, 0x18, 0x4b, 0x6d, 0x9e, 0x2a, 0x53, 0x2b, 0xe9, 0x54, 0x17, + 0x77, 0x74, 0x29, 0x7e, 0xd0, 0x37, 0x07, 0x05, 0xb8, 0xe4, 0xfa, 0xb8, + 0xb4, 0x63, 0x98, 0x44, 0xdc, 0xc6, 0x4f, 0x81, 0x06, 0x8c, 0x3a, 0xbe, + 0xc7, 0x30, 0x57, 0xc6, 0x70, 0xfc, 0xd6, 0x93, 0x19, 0x9f, 0xc3, 0x55, + 0xd7, 0x3e, 0x1f, 0x72, 0x8a, 0x9d, 0x30, 0x5a, 0x35, 0x97, 0x32, 0xcb, + 0x63, 0xe4, 0xc6, 0x72, 0xdf, 0xfb, 0x68, 0xca, 0x69, 0x2f, 0xdb, 0xcd, + 0x50, 0x38, 0x3e, 0x2b, 0xbb, 0xab, 0x3b, 0x82, 0xc7, 0xfd, 0x4b, 0x9b, + 0xbd, 0x7c, 0x41, 0x98, 0xef, 0x01, 0x53, 0xd8, 0x35, 0x8f, 0x25, 0xc9, + 0x03, 0x06, 0xe6, 0x9c, 0x57, 0xc1, 0x51, 0x0f, 0x9e, 0xf6, 0x7d, 0x93, + 0x4d, 0xf8, 0x76, 0xc8, 0x3a, 0x6b, 0xf4, 0xc4, 0x8f, 0x33, 0x32, 0x7f, + 0x9d, 0x21, 0x84, 0x34, 0xd9, 0xa7, 0xf9, 0x92, 0xfa, 0x41, 0x91, 0x61, + 0x84, 0x05, 0x9d, 0xa3, 0x79, 0x46, 0xce, 0x67, 0xe7, 0x81, 0xf2, 0x5e, + 0xac, 0x4c, 0xbc, 0xa8, 0xab, 0x6a, 0x6d, 0x15, 0xe2, 0x9c, 0x4e, 0x5a, + 0xd9, 0x63, 0x80, 0xbc, 0xf7, 0x42, 0xeb, 0x9a, 0x44, 0xc6, 0x8c, 0x6b, + 0x06, 0x36, 0xb4, 0x8b, 0x32, 0x89, 0xde, 0xc2, 0xf1, 0xa8, 0x26, 0xaa, + 0xa9, 0xac, 0xff, 0xea, 0x71, 0xa6, 0xe7, 0x8c, 0x41, 0xfa, 0x17, 0x35, + 0xbb, 0xb3, 0x87, 0x31, 0xa9, 0x93, 0xc2, 0xc8, 0x58, 0xe1, 0x0a, 0x4e, + 0x95, 0x83, 0x9c, 0xb9, 0xed, 0x3b, 0xa5, 0xef, 0x08, 0xe0, 0x74, 0xf9, + 0xc3, 0x1b, 0xe6, 0x07, 0xa3, 0xee, 0x07, 0xd7, 0x42, 0x22, 0x79, 0x21, + 0xa0, 0xa1, 0xd4, 0x1d, 0x26, 0xd3, 0xd0, 0xd6, 0xa6, 0x5d, 0x2b, 0x41, + 0xc0, 0x79, +} + +var certSet3Cert39 = []byte{ + 0x30, 0x82, 0x04, 0xff, 0x30, 0x82, 0x03, 0xe7, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x04, 0x51, 0xd3, 0x40, 0x44, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xb0, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0d, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x30, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, + 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x43, 0x50, 0x53, 0x20, 0x69, 0x73, 0x20, + 0x69, 0x6e, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x20, 0x62, 0x79, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, + 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x36, 0x20, 0x45, 0x6e, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x2d, + 0x30, 0x2b, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x24, 0x45, 0x6e, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, + 0x0d, 0x31, 0x34, 0x30, 0x39, 0x32, 0x32, 0x31, 0x37, 0x31, 0x34, 0x35, + 0x37, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x39, 0x32, 0x33, 0x30, 0x31, + 0x33, 0x31, 0x35, 0x33, 0x5a, 0x30, 0x81, 0xbe, 0x31, 0x0b, 0x30, 0x09, + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, + 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x45, 0x6e, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x28, 0x30, + 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, 0x53, 0x65, 0x65, 0x20, + 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x6e, 0x65, 0x74, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x2d, 0x74, 0x65, + 0x72, 0x6d, 0x73, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x30, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x39, 0x20, 0x45, + 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x20, 0x2d, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, + 0x6c, 0x79, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x29, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6f, 0x6f, + 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, + 0x01, 0x01, 0x00, 0xba, 0x84, 0xb6, 0x72, 0xdb, 0x9e, 0x0c, 0x6b, 0xe2, + 0x99, 0xe9, 0x30, 0x01, 0xa7, 0x76, 0xea, 0x32, 0xb8, 0x95, 0x41, 0x1a, + 0xc9, 0xda, 0x61, 0x4e, 0x58, 0x72, 0xcf, 0xfe, 0xf6, 0x82, 0x79, 0xbf, + 0x73, 0x61, 0x06, 0x0a, 0xa5, 0x27, 0xd8, 0xb3, 0x5f, 0xd3, 0x45, 0x4e, + 0x1c, 0x72, 0xd6, 0x4e, 0x32, 0xf2, 0x72, 0x8a, 0x0f, 0xf7, 0x83, 0x19, + 0xd0, 0x6a, 0x80, 0x80, 0x00, 0x45, 0x1e, 0xb0, 0xc7, 0xe7, 0x9a, 0xbf, + 0x12, 0x57, 0x27, 0x1c, 0xa3, 0x68, 0x2f, 0x0a, 0x87, 0xbd, 0x6a, 0x6b, + 0x0e, 0x5e, 0x65, 0xf3, 0x1c, 0x77, 0xd5, 0xd4, 0x85, 0x8d, 0x70, 0x21, + 0xb4, 0xb3, 0x32, 0xe7, 0x8b, 0xa2, 0xd5, 0x86, 0x39, 0x02, 0xb1, 0xb8, + 0xd2, 0x47, 0xce, 0xe4, 0xc9, 0x49, 0xc4, 0x3b, 0xa7, 0xde, 0xfb, 0x54, + 0x7d, 0x57, 0xbe, 0xf0, 0xe8, 0x6e, 0xc2, 0x79, 0xb2, 0x3a, 0x0b, 0x55, + 0xe2, 0x50, 0x98, 0x16, 0x32, 0x13, 0x5c, 0x2f, 0x78, 0x56, 0xc1, 0xc2, + 0x94, 0xb3, 0xf2, 0x5a, 0xe4, 0x27, 0x9a, 0x9f, 0x24, 0xd7, 0xc6, 0xec, + 0xd0, 0x9b, 0x25, 0x82, 0xe3, 0xcc, 0xc2, 0xc4, 0x45, 0xc5, 0x8c, 0x97, + 0x7a, 0x06, 0x6b, 0x2a, 0x11, 0x9f, 0xa9, 0x0a, 0x6e, 0x48, 0x3b, 0x6f, + 0xdb, 0xd4, 0x11, 0x19, 0x42, 0xf7, 0x8f, 0x07, 0xbf, 0xf5, 0x53, 0x5f, + 0x9c, 0x3e, 0xf4, 0x17, 0x2c, 0xe6, 0x69, 0xac, 0x4e, 0x32, 0x4c, 0x62, + 0x77, 0xea, 0xb7, 0xe8, 0xe5, 0xbb, 0x34, 0xbc, 0x19, 0x8b, 0xae, 0x9c, + 0x51, 0xe7, 0xb7, 0x7e, 0xb5, 0x53, 0xb1, 0x33, 0x22, 0xe5, 0x6d, 0xcf, + 0x70, 0x3c, 0x1a, 0xfa, 0xe2, 0x9b, 0x67, 0xb6, 0x83, 0xf4, 0x8d, 0xa5, + 0xaf, 0x62, 0x4c, 0x4d, 0xe0, 0x58, 0xac, 0x64, 0x34, 0x12, 0x03, 0xf8, + 0xb6, 0x8d, 0x94, 0x63, 0x24, 0xa4, 0x71, 0x02, 0x03, 0x01, 0x00, 0x01, + 0xa3, 0x82, 0x01, 0x0f, 0x30, 0x82, 0x01, 0x0b, 0x30, 0x0e, 0x06, 0x03, + 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, + 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, + 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x01, 0x30, 0x33, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x27, 0x30, 0x25, + 0x30, 0x23, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, + 0x86, 0x17, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, + 0x70, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, + 0x74, 0x30, 0x33, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2c, 0x30, 0x2a, + 0x30, 0x28, 0xa0, 0x26, 0xa0, 0x24, 0x86, 0x22, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, + 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x63, + 0x61, 0x31, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3b, 0x06, 0x03, 0x55, 0x1d, + 0x20, 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, 0x06, 0x04, 0x55, 0x1d, 0x20, + 0x00, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x6e, 0x65, 0x74, 0x2f, 0x43, 0x50, 0x53, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x6a, 0x72, 0x26, 0x7a, 0xd0, 0x1e, + 0xef, 0x7d, 0xe7, 0x3b, 0x69, 0x51, 0xd4, 0x6c, 0x8d, 0x9f, 0x90, 0x12, + 0x66, 0xab, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, + 0x16, 0x80, 0x14, 0x68, 0x90, 0xe4, 0x67, 0xa4, 0xa6, 0x53, 0x80, 0xc7, + 0x86, 0x66, 0xa4, 0xf1, 0xf7, 0x4b, 0x43, 0xfb, 0x84, 0xbd, 0x6d, 0x30, + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, + 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x69, 0x33, 0x83, 0xfc, 0x28, + 0x7a, 0x6f, 0x7d, 0xef, 0x9d, 0x55, 0xeb, 0xc5, 0x3e, 0x7a, 0x9d, 0x75, + 0xb3, 0xcc, 0xc3, 0x38, 0x36, 0xd9, 0x34, 0xa2, 0x28, 0x68, 0x18, 0xea, + 0x1e, 0x69, 0xd3, 0xbd, 0xe7, 0xd0, 0x77, 0xda, 0xb8, 0x00, 0x83, 0x4e, + 0x4a, 0xcf, 0x6f, 0xd1, 0xf1, 0xc1, 0x22, 0x3f, 0x74, 0xe4, 0xf7, 0x98, + 0x49, 0x9e, 0x9b, 0xb6, 0x9e, 0xe1, 0xdb, 0x98, 0x77, 0x2d, 0x56, 0x34, + 0xb1, 0xa8, 0x3c, 0xd9, 0xfd, 0xc0, 0xcd, 0xc7, 0xbf, 0x05, 0x03, 0xd4, + 0x02, 0xc5, 0xf1, 0xe5, 0xc6, 0xda, 0x08, 0xa5, 0x13, 0xc7, 0x62, 0x23, + 0x11, 0xd1, 0x61, 0x30, 0x1d, 0x60, 0x84, 0x45, 0xef, 0x79, 0xa8, 0xc6, + 0x26, 0x93, 0xa4, 0xb7, 0xcd, 0x34, 0xb8, 0x69, 0xc5, 0x13, 0xf6, 0x91, + 0xb3, 0xc9, 0x45, 0x73, 0x76, 0xb6, 0x92, 0xf6, 0x76, 0x0a, 0x5b, 0xe1, + 0x03, 0x47, 0xb7, 0xe9, 0x29, 0x4c, 0x91, 0x32, 0x23, 0x37, 0x4a, 0x9c, + 0x35, 0xd8, 0x78, 0xfd, 0x1d, 0x1f, 0xe4, 0x83, 0x89, 0x24, 0x80, 0xad, + 0xb7, 0xf9, 0xcf, 0xe4, 0x5d, 0xa5, 0xd4, 0x71, 0xc4, 0x85, 0x5b, 0x70, + 0x1f, 0xdb, 0x3f, 0x1c, 0x01, 0xeb, 0x1a, 0x45, 0x26, 0x31, 0x14, 0xcc, + 0x65, 0xbf, 0x67, 0xde, 0xca, 0xcc, 0x33, 0x65, 0xe5, 0x41, 0x91, 0xd7, + 0x37, 0xbe, 0x41, 0x1a, 0x96, 0x9d, 0xe6, 0x8a, 0x97, 0x9d, 0xa7, 0xce, + 0xac, 0x4e, 0x9a, 0x3d, 0xbd, 0x01, 0xa0, 0x6a, 0xd9, 0x4f, 0x22, 0x00, + 0x8b, 0x44, 0xd5, 0x69, 0x62, 0x7b, 0x2e, 0xeb, 0xcc, 0xba, 0xe7, 0x92, + 0x7d, 0x69, 0x67, 0x3d, 0xfc, 0xb8, 0x7c, 0xde, 0x41, 0x87, 0xd0, 0x69, + 0xea, 0xba, 0x0a, 0x18, 0x7a, 0x1a, 0x95, 0x43, 0xb3, 0x79, 0x71, 0x28, + 0x76, 0x6d, 0xa1, 0xfb, 0x57, 0x4a, 0xec, 0x4d, 0xc8, 0x0e, 0x10, +} + +var certSet3Cert40 = []byte{ + 0x30, 0x82, 0x05, 0x00, 0x30, 0x82, 0x03, 0xe8, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x01, 0x07, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, 0x8f, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x07, 0x41, 0x72, + 0x69, 0x7a, 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, + 0x04, 0x07, 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61, + 0x6c, 0x65, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x1c, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x54, + 0x65, 0x63, 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x2c, + 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x29, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x1e, 0x17, + 0x0d, 0x31, 0x31, 0x30, 0x35, 0x30, 0x33, 0x30, 0x37, 0x30, 0x30, 0x30, + 0x30, 0x5a, 0x17, 0x0d, 0x33, 0x31, 0x30, 0x35, 0x30, 0x33, 0x30, 0x37, + 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x81, 0xc6, 0x31, 0x0b, 0x30, 0x09, + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, + 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x07, 0x41, 0x72, 0x69, 0x7a, + 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x07, + 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61, 0x6c, 0x65, + 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x1c, 0x53, + 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x54, 0x65, 0x63, + 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x31, 0x33, 0x30, 0x31, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x2a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x65, 0x72, + 0x74, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x74, 0x65, 0x63, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x31, 0x34, 0x30, 0x32, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2b, 0x53, 0x74, 0x61, 0x72, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, + 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, + 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xe5, + 0x90, 0x66, 0x4b, 0xec, 0xf9, 0x46, 0x71, 0xa9, 0x20, 0x83, 0xbe, 0xe9, + 0x6c, 0xbf, 0x4a, 0xc9, 0x48, 0x69, 0x81, 0x75, 0x4e, 0x6d, 0x24, 0xf6, + 0xcb, 0x17, 0x13, 0xf8, 0xb0, 0x71, 0x59, 0x84, 0x7a, 0x6b, 0x2b, 0x85, + 0xa4, 0x34, 0xb5, 0x16, 0xe5, 0xcb, 0xcc, 0xe9, 0x41, 0x70, 0x2c, 0xa4, + 0x2e, 0xd6, 0xfa, 0x32, 0x7d, 0xe1, 0xa8, 0xde, 0x94, 0x10, 0xac, 0x31, + 0xc1, 0xc0, 0xd8, 0x6a, 0xff, 0x59, 0x27, 0xab, 0x76, 0xd6, 0xfc, 0x0b, + 0x74, 0x6b, 0xb8, 0xa7, 0xae, 0x3f, 0xc4, 0x54, 0xf4, 0xb4, 0x31, 0x44, + 0xdd, 0x93, 0x56, 0x8c, 0xa4, 0x4c, 0x5e, 0x9b, 0x89, 0xcb, 0x24, 0x83, + 0x9b, 0xe2, 0x57, 0x7d, 0xb7, 0xd8, 0x12, 0x1f, 0xc9, 0x85, 0x6d, 0xf4, + 0xd1, 0x80, 0xf1, 0x50, 0x9b, 0x87, 0xae, 0xd4, 0x0b, 0x10, 0x05, 0xfb, + 0x27, 0xba, 0x28, 0x6d, 0x17, 0xe9, 0x0e, 0xd6, 0x4d, 0xb9, 0x39, 0x55, + 0x06, 0xff, 0x0a, 0x24, 0x05, 0x7e, 0x2f, 0xc6, 0x1d, 0x72, 0x6c, 0xd4, + 0x8b, 0x29, 0x8c, 0x57, 0x7d, 0xda, 0xd9, 0xeb, 0x66, 0x1a, 0xd3, 0x4f, + 0xa7, 0xdf, 0x7f, 0x52, 0xc4, 0x30, 0xc5, 0xa5, 0xc9, 0x0e, 0x02, 0xc5, + 0x53, 0xbf, 0x77, 0x38, 0x68, 0x06, 0x24, 0xc3, 0x66, 0xc8, 0x37, 0x7e, + 0x30, 0x1e, 0x45, 0x71, 0x23, 0x35, 0xff, 0x90, 0xd8, 0x2a, 0x9d, 0x8d, + 0xe7, 0xb0, 0x92, 0x4d, 0x3c, 0x7f, 0x2a, 0x0a, 0x93, 0xdc, 0xcd, 0x16, + 0x46, 0x65, 0xf7, 0x60, 0x84, 0x8b, 0x76, 0x4b, 0x91, 0x27, 0x73, 0x14, + 0x92, 0xe0, 0xea, 0xee, 0x8f, 0x16, 0xea, 0x8d, 0x0e, 0x3e, 0x76, 0x17, + 0xbf, 0x7d, 0x89, 0x80, 0x80, 0x44, 0x43, 0xe7, 0x2d, 0xe0, 0x43, 0x09, + 0x75, 0xda, 0x36, 0xe8, 0xad, 0xdb, 0x89, 0x3a, 0xf5, 0x5d, 0x12, 0x8e, + 0x23, 0x04, 0x83, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x2c, + 0x30, 0x82, 0x01, 0x28, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, + 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0e, 0x06, + 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, + 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0x25, 0x45, 0x81, 0x68, 0x50, 0x26, 0x38, 0x3d, 0x3b, 0x2d, 0x2c, 0xbe, + 0xcd, 0x6a, 0xd9, 0xb6, 0x3d, 0xb3, 0x66, 0x63, 0x30, 0x1f, 0x06, 0x03, + 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x7c, 0x0c, 0x32, + 0x1f, 0xa7, 0xd9, 0x30, 0x7f, 0xc4, 0x7d, 0x68, 0xa3, 0x62, 0xa8, 0xa1, + 0xce, 0xab, 0x07, 0x5b, 0x27, 0x30, 0x3a, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x2e, 0x30, 0x2c, 0x30, 0x2a, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x1e, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x73, + 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x74, 0x65, 0x63, 0x68, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x30, 0x3b, 0x06, 0x03, 0x55, 0x1d, 0x1f, + 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, 0xa0, 0x2e, 0xa0, 0x2c, 0x86, 0x2a, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x73, + 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x74, 0x65, 0x63, 0x68, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x66, 0x72, 0x6f, 0x6f, 0x74, 0x2d, + 0x67, 0x32, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, + 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, 0x41, 0x06, 0x04, 0x55, 0x1d, 0x20, + 0x00, 0x30, 0x39, 0x30, 0x37, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x01, 0x16, 0x2b, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, + 0x2f, 0x63, 0x65, 0x72, 0x74, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x74, 0x65, 0x63, 0x68, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x56, 0x65, 0xca, 0xfe, + 0xf3, 0x3f, 0x0a, 0xa8, 0x93, 0x8b, 0x18, 0xc7, 0xde, 0x43, 0x69, 0x13, + 0x34, 0x20, 0xbe, 0x4e, 0x5f, 0x78, 0xa8, 0x6b, 0x9c, 0xdb, 0x6a, 0x4d, + 0x41, 0xdb, 0xc1, 0x13, 0xec, 0xdc, 0x31, 0x00, 0x22, 0x5e, 0xf7, 0x00, + 0x9e, 0x0c, 0xe0, 0x34, 0x65, 0x34, 0xf9, 0xb1, 0x3a, 0x4e, 0x48, 0xc8, + 0x12, 0x81, 0x88, 0x5c, 0x5b, 0x3e, 0x08, 0x53, 0x7a, 0xf7, 0x1a, 0x64, + 0xdf, 0xb8, 0x50, 0x61, 0xcc, 0x53, 0x51, 0x40, 0x29, 0x4b, 0xc2, 0xf4, + 0xae, 0x3a, 0x5f, 0xe4, 0xca, 0xad, 0x26, 0xcc, 0x4e, 0x61, 0x43, 0xe5, + 0xfd, 0x57, 0xa6, 0x37, 0x70, 0xce, 0x43, 0x2b, 0xb0, 0x94, 0xc3, 0x92, + 0xe9, 0xe1, 0x5f, 0xaa, 0x10, 0x49, 0xb7, 0x69, 0xe4, 0xe0, 0xd0, 0x1f, + 0x64, 0xa4, 0x2b, 0xcd, 0x1f, 0x6f, 0xa0, 0xf8, 0x84, 0x24, 0x18, 0xce, + 0x79, 0x3d, 0xa9, 0x91, 0xbf, 0x54, 0x18, 0x13, 0x89, 0x99, 0x54, 0x11, + 0x0d, 0x55, 0xc5, 0x26, 0x0b, 0x79, 0x4f, 0x5a, 0x1c, 0x6e, 0xf9, 0x63, + 0xdb, 0x14, 0x80, 0xa4, 0x07, 0xab, 0xfa, 0xb2, 0xa5, 0xb9, 0x88, 0xdd, + 0x91, 0xfe, 0x65, 0x3b, 0xa4, 0xa3, 0x79, 0xbe, 0x89, 0x4d, 0xe1, 0xd0, + 0xb0, 0xf4, 0xc8, 0x17, 0x0c, 0x0a, 0x96, 0x14, 0x7c, 0x09, 0xb7, 0x6c, + 0xe1, 0xc2, 0xd8, 0x55, 0xd4, 0x18, 0xa0, 0xaa, 0x41, 0x69, 0x70, 0x24, + 0xa3, 0xb9, 0xef, 0xe9, 0x5a, 0xdc, 0x3e, 0xeb, 0x94, 0x4a, 0xf0, 0xb7, + 0xde, 0x5f, 0x0e, 0x76, 0xfa, 0xfb, 0xfb, 0x69, 0x03, 0x45, 0x40, 0x50, + 0xee, 0x72, 0x0c, 0xa4, 0x12, 0x86, 0x81, 0xcd, 0x13, 0xd1, 0x4e, 0xc4, + 0x3c, 0xca, 0x4e, 0x0d, 0xd2, 0x26, 0xf1, 0x00, 0xb7, 0xb4, 0xa6, 0xa2, + 0xe1, 0x6e, 0x7a, 0x81, 0xfd, 0x30, 0xac, 0x7a, 0x1f, 0xc7, 0x59, 0x7b, +} + +var certSet3Cert41 = []byte{ + 0x30, 0x82, 0x05, 0x03, 0x30, 0x82, 0x03, 0xeb, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x04, 0x51, 0xd3, 0x60, 0xee, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xbe, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0d, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x1f, 0x53, 0x65, 0x65, 0x20, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x6c, 0x65, 0x67, + 0x61, 0x6c, 0x2d, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x31, 0x39, 0x30, 0x37, + 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x30, 0x28, 0x63, 0x29, 0x20, 0x32, + 0x30, 0x30, 0x39, 0x20, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, + 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, + 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x32, 0x30, 0x30, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x29, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, + 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x31, 0x30, 0x32, 0x32, 0x31, 0x37, 0x30, + 0x35, 0x31, 0x34, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x31, 0x30, 0x32, 0x33, + 0x30, 0x37, 0x33, 0x33, 0x32, 0x32, 0x5a, 0x30, 0x81, 0xba, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x45, 0x6e, + 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, + 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, 0x53, 0x65, + 0x65, 0x20, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, + 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x2d, + 0x74, 0x65, 0x72, 0x6d, 0x73, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, + 0x04, 0x0b, 0x13, 0x30, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x31, 0x32, + 0x20, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, + 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x2e, 0x30, 0x2c, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x25, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x20, 0x43, + 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, + 0x20, 0x4c, 0x31, 0x4b, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, + 0x00, 0xda, 0x3f, 0x96, 0xd0, 0x4d, 0xb9, 0x2f, 0x44, 0xe7, 0xdb, 0x39, + 0x5e, 0x9b, 0x50, 0xee, 0x5c, 0xa5, 0x61, 0xda, 0x41, 0x67, 0x53, 0x09, + 0xaa, 0x00, 0x9a, 0x8e, 0x57, 0x7f, 0x29, 0x6b, 0xdb, 0xc7, 0xe1, 0x21, + 0x24, 0xaa, 0x3a, 0xd0, 0x8d, 0x47, 0x23, 0xd2, 0xed, 0x72, 0x16, 0xf0, + 0x91, 0x21, 0xd2, 0x5d, 0xb7, 0xb8, 0x4b, 0xa8, 0x83, 0x8f, 0xb7, 0x91, + 0x32, 0x68, 0xcf, 0xce, 0x25, 0x93, 0x2c, 0xb2, 0x7d, 0x97, 0xc8, 0xfe, + 0xc1, 0xb4, 0x17, 0xba, 0x09, 0x9e, 0x03, 0x90, 0x93, 0x7b, 0x7c, 0x49, + 0x83, 0x22, 0x68, 0x8a, 0x9b, 0xde, 0x47, 0xc3, 0x31, 0x98, 0x7a, 0x2e, + 0x7d, 0x40, 0x0b, 0xd2, 0xef, 0x3e, 0xd3, 0xb2, 0x8c, 0xaa, 0x8f, 0x48, + 0xa9, 0xff, 0x00, 0xe8, 0x29, 0x58, 0x06, 0xf7, 0xb6, 0x93, 0x5a, 0x94, + 0x73, 0x26, 0x26, 0xad, 0x58, 0x0e, 0xe5, 0x42, 0xb8, 0xd5, 0xea, 0x73, + 0x79, 0x64, 0x68, 0x53, 0x25, 0xb8, 0x84, 0xcf, 0x94, 0x7a, 0xae, 0x06, + 0x45, 0x0c, 0xa3, 0x6b, 0x4d, 0xd0, 0xc6, 0xbe, 0xea, 0x18, 0xa4, 0x36, + 0xf0, 0x92, 0xb2, 0xba, 0x1c, 0x88, 0x8f, 0x3a, 0x52, 0x7f, 0xf7, 0x5e, + 0x6d, 0x83, 0x1c, 0x9d, 0xf0, 0x1f, 0xe5, 0xc3, 0xd6, 0xdd, 0xa5, 0x78, + 0x92, 0x3d, 0xb0, 0x6d, 0x2c, 0xea, 0xc9, 0xcf, 0x94, 0x41, 0x19, 0x71, + 0x44, 0x68, 0xba, 0x47, 0x3c, 0x04, 0xe9, 0x5d, 0xba, 0x3e, 0xf0, 0x35, + 0xf7, 0x15, 0xb6, 0x9e, 0xf2, 0x2e, 0x15, 0x1e, 0x3f, 0x47, 0xc8, 0xc8, + 0x38, 0xa7, 0x73, 0x45, 0x5d, 0x4d, 0xb0, 0x3b, 0xb1, 0x8e, 0x17, 0x29, + 0x37, 0xea, 0xdd, 0x05, 0x01, 0x22, 0xbb, 0x94, 0x36, 0x2a, 0x8d, 0x5b, + 0x35, 0xfe, 0x53, 0x19, 0x2f, 0x08, 0x46, 0xc1, 0x2a, 0xb3, 0x1a, 0x62, + 0x1d, 0x4e, 0x2b, 0xd9, 0x1b, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, + 0x01, 0x09, 0x30, 0x82, 0x01, 0x05, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x0f, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, + 0x02, 0x01, 0x00, 0x30, 0x33, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x01, 0x01, 0x04, 0x27, 0x30, 0x25, 0x30, 0x23, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x17, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x65, 0x6e, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x30, 0x30, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x29, 0x30, 0x27, 0x30, 0x25, 0xa0, 0x23, 0xa0, + 0x21, 0x86, 0x1f, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, + 0x6c, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, + 0x74, 0x2f, 0x67, 0x32, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3b, + 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, 0x06, + 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x70, 0x61, 0x30, + 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x82, 0xa2, + 0x70, 0x74, 0xdd, 0xbc, 0x53, 0x3f, 0xcf, 0x7b, 0xd4, 0xf7, 0xcd, 0x7f, + 0xa7, 0x60, 0xc6, 0x0a, 0x4c, 0xbf, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, + 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x6a, 0x72, 0x26, 0x7a, 0xd0, + 0x1e, 0xef, 0x7d, 0xe7, 0x3b, 0x69, 0x51, 0xd4, 0x6c, 0x8d, 0x9f, 0x90, + 0x12, 0x66, 0xab, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x3f, + 0x1c, 0x1a, 0x5b, 0xff, 0x40, 0x22, 0x1d, 0x8f, 0x35, 0x0c, 0x2d, 0xaa, + 0x99, 0x27, 0xab, 0xc0, 0x11, 0x32, 0x70, 0xd7, 0x36, 0x28, 0x69, 0xa5, + 0x8d, 0xb1, 0x27, 0x99, 0x42, 0xbe, 0xc4, 0x93, 0xeb, 0x48, 0x57, 0x43, + 0x71, 0x23, 0xc4, 0xe5, 0x4e, 0xad, 0xae, 0x43, 0x6f, 0x92, 0x76, 0xc5, + 0x19, 0xef, 0xca, 0xbc, 0x6f, 0x42, 0x4c, 0x16, 0x9a, 0x86, 0xa9, 0x04, + 0x38, 0xc7, 0x65, 0xf0, 0xf5, 0x0c, 0xe0, 0x4a, 0xdf, 0xa2, 0xfa, 0xce, + 0x1a, 0x11, 0xa8, 0x9c, 0x69, 0x2f, 0x1b, 0xdf, 0xea, 0xe2, 0x32, 0xf3, + 0xce, 0x4c, 0xbc, 0x46, 0x0c, 0xc0, 0x89, 0x80, 0xd1, 0x87, 0x6b, 0xa2, + 0xcf, 0x6b, 0xd4, 0x7f, 0xfd, 0xf5, 0x60, 0x52, 0x67, 0x57, 0xa0, 0x6d, + 0xd1, 0x64, 0x41, 0x14, 0x6d, 0x34, 0x62, 0xed, 0x06, 0x6c, 0x24, 0xf2, + 0x06, 0xbc, 0x28, 0x02, 0xaf, 0x03, 0x2d, 0xc2, 0x33, 0x05, 0xfb, 0xcb, + 0xaa, 0x16, 0xe8, 0x65, 0x10, 0x43, 0xf5, 0x69, 0x5c, 0xe3, 0x81, 0x58, + 0x99, 0xcd, 0x6b, 0xd3, 0xb8, 0xc7, 0x7b, 0x19, 0x55, 0xc9, 0x40, 0xce, + 0x79, 0x55, 0xb8, 0x73, 0x89, 0xe9, 0x5c, 0x40, 0x66, 0x43, 0x12, 0x7f, + 0x07, 0xb8, 0x65, 0x56, 0xd5, 0x8d, 0xc3, 0xa7, 0xf5, 0xb1, 0xb6, 0x65, + 0x9e, 0xc0, 0x83, 0x36, 0x7f, 0x16, 0x45, 0x3c, 0x74, 0x4b, 0x93, 0x8a, + 0x3c, 0xf1, 0x2b, 0xf5, 0x35, 0x70, 0x73, 0x7b, 0xe7, 0x82, 0x04, 0xb1, + 0x18, 0x98, 0x0e, 0xd4, 0x9c, 0x6f, 0x1a, 0xfc, 0xfc, 0xa7, 0x33, 0xa5, + 0xbb, 0xbb, 0x18, 0xf3, 0x6b, 0x7a, 0x5d, 0x32, 0x87, 0xf7, 0x6d, 0x25, + 0xe4, 0xe2, 0x76, 0x86, 0x21, 0x1e, 0x11, 0x46, 0xcd, 0x76, 0x0e, 0x6f, + 0x4f, 0xa4, 0x21, 0x71, 0x0a, 0x84, 0xa7, 0x2d, 0x36, 0xa9, 0x48, 0x22, + 0x51, 0x7e, 0x82, +} + +var certSet3Cert42 = []byte{ + 0x30, 0x82, 0x05, 0x0e, 0x30, 0x82, 0x03, 0xf6, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x0c, 0x0e, 0xe9, 0x4c, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x51, + 0xd3, 0x77, 0x85, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, 0xbe, 0x31, 0x0b, 0x30, + 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, + 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x45, 0x6e, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x28, + 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, 0x53, 0x65, 0x65, + 0x20, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, + 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x2d, 0x74, + 0x65, 0x72, 0x6d, 0x73, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, + 0x0b, 0x13, 0x30, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x39, 0x20, + 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x20, 0x2d, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, + 0x6e, 0x6c, 0x79, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x29, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6f, + 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x1e, 0x17, 0x0d, 0x31, + 0x35, 0x31, 0x30, 0x30, 0x35, 0x31, 0x39, 0x31, 0x33, 0x35, 0x36, 0x5a, + 0x17, 0x0d, 0x33, 0x30, 0x31, 0x32, 0x30, 0x35, 0x31, 0x39, 0x34, 0x33, + 0x35, 0x36, 0x5a, 0x30, 0x81, 0xba, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, + 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, + 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, + 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, + 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, 0x53, 0x65, 0x65, 0x20, 0x77, 0x77, + 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, + 0x74, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x2d, 0x74, 0x65, 0x72, 0x6d, + 0x73, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x30, + 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x31, 0x32, 0x20, 0x45, 0x6e, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, + 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, + 0x31, 0x2e, 0x30, 0x2c, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x25, 0x45, + 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x4c, 0x31, 0x4b, + 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, + 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xda, 0x3f, 0x96, + 0xd0, 0x4d, 0xb9, 0x2f, 0x44, 0xe7, 0xdb, 0x39, 0x5e, 0x9b, 0x50, 0xee, + 0x5c, 0xa5, 0x61, 0xda, 0x41, 0x67, 0x53, 0x09, 0xaa, 0x00, 0x9a, 0x8e, + 0x57, 0x7f, 0x29, 0x6b, 0xdb, 0xc7, 0xe1, 0x21, 0x24, 0xaa, 0x3a, 0xd0, + 0x8d, 0x47, 0x23, 0xd2, 0xed, 0x72, 0x16, 0xf0, 0x91, 0x21, 0xd2, 0x5d, + 0xb7, 0xb8, 0x4b, 0xa8, 0x83, 0x8f, 0xb7, 0x91, 0x32, 0x68, 0xcf, 0xce, + 0x25, 0x93, 0x2c, 0xb2, 0x7d, 0x97, 0xc8, 0xfe, 0xc1, 0xb4, 0x17, 0xba, + 0x09, 0x9e, 0x03, 0x90, 0x93, 0x7b, 0x7c, 0x49, 0x83, 0x22, 0x68, 0x8a, + 0x9b, 0xde, 0x47, 0xc3, 0x31, 0x98, 0x7a, 0x2e, 0x7d, 0x40, 0x0b, 0xd2, + 0xef, 0x3e, 0xd3, 0xb2, 0x8c, 0xaa, 0x8f, 0x48, 0xa9, 0xff, 0x00, 0xe8, + 0x29, 0x58, 0x06, 0xf7, 0xb6, 0x93, 0x5a, 0x94, 0x73, 0x26, 0x26, 0xad, + 0x58, 0x0e, 0xe5, 0x42, 0xb8, 0xd5, 0xea, 0x73, 0x79, 0x64, 0x68, 0x53, + 0x25, 0xb8, 0x84, 0xcf, 0x94, 0x7a, 0xae, 0x06, 0x45, 0x0c, 0xa3, 0x6b, + 0x4d, 0xd0, 0xc6, 0xbe, 0xea, 0x18, 0xa4, 0x36, 0xf0, 0x92, 0xb2, 0xba, + 0x1c, 0x88, 0x8f, 0x3a, 0x52, 0x7f, 0xf7, 0x5e, 0x6d, 0x83, 0x1c, 0x9d, + 0xf0, 0x1f, 0xe5, 0xc3, 0xd6, 0xdd, 0xa5, 0x78, 0x92, 0x3d, 0xb0, 0x6d, + 0x2c, 0xea, 0xc9, 0xcf, 0x94, 0x41, 0x19, 0x71, 0x44, 0x68, 0xba, 0x47, + 0x3c, 0x04, 0xe9, 0x5d, 0xba, 0x3e, 0xf0, 0x35, 0xf7, 0x15, 0xb6, 0x9e, + 0xf2, 0x2e, 0x15, 0x1e, 0x3f, 0x47, 0xc8, 0xc8, 0x38, 0xa7, 0x73, 0x45, + 0x5d, 0x4d, 0xb0, 0x3b, 0xb1, 0x8e, 0x17, 0x29, 0x37, 0xea, 0xdd, 0x05, + 0x01, 0x22, 0xbb, 0x94, 0x36, 0x2a, 0x8d, 0x5b, 0x35, 0xfe, 0x53, 0x19, + 0x2f, 0x08, 0x46, 0xc1, 0x2a, 0xb3, 0x1a, 0x62, 0x1d, 0x4e, 0x2b, 0xd9, + 0x1b, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x0c, 0x30, 0x82, + 0x01, 0x08, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, + 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, + 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, + 0x01, 0x00, 0x30, 0x33, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x01, 0x01, 0x04, 0x27, 0x30, 0x25, 0x30, 0x23, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x17, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x65, 0x6e, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x30, 0x30, 0x06, 0x03, 0x55, + 0x1d, 0x1f, 0x04, 0x29, 0x30, 0x27, 0x30, 0x25, 0xa0, 0x23, 0xa0, 0x21, + 0x86, 0x1f, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, + 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, + 0x2f, 0x67, 0x32, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3b, 0x06, + 0x03, 0x55, 0x1d, 0x20, 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, 0x06, 0x04, + 0x55, 0x1d, 0x20, 0x00, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, + 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x70, 0x61, 0x30, 0x1d, + 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x82, 0xa2, 0x70, + 0x74, 0xdd, 0xbc, 0x53, 0x3f, 0xcf, 0x7b, 0xd4, 0xf7, 0xcd, 0x7f, 0xa7, + 0x60, 0xc6, 0x0a, 0x4c, 0xbf, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, + 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x6a, 0x72, 0x26, 0x7a, 0xd0, 0x1e, + 0xef, 0x7d, 0xe7, 0x3b, 0x69, 0x51, 0xd4, 0x6c, 0x8d, 0x9f, 0x90, 0x12, + 0x66, 0xab, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x39, 0xd5, + 0x8e, 0x98, 0x83, 0x61, 0xc8, 0x2c, 0x63, 0xd3, 0x70, 0x1d, 0x19, 0x30, + 0xcb, 0xf6, 0x09, 0xac, 0xcc, 0x69, 0xd5, 0xc9, 0xdc, 0x37, 0x41, 0xf2, + 0x32, 0x0f, 0xef, 0x74, 0xc3, 0x58, 0xf6, 0x78, 0x27, 0x09, 0x34, 0x08, + 0x95, 0x92, 0x2f, 0xd7, 0xdf, 0xb8, 0xa3, 0xfd, 0x0e, 0x81, 0xe9, 0xa4, + 0x9c, 0xd3, 0x3f, 0x4d, 0x68, 0x2b, 0x15, 0x31, 0x0a, 0x15, 0xcc, 0x52, + 0x04, 0x93, 0xe8, 0x93, 0x50, 0xc3, 0xd9, 0xb1, 0xe2, 0xe1, 0x68, 0xb7, + 0x3a, 0x09, 0x74, 0xf1, 0x34, 0x58, 0x0a, 0x3f, 0x77, 0x98, 0x40, 0xb8, + 0xe6, 0x68, 0xff, 0x5d, 0xe4, 0xc8, 0x46, 0xc5, 0xec, 0x81, 0xd7, 0xc9, + 0x82, 0x18, 0x5c, 0x83, 0xce, 0x71, 0xd8, 0xbc, 0xbf, 0xac, 0x99, 0x02, + 0x93, 0xdb, 0x94, 0x98, 0x84, 0xd2, 0x9c, 0xa6, 0xb5, 0xfe, 0x5c, 0xbb, + 0xf0, 0x4a, 0xaf, 0x21, 0xac, 0xc2, 0x3f, 0x49, 0x24, 0x67, 0xd6, 0x2e, + 0x8e, 0xcf, 0xac, 0xcc, 0x64, 0x15, 0x18, 0x72, 0xe5, 0x6c, 0x77, 0xd3, + 0x52, 0xa8, 0xb9, 0xdd, 0x8d, 0xac, 0x00, 0x4a, 0x35, 0x19, 0xd4, 0x6f, + 0x73, 0xa3, 0x75, 0xef, 0x6b, 0x64, 0xc3, 0xe0, 0x8d, 0x83, 0x12, 0xa1, + 0x8a, 0xe7, 0x0e, 0x86, 0x4d, 0xd8, 0xb4, 0x20, 0x1b, 0xbe, 0x6a, 0xa5, + 0x8c, 0x4b, 0x68, 0x66, 0xe3, 0x2b, 0xc7, 0x58, 0x0b, 0xfb, 0x56, 0x10, + 0xd4, 0x91, 0xfb, 0x1d, 0xd3, 0x31, 0x58, 0x10, 0x8c, 0x44, 0xe3, 0x75, + 0x7b, 0x10, 0x9d, 0xb5, 0x38, 0xb1, 0xf6, 0xaa, 0xca, 0x81, 0x64, 0x6c, + 0xe8, 0xf2, 0xe2, 0x81, 0x55, 0x97, 0x51, 0x7f, 0xe1, 0xc2, 0x27, 0x50, + 0xa2, 0xc9, 0x3c, 0x5b, 0x00, 0x43, 0xf6, 0x5b, 0xb9, 0xd5, 0xa5, 0xfc, + 0xff, 0x07, 0x50, 0x40, 0x67, 0x07, 0xb0, 0x55, 0xf0, 0xb7, 0x7e, 0x6e, + 0x2d, 0xcc, +} + +var certSet3Cert43 = []byte{ + 0x30, 0x82, 0x05, 0x1f, 0x30, 0x82, 0x04, 0x07, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x04, 0x07, 0x27, 0xa4, 0x6b, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x5a, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, + 0x45, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x09, + 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x31, 0x13, 0x30, + 0x11, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65, + 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x19, 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, + 0x72, 0x65, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, + 0x30, 0x34, 0x30, 0x32, 0x31, 0x34, 0x33, 0x36, 0x31, 0x30, 0x5a, 0x17, + 0x0d, 0x32, 0x31, 0x30, 0x34, 0x30, 0x32, 0x31, 0x34, 0x33, 0x35, 0x35, + 0x32, 0x5a, 0x30, 0x81, 0x8d, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, + 0x04, 0x06, 0x13, 0x02, 0x4e, 0x4c, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, + 0x55, 0x04, 0x07, 0x13, 0x09, 0x41, 0x6d, 0x73, 0x74, 0x65, 0x72, 0x64, + 0x61, 0x6d, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x1c, 0x56, 0x65, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x20, 0x45, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x20, 0x53, 0x6f, 0x6c, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, + 0x04, 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72, 0x75, + 0x73, 0x74, 0x31, 0x2e, 0x30, 0x2c, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x25, 0x56, 0x65, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x20, 0x41, 0x6b, 0x61, + 0x6d, 0x61, 0x69, 0x20, 0x53, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x20, 0x43, 0x41, 0x20, 0x47, 0x31, 0x34, 0x2d, 0x53, 0x48, + 0x41, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xdd, + 0x6e, 0x9e, 0x02, 0x69, 0x02, 0xb5, 0xa3, 0x99, 0x2e, 0x08, 0x64, 0x32, + 0x6a, 0x59, 0xf3, 0xc6, 0x9e, 0xa6, 0x20, 0x07, 0xd2, 0x48, 0xd1, 0xa8, + 0x93, 0xc7, 0xea, 0x47, 0x8f, 0x83, 0x39, 0x40, 0xd7, 0x20, 0x5d, 0x8d, + 0x9a, 0xba, 0xab, 0xd8, 0x70, 0xec, 0x9d, 0x88, 0xd1, 0xbd, 0x62, 0xf6, + 0xdb, 0xec, 0x9d, 0x5e, 0x35, 0x01, 0x76, 0x03, 0x23, 0xe5, 0x6f, 0xd2, + 0xaf, 0x46, 0x35, 0x59, 0x5a, 0x5c, 0xd1, 0xa8, 0x23, 0xc1, 0xeb, 0xe9, + 0x20, 0xd4, 0x49, 0xd6, 0x3f, 0x00, 0xd8, 0xa8, 0x22, 0xde, 0x43, 0x79, + 0x81, 0xac, 0xe9, 0xa4, 0x92, 0xf5, 0x77, 0x70, 0x05, 0x1e, 0x5c, 0xb6, + 0xa0, 0xf7, 0x90, 0xa4, 0xcd, 0xab, 0x28, 0x2c, 0x90, 0xc2, 0xe7, 0x0f, + 0xc3, 0xaf, 0x1c, 0x47, 0x59, 0xd5, 0x84, 0x2e, 0xdf, 0x26, 0x07, 0x45, + 0x23, 0x5a, 0xc6, 0xe8, 0x90, 0xc8, 0x85, 0x4b, 0x8c, 0x16, 0x1e, 0x60, + 0xf9, 0x01, 0x13, 0xf1, 0x14, 0x1f, 0xe6, 0xe8, 0x14, 0xed, 0xc5, 0xd2, + 0x6f, 0x63, 0x28, 0x6e, 0x72, 0x8c, 0x49, 0xae, 0x08, 0x72, 0xc7, 0x93, + 0x95, 0xb4, 0x0b, 0x0c, 0xae, 0x8f, 0x9a, 0x67, 0x84, 0xf5, 0x57, 0x1b, + 0xdb, 0x81, 0xd7, 0x17, 0x9d, 0x41, 0x11, 0x43, 0x19, 0xbd, 0x6d, 0x4a, + 0x85, 0xed, 0x8f, 0x70, 0x25, 0xab, 0x66, 0xab, 0xf6, 0xfa, 0x6d, 0x1c, + 0x3c, 0xab, 0xed, 0x17, 0xbd, 0x56, 0x84, 0xe1, 0xdb, 0x75, 0x33, 0xb2, + 0x28, 0x4b, 0x99, 0x8e, 0xf9, 0x4b, 0x82, 0x33, 0x50, 0x9f, 0x92, 0x53, + 0xed, 0xfa, 0xad, 0x0f, 0x95, 0x9c, 0xa3, 0xf2, 0xcb, 0x60, 0xf0, 0x77, + 0x1d, 0xc9, 0x01, 0x8b, 0x5f, 0x2d, 0x86, 0xbe, 0xbf, 0x36, 0xb8, 0x24, + 0x96, 0x13, 0x7c, 0xc1, 0x86, 0x5a, 0x6c, 0xc1, 0x48, 0x2a, 0x7f, 0x3e, + 0x93, 0x60, 0xc5, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0xb7, + 0x30, 0x82, 0x01, 0xb3, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, + 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x02, + 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, + 0x41, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xb1, 0x3e, 0x01, 0x32, + 0x30, 0x34, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x02, 0x01, 0x16, 0x26, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x72, + 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x30, 0x81, 0xba, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x81, 0xad, 0x30, 0x81, + 0xaa, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, + 0x01, 0x86, 0x26, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, + 0x73, 0x70, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, + 0x65, 0x72, 0x6f, 0x6f, 0x74, 0x30, 0x39, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x2d, 0x68, 0x74, 0x74, 0x70, 0x73, + 0x3a, 0x2f, 0x2f, 0x63, 0x61, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x6f, 0x6d, + 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, + 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x72, 0x6f, 0x6f, 0x74, + 0x2e, 0x63, 0x72, 0x74, 0x30, 0x39, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x30, 0x02, 0x86, 0x2d, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, + 0x2f, 0x2f, 0x63, 0x61, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x6f, 0x6d, 0x6e, + 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x61, + 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x72, 0x6f, 0x6f, 0x74, 0x2e, + 0x64, 0x65, 0x72, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, + 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0xc6, 0x30, 0x1f, 0x06, 0x03, 0x55, + 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xe5, 0x9d, 0x59, 0x30, + 0x82, 0x47, 0x58, 0xcc, 0xac, 0xfa, 0x08, 0x54, 0x36, 0x86, 0x7b, 0x3a, + 0xb5, 0x04, 0x4d, 0xf0, 0x30, 0x42, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, + 0x3b, 0x30, 0x39, 0x30, 0x37, 0xa0, 0x35, 0xa0, 0x33, 0x86, 0x31, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x64, 0x70, 0x31, 0x2e, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x52, 0x4c, 0x2f, 0x4f, 0x6d, 0x6e, 0x69, + 0x72, 0x6f, 0x6f, 0x74, 0x32, 0x30, 0x32, 0x35, 0x2e, 0x63, 0x72, 0x6c, + 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xf8, + 0xbd, 0xfa, 0xaf, 0x73, 0x77, 0xc6, 0xc7, 0x1b, 0xf9, 0x4b, 0x4d, 0x11, + 0xa7, 0xd1, 0x33, 0xaf, 0xaf, 0x72, 0x11, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, + 0x01, 0x01, 0x00, 0x80, 0xd9, 0x7a, 0xed, 0x72, 0x05, 0x37, 0x8f, 0x61, + 0xaa, 0x73, 0x7c, 0x9a, 0x6a, 0xfc, 0xfe, 0x01, 0xe2, 0x19, 0x81, 0x70, + 0x07, 0x25, 0x32, 0xb0, 0xf0, 0x6f, 0x3b, 0xc7, 0x6a, 0x28, 0x3d, 0xe4, + 0x51, 0x87, 0xe6, 0x7e, 0x82, 0xec, 0xae, 0x48, 0xa7, 0xb1, 0x77, 0x38, + 0xc2, 0xd6, 0x56, 0xaf, 0x8f, 0xf2, 0x01, 0xfc, 0x65, 0x65, 0x10, 0x09, + 0xf7, 0x74, 0x29, 0xb5, 0x0e, 0x92, 0xee, 0x90, 0x98, 0xd1, 0x88, 0xa2, + 0x65, 0xb7, 0xcd, 0x9c, 0x0e, 0xa7, 0x86, 0x98, 0x28, 0xbc, 0xae, 0x15, + 0x83, 0xb6, 0x1a, 0xd7, 0x1d, 0xec, 0x19, 0xda, 0x7a, 0x8e, 0x40, 0xf9, + 0x99, 0x15, 0xd5, 0x7d, 0xa5, 0xba, 0xab, 0xfd, 0x26, 0x98, 0x6e, 0x9c, + 0x41, 0x3b, 0xb6, 0x81, 0x18, 0xec, 0x70, 0x48, 0xd7, 0x6e, 0x7f, 0xa6, + 0xe1, 0x77, 0x25, 0xd6, 0xdd, 0x62, 0xe8, 0x52, 0xf3, 0x8c, 0x16, 0x39, + 0x67, 0xe2, 0x22, 0x0d, 0x77, 0x2e, 0xfb, 0x11, 0x6c, 0xe4, 0xdd, 0x38, + 0xb4, 0x27, 0x5f, 0x03, 0xa8, 0x3d, 0x44, 0xe2, 0xf2, 0x84, 0x4b, 0x84, + 0xfd, 0x56, 0xa6, 0x9e, 0x4d, 0x7b, 0xa2, 0x16, 0x4f, 0x07, 0xf5, 0x34, + 0x24, 0x72, 0xa5, 0xa2, 0xfa, 0x16, 0x66, 0x2a, 0xa4, 0x4a, 0x0e, 0xc8, + 0x0d, 0x27, 0x44, 0x9c, 0x77, 0xd4, 0x12, 0x10, 0x87, 0xd2, 0x00, 0x2c, + 0x7a, 0xbb, 0x8e, 0x88, 0x22, 0x91, 0x15, 0xbe, 0xa2, 0x59, 0xca, 0x34, + 0xe0, 0x1c, 0x61, 0x94, 0x86, 0x20, 0x33, 0xcd, 0xe7, 0x4c, 0x5d, 0x3b, + 0x92, 0x3e, 0xcb, 0xd6, 0x2d, 0xea, 0x54, 0xfa, 0xfb, 0xaf, 0x54, 0xf5, + 0xa8, 0xc5, 0x0b, 0xca, 0x8b, 0x87, 0x00, 0xe6, 0x9f, 0xe6, 0x95, 0xbf, + 0xb7, 0xc4, 0xa3, 0x59, 0xf5, 0x16, 0x6c, 0x5f, 0x3e, 0x69, 0x55, 0x80, + 0x39, 0xf6, 0x75, 0x50, 0x14, 0x3e, 0x32, +} + +var certSet3Cert44 = []byte{ + 0x30, 0x82, 0x05, 0x2b, 0x30, 0x82, 0x04, 0x13, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x7e, 0xe1, 0x4a, 0x6f, 0x6f, 0xef, 0xf2, 0xd3, 0x7f, + 0x3f, 0xad, 0x65, 0x4d, 0x3a, 0xda, 0xb4, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xca, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, + 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x31, 0x3a, 0x30, 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28, + 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69, + 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, + 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, + 0x31, 0x45, 0x30, 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56, + 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30, + 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x33, 0x31, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x31, 0x30, 0x33, 0x30, + 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x77, 0x31, 0x0b, 0x30, + 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x1d, + 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x14, 0x53, 0x79, 0x6d, + 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x04, 0x0b, 0x13, 0x16, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, + 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x1f, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x45, 0x56, 0x20, 0x53, 0x53, 0x4c, + 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xd8, 0xa1, 0x65, 0x74, 0x23, 0xe8, 0x2b, + 0x64, 0xe2, 0x32, 0xd7, 0x33, 0x37, 0x3d, 0x8e, 0xf5, 0x34, 0x16, 0x48, + 0xdd, 0x4f, 0x7f, 0x87, 0x1c, 0xf8, 0x44, 0x23, 0x13, 0x8e, 0xfb, 0x11, + 0xd8, 0x44, 0x5a, 0x18, 0x71, 0x8e, 0x60, 0x16, 0x26, 0x92, 0x9b, 0xfd, + 0x17, 0x0b, 0xe1, 0x71, 0x70, 0x42, 0xfe, 0xbf, 0xfa, 0x1c, 0xc0, 0xaa, + 0xa3, 0xa7, 0xb5, 0x71, 0xe8, 0xff, 0x18, 0x83, 0xf6, 0xdf, 0x10, 0x0a, + 0x13, 0x62, 0xc8, 0x3d, 0x9c, 0xa7, 0xde, 0x2e, 0x3f, 0x0c, 0xd9, 0x1d, + 0xe7, 0x2e, 0xfb, 0x2a, 0xce, 0xc8, 0x9a, 0x7f, 0x87, 0xbf, 0xd8, 0x4c, + 0x04, 0x15, 0x32, 0xc9, 0xd1, 0xcc, 0x95, 0x71, 0xa0, 0x4e, 0x28, 0x4f, + 0x84, 0xd9, 0x35, 0xfb, 0xe3, 0x86, 0x6f, 0x94, 0x53, 0xe6, 0x72, 0x8a, + 0x63, 0x67, 0x2e, 0xbe, 0x69, 0xf6, 0xf7, 0x6e, 0x8e, 0x9c, 0x60, 0x04, + 0xeb, 0x29, 0xfa, 0xc4, 0x47, 0x42, 0xd2, 0x78, 0x98, 0xe3, 0xec, 0x0b, + 0xa5, 0x92, 0xdc, 0xb7, 0x9a, 0xbd, 0x80, 0x64, 0x2b, 0x38, 0x7c, 0x38, + 0x09, 0x5b, 0x66, 0xf6, 0x2d, 0x95, 0x7a, 0x86, 0xb2, 0x34, 0x2e, 0x85, + 0x9e, 0x90, 0x0e, 0x5f, 0xb7, 0x5d, 0xa4, 0x51, 0x72, 0x46, 0x70, 0x13, + 0xbf, 0x67, 0xf2, 0xb6, 0xa7, 0x4d, 0x14, 0x1e, 0x6c, 0xb9, 0x53, 0xee, + 0x23, 0x1a, 0x4e, 0x8d, 0x48, 0x55, 0x43, 0x41, 0xb1, 0x89, 0x75, 0x6a, + 0x40, 0x28, 0xc5, 0x7d, 0xdd, 0xd2, 0x6e, 0xd2, 0x02, 0x19, 0x2f, 0x7b, + 0x24, 0x94, 0x4b, 0xeb, 0xf1, 0x1a, 0xa9, 0x9b, 0xe3, 0x23, 0x9a, 0xea, + 0xfa, 0x33, 0xab, 0x0a, 0x2c, 0xb7, 0xf4, 0x60, 0x08, 0xdd, 0x9f, 0x1c, + 0xcd, 0xdd, 0x2d, 0x01, 0x66, 0x80, 0xaf, 0xb3, 0x2f, 0x29, 0x1d, 0x23, + 0xb8, 0x8a, 0xe1, 0xa1, 0x70, 0x07, 0x0c, 0x34, 0x0f, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x82, 0x01, 0x5d, 0x30, 0x82, 0x01, 0x59, 0x30, 0x2f, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x23, + 0x30, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x73, + 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x30, + 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, + 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x65, 0x06, 0x03, 0x55, + 0x1d, 0x20, 0x04, 0x5e, 0x30, 0x5c, 0x30, 0x5a, 0x06, 0x04, 0x55, 0x1d, + 0x20, 0x00, 0x30, 0x52, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x79, 0x6d, 0x61, 0x75, 0x74, 0x68, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x28, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x02, 0x30, 0x1c, 0x1a, 0x1a, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, + 0x79, 0x6d, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, + 0x70, 0x61, 0x30, 0x30, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x29, 0x30, + 0x27, 0x30, 0x25, 0xa0, 0x23, 0xa0, 0x21, 0x86, 0x1f, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x73, 0x31, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63, 0x61, 0x33, 0x2d, 0x67, 0x35, + 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, + 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x29, 0x06, 0x03, + 0x55, 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31, + 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79, + 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d, + 0x35, 0x33, 0x33, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, + 0x04, 0x14, 0x01, 0x59, 0xab, 0xe7, 0xdd, 0x3a, 0x0b, 0x59, 0xa6, 0x64, + 0x63, 0xd6, 0xcf, 0x20, 0x07, 0x57, 0xd5, 0x91, 0xe7, 0x6a, 0x30, 0x1f, + 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x7f, + 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09, 0xf3, 0x43, + 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, 0x33, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, + 0x01, 0x01, 0x00, 0x42, 0x01, 0x55, 0x7b, 0xd0, 0x16, 0x1a, 0x5d, 0x58, + 0xe8, 0xbb, 0x9b, 0xa8, 0x4d, 0xd7, 0xf3, 0xd7, 0xeb, 0x13, 0x94, 0x86, + 0xd6, 0x7f, 0x21, 0x0b, 0x47, 0xbc, 0x57, 0x9b, 0x92, 0x5d, 0x4f, 0x05, + 0x9f, 0x38, 0xa4, 0x10, 0x7c, 0xcf, 0x83, 0xbe, 0x06, 0x43, 0x46, 0x8d, + 0x08, 0xbc, 0x6a, 0xd7, 0x10, 0xa6, 0xfa, 0xab, 0xaf, 0x2f, 0x61, 0xa8, + 0x63, 0xf2, 0x65, 0xdf, 0x7f, 0x4c, 0x88, 0x12, 0x88, 0x4f, 0xb3, 0x69, + 0xd9, 0xff, 0x27, 0xc0, 0x0a, 0x97, 0x91, 0x8f, 0x56, 0xfb, 0x89, 0xc4, + 0xa8, 0xbb, 0x92, 0x2d, 0x1b, 0x73, 0xb0, 0xc6, 0xab, 0x36, 0xf4, 0x96, + 0x6c, 0x20, 0x08, 0xef, 0x0a, 0x1e, 0x66, 0x24, 0x45, 0x4f, 0x67, 0x00, + 0x40, 0xc8, 0x07, 0x54, 0x74, 0x33, 0x3b, 0xa6, 0xad, 0xbb, 0x23, 0x9f, + 0x66, 0xed, 0xa2, 0x44, 0x70, 0x34, 0xfb, 0x0e, 0xea, 0x01, 0xfd, 0xcf, + 0x78, 0x74, 0xdf, 0xa7, 0xad, 0x55, 0xb7, 0x5f, 0x4d, 0xf6, 0xd6, 0x3f, + 0xe0, 0x86, 0xce, 0x24, 0xc7, 0x42, 0xa9, 0x13, 0x14, 0x44, 0x35, 0x4b, + 0xb6, 0xdf, 0xc9, 0x60, 0xac, 0x0c, 0x7f, 0xd9, 0x93, 0x21, 0x4b, 0xee, + 0x9c, 0xe4, 0x49, 0x02, 0x98, 0xd3, 0x60, 0x7b, 0x5c, 0xbc, 0xd5, 0x30, + 0x2f, 0x07, 0xce, 0x44, 0x42, 0xc4, 0x0b, 0x99, 0xfe, 0xe6, 0x9f, 0xfc, + 0xb0, 0x78, 0x86, 0x51, 0x6d, 0xd1, 0x2c, 0x9d, 0xc6, 0x96, 0xfb, 0x85, + 0x82, 0xbb, 0x04, 0x2f, 0xf7, 0x62, 0x80, 0xef, 0x62, 0xda, 0x7f, 0xf6, + 0x0e, 0xac, 0x90, 0xb8, 0x56, 0xbd, 0x79, 0x3f, 0xf2, 0x80, 0x6e, 0xa3, + 0xd9, 0xb9, 0x0f, 0x5d, 0x3a, 0x07, 0x1d, 0x91, 0x93, 0x86, 0x4b, 0x29, + 0x4c, 0xe1, 0xdc, 0xb5, 0xe1, 0xe0, 0x33, 0x9d, 0xb3, 0xcb, 0x36, 0x91, + 0x4b, 0xfe, 0xa1, 0xb4, 0xee, 0xf0, 0xf9, +} + +var certSet3Cert45 = []byte{ + 0x30, 0x82, 0x05, 0x38, 0x30, 0x82, 0x04, 0x20, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x51, 0x3f, 0xb9, 0x74, 0x38, 0x70, 0xb7, 0x34, 0x40, + 0x41, 0x8d, 0x30, 0x93, 0x06, 0x99, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xca, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, + 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x31, 0x3a, 0x30, 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28, + 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69, + 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, + 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, + 0x31, 0x45, 0x30, 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56, + 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30, + 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x33, 0x31, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x31, 0x30, 0x33, 0x30, + 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x7e, 0x31, 0x0b, 0x30, + 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x1d, + 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x14, 0x53, 0x79, 0x6d, + 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x04, 0x0b, 0x13, 0x16, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, + 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x26, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, + 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x20, 0x2d, + 0x20, 0x47, 0x34, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, + 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, + 0xb2, 0xd8, 0x05, 0xca, 0x1c, 0x74, 0x2d, 0xb5, 0x17, 0x56, 0x39, 0xc5, + 0x4a, 0x52, 0x09, 0x96, 0xe8, 0x4b, 0xd8, 0x0c, 0xf1, 0x68, 0x9f, 0x9a, + 0x42, 0x28, 0x62, 0xc3, 0xa5, 0x30, 0x53, 0x7e, 0x55, 0x11, 0x82, 0x5b, + 0x03, 0x7a, 0x0d, 0x2f, 0xe1, 0x79, 0x04, 0xc9, 0xb4, 0x96, 0x77, 0x19, + 0x81, 0x01, 0x94, 0x59, 0xf9, 0xbc, 0xf7, 0x7a, 0x99, 0x27, 0x82, 0x2d, + 0xb7, 0x83, 0xdd, 0x5a, 0x27, 0x7f, 0xb2, 0x03, 0x7a, 0x9c, 0x53, 0x25, + 0xe9, 0x48, 0x1f, 0x46, 0x4f, 0xc8, 0x9d, 0x29, 0xf8, 0xbe, 0x79, 0x56, + 0xf6, 0xf7, 0xfd, 0xd9, 0x3a, 0x68, 0xda, 0x8b, 0x4b, 0x82, 0x33, 0x41, + 0x12, 0xc3, 0xc8, 0x3c, 0xcc, 0xd6, 0x96, 0x7a, 0x84, 0x21, 0x1a, 0x22, + 0x04, 0x03, 0x27, 0x17, 0x8b, 0x1c, 0x68, 0x61, 0x93, 0x0f, 0x0e, 0x51, + 0x80, 0x33, 0x1d, 0xb4, 0xb5, 0xce, 0xeb, 0x7e, 0xd0, 0x62, 0xac, 0xee, + 0xb3, 0x7b, 0x01, 0x74, 0xef, 0x69, 0x35, 0xeb, 0xca, 0xd5, 0x3d, 0xa9, + 0xee, 0x97, 0x98, 0xca, 0x8d, 0xaa, 0x44, 0x0e, 0x25, 0x99, 0x4a, 0x15, + 0x96, 0xa4, 0xce, 0x6d, 0x02, 0x54, 0x1f, 0x2a, 0x6a, 0x26, 0xe2, 0x06, + 0x3a, 0x63, 0x48, 0xac, 0xb4, 0x4c, 0xd1, 0x75, 0x93, 0x50, 0xff, 0x13, + 0x2f, 0xd6, 0xda, 0xe1, 0xc6, 0x18, 0xf5, 0x9f, 0xc9, 0x25, 0x5d, 0xf3, + 0x00, 0x3a, 0xde, 0x26, 0x4d, 0xb4, 0x29, 0x09, 0xcd, 0x0f, 0x3d, 0x23, + 0x6f, 0x16, 0x4a, 0x81, 0x16, 0xfb, 0xf2, 0x83, 0x10, 0xc3, 0xb8, 0xd6, + 0xd8, 0x55, 0x32, 0x3d, 0xf1, 0xbd, 0x0f, 0xbd, 0x8c, 0x52, 0x95, 0x4a, + 0x16, 0x97, 0x7a, 0x52, 0x21, 0x63, 0x75, 0x2f, 0x16, 0xf9, 0xc4, 0x66, + 0xbe, 0xf5, 0xb5, 0x09, 0xd8, 0xff, 0x27, 0x00, 0xcd, 0x44, 0x7c, 0x6f, + 0x4b, 0x3f, 0xb0, 0xf7, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, + 0x63, 0x30, 0x82, 0x01, 0x5f, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, + 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, + 0x00, 0x30, 0x30, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x29, 0x30, 0x27, + 0x30, 0x25, 0xa0, 0x23, 0xa0, 0x21, 0x86, 0x1f, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x73, 0x31, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63, 0x61, 0x33, 0x2d, 0x67, 0x35, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, + 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x2f, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x23, 0x30, 0x21, 0x30, + 0x1f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, + 0x13, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x73, 0x32, 0x2e, 0x73, + 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x6b, 0x06, 0x03, + 0x55, 0x1d, 0x20, 0x04, 0x64, 0x30, 0x62, 0x30, 0x60, 0x06, 0x0a, 0x60, + 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07, 0x36, 0x30, 0x52, 0x30, + 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, + 0x1a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, + 0x73, 0x79, 0x6d, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x63, 0x70, 0x73, 0x30, 0x28, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x02, 0x30, 0x1c, 0x1a, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x79, 0x6d, 0x61, 0x75, 0x74, + 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x70, 0x61, 0x30, 0x29, 0x06, + 0x03, 0x55, 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, + 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, + 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, + 0x2d, 0x35, 0x33, 0x34, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, + 0x16, 0x04, 0x14, 0x5f, 0x60, 0xcf, 0x61, 0x90, 0x55, 0xdf, 0x84, 0x43, + 0x14, 0x8a, 0x60, 0x2a, 0xb2, 0xf5, 0x7a, 0xf4, 0x43, 0x18, 0xef, 0x30, + 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, + 0x7f, 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09, 0xf3, + 0x43, 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, 0x33, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x01, 0x00, 0x5e, 0x94, 0x56, 0x49, 0xdd, 0x8e, 0x2d, 0x65, + 0xf5, 0xc1, 0x36, 0x51, 0xb6, 0x03, 0xe3, 0xda, 0x9e, 0x73, 0x19, 0xf2, + 0x1f, 0x59, 0xab, 0x58, 0x7e, 0x6c, 0x26, 0x05, 0x2c, 0xfa, 0x81, 0xd7, + 0x5c, 0x23, 0x17, 0x22, 0x2c, 0x37, 0x93, 0xf7, 0x86, 0xec, 0x85, 0xe6, + 0xb0, 0xa3, 0xfd, 0x1f, 0xe2, 0x32, 0xa8, 0x45, 0x6f, 0xe1, 0xd9, 0xfb, + 0xb9, 0xaf, 0xd2, 0x70, 0xa0, 0x32, 0x42, 0x65, 0xbf, 0x84, 0xfe, 0x16, + 0x2a, 0x8f, 0x3f, 0xc5, 0xa6, 0xd6, 0xa3, 0x93, 0x7d, 0x43, 0xe9, 0x74, + 0x21, 0x91, 0x35, 0x28, 0xf4, 0x63, 0xe9, 0x2e, 0xed, 0xf7, 0xf5, 0x5c, + 0x7f, 0x4b, 0x9a, 0xb5, 0x20, 0xe9, 0x0a, 0xbd, 0xe0, 0x45, 0x10, 0x0c, + 0x14, 0x94, 0x9a, 0x5d, 0xa5, 0xe3, 0x4b, 0x91, 0xe8, 0x24, 0x9b, 0x46, + 0x40, 0x65, 0xf4, 0x22, 0x72, 0xcd, 0x99, 0xf8, 0x88, 0x11, 0xf5, 0xf3, + 0x7f, 0xe6, 0x33, 0x82, 0xe6, 0xa8, 0xc5, 0x7e, 0xfe, 0xd0, 0x08, 0xe2, + 0x25, 0x58, 0x08, 0x71, 0x68, 0xe6, 0xcd, 0xa2, 0xe6, 0x14, 0xde, 0x4e, + 0x52, 0x24, 0x2d, 0xfd, 0xe5, 0x79, 0x13, 0x53, 0xe7, 0x5e, 0x2f, 0x2d, + 0x4d, 0x1b, 0x6d, 0x40, 0x15, 0x52, 0x2b, 0xf7, 0x87, 0x89, 0x78, 0x12, + 0x81, 0x6e, 0xd9, 0x4d, 0xaa, 0x2d, 0x78, 0xd4, 0xc2, 0x2c, 0x3d, 0x08, + 0x5f, 0x87, 0x91, 0x9e, 0x1f, 0x0e, 0xb0, 0xde, 0x30, 0x52, 0x64, 0x86, + 0x89, 0xaa, 0x9d, 0x66, 0x9c, 0x0e, 0x76, 0x0c, 0x80, 0xf2, 0x74, 0xd8, + 0x2a, 0xf8, 0xb8, 0x3a, 0xce, 0xd7, 0xd6, 0x0f, 0x11, 0xbe, 0x6b, 0xab, + 0x14, 0xf5, 0xbd, 0x41, 0xa0, 0x22, 0x63, 0x89, 0xf1, 0xba, 0x0f, 0x6f, + 0x29, 0x63, 0x66, 0x2d, 0x3f, 0xac, 0x8c, 0x72, 0xc5, 0xfb, 0xc7, 0xe4, + 0xd4, 0x0f, 0xf2, 0x3b, 0x4f, 0x8c, 0x29, 0xc7, +} + +var certSet3Cert46 = []byte{ + 0x30, 0x82, 0x05, 0x49, 0x30, 0x82, 0x04, 0x31, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x69, 0x87, 0x94, 0x19, 0xd9, 0xe3, 0x62, 0x70, 0x74, + 0x9d, 0xbb, 0xe5, 0x9d, 0xc6, 0x68, 0x5e, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xbd, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, + 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x31, 0x3a, 0x30, 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28, + 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x38, 0x20, 0x56, 0x65, 0x72, 0x69, + 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, + 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, + 0x31, 0x38, 0x30, 0x36, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2f, 0x56, + 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x55, 0x6e, 0x69, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, + 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, + 0x17, 0x0d, 0x31, 0x33, 0x30, 0x34, 0x30, 0x39, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x30, 0x34, 0x30, 0x38, 0x32, + 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x81, 0x84, 0x31, 0x0b, 0x30, + 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x1d, + 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x14, 0x53, 0x79, 0x6d, + 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x04, 0x0b, 0x13, 0x16, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, + 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x31, 0x35, 0x30, 0x33, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x2c, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, + 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x53, 0x48, 0x41, 0x32, + 0x35, 0x36, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, + 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, + 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xbe, 0x38, 0x16, 0x51, 0x8b, 0x80, + 0xdb, 0xea, 0x0e, 0x4d, 0xec, 0xe8, 0x3f, 0x5c, 0xc4, 0x7c, 0xa2, 0x5d, + 0xed, 0x3b, 0xaf, 0xa5, 0xd6, 0x9e, 0x10, 0x35, 0x2c, 0xe3, 0xc5, 0xe5, + 0xa8, 0xde, 0x8c, 0x86, 0x17, 0x26, 0xe6, 0xde, 0x0b, 0x51, 0x4a, 0x2c, + 0xd0, 0xfb, 0xd1, 0x14, 0x5a, 0x72, 0xf7, 0xc9, 0xdd, 0xb8, 0x83, 0x1c, + 0xc6, 0x46, 0x8c, 0x31, 0x25, 0x91, 0x0e, 0x59, 0x17, 0xa3, 0xd0, 0x13, + 0x8c, 0x92, 0xc1, 0xaf, 0x81, 0x54, 0x4e, 0xbc, 0x62, 0x02, 0x9e, 0xaa, + 0xa7, 0x1a, 0x57, 0xd8, 0xca, 0xa6, 0x99, 0x7a, 0x70, 0x56, 0x4f, 0x98, + 0x07, 0x2e, 0x4b, 0x96, 0xd0, 0x4c, 0x39, 0x53, 0xb9, 0x61, 0x2f, 0x3b, + 0x76, 0x7c, 0x8e, 0x05, 0x9e, 0x99, 0x44, 0xd1, 0x03, 0x54, 0x77, 0x29, + 0x2b, 0x56, 0x2a, 0xaa, 0x61, 0xe4, 0x84, 0x2f, 0x12, 0x15, 0x3c, 0xbd, + 0xd7, 0x8a, 0xe8, 0x09, 0x1e, 0x56, 0xf1, 0xb5, 0x14, 0xac, 0x8a, 0x84, + 0xce, 0xae, 0x78, 0xa2, 0x60, 0x0a, 0x53, 0x7e, 0x13, 0x4c, 0x1a, 0x40, + 0x70, 0x0e, 0x52, 0x59, 0xff, 0x5a, 0x68, 0x2e, 0x4c, 0x46, 0x13, 0x3b, + 0x39, 0x09, 0x82, 0x78, 0x02, 0x35, 0x49, 0x20, 0x08, 0x82, 0xb3, 0xb1, + 0x6c, 0x89, 0x0f, 0x6e, 0x1e, 0x35, 0x25, 0xb0, 0x2c, 0x24, 0x83, 0xe3, + 0xc5, 0x50, 0x2c, 0xba, 0x46, 0x90, 0x45, 0x87, 0x0d, 0x72, 0xff, 0x5d, + 0x11, 0x38, 0xc5, 0x91, 0x76, 0xc5, 0x2c, 0xfb, 0x05, 0x2a, 0x82, 0x95, + 0xa1, 0x59, 0x63, 0xe3, 0xd0, 0x26, 0x58, 0xcd, 0x67, 0x56, 0x3a, 0xba, + 0xdf, 0x7c, 0xd2, 0xd2, 0x3b, 0xd8, 0xde, 0x1a, 0x7a, 0x77, 0xe4, 0x0c, + 0x8c, 0x0b, 0xeb, 0x2b, 0xc2, 0x22, 0xb0, 0xbd, 0x55, 0xba, 0xd9, 0xb9, + 0x55, 0xd1, 0x22, 0x7a, 0xc6, 0x02, 0x4e, 0x3f, 0xc3, 0x35, 0x02, 0x03, + 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x7a, 0x30, 0x82, 0x01, 0x76, 0x30, + 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, + 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x3e, 0x06, 0x03, 0x55, + 0x1d, 0x1f, 0x04, 0x37, 0x30, 0x35, 0x30, 0x33, 0xa0, 0x31, 0xa0, 0x2f, + 0x86, 0x2d, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, + 0x2e, 0x77, 0x73, 0x2e, 0x73, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x75, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x6c, 0x2d, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x72, 0x6c, 0x30, + 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, + 0x02, 0x01, 0x06, 0x30, 0x37, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x01, 0x01, 0x04, 0x2b, 0x30, 0x29, 0x30, 0x27, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x1b, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x77, 0x73, 0x2e, + 0x73, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x2e, 0x63, 0x6f, 0x6d, + 0x30, 0x6b, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x64, 0x30, 0x62, 0x30, + 0x60, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07, + 0x36, 0x30, 0x52, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x77, 0x77, 0x77, 0x2e, 0x73, 0x79, 0x6d, 0x61, 0x75, 0x74, 0x68, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x28, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x02, 0x30, 0x1c, 0x1a, 0x1a, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x79, + 0x6d, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x70, + 0x61, 0x30, 0x2a, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x23, 0x30, 0x21, + 0xa4, 0x1f, 0x30, 0x1d, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x12, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x4d, + 0x50, 0x4b, 0x49, 0x2d, 0x32, 0x2d, 0x33, 0x37, 0x33, 0x30, 0x1d, 0x06, + 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xdb, 0x62, 0x20, 0xfb, + 0x7d, 0x02, 0x89, 0x7c, 0xd2, 0x3b, 0x6f, 0xc7, 0xe4, 0x32, 0x6c, 0x05, + 0x52, 0x1d, 0xad, 0xb1, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, + 0x18, 0x30, 0x16, 0x80, 0x14, 0xb6, 0x77, 0xfa, 0x69, 0x48, 0x47, 0x9f, + 0x53, 0x12, 0xd5, 0xc2, 0xea, 0x07, 0x32, 0x76, 0x07, 0xd1, 0x97, 0x07, + 0x19, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x19, 0xcc, 0x95, + 0xe2, 0x2f, 0x7b, 0x49, 0xd0, 0x48, 0x90, 0x53, 0xf4, 0x07, 0xb1, 0x20, + 0x44, 0x35, 0x70, 0x14, 0xd5, 0x44, 0x37, 0x31, 0xef, 0xef, 0x70, 0xd1, + 0x2d, 0x4c, 0xe9, 0x2d, 0xb0, 0x53, 0x91, 0x01, 0x4c, 0x54, 0xe7, 0x7d, + 0x9b, 0xda, 0x3a, 0xff, 0xb7, 0xcb, 0x14, 0xad, 0x30, 0x0f, 0x69, 0x1a, + 0x2a, 0xf0, 0xbc, 0xcd, 0x35, 0xeb, 0x48, 0xdc, 0xb9, 0x87, 0xfd, 0xcf, + 0xb1, 0x5a, 0xf6, 0x05, 0xda, 0x3c, 0x64, 0xe6, 0x2b, 0xe6, 0xdc, 0x73, + 0x5e, 0x9a, 0xd8, 0x0c, 0x9b, 0xd2, 0x97, 0xb3, 0xe8, 0xfa, 0x87, 0x95, + 0x53, 0xe1, 0x99, 0xad, 0x88, 0xe8, 0xfa, 0xbc, 0x09, 0x4d, 0xa2, 0xc4, + 0x6a, 0x1b, 0x28, 0x3b, 0x2d, 0xc3, 0x21, 0x15, 0xee, 0x14, 0xfa, 0x9d, + 0x98, 0x10, 0xeb, 0x9f, 0x3e, 0xe6, 0x24, 0x24, 0x5f, 0x7a, 0x1c, 0x05, + 0xbb, 0x9a, 0x31, 0x23, 0x58, 0x79, 0x4c, 0xec, 0x6d, 0x18, 0x19, 0x4d, + 0x51, 0x1f, 0x08, 0x61, 0xbd, 0x91, 0x05, 0x0c, 0x5a, 0x9c, 0x26, 0xfc, + 0x0b, 0xa5, 0x20, 0x25, 0xbf, 0x6a, 0x1b, 0x2b, 0xf7, 0x02, 0x09, 0x72, + 0x69, 0x83, 0x32, 0x14, 0xc3, 0x60, 0x5b, 0x7e, 0xfd, 0x9a, 0x32, 0xfa, + 0xb4, 0x95, 0x0e, 0x1a, 0xf9, 0x3b, 0x09, 0xa4, 0x54, 0x47, 0x9a, 0x0c, + 0xce, 0x32, 0xaf, 0xd1, 0x21, 0xcc, 0x7f, 0xd2, 0x06, 0xef, 0x60, 0x0e, + 0x62, 0x6f, 0x6f, 0x81, 0x1a, 0x17, 0x9d, 0xc8, 0xcb, 0x28, 0xcc, 0xe2, + 0x5f, 0x6e, 0x2c, 0x7a, 0xb4, 0xcb, 0x47, 0x7c, 0x74, 0x68, 0x7b, 0x48, + 0x71, 0x02, 0x9c, 0x23, 0x09, 0xf3, 0x5a, 0xae, 0x5f, 0x42, 0x2e, 0x5f, + 0x2b, 0x59, 0x2d, 0x52, 0x88, 0xe5, 0x8d, 0x0b, 0xb3, 0xa8, 0x61, 0xf9, + 0x4b, 0x9b, 0x55, 0xd6, 0xda, 0xb1, 0x92, 0x3b, 0xbf, 0xc3, 0x9b, 0xf9, + 0x2c, +} + +var certSet3Cert47 = []byte{ + 0x30, 0x82, 0x05, 0x86, 0x30, 0x82, 0x04, 0x6e, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x04, 0x07, 0x27, 0x9a, 0xa9, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x5a, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, + 0x45, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x09, + 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x31, 0x13, 0x30, + 0x11, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65, + 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x19, 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, + 0x72, 0x65, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, + 0x31, 0x32, 0x31, 0x39, 0x32, 0x30, 0x30, 0x37, 0x33, 0x32, 0x5a, 0x17, + 0x0d, 0x31, 0x37, 0x31, 0x32, 0x31, 0x39, 0x32, 0x30, 0x30, 0x36, 0x35, + 0x35, 0x5a, 0x30, 0x81, 0x8b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, + 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, + 0x55, 0x04, 0x08, 0x13, 0x0a, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, + 0x74, 0x6f, 0x6e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07, + 0x13, 0x07, 0x52, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, 0x1e, 0x30, + 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72, + 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, + 0x04, 0x0b, 0x13, 0x0c, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, + 0x74, 0x20, 0x49, 0x54, 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, + 0x20, 0x49, 0x54, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x53, 0x48, 0x41, 0x32, + 0x30, 0x82, 0x02, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00, + 0x30, 0x82, 0x02, 0x0a, 0x02, 0x82, 0x02, 0x01, 0x00, 0xd1, 0xe8, 0x37, + 0xa7, 0x76, 0x8a, 0x70, 0x4b, 0x19, 0xf0, 0x20, 0x37, 0x09, 0x24, 0x37, + 0x7f, 0xea, 0xfb, 0x78, 0xe6, 0x05, 0xba, 0x6a, 0xad, 0x4e, 0x27, 0x0d, + 0xfc, 0x72, 0x6a, 0xd9, 0x6c, 0x21, 0xc4, 0x64, 0x11, 0x95, 0x73, 0x10, + 0x0a, 0x5c, 0x25, 0x7b, 0x88, 0x6c, 0x94, 0x04, 0xfd, 0xc7, 0xdb, 0xae, + 0x7b, 0xdc, 0x4a, 0x08, 0xb3, 0x3e, 0x16, 0xf1, 0xd0, 0xad, 0xdb, 0x30, + 0x6d, 0xd7, 0x1a, 0x1e, 0x52, 0xb5, 0x3d, 0xf0, 0x47, 0x19, 0x03, 0xe2, + 0x7d, 0xa6, 0xbd, 0x57, 0x13, 0x3f, 0x54, 0xea, 0x3a, 0xa3, 0xb1, 0x77, + 0xfc, 0x42, 0xf0, 0x63, 0x49, 0x6a, 0x91, 0x80, 0x2e, 0x30, 0x49, 0xc0, + 0x8a, 0xeb, 0x2b, 0xaf, 0xfe, 0x3a, 0xeb, 0x07, 0x5d, 0x06, 0xf7, 0xe9, + 0xfd, 0x84, 0x0e, 0x91, 0xbd, 0x09, 0x20, 0x29, 0xe8, 0x6e, 0x5d, 0x09, + 0xce, 0x15, 0xd3, 0xe7, 0xef, 0xdb, 0x50, 0xeb, 0x44, 0xef, 0x18, 0x57, + 0xab, 0x04, 0x1d, 0xbc, 0x31, 0xf9, 0xf7, 0x7b, 0x2a, 0x13, 0xcf, 0xd1, + 0x3d, 0x51, 0xaf, 0x1b, 0xc5, 0xb5, 0x7b, 0xe7, 0xb0, 0xfc, 0x53, 0xbb, + 0x9a, 0xe7, 0x63, 0xde, 0x41, 0x33, 0xb6, 0x47, 0x24, 0x69, 0x5d, 0xb8, + 0x46, 0xa7, 0xff, 0xad, 0xab, 0xdf, 0x4f, 0x7a, 0x78, 0x25, 0x27, 0x21, + 0x26, 0x34, 0xca, 0x02, 0x6e, 0x37, 0x51, 0xf0, 0xed, 0x58, 0x1a, 0x60, + 0x94, 0xf6, 0xc4, 0x93, 0xd8, 0xdd, 0x30, 0x24, 0x25, 0xd7, 0x1c, 0xeb, + 0x19, 0x94, 0x35, 0x5d, 0x93, 0xb2, 0xae, 0xaa, 0x29, 0x83, 0x73, 0xc4, + 0x74, 0x59, 0x05, 0x52, 0x67, 0x9d, 0xda, 0x67, 0x51, 0x39, 0x05, 0x3a, + 0x36, 0xea, 0xf2, 0x1e, 0x76, 0x2b, 0x14, 0xae, 0xec, 0x3d, 0xf9, 0x14, + 0x99, 0x8b, 0x07, 0x6e, 0xbc, 0xe7, 0x0c, 0x56, 0xde, 0xac, 0xbe, 0xae, + 0xdb, 0x75, 0x32, 0x90, 0x9e, 0x63, 0xbd, 0x74, 0xbf, 0xe0, 0x0a, 0xca, + 0xf8, 0x34, 0x96, 0x67, 0x84, 0xcd, 0xd1, 0x42, 0x38, 0x78, 0xc7, 0x99, + 0xb6, 0x0c, 0xce, 0xb6, 0x0f, 0xe9, 0x1b, 0xcb, 0xf4, 0x59, 0xbe, 0x11, + 0x0e, 0xcb, 0x2c, 0x32, 0xc8, 0xfa, 0x83, 0x29, 0x64, 0x79, 0x3c, 0x8b, + 0x4b, 0xf0, 0x32, 0x74, 0x6c, 0xf3, 0x93, 0xb8, 0x96, 0x6b, 0x5d, 0x57, + 0x5a, 0x68, 0xc1, 0xcc, 0x0c, 0x79, 0x8a, 0x19, 0xde, 0xf5, 0x49, 0x02, + 0x5e, 0x08, 0x80, 0x01, 0x89, 0x0c, 0x32, 0xcd, 0xd2, 0xd6, 0x96, 0xd5, + 0x4b, 0xa0, 0xf3, 0xec, 0xbf, 0xab, 0xf4, 0x7d, 0xb3, 0xa1, 0xb9, 0x7c, + 0xda, 0x4e, 0xd7, 0xe5, 0xb7, 0xac, 0xb9, 0xf2, 0x25, 0x5f, 0x01, 0xcb, + 0x8c, 0x96, 0xa8, 0x28, 0xae, 0xc1, 0x33, 0x5a, 0xf6, 0x3f, 0x08, 0x90, + 0xdc, 0xeb, 0xff, 0x39, 0xd8, 0x26, 0xc8, 0x12, 0x9d, 0x1c, 0x9a, 0xaa, + 0xa9, 0xc0, 0x16, 0x8e, 0x86, 0xed, 0x67, 0x52, 0x96, 0x00, 0x7f, 0x0d, + 0x92, 0x3d, 0x3d, 0xd9, 0x70, 0x36, 0xe5, 0xea, 0x42, 0x6f, 0x1f, 0xae, + 0x95, 0xe5, 0x5b, 0x5d, 0xf8, 0xd0, 0x3a, 0xc7, 0xd4, 0xde, 0x77, 0x86, + 0xd0, 0xfc, 0x9e, 0x4e, 0xe2, 0xe2, 0xb8, 0xa9, 0x68, 0x37, 0x09, 0xc4, + 0x39, 0xe3, 0x85, 0xb8, 0x89, 0xf3, 0x1f, 0x6e, 0xb7, 0x6d, 0x1f, 0x4a, + 0x2f, 0x18, 0x09, 0x6f, 0xde, 0x4a, 0x01, 0x8f, 0x14, 0xc9, 0xb7, 0xa6, + 0xee, 0xa7, 0x63, 0x9f, 0x33, 0xa4, 0x54, 0x7c, 0x42, 0x83, 0x68, 0xb8, + 0xa5, 0xdf, 0xbf, 0xec, 0xb9, 0x1a, 0x5d, 0x13, 0x3b, 0xd9, 0xad, 0x68, + 0xfd, 0x20, 0x0a, 0x55, 0x91, 0x21, 0x64, 0xf9, 0xd7, 0x13, 0x01, 0xa0, + 0x08, 0x5d, 0x59, 0x89, 0x1b, 0x44, 0xaf, 0xa4, 0xac, 0xc7, 0x05, 0x10, + 0xfa, 0x41, 0x4a, 0xa8, 0xfb, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, + 0x01, 0x20, 0x30, 0x82, 0x01, 0x1c, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, + 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, + 0x01, 0x00, 0x30, 0x53, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x4c, 0x30, + 0x4a, 0x30, 0x48, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xb1, 0x3e, + 0x01, 0x00, 0x30, 0x3b, 0x30, 0x39, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x02, 0x01, 0x16, 0x2d, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x63, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x6f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2e, + 0x63, 0x66, 0x6d, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, + 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x1d, 0x25, 0x04, 0x16, 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x03, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x03, 0x02, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, + 0x16, 0x80, 0x14, 0xe5, 0x9d, 0x59, 0x30, 0x82, 0x47, 0x58, 0xcc, 0xac, + 0xfa, 0x08, 0x54, 0x36, 0x86, 0x7b, 0x3a, 0xb5, 0x04, 0x4d, 0xf0, 0x30, + 0x42, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x3b, 0x30, 0x39, 0x30, 0x37, + 0xa0, 0x35, 0xa0, 0x33, 0x86, 0x31, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x63, 0x64, 0x70, 0x31, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, + 0x2d, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, + 0x52, 0x4c, 0x2f, 0x4f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x32, + 0x30, 0x32, 0x35, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x51, 0xaf, 0x24, 0x26, 0x9c, 0xf4, + 0x68, 0x22, 0x57, 0x80, 0x26, 0x2b, 0x3b, 0x46, 0x62, 0x15, 0x7b, 0x1e, + 0xcc, 0xa5, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x76, 0x85, + 0xc5, 0x23, 0x31, 0x1f, 0xb4, 0x73, 0xea, 0xa0, 0xbc, 0xa5, 0xed, 0xdf, + 0x45, 0x43, 0x6a, 0x7f, 0x69, 0x20, 0x1b, 0x80, 0xb2, 0xfb, 0x1c, 0xdd, + 0xaa, 0x7f, 0x88, 0xd3, 0x31, 0x41, 0x36, 0xf7, 0xfb, 0xfb, 0x6b, 0xad, + 0x98, 0x8c, 0x78, 0x1f, 0x9d, 0x11, 0x67, 0x3a, 0xcd, 0x4b, 0xec, 0xa8, + 0xbc, 0x9d, 0x15, 0x19, 0xc4, 0x3b, 0x0b, 0xa7, 0x93, 0xce, 0xe8, 0xfc, + 0x9d, 0x5b, 0xe8, 0x1f, 0xcb, 0x56, 0xae, 0x76, 0x43, 0x2b, 0xc7, 0x13, + 0x51, 0x77, 0x41, 0xa8, 0x66, 0x4c, 0x5f, 0xa7, 0xd1, 0xd7, 0xaa, 0x75, + 0xc5, 0x1b, 0x29, 0x4c, 0xc9, 0xf4, 0x6d, 0xa1, 0x5e, 0xa1, 0x85, 0x93, + 0x16, 0xc2, 0xcb, 0x3b, 0xab, 0x14, 0x7d, 0x44, 0xfd, 0xda, 0x25, 0x29, + 0x86, 0x2a, 0xfe, 0x63, 0x20, 0xca, 0xd2, 0x0b, 0xc2, 0x34, 0x15, 0xbb, + 0xaf, 0x5b, 0x7f, 0x8a, 0xe0, 0xaa, 0xed, 0x45, 0xa6, 0xea, 0x79, 0xdb, + 0xd8, 0x35, 0x66, 0x54, 0x43, 0xde, 0x37, 0x33, 0xd1, 0xe4, 0xe0, 0xcd, + 0x57, 0xca, 0x71, 0xb0, 0x7d, 0xe9, 0x16, 0x77, 0x64, 0xe8, 0x59, 0x97, + 0xb9, 0xd5, 0x2e, 0xd1, 0xb4, 0x91, 0xda, 0x77, 0x71, 0xf3, 0x4a, 0x0f, + 0x48, 0xd2, 0x34, 0x99, 0x60, 0x95, 0x37, 0xac, 0x1f, 0x01, 0xcd, 0x10, + 0x9d, 0xe8, 0x2a, 0xa5, 0x20, 0xc7, 0x50, 0x9b, 0xb3, 0x6c, 0x49, 0x78, + 0x2b, 0x58, 0x92, 0x64, 0x89, 0xb8, 0x95, 0x36, 0xa8, 0x34, 0xaa, 0xf0, + 0x41, 0xd2, 0x95, 0x5a, 0x24, 0x54, 0x97, 0x4d, 0x6e, 0x05, 0xc4, 0x95, + 0xad, 0xc4, 0x7a, 0xa3, 0x39, 0xfb, 0x79, 0x06, 0x8a, 0x9b, 0xa6, 0x4f, + 0xd9, 0x22, 0xfa, 0x44, 0x4e, 0x36, 0xf3, 0xc9, 0x0f, 0xa6, 0x39, 0xe7, + 0x80, 0xb2, 0x5e, 0xbf, 0xbd, 0x39, 0xd1, 0x46, 0xe5, 0x55, 0x47, 0xdb, + 0xbc, 0x6e, +} + +var certSet3Cert48 = []byte{ + 0x30, 0x82, 0x05, 0xa3, 0x30, 0x82, 0x03, 0x8b, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x75, 0x96, 0xc2, 0x3e, 0xfa, 0x89, 0x59, 0x45, 0x6e, + 0x79, 0xf7, 0x17, 0xba, 0xcf, 0x64, 0xf3, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x55, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, + 0x4e, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x11, + 0x57, 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x41, 0x20, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x65, 0x64, 0x31, 0x2a, 0x30, 0x28, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x21, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x57, 0x6f, 0x53, 0x69, 0x67, + 0x6e, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x31, 0x31, 0x30, 0x38, 0x30, + 0x30, 0x35, 0x38, 0x35, 0x38, 0x5a, 0x17, 0x0d, 0x32, 0x39, 0x31, 0x31, + 0x30, 0x38, 0x30, 0x30, 0x35, 0x38, 0x35, 0x38, 0x5a, 0x30, 0x52, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, 0x4e, + 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x11, 0x57, + 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x41, 0x20, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x65, 0x64, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x1e, 0x57, 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x4f, 0x56, 0x20, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, + 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, + 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xd6, 0x74, 0x87, 0xaf, 0x99, 0xc0, + 0x57, 0x96, 0x99, 0xc2, 0x89, 0x74, 0x3c, 0x92, 0x55, 0x99, 0xbf, 0x1f, + 0x07, 0x00, 0x35, 0x05, 0x26, 0x96, 0x16, 0x5b, 0x03, 0xc1, 0x42, 0x37, + 0x33, 0xbe, 0x3f, 0x0d, 0x4f, 0xff, 0xbb, 0x94, 0x26, 0x91, 0xd7, 0x14, + 0x16, 0x78, 0x1b, 0xf7, 0x13, 0xa2, 0x4b, 0x4c, 0xe5, 0x5c, 0xa7, 0x10, + 0x40, 0x35, 0x59, 0x30, 0xd1, 0x77, 0x99, 0xe3, 0x9d, 0x29, 0xc2, 0xbe, + 0x31, 0x95, 0xbd, 0x92, 0x61, 0x5b, 0xb0, 0x23, 0xfb, 0x67, 0x58, 0xd5, + 0x52, 0xe4, 0x7b, 0x2f, 0xf0, 0x73, 0x1c, 0x73, 0x94, 0x55, 0xba, 0xc8, + 0x68, 0x59, 0x02, 0x10, 0x10, 0xe4, 0xf7, 0x11, 0xf0, 0xc3, 0xb6, 0xd7, + 0xae, 0x56, 0x80, 0x00, 0x9e, 0x65, 0x64, 0xa6, 0x83, 0x91, 0x41, 0xe6, + 0xed, 0xa7, 0x7a, 0x65, 0xa5, 0x1f, 0x30, 0x2e, 0x13, 0x3c, 0xbf, 0xdf, + 0x63, 0x97, 0xf3, 0x96, 0xf0, 0x52, 0x32, 0xb4, 0xf4, 0x7b, 0x98, 0x57, + 0xed, 0x36, 0x4f, 0xf7, 0x21, 0x4a, 0x28, 0x9d, 0xdd, 0x1c, 0x92, 0xb3, + 0x4d, 0x8d, 0x9c, 0x58, 0x8b, 0x17, 0x21, 0xd8, 0xdc, 0xa1, 0xb7, 0xae, + 0x73, 0x78, 0x8a, 0xc4, 0xb6, 0xe9, 0x7f, 0x28, 0x8e, 0x9a, 0xd5, 0x2e, + 0x9e, 0x39, 0xe9, 0xda, 0x59, 0x74, 0xe3, 0xc8, 0x97, 0x10, 0x32, 0x94, + 0x19, 0x59, 0xd4, 0x0f, 0x89, 0x57, 0x44, 0xe6, 0xe5, 0x2b, 0x17, 0x30, + 0x62, 0x52, 0x98, 0x7f, 0xab, 0x0d, 0xa5, 0x01, 0xea, 0x04, 0x41, 0xca, + 0xfa, 0x13, 0x0e, 0x3b, 0x87, 0x06, 0xba, 0xbd, 0x47, 0x31, 0xd7, 0x63, + 0x03, 0x01, 0xf4, 0xbe, 0xa1, 0x37, 0x11, 0x9f, 0x1e, 0x01, 0x95, 0x4e, + 0x0f, 0x3f, 0x54, 0x1e, 0x92, 0xa6, 0x9f, 0x30, 0x8c, 0xfe, 0x98, 0xe8, + 0x56, 0x96, 0x66, 0x04, 0xe1, 0x35, 0xfe, 0x59, 0xac, 0x57, 0x02, 0x03, + 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x70, 0x30, 0x82, 0x01, 0x6c, 0x30, + 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, + 0x02, 0x01, 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, 0x16, + 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x01, 0x30, 0x12, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, + 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x30, 0x06, 0x03, 0x55, 0x1d, + 0x1f, 0x04, 0x29, 0x30, 0x27, 0x30, 0x25, 0xa0, 0x23, 0xa0, 0x21, 0x86, + 0x1f, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x73, + 0x31, 0x2e, 0x77, 0x6f, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x63, 0x61, 0x31, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x6d, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x61, 0x30, 0x5f, + 0x30, 0x27, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, + 0x86, 0x1b, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, + 0x70, 0x31, 0x2e, 0x77, 0x6f, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x63, 0x61, 0x31, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x28, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x61, 0x69, 0x61, 0x31, 0x2e, 0x77, 0x6f, 0x73, 0x69, 0x67, + 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x61, 0x31, 0x67, 0x32, 0x2d, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x33, 0x2e, 0x63, 0x65, 0x72, 0x30, + 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xf9, 0x8b, + 0xec, 0x04, 0x38, 0x6a, 0x3f, 0xaa, 0x06, 0xc6, 0x94, 0xad, 0x73, 0x95, + 0x2a, 0xb0, 0xc8, 0xe6, 0xb8, 0xfb, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, + 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xe1, 0x66, 0xcf, 0x0e, 0xd1, + 0xf1, 0xb3, 0x4b, 0xb7, 0x06, 0x20, 0x14, 0xfe, 0x87, 0x12, 0xd5, 0xf6, + 0xfe, 0xfb, 0x3e, 0x30, 0x46, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3f, + 0x30, 0x3d, 0x30, 0x3b, 0x06, 0x0c, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, + 0x9b, 0x51, 0x06, 0x03, 0x02, 0x01, 0x30, 0x2b, 0x30, 0x29, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1d, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x6f, 0x73, + 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x2f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x02, 0x01, 0x00, 0x5e, + 0x67, 0xba, 0x78, 0x32, 0x05, 0xb6, 0xb7, 0xaf, 0xe7, 0xde, 0x6a, 0x7a, + 0x82, 0x64, 0x0e, 0xa0, 0x0b, 0xf2, 0x9e, 0x9a, 0xba, 0xc6, 0x2b, 0x6f, + 0x56, 0x3a, 0xb4, 0x62, 0x57, 0xab, 0x7c, 0xad, 0x60, 0x50, 0x96, 0x34, + 0x9c, 0xa3, 0x88, 0xcf, 0xd9, 0x8f, 0x50, 0xaf, 0xf6, 0xf0, 0x00, 0x36, + 0x1b, 0x1f, 0x1f, 0x87, 0x55, 0x3c, 0x60, 0x9a, 0xf0, 0xb0, 0x0d, 0x9a, + 0x80, 0x2d, 0x8a, 0x3b, 0xbe, 0x05, 0xb3, 0xd7, 0xa0, 0x80, 0xb6, 0xb8, + 0x19, 0xeb, 0x51, 0xdb, 0xec, 0x64, 0x54, 0xf1, 0x1a, 0x89, 0x4a, 0x48, + 0xa1, 0x4d, 0x3f, 0x31, 0x7d, 0xc4, 0x79, 0x94, 0x4b, 0xf1, 0xde, 0xab, + 0x83, 0xaf, 0x5f, 0x86, 0xbe, 0x96, 0x1c, 0xb3, 0x3e, 0x1c, 0xe7, 0xbc, + 0x96, 0xb2, 0xe8, 0x5a, 0xac, 0xb5, 0x58, 0xcb, 0x3c, 0x56, 0x6f, 0x0a, + 0xa7, 0xa5, 0xd0, 0x36, 0x89, 0x82, 0x26, 0x8c, 0xb9, 0x1f, 0xb6, 0xeb, + 0x8f, 0x7e, 0x78, 0xfc, 0x5b, 0x8b, 0x79, 0x1c, 0xd6, 0xdf, 0x47, 0xa7, + 0x56, 0xf4, 0x98, 0x4e, 0xc7, 0xa9, 0xd5, 0x0e, 0x75, 0x56, 0x06, 0x7f, + 0xb4, 0x37, 0x46, 0x08, 0xc6, 0xe9, 0x4f, 0x8b, 0x5b, 0x43, 0x1c, 0xe0, + 0x45, 0x3e, 0x95, 0x20, 0x71, 0xc0, 0x1c, 0x98, 0x16, 0xef, 0xf2, 0x78, + 0xdf, 0xac, 0x4d, 0xbb, 0xbf, 0x56, 0x0e, 0xcf, 0x85, 0xaf, 0xcf, 0xbf, + 0x04, 0xed, 0x72, 0x6b, 0xfd, 0x1f, 0x57, 0x0e, 0x58, 0x91, 0x44, 0x11, + 0x58, 0x3b, 0x62, 0x3b, 0x09, 0x78, 0xb3, 0xa4, 0x75, 0x6a, 0xec, 0xb3, + 0xc2, 0x2b, 0x32, 0xcc, 0xb3, 0x8d, 0xc3, 0xa3, 0x6e, 0xdc, 0x8a, 0xd5, + 0xe8, 0x4a, 0xc4, 0x0b, 0x7b, 0xdb, 0x30, 0x5d, 0x95, 0x33, 0xc3, 0xd1, + 0xa3, 0x69, 0x64, 0x5b, 0xa8, 0xaa, 0x96, 0x48, 0x73, 0x73, 0xe3, 0xc9, + 0xb9, 0x24, 0xdf, 0x17, 0x75, 0xaa, 0xaf, 0x07, 0x3a, 0xcf, 0xbe, 0x9b, + 0x8a, 0x80, 0xa7, 0xbf, 0x7c, 0xe2, 0xe9, 0x2a, 0xe6, 0xfd, 0xb0, 0x2c, + 0xe7, 0xe6, 0xe6, 0x7e, 0xb3, 0x35, 0x15, 0x65, 0x00, 0xf4, 0xe1, 0x39, + 0x73, 0x0e, 0x28, 0x4b, 0xf0, 0x0c, 0x98, 0x9e, 0x3a, 0xeb, 0xce, 0x7b, + 0x7a, 0x9e, 0x40, 0xc1, 0x50, 0x65, 0x96, 0x9a, 0xe7, 0x4b, 0x77, 0xcd, + 0xdd, 0xcb, 0x7d, 0x97, 0xb4, 0xea, 0x09, 0xb2, 0xe9, 0x49, 0x28, 0xc3, + 0x30, 0xe0, 0x87, 0x15, 0xf0, 0x26, 0xea, 0xd8, 0x03, 0xfd, 0xec, 0xda, + 0x08, 0x83, 0x65, 0xdc, 0x77, 0xc5, 0x6e, 0x3d, 0x34, 0xf7, 0x87, 0xc3, + 0x1c, 0x1d, 0x26, 0x33, 0xec, 0x33, 0xac, 0xc6, 0x99, 0x53, 0xab, 0x60, + 0xf4, 0xb0, 0xd9, 0xee, 0x64, 0x5a, 0x33, 0x07, 0x70, 0x13, 0x74, 0x88, + 0x07, 0xf5, 0x86, 0xf9, 0x18, 0xd3, 0xb2, 0x47, 0xc8, 0xae, 0x03, 0x4a, + 0x53, 0xde, 0x1c, 0x65, 0xd6, 0x0a, 0x2e, 0x3a, 0x51, 0x93, 0xee, 0xb7, + 0xe3, 0x6f, 0x0a, 0xfb, 0xe9, 0xfe, 0x4e, 0xe8, 0xbb, 0x1d, 0xc2, 0x97, + 0xab, 0x0a, 0xb9, 0xed, 0x36, 0x32, 0x1b, 0x4d, 0xa1, 0xcc, 0x03, 0xa6, + 0x9d, 0xb3, 0xd9, 0x1c, 0xd5, 0x67, 0xe2, 0x8f, 0x74, 0x3c, 0x92, 0x2a, + 0x74, 0xb1, 0x56, 0x50, 0xdf, 0x53, 0x15, 0xd7, 0x21, 0xd6, 0xeb, 0xf3, + 0xfb, 0x63, 0xe3, 0x20, 0x2c, 0x0a, 0x74, 0x37, 0x0b, 0xc1, 0xa1, 0x35, + 0x6a, 0x84, 0x70, 0xf4, 0x45, 0xf8, 0xb2, 0xb6, 0x81, 0x49, 0xaa, 0xfd, + 0x54, 0x45, 0x90, 0x4d, 0xe7, 0x04, 0x07, 0x5f, 0x78, 0x14, 0xdd, 0x3a, + 0xbb, 0x2b, 0xf9, 0x72, 0x50, 0xec, 0x68, 0xea, 0x3c, 0xa8, 0xd1, 0x80, + 0xbb, 0xbe, 0x35, 0x43, 0x97, 0xc3, 0x32, 0xb2, 0xf5, 0xaa, 0xad, 0xc9, + 0x7f, 0x83, 0x9f, 0x7d, 0x69, 0x1e, 0x15, +} + +var certSet3Cert49 = []byte{ + 0x30, 0x82, 0x05, 0xe1, 0x30, 0x82, 0x04, 0xc9, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x04, 0x07, 0x27, 0xaa, 0x47, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x5a, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, + 0x45, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x09, + 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x31, 0x13, 0x30, + 0x11, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65, + 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x19, 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, + 0x72, 0x65, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, + 0x30, 0x35, 0x30, 0x37, 0x31, 0x37, 0x30, 0x34, 0x30, 0x39, 0x5a, 0x17, + 0x0d, 0x31, 0x38, 0x30, 0x35, 0x30, 0x37, 0x31, 0x37, 0x30, 0x33, 0x33, + 0x30, 0x5a, 0x30, 0x81, 0x8b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, + 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, + 0x55, 0x04, 0x08, 0x13, 0x0a, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, + 0x74, 0x6f, 0x6e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07, + 0x13, 0x07, 0x52, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, 0x1e, 0x30, + 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72, + 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, + 0x04, 0x0b, 0x13, 0x0c, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, + 0x74, 0x20, 0x49, 0x54, 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, + 0x20, 0x49, 0x54, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x53, 0x48, 0x41, 0x32, + 0x30, 0x82, 0x02, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00, + 0x30, 0x82, 0x02, 0x0a, 0x02, 0x82, 0x02, 0x01, 0x00, 0xd1, 0xe8, 0x37, + 0xa7, 0x76, 0x8a, 0x70, 0x4b, 0x19, 0xf0, 0x20, 0x37, 0x09, 0x24, 0x37, + 0x7f, 0xea, 0xfb, 0x78, 0xe6, 0x05, 0xba, 0x6a, 0xad, 0x4e, 0x27, 0x0d, + 0xfc, 0x72, 0x6a, 0xd9, 0x6c, 0x21, 0xc4, 0x64, 0x11, 0x95, 0x73, 0x10, + 0x0a, 0x5c, 0x25, 0x7b, 0x88, 0x6c, 0x94, 0x04, 0xfd, 0xc7, 0xdb, 0xae, + 0x7b, 0xdc, 0x4a, 0x08, 0xb3, 0x3e, 0x16, 0xf1, 0xd0, 0xad, 0xdb, 0x30, + 0x6d, 0xd7, 0x1a, 0x1e, 0x52, 0xb5, 0x3d, 0xf0, 0x47, 0x19, 0x03, 0xe2, + 0x7d, 0xa6, 0xbd, 0x57, 0x13, 0x3f, 0x54, 0xea, 0x3a, 0xa3, 0xb1, 0x77, + 0xfc, 0x42, 0xf0, 0x63, 0x49, 0x6a, 0x91, 0x80, 0x2e, 0x30, 0x49, 0xc0, + 0x8a, 0xeb, 0x2b, 0xaf, 0xfe, 0x3a, 0xeb, 0x07, 0x5d, 0x06, 0xf7, 0xe9, + 0xfd, 0x84, 0x0e, 0x91, 0xbd, 0x09, 0x20, 0x29, 0xe8, 0x6e, 0x5d, 0x09, + 0xce, 0x15, 0xd3, 0xe7, 0xef, 0xdb, 0x50, 0xeb, 0x44, 0xef, 0x18, 0x57, + 0xab, 0x04, 0x1d, 0xbc, 0x31, 0xf9, 0xf7, 0x7b, 0x2a, 0x13, 0xcf, 0xd1, + 0x3d, 0x51, 0xaf, 0x1b, 0xc5, 0xb5, 0x7b, 0xe7, 0xb0, 0xfc, 0x53, 0xbb, + 0x9a, 0xe7, 0x63, 0xde, 0x41, 0x33, 0xb6, 0x47, 0x24, 0x69, 0x5d, 0xb8, + 0x46, 0xa7, 0xff, 0xad, 0xab, 0xdf, 0x4f, 0x7a, 0x78, 0x25, 0x27, 0x21, + 0x26, 0x34, 0xca, 0x02, 0x6e, 0x37, 0x51, 0xf0, 0xed, 0x58, 0x1a, 0x60, + 0x94, 0xf6, 0xc4, 0x93, 0xd8, 0xdd, 0x30, 0x24, 0x25, 0xd7, 0x1c, 0xeb, + 0x19, 0x94, 0x35, 0x5d, 0x93, 0xb2, 0xae, 0xaa, 0x29, 0x83, 0x73, 0xc4, + 0x74, 0x59, 0x05, 0x52, 0x67, 0x9d, 0xda, 0x67, 0x51, 0x39, 0x05, 0x3a, + 0x36, 0xea, 0xf2, 0x1e, 0x76, 0x2b, 0x14, 0xae, 0xec, 0x3d, 0xf9, 0x14, + 0x99, 0x8b, 0x07, 0x6e, 0xbc, 0xe7, 0x0c, 0x56, 0xde, 0xac, 0xbe, 0xae, + 0xdb, 0x75, 0x32, 0x90, 0x9e, 0x63, 0xbd, 0x74, 0xbf, 0xe0, 0x0a, 0xca, + 0xf8, 0x34, 0x96, 0x67, 0x84, 0xcd, 0xd1, 0x42, 0x38, 0x78, 0xc7, 0x99, + 0xb6, 0x0c, 0xce, 0xb6, 0x0f, 0xe9, 0x1b, 0xcb, 0xf4, 0x59, 0xbe, 0x11, + 0x0e, 0xcb, 0x2c, 0x32, 0xc8, 0xfa, 0x83, 0x29, 0x64, 0x79, 0x3c, 0x8b, + 0x4b, 0xf0, 0x32, 0x74, 0x6c, 0xf3, 0x93, 0xb8, 0x96, 0x6b, 0x5d, 0x57, + 0x5a, 0x68, 0xc1, 0xcc, 0x0c, 0x79, 0x8a, 0x19, 0xde, 0xf5, 0x49, 0x02, + 0x5e, 0x08, 0x80, 0x01, 0x89, 0x0c, 0x32, 0xcd, 0xd2, 0xd6, 0x96, 0xd5, + 0x4b, 0xa0, 0xf3, 0xec, 0xbf, 0xab, 0xf4, 0x7d, 0xb3, 0xa1, 0xb9, 0x7c, + 0xda, 0x4e, 0xd7, 0xe5, 0xb7, 0xac, 0xb9, 0xf2, 0x25, 0x5f, 0x01, 0xcb, + 0x8c, 0x96, 0xa8, 0x28, 0xae, 0xc1, 0x33, 0x5a, 0xf6, 0x3f, 0x08, 0x90, + 0xdc, 0xeb, 0xff, 0x39, 0xd8, 0x26, 0xc8, 0x12, 0x9d, 0x1c, 0x9a, 0xaa, + 0xa9, 0xc0, 0x16, 0x8e, 0x86, 0xed, 0x67, 0x52, 0x96, 0x00, 0x7f, 0x0d, + 0x92, 0x3d, 0x3d, 0xd9, 0x70, 0x36, 0xe5, 0xea, 0x42, 0x6f, 0x1f, 0xae, + 0x95, 0xe5, 0x5b, 0x5d, 0xf8, 0xd0, 0x3a, 0xc7, 0xd4, 0xde, 0x77, 0x86, + 0xd0, 0xfc, 0x9e, 0x4e, 0xe2, 0xe2, 0xb8, 0xa9, 0x68, 0x37, 0x09, 0xc4, + 0x39, 0xe3, 0x85, 0xb8, 0x89, 0xf3, 0x1f, 0x6e, 0xb7, 0x6d, 0x1f, 0x4a, + 0x2f, 0x18, 0x09, 0x6f, 0xde, 0x4a, 0x01, 0x8f, 0x14, 0xc9, 0xb7, 0xa6, + 0xee, 0xa7, 0x63, 0x9f, 0x33, 0xa4, 0x54, 0x7c, 0x42, 0x83, 0x68, 0xb8, + 0xa5, 0xdf, 0xbf, 0xec, 0xb9, 0x1a, 0x5d, 0x13, 0x3b, 0xd9, 0xad, 0x68, + 0xfd, 0x20, 0x0a, 0x55, 0x91, 0x21, 0x64, 0xf9, 0xd7, 0x13, 0x01, 0xa0, + 0x08, 0x5d, 0x59, 0x89, 0x1b, 0x44, 0xaf, 0xa4, 0xac, 0xc7, 0x05, 0x10, + 0xfa, 0x41, 0x4a, 0xa8, 0xfb, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, + 0x01, 0x7b, 0x30, 0x82, 0x01, 0x77, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, + 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, + 0x01, 0x00, 0x30, 0x60, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x59, 0x30, + 0x57, 0x30, 0x48, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xb1, 0x3e, + 0x01, 0x00, 0x30, 0x3b, 0x30, 0x39, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x02, 0x01, 0x16, 0x2d, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x63, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x6f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2e, + 0x63, 0x66, 0x6d, 0x30, 0x0b, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, + 0x82, 0x37, 0x2a, 0x01, 0x30, 0x42, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x01, 0x01, 0x04, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x26, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x6f, 0x6d, + 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, + 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x72, 0x6f, 0x6f, 0x74, + 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, + 0x03, 0x02, 0x01, 0x86, 0x30, 0x27, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, + 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, + 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x09, 0x30, 0x1f, 0x06, + 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xe5, 0x9d, + 0x59, 0x30, 0x82, 0x47, 0x58, 0xcc, 0xac, 0xfa, 0x08, 0x54, 0x36, 0x86, + 0x7b, 0x3a, 0xb5, 0x04, 0x4d, 0xf0, 0x30, 0x42, 0x06, 0x03, 0x55, 0x1d, + 0x1f, 0x04, 0x3b, 0x30, 0x39, 0x30, 0x37, 0xa0, 0x35, 0xa0, 0x33, 0x86, + 0x31, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x64, 0x70, 0x31, + 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x74, 0x72, 0x75, 0x73, + 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x52, 0x4c, 0x2f, 0x4f, 0x6d, + 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x32, 0x30, 0x32, 0x35, 0x2e, 0x63, + 0x72, 0x6c, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, + 0x14, 0x51, 0xaf, 0x24, 0x26, 0x9c, 0xf4, 0x68, 0x22, 0x57, 0x80, 0x26, + 0x2b, 0x3b, 0x46, 0x62, 0x15, 0x7b, 0x1e, 0xcc, 0xa5, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, + 0x03, 0x82, 0x01, 0x01, 0x00, 0x69, 0x62, 0xf6, 0x84, 0x91, 0x00, 0xc4, + 0x6f, 0x82, 0x7b, 0x24, 0xe1, 0x42, 0xa2, 0xa5, 0x8b, 0x82, 0x5c, 0xa7, + 0xc5, 0x44, 0xcb, 0xe7, 0x52, 0x76, 0x63, 0xd3, 0x76, 0x9e, 0x78, 0xe2, + 0x69, 0x35, 0xb1, 0x38, 0xba, 0xb0, 0x96, 0xc6, 0x1f, 0xac, 0x7b, 0xc6, + 0xb2, 0x65, 0x77, 0x8b, 0x7d, 0x8d, 0xae, 0x64, 0xb9, 0xa5, 0x8c, 0x17, + 0xca, 0x58, 0x65, 0xc3, 0xad, 0x82, 0xf5, 0xc5, 0xa2, 0xf5, 0x01, 0x13, + 0x93, 0xc6, 0x7e, 0x44, 0xe5, 0xc4, 0x61, 0xfa, 0x03, 0xb6, 0x56, 0xc1, + 0x72, 0xe1, 0xc8, 0x28, 0xc5, 0x69, 0x21, 0x8f, 0xac, 0x6e, 0xfd, 0x7f, + 0x43, 0x83, 0x36, 0xb8, 0xc0, 0xd6, 0xa0, 0x28, 0xfe, 0x1a, 0x45, 0xbe, + 0xfd, 0x93, 0x8c, 0x8d, 0xa4, 0x64, 0x79, 0x1f, 0x14, 0xdb, 0xa1, 0x9f, + 0x21, 0xdc, 0xc0, 0x4e, 0x7b, 0x17, 0x22, 0x17, 0xb1, 0xb6, 0x3c, 0xd3, + 0x9b, 0xe2, 0x0a, 0xa3, 0x7e, 0x99, 0xb0, 0xc1, 0xac, 0xd8, 0xf4, 0x86, + 0xdf, 0x3c, 0xda, 0x7d, 0x14, 0x9c, 0x40, 0xc1, 0x7c, 0xd2, 0x18, 0x6f, + 0xf1, 0x4f, 0x26, 0x45, 0x09, 0x95, 0x94, 0x5c, 0xda, 0xd0, 0x98, 0xf8, + 0xf4, 0x4c, 0x82, 0x96, 0x10, 0xde, 0xac, 0x30, 0xcb, 0x2b, 0xae, 0xf9, + 0x92, 0xea, 0xbf, 0x79, 0x03, 0xfc, 0x1e, 0x3f, 0xac, 0x09, 0xa4, 0x3f, + 0x65, 0xfd, 0x91, 0x4f, 0x96, 0x24, 0xa7, 0xce, 0xb4, 0x4e, 0x6a, 0x96, + 0x29, 0x17, 0xae, 0xc0, 0xa8, 0xdf, 0x17, 0x22, 0xf4, 0x17, 0xe3, 0xdc, + 0x1c, 0x39, 0x06, 0x56, 0x10, 0xea, 0xea, 0xb5, 0x74, 0x17, 0x3c, 0x4e, + 0xdd, 0x7e, 0x91, 0x0a, 0xa8, 0x0b, 0x78, 0x07, 0xa7, 0x31, 0x44, 0x08, + 0x31, 0xab, 0x18, 0x84, 0x0f, 0x12, 0x9c, 0xe7, 0xde, 0x84, 0x2c, 0xe9, + 0x6d, 0x93, 0x45, 0xbf, 0xa8, 0xc1, 0x3f, 0x34, 0xdc, +} + +var certSet3Cert50 = []byte{ + 0x30, 0x82, 0x05, 0xe5, 0x30, 0x82, 0x03, 0xcd, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x13, 0x8b, 0xfe, 0xf3, 0x32, 0x94, 0xf9, 0xd8, 0x16, + 0xf9, 0x45, 0xc2, 0x71, 0x95, 0x29, 0x98, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x7d, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, + 0x4c, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, 0x4c, 0x74, 0x64, + 0x2e, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x22, + 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x44, 0x69, 0x67, 0x69, 0x74, + 0x61, 0x6c, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x31, 0x29, + 0x30, 0x27, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x20, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x35, 0x31, + 0x32, 0x31, 0x36, 0x30, 0x31, 0x30, 0x30, 0x30, 0x35, 0x5a, 0x17, 0x0d, + 0x33, 0x30, 0x31, 0x32, 0x31, 0x36, 0x30, 0x31, 0x30, 0x30, 0x30, 0x35, + 0x5a, 0x30, 0x78, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x49, 0x4c, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, + 0x4c, 0x74, 0x64, 0x2e, 0x31, 0x29, 0x30, 0x27, 0x06, 0x03, 0x55, 0x04, + 0x0b, 0x13, 0x20, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, + 0x26, 0x30, 0x24, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1d, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0x20, 0x33, 0x20, 0x4f, 0x56, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, + 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, + 0xaf, 0x67, 0x1c, 0x6f, 0xe5, 0x45, 0xe0, 0xd7, 0x46, 0x4b, 0x75, 0x2c, + 0xb6, 0x80, 0xf2, 0x9a, 0x17, 0x4d, 0x2d, 0xff, 0xde, 0xae, 0xd2, 0xd4, + 0x00, 0x8a, 0x3a, 0xb8, 0x31, 0xfe, 0x8e, 0x37, 0x9e, 0xfa, 0xaa, 0xd5, + 0xa3, 0x5b, 0x16, 0x12, 0xc1, 0x19, 0x3e, 0x34, 0x85, 0x96, 0xc3, 0xbe, + 0xd3, 0xb3, 0x43, 0xf4, 0x8d, 0x6f, 0x16, 0xbd, 0x30, 0xba, 0x07, 0xfc, + 0xd8, 0x9a, 0xc1, 0x79, 0x89, 0x80, 0x6d, 0xa0, 0x8c, 0xbe, 0xdd, 0x37, + 0xf7, 0xeb, 0x05, 0xd3, 0x53, 0x7f, 0x57, 0x58, 0x76, 0x55, 0xb6, 0xa8, + 0xa8, 0x86, 0x44, 0xb8, 0xbb, 0xd0, 0x13, 0xda, 0xfd, 0x8f, 0xe1, 0xf2, + 0xcd, 0xa0, 0x15, 0x38, 0x55, 0x56, 0xce, 0x26, 0xcf, 0x7c, 0x93, 0x75, + 0x29, 0x7a, 0x0a, 0xab, 0xfb, 0xba, 0x09, 0x38, 0x20, 0x11, 0x57, 0x07, + 0x5d, 0x7f, 0x49, 0x9f, 0x2a, 0x4a, 0x67, 0x1e, 0x9e, 0x58, 0xe9, 0xc7, + 0x7f, 0xf9, 0xc3, 0xed, 0xfe, 0x5f, 0x4d, 0xaf, 0xb8, 0x4f, 0x9d, 0xdf, + 0x69, 0x2d, 0x69, 0x1b, 0x3a, 0x58, 0x81, 0x69, 0x63, 0x30, 0xea, 0x87, + 0x8d, 0x0f, 0x52, 0x9d, 0x5a, 0xda, 0x39, 0x44, 0xba, 0x9f, 0x89, 0x9f, + 0x36, 0xb6, 0xc2, 0x19, 0x5c, 0xd9, 0x26, 0x78, 0xd9, 0xae, 0x5e, 0xfc, + 0x95, 0x90, 0xbf, 0xe8, 0x11, 0xc0, 0x47, 0x0f, 0x77, 0x89, 0xdd, 0x6a, + 0x28, 0x4f, 0x0a, 0xbc, 0x32, 0x64, 0x57, 0x43, 0x3d, 0x08, 0x65, 0x93, + 0xe5, 0x45, 0xae, 0xdd, 0x28, 0x0c, 0x27, 0x2c, 0x8e, 0xa6, 0x2b, 0x09, + 0x03, 0x5d, 0xa1, 0x78, 0xd2, 0x8c, 0xab, 0xb6, 0x6b, 0xb9, 0x46, 0xc9, + 0x19, 0x00, 0x39, 0xb9, 0xbf, 0xc6, 0x13, 0x2b, 0x73, 0x72, 0x1f, 0xf2, + 0x3e, 0x37, 0xb8, 0xe8, 0xb9, 0x14, 0x65, 0x88, 0x4d, 0xe2, 0xf1, 0x1b, + 0xd8, 0xa5, 0x1d, 0x3b, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, + 0x64, 0x30, 0x82, 0x01, 0x60, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, + 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x1d, 0x06, + 0x03, 0x55, 0x1d, 0x25, 0x04, 0x16, 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x03, 0x01, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, + 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, + 0x30, 0x32, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2b, 0x30, 0x29, 0x30, + 0x27, 0xa0, 0x25, 0xa0, 0x23, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, + 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x66, 0x73, 0x63, 0x61, + 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x66, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x01, 0x01, 0x04, 0x5a, 0x30, 0x58, 0x30, 0x24, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x30, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x24, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x61, 0x69, 0x61, 0x2e, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x63, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x74, + 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xb1, + 0x3f, 0x1c, 0x92, 0x7b, 0x92, 0xb0, 0x5a, 0x25, 0xb3, 0x38, 0xfb, 0x9c, + 0x07, 0xa4, 0x26, 0x50, 0x32, 0xe3, 0x51, 0x30, 0x1f, 0x06, 0x03, 0x55, + 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x4e, 0x0b, 0xef, 0x1a, + 0xa4, 0x40, 0x5b, 0xa5, 0x17, 0x69, 0x87, 0x30, 0xca, 0x34, 0x68, 0x43, + 0xd0, 0x41, 0xae, 0xf2, 0x30, 0x3f, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, + 0x38, 0x30, 0x36, 0x30, 0x34, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, + 0x2c, 0x30, 0x2a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, + 0x01, 0x16, 0x1e, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, + 0x77, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, + 0x03, 0x82, 0x02, 0x01, 0x00, 0x85, 0xf2, 0xe8, 0x14, 0xd3, 0x1b, 0xc1, + 0xa1, 0x16, 0x1d, 0xa4, 0xf4, 0x4d, 0xba, 0x51, 0x8b, 0x5c, 0x52, 0xb1, + 0x54, 0x54, 0x12, 0x16, 0x17, 0x9c, 0x96, 0x78, 0x6f, 0xd3, 0xbf, 0xdf, + 0x43, 0x36, 0xf5, 0x12, 0x89, 0x61, 0x72, 0x44, 0xdf, 0x1c, 0x9b, 0x09, + 0x4f, 0x60, 0x26, 0x68, 0xc1, 0xe6, 0x66, 0x50, 0x70, 0xb3, 0x6a, 0xf1, + 0xa8, 0x6a, 0x0c, 0x1e, 0x2e, 0x93, 0xf1, 0xee, 0x07, 0x3e, 0x09, 0xdd, + 0x30, 0x45, 0xb2, 0x56, 0x8e, 0xdc, 0x2c, 0x5c, 0xab, 0x49, 0xfa, 0xb9, + 0x04, 0x03, 0x40, 0x15, 0x7a, 0xb5, 0x30, 0xe0, 0x1d, 0x91, 0x8f, 0xa6, + 0xd6, 0x6f, 0x1f, 0x99, 0xa0, 0x84, 0x95, 0x39, 0xbd, 0xac, 0x77, 0x7f, + 0x72, 0x4b, 0xdd, 0x2d, 0xae, 0xff, 0xa8, 0x58, 0x1d, 0x46, 0x27, 0xd4, + 0x83, 0xc7, 0x69, 0x64, 0x9f, 0x19, 0xbb, 0x10, 0xf8, 0x04, 0x42, 0x87, + 0x59, 0x5d, 0x02, 0xb1, 0xd6, 0xe5, 0xc8, 0xda, 0x43, 0x30, 0xa3, 0xe8, + 0x37, 0xa5, 0xd2, 0x48, 0x0b, 0xa2, 0x83, 0x4e, 0x9d, 0x4f, 0x83, 0x58, + 0x9d, 0xd7, 0x47, 0x22, 0xb1, 0x89, 0xf0, 0x89, 0x3b, 0x3d, 0x28, 0x43, + 0x2c, 0x9b, 0x17, 0x7c, 0x03, 0xee, 0x9d, 0x26, 0x25, 0xe0, 0x04, 0xb8, + 0x1d, 0x04, 0x57, 0x42, 0x47, 0xda, 0x58, 0x69, 0xf0, 0xd3, 0x29, 0xab, + 0x12, 0x02, 0x99, 0x2b, 0x2a, 0xd8, 0x9d, 0xa0, 0x1f, 0x54, 0x5e, 0x23, + 0x9a, 0x0c, 0xd2, 0x99, 0x58, 0xc4, 0xa1, 0xe5, 0x49, 0xc2, 0x25, 0xa7, + 0x64, 0x20, 0x52, 0x2e, 0xe7, 0x89, 0xf5, 0x19, 0xc0, 0x8b, 0xd0, 0x63, + 0xb1, 0x78, 0x1e, 0xbe, 0x01, 0x47, 0xbe, 0x76, 0x81, 0x46, 0xf1, 0x99, + 0x1f, 0x94, 0x9a, 0xbe, 0xfa, 0x82, 0x15, 0xb5, 0x84, 0x84, 0x79, 0x75, + 0x93, 0xba, 0x9f, 0xb5, 0xe4, 0x9b, 0xc2, 0xcb, 0x69, 0x5c, 0xbd, 0x1f, + 0x55, 0x0a, 0xa7, 0x26, 0x30, 0x05, 0x51, 0xbe, 0x65, 0xee, 0x57, 0xa9, + 0x6a, 0xdf, 0xbd, 0xf9, 0x36, 0x2f, 0xad, 0x1e, 0x46, 0x41, 0x2b, 0xb1, + 0x88, 0xd0, 0x88, 0x25, 0x85, 0x40, 0x17, 0x79, 0xbf, 0x3d, 0x8d, 0xe2, + 0xf4, 0x2d, 0xea, 0x30, 0x31, 0xdf, 0xa1, 0x40, 0xcb, 0x35, 0xff, 0x82, + 0x9f, 0xf5, 0x99, 0x3c, 0x4a, 0xfd, 0x9d, 0xa1, 0xd1, 0x55, 0xcc, 0x20, + 0xa8, 0x1c, 0xd8, 0x20, 0x05, 0xab, 0xb3, 0x14, 0x65, 0x95, 0x53, 0xd8, + 0xe8, 0x8e, 0x57, 0xc5, 0x77, 0x6b, 0x2d, 0x4d, 0x88, 0xe9, 0x5d, 0x62, + 0xd5, 0xa2, 0xf8, 0x70, 0xe1, 0x70, 0xeb, 0x45, 0x23, 0x0e, 0xf0, 0x00, + 0x46, 0xc2, 0x48, 0x31, 0xe8, 0xe7, 0x36, 0x80, 0x36, 0x2d, 0x22, 0xf2, + 0x01, 0x27, 0x53, 0xeb, 0xce, 0xa7, 0x69, 0x49, 0x82, 0xbf, 0xe7, 0x0f, + 0x9c, 0xf3, 0x20, 0x2e, 0xf5, 0xfa, 0x5d, 0xce, 0xea, 0x58, 0x3a, 0x8f, + 0xd8, 0xaa, 0x7d, 0x30, 0xb7, 0x74, 0x96, 0x7c, 0x3d, 0x6e, 0xb4, 0xec, + 0x4a, 0x3b, 0x59, 0xb6, 0xa9, 0x50, 0x0d, 0x0f, 0x05, 0x06, 0x70, 0x26, + 0xb9, 0x95, 0x91, 0xd1, 0x5e, 0x24, 0x8c, 0x8f, 0xca, 0x74, 0x57, 0x97, + 0x90, 0x8b, 0x5a, 0xb7, 0xfe, 0x8d, 0xad, 0xd8, 0xe8, 0xc2, 0x06, 0xbc, + 0x08, 0x56, 0x21, 0x02, 0x12, 0x53, 0xc6, 0x9f, 0x86, 0x04, 0x58, 0xca, + 0x2d, 0xf8, 0x03, 0x0d, 0x57, 0x0b, 0x1c, 0x37, 0xbd, 0xf0, 0x5a, 0x35, + 0xf2, 0xfe, 0x3b, 0xd6, 0xa4, 0x37, 0x15, 0xe9, 0xf8, 0x08, 0x92, 0x96, + 0x3d, 0x74, 0xc8, 0xb5, 0x5c, 0x6e, 0x65, 0x08, 0xe7, 0xdf, 0x69, 0x73, + 0x9c, 0xec, 0xe3, 0x30, 0x5a, 0xa6, 0xdf, 0x5c, 0xbe, 0xda, 0x7f, 0x00, + 0xee, 0xa5, 0xda, 0x2b, 0x5c, 0x1e, 0x2a, 0x6a, 0xc0, 0xa3, 0xae, 0x1e, + 0xf1, +} + +var certSet3Cert51 = []byte{ + 0x30, 0x82, 0x06, 0x5c, 0x30, 0x82, 0x04, 0x44, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x07, 0x19, 0xc2, 0x85, 0x30, 0xe9, 0x3b, 0x36, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, + 0x00, 0x30, 0x7d, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x49, 0x4c, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, + 0x4c, 0x74, 0x64, 0x2e, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, + 0x0b, 0x13, 0x22, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x44, 0x69, + 0x67, 0x69, 0x74, 0x61, 0x6c, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, + 0x67, 0x31, 0x29, 0x30, 0x27, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x20, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, 0x43, 0x65, 0x72, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, + 0x30, 0x36, 0x30, 0x39, 0x31, 0x37, 0x32, 0x32, 0x34, 0x36, 0x33, 0x36, + 0x5a, 0x17, 0x0d, 0x31, 0x39, 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x35, + 0x39, 0x35, 0x39, 0x5a, 0x30, 0x55, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, + 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, 0x4e, 0x31, 0x1a, 0x30, 0x18, 0x06, + 0x03, 0x55, 0x04, 0x0a, 0x13, 0x11, 0x57, 0x6f, 0x53, 0x69, 0x67, 0x6e, + 0x20, 0x43, 0x41, 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x31, + 0x2a, 0x30, 0x28, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x21, 0x43, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x6f, 0x66, + 0x20, 0x57, 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x30, 0x82, 0x02, 0x22, 0x30, + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, + 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00, 0x30, 0x82, 0x02, 0x0a, 0x02, + 0x82, 0x02, 0x01, 0x00, 0xbd, 0xca, 0x8d, 0xac, 0xb8, 0x91, 0x15, 0x56, + 0x97, 0x7b, 0x6b, 0x5c, 0x7a, 0xc2, 0xde, 0x6b, 0xd9, 0xa1, 0xb0, 0xc3, + 0x10, 0x23, 0xfa, 0xa7, 0xa1, 0xb2, 0xcc, 0x31, 0xfa, 0x3e, 0xd9, 0xa6, + 0x29, 0x6f, 0x16, 0x3d, 0xe0, 0x6b, 0xf8, 0xb8, 0x40, 0x5f, 0xdb, 0x39, + 0xa8, 0x00, 0x7a, 0x8b, 0xa0, 0x4d, 0x54, 0x7d, 0xc2, 0x22, 0x78, 0xfc, + 0x8e, 0x09, 0xb8, 0xa8, 0x85, 0xd7, 0xcc, 0x95, 0x97, 0x4b, 0x74, 0xd8, + 0x9e, 0x7e, 0xf0, 0x00, 0xe4, 0x0e, 0x89, 0xae, 0x49, 0x28, 0x44, 0x1a, + 0x10, 0x99, 0x32, 0x0f, 0x25, 0x88, 0x53, 0xa4, 0x0d, 0xb3, 0x0f, 0x12, + 0x08, 0x16, 0x0b, 0x03, 0x71, 0x27, 0x1c, 0x7f, 0xe1, 0xdb, 0xd2, 0xfd, + 0x67, 0x68, 0xc4, 0x05, 0x5d, 0x0a, 0x0e, 0x5d, 0x70, 0xd7, 0xd8, 0x97, + 0xa0, 0xbc, 0x53, 0x41, 0x9a, 0x91, 0x8d, 0xf4, 0x9e, 0x36, 0x66, 0x7a, + 0x7e, 0x56, 0xc1, 0x90, 0x5f, 0xe6, 0xb1, 0x68, 0x20, 0x36, 0xa4, 0x8c, + 0x24, 0x2c, 0x2c, 0x47, 0x0b, 0x59, 0x76, 0x66, 0x30, 0xb5, 0xbe, 0xde, + 0xed, 0x8f, 0xf8, 0x9d, 0xd3, 0xbb, 0x01, 0x30, 0xe6, 0xf2, 0xf3, 0x0e, + 0xe0, 0x2c, 0x92, 0x80, 0xf3, 0x85, 0xf9, 0x28, 0x8a, 0xb4, 0x54, 0x2e, + 0x9a, 0xed, 0xf7, 0x76, 0xfc, 0x15, 0x68, 0x16, 0xeb, 0x4a, 0x6c, 0xeb, + 0x2e, 0x12, 0x8f, 0xd4, 0xcf, 0xfe, 0x0c, 0xc7, 0x5c, 0x1d, 0x0b, 0x7e, + 0x05, 0x32, 0xbe, 0x5e, 0xb0, 0x09, 0x2a, 0x42, 0xd5, 0xc9, 0x4e, 0x90, + 0xb3, 0x59, 0x0d, 0xbb, 0x7a, 0x7e, 0xcd, 0xd5, 0x08, 0x5a, 0xb4, 0x7f, + 0xd8, 0x1c, 0x69, 0x11, 0xf9, 0x27, 0x0f, 0x7b, 0x06, 0xaf, 0x54, 0x83, + 0x18, 0x7b, 0xe1, 0xdd, 0x54, 0x7a, 0x51, 0x68, 0x6e, 0x77, 0xfc, 0xc6, + 0xbf, 0x52, 0x4a, 0x66, 0x46, 0xa1, 0xb2, 0x67, 0x1a, 0xbb, 0xa3, 0x4f, + 0x77, 0xa0, 0xbe, 0x5d, 0xff, 0xfc, 0x56, 0x0b, 0x43, 0x72, 0x77, 0x90, + 0xca, 0x9e, 0xf9, 0xf2, 0x39, 0xf5, 0x0d, 0xa9, 0xf4, 0xea, 0xd7, 0xe7, + 0xb3, 0x10, 0x2f, 0x30, 0x42, 0x37, 0x21, 0xcc, 0x30, 0x70, 0xc9, 0x86, + 0x98, 0x0f, 0xcc, 0x58, 0x4d, 0x83, 0xbb, 0x7d, 0xe5, 0x1a, 0xa5, 0x37, + 0x8d, 0xb6, 0xac, 0x32, 0x97, 0x00, 0x3a, 0x63, 0x71, 0x24, 0x1e, 0x9e, + 0x37, 0xc4, 0xff, 0x74, 0xd4, 0x37, 0xc0, 0xe2, 0xfe, 0x88, 0x46, 0x60, + 0x11, 0xdd, 0x08, 0x3f, 0x50, 0x36, 0xab, 0xb8, 0x7a, 0xa4, 0x95, 0x62, + 0x6a, 0x6e, 0xb0, 0xca, 0x6a, 0x21, 0x5a, 0x69, 0xf3, 0xf3, 0xfb, 0x1d, + 0x70, 0x39, 0x95, 0xf3, 0xa7, 0x6e, 0xa6, 0x81, 0x89, 0xa1, 0x88, 0xc5, + 0x3b, 0x71, 0xca, 0xa3, 0x52, 0xee, 0x83, 0xbb, 0xfd, 0xa0, 0x77, 0xf4, + 0xe4, 0x6f, 0xe7, 0x42, 0xdb, 0x6d, 0x4a, 0x99, 0x8a, 0x34, 0x48, 0xbc, + 0x17, 0xdc, 0xe4, 0x80, 0x08, 0x22, 0xb6, 0xf2, 0x31, 0xc0, 0x3f, 0x04, + 0x3e, 0xeb, 0x9f, 0x20, 0x79, 0xd6, 0xb8, 0x06, 0x64, 0x64, 0x02, 0x31, + 0xd7, 0xa9, 0xcd, 0x52, 0xfb, 0x84, 0x45, 0x69, 0x09, 0x00, 0x2a, 0xdc, + 0x55, 0x8b, 0xc4, 0x06, 0x46, 0x4b, 0xc0, 0x4a, 0x1d, 0x09, 0x5b, 0x39, + 0x28, 0xfd, 0xa9, 0xab, 0xce, 0x00, 0xf9, 0x2e, 0x48, 0x4b, 0x26, 0xe6, + 0x30, 0x4c, 0xa5, 0x58, 0xca, 0xb4, 0x44, 0x82, 0x4f, 0xe7, 0x91, 0x1e, + 0x33, 0xc3, 0xb0, 0x93, 0xff, 0x11, 0xfc, 0x81, 0xd2, 0xca, 0x1f, 0x71, + 0x29, 0xdd, 0x76, 0x4f, 0x92, 0x25, 0xaf, 0x1d, 0x81, 0xb7, 0x0f, 0x2f, + 0x8c, 0xc3, 0x06, 0xcc, 0x2f, 0x27, 0xa3, 0x4a, 0xe4, 0x0e, 0x99, 0xba, + 0x7c, 0x1e, 0x45, 0x1f, 0x7f, 0xaa, 0x19, 0x45, 0x96, 0xfd, 0xfc, 0x3d, + 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x07, 0x30, 0x82, 0x01, + 0x03, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, + 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x02, 0x30, 0x0e, 0x06, + 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, + 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0xe1, 0x66, 0xcf, 0x0e, 0xd1, 0xf1, 0xb3, 0x4b, 0xb7, 0x06, 0x20, 0x14, + 0xfe, 0x87, 0x12, 0xd5, 0xf6, 0xfe, 0xfb, 0x3e, 0x30, 0x1f, 0x06, 0x03, + 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x4e, 0x0b, 0xef, + 0x1a, 0xa4, 0x40, 0x5b, 0xa5, 0x17, 0x69, 0x87, 0x30, 0xca, 0x34, 0x68, + 0x43, 0xd0, 0x41, 0xae, 0xf2, 0x30, 0x69, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x5d, 0x30, 0x5b, 0x30, 0x27, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x1b, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x63, 0x61, 0x30, 0x30, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x30, 0x02, 0x86, 0x24, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x61, + 0x69, 0x61, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x63, 0x61, + 0x2e, 0x63, 0x72, 0x74, 0x30, 0x32, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, + 0x2b, 0x30, 0x29, 0x30, 0x27, 0xa0, 0x25, 0xa0, 0x23, 0x86, 0x21, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x66, 0x73, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, + 0x82, 0x02, 0x01, 0x00, 0xb6, 0x6d, 0xf8, 0x70, 0xfb, 0xe2, 0x0d, 0x4c, + 0x98, 0xb3, 0x07, 0x49, 0x15, 0xf5, 0x04, 0xc4, 0x6c, 0xca, 0xca, 0xf5, + 0x68, 0xa0, 0x08, 0xfe, 0x12, 0x6d, 0x9c, 0x04, 0x06, 0xc9, 0xad, 0x9a, + 0x91, 0x52, 0x3e, 0x78, 0xc4, 0x5c, 0xee, 0x9f, 0x54, 0x1d, 0xee, 0xe3, + 0xf1, 0x5e, 0x30, 0xc9, 0x49, 0xe1, 0x39, 0xe0, 0xa6, 0x9d, 0x36, 0x6c, + 0x57, 0xfa, 0xe6, 0x34, 0x4f, 0x55, 0xe8, 0x87, 0xa8, 0x2c, 0xdd, 0x05, + 0xf1, 0x58, 0x12, 0x91, 0xe8, 0xca, 0xce, 0x28, 0x78, 0x8f, 0xdf, 0x07, + 0x85, 0x01, 0xa5, 0xdc, 0x45, 0x96, 0x05, 0xd4, 0x80, 0xb2, 0x2b, 0x05, + 0x9a, 0xcb, 0x9a, 0xa5, 0x8b, 0xe0, 0x3a, 0x67, 0xe6, 0x73, 0x47, 0xbe, + 0x4a, 0xfd, 0x27, 0xb1, 0x88, 0xef, 0xe6, 0xca, 0xcf, 0x8d, 0x0e, 0x26, + 0x9f, 0xfa, 0x5f, 0x57, 0x78, 0xad, 0x6d, 0xfe, 0xae, 0x9b, 0x35, 0x08, + 0xb1, 0xc3, 0xba, 0xc1, 0x00, 0x4a, 0x4b, 0x7d, 0x14, 0xbd, 0xf7, 0xf1, + 0xd3, 0x55, 0x18, 0xac, 0xd0, 0x33, 0x70, 0x88, 0x6d, 0xc4, 0x09, 0x71, + 0x14, 0xa6, 0x2b, 0x4f, 0x88, 0x81, 0xe7, 0x0b, 0x00, 0x37, 0xa9, 0x15, + 0x7d, 0x7e, 0xd7, 0x01, 0x96, 0x3f, 0x2f, 0xaf, 0x7b, 0x62, 0xae, 0x0a, + 0x4a, 0xbf, 0x4b, 0x39, 0x2e, 0x35, 0x10, 0x8b, 0xfe, 0x04, 0x39, 0xe4, + 0x3c, 0x3a, 0x0c, 0x09, 0x56, 0x40, 0x3a, 0xb5, 0xf4, 0xc2, 0x68, 0x0c, + 0xb5, 0xf9, 0x52, 0xcd, 0xee, 0x9d, 0xf8, 0x98, 0xfc, 0x78, 0xe7, 0x58, + 0x47, 0x8f, 0x1c, 0x73, 0x58, 0x69, 0x33, 0xab, 0xff, 0xdd, 0xdf, 0x8e, + 0x24, 0x01, 0x77, 0x98, 0x19, 0x3a, 0xb0, 0x66, 0x79, 0xbc, 0xe1, 0x08, + 0xa3, 0x0e, 0x4f, 0xc1, 0x04, 0xb3, 0xf3, 0x01, 0xc8, 0xeb, 0xd3, 0x59, + 0x1c, 0x35, 0xd2, 0x93, 0x1e, 0x70, 0x65, 0x82, 0x7f, 0xdb, 0xcf, 0xfb, + 0xc8, 0x99, 0x12, 0x60, 0xc3, 0x44, 0x6f, 0x3a, 0x80, 0x4b, 0xd7, 0xbe, + 0x21, 0xaa, 0x14, 0x7a, 0x64, 0xcb, 0xdd, 0x37, 0x43, 0x45, 0x5b, 0x32, + 0x2e, 0x45, 0xf0, 0xd9, 0x59, 0x1f, 0x6b, 0x18, 0xf0, 0x7c, 0xe9, 0x55, + 0x36, 0x19, 0x61, 0x5f, 0xb5, 0x7d, 0xf1, 0x8d, 0xbd, 0x88, 0xe4, 0x75, + 0x4b, 0x98, 0xdd, 0x27, 0xb0, 0xe4, 0x84, 0x44, 0x2a, 0x61, 0x84, 0x57, + 0x05, 0x82, 0x11, 0x1f, 0xaa, 0x35, 0x58, 0xf3, 0x20, 0x0e, 0xaf, 0x59, + 0xef, 0xfa, 0x55, 0x72, 0x72, 0x0d, 0x26, 0xd0, 0x9b, 0x53, 0x49, 0xac, + 0xce, 0x37, 0x2e, 0x65, 0x61, 0xff, 0xf6, 0xec, 0x1b, 0xea, 0xf6, 0xf1, + 0xa6, 0xd3, 0xd1, 0xb5, 0x7b, 0xbe, 0x35, 0xf4, 0x22, 0xc1, 0xbc, 0x8d, + 0x01, 0xbd, 0x68, 0x5e, 0x83, 0x0d, 0x2f, 0xec, 0xd6, 0xda, 0x63, 0x0c, + 0x27, 0xd1, 0x54, 0x3e, 0xe4, 0xa8, 0xd3, 0xce, 0x4b, 0x32, 0xb8, 0x91, + 0x94, 0xff, 0xfb, 0x5b, 0x49, 0x2d, 0x75, 0x18, 0xa8, 0xba, 0x71, 0x9a, + 0x3b, 0xae, 0xd9, 0xc0, 0xa9, 0x4f, 0x87, 0x91, 0xed, 0x8b, 0x7b, 0x6b, + 0x20, 0x98, 0x89, 0x39, 0x83, 0x4f, 0x80, 0xc4, 0x69, 0xcc, 0x17, 0xc9, + 0xc8, 0x4e, 0xbe, 0xe4, 0xa9, 0xa5, 0x81, 0x76, 0x70, 0x06, 0x04, 0x32, + 0xcd, 0x83, 0x65, 0xf4, 0xbc, 0x7d, 0x3e, 0x13, 0xbc, 0xd2, 0xe8, 0x6f, + 0x63, 0xaa, 0xb5, 0x3b, 0xda, 0x8d, 0x86, 0x32, 0x82, 0x78, 0x9d, 0xd9, + 0xcc, 0xff, 0xbf, 0x57, 0x64, 0x74, 0xed, 0x28, 0x3d, 0x44, 0x62, 0x15, + 0x61, 0x4b, 0xf7, 0x94, 0xb0, 0x0d, 0x2a, 0x67, 0x1c, 0xf0, 0xcb, 0x9b, + 0xa5, 0x92, 0xbf, 0xf8, 0x41, 0x5a, 0xc1, 0x3d, 0x60, 0xed, 0x9f, 0xbb, + 0xb8, 0x6d, 0x9b, 0xce, 0xa9, 0x6a, 0x16, 0x3f, 0x7e, 0xea, 0x06, 0xf1, +} diff --git a/vendor/github.com/lucas-clemente/quic-go-certificates/createCertSets.rb b/vendor/github.com/lucas-clemente/quic-go-certificates/createCertSets.rb new file mode 100755 index 0000000..6d28e83 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go-certificates/createCertSets.rb @@ -0,0 +1,34 @@ +#!/usr/bin/env ruby +# +# Extract the common certificate sets from the chromium source to go +# +# Usage: +# createCertSets.rb 1 ~/src/chromium/src/net/quic/crypto/common_cert_set_1* +# createCertSets.rb 2 ~/src/chromium/src/net/quic/crypto/common_cert_set_2* + +n = ARGV.shift +mainFile = ARGV.shift +dataFiles = ARGV + +data = "package certsets\n" +data += File.read(mainFile) +data += (dataFiles.map{|p| File.read(p)}).join + +# Good enough +data.gsub!(/\/\*(.*?)\*\//m, '') +data.gsub!(/^#include.+/, '') +data.gsub!(/^#if 0(.*?)\n#endif/m, '') + +data.gsub!(/^static const size_t kNumCerts.+/, '') +data.gsub!(/static const size_t kLens[^}]+};/m, '') + +data.gsub!('static const unsigned char* const kCerts[] = {', "var CertSet#{n} = [][]byte{") +data.gsub!('static const uint64_t kHash = UINT64_C', "const CertSet#{n}Hash uint64 = ") + +data.gsub!(/static const unsigned char kDERCert(\d+)\[\] = /, "var kDERCert\\1 = []byte") + +data.gsub!(/kDERCert(\d+)/, "certSet#{n}Cert\\1") + +File.write("cert_set_#{n}.go", data) + +system("gofmt -w -s cert_set_#{n}.go") diff --git a/vendor/github.com/lucas-clemente/quic-go/.editorconfig b/vendor/github.com/lucas-clemente/quic-go/.editorconfig new file mode 100644 index 0000000..538ba2b --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/.editorconfig @@ -0,0 +1,5 @@ +root = true + +[*] +indent_style = tab +indent_size = 2 diff --git a/vendor/github.com/lucas-clemente/quic-go/.gitignore b/vendor/github.com/lucas-clemente/quic-go/.gitignore new file mode 100644 index 0000000..040b55a --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/.gitignore @@ -0,0 +1,3 @@ +debug +debug.test +main diff --git a/vendor/github.com/lucas-clemente/quic-go/.travis.yml b/vendor/github.com/lucas-clemente/quic-go/.travis.yml new file mode 100644 index 0000000..9becaf0 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/.travis.yml @@ -0,0 +1,34 @@ +sudo: required + +language: go + +services: + - docker + +go: + - 1.6 + - 1.7.3 + +# first part of the GOARCH workaround +# setting the GOARCH directly doesn't work, since the value will be overwritten later +# so set it to a temporary environment variable first +env: + - TRAVIS_GOARCH=amd64 TESTMODE=unit + - TRAVIS_GOARCH=amd64 TESTMODE=integration + - TRAVIS_GOARCH=386 TESTMODE=unit + - TRAVIS_GOARCH=386 TESTMODE=integration + +# second part of the GOARCH workaround +# now actually set the GOARCH env variable to the value of the temporary variable set earlier +before_install: + - go get golang.org/x/tools/cmd/cover + - go get github.com/onsi/ginkgo/ginkgo + - go get github.com/onsi/gomega + - export GOARCH=$TRAVIS_GOARCH + - go env # for debugging + +script: + - .travis/script.sh + +after_success: + - .travis/after_success.sh diff --git a/vendor/github.com/lucas-clemente/quic-go/LICENSE b/vendor/github.com/lucas-clemente/quic-go/LICENSE new file mode 100644 index 0000000..9cf1062 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/LICENSE @@ -0,0 +1,19 @@ +MIT License + +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/lucas-clemente/quic-go/README.md b/vendor/github.com/lucas-clemente/quic-go/README.md new file mode 100644 index 0000000..dc0b459 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/README.md @@ -0,0 +1,64 @@ +# A QUIC server implementation in pure Go + + + +[![Godoc Reference](https://img.shields.io/badge/godoc-reference-blue.svg?style=flat-square)](https://godoc.org/github.com/lucas-clemente/quic-go) +[![Linux Build Status](https://img.shields.io/travis/lucas-clemente/quic-go/master.svg?style=flat-square&label=linux+build)](https://travis-ci.org/lucas-clemente/quic-go) +[![Windows Build Status](https://img.shields.io/appveyor/ci/lucas-clemente/quic-go/master.svg?style=flat-square&label=windows+build)](https://ci.appveyor.com/project/lucas-clemente/quic-go/branch/master) +[![Code Coverage](https://img.shields.io/codecov/c/github/lucas-clemente/quic-go/master.svg?style=flat-square)](https://codecov.io/gh/lucas-clemente/quic-go/) + +quic-go is an implementation of the [QUIC](https://en.wikipedia.org/wiki/QUIC) protocol in Go. While we're not far from being feature complete, there's still work to do regarding performance and security. At the moment, we do not recommend use in production systems. We appreciate any feedback :) + +## Roadmap + +Done: + +- Basic protocol with support for QUIC version 34-36 +- HTTP/2 support +- Crypto (RSA / ECDSA certificates, Curve25519 for key exchange, AES-GCM or Chacha20-Poly1305 as stream cipher) +- Loss detection and retransmission (currently fast retransmission & RTO) +- Flow Control +- Congestion control using cubic + +Major TODOs: + +- Security, especially DoS protections +- Performance +- Better packet loss detection +- Connection migration +- QUIC client + +## Guides + +Installing deps: + + go get -t + +Running tests: + + go test ./... + +Running the example server: + + go run example/main.go -www /var/www/ + +Using the `quic_client` from chromium: + + quic_client --quic-version=32 --host=127.0.0.1 --port=6121 --v=1 https://quic.clemente.io + +Using Chrome: + + /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --user-data-dir=/tmp/chrome --no-proxy-server --enable-quic --origin-to-force-quic-on=quic.clemente.io:443 --host-resolver-rules='MAP quic.clemente.io:443 127.0.0.1:6121' https://quic.clemente.io + +## Usage + +See the [example server](example/main.go) or try out [Caddy](https://github.com/mholt/caddy) (from version 0.9, [instructions here](https://github.com/mholt/caddy/wiki/QUIC)). Starting a QUIC server is very similar to the standard lib http in go: + +```go +http.Handle("/", http.FileServer(http.Dir(wwwDir))) +h2quic.ListenAndServeQUIC("localhost:4242", "/path/to/cert/chain.pem", "/path/to/privkey.pem", nil) +``` + +## Building on Windows + +Due to the low Windows timer resolution (see [StackOverflow question](http://stackoverflow.com/questions/37706834/high-resolution-timers-millisecond-precision-in-go-on-windows)) available with Go 1.6.x, some optimizations might not work when compiled with this version of the compiler. Please use Go 1.7 on Windows. diff --git a/vendor/github.com/lucas-clemente/quic-go/ackhandler/_gen.go b/vendor/github.com/lucas-clemente/quic-go/ackhandler/_gen.go new file mode 100644 index 0000000..154515b --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/ackhandler/_gen.go @@ -0,0 +1,7 @@ +package main + +import ( + _ "github.com/clipperhouse/linkedlist" + _ "github.com/clipperhouse/slice" + _ "github.com/clipperhouse/stringer" +) diff --git a/vendor/github.com/lucas-clemente/quic-go/ackhandler/interfaces.go b/vendor/github.com/lucas-clemente/quic-go/ackhandler/interfaces.go new file mode 100644 index 0000000..ee7ac59 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/ackhandler/interfaces.go @@ -0,0 +1,35 @@ +package ackhandler + +import ( + "time" + + "github.com/lucas-clemente/quic-go/frames" + "github.com/lucas-clemente/quic-go/protocol" +) + +// SentPacketHandler handles ACKs received for outgoing packets +type SentPacketHandler interface { + SentPacket(packet *Packet) error + ReceivedAck(ackFrame *frames.AckFrame, withPacketNumber protocol.PacketNumber, recvTime time.Time) error + + GetStopWaitingFrame(force bool) *frames.StopWaitingFrame + + MaybeQueueRTOs() + DequeuePacketForRetransmission() (packet *Packet) + + BytesInFlight() protocol.ByteCount + GetLeastUnacked() protocol.PacketNumber + + SendingAllowed() bool + CheckForError() error + + TimeOfFirstRTO() time.Time +} + +// ReceivedPacketHandler handles ACKs needed to send for incoming packets +type ReceivedPacketHandler interface { + ReceivedPacket(packetNumber protocol.PacketNumber) error + ReceivedStopWaiting(*frames.StopWaitingFrame) error + + GetAckFrame(dequeue bool) (*frames.AckFrame, error) +} diff --git a/vendor/github.com/lucas-clemente/quic-go/ackhandler/packet.go b/vendor/github.com/lucas-clemente/quic-go/ackhandler/packet.go new file mode 100644 index 0000000..6fe567c --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/ackhandler/packet.go @@ -0,0 +1,49 @@ +package ackhandler + +import ( + "time" + + "github.com/lucas-clemente/quic-go/frames" + "github.com/lucas-clemente/quic-go/protocol" +) + +// A Packet is a packet +// +gen linkedlist +type Packet struct { + PacketNumber protocol.PacketNumber + Frames []frames.Frame + Length protocol.ByteCount + + MissingReports uint8 + + SendTime time.Time +} + +// GetStreamFramesForRetransmission gets all the streamframes for retransmission +func (p *Packet) GetStreamFramesForRetransmission() []*frames.StreamFrame { + var streamFrames []*frames.StreamFrame + for _, frame := range p.Frames { + if streamFrame, isStreamFrame := frame.(*frames.StreamFrame); isStreamFrame { + streamFrames = append(streamFrames, streamFrame) + } + } + return streamFrames +} + +// GetControlFramesForRetransmission gets all the control frames for retransmission +func (p *Packet) GetControlFramesForRetransmission() []frames.Frame { + var controlFrames []frames.Frame + for _, frame := range p.Frames { + // omit ACKs + if _, isStreamFrame := frame.(*frames.StreamFrame); isStreamFrame { + continue + } + + _, isAck := frame.(*frames.AckFrame) + _, isStopWaiting := frame.(*frames.StopWaitingFrame) + if !isAck && !isStopWaiting { + controlFrames = append(controlFrames, frame) + } + } + return controlFrames +} diff --git a/vendor/github.com/lucas-clemente/quic-go/ackhandler/packet_linkedlist.go b/vendor/github.com/lucas-clemente/quic-go/ackhandler/packet_linkedlist.go new file mode 100644 index 0000000..a827b21 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/ackhandler/packet_linkedlist.go @@ -0,0 +1,214 @@ +// Generated by: main +// TypeWriter: linkedlist +// Directive: +gen on Packet + +package ackhandler + +// List is a modification of http://golang.org/pkg/container/list/ +// 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. + +// PacketElement is an element of a linked list. +type PacketElement struct { + // Next and previous pointers in the doubly-linked list of elements. + // To simplify the implementation, internally a list l is implemented + // as a ring, such that &l.root is both the next element of the last + // list element (l.Back()) and the previous element of the first list + // element (l.Front()). + next, prev *PacketElement + + // The list to which this element belongs. + list *PacketList + + // The value stored with this element. + Value Packet +} + +// Next returns the next list element or nil. +func (e *PacketElement) Next() *PacketElement { + if p := e.next; e.list != nil && p != &e.list.root { + return p + } + return nil +} + +// Prev returns the previous list element or nil. +func (e *PacketElement) Prev() *PacketElement { + if p := e.prev; e.list != nil && p != &e.list.root { + return p + } + return nil +} + +// PacketList represents a doubly linked list. +// The zero value for PacketList is an empty list ready to use. +type PacketList struct { + root PacketElement // sentinel list element, only &root, root.prev, and root.next are used + len int // current list length excluding (this) sentinel element +} + +// Init initializes or clears list l. +func (l *PacketList) Init() *PacketList { + l.root.next = &l.root + l.root.prev = &l.root + l.len = 0 + return l +} + +// NewPacketList returns an initialized list. +func NewPacketList() *PacketList { return new(PacketList).Init() } + +// Len returns the number of elements of list l. +// The complexity is O(1). +func (l *PacketList) Len() int { return l.len } + +// Front returns the first element of list l or nil. +func (l *PacketList) Front() *PacketElement { + if l.len == 0 { + return nil + } + return l.root.next +} + +// Back returns the last element of list l or nil. +func (l *PacketList) Back() *PacketElement { + if l.len == 0 { + return nil + } + return l.root.prev +} + +// lazyInit lazily initializes a zero PacketList value. +func (l *PacketList) lazyInit() { + if l.root.next == nil { + l.Init() + } +} + +// insert inserts e after at, increments l.len, and returns e. +func (l *PacketList) insert(e, at *PacketElement) *PacketElement { + n := at.next + at.next = e + e.prev = at + e.next = n + n.prev = e + e.list = l + l.len++ + return e +} + +// insertValue is a convenience wrapper for insert(&PacketElement{Value: v}, at). +func (l *PacketList) insertValue(v Packet, at *PacketElement) *PacketElement { + return l.insert(&PacketElement{Value: v}, at) +} + +// remove removes e from its list, decrements l.len, and returns e. +func (l *PacketList) remove(e *PacketElement) *PacketElement { + e.prev.next = e.next + e.next.prev = e.prev + e.next = nil // avoid memory leaks + e.prev = nil // avoid memory leaks + e.list = nil + l.len-- + return e +} + +// Remove removes e from l if e is an element of list l. +// It returns the element value e.Value. +func (l *PacketList) Remove(e *PacketElement) Packet { + if e.list == l { + // if e.list == l, l must have been initialized when e was inserted + // in l or l == nil (e is a zero PacketElement) and l.remove will crash + l.remove(e) + } + return e.Value +} + +// PushFront inserts a new element e with value v at the front of list l and returns e. +func (l *PacketList) PushFront(v Packet) *PacketElement { + l.lazyInit() + return l.insertValue(v, &l.root) +} + +// PushBack inserts a new element e with value v at the back of list l and returns e. +func (l *PacketList) PushBack(v Packet) *PacketElement { + l.lazyInit() + return l.insertValue(v, l.root.prev) +} + +// InsertBefore inserts a new element e with value v immediately before mark and returns e. +// If mark is not an element of l, the list is not modified. +func (l *PacketList) InsertBefore(v Packet, mark *PacketElement) *PacketElement { + if mark.list != l { + return nil + } + // see comment in PacketList.Remove about initialization of l + return l.insertValue(v, mark.prev) +} + +// InsertAfter inserts a new element e with value v immediately after mark and returns e. +// If mark is not an element of l, the list is not modified. +func (l *PacketList) InsertAfter(v Packet, mark *PacketElement) *PacketElement { + if mark.list != l { + return nil + } + // see comment in PacketList.Remove about initialization of l + return l.insertValue(v, mark) +} + +// MoveToFront moves element e to the front of list l. +// If e is not an element of l, the list is not modified. +func (l *PacketList) MoveToFront(e *PacketElement) { + if e.list != l || l.root.next == e { + return + } + // see comment in PacketList.Remove about initialization of l + l.insert(l.remove(e), &l.root) +} + +// MoveToBack moves element e to the back of list l. +// If e is not an element of l, the list is not modified. +func (l *PacketList) MoveToBack(e *PacketElement) { + if e.list != l || l.root.prev == e { + return + } + // see comment in PacketList.Remove about initialization of l + l.insert(l.remove(e), l.root.prev) +} + +// MoveBefore moves element e to its new position before mark. +// If e or mark is not an element of l, or e == mark, the list is not modified. +func (l *PacketList) MoveBefore(e, mark *PacketElement) { + if e.list != l || e == mark || mark.list != l { + return + } + l.insert(l.remove(e), mark.prev) +} + +// MoveAfter moves element e to its new position after mark. +// If e is not an element of l, or e == mark, the list is not modified. +func (l *PacketList) MoveAfter(e, mark *PacketElement) { + if e.list != l || e == mark || mark.list != l { + return + } + l.insert(l.remove(e), mark) +} + +// PushBackList inserts a copy of an other list at the back of list l. +// The lists l and other may be the same. +func (l *PacketList) PushBackList(other *PacketList) { + l.lazyInit() + for i, e := other.Len(), other.Front(); i > 0; i, e = i-1, e.Next() { + l.insertValue(e.Value, l.root.prev) + } +} + +// PushFrontList inserts a copy of an other list at the front of list l. +// The lists l and other may be the same. +func (l *PacketList) PushFrontList(other *PacketList) { + l.lazyInit() + for i, e := other.Len(), other.Back(); i > 0; i, e = i-1, e.Prev() { + l.insertValue(e.Value, &l.root) + } +} diff --git a/vendor/github.com/lucas-clemente/quic-go/ackhandler/received_packet_handler.go b/vendor/github.com/lucas-clemente/quic-go/ackhandler/received_packet_handler.go new file mode 100644 index 0000000..56ca3ef --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/ackhandler/received_packet_handler.go @@ -0,0 +1,106 @@ +package ackhandler + +import ( + "errors" + "time" + + "github.com/lucas-clemente/quic-go/frames" + "github.com/lucas-clemente/quic-go/protocol" +) + +var ( + // ErrDuplicatePacket occurres when a duplicate packet is received + ErrDuplicatePacket = errors.New("ReceivedPacketHandler: Duplicate Packet") + // ErrPacketSmallerThanLastStopWaiting occurs when a packet arrives with a packet number smaller than the largest LeastUnacked of a StopWaitingFrame. If this error occurs, the packet should be ignored + ErrPacketSmallerThanLastStopWaiting = errors.New("ReceivedPacketHandler: Packet number smaller than highest StopWaiting") +) + +var errInvalidPacketNumber = errors.New("ReceivedPacketHandler: Invalid packet number") + +type receivedPacketHandler struct { + largestObserved protocol.PacketNumber + ignorePacketsBelow protocol.PacketNumber + currentAckFrame *frames.AckFrame + stateChanged bool // has an ACK for this state already been sent? Will be set to false every time a new packet arrives, and to false every time an ACK is sent + + packetHistory *receivedPacketHistory + + largestObservedReceivedTime time.Time +} + +// NewReceivedPacketHandler creates a new receivedPacketHandler +func NewReceivedPacketHandler() ReceivedPacketHandler { + return &receivedPacketHandler{ + packetHistory: newReceivedPacketHistory(), + } +} + +func (h *receivedPacketHandler) ReceivedPacket(packetNumber protocol.PacketNumber) error { + if packetNumber == 0 { + return errInvalidPacketNumber + } + + // if the packet number is smaller than the largest LeastUnacked value of a StopWaiting we received, we cannot detect if this packet has a duplicate number + // the packet has to be ignored anyway + if packetNumber <= h.ignorePacketsBelow { + return ErrPacketSmallerThanLastStopWaiting + } + + if h.packetHistory.IsDuplicate(packetNumber) { + return ErrDuplicatePacket + } + + err := h.packetHistory.ReceivedPacket(packetNumber) + if err != nil { + return err + } + + h.stateChanged = true + h.currentAckFrame = nil + + if packetNumber > h.largestObserved { + h.largestObserved = packetNumber + h.largestObservedReceivedTime = time.Now() + } + + return nil +} + +func (h *receivedPacketHandler) ReceivedStopWaiting(f *frames.StopWaitingFrame) error { + // ignore if StopWaiting is unneeded, because we already received a StopWaiting with a higher LeastUnacked + if h.ignorePacketsBelow >= f.LeastUnacked { + return nil + } + + h.ignorePacketsBelow = f.LeastUnacked - 1 + + h.packetHistory.DeleteBelow(f.LeastUnacked) + return nil +} + +func (h *receivedPacketHandler) GetAckFrame(dequeue bool) (*frames.AckFrame, error) { + if !h.stateChanged { + return nil, nil + } + + if dequeue { + h.stateChanged = false + } + + if h.currentAckFrame != nil { + return h.currentAckFrame, nil + } + + ackRanges := h.packetHistory.GetAckRanges() + h.currentAckFrame = &frames.AckFrame{ + LargestAcked: h.largestObserved, + LowestAcked: ackRanges[len(ackRanges)-1].FirstPacketNumber, + PacketReceivedTime: h.largestObservedReceivedTime, + } + + if len(ackRanges) > 1 { + h.currentAckFrame.AckRanges = ackRanges + } + + return h.currentAckFrame, nil +} diff --git a/vendor/github.com/lucas-clemente/quic-go/ackhandler/received_packet_history.go b/vendor/github.com/lucas-clemente/quic-go/ackhandler/received_packet_history.go new file mode 100644 index 0000000..2c3b2cb --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/ackhandler/received_packet_history.go @@ -0,0 +1,135 @@ +package ackhandler + +import ( + "github.com/lucas-clemente/quic-go/frames" + "github.com/lucas-clemente/quic-go/protocol" + "github.com/lucas-clemente/quic-go/qerr" + "github.com/lucas-clemente/quic-go/utils" +) + +type receivedPacketHistory struct { + ranges *utils.PacketIntervalList + + // the map is used as a replacement for a set here. The bool is always supposed to be set to true + receivedPacketNumbers map[protocol.PacketNumber]bool + lowestInReceivedPacketNumbers protocol.PacketNumber +} + +var ( + errTooManyOutstandingReceivedAckRanges = qerr.Error(qerr.TooManyOutstandingReceivedPackets, "Too many outstanding received ACK ranges") + errTooManyOutstandingReceivedPackets = qerr.Error(qerr.TooManyOutstandingReceivedPackets, "Too many outstanding received packets") +) + +// newReceivedPacketHistory creates a new received packet history +func newReceivedPacketHistory() *receivedPacketHistory { + return &receivedPacketHistory{ + ranges: utils.NewPacketIntervalList(), + receivedPacketNumbers: make(map[protocol.PacketNumber]bool), + } +} + +// ReceivedPacket registers a packet with PacketNumber p and updates the ranges +func (h *receivedPacketHistory) ReceivedPacket(p protocol.PacketNumber) error { + if h.ranges.Len() >= protocol.MaxTrackedReceivedAckRanges { + return errTooManyOutstandingReceivedAckRanges + } + + if len(h.receivedPacketNumbers) >= protocol.MaxTrackedReceivedPackets { + return errTooManyOutstandingReceivedPackets + } + + h.receivedPacketNumbers[p] = true + + if h.ranges.Len() == 0 { + h.ranges.PushBack(utils.PacketInterval{Start: p, End: p}) + return nil + } + + for el := h.ranges.Back(); el != nil; el = el.Prev() { + // p already included in an existing range. Nothing to do here + if p >= el.Value.Start && p <= el.Value.End { + return nil + } + + var rangeExtended bool + if el.Value.End == p-1 { // extend a range at the end + rangeExtended = true + el.Value.End = p + } else if el.Value.Start == p+1 { // extend a range at the beginning + rangeExtended = true + el.Value.Start = p + } + + // if a range was extended (either at the beginning or at the end, maybe it is possible to merge two ranges into one) + if rangeExtended { + prev := el.Prev() + if prev != nil && prev.Value.End+1 == el.Value.Start { // merge two ranges + prev.Value.End = el.Value.End + h.ranges.Remove(el) + return nil + } + return nil // if the two ranges were not merge, we're done here + } + + // create a new range at the end + if p > el.Value.End { + h.ranges.InsertAfter(utils.PacketInterval{Start: p, End: p}, el) + return nil + } + } + + // create a new range at the beginning + h.ranges.InsertBefore(utils.PacketInterval{Start: p, End: p}, h.ranges.Front()) + + return nil +} + +// DeleteBelow deletes all entries below the leastUnacked packet number +func (h *receivedPacketHistory) DeleteBelow(leastUnacked protocol.PacketNumber) { + h.lowestInReceivedPacketNumbers = utils.MaxPacketNumber(h.lowestInReceivedPacketNumbers, leastUnacked) + + nextEl := h.ranges.Front() + for el := h.ranges.Front(); nextEl != nil; el = nextEl { + nextEl = el.Next() + + if leastUnacked > el.Value.Start && leastUnacked <= el.Value.End { + for i := el.Value.Start; i < leastUnacked; i++ { // adjust start value of a range + delete(h.receivedPacketNumbers, i) + } + el.Value.Start = leastUnacked + } else if el.Value.End < leastUnacked { // delete a whole range + for i := el.Value.Start; i <= el.Value.End; i++ { + delete(h.receivedPacketNumbers, i) + } + h.ranges.Remove(el) + } else { // no ranges affected. Nothing to do + return + } + } +} + +// IsDuplicate determines if a packet should be regarded as a duplicate packet +// note that after receiving a StopWaitingFrame, all packets below the LeastUnacked should be regarded as duplicates, even if the packet was just delayed +func (h *receivedPacketHistory) IsDuplicate(p protocol.PacketNumber) bool { + if p < h.lowestInReceivedPacketNumbers { + return true + } + + _, ok := h.receivedPacketNumbers[p] + return ok +} + +// GetAckRanges gets a slice of all AckRanges that can be used in an AckFrame +func (h *receivedPacketHistory) GetAckRanges() []frames.AckRange { + if h.ranges.Len() == 0 { + return nil + } + + var ackRanges []frames.AckRange + + for el := h.ranges.Back(); el != nil; el = el.Prev() { + ackRanges = append(ackRanges, frames.AckRange{FirstPacketNumber: el.Value.Start, LastPacketNumber: el.Value.End}) + } + + return ackRanges +} diff --git a/vendor/github.com/lucas-clemente/quic-go/ackhandler/sent_packet_handler.go b/vendor/github.com/lucas-clemente/quic-go/ackhandler/sent_packet_handler.go new file mode 100644 index 0000000..531a99a --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/ackhandler/sent_packet_handler.go @@ -0,0 +1,350 @@ +package ackhandler + +import ( + "errors" + "fmt" + "time" + + "github.com/lucas-clemente/quic-go/congestion" + "github.com/lucas-clemente/quic-go/frames" + "github.com/lucas-clemente/quic-go/protocol" + "github.com/lucas-clemente/quic-go/qerr" + "github.com/lucas-clemente/quic-go/utils" +) + +var ( + // ErrDuplicateOrOutOfOrderAck occurs when a duplicate or an out-of-order ACK is received + ErrDuplicateOrOutOfOrderAck = errors.New("SentPacketHandler: Duplicate or out-of-order ACK") + // ErrTooManyTrackedSentPackets occurs when the sentPacketHandler has to keep track of too many packets + ErrTooManyTrackedSentPackets = errors.New("Too many outstanding non-acked and non-retransmitted packets") + // ErrAckForSkippedPacket occurs when the client sent an ACK for a packet number that we intentionally skipped + ErrAckForSkippedPacket = qerr.Error(qerr.InvalidAckData, "Received an ACK for a skipped packet number") + errAckForUnsentPacket = qerr.Error(qerr.InvalidAckData, "Received ACK for an unsent package") +) + +var errPacketNumberNotIncreasing = errors.New("Already sent a packet with a higher packet number.") + +type sentPacketHandler struct { + lastSentPacketNumber protocol.PacketNumber + lastSentPacketTime time.Time + skippedPackets []protocol.PacketNumber + + LargestAcked protocol.PacketNumber + + largestReceivedPacketWithAck protocol.PacketNumber + + packetHistory *PacketList + stopWaitingManager stopWaitingManager + + retransmissionQueue []*Packet + + bytesInFlight protocol.ByteCount + + rttStats *congestion.RTTStats + congestion congestion.SendAlgorithm + + consecutiveRTOCount uint32 +} + +// NewSentPacketHandler creates a new sentPacketHandler +func NewSentPacketHandler() SentPacketHandler { + rttStats := &congestion.RTTStats{} + + congestion := congestion.NewCubicSender( + congestion.DefaultClock{}, + rttStats, + false, /* don't use reno since chromium doesn't (why?) */ + protocol.InitialCongestionWindow, + protocol.DefaultMaxCongestionWindow, + ) + + return &sentPacketHandler{ + packetHistory: NewPacketList(), + stopWaitingManager: stopWaitingManager{}, + rttStats: rttStats, + congestion: congestion, + } +} + +func (h *sentPacketHandler) ackPacket(packetElement *PacketElement) { + packet := &packetElement.Value + h.bytesInFlight -= packet.Length + h.packetHistory.Remove(packetElement) +} + +// nackPacket NACKs a packet +// it returns true if a FastRetransmissions was triggered +func (h *sentPacketHandler) nackPacket(packetElement *PacketElement) bool { + packet := &packetElement.Value + + packet.MissingReports++ + + if packet.MissingReports > protocol.RetransmissionThreshold { + utils.Debugf("\tQueueing packet 0x%x for retransmission (fast)", packet.PacketNumber) + h.queuePacketForRetransmission(packetElement) + return true + } + return false +} + +// does NOT set packet.Retransmitted. This variable is not needed anymore +func (h *sentPacketHandler) queuePacketForRetransmission(packetElement *PacketElement) { + packet := &packetElement.Value + h.bytesInFlight -= packet.Length + h.retransmissionQueue = append(h.retransmissionQueue, packet) + + h.packetHistory.Remove(packetElement) + + // strictly speaking, this is only necessary for RTO retransmissions + // this is because FastRetransmissions are triggered by missing ranges in ACKs, and then the LargestAcked will already be higher than the packet number of the retransmitted packet + h.stopWaitingManager.QueuedRetransmissionForPacketNumber(packet.PacketNumber) +} + +func (h *sentPacketHandler) largestInOrderAcked() protocol.PacketNumber { + if f := h.packetHistory.Front(); f != nil { + return f.Value.PacketNumber - 1 + } + return h.LargestAcked +} + +func (h *sentPacketHandler) SentPacket(packet *Packet) error { + if packet.PacketNumber <= h.lastSentPacketNumber { + return errPacketNumberNotIncreasing + } + + for p := h.lastSentPacketNumber + 1; p < packet.PacketNumber; p++ { + h.skippedPackets = append(h.skippedPackets, p) + + if len(h.skippedPackets) > protocol.MaxTrackedSkippedPackets { + h.skippedPackets = h.skippedPackets[1:] + } + } + + now := time.Now() + h.lastSentPacketTime = now + packet.SendTime = now + if packet.Length == 0 { + return errors.New("SentPacketHandler: packet cannot be empty") + } + h.bytesInFlight += packet.Length + + h.lastSentPacketNumber = packet.PacketNumber + h.packetHistory.PushBack(*packet) + + h.congestion.OnPacketSent( + now, + h.BytesInFlight(), + packet.PacketNumber, + packet.Length, + true, /* TODO: is retransmittable */ + ) + + return nil +} + +func (h *sentPacketHandler) ReceivedAck(ackFrame *frames.AckFrame, withPacketNumber protocol.PacketNumber, rcvTime time.Time) error { + if ackFrame.LargestAcked > h.lastSentPacketNumber { + return errAckForUnsentPacket + } + + // duplicate or out-of-order ACK + if withPacketNumber <= h.largestReceivedPacketWithAck { + return ErrDuplicateOrOutOfOrderAck + } + + h.largestReceivedPacketWithAck = withPacketNumber + + // ignore repeated ACK (ACKs that don't have a higher LargestAcked than the last ACK) + if ackFrame.LargestAcked <= h.largestInOrderAcked() { + return nil + } + + // check if it acks any packets that were skipped + for _, p := range h.skippedPackets { + if ackFrame.AcksPacket(p) { + return ErrAckForSkippedPacket + } + } + + h.LargestAcked = ackFrame.LargestAcked + + var ackedPackets congestion.PacketVector + var lostPackets congestion.PacketVector + ackRangeIndex := 0 + rttUpdated := false + + var el, elNext *PacketElement + for el = h.packetHistory.Front(); el != nil; el = elNext { + // determine the next list element right at the beginning, because el.Next() is not avaible anymore, when the list element is deleted (i.e. when the packet is ACKed) + elNext = el.Next() + packet := el.Value + packetNumber := packet.PacketNumber + + // NACK packets below the LowestAcked + if packetNumber < ackFrame.LowestAcked { + retransmitted := h.nackPacket(el) + if retransmitted { + lostPackets = append(lostPackets, congestion.PacketInfo{Number: packetNumber, Length: packet.Length}) + } + continue + } + + // Update the RTT + if packetNumber == h.LargestAcked { + rttUpdated = true + timeDelta := rcvTime.Sub(packet.SendTime) + h.rttStats.UpdateRTT(timeDelta, ackFrame.DelayTime, rcvTime) + if utils.Debug() { + utils.Debugf("\tEstimated RTT: %dms", h.rttStats.SmoothedRTT()/time.Millisecond) + } + } + + if packetNumber > ackFrame.LargestAcked { + break + } + + if ackFrame.HasMissingRanges() { + ackRange := ackFrame.AckRanges[len(ackFrame.AckRanges)-1-ackRangeIndex] + + for packetNumber > ackRange.LastPacketNumber && ackRangeIndex < len(ackFrame.AckRanges)-1 { + ackRangeIndex++ + ackRange = ackFrame.AckRanges[len(ackFrame.AckRanges)-1-ackRangeIndex] + } + + if packetNumber >= ackRange.FirstPacketNumber { // packet i contained in ACK range + if packetNumber > ackRange.LastPacketNumber { + return fmt.Errorf("BUG: ackhandler would have acked wrong packet 0x%x, while evaluating range 0x%x -> 0x%x", packetNumber, ackRange.FirstPacketNumber, ackRange.LastPacketNumber) + } + h.ackPacket(el) + ackedPackets = append(ackedPackets, congestion.PacketInfo{Number: packetNumber, Length: packet.Length}) + } else { + retransmitted := h.nackPacket(el) + if retransmitted { + lostPackets = append(lostPackets, congestion.PacketInfo{Number: packetNumber, Length: packet.Length}) + } + } + } else { + h.ackPacket(el) + ackedPackets = append(ackedPackets, congestion.PacketInfo{Number: packetNumber, Length: packet.Length}) + } + } + + if rttUpdated { + // Reset counter if a new packet was acked + h.consecutiveRTOCount = 0 + } + + h.garbageCollectSkippedPackets() + + h.stopWaitingManager.ReceivedAck(ackFrame) + + h.congestion.OnCongestionEvent( + rttUpdated, + h.BytesInFlight(), + ackedPackets, + lostPackets, + ) + + return nil +} + +func (h *sentPacketHandler) DequeuePacketForRetransmission() *Packet { + if len(h.retransmissionQueue) == 0 { + return nil + } + + if len(h.retransmissionQueue) > 0 { + queueLen := len(h.retransmissionQueue) + // packets are usually NACKed in descending order. So use the slice as a stack + packet := h.retransmissionQueue[queueLen-1] + h.retransmissionQueue = h.retransmissionQueue[:queueLen-1] + return packet + } + + return nil +} + +func (h *sentPacketHandler) BytesInFlight() protocol.ByteCount { + return h.bytesInFlight +} + +func (h *sentPacketHandler) GetLeastUnacked() protocol.PacketNumber { + return h.largestInOrderAcked() + 1 +} + +func (h *sentPacketHandler) GetStopWaitingFrame(force bool) *frames.StopWaitingFrame { + return h.stopWaitingManager.GetStopWaitingFrame(force) +} + +func (h *sentPacketHandler) SendingAllowed() bool { + congestionLimited := h.BytesInFlight() > h.congestion.GetCongestionWindow() + maxTrackedLimited := protocol.PacketNumber(len(h.retransmissionQueue)+h.packetHistory.Len()) >= protocol.MaxTrackedSentPackets + return !(congestionLimited || maxTrackedLimited) +} + +func (h *sentPacketHandler) CheckForError() error { + length := len(h.retransmissionQueue) + h.packetHistory.Len() + if protocol.PacketNumber(length) > protocol.MaxTrackedSentPackets { + return ErrTooManyTrackedSentPackets + } + return nil +} + +func (h *sentPacketHandler) MaybeQueueRTOs() { + if time.Now().Before(h.TimeOfFirstRTO()) { + return + } + + // Always queue the two oldest packets + if h.packetHistory.Front() != nil { + h.queueRTO(h.packetHistory.Front()) + } + if h.packetHistory.Front() != nil { + h.queueRTO(h.packetHistory.Front()) + } + + // Reset the RTO timer here, since it's not clear that this packet contained any retransmittable frames + h.lastSentPacketTime = time.Now() + h.consecutiveRTOCount++ +} + +func (h *sentPacketHandler) queueRTO(el *PacketElement) { + packet := &el.Value + packetsLost := congestion.PacketVector{congestion.PacketInfo{ + Number: packet.PacketNumber, + Length: packet.Length, + }} + h.congestion.OnCongestionEvent(false, h.BytesInFlight(), nil, packetsLost) + h.congestion.OnRetransmissionTimeout(true) + utils.Debugf("\tQueueing packet 0x%x for retransmission (RTO)", packet.PacketNumber) + h.queuePacketForRetransmission(el) +} + +func (h *sentPacketHandler) getRTO() time.Duration { + rto := h.congestion.RetransmissionDelay() + if rto == 0 { + rto = protocol.DefaultRetransmissionTime + } + rto = utils.MaxDuration(rto, protocol.MinRetransmissionTime) + // Exponential backoff + rto *= 1 << h.consecutiveRTOCount + return utils.MinDuration(rto, protocol.MaxRetransmissionTime) +} + +func (h *sentPacketHandler) TimeOfFirstRTO() time.Time { + if h.lastSentPacketTime.IsZero() { + return time.Time{} + } + return h.lastSentPacketTime.Add(h.getRTO()) +} + +func (h *sentPacketHandler) garbageCollectSkippedPackets() { + lioa := h.largestInOrderAcked() + deleteIndex := 0 + for i, p := range h.skippedPackets { + if p <= lioa { + deleteIndex = i + 1 + } + } + h.skippedPackets = h.skippedPackets[deleteIndex:] +} diff --git a/vendor/github.com/lucas-clemente/quic-go/ackhandler/stop_waiting_manager.go b/vendor/github.com/lucas-clemente/quic-go/ackhandler/stop_waiting_manager.go new file mode 100644 index 0000000..dfd79ae --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/ackhandler/stop_waiting_manager.go @@ -0,0 +1,42 @@ +package ackhandler + +import ( + "github.com/lucas-clemente/quic-go/frames" + "github.com/lucas-clemente/quic-go/protocol" +) + +// This stopWaitingManager is not supposed to satisfy the StopWaitingManager interface, which is a remnant of the legacy AckHandler, and should be remove once we drop support for QUIC 33 +type stopWaitingManager struct { + largestLeastUnackedSent protocol.PacketNumber + nextLeastUnacked protocol.PacketNumber + + lastStopWaitingFrame *frames.StopWaitingFrame +} + +func (s *stopWaitingManager) GetStopWaitingFrame(force bool) *frames.StopWaitingFrame { + if s.nextLeastUnacked <= s.largestLeastUnackedSent { + if force { + return s.lastStopWaitingFrame + } + return nil + } + + s.largestLeastUnackedSent = s.nextLeastUnacked + swf := &frames.StopWaitingFrame{ + LeastUnacked: s.nextLeastUnacked, + } + s.lastStopWaitingFrame = swf + return swf +} + +func (s *stopWaitingManager) ReceivedAck(ack *frames.AckFrame) { + if ack.LargestAcked >= s.nextLeastUnacked { + s.nextLeastUnacked = ack.LargestAcked + 1 + } +} + +func (s *stopWaitingManager) QueuedRetransmissionForPacketNumber(p protocol.PacketNumber) { + if p >= s.nextLeastUnacked { + s.nextLeastUnacked = p + 1 + } +} diff --git a/vendor/github.com/lucas-clemente/quic-go/appveyor.yml b/vendor/github.com/lucas-clemente/quic-go/appveyor.yml new file mode 100644 index 0000000..158dcb2 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/appveyor.yml @@ -0,0 +1,34 @@ +version: "{build}" + +os: Windows Server 2012 R2 + +environment: + GOPATH: c:\gopath + CGO_ENABLED: 0 + matrix: + - GOARCH: 386 + - GOARCH: amd64 + +clone_folder: c:\gopath\src\github.com\lucas-clemente\quic-go + +install: + - rmdir c:\go /s /q + - appveyor DownloadFile https://storage.googleapis.com/golang/go1.7.3.windows-amd64.zip + - 7z x go1.7.3.windows-amd64.zip -y -oC:\ > NUL + - set PATH=%PATH%;%GOPATH%\bin\windows_%GOARCH%;%GOPATH%\bin + - echo %PATH% + - echo %GOPATH% + - git submodule update --init --recursive + - go get github.com/onsi/ginkgo/ginkgo + - go get github.com/onsi/gomega + - go version + - go env + - go get -v -t ./... + +build_script: + - rm -r integrationtests + - ginkgo -r --randomizeAllSpecs --randomizeSuites --trace --progress + +test: off + +deploy: off diff --git a/vendor/github.com/lucas-clemente/quic-go/buffer_pool.go b/vendor/github.com/lucas-clemente/quic-go/buffer_pool.go new file mode 100644 index 0000000..bb4feb3 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/buffer_pool.go @@ -0,0 +1,26 @@ +package quic + +import ( + "sync" + + "github.com/lucas-clemente/quic-go/protocol" +) + +var bufferPool sync.Pool + +func getPacketBuffer() []byte { + return bufferPool.Get().([]byte) +} + +func putPacketBuffer(buf []byte) { + if cap(buf) != int(protocol.MaxPacketSize) { + panic("putPacketBuffer called with packet of wrong size!") + } + bufferPool.Put(buf[:0]) +} + +func init() { + bufferPool.New = func() interface{} { + return make([]byte, 0, protocol.MaxPacketSize) + } +} diff --git a/vendor/github.com/lucas-clemente/quic-go/codecov.yml b/vendor/github.com/lucas-clemente/quic-go/codecov.yml new file mode 100644 index 0000000..4e4e039 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/codecov.yml @@ -0,0 +1,11 @@ +coverage: + round: nearest + ignore: + - ackhandler/packet_linkedlist.go + - utils/byteinterval_linkedlist.go + - utils/packetinterval_linkedlist.go + status: + project: + default: + threshold: 0.5 + patch: false diff --git a/vendor/github.com/lucas-clemente/quic-go/congestion/bandwidth.go b/vendor/github.com/lucas-clemente/quic-go/congestion/bandwidth.go new file mode 100644 index 0000000..2c7ff23 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/congestion/bandwidth.go @@ -0,0 +1,26 @@ +package congestion + +import ( + "time" + + "github.com/lucas-clemente/quic-go/protocol" +) + +// Bandwidth of a connection +type Bandwidth uint64 + +const ( + // BitsPerSecond is 1 bit per second + BitsPerSecond Bandwidth = 1 + // KBitsPerSecond is 1000 bits per second + KBitsPerSecond = 1000 * BitsPerSecond + // BytesPerSecond is 1 byte per second + BytesPerSecond = 8 * BitsPerSecond + // KBytesPerSecond is 1000 bytes per second + KBytesPerSecond = 1000 * BytesPerSecond +) + +// BandwidthFromDelta calculates the bandwidth from a number of bytes and a time delta +func BandwidthFromDelta(bytes protocol.ByteCount, delta time.Duration) Bandwidth { + return Bandwidth(bytes) * Bandwidth(time.Second) / Bandwidth(delta) * BytesPerSecond +} diff --git a/vendor/github.com/lucas-clemente/quic-go/congestion/clock.go b/vendor/github.com/lucas-clemente/quic-go/congestion/clock.go new file mode 100644 index 0000000..405fae7 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/congestion/clock.go @@ -0,0 +1,18 @@ +package congestion + +import "time" + +// A Clock returns the current time +type Clock interface { + Now() time.Time +} + +// DefaultClock implements the Clock interface using the Go stdlib clock. +type DefaultClock struct{} + +var _ Clock = DefaultClock{} + +// Now gets the current time +func (DefaultClock) Now() time.Time { + return time.Now() +} diff --git a/vendor/github.com/lucas-clemente/quic-go/congestion/congestion_vector.go b/vendor/github.com/lucas-clemente/quic-go/congestion/congestion_vector.go new file mode 100644 index 0000000..9c6ebb4 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/congestion/congestion_vector.go @@ -0,0 +1,12 @@ +package congestion + +import "github.com/lucas-clemente/quic-go/protocol" + +// PacketInfo combines packet number and length of a packet for congestion calculation +type PacketInfo struct { + Number protocol.PacketNumber + Length protocol.ByteCount +} + +// PacketVector is passed to the congestion algorithm +type PacketVector []PacketInfo diff --git a/vendor/github.com/lucas-clemente/quic-go/congestion/cubic.go b/vendor/github.com/lucas-clemente/quic-go/congestion/cubic.go new file mode 100644 index 0000000..e6e8bf6 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/congestion/cubic.go @@ -0,0 +1,218 @@ +package congestion + +import ( + "math" + "time" + + "github.com/lucas-clemente/quic-go/protocol" + "github.com/lucas-clemente/quic-go/utils" +) + +// This cubic implementation is based on the one found in Chromiums's QUIC +// implementation, in the files net/quic/congestion_control/cubic.{hh,cc}. + +// Constants based on TCP defaults. +// The following constants are in 2^10 fractions of a second instead of ms to +// allow a 10 shift right to divide. + +// 1024*1024^3 (first 1024 is from 0.100^3) +// where 0.100 is 100 ms which is the scaling +// round trip time. +const cubeScale = 40 +const cubeCongestionWindowScale = 410 +const cubeFactor protocol.PacketNumber = 1 << cubeScale / cubeCongestionWindowScale + +const defaultNumConnections = 2 + +// Default Cubic backoff factor +const beta float32 = 0.7 + +// Additional backoff factor when loss occurs in the concave part of the Cubic +// curve. This additional backoff factor is expected to give up bandwidth to +// new concurrent flows and speed up convergence. +const betaLastMax float32 = 0.85 + +// If true, Cubic's epoch is shifted when the sender is application-limited. +const shiftQuicCubicEpochWhenAppLimited = true + +const maxCubicTimeInterval = 30 * time.Millisecond + +// Cubic implements the cubic algorithm from TCP +type Cubic struct { + clock Clock + // Number of connections to simulate. + numConnections int + // Time when this cycle started, after last loss event. + epoch time.Time + // Time when sender went into application-limited period. Zero if not in + // application-limited period. + appLimitedStartTime time.Time + // Time when we updated last_congestion_window. + lastUpdateTime time.Time + // Last congestion window (in packets) used. + lastCongestionWindow protocol.PacketNumber + // Max congestion window (in packets) used just before last loss event. + // Note: to improve fairness to other streams an additional back off is + // applied to this value if the new value is below our latest value. + lastMaxCongestionWindow protocol.PacketNumber + // Number of acked packets since the cycle started (epoch). + ackedPacketsCount protocol.PacketNumber + // TCP Reno equivalent congestion window in packets. + estimatedTCPcongestionWindow protocol.PacketNumber + // Origin point of cubic function. + originPointCongestionWindow protocol.PacketNumber + // Time to origin point of cubic function in 2^10 fractions of a second. + timeToOriginPoint uint32 + // Last congestion window in packets computed by cubic function. + lastTargetCongestionWindow protocol.PacketNumber +} + +// NewCubic returns a new Cubic instance +func NewCubic(clock Clock) *Cubic { + c := &Cubic{ + clock: clock, + numConnections: defaultNumConnections, + } + c.Reset() + return c +} + +// Reset is called after a timeout to reset the cubic state +func (c *Cubic) Reset() { + c.epoch = time.Time{} + c.appLimitedStartTime = time.Time{} + c.lastUpdateTime = time.Time{} + c.lastCongestionWindow = 0 + c.lastMaxCongestionWindow = 0 + c.ackedPacketsCount = 0 + c.estimatedTCPcongestionWindow = 0 + c.originPointCongestionWindow = 0 + c.timeToOriginPoint = 0 + c.lastTargetCongestionWindow = 0 +} + +func (c *Cubic) alpha() float32 { + // TCPFriendly alpha is described in Section 3.3 of the CUBIC paper. Note that + // beta here is a cwnd multiplier, and is equal to 1-beta from the paper. + // We derive the equivalent alpha for an N-connection emulation as: + b := c.beta() + return 3 * float32(c.numConnections) * float32(c.numConnections) * (1 - b) / (1 + b) +} + +func (c *Cubic) beta() float32 { + // kNConnectionBeta is the backoff factor after loss for our N-connection + // emulation, which emulates the effective backoff of an ensemble of N + // TCP-Reno connections on a single loss event. The effective multiplier is + // computed as: + return (float32(c.numConnections) - 1 + beta) / float32(c.numConnections) +} + +// OnApplicationLimited is called on ack arrival when sender is unable to use +// the available congestion window. Resets Cubic state during quiescence. +func (c *Cubic) OnApplicationLimited() { + if shiftQuicCubicEpochWhenAppLimited { + // When sender is not using the available congestion window, Cubic's epoch + // should not continue growing. Record the time when sender goes into an + // app-limited period here, to compensate later when cwnd growth happens. + if c.appLimitedStartTime.IsZero() { + c.appLimitedStartTime = c.clock.Now() + } + } else { + // When sender is not using the available congestion window, Cubic's epoch + // should not continue growing. Reset the epoch when in such a period. + c.epoch = time.Time{} + } +} + +// CongestionWindowAfterPacketLoss computes a new congestion window to use after +// a loss event. Returns the new congestion window in packets. The new +// congestion window is a multiplicative decrease of our current window. +func (c *Cubic) CongestionWindowAfterPacketLoss(currentCongestionWindow protocol.PacketNumber) protocol.PacketNumber { + if currentCongestionWindow < c.lastMaxCongestionWindow { + // We never reached the old max, so assume we are competing with another + // flow. Use our extra back off factor to allow the other flow to go up. + c.lastMaxCongestionWindow = protocol.PacketNumber(betaLastMax * float32(currentCongestionWindow)) + } else { + c.lastMaxCongestionWindow = currentCongestionWindow + } + c.epoch = time.Time{} // Reset time. + return protocol.PacketNumber(float32(currentCongestionWindow) * c.beta()) +} + +// CongestionWindowAfterAck computes a new congestion window to use after a received ACK. +// Returns the new congestion window in packets. The new congestion window +// follows a cubic function that depends on the time passed since last +// packet loss. +func (c *Cubic) CongestionWindowAfterAck(currentCongestionWindow protocol.PacketNumber, delayMin time.Duration) protocol.PacketNumber { + c.ackedPacketsCount++ // Packets acked. + currentTime := c.clock.Now() + + // Cubic is "independent" of RTT, the update is limited by the time elapsed. + if c.lastCongestionWindow == currentCongestionWindow && (currentTime.Sub(c.lastUpdateTime) <= maxCubicTimeInterval) { + return utils.MaxPacketNumber(c.lastTargetCongestionWindow, c.estimatedTCPcongestionWindow) + } + c.lastCongestionWindow = currentCongestionWindow + c.lastUpdateTime = currentTime + + if c.epoch.IsZero() { + // First ACK after a loss event. + c.epoch = currentTime // Start of epoch. + c.ackedPacketsCount = 1 // Reset count. + // Reset estimated_tcp_congestion_window_ to be in sync with cubic. + c.estimatedTCPcongestionWindow = currentCongestionWindow + if c.lastMaxCongestionWindow <= currentCongestionWindow { + c.timeToOriginPoint = 0 + c.originPointCongestionWindow = currentCongestionWindow + } else { + c.timeToOriginPoint = uint32(math.Cbrt(float64(cubeFactor * (c.lastMaxCongestionWindow - currentCongestionWindow)))) + c.originPointCongestionWindow = c.lastMaxCongestionWindow + } + } else { + // If sender was app-limited, then freeze congestion window growth during + // app-limited period. Continue growth now by shifting the epoch-start + // through the app-limited period. + if shiftQuicCubicEpochWhenAppLimited && !c.appLimitedStartTime.IsZero() { + shift := currentTime.Sub(c.appLimitedStartTime) + c.epoch = c.epoch.Add(shift) + c.appLimitedStartTime = time.Time{} + } + } + + // Change the time unit from microseconds to 2^10 fractions per second. Take + // the round trip time in account. This is done to allow us to use shift as a + // divide operator. + elapsedTime := int64((currentTime.Add(delayMin).Sub(c.epoch)/time.Microsecond)<<10) / 1000000 + + offset := int64(c.timeToOriginPoint) - elapsedTime + deltaCongestionWindow := protocol.PacketNumber((cubeCongestionWindowScale * offset * offset * offset) >> cubeScale) + targetCongestionWindow := c.originPointCongestionWindow - deltaCongestionWindow + + // With dynamic beta/alpha based on number of active streams, it is possible + // for the required_ack_count to become much lower than acked_packets_count_ + // suddenly, leading to more than one iteration through the following loop. + for { + // Update estimated TCP congestion_window. + requiredAckCount := protocol.PacketNumber(float32(c.estimatedTCPcongestionWindow) / c.alpha()) + if c.ackedPacketsCount < requiredAckCount { + break + } + c.ackedPacketsCount -= requiredAckCount + c.estimatedTCPcongestionWindow++ + } + + // We have a new cubic congestion window. + c.lastTargetCongestionWindow = targetCongestionWindow + + // Compute target congestion_window based on cubic target and estimated TCP + // congestion_window, use highest (fastest). + if targetCongestionWindow < c.estimatedTCPcongestionWindow { + targetCongestionWindow = c.estimatedTCPcongestionWindow + } + + return targetCongestionWindow +} + +// SetNumConnections sets the number of emulated connections +func (c *Cubic) SetNumConnections(n int) { + c.numConnections = n +} diff --git a/vendor/github.com/lucas-clemente/quic-go/congestion/cubic_sender.go b/vendor/github.com/lucas-clemente/quic-go/congestion/cubic_sender.go new file mode 100644 index 0000000..a34a69d --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/congestion/cubic_sender.go @@ -0,0 +1,309 @@ +package congestion + +import ( + "time" + + "github.com/lucas-clemente/quic-go/protocol" + "github.com/lucas-clemente/quic-go/utils" +) + +const ( + maxBurstBytes = 3 * protocol.DefaultTCPMSS + defaultMinimumCongestionWindow protocol.PacketNumber = 2 + renoBeta float32 = 0.7 // Reno backoff factor. +) + +type cubicSender struct { + hybridSlowStart HybridSlowStart + prr PrrSender + rttStats *RTTStats + stats connectionStats + cubic *Cubic + + reno bool + + // Track the largest packet that has been sent. + largestSentPacketNumber protocol.PacketNumber + + // Track the largest packet that has been acked. + largestAckedPacketNumber protocol.PacketNumber + + // Track the largest packet number outstanding when a CWND cutback occurs. + largestSentAtLastCutback protocol.PacketNumber + + // Congestion window in packets. + congestionWindow protocol.PacketNumber + + // Slow start congestion window in packets, aka ssthresh. + slowstartThreshold protocol.PacketNumber + + // Whether the last loss event caused us to exit slowstart. + // Used for stats collection of slowstartPacketsLost + lastCutbackExitedSlowstart bool + + // When true, exit slow start with large cutback of congestion window. + slowStartLargeReduction bool + + // Minimum congestion window in packets. + minCongestionWindow protocol.PacketNumber + + // Maximum number of outstanding packets for tcp. + maxTCPCongestionWindow protocol.PacketNumber + + // Number of connections to simulate. + numConnections int + + // ACK counter for the Reno implementation. + congestionWindowCount protocol.ByteCount + + initialCongestionWindow protocol.PacketNumber + initialMaxCongestionWindow protocol.PacketNumber +} + +// NewCubicSender makes a new cubic sender +func NewCubicSender(clock Clock, rttStats *RTTStats, reno bool, initialCongestionWindow, initialMaxCongestionWindow protocol.PacketNumber) SendAlgorithmWithDebugInfo { + return &cubicSender{ + rttStats: rttStats, + initialCongestionWindow: initialCongestionWindow, + initialMaxCongestionWindow: initialMaxCongestionWindow, + congestionWindow: initialCongestionWindow, + minCongestionWindow: defaultMinimumCongestionWindow, + slowstartThreshold: initialMaxCongestionWindow, + maxTCPCongestionWindow: initialMaxCongestionWindow, + numConnections: defaultNumConnections, + cubic: NewCubic(clock), + reno: reno, + } +} + +func (c *cubicSender) TimeUntilSend(now time.Time, bytesInFlight protocol.ByteCount) time.Duration { + if c.InRecovery() { + // PRR is used when in recovery. + return c.prr.TimeUntilSend(c.GetCongestionWindow(), bytesInFlight, c.GetSlowStartThreshold()) + } + if c.GetCongestionWindow() > bytesInFlight { + return 0 + } + return utils.InfDuration +} + +func (c *cubicSender) OnPacketSent(sentTime time.Time, bytesInFlight protocol.ByteCount, packetNumber protocol.PacketNumber, bytes protocol.ByteCount, isRetransmittable bool) bool { + // Only update bytesInFlight for data packets. + if !isRetransmittable { + return false + } + if c.InRecovery() { + // PRR is used when in recovery. + c.prr.OnPacketSent(bytes) + } + c.largestSentPacketNumber = packetNumber + c.hybridSlowStart.OnPacketSent(packetNumber) + return true +} + +func (c *cubicSender) InRecovery() bool { + return c.largestAckedPacketNumber <= c.largestSentAtLastCutback && c.largestAckedPacketNumber != 0 +} + +func (c *cubicSender) InSlowStart() bool { + return c.GetCongestionWindow() < c.GetSlowStartThreshold() +} + +func (c *cubicSender) GetCongestionWindow() protocol.ByteCount { + return protocol.ByteCount(c.congestionWindow) * protocol.DefaultTCPMSS +} + +func (c *cubicSender) GetSlowStartThreshold() protocol.ByteCount { + return protocol.ByteCount(c.slowstartThreshold) * protocol.DefaultTCPMSS +} + +func (c *cubicSender) ExitSlowstart() { + c.slowstartThreshold = c.congestionWindow +} + +func (c *cubicSender) SlowstartThreshold() protocol.PacketNumber { + return c.slowstartThreshold +} + +// OnCongestionEvent indicates an update to the congestion state, caused either by an incoming +// ack or loss event timeout. |rttUpdated| indicates whether a new +// latest_rtt sample has been taken, |byte_in_flight| the bytes in flight +// prior to the congestion event. |ackedPackets| and |lostPackets| are +// any packets considered acked or lost as a result of the congestion event. +func (c *cubicSender) OnCongestionEvent(rttUpdated bool, bytesInFlight protocol.ByteCount, ackedPackets PacketVector, lostPackets PacketVector) { + if rttUpdated && c.InSlowStart() && c.hybridSlowStart.ShouldExitSlowStart(c.rttStats.LatestRTT(), c.rttStats.MinRTT(), c.GetCongestionWindow()/protocol.DefaultTCPMSS) { + c.ExitSlowstart() + } + for _, i := range lostPackets { + c.onPacketLost(i.Number, i.Length, bytesInFlight) + } + for _, i := range ackedPackets { + c.onPacketAcked(i.Number, i.Length, bytesInFlight) + } +} + +func (c *cubicSender) onPacketAcked(ackedPacketNumber protocol.PacketNumber, ackedBytes protocol.ByteCount, bytesInFlight protocol.ByteCount) { + c.largestAckedPacketNumber = utils.MaxPacketNumber(ackedPacketNumber, c.largestAckedPacketNumber) + if c.InRecovery() { + // PRR is used when in recovery. + c.prr.OnPacketAcked(ackedBytes) + return + } + c.maybeIncreaseCwnd(ackedPacketNumber, ackedBytes, bytesInFlight) + if c.InSlowStart() { + c.hybridSlowStart.OnPacketAcked(ackedPacketNumber) + } +} + +func (c *cubicSender) onPacketLost(packetNumber protocol.PacketNumber, lostBytes protocol.ByteCount, bytesInFlight protocol.ByteCount) { + // TCP NewReno (RFC6582) says that once a loss occurs, any losses in packets + // already sent should be treated as a single loss event, since it's expected. + if packetNumber <= c.largestSentAtLastCutback { + if c.lastCutbackExitedSlowstart { + c.stats.slowstartPacketsLost++ + c.stats.slowstartBytesLost += lostBytes + if c.slowStartLargeReduction { + if c.stats.slowstartPacketsLost == 1 || (c.stats.slowstartBytesLost/protocol.DefaultTCPMSS) > (c.stats.slowstartBytesLost-lostBytes)/protocol.DefaultTCPMSS { + // Reduce congestion window by 1 for every mss of bytes lost. + c.congestionWindow = utils.MaxPacketNumber(c.congestionWindow-1, c.minCongestionWindow) + } + c.slowstartThreshold = c.congestionWindow + } + } + return + } + c.lastCutbackExitedSlowstart = c.InSlowStart() + if c.InSlowStart() { + c.stats.slowstartPacketsLost++ + } + + c.prr.OnPacketLost(bytesInFlight) + + // TODO(chromium): Separate out all of slow start into a separate class. + if c.slowStartLargeReduction && c.InSlowStart() { + c.congestionWindow = c.congestionWindow - 1 + } else if c.reno { + c.congestionWindow = protocol.PacketNumber(float32(c.congestionWindow) * c.RenoBeta()) + } else { + c.congestionWindow = c.cubic.CongestionWindowAfterPacketLoss(c.congestionWindow) + } + // Enforce a minimum congestion window. + if c.congestionWindow < c.minCongestionWindow { + c.congestionWindow = c.minCongestionWindow + } + c.slowstartThreshold = c.congestionWindow + c.largestSentAtLastCutback = c.largestSentPacketNumber + // reset packet count from congestion avoidance mode. We start + // counting again when we're out of recovery. + c.congestionWindowCount = 0 +} + +func (c *cubicSender) RenoBeta() float32 { + // kNConnectionBeta is the backoff factor after loss for our N-connection + // emulation, which emulates the effective backoff of an ensemble of N + // TCP-Reno connections on a single loss event. The effective multiplier is + // computed as: + return (float32(c.numConnections) - 1. + renoBeta) / float32(c.numConnections) +} + +// Called when we receive an ack. Normal TCP tracks how many packets one ack +// represents, but quic has a separate ack for each packet. +func (c *cubicSender) maybeIncreaseCwnd(ackedPacketNumber protocol.PacketNumber, ackedBytes protocol.ByteCount, bytesInFlight protocol.ByteCount) { + // Do not increase the congestion window unless the sender is close to using + // the current window. + if !c.isCwndLimited(bytesInFlight) { + c.cubic.OnApplicationLimited() + return + } + if c.congestionWindow >= c.maxTCPCongestionWindow { + return + } + if c.InSlowStart() { + // TCP slow start, exponential growth, increase by one for each ACK. + c.congestionWindow++ + return + } + if c.reno { + // Classic Reno congestion avoidance. + c.congestionWindowCount++ + // Divide by num_connections to smoothly increase the CWND at a faster + // rate than conventional Reno. + if protocol.PacketNumber(c.congestionWindowCount*protocol.ByteCount(c.numConnections)) >= c.congestionWindow { + c.congestionWindow++ + c.congestionWindowCount = 0 + } + } else { + c.congestionWindow = utils.MinPacketNumber(c.maxTCPCongestionWindow, c.cubic.CongestionWindowAfterAck(c.congestionWindow, c.rttStats.MinRTT())) + } +} + +func (c *cubicSender) isCwndLimited(bytesInFlight protocol.ByteCount) bool { + congestionWindow := c.GetCongestionWindow() + if bytesInFlight >= congestionWindow { + return true + } + availableBytes := congestionWindow - bytesInFlight + slowStartLimited := c.InSlowStart() && bytesInFlight > congestionWindow/2 + return slowStartLimited || availableBytes <= maxBurstBytes +} + +// BandwidthEstimate returns the current bandwidth estimate +func (c *cubicSender) BandwidthEstimate() Bandwidth { + srtt := c.rttStats.SmoothedRTT() + if srtt == 0 { + // If we haven't measured an rtt, the bandwidth estimate is unknown. + return 0 + } + return BandwidthFromDelta(c.GetCongestionWindow(), srtt) +} + +// HybridSlowStart returns the hybrid slow start instance for testing +func (c *cubicSender) HybridSlowStart() *HybridSlowStart { + return &c.hybridSlowStart +} + +// SetNumEmulatedConnections sets the number of emulated connections +func (c *cubicSender) SetNumEmulatedConnections(n int) { + c.numConnections = utils.Max(n, 1) + c.cubic.SetNumConnections(c.numConnections) +} + +// OnRetransmissionTimeout is called on an retransmission timeout +func (c *cubicSender) OnRetransmissionTimeout(packetsRetransmitted bool) { + c.largestSentAtLastCutback = 0 + if !packetsRetransmitted { + return + } + c.hybridSlowStart.Restart() + c.cubic.Reset() + c.slowstartThreshold = c.congestionWindow / 2 + c.congestionWindow = c.minCongestionWindow +} + +// OnConnectionMigration is called when the connection is migrated (?) +func (c *cubicSender) OnConnectionMigration() { + c.hybridSlowStart.Restart() + c.prr = PrrSender{} + c.largestSentPacketNumber = 0 + c.largestAckedPacketNumber = 0 + c.largestSentAtLastCutback = 0 + c.lastCutbackExitedSlowstart = false + c.cubic.Reset() + c.congestionWindowCount = 0 + c.congestionWindow = c.initialCongestionWindow + c.slowstartThreshold = c.initialMaxCongestionWindow + c.maxTCPCongestionWindow = c.initialMaxCongestionWindow +} + +// SetSlowStartLargeReduction allows enabling the SSLR experiment +func (c *cubicSender) SetSlowStartLargeReduction(enabled bool) { + c.slowStartLargeReduction = enabled +} + +// RetransmissionDelay gives the time to retransmission +func (c *cubicSender) RetransmissionDelay() time.Duration { + if c.rttStats.SmoothedRTT() == 0 { + return 0 + } + return c.rttStats.SmoothedRTT() + c.rttStats.MeanDeviation()*4 +} diff --git a/vendor/github.com/lucas-clemente/quic-go/congestion/hybrid_slow_start.go b/vendor/github.com/lucas-clemente/quic-go/congestion/hybrid_slow_start.go new file mode 100644 index 0000000..29204ff --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/congestion/hybrid_slow_start.go @@ -0,0 +1,111 @@ +package congestion + +import ( + "time" + + "github.com/lucas-clemente/quic-go/protocol" + "github.com/lucas-clemente/quic-go/utils" +) + +// Note(pwestin): the magic clamping numbers come from the original code in +// tcp_cubic.c. +const hybridStartLowWindow = protocol.ByteCount(16) + +// Number of delay samples for detecting the increase of delay. +const hybridStartMinSamples = uint32(8) + +// Exit slow start if the min rtt has increased by more than 1/8th. +const hybridStartDelayFactorExp = 3 // 2^3 = 8 +// The original paper specifies 2 and 8ms, but those have changed over time. +const hybridStartDelayMinThresholdUs = int64(4000) +const hybridStartDelayMaxThresholdUs = int64(16000) + +// HybridSlowStart implements the TCP hybrid slow start algorithm +type HybridSlowStart struct { + endPacketNumber protocol.PacketNumber + lastSentPacketNumber protocol.PacketNumber + started bool + currentMinRTT time.Duration + rttSampleCount uint32 + hystartFound bool +} + +// StartReceiveRound is called for the start of each receive round (burst) in the slow start phase. +func (s *HybridSlowStart) StartReceiveRound(lastSent protocol.PacketNumber) { + s.endPacketNumber = lastSent + s.currentMinRTT = 0 + s.rttSampleCount = 0 + s.started = true +} + +// IsEndOfRound returns true if this ack is the last packet number of our current slow start round. +func (s *HybridSlowStart) IsEndOfRound(ack protocol.PacketNumber) bool { + return s.endPacketNumber < ack +} + +// ShouldExitSlowStart should be called on every new ack frame, since a new +// RTT measurement can be made then. +// rtt: the RTT for this ack packet. +// minRTT: is the lowest delay (RTT) we have seen during the session. +// congestionWindow: the congestion window in packets. +func (s *HybridSlowStart) ShouldExitSlowStart(latestRTT time.Duration, minRTT time.Duration, congestionWindow protocol.ByteCount) bool { + if !s.started { + // Time to start the hybrid slow start. + s.StartReceiveRound(s.lastSentPacketNumber) + } + if s.hystartFound { + return true + } + // Second detection parameter - delay increase detection. + // Compare the minimum delay (s.currentMinRTT) of the current + // burst of packets relative to the minimum delay during the session. + // Note: we only look at the first few(8) packets in each burst, since we + // only want to compare the lowest RTT of the burst relative to previous + // bursts. + s.rttSampleCount++ + if s.rttSampleCount <= hybridStartMinSamples { + if s.currentMinRTT == 0 || s.currentMinRTT > latestRTT { + s.currentMinRTT = latestRTT + } + } + // We only need to check this once per round. + if s.rttSampleCount == hybridStartMinSamples { + // Divide minRTT by 8 to get a rtt increase threshold for exiting. + minRTTincreaseThresholdUs := int64(minRTT / time.Microsecond >> hybridStartDelayFactorExp) + // Ensure the rtt threshold is never less than 2ms or more than 16ms. + minRTTincreaseThresholdUs = utils.MinInt64(minRTTincreaseThresholdUs, hybridStartDelayMaxThresholdUs) + minRTTincreaseThreshold := time.Duration(utils.MaxInt64(minRTTincreaseThresholdUs, hybridStartDelayMinThresholdUs)) * time.Microsecond + + if s.currentMinRTT > (minRTT + minRTTincreaseThreshold) { + s.hystartFound = true + } + } + // Exit from slow start if the cwnd is greater than 16 and + // increasing delay is found. + return congestionWindow >= hybridStartLowWindow && s.hystartFound +} + +// OnPacketSent is called when a packet was sent +func (s *HybridSlowStart) OnPacketSent(packetNumber protocol.PacketNumber) { + s.lastSentPacketNumber = packetNumber +} + +// OnPacketAcked gets invoked after ShouldExitSlowStart, so it's best to end +// the round when the final packet of the burst is received and start it on +// the next incoming ack. +func (s *HybridSlowStart) OnPacketAcked(ackedPacketNumber protocol.PacketNumber) { + if s.IsEndOfRound(ackedPacketNumber) { + s.started = false + } +} + +// Started returns true if started +func (s *HybridSlowStart) Started() bool { + return s.started +} + +// Restart the slow start phase +func (s *HybridSlowStart) Restart() { + s.started = false + s.hystartFound = false +} diff --git a/vendor/github.com/lucas-clemente/quic-go/congestion/interface.go b/vendor/github.com/lucas-clemente/quic-go/congestion/interface.go new file mode 100644 index 0000000..593c09e --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/congestion/interface.go @@ -0,0 +1,35 @@ +package congestion + +import ( + "time" + + "github.com/lucas-clemente/quic-go/protocol" +) + +// A SendAlgorithm performs congestion control and calculates the congestion window +type SendAlgorithm interface { + TimeUntilSend(now time.Time, bytesInFlight protocol.ByteCount) time.Duration + OnPacketSent(sentTime time.Time, bytesInFlight protocol.ByteCount, packetNumber protocol.PacketNumber, bytes protocol.ByteCount, isRetransmittable bool) bool + GetCongestionWindow() protocol.ByteCount + OnCongestionEvent(rttUpdated bool, bytesInFlight protocol.ByteCount, ackedPackets PacketVector, lostPackets PacketVector) + SetNumEmulatedConnections(n int) + OnRetransmissionTimeout(packetsRetransmitted bool) + OnConnectionMigration() + RetransmissionDelay() time.Duration + + // Experiments + SetSlowStartLargeReduction(enabled bool) +} + +// SendAlgorithmWithDebugInfo adds some debug functions to SendAlgorithm +type SendAlgorithmWithDebugInfo interface { + SendAlgorithm + BandwidthEstimate() Bandwidth + + // Stuff only used in testing + + HybridSlowStart() *HybridSlowStart + SlowstartThreshold() protocol.PacketNumber + RenoBeta() float32 + InRecovery() bool +} diff --git a/vendor/github.com/lucas-clemente/quic-go/congestion/prr_sender.go b/vendor/github.com/lucas-clemente/quic-go/congestion/prr_sender.go new file mode 100644 index 0000000..f8e6d59 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/congestion/prr_sender.go @@ -0,0 +1,63 @@ +package congestion + +import ( + "time" + + "github.com/lucas-clemente/quic-go/protocol" + "github.com/lucas-clemente/quic-go/utils" +) + +// PrrSender implements the Proportional Rate Reduction (PRR) per RFC 6937 +type PrrSender struct { + bytesSentSinceLoss protocol.ByteCount + bytesDeliveredSinceLoss protocol.ByteCount + ackCountSinceLoss protocol.ByteCount + bytesInFlightBeforeLoss protocol.ByteCount +} + +// OnPacketSent should be called after a packet was sent +func (p *PrrSender) OnPacketSent(sentBytes protocol.ByteCount) { + p.bytesSentSinceLoss += sentBytes +} + +// OnPacketLost should be called on the first loss that triggers a recovery +// period and all other methods in this class should only be called when in +// recovery. +func (p *PrrSender) OnPacketLost(bytesInFlight protocol.ByteCount) { + p.bytesSentSinceLoss = 0 + p.bytesInFlightBeforeLoss = bytesInFlight + p.bytesDeliveredSinceLoss = 0 + p.ackCountSinceLoss = 0 +} + +// OnPacketAcked should be called after a packet was acked +func (p *PrrSender) OnPacketAcked(ackedBytes protocol.ByteCount) { + p.bytesDeliveredSinceLoss += ackedBytes + p.ackCountSinceLoss++ +} + +// TimeUntilSend calculates the time until a packet can be sent +func (p *PrrSender) TimeUntilSend(congestionWindow, bytesInFlight, slowstartThreshold protocol.ByteCount) time.Duration { + // Return QuicTime::Zero In order to ensure limited transmit always works. + if p.bytesSentSinceLoss == 0 || bytesInFlight < protocol.DefaultTCPMSS { + return 0 + } + if congestionWindow > bytesInFlight { + // During PRR-SSRB, limit outgoing packets to 1 extra MSS per ack, instead + // of sending the entire available window. This prevents burst retransmits + // when more packets are lost than the CWND reduction. + // limit = MAX(prr_delivered - prr_out, DeliveredData) + MSS + if p.bytesDeliveredSinceLoss+p.ackCountSinceLoss*protocol.DefaultTCPMSS <= p.bytesSentSinceLoss { + return utils.InfDuration + } + return 0 + } + // Implement Proportional Rate Reduction (RFC6937). + // Checks a simplified version of the PRR formula that doesn't use division: + // AvailableSendWindow = + // CEIL(prr_delivered * ssthresh / BytesInFlightAtLoss) - prr_sent + if p.bytesDeliveredSinceLoss*slowstartThreshold > p.bytesSentSinceLoss*p.bytesInFlightBeforeLoss { + return 0 + } + return utils.InfDuration +} diff --git a/vendor/github.com/lucas-clemente/quic-go/congestion/rtt_stats.go b/vendor/github.com/lucas-clemente/quic-go/congestion/rtt_stats.go new file mode 100644 index 0000000..0bf7b05 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/congestion/rtt_stats.go @@ -0,0 +1,182 @@ +package congestion + +import ( + "time" + + "github.com/lucas-clemente/quic-go/utils" +) + +const ( + initialRTTus = 100 * 1000 + rttAlpha float32 = 0.125 + oneMinusAlpha float32 = (1 - rttAlpha) + rttBeta float32 = 0.25 + oneMinusBeta float32 = (1 - rttBeta) + halfWindow float32 = 0.5 + quarterWindow float32 = 0.25 +) + +type rttSample struct { + rtt time.Duration + time time.Time +} + +// RTTStats provides round-trip statistics +type RTTStats struct { + initialRTTus int64 + + recentMinRTTwindow time.Duration + minRTT time.Duration + latestRTT time.Duration + smoothedRTT time.Duration + meanDeviation time.Duration + + numMinRTTsamplesRemaining uint32 + + newMinRTT rttSample + recentMinRTT rttSample + halfWindowRTT rttSample + quarterWindowRTT rttSample +} + +// NewRTTStats makes a properly initialized RTTStats object +func NewRTTStats() *RTTStats { + return &RTTStats{ + initialRTTus: initialRTTus, + recentMinRTTwindow: utils.InfDuration, + } +} + +// InitialRTTus is the initial RTT in us +func (r *RTTStats) InitialRTTus() int64 { return r.initialRTTus } + +// MinRTT Returns the minRTT for the entire connection. +// May return Zero if no valid updates have occurred. +func (r *RTTStats) MinRTT() time.Duration { return r.minRTT } + +// LatestRTT returns the most recent rtt measurement. +// May return Zero if no valid updates have occurred. +func (r *RTTStats) LatestRTT() time.Duration { return r.latestRTT } + +// RecentMinRTT the minRTT since SampleNewRecentMinRtt has been called, or the +// minRTT for the entire connection if SampleNewMinRtt was never called. +func (r *RTTStats) RecentMinRTT() time.Duration { return r.recentMinRTT.rtt } + +// SmoothedRTT returns the EWMA smoothed RTT for the connection. +// May return Zero if no valid updates have occurred. +func (r *RTTStats) SmoothedRTT() time.Duration { return r.smoothedRTT } + +// GetQuarterWindowRTT gets the quarter window RTT +func (r *RTTStats) GetQuarterWindowRTT() time.Duration { return r.quarterWindowRTT.rtt } + +// GetHalfWindowRTT gets the half window RTT +func (r *RTTStats) GetHalfWindowRTT() time.Duration { return r.halfWindowRTT.rtt } + +// MeanDeviation gets the mean deviation +func (r *RTTStats) MeanDeviation() time.Duration { return r.meanDeviation } + +// SetRecentMinRTTwindow sets how old a recent min rtt sample can be. +func (r *RTTStats) SetRecentMinRTTwindow(recentMinRTTwindow time.Duration) { + r.recentMinRTTwindow = recentMinRTTwindow +} + +// UpdateRTT updates the RTT based on a new sample. +func (r *RTTStats) UpdateRTT(sendDelta, ackDelay time.Duration, now time.Time) { + if sendDelta == utils.InfDuration || sendDelta <= 0 { + utils.Debugf("Ignoring measured sendDelta, because it's is either infinite, zero, or negative: %d", sendDelta/time.Microsecond) + return + } + + // Update r.minRTT first. r.minRTT does not use an rttSample corrected for + // ackDelay but the raw observed sendDelta, since poor clock granularity at + // the client may cause a high ackDelay to result in underestimation of the + // r.minRTT. + if r.minRTT == 0 || r.minRTT > sendDelta { + r.minRTT = sendDelta + } + r.updateRecentMinRTT(sendDelta, now) + + // Correct for ackDelay if information received from the peer results in a + // positive RTT sample. Otherwise, we use the sendDelta as a reasonable + // measure for smoothedRTT. + sample := sendDelta + if sample > ackDelay { + sample -= ackDelay + } + r.latestRTT = sample + // First time call. + if r.smoothedRTT == 0 { + r.smoothedRTT = sample + r.meanDeviation = sample / 2 + } else { + r.meanDeviation = time.Duration(oneMinusBeta*float32(r.meanDeviation/time.Microsecond)+rttBeta*float32(utils.AbsDuration(r.smoothedRTT-sample)/time.Microsecond)) * time.Microsecond + r.smoothedRTT = time.Duration((float32(r.smoothedRTT/time.Microsecond)*oneMinusAlpha)+(float32(sample/time.Microsecond)*rttAlpha)) * time.Microsecond + } +} + +func (r *RTTStats) updateRecentMinRTT(sample time.Duration, now time.Time) { // Recent minRTT update. + if r.numMinRTTsamplesRemaining > 0 { + r.numMinRTTsamplesRemaining-- + if r.newMinRTT.rtt == 0 || sample <= r.newMinRTT.rtt { + r.newMinRTT = rttSample{rtt: sample, time: now} + } + if r.numMinRTTsamplesRemaining == 0 { + r.recentMinRTT = r.newMinRTT + r.halfWindowRTT = r.newMinRTT + r.quarterWindowRTT = r.newMinRTT + } + } + + // Update the three recent rtt samples. + if r.recentMinRTT.rtt == 0 || sample <= r.recentMinRTT.rtt { + r.recentMinRTT = rttSample{rtt: sample, time: now} + r.halfWindowRTT = r.recentMinRTT + r.quarterWindowRTT = r.recentMinRTT + } else if sample <= r.halfWindowRTT.rtt { + r.halfWindowRTT = rttSample{rtt: sample, time: now} + r.quarterWindowRTT = r.halfWindowRTT + } else if sample <= r.quarterWindowRTT.rtt { + r.quarterWindowRTT = rttSample{rtt: sample, time: now} + } + + // Expire old min rtt samples. + if r.recentMinRTT.time.Before(now.Add(-r.recentMinRTTwindow)) { + r.recentMinRTT = r.halfWindowRTT + r.halfWindowRTT = r.quarterWindowRTT + r.quarterWindowRTT = rttSample{rtt: sample, time: now} + } else if r.halfWindowRTT.time.Before(now.Add(-time.Duration(float32(r.recentMinRTTwindow/time.Microsecond)*halfWindow) * time.Microsecond)) { + r.halfWindowRTT = r.quarterWindowRTT + r.quarterWindowRTT = rttSample{rtt: sample, time: now} + } else if r.quarterWindowRTT.time.Before(now.Add(-time.Duration(float32(r.recentMinRTTwindow/time.Microsecond)*quarterWindow) * time.Microsecond)) { + r.quarterWindowRTT = rttSample{rtt: sample, time: now} + } +} + +// SampleNewRecentMinRTT forces RttStats to sample a new recent min rtt within the next +// |numSamples| UpdateRTT calls. +func (r *RTTStats) SampleNewRecentMinRTT(numSamples uint32) { + r.numMinRTTsamplesRemaining = numSamples + r.newMinRTT = rttSample{} +} + +// OnConnectionMigration is called when connection migrates and rtt measurement needs to be reset. +func (r *RTTStats) OnConnectionMigration() { + r.latestRTT = 0 + r.minRTT = 0 + r.smoothedRTT = 0 + r.meanDeviation = 0 + r.initialRTTus = initialRTTus + r.numMinRTTsamplesRemaining = 0 + r.recentMinRTTwindow = utils.InfDuration + r.recentMinRTT = rttSample{} + r.halfWindowRTT = rttSample{} + r.quarterWindowRTT = rttSample{} +} + +// ExpireSmoothedMetrics causes the smoothed_rtt to be increased to the latest_rtt if the latest_rtt +// is larger. The mean deviation is increased to the most recent deviation if +// it's larger. +func (r *RTTStats) ExpireSmoothedMetrics() { + r.meanDeviation = utils.MaxDuration(r.meanDeviation, utils.AbsDuration(r.smoothedRTT-r.latestRTT)) + r.smoothedRTT = utils.MaxDuration(r.smoothedRTT, r.latestRTT) +} diff --git a/vendor/github.com/lucas-clemente/quic-go/congestion/stats.go b/vendor/github.com/lucas-clemente/quic-go/congestion/stats.go new file mode 100644 index 0000000..8f272b2 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/congestion/stats.go @@ -0,0 +1,8 @@ +package congestion + +import "github.com/lucas-clemente/quic-go/protocol" + +type connectionStats struct { + slowstartPacketsLost protocol.PacketNumber + slowstartBytesLost protocol.ByteCount +} diff --git a/vendor/github.com/lucas-clemente/quic-go/crypto/AEAD.go b/vendor/github.com/lucas-clemente/quic-go/crypto/AEAD.go new file mode 100644 index 0000000..a59ce6e --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/crypto/AEAD.go @@ -0,0 +1,9 @@ +package crypto + +import "github.com/lucas-clemente/quic-go/protocol" + +// An AEAD implements QUIC's authenticated encryption and associated data +type AEAD interface { + Open(dst, src []byte, packetNumber protocol.PacketNumber, associatedData []byte) ([]byte, error) + Seal(dst, src []byte, packetNumber protocol.PacketNumber, associatedData []byte) []byte +} diff --git a/vendor/github.com/lucas-clemente/quic-go/crypto/aesgcm_aead.go b/vendor/github.com/lucas-clemente/quic-go/crypto/aesgcm_aead.go new file mode 100644 index 0000000..a738cc2 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/crypto/aesgcm_aead.go @@ -0,0 +1,58 @@ +package crypto + +import ( + "crypto/cipher" + "errors" + + "github.com/lucas-clemente/aes12" + + "github.com/lucas-clemente/quic-go/protocol" +) + +type aeadAESGCM struct { + otherIV []byte + myIV []byte + encrypter cipher.AEAD + decrypter cipher.AEAD +} + +// NewAEADAESGCM creates a AEAD using AES-GCM with 12 bytes tag size +// +// AES-GCM support is a bit hacky, since the go stdlib does not support 12 byte +// tag size, and couples the cipher and aes packages closely. +// See https://github.com/lucas-clemente/aes12. +func NewAEADAESGCM(otherKey []byte, myKey []byte, otherIV []byte, myIV []byte) (AEAD, error) { + if len(myKey) != 16 || len(otherKey) != 16 || len(myIV) != 4 || len(otherIV) != 4 { + return nil, errors.New("AES-GCM: expected 16-byte keys and 4-byte IVs") + } + encrypterCipher, err := aes12.NewCipher(myKey) + if err != nil { + return nil, err + } + encrypter, err := aes12.NewGCM(encrypterCipher) + if err != nil { + return nil, err + } + decrypterCipher, err := aes12.NewCipher(otherKey) + if err != nil { + return nil, err + } + decrypter, err := aes12.NewGCM(decrypterCipher) + if err != nil { + return nil, err + } + return &aeadAESGCM{ + otherIV: otherIV, + myIV: myIV, + encrypter: encrypter, + decrypter: decrypter, + }, nil +} + +func (aead *aeadAESGCM) Open(dst, src []byte, packetNumber protocol.PacketNumber, associatedData []byte) ([]byte, error) { + return aead.decrypter.Open(dst, makeNonce(aead.otherIV, packetNumber), src, associatedData) +} + +func (aead *aeadAESGCM) Seal(dst, src []byte, packetNumber protocol.PacketNumber, associatedData []byte) []byte { + return aead.encrypter.Seal(dst, makeNonce(aead.myIV, packetNumber), src, associatedData) +} diff --git a/vendor/github.com/lucas-clemente/quic-go/crypto/cert_cache.go b/vendor/github.com/lucas-clemente/quic-go/crypto/cert_cache.go new file mode 100644 index 0000000..3ebdc1a --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/crypto/cert_cache.go @@ -0,0 +1,48 @@ +package crypto + +import ( + "fmt" + "hash/fnv" + + "github.com/hashicorp/golang-lru" + "github.com/lucas-clemente/quic-go/protocol" +) + +var ( + compressedCertsCache *lru.Cache +) + +func getCompressedCert(chain [][]byte, pCommonSetHashes, pCachedHashes []byte) ([]byte, error) { + // Hash all inputs + hasher := fnv.New64a() + for _, v := range chain { + hasher.Write(v) + } + hasher.Write(pCommonSetHashes) + hasher.Write(pCachedHashes) + hash := hasher.Sum64() + + var result []byte + + resultI, isCached := compressedCertsCache.Get(hash) + if isCached { + result = resultI.([]byte) + } else { + var err error + result, err = compressChain(chain, pCommonSetHashes, pCachedHashes) + if err != nil { + return nil, err + } + compressedCertsCache.Add(hash, result) + } + + return result, nil +} + +func init() { + var err error + compressedCertsCache, err = lru.New(protocol.NumCachedCertificates) + if err != nil { + panic(fmt.Sprintf("fatal error in quic-go: could not create lru cache: %s", err.Error())) + } +} diff --git a/vendor/github.com/lucas-clemente/quic-go/crypto/cert_compression.go b/vendor/github.com/lucas-clemente/quic-go/crypto/cert_compression.go new file mode 100644 index 0000000..8fdb257 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/crypto/cert_compression.go @@ -0,0 +1,156 @@ +package crypto + +import ( + "bytes" + "compress/flate" + "compress/zlib" + "encoding/binary" + "errors" + "fmt" + "hash/fnv" + + "github.com/lucas-clemente/quic-go/utils" +) + +type entryType uint8 + +const ( + entryCompressed entryType = 1 + entryCached entryType = 2 + entryCommon entryType = 3 +) + +type entry struct { + t entryType + h uint64 + i uint32 +} + +func compressChain(chain [][]byte, pCommonSetHashes, pCachedHashes []byte) ([]byte, error) { + res := &bytes.Buffer{} + + cachedHashes, err := splitHashes(pCachedHashes) + if err != nil { + return nil, err + } + + setHashes, err := splitHashes(pCommonSetHashes) + if err != nil { + return nil, err + } + + chainHashes := make([]uint64, len(chain)) + for i := range chain { + chainHashes[i] = hashCert(chain[i]) + } + + entries := buildEntries(chain, chainHashes, cachedHashes, setHashes) + + totalUncompressedLen := 0 + for i, e := range entries { + res.WriteByte(uint8(e.t)) + switch e.t { + case entryCached: + utils.WriteUint64(res, e.h) + case entryCommon: + utils.WriteUint64(res, e.h) + utils.WriteUint32(res, e.i) + case entryCompressed: + totalUncompressedLen += 4 + len(chain[i]) + } + } + res.WriteByte(0) // end of list + + if totalUncompressedLen > 0 { + gz, err := zlib.NewWriterLevelDict(res, flate.BestCompression, buildZlibDictForEntries(entries, chain)) + if err != nil { + return nil, fmt.Errorf("cert compression failed: %s", err.Error()) + } + + utils.WriteUint32(res, uint32(totalUncompressedLen)) + + for i, e := range entries { + if e.t != entryCompressed { + continue + } + lenCert := len(chain[i]) + gz.Write([]byte{ + byte(lenCert & 0xff), + byte((lenCert >> 8) & 0xff), + byte((lenCert >> 16) & 0xff), + byte((lenCert >> 24) & 0xff), + }) + gz.Write(chain[i]) + } + + gz.Close() + } + + return res.Bytes(), nil +} + +func buildEntries(chain [][]byte, chainHashes, cachedHashes, setHashes []uint64) []entry { + res := make([]entry, len(chain)) +chainLoop: + for i := range chain { + // Check if hash is in cachedHashes + for j := range cachedHashes { + if chainHashes[i] == cachedHashes[j] { + res[i] = entry{t: entryCached, h: chainHashes[i]} + continue chainLoop + } + } + + // Go through common sets and check if it's in there + for _, setHash := range setHashes { + set, ok := certSets[setHash] + if !ok { + // We don't have this set + continue + } + // We have this set, check if chain[i] is in the set + pos := set.findCertInSet(chain[i]) + if pos >= 0 { + // Found + res[i] = entry{t: entryCommon, h: setHash, i: uint32(pos)} + continue chainLoop + } + } + + res[i] = entry{t: entryCompressed} + } + return res +} + +func buildZlibDictForEntries(entries []entry, chain [][]byte) []byte { + var dict bytes.Buffer + + // First the cached and common in reverse order + for i := len(entries) - 1; i >= 0; i-- { + if entries[i].t == entryCompressed { + continue + } + dict.Write(chain[i]) + } + + dict.Write(certDictZlib) + return dict.Bytes() +} + +func splitHashes(hashes []byte) ([]uint64, error) { + if len(hashes)%8 != 0 { + return nil, errors.New("expected a multiple of 8 bytes for CCS / CCRT hashes") + } + n := len(hashes) / 8 + res := make([]uint64, n) + for i := 0; i < n; i++ { + res[i] = binary.LittleEndian.Uint64(hashes[i*8 : (i+1)*8]) + } + return res, nil +} + +func hashCert(cert []byte) uint64 { + h := fnv.New64() + h.Write(cert) + return h.Sum64() +} diff --git a/vendor/github.com/lucas-clemente/quic-go/crypto/cert_dict.go b/vendor/github.com/lucas-clemente/quic-go/crypto/cert_dict.go new file mode 100644 index 0000000..300ec71 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/crypto/cert_dict.go @@ -0,0 +1,128 @@ +package crypto + +var certDictZlib = []byte{ + 0x04, 0x02, 0x30, 0x00, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, + 0x16, 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, + 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x30, + 0x5f, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x42, 0x04, 0x01, + 0x06, 0x06, 0x0b, 0x60, 0x86, 0x48, 0x01, 0x86, 0xfd, 0x6d, 0x01, 0x07, + 0x17, 0x01, 0x30, 0x33, 0x20, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, + 0x64, 0x20, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x53, 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x31, 0x34, + 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, + 0x32, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x30, 0x2d, 0x61, 0x69, 0x61, 0x2e, + 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x45, 0x2d, 0x63, 0x72, 0x6c, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, + 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x2e, 0x63, 0x65, + 0x72, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x4a, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x2f, 0x63, 0x70, 0x73, 0x20, 0x28, 0x63, 0x29, 0x30, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x1d, 0x13, 0x04, 0x02, 0x30, 0x00, 0x30, 0x1d, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x7b, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x1d, 0x0e, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xd2, + 0x6f, 0x64, 0x6f, 0x63, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, + 0x04, 0x14, 0xb4, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, + 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x30, 0x0b, 0x06, 0x03, + 0x55, 0x1d, 0x0f, 0x04, 0x04, 0x03, 0x02, 0x01, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, + 0x81, 0xca, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, + 0x13, 0x07, 0x41, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, + 0x11, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, + 0x74, 0x73, 0x64, 0x61, 0x6c, 0x65, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, + 0x55, 0x04, 0x0a, 0x13, 0x11, 0x47, 0x6f, 0x44, 0x61, 0x64, 0x64, 0x79, + 0x2e, 0x63, 0x6f, 0x6d, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x33, + 0x30, 0x31, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2a, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x73, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x6f, 0x72, 0x79, 0x31, 0x30, 0x30, 0x2e, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x27, 0x47, 0x6f, 0x20, 0x44, 0x61, 0x64, 0x64, 0x79, 0x20, 0x53, + 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, + 0x04, 0x05, 0x13, 0x08, 0x30, 0x37, 0x39, 0x36, 0x39, 0x32, 0x38, 0x37, + 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x31, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x05, 0xa0, 0x30, 0x0c, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, + 0x30, 0x1d, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, + 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0x00, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x1d, 0x25, 0x04, 0x16, 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x03, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x03, 0x02, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, + 0x04, 0x04, 0x03, 0x02, 0x05, 0xa0, 0x30, 0x33, 0x06, 0x03, 0x55, 0x1d, + 0x1f, 0x04, 0x2c, 0x30, 0x2a, 0x30, 0x28, 0xa0, 0x26, 0xa0, 0x24, 0x86, + 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, + 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x67, 0x64, 0x73, 0x31, 0x2d, 0x32, 0x30, 0x2a, 0x30, 0x28, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, + 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, + 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, + 0x70, 0x73, 0x30, 0x34, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, + 0x0d, 0x31, 0x33, 0x30, 0x35, 0x30, 0x39, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x2d, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x73, 0x30, 0x39, 0x30, 0x37, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x02, 0x30, 0x44, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, + 0x3d, 0x30, 0x3b, 0x30, 0x39, 0x06, 0x0b, 0x60, 0x86, 0x48, 0x01, 0x86, + 0xf8, 0x45, 0x01, 0x07, 0x17, 0x06, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, + 0x55, 0x04, 0x06, 0x13, 0x02, 0x47, 0x42, 0x31, 0x1b, 0x53, 0x31, 0x17, + 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65, 0x72, + 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, + 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, 0x56, 0x65, + 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, + 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x3b, 0x30, 0x39, + 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x32, 0x54, 0x65, 0x72, 0x6d, 0x73, + 0x20, 0x6f, 0x66, 0x20, 0x75, 0x73, 0x65, 0x20, 0x61, 0x74, 0x20, 0x68, + 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, + 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x72, 0x70, 0x61, 0x20, 0x28, 0x63, 0x29, 0x30, 0x31, 0x10, 0x30, 0x0e, + 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x53, 0x31, 0x13, 0x30, 0x11, + 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0a, 0x47, 0x31, 0x13, 0x30, 0x11, + 0x06, 0x0b, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x3c, 0x02, 0x01, + 0x03, 0x13, 0x02, 0x55, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x14, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, 0x0f, 0x13, 0x14, 0x50, + 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x4f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x12, 0x31, 0x21, 0x30, + 0x1f, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x18, 0x44, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x20, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x31, 0x14, 0x31, 0x31, + 0x30, 0x2f, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x28, 0x53, 0x65, 0x65, + 0x20, 0x77, 0x77, 0x77, 0x2e, 0x72, 0x3a, 0x2f, 0x2f, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x65, 0x2e, 0x67, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, + 0x69, 0x67, 0x6e, 0x31, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x41, + 0x2e, 0x63, 0x72, 0x6c, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, + 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x45, 0x63, 0x72, + 0x6c, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x73, 0x64, 0x31, 0x1a, + 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x45, 0x56, 0x49, 0x6e, 0x74, 0x6c, 0x2d, 0x63, 0x63, 0x72, + 0x74, 0x2e, 0x67, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x69, 0x63, 0x65, 0x72, + 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x31, 0x6f, 0x63, 0x73, 0x70, 0x2e, + 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, + 0x30, 0x39, 0x72, 0x61, 0x70, 0x69, 0x64, 0x73, 0x73, 0x6c, 0x2e, 0x63, + 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, + 0x79, 0x2f, 0x30, 0x81, 0x80, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x01, 0x01, 0x04, 0x74, 0x30, 0x72, 0x30, 0x24, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x6f, 0x64, + 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x30, 0x4a, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x3e, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, + 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x67, 0x64, 0x5f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x72, + 0x74, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, + 0x80, 0x14, 0xfd, 0xac, 0x61, 0x32, 0x93, 0x6c, 0x45, 0xd6, 0xe2, 0xee, + 0x85, 0x5f, 0x9a, 0xba, 0xe7, 0x76, 0x99, 0x68, 0xcc, 0xe7, 0x30, 0x27, + 0x86, 0x29, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x86, 0x30, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x73, +} diff --git a/vendor/github.com/lucas-clemente/quic-go/crypto/cert_sets.go b/vendor/github.com/lucas-clemente/quic-go/crypto/cert_sets.go new file mode 100644 index 0000000..1552668 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/crypto/cert_sets.go @@ -0,0 +1,24 @@ +package crypto + +import ( + "bytes" + + "github.com/lucas-clemente/quic-go-certificates" +) + +type certSet [][]byte + +var certSets = map[uint64]certSet{ + certsets.CertSet2Hash: certsets.CertSet2, + certsets.CertSet3Hash: certsets.CertSet3, +} + +// findCertInSet searches for the cert in the set. Negative return value means not found. +func (s *certSet) findCertInSet(cert []byte) int { + for i, c := range *s { + if bytes.Equal(c, cert) { + return i + } + } + return -1 +} diff --git a/vendor/github.com/lucas-clemente/quic-go/crypto/chacha20poly1305_aead.go b/vendor/github.com/lucas-clemente/quic-go/crypto/chacha20poly1305_aead.go new file mode 100644 index 0000000..5c58c4e --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/crypto/chacha20poly1305_aead.go @@ -0,0 +1,53 @@ +// +build ignore + +package crypto + +import ( + "crypto/cipher" + "errors" + + "github.com/aead/chacha20" + + "github.com/lucas-clemente/quic-go/protocol" +) + +type aeadChacha20Poly1305 struct { + otherIV []byte + myIV []byte + encrypter cipher.AEAD + decrypter cipher.AEAD +} + +// NewAEADChacha20Poly1305 creates a AEAD using chacha20poly1305 +func NewAEADChacha20Poly1305(otherKey []byte, myKey []byte, otherIV []byte, myIV []byte) (AEAD, error) { + if len(myKey) != 32 || len(otherKey) != 32 || len(myIV) != 4 || len(otherIV) != 4 { + return nil, errors.New("chacha20poly1305: expected 32-byte keys and 4-byte IVs") + } + // copy because ChaCha20Poly1305 expects array pointers + var MyKey, OtherKey [32]byte + copy(MyKey[:], myKey) + copy(OtherKey[:], otherKey) + + encrypter, err := chacha20.NewChaCha20Poly1305WithTagSize(&MyKey, 12) + if err != nil { + return nil, err + } + decrypter, err := chacha20.NewChaCha20Poly1305WithTagSize(&OtherKey, 12) + if err != nil { + return nil, err + } + return &aeadChacha20Poly1305{ + otherIV: otherIV, + myIV: myIV, + encrypter: encrypter, + decrypter: decrypter, + }, nil +} + +func (aead *aeadChacha20Poly1305) Open(dst, src []byte, packetNumber protocol.PacketNumber, associatedData []byte) ([]byte, error) { + return aead.decrypter.Open(dst, makeNonce(aead.otherIV, packetNumber), src, associatedData) +} + +func (aead *aeadChacha20Poly1305) Seal(dst, src []byte, packetNumber protocol.PacketNumber, associatedData []byte) []byte { + return aead.encrypter.Seal(dst, makeNonce(aead.myIV, packetNumber), src, associatedData) +} diff --git a/vendor/github.com/lucas-clemente/quic-go/crypto/curve_25519.go b/vendor/github.com/lucas-clemente/quic-go/crypto/curve_25519.go new file mode 100644 index 0000000..a570d6b --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/crypto/curve_25519.go @@ -0,0 +1,45 @@ +package crypto + +import ( + "crypto/rand" + "errors" + + "golang.org/x/crypto/curve25519" +) + +// KeyExchange manages the exchange of keys +type curve25519KEX struct { + secret [32]byte + public [32]byte +} + +var _ KeyExchange = &curve25519KEX{} + +// NewCurve25519KEX creates a new KeyExchange using Curve25519, see https://cr.yp.to/ecdh.html +func NewCurve25519KEX() (KeyExchange, error) { + c := &curve25519KEX{} + if _, err := rand.Read(c.secret[:]); err != nil { + return nil, errors.New("Curve25519: could not create private key") + } + // See https://cr.yp.to/ecdh.html + c.secret[0] &= 248 + c.secret[31] &= 127 + c.secret[31] |= 64 + curve25519.ScalarBaseMult(&c.public, &c.secret) + return c, nil +} + +func (c *curve25519KEX) PublicKey() []byte { + return c.public[:] +} + +func (c *curve25519KEX) CalculateSharedKey(otherPublic []byte) ([]byte, error) { + if len(otherPublic) != 32 { + return nil, errors.New("Curve25519: expected public key of 32 byte") + } + var res [32]byte + var otherPublicArray [32]byte + copy(otherPublicArray[:], otherPublic) + curve25519.ScalarMult(&res, &c.secret, &otherPublicArray) + return res[:], nil +} diff --git a/vendor/github.com/lucas-clemente/quic-go/crypto/key_derivation.go b/vendor/github.com/lucas-clemente/quic-go/crypto/key_derivation.go new file mode 100644 index 0000000..60648d8 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/crypto/key_derivation.go @@ -0,0 +1,79 @@ +package crypto + +import ( + "bytes" + "crypto/sha256" + "io" + + "github.com/lucas-clemente/quic-go/protocol" + "github.com/lucas-clemente/quic-go/utils" + + "golang.org/x/crypto/hkdf" +) + +// DeriveKeysChacha20 derives the client and server keys and creates a matching chacha20poly1305 AEAD instance +// func DeriveKeysChacha20(version protocol.VersionNumber, forwardSecure bool, sharedSecret, nonces []byte, connID protocol.ConnectionID, chlo []byte, scfg []byte, cert []byte, divNonce []byte) (AEAD, error) { +// otherKey, myKey, otherIV, myIV, err := deriveKeys(version, forwardSecure, sharedSecret, nonces, connID, chlo, scfg, cert, divNonce, 32) +// if err != nil { +// return nil, err +// } +// return NewAEADChacha20Poly1305(otherKey, myKey, otherIV, myIV) +// } + +// DeriveKeysAESGCM derives the client and server keys and creates a matching AES-GCM AEAD instance +func DeriveKeysAESGCM(forwardSecure bool, sharedSecret, nonces []byte, connID protocol.ConnectionID, chlo []byte, scfg []byte, cert []byte, divNonce []byte) (AEAD, error) { + otherKey, myKey, otherIV, myIV, err := deriveKeys(forwardSecure, sharedSecret, nonces, connID, chlo, scfg, cert, divNonce, 16) + if err != nil { + return nil, err + } + return NewAEADAESGCM(otherKey, myKey, otherIV, myIV) +} + +func deriveKeys(forwardSecure bool, sharedSecret, nonces []byte, connID protocol.ConnectionID, chlo, scfg, cert, divNonce []byte, keyLen int) ([]byte, []byte, []byte, []byte, error) { + var info bytes.Buffer + if forwardSecure { + info.Write([]byte("QUIC forward secure key expansion\x00")) + } else { + info.Write([]byte("QUIC key expansion\x00")) + } + utils.WriteUint64(&info, uint64(connID)) + info.Write(chlo) + info.Write(scfg) + info.Write(cert) + + r := hkdf.New(sha256.New, sharedSecret, nonces, info.Bytes()) + + s := make([]byte, 2*keyLen+2*4) + if _, err := io.ReadFull(r, s); err != nil { + return nil, nil, nil, nil, err + } + otherKey := s[:keyLen] + myKey := s[keyLen : 2*keyLen] + otherIV := s[2*keyLen : 2*keyLen+4] + myIV := s[2*keyLen+4:] + + if !forwardSecure { + if err := diversify(myKey, myIV, divNonce); err != nil { + return nil, nil, nil, nil, err + } + } + + return otherKey, myKey, otherIV, myIV, nil +} + +func diversify(key, iv, divNonce []byte) error { + secret := make([]byte, len(key)+len(iv)) + copy(secret, key) + copy(secret[len(key):], iv) + + r := hkdf.New(sha256.New, secret, divNonce, []byte("QUIC key diversification")) + + if _, err := io.ReadFull(r, key); err != nil { + return err + } + if _, err := io.ReadFull(r, iv); err != nil { + return err + } + + return nil +} diff --git a/vendor/github.com/lucas-clemente/quic-go/crypto/key_exchange.go b/vendor/github.com/lucas-clemente/quic-go/crypto/key_exchange.go new file mode 100644 index 0000000..d240b9c --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/crypto/key_exchange.go @@ -0,0 +1,7 @@ +package crypto + +// KeyExchange manages the exchange of keys +type KeyExchange interface { + PublicKey() []byte + CalculateSharedKey(otherPublic []byte) ([]byte, error) +} diff --git a/vendor/github.com/lucas-clemente/quic-go/crypto/nonce.go b/vendor/github.com/lucas-clemente/quic-go/crypto/nonce.go new file mode 100644 index 0000000..9b6d416 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/crypto/nonce.go @@ -0,0 +1,14 @@ +package crypto + +import ( + "encoding/binary" + + "github.com/lucas-clemente/quic-go/protocol" +) + +func makeNonce(iv []byte, packetNumber protocol.PacketNumber) []byte { + res := make([]byte, 12) + copy(res[0:4], iv) + binary.LittleEndian.PutUint64(res[4:12], uint64(packetNumber)) + return res +} diff --git a/vendor/github.com/lucas-clemente/quic-go/crypto/null_aead.go b/vendor/github.com/lucas-clemente/quic-go/crypto/null_aead.go new file mode 100644 index 0000000..5aa198c --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/crypto/null_aead.go @@ -0,0 +1,53 @@ +package crypto + +import ( + "encoding/binary" + "errors" + + "github.com/lucas-clemente/fnv128a" + "github.com/lucas-clemente/quic-go/protocol" +) + +// NullAEAD handles not-yet encrypted packets +type NullAEAD struct{} + +var _ AEAD = &NullAEAD{} + +// Open and verify the ciphertext +func (NullAEAD) Open(dst, src []byte, packetNumber protocol.PacketNumber, associatedData []byte) ([]byte, error) { + if len(src) < 12 { + return nil, errors.New("NullAEAD: ciphertext cannot be less than 12 bytes long") + } + + hash := fnv128a.New() + hash.Write(associatedData) + hash.Write(src[12:]) + testHigh, testLow := hash.Sum128() + + low := binary.LittleEndian.Uint64(src) + high := binary.LittleEndian.Uint32(src[8:]) + + if uint32(testHigh&0xffffffff) != high || testLow != low { + return nil, errors.New("NullAEAD: failed to authenticate received data") + } + return src[12:], nil +} + +// Seal writes hash and ciphertext to the buffer +func (NullAEAD) Seal(dst, src []byte, packetNumber protocol.PacketNumber, associatedData []byte) []byte { + if cap(dst) < 12+len(src) { + dst = make([]byte, 12+len(src)) + } else { + dst = dst[:12+len(src)] + } + + hash := fnv128a.New() + hash.Write(associatedData) + hash.Write(src) + high, low := hash.Sum128() + + copy(dst[12:], src) + binary.LittleEndian.PutUint64(dst, low) + binary.LittleEndian.PutUint32(dst[8:], uint32(high)) + return dst +} diff --git a/vendor/github.com/lucas-clemente/quic-go/crypto/proof_source.go b/vendor/github.com/lucas-clemente/quic-go/crypto/proof_source.go new file mode 100644 index 0000000..6af8072 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/crypto/proof_source.go @@ -0,0 +1,92 @@ +package crypto + +import ( + "crypto" + "crypto/rand" + "crypto/rsa" + "crypto/sha256" + "crypto/tls" + "errors" + "strings" +) + +// proofSource stores a key and a certificate for the server proof +type proofSource struct { + config *tls.Config +} + +// NewProofSource loads the key and cert from files +func NewProofSource(tlsConfig *tls.Config) (Signer, error) { + return &proofSource{config: tlsConfig}, nil +} + +// SignServerProof signs CHLO and server config for use in the server proof +func (ps *proofSource) SignServerProof(sni string, chlo []byte, serverConfigData []byte) ([]byte, error) { + cert, err := ps.getCertForSNI(sni) + if err != nil { + return nil, err + } + + hash := sha256.New() + hash.Write([]byte("QUIC CHLO and server config signature\x00")) + chloHash := sha256.Sum256(chlo) + hash.Write([]byte{32, 0, 0, 0}) + hash.Write(chloHash[:]) + hash.Write(serverConfigData) + + key, ok := cert.PrivateKey.(crypto.Signer) + if !ok { + return nil, errors.New("expected PrivateKey to implement crypto.Signer") + } + + opts := crypto.SignerOpts(crypto.SHA256) + + if _, ok = key.(*rsa.PrivateKey); ok { + opts = &rsa.PSSOptions{SaltLength: 32, Hash: crypto.SHA256} + } + + return key.Sign(rand.Reader, hash.Sum(nil), opts) +} + +// GetCertsCompressed gets the certificate in the format described by the QUIC crypto doc +func (ps *proofSource) GetCertsCompressed(sni string, pCommonSetHashes, pCachedHashes []byte) ([]byte, error) { + cert, err := ps.getCertForSNI(sni) + if err != nil { + return nil, err + } + return getCompressedCert(cert.Certificate, pCommonSetHashes, pCachedHashes) +} + +// GetLeafCert gets the leaf certificate +func (ps *proofSource) GetLeafCert(sni string) ([]byte, error) { + cert, err := ps.getCertForSNI(sni) + if err != nil { + return nil, err + } + return cert.Certificate[0], nil +} + +func (ps *proofSource) getCertForSNI(sni string) (*tls.Certificate, error) { + if ps.config.GetCertificate != nil { + cert, err := ps.config.GetCertificate(&tls.ClientHelloInfo{ServerName: sni}) + if err != nil { + return nil, err + } + if cert != nil { + return cert, nil + } + } + if len(ps.config.NameToCertificate) != 0 { + if cert, ok := ps.config.NameToCertificate[sni]; ok { + return cert, nil + } + wildcardSNI := "*" + strings.TrimLeftFunc(sni, func(r rune) bool { return r != '.' }) + if cert, ok := ps.config.NameToCertificate[wildcardSNI]; ok { + return cert, nil + } + } + if len(ps.config.Certificates) != 0 { + return &ps.config.Certificates[0], nil + } + return nil, errors.New("no matching certificate found") +} diff --git a/vendor/github.com/lucas-clemente/quic-go/crypto/signer.go b/vendor/github.com/lucas-clemente/quic-go/crypto/signer.go new file mode 100644 index 0000000..0d9ba4e --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/crypto/signer.go @@ -0,0 +1,8 @@ +package crypto + +// A Signer holds a certificate and a private key +type Signer interface { + SignServerProof(sni string, chlo []byte, serverConfigData []byte) ([]byte, error) + GetCertsCompressed(sni string, commonSetHashes, cachedHashes []byte) ([]byte, error) + GetLeafCert(sni string) ([]byte, error) +} diff --git a/vendor/github.com/lucas-clemente/quic-go/crypto/source_address_token.go b/vendor/github.com/lucas-clemente/quic-go/crypto/source_address_token.go new file mode 100644 index 0000000..6afdacd --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/crypto/source_address_token.go @@ -0,0 +1,128 @@ +package crypto + +import ( + "crypto/aes" + "crypto/cipher" + "crypto/rand" + "crypto/sha256" + "crypto/subtle" + "encoding/binary" + "errors" + "fmt" + "io" + "net" + "time" + + "github.com/lucas-clemente/quic-go/protocol" + + "golang.org/x/crypto/hkdf" +) + +// StkSource is used to create and verify source address tokens +type StkSource interface { + // NewToken creates a new token for a given IP address + NewToken(ip net.IP) ([]byte, error) + // VerifyToken verifies if a token matches a given IP address and is not outdated + VerifyToken(ip net.IP, data []byte) error +} + +type sourceAddressToken struct { + ip net.IP + // unix timestamp in seconds + timestamp uint64 +} + +func (t *sourceAddressToken) serialize() []byte { + res := make([]byte, 8+len(t.ip)) + binary.LittleEndian.PutUint64(res, t.timestamp) + copy(res[8:], t.ip) + return res +} + +func parseToken(data []byte) (*sourceAddressToken, error) { + if len(data) != 8+4 && len(data) != 8+16 { + return nil, fmt.Errorf("invalid STK length: %d", len(data)) + } + return &sourceAddressToken{ + ip: data[8:], + timestamp: binary.LittleEndian.Uint64(data), + }, nil +} + +type stkSource struct { + aead cipher.AEAD +} + +const stkKeySize = 16 + +// Chrome currently sets this to 12, but discusses changing it to 16. We start +// at 16 :) +const stkNonceSize = 16 + +// NewStkSource creates a source for source address tokens +func NewStkSource(secret []byte) (StkSource, error) { + key, err := deriveKey(secret) + if err != nil { + return nil, err + } + c, err := aes.NewCipher(key) + if err != nil { + return nil, err + } + aead, err := cipher.NewGCMWithNonceSize(c, stkNonceSize) + if err != nil { + return nil, err + } + return &stkSource{aead: aead}, nil +} + +func (s *stkSource) NewToken(ip net.IP) ([]byte, error) { + return encryptToken(s.aead, &sourceAddressToken{ + ip: ip, + timestamp: uint64(time.Now().Unix()), + }) +} + +func (s *stkSource) VerifyToken(ip net.IP, data []byte) error { + if len(data) < stkNonceSize { + return errors.New("STK too short") + } + nonce := data[:stkNonceSize] + + res, err := s.aead.Open(nil, nonce, data[stkNonceSize:], nil) + if err != nil { + return err + } + + token, err := parseToken(res) + if err != nil { + return err + } + + if subtle.ConstantTimeCompare(token.ip, ip) != 1 { + return errors.New("invalid ip in STK") + } + + if time.Now().Unix() > int64(token.timestamp)+protocol.STKExpiryTimeSec { + return errors.New("STK expired") + } + + return nil +} + +func deriveKey(secret []byte) ([]byte, error) { + r := hkdf.New(sha256.New, secret, nil, []byte("QUIC source address token key")) + key := make([]byte, stkKeySize) + if _, err := io.ReadFull(r, key); err != nil { + return nil, err + } + return key, nil +} + +func encryptToken(aead cipher.AEAD, token *sourceAddressToken) ([]byte, error) { + nonce := make([]byte, stkNonceSize) + if _, err := rand.Read(nonce); err != nil { + return nil, err + } + return aead.Seal(nonce, nonce, token.serialize(), nil), nil +} diff --git a/vendor/github.com/lucas-clemente/quic-go/flowcontrol/flow_control_manager.go b/vendor/github.com/lucas-clemente/quic-go/flowcontrol/flow_control_manager.go new file mode 100644 index 0000000..0ab6363 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/flowcontrol/flow_control_manager.go @@ -0,0 +1,188 @@ +package flowcontrol + +import ( + "errors" + "sync" + + "github.com/lucas-clemente/quic-go/handshake" + "github.com/lucas-clemente/quic-go/protocol" + "github.com/lucas-clemente/quic-go/utils" +) + +type flowControlManager struct { + connectionParametersManager *handshake.ConnectionParametersManager + streamFlowController map[protocol.StreamID]*flowController + contributesToConnectionFlowControl map[protocol.StreamID]bool + mutex sync.RWMutex +} + +var ( + // ErrStreamFlowControlViolation is a stream flow control violation + ErrStreamFlowControlViolation = errors.New("Stream level flow control violation") + // ErrConnectionFlowControlViolation is a connection level flow control violation + ErrConnectionFlowControlViolation = errors.New("Connection level flow control violation") +) + +var errMapAccess = errors.New("Error accessing the flowController map.") + +// NewFlowControlManager creates a new flow control manager +func NewFlowControlManager(connectionParametersManager *handshake.ConnectionParametersManager) FlowControlManager { + fcm := flowControlManager{ + connectionParametersManager: connectionParametersManager, + streamFlowController: make(map[protocol.StreamID]*flowController), + contributesToConnectionFlowControl: make(map[protocol.StreamID]bool), + } + // initialize connection level flow controller + fcm.streamFlowController[0] = newFlowController(0, connectionParametersManager) + fcm.contributesToConnectionFlowControl[0] = false + return &fcm +} + +// NewStream creates new flow controllers for a stream +func (f *flowControlManager) NewStream(streamID protocol.StreamID, contributesToConnectionFlow bool) { + f.mutex.Lock() + defer f.mutex.Unlock() + + if _, ok := f.streamFlowController[streamID]; ok { + return + } + + f.streamFlowController[streamID] = newFlowController(streamID, f.connectionParametersManager) + f.contributesToConnectionFlowControl[streamID] = contributesToConnectionFlow +} + +// RemoveStream removes a closed stream from flow control +func (f *flowControlManager) RemoveStream(streamID protocol.StreamID) { + f.mutex.Lock() + delete(f.streamFlowController, streamID) + delete(f.contributesToConnectionFlowControl, streamID) + f.mutex.Unlock() +} + +// UpdateHighestReceived updates the highest received byte offset for a stream +// it adds the number of additional bytes to connection level flow control +// streamID must not be 0 here +func (f *flowControlManager) UpdateHighestReceived(streamID protocol.StreamID, byteOffset protocol.ByteCount) error { + f.mutex.Lock() + defer f.mutex.Unlock() + + streamFlowController, err := f.getFlowController(streamID) + if err != nil { + return err + } + increment := streamFlowController.UpdateHighestReceived(byteOffset) + + if streamFlowController.CheckFlowControlViolation() { + return ErrStreamFlowControlViolation + } + + if f.contributesToConnectionFlowControl[streamID] { + connectionFlowController := f.streamFlowController[0] + connectionFlowController.IncrementHighestReceived(increment) + if connectionFlowController.CheckFlowControlViolation() { + return ErrConnectionFlowControlViolation + } + } + + return nil +} + +// streamID must not be 0 here +func (f *flowControlManager) AddBytesRead(streamID protocol.StreamID, n protocol.ByteCount) error { + f.mutex.Lock() + defer f.mutex.Unlock() + + streamFlowController, err := f.getFlowController(streamID) + if err != nil { + return err + } + + streamFlowController.AddBytesRead(n) + + if f.contributesToConnectionFlowControl[streamID] { + f.streamFlowController[0].AddBytesRead(n) + } + + return nil +} + +func (f *flowControlManager) GetWindowUpdates() (res []WindowUpdate) { + f.mutex.Lock() + defer f.mutex.Unlock() + for id, fc := range f.streamFlowController { + if necessary, offset := fc.MaybeTriggerWindowUpdate(); necessary { + res = append(res, WindowUpdate{StreamID: id, Offset: offset}) + } + } + return res +} + +// streamID must not be 0 here +func (f *flowControlManager) AddBytesSent(streamID protocol.StreamID, n protocol.ByteCount) error { + // Only lock the part reading from the map, since send-windows are only accessed from the session goroutine. + f.mutex.Lock() + streamFlowController, err := f.getFlowController(streamID) + f.mutex.Unlock() + if err != nil { + return err + } + + streamFlowController.AddBytesSent(n) + + if f.contributesToConnectionFlowControl[streamID] { + f.streamFlowController[0].AddBytesSent(n) + } + + return nil +} + +// must not be called with StreamID 0 +func (f *flowControlManager) SendWindowSize(streamID protocol.StreamID) (protocol.ByteCount, error) { + // Only lock the part reading from the map, since send-windows are only accessed from the session goroutine. + f.mutex.RLock() + streamFlowController, err := f.getFlowController(streamID) + f.mutex.RUnlock() + if err != nil { + return 0, err + } + res := streamFlowController.SendWindowSize() + + contributes, ok := f.contributesToConnectionFlowControl[streamID] + if !ok { + return 0, errMapAccess + } + if contributes { + res = utils.MinByteCount(res, f.streamFlowController[0].SendWindowSize()) + } + + return res, nil +} + +func (f *flowControlManager) RemainingConnectionWindowSize() protocol.ByteCount { + // Only lock the part reading from the map, since send-windows are only accessed from the session goroutine. + f.mutex.RLock() + res := f.streamFlowController[0].SendWindowSize() + f.mutex.RUnlock() + return res +} + +// streamID may be 0 here +func (f *flowControlManager) UpdateWindow(streamID protocol.StreamID, offset protocol.ByteCount) (bool, error) { + // Only lock the part reading from the map, since send-windows are only accessed from the session goroutine. + f.mutex.Lock() + streamFlowController, err := f.getFlowController(streamID) + f.mutex.Unlock() + if err != nil { + return false, err + } + + return streamFlowController.UpdateSendWindow(offset), nil +} + +func (f *flowControlManager) getFlowController(streamID protocol.StreamID) (*flowController, error) { + streamFlowController, ok := f.streamFlowController[streamID] + if !ok { + return nil, errMapAccess + } + return streamFlowController, nil +} diff --git a/vendor/github.com/lucas-clemente/quic-go/flowcontrol/flow_controller.go b/vendor/github.com/lucas-clemente/quic-go/flowcontrol/flow_controller.go new file mode 100644 index 0000000..21020ad --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/flowcontrol/flow_controller.go @@ -0,0 +1,115 @@ +package flowcontrol + +import ( + "github.com/lucas-clemente/quic-go/handshake" + "github.com/lucas-clemente/quic-go/protocol" +) + +type flowController struct { + streamID protocol.StreamID + + connectionParametersManager *handshake.ConnectionParametersManager + + bytesSent protocol.ByteCount + sendFlowControlWindow protocol.ByteCount + + bytesRead protocol.ByteCount + highestReceived protocol.ByteCount + receiveFlowControlWindow protocol.ByteCount + receiveFlowControlWindowIncrement protocol.ByteCount +} + +// newFlowController gets a new flow controller +func newFlowController(streamID protocol.StreamID, connectionParametersManager *handshake.ConnectionParametersManager) *flowController { + fc := flowController{ + streamID: streamID, + connectionParametersManager: connectionParametersManager, + } + + if streamID == 0 { + fc.receiveFlowControlWindow = connectionParametersManager.GetReceiveConnectionFlowControlWindow() + fc.receiveFlowControlWindowIncrement = fc.receiveFlowControlWindow + } else { + fc.receiveFlowControlWindow = connectionParametersManager.GetReceiveStreamFlowControlWindow() + fc.receiveFlowControlWindowIncrement = fc.receiveFlowControlWindow + } + + return &fc +} + +func (c *flowController) getSendFlowControlWindow() protocol.ByteCount { + if c.sendFlowControlWindow == 0 { + if c.streamID == 0 { + return c.connectionParametersManager.GetSendConnectionFlowControlWindow() + } + return c.connectionParametersManager.GetSendStreamFlowControlWindow() + } + return c.sendFlowControlWindow +} + +func (c *flowController) AddBytesSent(n protocol.ByteCount) { + c.bytesSent += n +} + +// UpdateSendWindow should be called after receiving a WindowUpdateFrame +// it returns true if the window was actually updated +func (c *flowController) UpdateSendWindow(newOffset protocol.ByteCount) bool { + if newOffset > c.sendFlowControlWindow { + c.sendFlowControlWindow = newOffset + return true + } + return false +} + +func (c *flowController) SendWindowSize() protocol.ByteCount { + sendFlowControlWindow := c.getSendFlowControlWindow() + + if c.bytesSent > sendFlowControlWindow { // should never happen, but make sure we don't do an underflow here + return 0 + } + return sendFlowControlWindow - c.bytesSent +} + +func (c *flowController) SendWindowOffset() protocol.ByteCount { + return c.getSendFlowControlWindow() +} + +// UpdateHighestReceived updates the highestReceived value, if the byteOffset is higher +// Should **only** be used for the stream-level FlowController +func (c *flowController) UpdateHighestReceived(byteOffset protocol.ByteCount) protocol.ByteCount { + if byteOffset > c.highestReceived { + increment := byteOffset - c.highestReceived + c.highestReceived = byteOffset + return increment + } + return 0 +} + +// IncrementHighestReceived adds an increment to the highestReceived value +// Should **only** be used for the connection-level FlowController +func (c *flowController) IncrementHighestReceived(increment protocol.ByteCount) { + c.highestReceived += increment +} + +func (c *flowController) AddBytesRead(n protocol.ByteCount) { + c.bytesRead += n +} + +// MaybeTriggerWindowUpdate determines if it is necessary to send a WindowUpdate +// if so, it returns true and the offset of the window +func (c *flowController) MaybeTriggerWindowUpdate() (bool, protocol.ByteCount) { + diff := c.receiveFlowControlWindow - c.bytesRead + // Chromium implements the same threshold + if diff < (c.receiveFlowControlWindowIncrement / 2) { + c.receiveFlowControlWindow = c.bytesRead + c.receiveFlowControlWindowIncrement + return true, c.receiveFlowControlWindow + } + return false, 0 +} + +func (c *flowController) CheckFlowControlViolation() bool { + if c.highestReceived > c.receiveFlowControlWindow { + return true + } + return false +} diff --git a/vendor/github.com/lucas-clemente/quic-go/flowcontrol/interface.go b/vendor/github.com/lucas-clemente/quic-go/flowcontrol/interface.go new file mode 100644 index 0000000..3f4b089 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/flowcontrol/interface.go @@ -0,0 +1,24 @@ +package flowcontrol + +import "github.com/lucas-clemente/quic-go/protocol" + +// WindowUpdate provides the data for WindowUpdateFrames. +type WindowUpdate struct { + StreamID protocol.StreamID + Offset protocol.ByteCount +} + +// A FlowControlManager manages the flow control +type FlowControlManager interface { + NewStream(streamID protocol.StreamID, contributesToConnectionFlow bool) + RemoveStream(streamID protocol.StreamID) + // methods needed for receiving data + UpdateHighestReceived(streamID protocol.StreamID, byteOffset protocol.ByteCount) error + AddBytesRead(streamID protocol.StreamID, n protocol.ByteCount) error + GetWindowUpdates() []WindowUpdate + // methods needed for sending data + AddBytesSent(streamID protocol.StreamID, n protocol.ByteCount) error + SendWindowSize(streamID protocol.StreamID) (protocol.ByteCount, error) + RemainingConnectionWindowSize() protocol.ByteCount + UpdateWindow(streamID protocol.StreamID, offset protocol.ByteCount) (bool, error) +} diff --git a/vendor/github.com/lucas-clemente/quic-go/frames/ack_frame.go b/vendor/github.com/lucas-clemente/quic-go/frames/ack_frame.go new file mode 100644 index 0000000..b68b448 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/frames/ack_frame.go @@ -0,0 +1,466 @@ +package frames + +import ( + "bytes" + "errors" + "time" + + "github.com/lucas-clemente/quic-go/protocol" + "github.com/lucas-clemente/quic-go/utils" +) + +var ( + // ErrInvalidAckRanges occurs when a client sends inconsistent ACK ranges + ErrInvalidAckRanges = errors.New("AckFrame: ACK frame contains invalid ACK ranges") + // ErrInvalidFirstAckRange occurs when the first ACK range contains no packets + ErrInvalidFirstAckRange = errors.New("AckFrame: ACK frame has invalid first ACK range") +) + +var ( + errInconsistentAckLargestAcked = errors.New("internal inconsistency: LargestAcked does not match ACK ranges") + errInconsistentAckLowestAcked = errors.New("internal inconsistency: LowestAcked does not match ACK ranges") +) + +// An AckFrame is an ACK frame in QUIC +type AckFrame struct { + LargestAcked protocol.PacketNumber + LowestAcked protocol.PacketNumber + AckRanges []AckRange // has to be ordered. The ACK range with the highest FirstPacketNumber goes first, the ACK range with the lowest FirstPacketNumber goes last + + DelayTime time.Duration + PacketReceivedTime time.Time // only for received packets. Will not be modified for received ACKs frames +} + +// ParseAckFrame reads an ACK frame +func ParseAckFrame(r *bytes.Reader, version protocol.VersionNumber) (*AckFrame, error) { + frame := &AckFrame{} + + typeByte, err := r.ReadByte() + if err != nil { + return nil, err + } + + hasMissingRanges := false + if typeByte&0x20 == 0x20 { + hasMissingRanges = true + } + + largestAckedLen := 2 * ((typeByte & 0x0C) >> 2) + if largestAckedLen == 0 { + largestAckedLen = 1 + } + + missingSequenceNumberDeltaLen := 2 * (typeByte & 0x03) + if missingSequenceNumberDeltaLen == 0 { + missingSequenceNumberDeltaLen = 1 + } + + largestAcked, err := utils.ReadUintN(r, largestAckedLen) + if err != nil { + return nil, err + } + frame.LargestAcked = protocol.PacketNumber(largestAcked) + + delay, err := utils.ReadUfloat16(r) + if err != nil { + return nil, err + } + frame.DelayTime = time.Duration(delay) * time.Microsecond + + var numAckBlocks uint8 + if hasMissingRanges { + numAckBlocks, err = r.ReadByte() + if err != nil { + return nil, err + } + } + + if hasMissingRanges && numAckBlocks == 0 { + return nil, ErrInvalidAckRanges + } + + ackBlockLength, err := utils.ReadUintN(r, missingSequenceNumberDeltaLen) + if err != nil { + return nil, err + } + if ackBlockLength < 1 { + return nil, ErrInvalidFirstAckRange + } + + if ackBlockLength > largestAcked { + return nil, ErrInvalidAckRanges + } + + if hasMissingRanges { + ackRange := AckRange{ + FirstPacketNumber: protocol.PacketNumber(largestAcked-ackBlockLength) + 1, + LastPacketNumber: frame.LargestAcked, + } + frame.AckRanges = append(frame.AckRanges, ackRange) + + var inLongBlock bool + var lastRangeComplete bool + for i := uint8(0); i < numAckBlocks; i++ { + var gap uint8 + gap, err = r.ReadByte() + if err != nil { + return nil, err + } + + ackBlockLength, err = utils.ReadUintN(r, missingSequenceNumberDeltaLen) + if err != nil { + return nil, err + } + + length := protocol.PacketNumber(ackBlockLength) + + if inLongBlock { + frame.AckRanges[len(frame.AckRanges)-1].FirstPacketNumber -= protocol.PacketNumber(gap) + length + frame.AckRanges[len(frame.AckRanges)-1].LastPacketNumber -= protocol.PacketNumber(gap) + } else { + lastRangeComplete = false + ackRange := AckRange{ + LastPacketNumber: frame.AckRanges[len(frame.AckRanges)-1].FirstPacketNumber - protocol.PacketNumber(gap) - 1, + } + ackRange.FirstPacketNumber = ackRange.LastPacketNumber - length + 1 + frame.AckRanges = append(frame.AckRanges, ackRange) + } + + if length > 0 { + lastRangeComplete = true + } + + inLongBlock = (ackBlockLength == 0) + } + + // if the last range was not complete, FirstPacketNumber and LastPacketNumber make no sense + // remove the range from frame.AckRanges + if !lastRangeComplete { + frame.AckRanges = frame.AckRanges[:len(frame.AckRanges)-1] + } + + frame.LowestAcked = frame.AckRanges[len(frame.AckRanges)-1].FirstPacketNumber + } else { + frame.LowestAcked = protocol.PacketNumber(largestAcked + 1 - ackBlockLength) + } + + if !frame.validateAckRanges() { + return nil, ErrInvalidAckRanges + } + + var numTimestamp byte + numTimestamp, err = r.ReadByte() + if err != nil { + return nil, err + } + + if numTimestamp > 0 { + // Delta Largest acked + _, err = r.ReadByte() + if err != nil { + return nil, err + } + // First Timestamp + _, err = utils.ReadUint32(r) + if err != nil { + return nil, err + } + + for i := 0; i < int(numTimestamp)-1; i++ { + // Delta Largest acked + _, err = r.ReadByte() + if err != nil { + return nil, err + } + + // Time Since Previous Timestamp + _, err = utils.ReadUint16(r) + if err != nil { + return nil, err + } + } + } + + return frame, nil +} + +// Write writes an ACK frame. +func (f *AckFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error { + largestAckedLen := protocol.GetPacketNumberLength(f.LargestAcked) + + typeByte := uint8(0x40) + + if largestAckedLen != protocol.PacketNumberLen1 { + typeByte ^= (uint8(largestAckedLen / 2)) << 2 + } + + missingSequenceNumberDeltaLen := f.getMissingSequenceNumberDeltaLen() + if missingSequenceNumberDeltaLen != protocol.PacketNumberLen1 { + typeByte ^= (uint8(missingSequenceNumberDeltaLen / 2)) + } + + if f.HasMissingRanges() { + typeByte |= 0x20 + } + + b.WriteByte(typeByte) + + switch largestAckedLen { + case protocol.PacketNumberLen1: + b.WriteByte(uint8(f.LargestAcked)) + case protocol.PacketNumberLen2: + utils.WriteUint16(b, uint16(f.LargestAcked)) + case protocol.PacketNumberLen4: + utils.WriteUint32(b, uint32(f.LargestAcked)) + case protocol.PacketNumberLen6: + utils.WriteUint48(b, uint64(f.LargestAcked)) + } + + f.DelayTime = time.Now().Sub(f.PacketReceivedTime) + utils.WriteUfloat16(b, uint64(f.DelayTime/time.Microsecond)) + + var numRanges uint64 + var numRangesWritten uint64 + if f.HasMissingRanges() { + numRanges = f.numWritableNackRanges() + if numRanges > 0xFF { + panic("AckFrame: Too many ACK ranges") + } + b.WriteByte(uint8(numRanges - 1)) + } + + var firstAckBlockLength protocol.PacketNumber + if !f.HasMissingRanges() { + firstAckBlockLength = f.LargestAcked - f.LowestAcked + 1 + } else { + if f.LargestAcked != f.AckRanges[0].LastPacketNumber { + return errInconsistentAckLargestAcked + } + if f.LowestAcked != f.AckRanges[len(f.AckRanges)-1].FirstPacketNumber { + return errInconsistentAckLowestAcked + } + firstAckBlockLength = f.LargestAcked - f.AckRanges[0].FirstPacketNumber + 1 + numRangesWritten++ + } + + switch missingSequenceNumberDeltaLen { + case protocol.PacketNumberLen1: + b.WriteByte(uint8(firstAckBlockLength)) + case protocol.PacketNumberLen2: + utils.WriteUint16(b, uint16(firstAckBlockLength)) + case protocol.PacketNumberLen4: + utils.WriteUint32(b, uint32(firstAckBlockLength)) + case protocol.PacketNumberLen6: + utils.WriteUint48(b, uint64(firstAckBlockLength)) + } + + for i, ackRange := range f.AckRanges { + if i == 0 { + continue + } + + length := ackRange.LastPacketNumber - ackRange.FirstPacketNumber + 1 + gap := f.AckRanges[i-1].FirstPacketNumber - ackRange.LastPacketNumber - 1 + + num := gap/0xFF + 1 + if gap%0xFF == 0 { + num-- + } + + if num == 1 { + b.WriteByte(uint8(gap)) + switch missingSequenceNumberDeltaLen { + case protocol.PacketNumberLen1: + b.WriteByte(uint8(length)) + case protocol.PacketNumberLen2: + utils.WriteUint16(b, uint16(length)) + case protocol.PacketNumberLen4: + utils.WriteUint32(b, uint32(length)) + case protocol.PacketNumberLen6: + utils.WriteUint48(b, uint64(length)) + } + numRangesWritten++ + } else { + for i := 0; i < int(num); i++ { + var lengthWritten uint64 + var gapWritten uint8 + + if i == int(num)-1 { // last block + lengthWritten = uint64(length) + gapWritten = uint8(1 + ((gap - 1) % 255)) + } else { + lengthWritten = 0 + gapWritten = 0xFF + } + + b.WriteByte(gapWritten) + switch missingSequenceNumberDeltaLen { + case protocol.PacketNumberLen1: + b.WriteByte(uint8(lengthWritten)) + case protocol.PacketNumberLen2: + utils.WriteUint16(b, uint16(lengthWritten)) + case protocol.PacketNumberLen4: + utils.WriteUint32(b, uint32(lengthWritten)) + case protocol.PacketNumberLen6: + utils.WriteUint48(b, lengthWritten) + } + + numRangesWritten++ + } + } + + // this is needed if not all AckRanges can be written to the ACK frame (if there are more than 0xFF) + if numRangesWritten >= numRanges { + break + } + } + + if numRanges != numRangesWritten { + return errors.New("BUG: Inconsistent number of ACK ranges written") + } + + b.WriteByte(0) // no timestamps + + return nil +} + +// MinLength of a written frame +func (f *AckFrame) MinLength(version protocol.VersionNumber) (protocol.ByteCount, error) { + var length protocol.ByteCount + length = 1 + 2 + 1 // 1 TypeByte, 2 ACK delay time, 1 Num Timestamp + length += protocol.ByteCount(protocol.GetPacketNumberLength(f.LargestAcked)) + + missingSequenceNumberDeltaLen := protocol.ByteCount(f.getMissingSequenceNumberDeltaLen()) + + if f.HasMissingRanges() { + length += (1 + missingSequenceNumberDeltaLen) * protocol.ByteCount(f.numWritableNackRanges()) + } else { + length += missingSequenceNumberDeltaLen + } + + length += (1 + 2) * 0 /* TODO: num_timestamps */ + + return length, nil +} + +// HasMissingRanges returns if this frame reports any missing packets +func (f *AckFrame) HasMissingRanges() bool { + if len(f.AckRanges) > 0 { + return true + } + return false +} + +func (f *AckFrame) validateAckRanges() bool { + if len(f.AckRanges) == 0 { + return true + } + + // if there are missing packets, there will always be at least 2 ACK ranges + if len(f.AckRanges) == 1 { + return false + } + + if f.AckRanges[0].LastPacketNumber != f.LargestAcked { + return false + } + + // check the validity of every single ACK range + for _, ackRange := range f.AckRanges { + if ackRange.FirstPacketNumber > ackRange.LastPacketNumber { + return false + } + } + + // check the consistency for ACK with multiple NACK ranges + for i, ackRange := range f.AckRanges { + if i == 0 { + continue + } + lastAckRange := f.AckRanges[i-1] + if lastAckRange.FirstPacketNumber <= ackRange.FirstPacketNumber { + return false + } + if lastAckRange.FirstPacketNumber <= ackRange.LastPacketNumber+1 { + return false + } + } + + return true +} + +// numWritableNackRanges calculates the number of ACK blocks that are about to be written +// this number is different from len(f.AckRanges) for the case of long gaps (> 255 packets) +func (f *AckFrame) numWritableNackRanges() uint64 { + if len(f.AckRanges) == 0 { + return 0 + } + + var numRanges uint64 + for i, ackRange := range f.AckRanges { + if i == 0 { + continue + } + + lastAckRange := f.AckRanges[i-1] + gap := lastAckRange.FirstPacketNumber - ackRange.LastPacketNumber - 1 + rangeLength := 1 + uint64(gap)/0xFF + if uint64(gap)%0xFF == 0 { + rangeLength-- + } + + if numRanges+rangeLength < 0xFF { + numRanges += rangeLength + } else { + break + } + } + + return numRanges + 1 +} + +func (f *AckFrame) getMissingSequenceNumberDeltaLen() protocol.PacketNumberLen { + var maxRangeLength protocol.PacketNumber + + if f.HasMissingRanges() { + for _, ackRange := range f.AckRanges { + rangeLength := ackRange.LastPacketNumber - ackRange.FirstPacketNumber + 1 + if rangeLength > maxRangeLength { + maxRangeLength = rangeLength + } + } + } else { + maxRangeLength = f.LargestAcked - f.LowestAcked + 1 + } + + if maxRangeLength <= 0xFF { + return protocol.PacketNumberLen1 + } + if maxRangeLength <= 0xFFFF { + return protocol.PacketNumberLen2 + } + if maxRangeLength <= 0xFFFFFFFF { + return protocol.PacketNumberLen4 + } + + return protocol.PacketNumberLen6 +} + +// AcksPacket determines if this ACK frame acks a certain packet number +func (f *AckFrame) AcksPacket(p protocol.PacketNumber) bool { + if p < f.LowestAcked || p > f.LargestAcked { // this is just a performance optimization + return false + } + + if f.HasMissingRanges() { + // TODO: this could be implemented as a binary search + for _, ackRange := range f.AckRanges { + if p >= ackRange.FirstPacketNumber && p <= ackRange.LastPacketNumber { + return true + } + } + return false + } + // if packet doesn't have missing ranges + return (p >= f.LowestAcked && p <= f.LargestAcked) +} diff --git a/vendor/github.com/lucas-clemente/quic-go/frames/ack_range.go b/vendor/github.com/lucas-clemente/quic-go/frames/ack_range.go new file mode 100644 index 0000000..ac65d33 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/frames/ack_range.go @@ -0,0 +1,9 @@ +package frames + +import "github.com/lucas-clemente/quic-go/protocol" + +// AckRange is an ACK range +type AckRange struct { + FirstPacketNumber protocol.PacketNumber + LastPacketNumber protocol.PacketNumber +} diff --git a/vendor/github.com/lucas-clemente/quic-go/frames/blocked_frame.go b/vendor/github.com/lucas-clemente/quic-go/frames/blocked_frame.go new file mode 100644 index 0000000..b7e640c --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/frames/blocked_frame.go @@ -0,0 +1,44 @@ +package frames + +import ( + "bytes" + + "github.com/lucas-clemente/quic-go/protocol" + "github.com/lucas-clemente/quic-go/utils" +) + +// A BlockedFrame in QUIC +type BlockedFrame struct { + StreamID protocol.StreamID +} + +//Write writes a BlockedFrame frame +func (f *BlockedFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error { + b.WriteByte(0x05) + utils.WriteUint32(b, uint32(f.StreamID)) + return nil +} + +// MinLength of a written frame +func (f *BlockedFrame) MinLength(version protocol.VersionNumber) (protocol.ByteCount, error) { + return 1 + 4, nil +} + +// ParseBlockedFrame parses a BLOCKED frame +func ParseBlockedFrame(r *bytes.Reader) (*BlockedFrame, error) { + frame := &BlockedFrame{} + + // read the TypeByte + _, err := r.ReadByte() + if err != nil { + return nil, err + } + + sid, err := utils.ReadUint32(r) + if err != nil { + return nil, err + } + frame.StreamID = protocol.StreamID(sid) + + return frame, nil +} diff --git a/vendor/github.com/lucas-clemente/quic-go/frames/connection_close_frame.go b/vendor/github.com/lucas-clemente/quic-go/frames/connection_close_frame.go new file mode 100644 index 0000000..5681414 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/frames/connection_close_frame.go @@ -0,0 +1,73 @@ +package frames + +import ( + "bytes" + "errors" + "io" + "math" + + "github.com/lucas-clemente/quic-go/protocol" + "github.com/lucas-clemente/quic-go/qerr" + "github.com/lucas-clemente/quic-go/utils" +) + +// A ConnectionCloseFrame in QUIC +type ConnectionCloseFrame struct { + ErrorCode qerr.ErrorCode + ReasonPhrase string +} + +// ParseConnectionCloseFrame reads a CONNECTION_CLOSE frame +func ParseConnectionCloseFrame(r *bytes.Reader) (*ConnectionCloseFrame, error) { + frame := &ConnectionCloseFrame{} + + // read the TypeByte + _, err := r.ReadByte() + if err != nil { + return nil, err + } + + errorCode, err := utils.ReadUint32(r) + if err != nil { + return nil, err + } + frame.ErrorCode = qerr.ErrorCode(errorCode) + + reasonPhraseLen, err := utils.ReadUint16(r) + if err != nil { + return nil, err + } + + if reasonPhraseLen > uint16(protocol.MaxPacketSize) { + return nil, qerr.Error(qerr.InvalidConnectionCloseData, "reason phrase too long") + } + + reasonPhrase := make([]byte, reasonPhraseLen) + if _, err := io.ReadFull(r, reasonPhrase); err != nil { + return nil, err + } + frame.ReasonPhrase = string(reasonPhrase) + + return frame, nil +} + +// MinLength of a written frame +func (f *ConnectionCloseFrame) MinLength(version protocol.VersionNumber) (protocol.ByteCount, error) { + return 1 + 4 + 2 + protocol.ByteCount(len(f.ReasonPhrase)), nil +} + +// Write writes an CONNECTION_CLOSE frame. +func (f *ConnectionCloseFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error { + b.WriteByte(0x02) + utils.WriteUint32(b, uint32(f.ErrorCode)) + + if len(f.ReasonPhrase) > math.MaxUint16 { + return errors.New("ConnectionFrame: ReasonPhrase too long") + } + + reasonPhraseLen := uint16(len(f.ReasonPhrase)) + utils.WriteUint16(b, reasonPhraseLen) + b.WriteString(f.ReasonPhrase) + + return nil +} diff --git a/vendor/github.com/lucas-clemente/quic-go/frames/frame.go b/vendor/github.com/lucas-clemente/quic-go/frames/frame.go new file mode 100644 index 0000000..464e669 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/frames/frame.go @@ -0,0 +1,13 @@ +package frames + +import ( + "bytes" + + "github.com/lucas-clemente/quic-go/protocol" +) + +// A Frame in QUIC +type Frame interface { + Write(b *bytes.Buffer, version protocol.VersionNumber) error + MinLength(version protocol.VersionNumber) (protocol.ByteCount, error) +} diff --git a/vendor/github.com/lucas-clemente/quic-go/frames/goaway_frame.go b/vendor/github.com/lucas-clemente/quic-go/frames/goaway_frame.go new file mode 100644 index 0000000..7d452d5 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/frames/goaway_frame.go @@ -0,0 +1,73 @@ +package frames + +import ( + "bytes" + "io" + + "github.com/lucas-clemente/quic-go/protocol" + "github.com/lucas-clemente/quic-go/qerr" + "github.com/lucas-clemente/quic-go/utils" +) + +// A GoawayFrame is a GOAWAY frame +type GoawayFrame struct { + ErrorCode qerr.ErrorCode + LastGoodStream protocol.StreamID + ReasonPhrase string +} + +// ParseGoawayFrame parses a GOAWAY frame +func ParseGoawayFrame(r *bytes.Reader) (*GoawayFrame, error) { + frame := &GoawayFrame{} + + _, err := r.ReadByte() + if err != nil { + return nil, err + } + + errorCode, err := utils.ReadUint32(r) + if err != nil { + return nil, err + } + frame.ErrorCode = qerr.ErrorCode(errorCode) + + lastGoodStream, err := utils.ReadUint32(r) + if err != nil { + return nil, err + } + frame.LastGoodStream = protocol.StreamID(lastGoodStream) + + reasonPhraseLen, err := utils.ReadUint16(r) + if err != nil { + return nil, err + } + + if reasonPhraseLen > uint16(protocol.MaxPacketSize) { + return nil, qerr.Error(qerr.InvalidGoawayData, "reason phrase too long") + } + + reasonPhrase := make([]byte, reasonPhraseLen) + if _, err := io.ReadFull(r, reasonPhrase); err != nil { + return nil, err + } + frame.ReasonPhrase = string(reasonPhrase) + + return frame, nil +} + +func (f *GoawayFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error { + typeByte := uint8(0x03) + b.WriteByte(typeByte) + + utils.WriteUint32(b, uint32(f.ErrorCode)) + utils.WriteUint32(b, uint32(f.LastGoodStream)) + utils.WriteUint16(b, uint16(len(f.ReasonPhrase))) + b.WriteString(f.ReasonPhrase) + + return nil +} + +// MinLength of a written frame +func (f *GoawayFrame) MinLength(version protocol.VersionNumber) (protocol.ByteCount, error) { + return protocol.ByteCount(1 + 4 + 4 + 2 + len(f.ReasonPhrase)), nil +} diff --git a/vendor/github.com/lucas-clemente/quic-go/frames/log.go b/vendor/github.com/lucas-clemente/quic-go/frames/log.go new file mode 100644 index 0000000..ac548c6 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/frames/log.go @@ -0,0 +1,19 @@ +package frames + +import "github.com/lucas-clemente/quic-go/utils" + +// LogFrame logs a frame, either sent or received +func LogFrame(frame Frame, sent bool) { + if !utils.Debug() { + return + } + dir := "<-" + if sent { + dir = "->" + } + if sf, ok := frame.(*StreamFrame); ok { + utils.Debugf("\t%s &frames.StreamFrame{StreamID: %d, FinBit: %t, Offset: 0x%x, Data length: 0x%x, Offset + Data length: 0x%x}", dir, sf.StreamID, sf.FinBit, sf.Offset, sf.DataLen(), sf.Offset+sf.DataLen()) + return + } + utils.Debugf("\t%s %#v", dir, frame) +} diff --git a/vendor/github.com/lucas-clemente/quic-go/frames/ping_frame.go b/vendor/github.com/lucas-clemente/quic-go/frames/ping_frame.go new file mode 100644 index 0000000..8486af5 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/frames/ping_frame.go @@ -0,0 +1,33 @@ +package frames + +import ( + "bytes" + + "github.com/lucas-clemente/quic-go/protocol" +) + +// A PingFrame is a ping frame +type PingFrame struct{} + +// ParsePingFrame parses a Ping frame +func ParsePingFrame(r *bytes.Reader) (*PingFrame, error) { + frame := &PingFrame{} + + _, err := r.ReadByte() + if err != nil { + return nil, err + } + + return frame, nil +} + +func (f *PingFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error { + typeByte := uint8(0x07) + b.WriteByte(typeByte) + return nil +} + +// MinLength of a written frame +func (f *PingFrame) MinLength(version protocol.VersionNumber) (protocol.ByteCount, error) { + return 1, nil +} diff --git a/vendor/github.com/lucas-clemente/quic-go/frames/rst_stream_frame.go b/vendor/github.com/lucas-clemente/quic-go/frames/rst_stream_frame.go new file mode 100644 index 0000000..8777875 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/frames/rst_stream_frame.go @@ -0,0 +1,59 @@ +package frames + +import ( + "bytes" + + "github.com/lucas-clemente/quic-go/protocol" + "github.com/lucas-clemente/quic-go/utils" +) + +// A RstStreamFrame in QUIC +type RstStreamFrame struct { + StreamID protocol.StreamID + ErrorCode uint32 + ByteOffset protocol.ByteCount +} + +//Write writes a RST_STREAM frame +func (f *RstStreamFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error { + b.WriteByte(0x01) + utils.WriteUint32(b, uint32(f.StreamID)) + utils.WriteUint64(b, uint64(f.ByteOffset)) + utils.WriteUint32(b, f.ErrorCode) + return nil +} + +// MinLength of a written frame +func (f *RstStreamFrame) MinLength(version protocol.VersionNumber) (protocol.ByteCount, error) { + return 1 + 4 + 8 + 4, nil +} + +// ParseRstStreamFrame parses a RST_STREAM frame +func ParseRstStreamFrame(r *bytes.Reader) (*RstStreamFrame, error) { + frame := &RstStreamFrame{} + + // read the TypeByte + _, err := r.ReadByte() + if err != nil { + return nil, err + } + + sid, err := utils.ReadUint32(r) + if err != nil { + return nil, err + } + frame.StreamID = protocol.StreamID(sid) + + byteOffset, err := utils.ReadUint64(r) + if err != nil { + return nil, err + } + frame.ByteOffset = protocol.ByteCount(byteOffset) + + frame.ErrorCode, err = utils.ReadUint32(r) + if err != nil { + return nil, err + } + + return frame, nil +} diff --git a/vendor/github.com/lucas-clemente/quic-go/frames/stop_waiting_frame.go b/vendor/github.com/lucas-clemente/quic-go/frames/stop_waiting_frame.go new file mode 100644 index 0000000..8267825 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/frames/stop_waiting_frame.go @@ -0,0 +1,92 @@ +package frames + +import ( + "bytes" + "errors" + + "github.com/lucas-clemente/quic-go/protocol" + "github.com/lucas-clemente/quic-go/qerr" + "github.com/lucas-clemente/quic-go/utils" +) + +// A StopWaitingFrame in QUIC +type StopWaitingFrame struct { + LeastUnacked protocol.PacketNumber + PacketNumberLen protocol.PacketNumberLen + PacketNumber protocol.PacketNumber +} + +var ( + errLeastUnackedHigherThanPacketNumber = errors.New("StopWaitingFrame: LeastUnacked can't be greater than the packet number") + errPacketNumberNotSet = errors.New("StopWaitingFrame: PacketNumber not set") + errPacketNumberLenNotSet = errors.New("StopWaitingFrame: PacketNumberLen not set") +) + +func (f *StopWaitingFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error { + // packetNumber is the packet number of the packet that this StopWaitingFrame will be sent with + typeByte := uint8(0x06) + b.WriteByte(typeByte) + + // make sure the PacketNumber was set + if f.PacketNumber == protocol.PacketNumber(0) { + return errPacketNumberNotSet + } + + if f.LeastUnacked > f.PacketNumber { + return errLeastUnackedHigherThanPacketNumber + } + + leastUnackedDelta := uint64(f.PacketNumber - f.LeastUnacked) + + switch f.PacketNumberLen { + case protocol.PacketNumberLen1: + b.WriteByte(uint8(leastUnackedDelta)) + case protocol.PacketNumberLen2: + utils.WriteUint16(b, uint16(leastUnackedDelta)) + case protocol.PacketNumberLen4: + utils.WriteUint32(b, uint32(leastUnackedDelta)) + case protocol.PacketNumberLen6: + utils.WriteUint48(b, leastUnackedDelta) + default: + return errPacketNumberLenNotSet + } + + return nil +} + +// MinLength of a written frame +func (f *StopWaitingFrame) MinLength(version protocol.VersionNumber) (protocol.ByteCount, error) { + var minLength protocol.ByteCount + minLength = 1 // typeByte + + if f.PacketNumberLen == protocol.PacketNumberLenInvalid { + return 0, errPacketNumberLenNotSet + } + minLength += protocol.ByteCount(f.PacketNumberLen) + + return minLength, nil +} + +// ParseStopWaitingFrame parses a StopWaiting frame +func ParseStopWaitingFrame(r *bytes.Reader, packetNumber protocol.PacketNumber, packetNumberLen protocol.PacketNumberLen, version protocol.VersionNumber) (*StopWaitingFrame, error) { + frame := &StopWaitingFrame{} + + // read the TypeByte + _, err := r.ReadByte() + if err != nil { + return nil, err + } + + leastUnackedDelta, err := utils.ReadUintN(r, uint8(packetNumberLen)) + if err != nil { + return nil, err + } + + if leastUnackedDelta > uint64(packetNumber) { + return nil, qerr.Error(qerr.InvalidStopWaitingData, "invalid LeastUnackedDelta") + } + + frame.LeastUnacked = protocol.PacketNumber(uint64(packetNumber) - leastUnackedDelta) + + return frame, nil +} diff --git a/vendor/github.com/lucas-clemente/quic-go/frames/stream_frame.go b/vendor/github.com/lucas-clemente/quic-go/frames/stream_frame.go new file mode 100644 index 0000000..fa833f8 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/frames/stream_frame.go @@ -0,0 +1,208 @@ +package frames + +import ( + "bytes" + "errors" + + "github.com/lucas-clemente/quic-go/protocol" + "github.com/lucas-clemente/quic-go/qerr" + "github.com/lucas-clemente/quic-go/utils" +) + +// A StreamFrame of QUIC +type StreamFrame struct { + StreamID protocol.StreamID + FinBit bool + DataLenPresent bool + Offset protocol.ByteCount + Data []byte +} + +var ( + errInvalidStreamIDLen = errors.New("StreamFrame: Invalid StreamID length") + errInvalidOffsetLen = errors.New("StreamFrame: Invalid offset length") +) + +// ParseStreamFrame reads a stream frame. The type byte must not have been read yet. +func ParseStreamFrame(r *bytes.Reader) (*StreamFrame, error) { + frame := &StreamFrame{} + + typeByte, err := r.ReadByte() + if err != nil { + return nil, err + } + + frame.FinBit = typeByte&0x40 > 0 + frame.DataLenPresent = typeByte&0x20 > 0 + offsetLen := typeByte & 0x1C >> 2 + if offsetLen != 0 { + offsetLen++ + } + streamIDLen := typeByte&0x03 + 1 + + sid, err := utils.ReadUintN(r, streamIDLen) + if err != nil { + return nil, err + } + frame.StreamID = protocol.StreamID(sid) + + offset, err := utils.ReadUintN(r, offsetLen) + if err != nil { + return nil, err + } + frame.Offset = protocol.ByteCount(offset) + + var dataLen uint16 + if frame.DataLenPresent { + dataLen, err = utils.ReadUint16(r) + if err != nil { + return nil, err + } + } + + if dataLen > uint16(protocol.MaxPacketSize) { + return nil, qerr.Error(qerr.InvalidStreamData, "data len too large") + } + + if dataLen == 0 { + // The rest of the packet is data + dataLen = uint16(r.Len()) + } + if dataLen != 0 { + frame.Data = make([]byte, dataLen) + n, err := r.Read(frame.Data) + if n != int(dataLen) { + return nil, errors.New("BUG: StreamFrame could not read dataLen bytes") + } + if err != nil { + return nil, err + } + } + + if !frame.FinBit && len(frame.Data) == 0 { + return nil, qerr.EmptyStreamFrameNoFin + } + + return frame, nil +} + +// WriteStreamFrame writes a stream frame. +func (f *StreamFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error { + if len(f.Data) == 0 && !f.FinBit { + return errors.New("StreamFrame: attempting to write empty frame without FIN") + } + + typeByte := uint8(0x80) // sets the leftmost bit to 1 + + if f.FinBit { + typeByte ^= 0x40 + } + + if f.DataLenPresent { + typeByte ^= 0x20 + } + + offsetLength := f.getOffsetLength() + + if offsetLength > 0 { + typeByte ^= (uint8(offsetLength) - 1) << 2 + } + + streamIDLen := f.calculateStreamIDLength() + typeByte ^= streamIDLen - 1 + + b.WriteByte(typeByte) + + switch streamIDLen { + case 1: + b.WriteByte(uint8(f.StreamID)) + case 2: + utils.WriteUint16(b, uint16(f.StreamID)) + case 3: + utils.WriteUint24(b, uint32(f.StreamID)) + case 4: + utils.WriteUint32(b, uint32(f.StreamID)) + default: + return errInvalidStreamIDLen + } + + switch offsetLength { + case 0: + case 2: + utils.WriteUint16(b, uint16(f.Offset)) + case 3: + utils.WriteUint24(b, uint32(f.Offset)) + case 4: + utils.WriteUint32(b, uint32(f.Offset)) + case 5: + utils.WriteUint40(b, uint64(f.Offset)) + case 6: + utils.WriteUint48(b, uint64(f.Offset)) + case 7: + utils.WriteUint56(b, uint64(f.Offset)) + case 8: + utils.WriteUint64(b, uint64(f.Offset)) + default: + return errInvalidOffsetLen + } + + if f.DataLenPresent { + utils.WriteUint16(b, uint16(len(f.Data))) + } + + b.Write(f.Data) + + return nil +} + +func (f *StreamFrame) calculateStreamIDLength() uint8 { + if f.StreamID < (1 << 8) { + return 1 + } else if f.StreamID < (1 << 16) { + return 2 + } else if f.StreamID < (1 << 24) { + return 3 + } + return 4 +} + +func (f *StreamFrame) getOffsetLength() protocol.ByteCount { + if f.Offset == 0 { + return 0 + } + if f.Offset < (1 << 16) { + return 2 + } + if f.Offset < (1 << 24) { + return 3 + } + if f.Offset < (1 << 32) { + return 4 + } + if f.Offset < (1 << 40) { + return 5 + } + if f.Offset < (1 << 48) { + return 6 + } + if f.Offset < (1 << 56) { + return 7 + } + return 8 +} + +// MinLength returns the length of the header of a StreamFrame +// the total length of the StreamFrame is frame.MinLength() + frame.DataLen() +func (f *StreamFrame) MinLength(protocol.VersionNumber) (protocol.ByteCount, error) { + length := protocol.ByteCount(1) + protocol.ByteCount(f.calculateStreamIDLength()) + f.getOffsetLength() + if f.DataLenPresent { + length += 2 + } + + return length, nil +} + +// DataLen gives the length of data in bytes +func (f *StreamFrame) DataLen() protocol.ByteCount { + return protocol.ByteCount(len(f.Data)) +} diff --git a/vendor/github.com/lucas-clemente/quic-go/frames/window_update_frame.go b/vendor/github.com/lucas-clemente/quic-go/frames/window_update_frame.go new file mode 100644 index 0000000..93e7f8c --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/frames/window_update_frame.go @@ -0,0 +1,54 @@ +package frames + +import ( + "bytes" + + "github.com/lucas-clemente/quic-go/protocol" + "github.com/lucas-clemente/quic-go/utils" +) + +// A WindowUpdateFrame in QUIC +type WindowUpdateFrame struct { + StreamID protocol.StreamID + ByteOffset protocol.ByteCount +} + +//Write writes a RST_STREAM frame +func (f *WindowUpdateFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error { + typeByte := uint8(0x04) + b.WriteByte(typeByte) + + utils.WriteUint32(b, uint32(f.StreamID)) + utils.WriteUint64(b, uint64(f.ByteOffset)) + return nil +} + +// MinLength of a written frame +func (f *WindowUpdateFrame) MinLength(version protocol.VersionNumber) (protocol.ByteCount, error) { + return 1 + 4 + 8, nil +} + +// ParseWindowUpdateFrame parses a RST_STREAM frame +func ParseWindowUpdateFrame(r *bytes.Reader) (*WindowUpdateFrame, error) { + frame := &WindowUpdateFrame{} + + // read the TypeByte + _, err := r.ReadByte() + if err != nil { + return nil, err + } + + sid, err := utils.ReadUint32(r) + if err != nil { + return nil, err + } + frame.StreamID = protocol.StreamID(sid) + + byteOffset, err := utils.ReadUint64(r) + if err != nil { + return nil, err + } + frame.ByteOffset = protocol.ByteCount(byteOffset) + + return frame, nil +} diff --git a/vendor/github.com/lucas-clemente/quic-go/h2quic/request.go b/vendor/github.com/lucas-clemente/quic-go/h2quic/request.go new file mode 100644 index 0000000..f4e05e3 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/h2quic/request.go @@ -0,0 +1,70 @@ +package h2quic + +import ( + "crypto/tls" + "errors" + "net/http" + "net/url" + "strconv" + "strings" + + "golang.org/x/net/http2/hpack" +) + +func requestFromHeaders(headers []hpack.HeaderField) (*http.Request, error) { + var path, authority, method, contentLengthStr string + httpHeaders := http.Header{} + + for _, h := range headers { + switch h.Name { + case ":path": + path = h.Value + case ":method": + method = h.Value + case ":authority": + authority = h.Value + case "content-length": + contentLengthStr = h.Value + default: + if !h.IsPseudo() { + httpHeaders.Add(h.Name, h.Value) + } + } + } + + // concatenate cookie headers, see https://tools.ietf.org/html/rfc6265#section-5.4 + if len(httpHeaders["Cookie"]) > 0 { + httpHeaders.Set("Cookie", strings.Join(httpHeaders["Cookie"], "; ")) + } + + if len(path) == 0 || len(authority) == 0 || len(method) == 0 { + return nil, errors.New(":path, :authority and :method must not be empty") + } + + u, err := url.Parse(path) + if err != nil { + return nil, err + } + + var contentLength int64 + if len(contentLengthStr) > 0 { + contentLength, err = strconv.ParseInt(contentLengthStr, 10, 64) + if err != nil { + return nil, err + } + } + + return &http.Request{ + Method: method, + URL: u, + Proto: "HTTP/2.0", + ProtoMajor: 2, + ProtoMinor: 0, + Header: httpHeaders, + Body: nil, + ContentLength: contentLength, + Host: authority, + RequestURI: path, + TLS: &tls.ConnectionState{}, + }, nil +} diff --git a/vendor/github.com/lucas-clemente/quic-go/h2quic/response_writer.go b/vendor/github.com/lucas-clemente/quic-go/h2quic/response_writer.go new file mode 100644 index 0000000..0b5e930 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/h2quic/response_writer.go @@ -0,0 +1,81 @@ +package h2quic + +import ( + "bytes" + "net/http" + "strconv" + "strings" + "sync" + + "github.com/lucas-clemente/quic-go/protocol" + "github.com/lucas-clemente/quic-go/utils" + "golang.org/x/net/http2" + "golang.org/x/net/http2/hpack" +) + +type responseWriter struct { + dataStreamID protocol.StreamID + dataStream utils.Stream + + headerStream utils.Stream + headerStreamMutex *sync.Mutex + + header http.Header + headerWritten bool +} + +func newResponseWriter(headerStream utils.Stream, headerStreamMutex *sync.Mutex, dataStream utils.Stream, dataStreamID protocol.StreamID) *responseWriter { + return &responseWriter{ + header: http.Header{}, + headerStream: headerStream, + headerStreamMutex: headerStreamMutex, + dataStream: dataStream, + dataStreamID: dataStreamID, + } +} + +func (w *responseWriter) Header() http.Header { + return w.header +} + +func (w *responseWriter) WriteHeader(status int) { + if w.headerWritten { + return + } + w.headerWritten = true + + var headers bytes.Buffer + enc := hpack.NewEncoder(&headers) + enc.WriteField(hpack.HeaderField{Name: ":status", Value: strconv.Itoa(status)}) + + for k, v := range w.header { + for index := range v { + enc.WriteField(hpack.HeaderField{Name: strings.ToLower(k), Value: v[index]}) + } + } + + utils.Infof("Responding with %d", status) + w.headerStreamMutex.Lock() + defer w.headerStreamMutex.Unlock() + h2framer := http2.NewFramer(w.headerStream, nil) + err := h2framer.WriteHeaders(http2.HeadersFrameParam{ + StreamID: uint32(w.dataStreamID), + EndHeaders: true, + BlockFragment: headers.Bytes(), + }) + if err != nil { + utils.Errorf("could not write h2 header: %s", err.Error()) + } +} + +func (w *responseWriter) Write(p []byte) (int, error) { + if !w.headerWritten { + w.WriteHeader(200) + } + return w.dataStream.Write(p) +} + +func (w *responseWriter) Flush() {} + +// test that we implement http.Flusher +var _ http.Flusher = &responseWriter{} diff --git a/vendor/github.com/lucas-clemente/quic-go/h2quic/server.go b/vendor/github.com/lucas-clemente/quic-go/h2quic/server.go new file mode 100644 index 0000000..4e301b5 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/h2quic/server.go @@ -0,0 +1,335 @@ +package h2quic + +import ( + "crypto/tls" + "errors" + "fmt" + "io/ioutil" + "net" + "net/http" + "runtime" + "sync" + "sync/atomic" + "time" + + "github.com/lucas-clemente/quic-go" + "github.com/lucas-clemente/quic-go/protocol" + "github.com/lucas-clemente/quic-go/qerr" + "github.com/lucas-clemente/quic-go/utils" + "golang.org/x/net/http2" + "golang.org/x/net/http2/hpack" +) + +type streamCreator interface { + GetOrOpenStream(protocol.StreamID) (utils.Stream, error) + Close(error) error + RemoteAddr() *net.UDPAddr +} + +// Server is a HTTP2 server listening for QUIC connections. +type Server struct { + *http.Server + + // Private flag for demo, do not use + CloseAfterFirstRequest bool + + port uint32 // used atomically + + server *quic.Server + serverMutex sync.Mutex +} + +// ListenAndServe listens on the UDP address s.Addr and calls s.Handler to handle HTTP/2 requests on incoming connections. +func (s *Server) ListenAndServe() error { + if s.Server == nil { + return errors.New("use of h2quic.Server without http.Server") + } + return s.serveImpl(s.TLSConfig, nil) +} + +// ListenAndServeTLS listens on the UDP address s.Addr and calls s.Handler to handle HTTP/2 requests on incoming connections. +func (s *Server) ListenAndServeTLS(certFile, keyFile string) error { + var err error + certs := make([]tls.Certificate, 1) + certs[0], err = tls.LoadX509KeyPair(certFile, keyFile) + if err != nil { + return err + } + // We currently only use the cert-related stuff from tls.Config, + // so we don't need to make a full copy. + config := &tls.Config{ + Certificates: certs, + } + return s.serveImpl(config, nil) +} + +// Serve an existing UDP connection. +func (s *Server) Serve(conn *net.UDPConn) error { + return s.serveImpl(s.TLSConfig, conn) +} + +func (s *Server) serveImpl(tlsConfig *tls.Config, conn *net.UDPConn) error { + if s.Server == nil { + return errors.New("use of h2quic.Server without http.Server") + } + s.serverMutex.Lock() + if s.server != nil { + s.serverMutex.Unlock() + return errors.New("ListenAndServe may only be called once") + } + var err error + server, err := quic.NewServer(s.Addr, tlsConfig, s.handleStreamCb) + if err != nil { + s.serverMutex.Unlock() + return err + } + s.server = server + s.serverMutex.Unlock() + if conn == nil { + return server.ListenAndServe() + } + return server.Serve(conn) +} + +func (s *Server) handleStreamCb(session *quic.Session, stream utils.Stream) { + s.handleStream(session, stream) +} + +func (s *Server) handleStream(session streamCreator, stream utils.Stream) { + if stream.StreamID() != 3 { + return + } + + hpackDecoder := hpack.NewDecoder(4096, nil) + h2framer := http2.NewFramer(nil, stream) + + go func() { + var headerStreamMutex sync.Mutex // Protects concurrent calls to Write() + for { + if err := s.handleRequest(session, stream, &headerStreamMutex, hpackDecoder, h2framer); err != nil { + // QuicErrors must originate from stream.Read() returning an error. + // In this case, the session has already logged the error, so we don't + // need to log it again. + if _, ok := err.(*qerr.QuicError); !ok { + utils.Errorf("error handling h2 request: %s", err.Error()) + } + return + } + } + }() +} + +func (s *Server) handleRequest(session streamCreator, headerStream utils.Stream, headerStreamMutex *sync.Mutex, hpackDecoder *hpack.Decoder, h2framer *http2.Framer) error { + h2frame, err := h2framer.ReadFrame() + if err != nil { + return err + } + h2headersFrame := h2frame.(*http2.HeadersFrame) + if !h2headersFrame.HeadersEnded() { + return errors.New("http2 header continuation not implemented") + } + headers, err := hpackDecoder.DecodeFull(h2headersFrame.HeaderBlockFragment()) + if err != nil { + utils.Errorf("invalid http2 headers encoding: %s", err.Error()) + return err + } + + req, err := requestFromHeaders(headers) + if err != nil { + return err + } + + req.RemoteAddr = session.RemoteAddr().String() + + if utils.Debug() { + utils.Infof("%s %s%s, on data stream %d", req.Method, req.Host, req.RequestURI, h2headersFrame.StreamID) + } else { + utils.Infof("%s %s%s", req.Method, req.Host, req.RequestURI) + } + + dataStream, err := session.GetOrOpenStream(protocol.StreamID(h2headersFrame.StreamID)) + if err != nil { + return err + } + + if h2headersFrame.StreamEnded() { + dataStream.CloseRemote(0) + _, _ = dataStream.Read([]byte{0}) // read the eof + } + + // stream's Close() closes the write side, not the read side + req.Body = ioutil.NopCloser(dataStream) + + responseWriter := newResponseWriter(headerStream, headerStreamMutex, dataStream, protocol.StreamID(h2headersFrame.StreamID)) + + go func() { + handler := s.Handler + if handler == nil { + handler = http.DefaultServeMux + } + panicked := false + func() { + defer func() { + if p := recover(); p != nil { + // Copied from net/http/server.go + const size = 64 << 10 + buf := make([]byte, size) + buf = buf[:runtime.Stack(buf, false)] + utils.Errorf("http: panic serving: %v\n%s", p, buf) + panicked = true + } + }() + handler.ServeHTTP(responseWriter, req) + }() + if panicked { + responseWriter.WriteHeader(500) + } else { + responseWriter.WriteHeader(200) + } + if responseWriter.dataStream != nil { + responseWriter.dataStream.Close() + } + if s.CloseAfterFirstRequest { + time.Sleep(100 * time.Millisecond) + session.Close(nil) + } + }() + + return nil +} + +// Close the server immediately, aborting requests and sending CONNECTION_CLOSE frames to connected clients. +// Close in combination with ListenAndServe() (instead of Serve()) may race if it is called before a UDP socket is established. +func (s *Server) Close() error { + s.serverMutex.Lock() + defer s.serverMutex.Unlock() + if s.server != nil { + err := s.server.Close() + s.server = nil + return err + } + return nil +} + +// CloseGracefully shuts down the server gracefully. The server sends a GOAWAY frame first, then waits for either timeout to trigger, or for all running requests to complete. +// CloseGracefully in combination with ListenAndServe() (instead of Serve()) may race if it is called before a UDP socket is established. +func (s *Server) CloseGracefully(timeout time.Duration) error { + // TODO: implement + return nil +} + +// SetQuicHeaders can be used to set the proper headers that announce that this server supports QUIC. +// The values that are set depend on the port information from s.Server.Addr, and currently look like this (if Addr has port 443): +// Alternate-Protocol: 443:quic +// Alt-Svc: quic=":443"; ma=2592000; v="33,32,31,30" +func (s *Server) SetQuicHeaders(hdr http.Header) error { + port := atomic.LoadUint32(&s.port) + + if port == 0 { + // Extract port from s.Server.Addr + _, portStr, err := net.SplitHostPort(s.Server.Addr) + if err != nil { + return err + } + portInt, err := net.LookupPort("tcp", portStr) + if err != nil { + return err + } + port = uint32(portInt) + atomic.StoreUint32(&s.port, port) + } + + hdr.Add("Alternate-Protocol", fmt.Sprintf("%d:quic", port)) + hdr.Add("Alt-Svc", fmt.Sprintf(`quic=":%d"; ma=2592000; v="%s"`, port, protocol.SupportedVersionsAsString)) + + return nil +} + +// ListenAndServeQUIC listens on the UDP network address addr and calls the +// handler for HTTP/2 requests on incoming connections. http.DefaultServeMux is +// used when handler is nil. +func ListenAndServeQUIC(addr, certFile, keyFile string, handler http.Handler) error { + server := &Server{ + Server: &http.Server{ + Addr: addr, + Handler: handler, + }, + } + return server.ListenAndServeTLS(certFile, keyFile) +} + +// ListenAndServe listens on the given network address for both, TLS and QUIC +// connetions in parallel. It returns if one of the two returns an error. +// http.DefaultServeMux is used when handler is nil. +// The correct Alt-Svc headers for QUIC are set. +func ListenAndServe(addr, certFile, keyFile string, handler http.Handler) error { + // Load certs + var err error + certs := make([]tls.Certificate, 1) + certs[0], err = tls.LoadX509KeyPair(certFile, keyFile) + if err != nil { + return err + } + // We currently only use the cert-related stuff from tls.Config, + // so we don't need to make a full copy. + config := &tls.Config{ + Certificates: certs, + } + + // Open the listeners + udpAddr, err := net.ResolveUDPAddr("udp", addr) + if err != nil { + return err + } + udpConn, err := net.ListenUDP("udp", udpAddr) + if err != nil { + return err + } + defer udpConn.Close() + + tcpAddr, err := net.ResolveTCPAddr("tcp", addr) + if err != nil { + return err + } + tcpConn, err := net.ListenTCP("tcp", tcpAddr) + if err != nil { + return err + } + defer tcpConn.Close() + + // Start the servers + httpServer := &http.Server{ + Addr: addr, + TLSConfig: config, + } + + quicServer := &Server{ + Server: httpServer, + } + + if handler == nil { + handler = http.DefaultServeMux + } + httpServer.Handler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + quicServer.SetQuicHeaders(w.Header()) + handler.ServeHTTP(w, r) + }) + + hErr := make(chan error) + qErr := make(chan error) + go func() { + hErr <- httpServer.Serve(tcpConn) + }() + go func() { + qErr <- quicServer.Serve(udpConn) + }() + + select { + case err := <-hErr: + quicServer.Close() + return err + case err := <-qErr: + // Cannot close the HTTP server or wait for requests to complete properly :/ + return err + } +} diff --git a/vendor/github.com/lucas-clemente/quic-go/handshake/connection_parameters_manager.go b/vendor/github.com/lucas-clemente/quic-go/handshake/connection_parameters_manager.go new file mode 100644 index 0000000..df26119 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/handshake/connection_parameters_manager.go @@ -0,0 +1,202 @@ +package handshake + +import ( + "bytes" + "encoding/binary" + "errors" + "sync" + "time" + + "github.com/lucas-clemente/quic-go/protocol" + "github.com/lucas-clemente/quic-go/qerr" + "github.com/lucas-clemente/quic-go/utils" +) + +// ConnectionParametersManager stores the connection parameters +// Warning: Writes may only be done from the crypto stream, see the comment +// in GetSHLOMap(). +type ConnectionParametersManager struct { + params map[Tag][]byte + mutex sync.RWMutex + + flowControlNegotiated bool // have the flow control parameters for sending already been negotiated + + maxStreamsPerConnection uint32 + idleConnectionStateLifetime time.Duration + sendStreamFlowControlWindow protocol.ByteCount + sendConnectionFlowControlWindow protocol.ByteCount + receiveStreamFlowControlWindow protocol.ByteCount + receiveConnectionFlowControlWindow protocol.ByteCount +} + +var errTagNotInConnectionParameterMap = errors.New("ConnectionParametersManager: Tag not found in ConnectionsParameter map") + +// ErrMalformedTag is returned when the tag value cannot be read +var ( + ErrMalformedTag = qerr.Error(qerr.InvalidCryptoMessageParameter, "malformed Tag value") + ErrFlowControlRenegotiationNotSupported = qerr.Error(qerr.InvalidCryptoMessageParameter, "renegotiation of flow control parameters not supported") +) + +// NewConnectionParamatersManager creates a new connection parameters manager +func NewConnectionParamatersManager() *ConnectionParametersManager { + return &ConnectionParametersManager{ + params: make(map[Tag][]byte), + idleConnectionStateLifetime: protocol.DefaultIdleTimeout, + sendStreamFlowControlWindow: protocol.InitialStreamFlowControlWindow, // can only be changed by the client + sendConnectionFlowControlWindow: protocol.InitialConnectionFlowControlWindow, // can only be changed by the client + receiveStreamFlowControlWindow: protocol.ReceiveStreamFlowControlWindow, + receiveConnectionFlowControlWindow: protocol.ReceiveConnectionFlowControlWindow, + maxStreamsPerConnection: protocol.MaxStreamsPerConnection, + } +} + +// SetFromMap reads all params +func (h *ConnectionParametersManager) SetFromMap(params map[Tag][]byte) error { + h.mutex.Lock() + defer h.mutex.Unlock() + + for key, value := range params { + switch key { + case TagTCID: + h.params[key] = value + case TagMSPC: + clientValue, err := utils.ReadUint32(bytes.NewBuffer(value)) + if err != nil { + return ErrMalformedTag + } + h.maxStreamsPerConnection = h.negotiateMaxStreamsPerConnection(clientValue) + case TagICSL: + clientValue, err := utils.ReadUint32(bytes.NewBuffer(value)) + if err != nil { + return ErrMalformedTag + } + h.idleConnectionStateLifetime = h.negotiateIdleConnectionStateLifetime(time.Duration(clientValue) * time.Second) + case TagSFCW: + if h.flowControlNegotiated { + return ErrFlowControlRenegotiationNotSupported + } + sendStreamFlowControlWindow, err := utils.ReadUint32(bytes.NewBuffer(value)) + if err != nil { + return ErrMalformedTag + } + h.sendStreamFlowControlWindow = protocol.ByteCount(sendStreamFlowControlWindow) + case TagCFCW: + if h.flowControlNegotiated { + return ErrFlowControlRenegotiationNotSupported + } + sendConnectionFlowControlWindow, err := utils.ReadUint32(bytes.NewBuffer(value)) + if err != nil { + return ErrMalformedTag + } + h.sendConnectionFlowControlWindow = protocol.ByteCount(sendConnectionFlowControlWindow) + } + } + + _, containsSFCW := params[TagSFCW] + _, containsCFCW := params[TagCFCW] + if containsCFCW || containsSFCW { + h.flowControlNegotiated = true + } + + return nil +} + +func (h *ConnectionParametersManager) negotiateMaxStreamsPerConnection(clientValue uint32) uint32 { + return utils.MinUint32(clientValue, protocol.MaxStreamsPerConnection) +} + +func (h *ConnectionParametersManager) negotiateIdleConnectionStateLifetime(clientValue time.Duration) time.Duration { + return utils.MinDuration(clientValue, protocol.MaxIdleTimeout) +} + +// getRawValue gets the byte-slice for a tag +func (h *ConnectionParametersManager) getRawValue(tag Tag) ([]byte, error) { + h.mutex.RLock() + rawValue, ok := h.params[tag] + h.mutex.RUnlock() + + if !ok { + return nil, errTagNotInConnectionParameterMap + } + return rawValue, nil +} + +// GetSHLOMap gets all values (except crypto values) needed for the SHLO +func (h *ConnectionParametersManager) GetSHLOMap() map[Tag][]byte { + sfcw := bytes.NewBuffer([]byte{}) + utils.WriteUint32(sfcw, uint32(h.GetReceiveStreamFlowControlWindow())) + cfcw := bytes.NewBuffer([]byte{}) + utils.WriteUint32(cfcw, uint32(h.GetReceiveConnectionFlowControlWindow())) + mspc := bytes.NewBuffer([]byte{}) + utils.WriteUint32(mspc, h.GetMaxStreamsPerConnection()) + mids := bytes.NewBuffer([]byte{}) + utils.WriteUint32(mids, protocol.MaxIncomingDynamicStreams) + icsl := bytes.NewBuffer([]byte{}) + utils.WriteUint32(icsl, uint32(h.GetIdleConnectionStateLifetime()/time.Second)) + + return map[Tag][]byte{ + TagICSL: icsl.Bytes(), + TagMSPC: mspc.Bytes(), + TagMIDS: mids.Bytes(), + TagCFCW: cfcw.Bytes(), + TagSFCW: sfcw.Bytes(), + } +} + +// GetSendStreamFlowControlWindow gets the size of the stream-level flow control window for sending data +func (h *ConnectionParametersManager) GetSendStreamFlowControlWindow() protocol.ByteCount { + h.mutex.RLock() + defer h.mutex.RUnlock() + return h.sendStreamFlowControlWindow +} + +// GetSendConnectionFlowControlWindow gets the size of the stream-level flow control window for sending data +func (h *ConnectionParametersManager) GetSendConnectionFlowControlWindow() protocol.ByteCount { + h.mutex.RLock() + defer h.mutex.RUnlock() + return h.sendConnectionFlowControlWindow +} + +// GetReceiveStreamFlowControlWindow gets the size of the stream-level flow control window for receiving data +func (h *ConnectionParametersManager) GetReceiveStreamFlowControlWindow() protocol.ByteCount { + h.mutex.RLock() + defer h.mutex.RUnlock() + return h.receiveStreamFlowControlWindow +} + +// GetReceiveConnectionFlowControlWindow gets the size of the stream-level flow control window for receiving data +func (h *ConnectionParametersManager) GetReceiveConnectionFlowControlWindow() protocol.ByteCount { + h.mutex.RLock() + defer h.mutex.RUnlock() + return h.receiveConnectionFlowControlWindow +} + +// GetMaxStreamsPerConnection gets the maximum number of streams per connection +func (h *ConnectionParametersManager) GetMaxStreamsPerConnection() uint32 { + h.mutex.RLock() + defer h.mutex.RUnlock() + return h.maxStreamsPerConnection +} + +// GetIdleConnectionStateLifetime gets the idle timeout +func (h *ConnectionParametersManager) GetIdleConnectionStateLifetime() time.Duration { + h.mutex.RLock() + defer h.mutex.RUnlock() + return h.idleConnectionStateLifetime +} + +// TruncateConnectionID determines if the client requests truncated ConnectionIDs +func (h *ConnectionParametersManager) TruncateConnectionID() bool { + rawValue, err := h.getRawValue(TagTCID) + if err != nil { + return false + } + if len(rawValue) != 4 { + return false + } + value := binary.LittleEndian.Uint32(rawValue) + if value == 0 { + return true + } + return false +} diff --git a/vendor/github.com/lucas-clemente/quic-go/handshake/crypto_setup.go b/vendor/github.com/lucas-clemente/quic-go/handshake/crypto_setup.go new file mode 100644 index 0000000..56e9764 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/handshake/crypto_setup.go @@ -0,0 +1,327 @@ +package handshake + +import ( + "bytes" + "crypto/rand" + "io" + "net" + "sync" + + "github.com/lucas-clemente/quic-go/crypto" + "github.com/lucas-clemente/quic-go/protocol" + "github.com/lucas-clemente/quic-go/qerr" + "github.com/lucas-clemente/quic-go/utils" +) + +// KeyDerivationFunction is used for key derivation +type KeyDerivationFunction func(forwardSecure bool, sharedSecret, nonces []byte, connID protocol.ConnectionID, chlo []byte, scfg []byte, cert []byte, divNonce []byte) (crypto.AEAD, error) + +// KeyExchangeFunction is used to make a new KEX +type KeyExchangeFunction func() crypto.KeyExchange + +// The CryptoSetup handles all things crypto for the Session +type CryptoSetup struct { + connID protocol.ConnectionID + ip net.IP + version protocol.VersionNumber + scfg *ServerConfig + diversificationNonce []byte + + secureAEAD crypto.AEAD + forwardSecureAEAD crypto.AEAD + receivedForwardSecurePacket bool + receivedSecurePacket bool + aeadChanged chan struct{} + + keyDerivation KeyDerivationFunction + keyExchange KeyExchangeFunction + + cryptoStream utils.Stream + + connectionParametersManager *ConnectionParametersManager + + mutex sync.RWMutex +} + +var _ crypto.AEAD = &CryptoSetup{} + +// NewCryptoSetup creates a new CryptoSetup instance +func NewCryptoSetup( + connID protocol.ConnectionID, + ip net.IP, + version protocol.VersionNumber, + scfg *ServerConfig, + cryptoStream utils.Stream, + connectionParametersManager *ConnectionParametersManager, + aeadChanged chan struct{}, +) (*CryptoSetup, error) { + return &CryptoSetup{ + connID: connID, + ip: ip, + version: version, + scfg: scfg, + keyDerivation: crypto.DeriveKeysAESGCM, + keyExchange: getEphermalKEX, + cryptoStream: cryptoStream, + connectionParametersManager: connectionParametersManager, + aeadChanged: aeadChanged, + }, nil +} + +// HandleCryptoStream reads and writes messages on the crypto stream +func (h *CryptoSetup) HandleCryptoStream() error { + for { + var chloData bytes.Buffer + messageTag, cryptoData, err := ParseHandshakeMessage(io.TeeReader(h.cryptoStream, &chloData)) + if err != nil { + return qerr.HandshakeFailed + } + if messageTag != TagCHLO { + return qerr.InvalidCryptoMessageType + } + + utils.Debugf("Got CHLO:\n%s", printHandshakeMessage(cryptoData)) + + done, err := h.handleMessage(chloData.Bytes(), cryptoData) + if err != nil { + return err + } + if done { + return nil + } + } +} + +func (h *CryptoSetup) handleMessage(chloData []byte, cryptoData map[Tag][]byte) (bool, error) { + sniSlice, ok := cryptoData[TagSNI] + if !ok { + return false, qerr.Error(qerr.CryptoMessageParameterNotFound, "SNI required") + } + sni := string(sniSlice) + if sni == "" { + return false, qerr.Error(qerr.CryptoMessageParameterNotFound, "SNI required") + } + + var reply []byte + var err error + if !h.isInchoateCHLO(cryptoData) { + // We have a CHLO with a proper server config ID, do a 0-RTT handshake + reply, err = h.handleCHLO(sni, chloData, cryptoData) + if err != nil { + return false, err + } + _, err = h.cryptoStream.Write(reply) + if err != nil { + return false, err + } + return true, nil + } + + // We have an inchoate or non-matching CHLO, we now send a rejection + reply, err = h.handleInchoateCHLO(sni, chloData, cryptoData) + if err != nil { + return false, err + } + _, err = h.cryptoStream.Write(reply) + if err != nil { + return false, err + } + return false, nil +} + +// Open a message +func (h *CryptoSetup) Open(dst, src []byte, packetNumber protocol.PacketNumber, associatedData []byte) ([]byte, error) { + h.mutex.RLock() + defer h.mutex.RUnlock() + + if h.forwardSecureAEAD != nil { + res, err := h.forwardSecureAEAD.Open(dst, src, packetNumber, associatedData) + if err == nil { + h.receivedForwardSecurePacket = true + return res, nil + } + if h.receivedForwardSecurePacket { + return nil, err + } + } + if h.secureAEAD != nil { + res, err := h.secureAEAD.Open(dst, src, packetNumber, associatedData) + if err == nil { + h.receivedSecurePacket = true + return res, nil + } + if h.receivedSecurePacket { + return nil, err + } + } + return (&crypto.NullAEAD{}).Open(dst, src, packetNumber, associatedData) +} + +// Seal a message, call LockForSealing() before! +func (h *CryptoSetup) Seal(dst, src []byte, packetNumber protocol.PacketNumber, associatedData []byte) []byte { + if h.receivedForwardSecurePacket { + return h.forwardSecureAEAD.Seal(dst, src, packetNumber, associatedData) + } else if h.secureAEAD != nil { + return h.secureAEAD.Seal(dst, src, packetNumber, associatedData) + } else { + return (&crypto.NullAEAD{}).Seal(dst, src, packetNumber, associatedData) + } +} + +func (h *CryptoSetup) isInchoateCHLO(cryptoData map[Tag][]byte) bool { + scid, ok := cryptoData[TagSCID] + if !ok || !bytes.Equal(h.scfg.ID, scid) { + return true + } + if _, ok := cryptoData[TagPUBS]; !ok { + return true + } + if err := h.scfg.stkSource.VerifyToken(h.ip, cryptoData[TagSTK]); err != nil { + utils.Infof("STK invalid: %s", err.Error()) + return true + } + return false +} + +func (h *CryptoSetup) handleInchoateCHLO(sni string, chlo []byte, cryptoData map[Tag][]byte) ([]byte, error) { + if len(chlo) < protocol.ClientHelloMinimumSize { + return nil, qerr.Error(qerr.CryptoInvalidValueLength, "CHLO too small") + } + + token, err := h.scfg.stkSource.NewToken(h.ip) + if err != nil { + return nil, err + } + + replyMap := map[Tag][]byte{ + TagSCFG: h.scfg.Get(), + TagSTK: token, + TagSVID: []byte("quic-go"), + } + + if h.scfg.stkSource.VerifyToken(h.ip, cryptoData[TagSTK]) == nil { + proof, err := h.scfg.Sign(sni, chlo) + if err != nil { + return nil, err + } + + commonSetHashes := cryptoData[TagCCS] + cachedCertsHashes := cryptoData[TagCCRT] + + certCompressed, err := h.scfg.GetCertsCompressed(sni, commonSetHashes, cachedCertsHashes) + if err != nil { + return nil, err + } + // Token was valid, send more details + replyMap[TagPROF] = proof + replyMap[TagCERT] = certCompressed + } + + var serverReply bytes.Buffer + WriteHandshakeMessage(&serverReply, TagREJ, replyMap) + return serverReply.Bytes(), nil +} + +func (h *CryptoSetup) handleCHLO(sni string, data []byte, cryptoData map[Tag][]byte) ([]byte, error) { + // We have a CHLO matching our server config, we can continue with the 0-RTT handshake + sharedSecret, err := h.scfg.kex.CalculateSharedKey(cryptoData[TagPUBS]) + if err != nil { + return nil, err + } + + h.mutex.Lock() + defer h.mutex.Unlock() + + certUncompressed, err := h.scfg.signer.GetLeafCert(sni) + if err != nil { + return nil, err + } + + nonce := make([]byte, 32) + if _, err = rand.Read(nonce); err != nil { + return nil, err + } + + h.diversificationNonce = make([]byte, 32) + if _, err = rand.Read(h.diversificationNonce); err != nil { + return nil, err + } + + h.secureAEAD, err = h.keyDerivation( + false, + sharedSecret, + cryptoData[TagNONC], + h.connID, + data, + h.scfg.Get(), + certUncompressed, + h.diversificationNonce, + ) + if err != nil { + return nil, err + } + + // Generate a new curve instance to derive the forward secure key + var fsNonce bytes.Buffer + fsNonce.Write(cryptoData[TagNONC]) + fsNonce.Write(nonce) + ephermalKex := h.keyExchange() + ephermalSharedSecret, err := ephermalKex.CalculateSharedKey(cryptoData[TagPUBS]) + if err != nil { + return nil, err + } + h.forwardSecureAEAD, err = h.keyDerivation( + true, + ephermalSharedSecret, + fsNonce.Bytes(), + h.connID, + data, + h.scfg.Get(), + certUncompressed, + nil, + ) + if err != nil { + return nil, err + } + + err = h.connectionParametersManager.SetFromMap(cryptoData) + if err != nil { + return nil, err + } + + replyMap := h.connectionParametersManager.GetSHLOMap() + // add crypto parameters + replyMap[TagPUBS] = ephermalKex.PublicKey() + replyMap[TagSNO] = nonce + replyMap[TagVER] = protocol.SupportedVersionsAsTags + + var reply bytes.Buffer + WriteHandshakeMessage(&reply, TagSHLO, replyMap) + + h.aeadChanged <- struct{}{} + + return reply.Bytes(), nil +} + +// DiversificationNonce returns a diversification nonce if required in the next packet to be Seal'ed. See LockForSealing()! +func (h *CryptoSetup) DiversificationNonce() []byte { + if h.receivedForwardSecurePacket || h.secureAEAD == nil { + return nil + } + return h.diversificationNonce +} + +// LockForSealing should be called before Seal(). It is needed so that diversification nonces can be obtained before packets are sealed, and the AEADs are not changed in the meantime. +func (h *CryptoSetup) LockForSealing() { + h.mutex.RLock() +} + +// UnlockForSealing should be called after Seal() is complete, see LockForSealing(). +func (h *CryptoSetup) UnlockForSealing() { + h.mutex.RUnlock() +} + +// HandshakeComplete returns true after the first forward secure packet was received form the client. +func (h *CryptoSetup) HandshakeComplete() bool { + return h.receivedForwardSecurePacket +} diff --git a/vendor/github.com/lucas-clemente/quic-go/handshake/ephermal_cache.go b/vendor/github.com/lucas-clemente/quic-go/handshake/ephermal_cache.go new file mode 100644 index 0000000..794bcbd --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/handshake/ephermal_cache.go @@ -0,0 +1,50 @@ +package handshake + +import ( + "sync" + "time" + + "github.com/lucas-clemente/quic-go/crypto" + "github.com/lucas-clemente/quic-go/protocol" + "github.com/lucas-clemente/quic-go/utils" +) + +var ( + kexLifetime = protocol.EphermalKeyLifetime + kexCurrent crypto.KeyExchange + kexCurrentTime time.Time + kexMutex sync.RWMutex +) + +// getEphermalKEX returns the currently active KEX, which changes every protocol.EphermalKeyLifetime +// See the explanation from the QUIC crypto doc: +// +// A single connection is the usual scope for forward security, but the security +// difference between an ephemeral key used for a single connection, and one +// used for all connections for 60 seconds is negligible. Thus we can amortise +// the Diffie-Hellman key generation at the server over all the connections in a +// small time span. +func getEphermalKEX() (res crypto.KeyExchange) { + kexMutex.RLock() + res = kexCurrent + t := kexCurrentTime + kexMutex.RUnlock() + if res != nil && time.Now().Sub(t) < kexLifetime { + return res + } + + kexMutex.Lock() + defer kexMutex.Unlock() + // Check if still unfulfilled + if kexCurrent == nil || time.Now().Sub(kexCurrentTime) > kexLifetime { + kex, err := crypto.NewCurve25519KEX() + if err != nil { + utils.Errorf("could not set KEX: %s", err.Error()) + return kexCurrent + } + kexCurrent = kex + kexCurrentTime = time.Now() + return kexCurrent + } + return kexCurrent +} diff --git a/vendor/github.com/lucas-clemente/quic-go/handshake/handshake_message.go b/vendor/github.com/lucas-clemente/quic-go/handshake/handshake_message.go new file mode 100644 index 0000000..013c44b --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/handshake/handshake_message.go @@ -0,0 +1,116 @@ +package handshake + +import ( + "bytes" + "encoding/binary" + "fmt" + "io" + "sort" + + "github.com/lucas-clemente/quic-go/protocol" + "github.com/lucas-clemente/quic-go/qerr" + "github.com/lucas-clemente/quic-go/utils" +) + +// ParseHandshakeMessage reads a crypto message +func ParseHandshakeMessage(r io.Reader) (Tag, map[Tag][]byte, error) { + slice4 := make([]byte, 4) + + if _, err := io.ReadFull(r, slice4); err != nil { + return 0, nil, err + } + messageTag := Tag(binary.LittleEndian.Uint32(slice4)) + + if _, err := io.ReadFull(r, slice4); err != nil { + return 0, nil, err + } + nPairs := binary.LittleEndian.Uint32(slice4) + + if nPairs > protocol.CryptoMaxParams { + return 0, nil, qerr.CryptoTooManyEntries + } + + index := make([]byte, nPairs*8) + if _, err := io.ReadFull(r, index); err != nil { + return 0, nil, err + } + + resultMap := map[Tag][]byte{} + + var dataStart uint32 + for indexPos := 0; indexPos < int(nPairs)*8; indexPos += 8 { + tag := Tag(binary.LittleEndian.Uint32(index[indexPos : indexPos+4])) + dataEnd := binary.LittleEndian.Uint32(index[indexPos+4 : indexPos+8]) + + dataLen := dataEnd - dataStart + if dataLen > protocol.CryptoParameterMaxLength { + return 0, nil, qerr.Error(qerr.CryptoInvalidValueLength, "value too long") + } + + data := make([]byte, dataLen) + if _, err := io.ReadFull(r, data); err != nil { + return 0, nil, err + } + + resultMap[tag] = data + dataStart = dataEnd + } + + return messageTag, resultMap, nil +} + +// WriteHandshakeMessage writes a crypto message +func WriteHandshakeMessage(b *bytes.Buffer, messageTag Tag, data map[Tag][]byte) { + utils.WriteUint32(b, uint32(messageTag)) + utils.WriteUint16(b, uint16(len(data))) + utils.WriteUint16(b, 0) + + // Save current position in the buffer, so that we can update the index in-place later + indexStart := b.Len() + + indexData := make([]byte, 8*len(data)) + b.Write(indexData) // Will be updated later + + // Sort the tags + tags := make([]uint32, len(data)) + i := 0 + for t := range data { + tags[i] = uint32(t) + i++ + } + sort.Sort(utils.Uint32Slice(tags)) + + offset := uint32(0) + for i, t := range tags { + v := data[Tag(t)] + b.Write(v) + offset += uint32(len(v)) + binary.LittleEndian.PutUint32(indexData[i*8:], t) + binary.LittleEndian.PutUint32(indexData[i*8+4:], offset) + } + + // Now we write the index data for real + copy(b.Bytes()[indexStart:], indexData) +} + +func printHandshakeMessage(data map[Tag][]byte) string { + var res string + for k, v := range data { + if k == TagPAD { + continue + } + res += fmt.Sprintf("\t%s: %#v\n", tagToString(k), string(v)) + } + return res +} + +func tagToString(tag Tag) string { + b := make([]byte, 4) + binary.LittleEndian.PutUint32(b, uint32(tag)) + for i := range b { + if b[i] == 0 { + b[i] = ' ' + } + } + return string(b) +} diff --git a/vendor/github.com/lucas-clemente/quic-go/handshake/server_config.go b/vendor/github.com/lucas-clemente/quic-go/handshake/server_config.go new file mode 100644 index 0000000..dc33e97 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/handshake/server_config.go @@ -0,0 +1,65 @@ +package handshake + +import ( + "bytes" + "crypto/rand" + + "github.com/lucas-clemente/quic-go/crypto" +) + +// ServerConfig is a server config +type ServerConfig struct { + kex crypto.KeyExchange + signer crypto.Signer + ID []byte + stkSource crypto.StkSource +} + +// NewServerConfig creates a new server config +func NewServerConfig(kex crypto.KeyExchange, signer crypto.Signer) (*ServerConfig, error) { + id := make([]byte, 16) + _, err := rand.Read(id) + if err != nil { + return nil, err + } + + stkSecret := make([]byte, 32) + if _, err = rand.Read(stkSecret); err != nil { + return nil, err + } + stkSource, err := crypto.NewStkSource(stkSecret) + if err != nil { + return nil, err + } + + return &ServerConfig{ + kex: kex, + signer: signer, + ID: id, + stkSource: stkSource, + }, nil +} + +// Get the server config binary representation +func (s *ServerConfig) Get() []byte { + var serverConfig bytes.Buffer + WriteHandshakeMessage(&serverConfig, TagSCFG, map[Tag][]byte{ + TagSCID: s.ID, + TagKEXS: []byte("C255"), + TagAEAD: []byte("AESG"), + TagPUBS: append([]byte{0x20, 0x00, 0x00}, s.kex.PublicKey()...), + TagOBIT: {0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7}, + TagEXPY: {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, + }) + return serverConfig.Bytes() +} + +// Sign the server config and CHLO with the server's keyData +func (s *ServerConfig) Sign(sni string, chlo []byte) ([]byte, error) { + return s.signer.SignServerProof(sni, chlo, s.Get()) +} + +// GetCertsCompressed returns the certificate data +func (s *ServerConfig) GetCertsCompressed(sni string, commonSetHashes, compressedHashes []byte) ([]byte, error) { + return s.signer.GetCertsCompressed(sni, commonSetHashes, compressedHashes) +} diff --git a/vendor/github.com/lucas-clemente/quic-go/handshake/tags.go b/vendor/github.com/lucas-clemente/quic-go/handshake/tags.go new file mode 100644 index 0000000..92d4d84 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/handshake/tags.go @@ -0,0 +1,87 @@ +package handshake + +// A Tag in the QUIC crypto +type Tag uint32 + +const ( + // TagCHLO is a client hello + TagCHLO Tag = 'C' + 'H'<<8 + 'L'<<16 + 'O'<<24 + // TagREJ is a server hello rejection + TagREJ Tag = 'R' + 'E'<<8 + 'J'<<16 + // TagSCFG is a server config + TagSCFG Tag = 'S' + 'C'<<8 + 'F'<<16 + 'G'<<24 + + // TagPAD is padding + TagPAD Tag = 'P' + 'A'<<8 + 'D'<<16 + // TagSNI is the server name indication + TagSNI Tag = 'S' + 'N'<<8 + 'I'<<16 + // TagVER is the QUIC version + TagVER Tag = 'V' + 'E'<<8 + 'R'<<16 + // TagCCS are the hashes of the common certificate sets + TagCCS Tag = 'C' + 'C'<<8 + 'S'<<16 + // TagCCRT are the hashes of the cached certificates + TagCCRT Tag = 'C' + 'C'<<8 + 'R'<<16 + 'T'<<24 + // TagMSPC is max streams per connection + TagMSPC Tag = 'M' + 'S'<<8 + 'P'<<16 + 'C'<<24 + // TagMIDS is max incoming dyanamic streams + TagMIDS Tag = 'M' + 'I'<<8 + 'D'<<16 + 'S'<<24 + // TagUAID is the user agent ID + TagUAID Tag = 'U' + 'A'<<8 + 'I'<<16 + 'D'<<24 + // TagSVID is the server ID (unofficial tag by us :) + TagSVID Tag = 'S' + 'V'<<8 + 'I'<<16 + 'D'<<24 + // TagTCID is truncation of the connection ID + TagTCID Tag = 'T' + 'C'<<8 + 'I'<<16 + 'D'<<24 + // TagPDMD is the proof demand + TagPDMD Tag = 'P' + 'D'<<8 + 'M'<<16 + 'D'<<24 + // TagSRBF is the socket receive buffer + TagSRBF Tag = 'S' + 'R'<<8 + 'B'<<16 + 'F'<<24 + // TagICSL is the idle connection state lifetime + TagICSL Tag = 'I' + 'C'<<8 + 'S'<<16 + 'L'<<24 + // TagNONP is the client proof nonce + TagNONP Tag = 'N' + 'O'<<8 + 'N'<<16 + 'P'<<24 + // TagSCLS is the silently close timeout + TagSCLS Tag = 'S' + 'C'<<8 + 'L'<<16 + 'S'<<24 + // TagCSCT is the signed cert timestamp (RFC6962) of leaf cert + TagCSCT Tag = 'C' + 'S'<<8 + 'C'<<16 + 'T'<<24 + // TagCOPT are the connection options + TagCOPT Tag = 'C' + 'O'<<8 + 'P'<<16 + 'T'<<24 + // TagCFCW is the initial session/connection flow control receive window + TagCFCW Tag = 'C' + 'F'<<8 + 'C'<<16 + 'W'<<24 + // TagSFCW is the initial stream flow control receive window. + TagSFCW Tag = 'S' + 'F'<<8 + 'C'<<16 + 'W'<<24 + + // TagSTK is the source-address token + TagSTK Tag = 'S' + 'T'<<8 + 'K'<<16 + // TagSNO is the server nonce + TagSNO Tag = 'S' + 'N'<<8 + 'O'<<16 + // TagPROF is the server proof + TagPROF Tag = 'P' + 'R'<<8 + 'O'<<16 + 'F'<<24 + + // TagNONC is the client nonce + TagNONC Tag = 'N' + 'O'<<8 + 'N'<<16 + 'C'<<24 + + // TagSCID is the server config ID + TagSCID Tag = 'S' + 'C'<<8 + 'I'<<16 + 'D'<<24 + // TagKEXS is the list of key exchange algos + TagKEXS Tag = 'K' + 'E'<<8 + 'X'<<16 + 'S'<<24 + // TagAEAD is the list of AEAD algos + TagAEAD Tag = 'A' + 'E'<<8 + 'A'<<16 + 'D'<<24 + // TagPUBS is the public value for the KEX + TagPUBS Tag = 'P' + 'U'<<8 + 'B'<<16 + 'S'<<24 + // TagOBIT is the client orbit + TagOBIT Tag = 'O' + 'B'<<8 + 'I'<<16 + 'T'<<24 + // TagEXPY is the server config expiry + TagEXPY Tag = 'E' + 'X'<<8 + 'P'<<16 + 'Y'<<24 + // TagCERT is the CERT data + TagCERT Tag = 0xff545243 + + // TagSHLO is the server hello + TagSHLO Tag = 'S' + 'H'<<8 + 'L'<<16 + 'O'<<24 + + // TagPRST is the public reset tag + TagPRST Tag = 'P' + 'R'<<8 + 'S'<<16 + 'T'<<24 + // TagRSEQ is the public reset rejected packet number + TagRSEQ Tag = 'R' + 'S'<<8 + 'E'<<16 + 'Q'<<24 + // TagRNON is the public reset nonce + TagRNON Tag = 'R' + 'N'<<8 + 'O'<<16 + 'N'<<24 +) diff --git a/vendor/github.com/lucas-clemente/quic-go/packet_number_generator.go b/vendor/github.com/lucas-clemente/quic-go/packet_number_generator.go new file mode 100644 index 0000000..71ca9a3 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/packet_number_generator.go @@ -0,0 +1,69 @@ +package quic + +import ( + "crypto/rand" + "math" + + "github.com/lucas-clemente/quic-go/protocol" +) + +// The packetNumberGenerator generates the packet number for the next packet +// it randomly skips a packet number every averagePeriod packets (on average) +// it is guarantued to never skip two consecutive packet numbers +type packetNumberGenerator struct { + averagePeriod protocol.PacketNumber + + next protocol.PacketNumber + nextToSkip protocol.PacketNumber +} + +func newPacketNumberGenerator(averagePeriod protocol.PacketNumber) *packetNumberGenerator { + return &packetNumberGenerator{ + next: 1, + averagePeriod: averagePeriod, + } +} + +func (p *packetNumberGenerator) Peek() protocol.PacketNumber { + return p.next +} + +func (p *packetNumberGenerator) Pop() protocol.PacketNumber { + next := p.next + + // generate a new packet number for the next packet + p.next++ + + if p.next == p.nextToSkip { + p.next++ + p.generateNewSkip() + } + + return next +} + +func (p *packetNumberGenerator) generateNewSkip() error { + num, err := p.getRandomNumber() + if err != nil { + return err + } + + skip := protocol.PacketNumber(num) * (p.averagePeriod - 1) / (math.MaxUint16 / 2) + // make sure that there are never two consecutive packet numbers that are skipped + p.nextToSkip = p.next + 2 + skip + + return nil +} + +// getRandomNumber() generates a cryptographically secure random number between 0 and MaxUint16 (= 65535) +// The expectation value is 65535/2 +func (p *packetNumberGenerator) getRandomNumber() (uint16, error) { + b := make([]byte, 2) + _, err := rand.Read(b) + if err != nil { + return 0, err + } + + num := uint16(b[0])<<8 + uint16(b[1]) + return num, nil +} diff --git a/vendor/github.com/lucas-clemente/quic-go/packet_packer.go b/vendor/github.com/lucas-clemente/quic-go/packet_packer.go new file mode 100644 index 0000000..e48080b --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/packet_packer.go @@ -0,0 +1,203 @@ +package quic + +import ( + "bytes" + "errors" + "fmt" + + "github.com/lucas-clemente/quic-go/frames" + "github.com/lucas-clemente/quic-go/handshake" + "github.com/lucas-clemente/quic-go/protocol" +) + +type packedPacket struct { + number protocol.PacketNumber + raw []byte + frames []frames.Frame +} + +type packetPacker struct { + connectionID protocol.ConnectionID + version protocol.VersionNumber + cryptoSetup *handshake.CryptoSetup + + packetNumberGenerator *packetNumberGenerator + + connectionParametersManager *handshake.ConnectionParametersManager + + streamFramer *streamFramer + controlFrames []frames.Frame +} + +func newPacketPacker(connectionID protocol.ConnectionID, cryptoSetup *handshake.CryptoSetup, connectionParametersHandler *handshake.ConnectionParametersManager, streamFramer *streamFramer, version protocol.VersionNumber) *packetPacker { + return &packetPacker{ + cryptoSetup: cryptoSetup, + connectionID: connectionID, + connectionParametersManager: connectionParametersHandler, + version: version, + streamFramer: streamFramer, + packetNumberGenerator: newPacketNumberGenerator(protocol.SkipPacketAveragePeriodLength), + } +} + +func (p *packetPacker) PackConnectionClose(frame *frames.ConnectionCloseFrame, leastUnacked protocol.PacketNumber) (*packedPacket, error) { + return p.packPacket(nil, []frames.Frame{frame}, leastUnacked, true, false) +} + +func (p *packetPacker) PackPacket(stopWaitingFrame *frames.StopWaitingFrame, controlFrames []frames.Frame, leastUnacked protocol.PacketNumber, maySendOnlyAck bool) (*packedPacket, error) { + return p.packPacket(stopWaitingFrame, controlFrames, leastUnacked, false, maySendOnlyAck) +} + +func (p *packetPacker) packPacket(stopWaitingFrame *frames.StopWaitingFrame, controlFrames []frames.Frame, leastUnacked protocol.PacketNumber, onlySendOneControlFrame, maySendOnlyAck bool) (*packedPacket, error) { + if len(controlFrames) > 0 { + p.controlFrames = append(p.controlFrames, controlFrames...) + } + + currentPacketNumber := p.packetNumberGenerator.Peek() + + // cryptoSetup needs to be locked here, so that the AEADs are not changed between + // calling DiversificationNonce() and Seal(). + p.cryptoSetup.LockForSealing() + defer p.cryptoSetup.UnlockForSealing() + + packetNumberLen := protocol.GetPacketNumberLengthForPublicHeader(currentPacketNumber, leastUnacked) + responsePublicHeader := &PublicHeader{ + ConnectionID: p.connectionID, + PacketNumber: currentPacketNumber, + PacketNumberLen: packetNumberLen, + TruncateConnectionID: p.connectionParametersManager.TruncateConnectionID(), + DiversificationNonce: p.cryptoSetup.DiversificationNonce(), + } + + publicHeaderLength, err := responsePublicHeader.GetLength() + if err != nil { + return nil, err + } + + if stopWaitingFrame != nil { + stopWaitingFrame.PacketNumber = currentPacketNumber + stopWaitingFrame.PacketNumberLen = packetNumberLen + } + + var payloadFrames []frames.Frame + if onlySendOneControlFrame { + payloadFrames = []frames.Frame{controlFrames[0]} + } else { + payloadFrames, err = p.composeNextPacket(stopWaitingFrame, publicHeaderLength) + if err != nil { + return nil, err + } + } + + // Check if we have enough frames to send + if len(payloadFrames) == 0 { + return nil, nil + } + // Don't send out packets that only contain a StopWaitingFrame + if !onlySendOneControlFrame && len(payloadFrames) == 1 && stopWaitingFrame != nil { + return nil, nil + } + // Don't send out packets that only contain an ACK (plus optional STOP_WAITING), if requested + if !maySendOnlyAck { + if len(payloadFrames) == 1 { + if _, ok := payloadFrames[0].(*frames.AckFrame); ok { + return nil, nil + } + } else if len(payloadFrames) == 2 && stopWaitingFrame != nil { + if _, ok := payloadFrames[1].(*frames.AckFrame); ok { + return nil, nil + } + } + } + + raw := getPacketBuffer() + buffer := bytes.NewBuffer(raw) + + if err = responsePublicHeader.Write(buffer, p.version); err != nil { + return nil, err + } + + payloadStartIndex := buffer.Len() + + for _, frame := range payloadFrames { + err := frame.Write(buffer, p.version) + if err != nil { + return nil, err + } + } + + if protocol.ByteCount(buffer.Len()+12) > protocol.MaxPacketSize { + return nil, errors.New("PacketPacker BUG: packet too large") + } + + raw = raw[0:buffer.Len()] + p.cryptoSetup.Seal(raw[payloadStartIndex:payloadStartIndex], raw[payloadStartIndex:], currentPacketNumber, raw[:payloadStartIndex]) + raw = raw[0 : buffer.Len()+12] + + num := p.packetNumberGenerator.Pop() + if num != currentPacketNumber { + return nil, errors.New("PacketPacker BUG: Peeked and Popped packet numbers do not match.") + } + + return &packedPacket{ + number: currentPacketNumber, + raw: raw, + frames: payloadFrames, + }, nil +} + +func (p *packetPacker) composeNextPacket(stopWaitingFrame *frames.StopWaitingFrame, publicHeaderLength protocol.ByteCount) ([]frames.Frame, error) { + var payloadLength protocol.ByteCount + var payloadFrames []frames.Frame + + maxFrameSize := protocol.MaxFrameAndPublicHeaderSize - publicHeaderLength + + if stopWaitingFrame != nil { + payloadFrames = append(payloadFrames, stopWaitingFrame) + minLength, err := stopWaitingFrame.MinLength(p.version) + if err != nil { + return nil, err + } + payloadLength += minLength + } + + for len(p.controlFrames) > 0 { + frame := p.controlFrames[len(p.controlFrames)-1] + minLength, _ := frame.MinLength(p.version) // controlFrames does not contain any StopWaitingFrames. So it will *never* return an error + if payloadLength+minLength > maxFrameSize { + break + } + payloadFrames = append(payloadFrames, frame) + payloadLength += minLength + p.controlFrames = p.controlFrames[:len(p.controlFrames)-1] + } + + if payloadLength > maxFrameSize { + return nil, fmt.Errorf("Packet Packer BUG: packet payload (%d) too large (%d)", payloadLength, maxFrameSize) + } + + // temporarily increase the maxFrameSize by 2 bytes + // this leads to a properly sized packet in all cases, since we do all the packet length calculations with StreamFrames that have the DataLen set + // however, for the last StreamFrame in the packet, we can omit the DataLen, thus saving 2 bytes and yielding a packet of exactly the correct size + maxFrameSize += 2 + + fs := p.streamFramer.PopStreamFrames(maxFrameSize - payloadLength) + if len(fs) != 0 { + fs[len(fs)-1].DataLenPresent = false + } + + // TODO: Simplify + for _, f := range fs { + payloadFrames = append(payloadFrames, f) + } + + for b := p.streamFramer.PopBlockedFrame(); b != nil; b = p.streamFramer.PopBlockedFrame() { + p.controlFrames = append(p.controlFrames, b) + } + + return payloadFrames, nil +} + +func (p *packetPacker) QueueControlFrameForNextPacket(f frames.Frame) { + p.controlFrames = append(p.controlFrames, f) +} diff --git a/vendor/github.com/lucas-clemente/quic-go/packet_unpacker.go b/vendor/github.com/lucas-clemente/quic-go/packet_unpacker.go new file mode 100644 index 0000000..3434751 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/packet_unpacker.go @@ -0,0 +1,109 @@ +package quic + +import ( + "bytes" + "errors" + "fmt" + + "github.com/lucas-clemente/quic-go/crypto" + "github.com/lucas-clemente/quic-go/frames" + "github.com/lucas-clemente/quic-go/protocol" + "github.com/lucas-clemente/quic-go/qerr" +) + +type unpackedPacket struct { + frames []frames.Frame +} + +type packetUnpacker struct { + version protocol.VersionNumber + aead crypto.AEAD +} + +func (u *packetUnpacker) Unpack(publicHeaderBinary []byte, hdr *PublicHeader, data []byte) (*unpackedPacket, error) { + buf := getPacketBuffer() + defer putPacketBuffer(buf) + decrypted, err := u.aead.Open(buf, data, hdr.PacketNumber, publicHeaderBinary) + if err != nil { + // Wrap err in quicError so that public reset is sent by session + return nil, qerr.Error(qerr.DecryptionFailure, err.Error()) + } + r := bytes.NewReader(decrypted) + + if r.Len() == 0 { + return nil, qerr.MissingPayload + } + + fs := make([]frames.Frame, 0, 2) + + // Read all frames in the packet +ReadLoop: + for r.Len() > 0 { + typeByte, _ := r.ReadByte() + r.UnreadByte() + + var frame frames.Frame + if typeByte&0x80 == 0x80 { + frame, err = frames.ParseStreamFrame(r) + if err != nil { + err = qerr.Error(qerr.InvalidStreamData, err.Error()) + } + } else if typeByte&0xc0 == 0x40 { + frame, err = frames.ParseAckFrame(r, u.version) + if err != nil { + err = qerr.Error(qerr.InvalidAckData, err.Error()) + } + } else if typeByte&0xe0 == 0x20 { + err = errors.New("unimplemented: CONGESTION_FEEDBACK") + } else { + switch typeByte { + case 0x0: // PAD, end of frames + break ReadLoop + case 0x01: + frame, err = frames.ParseRstStreamFrame(r) + if err != nil { + err = qerr.Error(qerr.InvalidRstStreamData, err.Error()) + } + case 0x02: + frame, err = frames.ParseConnectionCloseFrame(r) + if err != nil { + err = qerr.Error(qerr.InvalidConnectionCloseData, err.Error()) + } + case 0x03: + frame, err = frames.ParseGoawayFrame(r) + if err != nil { + err = qerr.Error(qerr.InvalidGoawayData, err.Error()) + } + case 0x04: + frame, err = frames.ParseWindowUpdateFrame(r) + if err != nil { + err = qerr.Error(qerr.InvalidWindowUpdateData, err.Error()) + } + case 0x05: + frame, err = frames.ParseBlockedFrame(r) + if err != nil { + err = qerr.Error(qerr.InvalidBlockedData, err.Error()) + } + case 0x06: + frame, err = frames.ParseStopWaitingFrame(r, hdr.PacketNumber, hdr.PacketNumberLen, u.version) + if err != nil { + err = qerr.Error(qerr.InvalidStopWaitingData, err.Error()) + } + case 0x07: + frame, err = frames.ParsePingFrame(r) + default: + err = qerr.Error(qerr.InvalidFrameData, fmt.Sprintf("unknown type byte 0x%x", typeByte)) + } + } + if err != nil { + return nil, err + } + if frame != nil { + fs = append(fs, frame) + } + } + + return &unpackedPacket{ + frames: fs, + }, nil +} diff --git a/vendor/github.com/lucas-clemente/quic-go/protocol/packet_number.go b/vendor/github.com/lucas-clemente/quic-go/protocol/packet_number.go new file mode 100644 index 0000000..c4f468a --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/protocol/packet_number.go @@ -0,0 +1,56 @@ +package protocol + +// InferPacketNumber calculates the packet number based on the received packet number, its length and the last seen packet number +func InferPacketNumber(packetNumberLength PacketNumberLen, lastPacketNumber PacketNumber, wirePacketNumber PacketNumber) PacketNumber { + epochDelta := PacketNumber(1) << (uint8(packetNumberLength) * 8) + epoch := lastPacketNumber & ^(epochDelta - 1) + prevEpochBegin := epoch - epochDelta + nextEpochBegin := epoch + epochDelta + return closestTo( + lastPacketNumber+1, + epoch+wirePacketNumber, + closestTo(lastPacketNumber+1, prevEpochBegin+wirePacketNumber, nextEpochBegin+wirePacketNumber), + ) +} + +func closestTo(target, a, b PacketNumber) PacketNumber { + if delta(target, a) < delta(target, b) { + return a + } + return b +} + +func delta(a, b PacketNumber) PacketNumber { + if a < b { + return b - a + } + return a - b +} + +// GetPacketNumberLengthForPublicHeader gets the length of the packet number for the public header +// it never chooses a PacketNumberLen of 1 byte, since this is too short under certain circumstances +func GetPacketNumberLengthForPublicHeader(packetNumber PacketNumber, leastUnacked PacketNumber) PacketNumberLen { + diff := uint64(packetNumber - leastUnacked) + if diff < (2 << (uint8(PacketNumberLen2)*8 - 2)) { + return PacketNumberLen2 + } + if diff < (2 << (uint8(PacketNumberLen4)*8 - 2)) { + return PacketNumberLen4 + } + // we do not check if there are less than 2^46 packets in flight, since flow control and congestion control will limit this number *a lot* sooner + return PacketNumberLen6 +} + +// GetPacketNumberLength gets the minimum length needed to fully represent the packet number +func GetPacketNumberLength(packetNumber PacketNumber) PacketNumberLen { + if packetNumber < (1 << (uint8(PacketNumberLen1) * 8)) { + return PacketNumberLen1 + } + if packetNumber < (1 << (uint8(PacketNumberLen2) * 8)) { + return PacketNumberLen2 + } + if packetNumber < (1 << (uint8(PacketNumberLen4) * 8)) { + return PacketNumberLen4 + } + return PacketNumberLen6 +} diff --git a/vendor/github.com/lucas-clemente/quic-go/protocol/protocol.go b/vendor/github.com/lucas-clemente/quic-go/protocol/protocol.go new file mode 100644 index 0000000..aae2e0a --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/protocol/protocol.go @@ -0,0 +1,66 @@ +package protocol + +import ( + "math" + "time" +) + +// A PacketNumber in QUIC +type PacketNumber uint64 + +// PacketNumberLen is the length of the packet number in bytes +type PacketNumberLen uint8 + +const ( + // PacketNumberLenInvalid is the default value and not a valid length for a packet number + PacketNumberLenInvalid PacketNumberLen = 0 + // PacketNumberLen1 is a packet number length of 1 byte + PacketNumberLen1 PacketNumberLen = 1 + // PacketNumberLen2 is a packet number length of 2 bytes + PacketNumberLen2 PacketNumberLen = 2 + // PacketNumberLen4 is a packet number length of 4 bytes + PacketNumberLen4 PacketNumberLen = 4 + // PacketNumberLen6 is a packet number length of 6 bytes + PacketNumberLen6 PacketNumberLen = 6 +) + +// A ConnectionID in QUIC +type ConnectionID uint64 + +// A StreamID in QUIC +type StreamID uint32 + +// A ByteCount in QUIC +type ByteCount uint64 + +// MaxByteCount is the maximum value of a ByteCount +const MaxByteCount = math.MaxUint64 + +// MaxPacketSize is the maximum packet size, including the public header +// This is the value used by Chromium for a QUIC packet sent using IPv6 (for IPv4 it would be 1370) +const MaxPacketSize ByteCount = 1350 + +// MaxFrameAndPublicHeaderSize is the maximum size of a QUIC frame plus PublicHeader +const MaxFrameAndPublicHeaderSize = MaxPacketSize - 12 /*crypto signature*/ + +// DefaultTCPMSS is the default maximum packet size used in the Linux TCP implementation. +// Used in QUIC for congestion window computations in bytes. +const DefaultTCPMSS ByteCount = 1460 + +// InitialStreamFlowControlWindow is the initial stream-level flow control window for sending +const InitialStreamFlowControlWindow ByteCount = (1 << 14) // 16 kB + +// InitialConnectionFlowControlWindow is the initial connection-level flow control window for sending +const InitialConnectionFlowControlWindow ByteCount = (1 << 14) // 16 kB + +// DefaultRetransmissionTime is the RTO time on new connections +const DefaultRetransmissionTime = 500 * time.Millisecond + +// MinRetransmissionTime is the minimum RTO time +const MinRetransmissionTime = 200 * time.Millisecond + +// MaxRetransmissionTime is the maximum RTO time +const MaxRetransmissionTime = 60 * time.Second + +// ClientHelloMinimumSize is the minimum size the server expects an inchoate CHLO to have. +const ClientHelloMinimumSize = 1024 diff --git a/vendor/github.com/lucas-clemente/quic-go/protocol/server_parameters.go b/vendor/github.com/lucas-clemente/quic-go/protocol/server_parameters.go new file mode 100644 index 0000000..511bb46 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/protocol/server_parameters.go @@ -0,0 +1,93 @@ +package protocol + +import "time" + +// DefaultMaxCongestionWindow is the default for the max congestion window +const DefaultMaxCongestionWindow = 1000 + +// InitialCongestionWindow is the initial congestion window in QUIC packets +const InitialCongestionWindow = 32 + +// MaxUndecryptablePackets limits the number of undecryptable packets that a +// session queues for later until it sends a public reset. +const MaxUndecryptablePackets = 10 + +// AckSendDelay is the maximal time delay applied to packets containing only ACKs +const AckSendDelay = 5 * time.Millisecond + +// ReceiveStreamFlowControlWindow is the stream-level flow control window for receiving data +// This is the value that Google servers are using +const ReceiveStreamFlowControlWindow ByteCount = (1 << 20) // 1 MB + +// ReceiveConnectionFlowControlWindow is the stream-level flow control window for receiving data +// This is the value that Google servers are using +const ReceiveConnectionFlowControlWindow ByteCount = (1 << 20) * 1.5 // 1.5 MB + +// MaxStreamsPerConnection is the maximum value accepted for the number of streams per connection +const MaxStreamsPerConnection = 100 + +// MaxIncomingDynamicStreams is the maximum value accepted for the incoming number of dynamic streams per connection +const MaxIncomingDynamicStreams = 100 + +// MaxStreamsMultiplier is the slack the client is allowed for the maximum number of streams per connection, needed e.g. when packets are out of order or dropped. The minimum of this procentual increase and the absolute increment specified by MaxStreamsMinimumIncrement is used. +const MaxStreamsMultiplier = 1.1 + +// MaxStreamsMinimumIncrement is the slack the client is allowed for the maximum number of streams per connection, needed e.g. when packets are out of order or dropped. The minimum of this absolute increment and the procentual increase specified by MaxStreamsMultiplier is used. +const MaxStreamsMinimumIncrement = 10 + +// MaxNewStreamIDDelta is the maximum difference between and a newly opened Stream and the highest StreamID that a client has ever opened +// note that the number of streams is half this value, since the client can only open streams with open StreamID +const MaxNewStreamIDDelta = 4 * MaxStreamsPerConnection + +// MaxSessionUnprocessedPackets is the max number of packets stored in each session that are not yet processed. +const MaxSessionUnprocessedPackets = DefaultMaxCongestionWindow + +// RetransmissionThreshold + 1 is the number of times a packet has to be NACKed so that it gets retransmitted +const RetransmissionThreshold = 3 + +// SkipPacketAveragePeriodLength is the average period length in which one packet number is skipped to prevent an Optimistic ACK attack +const SkipPacketAveragePeriodLength PacketNumber = 500 + +// MaxTrackedSkippedPackets is the maximum number of skipped packet numbers the SentPacketHandler keep track of for Optimistic ACK attack mitigation +const MaxTrackedSkippedPackets = 10 + +// STKExpiryTimeSec is the valid time of a source address token in seconds +const STKExpiryTimeSec = 24 * 60 * 60 + +// MaxTrackedSentPackets is maximum number of sent packets saved for either later retransmission or entropy calculation +const MaxTrackedSentPackets = 2 * DefaultMaxCongestionWindow + +// MaxTrackedReceivedPackets is the maximum number of received packets saved for doing the entropy calculations +const MaxTrackedReceivedPackets = 2 * DefaultMaxCongestionWindow + +// MaxTrackedReceivedAckRanges is the maximum number of ACK ranges tracked +const MaxTrackedReceivedAckRanges = DefaultMaxCongestionWindow + +// MaxStreamFrameSorterGaps is the maximum number of gaps between received StreamFrames +// prevents DoS attacks against the streamFrameSorter +const MaxStreamFrameSorterGaps = 1000 + +// CryptoMaxParams is the upper limit for the number of parameters in a crypto message. +// Value taken from Chrome. +const CryptoMaxParams = 128 + +// CryptoParameterMaxLength is the upper limit for the length of a parameter in a crypto message. +const CryptoParameterMaxLength = 2000 + +// EphermalKeyLifetime is the lifetime of the ephermal key during the handshake, see handshake.getEphermalKEX. +const EphermalKeyLifetime = time.Minute + +// InitialIdleTimeout is the timeout before the handshake succeeds. +const InitialIdleTimeout = 5 * time.Second + +// DefaultIdleTimeout is the default idle timeout. +const DefaultIdleTimeout = 30 * time.Second + +// MaxIdleTimeout is the maximum idle timeout that can be negotiated. +const MaxIdleTimeout = 1 * time.Minute + +// MaxTimeForCryptoHandshake is the default timeout for a connection until the crypto handshake succeeds. +const MaxTimeForCryptoHandshake = 10 * time.Second + +// NumCachedCertificates is the number of cached compressed certificate chains, each taking ~1K space +const NumCachedCertificates = 128 diff --git a/vendor/github.com/lucas-clemente/quic-go/protocol/version.go b/vendor/github.com/lucas-clemente/quic-go/protocol/version.go new file mode 100644 index 0000000..cd0cd47 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/protocol/version.go @@ -0,0 +1,67 @@ +package protocol + +import ( + "bytes" + "encoding/binary" + "strconv" +) + +// VersionNumber is a version number as int +type VersionNumber int + +// The version numbers, making grepping easier +const ( + Version34 VersionNumber = 34 + iota + Version35 + Version36 + VersionWhatever = 0 // for when the version doesn't matter +) + +// SupportedVersions lists the versions that the server supports +var SupportedVersions = []VersionNumber{ + Version34, Version35, Version36, +} + +// SupportedVersionsAsTags is needed for the SHLO crypto message +var SupportedVersionsAsTags []byte + +// SupportedVersionsAsString is needed for the Alt-Scv HTTP header +var SupportedVersionsAsString string + +// VersionNumberToTag maps version numbers ('32') to tags ('Q032') +func VersionNumberToTag(vn VersionNumber) uint32 { + v := uint32(vn) + return 'Q' + ((v/100%10)+'0')<<8 + ((v/10%10)+'0')<<16 + ((v%10)+'0')<<24 +} + +// VersionTagToNumber is built from VersionNumberToTag in init() +func VersionTagToNumber(v uint32) VersionNumber { + return VersionNumber(((v>>8)&0xff-'0')*100 + ((v>>16)&0xff-'0')*10 + ((v>>24)&0xff - '0')) +} + +// IsSupportedVersion returns true if the server supports this version +func IsSupportedVersion(v VersionNumber) bool { + for _, t := range SupportedVersions { + if t == v { + return true + } + } + return false +} + +func init() { + var b bytes.Buffer + for _, v := range SupportedVersions { + s := make([]byte, 4) + binary.LittleEndian.PutUint32(s, VersionNumberToTag(v)) + b.Write(s) + } + SupportedVersionsAsTags = b.Bytes() + + for i := len(SupportedVersions) - 1; i >= 0; i-- { + SupportedVersionsAsString += strconv.Itoa(int(SupportedVersions[i])) + if i != 0 { + SupportedVersionsAsString += "," + } + } +} diff --git a/vendor/github.com/lucas-clemente/quic-go/public_header.go b/vendor/github.com/lucas-clemente/quic-go/public_header.go new file mode 100644 index 0000000..684756e --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/public_header.go @@ -0,0 +1,178 @@ +package quic + +import ( + "bytes" + "errors" + "io" + + "github.com/lucas-clemente/quic-go/protocol" + "github.com/lucas-clemente/quic-go/qerr" + "github.com/lucas-clemente/quic-go/utils" +) + +var ( + errPacketNumberLenNotSet = errors.New("PublicHeader: PacketNumberLen not set") + errResetAndVersionFlagSet = errors.New("PublicHeader: Reset Flag and Version Flag should not be set at the same time") + errReceivedTruncatedConnectionID = qerr.Error(qerr.InvalidPacketHeader, "receiving packets with truncated ConnectionID is not supported") + errInvalidConnectionID = qerr.Error(qerr.InvalidPacketHeader, "connection ID cannot be 0") + errGetLengthOnlyForRegularPackets = errors.New("PublicHeader: GetLength can only be called for regular packets") +) + +// The PublicHeader of a QUIC packet +type PublicHeader struct { + Raw []byte + ConnectionID protocol.ConnectionID + VersionFlag bool + ResetFlag bool + TruncateConnectionID bool + PacketNumberLen protocol.PacketNumberLen + PacketNumber protocol.PacketNumber + VersionNumber protocol.VersionNumber + DiversificationNonce []byte +} + +// Write writes a public header +func (h *PublicHeader) Write(b *bytes.Buffer, version protocol.VersionNumber) error { + publicFlagByte := uint8(0x00) + if h.VersionFlag && h.ResetFlag { + return errResetAndVersionFlagSet + } + if h.VersionFlag { + publicFlagByte |= 0x01 + } + if h.ResetFlag { + publicFlagByte |= 0x02 + } + if !h.TruncateConnectionID { + publicFlagByte |= 0x08 + } + + if len(h.DiversificationNonce) > 0 { + if len(h.DiversificationNonce) != 32 { + return errors.New("invalid diversification nonce length") + } + publicFlagByte |= 0x04 + } + + if !h.ResetFlag && !h.VersionFlag { + switch h.PacketNumberLen { + case protocol.PacketNumberLen1: + publicFlagByte |= 0x00 + case protocol.PacketNumberLen2: + publicFlagByte |= 0x10 + case protocol.PacketNumberLen4: + publicFlagByte |= 0x20 + case protocol.PacketNumberLen6: + publicFlagByte |= 0x30 + } + } + + b.WriteByte(publicFlagByte) + + if !h.TruncateConnectionID { + utils.WriteUint64(b, uint64(h.ConnectionID)) + } + + if len(h.DiversificationNonce) > 0 { + b.Write(h.DiversificationNonce) + } + + if !h.ResetFlag && !h.VersionFlag { + switch h.PacketNumberLen { + case protocol.PacketNumberLen1: + b.WriteByte(uint8(h.PacketNumber)) + case protocol.PacketNumberLen2: + utils.WriteUint16(b, uint16(h.PacketNumber)) + case protocol.PacketNumberLen4: + utils.WriteUint32(b, uint32(h.PacketNumber)) + case protocol.PacketNumberLen6: + utils.WriteUint48(b, uint64(h.PacketNumber)) + default: + return errPacketNumberLenNotSet + } + } + + return nil +} + +// ParsePublicHeader parses a QUIC packet's public header +func ParsePublicHeader(b io.ByteReader) (*PublicHeader, error) { + header := &PublicHeader{} + + // First byte + publicFlagByte, err := b.ReadByte() + if err != nil { + return nil, err + } + header.VersionFlag = publicFlagByte&0x01 > 0 + header.ResetFlag = publicFlagByte&0x02 > 0 + + // TODO: activate this check once Chrome sends the correct value + // see https://github.com/lucas-clemente/quic-go/issues/232 + // if publicFlagByte&0x04 > 0 { + // return nil, errors.New("diversification nonces should only be sent by servers") + // } + + if publicFlagByte&0x08 == 0 { + return nil, errReceivedTruncatedConnectionID + } + + switch publicFlagByte & 0x30 { + case 0x30: + header.PacketNumberLen = protocol.PacketNumberLen6 + case 0x20: + header.PacketNumberLen = protocol.PacketNumberLen4 + case 0x10: + header.PacketNumberLen = protocol.PacketNumberLen2 + case 0x00: + header.PacketNumberLen = protocol.PacketNumberLen1 + } + + // Connection ID + connID, err := utils.ReadUint64(b) + if err != nil { + return nil, err + } + header.ConnectionID = protocol.ConnectionID(connID) + if header.ConnectionID == 0 { + return nil, errInvalidConnectionID + } + + // Version (optional) + if header.VersionFlag { + var versionTag uint32 + versionTag, err = utils.ReadUint32(b) + if err != nil { + return nil, err + } + header.VersionNumber = protocol.VersionTagToNumber(versionTag) + } + + // Packet number + packetNumber, err := utils.ReadUintN(b, uint8(header.PacketNumberLen)) + if err != nil { + return nil, err + } + header.PacketNumber = protocol.PacketNumber(packetNumber) + + return header, nil +} + +// GetLength gets the length of the publicHeader in bytes +// can only be called for regular packets +func (h *PublicHeader) GetLength() (protocol.ByteCount, error) { + if h.VersionFlag || h.ResetFlag { + return 0, errGetLengthOnlyForRegularPackets + } + + length := protocol.ByteCount(1) // 1 byte for public flags + if h.PacketNumberLen != protocol.PacketNumberLen1 && h.PacketNumberLen != protocol.PacketNumberLen2 && h.PacketNumberLen != protocol.PacketNumberLen4 && h.PacketNumberLen != protocol.PacketNumberLen6 { + return 0, errPacketNumberLenNotSet + } + if !h.TruncateConnectionID { + length += 8 // 8 bytes for the connection ID + } + length += protocol.ByteCount(len(h.DiversificationNonce)) + length += protocol.ByteCount(h.PacketNumberLen) + return length, nil +} diff --git a/vendor/github.com/lucas-clemente/quic-go/public_reset.go b/vendor/github.com/lucas-clemente/quic-go/public_reset.go new file mode 100644 index 0000000..7cceb2e --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/public_reset.go @@ -0,0 +1,24 @@ +package quic + +import ( + "bytes" + + "github.com/lucas-clemente/quic-go/handshake" + "github.com/lucas-clemente/quic-go/protocol" + "github.com/lucas-clemente/quic-go/utils" +) + +func writePublicReset(connectionID protocol.ConnectionID, rejectedPacketNumber protocol.PacketNumber, nonceProof uint64) []byte { + b := &bytes.Buffer{} + b.WriteByte(0x0a) + utils.WriteUint64(b, uint64(connectionID)) + utils.WriteUint32(b, uint32(handshake.TagPRST)) + utils.WriteUint32(b, 2) + utils.WriteUint32(b, uint32(handshake.TagRNON)) + utils.WriteUint32(b, 8) + utils.WriteUint32(b, uint32(handshake.TagRSEQ)) + utils.WriteUint32(b, 16) + utils.WriteUint64(b, nonceProof) + utils.WriteUint64(b, uint64(rejectedPacketNumber)) + return b.Bytes() +} diff --git a/vendor/github.com/lucas-clemente/quic-go/qerr/error_codes.go b/vendor/github.com/lucas-clemente/quic-go/qerr/error_codes.go new file mode 100644 index 0000000..4797530 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/qerr/error_codes.go @@ -0,0 +1,190 @@ +package qerr + +// The error codes defined by QUIC +// Remember to run `go generate ./...` whenever the error codes change. +//go:generate stringer -type=ErrorCode +const ( + InternalError ErrorCode = 1 + // There were data frames after the a fin or reset. + StreamDataAfterTermination ErrorCode = 2 + // Control frame is malformed. + InvalidPacketHeader ErrorCode = 3 + // Frame data is malformed. + InvalidFrameData ErrorCode = 4 + // The packet contained no payload. + MissingPayload ErrorCode = 48 + // FEC data is malformed. + InvalidFecData ErrorCode = 5 + // STREAM frame data is malformed. + InvalidStreamData ErrorCode = 46 + // STREAM frame data overlaps with buffered data. + OverlappingStreamData ErrorCode = 87 + // Received STREAM frame data is not encrypted. + UnencryptedStreamData ErrorCode = 61 + // Attempt to send unencrypted STREAM frame. + AttemptToSendUnencryptedStreamData ErrorCode = 88 + // FEC frame data is not encrypted. + UnencryptedFecData ErrorCode = 77 + // RST_STREAM frame data is malformed. + InvalidRstStreamData ErrorCode = 6 + // CONNECTION_CLOSE frame data is malformed. + InvalidConnectionCloseData ErrorCode = 7 + // GOAWAY frame data is malformed. + InvalidGoawayData ErrorCode = 8 + // WINDOW_UPDATE frame data is malformed. + InvalidWindowUpdateData ErrorCode = 57 + // BLOCKED frame data is malformed. + InvalidBlockedData ErrorCode = 58 + // STOP_WAITING frame data is malformed. + InvalidStopWaitingData ErrorCode = 60 + // PATH_CLOSE frame data is malformed. + InvalidPathCloseData ErrorCode = 78 + // ACK frame data is malformed. + InvalidAckData ErrorCode = 9 + + // Version negotiation packet is malformed. + InvalidVersionNegotiationPacket ErrorCode = 10 + // Public RST packet is malformed. + InvalidPublicRstPacket ErrorCode = 11 + // There was an error decrypting. + DecryptionFailure ErrorCode = 12 + // There was an error encrypting. + EncryptionFailure ErrorCode = 13 + // The packet exceeded kMaxPacketSize. + PacketTooLarge ErrorCode = 14 + // The peer is going away. May be a client or server. + PeerGoingAway ErrorCode = 16 + // A stream ID was invalid. + InvalidStreamID ErrorCode = 17 + // A priority was invalid. + InvalidPriority ErrorCode = 49 + // Too many streams already open. + TooManyOpenStreams ErrorCode = 18 + // The peer created too many available streams. + TooManyAvailableStreams ErrorCode = 76 + // Received public reset for this connection. + PublicReset ErrorCode = 19 + // Invalid protocol version. + InvalidVersion ErrorCode = 20 + + // The Header ID for a stream was too far from the previous. + InvalidHeaderID ErrorCode = 22 + // Negotiable parameter received during handshake had invalid value. + InvalidNegotiatedValue ErrorCode = 23 + // There was an error decompressing data. + DecompressionFailure ErrorCode = 24 + // The connection timed out due to no network activity. + NetworkIdleTimeout ErrorCode = 25 + // The connection timed out waiting for the handshake to complete. + HandshakeTimeout ErrorCode = 67 + // There was an error encountered migrating addresses. + ErrorMigratingAddress ErrorCode = 26 + // There was an error encountered migrating port only. + ErrorMigratingPort ErrorCode = 86 + // There was an error while writing to the socket. + PacketWriteError ErrorCode = 27 + // There was an error while reading from the socket. + PacketReadError ErrorCode = 51 + // We received a STREAM_FRAME with no data and no fin flag set. + EmptyStreamFrameNoFin ErrorCode = 50 + // We received invalid data on the headers stream. + InvalidHeadersStreamData ErrorCode = 56 + // The peer received too much data, violating flow control. + FlowControlReceivedTooMuchData ErrorCode = 59 + // The peer sent too much data, violating flow control. + FlowControlSentTooMuchData ErrorCode = 63 + // The peer received an invalid flow control window. + FlowControlInvalidWindow ErrorCode = 64 + // The connection has been IP pooled into an existing connection. + ConnectionIPPooled ErrorCode = 62 + // The connection has too many outstanding sent packets. + TooManyOutstandingSentPackets ErrorCode = 68 + // The connection has too many outstanding received packets. + TooManyOutstandingReceivedPackets ErrorCode = 69 + // The quic connection has been cancelled. + ConnectionCancelled ErrorCode = 70 + // Disabled QUIC because of high packet loss rate. + BadPacketLossRate ErrorCode = 71 + // Disabled QUIC because of too many PUBLIC_RESETs post handshake. + PublicResetsPostHandshake ErrorCode = 73 + // Disabled QUIC because of too many timeouts with streams open. + TimeoutsWithOpenStreams ErrorCode = 74 + // Closed because we failed to serialize a packet. + FailedToSerializePacket ErrorCode = 75 + // QUIC timed out after too many RTOs. + TooManyRtos ErrorCode = 85 + + // Crypto errors. + + // Hanshake failed. + HandshakeFailed ErrorCode = 28 + // Handshake message contained out of order tags. + CryptoTagsOutOfOrder ErrorCode = 29 + // Handshake message contained too many entries. + CryptoTooManyEntries ErrorCode = 30 + // Handshake message contained an invalid value length. + CryptoInvalidValueLength ErrorCode = 31 + // A crypto message was received after the handshake was complete. + CryptoMessageAfterHandshakeComplete ErrorCode = 32 + // A crypto message was received with an illegal message tag. + InvalidCryptoMessageType ErrorCode = 33 + // A crypto message was received with an illegal parameter. + InvalidCryptoMessageParameter ErrorCode = 34 + // An invalid channel id signature was supplied. + InvalidChannelIDSignature ErrorCode = 52 + // A crypto message was received with a mandatory parameter missing. + CryptoMessageParameterNotFound ErrorCode = 35 + // A crypto message was received with a parameter that has no overlap + // with the local parameter. + CryptoMessageParameterNoOverlap ErrorCode = 36 + // A crypto message was received that contained a parameter with too few + // values. + CryptoMessageIndexNotFound ErrorCode = 37 + // An internal error occurred in crypto processing. + CryptoInternalError ErrorCode = 38 + // A crypto handshake message specified an unsupported version. + CryptoVersionNotSupported ErrorCode = 39 + // A crypto handshake message resulted in a stateless reject. + CryptoHandshakeStatelessReject ErrorCode = 72 + // There was no intersection between the crypto primitives supported by the + // peer and ourselves. + CryptoNoSupport ErrorCode = 40 + // The server rejected our client hello messages too many times. + CryptoTooManyRejects ErrorCode = 41 + // The client rejected the server's certificate chain or signature. + ProofInvalid ErrorCode = 42 + // A crypto message was received with a duplicate tag. + CryptoDuplicateTag ErrorCode = 43 + // A crypto message was received with the wrong encryption level (i.e. it + // should have been encrypted but was not.) + CryptoEncryptionLevelIncorrect ErrorCode = 44 + // The server config for a server has expired. + CryptoServerConfigExpired ErrorCode = 45 + // We failed to setup the symmetric keys for a connection. + CryptoSymmetricKeySetupFailed ErrorCode = 53 + // A handshake message arrived, but we are still validating the + // previous handshake message. + CryptoMessageWhileValidatingClientHello ErrorCode = 54 + // A server config update arrived before the handshake is complete. + CryptoUpdateBeforeHandshakeComplete ErrorCode = 65 + // This connection involved a version negotiation which appears to have been + // tampered with. + VersionNegotiationMismatch ErrorCode = 55 + + // Multipath is not enabled, but a packet with multipath flag on is received. + BadMultipathFlag ErrorCode = 79 + + // IP address changed causing connection close. + IPAddressChanged ErrorCode = 80 + + // Connection migration errors. + // Network changed, but connection had no migratable streams. + ConnectionMigrationNoMigratableStreams ErrorCode = 81 + // Connection changed networks too many times. + ConnectionMigrationTooManyChanges ErrorCode = 82 + // Connection migration was attempted, but there was no new network to + // migrate to. + ConnectionMigrationNoNewNetwork ErrorCode = 83 + // Network changed, but connection had one or more non-migratable streams. + ConnectionMigrationNonMigratableStream ErrorCode = 84 +) diff --git a/vendor/github.com/lucas-clemente/quic-go/qerr/errorcode_string.go b/vendor/github.com/lucas-clemente/quic-go/qerr/errorcode_string.go new file mode 100644 index 0000000..aadd657 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/qerr/errorcode_string.go @@ -0,0 +1,43 @@ +// Code generated by "stringer -type=ErrorCode"; DO NOT EDIT + +package qerr + +import "fmt" + +const ( + _ErrorCode_name_0 = "InternalErrorStreamDataAfterTerminationInvalidPacketHeaderInvalidFrameDataInvalidFecDataInvalidRstStreamDataInvalidConnectionCloseDataInvalidGoawayDataInvalidAckDataInvalidVersionNegotiationPacketInvalidPublicRstPacketDecryptionFailureEncryptionFailurePacketTooLarge" + _ErrorCode_name_1 = "PeerGoingAwayInvalidStreamIDTooManyOpenStreamsPublicResetInvalidVersion" + _ErrorCode_name_2 = "InvalidHeaderIDInvalidNegotiatedValueDecompressionFailureNetworkIdleTimeoutErrorMigratingAddressPacketWriteErrorHandshakeFailedCryptoTagsOutOfOrderCryptoTooManyEntriesCryptoInvalidValueLengthCryptoMessageAfterHandshakeCompleteInvalidCryptoMessageTypeInvalidCryptoMessageParameterCryptoMessageParameterNotFoundCryptoMessageParameterNoOverlapCryptoMessageIndexNotFoundCryptoInternalErrorCryptoVersionNotSupportedCryptoNoSupportCryptoTooManyRejectsProofInvalidCryptoDuplicateTagCryptoEncryptionLevelIncorrectCryptoServerConfigExpiredInvalidStreamData" + _ErrorCode_name_3 = "MissingPayloadInvalidPriorityEmptyStreamFrameNoFinPacketReadErrorInvalidChannelIDSignatureCryptoSymmetricKeySetupFailedCryptoMessageWhileValidatingClientHelloVersionNegotiationMismatchInvalidHeadersStreamDataInvalidWindowUpdateDataInvalidBlockedDataFlowControlReceivedTooMuchDataInvalidStopWaitingDataUnencryptedStreamDataConnectionIPPooledFlowControlSentTooMuchDataFlowControlInvalidWindowCryptoUpdateBeforeHandshakeComplete" + _ErrorCode_name_4 = "HandshakeTimeoutTooManyOutstandingSentPacketsTooManyOutstandingReceivedPacketsConnectionCancelledBadPacketLossRateCryptoHandshakeStatelessRejectPublicResetsPostHandshakeTimeoutsWithOpenStreamsFailedToSerializePacketTooManyAvailableStreamsUnencryptedFecDataInvalidPathCloseDataBadMultipathFlagIPAddressChangedConnectionMigrationNoMigratableStreamsConnectionMigrationTooManyChangesConnectionMigrationNoNewNetworkConnectionMigrationNonMigratableStreamTooManyRtosErrorMigratingPortOverlappingStreamDataAttemptToSendUnencryptedStreamData" +) + +var ( + _ErrorCode_index_0 = [...]uint16{0, 13, 39, 58, 74, 88, 108, 134, 151, 165, 196, 218, 235, 252, 266} + _ErrorCode_index_1 = [...]uint8{0, 13, 28, 46, 57, 71} + _ErrorCode_index_2 = [...]uint16{0, 15, 37, 57, 75, 96, 112, 127, 147, 167, 191, 226, 250, 279, 309, 340, 366, 385, 410, 425, 445, 457, 475, 505, 530, 547} + _ErrorCode_index_3 = [...]uint16{0, 14, 29, 50, 65, 90, 119, 158, 184, 208, 231, 249, 279, 301, 322, 340, 366, 390, 425} + _ErrorCode_index_4 = [...]uint16{0, 16, 45, 78, 97, 114, 144, 169, 192, 215, 238, 256, 276, 292, 308, 346, 379, 410, 448, 459, 477, 498, 532} +) + +func (i ErrorCode) String() string { + switch { + case 1 <= i && i <= 14: + i-- + return _ErrorCode_name_0[_ErrorCode_index_0[i]:_ErrorCode_index_0[i+1]] + case 16 <= i && i <= 20: + i -= 16 + return _ErrorCode_name_1[_ErrorCode_index_1[i]:_ErrorCode_index_1[i+1]] + case 22 <= i && i <= 46: + i -= 22 + return _ErrorCode_name_2[_ErrorCode_index_2[i]:_ErrorCode_index_2[i+1]] + case 48 <= i && i <= 65: + i -= 48 + return _ErrorCode_name_3[_ErrorCode_index_3[i]:_ErrorCode_index_3[i+1]] + case 67 <= i && i <= 88: + i -= 67 + return _ErrorCode_name_4[_ErrorCode_index_4[i]:_ErrorCode_index_4[i+1]] + default: + return fmt.Sprintf("ErrorCode(%d)", i) + } +} diff --git a/vendor/github.com/lucas-clemente/quic-go/qerr/quic_error.go b/vendor/github.com/lucas-clemente/quic-go/qerr/quic_error.go new file mode 100644 index 0000000..6259476 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/qerr/quic_error.go @@ -0,0 +1,45 @@ +package qerr + +import ( + "fmt" + + "github.com/lucas-clemente/quic-go/utils" +) + +// ErrorCode can be used as a normal error without reason. +type ErrorCode uint32 + +func (e ErrorCode) Error() string { + return e.String() +} + +// A QuicError consists of an error code plus a error reason +type QuicError struct { + ErrorCode ErrorCode + ErrorMessage string +} + +// Error creates a new QuicError instance +func Error(errorCode ErrorCode, errorMessage string) *QuicError { + return &QuicError{ + ErrorCode: errorCode, + ErrorMessage: errorMessage, + } +} + +func (e *QuicError) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode.String(), e.ErrorMessage) +} + +// ToQuicError converts an arbitrary error to a QuicError. It leaves QuicErrors +// unchanged, and properly handles `ErrorCode`s. +func ToQuicError(err error) *QuicError { + switch e := err.(type) { + case *QuicError: + return e + case ErrorCode: + return Error(e, "") + } + utils.Errorf("Internal error: %v", err) + return Error(InternalError, err.Error()) +} diff --git a/vendor/github.com/lucas-clemente/quic-go/server.go b/vendor/github.com/lucas-clemente/quic-go/server.go new file mode 100644 index 0000000..1ddbba6 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/server.go @@ -0,0 +1,205 @@ +package quic + +import ( + "bytes" + "crypto/tls" + "net" + "strings" + "sync" + "time" + + "github.com/lucas-clemente/quic-go/crypto" + "github.com/lucas-clemente/quic-go/handshake" + "github.com/lucas-clemente/quic-go/protocol" + "github.com/lucas-clemente/quic-go/qerr" + "github.com/lucas-clemente/quic-go/utils" +) + +// packetHandler handles packets +type packetHandler interface { + handlePacket(*receivedPacket) + run() + Close(error) error +} + +// A Server of QUIC +type Server struct { + addr *net.UDPAddr + + conn *net.UDPConn + connMutex sync.Mutex + + signer crypto.Signer + scfg *handshake.ServerConfig + + sessions map[protocol.ConnectionID]packetHandler + sessionsMutex sync.RWMutex + + streamCallback StreamCallback + + newSession func(conn connection, v protocol.VersionNumber, connectionID protocol.ConnectionID, sCfg *handshake.ServerConfig, streamCallback StreamCallback, closeCallback closeCallback) (packetHandler, error) +} + +// NewServer makes a new server +func NewServer(addr string, tlsConfig *tls.Config, cb StreamCallback) (*Server, error) { + signer, err := crypto.NewProofSource(tlsConfig) + if err != nil { + return nil, err + } + + kex, err := crypto.NewCurve25519KEX() + if err != nil { + return nil, err + } + scfg, err := handshake.NewServerConfig(kex, signer) + if err != nil { + return nil, err + } + + udpAddr, err := net.ResolveUDPAddr("udp", addr) + if err != nil { + return nil, err + } + + return &Server{ + addr: udpAddr, + signer: signer, + scfg: scfg, + streamCallback: cb, + sessions: map[protocol.ConnectionID]packetHandler{}, + newSession: newSession, + }, nil +} + +// ListenAndServe listens and serves a connection +func (s *Server) ListenAndServe() error { + conn, err := net.ListenUDP("udp", s.addr) + if err != nil { + return err + } + return s.Serve(conn) +} + +// Serve on an existing UDP connection. +func (s *Server) Serve(conn *net.UDPConn) error { + s.connMutex.Lock() + s.conn = conn + s.connMutex.Unlock() + + for { + data := getPacketBuffer() + data = data[:protocol.MaxPacketSize] + n, remoteAddr, err := conn.ReadFromUDP(data) + if err != nil { + if strings.HasSuffix(err.Error(), "use of closed network connection") { + return nil + } + return err + } + data = data[:n] + if err := s.handlePacket(conn, remoteAddr, data); err != nil { + utils.Errorf("error handling packet: %s", err.Error()) + } + } +} + +// Close the server +func (s *Server) Close() error { + s.sessionsMutex.Lock() + for _, session := range s.sessions { + if session != nil { + s.sessionsMutex.Unlock() + _ = session.Close(nil) + s.sessionsMutex.Lock() + } + } + s.sessionsMutex.Unlock() + + s.connMutex.Lock() + conn := s.conn + s.conn = nil + s.connMutex.Unlock() + + if conn == nil { + return nil + } + return conn.Close() +} + +func (s *Server) handlePacket(conn *net.UDPConn, remoteAddr *net.UDPAddr, packet []byte) error { + if protocol.ByteCount(len(packet)) > protocol.MaxPacketSize { + return qerr.PacketTooLarge + } + + rcvTime := time.Now() + + r := bytes.NewReader(packet) + + hdr, err := ParsePublicHeader(r) + if err != nil { + return qerr.Error(qerr.InvalidPacketHeader, err.Error()) + } + hdr.Raw = packet[:len(packet)-r.Len()] + + // Send Version Negotiation Packet if the client is speaking a different protocol version + if hdr.VersionFlag && !protocol.IsSupportedVersion(hdr.VersionNumber) { + utils.Infof("Client offered version %d, sending VersionNegotiationPacket", hdr.VersionNumber) + _, err = conn.WriteToUDP(composeVersionNegotiation(hdr.ConnectionID), remoteAddr) + return err + } + + s.sessionsMutex.RLock() + session, ok := s.sessions[hdr.ConnectionID] + s.sessionsMutex.RUnlock() + + if !ok { + utils.Infof("Serving new connection: %x, version %d from %v", hdr.ConnectionID, hdr.VersionNumber, remoteAddr) + session, err = s.newSession( + &udpConn{conn: conn, currentAddr: remoteAddr}, + hdr.VersionNumber, + hdr.ConnectionID, + s.scfg, + s.streamCallback, + s.closeCallback, + ) + if err != nil { + return err + } + go session.run() + s.sessionsMutex.Lock() + s.sessions[hdr.ConnectionID] = session + s.sessionsMutex.Unlock() + } + if session == nil { + // Late packet for closed session + return nil + } + session.handlePacket(&receivedPacket{ + remoteAddr: remoteAddr, + publicHeader: hdr, + data: packet[len(packet)-r.Len():], + rcvTime: rcvTime, + }) + return nil +} + +func (s *Server) closeCallback(id protocol.ConnectionID) { + s.sessionsMutex.Lock() + s.sessions[id] = nil + s.sessionsMutex.Unlock() +} + +func composeVersionNegotiation(connectionID protocol.ConnectionID) []byte { + fullReply := &bytes.Buffer{} + responsePublicHeader := PublicHeader{ + ConnectionID: connectionID, + PacketNumber: 1, + VersionFlag: true, + } + err := responsePublicHeader.Write(fullReply, protocol.Version35) + if err != nil { + utils.Errorf("error composing version negotiation packet: %s", err.Error()) + } + fullReply.Write(protocol.SupportedVersionsAsTags) + return fullReply.Bytes() +} diff --git a/vendor/github.com/lucas-clemente/quic-go/session.go b/vendor/github.com/lucas-clemente/quic-go/session.go new file mode 100644 index 0000000..2f75299 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/session.go @@ -0,0 +1,673 @@ +package quic + +import ( + "errors" + "fmt" + "net" + "runtime" + "sync/atomic" + "time" + + "github.com/lucas-clemente/quic-go/ackhandler" + "github.com/lucas-clemente/quic-go/flowcontrol" + "github.com/lucas-clemente/quic-go/frames" + "github.com/lucas-clemente/quic-go/handshake" + "github.com/lucas-clemente/quic-go/protocol" + "github.com/lucas-clemente/quic-go/qerr" + "github.com/lucas-clemente/quic-go/utils" +) + +type unpacker interface { + Unpack(publicHeaderBinary []byte, hdr *PublicHeader, data []byte) (*unpackedPacket, error) +} + +type receivedPacket struct { + remoteAddr interface{} + publicHeader *PublicHeader + data []byte + rcvTime time.Time +} + +var ( + errRstStreamOnInvalidStream = errors.New("RST_STREAM received for unknown stream") + errWindowUpdateOnClosedStream = errors.New("WINDOW_UPDATE received for an already closed stream") +) + +// StreamCallback gets a stream frame and returns a reply frame +type StreamCallback func(*Session, utils.Stream) + +// closeCallback is called when a session is closed +type closeCallback func(id protocol.ConnectionID) + +// A Session is a QUIC session +type Session struct { + connectionID protocol.ConnectionID + version protocol.VersionNumber + + streamCallback StreamCallback + closeCallback closeCallback + + conn connection + + streamsMap *streamsMap + + sentPacketHandler ackhandler.SentPacketHandler + receivedPacketHandler ackhandler.ReceivedPacketHandler + streamFramer *streamFramer + + flowControlManager flowcontrol.FlowControlManager + + unpacker unpacker + packer *packetPacker + + cryptoSetup *handshake.CryptoSetup + + receivedPackets chan *receivedPacket + sendingScheduled chan struct{} + // closeChan is used to notify the run loop that it should terminate. + // If the value is not nil, the error is sent as a CONNECTION_CLOSE. + closeChan chan *qerr.QuicError + closed uint32 // atomic bool + + undecryptablePackets []*receivedPacket + aeadChanged chan struct{} + + delayedAckOriginTime time.Time + + connectionParametersManager *handshake.ConnectionParametersManager + + lastRcvdPacketNumber protocol.PacketNumber + // Used to calculate the next packet number from the truncated wire + // representation, and sent back in public reset packets + largestRcvdPacketNumber protocol.PacketNumber + + sessionCreationTime time.Time + lastNetworkActivityTime time.Time + + timer *time.Timer + currentDeadline time.Time + timerRead bool +} + +// newSession makes a new session +func newSession(conn connection, v protocol.VersionNumber, connectionID protocol.ConnectionID, sCfg *handshake.ServerConfig, streamCallback StreamCallback, closeCallback closeCallback) (packetHandler, error) { + connectionParametersManager := handshake.NewConnectionParamatersManager() + flowControlManager := flowcontrol.NewFlowControlManager(connectionParametersManager) + + var sentPacketHandler ackhandler.SentPacketHandler + var receivedPacketHandler ackhandler.ReceivedPacketHandler + + sentPacketHandler = ackhandler.NewSentPacketHandler() + receivedPacketHandler = ackhandler.NewReceivedPacketHandler() + + now := time.Now() + session := &Session{ + conn: conn, + connectionID: connectionID, + version: v, + + streamCallback: streamCallback, + closeCallback: closeCallback, + + connectionParametersManager: connectionParametersManager, + sentPacketHandler: sentPacketHandler, + receivedPacketHandler: receivedPacketHandler, + flowControlManager: flowControlManager, + + receivedPackets: make(chan *receivedPacket, protocol.MaxSessionUnprocessedPackets), + closeChan: make(chan *qerr.QuicError, 1), + sendingScheduled: make(chan struct{}, 1), + undecryptablePackets: make([]*receivedPacket, 0, protocol.MaxUndecryptablePackets), + aeadChanged: make(chan struct{}, 1), + + timer: time.NewTimer(0), + lastNetworkActivityTime: now, + sessionCreationTime: now, + } + + session.streamsMap = newStreamsMap(session.newStream) + + cryptoStream, _ := session.GetOrOpenStream(1) + var err error + session.cryptoSetup, err = handshake.NewCryptoSetup(connectionID, conn.RemoteAddr().IP, v, sCfg, cryptoStream, session.connectionParametersManager, session.aeadChanged) + if err != nil { + return nil, err + } + + session.streamFramer = newStreamFramer(session.streamsMap, flowControlManager) + session.packer = newPacketPacker(connectionID, session.cryptoSetup, session.connectionParametersManager, session.streamFramer, v) + session.unpacker = &packetUnpacker{aead: session.cryptoSetup, version: v} + + return session, err +} + +// run the session main loop +func (s *Session) run() { + // Start the crypto stream handler + go func() { + if err := s.cryptoSetup.HandleCryptoStream(); err != nil { + s.Close(err) + } + }() + + for { + // Close immediately if requested + select { + case errForConnClose := <-s.closeChan: + if errForConnClose != nil { + s.sendConnectionClose(errForConnClose) + } + return + default: + } + + s.maybeResetTimer() + + var err error + select { + case errForConnClose := <-s.closeChan: + if errForConnClose != nil { + s.sendConnectionClose(errForConnClose) + } + return + case <-s.timer.C: + s.timerRead = true + // We do all the interesting stuff after the switch statement, so + // nothing to see here. + case <-s.sendingScheduled: + // We do all the interesting stuff after the switch statement, so + // nothing to see here. + case p := <-s.receivedPackets: + err = s.handlePacketImpl(p) + if qErr, ok := err.(*qerr.QuicError); ok && qErr.ErrorCode == qerr.DecryptionFailure { + s.tryQueueingUndecryptablePacket(p) + continue + } + // This is a bit unclean, but works properly, since the packet always + // begins with the public header and we never copy it. + putPacketBuffer(p.publicHeader.Raw) + if s.delayedAckOriginTime.IsZero() { + s.delayedAckOriginTime = p.rcvTime + } + case <-s.aeadChanged: + s.tryDecryptingQueuedPackets() + } + + if err != nil { + s.Close(err) + } + + if err := s.sendPacket(); err != nil { + s.Close(err) + } + if time.Now().Sub(s.lastNetworkActivityTime) >= s.idleTimeout() { + s.Close(qerr.Error(qerr.NetworkIdleTimeout, "No recent network activity.")) + } + if !s.cryptoSetup.HandshakeComplete() && time.Now().Sub(s.sessionCreationTime) >= protocol.MaxTimeForCryptoHandshake { + s.Close(qerr.Error(qerr.NetworkIdleTimeout, "Crypto handshake did not complete in time.")) + } + s.garbageCollectStreams() + } +} + +func (s *Session) maybeResetTimer() { + nextDeadline := s.lastNetworkActivityTime.Add(s.idleTimeout()) + + if !s.delayedAckOriginTime.IsZero() { + nextDeadline = utils.MinTime(nextDeadline, s.delayedAckOriginTime.Add(protocol.AckSendDelay)) + } + if rtoTime := s.sentPacketHandler.TimeOfFirstRTO(); !rtoTime.IsZero() { + nextDeadline = utils.MinTime(nextDeadline, rtoTime) + } + if !s.cryptoSetup.HandshakeComplete() { + handshakeDeadline := s.sessionCreationTime.Add(protocol.MaxTimeForCryptoHandshake) + nextDeadline = utils.MinTime(nextDeadline, handshakeDeadline) + } + + if nextDeadline.Equal(s.currentDeadline) { + // No need to reset the timer + return + } + + // We need to drain the timer if the value from its channel was not read yet. + // See https://groups.google.com/forum/#!topic/golang-dev/c9UUfASVPoU + if !s.timer.Stop() && !s.timerRead { + <-s.timer.C + } + s.timer.Reset(nextDeadline.Sub(time.Now())) + + s.timerRead = false + s.currentDeadline = nextDeadline +} + +func (s *Session) idleTimeout() time.Duration { + if s.cryptoSetup.HandshakeComplete() { + return s.connectionParametersManager.GetIdleConnectionStateLifetime() + } + return protocol.InitialIdleTimeout +} + +func (s *Session) handlePacketImpl(p *receivedPacket) error { + if p.rcvTime.IsZero() { + // To simplify testing + p.rcvTime = time.Now() + } + + s.lastNetworkActivityTime = p.rcvTime + hdr := p.publicHeader + data := p.data + + // Calculate packet number + hdr.PacketNumber = protocol.InferPacketNumber( + hdr.PacketNumberLen, + s.largestRcvdPacketNumber, + hdr.PacketNumber, + ) + if utils.Debug() { + utils.Debugf("<- Reading packet 0x%x (%d bytes) for connection %x", hdr.PacketNumber, len(data)+len(hdr.Raw), hdr.ConnectionID) + } + + // TODO: Only do this after authenticating + s.conn.setCurrentRemoteAddr(p.remoteAddr) + + packet, err := s.unpacker.Unpack(hdr.Raw, hdr, data) + if err != nil { + return err + } + + s.lastRcvdPacketNumber = hdr.PacketNumber + // Only do this after decrypting, so we are sure the packet is not attacker-controlled + s.largestRcvdPacketNumber = utils.MaxPacketNumber(s.largestRcvdPacketNumber, hdr.PacketNumber) + + err = s.receivedPacketHandler.ReceivedPacket(hdr.PacketNumber) + // ignore duplicate packets + if err == ackhandler.ErrDuplicatePacket { + utils.Infof("Ignoring packet 0x%x due to ErrDuplicatePacket", hdr.PacketNumber) + return nil + } + // ignore packets with packet numbers smaller than the LeastUnacked of a StopWaiting + if err == ackhandler.ErrPacketSmallerThanLastStopWaiting { + utils.Infof("Ignoring packet 0x%x due to ErrPacketSmallerThanLastStopWaiting", hdr.PacketNumber) + return nil + } + + if err != nil { + return err + } + + return s.handleFrames(packet.frames) +} + +func (s *Session) handleFrames(fs []frames.Frame) error { + for _, ff := range fs { + var err error + frames.LogFrame(ff, false) + switch frame := ff.(type) { + case *frames.StreamFrame: + err = s.handleStreamFrame(frame) + // TODO: send RstStreamFrame + case *frames.AckFrame: + err = s.handleAckFrame(frame) + case *frames.ConnectionCloseFrame: + s.closeImpl(qerr.Error(frame.ErrorCode, frame.ReasonPhrase), true) + case *frames.GoawayFrame: + err = errors.New("unimplemented: handling GOAWAY frames") + case *frames.StopWaitingFrame: + err = s.receivedPacketHandler.ReceivedStopWaiting(frame) + case *frames.RstStreamFrame: + err = s.handleRstStreamFrame(frame) + case *frames.WindowUpdateFrame: + err = s.handleWindowUpdateFrame(frame) + case *frames.BlockedFrame: + case *frames.PingFrame: + default: + return errors.New("Session BUG: unexpected frame type") + } + + if err != nil { + switch err { + case ackhandler.ErrDuplicateOrOutOfOrderAck: + // Can happen e.g. when packets thought missing arrive late + case errRstStreamOnInvalidStream: + // Can happen when RST_STREAMs arrive early or late (?) + utils.Errorf("Ignoring error in session: %s", err.Error()) + case errWindowUpdateOnClosedStream: + // Can happen when we already sent the last StreamFrame with the FinBit, but the client already sent a WindowUpdate for this Stream + default: + return err + } + } + } + return nil +} + +// handlePacket is called by the server with a new packet +func (s *Session) handlePacket(p *receivedPacket) { + // Discard packets once the amount of queued packets is larger than + // the channel size, protocol.MaxSessionUnprocessedPackets + select { + case s.receivedPackets <- p: + default: + } +} + +func (s *Session) handleStreamFrame(frame *frames.StreamFrame) error { + str, err := s.streamsMap.GetOrOpenStream(frame.StreamID) + if err != nil { + return err + } + if str == nil { + // Stream is closed, ignore + return nil + } + err = str.AddStreamFrame(frame) + if err != nil { + return err + } + return nil +} + +func (s *Session) handleWindowUpdateFrame(frame *frames.WindowUpdateFrame) error { + if frame.StreamID != 0 { + str, err := s.streamsMap.GetOrOpenStream(frame.StreamID) + if err != nil { + return err + } + if str == nil { + return errWindowUpdateOnClosedStream + } + } + _, err := s.flowControlManager.UpdateWindow(frame.StreamID, frame.ByteOffset) + return err +} + +// TODO: Handle frame.byteOffset +func (s *Session) handleRstStreamFrame(frame *frames.RstStreamFrame) error { + str, err := s.streamsMap.GetOrOpenStream(frame.StreamID) + if err != nil { + return err + } + if str == nil { + return errRstStreamOnInvalidStream + } + s.closeStreamWithError(str, fmt.Errorf("RST_STREAM received with code %d", frame.ErrorCode)) + return nil +} + +func (s *Session) handleAckFrame(frame *frames.AckFrame) error { + if err := s.sentPacketHandler.ReceivedAck(frame, s.lastRcvdPacketNumber, s.lastNetworkActivityTime); err != nil { + return err + } + return nil +} + +// Close the connection. If err is nil it will be set to qerr.PeerGoingAway. +func (s *Session) Close(e error) error { + return s.closeImpl(e, false) +} + +func (s *Session) closeImpl(e error, remoteClose bool) error { + // Only close once + if !atomic.CompareAndSwapUint32(&s.closed, 0, 1) { + return nil + } + + if e == nil { + e = qerr.PeerGoingAway + } + + quicErr := qerr.ToQuicError(e) + + // Don't log 'normal' reasons + if quicErr.ErrorCode == qerr.PeerGoingAway || quicErr.ErrorCode == qerr.NetworkIdleTimeout { + utils.Infof("Closing connection %x", s.connectionID) + } else { + utils.Errorf("Closing session with error: %s", e.Error()) + } + + s.closeStreamsWithError(quicErr) + s.closeCallback(s.connectionID) + + if remoteClose { + // If this is a remote close we don't need to send a CONNECTION_CLOSE + s.closeChan <- nil + return nil + } + + if quicErr.ErrorCode == qerr.DecryptionFailure { + // If we send a public reset, don't send a CONNECTION_CLOSE + s.closeChan <- nil + return s.sendPublicReset(s.lastRcvdPacketNumber) + } + s.closeChan <- quicErr + return nil +} + +func (s *Session) closeStreamsWithError(err error) { + s.streamsMap.Iterate(func(str *stream) (bool, error) { + s.closeStreamWithError(str, err) + return true, nil + }) +} + +func (s *Session) closeStreamWithError(str *stream, err error) { + str.RegisterError(err) +} + +func (s *Session) sendPacket() error { + // Repeatedly try sending until we don't have any more data, or run out of the congestion window + for { + err := s.sentPacketHandler.CheckForError() + if err != nil { + return err + } + + // Do this before checking the congestion, since we might de-congestionize here :) + s.sentPacketHandler.MaybeQueueRTOs() + + if !s.sentPacketHandler.SendingAllowed() { + return nil + } + + var controlFrames []frames.Frame + + // check for retransmissions first + for { + retransmitPacket := s.sentPacketHandler.DequeuePacketForRetransmission() + if retransmitPacket == nil { + break + } + utils.Debugf("\tDequeueing retransmission for packet 0x%x", retransmitPacket.PacketNumber) + + // resend the frames that were in the packet + controlFrames = append(controlFrames, retransmitPacket.GetControlFramesForRetransmission()...) + for _, streamFrame := range retransmitPacket.GetStreamFramesForRetransmission() { + s.streamFramer.AddFrameForRetransmission(streamFrame) + } + } + + windowUpdateFrames, err := s.getWindowUpdateFrames() + if err != nil { + return err + } + + for _, wuf := range windowUpdateFrames { + controlFrames = append(controlFrames, wuf) + } + + ack, err := s.receivedPacketHandler.GetAckFrame(false) + if err != nil { + return err + } + if ack != nil { + controlFrames = append(controlFrames, ack) + } + + // Check whether we are allowed to send a packet containing only an ACK + maySendOnlyAck := time.Now().Sub(s.delayedAckOriginTime) > protocol.AckSendDelay + if runtime.GOOS == "windows" { + maySendOnlyAck = true + } + + hasRetransmission := s.streamFramer.HasFramesForRetransmission() + + var stopWaitingFrame *frames.StopWaitingFrame + if ack != nil || hasRetransmission { + stopWaitingFrame = s.sentPacketHandler.GetStopWaitingFrame(hasRetransmission) + } + packet, err := s.packer.PackPacket(stopWaitingFrame, controlFrames, s.sentPacketHandler.GetLeastUnacked(), maySendOnlyAck) + if err != nil { + return err + } + if packet == nil { + return nil + } + + // Pop the ACK frame now that we are sure we're gonna send it + _, err = s.receivedPacketHandler.GetAckFrame(true) + if err != nil { + return err + } + + for _, f := range windowUpdateFrames { + s.packer.QueueControlFrameForNextPacket(f) + } + + err = s.sentPacketHandler.SentPacket(&ackhandler.Packet{ + PacketNumber: packet.number, + Frames: packet.frames, + Length: protocol.ByteCount(len(packet.raw)), + }) + if err != nil { + return err + } + + s.logPacket(packet) + s.delayedAckOriginTime = time.Time{} + + err = s.conn.write(packet.raw) + putPacketBuffer(packet.raw) + if err != nil { + return err + } + } +} + +func (s *Session) sendConnectionClose(quicErr *qerr.QuicError) error { + packet, err := s.packer.PackConnectionClose(&frames.ConnectionCloseFrame{ErrorCode: quicErr.ErrorCode, ReasonPhrase: quicErr.ErrorMessage}, s.sentPacketHandler.GetLeastUnacked()) + if err != nil { + return err + } + if packet == nil { + return errors.New("Session BUG: expected packet not to be nil") + } + s.logPacket(packet) + return s.conn.write(packet.raw) +} + +func (s *Session) logPacket(packet *packedPacket) { + if !utils.Debug() { + // We don't need to allocate the slices for calling the format functions + return + } + if utils.Debug() { + utils.Debugf("-> Sending packet 0x%x (%d bytes)", packet.number, len(packet.raw)) + for _, frame := range packet.frames { + frames.LogFrame(frame, true) + } + } +} + +// GetOrOpenStream either returns an existing stream, a newly opened stream, or nil if a stream with the provided ID is already closed. +// Newly opened streams should only originate from the client. To open a stream from the server, OpenStream should be used. +func (s *Session) GetOrOpenStream(id protocol.StreamID) (utils.Stream, error) { + return s.streamsMap.GetOrOpenStream(id) +} + +// OpenStream opens a stream from the server's side +func (s *Session) OpenStream(id protocol.StreamID) (utils.Stream, error) { + return s.streamsMap.OpenStream(id) +} + +func (s *Session) newStreamImpl(id protocol.StreamID) (*stream, error) { + return s.streamsMap.GetOrOpenStream(id) +} + +func (s *Session) newStream(id protocol.StreamID) (*stream, error) { + stream, err := newStream(id, s.scheduleSending, s.flowControlManager) + if err != nil { + return nil, err + } + + // TODO: find a better solution for determining which streams contribute to connection level flow control + if id == 1 || id == 3 { + s.flowControlManager.NewStream(id, false) + } else { + s.flowControlManager.NewStream(id, true) + } + + s.streamCallback(s, stream) + + return stream, nil +} + +// garbageCollectStreams goes through all streams and removes EOF'ed streams +// from the streams map. +func (s *Session) garbageCollectStreams() { + s.streamsMap.Iterate(func(str *stream) (bool, error) { + id := str.StreamID() + if str.finished() { + err := s.streamsMap.RemoveStream(id) + if err != nil { + return false, err + } + s.flowControlManager.RemoveStream(id) + } + return true, nil + }) +} + +func (s *Session) sendPublicReset(rejectedPacketNumber protocol.PacketNumber) error { + utils.Infof("Sending public reset for connection %x, packet number %d", s.connectionID, rejectedPacketNumber) + return s.conn.write(writePublicReset(s.connectionID, rejectedPacketNumber, 0)) +} + +// scheduleSending signals that we have data for sending +func (s *Session) scheduleSending() { + select { + case s.sendingScheduled <- struct{}{}: + default: + } +} + +func (s *Session) tryQueueingUndecryptablePacket(p *receivedPacket) { + if s.cryptoSetup.HandshakeComplete() { + return + } + utils.Infof("Queueing packet 0x%x for later decryption", p.publicHeader.PacketNumber) + if len(s.undecryptablePackets)+1 >= protocol.MaxUndecryptablePackets { + s.Close(qerr.Error(qerr.DecryptionFailure, "too many undecryptable packets received")) + } + s.undecryptablePackets = append(s.undecryptablePackets, p) +} + +func (s *Session) tryDecryptingQueuedPackets() { + for _, p := range s.undecryptablePackets { + s.handlePacket(p) + } + s.undecryptablePackets = s.undecryptablePackets[:0] +} + +func (s *Session) getWindowUpdateFrames() ([]*frames.WindowUpdateFrame, error) { + updates := s.flowControlManager.GetWindowUpdates() + res := make([]*frames.WindowUpdateFrame, len(updates)) + for i, u := range updates { + res[i] = &frames.WindowUpdateFrame{StreamID: u.StreamID, ByteOffset: u.Offset} + } + return res, nil +} + +// RemoteAddr returns the net.UDPAddr of the client +func (s *Session) RemoteAddr() *net.UDPAddr { + return s.conn.RemoteAddr() +} diff --git a/vendor/github.com/lucas-clemente/quic-go/stream.go b/vendor/github.com/lucas-clemente/quic-go/stream.go new file mode 100644 index 0000000..fc73b1e --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/stream.go @@ -0,0 +1,267 @@ +package quic + +import ( + "fmt" + "io" + "sync" + "sync/atomic" + + "github.com/lucas-clemente/quic-go/flowcontrol" + "github.com/lucas-clemente/quic-go/frames" + "github.com/lucas-clemente/quic-go/protocol" + "github.com/lucas-clemente/quic-go/qerr" + "github.com/lucas-clemente/quic-go/utils" +) + +// A Stream assembles the data from StreamFrames and provides a super-convenient Read-Interface +// +// Read() and Write() may be called concurrently, but multiple calls to Read() or Write() individually must be synchronized manually. +type stream struct { + streamID protocol.StreamID + onData func() + + readPosInFrame int + writeOffset protocol.ByteCount + readOffset protocol.ByteCount + + // Once set, err must not be changed! + err error + mutex sync.Mutex + + // eof is set if we are finished reading + eof int32 // really a bool + // closed is set when we are finished writing + closed int32 // really a bool + + frameQueue *streamFrameSorter + newFrameOrErrCond sync.Cond + + dataForWriting []byte + finSent bool + doneWritingOrErrCond sync.Cond + + flowControlManager flowcontrol.FlowControlManager +} + +// newStream creates a new Stream +func newStream(StreamID protocol.StreamID, onData func(), flowControlManager flowcontrol.FlowControlManager) (*stream, error) { + s := &stream{ + onData: onData, + streamID: StreamID, + flowControlManager: flowControlManager, + frameQueue: newStreamFrameSorter(), + } + + s.newFrameOrErrCond.L = &s.mutex + s.doneWritingOrErrCond.L = &s.mutex + + return s, nil +} + +// Read implements io.Reader. It is not thread safe! +func (s *stream) Read(p []byte) (int, error) { + if atomic.LoadInt32(&s.eof) != 0 { + return 0, io.EOF + } + + bytesRead := 0 + for bytesRead < len(p) { + s.mutex.Lock() + frame := s.frameQueue.Head() + + if frame == nil && bytesRead > 0 { + s.mutex.Unlock() + return bytesRead, s.err + } + + var err error + for { + // Stop waiting on errors + if s.err != nil { + err = s.err + break + } + if frame != nil { + s.readPosInFrame = int(s.readOffset - frame.Offset) + break + } + s.newFrameOrErrCond.Wait() + frame = s.frameQueue.Head() + } + s.mutex.Unlock() + // Here, either frame != nil xor err != nil + + if frame == nil { + atomic.StoreInt32(&s.eof, 1) + // We have an err and no data, return the error + return bytesRead, err + } + + m := utils.Min(len(p)-bytesRead, int(frame.DataLen())-s.readPosInFrame) + + if bytesRead > len(p) { + return bytesRead, fmt.Errorf("BUG: bytesRead (%d) > len(p) (%d) in stream.Read", bytesRead, len(p)) + } + if s.readPosInFrame > int(frame.DataLen()) { + return bytesRead, fmt.Errorf("BUG: readPosInFrame (%d) > frame.DataLen (%d) in stream.Read", s.readPosInFrame, frame.DataLen()) + } + copy(p[bytesRead:], frame.Data[s.readPosInFrame:]) + + s.readPosInFrame += m + bytesRead += m + s.readOffset += protocol.ByteCount(m) + + s.flowControlManager.AddBytesRead(s.streamID, protocol.ByteCount(m)) + s.onData() // so that a possible WINDOW_UPDATE is sent + + if s.readPosInFrame >= int(frame.DataLen()) { + fin := frame.FinBit + s.mutex.Lock() + s.frameQueue.Pop() + s.mutex.Unlock() + if fin { + atomic.StoreInt32(&s.eof, 1) + return bytesRead, io.EOF + } + } + } + + return bytesRead, nil +} + +func (s *stream) Write(p []byte) (int, error) { + s.mutex.Lock() + defer s.mutex.Unlock() + + if s.err != nil { + return 0, s.err + } + + if len(p) == 0 { + return 0, nil + } + + s.dataForWriting = make([]byte, len(p)) + copy(s.dataForWriting, p) + + s.onData() + + for s.dataForWriting != nil && s.err == nil { + s.doneWritingOrErrCond.Wait() + } + + if s.err != nil { + return 0, s.err + } + + return len(p), nil +} + +func (s *stream) lenOfDataForWriting() protocol.ByteCount { + s.mutex.Lock() + l := protocol.ByteCount(len(s.dataForWriting)) + s.mutex.Unlock() + return l +} + +func (s *stream) getDataForWriting(maxBytes protocol.ByteCount) []byte { + s.mutex.Lock() + if s.dataForWriting == nil { + s.mutex.Unlock() + return nil + } + var ret []byte + if protocol.ByteCount(len(s.dataForWriting)) > maxBytes { + ret = s.dataForWriting[:maxBytes] + s.dataForWriting = s.dataForWriting[maxBytes:] + } else { + ret = s.dataForWriting + s.dataForWriting = nil + s.doneWritingOrErrCond.Signal() + } + s.writeOffset += protocol.ByteCount(len(ret)) + s.mutex.Unlock() + return ret +} + +// Close implements io.Closer +func (s *stream) Close() error { + atomic.StoreInt32(&s.closed, 1) + s.onData() + return nil +} + +func (s *stream) shouldSendFin() bool { + s.mutex.Lock() + res := atomic.LoadInt32(&s.closed) != 0 && !s.finSent && s.err == nil && s.dataForWriting == nil + s.mutex.Unlock() + return res +} + +func (s *stream) sentFin() { + s.mutex.Lock() + s.finSent = true + s.mutex.Unlock() +} + +// AddStreamFrame adds a new stream frame +func (s *stream) AddStreamFrame(frame *frames.StreamFrame) error { + maxOffset := frame.Offset + frame.DataLen() + err := s.flowControlManager.UpdateHighestReceived(s.streamID, maxOffset) + + if err == flowcontrol.ErrStreamFlowControlViolation { + return qerr.FlowControlReceivedTooMuchData + } + if err == flowcontrol.ErrConnectionFlowControlViolation { + return qerr.FlowControlReceivedTooMuchData + } + if err != nil { + return err + } + + s.mutex.Lock() + defer s.mutex.Unlock() + err = s.frameQueue.Push(frame) + if err != nil && err != errDuplicateStreamData { + return err + } + s.newFrameOrErrCond.Signal() + return nil +} + +// CloseRemote makes the stream receive a "virtual" FIN stream frame at a given offset +func (s *stream) CloseRemote(offset protocol.ByteCount) { + s.AddStreamFrame(&frames.StreamFrame{FinBit: true, Offset: offset}) +} + +// RegisterError is called by session to indicate that an error occurred and the +// stream should be closed. +func (s *stream) RegisterError(err error) { + atomic.StoreInt32(&s.closed, 1) + s.mutex.Lock() + defer s.mutex.Unlock() + if s.err != nil { // s.err must not be changed! + return + } + s.err = err + s.doneWritingOrErrCond.Signal() + s.newFrameOrErrCond.Signal() +} + +func (s *stream) finishedReading() bool { + return atomic.LoadInt32(&s.eof) != 0 +} + +func (s *stream) finishedWriting() bool { + s.mutex.Lock() + defer s.mutex.Unlock() + return s.err != nil || (atomic.LoadInt32(&s.closed) != 0 && s.finSent) +} + +func (s *stream) finished() bool { + return s.finishedReading() && s.finishedWriting() +} + +func (s *stream) StreamID() protocol.StreamID { + return s.streamID +} diff --git a/vendor/github.com/lucas-clemente/quic-go/stream_frame_sorter.go b/vendor/github.com/lucas-clemente/quic-go/stream_frame_sorter.go new file mode 100644 index 0000000..7a95f1f --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/stream_frame_sorter.go @@ -0,0 +1,119 @@ +package quic + +import ( + "errors" + + "github.com/lucas-clemente/quic-go/frames" + "github.com/lucas-clemente/quic-go/protocol" + "github.com/lucas-clemente/quic-go/qerr" + "github.com/lucas-clemente/quic-go/utils" +) + +type streamFrameSorter struct { + queuedFrames map[protocol.ByteCount]*frames.StreamFrame + readPosition protocol.ByteCount + gaps *utils.ByteIntervalList +} + +var ( + errTooManyGapsInReceivedStreamData = errors.New("Too many gaps in received StreamFrame data") + errDuplicateStreamData = errors.New("Overlapping Stream Data") + errEmptyStreamData = errors.New("Stream Data empty") +) + +func newStreamFrameSorter() *streamFrameSorter { + s := streamFrameSorter{ + gaps: utils.NewByteIntervalList(), + queuedFrames: make(map[protocol.ByteCount]*frames.StreamFrame), + } + s.gaps.PushFront(utils.ByteInterval{Start: 0, End: protocol.MaxByteCount}) + return &s +} + +func (s *streamFrameSorter) Push(frame *frames.StreamFrame) error { + _, ok := s.queuedFrames[frame.Offset] + if ok { + return errDuplicateStreamData + } + + start := frame.Offset + end := frame.Offset + frame.DataLen() + + if start == end { + if frame.FinBit { + s.queuedFrames[frame.Offset] = frame + return nil + } + return errEmptyStreamData + } + + var foundInGap bool + + for gap := s.gaps.Front(); gap != nil; gap = gap.Next() { + // the complete frame lies before or after the gap + if end <= gap.Value.Start || start > gap.Value.End { + continue + } + + if start < gap.Value.Start { + return qerr.Error(qerr.OverlappingStreamData, "start of gap in stream chunk") + } + + if start < gap.Value.End && end > gap.Value.End { + return qerr.Error(qerr.OverlappingStreamData, "end of gap in stream chunk") + } + + foundInGap = true + + if start == gap.Value.Start { + if end == gap.Value.End { + s.gaps.Remove(gap) + break + } + if end < gap.Value.End { + gap.Value.Start = end + break + } + } + + if end == gap.Value.End { + gap.Value.End = start + break + } + + if end < gap.Value.End { + intv := utils.ByteInterval{Start: end, End: gap.Value.End} + s.gaps.InsertAfter(intv, gap) + gap.Value.End = start + break + } + } + + if !foundInGap { + return errDuplicateStreamData + } + + if s.gaps.Len() > protocol.MaxStreamFrameSorterGaps { + return errTooManyGapsInReceivedStreamData + } + + s.queuedFrames[frame.Offset] = frame + return nil +} + +func (s *streamFrameSorter) Pop() *frames.StreamFrame { + frame := s.Head() + if frame != nil { + s.readPosition += frame.DataLen() + delete(s.queuedFrames, frame.Offset) + } + return frame +} + +func (s *streamFrameSorter) Head() *frames.StreamFrame { + frame, ok := s.queuedFrames[s.readPosition] + if ok { + return frame + } + return nil +} diff --git a/vendor/github.com/lucas-clemente/quic-go/stream_framer.go b/vendor/github.com/lucas-clemente/quic-go/stream_framer.go new file mode 100644 index 0000000..45c0722 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/stream_framer.go @@ -0,0 +1,161 @@ +package quic + +import ( + "github.com/lucas-clemente/quic-go/flowcontrol" + "github.com/lucas-clemente/quic-go/frames" + "github.com/lucas-clemente/quic-go/protocol" + "github.com/lucas-clemente/quic-go/utils" +) + +type streamFramer struct { + streamsMap *streamsMap + + flowControlManager flowcontrol.FlowControlManager + + retransmissionQueue []*frames.StreamFrame + blockedFrameQueue []*frames.BlockedFrame +} + +func newStreamFramer(streamsMap *streamsMap, flowControlManager flowcontrol.FlowControlManager) *streamFramer { + return &streamFramer{ + streamsMap: streamsMap, + flowControlManager: flowControlManager, + } +} + +func (f *streamFramer) AddFrameForRetransmission(frame *frames.StreamFrame) { + f.retransmissionQueue = append(f.retransmissionQueue, frame) +} + +func (f *streamFramer) PopStreamFrames(maxLen protocol.ByteCount) []*frames.StreamFrame { + fs, currentLen := f.maybePopFramesForRetransmission(maxLen) + return append(fs, f.maybePopNormalFrames(maxLen-currentLen)...) +} + +func (f *streamFramer) PopBlockedFrame() *frames.BlockedFrame { + if len(f.blockedFrameQueue) == 0 { + return nil + } + frame := f.blockedFrameQueue[0] + f.blockedFrameQueue = f.blockedFrameQueue[1:] + return frame +} + +func (f *streamFramer) HasFramesForRetransmission() bool { + return len(f.retransmissionQueue) > 0 +} + +func (f *streamFramer) maybePopFramesForRetransmission(maxLen protocol.ByteCount) (res []*frames.StreamFrame, currentLen protocol.ByteCount) { + for len(f.retransmissionQueue) > 0 { + frame := f.retransmissionQueue[0] + frame.DataLenPresent = true + + frameHeaderLen, _ := frame.MinLength(protocol.VersionWhatever) // can never error + if currentLen+frameHeaderLen >= maxLen { + break + } + + currentLen += frameHeaderLen + + splitFrame := maybeSplitOffFrame(frame, maxLen-currentLen) + if splitFrame != nil { // StreamFrame was split + res = append(res, splitFrame) + currentLen += splitFrame.DataLen() + break + } + + f.retransmissionQueue = f.retransmissionQueue[1:] + res = append(res, frame) + currentLen += frame.DataLen() + } + return +} + +func (f *streamFramer) maybePopNormalFrames(maxBytes protocol.ByteCount) (res []*frames.StreamFrame) { + frame := &frames.StreamFrame{DataLenPresent: true} + var currentLen protocol.ByteCount + + fn := func(s *stream) (bool, error) { + if s == nil { + return true, nil + } + + frame.StreamID = s.streamID + // not perfect, but thread-safe since writeOffset is only written when getting data + frame.Offset = s.writeOffset + frameHeaderBytes, _ := frame.MinLength(protocol.VersionWhatever) // can never error + if currentLen+frameHeaderBytes > maxBytes { + return false, nil // theoretically, we could find another stream that fits, but this is quite unlikely, so we stop here + } + maxLen := maxBytes - currentLen - frameHeaderBytes + + var sendWindowSize protocol.ByteCount + if s.lenOfDataForWriting() != 0 { + sendWindowSize, _ = f.flowControlManager.SendWindowSize(s.streamID) + maxLen = utils.MinByteCount(maxLen, sendWindowSize) + } + + if maxLen == 0 { + return true, nil + } + + data := s.getDataForWriting(maxLen) + + // This is unlikely, but check it nonetheless, the scheduler might have jumped in. Seems to happen in ~20% of cases in the tests. + shouldSendFin := s.shouldSendFin() + if data == nil && !shouldSendFin { + return true, nil + } + + if shouldSendFin { + frame.FinBit = true + s.sentFin() + } + + frame.Data = data + f.flowControlManager.AddBytesSent(s.streamID, protocol.ByteCount(len(data))) + + // Finally, check if we are now FC blocked and should queue a BLOCKED frame + if f.flowControlManager.RemainingConnectionWindowSize() == 0 { + // We are now connection-level FC blocked + f.blockedFrameQueue = append(f.blockedFrameQueue, &frames.BlockedFrame{StreamID: 0}) + } else if !frame.FinBit && sendWindowSize-frame.DataLen() == 0 { + // We are now stream-level FC blocked + f.blockedFrameQueue = append(f.blockedFrameQueue, &frames.BlockedFrame{StreamID: s.StreamID()}) + } + + res = append(res, frame) + currentLen += frameHeaderBytes + frame.DataLen() + + if currentLen == maxBytes { + return false, nil + } + + frame = &frames.StreamFrame{DataLenPresent: true} + return true, nil + } + + f.streamsMap.RoundRobinIterate(fn) + + return +} + +// maybeSplitOffFrame removes the first n bytes and returns them as a separate frame. If n >= len(frame), nil is returned and nothing is modified. +func maybeSplitOffFrame(frame *frames.StreamFrame, n protocol.ByteCount) *frames.StreamFrame { + if n >= frame.DataLen() { + return nil + } + + defer func() { + frame.Data = frame.Data[n:] + frame.Offset += n + }() + + return &frames.StreamFrame{ + FinBit: false, + StreamID: frame.StreamID, + Offset: frame.Offset, + Data: frame.Data[:n], + DataLenPresent: frame.DataLenPresent, + } +} diff --git a/vendor/github.com/lucas-clemente/quic-go/streams_map.go b/vendor/github.com/lucas-clemente/quic-go/streams_map.go new file mode 100644 index 0000000..8b41b86 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/streams_map.go @@ -0,0 +1,219 @@ +package quic + +import ( + "errors" + "fmt" + "sync" + + "github.com/lucas-clemente/quic-go/protocol" + "github.com/lucas-clemente/quic-go/qerr" + "github.com/lucas-clemente/quic-go/utils" +) + +type streamsMap struct { + mutex sync.RWMutex + + streams map[protocol.StreamID]*stream + openStreams []protocol.StreamID + + highestStreamOpenedByClient protocol.StreamID + streamsOpenedAfterLastGarbageCollect int + + newStream newStreamLambda + maxNumStreams int + + roundRobinIndex int +} + +type streamLambda func(*stream) (bool, error) +type newStreamLambda func(protocol.StreamID) (*stream, error) + +var ( + errMapAccess = errors.New("streamsMap: Error accessing the streams map") +) + +func newStreamsMap(newStream newStreamLambda) *streamsMap { + maxNumStreams := utils.Max(int(float32(protocol.MaxIncomingDynamicStreams)*protocol.MaxStreamsMultiplier), int(protocol.MaxIncomingDynamicStreams)) + + return &streamsMap{ + streams: map[protocol.StreamID]*stream{}, + openStreams: make([]protocol.StreamID, 0, maxNumStreams), + newStream: newStream, + maxNumStreams: maxNumStreams, + } +} + +// GetOrOpenStream either returns an existing stream, a newly opened stream, or nil if a stream with the provided ID is already closed. +// Newly opened streams should only originate from the client. To open a stream from the server, OpenStream should be used. +func (m *streamsMap) GetOrOpenStream(id protocol.StreamID) (*stream, error) { + m.mutex.RLock() + s, ok := m.streams[id] + m.mutex.RUnlock() + if ok { + return s, nil // s may be nil + } + + // ... we don't have an existing stream, try opening a new one + m.mutex.Lock() + defer m.mutex.Unlock() + // We need to check whether another invocation has already created a stream (between RUnlock() and Lock()). + s, ok = m.streams[id] + if ok { + return s, nil + } + if len(m.openStreams) == m.maxNumStreams { + return nil, qerr.TooManyOpenStreams + } + if id%2 == 0 { + return nil, qerr.Error(qerr.InvalidStreamID, fmt.Sprintf("attempted to open stream %d from client-side", id)) + } + if id+protocol.MaxNewStreamIDDelta < m.highestStreamOpenedByClient { + return nil, qerr.Error(qerr.InvalidStreamID, fmt.Sprintf("attempted to open stream %d, which is a lot smaller than the highest opened stream, %d", id, m.highestStreamOpenedByClient)) + } + + s, err := m.newStream(id) + if err != nil { + return nil, err + } + + if id > m.highestStreamOpenedByClient { + m.highestStreamOpenedByClient = id + } + + m.streamsOpenedAfterLastGarbageCollect++ + if m.streamsOpenedAfterLastGarbageCollect%protocol.MaxNewStreamIDDelta == 0 { + m.garbageCollectClosedStreams() + } + + m.putStream(s) + return s, nil +} + +// OpenStream opens a stream from the server's side +func (m *streamsMap) OpenStream(id protocol.StreamID) (*stream, error) { + panic("OpenStream: not implemented") +} + +func (m *streamsMap) Iterate(fn streamLambda) error { + m.mutex.Lock() + defer m.mutex.Unlock() + + for _, streamID := range m.openStreams { + cont, err := m.iterateFunc(streamID, fn) + if err != nil { + return err + } + if !cont { + break + } + } + return nil +} + +// RoundRobinIterate executes the streamLambda for every open stream, until the streamLambda returns false +// It uses a round-robin-like scheduling to ensure that every stream is considered fairly +// It prioritizes the crypto- and the header-stream (StreamIDs 1 and 3) +func (m *streamsMap) RoundRobinIterate(fn streamLambda) error { + m.mutex.Lock() + defer m.mutex.Unlock() + + numStreams := len(m.openStreams) + startIndex := m.roundRobinIndex + + for _, i := range []protocol.StreamID{1, 3} { + cont, err := m.iterateFunc(i, fn) + if err != nil && err != errMapAccess { + return err + } + if !cont { + return nil + } + } + + for i := 0; i < numStreams; i++ { + streamID := m.openStreams[(i+startIndex)%numStreams] + + if streamID == 1 || streamID == 3 { + continue + } + + cont, err := m.iterateFunc(streamID, fn) + if err != nil { + return err + } + m.roundRobinIndex = (m.roundRobinIndex + 1) % numStreams + if !cont { + break + } + } + return nil +} + +func (m *streamsMap) iterateFunc(streamID protocol.StreamID, fn streamLambda) (bool, error) { + str, ok := m.streams[streamID] + if !ok { + return true, errMapAccess + } + if str == nil { + return false, fmt.Errorf("BUG: Stream %d is closed, but still in openStreams map", streamID) + } + return fn(str) +} + +func (m *streamsMap) putStream(s *stream) error { + id := s.StreamID() + if _, ok := m.streams[id]; ok { + return fmt.Errorf("a stream with ID %d already exists", id) + } + + m.streams[id] = s + m.openStreams = append(m.openStreams, id) + + return nil +} + +// Attention: this function must only be called if a mutex has been acquired previously +func (m *streamsMap) RemoveStream(id protocol.StreamID) error { + s, ok := m.streams[id] + if !ok || s == nil { + return fmt.Errorf("attempted to remove non-existing stream: %d", id) + } + + m.streams[id] = nil + + for i, s := range m.openStreams { + if s == id { + // delete the streamID from the openStreams slice + m.openStreams = m.openStreams[:i+copy(m.openStreams[i:], m.openStreams[i+1:])] + // adjust round-robin index, if necessary + if i < m.roundRobinIndex { + m.roundRobinIndex-- + } + break + } + } + + return nil +} + +// NumberOfStreams gets the number of open streams +func (m *streamsMap) NumberOfStreams() int { + m.mutex.RLock() + n := len(m.openStreams) + m.mutex.RUnlock() + return n +} + +// garbageCollectClosedStreams deletes nil values in the streams if they are smaller than protocol.MaxNewStreamIDDelta than the highest stream opened by the client +// note that this garbage collection is relatively expensive, since it iterates over the whole streams map. It should not be called every time a stream is openend or closed +func (m *streamsMap) garbageCollectClosedStreams() { + for id, str := range m.streams { + if str != nil { + continue + } + if id+protocol.MaxNewStreamIDDelta <= m.highestStreamOpenedByClient { + delete(m.streams, id) + } + } + m.streamsOpenedAfterLastGarbageCollect = 0 +} diff --git a/vendor/github.com/lucas-clemente/quic-go/udp_conn.go b/vendor/github.com/lucas-clemente/quic-go/udp_conn.go new file mode 100644 index 0000000..efc646d --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/udp_conn.go @@ -0,0 +1,39 @@ +package quic + +import ( + "net" + "sync" +) + +type connection interface { + write([]byte) error + setCurrentRemoteAddr(interface{}) + RemoteAddr() *net.UDPAddr +} + +type udpConn struct { + mutex sync.RWMutex + + conn *net.UDPConn + currentAddr *net.UDPAddr +} + +var _ connection = &udpConn{} + +func (c *udpConn) write(p []byte) error { + _, err := c.conn.WriteToUDP(p, c.currentAddr) + return err +} + +func (c *udpConn) setCurrentRemoteAddr(addr interface{}) { + c.mutex.Lock() + c.currentAddr = addr.(*net.UDPAddr) + c.mutex.Unlock() +} + +func (c *udpConn) RemoteAddr() *net.UDPAddr { + c.mutex.RLock() + addr := c.currentAddr + c.mutex.RUnlock() + return addr +} diff --git a/vendor/github.com/lucas-clemente/quic-go/utils/_gen.go b/vendor/github.com/lucas-clemente/quic-go/utils/_gen.go new file mode 100644 index 0000000..154515b --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/utils/_gen.go @@ -0,0 +1,7 @@ +package main + +import ( + _ "github.com/clipperhouse/linkedlist" + _ "github.com/clipperhouse/slice" + _ "github.com/clipperhouse/stringer" +) diff --git a/vendor/github.com/lucas-clemente/quic-go/utils/byteinterval_linkedlist.go b/vendor/github.com/lucas-clemente/quic-go/utils/byteinterval_linkedlist.go new file mode 100644 index 0000000..545fc20 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/utils/byteinterval_linkedlist.go @@ -0,0 +1,214 @@ +// Generated by: main +// TypeWriter: linkedlist +// Directive: +gen on ByteInterval + +package utils + +// List is a modification of http://golang.org/pkg/container/list/ +// 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. + +// ByteIntervalElement is an element of a linked list. +type ByteIntervalElement struct { + // Next and previous pointers in the doubly-linked list of elements. + // To simplify the implementation, internally a list l is implemented + // as a ring, such that &l.root is both the next element of the last + // list element (l.Back()) and the previous element of the first list + // element (l.Front()). + next, prev *ByteIntervalElement + + // The list to which this element belongs. + list *ByteIntervalList + + // The value stored with this element. + Value ByteInterval +} + +// Next returns the next list element or nil. +func (e *ByteIntervalElement) Next() *ByteIntervalElement { + if p := e.next; e.list != nil && p != &e.list.root { + return p + } + return nil +} + +// Prev returns the previous list element or nil. +func (e *ByteIntervalElement) Prev() *ByteIntervalElement { + if p := e.prev; e.list != nil && p != &e.list.root { + return p + } + return nil +} + +// ByteIntervalList represents a doubly linked list. +// The zero value for ByteIntervalList is an empty list ready to use. +type ByteIntervalList struct { + root ByteIntervalElement // sentinel list element, only &root, root.prev, and root.next are used + len int // current list length excluding (this) sentinel element +} + +// Init initializes or clears list l. +func (l *ByteIntervalList) Init() *ByteIntervalList { + l.root.next = &l.root + l.root.prev = &l.root + l.len = 0 + return l +} + +// NewByteIntervalList returns an initialized list. +func NewByteIntervalList() *ByteIntervalList { return new(ByteIntervalList).Init() } + +// Len returns the number of elements of list l. +// The complexity is O(1). +func (l *ByteIntervalList) Len() int { return l.len } + +// Front returns the first element of list l or nil. +func (l *ByteIntervalList) Front() *ByteIntervalElement { + if l.len == 0 { + return nil + } + return l.root.next +} + +// Back returns the last element of list l or nil. +func (l *ByteIntervalList) Back() *ByteIntervalElement { + if l.len == 0 { + return nil + } + return l.root.prev +} + +// lazyInit lazily initializes a zero ByteIntervalList value. +func (l *ByteIntervalList) lazyInit() { + if l.root.next == nil { + l.Init() + } +} + +// insert inserts e after at, increments l.len, and returns e. +func (l *ByteIntervalList) insert(e, at *ByteIntervalElement) *ByteIntervalElement { + n := at.next + at.next = e + e.prev = at + e.next = n + n.prev = e + e.list = l + l.len++ + return e +} + +// insertValue is a convenience wrapper for insert(&ByteIntervalElement{Value: v}, at). +func (l *ByteIntervalList) insertValue(v ByteInterval, at *ByteIntervalElement) *ByteIntervalElement { + return l.insert(&ByteIntervalElement{Value: v}, at) +} + +// remove removes e from its list, decrements l.len, and returns e. +func (l *ByteIntervalList) remove(e *ByteIntervalElement) *ByteIntervalElement { + e.prev.next = e.next + e.next.prev = e.prev + e.next = nil // avoid memory leaks + e.prev = nil // avoid memory leaks + e.list = nil + l.len-- + return e +} + +// Remove removes e from l if e is an element of list l. +// It returns the element value e.Value. +func (l *ByteIntervalList) Remove(e *ByteIntervalElement) ByteInterval { + if e.list == l { + // if e.list == l, l must have been initialized when e was inserted + // in l or l == nil (e is a zero ByteIntervalElement) and l.remove will crash + l.remove(e) + } + return e.Value +} + +// PushFront inserts a new element e with value v at the front of list l and returns e. +func (l *ByteIntervalList) PushFront(v ByteInterval) *ByteIntervalElement { + l.lazyInit() + return l.insertValue(v, &l.root) +} + +// PushBack inserts a new element e with value v at the back of list l and returns e. +func (l *ByteIntervalList) PushBack(v ByteInterval) *ByteIntervalElement { + l.lazyInit() + return l.insertValue(v, l.root.prev) +} + +// InsertBefore inserts a new element e with value v immediately before mark and returns e. +// If mark is not an element of l, the list is not modified. +func (l *ByteIntervalList) InsertBefore(v ByteInterval, mark *ByteIntervalElement) *ByteIntervalElement { + if mark.list != l { + return nil + } + // see comment in ByteIntervalList.Remove about initialization of l + return l.insertValue(v, mark.prev) +} + +// InsertAfter inserts a new element e with value v immediately after mark and returns e. +// If mark is not an element of l, the list is not modified. +func (l *ByteIntervalList) InsertAfter(v ByteInterval, mark *ByteIntervalElement) *ByteIntervalElement { + if mark.list != l { + return nil + } + // see comment in ByteIntervalList.Remove about initialization of l + return l.insertValue(v, mark) +} + +// MoveToFront moves element e to the front of list l. +// If e is not an element of l, the list is not modified. +func (l *ByteIntervalList) MoveToFront(e *ByteIntervalElement) { + if e.list != l || l.root.next == e { + return + } + // see comment in ByteIntervalList.Remove about initialization of l + l.insert(l.remove(e), &l.root) +} + +// MoveToBack moves element e to the back of list l. +// If e is not an element of l, the list is not modified. +func (l *ByteIntervalList) MoveToBack(e *ByteIntervalElement) { + if e.list != l || l.root.prev == e { + return + } + // see comment in ByteIntervalList.Remove about initialization of l + l.insert(l.remove(e), l.root.prev) +} + +// MoveBefore moves element e to its new position before mark. +// If e or mark is not an element of l, or e == mark, the list is not modified. +func (l *ByteIntervalList) MoveBefore(e, mark *ByteIntervalElement) { + if e.list != l || e == mark || mark.list != l { + return + } + l.insert(l.remove(e), mark.prev) +} + +// MoveAfter moves element e to its new position after mark. +// If e is not an element of l, or e == mark, the list is not modified. +func (l *ByteIntervalList) MoveAfter(e, mark *ByteIntervalElement) { + if e.list != l || e == mark || mark.list != l { + return + } + l.insert(l.remove(e), mark) +} + +// PushBackList inserts a copy of an other list at the back of list l. +// The lists l and other may be the same. +func (l *ByteIntervalList) PushBackList(other *ByteIntervalList) { + l.lazyInit() + for i, e := other.Len(), other.Front(); i > 0; i, e = i-1, e.Next() { + l.insertValue(e.Value, l.root.prev) + } +} + +// PushFrontList inserts a copy of an other list at the front of list l. +// The lists l and other may be the same. +func (l *ByteIntervalList) PushFrontList(other *ByteIntervalList) { + l.lazyInit() + for i, e := other.Len(), other.Back(); i > 0; i, e = i-1, e.Prev() { + l.insertValue(e.Value, &l.root) + } +} diff --git a/vendor/github.com/lucas-clemente/quic-go/utils/float16.go b/vendor/github.com/lucas-clemente/quic-go/utils/float16.go new file mode 100644 index 0000000..8abdb51 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/utils/float16.go @@ -0,0 +1,86 @@ +package utils + +import ( + "bytes" + "io" + "math" +) + +// We define an unsigned 16-bit floating point value, inspired by IEEE floats +// (http://en.wikipedia.org/wiki/Half_precision_floating-point_format), +// with 5-bit exponent (bias 1), 11-bit mantissa (effective 12 with hidden +// bit) and denormals, but without signs, transfinites or fractions. Wire format +// 16 bits (little-endian byte order) are split into exponent (high 5) and +// mantissa (low 11) and decoded as: +// uint64_t value; +// if (exponent == 0) value = mantissa; +// else value = (mantissa | 1 << 11) << (exponent - 1) +const uFloat16ExponentBits = 5 +const uFloat16MaxExponent = (1 << uFloat16ExponentBits) - 2 // 30 +const uFloat16MantissaBits = 16 - uFloat16ExponentBits // 11 +const uFloat16MantissaEffectiveBits = uFloat16MantissaBits + 1 // 12 +const uFloat16MaxValue = ((uint64(1) << uFloat16MantissaEffectiveBits) - 1) << uFloat16MaxExponent // 0x3FFC0000000 + +// ReadUfloat16 reads a float in the QUIC-float16 format and returns its uint64 representation +func ReadUfloat16(b io.ByteReader) (uint64, error) { + val, err := ReadUint16(b) + if err != nil { + return 0, err + } + + res := uint64(val) + + if res < (1 << uFloat16MantissaEffectiveBits) { + // Fast path: either the value is denormalized (no hidden bit), or + // normalized (hidden bit set, exponent offset by one) with exponent zero. + // Zero exponent offset by one sets the bit exactly where the hidden bit is. + // So in both cases the value encodes itself. + return res, nil + } + + exponent := val >> uFloat16MantissaBits // No sign extend on uint! + // After the fast pass, the exponent is at least one (offset by one). + // Un-offset the exponent. + exponent-- + // Here we need to clear the exponent and set the hidden bit. We have already + // decremented the exponent, so when we subtract it, it leaves behind the + // hidden bit. + res -= uint64(exponent) << uFloat16MantissaBits + res <<= exponent + return res, nil +} + +// WriteUfloat16 writes a float in the QUIC-float16 format from its uint64 representation +func WriteUfloat16(b *bytes.Buffer, value uint64) { + var result uint16 + if value < (uint64(1) << uFloat16MantissaEffectiveBits) { + // Fast path: either the value is denormalized, or has exponent zero. + // Both cases are represented by the value itself. + result = uint16(value) + } else if value >= uFloat16MaxValue { + // Value is out of range; clamp it to the maximum representable. + result = math.MaxUint16 + } else { + // The highest bit is between position 13 and 42 (zero-based), which + // corresponds to exponent 1-30. In the output, mantissa is from 0 to 10, + // hidden bit is 11 and exponent is 11 to 15. Shift the highest bit to 11 + // and count the shifts. + exponent := uint16(0) + for offset := uint16(16); offset > 0; offset /= 2 { + // Right-shift the value until the highest bit is in position 11. + // For offset of 16, 8, 4, 2 and 1 (binary search over 1-30), + // shift if the bit is at or above 11 + offset. + if value >= (uint64(1) << (uFloat16MantissaBits + offset)) { + exponent += offset + value >>= offset + } + } + + // Hidden bit (position 11) is set. We should remove it and increment the + // exponent. Equivalently, we just add it to the exponent. + // This hides the bit. + result = (uint16(value) + (exponent << uFloat16MantissaBits)) + } + + WriteUint16(b, result) +} diff --git a/vendor/github.com/lucas-clemente/quic-go/utils/log.go b/vendor/github.com/lucas-clemente/quic-go/utils/log.go new file mode 100644 index 0000000..bb0f255 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/utils/log.go @@ -0,0 +1,70 @@ +package utils + +import ( + "fmt" + "io" + "os" + "sync" +) + +var out io.Writer = os.Stdout + +// LogLevel of quic-go +type LogLevel uint8 + +const ( + // LogLevelDebug enables debug logs (e.g. packet contents) + LogLevelDebug LogLevel = iota + // LogLevelInfo enables info logs (e.g. packets) + LogLevelInfo + // LogLevelError enables err logs + LogLevelError + // LogLevelNothing disables + LogLevelNothing +) + +var logLevel = LogLevelNothing + +var mutex sync.Mutex + +// SetLogWriter sets the log writer. +func SetLogWriter(w io.Writer) { + out = w +} + +// SetLogLevel sets the log level +func SetLogLevel(level LogLevel) { + logLevel = level +} + +// Debugf logs something +func Debugf(format string, args ...interface{}) { + if logLevel == LogLevelDebug { + mutex.Lock() + fmt.Fprintf(out, format+"\n", args...) + mutex.Unlock() + } +} + +// Infof logs something +func Infof(format string, args ...interface{}) { + if logLevel <= LogLevelInfo { + mutex.Lock() + fmt.Fprintf(out, format+"\n", args...) + mutex.Unlock() + } +} + +// Errorf logs something +func Errorf(format string, args ...interface{}) { + if logLevel <= LogLevelError { + mutex.Lock() + fmt.Fprintf(out, format+"\n", args...) + mutex.Unlock() + } +} + +// Debug returns true if the log level is LogLevelDebug +func Debug() bool { + return logLevel == LogLevelDebug +} diff --git a/vendor/github.com/lucas-clemente/quic-go/utils/minmax.go b/vendor/github.com/lucas-clemente/quic-go/utils/minmax.go new file mode 100644 index 0000000..ec22139 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/utils/minmax.go @@ -0,0 +1,123 @@ +package utils + +import ( + "math" + "time" + + "github.com/lucas-clemente/quic-go/protocol" +) + +// InfDuration is a duration of infinite length +const InfDuration = time.Duration(math.MaxInt64) + +// Max returns the maximum of two Ints +func Max(a, b int) int { + if a < b { + return b + } + return a +} + +// MaxUint32 returns the maximum of two uint32 +func MaxUint32(a, b uint32) uint32 { + if a < b { + return b + } + return a +} + +// MaxUint64 returns the maximum of two uint64 +func MaxUint64(a, b uint64) uint64 { + if a < b { + return b + } + return a +} + +// Min returns the minimum of two Ints +func Min(a, b int) int { + if a < b { + return a + } + return b +} + +// MinUint32 returns the maximum of two uint32 +func MinUint32(a, b uint32) uint32 { + if a < b { + return a + } + return b +} + +// MinInt64 returns the minimum of two int64 +func MinInt64(a, b int64) int64 { + if a < b { + return a + } + return b +} + +// MaxInt64 returns the minimum of two int64 +func MaxInt64(a, b int64) int64 { + if a > b { + return a + } + return b +} + +// MinByteCount returns the minimum of two ByteCounts +func MinByteCount(a, b protocol.ByteCount) protocol.ByteCount { + if a < b { + return a + } + return b +} + +// MaxDuration returns the max duration +func MaxDuration(a, b time.Duration) time.Duration { + if a > b { + return a + } + return b +} + +// MinDuration returns the minimum duration +func MinDuration(a, b time.Duration) time.Duration { + if a > b { + return b + } + return a +} + +// AbsDuration returns the absolute value of a time duration +func AbsDuration(d time.Duration) time.Duration { + if d >= 0 { + return d + } + return -d +} + +// MinTime returns the earlier time +func MinTime(a, b time.Time) time.Time { + if a.After(b) { + return b + } + return a +} + +// MaxPacketNumber returns the max packet number +func MaxPacketNumber(a, b protocol.PacketNumber) protocol.PacketNumber { + if a > b { + return a + } + return b +} + +// MinPacketNumber returns the min packet number +func MinPacketNumber(a, b protocol.PacketNumber) protocol.PacketNumber { + if a < b { + return a + } + return b +} diff --git a/vendor/github.com/lucas-clemente/quic-go/utils/packet_interval.go b/vendor/github.com/lucas-clemente/quic-go/utils/packet_interval.go new file mode 100644 index 0000000..09800b6 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/utils/packet_interval.go @@ -0,0 +1,10 @@ +package utils + +import "github.com/lucas-clemente/quic-go/protocol" + +// PacketInterval is an interval from one PacketNumber to the other +// +gen linkedlist +type PacketInterval struct { + Start protocol.PacketNumber + End protocol.PacketNumber +} diff --git a/vendor/github.com/lucas-clemente/quic-go/utils/packetinterval_linkedlist.go b/vendor/github.com/lucas-clemente/quic-go/utils/packetinterval_linkedlist.go new file mode 100644 index 0000000..e3431d6 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/utils/packetinterval_linkedlist.go @@ -0,0 +1,214 @@ +// Generated by: main +// TypeWriter: linkedlist +// Directive: +gen on PacketInterval + +package utils + +// List is a modification of http://golang.org/pkg/container/list/ +// 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. + +// PacketIntervalElement is an element of a linked list. +type PacketIntervalElement struct { + // Next and previous pointers in the doubly-linked list of elements. + // To simplify the implementation, internally a list l is implemented + // as a ring, such that &l.root is both the next element of the last + // list element (l.Back()) and the previous element of the first list + // element (l.Front()). + next, prev *PacketIntervalElement + + // The list to which this element belongs. + list *PacketIntervalList + + // The value stored with this element. + Value PacketInterval +} + +// Next returns the next list element or nil. +func (e *PacketIntervalElement) Next() *PacketIntervalElement { + if p := e.next; e.list != nil && p != &e.list.root { + return p + } + return nil +} + +// Prev returns the previous list element or nil. +func (e *PacketIntervalElement) Prev() *PacketIntervalElement { + if p := e.prev; e.list != nil && p != &e.list.root { + return p + } + return nil +} + +// PacketIntervalList represents a doubly linked list. +// The zero value for PacketIntervalList is an empty list ready to use. +type PacketIntervalList struct { + root PacketIntervalElement // sentinel list element, only &root, root.prev, and root.next are used + len int // current list length excluding (this) sentinel element +} + +// Init initializes or clears list l. +func (l *PacketIntervalList) Init() *PacketIntervalList { + l.root.next = &l.root + l.root.prev = &l.root + l.len = 0 + return l +} + +// NewPacketIntervalList returns an initialized list. +func NewPacketIntervalList() *PacketIntervalList { return new(PacketIntervalList).Init() } + +// Len returns the number of elements of list l. +// The complexity is O(1). +func (l *PacketIntervalList) Len() int { return l.len } + +// Front returns the first element of list l or nil. +func (l *PacketIntervalList) Front() *PacketIntervalElement { + if l.len == 0 { + return nil + } + return l.root.next +} + +// Back returns the last element of list l or nil. +func (l *PacketIntervalList) Back() *PacketIntervalElement { + if l.len == 0 { + return nil + } + return l.root.prev +} + +// lazyInit lazily initializes a zero PacketIntervalList value. +func (l *PacketIntervalList) lazyInit() { + if l.root.next == nil { + l.Init() + } +} + +// insert inserts e after at, increments l.len, and returns e. +func (l *PacketIntervalList) insert(e, at *PacketIntervalElement) *PacketIntervalElement { + n := at.next + at.next = e + e.prev = at + e.next = n + n.prev = e + e.list = l + l.len++ + return e +} + +// insertValue is a convenience wrapper for insert(&PacketIntervalElement{Value: v}, at). +func (l *PacketIntervalList) insertValue(v PacketInterval, at *PacketIntervalElement) *PacketIntervalElement { + return l.insert(&PacketIntervalElement{Value: v}, at) +} + +// remove removes e from its list, decrements l.len, and returns e. +func (l *PacketIntervalList) remove(e *PacketIntervalElement) *PacketIntervalElement { + e.prev.next = e.next + e.next.prev = e.prev + e.next = nil // avoid memory leaks + e.prev = nil // avoid memory leaks + e.list = nil + l.len-- + return e +} + +// Remove removes e from l if e is an element of list l. +// It returns the element value e.Value. +func (l *PacketIntervalList) Remove(e *PacketIntervalElement) PacketInterval { + if e.list == l { + // if e.list == l, l must have been initialized when e was inserted + // in l or l == nil (e is a zero PacketIntervalElement) and l.remove will crash + l.remove(e) + } + return e.Value +} + +// PushFront inserts a new element e with value v at the front of list l and returns e. +func (l *PacketIntervalList) PushFront(v PacketInterval) *PacketIntervalElement { + l.lazyInit() + return l.insertValue(v, &l.root) +} + +// PushBack inserts a new element e with value v at the back of list l and returns e. +func (l *PacketIntervalList) PushBack(v PacketInterval) *PacketIntervalElement { + l.lazyInit() + return l.insertValue(v, l.root.prev) +} + +// InsertBefore inserts a new element e with value v immediately before mark and returns e. +// If mark is not an element of l, the list is not modified. +func (l *PacketIntervalList) InsertBefore(v PacketInterval, mark *PacketIntervalElement) *PacketIntervalElement { + if mark.list != l { + return nil + } + // see comment in PacketIntervalList.Remove about initialization of l + return l.insertValue(v, mark.prev) +} + +// InsertAfter inserts a new element e with value v immediately after mark and returns e. +// If mark is not an element of l, the list is not modified. +func (l *PacketIntervalList) InsertAfter(v PacketInterval, mark *PacketIntervalElement) *PacketIntervalElement { + if mark.list != l { + return nil + } + // see comment in PacketIntervalList.Remove about initialization of l + return l.insertValue(v, mark) +} + +// MoveToFront moves element e to the front of list l. +// If e is not an element of l, the list is not modified. +func (l *PacketIntervalList) MoveToFront(e *PacketIntervalElement) { + if e.list != l || l.root.next == e { + return + } + // see comment in PacketIntervalList.Remove about initialization of l + l.insert(l.remove(e), &l.root) +} + +// MoveToBack moves element e to the back of list l. +// If e is not an element of l, the list is not modified. +func (l *PacketIntervalList) MoveToBack(e *PacketIntervalElement) { + if e.list != l || l.root.prev == e { + return + } + // see comment in PacketIntervalList.Remove about initialization of l + l.insert(l.remove(e), l.root.prev) +} + +// MoveBefore moves element e to its new position before mark. +// If e or mark is not an element of l, or e == mark, the list is not modified. +func (l *PacketIntervalList) MoveBefore(e, mark *PacketIntervalElement) { + if e.list != l || e == mark || mark.list != l { + return + } + l.insert(l.remove(e), mark.prev) +} + +// MoveAfter moves element e to its new position after mark. +// If e is not an element of l, or e == mark, the list is not modified. +func (l *PacketIntervalList) MoveAfter(e, mark *PacketIntervalElement) { + if e.list != l || e == mark || mark.list != l { + return + } + l.insert(l.remove(e), mark) +} + +// PushBackList inserts a copy of an other list at the back of list l. +// The lists l and other may be the same. +func (l *PacketIntervalList) PushBackList(other *PacketIntervalList) { + l.lazyInit() + for i, e := other.Len(), other.Front(); i > 0; i, e = i-1, e.Next() { + l.insertValue(e.Value, l.root.prev) + } +} + +// PushFrontList inserts a copy of an other list at the front of list l. +// The lists l and other may be the same. +func (l *PacketIntervalList) PushFrontList(other *PacketIntervalList) { + l.lazyInit() + for i, e := other.Len(), other.Back(); i > 0; i, e = i-1, e.Prev() { + l.insertValue(e.Value, &l.root) + } +} diff --git a/vendor/github.com/lucas-clemente/quic-go/utils/streamframe_interval.go b/vendor/github.com/lucas-clemente/quic-go/utils/streamframe_interval.go new file mode 100644 index 0000000..c918b62 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/utils/streamframe_interval.go @@ -0,0 +1,10 @@ +package utils + +import "github.com/lucas-clemente/quic-go/protocol" + +// ByteInterval is an interval from one ByteCount to the other +// +gen linkedlist +type ByteInterval struct { + Start protocol.ByteCount + End protocol.ByteCount +} diff --git a/vendor/github.com/lucas-clemente/quic-go/utils/utils.go b/vendor/github.com/lucas-clemente/quic-go/utils/utils.go new file mode 100644 index 0000000..cf25679 --- /dev/null +++ b/vendor/github.com/lucas-clemente/quic-go/utils/utils.go @@ -0,0 +1,147 @@ +package utils + +import ( + "bytes" + "io" + + "github.com/lucas-clemente/quic-go/protocol" +) + +// Stream is the interface for QUIC streams +type Stream interface { + io.Reader + io.Writer + io.Closer + StreamID() protocol.StreamID + CloseRemote(offset protocol.ByteCount) +} + +// ReadUintN reads N bytes +func ReadUintN(b io.ByteReader, length uint8) (uint64, error) { + var res uint64 + for i := uint8(0); i < length; i++ { + bt, err := b.ReadByte() + if err != nil { + return 0, err + } + res ^= uint64(bt) << (i * 8) + } + return res, nil +} + +// ReadUint64 reads a uint64 +func ReadUint64(b io.ByteReader) (uint64, error) { + var b1, b2, b3, b4, b5, b6, b7, b8 uint8 + var err error + if b1, err = b.ReadByte(); err != nil { + return 0, err + } + if b2, err = b.ReadByte(); err != nil { + return 0, err + } + if b3, err = b.ReadByte(); err != nil { + return 0, err + } + if b4, err = b.ReadByte(); err != nil { + return 0, err + } + if b5, err = b.ReadByte(); err != nil { + return 0, err + } + if b6, err = b.ReadByte(); err != nil { + return 0, err + } + if b7, err = b.ReadByte(); err != nil { + return 0, err + } + if b8, err = b.ReadByte(); err != nil { + return 0, err + } + return uint64(b1) + uint64(b2)<<8 + uint64(b3)<<16 + uint64(b4)<<24 + uint64(b5)<<32 + uint64(b6)<<40 + uint64(b7)<<48 + uint64(b8)<<56, nil +} + +// ReadUint32 reads a uint32 +func ReadUint32(b io.ByteReader) (uint32, error) { + var b1, b2, b3, b4 uint8 + var err error + if b1, err = b.ReadByte(); err != nil { + return 0, err + } + if b2, err = b.ReadByte(); err != nil { + return 0, err + } + if b3, err = b.ReadByte(); err != nil { + return 0, err + } + if b4, err = b.ReadByte(); err != nil { + return 0, err + } + return uint32(b1) + uint32(b2)<<8 + uint32(b3)<<16 + uint32(b4)<<24, nil +} + +// ReadUint16 reads a uint16 +func ReadUint16(b io.ByteReader) (uint16, error) { + var b1, b2 uint8 + var err error + if b1, err = b.ReadByte(); err != nil { + return 0, err + } + if b2, err = b.ReadByte(); err != nil { + return 0, err + } + return uint16(b1) + uint16(b2)<<8, nil +} + +// WriteUint64 writes a uint64 +func WriteUint64(b *bytes.Buffer, i uint64) { + b.Write([]byte{ + uint8(i), uint8(i >> 8), uint8(i >> 16), uint8(i >> 24), + uint8(i >> 32), uint8(i >> 40), uint8(i >> 48), uint8(i >> 56), + }) +} + +// WriteUint56 writes 56 bit of a uint64 +func WriteUint56(b *bytes.Buffer, i uint64) { + b.Write([]byte{ + uint8(i), uint8(i >> 8), uint8(i >> 16), uint8(i >> 24), + uint8(i >> 32), uint8(i >> 40), uint8(i >> 48), + }) +} + +// WriteUint48 writes 48 bit of a uint64 +func WriteUint48(b *bytes.Buffer, i uint64) { + b.Write([]byte{ + uint8(i), uint8(i >> 8), uint8(i >> 16), uint8(i >> 24), + uint8(i >> 32), uint8(i >> 40), + }) +} + +// WriteUint40 writes 40 bit of a uint64 +func WriteUint40(b *bytes.Buffer, i uint64) { + b.Write([]byte{ + uint8(i), uint8(i >> 8), uint8(i >> 16), + uint8(i >> 24), uint8(i >> 32), + }) +} + +// WriteUint32 writes a uint32 +func WriteUint32(b *bytes.Buffer, i uint32) { + b.Write([]byte{uint8(i), uint8(i >> 8), uint8(i >> 16), uint8(i >> 24)}) +} + +// WriteUint24 writes 24 bit of a uint32 +func WriteUint24(b *bytes.Buffer, i uint32) { + b.Write([]byte{uint8(i), uint8(i >> 8), uint8(i >> 16)}) +} + +// WriteUint16 writes a uint16 +func WriteUint16(b *bytes.Buffer, i uint16) { + b.Write([]byte{uint8(i), uint8(i >> 8)}) +} + +// Uint32Slice attaches the methods of sort.Interface to []uint32, sorting in increasing order. +type Uint32Slice []uint32 + +func (s Uint32Slice) Len() int { return len(s) } +func (s Uint32Slice) Less(i, j int) bool { return s[i] < s[j] } +func (s Uint32Slice) Swap(i, j int) { s[i], s[j] = s[j], s[i] } diff --git a/vendor/github.com/pkg/errors/.gitignore b/vendor/github.com/pkg/errors/.gitignore new file mode 100644 index 0000000..daf913b --- /dev/null +++ b/vendor/github.com/pkg/errors/.gitignore @@ -0,0 +1,24 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof diff --git a/vendor/github.com/pkg/errors/.travis.yml b/vendor/github.com/pkg/errors/.travis.yml new file mode 100644 index 0000000..567ccdb --- /dev/null +++ b/vendor/github.com/pkg/errors/.travis.yml @@ -0,0 +1,11 @@ +language: go +go_import_path: github.com/pkg/errors +go: + - 1.4.3 + - 1.5.4 + - 1.6.3 + - 1.7.3 + - tip + +script: + - go test -v ./... diff --git a/vendor/github.com/pkg/errors/LICENSE b/vendor/github.com/pkg/errors/LICENSE new file mode 100644 index 0000000..835ba3e --- /dev/null +++ b/vendor/github.com/pkg/errors/LICENSE @@ -0,0 +1,23 @@ +Copyright (c) 2015, Dave Cheney +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/pkg/errors/README.md b/vendor/github.com/pkg/errors/README.md new file mode 100644 index 0000000..273db3c --- /dev/null +++ b/vendor/github.com/pkg/errors/README.md @@ -0,0 +1,52 @@ +# errors [![Travis-CI](https://travis-ci.org/pkg/errors.svg)](https://travis-ci.org/pkg/errors) [![AppVeyor](https://ci.appveyor.com/api/projects/status/b98mptawhudj53ep/branch/master?svg=true)](https://ci.appveyor.com/project/davecheney/errors/branch/master) [![GoDoc](https://godoc.org/github.com/pkg/errors?status.svg)](http://godoc.org/github.com/pkg/errors) [![Report card](https://goreportcard.com/badge/github.com/pkg/errors)](https://goreportcard.com/report/github.com/pkg/errors) + +Package errors provides simple error handling primitives. + +`go get github.com/pkg/errors` + +The traditional error handling idiom in Go is roughly akin to +```go +if err != nil { + return err +} +``` +which applied recursively up the call stack results in error reports without context or debugging information. The errors package allows programmers to add context to the failure path in their code in a way that does not destroy the original value of the error. + +## Adding context to an error + +The errors.Wrap function returns a new error that adds context to the original error. For example +```go +_, err := ioutil.ReadAll(r) +if err != nil { + return errors.Wrap(err, "read failed") +} +``` +## Retrieving the cause of an error + +Using `errors.Wrap` constructs a stack of errors, adding context to the preceding error. Depending on the nature of the error it may be necessary to reverse the operation of errors.Wrap to retrieve the original error for inspection. Any error value which implements this interface can be inspected by `errors.Cause`. +```go +type causer interface { + Cause() error +} +``` +`errors.Cause` will recursively retrieve the topmost error which does not implement `causer`, which is assumed to be the original cause. For example: +```go +switch err := errors.Cause(err).(type) { +case *MyError: + // handle specifically +default: + // unknown error +} +``` + +[Read the package documentation for more information](https://godoc.org/github.com/pkg/errors). + +## Contributing + +We welcome pull requests, bug fixes and issue reports. With that said, the bar for adding new symbols to this package is intentionally set high. + +Before proposing a change, please discuss your change by raising an issue. + +## Licence + +BSD-2-Clause diff --git a/vendor/github.com/pkg/errors/appveyor.yml b/vendor/github.com/pkg/errors/appveyor.yml new file mode 100644 index 0000000..a932ead --- /dev/null +++ b/vendor/github.com/pkg/errors/appveyor.yml @@ -0,0 +1,32 @@ +version: build-{build}.{branch} + +clone_folder: C:\gopath\src\github.com\pkg\errors +shallow_clone: true # for startup speed + +environment: + GOPATH: C:\gopath + +platform: + - x64 + +# http://www.appveyor.com/docs/installed-software +install: + # some helpful output for debugging builds + - go version + - go env + # pre-installed MinGW at C:\MinGW is 32bit only + # but MSYS2 at C:\msys64 has mingw64 + - set PATH=C:\msys64\mingw64\bin;%PATH% + - gcc --version + - g++ --version + +build_script: + - go install -v ./... + +test_script: + - set PATH=C:\gopath\bin;%PATH% + - go test -v ./... + +#artifacts: +# - path: '%GOPATH%\bin\*.exe' +deploy: off diff --git a/vendor/github.com/pkg/errors/errors.go b/vendor/github.com/pkg/errors/errors.go new file mode 100644 index 0000000..842ee80 --- /dev/null +++ b/vendor/github.com/pkg/errors/errors.go @@ -0,0 +1,269 @@ +// Package errors provides simple error handling primitives. +// +// The traditional error handling idiom in Go is roughly akin to +// +// if err != nil { +// return err +// } +// +// which applied recursively up the call stack results in error reports +// without context or debugging information. The errors package allows +// programmers to add context to the failure path in their code in a way +// that does not destroy the original value of the error. +// +// Adding context to an error +// +// The errors.Wrap function returns a new error that adds context to the +// original error by recording a stack trace at the point Wrap is called, +// and the supplied message. For example +// +// _, err := ioutil.ReadAll(r) +// if err != nil { +// return errors.Wrap(err, "read failed") +// } +// +// If additional control is required the errors.WithStack and errors.WithMessage +// functions destructure errors.Wrap into its component operations of annotating +// an error with a stack trace and an a message, respectively. +// +// Retrieving the cause of an error +// +// Using errors.Wrap constructs a stack of errors, adding context to the +// preceding error. Depending on the nature of the error it may be necessary +// to reverse the operation of errors.Wrap to retrieve the original error +// for inspection. Any error value which implements this interface +// +// type causer interface { +// Cause() error +// } +// +// can be inspected by errors.Cause. errors.Cause will recursively retrieve +// the topmost error which does not implement causer, which is assumed to be +// the original cause. For example: +// +// switch err := errors.Cause(err).(type) { +// case *MyError: +// // handle specifically +// default: +// // unknown error +// } +// +// causer interface is not exported by this package, but is considered a part +// of stable public API. +// +// Formatted printing of errors +// +// All error values returned from this package implement fmt.Formatter and can +// be formatted by the fmt package. The following verbs are supported +// +// %s print the error. If the error has a Cause it will be +// printed recursively +// %v see %s +// %+v extended format. Each Frame of the error's StackTrace will +// be printed in detail. +// +// Retrieving the stack trace of an error or wrapper +// +// New, Errorf, Wrap, and Wrapf record a stack trace at the point they are +// invoked. This information can be retrieved with the following interface. +// +// type stackTracer interface { +// StackTrace() errors.StackTrace +// } +// +// Where errors.StackTrace is defined as +// +// type StackTrace []Frame +// +// The Frame type represents a call site in the stack trace. Frame supports +// the fmt.Formatter interface that can be used for printing information about +// the stack trace of this error. For example: +// +// if err, ok := err.(stackTracer); ok { +// for _, f := range err.StackTrace() { +// fmt.Printf("%+s:%d", f) +// } +// } +// +// stackTracer interface is not exported by this package, but is considered a part +// of stable public API. +// +// See the documentation for Frame.Format for more details. +package errors + +import ( + "fmt" + "io" +) + +// New returns an error with the supplied message. +// New also records the stack trace at the point it was called. +func New(message string) error { + return &fundamental{ + msg: message, + stack: callers(), + } +} + +// Errorf formats according to a format specifier and returns the string +// as a value that satisfies error. +// Errorf also records the stack trace at the point it was called. +func Errorf(format string, args ...interface{}) error { + return &fundamental{ + msg: fmt.Sprintf(format, args...), + stack: callers(), + } +} + +// fundamental is an error that has a message and a stack, but no caller. +type fundamental struct { + msg string + *stack +} + +func (f *fundamental) Error() string { return f.msg } + +func (f *fundamental) Format(s fmt.State, verb rune) { + switch verb { + case 'v': + if s.Flag('+') { + io.WriteString(s, f.msg) + f.stack.Format(s, verb) + return + } + fallthrough + case 's': + io.WriteString(s, f.msg) + case 'q': + fmt.Fprintf(s, "%q", f.msg) + } +} + +// WithStack annotates err with a stack trace at the point WithStack was called. +// If err is nil, WithStack returns nil. +func WithStack(err error) error { + if err == nil { + return nil + } + return &withStack{ + err, + callers(), + } +} + +type withStack struct { + error + *stack +} + +func (w *withStack) Cause() error { return w.error } + +func (w *withStack) Format(s fmt.State, verb rune) { + switch verb { + case 'v': + if s.Flag('+') { + fmt.Fprintf(s, "%+v", w.Cause()) + w.stack.Format(s, verb) + return + } + fallthrough + case 's': + io.WriteString(s, w.Error()) + case 'q': + fmt.Fprintf(s, "%q", w.Error()) + } +} + +// Wrap returns an error annotating err with a stack trace +// at the point Wrap is called, and the supplied message. +// If err is nil, Wrap returns nil. +func Wrap(err error, message string) error { + if err == nil { + return nil + } + err = &withMessage{ + cause: err, + msg: message, + } + return &withStack{ + err, + callers(), + } +} + +// Wrapf returns an error annotating err with a stack trace +// at the point Wrapf is call, and the format specifier. +// If err is nil, Wrapf returns nil. +func Wrapf(err error, format string, args ...interface{}) error { + if err == nil { + return nil + } + err = &withMessage{ + cause: err, + msg: fmt.Sprintf(format, args...), + } + return &withStack{ + err, + callers(), + } +} + +// WithMessage annotates err with a new message. +// If err is nil, WithMessage returns nil. +func WithMessage(err error, message string) error { + if err == nil { + return nil + } + return &withMessage{ + cause: err, + msg: message, + } +} + +type withMessage struct { + cause error + msg string +} + +func (w *withMessage) Error() string { return w.msg + ": " + w.cause.Error() } +func (w *withMessage) Cause() error { return w.cause } + +func (w *withMessage) Format(s fmt.State, verb rune) { + switch verb { + case 'v': + if s.Flag('+') { + fmt.Fprintf(s, "%+v\n", w.Cause()) + io.WriteString(s, w.msg) + return + } + fallthrough + case 's', 'q': + io.WriteString(s, w.Error()) + } +} + +// Cause returns the underlying cause of the error, if possible. +// An error value has a cause if it implements the following +// interface: +// +// type causer interface { +// Cause() error +// } +// +// If the error does not implement Cause, the original error will +// be returned. If the error is nil, nil will be returned without further +// investigation. +func Cause(err error) error { + type causer interface { + Cause() error + } + + for err != nil { + cause, ok := err.(causer) + if !ok { + break + } + err = cause.Cause() + } + return err +} diff --git a/vendor/github.com/pkg/errors/stack.go b/vendor/github.com/pkg/errors/stack.go new file mode 100644 index 0000000..6b1f289 --- /dev/null +++ b/vendor/github.com/pkg/errors/stack.go @@ -0,0 +1,178 @@ +package errors + +import ( + "fmt" + "io" + "path" + "runtime" + "strings" +) + +// Frame represents a program counter inside a stack frame. +type Frame uintptr + +// pc returns the program counter for this frame; +// multiple frames may have the same PC value. +func (f Frame) pc() uintptr { return uintptr(f) - 1 } + +// file returns the full path to the file that contains the +// function for this Frame's pc. +func (f Frame) file() string { + fn := runtime.FuncForPC(f.pc()) + if fn == nil { + return "unknown" + } + file, _ := fn.FileLine(f.pc()) + return file +} + +// line returns the line number of source code of the +// function for this Frame's pc. +func (f Frame) line() int { + fn := runtime.FuncForPC(f.pc()) + if fn == nil { + return 0 + } + _, line := fn.FileLine(f.pc()) + return line +} + +// Format formats the frame according to the fmt.Formatter interface. +// +// %s source file +// %d source line +// %n function name +// %v equivalent to %s:%d +// +// Format accepts flags that alter the printing of some verbs, as follows: +// +// %+s path of source file relative to the compile time GOPATH +// %+v equivalent to %+s:%d +func (f Frame) Format(s fmt.State, verb rune) { + switch verb { + case 's': + switch { + case s.Flag('+'): + pc := f.pc() + fn := runtime.FuncForPC(pc) + if fn == nil { + io.WriteString(s, "unknown") + } else { + file, _ := fn.FileLine(pc) + fmt.Fprintf(s, "%s\n\t%s", fn.Name(), file) + } + default: + io.WriteString(s, path.Base(f.file())) + } + case 'd': + fmt.Fprintf(s, "%d", f.line()) + case 'n': + name := runtime.FuncForPC(f.pc()).Name() + io.WriteString(s, funcname(name)) + case 'v': + f.Format(s, 's') + io.WriteString(s, ":") + f.Format(s, 'd') + } +} + +// StackTrace is stack of Frames from innermost (newest) to outermost (oldest). +type StackTrace []Frame + +func (st StackTrace) Format(s fmt.State, verb rune) { + switch verb { + case 'v': + switch { + case s.Flag('+'): + for _, f := range st { + fmt.Fprintf(s, "\n%+v", f) + } + case s.Flag('#'): + fmt.Fprintf(s, "%#v", []Frame(st)) + default: + fmt.Fprintf(s, "%v", []Frame(st)) + } + case 's': + fmt.Fprintf(s, "%s", []Frame(st)) + } +} + +// stack represents a stack of program counters. +type stack []uintptr + +func (s *stack) Format(st fmt.State, verb rune) { + switch verb { + case 'v': + switch { + case st.Flag('+'): + for _, pc := range *s { + f := Frame(pc) + fmt.Fprintf(st, "\n%+v", f) + } + } + } +} + +func (s *stack) StackTrace() StackTrace { + f := make([]Frame, len(*s)) + for i := 0; i < len(f); i++ { + f[i] = Frame((*s)[i]) + } + return f +} + +func callers() *stack { + const depth = 32 + var pcs [depth]uintptr + n := runtime.Callers(3, pcs[:]) + var st stack = pcs[0:n] + return &st +} + +// funcname removes the path prefix component of a function's name reported by func.Name(). +func funcname(name string) string { + i := strings.LastIndex(name, "/") + name = name[i+1:] + i = strings.Index(name, ".") + return name[i+1:] +} + +func trimGOPATH(name, file string) string { + // Here we want to get the source file path relative to the compile time + // GOPATH. As of Go 1.6.x there is no direct way to know the compiled + // GOPATH at runtime, but we can infer the number of path segments in the + // GOPATH. We note that fn.Name() returns the function name qualified by + // the import path, which does not include the GOPATH. Thus we can trim + // segments from the beginning of the file path until the number of path + // separators remaining is one more than the number of path separators in + // the function name. For example, given: + // + // GOPATH /home/user + // file /home/user/src/pkg/sub/file.go + // fn.Name() pkg/sub.Type.Method + // + // We want to produce: + // + // pkg/sub/file.go + // + // From this we can easily see that fn.Name() has one less path separator + // than our desired output. We count separators from the end of the file + // path until it finds two more than in the function name and then move + // one character forward to preserve the initial path segment without a + // leading separator. + const sep = "/" + goal := strings.Count(name, sep) + 2 + i := len(file) + for n := 0; n < goal; n++ { + i = strings.LastIndex(file[:i], sep) + if i == -1 { + // not enough separators found, set i so that the slice expression + // below leaves file unmodified + i = -len(sep) + break + } + } + // get back to 0 or trim the leading separator + file = file[i+len(sep):] + return file +} diff --git a/vendor/github.com/shadowsocks/shadowsocks-go/LICENSE b/vendor/github.com/shadowsocks/shadowsocks-go/LICENSE new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/vendor/github.com/shadowsocks/shadowsocks-go/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. diff --git a/vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/config.go b/vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/config.go new file mode 100644 index 0000000..4db50ac --- /dev/null +++ b/vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/config.go @@ -0,0 +1,136 @@ +/** + * Created with IntelliJ IDEA. + * User: clowwindy + * Date: 12-11-2 + * Time: 上午10:31 + * To change this template use File | Settings | File Templates. + */ +package shadowsocks + +import ( + "encoding/json" + "fmt" + "io/ioutil" + // "log" + "os" + "reflect" + "strings" + "time" +) + +type Config struct { + Server interface{} `json:"server"` + ServerPort int `json:"server_port"` + LocalPort int `json:"local_port"` + Password string `json:"password"` + Method string `json:"method"` // encryption method + Auth bool `json:"auth"` // one time auth + + // following options are only used by server + PortPassword map[string]string `json:"port_password"` + Timeout int `json:"timeout"` + + // following options are only used by client + + // The order of servers in the client config is significant, so use array + // instead of map to preserve the order. + ServerPassword [][]string `json:"server_password"` +} + +var readTimeout time.Duration + +func (config *Config) GetServerArray() []string { + // Specifying multiple servers in the "server" options is deprecated. + // But for backward compatiblity, keep this. + if config.Server == nil { + return nil + } + single, ok := config.Server.(string) + if ok { + return []string{single} + } + arr, ok := config.Server.([]interface{}) + if ok { + /* + if len(arr) > 1 { + log.Println("Multiple servers in \"server\" option is deprecated. " + + "Please use \"server_password\" instead.") + } + */ + serverArr := make([]string, len(arr), len(arr)) + for i, s := range arr { + serverArr[i], ok = s.(string) + if !ok { + goto typeError + } + } + return serverArr + } +typeError: + panic(fmt.Sprintf("Config.Server type error %v", reflect.TypeOf(config.Server))) +} + +func ParseConfig(path string) (config *Config, err error) { + file, err := os.Open(path) // For read access. + if err != nil { + return + } + defer file.Close() + + data, err := ioutil.ReadAll(file) + if err != nil { + return + } + + config = &Config{} + if err = json.Unmarshal(data, config); err != nil { + return nil, err + } + readTimeout = time.Duration(config.Timeout) * time.Second + if strings.HasSuffix(strings.ToLower(config.Method), "-auth") { + config.Method = config.Method[:len(config.Method)-5] + config.Auth = true + } + return +} + +func SetDebug(d DebugLog) { + Debug = d +} + +// Useful for command line to override options specified in config file +// Debug is not updated. +func UpdateConfig(old, new *Config) { + // Using reflection here is not necessary, but it's a good exercise. + // For more information on reflections in Go, read "The Laws of Reflection" + // http://golang.org/doc/articles/laws_of_reflection.html + newVal := reflect.ValueOf(new).Elem() + oldVal := reflect.ValueOf(old).Elem() + + // typeOfT := newVal.Type() + for i := 0; i < newVal.NumField(); i++ { + newField := newVal.Field(i) + oldField := oldVal.Field(i) + // log.Printf("%d: %s %s = %v\n", i, + // typeOfT.Field(i).Name, newField.Type(), newField.Interface()) + switch newField.Kind() { + case reflect.Interface: + if fmt.Sprintf("%v", newField.Interface()) != "" { + oldField.Set(newField) + } + case reflect.String: + s := newField.String() + if s != "" { + oldField.SetString(s) + } + case reflect.Int: + i := newField.Int() + if i != 0 { + oldField.SetInt(i) + } + } + } + + old.Timeout = new.Timeout + readTimeout = time.Duration(old.Timeout) * time.Second +} diff --git a/vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/conn.go b/vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/conn.go new file mode 100644 index 0000000..1a79f1d --- /dev/null +++ b/vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/conn.go @@ -0,0 +1,186 @@ +package shadowsocks + +import ( + "encoding/binary" + "fmt" + "io" + "net" + "strconv" +) + +const ( + OneTimeAuthMask byte = 0x10 + AddrMask byte = 0xf +) + +type Conn struct { + net.Conn + *Cipher + readBuf []byte + writeBuf []byte + chunkId uint32 +} + +func NewConn(c net.Conn, cipher *Cipher) *Conn { + return &Conn{ + Conn: c, + Cipher: cipher, + readBuf: leakyBuf.Get(), + writeBuf: leakyBuf.Get()} +} + +func (c *Conn) Close() error { + leakyBuf.Put(c.readBuf) + leakyBuf.Put(c.writeBuf) + return c.Conn.Close() +} + +func RawAddr(addr string) (buf []byte, err error) { + host, portStr, err := net.SplitHostPort(addr) + if err != nil { + return nil, fmt.Errorf("shadowsocks: address error %s %v", addr, err) + } + port, err := strconv.Atoi(portStr) + if err != nil { + return nil, fmt.Errorf("shadowsocks: invalid port %s", addr) + } + + hostLen := len(host) + l := 1 + 1 + hostLen + 2 // addrType + lenByte + address + port + buf = make([]byte, l) + buf[0] = 3 // 3 means the address is domain name + buf[1] = byte(hostLen) // host address length followed by host address + copy(buf[2:], host) + binary.BigEndian.PutUint16(buf[2+hostLen:2+hostLen+2], uint16(port)) + return +} + +// This is intended for use by users implementing a local socks proxy. +// rawaddr shoud contain part of the data in socks request, starting from the +// ATYP field. (Refer to rfc1928 for more information.) +func DialWithRawAddr(rawaddr []byte, server string, cipher *Cipher) (c *Conn, err error) { + conn, err := net.Dial("tcp", server) + if err != nil { + return + } + c = NewConn(conn, cipher) + if cipher.ota { + if c.enc == nil { + if _, err = c.initEncrypt(); err != nil { + return + } + } + // since we have initEncrypt, we must send iv manually + conn.Write(cipher.iv) + rawaddr[0] |= OneTimeAuthMask + rawaddr = otaConnectAuth(cipher.iv, cipher.key, rawaddr) + } + if _, err = c.write(rawaddr); err != nil { + c.Close() + return nil, err + } + return +} + +// addr should be in the form of host:port +func Dial(addr, server string, cipher *Cipher) (c *Conn, err error) { + ra, err := RawAddr(addr) + if err != nil { + return + } + return DialWithRawAddr(ra, server, cipher) +} + +func (c *Conn) GetIv() (iv []byte) { + iv = make([]byte, len(c.iv)) + copy(iv, c.iv) + return +} + +func (c *Conn) GetKey() (key []byte) { + key = make([]byte, len(c.key)) + copy(key, c.key) + return +} + +func (c *Conn) IsOta() bool { + return c.ota +} + +func (c *Conn) GetAndIncrChunkId() (chunkId uint32) { + chunkId = c.chunkId + c.chunkId += 1 + return +} + +func (c *Conn) Read(b []byte) (n int, err error) { + if c.dec == nil { + iv := make([]byte, c.info.ivLen) + if _, err = io.ReadFull(c.Conn, iv); err != nil { + return + } + if err = c.initDecrypt(iv); err != nil { + return + } + if len(c.iv) == 0 { + c.iv = iv + } + } + + cipherData := c.readBuf + if len(b) > len(cipherData) { + cipherData = make([]byte, len(b)) + } else { + cipherData = cipherData[:len(b)] + } + + n, err = c.Conn.Read(cipherData) + if n > 0 { + c.decrypt(b[0:n], cipherData[0:n]) + } + return +} + +func (c *Conn) Write(b []byte) (n int, err error) { + nn := len(b) + if c.ota { + chunkId := c.GetAndIncrChunkId() + b = otaReqChunkAuth(c.iv, chunkId, b) + } + headerLen := len(b) - nn + + n, err = c.write(b) + // Make sure <= 0 <= len(b), where b is the slice passed in. + if n >= headerLen { + n -= headerLen + } + return +} + +func (c *Conn) write(b []byte) (n int, err error) { + var iv []byte + if c.enc == nil { + iv, err = c.initEncrypt() + if err != nil { + return + } + } + + cipherData := c.writeBuf + dataSize := len(b) + len(iv) + if dataSize > len(cipherData) { + cipherData = make([]byte, dataSize) + } else { + cipherData = cipherData[:dataSize] + } + + if iv != nil { + // Put initialization vector in buffer, do a single write to send both + // iv and data. + copy(cipherData, iv) + } + + c.encrypt(cipherData[len(iv):], b) + n, err = c.Conn.Write(cipherData) + return +} diff --git a/vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/encrypt.go b/vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/encrypt.go new file mode 100644 index 0000000..146947d --- /dev/null +++ b/vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/encrypt.go @@ -0,0 +1,257 @@ +package shadowsocks + +import ( + "crypto/aes" + "crypto/cipher" + "crypto/des" + "crypto/md5" + "crypto/rand" + "crypto/rc4" + "encoding/binary" + "errors" + "io" + "strings" + + "github.com/codahale/chacha20" + "golang.org/x/crypto/blowfish" + "golang.org/x/crypto/cast5" + "golang.org/x/crypto/salsa20/salsa" +) + +var errEmptyPassword = errors.New("empty key") + +func md5sum(d []byte) []byte { + h := md5.New() + h.Write(d) + return h.Sum(nil) +} + +func evpBytesToKey(password string, keyLen int) (key []byte) { + const md5Len = 16 + + cnt := (keyLen-1)/md5Len + 1 + m := make([]byte, cnt*md5Len) + copy(m, md5sum([]byte(password))) + + // Repeatedly call md5 until bytes generated is enough. + // Each call to md5 uses data: prev md5 sum + password. + d := make([]byte, md5Len+len(password)) + start := 0 + for i := 1; i < cnt; i++ { + start += md5Len + copy(d, m[start-md5Len:start]) + copy(d[md5Len:], password) + copy(m[start:], md5sum(d)) + } + return m[:keyLen] +} + +type DecOrEnc int + +const ( + Decrypt DecOrEnc = iota + Encrypt +) + +func newStream(block cipher.Block, err error, key, iv []byte, + doe DecOrEnc) (cipher.Stream, error) { + if err != nil { + return nil, err + } + if doe == Encrypt { + return cipher.NewCFBEncrypter(block, iv), nil + } else { + return cipher.NewCFBDecrypter(block, iv), nil + } +} + +func newAESStream(key, iv []byte, doe DecOrEnc) (cipher.Stream, error) { + block, err := aes.NewCipher(key) + return newStream(block, err, key, iv, doe) +} + +func newDESStream(key, iv []byte, doe DecOrEnc) (cipher.Stream, error) { + block, err := des.NewCipher(key) + return newStream(block, err, key, iv, doe) +} + +func newBlowFishStream(key, iv []byte, doe DecOrEnc) (cipher.Stream, error) { + block, err := blowfish.NewCipher(key) + return newStream(block, err, key, iv, doe) +} + +func newCast5Stream(key, iv []byte, doe DecOrEnc) (cipher.Stream, error) { + block, err := cast5.NewCipher(key) + return newStream(block, err, key, iv, doe) +} + +func newRC4MD5Stream(key, iv []byte, _ DecOrEnc) (cipher.Stream, error) { + h := md5.New() + h.Write(key) + h.Write(iv) + rc4key := h.Sum(nil) + + return rc4.NewCipher(rc4key) +} + +func newChaCha20Stream(key, iv []byte, _ DecOrEnc) (cipher.Stream, error) { + return chacha20.New(key, iv) +} + +type salsaStreamCipher struct { + nonce [8]byte + key [32]byte + counter int +} + +func (c *salsaStreamCipher) XORKeyStream(dst, src []byte) { + var buf []byte + padLen := c.counter % 64 + dataSize := len(src) + padLen + if cap(dst) >= dataSize { + buf = dst[:dataSize] + } else if leakyBufSize >= dataSize { + buf = leakyBuf.Get() + defer leakyBuf.Put(buf) + buf = buf[:dataSize] + } else { + buf = make([]byte, dataSize) + } + + var subNonce [16]byte + copy(subNonce[:], c.nonce[:]) + binary.LittleEndian.PutUint64(subNonce[len(c.nonce):], uint64(c.counter/64)) + + // It's difficult to avoid data copy here. src or dst maybe slice from + // Conn.Read/Write, which can't have padding. + copy(buf[padLen:], src[:]) + salsa.XORKeyStream(buf, buf, &subNonce, &c.key) + copy(dst, buf[padLen:]) + + c.counter += len(src) +} + +func newSalsa20Stream(key, iv []byte, _ DecOrEnc) (cipher.Stream, error) { + var c salsaStreamCipher + copy(c.nonce[:], iv[:8]) + copy(c.key[:], key[:32]) + return &c, nil +} + +type cipherInfo struct { + keyLen int + ivLen int + newStream func(key, iv []byte, doe DecOrEnc) (cipher.Stream, error) +} + +var cipherMethod = map[string]*cipherInfo{ + "aes-128-cfb": {16, 16, newAESStream}, + "aes-192-cfb": {24, 16, newAESStream}, + "aes-256-cfb": {32, 16, newAESStream}, + "des-cfb": {8, 8, newDESStream}, + "bf-cfb": {16, 8, newBlowFishStream}, + "cast5-cfb": {16, 8, newCast5Stream}, + "rc4-md5": {16, 16, newRC4MD5Stream}, + "chacha20": {32, 8, newChaCha20Stream}, + "salsa20": {32, 8, newSalsa20Stream}, +} + +func CheckCipherMethod(method string) error { + if method == "" { + method = "aes-256-cfb" + } + _, ok := cipherMethod[method] + if !ok { + return errors.New("Unsupported encryption method: " + method) + } + return nil +} + +type Cipher struct { + enc cipher.Stream + dec cipher.Stream + key []byte + info *cipherInfo + ota bool // one-time auth + iv []byte +} + +// NewCipher creates a cipher that can be used in Dial() etc. +// Use cipher.Copy() to create a new cipher with the same method and password +// to avoid the cost of repeated cipher initialization. +func NewCipher(method, password string) (c *Cipher, err error) { + if password == "" { + return nil, errEmptyPassword + } + var ota bool + if strings.HasSuffix(strings.ToLower(method), "-auth") { + method = method[:len(method)-5] // len("-auth") = 5 + ota = true + } else { + ota = false + } + mi, ok := cipherMethod[method] + if !ok { + return nil, errors.New("Unsupported encryption method: " + method) + } + + key := evpBytesToKey(password, mi.keyLen) + + c = &Cipher{key: key, info: mi} + + if err != nil { + return nil, err + } + c.ota = ota + return c, nil +} + +// Initializes the block cipher with CFB mode, returns IV. +func (c *Cipher) initEncrypt() (iv []byte, err error) { + if c.iv == nil { + iv = make([]byte, c.info.ivLen) + if _, err := io.ReadFull(rand.Reader, iv); err != nil { + return nil, err + } + c.iv = iv + } else { + iv = c.iv + } + c.enc, err = c.info.newStream(c.key, iv, Encrypt) + return +} + +func (c *Cipher) initDecrypt(iv []byte) (err error) { + c.dec, err = c.info.newStream(c.key, iv, Decrypt) + return +} + +func (c *Cipher) encrypt(dst, src []byte) { + c.enc.XORKeyStream(dst, src) +} + +func (c *Cipher) decrypt(dst, src []byte) { + c.dec.XORKeyStream(dst, src) +} + +// Copy creates a new cipher at it's initial state. +func (c *Cipher) Copy() *Cipher { + // This optimization maybe not necessary. But without this function, we + // need to maintain a table cache for newTableCipher and use lock to + // protect concurrent access to that cache. + + // AES and DES ciphers does not return specific types, so it's difficult + // to create copy. But their initizliation time is less than 4000ns on my + // 2.26 GHz Intel Core 2 Duo processor. So no need to worry. + + // Currently, blow-fish and cast5 initialization cost is an order of + // maganitude slower than other ciphers. (I'm not sure whether this is + // because the current implementation is not highly optimized, or this is + // the nature of the algorithm.) + + nc := *c + nc.enc = nil + nc.dec = nil + nc.ota = c.ota + return &nc +} diff --git a/vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/leakybuf.go b/vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/leakybuf.go new file mode 100644 index 0000000..b6922eb --- /dev/null +++ b/vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/leakybuf.go @@ -0,0 +1,45 @@ +// Provides leaky buffer, based on the example in Effective Go. +package shadowsocks + +type LeakyBuf struct { + bufSize int // size of each buffer + freeList chan []byte +} + +const leakyBufSize = 4108 // data.len(2) + hmacsha1(10) + data(4096) +const maxNBuf = 2048 + +var leakyBuf = NewLeakyBuf(maxNBuf, leakyBufSize) + +// NewLeakyBuf creates a leaky buffer which can hold at most n buffer, each +// with bufSize bytes. +func NewLeakyBuf(n, bufSize int) *LeakyBuf { + return &LeakyBuf{ + bufSize: bufSize, + freeList: make(chan []byte, n), + } +} + +// Get returns a buffer from the leaky buffer or create a new buffer. +func (lb *LeakyBuf) Get() (b []byte) { + select { + case b = <-lb.freeList: + default: + b = make([]byte, lb.bufSize) + } + return +} + +// Put add the buffer into the free buffer pool for reuse. Panic if the buffer +// size is not the same with the leaky buffer's. This is intended to expose +// error usage of leaky buffer. +func (lb *LeakyBuf) Put(b []byte) { + if len(b) != lb.bufSize { + panic("invalid buffer size that's put into leaky buffer") + } + select { + case lb.freeList <- b: + default: + } + return +} diff --git a/vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/log.go b/vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/log.go new file mode 100644 index 0000000..5b1c960 --- /dev/null +++ b/vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/log.go @@ -0,0 +1,24 @@ +package shadowsocks + +import ( + "log" + "os" +) + +type DebugLog bool + +var Debug DebugLog + +var dbgLog = log.New(os.Stdout, "[DEBUG] ", log.Ltime) + +func (d DebugLog) Printf(format string, args ...interface{}) { + if d { + dbgLog.Printf(format, args...) + } +} + +func (d DebugLog) Println(args ...interface{}) { + if d { + dbgLog.Println(args...) + } +} diff --git a/vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/mergesort.go b/vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/mergesort.go new file mode 100644 index 0000000..606fd90 --- /dev/null +++ b/vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/mergesort.go @@ -0,0 +1,32 @@ +package shadowsocks + +func merge(left, right []uint64, comparison func (uint64, uint64) int64) []uint64 { + result := make([]uint64, len(left) + len(right)) + l, r := 0, 0 + for (l < len(left)) && (r < len(right)) { + if comparison(left[l], right[r]) <= 0 { + result[l + r] = left[l] + l++ + } else { + result[l + r] = right[r] + r++ + } + } + for (l < len(left)) { + result[l + r] = left[l] + l++ + } + for (r < len(right)) { + result[l + r] = right[r] + r++ + } + return result +} + +func Sort(arr []uint64, comparison func (uint64, uint64) int64) []uint64 { + if len(arr) < 2 { + return arr + } + var middle uint64 = uint64(len(arr)/2) + return merge(Sort(arr[0:middle], comparison), Sort(arr[middle:], comparison), comparison) +} diff --git a/vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/pipe.go b/vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/pipe.go new file mode 100644 index 0000000..ca17c00 --- /dev/null +++ b/vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/pipe.go @@ -0,0 +1,100 @@ +package shadowsocks + +import ( + "bytes" + "encoding/binary" + "io" + "net" + "time" +) + +func SetReadTimeout(c net.Conn) { + if readTimeout != 0 { + c.SetReadDeadline(time.Now().Add(readTimeout)) + } +} + +// PipeThenClose copies data from src to dst, closes dst when done. +func PipeThenClose(src, dst net.Conn) { + defer dst.Close() + buf := leakyBuf.Get() + defer leakyBuf.Put(buf) + for { + SetReadTimeout(src) + n, err := src.Read(buf) + // read may return EOF with n > 0 + // should always process n > 0 bytes before handling error + if n > 0 { + // Note: avoid overwrite err returned by Read. + if _, err := dst.Write(buf[0:n]); err != nil { + Debug.Println("write:", err) + break + } + } + if err != nil { + // Always "use of closed network connection", but no easy way to + // identify this specific error. So just leave the error along for now. + // More info here: https://code.google.com/p/go/issues/detail?id=4373 + /* + if bool(Debug) && err != io.EOF { + Debug.Println("read:", err) + } + */ + break + } + } +} + +// PipeThenClose copies data from src to dst, closes dst when done, with ota verification. +func PipeThenCloseOta(src *Conn, dst net.Conn) { + const ( + dataLenLen = 2 + hmacSha1Len = 10 + idxData0 = dataLenLen + hmacSha1Len + ) + + defer func() { + dst.Close() + }() + // sometimes it have to fill large block + buf := leakyBuf.Get() + defer leakyBuf.Put(buf) + for i := 1; ; i += 1 { + SetReadTimeout(src) + if n, err := io.ReadFull(src, buf[:dataLenLen+hmacSha1Len]); err != nil { + if err == io.EOF { + break + } + Debug.Printf("conn=%p #%v read header error n=%v: %v", src, i, n, err) + break + } + dataLen := binary.BigEndian.Uint16(buf[:dataLenLen]) + expectedHmacSha1 := buf[dataLenLen:idxData0] + + var dataBuf []byte + if len(buf) < int(idxData0+dataLen) { + dataBuf = make([]byte, dataLen) + } else { + dataBuf = buf[idxData0 : idxData0+dataLen] + } + if n, err := io.ReadFull(src, dataBuf); err != nil { + if err == io.EOF { + break + } + Debug.Printf("conn=%p #%v read data error n=%v: %v", src, i, n, err) + break + } + chunkIdBytes := make([]byte, 4) + chunkId := src.GetAndIncrChunkId() + binary.BigEndian.PutUint32(chunkIdBytes, chunkId) + actualHmacSha1 := HmacSha1(append(src.GetIv(), chunkIdBytes...), dataBuf) + if !bytes.Equal(expectedHmacSha1, actualHmacSha1) { + Debug.Printf("conn=%p #%v read data hmac-sha1 mismatch, iv=%v chunkId=%v src=%v dst=%v len=%v expeced=%v actual=%v", src, i, src.GetIv(), chunkId, src.RemoteAddr(), dst.RemoteAddr(), dataLen, expectedHmacSha1, actualHmacSha1) + break + } + if n, err := dst.Write(dataBuf); err != nil { + Debug.Printf("conn=%p #%v write data error n=%v: %v", dst, i, n, err) + break + } + } +} diff --git a/vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/proxy.go b/vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/proxy.go new file mode 100644 index 0000000..0b6145b --- /dev/null +++ b/vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/proxy.go @@ -0,0 +1,84 @@ +package shadowsocks + +import ( + "errors" + "strings" + "fmt" + "net" + "time" +) + +type Dialer struct { + cipher *Cipher + server string + support_udp bool +} + +type ProxyConn struct { + *Conn + raddr *ProxyAddr +} + +type ProxyAddr struct { + network string + address string +} + +var ErrNilCipher = errors.New("cipher can't be nil.") + +func NewDialer(server string, cipher *Cipher) (dialer *Dialer, err error) { + // Currently shadowsocks-go do not support UDP + if cipher == nil { + return nil, ErrNilCipher + } + return &Dialer { + cipher: cipher, + server: server, + support_udp: false, + }, nil +} + +func (d *Dialer) Dial(network, addr string) (c net.Conn, err error) { + if strings.HasPrefix(network, "tcp") { + conn, err := Dial(addr, d.server, d.cipher.Copy()) + if err != nil { + return nil, err + } + return &ProxyConn { + Conn: conn, + raddr: &ProxyAddr { + network: network, + address: addr, + }, + }, nil + } + return nil, fmt.Errorf("unsupported connection type: %s", network) +} + +func (c *ProxyConn) LocalAddr() net.Addr { + return c.Conn.LocalAddr() +} + +func (c *ProxyConn) RemoteAddr() net.Addr { + return c.raddr +} + +func (c *ProxyConn) SetDeadline(t time.Time) error { + return c.Conn.SetDeadline(t) +} + +func (c *ProxyConn) SetReadDeadline(t time.Time) error { + return c.Conn.SetReadDeadline(t) +} + +func (c *ProxyConn) SetWriteDeadline(t time.Time) error { + return c.Conn.SetWriteDeadline(t) +} + +func (a *ProxyAddr) Network() string { + return a.network +} + +func (a *ProxyAddr) String() string { + return a.address +} diff --git a/vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/util.go b/vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/util.go new file mode 100644 index 0000000..4cc7c01 --- /dev/null +++ b/vendor/github.com/shadowsocks/shadowsocks-go/shadowsocks/util.go @@ -0,0 +1,60 @@ +package shadowsocks + +import ( + "errors" + "fmt" + "os" + "crypto/hmac" + "crypto/sha1" + "encoding/binary" +) + +func PrintVersion() { + const version = "1.1.5" + fmt.Println("shadowsocks-go version", version) +} + +func IsFileExists(path string) (bool, error) { + stat, err := os.Stat(path) + if err == nil { + if stat.Mode()&os.ModeType == 0 { + return true, nil + } + return false, errors.New(path + " exists but is not regular file") + } + if os.IsNotExist(err) { + return false, nil + } + return false, err +} + +func HmacSha1(key []byte, data []byte) []byte { + hmacSha1 := hmac.New(sha1.New, key) + hmacSha1.Write(data) + return hmacSha1.Sum(nil)[:10] +} + +func otaConnectAuth(iv, key, data []byte) []byte { + return append(data, HmacSha1(append(iv, key...), data)...) +} + +func otaReqChunkAuth(iv []byte, chunkId uint32, data []byte) []byte { + nb := make([]byte, 2) + binary.BigEndian.PutUint16(nb, uint16(len(data))) + chunkIdBytes := make([]byte, 4) + binary.BigEndian.PutUint32(chunkIdBytes, chunkId) + header := append(nb, HmacSha1(append(iv, chunkIdBytes...), data)...) + return append(header, data...) +} + +type ClosedFlag struct { + flag bool +} + +func (flag *ClosedFlag) SetClosed() { + flag.flag = true +} + +func (flag *ClosedFlag) IsClosed() bool { + return flag.flag +} diff --git a/vendor/golang.org/x/crypto/LICENSE b/vendor/golang.org/x/crypto/LICENSE new file mode 100644 index 0000000..6a66aea --- /dev/null +++ b/vendor/golang.org/x/crypto/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2009 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/golang.org/x/crypto/PATENTS b/vendor/golang.org/x/crypto/PATENTS new file mode 100644 index 0000000..7330990 --- /dev/null +++ b/vendor/golang.org/x/crypto/PATENTS @@ -0,0 +1,22 @@ +Additional IP Rights Grant (Patents) + +"This implementation" means the copyrightable works distributed by +Google as part of the Go project. + +Google hereby grants to You a perpetual, worldwide, non-exclusive, +no-charge, royalty-free, irrevocable (except as stated in this section) +patent license to make, have made, use, offer to sell, sell, import, +transfer and otherwise run, modify and propagate the contents of this +implementation of Go, where such license applies only to those patent +claims, both currently owned or controlled by Google and acquired in +the future, licensable by Google that are necessarily infringed by this +implementation of Go. This grant does not include claims that would be +infringed only as a consequence of further modification of this +implementation. If you or your agent or exclusive licensee institute or +order or agree to the institution of patent litigation against any +entity (including a cross-claim or counterclaim in a lawsuit) alleging +that this implementation of Go or any code incorporated within this +implementation of Go constitutes direct or contributory patent +infringement, or inducement of patent infringement, then any patent +rights granted to you under this License for this implementation of Go +shall terminate as of the date such litigation is filed. diff --git a/vendor/golang.org/x/crypto/blowfish/block.go b/vendor/golang.org/x/crypto/blowfish/block.go new file mode 100644 index 0000000..9d80f19 --- /dev/null +++ b/vendor/golang.org/x/crypto/blowfish/block.go @@ -0,0 +1,159 @@ +// 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. + +package blowfish + +// getNextWord returns the next big-endian uint32 value from the byte slice +// at the given position in a circular manner, updating the position. +func getNextWord(b []byte, pos *int) uint32 { + var w uint32 + j := *pos + for i := 0; i < 4; i++ { + w = w<<8 | uint32(b[j]) + j++ + if j >= len(b) { + j = 0 + } + } + *pos = j + return w +} + +// ExpandKey performs a key expansion on the given *Cipher. Specifically, it +// performs the Blowfish algorithm's key schedule which sets up the *Cipher's +// pi and substitution tables for calls to Encrypt. This is used, primarily, +// by the bcrypt package to reuse the Blowfish key schedule during its +// set up. It's unlikely that you need to use this directly. +func ExpandKey(key []byte, c *Cipher) { + j := 0 + for i := 0; i < 18; i++ { + // Using inlined getNextWord for performance. + var d uint32 + for k := 0; k < 4; k++ { + d = d<<8 | uint32(key[j]) + j++ + if j >= len(key) { + j = 0 + } + } + c.p[i] ^= d + } + + var l, r uint32 + for i := 0; i < 18; i += 2 { + l, r = encryptBlock(l, r, c) + c.p[i], c.p[i+1] = l, r + } + + for i := 0; i < 256; i += 2 { + l, r = encryptBlock(l, r, c) + c.s0[i], c.s0[i+1] = l, r + } + for i := 0; i < 256; i += 2 { + l, r = encryptBlock(l, r, c) + c.s1[i], c.s1[i+1] = l, r + } + for i := 0; i < 256; i += 2 { + l, r = encryptBlock(l, r, c) + c.s2[i], c.s2[i+1] = l, r + } + for i := 0; i < 256; i += 2 { + l, r = encryptBlock(l, r, c) + c.s3[i], c.s3[i+1] = l, r + } +} + +// This is similar to ExpandKey, but folds the salt during the key +// schedule. While ExpandKey is essentially expandKeyWithSalt with an all-zero +// salt passed in, reusing ExpandKey turns out to be a place of inefficiency +// and specializing it here is useful. +func expandKeyWithSalt(key []byte, salt []byte, c *Cipher) { + j := 0 + for i := 0; i < 18; i++ { + c.p[i] ^= getNextWord(key, &j) + } + + j = 0 + var l, r uint32 + for i := 0; i < 18; i += 2 { + l ^= getNextWord(salt, &j) + r ^= getNextWord(salt, &j) + l, r = encryptBlock(l, r, c) + c.p[i], c.p[i+1] = l, r + } + + for i := 0; i < 256; i += 2 { + l ^= getNextWord(salt, &j) + r ^= getNextWord(salt, &j) + l, r = encryptBlock(l, r, c) + c.s0[i], c.s0[i+1] = l, r + } + + for i := 0; i < 256; i += 2 { + l ^= getNextWord(salt, &j) + r ^= getNextWord(salt, &j) + l, r = encryptBlock(l, r, c) + c.s1[i], c.s1[i+1] = l, r + } + + for i := 0; i < 256; i += 2 { + l ^= getNextWord(salt, &j) + r ^= getNextWord(salt, &j) + l, r = encryptBlock(l, r, c) + c.s2[i], c.s2[i+1] = l, r + } + + for i := 0; i < 256; i += 2 { + l ^= getNextWord(salt, &j) + r ^= getNextWord(salt, &j) + l, r = encryptBlock(l, r, c) + c.s3[i], c.s3[i+1] = l, r + } +} + +func encryptBlock(l, r uint32, c *Cipher) (uint32, uint32) { + xl, xr := l, r + xl ^= c.p[0] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[1] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[2] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[3] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[4] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[5] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[6] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[7] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[8] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[9] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[10] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[11] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[12] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[13] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[14] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[15] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[16] + xr ^= c.p[17] + return xr, xl +} + +func decryptBlock(l, r uint32, c *Cipher) (uint32, uint32) { + xl, xr := l, r + xl ^= c.p[17] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[16] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[15] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[14] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[13] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[12] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[11] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[10] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[9] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[8] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[7] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[6] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[5] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[4] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[3] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[2] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[1] + xr ^= c.p[0] + return xr, xl +} diff --git a/vendor/golang.org/x/crypto/blowfish/cipher.go b/vendor/golang.org/x/crypto/blowfish/cipher.go new file mode 100644 index 0000000..65fa760 --- /dev/null +++ b/vendor/golang.org/x/crypto/blowfish/cipher.go @@ -0,0 +1,91 @@ +// 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. + +// Package blowfish implements Bruce Schneier's Blowfish encryption algorithm. +package blowfish + +// The code is a port of Bruce Schneier's C implementation. +// See http://www.schneier.com/blowfish.html. + +import "strconv" + +// The Blowfish block size in bytes. +const BlockSize = 8 + +// A Cipher is an instance of Blowfish encryption using a particular key. +type Cipher struct { + p [18]uint32 + s0, s1, s2, s3 [256]uint32 +} + +type KeySizeError int + +func (k KeySizeError) Error() string { + return "crypto/blowfish: invalid key size " + strconv.Itoa(int(k)) +} + +// NewCipher creates and returns a Cipher. +// The key argument should be the Blowfish key, from 1 to 56 bytes. +func NewCipher(key []byte) (*Cipher, error) { + var result Cipher + if k := len(key); k < 1 || k > 56 { + return nil, KeySizeError(k) + } + initCipher(&result) + ExpandKey(key, &result) + return &result, nil +} + +// NewSaltedCipher creates a returns a Cipher that folds a salt into its key +// schedule. For most purposes, NewCipher, instead of NewSaltedCipher, is +// sufficient and desirable. For bcrypt compatibility, the key can be over 56 +// bytes. +func NewSaltedCipher(key, salt []byte) (*Cipher, error) { + if len(salt) == 0 { + return NewCipher(key) + } + var result Cipher + if k := len(key); k < 1 { + return nil, KeySizeError(k) + } + initCipher(&result) + expandKeyWithSalt(key, salt, &result) + return &result, nil +} + +// BlockSize returns the Blowfish block size, 8 bytes. +// It is necessary to satisfy the Block interface in the +// package "crypto/cipher". +func (c *Cipher) BlockSize() int { return BlockSize } + +// Encrypt encrypts the 8-byte buffer src using the key k +// and stores the result in dst. +// Note that for amounts of data larger than a block, +// it is not safe to just call Encrypt on successive blocks; +// instead, use an encryption mode like CBC (see crypto/cipher/cbc.go). +func (c *Cipher) Encrypt(dst, src []byte) { + l := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) + r := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) + l, r = encryptBlock(l, r, c) + dst[0], dst[1], dst[2], dst[3] = byte(l>>24), byte(l>>16), byte(l>>8), byte(l) + dst[4], dst[5], dst[6], dst[7] = byte(r>>24), byte(r>>16), byte(r>>8), byte(r) +} + +// Decrypt decrypts the 8-byte buffer src using the key k +// and stores the result in dst. +func (c *Cipher) Decrypt(dst, src []byte) { + l := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) + r := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) + l, r = decryptBlock(l, r, c) + dst[0], dst[1], dst[2], dst[3] = byte(l>>24), byte(l>>16), byte(l>>8), byte(l) + dst[4], dst[5], dst[6], dst[7] = byte(r>>24), byte(r>>16), byte(r>>8), byte(r) +} + +func initCipher(c *Cipher) { + copy(c.p[0:], p[0:]) + copy(c.s0[0:], s0[0:]) + copy(c.s1[0:], s1[0:]) + copy(c.s2[0:], s2[0:]) + copy(c.s3[0:], s3[0:]) +} diff --git a/vendor/golang.org/x/crypto/blowfish/const.go b/vendor/golang.org/x/crypto/blowfish/const.go new file mode 100644 index 0000000..8c5ee4c --- /dev/null +++ b/vendor/golang.org/x/crypto/blowfish/const.go @@ -0,0 +1,199 @@ +// 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. + +// The startup permutation array and substitution boxes. +// They are the hexadecimal digits of PI; see: +// http://www.schneier.com/code/constants.txt. + +package blowfish + +var s0 = [256]uint32{ + 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96, + 0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16, + 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, 0x0d95748f, 0x728eb658, + 0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, + 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e, + 0x6c9e0e8b, 0xb01e8a3e, 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60, + 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, 0x55ca396a, 0x2aab10b6, + 0xb4cc5c34, 0x1141e8ce, 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a, + 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c, + 0x7a325381, 0x28958677, 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193, + 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, 0xef845d5d, 0xe98575b1, + 0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239, + 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a, + 0x670c9c61, 0xabd388f0, 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, + 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, 0xa1f1651d, 0x39af0176, + 0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe, + 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, 0x4ed3aa62, 0x363f7706, + 0x1bfedf72, 0x429b023d, 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b, + 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, 0xe3fe501a, 0xb6794c3b, + 0x976ce0bd, 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463, + 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f, 0x9b30952c, + 0xcc814544, 0xaf5ebd09, 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3, + 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, 0x5579c0bd, 0x1a60320a, + 0xd6a100c6, 0x402c7279, 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, + 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760, + 0x53317b48, 0x3e00df82, 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db, + 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, 0x695b27b0, 0xbbca58c8, + 0xe1ffa35d, 0xb8f011a0, 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, + 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33, + 0x62fb1341, 0xcee4c6e8, 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4, + 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, 0xd08ed1d0, 0xafc725e0, + 0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c, + 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777, + 0xea752dfe, 0x8b021fa1, 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, + 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, 0x165fa266, 0x80957705, + 0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf, + 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, 0x00250e2d, 0x2071b35e, + 0x226800bb, 0x57b8e0af, 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa, + 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, 0x83260376, 0x6295cfa9, + 0x11c81968, 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915, + 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5, 0x571be91f, + 0xf296ec6b, 0x2a0dd915, 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664, + 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a, +} + +var s1 = [256]uint32{ + 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, 0xad6ea6b0, 0x49a7df7d, + 0x9cee60b8, 0x8fedb266, 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, + 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, 0x3f54989a, 0x5b429d65, + 0x6b8fe4d6, 0x99f73fd6, 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, + 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, 0x09686b3f, 0x3ebaefc9, + 0x3c971814, 0x6b6a70a1, 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, + 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, 0xb03ada37, 0xf0500c0d, + 0xf01c1f04, 0x0200b3ff, 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, + 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc, + 0xc8b57634, 0x9af3dda7, 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, + 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, 0x4e548b38, 0x4f6db908, + 0x6f420d03, 0xf60a04bf, 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, + 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124, + 0x501adde6, 0x9f84cd87, 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, + 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, 0xef1c1847, 0x3215d908, + 0xdd433b37, 0x24c2ba16, 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, + 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, 0x043556f1, 0xd7a3c76b, + 0x3c11183b, 0x5924a509, 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, + 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, 0x771fe71c, 0x4e3d06fa, + 0x2965dcb9, 0x99e71d0f, 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, + 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, 0xf2f74ea7, 0x361d2b3d, + 0x1939260f, 0x19c27960, 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, + 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, 0xc332ddef, 0xbe6c5aa5, + 0x65582185, 0x68ab9802, 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, + 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, 0x13cca830, 0xeb61bd96, + 0x0334fe1e, 0xaa0363cf, 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, + 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, 0x648b1eaf, 0x19bdf0ca, + 0xa02369b9, 0x655abb50, 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, + 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77, + 0x11ed935f, 0x16681281, 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, + 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, 0xcdb30aeb, 0x532e3054, + 0x8fd948e4, 0x6dbc3128, 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, + 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea, + 0xdb6c4f15, 0xfacb4fd0, 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, + 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, 0xcf62a1f2, 0x5b8d2646, + 0xfc8883a0, 0xc1c7b6a3, 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, + 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, 0x58428d2a, 0x0c55f5ea, + 0x1dadf43e, 0x233f7061, 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, + 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, 0xa6078084, 0x19f8509e, + 0xe8efd855, 0x61d99735, 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, + 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, 0xdb73dbd3, 0x105588cd, + 0x675fda79, 0xe3674340, 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, + 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7, +} + +var s2 = [256]uint32{ + 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, 0x411520f7, 0x7602d4f7, + 0xbcf46b2e, 0xd4a20068, 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, + 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, 0x4d95fc1d, 0x96b591af, + 0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504, + 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, 0x28507825, 0x530429f4, + 0x0a2c86da, 0xe9b66dfb, 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee, + 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, 0xaace1e7c, 0xd3375fec, + 0xce78a399, 0x406b2a42, 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b, + 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, 0x3a6efa74, 0xdd5b4332, + 0x6841e7f7, 0xca7820fb, 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527, + 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, 0x55a867bc, 0xa1159a58, + 0xcca92963, 0x99e1db33, 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, + 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, 0x95c11548, 0xe4c66d22, + 0x48c1133f, 0xc70f86dc, 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17, + 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, 0x257b7834, 0x602a9c60, + 0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115, + 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, 0x85b2a20e, 0xe6ba0d99, + 0xde720c8c, 0x2da2f728, 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0, + 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, 0x0a476341, 0x992eff74, + 0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d, + 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, 0xf1290dc7, 0xcc00ffa3, + 0xb5390f92, 0x690fed0b, 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, + 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, 0x37392eb3, 0xcc115979, + 0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c, + 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, 0x1a6b1018, 0x11caedfa, + 0x3d25bdd8, 0xe2e1c3c9, 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a, + 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, 0x9dbc8057, 0xf0f7c086, + 0x60787bf8, 0x6003604d, 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc, + 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, 0x77a057be, 0xbde8ae24, + 0x55464299, 0xbf582e61, 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2, + 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, 0x7aeb2661, 0x8b1ddf84, + 0x846a0e79, 0x915f95e2, 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, + 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, 0xb77f19b6, 0xe0a9dc09, + 0x662d09a1, 0xc4324633, 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10, + 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, 0xdcb7da83, 0x573906fe, + 0xa1e2ce9b, 0x4fcd7f52, 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027, + 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, 0xf0177a28, 0xc0f586e0, + 0x006058aa, 0x30dc7d62, 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634, + 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, 0x6f05e409, 0x4b7c0188, + 0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc, + 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, 0x1e50ef5e, 0xb161e6f8, + 0xa28514d9, 0x6c51133c, 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, + 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0, +} + +var s3 = [256]uint32{ + 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742, + 0xd3822740, 0x99bc9bbe, 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b, + 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, 0x5748ab2f, 0xbc946e79, + 0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6, + 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a, + 0x63ef8ce2, 0x9a86ee22, 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, + 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, 0x2826a2f9, 0xa73a3ae1, + 0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59, + 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, 0xe990fd5a, 0x9e34d797, + 0x2cf0b7d9, 0x022b8b51, 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, + 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, 0xe029ac71, 0xe019a5e6, + 0x47b0acfd, 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28, + 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4, 0x88f46dba, + 0x03a16125, 0x0564f0bd, 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a, + 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, 0x7533d928, 0xb155fdf5, + 0x03563482, 0x8aba3cbb, 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, + 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce, + 0x5121ce64, 0x774fbe32, 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680, + 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, 0xb39a460a, 0x6445c0dd, + 0x586cdecf, 0x1c20c8ae, 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, + 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb, + 0x8d6612ae, 0xbf3c6f47, 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370, + 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, 0x4040cb08, 0x4eb4e2cc, + 0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048, + 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, 0x611560b1, 0xe7933fdc, + 0xbb3a792b, 0x344525bd, 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, + 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, 0x1a908749, 0xd44fbd9a, + 0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f, + 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, 0xbf97222c, 0x15e6fc2a, + 0x0f91fc71, 0x9b941525, 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1, + 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, 0xe0ec6e0e, 0x1698db3b, + 0x4c98a0be, 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e, + 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d, 0x9b992f2e, + 0xe60b6f47, 0x0fe3f11d, 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f, + 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, 0xf523f357, 0xa6327623, + 0x93a83531, 0x56cccd02, 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, + 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a, + 0x45e1d006, 0xc3f27b9a, 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6, + 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, 0x53113ec0, 0x1640e3d3, + 0x38abbd60, 0x2547adf0, 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060, + 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c, + 0x01c36ae4, 0xd6ebe1f9, 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f, + 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6, +} + +var p = [18]uint32{ + 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822, 0x299f31d0, + 0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c, + 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, 0x9216d5d9, 0x8979fb1b, +} diff --git a/vendor/golang.org/x/crypto/cast5/cast5.go b/vendor/golang.org/x/crypto/cast5/cast5.go new file mode 100644 index 0000000..8c1b299 --- /dev/null +++ b/vendor/golang.org/x/crypto/cast5/cast5.go @@ -0,0 +1,526 @@ +// 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. + +// Package cast5 implements CAST5, as defined in RFC 2144. CAST5 is a common +// OpenPGP cipher. +package cast5 + +import "errors" + +const BlockSize = 8 +const KeySize = 16 + +type Cipher struct { + masking [16]uint32 + rotate [16]uint8 +} + +func NewCipher(key []byte) (c *Cipher, err error) { + if len(key) != KeySize { + return nil, errors.New("CAST5: keys must be 16 bytes") + } + + c = new(Cipher) + c.keySchedule(key) + return +} + +func (c *Cipher) BlockSize() int { + return BlockSize +} + +func (c *Cipher) Encrypt(dst, src []byte) { + l := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) + r := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) + + l, r = r, l^f1(r, c.masking[0], c.rotate[0]) + l, r = r, l^f2(r, c.masking[1], c.rotate[1]) + l, r = r, l^f3(r, c.masking[2], c.rotate[2]) + l, r = r, l^f1(r, c.masking[3], c.rotate[3]) + + l, r = r, l^f2(r, c.masking[4], c.rotate[4]) + l, r = r, l^f3(r, c.masking[5], c.rotate[5]) + l, r = r, l^f1(r, c.masking[6], c.rotate[6]) + l, r = r, l^f2(r, c.masking[7], c.rotate[7]) + + l, r = r, l^f3(r, c.masking[8], c.rotate[8]) + l, r = r, l^f1(r, c.masking[9], c.rotate[9]) + l, r = r, l^f2(r, c.masking[10], c.rotate[10]) + l, r = r, l^f3(r, c.masking[11], c.rotate[11]) + + l, r = r, l^f1(r, c.masking[12], c.rotate[12]) + l, r = r, l^f2(r, c.masking[13], c.rotate[13]) + l, r = r, l^f3(r, c.masking[14], c.rotate[14]) + l, r = r, l^f1(r, c.masking[15], c.rotate[15]) + + dst[0] = uint8(r >> 24) + dst[1] = uint8(r >> 16) + dst[2] = uint8(r >> 8) + dst[3] = uint8(r) + dst[4] = uint8(l >> 24) + dst[5] = uint8(l >> 16) + dst[6] = uint8(l >> 8) + dst[7] = uint8(l) +} + +func (c *Cipher) Decrypt(dst, src []byte) { + l := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) + r := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) + + l, r = r, l^f1(r, c.masking[15], c.rotate[15]) + l, r = r, l^f3(r, c.masking[14], c.rotate[14]) + l, r = r, l^f2(r, c.masking[13], c.rotate[13]) + l, r = r, l^f1(r, c.masking[12], c.rotate[12]) + + l, r = r, l^f3(r, c.masking[11], c.rotate[11]) + l, r = r, l^f2(r, c.masking[10], c.rotate[10]) + l, r = r, l^f1(r, c.masking[9], c.rotate[9]) + l, r = r, l^f3(r, c.masking[8], c.rotate[8]) + + l, r = r, l^f2(r, c.masking[7], c.rotate[7]) + l, r = r, l^f1(r, c.masking[6], c.rotate[6]) + l, r = r, l^f3(r, c.masking[5], c.rotate[5]) + l, r = r, l^f2(r, c.masking[4], c.rotate[4]) + + l, r = r, l^f1(r, c.masking[3], c.rotate[3]) + l, r = r, l^f3(r, c.masking[2], c.rotate[2]) + l, r = r, l^f2(r, c.masking[1], c.rotate[1]) + l, r = r, l^f1(r, c.masking[0], c.rotate[0]) + + dst[0] = uint8(r >> 24) + dst[1] = uint8(r >> 16) + dst[2] = uint8(r >> 8) + dst[3] = uint8(r) + dst[4] = uint8(l >> 24) + dst[5] = uint8(l >> 16) + dst[6] = uint8(l >> 8) + dst[7] = uint8(l) +} + +type keyScheduleA [4][7]uint8 +type keyScheduleB [4][5]uint8 + +// keyScheduleRound contains the magic values for a round of the key schedule. +// The keyScheduleA deals with the lines like: +// z0z1z2z3 = x0x1x2x3 ^ S5[xD] ^ S6[xF] ^ S7[xC] ^ S8[xE] ^ S7[x8] +// Conceptually, both x and z are in the same array, x first. The first +// element describes which word of this array gets written to and the +// second, which word gets read. So, for the line above, it's "4, 0", because +// it's writing to the first word of z, which, being after x, is word 4, and +// reading from the first word of x: word 0. +// +// Next are the indexes into the S-boxes. Now the array is treated as bytes. So +// "xD" is 0xd. The first byte of z is written as "16 + 0", just to be clear +// that it's z that we're indexing. +// +// keyScheduleB deals with lines like: +// K1 = S5[z8] ^ S6[z9] ^ S7[z7] ^ S8[z6] ^ S5[z2] +// "K1" is ignored because key words are always written in order. So the five +// elements are the S-box indexes. They use the same form as in keyScheduleA, +// above. + +type keyScheduleRound struct{} +type keySchedule []keyScheduleRound + +var schedule = []struct { + a keyScheduleA + b keyScheduleB +}{ + { + keyScheduleA{ + {4, 0, 0xd, 0xf, 0xc, 0xe, 0x8}, + {5, 2, 16 + 0, 16 + 2, 16 + 1, 16 + 3, 0xa}, + {6, 3, 16 + 7, 16 + 6, 16 + 5, 16 + 4, 9}, + {7, 1, 16 + 0xa, 16 + 9, 16 + 0xb, 16 + 8, 0xb}, + }, + keyScheduleB{ + {16 + 8, 16 + 9, 16 + 7, 16 + 6, 16 + 2}, + {16 + 0xa, 16 + 0xb, 16 + 5, 16 + 4, 16 + 6}, + {16 + 0xc, 16 + 0xd, 16 + 3, 16 + 2, 16 + 9}, + {16 + 0xe, 16 + 0xf, 16 + 1, 16 + 0, 16 + 0xc}, + }, + }, + { + keyScheduleA{ + {0, 6, 16 + 5, 16 + 7, 16 + 4, 16 + 6, 16 + 0}, + {1, 4, 0, 2, 1, 3, 16 + 2}, + {2, 5, 7, 6, 5, 4, 16 + 1}, + {3, 7, 0xa, 9, 0xb, 8, 16 + 3}, + }, + keyScheduleB{ + {3, 2, 0xc, 0xd, 8}, + {1, 0, 0xe, 0xf, 0xd}, + {7, 6, 8, 9, 3}, + {5, 4, 0xa, 0xb, 7}, + }, + }, + { + keyScheduleA{ + {4, 0, 0xd, 0xf, 0xc, 0xe, 8}, + {5, 2, 16 + 0, 16 + 2, 16 + 1, 16 + 3, 0xa}, + {6, 3, 16 + 7, 16 + 6, 16 + 5, 16 + 4, 9}, + {7, 1, 16 + 0xa, 16 + 9, 16 + 0xb, 16 + 8, 0xb}, + }, + keyScheduleB{ + {16 + 3, 16 + 2, 16 + 0xc, 16 + 0xd, 16 + 9}, + {16 + 1, 16 + 0, 16 + 0xe, 16 + 0xf, 16 + 0xc}, + {16 + 7, 16 + 6, 16 + 8, 16 + 9, 16 + 2}, + {16 + 5, 16 + 4, 16 + 0xa, 16 + 0xb, 16 + 6}, + }, + }, + { + keyScheduleA{ + {0, 6, 16 + 5, 16 + 7, 16 + 4, 16 + 6, 16 + 0}, + {1, 4, 0, 2, 1, 3, 16 + 2}, + {2, 5, 7, 6, 5, 4, 16 + 1}, + {3, 7, 0xa, 9, 0xb, 8, 16 + 3}, + }, + keyScheduleB{ + {8, 9, 7, 6, 3}, + {0xa, 0xb, 5, 4, 7}, + {0xc, 0xd, 3, 2, 8}, + {0xe, 0xf, 1, 0, 0xd}, + }, + }, +} + +func (c *Cipher) keySchedule(in []byte) { + var t [8]uint32 + var k [32]uint32 + + for i := 0; i < 4; i++ { + j := i * 4 + t[i] = uint32(in[j])<<24 | uint32(in[j+1])<<16 | uint32(in[j+2])<<8 | uint32(in[j+3]) + } + + x := []byte{6, 7, 4, 5} + ki := 0 + + for half := 0; half < 2; half++ { + for _, round := range schedule { + for j := 0; j < 4; j++ { + var a [7]uint8 + copy(a[:], round.a[j][:]) + w := t[a[1]] + w ^= sBox[4][(t[a[2]>>2]>>(24-8*(a[2]&3)))&0xff] + w ^= sBox[5][(t[a[3]>>2]>>(24-8*(a[3]&3)))&0xff] + w ^= sBox[6][(t[a[4]>>2]>>(24-8*(a[4]&3)))&0xff] + w ^= sBox[7][(t[a[5]>>2]>>(24-8*(a[5]&3)))&0xff] + w ^= sBox[x[j]][(t[a[6]>>2]>>(24-8*(a[6]&3)))&0xff] + t[a[0]] = w + } + + for j := 0; j < 4; j++ { + var b [5]uint8 + copy(b[:], round.b[j][:]) + w := sBox[4][(t[b[0]>>2]>>(24-8*(b[0]&3)))&0xff] + w ^= sBox[5][(t[b[1]>>2]>>(24-8*(b[1]&3)))&0xff] + w ^= sBox[6][(t[b[2]>>2]>>(24-8*(b[2]&3)))&0xff] + w ^= sBox[7][(t[b[3]>>2]>>(24-8*(b[3]&3)))&0xff] + w ^= sBox[4+j][(t[b[4]>>2]>>(24-8*(b[4]&3)))&0xff] + k[ki] = w + ki++ + } + } + } + + for i := 0; i < 16; i++ { + c.masking[i] = k[i] + c.rotate[i] = uint8(k[16+i] & 0x1f) + } +} + +// These are the three 'f' functions. See RFC 2144, section 2.2. +func f1(d, m uint32, r uint8) uint32 { + t := m + d + I := (t << r) | (t >> (32 - r)) + return ((sBox[0][I>>24] ^ sBox[1][(I>>16)&0xff]) - sBox[2][(I>>8)&0xff]) + sBox[3][I&0xff] +} + +func f2(d, m uint32, r uint8) uint32 { + t := m ^ d + I := (t << r) | (t >> (32 - r)) + return ((sBox[0][I>>24] - sBox[1][(I>>16)&0xff]) + sBox[2][(I>>8)&0xff]) ^ sBox[3][I&0xff] +} + +func f3(d, m uint32, r uint8) uint32 { + t := m - d + I := (t << r) | (t >> (32 - r)) + return ((sBox[0][I>>24] + sBox[1][(I>>16)&0xff]) ^ sBox[2][(I>>8)&0xff]) - sBox[3][I&0xff] +} + +var sBox = [8][256]uint32{ + { + 0x30fb40d4, 0x9fa0ff0b, 0x6beccd2f, 0x3f258c7a, 0x1e213f2f, 0x9c004dd3, 0x6003e540, 0xcf9fc949, + 0xbfd4af27, 0x88bbbdb5, 0xe2034090, 0x98d09675, 0x6e63a0e0, 0x15c361d2, 0xc2e7661d, 0x22d4ff8e, + 0x28683b6f, 0xc07fd059, 0xff2379c8, 0x775f50e2, 0x43c340d3, 0xdf2f8656, 0x887ca41a, 0xa2d2bd2d, + 0xa1c9e0d6, 0x346c4819, 0x61b76d87, 0x22540f2f, 0x2abe32e1, 0xaa54166b, 0x22568e3a, 0xa2d341d0, + 0x66db40c8, 0xa784392f, 0x004dff2f, 0x2db9d2de, 0x97943fac, 0x4a97c1d8, 0x527644b7, 0xb5f437a7, + 0xb82cbaef, 0xd751d159, 0x6ff7f0ed, 0x5a097a1f, 0x827b68d0, 0x90ecf52e, 0x22b0c054, 0xbc8e5935, + 0x4b6d2f7f, 0x50bb64a2, 0xd2664910, 0xbee5812d, 0xb7332290, 0xe93b159f, 0xb48ee411, 0x4bff345d, + 0xfd45c240, 0xad31973f, 0xc4f6d02e, 0x55fc8165, 0xd5b1caad, 0xa1ac2dae, 0xa2d4b76d, 0xc19b0c50, + 0x882240f2, 0x0c6e4f38, 0xa4e4bfd7, 0x4f5ba272, 0x564c1d2f, 0xc59c5319, 0xb949e354, 0xb04669fe, + 0xb1b6ab8a, 0xc71358dd, 0x6385c545, 0x110f935d, 0x57538ad5, 0x6a390493, 0xe63d37e0, 0x2a54f6b3, + 0x3a787d5f, 0x6276a0b5, 0x19a6fcdf, 0x7a42206a, 0x29f9d4d5, 0xf61b1891, 0xbb72275e, 0xaa508167, + 0x38901091, 0xc6b505eb, 0x84c7cb8c, 0x2ad75a0f, 0x874a1427, 0xa2d1936b, 0x2ad286af, 0xaa56d291, + 0xd7894360, 0x425c750d, 0x93b39e26, 0x187184c9, 0x6c00b32d, 0x73e2bb14, 0xa0bebc3c, 0x54623779, + 0x64459eab, 0x3f328b82, 0x7718cf82, 0x59a2cea6, 0x04ee002e, 0x89fe78e6, 0x3fab0950, 0x325ff6c2, + 0x81383f05, 0x6963c5c8, 0x76cb5ad6, 0xd49974c9, 0xca180dcf, 0x380782d5, 0xc7fa5cf6, 0x8ac31511, + 0x35e79e13, 0x47da91d0, 0xf40f9086, 0xa7e2419e, 0x31366241, 0x051ef495, 0xaa573b04, 0x4a805d8d, + 0x548300d0, 0x00322a3c, 0xbf64cddf, 0xba57a68e, 0x75c6372b, 0x50afd341, 0xa7c13275, 0x915a0bf5, + 0x6b54bfab, 0x2b0b1426, 0xab4cc9d7, 0x449ccd82, 0xf7fbf265, 0xab85c5f3, 0x1b55db94, 0xaad4e324, + 0xcfa4bd3f, 0x2deaa3e2, 0x9e204d02, 0xc8bd25ac, 0xeadf55b3, 0xd5bd9e98, 0xe31231b2, 0x2ad5ad6c, + 0x954329de, 0xadbe4528, 0xd8710f69, 0xaa51c90f, 0xaa786bf6, 0x22513f1e, 0xaa51a79b, 0x2ad344cc, + 0x7b5a41f0, 0xd37cfbad, 0x1b069505, 0x41ece491, 0xb4c332e6, 0x032268d4, 0xc9600acc, 0xce387e6d, + 0xbf6bb16c, 0x6a70fb78, 0x0d03d9c9, 0xd4df39de, 0xe01063da, 0x4736f464, 0x5ad328d8, 0xb347cc96, + 0x75bb0fc3, 0x98511bfb, 0x4ffbcc35, 0xb58bcf6a, 0xe11f0abc, 0xbfc5fe4a, 0xa70aec10, 0xac39570a, + 0x3f04442f, 0x6188b153, 0xe0397a2e, 0x5727cb79, 0x9ceb418f, 0x1cacd68d, 0x2ad37c96, 0x0175cb9d, + 0xc69dff09, 0xc75b65f0, 0xd9db40d8, 0xec0e7779, 0x4744ead4, 0xb11c3274, 0xdd24cb9e, 0x7e1c54bd, + 0xf01144f9, 0xd2240eb1, 0x9675b3fd, 0xa3ac3755, 0xd47c27af, 0x51c85f4d, 0x56907596, 0xa5bb15e6, + 0x580304f0, 0xca042cf1, 0x011a37ea, 0x8dbfaadb, 0x35ba3e4a, 0x3526ffa0, 0xc37b4d09, 0xbc306ed9, + 0x98a52666, 0x5648f725, 0xff5e569d, 0x0ced63d0, 0x7c63b2cf, 0x700b45e1, 0xd5ea50f1, 0x85a92872, + 0xaf1fbda7, 0xd4234870, 0xa7870bf3, 0x2d3b4d79, 0x42e04198, 0x0cd0ede7, 0x26470db8, 0xf881814c, + 0x474d6ad7, 0x7c0c5e5c, 0xd1231959, 0x381b7298, 0xf5d2f4db, 0xab838653, 0x6e2f1e23, 0x83719c9e, + 0xbd91e046, 0x9a56456e, 0xdc39200c, 0x20c8c571, 0x962bda1c, 0xe1e696ff, 0xb141ab08, 0x7cca89b9, + 0x1a69e783, 0x02cc4843, 0xa2f7c579, 0x429ef47d, 0x427b169c, 0x5ac9f049, 0xdd8f0f00, 0x5c8165bf, + }, + { + 0x1f201094, 0xef0ba75b, 0x69e3cf7e, 0x393f4380, 0xfe61cf7a, 0xeec5207a, 0x55889c94, 0x72fc0651, + 0xada7ef79, 0x4e1d7235, 0xd55a63ce, 0xde0436ba, 0x99c430ef, 0x5f0c0794, 0x18dcdb7d, 0xa1d6eff3, + 0xa0b52f7b, 0x59e83605, 0xee15b094, 0xe9ffd909, 0xdc440086, 0xef944459, 0xba83ccb3, 0xe0c3cdfb, + 0xd1da4181, 0x3b092ab1, 0xf997f1c1, 0xa5e6cf7b, 0x01420ddb, 0xe4e7ef5b, 0x25a1ff41, 0xe180f806, + 0x1fc41080, 0x179bee7a, 0xd37ac6a9, 0xfe5830a4, 0x98de8b7f, 0x77e83f4e, 0x79929269, 0x24fa9f7b, + 0xe113c85b, 0xacc40083, 0xd7503525, 0xf7ea615f, 0x62143154, 0x0d554b63, 0x5d681121, 0xc866c359, + 0x3d63cf73, 0xcee234c0, 0xd4d87e87, 0x5c672b21, 0x071f6181, 0x39f7627f, 0x361e3084, 0xe4eb573b, + 0x602f64a4, 0xd63acd9c, 0x1bbc4635, 0x9e81032d, 0x2701f50c, 0x99847ab4, 0xa0e3df79, 0xba6cf38c, + 0x10843094, 0x2537a95e, 0xf46f6ffe, 0xa1ff3b1f, 0x208cfb6a, 0x8f458c74, 0xd9e0a227, 0x4ec73a34, + 0xfc884f69, 0x3e4de8df, 0xef0e0088, 0x3559648d, 0x8a45388c, 0x1d804366, 0x721d9bfd, 0xa58684bb, + 0xe8256333, 0x844e8212, 0x128d8098, 0xfed33fb4, 0xce280ae1, 0x27e19ba5, 0xd5a6c252, 0xe49754bd, + 0xc5d655dd, 0xeb667064, 0x77840b4d, 0xa1b6a801, 0x84db26a9, 0xe0b56714, 0x21f043b7, 0xe5d05860, + 0x54f03084, 0x066ff472, 0xa31aa153, 0xdadc4755, 0xb5625dbf, 0x68561be6, 0x83ca6b94, 0x2d6ed23b, + 0xeccf01db, 0xa6d3d0ba, 0xb6803d5c, 0xaf77a709, 0x33b4a34c, 0x397bc8d6, 0x5ee22b95, 0x5f0e5304, + 0x81ed6f61, 0x20e74364, 0xb45e1378, 0xde18639b, 0x881ca122, 0xb96726d1, 0x8049a7e8, 0x22b7da7b, + 0x5e552d25, 0x5272d237, 0x79d2951c, 0xc60d894c, 0x488cb402, 0x1ba4fe5b, 0xa4b09f6b, 0x1ca815cf, + 0xa20c3005, 0x8871df63, 0xb9de2fcb, 0x0cc6c9e9, 0x0beeff53, 0xe3214517, 0xb4542835, 0x9f63293c, + 0xee41e729, 0x6e1d2d7c, 0x50045286, 0x1e6685f3, 0xf33401c6, 0x30a22c95, 0x31a70850, 0x60930f13, + 0x73f98417, 0xa1269859, 0xec645c44, 0x52c877a9, 0xcdff33a6, 0xa02b1741, 0x7cbad9a2, 0x2180036f, + 0x50d99c08, 0xcb3f4861, 0xc26bd765, 0x64a3f6ab, 0x80342676, 0x25a75e7b, 0xe4e6d1fc, 0x20c710e6, + 0xcdf0b680, 0x17844d3b, 0x31eef84d, 0x7e0824e4, 0x2ccb49eb, 0x846a3bae, 0x8ff77888, 0xee5d60f6, + 0x7af75673, 0x2fdd5cdb, 0xa11631c1, 0x30f66f43, 0xb3faec54, 0x157fd7fa, 0xef8579cc, 0xd152de58, + 0xdb2ffd5e, 0x8f32ce19, 0x306af97a, 0x02f03ef8, 0x99319ad5, 0xc242fa0f, 0xa7e3ebb0, 0xc68e4906, + 0xb8da230c, 0x80823028, 0xdcdef3c8, 0xd35fb171, 0x088a1bc8, 0xbec0c560, 0x61a3c9e8, 0xbca8f54d, + 0xc72feffa, 0x22822e99, 0x82c570b4, 0xd8d94e89, 0x8b1c34bc, 0x301e16e6, 0x273be979, 0xb0ffeaa6, + 0x61d9b8c6, 0x00b24869, 0xb7ffce3f, 0x08dc283b, 0x43daf65a, 0xf7e19798, 0x7619b72f, 0x8f1c9ba4, + 0xdc8637a0, 0x16a7d3b1, 0x9fc393b7, 0xa7136eeb, 0xc6bcc63e, 0x1a513742, 0xef6828bc, 0x520365d6, + 0x2d6a77ab, 0x3527ed4b, 0x821fd216, 0x095c6e2e, 0xdb92f2fb, 0x5eea29cb, 0x145892f5, 0x91584f7f, + 0x5483697b, 0x2667a8cc, 0x85196048, 0x8c4bacea, 0x833860d4, 0x0d23e0f9, 0x6c387e8a, 0x0ae6d249, + 0xb284600c, 0xd835731d, 0xdcb1c647, 0xac4c56ea, 0x3ebd81b3, 0x230eabb0, 0x6438bc87, 0xf0b5b1fa, + 0x8f5ea2b3, 0xfc184642, 0x0a036b7a, 0x4fb089bd, 0x649da589, 0xa345415e, 0x5c038323, 0x3e5d3bb9, + 0x43d79572, 0x7e6dd07c, 0x06dfdf1e, 0x6c6cc4ef, 0x7160a539, 0x73bfbe70, 0x83877605, 0x4523ecf1, + }, + { + 0x8defc240, 0x25fa5d9f, 0xeb903dbf, 0xe810c907, 0x47607fff, 0x369fe44b, 0x8c1fc644, 0xaececa90, + 0xbeb1f9bf, 0xeefbcaea, 0xe8cf1950, 0x51df07ae, 0x920e8806, 0xf0ad0548, 0xe13c8d83, 0x927010d5, + 0x11107d9f, 0x07647db9, 0xb2e3e4d4, 0x3d4f285e, 0xb9afa820, 0xfade82e0, 0xa067268b, 0x8272792e, + 0x553fb2c0, 0x489ae22b, 0xd4ef9794, 0x125e3fbc, 0x21fffcee, 0x825b1bfd, 0x9255c5ed, 0x1257a240, + 0x4e1a8302, 0xbae07fff, 0x528246e7, 0x8e57140e, 0x3373f7bf, 0x8c9f8188, 0xa6fc4ee8, 0xc982b5a5, + 0xa8c01db7, 0x579fc264, 0x67094f31, 0xf2bd3f5f, 0x40fff7c1, 0x1fb78dfc, 0x8e6bd2c1, 0x437be59b, + 0x99b03dbf, 0xb5dbc64b, 0x638dc0e6, 0x55819d99, 0xa197c81c, 0x4a012d6e, 0xc5884a28, 0xccc36f71, + 0xb843c213, 0x6c0743f1, 0x8309893c, 0x0feddd5f, 0x2f7fe850, 0xd7c07f7e, 0x02507fbf, 0x5afb9a04, + 0xa747d2d0, 0x1651192e, 0xaf70bf3e, 0x58c31380, 0x5f98302e, 0x727cc3c4, 0x0a0fb402, 0x0f7fef82, + 0x8c96fdad, 0x5d2c2aae, 0x8ee99a49, 0x50da88b8, 0x8427f4a0, 0x1eac5790, 0x796fb449, 0x8252dc15, + 0xefbd7d9b, 0xa672597d, 0xada840d8, 0x45f54504, 0xfa5d7403, 0xe83ec305, 0x4f91751a, 0x925669c2, + 0x23efe941, 0xa903f12e, 0x60270df2, 0x0276e4b6, 0x94fd6574, 0x927985b2, 0x8276dbcb, 0x02778176, + 0xf8af918d, 0x4e48f79e, 0x8f616ddf, 0xe29d840e, 0x842f7d83, 0x340ce5c8, 0x96bbb682, 0x93b4b148, + 0xef303cab, 0x984faf28, 0x779faf9b, 0x92dc560d, 0x224d1e20, 0x8437aa88, 0x7d29dc96, 0x2756d3dc, + 0x8b907cee, 0xb51fd240, 0xe7c07ce3, 0xe566b4a1, 0xc3e9615e, 0x3cf8209d, 0x6094d1e3, 0xcd9ca341, + 0x5c76460e, 0x00ea983b, 0xd4d67881, 0xfd47572c, 0xf76cedd9, 0xbda8229c, 0x127dadaa, 0x438a074e, + 0x1f97c090, 0x081bdb8a, 0x93a07ebe, 0xb938ca15, 0x97b03cff, 0x3dc2c0f8, 0x8d1ab2ec, 0x64380e51, + 0x68cc7bfb, 0xd90f2788, 0x12490181, 0x5de5ffd4, 0xdd7ef86a, 0x76a2e214, 0xb9a40368, 0x925d958f, + 0x4b39fffa, 0xba39aee9, 0xa4ffd30b, 0xfaf7933b, 0x6d498623, 0x193cbcfa, 0x27627545, 0x825cf47a, + 0x61bd8ba0, 0xd11e42d1, 0xcead04f4, 0x127ea392, 0x10428db7, 0x8272a972, 0x9270c4a8, 0x127de50b, + 0x285ba1c8, 0x3c62f44f, 0x35c0eaa5, 0xe805d231, 0x428929fb, 0xb4fcdf82, 0x4fb66a53, 0x0e7dc15b, + 0x1f081fab, 0x108618ae, 0xfcfd086d, 0xf9ff2889, 0x694bcc11, 0x236a5cae, 0x12deca4d, 0x2c3f8cc5, + 0xd2d02dfe, 0xf8ef5896, 0xe4cf52da, 0x95155b67, 0x494a488c, 0xb9b6a80c, 0x5c8f82bc, 0x89d36b45, + 0x3a609437, 0xec00c9a9, 0x44715253, 0x0a874b49, 0xd773bc40, 0x7c34671c, 0x02717ef6, 0x4feb5536, + 0xa2d02fff, 0xd2bf60c4, 0xd43f03c0, 0x50b4ef6d, 0x07478cd1, 0x006e1888, 0xa2e53f55, 0xb9e6d4bc, + 0xa2048016, 0x97573833, 0xd7207d67, 0xde0f8f3d, 0x72f87b33, 0xabcc4f33, 0x7688c55d, 0x7b00a6b0, + 0x947b0001, 0x570075d2, 0xf9bb88f8, 0x8942019e, 0x4264a5ff, 0x856302e0, 0x72dbd92b, 0xee971b69, + 0x6ea22fde, 0x5f08ae2b, 0xaf7a616d, 0xe5c98767, 0xcf1febd2, 0x61efc8c2, 0xf1ac2571, 0xcc8239c2, + 0x67214cb8, 0xb1e583d1, 0xb7dc3e62, 0x7f10bdce, 0xf90a5c38, 0x0ff0443d, 0x606e6dc6, 0x60543a49, + 0x5727c148, 0x2be98a1d, 0x8ab41738, 0x20e1be24, 0xaf96da0f, 0x68458425, 0x99833be5, 0x600d457d, + 0x282f9350, 0x8334b362, 0xd91d1120, 0x2b6d8da0, 0x642b1e31, 0x9c305a00, 0x52bce688, 0x1b03588a, + 0xf7baefd5, 0x4142ed9c, 0xa4315c11, 0x83323ec5, 0xdfef4636, 0xa133c501, 0xe9d3531c, 0xee353783, + }, + { + 0x9db30420, 0x1fb6e9de, 0xa7be7bef, 0xd273a298, 0x4a4f7bdb, 0x64ad8c57, 0x85510443, 0xfa020ed1, + 0x7e287aff, 0xe60fb663, 0x095f35a1, 0x79ebf120, 0xfd059d43, 0x6497b7b1, 0xf3641f63, 0x241e4adf, + 0x28147f5f, 0x4fa2b8cd, 0xc9430040, 0x0cc32220, 0xfdd30b30, 0xc0a5374f, 0x1d2d00d9, 0x24147b15, + 0xee4d111a, 0x0fca5167, 0x71ff904c, 0x2d195ffe, 0x1a05645f, 0x0c13fefe, 0x081b08ca, 0x05170121, + 0x80530100, 0xe83e5efe, 0xac9af4f8, 0x7fe72701, 0xd2b8ee5f, 0x06df4261, 0xbb9e9b8a, 0x7293ea25, + 0xce84ffdf, 0xf5718801, 0x3dd64b04, 0xa26f263b, 0x7ed48400, 0x547eebe6, 0x446d4ca0, 0x6cf3d6f5, + 0x2649abdf, 0xaea0c7f5, 0x36338cc1, 0x503f7e93, 0xd3772061, 0x11b638e1, 0x72500e03, 0xf80eb2bb, + 0xabe0502e, 0xec8d77de, 0x57971e81, 0xe14f6746, 0xc9335400, 0x6920318f, 0x081dbb99, 0xffc304a5, + 0x4d351805, 0x7f3d5ce3, 0xa6c866c6, 0x5d5bcca9, 0xdaec6fea, 0x9f926f91, 0x9f46222f, 0x3991467d, + 0xa5bf6d8e, 0x1143c44f, 0x43958302, 0xd0214eeb, 0x022083b8, 0x3fb6180c, 0x18f8931e, 0x281658e6, + 0x26486e3e, 0x8bd78a70, 0x7477e4c1, 0xb506e07c, 0xf32d0a25, 0x79098b02, 0xe4eabb81, 0x28123b23, + 0x69dead38, 0x1574ca16, 0xdf871b62, 0x211c40b7, 0xa51a9ef9, 0x0014377b, 0x041e8ac8, 0x09114003, + 0xbd59e4d2, 0xe3d156d5, 0x4fe876d5, 0x2f91a340, 0x557be8de, 0x00eae4a7, 0x0ce5c2ec, 0x4db4bba6, + 0xe756bdff, 0xdd3369ac, 0xec17b035, 0x06572327, 0x99afc8b0, 0x56c8c391, 0x6b65811c, 0x5e146119, + 0x6e85cb75, 0xbe07c002, 0xc2325577, 0x893ff4ec, 0x5bbfc92d, 0xd0ec3b25, 0xb7801ab7, 0x8d6d3b24, + 0x20c763ef, 0xc366a5fc, 0x9c382880, 0x0ace3205, 0xaac9548a, 0xeca1d7c7, 0x041afa32, 0x1d16625a, + 0x6701902c, 0x9b757a54, 0x31d477f7, 0x9126b031, 0x36cc6fdb, 0xc70b8b46, 0xd9e66a48, 0x56e55a79, + 0x026a4ceb, 0x52437eff, 0x2f8f76b4, 0x0df980a5, 0x8674cde3, 0xedda04eb, 0x17a9be04, 0x2c18f4df, + 0xb7747f9d, 0xab2af7b4, 0xefc34d20, 0x2e096b7c, 0x1741a254, 0xe5b6a035, 0x213d42f6, 0x2c1c7c26, + 0x61c2f50f, 0x6552daf9, 0xd2c231f8, 0x25130f69, 0xd8167fa2, 0x0418f2c8, 0x001a96a6, 0x0d1526ab, + 0x63315c21, 0x5e0a72ec, 0x49bafefd, 0x187908d9, 0x8d0dbd86, 0x311170a7, 0x3e9b640c, 0xcc3e10d7, + 0xd5cad3b6, 0x0caec388, 0xf73001e1, 0x6c728aff, 0x71eae2a1, 0x1f9af36e, 0xcfcbd12f, 0xc1de8417, + 0xac07be6b, 0xcb44a1d8, 0x8b9b0f56, 0x013988c3, 0xb1c52fca, 0xb4be31cd, 0xd8782806, 0x12a3a4e2, + 0x6f7de532, 0x58fd7eb6, 0xd01ee900, 0x24adffc2, 0xf4990fc5, 0x9711aac5, 0x001d7b95, 0x82e5e7d2, + 0x109873f6, 0x00613096, 0xc32d9521, 0xada121ff, 0x29908415, 0x7fbb977f, 0xaf9eb3db, 0x29c9ed2a, + 0x5ce2a465, 0xa730f32c, 0xd0aa3fe8, 0x8a5cc091, 0xd49e2ce7, 0x0ce454a9, 0xd60acd86, 0x015f1919, + 0x77079103, 0xdea03af6, 0x78a8565e, 0xdee356df, 0x21f05cbe, 0x8b75e387, 0xb3c50651, 0xb8a5c3ef, + 0xd8eeb6d2, 0xe523be77, 0xc2154529, 0x2f69efdf, 0xafe67afb, 0xf470c4b2, 0xf3e0eb5b, 0xd6cc9876, + 0x39e4460c, 0x1fda8538, 0x1987832f, 0xca007367, 0xa99144f8, 0x296b299e, 0x492fc295, 0x9266beab, + 0xb5676e69, 0x9bd3ddda, 0xdf7e052f, 0xdb25701c, 0x1b5e51ee, 0xf65324e6, 0x6afce36c, 0x0316cc04, + 0x8644213e, 0xb7dc59d0, 0x7965291f, 0xccd6fd43, 0x41823979, 0x932bcdf6, 0xb657c34d, 0x4edfd282, + 0x7ae5290c, 0x3cb9536b, 0x851e20fe, 0x9833557e, 0x13ecf0b0, 0xd3ffb372, 0x3f85c5c1, 0x0aef7ed2, + }, + { + 0x7ec90c04, 0x2c6e74b9, 0x9b0e66df, 0xa6337911, 0xb86a7fff, 0x1dd358f5, 0x44dd9d44, 0x1731167f, + 0x08fbf1fa, 0xe7f511cc, 0xd2051b00, 0x735aba00, 0x2ab722d8, 0x386381cb, 0xacf6243a, 0x69befd7a, + 0xe6a2e77f, 0xf0c720cd, 0xc4494816, 0xccf5c180, 0x38851640, 0x15b0a848, 0xe68b18cb, 0x4caadeff, + 0x5f480a01, 0x0412b2aa, 0x259814fc, 0x41d0efe2, 0x4e40b48d, 0x248eb6fb, 0x8dba1cfe, 0x41a99b02, + 0x1a550a04, 0xba8f65cb, 0x7251f4e7, 0x95a51725, 0xc106ecd7, 0x97a5980a, 0xc539b9aa, 0x4d79fe6a, + 0xf2f3f763, 0x68af8040, 0xed0c9e56, 0x11b4958b, 0xe1eb5a88, 0x8709e6b0, 0xd7e07156, 0x4e29fea7, + 0x6366e52d, 0x02d1c000, 0xc4ac8e05, 0x9377f571, 0x0c05372a, 0x578535f2, 0x2261be02, 0xd642a0c9, + 0xdf13a280, 0x74b55bd2, 0x682199c0, 0xd421e5ec, 0x53fb3ce8, 0xc8adedb3, 0x28a87fc9, 0x3d959981, + 0x5c1ff900, 0xfe38d399, 0x0c4eff0b, 0x062407ea, 0xaa2f4fb1, 0x4fb96976, 0x90c79505, 0xb0a8a774, + 0xef55a1ff, 0xe59ca2c2, 0xa6b62d27, 0xe66a4263, 0xdf65001f, 0x0ec50966, 0xdfdd55bc, 0x29de0655, + 0x911e739a, 0x17af8975, 0x32c7911c, 0x89f89468, 0x0d01e980, 0x524755f4, 0x03b63cc9, 0x0cc844b2, + 0xbcf3f0aa, 0x87ac36e9, 0xe53a7426, 0x01b3d82b, 0x1a9e7449, 0x64ee2d7e, 0xcddbb1da, 0x01c94910, + 0xb868bf80, 0x0d26f3fd, 0x9342ede7, 0x04a5c284, 0x636737b6, 0x50f5b616, 0xf24766e3, 0x8eca36c1, + 0x136e05db, 0xfef18391, 0xfb887a37, 0xd6e7f7d4, 0xc7fb7dc9, 0x3063fcdf, 0xb6f589de, 0xec2941da, + 0x26e46695, 0xb7566419, 0xf654efc5, 0xd08d58b7, 0x48925401, 0xc1bacb7f, 0xe5ff550f, 0xb6083049, + 0x5bb5d0e8, 0x87d72e5a, 0xab6a6ee1, 0x223a66ce, 0xc62bf3cd, 0x9e0885f9, 0x68cb3e47, 0x086c010f, + 0xa21de820, 0xd18b69de, 0xf3f65777, 0xfa02c3f6, 0x407edac3, 0xcbb3d550, 0x1793084d, 0xb0d70eba, + 0x0ab378d5, 0xd951fb0c, 0xded7da56, 0x4124bbe4, 0x94ca0b56, 0x0f5755d1, 0xe0e1e56e, 0x6184b5be, + 0x580a249f, 0x94f74bc0, 0xe327888e, 0x9f7b5561, 0xc3dc0280, 0x05687715, 0x646c6bd7, 0x44904db3, + 0x66b4f0a3, 0xc0f1648a, 0x697ed5af, 0x49e92ff6, 0x309e374f, 0x2cb6356a, 0x85808573, 0x4991f840, + 0x76f0ae02, 0x083be84d, 0x28421c9a, 0x44489406, 0x736e4cb8, 0xc1092910, 0x8bc95fc6, 0x7d869cf4, + 0x134f616f, 0x2e77118d, 0xb31b2be1, 0xaa90b472, 0x3ca5d717, 0x7d161bba, 0x9cad9010, 0xaf462ba2, + 0x9fe459d2, 0x45d34559, 0xd9f2da13, 0xdbc65487, 0xf3e4f94e, 0x176d486f, 0x097c13ea, 0x631da5c7, + 0x445f7382, 0x175683f4, 0xcdc66a97, 0x70be0288, 0xb3cdcf72, 0x6e5dd2f3, 0x20936079, 0x459b80a5, + 0xbe60e2db, 0xa9c23101, 0xeba5315c, 0x224e42f2, 0x1c5c1572, 0xf6721b2c, 0x1ad2fff3, 0x8c25404e, + 0x324ed72f, 0x4067b7fd, 0x0523138e, 0x5ca3bc78, 0xdc0fd66e, 0x75922283, 0x784d6b17, 0x58ebb16e, + 0x44094f85, 0x3f481d87, 0xfcfeae7b, 0x77b5ff76, 0x8c2302bf, 0xaaf47556, 0x5f46b02a, 0x2b092801, + 0x3d38f5f7, 0x0ca81f36, 0x52af4a8a, 0x66d5e7c0, 0xdf3b0874, 0x95055110, 0x1b5ad7a8, 0xf61ed5ad, + 0x6cf6e479, 0x20758184, 0xd0cefa65, 0x88f7be58, 0x4a046826, 0x0ff6f8f3, 0xa09c7f70, 0x5346aba0, + 0x5ce96c28, 0xe176eda3, 0x6bac307f, 0x376829d2, 0x85360fa9, 0x17e3fe2a, 0x24b79767, 0xf5a96b20, + 0xd6cd2595, 0x68ff1ebf, 0x7555442c, 0xf19f06be, 0xf9e0659a, 0xeeb9491d, 0x34010718, 0xbb30cab8, + 0xe822fe15, 0x88570983, 0x750e6249, 0xda627e55, 0x5e76ffa8, 0xb1534546, 0x6d47de08, 0xefe9e7d4, + }, + { + 0xf6fa8f9d, 0x2cac6ce1, 0x4ca34867, 0xe2337f7c, 0x95db08e7, 0x016843b4, 0xeced5cbc, 0x325553ac, + 0xbf9f0960, 0xdfa1e2ed, 0x83f0579d, 0x63ed86b9, 0x1ab6a6b8, 0xde5ebe39, 0xf38ff732, 0x8989b138, + 0x33f14961, 0xc01937bd, 0xf506c6da, 0xe4625e7e, 0xa308ea99, 0x4e23e33c, 0x79cbd7cc, 0x48a14367, + 0xa3149619, 0xfec94bd5, 0xa114174a, 0xeaa01866, 0xa084db2d, 0x09a8486f, 0xa888614a, 0x2900af98, + 0x01665991, 0xe1992863, 0xc8f30c60, 0x2e78ef3c, 0xd0d51932, 0xcf0fec14, 0xf7ca07d2, 0xd0a82072, + 0xfd41197e, 0x9305a6b0, 0xe86be3da, 0x74bed3cd, 0x372da53c, 0x4c7f4448, 0xdab5d440, 0x6dba0ec3, + 0x083919a7, 0x9fbaeed9, 0x49dbcfb0, 0x4e670c53, 0x5c3d9c01, 0x64bdb941, 0x2c0e636a, 0xba7dd9cd, + 0xea6f7388, 0xe70bc762, 0x35f29adb, 0x5c4cdd8d, 0xf0d48d8c, 0xb88153e2, 0x08a19866, 0x1ae2eac8, + 0x284caf89, 0xaa928223, 0x9334be53, 0x3b3a21bf, 0x16434be3, 0x9aea3906, 0xefe8c36e, 0xf890cdd9, + 0x80226dae, 0xc340a4a3, 0xdf7e9c09, 0xa694a807, 0x5b7c5ecc, 0x221db3a6, 0x9a69a02f, 0x68818a54, + 0xceb2296f, 0x53c0843a, 0xfe893655, 0x25bfe68a, 0xb4628abc, 0xcf222ebf, 0x25ac6f48, 0xa9a99387, + 0x53bddb65, 0xe76ffbe7, 0xe967fd78, 0x0ba93563, 0x8e342bc1, 0xe8a11be9, 0x4980740d, 0xc8087dfc, + 0x8de4bf99, 0xa11101a0, 0x7fd37975, 0xda5a26c0, 0xe81f994f, 0x9528cd89, 0xfd339fed, 0xb87834bf, + 0x5f04456d, 0x22258698, 0xc9c4c83b, 0x2dc156be, 0x4f628daa, 0x57f55ec5, 0xe2220abe, 0xd2916ebf, + 0x4ec75b95, 0x24f2c3c0, 0x42d15d99, 0xcd0d7fa0, 0x7b6e27ff, 0xa8dc8af0, 0x7345c106, 0xf41e232f, + 0x35162386, 0xe6ea8926, 0x3333b094, 0x157ec6f2, 0x372b74af, 0x692573e4, 0xe9a9d848, 0xf3160289, + 0x3a62ef1d, 0xa787e238, 0xf3a5f676, 0x74364853, 0x20951063, 0x4576698d, 0xb6fad407, 0x592af950, + 0x36f73523, 0x4cfb6e87, 0x7da4cec0, 0x6c152daa, 0xcb0396a8, 0xc50dfe5d, 0xfcd707ab, 0x0921c42f, + 0x89dff0bb, 0x5fe2be78, 0x448f4f33, 0x754613c9, 0x2b05d08d, 0x48b9d585, 0xdc049441, 0xc8098f9b, + 0x7dede786, 0xc39a3373, 0x42410005, 0x6a091751, 0x0ef3c8a6, 0x890072d6, 0x28207682, 0xa9a9f7be, + 0xbf32679d, 0xd45b5b75, 0xb353fd00, 0xcbb0e358, 0x830f220a, 0x1f8fb214, 0xd372cf08, 0xcc3c4a13, + 0x8cf63166, 0x061c87be, 0x88c98f88, 0x6062e397, 0x47cf8e7a, 0xb6c85283, 0x3cc2acfb, 0x3fc06976, + 0x4e8f0252, 0x64d8314d, 0xda3870e3, 0x1e665459, 0xc10908f0, 0x513021a5, 0x6c5b68b7, 0x822f8aa0, + 0x3007cd3e, 0x74719eef, 0xdc872681, 0x073340d4, 0x7e432fd9, 0x0c5ec241, 0x8809286c, 0xf592d891, + 0x08a930f6, 0x957ef305, 0xb7fbffbd, 0xc266e96f, 0x6fe4ac98, 0xb173ecc0, 0xbc60b42a, 0x953498da, + 0xfba1ae12, 0x2d4bd736, 0x0f25faab, 0xa4f3fceb, 0xe2969123, 0x257f0c3d, 0x9348af49, 0x361400bc, + 0xe8816f4a, 0x3814f200, 0xa3f94043, 0x9c7a54c2, 0xbc704f57, 0xda41e7f9, 0xc25ad33a, 0x54f4a084, + 0xb17f5505, 0x59357cbe, 0xedbd15c8, 0x7f97c5ab, 0xba5ac7b5, 0xb6f6deaf, 0x3a479c3a, 0x5302da25, + 0x653d7e6a, 0x54268d49, 0x51a477ea, 0x5017d55b, 0xd7d25d88, 0x44136c76, 0x0404a8c8, 0xb8e5a121, + 0xb81a928a, 0x60ed5869, 0x97c55b96, 0xeaec991b, 0x29935913, 0x01fdb7f1, 0x088e8dfa, 0x9ab6f6f5, + 0x3b4cbf9f, 0x4a5de3ab, 0xe6051d35, 0xa0e1d855, 0xd36b4cf1, 0xf544edeb, 0xb0e93524, 0xbebb8fbd, + 0xa2d762cf, 0x49c92f54, 0x38b5f331, 0x7128a454, 0x48392905, 0xa65b1db8, 0x851c97bd, 0xd675cf2f, + }, + { + 0x85e04019, 0x332bf567, 0x662dbfff, 0xcfc65693, 0x2a8d7f6f, 0xab9bc912, 0xde6008a1, 0x2028da1f, + 0x0227bce7, 0x4d642916, 0x18fac300, 0x50f18b82, 0x2cb2cb11, 0xb232e75c, 0x4b3695f2, 0xb28707de, + 0xa05fbcf6, 0xcd4181e9, 0xe150210c, 0xe24ef1bd, 0xb168c381, 0xfde4e789, 0x5c79b0d8, 0x1e8bfd43, + 0x4d495001, 0x38be4341, 0x913cee1d, 0x92a79c3f, 0x089766be, 0xbaeeadf4, 0x1286becf, 0xb6eacb19, + 0x2660c200, 0x7565bde4, 0x64241f7a, 0x8248dca9, 0xc3b3ad66, 0x28136086, 0x0bd8dfa8, 0x356d1cf2, + 0x107789be, 0xb3b2e9ce, 0x0502aa8f, 0x0bc0351e, 0x166bf52a, 0xeb12ff82, 0xe3486911, 0xd34d7516, + 0x4e7b3aff, 0x5f43671b, 0x9cf6e037, 0x4981ac83, 0x334266ce, 0x8c9341b7, 0xd0d854c0, 0xcb3a6c88, + 0x47bc2829, 0x4725ba37, 0xa66ad22b, 0x7ad61f1e, 0x0c5cbafa, 0x4437f107, 0xb6e79962, 0x42d2d816, + 0x0a961288, 0xe1a5c06e, 0x13749e67, 0x72fc081a, 0xb1d139f7, 0xf9583745, 0xcf19df58, 0xbec3f756, + 0xc06eba30, 0x07211b24, 0x45c28829, 0xc95e317f, 0xbc8ec511, 0x38bc46e9, 0xc6e6fa14, 0xbae8584a, + 0xad4ebc46, 0x468f508b, 0x7829435f, 0xf124183b, 0x821dba9f, 0xaff60ff4, 0xea2c4e6d, 0x16e39264, + 0x92544a8b, 0x009b4fc3, 0xaba68ced, 0x9ac96f78, 0x06a5b79a, 0xb2856e6e, 0x1aec3ca9, 0xbe838688, + 0x0e0804e9, 0x55f1be56, 0xe7e5363b, 0xb3a1f25d, 0xf7debb85, 0x61fe033c, 0x16746233, 0x3c034c28, + 0xda6d0c74, 0x79aac56c, 0x3ce4e1ad, 0x51f0c802, 0x98f8f35a, 0x1626a49f, 0xeed82b29, 0x1d382fe3, + 0x0c4fb99a, 0xbb325778, 0x3ec6d97b, 0x6e77a6a9, 0xcb658b5c, 0xd45230c7, 0x2bd1408b, 0x60c03eb7, + 0xb9068d78, 0xa33754f4, 0xf430c87d, 0xc8a71302, 0xb96d8c32, 0xebd4e7be, 0xbe8b9d2d, 0x7979fb06, + 0xe7225308, 0x8b75cf77, 0x11ef8da4, 0xe083c858, 0x8d6b786f, 0x5a6317a6, 0xfa5cf7a0, 0x5dda0033, + 0xf28ebfb0, 0xf5b9c310, 0xa0eac280, 0x08b9767a, 0xa3d9d2b0, 0x79d34217, 0x021a718d, 0x9ac6336a, + 0x2711fd60, 0x438050e3, 0x069908a8, 0x3d7fedc4, 0x826d2bef, 0x4eeb8476, 0x488dcf25, 0x36c9d566, + 0x28e74e41, 0xc2610aca, 0x3d49a9cf, 0xbae3b9df, 0xb65f8de6, 0x92aeaf64, 0x3ac7d5e6, 0x9ea80509, + 0xf22b017d, 0xa4173f70, 0xdd1e16c3, 0x15e0d7f9, 0x50b1b887, 0x2b9f4fd5, 0x625aba82, 0x6a017962, + 0x2ec01b9c, 0x15488aa9, 0xd716e740, 0x40055a2c, 0x93d29a22, 0xe32dbf9a, 0x058745b9, 0x3453dc1e, + 0xd699296e, 0x496cff6f, 0x1c9f4986, 0xdfe2ed07, 0xb87242d1, 0x19de7eae, 0x053e561a, 0x15ad6f8c, + 0x66626c1c, 0x7154c24c, 0xea082b2a, 0x93eb2939, 0x17dcb0f0, 0x58d4f2ae, 0x9ea294fb, 0x52cf564c, + 0x9883fe66, 0x2ec40581, 0x763953c3, 0x01d6692e, 0xd3a0c108, 0xa1e7160e, 0xe4f2dfa6, 0x693ed285, + 0x74904698, 0x4c2b0edd, 0x4f757656, 0x5d393378, 0xa132234f, 0x3d321c5d, 0xc3f5e194, 0x4b269301, + 0xc79f022f, 0x3c997e7e, 0x5e4f9504, 0x3ffafbbd, 0x76f7ad0e, 0x296693f4, 0x3d1fce6f, 0xc61e45be, + 0xd3b5ab34, 0xf72bf9b7, 0x1b0434c0, 0x4e72b567, 0x5592a33d, 0xb5229301, 0xcfd2a87f, 0x60aeb767, + 0x1814386b, 0x30bcc33d, 0x38a0c07d, 0xfd1606f2, 0xc363519b, 0x589dd390, 0x5479f8e6, 0x1cb8d647, + 0x97fd61a9, 0xea7759f4, 0x2d57539d, 0x569a58cf, 0xe84e63ad, 0x462e1b78, 0x6580f87e, 0xf3817914, + 0x91da55f4, 0x40a230f3, 0xd1988f35, 0xb6e318d2, 0x3ffa50bc, 0x3d40f021, 0xc3c0bdae, 0x4958c24c, + 0x518f36b2, 0x84b1d370, 0x0fedce83, 0x878ddada, 0xf2a279c7, 0x94e01be8, 0x90716f4b, 0x954b8aa3, + }, + { + 0xe216300d, 0xbbddfffc, 0xa7ebdabd, 0x35648095, 0x7789f8b7, 0xe6c1121b, 0x0e241600, 0x052ce8b5, + 0x11a9cfb0, 0xe5952f11, 0xece7990a, 0x9386d174, 0x2a42931c, 0x76e38111, 0xb12def3a, 0x37ddddfc, + 0xde9adeb1, 0x0a0cc32c, 0xbe197029, 0x84a00940, 0xbb243a0f, 0xb4d137cf, 0xb44e79f0, 0x049eedfd, + 0x0b15a15d, 0x480d3168, 0x8bbbde5a, 0x669ded42, 0xc7ece831, 0x3f8f95e7, 0x72df191b, 0x7580330d, + 0x94074251, 0x5c7dcdfa, 0xabbe6d63, 0xaa402164, 0xb301d40a, 0x02e7d1ca, 0x53571dae, 0x7a3182a2, + 0x12a8ddec, 0xfdaa335d, 0x176f43e8, 0x71fb46d4, 0x38129022, 0xce949ad4, 0xb84769ad, 0x965bd862, + 0x82f3d055, 0x66fb9767, 0x15b80b4e, 0x1d5b47a0, 0x4cfde06f, 0xc28ec4b8, 0x57e8726e, 0x647a78fc, + 0x99865d44, 0x608bd593, 0x6c200e03, 0x39dc5ff6, 0x5d0b00a3, 0xae63aff2, 0x7e8bd632, 0x70108c0c, + 0xbbd35049, 0x2998df04, 0x980cf42a, 0x9b6df491, 0x9e7edd53, 0x06918548, 0x58cb7e07, 0x3b74ef2e, + 0x522fffb1, 0xd24708cc, 0x1c7e27cd, 0xa4eb215b, 0x3cf1d2e2, 0x19b47a38, 0x424f7618, 0x35856039, + 0x9d17dee7, 0x27eb35e6, 0xc9aff67b, 0x36baf5b8, 0x09c467cd, 0xc18910b1, 0xe11dbf7b, 0x06cd1af8, + 0x7170c608, 0x2d5e3354, 0xd4de495a, 0x64c6d006, 0xbcc0c62c, 0x3dd00db3, 0x708f8f34, 0x77d51b42, + 0x264f620f, 0x24b8d2bf, 0x15c1b79e, 0x46a52564, 0xf8d7e54e, 0x3e378160, 0x7895cda5, 0x859c15a5, + 0xe6459788, 0xc37bc75f, 0xdb07ba0c, 0x0676a3ab, 0x7f229b1e, 0x31842e7b, 0x24259fd7, 0xf8bef472, + 0x835ffcb8, 0x6df4c1f2, 0x96f5b195, 0xfd0af0fc, 0xb0fe134c, 0xe2506d3d, 0x4f9b12ea, 0xf215f225, + 0xa223736f, 0x9fb4c428, 0x25d04979, 0x34c713f8, 0xc4618187, 0xea7a6e98, 0x7cd16efc, 0x1436876c, + 0xf1544107, 0xbedeee14, 0x56e9af27, 0xa04aa441, 0x3cf7c899, 0x92ecbae6, 0xdd67016d, 0x151682eb, + 0xa842eedf, 0xfdba60b4, 0xf1907b75, 0x20e3030f, 0x24d8c29e, 0xe139673b, 0xefa63fb8, 0x71873054, + 0xb6f2cf3b, 0x9f326442, 0xcb15a4cc, 0xb01a4504, 0xf1e47d8d, 0x844a1be5, 0xbae7dfdc, 0x42cbda70, + 0xcd7dae0a, 0x57e85b7a, 0xd53f5af6, 0x20cf4d8c, 0xcea4d428, 0x79d130a4, 0x3486ebfb, 0x33d3cddc, + 0x77853b53, 0x37effcb5, 0xc5068778, 0xe580b3e6, 0x4e68b8f4, 0xc5c8b37e, 0x0d809ea2, 0x398feb7c, + 0x132a4f94, 0x43b7950e, 0x2fee7d1c, 0x223613bd, 0xdd06caa2, 0x37df932b, 0xc4248289, 0xacf3ebc3, + 0x5715f6b7, 0xef3478dd, 0xf267616f, 0xc148cbe4, 0x9052815e, 0x5e410fab, 0xb48a2465, 0x2eda7fa4, + 0xe87b40e4, 0xe98ea084, 0x5889e9e1, 0xefd390fc, 0xdd07d35b, 0xdb485694, 0x38d7e5b2, 0x57720101, + 0x730edebc, 0x5b643113, 0x94917e4f, 0x503c2fba, 0x646f1282, 0x7523d24a, 0xe0779695, 0xf9c17a8f, + 0x7a5b2121, 0xd187b896, 0x29263a4d, 0xba510cdf, 0x81f47c9f, 0xad1163ed, 0xea7b5965, 0x1a00726e, + 0x11403092, 0x00da6d77, 0x4a0cdd61, 0xad1f4603, 0x605bdfb0, 0x9eedc364, 0x22ebe6a8, 0xcee7d28a, + 0xa0e736a0, 0x5564a6b9, 0x10853209, 0xc7eb8f37, 0x2de705ca, 0x8951570f, 0xdf09822b, 0xbd691a6c, + 0xaa12e4f2, 0x87451c0f, 0xe0f6a27a, 0x3ada4819, 0x4cf1764f, 0x0d771c2b, 0x67cdb156, 0x350d8384, + 0x5938fa0f, 0x42399ef3, 0x36997b07, 0x0e84093d, 0x4aa93e61, 0x8360d87b, 0x1fa98b0c, 0x1149382c, + 0xe97625a5, 0x0614d1b7, 0x0e25244b, 0x0c768347, 0x589e8d82, 0x0d2059d1, 0xa466bb1e, 0xf8da0a82, + 0x04f19130, 0xba6e4ec0, 0x99265164, 0x1ee7230d, 0x50b2ad80, 0xeaee6801, 0x8db2a283, 0xea8bf59e, + }, +} diff --git a/vendor/golang.org/x/crypto/curve25519/const_amd64.s b/vendor/golang.org/x/crypto/curve25519/const_amd64.s new file mode 100644 index 0000000..797f9b0 --- /dev/null +++ b/vendor/golang.org/x/crypto/curve25519/const_amd64.s @@ -0,0 +1,20 @@ +// 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. + +// This code was translated into a form compatible with 6a from the public +// domain sources in SUPERCOP: http://bench.cr.yp.to/supercop.html + +// +build amd64,!gccgo,!appengine + +DATA ·REDMASK51(SB)/8, $0x0007FFFFFFFFFFFF +GLOBL ·REDMASK51(SB), 8, $8 + +DATA ·_121666_213(SB)/8, $996687872 +GLOBL ·_121666_213(SB), 8, $8 + +DATA ·_2P0(SB)/8, $0xFFFFFFFFFFFDA +GLOBL ·_2P0(SB), 8, $8 + +DATA ·_2P1234(SB)/8, $0xFFFFFFFFFFFFE +GLOBL ·_2P1234(SB), 8, $8 diff --git a/vendor/golang.org/x/crypto/curve25519/cswap_amd64.s b/vendor/golang.org/x/crypto/curve25519/cswap_amd64.s new file mode 100644 index 0000000..45484d1 --- /dev/null +++ b/vendor/golang.org/x/crypto/curve25519/cswap_amd64.s @@ -0,0 +1,88 @@ +// 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. + +// This code was translated into a form compatible with 6a from the public +// domain sources in SUPERCOP: http://bench.cr.yp.to/supercop.html + +// +build amd64,!gccgo,!appengine + +// func cswap(inout *[5]uint64, v uint64) +TEXT ·cswap(SB),7,$0 + MOVQ inout+0(FP),DI + MOVQ v+8(FP),SI + + CMPQ SI,$1 + MOVQ 0(DI),SI + MOVQ 80(DI),DX + MOVQ 8(DI),CX + MOVQ 88(DI),R8 + MOVQ SI,R9 + CMOVQEQ DX,SI + CMOVQEQ R9,DX + MOVQ CX,R9 + CMOVQEQ R8,CX + CMOVQEQ R9,R8 + MOVQ SI,0(DI) + MOVQ DX,80(DI) + MOVQ CX,8(DI) + MOVQ R8,88(DI) + MOVQ 16(DI),SI + MOVQ 96(DI),DX + MOVQ 24(DI),CX + MOVQ 104(DI),R8 + MOVQ SI,R9 + CMOVQEQ DX,SI + CMOVQEQ R9,DX + MOVQ CX,R9 + CMOVQEQ R8,CX + CMOVQEQ R9,R8 + MOVQ SI,16(DI) + MOVQ DX,96(DI) + MOVQ CX,24(DI) + MOVQ R8,104(DI) + MOVQ 32(DI),SI + MOVQ 112(DI),DX + MOVQ 40(DI),CX + MOVQ 120(DI),R8 + MOVQ SI,R9 + CMOVQEQ DX,SI + CMOVQEQ R9,DX + MOVQ CX,R9 + CMOVQEQ R8,CX + CMOVQEQ R9,R8 + MOVQ SI,32(DI) + MOVQ DX,112(DI) + MOVQ CX,40(DI) + MOVQ R8,120(DI) + MOVQ 48(DI),SI + MOVQ 128(DI),DX + MOVQ 56(DI),CX + MOVQ 136(DI),R8 + MOVQ SI,R9 + CMOVQEQ DX,SI + CMOVQEQ R9,DX + MOVQ CX,R9 + CMOVQEQ R8,CX + CMOVQEQ R9,R8 + MOVQ SI,48(DI) + MOVQ DX,128(DI) + MOVQ CX,56(DI) + MOVQ R8,136(DI) + MOVQ 64(DI),SI + MOVQ 144(DI),DX + MOVQ 72(DI),CX + MOVQ 152(DI),R8 + MOVQ SI,R9 + CMOVQEQ DX,SI + CMOVQEQ R9,DX + MOVQ CX,R9 + CMOVQEQ R8,CX + CMOVQEQ R9,R8 + MOVQ SI,64(DI) + MOVQ DX,144(DI) + MOVQ CX,72(DI) + MOVQ R8,152(DI) + MOVQ DI,AX + MOVQ SI,DX + RET diff --git a/vendor/golang.org/x/crypto/curve25519/curve25519.go b/vendor/golang.org/x/crypto/curve25519/curve25519.go new file mode 100644 index 0000000..6918c47 --- /dev/null +++ b/vendor/golang.org/x/crypto/curve25519/curve25519.go @@ -0,0 +1,841 @@ +// 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. + +// We have a implementation in amd64 assembly so this code is only run on +// non-amd64 platforms. The amd64 assembly does not support gccgo. +// +build !amd64 gccgo appengine + +package curve25519 + +// This code is a port of the public domain, "ref10" implementation of +// curve25519 from SUPERCOP 20130419 by D. J. Bernstein. + +// fieldElement represents an element of the field GF(2^255 - 19). An element +// t, entries t[0]...t[9], represents the integer t[0]+2^26 t[1]+2^51 t[2]+2^77 +// t[3]+2^102 t[4]+...+2^230 t[9]. Bounds on each t[i] vary depending on +// context. +type fieldElement [10]int32 + +func feZero(fe *fieldElement) { + for i := range fe { + fe[i] = 0 + } +} + +func feOne(fe *fieldElement) { + feZero(fe) + fe[0] = 1 +} + +func feAdd(dst, a, b *fieldElement) { + for i := range dst { + dst[i] = a[i] + b[i] + } +} + +func feSub(dst, a, b *fieldElement) { + for i := range dst { + dst[i] = a[i] - b[i] + } +} + +func feCopy(dst, src *fieldElement) { + for i := range dst { + dst[i] = src[i] + } +} + +// feCSwap replaces (f,g) with (g,f) if b == 1; replaces (f,g) with (f,g) if b == 0. +// +// Preconditions: b in {0,1}. +func feCSwap(f, g *fieldElement, b int32) { + var x fieldElement + b = -b + for i := range x { + x[i] = b & (f[i] ^ g[i]) + } + + for i := range f { + f[i] ^= x[i] + } + for i := range g { + g[i] ^= x[i] + } +} + +// load3 reads a 24-bit, little-endian value from in. +func load3(in []byte) int64 { + var r int64 + r = int64(in[0]) + r |= int64(in[1]) << 8 + r |= int64(in[2]) << 16 + return r +} + +// load4 reads a 32-bit, little-endian value from in. +func load4(in []byte) int64 { + var r int64 + r = int64(in[0]) + r |= int64(in[1]) << 8 + r |= int64(in[2]) << 16 + r |= int64(in[3]) << 24 + return r +} + +func feFromBytes(dst *fieldElement, src *[32]byte) { + h0 := load4(src[:]) + h1 := load3(src[4:]) << 6 + h2 := load3(src[7:]) << 5 + h3 := load3(src[10:]) << 3 + h4 := load3(src[13:]) << 2 + h5 := load4(src[16:]) + h6 := load3(src[20:]) << 7 + h7 := load3(src[23:]) << 5 + h8 := load3(src[26:]) << 4 + h9 := load3(src[29:]) << 2 + + var carry [10]int64 + carry[9] = (h9 + 1<<24) >> 25 + h0 += carry[9] * 19 + h9 -= carry[9] << 25 + carry[1] = (h1 + 1<<24) >> 25 + h2 += carry[1] + h1 -= carry[1] << 25 + carry[3] = (h3 + 1<<24) >> 25 + h4 += carry[3] + h3 -= carry[3] << 25 + carry[5] = (h5 + 1<<24) >> 25 + h6 += carry[5] + h5 -= carry[5] << 25 + carry[7] = (h7 + 1<<24) >> 25 + h8 += carry[7] + h7 -= carry[7] << 25 + + carry[0] = (h0 + 1<<25) >> 26 + h1 += carry[0] + h0 -= carry[0] << 26 + carry[2] = (h2 + 1<<25) >> 26 + h3 += carry[2] + h2 -= carry[2] << 26 + carry[4] = (h4 + 1<<25) >> 26 + h5 += carry[4] + h4 -= carry[4] << 26 + carry[6] = (h6 + 1<<25) >> 26 + h7 += carry[6] + h6 -= carry[6] << 26 + carry[8] = (h8 + 1<<25) >> 26 + h9 += carry[8] + h8 -= carry[8] << 26 + + dst[0] = int32(h0) + dst[1] = int32(h1) + dst[2] = int32(h2) + dst[3] = int32(h3) + dst[4] = int32(h4) + dst[5] = int32(h5) + dst[6] = int32(h6) + dst[7] = int32(h7) + dst[8] = int32(h8) + dst[9] = int32(h9) +} + +// feToBytes marshals h to s. +// Preconditions: +// |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. +// +// Write p=2^255-19; q=floor(h/p). +// Basic claim: q = floor(2^(-255)(h + 19 2^(-25)h9 + 2^(-1))). +// +// Proof: +// Have |h|<=p so |q|<=1 so |19^2 2^(-255) q|<1/4. +// Also have |h-2^230 h9|<2^230 so |19 2^(-255)(h-2^230 h9)|<1/4. +// +// Write y=2^(-1)-19^2 2^(-255)q-19 2^(-255)(h-2^230 h9). +// Then 0> 25 + q = (h[0] + q) >> 26 + q = (h[1] + q) >> 25 + q = (h[2] + q) >> 26 + q = (h[3] + q) >> 25 + q = (h[4] + q) >> 26 + q = (h[5] + q) >> 25 + q = (h[6] + q) >> 26 + q = (h[7] + q) >> 25 + q = (h[8] + q) >> 26 + q = (h[9] + q) >> 25 + + // Goal: Output h-(2^255-19)q, which is between 0 and 2^255-20. + h[0] += 19 * q + // Goal: Output h-2^255 q, which is between 0 and 2^255-20. + + carry[0] = h[0] >> 26 + h[1] += carry[0] + h[0] -= carry[0] << 26 + carry[1] = h[1] >> 25 + h[2] += carry[1] + h[1] -= carry[1] << 25 + carry[2] = h[2] >> 26 + h[3] += carry[2] + h[2] -= carry[2] << 26 + carry[3] = h[3] >> 25 + h[4] += carry[3] + h[3] -= carry[3] << 25 + carry[4] = h[4] >> 26 + h[5] += carry[4] + h[4] -= carry[4] << 26 + carry[5] = h[5] >> 25 + h[6] += carry[5] + h[5] -= carry[5] << 25 + carry[6] = h[6] >> 26 + h[7] += carry[6] + h[6] -= carry[6] << 26 + carry[7] = h[7] >> 25 + h[8] += carry[7] + h[7] -= carry[7] << 25 + carry[8] = h[8] >> 26 + h[9] += carry[8] + h[8] -= carry[8] << 26 + carry[9] = h[9] >> 25 + h[9] -= carry[9] << 25 + // h10 = carry9 + + // Goal: Output h[0]+...+2^255 h10-2^255 q, which is between 0 and 2^255-20. + // Have h[0]+...+2^230 h[9] between 0 and 2^255-1; + // evidently 2^255 h10-2^255 q = 0. + // Goal: Output h[0]+...+2^230 h[9]. + + s[0] = byte(h[0] >> 0) + s[1] = byte(h[0] >> 8) + s[2] = byte(h[0] >> 16) + s[3] = byte((h[0] >> 24) | (h[1] << 2)) + s[4] = byte(h[1] >> 6) + s[5] = byte(h[1] >> 14) + s[6] = byte((h[1] >> 22) | (h[2] << 3)) + s[7] = byte(h[2] >> 5) + s[8] = byte(h[2] >> 13) + s[9] = byte((h[2] >> 21) | (h[3] << 5)) + s[10] = byte(h[3] >> 3) + s[11] = byte(h[3] >> 11) + s[12] = byte((h[3] >> 19) | (h[4] << 6)) + s[13] = byte(h[4] >> 2) + s[14] = byte(h[4] >> 10) + s[15] = byte(h[4] >> 18) + s[16] = byte(h[5] >> 0) + s[17] = byte(h[5] >> 8) + s[18] = byte(h[5] >> 16) + s[19] = byte((h[5] >> 24) | (h[6] << 1)) + s[20] = byte(h[6] >> 7) + s[21] = byte(h[6] >> 15) + s[22] = byte((h[6] >> 23) | (h[7] << 3)) + s[23] = byte(h[7] >> 5) + s[24] = byte(h[7] >> 13) + s[25] = byte((h[7] >> 21) | (h[8] << 4)) + s[26] = byte(h[8] >> 4) + s[27] = byte(h[8] >> 12) + s[28] = byte((h[8] >> 20) | (h[9] << 6)) + s[29] = byte(h[9] >> 2) + s[30] = byte(h[9] >> 10) + s[31] = byte(h[9] >> 18) +} + +// feMul calculates h = f * g +// Can overlap h with f or g. +// +// Preconditions: +// |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. +// |g| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. +// +// Postconditions: +// |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. +// +// Notes on implementation strategy: +// +// Using schoolbook multiplication. +// Karatsuba would save a little in some cost models. +// +// Most multiplications by 2 and 19 are 32-bit precomputations; +// cheaper than 64-bit postcomputations. +// +// There is one remaining multiplication by 19 in the carry chain; +// one *19 precomputation can be merged into this, +// but the resulting data flow is considerably less clean. +// +// There are 12 carries below. +// 10 of them are 2-way parallelizable and vectorizable. +// Can get away with 11 carries, but then data flow is much deeper. +// +// With tighter constraints on inputs can squeeze carries into int32. +func feMul(h, f, g *fieldElement) { + f0 := f[0] + f1 := f[1] + f2 := f[2] + f3 := f[3] + f4 := f[4] + f5 := f[5] + f6 := f[6] + f7 := f[7] + f8 := f[8] + f9 := f[9] + g0 := g[0] + g1 := g[1] + g2 := g[2] + g3 := g[3] + g4 := g[4] + g5 := g[5] + g6 := g[6] + g7 := g[7] + g8 := g[8] + g9 := g[9] + g1_19 := 19 * g1 // 1.4*2^29 + g2_19 := 19 * g2 // 1.4*2^30; still ok + g3_19 := 19 * g3 + g4_19 := 19 * g4 + g5_19 := 19 * g5 + g6_19 := 19 * g6 + g7_19 := 19 * g7 + g8_19 := 19 * g8 + g9_19 := 19 * g9 + f1_2 := 2 * f1 + f3_2 := 2 * f3 + f5_2 := 2 * f5 + f7_2 := 2 * f7 + f9_2 := 2 * f9 + f0g0 := int64(f0) * int64(g0) + f0g1 := int64(f0) * int64(g1) + f0g2 := int64(f0) * int64(g2) + f0g3 := int64(f0) * int64(g3) + f0g4 := int64(f0) * int64(g4) + f0g5 := int64(f0) * int64(g5) + f0g6 := int64(f0) * int64(g6) + f0g7 := int64(f0) * int64(g7) + f0g8 := int64(f0) * int64(g8) + f0g9 := int64(f0) * int64(g9) + f1g0 := int64(f1) * int64(g0) + f1g1_2 := int64(f1_2) * int64(g1) + f1g2 := int64(f1) * int64(g2) + f1g3_2 := int64(f1_2) * int64(g3) + f1g4 := int64(f1) * int64(g4) + f1g5_2 := int64(f1_2) * int64(g5) + f1g6 := int64(f1) * int64(g6) + f1g7_2 := int64(f1_2) * int64(g7) + f1g8 := int64(f1) * int64(g8) + f1g9_38 := int64(f1_2) * int64(g9_19) + f2g0 := int64(f2) * int64(g0) + f2g1 := int64(f2) * int64(g1) + f2g2 := int64(f2) * int64(g2) + f2g3 := int64(f2) * int64(g3) + f2g4 := int64(f2) * int64(g4) + f2g5 := int64(f2) * int64(g5) + f2g6 := int64(f2) * int64(g6) + f2g7 := int64(f2) * int64(g7) + f2g8_19 := int64(f2) * int64(g8_19) + f2g9_19 := int64(f2) * int64(g9_19) + f3g0 := int64(f3) * int64(g0) + f3g1_2 := int64(f3_2) * int64(g1) + f3g2 := int64(f3) * int64(g2) + f3g3_2 := int64(f3_2) * int64(g3) + f3g4 := int64(f3) * int64(g4) + f3g5_2 := int64(f3_2) * int64(g5) + f3g6 := int64(f3) * int64(g6) + f3g7_38 := int64(f3_2) * int64(g7_19) + f3g8_19 := int64(f3) * int64(g8_19) + f3g9_38 := int64(f3_2) * int64(g9_19) + f4g0 := int64(f4) * int64(g0) + f4g1 := int64(f4) * int64(g1) + f4g2 := int64(f4) * int64(g2) + f4g3 := int64(f4) * int64(g3) + f4g4 := int64(f4) * int64(g4) + f4g5 := int64(f4) * int64(g5) + f4g6_19 := int64(f4) * int64(g6_19) + f4g7_19 := int64(f4) * int64(g7_19) + f4g8_19 := int64(f4) * int64(g8_19) + f4g9_19 := int64(f4) * int64(g9_19) + f5g0 := int64(f5) * int64(g0) + f5g1_2 := int64(f5_2) * int64(g1) + f5g2 := int64(f5) * int64(g2) + f5g3_2 := int64(f5_2) * int64(g3) + f5g4 := int64(f5) * int64(g4) + f5g5_38 := int64(f5_2) * int64(g5_19) + f5g6_19 := int64(f5) * int64(g6_19) + f5g7_38 := int64(f5_2) * int64(g7_19) + f5g8_19 := int64(f5) * int64(g8_19) + f5g9_38 := int64(f5_2) * int64(g9_19) + f6g0 := int64(f6) * int64(g0) + f6g1 := int64(f6) * int64(g1) + f6g2 := int64(f6) * int64(g2) + f6g3 := int64(f6) * int64(g3) + f6g4_19 := int64(f6) * int64(g4_19) + f6g5_19 := int64(f6) * int64(g5_19) + f6g6_19 := int64(f6) * int64(g6_19) + f6g7_19 := int64(f6) * int64(g7_19) + f6g8_19 := int64(f6) * int64(g8_19) + f6g9_19 := int64(f6) * int64(g9_19) + f7g0 := int64(f7) * int64(g0) + f7g1_2 := int64(f7_2) * int64(g1) + f7g2 := int64(f7) * int64(g2) + f7g3_38 := int64(f7_2) * int64(g3_19) + f7g4_19 := int64(f7) * int64(g4_19) + f7g5_38 := int64(f7_2) * int64(g5_19) + f7g6_19 := int64(f7) * int64(g6_19) + f7g7_38 := int64(f7_2) * int64(g7_19) + f7g8_19 := int64(f7) * int64(g8_19) + f7g9_38 := int64(f7_2) * int64(g9_19) + f8g0 := int64(f8) * int64(g0) + f8g1 := int64(f8) * int64(g1) + f8g2_19 := int64(f8) * int64(g2_19) + f8g3_19 := int64(f8) * int64(g3_19) + f8g4_19 := int64(f8) * int64(g4_19) + f8g5_19 := int64(f8) * int64(g5_19) + f8g6_19 := int64(f8) * int64(g6_19) + f8g7_19 := int64(f8) * int64(g7_19) + f8g8_19 := int64(f8) * int64(g8_19) + f8g9_19 := int64(f8) * int64(g9_19) + f9g0 := int64(f9) * int64(g0) + f9g1_38 := int64(f9_2) * int64(g1_19) + f9g2_19 := int64(f9) * int64(g2_19) + f9g3_38 := int64(f9_2) * int64(g3_19) + f9g4_19 := int64(f9) * int64(g4_19) + f9g5_38 := int64(f9_2) * int64(g5_19) + f9g6_19 := int64(f9) * int64(g6_19) + f9g7_38 := int64(f9_2) * int64(g7_19) + f9g8_19 := int64(f9) * int64(g8_19) + f9g9_38 := int64(f9_2) * int64(g9_19) + h0 := f0g0 + f1g9_38 + f2g8_19 + f3g7_38 + f4g6_19 + f5g5_38 + f6g4_19 + f7g3_38 + f8g2_19 + f9g1_38 + h1 := f0g1 + f1g0 + f2g9_19 + f3g8_19 + f4g7_19 + f5g6_19 + f6g5_19 + f7g4_19 + f8g3_19 + f9g2_19 + h2 := f0g2 + f1g1_2 + f2g0 + f3g9_38 + f4g8_19 + f5g7_38 + f6g6_19 + f7g5_38 + f8g4_19 + f9g3_38 + h3 := f0g3 + f1g2 + f2g1 + f3g0 + f4g9_19 + f5g8_19 + f6g7_19 + f7g6_19 + f8g5_19 + f9g4_19 + h4 := f0g4 + f1g3_2 + f2g2 + f3g1_2 + f4g0 + f5g9_38 + f6g8_19 + f7g7_38 + f8g6_19 + f9g5_38 + h5 := f0g5 + f1g4 + f2g3 + f3g2 + f4g1 + f5g0 + f6g9_19 + f7g8_19 + f8g7_19 + f9g6_19 + h6 := f0g6 + f1g5_2 + f2g4 + f3g3_2 + f4g2 + f5g1_2 + f6g0 + f7g9_38 + f8g8_19 + f9g7_38 + h7 := f0g7 + f1g6 + f2g5 + f3g4 + f4g3 + f5g2 + f6g1 + f7g0 + f8g9_19 + f9g8_19 + h8 := f0g8 + f1g7_2 + f2g6 + f3g5_2 + f4g4 + f5g3_2 + f6g2 + f7g1_2 + f8g0 + f9g9_38 + h9 := f0g9 + f1g8 + f2g7 + f3g6 + f4g5 + f5g4 + f6g3 + f7g2 + f8g1 + f9g0 + var carry [10]int64 + + // |h0| <= (1.1*1.1*2^52*(1+19+19+19+19)+1.1*1.1*2^50*(38+38+38+38+38)) + // i.e. |h0| <= 1.2*2^59; narrower ranges for h2, h4, h6, h8 + // |h1| <= (1.1*1.1*2^51*(1+1+19+19+19+19+19+19+19+19)) + // i.e. |h1| <= 1.5*2^58; narrower ranges for h3, h5, h7, h9 + + carry[0] = (h0 + (1 << 25)) >> 26 + h1 += carry[0] + h0 -= carry[0] << 26 + carry[4] = (h4 + (1 << 25)) >> 26 + h5 += carry[4] + h4 -= carry[4] << 26 + // |h0| <= 2^25 + // |h4| <= 2^25 + // |h1| <= 1.51*2^58 + // |h5| <= 1.51*2^58 + + carry[1] = (h1 + (1 << 24)) >> 25 + h2 += carry[1] + h1 -= carry[1] << 25 + carry[5] = (h5 + (1 << 24)) >> 25 + h6 += carry[5] + h5 -= carry[5] << 25 + // |h1| <= 2^24; from now on fits into int32 + // |h5| <= 2^24; from now on fits into int32 + // |h2| <= 1.21*2^59 + // |h6| <= 1.21*2^59 + + carry[2] = (h2 + (1 << 25)) >> 26 + h3 += carry[2] + h2 -= carry[2] << 26 + carry[6] = (h6 + (1 << 25)) >> 26 + h7 += carry[6] + h6 -= carry[6] << 26 + // |h2| <= 2^25; from now on fits into int32 unchanged + // |h6| <= 2^25; from now on fits into int32 unchanged + // |h3| <= 1.51*2^58 + // |h7| <= 1.51*2^58 + + carry[3] = (h3 + (1 << 24)) >> 25 + h4 += carry[3] + h3 -= carry[3] << 25 + carry[7] = (h7 + (1 << 24)) >> 25 + h8 += carry[7] + h7 -= carry[7] << 25 + // |h3| <= 2^24; from now on fits into int32 unchanged + // |h7| <= 2^24; from now on fits into int32 unchanged + // |h4| <= 1.52*2^33 + // |h8| <= 1.52*2^33 + + carry[4] = (h4 + (1 << 25)) >> 26 + h5 += carry[4] + h4 -= carry[4] << 26 + carry[8] = (h8 + (1 << 25)) >> 26 + h9 += carry[8] + h8 -= carry[8] << 26 + // |h4| <= 2^25; from now on fits into int32 unchanged + // |h8| <= 2^25; from now on fits into int32 unchanged + // |h5| <= 1.01*2^24 + // |h9| <= 1.51*2^58 + + carry[9] = (h9 + (1 << 24)) >> 25 + h0 += carry[9] * 19 + h9 -= carry[9] << 25 + // |h9| <= 2^24; from now on fits into int32 unchanged + // |h0| <= 1.8*2^37 + + carry[0] = (h0 + (1 << 25)) >> 26 + h1 += carry[0] + h0 -= carry[0] << 26 + // |h0| <= 2^25; from now on fits into int32 unchanged + // |h1| <= 1.01*2^24 + + h[0] = int32(h0) + h[1] = int32(h1) + h[2] = int32(h2) + h[3] = int32(h3) + h[4] = int32(h4) + h[5] = int32(h5) + h[6] = int32(h6) + h[7] = int32(h7) + h[8] = int32(h8) + h[9] = int32(h9) +} + +// feSquare calculates h = f*f. Can overlap h with f. +// +// Preconditions: +// |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. +// +// Postconditions: +// |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. +func feSquare(h, f *fieldElement) { + f0 := f[0] + f1 := f[1] + f2 := f[2] + f3 := f[3] + f4 := f[4] + f5 := f[5] + f6 := f[6] + f7 := f[7] + f8 := f[8] + f9 := f[9] + f0_2 := 2 * f0 + f1_2 := 2 * f1 + f2_2 := 2 * f2 + f3_2 := 2 * f3 + f4_2 := 2 * f4 + f5_2 := 2 * f5 + f6_2 := 2 * f6 + f7_2 := 2 * f7 + f5_38 := 38 * f5 // 1.31*2^30 + f6_19 := 19 * f6 // 1.31*2^30 + f7_38 := 38 * f7 // 1.31*2^30 + f8_19 := 19 * f8 // 1.31*2^30 + f9_38 := 38 * f9 // 1.31*2^30 + f0f0 := int64(f0) * int64(f0) + f0f1_2 := int64(f0_2) * int64(f1) + f0f2_2 := int64(f0_2) * int64(f2) + f0f3_2 := int64(f0_2) * int64(f3) + f0f4_2 := int64(f0_2) * int64(f4) + f0f5_2 := int64(f0_2) * int64(f5) + f0f6_2 := int64(f0_2) * int64(f6) + f0f7_2 := int64(f0_2) * int64(f7) + f0f8_2 := int64(f0_2) * int64(f8) + f0f9_2 := int64(f0_2) * int64(f9) + f1f1_2 := int64(f1_2) * int64(f1) + f1f2_2 := int64(f1_2) * int64(f2) + f1f3_4 := int64(f1_2) * int64(f3_2) + f1f4_2 := int64(f1_2) * int64(f4) + f1f5_4 := int64(f1_2) * int64(f5_2) + f1f6_2 := int64(f1_2) * int64(f6) + f1f7_4 := int64(f1_2) * int64(f7_2) + f1f8_2 := int64(f1_2) * int64(f8) + f1f9_76 := int64(f1_2) * int64(f9_38) + f2f2 := int64(f2) * int64(f2) + f2f3_2 := int64(f2_2) * int64(f3) + f2f4_2 := int64(f2_2) * int64(f4) + f2f5_2 := int64(f2_2) * int64(f5) + f2f6_2 := int64(f2_2) * int64(f6) + f2f7_2 := int64(f2_2) * int64(f7) + f2f8_38 := int64(f2_2) * int64(f8_19) + f2f9_38 := int64(f2) * int64(f9_38) + f3f3_2 := int64(f3_2) * int64(f3) + f3f4_2 := int64(f3_2) * int64(f4) + f3f5_4 := int64(f3_2) * int64(f5_2) + f3f6_2 := int64(f3_2) * int64(f6) + f3f7_76 := int64(f3_2) * int64(f7_38) + f3f8_38 := int64(f3_2) * int64(f8_19) + f3f9_76 := int64(f3_2) * int64(f9_38) + f4f4 := int64(f4) * int64(f4) + f4f5_2 := int64(f4_2) * int64(f5) + f4f6_38 := int64(f4_2) * int64(f6_19) + f4f7_38 := int64(f4) * int64(f7_38) + f4f8_38 := int64(f4_2) * int64(f8_19) + f4f9_38 := int64(f4) * int64(f9_38) + f5f5_38 := int64(f5) * int64(f5_38) + f5f6_38 := int64(f5_2) * int64(f6_19) + f5f7_76 := int64(f5_2) * int64(f7_38) + f5f8_38 := int64(f5_2) * int64(f8_19) + f5f9_76 := int64(f5_2) * int64(f9_38) + f6f6_19 := int64(f6) * int64(f6_19) + f6f7_38 := int64(f6) * int64(f7_38) + f6f8_38 := int64(f6_2) * int64(f8_19) + f6f9_38 := int64(f6) * int64(f9_38) + f7f7_38 := int64(f7) * int64(f7_38) + f7f8_38 := int64(f7_2) * int64(f8_19) + f7f9_76 := int64(f7_2) * int64(f9_38) + f8f8_19 := int64(f8) * int64(f8_19) + f8f9_38 := int64(f8) * int64(f9_38) + f9f9_38 := int64(f9) * int64(f9_38) + h0 := f0f0 + f1f9_76 + f2f8_38 + f3f7_76 + f4f6_38 + f5f5_38 + h1 := f0f1_2 + f2f9_38 + f3f8_38 + f4f7_38 + f5f6_38 + h2 := f0f2_2 + f1f1_2 + f3f9_76 + f4f8_38 + f5f7_76 + f6f6_19 + h3 := f0f3_2 + f1f2_2 + f4f9_38 + f5f8_38 + f6f7_38 + h4 := f0f4_2 + f1f3_4 + f2f2 + f5f9_76 + f6f8_38 + f7f7_38 + h5 := f0f5_2 + f1f4_2 + f2f3_2 + f6f9_38 + f7f8_38 + h6 := f0f6_2 + f1f5_4 + f2f4_2 + f3f3_2 + f7f9_76 + f8f8_19 + h7 := f0f7_2 + f1f6_2 + f2f5_2 + f3f4_2 + f8f9_38 + h8 := f0f8_2 + f1f7_4 + f2f6_2 + f3f5_4 + f4f4 + f9f9_38 + h9 := f0f9_2 + f1f8_2 + f2f7_2 + f3f6_2 + f4f5_2 + var carry [10]int64 + + carry[0] = (h0 + (1 << 25)) >> 26 + h1 += carry[0] + h0 -= carry[0] << 26 + carry[4] = (h4 + (1 << 25)) >> 26 + h5 += carry[4] + h4 -= carry[4] << 26 + + carry[1] = (h1 + (1 << 24)) >> 25 + h2 += carry[1] + h1 -= carry[1] << 25 + carry[5] = (h5 + (1 << 24)) >> 25 + h6 += carry[5] + h5 -= carry[5] << 25 + + carry[2] = (h2 + (1 << 25)) >> 26 + h3 += carry[2] + h2 -= carry[2] << 26 + carry[6] = (h6 + (1 << 25)) >> 26 + h7 += carry[6] + h6 -= carry[6] << 26 + + carry[3] = (h3 + (1 << 24)) >> 25 + h4 += carry[3] + h3 -= carry[3] << 25 + carry[7] = (h7 + (1 << 24)) >> 25 + h8 += carry[7] + h7 -= carry[7] << 25 + + carry[4] = (h4 + (1 << 25)) >> 26 + h5 += carry[4] + h4 -= carry[4] << 26 + carry[8] = (h8 + (1 << 25)) >> 26 + h9 += carry[8] + h8 -= carry[8] << 26 + + carry[9] = (h9 + (1 << 24)) >> 25 + h0 += carry[9] * 19 + h9 -= carry[9] << 25 + + carry[0] = (h0 + (1 << 25)) >> 26 + h1 += carry[0] + h0 -= carry[0] << 26 + + h[0] = int32(h0) + h[1] = int32(h1) + h[2] = int32(h2) + h[3] = int32(h3) + h[4] = int32(h4) + h[5] = int32(h5) + h[6] = int32(h6) + h[7] = int32(h7) + h[8] = int32(h8) + h[9] = int32(h9) +} + +// feMul121666 calculates h = f * 121666. Can overlap h with f. +// +// Preconditions: +// |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. +// +// Postconditions: +// |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. +func feMul121666(h, f *fieldElement) { + h0 := int64(f[0]) * 121666 + h1 := int64(f[1]) * 121666 + h2 := int64(f[2]) * 121666 + h3 := int64(f[3]) * 121666 + h4 := int64(f[4]) * 121666 + h5 := int64(f[5]) * 121666 + h6 := int64(f[6]) * 121666 + h7 := int64(f[7]) * 121666 + h8 := int64(f[8]) * 121666 + h9 := int64(f[9]) * 121666 + var carry [10]int64 + + carry[9] = (h9 + (1 << 24)) >> 25 + h0 += carry[9] * 19 + h9 -= carry[9] << 25 + carry[1] = (h1 + (1 << 24)) >> 25 + h2 += carry[1] + h1 -= carry[1] << 25 + carry[3] = (h3 + (1 << 24)) >> 25 + h4 += carry[3] + h3 -= carry[3] << 25 + carry[5] = (h5 + (1 << 24)) >> 25 + h6 += carry[5] + h5 -= carry[5] << 25 + carry[7] = (h7 + (1 << 24)) >> 25 + h8 += carry[7] + h7 -= carry[7] << 25 + + carry[0] = (h0 + (1 << 25)) >> 26 + h1 += carry[0] + h0 -= carry[0] << 26 + carry[2] = (h2 + (1 << 25)) >> 26 + h3 += carry[2] + h2 -= carry[2] << 26 + carry[4] = (h4 + (1 << 25)) >> 26 + h5 += carry[4] + h4 -= carry[4] << 26 + carry[6] = (h6 + (1 << 25)) >> 26 + h7 += carry[6] + h6 -= carry[6] << 26 + carry[8] = (h8 + (1 << 25)) >> 26 + h9 += carry[8] + h8 -= carry[8] << 26 + + h[0] = int32(h0) + h[1] = int32(h1) + h[2] = int32(h2) + h[3] = int32(h3) + h[4] = int32(h4) + h[5] = int32(h5) + h[6] = int32(h6) + h[7] = int32(h7) + h[8] = int32(h8) + h[9] = int32(h9) +} + +// feInvert sets out = z^-1. +func feInvert(out, z *fieldElement) { + var t0, t1, t2, t3 fieldElement + var i int + + feSquare(&t0, z) + for i = 1; i < 1; i++ { + feSquare(&t0, &t0) + } + feSquare(&t1, &t0) + for i = 1; i < 2; i++ { + feSquare(&t1, &t1) + } + feMul(&t1, z, &t1) + feMul(&t0, &t0, &t1) + feSquare(&t2, &t0) + for i = 1; i < 1; i++ { + feSquare(&t2, &t2) + } + feMul(&t1, &t1, &t2) + feSquare(&t2, &t1) + for i = 1; i < 5; i++ { + feSquare(&t2, &t2) + } + feMul(&t1, &t2, &t1) + feSquare(&t2, &t1) + for i = 1; i < 10; i++ { + feSquare(&t2, &t2) + } + feMul(&t2, &t2, &t1) + feSquare(&t3, &t2) + for i = 1; i < 20; i++ { + feSquare(&t3, &t3) + } + feMul(&t2, &t3, &t2) + feSquare(&t2, &t2) + for i = 1; i < 10; i++ { + feSquare(&t2, &t2) + } + feMul(&t1, &t2, &t1) + feSquare(&t2, &t1) + for i = 1; i < 50; i++ { + feSquare(&t2, &t2) + } + feMul(&t2, &t2, &t1) + feSquare(&t3, &t2) + for i = 1; i < 100; i++ { + feSquare(&t3, &t3) + } + feMul(&t2, &t3, &t2) + feSquare(&t2, &t2) + for i = 1; i < 50; i++ { + feSquare(&t2, &t2) + } + feMul(&t1, &t2, &t1) + feSquare(&t1, &t1) + for i = 1; i < 5; i++ { + feSquare(&t1, &t1) + } + feMul(out, &t1, &t0) +} + +func scalarMult(out, in, base *[32]byte) { + var e [32]byte + + copy(e[:], in[:]) + e[0] &= 248 + e[31] &= 127 + e[31] |= 64 + + var x1, x2, z2, x3, z3, tmp0, tmp1 fieldElement + feFromBytes(&x1, base) + feOne(&x2) + feCopy(&x3, &x1) + feOne(&z3) + + swap := int32(0) + for pos := 254; pos >= 0; pos-- { + b := e[pos/8] >> uint(pos&7) + b &= 1 + swap ^= int32(b) + feCSwap(&x2, &x3, swap) + feCSwap(&z2, &z3, swap) + swap = int32(b) + + feSub(&tmp0, &x3, &z3) + feSub(&tmp1, &x2, &z2) + feAdd(&x2, &x2, &z2) + feAdd(&z2, &x3, &z3) + feMul(&z3, &tmp0, &x2) + feMul(&z2, &z2, &tmp1) + feSquare(&tmp0, &tmp1) + feSquare(&tmp1, &x2) + feAdd(&x3, &z3, &z2) + feSub(&z2, &z3, &z2) + feMul(&x2, &tmp1, &tmp0) + feSub(&tmp1, &tmp1, &tmp0) + feSquare(&z2, &z2) + feMul121666(&z3, &tmp1) + feSquare(&x3, &x3) + feAdd(&tmp0, &tmp0, &z3) + feMul(&z3, &x1, &z2) + feMul(&z2, &tmp1, &tmp0) + } + + feCSwap(&x2, &x3, swap) + feCSwap(&z2, &z3, swap) + + feInvert(&z2, &z2) + feMul(&x2, &x2, &z2) + feToBytes(out, &x2) +} diff --git a/vendor/golang.org/x/crypto/curve25519/doc.go b/vendor/golang.org/x/crypto/curve25519/doc.go new file mode 100644 index 0000000..f7db9c1 --- /dev/null +++ b/vendor/golang.org/x/crypto/curve25519/doc.go @@ -0,0 +1,23 @@ +// 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 curve25519 provides an implementation of scalar multiplication on +// the elliptic curve known as curve25519. See http://cr.yp.to/ecdh.html +package curve25519 + +// basePoint is the x coordinate of the generator of the curve. +var basePoint = [32]byte{9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} + +// ScalarMult sets dst to the product in*base where dst and base are the x +// coordinates of group points and all values are in little-endian form. +func ScalarMult(dst, in, base *[32]byte) { + scalarMult(dst, in, base) +} + +// ScalarBaseMult sets dst to the product in*base where dst and base are the x +// coordinates of group points, base is the standard generator and all values +// are in little-endian form. +func ScalarBaseMult(dst, in *[32]byte) { + ScalarMult(dst, in, &basePoint) +} diff --git a/vendor/golang.org/x/crypto/curve25519/freeze_amd64.s b/vendor/golang.org/x/crypto/curve25519/freeze_amd64.s new file mode 100644 index 0000000..932800b --- /dev/null +++ b/vendor/golang.org/x/crypto/curve25519/freeze_amd64.s @@ -0,0 +1,71 @@ +// 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. + +// This code was translated into a form compatible with 6a from the public +// domain sources in SUPERCOP: http://bench.cr.yp.to/supercop.html + +// +build amd64,!gccgo,!appengine + +// func freeze(inout *[5]uint64) +TEXT ·freeze(SB),7,$0-8 + MOVQ inout+0(FP), DI + + MOVQ 0(DI),SI + MOVQ 8(DI),DX + MOVQ 16(DI),CX + MOVQ 24(DI),R8 + MOVQ 32(DI),R9 + MOVQ ·REDMASK51(SB),AX + MOVQ AX,R10 + SUBQ $18,R10 + MOVQ $3,R11 +REDUCELOOP: + MOVQ SI,R12 + SHRQ $51,R12 + ANDQ AX,SI + ADDQ R12,DX + MOVQ DX,R12 + SHRQ $51,R12 + ANDQ AX,DX + ADDQ R12,CX + MOVQ CX,R12 + SHRQ $51,R12 + ANDQ AX,CX + ADDQ R12,R8 + MOVQ R8,R12 + SHRQ $51,R12 + ANDQ AX,R8 + ADDQ R12,R9 + MOVQ R9,R12 + SHRQ $51,R12 + ANDQ AX,R9 + IMUL3Q $19,R12,R12 + ADDQ R12,SI + SUBQ $1,R11 + JA REDUCELOOP + MOVQ $1,R12 + CMPQ R10,SI + CMOVQLT R11,R12 + CMPQ AX,DX + CMOVQNE R11,R12 + CMPQ AX,CX + CMOVQNE R11,R12 + CMPQ AX,R8 + CMOVQNE R11,R12 + CMPQ AX,R9 + CMOVQNE R11,R12 + NEGQ R12 + ANDQ R12,AX + ANDQ R12,R10 + SUBQ R10,SI + SUBQ AX,DX + SUBQ AX,CX + SUBQ AX,R8 + SUBQ AX,R9 + MOVQ SI,0(DI) + MOVQ DX,8(DI) + MOVQ CX,16(DI) + MOVQ R8,24(DI) + MOVQ R9,32(DI) + RET diff --git a/vendor/golang.org/x/crypto/curve25519/ladderstep_amd64.s b/vendor/golang.org/x/crypto/curve25519/ladderstep_amd64.s new file mode 100644 index 0000000..ee7b36c --- /dev/null +++ b/vendor/golang.org/x/crypto/curve25519/ladderstep_amd64.s @@ -0,0 +1,1375 @@ +// 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. + +// This code was translated into a form compatible with 6a from the public +// domain sources in SUPERCOP: http://bench.cr.yp.to/supercop.html + +// +build amd64,!gccgo,!appengine + +// func ladderstep(inout *[5][5]uint64) +TEXT ·ladderstep(SB),0,$296-8 + MOVQ inout+0(FP),DI + + MOVQ 40(DI),SI + MOVQ 48(DI),DX + MOVQ 56(DI),CX + MOVQ 64(DI),R8 + MOVQ 72(DI),R9 + MOVQ SI,AX + MOVQ DX,R10 + MOVQ CX,R11 + MOVQ R8,R12 + MOVQ R9,R13 + ADDQ ·_2P0(SB),AX + ADDQ ·_2P1234(SB),R10 + ADDQ ·_2P1234(SB),R11 + ADDQ ·_2P1234(SB),R12 + ADDQ ·_2P1234(SB),R13 + ADDQ 80(DI),SI + ADDQ 88(DI),DX + ADDQ 96(DI),CX + ADDQ 104(DI),R8 + ADDQ 112(DI),R9 + SUBQ 80(DI),AX + SUBQ 88(DI),R10 + SUBQ 96(DI),R11 + SUBQ 104(DI),R12 + SUBQ 112(DI),R13 + MOVQ SI,0(SP) + MOVQ DX,8(SP) + MOVQ CX,16(SP) + MOVQ R8,24(SP) + MOVQ R9,32(SP) + MOVQ AX,40(SP) + MOVQ R10,48(SP) + MOVQ R11,56(SP) + MOVQ R12,64(SP) + MOVQ R13,72(SP) + MOVQ 40(SP),AX + MULQ 40(SP) + MOVQ AX,SI + MOVQ DX,CX + MOVQ 40(SP),AX + SHLQ $1,AX + MULQ 48(SP) + MOVQ AX,R8 + MOVQ DX,R9 + MOVQ 40(SP),AX + SHLQ $1,AX + MULQ 56(SP) + MOVQ AX,R10 + MOVQ DX,R11 + MOVQ 40(SP),AX + SHLQ $1,AX + MULQ 64(SP) + MOVQ AX,R12 + MOVQ DX,R13 + MOVQ 40(SP),AX + SHLQ $1,AX + MULQ 72(SP) + MOVQ AX,R14 + MOVQ DX,R15 + MOVQ 48(SP),AX + MULQ 48(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 48(SP),AX + SHLQ $1,AX + MULQ 56(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 48(SP),AX + SHLQ $1,AX + MULQ 64(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 48(SP),DX + IMUL3Q $38,DX,AX + MULQ 72(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 56(SP),AX + MULQ 56(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 56(SP),DX + IMUL3Q $38,DX,AX + MULQ 64(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 56(SP),DX + IMUL3Q $38,DX,AX + MULQ 72(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 64(SP),DX + IMUL3Q $19,DX,AX + MULQ 64(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 64(SP),DX + IMUL3Q $38,DX,AX + MULQ 72(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 72(SP),DX + IMUL3Q $19,DX,AX + MULQ 72(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ ·REDMASK51(SB),DX + SHLQ $13,CX:SI + ANDQ DX,SI + SHLQ $13,R9:R8 + ANDQ DX,R8 + ADDQ CX,R8 + SHLQ $13,R11:R10 + ANDQ DX,R10 + ADDQ R9,R10 + SHLQ $13,R13:R12 + ANDQ DX,R12 + ADDQ R11,R12 + SHLQ $13,R15:R14 + ANDQ DX,R14 + ADDQ R13,R14 + IMUL3Q $19,R15,CX + ADDQ CX,SI + MOVQ SI,CX + SHRQ $51,CX + ADDQ R8,CX + ANDQ DX,SI + MOVQ CX,R8 + SHRQ $51,CX + ADDQ R10,CX + ANDQ DX,R8 + MOVQ CX,R9 + SHRQ $51,CX + ADDQ R12,CX + ANDQ DX,R9 + MOVQ CX,AX + SHRQ $51,CX + ADDQ R14,CX + ANDQ DX,AX + MOVQ CX,R10 + SHRQ $51,CX + IMUL3Q $19,CX,CX + ADDQ CX,SI + ANDQ DX,R10 + MOVQ SI,80(SP) + MOVQ R8,88(SP) + MOVQ R9,96(SP) + MOVQ AX,104(SP) + MOVQ R10,112(SP) + MOVQ 0(SP),AX + MULQ 0(SP) + MOVQ AX,SI + MOVQ DX,CX + MOVQ 0(SP),AX + SHLQ $1,AX + MULQ 8(SP) + MOVQ AX,R8 + MOVQ DX,R9 + MOVQ 0(SP),AX + SHLQ $1,AX + MULQ 16(SP) + MOVQ AX,R10 + MOVQ DX,R11 + MOVQ 0(SP),AX + SHLQ $1,AX + MULQ 24(SP) + MOVQ AX,R12 + MOVQ DX,R13 + MOVQ 0(SP),AX + SHLQ $1,AX + MULQ 32(SP) + MOVQ AX,R14 + MOVQ DX,R15 + MOVQ 8(SP),AX + MULQ 8(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 8(SP),AX + SHLQ $1,AX + MULQ 16(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 8(SP),AX + SHLQ $1,AX + MULQ 24(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 8(SP),DX + IMUL3Q $38,DX,AX + MULQ 32(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 16(SP),AX + MULQ 16(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 16(SP),DX + IMUL3Q $38,DX,AX + MULQ 24(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 16(SP),DX + IMUL3Q $38,DX,AX + MULQ 32(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 24(SP),DX + IMUL3Q $19,DX,AX + MULQ 24(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 24(SP),DX + IMUL3Q $38,DX,AX + MULQ 32(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 32(SP),DX + IMUL3Q $19,DX,AX + MULQ 32(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ ·REDMASK51(SB),DX + SHLQ $13,CX:SI + ANDQ DX,SI + SHLQ $13,R9:R8 + ANDQ DX,R8 + ADDQ CX,R8 + SHLQ $13,R11:R10 + ANDQ DX,R10 + ADDQ R9,R10 + SHLQ $13,R13:R12 + ANDQ DX,R12 + ADDQ R11,R12 + SHLQ $13,R15:R14 + ANDQ DX,R14 + ADDQ R13,R14 + IMUL3Q $19,R15,CX + ADDQ CX,SI + MOVQ SI,CX + SHRQ $51,CX + ADDQ R8,CX + ANDQ DX,SI + MOVQ CX,R8 + SHRQ $51,CX + ADDQ R10,CX + ANDQ DX,R8 + MOVQ CX,R9 + SHRQ $51,CX + ADDQ R12,CX + ANDQ DX,R9 + MOVQ CX,AX + SHRQ $51,CX + ADDQ R14,CX + ANDQ DX,AX + MOVQ CX,R10 + SHRQ $51,CX + IMUL3Q $19,CX,CX + ADDQ CX,SI + ANDQ DX,R10 + MOVQ SI,120(SP) + MOVQ R8,128(SP) + MOVQ R9,136(SP) + MOVQ AX,144(SP) + MOVQ R10,152(SP) + MOVQ SI,SI + MOVQ R8,DX + MOVQ R9,CX + MOVQ AX,R8 + MOVQ R10,R9 + ADDQ ·_2P0(SB),SI + ADDQ ·_2P1234(SB),DX + ADDQ ·_2P1234(SB),CX + ADDQ ·_2P1234(SB),R8 + ADDQ ·_2P1234(SB),R9 + SUBQ 80(SP),SI + SUBQ 88(SP),DX + SUBQ 96(SP),CX + SUBQ 104(SP),R8 + SUBQ 112(SP),R9 + MOVQ SI,160(SP) + MOVQ DX,168(SP) + MOVQ CX,176(SP) + MOVQ R8,184(SP) + MOVQ R9,192(SP) + MOVQ 120(DI),SI + MOVQ 128(DI),DX + MOVQ 136(DI),CX + MOVQ 144(DI),R8 + MOVQ 152(DI),R9 + MOVQ SI,AX + MOVQ DX,R10 + MOVQ CX,R11 + MOVQ R8,R12 + MOVQ R9,R13 + ADDQ ·_2P0(SB),AX + ADDQ ·_2P1234(SB),R10 + ADDQ ·_2P1234(SB),R11 + ADDQ ·_2P1234(SB),R12 + ADDQ ·_2P1234(SB),R13 + ADDQ 160(DI),SI + ADDQ 168(DI),DX + ADDQ 176(DI),CX + ADDQ 184(DI),R8 + ADDQ 192(DI),R9 + SUBQ 160(DI),AX + SUBQ 168(DI),R10 + SUBQ 176(DI),R11 + SUBQ 184(DI),R12 + SUBQ 192(DI),R13 + MOVQ SI,200(SP) + MOVQ DX,208(SP) + MOVQ CX,216(SP) + MOVQ R8,224(SP) + MOVQ R9,232(SP) + MOVQ AX,240(SP) + MOVQ R10,248(SP) + MOVQ R11,256(SP) + MOVQ R12,264(SP) + MOVQ R13,272(SP) + MOVQ 224(SP),SI + IMUL3Q $19,SI,AX + MOVQ AX,280(SP) + MULQ 56(SP) + MOVQ AX,SI + MOVQ DX,CX + MOVQ 232(SP),DX + IMUL3Q $19,DX,AX + MOVQ AX,288(SP) + MULQ 48(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 200(SP),AX + MULQ 40(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 200(SP),AX + MULQ 48(SP) + MOVQ AX,R8 + MOVQ DX,R9 + MOVQ 200(SP),AX + MULQ 56(SP) + MOVQ AX,R10 + MOVQ DX,R11 + MOVQ 200(SP),AX + MULQ 64(SP) + MOVQ AX,R12 + MOVQ DX,R13 + MOVQ 200(SP),AX + MULQ 72(SP) + MOVQ AX,R14 + MOVQ DX,R15 + MOVQ 208(SP),AX + MULQ 40(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 208(SP),AX + MULQ 48(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 208(SP),AX + MULQ 56(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 208(SP),AX + MULQ 64(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 208(SP),DX + IMUL3Q $19,DX,AX + MULQ 72(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 216(SP),AX + MULQ 40(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 216(SP),AX + MULQ 48(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 216(SP),AX + MULQ 56(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 216(SP),DX + IMUL3Q $19,DX,AX + MULQ 64(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 216(SP),DX + IMUL3Q $19,DX,AX + MULQ 72(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 224(SP),AX + MULQ 40(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 224(SP),AX + MULQ 48(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 280(SP),AX + MULQ 64(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 280(SP),AX + MULQ 72(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 232(SP),AX + MULQ 40(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 288(SP),AX + MULQ 56(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 288(SP),AX + MULQ 64(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 288(SP),AX + MULQ 72(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ ·REDMASK51(SB),DX + SHLQ $13,CX:SI + ANDQ DX,SI + SHLQ $13,R9:R8 + ANDQ DX,R8 + ADDQ CX,R8 + SHLQ $13,R11:R10 + ANDQ DX,R10 + ADDQ R9,R10 + SHLQ $13,R13:R12 + ANDQ DX,R12 + ADDQ R11,R12 + SHLQ $13,R15:R14 + ANDQ DX,R14 + ADDQ R13,R14 + IMUL3Q $19,R15,CX + ADDQ CX,SI + MOVQ SI,CX + SHRQ $51,CX + ADDQ R8,CX + MOVQ CX,R8 + SHRQ $51,CX + ANDQ DX,SI + ADDQ R10,CX + MOVQ CX,R9 + SHRQ $51,CX + ANDQ DX,R8 + ADDQ R12,CX + MOVQ CX,AX + SHRQ $51,CX + ANDQ DX,R9 + ADDQ R14,CX + MOVQ CX,R10 + SHRQ $51,CX + ANDQ DX,AX + IMUL3Q $19,CX,CX + ADDQ CX,SI + ANDQ DX,R10 + MOVQ SI,40(SP) + MOVQ R8,48(SP) + MOVQ R9,56(SP) + MOVQ AX,64(SP) + MOVQ R10,72(SP) + MOVQ 264(SP),SI + IMUL3Q $19,SI,AX + MOVQ AX,200(SP) + MULQ 16(SP) + MOVQ AX,SI + MOVQ DX,CX + MOVQ 272(SP),DX + IMUL3Q $19,DX,AX + MOVQ AX,208(SP) + MULQ 8(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 240(SP),AX + MULQ 0(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 240(SP),AX + MULQ 8(SP) + MOVQ AX,R8 + MOVQ DX,R9 + MOVQ 240(SP),AX + MULQ 16(SP) + MOVQ AX,R10 + MOVQ DX,R11 + MOVQ 240(SP),AX + MULQ 24(SP) + MOVQ AX,R12 + MOVQ DX,R13 + MOVQ 240(SP),AX + MULQ 32(SP) + MOVQ AX,R14 + MOVQ DX,R15 + MOVQ 248(SP),AX + MULQ 0(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 248(SP),AX + MULQ 8(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 248(SP),AX + MULQ 16(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 248(SP),AX + MULQ 24(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 248(SP),DX + IMUL3Q $19,DX,AX + MULQ 32(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 256(SP),AX + MULQ 0(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 256(SP),AX + MULQ 8(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 256(SP),AX + MULQ 16(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 256(SP),DX + IMUL3Q $19,DX,AX + MULQ 24(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 256(SP),DX + IMUL3Q $19,DX,AX + MULQ 32(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 264(SP),AX + MULQ 0(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 264(SP),AX + MULQ 8(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 200(SP),AX + MULQ 24(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 200(SP),AX + MULQ 32(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 272(SP),AX + MULQ 0(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 208(SP),AX + MULQ 16(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 208(SP),AX + MULQ 24(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 208(SP),AX + MULQ 32(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ ·REDMASK51(SB),DX + SHLQ $13,CX:SI + ANDQ DX,SI + SHLQ $13,R9:R8 + ANDQ DX,R8 + ADDQ CX,R8 + SHLQ $13,R11:R10 + ANDQ DX,R10 + ADDQ R9,R10 + SHLQ $13,R13:R12 + ANDQ DX,R12 + ADDQ R11,R12 + SHLQ $13,R15:R14 + ANDQ DX,R14 + ADDQ R13,R14 + IMUL3Q $19,R15,CX + ADDQ CX,SI + MOVQ SI,CX + SHRQ $51,CX + ADDQ R8,CX + MOVQ CX,R8 + SHRQ $51,CX + ANDQ DX,SI + ADDQ R10,CX + MOVQ CX,R9 + SHRQ $51,CX + ANDQ DX,R8 + ADDQ R12,CX + MOVQ CX,AX + SHRQ $51,CX + ANDQ DX,R9 + ADDQ R14,CX + MOVQ CX,R10 + SHRQ $51,CX + ANDQ DX,AX + IMUL3Q $19,CX,CX + ADDQ CX,SI + ANDQ DX,R10 + MOVQ SI,DX + MOVQ R8,CX + MOVQ R9,R11 + MOVQ AX,R12 + MOVQ R10,R13 + ADDQ ·_2P0(SB),DX + ADDQ ·_2P1234(SB),CX + ADDQ ·_2P1234(SB),R11 + ADDQ ·_2P1234(SB),R12 + ADDQ ·_2P1234(SB),R13 + ADDQ 40(SP),SI + ADDQ 48(SP),R8 + ADDQ 56(SP),R9 + ADDQ 64(SP),AX + ADDQ 72(SP),R10 + SUBQ 40(SP),DX + SUBQ 48(SP),CX + SUBQ 56(SP),R11 + SUBQ 64(SP),R12 + SUBQ 72(SP),R13 + MOVQ SI,120(DI) + MOVQ R8,128(DI) + MOVQ R9,136(DI) + MOVQ AX,144(DI) + MOVQ R10,152(DI) + MOVQ DX,160(DI) + MOVQ CX,168(DI) + MOVQ R11,176(DI) + MOVQ R12,184(DI) + MOVQ R13,192(DI) + MOVQ 120(DI),AX + MULQ 120(DI) + MOVQ AX,SI + MOVQ DX,CX + MOVQ 120(DI),AX + SHLQ $1,AX + MULQ 128(DI) + MOVQ AX,R8 + MOVQ DX,R9 + MOVQ 120(DI),AX + SHLQ $1,AX + MULQ 136(DI) + MOVQ AX,R10 + MOVQ DX,R11 + MOVQ 120(DI),AX + SHLQ $1,AX + MULQ 144(DI) + MOVQ AX,R12 + MOVQ DX,R13 + MOVQ 120(DI),AX + SHLQ $1,AX + MULQ 152(DI) + MOVQ AX,R14 + MOVQ DX,R15 + MOVQ 128(DI),AX + MULQ 128(DI) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 128(DI),AX + SHLQ $1,AX + MULQ 136(DI) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 128(DI),AX + SHLQ $1,AX + MULQ 144(DI) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 128(DI),DX + IMUL3Q $38,DX,AX + MULQ 152(DI) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 136(DI),AX + MULQ 136(DI) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 136(DI),DX + IMUL3Q $38,DX,AX + MULQ 144(DI) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 136(DI),DX + IMUL3Q $38,DX,AX + MULQ 152(DI) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 144(DI),DX + IMUL3Q $19,DX,AX + MULQ 144(DI) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 144(DI),DX + IMUL3Q $38,DX,AX + MULQ 152(DI) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 152(DI),DX + IMUL3Q $19,DX,AX + MULQ 152(DI) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ ·REDMASK51(SB),DX + SHLQ $13,CX:SI + ANDQ DX,SI + SHLQ $13,R9:R8 + ANDQ DX,R8 + ADDQ CX,R8 + SHLQ $13,R11:R10 + ANDQ DX,R10 + ADDQ R9,R10 + SHLQ $13,R13:R12 + ANDQ DX,R12 + ADDQ R11,R12 + SHLQ $13,R15:R14 + ANDQ DX,R14 + ADDQ R13,R14 + IMUL3Q $19,R15,CX + ADDQ CX,SI + MOVQ SI,CX + SHRQ $51,CX + ADDQ R8,CX + ANDQ DX,SI + MOVQ CX,R8 + SHRQ $51,CX + ADDQ R10,CX + ANDQ DX,R8 + MOVQ CX,R9 + SHRQ $51,CX + ADDQ R12,CX + ANDQ DX,R9 + MOVQ CX,AX + SHRQ $51,CX + ADDQ R14,CX + ANDQ DX,AX + MOVQ CX,R10 + SHRQ $51,CX + IMUL3Q $19,CX,CX + ADDQ CX,SI + ANDQ DX,R10 + MOVQ SI,120(DI) + MOVQ R8,128(DI) + MOVQ R9,136(DI) + MOVQ AX,144(DI) + MOVQ R10,152(DI) + MOVQ 160(DI),AX + MULQ 160(DI) + MOVQ AX,SI + MOVQ DX,CX + MOVQ 160(DI),AX + SHLQ $1,AX + MULQ 168(DI) + MOVQ AX,R8 + MOVQ DX,R9 + MOVQ 160(DI),AX + SHLQ $1,AX + MULQ 176(DI) + MOVQ AX,R10 + MOVQ DX,R11 + MOVQ 160(DI),AX + SHLQ $1,AX + MULQ 184(DI) + MOVQ AX,R12 + MOVQ DX,R13 + MOVQ 160(DI),AX + SHLQ $1,AX + MULQ 192(DI) + MOVQ AX,R14 + MOVQ DX,R15 + MOVQ 168(DI),AX + MULQ 168(DI) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 168(DI),AX + SHLQ $1,AX + MULQ 176(DI) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 168(DI),AX + SHLQ $1,AX + MULQ 184(DI) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 168(DI),DX + IMUL3Q $38,DX,AX + MULQ 192(DI) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 176(DI),AX + MULQ 176(DI) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 176(DI),DX + IMUL3Q $38,DX,AX + MULQ 184(DI) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 176(DI),DX + IMUL3Q $38,DX,AX + MULQ 192(DI) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 184(DI),DX + IMUL3Q $19,DX,AX + MULQ 184(DI) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 184(DI),DX + IMUL3Q $38,DX,AX + MULQ 192(DI) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 192(DI),DX + IMUL3Q $19,DX,AX + MULQ 192(DI) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ ·REDMASK51(SB),DX + SHLQ $13,CX:SI + ANDQ DX,SI + SHLQ $13,R9:R8 + ANDQ DX,R8 + ADDQ CX,R8 + SHLQ $13,R11:R10 + ANDQ DX,R10 + ADDQ R9,R10 + SHLQ $13,R13:R12 + ANDQ DX,R12 + ADDQ R11,R12 + SHLQ $13,R15:R14 + ANDQ DX,R14 + ADDQ R13,R14 + IMUL3Q $19,R15,CX + ADDQ CX,SI + MOVQ SI,CX + SHRQ $51,CX + ADDQ R8,CX + ANDQ DX,SI + MOVQ CX,R8 + SHRQ $51,CX + ADDQ R10,CX + ANDQ DX,R8 + MOVQ CX,R9 + SHRQ $51,CX + ADDQ R12,CX + ANDQ DX,R9 + MOVQ CX,AX + SHRQ $51,CX + ADDQ R14,CX + ANDQ DX,AX + MOVQ CX,R10 + SHRQ $51,CX + IMUL3Q $19,CX,CX + ADDQ CX,SI + ANDQ DX,R10 + MOVQ SI,160(DI) + MOVQ R8,168(DI) + MOVQ R9,176(DI) + MOVQ AX,184(DI) + MOVQ R10,192(DI) + MOVQ 184(DI),SI + IMUL3Q $19,SI,AX + MOVQ AX,0(SP) + MULQ 16(DI) + MOVQ AX,SI + MOVQ DX,CX + MOVQ 192(DI),DX + IMUL3Q $19,DX,AX + MOVQ AX,8(SP) + MULQ 8(DI) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 160(DI),AX + MULQ 0(DI) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 160(DI),AX + MULQ 8(DI) + MOVQ AX,R8 + MOVQ DX,R9 + MOVQ 160(DI),AX + MULQ 16(DI) + MOVQ AX,R10 + MOVQ DX,R11 + MOVQ 160(DI),AX + MULQ 24(DI) + MOVQ AX,R12 + MOVQ DX,R13 + MOVQ 160(DI),AX + MULQ 32(DI) + MOVQ AX,R14 + MOVQ DX,R15 + MOVQ 168(DI),AX + MULQ 0(DI) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 168(DI),AX + MULQ 8(DI) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 168(DI),AX + MULQ 16(DI) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 168(DI),AX + MULQ 24(DI) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 168(DI),DX + IMUL3Q $19,DX,AX + MULQ 32(DI) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 176(DI),AX + MULQ 0(DI) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 176(DI),AX + MULQ 8(DI) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 176(DI),AX + MULQ 16(DI) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 176(DI),DX + IMUL3Q $19,DX,AX + MULQ 24(DI) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 176(DI),DX + IMUL3Q $19,DX,AX + MULQ 32(DI) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 184(DI),AX + MULQ 0(DI) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 184(DI),AX + MULQ 8(DI) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 0(SP),AX + MULQ 24(DI) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 0(SP),AX + MULQ 32(DI) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 192(DI),AX + MULQ 0(DI) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 8(SP),AX + MULQ 16(DI) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 8(SP),AX + MULQ 24(DI) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 8(SP),AX + MULQ 32(DI) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ ·REDMASK51(SB),DX + SHLQ $13,CX:SI + ANDQ DX,SI + SHLQ $13,R9:R8 + ANDQ DX,R8 + ADDQ CX,R8 + SHLQ $13,R11:R10 + ANDQ DX,R10 + ADDQ R9,R10 + SHLQ $13,R13:R12 + ANDQ DX,R12 + ADDQ R11,R12 + SHLQ $13,R15:R14 + ANDQ DX,R14 + ADDQ R13,R14 + IMUL3Q $19,R15,CX + ADDQ CX,SI + MOVQ SI,CX + SHRQ $51,CX + ADDQ R8,CX + MOVQ CX,R8 + SHRQ $51,CX + ANDQ DX,SI + ADDQ R10,CX + MOVQ CX,R9 + SHRQ $51,CX + ANDQ DX,R8 + ADDQ R12,CX + MOVQ CX,AX + SHRQ $51,CX + ANDQ DX,R9 + ADDQ R14,CX + MOVQ CX,R10 + SHRQ $51,CX + ANDQ DX,AX + IMUL3Q $19,CX,CX + ADDQ CX,SI + ANDQ DX,R10 + MOVQ SI,160(DI) + MOVQ R8,168(DI) + MOVQ R9,176(DI) + MOVQ AX,184(DI) + MOVQ R10,192(DI) + MOVQ 144(SP),SI + IMUL3Q $19,SI,AX + MOVQ AX,0(SP) + MULQ 96(SP) + MOVQ AX,SI + MOVQ DX,CX + MOVQ 152(SP),DX + IMUL3Q $19,DX,AX + MOVQ AX,8(SP) + MULQ 88(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 120(SP),AX + MULQ 80(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 120(SP),AX + MULQ 88(SP) + MOVQ AX,R8 + MOVQ DX,R9 + MOVQ 120(SP),AX + MULQ 96(SP) + MOVQ AX,R10 + MOVQ DX,R11 + MOVQ 120(SP),AX + MULQ 104(SP) + MOVQ AX,R12 + MOVQ DX,R13 + MOVQ 120(SP),AX + MULQ 112(SP) + MOVQ AX,R14 + MOVQ DX,R15 + MOVQ 128(SP),AX + MULQ 80(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 128(SP),AX + MULQ 88(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 128(SP),AX + MULQ 96(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 128(SP),AX + MULQ 104(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 128(SP),DX + IMUL3Q $19,DX,AX + MULQ 112(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 136(SP),AX + MULQ 80(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 136(SP),AX + MULQ 88(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 136(SP),AX + MULQ 96(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 136(SP),DX + IMUL3Q $19,DX,AX + MULQ 104(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 136(SP),DX + IMUL3Q $19,DX,AX + MULQ 112(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 144(SP),AX + MULQ 80(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 144(SP),AX + MULQ 88(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 0(SP),AX + MULQ 104(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 0(SP),AX + MULQ 112(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 152(SP),AX + MULQ 80(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 8(SP),AX + MULQ 96(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 8(SP),AX + MULQ 104(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 8(SP),AX + MULQ 112(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ ·REDMASK51(SB),DX + SHLQ $13,CX:SI + ANDQ DX,SI + SHLQ $13,R9:R8 + ANDQ DX,R8 + ADDQ CX,R8 + SHLQ $13,R11:R10 + ANDQ DX,R10 + ADDQ R9,R10 + SHLQ $13,R13:R12 + ANDQ DX,R12 + ADDQ R11,R12 + SHLQ $13,R15:R14 + ANDQ DX,R14 + ADDQ R13,R14 + IMUL3Q $19,R15,CX + ADDQ CX,SI + MOVQ SI,CX + SHRQ $51,CX + ADDQ R8,CX + MOVQ CX,R8 + SHRQ $51,CX + ANDQ DX,SI + ADDQ R10,CX + MOVQ CX,R9 + SHRQ $51,CX + ANDQ DX,R8 + ADDQ R12,CX + MOVQ CX,AX + SHRQ $51,CX + ANDQ DX,R9 + ADDQ R14,CX + MOVQ CX,R10 + SHRQ $51,CX + ANDQ DX,AX + IMUL3Q $19,CX,CX + ADDQ CX,SI + ANDQ DX,R10 + MOVQ SI,40(DI) + MOVQ R8,48(DI) + MOVQ R9,56(DI) + MOVQ AX,64(DI) + MOVQ R10,72(DI) + MOVQ 160(SP),AX + MULQ ·_121666_213(SB) + SHRQ $13,AX + MOVQ AX,SI + MOVQ DX,CX + MOVQ 168(SP),AX + MULQ ·_121666_213(SB) + SHRQ $13,AX + ADDQ AX,CX + MOVQ DX,R8 + MOVQ 176(SP),AX + MULQ ·_121666_213(SB) + SHRQ $13,AX + ADDQ AX,R8 + MOVQ DX,R9 + MOVQ 184(SP),AX + MULQ ·_121666_213(SB) + SHRQ $13,AX + ADDQ AX,R9 + MOVQ DX,R10 + MOVQ 192(SP),AX + MULQ ·_121666_213(SB) + SHRQ $13,AX + ADDQ AX,R10 + IMUL3Q $19,DX,DX + ADDQ DX,SI + ADDQ 80(SP),SI + ADDQ 88(SP),CX + ADDQ 96(SP),R8 + ADDQ 104(SP),R9 + ADDQ 112(SP),R10 + MOVQ SI,80(DI) + MOVQ CX,88(DI) + MOVQ R8,96(DI) + MOVQ R9,104(DI) + MOVQ R10,112(DI) + MOVQ 104(DI),SI + IMUL3Q $19,SI,AX + MOVQ AX,0(SP) + MULQ 176(SP) + MOVQ AX,SI + MOVQ DX,CX + MOVQ 112(DI),DX + IMUL3Q $19,DX,AX + MOVQ AX,8(SP) + MULQ 168(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 80(DI),AX + MULQ 160(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 80(DI),AX + MULQ 168(SP) + MOVQ AX,R8 + MOVQ DX,R9 + MOVQ 80(DI),AX + MULQ 176(SP) + MOVQ AX,R10 + MOVQ DX,R11 + MOVQ 80(DI),AX + MULQ 184(SP) + MOVQ AX,R12 + MOVQ DX,R13 + MOVQ 80(DI),AX + MULQ 192(SP) + MOVQ AX,R14 + MOVQ DX,R15 + MOVQ 88(DI),AX + MULQ 160(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 88(DI),AX + MULQ 168(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 88(DI),AX + MULQ 176(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 88(DI),AX + MULQ 184(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 88(DI),DX + IMUL3Q $19,DX,AX + MULQ 192(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 96(DI),AX + MULQ 160(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 96(DI),AX + MULQ 168(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 96(DI),AX + MULQ 176(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 96(DI),DX + IMUL3Q $19,DX,AX + MULQ 184(SP) + ADDQ AX,SI + ADCQ DX,CX + MOVQ 96(DI),DX + IMUL3Q $19,DX,AX + MULQ 192(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 104(DI),AX + MULQ 160(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 104(DI),AX + MULQ 168(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 0(SP),AX + MULQ 184(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 0(SP),AX + MULQ 192(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 112(DI),AX + MULQ 160(SP) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 8(SP),AX + MULQ 176(SP) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 8(SP),AX + MULQ 184(SP) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 8(SP),AX + MULQ 192(SP) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ ·REDMASK51(SB),DX + SHLQ $13,CX:SI + ANDQ DX,SI + SHLQ $13,R9:R8 + ANDQ DX,R8 + ADDQ CX,R8 + SHLQ $13,R11:R10 + ANDQ DX,R10 + ADDQ R9,R10 + SHLQ $13,R13:R12 + ANDQ DX,R12 + ADDQ R11,R12 + SHLQ $13,R15:R14 + ANDQ DX,R14 + ADDQ R13,R14 + IMUL3Q $19,R15,CX + ADDQ CX,SI + MOVQ SI,CX + SHRQ $51,CX + ADDQ R8,CX + MOVQ CX,R8 + SHRQ $51,CX + ANDQ DX,SI + ADDQ R10,CX + MOVQ CX,R9 + SHRQ $51,CX + ANDQ DX,R8 + ADDQ R12,CX + MOVQ CX,AX + SHRQ $51,CX + ANDQ DX,R9 + ADDQ R14,CX + MOVQ CX,R10 + SHRQ $51,CX + ANDQ DX,AX + IMUL3Q $19,CX,CX + ADDQ CX,SI + ANDQ DX,R10 + MOVQ SI,80(DI) + MOVQ R8,88(DI) + MOVQ R9,96(DI) + MOVQ AX,104(DI) + MOVQ R10,112(DI) + RET diff --git a/vendor/golang.org/x/crypto/curve25519/mont25519_amd64.go b/vendor/golang.org/x/crypto/curve25519/mont25519_amd64.go new file mode 100644 index 0000000..5822bd5 --- /dev/null +++ b/vendor/golang.org/x/crypto/curve25519/mont25519_amd64.go @@ -0,0 +1,240 @@ +// 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 amd64,!gccgo,!appengine + +package curve25519 + +// These functions are implemented in the .s files. The names of the functions +// in the rest of the file are also taken from the SUPERCOP sources to help +// people following along. + +//go:noescape + +func cswap(inout *[5]uint64, v uint64) + +//go:noescape + +func ladderstep(inout *[5][5]uint64) + +//go:noescape + +func freeze(inout *[5]uint64) + +//go:noescape + +func mul(dest, a, b *[5]uint64) + +//go:noescape + +func square(out, in *[5]uint64) + +// mladder uses a Montgomery ladder to calculate (xr/zr) *= s. +func mladder(xr, zr *[5]uint64, s *[32]byte) { + var work [5][5]uint64 + + work[0] = *xr + setint(&work[1], 1) + setint(&work[2], 0) + work[3] = *xr + setint(&work[4], 1) + + j := uint(6) + var prevbit byte + + for i := 31; i >= 0; i-- { + for j < 8 { + bit := ((*s)[i] >> j) & 1 + swap := bit ^ prevbit + prevbit = bit + cswap(&work[1], uint64(swap)) + ladderstep(&work) + j-- + } + j = 7 + } + + *xr = work[1] + *zr = work[2] +} + +func scalarMult(out, in, base *[32]byte) { + var e [32]byte + copy(e[:], (*in)[:]) + e[0] &= 248 + e[31] &= 127 + e[31] |= 64 + + var t, z [5]uint64 + unpack(&t, base) + mladder(&t, &z, &e) + invert(&z, &z) + mul(&t, &t, &z) + pack(out, &t) +} + +func setint(r *[5]uint64, v uint64) { + r[0] = v + r[1] = 0 + r[2] = 0 + r[3] = 0 + r[4] = 0 +} + +// unpack sets r = x where r consists of 5, 51-bit limbs in little-endian +// order. +func unpack(r *[5]uint64, x *[32]byte) { + r[0] = uint64(x[0]) | + uint64(x[1])<<8 | + uint64(x[2])<<16 | + uint64(x[3])<<24 | + uint64(x[4])<<32 | + uint64(x[5])<<40 | + uint64(x[6]&7)<<48 + + r[1] = uint64(x[6])>>3 | + uint64(x[7])<<5 | + uint64(x[8])<<13 | + uint64(x[9])<<21 | + uint64(x[10])<<29 | + uint64(x[11])<<37 | + uint64(x[12]&63)<<45 + + r[2] = uint64(x[12])>>6 | + uint64(x[13])<<2 | + uint64(x[14])<<10 | + uint64(x[15])<<18 | + uint64(x[16])<<26 | + uint64(x[17])<<34 | + uint64(x[18])<<42 | + uint64(x[19]&1)<<50 + + r[3] = uint64(x[19])>>1 | + uint64(x[20])<<7 | + uint64(x[21])<<15 | + uint64(x[22])<<23 | + uint64(x[23])<<31 | + uint64(x[24])<<39 | + uint64(x[25]&15)<<47 + + r[4] = uint64(x[25])>>4 | + uint64(x[26])<<4 | + uint64(x[27])<<12 | + uint64(x[28])<<20 | + uint64(x[29])<<28 | + uint64(x[30])<<36 | + uint64(x[31]&127)<<44 +} + +// pack sets out = x where out is the usual, little-endian form of the 5, +// 51-bit limbs in x. +func pack(out *[32]byte, x *[5]uint64) { + t := *x + freeze(&t) + + out[0] = byte(t[0]) + out[1] = byte(t[0] >> 8) + out[2] = byte(t[0] >> 16) + out[3] = byte(t[0] >> 24) + out[4] = byte(t[0] >> 32) + out[5] = byte(t[0] >> 40) + out[6] = byte(t[0] >> 48) + + out[6] ^= byte(t[1]<<3) & 0xf8 + out[7] = byte(t[1] >> 5) + out[8] = byte(t[1] >> 13) + out[9] = byte(t[1] >> 21) + out[10] = byte(t[1] >> 29) + out[11] = byte(t[1] >> 37) + out[12] = byte(t[1] >> 45) + + out[12] ^= byte(t[2]<<6) & 0xc0 + out[13] = byte(t[2] >> 2) + out[14] = byte(t[2] >> 10) + out[15] = byte(t[2] >> 18) + out[16] = byte(t[2] >> 26) + out[17] = byte(t[2] >> 34) + out[18] = byte(t[2] >> 42) + out[19] = byte(t[2] >> 50) + + out[19] ^= byte(t[3]<<1) & 0xfe + out[20] = byte(t[3] >> 7) + out[21] = byte(t[3] >> 15) + out[22] = byte(t[3] >> 23) + out[23] = byte(t[3] >> 31) + out[24] = byte(t[3] >> 39) + out[25] = byte(t[3] >> 47) + + out[25] ^= byte(t[4]<<4) & 0xf0 + out[26] = byte(t[4] >> 4) + out[27] = byte(t[4] >> 12) + out[28] = byte(t[4] >> 20) + out[29] = byte(t[4] >> 28) + out[30] = byte(t[4] >> 36) + out[31] = byte(t[4] >> 44) +} + +// invert calculates r = x^-1 mod p using Fermat's little theorem. +func invert(r *[5]uint64, x *[5]uint64) { + var z2, z9, z11, z2_5_0, z2_10_0, z2_20_0, z2_50_0, z2_100_0, t [5]uint64 + + square(&z2, x) /* 2 */ + square(&t, &z2) /* 4 */ + square(&t, &t) /* 8 */ + mul(&z9, &t, x) /* 9 */ + mul(&z11, &z9, &z2) /* 11 */ + square(&t, &z11) /* 22 */ + mul(&z2_5_0, &t, &z9) /* 2^5 - 2^0 = 31 */ + + square(&t, &z2_5_0) /* 2^6 - 2^1 */ + for i := 1; i < 5; i++ { /* 2^20 - 2^10 */ + square(&t, &t) + } + mul(&z2_10_0, &t, &z2_5_0) /* 2^10 - 2^0 */ + + square(&t, &z2_10_0) /* 2^11 - 2^1 */ + for i := 1; i < 10; i++ { /* 2^20 - 2^10 */ + square(&t, &t) + } + mul(&z2_20_0, &t, &z2_10_0) /* 2^20 - 2^0 */ + + square(&t, &z2_20_0) /* 2^21 - 2^1 */ + for i := 1; i < 20; i++ { /* 2^40 - 2^20 */ + square(&t, &t) + } + mul(&t, &t, &z2_20_0) /* 2^40 - 2^0 */ + + square(&t, &t) /* 2^41 - 2^1 */ + for i := 1; i < 10; i++ { /* 2^50 - 2^10 */ + square(&t, &t) + } + mul(&z2_50_0, &t, &z2_10_0) /* 2^50 - 2^0 */ + + square(&t, &z2_50_0) /* 2^51 - 2^1 */ + for i := 1; i < 50; i++ { /* 2^100 - 2^50 */ + square(&t, &t) + } + mul(&z2_100_0, &t, &z2_50_0) /* 2^100 - 2^0 */ + + square(&t, &z2_100_0) /* 2^101 - 2^1 */ + for i := 1; i < 100; i++ { /* 2^200 - 2^100 */ + square(&t, &t) + } + mul(&t, &t, &z2_100_0) /* 2^200 - 2^0 */ + + square(&t, &t) /* 2^201 - 2^1 */ + for i := 1; i < 50; i++ { /* 2^250 - 2^50 */ + square(&t, &t) + } + mul(&t, &t, &z2_50_0) /* 2^250 - 2^0 */ + + square(&t, &t) /* 2^251 - 2^1 */ + square(&t, &t) /* 2^252 - 2^2 */ + square(&t, &t) /* 2^253 - 2^3 */ + + square(&t, &t) /* 2^254 - 2^4 */ + + square(&t, &t) /* 2^255 - 2^5 */ + mul(r, &t, &z11) /* 2^255 - 21 */ +} diff --git a/vendor/golang.org/x/crypto/curve25519/mul_amd64.s b/vendor/golang.org/x/crypto/curve25519/mul_amd64.s new file mode 100644 index 0000000..33ce57d --- /dev/null +++ b/vendor/golang.org/x/crypto/curve25519/mul_amd64.s @@ -0,0 +1,167 @@ +// 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. + +// This code was translated into a form compatible with 6a from the public +// domain sources in SUPERCOP: http://bench.cr.yp.to/supercop.html + +// +build amd64,!gccgo,!appengine + +// func mul(dest, a, b *[5]uint64) +TEXT ·mul(SB),0,$16-24 + MOVQ dest+0(FP), DI + MOVQ a+8(FP), SI + MOVQ b+16(FP), DX + + MOVQ DX,CX + MOVQ 24(SI),DX + IMUL3Q $19,DX,AX + MOVQ AX,0(SP) + MULQ 16(CX) + MOVQ AX,R8 + MOVQ DX,R9 + MOVQ 32(SI),DX + IMUL3Q $19,DX,AX + MOVQ AX,8(SP) + MULQ 8(CX) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 0(SI),AX + MULQ 0(CX) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 0(SI),AX + MULQ 8(CX) + MOVQ AX,R10 + MOVQ DX,R11 + MOVQ 0(SI),AX + MULQ 16(CX) + MOVQ AX,R12 + MOVQ DX,R13 + MOVQ 0(SI),AX + MULQ 24(CX) + MOVQ AX,R14 + MOVQ DX,R15 + MOVQ 0(SI),AX + MULQ 32(CX) + MOVQ AX,BX + MOVQ DX,BP + MOVQ 8(SI),AX + MULQ 0(CX) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 8(SI),AX + MULQ 8(CX) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 8(SI),AX + MULQ 16(CX) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 8(SI),AX + MULQ 24(CX) + ADDQ AX,BX + ADCQ DX,BP + MOVQ 8(SI),DX + IMUL3Q $19,DX,AX + MULQ 32(CX) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 16(SI),AX + MULQ 0(CX) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 16(SI),AX + MULQ 8(CX) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 16(SI),AX + MULQ 16(CX) + ADDQ AX,BX + ADCQ DX,BP + MOVQ 16(SI),DX + IMUL3Q $19,DX,AX + MULQ 24(CX) + ADDQ AX,R8 + ADCQ DX,R9 + MOVQ 16(SI),DX + IMUL3Q $19,DX,AX + MULQ 32(CX) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 24(SI),AX + MULQ 0(CX) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ 24(SI),AX + MULQ 8(CX) + ADDQ AX,BX + ADCQ DX,BP + MOVQ 0(SP),AX + MULQ 24(CX) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 0(SP),AX + MULQ 32(CX) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 32(SI),AX + MULQ 0(CX) + ADDQ AX,BX + ADCQ DX,BP + MOVQ 8(SP),AX + MULQ 16(CX) + ADDQ AX,R10 + ADCQ DX,R11 + MOVQ 8(SP),AX + MULQ 24(CX) + ADDQ AX,R12 + ADCQ DX,R13 + MOVQ 8(SP),AX + MULQ 32(CX) + ADDQ AX,R14 + ADCQ DX,R15 + MOVQ ·REDMASK51(SB),SI + SHLQ $13,R9:R8 + ANDQ SI,R8 + SHLQ $13,R11:R10 + ANDQ SI,R10 + ADDQ R9,R10 + SHLQ $13,R13:R12 + ANDQ SI,R12 + ADDQ R11,R12 + SHLQ $13,R15:R14 + ANDQ SI,R14 + ADDQ R13,R14 + SHLQ $13,BP:BX + ANDQ SI,BX + ADDQ R15,BX + IMUL3Q $19,BP,DX + ADDQ DX,R8 + MOVQ R8,DX + SHRQ $51,DX + ADDQ R10,DX + MOVQ DX,CX + SHRQ $51,DX + ANDQ SI,R8 + ADDQ R12,DX + MOVQ DX,R9 + SHRQ $51,DX + ANDQ SI,CX + ADDQ R14,DX + MOVQ DX,AX + SHRQ $51,DX + ANDQ SI,R9 + ADDQ BX,DX + MOVQ DX,R10 + SHRQ $51,DX + ANDQ SI,AX + IMUL3Q $19,DX,DX + ADDQ DX,R8 + ANDQ SI,R10 + MOVQ R8,0(DI) + MOVQ CX,8(DI) + MOVQ R9,16(DI) + MOVQ AX,24(DI) + MOVQ R10,32(DI) + RET diff --git a/vendor/golang.org/x/crypto/curve25519/square_amd64.s b/vendor/golang.org/x/crypto/curve25519/square_amd64.s new file mode 100644 index 0000000..3a92804 --- /dev/null +++ b/vendor/golang.org/x/crypto/curve25519/square_amd64.s @@ -0,0 +1,130 @@ +// 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. + +// This code was translated into a form compatible with 6a from the public +// domain sources in SUPERCOP: http://bench.cr.yp.to/supercop.html + +// +build amd64,!gccgo,!appengine + +// func square(out, in *[5]uint64) +TEXT ·square(SB),7,$0-16 + MOVQ out+0(FP), DI + MOVQ in+8(FP), SI + + MOVQ 0(SI),AX + MULQ 0(SI) + MOVQ AX,CX + MOVQ DX,R8 + MOVQ 0(SI),AX + SHLQ $1,AX + MULQ 8(SI) + MOVQ AX,R9 + MOVQ DX,R10 + MOVQ 0(SI),AX + SHLQ $1,AX + MULQ 16(SI) + MOVQ AX,R11 + MOVQ DX,R12 + MOVQ 0(SI),AX + SHLQ $1,AX + MULQ 24(SI) + MOVQ AX,R13 + MOVQ DX,R14 + MOVQ 0(SI),AX + SHLQ $1,AX + MULQ 32(SI) + MOVQ AX,R15 + MOVQ DX,BX + MOVQ 8(SI),AX + MULQ 8(SI) + ADDQ AX,R11 + ADCQ DX,R12 + MOVQ 8(SI),AX + SHLQ $1,AX + MULQ 16(SI) + ADDQ AX,R13 + ADCQ DX,R14 + MOVQ 8(SI),AX + SHLQ $1,AX + MULQ 24(SI) + ADDQ AX,R15 + ADCQ DX,BX + MOVQ 8(SI),DX + IMUL3Q $38,DX,AX + MULQ 32(SI) + ADDQ AX,CX + ADCQ DX,R8 + MOVQ 16(SI),AX + MULQ 16(SI) + ADDQ AX,R15 + ADCQ DX,BX + MOVQ 16(SI),DX + IMUL3Q $38,DX,AX + MULQ 24(SI) + ADDQ AX,CX + ADCQ DX,R8 + MOVQ 16(SI),DX + IMUL3Q $38,DX,AX + MULQ 32(SI) + ADDQ AX,R9 + ADCQ DX,R10 + MOVQ 24(SI),DX + IMUL3Q $19,DX,AX + MULQ 24(SI) + ADDQ AX,R9 + ADCQ DX,R10 + MOVQ 24(SI),DX + IMUL3Q $38,DX,AX + MULQ 32(SI) + ADDQ AX,R11 + ADCQ DX,R12 + MOVQ 32(SI),DX + IMUL3Q $19,DX,AX + MULQ 32(SI) + ADDQ AX,R13 + ADCQ DX,R14 + MOVQ ·REDMASK51(SB),SI + SHLQ $13,R8:CX + ANDQ SI,CX + SHLQ $13,R10:R9 + ANDQ SI,R9 + ADDQ R8,R9 + SHLQ $13,R12:R11 + ANDQ SI,R11 + ADDQ R10,R11 + SHLQ $13,R14:R13 + ANDQ SI,R13 + ADDQ R12,R13 + SHLQ $13,BX:R15 + ANDQ SI,R15 + ADDQ R14,R15 + IMUL3Q $19,BX,DX + ADDQ DX,CX + MOVQ CX,DX + SHRQ $51,DX + ADDQ R9,DX + ANDQ SI,CX + MOVQ DX,R8 + SHRQ $51,DX + ADDQ R11,DX + ANDQ SI,R8 + MOVQ DX,R9 + SHRQ $51,DX + ADDQ R13,DX + ANDQ SI,R9 + MOVQ DX,AX + SHRQ $51,DX + ADDQ R15,DX + ANDQ SI,AX + MOVQ DX,R10 + SHRQ $51,DX + IMUL3Q $19,DX,DX + ADDQ DX,CX + ANDQ SI,R10 + MOVQ CX,0(DI) + MOVQ R8,8(DI) + MOVQ R9,16(DI) + MOVQ AX,24(DI) + MOVQ R10,32(DI) + RET diff --git a/vendor/golang.org/x/crypto/hkdf/hkdf.go b/vendor/golang.org/x/crypto/hkdf/hkdf.go new file mode 100644 index 0000000..5c6cf6f --- /dev/null +++ b/vendor/golang.org/x/crypto/hkdf/hkdf.go @@ -0,0 +1,75 @@ +// 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. + +// Package hkdf implements the HMAC-based Extract-and-Expand Key Derivation +// Function (HKDF) as defined in RFC 5869. +// +// HKDF is a cryptographic key derivation function (KDF) with the goal of +// expanding limited input keying material into one or more cryptographically +// strong secret keys. +// +// RFC 5869: https://tools.ietf.org/html/rfc5869 +package hkdf + +import ( + "crypto/hmac" + "errors" + "hash" + "io" +) + +type hkdf struct { + expander hash.Hash + size int + + info []byte + counter byte + + prev []byte + cache []byte +} + +func (f *hkdf) Read(p []byte) (int, error) { + // Check whether enough data can be generated + need := len(p) + remains := len(f.cache) + int(255-f.counter+1)*f.size + if remains < need { + return 0, errors.New("hkdf: entropy limit reached") + } + // Read from the cache, if enough data is present + n := copy(p, f.cache) + p = p[n:] + + // Fill the buffer + for len(p) > 0 { + f.expander.Reset() + f.expander.Write(f.prev) + f.expander.Write(f.info) + f.expander.Write([]byte{f.counter}) + f.prev = f.expander.Sum(f.prev[:0]) + f.counter++ + + // Copy the new batch into p + f.cache = f.prev + n = copy(p, f.cache) + p = p[n:] + } + // Save leftovers for next run + f.cache = f.cache[n:] + + return need, nil +} + +// New returns a new HKDF using the given hash, the secret keying material to expand +// and optional salt and info fields. +func New(hash func() hash.Hash, secret, salt, info []byte) io.Reader { + if salt == nil { + salt = make([]byte, hash().Size()) + } + extractor := hmac.New(hash, salt) + extractor.Write(secret) + prk := extractor.Sum(nil) + + return &hkdf{hmac.New(hash, prk), extractor.Size(), info, 1, nil, nil} +} diff --git a/vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go b/vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go new file mode 100644 index 0000000..c02b4d5 --- /dev/null +++ b/vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go @@ -0,0 +1,77 @@ +// 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 pbkdf2 implements the key derivation function PBKDF2 as defined in RFC +2898 / PKCS #5 v2.0. + +A key derivation function is useful when encrypting data based on a password +or any other not-fully-random data. It uses a pseudorandom function to derive +a secure encryption key based on the password. + +While v2.0 of the standard defines only one pseudorandom function to use, +HMAC-SHA1, the drafted v2.1 specification allows use of all five FIPS Approved +Hash Functions SHA-1, SHA-224, SHA-256, SHA-384 and SHA-512 for HMAC. To +choose, you can pass the `New` functions from the different SHA packages to +pbkdf2.Key. +*/ +package pbkdf2 + +import ( + "crypto/hmac" + "hash" +) + +// Key derives a key from the password, salt and iteration count, returning a +// []byte of length keylen that can be used as cryptographic key. The key is +// derived based on the method described as PBKDF2 with the HMAC variant using +// the supplied hash function. +// +// For example, to use a HMAC-SHA-1 based PBKDF2 key derivation function, you +// can get a derived key for e.g. AES-256 (which needs a 32-byte key) by +// doing: +// +// dk := pbkdf2.Key([]byte("some password"), salt, 4096, 32, sha1.New) +// +// Remember to get a good random salt. At least 8 bytes is recommended by the +// RFC. +// +// Using a higher iteration count will increase the cost of an exhaustive +// search but will also make derivation proportionally slower. +func Key(password, salt []byte, iter, keyLen int, h func() hash.Hash) []byte { + prf := hmac.New(h, password) + hashLen := prf.Size() + numBlocks := (keyLen + hashLen - 1) / hashLen + + var buf [4]byte + dk := make([]byte, 0, numBlocks*hashLen) + U := make([]byte, hashLen) + for block := 1; block <= numBlocks; block++ { + // N.B.: || means concatenation, ^ means XOR + // for each block T_i = U_1 ^ U_2 ^ ... ^ U_iter + // U_1 = PRF(password, salt || uint(i)) + prf.Reset() + prf.Write(salt) + buf[0] = byte(block >> 24) + buf[1] = byte(block >> 16) + buf[2] = byte(block >> 8) + buf[3] = byte(block) + prf.Write(buf[:4]) + dk = prf.Sum(dk) + T := dk[len(dk)-hashLen:] + copy(U, T) + + // U_n = PRF(password, U_(n-1)) + for n := 2; n <= iter; n++ { + prf.Reset() + prf.Write(U) + U = U[:0] + U = prf.Sum(U) + for x := range U { + T[x] ^= U[x] + } + } + } + return dk[:keyLen] +} diff --git a/vendor/golang.org/x/crypto/salsa20/salsa/hsalsa20.go b/vendor/golang.org/x/crypto/salsa20/salsa/hsalsa20.go new file mode 100644 index 0000000..4ba47d5 --- /dev/null +++ b/vendor/golang.org/x/crypto/salsa20/salsa/hsalsa20.go @@ -0,0 +1,144 @@ +// 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 salsa provides low-level access to functions in the Salsa family. +package salsa + +// Sigma is the Salsa20 constant for 256-bit keys. +var Sigma = [16]byte{'e', 'x', 'p', 'a', 'n', 'd', ' ', '3', '2', '-', 'b', 'y', 't', 'e', ' ', 'k'} + +// HSalsa20 applies the HSalsa20 core function to a 16-byte input in, 32-byte +// key k, and 16-byte constant c, and puts the result into the 32-byte array +// out. +func HSalsa20(out *[32]byte, in *[16]byte, k *[32]byte, c *[16]byte) { + x0 := uint32(c[0]) | uint32(c[1])<<8 | uint32(c[2])<<16 | uint32(c[3])<<24 + x1 := uint32(k[0]) | uint32(k[1])<<8 | uint32(k[2])<<16 | uint32(k[3])<<24 + x2 := uint32(k[4]) | uint32(k[5])<<8 | uint32(k[6])<<16 | uint32(k[7])<<24 + x3 := uint32(k[8]) | uint32(k[9])<<8 | uint32(k[10])<<16 | uint32(k[11])<<24 + x4 := uint32(k[12]) | uint32(k[13])<<8 | uint32(k[14])<<16 | uint32(k[15])<<24 + x5 := uint32(c[4]) | uint32(c[5])<<8 | uint32(c[6])<<16 | uint32(c[7])<<24 + x6 := uint32(in[0]) | uint32(in[1])<<8 | uint32(in[2])<<16 | uint32(in[3])<<24 + x7 := uint32(in[4]) | uint32(in[5])<<8 | uint32(in[6])<<16 | uint32(in[7])<<24 + x8 := uint32(in[8]) | uint32(in[9])<<8 | uint32(in[10])<<16 | uint32(in[11])<<24 + x9 := uint32(in[12]) | uint32(in[13])<<8 | uint32(in[14])<<16 | uint32(in[15])<<24 + x10 := uint32(c[8]) | uint32(c[9])<<8 | uint32(c[10])<<16 | uint32(c[11])<<24 + x11 := uint32(k[16]) | uint32(k[17])<<8 | uint32(k[18])<<16 | uint32(k[19])<<24 + x12 := uint32(k[20]) | uint32(k[21])<<8 | uint32(k[22])<<16 | uint32(k[23])<<24 + x13 := uint32(k[24]) | uint32(k[25])<<8 | uint32(k[26])<<16 | uint32(k[27])<<24 + x14 := uint32(k[28]) | uint32(k[29])<<8 | uint32(k[30])<<16 | uint32(k[31])<<24 + x15 := uint32(c[12]) | uint32(c[13])<<8 | uint32(c[14])<<16 | uint32(c[15])<<24 + + for i := 0; i < 20; i += 2 { + u := x0 + x12 + x4 ^= u<<7 | u>>(32-7) + u = x4 + x0 + x8 ^= u<<9 | u>>(32-9) + u = x8 + x4 + x12 ^= u<<13 | u>>(32-13) + u = x12 + x8 + x0 ^= u<<18 | u>>(32-18) + + u = x5 + x1 + x9 ^= u<<7 | u>>(32-7) + u = x9 + x5 + x13 ^= u<<9 | u>>(32-9) + u = x13 + x9 + x1 ^= u<<13 | u>>(32-13) + u = x1 + x13 + x5 ^= u<<18 | u>>(32-18) + + u = x10 + x6 + x14 ^= u<<7 | u>>(32-7) + u = x14 + x10 + x2 ^= u<<9 | u>>(32-9) + u = x2 + x14 + x6 ^= u<<13 | u>>(32-13) + u = x6 + x2 + x10 ^= u<<18 | u>>(32-18) + + u = x15 + x11 + x3 ^= u<<7 | u>>(32-7) + u = x3 + x15 + x7 ^= u<<9 | u>>(32-9) + u = x7 + x3 + x11 ^= u<<13 | u>>(32-13) + u = x11 + x7 + x15 ^= u<<18 | u>>(32-18) + + u = x0 + x3 + x1 ^= u<<7 | u>>(32-7) + u = x1 + x0 + x2 ^= u<<9 | u>>(32-9) + u = x2 + x1 + x3 ^= u<<13 | u>>(32-13) + u = x3 + x2 + x0 ^= u<<18 | u>>(32-18) + + u = x5 + x4 + x6 ^= u<<7 | u>>(32-7) + u = x6 + x5 + x7 ^= u<<9 | u>>(32-9) + u = x7 + x6 + x4 ^= u<<13 | u>>(32-13) + u = x4 + x7 + x5 ^= u<<18 | u>>(32-18) + + u = x10 + x9 + x11 ^= u<<7 | u>>(32-7) + u = x11 + x10 + x8 ^= u<<9 | u>>(32-9) + u = x8 + x11 + x9 ^= u<<13 | u>>(32-13) + u = x9 + x8 + x10 ^= u<<18 | u>>(32-18) + + u = x15 + x14 + x12 ^= u<<7 | u>>(32-7) + u = x12 + x15 + x13 ^= u<<9 | u>>(32-9) + u = x13 + x12 + x14 ^= u<<13 | u>>(32-13) + u = x14 + x13 + x15 ^= u<<18 | u>>(32-18) + } + out[0] = byte(x0) + out[1] = byte(x0 >> 8) + out[2] = byte(x0 >> 16) + out[3] = byte(x0 >> 24) + + out[4] = byte(x5) + out[5] = byte(x5 >> 8) + out[6] = byte(x5 >> 16) + out[7] = byte(x5 >> 24) + + out[8] = byte(x10) + out[9] = byte(x10 >> 8) + out[10] = byte(x10 >> 16) + out[11] = byte(x10 >> 24) + + out[12] = byte(x15) + out[13] = byte(x15 >> 8) + out[14] = byte(x15 >> 16) + out[15] = byte(x15 >> 24) + + out[16] = byte(x6) + out[17] = byte(x6 >> 8) + out[18] = byte(x6 >> 16) + out[19] = byte(x6 >> 24) + + out[20] = byte(x7) + out[21] = byte(x7 >> 8) + out[22] = byte(x7 >> 16) + out[23] = byte(x7 >> 24) + + out[24] = byte(x8) + out[25] = byte(x8 >> 8) + out[26] = byte(x8 >> 16) + out[27] = byte(x8 >> 24) + + out[28] = byte(x9) + out[29] = byte(x9 >> 8) + out[30] = byte(x9 >> 16) + out[31] = byte(x9 >> 24) +} diff --git a/vendor/golang.org/x/crypto/salsa20/salsa/salsa2020_amd64.s b/vendor/golang.org/x/crypto/salsa20/salsa/salsa2020_amd64.s new file mode 100644 index 0000000..083fe38 --- /dev/null +++ b/vendor/golang.org/x/crypto/salsa20/salsa/salsa2020_amd64.s @@ -0,0 +1,889 @@ +// 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 amd64,!appengine,!gccgo + +// This code was translated into a form compatible with 6a from the public +// domain sources in SUPERCOP: http://bench.cr.yp.to/supercop.html + +// func salsa2020XORKeyStream(out, in *byte, n uint64, nonce, key *byte) +// This needs up to 64 bytes at 360(SP); hence the non-obvious frame size. +TEXT ·salsa2020XORKeyStream(SB),0,$456-40 // frame = 424 + 32 byte alignment + MOVQ out+0(FP),DI + MOVQ in+8(FP),SI + MOVQ n+16(FP),DX + MOVQ nonce+24(FP),CX + MOVQ key+32(FP),R8 + + MOVQ SP,R12 + MOVQ SP,R9 + ADDQ $31, R9 + ANDQ $~31, R9 + MOVQ R9, SP + + MOVQ DX,R9 + MOVQ CX,DX + MOVQ R8,R10 + CMPQ R9,$0 + JBE DONE + START: + MOVL 20(R10),CX + MOVL 0(R10),R8 + MOVL 0(DX),AX + MOVL 16(R10),R11 + MOVL CX,0(SP) + MOVL R8, 4 (SP) + MOVL AX, 8 (SP) + MOVL R11, 12 (SP) + MOVL 8(DX),CX + MOVL 24(R10),R8 + MOVL 4(R10),AX + MOVL 4(DX),R11 + MOVL CX,16(SP) + MOVL R8, 20 (SP) + MOVL AX, 24 (SP) + MOVL R11, 28 (SP) + MOVL 12(DX),CX + MOVL 12(R10),DX + MOVL 28(R10),R8 + MOVL 8(R10),AX + MOVL DX,32(SP) + MOVL CX, 36 (SP) + MOVL R8, 40 (SP) + MOVL AX, 44 (SP) + MOVQ $1634760805,DX + MOVQ $857760878,CX + MOVQ $2036477234,R8 + MOVQ $1797285236,AX + MOVL DX,48(SP) + MOVL CX, 52 (SP) + MOVL R8, 56 (SP) + MOVL AX, 60 (SP) + CMPQ R9,$256 + JB BYTESBETWEEN1AND255 + MOVOA 48(SP),X0 + PSHUFL $0X55,X0,X1 + PSHUFL $0XAA,X0,X2 + PSHUFL $0XFF,X0,X3 + PSHUFL $0X00,X0,X0 + MOVOA X1,64(SP) + MOVOA X2,80(SP) + MOVOA X3,96(SP) + MOVOA X0,112(SP) + MOVOA 0(SP),X0 + PSHUFL $0XAA,X0,X1 + PSHUFL $0XFF,X0,X2 + PSHUFL $0X00,X0,X3 + PSHUFL $0X55,X0,X0 + MOVOA X1,128(SP) + MOVOA X2,144(SP) + MOVOA X3,160(SP) + MOVOA X0,176(SP) + MOVOA 16(SP),X0 + PSHUFL $0XFF,X0,X1 + PSHUFL $0X55,X0,X2 + PSHUFL $0XAA,X0,X0 + MOVOA X1,192(SP) + MOVOA X2,208(SP) + MOVOA X0,224(SP) + MOVOA 32(SP),X0 + PSHUFL $0X00,X0,X1 + PSHUFL $0XAA,X0,X2 + PSHUFL $0XFF,X0,X0 + MOVOA X1,240(SP) + MOVOA X2,256(SP) + MOVOA X0,272(SP) + BYTESATLEAST256: + MOVL 16(SP),DX + MOVL 36 (SP),CX + MOVL DX,288(SP) + MOVL CX,304(SP) + ADDQ $1,DX + SHLQ $32,CX + ADDQ CX,DX + MOVQ DX,CX + SHRQ $32,CX + MOVL DX, 292 (SP) + MOVL CX, 308 (SP) + ADDQ $1,DX + SHLQ $32,CX + ADDQ CX,DX + MOVQ DX,CX + SHRQ $32,CX + MOVL DX, 296 (SP) + MOVL CX, 312 (SP) + ADDQ $1,DX + SHLQ $32,CX + ADDQ CX,DX + MOVQ DX,CX + SHRQ $32,CX + MOVL DX, 300 (SP) + MOVL CX, 316 (SP) + ADDQ $1,DX + SHLQ $32,CX + ADDQ CX,DX + MOVQ DX,CX + SHRQ $32,CX + MOVL DX,16(SP) + MOVL CX, 36 (SP) + MOVQ R9,352(SP) + MOVQ $20,DX + MOVOA 64(SP),X0 + MOVOA 80(SP),X1 + MOVOA 96(SP),X2 + MOVOA 256(SP),X3 + MOVOA 272(SP),X4 + MOVOA 128(SP),X5 + MOVOA 144(SP),X6 + MOVOA 176(SP),X7 + MOVOA 192(SP),X8 + MOVOA 208(SP),X9 + MOVOA 224(SP),X10 + MOVOA 304(SP),X11 + MOVOA 112(SP),X12 + MOVOA 160(SP),X13 + MOVOA 240(SP),X14 + MOVOA 288(SP),X15 + MAINLOOP1: + MOVOA X1,320(SP) + MOVOA X2,336(SP) + MOVOA X13,X1 + PADDL X12,X1 + MOVOA X1,X2 + PSLLL $7,X1 + PXOR X1,X14 + PSRLL $25,X2 + PXOR X2,X14 + MOVOA X7,X1 + PADDL X0,X1 + MOVOA X1,X2 + PSLLL $7,X1 + PXOR X1,X11 + PSRLL $25,X2 + PXOR X2,X11 + MOVOA X12,X1 + PADDL X14,X1 + MOVOA X1,X2 + PSLLL $9,X1 + PXOR X1,X15 + PSRLL $23,X2 + PXOR X2,X15 + MOVOA X0,X1 + PADDL X11,X1 + MOVOA X1,X2 + PSLLL $9,X1 + PXOR X1,X9 + PSRLL $23,X2 + PXOR X2,X9 + MOVOA X14,X1 + PADDL X15,X1 + MOVOA X1,X2 + PSLLL $13,X1 + PXOR X1,X13 + PSRLL $19,X2 + PXOR X2,X13 + MOVOA X11,X1 + PADDL X9,X1 + MOVOA X1,X2 + PSLLL $13,X1 + PXOR X1,X7 + PSRLL $19,X2 + PXOR X2,X7 + MOVOA X15,X1 + PADDL X13,X1 + MOVOA X1,X2 + PSLLL $18,X1 + PXOR X1,X12 + PSRLL $14,X2 + PXOR X2,X12 + MOVOA 320(SP),X1 + MOVOA X12,320(SP) + MOVOA X9,X2 + PADDL X7,X2 + MOVOA X2,X12 + PSLLL $18,X2 + PXOR X2,X0 + PSRLL $14,X12 + PXOR X12,X0 + MOVOA X5,X2 + PADDL X1,X2 + MOVOA X2,X12 + PSLLL $7,X2 + PXOR X2,X3 + PSRLL $25,X12 + PXOR X12,X3 + MOVOA 336(SP),X2 + MOVOA X0,336(SP) + MOVOA X6,X0 + PADDL X2,X0 + MOVOA X0,X12 + PSLLL $7,X0 + PXOR X0,X4 + PSRLL $25,X12 + PXOR X12,X4 + MOVOA X1,X0 + PADDL X3,X0 + MOVOA X0,X12 + PSLLL $9,X0 + PXOR X0,X10 + PSRLL $23,X12 + PXOR X12,X10 + MOVOA X2,X0 + PADDL X4,X0 + MOVOA X0,X12 + PSLLL $9,X0 + PXOR X0,X8 + PSRLL $23,X12 + PXOR X12,X8 + MOVOA X3,X0 + PADDL X10,X0 + MOVOA X0,X12 + PSLLL $13,X0 + PXOR X0,X5 + PSRLL $19,X12 + PXOR X12,X5 + MOVOA X4,X0 + PADDL X8,X0 + MOVOA X0,X12 + PSLLL $13,X0 + PXOR X0,X6 + PSRLL $19,X12 + PXOR X12,X6 + MOVOA X10,X0 + PADDL X5,X0 + MOVOA X0,X12 + PSLLL $18,X0 + PXOR X0,X1 + PSRLL $14,X12 + PXOR X12,X1 + MOVOA 320(SP),X0 + MOVOA X1,320(SP) + MOVOA X4,X1 + PADDL X0,X1 + MOVOA X1,X12 + PSLLL $7,X1 + PXOR X1,X7 + PSRLL $25,X12 + PXOR X12,X7 + MOVOA X8,X1 + PADDL X6,X1 + MOVOA X1,X12 + PSLLL $18,X1 + PXOR X1,X2 + PSRLL $14,X12 + PXOR X12,X2 + MOVOA 336(SP),X12 + MOVOA X2,336(SP) + MOVOA X14,X1 + PADDL X12,X1 + MOVOA X1,X2 + PSLLL $7,X1 + PXOR X1,X5 + PSRLL $25,X2 + PXOR X2,X5 + MOVOA X0,X1 + PADDL X7,X1 + MOVOA X1,X2 + PSLLL $9,X1 + PXOR X1,X10 + PSRLL $23,X2 + PXOR X2,X10 + MOVOA X12,X1 + PADDL X5,X1 + MOVOA X1,X2 + PSLLL $9,X1 + PXOR X1,X8 + PSRLL $23,X2 + PXOR X2,X8 + MOVOA X7,X1 + PADDL X10,X1 + MOVOA X1,X2 + PSLLL $13,X1 + PXOR X1,X4 + PSRLL $19,X2 + PXOR X2,X4 + MOVOA X5,X1 + PADDL X8,X1 + MOVOA X1,X2 + PSLLL $13,X1 + PXOR X1,X14 + PSRLL $19,X2 + PXOR X2,X14 + MOVOA X10,X1 + PADDL X4,X1 + MOVOA X1,X2 + PSLLL $18,X1 + PXOR X1,X0 + PSRLL $14,X2 + PXOR X2,X0 + MOVOA 320(SP),X1 + MOVOA X0,320(SP) + MOVOA X8,X0 + PADDL X14,X0 + MOVOA X0,X2 + PSLLL $18,X0 + PXOR X0,X12 + PSRLL $14,X2 + PXOR X2,X12 + MOVOA X11,X0 + PADDL X1,X0 + MOVOA X0,X2 + PSLLL $7,X0 + PXOR X0,X6 + PSRLL $25,X2 + PXOR X2,X6 + MOVOA 336(SP),X2 + MOVOA X12,336(SP) + MOVOA X3,X0 + PADDL X2,X0 + MOVOA X0,X12 + PSLLL $7,X0 + PXOR X0,X13 + PSRLL $25,X12 + PXOR X12,X13 + MOVOA X1,X0 + PADDL X6,X0 + MOVOA X0,X12 + PSLLL $9,X0 + PXOR X0,X15 + PSRLL $23,X12 + PXOR X12,X15 + MOVOA X2,X0 + PADDL X13,X0 + MOVOA X0,X12 + PSLLL $9,X0 + PXOR X0,X9 + PSRLL $23,X12 + PXOR X12,X9 + MOVOA X6,X0 + PADDL X15,X0 + MOVOA X0,X12 + PSLLL $13,X0 + PXOR X0,X11 + PSRLL $19,X12 + PXOR X12,X11 + MOVOA X13,X0 + PADDL X9,X0 + MOVOA X0,X12 + PSLLL $13,X0 + PXOR X0,X3 + PSRLL $19,X12 + PXOR X12,X3 + MOVOA X15,X0 + PADDL X11,X0 + MOVOA X0,X12 + PSLLL $18,X0 + PXOR X0,X1 + PSRLL $14,X12 + PXOR X12,X1 + MOVOA X9,X0 + PADDL X3,X0 + MOVOA X0,X12 + PSLLL $18,X0 + PXOR X0,X2 + PSRLL $14,X12 + PXOR X12,X2 + MOVOA 320(SP),X12 + MOVOA 336(SP),X0 + SUBQ $2,DX + JA MAINLOOP1 + PADDL 112(SP),X12 + PADDL 176(SP),X7 + PADDL 224(SP),X10 + PADDL 272(SP),X4 + MOVD X12,DX + MOVD X7,CX + MOVD X10,R8 + MOVD X4,R9 + PSHUFL $0X39,X12,X12 + PSHUFL $0X39,X7,X7 + PSHUFL $0X39,X10,X10 + PSHUFL $0X39,X4,X4 + XORL 0(SI),DX + XORL 4(SI),CX + XORL 8(SI),R8 + XORL 12(SI),R9 + MOVL DX,0(DI) + MOVL CX,4(DI) + MOVL R8,8(DI) + MOVL R9,12(DI) + MOVD X12,DX + MOVD X7,CX + MOVD X10,R8 + MOVD X4,R9 + PSHUFL $0X39,X12,X12 + PSHUFL $0X39,X7,X7 + PSHUFL $0X39,X10,X10 + PSHUFL $0X39,X4,X4 + XORL 64(SI),DX + XORL 68(SI),CX + XORL 72(SI),R8 + XORL 76(SI),R9 + MOVL DX,64(DI) + MOVL CX,68(DI) + MOVL R8,72(DI) + MOVL R9,76(DI) + MOVD X12,DX + MOVD X7,CX + MOVD X10,R8 + MOVD X4,R9 + PSHUFL $0X39,X12,X12 + PSHUFL $0X39,X7,X7 + PSHUFL $0X39,X10,X10 + PSHUFL $0X39,X4,X4 + XORL 128(SI),DX + XORL 132(SI),CX + XORL 136(SI),R8 + XORL 140(SI),R9 + MOVL DX,128(DI) + MOVL CX,132(DI) + MOVL R8,136(DI) + MOVL R9,140(DI) + MOVD X12,DX + MOVD X7,CX + MOVD X10,R8 + MOVD X4,R9 + XORL 192(SI),DX + XORL 196(SI),CX + XORL 200(SI),R8 + XORL 204(SI),R9 + MOVL DX,192(DI) + MOVL CX,196(DI) + MOVL R8,200(DI) + MOVL R9,204(DI) + PADDL 240(SP),X14 + PADDL 64(SP),X0 + PADDL 128(SP),X5 + PADDL 192(SP),X8 + MOVD X14,DX + MOVD X0,CX + MOVD X5,R8 + MOVD X8,R9 + PSHUFL $0X39,X14,X14 + PSHUFL $0X39,X0,X0 + PSHUFL $0X39,X5,X5 + PSHUFL $0X39,X8,X8 + XORL 16(SI),DX + XORL 20(SI),CX + XORL 24(SI),R8 + XORL 28(SI),R9 + MOVL DX,16(DI) + MOVL CX,20(DI) + MOVL R8,24(DI) + MOVL R9,28(DI) + MOVD X14,DX + MOVD X0,CX + MOVD X5,R8 + MOVD X8,R9 + PSHUFL $0X39,X14,X14 + PSHUFL $0X39,X0,X0 + PSHUFL $0X39,X5,X5 + PSHUFL $0X39,X8,X8 + XORL 80(SI),DX + XORL 84(SI),CX + XORL 88(SI),R8 + XORL 92(SI),R9 + MOVL DX,80(DI) + MOVL CX,84(DI) + MOVL R8,88(DI) + MOVL R9,92(DI) + MOVD X14,DX + MOVD X0,CX + MOVD X5,R8 + MOVD X8,R9 + PSHUFL $0X39,X14,X14 + PSHUFL $0X39,X0,X0 + PSHUFL $0X39,X5,X5 + PSHUFL $0X39,X8,X8 + XORL 144(SI),DX + XORL 148(SI),CX + XORL 152(SI),R8 + XORL 156(SI),R9 + MOVL DX,144(DI) + MOVL CX,148(DI) + MOVL R8,152(DI) + MOVL R9,156(DI) + MOVD X14,DX + MOVD X0,CX + MOVD X5,R8 + MOVD X8,R9 + XORL 208(SI),DX + XORL 212(SI),CX + XORL 216(SI),R8 + XORL 220(SI),R9 + MOVL DX,208(DI) + MOVL CX,212(DI) + MOVL R8,216(DI) + MOVL R9,220(DI) + PADDL 288(SP),X15 + PADDL 304(SP),X11 + PADDL 80(SP),X1 + PADDL 144(SP),X6 + MOVD X15,DX + MOVD X11,CX + MOVD X1,R8 + MOVD X6,R9 + PSHUFL $0X39,X15,X15 + PSHUFL $0X39,X11,X11 + PSHUFL $0X39,X1,X1 + PSHUFL $0X39,X6,X6 + XORL 32(SI),DX + XORL 36(SI),CX + XORL 40(SI),R8 + XORL 44(SI),R9 + MOVL DX,32(DI) + MOVL CX,36(DI) + MOVL R8,40(DI) + MOVL R9,44(DI) + MOVD X15,DX + MOVD X11,CX + MOVD X1,R8 + MOVD X6,R9 + PSHUFL $0X39,X15,X15 + PSHUFL $0X39,X11,X11 + PSHUFL $0X39,X1,X1 + PSHUFL $0X39,X6,X6 + XORL 96(SI),DX + XORL 100(SI),CX + XORL 104(SI),R8 + XORL 108(SI),R9 + MOVL DX,96(DI) + MOVL CX,100(DI) + MOVL R8,104(DI) + MOVL R9,108(DI) + MOVD X15,DX + MOVD X11,CX + MOVD X1,R8 + MOVD X6,R9 + PSHUFL $0X39,X15,X15 + PSHUFL $0X39,X11,X11 + PSHUFL $0X39,X1,X1 + PSHUFL $0X39,X6,X6 + XORL 160(SI),DX + XORL 164(SI),CX + XORL 168(SI),R8 + XORL 172(SI),R9 + MOVL DX,160(DI) + MOVL CX,164(DI) + MOVL R8,168(DI) + MOVL R9,172(DI) + MOVD X15,DX + MOVD X11,CX + MOVD X1,R8 + MOVD X6,R9 + XORL 224(SI),DX + XORL 228(SI),CX + XORL 232(SI),R8 + XORL 236(SI),R9 + MOVL DX,224(DI) + MOVL CX,228(DI) + MOVL R8,232(DI) + MOVL R9,236(DI) + PADDL 160(SP),X13 + PADDL 208(SP),X9 + PADDL 256(SP),X3 + PADDL 96(SP),X2 + MOVD X13,DX + MOVD X9,CX + MOVD X3,R8 + MOVD X2,R9 + PSHUFL $0X39,X13,X13 + PSHUFL $0X39,X9,X9 + PSHUFL $0X39,X3,X3 + PSHUFL $0X39,X2,X2 + XORL 48(SI),DX + XORL 52(SI),CX + XORL 56(SI),R8 + XORL 60(SI),R9 + MOVL DX,48(DI) + MOVL CX,52(DI) + MOVL R8,56(DI) + MOVL R9,60(DI) + MOVD X13,DX + MOVD X9,CX + MOVD X3,R8 + MOVD X2,R9 + PSHUFL $0X39,X13,X13 + PSHUFL $0X39,X9,X9 + PSHUFL $0X39,X3,X3 + PSHUFL $0X39,X2,X2 + XORL 112(SI),DX + XORL 116(SI),CX + XORL 120(SI),R8 + XORL 124(SI),R9 + MOVL DX,112(DI) + MOVL CX,116(DI) + MOVL R8,120(DI) + MOVL R9,124(DI) + MOVD X13,DX + MOVD X9,CX + MOVD X3,R8 + MOVD X2,R9 + PSHUFL $0X39,X13,X13 + PSHUFL $0X39,X9,X9 + PSHUFL $0X39,X3,X3 + PSHUFL $0X39,X2,X2 + XORL 176(SI),DX + XORL 180(SI),CX + XORL 184(SI),R8 + XORL 188(SI),R9 + MOVL DX,176(DI) + MOVL CX,180(DI) + MOVL R8,184(DI) + MOVL R9,188(DI) + MOVD X13,DX + MOVD X9,CX + MOVD X3,R8 + MOVD X2,R9 + XORL 240(SI),DX + XORL 244(SI),CX + XORL 248(SI),R8 + XORL 252(SI),R9 + MOVL DX,240(DI) + MOVL CX,244(DI) + MOVL R8,248(DI) + MOVL R9,252(DI) + MOVQ 352(SP),R9 + SUBQ $256,R9 + ADDQ $256,SI + ADDQ $256,DI + CMPQ R9,$256 + JAE BYTESATLEAST256 + CMPQ R9,$0 + JBE DONE + BYTESBETWEEN1AND255: + CMPQ R9,$64 + JAE NOCOPY + MOVQ DI,DX + LEAQ 360(SP),DI + MOVQ R9,CX + REP; MOVSB + LEAQ 360(SP),DI + LEAQ 360(SP),SI + NOCOPY: + MOVQ R9,352(SP) + MOVOA 48(SP),X0 + MOVOA 0(SP),X1 + MOVOA 16(SP),X2 + MOVOA 32(SP),X3 + MOVOA X1,X4 + MOVQ $20,CX + MAINLOOP2: + PADDL X0,X4 + MOVOA X0,X5 + MOVOA X4,X6 + PSLLL $7,X4 + PSRLL $25,X6 + PXOR X4,X3 + PXOR X6,X3 + PADDL X3,X5 + MOVOA X3,X4 + MOVOA X5,X6 + PSLLL $9,X5 + PSRLL $23,X6 + PXOR X5,X2 + PSHUFL $0X93,X3,X3 + PXOR X6,X2 + PADDL X2,X4 + MOVOA X2,X5 + MOVOA X4,X6 + PSLLL $13,X4 + PSRLL $19,X6 + PXOR X4,X1 + PSHUFL $0X4E,X2,X2 + PXOR X6,X1 + PADDL X1,X5 + MOVOA X3,X4 + MOVOA X5,X6 + PSLLL $18,X5 + PSRLL $14,X6 + PXOR X5,X0 + PSHUFL $0X39,X1,X1 + PXOR X6,X0 + PADDL X0,X4 + MOVOA X0,X5 + MOVOA X4,X6 + PSLLL $7,X4 + PSRLL $25,X6 + PXOR X4,X1 + PXOR X6,X1 + PADDL X1,X5 + MOVOA X1,X4 + MOVOA X5,X6 + PSLLL $9,X5 + PSRLL $23,X6 + PXOR X5,X2 + PSHUFL $0X93,X1,X1 + PXOR X6,X2 + PADDL X2,X4 + MOVOA X2,X5 + MOVOA X4,X6 + PSLLL $13,X4 + PSRLL $19,X6 + PXOR X4,X3 + PSHUFL $0X4E,X2,X2 + PXOR X6,X3 + PADDL X3,X5 + MOVOA X1,X4 + MOVOA X5,X6 + PSLLL $18,X5 + PSRLL $14,X6 + PXOR X5,X0 + PSHUFL $0X39,X3,X3 + PXOR X6,X0 + PADDL X0,X4 + MOVOA X0,X5 + MOVOA X4,X6 + PSLLL $7,X4 + PSRLL $25,X6 + PXOR X4,X3 + PXOR X6,X3 + PADDL X3,X5 + MOVOA X3,X4 + MOVOA X5,X6 + PSLLL $9,X5 + PSRLL $23,X6 + PXOR X5,X2 + PSHUFL $0X93,X3,X3 + PXOR X6,X2 + PADDL X2,X4 + MOVOA X2,X5 + MOVOA X4,X6 + PSLLL $13,X4 + PSRLL $19,X6 + PXOR X4,X1 + PSHUFL $0X4E,X2,X2 + PXOR X6,X1 + PADDL X1,X5 + MOVOA X3,X4 + MOVOA X5,X6 + PSLLL $18,X5 + PSRLL $14,X6 + PXOR X5,X0 + PSHUFL $0X39,X1,X1 + PXOR X6,X0 + PADDL X0,X4 + MOVOA X0,X5 + MOVOA X4,X6 + PSLLL $7,X4 + PSRLL $25,X6 + PXOR X4,X1 + PXOR X6,X1 + PADDL X1,X5 + MOVOA X1,X4 + MOVOA X5,X6 + PSLLL $9,X5 + PSRLL $23,X6 + PXOR X5,X2 + PSHUFL $0X93,X1,X1 + PXOR X6,X2 + PADDL X2,X4 + MOVOA X2,X5 + MOVOA X4,X6 + PSLLL $13,X4 + PSRLL $19,X6 + PXOR X4,X3 + PSHUFL $0X4E,X2,X2 + PXOR X6,X3 + SUBQ $4,CX + PADDL X3,X5 + MOVOA X1,X4 + MOVOA X5,X6 + PSLLL $18,X5 + PXOR X7,X7 + PSRLL $14,X6 + PXOR X5,X0 + PSHUFL $0X39,X3,X3 + PXOR X6,X0 + JA MAINLOOP2 + PADDL 48(SP),X0 + PADDL 0(SP),X1 + PADDL 16(SP),X2 + PADDL 32(SP),X3 + MOVD X0,CX + MOVD X1,R8 + MOVD X2,R9 + MOVD X3,AX + PSHUFL $0X39,X0,X0 + PSHUFL $0X39,X1,X1 + PSHUFL $0X39,X2,X2 + PSHUFL $0X39,X3,X3 + XORL 0(SI),CX + XORL 48(SI),R8 + XORL 32(SI),R9 + XORL 16(SI),AX + MOVL CX,0(DI) + MOVL R8,48(DI) + MOVL R9,32(DI) + MOVL AX,16(DI) + MOVD X0,CX + MOVD X1,R8 + MOVD X2,R9 + MOVD X3,AX + PSHUFL $0X39,X0,X0 + PSHUFL $0X39,X1,X1 + PSHUFL $0X39,X2,X2 + PSHUFL $0X39,X3,X3 + XORL 20(SI),CX + XORL 4(SI),R8 + XORL 52(SI),R9 + XORL 36(SI),AX + MOVL CX,20(DI) + MOVL R8,4(DI) + MOVL R9,52(DI) + MOVL AX,36(DI) + MOVD X0,CX + MOVD X1,R8 + MOVD X2,R9 + MOVD X3,AX + PSHUFL $0X39,X0,X0 + PSHUFL $0X39,X1,X1 + PSHUFL $0X39,X2,X2 + PSHUFL $0X39,X3,X3 + XORL 40(SI),CX + XORL 24(SI),R8 + XORL 8(SI),R9 + XORL 56(SI),AX + MOVL CX,40(DI) + MOVL R8,24(DI) + MOVL R9,8(DI) + MOVL AX,56(DI) + MOVD X0,CX + MOVD X1,R8 + MOVD X2,R9 + MOVD X3,AX + XORL 60(SI),CX + XORL 44(SI),R8 + XORL 28(SI),R9 + XORL 12(SI),AX + MOVL CX,60(DI) + MOVL R8,44(DI) + MOVL R9,28(DI) + MOVL AX,12(DI) + MOVQ 352(SP),R9 + MOVL 16(SP),CX + MOVL 36 (SP),R8 + ADDQ $1,CX + SHLQ $32,R8 + ADDQ R8,CX + MOVQ CX,R8 + SHRQ $32,R8 + MOVL CX,16(SP) + MOVL R8, 36 (SP) + CMPQ R9,$64 + JA BYTESATLEAST65 + JAE BYTESATLEAST64 + MOVQ DI,SI + MOVQ DX,DI + MOVQ R9,CX + REP; MOVSB + BYTESATLEAST64: + DONE: + MOVQ R12,SP + RET + BYTESATLEAST65: + SUBQ $64,R9 + ADDQ $64,DI + ADDQ $64,SI + JMP BYTESBETWEEN1AND255 diff --git a/vendor/golang.org/x/crypto/salsa20/salsa/salsa208.go b/vendor/golang.org/x/crypto/salsa20/salsa/salsa208.go new file mode 100644 index 0000000..9bfc092 --- /dev/null +++ b/vendor/golang.org/x/crypto/salsa20/salsa/salsa208.go @@ -0,0 +1,199 @@ +// 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 salsa + +// Core208 applies the Salsa20/8 core function to the 64-byte array in and puts +// the result into the 64-byte array out. The input and output may be the same array. +func Core208(out *[64]byte, in *[64]byte) { + j0 := uint32(in[0]) | uint32(in[1])<<8 | uint32(in[2])<<16 | uint32(in[3])<<24 + j1 := uint32(in[4]) | uint32(in[5])<<8 | uint32(in[6])<<16 | uint32(in[7])<<24 + j2 := uint32(in[8]) | uint32(in[9])<<8 | uint32(in[10])<<16 | uint32(in[11])<<24 + j3 := uint32(in[12]) | uint32(in[13])<<8 | uint32(in[14])<<16 | uint32(in[15])<<24 + j4 := uint32(in[16]) | uint32(in[17])<<8 | uint32(in[18])<<16 | uint32(in[19])<<24 + j5 := uint32(in[20]) | uint32(in[21])<<8 | uint32(in[22])<<16 | uint32(in[23])<<24 + j6 := uint32(in[24]) | uint32(in[25])<<8 | uint32(in[26])<<16 | uint32(in[27])<<24 + j7 := uint32(in[28]) | uint32(in[29])<<8 | uint32(in[30])<<16 | uint32(in[31])<<24 + j8 := uint32(in[32]) | uint32(in[33])<<8 | uint32(in[34])<<16 | uint32(in[35])<<24 + j9 := uint32(in[36]) | uint32(in[37])<<8 | uint32(in[38])<<16 | uint32(in[39])<<24 + j10 := uint32(in[40]) | uint32(in[41])<<8 | uint32(in[42])<<16 | uint32(in[43])<<24 + j11 := uint32(in[44]) | uint32(in[45])<<8 | uint32(in[46])<<16 | uint32(in[47])<<24 + j12 := uint32(in[48]) | uint32(in[49])<<8 | uint32(in[50])<<16 | uint32(in[51])<<24 + j13 := uint32(in[52]) | uint32(in[53])<<8 | uint32(in[54])<<16 | uint32(in[55])<<24 + j14 := uint32(in[56]) | uint32(in[57])<<8 | uint32(in[58])<<16 | uint32(in[59])<<24 + j15 := uint32(in[60]) | uint32(in[61])<<8 | uint32(in[62])<<16 | uint32(in[63])<<24 + + x0, x1, x2, x3, x4, x5, x6, x7, x8 := j0, j1, j2, j3, j4, j5, j6, j7, j8 + x9, x10, x11, x12, x13, x14, x15 := j9, j10, j11, j12, j13, j14, j15 + + for i := 0; i < 8; i += 2 { + u := x0 + x12 + x4 ^= u<<7 | u>>(32-7) + u = x4 + x0 + x8 ^= u<<9 | u>>(32-9) + u = x8 + x4 + x12 ^= u<<13 | u>>(32-13) + u = x12 + x8 + x0 ^= u<<18 | u>>(32-18) + + u = x5 + x1 + x9 ^= u<<7 | u>>(32-7) + u = x9 + x5 + x13 ^= u<<9 | u>>(32-9) + u = x13 + x9 + x1 ^= u<<13 | u>>(32-13) + u = x1 + x13 + x5 ^= u<<18 | u>>(32-18) + + u = x10 + x6 + x14 ^= u<<7 | u>>(32-7) + u = x14 + x10 + x2 ^= u<<9 | u>>(32-9) + u = x2 + x14 + x6 ^= u<<13 | u>>(32-13) + u = x6 + x2 + x10 ^= u<<18 | u>>(32-18) + + u = x15 + x11 + x3 ^= u<<7 | u>>(32-7) + u = x3 + x15 + x7 ^= u<<9 | u>>(32-9) + u = x7 + x3 + x11 ^= u<<13 | u>>(32-13) + u = x11 + x7 + x15 ^= u<<18 | u>>(32-18) + + u = x0 + x3 + x1 ^= u<<7 | u>>(32-7) + u = x1 + x0 + x2 ^= u<<9 | u>>(32-9) + u = x2 + x1 + x3 ^= u<<13 | u>>(32-13) + u = x3 + x2 + x0 ^= u<<18 | u>>(32-18) + + u = x5 + x4 + x6 ^= u<<7 | u>>(32-7) + u = x6 + x5 + x7 ^= u<<9 | u>>(32-9) + u = x7 + x6 + x4 ^= u<<13 | u>>(32-13) + u = x4 + x7 + x5 ^= u<<18 | u>>(32-18) + + u = x10 + x9 + x11 ^= u<<7 | u>>(32-7) + u = x11 + x10 + x8 ^= u<<9 | u>>(32-9) + u = x8 + x11 + x9 ^= u<<13 | u>>(32-13) + u = x9 + x8 + x10 ^= u<<18 | u>>(32-18) + + u = x15 + x14 + x12 ^= u<<7 | u>>(32-7) + u = x12 + x15 + x13 ^= u<<9 | u>>(32-9) + u = x13 + x12 + x14 ^= u<<13 | u>>(32-13) + u = x14 + x13 + x15 ^= u<<18 | u>>(32-18) + } + x0 += j0 + x1 += j1 + x2 += j2 + x3 += j3 + x4 += j4 + x5 += j5 + x6 += j6 + x7 += j7 + x8 += j8 + x9 += j9 + x10 += j10 + x11 += j11 + x12 += j12 + x13 += j13 + x14 += j14 + x15 += j15 + + out[0] = byte(x0) + out[1] = byte(x0 >> 8) + out[2] = byte(x0 >> 16) + out[3] = byte(x0 >> 24) + + out[4] = byte(x1) + out[5] = byte(x1 >> 8) + out[6] = byte(x1 >> 16) + out[7] = byte(x1 >> 24) + + out[8] = byte(x2) + out[9] = byte(x2 >> 8) + out[10] = byte(x2 >> 16) + out[11] = byte(x2 >> 24) + + out[12] = byte(x3) + out[13] = byte(x3 >> 8) + out[14] = byte(x3 >> 16) + out[15] = byte(x3 >> 24) + + out[16] = byte(x4) + out[17] = byte(x4 >> 8) + out[18] = byte(x4 >> 16) + out[19] = byte(x4 >> 24) + + out[20] = byte(x5) + out[21] = byte(x5 >> 8) + out[22] = byte(x5 >> 16) + out[23] = byte(x5 >> 24) + + out[24] = byte(x6) + out[25] = byte(x6 >> 8) + out[26] = byte(x6 >> 16) + out[27] = byte(x6 >> 24) + + out[28] = byte(x7) + out[29] = byte(x7 >> 8) + out[30] = byte(x7 >> 16) + out[31] = byte(x7 >> 24) + + out[32] = byte(x8) + out[33] = byte(x8 >> 8) + out[34] = byte(x8 >> 16) + out[35] = byte(x8 >> 24) + + out[36] = byte(x9) + out[37] = byte(x9 >> 8) + out[38] = byte(x9 >> 16) + out[39] = byte(x9 >> 24) + + out[40] = byte(x10) + out[41] = byte(x10 >> 8) + out[42] = byte(x10 >> 16) + out[43] = byte(x10 >> 24) + + out[44] = byte(x11) + out[45] = byte(x11 >> 8) + out[46] = byte(x11 >> 16) + out[47] = byte(x11 >> 24) + + out[48] = byte(x12) + out[49] = byte(x12 >> 8) + out[50] = byte(x12 >> 16) + out[51] = byte(x12 >> 24) + + out[52] = byte(x13) + out[53] = byte(x13 >> 8) + out[54] = byte(x13 >> 16) + out[55] = byte(x13 >> 24) + + out[56] = byte(x14) + out[57] = byte(x14 >> 8) + out[58] = byte(x14 >> 16) + out[59] = byte(x14 >> 24) + + out[60] = byte(x15) + out[61] = byte(x15 >> 8) + out[62] = byte(x15 >> 16) + out[63] = byte(x15 >> 24) +} diff --git a/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.go b/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.go new file mode 100644 index 0000000..903c785 --- /dev/null +++ b/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.go @@ -0,0 +1,23 @@ +// 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 amd64,!appengine,!gccgo + +package salsa + +// This function is implemented in salsa2020_amd64.s. + +//go:noescape + +func salsa2020XORKeyStream(out, in *byte, n uint64, nonce, key *byte) + +// XORKeyStream crypts bytes from in to out using the given key and counters. +// In and out may be the same slice but otherwise should not overlap. Counter +// contains the raw salsa20 counter bytes (both nonce and block counter). +func XORKeyStream(out, in []byte, counter *[16]byte, key *[32]byte) { + if len(in) == 0 { + return + } + salsa2020XORKeyStream(&out[0], &in[0], uint64(len(in)), &counter[0], &key[0]) +} diff --git a/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_ref.go b/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_ref.go new file mode 100644 index 0000000..95f8ca5 --- /dev/null +++ b/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_ref.go @@ -0,0 +1,234 @@ +// 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 !amd64 appengine gccgo + +package salsa + +const rounds = 20 + +// core applies the Salsa20 core function to 16-byte input in, 32-byte key k, +// and 16-byte constant c, and puts the result into 64-byte array out. +func core(out *[64]byte, in *[16]byte, k *[32]byte, c *[16]byte) { + j0 := uint32(c[0]) | uint32(c[1])<<8 | uint32(c[2])<<16 | uint32(c[3])<<24 + j1 := uint32(k[0]) | uint32(k[1])<<8 | uint32(k[2])<<16 | uint32(k[3])<<24 + j2 := uint32(k[4]) | uint32(k[5])<<8 | uint32(k[6])<<16 | uint32(k[7])<<24 + j3 := uint32(k[8]) | uint32(k[9])<<8 | uint32(k[10])<<16 | uint32(k[11])<<24 + j4 := uint32(k[12]) | uint32(k[13])<<8 | uint32(k[14])<<16 | uint32(k[15])<<24 + j5 := uint32(c[4]) | uint32(c[5])<<8 | uint32(c[6])<<16 | uint32(c[7])<<24 + j6 := uint32(in[0]) | uint32(in[1])<<8 | uint32(in[2])<<16 | uint32(in[3])<<24 + j7 := uint32(in[4]) | uint32(in[5])<<8 | uint32(in[6])<<16 | uint32(in[7])<<24 + j8 := uint32(in[8]) | uint32(in[9])<<8 | uint32(in[10])<<16 | uint32(in[11])<<24 + j9 := uint32(in[12]) | uint32(in[13])<<8 | uint32(in[14])<<16 | uint32(in[15])<<24 + j10 := uint32(c[8]) | uint32(c[9])<<8 | uint32(c[10])<<16 | uint32(c[11])<<24 + j11 := uint32(k[16]) | uint32(k[17])<<8 | uint32(k[18])<<16 | uint32(k[19])<<24 + j12 := uint32(k[20]) | uint32(k[21])<<8 | uint32(k[22])<<16 | uint32(k[23])<<24 + j13 := uint32(k[24]) | uint32(k[25])<<8 | uint32(k[26])<<16 | uint32(k[27])<<24 + j14 := uint32(k[28]) | uint32(k[29])<<8 | uint32(k[30])<<16 | uint32(k[31])<<24 + j15 := uint32(c[12]) | uint32(c[13])<<8 | uint32(c[14])<<16 | uint32(c[15])<<24 + + x0, x1, x2, x3, x4, x5, x6, x7, x8 := j0, j1, j2, j3, j4, j5, j6, j7, j8 + x9, x10, x11, x12, x13, x14, x15 := j9, j10, j11, j12, j13, j14, j15 + + for i := 0; i < rounds; i += 2 { + u := x0 + x12 + x4 ^= u<<7 | u>>(32-7) + u = x4 + x0 + x8 ^= u<<9 | u>>(32-9) + u = x8 + x4 + x12 ^= u<<13 | u>>(32-13) + u = x12 + x8 + x0 ^= u<<18 | u>>(32-18) + + u = x5 + x1 + x9 ^= u<<7 | u>>(32-7) + u = x9 + x5 + x13 ^= u<<9 | u>>(32-9) + u = x13 + x9 + x1 ^= u<<13 | u>>(32-13) + u = x1 + x13 + x5 ^= u<<18 | u>>(32-18) + + u = x10 + x6 + x14 ^= u<<7 | u>>(32-7) + u = x14 + x10 + x2 ^= u<<9 | u>>(32-9) + u = x2 + x14 + x6 ^= u<<13 | u>>(32-13) + u = x6 + x2 + x10 ^= u<<18 | u>>(32-18) + + u = x15 + x11 + x3 ^= u<<7 | u>>(32-7) + u = x3 + x15 + x7 ^= u<<9 | u>>(32-9) + u = x7 + x3 + x11 ^= u<<13 | u>>(32-13) + u = x11 + x7 + x15 ^= u<<18 | u>>(32-18) + + u = x0 + x3 + x1 ^= u<<7 | u>>(32-7) + u = x1 + x0 + x2 ^= u<<9 | u>>(32-9) + u = x2 + x1 + x3 ^= u<<13 | u>>(32-13) + u = x3 + x2 + x0 ^= u<<18 | u>>(32-18) + + u = x5 + x4 + x6 ^= u<<7 | u>>(32-7) + u = x6 + x5 + x7 ^= u<<9 | u>>(32-9) + u = x7 + x6 + x4 ^= u<<13 | u>>(32-13) + u = x4 + x7 + x5 ^= u<<18 | u>>(32-18) + + u = x10 + x9 + x11 ^= u<<7 | u>>(32-7) + u = x11 + x10 + x8 ^= u<<9 | u>>(32-9) + u = x8 + x11 + x9 ^= u<<13 | u>>(32-13) + u = x9 + x8 + x10 ^= u<<18 | u>>(32-18) + + u = x15 + x14 + x12 ^= u<<7 | u>>(32-7) + u = x12 + x15 + x13 ^= u<<9 | u>>(32-9) + u = x13 + x12 + x14 ^= u<<13 | u>>(32-13) + u = x14 + x13 + x15 ^= u<<18 | u>>(32-18) + } + x0 += j0 + x1 += j1 + x2 += j2 + x3 += j3 + x4 += j4 + x5 += j5 + x6 += j6 + x7 += j7 + x8 += j8 + x9 += j9 + x10 += j10 + x11 += j11 + x12 += j12 + x13 += j13 + x14 += j14 + x15 += j15 + + out[0] = byte(x0) + out[1] = byte(x0 >> 8) + out[2] = byte(x0 >> 16) + out[3] = byte(x0 >> 24) + + out[4] = byte(x1) + out[5] = byte(x1 >> 8) + out[6] = byte(x1 >> 16) + out[7] = byte(x1 >> 24) + + out[8] = byte(x2) + out[9] = byte(x2 >> 8) + out[10] = byte(x2 >> 16) + out[11] = byte(x2 >> 24) + + out[12] = byte(x3) + out[13] = byte(x3 >> 8) + out[14] = byte(x3 >> 16) + out[15] = byte(x3 >> 24) + + out[16] = byte(x4) + out[17] = byte(x4 >> 8) + out[18] = byte(x4 >> 16) + out[19] = byte(x4 >> 24) + + out[20] = byte(x5) + out[21] = byte(x5 >> 8) + out[22] = byte(x5 >> 16) + out[23] = byte(x5 >> 24) + + out[24] = byte(x6) + out[25] = byte(x6 >> 8) + out[26] = byte(x6 >> 16) + out[27] = byte(x6 >> 24) + + out[28] = byte(x7) + out[29] = byte(x7 >> 8) + out[30] = byte(x7 >> 16) + out[31] = byte(x7 >> 24) + + out[32] = byte(x8) + out[33] = byte(x8 >> 8) + out[34] = byte(x8 >> 16) + out[35] = byte(x8 >> 24) + + out[36] = byte(x9) + out[37] = byte(x9 >> 8) + out[38] = byte(x9 >> 16) + out[39] = byte(x9 >> 24) + + out[40] = byte(x10) + out[41] = byte(x10 >> 8) + out[42] = byte(x10 >> 16) + out[43] = byte(x10 >> 24) + + out[44] = byte(x11) + out[45] = byte(x11 >> 8) + out[46] = byte(x11 >> 16) + out[47] = byte(x11 >> 24) + + out[48] = byte(x12) + out[49] = byte(x12 >> 8) + out[50] = byte(x12 >> 16) + out[51] = byte(x12 >> 24) + + out[52] = byte(x13) + out[53] = byte(x13 >> 8) + out[54] = byte(x13 >> 16) + out[55] = byte(x13 >> 24) + + out[56] = byte(x14) + out[57] = byte(x14 >> 8) + out[58] = byte(x14 >> 16) + out[59] = byte(x14 >> 24) + + out[60] = byte(x15) + out[61] = byte(x15 >> 8) + out[62] = byte(x15 >> 16) + out[63] = byte(x15 >> 24) +} + +// XORKeyStream crypts bytes from in to out using the given key and counters. +// In and out may be the same slice but otherwise should not overlap. Counter +// contains the raw salsa20 counter bytes (both nonce and block counter). +func XORKeyStream(out, in []byte, counter *[16]byte, key *[32]byte) { + var block [64]byte + var counterCopy [16]byte + copy(counterCopy[:], counter[:]) + + for len(in) >= 64 { + core(&block, &counterCopy, key, &Sigma) + for i, x := range block { + out[i] = in[i] ^ x + } + u := uint32(1) + for i := 8; i < 16; i++ { + u += uint32(counterCopy[i]) + counterCopy[i] = byte(u) + u >>= 8 + } + in = in[64:] + out = out[64:] + } + + if len(in) > 0 { + core(&block, &counterCopy, key, &Sigma) + for i, v := range in { + out[i] = v ^ block[i] + } + } +} diff --git a/vendor/golang.org/x/crypto/salsa20/salsa20.go b/vendor/golang.org/x/crypto/salsa20/salsa20.go new file mode 100644 index 0000000..c236375 --- /dev/null +++ b/vendor/golang.org/x/crypto/salsa20/salsa20.go @@ -0,0 +1,54 @@ +// 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 salsa20 implements the Salsa20 stream cipher as specified in http://cr.yp.to/snuffle/spec.pdf. + +Salsa20 differs from many other stream ciphers in that it is message orientated +rather than byte orientated. Keystream blocks are not preserved between calls, +therefore each side must encrypt/decrypt data with the same segmentation. + +Another aspect of this difference is that part of the counter is exposed as +an nonce in each call. Encrypting two different messages with the same (key, +nonce) pair leads to trivial plaintext recovery. This is analogous to +encrypting two different messages with the same key with a traditional stream +cipher. + +This package also implements XSalsa20: a version of Salsa20 with a 24-byte +nonce as specified in http://cr.yp.to/snuffle/xsalsa-20081128.pdf. Simply +passing a 24-byte slice as the nonce triggers XSalsa20. +*/ +package salsa20 + +// TODO(agl): implement XORKeyStream12 and XORKeyStream8 - the reduced round variants of Salsa20. + +import ( + "golang.org/x/crypto/salsa20/salsa" +) + +// XORKeyStream crypts bytes from in to out using the given key and nonce. In +// and out may be the same slice but otherwise should not overlap. Nonce must +// be either 8 or 24 bytes long. +func XORKeyStream(out, in []byte, nonce []byte, key *[32]byte) { + if len(out) < len(in) { + in = in[:len(out)] + } + + var subNonce [16]byte + + if len(nonce) == 24 { + var subKey [32]byte + var hNonce [16]byte + copy(hNonce[:], nonce[:16]) + salsa.HSalsa20(&subKey, &hNonce, key, &salsa.Sigma) + copy(subNonce[:], nonce[16:]) + key = &subKey + } else if len(nonce) == 8 { + copy(subNonce[:], nonce[:]) + } else { + panic("salsa20: nonce must be 8 or 24 bytes") + } + + salsa.XORKeyStream(out, in, &subNonce, key) +} diff --git a/vendor/golang.org/x/crypto/tea/cipher.go b/vendor/golang.org/x/crypto/tea/cipher.go new file mode 100644 index 0000000..9c13d12 --- /dev/null +++ b/vendor/golang.org/x/crypto/tea/cipher.go @@ -0,0 +1,109 @@ +// 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 tea implements the TEA algorithm, as defined in Needham and +// Wheeler's 1994 technical report, “TEA, a Tiny Encryption Algorithm”. See +// http://www.cix.co.uk/~klockstone/tea.pdf for details. + +package tea + +import ( + "crypto/cipher" + "encoding/binary" + "errors" +) + +const ( + // BlockSize is the size of a TEA block, in bytes. + BlockSize = 8 + + // KeySize is the size of a TEA key, in bytes. + KeySize = 16 + + // delta is the TEA key schedule constant. + delta = 0x9e3779b9 + + // numRounds is the standard number of rounds in TEA. + numRounds = 64 +) + +// tea is an instance of the TEA cipher with a particular key. +type tea struct { + key [16]byte + rounds int +} + +// NewCipher returns an instance of the TEA cipher with the standard number of +// rounds. The key argument must be 16 bytes long. +func NewCipher(key []byte) (cipher.Block, error) { + return NewCipherWithRounds(key, numRounds) +} + +// NewCipherWithRounds returns an instance of the TEA cipher with a given +// number of rounds, which must be even. The key argument must be 16 bytes +// long. +func NewCipherWithRounds(key []byte, rounds int) (cipher.Block, error) { + if len(key) != 16 { + return nil, errors.New("tea: incorrect key size") + } + + if rounds&1 != 0 { + return nil, errors.New("tea: odd number of rounds specified") + } + + c := &tea{ + rounds: rounds, + } + copy(c.key[:], key) + + return c, nil +} + +// BlockSize returns the TEA block size, which is eight bytes. It is necessary +// to satisfy the Block interface in the package "crypto/cipher". +func (*tea) BlockSize() int { + return BlockSize +} + +// Encrypt encrypts the 8 byte buffer src using the key in t and stores the +// result in dst. Note that for amounts of data larger than a block, it is not +// safe to just call Encrypt on successive blocks; instead, use an encryption +// mode like CBC (see crypto/cipher/cbc.go). +func (t *tea) Encrypt(dst, src []byte) { + e := binary.BigEndian + v0, v1 := e.Uint32(src), e.Uint32(src[4:]) + k0, k1, k2, k3 := e.Uint32(t.key[0:]), e.Uint32(t.key[4:]), e.Uint32(t.key[8:]), e.Uint32(t.key[12:]) + + sum := uint32(0) + delta := uint32(delta) + + for i := 0; i < t.rounds/2; i++ { + sum += delta + v0 += ((v1 << 4) + k0) ^ (v1 + sum) ^ ((v1 >> 5) + k1) + v1 += ((v0 << 4) + k2) ^ (v0 + sum) ^ ((v0 >> 5) + k3) + } + + e.PutUint32(dst, v0) + e.PutUint32(dst[4:], v1) +} + +// Decrypt decrypts the 8 byte buffer src using the key in t and stores the +// result in dst. +func (t *tea) Decrypt(dst, src []byte) { + e := binary.BigEndian + v0, v1 := e.Uint32(src), e.Uint32(src[4:]) + k0, k1, k2, k3 := e.Uint32(t.key[0:]), e.Uint32(t.key[4:]), e.Uint32(t.key[8:]), e.Uint32(t.key[12:]) + + delta := uint32(delta) + sum := delta * uint32(t.rounds/2) // in general, sum = delta * n + + for i := 0; i < t.rounds/2; i++ { + v1 -= ((v0 << 4) + k2) ^ (v0 + sum) ^ ((v0 >> 5) + k3) + v0 -= ((v1 << 4) + k0) ^ (v1 + sum) ^ ((v1 >> 5) + k1) + sum -= delta + } + + e.PutUint32(dst, v0) + e.PutUint32(dst[4:], v1) +} diff --git a/vendor/golang.org/x/crypto/twofish/twofish.go b/vendor/golang.org/x/crypto/twofish/twofish.go new file mode 100644 index 0000000..a930218 --- /dev/null +++ b/vendor/golang.org/x/crypto/twofish/twofish.go @@ -0,0 +1,342 @@ +// 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 twofish implements Bruce Schneier's Twofish encryption algorithm. +package twofish + +// Twofish is defined in http://www.schneier.com/paper-twofish-paper.pdf [TWOFISH] + +// This code is a port of the LibTom C implementation. +// See http://libtom.org/?page=features&newsitems=5&whatfile=crypt. +// LibTomCrypt is free for all purposes under the public domain. +// It was heavily inspired by the go blowfish package. + +import "strconv" + +// BlockSize is the constant block size of Twofish. +const BlockSize = 16 + +const mdsPolynomial = 0x169 // x^8 + x^6 + x^5 + x^3 + 1, see [TWOFISH] 4.2 +const rsPolynomial = 0x14d // x^8 + x^6 + x^3 + x^2 + 1, see [TWOFISH] 4.3 + +// A Cipher is an instance of Twofish encryption using a particular key. +type Cipher struct { + s [4][256]uint32 + k [40]uint32 +} + +type KeySizeError int + +func (k KeySizeError) Error() string { + return "crypto/twofish: invalid key size " + strconv.Itoa(int(k)) +} + +// NewCipher creates and returns a Cipher. +// The key argument should be the Twofish key, 16, 24 or 32 bytes. +func NewCipher(key []byte) (*Cipher, error) { + keylen := len(key) + + if keylen != 16 && keylen != 24 && keylen != 32 { + return nil, KeySizeError(keylen) + } + + // k is the number of 64 bit words in key + k := keylen / 8 + + // Create the S[..] words + var S [4 * 4]byte + for i := 0; i < k; i++ { + // Computes [y0 y1 y2 y3] = rs . [x0 x1 x2 x3 x4 x5 x6 x7] + for j, rsRow := range rs { + for k, rsVal := range rsRow { + S[4*i+j] ^= gfMult(key[8*i+k], rsVal, rsPolynomial) + } + } + } + + // Calculate subkeys + c := new(Cipher) + var tmp [4]byte + for i := byte(0); i < 20; i++ { + // A = h(p * 2x, Me) + for j := range tmp { + tmp[j] = 2 * i + } + A := h(tmp[:], key, 0) + + // B = rolc(h(p * (2x + 1), Mo), 8) + for j := range tmp { + tmp[j] = 2*i + 1 + } + B := h(tmp[:], key, 1) + B = rol(B, 8) + + c.k[2*i] = A + B + + // K[2i+1] = (A + 2B) <<< 9 + c.k[2*i+1] = rol(2*B+A, 9) + } + + // Calculate sboxes + switch k { + case 2: + for i := range c.s[0] { + c.s[0][i] = mdsColumnMult(sbox[1][sbox[0][sbox[0][byte(i)]^S[0]]^S[4]], 0) + c.s[1][i] = mdsColumnMult(sbox[0][sbox[0][sbox[1][byte(i)]^S[1]]^S[5]], 1) + c.s[2][i] = mdsColumnMult(sbox[1][sbox[1][sbox[0][byte(i)]^S[2]]^S[6]], 2) + c.s[3][i] = mdsColumnMult(sbox[0][sbox[1][sbox[1][byte(i)]^S[3]]^S[7]], 3) + } + case 3: + for i := range c.s[0] { + c.s[0][i] = mdsColumnMult(sbox[1][sbox[0][sbox[0][sbox[1][byte(i)]^S[0]]^S[4]]^S[8]], 0) + c.s[1][i] = mdsColumnMult(sbox[0][sbox[0][sbox[1][sbox[1][byte(i)]^S[1]]^S[5]]^S[9]], 1) + c.s[2][i] = mdsColumnMult(sbox[1][sbox[1][sbox[0][sbox[0][byte(i)]^S[2]]^S[6]]^S[10]], 2) + c.s[3][i] = mdsColumnMult(sbox[0][sbox[1][sbox[1][sbox[0][byte(i)]^S[3]]^S[7]]^S[11]], 3) + } + default: + for i := range c.s[0] { + c.s[0][i] = mdsColumnMult(sbox[1][sbox[0][sbox[0][sbox[1][sbox[1][byte(i)]^S[0]]^S[4]]^S[8]]^S[12]], 0) + c.s[1][i] = mdsColumnMult(sbox[0][sbox[0][sbox[1][sbox[1][sbox[0][byte(i)]^S[1]]^S[5]]^S[9]]^S[13]], 1) + c.s[2][i] = mdsColumnMult(sbox[1][sbox[1][sbox[0][sbox[0][sbox[0][byte(i)]^S[2]]^S[6]]^S[10]]^S[14]], 2) + c.s[3][i] = mdsColumnMult(sbox[0][sbox[1][sbox[1][sbox[0][sbox[1][byte(i)]^S[3]]^S[7]]^S[11]]^S[15]], 3) + } + } + + return c, nil +} + +// BlockSize returns the Twofish block size, 16 bytes. +func (c *Cipher) BlockSize() int { return BlockSize } + +// store32l stores src in dst in little-endian form. +func store32l(dst []byte, src uint32) { + dst[0] = byte(src) + dst[1] = byte(src >> 8) + dst[2] = byte(src >> 16) + dst[3] = byte(src >> 24) + return +} + +// load32l reads a little-endian uint32 from src. +func load32l(src []byte) uint32 { + return uint32(src[0]) | uint32(src[1])<<8 | uint32(src[2])<<16 | uint32(src[3])<<24 +} + +// rol returns x after a left circular rotation of y bits. +func rol(x, y uint32) uint32 { + return (x << (y & 31)) | (x >> (32 - (y & 31))) +} + +// ror returns x after a right circular rotation of y bits. +func ror(x, y uint32) uint32 { + return (x >> (y & 31)) | (x << (32 - (y & 31))) +} + +// The RS matrix. See [TWOFISH] 4.3 +var rs = [4][8]byte{ + {0x01, 0xA4, 0x55, 0x87, 0x5A, 0x58, 0xDB, 0x9E}, + {0xA4, 0x56, 0x82, 0xF3, 0x1E, 0xC6, 0x68, 0xE5}, + {0x02, 0xA1, 0xFC, 0xC1, 0x47, 0xAE, 0x3D, 0x19}, + {0xA4, 0x55, 0x87, 0x5A, 0x58, 0xDB, 0x9E, 0x03}, +} + +// sbox tables +var sbox = [2][256]byte{ + { + 0xa9, 0x67, 0xb3, 0xe8, 0x04, 0xfd, 0xa3, 0x76, 0x9a, 0x92, 0x80, 0x78, 0xe4, 0xdd, 0xd1, 0x38, + 0x0d, 0xc6, 0x35, 0x98, 0x18, 0xf7, 0xec, 0x6c, 0x43, 0x75, 0x37, 0x26, 0xfa, 0x13, 0x94, 0x48, + 0xf2, 0xd0, 0x8b, 0x30, 0x84, 0x54, 0xdf, 0x23, 0x19, 0x5b, 0x3d, 0x59, 0xf3, 0xae, 0xa2, 0x82, + 0x63, 0x01, 0x83, 0x2e, 0xd9, 0x51, 0x9b, 0x7c, 0xa6, 0xeb, 0xa5, 0xbe, 0x16, 0x0c, 0xe3, 0x61, + 0xc0, 0x8c, 0x3a, 0xf5, 0x73, 0x2c, 0x25, 0x0b, 0xbb, 0x4e, 0x89, 0x6b, 0x53, 0x6a, 0xb4, 0xf1, + 0xe1, 0xe6, 0xbd, 0x45, 0xe2, 0xf4, 0xb6, 0x66, 0xcc, 0x95, 0x03, 0x56, 0xd4, 0x1c, 0x1e, 0xd7, + 0xfb, 0xc3, 0x8e, 0xb5, 0xe9, 0xcf, 0xbf, 0xba, 0xea, 0x77, 0x39, 0xaf, 0x33, 0xc9, 0x62, 0x71, + 0x81, 0x79, 0x09, 0xad, 0x24, 0xcd, 0xf9, 0xd8, 0xe5, 0xc5, 0xb9, 0x4d, 0x44, 0x08, 0x86, 0xe7, + 0xa1, 0x1d, 0xaa, 0xed, 0x06, 0x70, 0xb2, 0xd2, 0x41, 0x7b, 0xa0, 0x11, 0x31, 0xc2, 0x27, 0x90, + 0x20, 0xf6, 0x60, 0xff, 0x96, 0x5c, 0xb1, 0xab, 0x9e, 0x9c, 0x52, 0x1b, 0x5f, 0x93, 0x0a, 0xef, + 0x91, 0x85, 0x49, 0xee, 0x2d, 0x4f, 0x8f, 0x3b, 0x47, 0x87, 0x6d, 0x46, 0xd6, 0x3e, 0x69, 0x64, + 0x2a, 0xce, 0xcb, 0x2f, 0xfc, 0x97, 0x05, 0x7a, 0xac, 0x7f, 0xd5, 0x1a, 0x4b, 0x0e, 0xa7, 0x5a, + 0x28, 0x14, 0x3f, 0x29, 0x88, 0x3c, 0x4c, 0x02, 0xb8, 0xda, 0xb0, 0x17, 0x55, 0x1f, 0x8a, 0x7d, + 0x57, 0xc7, 0x8d, 0x74, 0xb7, 0xc4, 0x9f, 0x72, 0x7e, 0x15, 0x22, 0x12, 0x58, 0x07, 0x99, 0x34, + 0x6e, 0x50, 0xde, 0x68, 0x65, 0xbc, 0xdb, 0xf8, 0xc8, 0xa8, 0x2b, 0x40, 0xdc, 0xfe, 0x32, 0xa4, + 0xca, 0x10, 0x21, 0xf0, 0xd3, 0x5d, 0x0f, 0x00, 0x6f, 0x9d, 0x36, 0x42, 0x4a, 0x5e, 0xc1, 0xe0, + }, + { + 0x75, 0xf3, 0xc6, 0xf4, 0xdb, 0x7b, 0xfb, 0xc8, 0x4a, 0xd3, 0xe6, 0x6b, 0x45, 0x7d, 0xe8, 0x4b, + 0xd6, 0x32, 0xd8, 0xfd, 0x37, 0x71, 0xf1, 0xe1, 0x30, 0x0f, 0xf8, 0x1b, 0x87, 0xfa, 0x06, 0x3f, + 0x5e, 0xba, 0xae, 0x5b, 0x8a, 0x00, 0xbc, 0x9d, 0x6d, 0xc1, 0xb1, 0x0e, 0x80, 0x5d, 0xd2, 0xd5, + 0xa0, 0x84, 0x07, 0x14, 0xb5, 0x90, 0x2c, 0xa3, 0xb2, 0x73, 0x4c, 0x54, 0x92, 0x74, 0x36, 0x51, + 0x38, 0xb0, 0xbd, 0x5a, 0xfc, 0x60, 0x62, 0x96, 0x6c, 0x42, 0xf7, 0x10, 0x7c, 0x28, 0x27, 0x8c, + 0x13, 0x95, 0x9c, 0xc7, 0x24, 0x46, 0x3b, 0x70, 0xca, 0xe3, 0x85, 0xcb, 0x11, 0xd0, 0x93, 0xb8, + 0xa6, 0x83, 0x20, 0xff, 0x9f, 0x77, 0xc3, 0xcc, 0x03, 0x6f, 0x08, 0xbf, 0x40, 0xe7, 0x2b, 0xe2, + 0x79, 0x0c, 0xaa, 0x82, 0x41, 0x3a, 0xea, 0xb9, 0xe4, 0x9a, 0xa4, 0x97, 0x7e, 0xda, 0x7a, 0x17, + 0x66, 0x94, 0xa1, 0x1d, 0x3d, 0xf0, 0xde, 0xb3, 0x0b, 0x72, 0xa7, 0x1c, 0xef, 0xd1, 0x53, 0x3e, + 0x8f, 0x33, 0x26, 0x5f, 0xec, 0x76, 0x2a, 0x49, 0x81, 0x88, 0xee, 0x21, 0xc4, 0x1a, 0xeb, 0xd9, + 0xc5, 0x39, 0x99, 0xcd, 0xad, 0x31, 0x8b, 0x01, 0x18, 0x23, 0xdd, 0x1f, 0x4e, 0x2d, 0xf9, 0x48, + 0x4f, 0xf2, 0x65, 0x8e, 0x78, 0x5c, 0x58, 0x19, 0x8d, 0xe5, 0x98, 0x57, 0x67, 0x7f, 0x05, 0x64, + 0xaf, 0x63, 0xb6, 0xfe, 0xf5, 0xb7, 0x3c, 0xa5, 0xce, 0xe9, 0x68, 0x44, 0xe0, 0x4d, 0x43, 0x69, + 0x29, 0x2e, 0xac, 0x15, 0x59, 0xa8, 0x0a, 0x9e, 0x6e, 0x47, 0xdf, 0x34, 0x35, 0x6a, 0xcf, 0xdc, + 0x22, 0xc9, 0xc0, 0x9b, 0x89, 0xd4, 0xed, 0xab, 0x12, 0xa2, 0x0d, 0x52, 0xbb, 0x02, 0x2f, 0xa9, + 0xd7, 0x61, 0x1e, 0xb4, 0x50, 0x04, 0xf6, 0xc2, 0x16, 0x25, 0x86, 0x56, 0x55, 0x09, 0xbe, 0x91, + }, +} + +// gfMult returns a·b in GF(2^8)/p +func gfMult(a, b byte, p uint32) byte { + B := [2]uint32{0, uint32(b)} + P := [2]uint32{0, p} + var result uint32 + + // branchless GF multiplier + for i := 0; i < 7; i++ { + result ^= B[a&1] + a >>= 1 + B[1] = P[B[1]>>7] ^ (B[1] << 1) + } + result ^= B[a&1] + return byte(result) +} + +// mdsColumnMult calculates y{col} where [y0 y1 y2 y3] = MDS · [x0] +func mdsColumnMult(in byte, col int) uint32 { + mul01 := in + mul5B := gfMult(in, 0x5B, mdsPolynomial) + mulEF := gfMult(in, 0xEF, mdsPolynomial) + + switch col { + case 0: + return uint32(mul01) | uint32(mul5B)<<8 | uint32(mulEF)<<16 | uint32(mulEF)<<24 + case 1: + return uint32(mulEF) | uint32(mulEF)<<8 | uint32(mul5B)<<16 | uint32(mul01)<<24 + case 2: + return uint32(mul5B) | uint32(mulEF)<<8 | uint32(mul01)<<16 | uint32(mulEF)<<24 + case 3: + return uint32(mul5B) | uint32(mul01)<<8 | uint32(mulEF)<<16 | uint32(mul5B)<<24 + } + + panic("unreachable") +} + +// h implements the S-box generation function. See [TWOFISH] 4.3.5 +func h(in, key []byte, offset int) uint32 { + var y [4]byte + for x := range y { + y[x] = in[x] + } + switch len(key) / 8 { + case 4: + y[0] = sbox[1][y[0]] ^ key[4*(6+offset)+0] + y[1] = sbox[0][y[1]] ^ key[4*(6+offset)+1] + y[2] = sbox[0][y[2]] ^ key[4*(6+offset)+2] + y[3] = sbox[1][y[3]] ^ key[4*(6+offset)+3] + fallthrough + case 3: + y[0] = sbox[1][y[0]] ^ key[4*(4+offset)+0] + y[1] = sbox[1][y[1]] ^ key[4*(4+offset)+1] + y[2] = sbox[0][y[2]] ^ key[4*(4+offset)+2] + y[3] = sbox[0][y[3]] ^ key[4*(4+offset)+3] + fallthrough + case 2: + y[0] = sbox[1][sbox[0][sbox[0][y[0]]^key[4*(2+offset)+0]]^key[4*(0+offset)+0]] + y[1] = sbox[0][sbox[0][sbox[1][y[1]]^key[4*(2+offset)+1]]^key[4*(0+offset)+1]] + y[2] = sbox[1][sbox[1][sbox[0][y[2]]^key[4*(2+offset)+2]]^key[4*(0+offset)+2]] + y[3] = sbox[0][sbox[1][sbox[1][y[3]]^key[4*(2+offset)+3]]^key[4*(0+offset)+3]] + } + // [y0 y1 y2 y3] = MDS . [x0 x1 x2 x3] + var mdsMult uint32 + for i := range y { + mdsMult ^= mdsColumnMult(y[i], i) + } + return mdsMult +} + +// Encrypt encrypts a 16-byte block from src to dst, which may overlap. +// Note that for amounts of data larger than a block, +// it is not safe to just call Encrypt on successive blocks; +// instead, use an encryption mode like CBC (see crypto/cipher/cbc.go). +func (c *Cipher) Encrypt(dst, src []byte) { + S1 := c.s[0] + S2 := c.s[1] + S3 := c.s[2] + S4 := c.s[3] + + // Load input + ia := load32l(src[0:4]) + ib := load32l(src[4:8]) + ic := load32l(src[8:12]) + id := load32l(src[12:16]) + + // Pre-whitening + ia ^= c.k[0] + ib ^= c.k[1] + ic ^= c.k[2] + id ^= c.k[3] + + for i := 0; i < 8; i++ { + k := c.k[8+i*4 : 12+i*4] + t2 := S2[byte(ib)] ^ S3[byte(ib>>8)] ^ S4[byte(ib>>16)] ^ S1[byte(ib>>24)] + t1 := S1[byte(ia)] ^ S2[byte(ia>>8)] ^ S3[byte(ia>>16)] ^ S4[byte(ia>>24)] + t2 + ic = ror(ic^(t1+k[0]), 1) + id = rol(id, 1) ^ (t2 + t1 + k[1]) + + t2 = S2[byte(id)] ^ S3[byte(id>>8)] ^ S4[byte(id>>16)] ^ S1[byte(id>>24)] + t1 = S1[byte(ic)] ^ S2[byte(ic>>8)] ^ S3[byte(ic>>16)] ^ S4[byte(ic>>24)] + t2 + ia = ror(ia^(t1+k[2]), 1) + ib = rol(ib, 1) ^ (t2 + t1 + k[3]) + } + + // Output with "undo last swap" + ta := ic ^ c.k[4] + tb := id ^ c.k[5] + tc := ia ^ c.k[6] + td := ib ^ c.k[7] + + store32l(dst[0:4], ta) + store32l(dst[4:8], tb) + store32l(dst[8:12], tc) + store32l(dst[12:16], td) +} + +// Decrypt decrypts a 16-byte block from src to dst, which may overlap. +func (c *Cipher) Decrypt(dst, src []byte) { + S1 := c.s[0] + S2 := c.s[1] + S3 := c.s[2] + S4 := c.s[3] + + // Load input + ta := load32l(src[0:4]) + tb := load32l(src[4:8]) + tc := load32l(src[8:12]) + td := load32l(src[12:16]) + + // Undo undo final swap + ia := tc ^ c.k[6] + ib := td ^ c.k[7] + ic := ta ^ c.k[4] + id := tb ^ c.k[5] + + for i := 8; i > 0; i-- { + k := c.k[4+i*4 : 8+i*4] + t2 := S2[byte(id)] ^ S3[byte(id>>8)] ^ S4[byte(id>>16)] ^ S1[byte(id>>24)] + t1 := S1[byte(ic)] ^ S2[byte(ic>>8)] ^ S3[byte(ic>>16)] ^ S4[byte(ic>>24)] + t2 + ia = rol(ia, 1) ^ (t1 + k[2]) + ib = ror(ib^(t2+t1+k[3]), 1) + + t2 = S2[byte(ib)] ^ S3[byte(ib>>8)] ^ S4[byte(ib>>16)] ^ S1[byte(ib>>24)] + t1 = S1[byte(ia)] ^ S2[byte(ia>>8)] ^ S3[byte(ia>>16)] ^ S4[byte(ia>>24)] + t2 + ic = rol(ic, 1) ^ (t1 + k[0]) + id = ror(id^(t2+t1+k[1]), 1) + } + + // Undo pre-whitening + ia ^= c.k[0] + ib ^= c.k[1] + ic ^= c.k[2] + id ^= c.k[3] + + store32l(dst[0:4], ia) + store32l(dst[4:8], ib) + store32l(dst[8:12], ic) + store32l(dst[12:16], id) +} diff --git a/vendor/golang.org/x/crypto/xtea/block.go b/vendor/golang.org/x/crypto/xtea/block.go new file mode 100644 index 0000000..bf5d245 --- /dev/null +++ b/vendor/golang.org/x/crypto/xtea/block.go @@ -0,0 +1,66 @@ +// 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. + +/* + Implementation adapted from Needham and Wheeler's paper: + http://www.cix.co.uk/~klockstone/xtea.pdf + + A precalculated look up table is used during encryption/decryption for values that are based purely on the key. +*/ + +package xtea + +// XTEA is based on 64 rounds. +const numRounds = 64 + +// blockToUint32 reads an 8 byte slice into two uint32s. +// The block is treated as big endian. +func blockToUint32(src []byte) (uint32, uint32) { + r0 := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) + r1 := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) + return r0, r1 +} + +// uint32ToBlock writes two uint32s into an 8 byte data block. +// Values are written as big endian. +func uint32ToBlock(v0, v1 uint32, dst []byte) { + dst[0] = byte(v0 >> 24) + dst[1] = byte(v0 >> 16) + dst[2] = byte(v0 >> 8) + dst[3] = byte(v0) + dst[4] = byte(v1 >> 24) + dst[5] = byte(v1 >> 16) + dst[6] = byte(v1 >> 8) + dst[7] = byte(v1 >> 0) +} + +// encryptBlock encrypts a single 8 byte block using XTEA. +func encryptBlock(c *Cipher, dst, src []byte) { + v0, v1 := blockToUint32(src) + + // Two rounds of XTEA applied per loop + for i := 0; i < numRounds; { + v0 += ((v1<<4 ^ v1>>5) + v1) ^ c.table[i] + i++ + v1 += ((v0<<4 ^ v0>>5) + v0) ^ c.table[i] + i++ + } + + uint32ToBlock(v0, v1, dst) +} + +// decryptBlock decrypt a single 8 byte block using XTEA. +func decryptBlock(c *Cipher, dst, src []byte) { + v0, v1 := blockToUint32(src) + + // Two rounds of XTEA applied per loop + for i := numRounds; i > 0; { + i-- + v1 -= ((v0<<4 ^ v0>>5) + v0) ^ c.table[i] + i-- + v0 -= ((v1<<4 ^ v1>>5) + v1) ^ c.table[i] + } + + uint32ToBlock(v0, v1, dst) +} diff --git a/vendor/golang.org/x/crypto/xtea/cipher.go b/vendor/golang.org/x/crypto/xtea/cipher.go new file mode 100644 index 0000000..0e10b8e --- /dev/null +++ b/vendor/golang.org/x/crypto/xtea/cipher.go @@ -0,0 +1,82 @@ +// 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 xtea implements XTEA encryption, as defined in Needham and Wheeler's +// 1997 technical report, "Tea extensions." +package xtea + +// For details, see http://www.cix.co.uk/~klockstone/xtea.pdf + +import "strconv" + +// The XTEA block size in bytes. +const BlockSize = 8 + +// A Cipher is an instance of an XTEA cipher using a particular key. +// table contains a series of precalculated values that are used each round. +type Cipher struct { + table [64]uint32 +} + +type KeySizeError int + +func (k KeySizeError) Error() string { + return "crypto/xtea: invalid key size " + strconv.Itoa(int(k)) +} + +// NewCipher creates and returns a new Cipher. +// The key argument should be the XTEA key. +// XTEA only supports 128 bit (16 byte) keys. +func NewCipher(key []byte) (*Cipher, error) { + k := len(key) + switch k { + default: + return nil, KeySizeError(k) + case 16: + break + } + + c := new(Cipher) + initCipher(c, key) + + return c, nil +} + +// BlockSize returns the XTEA block size, 8 bytes. +// It is necessary to satisfy the Block interface in the +// package "crypto/cipher". +func (c *Cipher) BlockSize() int { return BlockSize } + +// Encrypt encrypts the 8 byte buffer src using the key and stores the result in dst. +// Note that for amounts of data larger than a block, +// it is not safe to just call Encrypt on successive blocks; +// instead, use an encryption mode like CBC (see crypto/cipher/cbc.go). +func (c *Cipher) Encrypt(dst, src []byte) { encryptBlock(c, dst, src) } + +// Decrypt decrypts the 8 byte buffer src using the key k and stores the result in dst. +func (c *Cipher) Decrypt(dst, src []byte) { decryptBlock(c, dst, src) } + +// initCipher initializes the cipher context by creating a look up table +// of precalculated values that are based on the key. +func initCipher(c *Cipher, key []byte) { + // Load the key into four uint32s + var k [4]uint32 + for i := 0; i < len(k); i++ { + j := i << 2 // Multiply by 4 + k[i] = uint32(key[j+0])<<24 | uint32(key[j+1])<<16 | uint32(key[j+2])<<8 | uint32(key[j+3]) + } + + // Precalculate the table + const delta = 0x9E3779B9 + var sum uint32 = 0 + + // Two rounds of XTEA applied per loop + for i := 0; i < numRounds; { + c.table[i] = sum + k[sum&3] + i++ + sum += delta + c.table[i] = sum + k[(sum>>11)&3] + i++ + } +} diff --git a/vendor/golang.org/x/net/LICENSE b/vendor/golang.org/x/net/LICENSE new file mode 100644 index 0000000..6a66aea --- /dev/null +++ b/vendor/golang.org/x/net/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2009 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/golang.org/x/net/PATENTS b/vendor/golang.org/x/net/PATENTS new file mode 100644 index 0000000..7330990 --- /dev/null +++ b/vendor/golang.org/x/net/PATENTS @@ -0,0 +1,22 @@ +Additional IP Rights Grant (Patents) + +"This implementation" means the copyrightable works distributed by +Google as part of the Go project. + +Google hereby grants to You a perpetual, worldwide, non-exclusive, +no-charge, royalty-free, irrevocable (except as stated in this section) +patent license to make, have made, use, offer to sell, sell, import, +transfer and otherwise run, modify and propagate the contents of this +implementation of Go, where such license applies only to those patent +claims, both currently owned or controlled by Google and acquired in +the future, licensable by Google that are necessarily infringed by this +implementation of Go. This grant does not include claims that would be +infringed only as a consequence of further modification of this +implementation. If you or your agent or exclusive licensee institute or +order or agree to the institution of patent litigation against any +entity (including a cross-claim or counterclaim in a lawsuit) alleging +that this implementation of Go or any code incorporated within this +implementation of Go constitutes direct or contributory patent +infringement, or inducement of patent infringement, then any patent +rights granted to you under this License for this implementation of Go +shall terminate as of the date such litigation is filed. diff --git a/vendor/golang.org/x/net/bpf/asm.go b/vendor/golang.org/x/net/bpf/asm.go new file mode 100644 index 0000000..15e21b1 --- /dev/null +++ b/vendor/golang.org/x/net/bpf/asm.go @@ -0,0 +1,41 @@ +// 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 bpf + +import "fmt" + +// Assemble converts insts into raw instructions suitable for loading +// into a BPF virtual machine. +// +// Currently, no optimization is attempted, the assembled program flow +// is exactly as provided. +func Assemble(insts []Instruction) ([]RawInstruction, error) { + ret := make([]RawInstruction, len(insts)) + var err error + for i, inst := range insts { + ret[i], err = inst.Assemble() + if err != nil { + return nil, fmt.Errorf("assembling instruction %d: %s", i+1, err) + } + } + return ret, nil +} + +// Disassemble attempts to parse raw back into +// Instructions. Unrecognized RawInstructions are assumed to be an +// extension not implemented by this package, and are passed through +// unchanged to the output. The allDecoded value reports whether insts +// contains no RawInstructions. +func Disassemble(raw []RawInstruction) (insts []Instruction, allDecoded bool) { + insts = make([]Instruction, len(raw)) + allDecoded = true + for i, r := range raw { + insts[i] = r.Disassemble() + if _, ok := insts[i].(RawInstruction); ok { + allDecoded = false + } + } + return insts, allDecoded +} diff --git a/vendor/golang.org/x/net/bpf/constants.go b/vendor/golang.org/x/net/bpf/constants.go new file mode 100644 index 0000000..2c8bbab --- /dev/null +++ b/vendor/golang.org/x/net/bpf/constants.go @@ -0,0 +1,215 @@ +// 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 bpf + +// A Register is a register of the BPF virtual machine. +type Register uint16 + +const ( + // RegA is the accumulator register. RegA is always the + // destination register of ALU operations. + RegA Register = iota + // RegX is the indirection register, used by LoadIndirect + // operations. + RegX +) + +// An ALUOp is an arithmetic or logic operation. +type ALUOp uint16 + +// ALU binary operation types. +const ( + ALUOpAdd ALUOp = iota << 4 + ALUOpSub + ALUOpMul + ALUOpDiv + ALUOpOr + ALUOpAnd + ALUOpShiftLeft + ALUOpShiftRight + aluOpNeg // Not exported because it's the only unary ALU operation, and gets its own instruction type. + ALUOpMod + ALUOpXor +) + +// A JumpTest is a comparison operator used in conditional jumps. +type JumpTest uint16 + +// Supported operators for conditional jumps. +const ( + // K == A + JumpEqual JumpTest = iota + // K != A + JumpNotEqual + // K > A + JumpGreaterThan + // K < A + JumpLessThan + // K >= A + JumpGreaterOrEqual + // K <= A + JumpLessOrEqual + // K & A != 0 + JumpBitsSet + // K & A == 0 + JumpBitsNotSet +) + +// An Extension is a function call provided by the kernel that +// performs advanced operations that are expensive or impossible +// within the BPF virtual machine. +// +// Extensions are only implemented by the Linux kernel. +// +// TODO: should we prune this list? Some of these extensions seem +// either broken or near-impossible to use correctly, whereas other +// (len, random, ifindex) are quite useful. +type Extension int + +// Extension functions available in the Linux kernel. +const ( + // ExtLen returns the length of the packet. + ExtLen Extension = 1 + // ExtProto returns the packet's L3 protocol type. + ExtProto = 0 + // ExtType returns the packet's type (skb->pkt_type in the kernel) + // + // TODO: better documentation. How nice an API do we want to + // provide for these esoteric extensions? + ExtType = 4 + // ExtPayloadOffset returns the offset of the packet payload, or + // the first protocol header that the kernel does not know how to + // parse. + ExtPayloadOffset = 52 + // ExtInterfaceIndex returns the index of the interface on which + // the packet was received. + ExtInterfaceIndex = 8 + // ExtNetlinkAttr returns the netlink attribute of type X at + // offset A. + ExtNetlinkAttr = 12 + // ExtNetlinkAttrNested returns the nested netlink attribute of + // type X at offset A. + ExtNetlinkAttrNested = 16 + // ExtMark returns the packet's mark value. + ExtMark = 20 + // ExtQueue returns the packet's assigned hardware queue. + ExtQueue = 24 + // ExtLinkLayerType returns the packet's hardware address type + // (e.g. Ethernet, Infiniband). + ExtLinkLayerType = 28 + // ExtRXHash returns the packets receive hash. + // + // TODO: figure out what this rxhash actually is. + ExtRXHash = 32 + // ExtCPUID returns the ID of the CPU processing the current + // packet. + ExtCPUID = 36 + // ExtVLANTag returns the packet's VLAN tag. + ExtVLANTag = 44 + // ExtVLANTagPresent returns non-zero if the packet has a VLAN + // tag. + // + // TODO: I think this might be a lie: it reads bit 0x1000 of the + // VLAN header, which changed meaning in recent revisions of the + // spec - this extension may now return meaningless information. + ExtVLANTagPresent = 48 + // ExtVLANProto returns 0x8100 if the frame has a VLAN header, + // 0x88a8 if the frame has a "Q-in-Q" double VLAN header, or some + // other value if no VLAN information is present. + ExtVLANProto = 60 + // ExtRand returns a uniformly random uint32. + ExtRand = 56 +) + +// The following gives names to various bit patterns used in opcode construction. + +const ( + opMaskCls uint16 = 0x7 + // opClsLoad masks + opMaskLoadDest = 0x01 + opMaskLoadWidth = 0x18 + opMaskLoadMode = 0xe0 + // opClsALU + opMaskOperandSrc = 0x08 + opMaskOperator = 0xf0 + // opClsJump + opMaskJumpConst = 0x0f + opMaskJumpCond = 0xf0 +) + +const ( + // +---------------+-----------------+---+---+---+ + // | AddrMode (3b) | LoadWidth (2b) | 0 | 0 | 0 | + // +---------------+-----------------+---+---+---+ + opClsLoadA uint16 = iota + // +---------------+-----------------+---+---+---+ + // | AddrMode (3b) | LoadWidth (2b) | 0 | 0 | 1 | + // +---------------+-----------------+---+---+---+ + opClsLoadX + // +---+---+---+---+---+---+---+---+ + // | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | + // +---+---+---+---+---+---+---+---+ + opClsStoreA + // +---+---+---+---+---+---+---+---+ + // | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | + // +---+---+---+---+---+---+---+---+ + opClsStoreX + // +---------------+-----------------+---+---+---+ + // | Operator (4b) | OperandSrc (1b) | 1 | 0 | 0 | + // +---------------+-----------------+---+---+---+ + opClsALU + // +-----------------------------+---+---+---+---+ + // | TestOperator (4b) | 0 | 1 | 0 | 1 | + // +-----------------------------+---+---+---+---+ + opClsJump + // +---+-------------------------+---+---+---+---+ + // | 0 | 0 | 0 | RetSrc (1b) | 0 | 1 | 1 | 0 | + // +---+-------------------------+---+---+---+---+ + opClsReturn + // +---+-------------------------+---+---+---+---+ + // | 0 | 0 | 0 | TXAorTAX (1b) | 0 | 1 | 1 | 1 | + // +---+-------------------------+---+---+---+---+ + opClsMisc +) + +const ( + opAddrModeImmediate uint16 = iota << 5 + opAddrModeAbsolute + opAddrModeIndirect + opAddrModeScratch + opAddrModePacketLen // actually an extension, not an addressing mode. + opAddrModeMemShift +) + +const ( + opLoadWidth4 uint16 = iota << 3 + opLoadWidth2 + opLoadWidth1 +) + +// Operator defined by ALUOp* + +const ( + opALUSrcConstant uint16 = iota << 3 + opALUSrcX +) + +const ( + opJumpAlways = iota << 4 + opJumpEqual + opJumpGT + opJumpGE + opJumpSet +) + +const ( + opRetSrcConstant uint16 = iota << 4 + opRetSrcA +) + +const ( + opMiscTAX = 0x00 + opMiscTXA = 0x80 +) diff --git a/vendor/golang.org/x/net/bpf/doc.go b/vendor/golang.org/x/net/bpf/doc.go new file mode 100644 index 0000000..6e82670 --- /dev/null +++ b/vendor/golang.org/x/net/bpf/doc.go @@ -0,0 +1,82 @@ +// 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 bpf implements marshaling and unmarshaling of programs for the +Berkeley Packet Filter virtual machine, and provides a Go implementation +of the virtual machine. + +BPF's main use is to specify a packet filter for network taps, so that +the kernel doesn't have to expensively copy every packet it sees to +userspace. However, it's been repurposed to other areas where running +user code in-kernel is needed. For example, Linux's seccomp uses BPF +to apply security policies to system calls. For simplicity, this +documentation refers only to packets, but other uses of BPF have their +own data payloads. + +BPF programs run in a restricted virtual machine. It has almost no +access to kernel functions, and while conditional branches are +allowed, they can only jump forwards, to guarantee that there are no +infinite loops. + +The virtual machine + +The BPF VM is an accumulator machine. Its main register, called +register A, is an implicit source and destination in all arithmetic +and logic operations. The machine also has 16 scratch registers for +temporary storage, and an indirection register (register X) for +indirect memory access. All registers are 32 bits wide. + +Each run of a BPF program is given one packet, which is placed in the +VM's read-only "main memory". LoadAbsolute and LoadIndirect +instructions can fetch up to 32 bits at a time into register A for +examination. + +The goal of a BPF program is to produce and return a verdict (uint32), +which tells the kernel what to do with the packet. In the context of +packet filtering, the returned value is the number of bytes of the +packet to forward to userspace, or 0 to ignore the packet. Other +contexts like seccomp define their own return values. + +In order to simplify programs, attempts to read past the end of the +packet terminate the program execution with a verdict of 0 (ignore +packet). This means that the vast majority of BPF programs don't need +to do any explicit bounds checking. + +In addition to the bytes of the packet, some BPF programs have access +to extensions, which are essentially calls to kernel utility +functions. Currently, the only extensions supported by this package +are the Linux packet filter extensions. + +Examples + +This packet filter selects all ARP packets. + + bpf.Assemble([]bpf.Instruction{ + // Load "EtherType" field from the ethernet header. + bpf.LoadAbsolute{Off: 12, Size: 2}, + // Skip over the next instruction if EtherType is not ARP. + bpf.JumpIf{Cond: bpf.JumpNotEqual, Val: 0x0806, SkipTrue: 1}, + // Verdict is "send up to 4k of the packet to userspace." + bpf.RetConstant{Val: 4096}, + // Verdict is "ignore packet." + bpf.RetConstant{Val: 0}, + }) + +This packet filter captures a random 1% sample of traffic. + + bpf.Assemble([]bpf.Instruction{ + // Get a 32-bit random number from the Linux kernel. + bpf.LoadExtension{Num: bpf.ExtRand}, + // 1% dice roll? + bpf.JumpIf{Cond: bpf.JumpLessThan, Val: 2^32/100, SkipFalse: 1}, + // Capture. + bpf.RetConstant{Val: 4096}, + // Ignore. + bpf.RetConstant{Val: 0}, + }) + +*/ +package bpf diff --git a/vendor/golang.org/x/net/bpf/instructions.go b/vendor/golang.org/x/net/bpf/instructions.go new file mode 100644 index 0000000..68ae6f5 --- /dev/null +++ b/vendor/golang.org/x/net/bpf/instructions.go @@ -0,0 +1,434 @@ +// 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 bpf + +import "fmt" + +// An Instruction is one instruction executed by the BPF virtual +// machine. +type Instruction interface { + // Assemble assembles the Instruction into a RawInstruction. + Assemble() (RawInstruction, error) +} + +// A RawInstruction is a raw BPF virtual machine instruction. +type RawInstruction struct { + // Operation to execute. + Op uint16 + // For conditional jump instructions, the number of instructions + // to skip if the condition is true/false. + Jt uint8 + Jf uint8 + // Constant parameter. The meaning depends on the Op. + K uint32 +} + +// Assemble implements the Instruction Assemble method. +func (ri RawInstruction) Assemble() (RawInstruction, error) { return ri, nil } + +// Disassemble parses ri into an Instruction and returns it. If ri is +// not recognized by this package, ri itself is returned. +func (ri RawInstruction) Disassemble() Instruction { + switch ri.Op & opMaskCls { + case opClsLoadA, opClsLoadX: + reg := Register(ri.Op & opMaskLoadDest) + sz := 0 + switch ri.Op & opMaskLoadWidth { + case opLoadWidth4: + sz = 4 + case opLoadWidth2: + sz = 2 + case opLoadWidth1: + sz = 1 + default: + return ri + } + switch ri.Op & opMaskLoadMode { + case opAddrModeImmediate: + if sz != 4 { + return ri + } + return LoadConstant{Dst: reg, Val: ri.K} + case opAddrModeScratch: + if sz != 4 || ri.K > 15 { + return ri + } + return LoadScratch{Dst: reg, N: int(ri.K)} + case opAddrModeAbsolute: + return LoadAbsolute{Size: sz, Off: ri.K} + case opAddrModeIndirect: + return LoadIndirect{Size: sz, Off: ri.K} + case opAddrModePacketLen: + if sz != 4 { + return ri + } + return LoadExtension{Num: ExtLen} + case opAddrModeMemShift: + return LoadMemShift{Off: ri.K} + default: + return ri + } + + case opClsStoreA: + if ri.Op != opClsStoreA || ri.K > 15 { + return ri + } + return StoreScratch{Src: RegA, N: int(ri.K)} + + case opClsStoreX: + if ri.Op != opClsStoreX || ri.K > 15 { + return ri + } + return StoreScratch{Src: RegX, N: int(ri.K)} + + case opClsALU: + switch op := ALUOp(ri.Op & opMaskOperator); op { + case ALUOpAdd, ALUOpSub, ALUOpMul, ALUOpDiv, ALUOpOr, ALUOpAnd, ALUOpShiftLeft, ALUOpShiftRight, ALUOpMod, ALUOpXor: + if ri.Op&opMaskOperandSrc != 0 { + return ALUOpX{Op: op} + } + return ALUOpConstant{Op: op, Val: ri.K} + case aluOpNeg: + return NegateA{} + default: + return ri + } + + case opClsJump: + if ri.Op&opMaskJumpConst != opClsJump { + return ri + } + switch ri.Op & opMaskJumpCond { + case opJumpAlways: + return Jump{Skip: ri.K} + case opJumpEqual: + return JumpIf{ + Cond: JumpEqual, + Val: ri.K, + SkipTrue: ri.Jt, + SkipFalse: ri.Jf, + } + case opJumpGT: + return JumpIf{ + Cond: JumpGreaterThan, + Val: ri.K, + SkipTrue: ri.Jt, + SkipFalse: ri.Jf, + } + case opJumpGE: + return JumpIf{ + Cond: JumpGreaterOrEqual, + Val: ri.K, + SkipTrue: ri.Jt, + SkipFalse: ri.Jf, + } + case opJumpSet: + return JumpIf{ + Cond: JumpBitsSet, + Val: ri.K, + SkipTrue: ri.Jt, + SkipFalse: ri.Jf, + } + default: + return ri + } + + case opClsReturn: + switch ri.Op { + case opClsReturn | opRetSrcA: + return RetA{} + case opClsReturn | opRetSrcConstant: + return RetConstant{Val: ri.K} + default: + return ri + } + + case opClsMisc: + switch ri.Op { + case opClsMisc | opMiscTAX: + return TAX{} + case opClsMisc | opMiscTXA: + return TXA{} + default: + return ri + } + + default: + panic("unreachable") // switch is exhaustive on the bit pattern + } +} + +// LoadConstant loads Val into register Dst. +type LoadConstant struct { + Dst Register + Val uint32 +} + +// Assemble implements the Instruction Assemble method. +func (a LoadConstant) Assemble() (RawInstruction, error) { + return assembleLoad(a.Dst, 4, opAddrModeImmediate, a.Val) +} + +// LoadScratch loads scratch[N] into register Dst. +type LoadScratch struct { + Dst Register + N int // 0-15 +} + +// Assemble implements the Instruction Assemble method. +func (a LoadScratch) Assemble() (RawInstruction, error) { + if a.N < 0 || a.N > 15 { + return RawInstruction{}, fmt.Errorf("invalid scratch slot %d", a.N) + } + return assembleLoad(a.Dst, 4, opAddrModeScratch, uint32(a.N)) +} + +// LoadAbsolute loads packet[Off:Off+Size] as an integer value into +// register A. +type LoadAbsolute struct { + Off uint32 + Size int // 1, 2 or 4 +} + +// Assemble implements the Instruction Assemble method. +func (a LoadAbsolute) Assemble() (RawInstruction, error) { + return assembleLoad(RegA, a.Size, opAddrModeAbsolute, a.Off) +} + +// LoadIndirect loads packet[X+Off:X+Off+Size] as an integer value +// into register A. +type LoadIndirect struct { + Off uint32 + Size int // 1, 2 or 4 +} + +// Assemble implements the Instruction Assemble method. +func (a LoadIndirect) Assemble() (RawInstruction, error) { + return assembleLoad(RegA, a.Size, opAddrModeIndirect, a.Off) +} + +// LoadMemShift multiplies the first 4 bits of the byte at packet[Off] +// by 4 and stores the result in register X. +// +// This instruction is mainly useful to load into X the length of an +// IPv4 packet header in a single instruction, rather than have to do +// the arithmetic on the header's first byte by hand. +type LoadMemShift struct { + Off uint32 +} + +// Assemble implements the Instruction Assemble method. +func (a LoadMemShift) Assemble() (RawInstruction, error) { + return assembleLoad(RegX, 1, opAddrModeMemShift, a.Off) +} + +// LoadExtension invokes a linux-specific extension and stores the +// result in register A. +type LoadExtension struct { + Num Extension +} + +// Assemble implements the Instruction Assemble method. +func (a LoadExtension) Assemble() (RawInstruction, error) { + if a.Num == ExtLen { + return assembleLoad(RegA, 4, opAddrModePacketLen, 0) + } + return assembleLoad(RegA, 4, opAddrModeAbsolute, uint32(-0x1000+a.Num)) +} + +// StoreScratch stores register Src into scratch[N]. +type StoreScratch struct { + Src Register + N int // 0-15 +} + +// Assemble implements the Instruction Assemble method. +func (a StoreScratch) Assemble() (RawInstruction, error) { + if a.N < 0 || a.N > 15 { + return RawInstruction{}, fmt.Errorf("invalid scratch slot %d", a.N) + } + var op uint16 + switch a.Src { + case RegA: + op = opClsStoreA + case RegX: + op = opClsStoreX + default: + return RawInstruction{}, fmt.Errorf("invalid source register %v", a.Src) + } + + return RawInstruction{ + Op: op, + K: uint32(a.N), + }, nil +} + +// ALUOpConstant executes A = A Val. +type ALUOpConstant struct { + Op ALUOp + Val uint32 +} + +// Assemble implements the Instruction Assemble method. +func (a ALUOpConstant) Assemble() (RawInstruction, error) { + return RawInstruction{ + Op: opClsALU | opALUSrcConstant | uint16(a.Op), + K: a.Val, + }, nil +} + +// ALUOpX executes A = A X +type ALUOpX struct { + Op ALUOp +} + +// Assemble implements the Instruction Assemble method. +func (a ALUOpX) Assemble() (RawInstruction, error) { + return RawInstruction{ + Op: opClsALU | opALUSrcX | uint16(a.Op), + }, nil +} + +// NegateA executes A = -A. +type NegateA struct{} + +// Assemble implements the Instruction Assemble method. +func (a NegateA) Assemble() (RawInstruction, error) { + return RawInstruction{ + Op: opClsALU | uint16(aluOpNeg), + }, nil +} + +// Jump skips the following Skip instructions in the program. +type Jump struct { + Skip uint32 +} + +// Assemble implements the Instruction Assemble method. +func (a Jump) Assemble() (RawInstruction, error) { + return RawInstruction{ + Op: opClsJump | opJumpAlways, + K: a.Skip, + }, nil +} + +// JumpIf skips the following Skip instructions in the program if A +// Val is true. +type JumpIf struct { + Cond JumpTest + Val uint32 + SkipTrue uint8 + SkipFalse uint8 +} + +// Assemble implements the Instruction Assemble method. +func (a JumpIf) Assemble() (RawInstruction, error) { + var ( + cond uint16 + flip bool + ) + switch a.Cond { + case JumpEqual: + cond = opJumpEqual + case JumpNotEqual: + cond, flip = opJumpEqual, true + case JumpGreaterThan: + cond = opJumpGT + case JumpLessThan: + cond, flip = opJumpGE, true + case JumpGreaterOrEqual: + cond = opJumpGE + case JumpLessOrEqual: + cond, flip = opJumpGT, true + case JumpBitsSet: + cond = opJumpSet + case JumpBitsNotSet: + cond, flip = opJumpSet, true + default: + return RawInstruction{}, fmt.Errorf("unknown JumpTest %v", a.Cond) + } + jt, jf := a.SkipTrue, a.SkipFalse + if flip { + jt, jf = jf, jt + } + return RawInstruction{ + Op: opClsJump | cond, + Jt: jt, + Jf: jf, + K: a.Val, + }, nil +} + +// RetA exits the BPF program, returning the value of register A. +type RetA struct{} + +// Assemble implements the Instruction Assemble method. +func (a RetA) Assemble() (RawInstruction, error) { + return RawInstruction{ + Op: opClsReturn | opRetSrcA, + }, nil +} + +// RetConstant exits the BPF program, returning a constant value. +type RetConstant struct { + Val uint32 +} + +// Assemble implements the Instruction Assemble method. +func (a RetConstant) Assemble() (RawInstruction, error) { + return RawInstruction{ + Op: opClsReturn | opRetSrcConstant, + K: a.Val, + }, nil +} + +// TXA copies the value of register X to register A. +type TXA struct{} + +// Assemble implements the Instruction Assemble method. +func (a TXA) Assemble() (RawInstruction, error) { + return RawInstruction{ + Op: opClsMisc | opMiscTXA, + }, nil +} + +// TAX copies the value of register A to register X. +type TAX struct{} + +// Assemble implements the Instruction Assemble method. +func (a TAX) Assemble() (RawInstruction, error) { + return RawInstruction{ + Op: opClsMisc | opMiscTAX, + }, nil +} + +func assembleLoad(dst Register, loadSize int, mode uint16, k uint32) (RawInstruction, error) { + var ( + cls uint16 + sz uint16 + ) + switch dst { + case RegA: + cls = opClsLoadA + case RegX: + cls = opClsLoadX + default: + return RawInstruction{}, fmt.Errorf("invalid target register %v", dst) + } + switch loadSize { + case 1: + sz = opLoadWidth1 + case 2: + sz = opLoadWidth2 + case 4: + sz = opLoadWidth4 + default: + return RawInstruction{}, fmt.Errorf("invalid load byte length %d", sz) + } + return RawInstruction{ + Op: cls | sz | mode, + K: k, + }, nil +} diff --git a/vendor/golang.org/x/net/bpf/vm.go b/vendor/golang.org/x/net/bpf/vm.go new file mode 100644 index 0000000..4c656f1 --- /dev/null +++ b/vendor/golang.org/x/net/bpf/vm.go @@ -0,0 +1,140 @@ +// 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 bpf + +import ( + "errors" + "fmt" +) + +// A VM is an emulated BPF virtual machine. +type VM struct { + filter []Instruction +} + +// NewVM returns a new VM using the input BPF program. +func NewVM(filter []Instruction) (*VM, error) { + if len(filter) == 0 { + return nil, errors.New("one or more Instructions must be specified") + } + + for i, ins := range filter { + check := len(filter) - (i + 1) + switch ins := ins.(type) { + // Check for out-of-bounds jumps in instructions + case Jump: + if check <= int(ins.Skip) { + return nil, fmt.Errorf("cannot jump %d instructions; jumping past program bounds", ins.Skip) + } + case JumpIf: + if check <= int(ins.SkipTrue) { + return nil, fmt.Errorf("cannot jump %d instructions in true case; jumping past program bounds", ins.SkipTrue) + } + if check <= int(ins.SkipFalse) { + return nil, fmt.Errorf("cannot jump %d instructions in false case; jumping past program bounds", ins.SkipFalse) + } + // Check for division or modulus by zero + case ALUOpConstant: + if ins.Val != 0 { + break + } + + switch ins.Op { + case ALUOpDiv, ALUOpMod: + return nil, errors.New("cannot divide by zero using ALUOpConstant") + } + // Check for unknown extensions + case LoadExtension: + switch ins.Num { + case ExtLen: + default: + return nil, fmt.Errorf("extension %d not implemented", ins.Num) + } + } + } + + // Make sure last instruction is a return instruction + switch filter[len(filter)-1].(type) { + case RetA, RetConstant: + default: + return nil, errors.New("BPF program must end with RetA or RetConstant") + } + + // Though our VM works using disassembled instructions, we + // attempt to assemble the input filter anyway to ensure it is compatible + // with an operating system VM. + _, err := Assemble(filter) + + return &VM{ + filter: filter, + }, err +} + +// Run runs the VM's BPF program against the input bytes. +// Run returns the number of bytes accepted by the BPF program, and any errors +// which occurred while processing the program. +func (v *VM) Run(in []byte) (int, error) { + var ( + // Registers of the virtual machine + regA uint32 + regX uint32 + regScratch [16]uint32 + + // OK is true if the program should continue processing the next + // instruction, or false if not, causing the loop to break + ok = true + ) + + // TODO(mdlayher): implement: + // - NegateA: + // - would require a change from uint32 registers to int32 + // registers + + // TODO(mdlayher): add interop tests that check signedness of ALU + // operations against kernel implementation, and make sure Go + // implementation matches behavior + + for i := 0; i < len(v.filter) && ok; i++ { + ins := v.filter[i] + + switch ins := ins.(type) { + case ALUOpConstant: + regA = aluOpConstant(ins, regA) + case ALUOpX: + regA, ok = aluOpX(ins, regA, regX) + case Jump: + i += int(ins.Skip) + case JumpIf: + jump := jumpIf(ins, regA) + i += jump + case LoadAbsolute: + regA, ok = loadAbsolute(ins, in) + case LoadConstant: + regA, regX = loadConstant(ins, regA, regX) + case LoadExtension: + regA = loadExtension(ins, in) + case LoadIndirect: + regA, ok = loadIndirect(ins, in, regX) + case LoadMemShift: + regX, ok = loadMemShift(ins, in) + case LoadScratch: + regA, regX = loadScratch(ins, regScratch, regA, regX) + case RetA: + return int(regA), nil + case RetConstant: + return int(ins.Val), nil + case StoreScratch: + regScratch = storeScratch(ins, regScratch, regA, regX) + case TAX: + regX = regA + case TXA: + regA = regX + default: + return 0, fmt.Errorf("unknown Instruction at index %d: %T", i, ins) + } + } + + return 0, nil +} diff --git a/vendor/golang.org/x/net/bpf/vm_instructions.go b/vendor/golang.org/x/net/bpf/vm_instructions.go new file mode 100644 index 0000000..516f946 --- /dev/null +++ b/vendor/golang.org/x/net/bpf/vm_instructions.go @@ -0,0 +1,174 @@ +// 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 bpf + +import ( + "encoding/binary" + "fmt" +) + +func aluOpConstant(ins ALUOpConstant, regA uint32) uint32 { + return aluOpCommon(ins.Op, regA, ins.Val) +} + +func aluOpX(ins ALUOpX, regA uint32, regX uint32) (uint32, bool) { + // Guard against division or modulus by zero by terminating + // the program, as the OS BPF VM does + if regX == 0 { + switch ins.Op { + case ALUOpDiv, ALUOpMod: + return 0, false + } + } + + return aluOpCommon(ins.Op, regA, regX), true +} + +func aluOpCommon(op ALUOp, regA uint32, value uint32) uint32 { + switch op { + case ALUOpAdd: + return regA + value + case ALUOpSub: + return regA - value + case ALUOpMul: + return regA * value + case ALUOpDiv: + // Division by zero not permitted by NewVM and aluOpX checks + return regA / value + case ALUOpOr: + return regA | value + case ALUOpAnd: + return regA & value + case ALUOpShiftLeft: + return regA << value + case ALUOpShiftRight: + return regA >> value + case ALUOpMod: + // Modulus by zero not permitted by NewVM and aluOpX checks + return regA % value + case ALUOpXor: + return regA ^ value + default: + return regA + } +} + +func jumpIf(ins JumpIf, value uint32) int { + var ok bool + inV := uint32(ins.Val) + + switch ins.Cond { + case JumpEqual: + ok = value == inV + case JumpNotEqual: + ok = value != inV + case JumpGreaterThan: + ok = value > inV + case JumpLessThan: + ok = value < inV + case JumpGreaterOrEqual: + ok = value >= inV + case JumpLessOrEqual: + ok = value <= inV + case JumpBitsSet: + ok = (value & inV) != 0 + case JumpBitsNotSet: + ok = (value & inV) == 0 + } + + if ok { + return int(ins.SkipTrue) + } + + return int(ins.SkipFalse) +} + +func loadAbsolute(ins LoadAbsolute, in []byte) (uint32, bool) { + offset := int(ins.Off) + size := int(ins.Size) + + return loadCommon(in, offset, size) +} + +func loadConstant(ins LoadConstant, regA uint32, regX uint32) (uint32, uint32) { + switch ins.Dst { + case RegA: + regA = ins.Val + case RegX: + regX = ins.Val + } + + return regA, regX +} + +func loadExtension(ins LoadExtension, in []byte) uint32 { + switch ins.Num { + case ExtLen: + return uint32(len(in)) + default: + panic(fmt.Sprintf("unimplemented extension: %d", ins.Num)) + } +} + +func loadIndirect(ins LoadIndirect, in []byte, regX uint32) (uint32, bool) { + offset := int(ins.Off) + int(regX) + size := int(ins.Size) + + return loadCommon(in, offset, size) +} + +func loadMemShift(ins LoadMemShift, in []byte) (uint32, bool) { + offset := int(ins.Off) + + if !inBounds(len(in), offset, 0) { + return 0, false + } + + // Mask off high 4 bits and multiply low 4 bits by 4 + return uint32(in[offset]&0x0f) * 4, true +} + +func inBounds(inLen int, offset int, size int) bool { + return offset+size <= inLen +} + +func loadCommon(in []byte, offset int, size int) (uint32, bool) { + if !inBounds(len(in), offset, size) { + return 0, false + } + + switch size { + case 1: + return uint32(in[offset]), true + case 2: + return uint32(binary.BigEndian.Uint16(in[offset : offset+size])), true + case 4: + return uint32(binary.BigEndian.Uint32(in[offset : offset+size])), true + default: + panic(fmt.Sprintf("invalid load size: %d", size)) + } +} + +func loadScratch(ins LoadScratch, regScratch [16]uint32, regA uint32, regX uint32) (uint32, uint32) { + switch ins.Dst { + case RegA: + regA = regScratch[ins.N] + case RegX: + regX = regScratch[ins.N] + } + + return regA, regX +} + +func storeScratch(ins StoreScratch, regScratch [16]uint32, regA uint32, regX uint32) [16]uint32 { + switch ins.Src { + case RegA: + regScratch[ins.N] = regA + case RegX: + regScratch[ins.N] = regX + } + + return regScratch +} diff --git a/vendor/golang.org/x/net/http2/.gitignore b/vendor/golang.org/x/net/http2/.gitignore new file mode 100644 index 0000000..190f122 --- /dev/null +++ b/vendor/golang.org/x/net/http2/.gitignore @@ -0,0 +1,2 @@ +*~ +h2i/h2i diff --git a/vendor/golang.org/x/net/http2/Dockerfile b/vendor/golang.org/x/net/http2/Dockerfile new file mode 100644 index 0000000..53fc525 --- /dev/null +++ b/vendor/golang.org/x/net/http2/Dockerfile @@ -0,0 +1,51 @@ +# +# This Dockerfile builds a recent curl with HTTP/2 client support, using +# a recent nghttp2 build. +# +# See the Makefile for how to tag it. If Docker and that image is found, the +# Go tests use this curl binary for integration tests. +# + +FROM ubuntu:trusty + +RUN apt-get update && \ + apt-get upgrade -y && \ + apt-get install -y git-core build-essential wget + +RUN apt-get install -y --no-install-recommends \ + autotools-dev libtool pkg-config zlib1g-dev \ + libcunit1-dev libssl-dev libxml2-dev libevent-dev \ + automake autoconf + +# The list of packages nghttp2 recommends for h2load: +RUN apt-get install -y --no-install-recommends make binutils \ + autoconf automake autotools-dev \ + libtool pkg-config zlib1g-dev libcunit1-dev libssl-dev libxml2-dev \ + libev-dev libevent-dev libjansson-dev libjemalloc-dev \ + cython python3.4-dev python-setuptools + +# Note: setting NGHTTP2_VER before the git clone, so an old git clone isn't cached: +ENV NGHTTP2_VER 895da9a +RUN cd /root && git clone https://github.com/tatsuhiro-t/nghttp2.git + +WORKDIR /root/nghttp2 +RUN git reset --hard $NGHTTP2_VER +RUN autoreconf -i +RUN automake +RUN autoconf +RUN ./configure +RUN make +RUN make install + +WORKDIR /root +RUN wget http://curl.haxx.se/download/curl-7.45.0.tar.gz +RUN tar -zxvf curl-7.45.0.tar.gz +WORKDIR /root/curl-7.45.0 +RUN ./configure --with-ssl --with-nghttp2=/usr/local +RUN make +RUN make install +RUN ldconfig + +CMD ["-h"] +ENTRYPOINT ["/usr/local/bin/curl"] + diff --git a/vendor/golang.org/x/net/http2/Makefile b/vendor/golang.org/x/net/http2/Makefile new file mode 100644 index 0000000..55fd826 --- /dev/null +++ b/vendor/golang.org/x/net/http2/Makefile @@ -0,0 +1,3 @@ +curlimage: + docker build -t gohttp2/curl . + diff --git a/vendor/golang.org/x/net/http2/README b/vendor/golang.org/x/net/http2/README new file mode 100644 index 0000000..360d5aa --- /dev/null +++ b/vendor/golang.org/x/net/http2/README @@ -0,0 +1,20 @@ +This is a work-in-progress HTTP/2 implementation for Go. + +It will eventually live in the Go standard library and won't require +any changes to your code to use. It will just be automatic. + +Status: + +* The server support is pretty good. A few things are missing + but are being worked on. +* The client work has just started but shares a lot of code + is coming along much quicker. + +Docs are at https://godoc.org/golang.org/x/net/http2 + +Demo test server at https://http2.golang.org/ + +Help & bug reports welcome! + +Contributing: https://golang.org/doc/contribute.html +Bugs: https://golang.org/issue/new?title=x/net/http2:+ diff --git a/vendor/golang.org/x/net/http2/client_conn_pool.go b/vendor/golang.org/x/net/http2/client_conn_pool.go new file mode 100644 index 0000000..b139412 --- /dev/null +++ b/vendor/golang.org/x/net/http2/client_conn_pool.go @@ -0,0 +1,256 @@ +// 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. + +// Transport code's client connection pooling. + +package http2 + +import ( + "crypto/tls" + "net/http" + "sync" +) + +// ClientConnPool manages a pool of HTTP/2 client connections. +type ClientConnPool interface { + GetClientConn(req *http.Request, addr string) (*ClientConn, error) + MarkDead(*ClientConn) +} + +// clientConnPoolIdleCloser is the interface implemented by ClientConnPool +// implementations which can close their idle connections. +type clientConnPoolIdleCloser interface { + ClientConnPool + closeIdleConnections() +} + +var ( + _ clientConnPoolIdleCloser = (*clientConnPool)(nil) + _ clientConnPoolIdleCloser = noDialClientConnPool{} +) + +// TODO: use singleflight for dialing and addConnCalls? +type clientConnPool struct { + t *Transport + + mu sync.Mutex // TODO: maybe switch to RWMutex + // TODO: add support for sharing conns based on cert names + // (e.g. share conn for googleapis.com and appspot.com) + conns map[string][]*ClientConn // key is host:port + dialing map[string]*dialCall // currently in-flight dials + keys map[*ClientConn][]string + addConnCalls map[string]*addConnCall // in-flight addConnIfNeede calls +} + +func (p *clientConnPool) GetClientConn(req *http.Request, addr string) (*ClientConn, error) { + return p.getClientConn(req, addr, dialOnMiss) +} + +const ( + dialOnMiss = true + noDialOnMiss = false +) + +func (p *clientConnPool) getClientConn(req *http.Request, addr string, dialOnMiss bool) (*ClientConn, error) { + if isConnectionCloseRequest(req) && dialOnMiss { + // It gets its own connection. + const singleUse = true + cc, err := p.t.dialClientConn(addr, singleUse) + if err != nil { + return nil, err + } + return cc, nil + } + p.mu.Lock() + for _, cc := range p.conns[addr] { + if cc.CanTakeNewRequest() { + p.mu.Unlock() + return cc, nil + } + } + if !dialOnMiss { + p.mu.Unlock() + return nil, ErrNoCachedConn + } + call := p.getStartDialLocked(addr) + p.mu.Unlock() + <-call.done + return call.res, call.err +} + +// dialCall is an in-flight Transport dial call to a host. +type dialCall struct { + p *clientConnPool + done chan struct{} // closed when done + res *ClientConn // valid after done is closed + err error // valid after done is closed +} + +// requires p.mu is held. +func (p *clientConnPool) getStartDialLocked(addr string) *dialCall { + if call, ok := p.dialing[addr]; ok { + // A dial is already in-flight. Don't start another. + return call + } + call := &dialCall{p: p, done: make(chan struct{})} + if p.dialing == nil { + p.dialing = make(map[string]*dialCall) + } + p.dialing[addr] = call + go call.dial(addr) + return call +} + +// run in its own goroutine. +func (c *dialCall) dial(addr string) { + const singleUse = false // shared conn + c.res, c.err = c.p.t.dialClientConn(addr, singleUse) + close(c.done) + + c.p.mu.Lock() + delete(c.p.dialing, addr) + if c.err == nil { + c.p.addConnLocked(addr, c.res) + } + c.p.mu.Unlock() +} + +// addConnIfNeeded makes a NewClientConn out of c if a connection for key doesn't +// already exist. It coalesces concurrent calls with the same key. +// This is used by the http1 Transport code when it creates a new connection. Because +// the http1 Transport doesn't de-dup TCP dials to outbound hosts (because it doesn't know +// the protocol), it can get into a situation where it has multiple TLS connections. +// This code decides which ones live or die. +// The return value used is whether c was used. +// c is never closed. +func (p *clientConnPool) addConnIfNeeded(key string, t *Transport, c *tls.Conn) (used bool, err error) { + p.mu.Lock() + for _, cc := range p.conns[key] { + if cc.CanTakeNewRequest() { + p.mu.Unlock() + return false, nil + } + } + call, dup := p.addConnCalls[key] + if !dup { + if p.addConnCalls == nil { + p.addConnCalls = make(map[string]*addConnCall) + } + call = &addConnCall{ + p: p, + done: make(chan struct{}), + } + p.addConnCalls[key] = call + go call.run(t, key, c) + } + p.mu.Unlock() + + <-call.done + if call.err != nil { + return false, call.err + } + return !dup, nil +} + +type addConnCall struct { + p *clientConnPool + done chan struct{} // closed when done + err error +} + +func (c *addConnCall) run(t *Transport, key string, tc *tls.Conn) { + cc, err := t.NewClientConn(tc) + + p := c.p + p.mu.Lock() + if err != nil { + c.err = err + } else { + p.addConnLocked(key, cc) + } + delete(p.addConnCalls, key) + p.mu.Unlock() + close(c.done) +} + +func (p *clientConnPool) addConn(key string, cc *ClientConn) { + p.mu.Lock() + p.addConnLocked(key, cc) + p.mu.Unlock() +} + +// p.mu must be held +func (p *clientConnPool) addConnLocked(key string, cc *ClientConn) { + for _, v := range p.conns[key] { + if v == cc { + return + } + } + if p.conns == nil { + p.conns = make(map[string][]*ClientConn) + } + if p.keys == nil { + p.keys = make(map[*ClientConn][]string) + } + p.conns[key] = append(p.conns[key], cc) + p.keys[cc] = append(p.keys[cc], key) +} + +func (p *clientConnPool) MarkDead(cc *ClientConn) { + p.mu.Lock() + defer p.mu.Unlock() + for _, key := range p.keys[cc] { + vv, ok := p.conns[key] + if !ok { + continue + } + newList := filterOutClientConn(vv, cc) + if len(newList) > 0 { + p.conns[key] = newList + } else { + delete(p.conns, key) + } + } + delete(p.keys, cc) +} + +func (p *clientConnPool) closeIdleConnections() { + p.mu.Lock() + defer p.mu.Unlock() + // TODO: don't close a cc if it was just added to the pool + // milliseconds ago and has never been used. There's currently + // a small race window with the HTTP/1 Transport's integration + // where it can add an idle conn just before using it, and + // somebody else can concurrently call CloseIdleConns and + // break some caller's RoundTrip. + for _, vv := range p.conns { + for _, cc := range vv { + cc.closeIfIdle() + } + } +} + +func filterOutClientConn(in []*ClientConn, exclude *ClientConn) []*ClientConn { + out := in[:0] + for _, v := range in { + if v != exclude { + out = append(out, v) + } + } + // If we filtered it out, zero out the last item to prevent + // the GC from seeing it. + if len(in) != len(out) { + in[len(in)-1] = nil + } + return out +} + +// noDialClientConnPool is an implementation of http2.ClientConnPool +// which never dials. We let the HTTP/1.1 client dial and use its TLS +// connection instead. +type noDialClientConnPool struct{ *clientConnPool } + +func (p noDialClientConnPool) GetClientConn(req *http.Request, addr string) (*ClientConn, error) { + return p.getClientConn(req, addr, noDialOnMiss) +} diff --git a/vendor/golang.org/x/net/http2/configure_transport.go b/vendor/golang.org/x/net/http2/configure_transport.go new file mode 100644 index 0000000..4f720f5 --- /dev/null +++ b/vendor/golang.org/x/net/http2/configure_transport.go @@ -0,0 +1,80 @@ +// 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.6 + +package http2 + +import ( + "crypto/tls" + "fmt" + "net/http" +) + +func configureTransport(t1 *http.Transport) (*Transport, error) { + connPool := new(clientConnPool) + t2 := &Transport{ + ConnPool: noDialClientConnPool{connPool}, + t1: t1, + } + connPool.t = t2 + if err := registerHTTPSProtocol(t1, noDialH2RoundTripper{t2}); err != nil { + return nil, err + } + if t1.TLSClientConfig == nil { + t1.TLSClientConfig = new(tls.Config) + } + if !strSliceContains(t1.TLSClientConfig.NextProtos, "h2") { + t1.TLSClientConfig.NextProtos = append([]string{"h2"}, t1.TLSClientConfig.NextProtos...) + } + if !strSliceContains(t1.TLSClientConfig.NextProtos, "http/1.1") { + t1.TLSClientConfig.NextProtos = append(t1.TLSClientConfig.NextProtos, "http/1.1") + } + upgradeFn := func(authority string, c *tls.Conn) http.RoundTripper { + addr := authorityAddr("https", authority) + if used, err := connPool.addConnIfNeeded(addr, t2, c); err != nil { + go c.Close() + return erringRoundTripper{err} + } else if !used { + // Turns out we don't need this c. + // For example, two goroutines made requests to the same host + // at the same time, both kicking off TCP dials. (since protocol + // was unknown) + go c.Close() + } + return t2 + } + if m := t1.TLSNextProto; len(m) == 0 { + t1.TLSNextProto = map[string]func(string, *tls.Conn) http.RoundTripper{ + "h2": upgradeFn, + } + } else { + m["h2"] = upgradeFn + } + return t2, nil +} + +// registerHTTPSProtocol calls Transport.RegisterProtocol but +// convering panics into errors. +func registerHTTPSProtocol(t *http.Transport, rt http.RoundTripper) (err error) { + defer func() { + if e := recover(); e != nil { + err = fmt.Errorf("%v", e) + } + }() + t.RegisterProtocol("https", rt) + return nil +} + +// noDialH2RoundTripper is a RoundTripper which only tries to complete the request +// if there's already has a cached connection to the host. +type noDialH2RoundTripper struct{ t *Transport } + +func (rt noDialH2RoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { + res, err := rt.t.RoundTrip(req) + if err == ErrNoCachedConn { + return nil, http.ErrSkipAltProtocol + } + return res, err +} diff --git a/vendor/golang.org/x/net/http2/errors.go b/vendor/golang.org/x/net/http2/errors.go new file mode 100644 index 0000000..20fd762 --- /dev/null +++ b/vendor/golang.org/x/net/http2/errors.go @@ -0,0 +1,130 @@ +// 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. + +package http2 + +import ( + "errors" + "fmt" +) + +// An ErrCode is an unsigned 32-bit error code as defined in the HTTP/2 spec. +type ErrCode uint32 + +const ( + ErrCodeNo ErrCode = 0x0 + ErrCodeProtocol ErrCode = 0x1 + ErrCodeInternal ErrCode = 0x2 + ErrCodeFlowControl ErrCode = 0x3 + ErrCodeSettingsTimeout ErrCode = 0x4 + ErrCodeStreamClosed ErrCode = 0x5 + ErrCodeFrameSize ErrCode = 0x6 + ErrCodeRefusedStream ErrCode = 0x7 + ErrCodeCancel ErrCode = 0x8 + ErrCodeCompression ErrCode = 0x9 + ErrCodeConnect ErrCode = 0xa + ErrCodeEnhanceYourCalm ErrCode = 0xb + ErrCodeInadequateSecurity ErrCode = 0xc + ErrCodeHTTP11Required ErrCode = 0xd +) + +var errCodeName = map[ErrCode]string{ + ErrCodeNo: "NO_ERROR", + ErrCodeProtocol: "PROTOCOL_ERROR", + ErrCodeInternal: "INTERNAL_ERROR", + ErrCodeFlowControl: "FLOW_CONTROL_ERROR", + ErrCodeSettingsTimeout: "SETTINGS_TIMEOUT", + ErrCodeStreamClosed: "STREAM_CLOSED", + ErrCodeFrameSize: "FRAME_SIZE_ERROR", + ErrCodeRefusedStream: "REFUSED_STREAM", + ErrCodeCancel: "CANCEL", + ErrCodeCompression: "COMPRESSION_ERROR", + ErrCodeConnect: "CONNECT_ERROR", + ErrCodeEnhanceYourCalm: "ENHANCE_YOUR_CALM", + ErrCodeInadequateSecurity: "INADEQUATE_SECURITY", + ErrCodeHTTP11Required: "HTTP_1_1_REQUIRED", +} + +func (e ErrCode) String() string { + if s, ok := errCodeName[e]; ok { + return s + } + return fmt.Sprintf("unknown error code 0x%x", uint32(e)) +} + +// ConnectionError is an error that results in the termination of the +// entire connection. +type ConnectionError ErrCode + +func (e ConnectionError) Error() string { return fmt.Sprintf("connection error: %s", ErrCode(e)) } + +// StreamError is an error that only affects one stream within an +// HTTP/2 connection. +type StreamError struct { + StreamID uint32 + Code ErrCode + Cause error // optional additional detail +} + +func streamError(id uint32, code ErrCode) StreamError { + return StreamError{StreamID: id, Code: code} +} + +func (e StreamError) Error() string { + if e.Cause != nil { + return fmt.Sprintf("stream error: stream ID %d; %v; %v", e.StreamID, e.Code, e.Cause) + } + return fmt.Sprintf("stream error: stream ID %d; %v", e.StreamID, e.Code) +} + +// 6.9.1 The Flow Control Window +// "If a sender receives a WINDOW_UPDATE that causes a flow control +// window to exceed this maximum it MUST terminate either the stream +// or the connection, as appropriate. For streams, [...]; for the +// connection, a GOAWAY frame with a FLOW_CONTROL_ERROR code." +type goAwayFlowError struct{} + +func (goAwayFlowError) Error() string { return "connection exceeded flow control window size" } + +// connErrorReason wraps a ConnectionError with an informative error about why it occurs. + +// Errors of this type are only returned by the frame parser functions +// and converted into ConnectionError(ErrCodeProtocol). +type connError struct { + Code ErrCode + Reason string +} + +func (e connError) Error() string { + return fmt.Sprintf("http2: connection error: %v: %v", e.Code, e.Reason) +} + +type pseudoHeaderError string + +func (e pseudoHeaderError) Error() string { + return fmt.Sprintf("invalid pseudo-header %q", string(e)) +} + +type duplicatePseudoHeaderError string + +func (e duplicatePseudoHeaderError) Error() string { + return fmt.Sprintf("duplicate pseudo-header %q", string(e)) +} + +type headerFieldNameError string + +func (e headerFieldNameError) Error() string { + return fmt.Sprintf("invalid header field name %q", string(e)) +} + +type headerFieldValueError string + +func (e headerFieldValueError) Error() string { + return fmt.Sprintf("invalid header field value %q", string(e)) +} + +var ( + errMixPseudoHeaderTypes = errors.New("mix of request and response pseudo headers") + errPseudoAfterRegular = errors.New("pseudo header field after regular") +) diff --git a/vendor/golang.org/x/net/http2/fixed_buffer.go b/vendor/golang.org/x/net/http2/fixed_buffer.go new file mode 100644 index 0000000..47da0f0 --- /dev/null +++ b/vendor/golang.org/x/net/http2/fixed_buffer.go @@ -0,0 +1,60 @@ +// 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. + +package http2 + +import ( + "errors" +) + +// fixedBuffer is an io.ReadWriter backed by a fixed size buffer. +// It never allocates, but moves old data as new data is written. +type fixedBuffer struct { + buf []byte + r, w int +} + +var ( + errReadEmpty = errors.New("read from empty fixedBuffer") + errWriteFull = errors.New("write on full fixedBuffer") +) + +// Read copies bytes from the buffer into p. +// It is an error to read when no data is available. +func (b *fixedBuffer) Read(p []byte) (n int, err error) { + if b.r == b.w { + return 0, errReadEmpty + } + n = copy(p, b.buf[b.r:b.w]) + b.r += n + if b.r == b.w { + b.r = 0 + b.w = 0 + } + return n, nil +} + +// Len returns the number of bytes of the unread portion of the buffer. +func (b *fixedBuffer) Len() int { + return b.w - b.r +} + +// Write copies bytes from p into the buffer. +// It is an error to write more data than the buffer can hold. +func (b *fixedBuffer) Write(p []byte) (n int, err error) { + // Slide existing data to beginning. + if b.r > 0 && len(p) > len(b.buf)-b.w { + copy(b.buf, b.buf[b.r:b.w]) + b.w -= b.r + b.r = 0 + } + + // Write new data. + n = copy(b.buf[b.w:], p) + b.w += n + if n < len(p) { + err = errWriteFull + } + return n, err +} diff --git a/vendor/golang.org/x/net/http2/flow.go b/vendor/golang.org/x/net/http2/flow.go new file mode 100644 index 0000000..957de25 --- /dev/null +++ b/vendor/golang.org/x/net/http2/flow.go @@ -0,0 +1,50 @@ +// 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. + +// Flow control + +package http2 + +// flow is the flow control window's size. +type flow struct { + // n is the number of DATA bytes we're allowed to send. + // A flow is kept both on a conn and a per-stream. + n int32 + + // conn points to the shared connection-level flow that is + // shared by all streams on that conn. It is nil for the flow + // that's on the conn directly. + conn *flow +} + +func (f *flow) setConnFlow(cf *flow) { f.conn = cf } + +func (f *flow) available() int32 { + n := f.n + if f.conn != nil && f.conn.n < n { + n = f.conn.n + } + return n +} + +func (f *flow) take(n int32) { + if n > f.available() { + panic("internal error: took too much") + } + f.n -= n + if f.conn != nil { + f.conn.n -= n + } +} + +// add adds n bytes (positive or negative) to the flow control window. +// It returns false if the sum would exceed 2^31-1. +func (f *flow) add(n int32) bool { + remain := (1<<31 - 1) - f.n + if n > remain { + return false + } + f.n += n + return true +} diff --git a/vendor/golang.org/x/net/http2/frame.go b/vendor/golang.org/x/net/http2/frame.go new file mode 100644 index 0000000..b0c79b0 --- /dev/null +++ b/vendor/golang.org/x/net/http2/frame.go @@ -0,0 +1,1539 @@ +// 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. + +package http2 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "io" + "log" + "strings" + "sync" + + "golang.org/x/net/http2/hpack" + "golang.org/x/net/lex/httplex" +) + +const frameHeaderLen = 9 + +var padZeros = make([]byte, 255) // zeros for padding + +// A FrameType is a registered frame type as defined in +// http://http2.github.io/http2-spec/#rfc.section.11.2 +type FrameType uint8 + +const ( + FrameData FrameType = 0x0 + FrameHeaders FrameType = 0x1 + FramePriority FrameType = 0x2 + FrameRSTStream FrameType = 0x3 + FrameSettings FrameType = 0x4 + FramePushPromise FrameType = 0x5 + FramePing FrameType = 0x6 + FrameGoAway FrameType = 0x7 + FrameWindowUpdate FrameType = 0x8 + FrameContinuation FrameType = 0x9 +) + +var frameName = map[FrameType]string{ + FrameData: "DATA", + FrameHeaders: "HEADERS", + FramePriority: "PRIORITY", + FrameRSTStream: "RST_STREAM", + FrameSettings: "SETTINGS", + FramePushPromise: "PUSH_PROMISE", + FramePing: "PING", + FrameGoAway: "GOAWAY", + FrameWindowUpdate: "WINDOW_UPDATE", + FrameContinuation: "CONTINUATION", +} + +func (t FrameType) String() string { + if s, ok := frameName[t]; ok { + return s + } + return fmt.Sprintf("UNKNOWN_FRAME_TYPE_%d", uint8(t)) +} + +// Flags is a bitmask of HTTP/2 flags. +// The meaning of flags varies depending on the frame type. +type Flags uint8 + +// Has reports whether f contains all (0 or more) flags in v. +func (f Flags) Has(v Flags) bool { + return (f & v) == v +} + +// Frame-specific FrameHeader flag bits. +const ( + // Data Frame + FlagDataEndStream Flags = 0x1 + FlagDataPadded Flags = 0x8 + + // Headers Frame + FlagHeadersEndStream Flags = 0x1 + FlagHeadersEndHeaders Flags = 0x4 + FlagHeadersPadded Flags = 0x8 + FlagHeadersPriority Flags = 0x20 + + // Settings Frame + FlagSettingsAck Flags = 0x1 + + // Ping Frame + FlagPingAck Flags = 0x1 + + // Continuation Frame + FlagContinuationEndHeaders Flags = 0x4 + + FlagPushPromiseEndHeaders Flags = 0x4 + FlagPushPromisePadded Flags = 0x8 +) + +var flagName = map[FrameType]map[Flags]string{ + FrameData: { + FlagDataEndStream: "END_STREAM", + FlagDataPadded: "PADDED", + }, + FrameHeaders: { + FlagHeadersEndStream: "END_STREAM", + FlagHeadersEndHeaders: "END_HEADERS", + FlagHeadersPadded: "PADDED", + FlagHeadersPriority: "PRIORITY", + }, + FrameSettings: { + FlagSettingsAck: "ACK", + }, + FramePing: { + FlagPingAck: "ACK", + }, + FrameContinuation: { + FlagContinuationEndHeaders: "END_HEADERS", + }, + FramePushPromise: { + FlagPushPromiseEndHeaders: "END_HEADERS", + FlagPushPromisePadded: "PADDED", + }, +} + +// a frameParser parses a frame given its FrameHeader and payload +// bytes. The length of payload will always equal fh.Length (which +// might be 0). +type frameParser func(fh FrameHeader, payload []byte) (Frame, error) + +var frameParsers = map[FrameType]frameParser{ + FrameData: parseDataFrame, + FrameHeaders: parseHeadersFrame, + FramePriority: parsePriorityFrame, + FrameRSTStream: parseRSTStreamFrame, + FrameSettings: parseSettingsFrame, + FramePushPromise: parsePushPromise, + FramePing: parsePingFrame, + FrameGoAway: parseGoAwayFrame, + FrameWindowUpdate: parseWindowUpdateFrame, + FrameContinuation: parseContinuationFrame, +} + +func typeFrameParser(t FrameType) frameParser { + if f := frameParsers[t]; f != nil { + return f + } + return parseUnknownFrame +} + +// A FrameHeader is the 9 byte header of all HTTP/2 frames. +// +// See http://http2.github.io/http2-spec/#FrameHeader +type FrameHeader struct { + valid bool // caller can access []byte fields in the Frame + + // Type is the 1 byte frame type. There are ten standard frame + // types, but extension frame types may be written by WriteRawFrame + // and will be returned by ReadFrame (as UnknownFrame). + Type FrameType + + // Flags are the 1 byte of 8 potential bit flags per frame. + // They are specific to the frame type. + Flags Flags + + // Length is the length of the frame, not including the 9 byte header. + // The maximum size is one byte less than 16MB (uint24), but only + // frames up to 16KB are allowed without peer agreement. + Length uint32 + + // StreamID is which stream this frame is for. Certain frames + // are not stream-specific, in which case this field is 0. + StreamID uint32 +} + +// Header returns h. It exists so FrameHeaders can be embedded in other +// specific frame types and implement the Frame interface. +func (h FrameHeader) Header() FrameHeader { return h } + +func (h FrameHeader) String() string { + var buf bytes.Buffer + buf.WriteString("[FrameHeader ") + h.writeDebug(&buf) + buf.WriteByte(']') + return buf.String() +} + +func (h FrameHeader) writeDebug(buf *bytes.Buffer) { + buf.WriteString(h.Type.String()) + if h.Flags != 0 { + buf.WriteString(" flags=") + set := 0 + for i := uint8(0); i < 8; i++ { + if h.Flags&(1< 1 { + buf.WriteByte('|') + } + name := flagName[h.Type][Flags(1<>24), + byte(streamID>>16), + byte(streamID>>8), + byte(streamID)) +} + +func (f *Framer) endWrite() error { + // Now that we know the final size, fill in the FrameHeader in + // the space previously reserved for it. Abuse append. + length := len(f.wbuf) - frameHeaderLen + if length >= (1 << 24) { + return ErrFrameTooLarge + } + _ = append(f.wbuf[:0], + byte(length>>16), + byte(length>>8), + byte(length)) + if logFrameWrites { + f.logWrite() + } + + n, err := f.w.Write(f.wbuf) + if err == nil && n != len(f.wbuf) { + err = io.ErrShortWrite + } + return err +} + +func (f *Framer) logWrite() { + if f.debugFramer == nil { + f.debugFramerBuf = new(bytes.Buffer) + f.debugFramer = NewFramer(nil, f.debugFramerBuf) + f.debugFramer.logReads = false // we log it ourselves, saying "wrote" below + // Let us read anything, even if we accidentally wrote it + // in the wrong order: + f.debugFramer.AllowIllegalReads = true + } + f.debugFramerBuf.Write(f.wbuf) + fr, err := f.debugFramer.ReadFrame() + if err != nil { + log.Printf("http2: Framer %p: failed to decode just-written frame", f) + return + } + log.Printf("http2: Framer %p: wrote %v", f, summarizeFrame(fr)) +} + +func (f *Framer) writeByte(v byte) { f.wbuf = append(f.wbuf, v) } +func (f *Framer) writeBytes(v []byte) { f.wbuf = append(f.wbuf, v...) } +func (f *Framer) writeUint16(v uint16) { f.wbuf = append(f.wbuf, byte(v>>8), byte(v)) } +func (f *Framer) writeUint32(v uint32) { + f.wbuf = append(f.wbuf, byte(v>>24), byte(v>>16), byte(v>>8), byte(v)) +} + +const ( + minMaxFrameSize = 1 << 14 + maxFrameSize = 1<<24 - 1 +) + +// NewFramer returns a Framer that writes frames to w and reads them from r. +func NewFramer(w io.Writer, r io.Reader) *Framer { + fr := &Framer{ + w: w, + r: r, + logReads: logFrameReads, + } + fr.getReadBuf = func(size uint32) []byte { + if cap(fr.readBuf) >= int(size) { + return fr.readBuf[:size] + } + fr.readBuf = make([]byte, size) + return fr.readBuf + } + fr.SetMaxReadFrameSize(maxFrameSize) + return fr +} + +// SetMaxReadFrameSize sets the maximum size of a frame +// that will be read by a subsequent call to ReadFrame. +// It is the caller's responsibility to advertise this +// limit with a SETTINGS frame. +func (fr *Framer) SetMaxReadFrameSize(v uint32) { + if v > maxFrameSize { + v = maxFrameSize + } + fr.maxReadSize = v +} + +// ErrorDetail returns a more detailed error of the last error +// returned by Framer.ReadFrame. For instance, if ReadFrame +// returns a StreamError with code PROTOCOL_ERROR, ErrorDetail +// will say exactly what was invalid. ErrorDetail is not guaranteed +// to return a non-nil value and like the rest of the http2 package, +// its return value is not protected by an API compatibility promise. +// ErrorDetail is reset after the next call to ReadFrame. +func (fr *Framer) ErrorDetail() error { + return fr.errDetail +} + +// ErrFrameTooLarge is returned from Framer.ReadFrame when the peer +// sends a frame that is larger than declared with SetMaxReadFrameSize. +var ErrFrameTooLarge = errors.New("http2: frame too large") + +// terminalReadFrameError reports whether err is an unrecoverable +// error from ReadFrame and no other frames should be read. +func terminalReadFrameError(err error) bool { + if _, ok := err.(StreamError); ok { + return false + } + return err != nil +} + +// ReadFrame reads a single frame. The returned Frame is only valid +// until the next call to ReadFrame. +// +// If the frame is larger than previously set with SetMaxReadFrameSize, the +// returned error is ErrFrameTooLarge. Other errors may be of type +// ConnectionError, StreamError, or anything else from the underlying +// reader. +func (fr *Framer) ReadFrame() (Frame, error) { + fr.errDetail = nil + if fr.lastFrame != nil { + fr.lastFrame.invalidate() + } + fh, err := readFrameHeader(fr.headerBuf[:], fr.r) + if err != nil { + return nil, err + } + if fh.Length > fr.maxReadSize { + return nil, ErrFrameTooLarge + } + payload := fr.getReadBuf(fh.Length) + if _, err := io.ReadFull(fr.r, payload); err != nil { + return nil, err + } + f, err := typeFrameParser(fh.Type)(fh, payload) + if err != nil { + if ce, ok := err.(connError); ok { + return nil, fr.connError(ce.Code, ce.Reason) + } + return nil, err + } + if err := fr.checkFrameOrder(f); err != nil { + return nil, err + } + if fr.logReads { + log.Printf("http2: Framer %p: read %v", fr, summarizeFrame(f)) + } + if fh.Type == FrameHeaders && fr.ReadMetaHeaders != nil { + return fr.readMetaFrame(f.(*HeadersFrame)) + } + return f, nil +} + +// connError returns ConnectionError(code) but first +// stashes away a public reason to the caller can optionally relay it +// to the peer before hanging up on them. This might help others debug +// their implementations. +func (fr *Framer) connError(code ErrCode, reason string) error { + fr.errDetail = errors.New(reason) + return ConnectionError(code) +} + +// checkFrameOrder reports an error if f is an invalid frame to return +// next from ReadFrame. Mostly it checks whether HEADERS and +// CONTINUATION frames are contiguous. +func (fr *Framer) checkFrameOrder(f Frame) error { + last := fr.lastFrame + fr.lastFrame = f + if fr.AllowIllegalReads { + return nil + } + + fh := f.Header() + if fr.lastHeaderStream != 0 { + if fh.Type != FrameContinuation { + return fr.connError(ErrCodeProtocol, + fmt.Sprintf("got %s for stream %d; expected CONTINUATION following %s for stream %d", + fh.Type, fh.StreamID, + last.Header().Type, fr.lastHeaderStream)) + } + if fh.StreamID != fr.lastHeaderStream { + return fr.connError(ErrCodeProtocol, + fmt.Sprintf("got CONTINUATION for stream %d; expected stream %d", + fh.StreamID, fr.lastHeaderStream)) + } + } else if fh.Type == FrameContinuation { + return fr.connError(ErrCodeProtocol, fmt.Sprintf("unexpected CONTINUATION for stream %d", fh.StreamID)) + } + + switch fh.Type { + case FrameHeaders, FrameContinuation: + if fh.Flags.Has(FlagHeadersEndHeaders) { + fr.lastHeaderStream = 0 + } else { + fr.lastHeaderStream = fh.StreamID + } + } + + return nil +} + +// A DataFrame conveys arbitrary, variable-length sequences of octets +// associated with a stream. +// See http://http2.github.io/http2-spec/#rfc.section.6.1 +type DataFrame struct { + FrameHeader + data []byte +} + +func (f *DataFrame) StreamEnded() bool { + return f.FrameHeader.Flags.Has(FlagDataEndStream) +} + +// Data returns the frame's data octets, not including any padding +// size byte or padding suffix bytes. +// The caller must not retain the returned memory past the next +// call to ReadFrame. +func (f *DataFrame) Data() []byte { + f.checkValid() + return f.data +} + +func parseDataFrame(fh FrameHeader, payload []byte) (Frame, error) { + if fh.StreamID == 0 { + // DATA frames MUST be associated with a stream. If a + // DATA frame is received whose stream identifier + // field is 0x0, the recipient MUST respond with a + // connection error (Section 5.4.1) of type + // PROTOCOL_ERROR. + return nil, connError{ErrCodeProtocol, "DATA frame with stream ID 0"} + } + f := &DataFrame{ + FrameHeader: fh, + } + var padSize byte + if fh.Flags.Has(FlagDataPadded) { + var err error + payload, padSize, err = readByte(payload) + if err != nil { + return nil, err + } + } + if int(padSize) > len(payload) { + // If the length of the padding is greater than the + // length of the frame payload, the recipient MUST + // treat this as a connection error. + // Filed: https://github.com/http2/http2-spec/issues/610 + return nil, connError{ErrCodeProtocol, "pad size larger than data payload"} + } + f.data = payload[:len(payload)-int(padSize)] + return f, nil +} + +var ( + errStreamID = errors.New("invalid stream ID") + errDepStreamID = errors.New("invalid dependent stream ID") + errPadLength = errors.New("pad length too large") +) + +func validStreamIDOrZero(streamID uint32) bool { + return streamID&(1<<31) == 0 +} + +func validStreamID(streamID uint32) bool { + return streamID != 0 && streamID&(1<<31) == 0 +} + +// WriteData writes a DATA frame. +// +// It will perform exactly one Write to the underlying Writer. +// It is the caller's responsibility not to violate the maximum frame size +// and to not call other Write methods concurrently. +func (f *Framer) WriteData(streamID uint32, endStream bool, data []byte) error { + return f.WriteDataPadded(streamID, endStream, data, nil) +} + +// WriteData writes a DATA frame with optional padding. +// +// If pad is nil, the padding bit is not sent. +// The length of pad must not exceed 255 bytes. +// +// It will perform exactly one Write to the underlying Writer. +// It is the caller's responsibility not to violate the maximum frame size +// and to not call other Write methods concurrently. +func (f *Framer) WriteDataPadded(streamID uint32, endStream bool, data, pad []byte) error { + if !validStreamID(streamID) && !f.AllowIllegalWrites { + return errStreamID + } + if len(pad) > 255 { + return errPadLength + } + var flags Flags + if endStream { + flags |= FlagDataEndStream + } + if pad != nil { + flags |= FlagDataPadded + } + f.startWrite(FrameData, flags, streamID) + if pad != nil { + f.wbuf = append(f.wbuf, byte(len(pad))) + } + f.wbuf = append(f.wbuf, data...) + f.wbuf = append(f.wbuf, pad...) + return f.endWrite() +} + +// A SettingsFrame conveys configuration parameters that affect how +// endpoints communicate, such as preferences and constraints on peer +// behavior. +// +// See http://http2.github.io/http2-spec/#SETTINGS +type SettingsFrame struct { + FrameHeader + p []byte +} + +func parseSettingsFrame(fh FrameHeader, p []byte) (Frame, error) { + if fh.Flags.Has(FlagSettingsAck) && fh.Length > 0 { + // When this (ACK 0x1) bit is set, the payload of the + // SETTINGS frame MUST be empty. Receipt of a + // SETTINGS frame with the ACK flag set and a length + // field value other than 0 MUST be treated as a + // connection error (Section 5.4.1) of type + // FRAME_SIZE_ERROR. + return nil, ConnectionError(ErrCodeFrameSize) + } + if fh.StreamID != 0 { + // SETTINGS frames always apply to a connection, + // never a single stream. The stream identifier for a + // SETTINGS frame MUST be zero (0x0). If an endpoint + // receives a SETTINGS frame whose stream identifier + // field is anything other than 0x0, the endpoint MUST + // respond with a connection error (Section 5.4.1) of + // type PROTOCOL_ERROR. + return nil, ConnectionError(ErrCodeProtocol) + } + if len(p)%6 != 0 { + // Expecting even number of 6 byte settings. + return nil, ConnectionError(ErrCodeFrameSize) + } + f := &SettingsFrame{FrameHeader: fh, p: p} + if v, ok := f.Value(SettingInitialWindowSize); ok && v > (1<<31)-1 { + // Values above the maximum flow control window size of 2^31 - 1 MUST + // be treated as a connection error (Section 5.4.1) of type + // FLOW_CONTROL_ERROR. + return nil, ConnectionError(ErrCodeFlowControl) + } + return f, nil +} + +func (f *SettingsFrame) IsAck() bool { + return f.FrameHeader.Flags.Has(FlagSettingsAck) +} + +func (f *SettingsFrame) Value(s SettingID) (v uint32, ok bool) { + f.checkValid() + buf := f.p + for len(buf) > 0 { + settingID := SettingID(binary.BigEndian.Uint16(buf[:2])) + if settingID == s { + return binary.BigEndian.Uint32(buf[2:6]), true + } + buf = buf[6:] + } + return 0, false +} + +// ForeachSetting runs fn for each setting. +// It stops and returns the first error. +func (f *SettingsFrame) ForeachSetting(fn func(Setting) error) error { + f.checkValid() + buf := f.p + for len(buf) > 0 { + if err := fn(Setting{ + SettingID(binary.BigEndian.Uint16(buf[:2])), + binary.BigEndian.Uint32(buf[2:6]), + }); err != nil { + return err + } + buf = buf[6:] + } + return nil +} + +// WriteSettings writes a SETTINGS frame with zero or more settings +// specified and the ACK bit not set. +// +// It will perform exactly one Write to the underlying Writer. +// It is the caller's responsibility to not call other Write methods concurrently. +func (f *Framer) WriteSettings(settings ...Setting) error { + f.startWrite(FrameSettings, 0, 0) + for _, s := range settings { + f.writeUint16(uint16(s.ID)) + f.writeUint32(s.Val) + } + return f.endWrite() +} + +// WriteSettingsAck writes an empty SETTINGS frame with the ACK bit set. +// +// It will perform exactly one Write to the underlying Writer. +// It is the caller's responsibility to not call other Write methods concurrently. +func (f *Framer) WriteSettingsAck() error { + f.startWrite(FrameSettings, FlagSettingsAck, 0) + return f.endWrite() +} + +// A PingFrame is a mechanism for measuring a minimal round trip time +// from the sender, as well as determining whether an idle connection +// is still functional. +// See http://http2.github.io/http2-spec/#rfc.section.6.7 +type PingFrame struct { + FrameHeader + Data [8]byte +} + +func (f *PingFrame) IsAck() bool { return f.Flags.Has(FlagPingAck) } + +func parsePingFrame(fh FrameHeader, payload []byte) (Frame, error) { + if len(payload) != 8 { + return nil, ConnectionError(ErrCodeFrameSize) + } + if fh.StreamID != 0 { + return nil, ConnectionError(ErrCodeProtocol) + } + f := &PingFrame{FrameHeader: fh} + copy(f.Data[:], payload) + return f, nil +} + +func (f *Framer) WritePing(ack bool, data [8]byte) error { + var flags Flags + if ack { + flags = FlagPingAck + } + f.startWrite(FramePing, flags, 0) + f.writeBytes(data[:]) + return f.endWrite() +} + +// A GoAwayFrame informs the remote peer to stop creating streams on this connection. +// See http://http2.github.io/http2-spec/#rfc.section.6.8 +type GoAwayFrame struct { + FrameHeader + LastStreamID uint32 + ErrCode ErrCode + debugData []byte +} + +// DebugData returns any debug data in the GOAWAY frame. Its contents +// are not defined. +// The caller must not retain the returned memory past the next +// call to ReadFrame. +func (f *GoAwayFrame) DebugData() []byte { + f.checkValid() + return f.debugData +} + +func parseGoAwayFrame(fh FrameHeader, p []byte) (Frame, error) { + if fh.StreamID != 0 { + return nil, ConnectionError(ErrCodeProtocol) + } + if len(p) < 8 { + return nil, ConnectionError(ErrCodeFrameSize) + } + return &GoAwayFrame{ + FrameHeader: fh, + LastStreamID: binary.BigEndian.Uint32(p[:4]) & (1<<31 - 1), + ErrCode: ErrCode(binary.BigEndian.Uint32(p[4:8])), + debugData: p[8:], + }, nil +} + +func (f *Framer) WriteGoAway(maxStreamID uint32, code ErrCode, debugData []byte) error { + f.startWrite(FrameGoAway, 0, 0) + f.writeUint32(maxStreamID & (1<<31 - 1)) + f.writeUint32(uint32(code)) + f.writeBytes(debugData) + return f.endWrite() +} + +// An UnknownFrame is the frame type returned when the frame type is unknown +// or no specific frame type parser exists. +type UnknownFrame struct { + FrameHeader + p []byte +} + +// Payload returns the frame's payload (after the header). It is not +// valid to call this method after a subsequent call to +// Framer.ReadFrame, nor is it valid to retain the returned slice. +// The memory is owned by the Framer and is invalidated when the next +// frame is read. +func (f *UnknownFrame) Payload() []byte { + f.checkValid() + return f.p +} + +func parseUnknownFrame(fh FrameHeader, p []byte) (Frame, error) { + return &UnknownFrame{fh, p}, nil +} + +// A WindowUpdateFrame is used to implement flow control. +// See http://http2.github.io/http2-spec/#rfc.section.6.9 +type WindowUpdateFrame struct { + FrameHeader + Increment uint32 // never read with high bit set +} + +func parseWindowUpdateFrame(fh FrameHeader, p []byte) (Frame, error) { + if len(p) != 4 { + return nil, ConnectionError(ErrCodeFrameSize) + } + inc := binary.BigEndian.Uint32(p[:4]) & 0x7fffffff // mask off high reserved bit + if inc == 0 { + // A receiver MUST treat the receipt of a + // WINDOW_UPDATE frame with an flow control window + // increment of 0 as a stream error (Section 5.4.2) of + // type PROTOCOL_ERROR; errors on the connection flow + // control window MUST be treated as a connection + // error (Section 5.4.1). + if fh.StreamID == 0 { + return nil, ConnectionError(ErrCodeProtocol) + } + return nil, streamError(fh.StreamID, ErrCodeProtocol) + } + return &WindowUpdateFrame{ + FrameHeader: fh, + Increment: inc, + }, nil +} + +// WriteWindowUpdate writes a WINDOW_UPDATE frame. +// The increment value must be between 1 and 2,147,483,647, inclusive. +// If the Stream ID is zero, the window update applies to the +// connection as a whole. +func (f *Framer) WriteWindowUpdate(streamID, incr uint32) error { + // "The legal range for the increment to the flow control window is 1 to 2^31-1 (2,147,483,647) octets." + if (incr < 1 || incr > 2147483647) && !f.AllowIllegalWrites { + return errors.New("illegal window increment value") + } + f.startWrite(FrameWindowUpdate, 0, streamID) + f.writeUint32(incr) + return f.endWrite() +} + +// A HeadersFrame is used to open a stream and additionally carries a +// header block fragment. +type HeadersFrame struct { + FrameHeader + + // Priority is set if FlagHeadersPriority is set in the FrameHeader. + Priority PriorityParam + + headerFragBuf []byte // not owned +} + +func (f *HeadersFrame) HeaderBlockFragment() []byte { + f.checkValid() + return f.headerFragBuf +} + +func (f *HeadersFrame) HeadersEnded() bool { + return f.FrameHeader.Flags.Has(FlagHeadersEndHeaders) +} + +func (f *HeadersFrame) StreamEnded() bool { + return f.FrameHeader.Flags.Has(FlagHeadersEndStream) +} + +func (f *HeadersFrame) HasPriority() bool { + return f.FrameHeader.Flags.Has(FlagHeadersPriority) +} + +func parseHeadersFrame(fh FrameHeader, p []byte) (_ Frame, err error) { + hf := &HeadersFrame{ + FrameHeader: fh, + } + if fh.StreamID == 0 { + // HEADERS frames MUST be associated with a stream. If a HEADERS frame + // is received whose stream identifier field is 0x0, the recipient MUST + // respond with a connection error (Section 5.4.1) of type + // PROTOCOL_ERROR. + return nil, connError{ErrCodeProtocol, "HEADERS frame with stream ID 0"} + } + var padLength uint8 + if fh.Flags.Has(FlagHeadersPadded) { + if p, padLength, err = readByte(p); err != nil { + return + } + } + if fh.Flags.Has(FlagHeadersPriority) { + var v uint32 + p, v, err = readUint32(p) + if err != nil { + return nil, err + } + hf.Priority.StreamDep = v & 0x7fffffff + hf.Priority.Exclusive = (v != hf.Priority.StreamDep) // high bit was set + p, hf.Priority.Weight, err = readByte(p) + if err != nil { + return nil, err + } + } + if len(p)-int(padLength) <= 0 { + return nil, streamError(fh.StreamID, ErrCodeProtocol) + } + hf.headerFragBuf = p[:len(p)-int(padLength)] + return hf, nil +} + +// HeadersFrameParam are the parameters for writing a HEADERS frame. +type HeadersFrameParam struct { + // StreamID is the required Stream ID to initiate. + StreamID uint32 + // BlockFragment is part (or all) of a Header Block. + BlockFragment []byte + + // EndStream indicates that the header block is the last that + // the endpoint will send for the identified stream. Setting + // this flag causes the stream to enter one of "half closed" + // states. + EndStream bool + + // EndHeaders indicates that this frame contains an entire + // header block and is not followed by any + // CONTINUATION frames. + EndHeaders bool + + // PadLength is the optional number of bytes of zeros to add + // to this frame. + PadLength uint8 + + // Priority, if non-zero, includes stream priority information + // in the HEADER frame. + Priority PriorityParam +} + +// WriteHeaders writes a single HEADERS frame. +// +// This is a low-level header writing method. Encoding headers and +// splitting them into any necessary CONTINUATION frames is handled +// elsewhere. +// +// It will perform exactly one Write to the underlying Writer. +// It is the caller's responsibility to not call other Write methods concurrently. +func (f *Framer) WriteHeaders(p HeadersFrameParam) error { + if !validStreamID(p.StreamID) && !f.AllowIllegalWrites { + return errStreamID + } + var flags Flags + if p.PadLength != 0 { + flags |= FlagHeadersPadded + } + if p.EndStream { + flags |= FlagHeadersEndStream + } + if p.EndHeaders { + flags |= FlagHeadersEndHeaders + } + if !p.Priority.IsZero() { + flags |= FlagHeadersPriority + } + f.startWrite(FrameHeaders, flags, p.StreamID) + if p.PadLength != 0 { + f.writeByte(p.PadLength) + } + if !p.Priority.IsZero() { + v := p.Priority.StreamDep + if !validStreamIDOrZero(v) && !f.AllowIllegalWrites { + return errDepStreamID + } + if p.Priority.Exclusive { + v |= 1 << 31 + } + f.writeUint32(v) + f.writeByte(p.Priority.Weight) + } + f.wbuf = append(f.wbuf, p.BlockFragment...) + f.wbuf = append(f.wbuf, padZeros[:p.PadLength]...) + return f.endWrite() +} + +// A PriorityFrame specifies the sender-advised priority of a stream. +// See http://http2.github.io/http2-spec/#rfc.section.6.3 +type PriorityFrame struct { + FrameHeader + PriorityParam +} + +// PriorityParam are the stream prioritzation parameters. +type PriorityParam struct { + // StreamDep is a 31-bit stream identifier for the + // stream that this stream depends on. Zero means no + // dependency. + StreamDep uint32 + + // Exclusive is whether the dependency is exclusive. + Exclusive bool + + // Weight is the stream's zero-indexed weight. It should be + // set together with StreamDep, or neither should be set. Per + // the spec, "Add one to the value to obtain a weight between + // 1 and 256." + Weight uint8 +} + +func (p PriorityParam) IsZero() bool { + return p == PriorityParam{} +} + +func parsePriorityFrame(fh FrameHeader, payload []byte) (Frame, error) { + if fh.StreamID == 0 { + return nil, connError{ErrCodeProtocol, "PRIORITY frame with stream ID 0"} + } + if len(payload) != 5 { + return nil, connError{ErrCodeFrameSize, fmt.Sprintf("PRIORITY frame payload size was %d; want 5", len(payload))} + } + v := binary.BigEndian.Uint32(payload[:4]) + streamID := v & 0x7fffffff // mask off high bit + return &PriorityFrame{ + FrameHeader: fh, + PriorityParam: PriorityParam{ + Weight: payload[4], + StreamDep: streamID, + Exclusive: streamID != v, // was high bit set? + }, + }, nil +} + +// WritePriority writes a PRIORITY frame. +// +// It will perform exactly one Write to the underlying Writer. +// It is the caller's responsibility to not call other Write methods concurrently. +func (f *Framer) WritePriority(streamID uint32, p PriorityParam) error { + if !validStreamID(streamID) && !f.AllowIllegalWrites { + return errStreamID + } + if !validStreamIDOrZero(p.StreamDep) { + return errDepStreamID + } + f.startWrite(FramePriority, 0, streamID) + v := p.StreamDep + if p.Exclusive { + v |= 1 << 31 + } + f.writeUint32(v) + f.writeByte(p.Weight) + return f.endWrite() +} + +// A RSTStreamFrame allows for abnormal termination of a stream. +// See http://http2.github.io/http2-spec/#rfc.section.6.4 +type RSTStreamFrame struct { + FrameHeader + ErrCode ErrCode +} + +func parseRSTStreamFrame(fh FrameHeader, p []byte) (Frame, error) { + if len(p) != 4 { + return nil, ConnectionError(ErrCodeFrameSize) + } + if fh.StreamID == 0 { + return nil, ConnectionError(ErrCodeProtocol) + } + return &RSTStreamFrame{fh, ErrCode(binary.BigEndian.Uint32(p[:4]))}, nil +} + +// WriteRSTStream writes a RST_STREAM frame. +// +// It will perform exactly one Write to the underlying Writer. +// It is the caller's responsibility to not call other Write methods concurrently. +func (f *Framer) WriteRSTStream(streamID uint32, code ErrCode) error { + if !validStreamID(streamID) && !f.AllowIllegalWrites { + return errStreamID + } + f.startWrite(FrameRSTStream, 0, streamID) + f.writeUint32(uint32(code)) + return f.endWrite() +} + +// A ContinuationFrame is used to continue a sequence of header block fragments. +// See http://http2.github.io/http2-spec/#rfc.section.6.10 +type ContinuationFrame struct { + FrameHeader + headerFragBuf []byte +} + +func parseContinuationFrame(fh FrameHeader, p []byte) (Frame, error) { + if fh.StreamID == 0 { + return nil, connError{ErrCodeProtocol, "CONTINUATION frame with stream ID 0"} + } + return &ContinuationFrame{fh, p}, nil +} + +func (f *ContinuationFrame) HeaderBlockFragment() []byte { + f.checkValid() + return f.headerFragBuf +} + +func (f *ContinuationFrame) HeadersEnded() bool { + return f.FrameHeader.Flags.Has(FlagContinuationEndHeaders) +} + +// WriteContinuation writes a CONTINUATION frame. +// +// It will perform exactly one Write to the underlying Writer. +// It is the caller's responsibility to not call other Write methods concurrently. +func (f *Framer) WriteContinuation(streamID uint32, endHeaders bool, headerBlockFragment []byte) error { + if !validStreamID(streamID) && !f.AllowIllegalWrites { + return errStreamID + } + var flags Flags + if endHeaders { + flags |= FlagContinuationEndHeaders + } + f.startWrite(FrameContinuation, flags, streamID) + f.wbuf = append(f.wbuf, headerBlockFragment...) + return f.endWrite() +} + +// A PushPromiseFrame is used to initiate a server stream. +// See http://http2.github.io/http2-spec/#rfc.section.6.6 +type PushPromiseFrame struct { + FrameHeader + PromiseID uint32 + headerFragBuf []byte // not owned +} + +func (f *PushPromiseFrame) HeaderBlockFragment() []byte { + f.checkValid() + return f.headerFragBuf +} + +func (f *PushPromiseFrame) HeadersEnded() bool { + return f.FrameHeader.Flags.Has(FlagPushPromiseEndHeaders) +} + +func parsePushPromise(fh FrameHeader, p []byte) (_ Frame, err error) { + pp := &PushPromiseFrame{ + FrameHeader: fh, + } + if pp.StreamID == 0 { + // PUSH_PROMISE frames MUST be associated with an existing, + // peer-initiated stream. The stream identifier of a + // PUSH_PROMISE frame indicates the stream it is associated + // with. If the stream identifier field specifies the value + // 0x0, a recipient MUST respond with a connection error + // (Section 5.4.1) of type PROTOCOL_ERROR. + return nil, ConnectionError(ErrCodeProtocol) + } + // The PUSH_PROMISE frame includes optional padding. + // Padding fields and flags are identical to those defined for DATA frames + var padLength uint8 + if fh.Flags.Has(FlagPushPromisePadded) { + if p, padLength, err = readByte(p); err != nil { + return + } + } + + p, pp.PromiseID, err = readUint32(p) + if err != nil { + return + } + pp.PromiseID = pp.PromiseID & (1<<31 - 1) + + if int(padLength) > len(p) { + // like the DATA frame, error out if padding is longer than the body. + return nil, ConnectionError(ErrCodeProtocol) + } + pp.headerFragBuf = p[:len(p)-int(padLength)] + return pp, nil +} + +// PushPromiseParam are the parameters for writing a PUSH_PROMISE frame. +type PushPromiseParam struct { + // StreamID is the required Stream ID to initiate. + StreamID uint32 + + // PromiseID is the required Stream ID which this + // Push Promises + PromiseID uint32 + + // BlockFragment is part (or all) of a Header Block. + BlockFragment []byte + + // EndHeaders indicates that this frame contains an entire + // header block and is not followed by any + // CONTINUATION frames. + EndHeaders bool + + // PadLength is the optional number of bytes of zeros to add + // to this frame. + PadLength uint8 +} + +// WritePushPromise writes a single PushPromise Frame. +// +// As with Header Frames, This is the low level call for writing +// individual frames. Continuation frames are handled elsewhere. +// +// It will perform exactly one Write to the underlying Writer. +// It is the caller's responsibility to not call other Write methods concurrently. +func (f *Framer) WritePushPromise(p PushPromiseParam) error { + if !validStreamID(p.StreamID) && !f.AllowIllegalWrites { + return errStreamID + } + var flags Flags + if p.PadLength != 0 { + flags |= FlagPushPromisePadded + } + if p.EndHeaders { + flags |= FlagPushPromiseEndHeaders + } + f.startWrite(FramePushPromise, flags, p.StreamID) + if p.PadLength != 0 { + f.writeByte(p.PadLength) + } + if !validStreamID(p.PromiseID) && !f.AllowIllegalWrites { + return errStreamID + } + f.writeUint32(p.PromiseID) + f.wbuf = append(f.wbuf, p.BlockFragment...) + f.wbuf = append(f.wbuf, padZeros[:p.PadLength]...) + return f.endWrite() +} + +// WriteRawFrame writes a raw frame. This can be used to write +// extension frames unknown to this package. +func (f *Framer) WriteRawFrame(t FrameType, flags Flags, streamID uint32, payload []byte) error { + f.startWrite(t, flags, streamID) + f.writeBytes(payload) + return f.endWrite() +} + +func readByte(p []byte) (remain []byte, b byte, err error) { + if len(p) == 0 { + return nil, 0, io.ErrUnexpectedEOF + } + return p[1:], p[0], nil +} + +func readUint32(p []byte) (remain []byte, v uint32, err error) { + if len(p) < 4 { + return nil, 0, io.ErrUnexpectedEOF + } + return p[4:], binary.BigEndian.Uint32(p[:4]), nil +} + +type streamEnder interface { + StreamEnded() bool +} + +type headersEnder interface { + HeadersEnded() bool +} + +type headersOrContinuation interface { + headersEnder + HeaderBlockFragment() []byte +} + +// A MetaHeadersFrame is the representation of one HEADERS frame and +// zero or more contiguous CONTINUATION frames and the decoding of +// their HPACK-encoded contents. +// +// This type of frame does not appear on the wire and is only returned +// by the Framer when Framer.ReadMetaHeaders is set. +type MetaHeadersFrame struct { + *HeadersFrame + + // Fields are the fields contained in the HEADERS and + // CONTINUATION frames. The underlying slice is owned by the + // Framer and must not be retained after the next call to + // ReadFrame. + // + // Fields are guaranteed to be in the correct http2 order and + // not have unknown pseudo header fields or invalid header + // field names or values. Required pseudo header fields may be + // missing, however. Use the MetaHeadersFrame.Pseudo accessor + // method access pseudo headers. + Fields []hpack.HeaderField + + // Truncated is whether the max header list size limit was hit + // and Fields is incomplete. The hpack decoder state is still + // valid, however. + Truncated bool +} + +// PseudoValue returns the given pseudo header field's value. +// The provided pseudo field should not contain the leading colon. +func (mh *MetaHeadersFrame) PseudoValue(pseudo string) string { + for _, hf := range mh.Fields { + if !hf.IsPseudo() { + return "" + } + if hf.Name[1:] == pseudo { + return hf.Value + } + } + return "" +} + +// RegularFields returns the regular (non-pseudo) header fields of mh. +// The caller does not own the returned slice. +func (mh *MetaHeadersFrame) RegularFields() []hpack.HeaderField { + for i, hf := range mh.Fields { + if !hf.IsPseudo() { + return mh.Fields[i:] + } + } + return nil +} + +// PseudoFields returns the pseudo header fields of mh. +// The caller does not own the returned slice. +func (mh *MetaHeadersFrame) PseudoFields() []hpack.HeaderField { + for i, hf := range mh.Fields { + if !hf.IsPseudo() { + return mh.Fields[:i] + } + } + return mh.Fields +} + +func (mh *MetaHeadersFrame) checkPseudos() error { + var isRequest, isResponse bool + pf := mh.PseudoFields() + for i, hf := range pf { + switch hf.Name { + case ":method", ":path", ":scheme", ":authority": + isRequest = true + case ":status": + isResponse = true + default: + return pseudoHeaderError(hf.Name) + } + // Check for duplicates. + // This would be a bad algorithm, but N is 4. + // And this doesn't allocate. + for _, hf2 := range pf[:i] { + if hf.Name == hf2.Name { + return duplicatePseudoHeaderError(hf.Name) + } + } + } + if isRequest && isResponse { + return errMixPseudoHeaderTypes + } + return nil +} + +func (fr *Framer) maxHeaderStringLen() int { + v := fr.maxHeaderListSize() + if uint32(int(v)) == v { + return int(v) + } + // They had a crazy big number for MaxHeaderBytes anyway, + // so give them unlimited header lengths: + return 0 +} + +// readMetaFrame returns 0 or more CONTINUATION frames from fr and +// merge them into into the provided hf and returns a MetaHeadersFrame +// with the decoded hpack values. +func (fr *Framer) readMetaFrame(hf *HeadersFrame) (*MetaHeadersFrame, error) { + if fr.AllowIllegalReads { + return nil, errors.New("illegal use of AllowIllegalReads with ReadMetaHeaders") + } + mh := &MetaHeadersFrame{ + HeadersFrame: hf, + } + var remainSize = fr.maxHeaderListSize() + var sawRegular bool + + var invalid error // pseudo header field errors + hdec := fr.ReadMetaHeaders + hdec.SetEmitEnabled(true) + hdec.SetMaxStringLength(fr.maxHeaderStringLen()) + hdec.SetEmitFunc(func(hf hpack.HeaderField) { + if VerboseLogs && logFrameReads { + log.Printf("http2: decoded hpack field %+v", hf) + } + if !httplex.ValidHeaderFieldValue(hf.Value) { + invalid = headerFieldValueError(hf.Value) + } + isPseudo := strings.HasPrefix(hf.Name, ":") + if isPseudo { + if sawRegular { + invalid = errPseudoAfterRegular + } + } else { + sawRegular = true + if !validWireHeaderFieldName(hf.Name) { + invalid = headerFieldNameError(hf.Name) + } + } + + if invalid != nil { + hdec.SetEmitEnabled(false) + return + } + + size := hf.Size() + if size > remainSize { + hdec.SetEmitEnabled(false) + mh.Truncated = true + return + } + remainSize -= size + + mh.Fields = append(mh.Fields, hf) + }) + // Lose reference to MetaHeadersFrame: + defer hdec.SetEmitFunc(func(hf hpack.HeaderField) {}) + + var hc headersOrContinuation = hf + for { + frag := hc.HeaderBlockFragment() + if _, err := hdec.Write(frag); err != nil { + return nil, ConnectionError(ErrCodeCompression) + } + + if hc.HeadersEnded() { + break + } + if f, err := fr.ReadFrame(); err != nil { + return nil, err + } else { + hc = f.(*ContinuationFrame) // guaranteed by checkFrameOrder + } + } + + mh.HeadersFrame.headerFragBuf = nil + mh.HeadersFrame.invalidate() + + if err := hdec.Close(); err != nil { + return nil, ConnectionError(ErrCodeCompression) + } + if invalid != nil { + fr.errDetail = invalid + if VerboseLogs { + log.Printf("http2: invalid header: %v", invalid) + } + return nil, StreamError{mh.StreamID, ErrCodeProtocol, invalid} + } + if err := mh.checkPseudos(); err != nil { + fr.errDetail = err + if VerboseLogs { + log.Printf("http2: invalid pseudo headers: %v", err) + } + return nil, StreamError{mh.StreamID, ErrCodeProtocol, err} + } + return mh, nil +} + +func summarizeFrame(f Frame) string { + var buf bytes.Buffer + f.Header().writeDebug(&buf) + switch f := f.(type) { + case *SettingsFrame: + n := 0 + f.ForeachSetting(func(s Setting) error { + n++ + if n == 1 { + buf.WriteString(", settings:") + } + fmt.Fprintf(&buf, " %v=%v,", s.ID, s.Val) + return nil + }) + if n > 0 { + buf.Truncate(buf.Len() - 1) // remove trailing comma + } + case *DataFrame: + data := f.Data() + const max = 256 + if len(data) > max { + data = data[:max] + } + fmt.Fprintf(&buf, " data=%q", data) + if len(f.Data()) > max { + fmt.Fprintf(&buf, " (%d bytes omitted)", len(f.Data())-max) + } + case *WindowUpdateFrame: + if f.StreamID == 0 { + buf.WriteString(" (conn)") + } + fmt.Fprintf(&buf, " incr=%v", f.Increment) + case *PingFrame: + fmt.Fprintf(&buf, " ping=%q", f.Data[:]) + case *GoAwayFrame: + fmt.Fprintf(&buf, " LastStreamID=%v ErrCode=%v Debug=%q", + f.LastStreamID, f.ErrCode, f.debugData) + case *RSTStreamFrame: + fmt.Fprintf(&buf, " ErrCode=%v", f.ErrCode) + } + return buf.String() +} diff --git a/vendor/golang.org/x/net/http2/go16.go b/vendor/golang.org/x/net/http2/go16.go new file mode 100644 index 0000000..2b72855 --- /dev/null +++ b/vendor/golang.org/x/net/http2/go16.go @@ -0,0 +1,43 @@ +// 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 go1.6 + +package http2 + +import ( + "crypto/tls" + "net/http" + "time" +) + +func transportExpectContinueTimeout(t1 *http.Transport) time.Duration { + return t1.ExpectContinueTimeout +} + +// isBadCipher reports whether the cipher is blacklisted by the HTTP/2 spec. +func isBadCipher(cipher uint16) bool { + switch cipher { + case tls.TLS_RSA_WITH_RC4_128_SHA, + tls.TLS_RSA_WITH_3DES_EDE_CBC_SHA, + tls.TLS_RSA_WITH_AES_128_CBC_SHA, + tls.TLS_RSA_WITH_AES_256_CBC_SHA, + tls.TLS_RSA_WITH_AES_128_GCM_SHA256, + tls.TLS_RSA_WITH_AES_256_GCM_SHA384, + tls.TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, + tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, + tls.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, + tls.TLS_ECDHE_RSA_WITH_RC4_128_SHA, + tls.TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, + tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, + tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA: + // Reject cipher suites from Appendix A. + // "This list includes those cipher suites that do not + // offer an ephemeral key exchange and those that are + // based on the TLS null, stream or block cipher type" + return true + default: + return false + } +} diff --git a/vendor/golang.org/x/net/http2/go17.go b/vendor/golang.org/x/net/http2/go17.go new file mode 100644 index 0000000..47b7fae --- /dev/null +++ b/vendor/golang.org/x/net/http2/go17.go @@ -0,0 +1,106 @@ +// 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 go1.7 + +package http2 + +import ( + "context" + "net" + "net/http" + "net/http/httptrace" + "time" +) + +type contextContext interface { + context.Context +} + +func serverConnBaseContext(c net.Conn, opts *ServeConnOpts) (ctx contextContext, cancel func()) { + ctx, cancel = context.WithCancel(context.Background()) + ctx = context.WithValue(ctx, http.LocalAddrContextKey, c.LocalAddr()) + if hs := opts.baseConfig(); hs != nil { + ctx = context.WithValue(ctx, http.ServerContextKey, hs) + } + return +} + +func contextWithCancel(ctx contextContext) (_ contextContext, cancel func()) { + return context.WithCancel(ctx) +} + +func requestWithContext(req *http.Request, ctx contextContext) *http.Request { + return req.WithContext(ctx) +} + +type clientTrace httptrace.ClientTrace + +func reqContext(r *http.Request) context.Context { return r.Context() } + +func (t *Transport) idleConnTimeout() time.Duration { + if t.t1 != nil { + return t.t1.IdleConnTimeout + } + return 0 +} + +func setResponseUncompressed(res *http.Response) { res.Uncompressed = true } + +func traceGotConn(req *http.Request, cc *ClientConn) { + trace := httptrace.ContextClientTrace(req.Context()) + if trace == nil || trace.GotConn == nil { + return + } + ci := httptrace.GotConnInfo{Conn: cc.tconn} + cc.mu.Lock() + ci.Reused = cc.nextStreamID > 1 + ci.WasIdle = len(cc.streams) == 0 && ci.Reused + if ci.WasIdle && !cc.lastActive.IsZero() { + ci.IdleTime = time.Now().Sub(cc.lastActive) + } + cc.mu.Unlock() + + trace.GotConn(ci) +} + +func traceWroteHeaders(trace *clientTrace) { + if trace != nil && trace.WroteHeaders != nil { + trace.WroteHeaders() + } +} + +func traceGot100Continue(trace *clientTrace) { + if trace != nil && trace.Got100Continue != nil { + trace.Got100Continue() + } +} + +func traceWait100Continue(trace *clientTrace) { + if trace != nil && trace.Wait100Continue != nil { + trace.Wait100Continue() + } +} + +func traceWroteRequest(trace *clientTrace, err error) { + if trace != nil && trace.WroteRequest != nil { + trace.WroteRequest(httptrace.WroteRequestInfo{Err: err}) + } +} + +func traceFirstResponseByte(trace *clientTrace) { + if trace != nil && trace.GotFirstResponseByte != nil { + trace.GotFirstResponseByte() + } +} + +func requestTrace(req *http.Request) *clientTrace { + trace := httptrace.ContextClientTrace(req.Context()) + return (*clientTrace)(trace) +} + +// Ping sends a PING frame to the server and waits for the ack. +func (cc *ClientConn) Ping(ctx context.Context) error { + return cc.ping(ctx) +} diff --git a/vendor/golang.org/x/net/http2/go17_not18.go b/vendor/golang.org/x/net/http2/go17_not18.go new file mode 100644 index 0000000..b4c52ec --- /dev/null +++ b/vendor/golang.org/x/net/http2/go17_not18.go @@ -0,0 +1,36 @@ +// 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 go1.7,!go1.8 + +package http2 + +import "crypto/tls" + +// temporary copy of Go 1.7's private tls.Config.clone: +func cloneTLSConfig(c *tls.Config) *tls.Config { + return &tls.Config{ + Rand: c.Rand, + Time: c.Time, + Certificates: c.Certificates, + NameToCertificate: c.NameToCertificate, + GetCertificate: c.GetCertificate, + RootCAs: c.RootCAs, + NextProtos: c.NextProtos, + ServerName: c.ServerName, + ClientAuth: c.ClientAuth, + ClientCAs: c.ClientCAs, + InsecureSkipVerify: c.InsecureSkipVerify, + CipherSuites: c.CipherSuites, + PreferServerCipherSuites: c.PreferServerCipherSuites, + SessionTicketsDisabled: c.SessionTicketsDisabled, + SessionTicketKey: c.SessionTicketKey, + ClientSessionCache: c.ClientSessionCache, + MinVersion: c.MinVersion, + MaxVersion: c.MaxVersion, + CurvePreferences: c.CurvePreferences, + DynamicRecordSizingDisabled: c.DynamicRecordSizingDisabled, + Renegotiation: c.Renegotiation, + } +} diff --git a/vendor/golang.org/x/net/http2/go18.go b/vendor/golang.org/x/net/http2/go18.go new file mode 100644 index 0000000..c2ae167 --- /dev/null +++ b/vendor/golang.org/x/net/http2/go18.go @@ -0,0 +1,11 @@ +// 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.8 + +package http2 + +import "crypto/tls" + +func cloneTLSConfig(c *tls.Config) *tls.Config { return c.Clone() } diff --git a/vendor/golang.org/x/net/http2/gotrack.go b/vendor/golang.org/x/net/http2/gotrack.go new file mode 100644 index 0000000..9933c9f --- /dev/null +++ b/vendor/golang.org/x/net/http2/gotrack.go @@ -0,0 +1,170 @@ +// 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. + +// Defensive debug-only utility to track that functions run on the +// goroutine that they're supposed to. + +package http2 + +import ( + "bytes" + "errors" + "fmt" + "os" + "runtime" + "strconv" + "sync" +) + +var DebugGoroutines = os.Getenv("DEBUG_HTTP2_GOROUTINES") == "1" + +type goroutineLock uint64 + +func newGoroutineLock() goroutineLock { + if !DebugGoroutines { + return 0 + } + return goroutineLock(curGoroutineID()) +} + +func (g goroutineLock) check() { + if !DebugGoroutines { + return + } + if curGoroutineID() != uint64(g) { + panic("running on the wrong goroutine") + } +} + +func (g goroutineLock) checkNotOn() { + if !DebugGoroutines { + return + } + if curGoroutineID() == uint64(g) { + panic("running on the wrong goroutine") + } +} + +var goroutineSpace = []byte("goroutine ") + +func curGoroutineID() uint64 { + bp := littleBuf.Get().(*[]byte) + defer littleBuf.Put(bp) + b := *bp + b = b[:runtime.Stack(b, false)] + // Parse the 4707 out of "goroutine 4707 [" + b = bytes.TrimPrefix(b, goroutineSpace) + i := bytes.IndexByte(b, ' ') + if i < 0 { + panic(fmt.Sprintf("No space found in %q", b)) + } + b = b[:i] + n, err := parseUintBytes(b, 10, 64) + if err != nil { + panic(fmt.Sprintf("Failed to parse goroutine ID out of %q: %v", b, err)) + } + return n +} + +var littleBuf = sync.Pool{ + New: func() interface{} { + buf := make([]byte, 64) + return &buf + }, +} + +// parseUintBytes is like strconv.ParseUint, but using a []byte. +func parseUintBytes(s []byte, base int, bitSize int) (n uint64, err error) { + var cutoff, maxVal uint64 + + if bitSize == 0 { + bitSize = int(strconv.IntSize) + } + + s0 := s + switch { + case len(s) < 1: + err = strconv.ErrSyntax + goto Error + + case 2 <= base && base <= 36: + // valid base; nothing to do + + case base == 0: + // Look for octal, hex prefix. + switch { + case s[0] == '0' && len(s) > 1 && (s[1] == 'x' || s[1] == 'X'): + base = 16 + s = s[2:] + if len(s) < 1 { + err = strconv.ErrSyntax + goto Error + } + case s[0] == '0': + base = 8 + default: + base = 10 + } + + default: + err = errors.New("invalid base " + strconv.Itoa(base)) + goto Error + } + + n = 0 + cutoff = cutoff64(base) + maxVal = 1<= base { + n = 0 + err = strconv.ErrSyntax + goto Error + } + + if n >= cutoff { + // n*base overflows + n = 1<<64 - 1 + err = strconv.ErrRange + goto Error + } + n *= uint64(base) + + n1 := n + uint64(v) + if n1 < n || n1 > maxVal { + // n+v overflows + n = 1<<64 - 1 + err = strconv.ErrRange + goto Error + } + n = n1 + } + + return n, nil + +Error: + return n, &strconv.NumError{Func: "ParseUint", Num: string(s0), Err: err} +} + +// Return the first number n such that n*base >= 1<<64. +func cutoff64(base int) uint64 { + if base < 2 { + return 0 + } + return (1<<64-1)/uint64(base) + 1 +} diff --git a/vendor/golang.org/x/net/http2/headermap.go b/vendor/golang.org/x/net/http2/headermap.go new file mode 100644 index 0000000..c2805f6 --- /dev/null +++ b/vendor/golang.org/x/net/http2/headermap.go @@ -0,0 +1,78 @@ +// 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. + +package http2 + +import ( + "net/http" + "strings" +) + +var ( + commonLowerHeader = map[string]string{} // Go-Canonical-Case -> lower-case + commonCanonHeader = map[string]string{} // lower-case -> Go-Canonical-Case +) + +func init() { + for _, v := range []string{ + "accept", + "accept-charset", + "accept-encoding", + "accept-language", + "accept-ranges", + "age", + "access-control-allow-origin", + "allow", + "authorization", + "cache-control", + "content-disposition", + "content-encoding", + "content-language", + "content-length", + "content-location", + "content-range", + "content-type", + "cookie", + "date", + "etag", + "expect", + "expires", + "from", + "host", + "if-match", + "if-modified-since", + "if-none-match", + "if-unmodified-since", + "last-modified", + "link", + "location", + "max-forwards", + "proxy-authenticate", + "proxy-authorization", + "range", + "referer", + "refresh", + "retry-after", + "server", + "set-cookie", + "strict-transport-security", + "trailer", + "transfer-encoding", + "user-agent", + "vary", + "via", + "www-authenticate", + } { + chk := http.CanonicalHeaderKey(v) + commonLowerHeader[chk] = v + commonCanonHeader[v] = chk + } +} + +func lowerHeader(v string) string { + if s, ok := commonLowerHeader[v]; ok { + return s + } + return strings.ToLower(v) +} diff --git a/vendor/golang.org/x/net/http2/hpack/encode.go b/vendor/golang.org/x/net/http2/hpack/encode.go new file mode 100644 index 0000000..f9bb033 --- /dev/null +++ b/vendor/golang.org/x/net/http2/hpack/encode.go @@ -0,0 +1,251 @@ +// 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. + +package hpack + +import ( + "io" +) + +const ( + uint32Max = ^uint32(0) + initialHeaderTableSize = 4096 +) + +type Encoder struct { + dynTab dynamicTable + // minSize is the minimum table size set by + // SetMaxDynamicTableSize after the previous Header Table Size + // Update. + minSize uint32 + // maxSizeLimit is the maximum table size this encoder + // supports. This will protect the encoder from too large + // size. + maxSizeLimit uint32 + // tableSizeUpdate indicates whether "Header Table Size + // Update" is required. + tableSizeUpdate bool + w io.Writer + buf []byte +} + +// NewEncoder returns a new Encoder which performs HPACK encoding. An +// encoded data is written to w. +func NewEncoder(w io.Writer) *Encoder { + e := &Encoder{ + minSize: uint32Max, + maxSizeLimit: initialHeaderTableSize, + tableSizeUpdate: false, + w: w, + } + e.dynTab.setMaxSize(initialHeaderTableSize) + return e +} + +// WriteField encodes f into a single Write to e's underlying Writer. +// This function may also produce bytes for "Header Table Size Update" +// if necessary. If produced, it is done before encoding f. +func (e *Encoder) WriteField(f HeaderField) error { + e.buf = e.buf[:0] + + if e.tableSizeUpdate { + e.tableSizeUpdate = false + if e.minSize < e.dynTab.maxSize { + e.buf = appendTableSize(e.buf, e.minSize) + } + e.minSize = uint32Max + e.buf = appendTableSize(e.buf, e.dynTab.maxSize) + } + + idx, nameValueMatch := e.searchTable(f) + if nameValueMatch { + e.buf = appendIndexed(e.buf, idx) + } else { + indexing := e.shouldIndex(f) + if indexing { + e.dynTab.add(f) + } + + if idx == 0 { + e.buf = appendNewName(e.buf, f, indexing) + } else { + e.buf = appendIndexedName(e.buf, f, idx, indexing) + } + } + n, err := e.w.Write(e.buf) + if err == nil && n != len(e.buf) { + err = io.ErrShortWrite + } + return err +} + +// searchTable searches f in both stable and dynamic header tables. +// The static header table is searched first. Only when there is no +// exact match for both name and value, the dynamic header table is +// then searched. If there is no match, i is 0. If both name and value +// match, i is the matched index and nameValueMatch becomes true. If +// only name matches, i points to that index and nameValueMatch +// becomes false. +func (e *Encoder) searchTable(f HeaderField) (i uint64, nameValueMatch bool) { + for idx, hf := range staticTable { + if !constantTimeStringCompare(hf.Name, f.Name) { + continue + } + if i == 0 { + i = uint64(idx + 1) + } + if f.Sensitive { + continue + } + if !constantTimeStringCompare(hf.Value, f.Value) { + continue + } + i = uint64(idx + 1) + nameValueMatch = true + return + } + + j, nameValueMatch := e.dynTab.search(f) + if nameValueMatch || (i == 0 && j != 0) { + i = j + uint64(len(staticTable)) + } + return +} + +// SetMaxDynamicTableSize changes the dynamic header table size to v. +// The actual size is bounded by the value passed to +// SetMaxDynamicTableSizeLimit. +func (e *Encoder) SetMaxDynamicTableSize(v uint32) { + if v > e.maxSizeLimit { + v = e.maxSizeLimit + } + if v < e.minSize { + e.minSize = v + } + e.tableSizeUpdate = true + e.dynTab.setMaxSize(v) +} + +// SetMaxDynamicTableSizeLimit changes the maximum value that can be +// specified in SetMaxDynamicTableSize to v. By default, it is set to +// 4096, which is the same size of the default dynamic header table +// size described in HPACK specification. If the current maximum +// dynamic header table size is strictly greater than v, "Header Table +// Size Update" will be done in the next WriteField call and the +// maximum dynamic header table size is truncated to v. +func (e *Encoder) SetMaxDynamicTableSizeLimit(v uint32) { + e.maxSizeLimit = v + if e.dynTab.maxSize > v { + e.tableSizeUpdate = true + e.dynTab.setMaxSize(v) + } +} + +// shouldIndex reports whether f should be indexed. +func (e *Encoder) shouldIndex(f HeaderField) bool { + return !f.Sensitive && f.Size() <= e.dynTab.maxSize +} + +// appendIndexed appends index i, as encoded in "Indexed Header Field" +// representation, to dst and returns the extended buffer. +func appendIndexed(dst []byte, i uint64) []byte { + first := len(dst) + dst = appendVarInt(dst, 7, i) + dst[first] |= 0x80 + return dst +} + +// appendNewName appends f, as encoded in one of "Literal Header field +// - New Name" representation variants, to dst and returns the +// extended buffer. +// +// If f.Sensitive is true, "Never Indexed" representation is used. If +// f.Sensitive is false and indexing is true, "Inremental Indexing" +// representation is used. +func appendNewName(dst []byte, f HeaderField, indexing bool) []byte { + dst = append(dst, encodeTypeByte(indexing, f.Sensitive)) + dst = appendHpackString(dst, f.Name) + return appendHpackString(dst, f.Value) +} + +// appendIndexedName appends f and index i referring indexed name +// entry, as encoded in one of "Literal Header field - Indexed Name" +// representation variants, to dst and returns the extended buffer. +// +// If f.Sensitive is true, "Never Indexed" representation is used. If +// f.Sensitive is false and indexing is true, "Incremental Indexing" +// representation is used. +func appendIndexedName(dst []byte, f HeaderField, i uint64, indexing bool) []byte { + first := len(dst) + var n byte + if indexing { + n = 6 + } else { + n = 4 + } + dst = appendVarInt(dst, n, i) + dst[first] |= encodeTypeByte(indexing, f.Sensitive) + return appendHpackString(dst, f.Value) +} + +// appendTableSize appends v, as encoded in "Header Table Size Update" +// representation, to dst and returns the extended buffer. +func appendTableSize(dst []byte, v uint32) []byte { + first := len(dst) + dst = appendVarInt(dst, 5, uint64(v)) + dst[first] |= 0x20 + return dst +} + +// appendVarInt appends i, as encoded in variable integer form using n +// bit prefix, to dst and returns the extended buffer. +// +// See +// http://http2.github.io/http2-spec/compression.html#integer.representation +func appendVarInt(dst []byte, n byte, i uint64) []byte { + k := uint64((1 << n) - 1) + if i < k { + return append(dst, byte(i)) + } + dst = append(dst, byte(k)) + i -= k + for ; i >= 128; i >>= 7 { + dst = append(dst, byte(0x80|(i&0x7f))) + } + return append(dst, byte(i)) +} + +// appendHpackString appends s, as encoded in "String Literal" +// representation, to dst and returns the the extended buffer. +// +// s will be encoded in Huffman codes only when it produces strictly +// shorter byte string. +func appendHpackString(dst []byte, s string) []byte { + huffmanLength := HuffmanEncodeLength(s) + if huffmanLength < uint64(len(s)) { + first := len(dst) + dst = appendVarInt(dst, 7, huffmanLength) + dst = AppendHuffmanString(dst, s) + dst[first] |= 0x80 + } else { + dst = appendVarInt(dst, 7, uint64(len(s))) + dst = append(dst, s...) + } + return dst +} + +// encodeTypeByte returns type byte. If sensitive is true, type byte +// for "Never Indexed" representation is returned. If sensitive is +// false and indexing is true, type byte for "Incremental Indexing" +// representation is returned. Otherwise, type byte for "Without +// Indexing" is returned. +func encodeTypeByte(indexing, sensitive bool) byte { + if sensitive { + return 0x10 + } + if indexing { + return 0x40 + } + return 0 +} diff --git a/vendor/golang.org/x/net/http2/hpack/hpack.go b/vendor/golang.org/x/net/http2/hpack/hpack.go new file mode 100644 index 0000000..135b9f6 --- /dev/null +++ b/vendor/golang.org/x/net/http2/hpack/hpack.go @@ -0,0 +1,542 @@ +// 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. + +// Package hpack implements HPACK, a compression format for +// efficiently representing HTTP header fields in the context of HTTP/2. +// +// See http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-09 +package hpack + +import ( + "bytes" + "errors" + "fmt" +) + +// A DecodingError is something the spec defines as a decoding error. +type DecodingError struct { + Err error +} + +func (de DecodingError) Error() string { + return fmt.Sprintf("decoding error: %v", de.Err) +} + +// An InvalidIndexError is returned when an encoder references a table +// entry before the static table or after the end of the dynamic table. +type InvalidIndexError int + +func (e InvalidIndexError) Error() string { + return fmt.Sprintf("invalid indexed representation index %d", int(e)) +} + +// A HeaderField is a name-value pair. Both the name and value are +// treated as opaque sequences of octets. +type HeaderField struct { + Name, Value string + + // Sensitive means that this header field should never be + // indexed. + Sensitive bool +} + +// IsPseudo reports whether the header field is an http2 pseudo header. +// That is, it reports whether it starts with a colon. +// It is not otherwise guaranteed to be a valid pseudo header field, +// though. +func (hf HeaderField) IsPseudo() bool { + return len(hf.Name) != 0 && hf.Name[0] == ':' +} + +func (hf HeaderField) String() string { + var suffix string + if hf.Sensitive { + suffix = " (sensitive)" + } + return fmt.Sprintf("header field %q = %q%s", hf.Name, hf.Value, suffix) +} + +// Size returns the size of an entry per RFC 7541 section 4.1. +func (hf HeaderField) Size() uint32 { + // http://http2.github.io/http2-spec/compression.html#rfc.section.4.1 + // "The size of the dynamic table is the sum of the size of + // its entries. The size of an entry is the sum of its name's + // length in octets (as defined in Section 5.2), its value's + // length in octets (see Section 5.2), plus 32. The size of + // an entry is calculated using the length of the name and + // value without any Huffman encoding applied." + + // This can overflow if somebody makes a large HeaderField + // Name and/or Value by hand, but we don't care, because that + // won't happen on the wire because the encoding doesn't allow + // it. + return uint32(len(hf.Name) + len(hf.Value) + 32) +} + +// A Decoder is the decoding context for incremental processing of +// header blocks. +type Decoder struct { + dynTab dynamicTable + emit func(f HeaderField) + + emitEnabled bool // whether calls to emit are enabled + maxStrLen int // 0 means unlimited + + // buf is the unparsed buffer. It's only written to + // saveBuf if it was truncated in the middle of a header + // block. Because it's usually not owned, we can only + // process it under Write. + buf []byte // not owned; only valid during Write + + // saveBuf is previous data passed to Write which we weren't able + // to fully parse before. Unlike buf, we own this data. + saveBuf bytes.Buffer +} + +// NewDecoder returns a new decoder with the provided maximum dynamic +// table size. The emitFunc will be called for each valid field +// parsed, in the same goroutine as calls to Write, before Write returns. +func NewDecoder(maxDynamicTableSize uint32, emitFunc func(f HeaderField)) *Decoder { + d := &Decoder{ + emit: emitFunc, + emitEnabled: true, + } + d.dynTab.allowedMaxSize = maxDynamicTableSize + d.dynTab.setMaxSize(maxDynamicTableSize) + return d +} + +// ErrStringLength is returned by Decoder.Write when the max string length +// (as configured by Decoder.SetMaxStringLength) would be violated. +var ErrStringLength = errors.New("hpack: string too long") + +// SetMaxStringLength sets the maximum size of a HeaderField name or +// value string. If a string exceeds this length (even after any +// decompression), Write will return ErrStringLength. +// A value of 0 means unlimited and is the default from NewDecoder. +func (d *Decoder) SetMaxStringLength(n int) { + d.maxStrLen = n +} + +// SetEmitFunc changes the callback used when new header fields +// are decoded. +// It must be non-nil. It does not affect EmitEnabled. +func (d *Decoder) SetEmitFunc(emitFunc func(f HeaderField)) { + d.emit = emitFunc +} + +// SetEmitEnabled controls whether the emitFunc provided to NewDecoder +// should be called. The default is true. +// +// This facility exists to let servers enforce MAX_HEADER_LIST_SIZE +// while still decoding and keeping in-sync with decoder state, but +// without doing unnecessary decompression or generating unnecessary +// garbage for header fields past the limit. +func (d *Decoder) SetEmitEnabled(v bool) { d.emitEnabled = v } + +// EmitEnabled reports whether calls to the emitFunc provided to NewDecoder +// are currently enabled. The default is true. +func (d *Decoder) EmitEnabled() bool { return d.emitEnabled } + +// TODO: add method *Decoder.Reset(maxSize, emitFunc) to let callers re-use Decoders and their +// underlying buffers for garbage reasons. + +func (d *Decoder) SetMaxDynamicTableSize(v uint32) { + d.dynTab.setMaxSize(v) +} + +// SetAllowedMaxDynamicTableSize sets the upper bound that the encoded +// stream (via dynamic table size updates) may set the maximum size +// to. +func (d *Decoder) SetAllowedMaxDynamicTableSize(v uint32) { + d.dynTab.allowedMaxSize = v +} + +type dynamicTable struct { + // ents is the FIFO described at + // http://http2.github.io/http2-spec/compression.html#rfc.section.2.3.2 + // The newest (low index) is append at the end, and items are + // evicted from the front. + ents []HeaderField + size uint32 + maxSize uint32 // current maxSize + allowedMaxSize uint32 // maxSize may go up to this, inclusive +} + +func (dt *dynamicTable) setMaxSize(v uint32) { + dt.maxSize = v + dt.evict() +} + +// TODO: change dynamicTable to be a struct with a slice and a size int field, +// per http://http2.github.io/http2-spec/compression.html#rfc.section.4.1: +// +// +// Then make add increment the size. maybe the max size should move from Decoder to +// dynamicTable and add should return an ok bool if there was enough space. +// +// Later we'll need a remove operation on dynamicTable. + +func (dt *dynamicTable) add(f HeaderField) { + dt.ents = append(dt.ents, f) + dt.size += f.Size() + dt.evict() +} + +// If we're too big, evict old stuff (front of the slice) +func (dt *dynamicTable) evict() { + base := dt.ents // keep base pointer of slice + for dt.size > dt.maxSize { + dt.size -= dt.ents[0].Size() + dt.ents = dt.ents[1:] + } + + // Shift slice contents down if we evicted things. + if len(dt.ents) != len(base) { + copy(base, dt.ents) + dt.ents = base[:len(dt.ents)] + } +} + +// constantTimeStringCompare compares string a and b in a constant +// time manner. +func constantTimeStringCompare(a, b string) bool { + if len(a) != len(b) { + return false + } + + c := byte(0) + + for i := 0; i < len(a); i++ { + c |= a[i] ^ b[i] + } + + return c == 0 +} + +// Search searches f in the table. The return value i is 0 if there is +// no name match. If there is name match or name/value match, i is the +// index of that entry (1-based). If both name and value match, +// nameValueMatch becomes true. +func (dt *dynamicTable) search(f HeaderField) (i uint64, nameValueMatch bool) { + l := len(dt.ents) + for j := l - 1; j >= 0; j-- { + ent := dt.ents[j] + if !constantTimeStringCompare(ent.Name, f.Name) { + continue + } + if i == 0 { + i = uint64(l - j) + } + if f.Sensitive { + continue + } + if !constantTimeStringCompare(ent.Value, f.Value) { + continue + } + i = uint64(l - j) + nameValueMatch = true + return + } + return +} + +func (d *Decoder) maxTableIndex() int { + return len(d.dynTab.ents) + len(staticTable) +} + +func (d *Decoder) at(i uint64) (hf HeaderField, ok bool) { + if i < 1 { + return + } + if i > uint64(d.maxTableIndex()) { + return + } + if i <= uint64(len(staticTable)) { + return staticTable[i-1], true + } + dents := d.dynTab.ents + return dents[len(dents)-(int(i)-len(staticTable))], true +} + +// Decode decodes an entire block. +// +// TODO: remove this method and make it incremental later? This is +// easier for debugging now. +func (d *Decoder) DecodeFull(p []byte) ([]HeaderField, error) { + var hf []HeaderField + saveFunc := d.emit + defer func() { d.emit = saveFunc }() + d.emit = func(f HeaderField) { hf = append(hf, f) } + if _, err := d.Write(p); err != nil { + return nil, err + } + if err := d.Close(); err != nil { + return nil, err + } + return hf, nil +} + +func (d *Decoder) Close() error { + if d.saveBuf.Len() > 0 { + d.saveBuf.Reset() + return DecodingError{errors.New("truncated headers")} + } + return nil +} + +func (d *Decoder) Write(p []byte) (n int, err error) { + if len(p) == 0 { + // Prevent state machine CPU attacks (making us redo + // work up to the point of finding out we don't have + // enough data) + return + } + // Only copy the data if we have to. Optimistically assume + // that p will contain a complete header block. + if d.saveBuf.Len() == 0 { + d.buf = p + } else { + d.saveBuf.Write(p) + d.buf = d.saveBuf.Bytes() + d.saveBuf.Reset() + } + + for len(d.buf) > 0 { + err = d.parseHeaderFieldRepr() + if err == errNeedMore { + // Extra paranoia, making sure saveBuf won't + // get too large. All the varint and string + // reading code earlier should already catch + // overlong things and return ErrStringLength, + // but keep this as a last resort. + const varIntOverhead = 8 // conservative + if d.maxStrLen != 0 && int64(len(d.buf)) > 2*(int64(d.maxStrLen)+varIntOverhead) { + return 0, ErrStringLength + } + d.saveBuf.Write(d.buf) + return len(p), nil + } + if err != nil { + break + } + } + return len(p), err +} + +// errNeedMore is an internal sentinel error value that means the +// buffer is truncated and we need to read more data before we can +// continue parsing. +var errNeedMore = errors.New("need more data") + +type indexType int + +const ( + indexedTrue indexType = iota + indexedFalse + indexedNever +) + +func (v indexType) indexed() bool { return v == indexedTrue } +func (v indexType) sensitive() bool { return v == indexedNever } + +// returns errNeedMore if there isn't enough data available. +// any other error is fatal. +// consumes d.buf iff it returns nil. +// precondition: must be called with len(d.buf) > 0 +func (d *Decoder) parseHeaderFieldRepr() error { + b := d.buf[0] + switch { + case b&128 != 0: + // Indexed representation. + // High bit set? + // http://http2.github.io/http2-spec/compression.html#rfc.section.6.1 + return d.parseFieldIndexed() + case b&192 == 64: + // 6.2.1 Literal Header Field with Incremental Indexing + // 0b10xxxxxx: top two bits are 10 + // http://http2.github.io/http2-spec/compression.html#rfc.section.6.2.1 + return d.parseFieldLiteral(6, indexedTrue) + case b&240 == 0: + // 6.2.2 Literal Header Field without Indexing + // 0b0000xxxx: top four bits are 0000 + // http://http2.github.io/http2-spec/compression.html#rfc.section.6.2.2 + return d.parseFieldLiteral(4, indexedFalse) + case b&240 == 16: + // 6.2.3 Literal Header Field never Indexed + // 0b0001xxxx: top four bits are 0001 + // http://http2.github.io/http2-spec/compression.html#rfc.section.6.2.3 + return d.parseFieldLiteral(4, indexedNever) + case b&224 == 32: + // 6.3 Dynamic Table Size Update + // Top three bits are '001'. + // http://http2.github.io/http2-spec/compression.html#rfc.section.6.3 + return d.parseDynamicTableSizeUpdate() + } + + return DecodingError{errors.New("invalid encoding")} +} + +// (same invariants and behavior as parseHeaderFieldRepr) +func (d *Decoder) parseFieldIndexed() error { + buf := d.buf + idx, buf, err := readVarInt(7, buf) + if err != nil { + return err + } + hf, ok := d.at(idx) + if !ok { + return DecodingError{InvalidIndexError(idx)} + } + d.buf = buf + return d.callEmit(HeaderField{Name: hf.Name, Value: hf.Value}) +} + +// (same invariants and behavior as parseHeaderFieldRepr) +func (d *Decoder) parseFieldLiteral(n uint8, it indexType) error { + buf := d.buf + nameIdx, buf, err := readVarInt(n, buf) + if err != nil { + return err + } + + var hf HeaderField + wantStr := d.emitEnabled || it.indexed() + if nameIdx > 0 { + ihf, ok := d.at(nameIdx) + if !ok { + return DecodingError{InvalidIndexError(nameIdx)} + } + hf.Name = ihf.Name + } else { + hf.Name, buf, err = d.readString(buf, wantStr) + if err != nil { + return err + } + } + hf.Value, buf, err = d.readString(buf, wantStr) + if err != nil { + return err + } + d.buf = buf + if it.indexed() { + d.dynTab.add(hf) + } + hf.Sensitive = it.sensitive() + return d.callEmit(hf) +} + +func (d *Decoder) callEmit(hf HeaderField) error { + if d.maxStrLen != 0 { + if len(hf.Name) > d.maxStrLen || len(hf.Value) > d.maxStrLen { + return ErrStringLength + } + } + if d.emitEnabled { + d.emit(hf) + } + return nil +} + +// (same invariants and behavior as parseHeaderFieldRepr) +func (d *Decoder) parseDynamicTableSizeUpdate() error { + buf := d.buf + size, buf, err := readVarInt(5, buf) + if err != nil { + return err + } + if size > uint64(d.dynTab.allowedMaxSize) { + return DecodingError{errors.New("dynamic table size update too large")} + } + d.dynTab.setMaxSize(uint32(size)) + d.buf = buf + return nil +} + +var errVarintOverflow = DecodingError{errors.New("varint integer overflow")} + +// readVarInt reads an unsigned variable length integer off the +// beginning of p. n is the parameter as described in +// http://http2.github.io/http2-spec/compression.html#rfc.section.5.1. +// +// n must always be between 1 and 8. +// +// The returned remain buffer is either a smaller suffix of p, or err != nil. +// The error is errNeedMore if p doesn't contain a complete integer. +func readVarInt(n byte, p []byte) (i uint64, remain []byte, err error) { + if n < 1 || n > 8 { + panic("bad n") + } + if len(p) == 0 { + return 0, p, errNeedMore + } + i = uint64(p[0]) + if n < 8 { + i &= (1 << uint64(n)) - 1 + } + if i < (1< 0 { + b := p[0] + p = p[1:] + i += uint64(b&127) << m + if b&128 == 0 { + return i, p, nil + } + m += 7 + if m >= 63 { // TODO: proper overflow check. making this up. + return 0, origP, errVarintOverflow + } + } + return 0, origP, errNeedMore +} + +// readString decodes an hpack string from p. +// +// wantStr is whether s will be used. If false, decompression and +// []byte->string garbage are skipped if s will be ignored +// anyway. This does mean that huffman decoding errors for non-indexed +// strings past the MAX_HEADER_LIST_SIZE are ignored, but the server +// is returning an error anyway, and because they're not indexed, the error +// won't affect the decoding state. +func (d *Decoder) readString(p []byte, wantStr bool) (s string, remain []byte, err error) { + if len(p) == 0 { + return "", p, errNeedMore + } + isHuff := p[0]&128 != 0 + strLen, p, err := readVarInt(7, p) + if err != nil { + return "", p, err + } + if d.maxStrLen != 0 && strLen > uint64(d.maxStrLen) { + return "", nil, ErrStringLength + } + if uint64(len(p)) < strLen { + return "", p, errNeedMore + } + if !isHuff { + if wantStr { + s = string(p[:strLen]) + } + return s, p[strLen:], nil + } + + if wantStr { + buf := bufPool.Get().(*bytes.Buffer) + buf.Reset() // don't trust others + defer bufPool.Put(buf) + if err := huffmanDecode(buf, d.maxStrLen, p[:strLen]); err != nil { + buf.Reset() + return "", nil, err + } + s = buf.String() + buf.Reset() // be nice to GC + } + return s, p[strLen:], nil +} diff --git a/vendor/golang.org/x/net/http2/hpack/huffman.go b/vendor/golang.org/x/net/http2/hpack/huffman.go new file mode 100644 index 0000000..8850e39 --- /dev/null +++ b/vendor/golang.org/x/net/http2/hpack/huffman.go @@ -0,0 +1,212 @@ +// 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. + +package hpack + +import ( + "bytes" + "errors" + "io" + "sync" +) + +var bufPool = sync.Pool{ + New: func() interface{} { return new(bytes.Buffer) }, +} + +// HuffmanDecode decodes the string in v and writes the expanded +// result to w, returning the number of bytes written to w and the +// Write call's return value. At most one Write call is made. +func HuffmanDecode(w io.Writer, v []byte) (int, error) { + buf := bufPool.Get().(*bytes.Buffer) + buf.Reset() + defer bufPool.Put(buf) + if err := huffmanDecode(buf, 0, v); err != nil { + return 0, err + } + return w.Write(buf.Bytes()) +} + +// HuffmanDecodeToString decodes the string in v. +func HuffmanDecodeToString(v []byte) (string, error) { + buf := bufPool.Get().(*bytes.Buffer) + buf.Reset() + defer bufPool.Put(buf) + if err := huffmanDecode(buf, 0, v); err != nil { + return "", err + } + return buf.String(), nil +} + +// ErrInvalidHuffman is returned for errors found decoding +// Huffman-encoded strings. +var ErrInvalidHuffman = errors.New("hpack: invalid Huffman-encoded data") + +// huffmanDecode decodes v to buf. +// If maxLen is greater than 0, attempts to write more to buf than +// maxLen bytes will return ErrStringLength. +func huffmanDecode(buf *bytes.Buffer, maxLen int, v []byte) error { + n := rootHuffmanNode + // cur is the bit buffer that has not been fed into n. + // cbits is the number of low order bits in cur that are valid. + // sbits is the number of bits of the symbol prefix being decoded. + cur, cbits, sbits := uint(0), uint8(0), uint8(0) + for _, b := range v { + cur = cur<<8 | uint(b) + cbits += 8 + sbits += 8 + for cbits >= 8 { + idx := byte(cur >> (cbits - 8)) + n = n.children[idx] + if n == nil { + return ErrInvalidHuffman + } + if n.children == nil { + if maxLen != 0 && buf.Len() == maxLen { + return ErrStringLength + } + buf.WriteByte(n.sym) + cbits -= n.codeLen + n = rootHuffmanNode + sbits = cbits + } else { + cbits -= 8 + } + } + } + for cbits > 0 { + n = n.children[byte(cur<<(8-cbits))] + if n == nil { + return ErrInvalidHuffman + } + if n.children != nil || n.codeLen > cbits { + break + } + if maxLen != 0 && buf.Len() == maxLen { + return ErrStringLength + } + buf.WriteByte(n.sym) + cbits -= n.codeLen + n = rootHuffmanNode + sbits = cbits + } + if sbits > 7 { + // Either there was an incomplete symbol, or overlong padding. + // Both are decoding errors per RFC 7541 section 5.2. + return ErrInvalidHuffman + } + if mask := uint(1< 8 { + codeLen -= 8 + i := uint8(code >> codeLen) + if cur.children[i] == nil { + cur.children[i] = newInternalNode() + } + cur = cur.children[i] + } + shift := 8 - codeLen + start, end := int(uint8(code<> (nbits - rembits)) + dst[len(dst)-1] |= t + } + + return dst +} + +// HuffmanEncodeLength returns the number of bytes required to encode +// s in Huffman codes. The result is round up to byte boundary. +func HuffmanEncodeLength(s string) uint64 { + n := uint64(0) + for i := 0; i < len(s); i++ { + n += uint64(huffmanCodeLen[s[i]]) + } + return (n + 7) / 8 +} + +// appendByteToHuffmanCode appends Huffman code for c to dst and +// returns the extended buffer and the remaining bits in the last +// element. The appending is not byte aligned and the remaining bits +// in the last element of dst is given in rembits. +func appendByteToHuffmanCode(dst []byte, rembits uint8, c byte) ([]byte, uint8) { + code := huffmanCodes[c] + nbits := huffmanCodeLen[c] + + for { + if rembits > nbits { + t := uint8(code << (rembits - nbits)) + dst[len(dst)-1] |= t + rembits -= nbits + break + } + + t := uint8(code >> (nbits - rembits)) + dst[len(dst)-1] |= t + + nbits -= rembits + rembits = 8 + + if nbits == 0 { + break + } + + dst = append(dst, 0) + } + + return dst, rembits +} diff --git a/vendor/golang.org/x/net/http2/hpack/tables.go b/vendor/golang.org/x/net/http2/hpack/tables.go new file mode 100644 index 0000000..b9283a0 --- /dev/null +++ b/vendor/golang.org/x/net/http2/hpack/tables.go @@ -0,0 +1,352 @@ +// 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. + +package hpack + +func pair(name, value string) HeaderField { + return HeaderField{Name: name, Value: value} +} + +// http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-07#appendix-B +var staticTable = [...]HeaderField{ + pair(":authority", ""), // index 1 (1-based) + pair(":method", "GET"), + pair(":method", "POST"), + pair(":path", "/"), + pair(":path", "/index.html"), + pair(":scheme", "http"), + pair(":scheme", "https"), + pair(":status", "200"), + pair(":status", "204"), + pair(":status", "206"), + pair(":status", "304"), + pair(":status", "400"), + pair(":status", "404"), + pair(":status", "500"), + pair("accept-charset", ""), + pair("accept-encoding", "gzip, deflate"), + pair("accept-language", ""), + pair("accept-ranges", ""), + pair("accept", ""), + pair("access-control-allow-origin", ""), + pair("age", ""), + pair("allow", ""), + pair("authorization", ""), + pair("cache-control", ""), + pair("content-disposition", ""), + pair("content-encoding", ""), + pair("content-language", ""), + pair("content-length", ""), + pair("content-location", ""), + pair("content-range", ""), + pair("content-type", ""), + pair("cookie", ""), + pair("date", ""), + pair("etag", ""), + pair("expect", ""), + pair("expires", ""), + pair("from", ""), + pair("host", ""), + pair("if-match", ""), + pair("if-modified-since", ""), + pair("if-none-match", ""), + pair("if-range", ""), + pair("if-unmodified-since", ""), + pair("last-modified", ""), + pair("link", ""), + pair("location", ""), + pair("max-forwards", ""), + pair("proxy-authenticate", ""), + pair("proxy-authorization", ""), + pair("range", ""), + pair("referer", ""), + pair("refresh", ""), + pair("retry-after", ""), + pair("server", ""), + pair("set-cookie", ""), + pair("strict-transport-security", ""), + pair("transfer-encoding", ""), + pair("user-agent", ""), + pair("vary", ""), + pair("via", ""), + pair("www-authenticate", ""), +} + +var huffmanCodes = [256]uint32{ + 0x1ff8, + 0x7fffd8, + 0xfffffe2, + 0xfffffe3, + 0xfffffe4, + 0xfffffe5, + 0xfffffe6, + 0xfffffe7, + 0xfffffe8, + 0xffffea, + 0x3ffffffc, + 0xfffffe9, + 0xfffffea, + 0x3ffffffd, + 0xfffffeb, + 0xfffffec, + 0xfffffed, + 0xfffffee, + 0xfffffef, + 0xffffff0, + 0xffffff1, + 0xffffff2, + 0x3ffffffe, + 0xffffff3, + 0xffffff4, + 0xffffff5, + 0xffffff6, + 0xffffff7, + 0xffffff8, + 0xffffff9, + 0xffffffa, + 0xffffffb, + 0x14, + 0x3f8, + 0x3f9, + 0xffa, + 0x1ff9, + 0x15, + 0xf8, + 0x7fa, + 0x3fa, + 0x3fb, + 0xf9, + 0x7fb, + 0xfa, + 0x16, + 0x17, + 0x18, + 0x0, + 0x1, + 0x2, + 0x19, + 0x1a, + 0x1b, + 0x1c, + 0x1d, + 0x1e, + 0x1f, + 0x5c, + 0xfb, + 0x7ffc, + 0x20, + 0xffb, + 0x3fc, + 0x1ffa, + 0x21, + 0x5d, + 0x5e, + 0x5f, + 0x60, + 0x61, + 0x62, + 0x63, + 0x64, + 0x65, + 0x66, + 0x67, + 0x68, + 0x69, + 0x6a, + 0x6b, + 0x6c, + 0x6d, + 0x6e, + 0x6f, + 0x70, + 0x71, + 0x72, + 0xfc, + 0x73, + 0xfd, + 0x1ffb, + 0x7fff0, + 0x1ffc, + 0x3ffc, + 0x22, + 0x7ffd, + 0x3, + 0x23, + 0x4, + 0x24, + 0x5, + 0x25, + 0x26, + 0x27, + 0x6, + 0x74, + 0x75, + 0x28, + 0x29, + 0x2a, + 0x7, + 0x2b, + 0x76, + 0x2c, + 0x8, + 0x9, + 0x2d, + 0x77, + 0x78, + 0x79, + 0x7a, + 0x7b, + 0x7ffe, + 0x7fc, + 0x3ffd, + 0x1ffd, + 0xffffffc, + 0xfffe6, + 0x3fffd2, + 0xfffe7, + 0xfffe8, + 0x3fffd3, + 0x3fffd4, + 0x3fffd5, + 0x7fffd9, + 0x3fffd6, + 0x7fffda, + 0x7fffdb, + 0x7fffdc, + 0x7fffdd, + 0x7fffde, + 0xffffeb, + 0x7fffdf, + 0xffffec, + 0xffffed, + 0x3fffd7, + 0x7fffe0, + 0xffffee, + 0x7fffe1, + 0x7fffe2, + 0x7fffe3, + 0x7fffe4, + 0x1fffdc, + 0x3fffd8, + 0x7fffe5, + 0x3fffd9, + 0x7fffe6, + 0x7fffe7, + 0xffffef, + 0x3fffda, + 0x1fffdd, + 0xfffe9, + 0x3fffdb, + 0x3fffdc, + 0x7fffe8, + 0x7fffe9, + 0x1fffde, + 0x7fffea, + 0x3fffdd, + 0x3fffde, + 0xfffff0, + 0x1fffdf, + 0x3fffdf, + 0x7fffeb, + 0x7fffec, + 0x1fffe0, + 0x1fffe1, + 0x3fffe0, + 0x1fffe2, + 0x7fffed, + 0x3fffe1, + 0x7fffee, + 0x7fffef, + 0xfffea, + 0x3fffe2, + 0x3fffe3, + 0x3fffe4, + 0x7ffff0, + 0x3fffe5, + 0x3fffe6, + 0x7ffff1, + 0x3ffffe0, + 0x3ffffe1, + 0xfffeb, + 0x7fff1, + 0x3fffe7, + 0x7ffff2, + 0x3fffe8, + 0x1ffffec, + 0x3ffffe2, + 0x3ffffe3, + 0x3ffffe4, + 0x7ffffde, + 0x7ffffdf, + 0x3ffffe5, + 0xfffff1, + 0x1ffffed, + 0x7fff2, + 0x1fffe3, + 0x3ffffe6, + 0x7ffffe0, + 0x7ffffe1, + 0x3ffffe7, + 0x7ffffe2, + 0xfffff2, + 0x1fffe4, + 0x1fffe5, + 0x3ffffe8, + 0x3ffffe9, + 0xffffffd, + 0x7ffffe3, + 0x7ffffe4, + 0x7ffffe5, + 0xfffec, + 0xfffff3, + 0xfffed, + 0x1fffe6, + 0x3fffe9, + 0x1fffe7, + 0x1fffe8, + 0x7ffff3, + 0x3fffea, + 0x3fffeb, + 0x1ffffee, + 0x1ffffef, + 0xfffff4, + 0xfffff5, + 0x3ffffea, + 0x7ffff4, + 0x3ffffeb, + 0x7ffffe6, + 0x3ffffec, + 0x3ffffed, + 0x7ffffe7, + 0x7ffffe8, + 0x7ffffe9, + 0x7ffffea, + 0x7ffffeb, + 0xffffffe, + 0x7ffffec, + 0x7ffffed, + 0x7ffffee, + 0x7ffffef, + 0x7fffff0, + 0x3ffffee, +} + +var huffmanCodeLen = [256]uint8{ + 13, 23, 28, 28, 28, 28, 28, 28, 28, 24, 30, 28, 28, 30, 28, 28, + 28, 28, 28, 28, 28, 28, 30, 28, 28, 28, 28, 28, 28, 28, 28, 28, + 6, 10, 10, 12, 13, 6, 8, 11, 10, 10, 8, 11, 8, 6, 6, 6, + 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 7, 8, 15, 6, 12, 10, + 13, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 8, 7, 8, 13, 19, 13, 14, 6, + 15, 5, 6, 5, 6, 5, 6, 6, 6, 5, 7, 7, 6, 6, 6, 5, + 6, 7, 6, 5, 5, 6, 7, 7, 7, 7, 7, 15, 11, 14, 13, 28, + 20, 22, 20, 20, 22, 22, 22, 23, 22, 23, 23, 23, 23, 23, 24, 23, + 24, 24, 22, 23, 24, 23, 23, 23, 23, 21, 22, 23, 22, 23, 23, 24, + 22, 21, 20, 22, 22, 23, 23, 21, 23, 22, 22, 24, 21, 22, 23, 23, + 21, 21, 22, 21, 23, 22, 23, 23, 20, 22, 22, 22, 23, 22, 22, 23, + 26, 26, 20, 19, 22, 23, 22, 25, 26, 26, 26, 27, 27, 26, 24, 25, + 19, 21, 26, 27, 27, 26, 27, 24, 21, 21, 26, 26, 28, 27, 27, 27, + 20, 24, 20, 21, 22, 21, 21, 23, 22, 22, 25, 25, 24, 24, 26, 23, + 26, 27, 26, 26, 27, 27, 27, 27, 27, 28, 27, 27, 27, 27, 27, 26, +} diff --git a/vendor/golang.org/x/net/http2/http2.go b/vendor/golang.org/x/net/http2/http2.go new file mode 100644 index 0000000..d2d73d5 --- /dev/null +++ b/vendor/golang.org/x/net/http2/http2.go @@ -0,0 +1,366 @@ +// 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. + +// Package http2 implements the HTTP/2 protocol. +// +// This package is low-level and intended to be used directly by very +// few people. Most users will use it indirectly through the automatic +// use by the net/http package (from Go 1.6 and later). +// For use in earlier Go versions see ConfigureServer. (Transport support +// requires Go 1.6 or later) +// +// See https://http2.github.io/ for more information on HTTP/2. +// +// See https://http2.golang.org/ for a test server running this code. +// +package http2 + +import ( + "bufio" + "crypto/tls" + "errors" + "fmt" + "io" + "net/http" + "os" + "sort" + "strconv" + "strings" + "sync" + + "golang.org/x/net/lex/httplex" +) + +var ( + VerboseLogs bool + logFrameWrites bool + logFrameReads bool + inTests bool +) + +func init() { + e := os.Getenv("GODEBUG") + if strings.Contains(e, "http2debug=1") { + VerboseLogs = true + } + if strings.Contains(e, "http2debug=2") { + VerboseLogs = true + logFrameWrites = true + logFrameReads = true + } +} + +const ( + // ClientPreface is the string that must be sent by new + // connections from clients. + ClientPreface = "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n" + + // SETTINGS_MAX_FRAME_SIZE default + // http://http2.github.io/http2-spec/#rfc.section.6.5.2 + initialMaxFrameSize = 16384 + + // NextProtoTLS is the NPN/ALPN protocol negotiated during + // HTTP/2's TLS setup. + NextProtoTLS = "h2" + + // http://http2.github.io/http2-spec/#SettingValues + initialHeaderTableSize = 4096 + + initialWindowSize = 65535 // 6.9.2 Initial Flow Control Window Size + + defaultMaxReadFrameSize = 1 << 20 +) + +var ( + clientPreface = []byte(ClientPreface) +) + +type streamState int + +const ( + stateIdle streamState = iota + stateOpen + stateHalfClosedLocal + stateHalfClosedRemote + stateResvLocal + stateResvRemote + stateClosed +) + +var stateName = [...]string{ + stateIdle: "Idle", + stateOpen: "Open", + stateHalfClosedLocal: "HalfClosedLocal", + stateHalfClosedRemote: "HalfClosedRemote", + stateResvLocal: "ResvLocal", + stateResvRemote: "ResvRemote", + stateClosed: "Closed", +} + +func (st streamState) String() string { + return stateName[st] +} + +// Setting is a setting parameter: which setting it is, and its value. +type Setting struct { + // ID is which setting is being set. + // See http://http2.github.io/http2-spec/#SettingValues + ID SettingID + + // Val is the value. + Val uint32 +} + +func (s Setting) String() string { + return fmt.Sprintf("[%v = %d]", s.ID, s.Val) +} + +// Valid reports whether the setting is valid. +func (s Setting) Valid() error { + // Limits and error codes from 6.5.2 Defined SETTINGS Parameters + switch s.ID { + case SettingEnablePush: + if s.Val != 1 && s.Val != 0 { + return ConnectionError(ErrCodeProtocol) + } + case SettingInitialWindowSize: + if s.Val > 1<<31-1 { + return ConnectionError(ErrCodeFlowControl) + } + case SettingMaxFrameSize: + if s.Val < 16384 || s.Val > 1<<24-1 { + return ConnectionError(ErrCodeProtocol) + } + } + return nil +} + +// A SettingID is an HTTP/2 setting as defined in +// http://http2.github.io/http2-spec/#iana-settings +type SettingID uint16 + +const ( + SettingHeaderTableSize SettingID = 0x1 + SettingEnablePush SettingID = 0x2 + SettingMaxConcurrentStreams SettingID = 0x3 + SettingInitialWindowSize SettingID = 0x4 + SettingMaxFrameSize SettingID = 0x5 + SettingMaxHeaderListSize SettingID = 0x6 +) + +var settingName = map[SettingID]string{ + SettingHeaderTableSize: "HEADER_TABLE_SIZE", + SettingEnablePush: "ENABLE_PUSH", + SettingMaxConcurrentStreams: "MAX_CONCURRENT_STREAMS", + SettingInitialWindowSize: "INITIAL_WINDOW_SIZE", + SettingMaxFrameSize: "MAX_FRAME_SIZE", + SettingMaxHeaderListSize: "MAX_HEADER_LIST_SIZE", +} + +func (s SettingID) String() string { + if v, ok := settingName[s]; ok { + return v + } + return fmt.Sprintf("UNKNOWN_SETTING_%d", uint16(s)) +} + +var ( + errInvalidHeaderFieldName = errors.New("http2: invalid header field name") + errInvalidHeaderFieldValue = errors.New("http2: invalid header field value") +) + +// validWireHeaderFieldName reports whether v is a valid header field +// name (key). See httplex.ValidHeaderName for the base rules. +// +// Further, http2 says: +// "Just as in HTTP/1.x, header field names are strings of ASCII +// characters that are compared in a case-insensitive +// fashion. However, header field names MUST be converted to +// lowercase prior to their encoding in HTTP/2. " +func validWireHeaderFieldName(v string) bool { + if len(v) == 0 { + return false + } + for _, r := range v { + if !httplex.IsTokenRune(r) { + return false + } + if 'A' <= r && r <= 'Z' { + return false + } + } + return true +} + +var httpCodeStringCommon = map[int]string{} // n -> strconv.Itoa(n) + +func init() { + for i := 100; i <= 999; i++ { + if v := http.StatusText(i); v != "" { + httpCodeStringCommon[i] = strconv.Itoa(i) + } + } +} + +func httpCodeString(code int) string { + if s, ok := httpCodeStringCommon[code]; ok { + return s + } + return strconv.Itoa(code) +} + +// from pkg io +type stringWriter interface { + WriteString(s string) (n int, err error) +} + +// A gate lets two goroutines coordinate their activities. +type gate chan struct{} + +func (g gate) Done() { g <- struct{}{} } +func (g gate) Wait() { <-g } + +// A closeWaiter is like a sync.WaitGroup but only goes 1 to 0 (open to closed). +type closeWaiter chan struct{} + +// Init makes a closeWaiter usable. +// It exists because so a closeWaiter value can be placed inside a +// larger struct and have the Mutex and Cond's memory in the same +// allocation. +func (cw *closeWaiter) Init() { + *cw = make(chan struct{}) +} + +// Close marks the closeWaiter as closed and unblocks any waiters. +func (cw closeWaiter) Close() { + close(cw) +} + +// Wait waits for the closeWaiter to become closed. +func (cw closeWaiter) Wait() { + <-cw +} + +// bufferedWriter is a buffered writer that writes to w. +// Its buffered writer is lazily allocated as needed, to minimize +// idle memory usage with many connections. +type bufferedWriter struct { + w io.Writer // immutable + bw *bufio.Writer // non-nil when data is buffered +} + +func newBufferedWriter(w io.Writer) *bufferedWriter { + return &bufferedWriter{w: w} +} + +var bufWriterPool = sync.Pool{ + New: func() interface{} { + // TODO: pick something better? this is a bit under + // (3 x typical 1500 byte MTU) at least. + return bufio.NewWriterSize(nil, 4<<10) + }, +} + +func (w *bufferedWriter) Write(p []byte) (n int, err error) { + if w.bw == nil { + bw := bufWriterPool.Get().(*bufio.Writer) + bw.Reset(w.w) + w.bw = bw + } + return w.bw.Write(p) +} + +func (w *bufferedWriter) Flush() error { + bw := w.bw + if bw == nil { + return nil + } + err := bw.Flush() + bw.Reset(nil) + bufWriterPool.Put(bw) + w.bw = nil + return err +} + +func mustUint31(v int32) uint32 { + if v < 0 || v > 2147483647 { + panic("out of range") + } + return uint32(v) +} + +// bodyAllowedForStatus reports whether a given response status code +// permits a body. See RFC 2616, section 4.4. +func bodyAllowedForStatus(status int) bool { + switch { + case status >= 100 && status <= 199: + return false + case status == 204: + return false + case status == 304: + return false + } + return true +} + +type httpError struct { + msg string + timeout bool +} + +func (e *httpError) Error() string { return e.msg } +func (e *httpError) Timeout() bool { return e.timeout } +func (e *httpError) Temporary() bool { return true } + +var errTimeout error = &httpError{msg: "http2: timeout awaiting response headers", timeout: true} + +type connectionStater interface { + ConnectionState() tls.ConnectionState +} + +var sorterPool = sync.Pool{New: func() interface{} { return new(sorter) }} + +type sorter struct { + v []string // owned by sorter +} + +func (s *sorter) Len() int { return len(s.v) } +func (s *sorter) Swap(i, j int) { s.v[i], s.v[j] = s.v[j], s.v[i] } +func (s *sorter) Less(i, j int) bool { return s.v[i] < s.v[j] } + +// Keys returns the sorted keys of h. +// +// The returned slice is only valid until s used again or returned to +// its pool. +func (s *sorter) Keys(h http.Header) []string { + keys := s.v[:0] + for k := range h { + keys = append(keys, k) + } + s.v = keys + sort.Sort(s) + return keys +} + +func (s *sorter) SortStrings(ss []string) { + // Our sorter works on s.v, which sorter owns, so + // stash it away while we sort the user's buffer. + save := s.v + s.v = ss + sort.Sort(s) + s.v = save +} + +// validPseudoPath reports whether v is a valid :path pseudo-header +// value. It must be either: +// +// *) a non-empty string starting with '/', but not with with "//", +// *) the string '*', for OPTIONS requests. +// +// For now this is only used a quick check for deciding when to clean +// up Opaque URLs before sending requests from the Transport. +// See golang.org/issue/16847 +func validPseudoPath(v string) bool { + return (len(v) > 0 && v[0] == '/' && (len(v) == 1 || v[1] != '/')) || v == "*" +} diff --git a/vendor/golang.org/x/net/http2/not_go16.go b/vendor/golang.org/x/net/http2/not_go16.go new file mode 100644 index 0000000..efd2e12 --- /dev/null +++ b/vendor/golang.org/x/net/http2/not_go16.go @@ -0,0 +1,46 @@ +// 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.6 + +package http2 + +import ( + "crypto/tls" + "net/http" + "time" +) + +func configureTransport(t1 *http.Transport) (*Transport, error) { + return nil, errTransportVersion +} + +func transportExpectContinueTimeout(t1 *http.Transport) time.Duration { + return 0 + +} + +// isBadCipher reports whether the cipher is blacklisted by the HTTP/2 spec. +func isBadCipher(cipher uint16) bool { + switch cipher { + case tls.TLS_RSA_WITH_RC4_128_SHA, + tls.TLS_RSA_WITH_3DES_EDE_CBC_SHA, + tls.TLS_RSA_WITH_AES_128_CBC_SHA, + tls.TLS_RSA_WITH_AES_256_CBC_SHA, + tls.TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, + tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, + tls.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, + tls.TLS_ECDHE_RSA_WITH_RC4_128_SHA, + tls.TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, + tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, + tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA: + // Reject cipher suites from Appendix A. + // "This list includes those cipher suites that do not + // offer an ephemeral key exchange and those that are + // based on the TLS null, stream or block cipher type" + return true + default: + return false + } +} diff --git a/vendor/golang.org/x/net/http2/not_go17.go b/vendor/golang.org/x/net/http2/not_go17.go new file mode 100644 index 0000000..140434a --- /dev/null +++ b/vendor/golang.org/x/net/http2/not_go17.go @@ -0,0 +1,87 @@ +// 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 !go1.7 + +package http2 + +import ( + "crypto/tls" + "net" + "net/http" + "time" +) + +type contextContext interface { + Done() <-chan struct{} + Err() error +} + +type fakeContext struct{} + +func (fakeContext) Done() <-chan struct{} { return nil } +func (fakeContext) Err() error { panic("should not be called") } + +func reqContext(r *http.Request) fakeContext { + return fakeContext{} +} + +func setResponseUncompressed(res *http.Response) { + // Nothing. +} + +type clientTrace struct{} + +func requestTrace(*http.Request) *clientTrace { return nil } +func traceGotConn(*http.Request, *ClientConn) {} +func traceFirstResponseByte(*clientTrace) {} +func traceWroteHeaders(*clientTrace) {} +func traceWroteRequest(*clientTrace, error) {} +func traceGot100Continue(trace *clientTrace) {} +func traceWait100Continue(trace *clientTrace) {} + +func nop() {} + +func serverConnBaseContext(c net.Conn, opts *ServeConnOpts) (ctx contextContext, cancel func()) { + return nil, nop +} + +func contextWithCancel(ctx contextContext) (_ contextContext, cancel func()) { + return ctx, nop +} + +func requestWithContext(req *http.Request, ctx contextContext) *http.Request { + return req +} + +// temporary copy of Go 1.6's private tls.Config.clone: +func cloneTLSConfig(c *tls.Config) *tls.Config { + return &tls.Config{ + Rand: c.Rand, + Time: c.Time, + Certificates: c.Certificates, + NameToCertificate: c.NameToCertificate, + GetCertificate: c.GetCertificate, + RootCAs: c.RootCAs, + NextProtos: c.NextProtos, + ServerName: c.ServerName, + ClientAuth: c.ClientAuth, + ClientCAs: c.ClientCAs, + InsecureSkipVerify: c.InsecureSkipVerify, + CipherSuites: c.CipherSuites, + PreferServerCipherSuites: c.PreferServerCipherSuites, + SessionTicketsDisabled: c.SessionTicketsDisabled, + SessionTicketKey: c.SessionTicketKey, + ClientSessionCache: c.ClientSessionCache, + MinVersion: c.MinVersion, + MaxVersion: c.MaxVersion, + CurvePreferences: c.CurvePreferences, + } +} + +func (cc *ClientConn) Ping(ctx contextContext) error { + return cc.ping(ctx) +} + +func (t *Transport) idleConnTimeout() time.Duration { return 0 } diff --git a/vendor/golang.org/x/net/http2/pipe.go b/vendor/golang.org/x/net/http2/pipe.go new file mode 100644 index 0000000..53b7a1d --- /dev/null +++ b/vendor/golang.org/x/net/http2/pipe.go @@ -0,0 +1,153 @@ +// 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. + +package http2 + +import ( + "errors" + "io" + "sync" +) + +// pipe is a goroutine-safe io.Reader/io.Writer pair. It's like +// io.Pipe except there are no PipeReader/PipeWriter halves, and the +// underlying buffer is an interface. (io.Pipe is always unbuffered) +type pipe struct { + mu sync.Mutex + c sync.Cond // c.L lazily initialized to &p.mu + b pipeBuffer + err error // read error once empty. non-nil means closed. + breakErr error // immediate read error (caller doesn't see rest of b) + donec chan struct{} // closed on error + readFn func() // optional code to run in Read before error +} + +type pipeBuffer interface { + Len() int + io.Writer + io.Reader +} + +func (p *pipe) Len() int { + p.mu.Lock() + defer p.mu.Unlock() + return p.b.Len() +} + +// Read waits until data is available and copies bytes +// from the buffer into p. +func (p *pipe) Read(d []byte) (n int, err error) { + p.mu.Lock() + defer p.mu.Unlock() + if p.c.L == nil { + p.c.L = &p.mu + } + for { + if p.breakErr != nil { + return 0, p.breakErr + } + if p.b.Len() > 0 { + return p.b.Read(d) + } + if p.err != nil { + if p.readFn != nil { + p.readFn() // e.g. copy trailers + p.readFn = nil // not sticky like p.err + } + return 0, p.err + } + p.c.Wait() + } +} + +var errClosedPipeWrite = errors.New("write on closed buffer") + +// Write copies bytes from p into the buffer and wakes a reader. +// It is an error to write more data than the buffer can hold. +func (p *pipe) Write(d []byte) (n int, err error) { + p.mu.Lock() + defer p.mu.Unlock() + if p.c.L == nil { + p.c.L = &p.mu + } + defer p.c.Signal() + if p.err != nil { + return 0, errClosedPipeWrite + } + return p.b.Write(d) +} + +// CloseWithError causes the next Read (waking up a current blocked +// Read if needed) to return the provided err after all data has been +// read. +// +// The error must be non-nil. +func (p *pipe) CloseWithError(err error) { p.closeWithError(&p.err, err, nil) } + +// BreakWithError causes the next Read (waking up a current blocked +// Read if needed) to return the provided err immediately, without +// waiting for unread data. +func (p *pipe) BreakWithError(err error) { p.closeWithError(&p.breakErr, err, nil) } + +// closeWithErrorAndCode is like CloseWithError but also sets some code to run +// in the caller's goroutine before returning the error. +func (p *pipe) closeWithErrorAndCode(err error, fn func()) { p.closeWithError(&p.err, err, fn) } + +func (p *pipe) closeWithError(dst *error, err error, fn func()) { + if err == nil { + panic("err must be non-nil") + } + p.mu.Lock() + defer p.mu.Unlock() + if p.c.L == nil { + p.c.L = &p.mu + } + defer p.c.Signal() + if *dst != nil { + // Already been done. + return + } + p.readFn = fn + *dst = err + p.closeDoneLocked() +} + +// requires p.mu be held. +func (p *pipe) closeDoneLocked() { + if p.donec == nil { + return + } + // Close if unclosed. This isn't racy since we always + // hold p.mu while closing. + select { + case <-p.donec: + default: + close(p.donec) + } +} + +// Err returns the error (if any) first set by BreakWithError or CloseWithError. +func (p *pipe) Err() error { + p.mu.Lock() + defer p.mu.Unlock() + if p.breakErr != nil { + return p.breakErr + } + return p.err +} + +// Done returns a channel which is closed if and when this pipe is closed +// with CloseWithError. +func (p *pipe) Done() <-chan struct{} { + p.mu.Lock() + defer p.mu.Unlock() + if p.donec == nil { + p.donec = make(chan struct{}) + if p.err != nil || p.breakErr != nil { + // Already hit an error. + p.closeDoneLocked() + } + } + return p.donec +} diff --git a/vendor/golang.org/x/net/http2/server.go b/vendor/golang.org/x/net/http2/server.go new file mode 100644 index 0000000..0e670de --- /dev/null +++ b/vendor/golang.org/x/net/http2/server.go @@ -0,0 +1,2326 @@ +// 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. + +// TODO: replace all <-sc.doneServing with reads from the stream's cw +// instead, and make sure that on close we close all open +// streams. then remove doneServing? + +// TODO: re-audit GOAWAY support. Consider each incoming frame type and +// whether it should be ignored during graceful shutdown. + +// TODO: disconnect idle clients. GFE seems to do 4 minutes. make +// configurable? or maximum number of idle clients and remove the +// oldest? + +// TODO: turn off the serve goroutine when idle, so +// an idle conn only has the readFrames goroutine active. (which could +// also be optimized probably to pin less memory in crypto/tls). This +// would involve tracking when the serve goroutine is active (atomic +// int32 read/CAS probably?) and starting it up when frames arrive, +// and shutting it down when all handlers exit. the occasional PING +// packets could use time.AfterFunc to call sc.wakeStartServeLoop() +// (which is a no-op if already running) and then queue the PING write +// as normal. The serve loop would then exit in most cases (if no +// Handlers running) and not be woken up again until the PING packet +// returns. + +// TODO (maybe): add a mechanism for Handlers to going into +// half-closed-local mode (rw.(io.Closer) test?) but not exit their +// handler, and continue to be able to read from the +// Request.Body. This would be a somewhat semantic change from HTTP/1 +// (or at least what we expose in net/http), so I'd probably want to +// add it there too. For now, this package says that returning from +// the Handler ServeHTTP function means you're both done reading and +// done writing, without a way to stop just one or the other. + +package http2 + +import ( + "bufio" + "bytes" + "crypto/tls" + "errors" + "fmt" + "io" + "log" + "net" + "net/http" + "net/textproto" + "net/url" + "os" + "reflect" + "runtime" + "strconv" + "strings" + "sync" + "time" + + "golang.org/x/net/http2/hpack" +) + +const ( + prefaceTimeout = 10 * time.Second + firstSettingsTimeout = 2 * time.Second // should be in-flight with preface anyway + handlerChunkWriteSize = 4 << 10 + defaultMaxStreams = 250 // TODO: make this 100 as the GFE seems to? +) + +var ( + errClientDisconnected = errors.New("client disconnected") + errClosedBody = errors.New("body closed by handler") + errHandlerComplete = errors.New("http2: request body closed due to handler exiting") + errStreamClosed = errors.New("http2: stream closed") +) + +var responseWriterStatePool = sync.Pool{ + New: func() interface{} { + rws := &responseWriterState{} + rws.bw = bufio.NewWriterSize(chunkWriter{rws}, handlerChunkWriteSize) + return rws + }, +} + +// Test hooks. +var ( + testHookOnConn func() + testHookGetServerConn func(*serverConn) + testHookOnPanicMu *sync.Mutex // nil except in tests + testHookOnPanic func(sc *serverConn, panicVal interface{}) (rePanic bool) +) + +// Server is an HTTP/2 server. +type Server struct { + // MaxHandlers limits the number of http.Handler ServeHTTP goroutines + // which may run at a time over all connections. + // Negative or zero no limit. + // TODO: implement + MaxHandlers int + + // MaxConcurrentStreams optionally specifies the number of + // concurrent streams that each client may have open at a + // time. This is unrelated to the number of http.Handler goroutines + // which may be active globally, which is MaxHandlers. + // If zero, MaxConcurrentStreams defaults to at least 100, per + // the HTTP/2 spec's recommendations. + MaxConcurrentStreams uint32 + + // MaxReadFrameSize optionally specifies the largest frame + // this server is willing to read. A valid value is between + // 16k and 16M, inclusive. If zero or otherwise invalid, a + // default value is used. + MaxReadFrameSize uint32 + + // PermitProhibitedCipherSuites, if true, permits the use of + // cipher suites prohibited by the HTTP/2 spec. + PermitProhibitedCipherSuites bool +} + +func (s *Server) maxReadFrameSize() uint32 { + if v := s.MaxReadFrameSize; v >= minMaxFrameSize && v <= maxFrameSize { + return v + } + return defaultMaxReadFrameSize +} + +func (s *Server) maxConcurrentStreams() uint32 { + if v := s.MaxConcurrentStreams; v > 0 { + return v + } + return defaultMaxStreams +} + +// ConfigureServer adds HTTP/2 support to a net/http Server. +// +// The configuration conf may be nil. +// +// ConfigureServer must be called before s begins serving. +func ConfigureServer(s *http.Server, conf *Server) error { + if conf == nil { + conf = new(Server) + } + + if s.TLSConfig == nil { + s.TLSConfig = new(tls.Config) + } else if s.TLSConfig.CipherSuites != nil { + // If they already provided a CipherSuite list, return + // an error if it has a bad order or is missing + // ECDHE_RSA_WITH_AES_128_GCM_SHA256. + const requiredCipher = tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 + haveRequired := false + sawBad := false + for i, cs := range s.TLSConfig.CipherSuites { + if cs == requiredCipher { + haveRequired = true + } + if isBadCipher(cs) { + sawBad = true + } else if sawBad { + return fmt.Errorf("http2: TLSConfig.CipherSuites index %d contains an HTTP/2-approved cipher suite (%#04x), but it comes after unapproved cipher suites. With this configuration, clients that don't support previous, approved cipher suites may be given an unapproved one and reject the connection.", i, cs) + } + } + if !haveRequired { + return fmt.Errorf("http2: TLSConfig.CipherSuites is missing HTTP/2-required TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256") + } + } + + // Note: not setting MinVersion to tls.VersionTLS12, + // as we don't want to interfere with HTTP/1.1 traffic + // on the user's server. We enforce TLS 1.2 later once + // we accept a connection. Ideally this should be done + // during next-proto selection, but using TLS <1.2 with + // HTTP/2 is still the client's bug. + + s.TLSConfig.PreferServerCipherSuites = true + + haveNPN := false + for _, p := range s.TLSConfig.NextProtos { + if p == NextProtoTLS { + haveNPN = true + break + } + } + if !haveNPN { + s.TLSConfig.NextProtos = append(s.TLSConfig.NextProtos, NextProtoTLS) + } + // h2-14 is temporary (as of 2015-03-05) while we wait for all browsers + // to switch to "h2". + s.TLSConfig.NextProtos = append(s.TLSConfig.NextProtos, "h2-14") + + if s.TLSNextProto == nil { + s.TLSNextProto = map[string]func(*http.Server, *tls.Conn, http.Handler){} + } + protoHandler := func(hs *http.Server, c *tls.Conn, h http.Handler) { + if testHookOnConn != nil { + testHookOnConn() + } + conf.ServeConn(c, &ServeConnOpts{ + Handler: h, + BaseConfig: hs, + }) + } + s.TLSNextProto[NextProtoTLS] = protoHandler + s.TLSNextProto["h2-14"] = protoHandler // temporary; see above. + return nil +} + +// ServeConnOpts are options for the Server.ServeConn method. +type ServeConnOpts struct { + // BaseConfig optionally sets the base configuration + // for values. If nil, defaults are used. + BaseConfig *http.Server + + // Handler specifies which handler to use for processing + // requests. If nil, BaseConfig.Handler is used. If BaseConfig + // or BaseConfig.Handler is nil, http.DefaultServeMux is used. + Handler http.Handler +} + +func (o *ServeConnOpts) baseConfig() *http.Server { + if o != nil && o.BaseConfig != nil { + return o.BaseConfig + } + return new(http.Server) +} + +func (o *ServeConnOpts) handler() http.Handler { + if o != nil { + if o.Handler != nil { + return o.Handler + } + if o.BaseConfig != nil && o.BaseConfig.Handler != nil { + return o.BaseConfig.Handler + } + } + return http.DefaultServeMux +} + +// ServeConn serves HTTP/2 requests on the provided connection and +// blocks until the connection is no longer readable. +// +// ServeConn starts speaking HTTP/2 assuming that c has not had any +// reads or writes. It writes its initial settings frame and expects +// to be able to read the preface and settings frame from the +// client. If c has a ConnectionState method like a *tls.Conn, the +// ConnectionState is used to verify the TLS ciphersuite and to set +// the Request.TLS field in Handlers. +// +// ServeConn does not support h2c by itself. Any h2c support must be +// implemented in terms of providing a suitably-behaving net.Conn. +// +// The opts parameter is optional. If nil, default values are used. +func (s *Server) ServeConn(c net.Conn, opts *ServeConnOpts) { + baseCtx, cancel := serverConnBaseContext(c, opts) + defer cancel() + + sc := &serverConn{ + srv: s, + hs: opts.baseConfig(), + conn: c, + baseCtx: baseCtx, + remoteAddrStr: c.RemoteAddr().String(), + bw: newBufferedWriter(c), + handler: opts.handler(), + streams: make(map[uint32]*stream), + readFrameCh: make(chan readFrameResult), + wantWriteFrameCh: make(chan frameWriteMsg, 8), + wroteFrameCh: make(chan frameWriteResult, 1), // buffered; one send in writeFrameAsync + bodyReadCh: make(chan bodyReadMsg), // buffering doesn't matter either way + doneServing: make(chan struct{}), + advMaxStreams: s.maxConcurrentStreams(), + writeSched: writeScheduler{ + maxFrameSize: initialMaxFrameSize, + }, + initialWindowSize: initialWindowSize, + headerTableSize: initialHeaderTableSize, + serveG: newGoroutineLock(), + pushEnabled: true, + } + + sc.flow.add(initialWindowSize) + sc.inflow.add(initialWindowSize) + sc.hpackEncoder = hpack.NewEncoder(&sc.headerWriteBuf) + + fr := NewFramer(sc.bw, c) + fr.ReadMetaHeaders = hpack.NewDecoder(initialHeaderTableSize, nil) + fr.MaxHeaderListSize = sc.maxHeaderListSize() + fr.SetMaxReadFrameSize(s.maxReadFrameSize()) + sc.framer = fr + + if tc, ok := c.(connectionStater); ok { + sc.tlsState = new(tls.ConnectionState) + *sc.tlsState = tc.ConnectionState() + // 9.2 Use of TLS Features + // An implementation of HTTP/2 over TLS MUST use TLS + // 1.2 or higher with the restrictions on feature set + // and cipher suite described in this section. Due to + // implementation limitations, it might not be + // possible to fail TLS negotiation. An endpoint MUST + // immediately terminate an HTTP/2 connection that + // does not meet the TLS requirements described in + // this section with a connection error (Section + // 5.4.1) of type INADEQUATE_SECURITY. + if sc.tlsState.Version < tls.VersionTLS12 { + sc.rejectConn(ErrCodeInadequateSecurity, "TLS version too low") + return + } + + if sc.tlsState.ServerName == "" { + // Client must use SNI, but we don't enforce that anymore, + // since it was causing problems when connecting to bare IP + // addresses during development. + // + // TODO: optionally enforce? Or enforce at the time we receive + // a new request, and verify the the ServerName matches the :authority? + // But that precludes proxy situations, perhaps. + // + // So for now, do nothing here again. + } + + if !s.PermitProhibitedCipherSuites && isBadCipher(sc.tlsState.CipherSuite) { + // "Endpoints MAY choose to generate a connection error + // (Section 5.4.1) of type INADEQUATE_SECURITY if one of + // the prohibited cipher suites are negotiated." + // + // We choose that. In my opinion, the spec is weak + // here. It also says both parties must support at least + // TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 so there's no + // excuses here. If we really must, we could allow an + // "AllowInsecureWeakCiphers" option on the server later. + // Let's see how it plays out first. + sc.rejectConn(ErrCodeInadequateSecurity, fmt.Sprintf("Prohibited TLS 1.2 Cipher Suite: %x", sc.tlsState.CipherSuite)) + return + } + } + + if hook := testHookGetServerConn; hook != nil { + hook(sc) + } + sc.serve() +} + +func (sc *serverConn) rejectConn(err ErrCode, debug string) { + sc.vlogf("http2: server rejecting conn: %v, %s", err, debug) + // ignoring errors. hanging up anyway. + sc.framer.WriteGoAway(0, err, []byte(debug)) + sc.bw.Flush() + sc.conn.Close() +} + +type serverConn struct { + // Immutable: + srv *Server + hs *http.Server + conn net.Conn + bw *bufferedWriter // writing to conn + handler http.Handler + baseCtx contextContext + framer *Framer + doneServing chan struct{} // closed when serverConn.serve ends + readFrameCh chan readFrameResult // written by serverConn.readFrames + wantWriteFrameCh chan frameWriteMsg // from handlers -> serve + wroteFrameCh chan frameWriteResult // from writeFrameAsync -> serve, tickles more frame writes + bodyReadCh chan bodyReadMsg // from handlers -> serve + testHookCh chan func(int) // code to run on the serve loop + flow flow // conn-wide (not stream-specific) outbound flow control + inflow flow // conn-wide inbound flow control + tlsState *tls.ConnectionState // shared by all handlers, like net/http + remoteAddrStr string + + // Everything following is owned by the serve loop; use serveG.check(): + serveG goroutineLock // used to verify funcs are on serve() + pushEnabled bool + sawFirstSettings bool // got the initial SETTINGS frame after the preface + needToSendSettingsAck bool + unackedSettings int // how many SETTINGS have we sent without ACKs? + clientMaxStreams uint32 // SETTINGS_MAX_CONCURRENT_STREAMS from client (our PUSH_PROMISE limit) + advMaxStreams uint32 // our SETTINGS_MAX_CONCURRENT_STREAMS advertised the client + curOpenStreams uint32 // client's number of open streams + maxStreamID uint32 // max ever seen + streams map[uint32]*stream + initialWindowSize int32 + headerTableSize uint32 + peerMaxHeaderListSize uint32 // zero means unknown (default) + canonHeader map[string]string // http2-lower-case -> Go-Canonical-Case + writingFrame bool // started write goroutine but haven't heard back on wroteFrameCh + needsFrameFlush bool // last frame write wasn't a flush + writeSched writeScheduler + inGoAway bool // we've started to or sent GOAWAY + needToSendGoAway bool // we need to schedule a GOAWAY frame write + goAwayCode ErrCode + shutdownTimerCh <-chan time.Time // nil until used + shutdownTimer *time.Timer // nil until used + + // Owned by the writeFrameAsync goroutine: + headerWriteBuf bytes.Buffer + hpackEncoder *hpack.Encoder +} + +func (sc *serverConn) maxHeaderListSize() uint32 { + n := sc.hs.MaxHeaderBytes + if n <= 0 { + n = http.DefaultMaxHeaderBytes + } + // http2's count is in a slightly different unit and includes 32 bytes per pair. + // So, take the net/http.Server value and pad it up a bit, assuming 10 headers. + const perFieldOverhead = 32 // per http2 spec + const typicalHeaders = 10 // conservative + return uint32(n + typicalHeaders*perFieldOverhead) +} + +// stream represents a stream. This is the minimal metadata needed by +// the serve goroutine. Most of the actual stream state is owned by +// the http.Handler's goroutine in the responseWriter. Because the +// responseWriter's responseWriterState is recycled at the end of a +// handler, this struct intentionally has no pointer to the +// *responseWriter{,State} itself, as the Handler ending nils out the +// responseWriter's state field. +type stream struct { + // immutable: + sc *serverConn + id uint32 + body *pipe // non-nil if expecting DATA frames + cw closeWaiter // closed wait stream transitions to closed state + ctx contextContext + cancelCtx func() + + // owned by serverConn's serve loop: + bodyBytes int64 // body bytes seen so far + declBodyBytes int64 // or -1 if undeclared + flow flow // limits writing from Handler to client + inflow flow // what the client is allowed to POST/etc to us + parent *stream // or nil + numTrailerValues int64 + weight uint8 + state streamState + sentReset bool // only true once detached from streams map + gotReset bool // only true once detacted from streams map + gotTrailerHeader bool // HEADER frame for trailers was seen + wroteHeaders bool // whether we wrote headers (not status 100) + reqBuf []byte // if non-nil, body pipe buffer to return later at EOF + + trailer http.Header // accumulated trailers + reqTrailer http.Header // handler's Request.Trailer +} + +func (sc *serverConn) Framer() *Framer { return sc.framer } +func (sc *serverConn) CloseConn() error { return sc.conn.Close() } +func (sc *serverConn) Flush() error { return sc.bw.Flush() } +func (sc *serverConn) HeaderEncoder() (*hpack.Encoder, *bytes.Buffer) { + return sc.hpackEncoder, &sc.headerWriteBuf +} + +func (sc *serverConn) state(streamID uint32) (streamState, *stream) { + sc.serveG.check() + // http://http2.github.io/http2-spec/#rfc.section.5.1 + if st, ok := sc.streams[streamID]; ok { + return st.state, st + } + // "The first use of a new stream identifier implicitly closes all + // streams in the "idle" state that might have been initiated by + // that peer with a lower-valued stream identifier. For example, if + // a client sends a HEADERS frame on stream 7 without ever sending a + // frame on stream 5, then stream 5 transitions to the "closed" + // state when the first frame for stream 7 is sent or received." + if streamID <= sc.maxStreamID { + return stateClosed, nil + } + return stateIdle, nil +} + +// setConnState calls the net/http ConnState hook for this connection, if configured. +// Note that the net/http package does StateNew and StateClosed for us. +// There is currently no plan for StateHijacked or hijacking HTTP/2 connections. +func (sc *serverConn) setConnState(state http.ConnState) { + if sc.hs.ConnState != nil { + sc.hs.ConnState(sc.conn, state) + } +} + +func (sc *serverConn) vlogf(format string, args ...interface{}) { + if VerboseLogs { + sc.logf(format, args...) + } +} + +func (sc *serverConn) logf(format string, args ...interface{}) { + if lg := sc.hs.ErrorLog; lg != nil { + lg.Printf(format, args...) + } else { + log.Printf(format, args...) + } +} + +// errno returns v's underlying uintptr, else 0. +// +// TODO: remove this helper function once http2 can use build +// tags. See comment in isClosedConnError. +func errno(v error) uintptr { + if rv := reflect.ValueOf(v); rv.Kind() == reflect.Uintptr { + return uintptr(rv.Uint()) + } + return 0 +} + +// isClosedConnError reports whether err is an error from use of a closed +// network connection. +func isClosedConnError(err error) bool { + if err == nil { + return false + } + + // TODO: remove this string search and be more like the Windows + // case below. That might involve modifying the standard library + // to return better error types. + str := err.Error() + if strings.Contains(str, "use of closed network connection") { + return true + } + + // TODO(bradfitz): x/tools/cmd/bundle doesn't really support + // build tags, so I can't make an http2_windows.go file with + // Windows-specific stuff. Fix that and move this, once we + // have a way to bundle this into std's net/http somehow. + if runtime.GOOS == "windows" { + if oe, ok := err.(*net.OpError); ok && oe.Op == "read" { + if se, ok := oe.Err.(*os.SyscallError); ok && se.Syscall == "wsarecv" { + const WSAECONNABORTED = 10053 + const WSAECONNRESET = 10054 + if n := errno(se.Err); n == WSAECONNRESET || n == WSAECONNABORTED { + return true + } + } + } + } + return false +} + +func (sc *serverConn) condlogf(err error, format string, args ...interface{}) { + if err == nil { + return + } + if err == io.EOF || err == io.ErrUnexpectedEOF || isClosedConnError(err) { + // Boring, expected errors. + sc.vlogf(format, args...) + } else { + sc.logf(format, args...) + } +} + +func (sc *serverConn) canonicalHeader(v string) string { + sc.serveG.check() + cv, ok := commonCanonHeader[v] + if ok { + return cv + } + cv, ok = sc.canonHeader[v] + if ok { + return cv + } + if sc.canonHeader == nil { + sc.canonHeader = make(map[string]string) + } + cv = http.CanonicalHeaderKey(v) + sc.canonHeader[v] = cv + return cv +} + +type readFrameResult struct { + f Frame // valid until readMore is called + err error + + // readMore should be called once the consumer no longer needs or + // retains f. After readMore, f is invalid and more frames can be + // read. + readMore func() +} + +// readFrames is the loop that reads incoming frames. +// It takes care to only read one frame at a time, blocking until the +// consumer is done with the frame. +// It's run on its own goroutine. +func (sc *serverConn) readFrames() { + gate := make(gate) + gateDone := gate.Done + for { + f, err := sc.framer.ReadFrame() + select { + case sc.readFrameCh <- readFrameResult{f, err, gateDone}: + case <-sc.doneServing: + return + } + select { + case <-gate: + case <-sc.doneServing: + return + } + if terminalReadFrameError(err) { + return + } + } +} + +// frameWriteResult is the message passed from writeFrameAsync to the serve goroutine. +type frameWriteResult struct { + wm frameWriteMsg // what was written (or attempted) + err error // result of the writeFrame call +} + +// writeFrameAsync runs in its own goroutine and writes a single frame +// and then reports when it's done. +// At most one goroutine can be running writeFrameAsync at a time per +// serverConn. +func (sc *serverConn) writeFrameAsync(wm frameWriteMsg) { + err := wm.write.writeFrame(sc) + sc.wroteFrameCh <- frameWriteResult{wm, err} +} + +func (sc *serverConn) closeAllStreamsOnConnClose() { + sc.serveG.check() + for _, st := range sc.streams { + sc.closeStream(st, errClientDisconnected) + } +} + +func (sc *serverConn) stopShutdownTimer() { + sc.serveG.check() + if t := sc.shutdownTimer; t != nil { + t.Stop() + } +} + +func (sc *serverConn) notePanic() { + // Note: this is for serverConn.serve panicking, not http.Handler code. + if testHookOnPanicMu != nil { + testHookOnPanicMu.Lock() + defer testHookOnPanicMu.Unlock() + } + if testHookOnPanic != nil { + if e := recover(); e != nil { + if testHookOnPanic(sc, e) { + panic(e) + } + } + } +} + +func (sc *serverConn) serve() { + sc.serveG.check() + defer sc.notePanic() + defer sc.conn.Close() + defer sc.closeAllStreamsOnConnClose() + defer sc.stopShutdownTimer() + defer close(sc.doneServing) // unblocks handlers trying to send + + if VerboseLogs { + sc.vlogf("http2: server connection from %v on %p", sc.conn.RemoteAddr(), sc.hs) + } + + sc.writeFrame(frameWriteMsg{ + write: writeSettings{ + {SettingMaxFrameSize, sc.srv.maxReadFrameSize()}, + {SettingMaxConcurrentStreams, sc.advMaxStreams}, + {SettingMaxHeaderListSize, sc.maxHeaderListSize()}, + + // TODO: more actual settings, notably + // SettingInitialWindowSize, but then we also + // want to bump up the conn window size the + // same amount here right after the settings + }, + }) + sc.unackedSettings++ + + if err := sc.readPreface(); err != nil { + sc.condlogf(err, "http2: server: error reading preface from client %v: %v", sc.conn.RemoteAddr(), err) + return + } + // Now that we've got the preface, get us out of the + // "StateNew" state. We can't go directly to idle, though. + // Active means we read some data and anticipate a request. We'll + // do another Active when we get a HEADERS frame. + sc.setConnState(http.StateActive) + sc.setConnState(http.StateIdle) + + go sc.readFrames() // closed by defer sc.conn.Close above + + settingsTimer := time.NewTimer(firstSettingsTimeout) + loopNum := 0 + for { + loopNum++ + select { + case wm := <-sc.wantWriteFrameCh: + sc.writeFrame(wm) + case res := <-sc.wroteFrameCh: + sc.wroteFrame(res) + case res := <-sc.readFrameCh: + if !sc.processFrameFromReader(res) { + return + } + res.readMore() + if settingsTimer.C != nil { + settingsTimer.Stop() + settingsTimer.C = nil + } + case m := <-sc.bodyReadCh: + sc.noteBodyRead(m.st, m.n) + case <-settingsTimer.C: + sc.logf("timeout waiting for SETTINGS frames from %v", sc.conn.RemoteAddr()) + return + case <-sc.shutdownTimerCh: + sc.vlogf("GOAWAY close timer fired; closing conn from %v", sc.conn.RemoteAddr()) + return + case fn := <-sc.testHookCh: + fn(loopNum) + } + } +} + +// readPreface reads the ClientPreface greeting from the peer +// or returns an error on timeout or an invalid greeting. +func (sc *serverConn) readPreface() error { + errc := make(chan error, 1) + go func() { + // Read the client preface + buf := make([]byte, len(ClientPreface)) + if _, err := io.ReadFull(sc.conn, buf); err != nil { + errc <- err + } else if !bytes.Equal(buf, clientPreface) { + errc <- fmt.Errorf("bogus greeting %q", buf) + } else { + errc <- nil + } + }() + timer := time.NewTimer(prefaceTimeout) // TODO: configurable on *Server? + defer timer.Stop() + select { + case <-timer.C: + return errors.New("timeout waiting for client preface") + case err := <-errc: + if err == nil { + if VerboseLogs { + sc.vlogf("http2: server: client %v said hello", sc.conn.RemoteAddr()) + } + } + return err + } +} + +var errChanPool = sync.Pool{ + New: func() interface{} { return make(chan error, 1) }, +} + +var writeDataPool = sync.Pool{ + New: func() interface{} { return new(writeData) }, +} + +// writeDataFromHandler writes DATA response frames from a handler on +// the given stream. +func (sc *serverConn) writeDataFromHandler(stream *stream, data []byte, endStream bool) error { + ch := errChanPool.Get().(chan error) + writeArg := writeDataPool.Get().(*writeData) + *writeArg = writeData{stream.id, data, endStream} + err := sc.writeFrameFromHandler(frameWriteMsg{ + write: writeArg, + stream: stream, + done: ch, + }) + if err != nil { + return err + } + var frameWriteDone bool // the frame write is done (successfully or not) + select { + case err = <-ch: + frameWriteDone = true + case <-sc.doneServing: + return errClientDisconnected + case <-stream.cw: + // If both ch and stream.cw were ready (as might + // happen on the final Write after an http.Handler + // ends), prefer the write result. Otherwise this + // might just be us successfully closing the stream. + // The writeFrameAsync and serve goroutines guarantee + // that the ch send will happen before the stream.cw + // close. + select { + case err = <-ch: + frameWriteDone = true + default: + return errStreamClosed + } + } + errChanPool.Put(ch) + if frameWriteDone { + writeDataPool.Put(writeArg) + } + return err +} + +// writeFrameFromHandler sends wm to sc.wantWriteFrameCh, but aborts +// if the connection has gone away. +// +// This must not be run from the serve goroutine itself, else it might +// deadlock writing to sc.wantWriteFrameCh (which is only mildly +// buffered and is read by serve itself). If you're on the serve +// goroutine, call writeFrame instead. +func (sc *serverConn) writeFrameFromHandler(wm frameWriteMsg) error { + sc.serveG.checkNotOn() // NOT + select { + case sc.wantWriteFrameCh <- wm: + return nil + case <-sc.doneServing: + // Serve loop is gone. + // Client has closed their connection to the server. + return errClientDisconnected + } +} + +// writeFrame schedules a frame to write and sends it if there's nothing +// already being written. +// +// There is no pushback here (the serve goroutine never blocks). It's +// the http.Handlers that block, waiting for their previous frames to +// make it onto the wire +// +// If you're not on the serve goroutine, use writeFrameFromHandler instead. +func (sc *serverConn) writeFrame(wm frameWriteMsg) { + sc.serveG.check() + + var ignoreWrite bool + + // Don't send a 100-continue response if we've already sent headers. + // See golang.org/issue/14030. + switch wm.write.(type) { + case *writeResHeaders: + wm.stream.wroteHeaders = true + case write100ContinueHeadersFrame: + if wm.stream.wroteHeaders { + ignoreWrite = true + } + } + + if !ignoreWrite { + sc.writeSched.add(wm) + } + sc.scheduleFrameWrite() +} + +// startFrameWrite starts a goroutine to write wm (in a separate +// goroutine since that might block on the network), and updates the +// serve goroutine's state about the world, updated from info in wm. +func (sc *serverConn) startFrameWrite(wm frameWriteMsg) { + sc.serveG.check() + if sc.writingFrame { + panic("internal error: can only be writing one frame at a time") + } + + st := wm.stream + if st != nil { + switch st.state { + case stateHalfClosedLocal: + panic("internal error: attempt to send frame on half-closed-local stream") + case stateClosed: + if st.sentReset || st.gotReset { + // Skip this frame. + sc.scheduleFrameWrite() + return + } + panic(fmt.Sprintf("internal error: attempt to send a write %v on a closed stream", wm)) + } + } + + sc.writingFrame = true + sc.needsFrameFlush = true + go sc.writeFrameAsync(wm) +} + +// errHandlerPanicked is the error given to any callers blocked in a read from +// Request.Body when the main goroutine panics. Since most handlers read in the +// the main ServeHTTP goroutine, this will show up rarely. +var errHandlerPanicked = errors.New("http2: handler panicked") + +// wroteFrame is called on the serve goroutine with the result of +// whatever happened on writeFrameAsync. +func (sc *serverConn) wroteFrame(res frameWriteResult) { + sc.serveG.check() + if !sc.writingFrame { + panic("internal error: expected to be already writing a frame") + } + sc.writingFrame = false + + wm := res.wm + st := wm.stream + + closeStream := endsStream(wm.write) + + if _, ok := wm.write.(handlerPanicRST); ok { + sc.closeStream(st, errHandlerPanicked) + } + + // Reply (if requested) to the blocked ServeHTTP goroutine. + if ch := wm.done; ch != nil { + select { + case ch <- res.err: + default: + panic(fmt.Sprintf("unbuffered done channel passed in for type %T", wm.write)) + } + } + wm.write = nil // prevent use (assume it's tainted after wm.done send) + + if closeStream { + if st == nil { + panic("internal error: expecting non-nil stream") + } + switch st.state { + case stateOpen: + // Here we would go to stateHalfClosedLocal in + // theory, but since our handler is done and + // the net/http package provides no mechanism + // for closing a ResponseWriter while still + // reading data (see possible TODO at top of + // this file), we go into closed state here + // anyway, after telling the peer we're + // hanging up on them. + st.state = stateHalfClosedLocal // won't last long, but necessary for closeStream via resetStream + errCancel := streamError(st.id, ErrCodeCancel) + sc.resetStream(errCancel) + case stateHalfClosedRemote: + sc.closeStream(st, errHandlerComplete) + } + } + + sc.scheduleFrameWrite() +} + +// scheduleFrameWrite tickles the frame writing scheduler. +// +// If a frame is already being written, nothing happens. This will be called again +// when the frame is done being written. +// +// If a frame isn't being written we need to send one, the best frame +// to send is selected, preferring first things that aren't +// stream-specific (e.g. ACKing settings), and then finding the +// highest priority stream. +// +// If a frame isn't being written and there's nothing else to send, we +// flush the write buffer. +func (sc *serverConn) scheduleFrameWrite() { + sc.serveG.check() + if sc.writingFrame { + return + } + if sc.needToSendGoAway { + sc.needToSendGoAway = false + sc.startFrameWrite(frameWriteMsg{ + write: &writeGoAway{ + maxStreamID: sc.maxStreamID, + code: sc.goAwayCode, + }, + }) + return + } + if sc.needToSendSettingsAck { + sc.needToSendSettingsAck = false + sc.startFrameWrite(frameWriteMsg{write: writeSettingsAck{}}) + return + } + if !sc.inGoAway { + if wm, ok := sc.writeSched.take(); ok { + sc.startFrameWrite(wm) + return + } + } + if sc.needsFrameFlush { + sc.startFrameWrite(frameWriteMsg{write: flushFrameWriter{}}) + sc.needsFrameFlush = false // after startFrameWrite, since it sets this true + return + } +} + +func (sc *serverConn) goAway(code ErrCode) { + sc.serveG.check() + if sc.inGoAway { + return + } + if code != ErrCodeNo { + sc.shutDownIn(250 * time.Millisecond) + } else { + // TODO: configurable + sc.shutDownIn(1 * time.Second) + } + sc.inGoAway = true + sc.needToSendGoAway = true + sc.goAwayCode = code + sc.scheduleFrameWrite() +} + +func (sc *serverConn) shutDownIn(d time.Duration) { + sc.serveG.check() + sc.shutdownTimer = time.NewTimer(d) + sc.shutdownTimerCh = sc.shutdownTimer.C +} + +func (sc *serverConn) resetStream(se StreamError) { + sc.serveG.check() + sc.writeFrame(frameWriteMsg{write: se}) + if st, ok := sc.streams[se.StreamID]; ok { + st.sentReset = true + sc.closeStream(st, se) + } +} + +// processFrameFromReader processes the serve loop's read from readFrameCh from the +// frame-reading goroutine. +// processFrameFromReader returns whether the connection should be kept open. +func (sc *serverConn) processFrameFromReader(res readFrameResult) bool { + sc.serveG.check() + err := res.err + if err != nil { + if err == ErrFrameTooLarge { + sc.goAway(ErrCodeFrameSize) + return true // goAway will close the loop + } + clientGone := err == io.EOF || err == io.ErrUnexpectedEOF || isClosedConnError(err) + if clientGone { + // TODO: could we also get into this state if + // the peer does a half close + // (e.g. CloseWrite) because they're done + // sending frames but they're still wanting + // our open replies? Investigate. + // TODO: add CloseWrite to crypto/tls.Conn first + // so we have a way to test this? I suppose + // just for testing we could have a non-TLS mode. + return false + } + } else { + f := res.f + if VerboseLogs { + sc.vlogf("http2: server read frame %v", summarizeFrame(f)) + } + err = sc.processFrame(f) + if err == nil { + return true + } + } + + switch ev := err.(type) { + case StreamError: + sc.resetStream(ev) + return true + case goAwayFlowError: + sc.goAway(ErrCodeFlowControl) + return true + case ConnectionError: + sc.logf("http2: server connection error from %v: %v", sc.conn.RemoteAddr(), ev) + sc.goAway(ErrCode(ev)) + return true // goAway will handle shutdown + default: + if res.err != nil { + sc.vlogf("http2: server closing client connection; error reading frame from client %s: %v", sc.conn.RemoteAddr(), err) + } else { + sc.logf("http2: server closing client connection: %v", err) + } + return false + } +} + +func (sc *serverConn) processFrame(f Frame) error { + sc.serveG.check() + + // First frame received must be SETTINGS. + if !sc.sawFirstSettings { + if _, ok := f.(*SettingsFrame); !ok { + return ConnectionError(ErrCodeProtocol) + } + sc.sawFirstSettings = true + } + + switch f := f.(type) { + case *SettingsFrame: + return sc.processSettings(f) + case *MetaHeadersFrame: + return sc.processHeaders(f) + case *WindowUpdateFrame: + return sc.processWindowUpdate(f) + case *PingFrame: + return sc.processPing(f) + case *DataFrame: + return sc.processData(f) + case *RSTStreamFrame: + return sc.processResetStream(f) + case *PriorityFrame: + return sc.processPriority(f) + case *PushPromiseFrame: + // A client cannot push. Thus, servers MUST treat the receipt of a PUSH_PROMISE + // frame as a connection error (Section 5.4.1) of type PROTOCOL_ERROR. + return ConnectionError(ErrCodeProtocol) + default: + sc.vlogf("http2: server ignoring frame: %v", f.Header()) + return nil + } +} + +func (sc *serverConn) processPing(f *PingFrame) error { + sc.serveG.check() + if f.IsAck() { + // 6.7 PING: " An endpoint MUST NOT respond to PING frames + // containing this flag." + return nil + } + if f.StreamID != 0 { + // "PING frames are not associated with any individual + // stream. If a PING frame is received with a stream + // identifier field value other than 0x0, the recipient MUST + // respond with a connection error (Section 5.4.1) of type + // PROTOCOL_ERROR." + return ConnectionError(ErrCodeProtocol) + } + sc.writeFrame(frameWriteMsg{write: writePingAck{f}}) + return nil +} + +func (sc *serverConn) processWindowUpdate(f *WindowUpdateFrame) error { + sc.serveG.check() + switch { + case f.StreamID != 0: // stream-level flow control + state, st := sc.state(f.StreamID) + if state == stateIdle { + // Section 5.1: "Receiving any frame other than HEADERS + // or PRIORITY on a stream in this state MUST be + // treated as a connection error (Section 5.4.1) of + // type PROTOCOL_ERROR." + return ConnectionError(ErrCodeProtocol) + } + if st == nil { + // "WINDOW_UPDATE can be sent by a peer that has sent a + // frame bearing the END_STREAM flag. This means that a + // receiver could receive a WINDOW_UPDATE frame on a "half + // closed (remote)" or "closed" stream. A receiver MUST + // NOT treat this as an error, see Section 5.1." + return nil + } + if !st.flow.add(int32(f.Increment)) { + return streamError(f.StreamID, ErrCodeFlowControl) + } + default: // connection-level flow control + if !sc.flow.add(int32(f.Increment)) { + return goAwayFlowError{} + } + } + sc.scheduleFrameWrite() + return nil +} + +func (sc *serverConn) processResetStream(f *RSTStreamFrame) error { + sc.serveG.check() + + state, st := sc.state(f.StreamID) + if state == stateIdle { + // 6.4 "RST_STREAM frames MUST NOT be sent for a + // stream in the "idle" state. If a RST_STREAM frame + // identifying an idle stream is received, the + // recipient MUST treat this as a connection error + // (Section 5.4.1) of type PROTOCOL_ERROR. + return ConnectionError(ErrCodeProtocol) + } + if st != nil { + st.gotReset = true + st.cancelCtx() + sc.closeStream(st, streamError(f.StreamID, f.ErrCode)) + } + return nil +} + +func (sc *serverConn) closeStream(st *stream, err error) { + sc.serveG.check() + if st.state == stateIdle || st.state == stateClosed { + panic(fmt.Sprintf("invariant; can't close stream in state %v", st.state)) + } + st.state = stateClosed + sc.curOpenStreams-- + if sc.curOpenStreams == 0 { + sc.setConnState(http.StateIdle) + } + delete(sc.streams, st.id) + if p := st.body; p != nil { + // Return any buffered unread bytes worth of conn-level flow control. + // See golang.org/issue/16481 + sc.sendWindowUpdate(nil, p.Len()) + + p.CloseWithError(err) + } + st.cw.Close() // signals Handler's CloseNotifier, unblocks writes, etc + sc.writeSched.forgetStream(st.id) +} + +func (sc *serverConn) processSettings(f *SettingsFrame) error { + sc.serveG.check() + if f.IsAck() { + sc.unackedSettings-- + if sc.unackedSettings < 0 { + // Why is the peer ACKing settings we never sent? + // The spec doesn't mention this case, but + // hang up on them anyway. + return ConnectionError(ErrCodeProtocol) + } + return nil + } + if err := f.ForeachSetting(sc.processSetting); err != nil { + return err + } + sc.needToSendSettingsAck = true + sc.scheduleFrameWrite() + return nil +} + +func (sc *serverConn) processSetting(s Setting) error { + sc.serveG.check() + if err := s.Valid(); err != nil { + return err + } + if VerboseLogs { + sc.vlogf("http2: server processing setting %v", s) + } + switch s.ID { + case SettingHeaderTableSize: + sc.headerTableSize = s.Val + sc.hpackEncoder.SetMaxDynamicTableSize(s.Val) + case SettingEnablePush: + sc.pushEnabled = s.Val != 0 + case SettingMaxConcurrentStreams: + sc.clientMaxStreams = s.Val + case SettingInitialWindowSize: + return sc.processSettingInitialWindowSize(s.Val) + case SettingMaxFrameSize: + sc.writeSched.maxFrameSize = s.Val + case SettingMaxHeaderListSize: + sc.peerMaxHeaderListSize = s.Val + default: + // Unknown setting: "An endpoint that receives a SETTINGS + // frame with any unknown or unsupported identifier MUST + // ignore that setting." + if VerboseLogs { + sc.vlogf("http2: server ignoring unknown setting %v", s) + } + } + return nil +} + +func (sc *serverConn) processSettingInitialWindowSize(val uint32) error { + sc.serveG.check() + // Note: val already validated to be within range by + // processSetting's Valid call. + + // "A SETTINGS frame can alter the initial flow control window + // size for all current streams. When the value of + // SETTINGS_INITIAL_WINDOW_SIZE changes, a receiver MUST + // adjust the size of all stream flow control windows that it + // maintains by the difference between the new value and the + // old value." + old := sc.initialWindowSize + sc.initialWindowSize = int32(val) + growth := sc.initialWindowSize - old // may be negative + for _, st := range sc.streams { + if !st.flow.add(growth) { + // 6.9.2 Initial Flow Control Window Size + // "An endpoint MUST treat a change to + // SETTINGS_INITIAL_WINDOW_SIZE that causes any flow + // control window to exceed the maximum size as a + // connection error (Section 5.4.1) of type + // FLOW_CONTROL_ERROR." + return ConnectionError(ErrCodeFlowControl) + } + } + return nil +} + +func (sc *serverConn) processData(f *DataFrame) error { + sc.serveG.check() + data := f.Data() + + // "If a DATA frame is received whose stream is not in "open" + // or "half closed (local)" state, the recipient MUST respond + // with a stream error (Section 5.4.2) of type STREAM_CLOSED." + id := f.Header().StreamID + state, st := sc.state(id) + if id == 0 || state == stateIdle { + // Section 5.1: "Receiving any frame other than HEADERS + // or PRIORITY on a stream in this state MUST be + // treated as a connection error (Section 5.4.1) of + // type PROTOCOL_ERROR." + return ConnectionError(ErrCodeProtocol) + } + if st == nil || state != stateOpen || st.gotTrailerHeader { + // This includes sending a RST_STREAM if the stream is + // in stateHalfClosedLocal (which currently means that + // the http.Handler returned, so it's done reading & + // done writing). Try to stop the client from sending + // more DATA. + + // But still enforce their connection-level flow control, + // and return any flow control bytes since we're not going + // to consume them. + if sc.inflow.available() < int32(f.Length) { + return streamError(id, ErrCodeFlowControl) + } + // Deduct the flow control from inflow, since we're + // going to immediately add it back in + // sendWindowUpdate, which also schedules sending the + // frames. + sc.inflow.take(int32(f.Length)) + sc.sendWindowUpdate(nil, int(f.Length)) // conn-level + + return streamError(id, ErrCodeStreamClosed) + } + if st.body == nil { + panic("internal error: should have a body in this state") + } + + // Sender sending more than they'd declared? + if st.declBodyBytes != -1 && st.bodyBytes+int64(len(data)) > st.declBodyBytes { + st.body.CloseWithError(fmt.Errorf("sender tried to send more than declared Content-Length of %d bytes", st.declBodyBytes)) + return streamError(id, ErrCodeStreamClosed) + } + if f.Length > 0 { + // Check whether the client has flow control quota. + if st.inflow.available() < int32(f.Length) { + return streamError(id, ErrCodeFlowControl) + } + st.inflow.take(int32(f.Length)) + + if len(data) > 0 { + wrote, err := st.body.Write(data) + if err != nil { + return streamError(id, ErrCodeStreamClosed) + } + if wrote != len(data) { + panic("internal error: bad Writer") + } + st.bodyBytes += int64(len(data)) + } + + // Return any padded flow control now, since we won't + // refund it later on body reads. + if pad := int32(f.Length) - int32(len(data)); pad > 0 { + sc.sendWindowUpdate32(nil, pad) + sc.sendWindowUpdate32(st, pad) + } + } + if f.StreamEnded() { + st.endStream() + } + return nil +} + +// endStream closes a Request.Body's pipe. It is called when a DATA +// frame says a request body is over (or after trailers). +func (st *stream) endStream() { + sc := st.sc + sc.serveG.check() + + if st.declBodyBytes != -1 && st.declBodyBytes != st.bodyBytes { + st.body.CloseWithError(fmt.Errorf("request declared a Content-Length of %d but only wrote %d bytes", + st.declBodyBytes, st.bodyBytes)) + } else { + st.body.closeWithErrorAndCode(io.EOF, st.copyTrailersToHandlerRequest) + st.body.CloseWithError(io.EOF) + } + st.state = stateHalfClosedRemote +} + +// copyTrailersToHandlerRequest is run in the Handler's goroutine in +// its Request.Body.Read just before it gets io.EOF. +func (st *stream) copyTrailersToHandlerRequest() { + for k, vv := range st.trailer { + if _, ok := st.reqTrailer[k]; ok { + // Only copy it over it was pre-declared. + st.reqTrailer[k] = vv + } + } +} + +func (sc *serverConn) processHeaders(f *MetaHeadersFrame) error { + sc.serveG.check() + id := f.Header().StreamID + if sc.inGoAway { + // Ignore. + return nil + } + // http://http2.github.io/http2-spec/#rfc.section.5.1.1 + // Streams initiated by a client MUST use odd-numbered stream + // identifiers. [...] An endpoint that receives an unexpected + // stream identifier MUST respond with a connection error + // (Section 5.4.1) of type PROTOCOL_ERROR. + if id%2 != 1 { + return ConnectionError(ErrCodeProtocol) + } + // A HEADERS frame can be used to create a new stream or + // send a trailer for an open one. If we already have a stream + // open, let it process its own HEADERS frame (trailers at this + // point, if it's valid). + st := sc.streams[f.Header().StreamID] + if st != nil { + return st.processTrailerHeaders(f) + } + + // [...] The identifier of a newly established stream MUST be + // numerically greater than all streams that the initiating + // endpoint has opened or reserved. [...] An endpoint that + // receives an unexpected stream identifier MUST respond with + // a connection error (Section 5.4.1) of type PROTOCOL_ERROR. + if id <= sc.maxStreamID { + return ConnectionError(ErrCodeProtocol) + } + sc.maxStreamID = id + + ctx, cancelCtx := contextWithCancel(sc.baseCtx) + st = &stream{ + sc: sc, + id: id, + state: stateOpen, + ctx: ctx, + cancelCtx: cancelCtx, + } + if f.StreamEnded() { + st.state = stateHalfClosedRemote + } + st.cw.Init() + + st.flow.conn = &sc.flow // link to conn-level counter + st.flow.add(sc.initialWindowSize) + st.inflow.conn = &sc.inflow // link to conn-level counter + st.inflow.add(initialWindowSize) // TODO: update this when we send a higher initial window size in the initial settings + + sc.streams[id] = st + if f.HasPriority() { + adjustStreamPriority(sc.streams, st.id, f.Priority) + } + sc.curOpenStreams++ + if sc.curOpenStreams == 1 { + sc.setConnState(http.StateActive) + } + if sc.curOpenStreams > sc.advMaxStreams { + // "Endpoints MUST NOT exceed the limit set by their + // peer. An endpoint that receives a HEADERS frame + // that causes their advertised concurrent stream + // limit to be exceeded MUST treat this as a stream + // error (Section 5.4.2) of type PROTOCOL_ERROR or + // REFUSED_STREAM." + if sc.unackedSettings == 0 { + // They should know better. + return streamError(st.id, ErrCodeProtocol) + } + // Assume it's a network race, where they just haven't + // received our last SETTINGS update. But actually + // this can't happen yet, because we don't yet provide + // a way for users to adjust server parameters at + // runtime. + return streamError(st.id, ErrCodeRefusedStream) + } + + rw, req, err := sc.newWriterAndRequest(st, f) + if err != nil { + return err + } + st.reqTrailer = req.Trailer + if st.reqTrailer != nil { + st.trailer = make(http.Header) + } + st.body = req.Body.(*requestBody).pipe // may be nil + st.declBodyBytes = req.ContentLength + + handler := sc.handler.ServeHTTP + if f.Truncated { + // Their header list was too long. Send a 431 error. + handler = handleHeaderListTooLong + } else if err := checkValidHTTP2Request(req); err != nil { + handler = new400Handler(err) + } + + // The net/http package sets the read deadline from the + // http.Server.ReadTimeout during the TLS handshake, but then + // passes the connection off to us with the deadline already + // set. Disarm it here after the request headers are read, similar + // to how the http1 server works. + // Unlike http1, though, we never re-arm it yet, though. + // TODO(bradfitz): figure out golang.org/issue/14204 + // (IdleTimeout) and how this relates. Maybe the default + // IdleTimeout is ReadTimeout. + if sc.hs.ReadTimeout != 0 { + sc.conn.SetReadDeadline(time.Time{}) + } + + go sc.runHandler(rw, req, handler) + return nil +} + +func (st *stream) processTrailerHeaders(f *MetaHeadersFrame) error { + sc := st.sc + sc.serveG.check() + if st.gotTrailerHeader { + return ConnectionError(ErrCodeProtocol) + } + st.gotTrailerHeader = true + if !f.StreamEnded() { + return streamError(st.id, ErrCodeProtocol) + } + + if len(f.PseudoFields()) > 0 { + return streamError(st.id, ErrCodeProtocol) + } + if st.trailer != nil { + for _, hf := range f.RegularFields() { + key := sc.canonicalHeader(hf.Name) + if !ValidTrailerHeader(key) { + // TODO: send more details to the peer somehow. But http2 has + // no way to send debug data at a stream level. Discuss with + // HTTP folk. + return streamError(st.id, ErrCodeProtocol) + } + st.trailer[key] = append(st.trailer[key], hf.Value) + } + } + st.endStream() + return nil +} + +func (sc *serverConn) processPriority(f *PriorityFrame) error { + adjustStreamPriority(sc.streams, f.StreamID, f.PriorityParam) + return nil +} + +func adjustStreamPriority(streams map[uint32]*stream, streamID uint32, priority PriorityParam) { + st, ok := streams[streamID] + if !ok { + // TODO: not quite correct (this streamID might + // already exist in the dep tree, but be closed), but + // close enough for now. + return + } + st.weight = priority.Weight + parent := streams[priority.StreamDep] // might be nil + if parent == st { + // if client tries to set this stream to be the parent of itself + // ignore and keep going + return + } + + // section 5.3.3: If a stream is made dependent on one of its + // own dependencies, the formerly dependent stream is first + // moved to be dependent on the reprioritized stream's previous + // parent. The moved dependency retains its weight. + for piter := parent; piter != nil; piter = piter.parent { + if piter == st { + parent.parent = st.parent + break + } + } + st.parent = parent + if priority.Exclusive && (st.parent != nil || priority.StreamDep == 0) { + for _, openStream := range streams { + if openStream != st && openStream.parent == st.parent { + openStream.parent = st + } + } + } +} + +func (sc *serverConn) newWriterAndRequest(st *stream, f *MetaHeadersFrame) (*responseWriter, *http.Request, error) { + sc.serveG.check() + + method := f.PseudoValue("method") + path := f.PseudoValue("path") + scheme := f.PseudoValue("scheme") + authority := f.PseudoValue("authority") + + isConnect := method == "CONNECT" + if isConnect { + if path != "" || scheme != "" || authority == "" { + return nil, nil, streamError(f.StreamID, ErrCodeProtocol) + } + } else if method == "" || path == "" || + (scheme != "https" && scheme != "http") { + // See 8.1.2.6 Malformed Requests and Responses: + // + // Malformed requests or responses that are detected + // MUST be treated as a stream error (Section 5.4.2) + // of type PROTOCOL_ERROR." + // + // 8.1.2.3 Request Pseudo-Header Fields + // "All HTTP/2 requests MUST include exactly one valid + // value for the :method, :scheme, and :path + // pseudo-header fields" + return nil, nil, streamError(f.StreamID, ErrCodeProtocol) + } + + bodyOpen := !f.StreamEnded() + if method == "HEAD" && bodyOpen { + // HEAD requests can't have bodies + return nil, nil, streamError(f.StreamID, ErrCodeProtocol) + } + var tlsState *tls.ConnectionState // nil if not scheme https + + if scheme == "https" { + tlsState = sc.tlsState + } + + header := make(http.Header) + for _, hf := range f.RegularFields() { + header.Add(sc.canonicalHeader(hf.Name), hf.Value) + } + + if authority == "" { + authority = header.Get("Host") + } + needsContinue := header.Get("Expect") == "100-continue" + if needsContinue { + header.Del("Expect") + } + // Merge Cookie headers into one "; "-delimited value. + if cookies := header["Cookie"]; len(cookies) > 1 { + header.Set("Cookie", strings.Join(cookies, "; ")) + } + + // Setup Trailers + var trailer http.Header + for _, v := range header["Trailer"] { + for _, key := range strings.Split(v, ",") { + key = http.CanonicalHeaderKey(strings.TrimSpace(key)) + switch key { + case "Transfer-Encoding", "Trailer", "Content-Length": + // Bogus. (copy of http1 rules) + // Ignore. + default: + if trailer == nil { + trailer = make(http.Header) + } + trailer[key] = nil + } + } + } + delete(header, "Trailer") + + body := &requestBody{ + conn: sc, + stream: st, + needsContinue: needsContinue, + } + var url_ *url.URL + var requestURI string + if isConnect { + url_ = &url.URL{Host: authority} + requestURI = authority // mimic HTTP/1 server behavior + } else { + var err error + url_, err = url.ParseRequestURI(path) + if err != nil { + return nil, nil, streamError(f.StreamID, ErrCodeProtocol) + } + requestURI = path + } + req := &http.Request{ + Method: method, + URL: url_, + RemoteAddr: sc.remoteAddrStr, + Header: header, + RequestURI: requestURI, + Proto: "HTTP/2.0", + ProtoMajor: 2, + ProtoMinor: 0, + TLS: tlsState, + Host: authority, + Body: body, + Trailer: trailer, + } + req = requestWithContext(req, st.ctx) + if bodyOpen { + st.reqBuf = getRequestBodyBuf() + body.pipe = &pipe{ + b: &fixedBuffer{buf: st.reqBuf}, + } + + if vv, ok := header["Content-Length"]; ok { + req.ContentLength, _ = strconv.ParseInt(vv[0], 10, 64) + } else { + req.ContentLength = -1 + } + } + + rws := responseWriterStatePool.Get().(*responseWriterState) + bwSave := rws.bw + *rws = responseWriterState{} // zero all the fields + rws.conn = sc + rws.bw = bwSave + rws.bw.Reset(chunkWriter{rws}) + rws.stream = st + rws.req = req + rws.body = body + + rw := &responseWriter{rws: rws} + return rw, req, nil +} + +var reqBodyCache = make(chan []byte, 8) + +func getRequestBodyBuf() []byte { + select { + case b := <-reqBodyCache: + return b + default: + return make([]byte, initialWindowSize) + } +} + +func putRequestBodyBuf(b []byte) { + select { + case reqBodyCache <- b: + default: + } +} + +// Run on its own goroutine. +func (sc *serverConn) runHandler(rw *responseWriter, req *http.Request, handler func(http.ResponseWriter, *http.Request)) { + didPanic := true + defer func() { + rw.rws.stream.cancelCtx() + if didPanic { + e := recover() + // Same as net/http: + const size = 64 << 10 + buf := make([]byte, size) + buf = buf[:runtime.Stack(buf, false)] + sc.writeFrameFromHandler(frameWriteMsg{ + write: handlerPanicRST{rw.rws.stream.id}, + stream: rw.rws.stream, + }) + sc.logf("http2: panic serving %v: %v\n%s", sc.conn.RemoteAddr(), e, buf) + return + } + rw.handlerDone() + }() + handler(rw, req) + didPanic = false +} + +func handleHeaderListTooLong(w http.ResponseWriter, r *http.Request) { + // 10.5.1 Limits on Header Block Size: + // .. "A server that receives a larger header block than it is + // willing to handle can send an HTTP 431 (Request Header Fields Too + // Large) status code" + const statusRequestHeaderFieldsTooLarge = 431 // only in Go 1.6+ + w.WriteHeader(statusRequestHeaderFieldsTooLarge) + io.WriteString(w, "

      HTTP Error 431

      Request Header Field(s) Too Large

      ") +} + +// called from handler goroutines. +// h may be nil. +func (sc *serverConn) writeHeaders(st *stream, headerData *writeResHeaders) error { + sc.serveG.checkNotOn() // NOT on + var errc chan error + if headerData.h != nil { + // If there's a header map (which we don't own), so we have to block on + // waiting for this frame to be written, so an http.Flush mid-handler + // writes out the correct value of keys, before a handler later potentially + // mutates it. + errc = errChanPool.Get().(chan error) + } + if err := sc.writeFrameFromHandler(frameWriteMsg{ + write: headerData, + stream: st, + done: errc, + }); err != nil { + return err + } + if errc != nil { + select { + case err := <-errc: + errChanPool.Put(errc) + return err + case <-sc.doneServing: + return errClientDisconnected + case <-st.cw: + return errStreamClosed + } + } + return nil +} + +// called from handler goroutines. +func (sc *serverConn) write100ContinueHeaders(st *stream) { + sc.writeFrameFromHandler(frameWriteMsg{ + write: write100ContinueHeadersFrame{st.id}, + stream: st, + }) +} + +// A bodyReadMsg tells the server loop that the http.Handler read n +// bytes of the DATA from the client on the given stream. +type bodyReadMsg struct { + st *stream + n int +} + +// called from handler goroutines. +// Notes that the handler for the given stream ID read n bytes of its body +// and schedules flow control tokens to be sent. +func (sc *serverConn) noteBodyReadFromHandler(st *stream, n int, err error) { + sc.serveG.checkNotOn() // NOT on + if n > 0 { + select { + case sc.bodyReadCh <- bodyReadMsg{st, n}: + case <-sc.doneServing: + } + } + if err == io.EOF { + if buf := st.reqBuf; buf != nil { + st.reqBuf = nil // shouldn't matter; field unused by other + putRequestBodyBuf(buf) + } + } +} + +func (sc *serverConn) noteBodyRead(st *stream, n int) { + sc.serveG.check() + sc.sendWindowUpdate(nil, n) // conn-level + if st.state != stateHalfClosedRemote && st.state != stateClosed { + // Don't send this WINDOW_UPDATE if the stream is closed + // remotely. + sc.sendWindowUpdate(st, n) + } +} + +// st may be nil for conn-level +func (sc *serverConn) sendWindowUpdate(st *stream, n int) { + sc.serveG.check() + // "The legal range for the increment to the flow control + // window is 1 to 2^31-1 (2,147,483,647) octets." + // A Go Read call on 64-bit machines could in theory read + // a larger Read than this. Very unlikely, but we handle it here + // rather than elsewhere for now. + const maxUint31 = 1<<31 - 1 + for n >= maxUint31 { + sc.sendWindowUpdate32(st, maxUint31) + n -= maxUint31 + } + sc.sendWindowUpdate32(st, int32(n)) +} + +// st may be nil for conn-level +func (sc *serverConn) sendWindowUpdate32(st *stream, n int32) { + sc.serveG.check() + if n == 0 { + return + } + if n < 0 { + panic("negative update") + } + var streamID uint32 + if st != nil { + streamID = st.id + } + sc.writeFrame(frameWriteMsg{ + write: writeWindowUpdate{streamID: streamID, n: uint32(n)}, + stream: st, + }) + var ok bool + if st == nil { + ok = sc.inflow.add(n) + } else { + ok = st.inflow.add(n) + } + if !ok { + panic("internal error; sent too many window updates without decrements?") + } +} + +// requestBody is the Handler's Request.Body type. +// Read and Close may be called concurrently. +type requestBody struct { + stream *stream + conn *serverConn + closed bool // for use by Close only + sawEOF bool // for use by Read only + pipe *pipe // non-nil if we have a HTTP entity message body + needsContinue bool // need to send a 100-continue +} + +func (b *requestBody) Close() error { + if b.pipe != nil && !b.closed { + b.pipe.BreakWithError(errClosedBody) + } + b.closed = true + return nil +} + +func (b *requestBody) Read(p []byte) (n int, err error) { + if b.needsContinue { + b.needsContinue = false + b.conn.write100ContinueHeaders(b.stream) + } + if b.pipe == nil || b.sawEOF { + return 0, io.EOF + } + n, err = b.pipe.Read(p) + if err == io.EOF { + b.sawEOF = true + } + if b.conn == nil && inTests { + return + } + b.conn.noteBodyReadFromHandler(b.stream, n, err) + return +} + +// responseWriter is the http.ResponseWriter implementation. It's +// intentionally small (1 pointer wide) to minimize garbage. The +// responseWriterState pointer inside is zeroed at the end of a +// request (in handlerDone) and calls on the responseWriter thereafter +// simply crash (caller's mistake), but the much larger responseWriterState +// and buffers are reused between multiple requests. +type responseWriter struct { + rws *responseWriterState +} + +// Optional http.ResponseWriter interfaces implemented. +var ( + _ http.CloseNotifier = (*responseWriter)(nil) + _ http.Flusher = (*responseWriter)(nil) + _ stringWriter = (*responseWriter)(nil) +) + +type responseWriterState struct { + // immutable within a request: + stream *stream + req *http.Request + body *requestBody // to close at end of request, if DATA frames didn't + conn *serverConn + + // TODO: adjust buffer writing sizes based on server config, frame size updates from peer, etc + bw *bufio.Writer // writing to a chunkWriter{this *responseWriterState} + + // mutated by http.Handler goroutine: + handlerHeader http.Header // nil until called + snapHeader http.Header // snapshot of handlerHeader at WriteHeader time + trailers []string // set in writeChunk + status int // status code passed to WriteHeader + wroteHeader bool // WriteHeader called (explicitly or implicitly). Not necessarily sent to user yet. + sentHeader bool // have we sent the header frame? + handlerDone bool // handler has finished + + sentContentLen int64 // non-zero if handler set a Content-Length header + wroteBytes int64 + + closeNotifierMu sync.Mutex // guards closeNotifierCh + closeNotifierCh chan bool // nil until first used +} + +type chunkWriter struct{ rws *responseWriterState } + +func (cw chunkWriter) Write(p []byte) (n int, err error) { return cw.rws.writeChunk(p) } + +func (rws *responseWriterState) hasTrailers() bool { return len(rws.trailers) != 0 } + +// declareTrailer is called for each Trailer header when the +// response header is written. It notes that a header will need to be +// written in the trailers at the end of the response. +func (rws *responseWriterState) declareTrailer(k string) { + k = http.CanonicalHeaderKey(k) + if !ValidTrailerHeader(k) { + // Forbidden by RFC 2616 14.40. + rws.conn.logf("ignoring invalid trailer %q", k) + return + } + if !strSliceContains(rws.trailers, k) { + rws.trailers = append(rws.trailers, k) + } +} + +// writeChunk writes chunks from the bufio.Writer. But because +// bufio.Writer may bypass its chunking, sometimes p may be +// arbitrarily large. +// +// writeChunk is also responsible (on the first chunk) for sending the +// HEADER response. +func (rws *responseWriterState) writeChunk(p []byte) (n int, err error) { + if !rws.wroteHeader { + rws.writeHeader(200) + } + + isHeadResp := rws.req.Method == "HEAD" + if !rws.sentHeader { + rws.sentHeader = true + var ctype, clen string + if clen = rws.snapHeader.Get("Content-Length"); clen != "" { + rws.snapHeader.Del("Content-Length") + clen64, err := strconv.ParseInt(clen, 10, 64) + if err == nil && clen64 >= 0 { + rws.sentContentLen = clen64 + } else { + clen = "" + } + } + if clen == "" && rws.handlerDone && bodyAllowedForStatus(rws.status) && (len(p) > 0 || !isHeadResp) { + clen = strconv.Itoa(len(p)) + } + _, hasContentType := rws.snapHeader["Content-Type"] + if !hasContentType && bodyAllowedForStatus(rws.status) { + ctype = http.DetectContentType(p) + } + var date string + if _, ok := rws.snapHeader["Date"]; !ok { + // TODO(bradfitz): be faster here, like net/http? measure. + date = time.Now().UTC().Format(http.TimeFormat) + } + + for _, v := range rws.snapHeader["Trailer"] { + foreachHeaderElement(v, rws.declareTrailer) + } + + endStream := (rws.handlerDone && !rws.hasTrailers() && len(p) == 0) || isHeadResp + err = rws.conn.writeHeaders(rws.stream, &writeResHeaders{ + streamID: rws.stream.id, + httpResCode: rws.status, + h: rws.snapHeader, + endStream: endStream, + contentType: ctype, + contentLength: clen, + date: date, + }) + if err != nil { + return 0, err + } + if endStream { + return 0, nil + } + } + if isHeadResp { + return len(p), nil + } + if len(p) == 0 && !rws.handlerDone { + return 0, nil + } + + if rws.handlerDone { + rws.promoteUndeclaredTrailers() + } + + endStream := rws.handlerDone && !rws.hasTrailers() + if len(p) > 0 || endStream { + // only send a 0 byte DATA frame if we're ending the stream. + if err := rws.conn.writeDataFromHandler(rws.stream, p, endStream); err != nil { + return 0, err + } + } + + if rws.handlerDone && rws.hasTrailers() { + err = rws.conn.writeHeaders(rws.stream, &writeResHeaders{ + streamID: rws.stream.id, + h: rws.handlerHeader, + trailers: rws.trailers, + endStream: true, + }) + return len(p), err + } + return len(p), nil +} + +// TrailerPrefix is a magic prefix for ResponseWriter.Header map keys +// that, if present, signals that the map entry is actually for +// the response trailers, and not the response headers. The prefix +// is stripped after the ServeHTTP call finishes and the values are +// sent in the trailers. +// +// This mechanism is intended only for trailers that are not known +// prior to the headers being written. If the set of trailers is fixed +// or known before the header is written, the normal Go trailers mechanism +// is preferred: +// https://golang.org/pkg/net/http/#ResponseWriter +// https://golang.org/pkg/net/http/#example_ResponseWriter_trailers +const TrailerPrefix = "Trailer:" + +// promoteUndeclaredTrailers permits http.Handlers to set trailers +// after the header has already been flushed. Because the Go +// ResponseWriter interface has no way to set Trailers (only the +// Header), and because we didn't want to expand the ResponseWriter +// interface, and because nobody used trailers, and because RFC 2616 +// says you SHOULD (but not must) predeclare any trailers in the +// header, the official ResponseWriter rules said trailers in Go must +// be predeclared, and then we reuse the same ResponseWriter.Header() +// map to mean both Headers and Trailers. When it's time to write the +// Trailers, we pick out the fields of Headers that were declared as +// trailers. That worked for a while, until we found the first major +// user of Trailers in the wild: gRPC (using them only over http2), +// and gRPC libraries permit setting trailers mid-stream without +// predeclarnig them. So: change of plans. We still permit the old +// way, but we also permit this hack: if a Header() key begins with +// "Trailer:", the suffix of that key is a Trailer. Because ':' is an +// invalid token byte anyway, there is no ambiguity. (And it's already +// filtered out) It's mildly hacky, but not terrible. +// +// This method runs after the Handler is done and promotes any Header +// fields to be trailers. +func (rws *responseWriterState) promoteUndeclaredTrailers() { + for k, vv := range rws.handlerHeader { + if !strings.HasPrefix(k, TrailerPrefix) { + continue + } + trailerKey := strings.TrimPrefix(k, TrailerPrefix) + rws.declareTrailer(trailerKey) + rws.handlerHeader[http.CanonicalHeaderKey(trailerKey)] = vv + } + + if len(rws.trailers) > 1 { + sorter := sorterPool.Get().(*sorter) + sorter.SortStrings(rws.trailers) + sorterPool.Put(sorter) + } +} + +func (w *responseWriter) Flush() { + rws := w.rws + if rws == nil { + panic("Header called after Handler finished") + } + if rws.bw.Buffered() > 0 { + if err := rws.bw.Flush(); err != nil { + // Ignore the error. The frame writer already knows. + return + } + } else { + // The bufio.Writer won't call chunkWriter.Write + // (writeChunk with zero bytes, so we have to do it + // ourselves to force the HTTP response header and/or + // final DATA frame (with END_STREAM) to be sent. + rws.writeChunk(nil) + } +} + +func (w *responseWriter) CloseNotify() <-chan bool { + rws := w.rws + if rws == nil { + panic("CloseNotify called after Handler finished") + } + rws.closeNotifierMu.Lock() + ch := rws.closeNotifierCh + if ch == nil { + ch = make(chan bool, 1) + rws.closeNotifierCh = ch + go func() { + rws.stream.cw.Wait() // wait for close + ch <- true + }() + } + rws.closeNotifierMu.Unlock() + return ch +} + +func (w *responseWriter) Header() http.Header { + rws := w.rws + if rws == nil { + panic("Header called after Handler finished") + } + if rws.handlerHeader == nil { + rws.handlerHeader = make(http.Header) + } + return rws.handlerHeader +} + +func (w *responseWriter) WriteHeader(code int) { + rws := w.rws + if rws == nil { + panic("WriteHeader called after Handler finished") + } + rws.writeHeader(code) +} + +func (rws *responseWriterState) writeHeader(code int) { + if !rws.wroteHeader { + rws.wroteHeader = true + rws.status = code + if len(rws.handlerHeader) > 0 { + rws.snapHeader = cloneHeader(rws.handlerHeader) + } + } +} + +func cloneHeader(h http.Header) http.Header { + h2 := make(http.Header, len(h)) + for k, vv := range h { + vv2 := make([]string, len(vv)) + copy(vv2, vv) + h2[k] = vv2 + } + return h2 +} + +// The Life Of A Write is like this: +// +// * Handler calls w.Write or w.WriteString -> +// * -> rws.bw (*bufio.Writer) -> +// * (Handler migth call Flush) +// * -> chunkWriter{rws} +// * -> responseWriterState.writeChunk(p []byte) +// * -> responseWriterState.writeChunk (most of the magic; see comment there) +func (w *responseWriter) Write(p []byte) (n int, err error) { + return w.write(len(p), p, "") +} + +func (w *responseWriter) WriteString(s string) (n int, err error) { + return w.write(len(s), nil, s) +} + +// either dataB or dataS is non-zero. +func (w *responseWriter) write(lenData int, dataB []byte, dataS string) (n int, err error) { + rws := w.rws + if rws == nil { + panic("Write called after Handler finished") + } + if !rws.wroteHeader { + w.WriteHeader(200) + } + if !bodyAllowedForStatus(rws.status) { + return 0, http.ErrBodyNotAllowed + } + rws.wroteBytes += int64(len(dataB)) + int64(len(dataS)) // only one can be set + if rws.sentContentLen != 0 && rws.wroteBytes > rws.sentContentLen { + // TODO: send a RST_STREAM + return 0, errors.New("http2: handler wrote more than declared Content-Length") + } + + if dataB != nil { + return rws.bw.Write(dataB) + } else { + return rws.bw.WriteString(dataS) + } +} + +func (w *responseWriter) handlerDone() { + rws := w.rws + rws.handlerDone = true + w.Flush() + w.rws = nil + responseWriterStatePool.Put(rws) +} + +// foreachHeaderElement splits v according to the "#rule" construction +// in RFC 2616 section 2.1 and calls fn for each non-empty element. +func foreachHeaderElement(v string, fn func(string)) { + v = textproto.TrimString(v) + if v == "" { + return + } + if !strings.Contains(v, ",") { + fn(v) + return + } + for _, f := range strings.Split(v, ",") { + if f = textproto.TrimString(f); f != "" { + fn(f) + } + } +} + +// From http://httpwg.org/specs/rfc7540.html#rfc.section.8.1.2.2 +var connHeaders = []string{ + "Connection", + "Keep-Alive", + "Proxy-Connection", + "Transfer-Encoding", + "Upgrade", +} + +// checkValidHTTP2Request checks whether req is a valid HTTP/2 request, +// per RFC 7540 Section 8.1.2.2. +// The returned error is reported to users. +func checkValidHTTP2Request(req *http.Request) error { + for _, h := range connHeaders { + if _, ok := req.Header[h]; ok { + return fmt.Errorf("request header %q is not valid in HTTP/2", h) + } + } + te := req.Header["Te"] + if len(te) > 0 && (len(te) > 1 || (te[0] != "trailers" && te[0] != "")) { + return errors.New(`request header "TE" may only be "trailers" in HTTP/2`) + } + return nil +} + +func new400Handler(err error) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + http.Error(w, err.Error(), http.StatusBadRequest) + } +} + +// ValidTrailerHeader reports whether name is a valid header field name to appear +// in trailers. +// See: http://tools.ietf.org/html/rfc7230#section-4.1.2 +func ValidTrailerHeader(name string) bool { + name = http.CanonicalHeaderKey(name) + if strings.HasPrefix(name, "If-") || badTrailer[name] { + return false + } + return true +} + +var badTrailer = map[string]bool{ + "Authorization": true, + "Cache-Control": true, + "Connection": true, + "Content-Encoding": true, + "Content-Length": true, + "Content-Range": true, + "Content-Type": true, + "Expect": true, + "Host": true, + "Keep-Alive": true, + "Max-Forwards": true, + "Pragma": true, + "Proxy-Authenticate": true, + "Proxy-Authorization": true, + "Proxy-Connection": true, + "Range": true, + "Realm": true, + "Te": true, + "Trailer": true, + "Transfer-Encoding": true, + "Www-Authenticate": true, +} diff --git a/vendor/golang.org/x/net/http2/transport.go b/vendor/golang.org/x/net/http2/transport.go new file mode 100644 index 0000000..129c8e0 --- /dev/null +++ b/vendor/golang.org/x/net/http2/transport.go @@ -0,0 +1,2063 @@ +// 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. + +// Transport code. + +package http2 + +import ( + "bufio" + "bytes" + "compress/gzip" + "crypto/rand" + "crypto/tls" + "errors" + "fmt" + "io" + "io/ioutil" + "log" + "math" + "net" + "net/http" + "sort" + "strconv" + "strings" + "sync" + "time" + + "golang.org/x/net/http2/hpack" + "golang.org/x/net/idna" + "golang.org/x/net/lex/httplex" +) + +const ( + // transportDefaultConnFlow is how many connection-level flow control + // tokens we give the server at start-up, past the default 64k. + transportDefaultConnFlow = 1 << 30 + + // transportDefaultStreamFlow is how many stream-level flow + // control tokens we announce to the peer, and how many bytes + // we buffer per stream. + transportDefaultStreamFlow = 4 << 20 + + // transportDefaultStreamMinRefresh is the minimum number of bytes we'll send + // a stream-level WINDOW_UPDATE for at a time. + transportDefaultStreamMinRefresh = 4 << 10 + + defaultUserAgent = "Go-http-client/2.0" +) + +// Transport is an HTTP/2 Transport. +// +// A Transport internally caches connections to servers. It is safe +// for concurrent use by multiple goroutines. +type Transport struct { + // DialTLS specifies an optional dial function for creating + // TLS connections for requests. + // + // If DialTLS is nil, tls.Dial is used. + // + // If the returned net.Conn has a ConnectionState method like tls.Conn, + // it will be used to set http.Response.TLS. + DialTLS func(network, addr string, cfg *tls.Config) (net.Conn, error) + + // TLSClientConfig specifies the TLS configuration to use with + // tls.Client. If nil, the default configuration is used. + TLSClientConfig *tls.Config + + // ConnPool optionally specifies an alternate connection pool to use. + // If nil, the default is used. + ConnPool ClientConnPool + + // DisableCompression, if true, prevents the Transport from + // requesting compression with an "Accept-Encoding: gzip" + // request header when the Request contains no existing + // Accept-Encoding value. If the Transport requests gzip on + // its own and gets a gzipped response, it's transparently + // decoded in the Response.Body. However, if the user + // explicitly requested gzip it is not automatically + // uncompressed. + DisableCompression bool + + // AllowHTTP, if true, permits HTTP/2 requests using the insecure, + // plain-text "http" scheme. Note that this does not enable h2c support. + AllowHTTP bool + + // MaxHeaderListSize is the http2 SETTINGS_MAX_HEADER_LIST_SIZE to + // send in the initial settings frame. It is how many bytes + // of response headers are allow. Unlike the http2 spec, zero here + // means to use a default limit (currently 10MB). If you actually + // want to advertise an ulimited value to the peer, Transport + // interprets the highest possible value here (0xffffffff or 1<<32-1) + // to mean no limit. + MaxHeaderListSize uint32 + + // t1, if non-nil, is the standard library Transport using + // this transport. Its settings are used (but not its + // RoundTrip method, etc). + t1 *http.Transport + + connPoolOnce sync.Once + connPoolOrDef ClientConnPool // non-nil version of ConnPool +} + +func (t *Transport) maxHeaderListSize() uint32 { + if t.MaxHeaderListSize == 0 { + return 10 << 20 + } + if t.MaxHeaderListSize == 0xffffffff { + return 0 + } + return t.MaxHeaderListSize +} + +func (t *Transport) disableCompression() bool { + return t.DisableCompression || (t.t1 != nil && t.t1.DisableCompression) +} + +var errTransportVersion = errors.New("http2: ConfigureTransport is only supported starting at Go 1.6") + +// ConfigureTransport configures a net/http HTTP/1 Transport to use HTTP/2. +// It requires Go 1.6 or later and returns an error if the net/http package is too old +// or if t1 has already been HTTP/2-enabled. +func ConfigureTransport(t1 *http.Transport) error { + _, err := configureTransport(t1) // in configure_transport.go (go1.6) or not_go16.go + return err +} + +func (t *Transport) connPool() ClientConnPool { + t.connPoolOnce.Do(t.initConnPool) + return t.connPoolOrDef +} + +func (t *Transport) initConnPool() { + if t.ConnPool != nil { + t.connPoolOrDef = t.ConnPool + } else { + t.connPoolOrDef = &clientConnPool{t: t} + } +} + +// ClientConn is the state of a single HTTP/2 client connection to an +// HTTP/2 server. +type ClientConn struct { + t *Transport + tconn net.Conn // usually *tls.Conn, except specialized impls + tlsState *tls.ConnectionState // nil only for specialized impls + singleUse bool // whether being used for a single http.Request + + // readLoop goroutine fields: + readerDone chan struct{} // closed on error + readerErr error // set before readerDone is closed + + idleTimeout time.Duration // or 0 for never + idleTimer *time.Timer + + mu sync.Mutex // guards following + cond *sync.Cond // hold mu; broadcast on flow/closed changes + flow flow // our conn-level flow control quota (cs.flow is per stream) + inflow flow // peer's conn-level flow control + closed bool + wantSettingsAck bool // we sent a SETTINGS frame and haven't heard back + goAway *GoAwayFrame // if non-nil, the GoAwayFrame we received + goAwayDebug string // goAway frame's debug data, retained as a string + streams map[uint32]*clientStream // client-initiated + nextStreamID uint32 + pings map[[8]byte]chan struct{} // in flight ping data to notification channel + bw *bufio.Writer + br *bufio.Reader + fr *Framer + lastActive time.Time + // Settings from peer: (also guarded by mu) + maxFrameSize uint32 + maxConcurrentStreams uint32 + initialWindowSize uint32 + + hbuf bytes.Buffer // HPACK encoder writes into this + henc *hpack.Encoder + freeBuf [][]byte + + wmu sync.Mutex // held while writing; acquire AFTER mu if holding both + werr error // first write error that has occurred +} + +// clientStream is the state for a single HTTP/2 stream. One of these +// is created for each Transport.RoundTrip call. +type clientStream struct { + cc *ClientConn + req *http.Request + trace *clientTrace // or nil + ID uint32 + resc chan resAndError + bufPipe pipe // buffered pipe with the flow-controlled response payload + requestedGzip bool + on100 func() // optional code to run if get a 100 continue response + + flow flow // guarded by cc.mu + inflow flow // guarded by cc.mu + bytesRemain int64 // -1 means unknown; owned by transportResponseBody.Read + readErr error // sticky read error; owned by transportResponseBody.Read + stopReqBody error // if non-nil, stop writing req body; guarded by cc.mu + + peerReset chan struct{} // closed on peer reset + resetErr error // populated before peerReset is closed + + done chan struct{} // closed when stream remove from cc.streams map; close calls guarded by cc.mu + + // owned by clientConnReadLoop: + firstByte bool // got the first response byte + pastHeaders bool // got first MetaHeadersFrame (actual headers) + pastTrailers bool // got optional second MetaHeadersFrame (trailers) + + trailer http.Header // accumulated trailers + resTrailer *http.Header // client's Response.Trailer +} + +// awaitRequestCancel runs in its own goroutine and waits for the user +// to cancel a RoundTrip request, its context to expire, or for the +// request to be done (any way it might be removed from the cc.streams +// map: peer reset, successful completion, TCP connection breakage, +// etc) +func (cs *clientStream) awaitRequestCancel(req *http.Request) { + ctx := reqContext(req) + if req.Cancel == nil && ctx.Done() == nil { + return + } + select { + case <-req.Cancel: + cs.bufPipe.CloseWithError(errRequestCanceled) + cs.cc.writeStreamReset(cs.ID, ErrCodeCancel, nil) + case <-ctx.Done(): + cs.bufPipe.CloseWithError(ctx.Err()) + cs.cc.writeStreamReset(cs.ID, ErrCodeCancel, nil) + case <-cs.done: + } +} + +// checkResetOrDone reports any error sent in a RST_STREAM frame by the +// server, or errStreamClosed if the stream is complete. +func (cs *clientStream) checkResetOrDone() error { + select { + case <-cs.peerReset: + return cs.resetErr + case <-cs.done: + return errStreamClosed + default: + return nil + } +} + +func (cs *clientStream) abortRequestBodyWrite(err error) { + if err == nil { + panic("nil error") + } + cc := cs.cc + cc.mu.Lock() + cs.stopReqBody = err + cc.cond.Broadcast() + cc.mu.Unlock() +} + +type stickyErrWriter struct { + w io.Writer + err *error +} + +func (sew stickyErrWriter) Write(p []byte) (n int, err error) { + if *sew.err != nil { + return 0, *sew.err + } + n, err = sew.w.Write(p) + *sew.err = err + return +} + +var ErrNoCachedConn = errors.New("http2: no cached connection was available") + +// RoundTripOpt are options for the Transport.RoundTripOpt method. +type RoundTripOpt struct { + // OnlyCachedConn controls whether RoundTripOpt may + // create a new TCP connection. If set true and + // no cached connection is available, RoundTripOpt + // will return ErrNoCachedConn. + OnlyCachedConn bool +} + +func (t *Transport) RoundTrip(req *http.Request) (*http.Response, error) { + return t.RoundTripOpt(req, RoundTripOpt{}) +} + +// authorityAddr returns a given authority (a host/IP, or host:port / ip:port) +// and returns a host:port. The port 443 is added if needed. +func authorityAddr(scheme string, authority string) (addr string) { + host, port, err := net.SplitHostPort(authority) + if err != nil { // authority didn't have a port + port = "443" + if scheme == "http" { + port = "80" + } + host = authority + } + if a, err := idna.ToASCII(host); err == nil { + host = a + } + return net.JoinHostPort(host, port) +} + +// RoundTripOpt is like RoundTrip, but takes options. +func (t *Transport) RoundTripOpt(req *http.Request, opt RoundTripOpt) (*http.Response, error) { + if !(req.URL.Scheme == "https" || (req.URL.Scheme == "http" && t.AllowHTTP)) { + return nil, errors.New("http2: unsupported scheme") + } + + addr := authorityAddr(req.URL.Scheme, req.URL.Host) + for { + cc, err := t.connPool().GetClientConn(req, addr) + if err != nil { + t.vlogf("http2: Transport failed to get client conn for %s: %v", addr, err) + return nil, err + } + traceGotConn(req, cc) + res, err := cc.RoundTrip(req) + if shouldRetryRequest(req, err) { + continue + } + if err != nil { + t.vlogf("RoundTrip failure: %v", err) + return nil, err + } + return res, nil + } +} + +// CloseIdleConnections closes any connections which were previously +// connected from previous requests but are now sitting idle. +// It does not interrupt any connections currently in use. +func (t *Transport) CloseIdleConnections() { + if cp, ok := t.connPool().(clientConnPoolIdleCloser); ok { + cp.closeIdleConnections() + } +} + +var ( + errClientConnClosed = errors.New("http2: client conn is closed") + errClientConnUnusable = errors.New("http2: client conn not usable") +) + +func shouldRetryRequest(req *http.Request, err error) bool { + // TODO: retry GET requests (no bodies) more aggressively, if shutdown + // before response. + return err == errClientConnUnusable +} + +func (t *Transport) dialClientConn(addr string, singleUse bool) (*ClientConn, error) { + host, _, err := net.SplitHostPort(addr) + if err != nil { + return nil, err + } + tconn, err := t.dialTLS()("tcp", addr, t.newTLSConfig(host)) + if err != nil { + return nil, err + } + return t.newClientConn(tconn, singleUse) +} + +func (t *Transport) newTLSConfig(host string) *tls.Config { + cfg := new(tls.Config) + if t.TLSClientConfig != nil { + *cfg = *cloneTLSConfig(t.TLSClientConfig) + } + if !strSliceContains(cfg.NextProtos, NextProtoTLS) { + cfg.NextProtos = append([]string{NextProtoTLS}, cfg.NextProtos...) + } + if cfg.ServerName == "" { + cfg.ServerName = host + } + return cfg +} + +func (t *Transport) dialTLS() func(string, string, *tls.Config) (net.Conn, error) { + if t.DialTLS != nil { + return t.DialTLS + } + return t.dialTLSDefault +} + +func (t *Transport) dialTLSDefault(network, addr string, cfg *tls.Config) (net.Conn, error) { + cn, err := tls.Dial(network, addr, cfg) + if err != nil { + return nil, err + } + if err := cn.Handshake(); err != nil { + return nil, err + } + if !cfg.InsecureSkipVerify { + if err := cn.VerifyHostname(cfg.ServerName); err != nil { + return nil, err + } + } + state := cn.ConnectionState() + if p := state.NegotiatedProtocol; p != NextProtoTLS { + return nil, fmt.Errorf("http2: unexpected ALPN protocol %q; want %q", p, NextProtoTLS) + } + if !state.NegotiatedProtocolIsMutual { + return nil, errors.New("http2: could not negotiate protocol mutually") + } + return cn, nil +} + +// disableKeepAlives reports whether connections should be closed as +// soon as possible after handling the first request. +func (t *Transport) disableKeepAlives() bool { + return t.t1 != nil && t.t1.DisableKeepAlives +} + +func (t *Transport) expectContinueTimeout() time.Duration { + if t.t1 == nil { + return 0 + } + return transportExpectContinueTimeout(t.t1) +} + +func (t *Transport) NewClientConn(c net.Conn) (*ClientConn, error) { + return t.newClientConn(c, false) +} + +func (t *Transport) newClientConn(c net.Conn, singleUse bool) (*ClientConn, error) { + cc := &ClientConn{ + t: t, + tconn: c, + readerDone: make(chan struct{}), + nextStreamID: 1, + maxFrameSize: 16 << 10, // spec default + initialWindowSize: 65535, // spec default + maxConcurrentStreams: 1000, // "infinite", per spec. 1000 seems good enough. + streams: make(map[uint32]*clientStream), + singleUse: singleUse, + wantSettingsAck: true, + pings: make(map[[8]byte]chan struct{}), + } + if d := t.idleConnTimeout(); d != 0 { + cc.idleTimeout = d + cc.idleTimer = time.AfterFunc(d, cc.onIdleTimeout) + } + if VerboseLogs { + t.vlogf("http2: Transport creating client conn %p to %v", cc, c.RemoteAddr()) + } + + cc.cond = sync.NewCond(&cc.mu) + cc.flow.add(int32(initialWindowSize)) + + // TODO: adjust this writer size to account for frame size + + // MTU + crypto/tls record padding. + cc.bw = bufio.NewWriter(stickyErrWriter{c, &cc.werr}) + cc.br = bufio.NewReader(c) + cc.fr = NewFramer(cc.bw, cc.br) + cc.fr.ReadMetaHeaders = hpack.NewDecoder(initialHeaderTableSize, nil) + cc.fr.MaxHeaderListSize = t.maxHeaderListSize() + + // TODO: SetMaxDynamicTableSize, SetMaxDynamicTableSizeLimit on + // henc in response to SETTINGS frames? + cc.henc = hpack.NewEncoder(&cc.hbuf) + + if cs, ok := c.(connectionStater); ok { + state := cs.ConnectionState() + cc.tlsState = &state + } + + initialSettings := []Setting{ + {ID: SettingEnablePush, Val: 0}, + {ID: SettingInitialWindowSize, Val: transportDefaultStreamFlow}, + } + if max := t.maxHeaderListSize(); max != 0 { + initialSettings = append(initialSettings, Setting{ID: SettingMaxHeaderListSize, Val: max}) + } + + cc.bw.Write(clientPreface) + cc.fr.WriteSettings(initialSettings...) + cc.fr.WriteWindowUpdate(0, transportDefaultConnFlow) + cc.inflow.add(transportDefaultConnFlow + initialWindowSize) + cc.bw.Flush() + if cc.werr != nil { + return nil, cc.werr + } + + go cc.readLoop() + return cc, nil +} + +func (cc *ClientConn) setGoAway(f *GoAwayFrame) { + cc.mu.Lock() + defer cc.mu.Unlock() + + old := cc.goAway + cc.goAway = f + + // Merge the previous and current GoAway error frames. + if cc.goAwayDebug == "" { + cc.goAwayDebug = string(f.DebugData()) + } + if old != nil && old.ErrCode != ErrCodeNo { + cc.goAway.ErrCode = old.ErrCode + } +} + +func (cc *ClientConn) CanTakeNewRequest() bool { + cc.mu.Lock() + defer cc.mu.Unlock() + return cc.canTakeNewRequestLocked() +} + +func (cc *ClientConn) canTakeNewRequestLocked() bool { + if cc.singleUse && cc.nextStreamID > 1 { + return false + } + return cc.goAway == nil && !cc.closed && + int64(len(cc.streams)+1) < int64(cc.maxConcurrentStreams) && + cc.nextStreamID < math.MaxInt32 +} + +// onIdleTimeout is called from a time.AfterFunc goroutine. It will +// only be called when we're idle, but because we're coming from a new +// goroutine, there could be a new request coming in at the same time, +// so this simply calls the synchronized closeIfIdle to shut down this +// connection. The timer could just call closeIfIdle, but this is more +// clear. +func (cc *ClientConn) onIdleTimeout() { + cc.closeIfIdle() +} + +func (cc *ClientConn) closeIfIdle() { + cc.mu.Lock() + if len(cc.streams) > 0 { + cc.mu.Unlock() + return + } + cc.closed = true + nextID := cc.nextStreamID + // TODO: do clients send GOAWAY too? maybe? Just Close: + cc.mu.Unlock() + + if VerboseLogs { + cc.vlogf("http2: Transport closing idle conn %p (forSingleUse=%v, maxStream=%v)", cc, cc.singleUse, nextID-2) + } + cc.tconn.Close() +} + +const maxAllocFrameSize = 512 << 10 + +// frameBuffer returns a scratch buffer suitable for writing DATA frames. +// They're capped at the min of the peer's max frame size or 512KB +// (kinda arbitrarily), but definitely capped so we don't allocate 4GB +// bufers. +func (cc *ClientConn) frameScratchBuffer() []byte { + cc.mu.Lock() + size := cc.maxFrameSize + if size > maxAllocFrameSize { + size = maxAllocFrameSize + } + for i, buf := range cc.freeBuf { + if len(buf) >= int(size) { + cc.freeBuf[i] = nil + cc.mu.Unlock() + return buf[:size] + } + } + cc.mu.Unlock() + return make([]byte, size) +} + +func (cc *ClientConn) putFrameScratchBuffer(buf []byte) { + cc.mu.Lock() + defer cc.mu.Unlock() + const maxBufs = 4 // arbitrary; 4 concurrent requests per conn? investigate. + if len(cc.freeBuf) < maxBufs { + cc.freeBuf = append(cc.freeBuf, buf) + return + } + for i, old := range cc.freeBuf { + if old == nil { + cc.freeBuf[i] = buf + return + } + } + // forget about it. +} + +// errRequestCanceled is a copy of net/http's errRequestCanceled because it's not +// exported. At least they'll be DeepEqual for h1-vs-h2 comparisons tests. +var errRequestCanceled = errors.New("net/http: request canceled") + +func commaSeparatedTrailers(req *http.Request) (string, error) { + keys := make([]string, 0, len(req.Trailer)) + for k := range req.Trailer { + k = http.CanonicalHeaderKey(k) + switch k { + case "Transfer-Encoding", "Trailer", "Content-Length": + return "", &badStringError{"invalid Trailer key", k} + } + keys = append(keys, k) + } + if len(keys) > 0 { + sort.Strings(keys) + // TODO: could do better allocation-wise here, but trailers are rare, + // so being lazy for now. + return strings.Join(keys, ","), nil + } + return "", nil +} + +func (cc *ClientConn) responseHeaderTimeout() time.Duration { + if cc.t.t1 != nil { + return cc.t.t1.ResponseHeaderTimeout + } + // No way to do this (yet?) with just an http2.Transport. Probably + // no need. Request.Cancel this is the new way. We only need to support + // this for compatibility with the old http.Transport fields when + // we're doing transparent http2. + return 0 +} + +// checkConnHeaders checks whether req has any invalid connection-level headers. +// per RFC 7540 section 8.1.2.2: Connection-Specific Header Fields. +// Certain headers are special-cased as okay but not transmitted later. +func checkConnHeaders(req *http.Request) error { + if v := req.Header.Get("Upgrade"); v != "" { + return fmt.Errorf("http2: invalid Upgrade request header: %q", req.Header["Upgrade"]) + } + if vv := req.Header["Transfer-Encoding"]; len(vv) > 0 && (len(vv) > 1 || vv[0] != "" && vv[0] != "chunked") { + return fmt.Errorf("http2: invalid Transfer-Encoding request header: %q", vv) + } + if vv := req.Header["Connection"]; len(vv) > 0 && (len(vv) > 1 || vv[0] != "" && vv[0] != "close" && vv[0] != "keep-alive") { + return fmt.Errorf("http2: invalid Connection request header: %q", vv) + } + return nil +} + +// actualContentLength returns a sanitized version of +// req.ContentLength, where 0 actually means zero (not unknown) and -1 +// means unknown. +func actualContentLength(req *http.Request) int64 { + if req.Body == nil { + return 0 + } + if req.ContentLength != 0 { + return req.ContentLength + } + return -1 +} + +func (cc *ClientConn) RoundTrip(req *http.Request) (*http.Response, error) { + if err := checkConnHeaders(req); err != nil { + return nil, err + } + if cc.idleTimer != nil { + cc.idleTimer.Stop() + } + + trailers, err := commaSeparatedTrailers(req) + if err != nil { + return nil, err + } + hasTrailers := trailers != "" + + cc.mu.Lock() + cc.lastActive = time.Now() + if cc.closed || !cc.canTakeNewRequestLocked() { + cc.mu.Unlock() + return nil, errClientConnUnusable + } + + body := req.Body + hasBody := body != nil + contentLen := actualContentLength(req) + + // TODO(bradfitz): this is a copy of the logic in net/http. Unify somewhere? + var requestedGzip bool + if !cc.t.disableCompression() && + req.Header.Get("Accept-Encoding") == "" && + req.Header.Get("Range") == "" && + req.Method != "HEAD" { + // Request gzip only, not deflate. Deflate is ambiguous and + // not as universally supported anyway. + // See: http://www.gzip.org/zlib/zlib_faq.html#faq38 + // + // Note that we don't request this for HEAD requests, + // due to a bug in nginx: + // http://trac.nginx.org/nginx/ticket/358 + // https://golang.org/issue/5522 + // + // We don't request gzip if the request is for a range, since + // auto-decoding a portion of a gzipped document will just fail + // anyway. See https://golang.org/issue/8923 + requestedGzip = true + } + + // we send: HEADERS{1}, CONTINUATION{0,} + DATA{0,} (DATA is + // sent by writeRequestBody below, along with any Trailers, + // again in form HEADERS{1}, CONTINUATION{0,}) + hdrs, err := cc.encodeHeaders(req, requestedGzip, trailers, contentLen) + if err != nil { + cc.mu.Unlock() + return nil, err + } + + cs := cc.newStream() + cs.req = req + cs.trace = requestTrace(req) + cs.requestedGzip = requestedGzip + bodyWriter := cc.t.getBodyWriterState(cs, body) + cs.on100 = bodyWriter.on100 + + cc.wmu.Lock() + endStream := !hasBody && !hasTrailers + werr := cc.writeHeaders(cs.ID, endStream, hdrs) + cc.wmu.Unlock() + traceWroteHeaders(cs.trace) + cc.mu.Unlock() + + if werr != nil { + if hasBody { + req.Body.Close() // per RoundTripper contract + bodyWriter.cancel() + } + cc.forgetStreamID(cs.ID) + // Don't bother sending a RST_STREAM (our write already failed; + // no need to keep writing) + traceWroteRequest(cs.trace, werr) + return nil, werr + } + + var respHeaderTimer <-chan time.Time + if hasBody { + bodyWriter.scheduleBodyWrite() + } else { + traceWroteRequest(cs.trace, nil) + if d := cc.responseHeaderTimeout(); d != 0 { + timer := time.NewTimer(d) + defer timer.Stop() + respHeaderTimer = timer.C + } + } + + readLoopResCh := cs.resc + bodyWritten := false + ctx := reqContext(req) + + handleReadLoopResponse := func(re resAndError) (*http.Response, error) { + res := re.res + if re.err != nil || res.StatusCode > 299 { + // On error or status code 3xx, 4xx, 5xx, etc abort any + // ongoing write, assuming that the server doesn't care + // about our request body. If the server replied with 1xx or + // 2xx, however, then assume the server DOES potentially + // want our body (e.g. full-duplex streaming: + // golang.org/issue/13444). If it turns out the server + // doesn't, they'll RST_STREAM us soon enough. This is a + // heuristic to avoid adding knobs to Transport. Hopefully + // we can keep it. + bodyWriter.cancel() + cs.abortRequestBodyWrite(errStopReqBodyWrite) + } + if re.err != nil { + cc.forgetStreamID(cs.ID) + return nil, re.err + } + res.Request = req + res.TLS = cc.tlsState + return res, nil + } + + for { + select { + case re := <-readLoopResCh: + return handleReadLoopResponse(re) + case <-respHeaderTimer: + cc.forgetStreamID(cs.ID) + if !hasBody || bodyWritten { + cc.writeStreamReset(cs.ID, ErrCodeCancel, nil) + } else { + bodyWriter.cancel() + cs.abortRequestBodyWrite(errStopReqBodyWriteAndCancel) + } + return nil, errTimeout + case <-ctx.Done(): + cc.forgetStreamID(cs.ID) + if !hasBody || bodyWritten { + cc.writeStreamReset(cs.ID, ErrCodeCancel, nil) + } else { + bodyWriter.cancel() + cs.abortRequestBodyWrite(errStopReqBodyWriteAndCancel) + } + return nil, ctx.Err() + case <-req.Cancel: + cc.forgetStreamID(cs.ID) + if !hasBody || bodyWritten { + cc.writeStreamReset(cs.ID, ErrCodeCancel, nil) + } else { + bodyWriter.cancel() + cs.abortRequestBodyWrite(errStopReqBodyWriteAndCancel) + } + return nil, errRequestCanceled + case <-cs.peerReset: + // processResetStream already removed the + // stream from the streams map; no need for + // forgetStreamID. + return nil, cs.resetErr + case err := <-bodyWriter.resc: + // Prefer the read loop's response, if available. Issue 16102. + select { + case re := <-readLoopResCh: + return handleReadLoopResponse(re) + default: + } + if err != nil { + return nil, err + } + bodyWritten = true + if d := cc.responseHeaderTimeout(); d != 0 { + timer := time.NewTimer(d) + defer timer.Stop() + respHeaderTimer = timer.C + } + } + } +} + +// requires cc.wmu be held +func (cc *ClientConn) writeHeaders(streamID uint32, endStream bool, hdrs []byte) error { + first := true // first frame written (HEADERS is first, then CONTINUATION) + frameSize := int(cc.maxFrameSize) + for len(hdrs) > 0 && cc.werr == nil { + chunk := hdrs + if len(chunk) > frameSize { + chunk = chunk[:frameSize] + } + hdrs = hdrs[len(chunk):] + endHeaders := len(hdrs) == 0 + if first { + cc.fr.WriteHeaders(HeadersFrameParam{ + StreamID: streamID, + BlockFragment: chunk, + EndStream: endStream, + EndHeaders: endHeaders, + }) + first = false + } else { + cc.fr.WriteContinuation(streamID, endHeaders, chunk) + } + } + // TODO(bradfitz): this Flush could potentially block (as + // could the WriteHeaders call(s) above), which means they + // wouldn't respond to Request.Cancel being readable. That's + // rare, but this should probably be in a goroutine. + cc.bw.Flush() + return cc.werr +} + +// internal error values; they don't escape to callers +var ( + // abort request body write; don't send cancel + errStopReqBodyWrite = errors.New("http2: aborting request body write") + + // abort request body write, but send stream reset of cancel. + errStopReqBodyWriteAndCancel = errors.New("http2: canceling request") +) + +func (cs *clientStream) writeRequestBody(body io.Reader, bodyCloser io.Closer) (err error) { + cc := cs.cc + sentEnd := false // whether we sent the final DATA frame w/ END_STREAM + buf := cc.frameScratchBuffer() + defer cc.putFrameScratchBuffer(buf) + + defer func() { + traceWroteRequest(cs.trace, err) + // TODO: write h12Compare test showing whether + // Request.Body is closed by the Transport, + // and in multiple cases: server replies <=299 and >299 + // while still writing request body + cerr := bodyCloser.Close() + if err == nil { + err = cerr + } + }() + + req := cs.req + hasTrailers := req.Trailer != nil + + var sawEOF bool + for !sawEOF { + n, err := body.Read(buf) + if err == io.EOF { + sawEOF = true + err = nil + } else if err != nil { + return err + } + + remain := buf[:n] + for len(remain) > 0 && err == nil { + var allowed int32 + allowed, err = cs.awaitFlowControl(len(remain)) + switch { + case err == errStopReqBodyWrite: + return err + case err == errStopReqBodyWriteAndCancel: + cc.writeStreamReset(cs.ID, ErrCodeCancel, nil) + return err + case err != nil: + return err + } + cc.wmu.Lock() + data := remain[:allowed] + remain = remain[allowed:] + sentEnd = sawEOF && len(remain) == 0 && !hasTrailers + err = cc.fr.WriteData(cs.ID, sentEnd, data) + if err == nil { + // TODO(bradfitz): this flush is for latency, not bandwidth. + // Most requests won't need this. Make this opt-in or + // opt-out? Use some heuristic on the body type? Nagel-like + // timers? Based on 'n'? Only last chunk of this for loop, + // unless flow control tokens are low? For now, always. + // If we change this, see comment below. + err = cc.bw.Flush() + } + cc.wmu.Unlock() + } + if err != nil { + return err + } + } + + if sentEnd { + // Already sent END_STREAM (which implies we have no + // trailers) and flushed, because currently all + // WriteData frames above get a flush. So we're done. + return nil + } + + var trls []byte + if hasTrailers { + cc.mu.Lock() + defer cc.mu.Unlock() + trls = cc.encodeTrailers(req) + } + + cc.wmu.Lock() + defer cc.wmu.Unlock() + + // Two ways to send END_STREAM: either with trailers, or + // with an empty DATA frame. + if len(trls) > 0 { + err = cc.writeHeaders(cs.ID, true, trls) + } else { + err = cc.fr.WriteData(cs.ID, true, nil) + } + if ferr := cc.bw.Flush(); ferr != nil && err == nil { + err = ferr + } + return err +} + +// awaitFlowControl waits for [1, min(maxBytes, cc.cs.maxFrameSize)] flow +// control tokens from the server. +// It returns either the non-zero number of tokens taken or an error +// if the stream is dead. +func (cs *clientStream) awaitFlowControl(maxBytes int) (taken int32, err error) { + cc := cs.cc + cc.mu.Lock() + defer cc.mu.Unlock() + for { + if cc.closed { + return 0, errClientConnClosed + } + if cs.stopReqBody != nil { + return 0, cs.stopReqBody + } + if err := cs.checkResetOrDone(); err != nil { + return 0, err + } + if a := cs.flow.available(); a > 0 { + take := a + if int(take) > maxBytes { + + take = int32(maxBytes) // can't truncate int; take is int32 + } + if take > int32(cc.maxFrameSize) { + take = int32(cc.maxFrameSize) + } + cs.flow.take(take) + return take, nil + } + cc.cond.Wait() + } +} + +type badStringError struct { + what string + str string +} + +func (e *badStringError) Error() string { return fmt.Sprintf("%s %q", e.what, e.str) } + +// requires cc.mu be held. +func (cc *ClientConn) encodeHeaders(req *http.Request, addGzipHeader bool, trailers string, contentLength int64) ([]byte, error) { + cc.hbuf.Reset() + + host := req.Host + if host == "" { + host = req.URL.Host + } + host, err := httplex.PunycodeHostPort(host) + if err != nil { + return nil, err + } + + var path string + if req.Method != "CONNECT" { + path = req.URL.RequestURI() + if !validPseudoPath(path) { + orig := path + path = strings.TrimPrefix(path, req.URL.Scheme+"://"+host) + if !validPseudoPath(path) { + if req.URL.Opaque != "" { + return nil, fmt.Errorf("invalid request :path %q from URL.Opaque = %q", orig, req.URL.Opaque) + } else { + return nil, fmt.Errorf("invalid request :path %q", orig) + } + } + } + } + + // Check for any invalid headers and return an error before we + // potentially pollute our hpack state. (We want to be able to + // continue to reuse the hpack encoder for future requests) + for k, vv := range req.Header { + if !httplex.ValidHeaderFieldName(k) { + return nil, fmt.Errorf("invalid HTTP header name %q", k) + } + for _, v := range vv { + if !httplex.ValidHeaderFieldValue(v) { + return nil, fmt.Errorf("invalid HTTP header value %q for header %q", v, k) + } + } + } + + // 8.1.2.3 Request Pseudo-Header Fields + // The :path pseudo-header field includes the path and query parts of the + // target URI (the path-absolute production and optionally a '?' character + // followed by the query production (see Sections 3.3 and 3.4 of + // [RFC3986]). + cc.writeHeader(":authority", host) + cc.writeHeader(":method", req.Method) + if req.Method != "CONNECT" { + cc.writeHeader(":path", path) + cc.writeHeader(":scheme", req.URL.Scheme) + } + if trailers != "" { + cc.writeHeader("trailer", trailers) + } + + var didUA bool + for k, vv := range req.Header { + lowKey := strings.ToLower(k) + switch lowKey { + case "host", "content-length": + // Host is :authority, already sent. + // Content-Length is automatic, set below. + continue + case "connection", "proxy-connection", "transfer-encoding", "upgrade", "keep-alive": + // Per 8.1.2.2 Connection-Specific Header + // Fields, don't send connection-specific + // fields. We have already checked if any + // are error-worthy so just ignore the rest. + continue + case "user-agent": + // Match Go's http1 behavior: at most one + // User-Agent. If set to nil or empty string, + // then omit it. Otherwise if not mentioned, + // include the default (below). + didUA = true + if len(vv) < 1 { + continue + } + vv = vv[:1] + if vv[0] == "" { + continue + } + } + for _, v := range vv { + cc.writeHeader(lowKey, v) + } + } + if shouldSendReqContentLength(req.Method, contentLength) { + cc.writeHeader("content-length", strconv.FormatInt(contentLength, 10)) + } + if addGzipHeader { + cc.writeHeader("accept-encoding", "gzip") + } + if !didUA { + cc.writeHeader("user-agent", defaultUserAgent) + } + return cc.hbuf.Bytes(), nil +} + +// shouldSendReqContentLength reports whether the http2.Transport should send +// a "content-length" request header. This logic is basically a copy of the net/http +// transferWriter.shouldSendContentLength. +// The contentLength is the corrected contentLength (so 0 means actually 0, not unknown). +// -1 means unknown. +func shouldSendReqContentLength(method string, contentLength int64) bool { + if contentLength > 0 { + return true + } + if contentLength < 0 { + return false + } + // For zero bodies, whether we send a content-length depends on the method. + // It also kinda doesn't matter for http2 either way, with END_STREAM. + switch method { + case "POST", "PUT", "PATCH": + return true + default: + return false + } +} + +// requires cc.mu be held. +func (cc *ClientConn) encodeTrailers(req *http.Request) []byte { + cc.hbuf.Reset() + for k, vv := range req.Trailer { + // Transfer-Encoding, etc.. have already been filter at the + // start of RoundTrip + lowKey := strings.ToLower(k) + for _, v := range vv { + cc.writeHeader(lowKey, v) + } + } + return cc.hbuf.Bytes() +} + +func (cc *ClientConn) writeHeader(name, value string) { + if VerboseLogs { + log.Printf("http2: Transport encoding header %q = %q", name, value) + } + cc.henc.WriteField(hpack.HeaderField{Name: name, Value: value}) +} + +type resAndError struct { + res *http.Response + err error +} + +// requires cc.mu be held. +func (cc *ClientConn) newStream() *clientStream { + cs := &clientStream{ + cc: cc, + ID: cc.nextStreamID, + resc: make(chan resAndError, 1), + peerReset: make(chan struct{}), + done: make(chan struct{}), + } + cs.flow.add(int32(cc.initialWindowSize)) + cs.flow.setConnFlow(&cc.flow) + cs.inflow.add(transportDefaultStreamFlow) + cs.inflow.setConnFlow(&cc.inflow) + cc.nextStreamID += 2 + cc.streams[cs.ID] = cs + return cs +} + +func (cc *ClientConn) forgetStreamID(id uint32) { + cc.streamByID(id, true) +} + +func (cc *ClientConn) streamByID(id uint32, andRemove bool) *clientStream { + cc.mu.Lock() + defer cc.mu.Unlock() + cs := cc.streams[id] + if andRemove && cs != nil && !cc.closed { + cc.lastActive = time.Now() + delete(cc.streams, id) + if len(cc.streams) == 0 && cc.idleTimer != nil { + cc.idleTimer.Reset(cc.idleTimeout) + } + close(cs.done) + cc.cond.Broadcast() // wake up checkResetOrDone via clientStream.awaitFlowControl + } + return cs +} + +// clientConnReadLoop is the state owned by the clientConn's frame-reading readLoop. +type clientConnReadLoop struct { + cc *ClientConn + activeRes map[uint32]*clientStream // keyed by streamID + closeWhenIdle bool +} + +// readLoop runs in its own goroutine and reads and dispatches frames. +func (cc *ClientConn) readLoop() { + rl := &clientConnReadLoop{ + cc: cc, + activeRes: make(map[uint32]*clientStream), + } + + defer rl.cleanup() + cc.readerErr = rl.run() + if ce, ok := cc.readerErr.(ConnectionError); ok { + cc.wmu.Lock() + cc.fr.WriteGoAway(0, ErrCode(ce), nil) + cc.wmu.Unlock() + } +} + +// GoAwayError is returned by the Transport when the server closes the +// TCP connection after sending a GOAWAY frame. +type GoAwayError struct { + LastStreamID uint32 + ErrCode ErrCode + DebugData string +} + +func (e GoAwayError) Error() string { + return fmt.Sprintf("http2: server sent GOAWAY and closed the connection; LastStreamID=%v, ErrCode=%v, debug=%q", + e.LastStreamID, e.ErrCode, e.DebugData) +} + +func isEOFOrNetReadError(err error) bool { + if err == io.EOF { + return true + } + ne, ok := err.(*net.OpError) + return ok && ne.Op == "read" +} + +func (rl *clientConnReadLoop) cleanup() { + cc := rl.cc + defer cc.tconn.Close() + defer cc.t.connPool().MarkDead(cc) + defer close(cc.readerDone) + + if cc.idleTimer != nil { + cc.idleTimer.Stop() + } + + // Close any response bodies if the server closes prematurely. + // TODO: also do this if we've written the headers but not + // gotten a response yet. + err := cc.readerErr + cc.mu.Lock() + if cc.goAway != nil && isEOFOrNetReadError(err) { + err = GoAwayError{ + LastStreamID: cc.goAway.LastStreamID, + ErrCode: cc.goAway.ErrCode, + DebugData: cc.goAwayDebug, + } + } else if err == io.EOF { + err = io.ErrUnexpectedEOF + } + for _, cs := range rl.activeRes { + cs.bufPipe.CloseWithError(err) + } + for _, cs := range cc.streams { + select { + case cs.resc <- resAndError{err: err}: + default: + } + close(cs.done) + } + cc.closed = true + cc.cond.Broadcast() + cc.mu.Unlock() +} + +func (rl *clientConnReadLoop) run() error { + cc := rl.cc + rl.closeWhenIdle = cc.t.disableKeepAlives() || cc.singleUse + gotReply := false // ever saw a HEADERS reply + gotSettings := false + for { + f, err := cc.fr.ReadFrame() + if err != nil { + cc.vlogf("http2: Transport readFrame error on conn %p: (%T) %v", cc, err, err) + } + if se, ok := err.(StreamError); ok { + if cs := cc.streamByID(se.StreamID, true /*ended; remove it*/); cs != nil { + cs.cc.writeStreamReset(cs.ID, se.Code, err) + if se.Cause == nil { + se.Cause = cc.fr.errDetail + } + rl.endStreamError(cs, se) + } + continue + } else if err != nil { + return err + } + if VerboseLogs { + cc.vlogf("http2: Transport received %s", summarizeFrame(f)) + } + if !gotSettings { + if _, ok := f.(*SettingsFrame); !ok { + cc.logf("protocol error: received %T before a SETTINGS frame", f) + return ConnectionError(ErrCodeProtocol) + } + gotSettings = true + } + maybeIdle := false // whether frame might transition us to idle + + switch f := f.(type) { + case *MetaHeadersFrame: + err = rl.processHeaders(f) + maybeIdle = true + gotReply = true + case *DataFrame: + err = rl.processData(f) + maybeIdle = true + case *GoAwayFrame: + err = rl.processGoAway(f) + maybeIdle = true + case *RSTStreamFrame: + err = rl.processResetStream(f) + maybeIdle = true + case *SettingsFrame: + err = rl.processSettings(f) + case *PushPromiseFrame: + err = rl.processPushPromise(f) + case *WindowUpdateFrame: + err = rl.processWindowUpdate(f) + case *PingFrame: + err = rl.processPing(f) + default: + cc.logf("Transport: unhandled response frame type %T", f) + } + if err != nil { + if VerboseLogs { + cc.vlogf("http2: Transport conn %p received error from processing frame %v: %v", cc, summarizeFrame(f), err) + } + return err + } + if rl.closeWhenIdle && gotReply && maybeIdle && len(rl.activeRes) == 0 { + cc.closeIfIdle() + } + } +} + +func (rl *clientConnReadLoop) processHeaders(f *MetaHeadersFrame) error { + cc := rl.cc + cs := cc.streamByID(f.StreamID, f.StreamEnded()) + if cs == nil { + // We'd get here if we canceled a request while the + // server had its response still in flight. So if this + // was just something we canceled, ignore it. + return nil + } + if !cs.firstByte { + if cs.trace != nil { + // TODO(bradfitz): move first response byte earlier, + // when we first read the 9 byte header, not waiting + // until all the HEADERS+CONTINUATION frames have been + // merged. This works for now. + traceFirstResponseByte(cs.trace) + } + cs.firstByte = true + } + if !cs.pastHeaders { + cs.pastHeaders = true + } else { + return rl.processTrailers(cs, f) + } + + res, err := rl.handleResponse(cs, f) + if err != nil { + if _, ok := err.(ConnectionError); ok { + return err + } + // Any other error type is a stream error. + cs.cc.writeStreamReset(f.StreamID, ErrCodeProtocol, err) + cs.resc <- resAndError{err: err} + return nil // return nil from process* funcs to keep conn alive + } + if res == nil { + // (nil, nil) special case. See handleResponse docs. + return nil + } + if res.Body != noBody { + rl.activeRes[cs.ID] = cs + } + cs.resTrailer = &res.Trailer + cs.resc <- resAndError{res: res} + return nil +} + +// may return error types nil, or ConnectionError. Any other error value +// is a StreamError of type ErrCodeProtocol. The returned error in that case +// is the detail. +// +// As a special case, handleResponse may return (nil, nil) to skip the +// frame (currently only used for 100 expect continue). This special +// case is going away after Issue 13851 is fixed. +func (rl *clientConnReadLoop) handleResponse(cs *clientStream, f *MetaHeadersFrame) (*http.Response, error) { + if f.Truncated { + return nil, errResponseHeaderListSize + } + + status := f.PseudoValue("status") + if status == "" { + return nil, errors.New("missing status pseudo header") + } + statusCode, err := strconv.Atoi(status) + if err != nil { + return nil, errors.New("malformed non-numeric status pseudo header") + } + + if statusCode == 100 { + traceGot100Continue(cs.trace) + if cs.on100 != nil { + cs.on100() // forces any write delay timer to fire + } + cs.pastHeaders = false // do it all again + return nil, nil + } + + header := make(http.Header) + res := &http.Response{ + Proto: "HTTP/2.0", + ProtoMajor: 2, + Header: header, + StatusCode: statusCode, + Status: status + " " + http.StatusText(statusCode), + } + for _, hf := range f.RegularFields() { + key := http.CanonicalHeaderKey(hf.Name) + if key == "Trailer" { + t := res.Trailer + if t == nil { + t = make(http.Header) + res.Trailer = t + } + foreachHeaderElement(hf.Value, func(v string) { + t[http.CanonicalHeaderKey(v)] = nil + }) + } else { + header[key] = append(header[key], hf.Value) + } + } + + streamEnded := f.StreamEnded() + isHead := cs.req.Method == "HEAD" + if !streamEnded || isHead { + res.ContentLength = -1 + if clens := res.Header["Content-Length"]; len(clens) == 1 { + if clen64, err := strconv.ParseInt(clens[0], 10, 64); err == nil { + res.ContentLength = clen64 + } else { + // TODO: care? unlike http/1, it won't mess up our framing, so it's + // more safe smuggling-wise to ignore. + } + } else if len(clens) > 1 { + // TODO: care? unlike http/1, it won't mess up our framing, so it's + // more safe smuggling-wise to ignore. + } + } + + if streamEnded || isHead { + res.Body = noBody + return res, nil + } + + buf := new(bytes.Buffer) // TODO(bradfitz): recycle this garbage + cs.bufPipe = pipe{b: buf} + cs.bytesRemain = res.ContentLength + res.Body = transportResponseBody{cs} + go cs.awaitRequestCancel(cs.req) + + if cs.requestedGzip && res.Header.Get("Content-Encoding") == "gzip" { + res.Header.Del("Content-Encoding") + res.Header.Del("Content-Length") + res.ContentLength = -1 + res.Body = &gzipReader{body: res.Body} + setResponseUncompressed(res) + } + return res, nil +} + +func (rl *clientConnReadLoop) processTrailers(cs *clientStream, f *MetaHeadersFrame) error { + if cs.pastTrailers { + // Too many HEADERS frames for this stream. + return ConnectionError(ErrCodeProtocol) + } + cs.pastTrailers = true + if !f.StreamEnded() { + // We expect that any headers for trailers also + // has END_STREAM. + return ConnectionError(ErrCodeProtocol) + } + if len(f.PseudoFields()) > 0 { + // No pseudo header fields are defined for trailers. + // TODO: ConnectionError might be overly harsh? Check. + return ConnectionError(ErrCodeProtocol) + } + + trailer := make(http.Header) + for _, hf := range f.RegularFields() { + key := http.CanonicalHeaderKey(hf.Name) + trailer[key] = append(trailer[key], hf.Value) + } + cs.trailer = trailer + + rl.endStream(cs) + return nil +} + +// transportResponseBody is the concrete type of Transport.RoundTrip's +// Response.Body. It is an io.ReadCloser. On Read, it reads from cs.body. +// On Close it sends RST_STREAM if EOF wasn't already seen. +type transportResponseBody struct { + cs *clientStream +} + +func (b transportResponseBody) Read(p []byte) (n int, err error) { + cs := b.cs + cc := cs.cc + + if cs.readErr != nil { + return 0, cs.readErr + } + n, err = b.cs.bufPipe.Read(p) + if cs.bytesRemain != -1 { + if int64(n) > cs.bytesRemain { + n = int(cs.bytesRemain) + if err == nil { + err = errors.New("net/http: server replied with more than declared Content-Length; truncated") + cc.writeStreamReset(cs.ID, ErrCodeProtocol, err) + } + cs.readErr = err + return int(cs.bytesRemain), err + } + cs.bytesRemain -= int64(n) + if err == io.EOF && cs.bytesRemain > 0 { + err = io.ErrUnexpectedEOF + cs.readErr = err + return n, err + } + } + if n == 0 { + // No flow control tokens to send back. + return + } + + cc.mu.Lock() + defer cc.mu.Unlock() + + var connAdd, streamAdd int32 + // Check the conn-level first, before the stream-level. + if v := cc.inflow.available(); v < transportDefaultConnFlow/2 { + connAdd = transportDefaultConnFlow - v + cc.inflow.add(connAdd) + } + if err == nil { // No need to refresh if the stream is over or failed. + // Consider any buffered body data (read from the conn but not + // consumed by the client) when computing flow control for this + // stream. + v := int(cs.inflow.available()) + cs.bufPipe.Len() + if v < transportDefaultStreamFlow-transportDefaultStreamMinRefresh { + streamAdd = int32(transportDefaultStreamFlow - v) + cs.inflow.add(streamAdd) + } + } + if connAdd != 0 || streamAdd != 0 { + cc.wmu.Lock() + defer cc.wmu.Unlock() + if connAdd != 0 { + cc.fr.WriteWindowUpdate(0, mustUint31(connAdd)) + } + if streamAdd != 0 { + cc.fr.WriteWindowUpdate(cs.ID, mustUint31(streamAdd)) + } + cc.bw.Flush() + } + return +} + +var errClosedResponseBody = errors.New("http2: response body closed") + +func (b transportResponseBody) Close() error { + cs := b.cs + cc := cs.cc + + serverSentStreamEnd := cs.bufPipe.Err() == io.EOF + unread := cs.bufPipe.Len() + + if unread > 0 || !serverSentStreamEnd { + cc.mu.Lock() + cc.wmu.Lock() + if !serverSentStreamEnd { + cc.fr.WriteRSTStream(cs.ID, ErrCodeCancel) + } + // Return connection-level flow control. + if unread > 0 { + cc.inflow.add(int32(unread)) + cc.fr.WriteWindowUpdate(0, uint32(unread)) + } + cc.bw.Flush() + cc.wmu.Unlock() + cc.mu.Unlock() + } + + cs.bufPipe.BreakWithError(errClosedResponseBody) + return nil +} + +func (rl *clientConnReadLoop) processData(f *DataFrame) error { + cc := rl.cc + cs := cc.streamByID(f.StreamID, f.StreamEnded()) + data := f.Data() + if cs == nil { + cc.mu.Lock() + neverSent := cc.nextStreamID + cc.mu.Unlock() + if f.StreamID >= neverSent { + // We never asked for this. + cc.logf("http2: Transport received unsolicited DATA frame; closing connection") + return ConnectionError(ErrCodeProtocol) + } + // We probably did ask for this, but canceled. Just ignore it. + // TODO: be stricter here? only silently ignore things which + // we canceled, but not things which were closed normally + // by the peer? Tough without accumulating too much state. + + // But at least return their flow control: + if f.Length > 0 { + cc.mu.Lock() + cc.inflow.add(int32(f.Length)) + cc.mu.Unlock() + + cc.wmu.Lock() + cc.fr.WriteWindowUpdate(0, uint32(f.Length)) + cc.bw.Flush() + cc.wmu.Unlock() + } + return nil + } + if f.Length > 0 { + if len(data) > 0 && cs.bufPipe.b == nil { + // Data frame after it's already closed? + cc.logf("http2: Transport received DATA frame for closed stream; closing connection") + return ConnectionError(ErrCodeProtocol) + } + + // Check connection-level flow control. + cc.mu.Lock() + if cs.inflow.available() >= int32(f.Length) { + cs.inflow.take(int32(f.Length)) + } else { + cc.mu.Unlock() + return ConnectionError(ErrCodeFlowControl) + } + // Return any padded flow control now, since we won't + // refund it later on body reads. + if pad := int32(f.Length) - int32(len(data)); pad > 0 { + cs.inflow.add(pad) + cc.inflow.add(pad) + cc.wmu.Lock() + cc.fr.WriteWindowUpdate(0, uint32(pad)) + cc.fr.WriteWindowUpdate(cs.ID, uint32(pad)) + cc.bw.Flush() + cc.wmu.Unlock() + } + cc.mu.Unlock() + + if len(data) > 0 { + if _, err := cs.bufPipe.Write(data); err != nil { + rl.endStreamError(cs, err) + return err + } + } + } + + if f.StreamEnded() { + rl.endStream(cs) + } + return nil +} + +var errInvalidTrailers = errors.New("http2: invalid trailers") + +func (rl *clientConnReadLoop) endStream(cs *clientStream) { + // TODO: check that any declared content-length matches, like + // server.go's (*stream).endStream method. + rl.endStreamError(cs, nil) +} + +func (rl *clientConnReadLoop) endStreamError(cs *clientStream, err error) { + var code func() + if err == nil { + err = io.EOF + code = cs.copyTrailers + } + cs.bufPipe.closeWithErrorAndCode(err, code) + delete(rl.activeRes, cs.ID) + if isConnectionCloseRequest(cs.req) { + rl.closeWhenIdle = true + } + + select { + case cs.resc <- resAndError{err: err}: + default: + } +} + +func (cs *clientStream) copyTrailers() { + for k, vv := range cs.trailer { + t := cs.resTrailer + if *t == nil { + *t = make(http.Header) + } + (*t)[k] = vv + } +} + +func (rl *clientConnReadLoop) processGoAway(f *GoAwayFrame) error { + cc := rl.cc + cc.t.connPool().MarkDead(cc) + if f.ErrCode != 0 { + // TODO: deal with GOAWAY more. particularly the error code + cc.vlogf("transport got GOAWAY with error code = %v", f.ErrCode) + } + cc.setGoAway(f) + return nil +} + +func (rl *clientConnReadLoop) processSettings(f *SettingsFrame) error { + cc := rl.cc + cc.mu.Lock() + defer cc.mu.Unlock() + + if f.IsAck() { + if cc.wantSettingsAck { + cc.wantSettingsAck = false + return nil + } + return ConnectionError(ErrCodeProtocol) + } + + err := f.ForeachSetting(func(s Setting) error { + switch s.ID { + case SettingMaxFrameSize: + cc.maxFrameSize = s.Val + case SettingMaxConcurrentStreams: + cc.maxConcurrentStreams = s.Val + case SettingInitialWindowSize: + // Values above the maximum flow-control + // window size of 2^31-1 MUST be treated as a + // connection error (Section 5.4.1) of type + // FLOW_CONTROL_ERROR. + if s.Val > math.MaxInt32 { + return ConnectionError(ErrCodeFlowControl) + } + + // Adjust flow control of currently-open + // frames by the difference of the old initial + // window size and this one. + delta := int32(s.Val) - int32(cc.initialWindowSize) + for _, cs := range cc.streams { + cs.flow.add(delta) + } + cc.cond.Broadcast() + + cc.initialWindowSize = s.Val + default: + // TODO(bradfitz): handle more settings? SETTINGS_HEADER_TABLE_SIZE probably. + cc.vlogf("Unhandled Setting: %v", s) + } + return nil + }) + if err != nil { + return err + } + + cc.wmu.Lock() + defer cc.wmu.Unlock() + + cc.fr.WriteSettingsAck() + cc.bw.Flush() + return cc.werr +} + +func (rl *clientConnReadLoop) processWindowUpdate(f *WindowUpdateFrame) error { + cc := rl.cc + cs := cc.streamByID(f.StreamID, false) + if f.StreamID != 0 && cs == nil { + return nil + } + + cc.mu.Lock() + defer cc.mu.Unlock() + + fl := &cc.flow + if cs != nil { + fl = &cs.flow + } + if !fl.add(int32(f.Increment)) { + return ConnectionError(ErrCodeFlowControl) + } + cc.cond.Broadcast() + return nil +} + +func (rl *clientConnReadLoop) processResetStream(f *RSTStreamFrame) error { + cs := rl.cc.streamByID(f.StreamID, true) + if cs == nil { + // TODO: return error if server tries to RST_STEAM an idle stream + return nil + } + select { + case <-cs.peerReset: + // Already reset. + // This is the only goroutine + // which closes this, so there + // isn't a race. + default: + err := streamError(cs.ID, f.ErrCode) + cs.resetErr = err + close(cs.peerReset) + cs.bufPipe.CloseWithError(err) + cs.cc.cond.Broadcast() // wake up checkResetOrDone via clientStream.awaitFlowControl + } + delete(rl.activeRes, cs.ID) + return nil +} + +// Ping sends a PING frame to the server and waits for the ack. +// Public implementation is in go17.go and not_go17.go +func (cc *ClientConn) ping(ctx contextContext) error { + c := make(chan struct{}) + // Generate a random payload + var p [8]byte + for { + if _, err := rand.Read(p[:]); err != nil { + return err + } + cc.mu.Lock() + // check for dup before insert + if _, found := cc.pings[p]; !found { + cc.pings[p] = c + cc.mu.Unlock() + break + } + cc.mu.Unlock() + } + cc.wmu.Lock() + if err := cc.fr.WritePing(false, p); err != nil { + cc.wmu.Unlock() + return err + } + if err := cc.bw.Flush(); err != nil { + cc.wmu.Unlock() + return err + } + cc.wmu.Unlock() + select { + case <-c: + return nil + case <-ctx.Done(): + return ctx.Err() + case <-cc.readerDone: + // connection closed + return cc.readerErr + } +} + +func (rl *clientConnReadLoop) processPing(f *PingFrame) error { + if f.IsAck() { + cc := rl.cc + cc.mu.Lock() + defer cc.mu.Unlock() + // If ack, notify listener if any + if c, ok := cc.pings[f.Data]; ok { + close(c) + delete(cc.pings, f.Data) + } + return nil + } + cc := rl.cc + cc.wmu.Lock() + defer cc.wmu.Unlock() + if err := cc.fr.WritePing(true, f.Data); err != nil { + return err + } + return cc.bw.Flush() +} + +func (rl *clientConnReadLoop) processPushPromise(f *PushPromiseFrame) error { + // We told the peer we don't want them. + // Spec says: + // "PUSH_PROMISE MUST NOT be sent if the SETTINGS_ENABLE_PUSH + // setting of the peer endpoint is set to 0. An endpoint that + // has set this setting and has received acknowledgement MUST + // treat the receipt of a PUSH_PROMISE frame as a connection + // error (Section 5.4.1) of type PROTOCOL_ERROR." + return ConnectionError(ErrCodeProtocol) +} + +func (cc *ClientConn) writeStreamReset(streamID uint32, code ErrCode, err error) { + // TODO: map err to more interesting error codes, once the + // HTTP community comes up with some. But currently for + // RST_STREAM there's no equivalent to GOAWAY frame's debug + // data, and the error codes are all pretty vague ("cancel"). + cc.wmu.Lock() + cc.fr.WriteRSTStream(streamID, code) + cc.bw.Flush() + cc.wmu.Unlock() +} + +var ( + errResponseHeaderListSize = errors.New("http2: response header list larger than advertised limit") + errPseudoTrailers = errors.New("http2: invalid pseudo header in trailers") +) + +func (cc *ClientConn) logf(format string, args ...interface{}) { + cc.t.logf(format, args...) +} + +func (cc *ClientConn) vlogf(format string, args ...interface{}) { + cc.t.vlogf(format, args...) +} + +func (t *Transport) vlogf(format string, args ...interface{}) { + if VerboseLogs { + t.logf(format, args...) + } +} + +func (t *Transport) logf(format string, args ...interface{}) { + log.Printf(format, args...) +} + +var noBody io.ReadCloser = ioutil.NopCloser(bytes.NewReader(nil)) + +func strSliceContains(ss []string, s string) bool { + for _, v := range ss { + if v == s { + return true + } + } + return false +} + +type erringRoundTripper struct{ err error } + +func (rt erringRoundTripper) RoundTrip(*http.Request) (*http.Response, error) { return nil, rt.err } + +// gzipReader wraps a response body so it can lazily +// call gzip.NewReader on the first call to Read +type gzipReader struct { + body io.ReadCloser // underlying Response.Body + zr *gzip.Reader // lazily-initialized gzip reader + zerr error // sticky error +} + +func (gz *gzipReader) Read(p []byte) (n int, err error) { + if gz.zerr != nil { + return 0, gz.zerr + } + if gz.zr == nil { + gz.zr, err = gzip.NewReader(gz.body) + if err != nil { + gz.zerr = err + return 0, err + } + } + return gz.zr.Read(p) +} + +func (gz *gzipReader) Close() error { + return gz.body.Close() +} + +type errorReader struct{ err error } + +func (r errorReader) Read(p []byte) (int, error) { return 0, r.err } + +// bodyWriterState encapsulates various state around the Transport's writing +// of the request body, particularly regarding doing delayed writes of the body +// when the request contains "Expect: 100-continue". +type bodyWriterState struct { + cs *clientStream + timer *time.Timer // if non-nil, we're doing a delayed write + fnonce *sync.Once // to call fn with + fn func() // the code to run in the goroutine, writing the body + resc chan error // result of fn's execution + delay time.Duration // how long we should delay a delayed write for +} + +func (t *Transport) getBodyWriterState(cs *clientStream, body io.Reader) (s bodyWriterState) { + s.cs = cs + if body == nil { + return + } + resc := make(chan error, 1) + s.resc = resc + s.fn = func() { + resc <- cs.writeRequestBody(body, cs.req.Body) + } + s.delay = t.expectContinueTimeout() + if s.delay == 0 || + !httplex.HeaderValuesContainsToken( + cs.req.Header["Expect"], + "100-continue") { + return + } + s.fnonce = new(sync.Once) + + // Arm the timer with a very large duration, which we'll + // intentionally lower later. It has to be large now because + // we need a handle to it before writing the headers, but the + // s.delay value is defined to not start until after the + // request headers were written. + const hugeDuration = 365 * 24 * time.Hour + s.timer = time.AfterFunc(hugeDuration, func() { + s.fnonce.Do(s.fn) + }) + return +} + +func (s bodyWriterState) cancel() { + if s.timer != nil { + s.timer.Stop() + } +} + +func (s bodyWriterState) on100() { + if s.timer == nil { + // If we didn't do a delayed write, ignore the server's + // bogus 100 continue response. + return + } + s.timer.Stop() + go func() { s.fnonce.Do(s.fn) }() +} + +// scheduleBodyWrite starts writing the body, either immediately (in +// the common case) or after the delay timeout. It should not be +// called until after the headers have been written. +func (s bodyWriterState) scheduleBodyWrite() { + if s.timer == nil { + // We're not doing a delayed write (see + // getBodyWriterState), so just start the writing + // goroutine immediately. + go s.fn() + return + } + traceWait100Continue(s.cs.trace) + if s.timer.Stop() { + s.timer.Reset(s.delay) + } +} + +// isConnectionCloseRequest reports whether req should use its own +// connection for a single request and then close the connection. +func isConnectionCloseRequest(req *http.Request) bool { + return req.Close || httplex.HeaderValuesContainsToken(req.Header["Connection"], "close") +} diff --git a/vendor/golang.org/x/net/http2/write.go b/vendor/golang.org/x/net/http2/write.go new file mode 100644 index 0000000..27ef0dd --- /dev/null +++ b/vendor/golang.org/x/net/http2/write.go @@ -0,0 +1,264 @@ +// 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. + +package http2 + +import ( + "bytes" + "fmt" + "log" + "net/http" + "time" + + "golang.org/x/net/http2/hpack" + "golang.org/x/net/lex/httplex" +) + +// writeFramer is implemented by any type that is used to write frames. +type writeFramer interface { + writeFrame(writeContext) error +} + +// writeContext is the interface needed by the various frame writer +// types below. All the writeFrame methods below are scheduled via the +// frame writing scheduler (see writeScheduler in writesched.go). +// +// This interface is implemented by *serverConn. +// +// TODO: decide whether to a) use this in the client code (which didn't +// end up using this yet, because it has a simpler design, not +// currently implementing priorities), or b) delete this and +// make the server code a bit more concrete. +type writeContext interface { + Framer() *Framer + Flush() error + CloseConn() error + // HeaderEncoder returns an HPACK encoder that writes to the + // returned buffer. + HeaderEncoder() (*hpack.Encoder, *bytes.Buffer) +} + +// endsStream reports whether the given frame writer w will locally +// close the stream. +func endsStream(w writeFramer) bool { + switch v := w.(type) { + case *writeData: + return v.endStream + case *writeResHeaders: + return v.endStream + case nil: + // This can only happen if the caller reuses w after it's + // been intentionally nil'ed out to prevent use. Keep this + // here to catch future refactoring breaking it. + panic("endsStream called on nil writeFramer") + } + return false +} + +type flushFrameWriter struct{} + +func (flushFrameWriter) writeFrame(ctx writeContext) error { + return ctx.Flush() +} + +type writeSettings []Setting + +func (s writeSettings) writeFrame(ctx writeContext) error { + return ctx.Framer().WriteSettings([]Setting(s)...) +} + +type writeGoAway struct { + maxStreamID uint32 + code ErrCode +} + +func (p *writeGoAway) writeFrame(ctx writeContext) error { + err := ctx.Framer().WriteGoAway(p.maxStreamID, p.code, nil) + if p.code != 0 { + ctx.Flush() // ignore error: we're hanging up on them anyway + time.Sleep(50 * time.Millisecond) + ctx.CloseConn() + } + return err +} + +type writeData struct { + streamID uint32 + p []byte + endStream bool +} + +func (w *writeData) String() string { + return fmt.Sprintf("writeData(stream=%d, p=%d, endStream=%v)", w.streamID, len(w.p), w.endStream) +} + +func (w *writeData) writeFrame(ctx writeContext) error { + return ctx.Framer().WriteData(w.streamID, w.endStream, w.p) +} + +// handlerPanicRST is the message sent from handler goroutines when +// the handler panics. +type handlerPanicRST struct { + StreamID uint32 +} + +func (hp handlerPanicRST) writeFrame(ctx writeContext) error { + return ctx.Framer().WriteRSTStream(hp.StreamID, ErrCodeInternal) +} + +func (se StreamError) writeFrame(ctx writeContext) error { + return ctx.Framer().WriteRSTStream(se.StreamID, se.Code) +} + +type writePingAck struct{ pf *PingFrame } + +func (w writePingAck) writeFrame(ctx writeContext) error { + return ctx.Framer().WritePing(true, w.pf.Data) +} + +type writeSettingsAck struct{} + +func (writeSettingsAck) writeFrame(ctx writeContext) error { + return ctx.Framer().WriteSettingsAck() +} + +// writeResHeaders is a request to write a HEADERS and 0+ CONTINUATION frames +// for HTTP response headers or trailers from a server handler. +type writeResHeaders struct { + streamID uint32 + httpResCode int // 0 means no ":status" line + h http.Header // may be nil + trailers []string // if non-nil, which keys of h to write. nil means all. + endStream bool + + date string + contentType string + contentLength string +} + +func encKV(enc *hpack.Encoder, k, v string) { + if VerboseLogs { + log.Printf("http2: server encoding header %q = %q", k, v) + } + enc.WriteField(hpack.HeaderField{Name: k, Value: v}) +} + +func (w *writeResHeaders) writeFrame(ctx writeContext) error { + enc, buf := ctx.HeaderEncoder() + buf.Reset() + + if w.httpResCode != 0 { + encKV(enc, ":status", httpCodeString(w.httpResCode)) + } + + encodeHeaders(enc, w.h, w.trailers) + + if w.contentType != "" { + encKV(enc, "content-type", w.contentType) + } + if w.contentLength != "" { + encKV(enc, "content-length", w.contentLength) + } + if w.date != "" { + encKV(enc, "date", w.date) + } + + headerBlock := buf.Bytes() + if len(headerBlock) == 0 && w.trailers == nil { + panic("unexpected empty hpack") + } + + // For now we're lazy and just pick the minimum MAX_FRAME_SIZE + // that all peers must support (16KB). Later we could care + // more and send larger frames if the peer advertised it, but + // there's little point. Most headers are small anyway (so we + // generally won't have CONTINUATION frames), and extra frames + // only waste 9 bytes anyway. + const maxFrameSize = 16384 + + first := true + for len(headerBlock) > 0 { + frag := headerBlock + if len(frag) > maxFrameSize { + frag = frag[:maxFrameSize] + } + headerBlock = headerBlock[len(frag):] + endHeaders := len(headerBlock) == 0 + var err error + if first { + first = false + err = ctx.Framer().WriteHeaders(HeadersFrameParam{ + StreamID: w.streamID, + BlockFragment: frag, + EndStream: w.endStream, + EndHeaders: endHeaders, + }) + } else { + err = ctx.Framer().WriteContinuation(w.streamID, endHeaders, frag) + } + if err != nil { + return err + } + } + return nil +} + +type write100ContinueHeadersFrame struct { + streamID uint32 +} + +func (w write100ContinueHeadersFrame) writeFrame(ctx writeContext) error { + enc, buf := ctx.HeaderEncoder() + buf.Reset() + encKV(enc, ":status", "100") + return ctx.Framer().WriteHeaders(HeadersFrameParam{ + StreamID: w.streamID, + BlockFragment: buf.Bytes(), + EndStream: false, + EndHeaders: true, + }) +} + +type writeWindowUpdate struct { + streamID uint32 // or 0 for conn-level + n uint32 +} + +func (wu writeWindowUpdate) writeFrame(ctx writeContext) error { + return ctx.Framer().WriteWindowUpdate(wu.streamID, wu.n) +} + +func encodeHeaders(enc *hpack.Encoder, h http.Header, keys []string) { + if keys == nil { + sorter := sorterPool.Get().(*sorter) + // Using defer here, since the returned keys from the + // sorter.Keys method is only valid until the sorter + // is returned: + defer sorterPool.Put(sorter) + keys = sorter.Keys(h) + } + for _, k := range keys { + vv := h[k] + k = lowerHeader(k) + if !validWireHeaderFieldName(k) { + // Skip it as backup paranoia. Per + // golang.org/issue/14048, these should + // already be rejected at a higher level. + continue + } + isTE := k == "transfer-encoding" + for _, v := range vv { + if !httplex.ValidHeaderFieldValue(v) { + // TODO: return an error? golang.org/issue/14048 + // For now just omit it. + continue + } + // TODO: more of "8.1.2.2 Connection-Specific Header Fields" + if isTE && v != "trailers" { + continue + } + encKV(enc, k, v) + } + } +} diff --git a/vendor/golang.org/x/net/http2/writesched.go b/vendor/golang.org/x/net/http2/writesched.go new file mode 100644 index 0000000..c24316c --- /dev/null +++ b/vendor/golang.org/x/net/http2/writesched.go @@ -0,0 +1,283 @@ +// 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. + +package http2 + +import "fmt" + +// frameWriteMsg is a request to write a frame. +type frameWriteMsg struct { + // write is the interface value that does the writing, once the + // writeScheduler (below) has decided to select this frame + // to write. The write functions are all defined in write.go. + write writeFramer + + stream *stream // used for prioritization. nil for non-stream frames. + + // done, if non-nil, must be a buffered channel with space for + // 1 message and is sent the return value from write (or an + // earlier error) when the frame has been written. + done chan error +} + +// for debugging only: +func (wm frameWriteMsg) String() string { + var streamID uint32 + if wm.stream != nil { + streamID = wm.stream.id + } + var des string + if s, ok := wm.write.(fmt.Stringer); ok { + des = s.String() + } else { + des = fmt.Sprintf("%T", wm.write) + } + return fmt.Sprintf("[frameWriteMsg stream=%d, ch=%v, type: %v]", streamID, wm.done != nil, des) +} + +// writeScheduler tracks pending frames to write, priorities, and decides +// the next one to use. It is not thread-safe. +type writeScheduler struct { + // zero are frames not associated with a specific stream. + // They're sent before any stream-specific freams. + zero writeQueue + + // maxFrameSize is the maximum size of a DATA frame + // we'll write. Must be non-zero and between 16K-16M. + maxFrameSize uint32 + + // sq contains the stream-specific queues, keyed by stream ID. + // when a stream is idle, it's deleted from the map. + sq map[uint32]*writeQueue + + // canSend is a slice of memory that's reused between frame + // scheduling decisions to hold the list of writeQueues (from sq) + // which have enough flow control data to send. After canSend is + // built, the best is selected. + canSend []*writeQueue + + // pool of empty queues for reuse. + queuePool []*writeQueue +} + +func (ws *writeScheduler) putEmptyQueue(q *writeQueue) { + if len(q.s) != 0 { + panic("queue must be empty") + } + ws.queuePool = append(ws.queuePool, q) +} + +func (ws *writeScheduler) getEmptyQueue() *writeQueue { + ln := len(ws.queuePool) + if ln == 0 { + return new(writeQueue) + } + q := ws.queuePool[ln-1] + ws.queuePool = ws.queuePool[:ln-1] + return q +} + +func (ws *writeScheduler) empty() bool { return ws.zero.empty() && len(ws.sq) == 0 } + +func (ws *writeScheduler) add(wm frameWriteMsg) { + st := wm.stream + if st == nil { + ws.zero.push(wm) + } else { + ws.streamQueue(st.id).push(wm) + } +} + +func (ws *writeScheduler) streamQueue(streamID uint32) *writeQueue { + if q, ok := ws.sq[streamID]; ok { + return q + } + if ws.sq == nil { + ws.sq = make(map[uint32]*writeQueue) + } + q := ws.getEmptyQueue() + ws.sq[streamID] = q + return q +} + +// take returns the most important frame to write and removes it from the scheduler. +// It is illegal to call this if the scheduler is empty or if there are no connection-level +// flow control bytes available. +func (ws *writeScheduler) take() (wm frameWriteMsg, ok bool) { + if ws.maxFrameSize == 0 { + panic("internal error: ws.maxFrameSize not initialized or invalid") + } + + // If there any frames not associated with streams, prefer those first. + // These are usually SETTINGS, etc. + if !ws.zero.empty() { + return ws.zero.shift(), true + } + if len(ws.sq) == 0 { + return + } + + // Next, prioritize frames on streams that aren't DATA frames (no cost). + for id, q := range ws.sq { + if q.firstIsNoCost() { + return ws.takeFrom(id, q) + } + } + + // Now, all that remains are DATA frames with non-zero bytes to + // send. So pick the best one. + if len(ws.canSend) != 0 { + panic("should be empty") + } + for _, q := range ws.sq { + if n := ws.streamWritableBytes(q); n > 0 { + ws.canSend = append(ws.canSend, q) + } + } + if len(ws.canSend) == 0 { + return + } + defer ws.zeroCanSend() + + // TODO: find the best queue + q := ws.canSend[0] + + return ws.takeFrom(q.streamID(), q) +} + +// zeroCanSend is defered from take. +func (ws *writeScheduler) zeroCanSend() { + for i := range ws.canSend { + ws.canSend[i] = nil + } + ws.canSend = ws.canSend[:0] +} + +// streamWritableBytes returns the number of DATA bytes we could write +// from the given queue's stream, if this stream/queue were +// selected. It is an error to call this if q's head isn't a +// *writeData. +func (ws *writeScheduler) streamWritableBytes(q *writeQueue) int32 { + wm := q.head() + ret := wm.stream.flow.available() // max we can write + if ret == 0 { + return 0 + } + if int32(ws.maxFrameSize) < ret { + ret = int32(ws.maxFrameSize) + } + if ret == 0 { + panic("internal error: ws.maxFrameSize not initialized or invalid") + } + wd := wm.write.(*writeData) + if len(wd.p) < int(ret) { + ret = int32(len(wd.p)) + } + return ret +} + +func (ws *writeScheduler) takeFrom(id uint32, q *writeQueue) (wm frameWriteMsg, ok bool) { + wm = q.head() + // If the first item in this queue costs flow control tokens + // and we don't have enough, write as much as we can. + if wd, ok := wm.write.(*writeData); ok && len(wd.p) > 0 { + allowed := wm.stream.flow.available() // max we can write + if allowed == 0 { + // No quota available. Caller can try the next stream. + return frameWriteMsg{}, false + } + if int32(ws.maxFrameSize) < allowed { + allowed = int32(ws.maxFrameSize) + } + // TODO: further restrict the allowed size, because even if + // the peer says it's okay to write 16MB data frames, we might + // want to write smaller ones to properly weight competing + // streams' priorities. + + if len(wd.p) > int(allowed) { + wm.stream.flow.take(allowed) + chunk := wd.p[:allowed] + wd.p = wd.p[allowed:] + // Make up a new write message of a valid size, rather + // than shifting one off the queue. + return frameWriteMsg{ + stream: wm.stream, + write: &writeData{ + streamID: wd.streamID, + p: chunk, + // even if the original had endStream set, there + // arebytes remaining because len(wd.p) > allowed, + // so we know endStream is false: + endStream: false, + }, + // our caller is blocking on the final DATA frame, not + // these intermediates, so no need to wait: + done: nil, + }, true + } + wm.stream.flow.take(int32(len(wd.p))) + } + + q.shift() + if q.empty() { + ws.putEmptyQueue(q) + delete(ws.sq, id) + } + return wm, true +} + +func (ws *writeScheduler) forgetStream(id uint32) { + q, ok := ws.sq[id] + if !ok { + return + } + delete(ws.sq, id) + + // But keep it for others later. + for i := range q.s { + q.s[i] = frameWriteMsg{} + } + q.s = q.s[:0] + ws.putEmptyQueue(q) +} + +type writeQueue struct { + s []frameWriteMsg +} + +// streamID returns the stream ID for a non-empty stream-specific queue. +func (q *writeQueue) streamID() uint32 { return q.s[0].stream.id } + +func (q *writeQueue) empty() bool { return len(q.s) == 0 } + +func (q *writeQueue) push(wm frameWriteMsg) { + q.s = append(q.s, wm) +} + +// head returns the next item that would be removed by shift. +func (q *writeQueue) head() frameWriteMsg { + if len(q.s) == 0 { + panic("invalid use of queue") + } + return q.s[0] +} + +func (q *writeQueue) shift() frameWriteMsg { + if len(q.s) == 0 { + panic("invalid use of queue") + } + wm := q.s[0] + // TODO: less copy-happy queue. + copy(q.s, q.s[1:]) + q.s[len(q.s)-1] = frameWriteMsg{} + q.s = q.s[:len(q.s)-1] + return wm +} + +func (q *writeQueue) firstIsNoCost() bool { + if df, ok := q.s[0].write.(*writeData); ok { + return len(df.p) == 0 + } + return true +} diff --git a/vendor/golang.org/x/net/idna/idna.go b/vendor/golang.org/x/net/idna/idna.go new file mode 100644 index 0000000..35ff39d --- /dev/null +++ b/vendor/golang.org/x/net/idna/idna.go @@ -0,0 +1,68 @@ +// 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 idna implements IDNA2008 (Internationalized Domain Names for +// Applications), defined in RFC 5890, RFC 5891, RFC 5892, RFC 5893 and +// RFC 5894. +package idna + +import ( + "strings" + "unicode/utf8" +) + +// TODO(nigeltao): specify when errors occur. For example, is ToASCII(".") or +// ToASCII("foo\x00") an error? See also http://www.unicode.org/faq/idn.html#11 + +// acePrefix is the ASCII Compatible Encoding prefix. +const acePrefix = "xn--" + +// ToASCII converts a domain or domain label to its ASCII form. For example, +// ToASCII("bücher.example.com") is "xn--bcher-kva.example.com", and +// ToASCII("golang") is "golang". +func ToASCII(s string) (string, error) { + if ascii(s) { + return s, nil + } + labels := strings.Split(s, ".") + for i, label := range labels { + if !ascii(label) { + a, err := encode(acePrefix, label) + if err != nil { + return "", err + } + labels[i] = a + } + } + return strings.Join(labels, "."), nil +} + +// ToUnicode converts a domain or domain label to its Unicode form. For example, +// ToUnicode("xn--bcher-kva.example.com") is "bücher.example.com", and +// ToUnicode("golang") is "golang". +func ToUnicode(s string) (string, error) { + if !strings.Contains(s, acePrefix) { + return s, nil + } + labels := strings.Split(s, ".") + for i, label := range labels { + if strings.HasPrefix(label, acePrefix) { + u, err := decode(label[len(acePrefix):]) + if err != nil { + return "", err + } + labels[i] = u + } + } + return strings.Join(labels, "."), nil +} + +func ascii(s string) bool { + for i := 0; i < len(s); i++ { + if s[i] >= utf8.RuneSelf { + return false + } + } + return true +} diff --git a/vendor/golang.org/x/net/idna/punycode.go b/vendor/golang.org/x/net/idna/punycode.go new file mode 100644 index 0000000..92e733f --- /dev/null +++ b/vendor/golang.org/x/net/idna/punycode.go @@ -0,0 +1,200 @@ +// 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 idna + +// This file implements the Punycode algorithm from RFC 3492. + +import ( + "fmt" + "math" + "strings" + "unicode/utf8" +) + +// These parameter values are specified in section 5. +// +// All computation is done with int32s, so that overflow behavior is identical +// regardless of whether int is 32-bit or 64-bit. +const ( + base int32 = 36 + damp int32 = 700 + initialBias int32 = 72 + initialN int32 = 128 + skew int32 = 38 + tmax int32 = 26 + tmin int32 = 1 +) + +// decode decodes a string as specified in section 6.2. +func decode(encoded string) (string, error) { + if encoded == "" { + return "", nil + } + pos := 1 + strings.LastIndex(encoded, "-") + if pos == 1 { + return "", fmt.Errorf("idna: invalid label %q", encoded) + } + if pos == len(encoded) { + return encoded[:len(encoded)-1], nil + } + output := make([]rune, 0, len(encoded)) + if pos != 0 { + for _, r := range encoded[:pos-1] { + output = append(output, r) + } + } + i, n, bias := int32(0), initialN, initialBias + for pos < len(encoded) { + oldI, w := i, int32(1) + for k := base; ; k += base { + if pos == len(encoded) { + return "", fmt.Errorf("idna: invalid label %q", encoded) + } + digit, ok := decodeDigit(encoded[pos]) + if !ok { + return "", fmt.Errorf("idna: invalid label %q", encoded) + } + pos++ + i += digit * w + if i < 0 { + return "", fmt.Errorf("idna: invalid label %q", encoded) + } + t := k - bias + if t < tmin { + t = tmin + } else if t > tmax { + t = tmax + } + if digit < t { + break + } + w *= base - t + if w >= math.MaxInt32/base { + return "", fmt.Errorf("idna: invalid label %q", encoded) + } + } + x := int32(len(output) + 1) + bias = adapt(i-oldI, x, oldI == 0) + n += i / x + i %= x + if n > utf8.MaxRune || len(output) >= 1024 { + return "", fmt.Errorf("idna: invalid label %q", encoded) + } + output = append(output, 0) + copy(output[i+1:], output[i:]) + output[i] = n + i++ + } + return string(output), nil +} + +// encode encodes a string as specified in section 6.3 and prepends prefix to +// the result. +// +// The "while h < length(input)" line in the specification becomes "for +// remaining != 0" in the Go code, because len(s) in Go is in bytes, not runes. +func encode(prefix, s string) (string, error) { + output := make([]byte, len(prefix), len(prefix)+1+2*len(s)) + copy(output, prefix) + delta, n, bias := int32(0), initialN, initialBias + b, remaining := int32(0), int32(0) + for _, r := range s { + if r < 0x80 { + b++ + output = append(output, byte(r)) + } else { + remaining++ + } + } + h := b + if b > 0 { + output = append(output, '-') + } + for remaining != 0 { + m := int32(0x7fffffff) + for _, r := range s { + if m > r && r >= n { + m = r + } + } + delta += (m - n) * (h + 1) + if delta < 0 { + return "", fmt.Errorf("idna: invalid label %q", s) + } + n = m + for _, r := range s { + if r < n { + delta++ + if delta < 0 { + return "", fmt.Errorf("idna: invalid label %q", s) + } + continue + } + if r > n { + continue + } + q := delta + for k := base; ; k += base { + t := k - bias + if t < tmin { + t = tmin + } else if t > tmax { + t = tmax + } + if q < t { + break + } + output = append(output, encodeDigit(t+(q-t)%(base-t))) + q = (q - t) / (base - t) + } + output = append(output, encodeDigit(q)) + bias = adapt(delta, h+1, h == b) + delta = 0 + h++ + remaining-- + } + delta++ + n++ + } + return string(output), nil +} + +func decodeDigit(x byte) (digit int32, ok bool) { + switch { + case '0' <= x && x <= '9': + return int32(x - ('0' - 26)), true + case 'A' <= x && x <= 'Z': + return int32(x - 'A'), true + case 'a' <= x && x <= 'z': + return int32(x - 'a'), true + } + return 0, false +} + +func encodeDigit(digit int32) byte { + switch { + case 0 <= digit && digit < 26: + return byte(digit + 'a') + case 26 <= digit && digit < 36: + return byte(digit + ('0' - 26)) + } + panic("idna: internal error in punycode encoding") +} + +// adapt is the bias adaptation function specified in section 6.1. +func adapt(delta, numPoints int32, firstTime bool) int32 { + if firstTime { + delta /= damp + } else { + delta /= 2 + } + delta += delta / numPoints + k := int32(0) + for delta > ((base-tmin)*tmax)/2 { + delta /= base - tmin + k += base + } + return k + (base-tmin+1)*delta/(delta+skew) +} diff --git a/vendor/golang.org/x/net/internal/iana/const.go b/vendor/golang.org/x/net/internal/iana/const.go new file mode 100644 index 0000000..46020ce --- /dev/null +++ b/vendor/golang.org/x/net/internal/iana/const.go @@ -0,0 +1,180 @@ +// go generate gen.go +// GENERATED BY THE COMMAND ABOVE; DO NOT EDIT + +// Package iana provides protocol number resources managed by the Internet Assigned Numbers Authority (IANA). +package iana + +// Differentiated Services Field Codepoints (DSCP), Updated: 2013-06-25 +const ( + DiffServCS0 = 0x0 // CS0 + DiffServCS1 = 0x20 // CS1 + DiffServCS2 = 0x40 // CS2 + DiffServCS3 = 0x60 // CS3 + DiffServCS4 = 0x80 // CS4 + DiffServCS5 = 0xa0 // CS5 + DiffServCS6 = 0xc0 // CS6 + DiffServCS7 = 0xe0 // CS7 + DiffServAF11 = 0x28 // AF11 + DiffServAF12 = 0x30 // AF12 + DiffServAF13 = 0x38 // AF13 + DiffServAF21 = 0x48 // AF21 + DiffServAF22 = 0x50 // AF22 + DiffServAF23 = 0x58 // AF23 + DiffServAF31 = 0x68 // AF31 + DiffServAF32 = 0x70 // AF32 + DiffServAF33 = 0x78 // AF33 + DiffServAF41 = 0x88 // AF41 + DiffServAF42 = 0x90 // AF42 + DiffServAF43 = 0x98 // AF43 + DiffServEFPHB = 0xb8 // EF PHB + DiffServVOICEADMIT = 0xb0 // VOICE-ADMIT +) + +// IPv4 TOS Byte and IPv6 Traffic Class Octet, Updated: 2001-09-06 +const ( + NotECNTransport = 0x0 // Not-ECT (Not ECN-Capable Transport) + ECNTransport1 = 0x1 // ECT(1) (ECN-Capable Transport(1)) + ECNTransport0 = 0x2 // ECT(0) (ECN-Capable Transport(0)) + CongestionExperienced = 0x3 // CE (Congestion Experienced) +) + +// Protocol Numbers, Updated: 2015-10-06 +const ( + ProtocolIP = 0 // IPv4 encapsulation, pseudo protocol number + ProtocolHOPOPT = 0 // IPv6 Hop-by-Hop Option + ProtocolICMP = 1 // Internet Control Message + ProtocolIGMP = 2 // Internet Group Management + ProtocolGGP = 3 // Gateway-to-Gateway + ProtocolIPv4 = 4 // IPv4 encapsulation + ProtocolST = 5 // Stream + ProtocolTCP = 6 // Transmission Control + ProtocolCBT = 7 // CBT + ProtocolEGP = 8 // Exterior Gateway Protocol + ProtocolIGP = 9 // any private interior gateway (used by Cisco for their IGRP) + ProtocolBBNRCCMON = 10 // BBN RCC Monitoring + ProtocolNVPII = 11 // Network Voice Protocol + ProtocolPUP = 12 // PUP + ProtocolEMCON = 14 // EMCON + ProtocolXNET = 15 // Cross Net Debugger + ProtocolCHAOS = 16 // Chaos + ProtocolUDP = 17 // User Datagram + ProtocolMUX = 18 // Multiplexing + ProtocolDCNMEAS = 19 // DCN Measurement Subsystems + ProtocolHMP = 20 // Host Monitoring + ProtocolPRM = 21 // Packet Radio Measurement + ProtocolXNSIDP = 22 // XEROX NS IDP + ProtocolTRUNK1 = 23 // Trunk-1 + ProtocolTRUNK2 = 24 // Trunk-2 + ProtocolLEAF1 = 25 // Leaf-1 + ProtocolLEAF2 = 26 // Leaf-2 + ProtocolRDP = 27 // Reliable Data Protocol + ProtocolIRTP = 28 // Internet Reliable Transaction + ProtocolISOTP4 = 29 // ISO Transport Protocol Class 4 + ProtocolNETBLT = 30 // Bulk Data Transfer Protocol + ProtocolMFENSP = 31 // MFE Network Services Protocol + ProtocolMERITINP = 32 // MERIT Internodal Protocol + ProtocolDCCP = 33 // Datagram Congestion Control Protocol + Protocol3PC = 34 // Third Party Connect Protocol + ProtocolIDPR = 35 // Inter-Domain Policy Routing Protocol + ProtocolXTP = 36 // XTP + ProtocolDDP = 37 // Datagram Delivery Protocol + ProtocolIDPRCMTP = 38 // IDPR Control Message Transport Proto + ProtocolTPPP = 39 // TP++ Transport Protocol + ProtocolIL = 40 // IL Transport Protocol + ProtocolIPv6 = 41 // IPv6 encapsulation + ProtocolSDRP = 42 // Source Demand Routing Protocol + ProtocolIPv6Route = 43 // Routing Header for IPv6 + ProtocolIPv6Frag = 44 // Fragment Header for IPv6 + ProtocolIDRP = 45 // Inter-Domain Routing Protocol + ProtocolRSVP = 46 // Reservation Protocol + ProtocolGRE = 47 // Generic Routing Encapsulation + ProtocolDSR = 48 // Dynamic Source Routing Protocol + ProtocolBNA = 49 // BNA + ProtocolESP = 50 // Encap Security Payload + ProtocolAH = 51 // Authentication Header + ProtocolINLSP = 52 // Integrated Net Layer Security TUBA + ProtocolNARP = 54 // NBMA Address Resolution Protocol + ProtocolMOBILE = 55 // IP Mobility + ProtocolTLSP = 56 // Transport Layer Security Protocol using Kryptonet key management + ProtocolSKIP = 57 // SKIP + ProtocolIPv6ICMP = 58 // ICMP for IPv6 + ProtocolIPv6NoNxt = 59 // No Next Header for IPv6 + ProtocolIPv6Opts = 60 // Destination Options for IPv6 + ProtocolCFTP = 62 // CFTP + ProtocolSATEXPAK = 64 // SATNET and Backroom EXPAK + ProtocolKRYPTOLAN = 65 // Kryptolan + ProtocolRVD = 66 // MIT Remote Virtual Disk Protocol + ProtocolIPPC = 67 // Internet Pluribus Packet Core + ProtocolSATMON = 69 // SATNET Monitoring + ProtocolVISA = 70 // VISA Protocol + ProtocolIPCV = 71 // Internet Packet Core Utility + ProtocolCPNX = 72 // Computer Protocol Network Executive + ProtocolCPHB = 73 // Computer Protocol Heart Beat + ProtocolWSN = 74 // Wang Span Network + ProtocolPVP = 75 // Packet Video Protocol + ProtocolBRSATMON = 76 // Backroom SATNET Monitoring + ProtocolSUNND = 77 // SUN ND PROTOCOL-Temporary + ProtocolWBMON = 78 // WIDEBAND Monitoring + ProtocolWBEXPAK = 79 // WIDEBAND EXPAK + ProtocolISOIP = 80 // ISO Internet Protocol + ProtocolVMTP = 81 // VMTP + ProtocolSECUREVMTP = 82 // SECURE-VMTP + ProtocolVINES = 83 // VINES + ProtocolTTP = 84 // Transaction Transport Protocol + ProtocolIPTM = 84 // Internet Protocol Traffic Manager + ProtocolNSFNETIGP = 85 // NSFNET-IGP + ProtocolDGP = 86 // Dissimilar Gateway Protocol + ProtocolTCF = 87 // TCF + ProtocolEIGRP = 88 // EIGRP + ProtocolOSPFIGP = 89 // OSPFIGP + ProtocolSpriteRPC = 90 // Sprite RPC Protocol + ProtocolLARP = 91 // Locus Address Resolution Protocol + ProtocolMTP = 92 // Multicast Transport Protocol + ProtocolAX25 = 93 // AX.25 Frames + ProtocolIPIP = 94 // IP-within-IP Encapsulation Protocol + ProtocolSCCSP = 96 // Semaphore Communications Sec. Pro. + ProtocolETHERIP = 97 // Ethernet-within-IP Encapsulation + ProtocolENCAP = 98 // Encapsulation Header + ProtocolGMTP = 100 // GMTP + ProtocolIFMP = 101 // Ipsilon Flow Management Protocol + ProtocolPNNI = 102 // PNNI over IP + ProtocolPIM = 103 // Protocol Independent Multicast + ProtocolARIS = 104 // ARIS + ProtocolSCPS = 105 // SCPS + ProtocolQNX = 106 // QNX + ProtocolAN = 107 // Active Networks + ProtocolIPComp = 108 // IP Payload Compression Protocol + ProtocolSNP = 109 // Sitara Networks Protocol + ProtocolCompaqPeer = 110 // Compaq Peer Protocol + ProtocolIPXinIP = 111 // IPX in IP + ProtocolVRRP = 112 // Virtual Router Redundancy Protocol + ProtocolPGM = 113 // PGM Reliable Transport Protocol + ProtocolL2TP = 115 // Layer Two Tunneling Protocol + ProtocolDDX = 116 // D-II Data Exchange (DDX) + ProtocolIATP = 117 // Interactive Agent Transfer Protocol + ProtocolSTP = 118 // Schedule Transfer Protocol + ProtocolSRP = 119 // SpectraLink Radio Protocol + ProtocolUTI = 120 // UTI + ProtocolSMP = 121 // Simple Message Protocol + ProtocolPTP = 123 // Performance Transparency Protocol + ProtocolISIS = 124 // ISIS over IPv4 + ProtocolFIRE = 125 // FIRE + ProtocolCRTP = 126 // Combat Radio Transport Protocol + ProtocolCRUDP = 127 // Combat Radio User Datagram + ProtocolSSCOPMCE = 128 // SSCOPMCE + ProtocolIPLT = 129 // IPLT + ProtocolSPS = 130 // Secure Packet Shield + ProtocolPIPE = 131 // Private IP Encapsulation within IP + ProtocolSCTP = 132 // Stream Control Transmission Protocol + ProtocolFC = 133 // Fibre Channel + ProtocolRSVPE2EIGNORE = 134 // RSVP-E2E-IGNORE + ProtocolMobilityHeader = 135 // Mobility Header + ProtocolUDPLite = 136 // UDPLite + ProtocolMPLSinIP = 137 // MPLS-in-IP + ProtocolMANET = 138 // MANET Protocols + ProtocolHIP = 139 // Host Identity Protocol + ProtocolShim6 = 140 // Shim6 Protocol + ProtocolWESP = 141 // Wrapped Encapsulating Security Payload + ProtocolROHC = 142 // Robust Header Compression + ProtocolReserved = 255 // Reserved +) diff --git a/vendor/golang.org/x/net/internal/iana/gen.go b/vendor/golang.org/x/net/internal/iana/gen.go new file mode 100644 index 0000000..2d8c07c --- /dev/null +++ b/vendor/golang.org/x/net/internal/iana/gen.go @@ -0,0 +1,293 @@ +// 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 ignore + +//go:generate go run gen.go + +// This program generates internet protocol constants and tables by +// reading IANA protocol registries. +package main + +import ( + "bytes" + "encoding/xml" + "fmt" + "go/format" + "io" + "io/ioutil" + "net/http" + "os" + "strconv" + "strings" +) + +var registries = []struct { + url string + parse func(io.Writer, io.Reader) error +}{ + { + "http://www.iana.org/assignments/dscp-registry/dscp-registry.xml", + parseDSCPRegistry, + }, + { + "http://www.iana.org/assignments/ipv4-tos-byte/ipv4-tos-byte.xml", + parseTOSTCByte, + }, + { + "http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml", + parseProtocolNumbers, + }, +} + +func main() { + var bb bytes.Buffer + fmt.Fprintf(&bb, "// go generate gen.go\n") + fmt.Fprintf(&bb, "// GENERATED BY THE COMMAND ABOVE; DO NOT EDIT\n\n") + fmt.Fprintf(&bb, "// Package iana provides protocol number resources managed by the Internet Assigned Numbers Authority (IANA).\n") + fmt.Fprintf(&bb, `package iana // import "golang.org/x/net/internal/iana"`+"\n\n") + for _, r := range registries { + resp, err := http.Get(r.url) + if err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } + defer resp.Body.Close() + if resp.StatusCode != http.StatusOK { + fmt.Fprintf(os.Stderr, "got HTTP status code %v for %v\n", resp.StatusCode, r.url) + os.Exit(1) + } + if err := r.parse(&bb, resp.Body); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } + fmt.Fprintf(&bb, "\n") + } + b, err := format.Source(bb.Bytes()) + if err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } + if err := ioutil.WriteFile("const.go", b, 0644); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } +} + +func parseDSCPRegistry(w io.Writer, r io.Reader) error { + dec := xml.NewDecoder(r) + var dr dscpRegistry + if err := dec.Decode(&dr); err != nil { + return err + } + drs := dr.escape() + fmt.Fprintf(w, "// %s, Updated: %s\n", dr.Title, dr.Updated) + fmt.Fprintf(w, "const (\n") + for _, dr := range drs { + fmt.Fprintf(w, "DiffServ%s = %#x", dr.Name, dr.Value) + fmt.Fprintf(w, "// %s\n", dr.OrigName) + } + fmt.Fprintf(w, ")\n") + return nil +} + +type dscpRegistry struct { + XMLName xml.Name `xml:"registry"` + Title string `xml:"title"` + Updated string `xml:"updated"` + Note string `xml:"note"` + RegTitle string `xml:"registry>title"` + PoolRecords []struct { + Name string `xml:"name"` + Space string `xml:"space"` + } `xml:"registry>record"` + Records []struct { + Name string `xml:"name"` + Space string `xml:"space"` + } `xml:"registry>registry>record"` +} + +type canonDSCPRecord struct { + OrigName string + Name string + Value int +} + +func (drr *dscpRegistry) escape() []canonDSCPRecord { + drs := make([]canonDSCPRecord, len(drr.Records)) + sr := strings.NewReplacer( + "+", "", + "-", "", + "/", "", + ".", "", + " ", "", + ) + for i, dr := range drr.Records { + s := strings.TrimSpace(dr.Name) + drs[i].OrigName = s + drs[i].Name = sr.Replace(s) + n, err := strconv.ParseUint(dr.Space, 2, 8) + if err != nil { + continue + } + drs[i].Value = int(n) << 2 + } + return drs +} + +func parseTOSTCByte(w io.Writer, r io.Reader) error { + dec := xml.NewDecoder(r) + var ttb tosTCByte + if err := dec.Decode(&ttb); err != nil { + return err + } + trs := ttb.escape() + fmt.Fprintf(w, "// %s, Updated: %s\n", ttb.Title, ttb.Updated) + fmt.Fprintf(w, "const (\n") + for _, tr := range trs { + fmt.Fprintf(w, "%s = %#x", tr.Keyword, tr.Value) + fmt.Fprintf(w, "// %s\n", tr.OrigKeyword) + } + fmt.Fprintf(w, ")\n") + return nil +} + +type tosTCByte struct { + XMLName xml.Name `xml:"registry"` + Title string `xml:"title"` + Updated string `xml:"updated"` + Note string `xml:"note"` + RegTitle string `xml:"registry>title"` + Records []struct { + Binary string `xml:"binary"` + Keyword string `xml:"keyword"` + } `xml:"registry>record"` +} + +type canonTOSTCByteRecord struct { + OrigKeyword string + Keyword string + Value int +} + +func (ttb *tosTCByte) escape() []canonTOSTCByteRecord { + trs := make([]canonTOSTCByteRecord, len(ttb.Records)) + sr := strings.NewReplacer( + "Capable", "", + "(", "", + ")", "", + "+", "", + "-", "", + "/", "", + ".", "", + " ", "", + ) + for i, tr := range ttb.Records { + s := strings.TrimSpace(tr.Keyword) + trs[i].OrigKeyword = s + ss := strings.Split(s, " ") + if len(ss) > 1 { + trs[i].Keyword = strings.Join(ss[1:], " ") + } else { + trs[i].Keyword = ss[0] + } + trs[i].Keyword = sr.Replace(trs[i].Keyword) + n, err := strconv.ParseUint(tr.Binary, 2, 8) + if err != nil { + continue + } + trs[i].Value = int(n) + } + return trs +} + +func parseProtocolNumbers(w io.Writer, r io.Reader) error { + dec := xml.NewDecoder(r) + var pn protocolNumbers + if err := dec.Decode(&pn); err != nil { + return err + } + prs := pn.escape() + prs = append([]canonProtocolRecord{{ + Name: "IP", + Descr: "IPv4 encapsulation, pseudo protocol number", + Value: 0, + }}, prs...) + fmt.Fprintf(w, "// %s, Updated: %s\n", pn.Title, pn.Updated) + fmt.Fprintf(w, "const (\n") + for _, pr := range prs { + if pr.Name == "" { + continue + } + fmt.Fprintf(w, "Protocol%s = %d", pr.Name, pr.Value) + s := pr.Descr + if s == "" { + s = pr.OrigName + } + fmt.Fprintf(w, "// %s\n", s) + } + fmt.Fprintf(w, ")\n") + return nil +} + +type protocolNumbers struct { + XMLName xml.Name `xml:"registry"` + Title string `xml:"title"` + Updated string `xml:"updated"` + RegTitle string `xml:"registry>title"` + Note string `xml:"registry>note"` + Records []struct { + Value string `xml:"value"` + Name string `xml:"name"` + Descr string `xml:"description"` + } `xml:"registry>record"` +} + +type canonProtocolRecord struct { + OrigName string + Name string + Descr string + Value int +} + +func (pn *protocolNumbers) escape() []canonProtocolRecord { + prs := make([]canonProtocolRecord, len(pn.Records)) + sr := strings.NewReplacer( + "-in-", "in", + "-within-", "within", + "-over-", "over", + "+", "P", + "-", "", + "/", "", + ".", "", + " ", "", + ) + for i, pr := range pn.Records { + if strings.Contains(pr.Name, "Deprecated") || + strings.Contains(pr.Name, "deprecated") { + continue + } + prs[i].OrigName = pr.Name + s := strings.TrimSpace(pr.Name) + switch pr.Name { + case "ISIS over IPv4": + prs[i].Name = "ISIS" + case "manet": + prs[i].Name = "MANET" + default: + prs[i].Name = sr.Replace(s) + } + ss := strings.Split(pr.Descr, "\n") + for i := range ss { + ss[i] = strings.TrimSpace(ss[i]) + } + if len(ss) > 1 { + prs[i].Descr = strings.Join(ss, " ") + } else { + prs[i].Descr = ss[0] + } + prs[i].Value, _ = strconv.Atoi(pr.Value) + } + return prs +} diff --git a/vendor/golang.org/x/net/internal/netreflect/socket.go b/vendor/golang.org/x/net/internal/netreflect/socket.go new file mode 100644 index 0000000..e82e51c --- /dev/null +++ b/vendor/golang.org/x/net/internal/netreflect/socket.go @@ -0,0 +1,37 @@ +// 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 netreflect implements run-time reflection for the +// facilities of net package. +package netreflect + +import ( + "errors" + "net" +) + +var ( + errInvalidType = errors.New("invalid type") + errOpNoSupport = errors.New("operation not supported") +) + +// SocketOf returns the socket descriptor of c. +func SocketOf(c net.Conn) (uintptr, error) { + switch c.(type) { + case *net.TCPConn, *net.UDPConn, *net.IPConn, *net.UnixConn: + return socketOf(c) + default: + return 0, errInvalidType + } +} + +// PacketSocketOf returns the socket descriptor of c. +func PacketSocketOf(c net.PacketConn) (uintptr, error) { + switch c.(type) { + case *net.UDPConn, *net.IPConn, *net.UnixConn: + return socketOf(c.(net.Conn)) + default: + return 0, errInvalidType + } +} diff --git a/vendor/golang.org/x/net/internal/netreflect/socket_posix.go b/vendor/golang.org/x/net/internal/netreflect/socket_posix.go new file mode 100644 index 0000000..df475a2 --- /dev/null +++ b/vendor/golang.org/x/net/internal/netreflect/socket_posix.go @@ -0,0 +1,30 @@ +// 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 darwin dragonfly freebsd linux netbsd openbsd solaris windows + +package netreflect + +import ( + "net" + "reflect" + "runtime" +) + +func socketOf(c net.Conn) (uintptr, error) { + v := reflect.ValueOf(c) + switch e := v.Elem(); e.Kind() { + case reflect.Struct: + fd := e.FieldByName("conn").FieldByName("fd") + switch e := fd.Elem(); e.Kind() { + case reflect.Struct: + sysfd := e.FieldByName("sysfd") + if runtime.GOOS == "windows" { + return uintptr(sysfd.Uint()), nil + } + return uintptr(sysfd.Int()), nil + } + } + return 0, errInvalidType +} diff --git a/vendor/golang.org/x/net/internal/netreflect/socket_stub.go b/vendor/golang.org/x/net/internal/netreflect/socket_stub.go new file mode 100644 index 0000000..85adb4b --- /dev/null +++ b/vendor/golang.org/x/net/internal/netreflect/socket_stub.go @@ -0,0 +1,11 @@ +// 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 !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows + +package netreflect + +import "net" + +func socketOf(c net.Conn) (uintptr, error) { return 0, errOpNoSupport } diff --git a/vendor/golang.org/x/net/ipv4/bpfopt_linux.go b/vendor/golang.org/x/net/ipv4/bpfopt_linux.go new file mode 100644 index 0000000..2d626d9 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/bpfopt_linux.go @@ -0,0 +1,28 @@ +// 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 ipv4 + +import ( + "os" + "unsafe" + + "golang.org/x/net/bpf" + "golang.org/x/net/internal/netreflect" +) + +// SetBPF attaches a BPF program to the connection. +// +// Only supported on Linux. +func (c *dgramOpt) SetBPF(filter []bpf.RawInstruction) error { + s, err := netreflect.PacketSocketOf(c.PacketConn) + if err != nil { + return err + } + prog := sockFProg{ + Len: uint16(len(filter)), + Filter: (*sockFilter)(unsafe.Pointer(&filter[0])), + } + return os.NewSyscallError("setsockopt", setsockopt(s, sysSOL_SOCKET, sysSO_ATTACH_FILTER, unsafe.Pointer(&prog), uint32(unsafe.Sizeof(prog)))) +} diff --git a/vendor/golang.org/x/net/ipv4/bpfopt_stub.go b/vendor/golang.org/x/net/ipv4/bpfopt_stub.go new file mode 100644 index 0000000..c4a8481 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/bpfopt_stub.go @@ -0,0 +1,16 @@ +// 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 ipv4 + +import "golang.org/x/net/bpf" + +// SetBPF attaches a BPF program to the connection. +// +// Only supported on Linux. +func (c *dgramOpt) SetBPF(filter []bpf.RawInstruction) error { + return errOpNoSupport +} diff --git a/vendor/golang.org/x/net/ipv4/control.go b/vendor/golang.org/x/net/ipv4/control.go new file mode 100644 index 0000000..8cadfd7 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/control.go @@ -0,0 +1,70 @@ +// 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 ipv4 + +import ( + "fmt" + "net" + "sync" +) + +type rawOpt struct { + sync.RWMutex + cflags ControlFlags +} + +func (c *rawOpt) set(f ControlFlags) { c.cflags |= f } +func (c *rawOpt) clear(f ControlFlags) { c.cflags &^= f } +func (c *rawOpt) isset(f ControlFlags) bool { return c.cflags&f != 0 } + +type ControlFlags uint + +const ( + FlagTTL ControlFlags = 1 << iota // pass the TTL on the received packet + FlagSrc // pass the source address on the received packet + FlagDst // pass the destination address on the received packet + FlagInterface // pass the interface index on the received packet +) + +// A ControlMessage represents per packet basis IP-level socket options. +type ControlMessage struct { + // Receiving socket options: SetControlMessage allows to + // receive the options from the protocol stack using ReadFrom + // method of PacketConn or RawConn. + // + // Specifying socket options: ControlMessage for WriteTo + // method of PacketConn or RawConn allows to send the options + // to the protocol stack. + // + TTL int // time-to-live, receiving only + Src net.IP // source address, specifying only + Dst net.IP // destination address, receiving only + IfIndex int // interface index, must be 1 <= value when specifying +} + +func (cm *ControlMessage) String() string { + if cm == nil { + return "" + } + return fmt.Sprintf("ttl=%d src=%v dst=%v ifindex=%d", cm.TTL, cm.Src, cm.Dst, cm.IfIndex) +} + +// Ancillary data socket options +const ( + ctlTTL = iota // header field + ctlSrc // header field + ctlDst // header field + ctlInterface // inbound or outbound interface + ctlPacketInfo // inbound or outbound packet path + ctlMax +) + +// A ctlOpt represents a binding for ancillary data socket option. +type ctlOpt struct { + name int // option name, must be equal or greater than 1 + length int // option length + marshal func([]byte, *ControlMessage) []byte + parse func(*ControlMessage, []byte) +} diff --git a/vendor/golang.org/x/net/ipv4/control_bsd.go b/vendor/golang.org/x/net/ipv4/control_bsd.go new file mode 100644 index 0000000..33d8bc8 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/control_bsd.go @@ -0,0 +1,40 @@ +// 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 darwin dragonfly freebsd netbsd openbsd + +package ipv4 + +import ( + "net" + "syscall" + "unsafe" + + "golang.org/x/net/internal/iana" +) + +func marshalDst(b []byte, cm *ControlMessage) []byte { + m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0])) + m.Level = iana.ProtocolIP + m.Type = sysIP_RECVDSTADDR + m.SetLen(syscall.CmsgLen(net.IPv4len)) + return b[syscall.CmsgSpace(net.IPv4len):] +} + +func parseDst(cm *ControlMessage, b []byte) { + cm.Dst = b[:net.IPv4len] +} + +func marshalInterface(b []byte, cm *ControlMessage) []byte { + m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0])) + m.Level = iana.ProtocolIP + m.Type = sysIP_RECVIF + m.SetLen(syscall.CmsgLen(syscall.SizeofSockaddrDatalink)) + return b[syscall.CmsgSpace(syscall.SizeofSockaddrDatalink):] +} + +func parseInterface(cm *ControlMessage, b []byte) { + sadl := (*syscall.SockaddrDatalink)(unsafe.Pointer(&b[0])) + cm.IfIndex = int(sadl.Index) +} diff --git a/vendor/golang.org/x/net/ipv4/control_pktinfo.go b/vendor/golang.org/x/net/ipv4/control_pktinfo.go new file mode 100644 index 0000000..9ed9773 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/control_pktinfo.go @@ -0,0 +1,37 @@ +// 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 linux solaris + +package ipv4 + +import ( + "syscall" + "unsafe" + + "golang.org/x/net/internal/iana" +) + +func marshalPacketInfo(b []byte, cm *ControlMessage) []byte { + m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0])) + m.Level = iana.ProtocolIP + m.Type = sysIP_PKTINFO + m.SetLen(syscall.CmsgLen(sizeofInetPktinfo)) + if cm != nil { + pi := (*inetPktinfo)(unsafe.Pointer(&b[syscall.CmsgLen(0)])) + if ip := cm.Src.To4(); ip != nil { + copy(pi.Spec_dst[:], ip) + } + if cm.IfIndex > 0 { + pi.setIfindex(cm.IfIndex) + } + } + return b[syscall.CmsgSpace(sizeofInetPktinfo):] +} + +func parsePacketInfo(cm *ControlMessage, b []byte) { + pi := (*inetPktinfo)(unsafe.Pointer(&b[0])) + cm.IfIndex = int(pi.Ifindex) + cm.Dst = pi.Addr[:] +} diff --git a/vendor/golang.org/x/net/ipv4/control_stub.go b/vendor/golang.org/x/net/ipv4/control_stub.go new file mode 100644 index 0000000..88602c3 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/control_stub.go @@ -0,0 +1,23 @@ +// 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 nacl plan9 + +package ipv4 + +func setControlMessage(s uintptr, opt *rawOpt, cf ControlFlags, on bool) error { + return errOpNoSupport +} + +func newControlMessage(opt *rawOpt) []byte { + return nil +} + +func parseControlMessage(b []byte) (*ControlMessage, error) { + return nil, errOpNoSupport +} + +func marshalControlMessage(cm *ControlMessage) []byte { + return nil +} diff --git a/vendor/golang.org/x/net/ipv4/control_unix.go b/vendor/golang.org/x/net/ipv4/control_unix.go new file mode 100644 index 0000000..211f4b4 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/control_unix.go @@ -0,0 +1,148 @@ +// 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 darwin dragonfly freebsd linux netbsd openbsd solaris + +package ipv4 + +import ( + "os" + "syscall" + "unsafe" + + "golang.org/x/net/internal/iana" +) + +func setControlMessage(s uintptr, opt *rawOpt, cf ControlFlags, on bool) error { + opt.Lock() + defer opt.Unlock() + if cf&FlagTTL != 0 && sockOpts[ssoReceiveTTL].name > 0 { + if err := setInt(s, &sockOpts[ssoReceiveTTL], boolint(on)); err != nil { + return err + } + if on { + opt.set(FlagTTL) + } else { + opt.clear(FlagTTL) + } + } + if sockOpts[ssoPacketInfo].name > 0 { + if cf&(FlagSrc|FlagDst|FlagInterface) != 0 { + if err := setInt(s, &sockOpts[ssoPacketInfo], boolint(on)); err != nil { + return err + } + if on { + opt.set(cf & (FlagSrc | FlagDst | FlagInterface)) + } else { + opt.clear(cf & (FlagSrc | FlagDst | FlagInterface)) + } + } + } else { + if cf&FlagDst != 0 && sockOpts[ssoReceiveDst].name > 0 { + if err := setInt(s, &sockOpts[ssoReceiveDst], boolint(on)); err != nil { + return err + } + if on { + opt.set(FlagDst) + } else { + opt.clear(FlagDst) + } + } + if cf&FlagInterface != 0 && sockOpts[ssoReceiveInterface].name > 0 { + if err := setInt(s, &sockOpts[ssoReceiveInterface], boolint(on)); err != nil { + return err + } + if on { + opt.set(FlagInterface) + } else { + opt.clear(FlagInterface) + } + } + } + return nil +} + +func newControlMessage(opt *rawOpt) (oob []byte) { + opt.RLock() + var l int + if opt.isset(FlagTTL) && ctlOpts[ctlTTL].name > 0 { + l += syscall.CmsgSpace(ctlOpts[ctlTTL].length) + } + if ctlOpts[ctlPacketInfo].name > 0 { + if opt.isset(FlagSrc | FlagDst | FlagInterface) { + l += syscall.CmsgSpace(ctlOpts[ctlPacketInfo].length) + } + } else { + if opt.isset(FlagDst) && ctlOpts[ctlDst].name > 0 { + l += syscall.CmsgSpace(ctlOpts[ctlDst].length) + } + if opt.isset(FlagInterface) && ctlOpts[ctlInterface].name > 0 { + l += syscall.CmsgSpace(ctlOpts[ctlInterface].length) + } + } + if l > 0 { + oob = make([]byte, l) + } + opt.RUnlock() + return +} + +func parseControlMessage(b []byte) (*ControlMessage, error) { + if len(b) == 0 { + return nil, nil + } + cmsgs, err := syscall.ParseSocketControlMessage(b) + if err != nil { + return nil, os.NewSyscallError("parse socket control message", err) + } + cm := &ControlMessage{} + for _, m := range cmsgs { + if m.Header.Level != iana.ProtocolIP { + continue + } + switch int(m.Header.Type) { + case ctlOpts[ctlTTL].name: + ctlOpts[ctlTTL].parse(cm, m.Data[:]) + case ctlOpts[ctlDst].name: + ctlOpts[ctlDst].parse(cm, m.Data[:]) + case ctlOpts[ctlInterface].name: + ctlOpts[ctlInterface].parse(cm, m.Data[:]) + case ctlOpts[ctlPacketInfo].name: + ctlOpts[ctlPacketInfo].parse(cm, m.Data[:]) + } + } + return cm, nil +} + +func marshalControlMessage(cm *ControlMessage) (oob []byte) { + if cm == nil { + return nil + } + var l int + pktinfo := false + if ctlOpts[ctlPacketInfo].name > 0 && (cm.Src.To4() != nil || cm.IfIndex > 0) { + pktinfo = true + l += syscall.CmsgSpace(ctlOpts[ctlPacketInfo].length) + } + if l > 0 { + oob = make([]byte, l) + b := oob + if pktinfo { + b = ctlOpts[ctlPacketInfo].marshal(b, cm) + } + } + return +} + +func marshalTTL(b []byte, cm *ControlMessage) []byte { + m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0])) + m.Level = iana.ProtocolIP + m.Type = sysIP_RECVTTL + m.SetLen(syscall.CmsgLen(1)) + return b[syscall.CmsgSpace(1):] +} + +func parseTTL(cm *ControlMessage, b []byte) { + cm.TTL = int(*(*byte)(unsafe.Pointer(&b[:1][0]))) +} diff --git a/vendor/golang.org/x/net/ipv4/control_windows.go b/vendor/golang.org/x/net/ipv4/control_windows.go new file mode 100644 index 0000000..49a113b --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/control_windows.go @@ -0,0 +1,27 @@ +// 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 ipv4 + +import "syscall" + +func setControlMessage(s uintptr, opt *rawOpt, cf ControlFlags, on bool) error { + // TODO(mikio): implement this + return syscall.EWINDOWS +} + +func newControlMessage(opt *rawOpt) []byte { + // TODO(mikio): implement this + return nil +} + +func parseControlMessage(b []byte) (*ControlMessage, error) { + // TODO(mikio): implement this + return nil, syscall.EWINDOWS +} + +func marshalControlMessage(cm *ControlMessage) []byte { + // TODO(mikio): implement this + return nil +} diff --git a/vendor/golang.org/x/net/ipv4/defs_darwin.go b/vendor/golang.org/x/net/ipv4/defs_darwin.go new file mode 100644 index 0000000..c8f2e05 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/defs_darwin.go @@ -0,0 +1,77 @@ +// 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 ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ + +package ipv4 + +/* +#include + +#include +*/ +import "C" + +const ( + sysIP_OPTIONS = C.IP_OPTIONS + sysIP_HDRINCL = C.IP_HDRINCL + sysIP_TOS = C.IP_TOS + sysIP_TTL = C.IP_TTL + sysIP_RECVOPTS = C.IP_RECVOPTS + sysIP_RECVRETOPTS = C.IP_RECVRETOPTS + sysIP_RECVDSTADDR = C.IP_RECVDSTADDR + sysIP_RETOPTS = C.IP_RETOPTS + sysIP_RECVIF = C.IP_RECVIF + sysIP_STRIPHDR = C.IP_STRIPHDR + sysIP_RECVTTL = C.IP_RECVTTL + sysIP_BOUND_IF = C.IP_BOUND_IF + sysIP_PKTINFO = C.IP_PKTINFO + sysIP_RECVPKTINFO = C.IP_RECVPKTINFO + + sysIP_MULTICAST_IF = C.IP_MULTICAST_IF + sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL + sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP + sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP + sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP + sysIP_MULTICAST_VIF = C.IP_MULTICAST_VIF + sysIP_MULTICAST_IFINDEX = C.IP_MULTICAST_IFINDEX + sysIP_ADD_SOURCE_MEMBERSHIP = C.IP_ADD_SOURCE_MEMBERSHIP + sysIP_DROP_SOURCE_MEMBERSHIP = C.IP_DROP_SOURCE_MEMBERSHIP + sysIP_BLOCK_SOURCE = C.IP_BLOCK_SOURCE + sysIP_UNBLOCK_SOURCE = C.IP_UNBLOCK_SOURCE + sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP + sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP + sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP + sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP + sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE + sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE + + sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofInetPktinfo = C.sizeof_struct_in_pktinfo + + sizeofIPMreq = C.sizeof_struct_ip_mreq + sizeofIPMreqn = C.sizeof_struct_ip_mreqn + sizeofIPMreqSource = C.sizeof_struct_ip_mreq_source + sizeofGroupReq = C.sizeof_struct_group_req + sizeofGroupSourceReq = C.sizeof_struct_group_source_req +) + +type sockaddrStorage C.struct_sockaddr_storage + +type sockaddrInet C.struct_sockaddr_in + +type inetPktinfo C.struct_in_pktinfo + +type ipMreq C.struct_ip_mreq + +type ipMreqn C.struct_ip_mreqn + +type ipMreqSource C.struct_ip_mreq_source + +type groupReq C.struct_group_req + +type groupSourceReq C.struct_group_source_req diff --git a/vendor/golang.org/x/net/ipv4/defs_dragonfly.go b/vendor/golang.org/x/net/ipv4/defs_dragonfly.go new file mode 100644 index 0000000..f30544e --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/defs_dragonfly.go @@ -0,0 +1,38 @@ +// 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 ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ + +package ipv4 + +/* +#include +*/ +import "C" + +const ( + sysIP_OPTIONS = C.IP_OPTIONS + sysIP_HDRINCL = C.IP_HDRINCL + sysIP_TOS = C.IP_TOS + sysIP_TTL = C.IP_TTL + sysIP_RECVOPTS = C.IP_RECVOPTS + sysIP_RECVRETOPTS = C.IP_RECVRETOPTS + sysIP_RECVDSTADDR = C.IP_RECVDSTADDR + sysIP_RETOPTS = C.IP_RETOPTS + sysIP_RECVIF = C.IP_RECVIF + sysIP_RECVTTL = C.IP_RECVTTL + + sysIP_MULTICAST_IF = C.IP_MULTICAST_IF + sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL + sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP + sysIP_MULTICAST_VIF = C.IP_MULTICAST_VIF + sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP + sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP + + sizeofIPMreq = C.sizeof_struct_ip_mreq +) + +type ipMreq C.struct_ip_mreq diff --git a/vendor/golang.org/x/net/ipv4/defs_freebsd.go b/vendor/golang.org/x/net/ipv4/defs_freebsd.go new file mode 100644 index 0000000..4dd57d8 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/defs_freebsd.go @@ -0,0 +1,75 @@ +// 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 ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ + +package ipv4 + +/* +#include + +#include +*/ +import "C" + +const ( + sysIP_OPTIONS = C.IP_OPTIONS + sysIP_HDRINCL = C.IP_HDRINCL + sysIP_TOS = C.IP_TOS + sysIP_TTL = C.IP_TTL + sysIP_RECVOPTS = C.IP_RECVOPTS + sysIP_RECVRETOPTS = C.IP_RECVRETOPTS + sysIP_RECVDSTADDR = C.IP_RECVDSTADDR + sysIP_SENDSRCADDR = C.IP_SENDSRCADDR + sysIP_RETOPTS = C.IP_RETOPTS + sysIP_RECVIF = C.IP_RECVIF + sysIP_ONESBCAST = C.IP_ONESBCAST + sysIP_BINDANY = C.IP_BINDANY + sysIP_RECVTTL = C.IP_RECVTTL + sysIP_MINTTL = C.IP_MINTTL + sysIP_DONTFRAG = C.IP_DONTFRAG + sysIP_RECVTOS = C.IP_RECVTOS + + sysIP_MULTICAST_IF = C.IP_MULTICAST_IF + sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL + sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP + sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP + sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP + sysIP_MULTICAST_VIF = C.IP_MULTICAST_VIF + sysIP_ADD_SOURCE_MEMBERSHIP = C.IP_ADD_SOURCE_MEMBERSHIP + sysIP_DROP_SOURCE_MEMBERSHIP = C.IP_DROP_SOURCE_MEMBERSHIP + sysIP_BLOCK_SOURCE = C.IP_BLOCK_SOURCE + sysIP_UNBLOCK_SOURCE = C.IP_UNBLOCK_SOURCE + sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP + sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP + sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP + sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP + sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE + sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE + + sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + + sizeofIPMreq = C.sizeof_struct_ip_mreq + sizeofIPMreqn = C.sizeof_struct_ip_mreqn + sizeofIPMreqSource = C.sizeof_struct_ip_mreq_source + sizeofGroupReq = C.sizeof_struct_group_req + sizeofGroupSourceReq = C.sizeof_struct_group_source_req +) + +type sockaddrStorage C.struct_sockaddr_storage + +type sockaddrInet C.struct_sockaddr_in + +type ipMreq C.struct_ip_mreq + +type ipMreqn C.struct_ip_mreqn + +type ipMreqSource C.struct_ip_mreq_source + +type groupReq C.struct_group_req + +type groupSourceReq C.struct_group_source_req diff --git a/vendor/golang.org/x/net/ipv4/defs_linux.go b/vendor/golang.org/x/net/ipv4/defs_linux.go new file mode 100644 index 0000000..31dfa09 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/defs_linux.go @@ -0,0 +1,120 @@ +// 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 ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ + +package ipv4 + +/* +#include + +#include +#include +#include +#include +#include +*/ +import "C" + +const ( + sysIP_TOS = C.IP_TOS + sysIP_TTL = C.IP_TTL + sysIP_HDRINCL = C.IP_HDRINCL + sysIP_OPTIONS = C.IP_OPTIONS + sysIP_ROUTER_ALERT = C.IP_ROUTER_ALERT + sysIP_RECVOPTS = C.IP_RECVOPTS + sysIP_RETOPTS = C.IP_RETOPTS + sysIP_PKTINFO = C.IP_PKTINFO + sysIP_PKTOPTIONS = C.IP_PKTOPTIONS + sysIP_MTU_DISCOVER = C.IP_MTU_DISCOVER + sysIP_RECVERR = C.IP_RECVERR + sysIP_RECVTTL = C.IP_RECVTTL + sysIP_RECVTOS = C.IP_RECVTOS + sysIP_MTU = C.IP_MTU + sysIP_FREEBIND = C.IP_FREEBIND + sysIP_TRANSPARENT = C.IP_TRANSPARENT + sysIP_RECVRETOPTS = C.IP_RECVRETOPTS + sysIP_ORIGDSTADDR = C.IP_ORIGDSTADDR + sysIP_RECVORIGDSTADDR = C.IP_RECVORIGDSTADDR + sysIP_MINTTL = C.IP_MINTTL + sysIP_NODEFRAG = C.IP_NODEFRAG + sysIP_UNICAST_IF = C.IP_UNICAST_IF + + sysIP_MULTICAST_IF = C.IP_MULTICAST_IF + sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL + sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP + sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP + sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP + sysIP_UNBLOCK_SOURCE = C.IP_UNBLOCK_SOURCE + sysIP_BLOCK_SOURCE = C.IP_BLOCK_SOURCE + sysIP_ADD_SOURCE_MEMBERSHIP = C.IP_ADD_SOURCE_MEMBERSHIP + sysIP_DROP_SOURCE_MEMBERSHIP = C.IP_DROP_SOURCE_MEMBERSHIP + sysIP_MSFILTER = C.IP_MSFILTER + sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP + sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP + sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP + sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP + sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE + sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE + sysMCAST_MSFILTER = C.MCAST_MSFILTER + sysIP_MULTICAST_ALL = C.IP_MULTICAST_ALL + + //sysIP_PMTUDISC_DONT = C.IP_PMTUDISC_DONT + //sysIP_PMTUDISC_WANT = C.IP_PMTUDISC_WANT + //sysIP_PMTUDISC_DO = C.IP_PMTUDISC_DO + //sysIP_PMTUDISC_PROBE = C.IP_PMTUDISC_PROBE + //sysIP_PMTUDISC_INTERFACE = C.IP_PMTUDISC_INTERFACE + //sysIP_PMTUDISC_OMIT = C.IP_PMTUDISC_OMIT + + sysICMP_FILTER = C.ICMP_FILTER + + sysSO_EE_ORIGIN_NONE = C.SO_EE_ORIGIN_NONE + sysSO_EE_ORIGIN_LOCAL = C.SO_EE_ORIGIN_LOCAL + sysSO_EE_ORIGIN_ICMP = C.SO_EE_ORIGIN_ICMP + sysSO_EE_ORIGIN_ICMP6 = C.SO_EE_ORIGIN_ICMP6 + sysSO_EE_ORIGIN_TXSTATUS = C.SO_EE_ORIGIN_TXSTATUS + sysSO_EE_ORIGIN_TIMESTAMPING = C.SO_EE_ORIGIN_TIMESTAMPING + + sysSOL_SOCKET = C.SOL_SOCKET + sysSO_ATTACH_FILTER = C.SO_ATTACH_FILTER + + sizeofKernelSockaddrStorage = C.sizeof_struct___kernel_sockaddr_storage + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofInetPktinfo = C.sizeof_struct_in_pktinfo + sizeofSockExtendedErr = C.sizeof_struct_sock_extended_err + + sizeofIPMreq = C.sizeof_struct_ip_mreq + sizeofIPMreqn = C.sizeof_struct_ip_mreqn + sizeofIPMreqSource = C.sizeof_struct_ip_mreq_source + sizeofGroupReq = C.sizeof_struct_group_req + sizeofGroupSourceReq = C.sizeof_struct_group_source_req + + sizeofICMPFilter = C.sizeof_struct_icmp_filter +) + +type kernelSockaddrStorage C.struct___kernel_sockaddr_storage + +type sockaddrInet C.struct_sockaddr_in + +type inetPktinfo C.struct_in_pktinfo + +type sockExtendedErr C.struct_sock_extended_err + +type ipMreq C.struct_ip_mreq + +type ipMreqn C.struct_ip_mreqn + +type ipMreqSource C.struct_ip_mreq_source + +type groupReq C.struct_group_req + +type groupSourceReq C.struct_group_source_req + +type icmpFilter C.struct_icmp_filter + +type sockFProg C.struct_sock_fprog + +type sockFilter C.struct_sock_filter diff --git a/vendor/golang.org/x/net/ipv4/defs_netbsd.go b/vendor/golang.org/x/net/ipv4/defs_netbsd.go new file mode 100644 index 0000000..8f8af1b --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/defs_netbsd.go @@ -0,0 +1,37 @@ +// 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 ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ + +package ipv4 + +/* +#include +*/ +import "C" + +const ( + sysIP_OPTIONS = C.IP_OPTIONS + sysIP_HDRINCL = C.IP_HDRINCL + sysIP_TOS = C.IP_TOS + sysIP_TTL = C.IP_TTL + sysIP_RECVOPTS = C.IP_RECVOPTS + sysIP_RECVRETOPTS = C.IP_RECVRETOPTS + sysIP_RECVDSTADDR = C.IP_RECVDSTADDR + sysIP_RETOPTS = C.IP_RETOPTS + sysIP_RECVIF = C.IP_RECVIF + sysIP_RECVTTL = C.IP_RECVTTL + + sysIP_MULTICAST_IF = C.IP_MULTICAST_IF + sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL + sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP + sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP + sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP + + sizeofIPMreq = C.sizeof_struct_ip_mreq +) + +type ipMreq C.struct_ip_mreq diff --git a/vendor/golang.org/x/net/ipv4/defs_openbsd.go b/vendor/golang.org/x/net/ipv4/defs_openbsd.go new file mode 100644 index 0000000..8f8af1b --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/defs_openbsd.go @@ -0,0 +1,37 @@ +// 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 ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ + +package ipv4 + +/* +#include +*/ +import "C" + +const ( + sysIP_OPTIONS = C.IP_OPTIONS + sysIP_HDRINCL = C.IP_HDRINCL + sysIP_TOS = C.IP_TOS + sysIP_TTL = C.IP_TTL + sysIP_RECVOPTS = C.IP_RECVOPTS + sysIP_RECVRETOPTS = C.IP_RECVRETOPTS + sysIP_RECVDSTADDR = C.IP_RECVDSTADDR + sysIP_RETOPTS = C.IP_RETOPTS + sysIP_RECVIF = C.IP_RECVIF + sysIP_RECVTTL = C.IP_RECVTTL + + sysIP_MULTICAST_IF = C.IP_MULTICAST_IF + sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL + sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP + sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP + sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP + + sizeofIPMreq = C.sizeof_struct_ip_mreq +) + +type ipMreq C.struct_ip_mreq diff --git a/vendor/golang.org/x/net/ipv4/defs_solaris.go b/vendor/golang.org/x/net/ipv4/defs_solaris.go new file mode 100644 index 0000000..aeb33e9 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/defs_solaris.go @@ -0,0 +1,84 @@ +// 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 ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ + +package ipv4 + +/* +#include + +#include +*/ +import "C" + +const ( + sysIP_OPTIONS = C.IP_OPTIONS + sysIP_HDRINCL = C.IP_HDRINCL + sysIP_TOS = C.IP_TOS + sysIP_TTL = C.IP_TTL + sysIP_RECVOPTS = C.IP_RECVOPTS + sysIP_RECVRETOPTS = C.IP_RECVRETOPTS + sysIP_RECVDSTADDR = C.IP_RECVDSTADDR + sysIP_RETOPTS = C.IP_RETOPTS + sysIP_RECVIF = C.IP_RECVIF + sysIP_RECVSLLA = C.IP_RECVSLLA + sysIP_RECVTTL = C.IP_RECVTTL + + sysIP_MULTICAST_IF = C.IP_MULTICAST_IF + sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL + sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP + sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP + sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP + sysIP_BLOCK_SOURCE = C.IP_BLOCK_SOURCE + sysIP_UNBLOCK_SOURCE = C.IP_UNBLOCK_SOURCE + sysIP_ADD_SOURCE_MEMBERSHIP = C.IP_ADD_SOURCE_MEMBERSHIP + sysIP_DROP_SOURCE_MEMBERSHIP = C.IP_DROP_SOURCE_MEMBERSHIP + sysIP_NEXTHOP = C.IP_NEXTHOP + + sysIP_PKTINFO = C.IP_PKTINFO + sysIP_RECVPKTINFO = C.IP_RECVPKTINFO + sysIP_DONTFRAG = C.IP_DONTFRAG + + sysIP_BOUND_IF = C.IP_BOUND_IF + sysIP_UNSPEC_SRC = C.IP_UNSPEC_SRC + sysIP_BROADCAST_TTL = C.IP_BROADCAST_TTL + sysIP_DHCPINIT_IF = C.IP_DHCPINIT_IF + + sysIP_REUSEADDR = C.IP_REUSEADDR + sysIP_DONTROUTE = C.IP_DONTROUTE + sysIP_BROADCAST = C.IP_BROADCAST + + sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP + sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP + sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE + sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE + sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP + sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP + + sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofInetPktinfo = C.sizeof_struct_in_pktinfo + + sizeofIPMreq = C.sizeof_struct_ip_mreq + sizeofIPMreqSource = C.sizeof_struct_ip_mreq_source + sizeofGroupReq = C.sizeof_struct_group_req + sizeofGroupSourceReq = C.sizeof_struct_group_source_req +) + +type sockaddrStorage C.struct_sockaddr_storage + +type sockaddrInet C.struct_sockaddr_in + +type inetPktinfo C.struct_in_pktinfo + +type ipMreq C.struct_ip_mreq + +type ipMreqSource C.struct_ip_mreq_source + +type groupReq C.struct_group_req + +type groupSourceReq C.struct_group_source_req diff --git a/vendor/golang.org/x/net/ipv4/dgramopt_posix.go b/vendor/golang.org/x/net/ipv4/dgramopt_posix.go new file mode 100644 index 0000000..693c137 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/dgramopt_posix.go @@ -0,0 +1,253 @@ +// 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 darwin dragonfly freebsd linux netbsd openbsd solaris windows + +package ipv4 + +import ( + "net" + "syscall" + + "golang.org/x/net/internal/netreflect" +) + +// MulticastTTL returns the time-to-live field value for outgoing +// multicast packets. +func (c *dgramOpt) MulticastTTL() (int, error) { + if !c.ok() { + return 0, syscall.EINVAL + } + s, err := netreflect.PacketSocketOf(c.PacketConn) + if err != nil { + return 0, err + } + return getInt(s, &sockOpts[ssoMulticastTTL]) +} + +// SetMulticastTTL sets the time-to-live field value for future +// outgoing multicast packets. +func (c *dgramOpt) SetMulticastTTL(ttl int) error { + if !c.ok() { + return syscall.EINVAL + } + s, err := netreflect.PacketSocketOf(c.PacketConn) + if err != nil { + return err + } + return setInt(s, &sockOpts[ssoMulticastTTL], ttl) +} + +// MulticastInterface returns the default interface for multicast +// packet transmissions. +func (c *dgramOpt) MulticastInterface() (*net.Interface, error) { + if !c.ok() { + return nil, syscall.EINVAL + } + s, err := netreflect.PacketSocketOf(c.PacketConn) + if err != nil { + return nil, err + } + return getInterface(s, &sockOpts[ssoMulticastInterface]) +} + +// SetMulticastInterface sets the default interface for future +// multicast packet transmissions. +func (c *dgramOpt) SetMulticastInterface(ifi *net.Interface) error { + if !c.ok() { + return syscall.EINVAL + } + s, err := netreflect.PacketSocketOf(c.PacketConn) + if err != nil { + return err + } + return setInterface(s, &sockOpts[ssoMulticastInterface], ifi) +} + +// MulticastLoopback reports whether transmitted multicast packets +// should be copied and send back to the originator. +func (c *dgramOpt) MulticastLoopback() (bool, error) { + if !c.ok() { + return false, syscall.EINVAL + } + s, err := netreflect.PacketSocketOf(c.PacketConn) + if err != nil { + return false, err + } + on, err := getInt(s, &sockOpts[ssoMulticastLoopback]) + if err != nil { + return false, err + } + return on == 1, nil +} + +// SetMulticastLoopback sets whether transmitted multicast packets +// should be copied and send back to the originator. +func (c *dgramOpt) SetMulticastLoopback(on bool) error { + if !c.ok() { + return syscall.EINVAL + } + s, err := netreflect.PacketSocketOf(c.PacketConn) + if err != nil { + return err + } + return setInt(s, &sockOpts[ssoMulticastLoopback], boolint(on)) +} + +// JoinGroup joins the group address group on the interface ifi. +// By default all sources that can cast data to group are accepted. +// It's possible to mute and unmute data transmission from a specific +// source by using ExcludeSourceSpecificGroup and +// IncludeSourceSpecificGroup. +// JoinGroup uses the system assigned multicast interface when ifi is +// nil, although this is not recommended because the assignment +// depends on platforms and sometimes it might require routing +// configuration. +func (c *dgramOpt) JoinGroup(ifi *net.Interface, group net.Addr) error { + if !c.ok() { + return syscall.EINVAL + } + s, err := netreflect.PacketSocketOf(c.PacketConn) + if err != nil { + return err + } + grp := netAddrToIP4(group) + if grp == nil { + return errMissingAddress + } + return setGroup(s, &sockOpts[ssoJoinGroup], ifi, grp) +} + +// LeaveGroup leaves the group address group on the interface ifi +// regardless of whether the group is any-source group or +// source-specific group. +func (c *dgramOpt) LeaveGroup(ifi *net.Interface, group net.Addr) error { + if !c.ok() { + return syscall.EINVAL + } + s, err := netreflect.PacketSocketOf(c.PacketConn) + if err != nil { + return err + } + grp := netAddrToIP4(group) + if grp == nil { + return errMissingAddress + } + return setGroup(s, &sockOpts[ssoLeaveGroup], ifi, grp) +} + +// JoinSourceSpecificGroup joins the source-specific group comprising +// group and source on the interface ifi. +// JoinSourceSpecificGroup uses the system assigned multicast +// interface when ifi is nil, although this is not recommended because +// the assignment depends on platforms and sometimes it might require +// routing configuration. +func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { + if !c.ok() { + return syscall.EINVAL + } + s, err := netreflect.PacketSocketOf(c.PacketConn) + if err != nil { + return err + } + grp := netAddrToIP4(group) + if grp == nil { + return errMissingAddress + } + src := netAddrToIP4(source) + if src == nil { + return errMissingAddress + } + return setSourceGroup(s, &sockOpts[ssoJoinSourceGroup], ifi, grp, src) +} + +// LeaveSourceSpecificGroup leaves the source-specific group on the +// interface ifi. +func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { + if !c.ok() { + return syscall.EINVAL + } + s, err := netreflect.PacketSocketOf(c.PacketConn) + if err != nil { + return err + } + grp := netAddrToIP4(group) + if grp == nil { + return errMissingAddress + } + src := netAddrToIP4(source) + if src == nil { + return errMissingAddress + } + return setSourceGroup(s, &sockOpts[ssoLeaveSourceGroup], ifi, grp, src) +} + +// ExcludeSourceSpecificGroup excludes the source-specific group from +// the already joined any-source groups by JoinGroup on the interface +// ifi. +func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { + if !c.ok() { + return syscall.EINVAL + } + s, err := netreflect.PacketSocketOf(c.PacketConn) + if err != nil { + return err + } + grp := netAddrToIP4(group) + if grp == nil { + return errMissingAddress + } + src := netAddrToIP4(source) + if src == nil { + return errMissingAddress + } + return setSourceGroup(s, &sockOpts[ssoBlockSourceGroup], ifi, grp, src) +} + +// IncludeSourceSpecificGroup includes the excluded source-specific +// group by ExcludeSourceSpecificGroup again on the interface ifi. +func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { + if !c.ok() { + return syscall.EINVAL + } + s, err := netreflect.PacketSocketOf(c.PacketConn) + if err != nil { + return err + } + grp := netAddrToIP4(group) + if grp == nil { + return errMissingAddress + } + src := netAddrToIP4(source) + if src == nil { + return errMissingAddress + } + return setSourceGroup(s, &sockOpts[ssoUnblockSourceGroup], ifi, grp, src) +} + +// ICMPFilter returns an ICMP filter. +// Currently only Linux supports this. +func (c *dgramOpt) ICMPFilter() (*ICMPFilter, error) { + if !c.ok() { + return nil, syscall.EINVAL + } + s, err := netreflect.PacketSocketOf(c.PacketConn) + if err != nil { + return nil, err + } + return getICMPFilter(s, &sockOpts[ssoICMPFilter]) +} + +// SetICMPFilter deploys the ICMP filter. +// Currently only Linux supports this. +func (c *dgramOpt) SetICMPFilter(f *ICMPFilter) error { + if !c.ok() { + return syscall.EINVAL + } + s, err := netreflect.PacketSocketOf(c.PacketConn) + if err != nil { + return err + } + return setICMPFilter(s, &sockOpts[ssoICMPFilter], f) +} diff --git a/vendor/golang.org/x/net/ipv4/dgramopt_stub.go b/vendor/golang.org/x/net/ipv4/dgramopt_stub.go new file mode 100644 index 0000000..53cf1c6 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/dgramopt_stub.go @@ -0,0 +1,106 @@ +// 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 nacl plan9 + +package ipv4 + +import "net" + +// MulticastTTL returns the time-to-live field value for outgoing +// multicast packets. +func (c *dgramOpt) MulticastTTL() (int, error) { + return 0, errOpNoSupport +} + +// SetMulticastTTL sets the time-to-live field value for future +// outgoing multicast packets. +func (c *dgramOpt) SetMulticastTTL(ttl int) error { + return errOpNoSupport +} + +// MulticastInterface returns the default interface for multicast +// packet transmissions. +func (c *dgramOpt) MulticastInterface() (*net.Interface, error) { + return nil, errOpNoSupport +} + +// SetMulticastInterface sets the default interface for future +// multicast packet transmissions. +func (c *dgramOpt) SetMulticastInterface(ifi *net.Interface) error { + return errOpNoSupport +} + +// MulticastLoopback reports whether transmitted multicast packets +// should be copied and send back to the originator. +func (c *dgramOpt) MulticastLoopback() (bool, error) { + return false, errOpNoSupport +} + +// SetMulticastLoopback sets whether transmitted multicast packets +// should be copied and send back to the originator. +func (c *dgramOpt) SetMulticastLoopback(on bool) error { + return errOpNoSupport +} + +// JoinGroup joins the group address group on the interface ifi. +// By default all sources that can cast data to group are accepted. +// It's possible to mute and unmute data transmission from a specific +// source by using ExcludeSourceSpecificGroup and +// IncludeSourceSpecificGroup. +// JoinGroup uses the system assigned multicast interface when ifi is +// nil, although this is not recommended because the assignment +// depends on platforms and sometimes it might require routing +// configuration. +func (c *dgramOpt) JoinGroup(ifi *net.Interface, group net.Addr) error { + return errOpNoSupport +} + +// LeaveGroup leaves the group address group on the interface ifi +// regardless of whether the group is any-source group or +// source-specific group. +func (c *dgramOpt) LeaveGroup(ifi *net.Interface, group net.Addr) error { + return errOpNoSupport +} + +// JoinSourceSpecificGroup joins the source-specific group comprising +// group and source on the interface ifi. +// JoinSourceSpecificGroup uses the system assigned multicast +// interface when ifi is nil, although this is not recommended because +// the assignment depends on platforms and sometimes it might require +// routing configuration. +func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { + return errOpNoSupport +} + +// LeaveSourceSpecificGroup leaves the source-specific group on the +// interface ifi. +func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { + return errOpNoSupport +} + +// ExcludeSourceSpecificGroup excludes the source-specific group from +// the already joined any-source groups by JoinGroup on the interface +// ifi. +func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { + return errOpNoSupport +} + +// IncludeSourceSpecificGroup includes the excluded source-specific +// group by ExcludeSourceSpecificGroup again on the interface ifi. +func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { + return errOpNoSupport +} + +// ICMPFilter returns an ICMP filter. +// Currently only Linux supports this. +func (c *dgramOpt) ICMPFilter() (*ICMPFilter, error) { + return nil, errOpNoSupport +} + +// SetICMPFilter deploys the ICMP filter. +// Currently only Linux supports this. +func (c *dgramOpt) SetICMPFilter(f *ICMPFilter) error { + return errOpNoSupport +} diff --git a/vendor/golang.org/x/net/ipv4/doc.go b/vendor/golang.org/x/net/ipv4/doc.go new file mode 100644 index 0000000..07178eb --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/doc.go @@ -0,0 +1,242 @@ +// 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 ipv4 implements IP-level socket options for the Internet +// Protocol version 4. +// +// The package provides IP-level socket options that allow +// manipulation of IPv4 facilities. +// +// The IPv4 protocol and basic host requirements for IPv4 are defined +// in RFC 791 and RFC 1122. +// Host extensions for multicasting and socket interface extensions +// for multicast source filters are defined in RFC 1112 and RFC 3678. +// IGMPv1, IGMPv2 and IGMPv3 are defined in RFC 1112, RFC 2236 and RFC +// 3376. +// Source-specific multicast is defined in RFC 4607. +// +// +// Unicasting +// +// The options for unicasting are available for net.TCPConn, +// net.UDPConn and net.IPConn which are created as network connections +// that use the IPv4 transport. When a single TCP connection carrying +// a data flow of multiple packets needs to indicate the flow is +// important, ipv4.Conn is used to set the type-of-service field on +// the IPv4 header for each packet. +// +// ln, err := net.Listen("tcp4", "0.0.0.0:1024") +// if err != nil { +// // error handling +// } +// defer ln.Close() +// for { +// c, err := ln.Accept() +// if err != nil { +// // error handling +// } +// go func(c net.Conn) { +// defer c.Close() +// +// The outgoing packets will be labeled DiffServ assured forwarding +// class 1 low drop precedence, known as AF11 packets. +// +// if err := ipv4.NewConn(c).SetTOS(0x28); err != nil { +// // error handling +// } +// if _, err := c.Write(data); err != nil { +// // error handling +// } +// }(c) +// } +// +// +// Multicasting +// +// The options for multicasting are available for net.UDPConn and +// net.IPconn which are created as network connections that use the +// IPv4 transport. A few network facilities must be prepared before +// you begin multicasting, at a minimum joining network interfaces and +// multicast groups. +// +// en0, err := net.InterfaceByName("en0") +// if err != nil { +// // error handling +// } +// en1, err := net.InterfaceByIndex(911) +// if err != nil { +// // error handling +// } +// group := net.IPv4(224, 0, 0, 250) +// +// First, an application listens to an appropriate address with an +// appropriate service port. +// +// c, err := net.ListenPacket("udp4", "0.0.0.0:1024") +// if err != nil { +// // error handling +// } +// defer c.Close() +// +// Second, the application joins multicast groups, starts listening to +// the groups on the specified network interfaces. Note that the +// service port for transport layer protocol does not matter with this +// operation as joining groups affects only network and link layer +// protocols, such as IPv4 and Ethernet. +// +// p := ipv4.NewPacketConn(c) +// if err := p.JoinGroup(en0, &net.UDPAddr{IP: group}); err != nil { +// // error handling +// } +// if err := p.JoinGroup(en1, &net.UDPAddr{IP: group}); err != nil { +// // error handling +// } +// +// The application might set per packet control message transmissions +// between the protocol stack within the kernel. When the application +// needs a destination address on an incoming packet, +// SetControlMessage of ipv4.PacketConn is used to enable control +// message transmissions. +// +// if err := p.SetControlMessage(ipv4.FlagDst, true); err != nil { +// // error handling +// } +// +// The application could identify whether the received packets are +// of interest by using the control message that contains the +// destination address of the received packet. +// +// b := make([]byte, 1500) +// for { +// n, cm, src, err := p.ReadFrom(b) +// if err != nil { +// // error handling +// } +// if cm.Dst.IsMulticast() { +// if cm.Dst.Equal(group) { +// // joined group, do something +// } else { +// // unknown group, discard +// continue +// } +// } +// +// The application can also send both unicast and multicast packets. +// +// p.SetTOS(0x0) +// p.SetTTL(16) +// if _, err := p.WriteTo(data, nil, src); err != nil { +// // error handling +// } +// dst := &net.UDPAddr{IP: group, Port: 1024} +// for _, ifi := range []*net.Interface{en0, en1} { +// if err := p.SetMulticastInterface(ifi); err != nil { +// // error handling +// } +// p.SetMulticastTTL(2) +// if _, err := p.WriteTo(data, nil, dst); err != nil { +// // error handling +// } +// } +// } +// +// +// More multicasting +// +// An application that uses PacketConn or RawConn may join multiple +// multicast groups. For example, a UDP listener with port 1024 might +// join two different groups across over two different network +// interfaces by using: +// +// c, err := net.ListenPacket("udp4", "0.0.0.0:1024") +// if err != nil { +// // error handling +// } +// defer c.Close() +// p := ipv4.NewPacketConn(c) +// if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 248)}); err != nil { +// // error handling +// } +// if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 249)}); err != nil { +// // error handling +// } +// if err := p.JoinGroup(en1, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 249)}); err != nil { +// // error handling +// } +// +// It is possible for multiple UDP listeners that listen on the same +// UDP port to join the same multicast group. The net package will +// provide a socket that listens to a wildcard address with reusable +// UDP port when an appropriate multicast address prefix is passed to +// the net.ListenPacket or net.ListenUDP. +// +// c1, err := net.ListenPacket("udp4", "224.0.0.0:1024") +// if err != nil { +// // error handling +// } +// defer c1.Close() +// c2, err := net.ListenPacket("udp4", "224.0.0.0:1024") +// if err != nil { +// // error handling +// } +// defer c2.Close() +// p1 := ipv4.NewPacketConn(c1) +// if err := p1.JoinGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 248)}); err != nil { +// // error handling +// } +// p2 := ipv4.NewPacketConn(c2) +// if err := p2.JoinGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 248)}); err != nil { +// // error handling +// } +// +// Also it is possible for the application to leave or rejoin a +// multicast group on the network interface. +// +// if err := p.LeaveGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 248)}); err != nil { +// // error handling +// } +// if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 250)}); err != nil { +// // error handling +// } +// +// +// Source-specific multicasting +// +// An application that uses PacketConn or RawConn on IGMPv3 supported +// platform is able to join source-specific multicast groups. +// The application may use JoinSourceSpecificGroup and +// LeaveSourceSpecificGroup for the operation known as "include" mode, +// +// ssmgroup := net.UDPAddr{IP: net.IPv4(232, 7, 8, 9)} +// ssmsource := net.UDPAddr{IP: net.IPv4(192, 168, 0, 1)}) +// if err := p.JoinSourceSpecificGroup(en0, &ssmgroup, &ssmsource); err != nil { +// // error handling +// } +// if err := p.LeaveSourceSpecificGroup(en0, &ssmgroup, &ssmsource); err != nil { +// // error handling +// } +// +// or JoinGroup, ExcludeSourceSpecificGroup, +// IncludeSourceSpecificGroup and LeaveGroup for the operation known +// as "exclude" mode. +// +// exclsource := net.UDPAddr{IP: net.IPv4(192, 168, 0, 254)} +// if err := p.JoinGroup(en0, &ssmgroup); err != nil { +// // error handling +// } +// if err := p.ExcludeSourceSpecificGroup(en0, &ssmgroup, &exclsource); err != nil { +// // error handling +// } +// if err := p.LeaveGroup(en0, &ssmgroup); err != nil { +// // error handling +// } +// +// Note that it depends on each platform implementation what happens +// when an application which runs on IGMPv3 unsupported platform uses +// JoinSourceSpecificGroup and LeaveSourceSpecificGroup. +// In general the platform tries to fall back to conversations using +// IGMPv1 or IGMPv2 and starts to listen to multicast traffic. +// In the fallback case, ExcludeSourceSpecificGroup and +// IncludeSourceSpecificGroup may return an error. +package ipv4 diff --git a/vendor/golang.org/x/net/ipv4/endpoint.go b/vendor/golang.org/x/net/ipv4/endpoint.go new file mode 100644 index 0000000..a8ca2ff --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/endpoint.go @@ -0,0 +1,189 @@ +// 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 ipv4 + +import ( + "net" + "syscall" + "time" + + "golang.org/x/net/internal/netreflect" +) + +// A Conn represents a network endpoint that uses the IPv4 transport. +// It is used to control basic IP-level socket options such as TOS and +// TTL. +type Conn struct { + genericOpt +} + +type genericOpt struct { + net.Conn +} + +func (c *genericOpt) ok() bool { return c != nil && c.Conn != nil } + +// NewConn returns a new Conn. +func NewConn(c net.Conn) *Conn { + return &Conn{ + genericOpt: genericOpt{Conn: c}, + } +} + +// A PacketConn represents a packet network endpoint that uses the +// IPv4 transport. It is used to control several IP-level socket +// options including multicasting. It also provides datagram based +// network I/O methods specific to the IPv4 and higher layer protocols +// such as UDP. +type PacketConn struct { + genericOpt + dgramOpt + payloadHandler +} + +type dgramOpt struct { + net.PacketConn +} + +func (c *dgramOpt) ok() bool { return c != nil && c.PacketConn != nil } + +// SetControlMessage sets the per packet IP-level socket options. +func (c *PacketConn) SetControlMessage(cf ControlFlags, on bool) error { + if !c.payloadHandler.ok() { + return syscall.EINVAL + } + s, err := netreflect.PacketSocketOf(c.dgramOpt.PacketConn) + if err != nil { + return err + } + return setControlMessage(s, &c.payloadHandler.rawOpt, cf, on) +} + +// SetDeadline sets the read and write deadlines associated with the +// endpoint. +func (c *PacketConn) SetDeadline(t time.Time) error { + if !c.payloadHandler.ok() { + return syscall.EINVAL + } + return c.payloadHandler.PacketConn.SetDeadline(t) +} + +// SetReadDeadline sets the read deadline associated with the +// endpoint. +func (c *PacketConn) SetReadDeadline(t time.Time) error { + if !c.payloadHandler.ok() { + return syscall.EINVAL + } + return c.payloadHandler.PacketConn.SetReadDeadline(t) +} + +// SetWriteDeadline sets the write deadline associated with the +// endpoint. +func (c *PacketConn) SetWriteDeadline(t time.Time) error { + if !c.payloadHandler.ok() { + return syscall.EINVAL + } + return c.payloadHandler.PacketConn.SetWriteDeadline(t) +} + +// Close closes the endpoint. +func (c *PacketConn) Close() error { + if !c.payloadHandler.ok() { + return syscall.EINVAL + } + return c.payloadHandler.PacketConn.Close() +} + +// NewPacketConn returns a new PacketConn using c as its underlying +// transport. +func NewPacketConn(c net.PacketConn) *PacketConn { + p := &PacketConn{ + genericOpt: genericOpt{Conn: c.(net.Conn)}, + dgramOpt: dgramOpt{PacketConn: c}, + payloadHandler: payloadHandler{PacketConn: c}, + } + if _, ok := c.(*net.IPConn); ok && sockOpts[ssoStripHeader].name > 0 { + if s, err := netreflect.PacketSocketOf(c); err == nil { + setInt(s, &sockOpts[ssoStripHeader], boolint(true)) + } + } + return p +} + +// A RawConn represents a packet network endpoint that uses the IPv4 +// transport. It is used to control several IP-level socket options +// including IPv4 header manipulation. It also provides datagram +// based network I/O methods specific to the IPv4 and higher layer +// protocols that handle IPv4 datagram directly such as OSPF, GRE. +type RawConn struct { + genericOpt + dgramOpt + packetHandler +} + +// SetControlMessage sets the per packet IP-level socket options. +func (c *RawConn) SetControlMessage(cf ControlFlags, on bool) error { + if !c.packetHandler.ok() { + return syscall.EINVAL + } + s, err := netreflect.PacketSocketOf(c.dgramOpt.PacketConn) + if err != nil { + return err + } + return setControlMessage(s, &c.packetHandler.rawOpt, cf, on) +} + +// SetDeadline sets the read and write deadlines associated with the +// endpoint. +func (c *RawConn) SetDeadline(t time.Time) error { + if !c.packetHandler.ok() { + return syscall.EINVAL + } + return c.packetHandler.c.SetDeadline(t) +} + +// SetReadDeadline sets the read deadline associated with the +// endpoint. +func (c *RawConn) SetReadDeadline(t time.Time) error { + if !c.packetHandler.ok() { + return syscall.EINVAL + } + return c.packetHandler.c.SetReadDeadline(t) +} + +// SetWriteDeadline sets the write deadline associated with the +// endpoint. +func (c *RawConn) SetWriteDeadline(t time.Time) error { + if !c.packetHandler.ok() { + return syscall.EINVAL + } + return c.packetHandler.c.SetWriteDeadline(t) +} + +// Close closes the endpoint. +func (c *RawConn) Close() error { + if !c.packetHandler.ok() { + return syscall.EINVAL + } + return c.packetHandler.c.Close() +} + +// NewRawConn returns a new RawConn using c as its underlying +// transport. +func NewRawConn(c net.PacketConn) (*RawConn, error) { + r := &RawConn{ + genericOpt: genericOpt{Conn: c.(net.Conn)}, + dgramOpt: dgramOpt{PacketConn: c}, + packetHandler: packetHandler{c: c.(*net.IPConn)}, + } + s, err := netreflect.PacketSocketOf(c) + if err != nil { + return nil, err + } + if err := setInt(s, &sockOpts[ssoHeaderPrepend], boolint(true)); err != nil { + return nil, err + } + return r, nil +} diff --git a/vendor/golang.org/x/net/ipv4/gen.go b/vendor/golang.org/x/net/ipv4/gen.go new file mode 100644 index 0000000..187d648 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/gen.go @@ -0,0 +1,199 @@ +// 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 ignore + +//go:generate go run gen.go + +// This program generates system adaptation constants and types, +// internet protocol constants and tables by reading template files +// and IANA protocol registries. +package main + +import ( + "bytes" + "encoding/xml" + "fmt" + "go/format" + "io" + "io/ioutil" + "net/http" + "os" + "os/exec" + "runtime" + "strconv" + "strings" +) + +func main() { + if err := genzsys(); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } + if err := geniana(); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } +} + +func genzsys() error { + defs := "defs_" + runtime.GOOS + ".go" + f, err := os.Open(defs) + if err != nil { + if os.IsNotExist(err) { + return nil + } + return err + } + f.Close() + cmd := exec.Command("go", "tool", "cgo", "-godefs", defs) + b, err := cmd.Output() + if err != nil { + return err + } + b, err = format.Source(b) + if err != nil { + return err + } + zsys := "zsys_" + runtime.GOOS + ".go" + switch runtime.GOOS { + case "freebsd", "linux": + zsys = "zsys_" + runtime.GOOS + "_" + runtime.GOARCH + ".go" + } + if err := ioutil.WriteFile(zsys, b, 0644); err != nil { + return err + } + return nil +} + +var registries = []struct { + url string + parse func(io.Writer, io.Reader) error +}{ + { + "http://www.iana.org/assignments/icmp-parameters/icmp-parameters.xml", + parseICMPv4Parameters, + }, +} + +func geniana() error { + var bb bytes.Buffer + fmt.Fprintf(&bb, "// go generate gen.go\n") + fmt.Fprintf(&bb, "// GENERATED BY THE COMMAND ABOVE; DO NOT EDIT\n\n") + fmt.Fprintf(&bb, "package ipv4\n\n") + for _, r := range registries { + resp, err := http.Get(r.url) + if err != nil { + return err + } + defer resp.Body.Close() + if resp.StatusCode != http.StatusOK { + return fmt.Errorf("got HTTP status code %v for %v\n", resp.StatusCode, r.url) + } + if err := r.parse(&bb, resp.Body); err != nil { + return err + } + fmt.Fprintf(&bb, "\n") + } + b, err := format.Source(bb.Bytes()) + if err != nil { + return err + } + if err := ioutil.WriteFile("iana.go", b, 0644); err != nil { + return err + } + return nil +} + +func parseICMPv4Parameters(w io.Writer, r io.Reader) error { + dec := xml.NewDecoder(r) + var icp icmpv4Parameters + if err := dec.Decode(&icp); err != nil { + return err + } + prs := icp.escape() + fmt.Fprintf(w, "// %s, Updated: %s\n", icp.Title, icp.Updated) + fmt.Fprintf(w, "const (\n") + for _, pr := range prs { + if pr.Descr == "" { + continue + } + fmt.Fprintf(w, "ICMPType%s ICMPType = %d", pr.Descr, pr.Value) + fmt.Fprintf(w, "// %s\n", pr.OrigDescr) + } + fmt.Fprintf(w, ")\n\n") + fmt.Fprintf(w, "// %s, Updated: %s\n", icp.Title, icp.Updated) + fmt.Fprintf(w, "var icmpTypes = map[ICMPType]string{\n") + for _, pr := range prs { + if pr.Descr == "" { + continue + } + fmt.Fprintf(w, "%d: %q,\n", pr.Value, strings.ToLower(pr.OrigDescr)) + } + fmt.Fprintf(w, "}\n") + return nil +} + +type icmpv4Parameters struct { + XMLName xml.Name `xml:"registry"` + Title string `xml:"title"` + Updated string `xml:"updated"` + Registries []struct { + Title string `xml:"title"` + Records []struct { + Value string `xml:"value"` + Descr string `xml:"description"` + } `xml:"record"` + } `xml:"registry"` +} + +type canonICMPv4ParamRecord struct { + OrigDescr string + Descr string + Value int +} + +func (icp *icmpv4Parameters) escape() []canonICMPv4ParamRecord { + id := -1 + for i, r := range icp.Registries { + if strings.Contains(r.Title, "Type") || strings.Contains(r.Title, "type") { + id = i + break + } + } + if id < 0 { + return nil + } + prs := make([]canonICMPv4ParamRecord, len(icp.Registries[id].Records)) + sr := strings.NewReplacer( + "Messages", "", + "Message", "", + "ICMP", "", + "+", "P", + "-", "", + "/", "", + ".", "", + " ", "", + ) + for i, pr := range icp.Registries[id].Records { + if strings.Contains(pr.Descr, "Reserved") || + strings.Contains(pr.Descr, "Unassigned") || + strings.Contains(pr.Descr, "Deprecated") || + strings.Contains(pr.Descr, "Experiment") || + strings.Contains(pr.Descr, "experiment") { + continue + } + ss := strings.Split(pr.Descr, "\n") + if len(ss) > 1 { + prs[i].Descr = strings.Join(ss, " ") + } else { + prs[i].Descr = ss[0] + } + s := strings.TrimSpace(prs[i].Descr) + prs[i].OrigDescr = s + prs[i].Descr = sr.Replace(s) + prs[i].Value, _ = strconv.Atoi(pr.Value) + } + return prs +} diff --git a/vendor/golang.org/x/net/ipv4/genericopt_posix.go b/vendor/golang.org/x/net/ipv4/genericopt_posix.go new file mode 100644 index 0000000..f333581 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/genericopt_posix.go @@ -0,0 +1,63 @@ +// 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 darwin dragonfly freebsd linux netbsd openbsd solaris windows + +package ipv4 + +import ( + "syscall" + + "golang.org/x/net/internal/netreflect" +) + +// TOS returns the type-of-service field value for outgoing packets. +func (c *genericOpt) TOS() (int, error) { + if !c.ok() { + return 0, syscall.EINVAL + } + s, err := netreflect.SocketOf(c.Conn) + if err != nil { + return 0, err + } + return getInt(s, &sockOpts[ssoTOS]) +} + +// SetTOS sets the type-of-service field value for future outgoing +// packets. +func (c *genericOpt) SetTOS(tos int) error { + if !c.ok() { + return syscall.EINVAL + } + s, err := netreflect.SocketOf(c.Conn) + if err != nil { + return err + } + return setInt(s, &sockOpts[ssoTOS], tos) +} + +// TTL returns the time-to-live field value for outgoing packets. +func (c *genericOpt) TTL() (int, error) { + if !c.ok() { + return 0, syscall.EINVAL + } + s, err := netreflect.SocketOf(c.Conn) + if err != nil { + return 0, err + } + return getInt(s, &sockOpts[ssoTTL]) +} + +// SetTTL sets the time-to-live field value for future outgoing +// packets. +func (c *genericOpt) SetTTL(ttl int) error { + if !c.ok() { + return syscall.EINVAL + } + s, err := netreflect.SocketOf(c.Conn) + if err != nil { + return err + } + return setInt(s, &sockOpts[ssoTTL], ttl) +} diff --git a/vendor/golang.org/x/net/ipv4/genericopt_stub.go b/vendor/golang.org/x/net/ipv4/genericopt_stub.go new file mode 100644 index 0000000..f907189 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/genericopt_stub.go @@ -0,0 +1,29 @@ +// 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 nacl plan9 + +package ipv4 + +// TOS returns the type-of-service field value for outgoing packets. +func (c *genericOpt) TOS() (int, error) { + return 0, errOpNoSupport +} + +// SetTOS sets the type-of-service field value for future outgoing +// packets. +func (c *genericOpt) SetTOS(tos int) error { + return errOpNoSupport +} + +// TTL returns the time-to-live field value for outgoing packets. +func (c *genericOpt) TTL() (int, error) { + return 0, errOpNoSupport +} + +// SetTTL sets the time-to-live field value for future outgoing +// packets. +func (c *genericOpt) SetTTL(ttl int) error { + return errOpNoSupport +} diff --git a/vendor/golang.org/x/net/ipv4/header.go b/vendor/golang.org/x/net/ipv4/header.go new file mode 100644 index 0000000..f31be59 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/header.go @@ -0,0 +1,145 @@ +// 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 ipv4 + +import ( + "encoding/binary" + "fmt" + "net" + "runtime" + "syscall" +) + +const ( + Version = 4 // protocol version + HeaderLen = 20 // header length without extension headers + maxHeaderLen = 60 // sensible default, revisit if later RFCs define new usage of version and header length fields +) + +type HeaderFlags int + +const ( + MoreFragments HeaderFlags = 1 << iota // more fragments flag + DontFragment // don't fragment flag +) + +// A Header represents an IPv4 header. +type Header struct { + Version int // protocol version + Len int // header length + TOS int // type-of-service + TotalLen int // packet total length + ID int // identification + Flags HeaderFlags // flags + FragOff int // fragment offset + TTL int // time-to-live + Protocol int // next protocol + Checksum int // checksum + Src net.IP // source address + Dst net.IP // destination address + Options []byte // options, extension headers +} + +func (h *Header) String() string { + if h == nil { + return "" + } + return fmt.Sprintf("ver=%d hdrlen=%d tos=%#x totallen=%d id=%#x flags=%#x fragoff=%#x ttl=%d proto=%d cksum=%#x src=%v dst=%v", h.Version, h.Len, h.TOS, h.TotalLen, h.ID, h.Flags, h.FragOff, h.TTL, h.Protocol, h.Checksum, h.Src, h.Dst) +} + +// Marshal returns the binary encoding of the IPv4 header h. +func (h *Header) Marshal() ([]byte, error) { + if h == nil { + return nil, syscall.EINVAL + } + if h.Len < HeaderLen { + return nil, errHeaderTooShort + } + hdrlen := HeaderLen + len(h.Options) + b := make([]byte, hdrlen) + b[0] = byte(Version<<4 | (hdrlen >> 2 & 0x0f)) + b[1] = byte(h.TOS) + flagsAndFragOff := (h.FragOff & 0x1fff) | int(h.Flags<<13) + switch runtime.GOOS { + case "darwin", "dragonfly", "netbsd": + nativeEndian.PutUint16(b[2:4], uint16(h.TotalLen)) + nativeEndian.PutUint16(b[6:8], uint16(flagsAndFragOff)) + case "freebsd": + if freebsdVersion < 1100000 { + nativeEndian.PutUint16(b[2:4], uint16(h.TotalLen)) + nativeEndian.PutUint16(b[6:8], uint16(flagsAndFragOff)) + } else { + binary.BigEndian.PutUint16(b[2:4], uint16(h.TotalLen)) + binary.BigEndian.PutUint16(b[6:8], uint16(flagsAndFragOff)) + } + default: + binary.BigEndian.PutUint16(b[2:4], uint16(h.TotalLen)) + binary.BigEndian.PutUint16(b[6:8], uint16(flagsAndFragOff)) + } + binary.BigEndian.PutUint16(b[4:6], uint16(h.ID)) + b[8] = byte(h.TTL) + b[9] = byte(h.Protocol) + binary.BigEndian.PutUint16(b[10:12], uint16(h.Checksum)) + if ip := h.Src.To4(); ip != nil { + copy(b[12:16], ip[:net.IPv4len]) + } + if ip := h.Dst.To4(); ip != nil { + copy(b[16:20], ip[:net.IPv4len]) + } else { + return nil, errMissingAddress + } + if len(h.Options) > 0 { + copy(b[HeaderLen:], h.Options) + } + return b, nil +} + +// ParseHeader parses b as an IPv4 header. +func ParseHeader(b []byte) (*Header, error) { + if len(b) < HeaderLen { + return nil, errHeaderTooShort + } + hdrlen := int(b[0]&0x0f) << 2 + if hdrlen > len(b) { + return nil, errBufferTooShort + } + h := &Header{ + Version: int(b[0] >> 4), + Len: hdrlen, + TOS: int(b[1]), + ID: int(binary.BigEndian.Uint16(b[4:6])), + TTL: int(b[8]), + Protocol: int(b[9]), + Checksum: int(binary.BigEndian.Uint16(b[10:12])), + Src: net.IPv4(b[12], b[13], b[14], b[15]), + Dst: net.IPv4(b[16], b[17], b[18], b[19]), + } + switch runtime.GOOS { + case "darwin", "dragonfly", "netbsd": + h.TotalLen = int(nativeEndian.Uint16(b[2:4])) + hdrlen + h.FragOff = int(nativeEndian.Uint16(b[6:8])) + case "freebsd": + if freebsdVersion < 1100000 { + h.TotalLen = int(nativeEndian.Uint16(b[2:4])) + if freebsdVersion < 1000000 { + h.TotalLen += hdrlen + } + h.FragOff = int(nativeEndian.Uint16(b[6:8])) + } else { + h.TotalLen = int(binary.BigEndian.Uint16(b[2:4])) + h.FragOff = int(binary.BigEndian.Uint16(b[6:8])) + } + default: + h.TotalLen = int(binary.BigEndian.Uint16(b[2:4])) + h.FragOff = int(binary.BigEndian.Uint16(b[6:8])) + } + h.Flags = HeaderFlags(h.FragOff&0xe000) >> 13 + h.FragOff = h.FragOff & 0x1fff + if hdrlen-HeaderLen > 0 { + h.Options = make([]byte, hdrlen-HeaderLen) + copy(h.Options, b[HeaderLen:]) + } + return h, nil +} diff --git a/vendor/golang.org/x/net/ipv4/helper.go b/vendor/golang.org/x/net/ipv4/helper.go new file mode 100644 index 0000000..acecfd0 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/helper.go @@ -0,0 +1,59 @@ +// 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 ipv4 + +import ( + "encoding/binary" + "errors" + "net" + "unsafe" +) + +var ( + errMissingAddress = errors.New("missing address") + errMissingHeader = errors.New("missing header") + errHeaderTooShort = errors.New("header too short") + errBufferTooShort = errors.New("buffer too short") + errInvalidConnType = errors.New("invalid conn type") + errOpNoSupport = errors.New("operation not supported") + errNoSuchInterface = errors.New("no such interface") + errNoSuchMulticastInterface = errors.New("no such multicast interface") + + // See http://www.freebsd.org/doc/en/books/porters-handbook/freebsd-versions.html. + freebsdVersion uint32 + + nativeEndian binary.ByteOrder +) + +func init() { + i := uint32(1) + b := (*[4]byte)(unsafe.Pointer(&i)) + if b[0] == 1 { + nativeEndian = binary.LittleEndian + } else { + nativeEndian = binary.BigEndian + } +} + +func boolint(b bool) int { + if b { + return 1 + } + return 0 +} + +func netAddrToIP4(a net.Addr) net.IP { + switch v := a.(type) { + case *net.UDPAddr: + if ip := v.IP.To4(); ip != nil { + return ip + } + case *net.IPAddr: + if ip := v.IP.To4(); ip != nil { + return ip + } + } + return nil +} diff --git a/vendor/golang.org/x/net/ipv4/iana.go b/vendor/golang.org/x/net/ipv4/iana.go new file mode 100644 index 0000000..be10c94 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/iana.go @@ -0,0 +1,34 @@ +// go generate gen.go +// GENERATED BY THE COMMAND ABOVE; DO NOT EDIT + +package ipv4 + +// Internet Control Message Protocol (ICMP) Parameters, Updated: 2013-04-19 +const ( + ICMPTypeEchoReply ICMPType = 0 // Echo Reply + ICMPTypeDestinationUnreachable ICMPType = 3 // Destination Unreachable + ICMPTypeRedirect ICMPType = 5 // Redirect + ICMPTypeEcho ICMPType = 8 // Echo + ICMPTypeRouterAdvertisement ICMPType = 9 // Router Advertisement + ICMPTypeRouterSolicitation ICMPType = 10 // Router Solicitation + ICMPTypeTimeExceeded ICMPType = 11 // Time Exceeded + ICMPTypeParameterProblem ICMPType = 12 // Parameter Problem + ICMPTypeTimestamp ICMPType = 13 // Timestamp + ICMPTypeTimestampReply ICMPType = 14 // Timestamp Reply + ICMPTypePhoturis ICMPType = 40 // Photuris +) + +// Internet Control Message Protocol (ICMP) Parameters, Updated: 2013-04-19 +var icmpTypes = map[ICMPType]string{ + 0: "echo reply", + 3: "destination unreachable", + 5: "redirect", + 8: "echo", + 9: "router advertisement", + 10: "router solicitation", + 11: "time exceeded", + 12: "parameter problem", + 13: "timestamp", + 14: "timestamp reply", + 40: "photuris", +} diff --git a/vendor/golang.org/x/net/ipv4/icmp.go b/vendor/golang.org/x/net/ipv4/icmp.go new file mode 100644 index 0000000..e869c23 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/icmp.go @@ -0,0 +1,57 @@ +// 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. + +package ipv4 + +import "golang.org/x/net/internal/iana" + +// An ICMPType represents a type of ICMP message. +type ICMPType int + +func (typ ICMPType) String() string { + s, ok := icmpTypes[typ] + if !ok { + return "" + } + return s +} + +// Protocol returns the ICMPv4 protocol number. +func (typ ICMPType) Protocol() int { + return iana.ProtocolICMP +} + +// An ICMPFilter represents an ICMP message filter for incoming +// packets. The filter belongs to a packet delivery path on a host and +// it cannot interact with forwarding packets or tunnel-outer packets. +// +// Note: RFC 2460 defines a reasonable role model and it works not +// only for IPv6 but IPv4. A node means a device that implements IP. +// A router means a node that forwards IP packets not explicitly +// addressed to itself, and a host means a node that is not a router. +type ICMPFilter struct { + icmpFilter +} + +// Accept accepts incoming ICMP packets including the type field value +// typ. +func (f *ICMPFilter) Accept(typ ICMPType) { + f.accept(typ) +} + +// Block blocks incoming ICMP packets including the type field value +// typ. +func (f *ICMPFilter) Block(typ ICMPType) { + f.block(typ) +} + +// SetAll sets the filter action to the filter. +func (f *ICMPFilter) SetAll(block bool) { + f.setAll(block) +} + +// WillBlock reports whether the ICMP type will be blocked. +func (f *ICMPFilter) WillBlock(typ ICMPType) bool { + return f.willBlock(typ) +} diff --git a/vendor/golang.org/x/net/ipv4/icmp_linux.go b/vendor/golang.org/x/net/ipv4/icmp_linux.go new file mode 100644 index 0000000..6e1c5c8 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/icmp_linux.go @@ -0,0 +1,25 @@ +// 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. + +package ipv4 + +func (f *icmpFilter) accept(typ ICMPType) { + f.Data &^= 1 << (uint32(typ) & 31) +} + +func (f *icmpFilter) block(typ ICMPType) { + f.Data |= 1 << (uint32(typ) & 31) +} + +func (f *icmpFilter) setAll(block bool) { + if block { + f.Data = 1<<32 - 1 + } else { + f.Data = 0 + } +} + +func (f *icmpFilter) willBlock(typ ICMPType) bool { + return f.Data&(1<<(uint32(typ)&31)) != 0 +} diff --git a/vendor/golang.org/x/net/ipv4/icmp_stub.go b/vendor/golang.org/x/net/ipv4/icmp_stub.go new file mode 100644 index 0000000..21bb29a --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/icmp_stub.go @@ -0,0 +1,25 @@ +// 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 !linux + +package ipv4 + +const sizeofICMPFilter = 0x0 + +type icmpFilter struct { +} + +func (f *icmpFilter) accept(typ ICMPType) { +} + +func (f *icmpFilter) block(typ ICMPType) { +} + +func (f *icmpFilter) setAll(block bool) { +} + +func (f *icmpFilter) willBlock(typ ICMPType) bool { + return false +} diff --git a/vendor/golang.org/x/net/ipv4/packet.go b/vendor/golang.org/x/net/ipv4/packet.go new file mode 100644 index 0000000..0986431 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/packet.go @@ -0,0 +1,97 @@ +// 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 ipv4 + +import ( + "net" + "syscall" +) + +// A packetHandler represents the IPv4 datagram handler. +type packetHandler struct { + c *net.IPConn + rawOpt +} + +func (c *packetHandler) ok() bool { return c != nil && c.c != nil } + +// ReadFrom reads an IPv4 datagram from the endpoint c, copying the +// datagram into b. It returns the received datagram as the IPv4 +// header h, the payload p and the control message cm. +func (c *packetHandler) ReadFrom(b []byte) (h *Header, p []byte, cm *ControlMessage, err error) { + if !c.ok() { + return nil, nil, nil, syscall.EINVAL + } + oob := newControlMessage(&c.rawOpt) + n, oobn, _, src, err := c.c.ReadMsgIP(b, oob) + if err != nil { + return nil, nil, nil, err + } + var hs []byte + if hs, p, err = slicePacket(b[:n]); err != nil { + return nil, nil, nil, err + } + if h, err = ParseHeader(hs); err != nil { + return nil, nil, nil, err + } + if cm, err = parseControlMessage(oob[:oobn]); err != nil { + return nil, nil, nil, err + } + if src != nil && cm != nil { + cm.Src = src.IP + } + return +} + +func slicePacket(b []byte) (h, p []byte, err error) { + if len(b) < HeaderLen { + return nil, nil, errHeaderTooShort + } + hdrlen := int(b[0]&0x0f) << 2 + return b[:hdrlen], b[hdrlen:], nil +} + +// WriteTo writes an IPv4 datagram through the endpoint c, copying the +// datagram from the IPv4 header h and the payload p. The control +// message cm allows the datagram path and the outgoing interface to be +// specified. Currently only Darwin and Linux support this. The cm +// may be nil if control of the outgoing datagram is not required. +// +// The IPv4 header h must contain appropriate fields that include: +// +// Version = ipv4.Version +// Len = +// TOS = +// TotalLen = +// ID = platform sets an appropriate value if ID is zero +// FragOff = +// TTL = +// Protocol = +// Checksum = platform sets an appropriate value if Checksum is zero +// Src = platform sets an appropriate value if Src is nil +// Dst = +// Options = optional +func (c *packetHandler) WriteTo(h *Header, p []byte, cm *ControlMessage) error { + if !c.ok() { + return syscall.EINVAL + } + oob := marshalControlMessage(cm) + wh, err := h.Marshal() + if err != nil { + return err + } + dst := &net.IPAddr{} + if cm != nil { + if ip := cm.Dst.To4(); ip != nil { + dst.IP = ip + } + } + if dst.IP == nil { + dst.IP = h.Dst + } + wh = append(wh, p...) + _, _, err = c.c.WriteMsgIP(wh, oob, dst) + return err +} diff --git a/vendor/golang.org/x/net/ipv4/payload.go b/vendor/golang.org/x/net/ipv4/payload.go new file mode 100644 index 0000000..d7698cb --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/payload.go @@ -0,0 +1,15 @@ +// 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 ipv4 + +import "net" + +// A payloadHandler represents the IPv4 datagram payload handler. +type payloadHandler struct { + net.PacketConn + rawOpt +} + +func (c *payloadHandler) ok() bool { return c != nil && c.PacketConn != nil } diff --git a/vendor/golang.org/x/net/ipv4/payload_cmsg.go b/vendor/golang.org/x/net/ipv4/payload_cmsg.go new file mode 100644 index 0000000..5da0cbe --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/payload_cmsg.go @@ -0,0 +1,81 @@ +// 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,!windows + +package ipv4 + +import ( + "net" + "syscall" +) + +// ReadFrom reads a payload of the received IPv4 datagram, from the +// endpoint c, copying the payload into b. It returns the number of +// bytes copied into b, the control message cm and the source address +// src of the received datagram. +func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) { + if !c.ok() { + return 0, nil, nil, syscall.EINVAL + } + oob := newControlMessage(&c.rawOpt) + var oobn int + switch c := c.PacketConn.(type) { + case *net.UDPConn: + if n, oobn, _, src, err = c.ReadMsgUDP(b, oob); err != nil { + return 0, nil, nil, err + } + case *net.IPConn: + if sockOpts[ssoStripHeader].name > 0 { + if n, oobn, _, src, err = c.ReadMsgIP(b, oob); err != nil { + return 0, nil, nil, err + } + } else { + nb := make([]byte, maxHeaderLen+len(b)) + if n, oobn, _, src, err = c.ReadMsgIP(nb, oob); err != nil { + return 0, nil, nil, err + } + hdrlen := int(nb[0]&0x0f) << 2 + copy(b, nb[hdrlen:]) + n -= hdrlen + } + default: + return 0, nil, nil, errInvalidConnType + } + if cm, err = parseControlMessage(oob[:oobn]); err != nil { + return 0, nil, nil, err + } + if cm != nil { + cm.Src = netAddrToIP4(src) + } + return +} + +// WriteTo writes a payload of the IPv4 datagram, to the destination +// address dst through the endpoint c, copying the payload from b. It +// returns the number of bytes written. The control message cm allows +// the datagram path and the outgoing interface to be specified. +// Currently only Darwin and Linux support this. The cm may be nil if +// control of the outgoing datagram is not required. +func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) { + if !c.ok() { + return 0, syscall.EINVAL + } + oob := marshalControlMessage(cm) + if dst == nil { + return 0, errMissingAddress + } + switch c := c.PacketConn.(type) { + case *net.UDPConn: + n, _, err = c.WriteMsgUDP(b, oob, dst.(*net.UDPAddr)) + case *net.IPConn: + n, _, err = c.WriteMsgIP(b, oob, dst.(*net.IPAddr)) + default: + return 0, errInvalidConnType + } + if err != nil { + return 0, err + } + return +} diff --git a/vendor/golang.org/x/net/ipv4/payload_nocmsg.go b/vendor/golang.org/x/net/ipv4/payload_nocmsg.go new file mode 100644 index 0000000..b874de0 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/payload_nocmsg.go @@ -0,0 +1,42 @@ +// 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 windows + +package ipv4 + +import ( + "net" + "syscall" +) + +// ReadFrom reads a payload of the received IPv4 datagram, from the +// endpoint c, copying the payload into b. It returns the number of +// bytes copied into b, the control message cm and the source address +// src of the received datagram. +func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) { + if !c.ok() { + return 0, nil, nil, syscall.EINVAL + } + if n, src, err = c.PacketConn.ReadFrom(b); err != nil { + return 0, nil, nil, err + } + return +} + +// WriteTo writes a payload of the IPv4 datagram, to the destination +// address dst through the endpoint c, copying the payload from b. It +// returns the number of bytes written. The control message cm allows +// the datagram path and the outgoing interface to be specified. +// Currently only Darwin and Linux support this. The cm may be nil if +// control of the outgoing datagram is not required. +func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) { + if !c.ok() { + return 0, syscall.EINVAL + } + if dst == nil { + return 0, errMissingAddress + } + return c.PacketConn.WriteTo(b, dst) +} diff --git a/vendor/golang.org/x/net/ipv4/sockopt.go b/vendor/golang.org/x/net/ipv4/sockopt.go new file mode 100644 index 0000000..ace37d3 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sockopt.go @@ -0,0 +1,46 @@ +// 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. + +package ipv4 + +// Sticky socket options +const ( + ssoTOS = iota // header field for unicast packet + ssoTTL // header field for unicast packet + ssoMulticastTTL // header field for multicast packet + ssoMulticastInterface // outbound interface for multicast packet + ssoMulticastLoopback // loopback for multicast packet + ssoReceiveTTL // header field on received packet + ssoReceiveDst // header field on received packet + ssoReceiveInterface // inbound interface on received packet + ssoPacketInfo // incbound or outbound packet path + ssoHeaderPrepend // ipv4 header prepend + ssoStripHeader // strip ipv4 header + ssoICMPFilter // icmp filter + ssoJoinGroup // any-source multicast + ssoLeaveGroup // any-source multicast + ssoJoinSourceGroup // source-specific multicast + ssoLeaveSourceGroup // source-specific multicast + ssoBlockSourceGroup // any-source or source-specific multicast + ssoUnblockSourceGroup // any-source or source-specific multicast + ssoMax +) + +// Sticky socket option value types +const ( + ssoTypeByte = iota + 1 + ssoTypeInt + ssoTypeInterface + ssoTypeICMPFilter + ssoTypeIPMreq + ssoTypeIPMreqn + ssoTypeGroupReq + ssoTypeGroupSourceReq +) + +// A sockOpt represents a binding for sticky socket option. +type sockOpt struct { + name int // option name, must be equal or greater than 1 + typ int // option value type, must be equal or greater than 1 +} diff --git a/vendor/golang.org/x/net/ipv4/sockopt_asmreq.go b/vendor/golang.org/x/net/ipv4/sockopt_asmreq.go new file mode 100644 index 0000000..04b5a30 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sockopt_asmreq.go @@ -0,0 +1,83 @@ +// 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 darwin dragonfly freebsd netbsd openbsd solaris windows + +package ipv4 + +import "net" + +func setIPMreqInterface(mreq *ipMreq, ifi *net.Interface) error { + if ifi == nil { + return nil + } + ifat, err := ifi.Addrs() + if err != nil { + return err + } + for _, ifa := range ifat { + switch ifa := ifa.(type) { + case *net.IPAddr: + if ip := ifa.IP.To4(); ip != nil { + copy(mreq.Interface[:], ip) + return nil + } + case *net.IPNet: + if ip := ifa.IP.To4(); ip != nil { + copy(mreq.Interface[:], ip) + return nil + } + } + } + return errNoSuchInterface +} + +func netIP4ToInterface(ip net.IP) (*net.Interface, error) { + ift, err := net.Interfaces() + if err != nil { + return nil, err + } + for _, ifi := range ift { + ifat, err := ifi.Addrs() + if err != nil { + return nil, err + } + for _, ifa := range ifat { + switch ifa := ifa.(type) { + case *net.IPAddr: + if ip.Equal(ifa.IP) { + return &ifi, nil + } + case *net.IPNet: + if ip.Equal(ifa.IP) { + return &ifi, nil + } + } + } + } + return nil, errNoSuchInterface +} + +func netInterfaceToIP4(ifi *net.Interface) (net.IP, error) { + if ifi == nil { + return net.IPv4zero.To4(), nil + } + ifat, err := ifi.Addrs() + if err != nil { + return nil, err + } + for _, ifa := range ifat { + switch ifa := ifa.(type) { + case *net.IPAddr: + if ip := ifa.IP.To4(); ip != nil { + return ip, nil + } + case *net.IPNet: + if ip := ifa.IP.To4(); ip != nil { + return ip, nil + } + } + } + return nil, errNoSuchInterface +} diff --git a/vendor/golang.org/x/net/ipv4/sockopt_asmreq_posix.go b/vendor/golang.org/x/net/ipv4/sockopt_asmreq_posix.go new file mode 100644 index 0000000..1db5f24 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sockopt_asmreq_posix.go @@ -0,0 +1,46 @@ +// 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 darwin dragonfly freebsd netbsd openbsd solaris windows + +package ipv4 + +import ( + "net" + "os" + "unsafe" + + "golang.org/x/net/internal/iana" +) + +func setsockoptIPMreq(s uintptr, name int, ifi *net.Interface, grp net.IP) error { + mreq := ipMreq{Multiaddr: [4]byte{grp[0], grp[1], grp[2], grp[3]}} + if err := setIPMreqInterface(&mreq, ifi); err != nil { + return err + } + return os.NewSyscallError("setsockopt", setsockopt(s, iana.ProtocolIP, name, unsafe.Pointer(&mreq), sizeofIPMreq)) +} + +func getsockoptInterface(s uintptr, name int) (*net.Interface, error) { + var b [4]byte + l := uint32(4) + if err := getsockopt(s, iana.ProtocolIP, name, unsafe.Pointer(&b[0]), &l); err != nil { + return nil, os.NewSyscallError("getsockopt", err) + } + ifi, err := netIP4ToInterface(net.IPv4(b[0], b[1], b[2], b[3])) + if err != nil { + return nil, err + } + return ifi, nil +} + +func setsockoptInterface(s uintptr, name int, ifi *net.Interface) error { + ip, err := netInterfaceToIP4(ifi) + if err != nil { + return err + } + var b [4]byte + copy(b[:], ip) + return os.NewSyscallError("setsockopt", setsockopt(s, iana.ProtocolIP, name, unsafe.Pointer(&b[0]), uint32(4))) +} diff --git a/vendor/golang.org/x/net/ipv4/sockopt_asmreq_stub.go b/vendor/golang.org/x/net/ipv4/sockopt_asmreq_stub.go new file mode 100644 index 0000000..0fbdf47 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sockopt_asmreq_stub.go @@ -0,0 +1,21 @@ +// 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 !darwin,!dragonfly,!freebsd,!netbsd,!openbsd,!solaris,!windows + +package ipv4 + +import "net" + +func setsockoptIPMreq(s uintptr, name int, ifi *net.Interface, grp net.IP) error { + return errOpNoSupport +} + +func getsockoptInterface(s uintptr, name int) (*net.Interface, error) { + return nil, errOpNoSupport +} + +func setsockoptInterface(s uintptr, name int, ifi *net.Interface) error { + return errOpNoSupport +} diff --git a/vendor/golang.org/x/net/ipv4/sockopt_asmreqn_stub.go b/vendor/golang.org/x/net/ipv4/sockopt_asmreqn_stub.go new file mode 100644 index 0000000..0c7f0f8 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sockopt_asmreqn_stub.go @@ -0,0 +1,17 @@ +// 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,!freebsd,!linux + +package ipv4 + +import "net" + +func getsockoptIPMreqn(s uintptr, name int) (*net.Interface, error) { + return nil, errOpNoSupport +} + +func setsockoptIPMreqn(s uintptr, name int, ifi *net.Interface, grp net.IP) error { + return errOpNoSupport +} diff --git a/vendor/golang.org/x/net/ipv4/sockopt_asmreqn_unix.go b/vendor/golang.org/x/net/ipv4/sockopt_asmreqn_unix.go new file mode 100644 index 0000000..92daffb --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sockopt_asmreqn_unix.go @@ -0,0 +1,42 @@ +// 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 freebsd linux + +package ipv4 + +import ( + "net" + "os" + "unsafe" + + "golang.org/x/net/internal/iana" +) + +func getsockoptIPMreqn(s uintptr, name int) (*net.Interface, error) { + var mreqn ipMreqn + l := uint32(sizeofIPMreqn) + if err := getsockopt(s, iana.ProtocolIP, name, unsafe.Pointer(&mreqn), &l); err != nil { + return nil, os.NewSyscallError("getsockopt", err) + } + if mreqn.Ifindex == 0 { + return nil, nil + } + ifi, err := net.InterfaceByIndex(int(mreqn.Ifindex)) + if err != nil { + return nil, err + } + return ifi, nil +} + +func setsockoptIPMreqn(s uintptr, name int, ifi *net.Interface, grp net.IP) error { + var mreqn ipMreqn + if ifi != nil { + mreqn.Ifindex = int32(ifi.Index) + } + if grp != nil { + mreqn.Multiaddr = [4]byte{grp[0], grp[1], grp[2], grp[3]} + } + return os.NewSyscallError("setsockopt", setsockopt(s, iana.ProtocolIP, name, unsafe.Pointer(&mreqn), sizeofIPMreqn)) +} diff --git a/vendor/golang.org/x/net/ipv4/sockopt_posix.go b/vendor/golang.org/x/net/ipv4/sockopt_posix.go new file mode 100644 index 0000000..30dd2d7 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sockopt_posix.go @@ -0,0 +1,122 @@ +// 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 darwin dragonfly freebsd linux netbsd openbsd solaris windows + +package ipv4 + +import ( + "net" + "os" + "unsafe" + + "golang.org/x/net/internal/iana" +) + +func getInt(s uintptr, opt *sockOpt) (int, error) { + if opt.name < 1 || (opt.typ != ssoTypeByte && opt.typ != ssoTypeInt) { + return 0, errOpNoSupport + } + var i int32 + var b byte + p := unsafe.Pointer(&i) + l := uint32(4) + if opt.typ == ssoTypeByte { + p = unsafe.Pointer(&b) + l = 1 + } + if err := getsockopt(s, iana.ProtocolIP, opt.name, p, &l); err != nil { + return 0, os.NewSyscallError("getsockopt", err) + } + if opt.typ == ssoTypeByte { + return int(b), nil + } + return int(i), nil +} + +func setInt(s uintptr, opt *sockOpt, v int) error { + if opt.name < 1 || (opt.typ != ssoTypeByte && opt.typ != ssoTypeInt) { + return errOpNoSupport + } + i := int32(v) + var b byte + p := unsafe.Pointer(&i) + l := uint32(4) + if opt.typ == ssoTypeByte { + b = byte(v) + p = unsafe.Pointer(&b) + l = 1 + } + return os.NewSyscallError("setsockopt", setsockopt(s, iana.ProtocolIP, opt.name, p, l)) +} + +func getInterface(s uintptr, opt *sockOpt) (*net.Interface, error) { + if opt.name < 1 { + return nil, errOpNoSupport + } + switch opt.typ { + case ssoTypeInterface: + return getsockoptInterface(s, opt.name) + case ssoTypeIPMreqn: + return getsockoptIPMreqn(s, opt.name) + default: + return nil, errOpNoSupport + } +} + +func setInterface(s uintptr, opt *sockOpt, ifi *net.Interface) error { + if opt.name < 1 { + return errOpNoSupport + } + switch opt.typ { + case ssoTypeInterface: + return setsockoptInterface(s, opt.name, ifi) + case ssoTypeIPMreqn: + return setsockoptIPMreqn(s, opt.name, ifi, nil) + default: + return errOpNoSupport + } +} + +func getICMPFilter(s uintptr, opt *sockOpt) (*ICMPFilter, error) { + if opt.name < 1 || opt.typ != ssoTypeICMPFilter { + return nil, errOpNoSupport + } + var f ICMPFilter + l := uint32(sizeofICMPFilter) + if err := getsockopt(s, iana.ProtocolReserved, opt.name, unsafe.Pointer(&f.icmpFilter), &l); err != nil { + return nil, os.NewSyscallError("getsockopt", err) + } + return &f, nil +} + +func setICMPFilter(s uintptr, opt *sockOpt, f *ICMPFilter) error { + if opt.name < 1 || opt.typ != ssoTypeICMPFilter { + return errOpNoSupport + } + return os.NewSyscallError("setsockopt", setsockopt(s, iana.ProtocolReserved, opt.name, unsafe.Pointer(&f.icmpFilter), sizeofICMPFilter)) +} + +func setGroup(s uintptr, opt *sockOpt, ifi *net.Interface, grp net.IP) error { + if opt.name < 1 { + return errOpNoSupport + } + switch opt.typ { + case ssoTypeIPMreq: + return setsockoptIPMreq(s, opt.name, ifi, grp) + case ssoTypeIPMreqn: + return setsockoptIPMreqn(s, opt.name, ifi, grp) + case ssoTypeGroupReq: + return setsockoptGroupReq(s, opt.name, ifi, grp) + default: + return errOpNoSupport + } +} + +func setSourceGroup(s uintptr, opt *sockOpt, ifi *net.Interface, grp, src net.IP) error { + if opt.name < 1 || opt.typ != ssoTypeGroupSourceReq { + return errOpNoSupport + } + return setsockoptGroupSourceReq(s, opt.name, ifi, grp, src) +} diff --git a/vendor/golang.org/x/net/ipv4/sockopt_ssmreq_stub.go b/vendor/golang.org/x/net/ipv4/sockopt_ssmreq_stub.go new file mode 100644 index 0000000..0287396 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sockopt_ssmreq_stub.go @@ -0,0 +1,17 @@ +// 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,!freebsd,!linux,!solaris + +package ipv4 + +import "net" + +func setsockoptGroupReq(s uintptr, name int, ifi *net.Interface, grp net.IP) error { + return errOpNoSupport +} + +func setsockoptGroupSourceReq(s uintptr, name int, ifi *net.Interface, grp, src net.IP) error { + return errOpNoSupport +} diff --git a/vendor/golang.org/x/net/ipv4/sockopt_ssmreq_unix.go b/vendor/golang.org/x/net/ipv4/sockopt_ssmreq_unix.go new file mode 100644 index 0000000..c9af55b --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sockopt_ssmreq_unix.go @@ -0,0 +1,61 @@ +// 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 freebsd linux solaris + +package ipv4 + +import ( + "net" + "os" + "unsafe" + + "golang.org/x/net/internal/iana" +) + +var freebsd32o64 bool + +func setsockoptGroupReq(s uintptr, name int, ifi *net.Interface, grp net.IP) error { + var gr groupReq + if ifi != nil { + gr.Interface = uint32(ifi.Index) + } + gr.setGroup(grp) + var p unsafe.Pointer + var l uint32 + if freebsd32o64 { + var d [sizeofGroupReq + 4]byte + s := (*[sizeofGroupReq]byte)(unsafe.Pointer(&gr)) + copy(d[:4], s[:4]) + copy(d[8:], s[4:]) + p = unsafe.Pointer(&d[0]) + l = sizeofGroupReq + 4 + } else { + p = unsafe.Pointer(&gr) + l = sizeofGroupReq + } + return os.NewSyscallError("setsockopt", setsockopt(s, iana.ProtocolIP, name, p, l)) +} + +func setsockoptGroupSourceReq(s uintptr, name int, ifi *net.Interface, grp, src net.IP) error { + var gsr groupSourceReq + if ifi != nil { + gsr.Interface = uint32(ifi.Index) + } + gsr.setSourceGroup(grp, src) + var p unsafe.Pointer + var l uint32 + if freebsd32o64 { + var d [sizeofGroupSourceReq + 4]byte + s := (*[sizeofGroupSourceReq]byte)(unsafe.Pointer(&gsr)) + copy(d[:4], s[:4]) + copy(d[8:], s[4:]) + p = unsafe.Pointer(&d[0]) + l = sizeofGroupSourceReq + 4 + } else { + p = unsafe.Pointer(&gsr) + l = sizeofGroupSourceReq + } + return os.NewSyscallError("setsockopt", setsockopt(s, iana.ProtocolIP, name, p, l)) +} diff --git a/vendor/golang.org/x/net/ipv4/sockopt_stub.go b/vendor/golang.org/x/net/ipv4/sockopt_stub.go new file mode 100644 index 0000000..c7278c1 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sockopt_stub.go @@ -0,0 +1,11 @@ +// 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 nacl plan9 + +package ipv4 + +func setInt(s uintptr, opt *sockOpt, v int) error { + return errOpNoSupport +} diff --git a/vendor/golang.org/x/net/ipv4/sys_bsd.go b/vendor/golang.org/x/net/ipv4/sys_bsd.go new file mode 100644 index 0000000..203033d --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_bsd.go @@ -0,0 +1,34 @@ +// 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 dragonfly netbsd + +package ipv4 + +import ( + "net" + "syscall" +) + +var ( + ctlOpts = [ctlMax]ctlOpt{ + ctlTTL: {sysIP_RECVTTL, 1, marshalTTL, parseTTL}, + ctlDst: {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst}, + ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface}, + } + + sockOpts = [ssoMax]sockOpt{ + ssoTOS: {sysIP_TOS, ssoTypeInt}, + ssoTTL: {sysIP_TTL, ssoTypeInt}, + ssoMulticastTTL: {sysIP_MULTICAST_TTL, ssoTypeByte}, + ssoMulticastInterface: {sysIP_MULTICAST_IF, ssoTypeInterface}, + ssoMulticastLoopback: {sysIP_MULTICAST_LOOP, ssoTypeInt}, + ssoReceiveTTL: {sysIP_RECVTTL, ssoTypeInt}, + ssoReceiveDst: {sysIP_RECVDSTADDR, ssoTypeInt}, + ssoReceiveInterface: {sysIP_RECVIF, ssoTypeInt}, + ssoHeaderPrepend: {sysIP_HDRINCL, ssoTypeInt}, + ssoJoinGroup: {sysIP_ADD_MEMBERSHIP, ssoTypeIPMreq}, + ssoLeaveGroup: {sysIP_DROP_MEMBERSHIP, ssoTypeIPMreq}, + } +) diff --git a/vendor/golang.org/x/net/ipv4/sys_darwin.go b/vendor/golang.org/x/net/ipv4/sys_darwin.go new file mode 100644 index 0000000..bc69414 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_darwin.go @@ -0,0 +1,96 @@ +// 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. + +package ipv4 + +import ( + "net" + "syscall" + "unsafe" +) + +var ( + ctlOpts = [ctlMax]ctlOpt{ + ctlTTL: {sysIP_RECVTTL, 1, marshalTTL, parseTTL}, + ctlDst: {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst}, + ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface}, + } + + sockOpts = [ssoMax]sockOpt{ + ssoTOS: {sysIP_TOS, ssoTypeInt}, + ssoTTL: {sysIP_TTL, ssoTypeInt}, + ssoMulticastTTL: {sysIP_MULTICAST_TTL, ssoTypeByte}, + ssoMulticastInterface: {sysIP_MULTICAST_IF, ssoTypeInterface}, + ssoMulticastLoopback: {sysIP_MULTICAST_LOOP, ssoTypeInt}, + ssoReceiveTTL: {sysIP_RECVTTL, ssoTypeInt}, + ssoReceiveDst: {sysIP_RECVDSTADDR, ssoTypeInt}, + ssoReceiveInterface: {sysIP_RECVIF, ssoTypeInt}, + ssoHeaderPrepend: {sysIP_HDRINCL, ssoTypeInt}, + ssoStripHeader: {sysIP_STRIPHDR, ssoTypeInt}, + ssoJoinGroup: {sysIP_ADD_MEMBERSHIP, ssoTypeIPMreq}, + ssoLeaveGroup: {sysIP_DROP_MEMBERSHIP, ssoTypeIPMreq}, + } +) + +func init() { + // Seems like kern.osreldate is veiled on latest OS X. We use + // kern.osrelease instead. + osver, err := syscall.Sysctl("kern.osrelease") + if err != nil { + return + } + var i int + for i = range osver { + if osver[i] == '.' { + break + } + } + // The IP_PKTINFO and protocol-independent multicast API were + // introduced in OS X 10.7 (Darwin 11.0.0). But it looks like + // those features require OS X 10.8 (Darwin 12.0.0) and above. + // See http://support.apple.com/kb/HT1633. + if i > 2 || i == 2 && osver[0] >= '1' && osver[1] >= '2' { + ctlOpts[ctlPacketInfo].name = sysIP_PKTINFO + ctlOpts[ctlPacketInfo].length = sizeofInetPktinfo + ctlOpts[ctlPacketInfo].marshal = marshalPacketInfo + ctlOpts[ctlPacketInfo].parse = parsePacketInfo + sockOpts[ssoPacketInfo].name = sysIP_RECVPKTINFO + sockOpts[ssoPacketInfo].typ = ssoTypeInt + sockOpts[ssoMulticastInterface].typ = ssoTypeIPMreqn + sockOpts[ssoJoinGroup].name = sysMCAST_JOIN_GROUP + sockOpts[ssoJoinGroup].typ = ssoTypeGroupReq + sockOpts[ssoLeaveGroup].name = sysMCAST_LEAVE_GROUP + sockOpts[ssoLeaveGroup].typ = ssoTypeGroupReq + sockOpts[ssoJoinSourceGroup].name = sysMCAST_JOIN_SOURCE_GROUP + sockOpts[ssoJoinSourceGroup].typ = ssoTypeGroupSourceReq + sockOpts[ssoLeaveSourceGroup].name = sysMCAST_LEAVE_SOURCE_GROUP + sockOpts[ssoLeaveSourceGroup].typ = ssoTypeGroupSourceReq + sockOpts[ssoBlockSourceGroup].name = sysMCAST_BLOCK_SOURCE + sockOpts[ssoBlockSourceGroup].typ = ssoTypeGroupSourceReq + sockOpts[ssoUnblockSourceGroup].name = sysMCAST_UNBLOCK_SOURCE + sockOpts[ssoUnblockSourceGroup].typ = ssoTypeGroupSourceReq + } +} + +func (pi *inetPktinfo) setIfindex(i int) { + pi.Ifindex = uint32(i) +} + +func (gr *groupReq) setGroup(grp net.IP) { + sa := (*sockaddrInet)(unsafe.Pointer(uintptr(unsafe.Pointer(gr)) + 4)) + sa.Len = sizeofSockaddrInet + sa.Family = syscall.AF_INET + copy(sa.Addr[:], grp) +} + +func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { + sa := (*sockaddrInet)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 4)) + sa.Len = sizeofSockaddrInet + sa.Family = syscall.AF_INET + copy(sa.Addr[:], grp) + sa = (*sockaddrInet)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 132)) + sa.Len = sizeofSockaddrInet + sa.Family = syscall.AF_INET + copy(sa.Addr[:], src) +} diff --git a/vendor/golang.org/x/net/ipv4/sys_freebsd.go b/vendor/golang.org/x/net/ipv4/sys_freebsd.go new file mode 100644 index 0000000..fceffe9 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_freebsd.go @@ -0,0 +1,73 @@ +// 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. + +package ipv4 + +import ( + "net" + "runtime" + "strings" + "syscall" + "unsafe" +) + +var ( + ctlOpts = [ctlMax]ctlOpt{ + ctlTTL: {sysIP_RECVTTL, 1, marshalTTL, parseTTL}, + ctlDst: {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst}, + ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface}, + } + + sockOpts = [ssoMax]sockOpt{ + ssoTOS: {sysIP_TOS, ssoTypeInt}, + ssoTTL: {sysIP_TTL, ssoTypeInt}, + ssoMulticastTTL: {sysIP_MULTICAST_TTL, ssoTypeByte}, + ssoMulticastInterface: {sysIP_MULTICAST_IF, ssoTypeInterface}, + ssoMulticastLoopback: {sysIP_MULTICAST_LOOP, ssoTypeInt}, + ssoReceiveTTL: {sysIP_RECVTTL, ssoTypeInt}, + ssoReceiveDst: {sysIP_RECVDSTADDR, ssoTypeInt}, + ssoReceiveInterface: {sysIP_RECVIF, ssoTypeInt}, + ssoHeaderPrepend: {sysIP_HDRINCL, ssoTypeInt}, + ssoJoinGroup: {sysMCAST_JOIN_GROUP, ssoTypeGroupReq}, + ssoLeaveGroup: {sysMCAST_LEAVE_GROUP, ssoTypeGroupReq}, + ssoJoinSourceGroup: {sysMCAST_JOIN_SOURCE_GROUP, ssoTypeGroupSourceReq}, + ssoLeaveSourceGroup: {sysMCAST_LEAVE_SOURCE_GROUP, ssoTypeGroupSourceReq}, + ssoBlockSourceGroup: {sysMCAST_BLOCK_SOURCE, ssoTypeGroupSourceReq}, + ssoUnblockSourceGroup: {sysMCAST_UNBLOCK_SOURCE, ssoTypeGroupSourceReq}, + } +) + +func init() { + freebsdVersion, _ = syscall.SysctlUint32("kern.osreldate") + if freebsdVersion >= 1000000 { + sockOpts[ssoMulticastInterface].typ = ssoTypeIPMreqn + } + if runtime.GOOS == "freebsd" && runtime.GOARCH == "386" { + archs, _ := syscall.Sysctl("kern.supported_archs") + for _, s := range strings.Fields(archs) { + if s == "amd64" { + freebsd32o64 = true + break + } + } + } +} + +func (gr *groupReq) setGroup(grp net.IP) { + sa := (*sockaddrInet)(unsafe.Pointer(&gr.Group)) + sa.Len = sizeofSockaddrInet + sa.Family = syscall.AF_INET + copy(sa.Addr[:], grp) +} + +func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { + sa := (*sockaddrInet)(unsafe.Pointer(&gsr.Group)) + sa.Len = sizeofSockaddrInet + sa.Family = syscall.AF_INET + copy(sa.Addr[:], grp) + sa = (*sockaddrInet)(unsafe.Pointer(&gsr.Source)) + sa.Len = sizeofSockaddrInet + sa.Family = syscall.AF_INET + copy(sa.Addr[:], src) +} diff --git a/vendor/golang.org/x/net/ipv4/sys_linux.go b/vendor/golang.org/x/net/ipv4/sys_linux.go new file mode 100644 index 0000000..c6c2a50 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_linux.go @@ -0,0 +1,55 @@ +// 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. + +package ipv4 + +import ( + "net" + "syscall" + "unsafe" +) + +var ( + ctlOpts = [ctlMax]ctlOpt{ + ctlTTL: {sysIP_TTL, 1, marshalTTL, parseTTL}, + ctlPacketInfo: {sysIP_PKTINFO, sizeofInetPktinfo, marshalPacketInfo, parsePacketInfo}, + } + + sockOpts = [ssoMax]sockOpt{ + ssoTOS: {sysIP_TOS, ssoTypeInt}, + ssoTTL: {sysIP_TTL, ssoTypeInt}, + ssoMulticastTTL: {sysIP_MULTICAST_TTL, ssoTypeInt}, + ssoMulticastInterface: {sysIP_MULTICAST_IF, ssoTypeIPMreqn}, + ssoMulticastLoopback: {sysIP_MULTICAST_LOOP, ssoTypeInt}, + ssoReceiveTTL: {sysIP_RECVTTL, ssoTypeInt}, + ssoPacketInfo: {sysIP_PKTINFO, ssoTypeInt}, + ssoHeaderPrepend: {sysIP_HDRINCL, ssoTypeInt}, + ssoICMPFilter: {sysICMP_FILTER, ssoTypeICMPFilter}, + ssoJoinGroup: {sysMCAST_JOIN_GROUP, ssoTypeGroupReq}, + ssoLeaveGroup: {sysMCAST_LEAVE_GROUP, ssoTypeGroupReq}, + ssoJoinSourceGroup: {sysMCAST_JOIN_SOURCE_GROUP, ssoTypeGroupSourceReq}, + ssoLeaveSourceGroup: {sysMCAST_LEAVE_SOURCE_GROUP, ssoTypeGroupSourceReq}, + ssoBlockSourceGroup: {sysMCAST_BLOCK_SOURCE, ssoTypeGroupSourceReq}, + ssoUnblockSourceGroup: {sysMCAST_UNBLOCK_SOURCE, ssoTypeGroupSourceReq}, + } +) + +func (pi *inetPktinfo) setIfindex(i int) { + pi.Ifindex = int32(i) +} + +func (gr *groupReq) setGroup(grp net.IP) { + sa := (*sockaddrInet)(unsafe.Pointer(&gr.Group)) + sa.Family = syscall.AF_INET + copy(sa.Addr[:], grp) +} + +func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { + sa := (*sockaddrInet)(unsafe.Pointer(&gsr.Group)) + sa.Family = syscall.AF_INET + copy(sa.Addr[:], grp) + sa = (*sockaddrInet)(unsafe.Pointer(&gsr.Source)) + sa.Family = syscall.AF_INET + copy(sa.Addr[:], src) +} diff --git a/vendor/golang.org/x/net/ipv4/sys_linux_386.s b/vendor/golang.org/x/net/ipv4/sys_linux_386.s new file mode 100644 index 0000000..b85551a --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_linux_386.s @@ -0,0 +1,8 @@ +// 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 ·socketcall(SB),NOSPLIT,$0-36 + JMP syscall·socketcall(SB) diff --git a/vendor/golang.org/x/net/ipv4/sys_openbsd.go b/vendor/golang.org/x/net/ipv4/sys_openbsd.go new file mode 100644 index 0000000..d78083a --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_openbsd.go @@ -0,0 +1,32 @@ +// 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. + +package ipv4 + +import ( + "net" + "syscall" +) + +var ( + ctlOpts = [ctlMax]ctlOpt{ + ctlTTL: {sysIP_RECVTTL, 1, marshalTTL, parseTTL}, + ctlDst: {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst}, + ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface}, + } + + sockOpts = [ssoMax]sockOpt{ + ssoTOS: {sysIP_TOS, ssoTypeInt}, + ssoTTL: {sysIP_TTL, ssoTypeInt}, + ssoMulticastTTL: {sysIP_MULTICAST_TTL, ssoTypeByte}, + ssoMulticastInterface: {sysIP_MULTICAST_IF, ssoTypeInterface}, + ssoMulticastLoopback: {sysIP_MULTICAST_LOOP, ssoTypeByte}, + ssoReceiveTTL: {sysIP_RECVTTL, ssoTypeInt}, + ssoReceiveDst: {sysIP_RECVDSTADDR, ssoTypeInt}, + ssoReceiveInterface: {sysIP_RECVIF, ssoTypeInt}, + ssoHeaderPrepend: {sysIP_HDRINCL, ssoTypeInt}, + ssoJoinGroup: {sysIP_ADD_MEMBERSHIP, ssoTypeIPMreq}, + ssoLeaveGroup: {sysIP_DROP_MEMBERSHIP, ssoTypeIPMreq}, + } +) diff --git a/vendor/golang.org/x/net/ipv4/sys_solaris.go b/vendor/golang.org/x/net/ipv4/sys_solaris.go new file mode 100644 index 0000000..879f39e --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_solaris.go @@ -0,0 +1,54 @@ +// 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 ipv4 + +import ( + "net" + "syscall" + "unsafe" +) + +var ( + ctlOpts = [ctlMax]ctlOpt{ + ctlTTL: {sysIP_RECVTTL, 4, marshalTTL, parseTTL}, + ctlPacketInfo: {sysIP_PKTINFO, sizeofInetPktinfo, marshalPacketInfo, parsePacketInfo}, + } + + sockOpts = [ssoMax]sockOpt{ + ssoTOS: {sysIP_TOS, ssoTypeInt}, + ssoTTL: {sysIP_TTL, ssoTypeInt}, + ssoMulticastTTL: {sysIP_MULTICAST_TTL, ssoTypeByte}, + ssoMulticastInterface: {sysIP_MULTICAST_IF, ssoTypeInterface}, + ssoMulticastLoopback: {sysIP_MULTICAST_LOOP, ssoTypeByte}, + ssoReceiveTTL: {sysIP_RECVTTL, ssoTypeInt}, + ssoPacketInfo: {sysIP_RECVPKTINFO, ssoTypeInt}, + ssoHeaderPrepend: {sysIP_HDRINCL, ssoTypeInt}, + ssoJoinGroup: {sysMCAST_JOIN_GROUP, ssoTypeGroupReq}, + ssoLeaveGroup: {sysMCAST_LEAVE_GROUP, ssoTypeGroupReq}, + ssoJoinSourceGroup: {sysMCAST_JOIN_SOURCE_GROUP, ssoTypeGroupSourceReq}, + ssoLeaveSourceGroup: {sysMCAST_LEAVE_SOURCE_GROUP, ssoTypeGroupSourceReq}, + ssoBlockSourceGroup: {sysMCAST_BLOCK_SOURCE, ssoTypeGroupSourceReq}, + ssoUnblockSourceGroup: {sysMCAST_UNBLOCK_SOURCE, ssoTypeGroupSourceReq}, + } +) + +func (pi *inetPktinfo) setIfindex(i int) { + pi.Ifindex = uint32(i) +} + +func (gr *groupReq) setGroup(grp net.IP) { + sa := (*sockaddrInet)(unsafe.Pointer(uintptr(unsafe.Pointer(gr)) + 4)) + sa.Family = syscall.AF_INET + copy(sa.Addr[:], grp) +} + +func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { + sa := (*sockaddrInet)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 4)) + sa.Family = syscall.AF_INET + copy(sa.Addr[:], grp) + sa = (*sockaddrInet)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 260)) + sa.Family = syscall.AF_INET + copy(sa.Addr[:], src) +} diff --git a/vendor/golang.org/x/net/ipv4/sys_solaris_amd64.s b/vendor/golang.org/x/net/ipv4/sys_solaris_amd64.s new file mode 100644 index 0000000..39d76af --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_solaris_amd64.s @@ -0,0 +1,8 @@ +// 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. + +#include "textflag.h" + +TEXT ·sysvicall6(SB),NOSPLIT,$0-88 + JMP syscall·sysvicall6(SB) diff --git a/vendor/golang.org/x/net/ipv4/sys_stub.go b/vendor/golang.org/x/net/ipv4/sys_stub.go new file mode 100644 index 0000000..d6dd812 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_stub.go @@ -0,0 +1,13 @@ +// 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 nacl plan9 + +package ipv4 + +var ( + ctlOpts = [ctlMax]ctlOpt{} + + sockOpts = [ssoMax]sockOpt{} +) diff --git a/vendor/golang.org/x/net/ipv4/sys_windows.go b/vendor/golang.org/x/net/ipv4/sys_windows.go new file mode 100644 index 0000000..3f4c535 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_windows.go @@ -0,0 +1,61 @@ +// 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. + +package ipv4 + +const ( + // See ws2tcpip.h. + sysIP_OPTIONS = 0x1 + sysIP_HDRINCL = 0x2 + sysIP_TOS = 0x3 + sysIP_TTL = 0x4 + sysIP_MULTICAST_IF = 0x9 + sysIP_MULTICAST_TTL = 0xa + sysIP_MULTICAST_LOOP = 0xb + sysIP_ADD_MEMBERSHIP = 0xc + sysIP_DROP_MEMBERSHIP = 0xd + sysIP_DONTFRAGMENT = 0xe + sysIP_ADD_SOURCE_MEMBERSHIP = 0xf + sysIP_DROP_SOURCE_MEMBERSHIP = 0x10 + sysIP_PKTINFO = 0x13 + + sizeofInetPktinfo = 0x8 + sizeofIPMreq = 0x8 + sizeofIPMreqSource = 0xc +) + +type inetPktinfo struct { + Addr [4]byte + Ifindex int32 +} + +type ipMreq struct { + Multiaddr [4]byte + Interface [4]byte +} + +type ipMreqSource struct { + Multiaddr [4]byte + Sourceaddr [4]byte + Interface [4]byte +} + +// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms738586(v=vs.85).aspx +var ( + ctlOpts = [ctlMax]ctlOpt{} + + sockOpts = [ssoMax]sockOpt{ + ssoTOS: {sysIP_TOS, ssoTypeInt}, + ssoTTL: {sysIP_TTL, ssoTypeInt}, + ssoMulticastTTL: {sysIP_MULTICAST_TTL, ssoTypeInt}, + ssoMulticastInterface: {sysIP_MULTICAST_IF, ssoTypeInterface}, + ssoMulticastLoopback: {sysIP_MULTICAST_LOOP, ssoTypeInt}, + ssoJoinGroup: {sysIP_ADD_MEMBERSHIP, ssoTypeIPMreq}, + ssoLeaveGroup: {sysIP_DROP_MEMBERSHIP, ssoTypeIPMreq}, + } +) + +func (pi *inetPktinfo) setIfindex(i int) { + pi.Ifindex = int32(i) +} diff --git a/vendor/golang.org/x/net/ipv4/syscall_linux_386.go b/vendor/golang.org/x/net/ipv4/syscall_linux_386.go new file mode 100644 index 0000000..84f60bf --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/syscall_linux_386.go @@ -0,0 +1,31 @@ +// 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. + +package ipv4 + +import ( + "syscall" + "unsafe" +) + +const ( + sysGETSOCKOPT = 0xf + sysSETSOCKOPT = 0xe +) + +func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) + +func getsockopt(s uintptr, level, name int, v unsafe.Pointer, l *uint32) error { + if _, errno := socketcall(sysGETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(v), uintptr(unsafe.Pointer(l)), 0); errno != 0 { + return error(errno) + } + return nil +} + +func setsockopt(s uintptr, level, name int, v unsafe.Pointer, l uint32) error { + if _, errno := socketcall(sysSETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(v), uintptr(l), 0); errno != 0 { + return error(errno) + } + return nil +} diff --git a/vendor/golang.org/x/net/ipv4/syscall_solaris.go b/vendor/golang.org/x/net/ipv4/syscall_solaris.go new file mode 100644 index 0000000..8b0e1e4 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/syscall_solaris.go @@ -0,0 +1,38 @@ +// 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 ipv4 + +import ( + "syscall" + "unsafe" +) + +//go:cgo_import_dynamic libc___xnet_getsockopt __xnet_getsockopt "libsocket.so" +//go:cgo_import_dynamic libc_setsockopt setsockopt "libsocket.so" + +//go:linkname procGetsockopt libc___xnet_getsockopt +//go:linkname procSetsockopt libc_setsockopt + +var ( + procGetsockopt uintptr + procSetsockopt uintptr +) + +func sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (uintptr, uintptr, syscall.Errno) + +func getsockopt(s uintptr, level, name int, v unsafe.Pointer, l *uint32) error { + _, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procGetsockopt)), 5, s, uintptr(level), uintptr(name), uintptr(v), uintptr(unsafe.Pointer(l)), 0) + if errno != 0 { + return error(errno) + } + return nil +} + +func setsockopt(s uintptr, level, name int, v unsafe.Pointer, l uint32) error { + if _, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procSetsockopt)), 5, s, uintptr(level), uintptr(name), uintptr(v), uintptr(l), 0); errno != 0 { + return error(errno) + } + return nil +} diff --git a/vendor/golang.org/x/net/ipv4/syscall_unix.go b/vendor/golang.org/x/net/ipv4/syscall_unix.go new file mode 100644 index 0000000..d952763 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/syscall_unix.go @@ -0,0 +1,26 @@ +// 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,!386 netbsd openbsd + +package ipv4 + +import ( + "syscall" + "unsafe" +) + +func getsockopt(s uintptr, level, name int, v unsafe.Pointer, l *uint32) error { + if _, _, errno := syscall.Syscall6(syscall.SYS_GETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(v), uintptr(unsafe.Pointer(l)), 0); errno != 0 { + return error(errno) + } + return nil +} + +func setsockopt(s uintptr, level, name int, v unsafe.Pointer, l uint32) error { + if _, _, errno := syscall.Syscall6(syscall.SYS_SETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(v), uintptr(l), 0); errno != 0 { + return error(errno) + } + return nil +} diff --git a/vendor/golang.org/x/net/ipv4/syscall_windows.go b/vendor/golang.org/x/net/ipv4/syscall_windows.go new file mode 100644 index 0000000..0f42d22 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/syscall_windows.go @@ -0,0 +1,18 @@ +// 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 ipv4 + +import ( + "syscall" + "unsafe" +) + +func getsockopt(s uintptr, level, name int, v unsafe.Pointer, l *uint32) error { + return syscall.Getsockopt(syscall.Handle(s), int32(level), int32(name), (*byte)(v), (*int32)(unsafe.Pointer(l))) +} + +func setsockopt(s uintptr, level, name int, v unsafe.Pointer, l uint32) error { + return syscall.Setsockopt(syscall.Handle(s), int32(level), int32(name), (*byte)(v), int32(l)) +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_darwin.go b/vendor/golang.org/x/net/ipv4/zsys_darwin.go new file mode 100644 index 0000000..c07cc88 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_darwin.go @@ -0,0 +1,99 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_darwin.go + +package ipv4 + +const ( + sysIP_OPTIONS = 0x1 + sysIP_HDRINCL = 0x2 + sysIP_TOS = 0x3 + sysIP_TTL = 0x4 + sysIP_RECVOPTS = 0x5 + sysIP_RECVRETOPTS = 0x6 + sysIP_RECVDSTADDR = 0x7 + sysIP_RETOPTS = 0x8 + sysIP_RECVIF = 0x14 + sysIP_STRIPHDR = 0x17 + sysIP_RECVTTL = 0x18 + sysIP_BOUND_IF = 0x19 + sysIP_PKTINFO = 0x1a + sysIP_RECVPKTINFO = 0x1a + + sysIP_MULTICAST_IF = 0x9 + sysIP_MULTICAST_TTL = 0xa + sysIP_MULTICAST_LOOP = 0xb + sysIP_ADD_MEMBERSHIP = 0xc + sysIP_DROP_MEMBERSHIP = 0xd + sysIP_MULTICAST_VIF = 0xe + sysIP_MULTICAST_IFINDEX = 0x42 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x46 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x47 + sysIP_BLOCK_SOURCE = 0x48 + sysIP_UNBLOCK_SOURCE = 0x49 + sysMCAST_JOIN_GROUP = 0x50 + sysMCAST_LEAVE_GROUP = 0x51 + sysMCAST_JOIN_SOURCE_GROUP = 0x52 + sysMCAST_LEAVE_SOURCE_GROUP = 0x53 + sysMCAST_BLOCK_SOURCE = 0x54 + sysMCAST_UNBLOCK_SOURCE = 0x55 + + sizeofSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x84 + sizeofGroupSourceReq = 0x104 +) + +type sockaddrStorage struct { + Len uint8 + Family uint8 + X__ss_pad1 [6]int8 + X__ss_align int64 + X__ss_pad2 [112]int8 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type inetPktinfo struct { + Ifindex uint32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr [4]byte /* in_addr */ + Sourceaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [128]byte +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [128]byte + Pad_cgo_1 [128]byte +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_dragonfly.go b/vendor/golang.org/x/net/ipv4/zsys_dragonfly.go new file mode 100644 index 0000000..c4365e9 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_dragonfly.go @@ -0,0 +1,31 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_dragonfly.go + +package ipv4 + +const ( + sysIP_OPTIONS = 0x1 + sysIP_HDRINCL = 0x2 + sysIP_TOS = 0x3 + sysIP_TTL = 0x4 + sysIP_RECVOPTS = 0x5 + sysIP_RECVRETOPTS = 0x6 + sysIP_RECVDSTADDR = 0x7 + sysIP_RETOPTS = 0x8 + sysIP_RECVIF = 0x14 + sysIP_RECVTTL = 0x41 + + sysIP_MULTICAST_IF = 0x9 + sysIP_MULTICAST_TTL = 0xa + sysIP_MULTICAST_LOOP = 0xb + sysIP_MULTICAST_VIF = 0xe + sysIP_ADD_MEMBERSHIP = 0xc + sysIP_DROP_MEMBERSHIP = 0xd + + sizeofIPMreq = 0x8 +) + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go b/vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go new file mode 100644 index 0000000..8c4aec9 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go @@ -0,0 +1,93 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_freebsd.go + +package ipv4 + +const ( + sysIP_OPTIONS = 0x1 + sysIP_HDRINCL = 0x2 + sysIP_TOS = 0x3 + sysIP_TTL = 0x4 + sysIP_RECVOPTS = 0x5 + sysIP_RECVRETOPTS = 0x6 + sysIP_RECVDSTADDR = 0x7 + sysIP_SENDSRCADDR = 0x7 + sysIP_RETOPTS = 0x8 + sysIP_RECVIF = 0x14 + sysIP_ONESBCAST = 0x17 + sysIP_BINDANY = 0x18 + sysIP_RECVTTL = 0x41 + sysIP_MINTTL = 0x42 + sysIP_DONTFRAG = 0x43 + sysIP_RECVTOS = 0x44 + + sysIP_MULTICAST_IF = 0x9 + sysIP_MULTICAST_TTL = 0xa + sysIP_MULTICAST_LOOP = 0xb + sysIP_ADD_MEMBERSHIP = 0xc + sysIP_DROP_MEMBERSHIP = 0xd + sysIP_MULTICAST_VIF = 0xe + sysIP_ADD_SOURCE_MEMBERSHIP = 0x46 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x47 + sysIP_BLOCK_SOURCE = 0x48 + sysIP_UNBLOCK_SOURCE = 0x49 + sysMCAST_JOIN_GROUP = 0x50 + sysMCAST_LEAVE_GROUP = 0x51 + sysMCAST_JOIN_SOURCE_GROUP = 0x52 + sysMCAST_LEAVE_SOURCE_GROUP = 0x53 + sysMCAST_BLOCK_SOURCE = 0x54 + sysMCAST_UNBLOCK_SOURCE = 0x55 + + sizeofSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x84 + sizeofGroupSourceReq = 0x104 +) + +type sockaddrStorage struct { + Len uint8 + Family uint8 + X__ss_pad1 [6]int8 + X__ss_align int64 + X__ss_pad2 [112]int8 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr [4]byte /* in_addr */ + Sourceaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type groupReq struct { + Interface uint32 + Group sockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group sockaddrStorage + Source sockaddrStorage +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go b/vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go new file mode 100644 index 0000000..4b10b7c --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go @@ -0,0 +1,95 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_freebsd.go + +package ipv4 + +const ( + sysIP_OPTIONS = 0x1 + sysIP_HDRINCL = 0x2 + sysIP_TOS = 0x3 + sysIP_TTL = 0x4 + sysIP_RECVOPTS = 0x5 + sysIP_RECVRETOPTS = 0x6 + sysIP_RECVDSTADDR = 0x7 + sysIP_SENDSRCADDR = 0x7 + sysIP_RETOPTS = 0x8 + sysIP_RECVIF = 0x14 + sysIP_ONESBCAST = 0x17 + sysIP_BINDANY = 0x18 + sysIP_RECVTTL = 0x41 + sysIP_MINTTL = 0x42 + sysIP_DONTFRAG = 0x43 + sysIP_RECVTOS = 0x44 + + sysIP_MULTICAST_IF = 0x9 + sysIP_MULTICAST_TTL = 0xa + sysIP_MULTICAST_LOOP = 0xb + sysIP_ADD_MEMBERSHIP = 0xc + sysIP_DROP_MEMBERSHIP = 0xd + sysIP_MULTICAST_VIF = 0xe + sysIP_ADD_SOURCE_MEMBERSHIP = 0x46 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x47 + sysIP_BLOCK_SOURCE = 0x48 + sysIP_UNBLOCK_SOURCE = 0x49 + sysMCAST_JOIN_GROUP = 0x50 + sysMCAST_LEAVE_GROUP = 0x51 + sysMCAST_JOIN_SOURCE_GROUP = 0x52 + sysMCAST_LEAVE_SOURCE_GROUP = 0x53 + sysMCAST_BLOCK_SOURCE = 0x54 + sysMCAST_UNBLOCK_SOURCE = 0x55 + + sizeofSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 +) + +type sockaddrStorage struct { + Len uint8 + Family uint8 + X__ss_pad1 [6]int8 + X__ss_align int64 + X__ss_pad2 [112]int8 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr [4]byte /* in_addr */ + Sourceaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group sockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group sockaddrStorage + Source sockaddrStorage +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go b/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go new file mode 100644 index 0000000..4b10b7c --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go @@ -0,0 +1,95 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_freebsd.go + +package ipv4 + +const ( + sysIP_OPTIONS = 0x1 + sysIP_HDRINCL = 0x2 + sysIP_TOS = 0x3 + sysIP_TTL = 0x4 + sysIP_RECVOPTS = 0x5 + sysIP_RECVRETOPTS = 0x6 + sysIP_RECVDSTADDR = 0x7 + sysIP_SENDSRCADDR = 0x7 + sysIP_RETOPTS = 0x8 + sysIP_RECVIF = 0x14 + sysIP_ONESBCAST = 0x17 + sysIP_BINDANY = 0x18 + sysIP_RECVTTL = 0x41 + sysIP_MINTTL = 0x42 + sysIP_DONTFRAG = 0x43 + sysIP_RECVTOS = 0x44 + + sysIP_MULTICAST_IF = 0x9 + sysIP_MULTICAST_TTL = 0xa + sysIP_MULTICAST_LOOP = 0xb + sysIP_ADD_MEMBERSHIP = 0xc + sysIP_DROP_MEMBERSHIP = 0xd + sysIP_MULTICAST_VIF = 0xe + sysIP_ADD_SOURCE_MEMBERSHIP = 0x46 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x47 + sysIP_BLOCK_SOURCE = 0x48 + sysIP_UNBLOCK_SOURCE = 0x49 + sysMCAST_JOIN_GROUP = 0x50 + sysMCAST_LEAVE_GROUP = 0x51 + sysMCAST_JOIN_SOURCE_GROUP = 0x52 + sysMCAST_LEAVE_SOURCE_GROUP = 0x53 + sysMCAST_BLOCK_SOURCE = 0x54 + sysMCAST_UNBLOCK_SOURCE = 0x55 + + sizeofSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 +) + +type sockaddrStorage struct { + Len uint8 + Family uint8 + X__ss_pad1 [6]int8 + X__ss_align int64 + X__ss_pad2 [112]int8 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr [4]byte /* in_addr */ + Sourceaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group sockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group sockaddrStorage + Source sockaddrStorage +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_386.go b/vendor/golang.org/x/net/ipv4/zsys_linux_386.go new file mode 100644 index 0000000..4da6720 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_386.go @@ -0,0 +1,146 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sysSOL_SOCKET = 0x1 + sysSO_ATTACH_FILTER = 0x1a + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x84 + sizeofGroupSourceReq = 0x104 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} + +type sockFProg struct { + Len uint16 + Pad_cgo_0 [2]byte + Filter *sockFilter +} + +type sockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go new file mode 100644 index 0000000..65945bb --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go @@ -0,0 +1,148 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sysSOL_SOCKET = 0x1 + sysSO_ATTACH_FILTER = 0x1a + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} + +type sockFProg struct { + Len uint16 + Pad_cgo_0 [6]byte + Filter *sockFilter +} + +type sockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go b/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go new file mode 100644 index 0000000..4da6720 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go @@ -0,0 +1,146 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sysSOL_SOCKET = 0x1 + sysSO_ATTACH_FILTER = 0x1a + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x84 + sizeofGroupSourceReq = 0x104 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} + +type sockFProg struct { + Len uint16 + Pad_cgo_0 [2]byte + Filter *sockFilter +} + +type sockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go new file mode 100644 index 0000000..65945bb --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go @@ -0,0 +1,148 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sysSOL_SOCKET = 0x1 + sysSO_ATTACH_FILTER = 0x1a + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} + +type sockFProg struct { + Len uint16 + Pad_cgo_0 [6]byte + Filter *sockFilter +} + +type sockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go new file mode 100644 index 0000000..65945bb --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go @@ -0,0 +1,148 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sysSOL_SOCKET = 0x1 + sysSO_ATTACH_FILTER = 0x1a + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} + +type sockFProg struct { + Len uint16 + Pad_cgo_0 [6]byte + Filter *sockFilter +} + +type sockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go b/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go new file mode 100644 index 0000000..65945bb --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go @@ -0,0 +1,148 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sysSOL_SOCKET = 0x1 + sysSO_ATTACH_FILTER = 0x1a + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} + +type sockFProg struct { + Len uint16 + Pad_cgo_0 [6]byte + Filter *sockFilter +} + +type sockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go new file mode 100644 index 0000000..b825a18 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go @@ -0,0 +1,146 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sysSOL_SOCKET = 0x1 + sysSO_ATTACH_FILTER = 0x1a + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x84 + sizeofGroupSourceReq = 0x104 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]uint8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} + +type sockFProg struct { + Len uint16 + Pad_cgo_0 [2]byte + Filter *sockFilter +} + +type sockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go new file mode 100644 index 0000000..65945bb --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go @@ -0,0 +1,148 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sysSOL_SOCKET = 0x1 + sysSO_ATTACH_FILTER = 0x1a + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} + +type sockFProg struct { + Len uint16 + Pad_cgo_0 [6]byte + Filter *sockFilter +} + +type sockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go new file mode 100644 index 0000000..65945bb --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go @@ -0,0 +1,148 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sysSOL_SOCKET = 0x1 + sysSO_ATTACH_FILTER = 0x1a + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} + +type sockFProg struct { + Len uint16 + Pad_cgo_0 [6]byte + Filter *sockFilter +} + +type sockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go b/vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go new file mode 100644 index 0000000..65945bb --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go @@ -0,0 +1,148 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sysSOL_SOCKET = 0x1 + sysSO_ATTACH_FILTER = 0x1a + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} + +type sockFProg struct { + Len uint16 + Pad_cgo_0 [6]byte + Filter *sockFilter +} + +type sockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_netbsd.go b/vendor/golang.org/x/net/ipv4/zsys_netbsd.go new file mode 100644 index 0000000..fd3624d --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_netbsd.go @@ -0,0 +1,30 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_netbsd.go + +package ipv4 + +const ( + sysIP_OPTIONS = 0x1 + sysIP_HDRINCL = 0x2 + sysIP_TOS = 0x3 + sysIP_TTL = 0x4 + sysIP_RECVOPTS = 0x5 + sysIP_RECVRETOPTS = 0x6 + sysIP_RECVDSTADDR = 0x7 + sysIP_RETOPTS = 0x8 + sysIP_RECVIF = 0x14 + sysIP_RECVTTL = 0x17 + + sysIP_MULTICAST_IF = 0x9 + sysIP_MULTICAST_TTL = 0xa + sysIP_MULTICAST_LOOP = 0xb + sysIP_ADD_MEMBERSHIP = 0xc + sysIP_DROP_MEMBERSHIP = 0xd + + sizeofIPMreq = 0x8 +) + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_openbsd.go b/vendor/golang.org/x/net/ipv4/zsys_openbsd.go new file mode 100644 index 0000000..12f36be --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_openbsd.go @@ -0,0 +1,30 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_openbsd.go + +package ipv4 + +const ( + sysIP_OPTIONS = 0x1 + sysIP_HDRINCL = 0x2 + sysIP_TOS = 0x3 + sysIP_TTL = 0x4 + sysIP_RECVOPTS = 0x5 + sysIP_RECVRETOPTS = 0x6 + sysIP_RECVDSTADDR = 0x7 + sysIP_RETOPTS = 0x8 + sysIP_RECVIF = 0x1e + sysIP_RECVTTL = 0x1f + + sysIP_MULTICAST_IF = 0x9 + sysIP_MULTICAST_TTL = 0xa + sysIP_MULTICAST_LOOP = 0xb + sysIP_ADD_MEMBERSHIP = 0xc + sysIP_DROP_MEMBERSHIP = 0xd + + sizeofIPMreq = 0x8 +) + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_solaris.go b/vendor/golang.org/x/net/ipv4/zsys_solaris.go new file mode 100644 index 0000000..0a3875c --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_solaris.go @@ -0,0 +1,100 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_solaris.go + +package ipv4 + +const ( + sysIP_OPTIONS = 0x1 + sysIP_HDRINCL = 0x2 + sysIP_TOS = 0x3 + sysIP_TTL = 0x4 + sysIP_RECVOPTS = 0x5 + sysIP_RECVRETOPTS = 0x6 + sysIP_RECVDSTADDR = 0x7 + sysIP_RETOPTS = 0x8 + sysIP_RECVIF = 0x9 + sysIP_RECVSLLA = 0xa + sysIP_RECVTTL = 0xb + + sysIP_MULTICAST_IF = 0x10 + sysIP_MULTICAST_TTL = 0x11 + sysIP_MULTICAST_LOOP = 0x12 + sysIP_ADD_MEMBERSHIP = 0x13 + sysIP_DROP_MEMBERSHIP = 0x14 + sysIP_BLOCK_SOURCE = 0x15 + sysIP_UNBLOCK_SOURCE = 0x16 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x17 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x18 + sysIP_NEXTHOP = 0x19 + + sysIP_PKTINFO = 0x1a + sysIP_RECVPKTINFO = 0x1a + sysIP_DONTFRAG = 0x1b + + sysIP_BOUND_IF = 0x41 + sysIP_UNSPEC_SRC = 0x42 + sysIP_BROADCAST_TTL = 0x43 + sysIP_DHCPINIT_IF = 0x45 + + sysIP_REUSEADDR = 0x104 + sysIP_DONTROUTE = 0x105 + sysIP_BROADCAST = 0x106 + + sysMCAST_JOIN_GROUP = 0x29 + sysMCAST_LEAVE_GROUP = 0x2a + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_JOIN_SOURCE_GROUP = 0x2d + sysMCAST_LEAVE_SOURCE_GROUP = 0x2e + + sizeofSockaddrStorage = 0x100 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + + sizeofIPMreq = 0x8 + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x104 + sizeofGroupSourceReq = 0x204 +) + +type sockaddrStorage struct { + Family uint16 + X_ss_pad1 [6]int8 + X_ss_align float64 + X_ss_pad2 [240]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type inetPktinfo struct { + Ifindex uint32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqSource struct { + Multiaddr [4]byte /* in_addr */ + Sourceaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [256]byte +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [256]byte + Pad_cgo_1 [256]byte +} diff --git a/vendor/golang.org/x/net/lex/httplex/httplex.go b/vendor/golang.org/x/net/lex/httplex/httplex.go new file mode 100644 index 0000000..20f2b89 --- /dev/null +++ b/vendor/golang.org/x/net/lex/httplex/httplex.go @@ -0,0 +1,351 @@ +// 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 httplex contains rules around lexical matters of various +// HTTP-related specifications. +// +// This package is shared by the standard library (which vendors it) +// and x/net/http2. It comes with no API stability promise. +package httplex + +import ( + "net" + "strings" + "unicode/utf8" + + "golang.org/x/net/idna" +) + +var isTokenTable = [127]bool{ + '!': true, + '#': true, + '$': true, + '%': true, + '&': true, + '\'': true, + '*': true, + '+': true, + '-': true, + '.': true, + '0': true, + '1': true, + '2': true, + '3': true, + '4': true, + '5': true, + '6': true, + '7': true, + '8': true, + '9': true, + 'A': true, + 'B': true, + 'C': true, + 'D': true, + 'E': true, + 'F': true, + 'G': true, + 'H': true, + 'I': true, + 'J': true, + 'K': true, + 'L': true, + 'M': true, + 'N': true, + 'O': true, + 'P': true, + 'Q': true, + 'R': true, + 'S': true, + 'T': true, + 'U': true, + 'W': true, + 'V': true, + 'X': true, + 'Y': true, + 'Z': true, + '^': true, + '_': true, + '`': true, + 'a': true, + 'b': true, + 'c': true, + 'd': true, + 'e': true, + 'f': true, + 'g': true, + 'h': true, + 'i': true, + 'j': true, + 'k': true, + 'l': true, + 'm': true, + 'n': true, + 'o': true, + 'p': true, + 'q': true, + 'r': true, + 's': true, + 't': true, + 'u': true, + 'v': true, + 'w': true, + 'x': true, + 'y': true, + 'z': true, + '|': true, + '~': true, +} + +func IsTokenRune(r rune) bool { + i := int(r) + return i < len(isTokenTable) && isTokenTable[i] +} + +func isNotToken(r rune) bool { + return !IsTokenRune(r) +} + +// HeaderValuesContainsToken reports whether any string in values +// contains the provided token, ASCII case-insensitively. +func HeaderValuesContainsToken(values []string, token string) bool { + for _, v := range values { + if headerValueContainsToken(v, token) { + return true + } + } + return false +} + +// isOWS reports whether b is an optional whitespace byte, as defined +// by RFC 7230 section 3.2.3. +func isOWS(b byte) bool { return b == ' ' || b == '\t' } + +// trimOWS returns x with all optional whitespace removes from the +// beginning and end. +func trimOWS(x string) string { + // TODO: consider using strings.Trim(x, " \t") instead, + // if and when it's fast enough. See issue 10292. + // But this ASCII-only code will probably always beat UTF-8 + // aware code. + for len(x) > 0 && isOWS(x[0]) { + x = x[1:] + } + for len(x) > 0 && isOWS(x[len(x)-1]) { + x = x[:len(x)-1] + } + return x +} + +// headerValueContainsToken reports whether v (assumed to be a +// 0#element, in the ABNF extension described in RFC 7230 section 7) +// contains token amongst its comma-separated tokens, ASCII +// case-insensitively. +func headerValueContainsToken(v string, token string) bool { + v = trimOWS(v) + if comma := strings.IndexByte(v, ','); comma != -1 { + return tokenEqual(trimOWS(v[:comma]), token) || headerValueContainsToken(v[comma+1:], token) + } + return tokenEqual(v, token) +} + +// lowerASCII returns the ASCII lowercase version of b. +func lowerASCII(b byte) byte { + if 'A' <= b && b <= 'Z' { + return b + ('a' - 'A') + } + return b +} + +// tokenEqual reports whether t1 and t2 are equal, ASCII case-insensitively. +func tokenEqual(t1, t2 string) bool { + if len(t1) != len(t2) { + return false + } + for i, b := range t1 { + if b >= utf8.RuneSelf { + // No UTF-8 or non-ASCII allowed in tokens. + return false + } + if lowerASCII(byte(b)) != lowerASCII(t2[i]) { + return false + } + } + return true +} + +// isLWS reports whether b is linear white space, according +// to http://www.w3.org/Protocols/rfc2616/rfc2616-sec2.html#sec2.2 +// LWS = [CRLF] 1*( SP | HT ) +func isLWS(b byte) bool { return b == ' ' || b == '\t' } + +// isCTL reports whether b is a control byte, according +// to http://www.w3.org/Protocols/rfc2616/rfc2616-sec2.html#sec2.2 +// CTL = +func isCTL(b byte) bool { + const del = 0x7f // a CTL + return b < ' ' || b == del +} + +// ValidHeaderFieldName reports whether v is a valid HTTP/1.x header name. +// HTTP/2 imposes the additional restriction that uppercase ASCII +// letters are not allowed. +// +// RFC 7230 says: +// header-field = field-name ":" OWS field-value OWS +// field-name = token +// token = 1*tchar +// tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*" / "+" / "-" / "." / +// "^" / "_" / "`" / "|" / "~" / DIGIT / ALPHA +func ValidHeaderFieldName(v string) bool { + if len(v) == 0 { + return false + } + for _, r := range v { + if !IsTokenRune(r) { + return false + } + } + return true +} + +// ValidHostHeader reports whether h is a valid host header. +func ValidHostHeader(h string) bool { + // The latest spec is actually this: + // + // http://tools.ietf.org/html/rfc7230#section-5.4 + // Host = uri-host [ ":" port ] + // + // Where uri-host is: + // http://tools.ietf.org/html/rfc3986#section-3.2.2 + // + // But we're going to be much more lenient for now and just + // search for any byte that's not a valid byte in any of those + // expressions. + for i := 0; i < len(h); i++ { + if !validHostByte[h[i]] { + return false + } + } + return true +} + +// See the validHostHeader comment. +var validHostByte = [256]bool{ + '0': true, '1': true, '2': true, '3': true, '4': true, '5': true, '6': true, '7': true, + '8': true, '9': true, + + 'a': true, 'b': true, 'c': true, 'd': true, 'e': true, 'f': true, 'g': true, 'h': true, + 'i': true, 'j': true, 'k': true, 'l': true, 'm': true, 'n': true, 'o': true, 'p': true, + 'q': true, 'r': true, 's': true, 't': true, 'u': true, 'v': true, 'w': true, 'x': true, + 'y': true, 'z': true, + + 'A': true, 'B': true, 'C': true, 'D': true, 'E': true, 'F': true, 'G': true, 'H': true, + 'I': true, 'J': true, 'K': true, 'L': true, 'M': true, 'N': true, 'O': true, 'P': true, + 'Q': true, 'R': true, 'S': true, 'T': true, 'U': true, 'V': true, 'W': true, 'X': true, + 'Y': true, 'Z': true, + + '!': true, // sub-delims + '$': true, // sub-delims + '%': true, // pct-encoded (and used in IPv6 zones) + '&': true, // sub-delims + '(': true, // sub-delims + ')': true, // sub-delims + '*': true, // sub-delims + '+': true, // sub-delims + ',': true, // sub-delims + '-': true, // unreserved + '.': true, // unreserved + ':': true, // IPv6address + Host expression's optional port + ';': true, // sub-delims + '=': true, // sub-delims + '[': true, + '\'': true, // sub-delims + ']': true, + '_': true, // unreserved + '~': true, // unreserved +} + +// ValidHeaderFieldValue reports whether v is a valid "field-value" according to +// http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2 : +// +// message-header = field-name ":" [ field-value ] +// field-value = *( field-content | LWS ) +// field-content = +// +// http://www.w3.org/Protocols/rfc2616/rfc2616-sec2.html#sec2.2 : +// +// TEXT = +// LWS = [CRLF] 1*( SP | HT ) +// CTL = +// +// RFC 7230 says: +// field-value = *( field-content / obs-fold ) +// obj-fold = N/A to http2, and deprecated +// field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ] +// field-vchar = VCHAR / obs-text +// obs-text = %x80-FF +// VCHAR = "any visible [USASCII] character" +// +// http2 further says: "Similarly, HTTP/2 allows header field values +// that are not valid. While most of the values that can be encoded +// will not alter header field parsing, carriage return (CR, ASCII +// 0xd), line feed (LF, ASCII 0xa), and the zero character (NUL, ASCII +// 0x0) might be exploited by an attacker if they are translated +// verbatim. Any request or response that contains a character not +// permitted in a header field value MUST be treated as malformed +// (Section 8.1.2.6). Valid characters are defined by the +// field-content ABNF rule in Section 3.2 of [RFC7230]." +// +// This function does not (yet?) properly handle the rejection of +// strings that begin or end with SP or HTAB. +func ValidHeaderFieldValue(v string) bool { + for i := 0; i < len(v); i++ { + b := v[i] + if isCTL(b) && !isLWS(b) { + return false + } + } + return true +} + +func isASCII(s string) bool { + for i := 0; i < len(s); i++ { + if s[i] >= utf8.RuneSelf { + return false + } + } + return true +} + +// PunycodeHostPort returns the IDNA Punycode version +// of the provided "host" or "host:port" string. +func PunycodeHostPort(v string) (string, error) { + if isASCII(v) { + return v, nil + } + + host, port, err := net.SplitHostPort(v) + if err != nil { + // The input 'v' argument was just a "host" argument, + // without a port. This error should not be returned + // to the caller. + host = v + port = "" + } + host, err = idna.ToASCII(host) + if err != nil { + // Non-UTF-8? Not representable in Punycode, in any + // case. + return "", err + } + if port == "" { + return host, nil + } + return net.JoinHostPort(host, port), nil +} diff --git a/vendor/golang.org/x/tools/LICENSE b/vendor/golang.org/x/tools/LICENSE new file mode 100644 index 0000000..6a66aea --- /dev/null +++ b/vendor/golang.org/x/tools/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2009 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/golang.org/x/tools/PATENTS b/vendor/golang.org/x/tools/PATENTS new file mode 100644 index 0000000..7330990 --- /dev/null +++ b/vendor/golang.org/x/tools/PATENTS @@ -0,0 +1,22 @@ +Additional IP Rights Grant (Patents) + +"This implementation" means the copyrightable works distributed by +Google as part of the Go project. + +Google hereby grants to You a perpetual, worldwide, non-exclusive, +no-charge, royalty-free, irrevocable (except as stated in this section) +patent license to make, have made, use, offer to sell, sell, import, +transfer and otherwise run, modify and propagate the contents of this +implementation of Go, where such license applies only to those patent +claims, both currently owned or controlled by Google and acquired in +the future, licensable by Google that are necessarily infringed by this +implementation of Go. This grant does not include claims that would be +infringed only as a consequence of further modification of this +implementation. If you or your agent or exclusive licensee institute or +order or agree to the institution of patent litigation against any +entity (including a cross-claim or counterclaim in a lawsuit) alleging +that this implementation of Go or any code incorporated within this +implementation of Go constitutes direct or contributory patent +infringement, or inducement of patent infringement, then any patent +rights granted to you under this License for this implementation of Go +shall terminate as of the date such litigation is filed. diff --git a/vendor/golang.org/x/tools/go/ast/astutil/enclosing.go b/vendor/golang.org/x/tools/go/ast/astutil/enclosing.go new file mode 100644 index 0000000..6b7052b --- /dev/null +++ b/vendor/golang.org/x/tools/go/ast/astutil/enclosing.go @@ -0,0 +1,627 @@ +// 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. + +package astutil + +// This file defines utilities for working with source positions. + +import ( + "fmt" + "go/ast" + "go/token" + "sort" +) + +// PathEnclosingInterval returns the node that encloses the source +// interval [start, end), and all its ancestors up to the AST root. +// +// The definition of "enclosing" used by this function considers +// additional whitespace abutting a node to be enclosed by it. +// In this example: +// +// z := x + y // add them +// <-A-> +// <----B-----> +// +// the ast.BinaryExpr(+) node is considered to enclose interval B +// even though its [Pos()..End()) is actually only interval A. +// This behaviour makes user interfaces more tolerant of imperfect +// input. +// +// This function treats tokens as nodes, though they are not included +// in the result. e.g. PathEnclosingInterval("+") returns the +// enclosing ast.BinaryExpr("x + y"). +// +// If start==end, the 1-char interval following start is used instead. +// +// The 'exact' result is true if the interval contains only path[0] +// and perhaps some adjacent whitespace. It is false if the interval +// overlaps multiple children of path[0], or if it contains only +// interior whitespace of path[0]. +// In this example: +// +// z := x + y // add them +// <--C--> <---E--> +// ^ +// D +// +// intervals C, D and E are inexact. C is contained by the +// z-assignment statement, because it spans three of its children (:=, +// x, +). So too is the 1-char interval D, because it contains only +// interior whitespace of the assignment. E is considered interior +// whitespace of the BlockStmt containing the assignment. +// +// Precondition: [start, end) both lie within the same file as root. +// TODO(adonovan): return (nil, false) in this case and remove precond. +// Requires FileSet; see loader.tokenFileContainsPos. +// +// Postcondition: path is never nil; it always contains at least 'root'. +// +func PathEnclosingInterval(root *ast.File, start, end token.Pos) (path []ast.Node, exact bool) { + // fmt.Printf("EnclosingInterval %d %d\n", start, end) // debugging + + // Precondition: node.[Pos..End) and adjoining whitespace contain [start, end). + var visit func(node ast.Node) bool + visit = func(node ast.Node) bool { + path = append(path, node) + + nodePos := node.Pos() + nodeEnd := node.End() + + // fmt.Printf("visit(%T, %d, %d)\n", node, nodePos, nodeEnd) // debugging + + // Intersect [start, end) with interval of node. + if start < nodePos { + start = nodePos + } + if end > nodeEnd { + end = nodeEnd + } + + // Find sole child that contains [start, end). + children := childrenOf(node) + l := len(children) + for i, child := range children { + // [childPos, childEnd) is unaugmented interval of child. + childPos := child.Pos() + childEnd := child.End() + + // [augPos, augEnd) is whitespace-augmented interval of child. + augPos := childPos + augEnd := childEnd + if i > 0 { + augPos = children[i-1].End() // start of preceding whitespace + } + if i < l-1 { + nextChildPos := children[i+1].Pos() + // Does [start, end) lie between child and next child? + if start >= augEnd && end <= nextChildPos { + return false // inexact match + } + augEnd = nextChildPos // end of following whitespace + } + + // fmt.Printf("\tchild %d: [%d..%d)\tcontains interval [%d..%d)?\n", + // i, augPos, augEnd, start, end) // debugging + + // Does augmented child strictly contain [start, end)? + if augPos <= start && end <= augEnd { + _, isToken := child.(tokenNode) + return isToken || visit(child) + } + + // Does [start, end) overlap multiple children? + // i.e. left-augmented child contains start + // but LR-augmented child does not contain end. + if start < childEnd && end > augEnd { + break + } + } + + // No single child contained [start, end), + // so node is the result. Is it exact? + + // (It's tempting to put this condition before the + // child loop, but it gives the wrong result in the + // case where a node (e.g. ExprStmt) and its sole + // child have equal intervals.) + if start == nodePos && end == nodeEnd { + return true // exact match + } + + return false // inexact: overlaps multiple children + } + + if start > end { + start, end = end, start + } + + if start < root.End() && end > root.Pos() { + if start == end { + end = start + 1 // empty interval => interval of size 1 + } + exact = visit(root) + + // Reverse the path: + for i, l := 0, len(path); i < l/2; i++ { + path[i], path[l-1-i] = path[l-1-i], path[i] + } + } else { + // Selection lies within whitespace preceding the + // first (or following the last) declaration in the file. + // The result nonetheless always includes the ast.File. + path = append(path, root) + } + + return +} + +// tokenNode is a dummy implementation of ast.Node for a single token. +// They are used transiently by PathEnclosingInterval but never escape +// this package. +// +type tokenNode struct { + pos token.Pos + end token.Pos +} + +func (n tokenNode) Pos() token.Pos { + return n.pos +} + +func (n tokenNode) End() token.Pos { + return n.end +} + +func tok(pos token.Pos, len int) ast.Node { + return tokenNode{pos, pos + token.Pos(len)} +} + +// childrenOf returns the direct non-nil children of ast.Node n. +// It may include fake ast.Node implementations for bare tokens. +// it is not safe to call (e.g.) ast.Walk on such nodes. +// +func childrenOf(n ast.Node) []ast.Node { + var children []ast.Node + + // First add nodes for all true subtrees. + ast.Inspect(n, func(node ast.Node) bool { + if node == n { // push n + return true // recur + } + if node != nil { // push child + children = append(children, node) + } + return false // no recursion + }) + + // Then add fake Nodes for bare tokens. + switch n := n.(type) { + case *ast.ArrayType: + children = append(children, + tok(n.Lbrack, len("[")), + tok(n.Elt.End(), len("]"))) + + case *ast.AssignStmt: + children = append(children, + tok(n.TokPos, len(n.Tok.String()))) + + case *ast.BasicLit: + children = append(children, + tok(n.ValuePos, len(n.Value))) + + case *ast.BinaryExpr: + children = append(children, tok(n.OpPos, len(n.Op.String()))) + + case *ast.BlockStmt: + children = append(children, + tok(n.Lbrace, len("{")), + tok(n.Rbrace, len("}"))) + + case *ast.BranchStmt: + children = append(children, + tok(n.TokPos, len(n.Tok.String()))) + + case *ast.CallExpr: + children = append(children, + tok(n.Lparen, len("(")), + tok(n.Rparen, len(")"))) + if n.Ellipsis != 0 { + children = append(children, tok(n.Ellipsis, len("..."))) + } + + case *ast.CaseClause: + if n.List == nil { + children = append(children, + tok(n.Case, len("default"))) + } else { + children = append(children, + tok(n.Case, len("case"))) + } + children = append(children, tok(n.Colon, len(":"))) + + case *ast.ChanType: + switch n.Dir { + case ast.RECV: + children = append(children, tok(n.Begin, len("<-chan"))) + case ast.SEND: + children = append(children, tok(n.Begin, len("chan<-"))) + case ast.RECV | ast.SEND: + children = append(children, tok(n.Begin, len("chan"))) + } + + case *ast.CommClause: + if n.Comm == nil { + children = append(children, + tok(n.Case, len("default"))) + } else { + children = append(children, + tok(n.Case, len("case"))) + } + children = append(children, tok(n.Colon, len(":"))) + + case *ast.Comment: + // nop + + case *ast.CommentGroup: + // nop + + case *ast.CompositeLit: + children = append(children, + tok(n.Lbrace, len("{")), + tok(n.Rbrace, len("{"))) + + case *ast.DeclStmt: + // nop + + case *ast.DeferStmt: + children = append(children, + tok(n.Defer, len("defer"))) + + case *ast.Ellipsis: + children = append(children, + tok(n.Ellipsis, len("..."))) + + case *ast.EmptyStmt: + // nop + + case *ast.ExprStmt: + // nop + + case *ast.Field: + // TODO(adonovan): Field.{Doc,Comment,Tag}? + + case *ast.FieldList: + children = append(children, + tok(n.Opening, len("(")), + tok(n.Closing, len(")"))) + + case *ast.File: + // TODO test: Doc + children = append(children, + tok(n.Package, len("package"))) + + case *ast.ForStmt: + children = append(children, + tok(n.For, len("for"))) + + case *ast.FuncDecl: + // TODO(adonovan): FuncDecl.Comment? + + // Uniquely, FuncDecl breaks the invariant that + // preorder traversal yields tokens in lexical order: + // in fact, FuncDecl.Recv precedes FuncDecl.Type.Func. + // + // As a workaround, we inline the case for FuncType + // here and order things correctly. + // + children = nil // discard ast.Walk(FuncDecl) info subtrees + children = append(children, tok(n.Type.Func, len("func"))) + if n.Recv != nil { + children = append(children, n.Recv) + } + children = append(children, n.Name) + if n.Type.Params != nil { + children = append(children, n.Type.Params) + } + if n.Type.Results != nil { + children = append(children, n.Type.Results) + } + if n.Body != nil { + children = append(children, n.Body) + } + + case *ast.FuncLit: + // nop + + case *ast.FuncType: + if n.Func != 0 { + children = append(children, + tok(n.Func, len("func"))) + } + + case *ast.GenDecl: + children = append(children, + tok(n.TokPos, len(n.Tok.String()))) + if n.Lparen != 0 { + children = append(children, + tok(n.Lparen, len("(")), + tok(n.Rparen, len(")"))) + } + + case *ast.GoStmt: + children = append(children, + tok(n.Go, len("go"))) + + case *ast.Ident: + children = append(children, + tok(n.NamePos, len(n.Name))) + + case *ast.IfStmt: + children = append(children, + tok(n.If, len("if"))) + + case *ast.ImportSpec: + // TODO(adonovan): ImportSpec.{Doc,EndPos}? + + case *ast.IncDecStmt: + children = append(children, + tok(n.TokPos, len(n.Tok.String()))) + + case *ast.IndexExpr: + children = append(children, + tok(n.Lbrack, len("{")), + tok(n.Rbrack, len("}"))) + + case *ast.InterfaceType: + children = append(children, + tok(n.Interface, len("interface"))) + + case *ast.KeyValueExpr: + children = append(children, + tok(n.Colon, len(":"))) + + case *ast.LabeledStmt: + children = append(children, + tok(n.Colon, len(":"))) + + case *ast.MapType: + children = append(children, + tok(n.Map, len("map"))) + + case *ast.ParenExpr: + children = append(children, + tok(n.Lparen, len("(")), + tok(n.Rparen, len(")"))) + + case *ast.RangeStmt: + children = append(children, + tok(n.For, len("for")), + tok(n.TokPos, len(n.Tok.String()))) + + case *ast.ReturnStmt: + children = append(children, + tok(n.Return, len("return"))) + + case *ast.SelectStmt: + children = append(children, + tok(n.Select, len("select"))) + + case *ast.SelectorExpr: + // nop + + case *ast.SendStmt: + children = append(children, + tok(n.Arrow, len("<-"))) + + case *ast.SliceExpr: + children = append(children, + tok(n.Lbrack, len("[")), + tok(n.Rbrack, len("]"))) + + case *ast.StarExpr: + children = append(children, tok(n.Star, len("*"))) + + case *ast.StructType: + children = append(children, tok(n.Struct, len("struct"))) + + case *ast.SwitchStmt: + children = append(children, tok(n.Switch, len("switch"))) + + case *ast.TypeAssertExpr: + children = append(children, + tok(n.Lparen-1, len(".")), + tok(n.Lparen, len("(")), + tok(n.Rparen, len(")"))) + + case *ast.TypeSpec: + // TODO(adonovan): TypeSpec.{Doc,Comment}? + + case *ast.TypeSwitchStmt: + children = append(children, tok(n.Switch, len("switch"))) + + case *ast.UnaryExpr: + children = append(children, tok(n.OpPos, len(n.Op.String()))) + + case *ast.ValueSpec: + // TODO(adonovan): ValueSpec.{Doc,Comment}? + + case *ast.BadDecl, *ast.BadExpr, *ast.BadStmt: + // nop + } + + // TODO(adonovan): opt: merge the logic of ast.Inspect() into + // the switch above so we can make interleaved callbacks for + // both Nodes and Tokens in the right order and avoid the need + // to sort. + sort.Sort(byPos(children)) + + return children +} + +type byPos []ast.Node + +func (sl byPos) Len() int { + return len(sl) +} +func (sl byPos) Less(i, j int) bool { + return sl[i].Pos() < sl[j].Pos() +} +func (sl byPos) Swap(i, j int) { + sl[i], sl[j] = sl[j], sl[i] +} + +// NodeDescription returns a description of the concrete type of n suitable +// for a user interface. +// +// TODO(adonovan): in some cases (e.g. Field, FieldList, Ident, +// StarExpr) we could be much more specific given the path to the AST +// root. Perhaps we should do that. +// +func NodeDescription(n ast.Node) string { + switch n := n.(type) { + case *ast.ArrayType: + return "array type" + case *ast.AssignStmt: + return "assignment" + case *ast.BadDecl: + return "bad declaration" + case *ast.BadExpr: + return "bad expression" + case *ast.BadStmt: + return "bad statement" + case *ast.BasicLit: + return "basic literal" + case *ast.BinaryExpr: + return fmt.Sprintf("binary %s operation", n.Op) + case *ast.BlockStmt: + return "block" + case *ast.BranchStmt: + switch n.Tok { + case token.BREAK: + return "break statement" + case token.CONTINUE: + return "continue statement" + case token.GOTO: + return "goto statement" + case token.FALLTHROUGH: + return "fall-through statement" + } + case *ast.CallExpr: + if len(n.Args) == 1 && !n.Ellipsis.IsValid() { + return "function call (or conversion)" + } + return "function call" + case *ast.CaseClause: + return "case clause" + case *ast.ChanType: + return "channel type" + case *ast.CommClause: + return "communication clause" + case *ast.Comment: + return "comment" + case *ast.CommentGroup: + return "comment group" + case *ast.CompositeLit: + return "composite literal" + case *ast.DeclStmt: + return NodeDescription(n.Decl) + " statement" + case *ast.DeferStmt: + return "defer statement" + case *ast.Ellipsis: + return "ellipsis" + case *ast.EmptyStmt: + return "empty statement" + case *ast.ExprStmt: + return "expression statement" + case *ast.Field: + // Can be any of these: + // struct {x, y int} -- struct field(s) + // struct {T} -- anon struct field + // interface {I} -- interface embedding + // interface {f()} -- interface method + // func (A) func(B) C -- receiver, param(s), result(s) + return "field/method/parameter" + case *ast.FieldList: + return "field/method/parameter list" + case *ast.File: + return "source file" + case *ast.ForStmt: + return "for loop" + case *ast.FuncDecl: + return "function declaration" + case *ast.FuncLit: + return "function literal" + case *ast.FuncType: + return "function type" + case *ast.GenDecl: + switch n.Tok { + case token.IMPORT: + return "import declaration" + case token.CONST: + return "constant declaration" + case token.TYPE: + return "type declaration" + case token.VAR: + return "variable declaration" + } + case *ast.GoStmt: + return "go statement" + case *ast.Ident: + return "identifier" + case *ast.IfStmt: + return "if statement" + case *ast.ImportSpec: + return "import specification" + case *ast.IncDecStmt: + if n.Tok == token.INC { + return "increment statement" + } + return "decrement statement" + case *ast.IndexExpr: + return "index expression" + case *ast.InterfaceType: + return "interface type" + case *ast.KeyValueExpr: + return "key/value association" + case *ast.LabeledStmt: + return "statement label" + case *ast.MapType: + return "map type" + case *ast.Package: + return "package" + case *ast.ParenExpr: + return "parenthesized " + NodeDescription(n.X) + case *ast.RangeStmt: + return "range loop" + case *ast.ReturnStmt: + return "return statement" + case *ast.SelectStmt: + return "select statement" + case *ast.SelectorExpr: + return "selector" + case *ast.SendStmt: + return "channel send" + case *ast.SliceExpr: + return "slice expression" + case *ast.StarExpr: + return "*-operation" // load/store expr or pointer type + case *ast.StructType: + return "struct type" + case *ast.SwitchStmt: + return "switch statement" + case *ast.TypeAssertExpr: + return "type assertion" + case *ast.TypeSpec: + return "type specification" + case *ast.TypeSwitchStmt: + return "type switch" + case *ast.UnaryExpr: + return fmt.Sprintf("unary %s operation", n.Op) + case *ast.ValueSpec: + return "value specification" + + } + panic(fmt.Sprintf("unexpected node type: %T", n)) +} diff --git a/vendor/golang.org/x/tools/go/ast/astutil/imports.go b/vendor/golang.org/x/tools/go/ast/astutil/imports.go new file mode 100644 index 0000000..70db9e5 --- /dev/null +++ b/vendor/golang.org/x/tools/go/ast/astutil/imports.go @@ -0,0 +1,449 @@ +// 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. + +// Package astutil contains common utilities for working with the Go AST. +package astutil + +import ( + "fmt" + "go/ast" + "go/token" + "strconv" + "strings" +) + +// AddImport adds the import path to the file f, if absent. +func AddImport(fset *token.FileSet, f *ast.File, ipath string) (added bool) { + return AddNamedImport(fset, f, "", ipath) +} + +// AddNamedImport adds the import path to the file f, if absent. +// If name is not empty, it is used to rename the import. +// +// For example, calling +// AddNamedImport(fset, f, "pathpkg", "path") +// adds +// import pathpkg "path" +func AddNamedImport(fset *token.FileSet, f *ast.File, name, ipath string) (added bool) { + if imports(f, ipath) { + return false + } + + newImport := &ast.ImportSpec{ + Path: &ast.BasicLit{ + Kind: token.STRING, + Value: strconv.Quote(ipath), + }, + } + if name != "" { + newImport.Name = &ast.Ident{Name: name} + } + + // Find an import decl to add to. + // The goal is to find an existing import + // whose import path has the longest shared + // prefix with ipath. + var ( + bestMatch = -1 // length of longest shared prefix + lastImport = -1 // index in f.Decls of the file's final import decl + impDecl *ast.GenDecl // import decl containing the best match + impIndex = -1 // spec index in impDecl containing the best match + ) + for i, decl := range f.Decls { + gen, ok := decl.(*ast.GenDecl) + if ok && gen.Tok == token.IMPORT { + lastImport = i + // Do not add to import "C", to avoid disrupting the + // association with its doc comment, breaking cgo. + if declImports(gen, "C") { + continue + } + + // Match an empty import decl if that's all that is available. + if len(gen.Specs) == 0 && bestMatch == -1 { + impDecl = gen + } + + // Compute longest shared prefix with imports in this group. + for j, spec := range gen.Specs { + impspec := spec.(*ast.ImportSpec) + n := matchLen(importPath(impspec), ipath) + if n > bestMatch { + bestMatch = n + impDecl = gen + impIndex = j + } + } + } + } + + // If no import decl found, add one after the last import. + if impDecl == nil { + impDecl = &ast.GenDecl{ + Tok: token.IMPORT, + } + if lastImport >= 0 { + impDecl.TokPos = f.Decls[lastImport].End() + } else { + // There are no existing imports. + // Our new import goes after the package declaration and after + // the comment, if any, that starts on the same line as the + // package declaration. + impDecl.TokPos = f.Package + + file := fset.File(f.Package) + pkgLine := file.Line(f.Package) + for _, c := range f.Comments { + if file.Line(c.Pos()) > pkgLine { + break + } + impDecl.TokPos = c.End() + } + } + f.Decls = append(f.Decls, nil) + copy(f.Decls[lastImport+2:], f.Decls[lastImport+1:]) + f.Decls[lastImport+1] = impDecl + } + + // Insert new import at insertAt. + insertAt := 0 + if impIndex >= 0 { + // insert after the found import + insertAt = impIndex + 1 + } + impDecl.Specs = append(impDecl.Specs, nil) + copy(impDecl.Specs[insertAt+1:], impDecl.Specs[insertAt:]) + impDecl.Specs[insertAt] = newImport + pos := impDecl.Pos() + if insertAt > 0 { + // If there is a comment after an existing import, preserve the comment + // position by adding the new import after the comment. + if spec, ok := impDecl.Specs[insertAt-1].(*ast.ImportSpec); ok && spec.Comment != nil { + pos = spec.Comment.End() + } else { + // Assign same position as the previous import, + // so that the sorter sees it as being in the same block. + pos = impDecl.Specs[insertAt-1].Pos() + } + } + if newImport.Name != nil { + newImport.Name.NamePos = pos + } + newImport.Path.ValuePos = pos + newImport.EndPos = pos + + // Clean up parens. impDecl contains at least one spec. + if len(impDecl.Specs) == 1 { + // Remove unneeded parens. + impDecl.Lparen = token.NoPos + } else if !impDecl.Lparen.IsValid() { + // impDecl needs parens added. + impDecl.Lparen = impDecl.Specs[0].Pos() + } + + f.Imports = append(f.Imports, newImport) + + if len(f.Decls) <= 1 { + return true + } + + // Merge all the import declarations into the first one. + var first *ast.GenDecl + for i := 0; i < len(f.Decls); i++ { + decl := f.Decls[i] + gen, ok := decl.(*ast.GenDecl) + if !ok || gen.Tok != token.IMPORT || declImports(gen, "C") { + continue + } + if first == nil { + first = gen + continue // Don't touch the first one. + } + // We now know there is more than one package in this import + // declaration. Ensure that it ends up parenthesized. + first.Lparen = first.Pos() + // Move the imports of the other import declaration to the first one. + for _, spec := range gen.Specs { + spec.(*ast.ImportSpec).Path.ValuePos = first.Pos() + first.Specs = append(first.Specs, spec) + } + f.Decls = append(f.Decls[:i], f.Decls[i+1:]...) + i-- + } + + return true +} + +// DeleteImport deletes the import path from the file f, if present. +func DeleteImport(fset *token.FileSet, f *ast.File, path string) (deleted bool) { + return DeleteNamedImport(fset, f, "", path) +} + +// DeleteNamedImport deletes the import with the given name and path from the file f, if present. +func DeleteNamedImport(fset *token.FileSet, f *ast.File, name, path string) (deleted bool) { + var delspecs []*ast.ImportSpec + var delcomments []*ast.CommentGroup + + // Find the import nodes that import path, if any. + for i := 0; i < len(f.Decls); i++ { + decl := f.Decls[i] + gen, ok := decl.(*ast.GenDecl) + if !ok || gen.Tok != token.IMPORT { + continue + } + for j := 0; j < len(gen.Specs); j++ { + spec := gen.Specs[j] + impspec := spec.(*ast.ImportSpec) + if impspec.Name == nil && name != "" { + continue + } + if impspec.Name != nil && impspec.Name.Name != name { + continue + } + if importPath(impspec) != path { + continue + } + + // We found an import spec that imports path. + // Delete it. + delspecs = append(delspecs, impspec) + deleted = true + copy(gen.Specs[j:], gen.Specs[j+1:]) + gen.Specs = gen.Specs[:len(gen.Specs)-1] + + // If this was the last import spec in this decl, + // delete the decl, too. + if len(gen.Specs) == 0 { + copy(f.Decls[i:], f.Decls[i+1:]) + f.Decls = f.Decls[:len(f.Decls)-1] + i-- + break + } else if len(gen.Specs) == 1 { + if impspec.Doc != nil { + delcomments = append(delcomments, impspec.Doc) + } + if impspec.Comment != nil { + delcomments = append(delcomments, impspec.Comment) + } + for _, cg := range f.Comments { + // Found comment on the same line as the import spec. + if cg.End() < impspec.Pos() && fset.Position(cg.End()).Line == fset.Position(impspec.Pos()).Line { + delcomments = append(delcomments, cg) + break + } + } + + gen.Lparen = token.NoPos // drop parens + spec := gen.Specs[0].(*ast.ImportSpec) + if spec.Doc != nil { + // Move the documentation above the import statement. + gen.TokPos = spec.Doc.End() + 1 + } + + for _, cg := range f.Comments { + if cg.End() < spec.Pos() && fset.Position(cg.End()).Line == fset.Position(spec.Pos()).Line { + for fset.Position(gen.TokPos).Line != fset.Position(spec.Pos()).Line { + fset.File(gen.TokPos).MergeLine(fset.Position(gen.TokPos).Line) + } + break + } + } + } + if j > 0 { + lastImpspec := gen.Specs[j-1].(*ast.ImportSpec) + lastLine := fset.Position(lastImpspec.Path.ValuePos).Line + line := fset.Position(impspec.Path.ValuePos).Line + + // We deleted an entry but now there may be + // a blank line-sized hole where the import was. + if line-lastLine > 1 { + // There was a blank line immediately preceding the deleted import, + // so there's no need to close the hole. + // Do nothing. + } else { + // There was no blank line. Close the hole. + fset.File(gen.Rparen).MergeLine(line) + } + } + j-- + } + } + + // Delete imports from f.Imports. + for i := 0; i < len(f.Imports); i++ { + imp := f.Imports[i] + for j, del := range delspecs { + if imp == del { + copy(f.Imports[i:], f.Imports[i+1:]) + f.Imports = f.Imports[:len(f.Imports)-1] + copy(delspecs[j:], delspecs[j+1:]) + delspecs = delspecs[:len(delspecs)-1] + i-- + break + } + } + } + + // Delete comments from f.Comments. + for i := 0; i < len(f.Comments); i++ { + cg := f.Comments[i] + for j, del := range delcomments { + if cg == del { + copy(f.Comments[i:], f.Comments[i+1:]) + f.Comments = f.Comments[:len(f.Comments)-1] + copy(delcomments[j:], delcomments[j+1:]) + delcomments = delcomments[:len(delcomments)-1] + i-- + break + } + } + } + + if len(delspecs) > 0 { + panic(fmt.Sprintf("deleted specs from Decls but not Imports: %v", delspecs)) + } + + return +} + +// RewriteImport rewrites any import of path oldPath to path newPath. +func RewriteImport(fset *token.FileSet, f *ast.File, oldPath, newPath string) (rewrote bool) { + for _, imp := range f.Imports { + if importPath(imp) == oldPath { + rewrote = true + // record old End, because the default is to compute + // it using the length of imp.Path.Value. + imp.EndPos = imp.End() + imp.Path.Value = strconv.Quote(newPath) + } + } + return +} + +// UsesImport reports whether a given import is used. +func UsesImport(f *ast.File, path string) (used bool) { + spec := importSpec(f, path) + if spec == nil { + return + } + + name := spec.Name.String() + switch name { + case "": + // If the package name is not explicitly specified, + // make an educated guess. This is not guaranteed to be correct. + lastSlash := strings.LastIndex(path, "/") + if lastSlash == -1 { + name = path + } else { + name = path[lastSlash+1:] + } + case "_", ".": + // Not sure if this import is used - err on the side of caution. + return true + } + + ast.Walk(visitFn(func(n ast.Node) { + sel, ok := n.(*ast.SelectorExpr) + if ok && isTopName(sel.X, name) { + used = true + } + }), f) + + return +} + +type visitFn func(node ast.Node) + +func (fn visitFn) Visit(node ast.Node) ast.Visitor { + fn(node) + return fn +} + +// imports returns true if f imports path. +func imports(f *ast.File, path string) bool { + return importSpec(f, path) != nil +} + +// importSpec returns the import spec if f imports path, +// or nil otherwise. +func importSpec(f *ast.File, path string) *ast.ImportSpec { + for _, s := range f.Imports { + if importPath(s) == path { + return s + } + } + return nil +} + +// importPath returns the unquoted import path of s, +// or "" if the path is not properly quoted. +func importPath(s *ast.ImportSpec) string { + t, err := strconv.Unquote(s.Path.Value) + if err == nil { + return t + } + return "" +} + +// declImports reports whether gen contains an import of path. +func declImports(gen *ast.GenDecl, path string) bool { + if gen.Tok != token.IMPORT { + return false + } + for _, spec := range gen.Specs { + impspec := spec.(*ast.ImportSpec) + if importPath(impspec) == path { + return true + } + } + return false +} + +// matchLen returns the length of the longest path segment prefix shared by x and y. +func matchLen(x, y string) int { + n := 0 + for i := 0; i < len(x) && i < len(y) && x[i] == y[i]; i++ { + if x[i] == '/' { + n++ + } + } + return n +} + +// isTopName returns true if n is a top-level unresolved identifier with the given name. +func isTopName(n ast.Expr, name string) bool { + id, ok := n.(*ast.Ident) + return ok && id.Name == name && id.Obj == nil +} + +// Imports returns the file imports grouped by paragraph. +func Imports(fset *token.FileSet, f *ast.File) [][]*ast.ImportSpec { + var groups [][]*ast.ImportSpec + + for _, decl := range f.Decls { + genDecl, ok := decl.(*ast.GenDecl) + if !ok || genDecl.Tok != token.IMPORT { + break + } + + group := []*ast.ImportSpec{} + + var lastLine int + for _, spec := range genDecl.Specs { + importSpec := spec.(*ast.ImportSpec) + pos := importSpec.Path.ValuePos + line := fset.Position(pos).Line + if lastLine > 0 && pos > 0 && line-lastLine > 1 { + groups = append(groups, group) + group = []*ast.ImportSpec{} + } + group = append(group, importSpec) + lastLine = line + } + groups = append(groups, group) + } + + return groups +} diff --git a/vendor/golang.org/x/tools/go/ast/astutil/util.go b/vendor/golang.org/x/tools/go/ast/astutil/util.go new file mode 100644 index 0000000..7630629 --- /dev/null +++ b/vendor/golang.org/x/tools/go/ast/astutil/util.go @@ -0,0 +1,14 @@ +package astutil + +import "go/ast" + +// Unparen returns e with any enclosing parentheses stripped. +func Unparen(e ast.Expr) ast.Expr { + for { + p, ok := e.(*ast.ParenExpr) + if !ok { + return e + } + e = p.X + } +} diff --git a/vendor/golang.org/x/tools/go/gcimporter15/bexport.go b/vendor/golang.org/x/tools/go/gcimporter15/bexport.go new file mode 100644 index 0000000..af982ab --- /dev/null +++ b/vendor/golang.org/x/tools/go/gcimporter15/bexport.go @@ -0,0 +1,824 @@ +// 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. + +// Binary package export. +// This file was derived from $GOROOT/src/cmd/compile/internal/gc/bexport.go; +// see that file for specification of the format. + +package gcimporter + +import ( + "bytes" + "encoding/binary" + "fmt" + "go/ast" + "go/constant" + "go/token" + "go/types" + "log" + "math" + "math/big" + "sort" + "strings" +) + +// If debugFormat is set, each integer and string value is preceded by a marker +// and position information in the encoding. This mechanism permits an importer +// to recognize immediately when it is out of sync. The importer recognizes this +// mode automatically (i.e., it can import export data produced with debugging +// support even if debugFormat is not set at the time of import). This mode will +// lead to massively larger export data (by a factor of 2 to 3) and should only +// be enabled during development and debugging. +// +// NOTE: This flag is the first flag to enable if importing dies because of +// (suspected) format errors, and whenever a change is made to the format. +const debugFormat = false // default: false + +// If trace is set, debugging output is printed to std out. +const trace = false // default: false + +// Current export format version. Increase with each format change. +// 3: added aliasTag and export of aliases +// 2: removed unused bool in ODCL export (compiler only) +// 1: header format change (more regular), export package for _ struct fields +// 0: Go1.7 encoding +const exportVersion = 3 + +// trackAllTypes enables cycle tracking for all types, not just named +// types. The existing compiler invariants assume that unnamed types +// that are not completely set up are not used, or else there are spurious +// errors. +// If disabled, only named types are tracked, possibly leading to slightly +// less efficient encoding in rare cases. It also prevents the export of +// some corner-case type declarations (but those are not handled correctly +// with with the textual export format either). +// TODO(gri) enable and remove once issues caused by it are fixed +const trackAllTypes = false + +type exporter struct { + fset *token.FileSet + out bytes.Buffer + + // object -> index maps, indexed in order of serialization + strIndex map[string]int + pkgIndex map[*types.Package]int + typIndex map[types.Type]int + + // track objects that we've reexported already + reexported map[types.Object]bool + + // position encoding + posInfoFormat bool + prevFile string + prevLine int + + // debugging support + written int // bytes written + indent int // for trace +} + +// BExportData returns binary export data for pkg. +// If no file set is provided, position info will be missing. +func BExportData(fset *token.FileSet, pkg *types.Package) []byte { + p := exporter{ + fset: fset, + strIndex: map[string]int{"": 0}, // empty string is mapped to 0 + pkgIndex: make(map[*types.Package]int), + typIndex: make(map[types.Type]int), + reexported: make(map[types.Object]bool), + posInfoFormat: true, // TODO(gri) might become a flag, eventually + } + + // write version info + // The version string must start with "version %d" where %d is the version + // number. Additional debugging information may follow after a blank; that + // text is ignored by the importer. + p.rawStringln(fmt.Sprintf("version %d", exportVersion)) + var debug string + if debugFormat { + debug = "debug" + } + p.rawStringln(debug) // cannot use p.bool since it's affected by debugFormat; also want to see this clearly + p.bool(trackAllTypes) + p.bool(p.posInfoFormat) + + // --- generic export data --- + + // populate type map with predeclared "known" types + for index, typ := range predeclared { + p.typIndex[typ] = index + } + if len(p.typIndex) != len(predeclared) { + log.Fatalf("gcimporter: duplicate entries in type map?") + } + + // write package data + p.pkg(pkg, true) + if trace { + p.tracef("\n") + } + + // write objects + objcount := 0 + scope := pkg.Scope() + for _, name := range scope.Names() { + if !ast.IsExported(name) { + continue + } + if trace { + p.tracef("\n") + } + p.obj(scope.Lookup(name)) + objcount++ + } + + // indicate end of list + if trace { + p.tracef("\n") + } + p.tag(endTag) + + // for self-verification only (redundant) + p.int(objcount) + + if trace { + p.tracef("\n") + } + + // --- end of export data --- + + return p.out.Bytes() +} + +func (p *exporter) pkg(pkg *types.Package, emptypath bool) { + if pkg == nil { + log.Fatalf("gcimporter: unexpected nil pkg") + } + + // if we saw the package before, write its index (>= 0) + if i, ok := p.pkgIndex[pkg]; ok { + p.index('P', i) + return + } + + // otherwise, remember the package, write the package tag (< 0) and package data + if trace { + p.tracef("P%d = { ", len(p.pkgIndex)) + defer p.tracef("} ") + } + p.pkgIndex[pkg] = len(p.pkgIndex) + + p.tag(packageTag) + p.string(pkg.Name()) + if emptypath { + p.string("") + } else { + p.string(pkg.Path()) + } +} + +func (p *exporter) obj(obj types.Object) { + switch obj := obj.(type) { + case *types.Const: + p.tag(constTag) + p.pos(obj) + p.qualifiedName(obj) + p.typ(obj.Type()) + p.value(obj.Val()) + + case *types.TypeName: + p.tag(typeTag) + p.typ(obj.Type()) + + case *types.Var: + p.tag(varTag) + p.pos(obj) + p.qualifiedName(obj) + p.typ(obj.Type()) + + case *types.Func: + p.tag(funcTag) + p.pos(obj) + p.qualifiedName(obj) + sig := obj.Type().(*types.Signature) + p.paramList(sig.Params(), sig.Variadic()) + p.paramList(sig.Results(), false) + + // Alias-related code. Keep for now. + // case *types_Alias: + // // make sure the original is exported before the alias + // // (if the alias declaration was invalid, orig will be nil) + // orig := original(obj) + // if orig != nil && !p.reexported[orig] { + // p.obj(orig) + // p.reexported[orig] = true + // } + + // p.tag(aliasTag) + // p.pos(obj) + // p.string(obj.Name()) + // p.qualifiedName(orig) + + default: + log.Fatalf("gcimporter: unexpected object %v (%T)", obj, obj) + } +} + +func (p *exporter) pos(obj types.Object) { + if !p.posInfoFormat { + return + } + + file, line := p.fileLine(obj) + if file == p.prevFile { + // common case: write line delta + // delta == 0 means different file or no line change + delta := line - p.prevLine + p.int(delta) + if delta == 0 { + p.int(-1) // -1 means no file change + } + } else { + // different file + p.int(0) + // Encode filename as length of common prefix with previous + // filename, followed by (possibly empty) suffix. Filenames + // frequently share path prefixes, so this can save a lot + // of space and make export data size less dependent on file + // path length. The suffix is unlikely to be empty because + // file names tend to end in ".go". + n := commonPrefixLen(p.prevFile, file) + p.int(n) // n >= 0 + p.string(file[n:]) // write suffix only + p.prevFile = file + p.int(line) + } + p.prevLine = line +} + +func (p *exporter) fileLine(obj types.Object) (file string, line int) { + if p.fset != nil { + pos := p.fset.Position(obj.Pos()) + file = pos.Filename + line = pos.Line + } + return +} + +func commonPrefixLen(a, b string) int { + if len(a) > len(b) { + a, b = b, a + } + // len(a) <= len(b) + i := 0 + for i < len(a) && a[i] == b[i] { + i++ + } + return i +} + +func (p *exporter) qualifiedName(obj types.Object) { + if obj == nil { + p.string("") + return + } + p.string(obj.Name()) + p.pkg(obj.Pkg(), false) +} + +func (p *exporter) typ(t types.Type) { + if t == nil { + log.Fatalf("gcimporter: nil type") + } + + // Possible optimization: Anonymous pointer types *T where + // T is a named type are common. We could canonicalize all + // such types *T to a single type PT = *T. This would lead + // to at most one *T entry in typIndex, and all future *T's + // would be encoded as the respective index directly. Would + // save 1 byte (pointerTag) per *T and reduce the typIndex + // size (at the cost of a canonicalization map). We can do + // this later, without encoding format change. + + // if we saw the type before, write its index (>= 0) + if i, ok := p.typIndex[t]; ok { + p.index('T', i) + return + } + + // otherwise, remember the type, write the type tag (< 0) and type data + if trackAllTypes { + if trace { + p.tracef("T%d = {>\n", len(p.typIndex)) + defer p.tracef("<\n} ") + } + p.typIndex[t] = len(p.typIndex) + } + + switch t := t.(type) { + case *types.Named: + if !trackAllTypes { + // if we don't track all types, track named types now + p.typIndex[t] = len(p.typIndex) + } + + p.tag(namedTag) + p.pos(t.Obj()) + p.qualifiedName(t.Obj()) + p.typ(t.Underlying()) + if !types.IsInterface(t) { + p.assocMethods(t) + } + + case *types.Array: + p.tag(arrayTag) + p.int64(t.Len()) + p.typ(t.Elem()) + + case *types.Slice: + p.tag(sliceTag) + p.typ(t.Elem()) + + case *dddSlice: + p.tag(dddTag) + p.typ(t.elem) + + case *types.Struct: + p.tag(structTag) + p.fieldList(t) + + case *types.Pointer: + p.tag(pointerTag) + p.typ(t.Elem()) + + case *types.Signature: + p.tag(signatureTag) + p.paramList(t.Params(), t.Variadic()) + p.paramList(t.Results(), false) + + case *types.Interface: + p.tag(interfaceTag) + p.iface(t) + + case *types.Map: + p.tag(mapTag) + p.typ(t.Key()) + p.typ(t.Elem()) + + case *types.Chan: + p.tag(chanTag) + p.int(int(3 - t.Dir())) // hack + p.typ(t.Elem()) + + default: + log.Fatalf("gcimporter: unexpected type %T: %s", t, t) + } +} + +func (p *exporter) assocMethods(named *types.Named) { + // Sort methods (for determinism). + var methods []*types.Func + for i := 0; i < named.NumMethods(); i++ { + methods = append(methods, named.Method(i)) + } + sort.Sort(methodsByName(methods)) + + p.int(len(methods)) + + if trace && methods != nil { + p.tracef("associated methods {>\n") + } + + for i, m := range methods { + if trace && i > 0 { + p.tracef("\n") + } + + p.pos(m) + name := m.Name() + p.string(name) + if !exported(name) { + p.pkg(m.Pkg(), false) + } + + sig := m.Type().(*types.Signature) + p.paramList(types.NewTuple(sig.Recv()), false) + p.paramList(sig.Params(), sig.Variadic()) + p.paramList(sig.Results(), false) + p.int(0) // dummy value for go:nointerface pragma - ignored by importer + } + + if trace && methods != nil { + p.tracef("<\n} ") + } +} + +type methodsByName []*types.Func + +func (x methodsByName) Len() int { return len(x) } +func (x methodsByName) Swap(i, j int) { x[i], x[j] = x[j], x[i] } +func (x methodsByName) Less(i, j int) bool { return x[i].Name() < x[j].Name() } + +func (p *exporter) fieldList(t *types.Struct) { + if trace && t.NumFields() > 0 { + p.tracef("fields {>\n") + defer p.tracef("<\n} ") + } + + p.int(t.NumFields()) + for i := 0; i < t.NumFields(); i++ { + if trace && i > 0 { + p.tracef("\n") + } + p.field(t.Field(i)) + p.string(t.Tag(i)) + } +} + +func (p *exporter) field(f *types.Var) { + if !f.IsField() { + log.Fatalf("gcimporter: field expected") + } + + p.pos(f) + p.fieldName(f) + p.typ(f.Type()) +} + +func (p *exporter) iface(t *types.Interface) { + // TODO(gri): enable importer to load embedded interfaces, + // then emit Embeddeds and ExplicitMethods separately here. + p.int(0) + + n := t.NumMethods() + if trace && n > 0 { + p.tracef("methods {>\n") + defer p.tracef("<\n} ") + } + p.int(n) + for i := 0; i < n; i++ { + if trace && i > 0 { + p.tracef("\n") + } + p.method(t.Method(i)) + } +} + +func (p *exporter) method(m *types.Func) { + sig := m.Type().(*types.Signature) + if sig.Recv() == nil { + log.Fatalf("gcimporter: method expected") + } + + p.pos(m) + p.string(m.Name()) + if m.Name() != "_" && !ast.IsExported(m.Name()) { + p.pkg(m.Pkg(), false) + } + + // interface method; no need to encode receiver. + p.paramList(sig.Params(), sig.Variadic()) + p.paramList(sig.Results(), false) +} + +// fieldName is like qualifiedName but it doesn't record the package for exported names. +func (p *exporter) fieldName(f *types.Var) { + name := f.Name() + + // anonymous field with unexported base type name: use "?" as field name + // (bname != "" per spec, but we are conservative in case of errors) + if f.Anonymous() { + base := f.Type() + if ptr, ok := base.(*types.Pointer); ok { + base = ptr.Elem() + } + if named, ok := base.(*types.Named); ok && !named.Obj().Exported() { + // anonymous field with unexported base type name + name = "?" // unexported name to force export of package + } + } + p.string(name) + if !f.Exported() { + p.pkg(f.Pkg(), false) + } +} + +func (p *exporter) paramList(params *types.Tuple, variadic bool) { + // use negative length to indicate unnamed parameters + // (look at the first parameter only since either all + // names are present or all are absent) + n := params.Len() + if n > 0 && params.At(0).Name() == "" { + n = -n + } + p.int(n) + for i := 0; i < params.Len(); i++ { + q := params.At(i) + t := q.Type() + if variadic && i == params.Len()-1 { + t = &dddSlice{t.(*types.Slice).Elem()} + } + p.typ(t) + if n > 0 { + name := q.Name() + p.string(name) + if name != "_" { + p.pkg(q.Pkg(), false) + } + } + p.string("") // no compiler-specific info + } +} + +func (p *exporter) value(x constant.Value) { + if trace { + p.tracef("= ") + } + + switch x.Kind() { + case constant.Bool: + tag := falseTag + if constant.BoolVal(x) { + tag = trueTag + } + p.tag(tag) + + case constant.Int: + if v, exact := constant.Int64Val(x); exact { + // common case: x fits into an int64 - use compact encoding + p.tag(int64Tag) + p.int64(v) + return + } + // uncommon case: large x - use float encoding + // (powers of 2 will be encoded efficiently with exponent) + p.tag(floatTag) + p.float(constant.ToFloat(x)) + + case constant.Float: + p.tag(floatTag) + p.float(x) + + case constant.Complex: + p.tag(complexTag) + p.float(constant.Real(x)) + p.float(constant.Imag(x)) + + case constant.String: + p.tag(stringTag) + p.string(constant.StringVal(x)) + + case constant.Unknown: + // package contains type errors + p.tag(unknownTag) + + default: + log.Fatalf("gcimporter: unexpected value %v (%T)", x, x) + } +} + +func (p *exporter) float(x constant.Value) { + if x.Kind() != constant.Float { + log.Fatalf("gcimporter: unexpected constant %v, want float", x) + } + // extract sign (there is no -0) + sign := constant.Sign(x) + if sign == 0 { + // x == 0 + p.int(0) + return + } + // x != 0 + + var f big.Float + if v, exact := constant.Float64Val(x); exact { + // float64 + f.SetFloat64(v) + } else if num, denom := constant.Num(x), constant.Denom(x); num.Kind() == constant.Int { + // TODO(gri): add big.Rat accessor to constant.Value. + r := valueToRat(num) + f.SetRat(r.Quo(r, valueToRat(denom))) + } else { + // Value too large to represent as a fraction => inaccessible. + // TODO(gri): add big.Float accessor to constant.Value. + f.SetFloat64(math.MaxFloat64) // FIXME + } + + // extract exponent such that 0.5 <= m < 1.0 + var m big.Float + exp := f.MantExp(&m) + + // extract mantissa as *big.Int + // - set exponent large enough so mant satisfies mant.IsInt() + // - get *big.Int from mant + m.SetMantExp(&m, int(m.MinPrec())) + mant, acc := m.Int(nil) + if acc != big.Exact { + log.Fatalf("gcimporter: internal error") + } + + p.int(sign) + p.int(exp) + p.string(string(mant.Bytes())) +} + +func valueToRat(x constant.Value) *big.Rat { + // Convert little-endian to big-endian. + // I can't believe this is necessary. + bytes := constant.Bytes(x) + for i := 0; i < len(bytes)/2; i++ { + bytes[i], bytes[len(bytes)-1-i] = bytes[len(bytes)-1-i], bytes[i] + } + return new(big.Rat).SetInt(new(big.Int).SetBytes(bytes)) +} + +func (p *exporter) bool(b bool) bool { + if trace { + p.tracef("[") + defer p.tracef("= %v] ", b) + } + + x := 0 + if b { + x = 1 + } + p.int(x) + return b +} + +// ---------------------------------------------------------------------------- +// Low-level encoders + +func (p *exporter) index(marker byte, index int) { + if index < 0 { + log.Fatalf("gcimporter: invalid index < 0") + } + if debugFormat { + p.marker('t') + } + if trace { + p.tracef("%c%d ", marker, index) + } + p.rawInt64(int64(index)) +} + +func (p *exporter) tag(tag int) { + if tag >= 0 { + log.Fatalf("gcimporter: invalid tag >= 0") + } + if debugFormat { + p.marker('t') + } + if trace { + p.tracef("%s ", tagString[-tag]) + } + p.rawInt64(int64(tag)) +} + +func (p *exporter) int(x int) { + p.int64(int64(x)) +} + +func (p *exporter) int64(x int64) { + if debugFormat { + p.marker('i') + } + if trace { + p.tracef("%d ", x) + } + p.rawInt64(x) +} + +func (p *exporter) string(s string) { + if debugFormat { + p.marker('s') + } + if trace { + p.tracef("%q ", s) + } + // if we saw the string before, write its index (>= 0) + // (the empty string is mapped to 0) + if i, ok := p.strIndex[s]; ok { + p.rawInt64(int64(i)) + return + } + // otherwise, remember string and write its negative length and bytes + p.strIndex[s] = len(p.strIndex) + p.rawInt64(-int64(len(s))) + for i := 0; i < len(s); i++ { + p.rawByte(s[i]) + } +} + +// marker emits a marker byte and position information which makes +// it easy for a reader to detect if it is "out of sync". Used for +// debugFormat format only. +func (p *exporter) marker(m byte) { + p.rawByte(m) + // Enable this for help tracking down the location + // of an incorrect marker when running in debugFormat. + if false && trace { + p.tracef("#%d ", p.written) + } + p.rawInt64(int64(p.written)) +} + +// rawInt64 should only be used by low-level encoders. +func (p *exporter) rawInt64(x int64) { + var tmp [binary.MaxVarintLen64]byte + n := binary.PutVarint(tmp[:], x) + for i := 0; i < n; i++ { + p.rawByte(tmp[i]) + } +} + +// rawStringln should only be used to emit the initial version string. +func (p *exporter) rawStringln(s string) { + for i := 0; i < len(s); i++ { + p.rawByte(s[i]) + } + p.rawByte('\n') +} + +// rawByte is the bottleneck interface to write to p.out. +// rawByte escapes b as follows (any encoding does that +// hides '$'): +// +// '$' => '|' 'S' +// '|' => '|' '|' +// +// Necessary so other tools can find the end of the +// export data by searching for "$$". +// rawByte should only be used by low-level encoders. +func (p *exporter) rawByte(b byte) { + switch b { + case '$': + // write '$' as '|' 'S' + b = 'S' + fallthrough + case '|': + // write '|' as '|' '|' + p.out.WriteByte('|') + p.written++ + } + p.out.WriteByte(b) + p.written++ +} + +// tracef is like fmt.Printf but it rewrites the format string +// to take care of indentation. +func (p *exporter) tracef(format string, args ...interface{}) { + if strings.IndexAny(format, "<>\n") >= 0 { + var buf bytes.Buffer + for i := 0; i < len(format); i++ { + // no need to deal with runes + ch := format[i] + switch ch { + case '>': + p.indent++ + continue + case '<': + p.indent-- + continue + } + buf.WriteByte(ch) + if ch == '\n' { + for j := p.indent; j > 0; j-- { + buf.WriteString(". ") + } + } + } + format = buf.String() + } + fmt.Printf(format, args...) +} + +// Debugging support. +// (tagString is only used when tracing is enabled) +var tagString = [...]string{ + // Packages: + -packageTag: "package", + + // Types: + -namedTag: "named type", + -arrayTag: "array", + -sliceTag: "slice", + -dddTag: "ddd", + -structTag: "struct", + -pointerTag: "pointer", + -signatureTag: "signature", + -interfaceTag: "interface", + -mapTag: "map", + -chanTag: "chan", + + // Values: + -falseTag: "false", + -trueTag: "true", + -int64Tag: "int64", + -floatTag: "float", + -fractionTag: "fraction", + -complexTag: "complex", + -stringTag: "string", + -unknownTag: "unknown", +} diff --git a/vendor/golang.org/x/tools/go/gcimporter15/bimport.go b/vendor/golang.org/x/tools/go/gcimporter15/bimport.go new file mode 100644 index 0000000..ce4b687 --- /dev/null +++ b/vendor/golang.org/x/tools/go/gcimporter15/bimport.go @@ -0,0 +1,965 @@ +// 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. + +// This file is a copy of $GOROOT/src/go/internal/gcimporter/bimport.go. + +package gcimporter + +import ( + "encoding/binary" + "fmt" + "go/constant" + "go/token" + "go/types" + "sort" + "strconv" + "strings" + "sync" + "unicode" + "unicode/utf8" +) + +type importer struct { + imports map[string]*types.Package + data []byte + path string + buf []byte // for reading strings + version int // export format version + + // object lists + strList []string // in order of appearance + pkgList []*types.Package // in order of appearance + typList []types.Type // in order of appearance + trackAllTypes bool + + // position encoding + posInfoFormat bool + prevFile string + prevLine int + fset *token.FileSet + files map[string]*token.File + + // debugging support + debugFormat bool + read int // bytes read +} + +// BImportData imports a package from the serialized package data +// and returns the number of bytes consumed and a reference to the package. +// If the export data version is not recognized or the format is otherwise +// compromised, an error is returned. +func BImportData(fset *token.FileSet, imports map[string]*types.Package, data []byte, path string) (_ int, _ *types.Package, err error) { + // catch panics and return them as errors + defer func() { + if e := recover(); e != nil { + // The package (filename) causing the problem is added to this + // error by a wrapper in the caller (Import in gcimporter.go). + err = fmt.Errorf("cannot import, possibly version skew (%v) - reinstall package", e) + } + }() + + p := importer{ + imports: imports, + data: data, + path: path, + version: -1, // unknown version + strList: []string{""}, // empty string is mapped to 0 + fset: fset, + files: make(map[string]*token.File), + } + + // read version info + var versionstr string + if b := p.rawByte(); b == 'c' || b == 'd' { + // Go1.7 encoding; first byte encodes low-level + // encoding format (compact vs debug). + // For backward-compatibility only (avoid problems with + // old installed packages). Newly compiled packages use + // the extensible format string. + // TODO(gri) Remove this support eventually; after Go1.8. + if b == 'd' { + p.debugFormat = true + } + p.trackAllTypes = p.rawByte() == 'a' + p.posInfoFormat = p.int() != 0 + versionstr = p.string() + if versionstr == "v1" { + p.version = 0 + } + } else { + // Go1.8 extensible encoding + // read version string and extract version number (ignore anything after the version number) + versionstr = p.rawStringln(b) + if s := strings.SplitN(versionstr, " ", 3); len(s) >= 2 && s[0] == "version" { + if v, err := strconv.Atoi(s[1]); err == nil && v > 0 { + p.version = v + } + } + } + + // read version specific flags - extend as necessary + switch p.version { + // case 4: + // ... + // fallthrough + case 3, 2, 1: + p.debugFormat = p.rawStringln(p.rawByte()) == "debug" + p.trackAllTypes = p.int() != 0 + p.posInfoFormat = p.int() != 0 + case 0: + // Go1.7 encoding format - nothing to do here + default: + errorf("unknown export format version %d (%q)", p.version, versionstr) + } + + // --- generic export data --- + + // populate typList with predeclared "known" types + p.typList = append(p.typList, predeclared...) + + // read package data + pkg := p.pkg() + + // read objects of phase 1 only (see cmd/compiler/internal/gc/bexport.go) + objcount := 0 + for { + tag := p.tagOrIndex() + if tag == endTag { + break + } + p.obj(tag) + objcount++ + } + + // self-verification + if count := p.int(); count != objcount { + errorf("got %d objects; want %d", objcount, count) + } + + // ignore compiler-specific import data + + // complete interfaces + for _, typ := range p.typList { + // If we only record named types (!p.trackAllTypes), + // we must check the underlying types here. If we + // track all types, the Underlying() method call is + // not needed. + // TODO(gri) Remove if p.trackAllTypes is gone. + if it, ok := typ.Underlying().(*types.Interface); ok { + it.Complete() + } + } + + // record all referenced packages as imports + list := append(([]*types.Package)(nil), p.pkgList[1:]...) + sort.Sort(byPath(list)) + pkg.SetImports(list) + + // package was imported completely and without errors + pkg.MarkComplete() + + return p.read, pkg, nil +} + +func errorf(format string, args ...interface{}) { + panic(fmt.Sprintf(format, args...)) +} + +func (p *importer) pkg() *types.Package { + // if the package was seen before, i is its index (>= 0) + i := p.tagOrIndex() + if i >= 0 { + return p.pkgList[i] + } + + // otherwise, i is the package tag (< 0) + if i != packageTag { + errorf("unexpected package tag %d", i) + } + + // read package data + name := p.string() + path := p.string() + + // we should never see an empty package name + if name == "" { + errorf("empty package name in import") + } + + // an empty path denotes the package we are currently importing; + // it must be the first package we see + if (path == "") != (len(p.pkgList) == 0) { + errorf("package path %q for pkg index %d", path, len(p.pkgList)) + } + + // if the package was imported before, use that one; otherwise create a new one + if path == "" { + path = p.path + } + pkg := p.imports[path] + if pkg == nil { + pkg = types.NewPackage(path, name) + p.imports[path] = pkg + } else if pkg.Name() != name { + errorf("conflicting names %s and %s for package %q", pkg.Name(), name, path) + } + p.pkgList = append(p.pkgList, pkg) + + return pkg +} + +// objTag returns the tag value for each object kind. +// obj must not be a *types.Alias. +func objTag(obj types.Object) int { + switch obj.(type) { + case *types.Const: + return constTag + case *types.TypeName: + return typeTag + case *types.Var: + return varTag + case *types.Func: + return funcTag + // Aliases are not exported multiple times, thus we should not see them here. + default: + errorf("unexpected object: %v (%T)", obj, obj) // panics + panic("unreachable") + } +} + +func sameObj(a, b types.Object) bool { + // Because unnamed types are not canonicalized, we cannot simply compare types for + // (pointer) identity. + // Ideally we'd check equality of constant values as well, but this is good enough. + return objTag(a) == objTag(b) && types.Identical(a.Type(), b.Type()) +} + +func (p *importer) declare(obj types.Object) { + pkg := obj.Pkg() + if alt := pkg.Scope().Insert(obj); alt != nil { + // This can only trigger if we import a (non-type) object a second time. + // Excluding aliases, this cannot happen because 1) we only import a package + // once; and b) we ignore compiler-specific export data which may contain + // functions whose inlined function bodies refer to other functions that + // were already imported. + // However, aliases require reexporting the original object, so we need + // to allow it (see also the comment in cmd/compile/internal/gc/bimport.go, + // method importer.obj, switch case importing functions). + // Note that the original itself cannot be an alias. + if !sameObj(obj, alt) { + errorf("inconsistent import:\n\t%v\npreviously imported as:\n\t%v\n", obj, alt) + } + } +} + +func (p *importer) obj(tag int) { + switch tag { + case constTag: + pos := p.pos() + pkg, name := p.qualifiedName() + typ := p.typ(nil) + val := p.value() + p.declare(types.NewConst(pos, pkg, name, typ, val)) + + case typeTag: + p.typ(nil) + + case varTag: + pos := p.pos() + pkg, name := p.qualifiedName() + typ := p.typ(nil) + p.declare(types.NewVar(pos, pkg, name, typ)) + + case funcTag: + pos := p.pos() + pkg, name := p.qualifiedName() + params, isddd := p.paramList() + result, _ := p.paramList() + sig := types.NewSignature(nil, params, result, isddd) + p.declare(types.NewFunc(pos, pkg, name, sig)) + + case aliasTag: + pos := p.pos() + name := p.string() + var orig types.Object + if pkg, name := p.qualifiedName(); pkg != nil { + orig = pkg.Scope().Lookup(name) + } + // Alias-related code. Keep for now. + _ = pos + _ = name + _ = orig + // p.declare(types.NewAlias(pos, p.pkgList[0], name, orig)) + + default: + errorf("unexpected object tag %d", tag) + } +} + +func (p *importer) pos() token.Pos { + if !p.posInfoFormat { + return token.NoPos + } + + file := p.prevFile + line := p.prevLine + if delta := p.int(); delta != 0 { + // line changed + line += delta + } else if n := p.int(); n >= 0 { + // file changed + file = p.prevFile[:n] + p.string() + p.prevFile = file + line = p.int() + } + p.prevLine = line + + // Synthesize a token.Pos + + // Since we don't know the set of needed file positions, we + // reserve maxlines positions per file. + const maxlines = 64 * 1024 + f := p.files[file] + if f == nil { + f = p.fset.AddFile(file, -1, maxlines) + p.files[file] = f + // Allocate the fake linebreak indices on first use. + // TODO(adonovan): opt: save ~512KB using a more complex scheme? + fakeLinesOnce.Do(func() { + fakeLines = make([]int, maxlines) + for i := range fakeLines { + fakeLines[i] = i + } + }) + f.SetLines(fakeLines) + } + + if line > maxlines { + line = 1 + } + + // Treat the file as if it contained only newlines + // and column=1: use the line number as the offset. + return f.Pos(line - 1) +} + +var ( + fakeLines []int + fakeLinesOnce sync.Once +) + +func (p *importer) qualifiedName() (pkg *types.Package, name string) { + name = p.string() + if name != "" { + pkg = p.pkg() + } + return +} + +func (p *importer) record(t types.Type) { + p.typList = append(p.typList, t) +} + +// A dddSlice is a types.Type representing ...T parameters. +// It only appears for parameter types and does not escape +// the importer. +type dddSlice struct { + elem types.Type +} + +func (t *dddSlice) Underlying() types.Type { return t } +func (t *dddSlice) String() string { return "..." + t.elem.String() } + +// parent is the package which declared the type; parent == nil means +// the package currently imported. The parent package is needed for +// exported struct fields and interface methods which don't contain +// explicit package information in the export data. +func (p *importer) typ(parent *types.Package) types.Type { + // if the type was seen before, i is its index (>= 0) + i := p.tagOrIndex() + if i >= 0 { + return p.typList[i] + } + + // otherwise, i is the type tag (< 0) + switch i { + case namedTag: + // read type object + pos := p.pos() + parent, name := p.qualifiedName() + scope := parent.Scope() + obj := scope.Lookup(name) + + // if the object doesn't exist yet, create and insert it + if obj == nil { + obj = types.NewTypeName(pos, parent, name, nil) + scope.Insert(obj) + } + + if _, ok := obj.(*types.TypeName); !ok { + errorf("pkg = %s, name = %s => %s", parent, name, obj) + } + + // associate new named type with obj if it doesn't exist yet + t0 := types.NewNamed(obj.(*types.TypeName), nil, nil) + + // but record the existing type, if any + t := obj.Type().(*types.Named) + p.record(t) + + // read underlying type + t0.SetUnderlying(p.typ(parent)) + + // interfaces don't have associated methods + if types.IsInterface(t0) { + return t + } + + // read associated methods + for i := p.int(); i > 0; i-- { + // TODO(gri) replace this with something closer to fieldName + pos := p.pos() + name := p.string() + if !exported(name) { + p.pkg() + } + + recv, _ := p.paramList() // TODO(gri) do we need a full param list for the receiver? + params, isddd := p.paramList() + result, _ := p.paramList() + p.int() // go:nointerface pragma - discarded + + sig := types.NewSignature(recv.At(0), params, result, isddd) + t0.AddMethod(types.NewFunc(pos, parent, name, sig)) + } + + return t + + case arrayTag: + t := new(types.Array) + if p.trackAllTypes { + p.record(t) + } + + n := p.int64() + *t = *types.NewArray(p.typ(parent), n) + return t + + case sliceTag: + t := new(types.Slice) + if p.trackAllTypes { + p.record(t) + } + + *t = *types.NewSlice(p.typ(parent)) + return t + + case dddTag: + t := new(dddSlice) + if p.trackAllTypes { + p.record(t) + } + + t.elem = p.typ(parent) + return t + + case structTag: + t := new(types.Struct) + if p.trackAllTypes { + p.record(t) + } + + *t = *types.NewStruct(p.fieldList(parent)) + return t + + case pointerTag: + t := new(types.Pointer) + if p.trackAllTypes { + p.record(t) + } + + *t = *types.NewPointer(p.typ(parent)) + return t + + case signatureTag: + t := new(types.Signature) + if p.trackAllTypes { + p.record(t) + } + + params, isddd := p.paramList() + result, _ := p.paramList() + *t = *types.NewSignature(nil, params, result, isddd) + return t + + case interfaceTag: + // Create a dummy entry in the type list. This is safe because we + // cannot expect the interface type to appear in a cycle, as any + // such cycle must contain a named type which would have been + // first defined earlier. + n := len(p.typList) + if p.trackAllTypes { + p.record(nil) + } + + // no embedded interfaces with gc compiler + if p.int() != 0 { + errorf("unexpected embedded interface") + } + + t := types.NewInterface(p.methodList(parent), nil) + if p.trackAllTypes { + p.typList[n] = t + } + return t + + case mapTag: + t := new(types.Map) + if p.trackAllTypes { + p.record(t) + } + + key := p.typ(parent) + val := p.typ(parent) + *t = *types.NewMap(key, val) + return t + + case chanTag: + t := new(types.Chan) + if p.trackAllTypes { + p.record(t) + } + + var dir types.ChanDir + // tag values must match the constants in cmd/compile/internal/gc/go.go + switch d := p.int(); d { + case 1 /* Crecv */ : + dir = types.RecvOnly + case 2 /* Csend */ : + dir = types.SendOnly + case 3 /* Cboth */ : + dir = types.SendRecv + default: + errorf("unexpected channel dir %d", d) + } + val := p.typ(parent) + *t = *types.NewChan(dir, val) + return t + + default: + errorf("unexpected type tag %d", i) // panics + panic("unreachable") + } +} + +func (p *importer) fieldList(parent *types.Package) (fields []*types.Var, tags []string) { + if n := p.int(); n > 0 { + fields = make([]*types.Var, n) + tags = make([]string, n) + for i := range fields { + fields[i] = p.field(parent) + tags[i] = p.string() + } + } + return +} + +func (p *importer) field(parent *types.Package) *types.Var { + pos := p.pos() + pkg, name := p.fieldName(parent) + typ := p.typ(parent) + + anonymous := false + if name == "" { + // anonymous field - typ must be T or *T and T must be a type name + switch typ := deref(typ).(type) { + case *types.Basic: // basic types are named types + pkg = nil // // objects defined in Universe scope have no package + name = typ.Name() + case *types.Named: + name = typ.Obj().Name() + default: + errorf("anonymous field expected") + } + anonymous = true + } + + return types.NewField(pos, pkg, name, typ, anonymous) +} + +func (p *importer) methodList(parent *types.Package) (methods []*types.Func) { + if n := p.int(); n > 0 { + methods = make([]*types.Func, n) + for i := range methods { + methods[i] = p.method(parent) + } + } + return +} + +func (p *importer) method(parent *types.Package) *types.Func { + pos := p.pos() + pkg, name := p.fieldName(parent) + params, isddd := p.paramList() + result, _ := p.paramList() + sig := types.NewSignature(nil, params, result, isddd) + return types.NewFunc(pos, pkg, name, sig) +} + +func (p *importer) fieldName(parent *types.Package) (*types.Package, string) { + name := p.string() + pkg := parent + if pkg == nil { + // use the imported package instead + pkg = p.pkgList[0] + } + if p.version == 0 && name == "_" { + // version 0 didn't export a package for _ fields + // see issue #15514 + + // For bug-compatibility with gc, pretend all imported + // blank fields belong to the same dummy package. + // This avoids spurious "cannot assign A to B" errors + // from go/types caused by types changing as they are + // re-exported. + const blankpkg = "<_>" + pkg := p.imports[blankpkg] + if pkg == nil { + pkg = types.NewPackage(blankpkg, blankpkg) + p.imports[blankpkg] = pkg + } + + return pkg, name + } + if name != "" && !exported(name) { + if name == "?" { + name = "" + } + pkg = p.pkg() + } + return pkg, name +} + +func (p *importer) paramList() (*types.Tuple, bool) { + n := p.int() + if n == 0 { + return nil, false + } + // negative length indicates unnamed parameters + named := true + if n < 0 { + n = -n + named = false + } + // n > 0 + params := make([]*types.Var, n) + isddd := false + for i := range params { + params[i], isddd = p.param(named) + } + return types.NewTuple(params...), isddd +} + +func (p *importer) param(named bool) (*types.Var, bool) { + t := p.typ(nil) + td, isddd := t.(*dddSlice) + if isddd { + t = types.NewSlice(td.elem) + } + + var pkg *types.Package + var name string + if named { + name = p.string() + if name == "" { + errorf("expected named parameter") + } + if name != "_" { + pkg = p.pkg() + } + if i := strings.Index(name, "·"); i > 0 { + name = name[:i] // cut off gc-specific parameter numbering + } + } + + // read and discard compiler-specific info + p.string() + + return types.NewVar(token.NoPos, pkg, name, t), isddd +} + +func exported(name string) bool { + ch, _ := utf8.DecodeRuneInString(name) + return unicode.IsUpper(ch) +} + +func (p *importer) value() constant.Value { + switch tag := p.tagOrIndex(); tag { + case falseTag: + return constant.MakeBool(false) + case trueTag: + return constant.MakeBool(true) + case int64Tag: + return constant.MakeInt64(p.int64()) + case floatTag: + return p.float() + case complexTag: + re := p.float() + im := p.float() + return constant.BinaryOp(re, token.ADD, constant.MakeImag(im)) + case stringTag: + return constant.MakeString(p.string()) + case unknownTag: + return constant.MakeUnknown() + default: + errorf("unexpected value tag %d", tag) // panics + panic("unreachable") + } +} + +func (p *importer) float() constant.Value { + sign := p.int() + if sign == 0 { + return constant.MakeInt64(0) + } + + exp := p.int() + mant := []byte(p.string()) // big endian + + // remove leading 0's if any + for len(mant) > 0 && mant[0] == 0 { + mant = mant[1:] + } + + // convert to little endian + // TODO(gri) go/constant should have a more direct conversion function + // (e.g., once it supports a big.Float based implementation) + for i, j := 0, len(mant)-1; i < j; i, j = i+1, j-1 { + mant[i], mant[j] = mant[j], mant[i] + } + + // adjust exponent (constant.MakeFromBytes creates an integer value, + // but mant represents the mantissa bits such that 0.5 <= mant < 1.0) + exp -= len(mant) << 3 + if len(mant) > 0 { + for msd := mant[len(mant)-1]; msd&0x80 == 0; msd <<= 1 { + exp++ + } + } + + x := constant.MakeFromBytes(mant) + switch { + case exp < 0: + d := constant.Shift(constant.MakeInt64(1), token.SHL, uint(-exp)) + x = constant.BinaryOp(x, token.QUO, d) + case exp > 0: + x = constant.Shift(x, token.SHL, uint(exp)) + } + + if sign < 0 { + x = constant.UnaryOp(token.SUB, x, 0) + } + return x +} + +// ---------------------------------------------------------------------------- +// Low-level decoders + +func (p *importer) tagOrIndex() int { + if p.debugFormat { + p.marker('t') + } + + return int(p.rawInt64()) +} + +func (p *importer) int() int { + x := p.int64() + if int64(int(x)) != x { + errorf("exported integer too large") + } + return int(x) +} + +func (p *importer) int64() int64 { + if p.debugFormat { + p.marker('i') + } + + return p.rawInt64() +} + +func (p *importer) string() string { + if p.debugFormat { + p.marker('s') + } + // if the string was seen before, i is its index (>= 0) + // (the empty string is at index 0) + i := p.rawInt64() + if i >= 0 { + return p.strList[i] + } + // otherwise, i is the negative string length (< 0) + if n := int(-i); n <= cap(p.buf) { + p.buf = p.buf[:n] + } else { + p.buf = make([]byte, n) + } + for i := range p.buf { + p.buf[i] = p.rawByte() + } + s := string(p.buf) + p.strList = append(p.strList, s) + return s +} + +func (p *importer) marker(want byte) { + if got := p.rawByte(); got != want { + errorf("incorrect marker: got %c; want %c (pos = %d)", got, want, p.read) + } + + pos := p.read + if n := int(p.rawInt64()); n != pos { + errorf("incorrect position: got %d; want %d", n, pos) + } +} + +// rawInt64 should only be used by low-level decoders. +func (p *importer) rawInt64() int64 { + i, err := binary.ReadVarint(p) + if err != nil { + errorf("read error: %v", err) + } + return i +} + +// rawStringln should only be used to read the initial version string. +func (p *importer) rawStringln(b byte) string { + p.buf = p.buf[:0] + for b != '\n' { + p.buf = append(p.buf, b) + b = p.rawByte() + } + return string(p.buf) +} + +// needed for binary.ReadVarint in rawInt64 +func (p *importer) ReadByte() (byte, error) { + return p.rawByte(), nil +} + +// byte is the bottleneck interface for reading p.data. +// It unescapes '|' 'S' to '$' and '|' '|' to '|'. +// rawByte should only be used by low-level decoders. +func (p *importer) rawByte() byte { + b := p.data[0] + r := 1 + if b == '|' { + b = p.data[1] + r = 2 + switch b { + case 'S': + b = '$' + case '|': + // nothing to do + default: + errorf("unexpected escape sequence in export data") + } + } + p.data = p.data[r:] + p.read += r + return b + +} + +// ---------------------------------------------------------------------------- +// Export format + +// Tags. Must be < 0. +const ( + // Objects + packageTag = -(iota + 1) + constTag + typeTag + varTag + funcTag + endTag + + // Types + namedTag + arrayTag + sliceTag + dddTag + structTag + pointerTag + signatureTag + interfaceTag + mapTag + chanTag + + // Values + falseTag + trueTag + int64Tag + floatTag + fractionTag // not used by gc + complexTag + stringTag + nilTag // only used by gc (appears in exported inlined function bodies) + unknownTag // not used by gc (only appears in packages with errors) + + // Aliases + aliasTag +) + +var predeclared = []types.Type{ + // basic types + types.Typ[types.Bool], + types.Typ[types.Int], + types.Typ[types.Int8], + types.Typ[types.Int16], + types.Typ[types.Int32], + types.Typ[types.Int64], + types.Typ[types.Uint], + types.Typ[types.Uint8], + types.Typ[types.Uint16], + types.Typ[types.Uint32], + types.Typ[types.Uint64], + types.Typ[types.Uintptr], + types.Typ[types.Float32], + types.Typ[types.Float64], + types.Typ[types.Complex64], + types.Typ[types.Complex128], + types.Typ[types.String], + + // aliases + types.Universe.Lookup("byte").Type(), + types.Universe.Lookup("rune").Type(), + + // error + types.Universe.Lookup("error").Type(), + + // untyped types + types.Typ[types.UntypedBool], + types.Typ[types.UntypedInt], + types.Typ[types.UntypedRune], + types.Typ[types.UntypedFloat], + types.Typ[types.UntypedComplex], + types.Typ[types.UntypedString], + types.Typ[types.UntypedNil], + + // package unsafe + types.Typ[types.UnsafePointer], + + // invalid type + types.Typ[types.Invalid], // only appears in packages with errors + + // used internally by gc; never used by this package or in .a files + anyType{}, +} + +type anyType struct{} + +func (t anyType) Underlying() types.Type { return t } +func (t anyType) String() string { return "any" } diff --git a/vendor/golang.org/x/tools/go/gcimporter15/exportdata.go b/vendor/golang.org/x/tools/go/gcimporter15/exportdata.go new file mode 100644 index 0000000..f33dc56 --- /dev/null +++ b/vendor/golang.org/x/tools/go/gcimporter15/exportdata.go @@ -0,0 +1,93 @@ +// 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. + +// This file is a copy of $GOROOT/src/go/internal/gcimporter/exportdata.go. + +// This file implements FindExportData. + +package gcimporter + +import ( + "bufio" + "fmt" + "io" + "strconv" + "strings" +) + +func readGopackHeader(r *bufio.Reader) (name string, size int, err error) { + // See $GOROOT/include/ar.h. + hdr := make([]byte, 16+12+6+6+8+10+2) + _, err = io.ReadFull(r, hdr) + if err != nil { + return + } + // leave for debugging + if false { + fmt.Printf("header: %s", hdr) + } + s := strings.TrimSpace(string(hdr[16+12+6+6+8:][:10])) + size, err = strconv.Atoi(s) + if err != nil || hdr[len(hdr)-2] != '`' || hdr[len(hdr)-1] != '\n' { + err = fmt.Errorf("invalid archive header") + return + } + name = strings.TrimSpace(string(hdr[:16])) + return +} + +// FindExportData positions the reader r at the beginning of the +// export data section of an underlying GC-created object/archive +// file by reading from it. The reader must be positioned at the +// start of the file before calling this function. The hdr result +// is the string before the export data, either "$$" or "$$B". +// +func FindExportData(r *bufio.Reader) (hdr string, err error) { + // Read first line to make sure this is an object file. + line, err := r.ReadSlice('\n') + if err != nil { + err = fmt.Errorf("can't find export data (%v)", err) + return + } + + if string(line) == "!\n" { + // Archive file. Scan to __.PKGDEF. + var name string + if name, _, err = readGopackHeader(r); err != nil { + return + } + + // First entry should be __.PKGDEF. + if name != "__.PKGDEF" { + err = fmt.Errorf("go archive is missing __.PKGDEF") + return + } + + // Read first line of __.PKGDEF data, so that line + // is once again the first line of the input. + if line, err = r.ReadSlice('\n'); err != nil { + err = fmt.Errorf("can't find export data (%v)", err) + return + } + } + + // Now at __.PKGDEF in archive or still at beginning of file. + // Either way, line should begin with "go object ". + if !strings.HasPrefix(string(line), "go object ") { + err = fmt.Errorf("not a Go object file") + return + } + + // Skip over object header to export data. + // Begins after first line starting with $$. + for line[0] != '$' { + if line, err = r.ReadSlice('\n'); err != nil { + err = fmt.Errorf("can't find export data (%v)", err) + return + } + } + hdr = string(line) + + return +} diff --git a/vendor/golang.org/x/tools/go/gcimporter15/gcimporter.go b/vendor/golang.org/x/tools/go/gcimporter15/gcimporter.go new file mode 100644 index 0000000..370203b --- /dev/null +++ b/vendor/golang.org/x/tools/go/gcimporter15/gcimporter.go @@ -0,0 +1,1041 @@ +// 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. + +// This file is a copy of $GOROOT/src/go/internal/gcimporter/gcimporter.go, +// but it also contains the original source-based importer code for Go1.6. +// Once we stop supporting 1.6, we can remove that code. + +// Package gcimporter15 provides various functions for reading +// gc-generated object files that can be used to implement the +// Importer interface defined by the Go 1.5 standard library package. +// +// Deprecated: this package will be deleted in October 2017. +// New code should use golang.org/x/tools/go/gcexportdata. +// +package gcimporter + +import ( + "bufio" + "errors" + "fmt" + "go/build" + exact "go/constant" + "go/token" + "go/types" + "io" + "io/ioutil" + "os" + "path/filepath" + "sort" + "strconv" + "strings" + "text/scanner" +) + +// debugging/development support +const debug = false + +var pkgExts = [...]string{".a", ".o"} + +// FindPkg returns the filename and unique package id for an import +// path based on package information provided by build.Import (using +// the build.Default build.Context). A relative srcDir is interpreted +// relative to the current working directory. +// If no file was found, an empty filename is returned. +// +func FindPkg(path, srcDir string) (filename, id string) { + if path == "" { + return + } + + var noext string + switch { + default: + // "x" -> "$GOPATH/pkg/$GOOS_$GOARCH/x.ext", "x" + // Don't require the source files to be present. + if abs, err := filepath.Abs(srcDir); err == nil { // see issue 14282 + srcDir = abs + } + bp, _ := build.Import(path, srcDir, build.FindOnly|build.AllowBinary) + if bp.PkgObj == "" { + return + } + noext = strings.TrimSuffix(bp.PkgObj, ".a") + id = bp.ImportPath + + case build.IsLocalImport(path): + // "./x" -> "/this/directory/x.ext", "/this/directory/x" + noext = filepath.Join(srcDir, path) + id = noext + + case filepath.IsAbs(path): + // for completeness only - go/build.Import + // does not support absolute imports + // "/x" -> "/x.ext", "/x" + noext = path + id = path + } + + if false { // for debugging + if path != id { + fmt.Printf("%s -> %s\n", path, id) + } + } + + // try extensions + for _, ext := range pkgExts { + filename = noext + ext + if f, err := os.Stat(filename); err == nil && !f.IsDir() { + return + } + } + + filename = "" // not found + return +} + +// ImportData imports a package by reading the gc-generated export data, +// adds the corresponding package object to the packages map indexed by id, +// and returns the object. +// +// The packages map must contains all packages already imported. The data +// reader position must be the beginning of the export data section. The +// filename is only used in error messages. +// +// If packages[id] contains the completely imported package, that package +// can be used directly, and there is no need to call this function (but +// there is also no harm but for extra time used). +// +func ImportData(packages map[string]*types.Package, filename, id string, data io.Reader) (pkg *types.Package, err error) { + // support for parser error handling + defer func() { + switch r := recover().(type) { + case nil: + // nothing to do + case importError: + err = r + default: + panic(r) // internal error + } + }() + + var p parser + p.init(filename, id, data, packages) + pkg = p.parseExport() + + return +} + +// Import imports a gc-generated package given its import path and srcDir, adds +// the corresponding package object to the packages map, and returns the object. +// The packages map must contain all packages already imported. +// +func Import(packages map[string]*types.Package, path, srcDir string) (pkg *types.Package, err error) { + filename, id := FindPkg(path, srcDir) + if filename == "" { + if path == "unsafe" { + return types.Unsafe, nil + } + err = fmt.Errorf("can't find import: %s", id) + return + } + + // no need to re-import if the package was imported completely before + if pkg = packages[id]; pkg != nil && pkg.Complete() { + return + } + + // open file + f, err := os.Open(filename) + if err != nil { + return + } + defer func() { + f.Close() + if err != nil { + // add file name to error + err = fmt.Errorf("reading export data: %s: %v", filename, err) + } + }() + + var hdr string + buf := bufio.NewReader(f) + if hdr, err = FindExportData(buf); err != nil { + return + } + + switch hdr { + case "$$\n": + return ImportData(packages, filename, id, buf) + case "$$B\n": + var data []byte + data, err = ioutil.ReadAll(buf) + if err == nil { + fset := token.NewFileSet() + _, pkg, err = BImportData(fset, packages, data, id) + return + } + default: + err = fmt.Errorf("unknown export data header: %q", hdr) + } + + return +} + +// ---------------------------------------------------------------------------- +// Parser + +// TODO(gri) Imported objects don't have position information. +// Ideally use the debug table line info; alternatively +// create some fake position (or the position of the +// import). That way error messages referring to imported +// objects can print meaningful information. + +// parser parses the exports inside a gc compiler-produced +// object/archive file and populates its scope with the results. +type parser struct { + scanner scanner.Scanner + tok rune // current token + lit string // literal string; only valid for Ident, Int, String tokens + id string // package id of imported package + sharedPkgs map[string]*types.Package // package id -> package object (across importer) + localPkgs map[string]*types.Package // package id -> package object (just this package) +} + +func (p *parser) init(filename, id string, src io.Reader, packages map[string]*types.Package) { + p.scanner.Init(src) + p.scanner.Error = func(_ *scanner.Scanner, msg string) { p.error(msg) } + p.scanner.Mode = scanner.ScanIdents | scanner.ScanInts | scanner.ScanChars | scanner.ScanStrings | scanner.ScanComments | scanner.SkipComments + p.scanner.Whitespace = 1<<'\t' | 1<<' ' + p.scanner.Filename = filename // for good error messages + p.next() + p.id = id + p.sharedPkgs = packages + if debug { + // check consistency of packages map + for _, pkg := range packages { + if pkg.Name() == "" { + fmt.Printf("no package name for %s\n", pkg.Path()) + } + } + } +} + +func (p *parser) next() { + p.tok = p.scanner.Scan() + switch p.tok { + case scanner.Ident, scanner.Int, scanner.Char, scanner.String, '·': + p.lit = p.scanner.TokenText() + default: + p.lit = "" + } + if debug { + fmt.Printf("%s: %q -> %q\n", scanner.TokenString(p.tok), p.scanner.TokenText(), p.lit) + } +} + +func declTypeName(pkg *types.Package, name string) *types.TypeName { + scope := pkg.Scope() + if obj := scope.Lookup(name); obj != nil { + return obj.(*types.TypeName) + } + obj := types.NewTypeName(token.NoPos, pkg, name, nil) + // a named type may be referred to before the underlying type + // is known - set it up + types.NewNamed(obj, nil, nil) + scope.Insert(obj) + return obj +} + +// ---------------------------------------------------------------------------- +// Error handling + +// Internal errors are boxed as importErrors. +type importError struct { + pos scanner.Position + err error +} + +func (e importError) Error() string { + return fmt.Sprintf("import error %s (byte offset = %d): %s", e.pos, e.pos.Offset, e.err) +} + +func (p *parser) error(err interface{}) { + if s, ok := err.(string); ok { + err = errors.New(s) + } + // panic with a runtime.Error if err is not an error + panic(importError{p.scanner.Pos(), err.(error)}) +} + +func (p *parser) errorf(format string, args ...interface{}) { + p.error(fmt.Sprintf(format, args...)) +} + +func (p *parser) expect(tok rune) string { + lit := p.lit + if p.tok != tok { + p.errorf("expected %s, got %s (%s)", scanner.TokenString(tok), scanner.TokenString(p.tok), lit) + } + p.next() + return lit +} + +func (p *parser) expectSpecial(tok string) { + sep := 'x' // not white space + i := 0 + for i < len(tok) && p.tok == rune(tok[i]) && sep > ' ' { + sep = p.scanner.Peek() // if sep <= ' ', there is white space before the next token + p.next() + i++ + } + if i < len(tok) { + p.errorf("expected %q, got %q", tok, tok[0:i]) + } +} + +func (p *parser) expectKeyword(keyword string) { + lit := p.expect(scanner.Ident) + if lit != keyword { + p.errorf("expected keyword %s, got %q", keyword, lit) + } +} + +// ---------------------------------------------------------------------------- +// Qualified and unqualified names + +// PackageId = string_lit . +// +func (p *parser) parsePackageId() string { + id, err := strconv.Unquote(p.expect(scanner.String)) + if err != nil { + p.error(err) + } + // id == "" stands for the imported package id + // (only known at time of package installation) + if id == "" { + id = p.id + } + return id +} + +// PackageName = ident . +// +func (p *parser) parsePackageName() string { + return p.expect(scanner.Ident) +} + +// dotIdentifier = ( ident | '·' ) { ident | int | '·' } . +func (p *parser) parseDotIdent() string { + ident := "" + if p.tok != scanner.Int { + sep := 'x' // not white space + for (p.tok == scanner.Ident || p.tok == scanner.Int || p.tok == '·') && sep > ' ' { + ident += p.lit + sep = p.scanner.Peek() // if sep <= ' ', there is white space before the next token + p.next() + } + } + if ident == "" { + p.expect(scanner.Ident) // use expect() for error handling + } + return ident +} + +// QualifiedName = "@" PackageId "." ( "?" | dotIdentifier ) . +// +func (p *parser) parseQualifiedName() (id, name string) { + p.expect('@') + id = p.parsePackageId() + p.expect('.') + // Per rev f280b8a485fd (10/2/2013), qualified names may be used for anonymous fields. + if p.tok == '?' { + p.next() + } else { + name = p.parseDotIdent() + } + return +} + +// getPkg returns the package for a given id. If the package is +// not found, create the package and add it to the p.localPkgs +// and p.sharedPkgs maps. name is the (expected) name of the +// package. If name == "", the package name is expected to be +// set later via an import clause in the export data. +// +// id identifies a package, usually by a canonical package path like +// "encoding/json" but possibly by a non-canonical import path like +// "./json". +// +func (p *parser) getPkg(id, name string) *types.Package { + // package unsafe is not in the packages maps - handle explicitly + if id == "unsafe" { + return types.Unsafe + } + + pkg := p.localPkgs[id] + if pkg == nil { + // first import of id from this package + pkg = p.sharedPkgs[id] + if pkg == nil { + // first import of id by this importer; + // add (possibly unnamed) pkg to shared packages + pkg = types.NewPackage(id, name) + p.sharedPkgs[id] = pkg + } + // add (possibly unnamed) pkg to local packages + if p.localPkgs == nil { + p.localPkgs = make(map[string]*types.Package) + } + p.localPkgs[id] = pkg + } else if name != "" { + // package exists already and we have an expected package name; + // make sure names match or set package name if necessary + if pname := pkg.Name(); pname == "" { + pkg.SetName(name) + } else if pname != name { + p.errorf("%s package name mismatch: %s (given) vs %s (expected)", id, pname, name) + } + } + return pkg +} + +// parseExportedName is like parseQualifiedName, but +// the package id is resolved to an imported *types.Package. +// +func (p *parser) parseExportedName() (pkg *types.Package, name string) { + id, name := p.parseQualifiedName() + pkg = p.getPkg(id, "") + return +} + +// ---------------------------------------------------------------------------- +// Types + +// BasicType = identifier . +// +func (p *parser) parseBasicType() types.Type { + id := p.expect(scanner.Ident) + obj := types.Universe.Lookup(id) + if obj, ok := obj.(*types.TypeName); ok { + return obj.Type() + } + p.errorf("not a basic type: %s", id) + return nil +} + +// ArrayType = "[" int_lit "]" Type . +// +func (p *parser) parseArrayType(parent *types.Package) types.Type { + // "[" already consumed and lookahead known not to be "]" + lit := p.expect(scanner.Int) + p.expect(']') + elem := p.parseType(parent) + n, err := strconv.ParseInt(lit, 10, 64) + if err != nil { + p.error(err) + } + return types.NewArray(elem, n) +} + +// MapType = "map" "[" Type "]" Type . +// +func (p *parser) parseMapType(parent *types.Package) types.Type { + p.expectKeyword("map") + p.expect('[') + key := p.parseType(parent) + p.expect(']') + elem := p.parseType(parent) + return types.NewMap(key, elem) +} + +// Name = identifier | "?" | QualifiedName . +// +// For unqualified and anonymous names, the returned package is the parent +// package unless parent == nil, in which case the returned package is the +// package being imported. (The parent package is not nil if the the name +// is an unqualified struct field or interface method name belonging to a +// type declared in another package.) +// +// For qualified names, the returned package is nil (and not created if +// it doesn't exist yet) unless materializePkg is set (which creates an +// unnamed package with valid package path). In the latter case, a +// subsequent import clause is expected to provide a name for the package. +// +func (p *parser) parseName(parent *types.Package, materializePkg bool) (pkg *types.Package, name string) { + pkg = parent + if pkg == nil { + pkg = p.sharedPkgs[p.id] + } + switch p.tok { + case scanner.Ident: + name = p.lit + p.next() + case '?': + // anonymous + p.next() + case '@': + // exported name prefixed with package path + pkg = nil + var id string + id, name = p.parseQualifiedName() + if materializePkg { + pkg = p.getPkg(id, "") + } + default: + p.error("name expected") + } + return +} + +func deref(typ types.Type) types.Type { + if p, _ := typ.(*types.Pointer); p != nil { + return p.Elem() + } + return typ +} + +// Field = Name Type [ string_lit ] . +// +func (p *parser) parseField(parent *types.Package) (*types.Var, string) { + pkg, name := p.parseName(parent, true) + + if name == "_" { + // Blank fields should be package-qualified because they + // are unexported identifiers, but gc does not qualify them. + // Assuming that the ident belongs to the current package + // causes types to change during re-exporting, leading + // to spurious "can't assign A to B" errors from go/types. + // As a workaround, pretend all blank fields belong + // to the same unique dummy package. + const blankpkg = "<_>" + pkg = p.getPkg(blankpkg, blankpkg) + } + + typ := p.parseType(parent) + anonymous := false + if name == "" { + // anonymous field - typ must be T or *T and T must be a type name + switch typ := deref(typ).(type) { + case *types.Basic: // basic types are named types + pkg = nil // objects defined in Universe scope have no package + name = typ.Name() + case *types.Named: + name = typ.Obj().Name() + default: + p.errorf("anonymous field expected") + } + anonymous = true + } + tag := "" + if p.tok == scanner.String { + s := p.expect(scanner.String) + var err error + tag, err = strconv.Unquote(s) + if err != nil { + p.errorf("invalid struct tag %s: %s", s, err) + } + } + return types.NewField(token.NoPos, pkg, name, typ, anonymous), tag +} + +// StructType = "struct" "{" [ FieldList ] "}" . +// FieldList = Field { ";" Field } . +// +func (p *parser) parseStructType(parent *types.Package) types.Type { + var fields []*types.Var + var tags []string + + p.expectKeyword("struct") + p.expect('{') + for i := 0; p.tok != '}' && p.tok != scanner.EOF; i++ { + if i > 0 { + p.expect(';') + } + fld, tag := p.parseField(parent) + if tag != "" && tags == nil { + tags = make([]string, i) + } + if tags != nil { + tags = append(tags, tag) + } + fields = append(fields, fld) + } + p.expect('}') + + return types.NewStruct(fields, tags) +} + +// Parameter = ( identifier | "?" ) [ "..." ] Type [ string_lit ] . +// +func (p *parser) parseParameter() (par *types.Var, isVariadic bool) { + _, name := p.parseName(nil, false) + // remove gc-specific parameter numbering + if i := strings.Index(name, "·"); i >= 0 { + name = name[:i] + } + if p.tok == '.' { + p.expectSpecial("...") + isVariadic = true + } + typ := p.parseType(nil) + if isVariadic { + typ = types.NewSlice(typ) + } + // ignore argument tag (e.g. "noescape") + if p.tok == scanner.String { + p.next() + } + // TODO(gri) should we provide a package? + par = types.NewVar(token.NoPos, nil, name, typ) + return +} + +// Parameters = "(" [ ParameterList ] ")" . +// ParameterList = { Parameter "," } Parameter . +// +func (p *parser) parseParameters() (list []*types.Var, isVariadic bool) { + p.expect('(') + for p.tok != ')' && p.tok != scanner.EOF { + if len(list) > 0 { + p.expect(',') + } + par, variadic := p.parseParameter() + list = append(list, par) + if variadic { + if isVariadic { + p.error("... not on final argument") + } + isVariadic = true + } + } + p.expect(')') + + return +} + +// Signature = Parameters [ Result ] . +// Result = Type | Parameters . +// +func (p *parser) parseSignature(recv *types.Var) *types.Signature { + params, isVariadic := p.parseParameters() + + // optional result type + var results []*types.Var + if p.tok == '(' { + var variadic bool + results, variadic = p.parseParameters() + if variadic { + p.error("... not permitted on result type") + } + } + + return types.NewSignature(recv, types.NewTuple(params...), types.NewTuple(results...), isVariadic) +} + +// InterfaceType = "interface" "{" [ MethodList ] "}" . +// MethodList = Method { ";" Method } . +// Method = Name Signature . +// +// The methods of embedded interfaces are always "inlined" +// by the compiler and thus embedded interfaces are never +// visible in the export data. +// +func (p *parser) parseInterfaceType(parent *types.Package) types.Type { + var methods []*types.Func + + p.expectKeyword("interface") + p.expect('{') + for i := 0; p.tok != '}' && p.tok != scanner.EOF; i++ { + if i > 0 { + p.expect(';') + } + pkg, name := p.parseName(parent, true) + sig := p.parseSignature(nil) + methods = append(methods, types.NewFunc(token.NoPos, pkg, name, sig)) + } + p.expect('}') + + // Complete requires the type's embedded interfaces to be fully defined, + // but we do not define any + return types.NewInterface(methods, nil).Complete() +} + +// ChanType = ( "chan" [ "<-" ] | "<-" "chan" ) Type . +// +func (p *parser) parseChanType(parent *types.Package) types.Type { + dir := types.SendRecv + if p.tok == scanner.Ident { + p.expectKeyword("chan") + if p.tok == '<' { + p.expectSpecial("<-") + dir = types.SendOnly + } + } else { + p.expectSpecial("<-") + p.expectKeyword("chan") + dir = types.RecvOnly + } + elem := p.parseType(parent) + return types.NewChan(dir, elem) +} + +// Type = +// BasicType | TypeName | ArrayType | SliceType | StructType | +// PointerType | FuncType | InterfaceType | MapType | ChanType | +// "(" Type ")" . +// +// BasicType = ident . +// TypeName = ExportedName . +// SliceType = "[" "]" Type . +// PointerType = "*" Type . +// FuncType = "func" Signature . +// +func (p *parser) parseType(parent *types.Package) types.Type { + switch p.tok { + case scanner.Ident: + switch p.lit { + default: + return p.parseBasicType() + case "struct": + return p.parseStructType(parent) + case "func": + // FuncType + p.next() + return p.parseSignature(nil) + case "interface": + return p.parseInterfaceType(parent) + case "map": + return p.parseMapType(parent) + case "chan": + return p.parseChanType(parent) + } + case '@': + // TypeName + pkg, name := p.parseExportedName() + return declTypeName(pkg, name).Type() + case '[': + p.next() // look ahead + if p.tok == ']' { + // SliceType + p.next() + return types.NewSlice(p.parseType(parent)) + } + return p.parseArrayType(parent) + case '*': + // PointerType + p.next() + return types.NewPointer(p.parseType(parent)) + case '<': + return p.parseChanType(parent) + case '(': + // "(" Type ")" + p.next() + typ := p.parseType(parent) + p.expect(')') + return typ + } + p.errorf("expected type, got %s (%q)", scanner.TokenString(p.tok), p.lit) + return nil +} + +// ---------------------------------------------------------------------------- +// Declarations + +// ImportDecl = "import" PackageName PackageId . +// +func (p *parser) parseImportDecl() { + p.expectKeyword("import") + name := p.parsePackageName() + p.getPkg(p.parsePackageId(), name) +} + +// int_lit = [ "+" | "-" ] { "0" ... "9" } . +// +func (p *parser) parseInt() string { + s := "" + switch p.tok { + case '-': + s = "-" + p.next() + case '+': + p.next() + } + return s + p.expect(scanner.Int) +} + +// number = int_lit [ "p" int_lit ] . +// +func (p *parser) parseNumber() (typ *types.Basic, val exact.Value) { + // mantissa + mant := exact.MakeFromLiteral(p.parseInt(), token.INT, 0) + if mant == nil { + panic("invalid mantissa") + } + + if p.lit == "p" { + // exponent (base 2) + p.next() + exp, err := strconv.ParseInt(p.parseInt(), 10, 0) + if err != nil { + p.error(err) + } + if exp < 0 { + denom := exact.MakeInt64(1) + denom = exact.Shift(denom, token.SHL, uint(-exp)) + typ = types.Typ[types.UntypedFloat] + val = exact.BinaryOp(mant, token.QUO, denom) + return + } + if exp > 0 { + mant = exact.Shift(mant, token.SHL, uint(exp)) + } + typ = types.Typ[types.UntypedFloat] + val = mant + return + } + + typ = types.Typ[types.UntypedInt] + val = mant + return +} + +// ConstDecl = "const" ExportedName [ Type ] "=" Literal . +// Literal = bool_lit | int_lit | float_lit | complex_lit | rune_lit | string_lit . +// bool_lit = "true" | "false" . +// complex_lit = "(" float_lit "+" float_lit "i" ")" . +// rune_lit = "(" int_lit "+" int_lit ")" . +// string_lit = `"` { unicode_char } `"` . +// +func (p *parser) parseConstDecl() { + p.expectKeyword("const") + pkg, name := p.parseExportedName() + + var typ0 types.Type + if p.tok != '=' { + // constant types are never structured - no need for parent type + typ0 = p.parseType(nil) + } + + p.expect('=') + var typ types.Type + var val exact.Value + switch p.tok { + case scanner.Ident: + // bool_lit + if p.lit != "true" && p.lit != "false" { + p.error("expected true or false") + } + typ = types.Typ[types.UntypedBool] + val = exact.MakeBool(p.lit == "true") + p.next() + + case '-', scanner.Int: + // int_lit + typ, val = p.parseNumber() + + case '(': + // complex_lit or rune_lit + p.next() + if p.tok == scanner.Char { + p.next() + p.expect('+') + typ = types.Typ[types.UntypedRune] + _, val = p.parseNumber() + p.expect(')') + break + } + _, re := p.parseNumber() + p.expect('+') + _, im := p.parseNumber() + p.expectKeyword("i") + p.expect(')') + typ = types.Typ[types.UntypedComplex] + val = exact.BinaryOp(re, token.ADD, exact.MakeImag(im)) + + case scanner.Char: + // rune_lit + typ = types.Typ[types.UntypedRune] + val = exact.MakeFromLiteral(p.lit, token.CHAR, 0) + p.next() + + case scanner.String: + // string_lit + typ = types.Typ[types.UntypedString] + val = exact.MakeFromLiteral(p.lit, token.STRING, 0) + p.next() + + default: + p.errorf("expected literal got %s", scanner.TokenString(p.tok)) + } + + if typ0 == nil { + typ0 = typ + } + + pkg.Scope().Insert(types.NewConst(token.NoPos, pkg, name, typ0, val)) +} + +// TypeDecl = "type" ExportedName Type . +// +func (p *parser) parseTypeDecl() { + p.expectKeyword("type") + pkg, name := p.parseExportedName() + obj := declTypeName(pkg, name) + + // The type object may have been imported before and thus already + // have a type associated with it. We still need to parse the type + // structure, but throw it away if the object already has a type. + // This ensures that all imports refer to the same type object for + // a given type declaration. + typ := p.parseType(pkg) + + if name := obj.Type().(*types.Named); name.Underlying() == nil { + name.SetUnderlying(typ) + } +} + +// VarDecl = "var" ExportedName Type . +// +func (p *parser) parseVarDecl() { + p.expectKeyword("var") + pkg, name := p.parseExportedName() + typ := p.parseType(pkg) + pkg.Scope().Insert(types.NewVar(token.NoPos, pkg, name, typ)) +} + +// Func = Signature [ Body ] . +// Body = "{" ... "}" . +// +func (p *parser) parseFunc(recv *types.Var) *types.Signature { + sig := p.parseSignature(recv) + if p.tok == '{' { + p.next() + for i := 1; i > 0; p.next() { + switch p.tok { + case '{': + i++ + case '}': + i-- + } + } + } + return sig +} + +// MethodDecl = "func" Receiver Name Func . +// Receiver = "(" ( identifier | "?" ) [ "*" ] ExportedName ")" . +// +func (p *parser) parseMethodDecl() { + // "func" already consumed + p.expect('(') + recv, _ := p.parseParameter() // receiver + p.expect(')') + + // determine receiver base type object + base := deref(recv.Type()).(*types.Named) + + // parse method name, signature, and possibly inlined body + _, name := p.parseName(nil, false) + sig := p.parseFunc(recv) + + // methods always belong to the same package as the base type object + pkg := base.Obj().Pkg() + + // add method to type unless type was imported before + // and method exists already + // TODO(gri) This leads to a quadratic algorithm - ok for now because method counts are small. + base.AddMethod(types.NewFunc(token.NoPos, pkg, name, sig)) +} + +// FuncDecl = "func" ExportedName Func . +// +func (p *parser) parseFuncDecl() { + // "func" already consumed + pkg, name := p.parseExportedName() + typ := p.parseFunc(nil) + pkg.Scope().Insert(types.NewFunc(token.NoPos, pkg, name, typ)) +} + +// Decl = [ ImportDecl | ConstDecl | TypeDecl | VarDecl | FuncDecl | MethodDecl ] "\n" . +// +func (p *parser) parseDecl() { + if p.tok == scanner.Ident { + switch p.lit { + case "import": + p.parseImportDecl() + case "const": + p.parseConstDecl() + case "type": + p.parseTypeDecl() + case "var": + p.parseVarDecl() + case "func": + p.next() // look ahead + if p.tok == '(' { + p.parseMethodDecl() + } else { + p.parseFuncDecl() + } + } + } + p.expect('\n') +} + +// ---------------------------------------------------------------------------- +// Export + +// Export = "PackageClause { Decl } "$$" . +// PackageClause = "package" PackageName [ "safe" ] "\n" . +// +func (p *parser) parseExport() *types.Package { + p.expectKeyword("package") + name := p.parsePackageName() + if p.tok == scanner.Ident && p.lit == "safe" { + // package was compiled with -u option - ignore + p.next() + } + p.expect('\n') + + pkg := p.getPkg(p.id, name) + + for p.tok != '$' && p.tok != scanner.EOF { + p.parseDecl() + } + + if ch := p.scanner.Peek(); p.tok != '$' || ch != '$' { + // don't call next()/expect() since reading past the + // export data may cause scanner errors (e.g. NUL chars) + p.errorf("expected '$$', got %s %c", scanner.TokenString(p.tok), ch) + } + + if n := p.scanner.ErrorCount; n != 0 { + p.errorf("expected no scanner errors, got %d", n) + } + + // Record all locally referenced packages as imports. + var imports []*types.Package + for id, pkg2 := range p.localPkgs { + if pkg2.Name() == "" { + p.errorf("%s package has no name", id) + } + if id == p.id { + continue // avoid self-edge + } + imports = append(imports, pkg2) + } + sort.Sort(byPath(imports)) + pkg.SetImports(imports) + + // package was imported completely and without errors + pkg.MarkComplete() + + return pkg +} + +type byPath []*types.Package + +func (a byPath) Len() int { return len(a) } +func (a byPath) Swap(i, j int) { a[i], a[j] = a[j], a[i] } +func (a byPath) Less(i, j int) bool { return a[i].Path() < a[j].Path() } diff --git a/vendor/golang.org/x/tools/imports/fastwalk.go b/vendor/golang.org/x/tools/imports/fastwalk.go new file mode 100644 index 0000000..157c792 --- /dev/null +++ b/vendor/golang.org/x/tools/imports/fastwalk.go @@ -0,0 +1,172 @@ +// 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. + +// A faster implementation of filepath.Walk. +// +// filepath.Walk's design necessarily calls os.Lstat on each file, +// even if the caller needs less info. And goimports only need to know +// the type of each file. The kernel interface provides the type in +// the Readdir call but the standard library ignored it. +// fastwalk_unix.go contains a fork of the syscall routines. +// +// See golang.org/issue/16399 + +package imports + +import ( + "errors" + "os" + "path/filepath" + "runtime" +) + +// traverseLink is a sentinel error for fastWalk, similar to filepath.SkipDir. +var traverseLink = errors.New("traverse symlink, assuming target is a directory") + +// fastWalk walks the file tree rooted at root, calling walkFn for +// each file or directory in the tree, including root. +// +// If fastWalk returns filepath.SkipDir, the directory is skipped. +// +// Unlike filepath.Walk: +// * file stat calls must be done by the user. +// The only provided metadata is the file type, which does not include +// any permission bits. +// * multiple goroutines stat the filesystem concurrently. The provided +// walkFn must be safe for concurrent use. +// * fastWalk can follow symlinks if walkFn returns the traverseLink +// sentinel error. It is the walkFn's responsibility to prevent +// fastWalk from going into symlink cycles. +func fastWalk(root string, walkFn func(path string, typ os.FileMode) error) error { + // TODO(bradfitz): make numWorkers configurable? We used a + // minimum of 4 to give the kernel more info about multiple + // things we want, in hopes its I/O scheduling can take + // advantage of that. Hopefully most are in cache. Maybe 4 is + // even too low of a minimum. Profile more. + numWorkers := 4 + if n := runtime.NumCPU(); n > numWorkers { + numWorkers = n + } + w := &walker{ + fn: walkFn, + enqueuec: make(chan walkItem, numWorkers), // buffered for performance + workc: make(chan walkItem, numWorkers), // buffered for performance + donec: make(chan struct{}), + + // buffered for correctness & not leaking goroutines: + resc: make(chan error, numWorkers), + } + defer close(w.donec) + // TODO(bradfitz): start the workers as needed? maybe not worth it. + for i := 0; i < numWorkers; i++ { + go w.doWork() + } + todo := []walkItem{{dir: root}} + out := 0 + for { + workc := w.workc + var workItem walkItem + if len(todo) == 0 { + workc = nil + } else { + workItem = todo[len(todo)-1] + } + select { + case workc <- workItem: + todo = todo[:len(todo)-1] + out++ + case it := <-w.enqueuec: + todo = append(todo, it) + case err := <-w.resc: + out-- + if err != nil { + return err + } + if out == 0 && len(todo) == 0 { + // It's safe to quit here, as long as the buffered + // enqueue channel isn't also readable, which might + // happen if the worker sends both another unit of + // work and its result before the other select was + // scheduled and both w.resc and w.enqueuec were + // readable. + select { + case it := <-w.enqueuec: + todo = append(todo, it) + default: + return nil + } + } + } + } +} + +// doWork reads directories as instructed (via workc) and runs the +// user's callback function. +func (w *walker) doWork() { + for { + select { + case <-w.donec: + return + case it := <-w.workc: + w.resc <- w.walk(it.dir, !it.callbackDone) + } + } +} + +type walker struct { + fn func(path string, typ os.FileMode) error + + donec chan struct{} // closed on fastWalk's return + workc chan walkItem // to workers + enqueuec chan walkItem // from workers + resc chan error // from workers +} + +type walkItem struct { + dir string + callbackDone bool // callback already called; don't do it again +} + +func (w *walker) enqueue(it walkItem) { + select { + case w.enqueuec <- it: + case <-w.donec: + } +} + +func (w *walker) onDirEnt(dirName, baseName string, typ os.FileMode) error { + joined := dirName + string(os.PathSeparator) + baseName + if typ == os.ModeDir { + w.enqueue(walkItem{dir: joined}) + return nil + } + + err := w.fn(joined, typ) + if typ == os.ModeSymlink { + if err == traverseLink { + // Set callbackDone so we don't call it twice for both the + // symlink-as-symlink and the symlink-as-directory later: + w.enqueue(walkItem{dir: joined, callbackDone: true}) + return nil + } + if err == filepath.SkipDir { + // Permit SkipDir on symlinks too. + return nil + } + } + return err +} +func (w *walker) walk(root string, runUserCallback bool) error { + if runUserCallback { + err := w.fn(root, os.ModeDir) + if err == filepath.SkipDir { + return nil + } + if err != nil { + return err + } + } + + return readDir(root, w.onDirEnt) +} diff --git a/vendor/golang.org/x/tools/imports/fastwalk_dirent_fileno.go b/vendor/golang.org/x/tools/imports/fastwalk_dirent_fileno.go new file mode 100644 index 0000000..f1fd649 --- /dev/null +++ b/vendor/golang.org/x/tools/imports/fastwalk_dirent_fileno.go @@ -0,0 +1,13 @@ +// 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 freebsd openbsd netbsd + +package imports + +import "syscall" + +func direntInode(dirent *syscall.Dirent) uint64 { + return uint64(dirent.Fileno) +} diff --git a/vendor/golang.org/x/tools/imports/fastwalk_dirent_ino.go b/vendor/golang.org/x/tools/imports/fastwalk_dirent_ino.go new file mode 100644 index 0000000..ee85bc4 --- /dev/null +++ b/vendor/golang.org/x/tools/imports/fastwalk_dirent_ino.go @@ -0,0 +1,13 @@ +// 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,!appengine darwin + +package imports + +import "syscall" + +func direntInode(dirent *syscall.Dirent) uint64 { + return uint64(dirent.Ino) +} diff --git a/vendor/golang.org/x/tools/imports/fastwalk_portable.go b/vendor/golang.org/x/tools/imports/fastwalk_portable.go new file mode 100644 index 0000000..6c26583 --- /dev/null +++ b/vendor/golang.org/x/tools/imports/fastwalk_portable.go @@ -0,0 +1,29 @@ +// 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 appengine !linux,!darwin,!freebsd,!openbsd,!netbsd + +package imports + +import ( + "io/ioutil" + "os" +) + +// readDir calls fn for each directory entry in dirName. +// It does not descend into directories or follow symlinks. +// If fn returns a non-nil error, readDir returns with that error +// immediately. +func readDir(dirName string, fn func(dirName, entName string, typ os.FileMode) error) error { + fis, err := ioutil.ReadDir(dirName) + if err != nil { + return err + } + for _, fi := range fis { + if err := fn(dirName, fi.Name(), fi.Mode()&os.ModeType); err != nil { + return err + } + } + return nil +} diff --git a/vendor/golang.org/x/tools/imports/fastwalk_unix.go b/vendor/golang.org/x/tools/imports/fastwalk_unix.go new file mode 100644 index 0000000..5854233 --- /dev/null +++ b/vendor/golang.org/x/tools/imports/fastwalk_unix.go @@ -0,0 +1,122 @@ +// 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,!appengine darwin freebsd openbsd netbsd + +package imports + +import ( + "bytes" + "fmt" + "os" + "syscall" + "unsafe" +) + +const blockSize = 8 << 10 + +// unknownFileMode is a sentinel (and bogus) os.FileMode +// value used to represent a syscall.DT_UNKNOWN Dirent.Type. +const unknownFileMode os.FileMode = os.ModeNamedPipe | os.ModeSocket | os.ModeDevice + +func readDir(dirName string, fn func(dirName, entName string, typ os.FileMode) error) error { + fd, err := syscall.Open(dirName, 0, 0) + if err != nil { + return err + } + defer syscall.Close(fd) + + // The buffer must be at least a block long. + buf := make([]byte, blockSize) // stack-allocated; doesn't escape + bufp := 0 // starting read position in buf + nbuf := 0 // end valid data in buf + for { + if bufp >= nbuf { + bufp = 0 + nbuf, err = syscall.ReadDirent(fd, buf) + if err != nil { + return os.NewSyscallError("readdirent", err) + } + if nbuf <= 0 { + return nil + } + } + consumed, name, typ := parseDirEnt(buf[bufp:nbuf]) + bufp += consumed + if name == "" || name == "." || name == ".." { + continue + } + // Fallback for filesystems (like old XFS) that don't + // support Dirent.Type and have DT_UNKNOWN (0) there + // instead. + if typ == unknownFileMode { + fi, err := os.Lstat(dirName + "/" + name) + if err != nil { + // It got deleted in the meantime. + if os.IsNotExist(err) { + continue + } + return err + } + typ = fi.Mode() & os.ModeType + } + if err := fn(dirName, name, typ); err != nil { + return err + } + } +} + +func parseDirEnt(buf []byte) (consumed int, name string, typ os.FileMode) { + // golang.org/issue/15653 + dirent := (*syscall.Dirent)(unsafe.Pointer(&buf[0])) + if v := unsafe.Offsetof(dirent.Reclen) + unsafe.Sizeof(dirent.Reclen); uintptr(len(buf)) < v { + panic(fmt.Sprintf("buf size of %d smaller than dirent header size %d", len(buf), v)) + } + if len(buf) < int(dirent.Reclen) { + panic(fmt.Sprintf("buf size %d < record length %d", len(buf), dirent.Reclen)) + } + consumed = int(dirent.Reclen) + if direntInode(dirent) == 0 { // File absent in directory. + return + } + switch dirent.Type { + case syscall.DT_REG: + typ = 0 + case syscall.DT_DIR: + typ = os.ModeDir + case syscall.DT_LNK: + typ = os.ModeSymlink + case syscall.DT_BLK: + typ = os.ModeDevice + case syscall.DT_FIFO: + typ = os.ModeNamedPipe + case syscall.DT_SOCK: + typ = os.ModeSocket + case syscall.DT_UNKNOWN: + typ = unknownFileMode + default: + // Skip weird things. + // It's probably a DT_WHT (http://lwn.net/Articles/325369/) + // or something. Revisit if/when this package is moved outside + // of goimports. goimports only cares about regular files, + // symlinks, and directories. + return + } + + nameBuf := (*[unsafe.Sizeof(dirent.Name)]byte)(unsafe.Pointer(&dirent.Name[0])) + nameLen := bytes.IndexByte(nameBuf[:], 0) + if nameLen < 0 { + panic("failed to find terminating 0 byte in dirent") + } + + // Special cases for common things: + if nameLen == 1 && nameBuf[0] == '.' { + name = "." + } else if nameLen == 2 && nameBuf[0] == '.' && nameBuf[1] == '.' { + name = ".." + } else { + name = string(nameBuf[:nameLen]) + } + return +} diff --git a/vendor/golang.org/x/tools/imports/fix.go b/vendor/golang.org/x/tools/imports/fix.go new file mode 100644 index 0000000..a241c29 --- /dev/null +++ b/vendor/golang.org/x/tools/imports/fix.go @@ -0,0 +1,975 @@ +// 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. + +package imports + +import ( + "bufio" + "bytes" + "fmt" + "go/ast" + "go/build" + "go/parser" + "go/token" + "io/ioutil" + "log" + "os" + "path" + "path/filepath" + "sort" + "strings" + "sync" + + "golang.org/x/tools/go/ast/astutil" +) + +// Debug controls verbose logging. +var Debug = false + +var ( + inTests = false // set true by fix_test.go; if false, no need to use testMu + testMu sync.RWMutex // guards globals reset by tests; used only if inTests +) + +// If set, LocalPrefix instructs Process to sort import paths with the given +// prefix into another group after 3rd-party packages. +var LocalPrefix string + +// importToGroup is a list of functions which map from an import path to +// a group number. +var importToGroup = []func(importPath string) (num int, ok bool){ + func(importPath string) (num int, ok bool) { + if LocalPrefix != "" && strings.HasPrefix(importPath, LocalPrefix) { + return 3, true + } + return + }, + func(importPath string) (num int, ok bool) { + if strings.HasPrefix(importPath, "appengine") { + return 2, true + } + return + }, + func(importPath string) (num int, ok bool) { + if strings.Contains(importPath, ".") { + return 1, true + } + return + }, +} + +func importGroup(importPath string) int { + for _, fn := range importToGroup { + if n, ok := fn(importPath); ok { + return n + } + } + return 0 +} + +// packageInfo is a summary of features found in a package. +type packageInfo struct { + Globals map[string]bool // symbol => true +} + +// dirPackageInfo gets information from other files in the package. +func dirPackageInfo(srcDir, filename string) (*packageInfo, error) { + considerTests := strings.HasSuffix(filename, "_test.go") + + // Handle file from stdin + if _, err := os.Stat(filename); err != nil { + if os.IsNotExist(err) { + return &packageInfo{}, nil + } + return nil, err + } + + fileBase := filepath.Base(filename) + packageFileInfos, err := ioutil.ReadDir(srcDir) + if err != nil { + return nil, err + } + + info := &packageInfo{Globals: make(map[string]bool)} + for _, fi := range packageFileInfos { + if fi.Name() == fileBase || !strings.HasSuffix(fi.Name(), ".go") { + continue + } + if !considerTests && strings.HasSuffix(fi.Name(), "_test.go") { + continue + } + + fileSet := token.NewFileSet() + root, err := parser.ParseFile(fileSet, filepath.Join(srcDir, fi.Name()), nil, 0) + if err != nil { + continue + } + + for _, decl := range root.Decls { + genDecl, ok := decl.(*ast.GenDecl) + if !ok { + continue + } + + for _, spec := range genDecl.Specs { + valueSpec, ok := spec.(*ast.ValueSpec) + if !ok { + continue + } + info.Globals[valueSpec.Names[0].Name] = true + } + } + } + return info, nil +} + +func fixImports(fset *token.FileSet, f *ast.File, filename string) (added []string, err error) { + // refs are a set of possible package references currently unsatisfied by imports. + // first key: either base package (e.g. "fmt") or renamed package + // second key: referenced package symbol (e.g. "Println") + refs := make(map[string]map[string]bool) + + // decls are the current package imports. key is base package or renamed package. + decls := make(map[string]*ast.ImportSpec) + + abs, err := filepath.Abs(filename) + if err != nil { + return nil, err + } + srcDir := filepath.Dir(abs) + if Debug { + log.Printf("fixImports(filename=%q), abs=%q, srcDir=%q ...", filename, abs, srcDir) + } + + var packageInfo *packageInfo + var loadedPackageInfo bool + + // collect potential uses of packages. + var visitor visitFn + visitor = visitFn(func(node ast.Node) ast.Visitor { + if node == nil { + return visitor + } + switch v := node.(type) { + case *ast.ImportSpec: + if v.Name != nil { + decls[v.Name.Name] = v + break + } + ipath := strings.Trim(v.Path.Value, `"`) + if ipath == "C" { + break + } + local := importPathToName(ipath, srcDir) + decls[local] = v + case *ast.SelectorExpr: + xident, ok := v.X.(*ast.Ident) + if !ok { + break + } + if xident.Obj != nil { + // if the parser can resolve it, it's not a package ref + break + } + pkgName := xident.Name + if refs[pkgName] == nil { + refs[pkgName] = make(map[string]bool) + } + if !loadedPackageInfo { + loadedPackageInfo = true + packageInfo, _ = dirPackageInfo(srcDir, filename) + } + if decls[pkgName] == nil && (packageInfo == nil || !packageInfo.Globals[pkgName]) { + refs[pkgName][v.Sel.Name] = true + } + } + return visitor + }) + ast.Walk(visitor, f) + + // Nil out any unused ImportSpecs, to be removed in following passes + unusedImport := map[string]string{} + for pkg, is := range decls { + if refs[pkg] == nil && pkg != "_" && pkg != "." { + name := "" + if is.Name != nil { + name = is.Name.Name + } + unusedImport[strings.Trim(is.Path.Value, `"`)] = name + } + } + for ipath, name := range unusedImport { + if ipath == "C" { + // Don't remove cgo stuff. + continue + } + astutil.DeleteNamedImport(fset, f, name, ipath) + } + + for pkgName, symbols := range refs { + if len(symbols) == 0 { + // skip over packages already imported + delete(refs, pkgName) + } + } + + // Search for imports matching potential package references. + searches := 0 + type result struct { + ipath string // import path (if err == nil) + name string // optional name to rename import as + err error + } + results := make(chan result) + for pkgName, symbols := range refs { + go func(pkgName string, symbols map[string]bool) { + ipath, rename, err := findImport(pkgName, symbols, filename) + r := result{ipath: ipath, err: err} + if rename { + r.name = pkgName + } + results <- r + }(pkgName, symbols) + searches++ + } + for i := 0; i < searches; i++ { + result := <-results + if result.err != nil { + return nil, result.err + } + if result.ipath != "" { + if result.name != "" { + astutil.AddNamedImport(fset, f, result.name, result.ipath) + } else { + astutil.AddImport(fset, f, result.ipath) + } + added = append(added, result.ipath) + } + } + + return added, nil +} + +// importPathToName returns the package name for the given import path. +var importPathToName func(importPath, srcDir string) (packageName string) = importPathToNameGoPath + +// importPathToNameBasic assumes the package name is the base of import path. +func importPathToNameBasic(importPath, srcDir string) (packageName string) { + return path.Base(importPath) +} + +// importPathToNameGoPath finds out the actual package name, as declared in its .go files. +// If there's a problem, it falls back to using importPathToNameBasic. +func importPathToNameGoPath(importPath, srcDir string) (packageName string) { + // Fast path for standard library without going to disk. + if pkg, ok := stdImportPackage[importPath]; ok { + return pkg + } + + pkgName, err := importPathToNameGoPathParse(importPath, srcDir) + if Debug { + log.Printf("importPathToNameGoPathParse(%q, srcDir=%q) = %q, %v", importPath, srcDir, pkgName, err) + } + if err == nil { + return pkgName + } + return importPathToNameBasic(importPath, srcDir) +} + +// importPathToNameGoPathParse is a faster version of build.Import if +// the only thing desired is the package name. It uses build.FindOnly +// to find the directory and then only parses one file in the package, +// trusting that the files in the directory are consistent. +func importPathToNameGoPathParse(importPath, srcDir string) (packageName string, err error) { + buildPkg, err := build.Import(importPath, srcDir, build.FindOnly) + if err != nil { + return "", err + } + d, err := os.Open(buildPkg.Dir) + if err != nil { + return "", err + } + names, err := d.Readdirnames(-1) + d.Close() + if err != nil { + return "", err + } + sort.Strings(names) // to have predictable behavior + var lastErr error + var nfile int + for _, name := range names { + if !strings.HasSuffix(name, ".go") { + continue + } + if strings.HasSuffix(name, "_test.go") { + continue + } + nfile++ + fullFile := filepath.Join(buildPkg.Dir, name) + + fset := token.NewFileSet() + f, err := parser.ParseFile(fset, fullFile, nil, parser.PackageClauseOnly) + if err != nil { + lastErr = err + continue + } + pkgName := f.Name.Name + if pkgName == "documentation" { + // Special case from go/build.ImportDir, not + // handled by ctx.MatchFile. + continue + } + if pkgName == "main" { + // Also skip package main, assuming it's a +build ignore generator or example. + // Since you can't import a package main anyway, there's no harm here. + continue + } + return pkgName, nil + } + if lastErr != nil { + return "", lastErr + } + return "", fmt.Errorf("no importable package found in %d Go files", nfile) +} + +var stdImportPackage = map[string]string{} // "net/http" => "http" + +func init() { + // Nothing in the standard library has a package name not + // matching its import base name. + for _, pkg := range stdlib { + if _, ok := stdImportPackage[pkg]; !ok { + stdImportPackage[pkg] = path.Base(pkg) + } + } +} + +// Directory-scanning state. +var ( + // scanGoRootOnce guards calling scanGoRoot (for $GOROOT) + scanGoRootOnce sync.Once + // scanGoPathOnce guards calling scanGoPath (for $GOPATH) + scanGoPathOnce sync.Once + + // populateIgnoreOnce guards calling populateIgnore + populateIgnoreOnce sync.Once + ignoredDirs []os.FileInfo + + dirScanMu sync.RWMutex + dirScan map[string]*pkg // abs dir path => *pkg +) + +type pkg struct { + dir string // absolute file path to pkg directory ("/usr/lib/go/src/net/http") + importPath string // full pkg import path ("net/http", "foo/bar/vendor/a/b") + importPathShort string // vendorless import path ("net/http", "a/b") +} + +// byImportPathShortLength sorts by the short import path length, breaking ties on the +// import string itself. +type byImportPathShortLength []*pkg + +func (s byImportPathShortLength) Len() int { return len(s) } +func (s byImportPathShortLength) Less(i, j int) bool { + vi, vj := s[i].importPathShort, s[j].importPathShort + return len(vi) < len(vj) || (len(vi) == len(vj) && vi < vj) + +} +func (s byImportPathShortLength) Swap(i, j int) { s[i], s[j] = s[j], s[i] } + +// gate is a semaphore for limiting concurrency. +type gate chan struct{} + +func (g gate) enter() { g <- struct{}{} } +func (g gate) leave() { <-g } + +var visitedSymlinks struct { + sync.Mutex + m map[string]struct{} +} + +// guarded by populateIgnoreOnce; populates ignoredDirs. +func populateIgnore() { + for _, srcDir := range build.Default.SrcDirs() { + if srcDir == filepath.Join(build.Default.GOROOT, "src") { + continue + } + populateIgnoredDirs(srcDir) + } +} + +// populateIgnoredDirs reads an optional config file at /.goimportsignore +// of relative directories to ignore when scanning for go files. +// The provided path is one of the $GOPATH entries with "src" appended. +func populateIgnoredDirs(path string) { + file := filepath.Join(path, ".goimportsignore") + slurp, err := ioutil.ReadFile(file) + if Debug { + if err != nil { + log.Print(err) + } else { + log.Printf("Read %s", file) + } + } + if err != nil { + return + } + bs := bufio.NewScanner(bytes.NewReader(slurp)) + for bs.Scan() { + line := strings.TrimSpace(bs.Text()) + if line == "" || strings.HasPrefix(line, "#") { + continue + } + full := filepath.Join(path, line) + if fi, err := os.Stat(full); err == nil { + ignoredDirs = append(ignoredDirs, fi) + if Debug { + log.Printf("Directory added to ignore list: %s", full) + } + } else if Debug { + log.Printf("Error statting entry in .goimportsignore: %v", err) + } + } +} + +func skipDir(fi os.FileInfo) bool { + for _, ignoredDir := range ignoredDirs { + if os.SameFile(fi, ignoredDir) { + return true + } + } + return false +} + +// shouldTraverse reports whether the symlink fi should, found in dir, +// should be followed. It makes sure symlinks were never visited +// before to avoid symlink loops. +func shouldTraverse(dir string, fi os.FileInfo) bool { + path := filepath.Join(dir, fi.Name()) + target, err := filepath.EvalSymlinks(path) + if err != nil { + if !os.IsNotExist(err) { + fmt.Fprintln(os.Stderr, err) + } + return false + } + ts, err := os.Stat(target) + if err != nil { + fmt.Fprintln(os.Stderr, err) + return false + } + if !ts.IsDir() { + return false + } + + realParent, err := filepath.EvalSymlinks(dir) + if err != nil { + fmt.Fprint(os.Stderr, err) + return false + } + realPath := filepath.Join(realParent, fi.Name()) + visitedSymlinks.Lock() + defer visitedSymlinks.Unlock() + if visitedSymlinks.m == nil { + visitedSymlinks.m = make(map[string]struct{}) + } + if _, ok := visitedSymlinks.m[realPath]; ok { + return false + } + visitedSymlinks.m[realPath] = struct{}{} + return true +} + +var testHookScanDir = func(dir string) {} + +var scanGoRootDone = make(chan struct{}) // closed when scanGoRoot is done + +func scanGoRoot() { + go func() { + scanGoDirs(true) + close(scanGoRootDone) + }() +} + +func scanGoPath() { scanGoDirs(false) } + +func scanGoDirs(goRoot bool) { + if Debug { + which := "$GOROOT" + if !goRoot { + which = "$GOPATH" + } + log.Printf("scanning " + which) + defer log.Printf("scanned " + which) + } + dirScanMu.Lock() + if dirScan == nil { + dirScan = make(map[string]*pkg) + } + dirScanMu.Unlock() + + for _, srcDir := range build.Default.SrcDirs() { + isGoroot := srcDir == filepath.Join(build.Default.GOROOT, "src") + if isGoroot != goRoot { + continue + } + testHookScanDir(srcDir) + walkFn := func(path string, typ os.FileMode) error { + dir := filepath.Dir(path) + if typ.IsRegular() { + if dir == srcDir { + // Doesn't make sense to have regular files + // directly in your $GOPATH/src or $GOROOT/src. + return nil + } + if !strings.HasSuffix(path, ".go") { + return nil + } + dirScanMu.Lock() + if _, dup := dirScan[dir]; !dup { + importpath := filepath.ToSlash(dir[len(srcDir)+len("/"):]) + dirScan[dir] = &pkg{ + importPath: importpath, + importPathShort: vendorlessImportPath(importpath), + dir: dir, + } + } + dirScanMu.Unlock() + return nil + } + if typ == os.ModeDir { + base := filepath.Base(path) + if base == "" || base[0] == '.' || base[0] == '_' || + base == "testdata" || base == "node_modules" { + return filepath.SkipDir + } + fi, err := os.Lstat(path) + if err == nil && skipDir(fi) { + if Debug { + log.Printf("skipping directory %q under %s", fi.Name(), dir) + } + return filepath.SkipDir + } + return nil + } + if typ == os.ModeSymlink { + base := filepath.Base(path) + if strings.HasPrefix(base, ".#") { + // Emacs noise. + return nil + } + fi, err := os.Lstat(path) + if err != nil { + // Just ignore it. + return nil + } + if shouldTraverse(dir, fi) { + return traverseLink + } + } + return nil + } + if err := fastWalk(srcDir, walkFn); err != nil { + log.Printf("goimports: scanning directory %v: %v", srcDir, err) + } + } +} + +// vendorlessImportPath returns the devendorized version of the provided import path. +// e.g. "foo/bar/vendor/a/b" => "a/b" +func vendorlessImportPath(ipath string) string { + // Devendorize for use in import statement. + if i := strings.LastIndex(ipath, "/vendor/"); i >= 0 { + return ipath[i+len("/vendor/"):] + } + if strings.HasPrefix(ipath, "vendor/") { + return ipath[len("vendor/"):] + } + return ipath +} + +// loadExports returns the set of exported symbols in the package at dir. +// It returns nil on error or if the package name in dir does not match expectPackage. +var loadExports func(expectPackage, dir string) map[string]bool = loadExportsGoPath + +func loadExportsGoPath(expectPackage, dir string) map[string]bool { + if Debug { + log.Printf("loading exports in dir %s (seeking package %s)", dir, expectPackage) + } + exports := make(map[string]bool) + + ctx := build.Default + + // ReadDir is like ioutil.ReadDir, but only returns *.go files + // and filters out _test.go files since they're not relevant + // and only slow things down. + ctx.ReadDir = func(dir string) (notTests []os.FileInfo, err error) { + all, err := ioutil.ReadDir(dir) + if err != nil { + return nil, err + } + notTests = all[:0] + for _, fi := range all { + name := fi.Name() + if strings.HasSuffix(name, ".go") && !strings.HasSuffix(name, "_test.go") { + notTests = append(notTests, fi) + } + } + return notTests, nil + } + + files, err := ctx.ReadDir(dir) + if err != nil { + log.Print(err) + return nil + } + + fset := token.NewFileSet() + + for _, fi := range files { + match, err := ctx.MatchFile(dir, fi.Name()) + if err != nil || !match { + continue + } + fullFile := filepath.Join(dir, fi.Name()) + f, err := parser.ParseFile(fset, fullFile, nil, 0) + if err != nil { + if Debug { + log.Printf("Parsing %s: %v", fullFile, err) + } + return nil + } + pkgName := f.Name.Name + if pkgName == "documentation" { + // Special case from go/build.ImportDir, not + // handled by ctx.MatchFile. + continue + } + if pkgName != expectPackage { + if Debug { + log.Printf("scan of dir %v is not expected package %v (actually %v)", dir, expectPackage, pkgName) + } + return nil + } + for name := range f.Scope.Objects { + if ast.IsExported(name) { + exports[name] = true + } + } + } + + if Debug { + exportList := make([]string, 0, len(exports)) + for k := range exports { + exportList = append(exportList, k) + } + sort.Strings(exportList) + log.Printf("loaded exports in dir %v (package %v): %v", dir, expectPackage, strings.Join(exportList, ", ")) + } + return exports +} + +// findImport searches for a package with the given symbols. +// If no package is found, findImport returns ("", false, nil) +// +// This is declared as a variable rather than a function so goimports +// can be easily extended by adding a file with an init function. +// +// The rename value tells goimports whether to use the package name as +// a local qualifier in an import. For example, if findImports("pkg", +// "X") returns ("foo/bar", rename=true), then goimports adds the +// import line: +// import pkg "foo/bar" +// to satisfy uses of pkg.X in the file. +var findImport func(pkgName string, symbols map[string]bool, filename string) (foundPkg string, rename bool, err error) = findImportGoPath + +// findImportGoPath is the normal implementation of findImport. +// (Some companies have their own internally.) +func findImportGoPath(pkgName string, symbols map[string]bool, filename string) (foundPkg string, rename bool, err error) { + if inTests { + testMu.RLock() + defer testMu.RUnlock() + } + + // Fast path for the standard library. + // In the common case we hopefully never have to scan the GOPATH, which can + // be slow with moving disks. + if pkg, rename, ok := findImportStdlib(pkgName, symbols); ok { + return pkg, rename, nil + } + if pkgName == "rand" && symbols["Read"] { + // Special-case rand.Read. + // + // If findImportStdlib didn't find it above, don't go + // searching for it, lest it find and pick math/rand + // in GOROOT (new as of Go 1.6) + // + // crypto/rand is the safer choice. + return "", false, nil + } + + // TODO(sameer): look at the import lines for other Go files in the + // local directory, since the user is likely to import the same packages + // in the current Go file. Return rename=true when the other Go files + // use a renamed package that's also used in the current file. + + // Read all the $GOPATH/src/.goimportsignore files before scanning directories. + populateIgnoreOnce.Do(populateIgnore) + + // Start scanning the $GOROOT asynchronously, then run the + // GOPATH scan synchronously if needed, and then wait for the + // $GOROOT to finish. + // + // TODO(bradfitz): run each $GOPATH entry async. But nobody + // really has more than one anyway, so low priority. + scanGoRootOnce.Do(scanGoRoot) // async + if !fileInDir(filename, build.Default.GOROOT) { + scanGoPathOnce.Do(scanGoPath) // blocking + } + <-scanGoRootDone + + // Find candidate packages, looking only at their directory names first. + var candidates []*pkg + for _, pkg := range dirScan { + if pkgIsCandidate(filename, pkgName, pkg) { + candidates = append(candidates, pkg) + } + } + + // Sort the candidates by their import package length, + // assuming that shorter package names are better than long + // ones. Note that this sorts by the de-vendored name, so + // there's no "penalty" for vendoring. + sort.Sort(byImportPathShortLength(candidates)) + if Debug { + for i, pkg := range candidates { + log.Printf("%s candidate %d/%d: %v", pkgName, i+1, len(candidates), pkg.importPathShort) + } + } + + // Collect exports for packages with matching names. + + done := make(chan struct{}) // closed when we find the answer + defer close(done) + + rescv := make([]chan *pkg, len(candidates)) + for i := range candidates { + rescv[i] = make(chan *pkg) + } + const maxConcurrentPackageImport = 4 + loadExportsSem := make(chan struct{}, maxConcurrentPackageImport) + + go func() { + for i, pkg := range candidates { + select { + case loadExportsSem <- struct{}{}: + select { + case <-done: + default: + } + case <-done: + return + } + pkg := pkg + resc := rescv[i] + go func() { + if inTests { + testMu.RLock() + defer testMu.RUnlock() + } + defer func() { <-loadExportsSem }() + exports := loadExports(pkgName, pkg.dir) + + // If it doesn't have the right + // symbols, send nil to mean no match. + for symbol := range symbols { + if !exports[symbol] { + pkg = nil + break + } + } + select { + case resc <- pkg: + case <-done: + } + }() + } + }() + for _, resc := range rescv { + pkg := <-resc + if pkg == nil { + continue + } + // If the package name in the source doesn't match the import path's base, + // return true so the rewriter adds a name (import foo "github.com/bar/go-foo") + needsRename := path.Base(pkg.importPath) != pkgName + return pkg.importPathShort, needsRename, nil + } + return "", false, nil +} + +// pkgIsCandidate reports whether pkg is a candidate for satisfying the +// finding which package pkgIdent in the file named by filename is trying +// to refer to. +// +// This check is purely lexical and is meant to be as fast as possible +// because it's run over all $GOPATH directories to filter out poor +// candidates in order to limit the CPU and I/O later parsing the +// exports in candidate packages. +// +// filename is the file being formatted. +// pkgIdent is the package being searched for, like "client" (if +// searching for "client.New") +func pkgIsCandidate(filename, pkgIdent string, pkg *pkg) bool { + // Check "internal" and "vendor" visibility: + if !canUse(filename, pkg.dir) { + return false + } + + // Speed optimization to minimize disk I/O: + // the last two components on disk must contain the + // package name somewhere. + // + // This permits mismatch naming like directory + // "go-foo" being package "foo", or "pkg.v3" being "pkg", + // or directory "google.golang.org/api/cloudbilling/v1" + // being package "cloudbilling", but doesn't + // permit a directory "foo" to be package + // "bar", which is strongly discouraged + // anyway. There's no reason goimports needs + // to be slow just to accomodate that. + lastTwo := lastTwoComponents(pkg.importPathShort) + if strings.Contains(lastTwo, pkgIdent) { + return true + } + if hasHyphenOrUpperASCII(lastTwo) && !hasHyphenOrUpperASCII(pkgIdent) { + lastTwo = lowerASCIIAndRemoveHyphen(lastTwo) + if strings.Contains(lastTwo, pkgIdent) { + return true + } + } + + return false +} + +func hasHyphenOrUpperASCII(s string) bool { + for i := 0; i < len(s); i++ { + b := s[i] + if b == '-' || ('A' <= b && b <= 'Z') { + return true + } + } + return false +} + +func lowerASCIIAndRemoveHyphen(s string) (ret string) { + buf := make([]byte, 0, len(s)) + for i := 0; i < len(s); i++ { + b := s[i] + switch { + case b == '-': + continue + case 'A' <= b && b <= 'Z': + buf = append(buf, b+('a'-'A')) + default: + buf = append(buf, b) + } + } + return string(buf) +} + +// canUse reports whether the package in dir is usable from filename, +// respecting the Go "internal" and "vendor" visibility rules. +func canUse(filename, dir string) bool { + // Fast path check, before any allocations. If it doesn't contain vendor + // or internal, it's not tricky: + // Note that this can false-negative on directories like "notinternal", + // but we check it correctly below. This is just a fast path. + if !strings.Contains(dir, "vendor") && !strings.Contains(dir, "internal") { + return true + } + + dirSlash := filepath.ToSlash(dir) + if !strings.Contains(dirSlash, "/vendor/") && !strings.Contains(dirSlash, "/internal/") && !strings.HasSuffix(dirSlash, "/internal") { + return true + } + // Vendor or internal directory only visible from children of parent. + // That means the path from the current directory to the target directory + // can contain ../vendor or ../internal but not ../foo/vendor or ../foo/internal + // or bar/vendor or bar/internal. + // After stripping all the leading ../, the only okay place to see vendor or internal + // is at the very beginning of the path. + absfile, err := filepath.Abs(filename) + if err != nil { + return false + } + absdir, err := filepath.Abs(dir) + if err != nil { + return false + } + rel, err := filepath.Rel(absfile, absdir) + if err != nil { + return false + } + relSlash := filepath.ToSlash(rel) + if i := strings.LastIndex(relSlash, "../"); i >= 0 { + relSlash = relSlash[i+len("../"):] + } + return !strings.Contains(relSlash, "/vendor/") && !strings.Contains(relSlash, "/internal/") && !strings.HasSuffix(relSlash, "/internal") +} + +// lastTwoComponents returns at most the last two path components +// of v, using either / or \ as the path separator. +func lastTwoComponents(v string) string { + nslash := 0 + for i := len(v) - 1; i >= 0; i-- { + if v[i] == '/' || v[i] == '\\' { + nslash++ + if nslash == 2 { + return v[i:] + } + } + } + return v +} + +type visitFn func(node ast.Node) ast.Visitor + +func (fn visitFn) Visit(node ast.Node) ast.Visitor { + return fn(node) +} + +func findImportStdlib(shortPkg string, symbols map[string]bool) (importPath string, rename, ok bool) { + for symbol := range symbols { + key := shortPkg + "." + symbol + path := stdlib[key] + if path == "" { + if key == "rand.Read" { + continue + } + return "", false, false + } + if importPath != "" && importPath != path { + // Ambiguous. Symbols pointed to different things. + return "", false, false + } + importPath = path + } + if importPath == "" && shortPkg == "rand" && symbols["Read"] { + return "crypto/rand", false, true + } + return importPath, false, importPath != "" +} + +// fileInDir reports whether the provided file path looks like +// it's in dir. (without hitting the filesystem) +func fileInDir(file, dir string) bool { + rest := strings.TrimPrefix(file, dir) + if len(rest) == len(file) { + // dir is not a prefix of file. + return false + } + // Check for boundary: either nothing (file == dir), or a slash. + return len(rest) == 0 || rest[0] == '/' || rest[0] == '\\' +} diff --git a/vendor/golang.org/x/tools/imports/imports.go b/vendor/golang.org/x/tools/imports/imports.go new file mode 100644 index 0000000..7c6c1b6 --- /dev/null +++ b/vendor/golang.org/x/tools/imports/imports.go @@ -0,0 +1,289 @@ +// 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. + +//go:generate go run mkstdlib.go + +// Package imports implements a Go pretty-printer (like package "go/format") +// that also adds or removes import statements as necessary. +package imports + +import ( + "bufio" + "bytes" + "fmt" + "go/ast" + "go/format" + "go/parser" + "go/printer" + "go/token" + "io" + "regexp" + "strconv" + "strings" + + "golang.org/x/tools/go/ast/astutil" +) + +// Options specifies options for processing files. +type Options struct { + Fragment bool // Accept fragment of a source file (no package statement) + AllErrors bool // Report all errors (not just the first 10 on different lines) + + Comments bool // Print comments (true if nil *Options provided) + TabIndent bool // Use tabs for indent (true if nil *Options provided) + TabWidth int // Tab width (8 if nil *Options provided) + + FormatOnly bool // Disable the insertion and deletion of imports +} + +// Process formats and adjusts imports for the provided file. +// If opt is nil the defaults are used. +// +// Note that filename's directory influences which imports can be chosen, +// so it is important that filename be accurate. +// To process data ``as if'' it were in filename, pass the data as a non-nil src. +func Process(filename string, src []byte, opt *Options) ([]byte, error) { + if opt == nil { + opt = &Options{Comments: true, TabIndent: true, TabWidth: 8} + } + + fileSet := token.NewFileSet() + file, adjust, err := parse(fileSet, filename, src, opt) + if err != nil { + return nil, err + } + + if !opt.FormatOnly { + _, err = fixImports(fileSet, file, filename) + if err != nil { + return nil, err + } + } + + sortImports(fileSet, file) + imps := astutil.Imports(fileSet, file) + + var spacesBefore []string // import paths we need spaces before + for _, impSection := range imps { + // Within each block of contiguous imports, see if any + // import lines are in different group numbers. If so, + // we'll need to put a space between them so it's + // compatible with gofmt. + lastGroup := -1 + for _, importSpec := range impSection { + importPath, _ := strconv.Unquote(importSpec.Path.Value) + groupNum := importGroup(importPath) + if groupNum != lastGroup && lastGroup != -1 { + spacesBefore = append(spacesBefore, importPath) + } + lastGroup = groupNum + } + + } + + printerMode := printer.UseSpaces + if opt.TabIndent { + printerMode |= printer.TabIndent + } + printConfig := &printer.Config{Mode: printerMode, Tabwidth: opt.TabWidth} + + var buf bytes.Buffer + err = printConfig.Fprint(&buf, fileSet, file) + if err != nil { + return nil, err + } + out := buf.Bytes() + if adjust != nil { + out = adjust(src, out) + } + if len(spacesBefore) > 0 { + out = addImportSpaces(bytes.NewReader(out), spacesBefore) + } + + out, err = format.Source(out) + if err != nil { + return nil, err + } + return out, nil +} + +// parse parses src, which was read from filename, +// as a Go source file or statement list. +func parse(fset *token.FileSet, filename string, src []byte, opt *Options) (*ast.File, func(orig, src []byte) []byte, error) { + parserMode := parser.Mode(0) + if opt.Comments { + parserMode |= parser.ParseComments + } + if opt.AllErrors { + parserMode |= parser.AllErrors + } + + // Try as whole source file. + file, err := parser.ParseFile(fset, filename, src, parserMode) + if err == nil { + return file, nil, nil + } + // If the error is that the source file didn't begin with a + // package line and we accept fragmented input, fall through to + // try as a source fragment. Stop and return on any other error. + if !opt.Fragment || !strings.Contains(err.Error(), "expected 'package'") { + return nil, nil, err + } + + // If this is a declaration list, make it a source file + // by inserting a package clause. + // Insert using a ;, not a newline, so that the line numbers + // in psrc match the ones in src. + psrc := append([]byte("package main;"), src...) + file, err = parser.ParseFile(fset, filename, psrc, parserMode) + if err == nil { + // If a main function exists, we will assume this is a main + // package and leave the file. + if containsMainFunc(file) { + return file, nil, nil + } + + adjust := func(orig, src []byte) []byte { + // Remove the package clause. + // Gofmt has turned the ; into a \n. + src = src[len("package main\n"):] + return matchSpace(orig, src) + } + return file, adjust, nil + } + // If the error is that the source file didn't begin with a + // declaration, fall through to try as a statement list. + // Stop and return on any other error. + if !strings.Contains(err.Error(), "expected declaration") { + return nil, nil, err + } + + // If this is a statement list, make it a source file + // by inserting a package clause and turning the list + // into a function body. This handles expressions too. + // Insert using a ;, not a newline, so that the line numbers + // in fsrc match the ones in src. + fsrc := append(append([]byte("package p; func _() {"), src...), '}') + file, err = parser.ParseFile(fset, filename, fsrc, parserMode) + if err == nil { + adjust := func(orig, src []byte) []byte { + // Remove the wrapping. + // Gofmt has turned the ; into a \n\n. + src = src[len("package p\n\nfunc _() {"):] + src = src[:len(src)-len("}\n")] + // Gofmt has also indented the function body one level. + // Remove that indent. + src = bytes.Replace(src, []byte("\n\t"), []byte("\n"), -1) + return matchSpace(orig, src) + } + return file, adjust, nil + } + + // Failed, and out of options. + return nil, nil, err +} + +// containsMainFunc checks if a file contains a function declaration with the +// function signature 'func main()' +func containsMainFunc(file *ast.File) bool { + for _, decl := range file.Decls { + if f, ok := decl.(*ast.FuncDecl); ok { + if f.Name.Name != "main" { + continue + } + + if len(f.Type.Params.List) != 0 { + continue + } + + if f.Type.Results != nil && len(f.Type.Results.List) != 0 { + continue + } + + return true + } + } + + return false +} + +func cutSpace(b []byte) (before, middle, after []byte) { + i := 0 + for i < len(b) && (b[i] == ' ' || b[i] == '\t' || b[i] == '\n') { + i++ + } + j := len(b) + for j > 0 && (b[j-1] == ' ' || b[j-1] == '\t' || b[j-1] == '\n') { + j-- + } + if i <= j { + return b[:i], b[i:j], b[j:] + } + return nil, nil, b[j:] +} + +// matchSpace reformats src to use the same space context as orig. +// 1) If orig begins with blank lines, matchSpace inserts them at the beginning of src. +// 2) matchSpace copies the indentation of the first non-blank line in orig +// to every non-blank line in src. +// 3) matchSpace copies the trailing space from orig and uses it in place +// of src's trailing space. +func matchSpace(orig []byte, src []byte) []byte { + before, _, after := cutSpace(orig) + i := bytes.LastIndex(before, []byte{'\n'}) + before, indent := before[:i+1], before[i+1:] + + _, src, _ = cutSpace(src) + + var b bytes.Buffer + b.Write(before) + for len(src) > 0 { + line := src + if i := bytes.IndexByte(line, '\n'); i >= 0 { + line, src = line[:i+1], line[i+1:] + } else { + src = nil + } + if len(line) > 0 && line[0] != '\n' { // not blank + b.Write(indent) + } + b.Write(line) + } + b.Write(after) + return b.Bytes() +} + +var impLine = regexp.MustCompile(`^\s+(?:[\w\.]+\s+)?"(.+)"`) + +func addImportSpaces(r io.Reader, breaks []string) []byte { + var out bytes.Buffer + sc := bufio.NewScanner(r) + inImports := false + done := false + for sc.Scan() { + s := sc.Text() + + if !inImports && !done && strings.HasPrefix(s, "import") { + inImports = true + } + if inImports && (strings.HasPrefix(s, "var") || + strings.HasPrefix(s, "func") || + strings.HasPrefix(s, "const") || + strings.HasPrefix(s, "type")) { + done = true + inImports = false + } + if inImports && len(breaks) > 0 { + if m := impLine.FindStringSubmatch(s); m != nil { + if m[1] == string(breaks[0]) { + out.WriteByte('\n') + breaks = breaks[1:] + } + } + } + + fmt.Fprintln(&out, s) + } + return out.Bytes() +} diff --git a/vendor/golang.org/x/tools/imports/mkindex.go b/vendor/golang.org/x/tools/imports/mkindex.go new file mode 100644 index 0000000..755e239 --- /dev/null +++ b/vendor/golang.org/x/tools/imports/mkindex.go @@ -0,0 +1,173 @@ +// +build ignore + +// 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. + +// Command mkindex creates the file "pkgindex.go" containing an index of the Go +// standard library. The file is intended to be built as part of the imports +// package, so that the package may be used in environments where a GOROOT is +// not available (such as App Engine). +package main + +import ( + "bytes" + "fmt" + "go/ast" + "go/build" + "go/format" + "go/parser" + "go/token" + "io/ioutil" + "log" + "os" + "path" + "path/filepath" + "strings" +) + +var ( + pkgIndex = make(map[string][]pkg) + exports = make(map[string]map[string]bool) +) + +func main() { + // Don't use GOPATH. + ctx := build.Default + ctx.GOPATH = "" + + // Populate pkgIndex global from GOROOT. + for _, path := range ctx.SrcDirs() { + f, err := os.Open(path) + if err != nil { + log.Print(err) + continue + } + children, err := f.Readdir(-1) + f.Close() + if err != nil { + log.Print(err) + continue + } + for _, child := range children { + if child.IsDir() { + loadPkg(path, child.Name()) + } + } + } + // Populate exports global. + for _, ps := range pkgIndex { + for _, p := range ps { + e := loadExports(p.dir) + if e != nil { + exports[p.dir] = e + } + } + } + + // Construct source file. + var buf bytes.Buffer + fmt.Fprint(&buf, pkgIndexHead) + fmt.Fprintf(&buf, "var pkgIndexMaster = %#v\n", pkgIndex) + fmt.Fprintf(&buf, "var exportsMaster = %#v\n", exports) + src := buf.Bytes() + + // Replace main.pkg type name with pkg. + src = bytes.Replace(src, []byte("main.pkg"), []byte("pkg"), -1) + // Replace actual GOROOT with "/go". + src = bytes.Replace(src, []byte(ctx.GOROOT), []byte("/go"), -1) + // Add some line wrapping. + src = bytes.Replace(src, []byte("}, "), []byte("},\n"), -1) + src = bytes.Replace(src, []byte("true, "), []byte("true,\n"), -1) + + var err error + src, err = format.Source(src) + if err != nil { + log.Fatal(err) + } + + // Write out source file. + err = ioutil.WriteFile("pkgindex.go", src, 0644) + if err != nil { + log.Fatal(err) + } +} + +const pkgIndexHead = `package imports + +func init() { + pkgIndexOnce.Do(func() { + pkgIndex.m = pkgIndexMaster + }) + loadExports = func(dir string) map[string]bool { + return exportsMaster[dir] + } +} +` + +type pkg struct { + importpath string // full pkg import path, e.g. "net/http" + dir string // absolute file path to pkg directory e.g. "/usr/lib/go/src/fmt" +} + +var fset = token.NewFileSet() + +func loadPkg(root, importpath string) { + shortName := path.Base(importpath) + if shortName == "testdata" { + return + } + + dir := filepath.Join(root, importpath) + pkgIndex[shortName] = append(pkgIndex[shortName], pkg{ + importpath: importpath, + dir: dir, + }) + + pkgDir, err := os.Open(dir) + if err != nil { + return + } + children, err := pkgDir.Readdir(-1) + pkgDir.Close() + if err != nil { + return + } + for _, child := range children { + name := child.Name() + if name == "" { + continue + } + if c := name[0]; c == '.' || ('0' <= c && c <= '9') { + continue + } + if child.IsDir() { + loadPkg(root, filepath.Join(importpath, name)) + } + } +} + +func loadExports(dir string) map[string]bool { + exports := make(map[string]bool) + buildPkg, err := build.ImportDir(dir, 0) + if err != nil { + if strings.Contains(err.Error(), "no buildable Go source files in") { + return nil + } + log.Printf("could not import %q: %v", dir, err) + return nil + } + for _, file := range buildPkg.GoFiles { + f, err := parser.ParseFile(fset, filepath.Join(dir, file), nil, 0) + if err != nil { + log.Printf("could not parse %q: %v", file, err) + continue + } + for name := range f.Scope.Objects { + if ast.IsExported(name) { + exports[name] = true + } + } + } + return exports +} diff --git a/vendor/golang.org/x/tools/imports/mkstdlib.go b/vendor/golang.org/x/tools/imports/mkstdlib.go new file mode 100644 index 0000000..1e559e9 --- /dev/null +++ b/vendor/golang.org/x/tools/imports/mkstdlib.go @@ -0,0 +1,103 @@ +// +build ignore + +// mkstdlib generates the zstdlib.go file, containing the Go standard +// library API symbols. It's baked into the binary to avoid scanning +// GOPATH in the common case. +package main + +import ( + "bufio" + "bytes" + "fmt" + "go/format" + "io" + "io/ioutil" + "log" + "os" + "path" + "path/filepath" + "regexp" + "sort" + "strings" +) + +func mustOpen(name string) io.Reader { + f, err := os.Open(name) + if err != nil { + log.Fatal(err) + } + return f +} + +func api(base string) string { + return filepath.Join(os.Getenv("GOROOT"), "api", base) +} + +var sym = regexp.MustCompile(`^pkg (\S+).*?, (?:var|func|type|const) ([A-Z]\w*)`) + +func main() { + var buf bytes.Buffer + outf := func(format string, args ...interface{}) { + fmt.Fprintf(&buf, format, args...) + } + outf("// AUTO-GENERATED BY mkstdlib.go\n\n") + outf("package imports\n") + outf("var stdlib = map[string]string{\n") + f := io.MultiReader( + mustOpen(api("go1.txt")), + mustOpen(api("go1.1.txt")), + mustOpen(api("go1.2.txt")), + mustOpen(api("go1.3.txt")), + mustOpen(api("go1.4.txt")), + mustOpen(api("go1.5.txt")), + mustOpen(api("go1.6.txt")), + mustOpen(api("go1.7.txt")), + ) + sc := bufio.NewScanner(f) + fullImport := map[string]string{} // "zip.NewReader" => "archive/zip" + ambiguous := map[string]bool{} + var keys []string + for sc.Scan() { + l := sc.Text() + has := func(v string) bool { return strings.Contains(l, v) } + if has("struct, ") || has("interface, ") || has(", method (") { + continue + } + if m := sym.FindStringSubmatch(l); m != nil { + full := m[1] + key := path.Base(full) + "." + m[2] + if exist, ok := fullImport[key]; ok { + if exist != full { + ambiguous[key] = true + } + } else { + fullImport[key] = full + keys = append(keys, key) + } + } + } + if err := sc.Err(); err != nil { + log.Fatal(err) + } + sort.Strings(keys) + for _, key := range keys { + if ambiguous[key] { + outf("\t// %q is ambiguous\n", key) + } else { + outf("\t%q: %q,\n", key, fullImport[key]) + } + } + outf("\n") + for _, sym := range [...]string{"Alignof", "ArbitraryType", "Offsetof", "Pointer", "Sizeof"} { + outf("\t%q: %q,\n", "unsafe."+sym, "unsafe") + } + outf("}\n") + fmtbuf, err := format.Source(buf.Bytes()) + if err != nil { + log.Fatal(err) + } + err = ioutil.WriteFile("zstdlib.go", fmtbuf, 0666) + if err != nil { + log.Fatal(err) + } +} diff --git a/vendor/golang.org/x/tools/imports/sortimports.go b/vendor/golang.org/x/tools/imports/sortimports.go new file mode 100644 index 0000000..653afc5 --- /dev/null +++ b/vendor/golang.org/x/tools/imports/sortimports.go @@ -0,0 +1,212 @@ +// 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. + +// Hacked up copy of go/ast/import.go + +package imports + +import ( + "go/ast" + "go/token" + "sort" + "strconv" +) + +// sortImports sorts runs of consecutive import lines in import blocks in f. +// It also removes duplicate imports when it is possible to do so without data loss. +func sortImports(fset *token.FileSet, f *ast.File) { + for i, d := range f.Decls { + d, ok := d.(*ast.GenDecl) + if !ok || d.Tok != token.IMPORT { + // Not an import declaration, so we're done. + // Imports are always first. + break + } + + if len(d.Specs) == 0 { + // Empty import block, remove it. + f.Decls = append(f.Decls[:i], f.Decls[i+1:]...) + } + + if !d.Lparen.IsValid() { + // Not a block: sorted by default. + continue + } + + // Identify and sort runs of specs on successive lines. + i := 0 + specs := d.Specs[:0] + for j, s := range d.Specs { + if j > i && fset.Position(s.Pos()).Line > 1+fset.Position(d.Specs[j-1].End()).Line { + // j begins a new run. End this one. + specs = append(specs, sortSpecs(fset, f, d.Specs[i:j])...) + i = j + } + } + specs = append(specs, sortSpecs(fset, f, d.Specs[i:])...) + d.Specs = specs + + // Deduping can leave a blank line before the rparen; clean that up. + if len(d.Specs) > 0 { + lastSpec := d.Specs[len(d.Specs)-1] + lastLine := fset.Position(lastSpec.Pos()).Line + if rParenLine := fset.Position(d.Rparen).Line; rParenLine > lastLine+1 { + fset.File(d.Rparen).MergeLine(rParenLine - 1) + } + } + } +} + +func importPath(s ast.Spec) string { + t, err := strconv.Unquote(s.(*ast.ImportSpec).Path.Value) + if err == nil { + return t + } + return "" +} + +func importName(s ast.Spec) string { + n := s.(*ast.ImportSpec).Name + if n == nil { + return "" + } + return n.Name +} + +func importComment(s ast.Spec) string { + c := s.(*ast.ImportSpec).Comment + if c == nil { + return "" + } + return c.Text() +} + +// collapse indicates whether prev may be removed, leaving only next. +func collapse(prev, next ast.Spec) bool { + if importPath(next) != importPath(prev) || importName(next) != importName(prev) { + return false + } + return prev.(*ast.ImportSpec).Comment == nil +} + +type posSpan struct { + Start token.Pos + End token.Pos +} + +func sortSpecs(fset *token.FileSet, f *ast.File, specs []ast.Spec) []ast.Spec { + // Can't short-circuit here even if specs are already sorted, + // since they might yet need deduplication. + // A lone import, however, may be safely ignored. + if len(specs) <= 1 { + return specs + } + + // Record positions for specs. + pos := make([]posSpan, len(specs)) + for i, s := range specs { + pos[i] = posSpan{s.Pos(), s.End()} + } + + // Identify comments in this range. + // Any comment from pos[0].Start to the final line counts. + lastLine := fset.Position(pos[len(pos)-1].End).Line + cstart := len(f.Comments) + cend := len(f.Comments) + for i, g := range f.Comments { + if g.Pos() < pos[0].Start { + continue + } + if i < cstart { + cstart = i + } + if fset.Position(g.End()).Line > lastLine { + cend = i + break + } + } + comments := f.Comments[cstart:cend] + + // Assign each comment to the import spec preceding it. + importComment := map[*ast.ImportSpec][]*ast.CommentGroup{} + specIndex := 0 + for _, g := range comments { + for specIndex+1 < len(specs) && pos[specIndex+1].Start <= g.Pos() { + specIndex++ + } + s := specs[specIndex].(*ast.ImportSpec) + importComment[s] = append(importComment[s], g) + } + + // Sort the import specs by import path. + // Remove duplicates, when possible without data loss. + // Reassign the import paths to have the same position sequence. + // Reassign each comment to abut the end of its spec. + // Sort the comments by new position. + sort.Sort(byImportSpec(specs)) + + // Dedup. Thanks to our sorting, we can just consider + // adjacent pairs of imports. + deduped := specs[:0] + for i, s := range specs { + if i == len(specs)-1 || !collapse(s, specs[i+1]) { + deduped = append(deduped, s) + } else { + p := s.Pos() + fset.File(p).MergeLine(fset.Position(p).Line) + } + } + specs = deduped + + // Fix up comment positions + for i, s := range specs { + s := s.(*ast.ImportSpec) + if s.Name != nil { + s.Name.NamePos = pos[i].Start + } + s.Path.ValuePos = pos[i].Start + s.EndPos = pos[i].End + for _, g := range importComment[s] { + for _, c := range g.List { + c.Slash = pos[i].End + } + } + } + + sort.Sort(byCommentPos(comments)) + + return specs +} + +type byImportSpec []ast.Spec // slice of *ast.ImportSpec + +func (x byImportSpec) Len() int { return len(x) } +func (x byImportSpec) Swap(i, j int) { x[i], x[j] = x[j], x[i] } +func (x byImportSpec) Less(i, j int) bool { + ipath := importPath(x[i]) + jpath := importPath(x[j]) + + igroup := importGroup(ipath) + jgroup := importGroup(jpath) + if igroup != jgroup { + return igroup < jgroup + } + + if ipath != jpath { + return ipath < jpath + } + iname := importName(x[i]) + jname := importName(x[j]) + + if iname != jname { + return iname < jname + } + return importComment(x[i]) < importComment(x[j]) +} + +type byCommentPos []*ast.CommentGroup + +func (x byCommentPos) Len() int { return len(x) } +func (x byCommentPos) Swap(i, j int) { x[i], x[j] = x[j], x[i] } +func (x byCommentPos) Less(i, j int) bool { return x[i].Pos() < x[j].Pos() } diff --git a/vendor/golang.org/x/tools/imports/zstdlib.go b/vendor/golang.org/x/tools/imports/zstdlib.go new file mode 100644 index 0000000..28835da --- /dev/null +++ b/vendor/golang.org/x/tools/imports/zstdlib.go @@ -0,0 +1,9289 @@ +// AUTO-GENERATED BY mkstdlib.go + +package imports + +var stdlib = map[string]string{ + "adler32.Checksum": "hash/adler32", + "adler32.New": "hash/adler32", + "adler32.Size": "hash/adler32", + "aes.BlockSize": "crypto/aes", + "aes.KeySizeError": "crypto/aes", + "aes.NewCipher": "crypto/aes", + "ascii85.CorruptInputError": "encoding/ascii85", + "ascii85.Decode": "encoding/ascii85", + "ascii85.Encode": "encoding/ascii85", + "ascii85.MaxEncodedLen": "encoding/ascii85", + "ascii85.NewDecoder": "encoding/ascii85", + "ascii85.NewEncoder": "encoding/ascii85", + "asn1.BitString": "encoding/asn1", + "asn1.ClassApplication": "encoding/asn1", + "asn1.ClassContextSpecific": "encoding/asn1", + "asn1.ClassPrivate": "encoding/asn1", + "asn1.ClassUniversal": "encoding/asn1", + "asn1.Enumerated": "encoding/asn1", + "asn1.Flag": "encoding/asn1", + "asn1.Marshal": "encoding/asn1", + "asn1.ObjectIdentifier": "encoding/asn1", + "asn1.RawContent": "encoding/asn1", + "asn1.RawValue": "encoding/asn1", + "asn1.StructuralError": "encoding/asn1", + "asn1.SyntaxError": "encoding/asn1", + "asn1.TagBitString": "encoding/asn1", + "asn1.TagBoolean": "encoding/asn1", + "asn1.TagEnum": "encoding/asn1", + "asn1.TagGeneralString": "encoding/asn1", + "asn1.TagGeneralizedTime": "encoding/asn1", + "asn1.TagIA5String": "encoding/asn1", + "asn1.TagInteger": "encoding/asn1", + "asn1.TagOID": "encoding/asn1", + "asn1.TagOctetString": "encoding/asn1", + "asn1.TagPrintableString": "encoding/asn1", + "asn1.TagSequence": "encoding/asn1", + "asn1.TagSet": "encoding/asn1", + "asn1.TagT61String": "encoding/asn1", + "asn1.TagUTCTime": "encoding/asn1", + "asn1.TagUTF8String": "encoding/asn1", + "asn1.Unmarshal": "encoding/asn1", + "asn1.UnmarshalWithParams": "encoding/asn1", + "ast.ArrayType": "go/ast", + "ast.AssignStmt": "go/ast", + "ast.Bad": "go/ast", + "ast.BadDecl": "go/ast", + "ast.BadExpr": "go/ast", + "ast.BadStmt": "go/ast", + "ast.BasicLit": "go/ast", + "ast.BinaryExpr": "go/ast", + "ast.BlockStmt": "go/ast", + "ast.BranchStmt": "go/ast", + "ast.CallExpr": "go/ast", + "ast.CaseClause": "go/ast", + "ast.ChanDir": "go/ast", + "ast.ChanType": "go/ast", + "ast.CommClause": "go/ast", + "ast.Comment": "go/ast", + "ast.CommentGroup": "go/ast", + "ast.CommentMap": "go/ast", + "ast.CompositeLit": "go/ast", + "ast.Con": "go/ast", + "ast.DeclStmt": "go/ast", + "ast.DeferStmt": "go/ast", + "ast.Ellipsis": "go/ast", + "ast.EmptyStmt": "go/ast", + "ast.ExprStmt": "go/ast", + "ast.Field": "go/ast", + "ast.FieldFilter": "go/ast", + "ast.FieldList": "go/ast", + "ast.File": "go/ast", + "ast.FileExports": "go/ast", + "ast.Filter": "go/ast", + "ast.FilterDecl": "go/ast", + "ast.FilterFile": "go/ast", + "ast.FilterFuncDuplicates": "go/ast", + "ast.FilterImportDuplicates": "go/ast", + "ast.FilterPackage": "go/ast", + "ast.FilterUnassociatedComments": "go/ast", + "ast.ForStmt": "go/ast", + "ast.Fprint": "go/ast", + "ast.Fun": "go/ast", + "ast.FuncDecl": "go/ast", + "ast.FuncLit": "go/ast", + "ast.FuncType": "go/ast", + "ast.GenDecl": "go/ast", + "ast.GoStmt": "go/ast", + "ast.Ident": "go/ast", + "ast.IfStmt": "go/ast", + "ast.ImportSpec": "go/ast", + "ast.Importer": "go/ast", + "ast.IncDecStmt": "go/ast", + "ast.IndexExpr": "go/ast", + "ast.Inspect": "go/ast", + "ast.InterfaceType": "go/ast", + "ast.IsExported": "go/ast", + "ast.KeyValueExpr": "go/ast", + "ast.LabeledStmt": "go/ast", + "ast.Lbl": "go/ast", + "ast.MapType": "go/ast", + "ast.MergeMode": "go/ast", + "ast.MergePackageFiles": "go/ast", + "ast.NewCommentMap": "go/ast", + "ast.NewIdent": "go/ast", + "ast.NewObj": "go/ast", + "ast.NewPackage": "go/ast", + "ast.NewScope": "go/ast", + "ast.Node": "go/ast", + "ast.NotNilFilter": "go/ast", + "ast.ObjKind": "go/ast", + "ast.Object": "go/ast", + "ast.Package": "go/ast", + "ast.PackageExports": "go/ast", + "ast.ParenExpr": "go/ast", + "ast.Pkg": "go/ast", + "ast.Print": "go/ast", + "ast.RECV": "go/ast", + "ast.RangeStmt": "go/ast", + "ast.ReturnStmt": "go/ast", + "ast.SEND": "go/ast", + "ast.Scope": "go/ast", + "ast.SelectStmt": "go/ast", + "ast.SelectorExpr": "go/ast", + "ast.SendStmt": "go/ast", + "ast.SliceExpr": "go/ast", + "ast.SortImports": "go/ast", + "ast.StarExpr": "go/ast", + "ast.StructType": "go/ast", + "ast.SwitchStmt": "go/ast", + "ast.Typ": "go/ast", + "ast.TypeAssertExpr": "go/ast", + "ast.TypeSpec": "go/ast", + "ast.TypeSwitchStmt": "go/ast", + "ast.UnaryExpr": "go/ast", + "ast.ValueSpec": "go/ast", + "ast.Var": "go/ast", + "ast.Visitor": "go/ast", + "ast.Walk": "go/ast", + "atomic.AddInt32": "sync/atomic", + "atomic.AddInt64": "sync/atomic", + "atomic.AddUint32": "sync/atomic", + "atomic.AddUint64": "sync/atomic", + "atomic.AddUintptr": "sync/atomic", + "atomic.CompareAndSwapInt32": "sync/atomic", + "atomic.CompareAndSwapInt64": "sync/atomic", + "atomic.CompareAndSwapPointer": "sync/atomic", + "atomic.CompareAndSwapUint32": "sync/atomic", + "atomic.CompareAndSwapUint64": "sync/atomic", + "atomic.CompareAndSwapUintptr": "sync/atomic", + "atomic.LoadInt32": "sync/atomic", + "atomic.LoadInt64": "sync/atomic", + "atomic.LoadPointer": "sync/atomic", + "atomic.LoadUint32": "sync/atomic", + "atomic.LoadUint64": "sync/atomic", + "atomic.LoadUintptr": "sync/atomic", + "atomic.StoreInt32": "sync/atomic", + "atomic.StoreInt64": "sync/atomic", + "atomic.StorePointer": "sync/atomic", + "atomic.StoreUint32": "sync/atomic", + "atomic.StoreUint64": "sync/atomic", + "atomic.StoreUintptr": "sync/atomic", + "atomic.SwapInt32": "sync/atomic", + "atomic.SwapInt64": "sync/atomic", + "atomic.SwapPointer": "sync/atomic", + "atomic.SwapUint32": "sync/atomic", + "atomic.SwapUint64": "sync/atomic", + "atomic.SwapUintptr": "sync/atomic", + "atomic.Value": "sync/atomic", + "base32.CorruptInputError": "encoding/base32", + "base32.Encoding": "encoding/base32", + "base32.HexEncoding": "encoding/base32", + "base32.NewDecoder": "encoding/base32", + "base32.NewEncoder": "encoding/base32", + "base32.NewEncoding": "encoding/base32", + "base32.StdEncoding": "encoding/base32", + "base64.CorruptInputError": "encoding/base64", + "base64.Encoding": "encoding/base64", + "base64.NewDecoder": "encoding/base64", + "base64.NewEncoder": "encoding/base64", + "base64.NewEncoding": "encoding/base64", + "base64.NoPadding": "encoding/base64", + "base64.RawStdEncoding": "encoding/base64", + "base64.RawURLEncoding": "encoding/base64", + "base64.StdEncoding": "encoding/base64", + "base64.StdPadding": "encoding/base64", + "base64.URLEncoding": "encoding/base64", + "big.Above": "math/big", + "big.Accuracy": "math/big", + "big.AwayFromZero": "math/big", + "big.Below": "math/big", + "big.ErrNaN": "math/big", + "big.Exact": "math/big", + "big.Float": "math/big", + "big.Int": "math/big", + "big.Jacobi": "math/big", + "big.MaxBase": "math/big", + "big.MaxExp": "math/big", + "big.MaxPrec": "math/big", + "big.MinExp": "math/big", + "big.NewFloat": "math/big", + "big.NewInt": "math/big", + "big.NewRat": "math/big", + "big.ParseFloat": "math/big", + "big.Rat": "math/big", + "big.RoundingMode": "math/big", + "big.ToNearestAway": "math/big", + "big.ToNearestEven": "math/big", + "big.ToNegativeInf": "math/big", + "big.ToPositiveInf": "math/big", + "big.ToZero": "math/big", + "big.Word": "math/big", + "binary.BigEndian": "encoding/binary", + "binary.ByteOrder": "encoding/binary", + "binary.LittleEndian": "encoding/binary", + "binary.MaxVarintLen16": "encoding/binary", + "binary.MaxVarintLen32": "encoding/binary", + "binary.MaxVarintLen64": "encoding/binary", + "binary.PutUvarint": "encoding/binary", + "binary.PutVarint": "encoding/binary", + "binary.Read": "encoding/binary", + "binary.ReadUvarint": "encoding/binary", + "binary.ReadVarint": "encoding/binary", + "binary.Size": "encoding/binary", + "binary.Uvarint": "encoding/binary", + "binary.Varint": "encoding/binary", + "binary.Write": "encoding/binary", + "bufio.ErrAdvanceTooFar": "bufio", + "bufio.ErrBufferFull": "bufio", + "bufio.ErrFinalToken": "bufio", + "bufio.ErrInvalidUnreadByte": "bufio", + "bufio.ErrInvalidUnreadRune": "bufio", + "bufio.ErrNegativeAdvance": "bufio", + "bufio.ErrNegativeCount": "bufio", + "bufio.ErrTooLong": "bufio", + "bufio.MaxScanTokenSize": "bufio", + "bufio.NewReadWriter": "bufio", + "bufio.NewReader": "bufio", + "bufio.NewReaderSize": "bufio", + "bufio.NewScanner": "bufio", + "bufio.NewWriter": "bufio", + "bufio.NewWriterSize": "bufio", + "bufio.ReadWriter": "bufio", + "bufio.Reader": "bufio", + "bufio.ScanBytes": "bufio", + "bufio.ScanLines": "bufio", + "bufio.ScanRunes": "bufio", + "bufio.ScanWords": "bufio", + "bufio.Scanner": "bufio", + "bufio.SplitFunc": "bufio", + "bufio.Writer": "bufio", + "build.AllowBinary": "go/build", + "build.ArchChar": "go/build", + "build.Context": "go/build", + "build.Default": "go/build", + "build.FindOnly": "go/build", + "build.IgnoreVendor": "go/build", + "build.Import": "go/build", + "build.ImportComment": "go/build", + "build.ImportDir": "go/build", + "build.ImportMode": "go/build", + "build.IsLocalImport": "go/build", + "build.MultiplePackageError": "go/build", + "build.NoGoError": "go/build", + "build.Package": "go/build", + "build.ToolDir": "go/build", + "bytes.Buffer": "bytes", + "bytes.Compare": "bytes", + "bytes.Contains": "bytes", + "bytes.ContainsAny": "bytes", + "bytes.ContainsRune": "bytes", + "bytes.Count": "bytes", + "bytes.Equal": "bytes", + "bytes.EqualFold": "bytes", + "bytes.ErrTooLarge": "bytes", + "bytes.Fields": "bytes", + "bytes.FieldsFunc": "bytes", + "bytes.HasPrefix": "bytes", + "bytes.HasSuffix": "bytes", + "bytes.Index": "bytes", + "bytes.IndexAny": "bytes", + "bytes.IndexByte": "bytes", + "bytes.IndexFunc": "bytes", + "bytes.IndexRune": "bytes", + "bytes.Join": "bytes", + "bytes.LastIndex": "bytes", + "bytes.LastIndexAny": "bytes", + "bytes.LastIndexByte": "bytes", + "bytes.LastIndexFunc": "bytes", + "bytes.Map": "bytes", + "bytes.MinRead": "bytes", + "bytes.NewBuffer": "bytes", + "bytes.NewBufferString": "bytes", + "bytes.NewReader": "bytes", + "bytes.Reader": "bytes", + "bytes.Repeat": "bytes", + "bytes.Replace": "bytes", + "bytes.Runes": "bytes", + "bytes.Split": "bytes", + "bytes.SplitAfter": "bytes", + "bytes.SplitAfterN": "bytes", + "bytes.SplitN": "bytes", + "bytes.Title": "bytes", + "bytes.ToLower": "bytes", + "bytes.ToLowerSpecial": "bytes", + "bytes.ToTitle": "bytes", + "bytes.ToTitleSpecial": "bytes", + "bytes.ToUpper": "bytes", + "bytes.ToUpperSpecial": "bytes", + "bytes.Trim": "bytes", + "bytes.TrimFunc": "bytes", + "bytes.TrimLeft": "bytes", + "bytes.TrimLeftFunc": "bytes", + "bytes.TrimPrefix": "bytes", + "bytes.TrimRight": "bytes", + "bytes.TrimRightFunc": "bytes", + "bytes.TrimSpace": "bytes", + "bytes.TrimSuffix": "bytes", + "bzip2.NewReader": "compress/bzip2", + "bzip2.StructuralError": "compress/bzip2", + "cgi.Handler": "net/http/cgi", + "cgi.Request": "net/http/cgi", + "cgi.RequestFromMap": "net/http/cgi", + "cgi.Serve": "net/http/cgi", + "cipher.AEAD": "crypto/cipher", + "cipher.Block": "crypto/cipher", + "cipher.BlockMode": "crypto/cipher", + "cipher.NewCBCDecrypter": "crypto/cipher", + "cipher.NewCBCEncrypter": "crypto/cipher", + "cipher.NewCFBDecrypter": "crypto/cipher", + "cipher.NewCFBEncrypter": "crypto/cipher", + "cipher.NewCTR": "crypto/cipher", + "cipher.NewGCM": "crypto/cipher", + "cipher.NewGCMWithNonceSize": "crypto/cipher", + "cipher.NewOFB": "crypto/cipher", + "cipher.Stream": "crypto/cipher", + "cipher.StreamReader": "crypto/cipher", + "cipher.StreamWriter": "crypto/cipher", + "cmplx.Abs": "math/cmplx", + "cmplx.Acos": "math/cmplx", + "cmplx.Acosh": "math/cmplx", + "cmplx.Asin": "math/cmplx", + "cmplx.Asinh": "math/cmplx", + "cmplx.Atan": "math/cmplx", + "cmplx.Atanh": "math/cmplx", + "cmplx.Conj": "math/cmplx", + "cmplx.Cos": "math/cmplx", + "cmplx.Cosh": "math/cmplx", + "cmplx.Cot": "math/cmplx", + "cmplx.Exp": "math/cmplx", + "cmplx.Inf": "math/cmplx", + "cmplx.IsInf": "math/cmplx", + "cmplx.IsNaN": "math/cmplx", + "cmplx.Log": "math/cmplx", + "cmplx.Log10": "math/cmplx", + "cmplx.NaN": "math/cmplx", + "cmplx.Phase": "math/cmplx", + "cmplx.Polar": "math/cmplx", + "cmplx.Pow": "math/cmplx", + "cmplx.Rect": "math/cmplx", + "cmplx.Sin": "math/cmplx", + "cmplx.Sinh": "math/cmplx", + "cmplx.Sqrt": "math/cmplx", + "cmplx.Tan": "math/cmplx", + "cmplx.Tanh": "math/cmplx", + "color.Alpha": "image/color", + "color.Alpha16": "image/color", + "color.Alpha16Model": "image/color", + "color.AlphaModel": "image/color", + "color.Black": "image/color", + "color.CMYK": "image/color", + "color.CMYKModel": "image/color", + "color.CMYKToRGB": "image/color", + "color.Color": "image/color", + "color.Gray": "image/color", + "color.Gray16": "image/color", + "color.Gray16Model": "image/color", + "color.GrayModel": "image/color", + "color.Model": "image/color", + "color.ModelFunc": "image/color", + "color.NRGBA": "image/color", + "color.NRGBA64": "image/color", + "color.NRGBA64Model": "image/color", + "color.NRGBAModel": "image/color", + "color.NYCbCrA": "image/color", + "color.NYCbCrAModel": "image/color", + "color.Opaque": "image/color", + "color.Palette": "image/color", + "color.RGBA": "image/color", + "color.RGBA64": "image/color", + "color.RGBA64Model": "image/color", + "color.RGBAModel": "image/color", + "color.RGBToCMYK": "image/color", + "color.RGBToYCbCr": "image/color", + "color.Transparent": "image/color", + "color.White": "image/color", + "color.YCbCr": "image/color", + "color.YCbCrModel": "image/color", + "color.YCbCrToRGB": "image/color", + "constant.BinaryOp": "go/constant", + "constant.BitLen": "go/constant", + "constant.Bool": "go/constant", + "constant.BoolVal": "go/constant", + "constant.Bytes": "go/constant", + "constant.Compare": "go/constant", + "constant.Complex": "go/constant", + "constant.Denom": "go/constant", + "constant.Float": "go/constant", + "constant.Float32Val": "go/constant", + "constant.Float64Val": "go/constant", + "constant.Imag": "go/constant", + "constant.Int": "go/constant", + "constant.Int64Val": "go/constant", + "constant.Kind": "go/constant", + "constant.MakeBool": "go/constant", + "constant.MakeFloat64": "go/constant", + "constant.MakeFromBytes": "go/constant", + "constant.MakeFromLiteral": "go/constant", + "constant.MakeImag": "go/constant", + "constant.MakeInt64": "go/constant", + "constant.MakeString": "go/constant", + "constant.MakeUint64": "go/constant", + "constant.MakeUnknown": "go/constant", + "constant.Num": "go/constant", + "constant.Real": "go/constant", + "constant.Shift": "go/constant", + "constant.Sign": "go/constant", + "constant.String": "go/constant", + "constant.StringVal": "go/constant", + "constant.ToComplex": "go/constant", + "constant.ToFloat": "go/constant", + "constant.ToInt": "go/constant", + "constant.Uint64Val": "go/constant", + "constant.UnaryOp": "go/constant", + "constant.Unknown": "go/constant", + "context.Background": "context", + "context.CancelFunc": "context", + "context.Canceled": "context", + "context.Context": "context", + "context.DeadlineExceeded": "context", + "context.TODO": "context", + "context.WithCancel": "context", + "context.WithDeadline": "context", + "context.WithTimeout": "context", + "context.WithValue": "context", + "cookiejar.Jar": "net/http/cookiejar", + "cookiejar.New": "net/http/cookiejar", + "cookiejar.Options": "net/http/cookiejar", + "cookiejar.PublicSuffixList": "net/http/cookiejar", + "crc32.Castagnoli": "hash/crc32", + "crc32.Checksum": "hash/crc32", + "crc32.ChecksumIEEE": "hash/crc32", + "crc32.IEEE": "hash/crc32", + "crc32.IEEETable": "hash/crc32", + "crc32.Koopman": "hash/crc32", + "crc32.MakeTable": "hash/crc32", + "crc32.New": "hash/crc32", + "crc32.NewIEEE": "hash/crc32", + "crc32.Size": "hash/crc32", + "crc32.Table": "hash/crc32", + "crc32.Update": "hash/crc32", + "crc64.Checksum": "hash/crc64", + "crc64.ECMA": "hash/crc64", + "crc64.ISO": "hash/crc64", + "crc64.MakeTable": "hash/crc64", + "crc64.New": "hash/crc64", + "crc64.Size": "hash/crc64", + "crc64.Table": "hash/crc64", + "crc64.Update": "hash/crc64", + "crypto.Decrypter": "crypto", + "crypto.DecrypterOpts": "crypto", + "crypto.Hash": "crypto", + "crypto.MD4": "crypto", + "crypto.MD5": "crypto", + "crypto.MD5SHA1": "crypto", + "crypto.PrivateKey": "crypto", + "crypto.PublicKey": "crypto", + "crypto.RIPEMD160": "crypto", + "crypto.RegisterHash": "crypto", + "crypto.SHA1": "crypto", + "crypto.SHA224": "crypto", + "crypto.SHA256": "crypto", + "crypto.SHA384": "crypto", + "crypto.SHA3_224": "crypto", + "crypto.SHA3_256": "crypto", + "crypto.SHA3_384": "crypto", + "crypto.SHA3_512": "crypto", + "crypto.SHA512": "crypto", + "crypto.SHA512_224": "crypto", + "crypto.SHA512_256": "crypto", + "crypto.Signer": "crypto", + "crypto.SignerOpts": "crypto", + "csv.ErrBareQuote": "encoding/csv", + "csv.ErrFieldCount": "encoding/csv", + "csv.ErrQuote": "encoding/csv", + "csv.ErrTrailingComma": "encoding/csv", + "csv.NewReader": "encoding/csv", + "csv.NewWriter": "encoding/csv", + "csv.ParseError": "encoding/csv", + "csv.Reader": "encoding/csv", + "csv.Writer": "encoding/csv", + "debug.FreeOSMemory": "runtime/debug", + "debug.GCStats": "runtime/debug", + "debug.PrintStack": "runtime/debug", + "debug.ReadGCStats": "runtime/debug", + "debug.SetGCPercent": "runtime/debug", + "debug.SetMaxStack": "runtime/debug", + "debug.SetMaxThreads": "runtime/debug", + "debug.SetPanicOnFault": "runtime/debug", + "debug.SetTraceback": "runtime/debug", + "debug.Stack": "runtime/debug", + "debug.WriteHeapDump": "runtime/debug", + "des.BlockSize": "crypto/des", + "des.KeySizeError": "crypto/des", + "des.NewCipher": "crypto/des", + "des.NewTripleDESCipher": "crypto/des", + "doc.AllDecls": "go/doc", + "doc.AllMethods": "go/doc", + "doc.Example": "go/doc", + "doc.Examples": "go/doc", + "doc.Filter": "go/doc", + "doc.Func": "go/doc", + "doc.IllegalPrefixes": "go/doc", + "doc.Mode": "go/doc", + "doc.New": "go/doc", + "doc.Note": "go/doc", + "doc.Package": "go/doc", + "doc.Synopsis": "go/doc", + "doc.ToHTML": "go/doc", + "doc.ToText": "go/doc", + "doc.Type": "go/doc", + "doc.Value": "go/doc", + "draw.Draw": "image/draw", + "draw.DrawMask": "image/draw", + "draw.Drawer": "image/draw", + "draw.FloydSteinberg": "image/draw", + "draw.Image": "image/draw", + "draw.Op": "image/draw", + "draw.Over": "image/draw", + "draw.Quantizer": "image/draw", + "draw.Src": "image/draw", + "driver.Bool": "database/sql/driver", + "driver.ColumnConverter": "database/sql/driver", + "driver.Conn": "database/sql/driver", + "driver.DefaultParameterConverter": "database/sql/driver", + "driver.Driver": "database/sql/driver", + "driver.ErrBadConn": "database/sql/driver", + "driver.ErrSkip": "database/sql/driver", + "driver.Execer": "database/sql/driver", + "driver.Int32": "database/sql/driver", + "driver.IsScanValue": "database/sql/driver", + "driver.IsValue": "database/sql/driver", + "driver.NotNull": "database/sql/driver", + "driver.Null": "database/sql/driver", + "driver.Queryer": "database/sql/driver", + "driver.Result": "database/sql/driver", + "driver.ResultNoRows": "database/sql/driver", + "driver.Rows": "database/sql/driver", + "driver.RowsAffected": "database/sql/driver", + "driver.Stmt": "database/sql/driver", + "driver.String": "database/sql/driver", + "driver.Tx": "database/sql/driver", + "driver.Value": "database/sql/driver", + "driver.ValueConverter": "database/sql/driver", + "driver.Valuer": "database/sql/driver", + "dsa.ErrInvalidPublicKey": "crypto/dsa", + "dsa.GenerateKey": "crypto/dsa", + "dsa.GenerateParameters": "crypto/dsa", + "dsa.L1024N160": "crypto/dsa", + "dsa.L2048N224": "crypto/dsa", + "dsa.L2048N256": "crypto/dsa", + "dsa.L3072N256": "crypto/dsa", + "dsa.ParameterSizes": "crypto/dsa", + "dsa.Parameters": "crypto/dsa", + "dsa.PrivateKey": "crypto/dsa", + "dsa.PublicKey": "crypto/dsa", + "dsa.Sign": "crypto/dsa", + "dsa.Verify": "crypto/dsa", + "dwarf.AddrType": "debug/dwarf", + "dwarf.ArrayType": "debug/dwarf", + "dwarf.Attr": "debug/dwarf", + "dwarf.AttrAbstractOrigin": "debug/dwarf", + "dwarf.AttrAccessibility": "debug/dwarf", + "dwarf.AttrAddrClass": "debug/dwarf", + "dwarf.AttrAllocated": "debug/dwarf", + "dwarf.AttrArtificial": "debug/dwarf", + "dwarf.AttrAssociated": "debug/dwarf", + "dwarf.AttrBaseTypes": "debug/dwarf", + "dwarf.AttrBitOffset": "debug/dwarf", + "dwarf.AttrBitSize": "debug/dwarf", + "dwarf.AttrByteSize": "debug/dwarf", + "dwarf.AttrCallColumn": "debug/dwarf", + "dwarf.AttrCallFile": "debug/dwarf", + "dwarf.AttrCallLine": "debug/dwarf", + "dwarf.AttrCalling": "debug/dwarf", + "dwarf.AttrCommonRef": "debug/dwarf", + "dwarf.AttrCompDir": "debug/dwarf", + "dwarf.AttrConstValue": "debug/dwarf", + "dwarf.AttrContainingType": "debug/dwarf", + "dwarf.AttrCount": "debug/dwarf", + "dwarf.AttrDataLocation": "debug/dwarf", + "dwarf.AttrDataMemberLoc": "debug/dwarf", + "dwarf.AttrDeclColumn": "debug/dwarf", + "dwarf.AttrDeclFile": "debug/dwarf", + "dwarf.AttrDeclLine": "debug/dwarf", + "dwarf.AttrDeclaration": "debug/dwarf", + "dwarf.AttrDefaultValue": "debug/dwarf", + "dwarf.AttrDescription": "debug/dwarf", + "dwarf.AttrDiscr": "debug/dwarf", + "dwarf.AttrDiscrList": "debug/dwarf", + "dwarf.AttrDiscrValue": "debug/dwarf", + "dwarf.AttrEncoding": "debug/dwarf", + "dwarf.AttrEntrypc": "debug/dwarf", + "dwarf.AttrExtension": "debug/dwarf", + "dwarf.AttrExternal": "debug/dwarf", + "dwarf.AttrFrameBase": "debug/dwarf", + "dwarf.AttrFriend": "debug/dwarf", + "dwarf.AttrHighpc": "debug/dwarf", + "dwarf.AttrIdentifierCase": "debug/dwarf", + "dwarf.AttrImport": "debug/dwarf", + "dwarf.AttrInline": "debug/dwarf", + "dwarf.AttrIsOptional": "debug/dwarf", + "dwarf.AttrLanguage": "debug/dwarf", + "dwarf.AttrLocation": "debug/dwarf", + "dwarf.AttrLowerBound": "debug/dwarf", + "dwarf.AttrLowpc": "debug/dwarf", + "dwarf.AttrMacroInfo": "debug/dwarf", + "dwarf.AttrName": "debug/dwarf", + "dwarf.AttrNamelistItem": "debug/dwarf", + "dwarf.AttrOrdering": "debug/dwarf", + "dwarf.AttrPriority": "debug/dwarf", + "dwarf.AttrProducer": "debug/dwarf", + "dwarf.AttrPrototyped": "debug/dwarf", + "dwarf.AttrRanges": "debug/dwarf", + "dwarf.AttrReturnAddr": "debug/dwarf", + "dwarf.AttrSegment": "debug/dwarf", + "dwarf.AttrSibling": "debug/dwarf", + "dwarf.AttrSpecification": "debug/dwarf", + "dwarf.AttrStartScope": "debug/dwarf", + "dwarf.AttrStaticLink": "debug/dwarf", + "dwarf.AttrStmtList": "debug/dwarf", + "dwarf.AttrStride": "debug/dwarf", + "dwarf.AttrStrideSize": "debug/dwarf", + "dwarf.AttrStringLength": "debug/dwarf", + "dwarf.AttrTrampoline": "debug/dwarf", + "dwarf.AttrType": "debug/dwarf", + "dwarf.AttrUpperBound": "debug/dwarf", + "dwarf.AttrUseLocation": "debug/dwarf", + "dwarf.AttrUseUTF8": "debug/dwarf", + "dwarf.AttrVarParam": "debug/dwarf", + "dwarf.AttrVirtuality": "debug/dwarf", + "dwarf.AttrVisibility": "debug/dwarf", + "dwarf.AttrVtableElemLoc": "debug/dwarf", + "dwarf.BasicType": "debug/dwarf", + "dwarf.BoolType": "debug/dwarf", + "dwarf.CharType": "debug/dwarf", + "dwarf.Class": "debug/dwarf", + "dwarf.ClassAddress": "debug/dwarf", + "dwarf.ClassBlock": "debug/dwarf", + "dwarf.ClassConstant": "debug/dwarf", + "dwarf.ClassExprLoc": "debug/dwarf", + "dwarf.ClassFlag": "debug/dwarf", + "dwarf.ClassLinePtr": "debug/dwarf", + "dwarf.ClassLocListPtr": "debug/dwarf", + "dwarf.ClassMacPtr": "debug/dwarf", + "dwarf.ClassRangeListPtr": "debug/dwarf", + "dwarf.ClassReference": "debug/dwarf", + "dwarf.ClassReferenceAlt": "debug/dwarf", + "dwarf.ClassReferenceSig": "debug/dwarf", + "dwarf.ClassString": "debug/dwarf", + "dwarf.ClassStringAlt": "debug/dwarf", + "dwarf.ClassUnknown": "debug/dwarf", + "dwarf.CommonType": "debug/dwarf", + "dwarf.ComplexType": "debug/dwarf", + "dwarf.Data": "debug/dwarf", + "dwarf.DecodeError": "debug/dwarf", + "dwarf.DotDotDotType": "debug/dwarf", + "dwarf.Entry": "debug/dwarf", + "dwarf.EnumType": "debug/dwarf", + "dwarf.EnumValue": "debug/dwarf", + "dwarf.ErrUnknownPC": "debug/dwarf", + "dwarf.Field": "debug/dwarf", + "dwarf.FloatType": "debug/dwarf", + "dwarf.FuncType": "debug/dwarf", + "dwarf.IntType": "debug/dwarf", + "dwarf.LineEntry": "debug/dwarf", + "dwarf.LineFile": "debug/dwarf", + "dwarf.LineReader": "debug/dwarf", + "dwarf.LineReaderPos": "debug/dwarf", + "dwarf.New": "debug/dwarf", + "dwarf.Offset": "debug/dwarf", + "dwarf.PtrType": "debug/dwarf", + "dwarf.QualType": "debug/dwarf", + "dwarf.Reader": "debug/dwarf", + "dwarf.StructField": "debug/dwarf", + "dwarf.StructType": "debug/dwarf", + "dwarf.Tag": "debug/dwarf", + "dwarf.TagAccessDeclaration": "debug/dwarf", + "dwarf.TagArrayType": "debug/dwarf", + "dwarf.TagBaseType": "debug/dwarf", + "dwarf.TagCatchDwarfBlock": "debug/dwarf", + "dwarf.TagClassType": "debug/dwarf", + "dwarf.TagCommonDwarfBlock": "debug/dwarf", + "dwarf.TagCommonInclusion": "debug/dwarf", + "dwarf.TagCompileUnit": "debug/dwarf", + "dwarf.TagCondition": "debug/dwarf", + "dwarf.TagConstType": "debug/dwarf", + "dwarf.TagConstant": "debug/dwarf", + "dwarf.TagDwarfProcedure": "debug/dwarf", + "dwarf.TagEntryPoint": "debug/dwarf", + "dwarf.TagEnumerationType": "debug/dwarf", + "dwarf.TagEnumerator": "debug/dwarf", + "dwarf.TagFileType": "debug/dwarf", + "dwarf.TagFormalParameter": "debug/dwarf", + "dwarf.TagFriend": "debug/dwarf", + "dwarf.TagImportedDeclaration": "debug/dwarf", + "dwarf.TagImportedModule": "debug/dwarf", + "dwarf.TagImportedUnit": "debug/dwarf", + "dwarf.TagInheritance": "debug/dwarf", + "dwarf.TagInlinedSubroutine": "debug/dwarf", + "dwarf.TagInterfaceType": "debug/dwarf", + "dwarf.TagLabel": "debug/dwarf", + "dwarf.TagLexDwarfBlock": "debug/dwarf", + "dwarf.TagMember": "debug/dwarf", + "dwarf.TagModule": "debug/dwarf", + "dwarf.TagMutableType": "debug/dwarf", + "dwarf.TagNamelist": "debug/dwarf", + "dwarf.TagNamelistItem": "debug/dwarf", + "dwarf.TagNamespace": "debug/dwarf", + "dwarf.TagPackedType": "debug/dwarf", + "dwarf.TagPartialUnit": "debug/dwarf", + "dwarf.TagPointerType": "debug/dwarf", + "dwarf.TagPtrToMemberType": "debug/dwarf", + "dwarf.TagReferenceType": "debug/dwarf", + "dwarf.TagRestrictType": "debug/dwarf", + "dwarf.TagRvalueReferenceType": "debug/dwarf", + "dwarf.TagSetType": "debug/dwarf", + "dwarf.TagSharedType": "debug/dwarf", + "dwarf.TagStringType": "debug/dwarf", + "dwarf.TagStructType": "debug/dwarf", + "dwarf.TagSubprogram": "debug/dwarf", + "dwarf.TagSubrangeType": "debug/dwarf", + "dwarf.TagSubroutineType": "debug/dwarf", + "dwarf.TagTemplateAlias": "debug/dwarf", + "dwarf.TagTemplateTypeParameter": "debug/dwarf", + "dwarf.TagTemplateValueParameter": "debug/dwarf", + "dwarf.TagThrownType": "debug/dwarf", + "dwarf.TagTryDwarfBlock": "debug/dwarf", + "dwarf.TagTypeUnit": "debug/dwarf", + "dwarf.TagTypedef": "debug/dwarf", + "dwarf.TagUnionType": "debug/dwarf", + "dwarf.TagUnspecifiedParameters": "debug/dwarf", + "dwarf.TagUnspecifiedType": "debug/dwarf", + "dwarf.TagVariable": "debug/dwarf", + "dwarf.TagVariant": "debug/dwarf", + "dwarf.TagVariantPart": "debug/dwarf", + "dwarf.TagVolatileType": "debug/dwarf", + "dwarf.TagWithStmt": "debug/dwarf", + "dwarf.Type": "debug/dwarf", + "dwarf.TypedefType": "debug/dwarf", + "dwarf.UcharType": "debug/dwarf", + "dwarf.UintType": "debug/dwarf", + "dwarf.UnspecifiedType": "debug/dwarf", + "dwarf.VoidType": "debug/dwarf", + "ecdsa.GenerateKey": "crypto/ecdsa", + "ecdsa.PrivateKey": "crypto/ecdsa", + "ecdsa.PublicKey": "crypto/ecdsa", + "ecdsa.Sign": "crypto/ecdsa", + "ecdsa.Verify": "crypto/ecdsa", + "elf.ARM_MAGIC_TRAMP_NUMBER": "debug/elf", + "elf.COMPRESS_HIOS": "debug/elf", + "elf.COMPRESS_HIPROC": "debug/elf", + "elf.COMPRESS_LOOS": "debug/elf", + "elf.COMPRESS_LOPROC": "debug/elf", + "elf.COMPRESS_ZLIB": "debug/elf", + "elf.Chdr32": "debug/elf", + "elf.Chdr64": "debug/elf", + "elf.Class": "debug/elf", + "elf.CompressionType": "debug/elf", + "elf.DF_BIND_NOW": "debug/elf", + "elf.DF_ORIGIN": "debug/elf", + "elf.DF_STATIC_TLS": "debug/elf", + "elf.DF_SYMBOLIC": "debug/elf", + "elf.DF_TEXTREL": "debug/elf", + "elf.DT_BIND_NOW": "debug/elf", + "elf.DT_DEBUG": "debug/elf", + "elf.DT_ENCODING": "debug/elf", + "elf.DT_FINI": "debug/elf", + "elf.DT_FINI_ARRAY": "debug/elf", + "elf.DT_FINI_ARRAYSZ": "debug/elf", + "elf.DT_FLAGS": "debug/elf", + "elf.DT_HASH": "debug/elf", + "elf.DT_HIOS": "debug/elf", + "elf.DT_HIPROC": "debug/elf", + "elf.DT_INIT": "debug/elf", + "elf.DT_INIT_ARRAY": "debug/elf", + "elf.DT_INIT_ARRAYSZ": "debug/elf", + "elf.DT_JMPREL": "debug/elf", + "elf.DT_LOOS": "debug/elf", + "elf.DT_LOPROC": "debug/elf", + "elf.DT_NEEDED": "debug/elf", + "elf.DT_NULL": "debug/elf", + "elf.DT_PLTGOT": "debug/elf", + "elf.DT_PLTREL": "debug/elf", + "elf.DT_PLTRELSZ": "debug/elf", + "elf.DT_PREINIT_ARRAY": "debug/elf", + "elf.DT_PREINIT_ARRAYSZ": "debug/elf", + "elf.DT_REL": "debug/elf", + "elf.DT_RELA": "debug/elf", + "elf.DT_RELAENT": "debug/elf", + "elf.DT_RELASZ": "debug/elf", + "elf.DT_RELENT": "debug/elf", + "elf.DT_RELSZ": "debug/elf", + "elf.DT_RPATH": "debug/elf", + "elf.DT_RUNPATH": "debug/elf", + "elf.DT_SONAME": "debug/elf", + "elf.DT_STRSZ": "debug/elf", + "elf.DT_STRTAB": "debug/elf", + "elf.DT_SYMBOLIC": "debug/elf", + "elf.DT_SYMENT": "debug/elf", + "elf.DT_SYMTAB": "debug/elf", + "elf.DT_TEXTREL": "debug/elf", + "elf.DT_VERNEED": "debug/elf", + "elf.DT_VERNEEDNUM": "debug/elf", + "elf.DT_VERSYM": "debug/elf", + "elf.Data": "debug/elf", + "elf.Dyn32": "debug/elf", + "elf.Dyn64": "debug/elf", + "elf.DynFlag": "debug/elf", + "elf.DynTag": "debug/elf", + "elf.EI_ABIVERSION": "debug/elf", + "elf.EI_CLASS": "debug/elf", + "elf.EI_DATA": "debug/elf", + "elf.EI_NIDENT": "debug/elf", + "elf.EI_OSABI": "debug/elf", + "elf.EI_PAD": "debug/elf", + "elf.EI_VERSION": "debug/elf", + "elf.ELFCLASS32": "debug/elf", + "elf.ELFCLASS64": "debug/elf", + "elf.ELFCLASSNONE": "debug/elf", + "elf.ELFDATA2LSB": "debug/elf", + "elf.ELFDATA2MSB": "debug/elf", + "elf.ELFDATANONE": "debug/elf", + "elf.ELFMAG": "debug/elf", + "elf.ELFOSABI_86OPEN": "debug/elf", + "elf.ELFOSABI_AIX": "debug/elf", + "elf.ELFOSABI_ARM": "debug/elf", + "elf.ELFOSABI_FREEBSD": "debug/elf", + "elf.ELFOSABI_HPUX": "debug/elf", + "elf.ELFOSABI_HURD": "debug/elf", + "elf.ELFOSABI_IRIX": "debug/elf", + "elf.ELFOSABI_LINUX": "debug/elf", + "elf.ELFOSABI_MODESTO": "debug/elf", + "elf.ELFOSABI_NETBSD": "debug/elf", + "elf.ELFOSABI_NONE": "debug/elf", + "elf.ELFOSABI_NSK": "debug/elf", + "elf.ELFOSABI_OPENBSD": "debug/elf", + "elf.ELFOSABI_OPENVMS": "debug/elf", + "elf.ELFOSABI_SOLARIS": "debug/elf", + "elf.ELFOSABI_STANDALONE": "debug/elf", + "elf.ELFOSABI_TRU64": "debug/elf", + "elf.EM_386": "debug/elf", + "elf.EM_486": "debug/elf", + "elf.EM_68HC12": "debug/elf", + "elf.EM_68K": "debug/elf", + "elf.EM_860": "debug/elf", + "elf.EM_88K": "debug/elf", + "elf.EM_960": "debug/elf", + "elf.EM_AARCH64": "debug/elf", + "elf.EM_ALPHA": "debug/elf", + "elf.EM_ALPHA_STD": "debug/elf", + "elf.EM_ARC": "debug/elf", + "elf.EM_ARM": "debug/elf", + "elf.EM_COLDFIRE": "debug/elf", + "elf.EM_FR20": "debug/elf", + "elf.EM_H8S": "debug/elf", + "elf.EM_H8_300": "debug/elf", + "elf.EM_H8_300H": "debug/elf", + "elf.EM_H8_500": "debug/elf", + "elf.EM_IA_64": "debug/elf", + "elf.EM_M32": "debug/elf", + "elf.EM_ME16": "debug/elf", + "elf.EM_MIPS": "debug/elf", + "elf.EM_MIPS_RS3_LE": "debug/elf", + "elf.EM_MIPS_RS4_BE": "debug/elf", + "elf.EM_MIPS_X": "debug/elf", + "elf.EM_MMA": "debug/elf", + "elf.EM_NCPU": "debug/elf", + "elf.EM_NDR1": "debug/elf", + "elf.EM_NONE": "debug/elf", + "elf.EM_PARISC": "debug/elf", + "elf.EM_PCP": "debug/elf", + "elf.EM_PPC": "debug/elf", + "elf.EM_PPC64": "debug/elf", + "elf.EM_RCE": "debug/elf", + "elf.EM_RH32": "debug/elf", + "elf.EM_S370": "debug/elf", + "elf.EM_S390": "debug/elf", + "elf.EM_SH": "debug/elf", + "elf.EM_SPARC": "debug/elf", + "elf.EM_SPARC32PLUS": "debug/elf", + "elf.EM_SPARCV9": "debug/elf", + "elf.EM_ST100": "debug/elf", + "elf.EM_STARCORE": "debug/elf", + "elf.EM_TINYJ": "debug/elf", + "elf.EM_TRICORE": "debug/elf", + "elf.EM_V800": "debug/elf", + "elf.EM_VPP500": "debug/elf", + "elf.EM_X86_64": "debug/elf", + "elf.ET_CORE": "debug/elf", + "elf.ET_DYN": "debug/elf", + "elf.ET_EXEC": "debug/elf", + "elf.ET_HIOS": "debug/elf", + "elf.ET_HIPROC": "debug/elf", + "elf.ET_LOOS": "debug/elf", + "elf.ET_LOPROC": "debug/elf", + "elf.ET_NONE": "debug/elf", + "elf.ET_REL": "debug/elf", + "elf.EV_CURRENT": "debug/elf", + "elf.EV_NONE": "debug/elf", + "elf.ErrNoSymbols": "debug/elf", + "elf.File": "debug/elf", + "elf.FileHeader": "debug/elf", + "elf.FormatError": "debug/elf", + "elf.Header32": "debug/elf", + "elf.Header64": "debug/elf", + "elf.ImportedSymbol": "debug/elf", + "elf.Machine": "debug/elf", + "elf.NT_FPREGSET": "debug/elf", + "elf.NT_PRPSINFO": "debug/elf", + "elf.NT_PRSTATUS": "debug/elf", + "elf.NType": "debug/elf", + "elf.NewFile": "debug/elf", + "elf.OSABI": "debug/elf", + "elf.Open": "debug/elf", + "elf.PF_MASKOS": "debug/elf", + "elf.PF_MASKPROC": "debug/elf", + "elf.PF_R": "debug/elf", + "elf.PF_W": "debug/elf", + "elf.PF_X": "debug/elf", + "elf.PT_DYNAMIC": "debug/elf", + "elf.PT_HIOS": "debug/elf", + "elf.PT_HIPROC": "debug/elf", + "elf.PT_INTERP": "debug/elf", + "elf.PT_LOAD": "debug/elf", + "elf.PT_LOOS": "debug/elf", + "elf.PT_LOPROC": "debug/elf", + "elf.PT_NOTE": "debug/elf", + "elf.PT_NULL": "debug/elf", + "elf.PT_PHDR": "debug/elf", + "elf.PT_SHLIB": "debug/elf", + "elf.PT_TLS": "debug/elf", + "elf.Prog": "debug/elf", + "elf.Prog32": "debug/elf", + "elf.Prog64": "debug/elf", + "elf.ProgFlag": "debug/elf", + "elf.ProgHeader": "debug/elf", + "elf.ProgType": "debug/elf", + "elf.R_386": "debug/elf", + "elf.R_386_32": "debug/elf", + "elf.R_386_COPY": "debug/elf", + "elf.R_386_GLOB_DAT": "debug/elf", + "elf.R_386_GOT32": "debug/elf", + "elf.R_386_GOTOFF": "debug/elf", + "elf.R_386_GOTPC": "debug/elf", + "elf.R_386_JMP_SLOT": "debug/elf", + "elf.R_386_NONE": "debug/elf", + "elf.R_386_PC32": "debug/elf", + "elf.R_386_PLT32": "debug/elf", + "elf.R_386_RELATIVE": "debug/elf", + "elf.R_386_TLS_DTPMOD32": "debug/elf", + "elf.R_386_TLS_DTPOFF32": "debug/elf", + "elf.R_386_TLS_GD": "debug/elf", + "elf.R_386_TLS_GD_32": "debug/elf", + "elf.R_386_TLS_GD_CALL": "debug/elf", + "elf.R_386_TLS_GD_POP": "debug/elf", + "elf.R_386_TLS_GD_PUSH": "debug/elf", + "elf.R_386_TLS_GOTIE": "debug/elf", + "elf.R_386_TLS_IE": "debug/elf", + "elf.R_386_TLS_IE_32": "debug/elf", + "elf.R_386_TLS_LDM": "debug/elf", + "elf.R_386_TLS_LDM_32": "debug/elf", + "elf.R_386_TLS_LDM_CALL": "debug/elf", + "elf.R_386_TLS_LDM_POP": "debug/elf", + "elf.R_386_TLS_LDM_PUSH": "debug/elf", + "elf.R_386_TLS_LDO_32": "debug/elf", + "elf.R_386_TLS_LE": "debug/elf", + "elf.R_386_TLS_LE_32": "debug/elf", + "elf.R_386_TLS_TPOFF": "debug/elf", + "elf.R_386_TLS_TPOFF32": "debug/elf", + "elf.R_390": "debug/elf", + "elf.R_390_12": "debug/elf", + "elf.R_390_16": "debug/elf", + "elf.R_390_20": "debug/elf", + "elf.R_390_32": "debug/elf", + "elf.R_390_64": "debug/elf", + "elf.R_390_8": "debug/elf", + "elf.R_390_COPY": "debug/elf", + "elf.R_390_GLOB_DAT": "debug/elf", + "elf.R_390_GOT12": "debug/elf", + "elf.R_390_GOT16": "debug/elf", + "elf.R_390_GOT20": "debug/elf", + "elf.R_390_GOT32": "debug/elf", + "elf.R_390_GOT64": "debug/elf", + "elf.R_390_GOTENT": "debug/elf", + "elf.R_390_GOTOFF": "debug/elf", + "elf.R_390_GOTOFF16": "debug/elf", + "elf.R_390_GOTOFF64": "debug/elf", + "elf.R_390_GOTPC": "debug/elf", + "elf.R_390_GOTPCDBL": "debug/elf", + "elf.R_390_GOTPLT12": "debug/elf", + "elf.R_390_GOTPLT16": "debug/elf", + "elf.R_390_GOTPLT20": "debug/elf", + "elf.R_390_GOTPLT32": "debug/elf", + "elf.R_390_GOTPLT64": "debug/elf", + "elf.R_390_GOTPLTENT": "debug/elf", + "elf.R_390_GOTPLTOFF16": "debug/elf", + "elf.R_390_GOTPLTOFF32": "debug/elf", + "elf.R_390_GOTPLTOFF64": "debug/elf", + "elf.R_390_JMP_SLOT": "debug/elf", + "elf.R_390_NONE": "debug/elf", + "elf.R_390_PC16": "debug/elf", + "elf.R_390_PC16DBL": "debug/elf", + "elf.R_390_PC32": "debug/elf", + "elf.R_390_PC32DBL": "debug/elf", + "elf.R_390_PC64": "debug/elf", + "elf.R_390_PLT16DBL": "debug/elf", + "elf.R_390_PLT32": "debug/elf", + "elf.R_390_PLT32DBL": "debug/elf", + "elf.R_390_PLT64": "debug/elf", + "elf.R_390_RELATIVE": "debug/elf", + "elf.R_390_TLS_DTPMOD": "debug/elf", + "elf.R_390_TLS_DTPOFF": "debug/elf", + "elf.R_390_TLS_GD32": "debug/elf", + "elf.R_390_TLS_GD64": "debug/elf", + "elf.R_390_TLS_GDCALL": "debug/elf", + "elf.R_390_TLS_GOTIE12": "debug/elf", + "elf.R_390_TLS_GOTIE20": "debug/elf", + "elf.R_390_TLS_GOTIE32": "debug/elf", + "elf.R_390_TLS_GOTIE64": "debug/elf", + "elf.R_390_TLS_IE32": "debug/elf", + "elf.R_390_TLS_IE64": "debug/elf", + "elf.R_390_TLS_IEENT": "debug/elf", + "elf.R_390_TLS_LDCALL": "debug/elf", + "elf.R_390_TLS_LDM32": "debug/elf", + "elf.R_390_TLS_LDM64": "debug/elf", + "elf.R_390_TLS_LDO32": "debug/elf", + "elf.R_390_TLS_LDO64": "debug/elf", + "elf.R_390_TLS_LE32": "debug/elf", + "elf.R_390_TLS_LE64": "debug/elf", + "elf.R_390_TLS_LOAD": "debug/elf", + "elf.R_390_TLS_TPOFF": "debug/elf", + "elf.R_AARCH64": "debug/elf", + "elf.R_AARCH64_ABS16": "debug/elf", + "elf.R_AARCH64_ABS32": "debug/elf", + "elf.R_AARCH64_ABS64": "debug/elf", + "elf.R_AARCH64_ADD_ABS_LO12_NC": "debug/elf", + "elf.R_AARCH64_ADR_GOT_PAGE": "debug/elf", + "elf.R_AARCH64_ADR_PREL_LO21": "debug/elf", + "elf.R_AARCH64_ADR_PREL_PG_HI21": "debug/elf", + "elf.R_AARCH64_ADR_PREL_PG_HI21_NC": "debug/elf", + "elf.R_AARCH64_CALL26": "debug/elf", + "elf.R_AARCH64_CONDBR19": "debug/elf", + "elf.R_AARCH64_COPY": "debug/elf", + "elf.R_AARCH64_GLOB_DAT": "debug/elf", + "elf.R_AARCH64_GOT_LD_PREL19": "debug/elf", + "elf.R_AARCH64_IRELATIVE": "debug/elf", + "elf.R_AARCH64_JUMP26": "debug/elf", + "elf.R_AARCH64_JUMP_SLOT": "debug/elf", + "elf.R_AARCH64_LD64_GOT_LO12_NC": "debug/elf", + "elf.R_AARCH64_LDST128_ABS_LO12_NC": "debug/elf", + "elf.R_AARCH64_LDST16_ABS_LO12_NC": "debug/elf", + "elf.R_AARCH64_LDST32_ABS_LO12_NC": "debug/elf", + "elf.R_AARCH64_LDST64_ABS_LO12_NC": "debug/elf", + "elf.R_AARCH64_LDST8_ABS_LO12_NC": "debug/elf", + "elf.R_AARCH64_LD_PREL_LO19": "debug/elf", + "elf.R_AARCH64_MOVW_SABS_G0": "debug/elf", + "elf.R_AARCH64_MOVW_SABS_G1": "debug/elf", + "elf.R_AARCH64_MOVW_SABS_G2": "debug/elf", + "elf.R_AARCH64_MOVW_UABS_G0": "debug/elf", + "elf.R_AARCH64_MOVW_UABS_G0_NC": "debug/elf", + "elf.R_AARCH64_MOVW_UABS_G1": "debug/elf", + "elf.R_AARCH64_MOVW_UABS_G1_NC": "debug/elf", + "elf.R_AARCH64_MOVW_UABS_G2": "debug/elf", + "elf.R_AARCH64_MOVW_UABS_G2_NC": "debug/elf", + "elf.R_AARCH64_MOVW_UABS_G3": "debug/elf", + "elf.R_AARCH64_NONE": "debug/elf", + "elf.R_AARCH64_NULL": "debug/elf", + "elf.R_AARCH64_P32_ABS16": "debug/elf", + "elf.R_AARCH64_P32_ABS32": "debug/elf", + "elf.R_AARCH64_P32_ADD_ABS_LO12_NC": "debug/elf", + "elf.R_AARCH64_P32_ADR_GOT_PAGE": "debug/elf", + "elf.R_AARCH64_P32_ADR_PREL_LO21": "debug/elf", + "elf.R_AARCH64_P32_ADR_PREL_PG_HI21": "debug/elf", + "elf.R_AARCH64_P32_CALL26": "debug/elf", + "elf.R_AARCH64_P32_CONDBR19": "debug/elf", + "elf.R_AARCH64_P32_COPY": "debug/elf", + "elf.R_AARCH64_P32_GLOB_DAT": "debug/elf", + "elf.R_AARCH64_P32_GOT_LD_PREL19": "debug/elf", + "elf.R_AARCH64_P32_IRELATIVE": "debug/elf", + "elf.R_AARCH64_P32_JUMP26": "debug/elf", + "elf.R_AARCH64_P32_JUMP_SLOT": "debug/elf", + "elf.R_AARCH64_P32_LD32_GOT_LO12_NC": "debug/elf", + "elf.R_AARCH64_P32_LDST128_ABS_LO12_NC": "debug/elf", + "elf.R_AARCH64_P32_LDST16_ABS_LO12_NC": "debug/elf", + "elf.R_AARCH64_P32_LDST32_ABS_LO12_NC": "debug/elf", + "elf.R_AARCH64_P32_LDST64_ABS_LO12_NC": "debug/elf", + "elf.R_AARCH64_P32_LDST8_ABS_LO12_NC": "debug/elf", + "elf.R_AARCH64_P32_LD_PREL_LO19": "debug/elf", + "elf.R_AARCH64_P32_MOVW_SABS_G0": "debug/elf", + "elf.R_AARCH64_P32_MOVW_UABS_G0": "debug/elf", + "elf.R_AARCH64_P32_MOVW_UABS_G0_NC": "debug/elf", + "elf.R_AARCH64_P32_MOVW_UABS_G1": "debug/elf", + "elf.R_AARCH64_P32_PREL16": "debug/elf", + "elf.R_AARCH64_P32_PREL32": "debug/elf", + "elf.R_AARCH64_P32_RELATIVE": "debug/elf", + "elf.R_AARCH64_P32_TLSDESC": "debug/elf", + "elf.R_AARCH64_P32_TLSDESC_ADD_LO12_NC": "debug/elf", + "elf.R_AARCH64_P32_TLSDESC_ADR_PAGE21": "debug/elf", + "elf.R_AARCH64_P32_TLSDESC_ADR_PREL21": "debug/elf", + "elf.R_AARCH64_P32_TLSDESC_CALL": "debug/elf", + "elf.R_AARCH64_P32_TLSDESC_LD32_LO12_NC": "debug/elf", + "elf.R_AARCH64_P32_TLSDESC_LD_PREL19": "debug/elf", + "elf.R_AARCH64_P32_TLSGD_ADD_LO12_NC": "debug/elf", + "elf.R_AARCH64_P32_TLSGD_ADR_PAGE21": "debug/elf", + "elf.R_AARCH64_P32_TLSIE_ADR_GOTTPREL_PAGE21": "debug/elf", + "elf.R_AARCH64_P32_TLSIE_LD32_GOTTPREL_LO12_NC": "debug/elf", + "elf.R_AARCH64_P32_TLSIE_LD_GOTTPREL_PREL19": "debug/elf", + "elf.R_AARCH64_P32_TLSLE_ADD_TPREL_HI12": "debug/elf", + "elf.R_AARCH64_P32_TLSLE_ADD_TPREL_LO12": "debug/elf", + "elf.R_AARCH64_P32_TLSLE_ADD_TPREL_LO12_NC": "debug/elf", + "elf.R_AARCH64_P32_TLSLE_MOVW_TPREL_G0": "debug/elf", + "elf.R_AARCH64_P32_TLSLE_MOVW_TPREL_G0_NC": "debug/elf", + "elf.R_AARCH64_P32_TLSLE_MOVW_TPREL_G1": "debug/elf", + "elf.R_AARCH64_P32_TLS_DTPMOD": "debug/elf", + "elf.R_AARCH64_P32_TLS_DTPREL": "debug/elf", + "elf.R_AARCH64_P32_TLS_TPREL": "debug/elf", + "elf.R_AARCH64_P32_TSTBR14": "debug/elf", + "elf.R_AARCH64_PREL16": "debug/elf", + "elf.R_AARCH64_PREL32": "debug/elf", + "elf.R_AARCH64_PREL64": "debug/elf", + "elf.R_AARCH64_RELATIVE": "debug/elf", + "elf.R_AARCH64_TLSDESC": "debug/elf", + "elf.R_AARCH64_TLSDESC_ADD": "debug/elf", + "elf.R_AARCH64_TLSDESC_ADD_LO12_NC": "debug/elf", + "elf.R_AARCH64_TLSDESC_ADR_PAGE21": "debug/elf", + "elf.R_AARCH64_TLSDESC_ADR_PREL21": "debug/elf", + "elf.R_AARCH64_TLSDESC_CALL": "debug/elf", + "elf.R_AARCH64_TLSDESC_LD64_LO12_NC": "debug/elf", + "elf.R_AARCH64_TLSDESC_LDR": "debug/elf", + "elf.R_AARCH64_TLSDESC_LD_PREL19": "debug/elf", + "elf.R_AARCH64_TLSDESC_OFF_G0_NC": "debug/elf", + "elf.R_AARCH64_TLSDESC_OFF_G1": "debug/elf", + "elf.R_AARCH64_TLSGD_ADD_LO12_NC": "debug/elf", + "elf.R_AARCH64_TLSGD_ADR_PAGE21": "debug/elf", + "elf.R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21": "debug/elf", + "elf.R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC": "debug/elf", + "elf.R_AARCH64_TLSIE_LD_GOTTPREL_PREL19": "debug/elf", + "elf.R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC": "debug/elf", + "elf.R_AARCH64_TLSIE_MOVW_GOTTPREL_G1": "debug/elf", + "elf.R_AARCH64_TLSLE_ADD_TPREL_HI12": "debug/elf", + "elf.R_AARCH64_TLSLE_ADD_TPREL_LO12": "debug/elf", + "elf.R_AARCH64_TLSLE_ADD_TPREL_LO12_NC": "debug/elf", + "elf.R_AARCH64_TLSLE_MOVW_TPREL_G0": "debug/elf", + "elf.R_AARCH64_TLSLE_MOVW_TPREL_G0_NC": "debug/elf", + "elf.R_AARCH64_TLSLE_MOVW_TPREL_G1": "debug/elf", + "elf.R_AARCH64_TLSLE_MOVW_TPREL_G1_NC": "debug/elf", + "elf.R_AARCH64_TLSLE_MOVW_TPREL_G2": "debug/elf", + "elf.R_AARCH64_TLS_DTPMOD64": "debug/elf", + "elf.R_AARCH64_TLS_DTPREL64": "debug/elf", + "elf.R_AARCH64_TLS_TPREL64": "debug/elf", + "elf.R_AARCH64_TSTBR14": "debug/elf", + "elf.R_ALPHA": "debug/elf", + "elf.R_ALPHA_BRADDR": "debug/elf", + "elf.R_ALPHA_COPY": "debug/elf", + "elf.R_ALPHA_GLOB_DAT": "debug/elf", + "elf.R_ALPHA_GPDISP": "debug/elf", + "elf.R_ALPHA_GPREL32": "debug/elf", + "elf.R_ALPHA_GPRELHIGH": "debug/elf", + "elf.R_ALPHA_GPRELLOW": "debug/elf", + "elf.R_ALPHA_GPVALUE": "debug/elf", + "elf.R_ALPHA_HINT": "debug/elf", + "elf.R_ALPHA_IMMED_BR_HI32": "debug/elf", + "elf.R_ALPHA_IMMED_GP_16": "debug/elf", + "elf.R_ALPHA_IMMED_GP_HI32": "debug/elf", + "elf.R_ALPHA_IMMED_LO32": "debug/elf", + "elf.R_ALPHA_IMMED_SCN_HI32": "debug/elf", + "elf.R_ALPHA_JMP_SLOT": "debug/elf", + "elf.R_ALPHA_LITERAL": "debug/elf", + "elf.R_ALPHA_LITUSE": "debug/elf", + "elf.R_ALPHA_NONE": "debug/elf", + "elf.R_ALPHA_OP_PRSHIFT": "debug/elf", + "elf.R_ALPHA_OP_PSUB": "debug/elf", + "elf.R_ALPHA_OP_PUSH": "debug/elf", + "elf.R_ALPHA_OP_STORE": "debug/elf", + "elf.R_ALPHA_REFLONG": "debug/elf", + "elf.R_ALPHA_REFQUAD": "debug/elf", + "elf.R_ALPHA_RELATIVE": "debug/elf", + "elf.R_ALPHA_SREL16": "debug/elf", + "elf.R_ALPHA_SREL32": "debug/elf", + "elf.R_ALPHA_SREL64": "debug/elf", + "elf.R_ARM": "debug/elf", + "elf.R_ARM_ABS12": "debug/elf", + "elf.R_ARM_ABS16": "debug/elf", + "elf.R_ARM_ABS32": "debug/elf", + "elf.R_ARM_ABS8": "debug/elf", + "elf.R_ARM_AMP_VCALL9": "debug/elf", + "elf.R_ARM_COPY": "debug/elf", + "elf.R_ARM_GLOB_DAT": "debug/elf", + "elf.R_ARM_GNU_VTENTRY": "debug/elf", + "elf.R_ARM_GNU_VTINHERIT": "debug/elf", + "elf.R_ARM_GOT32": "debug/elf", + "elf.R_ARM_GOTOFF": "debug/elf", + "elf.R_ARM_GOTPC": "debug/elf", + "elf.R_ARM_JUMP_SLOT": "debug/elf", + "elf.R_ARM_NONE": "debug/elf", + "elf.R_ARM_PC13": "debug/elf", + "elf.R_ARM_PC24": "debug/elf", + "elf.R_ARM_PLT32": "debug/elf", + "elf.R_ARM_RABS32": "debug/elf", + "elf.R_ARM_RBASE": "debug/elf", + "elf.R_ARM_REL32": "debug/elf", + "elf.R_ARM_RELATIVE": "debug/elf", + "elf.R_ARM_RPC24": "debug/elf", + "elf.R_ARM_RREL32": "debug/elf", + "elf.R_ARM_RSBREL32": "debug/elf", + "elf.R_ARM_SBREL32": "debug/elf", + "elf.R_ARM_SWI24": "debug/elf", + "elf.R_ARM_THM_ABS5": "debug/elf", + "elf.R_ARM_THM_PC22": "debug/elf", + "elf.R_ARM_THM_PC8": "debug/elf", + "elf.R_ARM_THM_RPC22": "debug/elf", + "elf.R_ARM_THM_SWI8": "debug/elf", + "elf.R_ARM_THM_XPC22": "debug/elf", + "elf.R_ARM_XPC25": "debug/elf", + "elf.R_INFO": "debug/elf", + "elf.R_INFO32": "debug/elf", + "elf.R_MIPS": "debug/elf", + "elf.R_MIPS_16": "debug/elf", + "elf.R_MIPS_26": "debug/elf", + "elf.R_MIPS_32": "debug/elf", + "elf.R_MIPS_64": "debug/elf", + "elf.R_MIPS_ADD_IMMEDIATE": "debug/elf", + "elf.R_MIPS_CALL16": "debug/elf", + "elf.R_MIPS_CALL_HI16": "debug/elf", + "elf.R_MIPS_CALL_LO16": "debug/elf", + "elf.R_MIPS_DELETE": "debug/elf", + "elf.R_MIPS_GOT16": "debug/elf", + "elf.R_MIPS_GOT_DISP": "debug/elf", + "elf.R_MIPS_GOT_HI16": "debug/elf", + "elf.R_MIPS_GOT_LO16": "debug/elf", + "elf.R_MIPS_GOT_OFST": "debug/elf", + "elf.R_MIPS_GOT_PAGE": "debug/elf", + "elf.R_MIPS_GPREL16": "debug/elf", + "elf.R_MIPS_GPREL32": "debug/elf", + "elf.R_MIPS_HI16": "debug/elf", + "elf.R_MIPS_HIGHER": "debug/elf", + "elf.R_MIPS_HIGHEST": "debug/elf", + "elf.R_MIPS_INSERT_A": "debug/elf", + "elf.R_MIPS_INSERT_B": "debug/elf", + "elf.R_MIPS_JALR": "debug/elf", + "elf.R_MIPS_LITERAL": "debug/elf", + "elf.R_MIPS_LO16": "debug/elf", + "elf.R_MIPS_NONE": "debug/elf", + "elf.R_MIPS_PC16": "debug/elf", + "elf.R_MIPS_PJUMP": "debug/elf", + "elf.R_MIPS_REL16": "debug/elf", + "elf.R_MIPS_REL32": "debug/elf", + "elf.R_MIPS_RELGOT": "debug/elf", + "elf.R_MIPS_SCN_DISP": "debug/elf", + "elf.R_MIPS_SHIFT5": "debug/elf", + "elf.R_MIPS_SHIFT6": "debug/elf", + "elf.R_MIPS_SUB": "debug/elf", + "elf.R_MIPS_TLS_DTPMOD32": "debug/elf", + "elf.R_MIPS_TLS_DTPMOD64": "debug/elf", + "elf.R_MIPS_TLS_DTPREL32": "debug/elf", + "elf.R_MIPS_TLS_DTPREL64": "debug/elf", + "elf.R_MIPS_TLS_DTPREL_HI16": "debug/elf", + "elf.R_MIPS_TLS_DTPREL_LO16": "debug/elf", + "elf.R_MIPS_TLS_GD": "debug/elf", + "elf.R_MIPS_TLS_GOTTPREL": "debug/elf", + "elf.R_MIPS_TLS_LDM": "debug/elf", + "elf.R_MIPS_TLS_TPREL32": "debug/elf", + "elf.R_MIPS_TLS_TPREL64": "debug/elf", + "elf.R_MIPS_TLS_TPREL_HI16": "debug/elf", + "elf.R_MIPS_TLS_TPREL_LO16": "debug/elf", + "elf.R_PPC": "debug/elf", + "elf.R_PPC64": "debug/elf", + "elf.R_PPC64_ADDR14": "debug/elf", + "elf.R_PPC64_ADDR14_BRNTAKEN": "debug/elf", + "elf.R_PPC64_ADDR14_BRTAKEN": "debug/elf", + "elf.R_PPC64_ADDR16": "debug/elf", + "elf.R_PPC64_ADDR16_DS": "debug/elf", + "elf.R_PPC64_ADDR16_HA": "debug/elf", + "elf.R_PPC64_ADDR16_HI": "debug/elf", + "elf.R_PPC64_ADDR16_HIGHER": "debug/elf", + "elf.R_PPC64_ADDR16_HIGHERA": "debug/elf", + "elf.R_PPC64_ADDR16_HIGHEST": "debug/elf", + "elf.R_PPC64_ADDR16_HIGHESTA": "debug/elf", + "elf.R_PPC64_ADDR16_LO": "debug/elf", + "elf.R_PPC64_ADDR16_LO_DS": "debug/elf", + "elf.R_PPC64_ADDR24": "debug/elf", + "elf.R_PPC64_ADDR32": "debug/elf", + "elf.R_PPC64_ADDR64": "debug/elf", + "elf.R_PPC64_DTPMOD64": "debug/elf", + "elf.R_PPC64_DTPREL16": "debug/elf", + "elf.R_PPC64_DTPREL16_DS": "debug/elf", + "elf.R_PPC64_DTPREL16_HA": "debug/elf", + "elf.R_PPC64_DTPREL16_HI": "debug/elf", + "elf.R_PPC64_DTPREL16_HIGHER": "debug/elf", + "elf.R_PPC64_DTPREL16_HIGHERA": "debug/elf", + "elf.R_PPC64_DTPREL16_HIGHEST": "debug/elf", + "elf.R_PPC64_DTPREL16_HIGHESTA": "debug/elf", + "elf.R_PPC64_DTPREL16_LO": "debug/elf", + "elf.R_PPC64_DTPREL16_LO_DS": "debug/elf", + "elf.R_PPC64_DTPREL64": "debug/elf", + "elf.R_PPC64_GOT16": "debug/elf", + "elf.R_PPC64_GOT16_DS": "debug/elf", + "elf.R_PPC64_GOT16_HA": "debug/elf", + "elf.R_PPC64_GOT16_HI": "debug/elf", + "elf.R_PPC64_GOT16_LO": "debug/elf", + "elf.R_PPC64_GOT16_LO_DS": "debug/elf", + "elf.R_PPC64_GOT_DTPREL16_DS": "debug/elf", + "elf.R_PPC64_GOT_DTPREL16_HA": "debug/elf", + "elf.R_PPC64_GOT_DTPREL16_HI": "debug/elf", + "elf.R_PPC64_GOT_DTPREL16_LO_DS": "debug/elf", + "elf.R_PPC64_GOT_TLSGD16": "debug/elf", + "elf.R_PPC64_GOT_TLSGD16_HA": "debug/elf", + "elf.R_PPC64_GOT_TLSGD16_HI": "debug/elf", + "elf.R_PPC64_GOT_TLSGD16_LO": "debug/elf", + "elf.R_PPC64_GOT_TLSLD16": "debug/elf", + "elf.R_PPC64_GOT_TLSLD16_HA": "debug/elf", + "elf.R_PPC64_GOT_TLSLD16_HI": "debug/elf", + "elf.R_PPC64_GOT_TLSLD16_LO": "debug/elf", + "elf.R_PPC64_GOT_TPREL16_DS": "debug/elf", + "elf.R_PPC64_GOT_TPREL16_HA": "debug/elf", + "elf.R_PPC64_GOT_TPREL16_HI": "debug/elf", + "elf.R_PPC64_GOT_TPREL16_LO_DS": "debug/elf", + "elf.R_PPC64_JMP_SLOT": "debug/elf", + "elf.R_PPC64_NONE": "debug/elf", + "elf.R_PPC64_REL14": "debug/elf", + "elf.R_PPC64_REL14_BRNTAKEN": "debug/elf", + "elf.R_PPC64_REL14_BRTAKEN": "debug/elf", + "elf.R_PPC64_REL16": "debug/elf", + "elf.R_PPC64_REL16_HA": "debug/elf", + "elf.R_PPC64_REL16_HI": "debug/elf", + "elf.R_PPC64_REL16_LO": "debug/elf", + "elf.R_PPC64_REL24": "debug/elf", + "elf.R_PPC64_REL32": "debug/elf", + "elf.R_PPC64_REL64": "debug/elf", + "elf.R_PPC64_TLS": "debug/elf", + "elf.R_PPC64_TLSGD": "debug/elf", + "elf.R_PPC64_TLSLD": "debug/elf", + "elf.R_PPC64_TOC": "debug/elf", + "elf.R_PPC64_TOC16": "debug/elf", + "elf.R_PPC64_TOC16_DS": "debug/elf", + "elf.R_PPC64_TOC16_HA": "debug/elf", + "elf.R_PPC64_TOC16_HI": "debug/elf", + "elf.R_PPC64_TOC16_LO": "debug/elf", + "elf.R_PPC64_TOC16_LO_DS": "debug/elf", + "elf.R_PPC64_TPREL16": "debug/elf", + "elf.R_PPC64_TPREL16_DS": "debug/elf", + "elf.R_PPC64_TPREL16_HA": "debug/elf", + "elf.R_PPC64_TPREL16_HI": "debug/elf", + "elf.R_PPC64_TPREL16_HIGHER": "debug/elf", + "elf.R_PPC64_TPREL16_HIGHERA": "debug/elf", + "elf.R_PPC64_TPREL16_HIGHEST": "debug/elf", + "elf.R_PPC64_TPREL16_HIGHESTA": "debug/elf", + "elf.R_PPC64_TPREL16_LO": "debug/elf", + "elf.R_PPC64_TPREL16_LO_DS": "debug/elf", + "elf.R_PPC64_TPREL64": "debug/elf", + "elf.R_PPC_ADDR14": "debug/elf", + "elf.R_PPC_ADDR14_BRNTAKEN": "debug/elf", + "elf.R_PPC_ADDR14_BRTAKEN": "debug/elf", + "elf.R_PPC_ADDR16": "debug/elf", + "elf.R_PPC_ADDR16_HA": "debug/elf", + "elf.R_PPC_ADDR16_HI": "debug/elf", + "elf.R_PPC_ADDR16_LO": "debug/elf", + "elf.R_PPC_ADDR24": "debug/elf", + "elf.R_PPC_ADDR32": "debug/elf", + "elf.R_PPC_COPY": "debug/elf", + "elf.R_PPC_DTPMOD32": "debug/elf", + "elf.R_PPC_DTPREL16": "debug/elf", + "elf.R_PPC_DTPREL16_HA": "debug/elf", + "elf.R_PPC_DTPREL16_HI": "debug/elf", + "elf.R_PPC_DTPREL16_LO": "debug/elf", + "elf.R_PPC_DTPREL32": "debug/elf", + "elf.R_PPC_EMB_BIT_FLD": "debug/elf", + "elf.R_PPC_EMB_MRKREF": "debug/elf", + "elf.R_PPC_EMB_NADDR16": "debug/elf", + "elf.R_PPC_EMB_NADDR16_HA": "debug/elf", + "elf.R_PPC_EMB_NADDR16_HI": "debug/elf", + "elf.R_PPC_EMB_NADDR16_LO": "debug/elf", + "elf.R_PPC_EMB_NADDR32": "debug/elf", + "elf.R_PPC_EMB_RELSDA": "debug/elf", + "elf.R_PPC_EMB_RELSEC16": "debug/elf", + "elf.R_PPC_EMB_RELST_HA": "debug/elf", + "elf.R_PPC_EMB_RELST_HI": "debug/elf", + "elf.R_PPC_EMB_RELST_LO": "debug/elf", + "elf.R_PPC_EMB_SDA21": "debug/elf", + "elf.R_PPC_EMB_SDA2I16": "debug/elf", + "elf.R_PPC_EMB_SDA2REL": "debug/elf", + "elf.R_PPC_EMB_SDAI16": "debug/elf", + "elf.R_PPC_GLOB_DAT": "debug/elf", + "elf.R_PPC_GOT16": "debug/elf", + "elf.R_PPC_GOT16_HA": "debug/elf", + "elf.R_PPC_GOT16_HI": "debug/elf", + "elf.R_PPC_GOT16_LO": "debug/elf", + "elf.R_PPC_GOT_TLSGD16": "debug/elf", + "elf.R_PPC_GOT_TLSGD16_HA": "debug/elf", + "elf.R_PPC_GOT_TLSGD16_HI": "debug/elf", + "elf.R_PPC_GOT_TLSGD16_LO": "debug/elf", + "elf.R_PPC_GOT_TLSLD16": "debug/elf", + "elf.R_PPC_GOT_TLSLD16_HA": "debug/elf", + "elf.R_PPC_GOT_TLSLD16_HI": "debug/elf", + "elf.R_PPC_GOT_TLSLD16_LO": "debug/elf", + "elf.R_PPC_GOT_TPREL16": "debug/elf", + "elf.R_PPC_GOT_TPREL16_HA": "debug/elf", + "elf.R_PPC_GOT_TPREL16_HI": "debug/elf", + "elf.R_PPC_GOT_TPREL16_LO": "debug/elf", + "elf.R_PPC_JMP_SLOT": "debug/elf", + "elf.R_PPC_LOCAL24PC": "debug/elf", + "elf.R_PPC_NONE": "debug/elf", + "elf.R_PPC_PLT16_HA": "debug/elf", + "elf.R_PPC_PLT16_HI": "debug/elf", + "elf.R_PPC_PLT16_LO": "debug/elf", + "elf.R_PPC_PLT32": "debug/elf", + "elf.R_PPC_PLTREL24": "debug/elf", + "elf.R_PPC_PLTREL32": "debug/elf", + "elf.R_PPC_REL14": "debug/elf", + "elf.R_PPC_REL14_BRNTAKEN": "debug/elf", + "elf.R_PPC_REL14_BRTAKEN": "debug/elf", + "elf.R_PPC_REL24": "debug/elf", + "elf.R_PPC_REL32": "debug/elf", + "elf.R_PPC_RELATIVE": "debug/elf", + "elf.R_PPC_SDAREL16": "debug/elf", + "elf.R_PPC_SECTOFF": "debug/elf", + "elf.R_PPC_SECTOFF_HA": "debug/elf", + "elf.R_PPC_SECTOFF_HI": "debug/elf", + "elf.R_PPC_SECTOFF_LO": "debug/elf", + "elf.R_PPC_TLS": "debug/elf", + "elf.R_PPC_TPREL16": "debug/elf", + "elf.R_PPC_TPREL16_HA": "debug/elf", + "elf.R_PPC_TPREL16_HI": "debug/elf", + "elf.R_PPC_TPREL16_LO": "debug/elf", + "elf.R_PPC_TPREL32": "debug/elf", + "elf.R_PPC_UADDR16": "debug/elf", + "elf.R_PPC_UADDR32": "debug/elf", + "elf.R_SPARC": "debug/elf", + "elf.R_SPARC_10": "debug/elf", + "elf.R_SPARC_11": "debug/elf", + "elf.R_SPARC_13": "debug/elf", + "elf.R_SPARC_16": "debug/elf", + "elf.R_SPARC_22": "debug/elf", + "elf.R_SPARC_32": "debug/elf", + "elf.R_SPARC_5": "debug/elf", + "elf.R_SPARC_6": "debug/elf", + "elf.R_SPARC_64": "debug/elf", + "elf.R_SPARC_7": "debug/elf", + "elf.R_SPARC_8": "debug/elf", + "elf.R_SPARC_COPY": "debug/elf", + "elf.R_SPARC_DISP16": "debug/elf", + "elf.R_SPARC_DISP32": "debug/elf", + "elf.R_SPARC_DISP64": "debug/elf", + "elf.R_SPARC_DISP8": "debug/elf", + "elf.R_SPARC_GLOB_DAT": "debug/elf", + "elf.R_SPARC_GLOB_JMP": "debug/elf", + "elf.R_SPARC_GOT10": "debug/elf", + "elf.R_SPARC_GOT13": "debug/elf", + "elf.R_SPARC_GOT22": "debug/elf", + "elf.R_SPARC_H44": "debug/elf", + "elf.R_SPARC_HH22": "debug/elf", + "elf.R_SPARC_HI22": "debug/elf", + "elf.R_SPARC_HIPLT22": "debug/elf", + "elf.R_SPARC_HIX22": "debug/elf", + "elf.R_SPARC_HM10": "debug/elf", + "elf.R_SPARC_JMP_SLOT": "debug/elf", + "elf.R_SPARC_L44": "debug/elf", + "elf.R_SPARC_LM22": "debug/elf", + "elf.R_SPARC_LO10": "debug/elf", + "elf.R_SPARC_LOPLT10": "debug/elf", + "elf.R_SPARC_LOX10": "debug/elf", + "elf.R_SPARC_M44": "debug/elf", + "elf.R_SPARC_NONE": "debug/elf", + "elf.R_SPARC_OLO10": "debug/elf", + "elf.R_SPARC_PC10": "debug/elf", + "elf.R_SPARC_PC22": "debug/elf", + "elf.R_SPARC_PCPLT10": "debug/elf", + "elf.R_SPARC_PCPLT22": "debug/elf", + "elf.R_SPARC_PCPLT32": "debug/elf", + "elf.R_SPARC_PC_HH22": "debug/elf", + "elf.R_SPARC_PC_HM10": "debug/elf", + "elf.R_SPARC_PC_LM22": "debug/elf", + "elf.R_SPARC_PLT32": "debug/elf", + "elf.R_SPARC_PLT64": "debug/elf", + "elf.R_SPARC_REGISTER": "debug/elf", + "elf.R_SPARC_RELATIVE": "debug/elf", + "elf.R_SPARC_UA16": "debug/elf", + "elf.R_SPARC_UA32": "debug/elf", + "elf.R_SPARC_UA64": "debug/elf", + "elf.R_SPARC_WDISP16": "debug/elf", + "elf.R_SPARC_WDISP19": "debug/elf", + "elf.R_SPARC_WDISP22": "debug/elf", + "elf.R_SPARC_WDISP30": "debug/elf", + "elf.R_SPARC_WPLT30": "debug/elf", + "elf.R_SYM32": "debug/elf", + "elf.R_SYM64": "debug/elf", + "elf.R_TYPE32": "debug/elf", + "elf.R_TYPE64": "debug/elf", + "elf.R_X86_64": "debug/elf", + "elf.R_X86_64_16": "debug/elf", + "elf.R_X86_64_32": "debug/elf", + "elf.R_X86_64_32S": "debug/elf", + "elf.R_X86_64_64": "debug/elf", + "elf.R_X86_64_8": "debug/elf", + "elf.R_X86_64_COPY": "debug/elf", + "elf.R_X86_64_DTPMOD64": "debug/elf", + "elf.R_X86_64_DTPOFF32": "debug/elf", + "elf.R_X86_64_DTPOFF64": "debug/elf", + "elf.R_X86_64_GLOB_DAT": "debug/elf", + "elf.R_X86_64_GOT32": "debug/elf", + "elf.R_X86_64_GOTPCREL": "debug/elf", + "elf.R_X86_64_GOTTPOFF": "debug/elf", + "elf.R_X86_64_JMP_SLOT": "debug/elf", + "elf.R_X86_64_NONE": "debug/elf", + "elf.R_X86_64_PC16": "debug/elf", + "elf.R_X86_64_PC32": "debug/elf", + "elf.R_X86_64_PC8": "debug/elf", + "elf.R_X86_64_PLT32": "debug/elf", + "elf.R_X86_64_RELATIVE": "debug/elf", + "elf.R_X86_64_TLSGD": "debug/elf", + "elf.R_X86_64_TLSLD": "debug/elf", + "elf.R_X86_64_TPOFF32": "debug/elf", + "elf.R_X86_64_TPOFF64": "debug/elf", + "elf.Rel32": "debug/elf", + "elf.Rel64": "debug/elf", + "elf.Rela32": "debug/elf", + "elf.Rela64": "debug/elf", + "elf.SHF_ALLOC": "debug/elf", + "elf.SHF_COMPRESSED": "debug/elf", + "elf.SHF_EXECINSTR": "debug/elf", + "elf.SHF_GROUP": "debug/elf", + "elf.SHF_INFO_LINK": "debug/elf", + "elf.SHF_LINK_ORDER": "debug/elf", + "elf.SHF_MASKOS": "debug/elf", + "elf.SHF_MASKPROC": "debug/elf", + "elf.SHF_MERGE": "debug/elf", + "elf.SHF_OS_NONCONFORMING": "debug/elf", + "elf.SHF_STRINGS": "debug/elf", + "elf.SHF_TLS": "debug/elf", + "elf.SHF_WRITE": "debug/elf", + "elf.SHN_ABS": "debug/elf", + "elf.SHN_COMMON": "debug/elf", + "elf.SHN_HIOS": "debug/elf", + "elf.SHN_HIPROC": "debug/elf", + "elf.SHN_HIRESERVE": "debug/elf", + "elf.SHN_LOOS": "debug/elf", + "elf.SHN_LOPROC": "debug/elf", + "elf.SHN_LORESERVE": "debug/elf", + "elf.SHN_UNDEF": "debug/elf", + "elf.SHN_XINDEX": "debug/elf", + "elf.SHT_DYNAMIC": "debug/elf", + "elf.SHT_DYNSYM": "debug/elf", + "elf.SHT_FINI_ARRAY": "debug/elf", + "elf.SHT_GNU_ATTRIBUTES": "debug/elf", + "elf.SHT_GNU_HASH": "debug/elf", + "elf.SHT_GNU_LIBLIST": "debug/elf", + "elf.SHT_GNU_VERDEF": "debug/elf", + "elf.SHT_GNU_VERNEED": "debug/elf", + "elf.SHT_GNU_VERSYM": "debug/elf", + "elf.SHT_GROUP": "debug/elf", + "elf.SHT_HASH": "debug/elf", + "elf.SHT_HIOS": "debug/elf", + "elf.SHT_HIPROC": "debug/elf", + "elf.SHT_HIUSER": "debug/elf", + "elf.SHT_INIT_ARRAY": "debug/elf", + "elf.SHT_LOOS": "debug/elf", + "elf.SHT_LOPROC": "debug/elf", + "elf.SHT_LOUSER": "debug/elf", + "elf.SHT_NOBITS": "debug/elf", + "elf.SHT_NOTE": "debug/elf", + "elf.SHT_NULL": "debug/elf", + "elf.SHT_PREINIT_ARRAY": "debug/elf", + "elf.SHT_PROGBITS": "debug/elf", + "elf.SHT_REL": "debug/elf", + "elf.SHT_RELA": "debug/elf", + "elf.SHT_SHLIB": "debug/elf", + "elf.SHT_STRTAB": "debug/elf", + "elf.SHT_SYMTAB": "debug/elf", + "elf.SHT_SYMTAB_SHNDX": "debug/elf", + "elf.STB_GLOBAL": "debug/elf", + "elf.STB_HIOS": "debug/elf", + "elf.STB_HIPROC": "debug/elf", + "elf.STB_LOCAL": "debug/elf", + "elf.STB_LOOS": "debug/elf", + "elf.STB_LOPROC": "debug/elf", + "elf.STB_WEAK": "debug/elf", + "elf.STT_COMMON": "debug/elf", + "elf.STT_FILE": "debug/elf", + "elf.STT_FUNC": "debug/elf", + "elf.STT_HIOS": "debug/elf", + "elf.STT_HIPROC": "debug/elf", + "elf.STT_LOOS": "debug/elf", + "elf.STT_LOPROC": "debug/elf", + "elf.STT_NOTYPE": "debug/elf", + "elf.STT_OBJECT": "debug/elf", + "elf.STT_SECTION": "debug/elf", + "elf.STT_TLS": "debug/elf", + "elf.STV_DEFAULT": "debug/elf", + "elf.STV_HIDDEN": "debug/elf", + "elf.STV_INTERNAL": "debug/elf", + "elf.STV_PROTECTED": "debug/elf", + "elf.ST_BIND": "debug/elf", + "elf.ST_INFO": "debug/elf", + "elf.ST_TYPE": "debug/elf", + "elf.ST_VISIBILITY": "debug/elf", + "elf.Section": "debug/elf", + "elf.Section32": "debug/elf", + "elf.Section64": "debug/elf", + "elf.SectionFlag": "debug/elf", + "elf.SectionHeader": "debug/elf", + "elf.SectionIndex": "debug/elf", + "elf.SectionType": "debug/elf", + "elf.Sym32": "debug/elf", + "elf.Sym32Size": "debug/elf", + "elf.Sym64": "debug/elf", + "elf.Sym64Size": "debug/elf", + "elf.SymBind": "debug/elf", + "elf.SymType": "debug/elf", + "elf.SymVis": "debug/elf", + "elf.Symbol": "debug/elf", + "elf.Type": "debug/elf", + "elf.Version": "debug/elf", + "elliptic.Curve": "crypto/elliptic", + "elliptic.CurveParams": "crypto/elliptic", + "elliptic.GenerateKey": "crypto/elliptic", + "elliptic.Marshal": "crypto/elliptic", + "elliptic.P224": "crypto/elliptic", + "elliptic.P256": "crypto/elliptic", + "elliptic.P384": "crypto/elliptic", + "elliptic.P521": "crypto/elliptic", + "elliptic.Unmarshal": "crypto/elliptic", + "encoding.BinaryMarshaler": "encoding", + "encoding.BinaryUnmarshaler": "encoding", + "encoding.TextMarshaler": "encoding", + "encoding.TextUnmarshaler": "encoding", + "errors.New": "errors", + "exec.Cmd": "os/exec", + "exec.Command": "os/exec", + "exec.CommandContext": "os/exec", + "exec.ErrNotFound": "os/exec", + "exec.Error": "os/exec", + "exec.ExitError": "os/exec", + "exec.LookPath": "os/exec", + "expvar.Do": "expvar", + "expvar.Float": "expvar", + "expvar.Func": "expvar", + "expvar.Get": "expvar", + "expvar.Int": "expvar", + "expvar.KeyValue": "expvar", + "expvar.Map": "expvar", + "expvar.NewFloat": "expvar", + "expvar.NewInt": "expvar", + "expvar.NewMap": "expvar", + "expvar.NewString": "expvar", + "expvar.Publish": "expvar", + "expvar.String": "expvar", + "expvar.Var": "expvar", + "fcgi.ErrConnClosed": "net/http/fcgi", + "fcgi.ErrRequestAborted": "net/http/fcgi", + "fcgi.Serve": "net/http/fcgi", + "filepath.Abs": "path/filepath", + "filepath.Base": "path/filepath", + "filepath.Clean": "path/filepath", + "filepath.Dir": "path/filepath", + "filepath.ErrBadPattern": "path/filepath", + "filepath.EvalSymlinks": "path/filepath", + "filepath.Ext": "path/filepath", + "filepath.FromSlash": "path/filepath", + "filepath.Glob": "path/filepath", + "filepath.HasPrefix": "path/filepath", + "filepath.IsAbs": "path/filepath", + "filepath.Join": "path/filepath", + "filepath.ListSeparator": "path/filepath", + "filepath.Match": "path/filepath", + "filepath.Rel": "path/filepath", + "filepath.Separator": "path/filepath", + "filepath.SkipDir": "path/filepath", + "filepath.Split": "path/filepath", + "filepath.SplitList": "path/filepath", + "filepath.ToSlash": "path/filepath", + "filepath.VolumeName": "path/filepath", + "filepath.Walk": "path/filepath", + "filepath.WalkFunc": "path/filepath", + "flag.Arg": "flag", + "flag.Args": "flag", + "flag.Bool": "flag", + "flag.BoolVar": "flag", + "flag.CommandLine": "flag", + "flag.ContinueOnError": "flag", + "flag.Duration": "flag", + "flag.DurationVar": "flag", + "flag.ErrHelp": "flag", + "flag.ErrorHandling": "flag", + "flag.ExitOnError": "flag", + "flag.Flag": "flag", + "flag.FlagSet": "flag", + "flag.Float64": "flag", + "flag.Float64Var": "flag", + "flag.Getter": "flag", + "flag.Int": "flag", + "flag.Int64": "flag", + "flag.Int64Var": "flag", + "flag.IntVar": "flag", + "flag.Lookup": "flag", + "flag.NArg": "flag", + "flag.NFlag": "flag", + "flag.NewFlagSet": "flag", + "flag.PanicOnError": "flag", + "flag.Parse": "flag", + "flag.Parsed": "flag", + "flag.PrintDefaults": "flag", + "flag.Set": "flag", + "flag.String": "flag", + "flag.StringVar": "flag", + "flag.Uint": "flag", + "flag.Uint64": "flag", + "flag.Uint64Var": "flag", + "flag.UintVar": "flag", + "flag.UnquoteUsage": "flag", + "flag.Usage": "flag", + "flag.Value": "flag", + "flag.Var": "flag", + "flag.Visit": "flag", + "flag.VisitAll": "flag", + "flate.BestCompression": "compress/flate", + "flate.BestSpeed": "compress/flate", + "flate.CorruptInputError": "compress/flate", + "flate.DefaultCompression": "compress/flate", + "flate.HuffmanOnly": "compress/flate", + "flate.InternalError": "compress/flate", + "flate.NewReader": "compress/flate", + "flate.NewReaderDict": "compress/flate", + "flate.NewWriter": "compress/flate", + "flate.NewWriterDict": "compress/flate", + "flate.NoCompression": "compress/flate", + "flate.ReadError": "compress/flate", + "flate.Reader": "compress/flate", + "flate.Resetter": "compress/flate", + "flate.WriteError": "compress/flate", + "flate.Writer": "compress/flate", + "fmt.Errorf": "fmt", + "fmt.Formatter": "fmt", + "fmt.Fprint": "fmt", + "fmt.Fprintf": "fmt", + "fmt.Fprintln": "fmt", + "fmt.Fscan": "fmt", + "fmt.Fscanf": "fmt", + "fmt.Fscanln": "fmt", + "fmt.GoStringer": "fmt", + "fmt.Print": "fmt", + "fmt.Printf": "fmt", + "fmt.Println": "fmt", + "fmt.Scan": "fmt", + "fmt.ScanState": "fmt", + "fmt.Scanf": "fmt", + "fmt.Scanln": "fmt", + "fmt.Scanner": "fmt", + "fmt.Sprint": "fmt", + "fmt.Sprintf": "fmt", + "fmt.Sprintln": "fmt", + "fmt.Sscan": "fmt", + "fmt.Sscanf": "fmt", + "fmt.Sscanln": "fmt", + "fmt.State": "fmt", + "fmt.Stringer": "fmt", + "fnv.New32": "hash/fnv", + "fnv.New32a": "hash/fnv", + "fnv.New64": "hash/fnv", + "fnv.New64a": "hash/fnv", + "format.Node": "go/format", + "format.Source": "go/format", + "gif.Decode": "image/gif", + "gif.DecodeAll": "image/gif", + "gif.DecodeConfig": "image/gif", + "gif.DisposalBackground": "image/gif", + "gif.DisposalNone": "image/gif", + "gif.DisposalPrevious": "image/gif", + "gif.Encode": "image/gif", + "gif.EncodeAll": "image/gif", + "gif.GIF": "image/gif", + "gif.Options": "image/gif", + "gob.CommonType": "encoding/gob", + "gob.Decoder": "encoding/gob", + "gob.Encoder": "encoding/gob", + "gob.GobDecoder": "encoding/gob", + "gob.GobEncoder": "encoding/gob", + "gob.NewDecoder": "encoding/gob", + "gob.NewEncoder": "encoding/gob", + "gob.Register": "encoding/gob", + "gob.RegisterName": "encoding/gob", + "gosym.DecodingError": "debug/gosym", + "gosym.Func": "debug/gosym", + "gosym.LineTable": "debug/gosym", + "gosym.NewLineTable": "debug/gosym", + "gosym.NewTable": "debug/gosym", + "gosym.Obj": "debug/gosym", + "gosym.Sym": "debug/gosym", + "gosym.Table": "debug/gosym", + "gosym.UnknownFileError": "debug/gosym", + "gosym.UnknownLineError": "debug/gosym", + "gzip.BestCompression": "compress/gzip", + "gzip.BestSpeed": "compress/gzip", + "gzip.DefaultCompression": "compress/gzip", + "gzip.ErrChecksum": "compress/gzip", + "gzip.ErrHeader": "compress/gzip", + "gzip.Header": "compress/gzip", + "gzip.NewReader": "compress/gzip", + "gzip.NewWriter": "compress/gzip", + "gzip.NewWriterLevel": "compress/gzip", + "gzip.NoCompression": "compress/gzip", + "gzip.Reader": "compress/gzip", + "gzip.Writer": "compress/gzip", + "hash.Hash": "hash", + "hash.Hash32": "hash", + "hash.Hash64": "hash", + "heap.Fix": "container/heap", + "heap.Init": "container/heap", + "heap.Interface": "container/heap", + "heap.Pop": "container/heap", + "heap.Push": "container/heap", + "heap.Remove": "container/heap", + "hex.Decode": "encoding/hex", + "hex.DecodeString": "encoding/hex", + "hex.DecodedLen": "encoding/hex", + "hex.Dump": "encoding/hex", + "hex.Dumper": "encoding/hex", + "hex.Encode": "encoding/hex", + "hex.EncodeToString": "encoding/hex", + "hex.EncodedLen": "encoding/hex", + "hex.ErrLength": "encoding/hex", + "hex.InvalidByteError": "encoding/hex", + "hmac.Equal": "crypto/hmac", + "hmac.New": "crypto/hmac", + "html.EscapeString": "html", + "html.UnescapeString": "html", + "http.CanonicalHeaderKey": "net/http", + "http.Client": "net/http", + "http.CloseNotifier": "net/http", + "http.ConnState": "net/http", + "http.Cookie": "net/http", + "http.CookieJar": "net/http", + "http.DefaultClient": "net/http", + "http.DefaultMaxHeaderBytes": "net/http", + "http.DefaultMaxIdleConnsPerHost": "net/http", + "http.DefaultServeMux": "net/http", + "http.DefaultTransport": "net/http", + "http.DetectContentType": "net/http", + "http.Dir": "net/http", + "http.ErrBodyNotAllowed": "net/http", + "http.ErrBodyReadAfterClose": "net/http", + "http.ErrContentLength": "net/http", + "http.ErrHandlerTimeout": "net/http", + "http.ErrHeaderTooLong": "net/http", + "http.ErrHijacked": "net/http", + "http.ErrLineTooLong": "net/http", + "http.ErrMissingBoundary": "net/http", + "http.ErrMissingContentLength": "net/http", + "http.ErrMissingFile": "net/http", + "http.ErrNoCookie": "net/http", + "http.ErrNoLocation": "net/http", + "http.ErrNotMultipart": "net/http", + "http.ErrNotSupported": "net/http", + "http.ErrShortBody": "net/http", + "http.ErrSkipAltProtocol": "net/http", + "http.ErrUnexpectedTrailer": "net/http", + "http.ErrUseLastResponse": "net/http", + "http.ErrWriteAfterFlush": "net/http", + "http.Error": "net/http", + "http.File": "net/http", + "http.FileServer": "net/http", + "http.FileSystem": "net/http", + "http.Flusher": "net/http", + "http.Get": "net/http", + "http.Handle": "net/http", + "http.HandleFunc": "net/http", + "http.Handler": "net/http", + "http.HandlerFunc": "net/http", + "http.Head": "net/http", + "http.Header": "net/http", + "http.Hijacker": "net/http", + "http.ListenAndServe": "net/http", + "http.ListenAndServeTLS": "net/http", + "http.LocalAddrContextKey": "net/http", + "http.MaxBytesReader": "net/http", + "http.MethodConnect": "net/http", + "http.MethodDelete": "net/http", + "http.MethodGet": "net/http", + "http.MethodHead": "net/http", + "http.MethodOptions": "net/http", + "http.MethodPatch": "net/http", + "http.MethodPost": "net/http", + "http.MethodPut": "net/http", + "http.MethodTrace": "net/http", + "http.NewFileTransport": "net/http", + "http.NewRequest": "net/http", + "http.NewServeMux": "net/http", + "http.NotFound": "net/http", + "http.NotFoundHandler": "net/http", + "http.ParseHTTPVersion": "net/http", + "http.ParseTime": "net/http", + "http.Post": "net/http", + "http.PostForm": "net/http", + "http.ProtocolError": "net/http", + "http.ProxyFromEnvironment": "net/http", + "http.ProxyURL": "net/http", + "http.ReadRequest": "net/http", + "http.ReadResponse": "net/http", + "http.Redirect": "net/http", + "http.RedirectHandler": "net/http", + "http.Request": "net/http", + "http.Response": "net/http", + "http.ResponseWriter": "net/http", + "http.RoundTripper": "net/http", + "http.Serve": "net/http", + "http.ServeContent": "net/http", + "http.ServeFile": "net/http", + "http.ServeMux": "net/http", + "http.Server": "net/http", + "http.ServerContextKey": "net/http", + "http.SetCookie": "net/http", + "http.StateActive": "net/http", + "http.StateClosed": "net/http", + "http.StateHijacked": "net/http", + "http.StateIdle": "net/http", + "http.StateNew": "net/http", + "http.StatusAccepted": "net/http", + "http.StatusAlreadyReported": "net/http", + "http.StatusBadGateway": "net/http", + "http.StatusBadRequest": "net/http", + "http.StatusConflict": "net/http", + "http.StatusContinue": "net/http", + "http.StatusCreated": "net/http", + "http.StatusExpectationFailed": "net/http", + "http.StatusFailedDependency": "net/http", + "http.StatusForbidden": "net/http", + "http.StatusFound": "net/http", + "http.StatusGatewayTimeout": "net/http", + "http.StatusGone": "net/http", + "http.StatusHTTPVersionNotSupported": "net/http", + "http.StatusIMUsed": "net/http", + "http.StatusInsufficientStorage": "net/http", + "http.StatusInternalServerError": "net/http", + "http.StatusLengthRequired": "net/http", + "http.StatusLocked": "net/http", + "http.StatusLoopDetected": "net/http", + "http.StatusMethodNotAllowed": "net/http", + "http.StatusMovedPermanently": "net/http", + "http.StatusMultiStatus": "net/http", + "http.StatusMultipleChoices": "net/http", + "http.StatusNetworkAuthenticationRequired": "net/http", + "http.StatusNoContent": "net/http", + "http.StatusNonAuthoritativeInfo": "net/http", + "http.StatusNotAcceptable": "net/http", + "http.StatusNotExtended": "net/http", + "http.StatusNotFound": "net/http", + "http.StatusNotImplemented": "net/http", + "http.StatusNotModified": "net/http", + "http.StatusOK": "net/http", + "http.StatusPartialContent": "net/http", + "http.StatusPaymentRequired": "net/http", + "http.StatusPermanentRedirect": "net/http", + "http.StatusPreconditionFailed": "net/http", + "http.StatusPreconditionRequired": "net/http", + "http.StatusProcessing": "net/http", + "http.StatusProxyAuthRequired": "net/http", + "http.StatusRequestEntityTooLarge": "net/http", + "http.StatusRequestHeaderFieldsTooLarge": "net/http", + "http.StatusRequestTimeout": "net/http", + "http.StatusRequestURITooLong": "net/http", + "http.StatusRequestedRangeNotSatisfiable": "net/http", + "http.StatusResetContent": "net/http", + "http.StatusSeeOther": "net/http", + "http.StatusServiceUnavailable": "net/http", + "http.StatusSwitchingProtocols": "net/http", + "http.StatusTeapot": "net/http", + "http.StatusTemporaryRedirect": "net/http", + "http.StatusText": "net/http", + "http.StatusTooManyRequests": "net/http", + "http.StatusUnauthorized": "net/http", + "http.StatusUnavailableForLegalReasons": "net/http", + "http.StatusUnprocessableEntity": "net/http", + "http.StatusUnsupportedMediaType": "net/http", + "http.StatusUpgradeRequired": "net/http", + "http.StatusUseProxy": "net/http", + "http.StatusVariantAlsoNegotiates": "net/http", + "http.StripPrefix": "net/http", + "http.TimeFormat": "net/http", + "http.TimeoutHandler": "net/http", + "http.Transport": "net/http", + "httptest.DefaultRemoteAddr": "net/http/httptest", + "httptest.NewRecorder": "net/http/httptest", + "httptest.NewRequest": "net/http/httptest", + "httptest.NewServer": "net/http/httptest", + "httptest.NewTLSServer": "net/http/httptest", + "httptest.NewUnstartedServer": "net/http/httptest", + "httptest.ResponseRecorder": "net/http/httptest", + "httptest.Server": "net/http/httptest", + "httptrace.ClientTrace": "net/http/httptrace", + "httptrace.ContextClientTrace": "net/http/httptrace", + "httptrace.DNSDoneInfo": "net/http/httptrace", + "httptrace.DNSStartInfo": "net/http/httptrace", + "httptrace.GotConnInfo": "net/http/httptrace", + "httptrace.WithClientTrace": "net/http/httptrace", + "httptrace.WroteRequestInfo": "net/http/httptrace", + "httputil.BufferPool": "net/http/httputil", + "httputil.ClientConn": "net/http/httputil", + "httputil.DumpRequest": "net/http/httputil", + "httputil.DumpRequestOut": "net/http/httputil", + "httputil.DumpResponse": "net/http/httputil", + "httputil.ErrClosed": "net/http/httputil", + "httputil.ErrLineTooLong": "net/http/httputil", + "httputil.ErrPersistEOF": "net/http/httputil", + "httputil.ErrPipeline": "net/http/httputil", + "httputil.NewChunkedReader": "net/http/httputil", + "httputil.NewChunkedWriter": "net/http/httputil", + "httputil.NewClientConn": "net/http/httputil", + "httputil.NewProxyClientConn": "net/http/httputil", + "httputil.NewServerConn": "net/http/httputil", + "httputil.NewSingleHostReverseProxy": "net/http/httputil", + "httputil.ReverseProxy": "net/http/httputil", + "httputil.ServerConn": "net/http/httputil", + "image.Alpha": "image", + "image.Alpha16": "image", + "image.Black": "image", + "image.CMYK": "image", + "image.Config": "image", + "image.Decode": "image", + "image.DecodeConfig": "image", + "image.ErrFormat": "image", + "image.Gray": "image", + "image.Gray16": "image", + "image.Image": "image", + "image.NRGBA": "image", + "image.NRGBA64": "image", + "image.NYCbCrA": "image", + "image.NewAlpha": "image", + "image.NewAlpha16": "image", + "image.NewCMYK": "image", + "image.NewGray": "image", + "image.NewGray16": "image", + "image.NewNRGBA": "image", + "image.NewNRGBA64": "image", + "image.NewNYCbCrA": "image", + "image.NewPaletted": "image", + "image.NewRGBA": "image", + "image.NewRGBA64": "image", + "image.NewUniform": "image", + "image.NewYCbCr": "image", + "image.Opaque": "image", + "image.Paletted": "image", + "image.PalettedImage": "image", + "image.Point": "image", + "image.Pt": "image", + "image.RGBA": "image", + "image.RGBA64": "image", + "image.Rect": "image", + "image.Rectangle": "image", + "image.RegisterFormat": "image", + "image.Transparent": "image", + "image.Uniform": "image", + "image.White": "image", + "image.YCbCr": "image", + "image.YCbCrSubsampleRatio": "image", + "image.YCbCrSubsampleRatio410": "image", + "image.YCbCrSubsampleRatio411": "image", + "image.YCbCrSubsampleRatio420": "image", + "image.YCbCrSubsampleRatio422": "image", + "image.YCbCrSubsampleRatio440": "image", + "image.YCbCrSubsampleRatio444": "image", + "image.ZP": "image", + "image.ZR": "image", + "importer.Default": "go/importer", + "importer.For": "go/importer", + "importer.Lookup": "go/importer", + "io.ByteReader": "io", + "io.ByteScanner": "io", + "io.ByteWriter": "io", + "io.Closer": "io", + "io.Copy": "io", + "io.CopyBuffer": "io", + "io.CopyN": "io", + "io.EOF": "io", + "io.ErrClosedPipe": "io", + "io.ErrNoProgress": "io", + "io.ErrShortBuffer": "io", + "io.ErrShortWrite": "io", + "io.ErrUnexpectedEOF": "io", + "io.LimitReader": "io", + "io.LimitedReader": "io", + "io.MultiReader": "io", + "io.MultiWriter": "io", + "io.NewSectionReader": "io", + "io.Pipe": "io", + "io.PipeReader": "io", + "io.PipeWriter": "io", + "io.ReadAtLeast": "io", + "io.ReadCloser": "io", + "io.ReadFull": "io", + "io.ReadSeeker": "io", + "io.ReadWriteCloser": "io", + "io.ReadWriteSeeker": "io", + "io.ReadWriter": "io", + "io.Reader": "io", + "io.ReaderAt": "io", + "io.ReaderFrom": "io", + "io.RuneReader": "io", + "io.RuneScanner": "io", + "io.SectionReader": "io", + "io.SeekCurrent": "io", + "io.SeekEnd": "io", + "io.SeekStart": "io", + "io.Seeker": "io", + "io.TeeReader": "io", + "io.WriteCloser": "io", + "io.WriteSeeker": "io", + "io.WriteString": "io", + "io.Writer": "io", + "io.WriterAt": "io", + "io.WriterTo": "io", + "iotest.DataErrReader": "testing/iotest", + "iotest.ErrTimeout": "testing/iotest", + "iotest.HalfReader": "testing/iotest", + "iotest.NewReadLogger": "testing/iotest", + "iotest.NewWriteLogger": "testing/iotest", + "iotest.OneByteReader": "testing/iotest", + "iotest.TimeoutReader": "testing/iotest", + "iotest.TruncateWriter": "testing/iotest", + "ioutil.Discard": "io/ioutil", + "ioutil.NopCloser": "io/ioutil", + "ioutil.ReadAll": "io/ioutil", + "ioutil.ReadDir": "io/ioutil", + "ioutil.ReadFile": "io/ioutil", + "ioutil.TempDir": "io/ioutil", + "ioutil.TempFile": "io/ioutil", + "ioutil.WriteFile": "io/ioutil", + "jpeg.Decode": "image/jpeg", + "jpeg.DecodeConfig": "image/jpeg", + "jpeg.DefaultQuality": "image/jpeg", + "jpeg.Encode": "image/jpeg", + "jpeg.FormatError": "image/jpeg", + "jpeg.Options": "image/jpeg", + "jpeg.Reader": "image/jpeg", + "jpeg.UnsupportedError": "image/jpeg", + "json.Compact": "encoding/json", + "json.Decoder": "encoding/json", + "json.Delim": "encoding/json", + "json.Encoder": "encoding/json", + "json.HTMLEscape": "encoding/json", + "json.Indent": "encoding/json", + "json.InvalidUTF8Error": "encoding/json", + "json.InvalidUnmarshalError": "encoding/json", + "json.Marshal": "encoding/json", + "json.MarshalIndent": "encoding/json", + "json.Marshaler": "encoding/json", + "json.MarshalerError": "encoding/json", + "json.NewDecoder": "encoding/json", + "json.NewEncoder": "encoding/json", + "json.Number": "encoding/json", + "json.RawMessage": "encoding/json", + "json.SyntaxError": "encoding/json", + "json.Token": "encoding/json", + "json.Unmarshal": "encoding/json", + "json.UnmarshalFieldError": "encoding/json", + "json.UnmarshalTypeError": "encoding/json", + "json.Unmarshaler": "encoding/json", + "json.UnsupportedTypeError": "encoding/json", + "json.UnsupportedValueError": "encoding/json", + "jsonrpc.Dial": "net/rpc/jsonrpc", + "jsonrpc.NewClient": "net/rpc/jsonrpc", + "jsonrpc.NewClientCodec": "net/rpc/jsonrpc", + "jsonrpc.NewServerCodec": "net/rpc/jsonrpc", + "jsonrpc.ServeConn": "net/rpc/jsonrpc", + "list.Element": "container/list", + "list.List": "container/list", + "list.New": "container/list", + "log.Fatal": "log", + "log.Fatalf": "log", + "log.Fatalln": "log", + "log.Flags": "log", + "log.LUTC": "log", + "log.Ldate": "log", + "log.Llongfile": "log", + "log.Lmicroseconds": "log", + "log.Logger": "log", + "log.Lshortfile": "log", + "log.LstdFlags": "log", + "log.Ltime": "log", + "log.New": "log", + "log.Output": "log", + "log.Panic": "log", + "log.Panicf": "log", + "log.Panicln": "log", + "log.Prefix": "log", + "log.Print": "log", + "log.Printf": "log", + "log.Println": "log", + "log.SetFlags": "log", + "log.SetOutput": "log", + "log.SetPrefix": "log", + "lzw.LSB": "compress/lzw", + "lzw.MSB": "compress/lzw", + "lzw.NewReader": "compress/lzw", + "lzw.NewWriter": "compress/lzw", + "lzw.Order": "compress/lzw", + "macho.Cpu": "debug/macho", + "macho.Cpu386": "debug/macho", + "macho.CpuAmd64": "debug/macho", + "macho.CpuArm": "debug/macho", + "macho.CpuPpc": "debug/macho", + "macho.CpuPpc64": "debug/macho", + "macho.Dylib": "debug/macho", + "macho.DylibCmd": "debug/macho", + "macho.Dysymtab": "debug/macho", + "macho.DysymtabCmd": "debug/macho", + "macho.ErrNotFat": "debug/macho", + "macho.FatArch": "debug/macho", + "macho.FatArchHeader": "debug/macho", + "macho.FatFile": "debug/macho", + "macho.File": "debug/macho", + "macho.FileHeader": "debug/macho", + "macho.FormatError": "debug/macho", + "macho.Load": "debug/macho", + "macho.LoadBytes": "debug/macho", + "macho.LoadCmd": "debug/macho", + "macho.LoadCmdDylib": "debug/macho", + "macho.LoadCmdDylinker": "debug/macho", + "macho.LoadCmdDysymtab": "debug/macho", + "macho.LoadCmdSegment": "debug/macho", + "macho.LoadCmdSegment64": "debug/macho", + "macho.LoadCmdSymtab": "debug/macho", + "macho.LoadCmdThread": "debug/macho", + "macho.LoadCmdUnixThread": "debug/macho", + "macho.Magic32": "debug/macho", + "macho.Magic64": "debug/macho", + "macho.MagicFat": "debug/macho", + "macho.NewFatFile": "debug/macho", + "macho.NewFile": "debug/macho", + "macho.Nlist32": "debug/macho", + "macho.Nlist64": "debug/macho", + "macho.Open": "debug/macho", + "macho.OpenFat": "debug/macho", + "macho.Regs386": "debug/macho", + "macho.RegsAMD64": "debug/macho", + "macho.Section": "debug/macho", + "macho.Section32": "debug/macho", + "macho.Section64": "debug/macho", + "macho.SectionHeader": "debug/macho", + "macho.Segment": "debug/macho", + "macho.Segment32": "debug/macho", + "macho.Segment64": "debug/macho", + "macho.SegmentHeader": "debug/macho", + "macho.Symbol": "debug/macho", + "macho.Symtab": "debug/macho", + "macho.SymtabCmd": "debug/macho", + "macho.Thread": "debug/macho", + "macho.Type": "debug/macho", + "macho.TypeBundle": "debug/macho", + "macho.TypeDylib": "debug/macho", + "macho.TypeExec": "debug/macho", + "macho.TypeObj": "debug/macho", + "mail.Address": "net/mail", + "mail.AddressParser": "net/mail", + "mail.ErrHeaderNotPresent": "net/mail", + "mail.Header": "net/mail", + "mail.Message": "net/mail", + "mail.ParseAddress": "net/mail", + "mail.ParseAddressList": "net/mail", + "mail.ReadMessage": "net/mail", + "math.Abs": "math", + "math.Acos": "math", + "math.Acosh": "math", + "math.Asin": "math", + "math.Asinh": "math", + "math.Atan": "math", + "math.Atan2": "math", + "math.Atanh": "math", + "math.Cbrt": "math", + "math.Ceil": "math", + "math.Copysign": "math", + "math.Cos": "math", + "math.Cosh": "math", + "math.Dim": "math", + "math.E": "math", + "math.Erf": "math", + "math.Erfc": "math", + "math.Exp": "math", + "math.Exp2": "math", + "math.Expm1": "math", + "math.Float32bits": "math", + "math.Float32frombits": "math", + "math.Float64bits": "math", + "math.Float64frombits": "math", + "math.Floor": "math", + "math.Frexp": "math", + "math.Gamma": "math", + "math.Hypot": "math", + "math.Ilogb": "math", + "math.Inf": "math", + "math.IsInf": "math", + "math.IsNaN": "math", + "math.J0": "math", + "math.J1": "math", + "math.Jn": "math", + "math.Ldexp": "math", + "math.Lgamma": "math", + "math.Ln10": "math", + "math.Ln2": "math", + "math.Log": "math", + "math.Log10": "math", + "math.Log10E": "math", + "math.Log1p": "math", + "math.Log2": "math", + "math.Log2E": "math", + "math.Logb": "math", + "math.Max": "math", + "math.MaxFloat32": "math", + "math.MaxFloat64": "math", + "math.MaxInt16": "math", + "math.MaxInt32": "math", + "math.MaxInt64": "math", + "math.MaxInt8": "math", + "math.MaxUint16": "math", + "math.MaxUint32": "math", + "math.MaxUint64": "math", + "math.MaxUint8": "math", + "math.Min": "math", + "math.MinInt16": "math", + "math.MinInt32": "math", + "math.MinInt64": "math", + "math.MinInt8": "math", + "math.Mod": "math", + "math.Modf": "math", + "math.NaN": "math", + "math.Nextafter": "math", + "math.Nextafter32": "math", + "math.Phi": "math", + "math.Pi": "math", + "math.Pow": "math", + "math.Pow10": "math", + "math.Remainder": "math", + "math.Signbit": "math", + "math.Sin": "math", + "math.Sincos": "math", + "math.Sinh": "math", + "math.SmallestNonzeroFloat32": "math", + "math.SmallestNonzeroFloat64": "math", + "math.Sqrt": "math", + "math.Sqrt2": "math", + "math.SqrtE": "math", + "math.SqrtPhi": "math", + "math.SqrtPi": "math", + "math.Tan": "math", + "math.Tanh": "math", + "math.Trunc": "math", + "math.Y0": "math", + "math.Y1": "math", + "math.Yn": "math", + "md5.BlockSize": "crypto/md5", + "md5.New": "crypto/md5", + "md5.Size": "crypto/md5", + "md5.Sum": "crypto/md5", + "mime.AddExtensionType": "mime", + "mime.BEncoding": "mime", + "mime.ExtensionsByType": "mime", + "mime.FormatMediaType": "mime", + "mime.ParseMediaType": "mime", + "mime.QEncoding": "mime", + "mime.TypeByExtension": "mime", + "mime.WordDecoder": "mime", + "mime.WordEncoder": "mime", + "multipart.File": "mime/multipart", + "multipart.FileHeader": "mime/multipart", + "multipart.Form": "mime/multipart", + "multipart.NewReader": "mime/multipart", + "multipart.NewWriter": "mime/multipart", + "multipart.Part": "mime/multipart", + "multipart.Reader": "mime/multipart", + "multipart.Writer": "mime/multipart", + "net.Addr": "net", + "net.AddrError": "net", + "net.CIDRMask": "net", + "net.Conn": "net", + "net.DNSConfigError": "net", + "net.DNSError": "net", + "net.Dial": "net", + "net.DialIP": "net", + "net.DialTCP": "net", + "net.DialTimeout": "net", + "net.DialUDP": "net", + "net.DialUnix": "net", + "net.Dialer": "net", + "net.ErrWriteToConnected": "net", + "net.Error": "net", + "net.FileConn": "net", + "net.FileListener": "net", + "net.FilePacketConn": "net", + "net.FlagBroadcast": "net", + "net.FlagLoopback": "net", + "net.FlagMulticast": "net", + "net.FlagPointToPoint": "net", + "net.FlagUp": "net", + "net.Flags": "net", + "net.HardwareAddr": "net", + "net.IP": "net", + "net.IPAddr": "net", + "net.IPConn": "net", + "net.IPMask": "net", + "net.IPNet": "net", + "net.IPv4": "net", + "net.IPv4Mask": "net", + "net.IPv4allrouter": "net", + "net.IPv4allsys": "net", + "net.IPv4bcast": "net", + "net.IPv4len": "net", + "net.IPv4zero": "net", + "net.IPv6interfacelocalallnodes": "net", + "net.IPv6len": "net", + "net.IPv6linklocalallnodes": "net", + "net.IPv6linklocalallrouters": "net", + "net.IPv6loopback": "net", + "net.IPv6unspecified": "net", + "net.IPv6zero": "net", + "net.Interface": "net", + "net.InterfaceAddrs": "net", + "net.InterfaceByIndex": "net", + "net.InterfaceByName": "net", + "net.Interfaces": "net", + "net.InvalidAddrError": "net", + "net.JoinHostPort": "net", + "net.Listen": "net", + "net.ListenIP": "net", + "net.ListenMulticastUDP": "net", + "net.ListenPacket": "net", + "net.ListenTCP": "net", + "net.ListenUDP": "net", + "net.ListenUnix": "net", + "net.ListenUnixgram": "net", + "net.Listener": "net", + "net.LookupAddr": "net", + "net.LookupCNAME": "net", + "net.LookupHost": "net", + "net.LookupIP": "net", + "net.LookupMX": "net", + "net.LookupNS": "net", + "net.LookupPort": "net", + "net.LookupSRV": "net", + "net.LookupTXT": "net", + "net.MX": "net", + "net.NS": "net", + "net.OpError": "net", + "net.PacketConn": "net", + "net.ParseCIDR": "net", + "net.ParseError": "net", + "net.ParseIP": "net", + "net.ParseMAC": "net", + "net.Pipe": "net", + "net.ResolveIPAddr": "net", + "net.ResolveTCPAddr": "net", + "net.ResolveUDPAddr": "net", + "net.ResolveUnixAddr": "net", + "net.SRV": "net", + "net.SplitHostPort": "net", + "net.TCPAddr": "net", + "net.TCPConn": "net", + "net.TCPListener": "net", + "net.UDPAddr": "net", + "net.UDPConn": "net", + "net.UnixAddr": "net", + "net.UnixConn": "net", + "net.UnixListener": "net", + "net.UnknownNetworkError": "net", + "os.Args": "os", + "os.Chdir": "os", + "os.Chmod": "os", + "os.Chown": "os", + "os.Chtimes": "os", + "os.Clearenv": "os", + "os.Create": "os", + "os.DevNull": "os", + "os.Environ": "os", + "os.ErrExist": "os", + "os.ErrInvalid": "os", + "os.ErrNotExist": "os", + "os.ErrPermission": "os", + "os.Exit": "os", + "os.Expand": "os", + "os.ExpandEnv": "os", + "os.File": "os", + "os.FileInfo": "os", + "os.FileMode": "os", + "os.FindProcess": "os", + "os.Getegid": "os", + "os.Getenv": "os", + "os.Geteuid": "os", + "os.Getgid": "os", + "os.Getgroups": "os", + "os.Getpagesize": "os", + "os.Getpid": "os", + "os.Getppid": "os", + "os.Getuid": "os", + "os.Getwd": "os", + "os.Hostname": "os", + "os.Interrupt": "os", + "os.IsExist": "os", + "os.IsNotExist": "os", + "os.IsPathSeparator": "os", + "os.IsPermission": "os", + "os.Kill": "os", + "os.Lchown": "os", + "os.Link": "os", + "os.LinkError": "os", + "os.LookupEnv": "os", + "os.Lstat": "os", + "os.Mkdir": "os", + "os.MkdirAll": "os", + "os.ModeAppend": "os", + "os.ModeCharDevice": "os", + "os.ModeDevice": "os", + "os.ModeDir": "os", + "os.ModeExclusive": "os", + "os.ModeNamedPipe": "os", + "os.ModePerm": "os", + "os.ModeSetgid": "os", + "os.ModeSetuid": "os", + "os.ModeSocket": "os", + "os.ModeSticky": "os", + "os.ModeSymlink": "os", + "os.ModeTemporary": "os", + "os.ModeType": "os", + "os.NewFile": "os", + "os.NewSyscallError": "os", + "os.O_APPEND": "os", + "os.O_CREATE": "os", + "os.O_EXCL": "os", + "os.O_RDONLY": "os", + "os.O_RDWR": "os", + "os.O_SYNC": "os", + "os.O_TRUNC": "os", + "os.O_WRONLY": "os", + "os.Open": "os", + "os.OpenFile": "os", + "os.PathError": "os", + "os.PathListSeparator": "os", + "os.PathSeparator": "os", + "os.Pipe": "os", + "os.ProcAttr": "os", + "os.Process": "os", + "os.ProcessState": "os", + "os.Readlink": "os", + "os.Remove": "os", + "os.RemoveAll": "os", + "os.Rename": "os", + "os.SEEK_CUR": "os", + "os.SEEK_END": "os", + "os.SEEK_SET": "os", + "os.SameFile": "os", + "os.Setenv": "os", + "os.Signal": "os", + "os.StartProcess": "os", + "os.Stat": "os", + "os.Stderr": "os", + "os.Stdin": "os", + "os.Stdout": "os", + "os.Symlink": "os", + "os.SyscallError": "os", + "os.TempDir": "os", + "os.Truncate": "os", + "os.Unsetenv": "os", + "palette.Plan9": "image/color/palette", + "palette.WebSafe": "image/color/palette", + "parse.ActionNode": "text/template/parse", + "parse.BoolNode": "text/template/parse", + "parse.BranchNode": "text/template/parse", + "parse.ChainNode": "text/template/parse", + "parse.CommandNode": "text/template/parse", + "parse.DotNode": "text/template/parse", + "parse.FieldNode": "text/template/parse", + "parse.IdentifierNode": "text/template/parse", + "parse.IfNode": "text/template/parse", + "parse.IsEmptyTree": "text/template/parse", + "parse.ListNode": "text/template/parse", + "parse.New": "text/template/parse", + "parse.NewIdentifier": "text/template/parse", + "parse.NilNode": "text/template/parse", + "parse.Node": "text/template/parse", + "parse.NodeAction": "text/template/parse", + "parse.NodeBool": "text/template/parse", + "parse.NodeChain": "text/template/parse", + "parse.NodeCommand": "text/template/parse", + "parse.NodeDot": "text/template/parse", + "parse.NodeField": "text/template/parse", + "parse.NodeIdentifier": "text/template/parse", + "parse.NodeIf": "text/template/parse", + "parse.NodeList": "text/template/parse", + "parse.NodeNil": "text/template/parse", + "parse.NodeNumber": "text/template/parse", + "parse.NodePipe": "text/template/parse", + "parse.NodeRange": "text/template/parse", + "parse.NodeString": "text/template/parse", + "parse.NodeTemplate": "text/template/parse", + "parse.NodeText": "text/template/parse", + "parse.NodeType": "text/template/parse", + "parse.NodeVariable": "text/template/parse", + "parse.NodeWith": "text/template/parse", + "parse.NumberNode": "text/template/parse", + "parse.Parse": "text/template/parse", + "parse.PipeNode": "text/template/parse", + "parse.Pos": "text/template/parse", + "parse.RangeNode": "text/template/parse", + "parse.StringNode": "text/template/parse", + "parse.TemplateNode": "text/template/parse", + "parse.TextNode": "text/template/parse", + "parse.Tree": "text/template/parse", + "parse.VariableNode": "text/template/parse", + "parse.WithNode": "text/template/parse", + "parser.AllErrors": "go/parser", + "parser.DeclarationErrors": "go/parser", + "parser.ImportsOnly": "go/parser", + "parser.Mode": "go/parser", + "parser.PackageClauseOnly": "go/parser", + "parser.ParseComments": "go/parser", + "parser.ParseDir": "go/parser", + "parser.ParseExpr": "go/parser", + "parser.ParseExprFrom": "go/parser", + "parser.ParseFile": "go/parser", + "parser.SpuriousErrors": "go/parser", + "parser.Trace": "go/parser", + "path.Base": "path", + "path.Clean": "path", + "path.Dir": "path", + "path.ErrBadPattern": "path", + "path.Ext": "path", + "path.IsAbs": "path", + "path.Join": "path", + "path.Match": "path", + "path.Split": "path", + "pe.COFFSymbol": "debug/pe", + "pe.COFFSymbolSize": "debug/pe", + "pe.DataDirectory": "debug/pe", + "pe.File": "debug/pe", + "pe.FileHeader": "debug/pe", + "pe.FormatError": "debug/pe", + "pe.IMAGE_FILE_MACHINE_AM33": "debug/pe", + "pe.IMAGE_FILE_MACHINE_AMD64": "debug/pe", + "pe.IMAGE_FILE_MACHINE_ARM": "debug/pe", + "pe.IMAGE_FILE_MACHINE_EBC": "debug/pe", + "pe.IMAGE_FILE_MACHINE_I386": "debug/pe", + "pe.IMAGE_FILE_MACHINE_IA64": "debug/pe", + "pe.IMAGE_FILE_MACHINE_M32R": "debug/pe", + "pe.IMAGE_FILE_MACHINE_MIPS16": "debug/pe", + "pe.IMAGE_FILE_MACHINE_MIPSFPU": "debug/pe", + "pe.IMAGE_FILE_MACHINE_MIPSFPU16": "debug/pe", + "pe.IMAGE_FILE_MACHINE_POWERPC": "debug/pe", + "pe.IMAGE_FILE_MACHINE_POWERPCFP": "debug/pe", + "pe.IMAGE_FILE_MACHINE_R4000": "debug/pe", + "pe.IMAGE_FILE_MACHINE_SH3": "debug/pe", + "pe.IMAGE_FILE_MACHINE_SH3DSP": "debug/pe", + "pe.IMAGE_FILE_MACHINE_SH4": "debug/pe", + "pe.IMAGE_FILE_MACHINE_SH5": "debug/pe", + "pe.IMAGE_FILE_MACHINE_THUMB": "debug/pe", + "pe.IMAGE_FILE_MACHINE_UNKNOWN": "debug/pe", + "pe.IMAGE_FILE_MACHINE_WCEMIPSV2": "debug/pe", + "pe.ImportDirectory": "debug/pe", + "pe.NewFile": "debug/pe", + "pe.Open": "debug/pe", + "pe.OptionalHeader32": "debug/pe", + "pe.OptionalHeader64": "debug/pe", + "pe.Section": "debug/pe", + "pe.SectionHeader": "debug/pe", + "pe.SectionHeader32": "debug/pe", + "pe.Symbol": "debug/pe", + "pem.Block": "encoding/pem", + "pem.Decode": "encoding/pem", + "pem.Encode": "encoding/pem", + "pem.EncodeToMemory": "encoding/pem", + "pkix.AlgorithmIdentifier": "crypto/x509/pkix", + "pkix.AttributeTypeAndValue": "crypto/x509/pkix", + "pkix.AttributeTypeAndValueSET": "crypto/x509/pkix", + "pkix.CertificateList": "crypto/x509/pkix", + "pkix.Extension": "crypto/x509/pkix", + "pkix.Name": "crypto/x509/pkix", + "pkix.RDNSequence": "crypto/x509/pkix", + "pkix.RelativeDistinguishedNameSET": "crypto/x509/pkix", + "pkix.RevokedCertificate": "crypto/x509/pkix", + "pkix.TBSCertificateList": "crypto/x509/pkix", + "plan9obj.File": "debug/plan9obj", + "plan9obj.FileHeader": "debug/plan9obj", + "plan9obj.Magic386": "debug/plan9obj", + "plan9obj.Magic64": "debug/plan9obj", + "plan9obj.MagicAMD64": "debug/plan9obj", + "plan9obj.MagicARM": "debug/plan9obj", + "plan9obj.NewFile": "debug/plan9obj", + "plan9obj.Open": "debug/plan9obj", + "plan9obj.Section": "debug/plan9obj", + "plan9obj.SectionHeader": "debug/plan9obj", + "plan9obj.Sym": "debug/plan9obj", + "png.BestCompression": "image/png", + "png.BestSpeed": "image/png", + "png.CompressionLevel": "image/png", + "png.Decode": "image/png", + "png.DecodeConfig": "image/png", + "png.DefaultCompression": "image/png", + "png.Encode": "image/png", + "png.Encoder": "image/png", + "png.FormatError": "image/png", + "png.NoCompression": "image/png", + "png.UnsupportedError": "image/png", + "pprof.Cmdline": "net/http/pprof", + "pprof.Handler": "net/http/pprof", + "pprof.Index": "net/http/pprof", + "pprof.Lookup": "runtime/pprof", + "pprof.NewProfile": "runtime/pprof", + // "pprof.Profile" is ambiguous + "pprof.Profiles": "runtime/pprof", + "pprof.StartCPUProfile": "runtime/pprof", + "pprof.StopCPUProfile": "runtime/pprof", + "pprof.Symbol": "net/http/pprof", + "pprof.Trace": "net/http/pprof", + "pprof.WriteHeapProfile": "runtime/pprof", + "printer.CommentedNode": "go/printer", + "printer.Config": "go/printer", + "printer.Fprint": "go/printer", + "printer.Mode": "go/printer", + "printer.RawFormat": "go/printer", + "printer.SourcePos": "go/printer", + "printer.TabIndent": "go/printer", + "printer.UseSpaces": "go/printer", + "quick.Check": "testing/quick", + "quick.CheckEqual": "testing/quick", + "quick.CheckEqualError": "testing/quick", + "quick.CheckError": "testing/quick", + "quick.Config": "testing/quick", + "quick.Generator": "testing/quick", + "quick.SetupError": "testing/quick", + "quick.Value": "testing/quick", + "quotedprintable.NewReader": "mime/quotedprintable", + "quotedprintable.NewWriter": "mime/quotedprintable", + "quotedprintable.Reader": "mime/quotedprintable", + "quotedprintable.Writer": "mime/quotedprintable", + "rand.ExpFloat64": "math/rand", + "rand.Float32": "math/rand", + "rand.Float64": "math/rand", + // "rand.Int" is ambiguous + "rand.Int31": "math/rand", + "rand.Int31n": "math/rand", + "rand.Int63": "math/rand", + "rand.Int63n": "math/rand", + "rand.Intn": "math/rand", + "rand.New": "math/rand", + "rand.NewSource": "math/rand", + "rand.NewZipf": "math/rand", + "rand.NormFloat64": "math/rand", + "rand.Perm": "math/rand", + "rand.Prime": "crypto/rand", + "rand.Rand": "math/rand", + // "rand.Read" is ambiguous + "rand.Reader": "crypto/rand", + "rand.Seed": "math/rand", + "rand.Source": "math/rand", + "rand.Uint32": "math/rand", + "rand.Zipf": "math/rand", + "rc4.Cipher": "crypto/rc4", + "rc4.KeySizeError": "crypto/rc4", + "rc4.NewCipher": "crypto/rc4", + "reflect.Append": "reflect", + "reflect.AppendSlice": "reflect", + "reflect.Array": "reflect", + "reflect.ArrayOf": "reflect", + "reflect.Bool": "reflect", + "reflect.BothDir": "reflect", + "reflect.Chan": "reflect", + "reflect.ChanDir": "reflect", + "reflect.ChanOf": "reflect", + "reflect.Complex128": "reflect", + "reflect.Complex64": "reflect", + "reflect.Copy": "reflect", + "reflect.DeepEqual": "reflect", + "reflect.Float32": "reflect", + "reflect.Float64": "reflect", + "reflect.Func": "reflect", + "reflect.FuncOf": "reflect", + "reflect.Indirect": "reflect", + "reflect.Int": "reflect", + "reflect.Int16": "reflect", + "reflect.Int32": "reflect", + "reflect.Int64": "reflect", + "reflect.Int8": "reflect", + "reflect.Interface": "reflect", + "reflect.Invalid": "reflect", + "reflect.Kind": "reflect", + "reflect.MakeChan": "reflect", + "reflect.MakeFunc": "reflect", + "reflect.MakeMap": "reflect", + "reflect.MakeSlice": "reflect", + "reflect.Map": "reflect", + "reflect.MapOf": "reflect", + "reflect.Method": "reflect", + "reflect.New": "reflect", + "reflect.NewAt": "reflect", + "reflect.Ptr": "reflect", + "reflect.PtrTo": "reflect", + "reflect.RecvDir": "reflect", + "reflect.Select": "reflect", + "reflect.SelectCase": "reflect", + "reflect.SelectDefault": "reflect", + "reflect.SelectDir": "reflect", + "reflect.SelectRecv": "reflect", + "reflect.SelectSend": "reflect", + "reflect.SendDir": "reflect", + "reflect.Slice": "reflect", + "reflect.SliceHeader": "reflect", + "reflect.SliceOf": "reflect", + "reflect.String": "reflect", + "reflect.StringHeader": "reflect", + "reflect.Struct": "reflect", + "reflect.StructField": "reflect", + "reflect.StructOf": "reflect", + "reflect.StructTag": "reflect", + "reflect.TypeOf": "reflect", + "reflect.Uint": "reflect", + "reflect.Uint16": "reflect", + "reflect.Uint32": "reflect", + "reflect.Uint64": "reflect", + "reflect.Uint8": "reflect", + "reflect.Uintptr": "reflect", + "reflect.UnsafePointer": "reflect", + "reflect.Value": "reflect", + "reflect.ValueError": "reflect", + "reflect.ValueOf": "reflect", + "reflect.Zero": "reflect", + "regexp.Compile": "regexp", + "regexp.CompilePOSIX": "regexp", + "regexp.Match": "regexp", + "regexp.MatchReader": "regexp", + "regexp.MatchString": "regexp", + "regexp.MustCompile": "regexp", + "regexp.MustCompilePOSIX": "regexp", + "regexp.QuoteMeta": "regexp", + "regexp.Regexp": "regexp", + "ring.New": "container/ring", + "ring.Ring": "container/ring", + "rpc.Accept": "net/rpc", + "rpc.Call": "net/rpc", + "rpc.Client": "net/rpc", + "rpc.ClientCodec": "net/rpc", + "rpc.DefaultDebugPath": "net/rpc", + "rpc.DefaultRPCPath": "net/rpc", + "rpc.DefaultServer": "net/rpc", + "rpc.Dial": "net/rpc", + "rpc.DialHTTP": "net/rpc", + "rpc.DialHTTPPath": "net/rpc", + "rpc.ErrShutdown": "net/rpc", + "rpc.HandleHTTP": "net/rpc", + "rpc.NewClient": "net/rpc", + "rpc.NewClientWithCodec": "net/rpc", + "rpc.NewServer": "net/rpc", + "rpc.Register": "net/rpc", + "rpc.RegisterName": "net/rpc", + "rpc.Request": "net/rpc", + "rpc.Response": "net/rpc", + "rpc.ServeCodec": "net/rpc", + "rpc.ServeConn": "net/rpc", + "rpc.ServeRequest": "net/rpc", + "rpc.Server": "net/rpc", + "rpc.ServerCodec": "net/rpc", + "rpc.ServerError": "net/rpc", + "rsa.CRTValue": "crypto/rsa", + "rsa.DecryptOAEP": "crypto/rsa", + "rsa.DecryptPKCS1v15": "crypto/rsa", + "rsa.DecryptPKCS1v15SessionKey": "crypto/rsa", + "rsa.EncryptOAEP": "crypto/rsa", + "rsa.EncryptPKCS1v15": "crypto/rsa", + "rsa.ErrDecryption": "crypto/rsa", + "rsa.ErrMessageTooLong": "crypto/rsa", + "rsa.ErrVerification": "crypto/rsa", + "rsa.GenerateKey": "crypto/rsa", + "rsa.GenerateMultiPrimeKey": "crypto/rsa", + "rsa.OAEPOptions": "crypto/rsa", + "rsa.PKCS1v15DecryptOptions": "crypto/rsa", + "rsa.PSSOptions": "crypto/rsa", + "rsa.PSSSaltLengthAuto": "crypto/rsa", + "rsa.PSSSaltLengthEqualsHash": "crypto/rsa", + "rsa.PrecomputedValues": "crypto/rsa", + "rsa.PrivateKey": "crypto/rsa", + "rsa.PublicKey": "crypto/rsa", + "rsa.SignPKCS1v15": "crypto/rsa", + "rsa.SignPSS": "crypto/rsa", + "rsa.VerifyPKCS1v15": "crypto/rsa", + "rsa.VerifyPSS": "crypto/rsa", + "runtime.BlockProfile": "runtime", + "runtime.BlockProfileRecord": "runtime", + "runtime.Breakpoint": "runtime", + "runtime.CPUProfile": "runtime", + "runtime.Caller": "runtime", + "runtime.Callers": "runtime", + "runtime.CallersFrames": "runtime", + "runtime.Compiler": "runtime", + "runtime.Error": "runtime", + "runtime.Frame": "runtime", + "runtime.Frames": "runtime", + "runtime.Func": "runtime", + "runtime.FuncForPC": "runtime", + "runtime.GC": "runtime", + "runtime.GOARCH": "runtime", + "runtime.GOMAXPROCS": "runtime", + "runtime.GOOS": "runtime", + "runtime.GOROOT": "runtime", + "runtime.Goexit": "runtime", + "runtime.GoroutineProfile": "runtime", + "runtime.Gosched": "runtime", + "runtime.KeepAlive": "runtime", + "runtime.LockOSThread": "runtime", + "runtime.MemProfile": "runtime", + "runtime.MemProfileRate": "runtime", + "runtime.MemProfileRecord": "runtime", + "runtime.MemStats": "runtime", + "runtime.NumCPU": "runtime", + "runtime.NumCgoCall": "runtime", + "runtime.NumGoroutine": "runtime", + "runtime.ReadMemStats": "runtime", + "runtime.ReadTrace": "runtime", + "runtime.SetBlockProfileRate": "runtime", + "runtime.SetCPUProfileRate": "runtime", + "runtime.SetCgoTraceback": "runtime", + "runtime.SetFinalizer": "runtime", + "runtime.Stack": "runtime", + "runtime.StackRecord": "runtime", + "runtime.StartTrace": "runtime", + "runtime.StopTrace": "runtime", + "runtime.ThreadCreateProfile": "runtime", + "runtime.TypeAssertionError": "runtime", + "runtime.UnlockOSThread": "runtime", + "runtime.Version": "runtime", + "scanner.Char": "text/scanner", + "scanner.Comment": "text/scanner", + "scanner.EOF": "text/scanner", + "scanner.Error": "go/scanner", + "scanner.ErrorHandler": "go/scanner", + "scanner.ErrorList": "go/scanner", + "scanner.Float": "text/scanner", + "scanner.GoTokens": "text/scanner", + "scanner.GoWhitespace": "text/scanner", + "scanner.Ident": "text/scanner", + "scanner.Int": "text/scanner", + "scanner.Mode": "go/scanner", + "scanner.Position": "text/scanner", + "scanner.PrintError": "go/scanner", + "scanner.RawString": "text/scanner", + "scanner.ScanChars": "text/scanner", + // "scanner.ScanComments" is ambiguous + "scanner.ScanFloats": "text/scanner", + "scanner.ScanIdents": "text/scanner", + "scanner.ScanInts": "text/scanner", + "scanner.ScanRawStrings": "text/scanner", + "scanner.ScanStrings": "text/scanner", + // "scanner.Scanner" is ambiguous + "scanner.SkipComments": "text/scanner", + "scanner.String": "text/scanner", + "scanner.TokenString": "text/scanner", + "sha1.BlockSize": "crypto/sha1", + "sha1.New": "crypto/sha1", + "sha1.Size": "crypto/sha1", + "sha1.Sum": "crypto/sha1", + "sha256.BlockSize": "crypto/sha256", + "sha256.New": "crypto/sha256", + "sha256.New224": "crypto/sha256", + "sha256.Size": "crypto/sha256", + "sha256.Size224": "crypto/sha256", + "sha256.Sum224": "crypto/sha256", + "sha256.Sum256": "crypto/sha256", + "sha512.BlockSize": "crypto/sha512", + "sha512.New": "crypto/sha512", + "sha512.New384": "crypto/sha512", + "sha512.New512_224": "crypto/sha512", + "sha512.New512_256": "crypto/sha512", + "sha512.Size": "crypto/sha512", + "sha512.Size224": "crypto/sha512", + "sha512.Size256": "crypto/sha512", + "sha512.Size384": "crypto/sha512", + "sha512.Sum384": "crypto/sha512", + "sha512.Sum512": "crypto/sha512", + "sha512.Sum512_224": "crypto/sha512", + "sha512.Sum512_256": "crypto/sha512", + "signal.Ignore": "os/signal", + "signal.Notify": "os/signal", + "signal.Reset": "os/signal", + "signal.Stop": "os/signal", + "smtp.Auth": "net/smtp", + "smtp.CRAMMD5Auth": "net/smtp", + "smtp.Client": "net/smtp", + "smtp.Dial": "net/smtp", + "smtp.NewClient": "net/smtp", + "smtp.PlainAuth": "net/smtp", + "smtp.SendMail": "net/smtp", + "smtp.ServerInfo": "net/smtp", + "sort.Float64Slice": "sort", + "sort.Float64s": "sort", + "sort.Float64sAreSorted": "sort", + "sort.IntSlice": "sort", + "sort.Interface": "sort", + "sort.Ints": "sort", + "sort.IntsAreSorted": "sort", + "sort.IsSorted": "sort", + "sort.Reverse": "sort", + "sort.Search": "sort", + "sort.SearchFloat64s": "sort", + "sort.SearchInts": "sort", + "sort.SearchStrings": "sort", + "sort.Sort": "sort", + "sort.Stable": "sort", + "sort.StringSlice": "sort", + "sort.Strings": "sort", + "sort.StringsAreSorted": "sort", + "sql.DB": "database/sql", + "sql.DBStats": "database/sql", + "sql.Drivers": "database/sql", + "sql.ErrNoRows": "database/sql", + "sql.ErrTxDone": "database/sql", + "sql.NullBool": "database/sql", + "sql.NullFloat64": "database/sql", + "sql.NullInt64": "database/sql", + "sql.NullString": "database/sql", + "sql.Open": "database/sql", + "sql.RawBytes": "database/sql", + "sql.Register": "database/sql", + "sql.Result": "database/sql", + "sql.Row": "database/sql", + "sql.Rows": "database/sql", + "sql.Scanner": "database/sql", + "sql.Stmt": "database/sql", + "sql.Tx": "database/sql", + "strconv.AppendBool": "strconv", + "strconv.AppendFloat": "strconv", + "strconv.AppendInt": "strconv", + "strconv.AppendQuote": "strconv", + "strconv.AppendQuoteRune": "strconv", + "strconv.AppendQuoteRuneToASCII": "strconv", + "strconv.AppendQuoteRuneToGraphic": "strconv", + "strconv.AppendQuoteToASCII": "strconv", + "strconv.AppendQuoteToGraphic": "strconv", + "strconv.AppendUint": "strconv", + "strconv.Atoi": "strconv", + "strconv.CanBackquote": "strconv", + "strconv.ErrRange": "strconv", + "strconv.ErrSyntax": "strconv", + "strconv.FormatBool": "strconv", + "strconv.FormatFloat": "strconv", + "strconv.FormatInt": "strconv", + "strconv.FormatUint": "strconv", + "strconv.IntSize": "strconv", + "strconv.IsGraphic": "strconv", + "strconv.IsPrint": "strconv", + "strconv.Itoa": "strconv", + "strconv.NumError": "strconv", + "strconv.ParseBool": "strconv", + "strconv.ParseFloat": "strconv", + "strconv.ParseInt": "strconv", + "strconv.ParseUint": "strconv", + "strconv.Quote": "strconv", + "strconv.QuoteRune": "strconv", + "strconv.QuoteRuneToASCII": "strconv", + "strconv.QuoteRuneToGraphic": "strconv", + "strconv.QuoteToASCII": "strconv", + "strconv.QuoteToGraphic": "strconv", + "strconv.Unquote": "strconv", + "strconv.UnquoteChar": "strconv", + "strings.Compare": "strings", + "strings.Contains": "strings", + "strings.ContainsAny": "strings", + "strings.ContainsRune": "strings", + "strings.Count": "strings", + "strings.EqualFold": "strings", + "strings.Fields": "strings", + "strings.FieldsFunc": "strings", + "strings.HasPrefix": "strings", + "strings.HasSuffix": "strings", + "strings.Index": "strings", + "strings.IndexAny": "strings", + "strings.IndexByte": "strings", + "strings.IndexFunc": "strings", + "strings.IndexRune": "strings", + "strings.Join": "strings", + "strings.LastIndex": "strings", + "strings.LastIndexAny": "strings", + "strings.LastIndexByte": "strings", + "strings.LastIndexFunc": "strings", + "strings.Map": "strings", + "strings.NewReader": "strings", + "strings.NewReplacer": "strings", + "strings.Reader": "strings", + "strings.Repeat": "strings", + "strings.Replace": "strings", + "strings.Replacer": "strings", + "strings.Split": "strings", + "strings.SplitAfter": "strings", + "strings.SplitAfterN": "strings", + "strings.SplitN": "strings", + "strings.Title": "strings", + "strings.ToLower": "strings", + "strings.ToLowerSpecial": "strings", + "strings.ToTitle": "strings", + "strings.ToTitleSpecial": "strings", + "strings.ToUpper": "strings", + "strings.ToUpperSpecial": "strings", + "strings.Trim": "strings", + "strings.TrimFunc": "strings", + "strings.TrimLeft": "strings", + "strings.TrimLeftFunc": "strings", + "strings.TrimPrefix": "strings", + "strings.TrimRight": "strings", + "strings.TrimRightFunc": "strings", + "strings.TrimSpace": "strings", + "strings.TrimSuffix": "strings", + "subtle.ConstantTimeByteEq": "crypto/subtle", + "subtle.ConstantTimeCompare": "crypto/subtle", + "subtle.ConstantTimeCopy": "crypto/subtle", + "subtle.ConstantTimeEq": "crypto/subtle", + "subtle.ConstantTimeLessOrEq": "crypto/subtle", + "subtle.ConstantTimeSelect": "crypto/subtle", + "suffixarray.Index": "index/suffixarray", + "suffixarray.New": "index/suffixarray", + "sync.Cond": "sync", + "sync.Locker": "sync", + "sync.Mutex": "sync", + "sync.NewCond": "sync", + "sync.Once": "sync", + "sync.Pool": "sync", + "sync.RWMutex": "sync", + "sync.WaitGroup": "sync", + "syntax.ClassNL": "regexp/syntax", + "syntax.Compile": "regexp/syntax", + "syntax.DotNL": "regexp/syntax", + "syntax.EmptyBeginLine": "regexp/syntax", + "syntax.EmptyBeginText": "regexp/syntax", + "syntax.EmptyEndLine": "regexp/syntax", + "syntax.EmptyEndText": "regexp/syntax", + "syntax.EmptyNoWordBoundary": "regexp/syntax", + "syntax.EmptyOp": "regexp/syntax", + "syntax.EmptyOpContext": "regexp/syntax", + "syntax.EmptyWordBoundary": "regexp/syntax", + "syntax.ErrInternalError": "regexp/syntax", + "syntax.ErrInvalidCharClass": "regexp/syntax", + "syntax.ErrInvalidCharRange": "regexp/syntax", + "syntax.ErrInvalidEscape": "regexp/syntax", + "syntax.ErrInvalidNamedCapture": "regexp/syntax", + "syntax.ErrInvalidPerlOp": "regexp/syntax", + "syntax.ErrInvalidRepeatOp": "regexp/syntax", + "syntax.ErrInvalidRepeatSize": "regexp/syntax", + "syntax.ErrInvalidUTF8": "regexp/syntax", + "syntax.ErrMissingBracket": "regexp/syntax", + "syntax.ErrMissingParen": "regexp/syntax", + "syntax.ErrMissingRepeatArgument": "regexp/syntax", + "syntax.ErrTrailingBackslash": "regexp/syntax", + "syntax.ErrUnexpectedParen": "regexp/syntax", + "syntax.Error": "regexp/syntax", + "syntax.ErrorCode": "regexp/syntax", + "syntax.Flags": "regexp/syntax", + "syntax.FoldCase": "regexp/syntax", + "syntax.Inst": "regexp/syntax", + "syntax.InstAlt": "regexp/syntax", + "syntax.InstAltMatch": "regexp/syntax", + "syntax.InstCapture": "regexp/syntax", + "syntax.InstEmptyWidth": "regexp/syntax", + "syntax.InstFail": "regexp/syntax", + "syntax.InstMatch": "regexp/syntax", + "syntax.InstNop": "regexp/syntax", + "syntax.InstOp": "regexp/syntax", + "syntax.InstRune": "regexp/syntax", + "syntax.InstRune1": "regexp/syntax", + "syntax.InstRuneAny": "regexp/syntax", + "syntax.InstRuneAnyNotNL": "regexp/syntax", + "syntax.IsWordChar": "regexp/syntax", + "syntax.Literal": "regexp/syntax", + "syntax.MatchNL": "regexp/syntax", + "syntax.NonGreedy": "regexp/syntax", + "syntax.OneLine": "regexp/syntax", + "syntax.Op": "regexp/syntax", + "syntax.OpAlternate": "regexp/syntax", + "syntax.OpAnyChar": "regexp/syntax", + "syntax.OpAnyCharNotNL": "regexp/syntax", + "syntax.OpBeginLine": "regexp/syntax", + "syntax.OpBeginText": "regexp/syntax", + "syntax.OpCapture": "regexp/syntax", + "syntax.OpCharClass": "regexp/syntax", + "syntax.OpConcat": "regexp/syntax", + "syntax.OpEmptyMatch": "regexp/syntax", + "syntax.OpEndLine": "regexp/syntax", + "syntax.OpEndText": "regexp/syntax", + "syntax.OpLiteral": "regexp/syntax", + "syntax.OpNoMatch": "regexp/syntax", + "syntax.OpNoWordBoundary": "regexp/syntax", + "syntax.OpPlus": "regexp/syntax", + "syntax.OpQuest": "regexp/syntax", + "syntax.OpRepeat": "regexp/syntax", + "syntax.OpStar": "regexp/syntax", + "syntax.OpWordBoundary": "regexp/syntax", + "syntax.POSIX": "regexp/syntax", + "syntax.Parse": "regexp/syntax", + "syntax.Perl": "regexp/syntax", + "syntax.PerlX": "regexp/syntax", + "syntax.Prog": "regexp/syntax", + "syntax.Regexp": "regexp/syntax", + "syntax.Simple": "regexp/syntax", + "syntax.UnicodeGroups": "regexp/syntax", + "syntax.WasDollar": "regexp/syntax", + "syscall.AF_ALG": "syscall", + "syscall.AF_APPLETALK": "syscall", + "syscall.AF_ARP": "syscall", + "syscall.AF_ASH": "syscall", + "syscall.AF_ATM": "syscall", + "syscall.AF_ATMPVC": "syscall", + "syscall.AF_ATMSVC": "syscall", + "syscall.AF_AX25": "syscall", + "syscall.AF_BLUETOOTH": "syscall", + "syscall.AF_BRIDGE": "syscall", + "syscall.AF_CAIF": "syscall", + "syscall.AF_CAN": "syscall", + "syscall.AF_CCITT": "syscall", + "syscall.AF_CHAOS": "syscall", + "syscall.AF_CNT": "syscall", + "syscall.AF_COIP": "syscall", + "syscall.AF_DATAKIT": "syscall", + "syscall.AF_DECnet": "syscall", + "syscall.AF_DLI": "syscall", + "syscall.AF_E164": "syscall", + "syscall.AF_ECMA": "syscall", + "syscall.AF_ECONET": "syscall", + "syscall.AF_ENCAP": "syscall", + "syscall.AF_FILE": "syscall", + "syscall.AF_HYLINK": "syscall", + "syscall.AF_IEEE80211": "syscall", + "syscall.AF_IEEE802154": "syscall", + "syscall.AF_IMPLINK": "syscall", + "syscall.AF_INET": "syscall", + "syscall.AF_INET6": "syscall", + "syscall.AF_INET6_SDP": "syscall", + "syscall.AF_INET_SDP": "syscall", + "syscall.AF_IPX": "syscall", + "syscall.AF_IRDA": "syscall", + "syscall.AF_ISDN": "syscall", + "syscall.AF_ISO": "syscall", + "syscall.AF_IUCV": "syscall", + "syscall.AF_KEY": "syscall", + "syscall.AF_LAT": "syscall", + "syscall.AF_LINK": "syscall", + "syscall.AF_LLC": "syscall", + "syscall.AF_LOCAL": "syscall", + "syscall.AF_MAX": "syscall", + "syscall.AF_MPLS": "syscall", + "syscall.AF_NATM": "syscall", + "syscall.AF_NDRV": "syscall", + "syscall.AF_NETBEUI": "syscall", + "syscall.AF_NETBIOS": "syscall", + "syscall.AF_NETGRAPH": "syscall", + "syscall.AF_NETLINK": "syscall", + "syscall.AF_NETROM": "syscall", + "syscall.AF_NS": "syscall", + "syscall.AF_OROUTE": "syscall", + "syscall.AF_OSI": "syscall", + "syscall.AF_PACKET": "syscall", + "syscall.AF_PHONET": "syscall", + "syscall.AF_PPP": "syscall", + "syscall.AF_PPPOX": "syscall", + "syscall.AF_PUP": "syscall", + "syscall.AF_RDS": "syscall", + "syscall.AF_RESERVED_36": "syscall", + "syscall.AF_ROSE": "syscall", + "syscall.AF_ROUTE": "syscall", + "syscall.AF_RXRPC": "syscall", + "syscall.AF_SCLUSTER": "syscall", + "syscall.AF_SECURITY": "syscall", + "syscall.AF_SIP": "syscall", + "syscall.AF_SLOW": "syscall", + "syscall.AF_SNA": "syscall", + "syscall.AF_SYSTEM": "syscall", + "syscall.AF_TIPC": "syscall", + "syscall.AF_UNIX": "syscall", + "syscall.AF_UNSPEC": "syscall", + "syscall.AF_VENDOR00": "syscall", + "syscall.AF_VENDOR01": "syscall", + "syscall.AF_VENDOR02": "syscall", + "syscall.AF_VENDOR03": "syscall", + "syscall.AF_VENDOR04": "syscall", + "syscall.AF_VENDOR05": "syscall", + "syscall.AF_VENDOR06": "syscall", + "syscall.AF_VENDOR07": "syscall", + "syscall.AF_VENDOR08": "syscall", + "syscall.AF_VENDOR09": "syscall", + "syscall.AF_VENDOR10": "syscall", + "syscall.AF_VENDOR11": "syscall", + "syscall.AF_VENDOR12": "syscall", + "syscall.AF_VENDOR13": "syscall", + "syscall.AF_VENDOR14": "syscall", + "syscall.AF_VENDOR15": "syscall", + "syscall.AF_VENDOR16": "syscall", + "syscall.AF_VENDOR17": "syscall", + "syscall.AF_VENDOR18": "syscall", + "syscall.AF_VENDOR19": "syscall", + "syscall.AF_VENDOR20": "syscall", + "syscall.AF_VENDOR21": "syscall", + "syscall.AF_VENDOR22": "syscall", + "syscall.AF_VENDOR23": "syscall", + "syscall.AF_VENDOR24": "syscall", + "syscall.AF_VENDOR25": "syscall", + "syscall.AF_VENDOR26": "syscall", + "syscall.AF_VENDOR27": "syscall", + "syscall.AF_VENDOR28": "syscall", + "syscall.AF_VENDOR29": "syscall", + "syscall.AF_VENDOR30": "syscall", + "syscall.AF_VENDOR31": "syscall", + "syscall.AF_VENDOR32": "syscall", + "syscall.AF_VENDOR33": "syscall", + "syscall.AF_VENDOR34": "syscall", + "syscall.AF_VENDOR35": "syscall", + "syscall.AF_VENDOR36": "syscall", + "syscall.AF_VENDOR37": "syscall", + "syscall.AF_VENDOR38": "syscall", + "syscall.AF_VENDOR39": "syscall", + "syscall.AF_VENDOR40": "syscall", + "syscall.AF_VENDOR41": "syscall", + "syscall.AF_VENDOR42": "syscall", + "syscall.AF_VENDOR43": "syscall", + "syscall.AF_VENDOR44": "syscall", + "syscall.AF_VENDOR45": "syscall", + "syscall.AF_VENDOR46": "syscall", + "syscall.AF_VENDOR47": "syscall", + "syscall.AF_WANPIPE": "syscall", + "syscall.AF_X25": "syscall", + "syscall.AI_CANONNAME": "syscall", + "syscall.AI_NUMERICHOST": "syscall", + "syscall.AI_PASSIVE": "syscall", + "syscall.APPLICATION_ERROR": "syscall", + "syscall.ARPHRD_ADAPT": "syscall", + "syscall.ARPHRD_APPLETLK": "syscall", + "syscall.ARPHRD_ARCNET": "syscall", + "syscall.ARPHRD_ASH": "syscall", + "syscall.ARPHRD_ATM": "syscall", + "syscall.ARPHRD_AX25": "syscall", + "syscall.ARPHRD_BIF": "syscall", + "syscall.ARPHRD_CHAOS": "syscall", + "syscall.ARPHRD_CISCO": "syscall", + "syscall.ARPHRD_CSLIP": "syscall", + "syscall.ARPHRD_CSLIP6": "syscall", + "syscall.ARPHRD_DDCMP": "syscall", + "syscall.ARPHRD_DLCI": "syscall", + "syscall.ARPHRD_ECONET": "syscall", + "syscall.ARPHRD_EETHER": "syscall", + "syscall.ARPHRD_ETHER": "syscall", + "syscall.ARPHRD_EUI64": "syscall", + "syscall.ARPHRD_FCAL": "syscall", + "syscall.ARPHRD_FCFABRIC": "syscall", + "syscall.ARPHRD_FCPL": "syscall", + "syscall.ARPHRD_FCPP": "syscall", + "syscall.ARPHRD_FDDI": "syscall", + "syscall.ARPHRD_FRAD": "syscall", + "syscall.ARPHRD_FRELAY": "syscall", + "syscall.ARPHRD_HDLC": "syscall", + "syscall.ARPHRD_HIPPI": "syscall", + "syscall.ARPHRD_HWX25": "syscall", + "syscall.ARPHRD_IEEE1394": "syscall", + "syscall.ARPHRD_IEEE802": "syscall", + "syscall.ARPHRD_IEEE80211": "syscall", + "syscall.ARPHRD_IEEE80211_PRISM": "syscall", + "syscall.ARPHRD_IEEE80211_RADIOTAP": "syscall", + "syscall.ARPHRD_IEEE802154": "syscall", + "syscall.ARPHRD_IEEE802154_PHY": "syscall", + "syscall.ARPHRD_IEEE802_TR": "syscall", + "syscall.ARPHRD_INFINIBAND": "syscall", + "syscall.ARPHRD_IPDDP": "syscall", + "syscall.ARPHRD_IPGRE": "syscall", + "syscall.ARPHRD_IRDA": "syscall", + "syscall.ARPHRD_LAPB": "syscall", + "syscall.ARPHRD_LOCALTLK": "syscall", + "syscall.ARPHRD_LOOPBACK": "syscall", + "syscall.ARPHRD_METRICOM": "syscall", + "syscall.ARPHRD_NETROM": "syscall", + "syscall.ARPHRD_NONE": "syscall", + "syscall.ARPHRD_PIMREG": "syscall", + "syscall.ARPHRD_PPP": "syscall", + "syscall.ARPHRD_PRONET": "syscall", + "syscall.ARPHRD_RAWHDLC": "syscall", + "syscall.ARPHRD_ROSE": "syscall", + "syscall.ARPHRD_RSRVD": "syscall", + "syscall.ARPHRD_SIT": "syscall", + "syscall.ARPHRD_SKIP": "syscall", + "syscall.ARPHRD_SLIP": "syscall", + "syscall.ARPHRD_SLIP6": "syscall", + "syscall.ARPHRD_STRIP": "syscall", + "syscall.ARPHRD_TUNNEL": "syscall", + "syscall.ARPHRD_TUNNEL6": "syscall", + "syscall.ARPHRD_VOID": "syscall", + "syscall.ARPHRD_X25": "syscall", + "syscall.AUTHTYPE_CLIENT": "syscall", + "syscall.AUTHTYPE_SERVER": "syscall", + "syscall.Accept": "syscall", + "syscall.Accept4": "syscall", + "syscall.AcceptEx": "syscall", + "syscall.Access": "syscall", + "syscall.Acct": "syscall", + "syscall.AddrinfoW": "syscall", + "syscall.Adjtime": "syscall", + "syscall.Adjtimex": "syscall", + "syscall.AttachLsf": "syscall", + "syscall.B0": "syscall", + "syscall.B1000000": "syscall", + "syscall.B110": "syscall", + "syscall.B115200": "syscall", + "syscall.B1152000": "syscall", + "syscall.B1200": "syscall", + "syscall.B134": "syscall", + "syscall.B14400": "syscall", + "syscall.B150": "syscall", + "syscall.B1500000": "syscall", + "syscall.B1800": "syscall", + "syscall.B19200": "syscall", + "syscall.B200": "syscall", + "syscall.B2000000": "syscall", + "syscall.B230400": "syscall", + "syscall.B2400": "syscall", + "syscall.B2500000": "syscall", + "syscall.B28800": "syscall", + "syscall.B300": "syscall", + "syscall.B3000000": "syscall", + "syscall.B3500000": "syscall", + "syscall.B38400": "syscall", + "syscall.B4000000": "syscall", + "syscall.B460800": "syscall", + "syscall.B4800": "syscall", + "syscall.B50": "syscall", + "syscall.B500000": "syscall", + "syscall.B57600": "syscall", + "syscall.B576000": "syscall", + "syscall.B600": "syscall", + "syscall.B7200": "syscall", + "syscall.B75": "syscall", + "syscall.B76800": "syscall", + "syscall.B921600": "syscall", + "syscall.B9600": "syscall", + "syscall.BASE_PROTOCOL": "syscall", + "syscall.BIOCFEEDBACK": "syscall", + "syscall.BIOCFLUSH": "syscall", + "syscall.BIOCGBLEN": "syscall", + "syscall.BIOCGDIRECTION": "syscall", + "syscall.BIOCGDIRFILT": "syscall", + "syscall.BIOCGDLT": "syscall", + "syscall.BIOCGDLTLIST": "syscall", + "syscall.BIOCGETBUFMODE": "syscall", + "syscall.BIOCGETIF": "syscall", + "syscall.BIOCGETZMAX": "syscall", + "syscall.BIOCGFEEDBACK": "syscall", + "syscall.BIOCGFILDROP": "syscall", + "syscall.BIOCGHDRCMPLT": "syscall", + "syscall.BIOCGRSIG": "syscall", + "syscall.BIOCGRTIMEOUT": "syscall", + "syscall.BIOCGSEESENT": "syscall", + "syscall.BIOCGSTATS": "syscall", + "syscall.BIOCGSTATSOLD": "syscall", + "syscall.BIOCGTSTAMP": "syscall", + "syscall.BIOCIMMEDIATE": "syscall", + "syscall.BIOCLOCK": "syscall", + "syscall.BIOCPROMISC": "syscall", + "syscall.BIOCROTZBUF": "syscall", + "syscall.BIOCSBLEN": "syscall", + "syscall.BIOCSDIRECTION": "syscall", + "syscall.BIOCSDIRFILT": "syscall", + "syscall.BIOCSDLT": "syscall", + "syscall.BIOCSETBUFMODE": "syscall", + "syscall.BIOCSETF": "syscall", + "syscall.BIOCSETFNR": "syscall", + "syscall.BIOCSETIF": "syscall", + "syscall.BIOCSETWF": "syscall", + "syscall.BIOCSETZBUF": "syscall", + "syscall.BIOCSFEEDBACK": "syscall", + "syscall.BIOCSFILDROP": "syscall", + "syscall.BIOCSHDRCMPLT": "syscall", + "syscall.BIOCSRSIG": "syscall", + "syscall.BIOCSRTIMEOUT": "syscall", + "syscall.BIOCSSEESENT": "syscall", + "syscall.BIOCSTCPF": "syscall", + "syscall.BIOCSTSTAMP": "syscall", + "syscall.BIOCSUDPF": "syscall", + "syscall.BIOCVERSION": "syscall", + "syscall.BPF_A": "syscall", + "syscall.BPF_ABS": "syscall", + "syscall.BPF_ADD": "syscall", + "syscall.BPF_ALIGNMENT": "syscall", + "syscall.BPF_ALIGNMENT32": "syscall", + "syscall.BPF_ALU": "syscall", + "syscall.BPF_AND": "syscall", + "syscall.BPF_B": "syscall", + "syscall.BPF_BUFMODE_BUFFER": "syscall", + "syscall.BPF_BUFMODE_ZBUF": "syscall", + "syscall.BPF_DFLTBUFSIZE": "syscall", + "syscall.BPF_DIRECTION_IN": "syscall", + "syscall.BPF_DIRECTION_OUT": "syscall", + "syscall.BPF_DIV": "syscall", + "syscall.BPF_H": "syscall", + "syscall.BPF_IMM": "syscall", + "syscall.BPF_IND": "syscall", + "syscall.BPF_JA": "syscall", + "syscall.BPF_JEQ": "syscall", + "syscall.BPF_JGE": "syscall", + "syscall.BPF_JGT": "syscall", + "syscall.BPF_JMP": "syscall", + "syscall.BPF_JSET": "syscall", + "syscall.BPF_K": "syscall", + "syscall.BPF_LD": "syscall", + "syscall.BPF_LDX": "syscall", + "syscall.BPF_LEN": "syscall", + "syscall.BPF_LSH": "syscall", + "syscall.BPF_MAJOR_VERSION": "syscall", + "syscall.BPF_MAXBUFSIZE": "syscall", + "syscall.BPF_MAXINSNS": "syscall", + "syscall.BPF_MEM": "syscall", + "syscall.BPF_MEMWORDS": "syscall", + "syscall.BPF_MINBUFSIZE": "syscall", + "syscall.BPF_MINOR_VERSION": "syscall", + "syscall.BPF_MISC": "syscall", + "syscall.BPF_MSH": "syscall", + "syscall.BPF_MUL": "syscall", + "syscall.BPF_NEG": "syscall", + "syscall.BPF_OR": "syscall", + "syscall.BPF_RELEASE": "syscall", + "syscall.BPF_RET": "syscall", + "syscall.BPF_RSH": "syscall", + "syscall.BPF_ST": "syscall", + "syscall.BPF_STX": "syscall", + "syscall.BPF_SUB": "syscall", + "syscall.BPF_TAX": "syscall", + "syscall.BPF_TXA": "syscall", + "syscall.BPF_T_BINTIME": "syscall", + "syscall.BPF_T_BINTIME_FAST": "syscall", + "syscall.BPF_T_BINTIME_MONOTONIC": "syscall", + "syscall.BPF_T_BINTIME_MONOTONIC_FAST": "syscall", + "syscall.BPF_T_FAST": "syscall", + "syscall.BPF_T_FLAG_MASK": "syscall", + "syscall.BPF_T_FORMAT_MASK": "syscall", + "syscall.BPF_T_MICROTIME": "syscall", + "syscall.BPF_T_MICROTIME_FAST": "syscall", + "syscall.BPF_T_MICROTIME_MONOTONIC": "syscall", + "syscall.BPF_T_MICROTIME_MONOTONIC_FAST": "syscall", + "syscall.BPF_T_MONOTONIC": "syscall", + "syscall.BPF_T_MONOTONIC_FAST": "syscall", + "syscall.BPF_T_NANOTIME": "syscall", + "syscall.BPF_T_NANOTIME_FAST": "syscall", + "syscall.BPF_T_NANOTIME_MONOTONIC": "syscall", + "syscall.BPF_T_NANOTIME_MONOTONIC_FAST": "syscall", + "syscall.BPF_T_NONE": "syscall", + "syscall.BPF_T_NORMAL": "syscall", + "syscall.BPF_W": "syscall", + "syscall.BPF_X": "syscall", + "syscall.BRKINT": "syscall", + "syscall.Bind": "syscall", + "syscall.BindToDevice": "syscall", + "syscall.BpfBuflen": "syscall", + "syscall.BpfDatalink": "syscall", + "syscall.BpfHdr": "syscall", + "syscall.BpfHeadercmpl": "syscall", + "syscall.BpfInsn": "syscall", + "syscall.BpfInterface": "syscall", + "syscall.BpfJump": "syscall", + "syscall.BpfProgram": "syscall", + "syscall.BpfStat": "syscall", + "syscall.BpfStats": "syscall", + "syscall.BpfStmt": "syscall", + "syscall.BpfTimeout": "syscall", + "syscall.BpfTimeval": "syscall", + "syscall.BpfVersion": "syscall", + "syscall.BpfZbuf": "syscall", + "syscall.BpfZbufHeader": "syscall", + "syscall.ByHandleFileInformation": "syscall", + "syscall.BytePtrFromString": "syscall", + "syscall.ByteSliceFromString": "syscall", + "syscall.CCR0_FLUSH": "syscall", + "syscall.CERT_CHAIN_POLICY_AUTHENTICODE": "syscall", + "syscall.CERT_CHAIN_POLICY_AUTHENTICODE_TS": "syscall", + "syscall.CERT_CHAIN_POLICY_BASE": "syscall", + "syscall.CERT_CHAIN_POLICY_BASIC_CONSTRAINTS": "syscall", + "syscall.CERT_CHAIN_POLICY_EV": "syscall", + "syscall.CERT_CHAIN_POLICY_MICROSOFT_ROOT": "syscall", + "syscall.CERT_CHAIN_POLICY_NT_AUTH": "syscall", + "syscall.CERT_CHAIN_POLICY_SSL": "syscall", + "syscall.CERT_E_CN_NO_MATCH": "syscall", + "syscall.CERT_E_EXPIRED": "syscall", + "syscall.CERT_E_PURPOSE": "syscall", + "syscall.CERT_E_ROLE": "syscall", + "syscall.CERT_E_UNTRUSTEDROOT": "syscall", + "syscall.CERT_STORE_ADD_ALWAYS": "syscall", + "syscall.CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG": "syscall", + "syscall.CERT_STORE_PROV_MEMORY": "syscall", + "syscall.CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT": "syscall", + "syscall.CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT": "syscall", + "syscall.CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT": "syscall", + "syscall.CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT": "syscall", + "syscall.CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT": "syscall", + "syscall.CERT_TRUST_INVALID_BASIC_CONSTRAINTS": "syscall", + "syscall.CERT_TRUST_INVALID_EXTENSION": "syscall", + "syscall.CERT_TRUST_INVALID_NAME_CONSTRAINTS": "syscall", + "syscall.CERT_TRUST_INVALID_POLICY_CONSTRAINTS": "syscall", + "syscall.CERT_TRUST_IS_CYCLIC": "syscall", + "syscall.CERT_TRUST_IS_EXPLICIT_DISTRUST": "syscall", + "syscall.CERT_TRUST_IS_NOT_SIGNATURE_VALID": "syscall", + "syscall.CERT_TRUST_IS_NOT_TIME_VALID": "syscall", + "syscall.CERT_TRUST_IS_NOT_VALID_FOR_USAGE": "syscall", + "syscall.CERT_TRUST_IS_OFFLINE_REVOCATION": "syscall", + "syscall.CERT_TRUST_IS_REVOKED": "syscall", + "syscall.CERT_TRUST_IS_UNTRUSTED_ROOT": "syscall", + "syscall.CERT_TRUST_NO_ERROR": "syscall", + "syscall.CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY": "syscall", + "syscall.CERT_TRUST_REVOCATION_STATUS_UNKNOWN": "syscall", + "syscall.CFLUSH": "syscall", + "syscall.CLOCAL": "syscall", + "syscall.CLONE_CHILD_CLEARTID": "syscall", + "syscall.CLONE_CHILD_SETTID": "syscall", + "syscall.CLONE_CSIGNAL": "syscall", + "syscall.CLONE_DETACHED": "syscall", + "syscall.CLONE_FILES": "syscall", + "syscall.CLONE_FS": "syscall", + "syscall.CLONE_IO": "syscall", + "syscall.CLONE_NEWIPC": "syscall", + "syscall.CLONE_NEWNET": "syscall", + "syscall.CLONE_NEWNS": "syscall", + "syscall.CLONE_NEWPID": "syscall", + "syscall.CLONE_NEWUSER": "syscall", + "syscall.CLONE_NEWUTS": "syscall", + "syscall.CLONE_PARENT": "syscall", + "syscall.CLONE_PARENT_SETTID": "syscall", + "syscall.CLONE_PID": "syscall", + "syscall.CLONE_PTRACE": "syscall", + "syscall.CLONE_SETTLS": "syscall", + "syscall.CLONE_SIGHAND": "syscall", + "syscall.CLONE_SYSVSEM": "syscall", + "syscall.CLONE_THREAD": "syscall", + "syscall.CLONE_UNTRACED": "syscall", + "syscall.CLONE_VFORK": "syscall", + "syscall.CLONE_VM": "syscall", + "syscall.CPUID_CFLUSH": "syscall", + "syscall.CREAD": "syscall", + "syscall.CREATE_ALWAYS": "syscall", + "syscall.CREATE_NEW": "syscall", + "syscall.CREATE_NEW_PROCESS_GROUP": "syscall", + "syscall.CREATE_UNICODE_ENVIRONMENT": "syscall", + "syscall.CRYPT_DEFAULT_CONTAINER_OPTIONAL": "syscall", + "syscall.CRYPT_DELETEKEYSET": "syscall", + "syscall.CRYPT_MACHINE_KEYSET": "syscall", + "syscall.CRYPT_NEWKEYSET": "syscall", + "syscall.CRYPT_SILENT": "syscall", + "syscall.CRYPT_VERIFYCONTEXT": "syscall", + "syscall.CS5": "syscall", + "syscall.CS6": "syscall", + "syscall.CS7": "syscall", + "syscall.CS8": "syscall", + "syscall.CSIZE": "syscall", + "syscall.CSTART": "syscall", + "syscall.CSTATUS": "syscall", + "syscall.CSTOP": "syscall", + "syscall.CSTOPB": "syscall", + "syscall.CSUSP": "syscall", + "syscall.CTL_MAXNAME": "syscall", + "syscall.CTL_NET": "syscall", + "syscall.CTL_QUERY": "syscall", + "syscall.CTRL_BREAK_EVENT": "syscall", + "syscall.CTRL_C_EVENT": "syscall", + "syscall.CancelIo": "syscall", + "syscall.CancelIoEx": "syscall", + "syscall.CertAddCertificateContextToStore": "syscall", + "syscall.CertChainContext": "syscall", + "syscall.CertChainElement": "syscall", + "syscall.CertChainPara": "syscall", + "syscall.CertChainPolicyPara": "syscall", + "syscall.CertChainPolicyStatus": "syscall", + "syscall.CertCloseStore": "syscall", + "syscall.CertContext": "syscall", + "syscall.CertCreateCertificateContext": "syscall", + "syscall.CertEnhKeyUsage": "syscall", + "syscall.CertEnumCertificatesInStore": "syscall", + "syscall.CertFreeCertificateChain": "syscall", + "syscall.CertFreeCertificateContext": "syscall", + "syscall.CertGetCertificateChain": "syscall", + "syscall.CertOpenStore": "syscall", + "syscall.CertOpenSystemStore": "syscall", + "syscall.CertRevocationInfo": "syscall", + "syscall.CertSimpleChain": "syscall", + "syscall.CertTrustStatus": "syscall", + "syscall.CertUsageMatch": "syscall", + "syscall.CertVerifyCertificateChainPolicy": "syscall", + "syscall.Chdir": "syscall", + "syscall.CheckBpfVersion": "syscall", + "syscall.Chflags": "syscall", + "syscall.Chmod": "syscall", + "syscall.Chown": "syscall", + "syscall.Chroot": "syscall", + "syscall.Clearenv": "syscall", + "syscall.Close": "syscall", + "syscall.CloseHandle": "syscall", + "syscall.CloseOnExec": "syscall", + "syscall.Closesocket": "syscall", + "syscall.CmsgLen": "syscall", + "syscall.CmsgSpace": "syscall", + "syscall.Cmsghdr": "syscall", + "syscall.CommandLineToArgv": "syscall", + "syscall.ComputerName": "syscall", + "syscall.Connect": "syscall", + "syscall.ConnectEx": "syscall", + "syscall.ConvertSidToStringSid": "syscall", + "syscall.ConvertStringSidToSid": "syscall", + "syscall.CopySid": "syscall", + "syscall.Creat": "syscall", + "syscall.CreateDirectory": "syscall", + "syscall.CreateFile": "syscall", + "syscall.CreateFileMapping": "syscall", + "syscall.CreateHardLink": "syscall", + "syscall.CreateIoCompletionPort": "syscall", + "syscall.CreatePipe": "syscall", + "syscall.CreateProcess": "syscall", + "syscall.CreateSymbolicLink": "syscall", + "syscall.CreateToolhelp32Snapshot": "syscall", + "syscall.Credential": "syscall", + "syscall.CryptAcquireContext": "syscall", + "syscall.CryptGenRandom": "syscall", + "syscall.CryptReleaseContext": "syscall", + "syscall.DIOCBSFLUSH": "syscall", + "syscall.DIOCOSFPFLUSH": "syscall", + "syscall.DLL": "syscall", + "syscall.DLLError": "syscall", + "syscall.DLT_A429": "syscall", + "syscall.DLT_A653_ICM": "syscall", + "syscall.DLT_AIRONET_HEADER": "syscall", + "syscall.DLT_AOS": "syscall", + "syscall.DLT_APPLE_IP_OVER_IEEE1394": "syscall", + "syscall.DLT_ARCNET": "syscall", + "syscall.DLT_ARCNET_LINUX": "syscall", + "syscall.DLT_ATM_CLIP": "syscall", + "syscall.DLT_ATM_RFC1483": "syscall", + "syscall.DLT_AURORA": "syscall", + "syscall.DLT_AX25": "syscall", + "syscall.DLT_AX25_KISS": "syscall", + "syscall.DLT_BACNET_MS_TP": "syscall", + "syscall.DLT_BLUETOOTH_HCI_H4": "syscall", + "syscall.DLT_BLUETOOTH_HCI_H4_WITH_PHDR": "syscall", + "syscall.DLT_CAN20B": "syscall", + "syscall.DLT_CAN_SOCKETCAN": "syscall", + "syscall.DLT_CHAOS": "syscall", + "syscall.DLT_CHDLC": "syscall", + "syscall.DLT_CISCO_IOS": "syscall", + "syscall.DLT_C_HDLC": "syscall", + "syscall.DLT_C_HDLC_WITH_DIR": "syscall", + "syscall.DLT_DBUS": "syscall", + "syscall.DLT_DECT": "syscall", + "syscall.DLT_DOCSIS": "syscall", + "syscall.DLT_DVB_CI": "syscall", + "syscall.DLT_ECONET": "syscall", + "syscall.DLT_EN10MB": "syscall", + "syscall.DLT_EN3MB": "syscall", + "syscall.DLT_ENC": "syscall", + "syscall.DLT_ERF": "syscall", + "syscall.DLT_ERF_ETH": "syscall", + "syscall.DLT_ERF_POS": "syscall", + "syscall.DLT_FC_2": "syscall", + "syscall.DLT_FC_2_WITH_FRAME_DELIMS": "syscall", + "syscall.DLT_FDDI": "syscall", + "syscall.DLT_FLEXRAY": "syscall", + "syscall.DLT_FRELAY": "syscall", + "syscall.DLT_FRELAY_WITH_DIR": "syscall", + "syscall.DLT_GCOM_SERIAL": "syscall", + "syscall.DLT_GCOM_T1E1": "syscall", + "syscall.DLT_GPF_F": "syscall", + "syscall.DLT_GPF_T": "syscall", + "syscall.DLT_GPRS_LLC": "syscall", + "syscall.DLT_GSMTAP_ABIS": "syscall", + "syscall.DLT_GSMTAP_UM": "syscall", + "syscall.DLT_HDLC": "syscall", + "syscall.DLT_HHDLC": "syscall", + "syscall.DLT_HIPPI": "syscall", + "syscall.DLT_IBM_SN": "syscall", + "syscall.DLT_IBM_SP": "syscall", + "syscall.DLT_IEEE802": "syscall", + "syscall.DLT_IEEE802_11": "syscall", + "syscall.DLT_IEEE802_11_RADIO": "syscall", + "syscall.DLT_IEEE802_11_RADIO_AVS": "syscall", + "syscall.DLT_IEEE802_15_4": "syscall", + "syscall.DLT_IEEE802_15_4_LINUX": "syscall", + "syscall.DLT_IEEE802_15_4_NOFCS": "syscall", + "syscall.DLT_IEEE802_15_4_NONASK_PHY": "syscall", + "syscall.DLT_IEEE802_16_MAC_CPS": "syscall", + "syscall.DLT_IEEE802_16_MAC_CPS_RADIO": "syscall", + "syscall.DLT_IPFILTER": "syscall", + "syscall.DLT_IPMB": "syscall", + "syscall.DLT_IPMB_LINUX": "syscall", + "syscall.DLT_IPNET": "syscall", + "syscall.DLT_IPOIB": "syscall", + "syscall.DLT_IPV4": "syscall", + "syscall.DLT_IPV6": "syscall", + "syscall.DLT_IP_OVER_FC": "syscall", + "syscall.DLT_JUNIPER_ATM1": "syscall", + "syscall.DLT_JUNIPER_ATM2": "syscall", + "syscall.DLT_JUNIPER_ATM_CEMIC": "syscall", + "syscall.DLT_JUNIPER_CHDLC": "syscall", + "syscall.DLT_JUNIPER_ES": "syscall", + "syscall.DLT_JUNIPER_ETHER": "syscall", + "syscall.DLT_JUNIPER_FIBRECHANNEL": "syscall", + "syscall.DLT_JUNIPER_FRELAY": "syscall", + "syscall.DLT_JUNIPER_GGSN": "syscall", + "syscall.DLT_JUNIPER_ISM": "syscall", + "syscall.DLT_JUNIPER_MFR": "syscall", + "syscall.DLT_JUNIPER_MLFR": "syscall", + "syscall.DLT_JUNIPER_MLPPP": "syscall", + "syscall.DLT_JUNIPER_MONITOR": "syscall", + "syscall.DLT_JUNIPER_PIC_PEER": "syscall", + "syscall.DLT_JUNIPER_PPP": "syscall", + "syscall.DLT_JUNIPER_PPPOE": "syscall", + "syscall.DLT_JUNIPER_PPPOE_ATM": "syscall", + "syscall.DLT_JUNIPER_SERVICES": "syscall", + "syscall.DLT_JUNIPER_SRX_E2E": "syscall", + "syscall.DLT_JUNIPER_ST": "syscall", + "syscall.DLT_JUNIPER_VP": "syscall", + "syscall.DLT_JUNIPER_VS": "syscall", + "syscall.DLT_LAPB_WITH_DIR": "syscall", + "syscall.DLT_LAPD": "syscall", + "syscall.DLT_LIN": "syscall", + "syscall.DLT_LINUX_EVDEV": "syscall", + "syscall.DLT_LINUX_IRDA": "syscall", + "syscall.DLT_LINUX_LAPD": "syscall", + "syscall.DLT_LINUX_PPP_WITHDIRECTION": "syscall", + "syscall.DLT_LINUX_SLL": "syscall", + "syscall.DLT_LOOP": "syscall", + "syscall.DLT_LTALK": "syscall", + "syscall.DLT_MATCHING_MAX": "syscall", + "syscall.DLT_MATCHING_MIN": "syscall", + "syscall.DLT_MFR": "syscall", + "syscall.DLT_MOST": "syscall", + "syscall.DLT_MPEG_2_TS": "syscall", + "syscall.DLT_MPLS": "syscall", + "syscall.DLT_MTP2": "syscall", + "syscall.DLT_MTP2_WITH_PHDR": "syscall", + "syscall.DLT_MTP3": "syscall", + "syscall.DLT_MUX27010": "syscall", + "syscall.DLT_NETANALYZER": "syscall", + "syscall.DLT_NETANALYZER_TRANSPARENT": "syscall", + "syscall.DLT_NFC_LLCP": "syscall", + "syscall.DLT_NFLOG": "syscall", + "syscall.DLT_NG40": "syscall", + "syscall.DLT_NULL": "syscall", + "syscall.DLT_PCI_EXP": "syscall", + "syscall.DLT_PFLOG": "syscall", + "syscall.DLT_PFSYNC": "syscall", + "syscall.DLT_PPI": "syscall", + "syscall.DLT_PPP": "syscall", + "syscall.DLT_PPP_BSDOS": "syscall", + "syscall.DLT_PPP_ETHER": "syscall", + "syscall.DLT_PPP_PPPD": "syscall", + "syscall.DLT_PPP_SERIAL": "syscall", + "syscall.DLT_PPP_WITH_DIR": "syscall", + "syscall.DLT_PPP_WITH_DIRECTION": "syscall", + "syscall.DLT_PRISM_HEADER": "syscall", + "syscall.DLT_PRONET": "syscall", + "syscall.DLT_RAIF1": "syscall", + "syscall.DLT_RAW": "syscall", + "syscall.DLT_RAWAF_MASK": "syscall", + "syscall.DLT_RIO": "syscall", + "syscall.DLT_SCCP": "syscall", + "syscall.DLT_SITA": "syscall", + "syscall.DLT_SLIP": "syscall", + "syscall.DLT_SLIP_BSDOS": "syscall", + "syscall.DLT_STANAG_5066_D_PDU": "syscall", + "syscall.DLT_SUNATM": "syscall", + "syscall.DLT_SYMANTEC_FIREWALL": "syscall", + "syscall.DLT_TZSP": "syscall", + "syscall.DLT_USB": "syscall", + "syscall.DLT_USB_LINUX": "syscall", + "syscall.DLT_USB_LINUX_MMAPPED": "syscall", + "syscall.DLT_USER0": "syscall", + "syscall.DLT_USER1": "syscall", + "syscall.DLT_USER10": "syscall", + "syscall.DLT_USER11": "syscall", + "syscall.DLT_USER12": "syscall", + "syscall.DLT_USER13": "syscall", + "syscall.DLT_USER14": "syscall", + "syscall.DLT_USER15": "syscall", + "syscall.DLT_USER2": "syscall", + "syscall.DLT_USER3": "syscall", + "syscall.DLT_USER4": "syscall", + "syscall.DLT_USER5": "syscall", + "syscall.DLT_USER6": "syscall", + "syscall.DLT_USER7": "syscall", + "syscall.DLT_USER8": "syscall", + "syscall.DLT_USER9": "syscall", + "syscall.DLT_WIHART": "syscall", + "syscall.DLT_X2E_SERIAL": "syscall", + "syscall.DLT_X2E_XORAYA": "syscall", + "syscall.DNSMXData": "syscall", + "syscall.DNSPTRData": "syscall", + "syscall.DNSRecord": "syscall", + "syscall.DNSSRVData": "syscall", + "syscall.DNSTXTData": "syscall", + "syscall.DNS_INFO_NO_RECORDS": "syscall", + "syscall.DNS_TYPE_A": "syscall", + "syscall.DNS_TYPE_A6": "syscall", + "syscall.DNS_TYPE_AAAA": "syscall", + "syscall.DNS_TYPE_ADDRS": "syscall", + "syscall.DNS_TYPE_AFSDB": "syscall", + "syscall.DNS_TYPE_ALL": "syscall", + "syscall.DNS_TYPE_ANY": "syscall", + "syscall.DNS_TYPE_ATMA": "syscall", + "syscall.DNS_TYPE_AXFR": "syscall", + "syscall.DNS_TYPE_CERT": "syscall", + "syscall.DNS_TYPE_CNAME": "syscall", + "syscall.DNS_TYPE_DHCID": "syscall", + "syscall.DNS_TYPE_DNAME": "syscall", + "syscall.DNS_TYPE_DNSKEY": "syscall", + "syscall.DNS_TYPE_DS": "syscall", + "syscall.DNS_TYPE_EID": "syscall", + "syscall.DNS_TYPE_GID": "syscall", + "syscall.DNS_TYPE_GPOS": "syscall", + "syscall.DNS_TYPE_HINFO": "syscall", + "syscall.DNS_TYPE_ISDN": "syscall", + "syscall.DNS_TYPE_IXFR": "syscall", + "syscall.DNS_TYPE_KEY": "syscall", + "syscall.DNS_TYPE_KX": "syscall", + "syscall.DNS_TYPE_LOC": "syscall", + "syscall.DNS_TYPE_MAILA": "syscall", + "syscall.DNS_TYPE_MAILB": "syscall", + "syscall.DNS_TYPE_MB": "syscall", + "syscall.DNS_TYPE_MD": "syscall", + "syscall.DNS_TYPE_MF": "syscall", + "syscall.DNS_TYPE_MG": "syscall", + "syscall.DNS_TYPE_MINFO": "syscall", + "syscall.DNS_TYPE_MR": "syscall", + "syscall.DNS_TYPE_MX": "syscall", + "syscall.DNS_TYPE_NAPTR": "syscall", + "syscall.DNS_TYPE_NBSTAT": "syscall", + "syscall.DNS_TYPE_NIMLOC": "syscall", + "syscall.DNS_TYPE_NS": "syscall", + "syscall.DNS_TYPE_NSAP": "syscall", + "syscall.DNS_TYPE_NSAPPTR": "syscall", + "syscall.DNS_TYPE_NSEC": "syscall", + "syscall.DNS_TYPE_NULL": "syscall", + "syscall.DNS_TYPE_NXT": "syscall", + "syscall.DNS_TYPE_OPT": "syscall", + "syscall.DNS_TYPE_PTR": "syscall", + "syscall.DNS_TYPE_PX": "syscall", + "syscall.DNS_TYPE_RP": "syscall", + "syscall.DNS_TYPE_RRSIG": "syscall", + "syscall.DNS_TYPE_RT": "syscall", + "syscall.DNS_TYPE_SIG": "syscall", + "syscall.DNS_TYPE_SINK": "syscall", + "syscall.DNS_TYPE_SOA": "syscall", + "syscall.DNS_TYPE_SRV": "syscall", + "syscall.DNS_TYPE_TEXT": "syscall", + "syscall.DNS_TYPE_TKEY": "syscall", + "syscall.DNS_TYPE_TSIG": "syscall", + "syscall.DNS_TYPE_UID": "syscall", + "syscall.DNS_TYPE_UINFO": "syscall", + "syscall.DNS_TYPE_UNSPEC": "syscall", + "syscall.DNS_TYPE_WINS": "syscall", + "syscall.DNS_TYPE_WINSR": "syscall", + "syscall.DNS_TYPE_WKS": "syscall", + "syscall.DNS_TYPE_X25": "syscall", + "syscall.DT_BLK": "syscall", + "syscall.DT_CHR": "syscall", + "syscall.DT_DIR": "syscall", + "syscall.DT_FIFO": "syscall", + "syscall.DT_LNK": "syscall", + "syscall.DT_REG": "syscall", + "syscall.DT_SOCK": "syscall", + "syscall.DT_UNKNOWN": "syscall", + "syscall.DT_WHT": "syscall", + "syscall.DUPLICATE_CLOSE_SOURCE": "syscall", + "syscall.DUPLICATE_SAME_ACCESS": "syscall", + "syscall.DeleteFile": "syscall", + "syscall.DetachLsf": "syscall", + "syscall.DeviceIoControl": "syscall", + "syscall.Dirent": "syscall", + "syscall.DnsNameCompare": "syscall", + "syscall.DnsQuery": "syscall", + "syscall.DnsRecordListFree": "syscall", + "syscall.DnsSectionAdditional": "syscall", + "syscall.DnsSectionAnswer": "syscall", + "syscall.DnsSectionAuthority": "syscall", + "syscall.DnsSectionQuestion": "syscall", + "syscall.Dup": "syscall", + "syscall.Dup2": "syscall", + "syscall.Dup3": "syscall", + "syscall.DuplicateHandle": "syscall", + "syscall.E2BIG": "syscall", + "syscall.EACCES": "syscall", + "syscall.EADDRINUSE": "syscall", + "syscall.EADDRNOTAVAIL": "syscall", + "syscall.EADV": "syscall", + "syscall.EAFNOSUPPORT": "syscall", + "syscall.EAGAIN": "syscall", + "syscall.EALREADY": "syscall", + "syscall.EAUTH": "syscall", + "syscall.EBADARCH": "syscall", + "syscall.EBADE": "syscall", + "syscall.EBADEXEC": "syscall", + "syscall.EBADF": "syscall", + "syscall.EBADFD": "syscall", + "syscall.EBADMACHO": "syscall", + "syscall.EBADMSG": "syscall", + "syscall.EBADR": "syscall", + "syscall.EBADRPC": "syscall", + "syscall.EBADRQC": "syscall", + "syscall.EBADSLT": "syscall", + "syscall.EBFONT": "syscall", + "syscall.EBUSY": "syscall", + "syscall.ECANCELED": "syscall", + "syscall.ECAPMODE": "syscall", + "syscall.ECHILD": "syscall", + "syscall.ECHO": "syscall", + "syscall.ECHOCTL": "syscall", + "syscall.ECHOE": "syscall", + "syscall.ECHOK": "syscall", + "syscall.ECHOKE": "syscall", + "syscall.ECHONL": "syscall", + "syscall.ECHOPRT": "syscall", + "syscall.ECHRNG": "syscall", + "syscall.ECOMM": "syscall", + "syscall.ECONNABORTED": "syscall", + "syscall.ECONNREFUSED": "syscall", + "syscall.ECONNRESET": "syscall", + "syscall.EDEADLK": "syscall", + "syscall.EDEADLOCK": "syscall", + "syscall.EDESTADDRREQ": "syscall", + "syscall.EDEVERR": "syscall", + "syscall.EDOM": "syscall", + "syscall.EDOOFUS": "syscall", + "syscall.EDOTDOT": "syscall", + "syscall.EDQUOT": "syscall", + "syscall.EEXIST": "syscall", + "syscall.EFAULT": "syscall", + "syscall.EFBIG": "syscall", + "syscall.EFER_LMA": "syscall", + "syscall.EFER_LME": "syscall", + "syscall.EFER_NXE": "syscall", + "syscall.EFER_SCE": "syscall", + "syscall.EFTYPE": "syscall", + "syscall.EHOSTDOWN": "syscall", + "syscall.EHOSTUNREACH": "syscall", + "syscall.EHWPOISON": "syscall", + "syscall.EIDRM": "syscall", + "syscall.EILSEQ": "syscall", + "syscall.EINPROGRESS": "syscall", + "syscall.EINTR": "syscall", + "syscall.EINVAL": "syscall", + "syscall.EIO": "syscall", + "syscall.EIPSEC": "syscall", + "syscall.EISCONN": "syscall", + "syscall.EISDIR": "syscall", + "syscall.EISNAM": "syscall", + "syscall.EKEYEXPIRED": "syscall", + "syscall.EKEYREJECTED": "syscall", + "syscall.EKEYREVOKED": "syscall", + "syscall.EL2HLT": "syscall", + "syscall.EL2NSYNC": "syscall", + "syscall.EL3HLT": "syscall", + "syscall.EL3RST": "syscall", + "syscall.ELAST": "syscall", + "syscall.ELF_NGREG": "syscall", + "syscall.ELF_PRARGSZ": "syscall", + "syscall.ELIBACC": "syscall", + "syscall.ELIBBAD": "syscall", + "syscall.ELIBEXEC": "syscall", + "syscall.ELIBMAX": "syscall", + "syscall.ELIBSCN": "syscall", + "syscall.ELNRNG": "syscall", + "syscall.ELOOP": "syscall", + "syscall.EMEDIUMTYPE": "syscall", + "syscall.EMFILE": "syscall", + "syscall.EMLINK": "syscall", + "syscall.EMSGSIZE": "syscall", + "syscall.EMT_TAGOVF": "syscall", + "syscall.EMULTIHOP": "syscall", + "syscall.EMUL_ENABLED": "syscall", + "syscall.EMUL_LINUX": "syscall", + "syscall.EMUL_LINUX32": "syscall", + "syscall.EMUL_MAXID": "syscall", + "syscall.EMUL_NATIVE": "syscall", + "syscall.ENAMETOOLONG": "syscall", + "syscall.ENAVAIL": "syscall", + "syscall.ENDRUNDISC": "syscall", + "syscall.ENEEDAUTH": "syscall", + "syscall.ENETDOWN": "syscall", + "syscall.ENETRESET": "syscall", + "syscall.ENETUNREACH": "syscall", + "syscall.ENFILE": "syscall", + "syscall.ENOANO": "syscall", + "syscall.ENOATTR": "syscall", + "syscall.ENOBUFS": "syscall", + "syscall.ENOCSI": "syscall", + "syscall.ENODATA": "syscall", + "syscall.ENODEV": "syscall", + "syscall.ENOENT": "syscall", + "syscall.ENOEXEC": "syscall", + "syscall.ENOKEY": "syscall", + "syscall.ENOLCK": "syscall", + "syscall.ENOLINK": "syscall", + "syscall.ENOMEDIUM": "syscall", + "syscall.ENOMEM": "syscall", + "syscall.ENOMSG": "syscall", + "syscall.ENONET": "syscall", + "syscall.ENOPKG": "syscall", + "syscall.ENOPOLICY": "syscall", + "syscall.ENOPROTOOPT": "syscall", + "syscall.ENOSPC": "syscall", + "syscall.ENOSR": "syscall", + "syscall.ENOSTR": "syscall", + "syscall.ENOSYS": "syscall", + "syscall.ENOTBLK": "syscall", + "syscall.ENOTCAPABLE": "syscall", + "syscall.ENOTCONN": "syscall", + "syscall.ENOTDIR": "syscall", + "syscall.ENOTEMPTY": "syscall", + "syscall.ENOTNAM": "syscall", + "syscall.ENOTRECOVERABLE": "syscall", + "syscall.ENOTSOCK": "syscall", + "syscall.ENOTSUP": "syscall", + "syscall.ENOTTY": "syscall", + "syscall.ENOTUNIQ": "syscall", + "syscall.ENXIO": "syscall", + "syscall.EN_SW_CTL_INF": "syscall", + "syscall.EN_SW_CTL_PREC": "syscall", + "syscall.EN_SW_CTL_ROUND": "syscall", + "syscall.EN_SW_DATACHAIN": "syscall", + "syscall.EN_SW_DENORM": "syscall", + "syscall.EN_SW_INVOP": "syscall", + "syscall.EN_SW_OVERFLOW": "syscall", + "syscall.EN_SW_PRECLOSS": "syscall", + "syscall.EN_SW_UNDERFLOW": "syscall", + "syscall.EN_SW_ZERODIV": "syscall", + "syscall.EOPNOTSUPP": "syscall", + "syscall.EOVERFLOW": "syscall", + "syscall.EOWNERDEAD": "syscall", + "syscall.EPERM": "syscall", + "syscall.EPFNOSUPPORT": "syscall", + "syscall.EPIPE": "syscall", + "syscall.EPOLLERR": "syscall", + "syscall.EPOLLET": "syscall", + "syscall.EPOLLHUP": "syscall", + "syscall.EPOLLIN": "syscall", + "syscall.EPOLLMSG": "syscall", + "syscall.EPOLLONESHOT": "syscall", + "syscall.EPOLLOUT": "syscall", + "syscall.EPOLLPRI": "syscall", + "syscall.EPOLLRDBAND": "syscall", + "syscall.EPOLLRDHUP": "syscall", + "syscall.EPOLLRDNORM": "syscall", + "syscall.EPOLLWRBAND": "syscall", + "syscall.EPOLLWRNORM": "syscall", + "syscall.EPOLL_CLOEXEC": "syscall", + "syscall.EPOLL_CTL_ADD": "syscall", + "syscall.EPOLL_CTL_DEL": "syscall", + "syscall.EPOLL_CTL_MOD": "syscall", + "syscall.EPOLL_NONBLOCK": "syscall", + "syscall.EPROCLIM": "syscall", + "syscall.EPROCUNAVAIL": "syscall", + "syscall.EPROGMISMATCH": "syscall", + "syscall.EPROGUNAVAIL": "syscall", + "syscall.EPROTO": "syscall", + "syscall.EPROTONOSUPPORT": "syscall", + "syscall.EPROTOTYPE": "syscall", + "syscall.EPWROFF": "syscall", + "syscall.ERANGE": "syscall", + "syscall.EREMCHG": "syscall", + "syscall.EREMOTE": "syscall", + "syscall.EREMOTEIO": "syscall", + "syscall.ERESTART": "syscall", + "syscall.ERFKILL": "syscall", + "syscall.EROFS": "syscall", + "syscall.ERPCMISMATCH": "syscall", + "syscall.ERROR_ACCESS_DENIED": "syscall", + "syscall.ERROR_ALREADY_EXISTS": "syscall", + "syscall.ERROR_BROKEN_PIPE": "syscall", + "syscall.ERROR_BUFFER_OVERFLOW": "syscall", + "syscall.ERROR_ENVVAR_NOT_FOUND": "syscall", + "syscall.ERROR_FILE_EXISTS": "syscall", + "syscall.ERROR_FILE_NOT_FOUND": "syscall", + "syscall.ERROR_HANDLE_EOF": "syscall", + "syscall.ERROR_INSUFFICIENT_BUFFER": "syscall", + "syscall.ERROR_IO_PENDING": "syscall", + "syscall.ERROR_MOD_NOT_FOUND": "syscall", + "syscall.ERROR_MORE_DATA": "syscall", + "syscall.ERROR_NETNAME_DELETED": "syscall", + "syscall.ERROR_NOT_FOUND": "syscall", + "syscall.ERROR_NO_MORE_FILES": "syscall", + "syscall.ERROR_OPERATION_ABORTED": "syscall", + "syscall.ERROR_PATH_NOT_FOUND": "syscall", + "syscall.ERROR_PRIVILEGE_NOT_HELD": "syscall", + "syscall.ERROR_PROC_NOT_FOUND": "syscall", + "syscall.ESHLIBVERS": "syscall", + "syscall.ESHUTDOWN": "syscall", + "syscall.ESOCKTNOSUPPORT": "syscall", + "syscall.ESPIPE": "syscall", + "syscall.ESRCH": "syscall", + "syscall.ESRMNT": "syscall", + "syscall.ESTALE": "syscall", + "syscall.ESTRPIPE": "syscall", + "syscall.ETHERCAP_JUMBO_MTU": "syscall", + "syscall.ETHERCAP_VLAN_HWTAGGING": "syscall", + "syscall.ETHERCAP_VLAN_MTU": "syscall", + "syscall.ETHERMIN": "syscall", + "syscall.ETHERMTU": "syscall", + "syscall.ETHERMTU_JUMBO": "syscall", + "syscall.ETHERTYPE_8023": "syscall", + "syscall.ETHERTYPE_AARP": "syscall", + "syscall.ETHERTYPE_ACCTON": "syscall", + "syscall.ETHERTYPE_AEONIC": "syscall", + "syscall.ETHERTYPE_ALPHA": "syscall", + "syscall.ETHERTYPE_AMBER": "syscall", + "syscall.ETHERTYPE_AMOEBA": "syscall", + "syscall.ETHERTYPE_AOE": "syscall", + "syscall.ETHERTYPE_APOLLO": "syscall", + "syscall.ETHERTYPE_APOLLODOMAIN": "syscall", + "syscall.ETHERTYPE_APPLETALK": "syscall", + "syscall.ETHERTYPE_APPLITEK": "syscall", + "syscall.ETHERTYPE_ARGONAUT": "syscall", + "syscall.ETHERTYPE_ARP": "syscall", + "syscall.ETHERTYPE_AT": "syscall", + "syscall.ETHERTYPE_ATALK": "syscall", + "syscall.ETHERTYPE_ATOMIC": "syscall", + "syscall.ETHERTYPE_ATT": "syscall", + "syscall.ETHERTYPE_ATTSTANFORD": "syscall", + "syscall.ETHERTYPE_AUTOPHON": "syscall", + "syscall.ETHERTYPE_AXIS": "syscall", + "syscall.ETHERTYPE_BCLOOP": "syscall", + "syscall.ETHERTYPE_BOFL": "syscall", + "syscall.ETHERTYPE_CABLETRON": "syscall", + "syscall.ETHERTYPE_CHAOS": "syscall", + "syscall.ETHERTYPE_COMDESIGN": "syscall", + "syscall.ETHERTYPE_COMPUGRAPHIC": "syscall", + "syscall.ETHERTYPE_COUNTERPOINT": "syscall", + "syscall.ETHERTYPE_CRONUS": "syscall", + "syscall.ETHERTYPE_CRONUSVLN": "syscall", + "syscall.ETHERTYPE_DCA": "syscall", + "syscall.ETHERTYPE_DDE": "syscall", + "syscall.ETHERTYPE_DEBNI": "syscall", + "syscall.ETHERTYPE_DECAM": "syscall", + "syscall.ETHERTYPE_DECCUST": "syscall", + "syscall.ETHERTYPE_DECDIAG": "syscall", + "syscall.ETHERTYPE_DECDNS": "syscall", + "syscall.ETHERTYPE_DECDTS": "syscall", + "syscall.ETHERTYPE_DECEXPER": "syscall", + "syscall.ETHERTYPE_DECLAST": "syscall", + "syscall.ETHERTYPE_DECLTM": "syscall", + "syscall.ETHERTYPE_DECMUMPS": "syscall", + "syscall.ETHERTYPE_DECNETBIOS": "syscall", + "syscall.ETHERTYPE_DELTACON": "syscall", + "syscall.ETHERTYPE_DIDDLE": "syscall", + "syscall.ETHERTYPE_DLOG1": "syscall", + "syscall.ETHERTYPE_DLOG2": "syscall", + "syscall.ETHERTYPE_DN": "syscall", + "syscall.ETHERTYPE_DOGFIGHT": "syscall", + "syscall.ETHERTYPE_DSMD": "syscall", + "syscall.ETHERTYPE_ECMA": "syscall", + "syscall.ETHERTYPE_ENCRYPT": "syscall", + "syscall.ETHERTYPE_ES": "syscall", + "syscall.ETHERTYPE_EXCELAN": "syscall", + "syscall.ETHERTYPE_EXPERDATA": "syscall", + "syscall.ETHERTYPE_FLIP": "syscall", + "syscall.ETHERTYPE_FLOWCONTROL": "syscall", + "syscall.ETHERTYPE_FRARP": "syscall", + "syscall.ETHERTYPE_GENDYN": "syscall", + "syscall.ETHERTYPE_HAYES": "syscall", + "syscall.ETHERTYPE_HIPPI_FP": "syscall", + "syscall.ETHERTYPE_HITACHI": "syscall", + "syscall.ETHERTYPE_HP": "syscall", + "syscall.ETHERTYPE_IEEEPUP": "syscall", + "syscall.ETHERTYPE_IEEEPUPAT": "syscall", + "syscall.ETHERTYPE_IMLBL": "syscall", + "syscall.ETHERTYPE_IMLBLDIAG": "syscall", + "syscall.ETHERTYPE_IP": "syscall", + "syscall.ETHERTYPE_IPAS": "syscall", + "syscall.ETHERTYPE_IPV6": "syscall", + "syscall.ETHERTYPE_IPX": "syscall", + "syscall.ETHERTYPE_IPXNEW": "syscall", + "syscall.ETHERTYPE_KALPANA": "syscall", + "syscall.ETHERTYPE_LANBRIDGE": "syscall", + "syscall.ETHERTYPE_LANPROBE": "syscall", + "syscall.ETHERTYPE_LAT": "syscall", + "syscall.ETHERTYPE_LBACK": "syscall", + "syscall.ETHERTYPE_LITTLE": "syscall", + "syscall.ETHERTYPE_LLDP": "syscall", + "syscall.ETHERTYPE_LOGICRAFT": "syscall", + "syscall.ETHERTYPE_LOOPBACK": "syscall", + "syscall.ETHERTYPE_MATRA": "syscall", + "syscall.ETHERTYPE_MAX": "syscall", + "syscall.ETHERTYPE_MERIT": "syscall", + "syscall.ETHERTYPE_MICP": "syscall", + "syscall.ETHERTYPE_MOPDL": "syscall", + "syscall.ETHERTYPE_MOPRC": "syscall", + "syscall.ETHERTYPE_MOTOROLA": "syscall", + "syscall.ETHERTYPE_MPLS": "syscall", + "syscall.ETHERTYPE_MPLS_MCAST": "syscall", + "syscall.ETHERTYPE_MUMPS": "syscall", + "syscall.ETHERTYPE_NBPCC": "syscall", + "syscall.ETHERTYPE_NBPCLAIM": "syscall", + "syscall.ETHERTYPE_NBPCLREQ": "syscall", + "syscall.ETHERTYPE_NBPCLRSP": "syscall", + "syscall.ETHERTYPE_NBPCREQ": "syscall", + "syscall.ETHERTYPE_NBPCRSP": "syscall", + "syscall.ETHERTYPE_NBPDG": "syscall", + "syscall.ETHERTYPE_NBPDGB": "syscall", + "syscall.ETHERTYPE_NBPDLTE": "syscall", + "syscall.ETHERTYPE_NBPRAR": "syscall", + "syscall.ETHERTYPE_NBPRAS": "syscall", + "syscall.ETHERTYPE_NBPRST": "syscall", + "syscall.ETHERTYPE_NBPSCD": "syscall", + "syscall.ETHERTYPE_NBPVCD": "syscall", + "syscall.ETHERTYPE_NBS": "syscall", + "syscall.ETHERTYPE_NCD": "syscall", + "syscall.ETHERTYPE_NESTAR": "syscall", + "syscall.ETHERTYPE_NETBEUI": "syscall", + "syscall.ETHERTYPE_NOVELL": "syscall", + "syscall.ETHERTYPE_NS": "syscall", + "syscall.ETHERTYPE_NSAT": "syscall", + "syscall.ETHERTYPE_NSCOMPAT": "syscall", + "syscall.ETHERTYPE_NTRAILER": "syscall", + "syscall.ETHERTYPE_OS9": "syscall", + "syscall.ETHERTYPE_OS9NET": "syscall", + "syscall.ETHERTYPE_PACER": "syscall", + "syscall.ETHERTYPE_PAE": "syscall", + "syscall.ETHERTYPE_PCS": "syscall", + "syscall.ETHERTYPE_PLANNING": "syscall", + "syscall.ETHERTYPE_PPP": "syscall", + "syscall.ETHERTYPE_PPPOE": "syscall", + "syscall.ETHERTYPE_PPPOEDISC": "syscall", + "syscall.ETHERTYPE_PRIMENTS": "syscall", + "syscall.ETHERTYPE_PUP": "syscall", + "syscall.ETHERTYPE_PUPAT": "syscall", + "syscall.ETHERTYPE_QINQ": "syscall", + "syscall.ETHERTYPE_RACAL": "syscall", + "syscall.ETHERTYPE_RATIONAL": "syscall", + "syscall.ETHERTYPE_RAWFR": "syscall", + "syscall.ETHERTYPE_RCL": "syscall", + "syscall.ETHERTYPE_RDP": "syscall", + "syscall.ETHERTYPE_RETIX": "syscall", + "syscall.ETHERTYPE_REVARP": "syscall", + "syscall.ETHERTYPE_SCA": "syscall", + "syscall.ETHERTYPE_SECTRA": "syscall", + "syscall.ETHERTYPE_SECUREDATA": "syscall", + "syscall.ETHERTYPE_SGITW": "syscall", + "syscall.ETHERTYPE_SG_BOUNCE": "syscall", + "syscall.ETHERTYPE_SG_DIAG": "syscall", + "syscall.ETHERTYPE_SG_NETGAMES": "syscall", + "syscall.ETHERTYPE_SG_RESV": "syscall", + "syscall.ETHERTYPE_SIMNET": "syscall", + "syscall.ETHERTYPE_SLOW": "syscall", + "syscall.ETHERTYPE_SLOWPROTOCOLS": "syscall", + "syscall.ETHERTYPE_SNA": "syscall", + "syscall.ETHERTYPE_SNMP": "syscall", + "syscall.ETHERTYPE_SONIX": "syscall", + "syscall.ETHERTYPE_SPIDER": "syscall", + "syscall.ETHERTYPE_SPRITE": "syscall", + "syscall.ETHERTYPE_STP": "syscall", + "syscall.ETHERTYPE_TALARIS": "syscall", + "syscall.ETHERTYPE_TALARISMC": "syscall", + "syscall.ETHERTYPE_TCPCOMP": "syscall", + "syscall.ETHERTYPE_TCPSM": "syscall", + "syscall.ETHERTYPE_TEC": "syscall", + "syscall.ETHERTYPE_TIGAN": "syscall", + "syscall.ETHERTYPE_TRAIL": "syscall", + "syscall.ETHERTYPE_TRANSETHER": "syscall", + "syscall.ETHERTYPE_TYMSHARE": "syscall", + "syscall.ETHERTYPE_UBBST": "syscall", + "syscall.ETHERTYPE_UBDEBUG": "syscall", + "syscall.ETHERTYPE_UBDIAGLOOP": "syscall", + "syscall.ETHERTYPE_UBDL": "syscall", + "syscall.ETHERTYPE_UBNIU": "syscall", + "syscall.ETHERTYPE_UBNMC": "syscall", + "syscall.ETHERTYPE_VALID": "syscall", + "syscall.ETHERTYPE_VARIAN": "syscall", + "syscall.ETHERTYPE_VAXELN": "syscall", + "syscall.ETHERTYPE_VEECO": "syscall", + "syscall.ETHERTYPE_VEXP": "syscall", + "syscall.ETHERTYPE_VGLAB": "syscall", + "syscall.ETHERTYPE_VINES": "syscall", + "syscall.ETHERTYPE_VINESECHO": "syscall", + "syscall.ETHERTYPE_VINESLOOP": "syscall", + "syscall.ETHERTYPE_VITAL": "syscall", + "syscall.ETHERTYPE_VLAN": "syscall", + "syscall.ETHERTYPE_VLTLMAN": "syscall", + "syscall.ETHERTYPE_VPROD": "syscall", + "syscall.ETHERTYPE_VURESERVED": "syscall", + "syscall.ETHERTYPE_WATERLOO": "syscall", + "syscall.ETHERTYPE_WELLFLEET": "syscall", + "syscall.ETHERTYPE_X25": "syscall", + "syscall.ETHERTYPE_X75": "syscall", + "syscall.ETHERTYPE_XNSSM": "syscall", + "syscall.ETHERTYPE_XTP": "syscall", + "syscall.ETHER_ADDR_LEN": "syscall", + "syscall.ETHER_ALIGN": "syscall", + "syscall.ETHER_CRC_LEN": "syscall", + "syscall.ETHER_CRC_POLY_BE": "syscall", + "syscall.ETHER_CRC_POLY_LE": "syscall", + "syscall.ETHER_HDR_LEN": "syscall", + "syscall.ETHER_MAX_DIX_LEN": "syscall", + "syscall.ETHER_MAX_LEN": "syscall", + "syscall.ETHER_MAX_LEN_JUMBO": "syscall", + "syscall.ETHER_MIN_LEN": "syscall", + "syscall.ETHER_PPPOE_ENCAP_LEN": "syscall", + "syscall.ETHER_TYPE_LEN": "syscall", + "syscall.ETHER_VLAN_ENCAP_LEN": "syscall", + "syscall.ETH_P_1588": "syscall", + "syscall.ETH_P_8021Q": "syscall", + "syscall.ETH_P_802_2": "syscall", + "syscall.ETH_P_802_3": "syscall", + "syscall.ETH_P_AARP": "syscall", + "syscall.ETH_P_ALL": "syscall", + "syscall.ETH_P_AOE": "syscall", + "syscall.ETH_P_ARCNET": "syscall", + "syscall.ETH_P_ARP": "syscall", + "syscall.ETH_P_ATALK": "syscall", + "syscall.ETH_P_ATMFATE": "syscall", + "syscall.ETH_P_ATMMPOA": "syscall", + "syscall.ETH_P_AX25": "syscall", + "syscall.ETH_P_BPQ": "syscall", + "syscall.ETH_P_CAIF": "syscall", + "syscall.ETH_P_CAN": "syscall", + "syscall.ETH_P_CONTROL": "syscall", + "syscall.ETH_P_CUST": "syscall", + "syscall.ETH_P_DDCMP": "syscall", + "syscall.ETH_P_DEC": "syscall", + "syscall.ETH_P_DIAG": "syscall", + "syscall.ETH_P_DNA_DL": "syscall", + "syscall.ETH_P_DNA_RC": "syscall", + "syscall.ETH_P_DNA_RT": "syscall", + "syscall.ETH_P_DSA": "syscall", + "syscall.ETH_P_ECONET": "syscall", + "syscall.ETH_P_EDSA": "syscall", + "syscall.ETH_P_FCOE": "syscall", + "syscall.ETH_P_FIP": "syscall", + "syscall.ETH_P_HDLC": "syscall", + "syscall.ETH_P_IEEE802154": "syscall", + "syscall.ETH_P_IEEEPUP": "syscall", + "syscall.ETH_P_IEEEPUPAT": "syscall", + "syscall.ETH_P_IP": "syscall", + "syscall.ETH_P_IPV6": "syscall", + "syscall.ETH_P_IPX": "syscall", + "syscall.ETH_P_IRDA": "syscall", + "syscall.ETH_P_LAT": "syscall", + "syscall.ETH_P_LINK_CTL": "syscall", + "syscall.ETH_P_LOCALTALK": "syscall", + "syscall.ETH_P_LOOP": "syscall", + "syscall.ETH_P_MOBITEX": "syscall", + "syscall.ETH_P_MPLS_MC": "syscall", + "syscall.ETH_P_MPLS_UC": "syscall", + "syscall.ETH_P_PAE": "syscall", + "syscall.ETH_P_PAUSE": "syscall", + "syscall.ETH_P_PHONET": "syscall", + "syscall.ETH_P_PPPTALK": "syscall", + "syscall.ETH_P_PPP_DISC": "syscall", + "syscall.ETH_P_PPP_MP": "syscall", + "syscall.ETH_P_PPP_SES": "syscall", + "syscall.ETH_P_PUP": "syscall", + "syscall.ETH_P_PUPAT": "syscall", + "syscall.ETH_P_RARP": "syscall", + "syscall.ETH_P_SCA": "syscall", + "syscall.ETH_P_SLOW": "syscall", + "syscall.ETH_P_SNAP": "syscall", + "syscall.ETH_P_TEB": "syscall", + "syscall.ETH_P_TIPC": "syscall", + "syscall.ETH_P_TRAILER": "syscall", + "syscall.ETH_P_TR_802_2": "syscall", + "syscall.ETH_P_WAN_PPP": "syscall", + "syscall.ETH_P_WCCP": "syscall", + "syscall.ETH_P_X25": "syscall", + "syscall.ETIME": "syscall", + "syscall.ETIMEDOUT": "syscall", + "syscall.ETOOMANYREFS": "syscall", + "syscall.ETXTBSY": "syscall", + "syscall.EUCLEAN": "syscall", + "syscall.EUNATCH": "syscall", + "syscall.EUSERS": "syscall", + "syscall.EVFILT_AIO": "syscall", + "syscall.EVFILT_FS": "syscall", + "syscall.EVFILT_LIO": "syscall", + "syscall.EVFILT_MACHPORT": "syscall", + "syscall.EVFILT_PROC": "syscall", + "syscall.EVFILT_READ": "syscall", + "syscall.EVFILT_SIGNAL": "syscall", + "syscall.EVFILT_SYSCOUNT": "syscall", + "syscall.EVFILT_THREADMARKER": "syscall", + "syscall.EVFILT_TIMER": "syscall", + "syscall.EVFILT_USER": "syscall", + "syscall.EVFILT_VM": "syscall", + "syscall.EVFILT_VNODE": "syscall", + "syscall.EVFILT_WRITE": "syscall", + "syscall.EV_ADD": "syscall", + "syscall.EV_CLEAR": "syscall", + "syscall.EV_DELETE": "syscall", + "syscall.EV_DISABLE": "syscall", + "syscall.EV_DISPATCH": "syscall", + "syscall.EV_DROP": "syscall", + "syscall.EV_ENABLE": "syscall", + "syscall.EV_EOF": "syscall", + "syscall.EV_ERROR": "syscall", + "syscall.EV_FLAG0": "syscall", + "syscall.EV_FLAG1": "syscall", + "syscall.EV_ONESHOT": "syscall", + "syscall.EV_OOBAND": "syscall", + "syscall.EV_POLL": "syscall", + "syscall.EV_RECEIPT": "syscall", + "syscall.EV_SYSFLAGS": "syscall", + "syscall.EWINDOWS": "syscall", + "syscall.EWOULDBLOCK": "syscall", + "syscall.EXDEV": "syscall", + "syscall.EXFULL": "syscall", + "syscall.EXTA": "syscall", + "syscall.EXTB": "syscall", + "syscall.EXTPROC": "syscall", + "syscall.Environ": "syscall", + "syscall.EpollCreate": "syscall", + "syscall.EpollCreate1": "syscall", + "syscall.EpollCtl": "syscall", + "syscall.EpollEvent": "syscall", + "syscall.EpollWait": "syscall", + "syscall.Errno": "syscall", + "syscall.EscapeArg": "syscall", + "syscall.Exchangedata": "syscall", + "syscall.Exec": "syscall", + "syscall.Exit": "syscall", + "syscall.ExitProcess": "syscall", + "syscall.FD_CLOEXEC": "syscall", + "syscall.FD_SETSIZE": "syscall", + "syscall.FILE_ACTION_ADDED": "syscall", + "syscall.FILE_ACTION_MODIFIED": "syscall", + "syscall.FILE_ACTION_REMOVED": "syscall", + "syscall.FILE_ACTION_RENAMED_NEW_NAME": "syscall", + "syscall.FILE_ACTION_RENAMED_OLD_NAME": "syscall", + "syscall.FILE_APPEND_DATA": "syscall", + "syscall.FILE_ATTRIBUTE_ARCHIVE": "syscall", + "syscall.FILE_ATTRIBUTE_DIRECTORY": "syscall", + "syscall.FILE_ATTRIBUTE_HIDDEN": "syscall", + "syscall.FILE_ATTRIBUTE_NORMAL": "syscall", + "syscall.FILE_ATTRIBUTE_READONLY": "syscall", + "syscall.FILE_ATTRIBUTE_REPARSE_POINT": "syscall", + "syscall.FILE_ATTRIBUTE_SYSTEM": "syscall", + "syscall.FILE_BEGIN": "syscall", + "syscall.FILE_CURRENT": "syscall", + "syscall.FILE_END": "syscall", + "syscall.FILE_FLAG_BACKUP_SEMANTICS": "syscall", + "syscall.FILE_FLAG_OPEN_REPARSE_POINT": "syscall", + "syscall.FILE_FLAG_OVERLAPPED": "syscall", + "syscall.FILE_LIST_DIRECTORY": "syscall", + "syscall.FILE_MAP_COPY": "syscall", + "syscall.FILE_MAP_EXECUTE": "syscall", + "syscall.FILE_MAP_READ": "syscall", + "syscall.FILE_MAP_WRITE": "syscall", + "syscall.FILE_NOTIFY_CHANGE_ATTRIBUTES": "syscall", + "syscall.FILE_NOTIFY_CHANGE_CREATION": "syscall", + "syscall.FILE_NOTIFY_CHANGE_DIR_NAME": "syscall", + "syscall.FILE_NOTIFY_CHANGE_FILE_NAME": "syscall", + "syscall.FILE_NOTIFY_CHANGE_LAST_ACCESS": "syscall", + "syscall.FILE_NOTIFY_CHANGE_LAST_WRITE": "syscall", + "syscall.FILE_NOTIFY_CHANGE_SIZE": "syscall", + "syscall.FILE_SHARE_DELETE": "syscall", + "syscall.FILE_SHARE_READ": "syscall", + "syscall.FILE_SHARE_WRITE": "syscall", + "syscall.FILE_SKIP_COMPLETION_PORT_ON_SUCCESS": "syscall", + "syscall.FILE_SKIP_SET_EVENT_ON_HANDLE": "syscall", + "syscall.FILE_TYPE_CHAR": "syscall", + "syscall.FILE_TYPE_DISK": "syscall", + "syscall.FILE_TYPE_PIPE": "syscall", + "syscall.FILE_TYPE_REMOTE": "syscall", + "syscall.FILE_TYPE_UNKNOWN": "syscall", + "syscall.FILE_WRITE_ATTRIBUTES": "syscall", + "syscall.FLUSHO": "syscall", + "syscall.FORMAT_MESSAGE_ALLOCATE_BUFFER": "syscall", + "syscall.FORMAT_MESSAGE_ARGUMENT_ARRAY": "syscall", + "syscall.FORMAT_MESSAGE_FROM_HMODULE": "syscall", + "syscall.FORMAT_MESSAGE_FROM_STRING": "syscall", + "syscall.FORMAT_MESSAGE_FROM_SYSTEM": "syscall", + "syscall.FORMAT_MESSAGE_IGNORE_INSERTS": "syscall", + "syscall.FORMAT_MESSAGE_MAX_WIDTH_MASK": "syscall", + "syscall.FSCTL_GET_REPARSE_POINT": "syscall", + "syscall.F_ADDFILESIGS": "syscall", + "syscall.F_ADDSIGS": "syscall", + "syscall.F_ALLOCATEALL": "syscall", + "syscall.F_ALLOCATECONTIG": "syscall", + "syscall.F_CANCEL": "syscall", + "syscall.F_CHKCLEAN": "syscall", + "syscall.F_CLOSEM": "syscall", + "syscall.F_DUP2FD": "syscall", + "syscall.F_DUP2FD_CLOEXEC": "syscall", + "syscall.F_DUPFD": "syscall", + "syscall.F_DUPFD_CLOEXEC": "syscall", + "syscall.F_EXLCK": "syscall", + "syscall.F_FLUSH_DATA": "syscall", + "syscall.F_FREEZE_FS": "syscall", + "syscall.F_FSCTL": "syscall", + "syscall.F_FSDIRMASK": "syscall", + "syscall.F_FSIN": "syscall", + "syscall.F_FSINOUT": "syscall", + "syscall.F_FSOUT": "syscall", + "syscall.F_FSPRIV": "syscall", + "syscall.F_FSVOID": "syscall", + "syscall.F_FULLFSYNC": "syscall", + "syscall.F_GETFD": "syscall", + "syscall.F_GETFL": "syscall", + "syscall.F_GETLEASE": "syscall", + "syscall.F_GETLK": "syscall", + "syscall.F_GETLK64": "syscall", + "syscall.F_GETLKPID": "syscall", + "syscall.F_GETNOSIGPIPE": "syscall", + "syscall.F_GETOWN": "syscall", + "syscall.F_GETOWN_EX": "syscall", + "syscall.F_GETPATH": "syscall", + "syscall.F_GETPATH_MTMINFO": "syscall", + "syscall.F_GETPIPE_SZ": "syscall", + "syscall.F_GETPROTECTIONCLASS": "syscall", + "syscall.F_GETSIG": "syscall", + "syscall.F_GLOBAL_NOCACHE": "syscall", + "syscall.F_LOCK": "syscall", + "syscall.F_LOG2PHYS": "syscall", + "syscall.F_LOG2PHYS_EXT": "syscall", + "syscall.F_MARKDEPENDENCY": "syscall", + "syscall.F_MAXFD": "syscall", + "syscall.F_NOCACHE": "syscall", + "syscall.F_NODIRECT": "syscall", + "syscall.F_NOTIFY": "syscall", + "syscall.F_OGETLK": "syscall", + "syscall.F_OK": "syscall", + "syscall.F_OSETLK": "syscall", + "syscall.F_OSETLKW": "syscall", + "syscall.F_PARAM_MASK": "syscall", + "syscall.F_PARAM_MAX": "syscall", + "syscall.F_PATHPKG_CHECK": "syscall", + "syscall.F_PEOFPOSMODE": "syscall", + "syscall.F_PREALLOCATE": "syscall", + "syscall.F_RDADVISE": "syscall", + "syscall.F_RDAHEAD": "syscall", + "syscall.F_RDLCK": "syscall", + "syscall.F_READAHEAD": "syscall", + "syscall.F_READBOOTSTRAP": "syscall", + "syscall.F_SETBACKINGSTORE": "syscall", + "syscall.F_SETFD": "syscall", + "syscall.F_SETFL": "syscall", + "syscall.F_SETLEASE": "syscall", + "syscall.F_SETLK": "syscall", + "syscall.F_SETLK64": "syscall", + "syscall.F_SETLKW": "syscall", + "syscall.F_SETLKW64": "syscall", + "syscall.F_SETLK_REMOTE": "syscall", + "syscall.F_SETNOSIGPIPE": "syscall", + "syscall.F_SETOWN": "syscall", + "syscall.F_SETOWN_EX": "syscall", + "syscall.F_SETPIPE_SZ": "syscall", + "syscall.F_SETPROTECTIONCLASS": "syscall", + "syscall.F_SETSIG": "syscall", + "syscall.F_SETSIZE": "syscall", + "syscall.F_SHLCK": "syscall", + "syscall.F_TEST": "syscall", + "syscall.F_THAW_FS": "syscall", + "syscall.F_TLOCK": "syscall", + "syscall.F_ULOCK": "syscall", + "syscall.F_UNLCK": "syscall", + "syscall.F_UNLCKSYS": "syscall", + "syscall.F_VOLPOSMODE": "syscall", + "syscall.F_WRITEBOOTSTRAP": "syscall", + "syscall.F_WRLCK": "syscall", + "syscall.Faccessat": "syscall", + "syscall.Fallocate": "syscall", + "syscall.Fbootstraptransfer_t": "syscall", + "syscall.Fchdir": "syscall", + "syscall.Fchflags": "syscall", + "syscall.Fchmod": "syscall", + "syscall.Fchmodat": "syscall", + "syscall.Fchown": "syscall", + "syscall.Fchownat": "syscall", + "syscall.FcntlFlock": "syscall", + "syscall.FdSet": "syscall", + "syscall.Fdatasync": "syscall", + "syscall.FileNotifyInformation": "syscall", + "syscall.Filetime": "syscall", + "syscall.FindClose": "syscall", + "syscall.FindFirstFile": "syscall", + "syscall.FindNextFile": "syscall", + "syscall.Flock": "syscall", + "syscall.Flock_t": "syscall", + "syscall.FlushBpf": "syscall", + "syscall.FlushFileBuffers": "syscall", + "syscall.FlushViewOfFile": "syscall", + "syscall.ForkExec": "syscall", + "syscall.ForkLock": "syscall", + "syscall.FormatMessage": "syscall", + "syscall.Fpathconf": "syscall", + "syscall.FreeAddrInfoW": "syscall", + "syscall.FreeEnvironmentStrings": "syscall", + "syscall.FreeLibrary": "syscall", + "syscall.Fsid": "syscall", + "syscall.Fstat": "syscall", + "syscall.Fstatfs": "syscall", + "syscall.Fstore_t": "syscall", + "syscall.Fsync": "syscall", + "syscall.Ftruncate": "syscall", + "syscall.FullPath": "syscall", + "syscall.Futimes": "syscall", + "syscall.Futimesat": "syscall", + "syscall.GENERIC_ALL": "syscall", + "syscall.GENERIC_EXECUTE": "syscall", + "syscall.GENERIC_READ": "syscall", + "syscall.GENERIC_WRITE": "syscall", + "syscall.GUID": "syscall", + "syscall.GetAcceptExSockaddrs": "syscall", + "syscall.GetAdaptersInfo": "syscall", + "syscall.GetAddrInfoW": "syscall", + "syscall.GetCommandLine": "syscall", + "syscall.GetComputerName": "syscall", + "syscall.GetConsoleMode": "syscall", + "syscall.GetCurrentDirectory": "syscall", + "syscall.GetCurrentProcess": "syscall", + "syscall.GetEnvironmentStrings": "syscall", + "syscall.GetEnvironmentVariable": "syscall", + "syscall.GetExitCodeProcess": "syscall", + "syscall.GetFileAttributes": "syscall", + "syscall.GetFileAttributesEx": "syscall", + "syscall.GetFileExInfoStandard": "syscall", + "syscall.GetFileExMaxInfoLevel": "syscall", + "syscall.GetFileInformationByHandle": "syscall", + "syscall.GetFileType": "syscall", + "syscall.GetFullPathName": "syscall", + "syscall.GetHostByName": "syscall", + "syscall.GetIfEntry": "syscall", + "syscall.GetLastError": "syscall", + "syscall.GetLengthSid": "syscall", + "syscall.GetLongPathName": "syscall", + "syscall.GetProcAddress": "syscall", + "syscall.GetProcessTimes": "syscall", + "syscall.GetProtoByName": "syscall", + "syscall.GetQueuedCompletionStatus": "syscall", + "syscall.GetServByName": "syscall", + "syscall.GetShortPathName": "syscall", + "syscall.GetStartupInfo": "syscall", + "syscall.GetStdHandle": "syscall", + "syscall.GetSystemTimeAsFileTime": "syscall", + "syscall.GetTempPath": "syscall", + "syscall.GetTimeZoneInformation": "syscall", + "syscall.GetTokenInformation": "syscall", + "syscall.GetUserNameEx": "syscall", + "syscall.GetUserProfileDirectory": "syscall", + "syscall.GetVersion": "syscall", + "syscall.Getcwd": "syscall", + "syscall.Getdents": "syscall", + "syscall.Getdirentries": "syscall", + "syscall.Getdtablesize": "syscall", + "syscall.Getegid": "syscall", + "syscall.Getenv": "syscall", + "syscall.Geteuid": "syscall", + "syscall.Getfsstat": "syscall", + "syscall.Getgid": "syscall", + "syscall.Getgroups": "syscall", + "syscall.Getpagesize": "syscall", + "syscall.Getpeername": "syscall", + "syscall.Getpgid": "syscall", + "syscall.Getpgrp": "syscall", + "syscall.Getpid": "syscall", + "syscall.Getppid": "syscall", + "syscall.Getpriority": "syscall", + "syscall.Getrlimit": "syscall", + "syscall.Getrusage": "syscall", + "syscall.Getsid": "syscall", + "syscall.Getsockname": "syscall", + "syscall.Getsockopt": "syscall", + "syscall.GetsockoptByte": "syscall", + "syscall.GetsockoptICMPv6Filter": "syscall", + "syscall.GetsockoptIPMreq": "syscall", + "syscall.GetsockoptIPMreqn": "syscall", + "syscall.GetsockoptIPv6MTUInfo": "syscall", + "syscall.GetsockoptIPv6Mreq": "syscall", + "syscall.GetsockoptInet4Addr": "syscall", + "syscall.GetsockoptInt": "syscall", + "syscall.GetsockoptUcred": "syscall", + "syscall.Gettid": "syscall", + "syscall.Gettimeofday": "syscall", + "syscall.Getuid": "syscall", + "syscall.Getwd": "syscall", + "syscall.Getxattr": "syscall", + "syscall.HANDLE_FLAG_INHERIT": "syscall", + "syscall.HKEY_CLASSES_ROOT": "syscall", + "syscall.HKEY_CURRENT_CONFIG": "syscall", + "syscall.HKEY_CURRENT_USER": "syscall", + "syscall.HKEY_DYN_DATA": "syscall", + "syscall.HKEY_LOCAL_MACHINE": "syscall", + "syscall.HKEY_PERFORMANCE_DATA": "syscall", + "syscall.HKEY_USERS": "syscall", + "syscall.HUPCL": "syscall", + "syscall.Handle": "syscall", + "syscall.Hostent": "syscall", + "syscall.ICANON": "syscall", + "syscall.ICMP6_FILTER": "syscall", + "syscall.ICMPV6_FILTER": "syscall", + "syscall.ICMPv6Filter": "syscall", + "syscall.ICRNL": "syscall", + "syscall.IEXTEN": "syscall", + "syscall.IFAN_ARRIVAL": "syscall", + "syscall.IFAN_DEPARTURE": "syscall", + "syscall.IFA_ADDRESS": "syscall", + "syscall.IFA_ANYCAST": "syscall", + "syscall.IFA_BROADCAST": "syscall", + "syscall.IFA_CACHEINFO": "syscall", + "syscall.IFA_F_DADFAILED": "syscall", + "syscall.IFA_F_DEPRECATED": "syscall", + "syscall.IFA_F_HOMEADDRESS": "syscall", + "syscall.IFA_F_NODAD": "syscall", + "syscall.IFA_F_OPTIMISTIC": "syscall", + "syscall.IFA_F_PERMANENT": "syscall", + "syscall.IFA_F_SECONDARY": "syscall", + "syscall.IFA_F_TEMPORARY": "syscall", + "syscall.IFA_F_TENTATIVE": "syscall", + "syscall.IFA_LABEL": "syscall", + "syscall.IFA_LOCAL": "syscall", + "syscall.IFA_MAX": "syscall", + "syscall.IFA_MULTICAST": "syscall", + "syscall.IFA_ROUTE": "syscall", + "syscall.IFA_UNSPEC": "syscall", + "syscall.IFF_ALLMULTI": "syscall", + "syscall.IFF_ALTPHYS": "syscall", + "syscall.IFF_AUTOMEDIA": "syscall", + "syscall.IFF_BROADCAST": "syscall", + "syscall.IFF_CANTCHANGE": "syscall", + "syscall.IFF_CANTCONFIG": "syscall", + "syscall.IFF_DEBUG": "syscall", + "syscall.IFF_DRV_OACTIVE": "syscall", + "syscall.IFF_DRV_RUNNING": "syscall", + "syscall.IFF_DYING": "syscall", + "syscall.IFF_DYNAMIC": "syscall", + "syscall.IFF_LINK0": "syscall", + "syscall.IFF_LINK1": "syscall", + "syscall.IFF_LINK2": "syscall", + "syscall.IFF_LOOPBACK": "syscall", + "syscall.IFF_MASTER": "syscall", + "syscall.IFF_MONITOR": "syscall", + "syscall.IFF_MULTICAST": "syscall", + "syscall.IFF_NOARP": "syscall", + "syscall.IFF_NOTRAILERS": "syscall", + "syscall.IFF_NO_PI": "syscall", + "syscall.IFF_OACTIVE": "syscall", + "syscall.IFF_ONE_QUEUE": "syscall", + "syscall.IFF_POINTOPOINT": "syscall", + "syscall.IFF_POINTTOPOINT": "syscall", + "syscall.IFF_PORTSEL": "syscall", + "syscall.IFF_PPROMISC": "syscall", + "syscall.IFF_PROMISC": "syscall", + "syscall.IFF_RENAMING": "syscall", + "syscall.IFF_RUNNING": "syscall", + "syscall.IFF_SIMPLEX": "syscall", + "syscall.IFF_SLAVE": "syscall", + "syscall.IFF_SMART": "syscall", + "syscall.IFF_STATICARP": "syscall", + "syscall.IFF_TAP": "syscall", + "syscall.IFF_TUN": "syscall", + "syscall.IFF_TUN_EXCL": "syscall", + "syscall.IFF_UP": "syscall", + "syscall.IFF_VNET_HDR": "syscall", + "syscall.IFLA_ADDRESS": "syscall", + "syscall.IFLA_BROADCAST": "syscall", + "syscall.IFLA_COST": "syscall", + "syscall.IFLA_IFALIAS": "syscall", + "syscall.IFLA_IFNAME": "syscall", + "syscall.IFLA_LINK": "syscall", + "syscall.IFLA_LINKINFO": "syscall", + "syscall.IFLA_LINKMODE": "syscall", + "syscall.IFLA_MAP": "syscall", + "syscall.IFLA_MASTER": "syscall", + "syscall.IFLA_MAX": "syscall", + "syscall.IFLA_MTU": "syscall", + "syscall.IFLA_NET_NS_PID": "syscall", + "syscall.IFLA_OPERSTATE": "syscall", + "syscall.IFLA_PRIORITY": "syscall", + "syscall.IFLA_PROTINFO": "syscall", + "syscall.IFLA_QDISC": "syscall", + "syscall.IFLA_STATS": "syscall", + "syscall.IFLA_TXQLEN": "syscall", + "syscall.IFLA_UNSPEC": "syscall", + "syscall.IFLA_WEIGHT": "syscall", + "syscall.IFLA_WIRELESS": "syscall", + "syscall.IFNAMSIZ": "syscall", + "syscall.IFT_1822": "syscall", + "syscall.IFT_A12MPPSWITCH": "syscall", + "syscall.IFT_AAL2": "syscall", + "syscall.IFT_AAL5": "syscall", + "syscall.IFT_ADSL": "syscall", + "syscall.IFT_AFLANE8023": "syscall", + "syscall.IFT_AFLANE8025": "syscall", + "syscall.IFT_ARAP": "syscall", + "syscall.IFT_ARCNET": "syscall", + "syscall.IFT_ARCNETPLUS": "syscall", + "syscall.IFT_ASYNC": "syscall", + "syscall.IFT_ATM": "syscall", + "syscall.IFT_ATMDXI": "syscall", + "syscall.IFT_ATMFUNI": "syscall", + "syscall.IFT_ATMIMA": "syscall", + "syscall.IFT_ATMLOGICAL": "syscall", + "syscall.IFT_ATMRADIO": "syscall", + "syscall.IFT_ATMSUBINTERFACE": "syscall", + "syscall.IFT_ATMVCIENDPT": "syscall", + "syscall.IFT_ATMVIRTUAL": "syscall", + "syscall.IFT_BGPPOLICYACCOUNTING": "syscall", + "syscall.IFT_BLUETOOTH": "syscall", + "syscall.IFT_BRIDGE": "syscall", + "syscall.IFT_BSC": "syscall", + "syscall.IFT_CARP": "syscall", + "syscall.IFT_CCTEMUL": "syscall", + "syscall.IFT_CELLULAR": "syscall", + "syscall.IFT_CEPT": "syscall", + "syscall.IFT_CES": "syscall", + "syscall.IFT_CHANNEL": "syscall", + "syscall.IFT_CNR": "syscall", + "syscall.IFT_COFFEE": "syscall", + "syscall.IFT_COMPOSITELINK": "syscall", + "syscall.IFT_DCN": "syscall", + "syscall.IFT_DIGITALPOWERLINE": "syscall", + "syscall.IFT_DIGITALWRAPPEROVERHEADCHANNEL": "syscall", + "syscall.IFT_DLSW": "syscall", + "syscall.IFT_DOCSCABLEDOWNSTREAM": "syscall", + "syscall.IFT_DOCSCABLEMACLAYER": "syscall", + "syscall.IFT_DOCSCABLEUPSTREAM": "syscall", + "syscall.IFT_DOCSCABLEUPSTREAMCHANNEL": "syscall", + "syscall.IFT_DS0": "syscall", + "syscall.IFT_DS0BUNDLE": "syscall", + "syscall.IFT_DS1FDL": "syscall", + "syscall.IFT_DS3": "syscall", + "syscall.IFT_DTM": "syscall", + "syscall.IFT_DUMMY": "syscall", + "syscall.IFT_DVBASILN": "syscall", + "syscall.IFT_DVBASIOUT": "syscall", + "syscall.IFT_DVBRCCDOWNSTREAM": "syscall", + "syscall.IFT_DVBRCCMACLAYER": "syscall", + "syscall.IFT_DVBRCCUPSTREAM": "syscall", + "syscall.IFT_ECONET": "syscall", + "syscall.IFT_ENC": "syscall", + "syscall.IFT_EON": "syscall", + "syscall.IFT_EPLRS": "syscall", + "syscall.IFT_ESCON": "syscall", + "syscall.IFT_ETHER": "syscall", + "syscall.IFT_FAITH": "syscall", + "syscall.IFT_FAST": "syscall", + "syscall.IFT_FASTETHER": "syscall", + "syscall.IFT_FASTETHERFX": "syscall", + "syscall.IFT_FDDI": "syscall", + "syscall.IFT_FIBRECHANNEL": "syscall", + "syscall.IFT_FRAMERELAYINTERCONNECT": "syscall", + "syscall.IFT_FRAMERELAYMPI": "syscall", + "syscall.IFT_FRDLCIENDPT": "syscall", + "syscall.IFT_FRELAY": "syscall", + "syscall.IFT_FRELAYDCE": "syscall", + "syscall.IFT_FRF16MFRBUNDLE": "syscall", + "syscall.IFT_FRFORWARD": "syscall", + "syscall.IFT_G703AT2MB": "syscall", + "syscall.IFT_G703AT64K": "syscall", + "syscall.IFT_GIF": "syscall", + "syscall.IFT_GIGABITETHERNET": "syscall", + "syscall.IFT_GR303IDT": "syscall", + "syscall.IFT_GR303RDT": "syscall", + "syscall.IFT_H323GATEKEEPER": "syscall", + "syscall.IFT_H323PROXY": "syscall", + "syscall.IFT_HDH1822": "syscall", + "syscall.IFT_HDLC": "syscall", + "syscall.IFT_HDSL2": "syscall", + "syscall.IFT_HIPERLAN2": "syscall", + "syscall.IFT_HIPPI": "syscall", + "syscall.IFT_HIPPIINTERFACE": "syscall", + "syscall.IFT_HOSTPAD": "syscall", + "syscall.IFT_HSSI": "syscall", + "syscall.IFT_HY": "syscall", + "syscall.IFT_IBM370PARCHAN": "syscall", + "syscall.IFT_IDSL": "syscall", + "syscall.IFT_IEEE1394": "syscall", + "syscall.IFT_IEEE80211": "syscall", + "syscall.IFT_IEEE80212": "syscall", + "syscall.IFT_IEEE8023ADLAG": "syscall", + "syscall.IFT_IFGSN": "syscall", + "syscall.IFT_IMT": "syscall", + "syscall.IFT_INFINIBAND": "syscall", + "syscall.IFT_INTERLEAVE": "syscall", + "syscall.IFT_IP": "syscall", + "syscall.IFT_IPFORWARD": "syscall", + "syscall.IFT_IPOVERATM": "syscall", + "syscall.IFT_IPOVERCDLC": "syscall", + "syscall.IFT_IPOVERCLAW": "syscall", + "syscall.IFT_IPSWITCH": "syscall", + "syscall.IFT_IPXIP": "syscall", + "syscall.IFT_ISDN": "syscall", + "syscall.IFT_ISDNBASIC": "syscall", + "syscall.IFT_ISDNPRIMARY": "syscall", + "syscall.IFT_ISDNS": "syscall", + "syscall.IFT_ISDNU": "syscall", + "syscall.IFT_ISO88022LLC": "syscall", + "syscall.IFT_ISO88023": "syscall", + "syscall.IFT_ISO88024": "syscall", + "syscall.IFT_ISO88025": "syscall", + "syscall.IFT_ISO88025CRFPINT": "syscall", + "syscall.IFT_ISO88025DTR": "syscall", + "syscall.IFT_ISO88025FIBER": "syscall", + "syscall.IFT_ISO88026": "syscall", + "syscall.IFT_ISUP": "syscall", + "syscall.IFT_L2VLAN": "syscall", + "syscall.IFT_L3IPVLAN": "syscall", + "syscall.IFT_L3IPXVLAN": "syscall", + "syscall.IFT_LAPB": "syscall", + "syscall.IFT_LAPD": "syscall", + "syscall.IFT_LAPF": "syscall", + "syscall.IFT_LINEGROUP": "syscall", + "syscall.IFT_LOCALTALK": "syscall", + "syscall.IFT_LOOP": "syscall", + "syscall.IFT_MEDIAMAILOVERIP": "syscall", + "syscall.IFT_MFSIGLINK": "syscall", + "syscall.IFT_MIOX25": "syscall", + "syscall.IFT_MODEM": "syscall", + "syscall.IFT_MPC": "syscall", + "syscall.IFT_MPLS": "syscall", + "syscall.IFT_MPLSTUNNEL": "syscall", + "syscall.IFT_MSDSL": "syscall", + "syscall.IFT_MVL": "syscall", + "syscall.IFT_MYRINET": "syscall", + "syscall.IFT_NFAS": "syscall", + "syscall.IFT_NSIP": "syscall", + "syscall.IFT_OPTICALCHANNEL": "syscall", + "syscall.IFT_OPTICALTRANSPORT": "syscall", + "syscall.IFT_OTHER": "syscall", + "syscall.IFT_P10": "syscall", + "syscall.IFT_P80": "syscall", + "syscall.IFT_PARA": "syscall", + "syscall.IFT_PDP": "syscall", + "syscall.IFT_PFLOG": "syscall", + "syscall.IFT_PFLOW": "syscall", + "syscall.IFT_PFSYNC": "syscall", + "syscall.IFT_PLC": "syscall", + "syscall.IFT_PON155": "syscall", + "syscall.IFT_PON622": "syscall", + "syscall.IFT_POS": "syscall", + "syscall.IFT_PPP": "syscall", + "syscall.IFT_PPPMULTILINKBUNDLE": "syscall", + "syscall.IFT_PROPATM": "syscall", + "syscall.IFT_PROPBWAP2MP": "syscall", + "syscall.IFT_PROPCNLS": "syscall", + "syscall.IFT_PROPDOCSWIRELESSDOWNSTREAM": "syscall", + "syscall.IFT_PROPDOCSWIRELESSMACLAYER": "syscall", + "syscall.IFT_PROPDOCSWIRELESSUPSTREAM": "syscall", + "syscall.IFT_PROPMUX": "syscall", + "syscall.IFT_PROPVIRTUAL": "syscall", + "syscall.IFT_PROPWIRELESSP2P": "syscall", + "syscall.IFT_PTPSERIAL": "syscall", + "syscall.IFT_PVC": "syscall", + "syscall.IFT_Q2931": "syscall", + "syscall.IFT_QLLC": "syscall", + "syscall.IFT_RADIOMAC": "syscall", + "syscall.IFT_RADSL": "syscall", + "syscall.IFT_REACHDSL": "syscall", + "syscall.IFT_RFC1483": "syscall", + "syscall.IFT_RS232": "syscall", + "syscall.IFT_RSRB": "syscall", + "syscall.IFT_SDLC": "syscall", + "syscall.IFT_SDSL": "syscall", + "syscall.IFT_SHDSL": "syscall", + "syscall.IFT_SIP": "syscall", + "syscall.IFT_SIPSIG": "syscall", + "syscall.IFT_SIPTG": "syscall", + "syscall.IFT_SLIP": "syscall", + "syscall.IFT_SMDSDXI": "syscall", + "syscall.IFT_SMDSICIP": "syscall", + "syscall.IFT_SONET": "syscall", + "syscall.IFT_SONETOVERHEADCHANNEL": "syscall", + "syscall.IFT_SONETPATH": "syscall", + "syscall.IFT_SONETVT": "syscall", + "syscall.IFT_SRP": "syscall", + "syscall.IFT_SS7SIGLINK": "syscall", + "syscall.IFT_STACKTOSTACK": "syscall", + "syscall.IFT_STARLAN": "syscall", + "syscall.IFT_STF": "syscall", + "syscall.IFT_T1": "syscall", + "syscall.IFT_TDLC": "syscall", + "syscall.IFT_TELINK": "syscall", + "syscall.IFT_TERMPAD": "syscall", + "syscall.IFT_TR008": "syscall", + "syscall.IFT_TRANSPHDLC": "syscall", + "syscall.IFT_TUNNEL": "syscall", + "syscall.IFT_ULTRA": "syscall", + "syscall.IFT_USB": "syscall", + "syscall.IFT_V11": "syscall", + "syscall.IFT_V35": "syscall", + "syscall.IFT_V36": "syscall", + "syscall.IFT_V37": "syscall", + "syscall.IFT_VDSL": "syscall", + "syscall.IFT_VIRTUALIPADDRESS": "syscall", + "syscall.IFT_VIRTUALTG": "syscall", + "syscall.IFT_VOICEDID": "syscall", + "syscall.IFT_VOICEEM": "syscall", + "syscall.IFT_VOICEEMFGD": "syscall", + "syscall.IFT_VOICEENCAP": "syscall", + "syscall.IFT_VOICEFGDEANA": "syscall", + "syscall.IFT_VOICEFXO": "syscall", + "syscall.IFT_VOICEFXS": "syscall", + "syscall.IFT_VOICEOVERATM": "syscall", + "syscall.IFT_VOICEOVERCABLE": "syscall", + "syscall.IFT_VOICEOVERFRAMERELAY": "syscall", + "syscall.IFT_VOICEOVERIP": "syscall", + "syscall.IFT_X213": "syscall", + "syscall.IFT_X25": "syscall", + "syscall.IFT_X25DDN": "syscall", + "syscall.IFT_X25HUNTGROUP": "syscall", + "syscall.IFT_X25MLP": "syscall", + "syscall.IFT_X25PLE": "syscall", + "syscall.IFT_XETHER": "syscall", + "syscall.IGNBRK": "syscall", + "syscall.IGNCR": "syscall", + "syscall.IGNORE": "syscall", + "syscall.IGNPAR": "syscall", + "syscall.IMAXBEL": "syscall", + "syscall.INFINITE": "syscall", + "syscall.INLCR": "syscall", + "syscall.INPCK": "syscall", + "syscall.INVALID_FILE_ATTRIBUTES": "syscall", + "syscall.IN_ACCESS": "syscall", + "syscall.IN_ALL_EVENTS": "syscall", + "syscall.IN_ATTRIB": "syscall", + "syscall.IN_CLASSA_HOST": "syscall", + "syscall.IN_CLASSA_MAX": "syscall", + "syscall.IN_CLASSA_NET": "syscall", + "syscall.IN_CLASSA_NSHIFT": "syscall", + "syscall.IN_CLASSB_HOST": "syscall", + "syscall.IN_CLASSB_MAX": "syscall", + "syscall.IN_CLASSB_NET": "syscall", + "syscall.IN_CLASSB_NSHIFT": "syscall", + "syscall.IN_CLASSC_HOST": "syscall", + "syscall.IN_CLASSC_NET": "syscall", + "syscall.IN_CLASSC_NSHIFT": "syscall", + "syscall.IN_CLASSD_HOST": "syscall", + "syscall.IN_CLASSD_NET": "syscall", + "syscall.IN_CLASSD_NSHIFT": "syscall", + "syscall.IN_CLOEXEC": "syscall", + "syscall.IN_CLOSE": "syscall", + "syscall.IN_CLOSE_NOWRITE": "syscall", + "syscall.IN_CLOSE_WRITE": "syscall", + "syscall.IN_CREATE": "syscall", + "syscall.IN_DELETE": "syscall", + "syscall.IN_DELETE_SELF": "syscall", + "syscall.IN_DONT_FOLLOW": "syscall", + "syscall.IN_EXCL_UNLINK": "syscall", + "syscall.IN_IGNORED": "syscall", + "syscall.IN_ISDIR": "syscall", + "syscall.IN_LINKLOCALNETNUM": "syscall", + "syscall.IN_LOOPBACKNET": "syscall", + "syscall.IN_MASK_ADD": "syscall", + "syscall.IN_MODIFY": "syscall", + "syscall.IN_MOVE": "syscall", + "syscall.IN_MOVED_FROM": "syscall", + "syscall.IN_MOVED_TO": "syscall", + "syscall.IN_MOVE_SELF": "syscall", + "syscall.IN_NONBLOCK": "syscall", + "syscall.IN_ONESHOT": "syscall", + "syscall.IN_ONLYDIR": "syscall", + "syscall.IN_OPEN": "syscall", + "syscall.IN_Q_OVERFLOW": "syscall", + "syscall.IN_RFC3021_HOST": "syscall", + "syscall.IN_RFC3021_MASK": "syscall", + "syscall.IN_RFC3021_NET": "syscall", + "syscall.IN_RFC3021_NSHIFT": "syscall", + "syscall.IN_UNMOUNT": "syscall", + "syscall.IOC_IN": "syscall", + "syscall.IOC_INOUT": "syscall", + "syscall.IOC_OUT": "syscall", + "syscall.IOC_VENDOR": "syscall", + "syscall.IOC_WS2": "syscall", + "syscall.IO_REPARSE_TAG_SYMLINK": "syscall", + "syscall.IPMreq": "syscall", + "syscall.IPMreqn": "syscall", + "syscall.IPPROTO_3PC": "syscall", + "syscall.IPPROTO_ADFS": "syscall", + "syscall.IPPROTO_AH": "syscall", + "syscall.IPPROTO_AHIP": "syscall", + "syscall.IPPROTO_APES": "syscall", + "syscall.IPPROTO_ARGUS": "syscall", + "syscall.IPPROTO_AX25": "syscall", + "syscall.IPPROTO_BHA": "syscall", + "syscall.IPPROTO_BLT": "syscall", + "syscall.IPPROTO_BRSATMON": "syscall", + "syscall.IPPROTO_CARP": "syscall", + "syscall.IPPROTO_CFTP": "syscall", + "syscall.IPPROTO_CHAOS": "syscall", + "syscall.IPPROTO_CMTP": "syscall", + "syscall.IPPROTO_COMP": "syscall", + "syscall.IPPROTO_CPHB": "syscall", + "syscall.IPPROTO_CPNX": "syscall", + "syscall.IPPROTO_DCCP": "syscall", + "syscall.IPPROTO_DDP": "syscall", + "syscall.IPPROTO_DGP": "syscall", + "syscall.IPPROTO_DIVERT": "syscall", + "syscall.IPPROTO_DIVERT_INIT": "syscall", + "syscall.IPPROTO_DIVERT_RESP": "syscall", + "syscall.IPPROTO_DONE": "syscall", + "syscall.IPPROTO_DSTOPTS": "syscall", + "syscall.IPPROTO_EGP": "syscall", + "syscall.IPPROTO_EMCON": "syscall", + "syscall.IPPROTO_ENCAP": "syscall", + "syscall.IPPROTO_EON": "syscall", + "syscall.IPPROTO_ESP": "syscall", + "syscall.IPPROTO_ETHERIP": "syscall", + "syscall.IPPROTO_FRAGMENT": "syscall", + "syscall.IPPROTO_GGP": "syscall", + "syscall.IPPROTO_GMTP": "syscall", + "syscall.IPPROTO_GRE": "syscall", + "syscall.IPPROTO_HELLO": "syscall", + "syscall.IPPROTO_HMP": "syscall", + "syscall.IPPROTO_HOPOPTS": "syscall", + "syscall.IPPROTO_ICMP": "syscall", + "syscall.IPPROTO_ICMPV6": "syscall", + "syscall.IPPROTO_IDP": "syscall", + "syscall.IPPROTO_IDPR": "syscall", + "syscall.IPPROTO_IDRP": "syscall", + "syscall.IPPROTO_IGMP": "syscall", + "syscall.IPPROTO_IGP": "syscall", + "syscall.IPPROTO_IGRP": "syscall", + "syscall.IPPROTO_IL": "syscall", + "syscall.IPPROTO_INLSP": "syscall", + "syscall.IPPROTO_INP": "syscall", + "syscall.IPPROTO_IP": "syscall", + "syscall.IPPROTO_IPCOMP": "syscall", + "syscall.IPPROTO_IPCV": "syscall", + "syscall.IPPROTO_IPEIP": "syscall", + "syscall.IPPROTO_IPIP": "syscall", + "syscall.IPPROTO_IPPC": "syscall", + "syscall.IPPROTO_IPV4": "syscall", + "syscall.IPPROTO_IPV6": "syscall", + "syscall.IPPROTO_IPV6_ICMP": "syscall", + "syscall.IPPROTO_IRTP": "syscall", + "syscall.IPPROTO_KRYPTOLAN": "syscall", + "syscall.IPPROTO_LARP": "syscall", + "syscall.IPPROTO_LEAF1": "syscall", + "syscall.IPPROTO_LEAF2": "syscall", + "syscall.IPPROTO_MAX": "syscall", + "syscall.IPPROTO_MAXID": "syscall", + "syscall.IPPROTO_MEAS": "syscall", + "syscall.IPPROTO_MH": "syscall", + "syscall.IPPROTO_MHRP": "syscall", + "syscall.IPPROTO_MICP": "syscall", + "syscall.IPPROTO_MOBILE": "syscall", + "syscall.IPPROTO_MPLS": "syscall", + "syscall.IPPROTO_MTP": "syscall", + "syscall.IPPROTO_MUX": "syscall", + "syscall.IPPROTO_ND": "syscall", + "syscall.IPPROTO_NHRP": "syscall", + "syscall.IPPROTO_NONE": "syscall", + "syscall.IPPROTO_NSP": "syscall", + "syscall.IPPROTO_NVPII": "syscall", + "syscall.IPPROTO_OLD_DIVERT": "syscall", + "syscall.IPPROTO_OSPFIGP": "syscall", + "syscall.IPPROTO_PFSYNC": "syscall", + "syscall.IPPROTO_PGM": "syscall", + "syscall.IPPROTO_PIGP": "syscall", + "syscall.IPPROTO_PIM": "syscall", + "syscall.IPPROTO_PRM": "syscall", + "syscall.IPPROTO_PUP": "syscall", + "syscall.IPPROTO_PVP": "syscall", + "syscall.IPPROTO_RAW": "syscall", + "syscall.IPPROTO_RCCMON": "syscall", + "syscall.IPPROTO_RDP": "syscall", + "syscall.IPPROTO_ROUTING": "syscall", + "syscall.IPPROTO_RSVP": "syscall", + "syscall.IPPROTO_RVD": "syscall", + "syscall.IPPROTO_SATEXPAK": "syscall", + "syscall.IPPROTO_SATMON": "syscall", + "syscall.IPPROTO_SCCSP": "syscall", + "syscall.IPPROTO_SCTP": "syscall", + "syscall.IPPROTO_SDRP": "syscall", + "syscall.IPPROTO_SEND": "syscall", + "syscall.IPPROTO_SEP": "syscall", + "syscall.IPPROTO_SKIP": "syscall", + "syscall.IPPROTO_SPACER": "syscall", + "syscall.IPPROTO_SRPC": "syscall", + "syscall.IPPROTO_ST": "syscall", + "syscall.IPPROTO_SVMTP": "syscall", + "syscall.IPPROTO_SWIPE": "syscall", + "syscall.IPPROTO_TCF": "syscall", + "syscall.IPPROTO_TCP": "syscall", + "syscall.IPPROTO_TLSP": "syscall", + "syscall.IPPROTO_TP": "syscall", + "syscall.IPPROTO_TPXX": "syscall", + "syscall.IPPROTO_TRUNK1": "syscall", + "syscall.IPPROTO_TRUNK2": "syscall", + "syscall.IPPROTO_TTP": "syscall", + "syscall.IPPROTO_UDP": "syscall", + "syscall.IPPROTO_UDPLITE": "syscall", + "syscall.IPPROTO_VINES": "syscall", + "syscall.IPPROTO_VISA": "syscall", + "syscall.IPPROTO_VMTP": "syscall", + "syscall.IPPROTO_VRRP": "syscall", + "syscall.IPPROTO_WBEXPAK": "syscall", + "syscall.IPPROTO_WBMON": "syscall", + "syscall.IPPROTO_WSN": "syscall", + "syscall.IPPROTO_XNET": "syscall", + "syscall.IPPROTO_XTP": "syscall", + "syscall.IPV6_2292DSTOPTS": "syscall", + "syscall.IPV6_2292HOPLIMIT": "syscall", + "syscall.IPV6_2292HOPOPTS": "syscall", + "syscall.IPV6_2292NEXTHOP": "syscall", + "syscall.IPV6_2292PKTINFO": "syscall", + "syscall.IPV6_2292PKTOPTIONS": "syscall", + "syscall.IPV6_2292RTHDR": "syscall", + "syscall.IPV6_ADDRFORM": "syscall", + "syscall.IPV6_ADD_MEMBERSHIP": "syscall", + "syscall.IPV6_AUTHHDR": "syscall", + "syscall.IPV6_AUTH_LEVEL": "syscall", + "syscall.IPV6_AUTOFLOWLABEL": "syscall", + "syscall.IPV6_BINDANY": "syscall", + "syscall.IPV6_BINDV6ONLY": "syscall", + "syscall.IPV6_BOUND_IF": "syscall", + "syscall.IPV6_CHECKSUM": "syscall", + "syscall.IPV6_DEFAULT_MULTICAST_HOPS": "syscall", + "syscall.IPV6_DEFAULT_MULTICAST_LOOP": "syscall", + "syscall.IPV6_DEFHLIM": "syscall", + "syscall.IPV6_DONTFRAG": "syscall", + "syscall.IPV6_DROP_MEMBERSHIP": "syscall", + "syscall.IPV6_DSTOPTS": "syscall", + "syscall.IPV6_ESP_NETWORK_LEVEL": "syscall", + "syscall.IPV6_ESP_TRANS_LEVEL": "syscall", + "syscall.IPV6_FAITH": "syscall", + "syscall.IPV6_FLOWINFO_MASK": "syscall", + "syscall.IPV6_FLOWLABEL_MASK": "syscall", + "syscall.IPV6_FRAGTTL": "syscall", + "syscall.IPV6_FW_ADD": "syscall", + "syscall.IPV6_FW_DEL": "syscall", + "syscall.IPV6_FW_FLUSH": "syscall", + "syscall.IPV6_FW_GET": "syscall", + "syscall.IPV6_FW_ZERO": "syscall", + "syscall.IPV6_HLIMDEC": "syscall", + "syscall.IPV6_HOPLIMIT": "syscall", + "syscall.IPV6_HOPOPTS": "syscall", + "syscall.IPV6_IPCOMP_LEVEL": "syscall", + "syscall.IPV6_IPSEC_POLICY": "syscall", + "syscall.IPV6_JOIN_ANYCAST": "syscall", + "syscall.IPV6_JOIN_GROUP": "syscall", + "syscall.IPV6_LEAVE_ANYCAST": "syscall", + "syscall.IPV6_LEAVE_GROUP": "syscall", + "syscall.IPV6_MAXHLIM": "syscall", + "syscall.IPV6_MAXOPTHDR": "syscall", + "syscall.IPV6_MAXPACKET": "syscall", + "syscall.IPV6_MAX_GROUP_SRC_FILTER": "syscall", + "syscall.IPV6_MAX_MEMBERSHIPS": "syscall", + "syscall.IPV6_MAX_SOCK_SRC_FILTER": "syscall", + "syscall.IPV6_MIN_MEMBERSHIPS": "syscall", + "syscall.IPV6_MMTU": "syscall", + "syscall.IPV6_MSFILTER": "syscall", + "syscall.IPV6_MTU": "syscall", + "syscall.IPV6_MTU_DISCOVER": "syscall", + "syscall.IPV6_MULTICAST_HOPS": "syscall", + "syscall.IPV6_MULTICAST_IF": "syscall", + "syscall.IPV6_MULTICAST_LOOP": "syscall", + "syscall.IPV6_NEXTHOP": "syscall", + "syscall.IPV6_OPTIONS": "syscall", + "syscall.IPV6_PATHMTU": "syscall", + "syscall.IPV6_PIPEX": "syscall", + "syscall.IPV6_PKTINFO": "syscall", + "syscall.IPV6_PMTUDISC_DO": "syscall", + "syscall.IPV6_PMTUDISC_DONT": "syscall", + "syscall.IPV6_PMTUDISC_PROBE": "syscall", + "syscall.IPV6_PMTUDISC_WANT": "syscall", + "syscall.IPV6_PORTRANGE": "syscall", + "syscall.IPV6_PORTRANGE_DEFAULT": "syscall", + "syscall.IPV6_PORTRANGE_HIGH": "syscall", + "syscall.IPV6_PORTRANGE_LOW": "syscall", + "syscall.IPV6_PREFER_TEMPADDR": "syscall", + "syscall.IPV6_RECVDSTOPTS": "syscall", + "syscall.IPV6_RECVDSTPORT": "syscall", + "syscall.IPV6_RECVERR": "syscall", + "syscall.IPV6_RECVHOPLIMIT": "syscall", + "syscall.IPV6_RECVHOPOPTS": "syscall", + "syscall.IPV6_RECVPATHMTU": "syscall", + "syscall.IPV6_RECVPKTINFO": "syscall", + "syscall.IPV6_RECVRTHDR": "syscall", + "syscall.IPV6_RECVTCLASS": "syscall", + "syscall.IPV6_ROUTER_ALERT": "syscall", + "syscall.IPV6_RTABLE": "syscall", + "syscall.IPV6_RTHDR": "syscall", + "syscall.IPV6_RTHDRDSTOPTS": "syscall", + "syscall.IPV6_RTHDR_LOOSE": "syscall", + "syscall.IPV6_RTHDR_STRICT": "syscall", + "syscall.IPV6_RTHDR_TYPE_0": "syscall", + "syscall.IPV6_RXDSTOPTS": "syscall", + "syscall.IPV6_RXHOPOPTS": "syscall", + "syscall.IPV6_SOCKOPT_RESERVED1": "syscall", + "syscall.IPV6_TCLASS": "syscall", + "syscall.IPV6_UNICAST_HOPS": "syscall", + "syscall.IPV6_USE_MIN_MTU": "syscall", + "syscall.IPV6_V6ONLY": "syscall", + "syscall.IPV6_VERSION": "syscall", + "syscall.IPV6_VERSION_MASK": "syscall", + "syscall.IPV6_XFRM_POLICY": "syscall", + "syscall.IP_ADD_MEMBERSHIP": "syscall", + "syscall.IP_ADD_SOURCE_MEMBERSHIP": "syscall", + "syscall.IP_AUTH_LEVEL": "syscall", + "syscall.IP_BINDANY": "syscall", + "syscall.IP_BLOCK_SOURCE": "syscall", + "syscall.IP_BOUND_IF": "syscall", + "syscall.IP_DEFAULT_MULTICAST_LOOP": "syscall", + "syscall.IP_DEFAULT_MULTICAST_TTL": "syscall", + "syscall.IP_DF": "syscall", + "syscall.IP_DIVERTFL": "syscall", + "syscall.IP_DONTFRAG": "syscall", + "syscall.IP_DROP_MEMBERSHIP": "syscall", + "syscall.IP_DROP_SOURCE_MEMBERSHIP": "syscall", + "syscall.IP_DUMMYNET3": "syscall", + "syscall.IP_DUMMYNET_CONFIGURE": "syscall", + "syscall.IP_DUMMYNET_DEL": "syscall", + "syscall.IP_DUMMYNET_FLUSH": "syscall", + "syscall.IP_DUMMYNET_GET": "syscall", + "syscall.IP_EF": "syscall", + "syscall.IP_ERRORMTU": "syscall", + "syscall.IP_ESP_NETWORK_LEVEL": "syscall", + "syscall.IP_ESP_TRANS_LEVEL": "syscall", + "syscall.IP_FAITH": "syscall", + "syscall.IP_FREEBIND": "syscall", + "syscall.IP_FW3": "syscall", + "syscall.IP_FW_ADD": "syscall", + "syscall.IP_FW_DEL": "syscall", + "syscall.IP_FW_FLUSH": "syscall", + "syscall.IP_FW_GET": "syscall", + "syscall.IP_FW_NAT_CFG": "syscall", + "syscall.IP_FW_NAT_DEL": "syscall", + "syscall.IP_FW_NAT_GET_CONFIG": "syscall", + "syscall.IP_FW_NAT_GET_LOG": "syscall", + "syscall.IP_FW_RESETLOG": "syscall", + "syscall.IP_FW_TABLE_ADD": "syscall", + "syscall.IP_FW_TABLE_DEL": "syscall", + "syscall.IP_FW_TABLE_FLUSH": "syscall", + "syscall.IP_FW_TABLE_GETSIZE": "syscall", + "syscall.IP_FW_TABLE_LIST": "syscall", + "syscall.IP_FW_ZERO": "syscall", + "syscall.IP_HDRINCL": "syscall", + "syscall.IP_IPCOMP_LEVEL": "syscall", + "syscall.IP_IPSECFLOWINFO": "syscall", + "syscall.IP_IPSEC_LOCAL_AUTH": "syscall", + "syscall.IP_IPSEC_LOCAL_CRED": "syscall", + "syscall.IP_IPSEC_LOCAL_ID": "syscall", + "syscall.IP_IPSEC_POLICY": "syscall", + "syscall.IP_IPSEC_REMOTE_AUTH": "syscall", + "syscall.IP_IPSEC_REMOTE_CRED": "syscall", + "syscall.IP_IPSEC_REMOTE_ID": "syscall", + "syscall.IP_MAXPACKET": "syscall", + "syscall.IP_MAX_GROUP_SRC_FILTER": "syscall", + "syscall.IP_MAX_MEMBERSHIPS": "syscall", + "syscall.IP_MAX_SOCK_MUTE_FILTER": "syscall", + "syscall.IP_MAX_SOCK_SRC_FILTER": "syscall", + "syscall.IP_MAX_SOURCE_FILTER": "syscall", + "syscall.IP_MF": "syscall", + "syscall.IP_MINFRAGSIZE": "syscall", + "syscall.IP_MINTTL": "syscall", + "syscall.IP_MIN_MEMBERSHIPS": "syscall", + "syscall.IP_MSFILTER": "syscall", + "syscall.IP_MSS": "syscall", + "syscall.IP_MTU": "syscall", + "syscall.IP_MTU_DISCOVER": "syscall", + "syscall.IP_MULTICAST_IF": "syscall", + "syscall.IP_MULTICAST_IFINDEX": "syscall", + "syscall.IP_MULTICAST_LOOP": "syscall", + "syscall.IP_MULTICAST_TTL": "syscall", + "syscall.IP_MULTICAST_VIF": "syscall", + "syscall.IP_NAT__XXX": "syscall", + "syscall.IP_OFFMASK": "syscall", + "syscall.IP_OLD_FW_ADD": "syscall", + "syscall.IP_OLD_FW_DEL": "syscall", + "syscall.IP_OLD_FW_FLUSH": "syscall", + "syscall.IP_OLD_FW_GET": "syscall", + "syscall.IP_OLD_FW_RESETLOG": "syscall", + "syscall.IP_OLD_FW_ZERO": "syscall", + "syscall.IP_ONESBCAST": "syscall", + "syscall.IP_OPTIONS": "syscall", + "syscall.IP_ORIGDSTADDR": "syscall", + "syscall.IP_PASSSEC": "syscall", + "syscall.IP_PIPEX": "syscall", + "syscall.IP_PKTINFO": "syscall", + "syscall.IP_PKTOPTIONS": "syscall", + "syscall.IP_PMTUDISC": "syscall", + "syscall.IP_PMTUDISC_DO": "syscall", + "syscall.IP_PMTUDISC_DONT": "syscall", + "syscall.IP_PMTUDISC_PROBE": "syscall", + "syscall.IP_PMTUDISC_WANT": "syscall", + "syscall.IP_PORTRANGE": "syscall", + "syscall.IP_PORTRANGE_DEFAULT": "syscall", + "syscall.IP_PORTRANGE_HIGH": "syscall", + "syscall.IP_PORTRANGE_LOW": "syscall", + "syscall.IP_RECVDSTADDR": "syscall", + "syscall.IP_RECVDSTPORT": "syscall", + "syscall.IP_RECVERR": "syscall", + "syscall.IP_RECVIF": "syscall", + "syscall.IP_RECVOPTS": "syscall", + "syscall.IP_RECVORIGDSTADDR": "syscall", + "syscall.IP_RECVPKTINFO": "syscall", + "syscall.IP_RECVRETOPTS": "syscall", + "syscall.IP_RECVRTABLE": "syscall", + "syscall.IP_RECVTOS": "syscall", + "syscall.IP_RECVTTL": "syscall", + "syscall.IP_RETOPTS": "syscall", + "syscall.IP_RF": "syscall", + "syscall.IP_ROUTER_ALERT": "syscall", + "syscall.IP_RSVP_OFF": "syscall", + "syscall.IP_RSVP_ON": "syscall", + "syscall.IP_RSVP_VIF_OFF": "syscall", + "syscall.IP_RSVP_VIF_ON": "syscall", + "syscall.IP_RTABLE": "syscall", + "syscall.IP_SENDSRCADDR": "syscall", + "syscall.IP_STRIPHDR": "syscall", + "syscall.IP_TOS": "syscall", + "syscall.IP_TRAFFIC_MGT_BACKGROUND": "syscall", + "syscall.IP_TRANSPARENT": "syscall", + "syscall.IP_TTL": "syscall", + "syscall.IP_UNBLOCK_SOURCE": "syscall", + "syscall.IP_XFRM_POLICY": "syscall", + "syscall.IPv6MTUInfo": "syscall", + "syscall.IPv6Mreq": "syscall", + "syscall.ISIG": "syscall", + "syscall.ISTRIP": "syscall", + "syscall.IUCLC": "syscall", + "syscall.IUTF8": "syscall", + "syscall.IXANY": "syscall", + "syscall.IXOFF": "syscall", + "syscall.IXON": "syscall", + "syscall.IfAddrmsg": "syscall", + "syscall.IfAnnounceMsghdr": "syscall", + "syscall.IfData": "syscall", + "syscall.IfInfomsg": "syscall", + "syscall.IfMsghdr": "syscall", + "syscall.IfaMsghdr": "syscall", + "syscall.IfmaMsghdr": "syscall", + "syscall.IfmaMsghdr2": "syscall", + "syscall.ImplementsGetwd": "syscall", + "syscall.Inet4Pktinfo": "syscall", + "syscall.Inet6Pktinfo": "syscall", + "syscall.InotifyAddWatch": "syscall", + "syscall.InotifyEvent": "syscall", + "syscall.InotifyInit": "syscall", + "syscall.InotifyInit1": "syscall", + "syscall.InotifyRmWatch": "syscall", + "syscall.InterfaceAddrMessage": "syscall", + "syscall.InterfaceAnnounceMessage": "syscall", + "syscall.InterfaceInfo": "syscall", + "syscall.InterfaceMessage": "syscall", + "syscall.InterfaceMulticastAddrMessage": "syscall", + "syscall.InvalidHandle": "syscall", + "syscall.Ioperm": "syscall", + "syscall.Iopl": "syscall", + "syscall.Iovec": "syscall", + "syscall.IpAdapterInfo": "syscall", + "syscall.IpAddrString": "syscall", + "syscall.IpAddressString": "syscall", + "syscall.IpMaskString": "syscall", + "syscall.Issetugid": "syscall", + "syscall.KEY_ALL_ACCESS": "syscall", + "syscall.KEY_CREATE_LINK": "syscall", + "syscall.KEY_CREATE_SUB_KEY": "syscall", + "syscall.KEY_ENUMERATE_SUB_KEYS": "syscall", + "syscall.KEY_EXECUTE": "syscall", + "syscall.KEY_NOTIFY": "syscall", + "syscall.KEY_QUERY_VALUE": "syscall", + "syscall.KEY_READ": "syscall", + "syscall.KEY_SET_VALUE": "syscall", + "syscall.KEY_WOW64_32KEY": "syscall", + "syscall.KEY_WOW64_64KEY": "syscall", + "syscall.KEY_WRITE": "syscall", + "syscall.Kevent": "syscall", + "syscall.Kevent_t": "syscall", + "syscall.Kill": "syscall", + "syscall.Klogctl": "syscall", + "syscall.Kqueue": "syscall", + "syscall.LANG_ENGLISH": "syscall", + "syscall.LAYERED_PROTOCOL": "syscall", + "syscall.LCNT_OVERLOAD_FLUSH": "syscall", + "syscall.LINUX_REBOOT_CMD_CAD_OFF": "syscall", + "syscall.LINUX_REBOOT_CMD_CAD_ON": "syscall", + "syscall.LINUX_REBOOT_CMD_HALT": "syscall", + "syscall.LINUX_REBOOT_CMD_KEXEC": "syscall", + "syscall.LINUX_REBOOT_CMD_POWER_OFF": "syscall", + "syscall.LINUX_REBOOT_CMD_RESTART": "syscall", + "syscall.LINUX_REBOOT_CMD_RESTART2": "syscall", + "syscall.LINUX_REBOOT_CMD_SW_SUSPEND": "syscall", + "syscall.LINUX_REBOOT_MAGIC1": "syscall", + "syscall.LINUX_REBOOT_MAGIC2": "syscall", + "syscall.LOCK_EX": "syscall", + "syscall.LOCK_NB": "syscall", + "syscall.LOCK_SH": "syscall", + "syscall.LOCK_UN": "syscall", + "syscall.LazyDLL": "syscall", + "syscall.LazyProc": "syscall", + "syscall.Lchown": "syscall", + "syscall.Linger": "syscall", + "syscall.Link": "syscall", + "syscall.Listen": "syscall", + "syscall.Listxattr": "syscall", + "syscall.LoadCancelIoEx": "syscall", + "syscall.LoadConnectEx": "syscall", + "syscall.LoadCreateSymbolicLink": "syscall", + "syscall.LoadDLL": "syscall", + "syscall.LoadGetAddrInfo": "syscall", + "syscall.LoadLibrary": "syscall", + "syscall.LoadSetFileCompletionNotificationModes": "syscall", + "syscall.LocalFree": "syscall", + "syscall.Log2phys_t": "syscall", + "syscall.LookupAccountName": "syscall", + "syscall.LookupAccountSid": "syscall", + "syscall.LookupSID": "syscall", + "syscall.LsfJump": "syscall", + "syscall.LsfSocket": "syscall", + "syscall.LsfStmt": "syscall", + "syscall.Lstat": "syscall", + "syscall.MADV_AUTOSYNC": "syscall", + "syscall.MADV_CAN_REUSE": "syscall", + "syscall.MADV_CORE": "syscall", + "syscall.MADV_DOFORK": "syscall", + "syscall.MADV_DONTFORK": "syscall", + "syscall.MADV_DONTNEED": "syscall", + "syscall.MADV_FREE": "syscall", + "syscall.MADV_FREE_REUSABLE": "syscall", + "syscall.MADV_FREE_REUSE": "syscall", + "syscall.MADV_HUGEPAGE": "syscall", + "syscall.MADV_HWPOISON": "syscall", + "syscall.MADV_MERGEABLE": "syscall", + "syscall.MADV_NOCORE": "syscall", + "syscall.MADV_NOHUGEPAGE": "syscall", + "syscall.MADV_NORMAL": "syscall", + "syscall.MADV_NOSYNC": "syscall", + "syscall.MADV_PROTECT": "syscall", + "syscall.MADV_RANDOM": "syscall", + "syscall.MADV_REMOVE": "syscall", + "syscall.MADV_SEQUENTIAL": "syscall", + "syscall.MADV_SPACEAVAIL": "syscall", + "syscall.MADV_UNMERGEABLE": "syscall", + "syscall.MADV_WILLNEED": "syscall", + "syscall.MADV_ZERO_WIRED_PAGES": "syscall", + "syscall.MAP_32BIT": "syscall", + "syscall.MAP_ALIGNED_SUPER": "syscall", + "syscall.MAP_ALIGNMENT_16MB": "syscall", + "syscall.MAP_ALIGNMENT_1TB": "syscall", + "syscall.MAP_ALIGNMENT_256TB": "syscall", + "syscall.MAP_ALIGNMENT_4GB": "syscall", + "syscall.MAP_ALIGNMENT_64KB": "syscall", + "syscall.MAP_ALIGNMENT_64PB": "syscall", + "syscall.MAP_ALIGNMENT_MASK": "syscall", + "syscall.MAP_ALIGNMENT_SHIFT": "syscall", + "syscall.MAP_ANON": "syscall", + "syscall.MAP_ANONYMOUS": "syscall", + "syscall.MAP_COPY": "syscall", + "syscall.MAP_DENYWRITE": "syscall", + "syscall.MAP_EXECUTABLE": "syscall", + "syscall.MAP_FILE": "syscall", + "syscall.MAP_FIXED": "syscall", + "syscall.MAP_FLAGMASK": "syscall", + "syscall.MAP_GROWSDOWN": "syscall", + "syscall.MAP_HASSEMAPHORE": "syscall", + "syscall.MAP_HUGETLB": "syscall", + "syscall.MAP_INHERIT": "syscall", + "syscall.MAP_INHERIT_COPY": "syscall", + "syscall.MAP_INHERIT_DEFAULT": "syscall", + "syscall.MAP_INHERIT_DONATE_COPY": "syscall", + "syscall.MAP_INHERIT_NONE": "syscall", + "syscall.MAP_INHERIT_SHARE": "syscall", + "syscall.MAP_JIT": "syscall", + "syscall.MAP_LOCKED": "syscall", + "syscall.MAP_NOCACHE": "syscall", + "syscall.MAP_NOCORE": "syscall", + "syscall.MAP_NOEXTEND": "syscall", + "syscall.MAP_NONBLOCK": "syscall", + "syscall.MAP_NORESERVE": "syscall", + "syscall.MAP_NOSYNC": "syscall", + "syscall.MAP_POPULATE": "syscall", + "syscall.MAP_PREFAULT_READ": "syscall", + "syscall.MAP_PRIVATE": "syscall", + "syscall.MAP_RENAME": "syscall", + "syscall.MAP_RESERVED0080": "syscall", + "syscall.MAP_RESERVED0100": "syscall", + "syscall.MAP_SHARED": "syscall", + "syscall.MAP_STACK": "syscall", + "syscall.MAP_TRYFIXED": "syscall", + "syscall.MAP_TYPE": "syscall", + "syscall.MAP_WIRED": "syscall", + "syscall.MAXIMUM_REPARSE_DATA_BUFFER_SIZE": "syscall", + "syscall.MAXLEN_IFDESCR": "syscall", + "syscall.MAXLEN_PHYSADDR": "syscall", + "syscall.MAX_ADAPTER_ADDRESS_LENGTH": "syscall", + "syscall.MAX_ADAPTER_DESCRIPTION_LENGTH": "syscall", + "syscall.MAX_ADAPTER_NAME_LENGTH": "syscall", + "syscall.MAX_COMPUTERNAME_LENGTH": "syscall", + "syscall.MAX_INTERFACE_NAME_LEN": "syscall", + "syscall.MAX_LONG_PATH": "syscall", + "syscall.MAX_PATH": "syscall", + "syscall.MAX_PROTOCOL_CHAIN": "syscall", + "syscall.MCL_CURRENT": "syscall", + "syscall.MCL_FUTURE": "syscall", + "syscall.MNT_DETACH": "syscall", + "syscall.MNT_EXPIRE": "syscall", + "syscall.MNT_FORCE": "syscall", + "syscall.MSG_BCAST": "syscall", + "syscall.MSG_CMSG_CLOEXEC": "syscall", + "syscall.MSG_COMPAT": "syscall", + "syscall.MSG_CONFIRM": "syscall", + "syscall.MSG_CONTROLMBUF": "syscall", + "syscall.MSG_CTRUNC": "syscall", + "syscall.MSG_DONTROUTE": "syscall", + "syscall.MSG_DONTWAIT": "syscall", + "syscall.MSG_EOF": "syscall", + "syscall.MSG_EOR": "syscall", + "syscall.MSG_ERRQUEUE": "syscall", + "syscall.MSG_FASTOPEN": "syscall", + "syscall.MSG_FIN": "syscall", + "syscall.MSG_FLUSH": "syscall", + "syscall.MSG_HAVEMORE": "syscall", + "syscall.MSG_HOLD": "syscall", + "syscall.MSG_IOVUSRSPACE": "syscall", + "syscall.MSG_LENUSRSPACE": "syscall", + "syscall.MSG_MCAST": "syscall", + "syscall.MSG_MORE": "syscall", + "syscall.MSG_NAMEMBUF": "syscall", + "syscall.MSG_NBIO": "syscall", + "syscall.MSG_NEEDSA": "syscall", + "syscall.MSG_NOSIGNAL": "syscall", + "syscall.MSG_NOTIFICATION": "syscall", + "syscall.MSG_OOB": "syscall", + "syscall.MSG_PEEK": "syscall", + "syscall.MSG_PROXY": "syscall", + "syscall.MSG_RCVMORE": "syscall", + "syscall.MSG_RST": "syscall", + "syscall.MSG_SEND": "syscall", + "syscall.MSG_SYN": "syscall", + "syscall.MSG_TRUNC": "syscall", + "syscall.MSG_TRYHARD": "syscall", + "syscall.MSG_USERFLAGS": "syscall", + "syscall.MSG_WAITALL": "syscall", + "syscall.MSG_WAITFORONE": "syscall", + "syscall.MSG_WAITSTREAM": "syscall", + "syscall.MS_ACTIVE": "syscall", + "syscall.MS_ASYNC": "syscall", + "syscall.MS_BIND": "syscall", + "syscall.MS_DEACTIVATE": "syscall", + "syscall.MS_DIRSYNC": "syscall", + "syscall.MS_INVALIDATE": "syscall", + "syscall.MS_I_VERSION": "syscall", + "syscall.MS_KERNMOUNT": "syscall", + "syscall.MS_KILLPAGES": "syscall", + "syscall.MS_MANDLOCK": "syscall", + "syscall.MS_MGC_MSK": "syscall", + "syscall.MS_MGC_VAL": "syscall", + "syscall.MS_MOVE": "syscall", + "syscall.MS_NOATIME": "syscall", + "syscall.MS_NODEV": "syscall", + "syscall.MS_NODIRATIME": "syscall", + "syscall.MS_NOEXEC": "syscall", + "syscall.MS_NOSUID": "syscall", + "syscall.MS_NOUSER": "syscall", + "syscall.MS_POSIXACL": "syscall", + "syscall.MS_PRIVATE": "syscall", + "syscall.MS_RDONLY": "syscall", + "syscall.MS_REC": "syscall", + "syscall.MS_RELATIME": "syscall", + "syscall.MS_REMOUNT": "syscall", + "syscall.MS_RMT_MASK": "syscall", + "syscall.MS_SHARED": "syscall", + "syscall.MS_SILENT": "syscall", + "syscall.MS_SLAVE": "syscall", + "syscall.MS_STRICTATIME": "syscall", + "syscall.MS_SYNC": "syscall", + "syscall.MS_SYNCHRONOUS": "syscall", + "syscall.MS_UNBINDABLE": "syscall", + "syscall.Madvise": "syscall", + "syscall.MapViewOfFile": "syscall", + "syscall.MaxTokenInfoClass": "syscall", + "syscall.Mclpool": "syscall", + "syscall.MibIfRow": "syscall", + "syscall.Mkdir": "syscall", + "syscall.Mkdirat": "syscall", + "syscall.Mkfifo": "syscall", + "syscall.Mknod": "syscall", + "syscall.Mknodat": "syscall", + "syscall.Mlock": "syscall", + "syscall.Mlockall": "syscall", + "syscall.Mmap": "syscall", + "syscall.Mount": "syscall", + "syscall.MoveFile": "syscall", + "syscall.Mprotect": "syscall", + "syscall.Msghdr": "syscall", + "syscall.Munlock": "syscall", + "syscall.Munlockall": "syscall", + "syscall.Munmap": "syscall", + "syscall.MustLoadDLL": "syscall", + "syscall.NAME_MAX": "syscall", + "syscall.NETLINK_ADD_MEMBERSHIP": "syscall", + "syscall.NETLINK_AUDIT": "syscall", + "syscall.NETLINK_BROADCAST_ERROR": "syscall", + "syscall.NETLINK_CONNECTOR": "syscall", + "syscall.NETLINK_DNRTMSG": "syscall", + "syscall.NETLINK_DROP_MEMBERSHIP": "syscall", + "syscall.NETLINK_ECRYPTFS": "syscall", + "syscall.NETLINK_FIB_LOOKUP": "syscall", + "syscall.NETLINK_FIREWALL": "syscall", + "syscall.NETLINK_GENERIC": "syscall", + "syscall.NETLINK_INET_DIAG": "syscall", + "syscall.NETLINK_IP6_FW": "syscall", + "syscall.NETLINK_ISCSI": "syscall", + "syscall.NETLINK_KOBJECT_UEVENT": "syscall", + "syscall.NETLINK_NETFILTER": "syscall", + "syscall.NETLINK_NFLOG": "syscall", + "syscall.NETLINK_NO_ENOBUFS": "syscall", + "syscall.NETLINK_PKTINFO": "syscall", + "syscall.NETLINK_RDMA": "syscall", + "syscall.NETLINK_ROUTE": "syscall", + "syscall.NETLINK_SCSITRANSPORT": "syscall", + "syscall.NETLINK_SELINUX": "syscall", + "syscall.NETLINK_UNUSED": "syscall", + "syscall.NETLINK_USERSOCK": "syscall", + "syscall.NETLINK_XFRM": "syscall", + "syscall.NET_RT_DUMP": "syscall", + "syscall.NET_RT_DUMP2": "syscall", + "syscall.NET_RT_FLAGS": "syscall", + "syscall.NET_RT_IFLIST": "syscall", + "syscall.NET_RT_IFLIST2": "syscall", + "syscall.NET_RT_IFLISTL": "syscall", + "syscall.NET_RT_IFMALIST": "syscall", + "syscall.NET_RT_MAXID": "syscall", + "syscall.NET_RT_OIFLIST": "syscall", + "syscall.NET_RT_OOIFLIST": "syscall", + "syscall.NET_RT_STAT": "syscall", + "syscall.NET_RT_STATS": "syscall", + "syscall.NET_RT_TABLE": "syscall", + "syscall.NET_RT_TRASH": "syscall", + "syscall.NLA_ALIGNTO": "syscall", + "syscall.NLA_F_NESTED": "syscall", + "syscall.NLA_F_NET_BYTEORDER": "syscall", + "syscall.NLA_HDRLEN": "syscall", + "syscall.NLMSG_ALIGNTO": "syscall", + "syscall.NLMSG_DONE": "syscall", + "syscall.NLMSG_ERROR": "syscall", + "syscall.NLMSG_HDRLEN": "syscall", + "syscall.NLMSG_MIN_TYPE": "syscall", + "syscall.NLMSG_NOOP": "syscall", + "syscall.NLMSG_OVERRUN": "syscall", + "syscall.NLM_F_ACK": "syscall", + "syscall.NLM_F_APPEND": "syscall", + "syscall.NLM_F_ATOMIC": "syscall", + "syscall.NLM_F_CREATE": "syscall", + "syscall.NLM_F_DUMP": "syscall", + "syscall.NLM_F_ECHO": "syscall", + "syscall.NLM_F_EXCL": "syscall", + "syscall.NLM_F_MATCH": "syscall", + "syscall.NLM_F_MULTI": "syscall", + "syscall.NLM_F_REPLACE": "syscall", + "syscall.NLM_F_REQUEST": "syscall", + "syscall.NLM_F_ROOT": "syscall", + "syscall.NOFLSH": "syscall", + "syscall.NOTE_ABSOLUTE": "syscall", + "syscall.NOTE_ATTRIB": "syscall", + "syscall.NOTE_CHILD": "syscall", + "syscall.NOTE_DELETE": "syscall", + "syscall.NOTE_EOF": "syscall", + "syscall.NOTE_EXEC": "syscall", + "syscall.NOTE_EXIT": "syscall", + "syscall.NOTE_EXITSTATUS": "syscall", + "syscall.NOTE_EXTEND": "syscall", + "syscall.NOTE_FFAND": "syscall", + "syscall.NOTE_FFCOPY": "syscall", + "syscall.NOTE_FFCTRLMASK": "syscall", + "syscall.NOTE_FFLAGSMASK": "syscall", + "syscall.NOTE_FFNOP": "syscall", + "syscall.NOTE_FFOR": "syscall", + "syscall.NOTE_FORK": "syscall", + "syscall.NOTE_LINK": "syscall", + "syscall.NOTE_LOWAT": "syscall", + "syscall.NOTE_NONE": "syscall", + "syscall.NOTE_NSECONDS": "syscall", + "syscall.NOTE_PCTRLMASK": "syscall", + "syscall.NOTE_PDATAMASK": "syscall", + "syscall.NOTE_REAP": "syscall", + "syscall.NOTE_RENAME": "syscall", + "syscall.NOTE_RESOURCEEND": "syscall", + "syscall.NOTE_REVOKE": "syscall", + "syscall.NOTE_SECONDS": "syscall", + "syscall.NOTE_SIGNAL": "syscall", + "syscall.NOTE_TRACK": "syscall", + "syscall.NOTE_TRACKERR": "syscall", + "syscall.NOTE_TRIGGER": "syscall", + "syscall.NOTE_TRUNCATE": "syscall", + "syscall.NOTE_USECONDS": "syscall", + "syscall.NOTE_VM_ERROR": "syscall", + "syscall.NOTE_VM_PRESSURE": "syscall", + "syscall.NOTE_VM_PRESSURE_SUDDEN_TERMINATE": "syscall", + "syscall.NOTE_VM_PRESSURE_TERMINATE": "syscall", + "syscall.NOTE_WRITE": "syscall", + "syscall.NameCanonical": "syscall", + "syscall.NameCanonicalEx": "syscall", + "syscall.NameDisplay": "syscall", + "syscall.NameDnsDomain": "syscall", + "syscall.NameFullyQualifiedDN": "syscall", + "syscall.NameSamCompatible": "syscall", + "syscall.NameServicePrincipal": "syscall", + "syscall.NameUniqueId": "syscall", + "syscall.NameUnknown": "syscall", + "syscall.NameUserPrincipal": "syscall", + "syscall.Nanosleep": "syscall", + "syscall.NetApiBufferFree": "syscall", + "syscall.NetGetJoinInformation": "syscall", + "syscall.NetSetupDomainName": "syscall", + "syscall.NetSetupUnjoined": "syscall", + "syscall.NetSetupUnknownStatus": "syscall", + "syscall.NetSetupWorkgroupName": "syscall", + "syscall.NetUserGetInfo": "syscall", + "syscall.NetlinkMessage": "syscall", + "syscall.NetlinkRIB": "syscall", + "syscall.NetlinkRouteAttr": "syscall", + "syscall.NetlinkRouteRequest": "syscall", + "syscall.NewCallback": "syscall", + "syscall.NewCallbackCDecl": "syscall", + "syscall.NewLazyDLL": "syscall", + "syscall.NlAttr": "syscall", + "syscall.NlMsgerr": "syscall", + "syscall.NlMsghdr": "syscall", + "syscall.NsecToFiletime": "syscall", + "syscall.NsecToTimespec": "syscall", + "syscall.NsecToTimeval": "syscall", + "syscall.Ntohs": "syscall", + "syscall.OCRNL": "syscall", + "syscall.OFDEL": "syscall", + "syscall.OFILL": "syscall", + "syscall.OFIOGETBMAP": "syscall", + "syscall.OID_PKIX_KP_SERVER_AUTH": "syscall", + "syscall.OID_SERVER_GATED_CRYPTO": "syscall", + "syscall.OID_SGC_NETSCAPE": "syscall", + "syscall.OLCUC": "syscall", + "syscall.ONLCR": "syscall", + "syscall.ONLRET": "syscall", + "syscall.ONOCR": "syscall", + "syscall.ONOEOT": "syscall", + "syscall.OPEN_ALWAYS": "syscall", + "syscall.OPEN_EXISTING": "syscall", + "syscall.OPOST": "syscall", + "syscall.O_ACCMODE": "syscall", + "syscall.O_ALERT": "syscall", + "syscall.O_ALT_IO": "syscall", + "syscall.O_APPEND": "syscall", + "syscall.O_ASYNC": "syscall", + "syscall.O_CLOEXEC": "syscall", + "syscall.O_CREAT": "syscall", + "syscall.O_DIRECT": "syscall", + "syscall.O_DIRECTORY": "syscall", + "syscall.O_DSYNC": "syscall", + "syscall.O_EVTONLY": "syscall", + "syscall.O_EXCL": "syscall", + "syscall.O_EXEC": "syscall", + "syscall.O_EXLOCK": "syscall", + "syscall.O_FSYNC": "syscall", + "syscall.O_LARGEFILE": "syscall", + "syscall.O_NDELAY": "syscall", + "syscall.O_NOATIME": "syscall", + "syscall.O_NOCTTY": "syscall", + "syscall.O_NOFOLLOW": "syscall", + "syscall.O_NONBLOCK": "syscall", + "syscall.O_NOSIGPIPE": "syscall", + "syscall.O_POPUP": "syscall", + "syscall.O_RDONLY": "syscall", + "syscall.O_RDWR": "syscall", + "syscall.O_RSYNC": "syscall", + "syscall.O_SHLOCK": "syscall", + "syscall.O_SYMLINK": "syscall", + "syscall.O_SYNC": "syscall", + "syscall.O_TRUNC": "syscall", + "syscall.O_TTY_INIT": "syscall", + "syscall.O_WRONLY": "syscall", + "syscall.Open": "syscall", + "syscall.OpenCurrentProcessToken": "syscall", + "syscall.OpenProcess": "syscall", + "syscall.OpenProcessToken": "syscall", + "syscall.Openat": "syscall", + "syscall.Overlapped": "syscall", + "syscall.PACKET_ADD_MEMBERSHIP": "syscall", + "syscall.PACKET_BROADCAST": "syscall", + "syscall.PACKET_DROP_MEMBERSHIP": "syscall", + "syscall.PACKET_FASTROUTE": "syscall", + "syscall.PACKET_HOST": "syscall", + "syscall.PACKET_LOOPBACK": "syscall", + "syscall.PACKET_MR_ALLMULTI": "syscall", + "syscall.PACKET_MR_MULTICAST": "syscall", + "syscall.PACKET_MR_PROMISC": "syscall", + "syscall.PACKET_MULTICAST": "syscall", + "syscall.PACKET_OTHERHOST": "syscall", + "syscall.PACKET_OUTGOING": "syscall", + "syscall.PACKET_RECV_OUTPUT": "syscall", + "syscall.PACKET_RX_RING": "syscall", + "syscall.PACKET_STATISTICS": "syscall", + "syscall.PAGE_EXECUTE_READ": "syscall", + "syscall.PAGE_EXECUTE_READWRITE": "syscall", + "syscall.PAGE_EXECUTE_WRITECOPY": "syscall", + "syscall.PAGE_READONLY": "syscall", + "syscall.PAGE_READWRITE": "syscall", + "syscall.PAGE_WRITECOPY": "syscall", + "syscall.PARENB": "syscall", + "syscall.PARMRK": "syscall", + "syscall.PARODD": "syscall", + "syscall.PENDIN": "syscall", + "syscall.PFL_HIDDEN": "syscall", + "syscall.PFL_MATCHES_PROTOCOL_ZERO": "syscall", + "syscall.PFL_MULTIPLE_PROTO_ENTRIES": "syscall", + "syscall.PFL_NETWORKDIRECT_PROVIDER": "syscall", + "syscall.PFL_RECOMMENDED_PROTO_ENTRY": "syscall", + "syscall.PF_FLUSH": "syscall", + "syscall.PKCS_7_ASN_ENCODING": "syscall", + "syscall.PMC5_PIPELINE_FLUSH": "syscall", + "syscall.PRIO_PGRP": "syscall", + "syscall.PRIO_PROCESS": "syscall", + "syscall.PRIO_USER": "syscall", + "syscall.PRI_IOFLUSH": "syscall", + "syscall.PROCESS_QUERY_INFORMATION": "syscall", + "syscall.PROCESS_TERMINATE": "syscall", + "syscall.PROT_EXEC": "syscall", + "syscall.PROT_GROWSDOWN": "syscall", + "syscall.PROT_GROWSUP": "syscall", + "syscall.PROT_NONE": "syscall", + "syscall.PROT_READ": "syscall", + "syscall.PROT_WRITE": "syscall", + "syscall.PROV_DH_SCHANNEL": "syscall", + "syscall.PROV_DSS": "syscall", + "syscall.PROV_DSS_DH": "syscall", + "syscall.PROV_EC_ECDSA_FULL": "syscall", + "syscall.PROV_EC_ECDSA_SIG": "syscall", + "syscall.PROV_EC_ECNRA_FULL": "syscall", + "syscall.PROV_EC_ECNRA_SIG": "syscall", + "syscall.PROV_FORTEZZA": "syscall", + "syscall.PROV_INTEL_SEC": "syscall", + "syscall.PROV_MS_EXCHANGE": "syscall", + "syscall.PROV_REPLACE_OWF": "syscall", + "syscall.PROV_RNG": "syscall", + "syscall.PROV_RSA_AES": "syscall", + "syscall.PROV_RSA_FULL": "syscall", + "syscall.PROV_RSA_SCHANNEL": "syscall", + "syscall.PROV_RSA_SIG": "syscall", + "syscall.PROV_SPYRUS_LYNKS": "syscall", + "syscall.PROV_SSL": "syscall", + "syscall.PR_CAPBSET_DROP": "syscall", + "syscall.PR_CAPBSET_READ": "syscall", + "syscall.PR_CLEAR_SECCOMP_FILTER": "syscall", + "syscall.PR_ENDIAN_BIG": "syscall", + "syscall.PR_ENDIAN_LITTLE": "syscall", + "syscall.PR_ENDIAN_PPC_LITTLE": "syscall", + "syscall.PR_FPEMU_NOPRINT": "syscall", + "syscall.PR_FPEMU_SIGFPE": "syscall", + "syscall.PR_FP_EXC_ASYNC": "syscall", + "syscall.PR_FP_EXC_DISABLED": "syscall", + "syscall.PR_FP_EXC_DIV": "syscall", + "syscall.PR_FP_EXC_INV": "syscall", + "syscall.PR_FP_EXC_NONRECOV": "syscall", + "syscall.PR_FP_EXC_OVF": "syscall", + "syscall.PR_FP_EXC_PRECISE": "syscall", + "syscall.PR_FP_EXC_RES": "syscall", + "syscall.PR_FP_EXC_SW_ENABLE": "syscall", + "syscall.PR_FP_EXC_UND": "syscall", + "syscall.PR_GET_DUMPABLE": "syscall", + "syscall.PR_GET_ENDIAN": "syscall", + "syscall.PR_GET_FPEMU": "syscall", + "syscall.PR_GET_FPEXC": "syscall", + "syscall.PR_GET_KEEPCAPS": "syscall", + "syscall.PR_GET_NAME": "syscall", + "syscall.PR_GET_PDEATHSIG": "syscall", + "syscall.PR_GET_SECCOMP": "syscall", + "syscall.PR_GET_SECCOMP_FILTER": "syscall", + "syscall.PR_GET_SECUREBITS": "syscall", + "syscall.PR_GET_TIMERSLACK": "syscall", + "syscall.PR_GET_TIMING": "syscall", + "syscall.PR_GET_TSC": "syscall", + "syscall.PR_GET_UNALIGN": "syscall", + "syscall.PR_MCE_KILL": "syscall", + "syscall.PR_MCE_KILL_CLEAR": "syscall", + "syscall.PR_MCE_KILL_DEFAULT": "syscall", + "syscall.PR_MCE_KILL_EARLY": "syscall", + "syscall.PR_MCE_KILL_GET": "syscall", + "syscall.PR_MCE_KILL_LATE": "syscall", + "syscall.PR_MCE_KILL_SET": "syscall", + "syscall.PR_SECCOMP_FILTER_EVENT": "syscall", + "syscall.PR_SECCOMP_FILTER_SYSCALL": "syscall", + "syscall.PR_SET_DUMPABLE": "syscall", + "syscall.PR_SET_ENDIAN": "syscall", + "syscall.PR_SET_FPEMU": "syscall", + "syscall.PR_SET_FPEXC": "syscall", + "syscall.PR_SET_KEEPCAPS": "syscall", + "syscall.PR_SET_NAME": "syscall", + "syscall.PR_SET_PDEATHSIG": "syscall", + "syscall.PR_SET_PTRACER": "syscall", + "syscall.PR_SET_SECCOMP": "syscall", + "syscall.PR_SET_SECCOMP_FILTER": "syscall", + "syscall.PR_SET_SECUREBITS": "syscall", + "syscall.PR_SET_TIMERSLACK": "syscall", + "syscall.PR_SET_TIMING": "syscall", + "syscall.PR_SET_TSC": "syscall", + "syscall.PR_SET_UNALIGN": "syscall", + "syscall.PR_TASK_PERF_EVENTS_DISABLE": "syscall", + "syscall.PR_TASK_PERF_EVENTS_ENABLE": "syscall", + "syscall.PR_TIMING_STATISTICAL": "syscall", + "syscall.PR_TIMING_TIMESTAMP": "syscall", + "syscall.PR_TSC_ENABLE": "syscall", + "syscall.PR_TSC_SIGSEGV": "syscall", + "syscall.PR_UNALIGN_NOPRINT": "syscall", + "syscall.PR_UNALIGN_SIGBUS": "syscall", + "syscall.PTRACE_ARCH_PRCTL": "syscall", + "syscall.PTRACE_ATTACH": "syscall", + "syscall.PTRACE_CONT": "syscall", + "syscall.PTRACE_DETACH": "syscall", + "syscall.PTRACE_EVENT_CLONE": "syscall", + "syscall.PTRACE_EVENT_EXEC": "syscall", + "syscall.PTRACE_EVENT_EXIT": "syscall", + "syscall.PTRACE_EVENT_FORK": "syscall", + "syscall.PTRACE_EVENT_VFORK": "syscall", + "syscall.PTRACE_EVENT_VFORK_DONE": "syscall", + "syscall.PTRACE_GETCRUNCHREGS": "syscall", + "syscall.PTRACE_GETEVENTMSG": "syscall", + "syscall.PTRACE_GETFPREGS": "syscall", + "syscall.PTRACE_GETFPXREGS": "syscall", + "syscall.PTRACE_GETHBPREGS": "syscall", + "syscall.PTRACE_GETREGS": "syscall", + "syscall.PTRACE_GETREGSET": "syscall", + "syscall.PTRACE_GETSIGINFO": "syscall", + "syscall.PTRACE_GETVFPREGS": "syscall", + "syscall.PTRACE_GETWMMXREGS": "syscall", + "syscall.PTRACE_GET_THREAD_AREA": "syscall", + "syscall.PTRACE_KILL": "syscall", + "syscall.PTRACE_OLDSETOPTIONS": "syscall", + "syscall.PTRACE_O_MASK": "syscall", + "syscall.PTRACE_O_TRACECLONE": "syscall", + "syscall.PTRACE_O_TRACEEXEC": "syscall", + "syscall.PTRACE_O_TRACEEXIT": "syscall", + "syscall.PTRACE_O_TRACEFORK": "syscall", + "syscall.PTRACE_O_TRACESYSGOOD": "syscall", + "syscall.PTRACE_O_TRACEVFORK": "syscall", + "syscall.PTRACE_O_TRACEVFORKDONE": "syscall", + "syscall.PTRACE_PEEKDATA": "syscall", + "syscall.PTRACE_PEEKTEXT": "syscall", + "syscall.PTRACE_PEEKUSR": "syscall", + "syscall.PTRACE_POKEDATA": "syscall", + "syscall.PTRACE_POKETEXT": "syscall", + "syscall.PTRACE_POKEUSR": "syscall", + "syscall.PTRACE_SETCRUNCHREGS": "syscall", + "syscall.PTRACE_SETFPREGS": "syscall", + "syscall.PTRACE_SETFPXREGS": "syscall", + "syscall.PTRACE_SETHBPREGS": "syscall", + "syscall.PTRACE_SETOPTIONS": "syscall", + "syscall.PTRACE_SETREGS": "syscall", + "syscall.PTRACE_SETREGSET": "syscall", + "syscall.PTRACE_SETSIGINFO": "syscall", + "syscall.PTRACE_SETVFPREGS": "syscall", + "syscall.PTRACE_SETWMMXREGS": "syscall", + "syscall.PTRACE_SET_SYSCALL": "syscall", + "syscall.PTRACE_SET_THREAD_AREA": "syscall", + "syscall.PTRACE_SINGLEBLOCK": "syscall", + "syscall.PTRACE_SINGLESTEP": "syscall", + "syscall.PTRACE_SYSCALL": "syscall", + "syscall.PTRACE_SYSEMU": "syscall", + "syscall.PTRACE_SYSEMU_SINGLESTEP": "syscall", + "syscall.PTRACE_TRACEME": "syscall", + "syscall.PT_ATTACH": "syscall", + "syscall.PT_ATTACHEXC": "syscall", + "syscall.PT_CONTINUE": "syscall", + "syscall.PT_DATA_ADDR": "syscall", + "syscall.PT_DENY_ATTACH": "syscall", + "syscall.PT_DETACH": "syscall", + "syscall.PT_FIRSTMACH": "syscall", + "syscall.PT_FORCEQUOTA": "syscall", + "syscall.PT_KILL": "syscall", + "syscall.PT_MASK": "syscall", + "syscall.PT_READ_D": "syscall", + "syscall.PT_READ_I": "syscall", + "syscall.PT_READ_U": "syscall", + "syscall.PT_SIGEXC": "syscall", + "syscall.PT_STEP": "syscall", + "syscall.PT_TEXT_ADDR": "syscall", + "syscall.PT_TEXT_END_ADDR": "syscall", + "syscall.PT_THUPDATE": "syscall", + "syscall.PT_TRACE_ME": "syscall", + "syscall.PT_WRITE_D": "syscall", + "syscall.PT_WRITE_I": "syscall", + "syscall.PT_WRITE_U": "syscall", + "syscall.ParseDirent": "syscall", + "syscall.ParseNetlinkMessage": "syscall", + "syscall.ParseNetlinkRouteAttr": "syscall", + "syscall.ParseRoutingMessage": "syscall", + "syscall.ParseRoutingSockaddr": "syscall", + "syscall.ParseSocketControlMessage": "syscall", + "syscall.ParseUnixCredentials": "syscall", + "syscall.ParseUnixRights": "syscall", + "syscall.PathMax": "syscall", + "syscall.Pathconf": "syscall", + "syscall.Pause": "syscall", + "syscall.Pipe": "syscall", + "syscall.Pipe2": "syscall", + "syscall.PivotRoot": "syscall", + "syscall.PostQueuedCompletionStatus": "syscall", + "syscall.Pread": "syscall", + "syscall.Proc": "syscall", + "syscall.ProcAttr": "syscall", + "syscall.Process32First": "syscall", + "syscall.Process32Next": "syscall", + "syscall.ProcessEntry32": "syscall", + "syscall.ProcessInformation": "syscall", + "syscall.Protoent": "syscall", + "syscall.PtraceAttach": "syscall", + "syscall.PtraceCont": "syscall", + "syscall.PtraceDetach": "syscall", + "syscall.PtraceGetEventMsg": "syscall", + "syscall.PtraceGetRegs": "syscall", + "syscall.PtracePeekData": "syscall", + "syscall.PtracePeekText": "syscall", + "syscall.PtracePokeData": "syscall", + "syscall.PtracePokeText": "syscall", + "syscall.PtraceRegs": "syscall", + "syscall.PtraceSetOptions": "syscall", + "syscall.PtraceSetRegs": "syscall", + "syscall.PtraceSingleStep": "syscall", + "syscall.PtraceSyscall": "syscall", + "syscall.Pwrite": "syscall", + "syscall.REG_BINARY": "syscall", + "syscall.REG_DWORD": "syscall", + "syscall.REG_DWORD_BIG_ENDIAN": "syscall", + "syscall.REG_DWORD_LITTLE_ENDIAN": "syscall", + "syscall.REG_EXPAND_SZ": "syscall", + "syscall.REG_FULL_RESOURCE_DESCRIPTOR": "syscall", + "syscall.REG_LINK": "syscall", + "syscall.REG_MULTI_SZ": "syscall", + "syscall.REG_NONE": "syscall", + "syscall.REG_QWORD": "syscall", + "syscall.REG_QWORD_LITTLE_ENDIAN": "syscall", + "syscall.REG_RESOURCE_LIST": "syscall", + "syscall.REG_RESOURCE_REQUIREMENTS_LIST": "syscall", + "syscall.REG_SZ": "syscall", + "syscall.RLIMIT_AS": "syscall", + "syscall.RLIMIT_CORE": "syscall", + "syscall.RLIMIT_CPU": "syscall", + "syscall.RLIMIT_DATA": "syscall", + "syscall.RLIMIT_FSIZE": "syscall", + "syscall.RLIMIT_NOFILE": "syscall", + "syscall.RLIMIT_STACK": "syscall", + "syscall.RLIM_INFINITY": "syscall", + "syscall.RTAX_ADVMSS": "syscall", + "syscall.RTAX_AUTHOR": "syscall", + "syscall.RTAX_BRD": "syscall", + "syscall.RTAX_CWND": "syscall", + "syscall.RTAX_DST": "syscall", + "syscall.RTAX_FEATURES": "syscall", + "syscall.RTAX_FEATURE_ALLFRAG": "syscall", + "syscall.RTAX_FEATURE_ECN": "syscall", + "syscall.RTAX_FEATURE_SACK": "syscall", + "syscall.RTAX_FEATURE_TIMESTAMP": "syscall", + "syscall.RTAX_GATEWAY": "syscall", + "syscall.RTAX_GENMASK": "syscall", + "syscall.RTAX_HOPLIMIT": "syscall", + "syscall.RTAX_IFA": "syscall", + "syscall.RTAX_IFP": "syscall", + "syscall.RTAX_INITCWND": "syscall", + "syscall.RTAX_INITRWND": "syscall", + "syscall.RTAX_LABEL": "syscall", + "syscall.RTAX_LOCK": "syscall", + "syscall.RTAX_MAX": "syscall", + "syscall.RTAX_MTU": "syscall", + "syscall.RTAX_NETMASK": "syscall", + "syscall.RTAX_REORDERING": "syscall", + "syscall.RTAX_RTO_MIN": "syscall", + "syscall.RTAX_RTT": "syscall", + "syscall.RTAX_RTTVAR": "syscall", + "syscall.RTAX_SRC": "syscall", + "syscall.RTAX_SRCMASK": "syscall", + "syscall.RTAX_SSTHRESH": "syscall", + "syscall.RTAX_TAG": "syscall", + "syscall.RTAX_UNSPEC": "syscall", + "syscall.RTAX_WINDOW": "syscall", + "syscall.RTA_ALIGNTO": "syscall", + "syscall.RTA_AUTHOR": "syscall", + "syscall.RTA_BRD": "syscall", + "syscall.RTA_CACHEINFO": "syscall", + "syscall.RTA_DST": "syscall", + "syscall.RTA_FLOW": "syscall", + "syscall.RTA_GATEWAY": "syscall", + "syscall.RTA_GENMASK": "syscall", + "syscall.RTA_IFA": "syscall", + "syscall.RTA_IFP": "syscall", + "syscall.RTA_IIF": "syscall", + "syscall.RTA_LABEL": "syscall", + "syscall.RTA_MAX": "syscall", + "syscall.RTA_METRICS": "syscall", + "syscall.RTA_MULTIPATH": "syscall", + "syscall.RTA_NETMASK": "syscall", + "syscall.RTA_OIF": "syscall", + "syscall.RTA_PREFSRC": "syscall", + "syscall.RTA_PRIORITY": "syscall", + "syscall.RTA_SRC": "syscall", + "syscall.RTA_SRCMASK": "syscall", + "syscall.RTA_TABLE": "syscall", + "syscall.RTA_TAG": "syscall", + "syscall.RTA_UNSPEC": "syscall", + "syscall.RTCF_DIRECTSRC": "syscall", + "syscall.RTCF_DOREDIRECT": "syscall", + "syscall.RTCF_LOG": "syscall", + "syscall.RTCF_MASQ": "syscall", + "syscall.RTCF_NAT": "syscall", + "syscall.RTCF_VALVE": "syscall", + "syscall.RTF_ADDRCLASSMASK": "syscall", + "syscall.RTF_ADDRCONF": "syscall", + "syscall.RTF_ALLONLINK": "syscall", + "syscall.RTF_ANNOUNCE": "syscall", + "syscall.RTF_BLACKHOLE": "syscall", + "syscall.RTF_BROADCAST": "syscall", + "syscall.RTF_CACHE": "syscall", + "syscall.RTF_CLONED": "syscall", + "syscall.RTF_CLONING": "syscall", + "syscall.RTF_CONDEMNED": "syscall", + "syscall.RTF_DEFAULT": "syscall", + "syscall.RTF_DELCLONE": "syscall", + "syscall.RTF_DONE": "syscall", + "syscall.RTF_DYNAMIC": "syscall", + "syscall.RTF_FLOW": "syscall", + "syscall.RTF_FMASK": "syscall", + "syscall.RTF_GATEWAY": "syscall", + "syscall.RTF_GWFLAG_COMPAT": "syscall", + "syscall.RTF_HOST": "syscall", + "syscall.RTF_IFREF": "syscall", + "syscall.RTF_IFSCOPE": "syscall", + "syscall.RTF_INTERFACE": "syscall", + "syscall.RTF_IRTT": "syscall", + "syscall.RTF_LINKRT": "syscall", + "syscall.RTF_LLDATA": "syscall", + "syscall.RTF_LLINFO": "syscall", + "syscall.RTF_LOCAL": "syscall", + "syscall.RTF_MASK": "syscall", + "syscall.RTF_MODIFIED": "syscall", + "syscall.RTF_MPATH": "syscall", + "syscall.RTF_MPLS": "syscall", + "syscall.RTF_MSS": "syscall", + "syscall.RTF_MTU": "syscall", + "syscall.RTF_MULTICAST": "syscall", + "syscall.RTF_NAT": "syscall", + "syscall.RTF_NOFORWARD": "syscall", + "syscall.RTF_NONEXTHOP": "syscall", + "syscall.RTF_NOPMTUDISC": "syscall", + "syscall.RTF_PERMANENT_ARP": "syscall", + "syscall.RTF_PINNED": "syscall", + "syscall.RTF_POLICY": "syscall", + "syscall.RTF_PRCLONING": "syscall", + "syscall.RTF_PROTO1": "syscall", + "syscall.RTF_PROTO2": "syscall", + "syscall.RTF_PROTO3": "syscall", + "syscall.RTF_REINSTATE": "syscall", + "syscall.RTF_REJECT": "syscall", + "syscall.RTF_RNH_LOCKED": "syscall", + "syscall.RTF_SOURCE": "syscall", + "syscall.RTF_SRC": "syscall", + "syscall.RTF_STATIC": "syscall", + "syscall.RTF_STICKY": "syscall", + "syscall.RTF_THROW": "syscall", + "syscall.RTF_TUNNEL": "syscall", + "syscall.RTF_UP": "syscall", + "syscall.RTF_USETRAILERS": "syscall", + "syscall.RTF_WASCLONED": "syscall", + "syscall.RTF_WINDOW": "syscall", + "syscall.RTF_XRESOLVE": "syscall", + "syscall.RTM_ADD": "syscall", + "syscall.RTM_BASE": "syscall", + "syscall.RTM_CHANGE": "syscall", + "syscall.RTM_CHGADDR": "syscall", + "syscall.RTM_DELACTION": "syscall", + "syscall.RTM_DELADDR": "syscall", + "syscall.RTM_DELADDRLABEL": "syscall", + "syscall.RTM_DELETE": "syscall", + "syscall.RTM_DELLINK": "syscall", + "syscall.RTM_DELMADDR": "syscall", + "syscall.RTM_DELNEIGH": "syscall", + "syscall.RTM_DELQDISC": "syscall", + "syscall.RTM_DELROUTE": "syscall", + "syscall.RTM_DELRULE": "syscall", + "syscall.RTM_DELTCLASS": "syscall", + "syscall.RTM_DELTFILTER": "syscall", + "syscall.RTM_DESYNC": "syscall", + "syscall.RTM_F_CLONED": "syscall", + "syscall.RTM_F_EQUALIZE": "syscall", + "syscall.RTM_F_NOTIFY": "syscall", + "syscall.RTM_F_PREFIX": "syscall", + "syscall.RTM_GET": "syscall", + "syscall.RTM_GET2": "syscall", + "syscall.RTM_GETACTION": "syscall", + "syscall.RTM_GETADDR": "syscall", + "syscall.RTM_GETADDRLABEL": "syscall", + "syscall.RTM_GETANYCAST": "syscall", + "syscall.RTM_GETDCB": "syscall", + "syscall.RTM_GETLINK": "syscall", + "syscall.RTM_GETMULTICAST": "syscall", + "syscall.RTM_GETNEIGH": "syscall", + "syscall.RTM_GETNEIGHTBL": "syscall", + "syscall.RTM_GETQDISC": "syscall", + "syscall.RTM_GETROUTE": "syscall", + "syscall.RTM_GETRULE": "syscall", + "syscall.RTM_GETTCLASS": "syscall", + "syscall.RTM_GETTFILTER": "syscall", + "syscall.RTM_IEEE80211": "syscall", + "syscall.RTM_IFANNOUNCE": "syscall", + "syscall.RTM_IFINFO": "syscall", + "syscall.RTM_IFINFO2": "syscall", + "syscall.RTM_LLINFO_UPD": "syscall", + "syscall.RTM_LOCK": "syscall", + "syscall.RTM_LOSING": "syscall", + "syscall.RTM_MAX": "syscall", + "syscall.RTM_MAXSIZE": "syscall", + "syscall.RTM_MISS": "syscall", + "syscall.RTM_NEWACTION": "syscall", + "syscall.RTM_NEWADDR": "syscall", + "syscall.RTM_NEWADDRLABEL": "syscall", + "syscall.RTM_NEWLINK": "syscall", + "syscall.RTM_NEWMADDR": "syscall", + "syscall.RTM_NEWMADDR2": "syscall", + "syscall.RTM_NEWNDUSEROPT": "syscall", + "syscall.RTM_NEWNEIGH": "syscall", + "syscall.RTM_NEWNEIGHTBL": "syscall", + "syscall.RTM_NEWPREFIX": "syscall", + "syscall.RTM_NEWQDISC": "syscall", + "syscall.RTM_NEWROUTE": "syscall", + "syscall.RTM_NEWRULE": "syscall", + "syscall.RTM_NEWTCLASS": "syscall", + "syscall.RTM_NEWTFILTER": "syscall", + "syscall.RTM_NR_FAMILIES": "syscall", + "syscall.RTM_NR_MSGTYPES": "syscall", + "syscall.RTM_OIFINFO": "syscall", + "syscall.RTM_OLDADD": "syscall", + "syscall.RTM_OLDDEL": "syscall", + "syscall.RTM_OOIFINFO": "syscall", + "syscall.RTM_REDIRECT": "syscall", + "syscall.RTM_RESOLVE": "syscall", + "syscall.RTM_RTTUNIT": "syscall", + "syscall.RTM_SETDCB": "syscall", + "syscall.RTM_SETGATE": "syscall", + "syscall.RTM_SETLINK": "syscall", + "syscall.RTM_SETNEIGHTBL": "syscall", + "syscall.RTM_VERSION": "syscall", + "syscall.RTNH_ALIGNTO": "syscall", + "syscall.RTNH_F_DEAD": "syscall", + "syscall.RTNH_F_ONLINK": "syscall", + "syscall.RTNH_F_PERVASIVE": "syscall", + "syscall.RTNLGRP_IPV4_IFADDR": "syscall", + "syscall.RTNLGRP_IPV4_MROUTE": "syscall", + "syscall.RTNLGRP_IPV4_ROUTE": "syscall", + "syscall.RTNLGRP_IPV4_RULE": "syscall", + "syscall.RTNLGRP_IPV6_IFADDR": "syscall", + "syscall.RTNLGRP_IPV6_IFINFO": "syscall", + "syscall.RTNLGRP_IPV6_MROUTE": "syscall", + "syscall.RTNLGRP_IPV6_PREFIX": "syscall", + "syscall.RTNLGRP_IPV6_ROUTE": "syscall", + "syscall.RTNLGRP_IPV6_RULE": "syscall", + "syscall.RTNLGRP_LINK": "syscall", + "syscall.RTNLGRP_ND_USEROPT": "syscall", + "syscall.RTNLGRP_NEIGH": "syscall", + "syscall.RTNLGRP_NONE": "syscall", + "syscall.RTNLGRP_NOTIFY": "syscall", + "syscall.RTNLGRP_TC": "syscall", + "syscall.RTN_ANYCAST": "syscall", + "syscall.RTN_BLACKHOLE": "syscall", + "syscall.RTN_BROADCAST": "syscall", + "syscall.RTN_LOCAL": "syscall", + "syscall.RTN_MAX": "syscall", + "syscall.RTN_MULTICAST": "syscall", + "syscall.RTN_NAT": "syscall", + "syscall.RTN_PROHIBIT": "syscall", + "syscall.RTN_THROW": "syscall", + "syscall.RTN_UNICAST": "syscall", + "syscall.RTN_UNREACHABLE": "syscall", + "syscall.RTN_UNSPEC": "syscall", + "syscall.RTN_XRESOLVE": "syscall", + "syscall.RTPROT_BIRD": "syscall", + "syscall.RTPROT_BOOT": "syscall", + "syscall.RTPROT_DHCP": "syscall", + "syscall.RTPROT_DNROUTED": "syscall", + "syscall.RTPROT_GATED": "syscall", + "syscall.RTPROT_KERNEL": "syscall", + "syscall.RTPROT_MRT": "syscall", + "syscall.RTPROT_NTK": "syscall", + "syscall.RTPROT_RA": "syscall", + "syscall.RTPROT_REDIRECT": "syscall", + "syscall.RTPROT_STATIC": "syscall", + "syscall.RTPROT_UNSPEC": "syscall", + "syscall.RTPROT_XORP": "syscall", + "syscall.RTPROT_ZEBRA": "syscall", + "syscall.RTV_EXPIRE": "syscall", + "syscall.RTV_HOPCOUNT": "syscall", + "syscall.RTV_MTU": "syscall", + "syscall.RTV_RPIPE": "syscall", + "syscall.RTV_RTT": "syscall", + "syscall.RTV_RTTVAR": "syscall", + "syscall.RTV_SPIPE": "syscall", + "syscall.RTV_SSTHRESH": "syscall", + "syscall.RTV_WEIGHT": "syscall", + "syscall.RT_CACHING_CONTEXT": "syscall", + "syscall.RT_CLASS_DEFAULT": "syscall", + "syscall.RT_CLASS_LOCAL": "syscall", + "syscall.RT_CLASS_MAIN": "syscall", + "syscall.RT_CLASS_MAX": "syscall", + "syscall.RT_CLASS_UNSPEC": "syscall", + "syscall.RT_DEFAULT_FIB": "syscall", + "syscall.RT_NORTREF": "syscall", + "syscall.RT_SCOPE_HOST": "syscall", + "syscall.RT_SCOPE_LINK": "syscall", + "syscall.RT_SCOPE_NOWHERE": "syscall", + "syscall.RT_SCOPE_SITE": "syscall", + "syscall.RT_SCOPE_UNIVERSE": "syscall", + "syscall.RT_TABLEID_MAX": "syscall", + "syscall.RT_TABLE_COMPAT": "syscall", + "syscall.RT_TABLE_DEFAULT": "syscall", + "syscall.RT_TABLE_LOCAL": "syscall", + "syscall.RT_TABLE_MAIN": "syscall", + "syscall.RT_TABLE_MAX": "syscall", + "syscall.RT_TABLE_UNSPEC": "syscall", + "syscall.RUSAGE_CHILDREN": "syscall", + "syscall.RUSAGE_SELF": "syscall", + "syscall.RUSAGE_THREAD": "syscall", + "syscall.Radvisory_t": "syscall", + "syscall.RawSockaddr": "syscall", + "syscall.RawSockaddrAny": "syscall", + "syscall.RawSockaddrDatalink": "syscall", + "syscall.RawSockaddrInet4": "syscall", + "syscall.RawSockaddrInet6": "syscall", + "syscall.RawSockaddrLinklayer": "syscall", + "syscall.RawSockaddrNetlink": "syscall", + "syscall.RawSockaddrUnix": "syscall", + "syscall.RawSyscall": "syscall", + "syscall.RawSyscall6": "syscall", + "syscall.Read": "syscall", + "syscall.ReadConsole": "syscall", + "syscall.ReadDirectoryChanges": "syscall", + "syscall.ReadDirent": "syscall", + "syscall.ReadFile": "syscall", + "syscall.Readlink": "syscall", + "syscall.Reboot": "syscall", + "syscall.Recvfrom": "syscall", + "syscall.Recvmsg": "syscall", + "syscall.RegCloseKey": "syscall", + "syscall.RegEnumKeyEx": "syscall", + "syscall.RegOpenKeyEx": "syscall", + "syscall.RegQueryInfoKey": "syscall", + "syscall.RegQueryValueEx": "syscall", + "syscall.RemoveDirectory": "syscall", + "syscall.Removexattr": "syscall", + "syscall.Rename": "syscall", + "syscall.Renameat": "syscall", + "syscall.Revoke": "syscall", + "syscall.Rlimit": "syscall", + "syscall.Rmdir": "syscall", + "syscall.RouteMessage": "syscall", + "syscall.RouteRIB": "syscall", + "syscall.RtAttr": "syscall", + "syscall.RtGenmsg": "syscall", + "syscall.RtMetrics": "syscall", + "syscall.RtMsg": "syscall", + "syscall.RtMsghdr": "syscall", + "syscall.RtNexthop": "syscall", + "syscall.Rusage": "syscall", + "syscall.SCM_BINTIME": "syscall", + "syscall.SCM_CREDENTIALS": "syscall", + "syscall.SCM_CREDS": "syscall", + "syscall.SCM_RIGHTS": "syscall", + "syscall.SCM_TIMESTAMP": "syscall", + "syscall.SCM_TIMESTAMPING": "syscall", + "syscall.SCM_TIMESTAMPNS": "syscall", + "syscall.SCM_TIMESTAMP_MONOTONIC": "syscall", + "syscall.SHUT_RD": "syscall", + "syscall.SHUT_RDWR": "syscall", + "syscall.SHUT_WR": "syscall", + "syscall.SID": "syscall", + "syscall.SIDAndAttributes": "syscall", + "syscall.SIGABRT": "syscall", + "syscall.SIGALRM": "syscall", + "syscall.SIGBUS": "syscall", + "syscall.SIGCHLD": "syscall", + "syscall.SIGCLD": "syscall", + "syscall.SIGCONT": "syscall", + "syscall.SIGEMT": "syscall", + "syscall.SIGFPE": "syscall", + "syscall.SIGHUP": "syscall", + "syscall.SIGILL": "syscall", + "syscall.SIGINFO": "syscall", + "syscall.SIGINT": "syscall", + "syscall.SIGIO": "syscall", + "syscall.SIGIOT": "syscall", + "syscall.SIGKILL": "syscall", + "syscall.SIGLIBRT": "syscall", + "syscall.SIGLWP": "syscall", + "syscall.SIGPIPE": "syscall", + "syscall.SIGPOLL": "syscall", + "syscall.SIGPROF": "syscall", + "syscall.SIGPWR": "syscall", + "syscall.SIGQUIT": "syscall", + "syscall.SIGSEGV": "syscall", + "syscall.SIGSTKFLT": "syscall", + "syscall.SIGSTOP": "syscall", + "syscall.SIGSYS": "syscall", + "syscall.SIGTERM": "syscall", + "syscall.SIGTHR": "syscall", + "syscall.SIGTRAP": "syscall", + "syscall.SIGTSTP": "syscall", + "syscall.SIGTTIN": "syscall", + "syscall.SIGTTOU": "syscall", + "syscall.SIGUNUSED": "syscall", + "syscall.SIGURG": "syscall", + "syscall.SIGUSR1": "syscall", + "syscall.SIGUSR2": "syscall", + "syscall.SIGVTALRM": "syscall", + "syscall.SIGWINCH": "syscall", + "syscall.SIGXCPU": "syscall", + "syscall.SIGXFSZ": "syscall", + "syscall.SIOCADDDLCI": "syscall", + "syscall.SIOCADDMULTI": "syscall", + "syscall.SIOCADDRT": "syscall", + "syscall.SIOCAIFADDR": "syscall", + "syscall.SIOCAIFGROUP": "syscall", + "syscall.SIOCALIFADDR": "syscall", + "syscall.SIOCARPIPLL": "syscall", + "syscall.SIOCATMARK": "syscall", + "syscall.SIOCAUTOADDR": "syscall", + "syscall.SIOCAUTONETMASK": "syscall", + "syscall.SIOCBRDGADD": "syscall", + "syscall.SIOCBRDGADDS": "syscall", + "syscall.SIOCBRDGARL": "syscall", + "syscall.SIOCBRDGDADDR": "syscall", + "syscall.SIOCBRDGDEL": "syscall", + "syscall.SIOCBRDGDELS": "syscall", + "syscall.SIOCBRDGFLUSH": "syscall", + "syscall.SIOCBRDGFRL": "syscall", + "syscall.SIOCBRDGGCACHE": "syscall", + "syscall.SIOCBRDGGFD": "syscall", + "syscall.SIOCBRDGGHT": "syscall", + "syscall.SIOCBRDGGIFFLGS": "syscall", + "syscall.SIOCBRDGGMA": "syscall", + "syscall.SIOCBRDGGPARAM": "syscall", + "syscall.SIOCBRDGGPRI": "syscall", + "syscall.SIOCBRDGGRL": "syscall", + "syscall.SIOCBRDGGSIFS": "syscall", + "syscall.SIOCBRDGGTO": "syscall", + "syscall.SIOCBRDGIFS": "syscall", + "syscall.SIOCBRDGRTS": "syscall", + "syscall.SIOCBRDGSADDR": "syscall", + "syscall.SIOCBRDGSCACHE": "syscall", + "syscall.SIOCBRDGSFD": "syscall", + "syscall.SIOCBRDGSHT": "syscall", + "syscall.SIOCBRDGSIFCOST": "syscall", + "syscall.SIOCBRDGSIFFLGS": "syscall", + "syscall.SIOCBRDGSIFPRIO": "syscall", + "syscall.SIOCBRDGSMA": "syscall", + "syscall.SIOCBRDGSPRI": "syscall", + "syscall.SIOCBRDGSPROTO": "syscall", + "syscall.SIOCBRDGSTO": "syscall", + "syscall.SIOCBRDGSTXHC": "syscall", + "syscall.SIOCDARP": "syscall", + "syscall.SIOCDELDLCI": "syscall", + "syscall.SIOCDELMULTI": "syscall", + "syscall.SIOCDELRT": "syscall", + "syscall.SIOCDEVPRIVATE": "syscall", + "syscall.SIOCDIFADDR": "syscall", + "syscall.SIOCDIFGROUP": "syscall", + "syscall.SIOCDIFPHYADDR": "syscall", + "syscall.SIOCDLIFADDR": "syscall", + "syscall.SIOCDRARP": "syscall", + "syscall.SIOCGARP": "syscall", + "syscall.SIOCGDRVSPEC": "syscall", + "syscall.SIOCGETKALIVE": "syscall", + "syscall.SIOCGETLABEL": "syscall", + "syscall.SIOCGETPFLOW": "syscall", + "syscall.SIOCGETPFSYNC": "syscall", + "syscall.SIOCGETSGCNT": "syscall", + "syscall.SIOCGETVIFCNT": "syscall", + "syscall.SIOCGETVLAN": "syscall", + "syscall.SIOCGHIWAT": "syscall", + "syscall.SIOCGIFADDR": "syscall", + "syscall.SIOCGIFADDRPREF": "syscall", + "syscall.SIOCGIFALIAS": "syscall", + "syscall.SIOCGIFALTMTU": "syscall", + "syscall.SIOCGIFASYNCMAP": "syscall", + "syscall.SIOCGIFBOND": "syscall", + "syscall.SIOCGIFBR": "syscall", + "syscall.SIOCGIFBRDADDR": "syscall", + "syscall.SIOCGIFCAP": "syscall", + "syscall.SIOCGIFCONF": "syscall", + "syscall.SIOCGIFCOUNT": "syscall", + "syscall.SIOCGIFDATA": "syscall", + "syscall.SIOCGIFDESCR": "syscall", + "syscall.SIOCGIFDEVMTU": "syscall", + "syscall.SIOCGIFDLT": "syscall", + "syscall.SIOCGIFDSTADDR": "syscall", + "syscall.SIOCGIFENCAP": "syscall", + "syscall.SIOCGIFFIB": "syscall", + "syscall.SIOCGIFFLAGS": "syscall", + "syscall.SIOCGIFGATTR": "syscall", + "syscall.SIOCGIFGENERIC": "syscall", + "syscall.SIOCGIFGMEMB": "syscall", + "syscall.SIOCGIFGROUP": "syscall", + "syscall.SIOCGIFHARDMTU": "syscall", + "syscall.SIOCGIFHWADDR": "syscall", + "syscall.SIOCGIFINDEX": "syscall", + "syscall.SIOCGIFKPI": "syscall", + "syscall.SIOCGIFMAC": "syscall", + "syscall.SIOCGIFMAP": "syscall", + "syscall.SIOCGIFMEDIA": "syscall", + "syscall.SIOCGIFMEM": "syscall", + "syscall.SIOCGIFMETRIC": "syscall", + "syscall.SIOCGIFMTU": "syscall", + "syscall.SIOCGIFNAME": "syscall", + "syscall.SIOCGIFNETMASK": "syscall", + "syscall.SIOCGIFPDSTADDR": "syscall", + "syscall.SIOCGIFPFLAGS": "syscall", + "syscall.SIOCGIFPHYS": "syscall", + "syscall.SIOCGIFPRIORITY": "syscall", + "syscall.SIOCGIFPSRCADDR": "syscall", + "syscall.SIOCGIFRDOMAIN": "syscall", + "syscall.SIOCGIFRTLABEL": "syscall", + "syscall.SIOCGIFSLAVE": "syscall", + "syscall.SIOCGIFSTATUS": "syscall", + "syscall.SIOCGIFTIMESLOT": "syscall", + "syscall.SIOCGIFTXQLEN": "syscall", + "syscall.SIOCGIFVLAN": "syscall", + "syscall.SIOCGIFWAKEFLAGS": "syscall", + "syscall.SIOCGIFXFLAGS": "syscall", + "syscall.SIOCGLIFADDR": "syscall", + "syscall.SIOCGLIFPHYADDR": "syscall", + "syscall.SIOCGLIFPHYRTABLE": "syscall", + "syscall.SIOCGLIFPHYTTL": "syscall", + "syscall.SIOCGLINKSTR": "syscall", + "syscall.SIOCGLOWAT": "syscall", + "syscall.SIOCGPGRP": "syscall", + "syscall.SIOCGPRIVATE_0": "syscall", + "syscall.SIOCGPRIVATE_1": "syscall", + "syscall.SIOCGRARP": "syscall", + "syscall.SIOCGSPPPPARAMS": "syscall", + "syscall.SIOCGSTAMP": "syscall", + "syscall.SIOCGSTAMPNS": "syscall", + "syscall.SIOCGVH": "syscall", + "syscall.SIOCGVNETID": "syscall", + "syscall.SIOCIFCREATE": "syscall", + "syscall.SIOCIFCREATE2": "syscall", + "syscall.SIOCIFDESTROY": "syscall", + "syscall.SIOCIFGCLONERS": "syscall", + "syscall.SIOCINITIFADDR": "syscall", + "syscall.SIOCPROTOPRIVATE": "syscall", + "syscall.SIOCRSLVMULTI": "syscall", + "syscall.SIOCRTMSG": "syscall", + "syscall.SIOCSARP": "syscall", + "syscall.SIOCSDRVSPEC": "syscall", + "syscall.SIOCSETKALIVE": "syscall", + "syscall.SIOCSETLABEL": "syscall", + "syscall.SIOCSETPFLOW": "syscall", + "syscall.SIOCSETPFSYNC": "syscall", + "syscall.SIOCSETVLAN": "syscall", + "syscall.SIOCSHIWAT": "syscall", + "syscall.SIOCSIFADDR": "syscall", + "syscall.SIOCSIFADDRPREF": "syscall", + "syscall.SIOCSIFALTMTU": "syscall", + "syscall.SIOCSIFASYNCMAP": "syscall", + "syscall.SIOCSIFBOND": "syscall", + "syscall.SIOCSIFBR": "syscall", + "syscall.SIOCSIFBRDADDR": "syscall", + "syscall.SIOCSIFCAP": "syscall", + "syscall.SIOCSIFDESCR": "syscall", + "syscall.SIOCSIFDSTADDR": "syscall", + "syscall.SIOCSIFENCAP": "syscall", + "syscall.SIOCSIFFIB": "syscall", + "syscall.SIOCSIFFLAGS": "syscall", + "syscall.SIOCSIFGATTR": "syscall", + "syscall.SIOCSIFGENERIC": "syscall", + "syscall.SIOCSIFHWADDR": "syscall", + "syscall.SIOCSIFHWBROADCAST": "syscall", + "syscall.SIOCSIFKPI": "syscall", + "syscall.SIOCSIFLINK": "syscall", + "syscall.SIOCSIFLLADDR": "syscall", + "syscall.SIOCSIFMAC": "syscall", + "syscall.SIOCSIFMAP": "syscall", + "syscall.SIOCSIFMEDIA": "syscall", + "syscall.SIOCSIFMEM": "syscall", + "syscall.SIOCSIFMETRIC": "syscall", + "syscall.SIOCSIFMTU": "syscall", + "syscall.SIOCSIFNAME": "syscall", + "syscall.SIOCSIFNETMASK": "syscall", + "syscall.SIOCSIFPFLAGS": "syscall", + "syscall.SIOCSIFPHYADDR": "syscall", + "syscall.SIOCSIFPHYS": "syscall", + "syscall.SIOCSIFPRIORITY": "syscall", + "syscall.SIOCSIFRDOMAIN": "syscall", + "syscall.SIOCSIFRTLABEL": "syscall", + "syscall.SIOCSIFRVNET": "syscall", + "syscall.SIOCSIFSLAVE": "syscall", + "syscall.SIOCSIFTIMESLOT": "syscall", + "syscall.SIOCSIFTXQLEN": "syscall", + "syscall.SIOCSIFVLAN": "syscall", + "syscall.SIOCSIFVNET": "syscall", + "syscall.SIOCSIFXFLAGS": "syscall", + "syscall.SIOCSLIFPHYADDR": "syscall", + "syscall.SIOCSLIFPHYRTABLE": "syscall", + "syscall.SIOCSLIFPHYTTL": "syscall", + "syscall.SIOCSLINKSTR": "syscall", + "syscall.SIOCSLOWAT": "syscall", + "syscall.SIOCSPGRP": "syscall", + "syscall.SIOCSRARP": "syscall", + "syscall.SIOCSSPPPPARAMS": "syscall", + "syscall.SIOCSVH": "syscall", + "syscall.SIOCSVNETID": "syscall", + "syscall.SIOCZIFDATA": "syscall", + "syscall.SIO_GET_EXTENSION_FUNCTION_POINTER": "syscall", + "syscall.SIO_GET_INTERFACE_LIST": "syscall", + "syscall.SIO_KEEPALIVE_VALS": "syscall", + "syscall.SIO_UDP_CONNRESET": "syscall", + "syscall.SOCK_CLOEXEC": "syscall", + "syscall.SOCK_DCCP": "syscall", + "syscall.SOCK_DGRAM": "syscall", + "syscall.SOCK_FLAGS_MASK": "syscall", + "syscall.SOCK_MAXADDRLEN": "syscall", + "syscall.SOCK_NONBLOCK": "syscall", + "syscall.SOCK_NOSIGPIPE": "syscall", + "syscall.SOCK_PACKET": "syscall", + "syscall.SOCK_RAW": "syscall", + "syscall.SOCK_RDM": "syscall", + "syscall.SOCK_SEQPACKET": "syscall", + "syscall.SOCK_STREAM": "syscall", + "syscall.SOL_AAL": "syscall", + "syscall.SOL_ATM": "syscall", + "syscall.SOL_DECNET": "syscall", + "syscall.SOL_ICMPV6": "syscall", + "syscall.SOL_IP": "syscall", + "syscall.SOL_IPV6": "syscall", + "syscall.SOL_IRDA": "syscall", + "syscall.SOL_PACKET": "syscall", + "syscall.SOL_RAW": "syscall", + "syscall.SOL_SOCKET": "syscall", + "syscall.SOL_TCP": "syscall", + "syscall.SOL_X25": "syscall", + "syscall.SOMAXCONN": "syscall", + "syscall.SO_ACCEPTCONN": "syscall", + "syscall.SO_ACCEPTFILTER": "syscall", + "syscall.SO_ATTACH_FILTER": "syscall", + "syscall.SO_BINDANY": "syscall", + "syscall.SO_BINDTODEVICE": "syscall", + "syscall.SO_BINTIME": "syscall", + "syscall.SO_BROADCAST": "syscall", + "syscall.SO_BSDCOMPAT": "syscall", + "syscall.SO_DEBUG": "syscall", + "syscall.SO_DETACH_FILTER": "syscall", + "syscall.SO_DOMAIN": "syscall", + "syscall.SO_DONTROUTE": "syscall", + "syscall.SO_DONTTRUNC": "syscall", + "syscall.SO_ERROR": "syscall", + "syscall.SO_KEEPALIVE": "syscall", + "syscall.SO_LABEL": "syscall", + "syscall.SO_LINGER": "syscall", + "syscall.SO_LINGER_SEC": "syscall", + "syscall.SO_LISTENINCQLEN": "syscall", + "syscall.SO_LISTENQLEN": "syscall", + "syscall.SO_LISTENQLIMIT": "syscall", + "syscall.SO_MARK": "syscall", + "syscall.SO_NETPROC": "syscall", + "syscall.SO_NKE": "syscall", + "syscall.SO_NOADDRERR": "syscall", + "syscall.SO_NOHEADER": "syscall", + "syscall.SO_NOSIGPIPE": "syscall", + "syscall.SO_NOTIFYCONFLICT": "syscall", + "syscall.SO_NO_CHECK": "syscall", + "syscall.SO_NO_DDP": "syscall", + "syscall.SO_NO_OFFLOAD": "syscall", + "syscall.SO_NP_EXTENSIONS": "syscall", + "syscall.SO_NREAD": "syscall", + "syscall.SO_NWRITE": "syscall", + "syscall.SO_OOBINLINE": "syscall", + "syscall.SO_OVERFLOWED": "syscall", + "syscall.SO_PASSCRED": "syscall", + "syscall.SO_PASSSEC": "syscall", + "syscall.SO_PEERCRED": "syscall", + "syscall.SO_PEERLABEL": "syscall", + "syscall.SO_PEERNAME": "syscall", + "syscall.SO_PEERSEC": "syscall", + "syscall.SO_PRIORITY": "syscall", + "syscall.SO_PROTOCOL": "syscall", + "syscall.SO_PROTOTYPE": "syscall", + "syscall.SO_RANDOMPORT": "syscall", + "syscall.SO_RCVBUF": "syscall", + "syscall.SO_RCVBUFFORCE": "syscall", + "syscall.SO_RCVLOWAT": "syscall", + "syscall.SO_RCVTIMEO": "syscall", + "syscall.SO_RESTRICTIONS": "syscall", + "syscall.SO_RESTRICT_DENYIN": "syscall", + "syscall.SO_RESTRICT_DENYOUT": "syscall", + "syscall.SO_RESTRICT_DENYSET": "syscall", + "syscall.SO_REUSEADDR": "syscall", + "syscall.SO_REUSEPORT": "syscall", + "syscall.SO_REUSESHAREUID": "syscall", + "syscall.SO_RTABLE": "syscall", + "syscall.SO_RXQ_OVFL": "syscall", + "syscall.SO_SECURITY_AUTHENTICATION": "syscall", + "syscall.SO_SECURITY_ENCRYPTION_NETWORK": "syscall", + "syscall.SO_SECURITY_ENCRYPTION_TRANSPORT": "syscall", + "syscall.SO_SETFIB": "syscall", + "syscall.SO_SNDBUF": "syscall", + "syscall.SO_SNDBUFFORCE": "syscall", + "syscall.SO_SNDLOWAT": "syscall", + "syscall.SO_SNDTIMEO": "syscall", + "syscall.SO_SPLICE": "syscall", + "syscall.SO_TIMESTAMP": "syscall", + "syscall.SO_TIMESTAMPING": "syscall", + "syscall.SO_TIMESTAMPNS": "syscall", + "syscall.SO_TIMESTAMP_MONOTONIC": "syscall", + "syscall.SO_TYPE": "syscall", + "syscall.SO_UPCALLCLOSEWAIT": "syscall", + "syscall.SO_UPDATE_ACCEPT_CONTEXT": "syscall", + "syscall.SO_UPDATE_CONNECT_CONTEXT": "syscall", + "syscall.SO_USELOOPBACK": "syscall", + "syscall.SO_USER_COOKIE": "syscall", + "syscall.SO_VENDOR": "syscall", + "syscall.SO_WANTMORE": "syscall", + "syscall.SO_WANTOOBFLAG": "syscall", + "syscall.SSLExtraCertChainPolicyPara": "syscall", + "syscall.STANDARD_RIGHTS_ALL": "syscall", + "syscall.STANDARD_RIGHTS_EXECUTE": "syscall", + "syscall.STANDARD_RIGHTS_READ": "syscall", + "syscall.STANDARD_RIGHTS_REQUIRED": "syscall", + "syscall.STANDARD_RIGHTS_WRITE": "syscall", + "syscall.STARTF_USESHOWWINDOW": "syscall", + "syscall.STARTF_USESTDHANDLES": "syscall", + "syscall.STD_ERROR_HANDLE": "syscall", + "syscall.STD_INPUT_HANDLE": "syscall", + "syscall.STD_OUTPUT_HANDLE": "syscall", + "syscall.SUBLANG_ENGLISH_US": "syscall", + "syscall.SW_FORCEMINIMIZE": "syscall", + "syscall.SW_HIDE": "syscall", + "syscall.SW_MAXIMIZE": "syscall", + "syscall.SW_MINIMIZE": "syscall", + "syscall.SW_NORMAL": "syscall", + "syscall.SW_RESTORE": "syscall", + "syscall.SW_SHOW": "syscall", + "syscall.SW_SHOWDEFAULT": "syscall", + "syscall.SW_SHOWMAXIMIZED": "syscall", + "syscall.SW_SHOWMINIMIZED": "syscall", + "syscall.SW_SHOWMINNOACTIVE": "syscall", + "syscall.SW_SHOWNA": "syscall", + "syscall.SW_SHOWNOACTIVATE": "syscall", + "syscall.SW_SHOWNORMAL": "syscall", + "syscall.SYMBOLIC_LINK_FLAG_DIRECTORY": "syscall", + "syscall.SYNCHRONIZE": "syscall", + "syscall.SYSCTL_VERSION": "syscall", + "syscall.SYSCTL_VERS_0": "syscall", + "syscall.SYSCTL_VERS_1": "syscall", + "syscall.SYSCTL_VERS_MASK": "syscall", + "syscall.SYS_ABORT2": "syscall", + "syscall.SYS_ACCEPT": "syscall", + "syscall.SYS_ACCEPT4": "syscall", + "syscall.SYS_ACCEPT_NOCANCEL": "syscall", + "syscall.SYS_ACCESS": "syscall", + "syscall.SYS_ACCESS_EXTENDED": "syscall", + "syscall.SYS_ACCT": "syscall", + "syscall.SYS_ADD_KEY": "syscall", + "syscall.SYS_ADD_PROFIL": "syscall", + "syscall.SYS_ADJFREQ": "syscall", + "syscall.SYS_ADJTIME": "syscall", + "syscall.SYS_ADJTIMEX": "syscall", + "syscall.SYS_AFS_SYSCALL": "syscall", + "syscall.SYS_AIO_CANCEL": "syscall", + "syscall.SYS_AIO_ERROR": "syscall", + "syscall.SYS_AIO_FSYNC": "syscall", + "syscall.SYS_AIO_READ": "syscall", + "syscall.SYS_AIO_RETURN": "syscall", + "syscall.SYS_AIO_SUSPEND": "syscall", + "syscall.SYS_AIO_SUSPEND_NOCANCEL": "syscall", + "syscall.SYS_AIO_WRITE": "syscall", + "syscall.SYS_ALARM": "syscall", + "syscall.SYS_ARCH_PRCTL": "syscall", + "syscall.SYS_ARM_FADVISE64_64": "syscall", + "syscall.SYS_ARM_SYNC_FILE_RANGE": "syscall", + "syscall.SYS_ATGETMSG": "syscall", + "syscall.SYS_ATPGETREQ": "syscall", + "syscall.SYS_ATPGETRSP": "syscall", + "syscall.SYS_ATPSNDREQ": "syscall", + "syscall.SYS_ATPSNDRSP": "syscall", + "syscall.SYS_ATPUTMSG": "syscall", + "syscall.SYS_ATSOCKET": "syscall", + "syscall.SYS_AUDIT": "syscall", + "syscall.SYS_AUDITCTL": "syscall", + "syscall.SYS_AUDITON": "syscall", + "syscall.SYS_AUDIT_SESSION_JOIN": "syscall", + "syscall.SYS_AUDIT_SESSION_PORT": "syscall", + "syscall.SYS_AUDIT_SESSION_SELF": "syscall", + "syscall.SYS_BDFLUSH": "syscall", + "syscall.SYS_BIND": "syscall", + "syscall.SYS_BINDAT": "syscall", + "syscall.SYS_BREAK": "syscall", + "syscall.SYS_BRK": "syscall", + "syscall.SYS_BSDTHREAD_CREATE": "syscall", + "syscall.SYS_BSDTHREAD_REGISTER": "syscall", + "syscall.SYS_BSDTHREAD_TERMINATE": "syscall", + "syscall.SYS_CAPGET": "syscall", + "syscall.SYS_CAPSET": "syscall", + "syscall.SYS_CAP_ENTER": "syscall", + "syscall.SYS_CAP_FCNTLS_GET": "syscall", + "syscall.SYS_CAP_FCNTLS_LIMIT": "syscall", + "syscall.SYS_CAP_GETMODE": "syscall", + "syscall.SYS_CAP_GETRIGHTS": "syscall", + "syscall.SYS_CAP_IOCTLS_GET": "syscall", + "syscall.SYS_CAP_IOCTLS_LIMIT": "syscall", + "syscall.SYS_CAP_NEW": "syscall", + "syscall.SYS_CAP_RIGHTS_GET": "syscall", + "syscall.SYS_CAP_RIGHTS_LIMIT": "syscall", + "syscall.SYS_CHDIR": "syscall", + "syscall.SYS_CHFLAGS": "syscall", + "syscall.SYS_CHFLAGSAT": "syscall", + "syscall.SYS_CHMOD": "syscall", + "syscall.SYS_CHMOD_EXTENDED": "syscall", + "syscall.SYS_CHOWN": "syscall", + "syscall.SYS_CHOWN32": "syscall", + "syscall.SYS_CHROOT": "syscall", + "syscall.SYS_CHUD": "syscall", + "syscall.SYS_CLOCK_ADJTIME": "syscall", + "syscall.SYS_CLOCK_GETCPUCLOCKID2": "syscall", + "syscall.SYS_CLOCK_GETRES": "syscall", + "syscall.SYS_CLOCK_GETTIME": "syscall", + "syscall.SYS_CLOCK_NANOSLEEP": "syscall", + "syscall.SYS_CLOCK_SETTIME": "syscall", + "syscall.SYS_CLONE": "syscall", + "syscall.SYS_CLOSE": "syscall", + "syscall.SYS_CLOSEFROM": "syscall", + "syscall.SYS_CLOSE_NOCANCEL": "syscall", + "syscall.SYS_CONNECT": "syscall", + "syscall.SYS_CONNECTAT": "syscall", + "syscall.SYS_CONNECT_NOCANCEL": "syscall", + "syscall.SYS_COPYFILE": "syscall", + "syscall.SYS_CPUSET": "syscall", + "syscall.SYS_CPUSET_GETAFFINITY": "syscall", + "syscall.SYS_CPUSET_GETID": "syscall", + "syscall.SYS_CPUSET_SETAFFINITY": "syscall", + "syscall.SYS_CPUSET_SETID": "syscall", + "syscall.SYS_CREAT": "syscall", + "syscall.SYS_CREATE_MODULE": "syscall", + "syscall.SYS_CSOPS": "syscall", + "syscall.SYS_DELETE": "syscall", + "syscall.SYS_DELETE_MODULE": "syscall", + "syscall.SYS_DUP": "syscall", + "syscall.SYS_DUP2": "syscall", + "syscall.SYS_DUP3": "syscall", + "syscall.SYS_EACCESS": "syscall", + "syscall.SYS_EPOLL_CREATE": "syscall", + "syscall.SYS_EPOLL_CREATE1": "syscall", + "syscall.SYS_EPOLL_CTL": "syscall", + "syscall.SYS_EPOLL_CTL_OLD": "syscall", + "syscall.SYS_EPOLL_PWAIT": "syscall", + "syscall.SYS_EPOLL_WAIT": "syscall", + "syscall.SYS_EPOLL_WAIT_OLD": "syscall", + "syscall.SYS_EVENTFD": "syscall", + "syscall.SYS_EVENTFD2": "syscall", + "syscall.SYS_EXCHANGEDATA": "syscall", + "syscall.SYS_EXECVE": "syscall", + "syscall.SYS_EXIT": "syscall", + "syscall.SYS_EXIT_GROUP": "syscall", + "syscall.SYS_EXTATTRCTL": "syscall", + "syscall.SYS_EXTATTR_DELETE_FD": "syscall", + "syscall.SYS_EXTATTR_DELETE_FILE": "syscall", + "syscall.SYS_EXTATTR_DELETE_LINK": "syscall", + "syscall.SYS_EXTATTR_GET_FD": "syscall", + "syscall.SYS_EXTATTR_GET_FILE": "syscall", + "syscall.SYS_EXTATTR_GET_LINK": "syscall", + "syscall.SYS_EXTATTR_LIST_FD": "syscall", + "syscall.SYS_EXTATTR_LIST_FILE": "syscall", + "syscall.SYS_EXTATTR_LIST_LINK": "syscall", + "syscall.SYS_EXTATTR_SET_FD": "syscall", + "syscall.SYS_EXTATTR_SET_FILE": "syscall", + "syscall.SYS_EXTATTR_SET_LINK": "syscall", + "syscall.SYS_FACCESSAT": "syscall", + "syscall.SYS_FADVISE64": "syscall", + "syscall.SYS_FADVISE64_64": "syscall", + "syscall.SYS_FALLOCATE": "syscall", + "syscall.SYS_FANOTIFY_INIT": "syscall", + "syscall.SYS_FANOTIFY_MARK": "syscall", + "syscall.SYS_FCHDIR": "syscall", + "syscall.SYS_FCHFLAGS": "syscall", + "syscall.SYS_FCHMOD": "syscall", + "syscall.SYS_FCHMODAT": "syscall", + "syscall.SYS_FCHMOD_EXTENDED": "syscall", + "syscall.SYS_FCHOWN": "syscall", + "syscall.SYS_FCHOWN32": "syscall", + "syscall.SYS_FCHOWNAT": "syscall", + "syscall.SYS_FCHROOT": "syscall", + "syscall.SYS_FCNTL": "syscall", + "syscall.SYS_FCNTL64": "syscall", + "syscall.SYS_FCNTL_NOCANCEL": "syscall", + "syscall.SYS_FDATASYNC": "syscall", + "syscall.SYS_FEXECVE": "syscall", + "syscall.SYS_FFCLOCK_GETCOUNTER": "syscall", + "syscall.SYS_FFCLOCK_GETESTIMATE": "syscall", + "syscall.SYS_FFCLOCK_SETESTIMATE": "syscall", + "syscall.SYS_FFSCTL": "syscall", + "syscall.SYS_FGETATTRLIST": "syscall", + "syscall.SYS_FGETXATTR": "syscall", + "syscall.SYS_FHOPEN": "syscall", + "syscall.SYS_FHSTAT": "syscall", + "syscall.SYS_FHSTATFS": "syscall", + "syscall.SYS_FILEPORT_MAKEFD": "syscall", + "syscall.SYS_FILEPORT_MAKEPORT": "syscall", + "syscall.SYS_FKTRACE": "syscall", + "syscall.SYS_FLISTXATTR": "syscall", + "syscall.SYS_FLOCK": "syscall", + "syscall.SYS_FORK": "syscall", + "syscall.SYS_FPATHCONF": "syscall", + "syscall.SYS_FREEBSD6_FTRUNCATE": "syscall", + "syscall.SYS_FREEBSD6_LSEEK": "syscall", + "syscall.SYS_FREEBSD6_MMAP": "syscall", + "syscall.SYS_FREEBSD6_PREAD": "syscall", + "syscall.SYS_FREEBSD6_PWRITE": "syscall", + "syscall.SYS_FREEBSD6_TRUNCATE": "syscall", + "syscall.SYS_FREMOVEXATTR": "syscall", + "syscall.SYS_FSCTL": "syscall", + "syscall.SYS_FSETATTRLIST": "syscall", + "syscall.SYS_FSETXATTR": "syscall", + "syscall.SYS_FSGETPATH": "syscall", + "syscall.SYS_FSTAT": "syscall", + "syscall.SYS_FSTAT64": "syscall", + "syscall.SYS_FSTAT64_EXTENDED": "syscall", + "syscall.SYS_FSTATAT": "syscall", + "syscall.SYS_FSTATAT64": "syscall", + "syscall.SYS_FSTATFS": "syscall", + "syscall.SYS_FSTATFS64": "syscall", + "syscall.SYS_FSTATV": "syscall", + "syscall.SYS_FSTATVFS1": "syscall", + "syscall.SYS_FSTAT_EXTENDED": "syscall", + "syscall.SYS_FSYNC": "syscall", + "syscall.SYS_FSYNC_NOCANCEL": "syscall", + "syscall.SYS_FSYNC_RANGE": "syscall", + "syscall.SYS_FTIME": "syscall", + "syscall.SYS_FTRUNCATE": "syscall", + "syscall.SYS_FTRUNCATE64": "syscall", + "syscall.SYS_FUTEX": "syscall", + "syscall.SYS_FUTIMENS": "syscall", + "syscall.SYS_FUTIMES": "syscall", + "syscall.SYS_FUTIMESAT": "syscall", + "syscall.SYS_GETATTRLIST": "syscall", + "syscall.SYS_GETAUDIT": "syscall", + "syscall.SYS_GETAUDIT_ADDR": "syscall", + "syscall.SYS_GETAUID": "syscall", + "syscall.SYS_GETCONTEXT": "syscall", + "syscall.SYS_GETCPU": "syscall", + "syscall.SYS_GETCWD": "syscall", + "syscall.SYS_GETDENTS": "syscall", + "syscall.SYS_GETDENTS64": "syscall", + "syscall.SYS_GETDIRENTRIES": "syscall", + "syscall.SYS_GETDIRENTRIES64": "syscall", + "syscall.SYS_GETDIRENTRIESATTR": "syscall", + "syscall.SYS_GETDTABLECOUNT": "syscall", + "syscall.SYS_GETDTABLESIZE": "syscall", + "syscall.SYS_GETEGID": "syscall", + "syscall.SYS_GETEGID32": "syscall", + "syscall.SYS_GETEUID": "syscall", + "syscall.SYS_GETEUID32": "syscall", + "syscall.SYS_GETFH": "syscall", + "syscall.SYS_GETFSSTAT": "syscall", + "syscall.SYS_GETFSSTAT64": "syscall", + "syscall.SYS_GETGID": "syscall", + "syscall.SYS_GETGID32": "syscall", + "syscall.SYS_GETGROUPS": "syscall", + "syscall.SYS_GETGROUPS32": "syscall", + "syscall.SYS_GETHOSTUUID": "syscall", + "syscall.SYS_GETITIMER": "syscall", + "syscall.SYS_GETLCID": "syscall", + "syscall.SYS_GETLOGIN": "syscall", + "syscall.SYS_GETLOGINCLASS": "syscall", + "syscall.SYS_GETPEERNAME": "syscall", + "syscall.SYS_GETPGID": "syscall", + "syscall.SYS_GETPGRP": "syscall", + "syscall.SYS_GETPID": "syscall", + "syscall.SYS_GETPMSG": "syscall", + "syscall.SYS_GETPPID": "syscall", + "syscall.SYS_GETPRIORITY": "syscall", + "syscall.SYS_GETRESGID": "syscall", + "syscall.SYS_GETRESGID32": "syscall", + "syscall.SYS_GETRESUID": "syscall", + "syscall.SYS_GETRESUID32": "syscall", + "syscall.SYS_GETRLIMIT": "syscall", + "syscall.SYS_GETRTABLE": "syscall", + "syscall.SYS_GETRUSAGE": "syscall", + "syscall.SYS_GETSGROUPS": "syscall", + "syscall.SYS_GETSID": "syscall", + "syscall.SYS_GETSOCKNAME": "syscall", + "syscall.SYS_GETSOCKOPT": "syscall", + "syscall.SYS_GETTHRID": "syscall", + "syscall.SYS_GETTID": "syscall", + "syscall.SYS_GETTIMEOFDAY": "syscall", + "syscall.SYS_GETUID": "syscall", + "syscall.SYS_GETUID32": "syscall", + "syscall.SYS_GETVFSSTAT": "syscall", + "syscall.SYS_GETWGROUPS": "syscall", + "syscall.SYS_GETXATTR": "syscall", + "syscall.SYS_GET_KERNEL_SYMS": "syscall", + "syscall.SYS_GET_MEMPOLICY": "syscall", + "syscall.SYS_GET_ROBUST_LIST": "syscall", + "syscall.SYS_GET_THREAD_AREA": "syscall", + "syscall.SYS_GTTY": "syscall", + "syscall.SYS_IDENTITYSVC": "syscall", + "syscall.SYS_IDLE": "syscall", + "syscall.SYS_INITGROUPS": "syscall", + "syscall.SYS_INIT_MODULE": "syscall", + "syscall.SYS_INOTIFY_ADD_WATCH": "syscall", + "syscall.SYS_INOTIFY_INIT": "syscall", + "syscall.SYS_INOTIFY_INIT1": "syscall", + "syscall.SYS_INOTIFY_RM_WATCH": "syscall", + "syscall.SYS_IOCTL": "syscall", + "syscall.SYS_IOPERM": "syscall", + "syscall.SYS_IOPL": "syscall", + "syscall.SYS_IOPOLICYSYS": "syscall", + "syscall.SYS_IOPRIO_GET": "syscall", + "syscall.SYS_IOPRIO_SET": "syscall", + "syscall.SYS_IO_CANCEL": "syscall", + "syscall.SYS_IO_DESTROY": "syscall", + "syscall.SYS_IO_GETEVENTS": "syscall", + "syscall.SYS_IO_SETUP": "syscall", + "syscall.SYS_IO_SUBMIT": "syscall", + "syscall.SYS_IPC": "syscall", + "syscall.SYS_ISSETUGID": "syscall", + "syscall.SYS_JAIL": "syscall", + "syscall.SYS_JAIL_ATTACH": "syscall", + "syscall.SYS_JAIL_GET": "syscall", + "syscall.SYS_JAIL_REMOVE": "syscall", + "syscall.SYS_JAIL_SET": "syscall", + "syscall.SYS_KDEBUG_TRACE": "syscall", + "syscall.SYS_KENV": "syscall", + "syscall.SYS_KEVENT": "syscall", + "syscall.SYS_KEVENT64": "syscall", + "syscall.SYS_KEXEC_LOAD": "syscall", + "syscall.SYS_KEYCTL": "syscall", + "syscall.SYS_KILL": "syscall", + "syscall.SYS_KLDFIND": "syscall", + "syscall.SYS_KLDFIRSTMOD": "syscall", + "syscall.SYS_KLDLOAD": "syscall", + "syscall.SYS_KLDNEXT": "syscall", + "syscall.SYS_KLDSTAT": "syscall", + "syscall.SYS_KLDSYM": "syscall", + "syscall.SYS_KLDUNLOAD": "syscall", + "syscall.SYS_KLDUNLOADF": "syscall", + "syscall.SYS_KQUEUE": "syscall", + "syscall.SYS_KQUEUE1": "syscall", + "syscall.SYS_KTIMER_CREATE": "syscall", + "syscall.SYS_KTIMER_DELETE": "syscall", + "syscall.SYS_KTIMER_GETOVERRUN": "syscall", + "syscall.SYS_KTIMER_GETTIME": "syscall", + "syscall.SYS_KTIMER_SETTIME": "syscall", + "syscall.SYS_KTRACE": "syscall", + "syscall.SYS_LCHFLAGS": "syscall", + "syscall.SYS_LCHMOD": "syscall", + "syscall.SYS_LCHOWN": "syscall", + "syscall.SYS_LCHOWN32": "syscall", + "syscall.SYS_LGETFH": "syscall", + "syscall.SYS_LGETXATTR": "syscall", + "syscall.SYS_LINK": "syscall", + "syscall.SYS_LINKAT": "syscall", + "syscall.SYS_LIO_LISTIO": "syscall", + "syscall.SYS_LISTEN": "syscall", + "syscall.SYS_LISTXATTR": "syscall", + "syscall.SYS_LLISTXATTR": "syscall", + "syscall.SYS_LOCK": "syscall", + "syscall.SYS_LOOKUP_DCOOKIE": "syscall", + "syscall.SYS_LPATHCONF": "syscall", + "syscall.SYS_LREMOVEXATTR": "syscall", + "syscall.SYS_LSEEK": "syscall", + "syscall.SYS_LSETXATTR": "syscall", + "syscall.SYS_LSTAT": "syscall", + "syscall.SYS_LSTAT64": "syscall", + "syscall.SYS_LSTAT64_EXTENDED": "syscall", + "syscall.SYS_LSTATV": "syscall", + "syscall.SYS_LSTAT_EXTENDED": "syscall", + "syscall.SYS_LUTIMES": "syscall", + "syscall.SYS_MAC_SYSCALL": "syscall", + "syscall.SYS_MADVISE": "syscall", + "syscall.SYS_MADVISE1": "syscall", + "syscall.SYS_MAXSYSCALL": "syscall", + "syscall.SYS_MBIND": "syscall", + "syscall.SYS_MIGRATE_PAGES": "syscall", + "syscall.SYS_MINCORE": "syscall", + "syscall.SYS_MINHERIT": "syscall", + "syscall.SYS_MKCOMPLEX": "syscall", + "syscall.SYS_MKDIR": "syscall", + "syscall.SYS_MKDIRAT": "syscall", + "syscall.SYS_MKDIR_EXTENDED": "syscall", + "syscall.SYS_MKFIFO": "syscall", + "syscall.SYS_MKFIFOAT": "syscall", + "syscall.SYS_MKFIFO_EXTENDED": "syscall", + "syscall.SYS_MKNOD": "syscall", + "syscall.SYS_MKNODAT": "syscall", + "syscall.SYS_MLOCK": "syscall", + "syscall.SYS_MLOCKALL": "syscall", + "syscall.SYS_MMAP": "syscall", + "syscall.SYS_MMAP2": "syscall", + "syscall.SYS_MODCTL": "syscall", + "syscall.SYS_MODFIND": "syscall", + "syscall.SYS_MODFNEXT": "syscall", + "syscall.SYS_MODIFY_LDT": "syscall", + "syscall.SYS_MODNEXT": "syscall", + "syscall.SYS_MODSTAT": "syscall", + "syscall.SYS_MODWATCH": "syscall", + "syscall.SYS_MOUNT": "syscall", + "syscall.SYS_MOVE_PAGES": "syscall", + "syscall.SYS_MPROTECT": "syscall", + "syscall.SYS_MPX": "syscall", + "syscall.SYS_MQUERY": "syscall", + "syscall.SYS_MQ_GETSETATTR": "syscall", + "syscall.SYS_MQ_NOTIFY": "syscall", + "syscall.SYS_MQ_OPEN": "syscall", + "syscall.SYS_MQ_TIMEDRECEIVE": "syscall", + "syscall.SYS_MQ_TIMEDSEND": "syscall", + "syscall.SYS_MQ_UNLINK": "syscall", + "syscall.SYS_MREMAP": "syscall", + "syscall.SYS_MSGCTL": "syscall", + "syscall.SYS_MSGGET": "syscall", + "syscall.SYS_MSGRCV": "syscall", + "syscall.SYS_MSGRCV_NOCANCEL": "syscall", + "syscall.SYS_MSGSND": "syscall", + "syscall.SYS_MSGSND_NOCANCEL": "syscall", + "syscall.SYS_MSGSYS": "syscall", + "syscall.SYS_MSYNC": "syscall", + "syscall.SYS_MSYNC_NOCANCEL": "syscall", + "syscall.SYS_MUNLOCK": "syscall", + "syscall.SYS_MUNLOCKALL": "syscall", + "syscall.SYS_MUNMAP": "syscall", + "syscall.SYS_NAME_TO_HANDLE_AT": "syscall", + "syscall.SYS_NANOSLEEP": "syscall", + "syscall.SYS_NEWFSTATAT": "syscall", + "syscall.SYS_NFSCLNT": "syscall", + "syscall.SYS_NFSSERVCTL": "syscall", + "syscall.SYS_NFSSVC": "syscall", + "syscall.SYS_NFSTAT": "syscall", + "syscall.SYS_NICE": "syscall", + "syscall.SYS_NLSTAT": "syscall", + "syscall.SYS_NMOUNT": "syscall", + "syscall.SYS_NSTAT": "syscall", + "syscall.SYS_NTP_ADJTIME": "syscall", + "syscall.SYS_NTP_GETTIME": "syscall", + "syscall.SYS_OABI_SYSCALL_BASE": "syscall", + "syscall.SYS_OBREAK": "syscall", + "syscall.SYS_OLDFSTAT": "syscall", + "syscall.SYS_OLDLSTAT": "syscall", + "syscall.SYS_OLDOLDUNAME": "syscall", + "syscall.SYS_OLDSTAT": "syscall", + "syscall.SYS_OLDUNAME": "syscall", + "syscall.SYS_OPEN": "syscall", + "syscall.SYS_OPENAT": "syscall", + "syscall.SYS_OPENBSD_POLL": "syscall", + "syscall.SYS_OPEN_BY_HANDLE_AT": "syscall", + "syscall.SYS_OPEN_EXTENDED": "syscall", + "syscall.SYS_OPEN_NOCANCEL": "syscall", + "syscall.SYS_OVADVISE": "syscall", + "syscall.SYS_PACCEPT": "syscall", + "syscall.SYS_PATHCONF": "syscall", + "syscall.SYS_PAUSE": "syscall", + "syscall.SYS_PCICONFIG_IOBASE": "syscall", + "syscall.SYS_PCICONFIG_READ": "syscall", + "syscall.SYS_PCICONFIG_WRITE": "syscall", + "syscall.SYS_PDFORK": "syscall", + "syscall.SYS_PDGETPID": "syscall", + "syscall.SYS_PDKILL": "syscall", + "syscall.SYS_PERF_EVENT_OPEN": "syscall", + "syscall.SYS_PERSONALITY": "syscall", + "syscall.SYS_PID_HIBERNATE": "syscall", + "syscall.SYS_PID_RESUME": "syscall", + "syscall.SYS_PID_SHUTDOWN_SOCKETS": "syscall", + "syscall.SYS_PID_SUSPEND": "syscall", + "syscall.SYS_PIPE": "syscall", + "syscall.SYS_PIPE2": "syscall", + "syscall.SYS_PIVOT_ROOT": "syscall", + "syscall.SYS_PMC_CONTROL": "syscall", + "syscall.SYS_PMC_GET_INFO": "syscall", + "syscall.SYS_POLL": "syscall", + "syscall.SYS_POLLTS": "syscall", + "syscall.SYS_POLL_NOCANCEL": "syscall", + "syscall.SYS_POSIX_FADVISE": "syscall", + "syscall.SYS_POSIX_FALLOCATE": "syscall", + "syscall.SYS_POSIX_OPENPT": "syscall", + "syscall.SYS_POSIX_SPAWN": "syscall", + "syscall.SYS_PPOLL": "syscall", + "syscall.SYS_PRCTL": "syscall", + "syscall.SYS_PREAD": "syscall", + "syscall.SYS_PREAD64": "syscall", + "syscall.SYS_PREADV": "syscall", + "syscall.SYS_PREAD_NOCANCEL": "syscall", + "syscall.SYS_PRLIMIT64": "syscall", + "syscall.SYS_PROCCTL": "syscall", + "syscall.SYS_PROCESS_POLICY": "syscall", + "syscall.SYS_PROCESS_VM_READV": "syscall", + "syscall.SYS_PROCESS_VM_WRITEV": "syscall", + "syscall.SYS_PROC_INFO": "syscall", + "syscall.SYS_PROF": "syscall", + "syscall.SYS_PROFIL": "syscall", + "syscall.SYS_PSELECT": "syscall", + "syscall.SYS_PSELECT6": "syscall", + "syscall.SYS_PSET_ASSIGN": "syscall", + "syscall.SYS_PSET_CREATE": "syscall", + "syscall.SYS_PSET_DESTROY": "syscall", + "syscall.SYS_PSYNCH_CVBROAD": "syscall", + "syscall.SYS_PSYNCH_CVCLRPREPOST": "syscall", + "syscall.SYS_PSYNCH_CVSIGNAL": "syscall", + "syscall.SYS_PSYNCH_CVWAIT": "syscall", + "syscall.SYS_PSYNCH_MUTEXDROP": "syscall", + "syscall.SYS_PSYNCH_MUTEXWAIT": "syscall", + "syscall.SYS_PSYNCH_RW_DOWNGRADE": "syscall", + "syscall.SYS_PSYNCH_RW_LONGRDLOCK": "syscall", + "syscall.SYS_PSYNCH_RW_RDLOCK": "syscall", + "syscall.SYS_PSYNCH_RW_UNLOCK": "syscall", + "syscall.SYS_PSYNCH_RW_UNLOCK2": "syscall", + "syscall.SYS_PSYNCH_RW_UPGRADE": "syscall", + "syscall.SYS_PSYNCH_RW_WRLOCK": "syscall", + "syscall.SYS_PSYNCH_RW_YIELDWRLOCK": "syscall", + "syscall.SYS_PTRACE": "syscall", + "syscall.SYS_PUTPMSG": "syscall", + "syscall.SYS_PWRITE": "syscall", + "syscall.SYS_PWRITE64": "syscall", + "syscall.SYS_PWRITEV": "syscall", + "syscall.SYS_PWRITE_NOCANCEL": "syscall", + "syscall.SYS_QUERY_MODULE": "syscall", + "syscall.SYS_QUOTACTL": "syscall", + "syscall.SYS_RASCTL": "syscall", + "syscall.SYS_RCTL_ADD_RULE": "syscall", + "syscall.SYS_RCTL_GET_LIMITS": "syscall", + "syscall.SYS_RCTL_GET_RACCT": "syscall", + "syscall.SYS_RCTL_GET_RULES": "syscall", + "syscall.SYS_RCTL_REMOVE_RULE": "syscall", + "syscall.SYS_READ": "syscall", + "syscall.SYS_READAHEAD": "syscall", + "syscall.SYS_READDIR": "syscall", + "syscall.SYS_READLINK": "syscall", + "syscall.SYS_READLINKAT": "syscall", + "syscall.SYS_READV": "syscall", + "syscall.SYS_READV_NOCANCEL": "syscall", + "syscall.SYS_READ_NOCANCEL": "syscall", + "syscall.SYS_REBOOT": "syscall", + "syscall.SYS_RECV": "syscall", + "syscall.SYS_RECVFROM": "syscall", + "syscall.SYS_RECVFROM_NOCANCEL": "syscall", + "syscall.SYS_RECVMMSG": "syscall", + "syscall.SYS_RECVMSG": "syscall", + "syscall.SYS_RECVMSG_NOCANCEL": "syscall", + "syscall.SYS_REMAP_FILE_PAGES": "syscall", + "syscall.SYS_REMOVEXATTR": "syscall", + "syscall.SYS_RENAME": "syscall", + "syscall.SYS_RENAMEAT": "syscall", + "syscall.SYS_REQUEST_KEY": "syscall", + "syscall.SYS_RESTART_SYSCALL": "syscall", + "syscall.SYS_REVOKE": "syscall", + "syscall.SYS_RFORK": "syscall", + "syscall.SYS_RMDIR": "syscall", + "syscall.SYS_RTPRIO": "syscall", + "syscall.SYS_RTPRIO_THREAD": "syscall", + "syscall.SYS_RT_SIGACTION": "syscall", + "syscall.SYS_RT_SIGPENDING": "syscall", + "syscall.SYS_RT_SIGPROCMASK": "syscall", + "syscall.SYS_RT_SIGQUEUEINFO": "syscall", + "syscall.SYS_RT_SIGRETURN": "syscall", + "syscall.SYS_RT_SIGSUSPEND": "syscall", + "syscall.SYS_RT_SIGTIMEDWAIT": "syscall", + "syscall.SYS_RT_TGSIGQUEUEINFO": "syscall", + "syscall.SYS_SBRK": "syscall", + "syscall.SYS_SCHED_GETAFFINITY": "syscall", + "syscall.SYS_SCHED_GETPARAM": "syscall", + "syscall.SYS_SCHED_GETSCHEDULER": "syscall", + "syscall.SYS_SCHED_GET_PRIORITY_MAX": "syscall", + "syscall.SYS_SCHED_GET_PRIORITY_MIN": "syscall", + "syscall.SYS_SCHED_RR_GET_INTERVAL": "syscall", + "syscall.SYS_SCHED_SETAFFINITY": "syscall", + "syscall.SYS_SCHED_SETPARAM": "syscall", + "syscall.SYS_SCHED_SETSCHEDULER": "syscall", + "syscall.SYS_SCHED_YIELD": "syscall", + "syscall.SYS_SCTP_GENERIC_RECVMSG": "syscall", + "syscall.SYS_SCTP_GENERIC_SENDMSG": "syscall", + "syscall.SYS_SCTP_GENERIC_SENDMSG_IOV": "syscall", + "syscall.SYS_SCTP_PEELOFF": "syscall", + "syscall.SYS_SEARCHFS": "syscall", + "syscall.SYS_SECURITY": "syscall", + "syscall.SYS_SELECT": "syscall", + "syscall.SYS_SELECT_NOCANCEL": "syscall", + "syscall.SYS_SEMCONFIG": "syscall", + "syscall.SYS_SEMCTL": "syscall", + "syscall.SYS_SEMGET": "syscall", + "syscall.SYS_SEMOP": "syscall", + "syscall.SYS_SEMSYS": "syscall", + "syscall.SYS_SEMTIMEDOP": "syscall", + "syscall.SYS_SEM_CLOSE": "syscall", + "syscall.SYS_SEM_DESTROY": "syscall", + "syscall.SYS_SEM_GETVALUE": "syscall", + "syscall.SYS_SEM_INIT": "syscall", + "syscall.SYS_SEM_OPEN": "syscall", + "syscall.SYS_SEM_POST": "syscall", + "syscall.SYS_SEM_TRYWAIT": "syscall", + "syscall.SYS_SEM_UNLINK": "syscall", + "syscall.SYS_SEM_WAIT": "syscall", + "syscall.SYS_SEM_WAIT_NOCANCEL": "syscall", + "syscall.SYS_SEND": "syscall", + "syscall.SYS_SENDFILE": "syscall", + "syscall.SYS_SENDFILE64": "syscall", + "syscall.SYS_SENDMMSG": "syscall", + "syscall.SYS_SENDMSG": "syscall", + "syscall.SYS_SENDMSG_NOCANCEL": "syscall", + "syscall.SYS_SENDTO": "syscall", + "syscall.SYS_SENDTO_NOCANCEL": "syscall", + "syscall.SYS_SETATTRLIST": "syscall", + "syscall.SYS_SETAUDIT": "syscall", + "syscall.SYS_SETAUDIT_ADDR": "syscall", + "syscall.SYS_SETAUID": "syscall", + "syscall.SYS_SETCONTEXT": "syscall", + "syscall.SYS_SETDOMAINNAME": "syscall", + "syscall.SYS_SETEGID": "syscall", + "syscall.SYS_SETEUID": "syscall", + "syscall.SYS_SETFIB": "syscall", + "syscall.SYS_SETFSGID": "syscall", + "syscall.SYS_SETFSGID32": "syscall", + "syscall.SYS_SETFSUID": "syscall", + "syscall.SYS_SETFSUID32": "syscall", + "syscall.SYS_SETGID": "syscall", + "syscall.SYS_SETGID32": "syscall", + "syscall.SYS_SETGROUPS": "syscall", + "syscall.SYS_SETGROUPS32": "syscall", + "syscall.SYS_SETHOSTNAME": "syscall", + "syscall.SYS_SETITIMER": "syscall", + "syscall.SYS_SETLCID": "syscall", + "syscall.SYS_SETLOGIN": "syscall", + "syscall.SYS_SETLOGINCLASS": "syscall", + "syscall.SYS_SETNS": "syscall", + "syscall.SYS_SETPGID": "syscall", + "syscall.SYS_SETPRIORITY": "syscall", + "syscall.SYS_SETPRIVEXEC": "syscall", + "syscall.SYS_SETREGID": "syscall", + "syscall.SYS_SETREGID32": "syscall", + "syscall.SYS_SETRESGID": "syscall", + "syscall.SYS_SETRESGID32": "syscall", + "syscall.SYS_SETRESUID": "syscall", + "syscall.SYS_SETRESUID32": "syscall", + "syscall.SYS_SETREUID": "syscall", + "syscall.SYS_SETREUID32": "syscall", + "syscall.SYS_SETRLIMIT": "syscall", + "syscall.SYS_SETRTABLE": "syscall", + "syscall.SYS_SETSGROUPS": "syscall", + "syscall.SYS_SETSID": "syscall", + "syscall.SYS_SETSOCKOPT": "syscall", + "syscall.SYS_SETTID": "syscall", + "syscall.SYS_SETTID_WITH_PID": "syscall", + "syscall.SYS_SETTIMEOFDAY": "syscall", + "syscall.SYS_SETUID": "syscall", + "syscall.SYS_SETUID32": "syscall", + "syscall.SYS_SETWGROUPS": "syscall", + "syscall.SYS_SETXATTR": "syscall", + "syscall.SYS_SET_MEMPOLICY": "syscall", + "syscall.SYS_SET_ROBUST_LIST": "syscall", + "syscall.SYS_SET_THREAD_AREA": "syscall", + "syscall.SYS_SET_TID_ADDRESS": "syscall", + "syscall.SYS_SGETMASK": "syscall", + "syscall.SYS_SHARED_REGION_CHECK_NP": "syscall", + "syscall.SYS_SHARED_REGION_MAP_AND_SLIDE_NP": "syscall", + "syscall.SYS_SHMAT": "syscall", + "syscall.SYS_SHMCTL": "syscall", + "syscall.SYS_SHMDT": "syscall", + "syscall.SYS_SHMGET": "syscall", + "syscall.SYS_SHMSYS": "syscall", + "syscall.SYS_SHM_OPEN": "syscall", + "syscall.SYS_SHM_UNLINK": "syscall", + "syscall.SYS_SHUTDOWN": "syscall", + "syscall.SYS_SIGACTION": "syscall", + "syscall.SYS_SIGALTSTACK": "syscall", + "syscall.SYS_SIGNAL": "syscall", + "syscall.SYS_SIGNALFD": "syscall", + "syscall.SYS_SIGNALFD4": "syscall", + "syscall.SYS_SIGPENDING": "syscall", + "syscall.SYS_SIGPROCMASK": "syscall", + "syscall.SYS_SIGQUEUE": "syscall", + "syscall.SYS_SIGQUEUEINFO": "syscall", + "syscall.SYS_SIGRETURN": "syscall", + "syscall.SYS_SIGSUSPEND": "syscall", + "syscall.SYS_SIGSUSPEND_NOCANCEL": "syscall", + "syscall.SYS_SIGTIMEDWAIT": "syscall", + "syscall.SYS_SIGWAIT": "syscall", + "syscall.SYS_SIGWAITINFO": "syscall", + "syscall.SYS_SOCKET": "syscall", + "syscall.SYS_SOCKETCALL": "syscall", + "syscall.SYS_SOCKETPAIR": "syscall", + "syscall.SYS_SPLICE": "syscall", + "syscall.SYS_SSETMASK": "syscall", + "syscall.SYS_SSTK": "syscall", + "syscall.SYS_STACK_SNAPSHOT": "syscall", + "syscall.SYS_STAT": "syscall", + "syscall.SYS_STAT64": "syscall", + "syscall.SYS_STAT64_EXTENDED": "syscall", + "syscall.SYS_STATFS": "syscall", + "syscall.SYS_STATFS64": "syscall", + "syscall.SYS_STATV": "syscall", + "syscall.SYS_STATVFS1": "syscall", + "syscall.SYS_STAT_EXTENDED": "syscall", + "syscall.SYS_STIME": "syscall", + "syscall.SYS_STTY": "syscall", + "syscall.SYS_SWAPCONTEXT": "syscall", + "syscall.SYS_SWAPCTL": "syscall", + "syscall.SYS_SWAPOFF": "syscall", + "syscall.SYS_SWAPON": "syscall", + "syscall.SYS_SYMLINK": "syscall", + "syscall.SYS_SYMLINKAT": "syscall", + "syscall.SYS_SYNC": "syscall", + "syscall.SYS_SYNCFS": "syscall", + "syscall.SYS_SYNC_FILE_RANGE": "syscall", + "syscall.SYS_SYSARCH": "syscall", + "syscall.SYS_SYSCALL": "syscall", + "syscall.SYS_SYSCALL_BASE": "syscall", + "syscall.SYS_SYSFS": "syscall", + "syscall.SYS_SYSINFO": "syscall", + "syscall.SYS_SYSLOG": "syscall", + "syscall.SYS_TEE": "syscall", + "syscall.SYS_TGKILL": "syscall", + "syscall.SYS_THREAD_SELFID": "syscall", + "syscall.SYS_THR_CREATE": "syscall", + "syscall.SYS_THR_EXIT": "syscall", + "syscall.SYS_THR_KILL": "syscall", + "syscall.SYS_THR_KILL2": "syscall", + "syscall.SYS_THR_NEW": "syscall", + "syscall.SYS_THR_SELF": "syscall", + "syscall.SYS_THR_SET_NAME": "syscall", + "syscall.SYS_THR_SUSPEND": "syscall", + "syscall.SYS_THR_WAKE": "syscall", + "syscall.SYS_TIME": "syscall", + "syscall.SYS_TIMERFD_CREATE": "syscall", + "syscall.SYS_TIMERFD_GETTIME": "syscall", + "syscall.SYS_TIMERFD_SETTIME": "syscall", + "syscall.SYS_TIMER_CREATE": "syscall", + "syscall.SYS_TIMER_DELETE": "syscall", + "syscall.SYS_TIMER_GETOVERRUN": "syscall", + "syscall.SYS_TIMER_GETTIME": "syscall", + "syscall.SYS_TIMER_SETTIME": "syscall", + "syscall.SYS_TIMES": "syscall", + "syscall.SYS_TKILL": "syscall", + "syscall.SYS_TRUNCATE": "syscall", + "syscall.SYS_TRUNCATE64": "syscall", + "syscall.SYS_TUXCALL": "syscall", + "syscall.SYS_UGETRLIMIT": "syscall", + "syscall.SYS_ULIMIT": "syscall", + "syscall.SYS_UMASK": "syscall", + "syscall.SYS_UMASK_EXTENDED": "syscall", + "syscall.SYS_UMOUNT": "syscall", + "syscall.SYS_UMOUNT2": "syscall", + "syscall.SYS_UNAME": "syscall", + "syscall.SYS_UNDELETE": "syscall", + "syscall.SYS_UNLINK": "syscall", + "syscall.SYS_UNLINKAT": "syscall", + "syscall.SYS_UNMOUNT": "syscall", + "syscall.SYS_UNSHARE": "syscall", + "syscall.SYS_USELIB": "syscall", + "syscall.SYS_USTAT": "syscall", + "syscall.SYS_UTIME": "syscall", + "syscall.SYS_UTIMENSAT": "syscall", + "syscall.SYS_UTIMES": "syscall", + "syscall.SYS_UTRACE": "syscall", + "syscall.SYS_UUIDGEN": "syscall", + "syscall.SYS_VADVISE": "syscall", + "syscall.SYS_VFORK": "syscall", + "syscall.SYS_VHANGUP": "syscall", + "syscall.SYS_VM86": "syscall", + "syscall.SYS_VM86OLD": "syscall", + "syscall.SYS_VMSPLICE": "syscall", + "syscall.SYS_VM_PRESSURE_MONITOR": "syscall", + "syscall.SYS_VSERVER": "syscall", + "syscall.SYS_WAIT4": "syscall", + "syscall.SYS_WAIT4_NOCANCEL": "syscall", + "syscall.SYS_WAIT6": "syscall", + "syscall.SYS_WAITEVENT": "syscall", + "syscall.SYS_WAITID": "syscall", + "syscall.SYS_WAITID_NOCANCEL": "syscall", + "syscall.SYS_WAITPID": "syscall", + "syscall.SYS_WATCHEVENT": "syscall", + "syscall.SYS_WORKQ_KERNRETURN": "syscall", + "syscall.SYS_WORKQ_OPEN": "syscall", + "syscall.SYS_WRITE": "syscall", + "syscall.SYS_WRITEV": "syscall", + "syscall.SYS_WRITEV_NOCANCEL": "syscall", + "syscall.SYS_WRITE_NOCANCEL": "syscall", + "syscall.SYS_YIELD": "syscall", + "syscall.SYS__LLSEEK": "syscall", + "syscall.SYS__LWP_CONTINUE": "syscall", + "syscall.SYS__LWP_CREATE": "syscall", + "syscall.SYS__LWP_CTL": "syscall", + "syscall.SYS__LWP_DETACH": "syscall", + "syscall.SYS__LWP_EXIT": "syscall", + "syscall.SYS__LWP_GETNAME": "syscall", + "syscall.SYS__LWP_GETPRIVATE": "syscall", + "syscall.SYS__LWP_KILL": "syscall", + "syscall.SYS__LWP_PARK": "syscall", + "syscall.SYS__LWP_SELF": "syscall", + "syscall.SYS__LWP_SETNAME": "syscall", + "syscall.SYS__LWP_SETPRIVATE": "syscall", + "syscall.SYS__LWP_SUSPEND": "syscall", + "syscall.SYS__LWP_UNPARK": "syscall", + "syscall.SYS__LWP_UNPARK_ALL": "syscall", + "syscall.SYS__LWP_WAIT": "syscall", + "syscall.SYS__LWP_WAKEUP": "syscall", + "syscall.SYS__NEWSELECT": "syscall", + "syscall.SYS__PSET_BIND": "syscall", + "syscall.SYS__SCHED_GETAFFINITY": "syscall", + "syscall.SYS__SCHED_GETPARAM": "syscall", + "syscall.SYS__SCHED_SETAFFINITY": "syscall", + "syscall.SYS__SCHED_SETPARAM": "syscall", + "syscall.SYS__SYSCTL": "syscall", + "syscall.SYS__UMTX_LOCK": "syscall", + "syscall.SYS__UMTX_OP": "syscall", + "syscall.SYS__UMTX_UNLOCK": "syscall", + "syscall.SYS___ACL_ACLCHECK_FD": "syscall", + "syscall.SYS___ACL_ACLCHECK_FILE": "syscall", + "syscall.SYS___ACL_ACLCHECK_LINK": "syscall", + "syscall.SYS___ACL_DELETE_FD": "syscall", + "syscall.SYS___ACL_DELETE_FILE": "syscall", + "syscall.SYS___ACL_DELETE_LINK": "syscall", + "syscall.SYS___ACL_GET_FD": "syscall", + "syscall.SYS___ACL_GET_FILE": "syscall", + "syscall.SYS___ACL_GET_LINK": "syscall", + "syscall.SYS___ACL_SET_FD": "syscall", + "syscall.SYS___ACL_SET_FILE": "syscall", + "syscall.SYS___ACL_SET_LINK": "syscall", + "syscall.SYS___CLONE": "syscall", + "syscall.SYS___DISABLE_THREADSIGNAL": "syscall", + "syscall.SYS___GETCWD": "syscall", + "syscall.SYS___GETLOGIN": "syscall", + "syscall.SYS___GET_TCB": "syscall", + "syscall.SYS___MAC_EXECVE": "syscall", + "syscall.SYS___MAC_GETFSSTAT": "syscall", + "syscall.SYS___MAC_GET_FD": "syscall", + "syscall.SYS___MAC_GET_FILE": "syscall", + "syscall.SYS___MAC_GET_LCID": "syscall", + "syscall.SYS___MAC_GET_LCTX": "syscall", + "syscall.SYS___MAC_GET_LINK": "syscall", + "syscall.SYS___MAC_GET_MOUNT": "syscall", + "syscall.SYS___MAC_GET_PID": "syscall", + "syscall.SYS___MAC_GET_PROC": "syscall", + "syscall.SYS___MAC_MOUNT": "syscall", + "syscall.SYS___MAC_SET_FD": "syscall", + "syscall.SYS___MAC_SET_FILE": "syscall", + "syscall.SYS___MAC_SET_LCTX": "syscall", + "syscall.SYS___MAC_SET_LINK": "syscall", + "syscall.SYS___MAC_SET_PROC": "syscall", + "syscall.SYS___MAC_SYSCALL": "syscall", + "syscall.SYS___OLD_SEMWAIT_SIGNAL": "syscall", + "syscall.SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL": "syscall", + "syscall.SYS___POSIX_CHOWN": "syscall", + "syscall.SYS___POSIX_FCHOWN": "syscall", + "syscall.SYS___POSIX_LCHOWN": "syscall", + "syscall.SYS___POSIX_RENAME": "syscall", + "syscall.SYS___PTHREAD_CANCELED": "syscall", + "syscall.SYS___PTHREAD_CHDIR": "syscall", + "syscall.SYS___PTHREAD_FCHDIR": "syscall", + "syscall.SYS___PTHREAD_KILL": "syscall", + "syscall.SYS___PTHREAD_MARKCANCEL": "syscall", + "syscall.SYS___PTHREAD_SIGMASK": "syscall", + "syscall.SYS___QUOTACTL": "syscall", + "syscall.SYS___SEMCTL": "syscall", + "syscall.SYS___SEMWAIT_SIGNAL": "syscall", + "syscall.SYS___SEMWAIT_SIGNAL_NOCANCEL": "syscall", + "syscall.SYS___SETLOGIN": "syscall", + "syscall.SYS___SETUGID": "syscall", + "syscall.SYS___SET_TCB": "syscall", + "syscall.SYS___SIGACTION_SIGTRAMP": "syscall", + "syscall.SYS___SIGTIMEDWAIT": "syscall", + "syscall.SYS___SIGWAIT": "syscall", + "syscall.SYS___SIGWAIT_NOCANCEL": "syscall", + "syscall.SYS___SYSCTL": "syscall", + "syscall.SYS___TFORK": "syscall", + "syscall.SYS___THREXIT": "syscall", + "syscall.SYS___THRSIGDIVERT": "syscall", + "syscall.SYS___THRSLEEP": "syscall", + "syscall.SYS___THRWAKEUP": "syscall", + "syscall.S_ARCH1": "syscall", + "syscall.S_ARCH2": "syscall", + "syscall.S_BLKSIZE": "syscall", + "syscall.S_IEXEC": "syscall", + "syscall.S_IFBLK": "syscall", + "syscall.S_IFCHR": "syscall", + "syscall.S_IFDIR": "syscall", + "syscall.S_IFIFO": "syscall", + "syscall.S_IFLNK": "syscall", + "syscall.S_IFMT": "syscall", + "syscall.S_IFREG": "syscall", + "syscall.S_IFSOCK": "syscall", + "syscall.S_IFWHT": "syscall", + "syscall.S_IREAD": "syscall", + "syscall.S_IRGRP": "syscall", + "syscall.S_IROTH": "syscall", + "syscall.S_IRUSR": "syscall", + "syscall.S_IRWXG": "syscall", + "syscall.S_IRWXO": "syscall", + "syscall.S_IRWXU": "syscall", + "syscall.S_ISGID": "syscall", + "syscall.S_ISTXT": "syscall", + "syscall.S_ISUID": "syscall", + "syscall.S_ISVTX": "syscall", + "syscall.S_IWGRP": "syscall", + "syscall.S_IWOTH": "syscall", + "syscall.S_IWRITE": "syscall", + "syscall.S_IWUSR": "syscall", + "syscall.S_IXGRP": "syscall", + "syscall.S_IXOTH": "syscall", + "syscall.S_IXUSR": "syscall", + "syscall.S_LOGIN_SET": "syscall", + "syscall.SecurityAttributes": "syscall", + "syscall.Seek": "syscall", + "syscall.Select": "syscall", + "syscall.Sendfile": "syscall", + "syscall.Sendmsg": "syscall", + "syscall.SendmsgN": "syscall", + "syscall.Sendto": "syscall", + "syscall.Servent": "syscall", + "syscall.SetBpf": "syscall", + "syscall.SetBpfBuflen": "syscall", + "syscall.SetBpfDatalink": "syscall", + "syscall.SetBpfHeadercmpl": "syscall", + "syscall.SetBpfImmediate": "syscall", + "syscall.SetBpfInterface": "syscall", + "syscall.SetBpfPromisc": "syscall", + "syscall.SetBpfTimeout": "syscall", + "syscall.SetCurrentDirectory": "syscall", + "syscall.SetEndOfFile": "syscall", + "syscall.SetEnvironmentVariable": "syscall", + "syscall.SetFileAttributes": "syscall", + "syscall.SetFileCompletionNotificationModes": "syscall", + "syscall.SetFilePointer": "syscall", + "syscall.SetFileTime": "syscall", + "syscall.SetHandleInformation": "syscall", + "syscall.SetKevent": "syscall", + "syscall.SetLsfPromisc": "syscall", + "syscall.SetNonblock": "syscall", + "syscall.Setdomainname": "syscall", + "syscall.Setegid": "syscall", + "syscall.Setenv": "syscall", + "syscall.Seteuid": "syscall", + "syscall.Setfsgid": "syscall", + "syscall.Setfsuid": "syscall", + "syscall.Setgid": "syscall", + "syscall.Setgroups": "syscall", + "syscall.Sethostname": "syscall", + "syscall.Setlogin": "syscall", + "syscall.Setpgid": "syscall", + "syscall.Setpriority": "syscall", + "syscall.Setprivexec": "syscall", + "syscall.Setregid": "syscall", + "syscall.Setresgid": "syscall", + "syscall.Setresuid": "syscall", + "syscall.Setreuid": "syscall", + "syscall.Setrlimit": "syscall", + "syscall.Setsid": "syscall", + "syscall.Setsockopt": "syscall", + "syscall.SetsockoptByte": "syscall", + "syscall.SetsockoptICMPv6Filter": "syscall", + "syscall.SetsockoptIPMreq": "syscall", + "syscall.SetsockoptIPMreqn": "syscall", + "syscall.SetsockoptIPv6Mreq": "syscall", + "syscall.SetsockoptInet4Addr": "syscall", + "syscall.SetsockoptInt": "syscall", + "syscall.SetsockoptLinger": "syscall", + "syscall.SetsockoptString": "syscall", + "syscall.SetsockoptTimeval": "syscall", + "syscall.Settimeofday": "syscall", + "syscall.Setuid": "syscall", + "syscall.Setxattr": "syscall", + "syscall.Shutdown": "syscall", + "syscall.SidTypeAlias": "syscall", + "syscall.SidTypeComputer": "syscall", + "syscall.SidTypeDeletedAccount": "syscall", + "syscall.SidTypeDomain": "syscall", + "syscall.SidTypeGroup": "syscall", + "syscall.SidTypeInvalid": "syscall", + "syscall.SidTypeLabel": "syscall", + "syscall.SidTypeUnknown": "syscall", + "syscall.SidTypeUser": "syscall", + "syscall.SidTypeWellKnownGroup": "syscall", + "syscall.Signal": "syscall", + "syscall.SizeofBpfHdr": "syscall", + "syscall.SizeofBpfInsn": "syscall", + "syscall.SizeofBpfProgram": "syscall", + "syscall.SizeofBpfStat": "syscall", + "syscall.SizeofBpfVersion": "syscall", + "syscall.SizeofBpfZbuf": "syscall", + "syscall.SizeofBpfZbufHeader": "syscall", + "syscall.SizeofCmsghdr": "syscall", + "syscall.SizeofICMPv6Filter": "syscall", + "syscall.SizeofIPMreq": "syscall", + "syscall.SizeofIPMreqn": "syscall", + "syscall.SizeofIPv6MTUInfo": "syscall", + "syscall.SizeofIPv6Mreq": "syscall", + "syscall.SizeofIfAddrmsg": "syscall", + "syscall.SizeofIfAnnounceMsghdr": "syscall", + "syscall.SizeofIfData": "syscall", + "syscall.SizeofIfInfomsg": "syscall", + "syscall.SizeofIfMsghdr": "syscall", + "syscall.SizeofIfaMsghdr": "syscall", + "syscall.SizeofIfmaMsghdr": "syscall", + "syscall.SizeofIfmaMsghdr2": "syscall", + "syscall.SizeofInet4Pktinfo": "syscall", + "syscall.SizeofInet6Pktinfo": "syscall", + "syscall.SizeofInotifyEvent": "syscall", + "syscall.SizeofLinger": "syscall", + "syscall.SizeofMsghdr": "syscall", + "syscall.SizeofNlAttr": "syscall", + "syscall.SizeofNlMsgerr": "syscall", + "syscall.SizeofNlMsghdr": "syscall", + "syscall.SizeofRtAttr": "syscall", + "syscall.SizeofRtGenmsg": "syscall", + "syscall.SizeofRtMetrics": "syscall", + "syscall.SizeofRtMsg": "syscall", + "syscall.SizeofRtMsghdr": "syscall", + "syscall.SizeofRtNexthop": "syscall", + "syscall.SizeofSockFilter": "syscall", + "syscall.SizeofSockFprog": "syscall", + "syscall.SizeofSockaddrAny": "syscall", + "syscall.SizeofSockaddrDatalink": "syscall", + "syscall.SizeofSockaddrInet4": "syscall", + "syscall.SizeofSockaddrInet6": "syscall", + "syscall.SizeofSockaddrLinklayer": "syscall", + "syscall.SizeofSockaddrNetlink": "syscall", + "syscall.SizeofSockaddrUnix": "syscall", + "syscall.SizeofTCPInfo": "syscall", + "syscall.SizeofUcred": "syscall", + "syscall.SlicePtrFromStrings": "syscall", + "syscall.SockFilter": "syscall", + "syscall.SockFprog": "syscall", + "syscall.SockaddrDatalink": "syscall", + "syscall.SockaddrGen": "syscall", + "syscall.SockaddrInet4": "syscall", + "syscall.SockaddrInet6": "syscall", + "syscall.SockaddrLinklayer": "syscall", + "syscall.SockaddrNetlink": "syscall", + "syscall.SockaddrUnix": "syscall", + "syscall.Socket": "syscall", + "syscall.SocketControlMessage": "syscall", + "syscall.SocketDisableIPv6": "syscall", + "syscall.Socketpair": "syscall", + "syscall.Splice": "syscall", + "syscall.StartProcess": "syscall", + "syscall.StartupInfo": "syscall", + "syscall.Stat": "syscall", + "syscall.Stat_t": "syscall", + "syscall.Statfs": "syscall", + "syscall.Statfs_t": "syscall", + "syscall.Stderr": "syscall", + "syscall.Stdin": "syscall", + "syscall.Stdout": "syscall", + "syscall.StringBytePtr": "syscall", + "syscall.StringByteSlice": "syscall", + "syscall.StringSlicePtr": "syscall", + "syscall.StringToSid": "syscall", + "syscall.StringToUTF16": "syscall", + "syscall.StringToUTF16Ptr": "syscall", + "syscall.Symlink": "syscall", + "syscall.Sync": "syscall", + "syscall.SyncFileRange": "syscall", + "syscall.SysProcAttr": "syscall", + "syscall.SysProcIDMap": "syscall", + "syscall.Syscall": "syscall", + "syscall.Syscall12": "syscall", + "syscall.Syscall15": "syscall", + "syscall.Syscall6": "syscall", + "syscall.Syscall9": "syscall", + "syscall.Sysctl": "syscall", + "syscall.SysctlUint32": "syscall", + "syscall.Sysctlnode": "syscall", + "syscall.Sysinfo": "syscall", + "syscall.Sysinfo_t": "syscall", + "syscall.Systemtime": "syscall", + "syscall.TCGETS": "syscall", + "syscall.TCIFLUSH": "syscall", + "syscall.TCIOFLUSH": "syscall", + "syscall.TCOFLUSH": "syscall", + "syscall.TCPInfo": "syscall", + "syscall.TCPKeepalive": "syscall", + "syscall.TCP_CA_NAME_MAX": "syscall", + "syscall.TCP_CONGCTL": "syscall", + "syscall.TCP_CONGESTION": "syscall", + "syscall.TCP_CONNECTIONTIMEOUT": "syscall", + "syscall.TCP_CORK": "syscall", + "syscall.TCP_DEFER_ACCEPT": "syscall", + "syscall.TCP_INFO": "syscall", + "syscall.TCP_KEEPALIVE": "syscall", + "syscall.TCP_KEEPCNT": "syscall", + "syscall.TCP_KEEPIDLE": "syscall", + "syscall.TCP_KEEPINIT": "syscall", + "syscall.TCP_KEEPINTVL": "syscall", + "syscall.TCP_LINGER2": "syscall", + "syscall.TCP_MAXBURST": "syscall", + "syscall.TCP_MAXHLEN": "syscall", + "syscall.TCP_MAXOLEN": "syscall", + "syscall.TCP_MAXSEG": "syscall", + "syscall.TCP_MAXWIN": "syscall", + "syscall.TCP_MAX_SACK": "syscall", + "syscall.TCP_MAX_WINSHIFT": "syscall", + "syscall.TCP_MD5SIG": "syscall", + "syscall.TCP_MD5SIG_MAXKEYLEN": "syscall", + "syscall.TCP_MINMSS": "syscall", + "syscall.TCP_MINMSSOVERLOAD": "syscall", + "syscall.TCP_MSS": "syscall", + "syscall.TCP_NODELAY": "syscall", + "syscall.TCP_NOOPT": "syscall", + "syscall.TCP_NOPUSH": "syscall", + "syscall.TCP_NSTATES": "syscall", + "syscall.TCP_QUICKACK": "syscall", + "syscall.TCP_RXT_CONNDROPTIME": "syscall", + "syscall.TCP_RXT_FINDROP": "syscall", + "syscall.TCP_SACK_ENABLE": "syscall", + "syscall.TCP_SYNCNT": "syscall", + "syscall.TCP_VENDOR": "syscall", + "syscall.TCP_WINDOW_CLAMP": "syscall", + "syscall.TCSAFLUSH": "syscall", + "syscall.TCSETS": "syscall", + "syscall.TF_DISCONNECT": "syscall", + "syscall.TF_REUSE_SOCKET": "syscall", + "syscall.TF_USE_DEFAULT_WORKER": "syscall", + "syscall.TF_USE_KERNEL_APC": "syscall", + "syscall.TF_USE_SYSTEM_THREAD": "syscall", + "syscall.TF_WRITE_BEHIND": "syscall", + "syscall.TH32CS_INHERIT": "syscall", + "syscall.TH32CS_SNAPALL": "syscall", + "syscall.TH32CS_SNAPHEAPLIST": "syscall", + "syscall.TH32CS_SNAPMODULE": "syscall", + "syscall.TH32CS_SNAPMODULE32": "syscall", + "syscall.TH32CS_SNAPPROCESS": "syscall", + "syscall.TH32CS_SNAPTHREAD": "syscall", + "syscall.TIME_ZONE_ID_DAYLIGHT": "syscall", + "syscall.TIME_ZONE_ID_STANDARD": "syscall", + "syscall.TIME_ZONE_ID_UNKNOWN": "syscall", + "syscall.TIOCCBRK": "syscall", + "syscall.TIOCCDTR": "syscall", + "syscall.TIOCCONS": "syscall", + "syscall.TIOCDCDTIMESTAMP": "syscall", + "syscall.TIOCDRAIN": "syscall", + "syscall.TIOCDSIMICROCODE": "syscall", + "syscall.TIOCEXCL": "syscall", + "syscall.TIOCEXT": "syscall", + "syscall.TIOCFLAG_CDTRCTS": "syscall", + "syscall.TIOCFLAG_CLOCAL": "syscall", + "syscall.TIOCFLAG_CRTSCTS": "syscall", + "syscall.TIOCFLAG_MDMBUF": "syscall", + "syscall.TIOCFLAG_PPS": "syscall", + "syscall.TIOCFLAG_SOFTCAR": "syscall", + "syscall.TIOCFLUSH": "syscall", + "syscall.TIOCGDEV": "syscall", + "syscall.TIOCGDRAINWAIT": "syscall", + "syscall.TIOCGETA": "syscall", + "syscall.TIOCGETD": "syscall", + "syscall.TIOCGFLAGS": "syscall", + "syscall.TIOCGICOUNT": "syscall", + "syscall.TIOCGLCKTRMIOS": "syscall", + "syscall.TIOCGLINED": "syscall", + "syscall.TIOCGPGRP": "syscall", + "syscall.TIOCGPTN": "syscall", + "syscall.TIOCGQSIZE": "syscall", + "syscall.TIOCGRANTPT": "syscall", + "syscall.TIOCGRS485": "syscall", + "syscall.TIOCGSERIAL": "syscall", + "syscall.TIOCGSID": "syscall", + "syscall.TIOCGSIZE": "syscall", + "syscall.TIOCGSOFTCAR": "syscall", + "syscall.TIOCGTSTAMP": "syscall", + "syscall.TIOCGWINSZ": "syscall", + "syscall.TIOCINQ": "syscall", + "syscall.TIOCIXOFF": "syscall", + "syscall.TIOCIXON": "syscall", + "syscall.TIOCLINUX": "syscall", + "syscall.TIOCMBIC": "syscall", + "syscall.TIOCMBIS": "syscall", + "syscall.TIOCMGDTRWAIT": "syscall", + "syscall.TIOCMGET": "syscall", + "syscall.TIOCMIWAIT": "syscall", + "syscall.TIOCMODG": "syscall", + "syscall.TIOCMODS": "syscall", + "syscall.TIOCMSDTRWAIT": "syscall", + "syscall.TIOCMSET": "syscall", + "syscall.TIOCM_CAR": "syscall", + "syscall.TIOCM_CD": "syscall", + "syscall.TIOCM_CTS": "syscall", + "syscall.TIOCM_DCD": "syscall", + "syscall.TIOCM_DSR": "syscall", + "syscall.TIOCM_DTR": "syscall", + "syscall.TIOCM_LE": "syscall", + "syscall.TIOCM_RI": "syscall", + "syscall.TIOCM_RNG": "syscall", + "syscall.TIOCM_RTS": "syscall", + "syscall.TIOCM_SR": "syscall", + "syscall.TIOCM_ST": "syscall", + "syscall.TIOCNOTTY": "syscall", + "syscall.TIOCNXCL": "syscall", + "syscall.TIOCOUTQ": "syscall", + "syscall.TIOCPKT": "syscall", + "syscall.TIOCPKT_DATA": "syscall", + "syscall.TIOCPKT_DOSTOP": "syscall", + "syscall.TIOCPKT_FLUSHREAD": "syscall", + "syscall.TIOCPKT_FLUSHWRITE": "syscall", + "syscall.TIOCPKT_IOCTL": "syscall", + "syscall.TIOCPKT_NOSTOP": "syscall", + "syscall.TIOCPKT_START": "syscall", + "syscall.TIOCPKT_STOP": "syscall", + "syscall.TIOCPTMASTER": "syscall", + "syscall.TIOCPTMGET": "syscall", + "syscall.TIOCPTSNAME": "syscall", + "syscall.TIOCPTYGNAME": "syscall", + "syscall.TIOCPTYGRANT": "syscall", + "syscall.TIOCPTYUNLK": "syscall", + "syscall.TIOCRCVFRAME": "syscall", + "syscall.TIOCREMOTE": "syscall", + "syscall.TIOCSBRK": "syscall", + "syscall.TIOCSCONS": "syscall", + "syscall.TIOCSCTTY": "syscall", + "syscall.TIOCSDRAINWAIT": "syscall", + "syscall.TIOCSDTR": "syscall", + "syscall.TIOCSERCONFIG": "syscall", + "syscall.TIOCSERGETLSR": "syscall", + "syscall.TIOCSERGETMULTI": "syscall", + "syscall.TIOCSERGSTRUCT": "syscall", + "syscall.TIOCSERGWILD": "syscall", + "syscall.TIOCSERSETMULTI": "syscall", + "syscall.TIOCSERSWILD": "syscall", + "syscall.TIOCSER_TEMT": "syscall", + "syscall.TIOCSETA": "syscall", + "syscall.TIOCSETAF": "syscall", + "syscall.TIOCSETAW": "syscall", + "syscall.TIOCSETD": "syscall", + "syscall.TIOCSFLAGS": "syscall", + "syscall.TIOCSIG": "syscall", + "syscall.TIOCSLCKTRMIOS": "syscall", + "syscall.TIOCSLINED": "syscall", + "syscall.TIOCSPGRP": "syscall", + "syscall.TIOCSPTLCK": "syscall", + "syscall.TIOCSQSIZE": "syscall", + "syscall.TIOCSRS485": "syscall", + "syscall.TIOCSSERIAL": "syscall", + "syscall.TIOCSSIZE": "syscall", + "syscall.TIOCSSOFTCAR": "syscall", + "syscall.TIOCSTART": "syscall", + "syscall.TIOCSTAT": "syscall", + "syscall.TIOCSTI": "syscall", + "syscall.TIOCSTOP": "syscall", + "syscall.TIOCSTSTAMP": "syscall", + "syscall.TIOCSWINSZ": "syscall", + "syscall.TIOCTIMESTAMP": "syscall", + "syscall.TIOCUCNTL": "syscall", + "syscall.TIOCVHANGUP": "syscall", + "syscall.TIOCXMTFRAME": "syscall", + "syscall.TOKEN_ADJUST_DEFAULT": "syscall", + "syscall.TOKEN_ADJUST_GROUPS": "syscall", + "syscall.TOKEN_ADJUST_PRIVILEGES": "syscall", + "syscall.TOKEN_ALL_ACCESS": "syscall", + "syscall.TOKEN_ASSIGN_PRIMARY": "syscall", + "syscall.TOKEN_DUPLICATE": "syscall", + "syscall.TOKEN_EXECUTE": "syscall", + "syscall.TOKEN_IMPERSONATE": "syscall", + "syscall.TOKEN_QUERY": "syscall", + "syscall.TOKEN_QUERY_SOURCE": "syscall", + "syscall.TOKEN_READ": "syscall", + "syscall.TOKEN_WRITE": "syscall", + "syscall.TOSTOP": "syscall", + "syscall.TRUNCATE_EXISTING": "syscall", + "syscall.TUNATTACHFILTER": "syscall", + "syscall.TUNDETACHFILTER": "syscall", + "syscall.TUNGETFEATURES": "syscall", + "syscall.TUNGETIFF": "syscall", + "syscall.TUNGETSNDBUF": "syscall", + "syscall.TUNGETVNETHDRSZ": "syscall", + "syscall.TUNSETDEBUG": "syscall", + "syscall.TUNSETGROUP": "syscall", + "syscall.TUNSETIFF": "syscall", + "syscall.TUNSETLINK": "syscall", + "syscall.TUNSETNOCSUM": "syscall", + "syscall.TUNSETOFFLOAD": "syscall", + "syscall.TUNSETOWNER": "syscall", + "syscall.TUNSETPERSIST": "syscall", + "syscall.TUNSETSNDBUF": "syscall", + "syscall.TUNSETTXFILTER": "syscall", + "syscall.TUNSETVNETHDRSZ": "syscall", + "syscall.Tee": "syscall", + "syscall.TerminateProcess": "syscall", + "syscall.Termios": "syscall", + "syscall.Tgkill": "syscall", + "syscall.Time": "syscall", + "syscall.Time_t": "syscall", + "syscall.Times": "syscall", + "syscall.Timespec": "syscall", + "syscall.TimespecToNsec": "syscall", + "syscall.Timeval": "syscall", + "syscall.Timeval32": "syscall", + "syscall.TimevalToNsec": "syscall", + "syscall.Timex": "syscall", + "syscall.Timezoneinformation": "syscall", + "syscall.Tms": "syscall", + "syscall.Token": "syscall", + "syscall.TokenAccessInformation": "syscall", + "syscall.TokenAuditPolicy": "syscall", + "syscall.TokenDefaultDacl": "syscall", + "syscall.TokenElevation": "syscall", + "syscall.TokenElevationType": "syscall", + "syscall.TokenGroups": "syscall", + "syscall.TokenGroupsAndPrivileges": "syscall", + "syscall.TokenHasRestrictions": "syscall", + "syscall.TokenImpersonationLevel": "syscall", + "syscall.TokenIntegrityLevel": "syscall", + "syscall.TokenLinkedToken": "syscall", + "syscall.TokenLogonSid": "syscall", + "syscall.TokenMandatoryPolicy": "syscall", + "syscall.TokenOrigin": "syscall", + "syscall.TokenOwner": "syscall", + "syscall.TokenPrimaryGroup": "syscall", + "syscall.TokenPrivileges": "syscall", + "syscall.TokenRestrictedSids": "syscall", + "syscall.TokenSandBoxInert": "syscall", + "syscall.TokenSessionId": "syscall", + "syscall.TokenSessionReference": "syscall", + "syscall.TokenSource": "syscall", + "syscall.TokenStatistics": "syscall", + "syscall.TokenType": "syscall", + "syscall.TokenUIAccess": "syscall", + "syscall.TokenUser": "syscall", + "syscall.TokenVirtualizationAllowed": "syscall", + "syscall.TokenVirtualizationEnabled": "syscall", + "syscall.Tokenprimarygroup": "syscall", + "syscall.Tokenuser": "syscall", + "syscall.TranslateAccountName": "syscall", + "syscall.TranslateName": "syscall", + "syscall.TransmitFile": "syscall", + "syscall.TransmitFileBuffers": "syscall", + "syscall.Truncate": "syscall", + "syscall.USAGE_MATCH_TYPE_AND": "syscall", + "syscall.USAGE_MATCH_TYPE_OR": "syscall", + "syscall.UTF16FromString": "syscall", + "syscall.UTF16PtrFromString": "syscall", + "syscall.UTF16ToString": "syscall", + "syscall.Ucred": "syscall", + "syscall.Umask": "syscall", + "syscall.Uname": "syscall", + "syscall.Undelete": "syscall", + "syscall.UnixCredentials": "syscall", + "syscall.UnixRights": "syscall", + "syscall.Unlink": "syscall", + "syscall.Unlinkat": "syscall", + "syscall.UnmapViewOfFile": "syscall", + "syscall.Unmount": "syscall", + "syscall.Unsetenv": "syscall", + "syscall.Unshare": "syscall", + "syscall.UserInfo10": "syscall", + "syscall.Ustat": "syscall", + "syscall.Ustat_t": "syscall", + "syscall.Utimbuf": "syscall", + "syscall.Utime": "syscall", + "syscall.Utimes": "syscall", + "syscall.UtimesNano": "syscall", + "syscall.Utsname": "syscall", + "syscall.VDISCARD": "syscall", + "syscall.VDSUSP": "syscall", + "syscall.VEOF": "syscall", + "syscall.VEOL": "syscall", + "syscall.VEOL2": "syscall", + "syscall.VERASE": "syscall", + "syscall.VERASE2": "syscall", + "syscall.VINTR": "syscall", + "syscall.VKILL": "syscall", + "syscall.VLNEXT": "syscall", + "syscall.VMIN": "syscall", + "syscall.VQUIT": "syscall", + "syscall.VREPRINT": "syscall", + "syscall.VSTART": "syscall", + "syscall.VSTATUS": "syscall", + "syscall.VSTOP": "syscall", + "syscall.VSUSP": "syscall", + "syscall.VSWTC": "syscall", + "syscall.VT0": "syscall", + "syscall.VT1": "syscall", + "syscall.VTDLY": "syscall", + "syscall.VTIME": "syscall", + "syscall.VWERASE": "syscall", + "syscall.VirtualLock": "syscall", + "syscall.VirtualUnlock": "syscall", + "syscall.WAIT_ABANDONED": "syscall", + "syscall.WAIT_FAILED": "syscall", + "syscall.WAIT_OBJECT_0": "syscall", + "syscall.WAIT_TIMEOUT": "syscall", + "syscall.WALL": "syscall", + "syscall.WALLSIG": "syscall", + "syscall.WALTSIG": "syscall", + "syscall.WCLONE": "syscall", + "syscall.WCONTINUED": "syscall", + "syscall.WCOREFLAG": "syscall", + "syscall.WEXITED": "syscall", + "syscall.WLINUXCLONE": "syscall", + "syscall.WNOHANG": "syscall", + "syscall.WNOTHREAD": "syscall", + "syscall.WNOWAIT": "syscall", + "syscall.WNOZOMBIE": "syscall", + "syscall.WOPTSCHECKED": "syscall", + "syscall.WORDSIZE": "syscall", + "syscall.WSABuf": "syscall", + "syscall.WSACleanup": "syscall", + "syscall.WSADESCRIPTION_LEN": "syscall", + "syscall.WSAData": "syscall", + "syscall.WSAEACCES": "syscall", + "syscall.WSAECONNRESET": "syscall", + "syscall.WSAEnumProtocols": "syscall", + "syscall.WSAID_CONNECTEX": "syscall", + "syscall.WSAIoctl": "syscall", + "syscall.WSAPROTOCOL_LEN": "syscall", + "syscall.WSAProtocolChain": "syscall", + "syscall.WSAProtocolInfo": "syscall", + "syscall.WSARecv": "syscall", + "syscall.WSARecvFrom": "syscall", + "syscall.WSASYS_STATUS_LEN": "syscall", + "syscall.WSASend": "syscall", + "syscall.WSASendTo": "syscall", + "syscall.WSASendto": "syscall", + "syscall.WSAStartup": "syscall", + "syscall.WSTOPPED": "syscall", + "syscall.WTRAPPED": "syscall", + "syscall.WUNTRACED": "syscall", + "syscall.Wait4": "syscall", + "syscall.WaitForSingleObject": "syscall", + "syscall.WaitStatus": "syscall", + "syscall.Win32FileAttributeData": "syscall", + "syscall.Win32finddata": "syscall", + "syscall.Write": "syscall", + "syscall.WriteConsole": "syscall", + "syscall.WriteFile": "syscall", + "syscall.X509_ASN_ENCODING": "syscall", + "syscall.XCASE": "syscall", + "syscall.XP1_CONNECTIONLESS": "syscall", + "syscall.XP1_CONNECT_DATA": "syscall", + "syscall.XP1_DISCONNECT_DATA": "syscall", + "syscall.XP1_EXPEDITED_DATA": "syscall", + "syscall.XP1_GRACEFUL_CLOSE": "syscall", + "syscall.XP1_GUARANTEED_DELIVERY": "syscall", + "syscall.XP1_GUARANTEED_ORDER": "syscall", + "syscall.XP1_IFS_HANDLES": "syscall", + "syscall.XP1_MESSAGE_ORIENTED": "syscall", + "syscall.XP1_MULTIPOINT_CONTROL_PLANE": "syscall", + "syscall.XP1_MULTIPOINT_DATA_PLANE": "syscall", + "syscall.XP1_PARTIAL_MESSAGE": "syscall", + "syscall.XP1_PSEUDO_STREAM": "syscall", + "syscall.XP1_QOS_SUPPORTED": "syscall", + "syscall.XP1_SAN_SUPPORT_SDP": "syscall", + "syscall.XP1_SUPPORT_BROADCAST": "syscall", + "syscall.XP1_SUPPORT_MULTIPOINT": "syscall", + "syscall.XP1_UNI_RECV": "syscall", + "syscall.XP1_UNI_SEND": "syscall", + "syslog.Dial": "log/syslog", + "syslog.LOG_ALERT": "log/syslog", + "syslog.LOG_AUTH": "log/syslog", + "syslog.LOG_AUTHPRIV": "log/syslog", + "syslog.LOG_CRIT": "log/syslog", + "syslog.LOG_CRON": "log/syslog", + "syslog.LOG_DAEMON": "log/syslog", + "syslog.LOG_DEBUG": "log/syslog", + "syslog.LOG_EMERG": "log/syslog", + "syslog.LOG_ERR": "log/syslog", + "syslog.LOG_FTP": "log/syslog", + "syslog.LOG_INFO": "log/syslog", + "syslog.LOG_KERN": "log/syslog", + "syslog.LOG_LOCAL0": "log/syslog", + "syslog.LOG_LOCAL1": "log/syslog", + "syslog.LOG_LOCAL2": "log/syslog", + "syslog.LOG_LOCAL3": "log/syslog", + "syslog.LOG_LOCAL4": "log/syslog", + "syslog.LOG_LOCAL5": "log/syslog", + "syslog.LOG_LOCAL6": "log/syslog", + "syslog.LOG_LOCAL7": "log/syslog", + "syslog.LOG_LPR": "log/syslog", + "syslog.LOG_MAIL": "log/syslog", + "syslog.LOG_NEWS": "log/syslog", + "syslog.LOG_NOTICE": "log/syslog", + "syslog.LOG_SYSLOG": "log/syslog", + "syslog.LOG_USER": "log/syslog", + "syslog.LOG_UUCP": "log/syslog", + "syslog.LOG_WARNING": "log/syslog", + "syslog.New": "log/syslog", + "syslog.NewLogger": "log/syslog", + "syslog.Priority": "log/syslog", + "syslog.Writer": "log/syslog", + "tabwriter.AlignRight": "text/tabwriter", + "tabwriter.Debug": "text/tabwriter", + "tabwriter.DiscardEmptyColumns": "text/tabwriter", + "tabwriter.Escape": "text/tabwriter", + "tabwriter.FilterHTML": "text/tabwriter", + "tabwriter.NewWriter": "text/tabwriter", + "tabwriter.StripEscape": "text/tabwriter", + "tabwriter.TabIndent": "text/tabwriter", + "tabwriter.Writer": "text/tabwriter", + "tar.ErrFieldTooLong": "archive/tar", + "tar.ErrHeader": "archive/tar", + "tar.ErrWriteAfterClose": "archive/tar", + "tar.ErrWriteTooLong": "archive/tar", + "tar.FileInfoHeader": "archive/tar", + "tar.Header": "archive/tar", + "tar.NewReader": "archive/tar", + "tar.NewWriter": "archive/tar", + "tar.Reader": "archive/tar", + "tar.TypeBlock": "archive/tar", + "tar.TypeChar": "archive/tar", + "tar.TypeCont": "archive/tar", + "tar.TypeDir": "archive/tar", + "tar.TypeFifo": "archive/tar", + "tar.TypeGNULongLink": "archive/tar", + "tar.TypeGNULongName": "archive/tar", + "tar.TypeGNUSparse": "archive/tar", + "tar.TypeLink": "archive/tar", + "tar.TypeReg": "archive/tar", + "tar.TypeRegA": "archive/tar", + "tar.TypeSymlink": "archive/tar", + "tar.TypeXGlobalHeader": "archive/tar", + "tar.TypeXHeader": "archive/tar", + "tar.Writer": "archive/tar", + "template.CSS": "html/template", + "template.ErrAmbigContext": "html/template", + "template.ErrBadHTML": "html/template", + "template.ErrBranchEnd": "html/template", + "template.ErrEndContext": "html/template", + "template.ErrNoSuchTemplate": "html/template", + "template.ErrOutputContext": "html/template", + "template.ErrPartialCharset": "html/template", + "template.ErrPartialEscape": "html/template", + "template.ErrRangeLoopReentry": "html/template", + "template.ErrSlashAmbig": "html/template", + "template.Error": "html/template", + "template.ErrorCode": "html/template", + "template.ExecError": "text/template", + // "template.FuncMap" is ambiguous + "template.HTML": "html/template", + "template.HTMLAttr": "html/template", + // "template.HTMLEscape" is ambiguous + // "template.HTMLEscapeString" is ambiguous + // "template.HTMLEscaper" is ambiguous + // "template.IsTrue" is ambiguous + "template.JS": "html/template", + // "template.JSEscape" is ambiguous + // "template.JSEscapeString" is ambiguous + // "template.JSEscaper" is ambiguous + "template.JSStr": "html/template", + // "template.Must" is ambiguous + // "template.New" is ambiguous + "template.OK": "html/template", + // "template.ParseFiles" is ambiguous + // "template.ParseGlob" is ambiguous + // "template.Template" is ambiguous + "template.URL": "html/template", + // "template.URLQueryEscaper" is ambiguous + "testing.AllocsPerRun": "testing", + "testing.B": "testing", + "testing.Benchmark": "testing", + "testing.BenchmarkResult": "testing", + "testing.Cover": "testing", + "testing.CoverBlock": "testing", + "testing.Coverage": "testing", + "testing.InternalBenchmark": "testing", + "testing.InternalExample": "testing", + "testing.InternalTest": "testing", + "testing.M": "testing", + "testing.Main": "testing", + "testing.MainStart": "testing", + "testing.PB": "testing", + "testing.RegisterCover": "testing", + "testing.RunBenchmarks": "testing", + "testing.RunExamples": "testing", + "testing.RunTests": "testing", + "testing.Short": "testing", + "testing.T": "testing", + "testing.Verbose": "testing", + "textproto.CanonicalMIMEHeaderKey": "net/textproto", + "textproto.Conn": "net/textproto", + "textproto.Dial": "net/textproto", + "textproto.Error": "net/textproto", + "textproto.MIMEHeader": "net/textproto", + "textproto.NewConn": "net/textproto", + "textproto.NewReader": "net/textproto", + "textproto.NewWriter": "net/textproto", + "textproto.Pipeline": "net/textproto", + "textproto.ProtocolError": "net/textproto", + "textproto.Reader": "net/textproto", + "textproto.TrimBytes": "net/textproto", + "textproto.TrimString": "net/textproto", + "textproto.Writer": "net/textproto", + "time.ANSIC": "time", + "time.After": "time", + "time.AfterFunc": "time", + "time.April": "time", + "time.August": "time", + "time.Date": "time", + "time.December": "time", + "time.Duration": "time", + "time.February": "time", + "time.FixedZone": "time", + "time.Friday": "time", + "time.Hour": "time", + "time.January": "time", + "time.July": "time", + "time.June": "time", + "time.Kitchen": "time", + "time.LoadLocation": "time", + "time.Local": "time", + "time.Location": "time", + "time.March": "time", + "time.May": "time", + "time.Microsecond": "time", + "time.Millisecond": "time", + "time.Minute": "time", + "time.Monday": "time", + "time.Month": "time", + "time.Nanosecond": "time", + "time.NewTicker": "time", + "time.NewTimer": "time", + "time.November": "time", + "time.Now": "time", + "time.October": "time", + "time.Parse": "time", + "time.ParseDuration": "time", + "time.ParseError": "time", + "time.ParseInLocation": "time", + "time.RFC1123": "time", + "time.RFC1123Z": "time", + "time.RFC3339": "time", + "time.RFC3339Nano": "time", + "time.RFC822": "time", + "time.RFC822Z": "time", + "time.RFC850": "time", + "time.RubyDate": "time", + "time.Saturday": "time", + "time.Second": "time", + "time.September": "time", + "time.Since": "time", + "time.Sleep": "time", + "time.Stamp": "time", + "time.StampMicro": "time", + "time.StampMilli": "time", + "time.StampNano": "time", + "time.Sunday": "time", + "time.Thursday": "time", + "time.Tick": "time", + "time.Ticker": "time", + "time.Time": "time", + "time.Timer": "time", + "time.Tuesday": "time", + "time.UTC": "time", + "time.Unix": "time", + "time.UnixDate": "time", + "time.Wednesday": "time", + "time.Weekday": "time", + "tls.Certificate": "crypto/tls", + "tls.Client": "crypto/tls", + "tls.ClientAuthType": "crypto/tls", + "tls.ClientHelloInfo": "crypto/tls", + "tls.ClientSessionCache": "crypto/tls", + "tls.ClientSessionState": "crypto/tls", + "tls.Config": "crypto/tls", + "tls.Conn": "crypto/tls", + "tls.ConnectionState": "crypto/tls", + "tls.CurveID": "crypto/tls", + "tls.CurveP256": "crypto/tls", + "tls.CurveP384": "crypto/tls", + "tls.CurveP521": "crypto/tls", + "tls.Dial": "crypto/tls", + "tls.DialWithDialer": "crypto/tls", + "tls.Listen": "crypto/tls", + "tls.LoadX509KeyPair": "crypto/tls", + "tls.NewLRUClientSessionCache": "crypto/tls", + "tls.NewListener": "crypto/tls", + "tls.NoClientCert": "crypto/tls", + "tls.RecordHeaderError": "crypto/tls", + "tls.RenegotiateFreelyAsClient": "crypto/tls", + "tls.RenegotiateNever": "crypto/tls", + "tls.RenegotiateOnceAsClient": "crypto/tls", + "tls.RenegotiationSupport": "crypto/tls", + "tls.RequestClientCert": "crypto/tls", + "tls.RequireAndVerifyClientCert": "crypto/tls", + "tls.RequireAnyClientCert": "crypto/tls", + "tls.Server": "crypto/tls", + "tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA": "crypto/tls", + "tls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256": "crypto/tls", + "tls.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA": "crypto/tls", + "tls.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384": "crypto/tls", + "tls.TLS_ECDHE_ECDSA_WITH_RC4_128_SHA": "crypto/tls", + "tls.TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA": "crypto/tls", + "tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA": "crypto/tls", + "tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256": "crypto/tls", + "tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA": "crypto/tls", + "tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384": "crypto/tls", + "tls.TLS_ECDHE_RSA_WITH_RC4_128_SHA": "crypto/tls", + "tls.TLS_FALLBACK_SCSV": "crypto/tls", + "tls.TLS_RSA_WITH_3DES_EDE_CBC_SHA": "crypto/tls", + "tls.TLS_RSA_WITH_AES_128_CBC_SHA": "crypto/tls", + "tls.TLS_RSA_WITH_AES_128_GCM_SHA256": "crypto/tls", + "tls.TLS_RSA_WITH_AES_256_CBC_SHA": "crypto/tls", + "tls.TLS_RSA_WITH_AES_256_GCM_SHA384": "crypto/tls", + "tls.TLS_RSA_WITH_RC4_128_SHA": "crypto/tls", + "tls.VerifyClientCertIfGiven": "crypto/tls", + "tls.VersionSSL30": "crypto/tls", + "tls.VersionTLS10": "crypto/tls", + "tls.VersionTLS11": "crypto/tls", + "tls.VersionTLS12": "crypto/tls", + "tls.X509KeyPair": "crypto/tls", + "token.ADD": "go/token", + "token.ADD_ASSIGN": "go/token", + "token.AND": "go/token", + "token.AND_ASSIGN": "go/token", + "token.AND_NOT": "go/token", + "token.AND_NOT_ASSIGN": "go/token", + "token.ARROW": "go/token", + "token.ASSIGN": "go/token", + "token.BREAK": "go/token", + "token.CASE": "go/token", + "token.CHAN": "go/token", + "token.CHAR": "go/token", + "token.COLON": "go/token", + "token.COMMA": "go/token", + "token.COMMENT": "go/token", + "token.CONST": "go/token", + "token.CONTINUE": "go/token", + "token.DEC": "go/token", + "token.DEFAULT": "go/token", + "token.DEFER": "go/token", + "token.DEFINE": "go/token", + "token.ELLIPSIS": "go/token", + "token.ELSE": "go/token", + "token.EOF": "go/token", + "token.EQL": "go/token", + "token.FALLTHROUGH": "go/token", + "token.FLOAT": "go/token", + "token.FOR": "go/token", + "token.FUNC": "go/token", + "token.File": "go/token", + "token.FileSet": "go/token", + "token.GEQ": "go/token", + "token.GO": "go/token", + "token.GOTO": "go/token", + "token.GTR": "go/token", + "token.HighestPrec": "go/token", + "token.IDENT": "go/token", + "token.IF": "go/token", + "token.ILLEGAL": "go/token", + "token.IMAG": "go/token", + "token.IMPORT": "go/token", + "token.INC": "go/token", + "token.INT": "go/token", + "token.INTERFACE": "go/token", + "token.LAND": "go/token", + "token.LBRACE": "go/token", + "token.LBRACK": "go/token", + "token.LEQ": "go/token", + "token.LOR": "go/token", + "token.LPAREN": "go/token", + "token.LSS": "go/token", + "token.Lookup": "go/token", + "token.LowestPrec": "go/token", + "token.MAP": "go/token", + "token.MUL": "go/token", + "token.MUL_ASSIGN": "go/token", + "token.NEQ": "go/token", + "token.NOT": "go/token", + "token.NewFileSet": "go/token", + "token.NoPos": "go/token", + "token.OR": "go/token", + "token.OR_ASSIGN": "go/token", + "token.PACKAGE": "go/token", + "token.PERIOD": "go/token", + "token.Pos": "go/token", + "token.Position": "go/token", + "token.QUO": "go/token", + "token.QUO_ASSIGN": "go/token", + "token.RANGE": "go/token", + "token.RBRACE": "go/token", + "token.RBRACK": "go/token", + "token.REM": "go/token", + "token.REM_ASSIGN": "go/token", + "token.RETURN": "go/token", + "token.RPAREN": "go/token", + "token.SELECT": "go/token", + "token.SEMICOLON": "go/token", + "token.SHL": "go/token", + "token.SHL_ASSIGN": "go/token", + "token.SHR": "go/token", + "token.SHR_ASSIGN": "go/token", + "token.STRING": "go/token", + "token.STRUCT": "go/token", + "token.SUB": "go/token", + "token.SUB_ASSIGN": "go/token", + "token.SWITCH": "go/token", + "token.TYPE": "go/token", + "token.Token": "go/token", + "token.UnaryPrec": "go/token", + "token.VAR": "go/token", + "token.XOR": "go/token", + "token.XOR_ASSIGN": "go/token", + "trace.Start": "runtime/trace", + "trace.Stop": "runtime/trace", + "types.Array": "go/types", + "types.AssertableTo": "go/types", + "types.AssignableTo": "go/types", + "types.Basic": "go/types", + "types.BasicInfo": "go/types", + "types.BasicKind": "go/types", + "types.Bool": "go/types", + "types.Builtin": "go/types", + "types.Byte": "go/types", + "types.Chan": "go/types", + "types.ChanDir": "go/types", + "types.Checker": "go/types", + "types.Comparable": "go/types", + "types.Complex128": "go/types", + "types.Complex64": "go/types", + "types.Config": "go/types", + "types.Const": "go/types", + "types.ConvertibleTo": "go/types", + "types.DefPredeclaredTestFuncs": "go/types", + "types.Error": "go/types", + "types.Eval": "go/types", + "types.ExprString": "go/types", + "types.FieldVal": "go/types", + "types.Float32": "go/types", + "types.Float64": "go/types", + "types.Func": "go/types", + "types.Id": "go/types", + "types.Identical": "go/types", + "types.Implements": "go/types", + "types.ImportMode": "go/types", + "types.Importer": "go/types", + "types.ImporterFrom": "go/types", + "types.Info": "go/types", + "types.Initializer": "go/types", + "types.Int": "go/types", + "types.Int16": "go/types", + "types.Int32": "go/types", + "types.Int64": "go/types", + "types.Int8": "go/types", + "types.Interface": "go/types", + "types.Invalid": "go/types", + "types.IsBoolean": "go/types", + "types.IsComplex": "go/types", + "types.IsConstType": "go/types", + "types.IsFloat": "go/types", + "types.IsInteger": "go/types", + "types.IsInterface": "go/types", + "types.IsNumeric": "go/types", + "types.IsOrdered": "go/types", + "types.IsString": "go/types", + "types.IsUnsigned": "go/types", + "types.IsUntyped": "go/types", + "types.Label": "go/types", + "types.LookupFieldOrMethod": "go/types", + "types.Map": "go/types", + "types.MethodExpr": "go/types", + "types.MethodSet": "go/types", + "types.MethodVal": "go/types", + "types.MissingMethod": "go/types", + "types.Named": "go/types", + "types.NewArray": "go/types", + "types.NewChan": "go/types", + "types.NewChecker": "go/types", + "types.NewConst": "go/types", + "types.NewField": "go/types", + "types.NewFunc": "go/types", + "types.NewInterface": "go/types", + "types.NewLabel": "go/types", + "types.NewMap": "go/types", + "types.NewMethodSet": "go/types", + "types.NewNamed": "go/types", + "types.NewPackage": "go/types", + "types.NewParam": "go/types", + "types.NewPkgName": "go/types", + "types.NewPointer": "go/types", + "types.NewScope": "go/types", + "types.NewSignature": "go/types", + "types.NewSlice": "go/types", + "types.NewStruct": "go/types", + "types.NewTuple": "go/types", + "types.NewTypeName": "go/types", + "types.NewVar": "go/types", + "types.Nil": "go/types", + "types.ObjectString": "go/types", + "types.Package": "go/types", + "types.PkgName": "go/types", + "types.Pointer": "go/types", + "types.Qualifier": "go/types", + "types.RecvOnly": "go/types", + "types.RelativeTo": "go/types", + "types.Rune": "go/types", + "types.Scope": "go/types", + "types.Selection": "go/types", + "types.SelectionKind": "go/types", + "types.SelectionString": "go/types", + "types.SendOnly": "go/types", + "types.SendRecv": "go/types", + "types.Signature": "go/types", + "types.Sizes": "go/types", + "types.Slice": "go/types", + "types.StdSizes": "go/types", + "types.String": "go/types", + "types.Struct": "go/types", + "types.Tuple": "go/types", + "types.Typ": "go/types", + "types.Type": "go/types", + "types.TypeAndValue": "go/types", + "types.TypeName": "go/types", + "types.TypeString": "go/types", + "types.Uint": "go/types", + "types.Uint16": "go/types", + "types.Uint32": "go/types", + "types.Uint64": "go/types", + "types.Uint8": "go/types", + "types.Uintptr": "go/types", + "types.Universe": "go/types", + "types.Unsafe": "go/types", + "types.UnsafePointer": "go/types", + "types.UntypedBool": "go/types", + "types.UntypedComplex": "go/types", + "types.UntypedFloat": "go/types", + "types.UntypedInt": "go/types", + "types.UntypedNil": "go/types", + "types.UntypedRune": "go/types", + "types.UntypedString": "go/types", + "types.Var": "go/types", + "types.WriteExpr": "go/types", + "types.WriteSignature": "go/types", + "types.WriteType": "go/types", + "unicode.ASCII_Hex_Digit": "unicode", + "unicode.Adlam": "unicode", + "unicode.Ahom": "unicode", + "unicode.Anatolian_Hieroglyphs": "unicode", + "unicode.Arabic": "unicode", + "unicode.Armenian": "unicode", + "unicode.Avestan": "unicode", + "unicode.AzeriCase": "unicode", + "unicode.Balinese": "unicode", + "unicode.Bamum": "unicode", + "unicode.Bassa_Vah": "unicode", + "unicode.Batak": "unicode", + "unicode.Bengali": "unicode", + "unicode.Bhaiksuki": "unicode", + "unicode.Bidi_Control": "unicode", + "unicode.Bopomofo": "unicode", + "unicode.Brahmi": "unicode", + "unicode.Braille": "unicode", + "unicode.Buginese": "unicode", + "unicode.Buhid": "unicode", + "unicode.C": "unicode", + "unicode.Canadian_Aboriginal": "unicode", + "unicode.Carian": "unicode", + "unicode.CaseRange": "unicode", + "unicode.CaseRanges": "unicode", + "unicode.Categories": "unicode", + "unicode.Caucasian_Albanian": "unicode", + "unicode.Cc": "unicode", + "unicode.Cf": "unicode", + "unicode.Chakma": "unicode", + "unicode.Cham": "unicode", + "unicode.Cherokee": "unicode", + "unicode.Co": "unicode", + "unicode.Common": "unicode", + "unicode.Coptic": "unicode", + "unicode.Cs": "unicode", + "unicode.Cuneiform": "unicode", + "unicode.Cypriot": "unicode", + "unicode.Cyrillic": "unicode", + "unicode.Dash": "unicode", + "unicode.Deprecated": "unicode", + "unicode.Deseret": "unicode", + "unicode.Devanagari": "unicode", + "unicode.Diacritic": "unicode", + "unicode.Digit": "unicode", + "unicode.Duployan": "unicode", + "unicode.Egyptian_Hieroglyphs": "unicode", + "unicode.Elbasan": "unicode", + "unicode.Ethiopic": "unicode", + "unicode.Extender": "unicode", + "unicode.FoldCategory": "unicode", + "unicode.FoldScript": "unicode", + "unicode.Georgian": "unicode", + "unicode.Glagolitic": "unicode", + "unicode.Gothic": "unicode", + "unicode.Grantha": "unicode", + "unicode.GraphicRanges": "unicode", + "unicode.Greek": "unicode", + "unicode.Gujarati": "unicode", + "unicode.Gurmukhi": "unicode", + "unicode.Han": "unicode", + "unicode.Hangul": "unicode", + "unicode.Hanunoo": "unicode", + "unicode.Hatran": "unicode", + "unicode.Hebrew": "unicode", + "unicode.Hex_Digit": "unicode", + "unicode.Hiragana": "unicode", + "unicode.Hyphen": "unicode", + "unicode.IDS_Binary_Operator": "unicode", + "unicode.IDS_Trinary_Operator": "unicode", + "unicode.Ideographic": "unicode", + "unicode.Imperial_Aramaic": "unicode", + "unicode.In": "unicode", + "unicode.Inherited": "unicode", + "unicode.Inscriptional_Pahlavi": "unicode", + "unicode.Inscriptional_Parthian": "unicode", + "unicode.Is": "unicode", + "unicode.IsControl": "unicode", + "unicode.IsDigit": "unicode", + "unicode.IsGraphic": "unicode", + "unicode.IsLetter": "unicode", + "unicode.IsLower": "unicode", + "unicode.IsMark": "unicode", + "unicode.IsNumber": "unicode", + "unicode.IsOneOf": "unicode", + "unicode.IsPrint": "unicode", + "unicode.IsPunct": "unicode", + "unicode.IsSpace": "unicode", + "unicode.IsSymbol": "unicode", + "unicode.IsTitle": "unicode", + "unicode.IsUpper": "unicode", + "unicode.Javanese": "unicode", + "unicode.Join_Control": "unicode", + "unicode.Kaithi": "unicode", + "unicode.Kannada": "unicode", + "unicode.Katakana": "unicode", + "unicode.Kayah_Li": "unicode", + "unicode.Kharoshthi": "unicode", + "unicode.Khmer": "unicode", + "unicode.Khojki": "unicode", + "unicode.Khudawadi": "unicode", + "unicode.L": "unicode", + "unicode.Lao": "unicode", + "unicode.Latin": "unicode", + "unicode.Lepcha": "unicode", + "unicode.Letter": "unicode", + "unicode.Limbu": "unicode", + "unicode.Linear_A": "unicode", + "unicode.Linear_B": "unicode", + "unicode.Lisu": "unicode", + "unicode.Ll": "unicode", + "unicode.Lm": "unicode", + "unicode.Lo": "unicode", + "unicode.Logical_Order_Exception": "unicode", + "unicode.Lower": "unicode", + "unicode.LowerCase": "unicode", + "unicode.Lt": "unicode", + "unicode.Lu": "unicode", + "unicode.Lycian": "unicode", + "unicode.Lydian": "unicode", + "unicode.M": "unicode", + "unicode.Mahajani": "unicode", + "unicode.Malayalam": "unicode", + "unicode.Mandaic": "unicode", + "unicode.Manichaean": "unicode", + "unicode.Marchen": "unicode", + "unicode.Mark": "unicode", + "unicode.MaxASCII": "unicode", + "unicode.MaxCase": "unicode", + "unicode.MaxLatin1": "unicode", + "unicode.MaxRune": "unicode", + "unicode.Mc": "unicode", + "unicode.Me": "unicode", + "unicode.Meetei_Mayek": "unicode", + "unicode.Mende_Kikakui": "unicode", + "unicode.Meroitic_Cursive": "unicode", + "unicode.Meroitic_Hieroglyphs": "unicode", + "unicode.Miao": "unicode", + "unicode.Mn": "unicode", + "unicode.Modi": "unicode", + "unicode.Mongolian": "unicode", + "unicode.Mro": "unicode", + "unicode.Multani": "unicode", + "unicode.Myanmar": "unicode", + "unicode.N": "unicode", + "unicode.Nabataean": "unicode", + "unicode.Nd": "unicode", + "unicode.New_Tai_Lue": "unicode", + "unicode.Newa": "unicode", + "unicode.Nko": "unicode", + "unicode.Nl": "unicode", + "unicode.No": "unicode", + "unicode.Noncharacter_Code_Point": "unicode", + "unicode.Number": "unicode", + "unicode.Ogham": "unicode", + "unicode.Ol_Chiki": "unicode", + "unicode.Old_Hungarian": "unicode", + "unicode.Old_Italic": "unicode", + "unicode.Old_North_Arabian": "unicode", + "unicode.Old_Permic": "unicode", + "unicode.Old_Persian": "unicode", + "unicode.Old_South_Arabian": "unicode", + "unicode.Old_Turkic": "unicode", + "unicode.Oriya": "unicode", + "unicode.Osage": "unicode", + "unicode.Osmanya": "unicode", + "unicode.Other": "unicode", + "unicode.Other_Alphabetic": "unicode", + "unicode.Other_Default_Ignorable_Code_Point": "unicode", + "unicode.Other_Grapheme_Extend": "unicode", + "unicode.Other_ID_Continue": "unicode", + "unicode.Other_ID_Start": "unicode", + "unicode.Other_Lowercase": "unicode", + "unicode.Other_Math": "unicode", + "unicode.Other_Uppercase": "unicode", + "unicode.P": "unicode", + "unicode.Pahawh_Hmong": "unicode", + "unicode.Palmyrene": "unicode", + "unicode.Pattern_Syntax": "unicode", + "unicode.Pattern_White_Space": "unicode", + "unicode.Pau_Cin_Hau": "unicode", + "unicode.Pc": "unicode", + "unicode.Pd": "unicode", + "unicode.Pe": "unicode", + "unicode.Pf": "unicode", + "unicode.Phags_Pa": "unicode", + "unicode.Phoenician": "unicode", + "unicode.Pi": "unicode", + "unicode.Po": "unicode", + "unicode.Prepended_Concatenation_Mark": "unicode", + "unicode.PrintRanges": "unicode", + "unicode.Properties": "unicode", + "unicode.Ps": "unicode", + "unicode.Psalter_Pahlavi": "unicode", + "unicode.Punct": "unicode", + "unicode.Quotation_Mark": "unicode", + "unicode.Radical": "unicode", + "unicode.Range16": "unicode", + "unicode.Range32": "unicode", + "unicode.RangeTable": "unicode", + "unicode.Rejang": "unicode", + "unicode.ReplacementChar": "unicode", + "unicode.Runic": "unicode", + "unicode.S": "unicode", + "unicode.STerm": "unicode", + "unicode.Samaritan": "unicode", + "unicode.Saurashtra": "unicode", + "unicode.Sc": "unicode", + "unicode.Scripts": "unicode", + "unicode.Sentence_Terminal": "unicode", + "unicode.Sharada": "unicode", + "unicode.Shavian": "unicode", + "unicode.Siddham": "unicode", + "unicode.SignWriting": "unicode", + "unicode.SimpleFold": "unicode", + "unicode.Sinhala": "unicode", + "unicode.Sk": "unicode", + "unicode.Sm": "unicode", + "unicode.So": "unicode", + "unicode.Soft_Dotted": "unicode", + "unicode.Sora_Sompeng": "unicode", + "unicode.Space": "unicode", + "unicode.SpecialCase": "unicode", + "unicode.Sundanese": "unicode", + "unicode.Syloti_Nagri": "unicode", + "unicode.Symbol": "unicode", + "unicode.Syriac": "unicode", + "unicode.Tagalog": "unicode", + "unicode.Tagbanwa": "unicode", + "unicode.Tai_Le": "unicode", + "unicode.Tai_Tham": "unicode", + "unicode.Tai_Viet": "unicode", + "unicode.Takri": "unicode", + "unicode.Tamil": "unicode", + "unicode.Tangut": "unicode", + "unicode.Telugu": "unicode", + "unicode.Terminal_Punctuation": "unicode", + "unicode.Thaana": "unicode", + "unicode.Thai": "unicode", + "unicode.Tibetan": "unicode", + "unicode.Tifinagh": "unicode", + "unicode.Tirhuta": "unicode", + "unicode.Title": "unicode", + "unicode.TitleCase": "unicode", + "unicode.To": "unicode", + "unicode.ToLower": "unicode", + "unicode.ToTitle": "unicode", + "unicode.ToUpper": "unicode", + "unicode.TurkishCase": "unicode", + "unicode.Ugaritic": "unicode", + "unicode.Unified_Ideograph": "unicode", + "unicode.Upper": "unicode", + "unicode.UpperCase": "unicode", + "unicode.UpperLower": "unicode", + "unicode.Vai": "unicode", + "unicode.Variation_Selector": "unicode", + "unicode.Version": "unicode", + "unicode.Warang_Citi": "unicode", + "unicode.White_Space": "unicode", + "unicode.Yi": "unicode", + "unicode.Z": "unicode", + "unicode.Zl": "unicode", + "unicode.Zp": "unicode", + "unicode.Zs": "unicode", + "url.Error": "net/url", + "url.EscapeError": "net/url", + "url.InvalidHostError": "net/url", + "url.Parse": "net/url", + "url.ParseQuery": "net/url", + "url.ParseRequestURI": "net/url", + "url.QueryEscape": "net/url", + "url.QueryUnescape": "net/url", + "url.URL": "net/url", + "url.User": "net/url", + "url.UserPassword": "net/url", + "url.Userinfo": "net/url", + "url.Values": "net/url", + "user.Current": "os/user", + "user.Group": "os/user", + "user.Lookup": "os/user", + "user.LookupGroup": "os/user", + "user.LookupGroupId": "os/user", + "user.LookupId": "os/user", + "user.UnknownGroupError": "os/user", + "user.UnknownGroupIdError": "os/user", + "user.UnknownUserError": "os/user", + "user.UnknownUserIdError": "os/user", + "user.User": "os/user", + "utf16.Decode": "unicode/utf16", + "utf16.DecodeRune": "unicode/utf16", + "utf16.Encode": "unicode/utf16", + "utf16.EncodeRune": "unicode/utf16", + "utf16.IsSurrogate": "unicode/utf16", + "utf8.DecodeLastRune": "unicode/utf8", + "utf8.DecodeLastRuneInString": "unicode/utf8", + "utf8.DecodeRune": "unicode/utf8", + "utf8.DecodeRuneInString": "unicode/utf8", + "utf8.EncodeRune": "unicode/utf8", + "utf8.FullRune": "unicode/utf8", + "utf8.FullRuneInString": "unicode/utf8", + "utf8.MaxRune": "unicode/utf8", + "utf8.RuneCount": "unicode/utf8", + "utf8.RuneCountInString": "unicode/utf8", + "utf8.RuneError": "unicode/utf8", + "utf8.RuneLen": "unicode/utf8", + "utf8.RuneSelf": "unicode/utf8", + "utf8.RuneStart": "unicode/utf8", + "utf8.UTFMax": "unicode/utf8", + "utf8.Valid": "unicode/utf8", + "utf8.ValidRune": "unicode/utf8", + "utf8.ValidString": "unicode/utf8", + "x509.CANotAuthorizedForThisName": "crypto/x509", + "x509.CertPool": "crypto/x509", + "x509.Certificate": "crypto/x509", + "x509.CertificateInvalidError": "crypto/x509", + "x509.CertificateRequest": "crypto/x509", + "x509.ConstraintViolationError": "crypto/x509", + "x509.CreateCertificate": "crypto/x509", + "x509.CreateCertificateRequest": "crypto/x509", + "x509.DSA": "crypto/x509", + "x509.DSAWithSHA1": "crypto/x509", + "x509.DSAWithSHA256": "crypto/x509", + "x509.DecryptPEMBlock": "crypto/x509", + "x509.ECDSA": "crypto/x509", + "x509.ECDSAWithSHA1": "crypto/x509", + "x509.ECDSAWithSHA256": "crypto/x509", + "x509.ECDSAWithSHA384": "crypto/x509", + "x509.ECDSAWithSHA512": "crypto/x509", + "x509.EncryptPEMBlock": "crypto/x509", + "x509.ErrUnsupportedAlgorithm": "crypto/x509", + "x509.Expired": "crypto/x509", + "x509.ExtKeyUsage": "crypto/x509", + "x509.ExtKeyUsageAny": "crypto/x509", + "x509.ExtKeyUsageClientAuth": "crypto/x509", + "x509.ExtKeyUsageCodeSigning": "crypto/x509", + "x509.ExtKeyUsageEmailProtection": "crypto/x509", + "x509.ExtKeyUsageIPSECEndSystem": "crypto/x509", + "x509.ExtKeyUsageIPSECTunnel": "crypto/x509", + "x509.ExtKeyUsageIPSECUser": "crypto/x509", + "x509.ExtKeyUsageMicrosoftServerGatedCrypto": "crypto/x509", + "x509.ExtKeyUsageNetscapeServerGatedCrypto": "crypto/x509", + "x509.ExtKeyUsageOCSPSigning": "crypto/x509", + "x509.ExtKeyUsageServerAuth": "crypto/x509", + "x509.ExtKeyUsageTimeStamping": "crypto/x509", + "x509.HostnameError": "crypto/x509", + "x509.IncompatibleUsage": "crypto/x509", + "x509.IncorrectPasswordError": "crypto/x509", + "x509.InsecureAlgorithmError": "crypto/x509", + "x509.InvalidReason": "crypto/x509", + "x509.IsEncryptedPEMBlock": "crypto/x509", + "x509.KeyUsage": "crypto/x509", + "x509.KeyUsageCRLSign": "crypto/x509", + "x509.KeyUsageCertSign": "crypto/x509", + "x509.KeyUsageContentCommitment": "crypto/x509", + "x509.KeyUsageDataEncipherment": "crypto/x509", + "x509.KeyUsageDecipherOnly": "crypto/x509", + "x509.KeyUsageDigitalSignature": "crypto/x509", + "x509.KeyUsageEncipherOnly": "crypto/x509", + "x509.KeyUsageKeyAgreement": "crypto/x509", + "x509.KeyUsageKeyEncipherment": "crypto/x509", + "x509.MD2WithRSA": "crypto/x509", + "x509.MD5WithRSA": "crypto/x509", + "x509.MarshalECPrivateKey": "crypto/x509", + "x509.MarshalPKCS1PrivateKey": "crypto/x509", + "x509.MarshalPKIXPublicKey": "crypto/x509", + "x509.NewCertPool": "crypto/x509", + "x509.NotAuthorizedToSign": "crypto/x509", + "x509.PEMCipher": "crypto/x509", + "x509.PEMCipher3DES": "crypto/x509", + "x509.PEMCipherAES128": "crypto/x509", + "x509.PEMCipherAES192": "crypto/x509", + "x509.PEMCipherAES256": "crypto/x509", + "x509.PEMCipherDES": "crypto/x509", + "x509.ParseCRL": "crypto/x509", + "x509.ParseCertificate": "crypto/x509", + "x509.ParseCertificateRequest": "crypto/x509", + "x509.ParseCertificates": "crypto/x509", + "x509.ParseDERCRL": "crypto/x509", + "x509.ParseECPrivateKey": "crypto/x509", + "x509.ParsePKCS1PrivateKey": "crypto/x509", + "x509.ParsePKCS8PrivateKey": "crypto/x509", + "x509.ParsePKIXPublicKey": "crypto/x509", + "x509.PublicKeyAlgorithm": "crypto/x509", + "x509.RSA": "crypto/x509", + "x509.SHA1WithRSA": "crypto/x509", + "x509.SHA256WithRSA": "crypto/x509", + "x509.SHA384WithRSA": "crypto/x509", + "x509.SHA512WithRSA": "crypto/x509", + "x509.SignatureAlgorithm": "crypto/x509", + "x509.SystemCertPool": "crypto/x509", + "x509.SystemRootsError": "crypto/x509", + "x509.TooManyIntermediates": "crypto/x509", + "x509.UnhandledCriticalExtension": "crypto/x509", + "x509.UnknownAuthorityError": "crypto/x509", + "x509.UnknownPublicKeyAlgorithm": "crypto/x509", + "x509.UnknownSignatureAlgorithm": "crypto/x509", + "x509.VerifyOptions": "crypto/x509", + "xml.Attr": "encoding/xml", + "xml.CharData": "encoding/xml", + "xml.Comment": "encoding/xml", + "xml.CopyToken": "encoding/xml", + "xml.Decoder": "encoding/xml", + "xml.Directive": "encoding/xml", + "xml.Encoder": "encoding/xml", + "xml.EndElement": "encoding/xml", + "xml.Escape": "encoding/xml", + "xml.EscapeText": "encoding/xml", + "xml.HTMLAutoClose": "encoding/xml", + "xml.HTMLEntity": "encoding/xml", + "xml.Header": "encoding/xml", + "xml.Marshal": "encoding/xml", + "xml.MarshalIndent": "encoding/xml", + "xml.Marshaler": "encoding/xml", + "xml.MarshalerAttr": "encoding/xml", + "xml.Name": "encoding/xml", + "xml.NewDecoder": "encoding/xml", + "xml.NewEncoder": "encoding/xml", + "xml.ProcInst": "encoding/xml", + "xml.StartElement": "encoding/xml", + "xml.SyntaxError": "encoding/xml", + "xml.TagPathError": "encoding/xml", + "xml.Token": "encoding/xml", + "xml.Unmarshal": "encoding/xml", + "xml.UnmarshalError": "encoding/xml", + "xml.Unmarshaler": "encoding/xml", + "xml.UnmarshalerAttr": "encoding/xml", + "xml.UnsupportedTypeError": "encoding/xml", + "zip.Compressor": "archive/zip", + "zip.Decompressor": "archive/zip", + "zip.Deflate": "archive/zip", + "zip.ErrAlgorithm": "archive/zip", + "zip.ErrChecksum": "archive/zip", + "zip.ErrFormat": "archive/zip", + "zip.File": "archive/zip", + "zip.FileHeader": "archive/zip", + "zip.FileInfoHeader": "archive/zip", + "zip.NewReader": "archive/zip", + "zip.NewWriter": "archive/zip", + "zip.OpenReader": "archive/zip", + "zip.ReadCloser": "archive/zip", + "zip.Reader": "archive/zip", + "zip.RegisterCompressor": "archive/zip", + "zip.RegisterDecompressor": "archive/zip", + "zip.Store": "archive/zip", + "zip.Writer": "archive/zip", + "zlib.BestCompression": "compress/zlib", + "zlib.BestSpeed": "compress/zlib", + "zlib.DefaultCompression": "compress/zlib", + "zlib.ErrChecksum": "compress/zlib", + "zlib.ErrDictionary": "compress/zlib", + "zlib.ErrHeader": "compress/zlib", + "zlib.NewReader": "compress/zlib", + "zlib.NewReaderDict": "compress/zlib", + "zlib.NewWriter": "compress/zlib", + "zlib.NewWriterLevel": "compress/zlib", + "zlib.NewWriterLevelDict": "compress/zlib", + "zlib.NoCompression": "compress/zlib", + "zlib.Resetter": "compress/zlib", + "zlib.Writer": "compress/zlib", + + "unsafe.Alignof": "unsafe", + "unsafe.ArbitraryType": "unsafe", + "unsafe.Offsetof": "unsafe", + "unsafe.Pointer": "unsafe", + "unsafe.Sizeof": "unsafe", +} diff --git a/vendor/gopkg.in/xtaci/kcp-go.v2/.gitignore b/vendor/gopkg.in/xtaci/kcp-go.v2/.gitignore new file mode 100644 index 0000000..daf913b --- /dev/null +++ b/vendor/gopkg.in/xtaci/kcp-go.v2/.gitignore @@ -0,0 +1,24 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof diff --git a/vendor/gopkg.in/xtaci/kcp-go.v2/.travis.yml b/vendor/gopkg.in/xtaci/kcp-go.v2/.travis.yml new file mode 100644 index 0000000..875d28d --- /dev/null +++ b/vendor/gopkg.in/xtaci/kcp-go.v2/.travis.yml @@ -0,0 +1,15 @@ +language: go +go: + - tip + +before_install: + - go get -t -v ./... + +install: + - go get github.com/xtaci/kcp-go + +script: + - go test -coverprofile=coverage.txt -covermode=atomic -bench . + +after_success: + - bash <(curl -s https://codecov.io/bash) diff --git a/vendor/gopkg.in/xtaci/kcp-go.v2/LICENSE b/vendor/gopkg.in/xtaci/kcp-go.v2/LICENSE new file mode 100644 index 0000000..8294d13 --- /dev/null +++ b/vendor/gopkg.in/xtaci/kcp-go.v2/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 Daniel Fu + +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/gopkg.in/xtaci/kcp-go.v2/README.md b/vendor/gopkg.in/xtaci/kcp-go.v2/README.md new file mode 100644 index 0000000..3f34820 --- /dev/null +++ b/vendor/gopkg.in/xtaci/kcp-go.v2/README.md @@ -0,0 +1,88 @@ +# kcp-go + +[![GoDoc][1]][2] [![Powered][9]][10] [![MIT licensed][11]][12] [![Build Status][3]][4] [![Go Report Card][5]][6] [![Coverage Statusd][7]][8] + +[1]: https://godoc.org/github.com/xtaci/kcp-go?status.svg +[2]: https://godoc.org/github.com/xtaci/kcp-go +[3]: https://travis-ci.org/xtaci/kcp-go.svg?branch=master +[4]: https://travis-ci.org/xtaci/kcp-go +[5]: https://goreportcard.com/badge/github.com/xtaci/kcp-go +[6]: https://goreportcard.com/report/github.com/xtaci/kcp-go +[7]: https://codecov.io/gh/xtaci/kcp-go/branch/master/graph/badge.svg +[8]: https://codecov.io/gh/xtaci/kcp-go +[9]: https://img.shields.io/badge/KCP-Powered-blue.svg +[10]: https://github.com/skywind3000/kcp +[11]: https://img.shields.io/badge/license-MIT-blue.svg +[12]: LICENSE + +[![Claude_Shannon](shannon.jpg)](https://en.wikipedia.org/wiki/Claude_Shannon) + +## Introduction + +kcp-go is a full-featured ***reliable-UDP*** library for golang. It provides ***reliable, ordered, and error-checked*** delivery of a stream of octets between applications running on hosts communicating over an IP network. + +## Features + +1. Optimized for ***Real-Time Strategy Game***. +1. Compatible with [skywind3000's](https://github.com/skywind3000) C version with modifications. +1. ***Cache friendly*** and ***Memory optimized*** design in golang. +1. Compatible with [net.Conn](https://golang.org/pkg/net/#Conn) and [net.Listener](https://golang.org/pkg/net/#Listener). +1. [FEC(Forward Error Correction)](https://en.wikipedia.org/wiki/Forward_error_correction) Support with [Reed-Solomon Codes](https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction) +1. Packet level encryption support with [AES](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard), [TEA](https://en.wikipedia.org/wiki/Tiny_Encryption_Algorithm), [3DES](https://en.wikipedia.org/wiki/Triple_DES), [Blowfish](https://en.wikipedia.org/wiki/Blowfish_(cipher)), [Cast5](https://en.wikipedia.org/wiki/CAST-128), [Salsa20]( https://en.wikipedia.org/wiki/Salsa20), etc. in [CFB](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Cipher_Feedback_.28CFB.29) mode. + +## Conventions + +Control messages like SYN/FIN/RST in TCP ***are not defined*** in KCP, you need some ***keepalive mechanims*** in the application-level. a real world example is to use some ***multiplexing*** protocol over session, such as [smux](https://github.com/xtaci/smux), see [kcptun](https://github.com/xtaci/kcptun) for example. + +## Documentation + +For complete documentation, see the associated [Godoc](https://godoc.org/github.com/xtaci/kcp-go). + +## Specification + +# Frame Format + +## Usage + +Client: [full demo](https://github.com/xtaci/kcptun/blob/master/client/main.go#L231) +```go +kcpconn, err := kcp.DialWithOptions("192.168.0.1:10000", nil, 10, 3) +``` +Server: [full demo](https://github.com/xtaci/kcptun/blob/master/server/main.go#L235) +```go +lis, err := kcp.ListenWithOptions(":10000", nil, 10, 3) +``` + +## Performance +``` + 型号名称: MacBook Pro + 型号标识符: MacBookPro12,1 + 处理器名称: Intel Core i5 + 处理器速度: 2.7 GHz + 处理器数目: 1 + 核总数: 2 + L2 缓存(每个核): 256 KB + L3 缓存: 3 MB + 内存: 8 GB +``` +``` +$ go test -run Speed +new client 127.0.0.1:61165 +total recv: 16777216 +time for 16MB rtt with encryption 570.41176ms +&{BytesSent:33554432 BytesReceived:33554432 MaxConn:2 ActiveOpens:1 PassiveOpens:1 CurrEstab:1 InErrs:0 InCsumErrors:0 InSegs:42577 OutSegs:42641 OutBytes:48111336 RetransSegs:92 FastRetransSegs:92 LostSegs:0 RepeatSegs:0 FECRecovered:1 FECErrs:0 FECSegs:8514} +PASS +ok github.com/xtaci/kcp-go 0.600s +``` + +## Links + +1. https://github.com/xtaci/libkcp -- Official client library for iOS/Android(C++11) +2. https://github.com/skywind3000/kcp -- A Fast and Reliable ARQ Protocol +3. https://github.com/klauspost/reedsolomon -- Reed-Solomon Erasure Coding in Go + +## Donation + +![donate](donate.png) + +All donations on this project will be used to support the development of [gonet/2](http://gonet2.github.io/). diff --git a/vendor/gopkg.in/xtaci/kcp-go.v2/crypt.go b/vendor/gopkg.in/xtaci/kcp-go.v2/crypt.go new file mode 100644 index 0000000..df85278 --- /dev/null +++ b/vendor/gopkg.in/xtaci/kcp-go.v2/crypt.go @@ -0,0 +1,301 @@ +package kcp + +import ( + "crypto/aes" + "crypto/cipher" + "crypto/des" + "crypto/sha1" + + "golang.org/x/crypto/blowfish" + "golang.org/x/crypto/cast5" + "golang.org/x/crypto/pbkdf2" + "golang.org/x/crypto/salsa20" + "golang.org/x/crypto/tea" + "golang.org/x/crypto/twofish" + "golang.org/x/crypto/xtea" +) + +var ( + initialVector = []byte{167, 115, 79, 156, 18, 172, 27, 1, 164, 21, 242, 193, 252, 120, 230, 107} + saltxor = `sH3CIVoF#rWLtJo6` +) + +// BlockCrypt defines encryption/decryption methods for a given byte slice +type BlockCrypt interface { + // Encrypt encrypts the whole block in src into dst. + // Dst and src may point at the same memory. + Encrypt(dst, src []byte) + + // Decrypt decrypts the whole block in src into dst. + // Dst and src may point at the same memory. + Decrypt(dst, src []byte) +} + +// Salsa20BlockCrypt implements BlockCrypt +type Salsa20BlockCrypt struct { + key [32]byte +} + +// NewSalsa20BlockCrypt initates BlockCrypt by the given key +func NewSalsa20BlockCrypt(key []byte) (BlockCrypt, error) { + c := new(Salsa20BlockCrypt) + copy(c.key[:], key) + return c, nil +} + +// Encrypt implements Encrypt interface +func (c *Salsa20BlockCrypt) Encrypt(dst, src []byte) { + salsa20.XORKeyStream(dst[8:], src[8:], src[:8], &c.key) + copy(dst[:8], src[:8]) +} + +// Decrypt implements Decrypt interface +func (c *Salsa20BlockCrypt) Decrypt(dst, src []byte) { + salsa20.XORKeyStream(dst[8:], src[8:], src[:8], &c.key) + copy(dst[:8], src[:8]) +} + +// TwofishBlockCrypt implements BlockCrypt +type TwofishBlockCrypt struct { + encbuf []byte + decbuf []byte + block cipher.Block +} + +// NewTwofishBlockCrypt initates BlockCrypt by the given key +func NewTwofishBlockCrypt(key []byte) (BlockCrypt, error) { + c := new(TwofishBlockCrypt) + block, err := twofish.NewCipher(key) + if err != nil { + return nil, err + } + c.block = block + c.encbuf = make([]byte, twofish.BlockSize) + c.decbuf = make([]byte, 2*twofish.BlockSize) + return c, nil +} + +// Encrypt implements Encrypt interface +func (c *TwofishBlockCrypt) Encrypt(dst, src []byte) { encrypt(c.block, dst, src, c.encbuf) } + +// Decrypt implements Decrypt interface +func (c *TwofishBlockCrypt) Decrypt(dst, src []byte) { decrypt(c.block, dst, src, c.decbuf) } + +// TripleDESBlockCrypt implements BlockCrypt +type TripleDESBlockCrypt struct { + encbuf []byte + decbuf []byte + block cipher.Block +} + +// NewTripleDESBlockCrypt initates BlockCrypt by the given key +func NewTripleDESBlockCrypt(key []byte) (BlockCrypt, error) { + c := new(TripleDESBlockCrypt) + block, err := des.NewTripleDESCipher(key) + if err != nil { + return nil, err + } + c.block = block + c.encbuf = make([]byte, des.BlockSize) + c.decbuf = make([]byte, 2*des.BlockSize) + return c, nil +} + +// Encrypt implements Encrypt interface +func (c *TripleDESBlockCrypt) Encrypt(dst, src []byte) { encrypt(c.block, dst, src, c.encbuf) } + +// Decrypt implements Decrypt interface +func (c *TripleDESBlockCrypt) Decrypt(dst, src []byte) { decrypt(c.block, dst, src, c.decbuf) } + +// Cast5BlockCrypt implements BlockCrypt +type Cast5BlockCrypt struct { + encbuf []byte + decbuf []byte + block cipher.Block +} + +// NewCast5BlockCrypt initates BlockCrypt by the given key +func NewCast5BlockCrypt(key []byte) (BlockCrypt, error) { + c := new(Cast5BlockCrypt) + block, err := cast5.NewCipher(key) + if err != nil { + return nil, err + } + c.block = block + c.encbuf = make([]byte, cast5.BlockSize) + c.decbuf = make([]byte, 2*cast5.BlockSize) + return c, nil +} + +// Encrypt implements Encrypt interface +func (c *Cast5BlockCrypt) Encrypt(dst, src []byte) { encrypt(c.block, dst, src, c.encbuf) } + +// Decrypt implements Decrypt interface +func (c *Cast5BlockCrypt) Decrypt(dst, src []byte) { decrypt(c.block, dst, src, c.decbuf) } + +// BlowfishBlockCrypt implements BlockCrypt +type BlowfishBlockCrypt struct { + encbuf []byte + decbuf []byte + block cipher.Block +} + +// NewBlowfishBlockCrypt initates BlockCrypt by the given key +func NewBlowfishBlockCrypt(key []byte) (BlockCrypt, error) { + c := new(BlowfishBlockCrypt) + block, err := blowfish.NewCipher(key) + if err != nil { + return nil, err + } + c.block = block + c.encbuf = make([]byte, blowfish.BlockSize) + c.decbuf = make([]byte, 2*blowfish.BlockSize) + return c, nil +} + +// Encrypt implements Encrypt interface +func (c *BlowfishBlockCrypt) Encrypt(dst, src []byte) { encrypt(c.block, dst, src, c.encbuf) } + +// Decrypt implements Decrypt interface +func (c *BlowfishBlockCrypt) Decrypt(dst, src []byte) { decrypt(c.block, dst, src, c.decbuf) } + +// AESBlockCrypt implements BlockCrypt +type AESBlockCrypt struct { + encbuf []byte + decbuf []byte + block cipher.Block +} + +// NewAESBlockCrypt initates BlockCrypt by the given key +func NewAESBlockCrypt(key []byte) (BlockCrypt, error) { + c := new(AESBlockCrypt) + block, err := aes.NewCipher(key) + if err != nil { + return nil, err + } + c.block = block + c.encbuf = make([]byte, aes.BlockSize) + c.decbuf = make([]byte, 2*aes.BlockSize) + return c, nil +} + +// Encrypt implements Encrypt interface +func (c *AESBlockCrypt) Encrypt(dst, src []byte) { encrypt(c.block, dst, src, c.encbuf) } + +// Decrypt implements Decrypt interface +func (c *AESBlockCrypt) Decrypt(dst, src []byte) { decrypt(c.block, dst, src, c.decbuf) } + +// TEABlockCrypt implements BlockCrypt +type TEABlockCrypt struct { + encbuf []byte + decbuf []byte + block cipher.Block +} + +// NewTEABlockCrypt initate BlockCrypt by the given key +func NewTEABlockCrypt(key []byte) (BlockCrypt, error) { + c := new(TEABlockCrypt) + block, err := tea.NewCipherWithRounds(key, 16) + if err != nil { + return nil, err + } + c.block = block + c.encbuf = make([]byte, tea.BlockSize) + c.decbuf = make([]byte, 2*tea.BlockSize) + return c, nil +} + +// Encrypt implements Encrypt interface +func (c *TEABlockCrypt) Encrypt(dst, src []byte) { encrypt(c.block, dst, src, c.encbuf) } + +// Decrypt implements Decrypt interface +func (c *TEABlockCrypt) Decrypt(dst, src []byte) { decrypt(c.block, dst, src, c.decbuf) } + +// XTEABlockCrypt implements BlockCrypt +type XTEABlockCrypt struct { + encbuf []byte + decbuf []byte + block cipher.Block +} + +// NewXTEABlockCrypt initate BlockCrypt by the given key +func NewXTEABlockCrypt(key []byte) (BlockCrypt, error) { + c := new(XTEABlockCrypt) + block, err := xtea.NewCipher(key) + if err != nil { + return nil, err + } + c.block = block + c.encbuf = make([]byte, xtea.BlockSize) + c.decbuf = make([]byte, 2*xtea.BlockSize) + return c, nil +} + +// Encrypt implements Encrypt interface +func (c *XTEABlockCrypt) Encrypt(dst, src []byte) { encrypt(c.block, dst, src, c.encbuf) } + +// Decrypt implements Decrypt interface +func (c *XTEABlockCrypt) Decrypt(dst, src []byte) { decrypt(c.block, dst, src, c.decbuf) } + +// SimpleXORBlockCrypt implements BlockCrypt +type SimpleXORBlockCrypt struct { + xortbl []byte +} + +// NewSimpleXORBlockCrypt initate BlockCrypt by the given key +func NewSimpleXORBlockCrypt(key []byte) (BlockCrypt, error) { + c := new(SimpleXORBlockCrypt) + c.xortbl = pbkdf2.Key(key, []byte(saltxor), 32, mtuLimit, sha1.New) + return c, nil +} + +// Encrypt implements Encrypt interface +func (c *SimpleXORBlockCrypt) Encrypt(dst, src []byte) { xorBytes(dst, src, c.xortbl) } + +// Decrypt implements Decrypt interface +func (c *SimpleXORBlockCrypt) Decrypt(dst, src []byte) { xorBytes(dst, src, c.xortbl) } + +// NoneBlockCrypt simple returns the plaintext +type NoneBlockCrypt struct{} + +// NewNoneBlockCrypt initate by the given key +func NewNoneBlockCrypt(key []byte) (BlockCrypt, error) { + return new(NoneBlockCrypt), nil +} + +// Encrypt implements Encrypt interface +func (c *NoneBlockCrypt) Encrypt(dst, src []byte) { copy(dst, src) } + +// Decrypt implements Decrypt interface +func (c *NoneBlockCrypt) Decrypt(dst, src []byte) { copy(dst, src) } + +// packet encryption with local CFB mode +func encrypt(block cipher.Block, dst, src, buf []byte) { + blocksize := block.BlockSize() + tbl := buf[:blocksize] + block.Encrypt(tbl, initialVector) + n := len(src) / blocksize + base := 0 + for i := 0; i < n; i++ { + xorWords(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += blocksize + } + xorBytes(dst[base:], src[base:], tbl) +} + +func decrypt(block cipher.Block, dst, src, buf []byte) { + blocksize := block.BlockSize() + tbl := buf[:blocksize] + next := buf[blocksize:] + block.Encrypt(tbl, initialVector) + n := len(src) / blocksize + base := 0 + for i := 0; i < n; i++ { + block.Encrypt(next, src[base:]) + xorWords(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += blocksize + } + xorBytes(dst[base:], src[base:], tbl) +} diff --git a/vendor/gopkg.in/xtaci/kcp-go.v2/donate.png b/vendor/gopkg.in/xtaci/kcp-go.v2/donate.png new file mode 100644 index 0000000000000000000000000000000000000000..0f353d96e902936aed15a7312a6e8b4b332fe960 GIT binary patch literal 4420 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 literal 0 HcmV?d00001 diff --git a/vendor/gopkg.in/xtaci/kcp-go.v2/fec.go b/vendor/gopkg.in/xtaci/kcp-go.v2/fec.go new file mode 100644 index 0000000..10ad1c0 --- /dev/null +++ b/vendor/gopkg.in/xtaci/kcp-go.v2/fec.go @@ -0,0 +1,241 @@ +package kcp + +import ( + "encoding/binary" + "sync" + + "github.com/klauspost/reedsolomon" +) + +const ( + fecHeaderSize = 6 + fecHeaderSizePlus2 = fecHeaderSize + 2 // plus 2B data size + typeData = 0xf1 + typeFEC = 0xf2 + fecExpire = 30000 // 30s +) + +type ( + // FEC defines forward error correction for packets + FEC struct { + rx []fecPacket // ordered receive queue + rxlimit int // queue size limit + dataShards int + parityShards int + shardSize int + next uint32 // next seqid + enc reedsolomon.Encoder + shards [][]byte + shardsflag []bool + paws uint32 // Protect Against Wrapped Sequence numbers + lastCheck uint32 + xmitBuf sync.Pool + } + + fecPacket struct { + seqid uint32 + flag uint16 + data []byte + ts uint32 + } +) + +func newFEC(rxlimit, dataShards, parityShards int) *FEC { + if dataShards <= 0 || parityShards <= 0 { + return nil + } + if rxlimit < dataShards+parityShards { + return nil + } + + fec := new(FEC) + fec.rxlimit = rxlimit + fec.dataShards = dataShards + fec.parityShards = parityShards + fec.shardSize = dataShards + parityShards + fec.paws = (0xffffffff/uint32(fec.shardSize) - 1) * uint32(fec.shardSize) + enc, err := reedsolomon.New(dataShards, parityShards) + if err != nil { + return nil + } + fec.enc = enc + fec.shards = make([][]byte, fec.shardSize) + fec.shardsflag = make([]bool, fec.shardSize) + fec.xmitBuf.New = func() interface{} { + return make([]byte, mtuLimit) + } + + return fec +} + +// decode a fec packet +func (fec *FEC) decode(data []byte) fecPacket { + var pkt fecPacket + pkt.seqid = binary.LittleEndian.Uint32(data) + pkt.flag = binary.LittleEndian.Uint16(data[4:]) + pkt.ts = currentMs() + // allocate memory & copy + buf := fec.xmitBuf.Get().([]byte) + n := copy(buf, data[6:]) + xorBytes(buf[n:], buf[n:], buf[n:]) + pkt.data = buf + return pkt +} + +func (fec *FEC) markData(data []byte) { + binary.LittleEndian.PutUint32(data, fec.next) + binary.LittleEndian.PutUint16(data[4:], typeData) + fec.next++ +} + +func (fec *FEC) markFEC(data []byte) { + binary.LittleEndian.PutUint32(data, fec.next) + binary.LittleEndian.PutUint16(data[4:], typeFEC) + fec.next++ + if fec.next >= fec.paws { // paws would only occurs in markFEC + fec.next = 0 + } +} + +// input a fec packet +func (fec *FEC) input(pkt fecPacket) (recovered [][]byte) { + // expiration + now := currentMs() + if now-fec.lastCheck >= fecExpire { + var rx []fecPacket + for k := range fec.rx { + if now-fec.rx[k].ts < fecExpire { + rx = append(rx, fec.rx[k]) + } else { + fec.xmitBuf.Put(fec.rx[k].data) + } + } + fec.rx = rx + fec.lastCheck = now + } + + // insertion + n := len(fec.rx) - 1 + insertIdx := 0 + for i := n; i >= 0; i-- { + if pkt.seqid == fec.rx[i].seqid { // de-duplicate + fec.xmitBuf.Put(pkt.data) + return nil + } else if pkt.seqid > fec.rx[i].seqid { // insertion + insertIdx = i + 1 + break + } + } + + // insert into ordered rx queue + if insertIdx == n+1 { + fec.rx = append(fec.rx, pkt) + } else { + fec.rx = append(fec.rx, fecPacket{}) + copy(fec.rx[insertIdx+1:], fec.rx[insertIdx:]) + fec.rx[insertIdx] = pkt + } + + // shard range for current packet + shardBegin := pkt.seqid - pkt.seqid%uint32(fec.shardSize) + shardEnd := shardBegin + uint32(fec.shardSize) - 1 + + // max search range in ordered queue for current shard + searchBegin := insertIdx - int(pkt.seqid%uint32(fec.shardSize)) + if searchBegin < 0 { + searchBegin = 0 + } + searchEnd := searchBegin + fec.shardSize - 1 + if searchEnd >= len(fec.rx) { + searchEnd = len(fec.rx) - 1 + } + + if searchEnd > searchBegin && searchEnd-searchBegin+1 >= fec.dataShards { + numshard := 0 + numDataShard := 0 + first := -1 + maxlen := 0 + shards := fec.shards + shardsflag := fec.shardsflag + for k := range fec.shards { + shards[k] = nil + shardsflag[k] = false + } + + for i := searchBegin; i <= searchEnd; i++ { + seqid := fec.rx[i].seqid + if seqid > shardEnd { + break + } else if seqid >= shardBegin { + shards[seqid%uint32(fec.shardSize)] = fec.rx[i].data + shardsflag[seqid%uint32(fec.shardSize)] = true + numshard++ + if fec.rx[i].flag == typeData { + numDataShard++ + } + if numshard == 1 { + first = i + } + if len(fec.rx[i].data) > maxlen { + maxlen = len(fec.rx[i].data) + } + } + } + + if numDataShard == fec.dataShards { // no lost + for i := first; i < first+numshard; i++ { // free + fec.xmitBuf.Put(fec.rx[i].data) + } + copy(fec.rx[first:], fec.rx[first+numshard:]) + for i := 0; i < numshard; i++ { // dereference + fec.rx[len(fec.rx)-1-i] = fecPacket{} + } + fec.rx = fec.rx[:len(fec.rx)-numshard] + } else if numshard >= fec.dataShards { // recoverable + for k := range shards { + if shards[k] != nil { + shards[k] = shards[k][:maxlen] + } + } + if err := fec.enc.Reconstruct(shards); err == nil { + for k := range shards[:fec.dataShards] { + if !shardsflag[k] { + recovered = append(recovered, shards[k]) + } + } + } + + for i := first; i < first+numshard; i++ { // free + fec.xmitBuf.Put(fec.rx[i].data) + } + copy(fec.rx[first:], fec.rx[first+numshard:]) + for i := 0; i < numshard; i++ { // dereference + fec.rx[len(fec.rx)-1-i] = fecPacket{} + } + fec.rx = fec.rx[:len(fec.rx)-numshard] + } + } + + // keep rxlimit + if len(fec.rx) > fec.rxlimit { + fec.xmitBuf.Put(fec.rx[0].data) // free + fec.rx[0].data = nil + fec.rx = fec.rx[1:] + } + return +} + +func (fec *FEC) calcECC(data [][]byte, offset, maxlen int) (ecc [][]byte) { + if len(data) != fec.shardSize { + return nil + } + shards := make([][]byte, fec.shardSize) + for k := range shards { + shards[k] = data[k][offset:maxlen] + } + + if err := fec.enc.Encode(shards); err != nil { + return nil + } + return data[fec.dataShards:] +} diff --git a/vendor/gopkg.in/xtaci/kcp-go.v2/frame.png b/vendor/gopkg.in/xtaci/kcp-go.v2/frame.png new file mode 100644 index 0000000000000000000000000000000000000000..7952e4a703e41ebdb1495fbd87a92ee096702556 GIT binary patch literal 8179 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 U{U66TP>-jo^jxu6-q`Q|0baRXv;Y7A literal 0 HcmV?d00001 diff --git a/vendor/gopkg.in/xtaci/kcp-go.v2/kcp.go b/vendor/gopkg.in/xtaci/kcp-go.v2/kcp.go new file mode 100644 index 0000000..78ccf26 --- /dev/null +++ b/vendor/gopkg.in/xtaci/kcp-go.v2/kcp.go @@ -0,0 +1,961 @@ +// Package kcp - A Fast and Reliable ARQ Protocol +package kcp + +import ( + "container/heap" + "encoding/binary" + "sync/atomic" +) + +const ( + IKCP_RTO_NDL = 30 // no delay min rto + IKCP_RTO_MIN = 100 // normal min rto + IKCP_RTO_DEF = 200 + IKCP_RTO_MAX = 60000 + IKCP_CMD_PUSH = 81 // cmd: push data + IKCP_CMD_ACK = 82 // cmd: ack + IKCP_CMD_WASK = 83 // cmd: window probe (ask) + IKCP_CMD_WINS = 84 // cmd: window size (tell) + IKCP_ASK_SEND = 1 // need to send IKCP_CMD_WASK + IKCP_ASK_TELL = 2 // need to send IKCP_CMD_WINS + IKCP_WND_SND = 32 + IKCP_WND_RCV = 32 + IKCP_MTU_DEF = 1400 + IKCP_ACK_FAST = 3 + IKCP_INTERVAL = 100 + IKCP_OVERHEAD = 24 + IKCP_DEADLINK = 20 + IKCP_THRESH_INIT = 2 + IKCP_THRESH_MIN = 2 + IKCP_PROBE_INIT = 7000 // 7 secs to probe window size + IKCP_PROBE_LIMIT = 120000 // up to 120 secs to probe window +) + +// Output is a closure which captures conn and calls conn.Write +type Output func(buf []byte, size int) + +/* encode 8 bits unsigned int */ +func ikcp_encode8u(p []byte, c byte) []byte { + p[0] = c + return p[1:] +} + +/* decode 8 bits unsigned int */ +func ikcp_decode8u(p []byte, c *byte) []byte { + *c = p[0] + return p[1:] +} + +/* encode 16 bits unsigned int (lsb) */ +func ikcp_encode16u(p []byte, w uint16) []byte { + binary.LittleEndian.PutUint16(p, w) + return p[2:] +} + +/* decode 16 bits unsigned int (lsb) */ +func ikcp_decode16u(p []byte, w *uint16) []byte { + *w = binary.LittleEndian.Uint16(p) + return p[2:] +} + +/* encode 32 bits unsigned int (lsb) */ +func ikcp_encode32u(p []byte, l uint32) []byte { + binary.LittleEndian.PutUint32(p, l) + return p[4:] +} + +/* decode 32 bits unsigned int (lsb) */ +func ikcp_decode32u(p []byte, l *uint32) []byte { + *l = binary.LittleEndian.Uint32(p) + return p[4:] +} + +func _imin_(a, b uint32) uint32 { + if a <= b { + return a + } else { + return b + } +} + +func _imax_(a, b uint32) uint32 { + if a >= b { + return a + } else { + return b + } +} + +func _ibound_(lower, middle, upper uint32) uint32 { + return _imin_(_imax_(lower, middle), upper) +} + +func _itimediff(later, earlier uint32) int32 { + return (int32)(later - earlier) +} + +// Segment defines a KCP segment +type Segment struct { + conv uint32 + cmd uint32 + frg uint32 + wnd uint32 + ts uint32 + sn uint32 + una uint32 + resendts uint32 + rto uint32 + fastack uint32 + xmit uint32 + data []byte +} + +// encode a segment into buffer +func (seg *Segment) encode(ptr []byte) []byte { + ptr = ikcp_encode32u(ptr, seg.conv) + ptr = ikcp_encode8u(ptr, uint8(seg.cmd)) + ptr = ikcp_encode8u(ptr, uint8(seg.frg)) + ptr = ikcp_encode16u(ptr, uint16(seg.wnd)) + ptr = ikcp_encode32u(ptr, seg.ts) + ptr = ikcp_encode32u(ptr, seg.sn) + ptr = ikcp_encode32u(ptr, seg.una) + ptr = ikcp_encode32u(ptr, uint32(len(seg.data))) + return ptr +} + +// NewSegment creates a KCP segment +func NewSegment(size int) *Segment { + seg := new(Segment) + seg.data = make([]byte, size) + return seg +} + +// KCP defines a single KCP connection +type KCP struct { + conv, mtu, mss, state uint32 + snd_una, snd_nxt, rcv_nxt uint32 + ssthresh uint32 + rx_rttval, rx_srtt, rx_rto, rx_minrto uint32 + snd_wnd, rcv_wnd, rmt_wnd, cwnd, probe uint32 + current, interval, ts_flush, xmit uint32 + nodelay, updated uint32 + ts_probe, probe_wait uint32 + dead_link, incr uint32 + + fastresend int32 + nocwnd, stream int32 + + snd_queue []Segment + rcv_queue []Segment + snd_buf []Segment + rcv_buf []Segment + + acklist ACKList + + buffer []byte + output Output +} + +// ACK packet to return +type ACK struct { + sn uint32 + ts uint32 +} + +// ACKList is heapified +type ACKList []ACK + +func (l ACKList) Len() int { return len(l) } +func (l ACKList) Less(i, j int) bool { return l[i].sn < l[j].sn } +func (l ACKList) Swap(i, j int) { l[i], l[j] = l[j], l[i] } +func (l *ACKList) Push(x interface{}) { *l = append(*l, x.(ACK)) } +func (l *ACKList) Pop() interface{} { + old := *l + n := len(old) + x := old[n-1] + *l = old[0 : n-1] + return x +} + +// NewKCP create a new kcp control object, 'conv' must equal in two endpoint +// from the same connection. +func NewKCP(conv uint32, output Output) *KCP { + kcp := new(KCP) + kcp.conv = conv + kcp.snd_wnd = IKCP_WND_SND + kcp.rcv_wnd = IKCP_WND_RCV + kcp.rmt_wnd = IKCP_WND_RCV + kcp.mtu = IKCP_MTU_DEF + kcp.mss = kcp.mtu - IKCP_OVERHEAD + kcp.buffer = make([]byte, (kcp.mtu+IKCP_OVERHEAD)*3) + kcp.rx_rto = IKCP_RTO_DEF + kcp.rx_minrto = IKCP_RTO_MIN + kcp.interval = IKCP_INTERVAL + kcp.ts_flush = IKCP_INTERVAL + kcp.ssthresh = IKCP_THRESH_INIT + kcp.dead_link = IKCP_DEADLINK + kcp.output = output + return kcp +} + +// PeekSize checks the size of next message in the recv queue +func (kcp *KCP) PeekSize() (length int) { + if len(kcp.rcv_queue) == 0 { + return -1 + } + + seg := &kcp.rcv_queue[0] + if seg.frg == 0 { + return len(seg.data) + } + + if len(kcp.rcv_queue) < int(seg.frg+1) { + return -1 + } + + for k := range kcp.rcv_queue { + seg := &kcp.rcv_queue[k] + length += len(seg.data) + if seg.frg == 0 { + break + } + } + return +} + +// Recv is user/upper level recv: returns size, returns below zero for EAGAIN +func (kcp *KCP) Recv(buffer []byte) (n int) { + if len(kcp.rcv_queue) == 0 { + return -1 + } + + peeksize := kcp.PeekSize() + if peeksize < 0 { + return -2 + } + + if peeksize > len(buffer) { + return -3 + } + + var fast_recover bool + if len(kcp.rcv_queue) >= int(kcp.rcv_wnd) { + fast_recover = true + } + + // merge fragment + count := 0 + for k := range kcp.rcv_queue { + seg := &kcp.rcv_queue[k] + copy(buffer, seg.data) + buffer = buffer[len(seg.data):] + n += len(seg.data) + count++ + seg.data = nil + if seg.frg == 0 { + break + } + } + kcp.rcv_queue = kcp.rcv_queue[count:] + + // move available data from rcv_buf -> rcv_queue + count = 0 + for k := range kcp.rcv_buf { + seg := &kcp.rcv_buf[k] + if seg.sn == kcp.rcv_nxt && len(kcp.rcv_queue) < int(kcp.rcv_wnd) { + kcp.rcv_queue = append(kcp.rcv_queue, *seg) + kcp.rcv_nxt++ + count++ + seg.data = nil + } else { + break + } + } + kcp.rcv_buf = kcp.rcv_buf[count:] + + // fast recover + if len(kcp.rcv_queue) < int(kcp.rcv_wnd) && fast_recover { + // ready to send back IKCP_CMD_WINS in ikcp_flush + // tell remote my window size + kcp.probe |= IKCP_ASK_TELL + } + return +} + +// Send is user/upper level send, returns below zero for error +func (kcp *KCP) Send(buffer []byte) int { + var count int + if len(buffer) == 0 { + return -1 + } + + // append to previous segment in streaming mode (if possible) + if kcp.stream != 0 { + n := len(kcp.snd_queue) + if n > 0 { + old := &kcp.snd_queue[n-1] + if len(old.data) < int(kcp.mss) { + capacity := int(kcp.mss) - len(old.data) + extend := capacity + if len(buffer) < capacity { + extend = len(buffer) + } + seg := NewSegment(len(old.data) + extend) + seg.frg = 0 + copy(seg.data, old.data) + copy(seg.data[len(old.data):], buffer) + buffer = buffer[extend:] + kcp.snd_queue[n-1] = *seg + } + } + + if len(buffer) == 0 { + return 0 + } + } + + if len(buffer) <= int(kcp.mss) { + count = 1 + } else { + count = (len(buffer) + int(kcp.mss) - 1) / int(kcp.mss) + } + + if count > 255 { + return -2 + } + + if count == 0 { + count = 1 + } + + for i := 0; i < count; i++ { + var size int + if len(buffer) > int(kcp.mss) { + size = int(kcp.mss) + } else { + size = len(buffer) + } + seg := NewSegment(size) + copy(seg.data, buffer[:size]) + if kcp.stream == 0 { // message mode + seg.frg = uint32(count - i - 1) + } else { // stream mode + seg.frg = 0 + } + kcp.snd_queue = append(kcp.snd_queue, *seg) + buffer = buffer[size:] + } + return 0 +} + +// https://tools.ietf.org/html/rfc6298 +func (kcp *KCP) update_ack(rtt int32) { + var rto uint32 + if kcp.rx_srtt == 0 { + kcp.rx_srtt = uint32(rtt) + kcp.rx_rttval = uint32(rtt) / 2 + } else { + delta := rtt - int32(kcp.rx_srtt) + if delta < 0 { + delta = -delta + } + kcp.rx_rttval = (3*kcp.rx_rttval + uint32(delta)) / 4 + kcp.rx_srtt = (7*kcp.rx_srtt + uint32(rtt)) / 8 + if kcp.rx_srtt < 1 { + kcp.rx_srtt = 1 + } + } + rto = kcp.rx_srtt + _imax_(1, 4*kcp.rx_rttval) + kcp.rx_rto = _ibound_(kcp.rx_minrto, rto, IKCP_RTO_MAX) +} + +func (kcp *KCP) shrink_buf() { + if len(kcp.snd_buf) > 0 { + seg := &kcp.snd_buf[0] + kcp.snd_una = seg.sn + } else { + kcp.snd_una = kcp.snd_nxt + } +} + +func (kcp *KCP) parse_ack(sn uint32) { + if _itimediff(sn, kcp.snd_una) < 0 || _itimediff(sn, kcp.snd_nxt) >= 0 { + return + } + + for k := range kcp.snd_buf { + seg := &kcp.snd_buf[k] + if sn == seg.sn { + copy(kcp.snd_buf[k:], kcp.snd_buf[k+1:]) + kcp.snd_buf[len(kcp.snd_buf)-1] = Segment{} + kcp.snd_buf = kcp.snd_buf[:len(kcp.snd_buf)-1] + break + } + if _itimediff(sn, seg.sn) < 0 { + break + } + } +} + +func (kcp *KCP) parse_fastack(sn uint32) { + if _itimediff(sn, kcp.snd_una) < 0 || _itimediff(sn, kcp.snd_nxt) >= 0 { + return + } + + for k := range kcp.snd_buf { + seg := &kcp.snd_buf[k] + if _itimediff(sn, seg.sn) < 0 { + break + } else if sn != seg.sn { // && kcp.current >= seg.ts+kcp.rx_srtt { + seg.fastack++ + } + } +} + +func (kcp *KCP) parse_una(una uint32) { + count := 0 + for k := range kcp.snd_buf { + seg := &kcp.snd_buf[k] + if _itimediff(una, seg.sn) > 0 { + count++ + seg.data = nil + } else { + break + } + } + kcp.snd_buf = kcp.snd_buf[count:] +} + +// ack append +func (kcp *KCP) ack_push(sn, ts uint32) { + heap.Push(&kcp.acklist, ACK{sn, ts}) +} + +func (kcp *KCP) parse_data(newseg *Segment) { + sn := newseg.sn + if _itimediff(sn, kcp.rcv_nxt+kcp.rcv_wnd) >= 0 || + _itimediff(sn, kcp.rcv_nxt) < 0 { + atomic.AddUint64(&DefaultSnmp.RepeatSegs, 1) + return + } + + n := len(kcp.rcv_buf) - 1 + insert_idx := 0 + repeat := false + for i := n; i >= 0; i-- { + seg := &kcp.rcv_buf[i] + if seg.sn == sn { + repeat = true + atomic.AddUint64(&DefaultSnmp.RepeatSegs, 1) + break + } + if _itimediff(sn, seg.sn) > 0 { + insert_idx = i + 1 + break + } + } + + if !repeat { + if insert_idx == n+1 { + kcp.rcv_buf = append(kcp.rcv_buf, *newseg) + } else { + kcp.rcv_buf = append(kcp.rcv_buf, Segment{}) + copy(kcp.rcv_buf[insert_idx+1:], kcp.rcv_buf[insert_idx:]) + kcp.rcv_buf[insert_idx] = *newseg + } + } + + // move available data from rcv_buf -> rcv_queue + count := 0 + for k := range kcp.rcv_buf { + seg := &kcp.rcv_buf[k] + if seg.sn == kcp.rcv_nxt && len(kcp.rcv_queue) < int(kcp.rcv_wnd) { + kcp.rcv_queue = append(kcp.rcv_queue, kcp.rcv_buf[k]) + kcp.rcv_nxt++ + count++ + seg.data = nil + } else { + break + } + } + kcp.rcv_buf = kcp.rcv_buf[count:] +} + +// Input when you received a low level packet (eg. UDP packet), call it +func (kcp *KCP) Input(data []byte, update_ack bool) int { + una := kcp.snd_una + if len(data) < IKCP_OVERHEAD { + return -1 + } + + var maxack uint32 + var flag int + for { + var ts, sn, length, una, conv uint32 + var wnd uint16 + var cmd, frg uint8 + + if len(data) < int(IKCP_OVERHEAD) { + break + } + + data = ikcp_decode32u(data, &conv) + if conv != kcp.conv { + return -1 + } + + data = ikcp_decode8u(data, &cmd) + data = ikcp_decode8u(data, &frg) + data = ikcp_decode16u(data, &wnd) + data = ikcp_decode32u(data, &ts) + data = ikcp_decode32u(data, &sn) + data = ikcp_decode32u(data, &una) + data = ikcp_decode32u(data, &length) + if len(data) < int(length) { + return -2 + } + + if cmd != IKCP_CMD_PUSH && cmd != IKCP_CMD_ACK && + cmd != IKCP_CMD_WASK && cmd != IKCP_CMD_WINS { + return -3 + } + + kcp.rmt_wnd = uint32(wnd) + kcp.parse_una(una) + kcp.shrink_buf() + + if cmd == IKCP_CMD_ACK { + if update_ack && _itimediff(kcp.current, ts) >= 0 { + kcp.update_ack(_itimediff(kcp.current, ts)) + } + kcp.parse_ack(sn) + kcp.shrink_buf() + if flag == 0 { + flag = 1 + maxack = sn + } else if _itimediff(sn, maxack) > 0 { + maxack = sn + } + } else if cmd == IKCP_CMD_PUSH { + if _itimediff(sn, kcp.rcv_nxt+kcp.rcv_wnd) < 0 { + kcp.ack_push(sn, ts) + if _itimediff(sn, kcp.rcv_nxt) >= 0 { + seg := NewSegment(int(length)) + seg.conv = conv + seg.cmd = uint32(cmd) + seg.frg = uint32(frg) + seg.wnd = uint32(wnd) + seg.ts = ts + seg.sn = sn + seg.una = una + copy(seg.data, data[:length]) + kcp.parse_data(seg) + } + } + } else if cmd == IKCP_CMD_WASK { + // ready to send back IKCP_CMD_WINS in Ikcp_flush + // tell remote my window size + kcp.probe |= IKCP_ASK_TELL + } else if cmd == IKCP_CMD_WINS { + // do nothing + } else { + return -3 + } + + data = data[length:] + } + + if flag != 0 && update_ack { + kcp.parse_fastack(maxack) + } + + if _itimediff(kcp.snd_una, una) > 0 { + if kcp.cwnd < kcp.rmt_wnd { + mss := kcp.mss + if kcp.cwnd < kcp.ssthresh { + kcp.cwnd++ + kcp.incr += mss + } else { + if kcp.incr < mss { + kcp.incr = mss + } + kcp.incr += (mss*mss)/kcp.incr + (mss / 16) + if (kcp.cwnd+1)*mss <= kcp.incr { + kcp.cwnd++ + } + } + if kcp.cwnd > kcp.rmt_wnd { + kcp.cwnd = kcp.rmt_wnd + kcp.incr = kcp.rmt_wnd * mss + } + } + } + + return 0 +} + +func (kcp *KCP) wnd_unused() int32 { + if len(kcp.rcv_queue) < int(kcp.rcv_wnd) { + return int32(int(kcp.rcv_wnd) - len(kcp.rcv_queue)) + } + return 0 +} + +// flush pending data +func (kcp *KCP) flush() { + current := kcp.current + buffer := kcp.buffer + change := 0 + lost := false + + if kcp.updated == 0 { + return + } + var seg Segment + seg.conv = kcp.conv + seg.cmd = IKCP_CMD_ACK + seg.wnd = uint32(kcp.wnd_unused()) + seg.una = kcp.rcv_nxt + + // flush acknowledges + ptr := buffer + for kcp.acklist.Len() > 0 { + size := len(buffer) - len(ptr) + if size+IKCP_OVERHEAD > int(kcp.mtu) { + kcp.output(buffer, size) + ptr = buffer + } + ack := heap.Pop(&kcp.acklist).(ACK) + seg.sn, seg.ts = ack.sn, ack.ts + ptr = seg.encode(ptr) + } + kcp.acklist = nil + + // probe window size (if remote window size equals zero) + if kcp.rmt_wnd == 0 { + if kcp.probe_wait == 0 { + kcp.probe_wait = IKCP_PROBE_INIT + kcp.ts_probe = kcp.current + kcp.probe_wait + } else { + if _itimediff(kcp.current, kcp.ts_probe) >= 0 { + if kcp.probe_wait < IKCP_PROBE_INIT { + kcp.probe_wait = IKCP_PROBE_INIT + } + kcp.probe_wait += kcp.probe_wait / 2 + if kcp.probe_wait > IKCP_PROBE_LIMIT { + kcp.probe_wait = IKCP_PROBE_LIMIT + } + kcp.ts_probe = kcp.current + kcp.probe_wait + kcp.probe |= IKCP_ASK_SEND + } + } + } else { + kcp.ts_probe = 0 + kcp.probe_wait = 0 + } + + // flush window probing commands + if (kcp.probe & IKCP_ASK_SEND) != 0 { + seg.cmd = IKCP_CMD_WASK + size := len(buffer) - len(ptr) + if size+IKCP_OVERHEAD > int(kcp.mtu) { + kcp.output(buffer, size) + ptr = buffer + } + ptr = seg.encode(ptr) + } + + // flush window probing commands + if (kcp.probe & IKCP_ASK_TELL) != 0 { + seg.cmd = IKCP_CMD_WINS + size := len(buffer) - len(ptr) + if size+IKCP_OVERHEAD > int(kcp.mtu) { + kcp.output(buffer, size) + ptr = buffer + } + ptr = seg.encode(ptr) + } + + kcp.probe = 0 + + // calculate window size + cwnd := _imin_(kcp.snd_wnd, kcp.rmt_wnd) + if kcp.nocwnd == 0 { + cwnd = _imin_(kcp.cwnd, cwnd) + } + + count := 0 + for k := range kcp.snd_queue { + if _itimediff(kcp.snd_nxt, kcp.snd_una+cwnd) >= 0 { + break + } + newseg := kcp.snd_queue[k] + newseg.conv = kcp.conv + newseg.cmd = IKCP_CMD_PUSH + newseg.wnd = seg.wnd + newseg.ts = current + newseg.sn = kcp.snd_nxt + newseg.una = kcp.rcv_nxt + newseg.resendts = current + newseg.rto = kcp.rx_rto + newseg.fastack = 0 + newseg.xmit = 0 + kcp.snd_buf = append(kcp.snd_buf, newseg) + kcp.snd_nxt++ + count++ + kcp.snd_queue[k].data = nil + } + kcp.snd_queue = kcp.snd_queue[count:] + + // calculate resent + resent := uint32(kcp.fastresend) + if kcp.fastresend <= 0 { + resent = 0xffffffff + } + rtomin := (kcp.rx_rto >> 3) + if kcp.nodelay != 0 { + rtomin = 0 + } + + // flush data segments + nque := len(kcp.snd_queue) + var lostSegs, fastRetransSegs, earlyRetransSegs uint64 + for k := range kcp.snd_buf { + segment := &kcp.snd_buf[k] + needsend := false + if segment.xmit == 0 { + needsend = true + segment.xmit++ + segment.rto = kcp.rx_rto + segment.resendts = current + segment.rto + rtomin + } else if _itimediff(current, segment.resendts) >= 0 { + needsend = true + segment.xmit++ + kcp.xmit++ + if kcp.nodelay == 0 { + segment.rto += kcp.rx_rto + } else { + segment.rto += kcp.rx_rto / 2 + } + segment.resendts = current + segment.rto + lost = true + lostSegs++ + } else if segment.fastack >= resent { + needsend = true + segment.xmit++ + segment.fastack = 0 + segment.resendts = current + segment.rto + change++ + fastRetransSegs++ + } else if segment.fastack > 0 && nque == 0 { + // early retransmit + needsend = true + segment.xmit++ + segment.fastack = 0 + segment.resendts = current + segment.rto + change++ + earlyRetransSegs++ + } + + if needsend { + segment.ts = current + segment.wnd = seg.wnd + segment.una = kcp.rcv_nxt + + size := len(buffer) - len(ptr) + need := IKCP_OVERHEAD + len(segment.data) + + if size+need > int(kcp.mtu) { + kcp.output(buffer, size) + ptr = buffer + } + + ptr = segment.encode(ptr) + copy(ptr, segment.data) + ptr = ptr[len(segment.data):] + + if segment.xmit >= kcp.dead_link { + kcp.state = 0xFFFFFFFF + } + } + } + + atomic.AddUint64(&DefaultSnmp.RetransSegs, lostSegs+fastRetransSegs+earlyRetransSegs) + atomic.AddUint64(&DefaultSnmp.LostSegs, lostSegs) + atomic.AddUint64(&DefaultSnmp.EarlyRetransSegs, earlyRetransSegs) + atomic.AddUint64(&DefaultSnmp.FastRetransSegs, fastRetransSegs) + + // flash remain segments + size := len(buffer) - len(ptr) + if size > 0 { + kcp.output(buffer, size) + } + + // update ssthresh + // rate halving, https://tools.ietf.org/html/rfc6937 + if change != 0 { + inflight := kcp.snd_nxt - kcp.snd_una + kcp.ssthresh = inflight / 2 + if kcp.ssthresh < IKCP_THRESH_MIN { + kcp.ssthresh = IKCP_THRESH_MIN + } + kcp.cwnd = kcp.ssthresh + resent + kcp.incr = kcp.cwnd * kcp.mss + } + + // congestion control, https://tools.ietf.org/html/rfc5681 + if lost { + kcp.ssthresh = cwnd / 2 + if kcp.ssthresh < IKCP_THRESH_MIN { + kcp.ssthresh = IKCP_THRESH_MIN + } + kcp.cwnd = 1 + kcp.incr = kcp.mss + } + + if kcp.cwnd < 1 { + kcp.cwnd = 1 + kcp.incr = kcp.mss + } +} + +// Update updates state (call it repeatedly, every 10ms-100ms), or you can ask +// ikcp_check when to call it again (without ikcp_input/_send calling). +// 'current' - current timestamp in millisec. +func (kcp *KCP) Update(current uint32) { + var slap int32 + + kcp.current = current + + if kcp.updated == 0 { + kcp.updated = 1 + kcp.ts_flush = kcp.current + } + + slap = _itimediff(kcp.current, kcp.ts_flush) + + if slap >= 10000 || slap < -10000 { + kcp.ts_flush = kcp.current + slap = 0 + } + + if slap >= 0 { + kcp.ts_flush += kcp.interval + if _itimediff(kcp.current, kcp.ts_flush) >= 0 { + kcp.ts_flush = kcp.current + kcp.interval + } + kcp.flush() + } +} + +// Check determines when should you invoke ikcp_update: +// returns when you should invoke ikcp_update in millisec, if there +// is no ikcp_input/_send calling. you can call ikcp_update in that +// time, instead of call update repeatly. +// Important to reduce unnacessary ikcp_update invoking. use it to +// schedule ikcp_update (eg. implementing an epoll-like mechanism, +// or optimize ikcp_update when handling massive kcp connections) +func (kcp *KCP) Check(current uint32) uint32 { + ts_flush := kcp.ts_flush + tm_flush := int32(0x7fffffff) + tm_packet := int32(0x7fffffff) + minimal := uint32(0) + if kcp.updated == 0 { + return current + } + + if _itimediff(current, ts_flush) >= 10000 || + _itimediff(current, ts_flush) < -10000 { + ts_flush = current + } + + if _itimediff(current, ts_flush) >= 0 { + return current + } + + tm_flush = _itimediff(ts_flush, current) + + for k := range kcp.snd_buf { + seg := &kcp.snd_buf[k] + diff := _itimediff(seg.resendts, current) + if diff <= 0 { + return current + } + if diff < tm_packet { + tm_packet = diff + } + } + + minimal = uint32(tm_packet) + if tm_packet >= tm_flush { + minimal = uint32(tm_flush) + } + if minimal >= kcp.interval { + minimal = kcp.interval + } + + return current + minimal +} + +// SetMtu changes MTU size, default is 1400 +func (kcp *KCP) SetMtu(mtu int) int { + if mtu < 50 || mtu < IKCP_OVERHEAD { + return -1 + } + buffer := make([]byte, (mtu+IKCP_OVERHEAD)*3) + if buffer == nil { + return -2 + } + kcp.mtu = uint32(mtu) + kcp.mss = kcp.mtu - IKCP_OVERHEAD + kcp.buffer = buffer + return 0 +} + +// NoDelay options +// fastest: ikcp_nodelay(kcp, 1, 20, 2, 1) +// nodelay: 0:disable(default), 1:enable +// interval: internal update timer interval in millisec, default is 100ms +// resend: 0:disable fast resend(default), 1:enable fast resend +// nc: 0:normal congestion control(default), 1:disable congestion control +func (kcp *KCP) NoDelay(nodelay, interval, resend, nc int) int { + if nodelay >= 0 { + kcp.nodelay = uint32(nodelay) + if nodelay != 0 { + kcp.rx_minrto = IKCP_RTO_NDL + } else { + kcp.rx_minrto = IKCP_RTO_MIN + } + } + if interval >= 0 { + if interval > 5000 { + interval = 5000 + } else if interval < 10 { + interval = 10 + } + kcp.interval = uint32(interval) + } + if resend >= 0 { + kcp.fastresend = int32(resend) + } + if nc >= 0 { + kcp.nocwnd = int32(nc) + } + return 0 +} + +// WndSize sets maximum window size: sndwnd=32, rcvwnd=32 by default +func (kcp *KCP) WndSize(sndwnd, rcvwnd int) int { + if sndwnd > 0 { + kcp.snd_wnd = uint32(sndwnd) + } + if rcvwnd > 0 { + kcp.rcv_wnd = uint32(rcvwnd) + } + return 0 +} + +// WaitSnd gets how many packet is waiting to be sent +func (kcp *KCP) WaitSnd() int { + return len(kcp.snd_buf) + len(kcp.snd_queue) +} diff --git a/vendor/gopkg.in/xtaci/kcp-go.v2/sess.go b/vendor/gopkg.in/xtaci/kcp-go.v2/sess.go new file mode 100644 index 0000000..737b99d --- /dev/null +++ b/vendor/gopkg.in/xtaci/kcp-go.v2/sess.go @@ -0,0 +1,901 @@ +package kcp + +import ( + "crypto/rand" + "encoding/binary" + "io" + "net" + "sync" + "sync/atomic" + "time" + + "github.com/pkg/errors" + + "github.com/klauspost/crc32" + + "golang.org/x/net/ipv4" +) + +// Option defines extra options +type Option interface{} + +// OptionWithConvId defines conversation id +type OptionWithConvId struct { + Id uint32 +} + +type errTimeout struct { + error +} + +func (errTimeout) Timeout() bool { return true } +func (errTimeout) Temporary() bool { return true } +func (errTimeout) Error() string { return "i/o timeout" } + +const ( + defaultWndSize = 128 // default window size, in packet + nonceSize = 16 // magic number + crcSize = 4 // 4bytes packet checksum + cryptHeaderSize = nonceSize + crcSize + mtuLimit = 2048 + txQueueLimit = 8192 + rxFecLimit = 8192 + defaultKeepAliveInterval = 10 * time.Second +) + +type ( + // UDPSession defines a KCP session implemented by UDP + UDPSession struct { + kcp *KCP // the core ARQ + l *Listener // point to server listener if it's a server socket + fec *FEC // forward error correction + conn net.PacketConn // the underlying packet socket + block BlockCrypt + remote net.Addr + rd time.Time // read deadline + wd time.Time // write deadline + sockbuff []byte // kcp receiving is based on packet, I turn it into stream + die chan struct{} + chReadEvent chan struct{} + chWriteEvent chan struct{} + chTicker chan time.Time + chUDPOutput chan []byte + headerSize int + ackNoDelay bool + isClosed bool + keepAliveInterval time.Duration + xmitBuf sync.Pool + mu sync.Mutex + } + + setReadBuffer interface { + SetReadBuffer(bytes int) error + } + + setWriteBuffer interface { + SetWriteBuffer(bytes int) error + } +) + +// newUDPSession create a new udp session for client or server +func newUDPSession(conv uint32, dataShards, parityShards int, l *Listener, conn net.PacketConn, remote net.Addr, block BlockCrypt) *UDPSession { + sess := new(UDPSession) + sess.chTicker = make(chan time.Time, 1) + sess.chUDPOutput = make(chan []byte, txQueueLimit) + sess.die = make(chan struct{}) + sess.chReadEvent = make(chan struct{}, 1) + sess.chWriteEvent = make(chan struct{}, 1) + sess.remote = remote + sess.conn = conn + sess.keepAliveInterval = defaultKeepAliveInterval + sess.l = l + sess.block = block + sess.fec = newFEC(rxFecLimit, dataShards, parityShards) + sess.xmitBuf.New = func() interface{} { + return make([]byte, mtuLimit) + } + // calculate header size + if sess.block != nil { + sess.headerSize += cryptHeaderSize + } + if sess.fec != nil { + sess.headerSize += fecHeaderSizePlus2 + } + + sess.kcp = NewKCP(conv, func(buf []byte, size int) { + if size >= IKCP_OVERHEAD { + ext := sess.xmitBuf.Get().([]byte)[:sess.headerSize+size] + copy(ext[sess.headerSize:], buf) + select { + case sess.chUDPOutput <- ext: + case <-sess.die: + } + } + }) + sess.kcp.WndSize(defaultWndSize, defaultWndSize) + sess.kcp.SetMtu(IKCP_MTU_DEF - sess.headerSize) + + go sess.updateTask() + go sess.outputTask() + if sess.l == nil { // it's a client connection + go sess.readLoop() + atomic.AddUint64(&DefaultSnmp.ActiveOpens, 1) + } else { + atomic.AddUint64(&DefaultSnmp.PassiveOpens, 1) + } + currestab := atomic.AddUint64(&DefaultSnmp.CurrEstab, 1) + maxconn := atomic.LoadUint64(&DefaultSnmp.MaxConn) + if currestab > maxconn { + atomic.CompareAndSwapUint64(&DefaultSnmp.MaxConn, maxconn, currestab) + } + + return sess +} + +// Read implements the Conn Read method. +func (s *UDPSession) Read(b []byte) (n int, err error) { + for { + s.mu.Lock() + if len(s.sockbuff) > 0 { // copy from buffer + n = copy(b, s.sockbuff) + s.sockbuff = s.sockbuff[n:] + s.mu.Unlock() + return n, nil + } + + if s.isClosed { + s.mu.Unlock() + return 0, errors.New("broken pipe") + } + + if !s.rd.IsZero() { + if time.Now().After(s.rd) { // timeout + s.mu.Unlock() + return 0, errTimeout{} + } + } + + if n := s.kcp.PeekSize(); n > 0 { // data arrived + if len(b) >= n { + s.kcp.Recv(b) + } else { + buf := make([]byte, n) + s.kcp.Recv(buf) + n = copy(b, buf) + s.sockbuff = buf[n:] // store remaining bytes into sockbuff for next read + } + s.mu.Unlock() + atomic.AddUint64(&DefaultSnmp.BytesReceived, uint64(n)) + return n, nil + } + + var timeout <-chan time.Time + if !s.rd.IsZero() { + delay := s.rd.Sub(time.Now()) + timeout = time.After(delay) + } + s.mu.Unlock() + + // wait for read event or timeout + select { + case <-s.chReadEvent: + case <-timeout: + case <-s.die: + } + } +} + +// Write implements the Conn Write method. +func (s *UDPSession) Write(b []byte) (n int, err error) { + for { + s.mu.Lock() + if s.isClosed { + s.mu.Unlock() + return 0, errors.New("broken pipe") + } + + if !s.wd.IsZero() { + if time.Now().After(s.wd) { // timeout + s.mu.Unlock() + return 0, errTimeout{} + } + } + + if s.kcp.WaitSnd() < 2*int(s.kcp.snd_wnd) { + n = len(b) + max := s.kcp.mss << 8 + for { + if len(b) <= int(max) { // in most cases + s.kcp.Send(b) + break + } else { + s.kcp.Send(b[:max]) + b = b[max:] + } + } + s.kcp.current = currentMs() + s.kcp.flush() + s.mu.Unlock() + atomic.AddUint64(&DefaultSnmp.BytesSent, uint64(n)) + return n, nil + } + + var timeout <-chan time.Time + if !s.wd.IsZero() { + delay := s.wd.Sub(time.Now()) + timeout = time.After(delay) + } + s.mu.Unlock() + + // wait for write event or timeout + select { + case <-s.chWriteEvent: + case <-timeout: + case <-s.die: + } + } +} + +// Close closes the connection. +func (s *UDPSession) Close() error { + s.mu.Lock() + defer s.mu.Unlock() + if s.isClosed { + return errors.New("broken pipe") + } + close(s.die) + s.isClosed = true + atomic.AddUint64(&DefaultSnmp.CurrEstab, ^uint64(0)) + if s.l == nil { // client socket close + return s.conn.Close() + } + + return nil +} + +// LocalAddr returns the local network address. The Addr returned is shared by all invocations of LocalAddr, so do not modify it. +func (s *UDPSession) LocalAddr() net.Addr { return s.conn.LocalAddr() } + +// RemoteAddr returns the remote network address. The Addr returned is shared by all invocations of RemoteAddr, so do not modify it. +func (s *UDPSession) RemoteAddr() net.Addr { return s.remote } + +// SetDeadline sets the deadline associated with the listener. A zero time value disables the deadline. +func (s *UDPSession) SetDeadline(t time.Time) error { + s.mu.Lock() + defer s.mu.Unlock() + s.rd = t + s.wd = t + return nil +} + +// SetReadDeadline implements the Conn SetReadDeadline method. +func (s *UDPSession) SetReadDeadline(t time.Time) error { + s.mu.Lock() + defer s.mu.Unlock() + s.rd = t + return nil +} + +// SetWriteDeadline implements the Conn SetWriteDeadline method. +func (s *UDPSession) SetWriteDeadline(t time.Time) error { + s.mu.Lock() + defer s.mu.Unlock() + s.wd = t + return nil +} + +// SetWindowSize set maximum window size +func (s *UDPSession) SetWindowSize(sndwnd, rcvwnd int) { + s.mu.Lock() + defer s.mu.Unlock() + s.kcp.WndSize(sndwnd, rcvwnd) +} + +// SetMtu sets the maximum transmission unit +func (s *UDPSession) SetMtu(mtu int) { + s.mu.Lock() + defer s.mu.Unlock() + s.kcp.SetMtu(mtu - s.headerSize) +} + +// SetStreamMode toggles the stream mode on/off +func (s *UDPSession) SetStreamMode(enable bool) { + s.mu.Lock() + defer s.mu.Unlock() + if enable { + s.kcp.stream = 1 + } else { + s.kcp.stream = 0 + } +} + +// SetACKNoDelay changes ack flush option, set true to flush ack immediately, +func (s *UDPSession) SetACKNoDelay(nodelay bool) { + s.mu.Lock() + defer s.mu.Unlock() + s.ackNoDelay = nodelay +} + +// SetNoDelay calls nodelay() of kcp +func (s *UDPSession) SetNoDelay(nodelay, interval, resend, nc int) { + s.mu.Lock() + defer s.mu.Unlock() + s.kcp.NoDelay(nodelay, interval, resend, nc) +} + +// SetDSCP sets the 6bit DSCP field of IP header, no effect if it's accepted from Listener +func (s *UDPSession) SetDSCP(dscp int) error { + s.mu.Lock() + defer s.mu.Unlock() + if s.l == nil { + if nc, ok := s.conn.(net.Conn); ok { + return ipv4.NewConn(nc).SetTOS(dscp << 2) + } + } + return nil +} + +// SetReadBuffer sets the socket read buffer, no effect if it's accepted from Listener +func (s *UDPSession) SetReadBuffer(bytes int) error { + s.mu.Lock() + defer s.mu.Unlock() + if s.l == nil { + if nc, ok := s.conn.(setReadBuffer); ok { + return nc.SetReadBuffer(bytes) + } + } + return nil +} + +// SetWriteBuffer sets the socket write buffer, no effect if it's accepted from Listener +func (s *UDPSession) SetWriteBuffer(bytes int) error { + s.mu.Lock() + defer s.mu.Unlock() + if s.l == nil { + if nc, ok := s.conn.(setWriteBuffer); ok { + return nc.SetWriteBuffer(bytes) + } + } + return nil +} + +// SetKeepAlive changes per-connection NAT keepalive interval; 0 to disable, default to 10s +func (s *UDPSession) SetKeepAlive(interval int) { + s.mu.Lock() + defer s.mu.Unlock() + s.keepAliveInterval = time.Duration(interval) * time.Second +} + +// writeTo wraps write method for client & listener +func (s *UDPSession) writeTo(b []byte, addr net.Addr) (int, error) { + if s.l == nil { + if nc, ok := s.conn.(io.Writer); ok { + return nc.Write(b) + } + } + return s.conn.WriteTo(b, addr) +} + +func (s *UDPSession) outputTask() { + // offset pre-compute + fecOffset := 0 + if s.block != nil { + fecOffset = cryptHeaderSize + } + szOffset := fecOffset + fecHeaderSize + + // fec data group + var fecGroup [][]byte + var fecCnt int + var fecMaxSize int + if s.fec != nil { + fecGroup = make([][]byte, s.fec.shardSize) + for k := range fecGroup { + fecGroup[k] = make([]byte, mtuLimit) + } + } + + // keepalive + var lastPing time.Time + ticker := time.NewTicker(5 * time.Second) + defer ticker.Stop() + + for { + select { + case ext := <-s.chUDPOutput: + var ecc [][]byte + if s.fec != nil { + s.fec.markData(ext[fecOffset:]) + // explicit size + binary.LittleEndian.PutUint16(ext[szOffset:], uint16(len(ext[szOffset:]))) + + // copy data to fec group + xorBytes(fecGroup[fecCnt], fecGroup[fecCnt], fecGroup[fecCnt]) + copy(fecGroup[fecCnt], ext) + fecCnt++ + if len(ext) > fecMaxSize { + fecMaxSize = len(ext) + } + + // calculate Reed-Solomon Erasure Code + if fecCnt == s.fec.dataShards { + ecc = s.fec.calcECC(fecGroup, szOffset, fecMaxSize) + for k := range ecc { + s.fec.markFEC(ecc[k][fecOffset:]) + ecc[k] = ecc[k][:fecMaxSize] + } + fecCnt = 0 + fecMaxSize = 0 + } + } + + if s.block != nil { + io.ReadFull(rand.Reader, ext[:nonceSize]) + checksum := crc32.ChecksumIEEE(ext[cryptHeaderSize:]) + binary.LittleEndian.PutUint32(ext[nonceSize:], checksum) + s.block.Encrypt(ext, ext) + + if ecc != nil { + for k := range ecc { + io.ReadFull(rand.Reader, ecc[k][:nonceSize]) + checksum := crc32.ChecksumIEEE(ecc[k][cryptHeaderSize:]) + binary.LittleEndian.PutUint32(ecc[k][nonceSize:], checksum) + s.block.Encrypt(ecc[k], ecc[k]) + } + } + } + + //if rand.Intn(100) < 80 { + if n, err := s.writeTo(ext, s.remote); err == nil { + atomic.AddUint64(&DefaultSnmp.OutSegs, 1) + atomic.AddUint64(&DefaultSnmp.OutBytes, uint64(n)) + } + //} + + if ecc != nil { + for k := range ecc { + if n, err := s.writeTo(ecc[k], s.remote); err == nil { + atomic.AddUint64(&DefaultSnmp.OutSegs, 1) + atomic.AddUint64(&DefaultSnmp.OutBytes, uint64(n)) + } + } + } + xorBytes(ext, ext, ext) + s.xmitBuf.Put(ext) + case <-ticker.C: // NAT keep-alive + if len(s.chUDPOutput) == 0 { + s.mu.Lock() + interval := s.keepAliveInterval + s.mu.Unlock() + if interval > 0 && time.Now().After(lastPing.Add(interval)) { + buf := make([]byte, 2) + io.ReadFull(rand.Reader, buf) + rnd := int(binary.LittleEndian.Uint16(buf)) + sz := rnd%(IKCP_MTU_DEF-s.headerSize-IKCP_OVERHEAD) + s.headerSize + IKCP_OVERHEAD + ping := make([]byte, sz) + io.ReadFull(rand.Reader, ping) + s.writeTo(ping, s.remote) + lastPing = time.Now() + } + } + case <-s.die: + return + } + } +} + +// kcp update, input loop +func (s *UDPSession) updateTask() { + var tc <-chan time.Time + if s.l == nil { // client + ticker := time.NewTicker(10 * time.Millisecond) + tc = ticker.C + defer ticker.Stop() + } else { + tc = s.chTicker + } + + for { + select { + case <-tc: + s.mu.Lock() + current := currentMs() + s.kcp.Update(current) + if s.kcp.WaitSnd() < 2*int(s.kcp.snd_wnd) { + s.notifyWriteEvent() + } + s.mu.Unlock() + case <-s.die: + if s.l != nil { // has listener + select { + case s.l.chDeadlinks <- s.remote: + case <-s.l.die: + } + } + return + } + } +} + +// GetConv gets conversation id of a session +func (s *UDPSession) GetConv() uint32 { + return s.kcp.conv +} + +func (s *UDPSession) notifyReadEvent() { + select { + case s.chReadEvent <- struct{}{}: + default: + } +} + +func (s *UDPSession) notifyWriteEvent() { + select { + case s.chWriteEvent <- struct{}{}: + default: + } +} + +func (s *UDPSession) kcpInput(data []byte) { + current := currentMs() + if s.fec != nil { + f := s.fec.decode(data) + if f.flag == typeData || f.flag == typeFEC { + if f.flag == typeFEC { + atomic.AddUint64(&DefaultSnmp.FECSegs, 1) + } + + if recovers := s.fec.input(f); recovers != nil { + s.mu.Lock() + s.kcp.current = current + for k := range recovers { + sz := binary.LittleEndian.Uint16(recovers[k]) + if int(sz) <= len(recovers[k]) && sz >= 2 { + s.kcp.Input(recovers[k][2:sz], false) + } else { + atomic.AddUint64(&DefaultSnmp.FECErrs, 1) + } + } + s.mu.Unlock() + atomic.AddUint64(&DefaultSnmp.FECRecovered, uint64(len(recovers))) + } + } + if f.flag == typeData { + s.mu.Lock() + s.kcp.current = current + s.kcp.Input(data[fecHeaderSizePlus2:], true) + s.mu.Unlock() + } + } else { + s.mu.Lock() + s.kcp.current = current + s.kcp.Input(data, true) + s.mu.Unlock() + } + + // notify reader + s.mu.Lock() + if n := s.kcp.PeekSize(); n > 0 { + s.notifyReadEvent() + } + if s.ackNoDelay { + s.kcp.current = current + s.kcp.flush() + } + s.mu.Unlock() + atomic.AddUint64(&DefaultSnmp.InSegs, 1) +} + +func (s *UDPSession) receiver(ch chan []byte) { + for { + data := s.xmitBuf.Get().([]byte)[:mtuLimit] + if n, _, err := s.conn.ReadFrom(data); err == nil && n >= s.headerSize+IKCP_OVERHEAD { + select { + case ch <- data[:n]: + case <-s.die: + } + } else if err != nil { + return + } else { + atomic.AddUint64(&DefaultSnmp.InErrs, 1) + } + } +} + +// read loop for client session +func (s *UDPSession) readLoop() { + chPacket := make(chan []byte, txQueueLimit) + go s.receiver(chPacket) + + for { + select { + case data := <-chPacket: + raw := data + dataValid := false + if s.block != nil { + s.block.Decrypt(data, data) + data = data[nonceSize:] + checksum := crc32.ChecksumIEEE(data[crcSize:]) + if checksum == binary.LittleEndian.Uint32(data) { + data = data[crcSize:] + dataValid = true + } else { + atomic.AddUint64(&DefaultSnmp.InCsumErrors, 1) + } + } else if s.block == nil { + dataValid = true + } + + if dataValid { + s.kcpInput(data) + } + xorBytes(raw, raw, raw) + s.xmitBuf.Put(raw) + case <-s.die: + return + } + } +} + +type ( + // Listener defines a server listening for connections + Listener struct { + block BlockCrypt + dataShards, parityShards int + fec *FEC // for fec init test + conn net.PacketConn + sessions map[string]*UDPSession + chAccepts chan *UDPSession + chDeadlinks chan net.Addr + headerSize int + die chan struct{} + rxbuf sync.Pool + rd atomic.Value + wd atomic.Value + } + + packet struct { + from net.Addr + data []byte + } +) + +// monitor incoming data for all connections of server +func (l *Listener) monitor() { + chPacket := make(chan packet, txQueueLimit) + go l.receiver(chPacket) + ticker := time.NewTicker(10 * time.Millisecond) + defer ticker.Stop() + for { + select { + case p := <-chPacket: + raw := p.data + data := p.data + from := p.from + dataValid := false + if l.block != nil { + l.block.Decrypt(data, data) + data = data[nonceSize:] + checksum := crc32.ChecksumIEEE(data[crcSize:]) + if checksum == binary.LittleEndian.Uint32(data) { + data = data[crcSize:] + dataValid = true + } else { + atomic.AddUint64(&DefaultSnmp.InCsumErrors, 1) + } + } else if l.block == nil { + dataValid = true + } + + if dataValid { + addr := from.String() + s, ok := l.sessions[addr] + if !ok { // new session + var conv uint32 + convValid := false + if l.fec != nil { + isfec := binary.LittleEndian.Uint16(data[4:]) + if isfec == typeData { + conv = binary.LittleEndian.Uint32(data[fecHeaderSizePlus2:]) + convValid = true + } + } else { + conv = binary.LittleEndian.Uint32(data) + convValid = true + } + + if convValid { + s := newUDPSession(conv, l.dataShards, l.parityShards, l, l.conn, from, l.block) + s.kcpInput(data) + l.sessions[addr] = s + l.chAccepts <- s + } + } else { + s.kcpInput(data) + } + } + + xorBytes(raw, raw, raw) + l.rxbuf.Put(raw) + case deadlink := <-l.chDeadlinks: + delete(l.sessions, deadlink.String()) + case <-l.die: + return + case <-ticker.C: + now := time.Now() + for _, s := range l.sessions { + select { + case s.chTicker <- now: + default: + } + } + } + } +} + +func (l *Listener) receiver(ch chan packet) { + for { + data := l.rxbuf.Get().([]byte)[:mtuLimit] + if n, from, err := l.conn.ReadFrom(data); err == nil && n >= l.headerSize+IKCP_OVERHEAD { + ch <- packet{from, data[:n]} + } else if err != nil { + return + } else { + atomic.AddUint64(&DefaultSnmp.InErrs, 1) + } + } +} + +// SetReadBuffer sets the socket read buffer for the Listener +func (l *Listener) SetReadBuffer(bytes int) error { + if nc, ok := l.conn.(setReadBuffer); ok { + return nc.SetReadBuffer(bytes) + } + return nil +} + +// SetWriteBuffer sets the socket write buffer for the Listener +func (l *Listener) SetWriteBuffer(bytes int) error { + if nc, ok := l.conn.(setWriteBuffer); ok { + return nc.SetWriteBuffer(bytes) + } + return nil +} + +// SetDSCP sets the 6bit DSCP field of IP header +func (l *Listener) SetDSCP(dscp int) error { + if nc, ok := l.conn.(net.Conn); ok { + return ipv4.NewConn(nc).SetTOS(dscp << 2) + } + return nil +} + +// Accept implements the Accept method in the Listener interface; it waits for the next call and returns a generic Conn. +func (l *Listener) Accept() (net.Conn, error) { + return l.AcceptKCP() +} + +// AcceptKCP accepts a KCP connection +func (l *Listener) AcceptKCP() (*UDPSession, error) { + var timeout <-chan time.Time + if tdeadline, ok := l.rd.Load().(time.Time); ok && !tdeadline.IsZero() { + timeout = time.After(tdeadline.Sub(time.Now())) + } + + select { + case <-timeout: + return nil, &errTimeout{} + case c := <-l.chAccepts: + return c, nil + case <-l.die: + return nil, errors.New("listener stopped") + } +} + +// SetDeadline sets the deadline associated with the listener. A zero time value disables the deadline. +func (l *Listener) SetDeadline(t time.Time) error { + l.SetReadDeadline(t) + l.SetWriteDeadline(t) + return nil +} + +// SetReadDeadline implements the Conn SetReadDeadline method. +func (l *Listener) SetReadDeadline(t time.Time) error { + l.rd.Store(t) + return nil +} + +// SetWriteDeadline implements the Conn SetWriteDeadline method. +func (l *Listener) SetWriteDeadline(t time.Time) error { + l.wd.Store(t) + return nil +} + +// Close stops listening on the UDP address. Already Accepted connections are not closed. +func (l *Listener) Close() error { + close(l.die) + return l.conn.Close() +} + +// Addr returns the listener's network address, The Addr returned is shared by all invocations of Addr, so do not modify it. +func (l *Listener) Addr() net.Addr { + return l.conn.LocalAddr() +} + +// Listen listens for incoming KCP packets addressed to the local address laddr on the network "udp", +func Listen(laddr string) (*Listener, error) { + return ListenWithOptions(laddr, nil, 0, 0) +} + +// ListenWithOptions listens for incoming KCP packets addressed to the local address laddr on the network "udp" with packet encryption, +// dataShards, parityShards defines Reed-Solomon Erasure Coding parameters +func ListenWithOptions(laddr string, block BlockCrypt, dataShards, parityShards int) (*Listener, error) { + udpaddr, err := net.ResolveUDPAddr("udp", laddr) + if err != nil { + return nil, errors.Wrap(err, "net.ResolveUDPAddr") + } + conn, err := net.ListenUDP("udp", udpaddr) + if err != nil { + return nil, errors.Wrap(err, "net.ListenUDP") + } + + l := new(Listener) + l.conn = conn + l.sessions = make(map[string]*UDPSession) + l.chAccepts = make(chan *UDPSession, 1024) + l.chDeadlinks = make(chan net.Addr, 1024) + l.die = make(chan struct{}) + l.dataShards = dataShards + l.parityShards = parityShards + l.block = block + l.fec = newFEC(rxFecLimit, dataShards, parityShards) + l.rxbuf.New = func() interface{} { + return make([]byte, mtuLimit) + } + + // calculate header size + if l.block != nil { + l.headerSize += cryptHeaderSize + } + if l.fec != nil { + l.headerSize += fecHeaderSizePlus2 + } + + go l.monitor() + return l, nil +} + +// Dial connects to the remote address "raddr" on the network "udp" +func Dial(raddr string) (*UDPSession, error) { + return DialWithOptions(raddr, nil, 0, 0) +} + +// DialWithOptions connects to the remote address "raddr" on the network "udp" with packet encryption +func DialWithOptions(raddr string, block BlockCrypt, dataShards, parityShards int, opts ...Option) (*UDPSession, error) { + udpaddr, err := net.ResolveUDPAddr("udp", raddr) + if err != nil { + return nil, errors.Wrap(err, "net.ResolveUDPAddr") + } + + udpconn, err := net.DialUDP("udp", nil, udpaddr) + if err != nil { + return nil, errors.Wrap(err, "net.DialUDP") + } + + buf := make([]byte, 4) + io.ReadFull(rand.Reader, buf) + convid := binary.LittleEndian.Uint32(buf) + for k := range opts { + switch opt := opts[k].(type) { + case OptionWithConvId: + convid = opt.Id + default: + return nil, errors.New("unrecognized option") + } + } + return newUDPSession(convid, dataShards, parityShards, nil, udpconn, udpaddr, block), nil +} + +func currentMs() uint32 { + return uint32(time.Now().UnixNano() / int64(time.Millisecond)) +} diff --git a/vendor/gopkg.in/xtaci/kcp-go.v2/shannon.jpg b/vendor/gopkg.in/xtaci/kcp-go.v2/shannon.jpg new file mode 100644 index 0000000000000000000000000000000000000000..055236ae1623cd5b5adee3b19d943b4a191744ac GIT binary patch literal 52964 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 P%WeXUHqdzM&42&dr1C>o literal 0 HcmV?d00001 diff --git a/vendor/gopkg.in/xtaci/kcp-go.v2/snmp.go b/vendor/gopkg.in/xtaci/kcp-go.v2/snmp.go new file mode 100644 index 0000000..997b163 --- /dev/null +++ b/vendor/gopkg.in/xtaci/kcp-go.v2/snmp.go @@ -0,0 +1,62 @@ +package kcp + +import "sync/atomic" + +// Snmp defines network statistics indicator +type Snmp struct { + BytesSent uint64 // payload bytes sent + BytesReceived uint64 + MaxConn uint64 + ActiveOpens uint64 + PassiveOpens uint64 + CurrEstab uint64 + InErrs uint64 + InCsumErrors uint64 // checksum errors + InSegs uint64 + OutSegs uint64 + OutBytes uint64 // udp bytes sent + RetransSegs uint64 + FastRetransSegs uint64 + EarlyRetransSegs uint64 + LostSegs uint64 + RepeatSegs uint64 + FECRecovered uint64 + FECErrs uint64 + FECSegs uint64 // fec segments received +} + +func newSnmp() *Snmp { + return new(Snmp) +} + +// Copy make a copy of current snmp snapshot +func (s *Snmp) Copy() *Snmp { + d := newSnmp() + d.BytesSent = atomic.LoadUint64(&s.BytesSent) + d.BytesReceived = atomic.LoadUint64(&s.BytesReceived) + d.MaxConn = atomic.LoadUint64(&s.MaxConn) + d.ActiveOpens = atomic.LoadUint64(&s.ActiveOpens) + d.PassiveOpens = atomic.LoadUint64(&s.PassiveOpens) + d.CurrEstab = atomic.LoadUint64(&s.CurrEstab) + d.InErrs = atomic.LoadUint64(&s.InErrs) + d.InCsumErrors = atomic.LoadUint64(&s.InCsumErrors) + d.InSegs = atomic.LoadUint64(&s.InSegs) + d.OutSegs = atomic.LoadUint64(&s.OutSegs) + d.OutBytes = atomic.LoadUint64(&s.OutBytes) + d.RetransSegs = atomic.LoadUint64(&s.RetransSegs) + d.FastRetransSegs = atomic.LoadUint64(&s.FastRetransSegs) + d.EarlyRetransSegs = atomic.LoadUint64(&s.EarlyRetransSegs) + d.LostSegs = atomic.LoadUint64(&s.LostSegs) + d.RepeatSegs = atomic.LoadUint64(&s.RepeatSegs) + d.FECSegs = atomic.LoadUint64(&s.FECSegs) + d.FECErrs = atomic.LoadUint64(&s.FECErrs) + d.FECRecovered = atomic.LoadUint64(&s.FECRecovered) + return d +} + +// DefaultSnmp is the global KCP connection statistics collector +var DefaultSnmp *Snmp + +func init() { + DefaultSnmp = newSnmp() +} diff --git a/vendor/gopkg.in/xtaci/kcp-go.v2/xor.go b/vendor/gopkg.in/xtaci/kcp-go.v2/xor.go new file mode 100644 index 0000000..5d21095 --- /dev/null +++ b/vendor/gopkg.in/xtaci/kcp-go.v2/xor.go @@ -0,0 +1,105 @@ +// 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. + +package kcp + +import ( + "runtime" + "unsafe" +) + +const wordSize = int(unsafe.Sizeof(uintptr(0))) +const supportsUnaligned = runtime.GOARCH == "386" || runtime.GOARCH == "amd64" || runtime.GOARCH == "ppc64" || runtime.GOARCH == "ppc64le" || runtime.GOARCH == "s390x" + +// fastXORBytes xors in bulk. It only works on architectures that +// support unaligned read/writes. +func fastXORBytes(dst, a, b []byte) int { + n := len(a) + if len(b) < n { + n = len(b) + } + + w := n / wordSize + if w > 0 { + wordBytes := w * wordSize + fastXORWords(dst[:wordBytes], a[:wordBytes], b[:wordBytes]) + } + + for i := (n - n%wordSize); i < n; i++ { + dst[i] = a[i] ^ b[i] + } + + return n +} + +func safeXORBytes(dst, a, b []byte) int { + n := len(a) + if len(b) < n { + n = len(b) + } + ex := n % 8 + for i := 0; i < ex; i++ { + dst[i] = a[i] ^ b[i] + } + + for i := ex; i < n; i += 8 { + dst[i] = a[i] ^ b[i] + dst[i+1] = a[i+1] ^ b[i+1] + dst[i+2] = a[i+2] ^ b[i+2] + dst[i+3] = a[i+3] ^ b[i+3] + + dst[i+4] = a[i+4] ^ b[i+4] + dst[i+5] = a[i+5] ^ b[i+5] + dst[i+6] = a[i+6] ^ b[i+6] + dst[i+7] = a[i+7] ^ b[i+7] + } + return n +} + +// xorBytes xors the bytes in a and b. The destination is assumed to have enough +// space. Returns the number of bytes xor'd. +func xorBytes(dst, a, b []byte) int { + if supportsUnaligned { + return fastXORBytes(dst, a, b) + } else { + // TODO(hanwen): if (dst, a, b) have common alignment + // we could still try fastXORBytes. It is not clear + // how often this happens, and it's only worth it if + // the block encryption itself is hardware + // accelerated. + return safeXORBytes(dst, a, b) + } +} + +// fastXORWords XORs multiples of 4 or 8 bytes (depending on architecture.) +// The arguments are assumed to be of equal length. +func fastXORWords(dst, a, b []byte) { + dw := *(*[]uintptr)(unsafe.Pointer(&dst)) + aw := *(*[]uintptr)(unsafe.Pointer(&a)) + bw := *(*[]uintptr)(unsafe.Pointer(&b)) + n := len(b) / wordSize + ex := n % 8 + for i := 0; i < ex; i++ { + dw[i] = aw[i] ^ bw[i] + } + + for i := ex; i < n; i += 8 { + dw[i] = aw[i] ^ bw[i] + dw[i+1] = aw[i+1] ^ bw[i+1] + dw[i+2] = aw[i+2] ^ bw[i+2] + dw[i+3] = aw[i+3] ^ bw[i+3] + dw[i+4] = aw[i+4] ^ bw[i+4] + dw[i+5] = aw[i+5] ^ bw[i+5] + dw[i+6] = aw[i+6] ^ bw[i+6] + dw[i+7] = aw[i+7] ^ bw[i+7] + } +} + +func xorWords(dst, a, b []byte) { + if supportsUnaligned { + fastXORWords(dst, a, b) + } else { + safeXORBytes(dst, a, b) + } +} diff --git a/vendor/gopkg.in/xtaci/smux.v1/.gitignore b/vendor/gopkg.in/xtaci/smux.v1/.gitignore new file mode 100644 index 0000000..daf913b --- /dev/null +++ b/vendor/gopkg.in/xtaci/smux.v1/.gitignore @@ -0,0 +1,24 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof diff --git a/vendor/gopkg.in/xtaci/smux.v1/.travis.yml b/vendor/gopkg.in/xtaci/smux.v1/.travis.yml new file mode 100644 index 0000000..1ad083c --- /dev/null +++ b/vendor/gopkg.in/xtaci/smux.v1/.travis.yml @@ -0,0 +1,15 @@ +language: go +go: + - tip + +before_install: + - go get -t -v ./... + +install: + - go get github.com/xtaci/smux + +script: + - go test -coverprofile=coverage.txt -covermode=atomic -bench . + +after_success: + - bash <(curl -s https://codecov.io/bash) diff --git a/vendor/gopkg.in/xtaci/smux.v1/LICENSE b/vendor/gopkg.in/xtaci/smux.v1/LICENSE new file mode 100644 index 0000000..37c57a7 --- /dev/null +++ b/vendor/gopkg.in/xtaci/smux.v1/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016 xtaci + +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/gopkg.in/xtaci/smux.v1/README.md b/vendor/gopkg.in/xtaci/smux.v1/README.md new file mode 100644 index 0000000..9a760d2 --- /dev/null +++ b/vendor/gopkg.in/xtaci/smux.v1/README.md @@ -0,0 +1,97 @@ +# SMUX +[![GoDoc][1]][2] [![MIT licensed][3]][4] [![Build Status][5]][6] [![Go Report Card][7]][8] [![Coverage Statusd][9]][10] + +smux + +[1]: https://godoc.org/github.com/xtaci/smux?status.svg +[2]: https://godoc.org/github.com/xtaci/smux +[3]: https://img.shields.io/badge/license-MIT-blue.svg +[4]: LICENSE +[5]: https://travis-ci.org/xtaci/smux.svg?branch=master +[6]: https://travis-ci.org/xtaci/smux +[7]: https://goreportcard.com/badge/github.com/xtaci/smux +[8]: https://goreportcard.com/report/github.com/xtaci/smux +[9]: https://codecov.io/gh/xtaci/smux/branch/master/graph/badge.svg +[10]: https://codecov.io/gh/xtaci/smux + +## Introduction + +Smux (***S***imple ***MU***ltiple***X***ing) is a multiplexing library for Golang. It relies on an underlying connection to provide reliability and ordering, such as TCP or [KCP](https://github.com/xtaci/kcp-go), and provides stream-oriented multiplexing. + +## Features + +1. Tiny, less than 600 LOC. +2. ***Token bucket*** controlled receiving, which provides smoother bandwidth graph(see picture below). +3. Session-wide receive buffer, which is shared among streams. +4. Minimized header(8Bytes), maximized payload. + +![smooth bandwidth curve](curve.jpg) + +## Documentation + +For complete documentation, see the associated [Godoc](https://godoc.org/github.com/xtaci/smux). + +## Specification + +``` +VERSION(1B) | CMD(1B) | LENGTH(2B) | STREAMID(4B) | DATA(LENGTH) +``` + +## Usage + +The API of smux are mostly taken from [yamux](https://github.com/hashicorp/yamux) + +```go + +func client() { + // Get a TCP connection + conn, err := net.Dial(...) + if err != nil { + panic(err) + } + + // Setup client side of smux + session, err := smux.Client(conn, nil) + if err != nil { + panic(err) + } + + // Open a new stream + stream, err := session.OpenStream() + if err != nil { + panic(err) + } + + // Stream implements io.ReadWriteCloser + stream.Write([]byte("ping")) +} + +func server() { + // Accept a TCP connection + conn, err := listener.Accept() + if err != nil { + panic(err) + } + + // Setup server side of smux + session, err := smux.Server(conn, nil) + if err != nil { + panic(err) + } + + // Accept a stream + stream, err := session.AcceptStream() + if err != nil { + panic(err) + } + + // Listen for a message + buf := make([]byte, 4) + stream.Read(buf) +} + +``` + +## Status + +Stable diff --git a/vendor/gopkg.in/xtaci/smux.v1/curve.jpg b/vendor/gopkg.in/xtaci/smux.v1/curve.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3fc4863f48f45fb92eeb8ca928ff5560c3eb6cfb GIT binary patch literal 106626 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

      hBy17FvOmKn8BK30z51Qr);ommd3Q~n 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%0A&i73jN#(38T*{c%Syt48FJO$##T^6r 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 literal 0 HcmV?d00001 diff --git a/vendor/gopkg.in/xtaci/smux.v1/frame.go b/vendor/gopkg.in/xtaci/smux.v1/frame.go new file mode 100644 index 0000000..334fea3 --- /dev/null +++ b/vendor/gopkg.in/xtaci/smux.v1/frame.go @@ -0,0 +1,60 @@ +package smux + +import ( + "encoding/binary" + "fmt" +) + +const ( + version = 1 +) + +const ( // cmds + cmdSYN byte = iota // stream open + cmdRST // stream close + cmdPSH // data push + cmdNOP // no operation +) + +const ( + sizeOfVer = 1 + sizeOfCmd = 1 + sizeOfLength = 2 + sizeOfSid = 4 + headerSize = sizeOfVer + sizeOfCmd + sizeOfSid + sizeOfLength +) + +// Frame defines a packet from or to be multiplexed into a single connection +type Frame struct { + ver byte + cmd byte + sid uint32 + data []byte +} + +func newFrame(cmd byte, sid uint32) Frame { + return Frame{ver: version, cmd: cmd, sid: sid} +} + +type rawHeader []byte + +func (h rawHeader) Version() byte { + return h[0] +} + +func (h rawHeader) Cmd() byte { + return h[1] +} + +func (h rawHeader) Length() uint16 { + return binary.LittleEndian.Uint16(h[2:]) +} + +func (h rawHeader) StreamID() uint32 { + return binary.LittleEndian.Uint32(h[4:]) +} + +func (h rawHeader) String() string { + return fmt.Sprintf("Version:%d Cmd:%d StreamID:%d Length:%d", + h.Version(), h.Cmd(), h.StreamID(), h.Length()) +} diff --git a/vendor/gopkg.in/xtaci/smux.v1/mux.go b/vendor/gopkg.in/xtaci/smux.v1/mux.go new file mode 100644 index 0000000..afcf58b --- /dev/null +++ b/vendor/gopkg.in/xtaci/smux.v1/mux.go @@ -0,0 +1,80 @@ +package smux + +import ( + "fmt" + "io" + "time" + + "github.com/pkg/errors" +) + +// Config is used to tune the Smux session +type Config struct { + // KeepAliveInterval is how often to send a NOP command to the remote + KeepAliveInterval time.Duration + + // KeepAliveTimeout is how long the session + // will be closed if no data has arrived + KeepAliveTimeout time.Duration + + // MaxFrameSize is used to control the maximum + // frame size to sent to the remote + MaxFrameSize int + + // MaxReceiveBuffer is used to control the maximum + // number of data in the buffer pool + MaxReceiveBuffer int +} + +// DefaultConfig is used to return a default configuration +func DefaultConfig() *Config { + return &Config{ + KeepAliveInterval: 10 * time.Second, + KeepAliveTimeout: 30 * time.Second, + MaxFrameSize: 4096, + MaxReceiveBuffer: 4194304, + } +} + +// VerifyConfig is used to verify the sanity of configuration +func VerifyConfig(config *Config) error { + if config.KeepAliveInterval == 0 { + return errors.New("keep-alive interval must be positive") + } + if config.KeepAliveTimeout < config.KeepAliveInterval { + return fmt.Errorf("keep-alive timeout must be larger than keep-alive interval") + } + if config.MaxFrameSize <= 0 { + return errors.New("max frame size must be positive") + } + if config.MaxFrameSize > 65535 { + return errors.New("max frame size must not be larger than 65535") + } + if config.MaxReceiveBuffer <= 0 { + return errors.New("max receive buffer must be positive") + } + return nil +} + +// Server is used to initialize a new server-side connection. +func Server(conn io.ReadWriteCloser, config *Config) (*Session, error) { + if config == nil { + config = DefaultConfig() + } + if err := VerifyConfig(config); err != nil { + return nil, err + } + return newSession(config, conn, false), nil +} + +// Client is used to initialize a new client-side connection. +func Client(conn io.ReadWriteCloser, config *Config) (*Session, error) { + if config == nil { + config = DefaultConfig() + } + + if err := VerifyConfig(config); err != nil { + return nil, err + } + return newSession(config, conn, true), nil +} diff --git a/vendor/gopkg.in/xtaci/smux.v1/mux.jpg b/vendor/gopkg.in/xtaci/smux.v1/mux.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dde2e11aa782b734b5f94b373873d1675cf32b2b GIT binary patch literal 6199 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 0 { // return remaining tokens to the bucket + if atomic.AddInt32(&s.bucket, int32(n)) > 0 { + s.bucketCond.Signal() + } + } + delete(s.streams, sid) + s.streamLock.Unlock() +} + +// returnTokens is called by stream to return token after read +func (s *Session) returnTokens(n int) { + if atomic.AddInt32(&s.bucket, int32(n)) > 0 { + s.bucketCond.Signal() + } +} + +// session read a frame from underlying connection +// it's data is pointed to the input buffer +func (s *Session) readFrame(buffer []byte) (f Frame, err error) { + if _, err := io.ReadFull(s.conn, buffer[:headerSize]); err != nil { + return f, errors.Wrap(err, "readFrame") + } + + dec := rawHeader(buffer) + if dec.Version() != version { + return f, errors.New(errInvalidProtocol) + } + + f.ver = dec.Version() + f.cmd = dec.Cmd() + f.sid = dec.StreamID() + if length := dec.Length(); length > 0 { + if _, err := io.ReadFull(s.conn, buffer[headerSize:headerSize+length]); err != nil { + return f, errors.Wrap(err, "readFrame") + } + f.data = buffer[headerSize : headerSize+length] + } + return f, nil +} + +// recvLoop keeps on reading from underlying connection if tokens are available +func (s *Session) recvLoop() { + buffer := make([]byte, (1<<16)+headerSize) + for { + s.bucketCond.L.Lock() + for atomic.LoadInt32(&s.bucket) <= 0 && !s.IsClosed() { + s.bucketCond.Wait() + } + s.bucketCond.L.Unlock() + + if s.IsClosed() { + return + } + + if f, err := s.readFrame(buffer); err == nil { + atomic.StoreInt32(&s.dataReady, 1) + + switch f.cmd { + case cmdNOP: + case cmdSYN: + s.streamLock.Lock() + if _, ok := s.streams[f.sid]; !ok { + stream := newStream(f.sid, s.config.MaxFrameSize, s) + s.streams[f.sid] = stream + select { + case s.chAccepts <- stream: + case <-s.die: + } + } + s.streamLock.Unlock() + case cmdRST: + s.streamLock.Lock() + if stream, ok := s.streams[f.sid]; ok { + stream.markRST() + stream.notifyReadEvent() + } + s.streamLock.Unlock() + case cmdPSH: + s.streamLock.Lock() + if stream, ok := s.streams[f.sid]; ok { + atomic.AddInt32(&s.bucket, -int32(len(f.data))) + stream.pushBytes(f.data) + stream.notifyReadEvent() + } + s.streamLock.Unlock() + default: + s.Close() + return + } + } else { + s.Close() + return + } + } +} + +func (s *Session) keepalive() { + tickerPing := time.NewTicker(s.config.KeepAliveInterval) + tickerTimeout := time.NewTicker(s.config.KeepAliveTimeout) + defer tickerPing.Stop() + defer tickerTimeout.Stop() + for { + select { + case <-tickerPing.C: + s.writeFrame(newFrame(cmdNOP, 0)) + s.bucketCond.Signal() // force a signal to the recvLoop + case <-tickerTimeout.C: + if !atomic.CompareAndSwapInt32(&s.dataReady, 1, 0) { + s.Close() + return + } + case <-s.die: + return + } + } +} + +// writeFrame writes the frame to the underlying connection +// and returns the number of bytes written if successful +func (s *Session) writeFrame(f Frame) (n int, err error) { + buf := s.xmitPool.Get().([]byte) + buf[0] = f.ver + buf[1] = f.cmd + binary.LittleEndian.PutUint16(buf[2:], uint16(len(f.data))) + binary.LittleEndian.PutUint32(buf[4:], f.sid) + copy(buf[headerSize:], f.data) + + s.writeLock.Lock() + n, err = s.conn.Write(buf[:headerSize+len(f.data)]) + s.writeLock.Unlock() + s.xmitPool.Put(buf) + return n, err +} diff --git a/vendor/gopkg.in/xtaci/smux.v1/stream.go b/vendor/gopkg.in/xtaci/smux.v1/stream.go new file mode 100644 index 0000000..f7e28c7 --- /dev/null +++ b/vendor/gopkg.in/xtaci/smux.v1/stream.go @@ -0,0 +1,153 @@ +package smux + +import ( + "bytes" + "sync" + "sync/atomic" + + "github.com/pkg/errors" +) + +// Stream implements io.ReadWriteCloser +type Stream struct { + id uint32 + rstflag int32 + sess *Session + buffer bytes.Buffer + bufferLock sync.Mutex + frameSize int + chReadEvent chan struct{} // notify a read event + die chan struct{} // flag the stream has closed + dieLock sync.Mutex +} + +// newStream initiates a Stream struct +func newStream(id uint32, frameSize int, sess *Session) *Stream { + s := new(Stream) + s.id = id + s.chReadEvent = make(chan struct{}, 1) + s.frameSize = frameSize + s.sess = sess + s.die = make(chan struct{}) + return s +} + +// Read implements io.ReadWriteCloser +func (s *Stream) Read(b []byte) (n int, err error) { +READ: + select { + case <-s.die: + return 0, errors.New(errBrokenPipe) + default: + } + + s.bufferLock.Lock() + n, err = s.buffer.Read(b) + s.bufferLock.Unlock() + + if n > 0 { + s.sess.returnTokens(n) + return n, nil + } else if atomic.LoadInt32(&s.rstflag) == 1 { + _ = s.Close() + return 0, errors.New(errConnReset) + } + + select { + case <-s.chReadEvent: + goto READ + case <-s.die: + return 0, errors.New(errBrokenPipe) + } +} + +// Write implements io.ReadWriteCloser +func (s *Stream) Write(b []byte) (n int, err error) { + select { + case <-s.die: + return 0, errors.New(errBrokenPipe) + default: + } + + frames := s.split(b, cmdPSH, s.id) + for k := range frames { + if _, err := s.sess.writeFrame(frames[k]); err != nil { + return 0, err + } + } + return len(b), nil +} + +// Close implements io.ReadWriteCloser +func (s *Stream) Close() error { + s.dieLock.Lock() + defer s.dieLock.Unlock() + + select { + case <-s.die: + return errors.New(errBrokenPipe) + default: + close(s.die) + s.sess.streamClosed(s.id) + _, err := s.sess.writeFrame(newFrame(cmdRST, s.id)) + return err + } +} + +// session closes the stream +func (s *Stream) sessionClose() { + s.dieLock.Lock() + defer s.dieLock.Unlock() + + select { + case <-s.die: + default: + close(s.die) + } +} + +// pushBytes a slice into buffer +func (s *Stream) pushBytes(p []byte) { + s.bufferLock.Lock() + s.buffer.Write(p) + s.bufferLock.Unlock() +} + +// recycleTokens transform remaining bytes to tokens(will truncate buffer) +func (s *Stream) recycleTokens() (n int) { + s.bufferLock.Lock() + n = s.buffer.Len() + s.buffer.Reset() + s.bufferLock.Unlock() + return +} + +// split large byte buffer into smaller frames, reference only +func (s *Stream) split(bts []byte, cmd byte, sid uint32) []Frame { + var frames []Frame + for len(bts) > s.frameSize { + frame := newFrame(cmd, sid) + frame.data = bts[:s.frameSize] + bts = bts[s.frameSize:] + frames = append(frames, frame) + } + if len(bts) > 0 { + frame := newFrame(cmd, sid) + frame.data = bts + frames = append(frames, frame) + } + return frames +} + +// notify read event +func (s *Stream) notifyReadEvent() { + select { + case s.chReadEvent <- struct{}{}: + default: + } +} + +// mark this stream has been reset +func (s *Stream) markRST() { + atomic.StoreInt32(&s.rstflag, 1) +}

      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%0AAvLm#F`< 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%0Dd{}~T)JD&yTU#C@*U61};; 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]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

    2. -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�A{6mId?H2I0X(!& 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�)pQvMvy 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 $no+D!kJmxJd1x&K}%bKE@O46a1 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