gitextract_smkgriw_/ ├── .codecov.yml ├── .githooks/ │ ├── README.md │ └── pre-commit ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug-report.md │ │ ├── config.yml │ │ ├── doc.md │ │ ├── enhancement.md │ │ ├── feature.md │ │ ├── question.md │ │ └── release.md │ ├── actions/ │ │ ├── go-check-setup/ │ │ │ └── action.yml │ │ └── go-test-setup/ │ │ └── action.yml │ └── workflows/ │ ├── generated-pr.yml │ ├── go-check-config.json │ ├── go-check.yml │ ├── go-test-config.json │ ├── go-test-template.yml │ ├── go-test.yml │ ├── interop-test.yml │ ├── link-check.yml │ ├── markdown-links-config.json │ ├── release-check.yml │ ├── releaser.yml │ ├── stale.yml │ ├── tagpush.yml │ └── upstream.yml ├── .gitignore ├── .golangci.yml ├── CHANGELOG.md ├── FUNDING.json ├── LICENSE ├── README.md ├── SECURITY.md ├── config/ │ ├── config.go │ ├── config_test.go │ ├── host.go │ └── quic.go ├── core/ │ ├── alias.go │ ├── connmgr/ │ │ ├── decay.go │ │ ├── gater.go │ │ ├── manager.go │ │ ├── null.go │ │ └── presets.go │ ├── control/ │ │ └── disconnect.go │ ├── crypto/ │ │ ├── bench_test.go │ │ ├── ecdsa.go │ │ ├── ecdsa_test.go │ │ ├── ed25519.go │ │ ├── ed25519_test.go │ │ ├── fixture_test.go │ │ ├── key.go │ │ ├── key_test.go │ │ ├── key_to_stdlib.go │ │ ├── pb/ │ │ │ ├── crypto.pb.go │ │ │ └── crypto.proto │ │ ├── rsa_common.go │ │ ├── rsa_go.go │ │ ├── rsa_test.go │ │ ├── secp256k1.go │ │ ├── secp256k1_test.go │ │ └── test_data/ │ │ ├── 0.priv │ │ ├── 0.pub │ │ ├── 0.sig │ │ ├── 2.priv │ │ ├── 2.pub │ │ ├── 2.sig │ │ ├── 3.priv │ │ ├── 3.pub │ │ └── 3.sig │ ├── discovery/ │ │ ├── discovery.go │ │ └── options.go │ ├── event/ │ │ ├── addrs.go │ │ ├── bus.go │ │ ├── dht.go │ │ ├── doc.go │ │ ├── identify.go │ │ ├── nattype.go │ │ ├── network.go │ │ ├── protocol.go │ │ └── reachability.go │ ├── host/ │ │ ├── helpers.go │ │ └── host.go │ ├── internal/ │ │ └── catch/ │ │ ├── catch.go │ │ └── catch_test.go │ ├── metrics/ │ │ ├── bandwidth.go │ │ ├── bandwidth_test.go │ │ └── reporter.go │ ├── network/ │ │ ├── conn.go │ │ ├── context.go │ │ ├── context_test.go │ │ ├── errors.go │ │ ├── mocks/ │ │ │ ├── mock_conn_management_scope.go │ │ │ ├── mock_peer_scope.go │ │ │ ├── mock_protocol_scope.go │ │ │ ├── mock_resource_manager.go │ │ │ ├── mock_resource_scope_span.go │ │ │ ├── mock_stream_management_scope.go │ │ │ └── network.go │ │ ├── mux.go │ │ ├── nattype.go │ │ ├── network.go │ │ ├── notifee.go │ │ ├── notifee_test.go │ │ ├── rcmgr.go │ │ └── stream.go │ ├── peer/ │ │ ├── addrinfo.go │ │ ├── addrinfo_serde.go │ │ ├── addrinfo_test.go │ │ ├── pb/ │ │ │ ├── peer_record.pb.go │ │ │ └── peer_record.proto │ │ ├── peer.go │ │ ├── peer_serde.go │ │ ├── peer_serde_test.go │ │ ├── peer_test.go │ │ ├── record.go │ │ └── record_test.go │ ├── peerstore/ │ │ ├── helpers.go │ │ └── peerstore.go │ ├── pnet/ │ │ ├── codec.go │ │ ├── codec_test.go │ │ ├── env.go │ │ ├── error.go │ │ ├── error_test.go │ │ └── protector.go │ ├── protocol/ │ │ ├── id.go │ │ └── switch.go │ ├── record/ │ │ ├── envelope.go │ │ ├── envelope_test.go │ │ ├── pb/ │ │ │ ├── envelope.pb.go │ │ │ └── envelope.proto │ │ ├── record.go │ │ └── record_test.go │ ├── routing/ │ │ ├── options.go │ │ ├── query.go │ │ ├── query_serde.go │ │ ├── query_test.go │ │ └── routing.go │ ├── sec/ │ │ └── security.go │ ├── test/ │ │ ├── addrs.go │ │ ├── crypto.go │ │ ├── errors.go │ │ ├── mockclock.go │ │ ├── mockclock_test.go │ │ └── peer.go │ └── transport/ │ └── transport.go ├── dashboards/ │ ├── README.md │ ├── autonat/ │ │ └── autonat.json │ ├── autonatv2/ │ │ └── autonatv2.json │ ├── autorelay/ │ │ └── autorelay.json │ ├── dashboard.yml │ ├── datasources.yml │ ├── docker-compose-linux.yml │ ├── docker-compose.base.yml │ ├── eventbus/ │ │ └── eventbus.json │ ├── holepunch/ │ │ └── holepunch.json │ ├── host-addrs/ │ │ └── host-addrs.json │ ├── identify/ │ │ └── identify.json │ ├── prometheus.yml │ ├── relaysvc/ │ │ └── relaysvc.json │ ├── resource-manager/ │ │ ├── README.md │ │ └── resource-manager.json │ └── swarm/ │ └── swarm.json ├── defaults.go ├── docs/ │ └── flaky-tests.md ├── examples/ │ ├── README.md │ ├── go.mod │ ├── go.sum │ ├── ipfs-camp-2019/ │ │ ├── README.md │ │ ├── go.mod │ │ └── go.sum │ ├── metrics-and-dashboards/ │ │ ├── README.md │ │ ├── compose.yml │ │ ├── go-libp2p-node.Dockerfile │ │ ├── main.go │ │ └── prometheus.yml │ ├── pubsub/ │ │ ├── README.md │ │ └── basic-chat-with-rendezvous/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── go.mod │ │ ├── go.sum │ │ └── main.go │ └── testutils/ │ ├── logharness.go │ └── net.go ├── fx_options_test.go ├── go.mod ├── go.sum ├── gologshim/ │ ├── gologshim.go │ └── gologshim_test.go ├── leaky_tests/ │ ├── README.md │ └── leaky_test.go ├── libp2p.go ├── libp2p_test.go ├── limits.go ├── options.go ├── options_filter.go ├── p2p/ │ ├── canonicallog/ │ │ ├── canonicallog.go │ │ └── canonicallog_test.go │ ├── discovery/ │ │ ├── backoff/ │ │ │ ├── backoff.go │ │ │ ├── backoff_test.go │ │ │ ├── backoffcache.go │ │ │ ├── backoffcache_test.go │ │ │ ├── backoffconnector.go │ │ │ └── backoffconnector_test.go │ │ ├── mdns/ │ │ │ ├── mdns.go │ │ │ └── mdns_test.go │ │ ├── mocks/ │ │ │ └── mocks.go │ │ ├── routing/ │ │ │ ├── routing.go │ │ │ └── routing_test.go │ │ └── util/ │ │ └── util.go │ ├── host/ │ │ ├── autonat/ │ │ │ ├── autonat.go │ │ │ ├── autonat_test.go │ │ │ ├── client.go │ │ │ ├── dialpolicy.go │ │ │ ├── dialpolicy_test.go │ │ │ ├── interface.go │ │ │ ├── metrics.go │ │ │ ├── metrics_test.go │ │ │ ├── notify.go │ │ │ ├── options.go │ │ │ ├── pb/ │ │ │ │ ├── autonat.pb.go │ │ │ │ └── autonat.proto │ │ │ ├── proto.go │ │ │ ├── svc.go │ │ │ ├── svc_test.go │ │ │ └── test/ │ │ │ ├── autonat_test.go │ │ │ └── dummy.go │ │ ├── autorelay/ │ │ │ ├── addrsplosion.go │ │ │ ├── addrsplosion_test.go │ │ │ ├── autorelay.go │ │ │ ├── autorelay_test.go │ │ │ ├── metrics.go │ │ │ ├── metrics_noalloc_test.go │ │ │ ├── options.go │ │ │ └── relay_finder.go │ │ ├── basic/ │ │ │ ├── addrs_manager.go │ │ │ ├── addrs_manager_test.go │ │ │ ├── addrs_metrics.go │ │ │ ├── addrs_metrics_test.go │ │ │ ├── addrs_reachability_tracker.go │ │ │ ├── addrs_reachability_tracker_test.go │ │ │ ├── basic_host.go │ │ │ ├── basic_host_synctest_test.go │ │ │ ├── basic_host_test.go │ │ │ ├── mock_nat_test.go │ │ │ ├── mocks.go │ │ │ ├── natmgr.go │ │ │ └── natmgr_test.go │ │ ├── blank/ │ │ │ └── blank.go │ │ ├── eventbus/ │ │ │ ├── basic.go │ │ │ ├── basic_metrics.go │ │ │ ├── basic_metrics_test.go │ │ │ ├── basic_test.go │ │ │ └── opts.go │ │ ├── observedaddrs/ │ │ │ ├── manager.go │ │ │ ├── manager_glass_test.go │ │ │ └── manager_test.go │ │ ├── peerstore/ │ │ │ ├── metrics.go │ │ │ ├── metrics_test.go │ │ │ ├── peerstore.go │ │ │ ├── pstoreds/ │ │ │ │ ├── addr_book.go │ │ │ │ ├── addr_book_gc.go │ │ │ │ ├── addr_book_gc_test.go │ │ │ │ ├── cache.go │ │ │ │ ├── cyclic_batch.go │ │ │ │ ├── deprecate.go │ │ │ │ ├── ds_test.go │ │ │ │ ├── keybook.go │ │ │ │ ├── metadata.go │ │ │ │ ├── pb/ │ │ │ │ │ ├── pstore.pb.go │ │ │ │ │ └── pstore.proto │ │ │ │ ├── peerstore.go │ │ │ │ └── protobook.go │ │ │ ├── pstoremem/ │ │ │ │ ├── addr_book.go │ │ │ │ ├── addr_book_test.go │ │ │ │ ├── inmem_test.go │ │ │ │ ├── keybook.go │ │ │ │ ├── metadata.go │ │ │ │ ├── peerstore.go │ │ │ │ ├── peerstore_test.go │ │ │ │ ├── protobook.go │ │ │ │ ├── sorting.go │ │ │ │ └── sorting_test.go │ │ │ └── test/ │ │ │ ├── addr_book_suite.go │ │ │ ├── benchmarks_suite.go │ │ │ ├── keybook_suite.go │ │ │ ├── peerstore_suite.go │ │ │ └── utils.go │ │ ├── pstoremanager/ │ │ │ ├── mock_peerstore_test.go │ │ │ ├── pstoremanager.go │ │ │ └── pstoremanager_test.go │ │ ├── relaysvc/ │ │ │ ├── relay.go │ │ │ └── relay_test.go │ │ ├── resource-manager/ │ │ │ ├── README.md │ │ │ ├── allowlist.go │ │ │ ├── allowlist_test.go │ │ │ ├── conn_limiter.go │ │ │ ├── conn_limiter_test.go │ │ │ ├── conn_rate_limiter.go │ │ │ ├── docs/ │ │ │ │ └── allowlist.md │ │ │ ├── error.go │ │ │ ├── extapi.go │ │ │ ├── limit.go │ │ │ ├── limit_config_test.backwards-compat.json │ │ │ ├── limit_config_test.go │ │ │ ├── limit_config_test.json │ │ │ ├── limit_config_test_default.json │ │ │ ├── limit_defaults.go │ │ │ ├── limit_test.go │ │ │ ├── limits_metrics_test.go │ │ │ ├── metrics.go │ │ │ ├── noalloc_test.go │ │ │ ├── obs/ │ │ │ │ └── obs.go │ │ │ ├── rcmgr.go │ │ │ ├── rcmgr_test.go │ │ │ ├── scope.go │ │ │ ├── scope_test.go │ │ │ ├── stats.go │ │ │ ├── stats_test.go │ │ │ ├── sys_not_unix.go │ │ │ ├── sys_unix.go │ │ │ ├── sys_windows.go │ │ │ └── trace.go │ │ └── routed/ │ │ ├── routed.go │ │ └── routed_test.go │ ├── http/ │ │ ├── auth/ │ │ │ ├── auth.go │ │ │ ├── auth_test.go │ │ │ ├── client.go │ │ │ ├── internal/ │ │ │ │ └── handshake/ │ │ │ │ ├── alloc_test.go │ │ │ │ ├── client.go │ │ │ │ ├── handshake.go │ │ │ │ ├── handshake_test.go │ │ │ │ └── server.go │ │ │ └── server.go │ │ ├── example_test.go │ │ ├── libp2phttp.go │ │ ├── libp2phttp_test.go │ │ ├── options.go │ │ └── ping/ │ │ └── ping.go │ ├── metricshelper/ │ │ ├── conn.go │ │ ├── conn_test.go │ │ ├── dir.go │ │ ├── pool.go │ │ ├── pool_test.go │ │ ├── registerer.go │ │ └── registerer_test.go │ ├── muxer/ │ │ ├── testsuite/ │ │ │ └── mux.go │ │ └── yamux/ │ │ ├── conn.go │ │ ├── stream.go │ │ ├── transport.go │ │ └── transport_test.go │ ├── net/ │ │ ├── README.md │ │ ├── conngater/ │ │ │ ├── conngater.go │ │ │ └── conngater_test.go │ │ ├── connmgr/ │ │ │ ├── bench_test.go │ │ │ ├── connmgr.go │ │ │ ├── connmgr_test.go │ │ │ ├── decay.go │ │ │ ├── decay_test.go │ │ │ └── options.go │ │ ├── gostream/ │ │ │ ├── addr.go │ │ │ ├── conn.go │ │ │ ├── gostream.go │ │ │ ├── gostream_test.go │ │ │ └── listener.go │ │ ├── mock/ │ │ │ ├── complement.go │ │ │ ├── interface.go │ │ │ ├── log2.txt │ │ │ ├── mock.go │ │ │ ├── mock_conn.go │ │ │ ├── mock_link.go │ │ │ ├── mock_net.go │ │ │ ├── mock_notif_test.go │ │ │ ├── mock_peernet.go │ │ │ ├── mock_printer.go │ │ │ ├── mock_stream.go │ │ │ ├── mock_test.go │ │ │ └── ratelimiter.go │ │ ├── nat/ │ │ │ ├── internal/ │ │ │ │ └── nat/ │ │ │ │ ├── LICENSE │ │ │ │ ├── README.md │ │ │ │ ├── nat.go │ │ │ │ ├── natpmp.go │ │ │ │ └── upnp.go │ │ │ ├── mock_nat_test.go │ │ │ ├── nat.go │ │ │ └── nat_test.go │ │ ├── pnet/ │ │ │ ├── protector.go │ │ │ ├── psk_conn.go │ │ │ └── psk_conn_test.go │ │ ├── reuseport/ │ │ │ ├── dial.go │ │ │ ├── dialer.go │ │ │ ├── listen.go │ │ │ ├── reuseport.go │ │ │ ├── reuseport_plan9.go │ │ │ ├── reuseport_posix.go │ │ │ ├── reuseport_test.go │ │ │ ├── transport.go │ │ │ └── transport_test.go │ │ ├── swarm/ │ │ │ ├── black_hole_detector.go │ │ │ ├── black_hole_detector_test.go │ │ │ ├── clock.go │ │ │ ├── connectedness_event_emitter.go │ │ │ ├── dial_error.go │ │ │ ├── dial_error_test.go │ │ │ ├── dial_ranker.go │ │ │ ├── dial_ranker_test.go │ │ │ ├── dial_sync.go │ │ │ ├── dial_sync_test.go │ │ │ ├── dial_test.go │ │ │ ├── dial_worker.go │ │ │ ├── dial_worker_test.go │ │ │ ├── limiter.go │ │ │ ├── limiter_test.go │ │ │ ├── peers_test.go │ │ │ ├── resolve_test.go │ │ │ ├── simul_test.go │ │ │ ├── swarm.go │ │ │ ├── swarm_addr.go │ │ │ ├── swarm_addr_test.go │ │ │ ├── swarm_conn.go │ │ │ ├── swarm_dial.go │ │ │ ├── swarm_dial_test.go │ │ │ ├── swarm_event_test.go │ │ │ ├── swarm_listen.go │ │ │ ├── swarm_metrics.go │ │ │ ├── swarm_metrics_test.go │ │ │ ├── swarm_net_test.go │ │ │ ├── swarm_notif_test.go │ │ │ ├── swarm_stream.go │ │ │ ├── swarm_test.go │ │ │ ├── swarm_transport.go │ │ │ ├── testing/ │ │ │ │ ├── testing.go │ │ │ │ └── testing_test.go │ │ │ ├── transport_test.go │ │ │ └── util_test.go │ │ └── upgrader/ │ │ ├── conn.go │ │ ├── gater_test.go │ │ ├── listener.go │ │ ├── listener_test.go │ │ ├── threshold.go │ │ ├── upgrader.go │ │ └── upgrader_test.go │ ├── protocol/ │ │ ├── autonatv2/ │ │ │ ├── autonat.go │ │ │ ├── autonat_test.go │ │ │ ├── client.go │ │ │ ├── metrics.go │ │ │ ├── metrics_test.go │ │ │ ├── msg_reader.go │ │ │ ├── options.go │ │ │ ├── pb/ │ │ │ │ ├── autonatv2.pb.go │ │ │ │ └── autonatv2.proto │ │ │ ├── server.go │ │ │ └── server_test.go │ │ ├── circuitv2/ │ │ │ ├── client/ │ │ │ │ ├── client.go │ │ │ │ ├── conn.go │ │ │ │ ├── dial.go │ │ │ │ ├── handlers.go │ │ │ │ ├── listen.go │ │ │ │ ├── reservation.go │ │ │ │ ├── reservation_test.go │ │ │ │ └── transport.go │ │ │ ├── pb/ │ │ │ │ ├── circuit.pb.go │ │ │ │ ├── circuit.proto │ │ │ │ ├── voucher.pb.go │ │ │ │ └── voucher.proto │ │ │ ├── proto/ │ │ │ │ ├── protocol.go │ │ │ │ ├── voucher.go │ │ │ │ └── voucher_test.go │ │ │ ├── relay/ │ │ │ │ ├── acl.go │ │ │ │ ├── constraints.go │ │ │ │ ├── constraints_test.go │ │ │ │ ├── metrics.go │ │ │ │ ├── metrics_test.go │ │ │ │ ├── options.go │ │ │ │ ├── relay.go │ │ │ │ ├── relay_priv_test.go │ │ │ │ ├── relay_test.go │ │ │ │ └── resources.go │ │ │ └── util/ │ │ │ ├── io.go │ │ │ └── pbconv.go │ │ ├── holepunch/ │ │ │ ├── filter.go │ │ │ ├── holepunch_test.go │ │ │ ├── holepuncher.go │ │ │ ├── metrics.go │ │ │ ├── metrics_noalloc_test.go │ │ │ ├── metrics_test.go │ │ │ ├── pb/ │ │ │ │ ├── holepunch.pb.go │ │ │ │ └── holepunch.proto │ │ │ ├── svc.go │ │ │ ├── tracer.go │ │ │ └── util.go │ │ ├── identify/ │ │ │ ├── id.go │ │ │ ├── id_glass_test.go │ │ │ ├── id_test.go │ │ │ ├── internal/ │ │ │ │ └── user-agent/ │ │ │ │ └── user_agent.go │ │ │ ├── metrics.go │ │ │ ├── metrics_test.go │ │ │ ├── opts.go │ │ │ ├── pb/ │ │ │ │ ├── identify.pb.go │ │ │ │ └── identify.proto │ │ │ └── snapshot_test.go │ │ └── ping/ │ │ ├── ping.go │ │ └── ping_test.go │ ├── security/ │ │ ├── insecure/ │ │ │ ├── insecure.go │ │ │ ├── insecure_test.go │ │ │ └── pb/ │ │ │ ├── plaintext.pb.go │ │ │ └── plaintext.proto │ │ ├── noise/ │ │ │ ├── benchmark_test.go │ │ │ ├── crypto.go │ │ │ ├── crypto_test.go │ │ │ ├── handshake.go │ │ │ ├── pb/ │ │ │ │ ├── payload.pb.go │ │ │ │ └── payload.proto │ │ │ ├── rw.go │ │ │ ├── session.go │ │ │ ├── session_test.go │ │ │ ├── session_transport.go │ │ │ ├── transport.go │ │ │ └── transport_test.go │ │ └── tls/ │ │ ├── cmd/ │ │ │ ├── README.md │ │ │ ├── tlsdiag/ │ │ │ │ ├── client.go │ │ │ │ ├── key.go │ │ │ │ └── server.go │ │ │ └── tlsdiag.go │ │ ├── conn.go │ │ ├── crypto.go │ │ ├── crypto_test.go │ │ ├── extension.go │ │ ├── extension_test.go │ │ ├── transport.go │ │ └── transport_test.go │ ├── test/ │ │ ├── backpressure/ │ │ │ ├── backpressure.go │ │ │ └── backpressure_test.go │ │ ├── basichost/ │ │ │ └── basic_host_test.go │ │ ├── negotiation/ │ │ │ ├── muxer_test.go │ │ │ └── security_test.go │ │ ├── notifications/ │ │ │ └── notification_test.go │ │ ├── quic/ │ │ │ └── quic_test.go │ │ ├── reconnects/ │ │ │ ├── reconnect.go │ │ │ └── reconnect_test.go │ │ ├── resource-manager/ │ │ │ ├── echo.go │ │ │ ├── echo_test.go │ │ │ └── rcmgr_test.go │ │ ├── security/ │ │ │ └── bench_test.go │ │ ├── swarm/ │ │ │ └── swarm_test.go │ │ ├── transport/ │ │ │ ├── deadline_test.go │ │ │ ├── gating_test.go │ │ │ ├── mock_connection_gater_test.go │ │ │ ├── rcmgr_test.go │ │ │ └── transport_test.go │ │ └── webtransport/ │ │ └── webtransport_test.go │ └── transport/ │ ├── quic/ │ │ ├── cmd/ │ │ │ ├── client/ │ │ │ │ └── main.go │ │ │ ├── lib/ │ │ │ │ ├── lib.go │ │ │ │ └── lib_test.go │ │ │ └── server/ │ │ │ └── main.go │ │ ├── conn.go │ │ ├── conn_test.go │ │ ├── listener.go │ │ ├── listener_test.go │ │ ├── mock_connection_gater_test.go │ │ ├── stream.go │ │ ├── transport.go │ │ ├── transport_test.go │ │ └── virtuallistener.go │ ├── quicreuse/ │ │ ├── config.go │ │ ├── connmgr.go │ │ ├── connmgr_test.go │ │ ├── listener.go │ │ ├── nonquic_packetconn.go │ │ ├── options.go │ │ ├── quic_multiaddr.go │ │ ├── quic_multiaddr_test.go │ │ ├── reuse.go │ │ └── reuse_test.go │ ├── tcp/ │ │ ├── metrics.go │ │ ├── metrics_darwin.go │ │ ├── metrics_general.go │ │ ├── metrics_linux.go │ │ ├── metrics_none.go │ │ ├── metrics_test.go │ │ ├── tcp.go │ │ └── tcp_test.go │ ├── tcpreuse/ │ │ ├── connwithscope.go │ │ ├── demultiplex.go │ │ ├── demultiplex_test.go │ │ ├── dialer.go │ │ ├── internal/ │ │ │ └── sampledconn/ │ │ │ ├── sampledconn.go │ │ │ └── sampledconn_test.go │ │ ├── listener.go │ │ ├── listener_test.go │ │ └── reuseport.go │ ├── testsuite/ │ │ ├── stream_suite.go │ │ ├── transport_suite.go │ │ └── utils_suite.go │ ├── webrtc/ │ │ ├── connection.go │ │ ├── fingerprint.go │ │ ├── hex.go │ │ ├── hex_test.go │ │ ├── listener.go │ │ ├── logger.go │ │ ├── pb/ │ │ │ ├── message.pb.go │ │ │ └── message.proto │ │ ├── sdp.go │ │ ├── sdp_test.go │ │ ├── stream.go │ │ ├── stream_read.go │ │ ├── stream_test.go │ │ ├── stream_write.go │ │ ├── transport.go │ │ ├── transport_test.go │ │ └── udpmux/ │ │ ├── mux.go │ │ ├── mux_test.go │ │ └── muxed_connection.go │ ├── websocket/ │ │ ├── LICENSE-APACHE │ │ ├── LICENSE-MIT │ │ ├── addrs.go │ │ ├── addrs_test.go │ │ ├── conn.go │ │ ├── listener.go │ │ ├── websocket.go │ │ └── websocket_test.go │ └── webtransport/ │ ├── cert_manager.go │ ├── cert_manager_test.go │ ├── conn.go │ ├── crypto.go │ ├── crypto_test.go │ ├── listener.go │ ├── mock_connection_gater_test.go │ ├── multiaddr.go │ ├── multiaddr_test.go │ ├── noise_early_data.go │ ├── stream.go │ ├── transport.go │ └── transport_test.go ├── proto_test.go ├── scripts/ │ ├── .gitignore │ ├── download-protoc.sh │ ├── gen-proto.sh │ ├── mkreleaselog │ ├── print-protoc-hashes.sh │ └── test_analysis/ │ ├── cmd/ │ │ └── gotest2sql/ │ │ └── main.go │ ├── go.mod │ ├── go.sum │ ├── main.go │ └── main_test.go ├── test-plans/ │ ├── .gitignore │ ├── PingDockerfile │ ├── README.md │ ├── cmd/ │ │ └── ping/ │ │ └── main.go │ ├── go.mod │ ├── go.sum │ └── ping-version.json ├── tools.go ├── version.json └── x/ ├── rate/ │ ├── limiter.go │ └── limiter_test.go └── simlibp2p/ ├── libp2p.go └── synctest_test.go