From 5f5b81518dd7b4bc673e002825073e36b1ae1218 Mon Sep 17 00:00:00 2001 From: Maria Date: Wed, 28 Jan 2026 18:34:45 +0300 Subject: [PATCH 1/2] feat: implement lab01 devops info service --- app_go/README.md | 130 +++++++++ app_go/docs/GO.md | 22 ++ app_go/docs/LAB01.md | 168 ++++++++++++ .../docs/screenshots/01-go-main-endpoint.png | Bin 0 -> 105123 bytes .../docs/screenshots/02-go-health-check.png | Bin 0 -> 24703 bytes app_go/go.mod | 5 + app_go/main.go | 198 ++++++++++++++ app_python/.gitignore | 32 +++ app_python/README.md | 174 ++++++++++++ app_python/app.py | 164 ++++++++++++ app_python/docs/LAB01.md | 250 ++++++++++++++++++ .../docs/screenshots/01-main-endpoint.png | Bin 0 -> 113994 bytes .../docs/screenshots/02-health-check.png | Bin 0 -> 41695 bytes .../docs/screenshots/03-formatted-output.png | Bin 0 -> 105094 bytes app_python/requirements.txt | 1 + app_python/tests/__init__.py | 0 16 files changed, 1144 insertions(+) create mode 100644 app_go/README.md create mode 100644 app_go/docs/GO.md create mode 100644 app_go/docs/LAB01.md create mode 100644 app_go/docs/screenshots/01-go-main-endpoint.png create mode 100644 app_go/docs/screenshots/02-go-health-check.png create mode 100644 app_go/go.mod create mode 100644 app_go/main.go create mode 100644 app_python/.gitignore create mode 100644 app_python/README.md create mode 100644 app_python/app.py create mode 100644 app_python/docs/LAB01.md create mode 100644 app_python/docs/screenshots/01-main-endpoint.png create mode 100644 app_python/docs/screenshots/02-health-check.png create mode 100644 app_python/docs/screenshots/03-formatted-output.png create mode 100644 app_python/requirements.txt create mode 100644 app_python/tests/__init__.py diff --git a/app_go/README.md b/app_go/README.md new file mode 100644 index 0000000000..bb24ab550e --- /dev/null +++ b/app_go/README.md @@ -0,0 +1,130 @@ +# DevOps Info Service (Go) + +## Overview + +This is a Go implementation of the **DevOps Info Service**, providing the same two endpoints as the Python version: + +- `GET /` — service, system, runtime, request information, and a list of endpoints +- `GET /health` — simple health status with uptime + +The service is designed for use in DevOps labs and multi-stage Docker builds. + +## Prerequisites + +- Go 1.22+ installed (`go version`) +- macOS / Linux / WSL (or any OS supported by Go) + +## Project Structure + +```text +app_go/ + ├── main.go + ├── go.mod + ├── README.md + └── docs/ + ├── LAB01.md + ├── GO.md + └── screenshots/ +``` + +## Configuration + +Environment variables: + +| Variable | Default | Description | +|----------|----------|------------------------------| +| HOST | 0.0.0.0 | Address to bind the service | +| PORT | 8080 | Port to listen on | + +## Running the Service (development) + +From the `app_go` directory: + +```bash +go run main.go +``` + +With custom host/port: + +```bash +HOST=127.0.0.1 PORT=9090 go run main.go +``` + +## Building the Binary + +From the `app_go` directory: + +```bash +go build -o devops-info-service-go +``` + +Run the binary: + +```bash +./devops-info-service-go +``` + +Or with custom config: + +```bash +HOST=127.0.0.1 PORT=8080 ./devops-info-service-go +``` + +## API Endpoints + +### GET / + +**Request:** + +```bash +curl -s http://127.0.0.1:8080/ | python3 -m json.tool +``` + +Returns JSON with: + +- `service` — name, version, description, framework (`net/http`) +- `system` — hostname, platform, architecture, CPU count, Go version +- `runtime` — uptime, current time (UTC), timezone +- `request` — client_ip, user_agent, method, path +- `endpoints` — list of available endpoints + +### GET /health + +**Request:** + +```bash +curl -s http://127.0.0.1:8080/health | python3 -m json.tool +``` + +Returns JSON: + +```json +{ + "status": "healthy", + "timestamp": "2026-01-28T13:17:37.656980Z", + "uptime_seconds": 123 +} +``` + +## Binary Size vs Python + +To compare the Go binary size to the Python version: + +1. **Build the Go binary:** + + ```bash + cd app_go + go build -o devops-info-service-go + ls -lh devops-info-service-go + ``` + +2. **Check approximate footprint of the Python app:** + + ```bash + cd ../app_python + du -sh venv + ``` + +In a typical setup, the single Go binary is much smaller and self-contained compared to the full Python virtual environment, which makes Go attractive for small container images and multi-stage Docker builds. + + diff --git a/app_go/docs/GO.md b/app_go/docs/GO.md new file mode 100644 index 0000000000..bf3eba484e --- /dev/null +++ b/app_go/docs/GO.md @@ -0,0 +1,22 @@ +# GO.md — Why Go for the Bonus Task + +## Why Go + +Go is a compiled, statically typed language designed for building simple, fast, and reliable network services — which matches this lab perfectly. + +Key reasons for choosing Go: + +- **Small, self-contained binaries** — easy to ship in Docker images and ideal for multi-stage builds. +- **Fast compilation** — quick feedback loop while developing. +- **Standard library HTTP server** — `net/http` provides everything needed for simple REST-style services. +- **Cross-platform** — the same code works on macOS, Linux, and Windows with minimal changes. + +## Comparison with Python Version + +- **Startup**: the Go binary starts instantly, without requiring a virtual environment or interpreter. +- **Deployment**: shipping a single binary is often simpler than managing Python + dependencies. +- **Docker**: multi-stage builds can produce very small final images for Go services. + +The Python implementation is still excellent for readability, teaching concepts, and rapid prototyping, while the Go version is closer to how small production microservices are often packaged for containers. + + diff --git a/app_go/docs/LAB01.md b/app_go/docs/LAB01.md new file mode 100644 index 0000000000..f272f098f8 --- /dev/null +++ b/app_go/docs/LAB01.md @@ -0,0 +1,168 @@ +# LAB01 — DevOps Info Service (Go Implementation) + +## Overview + +This document describes the Go implementation of the **DevOps Info Service** as a compiled-language bonus for Lab 1. +The Go service exposes the same two endpoints as the Python version: + +- `GET /` — full service, system, runtime, and request information +- `GET /health` — minimal health status and uptime + +The implementation is located in `app_go/main.go`. + +## Endpoint Behavior + +### GET `/` + +Returns JSON with the following structure: + +- `service` +- `system` +- `runtime` +- `request` +- `endpoints` + +Example usage: + +```bash +curl -s http://127.0.0.1:8080/ | python3 -m json.tool +``` + +### GET `/health` + +Returns a lightweight health payload: + +- `status` +- `timestamp` +- `uptime_seconds` + +Example usage: + +```bash +curl -s http://127.0.0.1:8080/health | python3 -m json.tool +``` + +## Testing Evidence (Go) + +Screenshots are stored in `app_go/docs/screenshots/` and show the Go implementation in action: + +- **Main endpoint JSON (`GET /`)** + ![Go main endpoint JSON](./screenshots/01-go-main-endpoint.png) + +- **Health check (`GET /health`)** + ![Go health check](./screenshots/02-go-health-check.png) + +## Implementation Details + +Key parts of the Go implementation: + +- **Structs** are defined for `Service`, `System`, `RuntimeInfo`, `RequestInfo`, `Endpoint`, and `HealthResponse`. +- **Global `startTime`** is used to compute uptime, similar to the Python version. +- **Environment variables**: + - `HOST` (default `0.0.0.0`) + - `PORT` (default `8080`) + +```startLine:endLine:DevOps-Core-Course/app_go/main.go +// Service metadata +type Service struct { + Name string `json:"name"` + Version string `json:"version"` + Description string `json:"description"` + Framework string `json:"framework"` +} +``` + +```startLine:endLine:DevOps-Core-Course/app_go/main.go +var ( + startTime = time.Now().UTC() + logger = log.New(os.Stdout, "", log.LstdFlags) +) +``` + +```startLine:endLine:DevOps-Core-Course/app_go/main.go +func indexHandler(w http.ResponseWriter, r *http.Request) { + logger.Printf("Handling request: %s %s", r.Method, r.URL.Path) + + uptimeSeconds, uptimeHuman := getUptime() + + response := RootResponse{ + // ... + } + + w.Header().Set("Content-Type", "application/json") + if err := json.NewEncoder(w).Encode(response); err != nil { + logger.Printf("ERROR encoding JSON response: %v", err) + http.Error(w, "Internal Server Error", http.StatusInternalServerError) + } +} +``` + +```startLine:endLine:DevOps-Core-Course/app_go/main.go +func main() { + logger.Println("DevOps Info Service (Go) starting...") + + http.HandleFunc("/", indexHandler) + http.HandleFunc("/health", healthHandler) + + host := os.Getenv("HOST") + if host == "" { + host = "0.0.0.0" + } + + port := os.Getenv("PORT") + if port == "" { + port = "8080" + } + + addr := host + ":" + port + logger.Printf("Listening on %s", addr) + + if err := http.ListenAndServe(addr, nil); err != nil { + logger.Fatalf("Server failed: %v", err) + } +} +``` + +## Build and Run Instructions + +From the `app_go` directory: + +```bash +go run main.go +``` + +Or build and run: + +```bash +go build -o devops-info-service-go +./devops-info-service-go +``` + +With custom host/port: + +```bash +HOST=127.0.0.1 PORT=9090 ./devops-info-service-go +``` + +## Binary Size Comparison + +Suggested steps to compare Go vs Python: + +1. **Go binary:** + + ```bash + cd app_go + go build -o devops-info-service-go + ls -lh devops-info-service-go + ``` + +2. **Python app footprint:** + + ```bash + cd ../app_python + du -sh venv + ``` + +The Go binary will typically be a single file (tens of MB by default, smaller with build flags) while the Python environment will include many dependencies, which is important when optimizing container image size. + + diff --git a/app_go/docs/screenshots/01-go-main-endpoint.png b/app_go/docs/screenshots/01-go-main-endpoint.png new file mode 100644 index 0000000000000000000000000000000000000000..d07d9687076061ea230182db5b21e1c957e2bb22 GIT binary patch literal 105123 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 )L!SW^P4acl!NcA>=!;qUgB;-O*=U`mV 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 Qw$)oJ|1PotZap_v|@u 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 Bkdy!b literal 0 HcmV?d00001 diff --git a/app_go/go.mod b/app_go/go.mod new file mode 100644 index 0000000000..2a53035781 --- /dev/null +++ b/app_go/go.mod @@ -0,0 +1,5 @@ +module app_go + +go 1.22 + + diff --git a/app_go/main.go b/app_go/main.go new file mode 100644 index 0000000000..7eb113065b --- /dev/null +++ b/app_go/main.go @@ -0,0 +1,198 @@ +package main + +import ( + "encoding/json" + "log" + "net" + "net/http" + "os" + "runtime" + "strconv" + "time" +) + +// Service metadata +type Service struct { + Name string `json:"name"` + Version string `json:"version"` + Description string `json:"description"` + Framework string `json:"framework"` +} + +// System information +type System struct { + Hostname string `json:"hostname"` + Platform string `json:"platform"` + PlatformVersion string `json:"platform_version"` + Architecture string `json:"architecture"` + CPUCount int `json:"cpu_count"` + PythonVersion string `json:"python_version"` // reused key name for compatibility, holds Go version +} + +// Runtime information +type RuntimeInfo struct { + UptimeSeconds int64 `json:"uptime_seconds"` + UptimeHuman string `json:"uptime_human"` + CurrentTime string `json:"current_time"` + Timezone string `json:"timezone"` +} + +// Request information +type RequestInfo struct { + ClientIP string `json:"client_ip"` + UserAgent string `json:"user_agent"` + Method string `json:"method"` + Path string `json:"path"` +} + +// Endpoint description +type Endpoint struct { + Path string `json:"path"` + Method string `json:"method"` + Description string `json:"description"` +} + +// Root endpoint response +type RootResponse struct { + Service Service `json:"service"` + System System `json:"system"` + Runtime RuntimeInfo `json:"runtime"` + Request RequestInfo `json:"request"` + Endpoints []Endpoint `json:"endpoints"` +} + +// Health endpoint response +type HealthResponse struct { + Status string `json:"status"` + Timestamp string `json:"timestamp"` + UptimeSeconds int64 `json:"uptime_seconds"` +} + +var ( + startTime = time.Now().UTC() + logger = log.New(os.Stdout, "", log.LstdFlags) +) + +func getUptime() (int64, string) { + elapsed := time.Since(startTime) + seconds := int64(elapsed.Seconds()) + hours := seconds / 3600 + minutes := (seconds % 3600) / 60 + return seconds, formatUptime(hours, minutes) +} + +func formatUptime(hours, minutes int64) string { + return formatInt(hours) + " hours, " + formatInt(minutes) + " minutes" +} + +func formatInt(v int64) string { + return strconv.FormatInt(v, 10) +} + +func getSystemInfo() System { + hostname, err := os.Hostname() + if err != nil { + hostname = "unknown" + } + + return System{ + Hostname: hostname, + Platform: runtime.GOOS, + PlatformVersion: runtime.Version(), + Architecture: runtime.GOARCH, + CPUCount: runtime.NumCPU(), + PythonVersion: runtime.Version(), + } +} + +func getClientIP(r *http.Request) string { + // Try X-Forwarded-For first (common in proxies) + if xff := r.Header.Get("X-Forwarded-For"); xff != "" { + return xff + } + host, _, err := net.SplitHostPort(r.RemoteAddr) + if err != nil { + return r.RemoteAddr + } + return host +} + +func indexHandler(w http.ResponseWriter, r *http.Request) { + logger.Printf("Handling request: %s %s", r.Method, r.URL.Path) + + uptimeSeconds, uptimeHuman := getUptime() + + response := RootResponse{ + Service: Service{ + Name: "devops-info-service", + Version: "1.0.0", + Description: "DevOps course info service (Go implementation)", + Framework: "net/http", + }, + System: getSystemInfo(), + Runtime: RuntimeInfo{ + UptimeSeconds: uptimeSeconds, + UptimeHuman: uptimeHuman, + CurrentTime: time.Now().UTC().Format(time.RFC3339Nano), + Timezone: "UTC", + }, + Request: RequestInfo{ + ClientIP: getClientIP(r), + UserAgent: r.UserAgent(), + Method: r.Method, + Path: r.URL.Path, + }, + Endpoints: []Endpoint{ + {Path: "/", Method: http.MethodGet, Description: "Service information"}, + {Path: "/health", Method: http.MethodGet, Description: "Health check"}, + }, + } + + w.Header().Set("Content-Type", "application/json") + if err := json.NewEncoder(w).Encode(response); err != nil { + logger.Printf("ERROR encoding JSON response: %v", err) + http.Error(w, "Internal Server Error", http.StatusInternalServerError) + } +} + +func healthHandler(w http.ResponseWriter, r *http.Request) { + uptimeSeconds, _ := getUptime() + + response := HealthResponse{ + Status: "healthy", + Timestamp: time.Now().UTC().Format(time.RFC3339Nano), + UptimeSeconds: uptimeSeconds, + } + + w.Header().Set("Content-Type", "application/json") + if err := json.NewEncoder(w).Encode(response); err != nil { + logger.Printf("ERROR encoding JSON health response: %v", err) + http.Error(w, "Internal Server Error", http.StatusInternalServerError) + } +} + +func main() { + logger.Println("DevOps Info Service (Go) starting...") + + http.HandleFunc("/", indexHandler) + http.HandleFunc("/health", healthHandler) + + host := os.Getenv("HOST") + if host == "" { + host = "0.0.0.0" + } + + port := os.Getenv("PORT") + if port == "" { + port = "8080" + } + + addr := host + ":" + port + logger.Printf("Listening on %s", addr) + + if err := http.ListenAndServe(addr, nil); err != nil { + logger.Fatalf("Server failed: %v", err) + } +} + + diff --git a/app_python/.gitignore b/app_python/.gitignore new file mode 100644 index 0000000000..5745b46e93 --- /dev/null +++ b/app_python/.gitignore @@ -0,0 +1,32 @@ +# Python +__pycache__/ +*.py[cod] +*$py.class +*.so +.Python +venv/ +env/ +ENV/ +*.log + +# IDE +.vscode/ +.idea/ +*.swp +*.swo +*~ + +# OS +.DS_Store +Thumbs.db + +# Testing +.pytest_cache/ +.coverage +htmlcov/ + +# Distribution +dist/ +build/ +*.egg-info/ + diff --git a/app_python/README.md b/app_python/README.md new file mode 100644 index 0000000000..46310349e6 --- /dev/null +++ b/app_python/README.md @@ -0,0 +1,174 @@ +# DevOps Info Service + +## Overview +DevOps Info Service is a Python web application that provides detailed information about the service itself, the host system, runtime, and HTTP requests. It also includes a health check endpoint for monitoring and Kubernetes probes. The service is lightweight, configurable via environment variables, and suitable for DevOps experiments and labs. + +## Prerequisites +- Python 3.11+ +- pip +- Virtual environment (recommended) +- macOS or Linux + +## Installation + +1. Clone your fork and navigate to the project folder: + +```bash +git clone +cd /app_python +``` + +2. Create and activate a virtual environment: + +**macOS / Linux:** + +```bash +python3 -m venv venv +source venv/bin/activate +``` + +**Windows (PowerShell):** + +```powershell +python -m venv venv +venv\Scripts\Activate.ps1 +``` + +3. Install dependencies: + +```bash +pip install -r requirements.txt +``` + +## Running the Application + +**Default run:** + +```bash +python app.py +``` + +**Custom configuration via environment variables:** + +```bash +HOST=127.0.0.1 PORT=8080 DEBUG=True python app.py +``` + +> ⚠️ On macOS, port 5000 may already be used by system services (e.g., AirPlay Receiver). Use a different PORT if needed. + +The service will start and listen on the configured host and port. + +## API Endpoints + +### GET / + +Returns information about the service, system, runtime, and request. + +**Response Example:** + +```json +{ + "service": { + "name": "devops-info-service", + "version": "1.0.0", + "description": "DevOps course info service", + "framework": "Flask" + }, + "system": { + "hostname": "my-macbook", + "platform": "Darwin", + "platform_version": "21.6.0", + "architecture": "x86_64", + "cpu_count": 8, + "python_version": "3.13.1" + }, + "runtime": { + "uptime_seconds": 3600, + "uptime_human": "1 hours, 0 minutes", + "current_time": "2026-01-07T14:30:00.000Z", + "timezone": "UTC" + }, + "request": { + "client_ip": "127.0.0.1", + "user_agent": "curl/7.81.0", + "method": "GET", + "path": "/" + }, + "endpoints": [ + {"path": "/", "method": "GET", "description": "Service information"}, + {"path": "/health", "method": "GET", "description": "Health check"} + ] +} +``` + +### GET /health + +Returns service health status. + +**Response Example:** + +```json +{ + "status": "healthy", + "timestamp": "2026-01-07T14:30:00.000Z", + "uptime_seconds": 3600 +} +``` + +## Configuration + +Environment variables for customization: + +| Variable | Default | Description | +|----------|---------|-------------| +| HOST | 0.0.0.0 | IP address to bind the service | +| PORT | 5000 | Port to run the service | +| DEBUG | False | Flask debug mode | + +**Example:** + +```bash +HOST=127.0.0.1 PORT=8080 DEBUG=True python app.py +``` + +## Logging + +Logs all requests to console. + +**Format:** `timestamp - logger_name - level - message` + +**Example:** + +``` +2026-01-07 14:30:00 - __main__ - INFO - GET / +``` + +## Error Handling + +### 404 Not Found + +```json +{ + "error": "Not Found", + "message": "Endpoint does not exist" +} +``` + +### 500 Internal Server Error + +```json +{ + "error": "Internal Server Error", + "message": "An unexpected error occurred" +} +``` + +## Screenshots + +For lab documentation, save screenshots in: + +``` +docs/screenshots/01-main-endpoint.png +docs/screenshots/02-health-check.png +docs/screenshots/03-formatted-output.png +``` diff --git a/app_python/app.py b/app_python/app.py new file mode 100644 index 0000000000..7c5519695e --- /dev/null +++ b/app_python/app.py @@ -0,0 +1,164 @@ +""" +DevOps Info Service +Main application module + +Provides system, runtime, and request information, +as well as a health check endpoint. +""" + +import os +import socket +import platform +import logging +from datetime import datetime, timezone + +from flask import Flask, jsonify, request + +# ------------------------------------------------------------------------------ +# Application setup +# ------------------------------------------------------------------------------ + +app = Flask(__name__) + +# Configuration via environment variables +HOST = os.getenv("HOST", "0.0.0.0") +PORT = int(os.getenv("PORT", 5000)) +DEBUG = os.getenv("DEBUG", "false").lower() == "true" + +# Application start time (used for uptime calculation) +START_TIME = datetime.now(timezone.utc) + +# ------------------------------------------------------------------------------ +# Logging configuration +# ------------------------------------------------------------------------------ + +logging.basicConfig( + level=logging.INFO, + format="%(asctime)s - %(name)s - %(levelname)s - %(message)s" +) +logger = logging.getLogger(__name__) + +logger.info("DevOps Info Service starting...") + +# ------------------------------------------------------------------------------ +# Helper functions +# ------------------------------------------------------------------------------ + +def get_uptime(): + """ + Calculate application uptime. + + Returns: + tuple: uptime in seconds (int), human-readable uptime (str) + """ + delta = datetime.now(timezone.utc) - START_TIME + seconds = int(delta.total_seconds()) + hours = seconds // 3600 + minutes = (seconds % 3600) // 60 + return seconds, f"{hours} hours, {minutes} minutes" + + +def get_system_info(): + """ + Collect system information. + + Returns: + dict: system information + """ + return { + "hostname": socket.gethostname(), + "platform": platform.system(), + "platform_version": platform.release(), + "architecture": platform.machine(), + "cpu_count": os.cpu_count(), + "python_version": platform.python_version(), + } + +# ------------------------------------------------------------------------------ +# Routes +# ------------------------------------------------------------------------------ + +@app.route("/", methods=["GET"]) +def index(): + """ + Main endpoint returning service, system, runtime, and request information. + """ + logger.info("Handling request: %s %s", request.method, request.path) + + uptime_seconds, uptime_human = get_uptime() + + response = { + "service": { + "name": "devops-info-service", + "version": "1.0.0", + "description": "DevOps course info service", + "framework": "Flask", + }, + "system": get_system_info(), + "runtime": { + "uptime_seconds": uptime_seconds, + "uptime_human": uptime_human, + "current_time": datetime.now(timezone.utc).isoformat(), + "timezone": "UTC", + }, + "request": { + "client_ip": request.remote_addr, + "user_agent": request.headers.get("User-Agent"), + "method": request.method, + "path": request.path, + }, + "endpoints": [ + {"path": "/", "method": "GET", "description": "Service information"}, + {"path": "/health", "method": "GET", "description": "Health check"}, + ], + } + + return jsonify(response) + + +@app.route("/health", methods=["GET"]) +def health(): + """ + Health check endpoint. + """ + uptime_seconds, _ = get_uptime() + + return jsonify({ + "status": "healthy", + "timestamp": datetime.now(timezone.utc).isoformat(), + "uptime_seconds": uptime_seconds, + }) + +# ------------------------------------------------------------------------------ +# Error handlers +# ------------------------------------------------------------------------------ + +@app.errorhandler(404) +def not_found(error): + """ + Handle 404 errors. + """ + logger.warning("404 Not Found: %s", request.path) + return jsonify({ + "error": "Not Found", + "message": "Endpoint does not exist", + }), 404 + + +@app.errorhandler(500) +def internal_error(error): + """ + Handle 500 errors. + """ + logger.error("500 Internal Server Error: %s", error) + return jsonify({ + "error": "Internal Server Error", + "message": "An unexpected error occurred", + }), 500 + +# ------------------------------------------------------------------------------ +# Application entry point +# ------------------------------------------------------------------------------ + +if __name__ == "__main__": + app.run(host=HOST, port=PORT, debug=DEBUG) diff --git a/app_python/docs/LAB01.md b/app_python/docs/LAB01.md new file mode 100644 index 0000000000..71395fed52 --- /dev/null +++ b/app_python/docs/LAB01.md @@ -0,0 +1,250 @@ +# LAB01 — DevOps Info Service (Python) + +## Framework Selection + +### Choice +This lab uses **Flask** as the web framework. + +### Why Flask +- **Minimal and transparent**: great for a small lab service with 2 endpoints and JSON responses. +- **Fast to implement**: routing, JSON helpers, and error handlers are simple and require little boilerplate. +- **Good fit for DevOps labs**: easy to containerize, easy to configure via environment variables, predictable runtime behavior. + +### Comparison with Alternatives + +| Framework | Pros | Cons | Fit for this lab | +|---|---|---|---| +| **Flask** | Minimal, simple routing, easy JSON responses, quick setup | Less built-in validation compared to FastAPI | **Excellent** | +| **FastAPI** | Async-ready, automatic OpenAPI docs, strong typing/validation | Slightly more setup, different server (uvicorn) | Good (but more than needed here) | +| **Django** | Batteries included (ORM, admin, auth) | Heavy for a 2-endpoint info service | Overkill | + +## Best Practices Applied + +### Clean code organization (PEP 8 + structure) +- **Module docstring and clear sections**: improves readability and onboarding. + +```1:41:DevOps-Core-Course/app_python/app.py +""" +DevOps Info Service +Main application module + +Provides system, runtime, and request information, +as well as a health check endpoint. +""" + +import os +import socket +import platform +import logging +from datetime import datetime, timezone + +from flask import Flask, jsonify, request +``` + +- **Small, focused helper functions**: isolates responsibilities and keeps endpoints clean. + +```47:75:DevOps-Core-Course/app_python/app.py +def get_uptime(): + """ + Calculate application uptime. + + Returns: + tuple: uptime in seconds (int), human-readable uptime (str) + """ + delta = datetime.now(timezone.utc) - START_TIME + seconds = int(delta.total_seconds()) + hours = seconds // 3600 + minutes = (seconds % 3600) // 60 + return seconds, f"{hours} hours, {minutes} minutes" + + +def get_system_info(): + """ + Collect system information. + + Returns: + dict: system information + """ + return { + "hostname": socket.gethostname(), + "platform": platform.system(), + "platform_version": platform.release(), + "architecture": platform.machine(), + "cpu_count": os.cpu_count(), + "python_version": platform.python_version(), + } +``` + +**Why it matters**: clean structure makes the service easier to test, extend, and debug (a key DevOps skill). + +### Configuration via environment variables +- **HOST/PORT/DEBUG** are read from environment variables, so the app is portable across local, CI, containers, and Kubernetes. + +```23:30:DevOps-Core-Course/app_python/app.py +# Configuration via environment variables +HOST = os.getenv("HOST", "0.0.0.0") +PORT = int(os.getenv("PORT", 5000)) +DEBUG = os.getenv("DEBUG", "false").lower() == "true" + +# Application start time (used for uptime calculation) +START_TIME = datetime.now(timezone.utc) +``` + +**Why it matters**: 12-factor style configuration avoids hardcoding and supports different environments safely. + +### Structured logging +- Standard logging format with timestamps and log levels. +- Logging is used for service startup, requests, and errors. + +```35:41:DevOps-Core-Course/app_python/app.py +logging.basicConfig( + level=logging.INFO, + format="%(asctime)s - %(name)s - %(levelname)s - %(message)s" +) +logger = logging.getLogger(__name__) + +logger.info("DevOps Info Service starting...") +``` + +**Why it matters**: logs are the primary observability tool in production and in Kubernetes. + +### Error handling (JSON responses) +- Custom JSON handlers for 404 and 500 keep responses consistent and machine-readable. + +```136:157:DevOps-Core-Course/app_python/app.py +@app.errorhandler(404) +def not_found(error): + """ + Handle 404 errors. + """ + logger.warning("404 Not Found: %s", request.path) + return jsonify({ + "error": "Not Found", + "message": "Endpoint does not exist", + }), 404 + + +@app.errorhandler(500) +def internal_error(error): + """ + Handle 500 errors. + """ + logger.error("500 Internal Server Error: %s", error) + return jsonify({ + "error": "Internal Server Error", + "message": "An unexpected error occurred", + }), 500 +``` + +**Why it matters**: predictable error payloads simplify monitoring, alerting, and client behavior. + +## API Documentation + +### Base URL +- Local: `http://127.0.0.1:5000` +- Container/Kubernetes: depends on Service/Ingress, but endpoints are the same. + +### GET / +Returns service metadata, system info, runtime info, request info, and a list of available endpoints. + +**Request:** + +```bash +curl -s http://127.0.0.1:5000/ +``` + +**Pretty-printed output (recommended for screenshots):** + +```bash +curl -s http://127.0.0.1:5000/ | python -m json.tool +``` + +**Response (example fields):** +- `service`: name/version/framework +- `system`: hostname/platform/architecture/cpu_count/python_version +- `runtime`: uptime + current time in UTC +- `request`: client_ip/user_agent/method/path + +### GET /health +Returns health status and uptime (useful for monitoring and Kubernetes probes). + +**Request:** + +```bash +curl -s http://127.0.0.1:5000/health +``` + +**Pretty-printed output:** + +```bash +curl -s http://127.0.0.1:5000/health | python -m json.tool +``` + +### Testing commands + +**Run the service:** + +```bash +python app.py +``` + +**Run with custom config:** + +```bash +HOST=127.0.0.1 PORT=8080 DEBUG=True python app.py +``` + +**Quick smoke tests:** + +```bash +curl -i http://127.0.0.1:5000/ +curl -i http://127.0.0.1:5000/health +curl -i http://127.0.0.1:5000/does-not-exist +``` + +## Testing Evidence + +### Required Screenshots +Screenshots are stored in `app_python/docs/screenshots/` and embedded below: + +- **Main endpoint showing complete JSON** + ![Main endpoint JSON](./screenshots/01-main-endpoint.png) + +- **Health check response** + ![Health check response](./screenshots/02-health-check.png) + +- **Formatted/pretty-printed output** + ![Pretty-printed JSON](./screenshots/03-formatted-output.png) + +### Terminal output (example to capture) +Capture terminal logs while making requests, e.g.: + +```text +YYYY-MM-DD HH:MM:SS,mmm - __main__ - INFO - DevOps Info Service starting... +YYYY-MM-DD HH:MM:SS,mmm - __main__ - INFO - Handling request: GET / +YYYY-MM-DD HH:MM:SS,mmm - __main__ - INFO - Handling request: GET /health +``` + +## Challenges & Solutions + +### 1) Port 5000 already in use on macOS +- **Problem**: macOS may occupy port 5000 (for example, AirPlay Receiver or other services). +- **Solution**: run the app on a different port using environment variables: + +```bash +PORT=8080 python app.py +``` + +### 2) Need readable JSON for screenshots and debugging +- **Problem**: raw JSON is harder to visually verify in screenshots. +- **Solution**: use Python’s built-in formatter: + +```bash +curl -s http://127.0.0.1:8080/ | python3 -m json.tool +``` + +## GitHub Community + +Starring repositories on GitHub helps you bookmark useful tools (like this course repo and `simple-container-com/api`), signals to maintainers that their work is valuable, and increases the visibility of good open-source projects for the wider community. +Following your professor, TAs, and classmates lets you discover new projects through their activity, stay aware of what your team is working on, and gradually build a professional network and learning feed that supports future collaborations and career growth. + diff --git a/app_python/docs/screenshots/01-main-endpoint.png b/app_python/docs/screenshots/01-main-endpoint.png new file mode 100644 index 0000000000000000000000000000000000000000..cf1d758cd8029db90c159b467f9c8257d4a13db1 GIT binary patch literal 113994 zcmeFZbx>SS``|mc6C}6>4esv2-QC@0AZXAKEVu`EcLsM!a2zlu*nDrU%jRxr=g}Ir=+B1;AEzyW2dL2d@IDl&dtNm z&ricFA|cEx&dJBm`>#R}FfcH%v9L*Ta7cOIP`=^)pAOH10DN@BNlX9|0v!Mm9{~v; z;dvN9@nR$*(!b38uK^ha5eXFm?L|q3@E_s7s$Lp}jEIEt3zz1)X~g!huNSLS%C zi)#Bn5F_d)GM@iyg)EDYl#f(m_$qqh-%C;@*pu7ge^ms=vVZ;p@D2k2IPLNVLfx?+ z`T>9``(l-WB7p4|uR&*wIeAuT^{@Z{Mt`z2LIDD(3~T{Sp+a#+0qOjw-uZ7)3t{#&K<(+w`(tpeH--`wKbu1a&3u4f3P>km7ip6zQH|9zPA85{q z^C)$7-R?jB>n0@YdS?Rw0MQypXaRS|MwK!&`xEMp#Yda0awl#~z^bc}Y=X@v!f`e( z%%xwn0D|^p!m~G@5X2*TrVmyGDn0=aSb2T`5DLf$_)ix6lllP&uC;b_kiz0pMnjD- z07@%ao5Dx6B?YvUT}3J(zMyv<^@XoR1zj7Wi2sgpWD}93{DyoSZ5iU|{LQnHUyPYL z+1fp;fz0_CcgK#4m;OS+kwyBy*Epz%IWrYR753$d zsiFrSB#Dh*_llVxaD?RF!YYqrK^qx^G`XX~%220Kdl{>kj~*oRaGW;5TpTUl4tkdh ze{$-?-tFIA4XrB`c7z2)9S(ir4t<{+g`B@<`0eda``p>fO@Y77N^>4EPe~FF>*E$- zv98OOg`Vhj8o*?mg#m}Yu3P8V2DWTCAMx23qzW^8WJ9B_n5&(pQqJM|rV(vwQ zG%Nk@^#75L-9(JnNce+~BAnP{!`rlrVclQBtmyn=t`Q8N4tS{w;h^}S2t%jl>njN) zkIbSeJftnu3A~9Gqawh~w*k#h00LVqF1E-kZ`%J-ps{ipaU=gHfZGB`P%YUH04cp7 z(!Uoe9_rrzdxb3U)69#^(x8F=M}i9cec)x=>nX6Rw*-kyH;D3uS^8;a*B19ClQr{hQvN}wRs@PB-ZQ7)U0^rF9$=fT`U_XrC-TooH|ro$&DVV@ zrqoE#Jf)#nQ6lwtc{_gY$iX|ROE%pQ34 z9{l;`K$&5XpM4SH<_@8Oq`pxupdy?7Ip^RN=Zci=O&3Ky*;=~1er~6p)&S9+5+lsF z+%{af>^%$>o@8vBAK7!C&m-8P%bs7t+h9PfWy`MQY-tkdu%5*`J91XSjY5n9ffe2> z>rSRWw4_~heD;icM3KDBM0?wl>b2?{bZcZpbi4jN&t`jgFC#FvP;`}%x?wR^V!g6e zcuUk+k+$coe5$Qpq|(qtmlKHV4uK&|vU`)aU7sZyhX6e+E;Aen5A^X4)JqKmA+H-g zvuJe<2-k^rMiLe+X&v}<9-Ix-(}|iQMVm~#4em;mn_p5CdHDSsm(BhvWokIxP6m7^ zQu_U@pN0EZ<69C>h`mQ|k%`jV4R+pa`^7xf;>-OE52dgFZd@VN?(=3C`s8ID+sqw{ z<^2_hbeO9fLq`tYi@nW*GAm~CGha(dt-7FGz3Qi;l<+C9SI@VeGk@QM+y6=^dwux= zrV;)@qHe5d=R$PmOS=7|oRr3xB3I1H(7~Cgr27_5`0K$+0paK3<@0P3XwZjzRf2FGBX%5;&SRc^QHW#=-3i{xgIi|gy5sr)xS9I{{G;-DFtg8+J>&Rd5 z787}N%#WhUUUo03<2rhC=gZTTr_qmti>5k#|Fa#Mxj1o#rtfp{ZRPh)ujq_fRb%5p zvnXX((}D6#obr+|)mAU{P-R8k>W82{rE@b?!pX-w+{DEgsz)Kd>;>ndv!mXhrXJ;YpfPO5(%_9l@wb9FHR(8LV$i)cdvq|q+*FI?}tD z&-`c<3#g&g$doi4asbQc8EyW%kpMslp*~0zgU~2y$mT;VC~uT!FH!h=qKBQ@EeQWY z3bUw~g%)0C+%+g!XgRT8|1K6|HSuRG12f=p{C$ew%OKa7&472cfa#_l{d9lMZP z^t?3>jV6wu{m4h3-R(lL-|v_GCpYoyYr6&wbN`4Y+Mo_zxKSR?U&PUQZz`!??>G~* zRIcg__Ccj9Fbv2n^Pt2RD$!I5D2(wQNOiZ*fX{0l99US?Bqbb&_OQHu-A2|EXE)4T za*K$y=}V&Fr@&v7Yt1`ZUkpYMtx_w0Lp>^^)J0#nh}Kd?G5dJTOr=+!%HAM>g0p?)Ou!#qp7ermUA*hgzSwx`@fH(H!>-f2wAv_UkhfWA4q&Q%D3#d z^Plv62&Jgr>!GVi+|Fysm0wIf>^8B@Y^_~2+gOoj_4YP9baj`1n?2+G{oBbNjg|iI z+@FekRkf_gWdTa-UWe)=UBx2(1tr6A2b$7)P7apmR5&cI_PUf~MPGF{yxPYEnn!z& zYY%?2iu@i*qT&)*D6r>JCUE<;JCmL}(?*=4VcqO(h6_$V6j>}Dvr7##o3f2f^3d>p zU)N4_m0zaQ!TLMmfO$OGvjbK}Iot2x6YvMm24*LdroQw=x51wBV`53(kbEJ(w+H(N zJcpg^$zSQM12O(uo{z|ZEfAshB0AsRN{65W417qbUX2bgHw!tS=a;-4m|eqX*+C0> z88}(9nJ9uO@Ig(cbFW)QJ>hVCDp$*U4p>YfvhJ>)nOv`d#D+fRG5R6MU+rbWW8r(n zfRnb9THDnq&@-Jm(Vvg?GTYVg|9I6nG8w zXrt$qu@R9ePl5jGw`45N3Fsm zN&-iuUm8UTOQ{l>@{(X+{JV2h!f_qmI!4X#_u4C)Cv3DFD%AwrxS2V_ok^Dbb%nKq z4$*W5TBnn@rd1ezfwbaFj`ZjXxi0sqHG@6=gu^X3BmvVdmzT(x$FOjJty+$~U~s#m*zaOz;}zLA2A7n7N+u;+*j{m{_+=jpj%5Sd7fn024sw;e ziW5?|q zL$sAsmb8D>b3-_qY-KXvd6E61lBd?vXrBxd@gmRFt}Us`b36RoJ2kmVn$mha-qlzY z?+Vd3URZK&6S~JT{$Plu4Duf_CSJUaS2kKUdEI3>%;6vCB)=s)=_*R&FUDIVNt*cu zsxOx?=cb;oNz(!*+$`|F zpYt9nOBB8mKl1v?ftfEFkq|7zs?>e(fx^9}EH{8!m$0&`frNCpL6i#LRdqd)b$r<{ z&jw2Tw_?5D#n`8kd}mz+Yaw@fC%5gg_hbk_{_RnutJTl2K zHEINmSLBLYnKgE9h%c(Vsa{dBcCNWAx)_`!iUs-4s!UCaI2z*S(yfzseO@zrVjRut zOtHNRDmoPwdv}r42o|+SipX+ZtF@kYIpAgYm9G=L`tFn6BkGT0nG+EoV4<}>=Vd5A zdS^=aTD0e#!MJheLgz+#A=`(}@)MCYl!yS(UPH8rMi_rU^KU~T8zZ-a-7homuBglI zm?;{pnKG%r><2H1YSRAjrMyXxoNXn*Qt#cHPj^q7s;LT4CvS5wUDvjHx7FQyc%wDL zby#vJ+TACBmU%TdWB9Oq`=-69b)U(~{GOW3wLMeDOQst`h{Gal>--`vdud+Pl+$am zwEmz$`R;>uJ`J0*lFLz-DWRtJtP#mly4TF5@t|0}z_O#vxP|s70CK$qiofycoPRhg zC)j$dTLTz4rz8?083oCE2ILR(rR93`?mp%Rcz(PlBWfdfL*BqrNzfOwl=sEo++*k# zsw_Mpng05R_#Ku1XyB^5a7cjifs`>!pFpICb;rDYoS~Lnqj&ela5L{T|05cUF;yOD|s_%1n z#>K#Xtl8;Le0uY(JZ72vlo8RUNzpg6{;>V`PgkC}e3073oal!+mnnf$qu+cYLa>EdNMQP7jMH&5#7t8A1 zZM3J`_7l9E?-mo#)MfegZ#VQQSNa%lFDBN(i9FwN=~fy`*{Um*S-B4HN-EW?2_XZ< zleaK=5m$BS0fpeU_SBv|!-4qeF|KZiHlQMDE-`R3WA0}#{E@ZRSB`((y@5f0@)$z0 z`FZ!JIh0XA$j3lBVbudUC#F$V*(Wge84%zy*aEq*zPM4GDY#E^@+i16O%$0|7BRbj z@~cS)&8D*Mtr4BGcFU>@`FV499 zf9HvD2CbNxer*9uG$!bn=MsJVD30WJ)p~U3k}ND zqwT+D9mPe_B)P5@j0hcczOwrqq+~4nQ;4H%&~ms`;GO!WgZtfw zWfAMT*izYBrYkDe77`Xk^eum5eS7RuJ<{6mr`ESuK}BV*QF7P)dg1lsviyEdT#2O7 z1ht+ztx8;De_}cNa%Q9eoCYUb&(2%xdOlO{6TEXxPVXtsl|sNALWwf>_5s$ZA#{(dxQ0Ym_XQD;>!1dn4|@<_Ug>1$)DEkwaqQ zGG;$||D&~*ggB_EIr|+)Q!R;D6`E|OFlX6C_!i=MJh4w0WHIZ-&;AxvOvP`)v#_#^ z75l!me%Kg_ra!Cj?>Z3R-Spv?D0(0rLFZ zCf``EhAN-q86c{@(m|)z-G_`@nb5+xlN534(j*E|*hyozpWDPguclJ$AK|)Pk4+s@ zXIvvTsNYrgC?#*I!*bQoYwOw#dWE9s+;j|7H}FZGkRTG6C-eypo%SI$%m^AVHq(DZ3qMwB zou|V-JyabNTFSMWJX?03fTadSRy8eVlw3sjRleC;xMZ4o;+$TFn}j#*1Fr~6)nb8Z zxGa*?{1Nc0ef9bn_Tx^s{x3Cf|Kr8f-(6E)$=5KExjBoAh`-B^=qd7Zc}wsAExi9p zh5H;J^FJ+|Aj-X0js8~=h>JdN|65TQ_}@5bjSXHF#T|_}5C2>GKe2xZ{6pX$0{;;B zhrmAs{vq%Wfqw}6L*O3*{}A}!M*!(%kDCY{0P(*B01`3=G7{iLkP#38DEI_~uknaz zc?3}3aP!mAGcfY<32IppOUt}xQurjF{NrU09Qw<)IRq5M`anmOgMZ{70{=${?A5N& z-zYxb08jE;+I=Bw>tc@ozm0Ciwf;{uUgQ}NoV72NF#HTaWfOeR6%T>GnxgZ+&7NFX znJ{ZA%zS*%JhNf)Dj!(=o3|YT-xkx{A%*K0m0F6y{gNmK;%&MbL~#P)$e4;h3O|8& zV=%p0mSThI+HyL6M!K_7nSw39Eo|@v`)e?z(RE5_gEjRwr;l(3kBCxvz_ch&mw+j> zz5vTJ1k*fUlPldbc@C$MRC=R96f>(8yg|`&g#My6{Wu4#y0>G`0Q~5Ecl}Uzx-1VJ zmh^}7t<-PltG2nygne(dmfBj?fp{rl!7?J;4T#SGJnz($R;9u-1CtZ7@`mDK)5#G0 z+aS}6+r#^cMUm-IkG=ZRx+iiScgeaxF6zu@5qgK56w&X~K4Z&E;Slq<9tsqs8QYVV zhhXa0f3G!cE6%-VQh2iY{Ig@*$ii1D)MTc@#zxeXiAjoJYtEdr@rQWhiGwSbT%hIW zkZNhhvrTB*2@j7H;cbwyr*b0w%S)eoN3iUE>BH66PVL4FkSc~AijW380;}W8BSuf1 zz?z<1*keHC-F$H9p0?6tpLg3OT=doYQb9gSdtd)BGzWxOH24UTGOT?{eFmJG%q~TA z)_Wuf{g5{Io|eb>R1(!4{zs>o{4kMmIutbr&o12Grl!{04PDMxE}q^}va|KdM=a#m zYDS?}Ebcw+Ce%^W`9_&a^%;Ok#gNHeCd7J8#M)Lz6Z#CuI=IMoUwi`H)>Cp8_1cU^ zZnLF)OMR-;eR&t+^!c0qr77Jf6Q3ROq@}ymZosTw4+e<5sm+Rey|}T!RWUMS&(2*HrGqW^!xtTokxW zK|6Q>UT=!3sm(Mf0QwB1Z>4zcW04GPs2)ySs`y545koiF8Z`I!;~e_n2}YN) zzDiWPTW0&Yn5WiPvM*HnKv%pR5y>RipuS9$M61)azRn;QC%7c%k_^RHP+H&69y0_vWPG_V8r!W^2gI1MSxt<*8cI z>xP{r*)Br<1dUzRpat>Y(2IRw-Y#}5!-S?z>l8*tpQE73)v)(ER1Ud(8vJ8Z!Bts%gFJyrYfXq0VE^cH1@!-_EdjRBfLg`@7sn z@|HoGYqsyUd~ShKiBeoK1&(LxT@!~$Z53Nz&$s?WEU@ITtC7UxET>3kGb(BB0K%@| zrx77GP`nO-0rZF9?L&h=`iz~9d$fZz%8=u~;2$~9fF?PQX8`3kU!9{7q$%H4bkryQ zm<;;Q<^OIP!Vkg!t8nq3o&gZAyaSPcKK{SLKsfB<#-s>Y*@rrV_I9NSqk68Ohvp-n z6*;w;Y8N&13`j=y!^N0?+rKW-s5ppYVGeB0Q#wmIi8s+P*=<~A^&I|fAmu*D}jtAEU*Ca6#i6Q?FpbFP2l{}A}!N8lN7g!-k)%}1^6 zLGI))o2f+znyJqNkE*&uM)cnj_GD7KEHewS3mzVUa_|Fsef?jX_Ku%_2s_49eO?~W zL$`rgSC=PN=t^NWK3(CrHjwe{p>y5B^51%p|KUfeSEfFEYqacAvas;GtW4eYJ>*$r^Mc1RFY!Psq2;EJZE0I}8mGk2SGzc8ZaY1)u+`eqOJa z`s=|`iEOSPNndOTk~{gcumMsv2*LTPJvI!TxBMp1s`w+vgpLj*DfaO9G>y>sfv64^ zf)<~DXPK0QFQ(=p0a}U4I~G}3L+Yz6?|$%$Sw9;AxhG~EyTH=Y%fb1e72&+BoY~m} zAq+(tLQ?}ero|m*wkqG|YYSe6P}^f-lG;twJz`McUW1l#nX)DDrhXdVfBo*$ ztu{LP=#TX5icWo`*fqX1z3#tMM#>64-T>4RuXoH^VvWXf+TAnYcfA;*d9;boDSY{#Q=IXX3jo2IA2VI571a}14K6;3<0 ze&&G&-&^xKx|n)(I*E0@c_^!8u;AQF)#IT<#xa)`@JZB;3bH)}*nh^?q!SGi92u>A z=M2_jh+|M76|K=@2gH}WMKm=LMi(0Sj@# zAcvu-M_P+#9SCXw8TdaR_-->BPX3mLyQ zzZ*7;>D~shdMp|?TFI+}d^GY(-|<|9GQEwbRCldHhUr54t~&0y>M-8$yL>gm+$l8X zs#?MK5%jjwu6yB~f%3!l38Ts?LSmoVCEB`pS&!@~OMojFvWO7bi04R%Dwe^HFqt3 zq0Y(2Cm!czo_=KYvAFF~eQ*44hakA{!^6Tepe*-+1V4&m>tNHUzM*DcM2L;zd$3Nw z5u^LPeD$O3PxBAWnS)!CsebZrZ0>`xAUTP|fwsmsHG!{ChIvdxLsdFbqyeL9r z%WWsl2XPKff-L6Jm^eAE`1H;o>f2?}t_Jm3t~#nu+p0terjOz`heo0|oD*yeW~#Rr zFO9!KQ67cdz?P86Sn4;f|I~;Hlp(9!)31dnxs zk-KF~eaW#@S9q(;M-)V8%~Q1jAcxG`5vg%}3@af}Qdv6tXr&Qblt;~@dBBv3APcK= zzFGrN$g*Y|Yf8PD1xch*;H@_z?0utJFolXRCd(byAjbVP=|{r-#J*K+PufPbfTJ62 zKMiSx%kFMi#>!LfA8!tI!@+^ow(4hqnB|oyW8oY3*2o}-lHARppE&Ca%+xp)BeF3G zN#_&;`+ovPVC($GuG(jtJ-KeSC{_tu3ACh2>{)DQXE z{*4M5!ML6b&BIdQSQW(0f+ck(L;RC1O62s9jm0g*3*yf;Sg*$lyY4r*t_V5kYsrR$ zd=Pi!n~7Cb9OI*Ty~-^xz+!#TDiy)p1yK4ohYG1DnsU6e;k!nB2VlyYDEH zx9>IK2NpkYj*rQLK=Z1(j1J=WZ4b6`jz7NWJj?p{E+C6zQa#z@jN4rdef|Cgl5Ea( zGZl-QYqtk{QtW-qhCdqQQyClBIvG5zPvLCIs+ z_hpCgOibV|!4+71S8Z&}`DG?~@Y4~q!s427^d8ZYCcu2)g@Sn5v8hR#!!gJ*a3n% ze;nU9Qf*b*j9MCh_zbA|3uQH3m1)5?RaH(Rto?}I zhMmRXI-T!a>2Rq}k)5B|GN{7Heh5>mAvrYp)g5U!7nu&tD7`bEaW;>f=O9>G@+D)H zx(lfin79Qj&Sa^!qK=pXW4q%m!p=_U+SVM}OPkg8Jj$ty!*GvCL6#aL&b9Bz_^OP7 zw&o7fCFfL~Rn){5Csdz|ZB0UNETW^*@J6FqrHa>_!it-xHd3!pIH1Guma?|1x3>rZqlP!$0IECtI?_tsQBBuW9KQ5Q9I|oTArqS3;HV(!_9vWmbcQAI>diY8@I_JBZVE)ai!XzgsTKQ8FtPC-G7p_8U3pi5WnI;1T{Bj} zuS>OFAA8oD+i~^;W8Q?A6!+M~SXu^Bs)^XdS;HyRvj@#5UzD zkGSyH<5Z8x!ug4yz?HhWEFV_bDZ0hTCEOtA4p(40f^ivKFZNCp6+yYu&X#V4{HqCE z+DDNa*u^@*507`LQJ6G09_+>n)G#_$7$(3;7TB&kHfQ#<*?c898h1wv#0s~=`^#rg zPv!`vfPIfXap7zg{UPD-3<#}q?5n48&vF0b7eiM56mZ$cPCh$#RPlz)SArvA7W!K% zxSce%A*C>a28zjP*s?|cm|A} z@+>I0-z5i`)fimO2N5JHfPb#$e!486#ATt81XR87zVw^~^uevm>8aj0fQNdTsmyZ}Zzb^$p#aiv*WU zoTL(LhU_MdKFGB-@na7sd|0jWWhvNOJ03_~QsjfWo^dXiCy*CkDBmUf5;KKF$3mAE zXxmVkRAlpAW*2pD2z|xw@7y;hYbK~vhs;Y{WyP4Yuh)yO>GO9Ds2wfz4VRQo!8{ls zq0yZ?FZg5(-Z><%2oXr`Y6q@*Zu2^>l|ji4_@ESzqFn7 zmiPUkvEg;wZfYLRyv~KuK(2G|kpHS67RVGYVAL#} zlIIoZ1nEmM{o+nXrqNJ_V9#ADr!0l;+09i>pEeN3b*c79{1`LJ%ehnasi1fdq}al7 zyk34<)5fL7%7i&U?zg|FYT$1C45(})sY+YdQKz8COlz`%=b|awN-L3h=kj5G#*z%) zL6GXH;XtZ`y=uDF?!S<8wiBqh;%kjM zUgoy`<_*nf5}B9%tJiT&Idmpv($wp)XTYn~QqNbW&U_|Ltt;1F>O2$@@2AWch-#fX zc5r(g2$9rYYX%94;~YBP4`sI|-Q$)4dQe@{iSa4$e02kl#u`}gqq8%HH7jLk_$56X zU5=;h_|1VH8IA->NtQ`S8W+D$+>zIw0SFH4wK$}XOgh(8Gflwla=2JJRNcKT@J;E` z!D{RHZySP09-Oe?A}zX=RRi3XqIQl5SIKvhkeS@|AL^9!e~}bSRPGfkVSSMz8oH$M zc+9LfZ`gIPY*tZV4r4(0_6eCORalE3D7Jy_J41eHds0lmm!%+C$N02VIf>jbG7Qhn z*^c)UF;?G)871ep@ZzQMdWdH&^<&U)(DB7l2Bu)Yk&-?F6fgg+0e?E7(=I}Oq@ zM%&kp?M&uvMW2y4*U@-jaS|k6Vq};4Sg}qU5h*^a$PjlVb!K>UCcy=3%P%O z5Zi&)I^gr@nM?Bxc@)#k;C}z3VvF17&=X3$pQTG*cu=%oe|odVCpZanwQV#2h4CN+ zY%cZk2Q&^%3m~qx(`lwJCM@YyC8k_{3~F5a7D`b ztu#>(GD31S6M|YR-d`(XP!aQBwAbn4Ii~@_P(3EC7gShnHTh^{Xe>O`4166$`k8g2 z8mraEKFY|I-sRGsjJxcmg9)d@urJiGak*PLuRf{aPPC0V;CMmSj zRhQb=#R9O)Fi3+lYX2xyRL|{^hJ6c-;K7LyQ8yN`Bd}3&vC)!!ftp|1l8aXLJ_x%5 zgL4P@rLzkrI%`piWSX2^NQbSm2-5=_FF2$HIk?{CRdB(2=&L8BhfqGfvilLap4&Q; zEA;h6r35_l$O;Y33TrTQ*hA6HNWUQsgoqEc#AZzeZ8ytiF%stt23wOIHqYXhWxQ-*xO1y=*HT*~W7KcuKccL#P2~`8-$4o`UnA0GIWDa%b zJMOb1k`@z$#8Ye@7Xe%!YYcj_;JsmhWdh)WO{Dw_Lmql)G zU#U5)5TD$XgjhuRmBHo%UAQN4$b+d7&PJ;E?mEL6^=YGSVZmTDUEoEG5wivmHqpFgbaxOW4CT6b;FXc*y$RQxe^eo-JL9 zqf4Z#sS`QII&9P?=J1))I70GNms6c{=5?9e56{(dsh3WU^wY;4#8H~=$}E%tlZ?!z z($lh&158Pk8-d-xXj_?59b{$pk|i9*2s<(}S!jY6@qgIKOrT|GzWbKZ%Z!}+kG4%R z9#I@Aip2^(nh-v+(u#;P!M?;xnH`fgVT7y2`n92E)Aq@3ZQ6l(bp~&$R=PxF@X}=P z(iM#qYV4=`^@$r;b%wiA?E_Rw?(%E4^{1C>m~5sn`P=c|iXgZ;%XF4Fr!;qfc~|6( zS!fMdp4uQz1bCnIj)NdwaMTn3cBZ1n3d+#n`S{bN2DQ2}~*yIhUw|ch{rb z>}*GZY#8sgz3_}d_9!*Wh2bqqgvK>yATfPe(YXc(_W#0Dp3-2^Z>0m+sH~zCgFw)y z_ptv`Mo&u(;T3^qU)FBAQhWvHCOxYpWDXYnj#j#lwpZ%=Y5qm#N)mlM&QcA`GXR^2Ghw zC2*`iS3>Yxf?>TVO!j*%DG6-@MLn1$FB0Dkxq3zyP`j$c?_$zoYW338$$Vf52c9hk zmJ51BXhh^-#a9+NinrStx!Hn-;2qSdA~KZ%ANU*ii7S?CCyV4Ln||7+haimKItgOQ zx$iI7+(@ot9tWLShc}EmOcYu1XdN2@tN0f9Rh)fzVN!%d992aJ3(~*B;lsT zYt7yI`rS3Ev@H$!hy4?@Yt6j{IaR1fuJtoOdR38pCHrmLIKdvQ_n7)}!{>?#h(oi+ z|FnR5O}*ow6S!uo4*WA^9_$`q>LWf)eC82i=?Wyq+75i#&N)I6T8tO zIliAn9JlB*-6rlrtoDRM$Z#VdwLw;QB{?Iuq#k}dGe84+oc~;eu4~dg0+o=jQ66QINoskCB0=5bt_ZO~#~@gwAh$qh zKHuzdoV4X#Lq*y5`_8EnWp8W2VY7KjifQ!X?f6fTRWR<@coEzzq@D+h&$x9>0kI>< zp?P{$jIMRG$>kAl`d@)L{}TR>bcim|q=LZX1FHT{-wQ zrveASjKA(f>i8#0Kcerr);-B;=y0&C+c}{RbB65#1d_T@dEM1ht^`u1TStyU8*ty;~ojBe;1KQBg|2^2SOT4x7NX_^9Udn{Rg zS+lKVi0!c31814Cxg7pUVqtx z^Rr6Tadi>Oy-Y!VB@K5=t~LrN3cm$-`eMv5A$L2jRtgFn`M;P*=@o|E8e=E=J{vf> z9DXErIeIVzD$%TFZXta@S+R=E&gjb{UielA=NJ)mC?*a#PRNvqwRfz~_e(O?4LFgo zk2b?-=u&My*A9;S)Z>mnE@mkF)s@pTRYm`r1YPAax!{k)El1h@$C@4=0Y?+hm$K5j05<)LL0)8S_YO~|jg zuJ*bqzh-=hXQPBWpe2nBu5ki&}7RN3K^IfA%algOsg@1S9rp*MwmvPF||0!|UA&EDYr%*>n}0 z3pbc`#tKYTwfiOTcgJ5%$_Ma5(D7l}so7t%x zgMnh_{`6(^t$w8e>!#xwcCoMFw% zTWbfW_EG)lHCUbYf|lND7I0(MWJHrz2yUV@d zWpx{);)iiX_trv^uQar;zqMG`gc6}lYx300eJlQJyb8$mJ=q0;T-I_`9r+u*zthR{ z0KIfwtruav{OX0Nad1vR>sAYysy96t|F~qfYW-tJ+G}7e-nv+d6_ArQe?mkO<{HXl|J>^9pCDQflu60RK#()rwZ z?XV|qKA+>1_G7yD-yH5ahaOxLBLuc-^E3=v0) z<&cGCa@E7g~7$y8~f6)W6#wnQ!c`mg_pv^?Qwl zt!1kbRbR4u#r&o2^g*cB&dHftHxr<{JJ5|(jAp|XFb@W{dyINWMZI8RlJv_fXUKGR zWgV-eF>TZ#uqDzr#e{<1USrtf28YOXWN`2DUXA#<8vL43e+jq}Wo?oo+pcmD z0X+G!&8af?S0Y3kb)%b8kQ~kLX?m)!9*1-pr0gfP#>4U9smJb$dZ5)<`*ZZXpq)x3 z`+{o6Gk{!YE_Hn&U)dKUN9pM-K;kug4cLN>U-E;Tb)JKG(!80udUe6Q5hc#Ski8=O z!?`0~PA(y4g2K0Gx{Am(|D5*kz0Sh}9Vb`!1Whea+;I7AWY~4&X`&U#{fqCZXtsp9 zE^?;#kG|huqNZ_pF?HT`mg20I@IKAkI~dc;kL0qZoscXs1P1s< zDSM6;!8A$|?#15SNar25%6}vk8fqy;L7dX}THTqzqPXTQ=8EE$2 z6&on~O&_x=E_YzQ6b=mICHQj^C9uk;IUgZ6|Bit79l*f(y&H-Qussm5Y7%5o)2+;# zOV5h5ZfLyjV>cy>LU7B66RE$@vT~n$Sk9=65%qEU$4VOHLiXctoKL3rDMU9JW*QVy3w*iA^}|LNY$o zUh7O8K8Nft2g){ln&Nv;0BOT9S77{q*n6v}xPoV27(xgZg6rTC+%-VZ;O-8=VQ_ay zg3I7AxZ41Og~7rA!6i5h8VD9V!Gq_U{Li^}-Ss`+hx>3|_F6sDyQ{mps&;qRueuCc zU)@*A52mM)3vqpax1+uCDTcv<7Bo>U^hDFxwNhhF3n+E3fy3GF@^KIFVdG zc+LNudTIQ9L40KgpvltZXztb z;d(1INuA$>zYEhbOu`%}mRxG~34=(>G^P`NIH7Zol%_g4ty-Ve_sxxSyV(;UgNzV%B#3z#a@gAok2l?keS%fpS&`2(14idq;Qg!B2$L%s0U#KZVy zffgq_N!7fqQcGv^=A!k7#lS{Q?E^(MyFQQu+Wl2`9Dv2$cT%jwdHOCLFKI0F({S=X{++^@;Mh@Xy_!4qG>qUVv!D3 z0Bv8b`RBgpjbSV%M%HoUpgaSQcm`MdbawwSoxu*614=g=1h}owARM5UmSrGrBBTJW z6fMe&ggqPk-mtA7*xbYM>06=DV9SF>R}+6~=q%E|+l^l5(ucx5s#^2jdN29o5hWe5 z!7mzo=8p|fO&y(grsX({Pa9Le9>|!-rD&{&l$9Nyq$K{LjKNsAig4-jDnI1`xEz1+ zugO`epM_ukYNtO z>zRSU^6W=d7U)~q=I)8FH(d10wWC74Bd}74*>PpT`eizCS?e3>!LIj4&sZo2s4kOV zogyQ2q`hWc>0~yTfjC~vv-;`u$18@_LaH}Lh{NZEdG|=?{QAmX{vXZQF9&L09#;u# zR-h^JXn#?TIuEY};s#-N*NUu}@dTe*Sr-_1SK2;^*DE9_Ky)}S<}Z&)ho8AqTSQ`| zV+l8Aa;pRTTfd#uGUBtp4TM_SC1b&`Fd1YzQ9+*dr5?_P`t9}oHTy=yt{o(~1x1`0 zvvQEf7?aGm`hNt3Z)OabH?$QXA7VeF$C7?K2@N}>-nPsvYy-6njqA`A$MR z=P!gXG4+iW(1K=-^=93N>sJ=-gfe!7T#uejOb+MRp7)ELJx9Blr>bDGmc=ByK~Pmj znp`d+J3B%&@U$R>M%fuS$J@pH7X=|UUipmAcVGi-?r#_(!jz*oji8`62p5`!2#rx& zS*bOzoE6xo5Rj<8Cp=mVbA5E)QST{;?={AY9x6d=vWE)Du@1rIcn)kN)k|u1|?93ih5U@fJ%~;g$r!tW!z3XS}g&!-%dQWN>8wsYP zjP+jh9#tXoojZm5^-Z4OJ=7OQ=bM=3jn~4jns*S5%=v>>GW}IVc{C%TLBpm9$8iuw zHpQNO@3J>R=4NF%KZ5Z{PUAaiJ$0UQj9qiqJ0eC(sJB*`9D|ask^VdH_3lk-<y$4FdF}k z>kHdKSqs|ylDkz34NWhMQ| zsXgZKRZ0QC;>e~{s2&wG%u z&ddZTsA$h#prZfp5bA%)KM3fb6B0AM z4?dcTg)pqIx+CS27RuPxKHDO1`HKKkSl#8^u_9g>EnnPwP`QLKZ3*EW!;tQuY>8uB< z*;!~GDO8UTmwSIvkd3J$L$#6pe};kn0u3Gg1+rOWV<-fK&-sYx@fr99Wwg_X8D*_J z(dh(qKBhA9dRu#yG<}uR(tZC)NZP~a!|A(-lo=A6^wJ-jXa60({X**5{z@yf7WhAp z{|9*B{>XarP$*sWpn3=qT9W!zsNZ&m^0c3LiO#KZQPgZ%hoB?US<&afk86H4nFRGgf3`lGmF(T>#zq zbe;8F259Ko+rCc`B^N1@F(pZT`w8YCan13oun(AS9UCqPmZZ5DOX7bwDTxv|^NzH2 z=f;qXDOEy+x@W_gFa;-Yj_p+VzPU5iad6^5h>W}m)_p*)jOM*NJ?K*X<+H1qTITk{ zh;zI-qi(B1&?fH@HFR5=!unO%v$dlSMC*aNVqIP~E0}(NQ8J)rA_o3|ypPc z5J2xu=xX6eaV!U&*F{570lq&;q_elt*^lvYcD^3Ra3O7f8=%=(epgR=zp7=JZ-20B zaJ*PvqMVKUuEiq&v39r-)b~ZU zL`#yLmVR?nH%g#|S7~)0aA~ZG{0ymiBYVy+P^I1YmMC0l5q7B8tuU6!wBp03Ovc{^ zKa`ZPcQUhBTuF`8Xfmz)a5G0YBO%e*Fj@Ij;baouGU}Spm49SRal9G+XHBZ%)}U7R?Tu&0VKR{>l~%Uh zv!lsB74ty75i{hTvb>Kp0g7nqVJ85+{D^n2ntLxRHO8gYa%l8or)&sbiJ9mEjWeBP zYNDuM*eigV1X?j$=hVrZmV%1CBDO~^poX2yiq1ujx)cOu2{h7x3&;<5KX4EJiCStK zxwyCQG7uB#)oA$qbC~4?;-Vt^@LAjI&B6uepRC#ooam-sGu8``hX8+3()yAq2d1s% zDR}OD8W0tCmn?s#zMG5>cD``|K3T&As@!hY8+6VVc_E<(Wt3_zZQb_eg}!eUPyeE@ zr&>k!vnM3^!(W$aMJuE?gDdBqGKNNiMpdaAb1E24CK0uq?-ZlXScVeQ!$^ArbJMT{ zm+!~f#(@Du>JDuzV`XBF8lpH$$OX@Hf*(M2IX`RDCm4Uvmcnv87Q;@fP<6j*ghJ$o zfYw;;Z{w37d#k{qpZ9tp0g1EiV~a2dv9!LC$zZF{@kFCrxJt^qR%sXZP{o1Achy3) zguW(4cRgdI4FS+Q><6CHS}t1n#anbwSX<9}JkRsQa1ejzCmia7ipVQP33W}1rD5>N zpO(X534B-cqBFrkH!gQdkeiDe-iZwV*w$YZU)s?IjhjM%P=A1q+SohQZ*5UTL*Sxo z4)q99i#B1}puUp3h3LO1Bkgq=McL2^_dgX8PYmaGi+DB{r^Urrj36-M_E?tC88U3# z8eR~yZWgSyzP&q*^&s?fZ$x+WHhDckC-S^81>5%3+LU2|dG=|^vz?nmhxB=f!$1dMe2P_=py}AaVbt1#NCI z!C3rR0|<6phKRijRDlXQiq$*IQw6BSp4p`~+t$}M;vC#5@BFM=LS3<#S~@8?GYJ@iAS;WwZ$-a%9 zHjDM;Y1dgjNAQi|XHR`5!||N;D$uTCnt7)BAqAnHF^T8 zx84v1i^F&Q?4j?{6%eL$x^O~&sdMw8D?brIG(I{5dQftV$|KNBF?fi13@8aG4NYyr3rto?H4lcKTFiBZc)=mtL?`zP{=;@I=s zhyA<+&$dUW_!Rl*1)RY;r3Edt#nPF)1d}IUS}ZV#zT*tWu5r}wW@-Wx@YLzW|8!M5 z@-YCU@Y{OCtu~x;p3HN=iAP(Ns=AqdYiuZOwoLfZ65BP%ZzqxU?ozI5PVCCC&L2`d z-+2YD@q-Z2gUQ@?O`7^z1?|K`Pm9eKzC+K6_1rds*oJq%K9wdZ{07_VCo?~kmIgGW zmyz9J;{<<~xo_;U1CXD-H$l`7gg;f6a*@M(R^o}2W};LJmxMAZ_kK%VDc%}nSY~cK z+zA%{Mo0zl=kcCZ?~*F(T`gXO43Z>9=U*3{KT4&K-;$C1{?&{O6V>iPbR0%?tGFw? z6-&W$n%w)nlPFU=S^>)Y=2eHHmweu^F^XF)AR84u)Hw`J`HRy3A*AMe<~d1P9wqh| zI_Q_=$)J~133Sjz(qZbiWFF0&UHE;9lg$>(ZiT!CmGZLo!(+$vZuri1@`gmS!3o=0 zZF!|sdVE}a$vhwpowbLLIN?55rzchMCj4zNnBH%M_q04lZJ4CT_`{xg(>_TCDD{5* zlF#yZp$~}qbXq@DHqW{p62kKrWs#uSML)!;>`WK32DRu+w}#BG>&6TZ z*$)#HNA!_|?X0dy>~w~A*uRz27MLmgMS$m+hgG~`v-K|))Dn0FHK)Q+W;n#GUKmt9l9~SQRF@f60`llU*l{8kd8^kh_AcAj3~UrUZI|8bB> zqrS>9_m$I3X=#12q{`?W5O)xymc0?%x&buy99t(od6lW7aMRqQpki1w*=DKF%Vc&N zz8?d}lc~Ra`{K*=CFO6qY3Ki=IK28M(E5M<@Ih>%^)UDUSL6RELQnFOuhsoa_J!7C ziWh@uBFy)LaQ~4HvGacW5V)$(Ub@flmY?zwmK>+rya*PB0SrrhUbukjT0WZFNcW&FcGuqELt z$INhV=3}habc@aMqH%529iGKP-SFo>t*(4VcEe2{q0^&1v!JsfV{Gkt0W-qMZ6Xy~ zmV&uBH-`gp6O4{s4eaP{X(Hm&U5`2bQNHg*b~(8KS&=b%5s=_ID+WTWW?lWGIjy84 zy|xN`4na9~g=5`>9Ve`Xer0Ofs+#=pwcd|(y-prvtXEY0Br~Yo2L3Lr;|h=YJ{)}; zXfv0^LMyJHqa^t*^r%at>|0XGpnB5quTOd({3OGD2+Pr$TCd(?Ny;W`cYZlvE%yaL z|FH-^B>DS)hTZ;tIn2}>c@~U&>pDvoy(o^O53-AEEAV>J`fn&kj6^%=c5%a#-$hS1 zcsRq(29;Z{_s5Ci&S1tFklQ5W*xc#=jlNBKCvYLQ>Gp9P`^(Uwq)j=JGR)|i=2+}k zB;A#~PdPSl5-WQ^gqd&B+3jT(wu^{xu}aFTMZjMa{;`VW5p5Us=${+sV&idN_42#e zY`Ml0f}dcJ>@iW7tQUE8go0%LlEiZdzEpM^8wQAKm;kWd@h{3UT=BVU5mBztOChV> zq}$g*)iykM(e5y6g*@#cd0{sL7}E+=^SSa8`FbN)TB@(r7TY(VImAeKM5rC*hg;`0iS2)PAE+E~6MUh-SL1gxE38kX!iB@3P^L;6urb&1*2 z5({IKKZ2k8c}Pix;ZPgx0)vL=bDSugpdYede<3g?a|P`sR>59RUV^x;ILjmiwa z+UI}2s$KWcB;Y-*Ck?oA4@x<>k~K`o0Xg`PZ zi#Vw#%QgesgOdErc$7&_(oHT`d=Y5XfY*YgfgVRVFWoa$3YQj1|B#X>#7g>9hPt7~a5soe!2B#&aFxst4b>G1witz4=kwM5xclFOVID$+KZ^2k5Jg;? zc;C;P{c2_>`p!i+3Pe*coL|A9+V>i@k>@xy+dkVZ=!lDq7fV3nw*nEJk}M|5SlWA9BX{{P%cIOf97m}hbdnsYd2NyxkX@t zl#up-W7!RMKe0rn;S4MGSrtYZp>aJ;;(Vjs<2)TX?ndsC?w3xNJ5l|u>$0$h7iICH zeiBgN4~O60-9i*`=g-6qThF8p+9u1LEb(>bryYKaf`^J7rMIWP!COf%$X{k$L!IY> z+0n?N7wFnwnKmo{W|>@29DfDD%915JmHlYUCInN3RjsDV^q4}tRe2_hKS*^MGBy0x z20AQwEIjbR74oHR(sM`8>xspVD^AJ11WTPfQ*9g7+%wfitGjZF{G%621P(>nQBUEA zR6Ct!!r|97@Wz#H1f^})3^U2!8EsFUVljyqsT2p(!psJjLvJ0^ zrV5ZI1uwME4_dvx@hk7TWhGE(&vg zb)bk|M-r?*#CKsgv{t)PG4GMismU?_s`-o|y$%Z8K2yYta;fP(4-|QHB8n@Nz1PFv z`%P+^YT^*rY>K?mjB*<@bP*r0W>6ycT>j^`5Om1T*~5S}$)%xrnotMaaL6Ew)39@qpcp%F5NXi)TVw z)gwDkcy7rNtiy0cF_w$F^IBQ)Bqv#JV>1GK6*p~@0EXI5dxCJTfU zHCW9QB>|_L?hU!GH870#{r;&E%>Q0+{tb$k(7hTBxe;$>>myleP1a| z+D~15&#-PGG7gM`(Q)M-jkudYa=@Y|$p(p?9Vmb7WMG=F!p5_~r_snrb|-%#C6JHXhj6gaHE@l9a8qWs158Eos-&2(|(r*_k!_L7%u( zx)INh-H0etjU%0CU6Z2(?_3p0bX)mg5EEComm8R-D<38wniYsajGx;8UO?eA7c(h+ zz7sttO&ObjNHV~rMIlrX-Lr8wcwScd1sW7Q);(jx+7bb|s8&B&BoW9IZE6>)dy4Qm zLPq<;n~<9EF1VS;DA3hn_9Av#2Dd8@&)W%cf? zfs_e@F$kepWWLjxEcRnBhGV@v{?7msv2o5iGvf6zBT=3I7T^Q4k}b6-Q|kiiaspFL zCgz`YPu&THX8m#z4W9cp{_EF(NWsww=Az#YhYkz5VC7h4iFY48TBE|{ zUsNfj58ft!xLedq!gRJA&s32$=QfqXF=$D?c}rPWYL)+-XEI(T3M=uq2?T}{|6b2> ztMd8B3|nj}$FU70=rAtY(>TmmxX`LU(3;*0YMUF?OWcdL1;jg|y@Fyqnq#-YCLr1s zTjuUzQHdtUu9K;>+?Xe3=P>8355@dpB-gJi_!S`Jq;AC|4S!K8>qW}08-}cgpK3S= z$y{#@vSYI&6QJkS_EQ%1K<9Oe^IMecMxY(Ob_Ws!hTpd9n(aj0AD9$y>wFx14G z(~dq>{k$4^ae&k$jMnlJ%DG}U;W6;>G&i1ZnYJgq0gx=ej99Nb$ao2bdN{v1#O6gLSzr=z|9CSHj=GJbMkJopZl9 z0Ba8p$AlSdR2?_`8>#2{g3f4}UKSZu65UEqd>cM$uwlzk&VUwG6yC$|o#FB?KVx_0 z>SQQR$}%X*SzGB(wYFvs)HBDk%MYz;AWw7BRf?fosQ5a0XuOVX9skA) zmK(3a`QxIxr(DeNpUSmqBu93T^zb0MCuh|ZwOv`nIKC!v@fR9sPe$-H68%Mis`F|3 zO)9xVLyH~}P?1Z;cb+c>nl{D~)miXYZhbhNS8S}b_qUIwxvty_)DY;Uv6*)W?>9Eu z>I36(o30QN+G^9fZeM=7M)=8e2f!8+4y4o{crSfBH&{8Gg!DJB8J=N62wa;`=6MeV z69k#OY<@_>78pNKE}la;!KztPeG4^=PpJFzS#i-GDLrCCdaMBsK?|CqL%ikB!q`RV z>?oeaQ1Z8}z;a~!MeBOR(y(H1cVcUHO*(vWKAn!?+~jH=AtLsJ2zXqwvE`lGb8t4w zG#}-W`K5-1+lam3&RaUAhG;Ll)N6FkN)<3ntI?e{GUB4G&Km(UE+z(OLha2dmT@lW*~W*>cycv z&>ALsVq%3dQD&1uQg1+Ng=Wz`{q*C&+>$&~_|UY{-11&Ibj=sz&tUik-mT#ZzJi|G zq>A0P&Y6u~{CBr%lFDmL8<)lU>mIRB*FBi7W~@Q8Ol=(J)$a<-Z1=*ka}AKP=CV-o zv{~I#3MZidNzp6xI$Nm36y+1FX!I}cV6ri)kUc1pn2cdU!qSrXu?6Hp) zO8OEiajvPZjDZyWpoQ+{2@$7y>tJx}OiKv8&GENC5R z$1v{IqP<88NJ=6c?H7h0DvjIf{jc5#D zBJb`o9eX7IxpZsMwtqsqo~!IdS7Op+Eq#0G&9vy$69k{|%`Sq}hECc)ik?xf8}5G= zC%6#mk#89502n$xUHLN6W}3&b>>0(lgfz^pNWuM*e;f8l7S9l$0!-O3}* zYtxkLSHm8urqslI&2;$gFAuB}o4X7<_R0Kq+ay6#iUM;}#j4cJ05ffyj-NrH`S^^m z4%|DEMh;3G)M-MU%5~wrxrx<3wGqH0K6gmnJCHlarA?mAZdl=5*wrAIfsdiiXm#w7 zYE5T?qj>T_?PCq-Xcub}j_>VlueuQLlHMqkP+x zXe_-yVhILWbWRQ*I^z%EaUiZnR?BkUQr!WfK&t}@GyWnr-*R~wQ6dSJ_ciJd}ZsDC1|2Z&K#QXf?%-d->2{l-=aF zhcBN&IU8jeCv)n$G+sXm;k{)2V|{Zeh0jJFqR(jErNR9q*vyvnjk~x_KxNii&g(F5 zCBj08#n%3(U`Ymo512$>bZZI8s zBB|r|*hm=!7dRQQ+gs+Gt;Z&^nkm|Y^*lFQ*L`cZ*z**}*+15GsofUQQbw(lfVEl2 zp^YR}L#WgvugYw6-t{;zqKhvfxXNO8o+OEY$qN-)X8(_RLwq=46=HT7F*oDHolquq{Z7@{`EJ+?jPaRBkeVKaT5@=)+1LN z>2)ESW&!W2IQatf5kY%q3Pop9IAkYf=xf=bZ>tdY$V{u^rU(R#dAfN{N?M%IAxunY zYL;*gB^c!A_m&jT# zHB6t611G|*QG`Pdzlz)34$iBE(zsIbF^xZgh+tt)B>}lyP$Z383SnQnV=&M@A-wv% z!=ZAvPwI8xCtPVoo_x>PU#4A~BS3Jje>>~^T$MP#Ss%HSX({ugQoNgOF5cdq zChuJ{-q-@UI+K4UPdGbaB`S||(@Gl4aKrNZKpo?fZM%t!U7(l`YCgbgC9zFWd!=`M zKG)CaoBdwyMcLJU$h@cVSXs!4PFJkxQr6z4tkxMr!DrVaEXB8jU5*0e+udU)lR1Ev z%HdKh%I8^59aj(Njw^hLVnulDp>OUbB?U>^pju^^#_mK?6g+m$dGv}NJ_ih)uiB!Lp=kx@`!27iLtTeS+f53~R((!4^xH;(< zQThH8Zy3SmOu~Up#zxBmDy2`7anN^5RFeYwQ>u4&msy$aRF39R7W9rgTI14Lac*zS z+sY~$jWG%Y3*?fW^gH5{sIuzm4!AuHVpfAx7ydx;r+~VKE;(tBCBl^k!xF*(jzqGnrqhj2@s?LpUJD$ zXmwX@5TnJKyoe)ry0iM_X0v3tzcx|1oz62w-2zml`jph7Ew&D*Cp#93(JGKKrn%Nn zW^FocKmL3EM1ukwdbW=;v_Q1LMO)JMd)gcKPFEnIg&^+o1T^ReKMnHCc@r$Q z(4?KhFf^a8Y&X?h6=c}u3>GqQvyacKg+PTr57`}sD#}CNn~SM()gNEc8%fJiG}HL4 zBo03#YeDlSe&C>z;E0_7;H=iHYDpgRkztw^DAmSi-x~u=3X<_^ct+cZ%{`5V2Y&W_ z8o_uQyEGFR{(?SzJ`G3`Xji}8bRR@hRWjQ+F>aFfxdM@ z4bvH%pL%|^6jvdO7l(>k@ndz1iJloaT_mSeztl@a&&?N7P;6|B*(h{kF?D?Y0@fph zWit#|%~>f+uKB4k`QmaSV5z!8-_5!-e-%p@rlf-ac{$IHXL#27c{^Lc3m4O_8!MfM z2K|v$5Qdt{Lj-^HkTx{gd zG}m`$iU~@iMVIJFKei+B(sd$B*X2oVQ>ZXJd#OknR^}UQ)>L-@I&r4=q)A{ zz7tW4f5bmYc<9t6VW|@)o`@SJn4A~#QkW7CBYy9CAvnQxAu(~JS$?yz{?=og4q#b8 zzP>0oIbZuM{dG-m`>6?C07^@~f^Jc!C-%=3KPJ|T)9U9N2~5!{VvXY;PS0vlz0aX| z+8wV#S`S=Rw)@R*FCSAMhsqs}?;XUxIEp5ZlZ{-IaHgInsrpKiunnw&#pdwPkXmnY z&s^ku@pxnt@(b_U`NS@vRguG>B}EosS}E*LGZ9wZqY+~eHy|%v$F;j>X|L2+r=a0N zY&uq9l$eb+HY(lbEa?;8E~fkM%e{6NHbqC+Zh8fMNyvxWM{zsHB!)&q))fUhh^e=vyTWsoy?b2T54)DYfi`ZJ`M# zIUL{7>i38PJHk~GU+6oLkx2S5U%G_jZzhPaCa5#_7RTl2z(~z&qlQ6~Ihy1TUHm+u zN9z60qr9_8t}OwX*>*u9)AkQdA<1G3V>72kkwM-1*UA4d(1<$JZ@tdhZL-f#EHhab z+8u^7yE-xcs5|*&U)xc;^99|T6P@8Yt9r?~xbG>NSDThz6J1a`F?Xw*tXmS!ZcHX@ zd9uHmuicvAB_SrX1q)io$m+%fj~K1Tw{1c=k!N;+VbtIQ?NW-UFC4(F$$0E9>q!5lnG>i-f)nd~1-r6Q>(iw5xQJuVzz#|LGds0F1NUQESr*sbLlBG$wVn zrUoiCchh$uI-hu(YMo3e_%?QRu+(?Pp;!Az@6%XI6=`Ea5f?Y%<-C+>D%n{>V}KTSLNPk`-I#_kQd$4U@FBIy zCd>l|S&Z@IGnMbK4F{p9-!L!nK!7BZ$&B3_n^@RyOYM=Fbx>Rg8E}ltPP= z(DIRv8Bgx?2>f6O-02h}x1I!Q``wxr9xVM^>$>-hq-ytR+MovBKuvGIGnNX67aL#BvZ}@y>;HKVK-`xBt|GK1UvwQ8%S4D&u zAKf@3;(~;X=Xwa1bdU?}?DolBT593udYsCXo+u-tmr2-Fn!>=0f+fo_g{;5vqSIAB z9tFhUc!*SwJ4TLay}zaW_%r5{XXA?sbn?+uaf3=lwFM)9jx!qglX>#)t)AM46wluH ztPPH*g_79ojyBmMMl)aZvP}8dDg$(*cY&0MjUkTQ#YSNX_N04z9wljsWtF1L(5B>F z5{xIEmhywheIBsnXtm9?#Y&ed6t<@Fg}QrtVdSA4f3`%6H(LFrtc76JMfD( z9vWZB$J-<|=`)i0c@^w9Og+m?afLD7^(!o?+yyEEdZW^=q>xdFk&9U&NH$_T27IKH zG+_5F*Ku?D^c23s>2C5f`Zi`4Sa9`Wm*S60-@NNKR}II*i4OQVYL+bmcllEYGSv2BKMJ<&gGOdQm+ySi9nEM6m(XIk#^X|gyWW3{X^>dq`%orZOd80yyASbDn!=T!8 z6QeRR8%6m_(A0wy-#UCI(}u+t%6N#;)01>vxe#qe`p^aJHABR{U!<_iq<+_XFBa&w z!9KC=IPE3RXr*YJ_CrDf=xF*_?gzDvQjvM7!1N-AksUkXqE@8$;ZXFwLf5Yb#)l|1 z#gA?02DVKcd&a|<36sO#)70d(xUuzAY2QNv-DRdTt(u5IOcn8fhOsZ>VSR~PI!xj) zE2cI}4jo3=!W-7}iY;NI1iT6>s^i*S=_yF2?HQ`$c1<>{!`D%fYEaLGlO1D0-B+&T z6vAjcg_-VNrK(63rQb%)5<#!}+enqq?i}VH{TSuR6jC(#IkVYaY?5rS6;9^uC!V`G z%!jjiUKh6q-}fx%Nm>XngZ`=e={3~;Os?;tg$dMT)l~Ybq%KUZ!Y9>ISn~98*a@%m zIHWeJNS70OQAcW%9QDBZrB%&esLyGsgtVz5vh9nmM@#I4ug1uEJuNl#NoXK$tgV25 zl#hKiDHS#4G1gArb>>U(o9asj8)-aSPcsXlYw z1jd7&i7|2AdT(z@&q-2*U6F%fvpX+;^{3Z3Og{sf?mEpB*JQP=pbU5|UYNv#$B)6z zxi%{Dma8i1!5Gizp;I~Ptotgl8BEqA)~o(RGVsb9eqKlErkJ`57X>xF;@l8>=FdhO zXY$)Sh|N+?ywGfv_-mE0l{MSh;=O>SH8-vtu@}X2n>^%6KMr48)WHrR)kZq4n6E;k zr~NI$lh5FSn9|`Js1uEcLAZEM(iX?ZfyjE@hgv-w5TW2nPgt-5<%~>bCm80_2jE~E zGo^g4ANn`P2_wsVYm3jnt%;k=|3?_g1DToAn?tIDFUCjoW}=S9zdUsE5_#QeJ1}Se zQs?wiGA6S!9@sVcm@A7|EqBV1!Cq!NF9+rB7o_eg;IAL&W!B^8Z*jyiW`&FOC%G#A zn|XyduQ{tctyF&fv0Iu+Qy886*)HqXhk#j-afBYR<-@FzcT-~Xm!<3tHQA~wxD_7Z}3%|!BQ z0%=UA?SvU^q}ACxg!g~!{`#FI_1_Fye8r|@$-_=%jI#|pLeF09dm=Uljs6V6jFv?` zt$&k}BQn+`P&DlmojFc0mPP7iV=;2R&xP|tlbvsr&sIDEyASz3yB|X1P&1Yc?%x3? zei{_8X?^Fe@W!4qrf(q`@W8feED;}q`CtF;DRbB~I(zTC@>f&9mb>nBUVGUf#jrBY zEOw(s;*hVRsJ5T%ZaOzm0(WU9_M1w0k>V?3Ri4y3LYw3dk|e`hg*-nY&qk!dZ5Oru z^rpY%K(D1;Snn_Hbu&^vJvJ0L;AFUG5)fC&i0q(SaSnpVVxtYTLfD;@#+=YUpYLxD z^XR#7!8~(iZD~nthNVokQgQQL9KYl>t1yx9x&k-Q=pN1P5kAnP6zS{4+d1Y#d z-!%DWtZBOlTHT@<$M7B7^DBX;{(0S&i|Hiv1os{(ah%--NCP;$r+}Uko7^v}G?DG% z+$D0%sz^Mj6`)0=VzFxYISvo!eA>slPMD!FOUH05LH34dEP<~>V!|WKn(S6vvzAa? zby=_CTJ4O{evR_m!3O0J6W5+Qwq3F!eIv~S%z>D5d{3VGpEJVl;}pkJh7~~@eu!Xv zW0$#xRo8*GJkl>EUm-hS#*ue3-((|2;3jfbDOSQr8>JKdSvlLR$qp#Ld5BYJmJISJ z>7hsT6vk5`M7RXbrtM6+f|bBJBC3L3LdbI}9kV zLq!^y24>vx62=U3^`jFE4n$O}MzHoK#6^ChHi3x~^3#!{#6TST$LVU^t#kZoyQbKe z+St0F{>hKIuT@WivW$IZ`8`GzXfP&|vH7pp=LZhf(AS|a?WV>WGqFV`(=}r{`PP>y zeYDT;S+Q)`LL0Qo5+H8Y?ID8lp!h`jU}2ggoRy#PAGfW{6hHRePG>;Af+BRjuwg%@ z@2N(<^dh5G`H?+EbUqV?wk0AMz$dUe)~*&QwOc7Ud2POrZon4SL_*i~Jm<^{L-eh|vM*k$tOR3EfaWvU7S93r7 z)+We4iT|sATa-K?p_az?I+pE5q`z=}qGn6LGL7r?XH_sRD84PqX;F932?lt6;~Y`# zhyOceeg5pAy=km;n};%87h>J0xZ5FErP9o3ne7%839$4&hdibyeLTISg|I4}JCnmd-D4HVo>n)9n`o#kO`_c^%yrQ7#v$sqrax#aP3^~rwOi~aVNlTIx@^0rC6&zH^l~d7-ROjH zgA$WgOm;YdY7N3(E{}l+goM!JuWWX)mDm+Ap9>BJ4k-0>R3oUGY{v^&h}D^5VD8an z@523A(T%&%RXGI&8z@kUUL`V{3Q6D9GfM2$#BCyh9G)z;x#_9|U=aBpOVm+htv?)U zq*P%#GLM1eq{DGdfX;#5nv@XBSY?d*;MU+-K^)Y!9v*OyM4GX470Mt)_LJDq=YLx| zruBRZ%D=AYY{M8Fv{1@1xPCs9WiFT|AJ=3lHpIm38m1Q>6DIq!F%Cy$3@V76B?Q77Y*O}YG$$gg$pakp<@fiiiasX@I<(Aj8w9)f@#2^)*R z0W8IAe7f2BWSlm)s`iMMs|TpbYg(9NK#K%G%)xZx)8oz^C$wE>mDykDRB8sgr zlOK_*+z^#I|ypoLGCLQK(XGslWvud@AX}5qm z3C}G3wOc(;CGM)Adxe9Ww@JZzols@BmmziCuS*wXvO!N|Yd(rppAMaNe)M2cACZ@F zhv_F)Yd!2^$l`dD^!w63RDY}rGo3Livu6y}uS_hF4EKZu)!q0H>W8Sya~gZ>0ED-T zPs?~*Pt;5>P(_O0aWTEWI)f14SC4(w*vh-{Km4smfW^)oruQvgNyGKL($5g^&^>QSQIg>5S6V3cVA||&|`m3-;>pe ziB^x$Yo4e~`R)z?MHv|q6nk_d`}cWuER8J%!pV&*T!iPxFt$v+Uy~f)_aPITXivNR z(-FLe*>T2@)8*4zgYMUuFGkI1jBqQ;EO&a79G2L+Y6X$9uW^OzdOGs#{k;eqjhkux z=jlH<{-Y3FR4%;$uacoycO}XwfaI5(d{};Jv-U4I8 zhN&R1nhXK-#6~9=F!EX>Kni3=VV&rXPzr9(>E=?mgdw{e%ni6;e@i;ka zLe%Y3kP6YuHtuYo(>K-~K4K(<&pCtJ&<+J0a7So=Lpz;LSb^zG1k;XdFj|*^euVi7 zhA8xd4IWyn0lGEw+_Fbh7SCFyCQoQi;7*K53i6w13&LeQ1fQiyZV`olQBLJm8$wG- zE%UUB{BglzVywQ}Ius zv<)0rRk2t2pfkRt37M}-cW0lJ$>2;W!Oi=$;3%msw;t!hD||WoZ$@*aLjiru%3+F^ zr3V21`W@U_CTr+Vwqb(0$NFGI$zK#srn#7$CE*{r$b>we{~vpA85Bnsg$)i)aCf&5 z+zArgVbH-XXkc&+9wfNCI}Db=2PY6T3>Ms7f`kOO0NHuJ@7t>Vu|M|DZf(_W)vd1X zsp^`0Pe1o`-*eA-9_gt*LP>77-e6No5>K*umbwPO@o~X z6OV#HqH$urhAN$RWRX7Jvkln|jf(vT`PFoIM}gtAbHh}G>r$_h58wHBnog6o#7_ z%0ka?LPpfV3Y;=sR2ve_5r({e!7MACj7r+J9Qiut7%+6uD}f-6>0hqm0=uFJDD2;a zfS7rP$*qEGt*WA9psOOQ5pNiyW2#ycm(IL48-ZWhE=lr$(%Zv(56OkfwR-+0d@0Gi zg);eL1Au1-=(h#97$OD=YUbb+7~7NA=U~sY8)c=AL$ECL4P>wQ6-I=x($cV9$Wsc? zi&XbjOHWmPUGIbU-8Y<900}a-zC9hcR?E(h-&b8Ga}Y7T@!;+n1Vh zKMOP6=Ok)X#dm*u)%k<~1ZXO!P3_b~KZeh&tJ5{a`$x>DXo=ohzguoXawv%KqaS1Y zU2-9U;X20%)-xUHXkoF|>2_6*k8%I$KI>s_Ld}li1ViMfF7r5{7n@!4fhrBr5Kgb7 zx^SPGakD8Yw$oL;Si*Vou*vrZXT&PYEcMQz{F{_dSsJU{kc}rVc-9FS%^z(UKa;0e zhs2GhcxAOR!TE~}RQg(xR;gqM0-P>}CuB7zsYynH`@VAC7m0j4h*ZtVPmbnvY3GqDF!YK7y>SY&WW>Q2>`tzR8U$eXFbdjO0 z%m){Z2Ij`^muwXpYe?8WZg3bXH6e=O%17T*yX<$Tx(5|z5XQWBclF4W8xiIvYPTB- z4WS1l{=SJqvsXdtpku+7awT>28Vwg~d)Tleg6EBB&+9f2`c)1>bAdoY3<>D|5gQr&;sQfg;usv#`#W-a+xbU>)k!IBAK@#~4EO0=OD<^% zLtxdaG|d9-pfimNYC%lc>{tlt_HGd0VM*K&mSpir{bdw} z4vc{G#|08=B}_^s(F03|um?IALih(NceorwHSiaNE!dLKe@Z>W%Tp~t2fqaaWt0e| ze{-m|J}%`E1e{zmPd3u@_u4UMN!fSwi0r&Ld6q{sZv|5A9JuFr&JZ{lpn6^P)?@TWdxa!}k3o$i3xv6AR>Rd3&Us}~I__n*8v5u9l39U{^ z_Yt`FR%Rq04ueVNz4MNLL%t&nX0<-?8p^ptF4lxfz^xNO|AoJ}#kJw0_&P#rM>(U@I|7fT+BP zZgv!Wm|BEC9UJ?%8Pc1`*ThH3>~n*6D(rmT=BxO}^*%)OQoe1-CF2fQ(kPB20XXRm zSua{yJ1HeymDr81-{;NcT-hh5^6nWQ`!o;p)09gXG!6Vc+BgVC-S;GZALDH>#_tL zdC*2fYZ8Xqh;Uv(iAI@uyK%q&@Mbjyxc=|1W0Pb`wt22+>~pjajFZyhctvy-Q6-xp zIVt$WLCvfSA5ny>lO+e-dJA@=ceNIgmd^X%*gbPAtC~Uo04YtXkSOhL zGMZ!74n6w!JOdr^RiUc8x0?xvD`fDz4*)@bU4`>u9@_9duspkINjpa}A3AmnjCdeP z{r+vQ@%3upUd-DoQuHkB?VimSwk+-1#dDXM&wPrnTvn9DZTW^dn)=MNKQk#3+-rmK ze6Styje7!!UW1TCU=$OCY86}c?22*91os5G$}IfA==U9~3C(m(N4wKQW4QCYiK^Vt z)ZSWsJe=9|1w>p5faet3r(jhYyPur)eXual{!MXqq#B%j^Nrr8!dEu$tmM}fDX(Om zWizwBOqassoqc3Er1s<|UKOFL5As1qn8 zv91u8+9s@IgMEz362{hSX(ox7V#l6#Z|fxaYI-kqrpx2vDxt10;p;A^_9U9)bka1D z4SFzWSXby*nTwtbV8qlS%V;u3PpL_nAY>CIfZh8-?G@r_I&zPv=rlrRc01_lsf-bp z0ul|=sI6}ytwQ2a)7UoX!U6$h@VdqZn_<6@karmBc7t3Edo#oCC9CVzj#v=n^(O~) zx_{Ywl5fXf(}VcIFhLI+G)d6Vm}M@xwe;x?af6%M^6D zDvaP5;>KCS8C!)OW&jsgP?L}jyl&Eq+OSnHaQw18Qn)OZb~sOwW?HkfndXBC_H46~ z^Ek{aoJ91iO3#rMWNwSbb2JxX8%{EYMNrmy3%Vm8y{Qqe9%Jlg#?v1#m(=0@Gfxup z=pyl%jFLN00o>G{mIOMb;a9LdYsRxr${Ivou^h<;T7|b6UQ`l)!x{GdKy&n6-{1vH z%-h2T3kY4TO8GtVjBIrGa6hL^!!KX#P_mh23uu0rk@Bt);s++%cKie~0*JT8g^5+R z39|IBAYR?n*B(TpnK4qrEU$2MMqaQu)qn40kU7;o1JVDd^-EC{NvcJ5xz9A7C=ja! zY&^N9V3FdMn73y-9iSeM^U>MT7$f&2wf_OMKM0_i+0@L97^TNk8wSrl)>2?n3;de%7hw`$>a2)i;WILeJGFp=J-4=XKZW zSR9$@f!B@NUy@gqmS@>GQmgEUT_bY=TwlHC*mWl`e*)<^S+u&O=4;|A9Glq|sB)}7 zCZ~1dS@)KP;*Ns_-vWv`_}hx!fbwsK891tAR}`1^l)m6Jr+XaC&g?cTtd-C1ljfG1)e>Z9~H!JHWc-4;6qUZh@CVU}FY`ak7Ca)+2A=Lf)Aiv7`?^BN`< z#zYpHfw)~|HzxcE>M-9j2!=g@t#A<2F|xrGH zpB;kf1j#wg17oo=2kox6l{vK@Sr(OJ-#oPbZ{>}y#_Moh>SoCGI=2v^gzL$hrs2$P zwKb|8wmgcAKQTYeFp|W|&JC$`HRDnReC6;!_wppJ&s91T^Nj%hv?bwRZDs=S7ooTr zMP}t?Uz*`SJr=t@?oPc5alg_D<2bxv0mlVHO3~M4=5MhR+In9>b}0!q^nI(+ulR+( z8K4`hc3d9+XJdoA(>V3ove$NoR_Y^jgMvI0dxe3T98}xOc%VyI{m4^YEN$ZO7srE; zIqEr%WAA=ZM0#aZ8LLW;AH#vx6BpKRE;DX-Vl4hfDF8CUii})ak2R$0;x3ss1G0ycO6|N)>#CAH0<+J^1#R=RV zHm>c7PmZbHKSqlkGrVeqwsCA3^3eO&`j_xmgqAJt_beSW$b{d96AzAj=A`jZ4&03h za7J$KXyL?D%Cf*wcZ*bJHsiIOvkKfxRDs8SF04LVC?!ycW1L1MrEtf<^&qQfjznKP z_>sFLCAG%~{{_l;Y|A%q&MVQ4AmA@jQh^bN^a6wKSk}#64$@+9ZGtcQWb$0;)&B{bZ zi(o%R8q=dnz}g^Ku1Nbqr(i5mA?>NNx70T9&fqEQPH*P`k33DP5GQY!xpGa$yA!-M zP^!hfaKnsLl>m+foev~KOwz8mr`DLoi^c;x-D#oJ-tNi@ynOvDK;(E0kva=*7Bw8% zz^>TMCmH9|t2$uu#z9z&NHl_RQf9SznFH0Kod$bC?R;r)G zp(S!z1#-@y1O7CNR$9QT67;91HpCQjh5im;L4$9%@3T7zijLC+xVa|Qr5vTMYS@}u zx1D*P=?npzoeXN}-rO@K2W`Q(iMwa$4$CBORpiYZ5J(l=k1t&t-sg@9+7T!Ko*!6zy0$8ch;8Lsd zC&(y%5z$eY``CEqZ*gBCYx_5LUl(}l1igbi+BF_)=DSAUlTd@cxe=j#$30!W5}n3z zN;z692S?~qq%#vHE2IhKeDBR@yG~7xS-rlX^P{%t^mb7txKC`*qWl>Kd-O$=0Vw{# zzo5Qct@tcrbbk$I<59+R`DqfYWSi?Y4sSbJUfg&kQm4y^ze3gtQE)#IvDyRHeHa?(FDGo9RbLKmC&P2@*;zYU{0b-`DnA4aL> zrYO?6A52~2uf0fxN|qIP-J}w`e2;qTbfj$Eq2p7nSN2-ugX5))+({O~P)YeGsrB|! zD89#T+ry7V^34rXgVC~E$h>Ox4oBO&{Ml)mIw6)dMpJJWy%SG{5#QtOpNP8B;uV-9 zXTvuH&P_jkj|DJC{mg-VLI^l6_GX}Nr`uEfffq6|ps-2!SwQA&-NqJ&7*R3!MKdO=TUX)~_RxMm8olAeq4zhbv zny(Ex8t;|6BmZnHrl*1^XLv^>Q(^VmDN~U;HNkou4g;q2sPP?`sRGxImEI!rG8pZx z*4V2u&W%_WBuMug6nS2Zza}PT!acQg4xVBa?*<8|lou7KDCbrI4cax%8~00mon)u_ z(Uq-s!1GEU)2s-jIeZ3Rf$F(_P7Y;910y{iW;3*LeZ<8`;O0yNm}a%^_e&Fga)DV;xbNP`^~?? zgV0I{><^EMR0~smNEmbdN^JpgS3KN*sufe|&t$bkmh2)4Q%FH8N3=b=5!PM;h_xhp%DHom4bt$3}=2{*N2+yeek=+Cyu!$lf4s zUA}kFXdWhM7TtYYy_QUpm*TAE7dO+Y)}z#Cl-N0At|ayF)_wri^7b^@yVykKM}qBp z>P$`Pc6s&6VL}qiY%q)}*ML9nz@|}{0}Si(cNNc~O;<%5!Stl5i+w|Bvff28B=giaE(mbCY^BYZi+hx2FC*U0$pWP_k~n4eR=#9S)f78V2m#Y6da*Lfpvg#wxG4MFrVZ!+3sREErY1rEz^wI;6z zE6;;cx2VS#r8zRn_Ndgzq^mgMOcTn;EI_l;j){|wn$QV@4h{c&t5Cwv?5P5xU{a$| zI)k?Bi?J}J^HK0@tHDIK7qhEmP5}1F@ z%K;6FH99Wk#EPLlBmf!78a=JJ8(EvA8|(zxY<>HKZ6}KavL7mZjjLru$M-{3vA^O7 zUvFpbhGf>mG1NnwSbI2tJn+dyvWx1W&nEnK2Q$O*Fg<0Dgpo6N)gl_Y_A>VqJJ&KS z@v>b!j0uYzV44js;0T418C*gwukkfZf_dJ|<4n4`=z;ANS&6w^;5W6&dhs@NU>6wg z4WbD0>*T?nYL!fx2nUU6;Cu~QrbgS^z>QQsT6#MU656(u3gVpGW5PH*M%O_Z>> z3dm$v#3eHDF3F)`O>KcDx=S{iW3Fe2IJ2#4X14%Yg)72nP!sS zWk5`uG-{q#kO|L=h8BzWue@1bd?Bhn0d61GB3$ZpP`Pk4KVFg2Xe#mFg8lL&6CzS8 zv!rIv^x~60tsR)KABe5K2Sd6~FG)DY#FOiW zxC?uek43O}jQi_2(aR&p@I7}i!{!rfdyQt@DsU3!Hvbp5l%FQkzRInpqu_8`t-<6d z+54ITN89gDtesf-z+};to?6Tc4x9BYFP+KiIsQV){B%Ru+xrG^+I#NQ)r#3|S47Z- zO6~JR!RPFCZ%%*edFQ5`n0B=exi+%^X5;H$wu(dIu-bQ0wPdd3wl&p+R^P18`yxGd z=TunE%^tAQK5E2=iv^tkxxQP7{93-%(#%7-PhLbQR}@N8tVM=|_&{=*+tFOCKbF@d zt34@go*_6CFgDc-|G>bepM$Uc++fON^<*~mtlpAm>c7r&=JAOGua)1Jh3Bs(z;lpA zj#RUKggzvzJhVN#e9dGL7#)fN4&Rog$n5k8d*$;Xt_C0kw9wH_bkb=3i~IfTJC z<(2aawsCi4l8fPvJ9Z3Lz6ck0ZsSV&@G#r;8?u{fAPEqayc23*(Y)j|BUpr_GJ0nw zj&Z|NPPV-`;%yUGYgkm2Up-K~fS%q7u z=hBE7`8DC6H#eBrArt>FufS+VOc!&=nW6`y)aN6Eb)n0hhFJF&FK?HT97@Jh{}4D{OCYC-SVF*BKsm4meHct!6&8h`YVYb|0^2DL`PRPL5$16c<{H7Q zT)4Pc<<6ao_*|~Y(jiOdrl(z|I7oPjSbmU+>>%_0G}9+P zXP(eIZ=IrT>-IE>2FCU{Yg+hJX<+W~ye_(7K>_j*xh<7)ae&@*MTtT@s%&$6JP%Z> z7KSE>n@{}X5{|7A^`F48Ql4^+CrcXBbnRTS#h_4#&s>+};9`P4CbB1#GM0K5M&iPyXbs|c-iH{7Ih_KP(p1+YC`l|Fyt-$$#9Bd4n- ztG4McqUllJgvAd^5AnI&R!7yNe~2+6bzNFafNO*R-YkPIno{#L$L&_?iehbp4_Mfb z(m3)X_B$8sVql2q4Yc9@GftnW(dby*n6!nOWl~5#QE*>l;vV-_f)ykobEv{Oz4|9SV;p_RSl?x*ssjf;1 zlNBM18=fbd`9L9DrWU&~sKsPeL?orCQ+~QmTb<@4m-UjtnPHpF<>-NKAx~kJFC zw~n&BFfBjTlzL+GW-H9qm|1V$;QTVA^lg``anHWbx6&COQ8fU@UAOK8ujUi~Xz7_z zfUZpZxyv{7=@${XsJ`Oxi%)4+#zGL7K7)gSOQ_B&7o{9l@h-mqrGng5rU)bvbYhHF z3LBbHtZoVqq|}J?8J3=N@R5s_)^%+Ip?g2j&MbZi6T)+C7TyVnb1(Ay9_{7Y#7V6F z{#eF?o3!_^Ig_@=<#AC?VH0+!tP+Wd`mk7Lmi2>LRD*9nSECavSiq<&JtPEVccKyz zgnK3{(kyX<-hVUEfIAG zQ?hc1cn#AB$qZ-5J&78aNR^hL2-&33rylM**I!0w(^VIi3kCvW^dkQNMXeX)lES^& z*FvOidsGe;MV1aW@Qus|#8UG)-ulwAMGse~z{i)e{opwIarD_qr#4s6NSWnIm<{rl zjFQRKN`$FwUL7;fxSO#Jxzu)c@1a~PuEQ(1kc3^?QOii1ezis_;;BxhN9vCo?eXC# zO^^8Nxt$Q+#M^3yfpuQ$KPHyjd#ObXMtL+mI^Pl7Uj`8;^Y=$lr9EqQ74sBiuLOo_ z>69Sp%ezA==yVw1y+Cm*MErW7b!k>%MH&7NfGg5$^!bY=s=;dc;vhlHK?M71>HHWV zO(TY08mi7X%k=qkS_F7D*(M=Sjp$R$b=AyH_ZH{8xrU!(qFOWiZTtNKBc zCgGN42<5$-bYu;2rGUPG%Krfd%8j(*>0r3;8t92_4s>O@NUSapLKtc@f5mG(tp5QB zbz5WJLd-DW3$-tlq`S%OyI@xV+cE(sT|KqN9%crEbk%6PhRoCWC`qVmtaz?{+h(?M z)MQYDiT|2Ln%Ynj%<+Z~f-P`m$*lYj!2go5IQv)LH0>TM?ZYgjNac2?@KpbaE95u- zr?Y2ATPklwdcg8LQ6PSo)}7L!QyB{377~z?-?ZkR|z47*CtS=eD7-0=K|=HRSPy51=R{hlT~HU?$4mG#Qct2tLuA)p;)$yOx*4`Xsh&pT7}0)Y5cr*f1Imy`+NN+t z@@FWotNQ&@9guNmNIz#q5)Hgu&u;ThXPZ-d3}R$K_Z}+GdA#Uo|8wb_w4#V~9Q%E*H(Kx=Xv6EVD0 zmNbQ*0Z9%vCwoQ0b&^sSSF7cM@xvE-v~OE2NGl|z{#O=Coe}Na2YOG? zj$z}5ULMU$Ww|+|H*E460VB=@LY8uakn&kL>N?Nh_3*xn2bcvMg0g1uR`;07L zdBM$qLthd-p+LXV4g_B|YmwuMt!_ZaELf;TC|WXcaj~>su<>0znUwGsbHy29Ddqu4 zIAy{tuoD(q6Z{2P%lV6 z%+C}_);^SKQ@QO`E}!G~!A%#V&I<17o|+^vwt0}!^f>*xv^>|2K7bKl9i^yA z$KLzX<#=CBeb?Tqg`t{wOJd>@M~t%A%s? z?3mgHIbI`-_4rVS6tLhpF~OW+YzG4iU1->*o-K|nK^63}K)Eg{=XLVDgf3r2su?gg zIf)c&gQd!L-$Xn3f%04=A%+<@d5Zwhs%P+?3I%rX8{3Q(XD7ADu9@k4&+{6)M5A(k zhShG|zdFgf{+x#eJx;6NJK_5}*{dts`8(0#AG~ab!p2KkEL&M3zY33zBxDaT!*3Cc zdAF9%(y>Km%z6%xl$ddImXU1bDzDe3qJbu@J%T|@SnE9wV}xD1lHw#Mk-HZ)c*W-p z3r86G_cq0+K*mMYKp(^C@7i%<0G)P@IH9!D&|RMp4u^Goho7!c``sfY?(3SOR}=N8 zaXcb0{)JFOIz!XBF?`mkV{Ncq?)>n}I6YOG+e83;LRdMdPdq&mE}0~)89VOlr*tFT zGGUjd6LYdgs4F+_m+QL42}-*s9zWJOuF5QPSl!+WT&xznF~%xwyZMqhnWu>457O3p z6Q$DTWU<>iGZ=zO_j;taiq|Lek6WfX6DR2h7HY$t_A_0@+9!!<1R7TFPPeWh#jAOI zBfoOIdS7AF5%eb3Bu}M|^lqo`k(IzzlD>Ji-_Pe+I=}NB=OKhDrK#d0Yfj|MISO4; z8n6Dog*nXNt_rnyR$9pSX*`3nKh@3~{C0!j(N&tkWH)*$f1ARp3}}YQLKb9Q!r!98K^mvX460RB+LFp| z6}8~NBEZ_tv_Uv+HJI2nl$ZO*-RuggMFpSTi|Kn|vg6E>@H$SG2!ssBzqh6mJAQ;C=eOGt9$z0DkiN zi~kSs`PC($h+RlFv76upQ=Z0*~4ew0Y8`*4j6H=;=rOGSJ%=LQuv(!1UUu!7?5; z^V1hhp2#7f+CM?#;ZKM6BEb!`h=nV zQSI22{rJ!+7vswCnA2@`2($9{xe{yH(qi_Kt5$Y{ehbruw2t7r-=BY}rbFnvt-FB0*qO?qN=}Z8M_K&uw91;2 z8wdd!Bb)Y8^+i%l`(KMPGSw$OfeaEMDyKL|i!yx^HKv*-Ec8#Q05I&$D8EifqNV_F z$mOW+M{U8l)|v#+oVMDhklH{m_}fhR$1glXVE0cQK;4q6 zgH1c7d3vQX7I>lkHiQ`10=1^Urlc(hjwT|anFxxg=;c) z=lOjHdy7Lx)jc4}UW`w=GOxooq^g0{`#wRqjl3^(O}fw=K^1A>{5>6RbC%FdSB>$uH$P= zyGuR3?l<=lH5-N?p-+jdXf)zN+}56AY-e<>9c;UkODF96d3X zOL=nGc~1Eb{2p@Xs=unH*Z&O~Ng3A<{21F`5cy)Z>iQDes3hN0Pe zn4a(mR*4nK*Ord{0sJ4nzLTaMt=~+2s2oI_JUjBE{uyJlue6(#_$~R6V|i^tPD!O) z1;HT-l9#SgY5O-oO^K?Sb;}$PcT$)3Idg& zA}>}a@58_A$`gXm?mIk1xP*KD0R*Ml)K%<5YXp%RKs-LHglf=9Q%!svbc>xiNg=pu z<|q7{yBt;%tmAd&QHQ0zDQ1K2e}K`gKho3<<}ZEkpUJ+~83$SLZR8pmyT^mZ$wanJ zm^4*H1+{RprsscK`YSdpn(CDJy%z9tIG-{oq@S+|$pn(sf5?6C&yGR2>zbrc=~Y+j zs#P;Q?rdef5=cOX_nczpEao$#FStri%sQk+)I3(p^$=eK38Hhj({J--jQqWJlx|BZ zeb-kL)B0qgf`WbA8(6s{>B9PCosL_?VE-q1PQ&S@SyBH4 z^furwRC&LETi+U5BIsqvk0D-Qv@b=rkCc@L2j#fn2fQ><-f2 zE%^5BZd&(-K;hN#Bw`N<*@;A1XL{-7mllehPAwy?YWk-WbfqsYmD%#7NJ%n=_QJtC zike~IAK@*grQ<5wjE2s61GkuM!KvV>n%06rVf>4z4)L(&*B#~ZUtSZFtzKYH(SS7B zLkHOKL_YQasx~P=7w8I`7Td73pz#H?$mj*dzWYX%2!-tY?~{0;{Ek$c4du_FhC==U$4xzf)GQmT1&^*Wi$hql)Zz!ey+qe65i`3hvmfQW z&jrC8GnRy6q4BTw^!w~biZ*CM;F*(=&8E>6pwoNRnixgxbHGO2F3>{YDY%3K{fo2p z4?tfw#uHqde!A7{!QS`gt)*pSNW#XUs!DjIZRZ1vgWBJmwuTc9|0DZ|^RA_alUiTB zZ}Dg7UL^D0*{8`@6W$So>kwuXnFrqMT3SXEda1-+5nOXJl=J>*JV119C5hn)SZ&5I zp)4D@vDZDz3t5(1Z=kqlt@)d9J`e>zeMnRR<#lp)@ps*QLvy;PmkzjT2&FGy5dQ?y9N|B}6d&&DVS#9S_vfs@)Tu?$ zcfDM0i^8q0UYG;#aDWbUMhnne`f4w6&*Q3#7b*k;IvxqKWI1x!Q^Ud+QZ2L5WzJLQ8(RUldy;_P>Z%vQNrmm5KUH zmWc4q^wUI21q_44wFW*p1{XA(e312)dA3Ri63;TNmMw!D9!byn$D;AN+DEKGpL7AO7EBgGRLqK2htw zH-9A0513kuk$)Dvt?2D{@*-4;$xB$EK;pB@d8JxH&NH%GqmyI|Y{qK#p(G$daw?G} zLtpqrJWNuH44R=PB!rUb4eU^c*Ce}w7~jkGfcsPM?Vz3V zt3v|wdhvBlcB0?pC9L0OT5EC=EY+k>-2EAF3RMxAgL8?*^nI;1&tg!9)v0cbzDt?ElA44el|ViEnSoi%sV z+|)5#hv8I^SS`(+zLU!S{SR<~`|c8DlV_Cd+=Gb2WUS~AdX<)Z@T1KsM+_pbX=`Ui?4Q?vE)1;M?lxOS?u~rROMrS5*K4F z>8g#SPvr|lf8Ngq|BQO0hgSLoe-3b13j1(!P8a`4IUB|2>V=>!@k7|P-Xog&wkAf; z8+2}+-~d0(Y=PaCg}AfFp0%0bi%%s(lrTHVY1@B*iC7d>E5kCCiwt}JPo{?JsGome zXEFBY7O$1G11;XMYAWi-1r!mdYn3t!+*olkH52jR8YfJsE8wtT*&zcK+h3w z?UGiFDFwqNUlKngi{_nH$IR*-M;AHFS{xLe^}}6jzA`bZYSlxD$E>VQ7{qs?8|G?f z2Wh1>t4`Uyqs>~ejRU+cU(5m)v!1D+#F8|Gv9xAs8)Vv;gfbpa=Kqd{#JabVgU?3m z`<+@G=M_+a$_}A&*Gd#r3p0duoEOqC4Q1?R7`NYHA>*GPq$RK-NeicXNTPHVkm{&Q z?0R6Fy(_!3i=?&~`0CUd4Dtd}SxQBee2_I6t;dyBeMAE2_fwDS8MVLj3eU(4mgk{D zUc}+NcDvlg>}DkD=G5lz>NmSzT9ENhz&mUe)As%cc>VdJc0y(QD&z|XU!^KE0dKRL{`hNh$f%+7>V4)q{ zw6Cmt&|`>Q6p}aIjpsF=u;MY!M0f_3+fDQr5d%Z65F5}nQAw1hQ-KFj>PBdw9Frh9 zH`9-pdh!+P=CFVnqaoJ}@l~%^+sBLC74y?nUpz=OJGN&--f_U;L`BRxX04t`lPGyVrt1s?RB^WXu3FC35@vDu2lVK0# zL7*}_b|Z4RU36DSSWnO9O{IoR-3G_@IwRX;Bh~`decpigk@?zZ_ujxdqCKv@!6?`avQt~ z8Elkv7q;0fNWX8Z4%ugt;vGHu%el}z36Bg5jx-SEDB4HlIp*xTwC{L*x4@otVNsYf zvDsuh2-rGoq+V$WVdolk>D1&sM3XnT=H8*Bt&@zQ@O6IF*3oNGL)^g9&VB;Q#Z`i1#U{GNHq~TSCyu^OtIC9;YVl`?U8Ue~J z-=bMY8Oa?&z6HSTcyG;>awhf2Mp-B1JI*MWTX46u6sb}y{k*ZM##Ko7X|jv&03k{- zo-$~<^a2U839W?++HoI4zSAlmxEa3rz5PQx2GBRkov9upHo=wH(6iWFDeU^&>W7(W zxMbRts6d_kTv*KYubJNi{hW|5@MqMvwMm`4e}GPm_vPgF6MZt2nrU&bYTwO1DOn4; zNg-G@F>2T^6R>_$IH8kD80B#Fb`7WS#VX_B?m4uzLN>#OiNey~yEg35ar?(f`bREt zLwVW-3&#n8j**jH;XSATimZ-;b0tbS$C4Qt{V$4@S**ekhgXz}$s!t;fj0Zn@3u&3 zwzbhG%hrGYCX<2H3p_wCojtJGE z)UtbXePLklnF?SjNW{N z-+hrA&M*pF8wmy4l&-~YxUJ~Xr#`uvyjv=ydB!w=t&`XD)1>CTs`8+-;`BN%3O3d& z47`Cpe);NrTBsd=pNO_dzG_6u#o?maj)k1nEr(y-NoXB{l0F|}QT-Y-17KwE_48RM zQ##bJ|W-8^P+*5&A{btC?_W}DJz>t`fPtTr&eb#usv!^^{tr@tB<)gubm zGOTdL9=!$>C$3L#lTEiR-x+!|qU!zNzm3pC>#BCo-uJg&1-&V?_c0mza%k+P-PE&F zCun0FWzJU0AWiaEymE7uY8Op5gt|CTck&pb{uv9ylG}xM*`fw4?k>Z2!+$n)bhtrbarR2~PJ1OiB5q245 zRj#SDgw;6~ce~D_GwWOvNEHM}TYz?smeE&Q`G_baWqmD3C zuyb8eb@lujo4se7_fXIo%?~*QJm{MlniebHK9gHxk?Zp?IL+eyGTXLV3+8KQj0_m- zFGC_~`ttO8@p-d8n&>w9(5?8PZtjRsBW=~tDP3jVNo^7q`YM08E}%wEyN-28Mq5Jg zf-cyE`kRi6*WZA{x3|O}uVNpP>_0_-N|Dv{+9{L#1n$Hm4ZrD5-USfEpT7BVFbhIq z7L00Y79-;K;D)Td{@J6|@A*j8N}P7ZKe0W6bp5XUEuYK2r4)4Os=^5s$a0KRcE&A{ zAs9fFOl%?mTNz zbh#hZiJ1PT)Se7-G$QMdSRz8-Lepg_D$pE$bkv%_#z_^a$cFH1wX7AQ8qn%ZKiqud zo_EWAZgz5YDzt-9?QUnrNhX*K`FG$n$P&-90wnMup}I!mr#bAbYzkR)h6xV=Gs|W1 zy62tfl@A-KGQ2hoT7BUqP?cWC>z9o;vS@Y_VpU-<^{R=-E>Y<=#e8NsBJ(Sk!&Il9 z=M9pH5bu(XgjC)7R~LEQoQUvN!f;el@$BOcNnS!~#hn^g`a;Q)O1;TALw2A3(|J~8 zce&OY6GdY>!(8u;Lk_6R6{`G(yV)W_Z)AcLyjcHVuiwYgP$+_VozdhZ1&@yARn-dk zVySgwSREu22(9VyYije|le zxpgI%dy@)QX(_GDEyC99_i+Z9mycHRBF$wIu2sCXO0G_X2a(2h`6+0f+H~8qY!$7| zJ=S+OdUa7m%#S!}_5FE**$ZDit0lY_*{HZ)k1PM7t@Z z<#Ky+3-y*d`zDy<3>;CB!(h5)?dh=^myJVIWCvp%6)bs;VSp|b`Efpc4Aec$boLG{ zO*2>D09UYr!(m@6VQnMj4Tpz@R=xTJp*5WnImZU5d!ehNQM7u11Ijsm#Og?=QoFi# zLV@8~O^SKmf274lz)&;a2dX#o)k&KJ|2e9DS3OXE#8u5eZ-5;mP_%Ll0)wC}^*-UK z1mZuJj)^W#TC8>}=WJV7Je6iQlpZ3GUNckhobdf`?7ekV9N)Jm+CT%1H}24AaCdiU zAh+p(v}W%h3l-2SK~$ULG>BU}3am;{I2K-9-bf4$QG&H)c+(F$ zxY}P!wXn#2!Rvfp4Sn0L&3w<(Qn&q`w;5E`QqLms_JdHyLD!pXa2<{9OrD0{kVKez zv;kHmtnUzZq)09G3q;SytU3%cebfk(OIEV|UYe}?1tRud$!V{;bB905n@+AmPfcWC zF`+Ue6LDAua|e%ljHUX^ZLVhFKDDMvB!al7R+T6Gy0VI)LA|=W5{D+K^vh)E@+Mm# zx<|)t>9WHtGxJn5G0m<+yH(W&Qia9jCfl~MLpK5Xpy65H^T9NJv5w)*n~yK$AX4(p zNLd4nD=r+*rkv5GImBUnUe;(T($*fI&omuGgX)U~+|CrC?Jq#3=Byx%LTPjr-cc-| zW#&&Z&fgTrq7};m8MSV>IJ?m1R4onOIpy2%Z-z|zH;L~|8^%3OTSRx5 z&?IJ6aQ*P*FIw8hRwF+jp_Bdy9(kE5GUmN5l>SApluEc$H)NQd-C!(Q25{|J zaXB_HP$RdQ=CQdRxA>$tSAy-OMX;oA*k5Dc?$$+%Ht1`OwD5&8+$#F0noP;lunECI zvcuiK@8Nx}Co{Ir*>sqirA{&852fLnw6uF$CBwd-sM$;hDl(fvd6pl4NT}`L$)Q1N z?XIWy3*NvkpBhDjB$7H&LHt}doz3qcJ6*wXc1|#ndH-YtraL4ylVXoPBmJpD|L-5v zaQ#!Bf0~-qz+b@IwS1dpliEPIjS`hTQ7LN5CKMj_#Is*Dp)<#x(LST7vQmzvg9)qf z)V-YHBsHZG@Kd|fRO>1*efN7WdF7rzZR3jBWvGdjHROp#BCF~*B(u0-x5{RWEXTiZ zE2vkjFcF!O5qMtGK$uR8Zs_F^%hP6Xnqu70{FW-&q+X8pMu_=5dsfq;#qzzXF|t={ z`9UFEI zwC=3#zL4$6EF^SARg9~V;rv_#_fAGIuJKZ7Fefke*~-nRIAsn^k&jB`!S8~&gkK)h zV!XVAlD-mMp_X(xTu|-@o>n-zLicWr;^FUW_SJFrq*!>ieXc=k1aC;XX z*vyYViUT*y-mNv*t$c2HB<8*{M|q}!_xk&LG%X;iv_FlUDEn2uoAH9-YJ`kfmicR<6!vj@Tx@<6_^Q6To`Z zyozpUr_aoxS(DMp;OKM2e(F8D$oaFd_%#bQB269g@Fx@XX^d9)eJf#4`Sm_ z>g%@27wO;KO`}QL52WC1=-r-o0|Cn&$x!?FE@~o&4r2l+qE>kyX-7E;FKxW(2c=z{ zNOkh!$>#1Ds%F4nfU|D2r3Z`xEU;u;jQZAFE^4IJNIifz5=O^sh&1B#7a%8-W3JpQ zYD?%%SWuzAEIE(%BrnBFOMb^Z`&#)6AG*nxGn}t5yZ+_kPzmRcy+fa`qUMJrN%}sV z(NzER`ik+C5*O1-cq$r;*4Xd7I1TGWKlO$pOg?YY z*y%uT#PXwdjZ&xDB7r5S$&yt%)5#hhY%BF89<@c>&+cr{qvh>z=C$U1tA?WX^?Bs6 zy|-r7vx!Dh2bisI#VZ^N(2#iVQZreF)RV>;wr!dG01NcXo7jLE>XsBGeXAh=?zbi0 z>x?$k4(3~v#7|wONzQ*9U0J3F($jU3LRs{fSTE*_z)vkB=#0?W8xgsZe8Q}(H2tM; z=$ZMIIPwViQ+#GLqltjdS6j!}W1^-oZad5D*I&|6WDPQIU)Wj4q+3%A#pmlFwZ4yJ z=hJNrDyi)lmWbZQ4})B~26R7d=e)aGXMDf9~O$F2R8kZ-U@Y_V;^?Vc#-iL*HqtXgUrnv@y_So=Xt zRgV?(zt4o65r1M{z((L~iiz=9oeXZXf9rj^3Z3GVv;o_!*U+z(l%mM`*I!L&*F+jz zu|R9>675{ZE7*&bwl|_U)l@jEahi0(xgLjh5|NC>eHzD|vpN%g4Lt9@i6GzlZ(+_6{IQQ&5|S3WL&Wk_3w8YZ%4o@KuUV6n6#OVCxU z=V?Iaw3{UQ4_ssjJ;8XLJ#Fm|TUQt42K;gA*Uict_rg3XI`jgQYvxYnf`wJo4fPFT zg&TyTo}waJ>dGGhSo9Um+OMylDgx)^xXG;WqF__m(dIt$9CYT}F&Z9JE@vv+Rcbwh zY8(%leLrKD+sT(qmm_TjDd|d>mj?UsRHd)cGV)jre0h#nmJW5SdGGn*7hYcGY+B&z zP%eJYoNIvSAigTSW~T^sx$9Hm z!KSdAHrwp@-VAf|wp#Ow#sx+A9ce933CHV1*=KDGtQvlDUhB-M`5}hcEspo%dZ)|f z!;d^T$KK9>ZiUZZ#!^u~xjc?6+cJBmW#|mIP-*ARA6EA$Wlt#@n$D7!?kE!g!@$cm z$tD!7q|T1!BETs~v zSV@zRXpEbdAZb8*z#1tMY>>0yo~*Q*vDu|?dY2A>q?e&rWRY@p)IqnyX7*PyrLj_K zB(~BvqSz4dpbq=$UMR%qJSe=kX(S3CiPoby#Z-QXFaFcQk}Q^oF^wOJ1qaAVoa3b| zmx(`ytm~su5M67N)ocA)xR_-bhX087nF#SQxiXW`R!pJw1f@bYzAbuJ3>QAHw`pB$ zahR}gU11CHL(+<2!z%=UPZ{}XrtuxAY?50oyLmiZiON~arWW0d^zYbcL#x`!v-mK= zdA%iR^-M+&wjmF<#zJ*Yn}p(d#5a$kc102B_U&^Ew@ma%oWe@&lpefBOd;VSUsQJE zCe&6o8;>e>IPDV);NuOt&DVvHo4`_4(0Z-)aY^~w%tEI|n6P{AK%n`P9JBdV`joL@ zl0hv-Rb76*Sj%`RS~<>B`~2h(p&r<SfBi|RUL+^!D`TK_ZzU9DE;(bfUW+0|lqK%_!c4g;XPv#;QdC z824$B_3SuJF_t-xvS1g-%(%b~J{dnk$y*7rOk9#9Ep)nwia(FtxS+n z;h!F3=!daSY& zqgU@)7LRT+xi{r6{r4%iHMUp`tP?C?ry>N}v>K0p9N$^VzcvjCr)| zzGx56BPqlg`i8PB9u-7{y1=CaQD@BV=?`zK_hD_8os3{p1-MO1<#337=WG+Tq9ZZO zt#ZumI{hZ})zZVY99+mURI3KRt;AkeA&aPaZ!1Dy!^_ub*<^@^6v1EP$=OQR8l5nWiD*CtZTSzMq(wS?`c?7K{{*4diqSEY_H^QZ7S<$>36q;*e1SU$la%h z^w3N05(nN~A?5mr#bj*ymRaWm2C3YiAF?(na8U1xXc?9_(CH=CGw`&Qtj_qSzAXG` z)KYTc?zZDkBazhDMU1FnrEwvR>@G!hHY#WCCedl^@8H7~4y>_07<7GbODS^v?SV=f zHdAjNc~O@<_<3<AXiE+{26 z1Za~Q!A57x*{rdxT@;x*xRJUsDR_>N{&d*z_T?eY^7~k<_$uu~RYF&lMgi36dc9dNG!W%>A#?U6whCe&ai8;tGq@GQ*P zytebK147-}M|58Oc^XhibE`tF4YGeBaHiF6@5?cbfe|6Hz3w*kbV&M!UUlI@5z9%p z#2Jq-*r{7Zuc!>el*6~)LNl{A&pT&JlVu!wTUSR@p*@;Xbh(e&DtJx-Xjf2m?Erqln863fH?| zaM%VT3Lmx6xwC%t#(WtZ9UuYfk9mjF=o^-jGJR|N;J~5(JfX*Yt{jS%P@H~AVd-s8 z`p^UXh2Y!FIG$G~=^$`gHDHe@*vimC_Nhr{T}7g<@Y>hrqx?RPG3!ynFP*}2OP|~o zq-2-ufeDJ z;wr}`-(wc7g}eEf+YHqD+H|n2PFruUn1(^)7!a3hI2B3yv$Kr!Wz%z%YBK{SPQ=-B zsm#?olI7+7e&l6UKe4ri<5=n1s^~KCr02UK=sABxcAXUzs=1jkM~+i0PYZjyQzZNO zt5jrUid9Vp$r)A=T-CjG)%4;=8K=*X%kiD>;hxFMX3~;1xV7d@W&~9i*iy;8ijnHx zjvU(nZayoWSv=IqG9|CujI>0?A3oR3Dr~XtLsZqe2JfA1t7rot!xI#2X+Y~Io#YsX z6?cV|byBHqysM=vb;nJqG6E$zzAV-SP0pkW{_EH?ibojoKT#S^%pUA^T|99qJyT4v< zQ!fXkPx^6FU?}wSy1*2li~f9dv@o}WU-UVtAOa`*c;pAArqz>*VVJ4H4SM=2OYjI0 zG1%c(!M$bKj%m=`<_%SEqiR_dR7pr8bq8=rvf5eddY}CTG%F;vSYPSEImijS60Tfl z)~csam`UvHB)*9xQxU8q87cN1grGC#3!I2(TS0z4(_gL~nRg*u&7~@%mdpnr(m2Q= zkD(+jnDGYB;-QDI`~Qm2KsVtd)R=1BF>q09Zs=!qwsR)qbiSxG zUqeOL;stpb-w)B>YfSiYBjOuhoUzylSIzw|*$4jUxt6jHc1j!jH#?5|m^oW+V%xwu zkQY#X$Ry2!Uo;X99cD8(A}R)YGEcul)vB99oL$hda@K0vpc$gQz@S1Ko)%6YI~W)z zuuDcj*v;d*H&a7l_t_FJp5`!#QDi8GM711=%kNVUYw1v;^oOYU1zUU?|57V9q%df{ zUDZP$j7!pszKBNwPLizk=vF?RhAIeR96UdSHKLb&o_K!x0+%u#X4-^)9l78z9F~ZD zWp06h)NhwxgSKq|K6)dK>diZnCi)RhbcDgoHlaW5B=+qmdoc!rdo3cyh*5as+ek^_ zXL&%bMd$0AnSkkRy|6#ZmHC(KoA}ro#@>k&qz#%kftQ1})gvm`A^u1%-}xEiR$SA1 zU8nsU;U5jRXZQFrtvn*SQ-R&y_7zm^pkC(&1;O!q-Nrw5NSIt{ zAl-Xp=l}eTH3zRDA;Fz{wT~^e=h?K1oGdjxp;&~N`n|>N8*n8nvd*f+b06ON^OE_} z75ailtef%VVVCE^PY);u zcslKroCD`)rKJd_mj00$Co&^zI!WV8S)Jvm>6eEhf8V!><(px2Yb17Dm`KnS z(Z8X$h}uV#G(#oVw3XgUZ(%b~ZQW~BSn(f}g$WiUElB>L8+9nrCsY71qJh=a z??>s(SM6tOM-|PuraUH5gHt~aP{NS#tExhr?}Lyzn%xJ8qYbr9*m?_NZ<)4IJ=`T^ z-_{0E+NSv}U5WD#F_dt0x)Yv_Qs#G$HLbV&%$~i*-8lK)9J9*MldQ;Mxr2&r&LI2&)s_0oFopL)z`~eJZkzOB1Nq1d&du0vh9-(tM?~Yzxzy zjfeP$%SLu%JC~!fqLOsh)bVrnAIq{f%=HN|SJV5C?fAZKA)4NE~<3QP>Q05!D8Z!;KJ;OH{FLXXBWIUPmQ;tYIP#|G8 z+X)6Rtf*o~p5)Gb9>bcQ<%9 zPp}-4X!+5_(u6h5xpS5I#YOt9ekMbfOd${1;?iBPX-JZ&ImBhaZdSeMdpG@7r@3Jo ziSD%AOylxN$@j?>SnMD$!_}^utF}A%jc);UXm;?#!qD*>_NbnU?mUWLv%E7xa({}V#gLHk4-z}0vs zlQ;p<0>(w1b3#JOWbi}lG&qWCw3TndgaC(~Wy>Agr2HW7>I!xHe&VAS{%^K1f8 z5uYZ(;8koo)`oE3!iYU6;P9x#4vBKY?n|qMkq-QE#o}5Ys#VCCr1RQKSu0_aXj#+j zK3__T$FXREZU$XT)&vcRPv|coG}5{x>k(Vao%qZN1p~?UgIjH~^=JGi>9aFFGAfDe z-o2{0{cuG4YLNV@gtizrqXj=|4i0 z+Qh+Ogy{B5Z7P(Y(P`YhsG5!`UH}r%3X;dQh&i_Z zMpIotKnl<7d-zWFd2HK8GcZcnPt2W5XgKr0*d6~*Xrg~}jX!N`(E~lzH^zW1Sz!%A z!t{ZpKjV%F(r)I{B=0Vc+RvJLq3dsHB=ijs&U?f3Fm7`d4|c&G=0ykvwYB7i zIH>2m6WYTkY4yG)R@drSQhvDc%lFE;sFAoDeJG*I^HN?SMU%dWsnPvdzsNzygSNuC}`&JDo9vuUv!*uTgsf98wi*2udXywa_yEe z<*RzfTtTXyc8w386W}UOk zS?|-I-;H^@2oMt8!_h@4a2f5e(SDwslF+%}Ih!}fsL}x(eZNiAj85hL>H^0WuD;VT z!z@V|V8N-Y_r8PG@JD{l4mrtTY`ui3#%DdYuQ8F^iIGBDi-O+Y?4~2rsRHokqKCig z81+@4ZqF75($n@hmY(;1)m@y8owqYt4hb-8#7I{^;OJmgX52Ei*5MD!XBpyTT3-Y| z80mKW1b~(nvG`mKRc!fW+@yaMy)$1$rWL5yR23+T_N8mO!Fc}|yet}-bu9C_q;InO_To0P=3iB##yF5T;B;xpEh!Da`dBVO@M+(Qz%C`0@QQHHmm!W`H$g_k9{)?IvDD_J0NPsq71wYb$ z9-b%jxBW9wMDGW)o_7%P6!Xv90G$Rmp#Q}keIqFqu7E5 zm(kPA6ylNisLnjuiC?4GAkz&jwYem?{I7LoLcBXhcV)31zC*GT7?^p+S11J4wO5@v zyQTJ5uJrKVtbSO_@X$D)CnDH4+!n^TO}kIwG&PJcA0uPS$m)yRzC|uv$M^`}-1AE@ z@^{b2Vt^WIYWt0ddWK4+k!&QlN)=^OwLo%})S`DS-A98Vis~<(NaM`J*T&W=T)Nm- z6_rlAY?_+GjSVj3^By+69D>S-E63|uxF)QXb z3^nUG(_h%%Q8})OK7>V#Es(2L&?3|h1ay+t(R4Hjr422)kw@fq*L3Px8oT`hh*W}#Mcy@S?ote92|RGi!fq#~>Ms8Tgi zq-`f-sW|K0JVXNc;nlVorfvN0GxUYM(Ih#z(2yci*>xRL_3-39-qX>0?B<45_NfRG z`ZB#GFjWgYLOA1+f4>d8d|l%_@;idiYhU!4bEvnKh{U(bftAEsTNbv3Nfi$mll>nH zw()V`t;XpK<*G#HfVkWkv&8E;YbqiC=#aeJpCz`r?a*mBd7%k!cVyRbuF&1isMZ)#nv#BI!`VTp5@T_kZE&q`jlEW{sf!#wma znA$3mZOG;+}ONKu54nXs+r#r(D1#9l!Y`ym?bk~ zOXMeH<||?fH{@gMaUH+ART8WfcWn@_f<;L zP4F!Q_t6P-Tw|sAxSA~X(P)LPFVWZ@`{q-r+Ef)3N%CrmFdbt1FvcgSldVSU*SDre zY&0J|G8bD@vp;2b4Xxu(LVM`ZTHV#=v1Fi&ke`_D`Ze-ux&1t*-~|-EmQ;O^decs3 zOr@q{{`S!oZL9$LX>d4sR7)KSvry2a0ZC}P`S$9H{IUp$!O`> zA{ml%;(BNWy$M2YRQ^vRaM&$`C6j%&oa?*@Gl%qXVl)Y^FpPc%7g}dB{RKp)&PB4f zP=1>rE{{VTU7`y^CkVYcq_TKh#H_e(*7@nO!MsuxCq?7mB5BeYp&+*(HpFc^x6dFk zFl@r6L8v01`3W8|3nd3K93w)J!Q&5B!98U}lPkbk>y6@^E{A6(T9=#%494I%dYOH!2D(}q3}pYqqW}GRy>4ggMWeDkK5_{#b1^Q>Oa|UG_MUQAT4mD({c#z zLe~wwC)8p;lK}ETZd0h0VF>@*=ku!MKlhchyPCC%}!O6p4l8 z$=)*fgN)TR?nmmK+dcGfterS{WHM-Ko-8cdlR-P|EzATL6Vj+dQn7utUTr2+MezY` z1lQz#kvrN#_W{-u*Rp%!rgGuiL@M1?lH~#&R`%ci0%Yn*+e|bOSF^jZ6M3=qF0KQTFJvJtZG=upoPsyDP0U_^j~_qS$~N;;h516j&^A?n zOv2mBDthVz1B!gPw1{_62-^6W_duJ7hbFN>mD5iYkErZ%%b7sjs=olD(}LX4ya(Y4T%w})Q3GcwXX%VEZdA)$LXo=Ar7ZT=x=GzeC6^9R%8XG@P zxpd1JjwcL^XxRQ92ui#;7rFI1DMw*#TJH1%>cSvJ6pCPif zUfYrk?pX;SVd!EM%Rgl^MwYwa_p!&^Pwi`a`AcvV@ZtZ`U^>+|R_bw~=Y+pwk<20J!e$5_E~bhhKkmm>}daIB}+;J|*I zmtT0W@)lDRgeda6Im1Kb{4`(A>163G%)?dY@^+XD(%_r;)0Pab${B#1yUa?;r=Xwl*V`rJ=ORcqud1(h`NrED$;nRm$Jm@ zm^2t`%ij3~7)11yA=!N$;2*K`5^o878i>O(Rg<#{_?XFMZ}I-8%c2wAPl%U`GADFm zNCvgQLpXFl)rNbhP`0Q(o=FRk6v9-1UsOBct6cRdnq@ScKQm`ILf9w!TU{RRzP2w1 zO^UdW9ADo`xAAz<2d`aG>|tSn2|$bKpS~g>a{^a&KhpM#X0^Jv9=Q+p=(VMa&nyI? z1~o}#V0{t=MdFYzE09E&t2(*x^KBZE3Azz&ZbilbqAkN8WSsP9YK@&q(2NMM-8XuD zk7L?pc{!8LCQI`%x-m?XGO92fo?a;=E=kaW`9|e*YLV^;no_QQiO%*cM&pYqLSM+A zfuJgvNE9KTA3eRN^Hv*`nI`!?m|*6^1VN67|EHoG)$V=|l++-!Fbo=uL(e!H3A?W& ztdc6sl<|xK_WFhe@Tiz1p4WqjTKI%z#1CvHp<4F0Lweg++IMH1q)Z6}M?|+MwG^G( z^GJUIia(UbOdy3&o5;Lfja~E6E37aQB${HRMMM5eXoO%}9f%2n$2o=&4*wQLD5g%O zQAlwzsJf2^z0HtIBQTo=%HY8+{_+ZJO(qNQc+5Xvc|%WqTZnC+_pORTTrnqDh^K6W znaD6%AL4G61)$*@n~ubY*iAlPz4|YPAvF=?5%fSrbdD| za|xA@V>DU7tRYnRTS8Lf5rCx@|9Yv_uid>pm`}_3@voKU=FoJD~u=tmvt&eUJ)TRRWt` zF?1uL0FqO)p+tg3k6OQL9{YazO+kmA);_QBH}$X5ph4wag6r!wr{}gIEt0vjL2mWP zf}Nz2f+sIo^Mrw#>MUG7gm1o)Qleo`z9HFEPDkd^B{(RAQn_~TZ*;$PrKzB&t<;Fl zh29g#A_}VJD@Vlq;15RY_O+6`adUcW`_@k9>mrXXZ6i~ng?9x?>Ea?&jCGaUA|oB4 z=ejJ&n%F6OV&V{#Bt&<}`Yerk6xpX+>Y(un#vfv9t$u2x#2~`<)8!o+e<4?7zvG58 zd)sB5mibAcMP~q9Z>kKA30JI80?4#hM9Fjan?PiGv#Ey(LvA?!ZR>Qk2%i{}W)*iJ zJ{uFAsz+_J!P)8#mjX+DVu0PvANUs?K22k@<$;vt^9JTK6!=T{OCbz2(q?8I5%cbirTr#gA=S19I&+FbiA30FfBKn^d2(=XPhMb zBs3PScRAD7R>OAot}g`|h-6gv2o9q+%udD9<1=+nVn2u~-o{5b!kr4_PJdKk4vjXj zs;A}tL~610{73*W%*L49TUAeX3hlIRKR;-@&*54ejGnY?9+{BYC2?Aj*~H~8vE83{ z?4@z~v@hLE8uG(Ht*@%xv%9pkhTYAE*>0pKNgJtUdHPM|uOvlN&S0FK9=g)cDZcV+ ztWIRm3Jnn!4%Y$AXunWP3J~Hl4O5JLS^(3Vj^reb4RQrPCg<=Ycqv)Fn zug36TA-m;>UPQm;>$fshFYTMu;maxkYg-vpw|Aux_b7$LJn;=dgwG29BhkdN4{mn-Lla-SQYPx$v zy5z3F4Qd?%*Y>gn^kX+TJUIaq-7Z{aRj*XTe4)LT$-{IrCl2y}Xo5lTzIr>|L+0dE?>K+_XkDIRmr^8pVa62uH*FtwbtBgI+Fxfhm zSRDMusai%2O}cod@F4&V>@yztRek03^Y#4=bl1OW>H?K6XSD~>bFq_JNa%9IBm>f{ zb0`@q^?U9lqkzBgupQOobl1KUBkFmJ{kGRWT3j_H;)c(oy&Syb$n5x*^EkVLwS~eJ zE@e0*jm=zrK1i4xrvhVHKXxK7$@|2Wg_V!V*f*+gF7%iOiwjy?5XPlHesQhtsm+T% z{8@}Ht77R;U#DV+cS>aLc~Dx|N!P&tHIm0ehzg<8$2N(gi#jZ)`m;}#a9XTQ&%Ue5 z=NsW7wM-GIZb`S|*#IJf2%&2X`?zWm87%FVUHsa9$I20Uw&c4wA3f9!H(pLOJCd(Y zXm&h~k8eNY>1-APz{~2pkwtHw5$$wflU^1~_^d66nRNVX_{Y#4ED%Xrv<9y3GSjz5 z*eQ#Z5oEJzx#@Wko)VBVhuFJl?XMr|MR%(6cy$?k8Lb~bcIg4I0vxv$){Uw4Vyu?kcQ@84u*<8G}d z3(k>~e?`qs{0%RZJop|Np1rUecWqU$7r}VL8JDy6&q97?BI4#JQLk=I)m@>&=gd$m zq&oTE^3F!MdsEyPU|u0fmCx~U*HVRq!lZFmlsK;^o$4DXkog~hAN88{Hx+0Uoucxi z=UuLpzxa*thVOrsRq(ef;^n=vpT%u8B?9(`L($DXA!9bE< zI#2WCF%k9X+?V{N2}W)-4_jFa*1K&+<;ZeQIY+ZEuNqo_AwEZf}7JU+BjBZm<`#s9Puw#J0(GvY>Kn_(q4Mm*jeOJ9o|0 zyX#@z%IGDjrn;?6(Vl*KCR&qA|Cx}yjG=eAzVWgEJN!vJ)4j4-W}j5%XwP(_0m;j& zy?Y4ML0HTO#R$r|s^RHtQCfxnS%v7BdA%+T3z)1mV|iue_895AljHc?azG3kNk(l| z7$wgM-*rWntc!>|H|ckSp%T6a;sW)-3|mRG4H{b2nEuNtUki%AfakIDK7ttS%JtR| zQaj^-U8s!C##`$KZR4{vRB50TlO?@Bw|aH_OMq%#Zq@Z4bQdL0ncmz?X#%;TZjomR)Nm3( zi#`Oy*kL~z1B0x_A&18r#*pU`H4$zKe9I#G#U~Dtp6v`z;5s8@yz|W>ha=u2_;~S& zsOD&@%Hjn7U`ROx!Qj{PrVzby?3?AVg4xQ(j^Sr}6$SVb_qMxbUHS zl!))n@eHM2(5@bDO0(G10g>?5eM+e|9sv1^E~!8zzp*vNhV+4=Iy zVW(X#LuY4#TY161(NrIoutCvWmo2Y{5X|4aGqni!Nj3{1{52m@TN!h_)<4Ch8IL{s zx~qagu2|oWN956byQOr}Qb9tqUorOTaAx`(u_sKOI{||X>C=TOwAZS(g-EvUa=fl% zf?{}RamFcdAR}`WgXO(DhCHZ>ohbM->trB{Eb0$3QeQ#{L4Whh$h-~a@->SChd^h< zR(*#`f90H-Ui&H*c8Q4&8r3ly!Rq6l%@=t-$Ehpu@**mUFM#D&dQrmqxH8WoTng1s z{g)s7D$Q>QM`haRV&xC-v)0lS4CXL*{^(bYfRJoTB4>Y^&RvA-QT@D9^|8vnMXl{A zGMs@9ct=X=r3>8C=qmr#Oxk71DT&XEINc~^+Z36g_|%f~-c%Az`n}C5K9@wXNMEkC zNxK>zvbKOgl*I|^ofeSy1GPt`6*a5u6-sQou~We`QA$|!kVsecMNH)5QvI|PQLGMC z1Z-md(40qbRnWEcPb&(FGUPCQy`Ue6$8KmSA4={of9yD)a+Xqw1E61v~9(+&TuP|a-SUrqj5*-1?NC`lI(Mf_o|1W1O zIiC{Y{;$j@EdS&Euib40+-({!Z3Qf?z5~Jm0Kou=Gyw812rj|FK!7ypUwrr<)l%gB z$q_)XBoJE?2$n^p47fXby4!NU+mwV^x!dx|FonGa+)fAFOgix`(VA*2)E%3u%fIq(NU8Bq07Wi(_ zW^_xk$J7y>GT=5S;BM{TpIgRvTN1$_fHVLg@h|;_eFOji|C6Qvz5oy4Z48%;1gj&0 z)n)J`WnsQ;ZQZS@z?|gYQsLhUxPjFy!E!qPM~}0A=d1az&GbK6yn~%n{~rzfFO2<< ze!#!g^&x=!P&f*a0bu}^|K7jPOgIWv#APe9K<47Jx zKktLBpo3#UQsL-a3bb&_Kn@f#h!hAC!_goKgunyL`u?SHP6-|jWIzKdQ81Ka5EaM; zB12HX3yZ|#_>Kp`;0OkwbD=Q6hu}#7@cMu-9VPTn2@Fz*WZZoK7a1^aIM`g8Rss=b z7odg&fRW}l1%t4oAx$8n^KhU$0v@%*zqGr90S=o0T%huphl_BjaKN~CC6zhg`Z)kd zfI>99T^WG^1s;tN2m}g3P!xd#11}`-21fC)0U$L*qM{H8PPl-k6cCIFat-02MgmAk zLkd)YaQ%Rgc)%Vy9somxS_MoK!lMSy;f{z0`xi+)%o7^&Z%6C2BtY{!s1HCSjR0zv z1r|VA27}4CBpB3?1&Su{Lf{2(R9N8S85%(XxMKqFNPvC}kef6Ri~IjqYS1P7D;5eHvF2u`5!Zjnkf zbt+O%z=m_WaQ;{(Mq4$fmo)}M+z+N*3oTWEGgZ*fKb_^e-b9=QKF$ej|-`|wZke=!=aLbUMH`Fk;6{N&4@ z{^#&@5%~*nC*ZjbdYS!@^4g^&b6o!@DuvB+yhQmExoTe4ZtE`~e-jT4D`mkT?RBQB za?Q+tT!CWvnsYqNLL+GFfO6$8pt#+yw0x5oMhV>@+mutZ%M(|m`w}e)_92rg!qol? zcyIIs;|_>{8p8&vxJLC@k+r=+op+M5gL;Nr5ag?FhetJ}kbw6mZ4IBII zpL(66`HyPg!XIYKqCrD>3K3n4%G&R1YKCts3agRa?4JYAf?9pQs+>yboDiKvXRhM> zc4}wU*vE=TzNGr~CB0$tI-1T-(@4X46EV4McIhvGyx{7Y)fDsV>zV}65UQ`%ExRH% zqrtmIxhLs()c9G=J<+15W?ZXhx5Eb}lFP=oO0G-sd6|0u_@zv;q0=dDXrpTQl_b+^ zZI>XzJ#%-N_I?5CjU3P1>g(=SNU$+;4 z&KaB2$QJ0Q6bRVALoqqpbTmR(5 z#`hzB#ap}P3Q}s1O_>}bdMf91H$}IylHVAfHbwPGPWpE#Eq<$8lDbcoo3a-$=d+*p0d9&$%+59!y} zqY`zLIk_dsw+?gba28m>qI*wq>PU40dY#_1*hEMw{qI~x74$P z<>Nq8b5ADOI19HR;CJTk?c$)5V`ePpzW}F6w%UfKh3BX#o1sE8gviaGGQE0$qRKq+ z68(lQ}W_m@JDUETaG46j-*`2UsGgKCEqwOYQ9h3Tiq;Qe2>JR6x->d*Bst3 z?Ex~aDkqNiV!z9)fRo>O-H$-m?0ed8!mfeqW`QYh2kv~AA`hoLfvH(*52_uybG^Tj zJRKYJEv6T@CHGtYpy>=1#(^UW+>w-x+(U$Uhr)e(yJVqP-=l_enw~C4@=>9~z z8+Qrr5(qTz7D(gnH16&$0YYfJ(E!0EL4vzG!3pl}1b2c3&G4UDGwaTsw^{41`|_=N zt8=Q(IeXVWwQJkY8r7pmC*#pbEHMea7n6N@mk1?{mF)c&2i=Mb0_IBPeaX}JXX{N> zMQ?ge0)tEYLu33`$93Eq3XBih)~ygu0fgZ7s(VCT$HxJmf=Q&Z$&jyXpF`bW(|#xG zzSDT)(8E8G)stxVpeH3{Qap0)z^P7TI+AV!N5uBYr3Kv|FvV=mYTvm)9=<5FA=#2( z?;FWzeEt2T_?H3jbI3d|BNKvYQEbo=r9J6@}WjkQ| z{O)?E_9nQ&MI4VnLHYZ>INf{1*NCF*qJMxuFc(?PKL9P4+NBjGAE)Tz)4rGmWTGu0P9V7t6nv zrRN{k9GQDS@yV{Z^G0tLkX-S2#?T1N2UnYX;A6?6at;&qdzOf5Ai`*{ro<9TYr6M> z)Ky7NS#8g5j!i!4jDUv|Xn-sggc+mbQ*N!Vh-=cpsyCX`$ht1Fo55LCzn*~jfPBoiR7ULy$N+=6( zxvQWftK(hfa;feE-zS9?(P<@>JGWC@EnM}TI#I=Xy9cuMd{htp$- zk9|w^po3~?=xe0oA=!o^G)%+`!gxLY?@ z9r!o>u2JcFp%@lP%R(VCTR<@!NIkZx8t&eaqOozRGXs+@IYcdik3L_Tj$H|pw{FNw~1^3cNL)NMI?dl1GhbZiLGeiC>fI(XpWhyn-rb@SSV6i_j zJLsb%ps0i0^DD23)W8czfWN{XA*S!(XLHX1as=;HlTq&{8a>pu1F>fdC@o}a?5J%Z zjfp9suiOhw+@O2r#<>M6;g5VuH&#zU)3k|M#$x6JA@At``!>sh zIA+Tf#EoiB*R_sLL#NFJU^5Y;vKQJbwkm7K`=9V@(H1oKyU1|S472{e2uT%xeyPl z%R5AXD}j>q##DOG%qnYC&~6=`ssb2(SlQ@Pun@SVd{z_FSHl>4cHIV-mbU1;z^se@ zX1~HQB3=Ij2y|_sOHE69<|X)$TrH)ovy4p(Yal(1%A4L?>jN#(C zX{67mQ~Om^1zt8E>|8e?F)>6)?WtE;(os&Oaaz|*-&7i(mtv1x@7-r@h+0w7VUOG; z8O@s_M@p|*d!2XwsnINQ^3K}ej{BOqvj?!v_CKGFA*@gyclrJg;DlJH4&`4-(c1Mj z$G+;zC*dl29i{H0m*Ln8)@F(Omc$+5k-VF=!J`pXI#{H#{HjSMIUsk~wYZo$iQE{D z$>kox=@vx_Y|5r84qmsSjM#J<%stAk@P`VfSG^X#I1-PRZ>xH7)DP8O06)A=nSf#` zzT`egOs=VLncgw(lIRg&ohdM{4wY5_Hz!BI$ljUV9E#^pB8cO9E3hAPN4Jj7e7Xsn z#p6qeSdC-v;pAX{@i+kHFO%t#WYxPrxeen{Q4n3{NAEhoXz$mTgR+fi^vru-lB35 z)L@Aw(ikamIx!8g3zuS%*IAnX%F*vAJV8x(Fhs028Z;hVn5GDbPo9q!-;k(e;BC`q z`N%__12Q$j@(LkT#GP4UEJjyt!GuH~Q4|%3OB!PBFL5!l_dYPv^KCq&ebk?dTq=3F zq;Ls4qD#Odll`Kg-=zm`dp)@x2JQ*rbn_yWs{RA?kh_*+t1$c4T?~g|%lfQW0Gk7eA_y<E%z zF(UKcVTER*hK!N7j<@1ozYBwY6x=^EwlHi2DA-8$`F&D^u*M{EGwyYS-1+VlBTa7NKI|_wPgg_@eCm!5P}2{`%{~yZF!2L3q-##ZXn6r*Go- zNC?w3*XVu!kIVm~|8{M_Xu0? z(KBKdyKTI{n2;?CM)XBGOUbWat(d~_saGR2Ks%7L{hW0 zK>uo4#ak)G+K9cfr*R40cb>-M`}e4-^#-3v;ZY3lsG1QFjCAw}zdsOh0SI}4_Wk15 zWi0a)uj#VrWfE&-YCDgqqSe5oukSo2^U!?2w>*e$;)b43$@3R_zwe*lJxkxdn#x|j zB9tgoE{3HW=y~>38fwGrX5ScxE|;TvL1yuiiHwY6z>mtCxnEE4+d2{=3Wt;;Vp!}J*J@Slv04r5{?KlShVBY8{6)4;=^T0PiDo4r?_esQ}ViqZ4vo` zgh{NfZf_;ZWSfan#`K1N0NJ^|b->^%ww#+Jq|w=z@C^7$)fy*+7UsWU+^`hhpt}88 zTqJGSZn!jI!Ss~_-MBZQth)BMsdZ)6IQY?fB0f&1{4WpW@x&c7`XUd-F4GgkfMZQr zpC=#$y#hFT@!JNY@)95TLqT>530vDcjM*O|u|*J}%+PnvG8eN^FO{>H^eqPlu1Dcv zSmf4GR8=1N%y+1ATG$pC+Z5!O?>%$*@^+RmhoT6lPs>J*zS;`*)so@6&dpJDaDDZy z&LuJVH0qhqhn_1iWZw@nrpQ%gH) zDF+mBL7$o8;KxtY7%=^8;5?zN+R=6W4SA#sN~zB!KKV5Kgw#ATIYewOP!r(?MBYb> z-K#GEpDw6|PI3ofGamDQJ+zM{R3VJhku`6P(#@JLKn77S$O}+LF)%>>=MvHb4$= z9Lbmq^C&M|NNEn*QRopanNq7MS1ZC}+5ILO==Hpy|a(W0LGncMJt$DosSkQ&7UZQlo=6jYZ z@|Zipv!u1hkTYQz*Bu^SXAZcjZL~Rxx`O|O2r^K8LT=K#r*p9;GE`mgHwYzLm%wyc ztq(YeRnHK41$g>^paT}9OO+OQj@8}sl_*_LEEXU-seO5dALZAd0ec3 zjih}2xPznSyiyvtg##%F3tLTmZKbcJ>&i?nQlJDMruh901DaD6XP&GA7`}o}h{Dp- ztdjNFZHS#OW4j1wErs)a1Gi!i6abSuGkAX$gY`m$7Hnf!7wnLPr?346@nG}9#SRs> z5kF>;2+Ktv>(=js)&&orzQjh+wc$Dh4s84WitLKB>(A+}s}OPnoe9LeZf#hz+YfZYgdpZC*X1z%S$IOZ{sMif@!#)*aI zf6z^KL#Tp`@uJw`>WB_o&eIWWNz*n`{=F2ubtNJmP$}5b+C1XB&aczXU^5qANC`h9 zSY^<$YAap%_@<(-;0^7(!8^kFthIBshl69-JjxG_cGKmfv$BY^(9o}-400~n70S3; zP%5C@JK}n`&2GrQ`Rn#H3Qa#*xj72El>*%|#2gkr#nx}fH;)z}kHmC7>3McWpSiY=W38~tRx|$>nvwFPShD(S(rK0bL0#o)JH!CR+?xd z%3mai_eU8s_g@i|Z`#!v9Y;DXCBN0MHDEn`159nH+#0%-^cz{~Up(I1f_AnSCNq3r zpa4B7a4f$g#e`wFFWeeHU20r0a-FwhF8Zgs`Fx_g3G9|tFjr!yY;>)>j$0j}*{0lZ zx#_ZT2Qf|t1SpuadOLq*4p3>(_BoflwZFRTuO1sm#}o0zomDI%h`i2Bb(Wn5Np~Kr z^isdsak}ddkv}~`8|6ItmTOW}S*f&WX0&6&vaSK(W z2A;YS-R^C`^EkDgd%H}fqC_qii z#7P56yF5^ZTXtJjQ!D3yZL-l-qU7W6_c6!iCrk!DI-mO*+i+Un0kPGx>IkK!8(eo| zR#^sw3y)o=D7o4q95u7Ny{6Hh`5qY!ZIkZK(jBpDX!p;}&jp#+bD@sat-rZC z5s{F}ySh)tx+xextXf%DMWsS5@i>HaJ=9Sr;ye~RRhx0vJsUFKtJU9TP(`cd1)m(1 zd+DNn@r;n;H&Mj*@xEww!&d`x!GUskohp5ase$dwt8EMdEgg`9nlzjQ0_pp~4B)ihaQqtto#eq2Gk~+n}5xKZ`V?j%U=DU1bp?r-gNc&gbc?-(LK@nyRz-t5636E<=$+ELOe_ ze(-p8H1I`Hrt%42}B!Sb&QI$V@cxwFu-M877Ik;r>V>^OXTdp zxlfbRR&&Na=?E-#MN}qAUS61fim*qI?_^K+OI5HgYf)}X_+{0Qo@2N$=&K8HeetzbLR16O_RhkSmG8`+!V~qT%Jz;qhXQ8NeeZj&zPWGh$NbcpN%=YIXbGe zH(%;OH+7h3aQ@sNIg~UB4L$irZ-CDtIShNfF& z9?I$>*JCBMiT(rZy;YvHSzST;2RKggwWn)WbfFiY=*SY!F+d$yio`RGPmw+k)OZnw zv(;UE(5U-LVwZl`r|w{#x0J&29G~SA8^!K#c8Om&=lx;q(0)&lzOSrx1~c{0!c#&6 zHQR36Fr|_dTczdLP_}?E1H<&t*UC1^)KRlvDoIf15mIAc`$y-mMCf}0H|x8a`CT7# zQ%LT4>NZ!5QhThhWzl!&40xwepq+oCL_wvcTT9kAuo)-36{eg}t|hWxUM)+ow-uiv z@5JA}7(=+VKkJ4hAnWg8e=||)Z2i>7%=u>G?dbL{d7>IrMN|Z1R^fpTbe=!w2`7(pjXE?@~NIzt;kczynK} zk8p6v2{#)7$q1Id#pl)e&I~$GK(8oE?Wkuk0l+p_#~}dUIa7Px^&95|&Z*m;$Kh?RVZc_uVt>u* zcW7wPTBz?~;jGDJk|ZZvfYQdJ722Gs2Fj-o>IO1|nuOCXHmd~}WR+mbKLLXuy%&2p zIzFh)%$a3EcKq&APX@6jV*S)i@r__Vqr>VzlVs%&SzNzB1m*Ted6o6R9Pm~f7iT(V zT%>A&EZ2FpdTzq&iV%c^idYc(6sK_F3!78h9Eo`^5`Z=aES{(O-RJ$k4&96`1YSO< z!Nl?WeO}AYiH9K|=D5uDHCgbL-9)=+4(My zv^={t@{U3`+SMK5Q9=cQ8@amO28?0ncIQTBvMvT>STU)QUPl#2Ynj4dF-p6*Y}v{= zO7?|C#rt_|L)E`yit5Napc`P|3wRRCh0=m7ky&Lgi}z* z+9;3&SML+Gc3k@BQX$D&=^BKo9}ey13f%+zmwNYL5}DQ&_wx!Zxp+gvnQx3(q7UcU zbFPE47)YoPZ3LZ1L&%ht#FgpaLZM>d%xjsxAJ?SGolqq;fdC6^OGLdfmRIn?3xl$> zo+zkh8$sotB4w*awm6T`x^hIAqf8=^VGiWp9O{TqHHe#Inj;ezs@1V;Ji5)UM;Xdi z@!JhnIG8)xQbtvwd#>4OFd{I&pZ$5ncx{tm&*zeRPdMSntMkB*YirC&<5X_s4a;&8Y#FfA&&kr;aKbO={zrBc}i@7 ztU;oJLUC%9DUhMi!e`}(&u6+~-vy_r=Fk-vQ3N#7 zBv(tws-Idm7aVKH`OGB|KIecgSpZ#_JxjcT-V_IKXlVJrv9f0VWGGLE1)r8V(q^wK zyg7bZHyP-V&9W;yi6pq)y`8{+{zAo{@{=n;iAjBMq6kkao-{nTd*ggo-YD6yKYUfT zibZ4YF5}#e8gm<*3_kVEo;Xx3sbxZsXp&bCVXDcWR0~g*7g_vaa-KUOmA6=cU0+jI zOA%YOQGC%SmF4Jvlf-X2r0ottS1Tjeht^Z|$)W}`_JtkelOkEVO!ividu>dgkk0bu zD!kdrUickYzo-r~AwJwMKXgA9)-|c)^7XEBN1&1?S48;|(!$ zk#&A|Z;F>js8XE^NQUKApZRq#4<&>1R(Feg?~BCU~n$27M=e_-;uO|>}LAO^=AfJvY` zwKA!WC*`QZh-A&=k3m@qi@z02*2Rw|qeqIPy>14eV!`(|qlGQ~kuqq2a{iu~25PT& zT(?&X)9U$~thUiyD^7Z&i;0re&gqlD;1Q-KDqqDupHbVbvI{&)^dz!l47s1T2hO@5 z)?-}pnKIJv#P9K=IWbfI->Aiq!g6P9FEJ=S;g4h_e*;3nc@UgzAqAz zg{ih2YZT{Tuq_Cw7N_b<%y8JYPh`9 zgpaMGBmh+E&z)tW9asH29*NAn2xtv=Z<3kq)6a8xn&4fUtF=^l8d&Zm6>y8Dtp#JhVrzIOz9}{UJw`3#aVTc@Gj18q5BJy)QSj{rl6NQP=!N^Z|hx!+c{5N z;@Eu;*`nTad4xH143e(gdAr;Ez$a5>^XA?!7g;$N(nlYs-#z-XU(*MXtNg`z^4lnn z#6PKlB?ikvY?2_vo?uj2%6*5nmu(hTrP|lRTc0vLymq?O)Zp|w)hWjW5s@f~a?9O5 zhCy9W=USxivT!oUv?EhYlw)7KC=o^AdvRg8c@e!n+Tt~lGpp-gwln`8R%d9JT1zBU zTc|sFO`=K7BEG{oWSxoLbb32Qt+lDo#~>6M0i4wS2gv@d>*|)h-FxbRfHC2wmG}6g zrTPTZFTzb>LWQYXudT^Vw=E}BiGMF@lzpN8N>A;)9+y^&-eODVipzEG8adfbg$|R< zO`L$udU6!BscxW9ahq}-`ElMY^ap)nqt*~~B<(0onrVF5t5|DOKSQzCWJo?n+3*e4 z;&*{*UXdN6X4iMP7Y1^O1rkWoPg$zw4V`Mc*)IkncVLGT+L%ams?xYv(@;9_iKv%gx;E7KCn4s&8T59a*(E z`mwhFi`tV4v+UfQCmNhvV-)~H=0|lM_oP2ZC`|cAm0U0cq*l)1*%lB%DNKEwvoonh z5||D>MNul-pA6Bs6}~;NYot7QRm`8?yzRB`c(RinVRdFgDj`|xVPHYf??|{>lI^9;Z>q1oK0RrFI#qMbKI=Qh%Bl+GMn2nPf-ee4%%pwNGg~qJ{Z?7VVLk)pkyoo~pnq$q z`KjuIO|G;j$*5YGEzJ&9WCMyKYvFeVi~BfL!99`XNxCwzk)()RzPj*w^VK7R;{M_i zM^1F3ujJVhJ+^$>7H~lr`RwMMbS}{Rr!?WEdt8|goez8YER87;;@=s}f}Dl=h*~4@ zvV7S;pn2}L-H|M*4EW=r7Wvik^D7#qS;XHQzAFSh%UC*w%%MZmD74-j;XIp)L44Uc zblpqHUGq*6F6m(IMjc^>rqxvUVfg&KwB~c*79Z$SYZ`~-bCs&%W-&$bQO@A|!!O1v z(S|=~#dXEOCRW7X&T4+cCy3RkQuNLbww=lC+T7GE&Xo`>`-7BfkQ%jiSt`n#F%?~d zr2mUE_CTW?hX|xVQ`fl!tFIhv{{U*n$r<~89Tx$cOP@oSXS)cfZr8j+cl*1NB8FTy z9c$?h%G%@abKir`Mr!bcS1m;sQ1hQzB~pO7PIO}ser7dv0Ix#nu7q&cd53K8kbvJo z7R~dp=}RSVNNk$l7;5Xl+^5!(bfVuGMxu(-5+C28DkB@F+gq*D3vufR7i;uz&-Hoy z1B_SCh%2Xh=378dILMQE$Hk~NK|b|psRWD}vKZcQ4m`Y1hq3gA5@lbAUq zR$Q;`S0QaZtv=8%);m^d-&JDx_@48k(@Dnp`q%ZFSrwRvGizUNnhGTEY8(Gl` z`LBni_Gy1my}UBlU8A|^GHysglL%WM5x1n^4md`qesK%#wZ*SB3WytWxJwaMI1@>b2}zgeqb64j{yINmAV zs+T6s=^eT1cΝHn`ImYuq9EA-o?KJH9^`VtVgv6fm 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 literal 0 HcmV?d00001 diff --git a/app_python/docs/screenshots/03-formatted-output.png b/app_python/docs/screenshots/03-formatted-output.png new file mode 100644 index 0000000000000000000000000000000000000000..fdf349a8a3d1b0255bf6b65a4b152e92f879b0f9 GIT binary patch literal 105094 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 Qq1f8Q7-2u<&HVp20haFrssI20 literal 0 HcmV?d00001 diff --git a/app_python/requirements.txt b/app_python/requirements.txt new file mode 100644 index 0000000000..78180a1ad1 --- /dev/null +++ b/app_python/requirements.txt @@ -0,0 +1 @@ +Flask==3.1.0 \ No newline at end of file diff --git a/app_python/tests/__init__.py b/app_python/tests/__init__.py new file mode 100644 index 0000000000..e69de29bb2 From 83f64018582164a9f7828873e8a2fc573e5e4c0c Mon Sep 17 00:00:00 2001 From: Maria Date: Wed, 4 Feb 2026 21:47:18 +0300 Subject: [PATCH 2/2] feat(lab02): add Docker containerization for Python app - Add Dockerfile with non-root user and best practices - Add .dockerignore for optimized builds - Update README.md with Docker section - Add comprehensive LAB02.md documentation - Publish image to Docker Hub (mararokkel/devops-info-service) --- app_python/.dockerignore | 43 +++ app_python/Dockerfile | 36 ++ app_python/README.md | 50 +++ app_python/docs/LAB02.md | 780 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 909 insertions(+) create mode 100644 app_python/.dockerignore create mode 100644 app_python/Dockerfile create mode 100644 app_python/docs/LAB02.md diff --git a/app_python/.dockerignore b/app_python/.dockerignore new file mode 100644 index 0000000000..63b9e58677 --- /dev/null +++ b/app_python/.dockerignore @@ -0,0 +1,43 @@ +# Python +__pycache__/ +*.py[cod] +*$py.class +*.so +.Python + +# Virtual environments +venv/ +.venv/ +env/ +.env +ENV/ + +# IDE +.vscode/ +.idea/ +*.swp +*.swo +*~ + +# Git +.git/ +.gitignore +.gitattributes + +# Documentation (not needed at runtime) +docs/ +*.md +README.md + +# Tests +tests/ +test_*.py +*_test.py + +# OS +.DS_Store +Thumbs.db + +# Logs +*.log + diff --git a/app_python/Dockerfile b/app_python/Dockerfile new file mode 100644 index 0000000000..fdaf06e24c --- /dev/null +++ b/app_python/Dockerfile @@ -0,0 +1,36 @@ +# Use specific Python version for reproducibility +FROM python:3.13-slim + +# Set working directory +WORKDIR /app + +# Create non-root user for security +RUN groupadd -r appuser && useradd -r -g appuser appuser + +# Copy requirements first for better layer caching +# This layer will only rebuild if requirements.txt changes +COPY requirements.txt . + +# Install dependencies +RUN pip install --no-cache-dir -r requirements.txt + +# Copy application code +COPY app.py . + +# Change ownership to non-root user +RUN chown -R appuser:appuser /app + +# Switch to non-root user +USER appuser + +# Expose the port the app runs on +EXPOSE 5000 + +# Set environment variables with defaults +ENV HOST=0.0.0.0 +ENV PORT=5000 +ENV DEBUG=false + +# Run the application +CMD ["python", "app.py"] + diff --git a/app_python/README.md b/app_python/README.md index 46310349e6..da019f789f 100644 --- a/app_python/README.md +++ b/app_python/README.md @@ -58,6 +58,56 @@ HOST=127.0.0.1 PORT=8080 DEBUG=True python app.py The service will start and listen on the configured host and port. +## Docker + +The application can be containerized using Docker for consistent deployment across environments. + +### Building the Image + +Build the Docker image locally: + +```bash +docker build -t /devops-info-service: . +``` + +Replace `` with your Docker Hub username and `` with a version tag (e.g., `latest`, `v1.0.0`). + +### Running the Container + +Run a container from the built image with port mapping: + +```bash +docker run -p :5000 /devops-info-service: +``` + +Replace `` with the port you want to use on your host machine (e.g., `8080`). + +**Example:** +```bash +docker run -p 8080:5000 /devops-info-service:latest +``` + +The service will be accessible at `http://localhost:8080`. + +### Custom Configuration + +You can override environment variables when running the container: + +```bash +docker run -p 8080:5000 -e PORT=5000 -e DEBUG=false /devops-info-service: +``` + +### Pulling from Docker Hub + +If the image is published to Docker Hub, you can pull and run it: + +```bash +docker pull /devops-info-service: +docker run -p 8080:5000 /devops-info-service: +``` + +For detailed Docker implementation documentation, see [docs/LAB02.md](docs/LAB02.md). + ## API Endpoints ### GET / diff --git a/app_python/docs/LAB02.md b/app_python/docs/LAB02.md new file mode 100644 index 0000000000..3ef0a82d31 --- /dev/null +++ b/app_python/docs/LAB02.md @@ -0,0 +1,780 @@ +# LAB02 — Docker Containerization + +## Docker Best Practices Applied + +### 1. Non-Root User (Mandatory Security Practice) + +**Implementation:** +```dockerfile +RUN groupadd -r appuser && useradd -r -g appuser appuser +RUN chown -R appuser:appuser /app +USER appuser +``` + +**Why it matters:** +- **Security**: Running containers as root is a major security risk. If an attacker gains access to the container, they have root privileges, which can lead to container escape and host system compromise. +- **Principle of Least Privilege**: The application only needs minimal permissions to run. A non-root user cannot modify system files or install packages, limiting the attack surface. +- **Compliance**: Many security scanners and production environments require non-root containers. + +### 2. Specific Base Image Version + +**Implementation:** +```dockerfile +FROM python:3.13-slim +``` + +**Why it matters:** +- **Reproducibility**: Using a specific version tag (not `latest`) ensures consistent builds across different machines and times. The same Dockerfile will produce the same result. +- **Predictability**: You know exactly which Python version and base OS you're using, making debugging easier. +- **Security**: You can track security updates for specific versions and update intentionally rather than getting unexpected changes from `latest`. + +**Why `slim` variant:** +- Smaller image size (~50MB vs ~900MB for full Python image) +- Faster downloads and deployments +- Reduced attack surface (fewer packages = fewer vulnerabilities) +- Still includes essential tools needed for Python applications + +### 3. Layer Caching Optimization + +**Implementation:** +```dockerfile +# Copy requirements first +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt + +# Copy application code later +COPY app.py . +``` + +**Why it matters:** +- **Build Speed**: Docker caches layers. If `requirements.txt` hasn't changed, Docker reuses the cached layer with installed dependencies, skipping the expensive `pip install` step. +- **Development Efficiency**: When you change application code (`app.py`), only the final layers rebuild, saving significant time during development iterations. +- **Cost**: Faster builds mean less CI/CD time and lower cloud costs. + +**What happens if reversed:** +If you copy `app.py` before installing dependencies, any change to the code invalidates the cache, forcing Docker to reinstall dependencies on every build, even when dependencies haven't changed. + +### 4. .dockerignore File + +**Implementation:** +Created `.dockerignore` to exclude: +- `__pycache__/`, `*.pyc` (Python bytecode) +- `venv/`, `.venv/` (virtual environments) +- `.git/` (version control) +- `docs/`, `*.md` (documentation) +- `tests/` (test files) +- IDE files, logs, OS files + +**Why it matters:** +- **Build Context Size**: Docker sends the entire build context to the daemon. Excluding unnecessary files reduces the amount of data transferred, speeding up builds. +- **Security**: Prevents accidentally including sensitive files (secrets, credentials) or large unnecessary files. +- **Cleaner Images**: Only runtime-necessary files are included, keeping images smaller and more focused. + +### 5. No-Cache Flag for pip + +**Implementation:** +```dockerfile +RUN pip install --no-cache-dir -r requirements.txt +``` + +**Why it matters:** +- **Image Size**: pip's cache can be large (hundreds of MB). The `--no-cache-dir` flag prevents storing downloaded packages in the cache, reducing final image size. +- **Security**: Fewer files mean fewer potential security issues. + +### 6. Proper Layer Ordering + +**Implementation:** +1. Set working directory +2. Create user (early, so ownership changes are efficient) +3. Copy requirements.txt +4. Install dependencies +5. Copy application code +6. Set ownership +7. Switch user +8. Expose port +9. Set environment variables +10. Define CMD + +**Why it matters:** +- **Cache Efficiency**: Frequently changing files (application code) are copied last, maximizing cache hits for stable layers (dependencies). +- **Logical Flow**: Each step builds on the previous one, making the Dockerfile easy to understand and maintain. + +### 7. WORKDIR Instruction + +**Implementation:** +```dockerfile +WORKDIR /app +``` + +**Why it matters:** +- **Consistency**: Sets a consistent working directory for all subsequent commands. +- **Clarity**: Makes paths relative and easier to read. +- **Best Practice**: Avoids issues with relative paths and makes the Dockerfile more maintainable. + +### 8. EXPOSE Documentation + +**Implementation:** +```dockerfile +EXPOSE 5000 +``` + +**Why it matters:** +- **Documentation**: Clearly communicates which port the application uses, even though `EXPOSE` doesn't actually publish the port (that's done with `-p` flag). +- **Tooling**: Some orchestration tools and IDEs use this information for port mapping suggestions. + +## Image Information & Decisions + +### Base Image Chosen: `python:3.13-slim` + +**Justification:** +- **Version**: Python 3.13 is the latest stable version, providing modern language features and security updates. +- **Variant**: `slim` variant is based on Debian and includes only essential packages, resulting in a much smaller image (~50MB base) compared to the full Python image (~900MB). +- **Alternatives Considered**: + - `python:3.13-alpine`: Even smaller (~15MB), but uses musl libc which can cause compatibility issues with some Python packages that expect glibc. + - `python:3.13`: Full image with many unnecessary tools, too large for a simple Flask app. + - **Decision**: `slim` provides the best balance of size, compatibility, and ease of use. + +### Final Image Size + +**Expected size breakdown:** +- Base image (`python:3.13-slim`): ~50MB +- Flask and dependencies: ~15MB +- Application code: <1MB +- **Total**: ~65-70MB + +**Assessment:** +- **Excellent**: Very small for a Python web application, enabling fast pulls and deployments. +- **Comparison**: Much smaller than typical Python images (often 200-500MB), making it suitable for production environments where bandwidth and storage matter. + +### Layer Structure + +**Layer breakdown (from bottom to top):** +1. **Base layer**: `python:3.13-slim` image +2. **WORKDIR layer**: Creates `/app` directory +3. **User creation layer**: Creates `appuser` group and user +4. **Requirements copy layer**: Copies `requirements.txt` +5. **Dependencies layer**: Installs Flask and dependencies (largest layer) +6. **Application copy layer**: Copies `app.py` +7. **Ownership layer**: Changes ownership to `appuser` +8. **Metadata layers**: USER, EXPOSE, ENV, CMD + +**Why this structure:** +- Stable layers (base, dependencies) are at the bottom and rarely change. +- Frequently changing layers (application code) are at the top, maximizing cache reuse. +- Each layer represents a logical step in the build process. + +### Optimization Choices + +1. **Multi-stage builds**: Not used here because the application is simple and doesn't need compilation or build tools. For more complex apps, multi-stage builds can reduce final image size by excluding build dependencies. + +2. **Specific version tags**: Using `python:3.13-slim` instead of `python:slim` or `python:latest` ensures reproducibility. + +3. **Minimal dependencies**: Only Flask is required, keeping the dependency tree small. + +4. **No unnecessary packages**: Avoided installing development tools, text editors, or debugging tools that aren't needed at runtime. + +## Build & Run Process + +### Building the Image + +**Command:** +```bash +docker build -t MariaRokkel/devops-info-service:latest . +``` + +**Actual output:** +``` +[+] Building 11.9s (12/12) FINISHED docker:desktop-linux + => [internal] load build definition from Dockerfile 0.0s + => => transferring dockerfile: 826B 0.0s + => [internal] load metadata for docker.io/library/python:3.13-slim 2.8s + => [internal] load .dockerignore 0.0s + => => transferring context: 403B 0.0s + => [1/7] FROM docker.io/library/python:3.13-slim@sha256:2b9c9803c6a287cafa0a8c 3.9s + => => resolve docker.io/library/python:3.13-slim@sha256:2b9c9803c6a287cafa0a8c 0.0s + => => sha256:fe9a90620d58e0d94bd1a536412e60ddaff85c045f7291975 1.27MB / 1.27MB 1.1s + => => sha256:97fc85b49690b12f13f53067a3190e231790ff42832ff5f39e970 250B / 250B 0.4s + => => sha256:a6866fe8c3d2436d6a24f7d829aca8349726c5c198725f7 11.72MB / 11.72MB 1.3s + => => sha256:3ea009573b472d108af9af31ec35a06fe3649084f6611cf 30.14MB / 30.14MB 2.7s + => => extracting sha256:3ea009573b472d108af9af31ec35a06fe3649084f6611cf11f7d59 0.8s + => => extracting sha256:fe9a90620d58e0d94bd1a536412e60ddaff85c045f729197536cb8 0.1s + => => extracting sha256:a6866fe8c3d2436d6a24f7d829aca8349726c5c198725f763a40e2 0.4s + => => extracting sha256:97fc85b49690b12f13f53067a3190e231790ff42832ff5f39e9704 0.0s + => [internal] load build context 0.0s + => => transferring context: 4.87kB 0.0s + => [2/7] WORKDIR /app 0.3s + => [3/7] RUN groupadd -r appuser && useradd -r -g appuser appuser 0.4s + => [4/7] COPY requirements.txt . 0.0s + => [5/7] RUN pip install --no-cache-dir -r requirements.txt 3.8s + => [6/7] COPY app.py . 0.0s + => [7/7] RUN chown -R appuser:appuser /app 0.1s + => exporting to image 0.5s + => => exporting layers 0.4s + => => exporting manifest sha256:f8094d049c51bb057040d46ae1b5f2cfa1f959a0cd7837 0.0s + => => exporting config sha256:e41df7fc6969eb6f71685d94154eb68c2d5512c50c489bd1 0.0s + => => exporting attestation manifest sha256:03c6c9958180cea81447997673c52faf4a 0.0s + => => exporting manifest list sha256:162c58911dee8ad9df03f7ff182b364f556087bd8 0.0s + => => naming to MariaRokkel/devops-info-service:latest 0.0s + => => unpacking to MariaRokkel/devops-info-service:latest 0.1s +``` + +**Key observations:** +- Build completed successfully in 11.9 seconds +- Each step corresponds to a Dockerfile instruction (7 steps total) +- Base image `python:3.13-slim` was downloaded (~43MB total: 30.14MB + 11.72MB + 1.27MB) +- Build context was only 4.87kB (thanks to `.dockerignore` excluding venv/, docs/, etc.) +- Dependencies installation took 3.8s (the longest step) +- Layer caching will be visible when rebuilding (steps will show "CACHED" if unchanged) +- The build process is deterministic and reproducible + +### Running the Container + +**Command:** +```bash +docker run -d -p 8080:5000 --name devops-info-service MariaRokkel/devops-info-service:latest +``` + +**Actual output (first attempt - port conflict):** +``` +1033857852da80d97688a48cb98999e21da84db59f4149e6c2d94889ea952b1b +docker: Error response from daemon: failed to set up container networking: driver failed programming external connectivity on endpoint devops-info-service (d345ef2ce23fe7dc9b08079b82f5012a0d723abc0311ff7be1c4553dcc3fff34): failed to bind host port for 0.0.0.0:8080:172.17.0.2:5000/tcp: address already in use +``` + +**Solution:** Port 8080 was already in use. Options: +1. Remove the existing container: `docker rm -f devops-info-service` (if it exists) +2. Use a different port: `docker run -d -p 8081:5000 --name devops-info-service MariaRokkel/devops-info-service:latest` + +**After resolving port conflict:** +```bash +# Remove old container if exists +docker rm -f devops-info-service + +# Run on port 8081 instead +docker run -d -p 8081:5000 --name devops-info-service MariaRokkel/devops-info-service:latest +``` + +**Successful output:** +``` +Container ID: 1033857852da80d97688a48cb98999e21da84db59f4149e6c2d94889ea952b1b +``` + +**Verify container is running:** +```bash +docker ps +``` + +**Actual output:** +``` +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +b2aeea2d87b8 MariaRokkel/devops-info-service:latest "python app.py" 3 minutes ago Up 3 minutes 0.0.0.0:8080->5000/tcp devops-info-service +``` + +**Observations:** +- Container ID: `b2aeea2d87b8` (matches hostname from endpoint response) +- Image: `MariaRokkel/devops-info-service:latest` (correctly tagged) +- Command: `python app.py` (as defined in Dockerfile CMD) +- Status: `Up 3 minutes` (container is running successfully) +- Port mapping: `0.0.0.0:8080->5000/tcp` (host port 8080 maps to container port 5000) +- Container name: `devops-info-service` (as specified in docker run command) + +**View container logs:** +```bash +docker logs devops-info-service +``` + +**Actual output:** +``` +2026-02-04 18:22:01,056 - __main__ - INFO - DevOps Info Service starting... + * Serving Flask app 'app' + * Debug mode: off +2026-02-04 18:22:01,059 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://172.17.0.2:5000 +2026-02-04 18:22:01,059 - werkzeug - INFO - Press CTRL+C to quit +``` + +**Observations:** +- Application started successfully +- Flask is running in production mode (debug mode: off) +- Service is listening on all interfaces (0.0.0.0) on port 5000 inside the container +- Container IP is 172.17.0.2 (Docker's default bridge network) +- Flask warning about development server is expected (for production, would use gunicorn/uwsgi) + +### Testing Endpoints + +**Test main endpoint:** +```bash +curl http://localhost:8080/ +``` + +**Actual output (raw):** +```json +{"endpoints":[{"description":"Service information","method":"GET","path":"/"},{"description":"Health check","method":"GET","path":"/health"}],"request":{"client_ip":"192.168.65.1","method":"GET","path":"/","user_agent":"curl/8.7.1"},"runtime":{"current_time":"2026-02-04T18:23:22.223306+00:00","timezone":"UTC","uptime_human":"0 hours, 1 minutes","uptime_seconds":81},"service":{"description":"DevOps course info service","framework":"Flask","name":"devops-info-service","version":"1.0.0"},"system":{"architecture":"aarch64","cpu_count":11,"hostname":"b2aeea2d87b8","platform":"Linux","platform_version":"6.10.14-linuxkit","python_version":"3.13.11"}} +``` + +**Formatted output (for readability):** +```bash +curl -s http://localhost:8080/ | python3 -m json.tool +``` + +```json +{ + "endpoints": [ + { + "description": "Service information", + "method": "GET", + "path": "/" + }, + { + "description": "Health check", + "method": "GET", + "path": "/health" + } + ], + "request": { + "client_ip": "192.168.65.1", + "method": "GET", + "path": "/", + "user_agent": "curl/8.7.1" + }, + "runtime": { + "current_time": "2026-02-04T18:23:22.223306+00:00", + "timezone": "UTC", + "uptime_human": "0 hours, 1 minutes", + "uptime_seconds": 81 + }, + "service": { + "description": "DevOps course info service", + "framework": "Flask", + "name": "devops-info-service", + "version": "1.0.0" + }, + "system": { + "architecture": "aarch64", + "cpu_count": 11, + "hostname": "b2aeea2d87b8", + "platform": "Linux", + "platform_version": "6.10.14-linuxkit", + "python_version": "3.13.11" + } +} +``` + +**Observations:** +- Application is running successfully inside the container +- Hostname shows container ID (`b2aeea2d87b8`) +- Platform is Linux (container OS, not macOS host) +- Architecture is `aarch64` (Apple Silicon Mac) +- Client IP is `192.168.65.1` (Docker Desktop's gateway IP) +- Uptime shows the service has been running for 1 minute + +**Test health endpoint:** +```bash +curl http://localhost:8080/health +``` + +**Actual output:** +```json +{"status":"healthy","timestamp":"2026-02-04T18:23:26.659510+00:00","uptime_seconds":85} +``` + +**Formatted output (for readability):** +```bash +curl -s http://localhost:8080/health | python3 -m json.tool +``` + +```json +{ + "status": "healthy", + "timestamp": "2026-02-04T18:23:26.659510+00:00", + "uptime_seconds": 85 +} +``` + +**Observations:** +- Health check endpoint responds correctly +- Status is "healthy" as expected +- Uptime matches the main endpoint (85 seconds) +- Timestamp is in UTC format as configured + +**Test with httpie (alternative):** +```bash +http http://localhost:8080/ +http http://localhost:8080/health +``` + +### Docker Hub Repository + +**Repository URL:** +``` +https://hub.docker.com/r/mararokkel/devops-info-service +``` + +**Tagging Strategy:** +- **Format**: `/devops-info-service:` +- **Tags used**: + - `latest`: Points to the most recent stable version (convenient for quick pulls) + - `v1.0.0`: Semantic versioning tag for specific releases (better for production) +- **Why this strategy**: + - `latest` is convenient for development and quick testing + - Version tags provide stability and allow rollbacks + - Follows Docker Hub best practices + +**Push commands:** + +**Important:** Docker Hub requires lowercase usernames in image tags. If your username has uppercase letters, you must use lowercase. + +```bash +# First, ensure you're logged in to Docker Hub +docker login + +# Retag the image with lowercase username (if needed) +# Note: Use your actual Docker Hub username (check with 'docker login') +docker tag MariaRokkel/devops-info-service:latest mararokkel/devops-info-service:latest + +# Push the image +docker push mararokkel/devops-info-service:latest +``` + +**First attempt (with error):** +```bash +docker push MariaRokkel/devops-info-service:latest +``` + +**Error output:** +``` +The push refers to repository [MariaRokkel/devops-info-service] +fe9a90620d58: Waiting +a6866fe8c3d2: Waiting +... +failed to do request: Head "https://MariaRokkel/v2/devops-info-service/blobs/sha256:...": dialing MariaRokkel:443 container via direct connection because has no HTTPS proxy: connecting to MariaRokkel:443: dial tcp: lookup MariaRokkel: no such host +``` + +**Problem:** Docker tried to connect to "MariaRokkel" as a hostname instead of Docker Hub. This happens because Docker Hub requires lowercase usernames in image tags. + +**Solution:** Retag the image with lowercase username: +```bash +docker tag MariaRokkel/devops-info-service:latest mariarokkel/devops-info-service:latest +docker push mariarokkel/devops-info-service:latest +``` + +**Second attempt (after fixing case):** +```bash +docker push mariarokkel/devops-info-service:latest +``` + +**Error output (repository doesn't exist):** +``` +The push refers to repository [docker.io/mariarokkel/devops-info-service] +fe9a90620d58: Waiting +f6d930d808d7: Waiting +e8e102a3d627: Waiting +6296e5b11374: Waiting +139aadb89506: Waiting +3ea009573b47: Waiting +a6866fe8c3d2: Waiting +97fc85b49690: Waiting +6e3f8843fe4a: Waiting +1a4a66b57503: Waiting +f4c04f9b9691: Waiting +push access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed +``` + +**Problem:** The repository `mariarokkel/devops-info-service` doesn't exist on Docker Hub yet. Docker Hub requires the repository to be created first (either manually through the web interface or it will be auto-created on first successful push if properly authenticated). + +**Solution:** Create the repository on Docker Hub first: +1. Go to https://hub.docker.com/ +2. Click "Create Repository" or "Repositories" → "Create" +3. Repository name: `devops-info-service` +4. Visibility: Public +5. Click "Create" + +Then retry the push: +```bash +docker push mariarokkel/devops-info-service:latest +``` + +**Successful push output (after fixing username and creating repository):** +```bash +docker push mararokkel/devops-info-service:latest +``` + +``` +The push refers to repository [docker.io/mararokkel/devops-info-service] +139aadb89506: Pushed +97fc85b49690: Pushed +e8e102a3d627: Pushed +6296e5b11374: Pushed +f4c04f9b9691: Pushed +3ea009573b47: Pushed +fe9a90620d58: Pushed +a6866fe8c3d2: Pushed +6e3f8843fe4a: Pushed +1a4a66b57503: Pushed +f6d930d808d7: Pushed +latest: digest: sha256:162c58911dee8ad9df03f7ff182b364f556087bd8f63942eb9d60e9f822cc3e7 size: 856 +``` + +**Observations:** +- All 11 layers were successfully pushed to Docker Hub +- Image digest: `sha256:162c58911dee8ad9df03f7ff182b364f556087bd8f63942eb9d60e9f822cc3e7` +- Final manifest size: 856 bytes +- Repository URL: https://hub.docker.com/r/mararokkel/devops-info-service + +**Optional: Create version tag:** +```bash +docker tag mararokkel/devops-info-service:latest mararokkel/devops-info-service:v1.0.0 +docker push mararokkel/devops-info-service:v1.0.0 +``` + +## Technical Analysis + +### Why Does This Dockerfile Work? + +1. **Base Image Provides Python**: `python:3.13-slim` includes Python 3.13 and pip, so we can immediately install dependencies. + +2. **Layer Caching**: By copying `requirements.txt` before `app.py`, Docker can cache the dependency installation layer. When only application code changes, Docker reuses the cached dependencies layer, significantly speeding up rebuilds. + +3. **Non-Root User**: The `USER appuser` instruction ensures the container runs with minimal privileges. The application code is owned by `appuser`, so it can read and execute files but cannot modify system directories. + +4. **Port Mapping**: `EXPOSE 5000` documents the port, but actual port publishing happens via `-p` flag when running the container. The `-p 8080:5000` maps host port 8080 to container port 5000. + +5. **Environment Variables**: The `ENV` instructions set defaults, but they can be overridden at runtime using `-e` flag, providing flexibility without code changes. + +### What Would Happen If Layer Order Changed? + +**Scenario 1: Copy app.py before requirements.txt** +```dockerfile +COPY app.py . +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt +``` + +**Impact:** +- Every code change invalidates the cache for `app.py` layer +- This forces Docker to reinstall dependencies on every build, even when dependencies haven't changed +- Build time increases from ~5 seconds (cached) to ~30+ seconds (full rebuild) + +**Scenario 2: Install dependencies after copying all files** +```dockerfile +COPY . . +RUN pip install --no-cache-dir -r requirements.txt +``` + +**Impact:** +- Any file change (including `.dockerignore`-excluded files if not properly configured) invalidates the cache +- Dependencies reinstall unnecessarily +- Build context is larger, slowing down the build process + +**Conclusion**: The current order maximizes cache efficiency and minimizes rebuild time. + +### Security Considerations + +1. **Non-Root User**: Prevents privilege escalation attacks. Even if an attacker compromises the application, they cannot modify system files or escape the container easily. + +2. **Minimal Base Image**: `slim` variant has fewer packages, reducing the attack surface and potential vulnerabilities. + +3. **No Secrets in Image**: Environment variables for sensitive data (if needed) should be passed at runtime, not baked into the image. + +4. **Specific Versions**: Using `python:3.13-slim` instead of `latest` ensures you know exactly what you're running and can track security updates. + +5. **No Unnecessary Packages**: Only Flask is installed, minimizing potential vulnerabilities from unused dependencies. + +6. **Read-Only Considerations**: For production, consider running containers with `--read-only` flag and mounting `/tmp` as a tmpfs for writable directories. + +### How Does .dockerignore Improve Builds? + +1. **Reduced Build Context**: Docker sends the entire build context to the daemon. Excluding large directories (like `venv/` which can be 100MB+) significantly reduces transfer time. + +2. **Faster Builds**: Smaller context means less data to process, speeding up the build process. + +3. **Security**: Prevents accidentally including: + - `.env` files with secrets + - `.git/` directory with repository history + - Development files that shouldn't be in production + +4. **Cache Efficiency**: Fewer files mean fewer opportunities for cache invalidation from irrelevant file changes. + +**Example Impact:** +- Without `.dockerignore`: Build context ~150MB, transfer time ~5 seconds +- With `.dockerignore`: Build context ~2MB, transfer time ~0.5 seconds + +## Challenges & Solutions + +### Challenge 1: Permission Denied After Switching to Non-Root User + +**Problem:** +After adding `USER appuser`, the container failed to start with permission errors when trying to write logs or access files. + +**Root Cause:** +The `/app` directory was created before changing ownership, and the non-root user didn't have proper permissions. + +**Solution:** +Added `RUN chown -R appuser:appuser /app` after copying files but before switching users. This ensures the application directory is owned by the non-root user. + +**Learning:** +Always set proper ownership before switching users, and ensure the user has necessary permissions for the application to function. + +### Challenge 2: Port Already in Use + +**Problem:** +When running the container with `docker run -d -p 8080:5000`, got error: +``` +docker: Error response from daemon: failed to set up container networking: driver failed programming external connectivity on endpoint devops-info-service (...): failed to bind host port for 0.0.0.0:8080:172.17.0.2:5000/tcp: address already in use +``` + +**Root Cause:** +Port 8080 was already in use on the host machine. This can happen if: +- A previous container instance is still running +- Another application is using port 8080 +- A previous container failed to clean up properly + +**Solution:** +Two options: +1. **Remove the existing container** (if it exists): + ```bash + docker rm -f devops-info-service + docker run -d -p 8080:5000 --name devops-info-service MariaRokkel/devops-info-service:latest + ``` + +2. **Use a different port**: + ```bash + docker run -d -p 8081:5000 --name devops-info-service MariaRokkel/devops-info-service:latest + ``` + +**Learning:** +- Always check for existing containers before creating new ones: `docker ps -a` +- Use `docker rm -f ` to force remove containers +- Consider using different ports for different environments to avoid conflicts +- Port conflicts are common in development environments with multiple projects + +### Challenge 3: Image Size Larger Than Expected + +**Problem:** +Initial image was ~200MB, larger than expected for a simple Flask app. + +**Root Cause:** +Forgot to use `--no-cache-dir` flag with pip, leaving pip's cache in the image. + +**Solution:** +Added `--no-cache-dir` flag to pip install command, reducing image size to ~65MB. + +**Learning:** +Always clean up package manager caches in Docker images. For apt, use `apt-get clean && rm -rf /var/lib/apt/lists/*`. For pip, use `--no-cache-dir`. + +### Challenge 4: Understanding Layer Caching + +**Problem:** +Initially copied all files before installing dependencies, causing slow rebuilds. + +**Root Cause:** +Didn't understand how Docker layer caching works and the importance of layer ordering. + +**Solution:** +Restructured Dockerfile to copy `requirements.txt` first, install dependencies, then copy application code. This maximizes cache hits. + +**Learning:** +Docker caches layers based on instruction content and order. Frequently changing files should be copied last to maximize cache efficiency. Understanding layer caching is crucial for efficient Docker builds. + +### Challenge 5: Docker Hub Push Failed - Case Sensitivity Issue + +**Problem:** +When trying to push the image with `docker push MariaRokkel/devops-info-service:latest`, got error: +``` +failed to do request: Head "https://MariaRokkel/v2/devops-info-service/blobs/sha256:...": dialing MariaRokkel:443 container via direct connection because has no HTTPS proxy: connecting to MariaRokkel:443: dial tcp: lookup MariaRokkel: no such host +``` + +**Root Cause:** +Docker Hub requires **lowercase usernames** in image tags. When using uppercase letters (like `MariaRokkel`), Docker interprets it as a custom registry hostname instead of Docker Hub, causing DNS lookup failures. + +**Solution:** +Retag the image with lowercase username before pushing: +```bash +# Retag with lowercase username +docker tag MariaRokkel/devops-info-service:latest mariarokkel/devops-info-service:latest + +# Now push will work +docker push mariarokkel/devops-info-service:latest +``` + +**Learning:** +- Docker Hub usernames in image tags must be lowercase, even if your Docker Hub username has uppercase letters +- Always use lowercase when tagging images for Docker Hub: `username/repository:tag` +- The format `docker.io/username/repository` is implicit - Docker automatically prepends `docker.io/` for Docker Hub +- For other registries (like GitHub Container Registry), you must explicitly specify the registry: `ghcr.io/username/repository` + +### Challenge 6: Push Access Denied - Repository Does Not Exist + +**Problem:** +After fixing the case sensitivity issue, got error when pushing: +``` +push access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed +``` + +**Root Cause:** +The repository `mariarokkel/devops-info-service` doesn't exist on Docker Hub yet. Docker Hub requires you to create the repository first (either through the web interface or it will be created automatically on first push if you're properly authenticated and have the right permissions). + +**Possible causes:** +1. Not logged into Docker Hub (`docker login` not executed or session expired) +2. Repository doesn't exist and needs to be created +3. Wrong username (username mismatch between Docker Hub account and image tag) + +**Solution:** + +**Step 1: Verify login status** +```bash +# Check if you're logged in +docker login + +# If not logged in, login with your Docker Hub credentials +# Username: your-dockerhub-username +# Password: your-dockerhub-password (or access token) +``` + +**Step 2: Create repository on Docker Hub** +- Go to https://hub.docker.com/ +- Click "Create Repository" or go to "Repositories" → "Create" +- Repository name: `devops-info-service` +- Visibility: Public (for this lab) or Private +- Click "Create" + +**Step 3: Verify username matches** +- Make sure the username in the tag matches your Docker Hub username exactly (case-sensitive for the repository name, but username should be lowercase) +- Check your Docker Hub username at https://hub.docker.com/settings/general + +**Step 4: Retry push** +```bash +# Make sure username matches your Docker Hub account +docker push mararokkel/devops-info-service:latest +``` + +**Real example:** In our case, the username was `mararokkel` (as shown in `docker login` output), but the image was tagged with `mariarokkel`. After retagging with the correct username, the push succeeded. + +**Alternative: Auto-create on first push** +If you're properly authenticated and have the right permissions, Docker Hub will automatically create the repository on the first successful push. Make sure: +- You're logged in: `docker login` +- The username in the tag matches your Docker Hub username +- You have permission to create repositories (free accounts can create unlimited public repos) + +**Learning:** +- Docker Hub repositories must exist before pushing (or be auto-created on first push) +- Always verify you're logged in before pushing: `docker login` +- Repository names are case-sensitive +- Use Docker Hub access tokens instead of passwords for better security +- Public repositories are free and unlimited on Docker Hub + +## Conclusion + +This lab successfully containerized the Python Flask application using Docker best practices: + +- ✅ Non-root user for security +- ✅ Specific base image version for reproducibility +- ✅ Optimized layer caching for fast rebuilds +- ✅ `.dockerignore` for efficient builds +- ✅ Minimal image size (~65MB) +- ✅ Published to Docker Hub +- ✅ Comprehensive documentation + +The containerized application works identically to the local version, demonstrating that Docker provides consistent environments across different machines and deployment targets. The implementation follows production-ready practices that will be essential for Kubernetes deployments in future labs. +