From 68ffaf2f6963c4226d147b4bca1dc8a56c6bdd94 Mon Sep 17 00:00:00 2001 From: arifal Date: Fri, 8 May 2026 21:44:34 +0700 Subject: [PATCH] add payment and integration with midtrans --- PAYMENT_ROADMAP.md | 67 ++-- app/api/webhooks/midtrans/route.ts | 81 +++++ app/generated/prisma/internal/class.ts | 4 +- app/generated/prisma/models/Booking.ts | 8 +- app/trips/[id]/payment/page.tsx | 19 +- env.example | 14 +- features/booking/actions.ts | 47 +++ .../components/midtrans-pay-button.tsx | 132 +++++++ lib/midtrans.ts | 193 ++++++++++ .../migration.sql | 5 + prisma/schema.prisma | 5 +- server/repositories/booking.repo.ts | 4 +- server/services/booking.service.ts | 8 +- server/services/payment.service.ts | 335 ++++++++++++++++++ 14 files changed, 886 insertions(+), 36 deletions(-) create mode 100644 app/api/webhooks/midtrans/route.ts create mode 100644 features/booking/components/midtrans-pay-button.tsx create mode 100644 lib/midtrans.ts create mode 100644 prisma/migrations/20260508160000_booking_unique_trip_user/migration.sql create mode 100644 server/services/payment.service.ts diff --git a/PAYMENT_ROADMAP.md b/PAYMENT_ROADMAP.md index e4b4667..7bd398f 100644 --- a/PAYMENT_ROADMAP.md +++ b/PAYMENT_ROADMAP.md @@ -158,39 +158,42 @@ enum PaymentStatus { --- -## PR C — Midtrans integration (Snap + webhook) ⏳ +## PR C — Midtrans integration (Snap + webhook) ✅ -Tambah provider MIDTRANS ke pipeline yang sudah dibuat di PR B. Test di sandbox dulu. +Selesai. `tsc --noEmit` lulus. Belum test live ke sandbox Midtrans — perlu env diisi + tunneling kalau dev lokal. ### Persiapan akun & env | Env | Keterangan | |---|---| -| `MIDTRANS_SERVER_KEY` | Server key dari dashboard Midtrans (sandbox/production sesuai mode). Rahasia. | -| `MIDTRANS_CLIENT_KEY` | Client key. Boleh di expose ke frontend (untuk Snap script). | -| `MIDTRANS_IS_PRODUCTION` | `true`/`false` — pilih endpoint sandbox vs production. | -| `MIDTRANS_NOTIFICATION_URL` | URL callback publik kita, mis. `https://setrip.id/api/webhooks/midtrans`. Didaftarkan di dashboard Midtrans. | +| `MIDTRANS_SERVER_KEY` | Server key dari dashboard Midtrans (sandbox/production sesuai mode). Rahasia. Server-side only. | +| `NEXT_PUBLIC_MIDTRANS_CLIENT_KEY` | Client key untuk Snap.js. Aman di-expose ke frontend (NEXT_PUBLIC_). | +| `NEXT_PUBLIC_MIDTRANS_IS_PRODUCTION` | `true` untuk production, `false` (atau kosong) untuk sandbox. NEXT_PUBLIC_ supaya client tahu URL Snap.js yang benar. | -Tambah ke [env.example](env.example) dengan komentar. +`MIDTRANS_NOTIFICATION_URL` **tidak** di env — diset langsung di dashboard Midtrans ke `/api/webhooks/midtrans`. + +Sudah ditambah ke [env.example](env.example). ### Tugas -| # | Item | Status | Catatan | +| # | Item | Status | File | |---|---|---|---| -| C1 | Update [env.example](env.example) + dokumentasi env | ⏳ | 4 env baru. | -| C2 | `lib/midtrans.ts` — client tipis: `createSnapTransaction`, `verifySignature`, `mapStatus` | ⏳ | Pakai `fetch` + `crypto.createHash('sha512')`. Tidak butuh dependency baru. | -| C3 | Status mapping helper | ⏳ | `transaction_status` + `fraud_status` Midtrans → `PaymentStatus` internal. Tabel mapping ada di README PR ini. | -| C4 | Service `paymentService.startMidtransPayment(bookingId)` | ⏳ | Bikin Payment row provider=MIDTRANS, kirim ke Midtrans, simpan `snapToken` + `expiresAt`. Kalau Booking sudah PAID → reject. | -| C5 | Halaman payment: tombol "Bayar online (Midtrans)" untuk trip berbayar | ⏳ | Fallback "Transfer manual" tetap ada (provider MANUAL). User pilih sebelum lanjut. | -| C6 | Frontend: load Snap script + invoke `window.snap.pay(token)` | ⏳ | Loaded conditional di halaman payment, bukan global. Pakai client key dari env publik. | -| C7 | Webhook endpoint `app/api/webhooks/midtrans/route.ts` | ⏳ | POST. Verify signature (sha512). Lookup Payment by `externalOrderId`. Update idempotent. Selalu return 200. | -| C8 | Booking status sync setelah webhook PAID | ⏳ | `Booking.status = PAID`. Sync `TripParticipant.paymentConfirmedAt` untuk kompatibilitas. Concurrency: gunakan DB transaction. | -| C9 | Cron / scheduled job: expire Payment lama | ⏳ | Midtrans default expire 24 jam, tapi DB-side juga harus bersih supaya UI status akurat. Bisa dijalankan via Vercel cron atau manual scheduler. | -| C10 | Anti-replay: skip kalau `Payment.status` sudah final (PAID/FAILED/EXPIRED) | ⏳ | Webhook bisa diretry oleh Midtrans. | -| C11 | Logging callback mentah ke `Payment.rawCallback` (Json) | ⏳ | Audit & dispute. | -| C12 | Test scenario di sandbox | ⏳ | Settlement BCA VA, gopay, deny (kartu fraud), expire, cancel. | -| C13 | Status badge di halaman payment | ⏳ | Tampil real-time tanpa polling agresif (refresh manual atau interval longgar 10s). | -| C14 | Email/in-app notification setelah PAID | ⏳ | Optional Phase ini, bisa Phase berikutnya. | +| C1 | Update [env.example](env.example) + 3 env baru + komentar webhook URL | ✅ | [env.example](env.example) | +| C2 | `lib/midtrans.ts` — `createSnapTransaction`, `verifyMidtransSignature` (timing-safe compare), `MIDTRANS` config helper | ✅ | [lib/midtrans.ts](lib/midtrans.ts) | +| C3 | Status mapping `mapMidtransStatus(transaction_status, fraud_status)` → `PaymentStatus` | ✅ | [lib/midtrans.ts](lib/midtrans.ts) | +| C4 | `paymentService.startMidtransPayment(bookingId, userId)` — validate, reuse Payment AWAITING aktif (idempotent re-attempt), atau buat Payment baru + call Snap API + simpan token + expiresAt | ✅ | [server/services/payment.service.ts](server/services/payment.service.ts) | +| C5 | Halaman payment: tombol "Bayar online via Midtrans" + divider "atau" + tombol manual lama | ✅ | [app/trips/[id]/payment/page.tsx](app/trips/%5Bid%5D/payment/page.tsx) | +| C6 | `MidtransPayButton` client component — load Snap.js dengan `data-client-key` dinamis, `window.snap.pay(token, callbacks)`, refresh page setelah Snap close | ✅ | [features/booking/components/midtrans-pay-button.tsx](features/booking/components/midtrans-pay-button.tsx) | +| C7 | Webhook endpoint `app/api/webhooks/midtrans/route.ts` — POST, verify signature, lookup, idempotent, return 200/401 sesuai outcome | ✅ | [app/api/webhooks/midtrans/route.ts](app/api/webhooks/midtrans/route.ts) | +| C8 | `paymentService.handleMidtransWebhook` — verifikasi signature, amount check, transaction (`Payment` + `Booking` + `TripParticipant.paymentConfirmedAt` backcompat) | ✅ | [server/services/payment.service.ts](server/services/payment.service.ts) | +| C10 | Anti-replay: skip update kalau Payment sudah final (PAID/FAILED/EXPIRED/CANCELLED/REFUNDED) | ✅ | [payment.service.ts](server/services/payment.service.ts) | +| C11 | Simpan callback mentah ke `Payment.rawCallback` (audit & dispute), termasuk untuk callback yang di-skip | ✅ | [payment.service.ts](server/services/payment.service.ts) | +| C+ | Server action `startMidtransPaymentAction` (resolve booking dari tripId, bridge ke client) | ✅ | [features/booking/actions.ts](features/booking/actions.ts) | +| C+ | Retry handling: Payment row baru dengan `midtrans-{bookingId}-{retryN}` kalau attempt lama expired/failed; idempotent reuse kalau masih AWAITING | ✅ | [payment.service.ts](server/services/payment.service.ts) | +| C9 | Cron expire Payment lama | ⏸️ skipped | Housekeeping di-handle saat user start payment (auto-expire attempt yang lewat `expiresAt`). Cron formal bisa ditambah kalau perlu cleanup massal. | +| C12 | Test scenario sandbox (settlement, deny, expire) | ⏸️ manual | Perlu env Midtrans diisi + tunneling untuk dev lokal (ngrok/cloudflared). Tidak bisa otomatis dari sini. | +| C13 | Status badge real-time | ⏸️ partial | Page refresh setelah Snap close + halaman SSR pull state baru tiap reload. Polling otomatis belum diimplementasi. | +| C14 | Email/in-app notification setelah PAID | ⏳ pending | Diluar scope PR C — masuk Phase berikutnya. | ### Mapping `transaction_status` Midtrans → `PaymentStatus` @@ -214,13 +217,25 @@ Tambah ke [env.example](env.example) dengan komentar. 5. Pakai DB transaction untuk update Payment + Booking + TripParticipant bersamaan. 6. Selalu return 200 kalau request valid (mismatch signature → 401, sisanya → 200 + log). +### Hardening pasca-audit (sebelum Midtrans live) ✅ + +Empat fix tambahan dari audit security/correctness: + +| Fix | Issue | Solusi | File | +|---|---|---|---| +| 1 | Webhook bisa overwrite Booking CANCELLED/REFUNDED/EXPIRED jadi PAID | Re-fetch Booking di dalam serializable transaction; kalau state konflik, Payment tetap PAID (uang masuk) tapi Booking tidak di-update + `Payment.rejectionReason` di-flag untuk manual review/refund. Webhook outcome `booking_conflict` di-log warning. | [payment.service.ts](server/services/payment.service.ts), [route.ts](app/api/webhooks/midtrans/route.ts) | +| 2 | `startMidtransPayment` lupa cek trip departure date | Tambah `isTripDepartureDayPast` guard, juga di `bookingService.markPaidManual` untuk konsistensi | [payment.service.ts](server/services/payment.service.ts), [booking.service.ts](server/services/booking.service.ts) | +| 3 | `Booking` tidak punya constraint `(tripId, userId)` unique | Tambah `@@unique([tripId, userId])` + migration `20260508160000_booking_unique_trip_user`. `findByTripAndUser` switch dari `findFirst` ke `findUnique` (lebih efisien) | [schema.prisma](prisma/schema.prisma), [migration](prisma/migrations/20260508160000_booking_unique_trip_user/migration.sql), [booking.repo.ts](server/repositories/booking.repo.ts) | +| 4 | Webhook payload tidak schema-validated | Zod `midtransWebhookSchema` (passthrough untuk forward-compat). Webhook route `safeParse` → 400 kalau shape invalid. Service signature pakai type yang inferred dari schema. | [lib/midtrans.ts](lib/midtrans.ts), [route.ts](app/api/webhooks/midtrans/route.ts), [payment.service.ts](server/services/payment.service.ts) | + ### Edge cases yang gampang lupa -- **Quota race**: dua user bayar bersamaan untuk slot terakhir → slot harus di-hold saat Booking dibuat (status AWAITING_PAY masih hitung kuota), release otomatis saat Payment EXPIRED. +- **Quota race**: dua user bayar bersamaan untuk slot terakhir → slot di-hold saat Booking dibuat (status AWAITING_PAY masih hitung kuota via `TripParticipant.status`). Release belum otomatis saat Payment EXPIRED — kalau perlu, tambah cron (lihat C9 yang di-skip). - **Trip dibatalkan organizer setelah peserta bayar** → `Booking.status = REFUNDED` setelah dana balik. Implementasi refund Midtrans = PR terpisah (tidak di scope PR C ini). -- **User retry pembayaran setelah gagal** → bikin Payment baru (bukan reuse), `externalOrderId` baru (`setrip-{bookingId}-{retry}`). Booking status tetap AWAITING_PAY. -- **Webhook duplicate**: Midtrans bisa kirim notifikasi yang sama 2-3 kali. Idempotency key = `Payment.externalOrderId` + status terkini. -- **Sandbox vs production**: simulator Midtrans akan kirim callback ke `MIDTRANS_NOTIFICATION_URL`. Pastikan URL sandbox bisa diakses publik (tunneling kalau dev lokal — ngrok / cloudflared). +- **User retry pembayaran setelah gagal** → bikin Payment baru, `externalOrderId` baru (`midtrans-{bookingId}-{retryN}`). Reuse kalau masih AWAITING & belum expired. +- **Webhook duplicate**: Midtrans bisa kirim notifikasi yang sama 2-3 kali. Idempotent: skip update kalau Payment sudah final, tapi tetap simpan callback ke `rawCallback` untuk audit. +- **Sandbox vs production**: webhook URL diset di dashboard Midtrans = `/api/webhooks/midtrans`. Dev lokal perlu tunneling (ngrok / cloudflared) supaya endpoint bisa di-reach Midtrans. +- **Booking belum approved (`PENDING`) tapi user coba bayar** — `paymentService.startMidtransPayment` reject dengan pesan jelas. UI sudah hide tombol di state ini. --- diff --git a/app/api/webhooks/midtrans/route.ts b/app/api/webhooks/midtrans/route.ts new file mode 100644 index 0000000..8af5930 --- /dev/null +++ b/app/api/webhooks/midtrans/route.ts @@ -0,0 +1,81 @@ +import { NextRequest, NextResponse } from "next/server"; +import { midtransWebhookSchema } from "@/lib/midtrans"; +import { paymentService } from "@/server/services/payment.service"; + +export const runtime = "nodejs"; +export const dynamic = "force-dynamic"; + +/** + * Webhook callback dari Midtrans. + * + * Aturan response: + * - Body bukan JSON / shape tidak valid → 400 (Midtrans tetap retry, tapi mereka pasti + * kirim shape valid; 400 di sini = bug bukan dari Midtrans). + * - Signature mismatch → 401 (Midtrans tidak retry untuk auth error). + * - Sudah final / unknown order / amount mismatch → 200 OK + log + * (kita tidak mau Midtrans retry forever untuk kasus yang server-side perlu manual review). + * - Sukses update → 200 OK. + * + * URL ini harus didaftarkan di dashboard Midtrans: + * `/api/webhooks/midtrans`. + */ +export async function POST(req: NextRequest) { + let raw: unknown; + try { + raw = await req.json(); + } catch { + return NextResponse.json({ error: "Body bukan JSON valid" }, { status: 400 }); + } + + const parsed = midtransWebhookSchema.safeParse(raw); + if (!parsed.success) { + console.warn( + "[midtrans-webhook] payload schema invalid", + parsed.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`) + ); + return NextResponse.json( + { error: "Payload schema invalid" }, + { status: 400 } + ); + } + const body = parsed.data; + + let outcome; + try { + outcome = await paymentService.handleMidtransWebhook(body); + } catch (err) { + console.error("[midtrans-webhook] gagal proses callback", err, { + order_id: body.order_id, + }); + return NextResponse.json( + { error: "Gagal memproses callback" }, + { status: 500 } + ); + } + + if (!outcome.ok) { + if (outcome.reason === "signature_mismatch") { + console.warn("[midtrans-webhook] signature mismatch", { + order_id: body.order_id, + }); + return NextResponse.json({ error: "Invalid signature" }, { status: 401 }); + } + if (outcome.reason === "amount_mismatch") { + console.warn("[midtrans-webhook] amount mismatch", { + order_id: body.order_id, + gross_amount: body.gross_amount, + }); + // Return 200 supaya Midtrans tidak retry; investigasi via log. + return NextResponse.json({ status: "amount_mismatch_logged" }); + } + } + + if (outcome.ok && outcome.status === "booking_conflict") { + console.warn( + "[midtrans-webhook] PAID arrived for booking in conflict state — manual review required", + { order_id: body.order_id, transaction_id: body.transaction_id } + ); + } + + return NextResponse.json({ status: outcome.ok ? outcome.status : "error" }); +} diff --git a/app/generated/prisma/internal/class.ts b/app/generated/prisma/internal/class.ts index e19f04f..88f0669 100644 --- a/app/generated/prisma/internal/class.ts +++ b/app/generated/prisma/internal/class.ts @@ -20,7 +20,7 @@ const config: runtime.GetPrismaClientConfig = { "clientVersion": "7.8.0", "engineVersion": "3c6e192761c0362d496ed980de936e2f3cebcd3a", "activeProvider": "postgresql", - "inlineSchema": "generator client {\n provider = \"prisma-client\"\n output = \"../app/generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n}\n\nmodel User {\n id String @id @default(cuid())\n name String\n email String @unique\n /// Hash bcrypt. Null untuk user yang sign-in via OAuth (mis. Google).\n password String?\n image String?\n /// Diisi PrismaAdapter NextAuth saat email diverifikasi provider OAuth (Google selalu sudah verified).\n emailVerified DateTime?\n /// Apakah user telah menyetujui Syarat & Ketentuan dan Kebijakan Privasi\n acceptedTermsAndPrivacy Boolean @default(false)\n /// Waktu user menyetujui Syarat & Ketentuan dan Kebijakan Privasi\n acceptedAt DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n accounts Account[]\n trips Trip[]\n participations TripParticipant[]\n tripReviews TripReview[]\n bookings Booking[]\n\n organizerVerification OrganizerVerification? @relation(\"OrganizerVerificationOwner\")\n reviewedVerifications OrganizerVerification[] @relation(\"OrganizerVerificationReviewer\")\n\n profile UserProfile?\n}\n\n/// Profil sosial publik. Berisi info yang user pilih untuk dibagikan ke peserta lain\n/// (bio, kota, minat, vibe). Tidak menyimpan data sensitif — KYC tetap di OrganizerVerification.\nmodel UserProfile {\n id String @id @default(cuid())\n userId String @unique\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n /// Bio singkat, teks bebas\n bio String?\n /// Kota domisili (teks bebas, mis. \"Bandung\", \"Jakarta Selatan\")\n city String?\n /// Tag minat aktivitas (mis. [\"hiking\", \"fotografi\", \"yoga\"])\n interests String[] @default([])\n /// Username Instagram (tanpa @, opsional)\n instagram String?\n /// Gaya jalan / energi user — dipakai untuk matching teman dengan ritme serupa.\n vibe Vibe?\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nenum Vibe {\n CHILL\n BALANCED\n HARDCORE\n}\n\n/// Tabel link akun OAuth pihak ketiga (Google, dst). Diisi oleh PrismaAdapter NextAuth.\n/// Session tidak pakai DB — kita pakai JWT, jadi Session/VerificationToken tidak perlu.\nmodel Account {\n id String @id @default(cuid())\n userId String\n type String\n provider String\n providerAccountId String\n refresh_token String?\n access_token String?\n expires_at Int?\n token_type String?\n scope String?\n id_token String?\n session_state String?\n\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@unique([provider, providerAccountId])\n}\n\nmodel OrganizerVerification {\n id String @id @default(cuid())\n userId String @unique\n user User @relation(\"OrganizerVerificationOwner\", fields: [userId], references: [id], onDelete: Cascade)\n\n /// Nama lengkap sesuai KTP\n fullName String\n /// NIK terenkripsi (AES-256-GCM, base64). Plaintext tidak disimpan.\n nikEncrypted String\n /// HMAC-SHA256(NIK + pepper) untuk uniqueness lookup tanpa membuka plaintext.\n nikHash String @unique\n birthDate DateTime\n address String\n\n /// Storage key foto KTP (mis. `ktp/.jpg`). File disimpan terenkripsi di luar /public.\n ktpImageKey String\n /// Storage key foto liveness — user memegang kertas bertuliskan \"SETRIP\".\n /// (Sebelumnya: selfie memegang KTP. Diganti supaya user tidak perlu memajang KTP dua kali.)\n livenessKey String\n\n bankName String\n bankAccountNumber String\n bankAccountName String\n\n status VerificationStatus @default(PENDING)\n rejectionReason String?\n reviewedAt DateTime?\n reviewedById String?\n reviewedBy User? @relation(\"OrganizerVerificationReviewer\", fields: [reviewedById], references: [id])\n verifiedAt DateTime?\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nenum VerificationStatus {\n PENDING\n APPROVED\n REJECTED\n}\n\nmodel Trip {\n id String @id @default(cuid())\n title String\n description String?\n /// Kategori aktivitas.\n category ActivityCategory @default(HIKING)\n /// Destinasi/subjek aktivitas — interpretasinya tergantung kategori (gunung untuk HIKING, spot untuk DIVING, venue untuk CONCERT, tema untuk WORKSHOP, dst).\n destination String\n location String\n /// Titik kumpul / meeting point (teks bebas)\n meetingPoint String?\n /// Itinerary hari per hari (teks bebas, bullet OK)\n itinerary String?\n /// Yang termasuk harga (teks bebas)\n whatsIncluded String?\n /// Yang tidak termasuk (teks bebas)\n whatsExcluded String?\n date DateTime\n endDate DateTime?\n maxParticipants Int\n price Int\n /// Ritme/energi trip — dipakai untuk matching dengan vibe user.\n vibe Vibe?\n status TripStatus @default(OPEN)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n organizerId String\n organizer User @relation(fields: [organizerId], references: [id])\n\n participants TripParticipant[]\n images TripImage[]\n reviews TripReview[]\n bookings Booking[]\n\n @@index([category, status, date])\n @@index([vibe, status, date])\n}\n\nmodel TripReview {\n id String @id @default(cuid())\n rating Int\n comment String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n tripId String\n trip Trip @relation(fields: [tripId], references: [id], onDelete: Cascade)\n\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@unique([tripId, userId])\n}\n\nmodel TripImage {\n id String @id @default(cuid())\n url String\n caption String?\n order Int @default(0)\n\n tripId String\n trip Trip @relation(fields: [tripId], references: [id], onDelete: Cascade)\n}\n\nmodel TripParticipant {\n id String @id @default(cuid())\n status ParticipantStatus @default(PENDING)\n createdAt DateTime @default(now())\n /// @deprecated — sumber kebenaran pindah ke Booking/Payment. Tetap di-update\n /// untuk backward-compat selama transisi UI lama. Akan dihapus PR berikutnya.\n markedPaidAt DateTime?\n /// @deprecated — sumber kebenaran pindah ke Booking/Payment. Tetap di-update\n /// untuk backward-compat selama transisi UI lama. Akan dihapus PR berikutnya.\n paymentConfirmedAt DateTime?\n\n tripId String\n trip Trip @relation(fields: [tripId], references: [id])\n\n userId String\n user User @relation(fields: [userId], references: [id])\n\n booking Booking?\n\n @@unique([tripId, userId])\n}\n\nenum TripStatus {\n OPEN\n FULL\n CLOSED\n COMPLETED\n}\n\nenum ActivityCategory {\n HIKING\n CAMPING\n SNORKELING\n DIVING\n ISLAND_HOPPING\n CITY_TRIP\n CULINARY\n CONCERT\n WORKSHOP\n RETREAT\n}\n\nenum ParticipantStatus {\n PENDING\n CONFIRMED\n CANCELLED\n}\n\n/// Booking 1-1 ke TripParticipant. Lifecycle ikut peserta:\n/// - join → Booking PENDING (menunggu approve organizer)\n/// - organizer confirm → AWAITING_PAY (paid trip) atau PAID (free trip)\n/// - peserta + organizer rampungkan pembayaran → PAID\n/// - cancel/reject → CANCELLED\n/// `amount` adalah snapshot harga saat booking dibuat — protect dari perubahan trip.price.\nmodel Booking {\n id String @id @default(cuid())\n tripId String\n trip Trip @relation(fields: [tripId], references: [id])\n userId String\n user User @relation(fields: [userId], references: [id])\n participantId String @unique\n participant TripParticipant @relation(fields: [participantId], references: [id], onDelete: Cascade)\n\n amount Int\n currency String @default(\"IDR\")\n status BookingStatus @default(PENDING)\n\n payments Payment[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([tripId, status])\n @@index([userId])\n}\n\nenum BookingStatus {\n PENDING\n AWAITING_PAY\n PAID\n CANCELLED\n REFUNDED\n EXPIRED\n}\n\n/// Satu attempt pembayaran. Satu Booking bisa punya banyak Payment kalau retry\n/// (di Phase MIDTRANS nanti). Untuk MANUAL biasanya cukup 1 Payment.\nmodel Payment {\n id String @id @default(cuid())\n bookingId String\n booking Booking @relation(fields: [bookingId], references: [id], onDelete: Cascade)\n\n provider PaymentProvider\n /// order_id eksternal (unik per attempt). Format MANUAL: `manual-`.\n /// Format MIDTRANS nanti: `midtrans--`.\n externalOrderId String @unique\n /// transaction_id dari gateway. Kosong untuk MANUAL atau sebelum first callback.\n externalTxId String?\n /// Metode konkret: bca_va, gopay, qris, manual_transfer, dst.\n method String?\n amount Int\n status PaymentStatus @default(PENDING)\n\n /// Snapshot mentah callback gateway (untuk audit & dispute).\n rawCallback Json?\n /// Snap token Midtrans / redirect URL.\n snapToken String?\n /// Kapan attempt ini kadaluarsa (Midtrans default 24 jam).\n expiresAt DateTime?\n\n paidAt DateTime?\n failedAt DateTime?\n rejectionReason String?\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([bookingId, status])\n @@index([provider, status])\n}\n\nenum PaymentProvider {\n MANUAL\n MIDTRANS\n}\n\nenum PaymentStatus {\n PENDING\n AWAITING\n PAID\n FAILED\n EXPIRED\n CANCELLED\n REFUNDED\n}\n", + "inlineSchema": "generator client {\n provider = \"prisma-client\"\n output = \"../app/generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n}\n\nmodel User {\n id String @id @default(cuid())\n name String\n email String @unique\n /// Hash bcrypt. Null untuk user yang sign-in via OAuth (mis. Google).\n password String?\n image String?\n /// Diisi PrismaAdapter NextAuth saat email diverifikasi provider OAuth (Google selalu sudah verified).\n emailVerified DateTime?\n /// Apakah user telah menyetujui Syarat & Ketentuan dan Kebijakan Privasi\n acceptedTermsAndPrivacy Boolean @default(false)\n /// Waktu user menyetujui Syarat & Ketentuan dan Kebijakan Privasi\n acceptedAt DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n accounts Account[]\n trips Trip[]\n participations TripParticipant[]\n tripReviews TripReview[]\n bookings Booking[]\n\n organizerVerification OrganizerVerification? @relation(\"OrganizerVerificationOwner\")\n reviewedVerifications OrganizerVerification[] @relation(\"OrganizerVerificationReviewer\")\n\n profile UserProfile?\n}\n\n/// Profil sosial publik. Berisi info yang user pilih untuk dibagikan ke peserta lain\n/// (bio, kota, minat, vibe). Tidak menyimpan data sensitif — KYC tetap di OrganizerVerification.\nmodel UserProfile {\n id String @id @default(cuid())\n userId String @unique\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n /// Bio singkat, teks bebas\n bio String?\n /// Kota domisili (teks bebas, mis. \"Bandung\", \"Jakarta Selatan\")\n city String?\n /// Tag minat aktivitas (mis. [\"hiking\", \"fotografi\", \"yoga\"])\n interests String[] @default([])\n /// Username Instagram (tanpa @, opsional)\n instagram String?\n /// Gaya jalan / energi user — dipakai untuk matching teman dengan ritme serupa.\n vibe Vibe?\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nenum Vibe {\n CHILL\n BALANCED\n HARDCORE\n}\n\n/// Tabel link akun OAuth pihak ketiga (Google, dst). Diisi oleh PrismaAdapter NextAuth.\n/// Session tidak pakai DB — kita pakai JWT, jadi Session/VerificationToken tidak perlu.\nmodel Account {\n id String @id @default(cuid())\n userId String\n type String\n provider String\n providerAccountId String\n refresh_token String?\n access_token String?\n expires_at Int?\n token_type String?\n scope String?\n id_token String?\n session_state String?\n\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@unique([provider, providerAccountId])\n}\n\nmodel OrganizerVerification {\n id String @id @default(cuid())\n userId String @unique\n user User @relation(\"OrganizerVerificationOwner\", fields: [userId], references: [id], onDelete: Cascade)\n\n /// Nama lengkap sesuai KTP\n fullName String\n /// NIK terenkripsi (AES-256-GCM, base64). Plaintext tidak disimpan.\n nikEncrypted String\n /// HMAC-SHA256(NIK + pepper) untuk uniqueness lookup tanpa membuka plaintext.\n nikHash String @unique\n birthDate DateTime\n address String\n\n /// Storage key foto KTP (mis. `ktp/.jpg`). File disimpan terenkripsi di luar /public.\n ktpImageKey String\n /// Storage key foto liveness — user memegang kertas bertuliskan \"SETRIP\".\n /// (Sebelumnya: selfie memegang KTP. Diganti supaya user tidak perlu memajang KTP dua kali.)\n livenessKey String\n\n bankName String\n bankAccountNumber String\n bankAccountName String\n\n status VerificationStatus @default(PENDING)\n rejectionReason String?\n reviewedAt DateTime?\n reviewedById String?\n reviewedBy User? @relation(\"OrganizerVerificationReviewer\", fields: [reviewedById], references: [id])\n verifiedAt DateTime?\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nenum VerificationStatus {\n PENDING\n APPROVED\n REJECTED\n}\n\nmodel Trip {\n id String @id @default(cuid())\n title String\n description String?\n /// Kategori aktivitas.\n category ActivityCategory @default(HIKING)\n /// Destinasi/subjek aktivitas — interpretasinya tergantung kategori (gunung untuk HIKING, spot untuk DIVING, venue untuk CONCERT, tema untuk WORKSHOP, dst).\n destination String\n location String\n /// Titik kumpul / meeting point (teks bebas)\n meetingPoint String?\n /// Itinerary hari per hari (teks bebas, bullet OK)\n itinerary String?\n /// Yang termasuk harga (teks bebas)\n whatsIncluded String?\n /// Yang tidak termasuk (teks bebas)\n whatsExcluded String?\n date DateTime\n endDate DateTime?\n maxParticipants Int\n price Int\n /// Ritme/energi trip — dipakai untuk matching dengan vibe user.\n vibe Vibe?\n status TripStatus @default(OPEN)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n organizerId String\n organizer User @relation(fields: [organizerId], references: [id])\n\n participants TripParticipant[]\n images TripImage[]\n reviews TripReview[]\n bookings Booking[]\n\n @@index([category, status, date])\n @@index([vibe, status, date])\n}\n\nmodel TripReview {\n id String @id @default(cuid())\n rating Int\n comment String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n tripId String\n trip Trip @relation(fields: [tripId], references: [id], onDelete: Cascade)\n\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@unique([tripId, userId])\n}\n\nmodel TripImage {\n id String @id @default(cuid())\n url String\n caption String?\n order Int @default(0)\n\n tripId String\n trip Trip @relation(fields: [tripId], references: [id], onDelete: Cascade)\n}\n\nmodel TripParticipant {\n id String @id @default(cuid())\n status ParticipantStatus @default(PENDING)\n createdAt DateTime @default(now())\n /// @deprecated — sumber kebenaran pindah ke Booking/Payment. Tetap di-update\n /// untuk backward-compat selama transisi UI lama. Akan dihapus PR berikutnya.\n markedPaidAt DateTime?\n /// @deprecated — sumber kebenaran pindah ke Booking/Payment. Tetap di-update\n /// untuk backward-compat selama transisi UI lama. Akan dihapus PR berikutnya.\n paymentConfirmedAt DateTime?\n\n tripId String\n trip Trip @relation(fields: [tripId], references: [id])\n\n userId String\n user User @relation(fields: [userId], references: [id])\n\n booking Booking?\n\n @@unique([tripId, userId])\n}\n\nenum TripStatus {\n OPEN\n FULL\n CLOSED\n COMPLETED\n}\n\nenum ActivityCategory {\n HIKING\n CAMPING\n SNORKELING\n DIVING\n ISLAND_HOPPING\n CITY_TRIP\n CULINARY\n CONCERT\n WORKSHOP\n RETREAT\n}\n\nenum ParticipantStatus {\n PENDING\n CONFIRMED\n CANCELLED\n}\n\n/// Booking 1-1 ke TripParticipant. Lifecycle ikut peserta:\n/// - join → Booking PENDING (menunggu approve organizer)\n/// - organizer confirm → AWAITING_PAY (paid trip) atau PAID (free trip)\n/// - peserta + organizer rampungkan pembayaran → PAID\n/// - cancel/reject → CANCELLED\n/// `amount` adalah snapshot harga saat booking dibuat — protect dari perubahan trip.price.\nmodel Booking {\n id String @id @default(cuid())\n tripId String\n trip Trip @relation(fields: [tripId], references: [id])\n userId String\n user User @relation(fields: [userId], references: [id])\n participantId String @unique\n participant TripParticipant @relation(fields: [participantId], references: [id], onDelete: Cascade)\n\n amount Int\n currency String @default(\"IDR\")\n status BookingStatus @default(PENDING)\n\n payments Payment[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n /// Konsistensi: 1-1 ke participant via participantId, dan participant unique\n /// per (tripId, userId). Constraint ini eksplisit + jadi index untuk query\n /// `findByTripAndUser`.\n @@unique([tripId, userId])\n @@index([tripId, status])\n}\n\nenum BookingStatus {\n PENDING\n AWAITING_PAY\n PAID\n CANCELLED\n REFUNDED\n EXPIRED\n}\n\n/// Satu attempt pembayaran. Satu Booking bisa punya banyak Payment kalau retry\n/// (di Phase MIDTRANS nanti). Untuk MANUAL biasanya cukup 1 Payment.\nmodel Payment {\n id String @id @default(cuid())\n bookingId String\n booking Booking @relation(fields: [bookingId], references: [id], onDelete: Cascade)\n\n provider PaymentProvider\n /// order_id eksternal (unik per attempt). Format MANUAL: `manual-`.\n /// Format MIDTRANS nanti: `midtrans--`.\n externalOrderId String @unique\n /// transaction_id dari gateway. Kosong untuk MANUAL atau sebelum first callback.\n externalTxId String?\n /// Metode konkret: bca_va, gopay, qris, manual_transfer, dst.\n method String?\n amount Int\n status PaymentStatus @default(PENDING)\n\n /// Snapshot mentah callback gateway (untuk audit & dispute).\n rawCallback Json?\n /// Snap token Midtrans / redirect URL.\n snapToken String?\n /// Kapan attempt ini kadaluarsa (Midtrans default 24 jam).\n expiresAt DateTime?\n\n paidAt DateTime?\n failedAt DateTime?\n rejectionReason String?\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([bookingId, status])\n @@index([provider, status])\n}\n\nenum PaymentProvider {\n MANUAL\n MIDTRANS\n}\n\nenum PaymentStatus {\n PENDING\n AWAITING\n PAID\n FAILED\n EXPIRED\n CANCELLED\n REFUNDED\n}\n", "runtimeDataModel": { "models": {}, "enums": {}, @@ -35,7 +35,7 @@ const config: runtime.GetPrismaClientConfig = { config.runtimeDataModel = JSON.parse("{\"models\":{\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"image\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"emailVerified\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"acceptedTermsAndPrivacy\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"acceptedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"accounts\",\"kind\":\"object\",\"type\":\"Account\",\"relationName\":\"AccountToUser\"},{\"name\":\"trips\",\"kind\":\"object\",\"type\":\"Trip\",\"relationName\":\"TripToUser\"},{\"name\":\"participations\",\"kind\":\"object\",\"type\":\"TripParticipant\",\"relationName\":\"TripParticipantToUser\"},{\"name\":\"tripReviews\",\"kind\":\"object\",\"type\":\"TripReview\",\"relationName\":\"TripReviewToUser\"},{\"name\":\"bookings\",\"kind\":\"object\",\"type\":\"Booking\",\"relationName\":\"BookingToUser\"},{\"name\":\"organizerVerification\",\"kind\":\"object\",\"type\":\"OrganizerVerification\",\"relationName\":\"OrganizerVerificationOwner\"},{\"name\":\"reviewedVerifications\",\"kind\":\"object\",\"type\":\"OrganizerVerification\",\"relationName\":\"OrganizerVerificationReviewer\"},{\"name\":\"profile\",\"kind\":\"object\",\"type\":\"UserProfile\",\"relationName\":\"UserToUserProfile\"}],\"dbName\":null},\"UserProfile\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToUserProfile\"},{\"name\":\"bio\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"city\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"interests\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"instagram\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"vibe\",\"kind\":\"enum\",\"type\":\"Vibe\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Account\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"provider\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"providerAccountId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"refresh_token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"access_token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expires_at\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"token_type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"scope\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"id_token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"session_state\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"AccountToUser\"}],\"dbName\":null},\"OrganizerVerification\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"OrganizerVerificationOwner\"},{\"name\":\"fullName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"nikEncrypted\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"nikHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"birthDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"address\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ktpImageKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"livenessKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"bankName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"bankAccountNumber\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"bankAccountName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"VerificationStatus\"},{\"name\":\"rejectionReason\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reviewedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"reviewedById\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reviewedBy\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"OrganizerVerificationReviewer\"},{\"name\":\"verifiedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Trip\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"category\",\"kind\":\"enum\",\"type\":\"ActivityCategory\"},{\"name\":\"destination\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"location\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"meetingPoint\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"itinerary\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"whatsIncluded\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"whatsExcluded\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"endDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"maxParticipants\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"price\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"vibe\",\"kind\":\"enum\",\"type\":\"Vibe\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"TripStatus\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"organizerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"organizer\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"TripToUser\"},{\"name\":\"participants\",\"kind\":\"object\",\"type\":\"TripParticipant\",\"relationName\":\"TripToTripParticipant\"},{\"name\":\"images\",\"kind\":\"object\",\"type\":\"TripImage\",\"relationName\":\"TripToTripImage\"},{\"name\":\"reviews\",\"kind\":\"object\",\"type\":\"TripReview\",\"relationName\":\"TripToTripReview\"},{\"name\":\"bookings\",\"kind\":\"object\",\"type\":\"Booking\",\"relationName\":\"BookingToTrip\"}],\"dbName\":null},\"TripReview\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"rating\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"comment\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"tripId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trip\",\"kind\":\"object\",\"type\":\"Trip\",\"relationName\":\"TripToTripReview\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"TripReviewToUser\"}],\"dbName\":null},\"TripImage\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"caption\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"order\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"tripId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trip\",\"kind\":\"object\",\"type\":\"Trip\",\"relationName\":\"TripToTripImage\"}],\"dbName\":null},\"TripParticipant\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"ParticipantStatus\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"markedPaidAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"paymentConfirmedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"tripId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trip\",\"kind\":\"object\",\"type\":\"Trip\",\"relationName\":\"TripToTripParticipant\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"TripParticipantToUser\"},{\"name\":\"booking\",\"kind\":\"object\",\"type\":\"Booking\",\"relationName\":\"BookingToTripParticipant\"}],\"dbName\":null},\"Booking\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tripId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trip\",\"kind\":\"object\",\"type\":\"Trip\",\"relationName\":\"BookingToTrip\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"BookingToUser\"},{\"name\":\"participantId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"participant\",\"kind\":\"object\",\"type\":\"TripParticipant\",\"relationName\":\"BookingToTripParticipant\"},{\"name\":\"amount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"currency\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"BookingStatus\"},{\"name\":\"payments\",\"kind\":\"object\",\"type\":\"Payment\",\"relationName\":\"BookingToPayment\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Payment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"bookingId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"booking\",\"kind\":\"object\",\"type\":\"Booking\",\"relationName\":\"BookingToPayment\"},{\"name\":\"provider\",\"kind\":\"enum\",\"type\":\"PaymentProvider\"},{\"name\":\"externalOrderId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"externalTxId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"method\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"amount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"PaymentStatus\"},{\"name\":\"rawCallback\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"snapToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"paidAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"failedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"rejectionReason\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}") config.parameterizationSchema = { strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"user\",\"accounts\",\"organizer\",\"trip\",\"participant\",\"booking\",\"payments\",\"_count\",\"participants\",\"images\",\"reviews\",\"bookings\",\"trips\",\"participations\",\"tripReviews\",\"reviewedBy\",\"organizerVerification\",\"reviewedVerifications\",\"profile\",\"User.findUnique\",\"User.findUniqueOrThrow\",\"User.findFirst\",\"User.findFirstOrThrow\",\"User.findMany\",\"data\",\"User.createOne\",\"User.createMany\",\"User.createManyAndReturn\",\"User.updateOne\",\"User.updateMany\",\"User.updateManyAndReturn\",\"create\",\"update\",\"User.upsertOne\",\"User.deleteOne\",\"User.deleteMany\",\"having\",\"_min\",\"_max\",\"User.groupBy\",\"User.aggregate\",\"UserProfile.findUnique\",\"UserProfile.findUniqueOrThrow\",\"UserProfile.findFirst\",\"UserProfile.findFirstOrThrow\",\"UserProfile.findMany\",\"UserProfile.createOne\",\"UserProfile.createMany\",\"UserProfile.createManyAndReturn\",\"UserProfile.updateOne\",\"UserProfile.updateMany\",\"UserProfile.updateManyAndReturn\",\"UserProfile.upsertOne\",\"UserProfile.deleteOne\",\"UserProfile.deleteMany\",\"UserProfile.groupBy\",\"UserProfile.aggregate\",\"Account.findUnique\",\"Account.findUniqueOrThrow\",\"Account.findFirst\",\"Account.findFirstOrThrow\",\"Account.findMany\",\"Account.createOne\",\"Account.createMany\",\"Account.createManyAndReturn\",\"Account.updateOne\",\"Account.updateMany\",\"Account.updateManyAndReturn\",\"Account.upsertOne\",\"Account.deleteOne\",\"Account.deleteMany\",\"_avg\",\"_sum\",\"Account.groupBy\",\"Account.aggregate\",\"OrganizerVerification.findUnique\",\"OrganizerVerification.findUniqueOrThrow\",\"OrganizerVerification.findFirst\",\"OrganizerVerification.findFirstOrThrow\",\"OrganizerVerification.findMany\",\"OrganizerVerification.createOne\",\"OrganizerVerification.createMany\",\"OrganizerVerification.createManyAndReturn\",\"OrganizerVerification.updateOne\",\"OrganizerVerification.updateMany\",\"OrganizerVerification.updateManyAndReturn\",\"OrganizerVerification.upsertOne\",\"OrganizerVerification.deleteOne\",\"OrganizerVerification.deleteMany\",\"OrganizerVerification.groupBy\",\"OrganizerVerification.aggregate\",\"Trip.findUnique\",\"Trip.findUniqueOrThrow\",\"Trip.findFirst\",\"Trip.findFirstOrThrow\",\"Trip.findMany\",\"Trip.createOne\",\"Trip.createMany\",\"Trip.createManyAndReturn\",\"Trip.updateOne\",\"Trip.updateMany\",\"Trip.updateManyAndReturn\",\"Trip.upsertOne\",\"Trip.deleteOne\",\"Trip.deleteMany\",\"Trip.groupBy\",\"Trip.aggregate\",\"TripReview.findUnique\",\"TripReview.findUniqueOrThrow\",\"TripReview.findFirst\",\"TripReview.findFirstOrThrow\",\"TripReview.findMany\",\"TripReview.createOne\",\"TripReview.createMany\",\"TripReview.createManyAndReturn\",\"TripReview.updateOne\",\"TripReview.updateMany\",\"TripReview.updateManyAndReturn\",\"TripReview.upsertOne\",\"TripReview.deleteOne\",\"TripReview.deleteMany\",\"TripReview.groupBy\",\"TripReview.aggregate\",\"TripImage.findUnique\",\"TripImage.findUniqueOrThrow\",\"TripImage.findFirst\",\"TripImage.findFirstOrThrow\",\"TripImage.findMany\",\"TripImage.createOne\",\"TripImage.createMany\",\"TripImage.createManyAndReturn\",\"TripImage.updateOne\",\"TripImage.updateMany\",\"TripImage.updateManyAndReturn\",\"TripImage.upsertOne\",\"TripImage.deleteOne\",\"TripImage.deleteMany\",\"TripImage.groupBy\",\"TripImage.aggregate\",\"TripParticipant.findUnique\",\"TripParticipant.findUniqueOrThrow\",\"TripParticipant.findFirst\",\"TripParticipant.findFirstOrThrow\",\"TripParticipant.findMany\",\"TripParticipant.createOne\",\"TripParticipant.createMany\",\"TripParticipant.createManyAndReturn\",\"TripParticipant.updateOne\",\"TripParticipant.updateMany\",\"TripParticipant.updateManyAndReturn\",\"TripParticipant.upsertOne\",\"TripParticipant.deleteOne\",\"TripParticipant.deleteMany\",\"TripParticipant.groupBy\",\"TripParticipant.aggregate\",\"Booking.findUnique\",\"Booking.findUniqueOrThrow\",\"Booking.findFirst\",\"Booking.findFirstOrThrow\",\"Booking.findMany\",\"Booking.createOne\",\"Booking.createMany\",\"Booking.createManyAndReturn\",\"Booking.updateOne\",\"Booking.updateMany\",\"Booking.updateManyAndReturn\",\"Booking.upsertOne\",\"Booking.deleteOne\",\"Booking.deleteMany\",\"Booking.groupBy\",\"Booking.aggregate\",\"Payment.findUnique\",\"Payment.findUniqueOrThrow\",\"Payment.findFirst\",\"Payment.findFirstOrThrow\",\"Payment.findMany\",\"Payment.createOne\",\"Payment.createMany\",\"Payment.createManyAndReturn\",\"Payment.updateOne\",\"Payment.updateMany\",\"Payment.updateManyAndReturn\",\"Payment.upsertOne\",\"Payment.deleteOne\",\"Payment.deleteMany\",\"Payment.groupBy\",\"Payment.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"bookingId\",\"PaymentProvider\",\"provider\",\"externalOrderId\",\"externalTxId\",\"method\",\"amount\",\"PaymentStatus\",\"status\",\"rawCallback\",\"snapToken\",\"expiresAt\",\"paidAt\",\"failedAt\",\"rejectionReason\",\"createdAt\",\"updatedAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"string_contains\",\"string_starts_with\",\"string_ends_with\",\"array_starts_with\",\"array_ends_with\",\"array_contains\",\"contains\",\"startsWith\",\"endsWith\",\"tripId\",\"userId\",\"participantId\",\"currency\",\"BookingStatus\",\"ParticipantStatus\",\"markedPaidAt\",\"paymentConfirmedAt\",\"url\",\"caption\",\"order\",\"rating\",\"comment\",\"title\",\"description\",\"ActivityCategory\",\"category\",\"destination\",\"location\",\"meetingPoint\",\"itinerary\",\"whatsIncluded\",\"whatsExcluded\",\"date\",\"endDate\",\"maxParticipants\",\"price\",\"Vibe\",\"vibe\",\"TripStatus\",\"organizerId\",\"fullName\",\"nikEncrypted\",\"nikHash\",\"birthDate\",\"address\",\"ktpImageKey\",\"livenessKey\",\"bankName\",\"bankAccountNumber\",\"bankAccountName\",\"VerificationStatus\",\"reviewedAt\",\"reviewedById\",\"verifiedAt\",\"type\",\"providerAccountId\",\"refresh_token\",\"access_token\",\"expires_at\",\"token_type\",\"scope\",\"id_token\",\"session_state\",\"bio\",\"city\",\"interests\",\"instagram\",\"has\",\"hasEvery\",\"hasSome\",\"name\",\"email\",\"password\",\"image\",\"emailVerified\",\"acceptedTermsAndPrivacy\",\"acceptedAt\",\"every\",\"some\",\"none\",\"tripId_userId\",\"provider_providerAccountId\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"push\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"), - graph: "3AVgoAEVBAAA3wIAIA4AAOMCACAPAADgAgAgEAAA4QIAIBEAAOICACATAADkAgAgFAAA5QIAIBUAAOYCACC-AQAA3QIAML8BAAAqABDAAQAA3QIAMMEBAQAAAAHRAUAA0gIAIdIBQADSAgAhoQIBANgCACGiAgEAAAABowIBANACACGkAgEA0AIAIaUCQADbAgAhpgIgAN4CACGnAkAA2wIAIQEAAAABACAQAwAA0wIAIL4BAAD-AgAwvwEAAAMAEMABAAD-AgAwwQEBANgCACHEAQEA2AIAIeUBAQDYAgAhkQIBANgCACGSAgEA2AIAIZMCAQDQAgAhlAIBANACACGVAgIA_wIAIZYCAQDQAgAhlwIBANACACGYAgEA0AIAIZkCAQDQAgAhCAMAAKEEACCTAgAAgAMAIJQCAACAAwAglQIAAIADACCWAgAAgAMAIJcCAACAAwAgmAIAAIADACCZAgAAgAMAIBEDAADTAgAgvgEAAP4CADC_AQAAAwAQwAEAAP4CADDBAQEAAAABxAEBANgCACHlAQEA2AIAIZECAQDYAgAhkgIBANgCACGTAgEA0AIAIZQCAQDQAgAhlQICAP8CACGWAgEA0AIAIZcCAQDQAgAhmAIBANACACGZAgEA0AIAIawCAAD9AgAgAwAAAAMAIAEAAAQAMAIAAAUAIBsFAADTAgAgCwAA4QIAIAwAAPwCACANAADiAgAgDgAA4wIAIL4BAAD5AgAwvwEAAAcAEMABAAD5AgAwwQEBANgCACHKAQAA-wKCAiLRAUAA0gIAIdIBQADSAgAh8QEBANgCACHyAQEA0AIAIfQBAAD6AvQBIvUBAQDYAgAh9gEBANgCACH3AQEA0AIAIfgBAQDQAgAh-QEBANACACH6AQEA0AIAIfsBQADSAgAh_AFAANsCACH9AQIA6AIAIf4BAgDoAgAhgAIAANECgAIjggIBANgCACEMBQAAoQQAIAsAAIEFACAMAACLBQAgDQAAggUAIA4AAIMFACDyAQAAgAMAIPcBAACAAwAg-AEAAIADACD5AQAAgAMAIPoBAACAAwAg_AEAAIADACCAAgAAgAMAIBsFAADTAgAgCwAA4QIAIAwAAPwCACANAADiAgAgDgAA4wIAIL4BAAD5AgAwvwEAAAcAEMABAAD5AgAwwQEBAAAAAcoBAAD7AoICItEBQADSAgAh0gFAANICACHxAQEA2AIAIfIBAQDQAgAh9AEAAPoC9AEi9QEBANgCACH2AQEA2AIAIfcBAQDQAgAh-AEBANACACH5AQEA0AIAIfoBAQDQAgAh-wFAANICACH8AUAA2wIAIf0BAgDoAgAh_gECAOgCACGAAgAA0QKAAiOCAgEA2AIAIQMAAAAHACABAAAIADACAAAJACANAwAA0wIAIAYAAOoCACAIAAD4AgAgvgEAAPYCADC_AQAACwAQwAEAAPYCADDBAQEA2AIAIcoBAAD3AuoBItEBQADSAgAh5AEBANgCACHlAQEA2AIAIeoBQADbAgAh6wFAANsCACEFAwAAoQQAIAYAAIcFACAIAACKBQAg6gEAAIADACDrAQAAgAMAIA4DAADTAgAgBgAA6gIAIAgAAPgCACC-AQAA9gIAML8BAAALABDAAQAA9gIAMMEBAQAAAAHKAQAA9wLqASLRAUAA0gIAIeQBAQDYAgAh5QEBANgCACHqAUAA2wIAIesBQADbAgAhqwIAAPUCACADAAAACwAgAQAADAAwAgAADQAgEAMAANMCACAGAADqAgAgBwAA6wIAIAkAAOwCACC-AQAA5wIAML8BAAAPABDAAQAA5wIAMMEBAQDYAgAhyAECAOgCACHKAQAA6QLpASLRAUAA0gIAIdIBQADSAgAh5AEBANgCACHlAQEA2AIAIeYBAQDYAgAh5wEBANgCACEBAAAADwAgFAgAAPQCACC-AQAA8AIAML8BAAARABDAAQAA8AIAMMEBAQDYAgAhwgEBANgCACHEAQAA8QLEASLFAQEA2AIAIcYBAQDQAgAhxwEBANACACHIAQIA6AIAIcoBAADyAsoBIssBAADzAgAgzAEBANACACHNAUAA2wIAIc4BQADbAgAhzwFAANsCACHQAQEA0AIAIdEBQADSAgAh0gFAANICACEJCAAAigUAIMYBAACAAwAgxwEAAIADACDLAQAAgAMAIMwBAACAAwAgzQEAAIADACDOAQAAgAMAIM8BAACAAwAg0AEAAIADACAUCAAA9AIAIL4BAADwAgAwvwEAABEAEMABAADwAgAwwQEBAAAAAcIBAQDYAgAhxAEAAPECxAEixQEBAAAAAcYBAQDQAgAhxwEBANACACHIAQIA6AIAIcoBAADyAsoBIssBAADzAgAgzAEBANACACHNAUAA2wIAIc4BQADbAgAhzwFAANsCACHQAQEA0AIAIdEBQADSAgAh0gFAANICACEDAAAAEQAgAQAAEgAwAgAAEwAgAQAAABEAIAkGAADqAgAgvgEAAO8CADC_AQAAFgAQwAEAAO8CADDBAQEA2AIAIeQBAQDYAgAh7AEBANgCACHtAQEA0AIAIe4BAgDoAgAhAgYAAIcFACDtAQAAgAMAIAkGAADqAgAgvgEAAO8CADC_AQAAFgAQwAEAAO8CADDBAQEAAAAB5AEBANgCACHsAQEA2AIAIe0BAQDQAgAh7gECAOgCACEDAAAAFgAgAQAAFwAwAgAAGAAgDAMAANMCACAGAADqAgAgvgEAAO4CADC_AQAAGgAQwAEAAO4CADDBAQEA2AIAIdEBQADSAgAh0gFAANICACHkAQEA2AIAIeUBAQDYAgAh7wECAOgCACHwAQEA0AIAIQMDAAChBAAgBgAAhwUAIPABAACAAwAgDQMAANMCACAGAADqAgAgvgEAAO4CADC_AQAAGgAQwAEAAO4CADDBAQEAAAAB0QFAANICACHSAUAA0gIAIeQBAQDYAgAh5QEBANgCACHvAQIA6AIAIfABAQDQAgAhqwIAAO0CACADAAAAGgAgAQAAGwAwAgAAHAAgBAMAAKEEACAGAACHBQAgBwAAiAUAIAkAAIkFACAQAwAA0wIAIAYAAOoCACAHAADrAgAgCQAA7AIAIL4BAADnAgAwvwEAAA8AEMABAADnAgAwwQEBAAAAAcgBAgDoAgAhygEAAOkC6QEi0QFAANICACHSAUAA0gIAIeQBAQDYAgAh5QEBANgCACHmAQEAAAAB5wEBANgCACEDAAAADwAgAQAAHgAwAgAAHwAgAQAAAAsAIAEAAAAWACABAAAAGgAgAQAAAA8AIAMAAAALACABAAAMADACAAANACADAAAAGgAgAQAAGwAwAgAAHAAgAwAAAA8AIAEAAB4AMAIAAB8AIBgDAADTAgAgEgAA3AIAIL4BAADZAgAwvwEAACgAEMABAADZAgAwwQEBANgCACHKAQAA2gKOAiLQAQEA0AIAIdEBQADSAgAh0gFAANICACHlAQEA2AIAIYMCAQDYAgAhhAIBANgCACGFAgEA2AIAIYYCQADSAgAhhwIBANgCACGIAgEA2AIAIYkCAQDYAgAhigIBANgCACGLAgEA2AIAIYwCAQDYAgAhjgJAANsCACGPAgEA0AIAIZACQADbAgAhAQAAACgAIBUEAADfAgAgDgAA4wIAIA8AAOACACAQAADhAgAgEQAA4gIAIBMAAOQCACAUAADlAgAgFQAA5gIAIL4BAADdAgAwvwEAACoAEMABAADdAgAwwQEBANgCACHRAUAA0gIAIdIBQADSAgAhoQIBANgCACGiAgEA2AIAIaMCAQDQAgAhpAIBANACACGlAkAA2wIAIaYCIADeAgAhpwJAANsCACEBAAAAKgAgBgMAAKEEACASAAChBAAg0AEAAIADACCOAgAAgAMAII8CAACAAwAgkAIAAIADACAYAwAA0wIAIBIAANwCACC-AQAA2QIAML8BAAAoABDAAQAA2QIAMMEBAQAAAAHKAQAA2gKOAiLQAQEA0AIAIdEBQADSAgAh0gFAANICACHlAQEAAAABgwIBANgCACGEAgEA2AIAIYUCAQAAAAGGAkAA0gIAIYcCAQDYAgAhiAIBANgCACGJAgEA2AIAIYoCAQDYAgAhiwIBANgCACGMAgEA2AIAIY4CQADbAgAhjwIBANACACGQAkAA2wIAIQMAAAAoACABAAAsADACAAAtACANAwAA0wIAIL4BAADPAgAwvwEAAC8AEMABAADPAgAwwQEBANgCACHRAUAA0gIAIdIBQADSAgAh5QEBANgCACGAAgAA0QKAAiOaAgEA0AIAIZsCAQDQAgAhnAIAAM4CACCdAgEA0AIAIQEAAAAvACABAAAAAwAgAQAAAAcAIAEAAAALACABAAAAGgAgAQAAAA8AIAEAAAAoACABAAAAAQAgDAQAAP8EACAOAACDBQAgDwAAgAUAIBAAAIEFACARAACCBQAgEwAAhAUAIBQAAIUFACAVAACGBQAgowIAAIADACCkAgAAgAMAIKUCAACAAwAgpwIAAIADACADAAAAKgAgAQAAOAAwAgAAAQAgAwAAACoAIAEAADgAMAIAAAEAIAMAAAAqACABAAA4ADACAAABACASBAAA9wQAIA4AAPsEACAPAAD4BAAgEAAA-QQAIBEAAPoEACATAAD8BAAgFAAA_QQAIBUAAP4EACDBAQEAAAAB0QFAAAAAAdIBQAAAAAGhAgEAAAABogIBAAAAAaMCAQAAAAGkAgEAAAABpQJAAAAAAaYCIAAAAAGnAkAAAAABARsAADwAIArBAQEAAAAB0QFAAAAAAdIBQAAAAAGhAgEAAAABogIBAAAAAaMCAQAAAAGkAgEAAAABpQJAAAAAAaYCIAAAAAGnAkAAAAABARsAAD4AMAEbAAA-ADASBAAApgQAIA4AAKoEACAPAACnBAAgEAAAqAQAIBEAAKkEACATAACrBAAgFAAArAQAIBUAAK0EACDBAQEAhgMAIdEBQACMAwAh0gFAAIwDACGhAgEAhgMAIaICAQCGAwAhowIBAIgDACGkAgEAiAMAIaUCQACLAwAhpgIgAKUEACGnAkAAiwMAIQIAAAABACAbAABBACAKwQEBAIYDACHRAUAAjAMAIdIBQACMAwAhoQIBAIYDACGiAgEAhgMAIaMCAQCIAwAhpAIBAIgDACGlAkAAiwMAIaYCIAClBAAhpwJAAIsDACECAAAAKgAgGwAAQwAgAgAAACoAIBsAAEMAIAMAAAABACAiAAA8ACAjAABBACABAAAAAQAgAQAAACoAIAcKAACiBAAgKAAApAQAICkAAKMEACCjAgAAgAMAIKQCAACAAwAgpQIAAIADACCnAgAAgAMAIA2-AQAA1AIAML8BAABKABDAAQAA1AIAMMEBAQCYAgAh0QFAAJ8CACHSAUAAnwIAIaECAQCYAgAhogIBAJgCACGjAgEAmgIAIaQCAQCaAgAhpQJAAJ4CACGmAiAA1QIAIacCQACeAgAhAwAAACoAIAEAAEkAMCcAAEoAIAMAAAAqACABAAA4ADACAAABACANAwAA0wIAIL4BAADPAgAwvwEAAC8AEMABAADPAgAwwQEBAAAAAdEBQADSAgAh0gFAANICACHlAQEAAAABgAIAANECgAIjmgIBANACACGbAgEA0AIAIZwCAADOAgAgnQIBANACACEBAAAATQAgAQAAAE0AIAUDAAChBAAggAIAAIADACCaAgAAgAMAIJsCAACAAwAgnQIAAIADACADAAAALwAgAQAAUAAwAgAATQAgAwAAAC8AIAEAAFAAMAIAAE0AIAMAAAAvACABAABQADACAABNACAKAwAAoAQAIMEBAQAAAAHRAUAAAAAB0gFAAAAAAeUBAQAAAAGAAgAAAIACA5oCAQAAAAGbAgEAAAABnAIAAJ8EACCdAgEAAAABARsAAFQAIAnBAQEAAAAB0QFAAAAAAdIBQAAAAAHlAQEAAAABgAIAAACAAgOaAgEAAAABmwIBAAAAAZwCAACfBAAgnQIBAAAAAQEbAABWADABGwAAVgAwCgMAAJ4EACDBAQEAhgMAIdEBQACMAwAh0gFAAIwDACHlAQEAhgMAIYACAADOA4ACI5oCAQCIAwAhmwIBAIgDACGcAgAAnQQAIJ0CAQCIAwAhAgAAAE0AIBsAAFkAIAnBAQEAhgMAIdEBQACMAwAh0gFAAIwDACHlAQEAhgMAIYACAADOA4ACI5oCAQCIAwAhmwIBAIgDACGcAgAAnQQAIJ0CAQCIAwAhAgAAAC8AIBsAAFsAIAIAAAAvACAbAABbACADAAAATQAgIgAAVAAgIwAAWQAgAQAAAE0AIAEAAAAvACAHCgAAmgQAICgAAJwEACApAACbBAAggAIAAIADACCaAgAAgAMAIJsCAACAAwAgnQIAAIADACAMvgEAAM0CADC_AQAAYgAQwAEAAM0CADDBAQEAmAIAIdEBQACfAgAh0gFAAJ8CACHlAQEAmAIAIYACAAC9AoACI5oCAQCaAgAhmwIBAJoCACGcAgAAzgIAIJ0CAQCaAgAhAwAAAC8AIAEAAGEAMCcAAGIAIAMAAAAvACABAABQADACAABNACABAAAABQAgAQAAAAUAIAMAAAADACABAAAEADACAAAFACADAAAAAwAgAQAABAAwAgAABQAgAwAAAAMAIAEAAAQAMAIAAAUAIA0DAACZBAAgwQEBAAAAAcQBAQAAAAHlAQEAAAABkQIBAAAAAZICAQAAAAGTAgEAAAABlAIBAAAAAZUCAgAAAAGWAgEAAAABlwIBAAAAAZgCAQAAAAGZAgEAAAABARsAAGoAIAzBAQEAAAABxAEBAAAAAeUBAQAAAAGRAgEAAAABkgIBAAAAAZMCAQAAAAGUAgEAAAABlQICAAAAAZYCAQAAAAGXAgEAAAABmAIBAAAAAZkCAQAAAAEBGwAAbAAwARsAAGwAMA0DAACYBAAgwQEBAIYDACHEAQEAhgMAIeUBAQCGAwAhkQIBAIYDACGSAgEAhgMAIZMCAQCIAwAhlAIBAIgDACGVAgIAlwQAIZYCAQCIAwAhlwIBAIgDACGYAgEAiAMAIZkCAQCIAwAhAgAAAAUAIBsAAG8AIAzBAQEAhgMAIcQBAQCGAwAh5QEBAIYDACGRAgEAhgMAIZICAQCGAwAhkwIBAIgDACGUAgEAiAMAIZUCAgCXBAAhlgIBAIgDACGXAgEAiAMAIZgCAQCIAwAhmQIBAIgDACECAAAAAwAgGwAAcQAgAgAAAAMAIBsAAHEAIAMAAAAFACAiAABqACAjAABvACABAAAABQAgAQAAAAMAIAwKAACSBAAgKAAAlQQAICkAAJQEACBKAACTBAAgSwAAlgQAIJMCAACAAwAglAIAAIADACCVAgAAgAMAIJYCAACAAwAglwIAAIADACCYAgAAgAMAIJkCAACAAwAgD74BAADJAgAwvwEAAHgAEMABAADJAgAwwQEBAJgCACHEAQEAmAIAIeUBAQCYAgAhkQIBAJgCACGSAgEAmAIAIZMCAQCaAgAhlAIBAJoCACGVAgIAygIAIZYCAQCaAgAhlwIBAJoCACGYAgEAmgIAIZkCAQCaAgAhAwAAAAMAIAEAAHcAMCcAAHgAIAMAAAADACABAAAEADACAAAFACABAAAALQAgAQAAAC0AIAMAAAAoACABAAAsADACAAAtACADAAAAKAAgAQAALAAwAgAALQAgAwAAACgAIAEAACwAMAIAAC0AIBUDAACQBAAgEgAAkQQAIMEBAQAAAAHKAQAAAI4CAtABAQAAAAHRAUAAAAAB0gFAAAAAAeUBAQAAAAGDAgEAAAABhAIBAAAAAYUCAQAAAAGGAkAAAAABhwIBAAAAAYgCAQAAAAGJAgEAAAABigIBAAAAAYsCAQAAAAGMAgEAAAABjgJAAAAAAY8CAQAAAAGQAkAAAAABARsAAIABACATwQEBAAAAAcoBAAAAjgIC0AEBAAAAAdEBQAAAAAHSAUAAAAAB5QEBAAAAAYMCAQAAAAGEAgEAAAABhQIBAAAAAYYCQAAAAAGHAgEAAAABiAIBAAAAAYkCAQAAAAGKAgEAAAABiwIBAAAAAYwCAQAAAAGOAkAAAAABjwIBAAAAAZACQAAAAAEBGwAAggEAMAEbAACCAQAwAQAAACoAIBUDAACOBAAgEgAAjwQAIMEBAQCGAwAhygEAAI0EjgIi0AEBAIgDACHRAUAAjAMAIdIBQACMAwAh5QEBAIYDACGDAgEAhgMAIYQCAQCGAwAhhQIBAIYDACGGAkAAjAMAIYcCAQCGAwAhiAIBAIYDACGJAgEAhgMAIYoCAQCGAwAhiwIBAIYDACGMAgEAhgMAIY4CQACLAwAhjwIBAIgDACGQAkAAiwMAIQIAAAAtACAbAACGAQAgE8EBAQCGAwAhygEAAI0EjgIi0AEBAIgDACHRAUAAjAMAIdIBQACMAwAh5QEBAIYDACGDAgEAhgMAIYQCAQCGAwAhhQIBAIYDACGGAkAAjAMAIYcCAQCGAwAhiAIBAIYDACGJAgEAhgMAIYoCAQCGAwAhiwIBAIYDACGMAgEAhgMAIY4CQACLAwAhjwIBAIgDACGQAkAAiwMAIQIAAAAoACAbAACIAQAgAgAAACgAIBsAAIgBACABAAAAKgAgAwAAAC0AICIAAIABACAjAACGAQAgAQAAAC0AIAEAAAAoACAHCgAAigQAICgAAIwEACApAACLBAAg0AEAAIADACCOAgAAgAMAII8CAACAAwAgkAIAAIADACAWvgEAAMUCADC_AQAAkAEAEMABAADFAgAwwQEBAJgCACHKAQAAxgKOAiLQAQEAmgIAIdEBQACfAgAh0gFAAJ8CACHlAQEAmAIAIYMCAQCYAgAhhAIBAJgCACGFAgEAmAIAIYYCQACfAgAhhwIBAJgCACGIAgEAmAIAIYkCAQCYAgAhigIBAJgCACGLAgEAmAIAIYwCAQCYAgAhjgJAAJ4CACGPAgEAmgIAIZACQACeAgAhAwAAACgAIAEAAI8BADAnAACQAQAgAwAAACgAIAEAACwAMAIAAC0AIAEAAAAJACABAAAACQAgAwAAAAcAIAEAAAgAMAIAAAkAIAMAAAAHACABAAAIADACAAAJACADAAAABwAgAQAACAAwAgAACQAgGAUAAIUEACALAACGBAAgDAAAhwQAIA0AAIgEACAOAACJBAAgwQEBAAAAAcoBAAAAggIC0QFAAAAAAdIBQAAAAAHxAQEAAAAB8gEBAAAAAfQBAAAA9AEC9QEBAAAAAfYBAQAAAAH3AQEAAAAB-AEBAAAAAfkBAQAAAAH6AQEAAAAB-wFAAAAAAfwBQAAAAAH9AQIAAAAB_gECAAAAAYACAAAAgAIDggIBAAAAAQEbAACYAQAgE8EBAQAAAAHKAQAAAIICAtEBQAAAAAHSAUAAAAAB8QEBAAAAAfIBAQAAAAH0AQAAAPQBAvUBAQAAAAH2AQEAAAAB9wEBAAAAAfgBAQAAAAH5AQEAAAAB-gEBAAAAAfsBQAAAAAH8AUAAAAAB_QECAAAAAf4BAgAAAAGAAgAAAIACA4ICAQAAAAEBGwAAmgEAMAEbAACaAQAwGAUAANADACALAADRAwAgDAAA0gMAIA0AANMDACAOAADUAwAgwQEBAIYDACHKAQAAzwOCAiLRAUAAjAMAIdIBQACMAwAh8QEBAIYDACHyAQEAiAMAIfQBAADNA_QBIvUBAQCGAwAh9gEBAIYDACH3AQEAiAMAIfgBAQCIAwAh-QEBAIgDACH6AQEAiAMAIfsBQACMAwAh_AFAAIsDACH9AQIAiQMAIf4BAgCJAwAhgAIAAM4DgAIjggIBAIYDACECAAAACQAgGwAAnQEAIBPBAQEAhgMAIcoBAADPA4ICItEBQACMAwAh0gFAAIwDACHxAQEAhgMAIfIBAQCIAwAh9AEAAM0D9AEi9QEBAIYDACH2AQEAhgMAIfcBAQCIAwAh-AEBAIgDACH5AQEAiAMAIfoBAQCIAwAh-wFAAIwDACH8AUAAiwMAIf0BAgCJAwAh_gECAIkDACGAAgAAzgOAAiOCAgEAhgMAIQIAAAAHACAbAACfAQAgAgAAAAcAIBsAAJ8BACADAAAACQAgIgAAmAEAICMAAJ0BACABAAAACQAgAQAAAAcAIAwKAADIAwAgKAAAywMAICkAAMoDACBKAADJAwAgSwAAzAMAIPIBAACAAwAg9wEAAIADACD4AQAAgAMAIPkBAACAAwAg-gEAAIADACD8AQAAgAMAIIACAACAAwAgFr4BAAC7AgAwvwEAAKYBABDAAQAAuwIAMMEBAQCYAgAhygEAAL4CggIi0QFAAJ8CACHSAUAAnwIAIfEBAQCYAgAh8gEBAJoCACH0AQAAvAL0ASL1AQEAmAIAIfYBAQCYAgAh9wEBAJoCACH4AQEAmgIAIfkBAQCaAgAh-gEBAJoCACH7AUAAnwIAIfwBQACeAgAh_QECAJsCACH-AQIAmwIAIYACAAC9AoACI4ICAQCYAgAhAwAAAAcAIAEAAKUBADAnAACmAQAgAwAAAAcAIAEAAAgAMAIAAAkAIAEAAAAcACABAAAAHAAgAwAAABoAIAEAABsAMAIAABwAIAMAAAAaACABAAAbADACAAAcACADAAAAGgAgAQAAGwAwAgAAHAAgCQMAAMcDACAGAADGAwAgwQEBAAAAAdEBQAAAAAHSAUAAAAAB5AEBAAAAAeUBAQAAAAHvAQIAAAAB8AEBAAAAAQEbAACuAQAgB8EBAQAAAAHRAUAAAAAB0gFAAAAAAeQBAQAAAAHlAQEAAAAB7wECAAAAAfABAQAAAAEBGwAAsAEAMAEbAACwAQAwCQMAAMUDACAGAADEAwAgwQEBAIYDACHRAUAAjAMAIdIBQACMAwAh5AEBAIYDACHlAQEAhgMAIe8BAgCJAwAh8AEBAIgDACECAAAAHAAgGwAAswEAIAfBAQEAhgMAIdEBQACMAwAh0gFAAIwDACHkAQEAhgMAIeUBAQCGAwAh7wECAIkDACHwAQEAiAMAIQIAAAAaACAbAAC1AQAgAgAAABoAIBsAALUBACADAAAAHAAgIgAArgEAICMAALMBACABAAAAHAAgAQAAABoAIAYKAAC_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-AQAAsQIAML8BAAD-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-AQAAsQIAML8BAAD-AQAQwAEAALECADDBAQEAmAIAIcgBAgCbAgAhygEAALIC6QEi0QFAAJ8CACHSAUAAnwIAIeQBAQCYAgAh5QEBAJgCACHmAQEAmAIAIecBAQCYAgAhBwoAAKECACAoAAC0AgAgKQAAtAIAINMBAAAA6QEC1AEAAADpAQjVAQAAAOkBCNoBAACzAukBIgcKAAChAgAgKAAAtAIAICkAALQCACDTAQAAAOkBAtQBAAAA6QEI1QEAAADpAQjaAQAAswLpASIE0wEAAADpAQLUAQAAAOkBCNUBAAAA6QEI2gEAALQC6QEiCr4BAAC1AgAwvwEAAOgBABDAAQAAtQIAMMEBAQCYAgAhygEAALYC6gEi0QFAAJ8CACHkAQEAmAIAIeUBAQCYAgAh6gFAAJ4CACHrAUAAngIAIQcKAAChAgAgKAAAuAIAICkAALgCACDTAQAAAOoBAtQBAAAA6gEI1QEAAADqAQjaAQAAtwLqASIHCgAAoQIAICgAALgCACApAAC4AgAg0wEAAADqAQLUAQAAAOoBCNUBAAAA6gEI2gEAALcC6gEiBNMBAAAA6gEC1AEAAADqAQjVAQAAAOoBCNoBAAC4AuoBIgi-AQAAuQIAML8BAADSAQAQwAEAALkCADDBAQEAmAIAIeQBAQCYAgAh7AEBAJgCACHtAQEAmgIAIe4BAgCbAgAhCr4BAAC6AgAwvwEAALwBABDAAQAAugIAMMEBAQCYAgAh0QFAAJ8CACHSAUAAnwIAIeQBAQCYAgAh5QEBAJgCACHvAQIAmwIAIfABAQCaAgAhFr4BAAC7AgAwvwEAAKYBABDAAQAAuwIAMMEBAQCYAgAhygEAAL4CggIi0QFAAJ8CACHSAUAAnwIAIfEBAQCYAgAh8gEBAJoCACH0AQAAvAL0ASL1AQEAmAIAIfYBAQCYAgAh9wEBAJoCACH4AQEAmgIAIfkBAQCaAgAh-gEBAJoCACH7AUAAnwIAIfwBQACeAgAh_QECAJsCACH-AQIAmwIAIYACAAC9AoACI4ICAQCYAgAhBwoAAKECACAoAADEAgAgKQAAxAIAINMBAAAA9AEC1AEAAAD0AQjVAQAAAPQBCNoBAADDAvQBIgcKAACkAgAgKAAAwgIAICkAAMICACDTAQAAAIACA9QBAAAAgAIJ1QEAAACAAgnaAQAAwQKAAiMHCgAAoQIAICgAAMACACApAADAAgAg0wEAAACCAgLUAQAAAIICCNUBAAAAggII2gEAAL8CggIiBwoAAKECACAoAADAAgAgKQAAwAIAINMBAAAAggIC1AEAAACCAgjVAQAAAIICCNoBAAC_AoICIgTTAQAAAIICAtQBAAAAggII1QEAAACCAgjaAQAAwAKCAiIHCgAApAIAICgAAMICACApAADCAgAg0wEAAACAAgPUAQAAAIACCdUBAAAAgAIJ2gEAAMECgAIjBNMBAAAAgAID1AEAAACAAgnVAQAAAIACCdoBAADCAoACIwcKAAChAgAgKAAAxAIAICkAAMQCACDTAQAAAPQBAtQBAAAA9AEI1QEAAAD0AQjaAQAAwwL0ASIE0wEAAAD0AQLUAQAAAPQBCNUBAAAA9AEI2gEAAMQC9AEiFr4BAADFAgAwvwEAAJABABDAAQAAxQIAMMEBAQCYAgAhygEAAMYCjgIi0AEBAJoCACHRAUAAnwIAIdIBQACfAgAh5QEBAJgCACGDAgEAmAIAIYQCAQCYAgAhhQIBAJgCACGGAkAAnwIAIYcCAQCYAgAhiAIBAJgCACGJAgEAmAIAIYoCAQCYAgAhiwIBAJgCACGMAgEAmAIAIY4CQACeAgAhjwIBAJoCACGQAkAAngIAIQcKAAChAgAgKAAAyAIAICkAAMgCACDTAQAAAI4CAtQBAAAAjgII1QEAAACOAgjaAQAAxwKOAiIHCgAAoQIAICgAAMgCACApAADIAgAg0wEAAACOAgLUAQAAAI4CCNUBAAAAjgII2gEAAMcCjgIiBNMBAAAAjgIC1AEAAACOAgjVAQAAAI4CCNoBAADIAo4CIg--AQAAyQIAML8BAAB4ABDAAQAAyQIAMMEBAQCYAgAhxAEBAJgCACHlAQEAmAIAIZECAQCYAgAhkgIBAJgCACGTAgEAmgIAIZQCAQCaAgAhlQICAMoCACGWAgEAmgIAIZcCAQCaAgAhmAIBAJoCACGZAgEAmgIAIQ0KAACkAgAgKAAApAIAICkAAKQCACBKAADMAgAgSwAApAIAINMBAgAAAAHUAQIAAAAF1QECAAAABdYBAgAAAAHXAQIAAAAB2AECAAAAAdkBAgAAAAHaAQIAywIAIQ0KAACkAgAgKAAApAIAICkAAKQCACBKAADMAgAgSwAApAIAINMBAgAAAAHUAQIAAAAF1QECAAAABdYBAgAAAAHXAQIAAAAB2AECAAAAAdkBAgAAAAHaAQIAywIAIQjTAQgAAAAB1AEIAAAABdUBCAAAAAXWAQgAAAAB1wEIAAAAAdgBCAAAAAHZAQgAAAAB2gEIAMwCACEMvgEAAM0CADC_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_AQAAKAAQwAEAANkCADDBAQEA2AIAIcoBAADaAo4CItABAQDQAgAh0QFAANICACHSAUAA0gIAIeUBAQDYAgAhgwIBANgCACGEAgEA2AIAIYUCAQDYAgAhhgJAANICACGHAgEA2AIAIYgCAQDYAgAhiQIBANgCACGKAgEA2AIAIYsCAQDYAgAhjAIBANgCACGOAkAA2wIAIY8CAQDQAgAhkAJAANsCACGtAgAAKAAgrgIAACgAIAOoAgAAKAAgqQIAACgAIKoCAAAoACAPAwAA0wIAIL4BAADPAgAwvwEAAC8AEMABAADPAgAwwQEBANgCACHRAUAA0gIAIdIBQADSAgAh5QEBANgCACGAAgAA0QKAAiOaAgEA0AIAIZsCAQDQAgAhnAIAAM4CACCdAgEA0AIAIa0CAAAvACCuAgAALwAgEAMAANMCACAGAADqAgAgBwAA6wIAIAkAAOwCACC-AQAA5wIAML8BAAAPABDAAQAA5wIAMMEBAQDYAgAhyAECAOgCACHKAQAA6QLpASLRAUAA0gIAIdIBQADSAgAh5AEBANgCACHlAQEA2AIAIeYBAQDYAgAh5wEBANgCACEI0wECAAAAAdQBAgAAAATVAQIAAAAE1gECAAAAAdcBAgAAAAHYAQIAAAAB2QECAAAAAdoBAgChAgAhBNMBAAAA6QEC1AEAAADpAQjVAQAAAOkBCNoBAAC0AukBIh0FAADTAgAgCwAA4QIAIAwAAPwCACANAADiAgAgDgAA4wIAIL4BAAD5AgAwvwEAAAcAEMABAAD5AgAwwQEBANgCACHKAQAA-wKCAiLRAUAA0gIAIdIBQADSAgAh8QEBANgCACHyAQEA0AIAIfQBAAD6AvQBIvUBAQDYAgAh9gEBANgCACH3AQEA0AIAIfgBAQDQAgAh-QEBANACACH6AQEA0AIAIfsBQADSAgAh_AFAANsCACH9AQIA6AIAIf4BAgDoAgAhgAIAANECgAIjggIBANgCACGtAgAABwAgrgIAAAcAIA8DAADTAgAgBgAA6gIAIAgAAPgCACC-AQAA9gIAML8BAAALABDAAQAA9gIAMMEBAQDYAgAhygEAAPcC6gEi0QFAANICACHkAQEA2AIAIeUBAQDYAgAh6gFAANsCACHrAUAA2wIAIa0CAAALACCuAgAACwAgA6gCAAARACCpAgAAEQAgqgIAABEAIALkAQEAAAAB5QEBAAAAAQwDAADTAgAgBgAA6gIAIL4BAADuAgAwvwEAABoAEMABAADuAgAwwQEBANgCACHRAUAA0gIAIdIBQADSAgAh5AEBANgCACHlAQEA2AIAIe8BAgDoAgAh8AEBANACACEJBgAA6gIAIL4BAADvAgAwvwEAABYAEMABAADvAgAwwQEBANgCACHkAQEA2AIAIewBAQDYAgAh7QEBANACACHuAQIA6AIAIRQIAAD0AgAgvgEAAPACADC_AQAAEQAQwAEAAPACADDBAQEA2AIAIcIBAQDYAgAhxAEAAPECxAEixQEBANgCACHGAQEA0AIAIccBAQDQAgAhyAECAOgCACHKAQAA8gLKASLLAQAA8wIAIMwBAQDQAgAhzQFAANsCACHOAUAA2wIAIc8BQADbAgAh0AEBANACACHRAUAA0gIAIdIBQADSAgAhBNMBAAAAxAEC1AEAAADEAQjVAQAAAMQBCNoBAACuAsQBIgTTAQAAAMoBAtQBAAAAygEI1QEAAADKAQjaAQAAqALKASIM0wGAAAAAAdYBgAAAAAHXAYAAAAAB2AGAAAAAAdkBgAAAAAHaAYAAAAAB2wEBAAAAAdwBAQAAAAHdAQEAAAAB3gGAAAAAAd8BgAAAAAHgAYAAAAABEgMAANMCACAGAADqAgAgBwAA6wIAIAkAAOwCACC-AQAA5wIAML8BAAAPABDAAQAA5wIAMMEBAQDYAgAhyAECAOgCACHKAQAA6QLpASLRAUAA0gIAIdIBQADSAgAh5AEBANgCACHlAQEA2AIAIeYBAQDYAgAh5wEBANgCACGtAgAADwAgrgIAAA8AIALkAQEAAAAB5QEBAAAAAQ0DAADTAgAgBgAA6gIAIAgAAPgCACC-AQAA9gIAML8BAAALABDAAQAA9gIAMMEBAQDYAgAhygEAAPcC6gEi0QFAANICACHkAQEA2AIAIeUBAQDYAgAh6gFAANsCACHrAUAA2wIAIQTTAQAAAOoBAtQBAAAA6gEI1QEAAADqAQjaAQAAuALqASISAwAA0wIAIAYAAOoCACAHAADrAgAgCQAA7AIAIL4BAADnAgAwvwEAAA8AEMABAADnAgAwwQEBANgCACHIAQIA6AIAIcoBAADpAukBItEBQADSAgAh0gFAANICACHkAQEA2AIAIeUBAQDYAgAh5gEBANgCACHnAQEA2AIAIa0CAAAPACCuAgAADwAgGwUAANMCACALAADhAgAgDAAA_AIAIA0AAOICACAOAADjAgAgvgEAAPkCADC_AQAABwAQwAEAAPkCADDBAQEA2AIAIcoBAAD7AoICItEBQADSAgAh0gFAANICACHxAQEA2AIAIfIBAQDQAgAh9AEAAPoC9AEi9QEBANgCACH2AQEA2AIAIfcBAQDQAgAh-AEBANACACH5AQEA0AIAIfoBAQDQAgAh-wFAANICACH8AUAA2wIAIf0BAgDoAgAh_gECAOgCACGAAgAA0QKAAiOCAgEA2AIAIQTTAQAAAPQBAtQBAAAA9AEI1QEAAAD0AQjaAQAAxAL0ASIE0wEAAACCAgLUAQAAAIICCNUBAAAAggII2gEAAMACggIiA6gCAAAWACCpAgAAFgAgqgIAABYAIALEAQEAAAABkgIBAAAAARADAADTAgAgvgEAAP4CADC_AQAAAwAQwAEAAP4CADDBAQEA2AIAIcQBAQDYAgAh5QEBANgCACGRAgEA2AIAIZICAQDYAgAhkwIBANACACGUAgEA0AIAIZUCAgD_AgAhlgIBANACACGXAgEA0AIAIZgCAQDQAgAhmQIBANACACEI0wECAAAAAdQBAgAAAAXVAQIAAAAF1gECAAAAAdcBAgAAAAHYAQIAAAAB2QECAAAAAdoBAgCkAgAhAAAAAAAAAbICAQAAAAEBsgIAAADEAQIBsgIBAAAAAQWyAgIAAAABuQICAAAAAboCAgAAAAG7AgIAAAABvAICAAAAAQGyAgAAAMoBAgGyAkAAAAABAbICQAAAAAEFIgAA2AUAICMAANsFACCvAgAA2QUAILACAADaBQAgtQIAAB8AIAMiAADYBQAgrwIAANkFACC1AgAAHwAgAAAAAAABsgIAAADpAQIFIgAAzAUAICMAANYFACCvAgAAzQUAILACAADVBQAgtQIAAAkAIAUiAADKBQAgIwAA0wUAIK8CAADLBQAgsAIAANIFACC1AgAAAQAgBSIAAMgFACAjAADQBQAgrwIAAMkFACCwAgAAzwUAILUCAAANACALIgAAmQMAMCMAAJ4DADCvAgAAmgMAMLACAACbAwAwsQIAAJwDACCyAgAAnQMAMLMCAACdAwAwtAIAAJ0DADC1AgAAnQMAMLYCAACfAwAwtwIAAKADADAPwQEBAAAAAcQBAAAAxAECxQEBAAAAAcYBAQAAAAHHAQEAAAAByAECAAAAAcoBAAAAygECywGAAAAAAcwBAQAAAAHNAUAAAAABzgFAAAAAAc8BQAAAAAHQAQEAAAAB0QFAAAAAAdIBQAAAAAECAAAAEwAgIgAApAMAIAMAAAATACAiAACkAwAgIwAAowMAIAEbAADOBQAwFAgAAPQCACC-AQAA8AIAML8BAAARABDAAQAA8AIAMMEBAQAAAAHCAQEA2AIAIcQBAADxAsQBIsUBAQAAAAHGAQEA0AIAIccBAQDQAgAhyAECAOgCACHKAQAA8gLKASLLAQAA8wIAIMwBAQDQAgAhzQFAANsCACHOAUAA2wIAIc8BQADbAgAh0AEBANACACHRAUAA0gIAIdIBQADSAgAhAgAAABMAIBsAAKMDACACAAAAoQMAIBsAAKIDACATvgEAAKADADC_AQAAoQMAEMABAACgAwAwwQEBANgCACHCAQEA2AIAIcQBAADxAsQBIsUBAQDYAgAhxgEBANACACHHAQEA0AIAIcgBAgDoAgAhygEAAPICygEiywEAAPMCACDMAQEA0AIAIc0BQADbAgAhzgFAANsCACHPAUAA2wIAIdABAQDQAgAh0QFAANICACHSAUAA0gIAIRO-AQAAoAMAML8BAAChAwAQwAEAAKADADDBAQEA2AIAIcIBAQDYAgAhxAEAAPECxAEixQEBANgCACHGAQEA0AIAIccBAQDQAgAhyAECAOgCACHKAQAA8gLKASLLAQAA8wIAIMwBAQDQAgAhzQFAANsCACHOAUAA2wIAIc8BQADbAgAh0AEBANACACHRAUAA0gIAIdIBQADSAgAhD8EBAQCGAwAhxAEAAIcDxAEixQEBAIYDACHGAQEAiAMAIccBAQCIAwAhyAECAIkDACHKAQAAigPKASLLAYAAAAABzAEBAIgDACHNAUAAiwMAIc4BQACLAwAhzwFAAIsDACHQAQEAiAMAIdEBQACMAwAh0gFAAIwDACEPwQEBAIYDACHEAQAAhwPEASLFAQEAhgMAIcYBAQCIAwAhxwEBAIgDACHIAQIAiQMAIcoBAACKA8oBIssBgAAAAAHMAQEAiAMAIc0BQACLAwAhzgFAAIsDACHPAUAAiwMAIdABAQCIAwAh0QFAAIwDACHSAUAAjAMAIQ_BAQEAAAABxAEAAADEAQLFAQEAAAABxgEBAAAAAccBAQAAAAHIAQIAAAABygEAAADKAQLLAYAAAAABzAEBAAAAAc0BQAAAAAHOAUAAAAABzwFAAAAAAdABAQAAAAHRAUAAAAAB0gFAAAAAAQMiAADMBQAgrwIAAM0FACC1AgAACQAgAyIAAMoFACCvAgAAywUAILUCAAABACADIgAAyAUAIK8CAADJBQAgtQIAAA0AIAQiAACZAwAwrwIAAJoDADCxAgAAnAMAILUCAACdAwAwAAAAAbICAAAA6gECBSIAAMAFACAjAADGBQAgrwIAAMEFACCwAgAAxQUAILUCAAAJACAFIgAAvgUAICMAAMMFACCvAgAAvwUAILACAADCBQAgtQIAAAEAIAciAACwAwAgIwAAswMAIK8CAACxAwAgsAIAALIDACCzAgAADwAgtAIAAA8AILUCAAAfACALAwAApgMAIAYAAKUDACAJAACoAwAgwQEBAAAAAcgBAgAAAAHKAQAAAOkBAtEBQAAAAAHSAUAAAAAB5AEBAAAAAeUBAQAAAAHnAQEAAAABAgAAAB8AICIAALADACADAAAADwAgIgAAsAMAICMAALQDACANAAAADwAgAwAAlgMAIAYAAJUDACAJAACYAwAgGwAAtAMAIMEBAQCGAwAhyAECAIkDACHKAQAAlAPpASLRAUAAjAMAIdIBQACMAwAh5AEBAIYDACHlAQEAhgMAIecBAQCGAwAhCwMAAJYDACAGAACVAwAgCQAAmAMAIMEBAQCGAwAhyAECAIkDACHKAQAAlAPpASLRAUAAjAMAIdIBQACMAwAh5AEBAIYDACHlAQEAhgMAIecBAQCGAwAhAyIAAMAFACCvAgAAwQUAILUCAAAJACADIgAAvgUAIK8CAAC_BQAgtQIAAAEAIAMiAACwAwAgrwIAALEDACC1AgAAHwAgAAAAAAAFIgAAuQUAICMAALwFACCvAgAAugUAILACAAC7BQAgtQIAAAkAIAMiAAC5BQAgrwIAALoFACC1AgAACQAgAAAAAAAFIgAAsQUAICMAALcFACCvAgAAsgUAILACAAC2BQAgtQIAAAkAIAUiAACvBQAgIwAAtAUAIK8CAACwBQAgsAIAALMFACC1AgAAAQAgAyIAALEFACCvAgAAsgUAILUCAAAJACADIgAArwUAIK8CAACwBQAgtQIAAAEAIAAAAAAAAbICAAAA9AECAbICAAAAgAIDAbICAAAAggICBSIAAKYFACAjAACtBQAgrwIAAKcFACCwAgAArAUAILUCAAABACALIgAA-QMAMCMAAP4DADCvAgAA-gMAMLACAAD7AwAwsQIAAPwDACCyAgAA_QMAMLMCAAD9AwAwtAIAAP0DADC1AgAA_QMAMLYCAAD_AwAwtwIAAIAEADALIgAA7QMAMCMAAPIDADCvAgAA7gMAMLACAADvAwAwsQIAAPADACCyAgAA8QMAMLMCAADxAwAwtAIAAPEDADC1AgAA8QMAMLYCAADzAwAwtwIAAPQDADALIgAA4QMAMCMAAOYDADCvAgAA4gMAMLACAADjAwAwsQIAAOQDACCyAgAA5QMAMLMCAADlAwAwtAIAAOUDADC1AgAA5QMAMLYCAADnAwAwtwIAAOgDADALIgAA1QMAMCMAANoDADCvAgAA1gMAMLACAADXAwAwsQIAANgDACCyAgAA2QMAMLMCAADZAwAwtAIAANkDADC1AgAA2QMAMLYCAADbAwAwtwIAANwDADALAwAApgMAIAcAAKcDACAJAACoAwAgwQEBAAAAAcgBAgAAAAHKAQAAAOkBAtEBQAAAAAHSAUAAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAABAgAAAB8AICIAAOADACADAAAAHwAgIgAA4AMAICMAAN8DACABGwAAqwUAMBADAADTAgAgBgAA6gIAIAcAAOsCACAJAADsAgAgvgEAAOcCADC_AQAADwAQwAEAAOcCADDBAQEAAAAByAECAOgCACHKAQAA6QLpASLRAUAA0gIAIdIBQADSAgAh5AEBANgCACHlAQEA2AIAIeYBAQAAAAHnAQEA2AIAIQIAAAAfACAbAADfAwAgAgAAAN0DACAbAADeAwAgDL4BAADcAwAwvwEAAN0DABDAAQAA3AMAMMEBAQDYAgAhyAECAOgCACHKAQAA6QLpASLRAUAA0gIAIdIBQADSAgAh5AEBANgCACHlAQEA2AIAIeYBAQDYAgAh5wEBANgCACEMvgEAANwDADC_AQAA3QMAEMABAADcAwAwwQEBANgCACHIAQIA6AIAIcoBAADpAukBItEBQADSAgAh0gFAANICACHkAQEA2AIAIeUBAQDYAgAh5gEBANgCACHnAQEA2AIAIQjBAQEAhgMAIcgBAgCJAwAhygEAAJQD6QEi0QFAAIwDACHSAUAAjAMAIeUBAQCGAwAh5gEBAIYDACHnAQEAhgMAIQsDAACWAwAgBwAAlwMAIAkAAJgDACDBAQEAhgMAIcgBAgCJAwAhygEAAJQD6QEi0QFAAIwDACHSAUAAjAMAIeUBAQCGAwAh5gEBAIYDACHnAQEAhgMAIQsDAACmAwAgBwAApwMAIAkAAKgDACDBAQEAAAAByAECAAAAAcoBAAAA6QEC0QFAAAAAAdIBQAAAAAHlAQEAAAAB5gEBAAAAAecBAQAAAAEHAwAAxwMAIMEBAQAAAAHRAUAAAAAB0gFAAAAAAeUBAQAAAAHvAQIAAAAB8AEBAAAAAQIAAAAcACAiAADsAwAgAwAAABwAICIAAOwDACAjAADrAwAgARsAAKoFADANAwAA0wIAIAYAAOoCACC-AQAA7gIAML8BAAAaABDAAQAA7gIAMMEBAQAAAAHRAUAA0gIAIdIBQADSAgAh5AEBANgCACHlAQEA2AIAIe8BAgDoAgAh8AEBANACACGrAgAA7QIAIAIAAAAcACAbAADrAwAgAgAAAOkDACAbAADqAwAgCr4BAADoAwAwvwEAAOkDABDAAQAA6AMAMMEBAQDYAgAh0QFAANICACHSAUAA0gIAIeQBAQDYAgAh5QEBANgCACHvAQIA6AIAIfABAQDQAgAhCr4BAADoAwAwvwEAAOkDABDAAQAA6AMAMMEBAQDYAgAh0QFAANICACHSAUAA0gIAIeQBAQDYAgAh5QEBANgCACHvAQIA6AIAIfABAQDQAgAhBsEBAQCGAwAh0QFAAIwDACHSAUAAjAMAIeUBAQCGAwAh7wECAIkDACHwAQEAiAMAIQcDAADFAwAgwQEBAIYDACHRAUAAjAMAIdIBQACMAwAh5QEBAIYDACHvAQIAiQMAIfABAQCIAwAhBwMAAMcDACDBAQEAAAAB0QFAAAAAAdIBQAAAAAHlAQEAAAAB7wECAAAAAfABAQAAAAEEwQEBAAAAAewBAQAAAAHtAQEAAAAB7gECAAAAAQIAAAAYACAiAAD4AwAgAwAAABgAICIAAPgDACAjAAD3AwAgARsAAKkFADAJBgAA6gIAIL4BAADvAgAwvwEAABYAEMABAADvAgAwwQEBAAAAAeQBAQDYAgAh7AEBANgCACHtAQEA0AIAIe4BAgDoAgAhAgAAABgAIBsAAPcDACACAAAA9QMAIBsAAPYDACAIvgEAAPQDADC_AQAA9QMAEMABAAD0AwAwwQEBANgCACHkAQEA2AIAIewBAQDYAgAh7QEBANACACHuAQIA6AIAIQi-AQAA9AMAML8BAAD1AwAQwAEAAPQDADDBAQEA2AIAIeQBAQDYAgAh7AEBANgCACHtAQEA0AIAIe4BAgDoAgAhBMEBAQCGAwAh7AEBAIYDACHtAQEAiAMAIe4BAgCJAwAhBMEBAQCGAwAh7AEBAIYDACHtAQEAiAMAIe4BAgCJAwAhBMEBAQAAAAHsAQEAAAAB7QEBAAAAAe4BAgAAAAEIAwAAtgMAIAgAALcDACDBAQEAAAABygEAAADqAQLRAUAAAAAB5QEBAAAAAeoBQAAAAAHrAUAAAAABAgAAAA0AICIAAIQEACADAAAADQAgIgAAhAQAICMAAIMEACABGwAAqAUAMA4DAADTAgAgBgAA6gIAIAgAAPgCACC-AQAA9gIAML8BAAALABDAAQAA9gIAMMEBAQAAAAHKAQAA9wLqASLRAUAA0gIAIeQBAQDYAgAh5QEBANgCACHqAUAA2wIAIesBQADbAgAhqwIAAPUCACACAAAADQAgGwAAgwQAIAIAAACBBAAgGwAAggQAIAq-AQAAgAQAML8BAACBBAAQwAEAAIAEADDBAQEA2AIAIcoBAAD3AuoBItEBQADSAgAh5AEBANgCACHlAQEA2AIAIeoBQADbAgAh6wFAANsCACEKvgEAAIAEADC_AQAAgQQAEMABAACABAAwwQEBANgCACHKAQAA9wLqASLRAUAA0gIAIeQBAQDYAgAh5QEBANgCACHqAUAA2wIAIesBQADbAgAhBsEBAQCGAwAhygEAAKwD6gEi0QFAAIwDACHlAQEAhgMAIeoBQACLAwAh6wFAAIsDACEIAwAArgMAIAgAAK8DACDBAQEAhgMAIcoBAACsA-oBItEBQACMAwAh5QEBAIYDACHqAUAAiwMAIesBQACLAwAhCAMAALYDACAIAAC3AwAgwQEBAAAAAcoBAAAA6gEC0QFAAAAAAeUBAQAAAAHqAUAAAAAB6wFAAAAAAQMiAACmBQAgrwIAAKcFACC1AgAAAQAgBCIAAPkDADCvAgAA-gMAMLECAAD8AwAgtQIAAP0DADAEIgAA7QMAMK8CAADuAwAwsQIAAPADACC1AgAA8QMAMAQiAADhAwAwrwIAAOIDADCxAgAA5AMAILUCAADlAwAwBCIAANUDADCvAgAA1gMAMLECAADYAwAgtQIAANkDADAAAAABsgIAAACOAgIFIgAAngUAICMAAKQFACCvAgAAnwUAILACAACjBQAgtQIAAAEAIAciAACcBQAgIwAAoQUAIK8CAACdBQAgsAIAAKAFACCzAgAAKgAgtAIAACoAILUCAAABACADIgAAngUAIK8CAACfBQAgtQIAAAEAIAMiAACcBQAgrwIAAJ0FACC1AgAAAQAgAAAAAAAFsgICAAAAAbkCAgAAAAG6AgIAAAABuwICAAAAAbwCAgAAAAEFIgAAlwUAICMAAJoFACCvAgAAmAUAILACAACZBQAgtQIAAAEAIAMiAACXBQAgrwIAAJgFACC1AgAAAQAgAAAAArICAQAAAAS4AgEAAAAFBSIAAJIFACAjAACVBQAgrwIAAJMFACCwAgAAlAUAILUCAAABACABsgIBAAAABAMiAACSBQAgrwIAAJMFACC1AgAAAQAgDAQAAP8EACAOAACDBQAgDwAAgAUAIBAAAIEFACARAACCBQAgEwAAhAUAIBQAAIUFACAVAACGBQAgowIAAIADACCkAgAAgAMAIKUCAACAAwAgpwIAAIADACAAAAABsgIgAAAAAQsiAADrBAAwIwAA8AQAMK8CAADsBAAwsAIAAO0EADCxAgAA7gQAILICAADvBAAwswIAAO8EADC0AgAA7wQAMLUCAADvBAAwtgIAAPEEADC3AgAA8gQAMAsiAADfBAAwIwAA5AQAMK8CAADgBAAwsAIAAOEEADCxAgAA4gQAILICAADjBAAwswIAAOMEADC0AgAA4wQAMLUCAADjBAAwtgIAAOUEADC3AgAA5gQAMAsiAADWBAAwIwAA2gQAMK8CAADXBAAwsAIAANgEADCxAgAA2QQAILICAAD9AwAwswIAAP0DADC0AgAA_QMAMLUCAAD9AwAwtgIAANsEADC3AgAAgAQAMAsiAADNBAAwIwAA0QQAMK8CAADOBAAwsAIAAM8EADCxAgAA0AQAILICAADlAwAwswIAAOUDADC0AgAA5QMAMLUCAADlAwAwtgIAANIEADC3AgAA6AMAMAsiAADEBAAwIwAAyAQAMK8CAADFBAAwsAIAAMYEADCxAgAAxwQAILICAADZAwAwswIAANkDADC0AgAA2QMAMLUCAADZAwAwtgIAAMkEADC3AgAA3AMAMAciAAC_BAAgIwAAwgQAIK8CAADABAAgsAIAAMEEACCzAgAAKAAgtAIAACgAILUCAAAtACALIgAAswQAMCMAALgEADCvAgAAtAQAMLACAAC1BAAwsQIAALYEACCyAgAAtwQAMLMCAAC3BAAwtAIAALcEADC1AgAAtwQAMLYCAAC5BAAwtwIAALoEADAHIgAArgQAICMAALEEACCvAgAArwQAILACAACwBAAgswIAAC8AILQCAAAvACC1AgAATQAgCMEBAQAAAAHRAUAAAAAB0gFAAAAAAYACAAAAgAIDmgIBAAAAAZsCAQAAAAGcAgAAnwQAIJ0CAQAAAAECAAAATQAgIgAArgQAIAMAAAAvACAiAACuBAAgIwAAsgQAIAoAAAAvACAbAACyBAAgwQEBAIYDACHRAUAAjAMAIdIBQACMAwAhgAIAAM4DgAIjmgIBAIgDACGbAgEAiAMAIZwCAACdBAAgnQIBAIgDACEIwQEBAIYDACHRAUAAjAMAIdIBQACMAwAhgAIAAM4DgAIjmgIBAIgDACGbAgEAiAMAIZwCAACdBAAgnQIBAIgDACETAwAAkAQAIMEBAQAAAAHKAQAAAI4CAtABAQAAAAHRAUAAAAAB0gFAAAAAAeUBAQAAAAGDAgEAAAABhAIBAAAAAYUCAQAAAAGGAkAAAAABhwIBAAAAAYgCAQAAAAGJAgEAAAABigIBAAAAAYsCAQAAAAGMAgEAAAABjgJAAAAAAZACQAAAAAECAAAALQAgIgAAvgQAIAMAAAAtACAiAAC-BAAgIwAAvQQAIAEbAACRBQAwGAMAANMCACASAADcAgAgvgEAANkCADC_AQAAKAAQwAEAANkCADDBAQEAAAABygEAANoCjgIi0AEBANACACHRAUAA0gIAIdIBQADSAgAh5QEBAAAAAYMCAQDYAgAhhAIBANgCACGFAgEAAAABhgJAANICACGHAgEA2AIAIYgCAQDYAgAhiQIBANgCACGKAgEA2AIAIYsCAQDYAgAhjAIBANgCACGOAkAA2wIAIY8CAQDQAgAhkAJAANsCACECAAAALQAgGwAAvQQAIAIAAAC7BAAgGwAAvAQAIBa-AQAAugQAML8BAAC7BAAQwAEAALoEADDBAQEA2AIAIcoBAADaAo4CItABAQDQAgAh0QFAANICACHSAUAA0gIAIeUBAQDYAgAhgwIBANgCACGEAgEA2AIAIYUCAQDYAgAhhgJAANICACGHAgEA2AIAIYgCAQDYAgAhiQIBANgCACGKAgEA2AIAIYsCAQDYAgAhjAIBANgCACGOAkAA2wIAIY8CAQDQAgAhkAJAANsCACEWvgEAALoEADC_AQAAuwQAEMABAAC6BAAwwQEBANgCACHKAQAA2gKOAiLQAQEA0AIAIdEBQADSAgAh0gFAANICACHlAQEA2AIAIYMCAQDYAgAhhAIBANgCACGFAgEA2AIAIYYCQADSAgAhhwIBANgCACGIAgEA2AIAIYkCAQDYAgAhigIBANgCACGLAgEA2AIAIYwCAQDYAgAhjgJAANsCACGPAgEA0AIAIZACQADbAgAhEsEBAQCGAwAhygEAAI0EjgIi0AEBAIgDACHRAUAAjAMAIdIBQACMAwAh5QEBAIYDACGDAgEAhgMAIYQCAQCGAwAhhQIBAIYDACGGAkAAjAMAIYcCAQCGAwAhiAIBAIYDACGJAgEAhgMAIYoCAQCGAwAhiwIBAIYDACGMAgEAhgMAIY4CQACLAwAhkAJAAIsDACETAwAAjgQAIMEBAQCGAwAhygEAAI0EjgIi0AEBAIgDACHRAUAAjAMAIdIBQACMAwAh5QEBAIYDACGDAgEAhgMAIYQCAQCGAwAhhQIBAIYDACGGAkAAjAMAIYcCAQCGAwAhiAIBAIYDACGJAgEAhgMAIYoCAQCGAwAhiwIBAIYDACGMAgEAhgMAIY4CQACLAwAhkAJAAIsDACETAwAAkAQAIMEBAQAAAAHKAQAAAI4CAtABAQAAAAHRAUAAAAAB0gFAAAAAAeUBAQAAAAGDAgEAAAABhAIBAAAAAYUCAQAAAAGGAkAAAAABhwIBAAAAAYgCAQAAAAGJAgEAAAABigIBAAAAAYsCAQAAAAGMAgEAAAABjgJAAAAAAZACQAAAAAETEgAAkQQAIMEBAQAAAAHKAQAAAI4CAtABAQAAAAHRAUAAAAAB0gFAAAAAAYMCAQAAAAGEAgEAAAABhQIBAAAAAYYCQAAAAAGHAgEAAAABiAIBAAAAAYkCAQAAAAGKAgEAAAABiwIBAAAAAYwCAQAAAAGOAkAAAAABjwIBAAAAAZACQAAAAAECAAAALQAgIgAAvwQAIAMAAAAoACAiAAC_BAAgIwAAwwQAIBUAAAAoACASAACPBAAgGwAAwwQAIMEBAQCGAwAhygEAAI0EjgIi0AEBAIgDACHRAUAAjAMAIdIBQACMAwAhgwIBAIYDACGEAgEAhgMAIYUCAQCGAwAhhgJAAIwDACGHAgEAhgMAIYgCAQCGAwAhiQIBAIYDACGKAgEAhgMAIYsCAQCGAwAhjAIBAIYDACGOAkAAiwMAIY8CAQCIAwAhkAJAAIsDACETEgAAjwQAIMEBAQCGAwAhygEAAI0EjgIi0AEBAIgDACHRAUAAjAMAIdIBQACMAwAhgwIBAIYDACGEAgEAhgMAIYUCAQCGAwAhhgJAAIwDACGHAgEAhgMAIYgCAQCGAwAhiQIBAIYDACGKAgEAhgMAIYsCAQCGAwAhjAIBAIYDACGOAkAAiwMAIY8CAQCIAwAhkAJAAIsDACELBgAApQMAIAcAAKcDACAJAACoAwAgwQEBAAAAAcgBAgAAAAHKAQAAAOkBAtEBQAAAAAHSAUAAAAAB5AEBAAAAAeYBAQAAAAHnAQEAAAABAgAAAB8AICIAAMwEACADAAAAHwAgIgAAzAQAICMAAMsEACABGwAAkAUAMAIAAAAfACAbAADLBAAgAgAAAN0DACAbAADKBAAgCMEBAQCGAwAhyAECAIkDACHKAQAAlAPpASLRAUAAjAMAIdIBQACMAwAh5AEBAIYDACHmAQEAhgMAIecBAQCGAwAhCwYAAJUDACAHAACXAwAgCQAAmAMAIMEBAQCGAwAhyAECAIkDACHKAQAAlAPpASLRAUAAjAMAIdIBQACMAwAh5AEBAIYDACHmAQEAhgMAIecBAQCGAwAhCwYAAKUDACAHAACnAwAgCQAAqAMAIMEBAQAAAAHIAQIAAAABygEAAADpAQLRAUAAAAAB0gFAAAAAAeQBAQAAAAHmAQEAAAAB5wEBAAAAAQcGAADGAwAgwQEBAAAAAdEBQAAAAAHSAUAAAAAB5AEBAAAAAe8BAgAAAAHwAQEAAAABAgAAABwAICIAANUEACADAAAAHAAgIgAA1QQAICMAANQEACABGwAAjwUAMAIAAAAcACAbAADUBAAgAgAAAOkDACAbAADTBAAgBsEBAQCGAwAh0QFAAIwDACHSAUAAjAMAIeQBAQCGAwAh7wECAIkDACHwAQEAiAMAIQcGAADEAwAgwQEBAIYDACHRAUAAjAMAIdIBQACMAwAh5AEBAIYDACHvAQIAiQMAIfABAQCIAwAhBwYAAMYDACDBAQEAAAAB0QFAAAAAAdIBQAAAAAHkAQEAAAAB7wECAAAAAfABAQAAAAEIBgAAtQMAIAgAALcDACDBAQEAAAABygEAAADqAQLRAUAAAAAB5AEBAAAAAeoBQAAAAAHrAUAAAAABAgAAAA0AICIAAN4EACADAAAADQAgIgAA3gQAICMAAN0EACABGwAAjgUAMAIAAAANACAbAADdBAAgAgAAAIEEACAbAADcBAAgBsEBAQCGAwAhygEAAKwD6gEi0QFAAIwDACHkAQEAhgMAIeoBQACLAwAh6wFAAIsDACEIBgAArQMAIAgAAK8DACDBAQEAhgMAIcoBAACsA-oBItEBQACMAwAh5AEBAIYDACHqAUAAiwMAIesBQACLAwAhCAYAALUDACAIAAC3AwAgwQEBAAAAAcoBAAAA6gEC0QFAAAAAAeQBAQAAAAHqAUAAAAAB6wFAAAAAARYLAACGBAAgDAAAhwQAIA0AAIgEACAOAACJBAAgwQEBAAAAAcoBAAAAggIC0QFAAAAAAdIBQAAAAAHxAQEAAAAB8gEBAAAAAfQBAAAA9AEC9QEBAAAAAfYBAQAAAAH3AQEAAAAB-AEBAAAAAfkBAQAAAAH6AQEAAAAB-wFAAAAAAfwBQAAAAAH9AQIAAAAB_gECAAAAAYACAAAAgAIDAgAAAAkAICIAAOoEACADAAAACQAgIgAA6gQAICMAAOkEACABGwAAjQUAMBsFAADTAgAgCwAA4QIAIAwAAPwCACANAADiAgAgDgAA4wIAIL4BAAD5AgAwvwEAAAcAEMABAAD5AgAwwQEBAAAAAcoBAAD7AoICItEBQADSAgAh0gFAANICACHxAQEA2AIAIfIBAQDQAgAh9AEAAPoC9AEi9QEBANgCACH2AQEA2AIAIfcBAQDQAgAh-AEBANACACH5AQEA0AIAIfoBAQDQAgAh-wFAANICACH8AUAA2wIAIf0BAgDoAgAh_gECAOgCACGAAgAA0QKAAiOCAgEA2AIAIQIAAAAJACAbAADpBAAgAgAAAOcEACAbAADoBAAgFr4BAADmBAAwvwEAAOcEABDAAQAA5gQAMMEBAQDYAgAhygEAAPsCggIi0QFAANICACHSAUAA0gIAIfEBAQDYAgAh8gEBANACACH0AQAA-gL0ASL1AQEA2AIAIfYBAQDYAgAh9wEBANACACH4AQEA0AIAIfkBAQDQAgAh-gEBANACACH7AUAA0gIAIfwBQADbAgAh_QECAOgCACH-AQIA6AIAIYACAADRAoACI4ICAQDYAgAhFr4BAADmBAAwvwEAAOcEABDAAQAA5gQAMMEBAQDYAgAhygEAAPsCggIi0QFAANICACHSAUAA0gIAIfEBAQDYAgAh8gEBANACACH0AQAA-gL0ASL1AQEA2AIAIfYBAQDYAgAh9wEBANACACH4AQEA0AIAIfkBAQDQAgAh-gEBANACACH7AUAA0gIAIfwBQADbAgAh_QECAOgCACH-AQIA6AIAIYACAADRAoACI4ICAQDYAgAhEsEBAQCGAwAhygEAAM8DggIi0QFAAIwDACHSAUAAjAMAIfEBAQCGAwAh8gEBAIgDACH0AQAAzQP0ASL1AQEAhgMAIfYBAQCGAwAh9wEBAIgDACH4AQEAiAMAIfkBAQCIAwAh-gEBAIgDACH7AUAAjAMAIfwBQACLAwAh_QECAIkDACH-AQIAiQMAIYACAADOA4ACIxYLAADRAwAgDAAA0gMAIA0AANMDACAOAADUAwAgwQEBAIYDACHKAQAAzwOCAiLRAUAAjAMAIdIBQACMAwAh8QEBAIYDACHyAQEAiAMAIfQBAADNA_QBIvUBAQCGAwAh9gEBAIYDACH3AQEAiAMAIfgBAQCIAwAh-QEBAIgDACH6AQEAiAMAIfsBQACMAwAh_AFAAIsDACH9AQIAiQMAIf4BAgCJAwAhgAIAAM4DgAIjFgsAAIYEACAMAACHBAAgDQAAiAQAIA4AAIkEACDBAQEAAAABygEAAACCAgLRAUAAAAAB0gFAAAAAAfEBAQAAAAHyAQEAAAAB9AEAAAD0AQL1AQEAAAAB9gEBAAAAAfcBAQAAAAH4AQEAAAAB-QEBAAAAAfoBAQAAAAH7AUAAAAAB_AFAAAAAAf0BAgAAAAH-AQIAAAABgAIAAACAAgMLwQEBAAAAAcQBAQAAAAGRAgEAAAABkgIBAAAAAZMCAQAAAAGUAgEAAAABlQICAAAAAZYCAQAAAAGXAgEAAAABmAIBAAAAAZkCAQAAAAECAAAABQAgIgAA9gQAIAMAAAAFACAiAAD2BAAgIwAA9QQAIAEbAACMBQAwEQMAANMCACC-AQAA_gIAML8BAAADABDAAQAA_gIAMMEBAQAAAAHEAQEA2AIAIeUBAQDYAgAhkQIBANgCACGSAgEA2AIAIZMCAQDQAgAhlAIBANACACGVAgIA_wIAIZYCAQDQAgAhlwIBANACACGYAgEA0AIAIZkCAQDQAgAhrAIAAP0CACACAAAABQAgGwAA9QQAIAIAAADzBAAgGwAA9AQAIA--AQAA8gQAML8BAADzBAAQwAEAAPIEADDBAQEA2AIAIcQBAQDYAgAh5QEBANgCACGRAgEA2AIAIZICAQDYAgAhkwIBANACACGUAgEA0AIAIZUCAgD_AgAhlgIBANACACGXAgEA0AIAIZgCAQDQAgAhmQIBANACACEPvgEAAPIEADC_AQAA8wQAEMABAADyBAAwwQEBANgCACHEAQEA2AIAIeUBAQDYAgAhkQIBANgCACGSAgEA2AIAIZMCAQDQAgAhlAIBANACACGVAgIA_wIAIZYCAQDQAgAhlwIBANACACGYAgEA0AIAIZkCAQDQAgAhC8EBAQCGAwAhxAEBAIYDACGRAgEAhgMAIZICAQCGAwAhkwIBAIgDACGUAgEAiAMAIZUCAgCXBAAhlgIBAIgDACGXAgEAiAMAIZgCAQCIAwAhmQIBAIgDACELwQEBAIYDACHEAQEAhgMAIZECAQCGAwAhkgIBAIYDACGTAgEAiAMAIZQCAQCIAwAhlQICAJcEACGWAgEAiAMAIZcCAQCIAwAhmAIBAIgDACGZAgEAiAMAIQvBAQEAAAABxAEBAAAAAZECAQAAAAGSAgEAAAABkwIBAAAAAZQCAQAAAAGVAgIAAAABlgIBAAAAAZcCAQAAAAGYAgEAAAABmQIBAAAAAQQiAADrBAAwrwIAAOwEADCxAgAA7gQAILUCAADvBAAwBCIAAN8EADCvAgAA4AQAMLECAADiBAAgtQIAAOMEADAEIgAA1gQAMK8CAADXBAAwsQIAANkEACC1AgAA_QMAMAQiAADNBAAwrwIAAM4EADCxAgAA0AQAILUCAADlAwAwBCIAAMQEADCvAgAAxQQAMLECAADHBAAgtQIAANkDADADIgAAvwQAIK8CAADABAAgtQIAAC0AIAQiAACzBAAwrwIAALQEADCxAgAAtgQAILUCAAC3BAAwAyIAAK4EACCvAgAArwQAILUCAABNACAAAAAAAAYDAAChBAAgEgAAoQQAINABAACAAwAgjgIAAIADACCPAgAAgAMAIJACAACAAwAgAAUDAAChBAAggAIAAIADACCaAgAAgAMAIJsCAACAAwAgnQIAAIADACAMBQAAoQQAIAsAAIEFACAMAACLBQAgDQAAggUAIA4AAIMFACDyAQAAgAMAIPcBAACAAwAg-AEAAIADACD5AQAAgAMAIPoBAACAAwAg_AEAAIADACCAAgAAgAMAIAUDAAChBAAgBgAAhwUAIAgAAIoFACDqAQAAgAMAIOsBAACAAwAgAAQDAAChBAAgBgAAhwUAIAcAAIgFACAJAACJBQAgAAvBAQEAAAABxAEBAAAAAZECAQAAAAGSAgEAAAABkwIBAAAAAZQCAQAAAAGVAgIAAAABlgIBAAAAAZcCAQAAAAGYAgEAAAABmQIBAAAAARLBAQEAAAABygEAAACCAgLRAUAAAAAB0gFAAAAAAfEBAQAAAAHyAQEAAAAB9AEAAAD0AQL1AQEAAAAB9gEBAAAAAfcBAQAAAAH4AQEAAAAB-QEBAAAAAfoBAQAAAAH7AUAAAAAB_AFAAAAAAf0BAgAAAAH-AQIAAAABgAIAAACAAgMGwQEBAAAAAcoBAAAA6gEC0QFAAAAAAeQBAQAAAAHqAUAAAAAB6wFAAAAAAQbBAQEAAAAB0QFAAAAAAdIBQAAAAAHkAQEAAAAB7wECAAAAAfABAQAAAAEIwQEBAAAAAcgBAgAAAAHKAQAAAOkBAtEBQAAAAAHSAUAAAAAB5AEBAAAAAeYBAQAAAAHnAQEAAAABEsEBAQAAAAHKAQAAAI4CAtABAQAAAAHRAUAAAAAB0gFAAAAAAeUBAQAAAAGDAgEAAAABhAIBAAAAAYUCAQAAAAGGAkAAAAABhwIBAAAAAYgCAQAAAAGJAgEAAAABigIBAAAAAYsCAQAAAAGMAgEAAAABjgJAAAAAAZACQAAAAAERBAAA9wQAIA4AAPsEACAPAAD4BAAgEAAA-QQAIBEAAPoEACATAAD8BAAgFAAA_QQAIMEBAQAAAAHRAUAAAAAB0gFAAAAAAaECAQAAAAGiAgEAAAABowIBAAAAAaQCAQAAAAGlAkAAAAABpgIgAAAAAacCQAAAAAECAAAAAQAgIgAAkgUAIAMAAAAqACAiAACSBQAgIwAAlgUAIBMAAAAqACAEAACmBAAgDgAAqgQAIA8AAKcEACAQAACoBAAgEQAAqQQAIBMAAKsEACAUAACsBAAgGwAAlgUAIMEBAQCGAwAh0QFAAIwDACHSAUAAjAMAIaECAQCGAwAhogIBAIYDACGjAgEAiAMAIaQCAQCIAwAhpQJAAIsDACGmAiAApQQAIacCQACLAwAhEQQAAKYEACAOAACqBAAgDwAApwQAIBAAAKgEACARAACpBAAgEwAAqwQAIBQAAKwEACDBAQEAhgMAIdEBQACMAwAh0gFAAIwDACGhAgEAhgMAIaICAQCGAwAhowIBAIgDACGkAgEAiAMAIaUCQACLAwAhpgIgAKUEACGnAkAAiwMAIREOAAD7BAAgDwAA-AQAIBAAAPkEACARAAD6BAAgEwAA_AQAIBQAAP0EACAVAAD-BAAgwQEBAAAAAdEBQAAAAAHSAUAAAAABoQIBAAAAAaICAQAAAAGjAgEAAAABpAIBAAAAAaUCQAAAAAGmAiAAAAABpwJAAAAAAQIAAAABACAiAACXBQAgAwAAACoAICIAAJcFACAjAACbBQAgEwAAACoAIA4AAKoEACAPAACnBAAgEAAAqAQAIBEAAKkEACATAACrBAAgFAAArAQAIBUAAK0EACAbAACbBQAgwQEBAIYDACHRAUAAjAMAIdIBQACMAwAhoQIBAIYDACGiAgEAhgMAIaMCAQCIAwAhpAIBAIgDACGlAkAAiwMAIaYCIAClBAAhpwJAAIsDACERDgAAqgQAIA8AAKcEACAQAACoBAAgEQAAqQQAIBMAAKsEACAUAACsBAAgFQAArQQAIMEBAQCGAwAh0QFAAIwDACHSAUAAjAMAIaECAQCGAwAhogIBAIYDACGjAgEAiAMAIaQCAQCIAwAhpQJAAIsDACGmAiAApQQAIacCQACLAwAhEQQAAPcEACAOAAD7BAAgDwAA-AQAIBAAAPkEACARAAD6BAAgEwAA_AQAIBUAAP4EACDBAQEAAAAB0QFAAAAAAdIBQAAAAAGhAgEAAAABogIBAAAAAaMCAQAAAAGkAgEAAAABpQJAAAAAAaYCIAAAAAGnAkAAAAABAgAAAAEAICIAAJwFACARBAAA9wQAIA4AAPsEACAPAAD4BAAgEAAA-QQAIBEAAPoEACAUAAD9BAAgFQAA_gQAIMEBAQAAAAHRAUAAAAAB0gFAAAAAAaECAQAAAAGiAgEAAAABowIBAAAAAaQCAQAAAAGlAkAAAAABpgIgAAAAAacCQAAAAAECAAAAAQAgIgAAngUAIAMAAAAqACAiAACcBQAgIwAAogUAIBMAAAAqACAEAACmBAAgDgAAqgQAIA8AAKcEACAQAACoBAAgEQAAqQQAIBMAAKsEACAVAACtBAAgGwAAogUAIMEBAQCGAwAh0QFAAIwDACHSAUAAjAMAIaECAQCGAwAhogIBAIYDACGjAgEAiAMAIaQCAQCIAwAhpQJAAIsDACGmAiAApQQAIacCQACLAwAhEQQAAKYEACAOAACqBAAgDwAApwQAIBAAAKgEACARAACpBAAgEwAAqwQAIBUAAK0EACDBAQEAhgMAIdEBQACMAwAh0gFAAIwDACGhAgEAhgMAIaICAQCGAwAhowIBAIgDACGkAgEAiAMAIaUCQACLAwAhpgIgAKUEACGnAkAAiwMAIQMAAAAqACAiAACeBQAgIwAApQUAIBMAAAAqACAEAACmBAAgDgAAqgQAIA8AAKcEACAQAACoBAAgEQAAqQQAIBQAAKwEACAVAACtBAAgGwAApQUAIMEBAQCGAwAh0QFAAIwDACHSAUAAjAMAIaECAQCGAwAhogIBAIYDACGjAgEAiAMAIaQCAQCIAwAhpQJAAIsDACGmAiAApQQAIacCQACLAwAhEQQAAKYEACAOAACqBAAgDwAApwQAIBAAAKgEACARAACpBAAgFAAArAQAIBUAAK0EACDBAQEAhgMAIdEBQACMAwAh0gFAAIwDACGhAgEAhgMAIaICAQCGAwAhowIBAIgDACGkAgEAiAMAIaUCQACLAwAhpgIgAKUEACGnAkAAiwMAIREEAAD3BAAgDgAA-wQAIBAAAPkEACARAAD6BAAgEwAA_AQAIBQAAP0EACAVAAD-BAAgwQEBAAAAAdEBQAAAAAHSAUAAAAABoQIBAAAAAaICAQAAAAGjAgEAAAABpAIBAAAAAaUCQAAAAAGmAiAAAAABpwJAAAAAAQIAAAABACAiAACmBQAgBsEBAQAAAAHKAQAAAOoBAtEBQAAAAAHlAQEAAAAB6gFAAAAAAesBQAAAAAEEwQEBAAAAAewBAQAAAAHtAQEAAAAB7gECAAAAAQbBAQEAAAAB0QFAAAAAAdIBQAAAAAHlAQEAAAAB7wECAAAAAfABAQAAAAEIwQEBAAAAAcgBAgAAAAHKAQAAAOkBAtEBQAAAAAHSAUAAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAABAwAAACoAICIAAKYFACAjAACuBQAgEwAAACoAIAQAAKYEACAOAACqBAAgEAAAqAQAIBEAAKkEACATAACrBAAgFAAArAQAIBUAAK0EACAbAACuBQAgwQEBAIYDACHRAUAAjAMAIdIBQACMAwAhoQIBAIYDACGiAgEAhgMAIaMCAQCIAwAhpAIBAIgDACGlAkAAiwMAIaYCIAClBAAhpwJAAIsDACERBAAApgQAIA4AAKoEACAQAACoBAAgEQAAqQQAIBMAAKsEACAUAACsBAAgFQAArQQAIMEBAQCGAwAh0QFAAIwDACHSAUAAjAMAIaECAQCGAwAhogIBAIYDACGjAgEAiAMAIaQCAQCIAwAhpQJAAIsDACGmAiAApQQAIacCQACLAwAhEQQAAPcEACAOAAD7BAAgDwAA-AQAIBAAAPkEACATAAD8BAAgFAAA_QQAIBUAAP4EACDBAQEAAAAB0QFAAAAAAdIBQAAAAAGhAgEAAAABogIBAAAAAaMCAQAAAAGkAgEAAAABpQJAAAAAAaYCIAAAAAGnAkAAAAABAgAAAAEAICIAAK8FACAXBQAAhQQAIAsAAIYEACAMAACHBAAgDgAAiQQAIMEBAQAAAAHKAQAAAIICAtEBQAAAAAHSAUAAAAAB8QEBAAAAAfIBAQAAAAH0AQAAAPQBAvUBAQAAAAH2AQEAAAAB9wEBAAAAAfgBAQAAAAH5AQEAAAAB-gEBAAAAAfsBQAAAAAH8AUAAAAAB_QECAAAAAf4BAgAAAAGAAgAAAIACA4ICAQAAAAECAAAACQAgIgAAsQUAIAMAAAAqACAiAACvBQAgIwAAtQUAIBMAAAAqACAEAACmBAAgDgAAqgQAIA8AAKcEACAQAACoBAAgEwAAqwQAIBQAAKwEACAVAACtBAAgGwAAtQUAIMEBAQCGAwAh0QFAAIwDACHSAUAAjAMAIaECAQCGAwAhogIBAIYDACGjAgEAiAMAIaQCAQCIAwAhpQJAAIsDACGmAiAApQQAIacCQACLAwAhEQQAAKYEACAOAACqBAAgDwAApwQAIBAAAKgEACATAACrBAAgFAAArAQAIBUAAK0EACDBAQEAhgMAIdEBQACMAwAh0gFAAIwDACGhAgEAhgMAIaICAQCGAwAhowIBAIgDACGkAgEAiAMAIaUCQACLAwAhpgIgAKUEACGnAkAAiwMAIQMAAAAHACAiAACxBQAgIwAAuAUAIBkAAAAHACAFAADQAwAgCwAA0QMAIAwAANIDACAOAADUAwAgGwAAuAUAIMEBAQCGAwAhygEAAM8DggIi0QFAAIwDACHSAUAAjAMAIfEBAQCGAwAh8gEBAIgDACH0AQAAzQP0ASL1AQEAhgMAIfYBAQCGAwAh9wEBAIgDACH4AQEAiAMAIfkBAQCIAwAh-gEBAIgDACH7AUAAjAMAIfwBQACLAwAh_QECAIkDACH-AQIAiQMAIYACAADOA4ACI4ICAQCGAwAhFwUAANADACALAADRAwAgDAAA0gMAIA4AANQDACDBAQEAhgMAIcoBAADPA4ICItEBQACMAwAh0gFAAIwDACHxAQEAhgMAIfIBAQCIAwAh9AEAAM0D9AEi9QEBAIYDACH2AQEAhgMAIfcBAQCIAwAh-AEBAIgDACH5AQEAiAMAIfoBAQCIAwAh-wFAAIwDACH8AUAAiwMAIf0BAgCJAwAh_gECAIkDACGAAgAAzgOAAiOCAgEAhgMAIRcFAACFBAAgCwAAhgQAIA0AAIgEACAOAACJBAAgwQEBAAAAAcoBAAAAggIC0QFAAAAAAdIBQAAAAAHxAQEAAAAB8gEBAAAAAfQBAAAA9AEC9QEBAAAAAfYBAQAAAAH3AQEAAAAB-AEBAAAAAfkBAQAAAAH6AQEAAAAB-wFAAAAAAfwBQAAAAAH9AQIAAAAB_gECAAAAAYACAAAAgAIDggIBAAAAAQIAAAAJACAiAAC5BQAgAwAAAAcAICIAALkFACAjAAC9BQAgGQAAAAcAIAUAANADACALAADRAwAgDQAA0wMAIA4AANQDACAbAAC9BQAgwQEBAIYDACHKAQAAzwOCAiLRAUAAjAMAIdIBQACMAwAh8QEBAIYDACHyAQEAiAMAIfQBAADNA_QBIvUBAQCGAwAh9gEBAIYDACH3AQEAiAMAIfgBAQCIAwAh-QEBAIgDACH6AQEAiAMAIfsBQACMAwAh_AFAAIsDACH9AQIAiQMAIf4BAgCJAwAhgAIAAM4DgAIjggIBAIYDACEXBQAA0AMAIAsAANEDACANAADTAwAgDgAA1AMAIMEBAQCGAwAhygEAAM8DggIi0QFAAIwDACHSAUAAjAMAIfEBAQCGAwAh8gEBAIgDACH0AQAAzQP0ASL1AQEAhgMAIfYBAQCGAwAh9wEBAIgDACH4AQEAiAMAIfkBAQCIAwAh-gEBAIgDACH7AUAAjAMAIfwBQACLAwAh_QECAIkDACH-AQIAiQMAIYACAADOA4ACI4ICAQCGAwAhEQQAAPcEACAOAAD7BAAgDwAA-AQAIBEAAPoEACATAAD8BAAgFAAA_QQAIBUAAP4EACDBAQEAAAAB0QFAAAAAAdIBQAAAAAGhAgEAAAABogIBAAAAAaMCAQAAAAGkAgEAAAABpQJAAAAAAaYCIAAAAAGnAkAAAAABAgAAAAEAICIAAL4FACAXBQAAhQQAIAwAAIcEACANAACIBAAgDgAAiQQAIMEBAQAAAAHKAQAAAIICAtEBQAAAAAHSAUAAAAAB8QEBAAAAAfIBAQAAAAH0AQAAAPQBAvUBAQAAAAH2AQEAAAAB9wEBAAAAAfgBAQAAAAH5AQEAAAAB-gEBAAAAAfsBQAAAAAH8AUAAAAAB_QECAAAAAf4BAgAAAAGAAgAAAIACA4ICAQAAAAECAAAACQAgIgAAwAUAIAMAAAAqACAiAAC-BQAgIwAAxAUAIBMAAAAqACAEAACmBAAgDgAAqgQAIA8AAKcEACARAACpBAAgEwAAqwQAIBQAAKwEACAVAACtBAAgGwAAxAUAIMEBAQCGAwAh0QFAAIwDACHSAUAAjAMAIaECAQCGAwAhogIBAIYDACGjAgEAiAMAIaQCAQCIAwAhpQJAAIsDACGmAiAApQQAIacCQACLAwAhEQQAAKYEACAOAACqBAAgDwAApwQAIBEAAKkEACATAACrBAAgFAAArAQAIBUAAK0EACDBAQEAhgMAIdEBQACMAwAh0gFAAIwDACGhAgEAhgMAIaICAQCGAwAhowIBAIgDACGkAgEAiAMAIaUCQACLAwAhpgIgAKUEACGnAkAAiwMAIQMAAAAHACAiAADABQAgIwAAxwUAIBkAAAAHACAFAADQAwAgDAAA0gMAIA0AANMDACAOAADUAwAgGwAAxwUAIMEBAQCGAwAhygEAAM8DggIi0QFAAIwDACHSAUAAjAMAIfEBAQCGAwAh8gEBAIgDACH0AQAAzQP0ASL1AQEAhgMAIfYBAQCGAwAh9wEBAIgDACH4AQEAiAMAIfkBAQCIAwAh-gEBAIgDACH7AUAAjAMAIfwBQACLAwAh_QECAIkDACH-AQIAiQMAIYACAADOA4ACI4ICAQCGAwAhFwUAANADACAMAADSAwAgDQAA0wMAIA4AANQDACDBAQEAhgMAIcoBAADPA4ICItEBQACMAwAh0gFAAIwDACHxAQEAhgMAIfIBAQCIAwAh9AEAAM0D9AEi9QEBAIYDACH2AQEAhgMAIfcBAQCIAwAh-AEBAIgDACH5AQEAiAMAIfoBAQCIAwAh-wFAAIwDACH8AUAAiwMAIf0BAgCJAwAh_gECAIkDACGAAgAAzgOAAiOCAgEAhgMAIQkDAAC2AwAgBgAAtQMAIMEBAQAAAAHKAQAAAOoBAtEBQAAAAAHkAQEAAAAB5QEBAAAAAeoBQAAAAAHrAUAAAAABAgAAAA0AICIAAMgFACARBAAA9wQAIA8AAPgEACAQAAD5BAAgEQAA-gQAIBMAAPwEACAUAAD9BAAgFQAA_gQAIMEBAQAAAAHRAUAAAAAB0gFAAAAAAaECAQAAAAGiAgEAAAABowIBAAAAAaQCAQAAAAGlAkAAAAABpgIgAAAAAacCQAAAAAECAAAAAQAgIgAAygUAIBcFAACFBAAgCwAAhgQAIAwAAIcEACANAACIBAAgwQEBAAAAAcoBAAAAggIC0QFAAAAAAdIBQAAAAAHxAQEAAAAB8gEBAAAAAfQBAAAA9AEC9QEBAAAAAfYBAQAAAAH3AQEAAAAB-AEBAAAAAfkBAQAAAAH6AQEAAAAB-wFAAAAAAfwBQAAAAAH9AQIAAAAB_gECAAAAAYACAAAAgAIDggIBAAAAAQIAAAAJACAiAADMBQAgD8EBAQAAAAHEAQAAAMQBAsUBAQAAAAHGAQEAAAABxwEBAAAAAcgBAgAAAAHKAQAAAMoBAssBgAAAAAHMAQEAAAABzQFAAAAAAc4BQAAAAAHPAUAAAAAB0AEBAAAAAdEBQAAAAAHSAUAAAAABAwAAAAsAICIAAMgFACAjAADRBQAgCwAAAAsAIAMAAK4DACAGAACtAwAgGwAA0QUAIMEBAQCGAwAhygEAAKwD6gEi0QFAAIwDACHkAQEAhgMAIeUBAQCGAwAh6gFAAIsDACHrAUAAiwMAIQkDAACuAwAgBgAArQMAIMEBAQCGAwAhygEAAKwD6gEi0QFAAIwDACHkAQEAhgMAIeUBAQCGAwAh6gFAAIsDACHrAUAAiwMAIQMAAAAqACAiAADKBQAgIwAA1AUAIBMAAAAqACAEAACmBAAgDwAApwQAIBAAAKgEACARAACpBAAgEwAAqwQAIBQAAKwEACAVAACtBAAgGwAA1AUAIMEBAQCGAwAh0QFAAIwDACHSAUAAjAMAIaECAQCGAwAhogIBAIYDACGjAgEAiAMAIaQCAQCIAwAhpQJAAIsDACGmAiAApQQAIacCQACLAwAhEQQAAKYEACAPAACnBAAgEAAAqAQAIBEAAKkEACATAACrBAAgFAAArAQAIBUAAK0EACDBAQEAhgMAIdEBQACMAwAh0gFAAIwDACGhAgEAhgMAIaICAQCGAwAhowIBAIgDACGkAgEAiAMAIaUCQACLAwAhpgIgAKUEACGnAkAAiwMAIQMAAAAHACAiAADMBQAgIwAA1wUAIBkAAAAHACAFAADQAwAgCwAA0QMAIAwAANIDACANAADTAwAgGwAA1wUAIMEBAQCGAwAhygEAAM8DggIi0QFAAIwDACHSAUAAjAMAIfEBAQCGAwAh8gEBAIgDACH0AQAAzQP0ASL1AQEAhgMAIfYBAQCGAwAh9wEBAIgDACH4AQEAiAMAIfkBAQCIAwAh-gEBAIgDACH7AUAAjAMAIfwBQACLAwAh_QECAIkDACH-AQIAiQMAIYACAADOA4ACI4ICAQCGAwAhFwUAANADACALAADRAwAgDAAA0gMAIA0AANMDACDBAQEAhgMAIcoBAADPA4ICItEBQACMAwAh0gFAAIwDACHxAQEAhgMAIfIBAQCIAwAh9AEAAM0D9AEi9QEBAIYDACH2AQEAhgMAIfcBAQCIAwAh-AEBAIgDACH5AQEAiAMAIfoBAQCIAwAh-wFAAIwDACH8AUAAiwMAIf0BAgCJAwAh_gECAIkDACGAAgAAzgOAAiOCAgEAhgMAIQwDAACmAwAgBgAApQMAIAcAAKcDACDBAQEAAAAByAECAAAAAcoBAAAA6QEC0QFAAAAAAdIBQAAAAAHkAQEAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAABAgAAAB8AICIAANgFACADAAAADwAgIgAA2AUAICMAANwFACAOAAAADwAgAwAAlgMAIAYAAJUDACAHAACXAwAgGwAA3AUAIMEBAQCGAwAhyAECAIkDACHKAQAAlAPpASLRAUAAjAMAIdIBQACMAwAh5AEBAIYDACHlAQEAhgMAIeYBAQCGAwAh5wEBAIYDACEMAwAAlgMAIAYAAJUDACAHAACXAwAgwQEBAIYDACHIAQIAiQMAIcoBAACUA-kBItEBQACMAwAh0gFAAIwDACHkAQEAhgMAIeUBAQCGAwAh5gEBAIYDACHnAQEAhgMAIQkEBgIKAA0OJwUPCgMQJQQRJgkTKQsULgsVMAwBAwABBgUAAQoACgsOBAwZCA0dCQ4gBQMDAAEGAAMIEAUFAwABBgADBwAECRQGCgAHAQgABQEJFQABBgADAgMAAQYAAwQLIQAMIgANIwAOJAACAwABEisBAQMAAQYEMQAONQAPMgAQMwARNAAUNgAAAAADCgASKAATKQAUAAAAAwoAEigAEykAFAEDAAEBAwABAwoAGSgAGikAGwAAAAMKABkoABopABsBAwABAQMAAQUKACAoACMpACRKACFLACIAAAAAAAUKACAoACMpACRKACFLACICAwABEoUBAQIDAAESiwEBAwoAKSgAKikAKwAAAAMKACkoACopACsBBQABAQUAAQUKADAoADMpADRKADFLADIAAAAAAAUKADAoADMpADRKADFLADICAwABBgADAgMAAQYAAwUKADkoADwpAD1KADpLADsAAAAAAAUKADkoADwpAD1KADpLADsBBgADAQYAAwUKAEIoAEUpAEZKAENLAEQAAAAAAAUKAEIoAEUpAEZKAENLAEQCAwABBgADAgMAAQYAAwMKAEsoAEwpAE0AAAADCgBLKABMKQBNAwMAAQYAAwcABAMDAAEGAAMHAAQFCgBSKABVKQBWSgBTSwBUAAAAAAAFCgBSKABVKQBWSgBTSwBUAQgABQEIAAUFCgBbKABeKQBfSgBcSwBdAAAAAAAFCgBbKABeKQBfSgBcSwBdFgIBFzcBGDkBGToBGjsBHD0BHT8OHkAPH0IBIEQOIUUQJEYBJUcBJkgOKksRK0wVLE4MLU8MLlEML1IMMFMMMVUMMlcOM1gWNFoMNVwONl0XN14MOF8MOWAOOmMYO2QcPGUCPWYCPmcCP2gCQGkCQWsCQm0OQ24dRHACRXIORnMeR3QCSHUCSXYOTHkfTXolTnsLT3wLUH0LUX4LUn8LU4EBC1SDAQ5VhAEmVocBC1eJAQ5YigEnWYwBC1qNAQtbjgEOXJEBKF2SASxekwEDX5QBA2CVAQNhlgEDYpcBA2OZAQNkmwEOZZwBLWaeAQNnoAEOaKEBLmmiAQNqowEDa6QBDmynAS9tqAE1bqkBCW-qAQlwqwEJcawBCXKtAQlzrwEJdLEBDnWyATZ2tAEJd7YBDni3ATd5uAEJerkBCXu6AQ58vQE4fb4BPn6_AQh_wAEIgAHBAQiBAcIBCIIBwwEIgwHFAQiEAccBDoUByAE_hgHKAQiHAcwBDogBzQFAiQHOAQiKAc8BCIsB0AEOjAHTAUGNAdQBR44B1QEEjwHWAQSQAdcBBJEB2AEEkgHZAQSTAdsBBJQB3QEOlQHeAUiWAeABBJcB4gEOmAHjAUmZAeQBBJoB5QEEmwHmAQ6cAekBSp0B6gFOngHrAQWfAewBBaAB7QEFoQHuAQWiAe8BBaMB8QEFpAHzAQ6lAfQBT6YB9gEFpwH4AQ6oAfkBUKkB-gEFqgH7AQWrAfwBDqwB_wFRrQGAAleuAYECBq8BggIGsAGDAgaxAYQCBrIBhQIGswGHAga0AYkCDrUBigJYtgGMAga3AY4CDrgBjwJZuQGQAga6AZECBrsBkgIOvAGVAlq9AZYCYA" + graph: "3QVgoAEVBAAA3wIAIA4AAOMCACAPAADgAgAgEAAA4QIAIBEAAOICACATAADkAgAgFAAA5QIAIBUAAOYCACC-AQAA3QIAML8BAAAqABDAAQAA3QIAMMEBAQAAAAHRAUAA0gIAIdIBQADSAgAhoQIBANgCACGiAgEAAAABowIBANACACGkAgEA0AIAIaUCQADbAgAhpgIgAN4CACGnAkAA2wIAIQEAAAABACAQAwAA0wIAIL4BAAD_AgAwvwEAAAMAEMABAAD_AgAwwQEBANgCACHEAQEA2AIAIeUBAQDYAgAhkQIBANgCACGSAgEA2AIAIZMCAQDQAgAhlAIBANACACGVAgIAgAMAIZYCAQDQAgAhlwIBANACACGYAgEA0AIAIZkCAQDQAgAhCAMAAKIEACCTAgAAgQMAIJQCAACBAwAglQIAAIEDACCWAgAAgQMAIJcCAACBAwAgmAIAAIEDACCZAgAAgQMAIBEDAADTAgAgvgEAAP8CADC_AQAAAwAQwAEAAP8CADDBAQEAAAABxAEBANgCACHlAQEA2AIAIZECAQDYAgAhkgIBANgCACGTAgEA0AIAIZQCAQDQAgAhlQICAIADACGWAgEA0AIAIZcCAQDQAgAhmAIBANACACGZAgEA0AIAIawCAAD-AgAgAwAAAAMAIAEAAAQAMAIAAAUAIBsFAADTAgAgCwAA4QIAIAwAAP0CACANAADiAgAgDgAA4wIAIL4BAAD6AgAwvwEAAAcAEMABAAD6AgAwwQEBANgCACHKAQAA_AKCAiLRAUAA0gIAIdIBQADSAgAh8QEBANgCACHyAQEA0AIAIfQBAAD7AvQBIvUBAQDYAgAh9gEBANgCACH3AQEA0AIAIfgBAQDQAgAh-QEBANACACH6AQEA0AIAIfsBQADSAgAh_AFAANsCACH9AQIA6QIAIf4BAgDpAgAhgAIAANECgAIjggIBANgCACEMBQAAogQAIAsAAIIFACAMAACMBQAgDQAAgwUAIA4AAIQFACDyAQAAgQMAIPcBAACBAwAg-AEAAIEDACD5AQAAgQMAIPoBAACBAwAg_AEAAIEDACCAAgAAgQMAIBsFAADTAgAgCwAA4QIAIAwAAP0CACANAADiAgAgDgAA4wIAIL4BAAD6AgAwvwEAAAcAEMABAAD6AgAwwQEBAAAAAcoBAAD8AoICItEBQADSAgAh0gFAANICACHxAQEA2AIAIfIBAQDQAgAh9AEAAPsC9AEi9QEBANgCACH2AQEA2AIAIfcBAQDQAgAh-AEBANACACH5AQEA0AIAIfoBAQDQAgAh-wFAANICACH8AUAA2wIAIf0BAgDpAgAh_gECAOkCACGAAgAA0QKAAiOCAgEA2AIAIQMAAAAHACABAAAIADACAAAJACANAwAA0wIAIAYAAOsCACAIAAD5AgAgvgEAAPcCADC_AQAACwAQwAEAAPcCADDBAQEA2AIAIcoBAAD4AuoBItEBQADSAgAh5AEBANgCACHlAQEA2AIAIeoBQADbAgAh6wFAANsCACEFAwAAogQAIAYAAIgFACAIAACLBQAg6gEAAIEDACDrAQAAgQMAIA4DAADTAgAgBgAA6wIAIAgAAPkCACC-AQAA9wIAML8BAAALABDAAQAA9wIAMMEBAQAAAAHKAQAA-ALqASLRAUAA0gIAIeQBAQDYAgAh5QEBANgCACHqAUAA2wIAIesBQADbAgAhqwIAAPYCACADAAAACwAgAQAADAAwAgAADQAgEAMAANMCACAGAADrAgAgBwAA7AIAIAkAAO0CACC-AQAA6AIAML8BAAAPABDAAQAA6AIAMMEBAQDYAgAhyAECAOkCACHKAQAA6gLpASLRAUAA0gIAIdIBQADSAgAh5AEBANgCACHlAQEA2AIAIeYBAQDYAgAh5wEBANgCACEBAAAADwAgFAgAAPUCACC-AQAA8QIAML8BAAARABDAAQAA8QIAMMEBAQDYAgAhwgEBANgCACHEAQAA8gLEASLFAQEA2AIAIcYBAQDQAgAhxwEBANACACHIAQIA6QIAIcoBAADzAsoBIssBAAD0AgAgzAEBANACACHNAUAA2wIAIc4BQADbAgAhzwFAANsCACHQAQEA0AIAIdEBQADSAgAh0gFAANICACEJCAAAiwUAIMYBAACBAwAgxwEAAIEDACDLAQAAgQMAIMwBAACBAwAgzQEAAIEDACDOAQAAgQMAIM8BAACBAwAg0AEAAIEDACAUCAAA9QIAIL4BAADxAgAwvwEAABEAEMABAADxAgAwwQEBAAAAAcIBAQDYAgAhxAEAAPICxAEixQEBAAAAAcYBAQDQAgAhxwEBANACACHIAQIA6QIAIcoBAADzAsoBIssBAAD0AgAgzAEBANACACHNAUAA2wIAIc4BQADbAgAhzwFAANsCACHQAQEA0AIAIdEBQADSAgAh0gFAANICACEDAAAAEQAgAQAAEgAwAgAAEwAgAQAAABEAIAkGAADrAgAgvgEAAPACADC_AQAAFgAQwAEAAPACADDBAQEA2AIAIeQBAQDYAgAh7AEBANgCACHtAQEA0AIAIe4BAgDpAgAhAgYAAIgFACDtAQAAgQMAIAkGAADrAgAgvgEAAPACADC_AQAAFgAQwAEAAPACADDBAQEAAAAB5AEBANgCACHsAQEA2AIAIe0BAQDQAgAh7gECAOkCACEDAAAAFgAgAQAAFwAwAgAAGAAgDAMAANMCACAGAADrAgAgvgEAAO8CADC_AQAAGgAQwAEAAO8CADDBAQEA2AIAIdEBQADSAgAh0gFAANICACHkAQEA2AIAIeUBAQDYAgAh7wECAOkCACHwAQEA0AIAIQMDAACiBAAgBgAAiAUAIPABAACBAwAgDQMAANMCACAGAADrAgAgvgEAAO8CADC_AQAAGgAQwAEAAO8CADDBAQEAAAAB0QFAANICACHSAUAA0gIAIeQBAQDYAgAh5QEBANgCACHvAQIA6QIAIfABAQDQAgAhqwIAAO4CACADAAAAGgAgAQAAGwAwAgAAHAAgBAMAAKIEACAGAACIBQAgBwAAiQUAIAkAAIoFACARAwAA0wIAIAYAAOsCACAHAADsAgAgCQAA7QIAIL4BAADoAgAwvwEAAA8AEMABAADoAgAwwQEBAAAAAcgBAgDpAgAhygEAAOoC6QEi0QFAANICACHSAUAA0gIAIeQBAQDYAgAh5QEBANgCACHmAQEAAAAB5wEBANgCACGrAgAA5wIAIAMAAAAPACABAAAeADACAAAfACABAAAACwAgAQAAABYAIAEAAAAaACABAAAADwAgAwAAAAsAIAEAAAwAMAIAAA0AIAMAAAAaACABAAAbADACAAAcACADAAAADwAgAQAAHgAwAgAAHwAgGAMAANMCACASAADcAgAgvgEAANkCADC_AQAAKAAQwAEAANkCADDBAQEA2AIAIcoBAADaAo4CItABAQDQAgAh0QFAANICACHSAUAA0gIAIeUBAQDYAgAhgwIBANgCACGEAgEA2AIAIYUCAQDYAgAhhgJAANICACGHAgEA2AIAIYgCAQDYAgAhiQIBANgCACGKAgEA2AIAIYsCAQDYAgAhjAIBANgCACGOAkAA2wIAIY8CAQDQAgAhkAJAANsCACEBAAAAKAAgFQQAAN8CACAOAADjAgAgDwAA4AIAIBAAAOECACARAADiAgAgEwAA5AIAIBQAAOUCACAVAADmAgAgvgEAAN0CADC_AQAAKgAQwAEAAN0CADDBAQEA2AIAIdEBQADSAgAh0gFAANICACGhAgEA2AIAIaICAQDYAgAhowIBANACACGkAgEA0AIAIaUCQADbAgAhpgIgAN4CACGnAkAA2wIAIQEAAAAqACAGAwAAogQAIBIAAKIEACDQAQAAgQMAII4CAACBAwAgjwIAAIEDACCQAgAAgQMAIBgDAADTAgAgEgAA3AIAIL4BAADZAgAwvwEAACgAEMABAADZAgAwwQEBAAAAAcoBAADaAo4CItABAQDQAgAh0QFAANICACHSAUAA0gIAIeUBAQAAAAGDAgEA2AIAIYQCAQDYAgAhhQIBAAAAAYYCQADSAgAhhwIBANgCACGIAgEA2AIAIYkCAQDYAgAhigIBANgCACGLAgEA2AIAIYwCAQDYAgAhjgJAANsCACGPAgEA0AIAIZACQADbAgAhAwAAACgAIAEAACwAMAIAAC0AIA0DAADTAgAgvgEAAM8CADC_AQAALwAQwAEAAM8CADDBAQEA2AIAIdEBQADSAgAh0gFAANICACHlAQEA2AIAIYACAADRAoACI5oCAQDQAgAhmwIBANACACGcAgAAzgIAIJ0CAQDQAgAhAQAAAC8AIAEAAAADACABAAAABwAgAQAAAAsAIAEAAAAaACABAAAADwAgAQAAACgAIAEAAAABACAMBAAAgAUAIA4AAIQFACAPAACBBQAgEAAAggUAIBEAAIMFACATAACFBQAgFAAAhgUAIBUAAIcFACCjAgAAgQMAIKQCAACBAwAgpQIAAIEDACCnAgAAgQMAIAMAAAAqACABAAA4ADACAAABACADAAAAKgAgAQAAOAAwAgAAAQAgAwAAACoAIAEAADgAMAIAAAEAIBIEAAD4BAAgDgAA_AQAIA8AAPkEACAQAAD6BAAgEQAA-wQAIBMAAP0EACAUAAD-BAAgFQAA_wQAIMEBAQAAAAHRAUAAAAAB0gFAAAAAAaECAQAAAAGiAgEAAAABowIBAAAAAaQCAQAAAAGlAkAAAAABpgIgAAAAAacCQAAAAAEBGwAAPAAgCsEBAQAAAAHRAUAAAAAB0gFAAAAAAaECAQAAAAGiAgEAAAABowIBAAAAAaQCAQAAAAGlAkAAAAABpgIgAAAAAacCQAAAAAEBGwAAPgAwARsAAD4AMBIEAACnBAAgDgAAqwQAIA8AAKgEACAQAACpBAAgEQAAqgQAIBMAAKwEACAUAACtBAAgFQAArgQAIMEBAQCHAwAh0QFAAI0DACHSAUAAjQMAIaECAQCHAwAhogIBAIcDACGjAgEAiQMAIaQCAQCJAwAhpQJAAIwDACGmAiAApgQAIacCQACMAwAhAgAAAAEAIBsAAEEAIArBAQEAhwMAIdEBQACNAwAh0gFAAI0DACGhAgEAhwMAIaICAQCHAwAhowIBAIkDACGkAgEAiQMAIaUCQACMAwAhpgIgAKYEACGnAkAAjAMAIQIAAAAqACAbAABDACACAAAAKgAgGwAAQwAgAwAAAAEAICIAADwAICMAAEEAIAEAAAABACABAAAAKgAgBwoAAKMEACAoAAClBAAgKQAApAQAIKMCAACBAwAgpAIAAIEDACClAgAAgQMAIKcCAACBAwAgDb4BAADUAgAwvwEAAEoAEMABAADUAgAwwQEBAJgCACHRAUAAnwIAIdIBQACfAgAhoQIBAJgCACGiAgEAmAIAIaMCAQCaAgAhpAIBAJoCACGlAkAAngIAIaYCIADVAgAhpwJAAJ4CACEDAAAAKgAgAQAASQAwJwAASgAgAwAAACoAIAEAADgAMAIAAAEAIA0DAADTAgAgvgEAAM8CADC_AQAALwAQwAEAAM8CADDBAQEAAAAB0QFAANICACHSAUAA0gIAIeUBAQAAAAGAAgAA0QKAAiOaAgEA0AIAIZsCAQDQAgAhnAIAAM4CACCdAgEA0AIAIQEAAABNACABAAAATQAgBQMAAKIEACCAAgAAgQMAIJoCAACBAwAgmwIAAIEDACCdAgAAgQMAIAMAAAAvACABAABQADACAABNACADAAAALwAgAQAAUAAwAgAATQAgAwAAAC8AIAEAAFAAMAIAAE0AIAoDAAChBAAgwQEBAAAAAdEBQAAAAAHSAUAAAAAB5QEBAAAAAYACAAAAgAIDmgIBAAAAAZsCAQAAAAGcAgAAoAQAIJ0CAQAAAAEBGwAAVAAgCcEBAQAAAAHRAUAAAAAB0gFAAAAAAeUBAQAAAAGAAgAAAIACA5oCAQAAAAGbAgEAAAABnAIAAKAEACCdAgEAAAABARsAAFYAMAEbAABWADAKAwAAnwQAIMEBAQCHAwAh0QFAAI0DACHSAUAAjQMAIeUBAQCHAwAhgAIAAM8DgAIjmgIBAIkDACGbAgEAiQMAIZwCAACeBAAgnQIBAIkDACECAAAATQAgGwAAWQAgCcEBAQCHAwAh0QFAAI0DACHSAUAAjQMAIeUBAQCHAwAhgAIAAM8DgAIjmgIBAIkDACGbAgEAiQMAIZwCAACeBAAgnQIBAIkDACECAAAALwAgGwAAWwAgAgAAAC8AIBsAAFsAIAMAAABNACAiAABUACAjAABZACABAAAATQAgAQAAAC8AIAcKAACbBAAgKAAAnQQAICkAAJwEACCAAgAAgQMAIJoCAACBAwAgmwIAAIEDACCdAgAAgQMAIAy-AQAAzQIAML8BAABiABDAAQAAzQIAMMEBAQCYAgAh0QFAAJ8CACHSAUAAnwIAIeUBAQCYAgAhgAIAAL0CgAIjmgIBAJoCACGbAgEAmgIAIZwCAADOAgAgnQIBAJoCACEDAAAALwAgAQAAYQAwJwAAYgAgAwAAAC8AIAEAAFAAMAIAAE0AIAEAAAAFACABAAAABQAgAwAAAAMAIAEAAAQAMAIAAAUAIAMAAAADACABAAAEADACAAAFACADAAAAAwAgAQAABAAwAgAABQAgDQMAAJoEACDBAQEAAAABxAEBAAAAAeUBAQAAAAGRAgEAAAABkgIBAAAAAZMCAQAAAAGUAgEAAAABlQICAAAAAZYCAQAAAAGXAgEAAAABmAIBAAAAAZkCAQAAAAEBGwAAagAgDMEBAQAAAAHEAQEAAAAB5QEBAAAAAZECAQAAAAGSAgEAAAABkwIBAAAAAZQCAQAAAAGVAgIAAAABlgIBAAAAAZcCAQAAAAGYAgEAAAABmQIBAAAAAQEbAABsADABGwAAbAAwDQMAAJkEACDBAQEAhwMAIcQBAQCHAwAh5QEBAIcDACGRAgEAhwMAIZICAQCHAwAhkwIBAIkDACGUAgEAiQMAIZUCAgCYBAAhlgIBAIkDACGXAgEAiQMAIZgCAQCJAwAhmQIBAIkDACECAAAABQAgGwAAbwAgDMEBAQCHAwAhxAEBAIcDACHlAQEAhwMAIZECAQCHAwAhkgIBAIcDACGTAgEAiQMAIZQCAQCJAwAhlQICAJgEACGWAgEAiQMAIZcCAQCJAwAhmAIBAIkDACGZAgEAiQMAIQIAAAADACAbAABxACACAAAAAwAgGwAAcQAgAwAAAAUAICIAAGoAICMAAG8AIAEAAAAFACABAAAAAwAgDAoAAJMEACAoAACWBAAgKQAAlQQAIEoAAJQEACBLAACXBAAgkwIAAIEDACCUAgAAgQMAIJUCAACBAwAglgIAAIEDACCXAgAAgQMAIJgCAACBAwAgmQIAAIEDACAPvgEAAMkCADC_AQAAeAAQwAEAAMkCADDBAQEAmAIAIcQBAQCYAgAh5QEBAJgCACGRAgEAmAIAIZICAQCYAgAhkwIBAJoCACGUAgEAmgIAIZUCAgDKAgAhlgIBAJoCACGXAgEAmgIAIZgCAQCaAgAhmQIBAJoCACEDAAAAAwAgAQAAdwAwJwAAeAAgAwAAAAMAIAEAAAQAMAIAAAUAIAEAAAAtACABAAAALQAgAwAAACgAIAEAACwAMAIAAC0AIAMAAAAoACABAAAsADACAAAtACADAAAAKAAgAQAALAAwAgAALQAgFQMAAJEEACASAACSBAAgwQEBAAAAAcoBAAAAjgIC0AEBAAAAAdEBQAAAAAHSAUAAAAAB5QEBAAAAAYMCAQAAAAGEAgEAAAABhQIBAAAAAYYCQAAAAAGHAgEAAAABiAIBAAAAAYkCAQAAAAGKAgEAAAABiwIBAAAAAYwCAQAAAAGOAkAAAAABjwIBAAAAAZACQAAAAAEBGwAAgAEAIBPBAQEAAAABygEAAACOAgLQAQEAAAAB0QFAAAAAAdIBQAAAAAHlAQEAAAABgwIBAAAAAYQCAQAAAAGFAgEAAAABhgJAAAAAAYcCAQAAAAGIAgEAAAABiQIBAAAAAYoCAQAAAAGLAgEAAAABjAIBAAAAAY4CQAAAAAGPAgEAAAABkAJAAAAAAQEbAACCAQAwARsAAIIBADABAAAAKgAgFQMAAI8EACASAACQBAAgwQEBAIcDACHKAQAAjgSOAiLQAQEAiQMAIdEBQACNAwAh0gFAAI0DACHlAQEAhwMAIYMCAQCHAwAhhAIBAIcDACGFAgEAhwMAIYYCQACNAwAhhwIBAIcDACGIAgEAhwMAIYkCAQCHAwAhigIBAIcDACGLAgEAhwMAIYwCAQCHAwAhjgJAAIwDACGPAgEAiQMAIZACQACMAwAhAgAAAC0AIBsAAIYBACATwQEBAIcDACHKAQAAjgSOAiLQAQEAiQMAIdEBQACNAwAh0gFAAI0DACHlAQEAhwMAIYMCAQCHAwAhhAIBAIcDACGFAgEAhwMAIYYCQACNAwAhhwIBAIcDACGIAgEAhwMAIYkCAQCHAwAhigIBAIcDACGLAgEAhwMAIYwCAQCHAwAhjgJAAIwDACGPAgEAiQMAIZACQACMAwAhAgAAACgAIBsAAIgBACACAAAAKAAgGwAAiAEAIAEAAAAqACADAAAALQAgIgAAgAEAICMAAIYBACABAAAALQAgAQAAACgAIAcKAACLBAAgKAAAjQQAICkAAIwEACDQAQAAgQMAII4CAACBAwAgjwIAAIEDACCQAgAAgQMAIBa-AQAAxQIAML8BAACQAQAQwAEAAMUCADDBAQEAmAIAIcoBAADGAo4CItABAQCaAgAh0QFAAJ8CACHSAUAAnwIAIeUBAQCYAgAhgwIBAJgCACGEAgEAmAIAIYUCAQCYAgAhhgJAAJ8CACGHAgEAmAIAIYgCAQCYAgAhiQIBAJgCACGKAgEAmAIAIYsCAQCYAgAhjAIBAJgCACGOAkAAngIAIY8CAQCaAgAhkAJAAJ4CACEDAAAAKAAgAQAAjwEAMCcAAJABACADAAAAKAAgAQAALAAwAgAALQAgAQAAAAkAIAEAAAAJACADAAAABwAgAQAACAAwAgAACQAgAwAAAAcAIAEAAAgAMAIAAAkAIAMAAAAHACABAAAIADACAAAJACAYBQAAhgQAIAsAAIcEACAMAACIBAAgDQAAiQQAIA4AAIoEACDBAQEAAAABygEAAACCAgLRAUAAAAAB0gFAAAAAAfEBAQAAAAHyAQEAAAAB9AEAAAD0AQL1AQEAAAAB9gEBAAAAAfcBAQAAAAH4AQEAAAAB-QEBAAAAAfoBAQAAAAH7AUAAAAAB_AFAAAAAAf0BAgAAAAH-AQIAAAABgAIAAACAAgOCAgEAAAABARsAAJgBACATwQEBAAAAAcoBAAAAggIC0QFAAAAAAdIBQAAAAAHxAQEAAAAB8gEBAAAAAfQBAAAA9AEC9QEBAAAAAfYBAQAAAAH3AQEAAAAB-AEBAAAAAfkBAQAAAAH6AQEAAAAB-wFAAAAAAfwBQAAAAAH9AQIAAAAB_gECAAAAAYACAAAAgAIDggIBAAAAAQEbAACaAQAwARsAAJoBADAYBQAA0QMAIAsAANIDACAMAADTAwAgDQAA1AMAIA4AANUDACDBAQEAhwMAIcoBAADQA4ICItEBQACNAwAh0gFAAI0DACHxAQEAhwMAIfIBAQCJAwAh9AEAAM4D9AEi9QEBAIcDACH2AQEAhwMAIfcBAQCJAwAh-AEBAIkDACH5AQEAiQMAIfoBAQCJAwAh-wFAAI0DACH8AUAAjAMAIf0BAgCKAwAh_gECAIoDACGAAgAAzwOAAiOCAgEAhwMAIQIAAAAJACAbAACdAQAgE8EBAQCHAwAhygEAANADggIi0QFAAI0DACHSAUAAjQMAIfEBAQCHAwAh8gEBAIkDACH0AQAAzgP0ASL1AQEAhwMAIfYBAQCHAwAh9wEBAIkDACH4AQEAiQMAIfkBAQCJAwAh-gEBAIkDACH7AUAAjQMAIfwBQACMAwAh_QECAIoDACH-AQIAigMAIYACAADPA4ACI4ICAQCHAwAhAgAAAAcAIBsAAJ8BACACAAAABwAgGwAAnwEAIAMAAAAJACAiAACYAQAgIwAAnQEAIAEAAAAJACABAAAABwAgDAoAAMkDACAoAADMAwAgKQAAywMAIEoAAMoDACBLAADNAwAg8gEAAIEDACD3AQAAgQMAIPgBAACBAwAg-QEAAIEDACD6AQAAgQMAIPwBAACBAwAggAIAAIEDACAWvgEAALsCADC_AQAApgEAEMABAAC7AgAwwQEBAJgCACHKAQAAvgKCAiLRAUAAnwIAIdIBQACfAgAh8QEBAJgCACHyAQEAmgIAIfQBAAC8AvQBIvUBAQCYAgAh9gEBAJgCACH3AQEAmgIAIfgBAQCaAgAh-QEBAJoCACH6AQEAmgIAIfsBQACfAgAh_AFAAJ4CACH9AQIAmwIAIf4BAgCbAgAhgAIAAL0CgAIjggIBAJgCACEDAAAABwAgAQAApQEAMCcAAKYBACADAAAABwAgAQAACAAwAgAACQAgAQAAABwAIAEAAAAcACADAAAAGgAgAQAAGwAwAgAAHAAgAwAAABoAIAEAABsAMAIAABwAIAMAAAAaACABAAAbADACAAAcACAJAwAAyAMAIAYAAMcDACDBAQEAAAAB0QFAAAAAAdIBQAAAAAHkAQEAAAAB5QEBAAAAAe8BAgAAAAHwAQEAAAABARsAAK4BACAHwQEBAAAAAdEBQAAAAAHSAUAAAAAB5AEBAAAAAeUBAQAAAAHvAQIAAAAB8AEBAAAAAQEbAACwAQAwARsAALABADAJAwAAxgMAIAYAAMUDACDBAQEAhwMAIdEBQACNAwAh0gFAAI0DACHkAQEAhwMAIeUBAQCHAwAh7wECAIoDACHwAQEAiQMAIQIAAAAcACAbAACzAQAgB8EBAQCHAwAh0QFAAI0DACHSAUAAjQMAIeQBAQCHAwAh5QEBAIcDACHvAQIAigMAIfABAQCJAwAhAgAAABoAIBsAALUBACACAAAAGgAgGwAAtQEAIAMAAAAcACAiAACuAQAgIwAAswEAIAEAAAAcACABAAAAGgAgBgoAAMADACAoAADDAwAgKQAAwgMAIEoAAMEDACBLAADEAwAg8AEAAIEDACAKvgEAALoCADC_AQAAvAEAEMABAAC6AgAwwQEBAJgCACHRAUAAnwIAIdIBQACfAgAh5AEBAJgCACHlAQEAmAIAIe8BAgCbAgAh8AEBAJoCACEDAAAAGgAgAQAAuwEAMCcAALwBACADAAAAGgAgAQAAGwAwAgAAHAAgAQAAABgAIAEAAAAYACADAAAAFgAgAQAAFwAwAgAAGAAgAwAAABYAIAEAABcAMAIAABgAIAMAAAAWACABAAAXADACAAAYACAGBgAAvwMAIMEBAQAAAAHkAQEAAAAB7AEBAAAAAe0BAQAAAAHuAQIAAAABARsAAMQBACAFwQEBAAAAAeQBAQAAAAHsAQEAAAAB7QEBAAAAAe4BAgAAAAEBGwAAxgEAMAEbAADGAQAwBgYAAL4DACDBAQEAhwMAIeQBAQCHAwAh7AEBAIcDACHtAQEAiQMAIe4BAgCKAwAhAgAAABgAIBsAAMkBACAFwQEBAIcDACHkAQEAhwMAIewBAQCHAwAh7QEBAIkDACHuAQIAigMAIQIAAAAWACAbAADLAQAgAgAAABYAIBsAAMsBACADAAAAGAAgIgAAxAEAICMAAMkBACABAAAAGAAgAQAAABYAIAYKAAC5AwAgKAAAvAMAICkAALsDACBKAAC6AwAgSwAAvQMAIO0BAACBAwAgCL4BAAC5AgAwvwEAANIBABDAAQAAuQIAMMEBAQCYAgAh5AEBAJgCACHsAQEAmAIAIe0BAQCaAgAh7gECAJsCACEDAAAAFgAgAQAA0QEAMCcAANIBACADAAAAFgAgAQAAFwAwAgAAGAAgAQAAAA0AIAEAAAANACADAAAACwAgAQAADAAwAgAADQAgAwAAAAsAIAEAAAwAMAIAAA0AIAMAAAALACABAAAMADACAAANACAKAwAAtwMAIAYAALYDACAIAAC4AwAgwQEBAAAAAcoBAAAA6gEC0QFAAAAAAeQBAQAAAAHlAQEAAAAB6gFAAAAAAesBQAAAAAEBGwAA2gEAIAfBAQEAAAABygEAAADqAQLRAUAAAAAB5AEBAAAAAeUBAQAAAAHqAUAAAAAB6wFAAAAAAQEbAADcAQAwARsAANwBADAKAwAArwMAIAYAAK4DACAIAACwAwAgwQEBAIcDACHKAQAArQPqASLRAUAAjQMAIeQBAQCHAwAh5QEBAIcDACHqAUAAjAMAIesBQACMAwAhAgAAAA0AIBsAAN8BACAHwQEBAIcDACHKAQAArQPqASLRAUAAjQMAIeQBAQCHAwAh5QEBAIcDACHqAUAAjAMAIesBQACMAwAhAgAAAAsAIBsAAOEBACACAAAACwAgGwAA4QEAIAMAAAANACAiAADaAQAgIwAA3wEAIAEAAAANACABAAAACwAgBQoAAKoDACAoAACsAwAgKQAAqwMAIOoBAACBAwAg6wEAAIEDACAKvgEAALUCADC_AQAA6AEAEMABAAC1AgAwwQEBAJgCACHKAQAAtgLqASLRAUAAnwIAIeQBAQCYAgAh5QEBAJgCACHqAUAAngIAIesBQACeAgAhAwAAAAsAIAEAAOcBADAnAADoAQAgAwAAAAsAIAEAAAwAMAIAAA0AIAEAAAAfACABAAAAHwAgAwAAAA8AIAEAAB4AMAIAAB8AIAMAAAAPACABAAAeADACAAAfACADAAAADwAgAQAAHgAwAgAAHwAgDQMAAKcDACAGAACmAwAgBwAAqAMAIAkAAKkDACDBAQEAAAAByAECAAAAAcoBAAAA6QEC0QFAAAAAAdIBQAAAAAHkAQEAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAABARsAAPABACAJwQEBAAAAAcgBAgAAAAHKAQAAAOkBAtEBQAAAAAHSAUAAAAAB5AEBAAAAAeUBAQAAAAHmAQEAAAAB5wEBAAAAAQEbAADyAQAwARsAAPIBADANAwAAlwMAIAYAAJYDACAHAACYAwAgCQAAmQMAIMEBAQCHAwAhyAECAIoDACHKAQAAlQPpASLRAUAAjQMAIdIBQACNAwAh5AEBAIcDACHlAQEAhwMAIeYBAQCHAwAh5wEBAIcDACECAAAAHwAgGwAA9QEAIAnBAQEAhwMAIcgBAgCKAwAhygEAAJUD6QEi0QFAAI0DACHSAUAAjQMAIeQBAQCHAwAh5QEBAIcDACHmAQEAhwMAIecBAQCHAwAhAgAAAA8AIBsAAPcBACACAAAADwAgGwAA9wEAIAMAAAAfACAiAADwAQAgIwAA9QEAIAEAAAAfACABAAAADwAgBQoAAJADACAoAACTAwAgKQAAkgMAIEoAAJEDACBLAACUAwAgDL4BAACxAgAwvwEAAP4BABDAAQAAsQIAMMEBAQCYAgAhyAECAJsCACHKAQAAsgLpASLRAUAAnwIAIdIBQACfAgAh5AEBAJgCACHlAQEAmAIAIeYBAQCYAgAh5wEBAJgCACEDAAAADwAgAQAA_QEAMCcAAP4BACADAAAADwAgAQAAHgAwAgAAHwAgAQAAABMAIAEAAAATACADAAAAEQAgAQAAEgAwAgAAEwAgAwAAABEAIAEAABIAMAIAABMAIAMAAAARACABAAASADACAAATACARCAAAjwMAIMEBAQAAAAHCAQEAAAABxAEAAADEAQLFAQEAAAABxgEBAAAAAccBAQAAAAHIAQIAAAABygEAAADKAQLLAYAAAAABzAEBAAAAAc0BQAAAAAHOAUAAAAABzwFAAAAAAdABAQAAAAHRAUAAAAAB0gFAAAAAAQEbAACGAgAgEMEBAQAAAAHCAQEAAAABxAEAAADEAQLFAQEAAAABxgEBAAAAAccBAQAAAAHIAQIAAAABygEAAADKAQLLAYAAAAABzAEBAAAAAc0BQAAAAAHOAUAAAAABzwFAAAAAAdABAQAAAAHRAUAAAAAB0gFAAAAAAQEbAACIAgAwARsAAIgCADARCAAAjgMAIMEBAQCHAwAhwgEBAIcDACHEAQAAiAPEASLFAQEAhwMAIcYBAQCJAwAhxwEBAIkDACHIAQIAigMAIcoBAACLA8oBIssBgAAAAAHMAQEAiQMAIc0BQACMAwAhzgFAAIwDACHPAUAAjAMAIdABAQCJAwAh0QFAAI0DACHSAUAAjQMAIQIAAAATACAbAACLAgAgEMEBAQCHAwAhwgEBAIcDACHEAQAAiAPEASLFAQEAhwMAIcYBAQCJAwAhxwEBAIkDACHIAQIAigMAIcoBAACLA8oBIssBgAAAAAHMAQEAiQMAIc0BQACMAwAhzgFAAIwDACHPAUAAjAMAIdABAQCJAwAh0QFAAI0DACHSAUAAjQMAIQIAAAARACAbAACNAgAgAgAAABEAIBsAAI0CACADAAAAEwAgIgAAhgIAICMAAIsCACABAAAAEwAgAQAAABEAIA0KAACCAwAgKAAAhQMAICkAAIQDACBKAACDAwAgSwAAhgMAIMYBAACBAwAgxwEAAIEDACDLAQAAgQMAIMwBAACBAwAgzQEAAIEDACDOAQAAgQMAIM8BAACBAwAg0AEAAIEDACATvgEAAJcCADC_AQAAlAIAEMABAACXAgAwwQEBAJgCACHCAQEAmAIAIcQBAACZAsQBIsUBAQCYAgAhxgEBAJoCACHHAQEAmgIAIcgBAgCbAgAhygEAAJwCygEiywEAAJ0CACDMAQEAmgIAIc0BQACeAgAhzgFAAJ4CACHPAUAAngIAIdABAQCaAgAh0QFAAJ8CACHSAUAAnwIAIQMAAAARACABAACTAgAwJwAAlAIAIAMAAAARACABAAASADACAAATACATvgEAAJcCADC_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_AQAA6AEAEMABAAC1AgAwwQEBAJgCACHKAQAAtgLqASLRAUAAnwIAIeQBAQCYAgAh5QEBAJgCACHqAUAAngIAIesBQACeAgAhBwoAAKECACAoAAC4AgAgKQAAuAIAINMBAAAA6gEC1AEAAADqAQjVAQAAAOoBCNoBAAC3AuoBIgcKAAChAgAgKAAAuAIAICkAALgCACDTAQAAAOoBAtQBAAAA6gEI1QEAAADqAQjaAQAAtwLqASIE0wEAAADqAQLUAQAAAOoBCNUBAAAA6gEI2gEAALgC6gEiCL4BAAC5AgAwvwEAANIBABDAAQAAuQIAMMEBAQCYAgAh5AEBAJgCACHsAQEAmAIAIe0BAQCaAgAh7gECAJsCACEKvgEAALoCADC_AQAAvAEAEMABAAC6AgAwwQEBAJgCACHRAUAAnwIAIdIBQACfAgAh5AEBAJgCACHlAQEAmAIAIe8BAgCbAgAh8AEBAJoCACEWvgEAALsCADC_AQAApgEAEMABAAC7AgAwwQEBAJgCACHKAQAAvgKCAiLRAUAAnwIAIdIBQACfAgAh8QEBAJgCACHyAQEAmgIAIfQBAAC8AvQBIvUBAQCYAgAh9gEBAJgCACH3AQEAmgIAIfgBAQCaAgAh-QEBAJoCACH6AQEAmgIAIfsBQACfAgAh_AFAAJ4CACH9AQIAmwIAIf4BAgCbAgAhgAIAAL0CgAIjggIBAJgCACEHCgAAoQIAICgAAMQCACApAADEAgAg0wEAAAD0AQLUAQAAAPQBCNUBAAAA9AEI2gEAAMMC9AEiBwoAAKQCACAoAADCAgAgKQAAwgIAINMBAAAAgAID1AEAAACAAgnVAQAAAIACCdoBAADBAoACIwcKAAChAgAgKAAAwAIAICkAAMACACDTAQAAAIICAtQBAAAAggII1QEAAACCAgjaAQAAvwKCAiIHCgAAoQIAICgAAMACACApAADAAgAg0wEAAACCAgLUAQAAAIICCNUBAAAAggII2gEAAL8CggIiBNMBAAAAggIC1AEAAACCAgjVAQAAAIICCNoBAADAAoICIgcKAACkAgAgKAAAwgIAICkAAMICACDTAQAAAIACA9QBAAAAgAIJ1QEAAACAAgnaAQAAwQKAAiME0wEAAACAAgPUAQAAAIACCdUBAAAAgAIJ2gEAAMICgAIjBwoAAKECACAoAADEAgAgKQAAxAIAINMBAAAA9AEC1AEAAAD0AQjVAQAAAPQBCNoBAADDAvQBIgTTAQAAAPQBAtQBAAAA9AEI1QEAAAD0AQjaAQAAxAL0ASIWvgEAAMUCADC_AQAAkAEAEMABAADFAgAwwQEBAJgCACHKAQAAxgKOAiLQAQEAmgIAIdEBQACfAgAh0gFAAJ8CACHlAQEAmAIAIYMCAQCYAgAhhAIBAJgCACGFAgEAmAIAIYYCQACfAgAhhwIBAJgCACGIAgEAmAIAIYkCAQCYAgAhigIBAJgCACGLAgEAmAIAIYwCAQCYAgAhjgJAAJ4CACGPAgEAmgIAIZACQACeAgAhBwoAAKECACAoAADIAgAgKQAAyAIAINMBAAAAjgIC1AEAAACOAgjVAQAAAI4CCNoBAADHAo4CIgcKAAChAgAgKAAAyAIAICkAAMgCACDTAQAAAI4CAtQBAAAAjgII1QEAAACOAgjaAQAAxwKOAiIE0wEAAACOAgLUAQAAAI4CCNUBAAAAjgII2gEAAMgCjgIiD74BAADJAgAwvwEAAHgAEMABAADJAgAwwQEBAJgCACHEAQEAmAIAIeUBAQCYAgAhkQIBAJgCACGSAgEAmAIAIZMCAQCaAgAhlAIBAJoCACGVAgIAygIAIZYCAQCaAgAhlwIBAJoCACGYAgEAmgIAIZkCAQCaAgAhDQoAAKQCACAoAACkAgAgKQAApAIAIEoAAMwCACBLAACkAgAg0wECAAAAAdQBAgAAAAXVAQIAAAAF1gECAAAAAdcBAgAAAAHYAQIAAAAB2QECAAAAAdoBAgDLAgAhDQoAAKQCACAoAACkAgAgKQAApAIAIEoAAMwCACBLAACkAgAg0wECAAAAAdQBAgAAAAXVAQIAAAAF1gECAAAAAdcBAgAAAAHYAQIAAAAB2QECAAAAAdoBAgDLAgAhCNMBCAAAAAHUAQgAAAAF1QEIAAAABdYBCAAAAAHXAQgAAAAB2AEIAAAAAdkBCAAAAAHaAQgAzAIAIQy-AQAAzQIAML8BAABiABDAAQAAzQIAMMEBAQCYAgAh0QFAAJ8CACHSAUAAnwIAIeUBAQCYAgAhgAIAAL0CgAIjmgIBAJoCACGbAgEAmgIAIZwCAADOAgAgnQIBAJoCACEE0wEBAAAABZ4CAQAAAAGfAgEAAAAEoAIBAAAABA0DAADTAgAgvgEAAM8CADC_AQAALwAQwAEAAM8CADDBAQEA2AIAIdEBQADSAgAh0gFAANICACHlAQEA2AIAIYACAADRAoACI5oCAQDQAgAhmwIBANACACGcAgAAzgIAIJ0CAQDQAgAhC9MBAQAAAAHUAQEAAAAF1QEBAAAABdYBAQAAAAHXAQEAAAAB2AEBAAAAAdkBAQAAAAHaAQEArAIAIeEBAQAAAAHiAQEAAAAB4wEBAAAAAQTTAQAAAIACA9QBAAAAgAIJ1QEAAACAAgnaAQAAwgKAAiMI0wFAAAAAAdQBQAAAAATVAUAAAAAE1gFAAAAAAdcBQAAAAAHYAUAAAAAB2QFAAAAAAdoBQACiAgAhFwQAAN8CACAOAADjAgAgDwAA4AIAIBAAAOECACARAADiAgAgEwAA5AIAIBQAAOUCACAVAADmAgAgvgEAAN0CADC_AQAAKgAQwAEAAN0CADDBAQEA2AIAIdEBQADSAgAh0gFAANICACGhAgEA2AIAIaICAQDYAgAhowIBANACACGkAgEA0AIAIaUCQADbAgAhpgIgAN4CACGnAkAA2wIAIa0CAAAqACCuAgAAKgAgDb4BAADUAgAwvwEAAEoAEMABAADUAgAwwQEBAJgCACHRAUAAnwIAIdIBQACfAgAhoQIBAJgCACGiAgEAmAIAIaMCAQCaAgAhpAIBAJoCACGlAkAAngIAIaYCIADVAgAhpwJAAJ4CACEFCgAAoQIAICgAANcCACApAADXAgAg0wEgAAAAAdoBIADWAgAhBQoAAKECACAoAADXAgAgKQAA1wIAINMBIAAAAAHaASAA1gIAIQLTASAAAAAB2gEgANcCACEL0wEBAAAAAdQBAQAAAATVAQEAAAAE1gEBAAAAAdcBAQAAAAHYAQEAAAAB2QEBAAAAAdoBAQCwAgAh4QEBAAAAAeIBAQAAAAHjAQEAAAABGAMAANMCACASAADcAgAgvgEAANkCADC_AQAAKAAQwAEAANkCADDBAQEA2AIAIcoBAADaAo4CItABAQDQAgAh0QFAANICACHSAUAA0gIAIeUBAQDYAgAhgwIBANgCACGEAgEA2AIAIYUCAQDYAgAhhgJAANICACGHAgEA2AIAIYgCAQDYAgAhiQIBANgCACGKAgEA2AIAIYsCAQDYAgAhjAIBANgCACGOAkAA2wIAIY8CAQDQAgAhkAJAANsCACEE0wEAAACOAgLUAQAAAI4CCNUBAAAAjgII2gEAAMgCjgIiCNMBQAAAAAHUAUAAAAAF1QFAAAAABdYBQAAAAAHXAUAAAAAB2AFAAAAAAdkBQAAAAAHaAUAApQIAIRcEAADfAgAgDgAA4wIAIA8AAOACACAQAADhAgAgEQAA4gIAIBMAAOQCACAUAADlAgAgFQAA5gIAIL4BAADdAgAwvwEAACoAEMABAADdAgAwwQEBANgCACHRAUAA0gIAIdIBQADSAgAhoQIBANgCACGiAgEA2AIAIaMCAQDQAgAhpAIBANACACGlAkAA2wIAIaYCIADeAgAhpwJAANsCACGtAgAAKgAgrgIAACoAIBUEAADfAgAgDgAA4wIAIA8AAOACACAQAADhAgAgEQAA4gIAIBMAAOQCACAUAADlAgAgFQAA5gIAIL4BAADdAgAwvwEAACoAEMABAADdAgAwwQEBANgCACHRAUAA0gIAIdIBQADSAgAhoQIBANgCACGiAgEA2AIAIaMCAQDQAgAhpAIBANACACGlAkAA2wIAIaYCIADeAgAhpwJAANsCACEC0wEgAAAAAdoBIADXAgAhA6gCAAADACCpAgAAAwAgqgIAAAMAIAOoAgAABwAgqQIAAAcAIKoCAAAHACADqAIAAAsAIKkCAAALACCqAgAACwAgA6gCAAAaACCpAgAAGgAgqgIAABoAIAOoAgAADwAgqQIAAA8AIKoCAAAPACAaAwAA0wIAIBIAANwCACC-AQAA2QIAML8BAAAoABDAAQAA2QIAMMEBAQDYAgAhygEAANoCjgIi0AEBANACACHRAUAA0gIAIdIBQADSAgAh5QEBANgCACGDAgEA2AIAIYQCAQDYAgAhhQIBANgCACGGAkAA0gIAIYcCAQDYAgAhiAIBANgCACGJAgEA2AIAIYoCAQDYAgAhiwIBANgCACGMAgEA2AIAIY4CQADbAgAhjwIBANACACGQAkAA2wIAIa0CAAAoACCuAgAAKAAgA6gCAAAoACCpAgAAKAAgqgIAACgAIA8DAADTAgAgvgEAAM8CADC_AQAALwAQwAEAAM8CADDBAQEA2AIAIdEBQADSAgAh0gFAANICACHlAQEA2AIAIYACAADRAoACI5oCAQDQAgAhmwIBANACACGcAgAAzgIAIJ0CAQDQAgAhrQIAAC8AIK4CAAAvACAC5AEBAAAAAeUBAQAAAAEQAwAA0wIAIAYAAOsCACAHAADsAgAgCQAA7QIAIL4BAADoAgAwvwEAAA8AEMABAADoAgAwwQEBANgCACHIAQIA6QIAIcoBAADqAukBItEBQADSAgAh0gFAANICACHkAQEA2AIAIeUBAQDYAgAh5gEBANgCACHnAQEA2AIAIQjTAQIAAAAB1AECAAAABNUBAgAAAATWAQIAAAAB1wECAAAAAdgBAgAAAAHZAQIAAAAB2gECAKECACEE0wEAAADpAQLUAQAAAOkBCNUBAAAA6QEI2gEAALQC6QEiHQUAANMCACALAADhAgAgDAAA_QIAIA0AAOICACAOAADjAgAgvgEAAPoCADC_AQAABwAQwAEAAPoCADDBAQEA2AIAIcoBAAD8AoICItEBQADSAgAh0gFAANICACHxAQEA2AIAIfIBAQDQAgAh9AEAAPsC9AEi9QEBANgCACH2AQEA2AIAIfcBAQDQAgAh-AEBANACACH5AQEA0AIAIfoBAQDQAgAh-wFAANICACH8AUAA2wIAIf0BAgDpAgAh_gECAOkCACGAAgAA0QKAAiOCAgEA2AIAIa0CAAAHACCuAgAABwAgDwMAANMCACAGAADrAgAgCAAA-QIAIL4BAAD3AgAwvwEAAAsAEMABAAD3AgAwwQEBANgCACHKAQAA-ALqASLRAUAA0gIAIeQBAQDYAgAh5QEBANgCACHqAUAA2wIAIesBQADbAgAhrQIAAAsAIK4CAAALACADqAIAABEAIKkCAAARACCqAgAAEQAgAuQBAQAAAAHlAQEAAAABDAMAANMCACAGAADrAgAgvgEAAO8CADC_AQAAGgAQwAEAAO8CADDBAQEA2AIAIdEBQADSAgAh0gFAANICACHkAQEA2AIAIeUBAQDYAgAh7wECAOkCACHwAQEA0AIAIQkGAADrAgAgvgEAAPACADC_AQAAFgAQwAEAAPACADDBAQEA2AIAIeQBAQDYAgAh7AEBANgCACHtAQEA0AIAIe4BAgDpAgAhFAgAAPUCACC-AQAA8QIAML8BAAARABDAAQAA8QIAMMEBAQDYAgAhwgEBANgCACHEAQAA8gLEASLFAQEA2AIAIcYBAQDQAgAhxwEBANACACHIAQIA6QIAIcoBAADzAsoBIssBAAD0AgAgzAEBANACACHNAUAA2wIAIc4BQADbAgAhzwFAANsCACHQAQEA0AIAIdEBQADSAgAh0gFAANICACEE0wEAAADEAQLUAQAAAMQBCNUBAAAAxAEI2gEAAK4CxAEiBNMBAAAAygEC1AEAAADKAQjVAQAAAMoBCNoBAACoAsoBIgzTAYAAAAAB1gGAAAAAAdcBgAAAAAHYAYAAAAAB2QGAAAAAAdoBgAAAAAHbAQEAAAAB3AEBAAAAAd0BAQAAAAHeAYAAAAAB3wGAAAAAAeABgAAAAAESAwAA0wIAIAYAAOsCACAHAADsAgAgCQAA7QIAIL4BAADoAgAwvwEAAA8AEMABAADoAgAwwQEBANgCACHIAQIA6QIAIcoBAADqAukBItEBQADSAgAh0gFAANICACHkAQEA2AIAIeUBAQDYAgAh5gEBANgCACHnAQEA2AIAIa0CAAAPACCuAgAADwAgAuQBAQAAAAHlAQEAAAABDQMAANMCACAGAADrAgAgCAAA-QIAIL4BAAD3AgAwvwEAAAsAEMABAAD3AgAwwQEBANgCACHKAQAA-ALqASLRAUAA0gIAIeQBAQDYAgAh5QEBANgCACHqAUAA2wIAIesBQADbAgAhBNMBAAAA6gEC1AEAAADqAQjVAQAAAOoBCNoBAAC4AuoBIhIDAADTAgAgBgAA6wIAIAcAAOwCACAJAADtAgAgvgEAAOgCADC_AQAADwAQwAEAAOgCADDBAQEA2AIAIcgBAgDpAgAhygEAAOoC6QEi0QFAANICACHSAUAA0gIAIeQBAQDYAgAh5QEBANgCACHmAQEA2AIAIecBAQDYAgAhrQIAAA8AIK4CAAAPACAbBQAA0wIAIAsAAOECACAMAAD9AgAgDQAA4gIAIA4AAOMCACC-AQAA-gIAML8BAAAHABDAAQAA-gIAMMEBAQDYAgAhygEAAPwCggIi0QFAANICACHSAUAA0gIAIfEBAQDYAgAh8gEBANACACH0AQAA-wL0ASL1AQEA2AIAIfYBAQDYAgAh9wEBANACACH4AQEA0AIAIfkBAQDQAgAh-gEBANACACH7AUAA0gIAIfwBQADbAgAh_QECAOkCACH-AQIA6QIAIYACAADRAoACI4ICAQDYAgAhBNMBAAAA9AEC1AEAAAD0AQjVAQAAAPQBCNoBAADEAvQBIgTTAQAAAIICAtQBAAAAggII1QEAAACCAgjaAQAAwAKCAiIDqAIAABYAIKkCAAAWACCqAgAAFgAgAsQBAQAAAAGSAgEAAAABEAMAANMCACC-AQAA_wIAML8BAAADABDAAQAA_wIAMMEBAQDYAgAhxAEBANgCACHlAQEA2AIAIZECAQDYAgAhkgIBANgCACGTAgEA0AIAIZQCAQDQAgAhlQICAIADACGWAgEA0AIAIZcCAQDQAgAhmAIBANACACGZAgEA0AIAIQjTAQIAAAAB1AECAAAABdUBAgAAAAXWAQIAAAAB1wECAAAAAdgBAgAAAAHZAQIAAAAB2gECAKQCACEAAAAAAAABsgIBAAAAAQGyAgAAAMQBAgGyAgEAAAABBbICAgAAAAG5AgIAAAABugICAAAAAbsCAgAAAAG8AgIAAAABAbICAAAAygECAbICQAAAAAEBsgJAAAAAAQUiAADZBQAgIwAA3AUAIK8CAADaBQAgsAIAANsFACC1AgAAHwAgAyIAANkFACCvAgAA2gUAILUCAAAfACAAAAAAAAGyAgAAAOkBAgUiAADNBQAgIwAA1wUAIK8CAADOBQAgsAIAANYFACC1AgAACQAgBSIAAMsFACAjAADUBQAgrwIAAMwFACCwAgAA0wUAILUCAAABACAFIgAAyQUAICMAANEFACCvAgAAygUAILACAADQBQAgtQIAAA0AIAsiAACaAwAwIwAAnwMAMK8CAACbAwAwsAIAAJwDADCxAgAAnQMAILICAACeAwAwswIAAJ4DADC0AgAAngMAMLUCAACeAwAwtgIAAKADADC3AgAAoQMAMA_BAQEAAAABxAEAAADEAQLFAQEAAAABxgEBAAAAAccBAQAAAAHIAQIAAAABygEAAADKAQLLAYAAAAABzAEBAAAAAc0BQAAAAAHOAUAAAAABzwFAAAAAAdABAQAAAAHRAUAAAAAB0gFAAAAAAQIAAAATACAiAAClAwAgAwAAABMAICIAAKUDACAjAACkAwAgARsAAM8FADAUCAAA9QIAIL4BAADxAgAwvwEAABEAEMABAADxAgAwwQEBAAAAAcIBAQDYAgAhxAEAAPICxAEixQEBAAAAAcYBAQDQAgAhxwEBANACACHIAQIA6QIAIcoBAADzAsoBIssBAAD0AgAgzAEBANACACHNAUAA2wIAIc4BQADbAgAhzwFAANsCACHQAQEA0AIAIdEBQADSAgAh0gFAANICACECAAAAEwAgGwAApAMAIAIAAACiAwAgGwAAowMAIBO-AQAAoQMAML8BAACiAwAQwAEAAKEDADDBAQEA2AIAIcIBAQDYAgAhxAEAAPICxAEixQEBANgCACHGAQEA0AIAIccBAQDQAgAhyAECAOkCACHKAQAA8wLKASLLAQAA9AIAIMwBAQDQAgAhzQFAANsCACHOAUAA2wIAIc8BQADbAgAh0AEBANACACHRAUAA0gIAIdIBQADSAgAhE74BAAChAwAwvwEAAKIDABDAAQAAoQMAMMEBAQDYAgAhwgEBANgCACHEAQAA8gLEASLFAQEA2AIAIcYBAQDQAgAhxwEBANACACHIAQIA6QIAIcoBAADzAsoBIssBAAD0AgAgzAEBANACACHNAUAA2wIAIc4BQADbAgAhzwFAANsCACHQAQEA0AIAIdEBQADSAgAh0gFAANICACEPwQEBAIcDACHEAQAAiAPEASLFAQEAhwMAIcYBAQCJAwAhxwEBAIkDACHIAQIAigMAIcoBAACLA8oBIssBgAAAAAHMAQEAiQMAIc0BQACMAwAhzgFAAIwDACHPAUAAjAMAIdABAQCJAwAh0QFAAI0DACHSAUAAjQMAIQ_BAQEAhwMAIcQBAACIA8QBIsUBAQCHAwAhxgEBAIkDACHHAQEAiQMAIcgBAgCKAwAhygEAAIsDygEiywGAAAAAAcwBAQCJAwAhzQFAAIwDACHOAUAAjAMAIc8BQACMAwAh0AEBAIkDACHRAUAAjQMAIdIBQACNAwAhD8EBAQAAAAHEAQAAAMQBAsUBAQAAAAHGAQEAAAABxwEBAAAAAcgBAgAAAAHKAQAAAMoBAssBgAAAAAHMAQEAAAABzQFAAAAAAc4BQAAAAAHPAUAAAAAB0AEBAAAAAdEBQAAAAAHSAUAAAAABAyIAAM0FACCvAgAAzgUAILUCAAAJACADIgAAywUAIK8CAADMBQAgtQIAAAEAIAMiAADJBQAgrwIAAMoFACC1AgAADQAgBCIAAJoDADCvAgAAmwMAMLECAACdAwAgtQIAAJ4DADAAAAABsgIAAADqAQIFIgAAwQUAICMAAMcFACCvAgAAwgUAILACAADGBQAgtQIAAAkAIAUiAAC_BQAgIwAAxAUAIK8CAADABQAgsAIAAMMFACC1AgAAAQAgByIAALEDACAjAAC0AwAgrwIAALIDACCwAgAAswMAILMCAAAPACC0AgAADwAgtQIAAB8AIAsDAACnAwAgBgAApgMAIAkAAKkDACDBAQEAAAAByAECAAAAAcoBAAAA6QEC0QFAAAAAAdIBQAAAAAHkAQEAAAAB5QEBAAAAAecBAQAAAAECAAAAHwAgIgAAsQMAIAMAAAAPACAiAACxAwAgIwAAtQMAIA0AAAAPACADAACXAwAgBgAAlgMAIAkAAJkDACAbAAC1AwAgwQEBAIcDACHIAQIAigMAIcoBAACVA-kBItEBQACNAwAh0gFAAI0DACHkAQEAhwMAIeUBAQCHAwAh5wEBAIcDACELAwAAlwMAIAYAAJYDACAJAACZAwAgwQEBAIcDACHIAQIAigMAIcoBAACVA-kBItEBQACNAwAh0gFAAI0DACHkAQEAhwMAIeUBAQCHAwAh5wEBAIcDACEDIgAAwQUAIK8CAADCBQAgtQIAAAkAIAMiAAC_BQAgrwIAAMAFACC1AgAAAQAgAyIAALEDACCvAgAAsgMAILUCAAAfACAAAAAAAAUiAAC6BQAgIwAAvQUAIK8CAAC7BQAgsAIAALwFACC1AgAACQAgAyIAALoFACCvAgAAuwUAILUCAAAJACAAAAAAAAUiAACyBQAgIwAAuAUAIK8CAACzBQAgsAIAALcFACC1AgAACQAgBSIAALAFACAjAAC1BQAgrwIAALEFACCwAgAAtAUAILUCAAABACADIgAAsgUAIK8CAACzBQAgtQIAAAkAIAMiAACwBQAgrwIAALEFACC1AgAAAQAgAAAAAAABsgIAAAD0AQIBsgIAAACAAgMBsgIAAACCAgIFIgAApwUAICMAAK4FACCvAgAAqAUAILACAACtBQAgtQIAAAEAIAsiAAD6AwAwIwAA_wMAMK8CAAD7AwAwsAIAAPwDADCxAgAA_QMAILICAAD-AwAwswIAAP4DADC0AgAA_gMAMLUCAAD-AwAwtgIAAIAEADC3AgAAgQQAMAsiAADuAwAwIwAA8wMAMK8CAADvAwAwsAIAAPADADCxAgAA8QMAILICAADyAwAwswIAAPIDADC0AgAA8gMAMLUCAADyAwAwtgIAAPQDADC3AgAA9QMAMAsiAADiAwAwIwAA5wMAMK8CAADjAwAwsAIAAOQDADCxAgAA5QMAILICAADmAwAwswIAAOYDADC0AgAA5gMAMLUCAADmAwAwtgIAAOgDADC3AgAA6QMAMAsiAADWAwAwIwAA2wMAMK8CAADXAwAwsAIAANgDADCxAgAA2QMAILICAADaAwAwswIAANoDADC0AgAA2gMAMLUCAADaAwAwtgIAANwDADC3AgAA3QMAMAsDAACnAwAgBwAAqAMAIAkAAKkDACDBAQEAAAAByAECAAAAAcoBAAAA6QEC0QFAAAAAAdIBQAAAAAHlAQEAAAAB5gEBAAAAAecBAQAAAAECAAAAHwAgIgAA4QMAIAMAAAAfACAiAADhAwAgIwAA4AMAIAEbAACsBQAwEQMAANMCACAGAADrAgAgBwAA7AIAIAkAAO0CACC-AQAA6AIAML8BAAAPABDAAQAA6AIAMMEBAQAAAAHIAQIA6QIAIcoBAADqAukBItEBQADSAgAh0gFAANICACHkAQEA2AIAIeUBAQDYAgAh5gEBAAAAAecBAQDYAgAhqwIAAOcCACACAAAAHwAgGwAA4AMAIAIAAADeAwAgGwAA3wMAIAy-AQAA3QMAML8BAADeAwAQwAEAAN0DADDBAQEA2AIAIcgBAgDpAgAhygEAAOoC6QEi0QFAANICACHSAUAA0gIAIeQBAQDYAgAh5QEBANgCACHmAQEA2AIAIecBAQDYAgAhDL4BAADdAwAwvwEAAN4DABDAAQAA3QMAMMEBAQDYAgAhyAECAOkCACHKAQAA6gLpASLRAUAA0gIAIdIBQADSAgAh5AEBANgCACHlAQEA2AIAIeYBAQDYAgAh5wEBANgCACEIwQEBAIcDACHIAQIAigMAIcoBAACVA-kBItEBQACNAwAh0gFAAI0DACHlAQEAhwMAIeYBAQCHAwAh5wEBAIcDACELAwAAlwMAIAcAAJgDACAJAACZAwAgwQEBAIcDACHIAQIAigMAIcoBAACVA-kBItEBQACNAwAh0gFAAI0DACHlAQEAhwMAIeYBAQCHAwAh5wEBAIcDACELAwAApwMAIAcAAKgDACAJAACpAwAgwQEBAAAAAcgBAgAAAAHKAQAAAOkBAtEBQAAAAAHSAUAAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAABBwMAAMgDACDBAQEAAAAB0QFAAAAAAdIBQAAAAAHlAQEAAAAB7wECAAAAAfABAQAAAAECAAAAHAAgIgAA7QMAIAMAAAAcACAiAADtAwAgIwAA7AMAIAEbAACrBQAwDQMAANMCACAGAADrAgAgvgEAAO8CADC_AQAAGgAQwAEAAO8CADDBAQEAAAAB0QFAANICACHSAUAA0gIAIeQBAQDYAgAh5QEBANgCACHvAQIA6QIAIfABAQDQAgAhqwIAAO4CACACAAAAHAAgGwAA7AMAIAIAAADqAwAgGwAA6wMAIAq-AQAA6QMAML8BAADqAwAQwAEAAOkDADDBAQEA2AIAIdEBQADSAgAh0gFAANICACHkAQEA2AIAIeUBAQDYAgAh7wECAOkCACHwAQEA0AIAIQq-AQAA6QMAML8BAADqAwAQwAEAAOkDADDBAQEA2AIAIdEBQADSAgAh0gFAANICACHkAQEA2AIAIeUBAQDYAgAh7wECAOkCACHwAQEA0AIAIQbBAQEAhwMAIdEBQACNAwAh0gFAAI0DACHlAQEAhwMAIe8BAgCKAwAh8AEBAIkDACEHAwAAxgMAIMEBAQCHAwAh0QFAAI0DACHSAUAAjQMAIeUBAQCHAwAh7wECAIoDACHwAQEAiQMAIQcDAADIAwAgwQEBAAAAAdEBQAAAAAHSAUAAAAAB5QEBAAAAAe8BAgAAAAHwAQEAAAABBMEBAQAAAAHsAQEAAAAB7QEBAAAAAe4BAgAAAAECAAAAGAAgIgAA-QMAIAMAAAAYACAiAAD5AwAgIwAA-AMAIAEbAACqBQAwCQYAAOsCACC-AQAA8AIAML8BAAAWABDAAQAA8AIAMMEBAQAAAAHkAQEA2AIAIewBAQDYAgAh7QEBANACACHuAQIA6QIAIQIAAAAYACAbAAD4AwAgAgAAAPYDACAbAAD3AwAgCL4BAAD1AwAwvwEAAPYDABDAAQAA9QMAMMEBAQDYAgAh5AEBANgCACHsAQEA2AIAIe0BAQDQAgAh7gECAOkCACEIvgEAAPUDADC_AQAA9gMAEMABAAD1AwAwwQEBANgCACHkAQEA2AIAIewBAQDYAgAh7QEBANACACHuAQIA6QIAIQTBAQEAhwMAIewBAQCHAwAh7QEBAIkDACHuAQIAigMAIQTBAQEAhwMAIewBAQCHAwAh7QEBAIkDACHuAQIAigMAIQTBAQEAAAAB7AEBAAAAAe0BAQAAAAHuAQIAAAABCAMAALcDACAIAAC4AwAgwQEBAAAAAcoBAAAA6gEC0QFAAAAAAeUBAQAAAAHqAUAAAAAB6wFAAAAAAQIAAAANACAiAACFBAAgAwAAAA0AICIAAIUEACAjAACEBAAgARsAAKkFADAOAwAA0wIAIAYAAOsCACAIAAD5AgAgvgEAAPcCADC_AQAACwAQwAEAAPcCADDBAQEAAAABygEAAPgC6gEi0QFAANICACHkAQEA2AIAIeUBAQDYAgAh6gFAANsCACHrAUAA2wIAIasCAAD2AgAgAgAAAA0AIBsAAIQEACACAAAAggQAIBsAAIMEACAKvgEAAIEEADC_AQAAggQAEMABAACBBAAwwQEBANgCACHKAQAA-ALqASLRAUAA0gIAIeQBAQDYAgAh5QEBANgCACHqAUAA2wIAIesBQADbAgAhCr4BAACBBAAwvwEAAIIEABDAAQAAgQQAMMEBAQDYAgAhygEAAPgC6gEi0QFAANICACHkAQEA2AIAIeUBAQDYAgAh6gFAANsCACHrAUAA2wIAIQbBAQEAhwMAIcoBAACtA-oBItEBQACNAwAh5QEBAIcDACHqAUAAjAMAIesBQACMAwAhCAMAAK8DACAIAACwAwAgwQEBAIcDACHKAQAArQPqASLRAUAAjQMAIeUBAQCHAwAh6gFAAIwDACHrAUAAjAMAIQgDAAC3AwAgCAAAuAMAIMEBAQAAAAHKAQAAAOoBAtEBQAAAAAHlAQEAAAAB6gFAAAAAAesBQAAAAAEDIgAApwUAIK8CAACoBQAgtQIAAAEAIAQiAAD6AwAwrwIAAPsDADCxAgAA_QMAILUCAAD-AwAwBCIAAO4DADCvAgAA7wMAMLECAADxAwAgtQIAAPIDADAEIgAA4gMAMK8CAADjAwAwsQIAAOUDACC1AgAA5gMAMAQiAADWAwAwrwIAANcDADCxAgAA2QMAILUCAADaAwAwAAAAAbICAAAAjgICBSIAAJ8FACAjAAClBQAgrwIAAKAFACCwAgAApAUAILUCAAABACAHIgAAnQUAICMAAKIFACCvAgAAngUAILACAAChBQAgswIAACoAILQCAAAqACC1AgAAAQAgAyIAAJ8FACCvAgAAoAUAILUCAAABACADIgAAnQUAIK8CAACeBQAgtQIAAAEAIAAAAAAABbICAgAAAAG5AgIAAAABugICAAAAAbsCAgAAAAG8AgIAAAABBSIAAJgFACAjAACbBQAgrwIAAJkFACCwAgAAmgUAILUCAAABACADIgAAmAUAIK8CAACZBQAgtQIAAAEAIAAAAAKyAgEAAAAEuAIBAAAABQUiAACTBQAgIwAAlgUAIK8CAACUBQAgsAIAAJUFACC1AgAAAQAgAbICAQAAAAQDIgAAkwUAIK8CAACUBQAgtQIAAAEAIAwEAACABQAgDgAAhAUAIA8AAIEFACAQAACCBQAgEQAAgwUAIBMAAIUFACAUAACGBQAgFQAAhwUAIKMCAACBAwAgpAIAAIEDACClAgAAgQMAIKcCAACBAwAgAAAAAbICIAAAAAELIgAA7AQAMCMAAPEEADCvAgAA7QQAMLACAADuBAAwsQIAAO8EACCyAgAA8AQAMLMCAADwBAAwtAIAAPAEADC1AgAA8AQAMLYCAADyBAAwtwIAAPMEADALIgAA4AQAMCMAAOUEADCvAgAA4QQAMLACAADiBAAwsQIAAOMEACCyAgAA5AQAMLMCAADkBAAwtAIAAOQEADC1AgAA5AQAMLYCAADmBAAwtwIAAOcEADALIgAA1wQAMCMAANsEADCvAgAA2AQAMLACAADZBAAwsQIAANoEACCyAgAA_gMAMLMCAAD-AwAwtAIAAP4DADC1AgAA_gMAMLYCAADcBAAwtwIAAIEEADALIgAAzgQAMCMAANIEADCvAgAAzwQAMLACAADQBAAwsQIAANEEACCyAgAA5gMAMLMCAADmAwAwtAIAAOYDADC1AgAA5gMAMLYCAADTBAAwtwIAAOkDADALIgAAxQQAMCMAAMkEADCvAgAAxgQAMLACAADHBAAwsQIAAMgEACCyAgAA2gMAMLMCAADaAwAwtAIAANoDADC1AgAA2gMAMLYCAADKBAAwtwIAAN0DADAHIgAAwAQAICMAAMMEACCvAgAAwQQAILACAADCBAAgswIAACgAILQCAAAoACC1AgAALQAgCyIAALQEADAjAAC5BAAwrwIAALUEADCwAgAAtgQAMLECAAC3BAAgsgIAALgEADCzAgAAuAQAMLQCAAC4BAAwtQIAALgEADC2AgAAugQAMLcCAAC7BAAwByIAAK8EACAjAACyBAAgrwIAALAEACCwAgAAsQQAILMCAAAvACC0AgAALwAgtQIAAE0AIAjBAQEAAAAB0QFAAAAAAdIBQAAAAAGAAgAAAIACA5oCAQAAAAGbAgEAAAABnAIAAKAEACCdAgEAAAABAgAAAE0AICIAAK8EACADAAAALwAgIgAArwQAICMAALMEACAKAAAALwAgGwAAswQAIMEBAQCHAwAh0QFAAI0DACHSAUAAjQMAIYACAADPA4ACI5oCAQCJAwAhmwIBAIkDACGcAgAAngQAIJ0CAQCJAwAhCMEBAQCHAwAh0QFAAI0DACHSAUAAjQMAIYACAADPA4ACI5oCAQCJAwAhmwIBAIkDACGcAgAAngQAIJ0CAQCJAwAhEwMAAJEEACDBAQEAAAABygEAAACOAgLQAQEAAAAB0QFAAAAAAdIBQAAAAAHlAQEAAAABgwIBAAAAAYQCAQAAAAGFAgEAAAABhgJAAAAAAYcCAQAAAAGIAgEAAAABiQIBAAAAAYoCAQAAAAGLAgEAAAABjAIBAAAAAY4CQAAAAAGQAkAAAAABAgAAAC0AICIAAL8EACADAAAALQAgIgAAvwQAICMAAL4EACABGwAAkgUAMBgDAADTAgAgEgAA3AIAIL4BAADZAgAwvwEAACgAEMABAADZAgAwwQEBAAAAAcoBAADaAo4CItABAQDQAgAh0QFAANICACHSAUAA0gIAIeUBAQAAAAGDAgEA2AIAIYQCAQDYAgAhhQIBAAAAAYYCQADSAgAhhwIBANgCACGIAgEA2AIAIYkCAQDYAgAhigIBANgCACGLAgEA2AIAIYwCAQDYAgAhjgJAANsCACGPAgEA0AIAIZACQADbAgAhAgAAAC0AIBsAAL4EACACAAAAvAQAIBsAAL0EACAWvgEAALsEADC_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-gEBAAAAAfsBQAAAAAH8AUAAAAAB_QECAAAAAf4BAgAAAAGAAgAAAIACAwIAAAAJACAiAADrBAAgAwAAAAkAICIAAOsEACAjAADqBAAgARsAAI4FADAbBQAA0wIAIAsAAOECACAMAAD9AgAgDQAA4gIAIA4AAOMCACC-AQAA-gIAML8BAAAHABDAAQAA-gIAMMEBAQAAAAHKAQAA_AKCAiLRAUAA0gIAIdIBQADSAgAh8QEBANgCACHyAQEA0AIAIfQBAAD7AvQBIvUBAQDYAgAh9gEBANgCACH3AQEA0AIAIfgBAQDQAgAh-QEBANACACH6AQEA0AIAIfsBQADSAgAh_AFAANsCACH9AQIA6QIAIf4BAgDpAgAhgAIAANECgAIjggIBANgCACECAAAACQAgGwAA6gQAIAIAAADoBAAgGwAA6QQAIBa-AQAA5wQAML8BAADoBAAQwAEAAOcEADDBAQEA2AIAIcoBAAD8AoICItEBQADSAgAh0gFAANICACHxAQEA2AIAIfIBAQDQAgAh9AEAAPsC9AEi9QEBANgCACH2AQEA2AIAIfcBAQDQAgAh-AEBANACACH5AQEA0AIAIfoBAQDQAgAh-wFAANICACH8AUAA2wIAIf0BAgDpAgAh_gECAOkCACGAAgAA0QKAAiOCAgEA2AIAIRa-AQAA5wQAML8BAADoBAAQwAEAAOcEADDBAQEA2AIAIcoBAAD8AoICItEBQADSAgAh0gFAANICACHxAQEA2AIAIfIBAQDQAgAh9AEAAPsC9AEi9QEBANgCACH2AQEA2AIAIfcBAQDQAgAh-AEBANACACH5AQEA0AIAIfoBAQDQAgAh-wFAANICACH8AUAA2wIAIf0BAgDpAgAh_gECAOkCACGAAgAA0QKAAiOCAgEA2AIAIRLBAQEAhwMAIcoBAADQA4ICItEBQACNAwAh0gFAAI0DACHxAQEAhwMAIfIBAQCJAwAh9AEAAM4D9AEi9QEBAIcDACH2AQEAhwMAIfcBAQCJAwAh-AEBAIkDACH5AQEAiQMAIfoBAQCJAwAh-wFAAI0DACH8AUAAjAMAIf0BAgCKAwAh_gECAIoDACGAAgAAzwOAAiMWCwAA0gMAIAwAANMDACANAADUAwAgDgAA1QMAIMEBAQCHAwAhygEAANADggIi0QFAAI0DACHSAUAAjQMAIfEBAQCHAwAh8gEBAIkDACH0AQAAzgP0ASL1AQEAhwMAIfYBAQCHAwAh9wEBAIkDACH4AQEAiQMAIfkBAQCJAwAh-gEBAIkDACH7AUAAjQMAIfwBQACMAwAh_QECAIoDACH-AQIAigMAIYACAADPA4ACIxYLAACHBAAgDAAAiAQAIA0AAIkEACAOAACKBAAgwQEBAAAAAcoBAAAAggIC0QFAAAAAAdIBQAAAAAHxAQEAAAAB8gEBAAAAAfQBAAAA9AEC9QEBAAAAAfYBAQAAAAH3AQEAAAAB-AEBAAAAAfkBAQAAAAH6AQEAAAAB-wFAAAAAAfwBQAAAAAH9AQIAAAAB_gECAAAAAYACAAAAgAIDC8EBAQAAAAHEAQEAAAABkQIBAAAAAZICAQAAAAGTAgEAAAABlAIBAAAAAZUCAgAAAAGWAgEAAAABlwIBAAAAAZgCAQAAAAGZAgEAAAABAgAAAAUAICIAAPcEACADAAAABQAgIgAA9wQAICMAAPYEACABGwAAjQUAMBEDAADTAgAgvgEAAP8CADC_AQAAAwAQwAEAAP8CADDBAQEAAAABxAEBANgCACHlAQEA2AIAIZECAQDYAgAhkgIBANgCACGTAgEA0AIAIZQCAQDQAgAhlQICAIADACGWAgEA0AIAIZcCAQDQAgAhmAIBANACACGZAgEA0AIAIawCAAD-AgAgAgAAAAUAIBsAAPYEACACAAAA9AQAIBsAAPUEACAPvgEAAPMEADC_AQAA9AQAEMABAADzBAAwwQEBANgCACHEAQEA2AIAIeUBAQDYAgAhkQIBANgCACGSAgEA2AIAIZMCAQDQAgAhlAIBANACACGVAgIAgAMAIZYCAQDQAgAhlwIBANACACGYAgEA0AIAIZkCAQDQAgAhD74BAADzBAAwvwEAAPQEABDAAQAA8wQAMMEBAQDYAgAhxAEBANgCACHlAQEA2AIAIZECAQDYAgAhkgIBANgCACGTAgEA0AIAIZQCAQDQAgAhlQICAIADACGWAgEA0AIAIZcCAQDQAgAhmAIBANACACGZAgEA0AIAIQvBAQEAhwMAIcQBAQCHAwAhkQIBAIcDACGSAgEAhwMAIZMCAQCJAwAhlAIBAIkDACGVAgIAmAQAIZYCAQCJAwAhlwIBAIkDACGYAgEAiQMAIZkCAQCJAwAhC8EBAQCHAwAhxAEBAIcDACGRAgEAhwMAIZICAQCHAwAhkwIBAIkDACGUAgEAiQMAIZUCAgCYBAAhlgIBAIkDACGXAgEAiQMAIZgCAQCJAwAhmQIBAIkDACELwQEBAAAAAcQBAQAAAAGRAgEAAAABkgIBAAAAAZMCAQAAAAGUAgEAAAABlQICAAAAAZYCAQAAAAGXAgEAAAABmAIBAAAAAZkCAQAAAAEEIgAA7AQAMK8CAADtBAAwsQIAAO8EACC1AgAA8AQAMAQiAADgBAAwrwIAAOEEADCxAgAA4wQAILUCAADkBAAwBCIAANcEADCvAgAA2AQAMLECAADaBAAgtQIAAP4DADAEIgAAzgQAMK8CAADPBAAwsQIAANEEACC1AgAA5gMAMAQiAADFBAAwrwIAAMYEADCxAgAAyAQAILUCAADaAwAwAyIAAMAEACCvAgAAwQQAILUCAAAtACAEIgAAtAQAMK8CAAC1BAAwsQIAALcEACC1AgAAuAQAMAMiAACvBAAgrwIAALAEACC1AgAATQAgAAAAAAAGAwAAogQAIBIAAKIEACDQAQAAgQMAII4CAACBAwAgjwIAAIEDACCQAgAAgQMAIAAFAwAAogQAIIACAACBAwAgmgIAAIEDACCbAgAAgQMAIJ0CAACBAwAgDAUAAKIEACALAACCBQAgDAAAjAUAIA0AAIMFACAOAACEBQAg8gEAAIEDACD3AQAAgQMAIPgBAACBAwAg-QEAAIEDACD6AQAAgQMAIPwBAACBAwAggAIAAIEDACAFAwAAogQAIAYAAIgFACAIAACLBQAg6gEAAIEDACDrAQAAgQMAIAAEAwAAogQAIAYAAIgFACAHAACJBQAgCQAAigUAIAALwQEBAAAAAcQBAQAAAAGRAgEAAAABkgIBAAAAAZMCAQAAAAGUAgEAAAABlQICAAAAAZYCAQAAAAGXAgEAAAABmAIBAAAAAZkCAQAAAAESwQEBAAAAAcoBAAAAggIC0QFAAAAAAdIBQAAAAAHxAQEAAAAB8gEBAAAAAfQBAAAA9AEC9QEBAAAAAfYBAQAAAAH3AQEAAAAB-AEBAAAAAfkBAQAAAAH6AQEAAAAB-wFAAAAAAfwBQAAAAAH9AQIAAAAB_gECAAAAAYACAAAAgAIDBsEBAQAAAAHKAQAAAOoBAtEBQAAAAAHkAQEAAAAB6gFAAAAAAesBQAAAAAEGwQEBAAAAAdEBQAAAAAHSAUAAAAAB5AEBAAAAAe8BAgAAAAHwAQEAAAABCMEBAQAAAAHIAQIAAAABygEAAADpAQLRAUAAAAAB0gFAAAAAAeQBAQAAAAHmAQEAAAAB5wEBAAAAARLBAQEAAAABygEAAACOAgLQAQEAAAAB0QFAAAAAAdIBQAAAAAHlAQEAAAABgwIBAAAAAYQCAQAAAAGFAgEAAAABhgJAAAAAAYcCAQAAAAGIAgEAAAABiQIBAAAAAYoCAQAAAAGLAgEAAAABjAIBAAAAAY4CQAAAAAGQAkAAAAABEQQAAPgEACAOAAD8BAAgDwAA-QQAIBAAAPoEACARAAD7BAAgEwAA_QQAIBQAAP4EACDBAQEAAAAB0QFAAAAAAdIBQAAAAAGhAgEAAAABogIBAAAAAaMCAQAAAAGkAgEAAAABpQJAAAAAAaYCIAAAAAGnAkAAAAABAgAAAAEAICIAAJMFACADAAAAKgAgIgAAkwUAICMAAJcFACATAAAAKgAgBAAApwQAIA4AAKsEACAPAACoBAAgEAAAqQQAIBEAAKoEACATAACsBAAgFAAArQQAIBsAAJcFACDBAQEAhwMAIdEBQACNAwAh0gFAAI0DACGhAgEAhwMAIaICAQCHAwAhowIBAIkDACGkAgEAiQMAIaUCQACMAwAhpgIgAKYEACGnAkAAjAMAIREEAACnBAAgDgAAqwQAIA8AAKgEACAQAACpBAAgEQAAqgQAIBMAAKwEACAUAACtBAAgwQEBAIcDACHRAUAAjQMAIdIBQACNAwAhoQIBAIcDACGiAgEAhwMAIaMCAQCJAwAhpAIBAIkDACGlAkAAjAMAIaYCIACmBAAhpwJAAIwDACERDgAA_AQAIA8AAPkEACAQAAD6BAAgEQAA-wQAIBMAAP0EACAUAAD-BAAgFQAA_wQAIMEBAQAAAAHRAUAAAAAB0gFAAAAAAaECAQAAAAGiAgEAAAABowIBAAAAAaQCAQAAAAGlAkAAAAABpgIgAAAAAacCQAAAAAECAAAAAQAgIgAAmAUAIAMAAAAqACAiAACYBQAgIwAAnAUAIBMAAAAqACAOAACrBAAgDwAAqAQAIBAAAKkEACARAACqBAAgEwAArAQAIBQAAK0EACAVAACuBAAgGwAAnAUAIMEBAQCHAwAh0QFAAI0DACHSAUAAjQMAIaECAQCHAwAhogIBAIcDACGjAgEAiQMAIaQCAQCJAwAhpQJAAIwDACGmAiAApgQAIacCQACMAwAhEQ4AAKsEACAPAACoBAAgEAAAqQQAIBEAAKoEACATAACsBAAgFAAArQQAIBUAAK4EACDBAQEAhwMAIdEBQACNAwAh0gFAAI0DACGhAgEAhwMAIaICAQCHAwAhowIBAIkDACGkAgEAiQMAIaUCQACMAwAhpgIgAKYEACGnAkAAjAMAIREEAAD4BAAgDgAA_AQAIA8AAPkEACAQAAD6BAAgEQAA-wQAIBMAAP0EACAVAAD_BAAgwQEBAAAAAdEBQAAAAAHSAUAAAAABoQIBAAAAAaICAQAAAAGjAgEAAAABpAIBAAAAAaUCQAAAAAGmAiAAAAABpwJAAAAAAQIAAAABACAiAACdBQAgEQQAAPgEACAOAAD8BAAgDwAA-QQAIBAAAPoEACARAAD7BAAgFAAA_gQAIBUAAP8EACDBAQEAAAAB0QFAAAAAAdIBQAAAAAGhAgEAAAABogIBAAAAAaMCAQAAAAGkAgEAAAABpQJAAAAAAaYCIAAAAAGnAkAAAAABAgAAAAEAICIAAJ8FACADAAAAKgAgIgAAnQUAICMAAKMFACATAAAAKgAgBAAApwQAIA4AAKsEACAPAACoBAAgEAAAqQQAIBEAAKoEACATAACsBAAgFQAArgQAIBsAAKMFACDBAQEAhwMAIdEBQACNAwAh0gFAAI0DACGhAgEAhwMAIaICAQCHAwAhowIBAIkDACGkAgEAiQMAIaUCQACMAwAhpgIgAKYEACGnAkAAjAMAIREEAACnBAAgDgAAqwQAIA8AAKgEACAQAACpBAAgEQAAqgQAIBMAAKwEACAVAACuBAAgwQEBAIcDACHRAUAAjQMAIdIBQACNAwAhoQIBAIcDACGiAgEAhwMAIaMCAQCJAwAhpAIBAIkDACGlAkAAjAMAIaYCIACmBAAhpwJAAIwDACEDAAAAKgAgIgAAnwUAICMAAKYFACATAAAAKgAgBAAApwQAIA4AAKsEACAPAACoBAAgEAAAqQQAIBEAAKoEACAUAACtBAAgFQAArgQAIBsAAKYFACDBAQEAhwMAIdEBQACNAwAh0gFAAI0DACGhAgEAhwMAIaICAQCHAwAhowIBAIkDACGkAgEAiQMAIaUCQACMAwAhpgIgAKYEACGnAkAAjAMAIREEAACnBAAgDgAAqwQAIA8AAKgEACAQAACpBAAgEQAAqgQAIBQAAK0EACAVAACuBAAgwQEBAIcDACHRAUAAjQMAIdIBQACNAwAhoQIBAIcDACGiAgEAhwMAIaMCAQCJAwAhpAIBAIkDACGlAkAAjAMAIaYCIACmBAAhpwJAAIwDACERBAAA-AQAIA4AAPwEACAQAAD6BAAgEQAA-wQAIBMAAP0EACAUAAD-BAAgFQAA_wQAIMEBAQAAAAHRAUAAAAAB0gFAAAAAAaECAQAAAAGiAgEAAAABowIBAAAAAaQCAQAAAAGlAkAAAAABpgIgAAAAAacCQAAAAAECAAAAAQAgIgAApwUAIAbBAQEAAAABygEAAADqAQLRAUAAAAAB5QEBAAAAAeoBQAAAAAHrAUAAAAABBMEBAQAAAAHsAQEAAAAB7QEBAAAAAe4BAgAAAAEGwQEBAAAAAdEBQAAAAAHSAUAAAAAB5QEBAAAAAe8BAgAAAAHwAQEAAAABCMEBAQAAAAHIAQIAAAABygEAAADpAQLRAUAAAAAB0gFAAAAAAeUBAQAAAAHmAQEAAAAB5wEBAAAAAQMAAAAqACAiAACnBQAgIwAArwUAIBMAAAAqACAEAACnBAAgDgAAqwQAIBAAAKkEACARAACqBAAgEwAArAQAIBQAAK0EACAVAACuBAAgGwAArwUAIMEBAQCHAwAh0QFAAI0DACHSAUAAjQMAIaECAQCHAwAhogIBAIcDACGjAgEAiQMAIaQCAQCJAwAhpQJAAIwDACGmAiAApgQAIacCQACMAwAhEQQAAKcEACAOAACrBAAgEAAAqQQAIBEAAKoEACATAACsBAAgFAAArQQAIBUAAK4EACDBAQEAhwMAIdEBQACNAwAh0gFAAI0DACGhAgEAhwMAIaICAQCHAwAhowIBAIkDACGkAgEAiQMAIaUCQACMAwAhpgIgAKYEACGnAkAAjAMAIREEAAD4BAAgDgAA_AQAIA8AAPkEACAQAAD6BAAgEwAA_QQAIBQAAP4EACAVAAD_BAAgwQEBAAAAAdEBQAAAAAHSAUAAAAABoQIBAAAAAaICAQAAAAGjAgEAAAABpAIBAAAAAaUCQAAAAAGmAiAAAAABpwJAAAAAAQIAAAABACAiAACwBQAgFwUAAIYEACALAACHBAAgDAAAiAQAIA4AAIoEACDBAQEAAAABygEAAACCAgLRAUAAAAAB0gFAAAAAAfEBAQAAAAHyAQEAAAAB9AEAAAD0AQL1AQEAAAAB9gEBAAAAAfcBAQAAAAH4AQEAAAAB-QEBAAAAAfoBAQAAAAH7AUAAAAAB_AFAAAAAAf0BAgAAAAH-AQIAAAABgAIAAACAAgOCAgEAAAABAgAAAAkAICIAALIFACADAAAAKgAgIgAAsAUAICMAALYFACATAAAAKgAgBAAApwQAIA4AAKsEACAPAACoBAAgEAAAqQQAIBMAAKwEACAUAACtBAAgFQAArgQAIBsAALYFACDBAQEAhwMAIdEBQACNAwAh0gFAAI0DACGhAgEAhwMAIaICAQCHAwAhowIBAIkDACGkAgEAiQMAIaUCQACMAwAhpgIgAKYEACGnAkAAjAMAIREEAACnBAAgDgAAqwQAIA8AAKgEACAQAACpBAAgEwAArAQAIBQAAK0EACAVAACuBAAgwQEBAIcDACHRAUAAjQMAIdIBQACNAwAhoQIBAIcDACGiAgEAhwMAIaMCAQCJAwAhpAIBAIkDACGlAkAAjAMAIaYCIACmBAAhpwJAAIwDACEDAAAABwAgIgAAsgUAICMAALkFACAZAAAABwAgBQAA0QMAIAsAANIDACAMAADTAwAgDgAA1QMAIBsAALkFACDBAQEAhwMAIcoBAADQA4ICItEBQACNAwAh0gFAAI0DACHxAQEAhwMAIfIBAQCJAwAh9AEAAM4D9AEi9QEBAIcDACH2AQEAhwMAIfcBAQCJAwAh-AEBAIkDACH5AQEAiQMAIfoBAQCJAwAh-wFAAI0DACH8AUAAjAMAIf0BAgCKAwAh_gECAIoDACGAAgAAzwOAAiOCAgEAhwMAIRcFAADRAwAgCwAA0gMAIAwAANMDACAOAADVAwAgwQEBAIcDACHKAQAA0AOCAiLRAUAAjQMAIdIBQACNAwAh8QEBAIcDACHyAQEAiQMAIfQBAADOA_QBIvUBAQCHAwAh9gEBAIcDACH3AQEAiQMAIfgBAQCJAwAh-QEBAIkDACH6AQEAiQMAIfsBQACNAwAh_AFAAIwDACH9AQIAigMAIf4BAgCKAwAhgAIAAM8DgAIjggIBAIcDACEXBQAAhgQAIAsAAIcEACANAACJBAAgDgAAigQAIMEBAQAAAAHKAQAAAIICAtEBQAAAAAHSAUAAAAAB8QEBAAAAAfIBAQAAAAH0AQAAAPQBAvUBAQAAAAH2AQEAAAAB9wEBAAAAAfgBAQAAAAH5AQEAAAAB-gEBAAAAAfsBQAAAAAH8AUAAAAAB_QECAAAAAf4BAgAAAAGAAgAAAIACA4ICAQAAAAECAAAACQAgIgAAugUAIAMAAAAHACAiAAC6BQAgIwAAvgUAIBkAAAAHACAFAADRAwAgCwAA0gMAIA0AANQDACAOAADVAwAgGwAAvgUAIMEBAQCHAwAhygEAANADggIi0QFAAI0DACHSAUAAjQMAIfEBAQCHAwAh8gEBAIkDACH0AQAAzgP0ASL1AQEAhwMAIfYBAQCHAwAh9wEBAIkDACH4AQEAiQMAIfkBAQCJAwAh-gEBAIkDACH7AUAAjQMAIfwBQACMAwAh_QECAIoDACH-AQIAigMAIYACAADPA4ACI4ICAQCHAwAhFwUAANEDACALAADSAwAgDQAA1AMAIA4AANUDACDBAQEAhwMAIcoBAADQA4ICItEBQACNAwAh0gFAAI0DACHxAQEAhwMAIfIBAQCJAwAh9AEAAM4D9AEi9QEBAIcDACH2AQEAhwMAIfcBAQCJAwAh-AEBAIkDACH5AQEAiQMAIfoBAQCJAwAh-wFAAI0DACH8AUAAjAMAIf0BAgCKAwAh_gECAIoDACGAAgAAzwOAAiOCAgEAhwMAIREEAAD4BAAgDgAA_AQAIA8AAPkEACARAAD7BAAgEwAA_QQAIBQAAP4EACAVAAD_BAAgwQEBAAAAAdEBQAAAAAHSAUAAAAABoQIBAAAAAaICAQAAAAGjAgEAAAABpAIBAAAAAaUCQAAAAAGmAiAAAAABpwJAAAAAAQIAAAABACAiAAC_BQAgFwUAAIYEACAMAACIBAAgDQAAiQQAIA4AAIoEACDBAQEAAAABygEAAACCAgLRAUAAAAAB0gFAAAAAAfEBAQAAAAHyAQEAAAAB9AEAAAD0AQL1AQEAAAAB9gEBAAAAAfcBAQAAAAH4AQEAAAAB-QEBAAAAAfoBAQAAAAH7AUAAAAAB_AFAAAAAAf0BAgAAAAH-AQIAAAABgAIAAACAAgOCAgEAAAABAgAAAAkAICIAAMEFACADAAAAKgAgIgAAvwUAICMAAMUFACATAAAAKgAgBAAApwQAIA4AAKsEACAPAACoBAAgEQAAqgQAIBMAAKwEACAUAACtBAAgFQAArgQAIBsAAMUFACDBAQEAhwMAIdEBQACNAwAh0gFAAI0DACGhAgEAhwMAIaICAQCHAwAhowIBAIkDACGkAgEAiQMAIaUCQACMAwAhpgIgAKYEACGnAkAAjAMAIREEAACnBAAgDgAAqwQAIA8AAKgEACARAACqBAAgEwAArAQAIBQAAK0EACAVAACuBAAgwQEBAIcDACHRAUAAjQMAIdIBQACNAwAhoQIBAIcDACGiAgEAhwMAIaMCAQCJAwAhpAIBAIkDACGlAkAAjAMAIaYCIACmBAAhpwJAAIwDACEDAAAABwAgIgAAwQUAICMAAMgFACAZAAAABwAgBQAA0QMAIAwAANMDACANAADUAwAgDgAA1QMAIBsAAMgFACDBAQEAhwMAIcoBAADQA4ICItEBQACNAwAh0gFAAI0DACHxAQEAhwMAIfIBAQCJAwAh9AEAAM4D9AEi9QEBAIcDACH2AQEAhwMAIfcBAQCJAwAh-AEBAIkDACH5AQEAiQMAIfoBAQCJAwAh-wFAAI0DACH8AUAAjAMAIf0BAgCKAwAh_gECAIoDACGAAgAAzwOAAiOCAgEAhwMAIRcFAADRAwAgDAAA0wMAIA0AANQDACAOAADVAwAgwQEBAIcDACHKAQAA0AOCAiLRAUAAjQMAIdIBQACNAwAh8QEBAIcDACHyAQEAiQMAIfQBAADOA_QBIvUBAQCHAwAh9gEBAIcDACH3AQEAiQMAIfgBAQCJAwAh-QEBAIkDACH6AQEAiQMAIfsBQACNAwAh_AFAAIwDACH9AQIAigMAIf4BAgCKAwAhgAIAAM8DgAIjggIBAIcDACEJAwAAtwMAIAYAALYDACDBAQEAAAABygEAAADqAQLRAUAAAAAB5AEBAAAAAeUBAQAAAAHqAUAAAAAB6wFAAAAAAQIAAAANACAiAADJBQAgEQQAAPgEACAPAAD5BAAgEAAA-gQAIBEAAPsEACATAAD9BAAgFAAA_gQAIBUAAP8EACDBAQEAAAAB0QFAAAAAAdIBQAAAAAGhAgEAAAABogIBAAAAAaMCAQAAAAGkAgEAAAABpQJAAAAAAaYCIAAAAAGnAkAAAAABAgAAAAEAICIAAMsFACAXBQAAhgQAIAsAAIcEACAMAACIBAAgDQAAiQQAIMEBAQAAAAHKAQAAAIICAtEBQAAAAAHSAUAAAAAB8QEBAAAAAfIBAQAAAAH0AQAAAPQBAvUBAQAAAAH2AQEAAAAB9wEBAAAAAfgBAQAAAAH5AQEAAAAB-gEBAAAAAfsBQAAAAAH8AUAAAAAB_QECAAAAAf4BAgAAAAGAAgAAAIACA4ICAQAAAAECAAAACQAgIgAAzQUAIA_BAQEAAAABxAEAAADEAQLFAQEAAAABxgEBAAAAAccBAQAAAAHIAQIAAAABygEAAADKAQLLAYAAAAABzAEBAAAAAc0BQAAAAAHOAUAAAAABzwFAAAAAAdABAQAAAAHRAUAAAAAB0gFAAAAAAQMAAAALACAiAADJBQAgIwAA0gUAIAsAAAALACADAACvAwAgBgAArgMAIBsAANIFACDBAQEAhwMAIcoBAACtA-oBItEBQACNAwAh5AEBAIcDACHlAQEAhwMAIeoBQACMAwAh6wFAAIwDACEJAwAArwMAIAYAAK4DACDBAQEAhwMAIcoBAACtA-oBItEBQACNAwAh5AEBAIcDACHlAQEAhwMAIeoBQACMAwAh6wFAAIwDACEDAAAAKgAgIgAAywUAICMAANUFACATAAAAKgAgBAAApwQAIA8AAKgEACAQAACpBAAgEQAAqgQAIBMAAKwEACAUAACtBAAgFQAArgQAIBsAANUFACDBAQEAhwMAIdEBQACNAwAh0gFAAI0DACGhAgEAhwMAIaICAQCHAwAhowIBAIkDACGkAgEAiQMAIaUCQACMAwAhpgIgAKYEACGnAkAAjAMAIREEAACnBAAgDwAAqAQAIBAAAKkEACARAACqBAAgEwAArAQAIBQAAK0EACAVAACuBAAgwQEBAIcDACHRAUAAjQMAIdIBQACNAwAhoQIBAIcDACGiAgEAhwMAIaMCAQCJAwAhpAIBAIkDACGlAkAAjAMAIaYCIACmBAAhpwJAAIwDACEDAAAABwAgIgAAzQUAICMAANgFACAZAAAABwAgBQAA0QMAIAsAANIDACAMAADTAwAgDQAA1AMAIBsAANgFACDBAQEAhwMAIcoBAADQA4ICItEBQACNAwAh0gFAAI0DACHxAQEAhwMAIfIBAQCJAwAh9AEAAM4D9AEi9QEBAIcDACH2AQEAhwMAIfcBAQCJAwAh-AEBAIkDACH5AQEAiQMAIfoBAQCJAwAh-wFAAI0DACH8AUAAjAMAIf0BAgCKAwAh_gECAIoDACGAAgAAzwOAAiOCAgEAhwMAIRcFAADRAwAgCwAA0gMAIAwAANMDACANAADUAwAgwQEBAIcDACHKAQAA0AOCAiLRAUAAjQMAIdIBQACNAwAh8QEBAIcDACHyAQEAiQMAIfQBAADOA_QBIvUBAQCHAwAh9gEBAIcDACH3AQEAiQMAIfgBAQCJAwAh-QEBAIkDACH6AQEAiQMAIfsBQACNAwAh_AFAAIwDACH9AQIAigMAIf4BAgCKAwAhgAIAAM8DgAIjggIBAIcDACEMAwAApwMAIAYAAKYDACAHAACoAwAgwQEBAAAAAcgBAgAAAAHKAQAAAOkBAtEBQAAAAAHSAUAAAAAB5AEBAAAAAeUBAQAAAAHmAQEAAAAB5wEBAAAAAQIAAAAfACAiAADZBQAgAwAAAA8AICIAANkFACAjAADdBQAgDgAAAA8AIAMAAJcDACAGAACWAwAgBwAAmAMAIBsAAN0FACDBAQEAhwMAIcgBAgCKAwAhygEAAJUD6QEi0QFAAI0DACHSAUAAjQMAIeQBAQCHAwAh5QEBAIcDACHmAQEAhwMAIecBAQCHAwAhDAMAAJcDACAGAACWAwAgBwAAmAMAIMEBAQCHAwAhyAECAIoDACHKAQAAlQPpASLRAUAAjQMAIdIBQACNAwAh5AEBAIcDACHlAQEAhwMAIeYBAQCHAwAh5wEBAIcDACEJBAYCCgANDicFDwoDECUEESYJEykLFC4LFTAMAQMAAQYFAAEKAAoLDgQMGQgNHQkOIAUDAwABBgADCBAFBQMAAQYAAwcABAkUBgoABwEIAAUBCRUAAQYAAwIDAAEGAAMECyEADCIADSMADiQAAgMAARIrAQEDAAEGBDEADjUADzIAEDMAETQAFDYAAAAAAwoAEigAEykAFAAAAAMKABIoABMpABQBAwABAQMAAQMKABkoABopABsAAAADCgAZKAAaKQAbAQMAAQEDAAEFCgAgKAAjKQAkSgAhSwAiAAAAAAAFCgAgKAAjKQAkSgAhSwAiAgMAARKFAQECAwABEosBAQMKACkoACopACsAAAADCgApKAAqKQArAQUAAQEFAAEFCgAwKAAzKQA0SgAxSwAyAAAAAAAFCgAwKAAzKQA0SgAxSwAyAgMAAQYAAwIDAAEGAAMFCgA5KAA8KQA9SgA6SwA7AAAAAAAFCgA5KAA8KQA9SgA6SwA7AQYAAwEGAAMFCgBCKABFKQBGSgBDSwBEAAAAAAAFCgBCKABFKQBGSgBDSwBEAgMAAQYAAwIDAAEGAAMDCgBLKABMKQBNAAAAAwoASygATCkATQMDAAEGAAMHAAQDAwABBgADBwAEBQoAUigAVSkAVkoAU0sAVAAAAAAABQoAUigAVSkAVkoAU0sAVAEIAAUBCAAFBQoAWygAXikAX0oAXEsAXQAAAAAABQoAWygAXikAX0oAXEsAXRYCARc3ARg5ARk6ARo7ARw9AR0_Dh5ADx9CASBEDiFFECRGASVHASZIDipLEStMFSxODC1PDC5RDC9SDDBTDDFVDDJXDjNYFjRaDDVcDjZdFzdeDDhfDDlgDjpjGDtkHDxlAj1mAj5nAj9oAkBpAkFrAkJtDkNuHURwAkVyDkZzHkd0Akh1Akl2Dkx5H016JU57C098C1B9C1F-C1J_C1OBAQtUgwEOVYQBJlaHAQtXiQEOWIoBJ1mMAQtajQELW44BDlyRAShdkgEsXpMBA1-UAQNglQEDYZYBA2KXAQNjmQEDZJsBDmWcAS1mngEDZ6ABDmihAS5pogEDaqMBA2ukAQ5spwEvbagBNW6pAQlvqgEJcKsBCXGsAQlyrQEJc68BCXSxAQ51sgE2drQBCXe2AQ54twE3ebgBCXq5AQl7ugEOfL0BOH2-AT5-vwEIf8ABCIABwQEIgQHCAQiCAcMBCIMBxQEIhAHHAQ6FAcgBP4YBygEIhwHMAQ6IAc0BQIkBzgEIigHPAQiLAdABDowB0wFBjQHUAUeOAdUBBI8B1gEEkAHXAQSRAdgBBJIB2QEEkwHbAQSUAd0BDpUB3gFIlgHgAQSXAeIBDpgB4wFJmQHkAQSaAeUBBJsB5gEOnAHpAUqdAeoBTp4B6wEFnwHsAQWgAe0BBaEB7gEFogHvAQWjAfEBBaQB8wEOpQH0AU-mAfYBBacB-AEOqAH5AVCpAfoBBaoB-wEFqwH8AQ6sAf8BUa0BgAJXrgGBAgavAYICBrABgwIGsQGEAgayAYUCBrMBhwIGtAGJAg61AYoCWLYBjAIGtwGOAg64AY8CWbkBkAIGugGRAga7AZICDrwBlQJavQGWAmA" } async function decodeBase64AsWasm(wasmBase64: string): Promise { diff --git a/app/generated/prisma/models/Booking.ts b/app/generated/prisma/models/Booking.ts index 09aa8fb..345831d 100644 --- a/app/generated/prisma/models/Booking.ts +++ b/app/generated/prisma/models/Booking.ts @@ -278,6 +278,7 @@ export type BookingOrderByWithRelationInput = { export type BookingWhereUniqueInput = Prisma.AtLeast<{ id?: string participantId?: string + tripId_userId?: Prisma.BookingTripIdUserIdCompoundUniqueInput AND?: Prisma.BookingWhereInput | Prisma.BookingWhereInput[] OR?: Prisma.BookingWhereInput[] NOT?: Prisma.BookingWhereInput | Prisma.BookingWhereInput[] @@ -292,7 +293,7 @@ export type BookingWhereUniqueInput = Prisma.AtLeast<{ user?: Prisma.XOR participant?: Prisma.XOR payments?: Prisma.PaymentListRelationFilter -}, "id" | "participantId"> +}, "id" | "participantId" | "tripId_userId"> export type BookingOrderByWithAggregationInput = { id?: Prisma.SortOrder @@ -426,6 +427,11 @@ export type BookingNullableScalarRelationFilter = { isNot?: Prisma.BookingWhereInput | null } +export type BookingTripIdUserIdCompoundUniqueInput = { + tripId: string + userId: string +} + export type BookingCountOrderByAggregateInput = { id?: Prisma.SortOrder tripId?: Prisma.SortOrder diff --git a/app/trips/[id]/payment/page.tsx b/app/trips/[id]/payment/page.tsx index 57342d3..7b5fce0 100644 --- a/app/trips/[id]/payment/page.tsx +++ b/app/trips/[id]/payment/page.tsx @@ -11,6 +11,7 @@ import { formatTripCalendarDateRangeLong } from "@/lib/trip-dates"; import { isFreeTrip } from "@/lib/trip-pricing"; import { categoryMeta } from "@/lib/activity-category"; import { MarkPaidButton } from "@/features/booking/components/mark-paid-button"; +import { MidtransPayButton } from "@/features/booking/components/midtrans-pay-button"; import { CopyButton } from "@/features/booking/components/copy-button"; export const metadata: Metadata = { @@ -293,8 +294,22 @@ async function PaidTripSection({ )} - {canMarkPaid && bankAvailable && ( - + {canMarkPaid && ( +
+ {bankAvailable && ( + <> + +
+ + + atau + + +
+ + )} + +
)} {hasMarkedPaid && ( diff --git a/env.example b/env.example index a54fd45..fb031d2 100644 --- a/env.example +++ b/env.example @@ -14,4 +14,16 @@ KYC_NIK_PEPPER= KYC_UPLOAD_DIR= GOOGLE_CLIENT_ID="xxxxxxxx" -GOOGLE_CLIENT_SECRET="xxxxxxxx" \ No newline at end of file +GOOGLE_CLIENT_SECRET="xxxxxxxx" + +# === Midtrans payment gateway (Phase C) === +# Server key dari dashboard Midtrans (sandbox: SB-Mid-server-..., production: Mid-server-...). +# RAHASIA — server-side only, jangan commit nilai aslinya. +MIDTRANS_SERVER_KEY= +# Client key untuk init Snap.js di browser (sandbox: SB-Mid-client-..., production: Mid-client-...). +# Aman diekspos via NEXT_PUBLIC_ — bukan rahasia. +NEXT_PUBLIC_MIDTRANS_CLIENT_KEY= +# 'true' untuk production, 'false' atau kosong untuk sandbox. +# Dibaca di server (untuk Snap API endpoint) DAN client (untuk Snap.js URL). +NEXT_PUBLIC_MIDTRANS_IS_PRODUCTION=false +# Webhook URL di Midtrans dashboard harus diset ke: /api/webhooks/midtrans \ No newline at end of file diff --git a/features/booking/actions.ts b/features/booking/actions.ts index 4727b11..fbf1220 100644 --- a/features/booking/actions.ts +++ b/features/booking/actions.ts @@ -3,6 +3,8 @@ import { getServerSession } from "next-auth"; import { authOptions } from "@/lib/auth"; import { tripService } from "@/server/services/trip.service"; +import { paymentService } from "@/server/services/payment.service"; +import { bookingService } from "@/server/services/booking.service"; import { revalidatePath } from "next/cache"; export async function markParticipantPaidAction(tripId: string) { @@ -23,6 +25,51 @@ export async function markParticipantPaidAction(tripId: string) { } } +export type StartMidtransResponse = + | { error: string } + | { + success: true; + snapToken: string; + snapJsUrl: string; + clientKey: string; + }; + +/** + * Mulai pembayaran online via Midtrans untuk trip tertentu. Resolve booking + * dari (tripId, userId) supaya client tidak perlu tahu bookingId. + */ +export async function startMidtransPaymentAction( + tripId: string +): Promise { + const session = await getServerSession(authOptions); + if (!session?.user) { + return { error: "Kamu harus login terlebih dahulu" }; + } + + try { + const booking = await bookingService.getByTripAndUser( + tripId, + session.user.id + ); + if (!booking || booking.status === "CANCELLED") { + return { error: "Kamu tidak terdaftar di trip ini" }; + } + + const result = await paymentService.startMidtransPayment( + booking.id, + session.user.id + ); + return { + success: true, + snapToken: result.snapToken, + snapJsUrl: result.snapJsUrl, + clientKey: result.clientKey, + }; + } catch (err) { + return { error: (err as Error).message }; + } +} + export async function confirmParticipantPaymentAction( tripId: string, participantId: string diff --git a/features/booking/components/midtrans-pay-button.tsx b/features/booking/components/midtrans-pay-button.tsx new file mode 100644 index 0000000..a4b1325 --- /dev/null +++ b/features/booking/components/midtrans-pay-button.tsx @@ -0,0 +1,132 @@ +"use client"; + +import { useState } from "react"; +import { useRouter } from "next/navigation"; +import { startMidtransPaymentAction } from "@/features/booking/actions"; + +interface SnapCallbacks { + onSuccess?: (result: unknown) => void; + onPending?: (result: unknown) => void; + onError?: (result: unknown) => void; + onClose?: () => void; +} + +interface SnapApi { + pay: (token: string, callbacks?: SnapCallbacks) => void; +} + +declare global { + interface Window { + snap?: SnapApi; + } +} + +const SCRIPT_ID = "midtrans-snap-script"; + +function loadSnapScript(snapJsUrl: string, clientKey: string): Promise { + return new Promise((resolve, reject) => { + if (typeof window === "undefined") { + reject(new Error("Snap hanya bisa dimuat di browser")); + return; + } + if (window.snap) { + resolve(); + return; + } + const existing = document.getElementById(SCRIPT_ID); + if (existing) { + existing.addEventListener("load", () => resolve()); + existing.addEventListener("error", () => + reject(new Error("Gagal memuat Snap.js")) + ); + return; + } + const script = document.createElement("script"); + script.id = SCRIPT_ID; + script.src = snapJsUrl; + script.async = true; + script.setAttribute("data-client-key", clientKey); + script.onload = () => resolve(); + script.onerror = () => reject(new Error("Gagal memuat Snap.js")); + document.body.appendChild(script); + }); +} + +interface MidtransPayButtonProps { + tripId: string; +} + +export function MidtransPayButton({ tripId }: MidtransPayButtonProps) { + const router = useRouter(); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(""); + + async function handleClick() { + setLoading(true); + setError(""); + + const result = await startMidtransPaymentAction(tripId); + if ("error" in result) { + setError(result.error); + setLoading(false); + return; + } + + try { + await loadSnapScript(result.snapJsUrl, result.clientKey); + } catch (e) { + setError(e instanceof Error ? e.message : "Gagal memuat pembayaran"); + setLoading(false); + return; + } + + if (!window.snap) { + setError("Snap belum siap, refresh halaman dan coba lagi"); + setLoading(false); + return; + } + + window.snap.pay(result.snapToken, { + onSuccess: () => { + // Webhook server akan tetap jadi sumber kebenaran. Refresh page untuk pull state baru. + router.refresh(); + }, + onPending: () => router.refresh(), + onError: () => { + setError( + "Pembayaran gagal diproses. Coba lagi atau pakai metode lain." + ); + router.refresh(); + }, + onClose: () => { + // User menutup popup tanpa menyelesaikan. Refresh saja, kalau status berubah + // (mis. user sudah bayar VA) callback dari Midtrans akan datang ke webhook. + router.refresh(); + }, + }); + + setLoading(false); + } + + return ( +
+ {error && ( +
+ {error} +
+ )} + +

+ Bayar pakai BCA VA, GoPay, QRIS, kartu, dan lainnya. Status terupdate + otomatis setelah pembayaran terkonfirmasi gateway. +

+
+ ); +} diff --git a/lib/midtrans.ts b/lib/midtrans.ts new file mode 100644 index 0000000..24b1577 --- /dev/null +++ b/lib/midtrans.ts @@ -0,0 +1,193 @@ +import crypto from "node:crypto"; +import { z } from "zod/v4"; +import type { PaymentStatus } from "@/app/generated/prisma/enums"; + +/** + * Schema validasi callback Midtrans. Field minimum yang kita pakai + + * passthrough untuk field lain (Midtrans bisa tambah field tanpa breaking). + */ +export const midtransWebhookSchema = z.object({ + order_id: z.string().min(1, "order_id wajib"), + status_code: z.string().min(1, "status_code wajib"), + gross_amount: z.string().min(1, "gross_amount wajib"), + signature_key: z.string().min(1, "signature_key wajib"), + transaction_status: z.string().min(1, "transaction_status wajib"), + transaction_id: z.string().optional(), + payment_type: z.string().optional(), + fraud_status: z.string().nullable().optional(), +}).passthrough(); + +export type MidtransWebhookBody = z.infer; + +/** + * Thin client untuk Midtrans Snap. + * + * Tidak pakai library `midtrans-client` — kita cukup `fetch` + `crypto.createHash` + * untuk verifikasi signature. Lebih ringkas dan dependency-free. + */ + +function isProduction(): boolean { + return process.env.NEXT_PUBLIC_MIDTRANS_IS_PRODUCTION === "true"; +} + +export const MIDTRANS = { + isProduction, + /** Server-side base URL untuk Snap REST API. */ + snapApiBase: () => + isProduction() + ? "https://app.midtrans.com/snap/v1" + : "https://app.sandbox.midtrans.com/snap/v1", + /** Public URL Snap.js untuk client. */ + snapJsUrl: () => + isProduction() + ? "https://app.midtrans.com/snap/snap.js" + : "https://app.sandbox.midtrans.com/snap/snap.js", +}; + +function requireServerKey(): string { + const key = process.env.MIDTRANS_SERVER_KEY; + if (!key) { + throw new Error( + "MIDTRANS_SERVER_KEY belum di-set. Cek env.example." + ); + } + return key; +} + +function basicAuthHeader(): string { + // Midtrans pakai Basic auth dengan serverKey di username, password kosong. + const token = Buffer.from(`${requireServerKey()}:`).toString("base64"); + return `Basic ${token}`; +} + +interface SnapTransactionPayload { + orderId: string; + grossAmount: number; + customer: { + name: string; + email: string; + }; + itemName: string; + /// Berapa detik sampai expire. Default Midtrans 24 jam, kita pakai itu kalau undefined. + expirySeconds?: number; +} + +export interface SnapTransactionResult { + token: string; + redirectUrl: string; +} + +/** + * Buat transaksi Snap di Midtrans, dapatkan token untuk dipakai window.snap.pay(). + * https://docs.midtrans.com/reference/charge-transactions-1 + */ +export async function createSnapTransaction( + payload: SnapTransactionPayload +): Promise { + const body: Record = { + transaction_details: { + order_id: payload.orderId, + gross_amount: payload.grossAmount, + }, + customer_details: { + first_name: payload.customer.name, + email: payload.customer.email, + }, + item_details: [ + { + id: payload.orderId, + price: payload.grossAmount, + quantity: 1, + name: payload.itemName.slice(0, 50), + }, + ], + }; + + if (payload.expirySeconds) { + body.expiry = { + unit: "second", + duration: payload.expirySeconds, + }; + } + + const res = await fetch(`${MIDTRANS.snapApiBase()}/transactions`, { + method: "POST", + headers: { + "Content-Type": "application/json", + Accept: "application/json", + Authorization: basicAuthHeader(), + }, + body: JSON.stringify(body), + cache: "no-store", + }); + + const json = (await res.json().catch(() => null)) as + | { token?: string; redirect_url?: string; error_messages?: string[] } + | null; + + if (!res.ok || !json?.token) { + const reason = + json?.error_messages?.join(", ") ?? `HTTP ${res.status}`; + throw new Error(`Midtrans Snap gagal: ${reason}`); + } + + return { + token: json.token, + redirectUrl: json.redirect_url ?? "", + }; +} + +/** + * Verifikasi signature webhook Midtrans. + * Formula: SHA512(order_id + status_code + gross_amount + serverKey). + * https://docs.midtrans.com/reference/notification-webhooks-1 + */ +export function verifyMidtransSignature( + orderId: string, + statusCode: string, + grossAmount: string, + signatureKey: string +): boolean { + const expected = crypto + .createHash("sha512") + .update(`${orderId}${statusCode}${grossAmount}${requireServerKey()}`) + .digest("hex"); + + // Konstanta-time compare untuk hindari timing attack. + const a = Buffer.from(expected, "hex"); + const b = Buffer.from(signatureKey, "hex"); + if (a.length !== b.length) return false; + return crypto.timingSafeEqual(a, b); +} + +/** + * Map kombinasi `transaction_status` + `fraud_status` Midtrans ke `PaymentStatus` internal. + * Tabel rujukan ada di PAYMENT_ROADMAP.md PR C. + */ +export function mapMidtransStatus( + transactionStatus: string, + fraudStatus?: string | null +): PaymentStatus { + switch (transactionStatus) { + case "capture": + // Khusus kartu kredit. fraud_status menentukan apakah sudah aman atau perlu review. + if (fraudStatus === "challenge") return "AWAITING"; + if (fraudStatus === "accept") return "PAID"; + return "AWAITING"; + case "settlement": + return "PAID"; + case "pending": + return "AWAITING"; + case "deny": + return "FAILED"; + case "expire": + return "EXPIRED"; + case "cancel": + return "CANCELLED"; + case "refund": + case "partial_refund": + return "REFUNDED"; + default: + return "AWAITING"; + } +} diff --git a/prisma/migrations/20260508160000_booking_unique_trip_user/migration.sql b/prisma/migrations/20260508160000_booking_unique_trip_user/migration.sql new file mode 100644 index 0000000..f5391a5 --- /dev/null +++ b/prisma/migrations/20260508160000_booking_unique_trip_user/migration.sql @@ -0,0 +1,5 @@ +-- DropIndex (replace solo userId index dengan unique compound yang lebih berguna) +DROP INDEX "Booking_userId_idx"; + +-- CreateIndex (unique compound, juga jadi index untuk lookup by tripId+userId) +CREATE UNIQUE INDEX "Booking_tripId_userId_key" ON "Booking"("tripId", "userId"); diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 1e338d8..2fb1548 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -262,8 +262,11 @@ model Booking { createdAt DateTime @default(now()) updatedAt DateTime @updatedAt + /// Konsistensi: 1-1 ke participant via participantId, dan participant unique + /// per (tripId, userId). Constraint ini eksplisit + jadi index untuk query + /// `findByTripAndUser`. + @@unique([tripId, userId]) @@index([tripId, status]) - @@index([userId]) } enum BookingStatus { diff --git a/server/repositories/booking.repo.ts b/server/repositories/booking.repo.ts index 853820f..b201d3c 100644 --- a/server/repositories/booking.repo.ts +++ b/server/repositories/booking.repo.ts @@ -14,8 +14,8 @@ export const bookingRepo = { }, async findByTripAndUser(tripId: string, userId: string) { - return prisma.booking.findFirst({ - where: { tripId, userId }, + return prisma.booking.findUnique({ + where: { tripId_userId: { tripId, userId } }, include: { payments: { orderBy: { createdAt: "desc" } } }, }); }, diff --git a/server/services/booking.service.ts b/server/services/booking.service.ts index 4bed549..d64d436 100644 --- a/server/services/booking.service.ts +++ b/server/services/booking.service.ts @@ -2,6 +2,7 @@ import { Prisma } from "@/app/generated/prisma/client"; import { prisma } from "@/lib/prisma"; import { bookingRepo } from "@/server/repositories/booking.repo"; import { paymentRepo } from "@/server/repositories/payment.repo"; +import { isTripDepartureDayPast } from "@/lib/trip-dates"; const SERIAL_TX_ATTEMPTS = 6; @@ -39,7 +40,7 @@ export const bookingService = { async (tx) => { const booking = await tx.booking.findUnique({ where: { id: bookingId }, - include: { trip: { select: { price: true } } }, + include: { trip: { select: { price: true, date: true } } }, }); if (!booking) { throw new Error("Booking tidak ditemukan"); @@ -60,6 +61,11 @@ export const bookingService = { "Booking belum siap menerima pembayaran (tunggu approve organizer)" ); } + if (isTripDepartureDayPast(booking.trip.date)) { + throw new Error( + "Trip sudah lewat tanggal berangkat — pembayaran ditutup" + ); + } const existing = await tx.payment.findFirst({ where: { diff --git a/server/services/payment.service.ts b/server/services/payment.service.ts new file mode 100644 index 0000000..b728300 --- /dev/null +++ b/server/services/payment.service.ts @@ -0,0 +1,335 @@ +import { Prisma } from "@/app/generated/prisma/client"; +import { prisma } from "@/lib/prisma"; +import { + MIDTRANS, + createSnapTransaction, + mapMidtransStatus, + verifyMidtransSignature, + type MidtransWebhookBody, +} from "@/lib/midtrans"; +import { isTripDepartureDayPast } from "@/lib/trip-dates"; + +const SERIAL_TX_ATTEMPTS = 6; + +function isSerializationConflict(err: unknown): boolean { + return ( + typeof err === "object" && + err !== null && + "code" in err && + (err as { code: string }).code === "P2034" + ); +} + +function midtransOrderId(bookingId: string, attempt: number): string { + return `midtrans-${bookingId}-${attempt}`; +} + +export interface StartMidtransResult { + paymentId: string; + snapToken: string; + snapJsUrl: string; + clientKey: string; + expiresAt: Date; +} + +export type WebhookOutcome = + | { ok: true; status: "updated" | "skipped" | "ignored" | "booking_conflict" } + | { ok: false; reason: "signature_mismatch" | "amount_mismatch" }; + +export const paymentService = { + /** + * Mulai pembayaran Midtrans untuk Booking. Idempotent — kalau ada Payment + * MIDTRANS aktif (status PENDING/AWAITING), reuse token yang sudah ada + * selama belum expired. + */ + async startMidtransPayment(bookingId: string, userId: string): Promise { + const clientKey = process.env.NEXT_PUBLIC_MIDTRANS_CLIENT_KEY; + if (!clientKey) { + throw new Error("NEXT_PUBLIC_MIDTRANS_CLIENT_KEY belum di-set"); + } + + const booking = await prisma.booking.findUnique({ + where: { id: bookingId }, + include: { + user: { select: { id: true, name: true, email: true } }, + trip: { select: { title: true, date: true } }, + payments: { + where: { provider: "MIDTRANS" }, + orderBy: { createdAt: "desc" }, + }, + }, + }); + + if (!booking) { + throw new Error("Booking tidak ditemukan"); + } + if (booking.userId !== userId) { + throw new Error("Booking ini bukan milikmu"); + } + if (booking.amount <= 0) { + throw new Error("Booking gratis tidak butuh pembayaran online"); + } + if (booking.status === "PAID") { + throw new Error("Booking sudah lunas"); + } + if (booking.status !== "AWAITING_PAY") { + throw new Error( + "Booking belum siap menerima pembayaran (tunggu approve organizer)" + ); + } + if (isTripDepartureDayPast(booking.trip.date)) { + throw new Error( + "Trip sudah lewat tanggal berangkat — pembayaran ditutup" + ); + } + + // Reuse Payment AWAITING/PENDING yang belum kadaluarsa, kalau ada. + const now = new Date(); + const reusable = booking.payments.find( + (p) => + (p.status === "PENDING" || p.status === "AWAITING") && + p.snapToken && + (!p.expiresAt || p.expiresAt.getTime() > now.getTime()) + ); + + const snapJsUrl = MIDTRANS.snapJsUrl(); + + if (reusable && reusable.snapToken) { + return { + paymentId: reusable.id, + snapToken: reusable.snapToken, + snapJsUrl, + clientKey, + expiresAt: reusable.expiresAt ?? new Date(now.getTime() + 24 * 3600 * 1000), + }; + } + + // Tutup attempt lama yang sudah expired (housekeeping ringan) + const expiredIds = booking.payments + .filter( + (p) => + (p.status === "PENDING" || p.status === "AWAITING") && + p.expiresAt && + p.expiresAt.getTime() <= now.getTime() + ) + .map((p) => p.id); + if (expiredIds.length > 0) { + await prisma.payment.updateMany({ + where: { id: { in: expiredIds } }, + data: { status: "EXPIRED" }, + }); + } + + const attemptNumber = booking.payments.length + 1; + const orderId = midtransOrderId(booking.id, attemptNumber); + const expirySeconds = 24 * 3600; // 24 jam, default Midtrans + const expiresAt = new Date(now.getTime() + expirySeconds * 1000); + + // Create Payment row dulu (PENDING) supaya kalau call gagal, kita tetap punya audit trail. + const payment = await prisma.payment.create({ + data: { + bookingId: booking.id, + provider: "MIDTRANS", + externalOrderId: orderId, + amount: booking.amount, + status: "PENDING", + expiresAt, + }, + }); + + let snapResult; + try { + snapResult = await createSnapTransaction({ + orderId, + grossAmount: booking.amount, + customer: { + name: booking.user.name, + email: booking.user.email, + }, + itemName: booking.trip.title, + expirySeconds, + }); + } catch (err) { + // Roll back Payment ke FAILED supaya orderId tidak nyangkut PENDING selamanya. + await prisma.payment.update({ + where: { id: payment.id }, + data: { + status: "FAILED", + failedAt: new Date(), + rejectionReason: err instanceof Error ? err.message : "Snap API error", + }, + }); + throw err; + } + + const updated = await prisma.payment.update({ + where: { id: payment.id }, + data: { + snapToken: snapResult.token, + status: "AWAITING", + }, + }); + + return { + paymentId: updated.id, + snapToken: snapResult.token, + snapJsUrl, + clientKey, + expiresAt, + }; + }, + + /** + * Handle webhook callback dari Midtrans. Idempotent — boleh dipanggil berulang. + * Selalu return result yang webhook handler bisa terjemahkan ke HTTP status. + */ + async handleMidtransWebhook( + payload: MidtransWebhookBody + ): Promise { + const { order_id: orderId, status_code: statusCode, gross_amount: grossAmount, signature_key: signatureKey } = payload; + + const signatureValid = verifyMidtransSignature( + orderId, + statusCode, + grossAmount, + signatureKey + ); + if (!signatureValid) { + return { ok: false, reason: "signature_mismatch" }; + } + + const payment = await prisma.payment.findUnique({ + where: { externalOrderId: orderId }, + include: { booking: true }, + }); + + if (!payment) { + // Order tidak dikenal — return ok supaya Midtrans tidak retry forever. + return { ok: true, status: "ignored" }; + } + + // Cek amount cocok. gross_amount dari Midtrans format "100000.00". + const amountFromGateway = Math.round(Number(grossAmount)); + if ( + Number.isNaN(amountFromGateway) || + amountFromGateway !== payment.amount + ) { + // Tetap simpan callback mentah untuk audit, tapi jangan ubah status. + await prisma.payment.update({ + where: { id: payment.id }, + data: { + rawCallback: payload as unknown as Prisma.InputJsonValue, + rejectionReason: `Amount mismatch: gateway=${grossAmount}, expected=${payment.amount}`, + }, + }); + return { ok: false, reason: "amount_mismatch" }; + } + + const finalStatuses = new Set([ + "PAID", + "FAILED", + "EXPIRED", + "CANCELLED", + "REFUNDED", + ]); + if (finalStatuses.has(payment.status)) { + // Idempotent: skip update tapi tetap log callback baru. + await prisma.payment.update({ + where: { id: payment.id }, + data: { + rawCallback: payload as unknown as Prisma.InputJsonValue, + }, + }); + return { ok: true, status: "skipped" }; + } + + const newStatus = mapMidtransStatus( + payload.transaction_status, + payload.fraud_status ?? null + ); + + let lastErr: unknown; + for (let attempt = 0; attempt < SERIAL_TX_ATTEMPTS; attempt++) { + try { + await prisma.$transaction( + async (tx) => { + const now = new Date(); + + // Re-baca booking di dalam transaksi — bisa berubah (mis. user cancel) sejak + // outer fetch. Lock-free read tetap aman karena isolasi serializable. + const currentBooking = await tx.booking.findUnique({ + where: { id: payment.bookingId }, + select: { status: true, participantId: true }, + }); + + const bookingInConflictState = + currentBooking?.status === "CANCELLED" || + currentBooking?.status === "REFUNDED" || + currentBooking?.status === "EXPIRED"; + + // Selalu simpan callback Payment (truth dari gateway). Kalau booking + // di state konflik dan webhook mau set PAID, payment tetap PAID + // (uang masuk) tapi tidak propagate ke booking — flag untuk manual review/refund. + const conflictNote = + bookingInConflictState && newStatus === "PAID" + ? `Webhook PAID arrived but Booking is ${currentBooking.status}. Manual review required (potential refund).` + : null; + + await tx.payment.update({ + where: { id: payment.id }, + data: { + status: newStatus, + externalTxId: payload.transaction_id ?? null, + method: payload.payment_type ?? null, + rawCallback: payload as unknown as Prisma.InputJsonValue, + paidAt: newStatus === "PAID" ? now : null, + failedAt: + newStatus === "FAILED" || newStatus === "EXPIRED" ? now : null, + rejectionReason: conflictNote, + }, + }); + + if (newStatus === "PAID" && !bookingInConflictState) { + await tx.booking.update({ + where: { id: payment.bookingId }, + data: { status: "PAID" }, + }); + // Backward-compat: sync timestamp di TripParticipant. + await tx.tripParticipant.update({ + where: { id: payment.booking.participantId }, + data: { paymentConfirmedAt: now, markedPaidAt: now }, + }); + } + }, + { + isolationLevel: Prisma.TransactionIsolationLevel.Serializable, + maxWait: 5000, + timeout: 15000, + } + ); + + // Recheck post-tx untuk reporting outcome. + const finalBooking = await prisma.booking.findUnique({ + where: { id: payment.bookingId }, + select: { status: true }, + }); + const isConflict = + newStatus === "PAID" && + finalBooking?.status !== "PAID"; + return { + ok: true, + status: isConflict ? "booking_conflict" : "updated", + }; + } catch (e) { + lastErr = e; + if (isSerializationConflict(e) && attempt < SERIAL_TX_ATTEMPTS - 1) { + continue; + } + throw e; + } + } + throw lastErr instanceof Error + ? lastErr + : new Error("Webhook gagal diproses karena konflik transaksi"); + }, +};