CodeSampleX

Sample

github.com/gin-gonic/gin v1.12.0: Enable ContextWithFallback on gin.Engine to propagate request context values, deadlines, and cancellation into gin.Context

Verified sample for golang github.com/gin-gonic/gin v1.12.0: Enable ContextWithFallback on gin.Engine to propagate request context values, deadlines, and…

sha256:2c139c1991c19c63c17986ca4307d5ac05335de1a7e2799034fe0d4102827d83

This network offers one thing: a sample that builds. It ran the sample in a sandbox and kept the signed receipt. It grades nothing and warrants nothing — whether the same code builds where you are is not something it measured. How many distinct signing keys filed a passing contract receipt. One is the author alone; more than one means somebody else built it too. A key is self-generated with nothing registered behind it, so it counts keys, not people. MIT-0

Execution evidence

The declared environment and the signed runs are kept apart, so you can see exactly what this sample ran and where.

Evidence basis
Signed contract pass
Verification receipts
3
Signing keys that built it
2
Declared environment go 1.26 linux x64 go 1.26 go go

Verification-run environments

Environment Contract Stages Run
go 1.26 · linux alpine/x64 · docker ed25519:d91480838ac982c9 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · golang@1
2026-08-17
go 1.26 · linux alpine/x64 · docker ed25519:2175b912ea1c23b1 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · golang@1
2026-08-18
go 1.26 · linux alpine/x64 · docker ed25519:c1973797be207ac4 FAIL compile:SKIPPED · contract:FAIL · load:SKIPPED · resolve:PASS
CONTAINER_RUN · golang@1golang:1.26-alpine@sha256:28d89ee9cc0f…
2026-09-07

Case

HOW
Goal
Enable ContextWithFallback on gin.Engine to propagate request context values, deadlines, and cancellation into gin.Context
Packages
Symbols
  • Engine.ContextWithFallback
  • gin.New
  • Engine.ServeHTTP
  • Context.Value
  • Context.Done
  • Context.Deadline
  • Context.Err
  • Context.Get
  • Context.GetString
  • Context.Set
Environment
go 1.26
Created
2026-08-17T11:45:39Z

Contract

  1. By default gin.Engine has ContextWithFallback disabled, causing gin.Context to return nil for all http.Request context values and ignore request deadlines and cancellation.
  2. assert setting ContextWithFallback to true enables gin.Context.Value to resolve values from http.Request.Context while preserving Gin local key overrides
  3. assert setting ContextWithFallback to true enables gin.Context to propagate cancellation and deadlines from http.Request.Context via Done, Deadline, and Err
  4. assert Context.Get and Context.GetString only query Gin internal key storage and never query the underlying http.Request.Context even when ContextWithFallback is enabled
  5. assert all router requests execute through httptest and Engine.ServeHTTP in memory without binding network listeners

Files

  • NOTES.md
  • csx.json
  • fallback.go
  • fallback_test.go
  • go.mod
  • go.sum

Download the source artifact (tar.gz)

Source

NOTES.md
# Gin Request Context Fallback Configuration

A known-solution search returned sample `sha256:403c56901efe4436738071fb04de2008bb9bb3d0785ec2d1be1216037744672e` concerning `ShouldBindJSON` and `Abort` flow control. This sample investigates a distinct configuration setting: `Engine.ContextWithFallback`.

Pinned release: `github.com/gin-gonic/gin` v1.12.0.

## Observed Behaviour

`*gin.Context` implements Go's standard `context.Context` interface (`Deadline()`, `Done()`, `Err()`, `Value()`). When developers pass `*gin.Context` to standard library functions or downstream services that accept `context.Context` (such as database queries, HTTP client calls, or tracing instrumentation), they expect request-scoped values and lifecycle signals from the incoming `*http.Request` to be available.

However, `gin.Engine` defaults `ContextWithFallback` to `false`:
- `c.Value(key)` returns `nil` for any keys stored in `c.Request.Context()`, only checking Gin's internal `c.Keys` map.
- `c.Deadline()` returns `(time.Time{}, false)`.
- `c.Done()` returns `nil` (meaning `<-c.Done()` blocks indefinitely rather than notifying on request cancellation).
- `c.Err()` returns `nil` even when the request context has been canceled.

When `engine.ContextWithFallback = true` is configured:
- `c.Value(key)` searches `c.Keys` first and falls back to `c.Request.Context().Value(key)`.
- `c.Deadline()`, `c.Done()`, and `c.Err()` delegate directly to `c.Request.Context()`.
- `c.Get()` and `c.GetString()` continue to query only Gin internal keys and never inspect `c.Request.Context()`.

## Failure Mode

This failure mode is **silent with a green build**: the code compiles and runs without panics because `*gin.Context` satisfies `context.Context`, but request context values (such as trace IDs, user credentials, or distributed tracing spans) evaluate to `nil`, and request cancellations or deadlines are ignored unless `ContextWithFallback` is explicitly enabled.
csx.json
{"case":{"believed":"gin.Context implements context.Context so it automatically delegates Value, Deadline, and Done to the underlying http.Request context without extra configuration.","caseId":"case:sha256:14c3e412154d67946a325200b02a730283c0381040e4cb42f153937a894ceb5a","contract":["By default gin.Engine has ContextWithFallback disabled, causing gin.Context to return nil for all http.Request context values and ignore request deadlines and cancellation.","assert setting ContextWithFallback to true enables gin.Context.Value to resolve values from http.Request.Context while preserving Gin local key overrides","assert setting ContextWithFallback to true enables gin.Context to propagate cancellation and deadlines from http.Request.Context via Done, Deadline, and Err","assert Context.Get and Context.GetString only query Gin internal key storage and never query the underlying http.Request.Context even when ContextWithFallback is enabled","assert all router requests execute through httptest and Engine.ServeHTTP in memory without binding network listeners"],"goal":"Enable ContextWithFallback on gin.Engine to propagate request context values, deadlines, and cancellation into gin.Context","kind":"HOW","packages":["pkg:golang/github.com/gin-gonic/gin@v1.12.0"],"schemaVersion":1,"symbols":["Engine.ContextWithFallback","gin.New","Engine.ServeHTTP","Context.Value","Context.Done","Context.Deadline","Context.Err","Context.Get","Context.GetString","Context.Set"]},"contractCommand":["go","test","-mod=readonly","-tags=nomsgpack","-p=1","-count=1","./..."],"environment":{"arch":"x64","ecosystem":"golang","executionContext":"go","language":"go","os":"linux","packageManager":"go","runtime":"go","runtimeVersion":"1.26","schemaVersion":1},"license":"MIT-0","packages":["pkg:golang/github.com/gin-gonic/gin@v1.12.0"],"schemaVersion":1,"symbols":["Engine.ContextWithFallback","gin.New","Engine.ServeHTTP","Context.Value","Context.Done","Context.Deadline","Context.Err","Context.Get","Context.GetString","Context.Set"],"verifierAdapter":"golang@1"}
fallback.go
package gincontextfallback

import (
	"context"
	"net/http"
	"time"

	"github.com/gin-gonic/gin"
)

// ContextSnapshot captures the observable state of a gin.Context when queried
// directly as a gin.Context and when queried as a standard context.Context.
type ContextSnapshot struct {
	// Standard context.Context interface methods
	ValueFromContext any
	DeadlineTime     time.Time
	DeadlineOk       bool
	IsDoneClosed     bool
	ContextError     error

	// Gin-specific key/value accessors
	GinGetValue      any
	GinGetExists     bool
	GinGetString     string
	GinLocalOverride any
}

// BuildEngine creates a configured Gin engine with ContextWithFallback enabled or disabled.
func BuildEngine(enableFallback bool) *gin.Engine {
	gin.SetMode(gin.TestMode)
	engine := gin.New()
	engine.ContextWithFallback = enableFallback
	return engine
}

// RecordContextState registers a handler on the given path and records the context
// inspection result into the provided snapshot pointer when invoked.
func RecordContextState(engine *gin.Engine, path string, lookupKey any, localKey, localVal string, snapshot *ContextSnapshot) {
	engine.GET(path, func(c *gin.Context) {
		if localKey != "" {
			c.Set(localKey, localVal)
		}

		var stdCtx context.Context = c

		// Query through standard context.Context interface
		snapshot.ValueFromContext = stdCtx.Value(lookupKey)
		snapshot.DeadlineTime, snapshot.DeadlineOk = stdCtx.Deadline()
		snapshot.ContextError = stdCtx.Err()

		if done := stdCtx.Done(); done != nil {
			select {
			case <-done:
				snapshot.IsDoneClosed = true
			default:
				snapshot.IsDoneClosed = false
			}
		} else {
			snapshot.IsDoneClosed = false
		}

		// Query through Gin-specific methods
		if strKey, ok := lookupKey.(string); ok {
			snapshot.GinGetValue, snapshot.GinGetExists = c.Get(strKey)
			snapshot.GinGetString = c.GetString(strKey)
		}

		if localKey != "" {
			snapshot.GinLocalOverride = stdCtx.Value(localKey)
		}

		c.Status(http.StatusOK)
	})
}
fallback_test.go
package gincontextfallback

import (
	"context"
	"net/http"
	"net/http/httptest"
	"testing"
	"time"
)

type customContextKey string

func TestDefaultContextIgnoresRequestContext(t *testing.T) {
	engine := BuildEngine(false)
	if engine.ContextWithFallback {
		t.Fatalf("expected default ContextWithFallback to be false")
	}

	var snapshot ContextSnapshot
	RecordContextState(engine, "/test", customContextKey("traceID"), "", "", &snapshot)

	expectedDeadline := time.Now().Add(10 * time.Minute)
	ctx, cancel := context.WithDeadline(context.Background(), expectedDeadline)
	cancel() // canceled before handler execution
	ctx = context.WithValue(ctx, customContextKey("traceID"), "trace-abc-123")

	req := httptest.NewRequest(http.MethodGet, "/test", nil).WithContext(ctx)
	rec := httptest.NewRecorder()
	engine.ServeHTTP(rec, req)

	if rec.Code != http.StatusOK {
		t.Fatalf("expected HTTP 200, got %d", rec.Code)
	}

	// When ContextWithFallback is false:
	// 1. Value is ignored (returns nil)
	if snapshot.ValueFromContext != nil {
		t.Fatalf("expected nil context value when fallback is disabled, got %v", snapshot.ValueFromContext)
	}
	// 2. Deadline is not propagated (DeadlineOk is false)
	if snapshot.DeadlineOk {
		t.Fatalf("expected DeadlineOk to be false when fallback is disabled")
	}
	// 3. Cancellation is not propagated (Done channel is nil / not closed)
	if snapshot.IsDoneClosed {
		t.Fatalf("expected Done channel not to be closed when fallback is disabled")
	}
	// 4. Err is nil
	if snapshot.ContextError != nil {
		t.Fatalf("expected nil context error when fallback is disabled, got %v", snapshot.ContextError)
	}
}

func TestContextWithFallbackPropagatesValuesAndLifecycle(t *testing.T) {
	engine := BuildEngine(true)
	if !engine.ContextWithFallback {
		t.Fatalf("expected ContextWithFallback to be true")
	}

	var snapshot ContextSnapshot
	RecordContextState(engine, "/test", customContextKey("traceID"), "localKey", "gin-value", &snapshot)

	expectedDeadline := time.Now().Add(10 * time.Minute)
	ctx, cancel := context.WithDeadline(context.Background(), expectedDeadline)
	cancel() // pre-canceled to test Err() and Done()
	ctx = context.WithValue(ctx, customContextKey("traceID"), "trace-abc-123")
	ctx = context.WithValue(ctx, "localKey", "shadowed-req-value")

	req := httptest.NewRequest(http.MethodGet, "/test", nil).WithContext(ctx)
	rec := httptest.NewRecorder()
	engine.ServeHTTP(rec, req)

	if rec.Code != http.StatusOK {
		t.Fatalf("expected HTTP 200, got %d", rec.Code)
	}

	// When ContextWithFallback is true:
	// 1. Value resolves from http.Request.Context()
	if snapshot.ValueFromContext != "trace-abc-123" {
		t.Fatalf("expected 'trace-abc-123' from context, got %v", snapshot.ValueFromContext)
	}
	// 2. Deadline is propagated
	if !snapshot.DeadlineOk || !snapshot.DeadlineTime.Equal(expectedDeadline) {
		t.Fatalf("expected deadline %v (ok=true), got %v (ok=%v)", expectedDeadline, snapshot.DeadlineTime, snapshot.DeadlineOk)
	}
	// 3. Cancellation is propagated (Done closed and Err returned)
	if !snapshot.IsDoneClosed {
		t.Fatalf("expected Done channel to be closed when fallback is enabled and context is canceled")
	}
	if snapshot.ContextError != context.Canceled {
		t.Fatalf("expected context.Canceled, got %v", snapshot.ContextError)
	}
	// 4. Gin local Set() takes precedence over request context value
	if snapshot.GinLocalOverride != "gin-value" {
		t.Fatalf("expected Gin local value 'gin-value' to override request context, got %v", snapshot.GinLocalOverride)
	}
}

func TestGinGetOnlyQueriesInternalKeysEvenWithFallback(t *testing.T) {
	engine := BuildEngine(true)

	var snapshot ContextSnapshot
	RecordContextState(engine, "/string-lookup", "sessionToken", "", "", &snapshot)

	ctx := context.WithValue(context.Background(), "sessionToken", "tok_live_xyz")
	req := httptest.NewRequest(http.MethodGet, "/string-lookup", nil).WithContext(ctx)
	rec := httptest.NewRecorder()
	engine.ServeHTTP(rec, req)

	if rec.Code != http.StatusOK {
		t.Fatalf("expected HTTP 200, got %d", rec.Code)
	}

	// c.Value("sessionToken") delegates and finds the value
	if snapshot.ValueFromContext != "tok_live_xyz" {
		t.Fatalf("expected c.Value() to find 'tok_live_xyz', got %v", snapshot.ValueFromContext)
	}

	// But c.Get("sessionToken") and c.GetString("sessionToken") strictly check c.Keys
	if snapshot.GinGetExists {
		t.Fatalf("expected c.Get() exists to be false for request context key, got true")
	}
	if snapshot.GinGetValue != nil {
		t.Fatalf("expected c.Get() value to be nil, got %v", snapshot.GinGetValue)
	}
	if snapshot.GinGetString != "" {
		t.Fatalf("expected c.GetString() to be empty string, got %q", snapshot.GinGetString)
	}
}
go.mod
module example.com/gin-context-fallback

go 1.25.0

require github.com/gin-gonic/gin v1.12.0

require (
	github.com/bytedance/gopkg v0.1.3 // indirect
	github.com/bytedance/sonic v1.15.0 // indirect
	github.com/bytedance/sonic/loader v0.5.0 // indirect
	github.com/cloudwego/base64x v0.1.6 // indirect
	github.com/gabriel-vasile/mimetype v1.4.12 // indirect
	github.com/gin-contrib/sse v1.1.0 // indirect
	github.com/go-playground/locales v0.14.1 // indirect
	github.com/go-playground/universal-translator v0.18.1 // indirect
	github.com/go-playground/validator/v10 v10.30.1 // indirect
	github.com/goccy/go-json v0.10.5 // indirect
	github.com/goccy/go-yaml v1.19.2 // indirect
	github.com/json-iterator/go v1.1.12 // indirect
	github.com/klauspost/cpuid/v2 v2.3.0 // indirect
	github.com/leodido/go-urn v1.4.0 // indirect
	github.com/mattn/go-isatty v0.0.20 // indirect
	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
	github.com/modern-go/reflect2 v1.0.2 // indirect
	github.com/pelletier/go-toml/v2 v2.2.4 // indirect
	github.com/quic-go/qpack v0.6.0 // indirect
	github.com/quic-go/quic-go v0.59.0 // indirect
	github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
	github.com/ugorji/go/codec v1.3.1 // indirect
	go.mongodb.org/mongo-driver/v2 v2.5.0 // indirect
	golang.org/x/arch v0.22.0 // indirect
	golang.org/x/crypto v0.48.0 // indirect
	golang.org/x/net v0.51.0 // indirect
	golang.org/x/sys v0.41.0 // indirect
	golang.org/x/text v0.34.0 // indirect
	google.golang.org/protobuf v1.36.10 // indirect
)
go.sum
github.com/bytedance/gopkg v0.1.3 h1:TPBSwH8RsouGCBcMBktLt1AymVo2TVsBVCY4b6TnZ/M=
github.com/bytedance/gopkg v0.1.3/go.mod h1:576VvJ+eJgyCzdjS+c4+77QF3p7ubbtiKARP3TxducM=
github.com/bytedance/sonic v1.15.0 h1:/PXeWFaR5ElNcVE84U0dOHjiMHQOwNIx3K4ymzh/uSE=
github.com/bytedance/sonic v1.15.0/go.mod h1:tFkWrPz0/CUCLEF4ri4UkHekCIcdnkqXw9VduqpJh0k=
github.com/bytedance/sonic/loader v0.5.0 h1:gXH3KVnatgY7loH5/TkeVyXPfESoqSBSBEiDd5VjlgE=
github.com/bytedance/sonic/loader v0.5.0/go.mod h1:AR4NYCk5DdzZizZ5djGqQ92eEhCCcdf5x77udYiSJRo=
github.com/cloudwego/base64x v0.1.6 h1:t11wG9AECkCDk5fMSoxmufanudBtJ+/HemLstXDLI2M=
github.com/cloudwego/base64x v0.1.6/go.mod h1:OFcloc187FXDaYHvrNIjxSe8ncn0OOM8gEHfghB2IPU=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/gabriel-vasile/mimetype v1.4.12 h1:e9hWvmLYvtp846tLHam2o++qitpguFiYCKbn0w9jyqw=
github.com/gabriel-vasile/mimetype v1.4.12/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s=
github.com/gin-contrib/sse v1.1.0 h1:n0w2GMuUpWDVp7qSpvze6fAu9iRxJY4Hmj6AmBOU05w=
github.com/gin-contrib/sse v1.1.0/go.mod h1:hxRZ5gVpWMT7Z0B0gSNYqqsSCNIJMjzvm6fqCz9vjwM=
github.com/gin-gonic/gin v1.12.0 h1:b3YAbrZtnf8N//yjKeU2+MQsh2mY5htkZidOM7O0wG8=
github.com/gin-gonic/gin v1.12.0/go.mod h1:VxccKfsSllpKshkBWgVgRniFFAzFb9csfngsqANjnLc=
github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
github.com/go-playground/validator/v10 v10.30.1 h1:f3zDSN/zOma+w6+1Wswgd9fLkdwy06ntQJp0BBvFG0w=
github.com/go-playground/validator/v10 v10.30.1/go.mod h1:oSuBIQzuJxL//3MelwSLD5hc2Tu889bF0Idm9Dg26cM=
github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4=
github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
github.com/goccy/go-yaml v1.19.2 h1:PmFC1S6h8ljIz6gMRBopkjP1TVT7xuwrButHID66PoM=
github.com/goccy/go-yaml v1.19.2/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA=
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y=
github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=
github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ=
github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=
github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/quic-go/qpack v0.6.0 h1:g7W+BMYynC1LbYLSqRt8PBg5Tgwxn214ZZR34VIOjz8=
github.com/quic-go/qpack v0.6.0/go.mod h1:lUpLKChi8njB4ty2bFLX2x4gzDqXwUpaO1DP9qMDZII=
github.com/quic-go/quic-go v0.59.0 h1:OLJkp1Mlm/aS7dpKgTc6cnpynnD2Xg7C1pwL6vy/SAw=
github.com/quic-go/quic-go v0.59.0/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
github.com/ugorji/go/codec v1.3.1 h1:waO7eEiFDwidsBN6agj1vJQ4AG7lh2yqXyOXqhgQuyY=
github.com/ugorji/go/codec v1.3.1/go.mod h1:pRBVtBSKl77K30Bv8R2P+cLSGaTtex6fsA2Wjqmfxj4=
go.mongodb.org/mongo-driver/v2 v2.5.0 h1:yXUhImUjjAInNcpTcAlPHiT7bIXhshCTL3jVBkF3xaE=
go.mongodb.org/mongo-driver/v2 v2.5.0/go.mod h1:yOI9kBsufol30iFsl1slpdq1I0eHPzybRWdyYUs8K/0=
go.uber.org/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y=
go.uber.org/mock v0.6.0/go.mod h1:KiVJ4BqZJaMj4svdfmHM0AUx4NJYO8ZNpPnZn1Z+BBU=
golang.org/x/arch v0.22.0 h1:c/Zle32i5ttqRXjdLyyHZESLD/bB90DCU1g9l/0YBDI=
golang.org/x/arch v0.22.0/go.mod h1:dNHoOeKiyja7GTvF9NJS1l3Z2yntpQNzgrjh1cU103A=
golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts=
golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos=
golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo=
golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k=
golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk=
golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA=
google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE=
google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

Origin Seeder

csx-seed