From 996ca0d621f60b395bca4acfde1a97c7a282e7cc Mon Sep 17 00:00:00 2001 From: Myron Blair Date: Fri, 22 May 2026 12:52:44 +0000 Subject: [PATCH] Initial commit --- !install!!/fix_tjj.py | 105 ++ !install!!/migration_v2.sql | 37 + !install!!/migration_v3.sql | 96 ++ !install!!/schema.sql | 402 +++++++ .gitignore | 6 + .htaccess | 70 ++ README.md | 208 ++++ account/addresses.php | 289 ++++++ account/includes/footer.php | 6 + account/includes/sidebar.php | 132 +++ account/index.php | 357 +++++++ account/order.php | 246 +++++ account/orders.php | 137 +++ account/profile.php | 248 +++++ account/reviews.php | 289 ++++++ account/rewards.php | 452 ++++++++ account/wallet.php | 196 ++++ account/wishlist.php | 148 +++ admin/about-us.php | 292 ++++++ admin/analytics.php | 714 +++++++++++++ admin/api/customer-orders.php | 15 + admin/api/upload-splash.php | 29 + admin/assets/admin.css | 642 ++++++++++++ admin/assets/admin.js | 200 ++++ admin/campaigns.php | 243 +++++ admin/categories.php | 206 ++++ admin/coupons.php | 260 +++++ admin/customers.php | 528 ++++++++++ admin/emails.php | 218 ++++ admin/gift-cards.php | 326 ++++++ admin/import-export.php | 582 +++++++++++ admin/includes/footer.php | 8 + admin/includes/header.php | 182 ++++ admin/index.php | 197 ++++ admin/integrations.php | 523 ++++++++++ admin/inventory.php | 337 ++++++ admin/login.php | 68 ++ admin/logout.php | 10 + admin/order.php | 299 ++++++ admin/orders.php | 279 +++++ admin/payments.php | 169 +++ admin/pos.php | 1386 +++++++++++++++++++++++++ admin/product-edit.php | 400 +++++++ admin/product-types.php | 163 +++ admin/products.php | 290 ++++++ admin/reviews.php | 281 +++++ admin/settings.php | 233 +++++ admin/shipping.php | 124 +++ admin/splashes.php | 410 ++++++++ admin/upload-image.php | 44 + admin/users.php | 267 +++++ api/cart.php | 121 +++ api/create-checkout-session.php | 119 +++ api/create-payment-intent.php | 87 ++ api/delete-account.php | 53 + api/loyalty.php | 94 ++ api/orders.php | 174 ++++ api/payment-status.php | 136 +++ api/pos-order.php | 191 ++++ api/products.php | 93 ++ api/push-subscribe.php | 83 ++ api/redeem-gift-card.php | 97 ++ api/search-customers.php | 25 + api/submit-review.php | 66 ++ api/subscribe.php | 75 ++ api/test-notification.php | 65 ++ api/validate-coupon.php | 59 ++ api/webhook.php | 147 +++ api/wishlist.php | 95 ++ assets/css/admin.css | 543 ++++++++++ assets/css/style.css | 850 +++++++++++++++ assets/icons/badge-72.svg | 5 + assets/icons/icon-128.svg | 9 + assets/icons/icon-144.svg | 9 + assets/icons/icon-152.svg | 9 + assets/icons/icon-192.png | 8 + assets/icons/icon-192.svg | 9 + assets/icons/icon-384.svg | 9 + assets/icons/icon-512.png | 8 + assets/icons/icon-512.svg | 9 + assets/icons/icon-72.svg | 9 + assets/icons/icon-96.svg | 9 + assets/images/coffee-beans.jpg | Bin 0 -> 136830 bytes assets/images/coffee-brewing.jpg | Bin 0 -> 88669 bytes assets/images/favicon.ico | 312 ++++++ assets/images/friends-coffee.jpg | Bin 0 -> 84160 bytes assets/images/hero-coffee.jpg | Bin 0 -> 117356 bytes assets/images/logo-icon.png | 312 ++++++ assets/images/logo-icon.svg | 13 + assets/images/logo.png | Bin 0 -> 137074 bytes assets/images/logo.svg | 24 + assets/images/og-image.jpg | 17 + assets/images/placeholder-product.svg | 7 + assets/images/premium-coffee.jpg | Bin 0 -> 65998 bytes assets/js/main.js | 394 +++++++ cart.php | 177 ++++ checkout.php | 343 ++++++ config/config.php | 62 ++ docs/DEPLOYMENT.md | 314 ++++++ includes/auth.php | 284 +++++ includes/db.php | 104 ++ includes/email.php | 369 +++++++ includes/footer.php | 77 ++ includes/functions.php | 378 +++++++ includes/header.php | 116 +++ includes/loyalty.php | 438 ++++++++ includes/push.php | 181 ++++ includes/sms.php | 195 ++++ includes/stripe.php | 214 ++++ index.php | 221 ++++ login.php | 94 ++ logout.php | 10 + manifest.json | 105 ++ offline.html | 119 +++ order-confirmation.php | 128 +++ payment.php | 287 +++++ product.php | 252 +++++ register.php | 131 +++ robots.txt | 11 + shop.php | 170 +++ sitemap.xml | 6 + sw.js | 269 +++++ 122 files changed, 22749 insertions(+) create mode 100644 !install!!/fix_tjj.py create mode 100644 !install!!/migration_v2.sql create mode 100644 !install!!/migration_v3.sql create mode 100644 !install!!/schema.sql create mode 100644 .gitignore create mode 100644 .htaccess create mode 100644 README.md create mode 100644 account/addresses.php create mode 100644 account/includes/footer.php create mode 100644 account/includes/sidebar.php create mode 100644 account/index.php create mode 100644 account/order.php create mode 100644 account/orders.php create mode 100644 account/profile.php create mode 100644 account/reviews.php create mode 100644 account/rewards.php create mode 100644 account/wallet.php create mode 100644 account/wishlist.php create mode 100644 admin/about-us.php create mode 100644 admin/analytics.php create mode 100644 admin/api/customer-orders.php create mode 100644 admin/api/upload-splash.php create mode 100644 admin/assets/admin.css create mode 100644 admin/assets/admin.js create mode 100644 admin/campaigns.php create mode 100644 admin/categories.php create mode 100644 admin/coupons.php create mode 100644 admin/customers.php create mode 100644 admin/emails.php create mode 100644 admin/gift-cards.php create mode 100644 admin/import-export.php create mode 100644 admin/includes/footer.php create mode 100644 admin/includes/header.php create mode 100644 admin/index.php create mode 100644 admin/integrations.php create mode 100644 admin/inventory.php create mode 100644 admin/login.php create mode 100644 admin/logout.php create mode 100644 admin/order.php create mode 100644 admin/orders.php create mode 100644 admin/payments.php create mode 100644 admin/pos.php create mode 100644 admin/product-edit.php create mode 100644 admin/product-types.php create mode 100644 admin/products.php create mode 100644 admin/reviews.php create mode 100644 admin/settings.php create mode 100644 admin/shipping.php create mode 100644 admin/splashes.php create mode 100644 admin/upload-image.php create mode 100644 admin/users.php create mode 100644 api/cart.php create mode 100644 api/create-checkout-session.php create mode 100644 api/create-payment-intent.php create mode 100644 api/delete-account.php create mode 100644 api/loyalty.php create mode 100644 api/orders.php create mode 100644 api/payment-status.php create mode 100644 api/pos-order.php create mode 100644 api/products.php create mode 100644 api/push-subscribe.php create mode 100644 api/redeem-gift-card.php create mode 100644 api/search-customers.php create mode 100644 api/submit-review.php create mode 100644 api/subscribe.php create mode 100644 api/test-notification.php create mode 100644 api/validate-coupon.php create mode 100644 api/webhook.php create mode 100644 api/wishlist.php create mode 100644 assets/css/admin.css create mode 100644 assets/css/style.css create mode 100644 assets/icons/badge-72.svg create mode 100644 assets/icons/icon-128.svg create mode 100644 assets/icons/icon-144.svg create mode 100644 assets/icons/icon-152.svg create mode 100644 assets/icons/icon-192.png create mode 100644 assets/icons/icon-192.svg create mode 100644 assets/icons/icon-384.svg create mode 100644 assets/icons/icon-512.png create mode 100644 assets/icons/icon-512.svg create mode 100644 assets/icons/icon-72.svg create mode 100644 assets/icons/icon-96.svg create mode 100644 assets/images/coffee-beans.jpg create mode 100644 assets/images/coffee-brewing.jpg create mode 100644 assets/images/favicon.ico create mode 100644 assets/images/friends-coffee.jpg create mode 100644 assets/images/hero-coffee.jpg create mode 100644 assets/images/logo-icon.png create mode 100644 assets/images/logo-icon.svg create mode 100644 assets/images/logo.png create mode 100644 assets/images/logo.svg create mode 100644 assets/images/og-image.jpg create mode 100644 assets/images/placeholder-product.svg create mode 100644 assets/images/premium-coffee.jpg create mode 100644 assets/js/main.js create mode 100644 cart.php create mode 100644 checkout.php create mode 100644 config/config.php create mode 100644 docs/DEPLOYMENT.md create mode 100644 includes/auth.php create mode 100644 includes/db.php create mode 100644 includes/email.php create mode 100644 includes/footer.php create mode 100644 includes/functions.php create mode 100644 includes/header.php create mode 100644 includes/loyalty.php create mode 100644 includes/push.php create mode 100644 includes/sms.php create mode 100644 includes/stripe.php create mode 100644 index.php create mode 100644 login.php create mode 100644 logout.php create mode 100644 manifest.json create mode 100644 offline.html create mode 100644 order-confirmation.php create mode 100644 payment.php create mode 100644 product.php create mode 100644 register.php create mode 100644 robots.txt create mode 100644 shop.php create mode 100644 sitemap.xml create mode 100644 sw.js diff --git a/!install!!/fix_tjj.py b/!install!!/fix_tjj.py new file mode 100644 index 0000000..fcdcae5 --- /dev/null +++ b/!install!!/fix_tjj.py @@ -0,0 +1,105 @@ +#!/usr/bin/env python3 +import subprocess, os + +BASE = '/home/tomsjavajive.com/public_html' + +# ── Fix 1: Remove wholesale and careers from footer ────────── +print("[1] Fixing footer...") +f = BASE + '/includes/footer.php' +with open(f) as fh: + c = fh.read() + +before = len(c) +c = c.replace('
  • Wholesale
  • \n', '') +c = c.replace('
  • Careers
  • \n', '') +# Also try without leading spaces +c = c.replace('
  • Wholesale
  • \n', '') +c = c.replace('
  • Careers
  • \n', '') + +with open(f, 'w') as fh: + fh.write(c) +removed = before - len(c) +print(f" Footer: removed {removed} chars (wholesale + careers)") + +# ── Fix 2: Check account pages for errors ─────────────────── +print("\n[2] Checking account pages...") +for page in ['rewards', 'wishlist', 'reviews']: + path = f'{BASE}/account/{page}.php' + r = subprocess.run( + ['/usr/local/lsws/lsphp85/bin/php', '-d', 'display_errors=1', + '-d', 'error_reporting=32767', path], + capture_output=True, text=True + ) + output = r.stdout + r.stderr + errors = [l for l in output.split('\n') + if any(x in l for x in ['Fatal','Error','Undefined','undefined','Call to'])] + if errors: + print(f" {page}.php ERRORS:") + for e in errors[:3]: + print(f" {e[:120]}") + else: + # Check if page has actual HTML content + has_html = '<' in r.stdout and len(r.stdout) > 100 + print(f" {page}.php: {'OK - has content' if has_html else 'WARNING - minimal output'}") + +# ── Fix 3: Check admin customers Modal ────────────────────── +print("\n[3] Checking admin customers...") +f2 = BASE + '/admin/customers.php' +with open(f2) as fh: + c2 = fh.read() + +print(f" Modal.open present: {'Modal.open' in c2}") +print(f" openCustomerModal present: {'openCustomerModal' in c2}") +print(f" admin.js exists: {os.path.exists(BASE+'/admin/assets/admin.js')}") + +# Check if admin.js has Modal object +if os.path.exists(BASE+'/admin/assets/admin.js'): + with open(BASE+'/admin/assets/admin.js') as fh: + js = fh.read() + print(f" Modal object in admin.js: {'Modal' in js}") + print(f" admin.js size: {len(js)} chars") +else: + print(" admin.js MISSING - this is why customer modal doesn't work!") + # Create a basic Modal object + modal_js = """ +// Modal helper +const Modal = { + open: function(id) { + const el = document.getElementById(id); + if (el) { el.style.display = 'flex'; el.classList.add('active'); } + }, + close: function(id) { + const el = document.getElementById(id); + if (el) { el.style.display = 'none'; el.classList.remove('active'); } + } +}; +document.addEventListener('keydown', function(e) { + if (e.key === 'Escape') { + document.querySelectorAll('.modal-overlay.active').forEach(m => { + m.style.display = 'none'; m.classList.remove('active'); + }); + } +}); +document.addEventListener('click', function(e) { + if (e.target.classList.contains('modal-overlay')) { + e.target.style.display = 'none'; e.target.classList.remove('active'); + } +}); +""" + os.makedirs(BASE+'/admin/assets', exist_ok=True) + with open(BASE+'/admin/assets/admin.js', 'w') as fh: + fh.write(modal_js) + print(" Created admin.js with Modal object") + +# ── Fix 4: Check account page includes ───────────────────── +print("\n[4] Checking account page structure...") +for page in ['rewards', 'wishlist', 'reviews']: + path = f'{BASE}/account/{page}.php' + with open(path) as fh: + content = fh.read() + has_auth = 'CustomerAuth::require' in content + has_header = "require_once" in content and 'header' in content + has_footer = 'footer' in content + print(f" {page}.php: auth={has_auth}, header={has_header}, footer={has_footer}, size={len(content)}") + +print("\nDone!") diff --git a/!install!!/migration_v2.sql b/!install!!/migration_v2.sql new file mode 100644 index 0000000..b4cbb58 --- /dev/null +++ b/!install!!/migration_v2.sql @@ -0,0 +1,37 @@ +-- Migration: Add wishlist table and addresses column to customers +-- Run this in phpMyAdmin to add the new features + +-- Add addresses column to customers table +ALTER TABLE `customers` ADD COLUMN `addresses` JSON DEFAULT NULL AFTER `billing_address`; + +-- Add preferences column to customers table +ALTER TABLE `customers` ADD COLUMN `preferences` JSON DEFAULT NULL AFTER `addresses`; + +-- Add is_active column to customers table if not exists +ALTER TABLE `customers` ADD COLUMN `is_active` TINYINT(1) DEFAULT 1 AFTER `preferences`; + +-- Create wishlist table +CREATE TABLE IF NOT EXISTS `wishlist` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `customer_id` VARCHAR(50) NOT NULL, + `product_id` VARCHAR(50) NOT NULL, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + UNIQUE KEY `unique_wishlist` (`customer_id`, `product_id`), + INDEX `idx_customer` (`customer_id`), + INDEX `idx_product` (`product_id`), + FOREIGN KEY (`customer_id`) REFERENCES `customers`(`customer_id`) ON DELETE CASCADE, + FOREIGN KEY (`product_id`) REFERENCES `products`(`product_id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- Add reorder_level column to products if not exists +ALTER TABLE `products` ADD COLUMN `reorder_level` INT DEFAULT 10 AFTER `low_stock_threshold`; + +-- Add slug column to products if not exists +ALTER TABLE `products` ADD COLUMN `slug` VARCHAR(255) DEFAULT NULL AFTER `name`; +ALTER TABLE `products` ADD INDEX `idx_slug` (`slug`); + +-- Update existing products to have slugs based on name +UPDATE `products` SET `slug` = LOWER(REPLACE(REPLACE(REPLACE(`name`, ' ', '-'), "'", ''), '"', '')) WHERE `slug` IS NULL; + +-- Add is_pos_order to orders table +ALTER TABLE `orders` ADD COLUMN `is_pos_order` TINYINT(1) DEFAULT 0 AFTER `notes`; diff --git a/!install!!/migration_v3.sql b/!install!!/migration_v3.sql new file mode 100644 index 0000000..8b55223 --- /dev/null +++ b/!install!!/migration_v3.sql @@ -0,0 +1,96 @@ +-- Migration: Add tables for push notifications, loyalty program, and integration settings +-- Run this in phpMyAdmin + +-- Push notification subscriptions +CREATE TABLE IF NOT EXISTS `push_subscriptions` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `customer_id` VARCHAR(50) DEFAULT NULL, + `endpoint` TEXT NOT NULL, + `p256dh_key` VARCHAR(255) NOT NULL, + `auth_key` VARCHAR(255) NOT NULL, + `is_active` TINYINT(1) DEFAULT 1, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + INDEX `idx_customer` (`customer_id`), + INDEX `idx_active` (`is_active`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- Push notifications queue +CREATE TABLE IF NOT EXISTS `push_notifications` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `notification_id` VARCHAR(50) NOT NULL UNIQUE, + `subscription_endpoint` TEXT NOT NULL, + `payload` TEXT NOT NULL, + `status` ENUM('pending', 'sent', 'failed') DEFAULT 'pending', + `error_message` TEXT DEFAULT NULL, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + `sent_at` TIMESTAMP NULL DEFAULT NULL, + INDEX `idx_status` (`status`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- Loyalty transactions history +CREATE TABLE IF NOT EXISTS `loyalty_transactions` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `transaction_id` VARCHAR(50) NOT NULL UNIQUE, + `customer_id` VARCHAR(50) NOT NULL, + `points` INT NOT NULL, + `type` ENUM('earn', 'redeem', 'tier_upgrade', 'birthday_bonus', 'referral_bonus', 'referral_welcome', 'adjustment', 'expiry') NOT NULL, + `description` VARCHAR(255) DEFAULT NULL, + `reference_amount` DECIMAL(10,2) DEFAULT NULL, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + INDEX `idx_customer` (`customer_id`), + INDEX `idx_type` (`type`), + INDEX `idx_created` (`created_at`), + FOREIGN KEY (`customer_id`) REFERENCES `customers`(`customer_id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- Add lifetime_points and loyalty_tier to customers +ALTER TABLE `customers` + ADD COLUMN IF NOT EXISTS `lifetime_points` INT DEFAULT 0 AFTER `reward_points`, + ADD COLUMN IF NOT EXISTS `loyalty_tier` ENUM('bronze', 'silver', 'gold', 'platinum') DEFAULT 'bronze' AFTER `lifetime_points`, + ADD COLUMN IF NOT EXISTS `birthday` DATE DEFAULT NULL AFTER `loyalty_tier`, + ADD COLUMN IF NOT EXISTS `referral_code` VARCHAR(20) DEFAULT NULL AFTER `birthday`, + ADD COLUMN IF NOT EXISTS `referred_by` VARCHAR(50) DEFAULT NULL AFTER `referral_code`; + +-- Add unique index on referral_code +ALTER TABLE `customers` ADD UNIQUE INDEX IF NOT EXISTS `idx_referral_code` (`referral_code`); + +-- Update settings table with integration keys (INSERT IGNORE to not overwrite existing) +INSERT IGNORE INTO `settings` (`setting_key`, `setting_value`, `updated_at`) VALUES +('sendgrid_api_key', '', NOW()), +('sendgrid_from_email', 'noreply@tomsjavajive.com', NOW()), +('sendgrid_from_name', 'Tom''s Java Jive', NOW()), +('twilio_account_sid', '', NOW()), +('twilio_auth_token', '', NOW()), +('twilio_phone_number', '', NOW()), +('vapid_public_key', '', NOW()), +('vapid_private_key', '', NOW()), +('loyalty_enabled', '1', NOW()), +('email_notifications_enabled', '1', NOW()), +('sms_notifications_enabled', '0', NOW()), +('push_notifications_enabled', '1', NOW()); + +-- Add Stripe checkout session column to orders +ALTER TABLE `orders` ADD COLUMN IF NOT EXISTS `stripe_checkout_session` VARCHAR(255) DEFAULT NULL AFTER `stripe_payment_intent`; + +-- Payment transactions table for tracking payment attempts +CREATE TABLE IF NOT EXISTS `payment_transactions` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `transaction_id` VARCHAR(50) NOT NULL UNIQUE, + `order_id` VARCHAR(50) NOT NULL, + `customer_id` VARCHAR(50) DEFAULT NULL, + `amount` DECIMAL(10,2) NOT NULL, + `currency` VARCHAR(3) DEFAULT 'USD', + `payment_method` VARCHAR(50) DEFAULT 'stripe', + `stripe_session_id` VARCHAR(255) DEFAULT NULL, + `stripe_payment_intent` VARCHAR(255) DEFAULT NULL, + `status` ENUM('initiated', 'pending', 'processing', 'succeeded', 'failed', 'cancelled', 'refunded') DEFAULT 'initiated', + `metadata` JSON DEFAULT NULL, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + INDEX `idx_order` (`order_id`), + INDEX `idx_customer` (`customer_id`), + INDEX `idx_status` (`status`), + INDEX `idx_stripe_session` (`stripe_session_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + diff --git a/!install!!/schema.sql b/!install!!/schema.sql new file mode 100644 index 0000000..131425f --- /dev/null +++ b/!install!!/schema.sql @@ -0,0 +1,402 @@ +-- Tom's Java Jive - MySQL Database Schema +-- Version: 1.0 +-- Compatible with MySQL 8.0+ + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +SET AUTOCOMMIT = 0; +START TRANSACTION; +SET time_zone = "+00:00"; + +-- -------------------------------------------------------- +-- Database Schema for Tom's Java Jive +-- NOTE: Database must already exist in cPanel +-- Select your database in phpMyAdmin before importing +-- -------------------------------------------------------- + +-- -------------------------------------------------------- +-- Table: settings +-- -------------------------------------------------------- +CREATE TABLE `settings` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `setting_key` VARCHAR(100) NOT NULL UNIQUE, + `setting_value` JSON, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: admin_users +-- -------------------------------------------------------- +CREATE TABLE `admin_users` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `user_id` VARCHAR(50) NOT NULL UNIQUE, + `email` VARCHAR(255) NOT NULL UNIQUE, + `password_hash` VARCHAR(255) DEFAULT NULL, + `name` VARCHAR(255) DEFAULT NULL, + `picture` VARCHAR(500) DEFAULT NULL, + `is_admin` TINYINT(1) DEFAULT 1, + `is_master` TINYINT(1) DEFAULT 0, + `permissions` JSON DEFAULT NULL, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + `last_login` TIMESTAMP NULL, + INDEX `idx_email` (`email`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: customers +-- -------------------------------------------------------- +CREATE TABLE `customers` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `customer_id` VARCHAR(50) NOT NULL UNIQUE, + `email` VARCHAR(255) NOT NULL UNIQUE, + `password_hash` VARCHAR(255) DEFAULT NULL, + `name` VARCHAR(255) DEFAULT NULL, + `phone` VARCHAR(50) DEFAULT NULL, + `shipping_address` JSON DEFAULT NULL, + `billing_address` JSON DEFAULT NULL, + `wallet_balance` DECIMAL(10,2) DEFAULT 0.00, + `reward_points` INT DEFAULT 0, + `is_guest` TINYINT(1) DEFAULT 0, + `created_via` VARCHAR(50) DEFAULT 'web', + `email_verified` TINYINT(1) DEFAULT 0, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + INDEX `idx_email` (`email`), + INDEX `idx_customer_id` (`customer_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: products +-- -------------------------------------------------------- +CREATE TABLE `products` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `product_id` VARCHAR(50) NOT NULL UNIQUE, + `name` VARCHAR(255) NOT NULL, + `description` TEXT, + `price` DECIMAL(10,2) NOT NULL, + `sale_price` DECIMAL(10,2) DEFAULT NULL, + `cost_price` DECIMAL(10,2) DEFAULT NULL, + `sku` VARCHAR(100) DEFAULT NULL, + `barcode` VARCHAR(100) DEFAULT NULL, + `category` VARCHAR(100) DEFAULT NULL, + `tags` JSON DEFAULT NULL, + `images` JSON DEFAULT NULL, + `stock` INT DEFAULT 0, + `low_stock_threshold` INT DEFAULT 10, + `weight` DECIMAL(10,2) DEFAULT NULL, + `dimensions` JSON DEFAULT NULL, + `is_active` TINYINT(1) DEFAULT 1, + `is_featured` TINYINT(1) DEFAULT 0, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + INDEX `idx_product_id` (`product_id`), + INDEX `idx_category` (`category`), + INDEX `idx_is_active` (`is_active`), + FULLTEXT INDEX `idx_search` (`name`, `description`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: orders +-- -------------------------------------------------------- +CREATE TABLE `orders` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `order_id` VARCHAR(50) NOT NULL UNIQUE, + `order_number` VARCHAR(20) NOT NULL UNIQUE, + `customer_id` VARCHAR(50) DEFAULT NULL, + `customer_email` VARCHAR(255) NOT NULL, + `customer_name` VARCHAR(255) DEFAULT NULL, + `customer_phone` VARCHAR(50) DEFAULT NULL, + `items` JSON NOT NULL, + `subtotal` DECIMAL(10,2) NOT NULL, + `shipping_cost` DECIMAL(10,2) DEFAULT 0.00, + `tax` DECIMAL(10,2) DEFAULT 0.00, + `discount` DECIMAL(10,2) DEFAULT 0.00, + `gift_card_discount` DECIMAL(10,2) DEFAULT 0.00, + `wallet_amount_used` DECIMAL(10,2) DEFAULT 0.00, + `total` DECIMAL(10,2) NOT NULL, + `shipping_address` JSON DEFAULT NULL, + `billing_address` JSON DEFAULT NULL, + `shipping_method` VARCHAR(50) DEFAULT NULL, + `payment_method` VARCHAR(50) DEFAULT NULL, + `payment_status` ENUM('pending', 'paid', 'failed', 'refunded', 'partially_refunded') DEFAULT 'pending', + `order_status` ENUM('pending', 'confirmed', 'processing', 'shipped', 'delivered', 'cancelled', 'refunded') DEFAULT 'pending', + `stripe_session_id` VARCHAR(255) DEFAULT NULL, + `stripe_payment_intent` VARCHAR(255) DEFAULT NULL, + `tracking_number` VARCHAR(100) DEFAULT NULL, + `tracking_url` VARCHAR(500) DEFAULT NULL, + `notes` TEXT DEFAULT NULL, + `is_pos_order` TINYINT(1) DEFAULT 0, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + INDEX `idx_order_id` (`order_id`), + INDEX `idx_customer_id` (`customer_id`), + INDEX `idx_customer_email` (`customer_email`), + INDEX `idx_order_status` (`order_status`), + INDEX `idx_payment_status` (`payment_status`), + INDEX `idx_created_at` (`created_at`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: order_items (normalized for reporting) +-- -------------------------------------------------------- +CREATE TABLE `order_items` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `order_id` VARCHAR(50) NOT NULL, + `product_id` VARCHAR(50) NOT NULL, + `name` VARCHAR(255) NOT NULL, + `price` DECIMAL(10,2) NOT NULL, + `quantity` INT NOT NULL, + `total` DECIMAL(10,2) NOT NULL, + INDEX `idx_order_id` (`order_id`), + INDEX `idx_product_id` (`product_id`), + FOREIGN KEY (`order_id`) REFERENCES `orders`(`order_id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: gift_cards +-- -------------------------------------------------------- +CREATE TABLE `gift_cards` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `gift_card_id` VARCHAR(50) NOT NULL UNIQUE, + `code` VARCHAR(20) NOT NULL UNIQUE, + `initial_balance` DECIMAL(10,2) NOT NULL, + `current_balance` DECIMAL(10,2) NOT NULL, + `purchaser_email` VARCHAR(255) DEFAULT NULL, + `recipient_email` VARCHAR(255) DEFAULT NULL, + `recipient_name` VARCHAR(255) DEFAULT NULL, + `message` TEXT DEFAULT NULL, + `is_active` TINYINT(1) DEFAULT 1, + `expires_at` TIMESTAMP NULL, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + INDEX `idx_code` (`code`), + INDEX `idx_is_active` (`is_active`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: gift_card_transactions +-- -------------------------------------------------------- +CREATE TABLE `gift_card_transactions` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `gift_card_id` VARCHAR(50) NOT NULL, + `order_id` VARCHAR(50) DEFAULT NULL, + `amount` DECIMAL(10,2) NOT NULL, + `balance_after` DECIMAL(10,2) NOT NULL, + `type` ENUM('purchase', 'redemption', 'refund') NOT NULL, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + INDEX `idx_gift_card_id` (`gift_card_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: wallet_transactions +-- -------------------------------------------------------- +CREATE TABLE `wallet_transactions` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `transaction_id` VARCHAR(50) NOT NULL UNIQUE, + `customer_id` VARCHAR(50) NOT NULL, + `amount` DECIMAL(10,2) NOT NULL, + `balance_after` DECIMAL(10,2) NOT NULL, + `type` ENUM('deposit', 'withdrawal', 'purchase', 'refund', 'reward') NOT NULL, + `description` VARCHAR(255) DEFAULT NULL, + `order_id` VARCHAR(50) DEFAULT NULL, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + INDEX `idx_customer_id` (`customer_id`), + INDEX `idx_type` (`type`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: reviews +-- -------------------------------------------------------- +CREATE TABLE `reviews` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `review_id` VARCHAR(50) NOT NULL UNIQUE, + `product_id` VARCHAR(50) NOT NULL, + `customer_id` VARCHAR(50) DEFAULT NULL, + `customer_name` VARCHAR(255) NOT NULL, + `customer_email` VARCHAR(255) NOT NULL, + `rating` INT NOT NULL CHECK (rating >= 1 AND rating <= 5), + `title` VARCHAR(255) DEFAULT NULL, + `comment` TEXT, + `is_verified_purchase` TINYINT(1) DEFAULT 0, + `is_approved` TINYINT(1) DEFAULT 0, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + INDEX `idx_product_id` (`product_id`), + INDEX `idx_is_approved` (`is_approved`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: email_campaigns +-- -------------------------------------------------------- +CREATE TABLE `email_campaigns` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `campaign_id` VARCHAR(50) NOT NULL UNIQUE, + `name` VARCHAR(255) NOT NULL, + `subject` VARCHAR(255) NOT NULL, + `content` TEXT NOT NULL, + `recipient_type` ENUM('all', 'customers_only', 'subscribers_only') DEFAULT 'all', + `status` ENUM('draft', 'scheduled', 'sent', 'cancelled') DEFAULT 'draft', + `scheduled_at` TIMESTAMP NULL, + `sent_at` TIMESTAMP NULL, + `recipients_count` INT DEFAULT 0, + `opened_count` INT DEFAULT 0, + `clicked_count` INT DEFAULT 0, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + INDEX `idx_status` (`status`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: email_subscribers +-- -------------------------------------------------------- +CREATE TABLE `email_subscribers` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `email` VARCHAR(255) NOT NULL UNIQUE, + `name` VARCHAR(255) DEFAULT NULL, + `is_active` TINYINT(1) DEFAULT 1, + `source` VARCHAR(50) DEFAULT 'website', + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + INDEX `idx_is_active` (`is_active`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: abandoned_carts +-- -------------------------------------------------------- +CREATE TABLE `abandoned_carts` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `cart_id` VARCHAR(50) NOT NULL UNIQUE, + `customer_id` VARCHAR(50) DEFAULT NULL, + `customer_email` VARCHAR(255) DEFAULT NULL, + `items` JSON NOT NULL, + `subtotal` DECIMAL(10,2) NOT NULL, + `recovery_email_sent` TINYINT(1) DEFAULT 0, + `recovered` TINYINT(1) DEFAULT 0, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + INDEX `idx_customer_email` (`customer_email`), + INDEX `idx_recovered` (`recovered`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: referrals +-- -------------------------------------------------------- +CREATE TABLE `referrals` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `referral_id` VARCHAR(50) NOT NULL UNIQUE, + `referrer_customer_id` VARCHAR(50) NOT NULL, + `referral_code` VARCHAR(20) NOT NULL UNIQUE, + `referred_customer_id` VARCHAR(50) DEFAULT NULL, + `referred_email` VARCHAR(255) DEFAULT NULL, + `status` ENUM('pending', 'completed', 'expired') DEFAULT 'pending', + `reward_amount` DECIMAL(10,2) DEFAULT 5.00, + `reward_given` TINYINT(1) DEFAULT 0, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + INDEX `idx_referral_code` (`referral_code`), + INDEX `idx_referrer` (`referrer_customer_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: visitor_sessions +-- -------------------------------------------------------- +CREATE TABLE `visitor_sessions` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `session_id` VARCHAR(100) NOT NULL UNIQUE, + `visitor_id` VARCHAR(50) NOT NULL, + `ip_address` VARCHAR(45) DEFAULT NULL, + `user_agent` TEXT DEFAULT NULL, + `current_page` VARCHAR(500) DEFAULT NULL, + `referrer` VARCHAR(500) DEFAULT NULL, + `country` VARCHAR(100) DEFAULT NULL, + `city` VARCHAR(100) DEFAULT NULL, + `is_active` TINYINT(1) DEFAULT 1, + `page_views` INT DEFAULT 1, + `started_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + `last_activity` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + INDEX `idx_is_active` (`is_active`), + INDEX `idx_last_activity` (`last_activity`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: categories +-- -------------------------------------------------------- +CREATE TABLE `categories` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `category_id` VARCHAR(50) NOT NULL UNIQUE, + `name` VARCHAR(255) NOT NULL, + `slug` VARCHAR(255) NOT NULL UNIQUE, + `description` TEXT DEFAULT NULL, + `image` VARCHAR(500) DEFAULT NULL, + `parent_id` VARCHAR(50) DEFAULT NULL, + `sort_order` INT DEFAULT 0, + `is_active` TINYINT(1) DEFAULT 1, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + INDEX `idx_slug` (`slug`), + INDEX `idx_is_active` (`is_active`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: coupons +-- -------------------------------------------------------- +CREATE TABLE `coupons` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `coupon_id` VARCHAR(50) NOT NULL UNIQUE, + `code` VARCHAR(50) NOT NULL UNIQUE, + `discount_type` ENUM('percentage', 'fixed') NOT NULL DEFAULT 'percentage', + `discount_value` DECIMAL(10,2) NOT NULL, + `min_order_amount` DECIMAL(10,2) DEFAULT NULL, + `max_uses` INT DEFAULT NULL, + `times_used` INT DEFAULT 0, + `is_active` TINYINT(1) DEFAULT 1, + `starts_at` TIMESTAMP NULL, + `expires_at` TIMESTAMP NULL, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + INDEX `idx_code` (`code`), + INDEX `idx_is_active` (`is_active`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: password_reset_tokens +-- -------------------------------------------------------- +CREATE TABLE `password_reset_tokens` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `email` VARCHAR(255) NOT NULL, + `token` VARCHAR(255) NOT NULL, + `user_type` ENUM('admin', 'customer') NOT NULL, + `expires_at` TIMESTAMP NOT NULL, + `used` TINYINT(1) DEFAULT 0, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + INDEX `idx_token` (`token`), + INDEX `idx_email` (`email`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: sessions +-- -------------------------------------------------------- +CREATE TABLE `sessions` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `session_id` VARCHAR(128) NOT NULL UNIQUE, + `user_id` VARCHAR(50) DEFAULT NULL, + `user_type` ENUM('admin', 'customer') DEFAULT NULL, + `data` TEXT, + `ip_address` VARCHAR(45) DEFAULT NULL, + `user_agent` VARCHAR(255) DEFAULT NULL, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + `expires_at` TIMESTAMP NOT NULL, + INDEX `idx_session_id` (`session_id`), + INDEX `idx_expires_at` (`expires_at`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Insert default settings +-- -------------------------------------------------------- +INSERT INTO `settings` (`setting_key`, `setting_value`) VALUES +('store_name', '"Tom\'s Java Jive"'), +('store_email', '"support@tomsjavajive.com"'), +('store_phone', '""'), +('store_address', '""'), +('currency', '"USD"'), +('currency_symbol', '"$"'), +('tax_rate', '0'), +('shipping', '{"flat_rate_enabled": true, "flat_rate_amount": 5.99, "free_shipping_threshold": 50, "weight_based_enabled": false}'), +('payment', '{"stripe_enabled": true, "paypal_enabled": false, "cod_enabled": false}'), +('email', '{"sendgrid_api_key": "", "sender_email": "noreply@tomsjavajive.com", "sender_name": "Tom\'s Java Jive"}'); + +COMMIT; diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..98ac107 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +*.log +.DS_Store +*.swp + +config/database.php +uploads/ diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..f89bc71 --- /dev/null +++ b/.htaccess @@ -0,0 +1,70 @@ +# Tom's Java Jive - Apache Configuration + +# Enable URL rewriting +RewriteEngine On + +# Force HTTPS (uncomment in production) +RewriteCond %{HTTPS} off +RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] + +# Remove trailing slashes +RewriteCond %{REQUEST_FILENAME} !-d +RewriteCond %{REQUEST_URI} (.+)/$ +RewriteRule ^ %1 [L,R=301] + +# Protect sensitive directories +RedirectMatch 403 /config/.*$ +RedirectMatch 403 /includes/.*\.php$ +RedirectMatch 403 /install/.*$ + +# Set default charset +AddDefaultCharset UTF-8 + +# Disable directory listing +Options -Indexes + +# Set timezone (optional) +# php_value date.timezone "America/New_York" + +# Increase upload limits (adjust as needed) +php_value upload_max_filesize 10M +php_value post_max_size 10M + +# Enable compression (optional) + + AddOutputFilterByType DEFLATE text/html text/plain text/css text/javascript application/javascript application/json + + +# Browser caching (optional) + + ExpiresActive On + ExpiresByType image/jpg "access plus 1 year" + ExpiresByType image/jpeg "access plus 1 year" + ExpiresByType image/png "access plus 1 year" + ExpiresByType image/webp "access plus 1 year" + ExpiresByType text/css "access plus 1 month" + ExpiresByType application/javascript "access plus 1 month" + + +# Security headers + + Header set X-Content-Type-Options "nosniff" + Header set X-Frame-Options "SAMEORIGIN" + Header set X-XSS-Protection "1; mode=block" + + +# Custom error pages (optional) +# ErrorDocument 404 /404.php +# ErrorDocument 500 /500.php +# SEO ADDITIONS +RewriteCond %{HTTP_HOST} ^www\.tomsjavajive\.com [NC] +RewriteRule ^(.*)$ https://tomsjavajive.com/$1 [R=301,L] + + ExpiresActive On + ExpiresByType image/jpg "access plus 1 year" + ExpiresByType image/jpeg "access plus 1 year" + ExpiresByType image/png "access plus 1 year" + ExpiresByType image/webp "access plus 1 year" + ExpiresByType text/css "access plus 1 month" + ExpiresByType application/javascript "access plus 1 month" + diff --git a/README.md b/README.md new file mode 100644 index 0000000..a2845b4 --- /dev/null +++ b/README.md @@ -0,0 +1,208 @@ +# Tom's Java Jive - E-commerce Coffee Shop + +A complete e-commerce platform built with **PHP 8.4** and **MySQL 8.0** for cPanel hosting. + +## Quick Download + +**ZIP File:** [tomsjavajive-php.zip](https://tomsjavajive.com/tomsjavajive-php.zip) + +## Features + +### Storefront +- 🛒 Shopping cart with session management +- 📦 Product catalog with categories, search, and filtering +- 💳 Checkout with multiple payment options +- 📱 PWA support (installable, offline capable) +- 👤 Customer accounts with order history + +### Admin Panel +- 📊 Dashboard with sales overview +- 📈 Advanced analytics with charts +- 🛍️ Product management (CRUD) +- 📋 Order management +- 💰 POS (Point of Sale) system +- 👥 Customer management with wallet +- ⭐ Review moderation +- 🎁 Gift cards & coupons +- ✉️ Email campaigns +- 📦 Inventory tracking +- 🚚 Shipping configuration +- 💳 Payment settings +- 👤 Admin user management + +### Integrations (Placeholder Keys - Configure in Admin) +- 📧 **SendGrid** - Transactional emails +- 📱 **Twilio** - SMS notifications +- 🔔 **Push Notifications** - Web push +- 🏆 **Loyalty Program** - 4-tier rewards system +- 💳 **Stripe Payments** - cURL-based (no Composer needed) + +## Installation + +### Requirements +- PHP 8.0+ (tested on 8.4.19) +- MySQL 8.0+ +- Apache with mod_rewrite + +### Steps + +1. **Upload Files** + - Extract the ZIP to your `public_html` folder + - Or upload via FTP + +2. **Create Database** + ``` + Log into phpMyAdmin + Create a new database (e.g., `tomsjavajive`) + ``` + +3. **Import Schema** + - Go to phpMyAdmin > Import + - Select `install/schema.sql` + - Click "Go" + +4. **Run Migrations** (for full features) + - Import `install/migration_v2.sql` + - Import `install/migration_v3.sql` + +5. **Configure Database** + - Edit `config/database.php`: + ```php + define('DB_HOST', 'localhost'); + define('DB_NAME', 'your_database_name'); + define('DB_USER', 'your_username'); + define('DB_PASS', 'your_password'); + ``` + +6. **Create Admin User** + - Visit: `https://yoursite.com/create-admin.php` + - Or import the default admin from schema.sql: + - Email: `admin@tomsjavajive.com` + - Password: `admin123!` + +7. **Configure Site URL** + - Edit `config/config.php`: + ```php + define('SITE_URL', 'https://yoursite.com'); + define('SITE_NAME', "Tom's Java Jive"); + ``` + +8. **Delete Installation Files** (Security) + ``` + Delete: create-admin.php + Delete: install/ folder (optional, keep for reference) + ``` + +## Directory Structure + +``` +/ +├── admin/ # Admin panel pages +│ ├── assets/ # Admin CSS/JS +│ ├── includes/ # Admin header/footer +│ └── *.php # Admin pages +├── account/ # Customer portal +│ └── includes/ # Account layout +├── api/ # AJAX endpoints +├── assets/ # Frontend assets +│ ├── css/ +│ ├── js/ +│ ├── images/ +│ └── icons/ +├── config/ # Configuration files +├── includes/ # Core PHP files +│ ├── auth.php # Authentication +│ ├── db.php # Database connection +│ ├── email.php # SendGrid integration +│ ├── sms.php # Twilio integration +│ ├── push.php # Push notifications +│ ├── loyalty.php # Loyalty program +│ └── functions.php # Helper functions +├── install/ # Installation files +│ ├── schema.sql # Main database schema +│ ├── migration_v2.sql +│ └── migration_v3.sql +├── manifest.json # PWA manifest +├── sw.js # Service worker +└── *.php # Storefront pages +``` + +## Configuring Integrations + +### SendGrid (Email) +1. Get API key from https://app.sendgrid.com/settings/api_keys +2. Admin > Settings > Integrations +3. Enter API key, from email, and from name + +### Twilio (SMS) +1. Get credentials from https://console.twilio.com/ +2. Admin > Settings > Integrations +3. Enter Account SID, Auth Token, and Phone Number + +### Push Notifications +1. Generate VAPID keys at https://web-push-codelab.glitch.me/ +2. Admin > Settings > Integrations +3. Enter Public and Private keys + +## Loyalty Program Tiers + +| Tier | Points Required | Multiplier | Key Benefits | +|------|----------------|------------|--------------| +| Bronze Bean | 0 | 1x | Birthday reward | +| Silver Roast | 500 | 1.25x | Free shipping $25+ | +| Gold Blend | 1,500 | 1.5x | Free all shipping | +| Platinum Reserve | 5,000 | 2x | VIP benefits | + +**Redemption:** 100 points = $1 wallet credit + +## Security Notes + +- All passwords are hashed with `password_hash()` +- PDO prepared statements prevent SQL injection +- CSRF protection on forms +- XSS prevention via `htmlspecialchars()` +- Session-based authentication + +## Stripe Payment Integration + +The app includes a **cURL-based Stripe integration** that works without Composer: + +### Features +- **PaymentIntent API** - Inline card element payments +- **Checkout Sessions** - Hosted Stripe payment page (redirect) +- **Webhooks** - Payment confirmation handlers +- **Demo Mode** - Works without API keys for testing + +### Setup +1. Get your API keys from https://dashboard.stripe.com/apikeys +2. Edit `config/config.php`: + ```php + define('STRIPE_SECRET_KEY', 'sk_live_your_key'); + define('STRIPE_PUBLISHABLE_KEY', 'pk_live_your_key'); + define('STRIPE_WEBHOOK_SECRET', 'whsec_your_secret'); + ``` + +### Webhook Setup +1. Stripe Dashboard > Developers > Webhooks +2. Add endpoint: `https://yoursite.com/api/webhook.php` +3. Select events: `payment_intent.succeeded`, `checkout.session.completed` + +### Files +- `includes/stripe.php` - Core Stripe API class (cURL-based) +- `api/create-payment-intent.php` - Create PaymentIntent +- `api/create-checkout-session.php` - Create Checkout Session +- `api/payment-status.php` - Poll payment status +- `api/webhook.php` - Handle Stripe webhooks + +## Support + +For issues or feature requests, contact your developer. + +## License + +Proprietary - All rights reserved. + +--- + +**Version:** 2.0 +**Last Updated:** December 2025 diff --git a/account/addresses.php b/account/addresses.php new file mode 100644 index 0000000..dd568f5 --- /dev/null +++ b/account/addresses.php @@ -0,0 +1,289 @@ + $index >= 0 && isset($addresses[$index]['id']) ? $addresses[$index]['id'] : uniqid('addr_'), + 'name' => trim($_POST['name'] ?? ''), + 'phone' => trim($_POST['phone'] ?? ''), + 'address' => trim($_POST['address'] ?? ''), + 'address2' => trim($_POST['address2'] ?? ''), + 'city' => trim($_POST['city'] ?? ''), + 'state' => trim($_POST['state'] ?? ''), + 'zip' => trim($_POST['zip'] ?? ''), + 'country' => trim($_POST['country'] ?? 'USA'), + 'is_default' => isset($_POST['is_default']), + ]; + + // Validate + if (empty($address['name']) || empty($address['address']) || empty($address['city']) || empty($address['zip'])) { + setFlash('error', 'Please fill in all required fields'); + } else { + // Handle default + if ($address['is_default']) { + foreach ($addresses as &$a) { + $a['is_default'] = false; + } + } + + if ($index >= 0 && isset($addresses[$index])) { + $addresses[$index] = $address; + } else { + $addresses[] = $address; + } + + // Save + db()->query( + "UPDATE customers SET addresses = :addresses WHERE customer_id = :id", + ['addresses' => json_encode($addresses), 'id' => $customer['customer_id']] + ); + + setFlash('success', $action === 'add' ? 'Address added' : 'Address updated'); + redirect('/account/addresses.php'); + } + } + + if ($action === 'delete') { + $index = intval($_POST['index'] ?? -1); + if ($index >= 0 && isset($addresses[$index])) { + array_splice($addresses, $index, 1); + db()->query( + "UPDATE customers SET addresses = :addresses WHERE customer_id = :id", + ['addresses' => json_encode($addresses), 'id' => $customer['customer_id']] + ); + setFlash('success', 'Address deleted'); + } + redirect('/account/addresses.php'); + } + + if ($action === 'set_default') { + $index = intval($_POST['index'] ?? -1); + if ($index >= 0 && isset($addresses[$index])) { + foreach ($addresses as $i => &$a) { + $a['is_default'] = ($i === $index); + } + db()->query( + "UPDATE customers SET addresses = :addresses WHERE customer_id = :id", + ['addresses' => json_encode($addresses), 'id' => $customer['customer_id']] + ); + setFlash('success', 'Default address updated'); + } + redirect('/account/addresses.php'); + } +} + +require_once __DIR__ . '/../includes/header.php'; +require_once __DIR__ . '/includes/sidebar.php'; +?> + +
    +
    +

    My Addresses

    +

    Manage your shipping and billing addresses

    +
    + +
    + + +
    + +
    + + + +
    + +
    + + + +
    +
    + +

    No addresses saved

    +

    Add an address for faster checkout.

    + +
    +
    + +
    + $addr): ?> +
    +
    + + Default + + +

    + +

    + +

    + +

    + , +

    +

    + + +

    + +

    + + +
    + + + +
    + + + +
    + + +
    + + + +
    +
    +
    +
    + +
    + + + + + + + + diff --git a/account/includes/footer.php b/account/includes/footer.php new file mode 100644 index 0000000..ea85462 --- /dev/null +++ b/account/includes/footer.php @@ -0,0 +1,6 @@ + + + + + + diff --git a/account/includes/sidebar.php b/account/includes/sidebar.php new file mode 100644 index 0000000..2f6bd28 --- /dev/null +++ b/account/includes/sidebar.php @@ -0,0 +1,132 @@ + + + + +
    +
    + +
    + + + + + diff --git a/admin/includes/header.php b/admin/includes/header.php new file mode 100644 index 0000000..003b228 --- /dev/null +++ b/admin/includes/header.php @@ -0,0 +1,182 @@ + + + + + + + <?= $pageTitle ?? 'Admin' ?> - Tom's Java Jive Admin + + + + + + + + + +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    +
    + +
    + +
    + +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + +
    +
    +
    diff --git a/admin/index.php b/admin/index.php new file mode 100644 index 0000000..0dcbaa6 --- /dev/null +++ b/admin/index.php @@ -0,0 +1,197 @@ +count('orders'); +$todayOrders = db()->count('orders', 'DATE(created_at) = CURDATE()'); +$totalRevenue = db()->fetch("SELECT COALESCE(SUM(total), 0) as total FROM orders WHERE payment_status = 'paid'")['total'] ?? 0; +$todayRevenue = db()->fetch("SELECT COALESCE(SUM(total), 0) as total FROM orders WHERE payment_status = 'paid' AND DATE(created_at) = CURDATE()")['total'] ?? 0; +$totalCustomers = db()->count('customers'); +$totalProducts = db()->count('products', 'is_active = 1'); +$lowStockProducts = db()->count('products', 'stock <= low_stock_threshold AND is_active = 1'); +$pendingOrders = db()->count('orders', "order_status = 'pending'"); + +// Recent orders +$recentOrders = db()->fetchAll( + "SELECT * FROM orders ORDER BY created_at DESC LIMIT 10" +); + +// Low stock products +$lowStockItems = db()->fetchAll( + "SELECT * FROM products WHERE stock <= low_stock_threshold AND is_active = 1 ORDER BY stock ASC LIMIT 5" +); +?> + + + + +
    +
    +
    + +
    +
    +
    Today's Revenue
    +
    + +
    +
    + +
    +
    +
    Today's Orders
    +
    + +
    +
    + +
    +
    +
    Total Customers
    +
    + +
    +
    + +
    +
    +
    Pending Orders
    +
    +
    + +
    + +
    +
    +

    Recent Orders

    + View All +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OrderCustomerTotalStatusDate
    + No orders yet +
    + + + + + 'warning', + 'confirmed', 'processing' => 'primary', + 'shipped', 'delivered' => 'success', + 'cancelled', 'refunded' => 'error', + default => 'primary' + }; + ?> + + + +
    +
    +
    + + +
    + +
    +
    +

    Overview

    +
    +
    +
    + Total Revenue + +
    +
    + Total Orders + +
    +
    + Active Products + +
    +
    + Low Stock Items + +
    +
    +
    + + + +
    +
    +

    + Low Stock +

    +
    +
    + +
    + + left +
    + + + Manage Inventory + +
    +
    + + + + +
    +
    + + diff --git a/admin/integrations.php b/admin/integrations.php new file mode 100644 index 0000000..d30f70f --- /dev/null +++ b/admin/integrations.php @@ -0,0 +1,523 @@ + ['sendgrid_api_key', 'sendgrid_from_email', 'sendgrid_from_name', 'email_notifications_enabled'], + 'twilio' => ['twilio_account_sid', 'twilio_auth_token', 'twilio_phone_number', 'sms_notifications_enabled'], + 'push' => ['vapid_public_key', 'vapid_private_key', 'push_notifications_enabled'], + 'loyalty' => ['loyalty_enabled'] + ]; + + if (isset($settingsMap[$section])) { + foreach ($settingsMap[$section] as $key) { + $value = $_POST[$key] ?? ''; + + // Check if setting exists + $existing = db()->fetch("SELECT id FROM settings WHERE setting_key = :key", ['key' => $key]); + + if ($existing) { + db()->query( + "UPDATE settings SET setting_value = :value, updated_at = NOW() WHERE setting_key = :key", + ['value' => $value, 'key' => $key] + ); + } else { + db()->insert('settings', [ + 'setting_key' => $key, + 'setting_value' => $value + ]); + } + } + + setFlash('success', ucfirst($section) . ' settings saved successfully!'); + } + + redirect('/admin/integrations.php'); +} + +// Load current settings +$settings = []; +$allSettings = db()->fetchAll("SELECT setting_key, setting_value FROM settings"); +foreach ($allSettings as $s) { + $settings[$s['setting_key']] = $s['setting_value']; +} +?> + + + + + + +
    + +
    + + + +
    +
    +
    +
    + +
    +
    +

    SendGrid Email

    +

    + Send transactional emails (order confirmations, shipping updates, etc.) +

    +
    +
    + + + + +
    +
    +
    + + +
    +
    + + +

    + Get your API key from + SendGrid Dashboard +

    +
    +
    + +
    +
    + + +
    +
    + + "> +
    +
    + +
    + +
    + +
    + + +
    +
    +
    +
    + + +
    +
    +
    +
    + +
    +
    +

    Twilio SMS

    +

    + Send SMS notifications for orders, shipping updates, and promotions +

    +
    +
    + + + + +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + +
    + + +

    + Get your credentials from + Twilio Console +

    +
    + +
    + +
    + +
    + + +
    +
    +
    +
    + + +
    +
    +
    +
    + +
    +
    +

    Push Notifications

    +

    + Web push notifications for order updates and promotions +

    +
    +
    + + + + +
    +
    +
    + + +
    + + +
    + +
    + + +

    + Generate VAPID keys at + Web Push Codelab +

    +
    + +
    + +
    + + +
    +
    +
    + + +
    +
    +
    +
    + +
    +
    +

    Loyalty Program

    +

    + Reward customers with points and tiers (Bronze, Silver, Gold, Platinum) +

    +
    +
    + + + + +
    +
    +
    + + +
    + +
    + +
    +

    Tier Structure

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TierMin PointsMultiplierKey Benefits
    Bronze Bean01x1 point/$1, Birthday reward
    Silver Roast5001.25xFree shipping $25+, Double points weekends
    Gold Blend1,5001.5xFree shipping all orders, Priority support
    Platinum Reserve5,0002xExpress shipping, VIP events, Account manager
    +

    + 100 points = $1 credit • Points earned on every purchase +

    +
    + + +
    +
    +
    + + + + + + + diff --git a/admin/inventory.php b/admin/inventory.php new file mode 100644 index 0000000..eef142d --- /dev/null +++ b/admin/inventory.php @@ -0,0 +1,337 @@ +fetch("SELECT name, stock FROM products WHERE product_id = :id", ['id' => $_POST['product_id']]); + $newStock = max(0, ($product['stock'] ?? 0) + $adjustment); + + db()->update('products', ['stock' => $newStock], 'product_id = :id', ['id' => $_POST['product_id']]); + setFlash('success', $product['name'] . ' stock adjusted by ' . ($adjustment > 0 ? '+' : '') . $adjustment . '. New stock: ' . $newStock); + } + header('Location: /admin/inventory.php'); + exit; + } + + if ($action === 'update_threshold' && !empty($_POST['product_id'])) { + $threshold = intval($_POST['low_stock_threshold'] ?? 10); + db()->update('products', ['low_stock_threshold' => $threshold], 'product_id = :id', ['id' => $_POST['product_id']]); + setFlash('success', 'Low stock threshold updated'); + header('Location: /admin/inventory.php'); + exit; + } + + if ($action === 'bulk_adjust') { + $adjustments = $_POST['adjustments'] ?? []; + $count = 0; + foreach ($adjustments as $productId => $adj) { + $adj = intval($adj); + if ($adj != 0) { + db()->query( + "UPDATE products SET stock = GREATEST(0, stock + :adj) WHERE product_id = :id", + ['adj' => $adj, 'id' => $productId] + ); + $count++; + } + } + if ($count > 0) { + setFlash('success', "Adjusted stock for $count products"); + } + header('Location: /admin/inventory.php'); + exit; + } +} + +// Filters +$filter = $_GET['filter'] ?? ''; +$search = $_GET['search'] ?? ''; +$category = $_GET['category'] ?? ''; + +$where = ['1=1']; +$params = []; + +if ($search) { + $where[] = '(name LIKE :search OR sku LIKE :search OR barcode LIKE :search)'; + $params['search'] = '%' . $search . '%'; +} + +if ($category) { + $where[] = 'category = :category'; + $params['category'] = $category; +} + +if ($filter === 'low') { + $where[] = 'stock <= low_stock_threshold AND stock > 0'; +} elseif ($filter === 'out') { + $where[] = 'stock <= 0'; +} elseif ($filter === 'in') { + $where[] = 'stock > low_stock_threshold'; +} + +$whereClause = implode(' AND ', $where); + +$products = db()->fetchAll( + "SELECT product_id, name, sku, barcode, category, stock, low_stock_threshold, price, is_active + FROM products + WHERE {$whereClause} + ORDER BY stock ASC, name ASC", + $params +); + +// Get categories for filter +$categories = db()->fetchAll( + "SELECT DISTINCT category FROM products WHERE category IS NOT NULL AND category != '' ORDER BY category" +); + +// Stats +$totalProducts = db()->count('products', 'is_active = 1'); +$lowStockCount = db()->count('products', 'stock <= low_stock_threshold AND stock > 0 AND is_active = 1'); +$outOfStockCount = db()->count('products', 'stock <= 0 AND is_active = 1'); +$totalStock = db()->fetch("SELECT SUM(stock) as total FROM products WHERE is_active = 1")['total'] ?? 0; +$inventoryValue = db()->fetch("SELECT SUM(stock * price) as total FROM products WHERE is_active = 1")['total'] ?? 0; +?> + + + + +
    + + + +
    +
    +
    +
    +
    +
    Total Units
    +
    +
    +
    +
    +
    +
    +
    Inventory Value
    +
    +
    +
    +
    +
    +
    +
    Low Stock
    +
    +
    +
    +
    +
    +
    +
    Out of Stock
    +
    +
    +
    + + +
    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    + + + Clear + +
    +
    +
    + + + + + +
    +
    + products +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ProductSKU / BarcodeCategoryStockThresholdStatusActions
    No products found
    + + + Inactive + + + + + + +
    + + + - + +
    + + + + + + + + + Out of Stock + + Low Stock + + In Stock + + + + + + +
    +
    +
    + + + + + + + diff --git a/admin/login.php b/admin/login.php new file mode 100644 index 0000000..4c1f4b7 --- /dev/null +++ b/admin/login.php @@ -0,0 +1,68 @@ + + + + + + +Admin Login — Tom's Java Jive + + + + +
    + + +
    + +
    + + + + + +
    + ← Back to Store +
    + + diff --git a/admin/logout.php b/admin/logout.php new file mode 100644 index 0000000..db5e9b3 --- /dev/null +++ b/admin/logout.php @@ -0,0 +1,10 @@ +fetch("SELECT * FROM orders WHERE order_id = :id", ['id' => $orderId]); + +if (!$order) { + setFlash('error', 'Order not found'); + header('Location: /admin/orders.php'); + exit; +} + +// Handle status update +if ($_SERVER['REQUEST_METHOD'] === 'POST') { + $action = $_POST['action'] ?? ''; + + if ($action === 'update_status') { + $status = $_POST['status'] ?? ''; + $trackingNumber = $_POST['tracking_number'] ?? ''; + + $updateData = ['order_status' => $status]; + if ($trackingNumber) { + $updateData['tracking_number'] = $trackingNumber; + } + + db()->update('orders', $updateData, 'order_id = :id', ['id' => $orderId]); + setFlash('success', 'Order status updated'); + header('Location: /admin/order.php?id=' . $orderId); + exit; + } + + if ($action === 'add_note') { + $note = trim($_POST['note'] ?? ''); + if ($note) { + $existingNotes = $order['notes'] ?? ''; + $newNote = '[' . date('M j, Y g:i A') . '] ' . $note; + $allNotes = $existingNotes ? $existingNotes . "\n" . $newNote : $newNote; + + db()->update('orders', ['notes' => $allNotes], 'order_id = :id', ['id' => $orderId]); + setFlash('success', 'Note added'); + header('Location: /admin/order.php?id=' . $orderId); + exit; + } + } +} + +$items = json_decode($order['items'], true) ?? []; +$shippingAddress = json_decode($order['shipping_address'], true) ?? []; + +$statuses = ['pending', 'confirmed', 'processing', 'shipped', 'delivered', 'cancelled', 'refunded']; +?> + + + + +
    + + +
    + +
    + +
    +
    +

    Order Items

    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + 0): ?> + + + + + + 0): ?> + + + + + + 0): ?> + + + + + + + + + + +
    ProductPriceQtyTotal
    + + + + + + + +
    Subtotal
    Shipping
    Tax
    Discount-
    Total
    +
    +
    + + +
    +
    +

    Order Notes

    +
    +
    + +
    + +

    No notes yet.

    + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    + + +
    + +
    +
    +

    Order Status

    +
    +
    +
    + + +
    + + +
    + +
    + + +
    + + +
    +
    +
    + + +
    +
    +

    Customer

    +
    +
    +

    +

    + +

    + + + + + View Customer + + +
    +
    + + + +
    +
    +

    Shipping Address

    +
    +
    +

    +
    + , + + +

    +
    +
    + + + +
    +
    +

    Payment

    +
    +
    +
    + Method + +
    +
    + Status + 'success', + 'failed' => 'error', + 'refunded' => 'warning', + default => 'primary' + }; + ?> + +
    + +
    + Stripe ID + ... +
    + +
    +
    + + +
    +
    +

    Timeline

    +
    +
    +
    + Created + +
    + +
    + Updated + +
    + +
    +
    +
    +
    + + diff --git a/admin/orders.php b/admin/orders.php new file mode 100644 index 0000000..e03091c --- /dev/null +++ b/admin/orders.php @@ -0,0 +1,279 @@ + $status]; + if ($trackingNumber) { + $updateData['tracking_number'] = $trackingNumber; + } + + db()->update('orders', $updateData, 'order_id = :id', ['id' => $orderId]); + setFlash('success', 'Order status updated'); + header('Location: /admin/orders.php'); + exit; + } +} + +// Filters +$status = $_GET['status'] ?? ''; +$search = $_GET['search'] ?? ''; +$dateFrom = $_GET['date_from'] ?? ''; +$dateTo = $_GET['date_to'] ?? ''; +$page = max(1, intval($_GET['page'] ?? 1)); + +// Build query +$where = ['1=1']; +$params = []; + +if ($status) { + $where[] = 'order_status = :status'; + $params['status'] = $status; +} + +if ($search) { + $where[] = '(order_number LIKE :search OR customer_name LIKE :search OR customer_email LIKE :search)'; + $params['search'] = '%' . $search . '%'; +} + +if ($dateFrom) { + $where[] = 'DATE(created_at) >= :date_from'; + $params['date_from'] = $dateFrom; +} + +if ($dateTo) { + $where[] = 'DATE(created_at) <= :date_to'; + $params['date_to'] = $dateTo; +} + +$whereClause = implode(' AND ', $where); + +// Get total and paginate +$totalOrders = db()->count('orders', $whereClause, $params); +$pagination = paginate($totalOrders, $page, ADMIN_ITEMS_PER_PAGE); + +// Get orders +$orders = db()->fetchAll( + "SELECT * FROM orders WHERE {$whereClause} ORDER BY created_at DESC LIMIT :limit OFFSET :offset", + array_merge($params, ['limit' => $pagination['per_page'], 'offset' => $pagination['offset']]) +); + +$statuses = ['pending', 'confirmed', 'processing', 'shipped', 'delivered', 'cancelled', 'refunded']; +?> + + + + +
    + + +
    + + + +
    +
    +
    +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + + +
    + + + + + Clear + +
    +
    +
    + + +
    +
    + orders found +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OrderCustomerItemsTotalPaymentStatusDateActions
    + No orders found +
    + + + POS + + +
    + +
    item + 'success', + 'failed' => 'error', + 'refunded' => 'warning', + default => 'primary' + }; + ?> + + + + + 'warning', + 'confirmed', 'processing' => 'primary', + 'shipped', 'delivered' => 'success', + 'cancelled', 'refunded' => 'error', + default => 'primary' + }; + ?> + + + + + + + + +
    +
    +
    + + + 1): ?> +
    + +
    + + + + + + + + diff --git a/admin/payments.php b/admin/payments.php new file mode 100644 index 0000000..2c96e61 --- /dev/null +++ b/admin/payments.php @@ -0,0 +1,169 @@ + isset($_POST['stripe_enabled']), + 'test_mode' => isset($_POST['stripe_test_mode']), + 'publishable_key' => trim($_POST['stripe_publishable_key'] ?? ''), + 'secret_key' => trim($_POST['stripe_secret_key'] ?? ''), + 'webhook_secret' => trim($_POST['stripe_webhook_secret'] ?? '') + ]); + setFlash('success', 'Stripe settings updated'); + } + + if ($section === 'methods') { + setSetting('payment_methods', [ + 'card' => isset($_POST['method_card']), + 'cash' => isset($_POST['method_cash']), + 'wallet' => isset($_POST['method_wallet']), + 'gift_card' => isset($_POST['method_gift_card']) + ]); + setFlash('success', 'Payment methods updated'); + } + + header('Location: /admin/payments.php'); + exit; +} + +$stripe = getSetting('payment_stripe', [ + 'enabled' => true, + 'test_mode' => true, + 'publishable_key' => '', + 'secret_key' => '', + 'webhook_secret' => '' +]); + +$methods = getSetting('payment_methods', [ + 'card' => true, + 'cash' => true, + 'wallet' => true, + 'gift_card' => true +]); +?> + + + + +
    + + +
    + + +
    + +
    + +
    +
    +

    Stripe

    +
    +
    +
    + +
    + +
    + +
    + +
    + + +
    + +
    + + +
    + +
    + + + Get this from your Stripe webhook settings +
    + + +
    +
    +
    + + +
    + +
    +
    +

    POS Payment Methods

    +
    +
    +

    Select which payment methods are available in the Point of Sale system.

    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + + +
    +
    +
    +
    +
    + + diff --git a/admin/pos.php b/admin/pos.php new file mode 100644 index 0000000..44b018f --- /dev/null +++ b/admin/pos.php @@ -0,0 +1,1386 @@ +fetchAll( + "SELECT product_id, name, price, sale_price, stock, images, category, barcode, sku + FROM products WHERE is_active = 1 ORDER BY category, name" +); + +// Group products by category +$productsByCategory = []; +foreach ($products as $product) { + $cat = $product['category'] ?? 'Other'; + if (!isset($productsByCategory[$cat])) { + $productsByCategory[$cat] = []; + } + $product['images'] = json_decode($product['images'] ?? '[]', true); + $product['display_price'] = $product['sale_price'] ?? $product['price']; + $productsByCategory[$cat][] = $product; +} + +// Get held orders +$heldOrders = $_SESSION['pos_held_orders'] ?? []; + +// Get tax rate from settings +$taxRate = getSetting('tax_rate', 0) / 100; +?> + + + +
    + +
    + + +
    + + + + +
    + +
    + +
    + +

    No products available

    + Add Products +
    + + 0 && $product['stock'] <= 5; + ?> +
    + +
    +
    +
    + +
    +
    + + +
    +
    + + +
    +
    +

    Current Sale

    +
    + +
    +
    + +
    +
    + +

    Add products to start a sale

    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    + +
    +
    + Subtotal + $0.00 +
    + +
    + Tax (%) + $0.00 +
    +
    + Total + $0.00 +
    +
    + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + + diff --git a/admin/product-edit.php b/admin/product-edit.php new file mode 100644 index 0000000..dcaf1e1 --- /dev/null +++ b/admin/product-edit.php @@ -0,0 +1,400 @@ +fetchAll("SELECT category_id, name FROM categories WHERE is_active = 1 ORDER BY name ASC"); +$productTypesList = db()->fetchAll("SELECT type_id, name FROM product_types WHERE is_active = 1 ORDER BY sort_order ASC, name ASC"); + + +$productId = $_GET['id'] ?? ''; +$product = null; +$isEdit = false; +$errors = []; + +if ($productId) { + $product = db()->fetch("SELECT * FROM products WHERE product_id = :id", ['id' => $productId]); + if ($product) { + $isEdit = true; + $pageTitle = 'Edit Product'; + $product['images'] = json_decode($product['images'] ?? '[]', true); + $product['tags'] = json_decode($product['tags'] ?? '[]', true); + } +} + +if (!$product) { + $product = [ + 'product_id' => '', + 'name' => '', + 'description' => '', + 'price' => '', + 'sale_price' => '', + 'cost_price' => '', + 'sku' => '', + 'barcode' => '', + 'category' => '', + 'tags' => [], + 'images' => [], + 'stock' => 100, + 'low_stock_threshold' => 10, + 'weight' => '', + 'is_active' => 1, + 'is_featured' => 0 + ]; + $pageTitle = 'Add Product'; +} + +// Handle form submission +if ($_SERVER['REQUEST_METHOD'] === 'POST') { + $name = trim($_POST['name'] ?? ''); + $description = trim($_POST['description'] ?? ''); + $price = floatval($_POST['price'] ?? 0); + $salePrice = !empty($_POST['sale_price']) ? floatval($_POST['sale_price']) : null; + $costPrice = !empty($_POST['cost_price']) ? floatval($_POST['cost_price']) : null; + $sku = trim($_POST['sku'] ?? ''); + $barcode = trim($_POST['barcode'] ?? ''); + $category = trim($_POST['category'] ?? ''); + $stock = intval($_POST['stock'] ?? 0); + $lowStockThreshold = intval($_POST['low_stock_threshold'] ?? 10); + $weight = !empty($_POST['weight']) ? floatval($_POST['weight']) : null; + $isActive = isset($_POST['is_active']) ? 1 : 0; + $isFeatured = isset($_POST['is_featured']) ? 1 : 0; + $imageUrls = array_filter(array_map('trim', explode("\n", $_POST['image_urls'] ?? ''))); + + // Validate + if (empty($name)) $errors['name'] = 'Product name is required'; + if ($price <= 0) $errors['price'] = 'Price must be greater than 0'; + + if (empty($errors)) { + $data = [ + 'name' => $name, + 'description' => $description, + 'price' => $price, + 'sale_price' => $salePrice, + 'cost_price' => $costPrice, + 'sku' => $sku ?: null, + 'barcode' => $barcode ?: null, + 'category' => $category ?: null, + 'product_type_id' => trim($_POST['product_type_id'] ?? '') ?: null, + 'images' => json_encode($imageUrls), + 'stock' => $stock, + 'low_stock_threshold' => $lowStockThreshold, + 'weight' => $weight, + 'is_active' => $isActive, + 'is_featured' => $isFeatured + ]; + + if ($isEdit) { + db()->update('products', $data, 'product_id = :id', ['id' => $productId]); + setFlash('success', 'Product updated successfully'); + } else { + $data['product_id'] = generateId('prod_'); + db()->insert('products', $data); + setFlash('success', 'Product created successfully'); + } + + header('Location: /admin/products.php'); + exit; + } + + // Keep form values on error + $product = array_merge($product, $_POST); + $product['images'] = $imageUrls; +} + +// Get categories for dropdown +$categories = db()->fetchAll( + "SELECT DISTINCT category FROM products WHERE category IS NOT NULL AND category != '' ORDER BY category" +); +?> + + + + +
    + + Please fix the errors below +
    + + +
    +
    + +
    +
    +
    +

    Basic Information

    +
    +
    +
    + + + + + +
    + +
    + + +
    + +
    +
    + + +
    + +
    + + +
    +
    + + +
    +
    +
    +
    + +
    +
    +

    Pricing

    +
    +
    +
    +
    + + + + + +
    + +
    + + +
    +
    + +
    + + +
    +
    +
    + +
    +
    +

    Images

    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +

    Status

    +
    +
    +
    + +
    + +
    + +
    +
    +
    + +
    +
    +

    Inventory

    +
    +
    +
    + + +
    + +
    + + +
    +
    +
    + +
    +
    +

    Identifiers

    +
    +
    +
    + + +
    + +
    + + +
    +
    +
    + + +
    +
    + + + diff --git a/admin/product-types.php b/admin/product-types.php new file mode 100644 index 0000000..c3525b8 --- /dev/null +++ b/admin/product-types.php @@ -0,0 +1,163 @@ +$name,'slug'=>$slug,'description'=>$description,'is_active'=>$isActive]; + if ($action === 'update' && $typeId) { + db()->update('product_types', $data, 'type_id = :id', ['id' => $typeId]); + setFlash('success', 'Product type updated'); + } else { + $data['type_id'] = generateId('pt_'); + db()->insert('product_types', $data); + setFlash('success', 'Product type created'); + } + } + header('Location: /admin/product-types.php'); + exit; + } + + if ($action === 'delete' && !empty($_POST['type_id'])) { + db()->delete('product_types', 'type_id = :id', ['id' => $_POST['type_id']]); + setFlash('success', 'Product type deleted'); + header('Location: /admin/product-types.php'); + exit; + } +} + +$types = db()->fetchAll("SELECT * FROM product_types ORDER BY name ASC"); +?> + + + + +
    + + +
    + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameSlugDescriptionStatusActions
    No product types yet. Create one above.
    + + Active + + Hidden + + + +
    + + + +
    +
    +
    +
    + + + + + + diff --git a/admin/products.php b/admin/products.php new file mode 100644 index 0000000..844432c --- /dev/null +++ b/admin/products.php @@ -0,0 +1,290 @@ +delete('products', 'product_id = :id', ['id' => $_POST['product_id']]); + setFlash('success', 'Product deleted successfully'); + header('Location: /admin/products.php'); + exit; + } + + if ($action === 'bulk_delete' && !empty($_POST['product_ids'])) { + $ids = $_POST['product_ids']; + $placeholders = implode(',', array_fill(0, count($ids), '?')); + db()->query("DELETE FROM products WHERE product_id IN ($placeholders)", $ids); + setFlash('success', count($ids) . ' products deleted'); + header('Location: /admin/products.php'); + exit; + } + + if ($action === 'toggle_status' && !empty($_POST['product_id'])) { + $product = db()->fetch("SELECT is_active FROM products WHERE product_id = :id", ['id' => $_POST['product_id']]); + if ($product) { + db()->update('products', ['is_active' => !$product['is_active']], 'product_id = :id', ['id' => $_POST['product_id']]); + setFlash('success', 'Product status updated'); + } + header('Location: /admin/products.php'); + exit; + } +} + +// Filters +$search = $_GET['search'] ?? ''; +$category = $_GET['category'] ?? ''; +$status = $_GET['status'] ?? ''; +$page = max(1, intval($_GET['page'] ?? 1)); + +// Build query +$where = ['1=1']; +$params = []; + +if ($search) { + $where[] = '(name LIKE :search OR sku LIKE :search)'; + $params['search'] = '%' . $search . '%'; +} + +if ($category) { + $where[] = 'category = :category'; + $params['category'] = $category; +} + +if ($status === 'active') { + $where[] = 'is_active = 1'; +} elseif ($status === 'inactive') { + $where[] = 'is_active = 0'; +} elseif ($status === 'low_stock') { + $where[] = 'stock <= low_stock_threshold'; +} + +$whereClause = implode(' AND ', $where); + +// Get total and paginate +$totalProducts = db()->count('products', $whereClause, $params); +$pagination = paginate($totalProducts, $page, ADMIN_ITEMS_PER_PAGE); + +// Get products +$products = db()->fetchAll( + "SELECT * FROM products WHERE {$whereClause} ORDER BY created_at DESC LIMIT :limit OFFSET :offset", + array_merge($params, ['limit' => $pagination['per_page'], 'offset' => $pagination['offset']]) +); + +// Get categories +$categories = db()->fetchAll( + "SELECT DISTINCT category FROM products WHERE category IS NOT NULL AND category != '' ORDER BY category" +); +?> + + + + +
    + + +
    + + + +
    +
    +
    +
    + + +
    + +
    + + +
    + +
    + + +
    + + + + + Clear + +
    +
    +
    + + +
    +
    + products found + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + ImageProductSKUCategoryPriceStockStatusActions
    + No products found +
    + + + + + + + Featured + + + + + +
    + + + + +
    + + Out of Stock + + left + + + + + + Active + + Inactive + + + + + +
    + + + +
    +
    + + + +
    +
    +
    +
    + + + 1): ?> +
    + +
    + + + + + diff --git a/admin/reviews.php b/admin/reviews.php new file mode 100644 index 0000000..841f45b --- /dev/null +++ b/admin/reviews.php @@ -0,0 +1,281 @@ +update('reviews', ['is_approved' => 1], 'review_id = :id', ['id' => $reviewId]); + setFlash('success', 'Review approved'); + } + + if ($action === 'reject' && $reviewId) { + db()->update('reviews', ['is_approved' => 0], 'review_id = :id', ['id' => $reviewId]); + setFlash('success', 'Review rejected'); + } + + if ($action === 'update' && $reviewId) { + $rating = max(1, min(5, intval($_POST['rating'] ?? 5))); + $title = trim($_POST['title'] ?? ''); + $comment = trim($_POST['comment'] ?? ''); + db()->update('reviews', [ + 'rating' => $rating, + 'title' => $title ?: null, + 'comment' => $comment ?: null, + ], 'review_id = :id', ['id' => $reviewId]); + setFlash('success', 'Review updated'); + } + + if ($action === 'delete' && $reviewId) { + db()->delete('reviews', 'review_id = :id', ['id' => $reviewId]); + setFlash('success', 'Review deleted'); + } + + header('Location: /admin/reviews.php'); + exit; +} + +// Filters +$status = $_GET['status'] ?? ''; +$rating = $_GET['rating'] ?? ''; + +$where = ['1=1']; +$params = []; + +if ($status === 'pending') { + $where[] = 'is_approved = 0'; +} elseif ($status === 'approved') { + $where[] = 'is_approved = 1'; +} + +if ($rating) { + $where[] = 'rating = :rating'; + $params['rating'] = $rating; +} + +$whereClause = implode(' AND ', $where); + +$reviews = db()->fetchAll( + "SELECT r.*, p.name as product_name FROM reviews r + LEFT JOIN products p ON r.product_id = p.product_id + WHERE {$whereClause} ORDER BY r.created_at DESC LIMIT 100", + $params +); + +// Stats +$totalReviews = db()->count('reviews'); +$pendingReviews = db()->count('reviews', 'is_approved = 0'); +$avgRating = db()->fetch("SELECT AVG(rating) as avg FROM reviews WHERE is_approved = 1")['avg'] ?? 0; +?> + + + + +
    + + + +
    +
    +
    +
    +
    +
    Average Rating
    +
    +
    +
    +
    +
    +
    +
    Total Reviews
    +
    +
    +
    +
    +
    +
    +
    Pending Approval
    +
    +
    +
    + + +
    +
    +
    +
    + + +
    +
    + + +
    + + + Clear + +
    +
    +
    + + +
    + +
    +
    + No reviews found +
    +
    + + +
    +
    +
    +
    +
    + + + Verified Purchase + + + Pending + +
    +
    + on + • +
    +
    +
    + +
    + + + +
    + +
    + + + +
    + + +
    + + + +
    +
    +
    + +
    + + + +
    + + +

    + + +

    + +

    +
    +
    + + +
    + + + + + + + diff --git a/admin/settings.php b/admin/settings.php new file mode 100644 index 0000000..a194871 --- /dev/null +++ b/admin/settings.php @@ -0,0 +1,233 @@ + trim($_POST['store_name'] ?? ''), + 'email' => trim($_POST['store_email'] ?? ''), + 'phone' => trim($_POST['store_phone'] ?? ''), + 'address' => trim($_POST['store_address'] ?? ''), + 'currency' => $_POST['currency'] ?? 'USD', + 'timezone' => $_POST['timezone'] ?? 'America/New_York' + ]); + setFlash('success', 'Store settings updated'); + } + + if ($section === 'tax') { + setSetting('tax', [ + 'enabled' => isset($_POST['tax_enabled']), + 'rate' => floatval($_POST['tax_rate'] ?? 0), + 'included_in_price' => isset($_POST['tax_included']) + ]); + setFlash('success', 'Tax settings updated'); + } + + if ($section === 'checkout') { + setSetting('checkout', [ + 'guest_checkout' => isset($_POST['guest_checkout']), + 'require_phone' => isset($_POST['require_phone']), + 'order_notes' => isset($_POST['order_notes']), + 'terms_required' => isset($_POST['terms_required']), + 'terms_url' => trim($_POST['terms_url'] ?? '') + ]); + setFlash('success', 'Checkout settings updated'); + } + + header('Location: /admin/settings.php'); + exit; +} + +// Get current settings +$store = getSetting('store', [ + 'name' => "Tom's Java Jive", + 'email' => '', + 'phone' => '', + 'address' => '', + 'currency' => 'USD', + 'timezone' => 'America/New_York' +]); + +$tax = getSetting('tax', [ + 'enabled' => false, + 'rate' => 0, + 'included_in_price' => false +]); + +$checkout = getSetting('checkout', [ + 'guest_checkout' => true, + 'require_phone' => false, + 'order_notes' => true, + 'terms_required' => false, + 'terms_url' => '' +]); +?> + + + + +
    + + +
    + + + + +
    + +
    + +
    +
    +

    General Settings

    +
    +
    +
    + + +
    + +
    +
    + + +
    +
    + + +
    +
    + +
    + + +
    + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    + + +
    + +
    +
    +

    Tax Settings

    +
    +
    +
    + +
    + +
    + + +
    + +
    + +
    + + +
    +
    +
    + + +
    + +
    +
    +

    Checkout Settings

    +
    +
    +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + + +
    + + +
    +
    +
    +
    +
    + + diff --git a/admin/shipping.php b/admin/shipping.php new file mode 100644 index 0000000..de20dae --- /dev/null +++ b/admin/shipping.php @@ -0,0 +1,124 @@ + isset($_POST['flat_rate_enabled']), + 'flat_rate_amount' => floatval($_POST['flat_rate_amount'] ?? 0), + 'free_shipping_enabled' => isset($_POST['free_shipping_enabled']), + 'free_shipping_threshold' => floatval($_POST['free_shipping_threshold'] ?? 0), + 'local_pickup_enabled' => isset($_POST['local_pickup_enabled']), + 'processing_time' => trim($_POST['processing_time'] ?? '') + ]); + setFlash('success', 'Shipping settings updated'); + header('Location: /admin/shipping.php'); + exit; +} + +$shipping = getSetting('shipping', [ + 'flat_rate_enabled' => true, + 'flat_rate_amount' => 5.99, + 'free_shipping_enabled' => true, + 'free_shipping_threshold' => 50, + 'local_pickup_enabled' => false, + 'processing_time' => '1-2 business days' +]); +?> + + + + +
    + + +
    + + +
    +
    +
    +
    +

    Shipping Methods

    +
    +
    + +
    +
    + +
    +
    + +
    + $ + +
    +
    +
    + + +
    +
    + +
    +
    + +
    + $ + +
    +
    +
    + + +
    +
    + + Allow customers to pick up orders at your location +
    +
    + + +
    + + + Displayed to customers during checkout +
    + + +
    +
    +
    +
    +
    + + diff --git a/admin/splashes.php b/admin/splashes.php new file mode 100644 index 0000000..815c0d4 --- /dev/null +++ b/admin/splashes.php @@ -0,0 +1,410 @@ +insert('homepage_splashes', [ + 'splash_id' => generateId('spl_'), + 'icon' => trim($_POST['icon'] ?? 'fas fa-star'), + 'image_url' => trim($_POST['image_url'] ?? '') ?: null, + 'title' => $title, + 'description' => trim($_POST['description'] ?? '') ?: null, + 'sort_order' => intval($_POST['sort_order'] ?? 0), + 'is_active' => 1, + ]); + setFlash('success', 'Splash block created'); + } + } + + if ($action === 'update' && $splashId) { + $title = trim($_POST['title'] ?? ''); + if ($title) { + db()->update('homepage_splashes', [ + 'icon' => trim($_POST['icon'] ?? 'fas fa-star'), + 'image_url' => trim($_POST['image_url'] ?? '') ?: null, + 'title' => $title, + 'description' => trim($_POST['description'] ?? '') ?: null, + 'sort_order' => intval($_POST['sort_order'] ?? 0), + 'is_active' => isset($_POST['is_active']) ? 1 : 0, + ], 'splash_id = :id', ['id' => $splashId]); + setFlash('success', 'Splash block updated'); + } + } + + if ($action === 'delete' && $splashId) { + db()->delete('homepage_splashes', 'splash_id = :id', ['id' => $splashId]); + setFlash('success', 'Splash block deleted'); + } + + if ($action === 'reorder') { + $ids = json_decode($_POST['order'] ?? '[]', true); + foreach ($ids as $pos => $sid) { + db()->update('homepage_splashes', ['sort_order' => $pos + 1], + 'splash_id = :id', ['id' => $sid]); + } + echo json_encode(['ok' => true]); exit; + } + + header('Location: /admin/splashes.php'); exit; +} + +$splashes = db()->fetchAll( + "SELECT * FROM homepage_splashes ORDER BY sort_order ASC, id ASC" +); + +$iconOptions = [ + 'fas fa-leaf' => 'Leaf', + 'fas fa-fire' => 'Fire', + 'fas fa-truck' => 'Truck', + 'fas fa-heart' => 'Heart', + 'fas fa-star' => 'Star', + 'fas fa-coffee' => 'Coffee', + 'fas fa-mug-hot' => 'Mug Hot', + 'fas fa-seedling' => 'Seedling', + 'fas fa-shield-alt' => 'Shield', + 'fas fa-check-circle' => 'Check', + 'fas fa-gift' => 'Gift', + 'fas fa-globe' => 'Globe', + 'fas fa-award' => 'Award', + 'fas fa-smile' => 'Smile', + 'fas fa-bolt' => 'Bolt', + 'fas fa-recycle' => 'Recycle', + 'fas fa-hand-holding-heart'=> 'Care', + 'fas fa-crown' => 'Crown', + 'fas fa-gem' => 'Gem', + 'fas fa-thumbs-up' => 'Thumbs Up', +]; +?> + + + + +
    + + +
    +
    +

    + Drag rows to reorder — saves automatically. + block total. + Homepage scrolls horizontally when more than 4 are active. + Each block can show an icon or a custom image.

    +
    +
    + + +
    +

    Homepage Preview

    +
    +
    + +
    +
    + + + + + +
    +
    +
    +
    + +
    +
    +
    + + +
    +
    + +
    No splash blocks yet. Click Add Splash to get started.
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    VisualTitleDescriptionOrderStatusActions
    +
    + + + + + +
    +
    + + + Active' + : 'Hidden' ?> + + +
    + + + +
    +
    + +
    +
    + + + + + + + + + diff --git a/admin/upload-image.php b/admin/upload-image.php new file mode 100644 index 0000000..bc70e3b --- /dev/null +++ b/admin/upload-image.php @@ -0,0 +1,44 @@ + 'No file received']); + exit; +} + +$file = $_FILES['image']; +$allowedTypes = ['image/jpeg', 'image/png', 'image/gif', 'image/webp']; +$maxSize = 5 * 1024 * 1024; // 5MB + +if (!in_array($file['type'], $allowedTypes)) { + echo json_encode(['error' => 'Invalid file type. Use JPG, PNG, WebP, or GIF.']); + exit; +} + +if ($file['size'] > $maxSize) { + echo json_encode(['error' => 'File too large. Maximum 5MB.']); + exit; +} + +// Create upload directory +$uploadDir = __DIR__ . '/../uploads/products/'; +if (!is_dir($uploadDir)) { + mkdir($uploadDir, 0755, true); +} + +// Generate unique filename +$ext = pathinfo($file['name'], PATHINFO_EXTENSION); +$filename = 'product_' . time() . '_' . bin2hex(random_bytes(4)) . '.' . strtolower($ext); +$filepath = $uploadDir . $filename; + +if (move_uploaded_file($file['tmp_name'], $filepath)) { + $url = '/uploads/products/' . $filename; + echo json_encode(['success' => true, 'url' => $url]); +} else { + echo json_encode(['error' => 'Failed to save file. Check directory permissions.']); +} diff --git a/admin/users.php b/admin/users.php new file mode 100644 index 0000000..eb609c8 --- /dev/null +++ b/admin/users.php @@ -0,0 +1,267 @@ + isset($_POST['perm_dashboard']), + 'pos' => isset($_POST['perm_pos']), + 'products' => isset($_POST['perm_products']), + 'orders' => isset($_POST['perm_orders']), + 'customers' => isset($_POST['perm_customers']), + 'settings_payment' => isset($_POST['perm_settings']), + 'settings_shipping' => isset($_POST['perm_settings']), + 'settings_email' => isset($_POST['perm_settings']), + 'admin_management' => isset($_POST['perm_admin']) + ]; + + if (empty($email) || empty($name)) { + setFlash('error', 'Email and name are required'); + } else { + $data = [ + 'email' => strtolower($email), + 'name' => $name, + 'is_master' => $isMaster, + 'permissions' => json_encode($permissions) + ]; + + if ($action === 'update' && $userId) { + if (!empty($password)) { + $data['password_hash'] = hashPassword($password); + } + db()->update('admin_users', $data, 'user_id = :id', ['id' => $userId]); + setFlash('success', 'Admin user updated'); + } else { + if (empty($password)) { + setFlash('error', 'Password is required for new users'); + } else { + $existing = db()->fetch("SELECT id FROM admin_users WHERE email = :email", ['email' => strtolower($email)]); + if ($existing) { + setFlash('error', 'Email already exists'); + } else { + $data['user_id'] = generateId('admin_'); + $data['password_hash'] = hashPassword($password); + $data['is_admin'] = 1; + db()->insert('admin_users', $data); + setFlash('success', 'Admin user created'); + } + } + } + } + + header('Location: /admin/users.php'); + exit; + } + + if ($action === 'delete' && !empty($_POST['user_id'])) { + // Don't allow deleting self or last master + $user = db()->fetch("SELECT is_master FROM admin_users WHERE user_id = :id", ['id' => $_POST['user_id']]); + if ($user && $user['is_master']) { + $masterCount = db()->count('admin_users', 'is_master = 1'); + if ($masterCount <= 1) { + setFlash('error', 'Cannot delete the last master admin'); + header('Location: /admin/users.php'); + exit; + } + } + + db()->delete('admin_users', 'user_id = :id', ['id' => $_POST['user_id']]); + setFlash('success', 'Admin user deleted'); + header('Location: /admin/users.php'); + exit; + } +} + +$users = db()->fetchAll("SELECT * FROM admin_users ORDER BY is_master DESC, name ASC"); +?> + + + + +
    + + +
    + + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    NameEmailRoleCreatedActions
    + + + You + + + + Master Admin + + Admin + + + + +
    + + + +
    + +
    +
    +
    + + + + + + + diff --git a/api/cart.php b/api/cart.php new file mode 100644 index 0000000..990de9c --- /dev/null +++ b/api/cart.php @@ -0,0 +1,121 @@ + 'Product ID required'], 400); + } + + // Verify product exists and is active + $product = db()->fetch( + "SELECT product_id, stock FROM products WHERE product_id = :id AND is_active = 1", + ['id' => $productId] + ); + + if (!$product) { + jsonResponse(['error' => 'Product not found'], 404); + } + + if ($product['stock'] < $quantity) { + jsonResponse(['error' => 'Not enough stock'], 400); + } + + addToCart($productId, $quantity); + + jsonResponse([ + 'success' => true, + 'cart_count' => getCartCount(), + 'message' => 'Item added to cart' + ]); + break; + + case 'update': + $productId = $input['product_id'] ?? ''; + $quantity = intval($input['quantity'] ?? 0); + + if (!$productId) { + jsonResponse(['error' => 'Product ID required'], 400); + } + + updateCartItem($productId, $quantity); + + jsonResponse([ + 'success' => true, + 'cart_count' => getCartCount(), + 'subtotal' => getCartTotal() + ]); + break; + + case 'remove': + $productId = $input['product_id'] ?? ''; + + if (!$productId) { + jsonResponse(['error' => 'Product ID required'], 400); + } + + removeFromCart($productId); + + jsonResponse([ + 'success' => true, + 'cart_count' => getCartCount(), + 'subtotal' => getCartTotal() + ]); + break; + + case 'clear': + clearCart(); + jsonResponse(['success' => true, 'cart_count' => 0]); + break; + + case 'get': + $cart = getCart(); + $items = []; + $subtotal = 0; + + foreach ($cart as $productId => $quantity) { + $product = db()->fetch( + "SELECT product_id, name, price, sale_price, stock, images FROM products WHERE product_id = :id", + ['id' => $productId] + ); + + if ($product) { + $images = json_decode($product['images'] ?? '[]', true); + $unitPrice = $product['sale_price'] ?? $product['price']; + $total = $unitPrice * $quantity; + $subtotal += $total; + + $items[] = [ + 'product_id' => $product['product_id'], + 'name' => $product['name'], + 'price' => $unitPrice, + 'quantity' => $quantity, + 'total' => $total, + 'image' => !empty($images) ? $images[0] : null, + 'stock' => $product['stock'] + ]; + } + } + + jsonResponse([ + 'items' => $items, + 'count' => getCartCount(), + 'subtotal' => $subtotal + ]); + break; + + default: + jsonResponse(['error' => 'Invalid action'], 400); +} diff --git a/api/create-checkout-session.php b/api/create-checkout-session.php new file mode 100644 index 0000000..4406b34 --- /dev/null +++ b/api/create-checkout-session.php @@ -0,0 +1,119 @@ + 'Method not allowed'], 405); +} + +$input = json_decode(file_get_contents('php://input'), true); +$orderId = $input['order_id'] ?? ''; +$originUrl = $input['origin_url'] ?? ''; + +if (empty($orderId)) { + jsonResponse(['error' => 'Order ID required'], 400); +} + +if (empty($originUrl)) { + $originUrl = SITE_URL; +} + +// Get order +$order = db()->fetch( + "SELECT * FROM orders WHERE order_id = :id", + ['id' => $orderId] +); + +if (!$order) { + jsonResponse(['error' => 'Order not found'], 404); +} + +if ($order['payment_status'] === 'paid') { + jsonResponse(['error' => 'Order already paid'], 400); +} + +// Check if Stripe is configured +if (!isStripeConfigured()) { + // Demo mode - simulate successful payment + db()->update('orders', + [ + 'payment_status' => 'paid', + 'order_status' => 'confirmed', + 'stripe_payment_intent' => 'demo_' . bin2hex(random_bytes(8)) + ], + 'order_id = :id', + ['id' => $orderId] + ); + + jsonResponse([ + 'demo_mode' => true, + 'message' => 'Payment simulated (Stripe not configured)', + 'redirect' => '/order-confirmation.php?order=' . $orderId + ]); +} + +// Build line items from order +$items = json_decode($order['items'], true) ?? []; +$lineItems = []; + +foreach ($items as $item) { + $lineItems[] = [ + 'name' => $item['name'], + 'price' => floatval($item['price']), + 'quantity' => intval($item['quantity']), + 'currency' => 'usd' + ]; +} + +// Add shipping if applicable +if ($order['shipping_cost'] > 0) { + $lineItems[] = [ + 'name' => 'Shipping', + 'price' => floatval($order['shipping_cost']), + 'quantity' => 1, + 'currency' => 'usd' + ]; +} + +// Build success/cancel URLs +$successUrl = rtrim($originUrl, '/') . '/order-confirmation.php?order=' . $orderId . '&session_id={CHECKOUT_SESSION_ID}'; +$cancelUrl = rtrim($originUrl, '/') . '/payment.php?order=' . $orderId . '&cancelled=1'; + +try { + $session = stripe()->createCheckoutSession( + $lineItems, + $successUrl, + $cancelUrl, + [ + 'customer_email' => $order['customer_email'], + 'metadata' => [ + 'order_id' => $orderId, + 'order_number' => $order['order_number'] + ] + ] + ); + + // Store checkout session ID + db()->update('orders', + ['stripe_checkout_session' => $session['id']], + 'order_id = :id', + ['id' => $orderId] + ); + + jsonResponse([ + 'url' => $session['url'], + 'session_id' => $session['id'] + ]); + +} catch (Exception $e) { + error_log('Stripe Checkout error: ' . $e->getMessage()); + jsonResponse(['error' => 'Failed to create checkout session: ' . $e->getMessage()], 500); +} diff --git a/api/create-payment-intent.php b/api/create-payment-intent.php new file mode 100644 index 0000000..ae8ca5a --- /dev/null +++ b/api/create-payment-intent.php @@ -0,0 +1,87 @@ + 'Method not allowed'], 405); +} + +$input = json_decode(file_get_contents('php://input'), true); +$orderId = $input['order_id'] ?? ''; + +if (empty($orderId)) { + jsonResponse(['error' => 'Order ID required'], 400); +} + +// Get order +$order = db()->fetch( + "SELECT * FROM orders WHERE order_id = :id", + ['id' => $orderId] +); + +if (!$order) { + jsonResponse(['error' => 'Order not found'], 404); +} + +if ($order['payment_status'] === 'paid') { + jsonResponse(['error' => 'Order already paid'], 400); +} + +// Check if Stripe is configured +if (!isStripeConfigured()) { + // Demo mode - simulate successful payment + db()->update('orders', + [ + 'payment_status' => 'paid', + 'order_status' => 'confirmed', + 'stripe_payment_intent' => 'demo_' . bin2hex(random_bytes(8)) + ], + 'order_id = :id', + ['id' => $orderId] + ); + + jsonResponse([ + 'demo_mode' => true, + 'message' => 'Payment simulated (Stripe not configured)', + 'redirect' => '/order-confirmation.php?order=' . $orderId + ]); +} + +// Create Stripe Payment Intent using cURL-based API +try { + $paymentIntent = stripe()->createPaymentIntent( + $order['total'], + 'usd', + [ + 'metadata' => [ + 'order_id' => $orderId, + 'order_number' => $order['order_number'] + ], + 'receipt_email' => $order['customer_email'], + 'description' => 'Order #' . $order['order_number'] + ] + ); + + // Store payment intent ID + db()->update('orders', + ['stripe_payment_intent' => $paymentIntent['id']], + 'order_id = :id', + ['id' => $orderId] + ); + + jsonResponse([ + 'client_secret' => $paymentIntent['client_secret'] + ]); + +} catch (Exception $e) { + error_log('Stripe error: ' . $e->getMessage()); + jsonResponse(['error' => 'Payment initialization failed: ' . $e->getMessage()], 500); +} diff --git a/api/delete-account.php b/api/delete-account.php new file mode 100644 index 0000000..83c31c3 --- /dev/null +++ b/api/delete-account.php @@ -0,0 +1,53 @@ +query("START TRANSACTION"); + + // Delete wallet transactions + db()->query("DELETE FROM wallet_transactions WHERE customer_id = :id", ['id' => $customer['customer_id']]); + + // Delete reviews + db()->query("DELETE FROM reviews WHERE customer_id = :id", ['id' => $customer['customer_id']]); + + // Delete wishlist + db()->query("DELETE FROM wishlist WHERE customer_id = :id", ['id' => $customer['customer_id']]); + + // Anonymize orders (keep for records but remove personal info) + db()->query( + "UPDATE orders SET customer_name = 'Deleted User', customer_email = 'deleted@example.com', + shipping_address = NULL, billing_address = NULL WHERE customer_id = :id", + ['id' => $customer['customer_id']] + ); + + // Remove from email subscribers + db()->query("DELETE FROM email_subscribers WHERE email = :email", ['email' => $customer['email']]); + + // Delete customer + db()->query("DELETE FROM customers WHERE customer_id = :id", ['id' => $customer['customer_id']]); + + db()->query("COMMIT"); + + // Logout + CustomerAuth::logout(); + + setFlash('success', 'Your account has been deleted. We\'re sorry to see you go!'); + redirect('/'); + +} catch (Exception $e) { + db()->query("ROLLBACK"); + setFlash('error', 'Failed to delete account. Please contact support.'); + redirect('/account/profile.php'); +} diff --git a/api/loyalty.php b/api/loyalty.php new file mode 100644 index 0000000..4224f3d --- /dev/null +++ b/api/loyalty.php @@ -0,0 +1,94 @@ + 'Authentication required'], 401); +} + +$customer = CustomerAuth::getUser(); +$method = $_SERVER['REQUEST_METHOD']; +$input = json_decode(file_get_contents('php://input'), true); +$action = $input['action'] ?? $_GET['action'] ?? ''; + +switch ($action) { + case 'status': + // Get customer's loyalty status + $status = loyalty()->getCustomerTier($customer['customer_id']); + $conversion = loyalty()->getConversionInfo(); + + jsonResponse([ + 'tier' => $status['tier'], + 'tier_name' => $status['info']['name'], + 'tier_color' => $status['info']['color'], + 'tier_icon' => $status['info']['icon'], + 'benefits' => $status['info']['benefits'], + 'multiplier' => $status['info']['multiplier'], + 'points' => $status['points'], + 'lifetime_points' => $status['lifetime_points'], + 'points_value' => $status['points'] * $conversion['points_value'], + 'next_tier' => $status['next_tier'], + 'next_tier_name' => $status['next_tier_info']['name'] ?? null, + 'points_to_next' => $status['points_to_next'], + 'progress_percent' => $status['progress_percent'], + 'conversion' => $conversion + ]); + break; + + case 'history': + // Get loyalty transaction history + $limit = min(50, intval($_GET['limit'] ?? 20)); + $history = loyalty()->getHistory($customer['customer_id'], $limit); + + jsonResponse(['transactions' => $history]); + break; + + case 'redeem': + // Redeem points for credit + if ($method !== 'POST') { + jsonResponse(['error' => 'POST required'], 405); + } + + $points = intval($input['points'] ?? 0); + + if ($points < 100) { + jsonResponse(['error' => 'Minimum 100 points required for redemption'], 400); + } + + $result = loyalty()->redeemPoints($customer['customer_id'], $points); + + if ($result['success']) { + jsonResponse([ + 'success' => true, + 'points_redeemed' => $result['points_redeemed'], + 'credit_value' => $result['credit_value'], + 'new_points_balance' => $result['new_points_balance'], + 'new_wallet_balance' => $result['new_wallet_balance'], + 'message' => 'Successfully redeemed ' . $points . ' points for ' . formatCurrency($result['credit_value']) + ]); + } else { + jsonResponse(['error' => $result['error']], 400); + } + break; + + case 'tiers': + // Get all tier information + $tiers = loyalty()->getTiers(); + $conversion = loyalty()->getConversionInfo(); + + jsonResponse([ + 'tiers' => $tiers, + 'conversion' => $conversion + ]); + break; + + default: + jsonResponse(['error' => 'Invalid action'], 400); +} diff --git a/api/orders.php b/api/orders.php new file mode 100644 index 0000000..4fef865 --- /dev/null +++ b/api/orders.php @@ -0,0 +1,174 @@ +fetch( + "SELECT * FROM orders WHERE order_id = :id", + ['id' => $orderId] + ); + + if (!$order) { + jsonResponse(['error' => 'Order not found'], 404); + } + + $order['items'] = json_decode($order['items'], true); + $order['shipping_address'] = json_decode($order['shipping_address'], true); + unset($order['id']); + + jsonResponse($order); + } elseif ($orderNumber) { + $email = $_GET['email'] ?? ''; + + $order = db()->fetch( + "SELECT * FROM orders WHERE order_number = :num AND customer_email = :email", + ['num' => $orderNumber, 'email' => strtolower($email)] + ); + + if (!$order) { + jsonResponse(['error' => 'Order not found'], 404); + } + + $order['items'] = json_decode($order['items'], true); + $order['shipping_address'] = json_decode($order['shipping_address'], true); + unset($order['id']); + + jsonResponse($order); + } else { + // List orders (admin only or customer's own) + $customer = CustomerAuth::getUser(); + + if ($customer) { + $orders = db()->fetchAll( + "SELECT order_id, order_number, total, payment_status, order_status, created_at + FROM orders WHERE customer_id = :cid ORDER BY created_at DESC LIMIT 50", + ['cid' => $customer['customer_id']] + ); + } else { + jsonResponse(['error' => 'Authentication required'], 401); + } + + jsonResponse(['orders' => $orders]); + } + break; + + case 'POST': + // Update order status (admin) + if ($action === 'update_status') { + // Admin check would go here + $orderId = $input['order_id'] ?? ''; + $status = $input['status'] ?? ''; + $trackingNumber = $input['tracking_number'] ?? null; + + if (empty($orderId) || empty($status)) { + jsonResponse(['error' => 'Order ID and status required'], 400); + } + + $validStatuses = ['pending', 'confirmed', 'processing', 'shipped', 'delivered', 'cancelled', 'refunded']; + if (!in_array($status, $validStatuses)) { + jsonResponse(['error' => 'Invalid status'], 400); + } + + $updateData = ['order_status' => $status]; + if ($trackingNumber) { + $updateData['tracking_number'] = $trackingNumber; + } + + db()->update('orders', $updateData, 'order_id = :id', ['id' => $orderId]); + + // If status is shipped or delivered, send email + $order = db()->fetch("SELECT * FROM orders WHERE order_id = :id", ['id' => $orderId]); + if ($order && in_array($status, ['shipped', 'delivered'])) { + sendStatusUpdateEmail($order, $status, $trackingNumber); + } + + jsonResponse(['success' => true, 'status' => $status]); + } + + // Cancel order + if ($action === 'cancel') { + $orderId = $input['order_id'] ?? ''; + $customer = CustomerAuth::getUser(); + + if (!$customer) { + jsonResponse(['error' => 'Authentication required'], 401); + } + + $order = db()->fetch( + "SELECT * FROM orders WHERE order_id = :id AND customer_id = :cid", + ['id' => $orderId, 'cid' => $customer['customer_id']] + ); + + if (!$order) { + jsonResponse(['error' => 'Order not found'], 404); + } + + if (!in_array($order['order_status'], ['pending', 'confirmed'])) { + jsonResponse(['error' => 'This order cannot be cancelled'], 400); + } + + db()->update('orders', + ['order_status' => 'cancelled'], + 'order_id = :id', + ['id' => $orderId] + ); + + // Restore stock + $items = json_decode($order['items'], true) ?? []; + foreach ($items as $item) { + db()->query( + "UPDATE products SET stock = stock + :qty WHERE product_id = :id", + ['qty' => $item['quantity'], 'id' => $item['product_id']] + ); + } + + jsonResponse(['success' => true]); + } + + jsonResponse(['error' => 'Invalid action'], 400); + break; + + default: + jsonResponse(['error' => 'Method not allowed'], 405); +} + +function sendStatusUpdateEmail($order, $status, $trackingNumber = null) { + $statusMessages = [ + 'shipped' => 'Your order has been shipped!', + 'delivered' => 'Your order has been delivered!' + ]; + + $tracking = $trackingNumber ? "

    Tracking #: {$trackingNumber}

    " : ''; + + $html = << +
    +

    Tom's Java Jive

    +
    +
    +

    {$statusMessages[$status]}

    +

    Hi {$order['customer_name']},

    +

    Order #{$order['order_number']} has been updated to: {$status}

    + {$tracking} +
    +
    + HTML; + + sendEmail($order['customer_email'], "Order Update - #{$order['order_number']}", $html); +} diff --git a/api/payment-status.php b/api/payment-status.php new file mode 100644 index 0000000..4e97c76 --- /dev/null +++ b/api/payment-status.php @@ -0,0 +1,136 @@ + 'Method not allowed'], 405); +} + +$orderId = $_GET['order_id'] ?? ''; +$sessionId = $_GET['session_id'] ?? ''; + +if (empty($orderId) && empty($sessionId)) { + jsonResponse(['error' => 'Order ID or Session ID required'], 400); +} + +// Get order by ID or session +if (!empty($orderId)) { + $order = db()->fetch( + "SELECT * FROM orders WHERE order_id = :id", + ['id' => $orderId] + ); +} else { + $order = db()->fetch( + "SELECT * FROM orders WHERE stripe_checkout_session = :session OR stripe_payment_intent = :session", + ['session' => $sessionId] + ); +} + +if (!$order) { + jsonResponse(['error' => 'Order not found'], 404); +} + +// If already marked as paid, return success +if ($order['payment_status'] === 'paid') { + jsonResponse([ + 'status' => 'complete', + 'payment_status' => 'paid', + 'order_id' => $order['order_id'], + 'order_number' => $order['order_number'], + 'redirect' => '/order-confirmation.php?order=' . $order['order_id'] + ]); +} + +// Check if Stripe is configured +if (!isStripeConfigured()) { + jsonResponse([ + 'status' => 'demo_mode', + 'payment_status' => $order['payment_status'], + 'message' => 'Stripe not configured - running in demo mode' + ]); +} + +try { + // Check with Stripe + if (!empty($order['stripe_checkout_session'])) { + // Check checkout session status + $session = stripe()->getCheckoutSession($order['stripe_checkout_session']); + + if ($session['payment_status'] === 'paid') { + // Update order + db()->update('orders', + [ + 'payment_status' => 'paid', + 'order_status' => 'confirmed', + 'stripe_payment_intent' => $session['payment_intent'] ?? null + ], + 'order_id = :id', + ['id' => $order['order_id']] + ); + + jsonResponse([ + 'status' => 'complete', + 'payment_status' => 'paid', + 'order_id' => $order['order_id'], + 'order_number' => $order['order_number'], + 'redirect' => '/order-confirmation.php?order=' . $order['order_id'] + ]); + } + + jsonResponse([ + 'status' => $session['status'], + 'payment_status' => $session['payment_status'] + ]); + + } elseif (!empty($order['stripe_payment_intent'])) { + // Check payment intent status + $paymentIntent = stripe()->getPaymentIntent($order['stripe_payment_intent']); + + if ($paymentIntent['status'] === 'succeeded') { + // Update order + db()->update('orders', + [ + 'payment_status' => 'paid', + 'order_status' => 'confirmed' + ], + 'order_id = :id', + ['id' => $order['order_id']] + ); + + jsonResponse([ + 'status' => 'complete', + 'payment_status' => 'paid', + 'order_id' => $order['order_id'], + 'order_number' => $order['order_number'], + 'redirect' => '/order-confirmation.php?order=' . $order['order_id'] + ]); + } + + jsonResponse([ + 'status' => $paymentIntent['status'], + 'payment_status' => 'pending' + ]); + } + + // No Stripe reference found + jsonResponse([ + 'status' => 'pending', + 'payment_status' => $order['payment_status'] + ]); + +} catch (Exception $e) { + error_log('Payment status check error: ' . $e->getMessage()); + jsonResponse([ + 'status' => 'error', + 'payment_status' => $order['payment_status'], + 'error' => 'Failed to check payment status' + ]); +} diff --git a/api/pos-order.php b/api/pos-order.php new file mode 100644 index 0000000..398dc43 --- /dev/null +++ b/api/pos-order.php @@ -0,0 +1,191 @@ + 'Method not allowed'], 405); +} + +$input = json_decode(file_get_contents('php://input'), true); + +if (empty($input['items']) || !is_array($input['items'])) { + jsonResponse(['error' => 'No items provided'], 400); +} + +$items = $input['items']; +$paymentMethod = $input['payment_method'] ?? 'cash'; +$notes = $input['notes'] ?? ''; +$customerId = $input['customer_id'] ?? null; +$customerEmail = $input['customer_email'] ?? null; +$discountAmount = floatval($input['discount'] ?? 0); +$couponCode = $input['coupon_code'] ?? null; + +// Calculate totals +$subtotal = 0; +$orderItems = []; + +foreach ($items as $item) { + // Verify product exists and has stock + $product = db()->fetch( + "SELECT product_id, name, price, sale_price, stock FROM products WHERE product_id = :id AND is_active = 1", + ['id' => $item['product_id']] + ); + + if (!$product) { + jsonResponse(['error' => 'Product not found: ' . $item['name']], 400); + } + + if ($product['stock'] < $item['quantity']) { + jsonResponse(['error' => 'Insufficient stock for: ' . $product['name']], 400); + } + + $price = $product['sale_price'] ?? $product['price']; + $lineTotal = $price * $item['quantity']; + $subtotal += $lineTotal; + + $orderItems[] = [ + 'product_id' => $product['product_id'], + 'name' => $product['name'], + 'price' => $price, + 'quantity' => $item['quantity'], + 'total' => $lineTotal + ]; +} + +// Apply coupon if provided +$couponDiscount = 0; +if ($couponCode) { + $coupon = db()->fetch( + "SELECT * FROM coupons WHERE code = :code AND is_active = 1 + AND (starts_at IS NULL OR starts_at <= NOW()) + AND (expires_at IS NULL OR expires_at > NOW()) + AND (max_uses IS NULL OR times_used < max_uses)", + ['code' => strtoupper($couponCode)] + ); + + if ($coupon) { + if ($coupon['min_order_amount'] && $subtotal < $coupon['min_order_amount']) { + // Coupon minimum not met, ignore + } else { + if ($coupon['discount_type'] === 'percentage') { + $couponDiscount = $subtotal * ($coupon['discount_value'] / 100); + } else { + $couponDiscount = min($coupon['discount_value'], $subtotal); + } + + // Update coupon usage + db()->query("UPDATE coupons SET times_used = times_used + 1 WHERE coupon_id = :id", + ['id' => $coupon['coupon_id']]); + } + } +} + +// Calculate final total +$discount = $discountAmount + $couponDiscount; +$taxRate = 0; // Adjust based on settings +$tax = ($subtotal - $discount) * $taxRate; +$total = $subtotal - $discount + $tax; + +// Handle wallet payment +$walletUsed = 0; +if ($paymentMethod === 'wallet' && $customerId) { + $customer = db()->fetch( + "SELECT wallet_balance FROM customers WHERE customer_id = :id", + ['id' => $customerId] + ); + + if (!$customer || $customer['wallet_balance'] < $total) { + jsonResponse(['error' => 'Insufficient wallet balance'], 400); + } + + $walletUsed = $total; + + // Deduct from wallet + db()->query( + "UPDATE customers SET wallet_balance = wallet_balance - :amount WHERE customer_id = :id", + ['amount' => $walletUsed, 'id' => $customerId] + ); + + // Log wallet transaction + $newBalance = $customer['wallet_balance'] - $walletUsed; + db()->insert('wallet_transactions', [ + 'transaction_id' => generateId('wt_'), + 'customer_id' => $customerId, + 'amount' => -$walletUsed, + 'balance_after' => $newBalance, + 'type' => 'purchase', + 'description' => 'POS Purchase' + ]); +} + +// Generate order +$orderId = generateId('ord_'); +$orderNumber = generateOrderNumber(); + +try { + // Create order + db()->insert('orders', [ + 'order_id' => $orderId, + 'order_number' => $orderNumber, + 'customer_id' => $customerId, + 'customer_email' => $customerEmail ?? 'pos@store.local', + 'customer_name' => $input['customer_name'] ?? 'POS Customer', + 'items' => json_encode($orderItems), + 'subtotal' => $subtotal, + 'tax' => $tax, + 'discount' => $discount, + 'wallet_amount_used' => $walletUsed, + 'total' => $total, + 'payment_method' => $paymentMethod, + 'payment_status' => 'paid', + 'order_status' => 'confirmed', + 'notes' => $notes, + 'is_pos_order' => 1 + ]); + + // Insert order items + foreach ($orderItems as $item) { + db()->insert('order_items', [ + 'order_id' => $orderId, + 'product_id' => $item['product_id'], + 'name' => $item['name'], + 'price' => $item['price'], + 'quantity' => $item['quantity'], + 'total' => $item['total'] + ]); + + // Update stock + db()->query( + "UPDATE products SET stock = stock - :qty WHERE product_id = :id", + ['qty' => $item['quantity'], 'id' => $item['product_id']] + ); + } + + // Award reward points if customer + if ($customerId) { + $pointsEarned = floor($total); // 1 point per dollar + db()->query( + "UPDATE customers SET reward_points = reward_points + :points WHERE customer_id = :id", + ['points' => $pointsEarned, 'id' => $customerId] + ); + } + + jsonResponse([ + 'success' => true, + 'order_id' => $orderId, + 'order_number' => $orderNumber, + 'total' => $total, + 'items' => $orderItems + ]); + +} catch (Exception $e) { + jsonResponse(['error' => 'Failed to create order: ' . $e->getMessage()], 500); +} diff --git a/api/products.php b/api/products.php new file mode 100644 index 0000000..be9abae --- /dev/null +++ b/api/products.php @@ -0,0 +1,93 @@ +fetch( + "SELECT * FROM products WHERE product_id = :id AND is_active = 1", + ['id' => $productId] + ); + + if (!$product) { + jsonResponse(['error' => 'Product not found'], 404); + } + + $product['images'] = json_decode($product['images'] ?? '[]', true); + $product['tags'] = json_decode($product['tags'] ?? '[]', true); + unset($product['id']); + + // Get reviews + $reviews = db()->fetchAll( + "SELECT review_id, customer_name, rating, title, comment, is_verified_purchase, created_at + FROM reviews WHERE product_id = :id AND is_approved = 1 ORDER BY created_at DESC", + ['id' => $productId] + ); + + $product['reviews'] = $reviews; + $product['average_rating'] = !empty($reviews) + ? round(array_sum(array_column($reviews, 'rating')) / count($reviews), 1) + : 0; + + jsonResponse($product); + } else { + // Get products list + $category = $_GET['category'] ?? ''; + $search = $_GET['search'] ?? ''; + $featured = $_GET['featured'] ?? ''; + $limit = min(100, intval($_GET['limit'] ?? 20)); + $offset = intval($_GET['offset'] ?? 0); + + $where = ['is_active = 1']; + $params = []; + + if ($category) { + $where[] = 'category = :category'; + $params['category'] = $category; + } + + if ($search) { + $where[] = '(name LIKE :search OR description LIKE :search)'; + $params['search'] = '%' . $search . '%'; + } + + if ($featured === '1') { + $where[] = 'is_featured = 1'; + } + + $whereClause = implode(' AND ', $where); + + $products = db()->fetchAll( + "SELECT product_id, name, description, price, sale_price, category, images, stock, is_featured + FROM products WHERE {$whereClause} + ORDER BY is_featured DESC, created_at DESC + LIMIT :limit OFFSET :offset", + array_merge($params, ['limit' => $limit, 'offset' => $offset]) + ); + + foreach ($products as &$p) { + $p['images'] = json_decode($p['images'] ?? '[]', true); + } + + $total = db()->count('products', $whereClause, $params); + + jsonResponse([ + 'products' => $products, + 'total' => $total, + 'limit' => $limit, + 'offset' => $offset + ]); + } +} + +jsonResponse(['error' => 'Method not allowed'], 405); diff --git a/api/push-subscribe.php b/api/push-subscribe.php new file mode 100644 index 0000000..ca1c219 --- /dev/null +++ b/api/push-subscribe.php @@ -0,0 +1,83 @@ + 'Invalid subscription data'], 400); + } + + $customerId = null; + if (CustomerAuth::isLoggedIn()) { + $customerId = CustomerAuth::getUser()['customer_id']; + } + + // Check if subscription already exists + $existing = db()->fetch( + "SELECT id FROM push_subscriptions WHERE endpoint = :endpoint", + ['endpoint' => $endpoint] + ); + + if ($existing) { + // Update existing + db()->query( + "UPDATE push_subscriptions SET + customer_id = :cid, p256dh_key = :p256dh, auth_key = :auth, + is_active = 1, updated_at = NOW() + WHERE endpoint = :endpoint", + ['cid' => $customerId, 'p256dh' => $p256dh, 'auth' => $auth, 'endpoint' => $endpoint] + ); + } else { + // Create new + db()->insert('push_subscriptions', [ + 'customer_id' => $customerId, + 'endpoint' => $endpoint, + 'p256dh_key' => $p256dh, + 'auth_key' => $auth, + 'is_active' => 1 + ]); + } + + jsonResponse(['success' => true, 'message' => 'Subscribed to notifications']); + break; + + case 'DELETE': + // Unsubscribe + $endpoint = $input['endpoint'] ?? ''; + + if (empty($endpoint)) { + jsonResponse(['error' => 'Endpoint required'], 400); + } + + db()->query( + "UPDATE push_subscriptions SET is_active = 0 WHERE endpoint = :endpoint", + ['endpoint' => $endpoint] + ); + + jsonResponse(['success' => true, 'message' => 'Unsubscribed from notifications']); + break; + + case 'GET': + // Get VAPID public key + require_once __DIR__ . '/../includes/push.php'; + jsonResponse(['publicKey' => pushNotify()->getPublicKey()]); + break; + + default: + jsonResponse(['error' => 'Method not allowed'], 405); +} diff --git a/api/redeem-gift-card.php b/api/redeem-gift-card.php new file mode 100644 index 0000000..eed231c --- /dev/null +++ b/api/redeem-gift-card.php @@ -0,0 +1,97 @@ + 'Method not allowed'], 405); +} + +if (!CustomerAuth::isLoggedIn()) { + jsonResponse(['error' => 'Please log in to redeem a gift card'], 401); +} + +$customer = CustomerAuth::getFullUser(); +$input = json_decode(file_get_contents('php://input'), true); + +$code = strtoupper(str_replace(['-', ' '], '', trim($input['code'] ?? ''))); + +if (empty($code) || strlen($code) < 8) { + jsonResponse(['error' => 'Invalid gift card code'], 400); +} + +// Find gift card +$giftCard = db()->fetch( + "SELECT * FROM gift_cards WHERE code = :code AND is_active = 1", + ['code' => $code] +); + +if (!$giftCard) { + jsonResponse(['error' => 'Gift card not found or already used'], 404); +} + +if ($giftCard['balance'] <= 0) { + jsonResponse(['error' => 'This gift card has no remaining balance'], 400); +} + +if ($giftCard['expires_at'] && strtotime($giftCard['expires_at']) < time()) { + jsonResponse(['error' => 'This gift card has expired'], 400); +} + +$amount = $giftCard['balance']; + +try { + // Start transaction + db()->query("START TRANSACTION"); + + // Update gift card balance to 0 + db()->query( + "UPDATE gift_cards SET balance = 0, is_active = 0, updated_at = NOW() WHERE gift_card_id = :id", + ['id' => $giftCard['gift_card_id']] + ); + + // Log gift card transaction + db()->insert('gift_card_transactions', [ + 'gift_card_id' => $giftCard['gift_card_id'], + 'amount' => -$amount, + 'balance_after' => 0, + 'type' => 'redeem', + 'description' => 'Redeemed by customer: ' . $customer['email'] + ]); + + // Add to customer wallet + $newWalletBalance = ($customer['wallet_balance'] ?? 0) + $amount; + + db()->query( + "UPDATE customers SET wallet_balance = :balance, updated_at = NOW() WHERE customer_id = :id", + ['balance' => $newWalletBalance, 'id' => $customer['customer_id']] + ); + + // Log wallet transaction + db()->insert('wallet_transactions', [ + 'transaction_id' => generateId('wt_'), + 'customer_id' => $customer['customer_id'], + 'amount' => $amount, + 'balance_after' => $newWalletBalance, + 'type' => 'gift_card', + 'description' => 'Gift card redeemed: ' . $code + ]); + + db()->query("COMMIT"); + + jsonResponse([ + 'success' => true, + 'amount' => $amount, + 'new_balance' => $newWalletBalance, + 'message' => formatCurrency($amount) . ' has been added to your wallet!' + ]); + +} catch (Exception $e) { + db()->query("ROLLBACK"); + jsonResponse(['error' => 'Failed to redeem gift card. Please try again.'], 500); +} diff --git a/api/search-customers.php b/api/search-customers.php new file mode 100644 index 0000000..e52bbd3 --- /dev/null +++ b/api/search-customers.php @@ -0,0 +1,25 @@ +fetchAll( + "SELECT customer_id, email, name, phone, wallet_balance, reward_points + FROM customers + WHERE (email LIKE :q OR name LIKE :q OR phone LIKE :q) AND is_active = 1 + ORDER BY name ASC + LIMIT 20", + ['q' => '%' . $query . '%'] +); + +jsonResponse($customers); diff --git a/api/submit-review.php b/api/submit-review.php new file mode 100644 index 0000000..cbb54be --- /dev/null +++ b/api/submit-review.php @@ -0,0 +1,66 @@ + 'Method not allowed'], 405); +} + +if (!CustomerAuth::isLoggedIn()) { + jsonResponse(['error' => 'Please log in to submit a review'], 401); +} + +$customer = CustomerAuth::getFullUser(); +$input = json_decode(file_get_contents('php://input'), true); + +$productId = $input['product_id'] ?? ''; +$rating = intval($input['rating'] ?? 0); +$title = trim($input['title'] ?? ''); +$content = trim($input['content'] ?? ''); + +if (empty($productId) || $rating < 1 || $rating > 5 || empty($content)) { + jsonResponse(['error' => 'Invalid input. Rating and review content are required.'], 400); +} + +// Check if product exists +$product = db()->fetch("SELECT product_id FROM products WHERE product_id = :id", ['id' => $productId]); +if (!$product) { + jsonResponse(['error' => 'Product not found'], 404); +} + +// Check if already reviewed +$existingReview = db()->fetch( + "SELECT review_id FROM reviews WHERE customer_id = :cid AND product_id = :pid", + ['cid' => $customer['customer_id'], 'pid' => $productId] +); + +if ($existingReview) { + jsonResponse(['error' => 'You have already reviewed this product'], 400); +} + +// Create review +$reviewId = generateId('rev_'); + +db()->insert('reviews', [ + 'review_id' => $reviewId, + 'product_id' => $productId, + 'customer_id' => $customer['customer_id'], + 'customer_name' => $customer['name'] ?? explode('@', $customer['email'])[0], + 'customer_email' => $customer['email'], + 'rating' => $rating, + 'title' => $title, + 'content' => $content, + 'status' => 'pending' // Reviews require admin approval +]); + +jsonResponse([ + 'success' => true, + 'message' => 'Review submitted successfully. It will be visible after approval.', + 'review_id' => $reviewId +]); diff --git a/api/subscribe.php b/api/subscribe.php new file mode 100644 index 0000000..a6e5808 --- /dev/null +++ b/api/subscribe.php @@ -0,0 +1,75 @@ + 'Method not allowed'], 405); +} + +$input = json_decode(file_get_contents('php://input'), true); +$email = trim($input['email'] ?? $_POST['email'] ?? ''); + +if (empty($email)) { + jsonResponse(['error' => 'Email is required'], 400); +} + +if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { + jsonResponse(['error' => 'Please enter a valid email address'], 400); +} + +// Check if already subscribed +$existing = db()->fetch( + "SELECT id FROM email_subscribers WHERE email = :email", + ['email' => strtolower($email)] +); + +if ($existing) { + jsonResponse(['error' => 'This email is already subscribed'], 400); +} + +// Add subscriber +try { + db()->insert('email_subscribers', [ + 'email' => strtolower($email), + 'source' => 'website', + 'is_active' => 1 + ]); + + // Send welcome email + $html = << +
    +

    Tom's Java Jive

    +
    +
    +

    Welcome to the Java Jive Family!

    +

    Thanks for subscribing to our newsletter. You'll be the first to know about:

    +
      +
    • New coffee releases
    • +
    • Exclusive discounts and promotions
    • +
    • Brewing tips and recipes
    • +
    • Behind-the-scenes at our roastery
    • +
    +

    As a thank you, enjoy 10% off your first order with code: WELCOME10

    +

    + Shop Now +

    +
    +
    +

    Tom's Java Jive | Premium Coffee

    +
    +
    + HTML; + + sendEmail($email, 'Welcome to Tom\'s Java Jive!', $html); + + jsonResponse(['success' => true, 'message' => 'Successfully subscribed!']); + +} catch (Exception $e) { + jsonResponse(['error' => 'Subscription failed. Please try again.'], 500); +} diff --git a/api/test-notification.php b/api/test-notification.php new file mode 100644 index 0000000..abd90f6 --- /dev/null +++ b/api/test-notification.php @@ -0,0 +1,65 @@ + 'Method not allowed'], 405); +} + +$input = json_decode(file_get_contents('php://input'), true); +$type = $input['type'] ?? ''; +$recipient = $input['recipient'] ?? ''; + +if (empty($recipient)) { + jsonResponse(['error' => 'Recipient is required'], 400); +} + +switch ($type) { + case 'email': + if (!filter_var($recipient, FILTER_VALIDATE_EMAIL)) { + jsonResponse(['error' => 'Invalid email address'], 400); + } + + $result = sendEmail()->send( + $recipient, + "Test Email from Tom's Java Jive", + "
    +

    Test Email

    +

    This is a test email from your Tom's Java Jive store.

    +

    If you received this, your SendGrid integration is working correctly!

    +

    + Sent at: " . date('Y-m-d H:i:s') . " +

    +
    " + ); + + if ($result['success']) { + jsonResponse(['success' => true, 'message' => 'Test email sent to ' . $recipient]); + } else { + jsonResponse(['success' => false, 'error' => $result['error'] ?? 'Failed to send email']); + } + break; + + case 'sms': + $result = sendSMS()->send( + $recipient, + "Tom's Java Jive: This is a test message. If you received this, your Twilio integration is working! Sent at " . date('g:i A') + ); + + if ($result['success']) { + jsonResponse(['success' => true, 'message' => 'Test SMS sent to ' . $recipient]); + } else { + jsonResponse(['success' => false, 'error' => $result['error'] ?? 'Failed to send SMS']); + } + break; + + default: + jsonResponse(['error' => 'Invalid notification type'], 400); +} diff --git a/api/validate-coupon.php b/api/validate-coupon.php new file mode 100644 index 0000000..957c697 --- /dev/null +++ b/api/validate-coupon.php @@ -0,0 +1,59 @@ + 'Method not allowed'], 405); +} + +$input = json_decode(file_get_contents('php://input'), true); +$code = strtoupper(trim($input['code'] ?? '')); +$subtotal = floatval($input['subtotal'] ?? 0); + +if (empty($code)) { + jsonResponse(['error' => 'Coupon code required'], 400); +} + +$coupon = db()->fetch( + "SELECT * FROM coupons WHERE code = :code AND is_active = 1", + ['code' => $code] +); + +if (!$coupon) { + jsonResponse(['error' => 'Invalid coupon code']); +} + +// Check if expired +if ($coupon['expires_at'] && strtotime($coupon['expires_at']) < time()) { + jsonResponse(['error' => 'Coupon has expired']); +} + +// Check if not started yet +if ($coupon['starts_at'] && strtotime($coupon['starts_at']) > time()) { + jsonResponse(['error' => 'Coupon is not yet active']); +} + +// Check usage limit +if ($coupon['max_uses'] && $coupon['times_used'] >= $coupon['max_uses']) { + jsonResponse(['error' => 'Coupon usage limit reached']); +} + +// Check minimum order +if ($coupon['min_order_amount'] && $subtotal < $coupon['min_order_amount']) { + jsonResponse(['error' => 'Minimum order of ' . formatCurrency($coupon['min_order_amount']) . ' required']); +} + +jsonResponse([ + 'valid' => true, + 'code' => $coupon['code'], + 'type' => $coupon['discount_type'], + 'value' => floatval($coupon['discount_value']), + 'description' => $coupon['discount_type'] === 'percentage' + ? $coupon['discount_value'] . '% off' + : formatCurrency($coupon['discount_value']) . ' off' +]); diff --git a/api/webhook.php b/api/webhook.php new file mode 100644 index 0000000..2bd72c4 --- /dev/null +++ b/api/webhook.php @@ -0,0 +1,147 @@ +verifyWebhookSignature($payload, $sigHeader, STRIPE_WEBHOOK_SECRET); + $event = json_decode($payload, true); + } catch (Exception $e) { + error_log('Stripe webhook signature verification failed: ' . $e->getMessage()); + http_response_code(400); + exit(); + } +} else { + $event = json_decode($payload, true); + if (!$event) { + http_response_code(400); + exit(); + } +} + +$eventType = $event['type'] ?? ''; +$data = $event['data']['object'] ?? []; + +switch ($eventType) { + case 'payment_intent.succeeded': + $paymentIntentId = $data['id'] ?? ''; + $orderId = $data['metadata']['order_id'] ?? ''; + + if ($orderId) { + db()->update('orders', + [ + 'payment_status' => 'paid', + 'order_status' => 'confirmed' + ], + 'order_id = :id', + ['id' => $orderId] + ); + + // Send confirmation email + $order = db()->fetch("SELECT * FROM orders WHERE order_id = :id", ['id' => $orderId]); + if ($order) { + sendOrderConfirmationEmail($order); + } + } + break; + + case 'payment_intent.payment_failed': + $orderId = $data['metadata']['order_id'] ?? ''; + if ($orderId) { + db()->update('orders', + ['payment_status' => 'failed'], + 'order_id = :id', + ['id' => $orderId] + ); + } + break; + + case 'charge.refunded': + $paymentIntentId = $data['payment_intent'] ?? ''; + if ($paymentIntentId) { + db()->update('orders', + [ + 'payment_status' => 'refunded', + 'order_status' => 'refunded' + ], + 'stripe_payment_intent = :pi', + ['pi' => $paymentIntentId] + ); + } + break; +} + +http_response_code(200); +echo json_encode(['received' => true]); + +/** + * Send order confirmation email + */ +function sendOrderConfirmationEmail($order) { + $items = json_decode($order['items'], true) ?? []; + $shippingAddress = json_decode($order['shipping_address'], true) ?? []; + + $itemsHtml = ''; + foreach ($items as $item) { + $itemsHtml .= sprintf( + '%s x%d$%.2f', + htmlspecialchars($item['name']), + $item['quantity'], + $item['total'] + ); + } + + $html = << +
    +

    Tom's Java Jive

    +
    + +
    +

    Order Confirmed!

    +

    Thank you for your order, {$order['customer_name']}!

    + +
    +

    Order #: {$order['order_number']}

    +

    Total: \${$order['total']}

    +
    + +

    Order Details

    + + {$itemsHtml} + + + + +
    Total\${$order['total']}
    + +

    Shipping To

    +

    + {$shippingAddress['address']}
    + {$shippingAddress['city']}, {$shippingAddress['state']} {$shippingAddress['zip']} +

    + +

    + We'll send you tracking information once your order ships. +

    +
    + +
    +

    Tom's Java Jive | Premium Coffee

    +
    +
    + HTML; + + sendEmail($order['customer_email'], "Order Confirmed - #{$order['order_number']}", $html); +} diff --git a/api/wishlist.php b/api/wishlist.php new file mode 100644 index 0000000..3f3565a --- /dev/null +++ b/api/wishlist.php @@ -0,0 +1,95 @@ + 'Please log in to manage your wishlist'], 401); +} + +$customer = CustomerAuth::getFullUser(); +$input = json_decode(file_get_contents('php://input'), true); +$action = $input['action'] ?? $_GET['action'] ?? ''; +$productId = $input['product_id'] ?? $_GET['product_id'] ?? ''; + +switch ($action) { + case 'add': + if (empty($productId)) { + jsonResponse(['error' => 'Product ID required'], 400); + } + + // Check if product exists + $product = db()->fetch("SELECT product_id FROM products WHERE product_id = :id", ['id' => $productId]); + if (!$product) { + jsonResponse(['error' => 'Product not found'], 404); + } + + // Check if already in wishlist + $existing = db()->fetch( + "SELECT id FROM wishlist WHERE customer_id = :cid AND product_id = :pid", + ['cid' => $customer['customer_id'], 'pid' => $productId] + ); + + if ($existing) { + jsonResponse(['success' => true, 'message' => 'Already in wishlist']); + } + + db()->insert('wishlist', [ + 'customer_id' => $customer['customer_id'], + 'product_id' => $productId + ]); + + jsonResponse(['success' => true, 'message' => 'Added to wishlist']); + break; + + case 'remove': + if (empty($productId)) { + jsonResponse(['error' => 'Product ID required'], 400); + } + + db()->query( + "DELETE FROM wishlist WHERE customer_id = :cid AND product_id = :pid", + ['cid' => $customer['customer_id'], 'pid' => $productId] + ); + + jsonResponse(['success' => true, 'message' => 'Removed from wishlist']); + break; + + case 'check': + if (empty($productId)) { + jsonResponse(['error' => 'Product ID required'], 400); + } + + $exists = db()->fetch( + "SELECT id FROM wishlist WHERE customer_id = :cid AND product_id = :pid", + ['cid' => $customer['customer_id'], 'pid' => $productId] + ); + + jsonResponse(['in_wishlist' => (bool)$exists]); + break; + + case 'list': + $items = db()->fetchAll( + "SELECT p.product_id, p.name, p.slug, p.price, p.sale_price, p.images, p.stock + FROM wishlist w + JOIN products p ON w.product_id = p.product_id + WHERE w.customer_id = :id + ORDER BY w.created_at DESC", + ['id' => $customer['customer_id']] + ); + + foreach ($items as &$item) { + $item['images'] = json_decode($item['images'] ?? '[]', true); + } + + jsonResponse(['items' => $items]); + break; + + default: + jsonResponse(['error' => 'Invalid action'], 400); +} diff --git a/assets/css/admin.css b/assets/css/admin.css new file mode 100644 index 0000000..6d71986 --- /dev/null +++ b/assets/css/admin.css @@ -0,0 +1,543 @@ +/** + * Tom's Java Jive - Admin Panel Styles + */ + +:root { + /* Admin Colors */ + --admin-sidebar-bg: #1F2937; + --admin-sidebar-hover: #374151; + --admin-sidebar-active: var(--color-primary); + --admin-header-bg: #FFFFFF; + --admin-content-bg: #F9FAFB; + --admin-text-light: #9CA3AF; +} + +/* ================================ + Admin Layout + ================================ */ +.admin-layout { + display: flex; + min-height: 100vh; +} + +.admin-sidebar { + width: 260px; + background: var(--admin-sidebar-bg); + color: white; + display: flex; + flex-direction: column; + position: fixed; + top: 0; + left: 0; + bottom: 0; + z-index: 100; + transition: transform 0.3s ease; +} + +.admin-sidebar-header { + padding: 1.5rem; + border-bottom: 1px solid rgba(255,255,255,0.1); +} + +.admin-logo { + display: flex; + align-items: center; + gap: 0.75rem; + color: white; + font-family: var(--font-heading); + font-size: 1.25rem; + font-weight: 600; +} + +.admin-logo img { + height: 32px; +} + +.admin-nav { + flex: 1; + padding: 1rem 0; + overflow-y: auto; +} + +.admin-nav-section { + margin-bottom: 1.5rem; +} + +.admin-nav-title { + padding: 0.5rem 1.5rem; + font-size: 0.75rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.05em; + color: var(--admin-text-light); +} + +.admin-nav-item { + display: flex; + align-items: center; + gap: 0.75rem; + padding: 0.75rem 1.5rem; + color: rgba(255,255,255,0.8); + transition: all 0.2s ease; +} + +.admin-nav-item:hover { + background: var(--admin-sidebar-hover); + color: white; +} + +.admin-nav-item.active { + background: var(--admin-sidebar-active); + color: white; +} + +.admin-nav-item i { + width: 20px; + text-align: center; +} + +.admin-nav-badge { + margin-left: auto; + padding: 0.125rem 0.5rem; + font-size: 0.75rem; + font-weight: 600; + background: var(--color-error); + color: white; + border-radius: 9999px; +} + +.admin-main { + flex: 1; + margin-left: 260px; + background: var(--admin-content-bg); + min-height: 100vh; +} + +.admin-header { + background: var(--admin-header-bg); + padding: 1rem 1.5rem; + display: flex; + align-items: center; + justify-content: space-between; + border-bottom: 1px solid var(--color-border); + position: sticky; + top: 0; + z-index: 50; +} + +.admin-header-left { + display: flex; + align-items: center; + gap: 1rem; +} + +.admin-search { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0.5rem 1rem; + background: var(--color-background); + border: 1px solid var(--color-border); + border-radius: var(--radius-md); + min-width: 300px; +} + +.admin-search input { + border: none; + background: transparent; + outline: none; + width: 100%; +} + +.admin-header-right { + display: flex; + align-items: center; + gap: 1rem; +} + +.admin-user { + display: flex; + align-items: center; + gap: 0.75rem; + padding: 0.5rem; + border-radius: var(--radius-md); + cursor: pointer; +} + +.admin-user:hover { + background: var(--color-background); +} + +.admin-avatar { + width: 36px; + height: 36px; + border-radius: 50%; + background: var(--color-primary); + display: flex; + align-items: center; + justify-content: center; + color: white; + font-weight: 600; +} + +.admin-content { + padding: 1.5rem; +} + +/* ================================ + Admin Cards + ================================ */ +.admin-card { + background: var(--color-surface); + border-radius: var(--radius-lg); + border: 1px solid var(--color-border); + margin-bottom: 1.5rem; +} + +.admin-card-header { + padding: 1rem 1.5rem; + border-bottom: 1px solid var(--color-border); + display: flex; + align-items: center; + justify-content: space-between; +} + +.admin-card-title { + font-size: 1rem; + font-weight: 600; + margin: 0; +} + +.admin-card-body { + padding: 1.5rem; +} + +/* ================================ + Stats Cards + ================================ */ +.stats-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: 1.5rem; + margin-bottom: 1.5rem; +} + +.stat-card { + background: var(--color-surface); + border-radius: var(--radius-lg); + border: 1px solid var(--color-border); + padding: 1.5rem; + display: flex; + align-items: flex-start; + gap: 1rem; +} + +.stat-card-icon { + width: 48px; + height: 48px; + border-radius: var(--radius-md); + display: flex; + align-items: center; + justify-content: center; + font-size: 1.25rem; +} + +.stat-card-icon.primary { + background: rgba(232, 106, 51, 0.1); + color: var(--color-primary); +} + +.stat-card-icon.success { + background: rgba(16, 185, 129, 0.1); + color: var(--color-success); +} + +.stat-card-icon.warning { + background: rgba(245, 158, 11, 0.1); + color: var(--color-warning); +} + +.stat-card-icon.error { + background: rgba(239, 68, 68, 0.1); + color: var(--color-error); +} + +.stat-card-value { + font-size: 1.5rem; + font-weight: 700; + color: var(--color-text); +} + +.stat-card-label { + font-size: 0.875rem; + color: var(--color-text-muted); +} + +/* ================================ + Admin Tables + ================================ */ +.admin-table { + width: 100%; + border-collapse: collapse; +} + +.admin-table th, +.admin-table td { + padding: 0.875rem 1rem; + text-align: left; + border-bottom: 1px solid var(--color-border); +} + +.admin-table th { + font-weight: 600; + font-size: 0.875rem; + color: var(--color-text-muted); + background: var(--color-background); +} + +.admin-table tbody tr:hover { + background: var(--color-background); +} + +.admin-table td a { + color: var(--color-primary); + font-weight: 500; +} + +/* ================================ + Page Header + ================================ */ +.page-header { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 1.5rem; +} + +.page-title { + font-size: 1.5rem; + margin: 0; +} + +/* ================================ + Form Improvements for Admin + ================================ */ +.admin-form-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 1.5rem; +} + +.admin-form-grid .full-width { + grid-column: 1 / -1; +} + +/* ================================ + Responsive Admin + ================================ */ +.sidebar-toggle { + display: none; + background: none; + border: none; + font-size: 1.5rem; + cursor: pointer; + color: var(--color-text); +} + +@media (max-width: 1024px) { + .admin-sidebar { + transform: translateX(-100%); + } + + .admin-sidebar.open { + transform: translateX(0); + } + + .admin-main { + margin-left: 0; + } + + .sidebar-toggle { + display: block; + } + + .admin-search { + min-width: 200px; + } +} + +@media (max-width: 768px) { + .stats-grid { + grid-template-columns: repeat(2, 1fr); + } + + .admin-form-grid { + grid-template-columns: 1fr; + } + + .admin-table { + display: block; + overflow-x: auto; + } +} + +/* ================================ + POS Specific Styles + ================================ */ +.pos-layout { + display: grid; + grid-template-columns: 1fr 400px; + gap: 1.5rem; + height: calc(100vh - 140px); +} + +.pos-products { + overflow-y: auto; +} + +.pos-cart { + background: var(--color-surface); + border-radius: var(--radius-lg); + border: 1px solid var(--color-border); + display: flex; + flex-direction: column; +} + +.pos-cart-header { + padding: 1rem; + border-bottom: 1px solid var(--color-border); +} + +.pos-cart-items { + flex: 1; + overflow-y: auto; + padding: 1rem; +} + +.pos-cart-item { + display: flex; + gap: 0.75rem; + padding: 0.75rem 0; + border-bottom: 1px solid var(--color-border); +} + +.pos-cart-footer { + padding: 1rem; + border-top: 1px solid var(--color-border); + background: var(--color-background); +} + +.pos-totals { + margin-bottom: 1rem; +} + +.pos-total-row { + display: flex; + justify-content: space-between; + margin-bottom: 0.5rem; +} + +.pos-total-row.grand-total { + font-size: 1.25rem; + font-weight: 700; + padding-top: 0.5rem; + border-top: 1px solid var(--color-border); +} + +.pos-product-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); + gap: 1rem; +} + +.pos-product-card { + background: var(--color-surface); + border: 1px solid var(--color-border); + border-radius: var(--radius-md); + padding: 0.75rem; + cursor: pointer; + transition: all 0.2s ease; +} + +.pos-product-card:hover { + border-color: var(--color-primary); + box-shadow: var(--shadow-md); +} + +.pos-product-card img { + width: 100%; + aspect-ratio: 1; + object-fit: cover; + border-radius: var(--radius-sm); + margin-bottom: 0.5rem; +} + +.pos-product-name { + font-size: 0.875rem; + font-weight: 500; + margin-bottom: 0.25rem; +} + +.pos-product-price { + font-size: 0.875rem; + color: var(--color-primary); + font-weight: 600; +} + +/* Payment Buttons */ +.payment-methods { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 0.75rem; + margin-top: 1rem; +} + +.payment-btn { + padding: 1rem; + display: flex; + flex-direction: column; + align-items: center; + gap: 0.5rem; + border: 2px solid var(--color-border); + background: var(--color-surface); + border-radius: var(--radius-md); + cursor: pointer; + transition: all 0.2s ease; +} + +.payment-btn:hover { + border-color: var(--color-primary); +} + +.payment-btn.selected { + border-color: var(--color-primary); + background: rgba(232, 106, 51, 0.05); +} + +.payment-btn i { + font-size: 1.5rem; + color: var(--color-primary); +} + +@media (max-width: 1024px) { + .pos-layout { + grid-template-columns: 1fr; + height: auto; + } + + .pos-cart { + position: fixed; + bottom: 0; + left: 0; + right: 0; + height: 50vh; + transform: translateY(calc(100% - 60px)); + transition: transform 0.3s ease; + z-index: 100; + border-radius: var(--radius-lg) var(--radius-lg) 0 0; + } + + .pos-cart.expanded { + transform: translateY(0); + } +} diff --git a/assets/css/style.css b/assets/css/style.css new file mode 100644 index 0000000..c5ef5ff --- /dev/null +++ b/assets/css/style.css @@ -0,0 +1,850 @@ +/** + * Tom's Java Jive - Main Stylesheet + * Matching original React design + */ + +:root { + --color-primary: #FF5E1A; + --color-primary-dark: #E54D0D; + --color-secondary: #8B4513; + --color-accent: #FF5E1A; + --color-background: #FDFBF7; + --color-surface: #FFFFFF; + --color-text: #1B1B1B; + --color-text-muted: #6B7280; + --color-text-light: #9CA3AF; + --color-border: #E8E2D9; + --color-success: #10B981; + --color-warning: #F59E0B; + --color-error: #EF4444; + + --font-primary: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; + --font-display: 'Playfair Display', Georgia, serif; + + --radius-sm: 6px; + --radius-md: 8px; + --radius-lg: 12px; + --radius-xl: 16px; + --radius-full: 9999px; + + --shadow-sm: 0 1px 2px rgba(0,0,0,0.05); + --shadow-md: 0 4px 6px -1px rgba(0,0,0,0.1); + --shadow-lg: 0 10px 15px -3px rgba(0,0,0,0.1); + --shadow-xl: 0 20px 25px -5px rgba(0,0,0,0.1); + + --transition: all 0.2s ease; +} + +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +html { + scroll-behavior: smooth; +} + +body { + font-family: var(--font-primary); + font-size: 16px; + line-height: 1.6; + color: var(--color-text); + background: var(--color-background); + -webkit-font-smoothing: antialiased; +} + +a { + color: var(--color-primary); + text-decoration: none; + transition: var(--transition); +} + +a:hover { + color: var(--color-primary-dark); +} + +img { + max-width: 100%; + height: auto; +} + +/* Container */ +.container { + width: 100%; + max-width: 1200px; + margin: 0 auto; + padding: 0 1.5rem; +} + +/* Header / Navigation */ +.header { + background: var(--color-surface); + border-bottom: 1px solid var(--color-border); + position: sticky; + top: 0; + z-index: 100; +} + +.nav { + display: flex; + align-items: center; + justify-content: space-between; + height: 70px; +} + +.logo { + display: flex; + align-items: center; + gap: 0.75rem; + font-weight: 700; + font-size: 1.25rem; + color: var(--color-text); +} + +.logo:hover { + color: var(--color-text); +} + +.logo-img { + height: 45px; + width: auto; +} + +.logo-text { + font-family: var(--font-display); + font-size: 1.5rem; + color: var(--color-secondary); +} + +.nav-links { + display: flex; + align-items: center; + gap: 2rem; + list-style: none; +} + +.nav-links a { + color: var(--color-text); + font-weight: 500; + font-size: 0.9375rem; + padding: 0.5rem 0; + position: relative; +} + +.nav-links a:hover { + color: var(--color-primary); +} + +.nav-links a.active { + color: var(--color-primary); +} + +.nav-links a::after { + content: ''; + position: absolute; + bottom: 0; + left: 0; + width: 0; + height: 2px; + background: var(--color-primary); + transition: width 0.3s ease; +} + +.nav-links a:hover::after, +.nav-links a.active::after { + width: 100%; +} + +.nav-actions { + display: flex; + align-items: center; + gap: 1rem; +} + +.cart-btn { + position: relative; + display: flex; + align-items: center; + justify-content: center; + width: 44px; + height: 44px; + border-radius: var(--radius-full); + background: var(--color-background); + color: var(--color-text); + font-size: 1.25rem; + transition: var(--transition); +} + +.cart-btn:hover { + background: var(--color-primary); + color: white; +} + +.cart-count { + position: absolute; + top: -4px; + right: -4px; + background: var(--color-primary); + color: white; + font-size: 0.75rem; + font-weight: 600; + min-width: 20px; + height: 20px; + border-radius: var(--radius-full); + display: flex; + align-items: center; + justify-content: center; +} + +/* Hero Section */ +.hero { + background: linear-gradient(135deg, rgba(27,27,27,0.7) 0%, rgba(27,27,27,0.4) 100%), + url('/assets/images/hero-coffee.jpg'); + background-size: cover; + background-position: center; + min-height: 600px; + display: flex; + align-items: center; + text-align: center; + color: white; + padding: 4rem 0; +} + +.hero h1 { + font-family: var(--font-display); + font-size: 3.5rem; + font-weight: 700; + margin-bottom: 1rem; + line-height: 1.2; +} + +.hero p { + font-size: 1.25rem; + margin-bottom: 2rem; + opacity: 0.9; + max-width: 600px; + margin-left: auto; + margin-right: auto; +} + +/* Buttons */ +.btn { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 0.5rem; + padding: 0.75rem 1.5rem; + font-size: 1rem; + font-weight: 600; + border-radius: var(--radius-md); + border: none; + cursor: pointer; + transition: var(--transition); + text-decoration: none; +} + +.btn-primary { + background: var(--color-primary); + color: white; +} + +.btn-primary:hover { + background: var(--color-primary-dark); + color: white; + transform: translateY(-2px); + box-shadow: var(--shadow-lg); +} + +.btn-secondary { + background: white; + color: var(--color-text); + border: 2px solid var(--color-border); +} + +.btn-secondary:hover { + border-color: var(--color-primary); + color: var(--color-primary); +} + +.btn-outline { + background: transparent; + color: white; + border: 2px solid white; +} + +.btn-outline:hover { + background: white; + color: var(--color-text); +} + +.btn-lg { + padding: 1rem 2rem; + font-size: 1.125rem; +} + +.btn-sm { + padding: 0.5rem 1rem; + font-size: 0.875rem; +} + +.btn-block { + display: flex; + width: 100%; +} + +/* Sections */ +.section { + padding: 5rem 0; +} + +.section-header { + text-align: center; + margin-bottom: 3rem; +} + +.section-header h2 { + font-family: var(--font-display); + font-size: 2.5rem; + font-weight: 700; + margin-bottom: 0.5rem; + color: var(--color-text); +} + +.section-header p { + font-size: 1.125rem; + color: var(--color-text-muted); +} + +/* Product Grid */ +.product-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); + gap: 2rem; +} + +/* Product Card */ +.product-card { + background: var(--color-surface); + border-radius: var(--radius-lg); + overflow: hidden; + transition: var(--transition); + box-shadow: var(--shadow-sm); +} + +.product-card:hover { + transform: translateY(-4px); + box-shadow: var(--shadow-xl); +} + +.product-card-image { + position: relative; + padding-top: 100%; + overflow: hidden; +} + +.product-card-image img { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + object-fit: cover; + transition: transform 0.5s ease; +} + +.product-card:hover .product-card-image img { + transform: scale(1.05); +} + +.product-card-badge { + position: absolute; + top: 1rem; + left: 1rem; + background: var(--color-primary); + color: white; + padding: 0.25rem 0.75rem; + border-radius: var(--radius-full); + font-size: 0.75rem; + font-weight: 600; + text-transform: uppercase; +} + +.product-card-body { + padding: 1.25rem; +} + +.product-card-category { + font-size: 0.8125rem; + color: var(--color-primary); + text-transform: uppercase; + letter-spacing: 0.05em; + margin-bottom: 0.5rem; +} + +.product-card-title { + font-size: 1.125rem; + font-weight: 600; + margin-bottom: 0.5rem; + color: var(--color-text); +} + +.product-card-title a { + color: inherit; +} + +.product-card-title a:hover { + color: var(--color-primary); +} + +.product-card-price { + display: flex; + align-items: center; + gap: 0.5rem; + margin-bottom: 1rem; +} + +.product-card-price .current { + font-size: 1.25rem; + font-weight: 700; + color: var(--color-primary); +} + +.product-card-price .original { + font-size: 0.9375rem; + color: var(--color-text-muted); + text-decoration: line-through; +} + +.product-card-rating { + display: flex; + align-items: center; + gap: 0.25rem; + color: #F59E0B; + font-size: 0.875rem; + margin-bottom: 1rem; +} + +.product-card-rating span { + color: var(--color-text-muted); + margin-left: 0.25rem; +} + +/* Features Section */ +.features-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 2rem; +} + +.feature-card { + text-align: center; + padding: 2rem; +} + +.feature-icon { + width: 64px; + height: 64px; + background: linear-gradient(135deg, var(--color-primary), var(--color-primary-dark)); + border-radius: var(--radius-lg); + display: flex; + align-items: center; + justify-content: center; + margin: 0 auto 1.5rem; + color: white; + font-size: 1.5rem; +} + +.feature-card h3 { + font-size: 1.25rem; + font-weight: 600; + margin-bottom: 0.75rem; +} + +.feature-card p { + color: var(--color-text-muted); + font-size: 0.9375rem; +} + +/* Cards */ +.card { + background: var(--color-surface); + border-radius: var(--radius-lg); + box-shadow: var(--shadow-sm); + overflow: hidden; +} + +.card-header { + padding: 1.25rem; + border-bottom: 1px solid var(--color-border); +} + +.card-body { + padding: 1.5rem; +} + +/* Forms */ +.form-group { + margin-bottom: 1.25rem; +} + +.form-label { + display: block; + font-size: 0.875rem; + font-weight: 500; + margin-bottom: 0.5rem; + color: var(--color-text); +} + +.form-input, +.form-select, +.form-textarea { + width: 100%; + padding: 0.75rem 1rem; + font-size: 1rem; + border: 2px solid var(--color-border); + border-radius: var(--radius-md); + background: var(--color-surface); + transition: var(--transition); + font-family: inherit; +} + +.form-input:focus, +.form-select:focus, +.form-textarea:focus { + outline: none; + border-color: var(--color-primary); + box-shadow: 0 0 0 3px rgba(255,94,26,0.1); +} + +.form-textarea { + min-height: 120px; + resize: vertical; +} + +.form-error { + color: var(--color-error); + font-size: 0.8125rem; + margin-top: 0.25rem; +} + +.form-checkbox { + display: flex; + align-items: center; + gap: 0.5rem; + cursor: pointer; +} + +/* Alerts */ +.alert { + padding: 1rem 1.25rem; + border-radius: var(--radius-md); + margin-bottom: 1rem; + display: flex; + align-items: center; + gap: 0.75rem; +} + +.alert-success { + background: rgba(16, 185, 129, 0.1); + color: var(--color-success); + border: 1px solid rgba(16, 185, 129, 0.3); +} + +.alert-error { + background: rgba(239, 68, 68, 0.1); + color: var(--color-error); + border: 1px solid rgba(239, 68, 68, 0.3); +} + +.alert-warning { + background: rgba(245, 158, 11, 0.1); + color: var(--color-warning); + border: 1px solid rgba(245, 158, 11, 0.3); +} + +/* Badges */ +.badge { + display: inline-flex; + align-items: center; + padding: 0.25rem 0.75rem; + font-size: 0.75rem; + font-weight: 600; + border-radius: var(--radius-full); +} + +.badge-primary { + background: rgba(255,94,26,0.15); + color: var(--color-primary); +} + +.badge-success { + background: rgba(16, 185, 129, 0.15); + color: var(--color-success); +} + +.badge-warning { + background: rgba(245, 158, 11, 0.15); + color: var(--color-warning); +} + +.badge-error { + background: rgba(239, 68, 68, 0.15); + color: var(--color-error); +} + +/* Newsletter Section */ +.newsletter { + background: linear-gradient(135deg, var(--color-secondary) 0%, #5D2E0A 100%); + color: white; + padding: 4rem 0; + text-align: center; +} + +.newsletter h2 { + font-family: var(--font-display); + font-size: 2rem; + margin-bottom: 0.5rem; +} + +.newsletter p { + opacity: 0.9; + margin-bottom: 1.5rem; +} + +.newsletter-form { + display: flex; + gap: 0.75rem; + max-width: 450px; + margin: 0 auto; +} + +.newsletter-form input { + flex: 1; + padding: 0.875rem 1rem; + border: none; + border-radius: var(--radius-md); + font-size: 1rem; +} + +.newsletter-form button { + padding: 0.875rem 1.5rem; + background: var(--color-primary); + color: white; + border: none; + border-radius: var(--radius-md); + font-weight: 600; + cursor: pointer; + transition: var(--transition); +} + +.newsletter-form button:hover { + background: var(--color-primary-dark); +} + +/* Footer */ +.footer { + background: var(--color-text); + color: white; + padding: 4rem 0 2rem; +} + +.footer-grid { + display: grid; + grid-template-columns: 2fr 1fr 1fr 1fr; + gap: 3rem; + margin-bottom: 3rem; +} + +.footer-brand p { + color: rgba(255,255,255,0.7); + margin-top: 1rem; + font-size: 0.9375rem; +} + +.footer h4 { + font-size: 1rem; + font-weight: 600; + margin-bottom: 1.25rem; + color: white; +} + +.footer-links { + list-style: none; +} + +.footer-links li { + margin-bottom: 0.75rem; +} + +.footer-links a { + color: rgba(255,255,255,0.7); + font-size: 0.9375rem; + transition: var(--transition); +} + +.footer-links a:hover { + color: var(--color-primary); +} + +.footer-bottom { + padding-top: 2rem; + border-top: 1px solid rgba(255,255,255,0.1); + display: flex; + justify-content: space-between; + align-items: center; + font-size: 0.875rem; + color: rgba(255,255,255,0.5); +} + +.footer-social { + display: flex; + gap: 1rem; +} + +.footer-social a { + color: rgba(255,255,255,0.7); + font-size: 1.25rem; +} + +.footer-social a:hover { + color: var(--color-primary); +} + +/* Utilities */ +.text-center { text-align: center; } +.text-muted { color: var(--color-text-muted); } +.text-success { color: var(--color-success); } +.text-error { color: var(--color-error); } + +.mb-0 { margin-bottom: 0; } +.mb-1 { margin-bottom: 1rem; } +.mb-2 { margin-bottom: 1.5rem; } +.mt-1 { margin-top: 1rem; } +.mt-2 { margin-top: 1.5rem; } + +/* Loading Spinner */ +.loading { + display: inline-block; + width: 20px; + height: 20px; + border: 2px solid currentColor; + border-radius: 50%; + border-top-color: transparent; + animation: spin 0.8s linear infinite; +} + +@keyframes spin { + to { transform: rotate(360deg); } +} + +/* Responsive */ +@media (max-width: 1024px) { + .footer-grid { + grid-template-columns: 1fr 1fr; + } +} + +@media (max-width: 768px) { + .hero h1 { + font-size: 2.5rem; + } + + .hero p { + font-size: 1.125rem; + } + + .section-header h2 { + font-size: 2rem; + } + + .nav-links { + display: none; + } + + .footer-grid { + grid-template-columns: 1fr; + gap: 2rem; + } + + .footer-bottom { + flex-direction: column; + gap: 1rem; + text-align: center; + } + + .newsletter-form { + flex-direction: column; + } +} + +@media (max-width: 480px) { + .hero h1 { + font-size: 2rem; + } + + .product-grid { + grid-template-columns: 1fr; + } +} + +/* ── Coffee Splash Blocks ─────────────────────────── */ +.splash-section { overflow: hidden; } + +.splash-scroll-wrap { + position: relative; + display: flex; + align-items: center; + gap: .5rem; +} + +.splash-scroll-track { + display: flex; + gap: 1.5rem; + overflow-x: auto; + scroll-behavior: smooth; + scrollbar-width: none; + -ms-overflow-style: none; + padding: .5rem 0; + flex: 1; +} + +.splash-scroll-track::-webkit-scrollbar { display: none; } + +.splash-item { + min-width: 220px; + flex-shrink: 0; +} + +.splash-arrow { + flex-shrink: 0; + width: 40px; + height: 40px; + border-radius: 50%; + border: 2px solid var(--color-border); + background: var(--color-surface); + color: var(--color-text); + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + transition: all .2s; + z-index: 2; +} + +.splash-arrow:hover { + background: var(--color-primary); + border-color: var(--color-primary); + color: white; +} + +.splash-arrow:disabled { + opacity: .3; + cursor: default; +} + +@media (max-width: 768px) { + .splash-arrow { display: none; } + .splash-scroll-track { padding-bottom: .5rem; } +} +/* ────────────────────────────────────────────────── */ diff --git a/assets/icons/badge-72.svg b/assets/icons/badge-72.svg new file mode 100644 index 0000000..b26a584 --- /dev/null +++ b/assets/icons/badge-72.svg @@ -0,0 +1,5 @@ + + + + TJ + \ No newline at end of file diff --git a/assets/icons/icon-128.svg b/assets/icons/icon-128.svg new file mode 100644 index 0000000..6aeb221 --- /dev/null +++ b/assets/icons/icon-128.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/assets/icons/icon-144.svg b/assets/icons/icon-144.svg new file mode 100644 index 0000000..26bd20c --- /dev/null +++ b/assets/icons/icon-144.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/assets/icons/icon-152.svg b/assets/icons/icon-152.svg new file mode 100644 index 0000000..39a72d1 --- /dev/null +++ b/assets/icons/icon-152.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/assets/icons/icon-192.png b/assets/icons/icon-192.png new file mode 100644 index 0000000..764bac8 --- /dev/null +++ b/assets/icons/icon-192.png @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/assets/icons/icon-192.svg b/assets/icons/icon-192.svg new file mode 100644 index 0000000..2d3676b --- /dev/null +++ b/assets/icons/icon-192.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/assets/icons/icon-384.svg b/assets/icons/icon-384.svg new file mode 100644 index 0000000..275b40f --- /dev/null +++ b/assets/icons/icon-384.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/assets/icons/icon-512.png b/assets/icons/icon-512.png new file mode 100644 index 0000000..f79da4b --- /dev/null +++ b/assets/icons/icon-512.png @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/assets/icons/icon-512.svg b/assets/icons/icon-512.svg new file mode 100644 index 0000000..a25dcb0 --- /dev/null +++ b/assets/icons/icon-512.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/assets/icons/icon-72.svg b/assets/icons/icon-72.svg new file mode 100644 index 0000000..708eaf1 --- /dev/null +++ b/assets/icons/icon-72.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/assets/icons/icon-96.svg b/assets/icons/icon-96.svg new file mode 100644 index 0000000..2b3fe58 --- /dev/null +++ b/assets/icons/icon-96.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/assets/images/coffee-beans.jpg b/assets/images/coffee-beans.jpg new file mode 100644 index 0000000000000000000000000000000000000000..877b17e4b8874744db63a0e8bfcac50c6cc1937c GIT binary patch literal 136830 zcmbrl1yCf-_UPG-ySux)ySofBxVyUyK7+f%;6Av!!{F{ZSmQMA(7@R8{cps*cQ@j_ z-FREwUGeLaC#z1Lw3Auge}DYl17Il0DarwWKp;Tj{RQ}YfTE`;Ep4i_T|db+88l+yydABwWl6rS%& z|L}i~=QY6ll>mTcRt0qmivP&}KM|&-n}-(w091e1=C-o-w0!6AcXsmea{EVq`_4EP zj{h(e%s=e$Zs0o;{KK~YVwV5W`4>z4!&c5NR_{9h*z9KIZ1oS1ymRy?Z|ir4R(a>h zPxjV6@4WKPG)~^m_V4`i&N$B2=AHlm49Y)pFKbJ?cjkC!6b~&;>30?Z01!}Y|BEgD zi@mIU-|Ykdq+Q+oJnU`lyeJqf87Vjg1qCP+tbLrUy}Ve}%`F|xJ*+6CU7g*`UHkxm zf0g;4TmYcr*Wz{U`5# zWUeIufWXtcZ<7Bbv&aSjIwAl7g3bTPXo>&;^l$*6eg417gZEE+vGekB6Jlrg@$q4^ zx3*;a$D#i|{$CaTt@*!(|GFRBKll5$?%wtG5S*r<=K@H3jSc zvl0IvXZ$a-{>u&)O=}x#4{MkATj{*FGJ6->_v&`BviGugb)m3#`CrxW|6#WOvf&^6 zSG#@(?9x8~98)#`#yk!H`f3IMgN+P;HY#{e0sgz*R1kFl|MWava`3;}{X4&>|IhjV zc7jTJ{|e=4Z%grySXxty!qVI0(?9&)C;mCX0+0ac02}}zfDAwlU;wZJxB&bBVSofc z7N7)B184#C0VV)TfE~aY-~sRf1Oh?;k$^ZrGTlG2jAl3wQ?nd>_c*fv7-iAR&+(NDE{JasdT^VnA7-3Q!ZM4>SYX0$qUK zz(8OaFb$tKC^{&1C;=!*C}k)u zC}SvFD0e7-sBox6s4S=ws9LCYs6nV{s8y&vs0*kkXaF=aG#)f1G%K_Kv^2CDv;njY zv~VV~jP;PBw+;rQVc z;Pl}f-~!;{;qu`c;0E9p;SS-R;Njs3;hEt@;nm>H;l1D^;j`gu;lIN#!5_oFARr@< zBXA+eAs8UIAcP`hAXFptBP=0+5q=_KAkrcVA*vx-A^IUEA(kR`BhDipBmP9fM50F$ zMbbiYKng+1LaIj^McPJsKt@KULKZ~UK(Mn^=aMVCZ3 zLH9?`KyN{xN58~C#Gu2F#xTeDjFF4cg|UwDgo%yGiK&L^j2VwvjX8;ViUp5Fhb4<; zg%ytV4Qm+d5E~ks8e1CM5<3jL6nhl=7zYlA9!C+!0VfWp4rdPM78eVb2UiEz7dIET z4|fj_8jlW75zh%P39lJ%4et$~6kihG8b1cV9)AfRLO@I)L10Y~OVB{DO7KQVK`2Y; zNSH#{LAXN%L&QX+LF7YJKr~8pNsL1*Ol(OUOWaJnNdiT}M50L&K=O@bhUAHqj8vY~ zjWnBdnDmkik4%Ehfh?V@pX`hrn_P_Co;;oWJNY>UE`=n86Gaxq2*oWW38ez1H)S#9 z9OX|cdMa(IP^t#19cm3L_k&0HY&gKH~xt6caC#9aApTJTnwCAG1Ak zKJy|AEQ=tE3rh*hIx7mRB)GTx(%qr|CTrGSmLN8)1QYvyN zN+oJ8S}eLJMj>V=Y~^a?ZsmF91LOx3U=@@VQWVw|Nfj*>s}ygQ_?3c` zMwC&MKPu-aAE+>?c&K!%La8dLrm1d!p#9+Tp+gOzrl^*twxdq3?ylaW0jHs^k*jf{ z$*CErIsOs*qv^-$kI!0CT1i@4+6>y>+Cw_%Iz~EGIuKnM-BjH@J$Ahyy=i?SeS7^* z19$@+gK~o>Ls`SGhQ~&{Mv+Eq#`MO%#*-#QCQc@Ors$^TrY&Z$X1Zq8X1~nU%uCFl zEEFyBEN(5OEi)}ItR$?`t4PP$GF&IrzC&Rs58E{-lEu4Jyhu8VHWZjo+#?n3Tg-ETdVJ<2_Sp2nV? zUO4Z;)QmTScZB!;C$UetpI&@)d|G@leO-KK{FwY={J{Ql{$&9$0hR$nfs}zEf%`#{ zLB*eepDjKQeWCsm{^dAWKDaUjDa0{kHk2bYHS{q|H>^9HG(0%`FhV|}CK4^uBXT`T zII1ujCfYuFE`~cMJLXTURqRw8M_fkSuXxM&sRYi1tc1UbHi>gdd`Sh#aLF#oYboL> zm8qDi{;7v)s%h=%6zQ?)k6%r{PG<0A6lNl2dS~ussbqC#(_|-S|H`q;SJMl_ORBRaMm_)k!r_HQqI6wMMlIbux9G^{n;94R{T4jeth)#`7k#rnP3}=AjmW zmikuO*1R_Cw%B%HyI=clhh4{Br+(*Rmr~bIw{Uk`4_i+~FJ*6TA8ub#KT>~q|KIQa z-=7BD1}+C}2M>o#hqi|GhF3;3M&?G9M<>SQ#)iiw$G=aAPV`O+O?FKQOm$52O}EeR z&a}<)&bH0*&9%?-&vz~eE_5%7EcP#nFAXlsERU@yu1v3fSY2GxUi-0bw7&Pl>c{DZ z)5hKAr_G;R!P~Igu{#($86Xl+$u8q=!yeyW-@eTL%)!TltwYPhizCmYU&rAms3#d< za&Xlt*JQA6&=jWf0*cZZ=%2$Ec@i*N!@K2v#@V~NtGyd-Wqx@(4uk+u(f42bP04Qi^Xc%Z1 zSXh|%sS6Gc0RbK!0Ra^e>HUR@je>^q{>H|{!9;)mkP+bG5|B}ol8{m}(b6*Ua`DQ_ z8Ug?RUf}N#022YG0h$6DNCkkx1VUp1|Be6z-h&hP_t4=#K@HTqk#O(`KmZ~V5CDYz z@1*xI<~YIyT!!t8n3Ig2?BD~K11l^l}VKRkp*nGARq|m!F zgXY-c2C=|_n6#jW=}?GB&#up;&-OVuVy@nE=YB8fhW6U0&jg`2GnC!ka|fd7;v3`^ zv`a&dJPF?iHlWM|6=yD#-T036jC(r=D30}>uNnHDNL~1`A=1Tg%6+vc3Yb$w=p}pd z$-f}oe{@QRhUDCNK^dP09razqdKP1R^u>hz1%@GO6ul`V|M0;_BOjcKAvh8-;7$!3 zC>8UZ^clRt=*BF&_A)vZ@abCl&7XH>!aWH+bbl(uPD2K%3BC!;6uqv0=s!2Qf$6%A znhphv^z6e=7hs64?gr#ZVZdbe%(3Af!fZ_4{RV%0*?TH=8|W&Ah`jV%dwVG<>6$EM z;?$gC5OiDNVbhqz>ZMX?#_n(_-MVPthpms#g^zX0A-p(c9-CV(h5r$(dMQFI^OC%Q z-gkGSATS+>hPnutyYmve5t=8^m^XVvrv-T-dJevOx%b`6?mop3jRHU_cM+EKsaz&B z=nj7nZw@l}ZmUS9KRFvR=tj5a`tBFxy$rjw*SCuJyRd9g0}69EG?7%{DgA)%#ejYz zjt5-b?zFhRalVX$ud^}+;WzPx2wa2vo;&u{8VsS+IcuKh#(ta?iz-dM2)6YOAMjn? z%RFnk4M{zVASbELD08pzm1p*EaN$85vgs#6bXQJZvQ{{X3C=w7kXbVf(Hw}H@}sf# zy}hGD9O>uC(oY={_pI`5fl4uf_<_(PoA#gzct_j@L<=Ay&j>@kDZ@01L}Z8*860#9}%OY zK@B1u>!YHrG$oR$pv^(^+{yXww+M+q9t3~D`obkErglv&WlFLbkQeaoLpLL^=G{n4 zvyf18&l1H0O}ywLE%SRERZ1*%3HQvi%;^}YA%g|?dcjHSFK>~nu9G6_wI@)~7(Ruq zW*WLzUdtI(?6=;KvXx($_;}_@!5VjB$s%1_OIl@g|dO4dB)(N zai2ka!~G0fjZl`6sB1)afDC^zeCN8)Akj@A=R=vV**QGyb;k~%U@*P~%U5$HNccK} z2HMDhtUQ$ii>thD-?LfHR(f?FU}kh1bPNjUH-2y5KK&Ru2fu8w;CsgT^C7~++Xkwk zBN0ms?R}F!XT5Gd{917Tc(Ij2;|OiSw~X13l~O5hQEgR0+ww8ym(1#mdR#$=3X7%; zC+Dqexkx~1Y|kGKp6l<_PXc^de|6z=rg|Q%oJU4N6xz-2l>SH-UfH= zda;}Lu>{G*7t=1GFvo@96J6&3?hN5|oe$_CcRBjP zq|K8ud7eQVSHol_*}cUg`-K(CDsCx5dJ|_Hm)B|}&*(`BF*t)FZrjV^G-!1fKE~JN zMtI(5=1bSLcOOLH+GhviH;+8&W^^xg8<-q4*U?Xa>Qr#oe;BI~0>oW%yy?*G$NU)0Ond|3#gibW|n&&+VKPVWu4O9j6 ztv8b43(rBq64eL?+of^S>r&$vpOVl8uW3-PRhOmYh46=Oe3Fv-Z@PD3B#lp}A5844 zmI+2u z%m4)Rd!iXc81dy7=ovd0hv(>LM&@y#rb2?Dy%l0=};8R34E_H#GfYiLlt*cR$6Qh z6u^uot^)I#p4RD{vN>83=Sk(x*fAbKbamlT)HP_Y>l;LP+-CqEziVDF55F^IhrTv> z!Hu~Dy>AWDe{kA!T@hC9-pl^&{`3QT-Pz#>M>_rxVk2N&41O8y@QcL5LTl`V_?WG6k&1)nL} zrSpu6$X08PXfbnHS4PKD@4!~eJ;M2fp!a49K@&Wzq#wfelbw{eRWA84k+ns4;4Did zBmJgP2&}E(DD=V_;)F2<1K4P92v5u5;}0Zmdy_>$f(019&*-3gBXp_v*@}ieU@{=@ z-sDDT9eJDBiac0g=lWr~7r#4G!Zt0M<(?cPU{?_xg+0MPF`Z6{B5KF@R(LI`3^{Ha zoCosk5Bz-NpX|#~YEkN7)_nb&EE$cJ(o5nmKs`*w-)-($XNJ4ek0asQ+2J_Um?QXu zq}@?fK`6^FK5DZeMVL5#fsUN{WVHLeI|S+*D9i|o9L1TGC53s;DnAEErp9s2voaR* zkA3^yF40dWq5-{Dii{GchxRni?aX|>)*BTdpE-x3T3E-JPB-C!hay$x_lfMG_u>%J zH}|l8mT)RnGxL=_iE;+gNza}C9&h=I9!7F?ujel0tm9FKZy?@I9suD&9rkYeSi~Ta z>z*YSwD2hRlHeW?^e~dq`!Mg>d$F+}u80B+CCflDapV<{*tJA2_*IuHR;IMhQf|Fj z>crh~m>Qs7a5~;K>O)OpFoWVeB6vHxbC?O=+`%TLNA=l@@04&M7X+XKQYFzi1^in2 zp1$5;J3)yKHCr27Z|#`dvrI}JTt=MZ>7RO(fNhjdosH&@&S^*%ZpO7kNJWqLCXZqg5n#ZJM!37EHiAC`IrTE3-^ z0{Dn2AxL0zw|3JenGU69qS~MIY6MGQ3OIxE_@><1_?PQ zhoXC=dvQu1MfAhDzHZ{qdHqpbodu3Gqq)H<7s%yB|77P8Ig?5NYg6mfbzKCI1Z#;j)+XA2%OjK(UTR&OlV^#Z01KQk!G)5HM_@wmo7MfT zpIqdqKPr^v#EW9;j!vZ9(ctwe1hJ6r!LDW5+ww^ggPNs+sd`4yQIdEsRcM^BSx(Bz zIj#BH9uHBwkVLbi?+i3UgZ5r8F~gsdba+A&tzlr$TstZH*^vuewVu#ArC6$EA^u$%E6pU;+Yz82S|M#gDb9(7Um3N*eTB7`iC=!~HIG_NLkeZO}FF-)N%9102EBF*{3JrQ!9Vqb?6a zMhGkDiAqItZ3jGUtSLmcTJ}{L9p1A!KfGoZIH&WqKKo^Fj1=Rye$exrF}ZAbe3@V% z*_wuh589xDz+Zbo-w4maNGkX3FHZ1QX~|p2iZoP+6pW;flr@5IxQyWrqK1y{6f2vk zbrPPG_d;miWAl@o+6tk}BqLtwX-bvH!dQVF3cG&ZUh}8La=@TZxZ7T-`Vd{;xjs%N zDkp!Itj(}m6?RU>Mws-KFUbn?r);Co6JvOj*j`WiD~u*DQ=U2x66rxOU+ZRVDbH9| zH?hPzl%XBGtFE-@K}V}UK@qe!DINYkg#-GJ2<@~UN-u|^XGf#2iZzt^;v_QbeBKfy zi)`4x@C=BL>o}*;TvHo&NIniz?2@***b>VN)+{LGSiL4(`5EnE3`sm}dmKgDH9c); z@@a;Aj3#T+GC%cy@9FtiMM#9Rf`q>U(i6#wh1LTqGd&#nIPqjhy27Hnhtg28nST~t z?Cl2&C+fT{Qji!A4kuC1@ME$t=QmhBqe$I$b}22UA-RX=)0hCJ6rdTN6>b>gCnK|S zK2Y3mM%X%Tkx^4bB6C?>;^uj{V>UA;RIL_2rFFJ-iZPNz@=}o)cTv9@Tlo?Hun84f zX0>fH5ewO<-+{^F$;E}AL!A}f5y>*QRQ06Mh}2SJsMQJ2lPnJrVs9tM5h^EvnP9B0=V#1+Wm(Wp}W7MKaJiV-6z2>n;N5Q<1Bo8QxhiW9|M6;0VZZQPX z0GKkaQzroh!cu4z@#!D6Ox9zFo0T^jyldeVY_PQkr7W`Cdpu#aT7>c#DGnc*5_PLo zY;;(TR)5#)stm;#(OxtdMcifA$4Rp2DW9!3jZZWIA{(rAdHqUL5t;DJ&p41G$0H@m zqa$tcdT@yekDNYL@nqD|#ugZSy%#j5y;{y&tE;1F;uT&PtNO;f`1lvlOR6KP8Tml{ z)!rI46?*&OM^%7SbXhXd;`!RFl$%uo67LzyGOY#YB+Alsd3jN*&tpkZrnS$>VC992Idzs;fe2Cw5G^&s2TvtChVD0AszVNQ+&ih&h;1%=1nW%rO)@IOK;5>@iK<8(9J@hw=7CU#R7QZq=H~a8tMnruFisn0N zvmhc9chTB%FLbeBvWwD*1w`)>WR|)ka-;+y?%WxoCZu)F6KV25GHqMvsb`4@PniWK zB;YI%!4&<%;%ezcu*fyJrQWf&>e$uM<`Z&!rf`Cw+L%lA+rniv(9`=QAJVtNnfBud zW9s~LmgZTZl=h8r1);#RU&)+nNLO?V7f0bB5tmJ0)1mH&^MV6|-_E(et<(D|TK=-! z@Y_YJrxsu3DB$tyU9r+ZsGh=JAFoLOC?M#@kIe_9JcOQ#5pdL9##QOW;-=94^@*+a zVy{i8)t+(GqMOnB16Xf3Uy-ifDK=Q9^e)wJ4D>TI0#?)8Dfv*Uq_09AkK55GXR_wZ z7#bTk<>9c6;>aC4$Jz~o)Ja;5IGO=tnWL+tP`3hpgQX76z{RjLW9q_;7^Dw+N`~Ag9~`tMK8EnD zA~~MOm=!iQDPPlFH0V zu%$WH4E2&c^2`_x2d5{w>wX)z4bklZHSL`RD~Le~<|FOLDE|H@~Ra91= zL+ER24yjw1<0@QJVOZD__+`H#^mu(qWI0iAjr*|9NbLKz!IO$`qmcJoMb?{&Z9=o7 zpX#tChb>dCb}DNK-I2Wb$Vb1F?SBo2mL^hA6d80bmTq`a_HTRM?LNKNHE zakZ$TxYwqYm^&_`H^ZIuki*Mi;G?%vj<|!{NMqcHuX91n8mXc(;l!Tsns7@mLo))K zr5C^=iY~ntu)|4FP&LJvGfKfk_yen-w=cSHVWVn4s@J_D+3BNT0jRxgbPkb}$yg~r zz~BZ+E^$;Fbw|}93kFkF&lZPIfu=h3srNRBhRJw~j4|0;OJO`630iX!OU5zHpgbID zqTss;K{}gp=4Z8*K}T|pP9?SJ)&kWk~gq7ev~~tVrv~#X{{4dr-mg<6NSDL$&W`eUk_0N?SIuwSH*MZ zotbe8AKqxZ`B%SW=6`V1ON{j+(3gb`TXGj!c&Wc16%PP;O0oMzB(ruyo4xFmNC%Laee`JLdEFut9~Z1z>aMpcpMCp2xO`qxD#D9GqSgH%oPAwr{Y z7y@9PFhGjjtA|qIARUe~lRh%9VSMyjNvB9^0`Y;f%0cJ|!r;PY$#2214U5?hY1U3t znsDG5?PA?%1C)a~@^q*Xh_CCY{b~JUu46xiQ$bZVpA{CLFVyqrXXP(8ZD= zP8@cDf2forS1WAf{8~fQzFsSuBlULkBv~&m2ZNrM=E-j%ahB6tE{o=Fj^Pa( zV~dOphkktQDY`TUJ^rd%lQ^-w5BjVYQDo=}w{42|`DeJQF5LKYgd;=m(Bv1%OT=o; zSp!zIL?i{;i4<3wX=qAU)MZ@-VCbkuxViGqULgT#4(_N(TVRkjlwB4HaoyrWjy^Pv zLFv*Mq14*JvZ&Qa4C@pLbAOxsFgR~`EVHH}T{jgX5n$wT+nLBBp9eHp)<E7>04b!xvylYKu&S;7t0>+C{FOsiPfs|08lXt~Y;ckBgPaLN9Mj{81yiUY%#e zhK)!qFf$`mW>RTLLdUE=j3vvKXk|=Jm1M9%E@BQR#qF z&(?t#C;_7GZM&_^MHSliS z7NtY(Qdak=+_f#MG_)eh#GQ(gkzuw6UO2tR(lfd~iEheGGY#+84H|!91`ls)r#Zz@ za{kJpv8KOw;}0=iY_HJS9-EJu1a;UfbkFrg-!;nuqYN#;1E*c>2chGlM@F>jI)9R3uV>B;qKl9rYAKKO3lCn@DK?9#bxonE1DCbjH zeS41e9_xcYq|UY4l(|{|5&hD`!yNBhDqYp*ZrZz?mv4o{Cyx_}O5IAxDht(`B~1uJ z>s+Za*$!S=#Y>@s#8_H1p;JmLx359OVYu?t1((qcu= zSzKFNqvZ@B1c$8acz<%G)EuKrK}`hqY@ez3zHjP@P_+GlbUqXP8fPt$oTMp>Hm^*} zUhX>Y$QFu3;w6#5feD9gvkaPI+)h!UO}u}Dj)DZED>r#Yme0=iDB5nF$A9{iW1cM= zYi)?dM0Jenv^S15dwq?j(R|YFsv^Ad4Br83wO9TLo;j$w#XCTGadC~Qus?SlaK%S)5+@EsR z;b3K1mwD&0(Ps!92gHq2$##{A675!u2%GUA6%UYJzY5;~dH>+?XFo0>wK4wo&8y5N2Toh6e% zdb=qgvu**$K?hY2EE8y1n4TM0si)oFb_=$=+6X%4-vRBcNWyqGT!uCMfq}Vt=bE1j~S8kU#9&-jtKr8YJN9c1wN7$KDjwaY1x1{jWO0+ zf`P>SbS0|R%JH)e4eR%vr@K56ro*gNT93MUK&W-BE>EqK`j(kvOd z{KnXMbIkHSd>eZhY_+0U`_jt5ZvI-!u5^4S|GJy`mhx;;JzD*prxH6XJ32oeS_($n z5BVxweC5v*Qk_cptMbrp=In)lz5^=J!3fXo8(*+8QGZ+LSvhZicD?jD*QWdlsZVb7 z(Vsx2?xfn3CrhkqpPiA-`o6D+N>+FZc3$=!iom0;?V{q*;|cRh142WXMsA?Q)#9gK zhaDnvZMvq6Y1kXmIyqHX_oow^H+~aC)LS&-M|i}X2RdGrCB1J2;sA*@6-JuiKzFEZ zV%w6HaVn<{$poQr$e3r}`_5Zf{z2;dQ$dyIcCR9(n_Sz;B4^Sa+%$bN?=DrbQir6k z&FgClWtIDzOzoVx;hZyi@qid8V{g-{yq%|K@5nlrCLy2WC2+X>Nzl$cBg39yG>0vmo&LYW`Va?!>AqV?&&Ea@uv)Y}}5ZS4uFc zZ9Ic&!0f!@&bL-!IAMNI;OQ4W$2wGrvtLd0Jr^Z?3t7pk3@ib0aa3=aASF5N0Qz=s z)@q9Y^8imL{AWgtAYvAmk$CU6Q{&w0_yW6`^?>NLGoQB-WnIHE_L)NGo!GyCuqD4C zjeFNTA2H9StOx_lAY?0UeSD_{z8=1ABNo&vcJ1Aj(ct8vU*Sb?3n)F`!l}ZOhvzEX zh5}z?uOW#-5Vgmjm}mMkzx4~=hp{ya&8g*&#^ma2KfiM=euuAT^>wFcts%YQTC~2n z+LvMPbK!m{x5pL*@5gRbu_D$;9OV4iSJ|r=v{_1Qg-aoYcV6^|OH9Ef?Wx=>W2Bcl zehy=9wdbpblo77H;ND7Gatg*Tm}VMl#jU?@sBN0Bvjf&i?c=V&^_JFM#;<$}(L@rKf1?J$y{bN zMo!awYs;V`zj_0Ekelf_i+e6+(F{ljZyVotjc$b4$i~ylR&ZTP+#E98cU5SUxA{-{ z*J&!vTE0u%!`JbmcSxKcr1y74>U{qSUVd6$U=_}a zcd_@KtS7mt1tXN-TW}Dc?8rZ|(<^4pMU!l~oCq%B(qK(LuqxMpIvD*{4C+pOD>58~ z<&8A2kTZ5{M!PlHvobrP|(9lT%4P|b~Tl0N6Y|U;{@Ji)8 zKlNqOX3mdjJTLFG?Gvr-(>)nJjl-d#XH-4yWNYCS5XCVG260BJZLp5Yy|2Mc17Q3e z>g%DKckL0iV>^};9L*E?sYC<2i+f@bxn7w9`3fciTroeO7J_)%bpoE?(SqoKXIbA6 zuD7WJxY!5}{6a?zXFObMm$9@9w`r+_Qup+g2{sFnypA7(i`*Qx$7d~N9BOyJ*(G2r zoGW^BoxiQrP1-zU&}I~I%0rn<|F{oxY`dfYq&eNgSIi^LpKR;Cx(QH{uO`W63?_;~F+&$5up7_$#j;2oU z>!ok=i_Bug0is&+EMrm|u^$i}BwKxd`~|>K?S&1Cq?mBW;Cn9XphE3x{6<{cK(`v~ z`U~*XyjvP}-(d$V`u$=|bj0su9X>UkSG|ng%rZ5VtI4XnlN%X*=HB*jG*A<4dZwSR zxez?NH8QQgr~Op{ryF~M)=RN=;%O;M)m*}7H>T)KcRMmtsm4NfXO#2ZDy0T4h4DJI zxNdvB^c?vcpWt`dT6-po@^&)CES752jfs78(qBtDQCe7Q&c3p3hMYv8zkmWi(**%) z^q{=gXf;vmtG|GBysBRXzvi;PORk9WO1d3Mg3o(hev*THBNCeK_~svOloPeuwT)rY z<5W@w&;CfBu{d~7(l@7H`_&D6P48!Ra@3_i%(I`iK(z|eCh0xL?t+_biEJn6BP&Z@ z&7r5gz{8DV`S@*K-mwmsETdm%T3pRzgwG?$xbw~dQ$gxVfs@7A&Q8dOgB-nYU+P8^ zItQyHS1*X+<@K?J`>Y*Su!K8nheZljSd~-1l{z<+r8fxVaPU8m+PO6;OSF8#7@2`YO_60dPnOh-YBQYKCD*AjYfkX z;({88xHE&NvSa%BrG7l3#$-P-zozCnIB!X|w+b0x<%lWcwiAS(>qo6j0pc=G zsu1grAcPFTgk7%D9imU5z(gOIfVPjCs!X}eqTQ*RPqRsS7qgZEHSTCmGt(0;Yo_*|cEF}in+ImMiTwY;*UjehNIY#JTuzcd2F|x}=BNgF8Iuef8^Wq!{_5L;rBR=-Y42nFhU(0(*0aVT``^FYBNc^& z^Ze-_`YBcpo?1uB3Wlfz7Gj-7K_rQzz^WkhzhbD{t=PtyiGrSm=mXEJowT)16)1tpa7q6g%WWo9kech)I9C-Ikgf z4)`Kz$7#hJVeQeNPa0sZw(WIcP`48tt+c&1-#{g%k}&D2>r|VBtL&?{hEs2q4{e3d zXTCQy<}bQ|LvLO8Qf6oC)gt(=nRsugo+Q%=JJ*?1*7W#4)YJWC84Fv68{LYW!-E#&7 zV~~0mxML4~QQ+c85FfV>GeT|6|Ar^(FTwi7@H~L(_B={BpQUhh>O6?h!+HX^2GVSrtnh z57ytd98E(OvuEutTW4+%GepTRP&LmGX*YN9|HPXc`8Lu}7TgvCZPC)rg(E3Y`mqj$ zSuLyfimW>3ZD%ndGJj%J)_Ng=t4`#`D+}~O*HK>Q*#bvg3iD*!El?J@`vFe8sDpoE z3vcRYc7d4fG$n0d=Y?89TfKTas#^QBO-37c9K7bz*BOWp!ed)W zi(z$M;i8(zaJVd3>8*|9>9iG z3`@sJt?9vsUql@Y>+|MtDrTA}{Yh}d7@gPXJ&vpGgdn56sIr zWu|^Se}I%mKy0ySNsKV7%+eRNqFygrdm9-TX>~(SU95ht)%0MyzJo=A(2`!o*WLY zXDT%*U)@30{eyl)m18J`p=+$5h7LOmWBA?y=|j1LcCUjev0yrTIJQSr&!Dn_cZ0J) zQbB+S?xZ?=+H}k2Yo_tZRM8(9TM?@i{;nm+ADirm)s3v_3pN0HS&3mobVd}WmcKnB z6GnlrPGwXtMCk5Y^Joss(@%rGUg*^zs_N^PM?=Ft_iI$A*TohJNu`{nT`aMt>G$WQ zy$2oMWpOlX55jCxg_gRw!pkb(Kj~gq=!&n81J<=SYTV2sO!0k zEM@$4dwK6WHBPL?IrwY-0tC&{!=;~5cWpP_pNVR>sJF!y#436(uT&?2t#=BAJ8+Ip z`gSzl^|qS;D>r`bop=MKMJ2pNvC>2!`Tyn|fS}0#@^Q)gdYBbgk{dA5_LSO3jR>$hfb!{|+ z=LKFX`u4o*7g_l;hb`t8uh{rg3GRPtEvlw`N{abEYzbcucb`)V(F z8)yUnG=j!Smb;)n7A)M{>LHiu9P0m(<0^+#+j*3zJ%lz{`ziOxe@Lp$d-~yIByo40 zJhg@=eDPOR;uO_eAs4v>vzP2HD#fh{*s2>Ue|_N7EO&q=6TVB3)-p#OFE?&0_tmcz z3t<}_Th6oS3_0gT`3_E3uw?TQ%9Q`d?B{r=(d2`DPb=FVmYPw*y+F_1lDfp$b5P9sFS;4_}XM^M6ru*O5 z_zO-_Kj?A1d=;Iq0H-!ezlefTEC_10^lJlL^9<-K(MVli(r7{2H`5$Zjjq`;Hq&|Em8|T7@Yr+Y{M4M1sI+MS8~b!L zE5`HamBA8E2kcyWgj%9$jhA0Ga_X@P)BA4}9bh4K@bfQ`=ZUNKUhFik>bE>NM~ekd zpTxK#CCqT!BvDJw)q9mn6IVDYt_k3HiVSW+TuXe*CLh)D;d~YyeY~F>4=O5=A(*j? z@~1=lu#K~vhh;)6sz0CI6R#c`Y+TcyCB3Yy3l8fl>Y{2`-J>}Q^2K}p_^T?TzLnqI zd%NVaKH~_O0Qn1e zq7ItID7?uFIn-*ZqFRuSuSN`_7T;q5cYMdeiO~#p#J!x zT|ryvsDgV^Gf#f*V;v(^R^svmCpa$i&>e;&AHDf1UUsLA zKlFP)Z{J=%D+t&rdw1`z#rqIKKrPb(OjJIQtGI(>)KxwX+`_7566Zzl@ICZ=$h2t+Au?$yj6kCc`wr=41= zOKqpkgonkL935LqHX?l_gMI?qJv%KAT=z51SJQ^H%h#99MM?Zly|acsBI+1cDD?F~ zt->5ypRpe=z3NR15{_DkQcbA|d?ZYFg~iGZvi|}|gVbt_4UY;;-fGgC3KH@iZO$(| zk1^@iuSAQ-CjR8BPTVCGQP-#V&O-AmYsE4Zm4ATM6nU^n$KaOSJ^c-oO@)_`qyGvn z@$&c+76UW)IjUS+o`S({K;a$Xc!cW9{EXIq7;!fhA0Q&dxIdsebXGe|qs5uC!Q69VUDG$!4cH*t7$u1_>(2|rrDe&e8*H>0A^@4~) z+s|Pfwkvm$udq3C4{yn?ua_P|H(^WLiU_n)5xRXWoVA0Yh&bYQ-$k3O0@ z+6n3Qn-o44^nSC%oxaknn$;TrzX0t(62G}vm&`OnUD|c{5>Y*(x-}5on`DYz^lLGF zcMs?j=so#Z^qoP0r&BsXSS-di$69%r8Zp zfj@*@4vGa~=9?lKVG{V3x6TTW$>Su1B0#MXK*la^addw`b(SH~{zLTF(ZjN}`L@U0 z^Gv|>M>(Y1so4#YmK5E;8yOPOrW*3QVs8QY+-HLjfbxuZ}DD;}onUYB1+}O4wOsch{9QdxY%;m`#T8N7q zO7_wMlO95gG^`zeiSAt9<7-z1wSnAc+n9#}nXK}8sbn1&VRu46IuQXCx_%Nd&0p+G z)O;APdC=~080TTL6UcMSQ&xD^=Z&FRX{KpiXgu`P?R+Q*6RFqHF`5iue#b+M^naZW z^^z^`lKnV|XK7HqbxBUx)u9Z@9^j2;r+OZz(pg_Yk#uGW*Sq~B`B|*8x;=tA{ymUC zcgZrU^Hftp>AcxMwZll!EZc89Qxi_hz4E_(o%pZxKz@(yEv1%p5N#~1mPID>F-n3{ z69ch~L#5S7O*{TWxNEAmnbjak>FTTEUUk1} zovkV}G42zOoSUmRR;i(h&M?aTQ<`s#x>q9g4VKtf!$Cfz%j)2I{goFCb2qp7`JVL# zT+;dU#)XwP7R{)7fCP|-mNAtq0&tXG^om36IRq~?xND}ZAEQ&&&KrvCddPYuSoc1$ zCap_Q8dv8?!&FpPKktoqo@JcN^m6&SH{&Nhk9_erl|yk;z91v-W%u#F>Gz3!H>e<# zw5D3qb}C*GEYmoBAI49mD%81auqdgKMs>bt*l`TntSRXI!eKgTF71$&)@gzc*UYwa zQc{RBOKX{{W*Cy?%x!e6dMf#y+C8VN8*UCFLm6l%pHVKW-Yn5~LluqP9WIYFx04RF zh(Ib7(G(eB5u%+kR>!N>I}Q5T(M(`rGmx_##-c|cbDj$Lt7M5FtPQf6T*xpaN6%OE zL6l?_IA2?z^;&Qug-pP7wo>tqAI6FC{(Ac*6mQ%g+J&RlA-%#+Bnx`~N)4rlOrOCcu?)L>r zp4*CMZuvGvaW9;@YKVg=oaB{|rxKu2j~r zTG}ipQ7DPs&K#Xj3~$rUOmzIbC55tj$JU_>@(sOx-maM5JTv!kp91S^TD!~itat$#&*-q2=fY)f!wHa~mqtR12! zj~aaR`VEVz5<6q=O)&AlKBPO8p?7eNhpS~1*2wJ|+0MmpoE9G011G?ZyLLu2jti*% zl|rDm^M1Sfpv`U{iB}UK&q%>1&IeKdYYUYoXC}_t$`%OoKe1 z=={f_2`$xr-Q^z#*D>;;^8^D+WDuH4r8Re&$FlURDhR>+4apLKltdkzWmE@7knw=d ze0tM0YE0JC&QPXs`bqj=$YHvwyir-rO`bC9&U+Z-#H^bYn@Z_dXmpO5HBL(xSmLxT z`?i4kiJkNtwxYAk1Ei^Da=CqL4byf3n$FN4J~wa1{MM3IrYl{ zeHOvAP3NgBt3*d;Yr1g;m5>dHzOSn?mv90&jk- z+E*-=3c1P)@3iJO`RX9(Gb@TeLh>@YGfd}7(OK70QZudZSPuHB=n*uQ1HI7r4!nGw zk16rOD{V!4k8U=92Z~gQU88eWNRe_f0?YSBEG38@bY_>%^=Y4?SkH3feWL1|SF-9w zbgL~9S`h_%=gi5KLz>okMhyV40#j3PjXn&-pe%rufC&j2M?)+F6QfgKVOUj+i#w{Y zTWfP`+_m`tR|TmpX0|zeSlPIoup`Sb4`D?Nsp^S)VBa36*}ptCK0nnpo~p~c8Y1c1 zX3b;d^sR@FuO^{v%$y|cDf16oV~J>P+liNUTZ;f~N{?;Tw_JSI*YxOZRja0#WmGQ9 zxqm#rOze&NuFsY%qhKZxm+5_XP{rv2DO|;Gx(2n(YQ5Kb7?o`wlA@n7Zq(ITa)pR% zaI$Eq57*!iwq`nq73iNc%bLPA-gI4u1v`%1KV5zv?7`dCt$pxMd`v&-@5kS=e-i3i z&o?qfF;L|>U_zv>($MOdfQFLft#j6HPO%)YgtG%Jaf~K8n(Jg>4LRk${H9ZutCuUH zFA#?r?t8CiLO!lcqBEEv;^TUb_SorYIxc<6~b&%QFTu-R>4 zCT+XMz0`g|@A-e{rq;ziiRCg#^Sef~3ntL{A#Fl0ze2upX$VPuPRq0de zpb&PnA|;#R;Y))}QU zM%&EUq!F~Ia})Rqq-ms^<8BX6f0{;LpseiGNu?Bu8Q=fPP*#7`H$-hI@=7Tx#S4M2Aj@4?v zHtn2NOckwOE~^Rx+P_OaUhlsm_pg#w47=W`;<1FMHyO?h9#b`8y7;<8?^j&lxLM2I z6A@atxD{j-yFa5QQ zwZ?bUA{xKvmXpu|*}phGvEtjp{$Ex*Zn;!2eb)0?$^&f6K7K3>s=oP_!C-!Z`;qyJ z`Yi4ky{M&_e`*aF;CCZ@}M`kB6h1t>`MVg3+mc^#7QAZ)Q zMAHfEknmt1Q36$HLt?#?`X64~gD*<6QCqZZPle%~>FO!s7e&PLo7y+8SdccFGS)a1 z@cJ5`kjxosi;1j)mdh`XJEJ5W2_}(phtNo8G*HdA%vjyqOJ2!@!bNas`T-;bNmj)) z!s(=?B9E8!L+6*&(b^q9lJzEQc^Qt)rSwpnxnm+*jCn1NE3UNL8GP*1U{JSMjihH6 z{S3ldjGe&=!LrRipMBR_+o5h=_`wqT)mvt?pDFVX)jTyIN)|O_pfQbsOd@xNF41@Fvc^JHF2uFF@t8?C;GFN?a;Ny(-Nfa8yVvMT|W$Uuoe7{qD z1jkmxK=pzp3fNm8BKxARKe!IxXk6^|UBzhyF=ts7ht*6A~wvJ7$?ky!PFjQPSpUeuJmR+bOXHqQy=}r*)AKuS|q4wL(5o zydW#Q38@*o=pD2Nc!Lpr5&88Sy+JD%mzW z0#iC?C{z`$a7*k`L z&rhfWbXELnK`kj);iGrh-xo)hY8yKXPs1!M->~6a)hB^XiDzP$MGa+xAdTJb1?`Kgd|v$mVEJm z$s+d!#DH3Wq@BSpStZ2bM&7{msU-F6?x`JK(SzgBSiYX=eHlvs0JkMXcrEqrj+usA zi|QT$xSx)L_>Su(stWnW)3X7XgKaO}AM(cal082Tv!sKx{{S@U4Q-Z9dAwl4jnd+M zqGW$kGCq|Ca&CuVeQD}OlW3L^@M|x9JNdYC&yWgh^%GB)_~adzmYD=xE?%@b7aY^^ z$V4(M(zJ9IIJ?5@K7h_r-SO@Dg=Lu@lvT`Ca~TXuV^W!TU=k}qBt-|Io~L#GLEa-Y zn~pJNeDD?Md9FN}w4a(uVXG2YsE1?YUF_>xvqVs-NBT{?)lz0I)Yn+Xr>d52=+0q9 zdpO|T;M*RjsYlj$&js-LLicI~+0#}It=`~~yM zci=A%O?5B1w9D-}Wte`DF1Gyh*fXsub}{M)U_14X;=}nm~xF zqkGQ@@Efdq*Ly~o+?c7PIYZ2abLuCn`-?`S&c-cI2 zyk~$ho$rIm>kHoZT4%e?uu@jrh-v=-Lm!xjmc66!J9C#ZaF@6g${e=wg{ZWf$Qp}dXn6R`wpw^v^Qm4sP;ZhB8c=GPDCH{}P_s{0sCeul%r`V>x$*3sCzM(y|&y`#=!Z*vj;U!_Z2i0%ZFJ;~|vZ4e=oZgAoS&>E3P)1>I(^M_fb$;=?gY-kF8ec*ap zPsRZLRPLt|aUl?;fG3E=xS=w*<*|4TZX;U-iv2#%_OE1CJ-L(UJ2yYE9d9u03$$a5 zmb{Qz^C$Kg^z$AbX2x%Rg+M~f`g@MHpAOBSl4^>>mt7S8nCxAut*}TxKGHu!bM9AL z^Y0%0KKap4lop%FQ;oNkYpwXgXU%_Nb7e04&h__J3aeN%NgJ+)jgaPo=*xk^hk31Y>7_X} zeHG|`Jma?9Chj6EL)&p6#e{?Bs$nli!90JC2EI0~%1efL=pP?A=z^OjDN_6}CYW3j zVV*wl0`Hf3?vRmkSlp(i>u>0<&ux`kXQJXaJ3XQ~M=xzGt}?z+e}>xAWm_f=P-=x{ z5q2vlj$>)BXYZ?HeJZK7^=*|woUgx_bgq31y6YWlb-jv6;5=-;Pl2q!gp)s`AzGV!MaStx@u%nChMe>c)S}Q~#&me2lw>}&QFWKW~*F+uQVw)%ODf-L%)%4(cNb0A29 z*xfs%{%>gU`nT-Su5uMgQKm*ooQXd7Em3!Nim$11?UB;f7Gqaot*LJDr}*PBswtMP z>PKjn$Ig%pp`Og0-+Ao!x#WPH;`!At(b;t}HfF)acVLaL)DYzBAdv<5gF)vQDdsCs zm=m)S*i3rG>sq9p(sWEy_oZWBjWP6#L}VpSKAx8*q>{bz|h^5 zm#D>)Vlswy=Nl~M=EwI+W~A)VTOhH5@K1B2d_nQP>w5IT$ZY6!x%A;jXASYxFM-*V zvM!I|#H+PWzVExh_r6G^>e6$oWYKrp_hu95*`T#L9e#08`&JxYv9jl(S;rKtwjIXX zf?gvuG8fwFu%uq_tc{SSMs9;CTDM>9+}o<*u_@71q(vIgcR$ao#j?pV(uJzDa{^pB z{{Tnl0`YQFc?MfsLHz=!sKFN<_cP0S6fU&-7g;iIlJsZMoPij;wPeQ-YJB>{gd>b` z-A~6tfm=S4V7+sl*?k1Ty9yQ$&~sPRUzGm5(p%rs%mpna4$j03Fv#l?!6$-8 zNzM>jd8rLJi<+-P?!GP@6Fb0!-y}~A0znvk#32>#JH8R!XN@d9M);p`$~aHB<5Da! zokpb8%$CaKX6r{VIIaGWMS-8LkMNhI0(Ew=h;RH~W^)#f#E><^{D z{T9y|)fD1w2z*>5^T(6#UKzs%^x0%nbLpyNkbu8l5Me-YYs!=P&_U*7#^2QH+CyCR zmk`ulx-LZ`=UeV~lELox&Tl+1rQZ9g72|l3K0B!pBl@^UxBOW8XWR@1y>0IxPR)rX0u`Zg`&eRHj|HJ?&5C8%K0R#g900RL5 z00RI300IL61ONpP5fT$1FcbzAKwwZ7aDe~X00;pA009C5{{ZctKj^ss0P$x${W#-} zIOC7_-g)Pqeo>JfdiCqa9C7~u8_&)%GB)FmBzWWgW->A|CMVKjWBzNNVqm*-&oh(% z06WYS7jAjy{!flL_;b%Z^Upm00Lo9xo_Xh$SjdhzpYik0{51N;M$;4j029wYNXXt|cZ`f2h{=h` z`| zgS6p$@iE8vxc>mijEsqi?abkC850weGn4X+84~R!Grv6TF*!fs~poN+Nf7{S58 z!Pv0ivUZ)LBWcbjIG>C}N5hSyAb6OV+$CnR$%6v|86G}-!FTQ3pLoc~$d0lz1rzX$ zj2s*p$-;ty$;sL>HsgtoCMG?i1~~Y0v`EfO7EbXXOE4^vARr-;nECV1KM2Uk$ia@i z3{EHBGB9vs26A>ND4d<6BO`8ioSdIX!HAAH;$vv`jEU_eSw4dxOCg+?Ffk#R{{TE> zU_d~Ot$@KVc*w!P&M;>uCl3$MW;35@^c)C? zE(B&74HJ)e$iT?jG9)9q(1DTuD8Z2^KK-(CVq=at>C?v{#N=d1%w&nKVli^2Ll|v8@W@cy5abwmO<0O*GGm$Z8X~T>X7Q@ZNf8&Uaqaz|CIU*@3ng0Mk zJo7m@KN!fEo_Wdij0{#RMN*=MVdU+|lpk^_+qZuF`*Ft~ZqR-E_L(X8@y8r}dFFm` z@)=RA;>5Vv!!n)YB6gpgWJE_3^XHy<=bqfm%=|cr&JoC>#7|6~ta()q!896yWNQjOnC*TIXOQ#!HAA0C(?Zb0A)t5op|HZpP=CEcw5GC$NBl^w?6T_Z8<+k!N`m+S@Z}@ z3Sy~JI&)f6D(S}@amUDTbCa2zjE$%K9Dj~7H<`}8I&|sRjpHK+IGik>fMPLNA>nF? zM6(GJjylNk#~gc(MDkO#WPgW_IR5|~PdUd}4io^yeLiHXVhamO3RNBC#h1z;+L!n|_1SuRFIpt5&~?b>JBFmZ7J zKx3V|bI&Nmixkz!&Tvt;9D9y%IXGD}=@HkbUcGwpw10|Ya22UZ6?oxtxfzKP2?G*| z^yi*^;#O;BG)fCO=bme2QI)-If}T&;jKB7&NmVRTUjNA>su-pcIAO6$(i)(APVu2IydK?;visp@y8uz zCnqQTG3h%fE2%3Gfa%bLhDKswprFNrIX@W4^a6wKQ#m`vRSL`M%xp3X(l7=U=2 z;;_hAgNMO-Kq-82Fw7z;!N{4yj2svd5$V^A_p?4fatZ7%L{15;0zBFlafSo$ucSR z#Oyg-6gA7Uq1f4(oq$Y; zy9u$SBN31ymJH`oh{ek0Fr8y0byJ47P9q=2GGi#v9%9bc0iGhmgRG@5Oe zcIRl$IOErjJ;p?YqbCn#l3t4|cam8xmdhoQZIhl#PG)D|0sv5WIadoEg&a;!!-ya> zNaLo=vkPFFhQ&4*Q#?+{SVX*twr);Di#)Q)Ex6i0!y81wfyw7sUkhrkg`#;_n;w5G zwX7z2C6ZG<@|PBLeH zcLC~AoW$?Xto!rNB2h5_9b_eCiF~;1OT6A+DYj3)ZhirZ*s+@_sc>V4#!SxYG_;!* zN#@BcQk)gBufS6y1!4+p8OK?JlAmG4$5uwsF+I8VoS%r`KmY_U!8PqJ56(>PGle-Z zoP0wUInjwA;b&gUtT?CC9Bhf_w;`1h$_=5)l2YkdElk0{DQ9l%Dfb*+bZE}}^N~KY zle`aJHwZ{AU<+8I^IoXsbI9Nf#K#%>P8IWx+pt0KcK zBv{jMt!n3_CPH#@OpDxcF$=Jxk6wBAj2M`hn8?M#MPeeTP{3GLrBS1cfr;8ia!Z-{ zM8g5e&XO_`7(zigG1ji1XG|qdN$j~(WyJ3%AeE0^M2Z z#Kgp6u^2KqoLu%}Z=I;bhff?Y#MPW+{NpOs3cYX@HHk4@h$MJv&_zvYz0I>5M2Ys9 z5lwO!!IHrhEnv#zB3!3Cy{tJcgauN$83~Mx zQPy(~))&X0LBPlk3kzV7A!l&0`rmNhCOK6qOhX>mcPuC`j~Ef9qV4M%oZ3;>H?YP8 z0VuxOjlSWLz+mOTk4`|V&RJA1$1^q>$(@$9qsGCUoSnq0vJTD{uN``I^&CtsWnHT+ z#G#&VIanrhipseyI}@EeJ|a}DiuH(rovY=08jXxibfq}p@XADJ)zs)|s={@fM-L|)5U)8D z6Qk3fcCH~^i6oRm1)yUls;F}CMY~2*8mrca(P3*)VfOFjlJr>B1qu@jcrkb2qiNhF z2vvE?;EGP6VH1i2O@|zySe=%2Z8gj+F%DEJMX}>J_*BYju~5@t zWW0v?1=X>Ss)94vGN6TxM&9v@A17&@i_l>MUMu2fv&zG65pO%!S{7$v`Yt05HGB|I z*gKEPYI0h+$dG53AR;=>bv4cw^Z^iOB2|`#rdCkkAv|PzptQRThb^dTJVcpN7Bcy+ ztw6RMNvSvLPUujC=R0=v2u>#zD|FbgZT2i4)4IZ)Ft1{(qex+DW31VF(Icu_oTk2{ zPJ`SqA~xo73SpxoIT@$tkx^QqC{pz`1c#up&{6IaN!88EJTUOha;$*t=5QGHA~f14r{a3`C0BWx5(-{wcL?Vz9ARUm<7Ge( zUcDtZyJw?(PG`z(@( zBbmy?5;!fTZLC|JV4T9cBy%jEUN%E1++p!nw6XJ#fVHZ6*9A@J%7Il*U7Tf>O(F4F zS-}a3#st@^8ZCVebSoN5Bc6BD=8i^m=+xVCFSD`K3)A zrvQ*kDIl=B2W0KT-)7ThCkxUejGdxuH6|6n&RHXtR)KQNc8pLMSUAc{tCvdT`Mk8= zF0m|*t%Af+)BgaBr%&+!F^zrgBkbXfT>vPSqZ!8FrUVk32eB!Z|qKh>i=;4z-%M3V0=W?!xS<#o^d;q5(S6&^7Xs zb!E1D!7Rq#>z8*R)ASV42+0d?wXIFiw`!x)#~dRx+W_TE2L`=Po9m7+GR_QA({&me zbj2o8b)LQ)rL8OZ3v7AXPm;;bXJIP#C6eDEGqle=FMs*~Dgb_EJNU0ajv zCa12#?JrTT!$zS(jy9(*`Q_Ng!kVSMz$v*d%q!NaVz%1%85 zr29k)hPu$aF>E@0A_y`iY=*=1>v3+*p`(ZLHK>_Y8Z)9wo>ZFb)(MbnAt;6D`U=;O z9x{WQwyJ4&YUvh8?Og+PYoqBCR@RklW#Bq^t5ZO)Nuz3|IUy0!^{eWttshuC)ig$; zGr>4nAu*6ektJe^OBsm=E7BndRY9vNCC)gEy(`W96(>(_5%#TQ?o@u9t$ONV65A$t zf~L?HRk$t|7aAUq0XfVO*>&66)h#_iT53~%7|uD@1ieJG+jVaFgu57Bucd?JC_1wc z!P50jR=%5h)r~slv867#eNF}9YAhsFVn{UDe^bO*J{0OOH6gG7f00M<;@1diWv|L$@LTOJM*^*AKClk zQC7HmqnjnN(OqMymbx0{_cv+VO0B3aVty5in0=$PJ#@OKBc3^1=JuhW{{SCr9i-9I zLe{5ho>_&dg5YjXuK|GhxBEYNT+@$KTJrJ;BTdvPTB3{9H9PevYE-RX(=OC3stU$O zwB&8a0HFwE!O2eDwy9jr4zQ~XsRqt*McYBmRb`!c_E~pUSVg7NLYQQn9M$eV?vqvT zQleV%kfv*r=-{!9ncs*GyKy_|7VMcgPB5qO+{XfJP0MvOO;NT;Z|QMvD`fk|(TQJ$ zLu7xv4G+`u5%k3K)?$8a=9Aie|-VUn{|}gY~v2ydo@fKG&Ox~R2ZoK&gDPRIC1UI zDP4N%tlF-Gna3v+y%h<+88GKhY)m|Io;gWgrDIP^F!24sn8Fs-wH2Xyrm9S$kxg;b zhOydYFiQ9gz`niwY~(;KYVi07AVdpxwM(ujl-Ary!wW}ebywvC# zi{JxYBKB%cvmn{=7|*7M2`kp#awod+n=dN9y^C2*ZiYb&``2*Y{S=gmX=~Y}B8n$D z)b9N9GfG=>6p&lw7W=cr96nM*0BVa)Ed9Nv0BYtMNQBc z(A8@<;Ha%V#x7Q9OtqZn8)z$DS*CPMBxhkR7%OTeZMR01)>9&!DE1ulS3N$!zQyZy zw2Y=_j*Il5G^8X+y;`#iExTrMORkjH3hzS}{3l5q^Ui2)(~q@^cGX>?(plab?!#QH zLLFx2m8ky!CI*kX1vQtZwFdIEa>6kv9rUuH7GqbmwGpxkGBJ^Xh_Yv9g=?RZ;>+G6 zD#{KnY8Lz&Kxz4X$kZ;mqog7-R%A?jE=$Z}jYMgJu*)H1EE!KTI0~zxMvM%g_$xFE zM?F zmZ@4#vNMn|XXs2@Zk%+(RJJdHQtGd!X!rgr0xMMN^V6?iuwk|k!e&P-(GLQK`N(dgzaMTfl3 z+=eO2v{!90>h&4fZ6Z?`T41K-`L3~{;hW-8PRkh6w$!gopqlfOmXmRZVc2obk*3zD z0oTIR>IzFD+OLJEd_yv86hkKx>kej4+;korYV zR|Q${@MIFF;TXAK6=?{Lv#~A+wjH$A)OmxDn_fbHnbsJ0F1fU8X{iC2leFu0iHAJq zg-KWw)*+GuaBeK%uK7S>%W`l|NTx8hTKmZ!PT_(&d_{d#iOI)T)CoDn$EKRWv0b#8 zZM5p!(ySzBykT1gz*Vb5vbgmh-%}yfuZB=^0+i zEQPP^X*^t2*o$ZDPMT@5p;0`TI1?$_*|1tUF^O$mLL3#Mykbtp+uE}mm5P={@7mjX zh1WcpleUXlLdllRqtvU}{Z@aHTi4@QYb>dQkzy`>*|U*X@x@`SHU9uVjf*w$f>f;4 z%eQH<R*)69cK+C1p?^k(TDK&m>THL9EG`b23#rws|F zb-W~x6Oh0>D4mwUx`+%Tl(0_>{GPySCFkmw({{0E(~5Q0XI|A|f^^7}ml-=wNo4wi z#_?Y(gnSCT0+S6jzo^u2y7@VslbUR5H$P=mgWSz3{MuE$OGYgz^aEDCsBNR@;ar3x z8m^}XG9)dMgN?>&H~Sj$7i~ir5zPC6FHt$>m|S0_I>${^1TF(Jyq9BqVP^$1wEKYg zp&y+h#fsTm15o|0xiik=h`Li1^zplo(v(_$jUdsqi%DpdPH381Qc1G9l{`$xNwcZs zw#*I`Oit@^TLBGqsh>cp{b}j5U&Sio8QP`BwBwH)#-5bZisq-j{VRwpTxz&EBRS7K zx!ME875@M%2(S%9_{lg&U`jiC)2hf-doxN0Mx{<7ahYl?jjVQ8PM=6d!y^{C2aS}5 zb6`~4LSqomQEG%Vzw4%#yFH`!dY_ElgpK?E!$x zYVHN7F-dYGEziE6Sab5lAL=Jb{+4t<>i+<${>~irF@2DAm|< z=`Db_IH2axuL;d_rzRsOaD+2WB$;AZ6V60Y^w{GY456Aen#2EmqfmCSEd+IFBtefp)H1y@MO zu(D@vRY+?Bm7Y6EfO#GsF^3bsC_1DG)FHV(f+DXTj$FY(K^(y|EIIa?(_;(xjckGI z)Wq@GV=DnF>p1Siktv*?NW_RVOz>?b(8Sp{D&1W}_5T28di%^KB+RCFuPL$3)0t(n z4fvVP0=;J0BoxTGtRge-*rt6II(rm)mNqAGg)A1p&|18mqDo|&VaDuv_9^~3kum9I zj$RVYpiIIr&c&1Mr<&!P3RgPE6%`aiO5dIT5H}!Tc9d-{>|>=8pQ-24ZBIT$^Q? zDhYWM_BrR%h>o=#J4E>>Cp)egZ0xb81O&;FpIXdSrVB~1#u0lqw}Ds}G~4d8V?3mD zm1DpGhS|*RIX(T&o8k($m=G}`+ zymm;~=2;_YN%Oem3@4$$u<#fbp{#7fG6dKe*yq1)-jMNjr1dAAm88uBww zxUBt<_c?5vb}UO}vR;HBza1QKoKK**T@06mwq%KtUeOALr?bbvaUi@n;BoOW5j!=E z#xV@NYI8@@^#l!D389HP1x#<+=5l=iq5fSef|4-6OcLydr(;Ts7?{*+Y7L9tLCfor zfk|nW^=yl!WSX|MxdX>M?F(c0@iPqfgnmB)*=5l^`+Oq@6vHngZ1shL$xOt{vydMd zuGXl_3~Zdvk))?jsZXn7@#&1YiF5WWDc&$LooaPDh8UGneRlr z6@j+#V>6I#Z4RD;s%WD?>&18k7}b>c{{TPYg!W|qf;@;#Fsa6mVj80FaL`I3HjKLW4ZSmeV zS+`S1xv4Y3s9^%)USi~pQPV?2r%5`aOsgK3{W)o$hDyDbq=0W5C9=-gioO6ZG*4$7 z?a#_FN$~zZ&bptOb&ClajHZ3!0yG*kohJty z2Pb<|evhPU7qlgRAF*(5OJrr;43k%-Ch;5b75#%$#yw zu?huNrC0>=aF*=y*sJ@=t);U~+OY)(&yA3K;7eqrE5vXo^Zr zkgmJ695Eae;Y|EAl{GbL!l8avz1M8&%&_NkKLmi4i5Q$0Oq&RYIX_jcN%HAc`Ys|B zGP28udq0e)Tg^r^%{tTUy3JiLP1RFYUas+cE|rmcEUnW%Vzv4r)17NpZm4I*^-hK? zNuDirT0z}4gBP^?bkIWL!8Ua^>NfQ@+=nriLy4r-G_dcI!b5b)^RdfITA!nB9fnY#Faf(H7aqCxE~;$ zrd*Pb=i6VQ^o}!vUBE%NBKe*8JS^F;OL!RkURoD=ug8 zmEL23(HLdN9CgX|(;aF=Oo`p5a(+ZJkv;oy5L@%NJ3#db6RU2a5W#jlI~SJsQ>RX~ zt0+z4vcyV+gICe$!tFADZCl8=Ou2jZE_Dq>wq*8f=uY|hc0`S)3( z#MlD8cgZ_;+m1T=5YNmapgl}nNFr&qU33dcbJb?a>kQQ$Vy)}iy{TP_b?!*u2AtgL zLjv0E(EkAV`RIqFJ5Ky;suc}1>03()u!o|=vryVFw~PW8G@zW*4&3KI3heGc*Uan) z3bKg~cexw-U87bW_yqSUG~;BgfV!w{;Vn^;MQxGQe7D^&ntjFC@9x z>*_V9;IJI#y=pZgk=eYBB87r=Rm~TMTg?YARdrS-z{u0JTT^YhY1*l%s>O53i7PBo z^CV)Zd=Wo9a$1cllwYAjY+osooyK;UnA^8J`ohH%85m+ikqD&#BEwEb7@ka*qbxqb zdk^p=xPz&zv=gag!<- z#^VdEiLZLTMT_M#&p8>yM+F?>hH@j;1XSaK^d=&*s+PpV$z?}5EIBNl#w^t^_KaK< zCN%Y}7wKuV%^IQ~NP(lLgR56gsEWVIBUPriQnySr>$Q58^_{2ROJR`6iO7ZsyOfI~ zA}zh=raH}sGJOUFWMpFwI(#V8yvg>dQCZcI1n}xuvrV@I}QIWF5rkFDq8p0h{OGPD2onl4BS*rlR+Kt*5rRr#(o4Z;{RH%qr5}OrVp|DS|_=1SSKHJg6w(&51qXP}}wNTZU zs@83F<@Z~_WnoI!8rq9ATO)VN=VOq&Dz{q9WbT_)^#$9FL-wAc%kyi>$HsSax$U?D zRGQ660WJfEOvFt3>9vJ77 zwVg%R2r`yTuHL3LDz7VQ3$)x9Ccs$KhTL#|k%4S&e$PLiY>NrUWSb@E7$u}>f7ia1 zoP-#6BAvM`y>~pD`~Uynb548O(q-2^Mi4Pd#UAgf1R+teckNBZ-k+lsv6@Jt_Ax?Z z$Bx+|2t{p*wn%CeMU9&M`rU57zpvYM{c&Bd+v|EfpRfDl@mv&+dyo&M;dcJLVJeVS zY0B;WYPGJRTXVp+erQ{_hq+?ksV@AjtwdKKjxP-SufDN>2CWAM&U_YLQJ?deOuF);S-J*D!xF%e_u$`b~zbV(9@W_oX-|H2c2;4S?Ykm zkm^K7mF8XT?^cf+Pd8qcL*EXEvAXwr49l4~7FH~MnGT_UAV7_(puAIGK!3*=Yp|0% zEJgmPl6d=n9iLuRN{{HVgZICQ_3+^y%-e*dPBu=NHN3=g8cbIxNJ<4QeDX;T*tlUz z`jp_sa}H!e2jA4N%iO-P3@kzENlDOkV$z1Q)Wl_^me%a#K8*3vZeN` zUf*Gt&Q*yKk=Z{3^YR;e36>&Jx%a>RwJLFQ{z1f6CnI59XeBS(c5-qW-a3F3Xs#8XxonkoTO_=3)~yA60N|U13N6erkPopBHo2;~d{?=ex^wiTtHS-@757 zUSTbXzpt4%vI#WW*tOBdsyV@1b%xkqx89w|%RL!;)a&wt+rHsB+04th(k$ys;LqIK zQ(4iEhUj@y3XkE^s*kDx=3FiZU%$~ldD9!<@c)quMC|Y%9lXandfsUsF1&qZ{^VbO zm7zJ+_bXiG%@SlIr50$ zaa2Jz^i=AkAFaip6ki|gw*CcDnsHHUG1VqzAYKKA72l?I6eX?%8eDk2@pJ%OVb{@~z*y@74Yx#r{IR9t#ENaCN zMQrDq8cdOG{Xi_xtV~ITdU8LHcME^UzF8ZYt@euDoGMR(NsqfirLG{ZI0U3~N z)M|p`>z?+q;OpL%4ur{@41S{ZzxP=uSs0vm0u_Vn%%aZQ1vyrTcfqnWAI6mw@-^k2+eAXipIpr~5Kniuyc#(C~ zJ?#Cv!3VZeOsr)Boc5LqdQ{@K}wMKGQ(oan~&}+sQ`lfypX6ASw1kazcj!p^s z*u=ZF0Cvg#3x*2(^>v^2&DHyRjsDra4ZzTwETM53vx@jcVD40wO6K+;Hs`y&rwTAH zBkUc9nlm;U($Uu=lstqcTfCL8ZkOd$PvCK}Y&db#GPdas8VhFprD)cm=(`Bi;mG*d z&*Hwf;fSBMN`9#5efpeIbc>kX$+hNT|wpXmwZ9soGaZ)u5 z0e$~J3+e3Wh-ymy+~&HQ#H#er@UzF#-^cB-)fy4L)f%+tucz6PRq`7}T7v&IJ9NyB zSh!>6#vG8ULAmJy`&9Yzh2`3Udt#hQ;bHh$zdqC~`OUk3997Cvd?cz2?L}>#S0#g< zwQi`*Dq4Ga9D2_M|I<%x)Nto#Oe!<)dRm=SyFRN5v2jT~AM;y&eK)@tlE3`=UF?=? zw~#_g;a=dz03uiCh|1UUJf2tB<#DGXH`7TfMoM1oPQzn-h36+Tg8U|`?N_+9_eic; zwWA0}MUyFt+s&D)vcc4~A*kLx_%;h-wObx(*M78iZhM6=+IQ##KX>Pq6+;C)3sbb? z_?mDp^-e(_7mdE@#Yf8M-yMallf zBE%|p{ekckwttKrMIOlq++f%K7xO=)=(FcVUxGZihbVS8&UKgWWU6QiYX5+$iA21TX zwR5Bd4xHKug8qu#D7}P296hRx~{|5ov{I!}ou9z6nG z6+?xpb-7m=maE^aO8(Z=mJ-s^=pItMY}?w9>X>J^S++6!WgsJ{ZqY2Mhd*Wa!D|ka zF7>K0&?w4U$nzK%MO%F?2L`89Wb)N6T$umwtub{>T}rt0(AETH?L0q?ErqcY`TLrI zUpNcuyn3w#l)b;I}Nc!H7!r0ztX$S4HgK{UHOEFD*tr~Ng zf}7l0n#;Q@QC?qLEo(`K=a(B+SWZX_84Y`~k=HeLEQZNo!aHMAB=(P~eX9at6Z{K%d9GuMcYiSyk{N*5&_LKI}(%CsiXE>^+{!yuS#l9j;=Q$|JcHuSg?=MBJ z#)Ui%F}{S398K|@4|-TIbAa%rO}B_(&WHCgK9t~Lb*$ijv)SO`8(sDYOqZ2#QW3wn z3HQ_`Lf=D_Zel!0=u5WEd|2hBE*?t0&ul1Qx%%X+kk$5Z5KSZ-1b<64JE5DOa6-l$ zBT!A3kp8oWtdAnOr4q$NZWLmB%ta*7{o&o1DK$>|AuG4A&3){NlItoN`!qx1^$xO& zq4d{{*6{S;*g!alAH~RYUd|rC)6$)@l=ibUE+HclY1uWzgmUM<%HAw67E_-O4^DyU zWYq6#vZkr1cs(vg+F&_3HVXrj7{d^BYAME@G)ZRhUsetu{YvnO#C)SH3yFSS+_xNi z!yJp@G4;Uru^RI(mY9m_xkhwP6U8Of5d*VifU@?R9X_15(sBBTr~HXd9_{q){i+Z) zdp9kXyP`?IIHmc}>iY&{^O~~FF5~De{GN+# z3UbjPoVz*(JwUTJC=pqk@B}DG&$9^s`12!JjTLrY?@Zsw0r$0teoS!wa|R${Vjnl* zmEVz~?}iEcIrV|_VZT;p++r@HPDys3r>>st* zej98z$RJA}NX~RvYNAC1$MJMn4xkW>MpLim+H-S^}Ji}RBJ8IXa zu93iq&GeUH?v|-Yf=LWW@zlWBWI^)zZ)!YVx~G_($T@=dWo*r*toGX;4}F*mkab$G zXVXJ-mU$8>voCKtjnS=g+!B;I8JWu^fnv$FQ`&M3x)$n!4?P(@bhe)HuWfm1>3~fgxBk3N_J5VSPi}L9Ry6+zA>MRS9xUqLl>e{ z@(2hM*9(@-C*281t5Q7A22XkfWZLelbJ#{8ge50rh8rzCee6pF0gLHzTVvQJPiwh< z@SCo<^{oWo1gG11pt4Di5@nT1jGB^9xbHK2J_x-{%KE>hKhg;FJSsQa0ch+14{M%# zOR$hIOnz7_3UT`E{d^378b&!^sT`7@%fJV+(_NMcDgRLTfM{_tEe#7F>Dzj z6D8C_$L=^>4OA_uht^aiNQN|qyJMG0DvH6w0DZ+Bb5wJSQx=`oxcRPp474nj3v#l= zMJfI-@5b=o2pLq{D<&LkzRrsdzsmPdwLzmw2^eksy{g7qAWI?3?ksGcHLq6bjLXv1 z+JBSWzq@VsJ)=Zfwb`iXESaIU-(lDd&WW}Q)$jR|9+OUTT_b9p@|DYGbSReZRW*#~Ig|(TL{)!=yu%wM z*L}CZE!uh>iILjOPs81F6!Z)ia)e)fqbVnwI7#kFYcp-FC|l{8iCs{kO7Zyg621w_MWjVvqxy5GDETCTg`-igZ)a# z^6JOMyOkU7AR`1Kz;DML*~`ExEWM~wtE%A+SEC82x`?1O%27jXXfjMAae4R?!r!V`QKaA zTC0QboNXmbf{D)(zm>?KF$*|(d-*7fxT}hoZb64F@5nHXX#r<-xwgFCDXUvPIB67PC&c*77n|f)Ve1vq|Z8B zOcS36l6z&H0xSVMs11sJRaY*D)I~y|rj;(G`k{+IU z($CZ4Fwkm{=2-5g2W?tmT@5N(O4~|8h8N9$YBBZV6^F%wd9uqteDO2*_-+TL@gcl% z=4A_tl@ykiNnl8N4Z5IThq*$Jg_p{POgF;N1K+%tm-%&qwqWr9Pd~5BsKzPCme*4} zl_!;)X`)C{kSMuP2x2EqpmOJG`)HG;EdcEl!oI7A3cP!+@Zr9soId|`dQ}*lJ7&!^ z^~7fYp%-6VFD3)iFW?W^{#R1z^5)mE-`6-*6@)63`~!yM11t?R`!XpiYIvYUdigPB zWw$mXuCW$BU+a7>-HJB&a`XPO?mpO8`G>%SPFPNaWcB08H+Tv2d;_JwsmP_IiTTA@ zfMZTwdR2HMk{p@;G`Vs(1jGWIOC}Q7GO#9ijJa_K`n!u+k<8n4;~Cha7f=0jT}#3R z64@Sln(=qud2N>r>}7x^z0_4x*MkEIB* z94btLv|8a>^&(H%R=m_%;`-pXZ`aEuZ8rQ}I$Hj1Vnl-$v7bTWT1?@3dB5)J$7=HX z8Y`cUP?()f;H!8#eRm6rjBrfBc8-@<`&f`}y*TvhzNZC~m|eyJH=^_G*R#HfF9(4` zomeUX*5lZXtJ}|nkODVZyK2kqN{vljCE=@NqScSZ7@^d=F7X9&3`hrIUp`T4wbD3zCUf!z}=sl02?YcmQPuECsMR22WZG*|9b= zio=sbw0^jL7CfzI`gY*YI>zHawM*cmHX=zY6&@)e2LNWXiiUM)nii^s!)hpcaF;w+ z(lnxQsz0RUYPIYW_Kc#^41nkRkA7T{*SXL)pj_U|nya>nt16yo6Nl_hO?R~`TBKQi zLKpxndUb6%jukE6NjwogVXK_ zGa^Dj+Dz4-$@}*;*Ly<11&KV-Q_Fqh>R(D++*ZopqZwbPwo!87A=7+XD9=u4xWs1$smXW5G)J8KPRI$5ivj#t2hgbR zPs|7WDh061fAGaFAMwZhJz?dl1OU0wi>?<@fYv51&u}+XtBb(luT!g%O1;8aQ&>~8 zr}r&q)pl{0gE72*viiN0e(T4Tpt%Hy#ML2qn-tQ#nTpkY7mAT+_e&Z+n9tL_Z>BtK z!1Zzk3X`8-y}SoXja%`2%A^)b=D9*g-4fsz*|NPGJ;kJz-K7iXofjRxVv}%#kGt;v zzpuTYTnhw8kuRZ-=THntAxH)S|@TzgqKDS0Ej04VQjyZFGAH`}T-c)IOI|2%`5V zK`W-oy~@;{#Z}FFpfmn7)11e+uC)ZMon+;aqnDO|Vp;Q^ao$iNu;ACpo3ep@Eu^nw zBs)HJ_L@`M5Uso8t1rC0y&X`Uun2ok1J*d@&wqAozQ`#@$Ucg!%oF6*e{a-N?bG8$ zwHz5WJ$i4gK!g*^Tzs9i#Gm17;I29;>6KRaLq<`wymZvDYU+tPLhP0oYdr{dr1Sc~ z62J3Bd2<+8KCw466)pN~1!(f|l)&&9hK(fZK8-(ZFGl269m{;k{&^%SW->7<@T_Uj z6i>abjpONpbvUqUu&)$?gztiI%e-Q`SD6T&|IAk?KP~f$%vW+vJwZxi#IA-M+)SSQ zEkR;4PjxG`$&4l;=Xns>1$jA)Pg`eTMoI=}0OI7-*B?Z2Or!6wMEUaUAlK481sBjkB zS}}RdpK(9szmm_gcW|o_-aiD%_EmT@6V>E4RXYRut|rbLR2X=7yX8QQrC^Sx8suAU z8q!!F*3hQUr+Xg|xpAO%cO}dM3a>2A=N`gCR!s7z@b#S^TYUpa;>$+sb}Pue5^bPY zj<16^Qz8o>Pz#_deUU`_^0CC68-4W8#uJkDQX2aYZs*o2jVf@gltZ$Z$wxZFAF>(H zBuV?_3+Y7HW!R~(0>%t8)%E=_#2wSbiLEHervA+DYvTs+vr`Ts!9PvbxAZ3hQz&X( zd2fcs25F*pw%aIUc27l``AS~OwDUwfZKK{bBGC8vk-e3IP!08r#oLKV^!biTvrD_Q z(**@E3@GuJN8!bfla~=ObT1tv&6hAmKP7d5GAUZt`v`z+`-RF=Kyz>yP@Za$nSv{1 znKlDBU>HS^hFCR;nqs!oACyinG1LBy`z2DdN*~|GIoLGpj zCUh7#ZjmnLD}~e5v)87e`Ch10jSkBTS*oPtGoS^fZa|vBVRt;Y-51mIhRK4}Av(dF1g6UPAfArMNG=DFsRWryJX;6x z2vBYknPJ6mOeOlf#zl{?b$hes9UeQk?|b^%bkaQ2Uwnq)zgUdVv#-L-n(gCxtbxC; z9p8_E|MbOVY1WYs+ox@f8p$TP z@bI1Op$~05@A<812;$tSv1(ANCC)YOAZFE!)dMC`w-u3P6;(e>9@U$`yc99>@pQ_& zvrquT=S;_&l)Dsrh6%%dCHEPxsLd0Mvz(;TAg`iKzYuHCV4xeIHfNOheFwqOSv>p;n=x4l1B7cqo#}KKi@A`x6!{pU1c4ej zv*cXfPgdH3;Z9R71y}ufzm5+03#WzIHk!*(IC>Y&93v0;q+0bM6Vo6E7-t!_{y<3O zn-18~PVi`9lz7aUwEO_)iyT^DcisrFAY|%v%tUR|wqxM$m5;=iHv+^q700-eM+w}O2ynaIAJIPyV$x?(;*2Ys*g-aV$N0y zmQqaU6cb5J&#O{tB1ng1@6kJVWe3}WE#Ou0;}>$EEFRjXuGZ!GsYaPvX7i)v ztE-bCs8A)Rrq>J+v;2fxH4!XcKC{@Z0ibzRF%-`cw*u9{fD~19b{F1r%SXgiV$)4F zWo0PfBi5exK)9~CR4wXX%PtG7!&q+hYFW9*m`1M z_ro3M{c*Zktk%U0zq5rlZ;6%Su#=xpsgMxAk(iG ze*_Fkc)TH4-3WR^A2HEG3nvW2oTv81C=P_Sx8wSEArDodpf|FAOcHmF1U6O3;%xw~ zSK#E^$844uA*-}wdNHL7DV8`&{Y*FJd5ugRKx#RLu^?tJ4;|I!N+c%-S`Q7%L&Tv? zpIr|w2VgBuTLW2CtJCz(cGmLHNa5fEyJ&!c_0fCSqlj#1_llKe?5=Slv%Pgh>;W{G zzC!+n_t|ED(H7Hkbg1lVR92d#eblaOz0`1iTgfe`12v{>>KS6#6*W2o#`tZOVakL9 zX|UWTnhKcvo)I?9qh5g3BOc(L@(e>ErTXW8l4iTj5;uG`Vf$FZE?DaITe8BSNunuM zSpo!H%Dd|^+3&RTf~{+#A(50c^0;P3wNNtI&!CMWxGj6|uIdO9&MA21eW51esR< zQ%r@(w6LTV;qROyzKR)K#@4sJZ(yI;1%5I3u1vK7Wxe{s`e70qI9Lu^_wxedk1O)ljQ^;QHHgMyZs}&fyCjD!4f9s zr)rrQwvWzm#ImxX8SH`U`upuJX6}9WVJGS+N-8uc*^`p#1G3qe_h-V7wTf`qk-zbQDlXk zB=e^d_D9t?q_(!^rfTMmXR{~@nUM{(n(;Q9C-Nz6ApnpVq1L$H{=+ZXN|C7pI&M?H z1X4YueTX1tV7Ym2}(T3(O~9e1QcbA zS=S#)JX=^?pQhO{vNBc}ymUnR2Y>`9p<&TX3(BGl*mhS>sj@%<_G^% zGcIl;IYIG!EY*1xCkNO7%6`eg+}fgPi5y7160`KksFi4<@Iwta9RTkYRO>ry0{lHT zlA(_Sb7sY~nKxLsK;<;creV4Th9n{yrHcPF9Fmmity8JoUJOEwtdbM*=hk?O$6xrz zT*enkOS719=AUI{?u^Lnf)Ejw1zP^E|08J90UqfN|CJV#2`_#o9D%8JWm!(iPaA}M z7SqCVaqrSwjuvs^0h;&BW@ifS za(q|HQnNa>G*eC#t2?`Id6k{(%vT~H(4-Pm-F2R=C_AOSaNjI#-`ewmQTgBHZV7x} zZdxd22SKDqOy0jV#RxKei_!UR;KQdO5iJ~s=EMb~-X+a1(>wCHH<8_yt42?mpz@G*Q+`q z9RA1yr!GdT)nv>|lr!pmVIUyC1Gkd#gskElXD=gFW1ZV39_*y=b=9GY+qan0Kj9G+ z{c0Owt(sk^sMq^4p*>%saaa#($ibms_QN-Rb^Xbc;w;+&Iyi{nbCnXrnpmn@D0a*` zAQ>1Th^p2U1~Pn}1P$V(zfcagLkTIOge}y|tj%VKOfFcapU+`R`9rVWhd2A@dKbe* z{aI5Vi+*gP&A?KZE9TfA>kz-=`PXl!^E+>{=DZKFqV?@c z;2}Wk{SXST9ZV4jC8`i3Ioy$`XxeaEO3TL@hm>6Z)~4oW`Gm@0gz+i9kAUZGfE@O% zlT|pd^*W8RZYBZVbK`2&+3=6kQDrbFR~BFv#J#@=$-cbz=R|rDYJ;&z&E<33#%$;Y zkYxmj_CI5H)qd*QUEESuxTNP*5$k2|k{46UeqWC(Am z6iS^$V7NU)>y|(7fk$aPUeQ;oKwr1_S?J-Rq>bT*+gTS?A-^E&q8y&nm>@bse2Z5_ zq71IPR%{DnI|`!jf=H!a?Z@vU$%;a@SBEyw0>)iKzkCd7E+=wM&U{wOtOXs3_a2&H zhZ+Q@=g~6WktLh5jKZm8lkz#DvLABlXIvHVN8P6Owx37d;81QoeS6D!1Y^fCIUEc4 zBIP?=^sd7|&&d_jr7vvKIgjcq1PJ_HxNs$(nN8C)MDg%rUD$NOx}-IcBNnO29MeNm zE~ogy)}}zNIbGU8U44FqZisyN-l-L`!gNHdeUA8mm0A?UGlPR;3Dqlan9S(?_aw;EO7m|Y zyRH-Cw(QL~JUW>4moWM2J5ad|cEJXSvPnT^LLL#QCQe?SY79C2X;E`3Y>Jq4zl+ea zaRn*yzMB&18}+K8;Vpg-*JeUes>;c?%f^;B+2w3%lPTK zpIHg_&t8bDIn?zJ_KUS=?rq3WiCQSdoHqZ<+b}{_bBWP}9gT(3`eUEtRn<68oyB68 zLg7+eZpi!tlf#RovChuq$uMmL@lSxbM|}YPx+jG!IfGl*a-*4e8sCjUwNq^ z?rUj>=XcV^v4r_}Vli`>?DR1|=!tIGLe>*&Q_S(=MN8HLzpuSg4)rO~ z|AMG?*wW?-C|F(IG(DDuX&c>u;tCBNPP_%(T}u1_GMl4iI|6kmJ1gqcKKiSrg%?{;Rp3P^d^-H@ifD4_0v{PY{`2Ul7>HTLHNQn{&k*p!asaPn1^a>7}9F|skWK^V#J6wJ0oYrjt$ zI(OO09N*MV5Us+uvy7~mOjT)nO{hzGl2ttyoPQ#K(V+^vO z^>_~90F&$ie9@uH6APQs3BO`*-s-O@JIcad-m=*q26(jlQEvg^e#V#I zU*~!)U`<+Fbj|2MwJe)A_1v-2+0p@UFlyFrP#i4rc^&5}`XStUF=Nq64yP;CaiWzu z6Ho6<^89>BUG(wnf*Va~>-naM+)6uf&YcFuFw!PnZ`dL1lBTc|sfFhaR$Cdod-v|Y z>Ny_UW$1JIOx z@cX1^%;Kp9w*T*OlhoQP`G1;?z)Q=S>mgIfsST3z|NNLd%VFV(=IXVOgtZ0Dnp%=3 zz86%RPoHJ&uJ_+#CR-$|wuVo8_Mp7~T3#N1$~lL)C;tfN9>-J6z&@x}4;mbk2D1T& z3ed^Q^@Vr)^q~$OJNiCb2JNC}Irb=T{I(y`pNY|JATxOSbE<_#o!&Ji#xki2ZKaw1 z0P(B5ckL!rZW&GU7%`Q)6z6vu@mP#Mym*z&CP)iqTb%ewzB^zZlSCZ{y`B&rsG*+N zrnhslmw2du5nZ}vFKyFJA}QKr<`p5mw-Pu=N5J7dgm7B~*>wwG4m=iTs@vQ^b?+MJ zCe{bGxhM9SAwLBg$9CP+P0qQTx5VFjoKTVV<@3s(yKj>kR}@(gY%kX6`7V(eDwpBp z8WyiNUp>XSQHSb-y|Y8xRdRc=z5w6c9f`{lK~ zx*Od6BYMc{MFKiQ_OB#*u5lPcG7!)QwKk8w4Mk>@s3toW4IR;zzrJv>jb{GXu+@K} z=&*VDph&Rj{v@uN;q4Yt6qTCwrL-hVD(yn;VRLT1MT7A6vD9u5Pe~BaPHT<`{1q%5 zW+qnUxe+}gKiB4-(05u5;fYd^1bm$N5~yf{I;RFP4ulmp8?i@EcV~;>CU|@;#>?UI z`$bZh*hFYouRmy}KZhLJOh5;&{z{fERkNA&vy2Iev3WHuTVwNDYTlDdk4^+`gprwW zXM#9VO~J*urg(CDtg*oT-BuX095jQ<&N$u6Ky`Ed3SJ*IU96Dwm8I}RiHe9V6&IVw z)P)WC}8lK_Bzi+)UB|toR6J8;t3}21Go{ zg~TO&|4yFTXS(Z6vdOErdG5q&bQJvDQgpGaR64|pU(MlGeB{N5G4k?;#PD2b)SAhb zgimrA!U%8$}HF6Ro zKWj(nRBt#2w|sHjRFX*z$1pY7dDgt~J(j79oHJ(gBv`s2JCZ&P{=$xO%ScB2aLMMe z<*?MOtOm&PfO#8>7r0m?H;pR5dE3XLD@x|i{I?KbC2~bE(gGlfeldUK3hsct_;f3x zS*i=`YB!X>VjBMfU2VG(tX9Rrb08kcO5lbWMDoEUbRm1#E_YGWPgec1LkC6ojYKOB zwMvb*;6uN!Z7D_0#U)`t>4vdNCexyx+fGQV#Uf#$Gcg!7E?OTJSfIp90)?nC#!M4rITJ_ZecMaUf0WkHwxe2a^#eEZAOc8qgH;~L zYhiflco-VgF7z}Z)z@2u7qcU6zNI-K&g-%#yqd@10UVk;0Po#9WB=vQyVnl!n)0%~ z`yKy!{b^4Eq*9brfv-N4rv8o0OkGi#%BXa|dy5nn04Jg(l6if!&#nsOTh9vmqHkfG z44kC5K#u&p?4q_x_O}cF7Z;I4G()}H+?w{zLX~!c&z;bz@KNaBtHdW@Op1$sAe{Ogr!$`4p;eL zY53(OtdSg0zL11iz;(iW{hr#>RTQ_ZLww4n+L9(xOE}HiM^`i3<>>mtJQi;oh4YmS z91+|*s+=FUH;rxoZfWaW0MF(g%LDG9$c34^YYczG+1*!At!BEwl*{zViFpu6ecHghg|A(uGEXLCVVaXsnPV5@Q_Z zC*R8v@!B_94c8hKEkF8 zUJoNwa>f`XdlO2k?4>iiP$pFeR~;PH4z;#3Rw5$kBSRQSpLkunzpz|)B*GJuWyQzW zIr6M&2=nI9cIt|_6+XGd0gM*Yah<8pW1`YrIfR_Rz{vV3uB+wSj=nB6gy1b!&EHq{ zn%Esq515{B_%|VzbAcT=gLCE}b}v1K-#@Q6vKP2vQhcUXJk@YT7xBJSt^il(7R$$7 zUasf0)j$XT<-VnJt4I>5I?rPu5dU4jndaG|Mh+E`ya&9;x`yT1j^tSGRi=H`TC~GP zLFS5dOjbl;DeVr}BJQPbn3v<6@t0y|R2#I|F$ z^TaL8jm;);$7x#^$wQrfLRAo}2VT7?=3@a@$ei((Ju`s`EaH|tnHk{w`x?zYr{Pk! z;s{(7!B*bqaH9IcG=InXR;83}U>24&VR3?AC6Wj04PakQ%0W1io z9Y}?8F^XIdzgDVvz*bVXK4xY)VuFNoKiDMzT1#W>Y>S`l!@@>;|2;YtTZ(%O8t=?p;%1*@3EKVx{aZ9UvoSLTvl{#%LSAr%7Mc z-P&fZZ<;PMHV97>%ZV;4MM-K*Er0Q3MAH3mZSq0%UFGWC!Hw>H>kP!|+l9<_5hQDV zS5IF+mEL~Y+Cc?|*E zn(KkzyKuS(#RYzzD6~snu$QDs)l`}(F3Wd(%4DV~M2Lr9tl|}}BTG8TG3+o9U=?(x$EVZg&~s)Qd?f6f43CO z{%dpfMu+7NGT_iPt6ds$Wf^qLz5z8JJVeo)U>@s?DGnRi_BAZ1#1>3-st(|>-eA=>;oXL20Tu= zNE-JHl?7}m_f;Yj7f{&pWhJ-xjTCr$riB((j^WArX;mgQUE^;3Ps6rvr8C#F#8)25 z&xdo7oT!sL>|P2NOsGvA>q9aDN~kzdJ9 z-$z27a?(1Jb>sbx1aKEoHKkQy`ksq?N2hLg;HRfw86~U^ao1uR;&NOI_x2 zv9if(g%AS$T+j$IHU-m(!IA12f^j6UEupI|Ee!E_D6A zCIZ*Pl$#ke5~!-_yKN5QqUz!b`!oH?(iRhg?UfHQ+kn47-qpz_WlOch^lHh_UhP5_ zCM}}K`E^nVWfvKp)WVmUsvAfxiVOO-quicVA4?0VfkQVk4j&lF)-_f|qw)O1CpnTj zX*&pK@{Es?^K_PA0TN#f3`QWiD4IGN^`!iY<|o^dVv8j$m2tWJlP(FOX!%rQXq z1Iq6bZsz0}*Gi5%pfw%+LwfQB6d<7xOyMETwa65{KIrju#JMu*Kk+7fzyZe-elDVO z9mE$=0?6YuPS(D|&B>a8s)_gpjmpzUculaIgDk} zO}one_Oo0#7X$*p2BHrD>%pS>$actzlKf|{COfR)rt3rP_0adkeGi{l;Ta*sC-i+v zg>jm)25mMY8Q{8ZjS~lWd~sHU4b#78Ium5V6iPoHwx=7ms7+JEiJS?2Kq?;SPo8#? zEB)EJm>NZbC=VY25Y6RnbJgZNxt)FawfhB+$rS|zg8jFo0YSv|UwNnUf;pcq(0mGw z$_pV0y<>f`l_;WDeaLAtIDddAd2w1>A`d8)Op6f4VcHl~0M(n>Gw5t1FUgyjCR zo&-CXRxuT#0Z+@Yb@-2Q7vhDpgD}567NuV#x0V+7S4dlma5$wdhi{oAxR*{VXe)Fk zlUP&KBhYe^Nc$}>));DyJDz41LsflL&qy0FL%byAxP;-65-_wmpUi~x8hJY8MMHXi zsYwE{*2NT+Rm@-SPXELry3r|O64N<6tm$U8;g;~yY+p_N&54z5l^t}D$Rn5Mnl(4E zpCIe6p0H^AU~_0Y2$KMCjVp+FRxtR&|3!X~*pW|h>e>TB2)n9_=bH*JVBG*- zquG~@ESWQ%DXTG1R!;s=w<>IHs&BIVPxX#6B-6S;Uqx+yS~QJ4(>uVD(D3JuZlAVC zuWF&}Bx*8dAPw4^`bBZD=nhsC1FN<%a)UfIh2}y@u6d7(DpcMTiFF+9cr@$LviD10 zZx3t9JSeOAxo&s2ULRdN<`>SMv!Q3P7NVh=y+}c#n$Ya4u_O#^YuSVP$s%TetIuG0 z(tSn$(8SfH;crZwY+_5zT7unIY<2|(Q5vOXJelIztdE%CJ1xym>QU|yU25mojCW)v z!%Cb;eaH;TL!^+3OM1#`TJ|;veZwRkQVK2?$(M$U1;m!_1{PfkN5I0-g*y{!HDtX&xXs3 zqUUPeDA>ca;f<^ilMCe4hWP&gxIjn0f`+uC1gt_p zPRGSUR3r8=85?yhCA05Nl)65=Fe%W|$h#)APsoCFoDkn9$3OE3q$^W-K9D zSm`w}Mkq}Z9Ii$vNjw+aa=UKCBZw7i^|BP{b)|E|qm9|7ZrE2Q;N+*dOBZ^j>UeRs zo1>|#q&ckr03=}>lhZ3Av#QBS?mb+sG*WylX97{lvqFtDjaacGO;(Jb0uJk8CRte% zX_qzEiKd$7$E;dJk&*eZT3oCqDIyZ=TH}lI*_KHPr7yS0$$=4)-5&g+vS!8pUPPvd z=pDU|s~LQ?XR#AYF4f9#i*4PqQetwmCk18u8((rc_9}SRBRYCs_qeQI45Q$^KXSz7 zhA2c*yoRT8@0`~|`dL@Q)laDvew_ro7_rH0UJr5jtm-DXc>Rg$I(goyYG}!U9}u)n z2-PC~Y#A_EcP@*HOOsw^uw64hBGKHFC!#1yKVt`1%jrTIWRX21e4Aucar_ayOGP3K~wUt($*MyidSMNbJ2cgp5Pg3vC^4&%Mfl1O*+EQv{;97#^RU9oaKm5IgQxj0lGPA`4R za=N{VMy7TYqP>x?X?G`1mr+(&jtTc1dlQ1gFAZLXxnRGR(l}XAdarvBrAne}EXbTU zF3Z$Jl12NAosumA3R{tr++37t-c1`5Bkt8n;%W|xxjmg5QS1%OJFe+-nIc^~%K3hkXnT~cW z%lG946I118WBSc&sprVsBTAk7p8TTGHyzJk zE5mbN)se$7W-=K+XEJ+tP5ogMLJb3QX{+G>uir z#t6JOBX%VDU(1s`?dGy1{{X6d*)Jl~$}vN0mq^Temr0S+VX0heeT`IFy{)msP8OB6 zBAw!jl6fOyJ&PeO<)yhfD_@-I%VM1(iFlX>NjFaN{< zD-Zzy0s;a80s#a81pxs7000315g{=UK~Z5Kae*+Ap|Qb0P|@M=@nHYj00;pA00BQC z{{UBV{{Z~GaZ@~Ar&izG5-MY5BjnM2~whP#y>jZzx;^^ zd>F-#%#|ussZym%{{Zk6DpaXbzd(ZqUj`OjencQZ{RfpQRIm52l`2%O82s7 zAqOe-;KMHy6)TG3zh1x9Kdfj zlp8B9F^e7HxH5*7yU`|IDgaB zuk>UHALth@T)BVmH3A>##6B#4REISZJiqGi^y*jX5Fmlc{(yrnT)A<7T!$=w)6}o@ zH7Zo8Qock#)58~n{+)bCb5MV#sZzhtRIi0fi7Vhj3_sab$p{dY1Rtn!pA(9e5p95MYcLMwwGfPo2M zM2Y%m#`!K^=wJI#!Iv1ZWAiu&5~4v8JP>dW0TLun(mzV&{{Xd*#`zbEkIaX_P9YzH zIFpEQe@NgZMk-hPwaejh{{TRTAaPzJ!M}q{dVWJm%@_y3>>6? zP&wI8(GP5n1xkHVmgJdkq};QUuGxFo56pm6bg8DKy^>2nBzVwfPW(S#g|i4rI19HWf* zesdU+I2;mLcq@Y+lILPd`IRaMD-6Gf;A4M?`}&2&$rQsjaX*-X2Mb4lKS1YFkV?ea zz#xedR2(KS%8XQDIDRJrRAO^bij~De1L6yrW^O#@7l+l$r|FPoT<#6a_}qRZ5by^V zgd_7lHZ0MlB1+&P2plVla6HN2;n6KOF3EW|{1kp;o0kq^ z@rGCAa4>M34_^S};o#>naWQdcgM#>Gz5sGYJUmw-LPUwl!5CS5LmJ{ABqXwImvMUk z07rq3H!tAsU+ELZOB8j$elN+vDqz7A;nglY$HL>n;_whhk??yDAc|bLvgO6XMTA@) z4~sny$s149xpMyiK!O>fdU!B$gK_;QF^R#l9yN&Vq-w_Hp~p!;POg`1L7cI8uHJ8fd@I^ad;SB zEh1kcre};oQU~eJlk*f@WAUaFhCi%w7^Pf#fygKZ z7X=S4f(=1|%kr<&A%lQRaTka+#!f6_`o{x;FN$j;kH+QjJ})mae2~MaN_dZ~Ul9gV zE)zueaihlJm9m`AROeL@Q0c_U&M#NqA~dp;ZclO z#mC~u;0y^-jADFDv3$l<>NmLV;=ck3a`89fqw_v+r+}3!;eQq&;AM-8^EeI<=!6%+ z*Xsb~$R7npG2>{&bdA562ZgQ$mmktJjwthAC*(5a%l$DQ058OZs9=c)>ciyu_#c3H z9t=yUscsc3;BWO>!&6A5@Hs1%KcRo5LJlTwKLe0J;JmDW&m<0_mSG=q)>9JzAh{BTuqe5kJOHfXpi}AUC z0tg(x3i*Vt3Gf~Q%lOEng(5sb;`H;04rs%XQvN3vNs20pk0x8pPcz#QjD)2`0W&Z& zGdT~;h7!?-0}nMtm++}y0aBsyABsnlgOTvKM2m>hlT*>fVt9@4@IjsjgolE>-^H>N zJV@CXVdH0VULYEjvbJwgilZJZKLQeye^69Oab;1lz-|ceCBk4#b&jl-(kgIc7#V+3&Y@(uKs#n9GR_Vm zV~kVE-dushfip>t9t+LOmo8ry^COB>5JELgIFuX%T#Zni1D*lEOi+H1;6RBQBvlq) z2aMA^TzSq6QlVoWJu@)^5t>(3Dk%)Pa}B`?GG^dR(qFucVd^a0FM5s5QR za{=&}FgQ1H+7g&}tqeK+K`9F6@v7<$wJYRUz?P(>Mp80uZAXX<8G|w6rVWh7buMDL zm5#9(FA*Kh?gGf1X)fcfK^X#5J=`|@Rl=oyk>IrD3A|a3u)#Iq+^o`K@x#XR7Uy}l z>Pr~zRKWxtGbMw7j1gjRjlx?uOt|K<;T0YZW;_y+M zO4%`s;g?7h!MGXk7l>BX3ldPuqB7+q7*u*JBnv8Jm4`g^%89=-*~H5iz=WAVN|=c% zBw>X45{a4@n8&^ZiI|FGW?4{X;9z-$TY(SE-7dZylf1*rznELdAaQL4B&AESVz{Ws znN+f+jHeK#n_et1+-QZ=D`SGl@U3E$5cN9c#1U3OHk5IFqsL{imz4NRcD( zICUtP_;E)v?4iQI7*-bvqA2~wlUnS)#? ztU=zUEld1ygBzate=!+sSlP}HfJ5!4-c1jKS@x;e?RKhPYIzZ~b{UjWPaE({J^4;7hfHAGpL zQ%)f@i1awq9zhYDm{l;${9NTY(mywmyp@zByu|51I)a=AWOJ3MCkw^lVG^cJ83+g| znUaJZu)?($NJ0QLn5wAClGLM#s#I=W7vylfOSFhAO4sCYTpn2PZeo`6%o&*`GF3a0 z(+?BCi}5K^a@N$KMRK@-B@whS{R0x2R8KR{3g?FcFHpt$myS0pW)TwXNW4zth}sOI zGZ&1J`_DQfx#C3#j#w2`F-oF>oiB(bM*_c@HipL-D#W>u#FqvV;>C&_L@)4jX}o%c z4j2MdO3cBTaRTD%nnCe8aH+z?e@e>(VtKM5x!hj7C1Nc#8#30TbXyP%8qCcHB0r93 z;_DheJ7TV*%)^aK7*LlQhBDcckvvqKTq4Y%Kx+o`A{_k4JT5H0H;O2fzG#^tkP%RU za8BoK4RbeVMK?E>k* zwhCEBR~tHuE_R57U`l0-$15>VeuIK>Y&avTG$(^8fYeAT%zfMo!#zMcl$BgLiLZvH zX@?nH*^e~w3)J<*dgi!h(GkL3q_M;qj5jHTQO9wb+u#)NE^ruvYB8cN9I&`$G3sKH zGKrsA<$c*w8qOM{qBB+Mk z3ojKFjr>XMzNH2xBseq!a^wv0Tn$I_Ga%_3 zhS-$|Mop0dE=aL9Q>`Ffs820d&8`J{xTIXliJ0)MABL3idQ@Z(mhlXNF)Z#FyNUM1 zV{(!qQ|2!S5`oGgrEyyBRk?|X{SrKB?pcI?FbFs0@k<~L zx9TRbq`YSAxqRHhqFqwTV2N$P2M|Isaafyibrr-)wF1hNS-Ip=wgGfUNEdL{s#O3| z*_4u^E+QlvjvI-Bz*loJ1SHmJikL@iSLM7o+Hl441qk?g^Nm zD=YN48%$ihIxNS7Dbko8=G?S5rKO_FfJI&}i(#l*owq7CJDKd6F;*^RaCp$A(lnS+ zYE=`s1uEek5fw&K`i?adCL+AO$CxLi$BF%N;^E89?s=sc93H$yhGuXuV#&mziEd`0 zJScU`+C@^c5K<7N&UJX_&bA~7bsKq0;4PY+G_KVTuAnXISj{KxiFPz_7c|W55hW~k z^0b;G^ul#KNbwhz_#201N~%{ETf|(;@xOUX1BJ#)u#b#K+Xje3MZNM+inoNb6#d}7O8@!^~@M{}|$RtxPHanFh1!zX}>8sNtl zaeP$Fd||1Fd^Nr^w}zsN#xM^uWl9)FQj{?-MO;^uR!spdeM~0c(lE;zXC=&}9A_c8 z9?l>Ml!GeBw<|qLw&N2G!el+rPcbk?V!Dq{Fg?alfiQba;kfQ!6wL8KJrj>wV?wh= z2!GOFJ0=AUK|fMf_3#>?Cc{YXFVP-^4l2%~$z_U1g{Y$vwJJ3-ymYab1__sO2H^{d z?w!Yxa_`O<(+pUnQuZEk#ltf*dtY;~&BL4cJ(Eu1JdQ-waflE& zmbl73A>f0MMhweUbG@7FS{DR5U^8=-pA&*i#SFp%!=AJqVt{M7EG%&{POhV9MT*xo zL{*h5xCteJ>N2Z&jQ30aQTieR<%cjT%P{dT8sf>RR^~{R2$eP*t#CFH(rIxVk)%|< zaen0=L;?_k+ylavl|v76HR?LsWf@g*cL_+je-J#xpm-G%G1!G%XK^vcp@M%~X_8{W+&yIkcgf0O7nX4un0Q!jCUWR2;x9(VXA5e+#Fja|%s2HVJsrgL7OO1R}6xQGZIlN4s=E!7CDgEppGO0K4ejV1b?PA7fW$0Rdhm&u76iRd{DvLCQmo;a^)h##2};@ zHr)11Dh8)5MHm2>F%Uq>>IBs6xtdOtx2M`J9v{pr3B}tHS}@J=#|l6;Ks?GO_Xe_s z24I$wmg-X*kLn^CmKz|Q8_CK0OG%>EDpIge5AIgW0h=oqiADQnnqQFbGt!^k6;%OM zn`d-1ZEHR1Qb8NA2?6|aHh%CT(7BCbc zrUyi>96;J3B~M5qv%g)+cWFda{bZpicEnxGZ1P zKE3g!*uX;7L_e;{fpZHo{0JLuLc+q`+v0Ue^@BH4w>axV{Ks`GhC=Z)Q1kD^WYl!? z>T6X81hQzd#g}A znsWQ^0pe>?nO~LY_dNtdokOh3g-zvvjEwf5`{I=m7=t6w>MPdGKk*tGas5McEYN?6 zcFL{8778;uP)Y@`3bB2kn8lakGV+ESm}AV$Knw6F(TgZKCFqs#y_7W`bA+W8E~YFy zX=CuIc-SCb_DAYiAp&*_<|W+sO*M@&i|7w>#?n#}*ghp-beLp1Mt8S_M56_T>Qycj zlB)nx^c}$coM8ImG8o&bsZzIqh!h<`^G`82l@0R)5J;k9jKEVRT|zAB4Eyl~KZ^uX zxXoDhqO`{d6+1wOnYhld886h>`h71kYq$>WF(qSD(i2^l8!kJaeB7&!jMZDGnQ^pO zHU9uA4m~A(_Y#S;{mYA0?ga}bb1q%FfLGiJqfk%el?g=TyRP7mX_A@JEYr$yODivN z9x*#YI?@F-EovwuzDymgKa11_rIy91P_z=Fbx}34xZylZh4`C8qJ7fso+>#~;wH{+ zQz6qU!aas-fx|u_%3u%>tRaz!;$q2YaBY{keEBe}QJ1zg3TYO0F6Foa3Zc_uEY@lv z^(y;Ru-2hq_%DSCiB2Y?USp%K#L7+03l(O%u)k>R7br560wY=&KIQm0a>uJx3iET% zS2Sa&dOSgwss0R355WE*p=%S-{{S&Z>1NW7;C7Ar7<|EUb*Xhn6Tb*UoJ8PT&F0B= zjmXNDb;B2^K^HI(cyxL1Ow4zkn4V?t<@lJ?d_iSAh6Kv(fwH_Z?)l)M`?xUhgQvm= z3^nizn7qnzRHP1|6%VjMs$_tRawiFUQS7KTw6qT59)sa42hfPqQQ#=C2FSP<8k#wl zEt70U)?wtw@Z z({m%Fr+)FJm+Ss+S1Vfngv1U7--#?A?utPJS(MPxxkBPm$&l(#;- z%+@anW|3nOrTlAHP^3_{F?K5R0aEUrz-d}p8iALnFz+=$O%|khjs0#K7>$=u-PSua_hBS_95o93D8Y4 z(C_X!s|_>eI6(!As5UC50~^sT>%yhWWa|Fn=t`NMYp5OAT|_7M5u)99D45l-x`Z$8}`hnnTz6zF&8FL z*KllN7iKyHruaN`Nk+k4#jc_?y{slPa!Y}`;v^+BBT!VK$9!EE#CK3{Q^MmEMcXrW zUDUZz#k(Xc+v;hMrvuM%*}B9l+XgPZPGAGj{$UiqQff>p^)lA5_YRC6QE8!J71aW1 z@Wvc>uvgKU8{vgN=2JO;oDcIlk=f(;X(?{Z8KWsxPMt7!|tcE4HP4OSh60_|x;tR3hVQN{I zn70RiQ)tXl8P#qj*-G&mJNZuyR*l~x=Nb>_92{Txi)spYrDE-q-iJVH-qO}7sMKtw4a{29L9V)Q{ zfC|K|(Yk?vG&a)9*f9QLVVdNVVFg5}-fP^Xh&n}`OIeMHDTrKNENjfhQWqW(jdN+G zzu_v+fEAxFndp%NJjz`L4xxa@uv@S-E@W2=O=Gfhus#%m!E!3jbcoy^^I?taQD zd=kZ_BF2}bW2d48LNAyMFul(%V>+JH%jPCk5DQ^r1qJeszEXuc#)I;)7_Auku*SGP z6^>t`{lTK)NU=8r5KOojCqb7`TiOvih_GdCr-`IhEEdd2xa&q6IOSw4y-d+jZCQGc zEDXd9N(@aI6q%JnCinonKqclFK(lC1!~?aML9CQBHCjmj0Ei>;GOLfFgqKgmA|!4d zGrjCHaet_x<^gZp$^C>E)Undqj=ht#aGP$wW?xfkmu6fxbDt8L z>UZ-k%hW&v*J-}%`$}uJj*GE|?p6xtKX9cn@f_iXbduG4iKAgPjehS)5MZdkAMB_r zbX>EMs7r)FdS+VL%uyR+SX*hByc>ZrZ%|ZL-?9|?hg0t_oy!!w8J~sns6h2`@*^sv zvcyIziPPJ}%6OHE;I+(~-J+Z364GH(VhDFU0&S1EktO}F5yBJ=5}?OiPFs>A3AoI^ z0COI?fAB`i+G8S_nqekHm066wV${xIliIw&8xIV`exUY_pqNzC?lu&}Pdk|}LdADK z8b7>26e! zUuI+0_bKa9LW6MJ7%;I?HW;0=?ocPX{mDai)vj0W3zq)?TbF>KR2itc5G5T$?srn| zHr2a2)wIQ}JSY4;EUhtVmGQ(@v@P*sd>W-S-^ zn@$?2%XByo>QIB34!oED03=Q0fgt{}^Gf_gRy6pXGaj@|@K7&vdSrM4zIupW(e1GA z;0@5!8nSmXg}df4FOpW#8kHUVzbDBMQPiy&B3!i*VR)z+jb$l|aXhSVq`)abiK&lD zqccI`5vLQr<4~o#rY<8Z6UNck#1C#c=$%T7m2kWuc;46|3Yzo#+B(_~`Tqcz$xVz9 z)|ovsNYnQbHA~;w5NNB@oJTi{W?Sx~wMA@Z`al*v^hGOY_QC74qxCA}e<7)-+mG5d z^KLKk8DLaMKpWiJUT0Z?OqTaD1{kk141e((6MK_P1;f_7jaxTG7GmbueenogsQA1bjrw(z+a?J#Le3al`ABaB}$r% zVzSgEshmxy0yiN%bOB-N0Vt%)(rWmX6FoIDH3FOS9W{)8V^aF;?tSPlWT4$%p&m!^ zJPErGGfofG$jAZJZ!7*B<6UB7xuE)vhR;IcQEz|D^+sogghrzBa{}K{^J}V@?_y${ zm_P0}&juxlkk7AiH4NQ9aJV`|0?&ek5!9Kx45XC@&lfKY8jLGH+_n#XXOS9yyvI4G zAm3u;CN?#?gI+TIMpG2L@G4jyz76vY^DpjGe)CbPvay*+GF!t7;o$V3!XzNBQZfx( z^K4K!Yflp4D}rX=9nm-DToypd2OAqEihzcoEyRU2H8L~_Va8Shj^H0jWUUaP3{kfW zCRt%)TD&KhJB?L`&fxYbn(-BK?mVSEwA*=@r1D%w=dp^1x`U6nPR$y&_c9m_g9X8| zN0E7!+_>rY8F3)04+xdcF@S4#8B|-;#OaD>0+^~(D*7Y3il_X*K~+!2B4qD+sf1CK zy!H?9M~vl!6NDTcnv62~TAq9{--bH5nE<9HRx8WwhV5GRvmG5tDFp zUBP;dT9{a2xtpdVFQv`$JaC-^tQKahq4gISriAd~q14_&7NVQuTnSr9{)hRQKt2@( z?p?)XEbzwATf8yoBmQHrsqf-#ix+KnVNYm?X&5or!mJXudu4Vsp*=yKiKuXB=%`Y@ zzm^N;7%{oRGP#Zhzsy1AW_f^NSLBL#nPbK8{{WnhrBRyV1E09%f-WopWB0CGY;?JZ z4A0UAX*sVE(x)ftd*k}}^$a*g{={YIjqlKdOIK7yS3@dehLN$Cd*E6FA9KJauY*j< zOl{TFFtpCPg2};zi;HNPBT%P`VZF22kQ+`c5@EPZiR&_v!rUJc>xGoaGnp@DVlH4! z8FK&|0Cus?6*mRCUgLj7OiO;rd{rR3EtGaLlsCo;t<-QOR~F?!o}n(0k2R^W!t*eF z9mS)EpAdCt%fuD5EUe7D$6jC>wfrlnbS+?djYMd8V#4gqMU}Z%J&|5)A~jNkSnu3x zUGSsoExcpXH(iyx+@M+#ka0ZO{{U=MP+cyoDUh5H_`a_xmRJGl7%ML$h=t1JF>z?d zWZNHmflE)AVh)b|!Z$30r;0&a66!p|8Iyb(hy^(zgJtX-6(Lb$7`B?2K{23WGG?Ee4}h+A}h!w~-fB)F=(so1&~8R#Q+@;KO#z`P8<;vlu% z&2rGH@hd{pa0e8c{{WZ(Tj)KYk6ae)i)+ak86aM*3Tpkv=cw~DO8E4|tIlkvbSqX- zNI(_}>5iTq{{T{ft?C799!7P-&dA!9c`(5ck3?k$gk)gmD7m6kD&H1{jCbKtlQ`;J zHOo+o?BKTGGU777?oeaI6tbsEOwEb?!z^PX51zJ^_Y zD>XJQ^h*y5 zvb&ad^)1~&#fhH)o@4RZcLBzOBm6=Lj+d!GP-gEX%*?YNXv&}ULw=&Q^%s+qbOd~z zd!>6)?mk0|!#4P!xn@;KntS3owZ!e5sB@l*h6R|Wu`R1M&KN~JEYv>TO?J$5YO((S zX;$a#ss8{BZR;bVc_o<2I7*nF7}(5jD~B;T6nI?CzL<~k28kIW+T#F`x4rs@Ucl>_VnG#K4{^mc zg1NZqz;RF{&spLbgd}$rdA!ue;1ZIVBCJ9>X@0RV>^ESlMPNx}_0iV|H}y~3K__*XLk0Jk6>)l%(?+3D!wV8n<_eDvVTgjoiXrzJ$2{sP zR7u=;EATi%4{K803-c{+?SWeX^uI;Qz#dgo7SN?FkYNl1^xvqn2o?kaJY`!(Q4)(? zL{NXsgLH3_U$CcF{YF?aMfEB|k0VtR>&^Si1{NvV6uMLiO4uayB`RE8D!LlEZA|-^ z#uYA7#PtV=%Wk;fcQGJBiHl-4NM#P2AteZu_e)Zxd~BlDQ?}yet}EOGz;Mz30CN;G zl4^M4E}(F1Q(F|8wNil2}@ZDi=_vw8vA_5Dm4I0Q5)$z^%>(#X31n3 zd5NhzRtg0ToskUDD?S$%&?%C1@A+l(VZY{7hkBaFJ<15{gMjGNrE~hp3=UV@13~!i zHIM5sfkmxAI(o#{XfqTPE|u*tDk+!!hi7+qp5}^b6F-SEn1q{uAy4TuTaws zmTFMa-7=wo08#mvG7}lCcQ3l$JXmoLxPS1U+w%}X2o9cB*fy0Th+Woov55nyGR+NwRu?lVvuya?_i zsHCxZODd!yf-44*s+V&(1>88y0?YW9w~1uPm*JQ-&oCnb_$Hw+sh2zXp>+2&1h~nz zf&kMiRLXDSHnR~-P>4MyYk4J0(=C571$T*|&;#2u3^A`g#5_J>3^v!|8fM4k026}y zm0hd(MCG>rW0qh0iGFC66HU2*70|=f!42sR0o-^ys+KW#9J!W{iR6yi-xmj@#7&x+ zrC7aai|J)%S;;;giQ}IhCc&WU-r!%RH*ja|G6Ve2$R-yIYmIWIEG5P2 z3SDu*p)Ii*XW3Ym23la3N0A(xCKVO~h9S5&aPgV=OeEqNWEJt#9TJ=5W*{&Y=k~KH ziGQrg6Fy@vQ@vAjv+IdlaNM-h0hi1hQ%=9*wJ^-jw&4^>m>Ty!#3F}Q!`wS&^WqzY z3k(~5kFgT7(Jw^{TezL`7x<1=dTuxcm!q_*6AR#=trt?uBdYJzF~WZ&-bZlC!qBwM z(3^xEzll<;zTon%cM*3_^&D^U2{JeBexp#)Q}WOHkEP07x?*C($5S~?T8v?~sw0VNo;5WV;ro@aAL=B!lcsk9okBKC zs3Tf`hA9#%*kJ3EA$p&cje~g`wiEg3P+bo?1ve!4BxV9c@3MYm)^_VX|fv=mR!7g6hmpX_Fm1jv%uH}{Jm?l#e-?@EH4DMK3GO}hjEm>0^QjY6q z!a})ry}%sCV3@cdBGA!a7~+944hF5)AaI-rc_)No-s@16GW7VCsp=V5n7>3dSP+yS z%yCwKb2Cv&Zaa<%e64yvmR_fD6ebdR9ZFXBOe{uR#b5aNfS?4U*iHr}KVU~K0_X5vy$vj&r7Gll(0_QzGr=2QusF{8t#S*q(WHDyJS^G<&8jMvG zG#(&{L#zIw1w*{gC<*R03eS3%-3!bA01#}et7S8~TLM@ax(mQy`9 ztC_nnH@6-m`5Ft+{{S-Px+~&i)V;vyyva&4=OhDH$$fJeLazf`drsq&(*Wc~<`bcsAM-Qie`RlJzZPNO5HBnurs+b>bo++FE;0nBF%_hgMPJ(;rr# zJq*kiWWpQ9cvgU#Er{6&zS!v>JpL2PA#Ac2<+sEqDWQxc)tOL}ViZ zx^XLdAhZ!tx748gDpVb`Vy0$w+%{QVGhmzTnVwYA4`+adAN-Rdvt7@^L<>CRt3Vw} z!G>l02LU@9eyHee)7Rel(m=-D=UK(UaXLl(!p(&DY_I_1l|JJ z&3Ic^huo)Gzhg0plf)kfnA#424N-Gl?$YLLS-@gi92L|N?qwfsYwBFGej8U8#*JhF zWoR=mTSWnZ?rauAfI8G=HQc#x7r;Y$#`awA#7r(Kj;>Sd^iJ^G%7_JUe^Uq0%fu=T zw=vuspYgupsE8@(jI_U#s!SVMnHdg2{4(eg=a#Dd#E#?eUO?jDluD5+1@1j-^ADqJ zfl}X09H!TE!viE3KX2SQ759TFFx(%QkSwySdPN@!)7$kj6-DAC{f0P$XT3oL4$*u^ zR26ZOf$CgQw{r0sWuF|KTd=nL3?V9U54kNYpMx$s3S)Lbg;b7T~W*OKZ1%+W} z*8z#Rxl8dCxl1VNo}I>xag%hT)P57Y?leH)SE)dVE@IOJ;u&92mQ%M9)(u+}JwH;t z&uufJ?N2@;y+oZfKA_iu3C{bQgxyee>RDd_y_e_eS<p5<%o(F*{;PtvJnUEb?n5+d*n2%J=7Rkc3i2CghgmH15lIRm)3 z%$0MqAm59Y>A2KAxIM-AS$+DHbnnvt0EoH)Wqr&hU4G&&fPO#YojkL#{{Y#F)fO&~ zaXM#p&8OV%HPg2ZENq{Ei({sFX7QMa z?Dyc9fPY~;z+>FO*V}Vbe^`S=8DsM_E;MFmj9Du)vUu| zG3gYzPpSTKDe5bX=P(@xA)*eC#Hxza>tZu5FBQYZwj~OFUBsQND2AlpULX?b18s=c zQv+>yo;3_t=3?P`+*EmD7(sV5GL4B}N|vW+SuGF?#d(=??cJosfNppq2A_9c=5f=0 zv&_NFpTfF@tL$Sp05~kYOZPyytVbo9p0rC#SzTuSWrx&$^vyOUlB$ z#;#n|>bYjR;rQk6>;?JE!8fN*a^NzElRO#LXNmpH8TyG;mRKRs*w5Pl(K|TH?T!4( zd*tW2yj04dXU)o2`S&qnuKbX1(TR;rL}tJXX}rs*Q{jr~eZeuhB;dgowHAx1ce8|K z$)&rU>EuO{(a|VX%h|IJ{{Ut<2TH9(BTX&LR5aqD_X7@|^%PrQ*@~1_o%JvoTWmc` zz|&^+#r`0*g8VC&0fJgy3EX(vS_l_=d=P0c&$rCWtp5NJ<{Yz#MN-Yj1xvvngsaS| zR#<&S{{Z2H4`fHED66jJ_Z?Pj=?&cbXSYZ6j>U@a#L9J8I#|jxYUI&93fS*D!iMqW)+Mo7rG zVo-PY7P2xRA=URjU~rwm8?*Z$C|dFDGmT!~P_pta{J{2Hv8b~pRp$Zq_h#lgRNCU~ zlq$0tF?Nv`im1Els5dQkPU~JIxp9WLdx0_&Z~as(OO_WCLs{U z>QjXWWVw>qeQ@78>&of#J0AeW1ag%r3k`ajQ{=uv2zX^gHsK0*Qk{b@iB%n zg~Ra&v5aXP@07U8nC1Q$9U$&h482X0QDp2TCf~{l6=i4oi(S86MD)ZCmlk96m(Sc~ zbHxDFzj?i_Y7kvTv`Y1bkP6(msgy$%#xDDsct4|4fhrlr zuNH3YA{0B{<&2Kt9aYUL<}N2+1&kE9Kjw*sr;98vdSQf8zY>#du?>t-f&*@@g`K6f+hW>?GOcpF@Wu0!?lk|9f58aOk*QEi%C_N+%|}B+G)h5T;=i% z%O+a&70Ob-F_s^>nl&)=`IudK5$kP1)oLKwH(1l=WuDNYr7465P$PV>Zqiw?r()(D z<$a?zd|fi*6{_%RQ%)9*uoArfCTG+gR-(ox4pa-8IPE@w!)E633YHj__IT=CgNtQs z!u}#O%l@U>H`-fxa?DjwJA}550JypfVyfb?P;(geB3u^u0_M}?81PnucfU}-RE^Ku zFhk=lc}aJp239%}jj+bg+Fw-~%jzw?lCKO><*th{u$MJD;~Zyi89+^lH3F!%&9I%P zU(8GD(7)8Q>P8KP56l%6zIvF~jKCeS3YRGl8=cg&AgxLxObx(pT(lJ1q-F~f4P0V(3Hexkgph__)%s8Rd5QgAQtEW1dz z^B>}^!tM*92v1a{mB{Mw1mI?8QBs2q!gU&h`Gvg`9xzgZeSF7|bWv-=Da4EZoM;*$hjLf)}E0+kC*; zW&OcsQ+xtbXjD0)h!xWo&^&DlSunGB--(%{VjZyj%1mccfqEqbY+G&{x|@3=S&i1{ z1^gx%OTHx*U&*wM-8g;?z|mzQcQ01Ve)?r~U+02E4{&d0_M3vUFOBLA4k3MOh)Fk7 z&zbp#0JT6$zdOv#rI@qg3UMY(!|Y~rEgk_NoeY8tjw(K-A4U6?C#F}?e(gdxbWw=m zeWL+epJ`()@k}vYpVYClRNP5XJ}kv2X}np*{KE~RS%2|{?c)tT;`lFdW&Fca22!R3 zv#Esy#M>(czcPp4bNOKggldN6#yH_)pvqM43Nn{70{;MF2;$@b95S~z<|lJe9sQRK z0<}djke}y?cd~C2_Yk=eK4s?jSO;*<+~oYs1urku38b+-_=pHBW?EW}O*CyWhx7@@m_bffJ8W-$&2yhtPNHh#R*zU|y2PVemH~vT%>!BDYj8Q+{S3F)N?h-Z4 z%OFZ(??~_Q1ozSND?%4dxPGPfQR-cODY8*{n4^GqEf|4iyxm64K02spbKBg$s5Gnl zo+{g~aa>qkVq3JUxPYcCzmPD?g{@1hgC*`==S6|n++d5u&6y?Zif5~e(HTz`#qD!` zNkq??nVC$fPG(`0!wLTY$H}Om$`K7yW2kd&HYUU6K`3zJh2RO=51Ck-GSX#vmv_D# z#h^LAEK85UZvW^ZzzTh!3?6${iolsFC+23Gd!V))tQZUfW<%=0o=1%7KX`}A=59wUs;A1U)n2s22g=F7pu$UpkvL%A#_ZCQDG%(pw zfK9YGyRT`iU#{qD!mms7nmj05%&YPg%7RI#b@)5T|7+8hx8*#qCxnSC58D*Ed}8NB2@=MDtHl?0S5m7Fh!G0#LXi#1ZD0gg|qw2 z0>K%S&k8VZpjR7>@XarA7a;uxDea-mdnhfXlXpvsAH6_-dG!t&`-#2x2yX=H;oQ3O zW>i#G-xV`z3e0T)bpxqYEhVM+4miYk^^pUWLpaPrV|18RKT~loSAysC2oeG0*q{iW&p(03zjGh%BV?Fl9Z<$ zp2p>DVgCRTVn2=?(CB@e%tmIfP}Z(u~XdD#Zvs5#noEUFHk`-|%fQ+m9` zDgiD)g2F#%QEr8osGZskMFyCO0p7&CU}-%;S(f2<@hazn8vg*9Uxt@74e&BwSwTGdf+?F<(le(@&D_AK zqwZWDCo|cZdW@E3^uFbJw$mtS*HK#rj74ItE7MbKPKkVZdW1b*VvD?J>ZkUpnyIEr zP|QNzq8&kOaZqV-<-Es+jj&xMB)ft006nH;ijtKOU{lHov%v?yk^tS|f=giKxr#cA z;3LxzlHNG!8OA4#OAG}sUCN-$recpHeyvNj9__zGU_CqY24`OYk%fa}BB9jY;`K8G zRF)@ib@_l_4Ae9pU_yI{G%lI?mM*si8aWQrc}ts(ukJo^uKfH&V9S+;%}Ii*PvTY!L@F&zPeOaZ{xP`=kbWp-g)L#f$E@IzJRYJBjZ z^i*(*e6iOE&b|Kt(3$l@pHjo%a;7(GlLOv<;VM4FLQ`kt%I*S(#IC%(p5cJYG_y@9 zP{(y&<_j2?4-)(?UBUkVl)P2BTJ_Y_sfD7u^90c=QWvX&|D z?=>ANk^Sa;B220|8<|=pl|S=2a1MgwrQme7a>l`-sf!F&^B%|>3)OAJdX z+#v@h;&=SZ^SgwP`bYEP;lAbe$yliIUo|Y=BJdoK1_~`pw4zaee*=nyz?6E1{37Ao z{lQ;=!j@hdWus`PsMlks%P5QGc6pbpr3Sr`EC!Y?cQZ{zQ1r#i>=Cnhq+Sx{{X^$j%6-dsxaY5?SjCiMS-*8PzzsiV}rgc z9^xV#bVN~Flz*``3{*W#RL-0bF6_)|8Em=>)Kl=TE^JUr_Cl6WcNOMU1AopOojjbp z3~fTDf87RxQqM8{eh$flg)O7xrHJQ7LmR1ZJB>>P{{SW=v#F82)UtJ9>^|d#5}eQ~ zr4=e?2QX365H@&AYxZU#-I%Dv=_rMaZ;(Z8%jf1e5@k(A%N4}6afPhMH!fxs-N7uz zziDl}xEZ&(wr}jj5XLHCx+7XmS^d-nk?K+w!r zqFT-!m-84LY*D zUCHItva;^w=&9zFq5{S{Wk`LX81{@K%3$pQD7uW{)LFS{TvSdoG7O-w^&K!(xNT97 zCG{_S#I?%e{{T8!qa3%3aPy5e%4~{vFpZ4Gda7b}8D(P*7=!K^Zxud>hP&L~GSYsb zf7ueC;FdAmX3CJ`EUZirmLjD-$y>S9Um{oa6q}f1gX40}D73mI4*fvN%9|0g`|~Y@ zYO@o|D;;e+QQWhEiZ2$rm`oxit%_!F%(y_NAUEyt5Z+jfR=Ga3M4G(Jxt)M;N}blo zKFiz0RdXXY&frxLn*Epn3=uT=n|ni>&+*biFQxk)z%Hfp5(K41k zyZp-T`URBb8ln-B<>RC( zGGMbE_}2iuAe6^sRT+3Z%u)=>qYTm*N^o&-&Y=FGVN=7BX2dN^$`KwIC7$7^-|;gk z2pFrtGd_Tx3=xg<*haag9e%HKXCFOWw-$D?vtSe-sgnnp*~G1r9;W^b9$9uVuM;Mn z^*q5C@H(%*s89ijs&s=b>h}^6xqGMql&HCpa_%)YhCDen966U5lFtMO-x7ov(Kl?% zmRHwvJWHc;*>e6H5UNXq5bm2^As+=DL34q~>6TYqrZl;1znEM)-k|pW2amWzXmurb z0Yj|JMvtZoD4&;p1bEUSjtH}(g$61*m|@vB)HP4UtVhxd&XL8nU(71M*(wb>^)&sz zH7rDG#A~To-Yy%pKz_+^V74lVSAo}rK- zDj{%SEtJv)#C`_J`GTd)4khn%bg6M|opCU)EE{HH6_@%5q+bPo&$*}-8a+zpdJ#0& z7Y4B!52G$o;KKaB5nLxrxD2ZEDf-i&GhJUVP!^-Y<8VIXapXYW=??%^mQn3|$_^eS zp_C2oD{w8p6Z|olk{UpI+%$kLrC*3FvHX~ucerjll=IpHg#b+@MrvTbi0y|Jy6-dS z>1`BBfYYgO`oW+4x%*r|ZWAKRB8@?Iox`PsQmf$kI)UJu%a_XeWSEPe%(O3=rw2?x zoiK|E-XDVfQFgVte1lVJEL((i$a8OsmH3s$t1ei-FasN6Xa4}$bX9nnYYLa40M$da zMCI~8wCZ57eZvRwWl6rRf-cVUT9ho&Z;49%bN&!g{@C2KF8=_CtlfSw7?&>cP4G1u z!M~!8JPfHt74k%gr9h_0+<)Lfxq`rSLdfg(hM$-HN(DeB4dIBt-1N1x5oRX*+|25X zG)>7ik9d_eM_8Lch zw|R|vjLRHKxM9c~3d@zwPCNko$J-v|ZVwB^O5|J%0jMf?EBS$3leiVCEQzo7gI{)%>ez;*YK3w zgFVV1nN(Zsv=O@real63PvXZFOUz3=S=Q#GtDbzOX2l7#a7Hr@F~aAyl$=EzOc{fiNvT98 zI8ZRn=ExQqnPPKfxG{whCOElr<;Sqi(!UD$+#8K6mR2FwX0lGEiz#M%>K`1`Fav%_ zW{d74X#0k8+cSi(a;Uv(Zyib&3#r-jRV#An{dXD~QJaX+@_iD@yMJ^W-x+`A9lN|i zOI<;NYnzpQM2B8t z06*?uv`^YHP~%YwbEst*)yF`x=KQ8B_?--(AyzEVji&%1a19f@=}u3yBykeMzZsT;T+` zshRM2rAp{W+EKP)fqr)`)GJM6%oqAfsnID%mu!tT0aEHRtL$UpIzfs%V1148v>T?piIJ zB3MQnoFjZs8Pr*LjI+6P%+Gx>4_kQu05E8&Se8ceLm+j%Ls;B8Y@0tYS%zU)v$ppF zsz*geQMErFmQoD4ARKy&3sUw+e9IpdEaD@L>w#AY?T8UBC2EExh9h{0N|}VFqn_KC zmZ}O;;`3<)MSGOV8cTygs5Dye7^*LUvOgmT%#30bf*X8Hk#pQ7b%}TC{{VTJU?m;s zk1-j40_L0QQ14J(LPrYmsX*Nj%7#j39%dxdZZ`x?ULP^Rp+jlCt1}Gk7=qa(D_0sy zA+`x?q;riRLEo3n3B@Yu$Vozi$E$F$Jxvn!iS)iXuQOXTo;u}z+yX0 z6robATAf6ksPb`KqrMtz5Oo5Xf&%3!P=zp=c%QLAL%=gj%(WmtFo|=P9`>5LMPjAW z`+k6U%4DxI33B4qn0T05a;y7^Z>gVll@|lS#?7(kXk)i7!dNpBzj&uPxtocg-N4kY zp5}@hG1)SobM7*=-exzXxK*EUT2T<9+1L@*(U$llEHTYvQfB~Yxtcm0~JcvV{qD`l{eUQDzD=;$IOLCzw z(J?ai%OC}rmNU4w`Y9W2fT*(n072wb80lv6Ux{WIx4^e-z4WEi5HzqNT)-^Ri$T=y zKcyWj8OLr-^1!;*Fq={ljz4dYNVD>G^5;FVl01gOe7|3z#C%G$$Od+{i8*0 z5VujRDw&_$nFu2#lAV*PjP7NX+%H5Th9ioK%bm~2rbFMeT-^pNa7oo`bY_B5PPJr+NK!Vg4HWzG&*70;1oKUMk6WyXGw1? zM%)6kU%KuA{{X!bXAy1Sh>;Z9l-;Xx@{P){Tmn_h3#Oqwa2M(%tBSm66TK~RQ7p&# zUHX)7S1z|i6~cXyxaL%s{v9Snwvg8jr?P1pHSQ_g^CFvo+n6;SSnby~&r?X^Be4w~>;o^e_?dxoc%JB|z!xpX5j;raG2RlqDhRQER;57VqVOQZ4hacR z%p@kr2N2*OE*WB10@%Db=Aw@e|HJ?&5CH%K00II60s{d70RaI40096IAu&M^QDJc) zfsvuH!O`*IF!2A{00;pA00BP`@c7!DP4Q=psLb$3>H{iQihSEr;RNz26pP^S9ufzX zCdcE!2gXZ-I`P*L@Uh6AH$MtIUd!0jCD*?Pi+y+)I}RpHd}rmvzb_suz`1d=T;U z)TNax#c{rS@luZC=B0QYg-o2wJTm-jYtDELl~ae3yeX9{W_Yik6&w;){(W&c@5L{R zo%k8IEAU7WuRTw5xUXI=Up@oK^dvUM6JaN>hRTOBvOYo`MiaJriuk$2JY+o4;9;<3 z%VQQ?R$O<-Q>Yxm3$t(Eit>`YUygiSJXGSPccBK%GE|=8|WI3#_n<8#t+O-fFL=H6-STe3H9@Lmy67o^%z~o8GH;=0t881#$7OO63g(X zxpRCHnNj2LAnidR$BwcwrZbNX&gOW?OMyG%!Sy?qMPkkIei?j0gDwH&(IYN6iLg%5 z{00mN5Px5Q>y|UOx)h#%M$C9P=ra zvGhDIjo-rlKNTup;nWyE5S7ejcu{!Bui!)RA@@G83h+jDf-!f&%>DPwuNUA(Vx{BZ zggn&!L7RLv35yHfRI!PfdX+8+(_`s^ZN3#@?5{ccgKDP3@7ed zMfr*(dGTCB!z;pEd-4#A!C3jz@XUm*@caCKQsemF$CX|qmAv=j(Ah{I;fdzpKQD!1 zC43VXf%!+6LGoo2JSaXETufa24!mAXCBe>o)8i-9a&~#SadJFM@I%AgNppzv;^Ft; zNhH1l3i&Qwcz+(@UMdanrX@d(06p!C0e&@JsV~JLk!g zSiariGUw$|7q*sBr;Kh%TE6Dy8&VDBNd1oC;d;m^K-{4Ap zPuGmxhcoryxLx>o@-N`Z^Ph!mRuE z8A4l|^A;p!HN;~x#!F|t@=Cd1kMF}7PXp!f2~c>i9r-6wX9tUiAA@{&_v60@4-q_V z&6VMe_)YV3)=zMJ5N>R+x&HQI)VCAGmQX*=M=Sa$ZGzSL2;{ zG0e27Oiu#Jj5wJN_!X~~AD&R(3`>dRm2-V~?i|3I?kG@(ZwMgYZCs zE;A$G>yO5v4+q>AtNc`4zra_1DpWT>wbWZw_pf;Dj`)GiQ#tPP10Fpq)* z)FGwhNyN#(PNA&5i==!Wr(Ocm2NQ$`xDg3bk^1;uM2Y0QL>>Tu&ZX=UqZIJm$LR;HZ48s7ot6Kx;BNdH67rwro1`$3`SBybhsK z<^Cedm&91!_5T52&pL4z< zmon$3J^_Ia<(@CXl`ruaB)BBFyDoUsV=O*3@s;4`!AikowDGL@TBbOCN3+`CFq;I~ z$s55TtUR+J3oRyc)#0vHA1#Jx@Ia5(;B!0h%JFaI@!+one4l|k{1Ka89~Qy+gDzZO zOuy8+_c%*Sm-t`euL6RZao}=o4t!hAkhwC5bq9CBjYG@C$;_vM@^EK@iB-+qhNspR zIE?&$1x3f2kLOankY`>=--i4nPmfUJ$a!Hi!*@G}fhrtBpBBrVo8K{Cx*=l zoH=-VfJxphalRZZK|XjSv?C5-L*^oIW8hy868t@iBRJ+g1RJKrTA$1XGvJ0tkBcL7 z;PF)gL&Gd3MDcxiMpny%K4)-ym+(}nyW*h=mj)2B5LuK&d7MR?+o3d;?X5MGPK_qvHF(~(o<+5CGU!`7M^N9;U;V!xo3RE z`-Y*~VjXw~FL{(nmyGio7)~G!kL&IiNRN`CIQPf$~q9(`G_dEPw74a7Wpv&_|+#<Vjh_P9Iybw3==LoQxxCsKdhrR-riB;p6 zcp1r;7}_t7zXDm}!H`E5!v;*;jt)vXls*aZ9~t9dH&9^~5`aXc^0pgb@^OmAzZWvt z>5)=jbBO#o@dTlB$kTo9HvGytS7$? z&@0Lf#;3ms_*QR$hQeQ7CZh>%lsV5TyYYNJAdILUJBZH-j7Z+c!SBNi@C>jekoe8U z7I7Z|#2`gE_29uuBhzCc1kmL82=&KOi}9s?0}iIy4&zZ_^#N)TL3J!FxR+MLR6+T9;YdJ)78NEi9X{r zWzFz`QOTY(8E?6?AX=PR8j4DKi*26-O3DZk8IK*#c#OTrIGzD!5~V@sb66O~LIcz` z7~&Ff7-NhO%EroszPFxb2M}B!?p5sNhqj{ZQUtPP)VR-b;A{Yg+*b@qiWm_CnVb7Z zT->>KTCp*Fdz?;QL$al^)gQS;uJRZ|gJA5~#&esEJYF6EqnTrGP9_+G8vbKRw}&%j zT7>Njbx=Hdzs2nyruv5-HX|>Kwy(h9ltgL}l!08uMwgI{2U6NbPqJSO2;7!Wh46xV>nPZThUhD}%?$Pn2%=;k)!Qn*0AB}`|2 zO1}pwT5K4>BQ6lFi;Iim=PaqqH3q{kf323EGo?70h)1*-vyw1p6MUBv@D_bUPBJk~ z^%n>!?#Ws{;!|ubhbl7HVdAsqD_cG=rFIlCBm%^!3uCHel1U6u!+$7=S%Ds?@?3-#7yrqrJL9uMBSvZk% zI4UCX700G*<{&-@EEiz0hFrPtpDa%j?dCl};opHugjC437Da8l$p!3%XxE7Be+@FG z`tYfHA0N5C9wz=b;4o|jlbn1zj}NI`Fj0m8i*lC2-+~}Rs8VJR3Rq@A2}-|SCwWoA zUSeN<3DO=b-;JIP#Uhc1L`Ym0UQHt5Sxi3(NXR7Mfop@o9$zD{WvUFaHF5m-FHZz{ zo1A!P2x6tduyxF5akXNnnfM}!Vq4T*d3MbF9~Tb{ID=(j9tjcfHERIV{{ZnCX9#Kk z0H~ai-kvWcMG@@o<=NPiD&P@C}U(y@sWasF$e9MvZ9v~ zNA)X-#4z|7ns{s1hF9Ww3!`cP)Lflr1)DK}?{h}Zaj}Z{o_u1=cmPUHV9Cd@=(sn` zw#JyTcV{NeShjaGm$9hVf6Qnl`>G$6CMaD17Hw}k22-87KouA51Ptjzxxz;n^a{bLgMvD|nQwVwvm7E<|UH z`-G`HKGeI*%&E#Gtd%VmJ`2M3ctaZz`eVK?EFz2{U~_YxH`HHprxp*?982spvFj4! z5f0Z-~(vywS`|Vnkf1 zKtki?A<=P17gHwDj~zIKsV^Ao3yT+t^F@aR5sy3J@s;xiGnaztiSra8Djkevu2(RM z*cA!Iu#WsB*E0_>#Eaq6$By-iEVREn?hB0pgs>2XLB1*+%7kus93es+#rH2*4qRu@2?LTf!X1(VnL;+#*m6hO*rv6&*w1@WlA> zdxj%XLKz5Og`$1}5F-^AEF8sMLEkfqR|B)>JWB9ii}><*i20I~K`KQZe0Rhl!2>w) zz2Y*J7cs}x#plmk;F;=O5jFl|B!+%%K4k61%1 z337p`vlkXJ!724FTVsunhsEsLndI=;gke-_#xEnV%wa@sK0Tufl@WKW=>WO^a)Ay>q4;vs|`%W)Jw2$7F7BR6~|T`h;c0hQM-@hp4e$ z;fpv$xGz)bJx>`4QJu%)?Pt_twg81u)ITy(Tt5_lxFFq#S}VwZ9`%R?Nn>CAO&Qj( z%+w|13qiI-Rx8w^DrK8gMKPeK!xnSmoAA2KBP>F}ZJefOfo#k~SfcC+^$Bs86(Qu7 z4Db@78R8_YjNcmwJDiw)z8vA|ziV-8XcBMKjb zBn015h1p{iNX-*A)=o2+B~qWZAJ+E(r5LvNH|dXX6A<6MnF3@*SW2?hq6x6%M=loQ z55jvP%(7kQSsYm&556&)UVtbPS+$5Q7H1(wT&b|fiLCwW9dAhWDZ@Xdh(JOHTc zh=);S%g#wm9mjVS={;vM;C`X>h4!ICK9VVLs8u;G57ZH59u!IgVMcDTBQeyyg2opP z@!-5cCF#`evI!#Bc~1B3aj5SY=a|0Xh4Tb8YvSYuNAMw+$0LB;k8w6r7%_<%>_)C; zqGTH`A6ZGvbh+Z%DtG46>jy2EOZeUdikV7)M(S2EW_Z#AWkm1;h;kJw!YoJJxoi}= z#5^(9rlYCqC>)a`Y%cgJZI%;_Kr2&rV&zv1u5yo%WUf7H6(x)~uwWs)Fftu3RZcDn z8jj<20#p*qj>R5)D921i=3%>xr0OxQ5o%6iA#qwwLULJ1Y-cIJls~v=VlyYXb_l>< z5Q6F|D0zcVhm&JzvZBjujyQs)mo5rUTzIJJQ=V8nUoqxB1tS}b@57ghm>txtqM)v$ z0x4r1q$qVIbwb=PqTV1LGU1A0xTq$V<;eIN-8Kgxkc8ciqiyKkEr>WB3TaXQ12XHnRqgY^XBHyd*Y$u zFT&8mIY>zi7g=t&?SxuAjv}DOHSCoAuv}w@UP}c$LbE7A5<99Pd1c}nEQ+@T7Ki&Y zxJxB>6@;Z%66Xpn%M;&=sw(k6!f{Vo3izlXx|}$;S5eoGIZc)jjbWI=$5Q2<;w~-4 zBDLUAtcYU8B0eK>zYb!syT~Duu+QRD-Yy>uiKfbhT>6`>KXos=B}FB}FAIRY?^7yr zq1Fp<7alRJc$MTO!aVqI!zq>lHaH{3%dMI`V`C9=4b!q~q*bQ~sm^XLJz4GQ?CHYMi5ttp*Q(*@g=e+!fgO363BDVx+uaK@}3JO^mI8q%?6T63U_od;B4&q93BXZ+s-e&xruyZ!)4Ekb)Y? zc;s%AMtjv4{$V zVHKrNWLFbN)eatE-7z9RJVTmPa229*#5%%)4=i5c*OQ%^md?^TZUc2X@b5`TCPSVA zmO4n4MWs|~AYUMZs{nP7>!m$F{WF*vPsuqK60s#j?xoa?)*3{i+&$IE`&lX@)*OeqS9KHX`I; z`;PiWH9>lha5eq0T8DQXN){@X2oI@4*APHfE*orzP6~1w^)Ohj<)Y?dxWxDM56jdR znq_DnIEsrCoP40K1mawr67Bs$Fyd+;I3?K~cp)eFj;G^^)gY@Kt^Gj2la*w9<~hj8 zZc4x08bj3*cF1swBN3HE@ssx~mauFUCk;WNs+($Zz9R;Xp#uye8PfzdPz!`Ws2i}A zu+gR4BL)@ucOzby>b=Sr&cVJ_4QFWiGCm$9qb9~en^_t!n(6{s^1<#JsEDjpHHc+v z>KUwMb&y;=L%f2&qF$0-pEC3zM+4j)1l55HoRJb0gScp$?hJ4xaf$5Uh^>(`^BR9p zZIgylkx=?3>ax>@Hqwr~^Bq|1v?a6M57JPT2~Z|V>*dN8S3B^2xIai8*|+nHUJUC=A%_ zfw2hGmUNaD(f+pG0mc$j-Z*Y#+LGAa#Zlk}EP$8wMRCJDr4EmIatCF@vy)Pf!RK zv8lttqI>aQ;}N{@cvWB>qB-qsy)L+b;r2_CEd+=mn=RePt@bhi~+}vp}|qpf=coA8m6xh#}T9IQ>3i3sl&0$u^<7*k1rdM+Z+kg|D zOTy`}6UW^! zF~j8&2xF+^U1F8XCPf3GET+h%p1bj?Tg8`#{{Xq9Ej0e_X$H)E^Hf?r&k2mN@DcJ8 zqH`t>Rn$(?TxEmqbiM~zB9~)%|D#fGQUuVlZ$S7Kpqf&~>K07IEhF$B}8eV6*0 zHWgJzDPOpX2bgUSInPqDDRJWfbQ5JcFOkeRYBMZ_4<{22_)5X+C5VluP#TG3Tj9A< zqcoO*3Mg1nV5(IVBOKtTP@7zL1@0|}h-~ehknpKdTd{o0*d=@_U)Y9GTOJf{Ah6tj zc)M#A^%7Qi#9JcX&+aT!Dh@v4VMJxWab_yr@x&$O#wWz05F*CHu40c7#M)9AZzW*7 z!1joDP7~%<7Fe8h8jEnsv~i4gcuYBt{0Rj^WG?uzaX&HalGZ`4-dVs3J%R&tVV;-* zH3B+B#?eBj#0`V$;aEv(&)nIiWNKvY4I;lGDj4F*RArpOPAoSV?pwYCuxc&vPH1A; zY-g!LDdO`E2}?1t>TsAK9So`VL+KAo3X^ogCX~kAmn=*w9%2xW!sF8+5S~s*_R4v< zFqPv%Y^N?16D;*PVhWDzpxa%X#b;Q+^SL!FIrNC4+FC^f4^fKI#Ba2^1YWNQ8`e}g$cnr* z@qkwCuw3v?FxhgR5Ksi;p{}4sh$BdyPNKcfjEJ(>W|@O(u45OByBY4tO7N}s4GxG9 zN+?5erL#&wQlA3Gyf(aSJiN+5iG!7Db?R4NCnAcVMJ9WMYA1k3Biwrk$Jc~<=4q9( z79ns1Gb`zs%9vmqjO`%-I_Cp?!aPCRVO2s9IW7*VnNb`s8pn%IFix8kma-YZVH|AY z8J;&U!oDIB{(S7L4VrFVM)Hn3H@G8LW~p+rbFF-t9Ex8dgfXCH!*JVdid6!oNBofe z0xc&#;iTeWl$%(o+r)NM((YX?FEs>!$^bHOOm!=h$u0`0bVkNzN49^w=ZlT{@vblVBE%DTQ7FivS7_m@xJWMKPWT~R;+T#ZaN!d}M z43Wt%kaWQeCv^pP`%3CBND)Y0*?PnDb03v?vglm-jJiLGMRhPKV(hZ0O9a)-*+uc5 z9w$-oT9pLH(@O#&+z=R`F|N>Mm#FFov5wRsY#O%ZHuCcl>2BEyz%r5G|KDR84Wo+;~R2_YDXIDlHBFBHRQ?jUcyj^7LBYMh84k=(dWJa6yA5pV=0IC=!41=+SGM~^a! zG+^6BdyHIvwBQ@|J_ugLQO!fGRm=oylCEeHy+_7g<_XTSG~aQj@Q9)_R8&?o+{u;V z;42d5VTy9peCQyUJ+4_trp7k59pIFEiCXzSW!nD$xlnGqoS|}A?&2e=L`FI^DwajAqN5h48%Nb6O;r%%*X*yEU!qwqu^GU`5+({S73rKRG; zP5i}IWzg0ffNhqZIE<)q7}*r&xt_c!P6d~o#B0>Q+i>|81c#-ZWHip}h>0`8sDO)y zgd2zWBV22ksCY)SEzunbk`NaZp%uLBS_xBFgD&n=5EVz<*@cO$bDm|I@A)p!+|47W zv#W$Oi!D)7Y(kT$yFJcWi=+-*Ab6K-CGP_Y>-2!EE#5`AST4$r48HC(w7ZL(>23{5 z;f$(Os=6{C0{%$Hd207@ZRd*Ln1+s^BVap}*3VH|9AixiC_>An;Y9s7jHRdY>BDQ7${8+sM^bx|k>Hw-Ll~pchj;9f#K~21s0Z@uK{2-k^ z5_VoVR9As07lu{rqBUYXM>T{oF2XnBLhb;x<*M5g;mRCr4nqA;pny-Za90CBwas4y6Z98MBe$HT-M3JS|JjFw!#5&*5F zPKCQK8GO?K2UjU}vg{xvy0Mg{sV|}^h#EvqkQv6(Q}sIAEuuxG7F}-b;Bq_o7*YYt zBXB!vJg^_QsdeJGNF4H5&scuaRc@Nal#vL#vEzP|)v~>7_1PQfQHL;u$#IU^I#IFI6h&zeVq`8Y6 zMVhA?U74ZFge_Nb1nFh)$;3SuGP<6^H#nU27>|H2kqTo>5F`6}kBGZ~z^8JwxHeu3 z<~e^ohw~VT)sPTd^3_whexWLSgjLy4Z}{~o2NyLAcQ!F{sE_q63aKqi%@e78)r1G3 z9P*2h{TYS)qBXkT2&U=%P3_(>0D^zBHH=_t@Y{%6a~?y3JAeVr#TOcq#C#k?K(%4u9<2 zX^K>{jSO10a6mLK^C(dN0O=YuKYBm{Pbuf>JueW@B55F80({0X-IR@eTmjF*PW2T*+vEuvkaK z9r)I8%57&2IUEDbCCY+<`&45kKhz-=ij{BY0@W7rKjErH=<5Ws_+!!nP((h< zPqYW5eW+eSv^HCErL=Y{u?$FUE04I&)73%FBLvZTaJnL)3K*nsFKIt}EU&5{p@&M9ub+ek3 z$$djCb4<7327JYzDxnwHewa^tQs(xtkMq$+*&HSg?(D_CwmguF+~cUKwsje5XIJ1{ z$aM6@cfcxb$EHRnt0CK)f}P3^897M`b8*AFcD+Sv{Y&GX^E-XcaW)GC&KQa6903aJ zh9qD>!1;5TLKoOz4${WO(1^w*a4+{LYo{ZkT;-$WL@MBYM&a9lUYAms5L)g! zz6j*gIGo3%Wd^I}db(9tBP=%sr0+Y9=7rKaJdP;WKX8R696=D+`;2dC6P%b@Su4t= zp1PJXZIeatw;eZ#-K_Tv9ipi}d6?EbhCAHVV5gjg)$*SsT ze(V+Y%t4mQ^O2(b#VM*|!roQGR6se3$X57s^D5)`n}u0qW;`h5e9l;OFv)mDATFvH z%32o+;(FX08-KWA>ufw*+ZG}L6Wrn&v~?d*5f$7a;Yi}_Jx4Wn5n#+2UnEAD7-*L+ zqUjW*GU*bW&f^JjOenz_%M)V9P{FN4O>!IbAAD3MY+rvC8%dKu+K}Gh*@$H2{jq- zEE#=>2;C7r$2`TXSX&`zXaLIp0Fz%E5)4aVc6Lg9=f6x50Wi)?-kSm5TpEd%mBPd8 z7l8zZ3Xr!Rz@g%xn~3eJ2^@l@SvArPiE;&6Fb=+0vI%`f7trM6t(*{s=wtoiWp~_D z7RSa<#t!=uvV#CI1(%Qu9`S{y%MsQ;WmUvjtiqL2Tx?pj^IjQ|@gN+l?m zO@MoiZjlN#3{b=4j+%vRgIPCMxHX%1ahyv;)Z$wGLyf`Yml?68#dsfkkhr!n$w1Qb zD6zbWxonHS4{%zhk8vDIokey8kRx1SG|5YNBDXmjji!jw4|3pTlGb0$MlUbwDMQ_t zW+X?lGxq?xQdo}up&zyvP9xF9M3HZCgch*Zzzis?dL;!7+GPR7i%HFFSX~34!ywgW zz-y&Kf~pzf5uDA8;69~_1zlkn91npGj2?-q5R{_eXcL&;jR^;Pt?>weD@K_Rr9@#< zDS}1pfcLQB5HB!;CsikblDxv$nUsDE|P>CO$WHHUMF(sw8s+;NQ)U+;wf(m zmDfOrSIO2y+aYcgI57f)3%ZK{^C@o$#9*kO98wdTxTF{+1R3fWY0O+!3yoAxvKZKQ z#5L-~fFnkG%r%QuX;B~-)y!>(pOn4Ky{MQH)f*F8$ds`kQP@hXXJitwijSHttbQWZ zvb`7%!tp9qsMRfywy`!1F~zRDB9CVgp0I7p6&~WY^Tbf%X(ebrd@@u}%3p#xE*yG> z;cf^X3f5MI!B6~V*u>FDawHk>P{2WZ1m?lG#>+(q<=HS$0ZhcBJoQF!DW!kd#975u z9+7a}Fua0c%Tp*f+%Xwg!4;cpSFvcc#>+z`qw zVh@Q5r7B@`(C|Q4Fd9A7Je$2O4#{1$NQ+!o9n2>(>1hWKHJ<8Fv^#8N!~v$b zB~y*7N5tn!Z&ccnxpYLxD|VZq@3JoDJWCyvV~xh;-^ex=2yI1?_;qJ=DI+YKU0aA<+TJuz-f+ zjJR~0LZQCaRluo0$zn?RiX>`Npdm~ERd^>jswALJMiS+VhMKEDMH)R)77!m0GgKBr zKH_=kV?6*&vQ8uocYu8Rmru0hNb#yx^6CH`O(0&!Ql1)iTqcY{rH2UXVQ4Udm-3d$ z5{F`;dyWMo!jv)1q97v_D~&@dgFzJ_A?;(G!bkrAdI$zX7?HCB#xL-B>AB@e#|k znCM4J1{Y*`mCLy2%tRuJt%0KTp*meEG??pU&ZHd5I#fMG!ioYmv|@;FsB}PfIf-kC z0#w={*dbMVk6!?}4psF4NmX7U5`_KXQ%!Gmk<5MEy}F(e$J16aBejwD063ustV1r~ zv}GQOn|Zl?h6=i3J6`M%4ibu8sO$*Ze;rE78LzyvTJ8_oDp_pJ?O)8+2&j5eQdDjV zB}I)$9!<4xa2W(&EIgSUxG04|0oT5nqH$c+azfd4K^nL= z4n@LltZBf1vmYM$@Q4K)F3yOmGZzz5pSo*tRSe~{r_5(*LR2s+ zBVikg7K{Qb=W-w$E*z4!SR0HKM=n(moUzQw24AQMk0n9Fo{w{$dQ_QI3006T@j!tg zD_7j>3{-rT6-XAw1w@L1VmUBW?PcYh+%p3p8HQU5b{XY^oA+Qf!i*120e#H!{RsBT z_CT-_fKFm6MI8qb5EL{P8x~eC@W%VK^>MZKLGd4kc$JGaqOLN5vW7d`3c+{;Y{pEa zw(SgpHx*|rdFD`zz1nKvIjr{^5F}kjp*U@f!;zd=w*KHTTz~3X&DQ#i=mVkj$!*AY z7}M3miL+jeFw}G*szY1qxC4v0R+>+MO?faEzWIRe6nUxu+D0;EMq0oa%;xK}brePB zfmtuVQwJDHVR`DwC3aM zUKYxZX=kB>Wd%Nn4I;wnL`Wseu){30dSxEGDV9(W(;8Uf$j7NcTk}>zj@87YXJBy= znYJWT)C`rEOk&pQ1ja*{pN}C_Nh{r(xPbTA!~~bNZ!l-VsVh0LWN`#*E^Fgo%qVoP z91#7V`p34rWxJSmQFH(x!)i-CTtEX3up^cQt;vN%kArbK+^yiG7t@PIC3)$DCgrgp z6~hb&jv~W{NvN90(Q-oYC`~XUw@;g?Lva6bCYL8?l1@A@u66clFW|Z^@JLNT6R$Bi6p=U4*DXtyMzDT}0;~4@LO$$wLRr!|{ z?ShbWnj4g&iWs83lTBcf9x=#gDQbf;ET=7ch(kw2NKtxbM;@6>Fz==Yh&96jjd9Ew zFTupsw{0>Ew+2$-ufhpY_p3)R3q#YoTZ>_Bq z+-L>v1`{wL!Ms5r#UdIUa~$6F3oWHHTArASP^5+@X_P)kvgOQ~Z4nCys^;f7{{S#o zunzStevYwX+D$; zs`m=Atk~xlRzfldX5?u6%eV({j3Bb|nW9B6AveSP{>mU_($^ z^%s~fK;Qs)g<(M@!uQt}yb<1|T^1B5OSvmlx0@KGMmcN{^9}S+4}2h4ZX&SZjF_O5 z3CfCi?0P`_oH0^MLrWzkQWuncuq+D+G&$diS7DXClaK!ZGl$`uw30lIBkW+#Vw$_v zyfWI@)(uK|jD=$F4SpjZ;>UexB-&*h~>^) z!4!f$b@@qlS!uw_$g`ndrA0BU>4{aX^9#99EkN}WCu^Lbv#aYA6;c|~Hi%iHnMEDq zxQ%W`G}V=rJK^RXsAh@fok5j5xlrvk81eHeolY^qqHC7iV;n(%MkcMQW!&5>pdkgZ zS#N}jB!bkBQsUhX+(7yeX2pf3(AYA>Ie{Um331+@g_Yb>%}SMubpkq%Au4bLFSf;M z9Qcd`f%Y?vLzHR(xiN={ZgvgomS z#Cdf3Noo{HSFYcf@OINzG-JEVAPy{vLoPG4FC)eS7m(RMm_8$>(cKO~eBULHyWBGS zknAo@cv6l8y7aw+(1=Xd0O!VA(2KS?Ecfm#Pabr>!E&wE&tvfjYX&}LL*X281r)b% zF<+uCAP~g1*;(vTR!cVVcQ1J#Tn8m$u-SzT7@MKpUxgnEml?h@-r-Oh<$UB-k4 zY8rt<_@56HOpNN^MYb11M?8{(0ap!D>J5cq4LJ}f0=)!1s}{;A<%%_P0B|E{w`?BR z$UrU?_fh^TpX)5C8;fFv_o7ivWa0-BnfC;?Y83Rwinvon1R{dqT_B_)rX2b3fQLXJ zMi~tF5G-bM^%1RWfh~NX`@0OI0WiEHA{TZAv=xN34f%?Fch9J^1N||c;prD{28^V)ZvLGMby+?F-V;nR4`j9?mKB*!Fu8lvRXkIIrYBzG$IRFmUR zUfIrtYv`INPR1NU5Tc3*yGd_wmm$i<%OKJkLV*eo$iPS|g-rq~WEG+6akposLrdl} zOooDCAy(E@(+oXAu2Cqsg!h8tu%;L7U_YsMXhr*tLmtKQMH-S1YT-2dMMn^ZmkjFs z2>Ucg^qYLbXal;$n_p1w8X#W@SneZo(dd;2XV99ddk6zc6F}t^--uH{dYn0kr{uX} zZ^I>n2E0bFs9GqEQy((PullfR;cnkRiQ4I7Nbil^TP}cxspgR|Wdu zmbKQO>JTby!2Z#7*B_;JnEApv6zmZ10tQ~W$#cqIrN;$$)J)ZP7!L1_FJvWdFCDK# z{{Uxx{<=L3;#22C_R8=|g|XV4xQ3`F+&q((TZ!B7m;MkU=-&L)#HAb}J1`*fqjlR(c4Pj*yCpX`DlYEgz<8tx;uZTzW{x zb){%EO3r4=)Q7m~1wjVX0p8-=!cjSQd@wuS=Lc`x8pS2MMgW0Y5Ted+$sB^w!Qj+i zZ(Mr;@2GL@4RwdpQ24V6ATxK%^@!w%XV5n~YuujlLb6OQ~N zw=djY0uM{+m+5xveQ}b|DQHkv(Ff9t$-#NCMHJyGn-f_}_CRNLBjzeg240UM;-?zI zkW=v<*?9X`VayJRy5F&IejEylYDNOKqs!r5qu5BrEjcSg6D)Lus#_OiC_$>0;DyR~ zk0f=cEV0OFU<&q6QsoPXL&nGK-m2jF?vfxVT9jL`-{8w@_3%bx^gv;D%5~C^o7#zh zM5_rOQO3_*#$Ls^_Dvz11*l<>=vXcP01q(c9W4?YEU4p23u><}FU%2Ko9u;DiJ;%q zd`Ww$MfTiD&#eH9z&R*@qvVM)Q^*H`ck@19p3_xtRW=3vl}jjl;fHM|^sZ4+F1Nk4 zcxvIO$ z>4TMrBJ)l5R7DD|GY%NNPHvA?lUlOInszE)ZhH~6OJ@?*Rv9XRO(C@v2E$tn$i=4X$s^20+;1Q@7zs@8j_Y!gi0Y+TTmo^na(l*%p`fFqT8!n%N8~a zxNro3CHcdMxwM*=b5xIoqvPc{V8A+!TnN)0{j&>)ko3mzvz~Yl(!^F zLn5O{2O_C$6W7E~?kV=5hG0e4Ly6>D_CqS*m!5fn(LvoF0$r6nFHvetL6IX&8pTB& z-?((Q{0|ic5UcKbvbW(j5^ZNwdBPiaUkF-4_H^gD#9O>L?1%ZNikG@AwHBJVA+gcO znXRUu7RbJn>J@%VVyj>WqbGaCuriqk!i2m85XWUVW2jo(Wkv>7coteu9L1MZemU&4 zMNZ20HQZV9K#Bz}xt10XN+O}r62*X&2d9#yl2KzORo5CGbGHYyBEyJf@XjOwG>3)B|x)8B(=f< z2MZfHLESKL!cKPG1JyzR@Fm)zGTx<8G1_HD^5F4LL!{LOgl!|pMxF|CQxWRi&K4yr z+^sEiKW-(asrE9c`-nKjI4ioB7;Nn=bVGZoMtg`*P|jh8hPDYY7J8R3v5V;pTl#~7 zIABQX?X7}}4;-N7f&o!Ejot0Uq5_A2Fhw%4Y)&xubVc;B1C!tz!}mMm1ITnS_zs@s z0wuEL@Il%|zorQ9C4JYlO5$k2PGsj;UaD27WX)(V$TvvX2K9Gw^h=^ZB2tKn7V(Q3 zAuZg1KGB7{$gU&Jc&G)cPHpsfhoAItnw{Jg!H;FinGq|%(g>@_De#^Om2ddRDL9sL zRKwe-l-{Wa@dnuqkU~-{xFb=>?^}Sb91cS-1%DEXn1%ZzdPEA~ZDTHCi+Zl> z3C@hB*08wxMaj_1s(?T$oe)*FMeK-0U>~OZ1h;$SQ9h+aB2$; z5nVamBdDXfSrtW_P|B6nWZY~3^YszMfwm$>h)1)Tcpa#0z^FADc}tzK$fE}qm8_Of zC()2w+5F0)<@XumJh4Ds8vxe@@(B=L42$Hd&8);S>>-Z`R1maJr=(vdRhFR;yDJ+3 zAl2e?qlg+&Q8Fm82Am0#Sx^tb3W6;*4UG_Wmb&;Qt^#Q1nXFXkVnvp~vC=-1PkV2W zLve`M6n^1a716BNAbVHQ@d4Z)nHjdn)xKk(H!%8$55KIZ7y-G~RUJksZQDLjUwl(xBB~p*fa;aPlHr9%u_R0fL9TnvGg?Jo; zRt|P99_~=%z%E(I9g9n|?sf5evzd-D2udk*BrEC&zCBYe$qnPxiRqI|#8uaW!g>7M zpm7KCU&|5xttbPCZj!3xKk>c-QY8q&LrUa{=GiX}Ul2;KUsp_RmN|t0^DZ(X5h&8X6~`9qDmdDXC2o}W zyA-;!iIe6zW%nJ)Ju$}xFL)(D**jEXK3#|+5G*vDssW^=lICJ$K#mJoVM@*_EAD9k zqi5770?PzFvV=LPIxgbC3(N;@NdCo5azU3unvO`8zod0L__$egs`!`n%p|N|r#wxY zC|*eP;=U^7!-32H0FacUn-mVn73`#3MVEiRpuRfBZ49`oYt(BLRRPSfcp;q@Hcp^L zsH&(PB9P|j?Teu(Mnf*oIEJ;9Zl!zx+k(FoJwWKeq8)8~3xq&~Ob`8)5z@_7w+iiT zUYE8IRADs$g%O2E!nlQF@<0NngTXyQ2%&k4S)c56QMeuC%81gIu2tqC{{T36*XOvM z%8uIn5l*3+taX0aHZK053z|URQ80Kb!mAiNHtk=*D46IrKH4q?YCytRlXX2nH$#|u z0pI?ci$G4x>3lw-89fQ&FU#X)L0?N`$nbC41|3DJN^l%hMW`gQ3a&2E5hRCD7)Iv; zIk`$g!-#zxf}}poXf6hE%+!BY*ri_Q8zFFy8#1H?YL)|Akxr*61f~nlL}gzPLdeN0rA9I)HWS`1hsX#yu3@-4T+mxjai>5BxH)j>*D>z?NsaRqFBy-rBwwOQ2N z_XkS5T_j?-fzW+~rqTnA-li_t()R%2o$7tu#>^Y$8-0v;gLyCMh5*${b9xe%m{)S} zKp+@?@NV}2){Z%gZ9oH=fMD()5FXYG zg(_fI+#CvtU7sgix+qR^uUUg8t-?T1rVwlNjwR+RWn6c0SY-_%ZRke94VLQ!CGrQf>ITq-=b{Z{ z>5jS_LD>i#QN?2l*`xNryHNJLx44CDCx?gUIgH4v&=niK5$OgztetO6DE|Q2zMMg* z;rOQ?l6ssB05MdhzkbjWek{ibPOCPR5*egvI-fX=E_J6G$3|~bvmbLfASOu`g+oyaEAk>C9!}8B%-+T#LMZjzR6Sn9 z(=Hd_R=7UNO^dBBf+cT&pD^Jmi?CX*%8bfjl|Fs<90onD?jA5$># zK%+fDI)2QU(l>C6me-;ih6ZeTL%TqrHva%*Szx(x1an33uD6B+LIhRM?lg-OYW7T^Uy5y+*CE zvp|hn##(ZGq_g6u)U3N(Z`VfSJ*JlXQd}C`C8}+!5Ur zy`&RJj>Z$X>^-dX%_xB4a>Riij=5UjaAhsYh516Qsa#X4VqFW4p5atzmIAt^^u?$E zmKU#rRtDHTjUmVfsh*&{Q7^Tih}0-6nh#^h%c~5J!5SAp_NSPvdKEO-ebFztuHy$7 zV755HWlSfSah9N~Dp}0!IhT?e%87i7knO+B<{^HfN9nHt3l4-_1x7>Jh&qiQhP9&h zb?HCo!xM{oA8`n|a?DbdHa6l7KeXa{2;%~Km$rHkh!GlR3@#F`S{k_C1mY{nqJ;-! zr2Xx5${CUL4=eCN!AvjjUvoa!#}G(^`(~Cj4O(N0H$`&GooT4>K%%UctsS{n&?q{t zp}>Fw?cy47&V&S+SH|d1| zZ27`JuBY-w{z|v~IH)V6@gJyY0I(qXj_rLdo;nQyTwP1|0wEam2W%9+m_j9TIxExZ zjd=90{zDU~1kB8r>>W5$ZUIq4metqmn2P&)141#&SKbJhXd;*O>Qy#RU+E1rZ{J5z z2}s^*0OWCSa5;lnU1w7uwo}DV#3F@i;(`D@OVX(tUDebi{{2MW9>{jsoc3HgV_tz+ zcNER@Xev_B{6Zk-h-x5*JVpbCGdPF@9F|3>#vf3RBC<5Uv20XHJ6IlR)Yw~O<-CVZ_=^*C4MGu)( zEZE9%3|M-=)U>JY5ZK|c)oowQR87J<{{ZY)_65lF#m^eCf?4f^KA-%AIuM*n>lzy> zuS??~P3n|zr)$$51WVz;=*B>`Ss0egGFhXHbdE#6xWOP7Y_Nj1_UtLo1?5meTgAW+ zLCYVuBSj6;gauZwLs65z?pN9$#k6to%g=qfC#H2%qntY!Z@cTT9AsVE)c(WLUswv` zgQ(|ZSxd3mLJkHUHL<}ot&4zcB7{>eIODW=K1o+7wurm|G;5e?Q160=#XbuKF@Q(W zMP+dZELHSi;0yrI-Ryygw>n=BreX~>vanaCN_}t~1fd+Z+9j(1Z_gDS!D?AJoHqB_ z{{Sl;A^=ih5E)WUf{2Y-@fZ+l0*Ue|P^=zpWUbIa*vz6VCD?}1dk+Qb8seIck`hr- zgM!_T%~vm^nHh_ryMjgQQ4 zCXJGxU^WUiv2q_MsVc(a;*OHE_s0E4)GHH-+oU2c{mxn=O&7aYPunRcJ@!amrSp49 zcqkfeD`3!`1kaPeWAEZqvJ0yb+&!pqg8jreD^B_4Q@tbZ4jg^Q!`*5KY)Fy`j3&g6g=Ijl-^@+hyH=Kb^)?pYjpTHQdF zoH{u+9@gSDIm*hJP@oy4`6h9jDetq06l-lNwwM%MH2aIHrT5wkl!`h1%F0i~Q;y-M zxE6Q^+-4B6n*L`wRz1NWXeYELMT(w?SVvOih5jN>T@&VXOp9ebc;=}GYNA`HAl>`0 zZtcq;%AYhCNl=drOCrIHf(hJC5DJu5?m7--sJPIUbV;&2B^gG|{lZiPOnoB_O^m~JO>>E-!guwQVS z+auP;zlhgEc1;#sQWiYnOSjo8Rmw~zr1v1FsKvoU4m)~>aoI|-%MKAaIF!PVD3{i* z-w>6m%0dIDap8llc%eJ-K4Wqn`TFPWA4G()WlvpjnGgv_CGU2VfdvgnPR zi5w6DxG!;AYgZkXcW9$vf|go#1LkKAyXbKoHS`tm2tqU+_F~5J2#2x8J>b=2;_h}G z?dXM)Lxu0S4;5-?QXg%o5T?}N^)3P$Ssjok8@PS3ay&$Kb_s{vsVR5C3b0q)T)YY^mMFhe z(a%?4fLV4MvAE0vXZXRwm|n?v29nA9N9kS$l8E+7>cGa+DLL7TeGxW(U+N`zid0jm zp^-(S+#td0JrKgMo6QGe5qro>CF@8}4e#?WgRMDHQWJDhfRa_Bgb;qw0%TkNeSwH;?2XsX6qK4W<6HQSisyu z+qbwy^omC~5lQ-kquj4zDTW$Pw<|~DT6m0YpSgab-1m3J!~I1ZPG#N#qkuD?#jLVj z3kct#B4JT&O~9Por}63(F2};f2WyU_1y>X?8&T~;tl=CWh)5};4mlWUa1Bpz%z0!i zz^uPgv2gzYA&jAFF!K0QgqYBdKm`iQa}tdcGADzYxNuzpL`KJcybNqyzi{1%n)!++ zLx`ppWcjG(ivi7?GK>BGYoE5jcuZSSLcblrLJ)W{-s>`tkc+q# zf)`v6@`Ttrfhc0!%!|&YZSb0>9eqQZifrl>O#28K`(IFZm=S_Az-Y`oi~EC@`4pVL zbc_ghP-jpex80rv#I97h&)j55OR2cjRreT%GqxiP%JsK(?V5oNo2X#s%E2M}RUbQm z>sT5M>Ku?%)OwWT5-YW^I1ucaDg(!JDmd^?ULsd1!RTBr0ou1yyxzNl@Lb0C) z?e*#>_5+mf2na+}cs}2A1AAfE%S~Z?JNh6Uq>d;pRsaFj?P}x8PeyJ_8Ymh{%M&N7 ziJbKYw_VMhi!2FG9nt>)QQ5>K(0BJLfCs+_6P$^b93b9tnyyOJ#;Y4!p1bBi0RZOBRcsS0HP>Pnkpj!BH!fidv zni!-z7b9{aQVjO15rgVb+&>v9@;oi_Lkkt@D!q`6iBG;!&!zw!`?!d22OUP}KS{+g zmoXg68<=AbqzILF^9XI0t?p11r5neorf#KwLL5}Rz_=dEj|<`$P@D^a2pZQ5J@7sH zlq~lYfQ23awTgnkP?IeTuvyy=6)zpxV{KQm58xN2rwTRY1>{DVZ%(CqTZ2VNKRQ_B zoN-oRBAYGyl-m{5bTS6#i$aCi@F0BkrvKLl%mQ(Osu&O;$U zyT`I^bS3Vyp5v}iod*zAjVN3*+~D~$x@>R2aJ`+xDFXSfRyqUI`i-<`32WR?uK?YH z=2#B(IMk^YfIXblP79Go_?4PKDawHw0^QPk1~2hLwD$DEOKz^o?$2=DVzZy!5VQki zEB#J9`BiJ+;#ZemkcQhGpu}-%vJOl400xJ@1Q0oeU_O&wryhtNfSS<2xq=3B7((Cy zV|=xeB z#%PrEBF_V=($#htLEY~Fr01ma(70itS$adY0LyKt{EWZ@3tcO5#Rl(U&?jIY-M)IwTX0Ex_%=&37dz#BmG0We%wD8la` zS!gQXqGIb!ybfUlilRDEh$9sz!|mL1?>B}kj8@~hQk#9TZB{blI7@nt3gO(gyi4aN zF}11r&qMUYcLkY?2NqnF6~l48NsSwd0`>=msy#q}Nk}Qo(IV|W1_RXtX)fF#oBTr{ z?KTvj{@Rx!VD*Wd#C?W#I?=DT-0$kyhz*B zd|pT14z6eBc_BTU(|unkL*aE=_(!B+K_~K|m2kwvZ@Guu644b{JAp%uRT3?Tw0z2j z5U*D|_Y4807->)w@H{`+K?=Y}?O~0Y9Pi9w`0SmD@R55nje=16lpSbiA2IMtj@_pO zx7lfe0ju6r7TZZLBaCfIXZ#qX31p>o{KR;Q(Rd`H^4W0w%5y5u%Ytq+0P%bTQxsYc z2#$I1UlCL|)DqD+sE_B&Wgvaa7oC6)!Cws#TD+ zN)irU`j4^zU4Y`@tCY4`uI%_?Xo8oBNCVqYO)l!3=M@Lt3ZZp=qd;Dzd)Vbt$UXH^ z*92XF_Vj_H_C^J<+l1uDD+x!kSi0x7I|d_gHqIGp%D9aRTxl+PJu>uOOA@M@Z>Ajf zpT6dni!31*&B0&|M1k_nBtBq-TiBR_(g2^UglfIFo+3nso_$8X^3Cef5s+a5#SR&I z28hO%@%Ib!42&p#;kk{UxcWQi>_R5whufg1wUZB-ZzACPSnfKjUjG0PcUG$6)mtjP z1-U3``;VExE$FrFq_(Ou58)T;kaC%Y!ywkXW238o(SkU@I8|0cy(1_A$6~aCl?W$c zmq1eoWyO3(y9ljbh4Tgt;07UI>orImdOw(lZHeL?l%~-Pu)B zn?c)DaVf==2NC)}HRpsr$6^CWTRZPs{{RH5IVdV=P9_n7;!}!3ok6sO2Dbw8efTVh zmNKS$FN5&LR@$w*C`jH`RZk_6@!M7hATebDi5pi?9Be@6#mcUVRR9hhM=qDkYdf*# zDk6hEXbJR{`p)6l#s~z^%1tPi7unCqkD6$0063NWF&d_%* zpJ`oHS;ss3N{NOi6wN*;j!kPjTEM6ZT$L^;DG8jL+M~hjfTV9HDW7IC*fF@8r`Dm? z#qL-S+00;V&Z4A8U>l3ChV@X_GKv*Kgdkppcr(&rqBsCc5vT1FshYS%)?DVwPl%gx z!4d!fr8fNJexo|d?tP5A+RJ~EAG{KF3oEN)vWsO;Z?pz&-%_&gEfxWG0+i;UZ0xsy zf6_cc&J+$Z8ceM0LF?>*r0`P@s0FYbh~m`am@1tEn}oZTwzfWHwLOGo!dS3csNf)t z7S^HmsJD%Q;R>bwPlYHgha@fO{5`}LpQI_^TB%GndKXUOs4A*8whJxjf|1q$i+4kQ z*k#963wD=%eG4n;4e+~ZZv92>Y$Bmm1$;-q{feoA()^5}wPoFF>gv&sLazvbO;S1K zS$(0cx>((__(XUlzlnYyOu1NnOLcxF3zlSw;Gxc{TmiNS74IUsY!n1T?g&*S4@2Bi zF|}LU5409b@eYeAgKR~=GwxEttSoZN4r&+UkjT*v66rdp;sm#akKAnoOtzUpsLYhq zCqP{D5M+j~RpKjztueM;mKeCMe8TpGosL@xJ*iPDEJW=Tm1It}kvC^)>) ztL9fe&e%V+M{D+s1_C!&v82qfIIe-REDozl?WvS7KksK=MdOVq7~@z z^B%hG$^D%ziz?+Cwdp0Kd}5#xr3KMA{V+27LQ_q)J}T*U8hiDjCxTN_05LT#Kdp^T zM7JAN(>TgFBH9Z0_rz}1L!i>emWV!UE)2|q@k1S|16G%^C=qh|AjeC)lpMY~(an6v zCeY%s;y9+U$0VTifO0&H(~qNt_XIZCwxU<{9v*`ustIyD66C7qN2Nj(5lTO`h4?=M zItPnWI90-P8$bqjRbJPt0UJk@^fxfHr8+iwY%z%aB!&DrzxT*d`AHbo&CnOZdU=(c2*w>~j_FOV0 zZ^SiOOgHJ3LW~b-lH&1H9(a$5D7YFEW|X&3=M=35g(lPld<)_V?PA_Qt?q3^a~`_t zHk?;liDn&qY<2yyn}le3O;ohIqIK1e%D^cUrj#TZC0II#XcU&`u88RrqjrH723kLJ zo5gT)<1(9vaoa47VGt;w0Cy9Z2-lxTq3xZ!8-t#X2Q31GY#-M!*+;P^@QS|QnwR9U zE3}Sk!q_NHRj*leYKFVb_c)WFTHzm54?3xziP!DXrvR4Ocya)afGU_$< z(fUJ*tGdRRKXHkhWiQe?#6TC1)U~f0T-;~&OCcEDGE=eyy%=Jq=>v!}XwZivn1J1* z>_bDL;UDRYC4$cWrV3?`?72}z0?W~OM19GpXGV_&}gLV&PgKOU^BbdkK*;s2+gZodF%T=;aA4Q%Is1c1 zIliuQ4`K!>Mv>Ph%o!WcC9%R6QQPpAg2GbJwWtZL77ur#5!B$<<%U0kt7?&eo2wh# zC}V=v-#+049VFkTP%sOzv2C?LITvE$t3P4P2PnnfqE{=`wq7i;cQ&+|sc{q*o}xB4 zYWCQQaQ7)wZ*5}s&5pwlIQ_uTp-o*o1!Qf4fCQcp)F&{1INa}3OV9(AVlpY_w_EiT z<~l}c`lMcF&WfSdKi4*RsB*Sg<^xG%r{~<{TC63HasL1j3a1fn6Bcmft#3atRnR)7 z;4;$J6qZEVtKpP_oT0mpZ?dkn^(?}^E<0P0m@>*_8s3 z#RY%|T48SyD5;gE;J|qye4lYwO9>?^J1(|ulT+N-;)77_o~9z229Cev7^|1*+Cv=) zZS%9eVvX3uj|;4V1;fe0Knm7W($niAFHpZj9f#D^)5YWh15ynyv3Y~` zR5%poFN%5sgP8U-4!n$d1%XLcO%uTUi&V~-&(~Kdc-p)Y9U7Iucx8bU3icvi0)nzK zE$|{$Z5A_;F8Ex1eE==-*cly5|7jp<%5`U)TUh(T5F;{sD9NLri`O% z^X!Vv8oV3$HI&R3o!(bq%X?auy(fZ@&5g}K7nPVH+u#D8t^^!|rsuqB;RFg~TAGxu zM9k(|mCo6(QYC<*T$Q0yeH=%@wZ~DSkEDLPlFp-ODS$>{g>2-DO*?CbHXvoMeow=@ zUWB^HDOMN#i(P0N%pBc1JvEgnb;^sL;RK;!*X;P0l~{cO5Nt2dbdHD`_z(beqTy@j zi0n&21&L7cM4CloaOf3aUSq6E8l6@9n9jIIKD+3gKWYs452$xpU|~|WiZ(RQbA2Zd zqlltrNB3k!0iR&Acc>giLmp|BA!@E8TbkghTDz95G4>V>U(_^a_7=fWpfzYBIttem zc$Xlgw0cQXPe9JYEWDYjq+*+E)nk*Ur_~Zwg+r&FD@4* zjJjMQa6{Tlpv70}EnIp-_cm8?pf0`$?h59^tcY3*(M5XPkluax$%V}Jq5Eg-l!o(xqG2viM-mD`S= zQ5Ws`w)>;XC)jg}bS5DYRCYtTz*=&^YvHV9VzOcWx`T|__<)l5Is z9b`Ew6}@M3p1cLh$=!srkXZ`#w5qIkU~4N^2r}l-!nb5q!gGbmbZx8@9YCTb9%ykaOZnbAcBt<AjK)~%I+@TvqfAKW5IbQ!<1bh^uSRq0*o+rK9*I*(gi{(!*>wI z&$zG(ATL?IWxOXs;Ud#IGDNg7WRjl;O=zO{^qELVf(YniJpblJR*1=;BdxreRDemM+-rKIMxf zSDQg`i_BAPhRYxq?xH}W7j<2*ZqDooDqfPD>FPW^6O9;usqQe)A91qH>Qrpnx}UB= z5S&laFgXF1%U#ml11atY7u>djvdxGBK!@TKQS|`?OiLOF4L6)@7q;O0jsZkiq+bS6 z6t_WQEbj?WUP@q%be#E|!q#yI{-Z)6Zlj-(BUf7;J+^mDFYtPt$}q@P)v1+BwQlml z7cFhHV$T7nbOw#tv^7}sT#(!>rFtNR*D8(I9-t_Ot>R)M1(b{BTPck(^#goG+sLO# z!ytf8O7{ak?L}@F8d~oMrZ>ru*<&nrEC_-XrrTt>MOUneozmJsZS2zffG<-Ga}XhB zg+Y7>d)Nut^=uh5-5-e%`s*T8uxdFa?pLS*jnGxCy?dRoiYHQxO1rI}q*mTL6*nOm zs92Ky2)>~vV|oJ1@VKaaM^H7T&JP|bCqcwVcm(~*^A=P0IDYElv)RqYTDmCUd_r0f z_7Sw#+Rji=b`DC8wG~DI7O7IGTBb@Si(KlD5X}`v`hA|r)fAiJlv3W*y5kvCM6}K# zkhKu|gA3h1a72J%-o<0BYQ4B)fDQ3QLejlNA8_d@BQKajufebe$UBRLq~9enDx2GR zIlYJ_N%gsS78Nh}qQyW&1pToR{TDC9QLk@M zn@$S?(duu{3kKY1R2zM;qTYx)5`|RO5paMFup;`#5avS`p9`h~X(?ufoiYdV#ptnC z7%{z_36jmCQYBsOOJ=(p18A$#&6yBidNREdI)=J-!j@eT_nG z4P2;kLLos)nPf~$@Tp)}91Fc*sYx`F3n=yK3KwBT*~-iom2X)~Z=HprriIQ;KbxFzHDdtI54gAyCf1-{6d8J0 z=?!tAm9UGPX_W5>Gnk2X99L3^LEK zL*O#Vty(of0p(0f2iI|@qjJ5{zN^>w`gYN3YyX~7`vkr+CfIm9;J=-@J>w zg!zqSm$>24!EzFl&~G9Jk!!!CVGr5N*zBn6B&zl9qte8^^ooa8w#ClDWumU0geR}o z!D3f?LA@bvh8=YImn4?y(FSKnp?65hHmyasu#^OpGz$q1Uc5(x0@6p2G_`HtnOrk(=o3X&~kqLK3> z@P@@2vS>^0IVEg#V#jK(UW=EBYC;X%F3c@^ zzM|x%vFimc;0)z?VvEET!e@#TMi0ZWNm8IQPF{FcOCy-7bpzYQL4#Y=MIN#sd^gWT z?VAa%45U4R^3+01DpXD;0>jS>5zCnSBKKIn@-c`Ab|2xF=tvB|06o1hf`{(IE4iy} z{6Y(l0UVOkDq9~!r&|tE0_+7`9CHfK@1o=Sn%U+Vk7Xkh?Uu#_15ZaxRzN!++=w?< zbXz`2j?ye)UUe(m%tS6OIHO)7fp0btlebdvS_l{v8hMQ*{Y5VIE~9>BfJH(ZNB6=o z0OY)K#X#*~kc$XY0e=P79$AYT71;SudSASiRF^_oTh$e}RWT?a3N3xy?d%{_acN7! z5LS!CsieHZr88Opt<$8rMTOJ9QTiv7(#yRXv<*+4h#pJdowC;bE3&slH;(xn%Sz7bXs zi3tgL;P|RtrHoZYXL5!WlkTF+m?u5Q?<%S*z-s+lKKse;2sS;W!TrDq>R-Ao|s%`)-Q;BEj*RX&LU#8JNBi|?g00_J0tLnLB!BwZ( z?k8^qQh$h5IAC~Km-eXO3;>GDJvf4*Q zk0SylX9Gxks_ORypi-l#L;{8MR590-xE_OtKg>q+OGq~k1^@`_FCtKP8}e5W&8f#J zES9X9s@$j`CEPvEDQ_H9&WS^#Vr*GEeMTQqf<-npa+LtE(n_6AYZ{i%;F{xI$DU;@ ztC~TzJ^c{$FusI-v>KvttQ#ALu+HO+EV)7Uj|Nx$%3HxU09zd8Kra6P$jzWW7aW+& z<~TqiEMr9q8G8&U(D+8f*qHJHcPi6_T2Yk>7)RWrn@Q?n?bTs{0Yi zYNvr`@j!s$7!rJlYGpTk5{m;*UCbPRDL&XwuyQmD338l>l-9prb2xz+tXX8xMJSgm z>dSuqS+ompTsBbm4BOc(Yi0-XBxx^WqlOBwf}Ml#%aZ_~phvK$)Vnm*MJmRL-!TGD z>Jv-Gn4Cj6eZw^#WpivOupk9YDyExSWKhO|xl@fJ`X;X~n}+&A7nq*1En=#jgU_(8 z8Cf)>8V`370HpS=;=1MVC5TYeP}7K+f@HB9b|Y2Hl+9JvEi6kDW=CO7iUhfAKGrar zHrJ?ls3%h4*{@)@JiAM4tBeR`parMV7%2{Q0tBx^hyi7fKI4StpSfz@_+_0qqI~?r zK0xtRIX5dJ1_(u&3vjcBqE;A?Q=20L+`EWW;`|J@5x#sJ&PhV<%fSkcDo1u+=>nqg zoGznP6$fjqys2!OLW2@1AZx=GyGq$9kN)w`EOIxZ$Vz_FsimdGLS`x4VVkJ2SNQL^ zw*{l)hAb1{8FZro38Z}70~YBoWA#W4Idx&cRetB~Mf5|SXy0oB z?szu^UR6?q+pf(xW$87iii8|0A5P9NqCaz056r))bsK`s0-cXYYG5c`3l@rxV__`l zU@4#}d_(aJ(lpjYZRVFNQHUhEkEN^#$d|B;fl(Ut&T~oE5b`=O02;fMrT0STSuU=l z_ccYOD!;f+sbwT@^bj*X5&#v79E@rL$9jgQBYTV*-OaFpxrR6z3SLO*yzI_2NH%rD z!3JA!(l-UDiR=i(>fQay8Du>j_Z9MYz`#Y+7r+^fCM8x3N4Vor8DJT6VOUS4MmB&; zx`JjKdUM0hV*dbaT(yT7L`tWN72_yAnw5Mj9F>Bxj)c47v#Tz&01f{DF>0oVZXF=1 zncTXaTgJ@>Hw z+;C%<0*hrH^jZF(#?YFKpw^G0AU@XG%kLn6x{=LU{{R--2E$8Q_d38($e?={6EH%Z zk0f+k+0a0g_XM(b>#^eASn7m6Z9 zghf5nWMu&L=@_+3^;2u)ip6SlK}f*xX>%5=zG#%uq#?KsHltLqfMV-WOKzB9G~pzE<8o;}X{I zxMe~j0In`~Y?bVkV=l=oVqI)QO$Bg{GUQ9)$Td*0)Gui5V&P z7g#~7?C`5dD ziB++oAsT=NgWSJxYTn|AXf1v91ZcjdDHzu?Mx%i)7DQ3AvIPiQy=1!4giBDi31(Uy z54g*!XunK#K$`d}u&dcy`z4+&@;#8dF$g~12&9OeMk*~H;4>J_b{y1W45zwvcp^X-+Z>Fb6XPaX zvMJU0iVpdlK!i<}JuErt7@aFV$xUW;61r|4zTs!Ch=XWaU->$U1)ZOAj>hoR@F^F% ziW!Vr=!vZ{zeK__QUQmo7!Xa`oYVgRqb|Wxgi>kZ1ZiSFEL+fm>!LH6bZbz+EeXae zB4DkQez|6f*N>=2j+LzT!Uq5!#IsgQg6!qE#W*>FDN4gs2eIxjm7tCF@7w2mR^YL}>N8Fr2#_BFjPraiH4URQgS zD~Qwyq|aAua6_ZR60t47q!>7d!um^E`G^N#h}sP0aFshzi`Br}M*AFNF|oiKVzd6u z%34%GuxWnk9vC5cAJCQ1i{OOpAnSC8Kws`z7CR80#QE^kJw9wP2f{H3_MgmfmH;?G zJ@pdZSw~s*yUUybe(Z4)zP5!w30vjZZC$dI&{50{sCH+syR{DG5dB$Es}>&sjef*h zS)`R(dmO?_1cNu5p59dc;ZH#(vGrMOO)+!z^$3L2GoO>@TmZZ4{{Y#;13@|;`v;b% zk5H1C*c2FTn{Z*KFHC!`i-3Dt;PD15x;JIF&{=v%L>`1oy`8lgp~-Uf; zj-CcL8sA_}*tu?p5rw%QyfC718E#d=s5f&;8BxGPp-@osSy`kOfW2!g7!_W@*ilL% zMhl?ZW3nP6w)iC^QS|5P2L1vb>;NT(7Et*0D2t^7$`h?%51#5IhY@_Lmm*QZ?>$Ei zYE}7N86y>Pd zMCHVJhpLF@o@LVLYo=L`bLwS7^$Sw=LL(}n3I~tqAr4<3xTe@GdLM4sL?+n$5Mnf; z$p=COu;QlLz#@i^i9+_ZnzWo%*oERg2q8rYHAHf4Knx~S)L|||mm4!`>mAJt&uSn#k8UOYez`3@%D<8d z1GPTO;uiznk;p|Y!ZV%b61kk{p4s8TJi+47BCx4EYWaN;?=&J7TL5jgQZo+mDvaV9 zNsOsRh`r-nYFAYm%*?#DJT&A)I@O5)>cD*Q5`6$8&HI<%*0`*$7|ll1`@YGyX_f(( zT4_NH^V}m2<26LA4W}rP9=I<9feq+WrBd_Ymy#&Q2jVdBx&FXQ;yD)R4lua`$mK#f z!OIV9c)srTJ1$Uu)S~5iaDd&1aRGN@r9{Ajm%rW86|G=e;xj^^Bx&_5fEqHhC2s?oYMhnM z8BfL$6oHBEpsL0%XHt%27V4u1L2f7U9J>6lH3uxHBEqwlsBm`a2xqid_${bb6-rgX z%CYW6jsOz4jOD}&&W*HAW(s!n!zVPnaC}S{9G(Nh-ln7WOd#QC3)O}*2Cwc`2H>pD zEtqo@$P|!(LrL&aYs9Ed=(?2K49ZABu=}Fxy8ivaD#g0>0ew;x-LEi|s4P3U z&Vr~B4Kx+%6^&{YRHynNTZebm%5cMr8_rn1fr&Fs1@#v8a*tIm0)>I7V0oB$4Z!`u z>9d_wz{bg(AEcIoX6`ILB=HI9W&OjtZ2d~WZX7_)CCX29vM~?3lzu|8Vo*d6WCdXz z%V|@P5~Cj^4T89*sS*#2}|Xhj6niaKrhL@<4x^a~W!s`f?7d9>U-JP*hZo<3w z1;A)+#2qOWnP+5rMY)Rebp$jKF8l~k;96X?og2)1(B$ny!i1s66wFTP+XQuWUr}ha zv3BCVG$yd^6b}Hg8`=`Yu)EZhaEThUt08QpB6C`m4#iC@tDJl-#7PsVVnMTf5{fKC zN=L=5_i@WBu-ueW`9}~+;GbJ< zmOhW@%+S1t;bFmz^TG6cu04B&JaOVFeaiff39J@3~HC(fD1p#Q^!L# zZ?BkVit_o4D5~DUmP<=Hl!0?NBNrb7;LjE#y|H!bTa0Z^K?%sy$&i`@O66H;72CRc zh{0Hu*|S;PKBbt10nrYifP>shS~GontBsabC=PMB1)nIv5>0H= zg1|=)q6}Kb%xz@LmcJ1b%KDanHCL(-kg8HxsOrjl z5O&P&z4rmpH$3YZ13F_UQX3!WqLY#BSoE%4G>NMBX*&`dPgpLkW0`Q4Zn9?f_ z+CJs|xI2de=Ki2uvf{*-Dl`)jAD{Ubd>ZQ|BJCfDwnawee1BlAP21?AABS!$()fHJPsL?Dk zJ6@sX&?}u%Egr%)QmF&Kxo+XhhC`dta7(S-K6^ePHl=m| zS3ulyVCZGcxmM)VF+__Sltxyy$;}b@K!i8#fsnTeTqtR@vgbGL1Q`LKE`xyhoYW*< z?Srs#yFy|~RJ0DR4ud&XeS}>*VlcX)FVKUu6k#QAykmCX4Cp*Q(RwZ2-S*D637b!+X)KxKLdV*OkI7KR1 zWgHgknDrz^z8Jv8M)wwo{Z&SMV6#(vR9PEqfu5C~NZvymaIHJIBFoGk1T}T>DC)VA z!=QZz_{{SI& zSD4G#t6BkOT5RPhQL67exuTR2U3xo1i7w7C5LAfQJvah zDAR6cu4DVC&7}!?4L=(d?I9O6aR7UPXvtSmE|~uSFmyg+f8XtFe3hYkmD2DRKG^(r z!jA3;ufj6D76ID+;_bz-_Ln$fgbE#)Dwm?>6Y;+ZPt@(0=@VIX1A^q>L|(>0SJkc0 zeKuqBUvm1EUF>Alo5KsSft=SAdHVPxbTC(N{{XR&ur#?MNMH@n`Vxm&p?CV|j&o%P z+%ZrbflsKdKu~d9;SM_2JTUDCF0<%`g+p4X_=5F-R*DojiR^`!%uu>3+(>+>ROmhW zjI9luFL7h~97Z>Epm08-Gbpe;e8;urW+vf3dSwIwr`)-n?}~`)2TiQjRz?oxaVY-A zLQ=YM?h5!OfjYbs5C*0IHG>4#6sQ{Q1B#lCx?tYO4O?up)EPNtDU7hI!}^B(vg4zS z-sPCV%N14X8oMQ&BXfG$e*{>g4Mkbwgy@zsvM8lrY)j}EMua^ zikyK`{{W=2rG^lLxY?EjB|YKW7W@#j0#P`)v4U7cYVD2)u}p!nAO~8CQ$il&^({Wq zp^a3WxyVI}EqP730y(})D@iHke3vEquvi-vXtuY}EDCmWanz_;8<+~C+1y!67#`P- zC6YaT`*ZFJssI`*dH9!6VX3pIQ?@JbyjqW3R1InXXmf^;fv0mtUvH^{Pet7__R^`p zabnX_B%3%rvFd0+?Mxv&ZNnGxL-KS9il~pWC=DPo^e=1|GdC6q zn7-z~dyP?Rz~*T{uMPqzAk#3nf)T9Ld;G(vcX!(kuSxU(lWwnY0XY`zycP_4BNPou z(L_v?#g3;^+{OtgN?1i!u$PPwt=J8MZCl6gBQ{krCK&tL-X+kngL=;e!pb|jbq>vJ zmOio0u3oM~9FbAonhPTZIQQUrfnq4zwe7%)_$c+oKtekDoEnZ8bT5@I1H@jUy9>(Y zXu>H89xkKLhGmS&7r90KMQLHXZ!X{{j!axkTFzmTQn`8#B^s?P;w}`xiq+0d{$P^_ zW@?lzu8;d7FM2o0z)JYqn<*&Po%G0S|+*sbVYW84dg+J$JVVV#8AP^G@x%oaOI6Zo) zU@&>us#ttEKcZR35Ccfm-6l4_@RqmjWTBvP1Zbg-#d!07bW2|LH-a#L5oLEoQf?(v zk&>06_YOm(JhY*>+FZ#F=yev_=2~cps~IVat)>i{beyr+)&36=lx>!LM^_lZjqh^A zt(8@&P(}-hT@?$8s=$Of#fpR%gHq{tUKt2%tF^E@3UD)QUVl?#hNPf5IHjb$R0Jz{ zzM@Na9Pu7BSR3fEikfTS;EB};hpA--IYciuwCd)0Ky}M1fT1e!DZpWHmVBhksHK}RT9U{VS|)8SS$!zBYa4J3aC+CjY>C}U36r=n-M8{ z#q-3gAGT0!t0lt_!-;daplW~Ez>m+WCdXn}dIkyU40g-n_Dg-U5>E$+1wYI&#tej| zA7PqBfCJq_v8@X~s1yjsvE-Z7IEp4!5m_d9 zfvP;TJIfLEg;-kECt>S4hMvl+OYD8h<%XPrQ2-Y=iu;#*71ZVs#6Eaq0t;T%fmWlr zVwzca-PSd25IP9+B5n5hVigK6SI%rW3?@0yt0z z%pT>LrczX8Nq;>;rjZEWFoqh&((;^~m&&3G+bzBg_!}s(HsOzRswlL2BIQR}g~*yN z8w7{ceuGG&0ubv66d*cWFY&`f1D`WadR;!3Tj=p7CKx&Bw4Qtwwe$|roVM92mZ|@Eaj?PY5lf7co^N&O& z1AV${YB&oL;UBINDlvMxP_6iePGXV&02z2}p;TBQ=rX9;{zZ$00O&q@mGH3x0K0v} zyivoX)bAnWQeNW`LY@;{#wJT6NzR2f#d`Q9& zN<|$VLN6hmBL-yC>NXp-gTc+(s%!|V4dhlg4dzEJfY@YKSUiiCxMjzuBA;@QjjiS} z?V|ppj)R|2X9LE{$+LtUJ4Nbj&WU7ZB-DR%Dt8Z}mc&>D?qO;%iauYfeiKHQH5p@G zCX35Ztg##`+)n^n5aRC5Kngf3%AtZgeLy!M4K1i^t(L?nsf6IA5BC{Rez=XT zOhs-ws8A;5s*}2^EugIxnYzm?faH8~i8wlj5ob}WA}bEZWTNeIe4)f9E~;{$!ijZx z7%#R%xJWun#j7E{t06mI)G%(F{$WpFOh{Ei%x@rGEI*i^g>8-(uh`sh&>s= z$mUf{t&bA+qAM_V#Ow4zff<%@mF&lQ?W3`BX2`-(2&mf7BArR}V~F3a#_>JU6z z;QQ`l2oscQT7cowVBkq=Kskn{5M!L7lx6}SqB&%-$}q(UusDr-hLZrC$7D?i=x!OM zv4RRZM-t}}213|Jij~rw2hlPB;eO)aw%QpkWiyMEFJ0%DU{Hn;YDI*xr_`m^cOA<= zx#}FNQq_tyAQvKTI*D!cd_|K~5n{JNJ&6d)Yp5CrFSc6WQ$CqRLRP!xKGLvfa58Bh zF{b(fkZ(+KqR!+W5pA-Gu|?7;2X<^or!Fa16t9%bN-5tLQk07nKG~SGO+{r?jIBB8 zEOC$# zNC}GNfv`>^x38G@u%u;j&5^adA!(+6|HJ?z5dZ@K0s{d60|5a60RR91009C600adP z5fT#=AO;mMK>ykR2mt~C0RjO30K?yYf$!ga_uqZ~y#D~@_uqRZoVax(vVH!?{vLVf z{{RQR`-7$|eOyom94Fs<9gqIMeFR|Xflq`*UYi(~{J)S;P&dAV+3V1MpF8u<{B;OC*0m4O()!NZ=9@6r4pDw57!PFUo_`0gaDQX3eLZ{Ey%Kw0=fb6X9Rt`u$?L&`vV8{! zM3y*C58(Ib&++fRwjPx9IygupqDuqV9THpX=rBIEHXgwK2*Lb&=|1{PbgVlVOAyL& z%R0C}!N&dvWEIam&pH5)Jn!Fdj)=e)JOc@K1qjNQdAcw?oIUs#z%Y)-_ImfBo_I%| ze1!u%#>dZ5l-DhY(_|yFgq98%FkpK3-+#0H4DgQt&p(C^4k4R3y89D69h`hD8|&yg zxH<2B;XgsUBRv>8C*OJ>!(*!;6YA(^B}^ThqOyU51_nmKg8=v6XvWg8I6=eE9TV8- zb?GF08HE`5RA6;(jvQt9{Az_xOo9{)J=ZK}Xx&a6Di_Q>eSLofvxi*s&oYc#=oDpd zS^oVP2aFsk57(re7|XE-5xg#~o^*ORaA3iM4m&djn-1G6gkoUDW_F^mWo07>pd>e? zzOmdoGp^JM!qU1^qldpd!GjwrNd{$4O_al)4E1rb@DNn43^{6js}OJxD8DnnY@0Fm zSB2*NdFFZNfMXgHp3J9hl+UkDA(&;NfH84MG;NB9N5Z~iFUZ9tY|fKZg2aRFd7gRE zF3pDtkwP%z7sG&)FoChhh&=m8u30^s3?t7EUMR|=>;Af;FsIs(f0o9^!-ZxO1~wcj z>M#i?#x8y8g?1%tPN@~c(PG#X3}VFL>2X4i{r3(qAg{`a^l&fDCRJ8rA1zPZmdayF zn({>tt37Nu#ptf2AELyN5U0wjf!D0xYQqj3V8w7EFGCJclDMQX8!}xv>MDBuE&@BI zQzwc&`t@)x%P+#H9UOcC0O*$`lNE6GTC`HVDa+(fzTp7^fG~ATaTFn)SYi&m`SBhz+ApF0aThWh>6+-x#?!o= z-jK+__Fr@MWqI8lfkjZIahi?s_=J@$SPP``wM8=HH(ZW7s4ADSyqdJVK&6wGI+V~<~x$vAju=^+M5Q7>e3}l!jJ-j7%>G~ zlG?t)fU3&Urmf`J;KP)_U0EfGo^4{Ju|ng&6N3GVXsgBktQxTT}vO-NtUR0aiTLOtDy1+51u&8d`uHvfPvg?#B zgeokcy7(~Q#yb_1_o=3eXPZQ@q;g{R7Lu+q(8$S(zP#b^4GTBEhDsx2W17m6o?aE> z0<6RqA~B4U4h-6_+6{pk%%IpxAjssiZV=W=dACThX(H!t+0$m42KO7-ALAdbFvpU9rpl#hh;;~wKthmi z5G6jf#>)~~EC2)!iRQUkY-}uVu9LlAT1vsIHJwsbV#x?1>};(QCS5H!;6DBR1;-Yw zXfny*jG^%Kdkv}XM{IO()y|ff*V?qM_lQMgb$~)txxtc(rK-6(dYSD}GP}H=Bsm=? zj`(w%`r7V~_8o4n`L$N8l*I%ojuAF9TJsGGO*2k9t()1RF`vOSP^@;Tub!z4hdEvC zN%Ao;_d+~{G&x6FY5g<(%*Qvb$MCF`Cz`F^&~!|e+^MmWI*M~+G`ios>>W;Qvl-Z4 zPl=mbJ2&C>t*3oS$5J2YMuNevTMGQ^ERQUSlZn;+R9TVT7UJ5PxQhvqZfJdsjF|z$wxtzcNS8fF3!Dcrjz}(q1JIcLK|*#(oG6Q zR#JLbVObX`JqOJP=9AY+D%*(W zXqTPq`D1n;Hrspr>dy(T&G#2v=svE!wjWihh-CV6`zQ0tuSq3MvJEEBovb@F*hbhv zlBt=t%w{EhN|gGn2ub^P8egKY){8#Y;X2y>ZeLGfaO(9$kc!V6DFd@7Hgk6S))@7z z&al&}Y~hpUrt2V`=JSO?7(p3ruc-*IQJdRf{yE8x<8jtanA@$mt5B$;?7|Vg#LeBF zIjk*PZjGd-j<)a&=jq>HZ6edGwVGMy&(6&sBZw3X-Kx4|1w^s6^tI^Pq!WvmjpOkGtD{mLpm+Rg9Y2^aWM8>RR(d7RN99hwyxtp1KzZypFnpVU)lUkI~f@zPRqhIdC9{pHJ3Ii4Sl^SgrvDuVoNOIu1?q}f_2;1XI%GwQt?d+>~CX6y_n1jmbCYWmM ze#ZWk^(CsQMb_h4){tH3uHKqgYmnPmQfVYzL#|NeV#yf<0k;!y(YXDcZ49MvvSw07 zVqjwxtMbjuuO%&qS{e;alwS7Nca;3RR5=P)IN`}!>j|;^P?zJ;X%sHIysSs*zMIaK zI~wT%q#CtRLg%sxmD|{IuQZOc%se)cvtGD!-Tp_86bZA*Zmrznk)GF5bSHMq#iEQ9@wF=$2DAit9-b5x9uDoorw8vPWrl>&R*5mX^SRgxCih zE=n>~2ne#8%O|k=OUNnKjFmds2<3rHUcVX!5-|%M-azuxSC*oj*>=ubT%B;dUbhFY zt<5hVv@Lp3i^*X*q9H9#Z&`6O?aD`8BSDe5W#lq|vP zdR;abrMAGFZsJuQB83Vu&i2BIGL0cQy)-jpG+nngxl_nD`UK}!U|if{YJ0KBxz-~i zpCNj2v9K&@h*qlM=M9QV?XYhNpcn%+udv>`+VYmQFI@*SrwOh8aevP@`N;4M!cJfI zc+G@?J1)>&Xlr;1w|n+`Yiho=%$9lytNOXg)FCpQ)c^x6ebR9tnXN8Kc=NhR;+ovn zr#CIs-PeEm-@P~Ebu(nHsb3{kWC(C|vtdf|FIZ~BT~sQCrRVzp0EQAo7@~oLwI-R# zUxtk{UnyG#l=({OH~G47%^^KL4JEzIYg(apP;81)K|m{mu1rr}dXa*tQP9n7c^L!< z5U=jPAwzYfTu{z+6_H3ri0ramztq&?W2yDKZS9ZqVRE{g1W|Dna9{(jZhFH>noyBH ze&nC8G23DF%=I<)`5EhShgo$7n?qsBaaXpxX}29sNN!J?UVBrKamdR_W~8$nMU=q6 z2YV4be!T0sP2{L#3REHJ=hq>#$LsCg?W;u^blH+-!8#+3+tAVE9d-5hTVq+%V>H-T zM?k=uI|amLUyqts)L)YO9F`=+;VIzi4b$VNH*OYOqzvV;TWPS;D%#O$Y}Q&Tl`$ZurW4QO$CciFI#N^9{2@B(6bA;&EaAu1k=l{$gy+jO!7&1c!x z-~RwSxNa_GuO2%}P{yT4t&zZ>=H->s0ot;pm6HJZRq9RKtW{~Y9VM04)e@y*QglYw zI7Z+_{{WsioqjP>93$D-z#^`BS5<^!YTDDJCSN9>1ESt4r|?$OwLj$Vqm(n)RZ7)D zX;a<)McYbzCdezb`Bs45NjjM)iZgW7%_h4!7i%pgC0~+W-<7d)eOBhJZbI|78OZX} z{IHtww%XL4ncq%Zl;m({7BmyeA`eZNES6-(;AZd`F-GnKEqTw+GR`uLTudz;nYLS9 zIO_4+OUKfhvfA3b^G7x;GgBFv=`J=pYO466!3aMlS9HZ7yxL1JERr7i)09if$jXlU zZ0b>J+Ur?zdK_um)og5#(@S+6o60qn+ecYN0uZ;?42-Q^dkuRl`}sdF?Kax%kK*T9 zomp$q48Ke#J7@3b85c*_y2+w`q?;#Y8938rgz}iUj;~mS6!x;$nxM)~@TApsb=R|% z2~l<=5mLo$8(ph;H{#TWZhMv7plxfH6x0s;X80|EsC1Ox^G0{{R40ss*M5+N}J5J4hQ6Cg5SaWH`e6eB`FQjxJFGh%Xr zp-^Ce!O{QP00;pB0Ruk({{ZZ#=Rf_d!w>%ehnxPG{{Rj@TW2ELmJ$4X4KScN6^mc?aqX7^f(jPwm0ICPgx9I{UgBc7Uz+gRx z{{RO^=C0QP5F6Suw4>M`oPU9%HvJ$apPJzv>_Ie`L6=hh0L9Vys7?O>PRC<#!U&rW z*5Bth-prx$2p|wk5b83F-?;hiS(PdQ{u1RMlWxKe+eQ(Afy4}^5YdSrr@wOz{{Vsz zeA_~#_ATOE1WGa0rHB~7za<%eG5I(7YxJw;-{i3_S=tqq*mkd%Xm8{{s(x+%06@ci zk8P&#e3#gKyG{F4-V^f(1Q2|K=CdjR7Ab)D-{sr0EO<;Ou~H0%W-0L#+77`M7BJs&+)5CbPhcPsec*u0?Z4>-5k-JuW6VDBq4NPEZ7;Qa zml$@w^w5tGm_v3T$`Ru`(d-NY03Z;?hHgJpB9U?3j`55#yD%bMOCLRmHA*lTDgyri zD5DIsEw8f!EnyLl$Zl=eeB-v!tjjXQuaj{$A1DG_MMd5RZuBLzriWSWv?f#~tnoDL zAp?1+L3J)~35_g3um~W61M*OYp_Z`On}{^crtp&p5b6_;kO3|oHwj>(H4_hF79B9( zaEn(9Lc$IrB9dd}b5N?(^@s?Y%76&HkIQ}TY7v9fp)qCVGBu|0$1suD>KjHQh)0QE zCXov?{*=72Q~@pumo_yG_Mtu^SUZRSvk{v>iH~w)WLj9rXpYvv&AX5`guDbz;p~1; zV1u!YUW_{I2ms2#_!jPA z%G({F3LrA&0rFTdjFV^#A1w%Pw%x7?p@U3$7gE5fExQ;*+vL?4Pk{C2X7+`fR3~E^ z?6eA`ldzcb3kPV-d=WO5YGXXy#f$SFCgyse(jg)lLNB}>$jdE9&$nYXo6X=5xY$As zL8hP`jr_t4AJa|VX3dvyNj_s@OR1gSf)iqOfz6=;X9szkAyn{2&|<<6fJ{~3b`JJb63W|0naxHLS$i=<<9TtSsUZf3QWlTd+2 zV=fwpA5O$ZCK$nlHet}RsC<`>GP#;ET-$x-4gT>+MHTM`JQ;o1 }P%l*wjOnM1R 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 T?j{xfX^5xZFC@TXj8p&FvT22v literal 0 HcmV?d00001 diff --git a/assets/images/coffee-brewing.jpg b/assets/images/coffee-brewing.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ff76a374a9cda592742a84091b5fc37bfcf5c111 GIT binary patch literal 88669 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 literal 0 HcmV?d00001 diff --git a/assets/images/favicon.ico b/assets/images/favicon.ico new file mode 100644 index 0000000..7d936e0 --- /dev/null +++ b/assets/images/favicon.ico @@ -0,0 +1,312 @@ + + + + + + + + + Tom's Java Jive | Premium Coffee Beans & Fresh Roasted Coffee | Weatherford TX + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +

    + Made with Emergent +

    +
    + + + diff --git a/assets/images/friends-coffee.jpg b/assets/images/friends-coffee.jpg new file mode 100644 index 0000000000000000000000000000000000000000..16f770e7b32a636d95ff845978ae6f1353517e4b GIT binary patch literal 84160 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

    M45BaP`GJ%;vtdq9O6XyLZL;|FobvX5fRSF^kA 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 ~G0QCGA@oxmj+!J3Ml_Zwr7H@QR&&(= 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 literal 0 HcmV?d00001 diff --git a/assets/images/logo-icon.png b/assets/images/logo-icon.png new file mode 100644 index 0000000..7d936e0 --- /dev/null +++ b/assets/images/logo-icon.png @@ -0,0 +1,312 @@ + + + + + + + + + Tom's Java Jive | Premium Coffee Beans & Fresh Roasted Coffee | Weatherford TX + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    + + + + + + +

    + Made with Emergent +

    +
    + + + diff --git a/assets/images/logo-icon.svg b/assets/images/logo-icon.svg new file mode 100644 index 0000000..5c768c2 --- /dev/null +++ b/assets/images/logo-icon.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/images/logo.png b/assets/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5680c6af2ad9b48e2a2cc510d62d85e37b5b65f6 GIT binary patch literal 137074 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

    XHu7s2#yPeS(|*Ng{C4!R4Uc*=r}u39 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 literal 0 HcmV?d00001 diff --git a/assets/images/logo.svg b/assets/images/logo.svg new file mode 100644 index 0000000..b4fd11a --- /dev/null +++ b/assets/images/logo.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + Tom's + Java Jive + \ No newline at end of file diff --git a/assets/images/og-image.jpg b/assets/images/og-image.jpg new file mode 100644 index 0000000..f7f8eb4 --- /dev/null +++ b/assets/images/og-image.jpg @@ -0,0 +1,17 @@ + + + + + + + + + + + + Tom's Java Jive + Premium Artisan Coffee • Weatherford, TX + Freshly Roasted • Single Origin • Specialty Blends + + Shop tomsjavajive.com + diff --git a/assets/images/placeholder-product.svg b/assets/images/placeholder-product.svg new file mode 100644 index 0000000..d6a9813 --- /dev/null +++ b/assets/images/placeholder-product.svg @@ -0,0 +1,7 @@ + + + + + + Product Image + \ No newline at end of file diff --git a/assets/images/premium-coffee.jpg b/assets/images/premium-coffee.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4632c9eb46bc3c486d3f7604d380c29e424806a5 GIT binary patch literal 65998 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

    9@o6-XL~gN#$|G8BLSI< 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 literal 0 HcmV?d00001 diff --git a/assets/js/main.js b/assets/js/main.js new file mode 100644 index 0000000..17eb693 --- /dev/null +++ b/assets/js/main.js @@ -0,0 +1,394 @@ +/** + * Tom's Java Jive - Main JavaScript + */ + +// ================================ +// Toast Notifications +// ================================ +const ToastManager = { + container: null, + + init() { + if (!this.container) { + this.container = document.createElement('div'); + this.container.className = 'toast-container'; + document.body.appendChild(this.container); + } + }, + + show(message, type = 'success', duration = 3000) { + this.init(); + + const toast = document.createElement('div'); + toast.className = `toast ${type}`; + toast.innerHTML = ` + + ${message} + `; + + this.container.appendChild(toast); + + setTimeout(() => { + toast.style.animation = 'slideIn 0.3s ease reverse'; + setTimeout(() => toast.remove(), 300); + }, duration); + }, + + success(message) { this.show(message, 'success'); }, + error(message) { this.show(message, 'error'); }, + info(message) { this.show(message, 'info'); } +}; + +// ================================ +// Cart Functions +// ================================ +async function addToCart(productId, quantity = 1) { + try { + const response = await fetch('/api/cart.php', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + action: 'add', + product_id: productId, + quantity: parseInt(quantity) + }) + }); + + const data = await response.json(); + + if (data.error) { + ToastManager.error(data.error); + return; + } + + // Update cart count in header + updateCartCount(data.cart_count); + ToastManager.success(data.message || 'Added to cart!'); + + } catch (error) { + console.error('Add to cart error:', error); + ToastManager.error('Failed to add item to cart'); + } +} + +async function updateCartItem(productId, quantity) { + try { + const response = await fetch('/api/cart.php', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + action: 'update', + product_id: productId, + quantity: parseInt(quantity) + }) + }); + + const data = await response.json(); + + if (data.error) { + ToastManager.error(data.error); + return; + } + + // Update cart count + updateCartCount(data.cart_count); + + // Reload page if cart is now empty or update display + if (data.cart_count === 0) { + location.reload(); + } else if (typeof updateCartDisplay === 'function') { + updateCartDisplay(data); + } else { + location.reload(); + } + + } catch (error) { + console.error('Update cart error:', error); + ToastManager.error('Failed to update cart'); + } +} + +async function removeFromCart(productId) { + try { + const response = await fetch('/api/cart.php', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + action: 'remove', + product_id: productId + }) + }); + + const data = await response.json(); + + if (data.error) { + ToastManager.error(data.error); + return; + } + + updateCartCount(data.cart_count); + + // Remove item from DOM or reload + const cartItem = document.querySelector(`.cart-item[data-product-id="${productId}"]`); + if (cartItem) { + cartItem.style.animation = 'slideIn 0.3s ease reverse'; + setTimeout(() => { + cartItem.remove(); + if (data.cart_count === 0) { + location.reload(); + } + }, 300); + } else { + location.reload(); + } + + ToastManager.success('Item removed from cart'); + + } catch (error) { + console.error('Remove from cart error:', error); + ToastManager.error('Failed to remove item'); + } +} + +function updateCartCount(count) { + const cartCountEl = document.querySelector('.cart-count'); + if (cartCountEl) { + if (count > 0) { + cartCountEl.textContent = count; + cartCountEl.style.display = 'flex'; + } else { + cartCountEl.style.display = 'none'; + } + } else if (count > 0) { + const cartLink = document.querySelector('.cart-link'); + if (cartLink) { + const badge = document.createElement('span'); + badge.className = 'cart-count'; + badge.textContent = count; + cartLink.appendChild(badge); + } + } +} + +// ================================ +// Quantity Selectors +// ================================ +document.addEventListener('DOMContentLoaded', function() { + // Quantity +/- buttons + document.querySelectorAll('.qty-minus').forEach(btn => { + btn.addEventListener('click', function() { + const input = this.closest('.quantity-selector').querySelector('.qty-input'); + const current = parseInt(input.value) || 1; + if (current > 1) { + input.value = current - 1; + input.dispatchEvent(new Event('change')); + } + }); + }); + + document.querySelectorAll('.qty-plus').forEach(btn => { + btn.addEventListener('click', function() { + const input = this.closest('.quantity-selector').querySelector('.qty-input'); + const current = parseInt(input.value) || 1; + const max = parseInt(input.max) || 999; + if (current < max) { + input.value = current + 1; + input.dispatchEvent(new Event('change')); + } + }); + }); + + // Add to cart buttons + document.querySelectorAll('.add-to-cart-btn').forEach(btn => { + btn.addEventListener('click', function(e) { + if (!this.dataset.productId) return; + + e.preventDefault(); + const productId = this.dataset.productId; + const qtyInput = document.querySelector('.qty-input'); + const quantity = qtyInput ? parseInt(qtyInput.value) : 1; + + addToCart(productId, quantity); + }); + }); + + // Mobile menu toggle + const menuToggle = document.querySelector('.mobile-menu-toggle'); + const navMenu = document.querySelector('.nav-menu'); + if (menuToggle && navMenu) { + menuToggle.addEventListener('click', function() { + navMenu.classList.toggle('active'); + this.querySelector('i').classList.toggle('fa-bars'); + this.querySelector('i').classList.toggle('fa-times'); + }); + } + + // Confirm delete dialogs + document.querySelectorAll('[data-confirm]').forEach(el => { + el.addEventListener('click', function(e) { + if (!confirm(this.dataset.confirm)) { + e.preventDefault(); + } + }); + }); + + // Auto-hide alerts + document.querySelectorAll('.alert').forEach(alert => { + setTimeout(() => { + alert.style.opacity = '0'; + alert.style.transform = 'translateY(-10px)'; + setTimeout(() => alert.remove(), 300); + }, 5000); + }); +}); + +// ================================ +// Form Helpers +// ================================ +function serializeForm(form) { + const formData = new FormData(form); + const data = {}; + formData.forEach((value, key) => { + data[key] = value; + }); + return data; +} + +async function submitForm(form, url, method = 'POST') { + const data = serializeForm(form); + + try { + const response = await fetch(url, { + method, + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(data) + }); + + return await response.json(); + } catch (error) { + console.error('Form submit error:', error); + throw error; + } +} + +// ================================ +// Format Helpers +// ================================ +function formatCurrency(amount) { + return '$' + parseFloat(amount).toFixed(2); +} + +function formatDate(date) { + return new Date(date).toLocaleDateString('en-US', { + year: 'numeric', + month: 'short', + day: 'numeric' + }); +} + +// ================================ +// Loading States +// ================================ +function setLoading(button, isLoading) { + if (isLoading) { + button.dataset.originalText = button.innerHTML; + button.innerHTML = ' Loading...'; + button.disabled = true; + } else { + button.innerHTML = button.dataset.originalText || button.innerHTML; + button.disabled = false; + } +} + +// ================================ +// Image Preview +// ================================ +function previewImage(input, previewId) { + const preview = document.getElementById(previewId); + if (!preview) return; + + if (input.files && input.files[0]) { + const reader = new FileReader(); + reader.onload = function(e) { + preview.src = e.target.result; + preview.style.display = 'block'; + }; + reader.readAsDataURL(input.files[0]); + } +} + +// ================================ +// Newsletter Subscription +// ================================ +document.querySelectorAll('.newsletter-form').forEach(form => { + form.addEventListener('submit', async function(e) { + e.preventDefault(); + + const email = this.querySelector('input[type="email"]').value; + const button = this.querySelector('button'); + + setLoading(button, true); + + try { + const response = await fetch('/api/subscribe.php', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ email }) + }); + + const data = await response.json(); + + if (data.error) { + ToastManager.error(data.error); + } else { + ToastManager.success('Thank you for subscribing!'); + this.reset(); + } + } catch (error) { + ToastManager.error('Subscription failed. Please try again.'); + } finally { + setLoading(button, false); + } + }); +}); + +// ================================ +// Debounce Helper +// ================================ +function debounce(func, wait) { + let timeout; + return function executedFunction(...args) { + const later = () => { + clearTimeout(timeout); + func(...args); + }; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + }; +} + +// ================================ +// Local Storage Helpers +// ================================ +const Storage = { + get(key, defaultValue = null) { + try { + const item = localStorage.getItem(key); + return item ? JSON.parse(item) : defaultValue; + } catch { + return defaultValue; + } + }, + + set(key, value) { + try { + localStorage.setItem(key, JSON.stringify(value)); + } catch (e) { + console.error('Storage error:', e); + } + }, + + remove(key) { + localStorage.removeItem(key); + } +}; diff --git a/cart.php b/cart.php new file mode 100644 index 0000000..f2c6414 --- /dev/null +++ b/cart.php @@ -0,0 +1,177 @@ + $quantity) { + $product = db()->fetch( + "SELECT product_id, name, price, sale_price, stock, images FROM products WHERE product_id = :id AND is_active = 1", + ['id' => $productId] + ); + + if ($product) { + $images = json_decode($product['images'] ?? '[]', true); + $product['image'] = !empty($images) ? $images[0] : '/assets/images/placeholder-product.svg'; + $product['quantity'] = min($quantity, $product['stock']); + $product['unit_price'] = $product['sale_price'] ?? $product['price']; + $product['total'] = $product['unit_price'] * $product['quantity']; + $subtotal += $product['total']; + $cartItems[] = $product; + } +} + +// Get shipping settings +$shippingSettings = getSetting('shipping', [ + 'flat_rate_enabled' => true, + 'flat_rate_amount' => 5.99, + 'free_shipping_threshold' => 50 +]); + +$shippingCost = 0; +if ($shippingSettings['flat_rate_enabled'] ?? true) { + if ($subtotal >= ($shippingSettings['free_shipping_threshold'] ?? 50)) { + $shippingCost = 0; + } else { + $shippingCost = $shippingSettings['flat_rate_amount'] ?? 5.99; + } +} + +$total = $subtotal + $shippingCost; +?> + +

    +
    +

    Shopping Cart

    + + +
    + +
    + + +
    +
    +
    + +
    + + <?= htmlspecialchars($item['name']) ?> + +
    + +

    +
    +

    each

    +
    + +
    + + + +
    + +
    +

    + +
    +
    + +
    +
    +
    + + +
    +
    +

    Order Summary

    +
    +
    +
    + Subtotal + +
    +
    + Shipping + + + FREE + + + + +
    + + 0 && isset($shippingSettings['free_shipping_threshold'])): + $remaining = $shippingSettings['free_shipping_threshold'] - $subtotal; + ?> +

    + + Add more for FREE shipping! +

    + + +
    + +
    + Total + +
    + + + Proceed to Checkout + + + + Continue Shopping + +
    +
    +
    + +
    +
    + + + + diff --git a/checkout.php b/checkout.php new file mode 100644 index 0000000..79f9c13 --- /dev/null +++ b/checkout.php @@ -0,0 +1,343 @@ + $quantity) { + $product = db()->fetch( + "SELECT product_id, name, price, sale_price, stock, images FROM products WHERE product_id = :id AND is_active = 1", + ['id' => $productId] + ); + + if ($product) { + $images = json_decode($product['images'] ?? '[]', true); + $product['image'] = !empty($images) ? $images[0] : '/assets/images/placeholder-product.svg'; + $product['quantity'] = min($quantity, $product['stock']); + $product['unit_price'] = $product['sale_price'] ?? $product['price']; + $product['total'] = $product['unit_price'] * $product['quantity']; + $subtotal += $product['total']; + $cartItems[] = $product; + } +} + +// Get shipping settings +$shippingSettings = getSetting('shipping', [ + 'flat_rate_enabled' => true, + 'flat_rate_amount' => 5.99, + 'free_shipping_threshold' => 50 +]); + +$shippingCost = 0; +if ($shippingSettings['flat_rate_enabled'] ?? true) { + if ($subtotal >= ($shippingSettings['free_shipping_threshold'] ?? 50)) { + $shippingCost = 0; + } else { + $shippingCost = $shippingSettings['flat_rate_amount'] ?? 5.99; + } +} + +$total = $subtotal + $shippingCost; + +// Get Stripe publishable key +$stripeKey = STRIPE_PUBLISHABLE_KEY; + +$errors = []; + +// Handle form submission +if ($_SERVER['REQUEST_METHOD'] === 'POST') { + // Validate form + $email = trim($_POST['email'] ?? ''); + $name = trim($_POST['name'] ?? ''); + $phone = trim($_POST['phone'] ?? ''); + $address = trim($_POST['address'] ?? ''); + $city = trim($_POST['city'] ?? ''); + $state = trim($_POST['state'] ?? ''); + $zip = trim($_POST['zip'] ?? ''); + + if (empty($email)) $errors['email'] = 'Email is required'; + if (empty($name)) $errors['name'] = 'Name is required'; + if (empty($address)) $errors['address'] = 'Address is required'; + if (empty($city)) $errors['city'] = 'City is required'; + if (empty($state)) $errors['state'] = 'State is required'; + if (empty($zip)) $errors['zip'] = 'ZIP code is required'; + + if (empty($errors)) { + // Create order + $orderId = generateId('ord_'); + $orderNumber = generateOrderNumber(); + + // Get or create customer + $customerId = null; + if ($customer) { + $customerId = $customer['customer_id']; + } else { + $customerId = CustomerAuth::createGuest($email, $name, $phone); + } + + // Prepare order items + $orderItems = []; + foreach ($cartItems as $item) { + $orderItems[] = [ + 'product_id' => $item['product_id'], + 'name' => $item['name'], + 'price' => $item['unit_price'], + 'quantity' => $item['quantity'], + 'total' => $item['total'] + ]; + } + + // Insert order + db()->insert('orders', [ + 'order_id' => $orderId, + 'order_number' => $orderNumber, + 'customer_id' => $customerId, + 'customer_email' => $email, + 'customer_name' => $name, + 'customer_phone' => $phone, + 'items' => json_encode($orderItems), + 'subtotal' => $subtotal, + 'shipping_cost' => $shippingCost, + 'total' => $total, + 'shipping_address' => json_encode([ + 'address' => $address, + 'city' => $city, + 'state' => $state, + 'zip' => $zip, + 'country' => 'USA' + ]), + 'shipping_method' => 'standard', + 'payment_method' => 'stripe', + 'payment_status' => 'pending', + 'order_status' => 'pending' + ]); + + // Insert order items for reporting + foreach ($orderItems as $item) { + db()->insert('order_items', [ + 'order_id' => $orderId, + 'product_id' => $item['product_id'], + 'name' => $item['name'], + 'price' => $item['price'], + 'quantity' => $item['quantity'], + 'total' => $item['total'] + ]); + } + + // Reduce stock + foreach ($cartItems as $item) { + db()->query( + "UPDATE products SET stock = stock - :qty WHERE product_id = :id", + ['qty' => $item['quantity'], 'id' => $item['product_id']] + ); + } + + // Store order ID for payment + $_SESSION['pending_order_id'] = $orderId; + + // Redirect to payment page + redirect('/payment.php?order=' . $orderId); + } +} + +$metaTitle = "Secure Checkout | Tom's Java Jive"; +$metaDescription = 'Complete your coffee order with secure checkout.'; +$canonicalUrl = 'https://tomsjavajive.com/checkout.php'; +$metaRobots = "noindex, nofollow"; +$suppressSchema = true; +require_once __DIR__ . '/includes/header.php'; +?> + +
    +
    +

    Checkout

    + +
    +
    + + +
    + +
    +
    +

    Contact Information

    +
    +
    + +

    Logged in as

    + + + +
    + + + + + +
    + +
    + + + + + +
    + +
    + + +
    + +

    + Already have an account? Sign in +

    + +
    +
    + + +
    +
    +

    Shipping Address

    +
    +
    + + +
    + + + + + +
    + +
    +
    + + + + + +
    + +
    + + + + + +
    + +
    + + + + + +
    +
    +
    +
    + + +
    +
    +

    Order Notes (Optional)

    +
    +
    + +
    +
    +
    + + +
    +
    +

    Order Summary

    +
    +
    + +
    + +
    + +
    +

    +

    + x +

    +
    +
    + +
    +
    + +
    + + +
    + Subtotal + +
    +
    + Shipping + + + FREE + + + + +
    + +
    + +
    + Total + +
    + + + + + Back to Cart + + +

    + Secure checkout powered by Stripe +

    +
    +
    +
    +
    +
    +
    + + diff --git a/config/config.php b/config/config.php new file mode 100644 index 0000000..471c53b --- /dev/null +++ b/config/config.php @@ -0,0 +1,62 @@ + 12]); +?> +``` +Upload it, visit it in browser, copy the hash, then DELETE the file. + +--- + +## Step 6: Configure Stripe Webhook (Optional but Recommended) + +1. Go to [Stripe Dashboard > Webhooks](https://dashboard.stripe.com/webhooks) +2. Click **Add endpoint** +3. Set endpoint URL: `https://yourdomain.com/api/webhook.php` +4. Select events: + - `payment_intent.succeeded` + - `payment_intent.payment_failed` + - `charge.refunded` +5. Copy the **Signing secret** to your `config.php` + +--- + +## Step 7: Test Your Installation + +1. Visit `https://yourdomain.com` - Should show storefront +2. Visit `https://yourdomain.com/admin/` - Should show admin login +3. Login with your admin credentials +4. Add a test product +5. Test the checkout flow + +--- + +## Data Migration from MongoDB + +If you have existing data in MongoDB that needs to be migrated: + +### Prerequisites +- PHP with MongoDB extension (`pecl install mongodb`) +- Access to your MongoDB server + +### Running Migration +The migration script is located at `install/migrate_from_mongodb.php`. + +Since cPanel typically doesn't have MongoDB extension, you have two options: + +**Option A: Export/Import Manually** +1. Export MongoDB collections to JSON using `mongoexport` +2. Convert and import to MySQL using phpMyAdmin or custom scripts + +**Option B: Run Migration Locally** +1. Install PHP MongoDB extension locally +2. Connect to both databases +3. Run: `php migrate_from_mongodb.php [mongodb_url] [mongodb_dbname]` + +--- + +## Security Checklist + +Before going live: + +- [ ] Change default admin password +- [ ] Update `SITE_URL` in config.php +- [ ] Set `ENVIRONMENT` to 'production' +- [ ] Set `DEBUG_MODE` to false +- [ ] Configure real Stripe keys (not test keys) +- [ ] Configure SendGrid for emails +- [ ] Delete `install/` folder after setup +- [ ] Set up SSL certificate (HTTPS) +- [ ] Enable Stripe webhook +- [ ] Test payment flow end-to-end + +--- + +## Troubleshooting + +### "Database connection failed" +- Check database credentials in `config/database.php` +- Verify database exists in cPanel +- Ensure user has privileges on the database + +### "500 Internal Server Error" +- Check `.htaccess` file exists +- View error logs in cPanel > Error Log +- Temporarily enable `DEBUG_MODE` in config.php + +### "Blank page" +- Enable PHP error display temporarily +- Check PHP version (requires 8.4+) +- View Apache/PHP error logs + +### "Session errors" +- Ensure `session.save_path` is writable +- Check `sessions/` folder permissions + +### "Payment not working" +- Verify Stripe keys are correct +- Check browser console for JS errors +- Verify webhook endpoint is accessible + +--- + +## File Structure Reference + +``` +tomsjavajive-php/ +├── admin/ # Admin panel +│ ├── assets/ # Admin CSS/JS +│ ├── includes/ # Admin header/footer +│ ├── index.php # Dashboard +│ ├── products.php # Product management +│ ├── orders.php # Order management +│ └── ... +├── api/ # API endpoints +│ ├── cart.php +│ ├── products.php +│ ├── orders.php +│ └── webhook.php # Stripe webhook +├── assets/ # Public assets +│ ├── css/ +│ ├── js/ +│ └── images/ +├── account/ # Customer account pages +├── config/ # Configuration files +│ ├── config.php # Main config +│ └── database.php # DB credentials +├── includes/ # Shared includes +│ ├── auth.php +│ ├── db.php +│ ├── functions.php +│ ├── header.php +│ └── footer.php +├── install/ # Installation files +│ ├── schema.sql # Database schema +│ └── migrate_from_mongodb.php +├── index.php # Homepage +├── shop.php # Shop page +├── product.php # Product detail +├── cart.php # Shopping cart +├── checkout.php # Checkout +└── payment.php # Stripe payment +``` + +--- + +## Support + +For issues with this deployment: +1. Check the troubleshooting section above +2. Review error logs in cPanel +3. Verify all configuration values are correct + +--- + +*Last updated: December 2025* +*PHP Version: 8.4.19 | MySQL Version: 8.0* diff --git a/includes/auth.php b/includes/auth.php new file mode 100644 index 0000000..d39e68c --- /dev/null +++ b/includes/auth.php @@ -0,0 +1,284 @@ +fetch( + "SELECT * FROM admin_users WHERE email = :email", + ['email' => strtolower($email)] + ); + + if (!$admin || !verifyPassword($password, $admin['password_hash'])) { + return false; + } + + // Update last login + db()->update('admin_users', + ['last_login' => date('Y-m-d H:i:s')], + 'user_id = :id', + ['id' => $admin['user_id']] + ); + + // Set session + $_SESSION['admin'] = [ + 'user_id' => $admin['user_id'], + 'email' => $admin['email'], + 'name' => $admin['name'], + 'is_master' => (bool)$admin['is_master'], + 'permissions' => json_decode($admin['permissions'] ?? '[]', true) + ]; + + // Regenerate session ID for security + session_regenerate_id(true); + + return true; + } + + public static function logout() { + unset($_SESSION['admin']); + session_regenerate_id(true); + } + + public static function isLoggedIn() { + return isset($_SESSION['admin']['user_id']); + } + + public static function getUser() { + return $_SESSION['admin'] ?? null; + } + + public static function require() { + if (!self::isLoggedIn()) { + if (isAjax()) { + jsonResponse(['error' => 'Unauthorized'], 401); + } + $_SESSION['admin_redirect'] = currentUrl(); + redirect('/admin/login.php'); + } + } + + public static function hasPermission($permission) { + $admin = self::getUser(); + if (!$admin) return false; + if ($admin['is_master']) return true; + return in_array($permission, $admin['permissions'] ?? []); + } + + public static function register($email, $password, $name = null, $isMaster = false) { + $userId = generateId('admin_'); + + db()->insert('admin_users', [ + 'user_id' => $userId, + 'email' => strtolower($email), + 'password_hash' => hashPassword($password), + 'name' => $name ?? $email, + 'is_admin' => 1, + 'is_master' => $isMaster ? 1 : 0 + ]); + + return $userId; + } +} + +/** + * Customer Authentication + */ +class CustomerAuth { + + public static function login($email, $password) { + $customer = db()->fetch( + "SELECT * FROM customers WHERE email = :email AND password_hash IS NOT NULL", + ['email' => strtolower($email)] + ); + + if (!$customer || !verifyPassword($password, $customer['password_hash'])) { + return false; + } + + // Set session + $_SESSION['customer'] = [ + 'customer_id' => $customer['customer_id'], + 'email' => $customer['email'], + 'name' => $customer['name'] + ]; + + session_regenerate_id(true); + return true; + } + + public static function logout() { + unset($_SESSION['customer']); + session_regenerate_id(true); + } + + public static function isLoggedIn() { + return isset($_SESSION['customer']['customer_id']); + } + + public static function getUser() { + return $_SESSION['customer'] ?? null; + } + + public static function getFullUser() { + if (!self::isLoggedIn()) return null; + + return db()->fetch( + "SELECT customer_id, email, name, phone, shipping_address, billing_address, + wallet_balance, reward_points, addresses, preferences, password_hash, created_at + FROM customers WHERE customer_id = :id", + ['id' => $_SESSION['customer']['customer_id']] + ); + } + + public static function require() { + if (!self::isLoggedIn()) { + if (isAjax()) { + jsonResponse(['error' => 'Unauthorized'], 401); + } + $_SESSION['redirect_after_login'] = currentUrl(); + redirect('/login.php'); + } + } + + public static function register($email, $password, $name = null, $phone = null) { + // Check if email exists + $existing = db()->fetch( + "SELECT customer_id FROM customers WHERE email = :email", + ['email' => strtolower($email)] + ); + + if ($existing) { + return ['error' => 'Email already registered']; + } + + $customerId = generateId('cust_'); + + db()->insert('customers', [ + 'customer_id' => $customerId, + 'email' => strtolower($email), + 'password_hash' => hashPassword($password), + 'name' => $name, + 'phone' => $phone + ]); + + // Auto login after registration + $_SESSION['customer'] = [ + 'customer_id' => $customerId, + 'email' => strtolower($email), + 'name' => $name + ]; + + return ['success' => true, 'customer_id' => $customerId]; + } + + public static function createGuest($email, $name = null, $phone = null) { + // Check if customer exists + $existing = db()->fetch( + "SELECT customer_id FROM customers WHERE email = :email", + ['email' => strtolower($email)] + ); + + if ($existing) { + return $existing['customer_id']; + } + + $customerId = generateId('cust_'); + + db()->insert('customers', [ + 'customer_id' => $customerId, + 'email' => strtolower($email), + 'name' => $name, + 'phone' => $phone, + 'is_guest' => 1 + ]); + + return $customerId; + } + + public static function requestPasswordReset($email) { + $customer = db()->fetch( + "SELECT customer_id FROM customers WHERE email = :email AND password_hash IS NOT NULL", + ['email' => strtolower($email)] + ); + + if (!$customer) { + return false; + } + + $token = bin2hex(random_bytes(32)); + $expiresAt = date('Y-m-d H:i:s', strtotime('+1 hour')); + + db()->insert('password_reset_tokens', [ + 'email' => strtolower($email), + 'token' => $token, + 'user_type' => 'customer', + 'expires_at' => $expiresAt + ]); + + // Send email + $resetUrl = SITE_URL . '/reset-password.php?token=' . $token; + $html = " +

    Password Reset Request

    +

    Click the link below to reset your password:

    +

    {$resetUrl}

    +

    This link will expire in 1 hour.

    +

    If you didn't request this, please ignore this email.

    + "; + + sendEmail($email, 'Password Reset - ' . SITE_NAME, $html); + + return true; + } + + public static function resetPassword($token, $newPassword) { + $reset = db()->fetch( + "SELECT * FROM password_reset_tokens + WHERE token = :token AND user_type = 'customer' AND used = 0 AND expires_at > NOW()", + ['token' => $token] + ); + + if (!$reset) { + return ['error' => 'Invalid or expired token']; + } + + // Update password + db()->update('customers', + ['password_hash' => hashPassword($newPassword)], + 'email = :email', + ['email' => $reset['email']] + ); + + // Mark token as used + db()->update('password_reset_tokens', + ['used' => 1], + 'id = :id', + ['id' => $reset['id']] + ); + + return ['success' => true]; + } +} + +// Initialize session on include +initSession(); diff --git a/includes/db.php b/includes/db.php new file mode 100644 index 0000000..b77ac6f --- /dev/null +++ b/includes/db.php @@ -0,0 +1,104 @@ +pdo = new PDO($dsn, DB_USER, DB_PASS, DB_OPTIONS); + } catch (PDOException $e) { + if (ENVIRONMENT === 'development') { + die("Database connection failed: " . $e->getMessage()); + } else { + die("Database connection failed. Please try again later."); + } + } + } + + public static function getInstance() { + if (self::$instance === null) { + self::$instance = new self(); + } + return self::$instance; + } + + public function getConnection() { + return $this->pdo; + } + + public function query($sql, $params = []) { + $stmt = $this->pdo->prepare($sql); + $stmt->execute($params); + return $stmt; + } + + public function fetch($sql, $params = []) { + return $this->query($sql, $params)->fetch(); + } + + public function fetchAll($sql, $params = []) { + return $this->query($sql, $params)->fetchAll(); + } + + public function insert($table, $data) { + $columns = implode(', ', array_keys($data)); + $placeholders = ':' . implode(', :', array_keys($data)); + + $sql = "INSERT INTO {$table} ({$columns}) VALUES ({$placeholders})"; + $this->query($sql, $data); + + return $this->pdo->lastInsertId(); + } + + public function update($table, $data, $where, $whereParams = []) { + $set = []; + foreach (array_keys($data) as $column) { + $set[] = "{$column} = :{$column}"; + } + $setString = implode(', ', $set); + + $sql = "UPDATE {$table} SET {$setString} WHERE {$where}"; + return $this->query($sql, array_merge($data, $whereParams))->rowCount(); + } + + public function delete($table, $where, $params = []) { + $sql = "DELETE FROM {$table} WHERE {$where}"; + return $this->query($sql, $params)->rowCount(); + } + + public function count($table, $where = '1=1', $params = []) { + $sql = "SELECT COUNT(*) as count FROM {$table} WHERE {$where}"; + $result = $this->fetch($sql, $params); + return $result['count'] ?? 0; + } + + public function lastInsertId() { + return $this->pdo->lastInsertId(); + } + + public function beginTransaction() { + return $this->pdo->beginTransaction(); + } + + public function commit() { + return $this->pdo->commit(); + } + + public function rollback() { + return $this->pdo->rollBack(); + } +} + +// Helper function to get database instance +function db() { + return Database::getInstance(); +} diff --git a/includes/email.php b/includes/email.php new file mode 100644 index 0000000..ba65c59 --- /dev/null +++ b/includes/email.php @@ -0,0 +1,369 @@ +apiKey = getSetting('sendgrid_api_key', defined('SENDGRID_API_KEY') ? SENDGRID_API_KEY : ''); + $this->fromEmail = getSetting('sendgrid_from_email', defined('SENDER_EMAIL') ? SENDER_EMAIL : 'noreply@tomsjavajive.com'); + $this->fromName = getSetting('sendgrid_from_name', defined('SENDER_NAME') ? SENDER_NAME : "Tom's Java Jive"); + } + + /** + * Send email via SendGrid API + */ + public function send(string $to, string $subject, string $htmlContent, ?string $textContent = null): array { + $data = [ + 'personalizations' => [ + [ + 'to' => [['email' => $to]], + 'subject' => $subject + ] + ], + 'from' => [ + 'email' => $this->fromEmail, + 'name' => $this->fromName + ], + 'content' => [] + ]; + + if ($textContent) { + $data['content'][] = ['type' => 'text/plain', 'value' => $textContent]; + } + $data['content'][] = ['type' => 'text/html', 'value' => $htmlContent]; + + $ch = curl_init('https://api.sendgrid.com/v3/mail/send'); + curl_setopt_array($ch, [ + CURLOPT_POST => true, + CURLOPT_POSTFIELDS => json_encode($data), + CURLOPT_HTTPHEADER => [ + 'Authorization: Bearer ' . $this->apiKey, + 'Content-Type: application/json' + ], + CURLOPT_RETURNTRANSFER => true, + CURLOPT_TIMEOUT => 30 + ]); + + $response = curl_exec($ch); + $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + $error = curl_error($ch); + curl_close($ch); + + if ($error) { + return ['success' => false, 'error' => $error]; + } + + // SendGrid returns 202 for accepted + if ($httpCode >= 200 && $httpCode < 300) { + return ['success' => true]; + } + + return ['success' => false, 'error' => $response, 'code' => $httpCode]; + } + + /** + * Send order confirmation email + */ + public function sendOrderConfirmation(array $order): array { + $items = json_decode($order['items'], true); + $itemsHtml = ''; + foreach ($items as $item) { + $itemsHtml .= sprintf( + '%s + %d + %s', + htmlspecialchars($item['name']), + $item['quantity'], + formatCurrency($item['total']) + ); + } + + $html = $this->getTemplate('order_confirmation', [ + 'order_number' => $order['order_number'], + 'customer_name' => $order['customer_name'] ?? 'Valued Customer', + 'items_html' => $itemsHtml, + 'subtotal' => formatCurrency($order['subtotal']), + 'tax' => formatCurrency($order['tax']), + 'discount' => $order['discount'] > 0 ? '-' . formatCurrency($order['discount']) : '$0.00', + 'total' => formatCurrency($order['total']), + 'payment_method' => ucfirst($order['payment_method'] ?? 'N/A'), + 'order_date' => date('F j, Y', strtotime($order['created_at'])) + ]); + + return $this->send( + $order['customer_email'], + "Order Confirmation - #{$order['order_number']}", + $html + ); + } + + /** + * Send shipping notification email + */ + public function sendShippingNotification(array $order): array { + $html = $this->getTemplate('shipping_notification', [ + 'order_number' => $order['order_number'], + 'customer_name' => $order['customer_name'] ?? 'Valued Customer', + 'tracking_number' => $order['tracking_number'], + 'tracking_url' => $order['tracking_url'] ?? '#', + 'carrier' => $order['shipping_carrier'] ?? 'Our shipping partner' + ]); + + return $this->send( + $order['customer_email'], + "Your Order Has Shipped - #{$order['order_number']}", + $html + ); + } + + /** + * Send password reset email + */ + public function sendPasswordReset(string $email, string $resetToken, string $name = ''): array { + $resetUrl = SITE_URL . '/reset-password.php?token=' . $resetToken; + + $html = $this->getTemplate('password_reset', [ + 'customer_name' => $name ?: 'there', + 'reset_url' => $resetUrl, + 'expires' => '1 hour' + ]); + + return $this->send( + $email, + "Reset Your Password - Tom's Java Jive", + $html + ); + } + + /** + * Send welcome email to new customer + */ + public function sendWelcome(string $email, string $name = ''): array { + $html = $this->getTemplate('welcome', [ + 'customer_name' => $name ?: 'Coffee Lover', + 'shop_url' => SITE_URL . '/shop.php' + ]); + + return $this->send( + $email, + "Welcome to Tom's Java Jive!", + $html + ); + } + + /** + * Send abandoned cart reminder + */ + public function sendAbandonedCartReminder(array $cart): array { + $items = json_decode($cart['items'], true); + $itemsHtml = ''; + foreach ($items as $item) { + $itemsHtml .= sprintf( + '
    %s - %s
    ', + htmlspecialchars($item['name']), + formatCurrency($item['price']) + ); + } + + $html = $this->getTemplate('abandoned_cart', [ + 'items_html' => $itemsHtml, + 'total' => formatCurrency($cart['subtotal']), + 'cart_url' => SITE_URL . '/cart.php' + ]); + + return $this->send( + $cart['customer_email'], + "You left something behind!", + $html + ); + } + + /** + * Get email template with variables replaced + */ + private function getTemplate(string $name, array $vars = []): string { + $templates = [ + 'order_confirmation' => ' +
    +
    +

    Order Confirmed!

    +
    +
    +

    Hi {{customer_name}},

    +

    Thank you for your order! We\'ve received it and will begin processing right away.

    + +
    +

    Order #{{order_number}}

    +

    {{order_date}}

    +
    + + + + + + + + + + + {{items_html}} + +
    ItemQtyPrice
    + +
    +

    Subtotal: {{subtotal}}

    +

    Tax: {{tax}}

    +

    Discount: {{discount}}

    +

    Total: {{total}}

    +
    + +

    Payment Method: {{payment_method}}

    + +

    + If you have any questions, reply to this email or visit our website. +

    +
    +
    +

    © ' . date('Y') . ' Tom\'s Java Jive. All rights reserved.

    +
    +
    + ', + + 'shipping_notification' => ' +
    +
    +

    Your Order Has Shipped!

    +
    +
    +

    Hi {{customer_name}},

    +

    Great news! Your order #{{order_number}} is on its way to you.

    + +
    +

    Tracking Number

    +

    {{tracking_number}}

    +

    Carrier: {{carrier}}

    +
    + + + +

    + Please allow 24-48 hours for tracking information to update. +

    +
    +
    +

    © ' . date('Y') . ' Tom\'s Java Jive. All rights reserved.

    +
    +
    + ', + + 'password_reset' => ' +
    +
    +

    Reset Your Password

    +
    +
    +

    Hi {{customer_name}},

    +

    We received a request to reset your password. Click the button below to create a new password:

    + + + +

    + This link will expire in {{expires}}. If you didn\'t request this, you can safely ignore this email. +

    +
    +
    +

    © ' . date('Y') . ' Tom\'s Java Jive. All rights reserved.

    +
    +
    + ', + + 'welcome' => ' +
    +
    +

    Welcome to the Family!

    +
    +
    +

    Hi {{customer_name}},

    +

    Welcome to Tom\'s Java Jive! We\'re thrilled to have you join our community of coffee lovers.

    + +

    Here\'s what you can look forward to:

    +
      +
    • Exclusive member discounts
    • +
    • Early access to new roasts
    • +
    • Reward points on every purchase
    • +
    • Birthday treats and special offers
    • +
    + + + +

    Cheers,
    The Tom\'s Java Jive Team

    +
    +
    +

    © ' . date('Y') . ' Tom\'s Java Jive. All rights reserved.

    +
    +
    + ', + + 'abandoned_cart' => ' +
    +
    +

    Forget Something?

    +
    +
    +

    Hey there!

    +

    We noticed you left some amazing items in your cart. Don\'t let them get away!

    + +
    + {{items_html}} +
    + Total: {{total}} +
    +
    + + + +

    + Need help? Just reply to this email and we\'ll assist you! +

    +
    +
    +

    © ' . date('Y') . ' Tom\'s Java Jive. All rights reserved.

    +
    +
    + ' + ]; + + $template = $templates[$name] ?? '

    Email template not found.

    '; + + foreach ($vars as $key => $value) { + $template = str_replace('{{' . $key . '}}', $value, $template); + } + + return $template; + } +} + +// Helper function for easy access +function sendEmail(): SendGridEmail { + static $instance = null; + if ($instance === null) { + $instance = new SendGridEmail(); + } + return $instance; +} diff --git a/includes/footer.php b/includes/footer.php new file mode 100644 index 0000000..83d32f2 --- /dev/null +++ b/includes/footer.php @@ -0,0 +1,77 @@ + + + + + + + + + + + + + diff --git a/includes/functions.php b/includes/functions.php new file mode 100644 index 0000000..7a13742 --- /dev/null +++ b/includes/functions.php @@ -0,0 +1,378 @@ + HASH_COST]); +} + +/** + * Verify password + */ +function verifyPassword($password, $hash) { + return password_verify($password, $hash); +} + +/** + * Sanitize input + */ +function sanitize($input) { + if (is_array($input)) { + return array_map('sanitize', $input); + } + return htmlspecialchars(trim($input), ENT_QUOTES, 'UTF-8'); +} + +/** + * Format currency + */ +function formatCurrency($amount) { + return TJJ_CURRENCY_SYMBOL . number_format((float)$amount, 2); +} + +/** + * Format date + */ +function formatDate($date, $format = 'M j, Y') { + return date($format, strtotime($date)); +} + +/** + * Format datetime + */ +function formatDateTime($date, $format = 'M j, Y g:i A') { + return date($format, strtotime($date)); +} + +/** + * JSON response helper + */ +function jsonResponse($data, $statusCode = 200) { + http_response_code($statusCode); + header('Content-Type: application/json'); + echo json_encode($data); + exit; +} + +/** + * Redirect helper + */ +function redirect($url) { + header("Location: $url"); + exit; +} + +/** + * Get current URL + */ +function currentUrl() { + $protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https' : 'http'; + return $protocol . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; +} + +/** + * Check if request is AJAX + */ +function isAjax() { + return !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && + strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest'; +} + +/** + * Get client IP address + */ +function getClientIp() { + $ip = $_SERVER['REMOTE_ADDR']; + if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { + $ip = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])[0]; + } elseif (!empty($_SERVER['HTTP_CLIENT_IP'])) { + $ip = $_SERVER['HTTP_CLIENT_IP']; + } + return trim($ip); +} + +/** + * Generate CSRF token + */ +function generateCsrfToken() { + if (empty($_SESSION[CSRF_TOKEN_NAME])) { + $_SESSION[CSRF_TOKEN_NAME] = bin2hex(random_bytes(32)); + } + return $_SESSION[CSRF_TOKEN_NAME]; +} + +/** + * Verify CSRF token + */ +function verifyCsrfToken($token) { + return isset($_SESSION[CSRF_TOKEN_NAME]) && hash_equals($_SESSION[CSRF_TOKEN_NAME], $token); +} + +/** + * Get setting value + */ +function getSetting($key, $default = null) { + $result = db()->fetch( + "SELECT setting_value FROM settings WHERE setting_key = :key", + ['key' => $key] + ); + if ($result) { + return json_decode($result['setting_value'], true) ?? $result['setting_value']; + } + return $default; +} + +/** + * Update setting value + */ +function setSetting($key, $value) { + $jsonValue = json_encode($value); + $existing = db()->fetch( + "SELECT id FROM settings WHERE setting_key = :key", + ['key' => $key] + ); + + if ($existing) { + db()->update('settings', ['setting_value' => $jsonValue], 'setting_key = :key', ['key' => $key]); + } else { + db()->insert('settings', ['setting_key' => $key, 'setting_value' => $jsonValue]); + } +} + +/** + * Flash message helpers + */ +function setFlash($type, $message) { + $_SESSION['flash'][$type] = $message; +} + +function getFlash($type) { + if (isset($_SESSION['flash'][$type])) { + $message = $_SESSION['flash'][$type]; + unset($_SESSION['flash'][$type]); + return $message; + } + return null; +} + +function hasFlash($type) { + return isset($_SESSION['flash'][$type]); +} + +/** + * Pagination helper + */ +function paginate($totalItems, $currentPage, $perPage = ITEMS_PER_PAGE) { + $totalPages = ceil($totalItems / $perPage); + $currentPage = max(1, min($currentPage, $totalPages)); + $offset = ($currentPage - 1) * $perPage; + + return [ + 'total_items' => $totalItems, + 'total_pages' => $totalPages, + 'current_page' => $currentPage, + 'per_page' => $perPage, + 'offset' => $offset, + 'has_prev' => $currentPage > 1, + 'has_next' => $currentPage < $totalPages + ]; +} + +/** + * Render pagination HTML + */ +function renderPagination($pagination, $baseUrl) { + if ($pagination['total_pages'] <= 1) return ''; + + $html = ''; + return $html; +} + +/** + * Truncate text + */ +function truncate($text, $length = 100, $suffix = '...') { + if (strlen($text) <= $length) return $text; + return substr($text, 0, $length) . $suffix; +} + +/** + * Slugify text + */ +function slugify($text) { + $text = preg_replace('~[^\pL\d]+~u', '-', $text); + $text = iconv('utf-8', 'us-ascii//TRANSLIT', $text); + $text = preg_replace('~[^-\w]+~', '', $text); + $text = trim($text, '-'); + $text = preg_replace('~-+~', '-', $text); + return strtolower($text); +} + +/** + * Get cart from session + */ +function getCart() { + return $_SESSION['cart'] ?? []; +} + +/** + * Add item to cart + */ +function addToCart($productId, $quantity = 1) { + if (!isset($_SESSION['cart'])) { + $_SESSION['cart'] = []; + } + + if (isset($_SESSION['cart'][$productId])) { + $_SESSION['cart'][$productId] += $quantity; + } else { + $_SESSION['cart'][$productId] = $quantity; + } +} + +/** + * Update cart item quantity + */ +function updateCartItem($productId, $quantity) { + if ($quantity <= 0) { + removeFromCart($productId); + } else { + $_SESSION['cart'][$productId] = $quantity; + } +} + +/** + * Remove item from cart + */ +function removeFromCart($productId) { + unset($_SESSION['cart'][$productId]); +} + +/** + * Clear cart + */ +function clearCart() { + $_SESSION['cart'] = []; +} + +/** + * Get cart count + */ +function getCartCount() { + return array_sum($_SESSION['cart'] ?? []); +} + +/** + * Get cart total + */ +function getCartTotal() { + $total = 0; + $cart = getCart(); + + foreach ($cart as $productId => $quantity) { + $product = db()->fetch( + "SELECT price, sale_price FROM products WHERE product_id = :id AND is_active = 1", + ['id' => $productId] + ); + if ($product) { + $price = $product['sale_price'] ?? $product['price']; + $total += $price * $quantity; + } + } + + return $total; +} + +/** + * Send email using SendGrid + */ +function sendEmail($to, $subject, $htmlContent, $textContent = '') { + if (empty(SENDGRID_API_KEY)) { + return false; + } + + $data = [ + 'personalizations' => [ + [ + 'to' => [['email' => $to]], + 'subject' => $subject + ] + ], + 'from' => [ + 'email' => SENDER_EMAIL, + 'name' => SENDER_NAME + ], + 'content' => [ + ['type' => 'text/html', 'value' => $htmlContent] + ] + ]; + + if ($textContent) { + array_unshift($data['content'], ['type' => 'text/plain', 'value' => $textContent]); + } + + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, 'https://api.sendgrid.com/v3/mail/send'); + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); + curl_setopt($ch, CURLOPT_HTTPHEADER, [ + 'Authorization: Bearer ' . SENDGRID_API_KEY, + 'Content-Type: application/json' + ]); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + + $response = curl_exec($ch); + $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + curl_close($ch); + + return $httpCode >= 200 && $httpCode < 300; +} + +/** + * Log activity + */ +function logActivity($action, $details = [], $userId = null) { + // Implement activity logging if needed +} diff --git a/includes/header.php b/includes/header.php new file mode 100644 index 0000000..247cde7 --- /dev/null +++ b/includes/header.php @@ -0,0 +1,116 @@ + + + + + + + <?= $pageTitle ?? SITE_NAME ?> + + "> + "> + + + + + "> + "> + + + + + "> + "> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    diff --git a/includes/loyalty.php b/includes/loyalty.php new file mode 100644 index 0000000..2988c99 --- /dev/null +++ b/includes/loyalty.php @@ -0,0 +1,438 @@ + [ + 'name' => 'Bronze Bean', + 'min_points' => 0, + 'multiplier' => 1.0, + 'benefits' => [ + 'Earn 1 point per $1 spent', + 'Birthday reward', + 'Member-only offers' + ], + 'color' => '#CD7F32', + 'icon' => 'fa-coffee' + ], + 'silver' => [ + 'name' => 'Silver Roast', + 'min_points' => 500, + 'multiplier' => 1.25, + 'benefits' => [ + 'Earn 1.25 points per $1 spent', + 'Free shipping on orders $25+', + 'Early access to new products', + 'Double points weekends' + ], + 'color' => '#C0C0C0', + 'icon' => 'fa-mug-hot' + ], + 'gold' => [ + 'name' => 'Gold Blend', + 'min_points' => 1500, + 'multiplier' => 1.5, + 'benefits' => [ + 'Earn 1.5 points per $1 spent', + 'Free shipping on all orders', + 'Exclusive Gold-only products', + 'Priority customer support', + 'Quarterly free coffee sample' + ], + 'color' => '#FFD700', + 'icon' => 'fa-crown' + ], + 'platinum' => [ + 'name' => 'Platinum Reserve', + 'min_points' => 5000, + 'multiplier' => 2.0, + 'benefits' => [ + 'Earn 2 points per $1 spent', + 'Free express shipping', + 'VIP early access to everything', + 'Annual free bag of premium coffee', + 'Dedicated account manager', + 'Exclusive tasting events' + ], + 'color' => '#E5E4E2', + 'icon' => 'fa-gem' + ] + ]; + + // Points redemption rates + private float $pointsToValue = 0.01; // 1 point = $0.01 (100 points = $1) + + /** + * Get all tier definitions + */ + public function getTiers(): array { + return $this->tiers; + } + + /** + * Get a specific tier + */ + public function getTier(string $tierKey): ?array { + return $this->tiers[$tierKey] ?? null; + } + + /** + * Determine customer's tier based on total points earned (lifetime) + */ + public function calculateTier(int $lifetimePoints): string { + $currentTier = 'bronze'; + + foreach ($this->tiers as $key => $tier) { + if ($lifetimePoints >= $tier['min_points']) { + $currentTier = $key; + } + } + + return $currentTier; + } + + /** + * Get customer's current tier info + */ + public function getCustomerTier(string $customerId): array { + $customer = db()->fetch( + "SELECT reward_points, lifetime_points, loyalty_tier FROM customers WHERE customer_id = :id", + ['id' => $customerId] + ); + + if (!$customer) { + return ['tier' => 'bronze', 'info' => $this->tiers['bronze'], 'points' => 0]; + } + + $lifetimePoints = $customer['lifetime_points'] ?? $customer['reward_points'] ?? 0; + $tierKey = $this->calculateTier($lifetimePoints); + $tier = $this->tiers[$tierKey]; + + // Calculate progress to next tier + $nextTierKey = $this->getNextTier($tierKey); + $nextTier = $nextTierKey ? $this->tiers[$nextTierKey] : null; + + $progress = 100; + $pointsToNext = 0; + + if ($nextTier) { + $currentMin = $tier['min_points']; + $nextMin = $nextTier['min_points']; + $pointsToNext = $nextMin - $lifetimePoints; + $progress = min(100, (($lifetimePoints - $currentMin) / ($nextMin - $currentMin)) * 100); + } + + return [ + 'tier' => $tierKey, + 'info' => $tier, + 'points' => $customer['reward_points'] ?? 0, + 'lifetime_points' => $lifetimePoints, + 'next_tier' => $nextTierKey, + 'next_tier_info' => $nextTier, + 'points_to_next' => $pointsToNext, + 'progress_percent' => round($progress, 1) + ]; + } + + /** + * Get next tier key + */ + private function getNextTier(string $currentTier): ?string { + $keys = array_keys($this->tiers); + $index = array_search($currentTier, $keys); + + return isset($keys[$index + 1]) ? $keys[$index + 1] : null; + } + + /** + * Award points for a purchase + */ + public function awardPoints(string $customerId, float $amount, string $description = 'Purchase'): array { + $customerTier = $this->getCustomerTier($customerId); + $multiplier = $customerTier['info']['multiplier']; + + // Calculate points (base: 1 point per dollar) + $basePoints = floor($amount); + $bonusPoints = floor($basePoints * ($multiplier - 1)); + $totalPoints = $basePoints + $bonusPoints; + + // Update customer points + db()->query( + "UPDATE customers SET + reward_points = reward_points + :points, + lifetime_points = COALESCE(lifetime_points, 0) + :points, + updated_at = NOW() + WHERE customer_id = :id", + ['points' => $totalPoints, 'id' => $customerId] + ); + + // Log the transaction + db()->insert('loyalty_transactions', [ + 'transaction_id' => generateId('lt_'), + 'customer_id' => $customerId, + 'points' => $totalPoints, + 'type' => 'earn', + 'description' => $description . ($bonusPoints > 0 ? " (+{$bonusPoints} bonus)" : ''), + 'reference_amount' => $amount + ]); + + // Check for tier upgrade + $newTier = $this->checkTierUpgrade($customerId, $customerTier['tier']); + + return [ + 'points_earned' => $totalPoints, + 'base_points' => $basePoints, + 'bonus_points' => $bonusPoints, + 'multiplier' => $multiplier, + 'tier_upgraded' => $newTier !== null, + 'new_tier' => $newTier + ]; + } + + /** + * Redeem points for credit + */ + public function redeemPoints(string $customerId, int $points): array { + $customer = db()->fetch( + "SELECT reward_points FROM customers WHERE customer_id = :id", + ['id' => $customerId] + ); + + if (!$customer || $customer['reward_points'] < $points) { + return ['success' => false, 'error' => 'Insufficient points']; + } + + $creditValue = $points * $this->pointsToValue; + + // Deduct points + db()->query( + "UPDATE customers SET reward_points = reward_points - :points, updated_at = NOW() WHERE customer_id = :id", + ['points' => $points, 'id' => $customerId] + ); + + // Log the redemption + db()->insert('loyalty_transactions', [ + 'transaction_id' => generateId('lt_'), + 'customer_id' => $customerId, + 'points' => -$points, + 'type' => 'redeem', + 'description' => "Redeemed for " . formatCurrency($creditValue) . " credit", + 'reference_amount' => $creditValue + ]); + + // Add to wallet + $newBalance = db()->fetch( + "SELECT wallet_balance FROM customers WHERE customer_id = :id", + ['id' => $customerId] + )['wallet_balance'] ?? 0; + + $newBalance += $creditValue; + + db()->query( + "UPDATE customers SET wallet_balance = :balance WHERE customer_id = :id", + ['balance' => $newBalance, 'id' => $customerId] + ); + + // Log wallet transaction + db()->insert('wallet_transactions', [ + 'transaction_id' => generateId('wt_'), + 'customer_id' => $customerId, + 'amount' => $creditValue, + 'balance_after' => $newBalance, + 'type' => 'loyalty_redemption', + 'description' => "Redeemed {$points} loyalty points" + ]); + + return [ + 'success' => true, + 'points_redeemed' => $points, + 'credit_value' => $creditValue, + 'new_points_balance' => $customer['reward_points'] - $points, + 'new_wallet_balance' => $newBalance + ]; + } + + /** + * Check and process tier upgrade + */ + public function checkTierUpgrade(string $customerId, string $currentTier): ?string { + $customer = db()->fetch( + "SELECT lifetime_points, loyalty_tier FROM customers WHERE customer_id = :id", + ['id' => $customerId] + ); + + if (!$customer) { + return null; + } + + $calculatedTier = $this->calculateTier($customer['lifetime_points'] ?? 0); + $storedTier = $customer['loyalty_tier'] ?? 'bronze'; + + // Compare tier levels + $tierOrder = ['bronze', 'silver', 'gold', 'platinum']; + $calculatedIndex = array_search($calculatedTier, $tierOrder); + $storedIndex = array_search($storedTier, $tierOrder); + + if ($calculatedIndex > $storedIndex) { + // Upgrade! + db()->query( + "UPDATE customers SET loyalty_tier = :tier, updated_at = NOW() WHERE customer_id = :id", + ['tier' => $calculatedTier, 'id' => $customerId] + ); + + // Log the upgrade + db()->insert('loyalty_transactions', [ + 'transaction_id' => generateId('lt_'), + 'customer_id' => $customerId, + 'points' => 0, + 'type' => 'tier_upgrade', + 'description' => "Upgraded from {$this->tiers[$storedTier]['name']} to {$this->tiers[$calculatedTier]['name']}" + ]); + + // Send notifications + $this->sendTierUpgradeNotifications($customerId, $calculatedTier); + + return $calculatedTier; + } + + return null; + } + + /** + * Send tier upgrade notifications + */ + private function sendTierUpgradeNotifications(string $customerId, string $newTier): void { + $customer = db()->fetch( + "SELECT email, phone, name FROM customers WHERE customer_id = :id", + ['id' => $customerId] + ); + + if (!$customer) return; + + $tierInfo = $this->tiers[$newTier]; + + // Send email notification + if (!empty($customer['email'])) { + require_once __DIR__ . '/email.php'; + // Custom email for tier upgrade would go here + } + + // Send SMS notification + if (!empty($customer['phone'])) { + require_once __DIR__ . '/sms.php'; + sendSMS()->sendTierUpgrade($customer['phone'], $tierInfo['name']); + } + + // Send push notification + require_once __DIR__ . '/push.php'; + pushNotify()->sendTierNotification($customerId, $tierInfo['name'], $tierInfo['benefits']); + } + + /** + * Get points conversion info + */ + public function getConversionInfo(): array { + return [ + 'points_per_dollar' => 1, + 'points_value' => $this->pointsToValue, + 'points_for_one_dollar' => intval(1 / $this->pointsToValue), + 'description' => 'Earn 1 point for every $1 spent. Redeem 100 points for $1 credit.' + ]; + } + + /** + * Get customer's loyalty history + */ + public function getHistory(string $customerId, int $limit = 20): array { + return db()->fetchAll( + "SELECT * FROM loyalty_transactions WHERE customer_id = :id ORDER BY created_at DESC LIMIT :limit", + ['id' => $customerId, 'limit' => $limit] + ); + } + + /** + * Award birthday bonus + */ + public function awardBirthdayBonus(string $customerId): array { + $customerTier = $this->getCustomerTier($customerId); + + // Bonus points based on tier + $bonusPoints = match($customerTier['tier']) { + 'platinum' => 500, + 'gold' => 300, + 'silver' => 200, + default => 100 + }; + + db()->query( + "UPDATE customers SET reward_points = reward_points + :points WHERE customer_id = :id", + ['points' => $bonusPoints, 'id' => $customerId] + ); + + db()->insert('loyalty_transactions', [ + 'transaction_id' => generateId('lt_'), + 'customer_id' => $customerId, + 'points' => $bonusPoints, + 'type' => 'birthday_bonus', + 'description' => "Birthday reward - Happy Birthday!" + ]); + + return ['success' => true, 'points' => $bonusPoints]; + } + + /** + * Award referral bonus + */ + public function awardReferralBonus(string $referrerId, string $newCustomerId): array { + $referrerBonus = 100; + $newCustomerBonus = 50; + + // Award to referrer + db()->query( + "UPDATE customers SET reward_points = reward_points + :points WHERE customer_id = :id", + ['points' => $referrerBonus, 'id' => $referrerId] + ); + + db()->insert('loyalty_transactions', [ + 'transaction_id' => generateId('lt_'), + 'customer_id' => $referrerId, + 'points' => $referrerBonus, + 'type' => 'referral_bonus', + 'description' => "Referral bonus - Thank you for spreading the word!" + ]); + + // Award to new customer + db()->query( + "UPDATE customers SET reward_points = reward_points + :points WHERE customer_id = :id", + ['points' => $newCustomerBonus, 'id' => $newCustomerId] + ); + + db()->insert('loyalty_transactions', [ + 'transaction_id' => generateId('lt_'), + 'customer_id' => $newCustomerId, + 'points' => $newCustomerBonus, + 'type' => 'referral_welcome', + 'description' => "Welcome bonus from referral" + ]); + + return [ + 'referrer_bonus' => $referrerBonus, + 'new_customer_bonus' => $newCustomerBonus + ]; + } +} + +// Helper function +function loyalty(): LoyaltyProgram { + static $instance = null; + if ($instance === null) { + $instance = new LoyaltyProgram(); + } + return $instance; +} diff --git a/includes/push.php b/includes/push.php new file mode 100644 index 0000000..d102c4e --- /dev/null +++ b/includes/push.php @@ -0,0 +1,181 @@ +publicKey = getSetting('vapid_public_key', 'YOUR_VAPID_PUBLIC_KEY'); + $this->privateKey = getSetting('vapid_private_key', 'YOUR_VAPID_PRIVATE_KEY'); + $this->subject = 'mailto:' . getSetting('admin_email', 'admin@tomsjavajive.com'); + } + + /** + * Get VAPID public key for client + */ + public function getPublicKey(): string { + return $this->publicKey; + } + + /** + * Send push notification to a subscription + */ + public function send(array $subscription, string $title, string $body, array $options = []): array { + $payload = json_encode([ + 'title' => $title, + 'body' => $body, + 'icon' => $options['icon'] ?? '/assets/icons/icon-192.png', + 'badge' => $options['badge'] ?? '/assets/icons/badge-72.png', + 'url' => $options['url'] ?? '/', + 'tag' => $options['tag'] ?? null, + 'data' => $options['data'] ?? [] + ]); + + // For now, we'll store notifications for when the user comes online + // Full web push requires a library like minishlink/web-push + // This is a simplified version that works with the service worker + + try { + // Store notification for retrieval + $notificationId = generateId('notif_'); + db()->insert('push_notifications', [ + 'notification_id' => $notificationId, + 'subscription_endpoint' => $subscription['endpoint'], + 'payload' => $payload, + 'status' => 'pending', + 'created_at' => date('Y-m-d H:i:s') + ]); + + return ['success' => true, 'notification_id' => $notificationId]; + } catch (Exception $e) { + return ['success' => false, 'error' => $e->getMessage()]; + } + } + + /** + * Send notification to all subscribed users + */ + public function broadcast(string $title, string $body, array $options = []): array { + $subscriptions = db()->fetchAll("SELECT * FROM push_subscriptions WHERE is_active = 1"); + + $results = ['sent' => 0, 'failed' => 0]; + + foreach ($subscriptions as $sub) { + $subscription = [ + 'endpoint' => $sub['endpoint'], + 'keys' => [ + 'p256dh' => $sub['p256dh_key'], + 'auth' => $sub['auth_key'] + ] + ]; + + $result = $this->send($subscription, $title, $body, $options); + + if ($result['success']) { + $results['sent']++; + } else { + $results['failed']++; + } + } + + return $results; + } + + /** + * Send order status update notification + */ + public function sendOrderUpdate(string $customerId, array $order, string $status): array { + $subscription = $this->getCustomerSubscription($customerId); + + if (!$subscription) { + return ['success' => false, 'error' => 'No subscription found']; + } + + $messages = [ + 'confirmed' => "Your order #{$order['order_number']} has been confirmed!", + 'processing' => "We're preparing your order #{$order['order_number']}", + 'shipped' => "Your order #{$order['order_number']} is on its way!", + 'delivered' => "Your order #{$order['order_number']} has been delivered!", + 'ready' => "Your order #{$order['order_number']} is ready for pickup!" + ]; + + return $this->send( + $subscription, + "Order Update", + $messages[$status] ?? "Order #{$order['order_number']} status: {$status}", + [ + 'url' => "/account/order.php?id={$order['order_id']}", + 'tag' => "order-{$order['order_id']}" + ] + ); + } + + /** + * Send promotional notification + */ + public function sendPromotion(string $customerId, string $title, string $message, string $url = '/shop.php'): array { + $subscription = $this->getCustomerSubscription($customerId); + + if (!$subscription) { + return ['success' => false, 'error' => 'No subscription found']; + } + + return $this->send($subscription, $title, $message, ['url' => $url]); + } + + /** + * Send loyalty tier notification + */ + public function sendTierNotification(string $customerId, string $tierName, array $benefits): array { + $subscription = $this->getCustomerSubscription($customerId); + + if (!$subscription) { + return ['success' => false, 'error' => 'No subscription found']; + } + + return $this->send( + $subscription, + "Congratulations! You're now {$tierName}!", + "Enjoy new benefits: " . implode(', ', array_slice($benefits, 0, 2)), + ['url' => '/account/'] + ); + } + + /** + * Get customer's push subscription + */ + private function getCustomerSubscription(string $customerId): ?array { + $sub = db()->fetch( + "SELECT * FROM push_subscriptions WHERE customer_id = :id AND is_active = 1 ORDER BY created_at DESC LIMIT 1", + ['id' => $customerId] + ); + + if (!$sub) { + return null; + } + + return [ + 'endpoint' => $sub['endpoint'], + 'keys' => [ + 'p256dh' => $sub['p256dh_key'], + 'auth' => $sub['auth_key'] + ] + ]; + } +} + +// Helper function for easy access +function pushNotify(): PushNotification { + static $instance = null; + if ($instance === null) { + $instance = new PushNotification(); + } + return $instance; +} diff --git a/includes/sms.php b/includes/sms.php new file mode 100644 index 0000000..513f247 --- /dev/null +++ b/includes/sms.php @@ -0,0 +1,195 @@ +accountSid = getSetting('twilio_account_sid', 'YOUR_TWILIO_ACCOUNT_SID'); + $this->authToken = getSetting('twilio_auth_token', 'YOUR_TWILIO_AUTH_TOKEN'); + $this->fromNumber = getSetting('twilio_phone_number', '+1234567890'); + } + + /** + * Send SMS via Twilio API + */ + public function send(string $to, string $message): array { + // Ensure phone number is in E.164 format + $to = $this->formatPhoneNumber($to); + + if (!$to) { + return ['success' => false, 'error' => 'Invalid phone number']; + } + + $url = "https://api.twilio.com/2010-04-01/Accounts/{$this->accountSid}/Messages.json"; + + $data = [ + 'To' => $to, + 'From' => $this->fromNumber, + 'Body' => $message + ]; + + $ch = curl_init($url); + curl_setopt_array($ch, [ + CURLOPT_POST => true, + CURLOPT_POSTFIELDS => http_build_query($data), + CURLOPT_USERPWD => "{$this->accountSid}:{$this->authToken}", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_TIMEOUT => 30 + ]); + + $response = curl_exec($ch); + $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + $error = curl_error($ch); + curl_close($ch); + + if ($error) { + return ['success' => false, 'error' => $error]; + } + + $result = json_decode($response, true); + + if ($httpCode >= 200 && $httpCode < 300) { + return [ + 'success' => true, + 'sid' => $result['sid'] ?? null, + 'status' => $result['status'] ?? 'queued' + ]; + } + + return [ + 'success' => false, + 'error' => $result['message'] ?? 'Failed to send SMS', + 'code' => $result['code'] ?? $httpCode + ]; + } + + /** + * Format phone number to E.164 format + */ + private function formatPhoneNumber(string $phone): ?string { + // Remove all non-numeric characters except + + $phone = preg_replace('/[^0-9+]/', '', $phone); + + // If already in E.164 format + if (preg_match('/^\+[1-9]\d{1,14}$/', $phone)) { + return $phone; + } + + // US number without country code + if (preg_match('/^1?\d{10}$/', $phone)) { + $phone = preg_replace('/^1?/', '', $phone); + return '+1' . $phone; + } + + return null; + } + + /** + * Send order confirmation SMS + */ + public function sendOrderConfirmation(array $order, string $phone): array { + $message = "Tom's Java Jive: Your order #{$order['order_number']} has been confirmed! " . + "Total: " . formatCurrency($order['total']) . ". " . + "Thank you for your purchase!"; + + return $this->send($phone, $message); + } + + /** + * Send shipping notification SMS + */ + public function sendShippingNotification(array $order, string $phone): array { + $message = "Tom's Java Jive: Your order #{$order['order_number']} has shipped! " . + "Tracking: {$order['tracking_number']}. " . + "Track at: " . ($order['tracking_url'] ?? SITE_URL); + + return $this->send($phone, $message); + } + + /** + * Send delivery notification SMS + */ + public function sendDeliveryNotification(array $order, string $phone): array { + $message = "Tom's Java Jive: Great news! Your order #{$order['order_number']} " . + "has been delivered. Enjoy your coffee!"; + + return $this->send($phone, $message); + } + + /** + * Send password reset SMS + */ + public function sendPasswordResetCode(string $phone, string $code): array { + $message = "Tom's Java Jive: Your password reset code is {$code}. " . + "This code expires in 15 minutes. Don't share it with anyone."; + + return $this->send($phone, $message); + } + + /** + * Send OTP verification SMS + */ + public function sendVerificationCode(string $phone, string $code): array { + $message = "Tom's Java Jive: Your verification code is {$code}. " . + "Valid for 10 minutes."; + + return $this->send($phone, $message); + } + + /** + * Send promotional SMS (with opt-out info) + */ + public function sendPromotion(string $phone, string $promoMessage): array { + $message = "Tom's Java Jive: {$promoMessage} " . + "Reply STOP to unsubscribe."; + + return $this->send($phone, $message); + } + + /** + * Send order ready for pickup SMS + */ + public function sendReadyForPickup(array $order, string $phone): array { + $message = "Tom's Java Jive: Your order #{$order['order_number']} is ready for pickup! " . + "Show this message at the counter."; + + return $this->send($phone, $message); + } + + /** + * Send low wallet balance alert + */ + public function sendLowBalanceAlert(string $phone, float $balance): array { + $message = "Tom's Java Jive: Your wallet balance is " . formatCurrency($balance) . ". " . + "Top up now to continue enjoying fast checkout!"; + + return $this->send($phone, $message); + } + + /** + * Send loyalty tier upgrade notification + */ + public function sendTierUpgrade(string $phone, string $tierName): array { + $message = "Tom's Java Jive: Congratulations! You've reached {$tierName} status! " . + "Enjoy your new benefits and rewards. Thank you for being a loyal customer!"; + + return $this->send($phone, $message); + } +} + +// Helper function for easy access +function sendSMS(): TwilioSMS { + static $instance = null; + if ($instance === null) { + $instance = new TwilioSMS(); + } + return $instance; +} diff --git a/includes/stripe.php b/includes/stripe.php new file mode 100644 index 0000000..e12aab8 --- /dev/null +++ b/includes/stripe.php @@ -0,0 +1,214 @@ +secretKey = $secretKey ?: STRIPE_SECRET_KEY; + } + + /** + * Make a cURL request to Stripe API + */ + private function request($method, $endpoint, $data = []) { + $url = $this->apiBase . $endpoint; + + $ch = curl_init(); + + $headers = [ + 'Authorization: Bearer ' . $this->secretKey, + 'Content-Type: application/x-www-form-urlencoded' + ]; + + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); + curl_setopt($ch, CURLOPT_TIMEOUT, 30); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); + + if ($method === 'POST') { + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); + } elseif ($method === 'GET' && !empty($data)) { + $url .= '?' . http_build_query($data); + curl_setopt($ch, CURLOPT_URL, $url); + } + + $response = curl_exec($ch); + $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + $error = curl_error($ch); + curl_close($ch); + + if ($error) { + throw new Exception('Stripe API Error: ' . $error); + } + + $decoded = json_decode($response, true); + + if ($httpCode >= 400) { + $errorMsg = $decoded['error']['message'] ?? 'Unknown Stripe error'; + throw new Exception($errorMsg); + } + + return $decoded; + } + + /** + * Create a Payment Intent + */ + public function createPaymentIntent($amount, $currency = 'usd', $options = []) { + $data = [ + 'amount' => (int)($amount * 100), // Convert to cents + 'currency' => strtolower($currency), + 'automatic_payment_methods' => ['enabled' => 'true'] + ]; + + if (!empty($options['metadata'])) { + foreach ($options['metadata'] as $key => $value) { + $data["metadata[$key]"] = $value; + } + } + + if (!empty($options['receipt_email'])) { + $data['receipt_email'] = $options['receipt_email']; + } + + if (!empty($options['description'])) { + $data['description'] = $options['description']; + } + + return $this->request('POST', '/payment_intents', $data); + } + + /** + * Retrieve a Payment Intent + */ + public function getPaymentIntent($paymentIntentId) { + return $this->request('GET', '/payment_intents/' . $paymentIntentId); + } + + /** + * Create a Checkout Session (hosted payment page) + */ + public function createCheckoutSession($lineItems, $successUrl, $cancelUrl, $options = []) { + $data = [ + 'mode' => $options['mode'] ?? 'payment', + 'success_url' => $successUrl, + 'cancel_url' => $cancelUrl + ]; + + // Add line items + foreach ($lineItems as $i => $item) { + $data["line_items[$i][price_data][currency]"] = $item['currency'] ?? 'usd'; + $data["line_items[$i][price_data][product_data][name]"] = $item['name']; + $data["line_items[$i][price_data][unit_amount]"] = (int)($item['price'] * 100); + $data["line_items[$i][quantity]"] = $item['quantity'] ?? 1; + + if (!empty($item['description'])) { + $data["line_items[$i][price_data][product_data][description]"] = $item['description']; + } + } + + if (!empty($options['customer_email'])) { + $data['customer_email'] = $options['customer_email']; + } + + if (!empty($options['metadata'])) { + foreach ($options['metadata'] as $key => $value) { + $data["metadata[$key]"] = $value; + } + } + + return $this->request('POST', '/checkout/sessions', $data); + } + + /** + * Retrieve a Checkout Session + */ + public function getCheckoutSession($sessionId) { + return $this->request('GET', '/checkout/sessions/' . $sessionId); + } + + /** + * Verify webhook signature + */ + public function verifyWebhookSignature($payload, $sigHeader, $webhookSecret) { + if (empty($webhookSecret)) { + return true; // Skip verification if secret not configured + } + + $elements = explode(',', $sigHeader); + $timestamp = null; + $signatures = []; + + foreach ($elements as $element) { + $parts = explode('=', $element, 2); + if (count($parts) === 2) { + if ($parts[0] === 't') { + $timestamp = $parts[1]; + } elseif ($parts[0] === 'v1') { + $signatures[] = $parts[1]; + } + } + } + + if (empty($timestamp) || empty($signatures)) { + throw new Exception('Invalid signature format'); + } + + // Check timestamp tolerance (5 minutes) + if (abs(time() - $timestamp) > 300) { + throw new Exception('Timestamp outside tolerance'); + } + + $signedPayload = $timestamp . '.' . $payload; + $expectedSignature = hash_hmac('sha256', $signedPayload, $webhookSecret); + + foreach ($signatures as $sig) { + if (hash_equals($expectedSignature, $sig)) { + return true; + } + } + + throw new Exception('Signature verification failed'); + } + + /** + * Create a refund + */ + public function createRefund($paymentIntentId, $amount = null) { + $data = ['payment_intent' => $paymentIntentId]; + + if ($amount !== null) { + $data['amount'] = (int)($amount * 100); + } + + return $this->request('POST', '/refunds', $data); + } +} + +/** + * Get Stripe instance + */ +function stripe() { + static $stripe = null; + if ($stripe === null) { + $stripe = new StripeAPI(); + } + return $stripe; +} + +/** + * Check if Stripe is properly configured + */ +function isStripeConfigured() { + return !empty(STRIPE_SECRET_KEY) && + STRIPE_SECRET_KEY !== 'sk_test_your_stripe_key' && + !empty(STRIPE_PUBLISHABLE_KEY) && + STRIPE_PUBLISHABLE_KEY !== 'pk_test_your_stripe_key'; +} diff --git a/index.php b/index.php new file mode 100644 index 0000000..47429d3 --- /dev/null +++ b/index.php @@ -0,0 +1,221 @@ +fetchAll( + "SELECT * FROM about_us_sections WHERE is_active = 1 ORDER BY sort_order ASC" +); + +// Get homepage splashes +$splashBlocks = db()->fetchAll( + "SELECT * FROM homepage_splashes WHERE is_active = 1 ORDER BY sort_order ASC, id ASC" +); + +// Get featured products +$featuredProducts = db()->fetchAll( + "SELECT * FROM products WHERE is_active = 1 AND is_featured = 1 ORDER BY created_at DESC LIMIT 4" +); + +// If no featured products, get latest products +if (empty($featuredProducts)) { + $featuredProducts = db()->fetchAll( + "SELECT * FROM products WHERE is_active = 1 ORDER BY created_at DESC LIMIT 4" + ); +} + +$metaTitle = "Fresh Roasted Artisan Coffee | Tom's Java Jive"; +$metaDescription = "Premium artisan coffee beans freshly roasted and delivered to your door. Shop single origin, blends, and specialty coffee from Tom's Java Jive in Weatherford, Texas."; +$metaKeywords = 'artisan coffee beans, fresh roasted coffee, single origin coffee, specialty coffee, Weatherford Texas'; +$canonicalUrl = 'https://tomsjavajive.com/'; +require_once __DIR__ . '/includes/header.php'; +?> + + +
    +
    +

    Premium Coffee, Delivered Fresh

    +

    Artisan roasted coffee beans sourced from the world's finest growing regions. Experience the perfect cup, every time.

    + +
    +
    + + + + 4; ?> +
    +
    + + + +
    + +
    +
    + + <?= htmlspecialchars($sp['title']) ?> + + + +
    +

    +

    +
    + +
    + + + +
    +
    + + + +
    +
    +
    +

    Featured Products

    +

    Our most popular coffee selections

    +
    + +
    + +
    +

    Products coming soon! Check back later.

    + Add Products +
    + + +
    + + <?= htmlspecialchars($product['name']) ?> + + Sale + + +
    + +
    + +

    + +

    +
    + + + + +
    + +
    +
    + + +
    + + +
    +
    + + +
    +
    +
    +
    +

    Our Story

    + + +

    + + +

    + +

    + + + Explore Our Coffee +
    +
    + Coffee brewing +
    +
    +
    +
    + + + + + + + + diff --git a/login.php b/login.php new file mode 100644 index 0000000..db664d4 --- /dev/null +++ b/login.php @@ -0,0 +1,94 @@ + + +
    +
    +
    +
    +

    Welcome Back

    + + +
    + + +
    + + +
    +
    + + +
    + +
    + + +
    + +
    + + Forgot password? +
    + + +
    + +
    + +

    + Don't have an account? Create one +

    + +

    + Or track your order with your order number +

    +
    +
    +
    +
    + + diff --git a/logout.php b/logout.php new file mode 100644 index 0000000..23933be --- /dev/null +++ b/logout.php @@ -0,0 +1,10 @@ + + + + + + Offline - Tom's Java Jive + + + +
    +
    + + + + +
    + +

    You're Offline

    +

    It looks like you've lost your internet connection. Please check your connection and try again.

    + + + +
    +

    Some pages you've visited before may still be available offline.

    +
    +
    + + + + diff --git a/order-confirmation.php b/order-confirmation.php new file mode 100644 index 0000000..6080025 --- /dev/null +++ b/order-confirmation.php @@ -0,0 +1,128 @@ +fetch( + "SELECT * FROM orders WHERE order_id = :id", + ['id' => $orderId] +); + +if (!$order) { + redirect('/'); +} + +// Clear cart and pending order +clearCart(); +unset($_SESSION['pending_order_id']); + +$items = json_decode($order['items'], true) ?? []; +$shippingAddress = json_decode($order['shipping_address'], true) ?? []; + +require_once __DIR__ . '/includes/header.php'; +?> + +
    +
    +
    +
    +
    + +
    + +

    Thank You!

    +

    + Your order has been placed successfully. +

    + +
    +
    + Order Number + +
    + +
    + Status + + + +
    + +
    + Total + +
    +
    + +
    +

    Order Details

    + + +
    + + + x + + +
    + + +
    + Subtotal + +
    + +
    + Shipping + 0 ? formatCurrency($order['shipping_cost']) : 'FREE' ?> +
    + +
    + Total + +
    +
    + +
    +

    Shipping Address

    +

    +
    +
    + , + + +

    +
    + +

    + A confirmation email has been sent to . + You will receive tracking information once your order ships. +

    + + +
    +
    +
    +
    + + diff --git a/payment.php b/payment.php new file mode 100644 index 0000000..36ed4be --- /dev/null +++ b/payment.php @@ -0,0 +1,287 @@ +fetch( + "SELECT * FROM orders WHERE order_id = :id", + ['id' => $orderId] +); + +if (!$order) { + redirect('/cart.php'); +} + +// If already paid, redirect to confirmation +if ($order['payment_status'] === 'paid') { + clearCart(); + redirect('/order-confirmation.php?order=' . $orderId); +} + +$stripePublishableKey = STRIPE_PUBLISHABLE_KEY; +$stripeConfigured = isStripeConfigured(); +$total = $order['total']; + +require_once __DIR__ . '/includes/header.php'; +?> + +
    +
    +
    +
    +

    Complete Payment

    +
    +
    + +
    + Payment was cancelled. Please try again. +
    + + +
    +
    + Order # + +
    +

    + +

    +
    + + + +
    + Demo Mode: Stripe is not configured. Click below to simulate a successful payment. +
    +
    + +
    + + +
    + +

    or enter card details below

    +
    + +
    +
    + +
    +
    +
    + + +
    + + + + +

    + Your payment is secure and encrypted +

    +
    +
    +
    +
    + + + + diff --git a/product.php b/product.php new file mode 100644 index 0000000..a7170ee --- /dev/null +++ b/product.php @@ -0,0 +1,252 @@ +fetch( + "SELECT * FROM products WHERE product_id = :id AND is_active = 1", + ['id' => $productId] +); + +if (!$product) { + header('Location: /shop.php'); + exit; +} + +$pageTitle = $product['name'] . " - Tom's Java Jive"; +$pageDescription = truncate(strip_tags($product['description']), 160); + +// Get product reviews +$reviews = db()->fetchAll( + "SELECT * FROM reviews WHERE product_id = :id AND is_approved = 1 ORDER BY created_at DESC LIMIT 10", + ['id' => $productId] +); + +$avgRating = 0; +$reviewCount = count($reviews); +if ($reviewCount > 0) { + $avgRating = array_sum(array_column($reviews, 'rating')) / $reviewCount; +} + +// Get related products +$relatedProducts = db()->fetchAll( + "SELECT * FROM products WHERE category = :category AND product_id != :id AND is_active = 1 LIMIT 4", + ['category' => $product['category'], 'id' => $productId] +); + +$images = json_decode($product['images'] ?? '[]', true); +$mainImage = !empty($images) ? $images[0] : '/assets/images/placeholder-product.svg'; +$salePrice = $product['sale_price']; +$price = $product['price']; +$inStock = $product['stock'] > 0; + +require_once __DIR__ . '/includes/header.php'; +?> + +
    +
    +
    + + +
    +
    + <?= htmlspecialchars($product['name']) ?> +
    + + 1): ?> +
    + $img): ?> + Product image <?= $index + 1 ?> + +
    + +
    + + +
    + +

    + + + +

    + + +

    + + + 0): ?> +
    +
    + + + +
    + ( reviews) +
    + + + +
    + + + + + Save % + + + + +
    + + +

    + + In Stock + + - Only left! + + + Out of Stock + +

    + + + +
    +
    +
    + + + +
    +
    + + +
    + + + + + +
    +

    Description

    +
    + +
    +
    + + +
    +

    Product Details

    + + + + + + + + + + + + + + + + + +
    SKU
    Weight oz
    Category
    +
    +
    +
    + + +
    +

    Customer Reviews

    + + +
    + +
    +
    +
    +
    + + + + Verified Purchase + + +
    + +
    +
    + + + +
    + +

    + +

    +
    +
    + +
    + +

    No reviews yet. Be the first to review this product!

    + +
    + + + +
    +

    Related Products

    + +
    + +
    +
    + + diff --git a/register.php b/register.php new file mode 100644 index 0000000..c399ceb --- /dev/null +++ b/register.php @@ -0,0 +1,131 @@ +fetch("SELECT id FROM email_subscribers WHERE email = :email", ['email' => strtolower($email)]); + if (!$existing) { + db()->insert('email_subscribers', [ + 'email' => strtolower($email), + 'name' => $name, + 'source' => 'registration' + ]); + } + } + + setFlash('success', 'Welcome! Your account has been created.'); + redirect('/account/'); + } + } +} + +$metaTitle = "Create Account | Tom's Java Jive"; +$metaDescription = 'Create an account to earn rewards, track orders, and get exclusive deals.'; +$metaKeywords = 'coffee loyalty rewards, coffee subscription account'; +$canonicalUrl = 'https://tomsjavajive.com/register.php'; +require_once __DIR__ . '/includes/header.php'; +?> + +
    +
    +
    +
    +

    Create Your Account

    + + +
    + + +
    + + +
    +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + + + Minimum 8 characters +
    + +
    + + +
    + +
    + +
    + + +
    + +
    + +

    + Already have an account? Sign in +

    +
    +
    +
    +
    + + diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..4eb8727 --- /dev/null +++ b/robots.txt @@ -0,0 +1,11 @@ +User-agent: * +Allow: / +Disallow: /admin/ +Disallow: /account/ +Disallow: /api/ +Disallow: /cart.php +Disallow: /checkout.php +Disallow: /payment.php +Disallow: /config/ +Disallow: /install/ +Sitemap: https://tomsjavajive.com/sitemap.xml diff --git a/shop.php b/shop.php new file mode 100644 index 0000000..2afee2c --- /dev/null +++ b/shop.php @@ -0,0 +1,170 @@ + 'COALESCE(sale_price, price) ASC', + 'price_high' => 'COALESCE(sale_price, price) DESC', + 'name' => 'name ASC', + default => 'created_at DESC' +}; + +// Get total count +$totalProducts = db()->count('products', $whereClause, $params); +$pagination = paginate($totalProducts, $page, 12); + +// Get products +$products = db()->fetchAll( + "SELECT * FROM products WHERE {$whereClause} ORDER BY {$orderBy} LIMIT :limit OFFSET :offset", + array_merge($params, ['limit' => $pagination['per_page'], 'offset' => $pagination['offset']]) +); + +// Get categories for filter +$categories = db()->fetchAll( + "SELECT DISTINCT category FROM products WHERE category IS NOT NULL AND category != '' AND is_active = 1 ORDER BY category" +); + +$metaTitle = "Shop Premium Coffee Beans | Tom's Java Jive"; +$metaDescription = 'Browse our selection of premium artisan coffee beans. Single origin, blends, light, medium and dark roasts. Free shipping over $50.'; +$metaKeywords = 'buy coffee beans online, artisan coffee, single origin, blends, light roast, dark roast'; +$canonicalUrl = 'https://tomsjavajive.com/shop.php'; +require_once __DIR__ . '/includes/header.php'; +$productTypesList = db()->fetchAll("SELECT type_id, name, slug FROM product_types WHERE is_active=1 ORDER BY sort_order ASC"); + +?> + + +
    +
    +

    Our Coffee Collection

    +

    Discover your perfect brew from our selection of premium coffees

    +
    +
    + +
    +
    + +
    +
    + All + + + + + +
    + +
    +
    + + + + + +
    + + +
    +
    + + +

    + Showing of products + +

    + + + +
    + +

    No products found

    +

    Try adjusting your search or filters

    + View All Products +
    + +
    + +
    + + <?= htmlspecialchars($product['name']) ?> + + Sale + + Featured + + +
    + +
    + +

    + +

    +
    + + + + +
    + +
    +
    + +
    + + + 1): ?> +
    + + + + + +
    + + +
    +
    + + diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..7a7b66c --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,6 @@ + + + https://tomsjavajive.com/2026-05-19weekly1.0 + https://tomsjavajive.com/shop.php2026-05-19daily0.9 + https://tomsjavajive.com/register.php2026-05-19monthly0.4 + \ No newline at end of file diff --git a/sw.js b/sw.js new file mode 100644 index 0000000..6145bc2 --- /dev/null +++ b/sw.js @@ -0,0 +1,269 @@ +const CACHE_NAME = 'tomsjavajive-v1'; +const STATIC_CACHE = 'tomsjavajive-static-v1'; +const DYNAMIC_CACHE = 'tomsjavajive-dynamic-v1'; + +// Static assets to cache immediately +const STATIC_ASSETS = [ + '/', + '/shop.php', + '/cart.php', + '/assets/css/style.css', + '/assets/js/main.js', + '/assets/images/logo.png', + '/manifest.json', + '/offline.html' +]; + +// Install event - cache static assets +self.addEventListener('install', (event) => { + console.log('[Service Worker] Installing...'); + + event.waitUntil( + caches.open(STATIC_CACHE) + .then((cache) => { + console.log('[Service Worker] Caching static assets'); + return cache.addAll(STATIC_ASSETS.map(url => { + return new Request(url, { cache: 'no-cache' }); + })).catch(err => { + console.log('[Service Worker] Some assets failed to cache:', err); + return Promise.resolve(); + }); + }) + .then(() => self.skipWaiting()) + ); +}); + +// Activate event - clean up old caches +self.addEventListener('activate', (event) => { + console.log('[Service Worker] Activating...'); + + event.waitUntil( + caches.keys().then((cacheNames) => { + return Promise.all( + cacheNames + .filter((cacheName) => { + return cacheName !== STATIC_CACHE && + cacheName !== DYNAMIC_CACHE && + cacheName.startsWith('tomsjavajive-'); + }) + .map((cacheName) => { + console.log('[Service Worker] Deleting old cache:', cacheName); + return caches.delete(cacheName); + }) + ); + }) + .then(() => self.clients.claim()) + ); +}); + +// Fetch event - serve from cache or network +self.addEventListener('fetch', (event) => { + const { request } = event; + const url = new URL(request.url); + + // Skip non-GET requests + if (request.method !== 'GET') { + return; + } + + // Skip admin panel + if (url.pathname.startsWith('/admin')) { + return; + } + + // Skip API requests (always network) + if (url.pathname.startsWith('/api')) { + return; + } + + // Handle navigation requests + if (request.mode === 'navigate') { + event.respondWith( + fetch(request) + .then((response) => { + // Clone and cache the response + const responseClone = response.clone(); + caches.open(DYNAMIC_CACHE).then((cache) => { + cache.put(request, responseClone); + }); + return response; + }) + .catch(() => { + // Try to serve from cache + return caches.match(request) + .then((cachedResponse) => { + if (cachedResponse) { + return cachedResponse; + } + // Serve offline page + return caches.match('/offline.html'); + }); + }) + ); + return; + } + + // Handle static assets (cache-first strategy) + if (isStaticAsset(url.pathname)) { + event.respondWith( + caches.match(request) + .then((cachedResponse) => { + if (cachedResponse) { + // Fetch in background to update cache + fetch(request).then((response) => { + if (response.ok) { + caches.open(STATIC_CACHE).then((cache) => { + cache.put(request, response); + }); + } + }).catch(() => {}); + + return cachedResponse; + } + + return fetch(request).then((response) => { + if (response.ok) { + const responseClone = response.clone(); + caches.open(STATIC_CACHE).then((cache) => { + cache.put(request, responseClone); + }); + } + return response; + }); + }) + ); + return; + } + + // Handle images (cache-first with network fallback) + if (isImageRequest(request)) { + event.respondWith( + caches.match(request) + .then((cachedResponse) => { + if (cachedResponse) { + return cachedResponse; + } + + return fetch(request) + .then((response) => { + if (response.ok) { + const responseClone = response.clone(); + caches.open(DYNAMIC_CACHE).then((cache) => { + cache.put(request, responseClone); + }); + } + return response; + }) + .catch(() => { + // Return placeholder image + return caches.match('/assets/images/placeholder-product.svg'); + }); + }) + ); + return; + } + + // Default: network-first with cache fallback + event.respondWith( + fetch(request) + .then((response) => { + if (response.ok) { + const responseClone = response.clone(); + caches.open(DYNAMIC_CACHE).then((cache) => { + cache.put(request, responseClone); + }); + } + return response; + }) + .catch(() => { + return caches.match(request); + }) + ); +}); + +// Helper functions +function isStaticAsset(pathname) { + return pathname.match(/\.(css|js|woff|woff2|ttf|eot)$/i); +} + +function isImageRequest(request) { + return request.destination === 'image' || + request.url.match(/\.(png|jpg|jpeg|gif|svg|webp|ico)$/i); +} + +// Push notification handling +self.addEventListener('push', (event) => { + console.log('[Service Worker] Push received'); + + let data = { title: "Tom's Java Jive", body: 'You have a new notification!' }; + + if (event.data) { + try { + data = event.data.json(); + } catch (e) { + data.body = event.data.text(); + } + } + + const options = { + body: data.body, + icon: '/assets/icons/icon-192.png', + badge: '/assets/icons/badge-72.png', + vibrate: [100, 50, 100], + data: { + url: data.url || '/' + }, + actions: [ + { action: 'view', title: 'View' }, + { action: 'close', title: 'Close' } + ] + }; + + event.waitUntil( + self.registration.showNotification(data.title, options) + ); +}); + +// Notification click handling +self.addEventListener('notificationclick', (event) => { + console.log('[Service Worker] Notification clicked'); + + event.notification.close(); + + if (event.action === 'close') { + return; + } + + const url = event.notification.data?.url || '/'; + + event.waitUntil( + clients.matchAll({ type: 'window', includeUncontrolled: true }) + .then((clientList) => { + // Focus existing window if available + for (const client of clientList) { + if (client.url === url && 'focus' in client) { + return client.focus(); + } + } + // Open new window + if (clients.openWindow) { + return clients.openWindow(url); + } + }) + ); +}); + +// Background sync for cart/orders +self.addEventListener('sync', (event) => { + console.log('[Service Worker] Background sync:', event.tag); + + if (event.tag === 'sync-cart') { + event.waitUntil(syncCart()); + } +}); + +async function syncCart() { + // Get pending cart actions from IndexedDB + // and sync with server + console.log('[Service Worker] Syncing cart...'); +}