Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
93248a2
✨ server: allow account on firewall
nfmelendez Nov 13, 2025
d3e4907
✨ server: implement kyc data submission
mainqueg Jul 23, 2025
a730df3
🗃️ server: add source database table
nfmelendez Aug 1, 2025
2e0658f
✨ server: forward webhooks to source
nfmelendez Jan 30, 2026
9231f26
📝 docs: document server webhooks
cruzdanilo Aug 13, 2025
ca6e451
🩹 server: return correct card status
nfmelendez Sep 9, 2025
1ea2ba3
📝 server: add sandbox dedicated ips
nfmelendez Sep 10, 2025
3f441c6
➕ server: install better-auth
cruzdanilo Oct 20, 2025
9560689
🗃️ server: setup better-auth database tables
cruzdanilo Dec 12, 2025
ec13a80
✨ server: add webhook api
nfmelendez Sep 10, 2025
d602f0e
➕ server: install canonicalize
cruzdanilo Feb 9, 2026
80b3da4
✨ server: add encrypted kyc submission
nfmelendez Sep 23, 2025
80272cd
📝 docs: add invite and accept invite examples
nfmelendez Sep 30, 2025
b24fe2b
✨ server: allow better auth users to change email
nfmelendez Oct 2, 2025
714c8e8
📝 docs: update siwe authentication example
nfmelendez Oct 2, 2025
cce9ee0
✨ server: return card id
mainqueg Oct 8, 2025
543b18f
📝 server: update kyc status code
mainqueg Oct 8, 2025
4c7b84e
🐛 server: fix patch response validation
nfmelendez Oct 17, 2025
7bec017
🦺 server: improve kyc application response validation
nfmelendez Oct 22, 2025
c238da7
📝 docs: improve create organization example
nfmelendez Oct 22, 2025
2cd456b
✨ server: improve nonce usage for encrypted kyc
nfmelendez Oct 2, 2025
1fdf48e
📝 docs: add configuration resources
nfmelendez Oct 24, 2025
f28f370
✨ server: add transaction receipt to webhook
nfmelendez Oct 28, 2025
204b1f6
✨ server: add merchant category code to webhooks
nfmelendez Nov 11, 2025
c88e8ff
🗃️ server: add role to organization database table
cruzdanilo Dec 12, 2025
1841cff
✨ server: add kyc role to organizations
nfmelendez Nov 12, 2025
d0a5bad
🛂 server: add auth trusted origins
nfmelendez Nov 17, 2025
9d15a33
🐛 server: fix webhook retries
nfmelendez Nov 26, 2025
8a45a69
🔧 wagmi: use exa factory v1.0 on base sepolia
nfmelendez Nov 26, 2025
4cccfa6
🦺 server: standardize card status
nfmelendez Nov 26, 2025
2e06696
🐛 server: fix user webhook routing
nfmelendez Feb 4, 2026
46fc7aa
📝 server: add create card docs
mainqueg Nov 13, 2025
5710271
🔧 server: set card art for sandbox
nfmelendez Feb 4, 2026
6fcc202
🥅 server: improve weak pin error handling
nfmelendez Dec 3, 2025
696d7f7
🔥 server: remove redundant type check
nfmelendez Dec 10, 2025
c303740
🐛 server: fix update card webhook schema
mainqueg Jan 6, 2026
126df7f
🔧 common: map base domains to panda certificates
cruzdanilo Feb 9, 2026
847fbaa
🔧 wagmi: remove hardcoded exa factory for base sepolia
nfmelendez Feb 11, 2026
3ec3fd5
➕ app: install comlink
cruzdanilo Feb 11, 2026
ae5237e
✨ app: expose address and card status to miniapps
cruzdanilo Feb 11, 2026
72643ae
📝 docs: add kyc permissions requirement in organization guide
nfmelendez Feb 12, 2026
11294a8
🥅 server: add expected to siwe statement error
nfmelendez Feb 12, 2026
62c2088
✨ server: support factory selection in credential creation
cruzdanilo Feb 13, 2026
e0b8e5a
✨ server: poke account after kyc
aguxez Jan 21, 2026
69f8d62
➕ server: install gcp dependencies
aguxez Feb 13, 2026
aa8f94f
✨ server: use gcp kms for allower
cruzdanilo Jan 20, 2026
912115f
♻️ server: use hoisted redis mock
nfmelendez Feb 19, 2026
03849cf
🦺 server: make auth query param optional
nfmelendez Feb 19, 2026
ae7ad30
🤡 server: mock allower for e2e tests
nfmelendez Feb 20, 2026
8d6fe7c
💚 github: extend e2e startup wait
cruzdanilo Feb 26, 2026
af737a7
👷 github: serve e2e frontend on expo standard port
cruzdanilo Feb 26, 2026
ae5aa90
🔧 common: setup all onesignal domains
cruzdanilo Jan 30, 2026
0d9ef7e
🚩 server: remove base from supported ramp chains
mainqueg Mar 2, 2026
2ce9d90
🐛 server: fix webhook logging for text response
nfmelendez Mar 2, 2026
1c1ce7e
🥅 server: fix pax capture exception context
nfmelendez Mar 2, 2026
c398175
🥅 server: retry trace on resource not found
nfmelendez Mar 3, 2026
78cdc72
♻️ server: retry poke calls on error
aguxez Mar 3, 2026
2190047
🐛 server: fix onesignal app resolution
nfmelendez Mar 3, 2026
40ce327
🔧 server: set farcaster manifest signature for base
cruzdanilo Mar 6, 2026
40fe324
🥅 app: surface bridge failures in sentry
cruzdanilo Mar 6, 2026
f362f36
⚗️ dependencies: capture rejection cause in farcaster sdk
cruzdanilo Mar 4, 2026
1ca6e19
🐛 app: fix bridge simulation falling back to default account
dieguezguille Mar 6, 2026
8d5c63a
🐛 app: fix owner wallet detection in siwe auth
dieguezguille Mar 10, 2026
126af90
💄 app: fix repay amount selector font style
dieguezguille Mar 9, 2026
75a9f49
💄 app: add bottom padding to swaps screen on web
dieguezguille Mar 11, 2026
f525bc2
🐛 app: forward chain id in account client
dieguezguille Mar 9, 2026
7c8ec8c
🐛 app: pass chain id to bridge calls
dieguezguille Mar 9, 2026
0f5dd1e
♻️ app: migrate remaining flows to send calls
dieguezguille Mar 10, 2026
35a0ae3
💄 app: restructure swap state screen layouts
dieguezguille Mar 11, 2026
f4c97f7
🐛 app: fix swaps query invalidation
dieguezguille Mar 11, 2026
a17f10b
♻️ app: pass explicit chain id to read hooks
dieguezguille Mar 11, 2026
a974a9d
👷 github: set base workflow trigger to base branch
cruzdanilo Mar 11, 2026
deddc7c
🔧 app: add base app id meta tag
cruzdanilo Mar 11, 2026
fba6703
✅ server: handle firehose startup dependency on merged blocks
cruzdanilo Mar 12, 2026
4d29c6f
✨ server: support multiple cards in statement
nfmelendez Mar 13, 2026
6c16fa8
✨ server: forward exchange rate to webhooks
nfmelendez Mar 26, 2026
8d9b975
🔊 server: fix multiline webhook log
nfmelendez Mar 26, 2026
386594e
✅ contracts: provision multicall3 in anvil environment
cruzdanilo Mar 17, 2026
e2d62d4
🏷️ common: assert multicall address in chain types
cruzdanilo Mar 17, 2026
ee13e26
♻️ app: replace proposal simulation with simulate blocks
cruzdanilo Feb 17, 2026
801cc5c
♻️ app: flatten simulate-proposal api and batch contract reads
cruzdanilo Mar 24, 2026
0911f2e
🐛 app: align propose and execute block timestamps
dieguezguille Mar 25, 2026
c2eb44a
✨ server: forward declined transaction webhook
nfmelendez Apr 8, 2026
e552420
🐛 app: avoid chain mismatch on bridge transfer
dieguezguille Apr 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/bold-ram-dig.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/mobile": patch
---

♻️ flatten simulate-proposal api and batch contract reads
5 changes: 5 additions & 0 deletions .changeset/brave-foxes-beam.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/server": patch
---

✨ support factory selection in credential creation
5 changes: 5 additions & 0 deletions .changeset/bright-eagle-catch.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/server": patch
---

🥅 retry trace on resource not found
5 changes: 5 additions & 0 deletions .changeset/bright-foxes-swim.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/mobile": patch
---

💄 restructure swap state screen layouts
5 changes: 5 additions & 0 deletions .changeset/bright-panda-decline.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/server": patch
---

✨ forward declined transaction webhook
5 changes: 5 additions & 0 deletions .changeset/cool-icons-grow.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/mobile": patch
---

🐛 forward chain id in account client
5 changes: 5 additions & 0 deletions .changeset/cool-snakes-reply.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/server": patch
---

🗃️ setup better-auth database tables
6 changes: 6 additions & 0 deletions .changeset/cuddly-streets-like.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@exactly/server": patch
"@exactly/docs": patch
---

✨ improve nonce usage for encrypted kyc
5 changes: 5 additions & 0 deletions .changeset/curly-pumas-jam.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/mobile": patch
---

🐛 fix owner wallet detection in siwe auth
5 changes: 5 additions & 0 deletions .changeset/cute-buttons-roll.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/docs": patch
---

📝 add configuration resources
5 changes: 5 additions & 0 deletions .changeset/cyan-flies-camp.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/mobile": patch
---

🐛 fix swaps query invalidation
6 changes: 6 additions & 0 deletions .changeset/dry-peas-ring.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@exactly/server": patch
"@exactly/docs": patch
---

🐛 fix update card webhook schema
5 changes: 5 additions & 0 deletions .changeset/every-cameras-trade.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/server": patch
---

✨ allow account on firewall
5 changes: 5 additions & 0 deletions .changeset/fast-trees-prove.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/server": patch
---

🔥 remove redundant type check
5 changes: 5 additions & 0 deletions .changeset/fifty-friends-bet.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/server": patch
---

🐛 fix webhook logging for text response
5 changes: 5 additions & 0 deletions .changeset/four-canyons-mix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/common": patch
---

🔧 setup all onesignal domains
5 changes: 5 additions & 0 deletions .changeset/four-numbers-worry.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/server": patch
---

✨ implement kyc data submission
5 changes: 5 additions & 0 deletions .changeset/fresh-kings-buy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/server": patch
---

🦺 standardize card status
5 changes: 5 additions & 0 deletions .changeset/gentle-brooms-say.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/docs": patch
---

📝 update siwe authentication example
5 changes: 5 additions & 0 deletions .changeset/gold-cow-eat.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/mobile": patch
---

🐛 fix bridge simulation falling back to default account
5 changes: 5 additions & 0 deletions .changeset/gold-ties-tan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/server": patch
---

🩹 return correct card status
5 changes: 5 additions & 0 deletions .changeset/great-dryers-kick.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/mobile": patch
---

🐛 pass chain id to bridge calls
5 changes: 5 additions & 0 deletions .changeset/hungry-impalas-sing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/server": patch
---

🔧 set card art for sandbox
5 changes: 5 additions & 0 deletions .changeset/jolly-teeth-flow.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/mobile": patch
---

💄 fix repay amount selector font style
5 changes: 5 additions & 0 deletions .changeset/long-moons-brake.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/server": patch
---

🐛 fix webhook retries
5 changes: 5 additions & 0 deletions .changeset/long-nails-doubt.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/server": patch
---

📝 add sandbox dedicated ips
5 changes: 5 additions & 0 deletions .changeset/loose-papers-take.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/mobile": patch
---

♻️ migrate remaining flows to send calls
5 changes: 5 additions & 0 deletions .changeset/loud-shoes-visit.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/server": patch
---

🐛 fix user webhook routing
5 changes: 5 additions & 0 deletions .changeset/lucky-jokes-change.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/server": patch
---

✨ use gcp kms for allower
5 changes: 5 additions & 0 deletions .changeset/olive-onions-tan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/server": patch
---

✨ add webhook api
5 changes: 5 additions & 0 deletions .changeset/open-beds-stand.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/mobile": patch
---

💄 add bottom padding to swaps screen on web
5 changes: 5 additions & 0 deletions .changeset/pretty-chicken-hang.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/server": patch
---

➕ install better-auth
5 changes: 5 additions & 0 deletions .changeset/quick-ants-write.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/server": patch
---

✨ add transaction receipt to webhook
5 changes: 5 additions & 0 deletions .changeset/rare-pears-sort.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/server": patch
---

✨ allow better auth users to change email
5 changes: 5 additions & 0 deletions .changeset/sharp-squids-push.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/server": patch
---

🗃️ add role to organization database table
5 changes: 5 additions & 0 deletions .changeset/shy-foxes-trade.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/server": patch
---

✨ forward exchange rate to webhooks
5 changes: 5 additions & 0 deletions .changeset/silly-yaks-divide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/server": patch
---

✨ poke account after kyc
5 changes: 5 additions & 0 deletions .changeset/soft-eggs-count.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/server": patch
---

📝 add create card docs
5 changes: 5 additions & 0 deletions .changeset/soft-trains-dig.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/server": patch
---

✨ support multiple cards in statement
5 changes: 5 additions & 0 deletions .changeset/sour-items-enjoy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/mobile": patch
---

🐛 avoid chain mismatch on bridge transfer
5 changes: 5 additions & 0 deletions .changeset/tidy-geese-batch.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/mobile": patch
---

♻️ replace proposal simulation with simulate blocks
5 changes: 5 additions & 0 deletions .changeset/tidy-worms-sin.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/server": patch
---

🐛 fix patch response validation
5 changes: 5 additions & 0 deletions .changeset/upset-seas-sink.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/server": patch
---

✨ add kyc role to organizations
5 changes: 5 additions & 0 deletions .changeset/violet-plums-move.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/server": patch
---

✨ forward webhooks to source
5 changes: 5 additions & 0 deletions .changeset/warm-eagles-glow.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/mobile": patch
---

🐛 align propose and execute block timestamps
5 changes: 5 additions & 0 deletions .changeset/wicked-lies-invent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/server": patch
---

✨ return card id
5 changes: 5 additions & 0 deletions .changeset/wide-cats-hug.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/mobile": patch
---

♻️ pass explicit chain id to read hooks
5 changes: 5 additions & 0 deletions .changeset/wild-points-lose.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@exactly/server": patch
---

🥅 improve weak pin error handling
13 changes: 13 additions & 0 deletions .do/app.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,19 @@ services:
- key: DEBUG
scope: RUN_TIME
value: ${{ env.DEBUG }}
- key: GCP_KMS_KEY_RING
scope: RUN_TIME
value: ${{ env.GCP_KMS_KEY_RING }}
- key: GCP_KMS_KEY_VERSION
scope: RUN_TIME
value: ${{ env.GCP_KMS_KEY_VERSION }}
- key: GCP_PROJECT_ID
scope: RUN_TIME
value: ${{ env.GCP_PROJECT_ID }}
- key: GCP_BASE64_JSON
scope: RUN_TIME
type: SECRET
value: ${{ env.ENCRYPTED_GCP_BASE64_JSON || env.GCP_BASE64_JSON }}
- key: INTERCOM_IDENTITY_KEY
scope: RUN_TIME
type: SECRET
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/server-base.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: server/base
on:
push: { branches: [sandbox] }
push: { branches: [base] }
jobs:
build:
uses: ./.github/workflows/server-build.yaml
Expand Down
7 changes: 4 additions & 3 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -103,12 +103,13 @@ jobs:
pnpm nx run-many -t build -p mobile e2e
pnpm nx generate:app server
pnpm nx e2e server > server.log 2>&1 &
for i in {1..180}; do
pnpm dlx serve server/app -l 8081 -s &
for i in {1..420}; do
curl -f http://localhost:3000/api/auth/authentication > /dev/null 2>&1 && break
[ $i -eq 180 ] && cat server.log && exit 1
[ $i -eq 420 ] && cat server.log && exit 1
sleep 1
done
CHROME_LOG_FILE=$PWD/chrome.log xvfb-run maestro test .maestro/flows/web.yaml -e "APP_ID=http://localhost:3000" --format junit --output .maestro/junit.xml
CHROME_LOG_FILE=$PWD/chrome.log xvfb-run maestro test .maestro/flows/web.yaml --format junit --output .maestro/junit.xml
env: { APP_DOMAIN: localhost, EXPO_PUBLIC_ENV: e2e }
- if: always()
run: |
Expand Down
10 changes: 10 additions & 0 deletions common/onesignalAppId.web.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import domain from "./domain";

export default (process.env.EXPO_PUBLIC_ONESIGNAL_APP_ID || // eslint-disable-line @typescript-eslint/prefer-nullish-coalescing -- ignore empty string
{
"web.exactly.app": "31d4be98-1fa3-4a8c-9657-dc21c991adc7",
"base.exactly.app": "9f896065-637d-455c-baff-4041268dafce",
"sandbox.exactly.app": "15bd3cf9-f71e-43f2-96ff-e76916a832a3",
"base-sepolia.exactly.app": "893d33c6-d1bd-46cb-9047-d4d524f384f0",
}[domain]) ??
"2f79a35c-8b11-4725-84d8-fc096f3f216e";
20 changes: 13 additions & 7 deletions common/pandaCertificate.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,26 @@
import domain from "./domain";

/* eslint-disable @typescript-eslint/prefer-nullish-coalescing -- ignore empty string */
export default process.env.EXPO_PUBLIC_PANDA_PUBLIC_KEY ||
{
"web.exactly.app": `-----BEGIN PUBLIC KEY-----
const production = `-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCeZ9uCoxi2XvOw1VmvVLo88TLk
GE+OO1j3fa8HhYlJZZ7CCIAsaCorrU+ZpD5PUTnmME3DJk+JyY1BB3p8XI+C5uno
QucrbxFbkM1lgR10ewz/LcuhleG0mrXL/bzUZbeJqI6v3c9bXvLPKlsordPanYBG
FZkmBPxc8QEdRgH4awIDAQAB
-----END PUBLIC KEY-----`,
"sandbox.exactly.app": `-----BEGIN PUBLIC KEY-----
-----END PUBLIC KEY-----`;

const sandbox = `-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCAP192809jZyaw62g/eTzJ3P9H
+RmT88sXUYjQ0K8Bx+rJ83f22+9isKx+lo5UuV8tvOlKwvdDS/pVbzpG7D7NO45c
0zkLOXwDHZkou8fuj8xhDO5Tq3GzcrabNLRLVz3dkx0znfzGOhnY4lkOMIdKxlQb
LuVM/dGDC9UpulF+UwIDAQAB
-----END PUBLIC KEY-----`,
-----END PUBLIC KEY-----`;

/* eslint-disable @typescript-eslint/prefer-nullish-coalescing -- ignore empty string */
export default process.env.EXPO_PUBLIC_PANDA_PUBLIC_KEY ||
{
"web.exactly.app": production,
"base.exactly.app": production,
"base-sepolia.exactly.app": sandbox,
"sandbox.exactly.app": sandbox,
}[domain] ||
`-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu2YOeObkaYiQmc49t2Cnk8syA
Expand Down
Loading
Loading