Skip to content

Commit 5ee0c42

Browse files
authored
test: add expires echo server verification conformance (#27)
* test: add expires echo server verification conformance * fix: handle go server verify review feedback * test: address server verification review * test: run server verification in CI * fix: trigger conformance for server verification changes
1 parent 64c9972 commit 5ee0c42

18 files changed

Lines changed: 914 additions & 5 deletions

‎.github/workflows/conformance.yml‎

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,12 +205,39 @@ jobs:
205205
conformance/flow-${{ matrix.adapter }}.log
206206
if-no-files-found: warn
207207

208+
server_verify:
209+
name: server verification conformance
210+
runs-on: ubuntu-latest
211+
needs: changes
212+
if: needs.changes.outputs.run_conformance == 'true'
213+
defaults:
214+
run:
215+
working-directory: conformance
216+
steps:
217+
- name: Checkout
218+
uses: actions/checkout@v6
219+
220+
- name: Setup conformance adapter
221+
uses: ./.github/actions/setup-conformance
222+
with:
223+
adapter: go
224+
225+
- name: Install runner dependencies
226+
run: python3 -m pip install -q -r requirements.txt
227+
228+
- name: Install Go adapter dependencies
229+
run: make install-go
230+
231+
- name: Run server verification conformance
232+
run: python3 scripts/server_verify_runner.py --adapter go
233+
208234
conformance:
209235
runs-on: ubuntu-latest
210236
needs:
211237
- changes
212238
- vectors
213239
- flow
240+
- server_verify
214241
if: always()
215242
outputs:
216243
status: ${{ steps.overall.outputs.status }}
@@ -267,7 +294,7 @@ jobs:
267294
run: |
268295
if [ "${{ needs.changes.outputs.run_conformance }}" != "true" ]; then
269296
echo "status=pass" >> "$GITHUB_OUTPUT"
270-
elif [ "${{ needs.vectors.result }}" = "success" ] && [ "${{ needs.flow.result }}" = "success" ] && [ "${{ steps.vectors.outputs.status }}" = "pass" ] && [ "${{ steps.flows.outputs.status }}" = "pass" ]; then
297+
elif [ "${{ needs.vectors.result }}" = "success" ] && [ "${{ needs.flow.result }}" = "success" ] && [ "${{ needs.server_verify.result }}" = "success" ] && [ "${{ steps.vectors.outputs.status }}" = "pass" ] && [ "${{ steps.flows.outputs.status }}" = "pass" ]; then
271298
echo "status=pass" >> "$GITHUB_OUTPUT"
272299
else
273300
echo "status=fail" >> "$GITHUB_OUTPUT"
@@ -282,6 +309,7 @@ jobs:
282309
echo "- Adapters: \`${{ needs.changes.outputs.adapters_csv || 'none' }}\`"
283310
echo "- Vector results: ${{ steps.vectors.outputs.passed }} passed, ${{ steps.vectors.outputs.failed }} failed, ${{ steps.vectors.outputs.total }} total"
284311
echo "- Flow results: \`${{ steps.flows.outputs.status }}\`"
312+
echo "- Server verification: \`${{ needs.server_verify.result }}\`"
285313
} >> "$GITHUB_STEP_SUMMARY"
286314
287315
- name: Fail workflow if tests failed

‎.github/workflows/sdk-conformance.yml‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,12 @@ jobs:
131131
env:
132132
ADAPTER: ${{ steps.resolve.outputs.adapter }}
133133

134+
- name: Run server verification conformance
135+
if: steps.resolve.outputs.adapter == 'go'
136+
run: python3 scripts/server_verify_runner.py --adapter "$ADAPTER"
137+
env:
138+
ADAPTER: ${{ steps.resolve.outputs.adapter }}
139+
134140
- name: Write summary
135141
if: always()
136142
run: |
@@ -140,6 +146,7 @@ jobs:
140146
echo "- Adapter: \`$ADAPTER\`"
141147
echo "- SDK checkout: \`$SDK_PATH\`"
142148
echo "- Flow tests: \`${{ inputs.run-flows }}\`"
149+
echo "- Server verification: \`${{ steps.resolve.outputs.adapter == 'go' }}\`"
143150
} >> "$GITHUB_STEP_SUMMARY"
144151
env:
145152
ADAPTER: ${{ steps.resolve.outputs.adapter }}

‎conformance/HARNESS_SPEC.md‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,9 @@ against `schemas/adapter-manifest.schema.json`.
6666
"base64url.encode",
6767
"base64url.decode",
6868
"challenge.id",
69+
"http.payment_request",
6970
"stripe.external_id_binding",
70-
"http.payment_request"
71+
"server.verify"
7172
]
7273
}
7374
```
@@ -191,6 +192,12 @@ Required for flow conformance:
191192
192193
The built-in flow runner owns the end-to-end 402 state machine and calls the vector operations above to parse challenges, format credentials, and parse receipts.
193194
195+
Optional for server verification conformance:
196+
197+
| Operation | Input | Output |
198+
|---|---|---|
199+
| `server.verify` | server route params plus a credential object | `{ "ok": boolean, "errorType"?: string, "receipt"?: Receipt }` |
200+
194201
To add a new operation:
195202
196203
1. Add the operation name to `Operation` in `schemas/protocol.schema.json`.

‎conformance/Makefile‎

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Conformance Testing Makefile
22
# Cross-SDK protocol compatibility testing for MPP implementations
33

4-
.PHONY: all update-locks update-java install install-runner install-java use-local-sdk test test-all test-sdk test-typescript test-rust test-python test-go test-ruby test-java test-json flow flow-sdk flow-typescript flow-rust flow-python flow-go flow-ruby flow-java update-flow-golden clean help
4+
.PHONY: all update-locks update-java install install-runner install-java use-local-sdk test test-all test-sdk test-typescript test-rust test-python test-go test-ruby test-java test-json flow flow-sdk flow-typescript flow-rust flow-python flow-go flow-ruby flow-java server-verify server-verify-sdk server-verify-go update-flow-golden clean help
55

66
RUBY ?= ruby
77
BUNDLE ?= bundle
@@ -13,6 +13,7 @@ all: install
1313
@status=0; \
1414
$(MAKE) test || status=$$?; \
1515
$(MAKE) flow || status=$$?; \
16+
$(MAKE) server-verify || status=$$?; \
1617
exit $$status
1718

1819
#------------------------------------------------------------------------------
@@ -99,6 +100,19 @@ flow-sdk:
99100
@echo "→ Running $(ADAPTER) flow conformance tests..."
100101
python3 scripts/flow_runner.py --adapter "$(ADAPTER)"
101102

103+
server-verify:
104+
@echo "→ Running server verification conformance tests..."
105+
python3 scripts/server_verify_runner.py
106+
107+
server-verify-sdk:
108+
@test -n "$(ADAPTER)" || (echo "ADAPTER is required, e.g. ADAPTER=go" >&2; exit 2)
109+
@echo "→ Running $(ADAPTER) server verification conformance tests..."
110+
python3 scripts/server_verify_runner.py --adapter "$(ADAPTER)"
111+
112+
server-verify-go:
113+
@echo "→ Running Go server verification conformance tests..."
114+
python3 scripts/server_verify_runner.py --adapter go
115+
102116
flow-typescript:
103117
@echo "→ Running TypeScript flow conformance tests..."
104118
python3 scripts/flow_runner.py --adapter typescript
@@ -212,6 +226,8 @@ help:
212226
@echo " test-sdk Run vector tests for ADAPTER"
213227
@echo " flow Run flow conformance tests"
214228
@echo " flow-sdk Run flow tests for ADAPTER"
229+
@echo " server-verify Run server verification conformance tests"
230+
@echo " server-verify-sdk Run server verification tests for ADAPTER"
215231
@echo " update-flow-golden Regenerate flow golden results"
216232
@echo " test-typescript Test TypeScript adapter only"
217233
@echo " test-rust Test Rust adapter only"

‎conformance/README.md‎

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ Or step by step:
1616
make install # install the pinned TS/Rust/Python/Go/Ruby/Java releases
1717
make test # run SDK adapters against all vectors
1818
make flow # run the end-to-end flow suite against golden results
19+
make server-verify # run SDK server verification ABI tests
1920
```
2021

2122
## How It Works
@@ -80,6 +81,15 @@ The Python flow runner owns the HTTP state machine. It calls each adapter's exis
8081

8182
Flow assertions compare adapter results against `flows/golden-results.json`, generated with the pinned TypeScript `mppx` package. Regenerate it with `make update-flow-golden` when the flow fixtures intentionally change.
8283

84+
## Server Verification Tests
85+
86+
Server verification cases live in `server-verification/`. These call the `server.verify` adapter operation directly so conformance can cover SDK server-side credential verification paths that are not observable through the client flow runner.
87+
88+
```bash
89+
make server-verify
90+
make server-verify-go
91+
```
92+
8393
## Adapters
8494

8595
Each adapter is a CLI binary that reads from stdin and writes JSON to stdout:
@@ -98,6 +108,12 @@ Each adapter is a CLI binary that reads from stdin and writes JSON to stdout:
98108

99109
All commands return `{"success": true, "result": <value>}` on success or `{"success": false, "error": "...", "error_type": "..."}` on failure.
100110

111+
Schema-backed adapter operations use the JSON ABI from `HARNESS_SPEC.md`: requests are
112+
`{"schema": 1, "op": "<operation>", "input": <value>}` and responses are
113+
`{"ok": true, "value": <value>}` or `{"ok": false, "error": <value>}`.
114+
`server.verify` is exposed only through that JSON ABI and accepts server route
115+
params plus a credential object, returning a normalized verification result.
116+
101117
Adapter locations:
102118

103119
| Language | Path |

‎conformance/adapters/go/adapter.json‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
"receipt.format",
2424
"base64url.encode",
2525
"base64url.decode",
26-
"challenge.id"
26+
"challenge.id",
27+
"server.verify"
2728
]
2829
}

‎conformance/adapters/go/go.mod‎

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,22 @@ module mpp-conformance-adapter-go
33
go 1.26
44

55
require github.com/tempoxyz/mpp-go v0.1.2
6+
7+
require (
8+
github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6 // indirect
9+
github.com/bits-and-blooms/bitset v1.20.0 // indirect
10+
github.com/cespare/xxhash/v2 v2.3.0 // indirect
11+
github.com/consensys/gnark-crypto v0.18.1 // indirect
12+
github.com/crate-crypto/go-eth-kzg v1.5.0 // indirect
13+
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect
14+
github.com/ethereum/c-kzg-4844/v2 v2.1.6 // indirect
15+
github.com/ethereum/go-ethereum v1.17.3 // indirect
16+
github.com/google/go-cmp v0.7.0 // indirect
17+
github.com/holiman/uint256 v1.3.2 // indirect
18+
github.com/redis/go-redis/v9 v9.19.0 // indirect
19+
github.com/supranational/blst v0.3.16 // indirect
20+
github.com/tempoxyz/tempo-go v0.4.1 // indirect
21+
go.uber.org/atomic v1.11.0 // indirect
22+
golang.org/x/sync v0.20.0 // indirect
23+
golang.org/x/sys v0.43.0 // indirect
24+
)

‎conformance/adapters/go/go.sum‎

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,84 @@
1+
github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6 h1:1zYrtlhrZ6/b6SAjLSfKzWtdgqK0U+HtH/VcBWh1BaU=
2+
github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6/go.mod h1:ioLG6R+5bUSO1oeGSDxOV3FADARuMoytZCSX6MEMQkI=
3+
github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA=
4+
github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8=
5+
github.com/alicebob/miniredis/v2 v2.38.0 h1:nZAzCR+Lj+Vxk4ZXzm2NuKq2O33RXj1XxJ2e2uP9jiw=
6+
github.com/alicebob/miniredis/v2 v2.38.0/go.mod h1:TcL7YfarKPGDAthEtl5NBeHZfeUQj6OXMm/+iu5cLMM=
7+
github.com/bits-and-blooms/bitset v1.20.0 h1:2F+rfL86jE2d/bmw7OhqUg2Sj/1rURkBn3MdfoPyRVU=
8+
github.com/bits-and-blooms/bitset v1.20.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8=
9+
github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs=
10+
github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c=
11+
github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA=
12+
github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0=
13+
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
14+
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
15+
github.com/consensys/gnark-crypto v0.18.1 h1:RyLV6UhPRoYYzaFnPQA4qK3DyuDgkTgskDdoGqFt3fI=
16+
github.com/consensys/gnark-crypto v0.18.1/go.mod h1:L3mXGFTe1ZN+RSJ+CLjUt9x7PNdx8ubaYfDROyp2Z8c=
17+
github.com/crate-crypto/go-eth-kzg v1.5.0 h1:FYRiJMJG2iv+2Dy3fi14SVGjcPteZ5HAAUe4YWlJygc=
18+
github.com/crate-crypto/go-eth-kzg v1.5.0/go.mod h1:J9/u5sWfznSObptgfa92Jq8rTswn6ahQWEuiLHOjCUI=
119
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
220
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
21+
github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0=
22+
github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc=
23+
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 h1:YLtO71vCjJRCBcrPMtQ9nqBsqpA1m5sE92cU+pd5Mcc=
24+
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs=
25+
github.com/emicklei/dot v1.6.2 h1:08GN+DD79cy/tzN6uLCT84+2Wk9u+wvqP+Hkx/dIR8A=
26+
github.com/emicklei/dot v1.6.2/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s=
27+
github.com/ethereum/c-kzg-4844/v2 v2.1.6 h1:xQymkKCT5E2Jiaoqf3v4wsNgjZLY0lRSkZn27fRjSls=
28+
github.com/ethereum/c-kzg-4844/v2 v2.1.6/go.mod h1:8HMkUZ5JRv4hpw/XUrYWSQNAUzhHMg2UDb/U+5m+XNw=
29+
github.com/ethereum/go-ethereum v1.17.3 h1:Ev/sQHH+UdKZHWjuVzhu2pxhi/sXaPZl23Q+Q5LDd4Q=
30+
github.com/ethereum/go-ethereum v1.17.3/go.mod h1:f2EhRwqewIZkGoQekywI2Y2RZAMTSavLNkD9qItFy1A=
31+
github.com/ferranbt/fastssz v0.1.4 h1:OCDB+dYDEQDvAgtAGnTSidK1Pe2tW3nFV40XyMkTeDY=
32+
github.com/ferranbt/fastssz v0.1.4/go.mod h1:Ea3+oeoRGGLGm5shYAeDgu6PGUlcvQhE2fILyD9+tGg=
33+
github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
34+
github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
35+
github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E=
36+
github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0=
37+
github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs=
38+
github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
39+
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
40+
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
41+
github.com/holiman/uint256 v1.3.2 h1:a9EgMPSC1AAaj1SZL5zIQD3WbwTuHrMGOerLjGmM/TA=
42+
github.com/holiman/uint256 v1.3.2/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E=
43+
github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y=
44+
github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=
45+
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
46+
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
47+
github.com/leanovate/gopter v0.2.11 h1:vRjThO1EKPb/1NsDXuDrzldR28RLkBflWYcU9CvzWu4=
48+
github.com/leanovate/gopter v0.2.11/go.mod h1:aK3tzZP/C+p1m3SPRE4SYZFGP7jjkuSI4f7Xvpt0S9c=
49+
github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g=
50+
github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM=
51+
github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag=
52+
github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
353
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
454
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
55+
github.com/redis/go-redis/v9 v9.19.0 h1:XPVaaPSnG6RhYf7p+rmSa9zZfeVAnWsH5h3lxthOm/k=
56+
github.com/redis/go-redis/v9 v9.19.0/go.mod h1:v/M13XI1PVCDcm01VtPFOADfZtHf8YW3baQf57KlIkA=
57+
github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU=
58+
github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
559
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
660
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
61+
github.com/supranational/blst v0.3.16 h1:bTDadT+3fK497EvLdWRQEjiGnUtzJ7jjIUMF0jqwYhE=
62+
github.com/supranational/blst v0.3.16/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw=
763
github.com/tempoxyz/mpp-go v0.1.2 h1:8Yo95CntHynHvBMco/Eub7unISBC1TGe3Ku0tAOjUOM=
864
github.com/tempoxyz/mpp-go v0.1.2/go.mod h1:tVrbCg1lo8PUk5+RU1VsRB4KBP+EFf83dBhiD0iclI8=
65+
github.com/tempoxyz/tempo-go v0.4.1 h1:09upmr7C3YfIEAlwP7eOzQLEoBJR7gH93St8SGcg9BA=
66+
github.com/tempoxyz/tempo-go v0.4.1/go.mod h1:PATi6I9r/0ZmmbLdFueqYywJ/odj8DhlwMbP93A60Rs=
67+
github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU=
68+
github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI=
69+
github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk=
70+
github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY=
71+
github.com/yuin/gopher-lua v1.1.1 h1:kYKnWBjvbNP4XLT3+bPEwAXJx262OhaHDWDVOPjL46M=
72+
github.com/yuin/gopher-lua v1.1.1/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw=
73+
github.com/zeebo/xxh3 v1.1.0 h1:s7DLGDK45Dyfg7++yxI0khrfwq9661w9EN78eP/UZVs=
74+
github.com/zeebo/xxh3 v1.1.0/go.mod h1:IisAie1LELR4xhVinxWS5+zf1lA4p0MW4T+w+W07F5s=
75+
go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
76+
go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
77+
golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=
78+
golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
79+
golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI=
80+
golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
81+
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
82+
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
983
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
1084
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

0 commit comments

Comments
 (0)