From 5f6a0928f28334523e09582d4e7f98d791beb0de Mon Sep 17 00:00:00 2001 From: shaiananvari8 <228813044+shaiananvari8@users.noreply.github.com> Date: Wed, 27 May 2026 16:32:54 -0500 Subject: [PATCH 1/3] Add challenge reviewer workload SLA guard --- .../README.md | 36 + .../acceptance-notes.md | 26 + challenge-reviewer-workload-sla-guard/demo.js | 27 + .../index.js | 495 +++++++++++ .../make-demo-video.js | 310 +++++++ .../package.json | 13 + .../reports/demo.avi | Bin 0 -> 9332016 bytes .../reports/summary.svg | 41 + .../reports/workload-review-packet.json | 782 ++++++++++++++++++ .../reports/workload-review-report.md | 60 ++ .../requirements-map.md | 14 + .../sample-data.js | 323 ++++++++ challenge-reviewer-workload-sla-guard/test.js | 63 ++ 13 files changed, 2190 insertions(+) create mode 100644 challenge-reviewer-workload-sla-guard/README.md create mode 100644 challenge-reviewer-workload-sla-guard/acceptance-notes.md create mode 100644 challenge-reviewer-workload-sla-guard/demo.js create mode 100644 challenge-reviewer-workload-sla-guard/index.js create mode 100644 challenge-reviewer-workload-sla-guard/make-demo-video.js create mode 100644 challenge-reviewer-workload-sla-guard/package.json create mode 100644 challenge-reviewer-workload-sla-guard/reports/demo.avi create mode 100644 challenge-reviewer-workload-sla-guard/reports/summary.svg create mode 100644 challenge-reviewer-workload-sla-guard/reports/workload-review-packet.json create mode 100644 challenge-reviewer-workload-sla-guard/reports/workload-review-report.md create mode 100644 challenge-reviewer-workload-sla-guard/requirements-map.md create mode 100644 challenge-reviewer-workload-sla-guard/sample-data.js create mode 100644 challenge-reviewer-workload-sla-guard/test.js diff --git a/challenge-reviewer-workload-sla-guard/README.md b/challenge-reviewer-workload-sla-guard/README.md new file mode 100644 index 00000000..6b2926a6 --- /dev/null +++ b/challenge-reviewer-workload-sla-guard/README.md @@ -0,0 +1,36 @@ +# Challenge Reviewer Workload SLA Guard + +This is a focused Scientific Bounty System slice for issue #18. It validates whether a challenge has enough active, under-capacity scientific reviewers and arbitrators before live sponsor scoring, arbitration, or award release proceeds. + +The guard evaluates: + +- reviewer availability, blackout windows, stale activity, open assignment count, and weekly review capacity +- overdue and critically stale challenge reviews +- rubric-criterion coverage by active reviewers with matching expertise +- arbitration backup coverage for contested scientific bounty decisions +- escalation actions when review windows should be held before payout or public award announcements + +It is intentionally separate from existing #18 slices for intake, rubric readiness, scoring, arbitration ledgers, appeal flows, anti-collusion, escrow settlement, payout eligibility, sponsor reliability, amendment consent, reviewer consensus, IP redaction, milestone progress, evidence freeze, data-room access, clarification freeze, award transparency, benchmark leakage, deliverable acceptance, reproducibility environment, cancellation/no-award, license/dependency checks, human-subjects review, solver withdrawal, embargo release, and evaluator calibration. + +## Verification + +```bash +npm run check +npm test +npm run demo +npm run demo:video +``` + +`npm run demo` generates: + +- `reports/workload-review-packet.json` +- `reports/workload-review-report.md` +- `reports/summary.svg` + +`npm run demo:video` generates: + +- `reports/demo.avi` + +## Safety + +All examples use synthetic challenge, reviewer, and assignment records. This module does not call identity services, payment systems, private review dashboards, email systems, challenge workspaces, or external APIs. diff --git a/challenge-reviewer-workload-sla-guard/acceptance-notes.md b/challenge-reviewer-workload-sla-guard/acceptance-notes.md new file mode 100644 index 00000000..efa29927 --- /dev/null +++ b/challenge-reviewer-workload-sla-guard/acceptance-notes.md @@ -0,0 +1,26 @@ +# Acceptance Notes + +## Reviewer Path + +1. Start with `requirements-map.md` to see the issue #18 mapping and scope boundary. +2. Inspect `index.js` for the deterministic workload, coverage, stale review, and arbitration backup checks. +3. Inspect `sample-data.js` for synthetic risky and clean challenge packets. +4. Run `npm test` to verify hold, ready, warning, and digest behavior. +5. Run `npm run demo` and inspect `reports/workload-review-report.md` plus `reports/summary.svg`. +6. Run `npm run demo:video` to regenerate the short demo video at `reports/demo.avi`. + +## Sponsor Outcome + +The bounty poster gets a reviewable operations-control slice that prevents a scientific bounty from entering scoring or award release with unavailable reviewers, overloaded reviewers, stale reviews, uncovered rubric expertise, or missing arbitration backup. Clean challenge packets proceed, due-soon windows produce warnings, and unsafe packets produce explicit blockers plus escalation actions. + +## Local Validation + +- `npm run check` +- `npm test` +- `npm run demo` +- `npm run demo:video` +- `git diff --check` + +## Data Handling + +The module uses synthetic data only. It includes no private reviewer records, no solver identities, no credentials, no payment details, no external service calls, and no live challenge mutations. diff --git a/challenge-reviewer-workload-sla-guard/demo.js b/challenge-reviewer-workload-sla-guard/demo.js new file mode 100644 index 00000000..15a9aff0 --- /dev/null +++ b/challenge-reviewer-workload-sla-guard/demo.js @@ -0,0 +1,27 @@ +const fs = require("node:fs"); +const path = require("node:path"); +const { evaluateChallengeReviewerWorkload, renderMarkdown, renderSvg } = require("./index"); +const { riskyChallenge, cleanChallenge } = require("./sample-data"); + +const reportsDir = path.join(__dirname, "reports"); +fs.mkdirSync(reportsDir, { recursive: true }); + +const riskyResult = evaluateChallengeReviewerWorkload(riskyChallenge); +const cleanResult = evaluateChallengeReviewerWorkload(cleanChallenge); + +fs.writeFileSync( + path.join(reportsDir, "workload-review-packet.json"), + `${JSON.stringify({ riskyResult, cleanResult }, null, 2)}\n` +); +fs.writeFileSync(path.join(reportsDir, "workload-review-report.md"), renderMarkdown(riskyResult)); +fs.writeFileSync(path.join(reportsDir, "summary.svg"), renderSvg(riskyResult)); + +console.log( + [ + `status=${riskyResult.summary.status}`, + `blockers=${riskyResult.summary.blockers}`, + `warnings=${riskyResult.summary.warnings}`, + `capacityGaps=${riskyResult.summary.criteriaWithCapacityGaps}`, + `digest=${riskyResult.auditDigest.slice(0, 16)}` + ].join(" ") +); diff --git a/challenge-reviewer-workload-sla-guard/index.js b/challenge-reviewer-workload-sla-guard/index.js new file mode 100644 index 00000000..c4972142 --- /dev/null +++ b/challenge-reviewer-workload-sla-guard/index.js @@ -0,0 +1,495 @@ +const crypto = require("node:crypto"); + +const HOURS = 60 * 60 * 1000; + +function stableStringify(value) { + if (Array.isArray(value)) { + return `[${value.map(stableStringify).join(",")}]`; + } + if (value && typeof value === "object") { + return `{${Object.keys(value) + .sort() + .map((key) => `${JSON.stringify(key)}:${stableStringify(value[key])}`) + .join(",")}}`; + } + return JSON.stringify(value); +} + +function digest(value) { + return crypto.createHash("sha256").update(stableStringify(value)).digest("hex"); +} + +function asDate(value, label) { + const date = new Date(value); + if (!Number.isFinite(date.getTime())) { + throw new Error(`Invalid date for ${label}: ${value}`); + } + return date; +} + +function hoursBetween(start, end) { + return (asDate(end, "end") - asDate(start, "start")) / HOURS; +} + +function includes(value, list) { + return Array.isArray(list) && list.includes(value); +} + +function inWindow(now, window) { + return asDate(window.startsAt, "blackout startsAt") <= now && now <= asDate(window.endsAt, "blackout endsAt"); +} + +function openAssignments(reviewer, challengeId) { + return (reviewer.assignments || []).filter((assignment) => { + return assignment.challengeId === challengeId && assignment.status !== "submitted" && assignment.status !== "withdrawn"; + }); +} + +function getReviewerState(reviewer, challengeId, now, policy) { + const assignments = openAssignments(reviewer, challengeId); + const estimatedHours = assignments.reduce((total, assignment) => total + Number(assignment.estimatedHours || 0), 0); + const weeklyBudget = Math.max(Number(reviewer.availability.weeklyHourBudget || 0), 1); + const committedHours = Number(reviewer.availability.committedHours || 0) + estimatedHours; + const utilization = committedHours / weeklyBudget; + const isBlackout = (reviewer.availability.blackoutWindows || []).some((window) => inWindow(now, window)); + const inactiveHours = hoursBetween(reviewer.lastActiveAt, now); + const isInactive = inactiveHours > policy.inactiveReviewerHours; + const isUnavailable = reviewer.availability.status !== "active" || isBlackout || isInactive; + const isOverloaded = + utilization > policy.maxReviewerUtilization || + assignments.length > Number(reviewer.availability.maxConcurrentReviews || 0); + + const staleAssignments = assignments + .map((assignment) => { + const hoursLate = hoursBetween(assignment.dueAt, now); + return { + assignmentId: assignment.id, + reviewerId: reviewer.id, + criterionId: assignment.criterionId, + dueAt: assignment.dueAt, + hoursLate: Math.max(0, Number(hoursLate.toFixed(1))), + isCritical: hoursLate >= policy.staleReviewHours + }; + }) + .filter((assignment) => assignment.hoursLate > 0); + + return { + reviewerId: reviewer.id, + displayName: reviewer.displayName, + expertise: reviewer.expertise || [], + roles: reviewer.roles || [], + canArbitrate: Boolean(reviewer.canArbitrate), + status: reviewer.availability.status, + contactWindowHours: reviewer.contactWindowHours, + weeklyBudget, + committedHours, + openAssignments: assignments.length, + utilization: Number(utilization.toFixed(3)), + isBlackout, + inactiveHours: Number(inactiveHours.toFixed(1)), + isInactive, + isUnavailable, + isOverloaded, + staleAssignments + }; +} + +function reviewerCanCoverCriterion(state, reviewer, criterion, policy) { + return ( + state.status === "active" && + !state.isBlackout && + !state.isInactive && + state.utilization <= policy.maxReviewerUtilization && + state.openAssignments < Number(reviewer.availability.maxConcurrentReviews || 0) && + includes(criterion.requiredExpertise, reviewer.expertise) + ); +} + +function buildCriterionCoverage(challenge, reviewerStatesById, policy) { + return challenge.criteria.map((criterion) => { + const eligibleReviewers = challenge.reviewers + .filter((reviewer) => reviewerCanCoverCriterion(reviewerStatesById.get(reviewer.id), reviewer, criterion, policy)) + .map((reviewer) => reviewer.id); + const assignedReviewers = challenge.reviewers + .filter((reviewer) => openAssignments(reviewer, challenge.challengeId).some((assignment) => assignment.criterionId === criterion.id)) + .map((reviewer) => reviewer.id); + const needed = Number(criterion.minReviewers || policy.minEligibleReviewersPerCriterion); + + return { + criterionId: criterion.id, + label: criterion.label, + requiredExpertise: criterion.requiredExpertise, + minReviewers: needed, + eligibleReviewers, + assignedReviewers, + hasEnoughCoverage: eligibleReviewers.length >= needed + }; + }); +} + +function buildAssignmentQueue(challenge, reviewerStatesById, now, policy) { + const queue = []; + for (const reviewer of challenge.reviewers) { + const state = reviewerStatesById.get(reviewer.id); + for (const assignment of openAssignments(reviewer, challenge.challengeId)) { + const hoursUntilDue = hoursBetween(now, assignment.dueAt); + const dueBucket = + hoursUntilDue < 0 + ? "past_due" + : hoursUntilDue <= policy.dueSoonHours + ? "due_soon" + : "on_track"; + queue.push({ + assignmentId: assignment.id, + reviewerId: reviewer.id, + criterionId: assignment.criterionId, + status: assignment.status, + dueAt: assignment.dueAt, + estimatedHours: Number(assignment.estimatedHours || 0), + dueBucket, + hoursUntilDue: Number(hoursUntilDue.toFixed(1)), + reviewerUnavailable: state.isUnavailable, + reviewerOverloaded: state.isOverloaded + }); + } + } + return queue.sort((left, right) => { + const due = asDate(left.dueAt, "left dueAt") - asDate(right.dueAt, "right dueAt"); + return due || left.assignmentId.localeCompare(right.assignmentId); + }); +} + +function addBlocker(blockers, code, message, evidence) { + blockers.push({ code, message, evidence }); +} + +function addWarning(warnings, code, message, evidence) { + warnings.push({ code, message, evidence }); +} + +function buildEscalationPlan(blockers, warnings, challenge) { + const actions = []; + const addAction = (priority, owner, action, evidence) => { + actions.push({ priority, owner, action, evidence }); + }; + + for (const blocker of blockers) { + if (blocker.code === "assigned_reviewer_unavailable") { + addAction( + "critical", + challenge.policies.escalationLead, + "Reassign blocked reviews to eligible backups before sponsor scoring opens.", + blocker.evidence + ); + } + if (blocker.code === "critical_stale_review") { + addAction( + "critical", + challenge.policies.escalationLead, + "Hold award release and request same-day replacement review or arbitration signoff.", + blocker.evidence + ); + } + if (blocker.code === "criterion_capacity_gap") { + addAction( + "high", + challenge.policies.escalationLead, + "Recruit additional eligible reviewers for uncovered rubric criteria.", + blocker.evidence + ); + } + if (blocker.code === "arbitration_backup_gap") { + addAction( + "high", + challenge.policies.escalationLead, + "Name a conflict-free backup arbitrator before any contested decision is released.", + blocker.evidence + ); + } + } + + for (const warning of warnings) { + if (warning.code === "reviewer_near_capacity") { + addAction( + "medium", + challenge.policies.escalationLead, + "Keep a standby reviewer warm for near-capacity assignments.", + warning.evidence + ); + } + if (warning.code === "assignment_due_soon") { + addAction( + "medium", + challenge.policies.escalationLead, + "Send due-soon reminders with a replacement deadline.", + warning.evidence + ); + } + } + + return actions; +} + +function evaluateChallengeReviewerWorkload(challenge) { + if (!challenge || typeof challenge !== "object") { + throw new Error("Challenge packet is required"); + } + + const policy = { + maxReviewerUtilization: 0.85, + nearCapacityUtilization: 0.75, + minEligibleReviewersPerCriterion: 2, + staleReviewHours: 24, + dueSoonHours: 12, + inactiveReviewerHours: 72, + ...challenge.policies + }; + const now = asDate(policy.now, "policies.now"); + const challengeId = challenge.challengeId; + + const reviewerStates = challenge.reviewers.map((reviewer) => getReviewerState(reviewer, challengeId, now, policy)); + const reviewerStatesById = new Map(reviewerStates.map((state) => [state.reviewerId, state])); + const coverage = buildCriterionCoverage(challenge, reviewerStatesById, policy); + const assignmentQueue = buildAssignmentQueue(challenge, reviewerStatesById, now, policy); + const blockers = []; + const warnings = []; + + for (const state of reviewerStates) { + const assignedOpen = state.openAssignments > 0; + if (assignedOpen && state.isUnavailable) { + addBlocker(blockers, "assigned_reviewer_unavailable", `${state.displayName} cannot complete an assigned challenge review.`, { + reviewerId: state.reviewerId, + status: state.status, + isBlackout: state.isBlackout, + inactiveHours: state.inactiveHours, + openAssignments: state.openAssignments + }); + } + if (assignedOpen && state.isOverloaded) { + addBlocker(blockers, "assigned_reviewer_overloaded", `${state.displayName} is above reviewer capacity policy.`, { + reviewerId: state.reviewerId, + utilization: state.utilization, + openAssignments: state.openAssignments, + weeklyBudget: state.weeklyBudget, + committedHours: state.committedHours + }); + } else if (assignedOpen && state.utilization >= policy.nearCapacityUtilization) { + addWarning(warnings, "reviewer_near_capacity", `${state.displayName} is near reviewer capacity.`, { + reviewerId: state.reviewerId, + utilization: state.utilization + }); + } + + for (const stale of state.staleAssignments) { + const code = stale.isCritical ? "critical_stale_review" : "assignment_past_due"; + const add = stale.isCritical ? addBlocker : addWarning; + add( + stale.isCritical ? blockers : warnings, + code, + `${state.displayName} has a ${stale.hoursLate}-hour stale challenge review.`, + stale + ); + } + } + + for (const criterion of coverage) { + if (!criterion.hasEnoughCoverage) { + addBlocker( + blockers, + "criterion_capacity_gap", + `${criterion.label} has ${criterion.eligibleReviewers.length} eligible reviewers, below the required ${criterion.minReviewers}.`, + { + criterionId: criterion.criterionId, + eligibleReviewers: criterion.eligibleReviewers, + minReviewers: criterion.minReviewers + } + ); + } + } + + for (const assignment of assignmentQueue) { + if (assignment.dueBucket === "due_soon" && !assignment.reviewerUnavailable && !assignment.reviewerOverloaded) { + addWarning(warnings, "assignment_due_soon", `${assignment.assignmentId} is due within ${policy.dueSoonHours} hours.`, { + assignmentId: assignment.assignmentId, + reviewerId: assignment.reviewerId, + criterionId: assignment.criterionId, + hoursUntilDue: assignment.hoursUntilDue + }); + } + } + + const activeArbitrators = challenge.reviewers + .filter((reviewer) => { + const state = reviewerStatesById.get(reviewer.id); + return reviewer.canArbitrate && !state.isUnavailable && !state.isOverloaded; + }) + .map((reviewer) => reviewer.id); + if (policy.arbitrationBackupRequired && activeArbitrators.length < 2) { + addBlocker(blockers, "arbitration_backup_gap", "Challenge lacks two active, under-capacity arbitration reviewers.", { + activeArbitrators, + requiredArbitrators: 2 + }); + } + + const summary = { + challengeId, + title: challenge.title, + status: + blockers.length > 0 + ? "hold_review_window" + : warnings.length > 0 + ? "conditional_review_ready" + : "ready_for_review", + evaluatedAt: now.toISOString(), + blockers: blockers.length, + warnings: warnings.length, + reviewers: reviewerStates.length, + openAssignments: assignmentQueue.length, + criteriaWithCapacityGaps: coverage.filter((criterion) => !criterion.hasEnoughCoverage).length, + activeArbitrators: activeArbitrators.length + }; + + const result = { + summary, + policy, + reviewerStates, + criterionCoverage: coverage, + assignmentQueue, + blockers, + warnings, + escalationPlan: buildEscalationPlan(blockers, warnings, challenge) + }; + return { + ...result, + auditDigest: digest(result) + }; +} + +function renderMarkdown(result) { + const lines = []; + lines.push(`# Challenge Reviewer Workload SLA Report`); + lines.push(""); + lines.push(`Challenge: ${result.summary.title} (${result.summary.challengeId})`); + lines.push(`Status: ${result.summary.status}`); + lines.push(`Audit digest: ${result.auditDigest}`); + lines.push(""); + lines.push("## Decision Summary"); + lines.push(""); + lines.push("| Metric | Value |"); + lines.push("| --- | ---: |"); + lines.push(`| Blockers | ${result.summary.blockers} |`); + lines.push(`| Warnings | ${result.summary.warnings} |`); + lines.push(`| Open review assignments | ${result.summary.openAssignments} |`); + lines.push(`| Criteria with capacity gaps | ${result.summary.criteriaWithCapacityGaps} |`); + lines.push(`| Active arbitrators | ${result.summary.activeArbitrators} |`); + lines.push(""); + lines.push("## Reviewer Load"); + lines.push(""); + lines.push("| Reviewer | Open | Utilization | State |"); + lines.push("| --- | ---: | ---: | --- |"); + for (const reviewer of result.reviewerStates) { + const state = reviewer.isUnavailable + ? "unavailable" + : reviewer.isOverloaded + ? "overloaded" + : reviewer.utilization >= result.policy.nearCapacityUtilization + ? "near capacity" + : "available"; + lines.push(`| ${reviewer.displayName} | ${reviewer.openAssignments} | ${Math.round(reviewer.utilization * 100)}% | ${state} |`); + } + lines.push(""); + lines.push("## Rubric Coverage"); + lines.push(""); + lines.push("| Criterion | Eligible Reviewers | Required | Decision |"); + lines.push("| --- | ---: | ---: | --- |"); + for (const criterion of result.criterionCoverage) { + lines.push( + `| ${criterion.label} | ${criterion.eligibleReviewers.length} | ${criterion.minReviewers} | ${ + criterion.hasEnoughCoverage ? "covered" : "gap" + } |` + ); + } + lines.push(""); + lines.push("## Blockers"); + lines.push(""); + if (result.blockers.length === 0) { + lines.push("No blockers."); + } else { + for (const blocker of result.blockers) { + lines.push(`- ${blocker.code}: ${blocker.message}`); + } + } + lines.push(""); + lines.push("## Escalation Plan"); + lines.push(""); + if (result.escalationPlan.length === 0) { + lines.push("No escalation actions required."); + } else { + for (const action of result.escalationPlan) { + lines.push(`- ${action.priority}: ${action.action} Owner: ${action.owner}.`); + } + } + lines.push(""); + lines.push("Synthetic data only. No private reviewer records, payment rails, identity systems, or external services are used."); + lines.push(""); + return lines.join("\n"); +} + +function renderSvg(result) { + const blockerWidth = Math.min(440, result.summary.blockers * 44); + const warningWidth = Math.min(440, result.summary.warnings * 44); + const readyWidth = result.summary.status === "ready_for_review" ? 440 : result.summary.status === "conditional_review_ready" ? 260 : 120; + const rows = result.reviewerStates + .slice(0, 5) + .map((reviewer, index) => { + const y = 205 + index * 30; + const load = Math.min(260, Math.round(reviewer.utilization * 260)); + const fill = reviewer.isUnavailable || reviewer.isOverloaded ? "#d94f45" : reviewer.utilization >= 0.75 ? "#c9962f" : "#2f8f68"; + return [ + `${escapeXml(reviewer.displayName)}`, + ``, + ``, + `${Math.round(reviewer.utilization * 100)}%` + ].join("\n "); + }) + .join("\n "); + return ` + + + Challenge Reviewer Workload SLA Guard + ${escapeXml(result.summary.challengeId)} - ${escapeXml(result.summary.status)} + + Blockers + + + ${result.summary.blockers} + Warnings + + + ${result.summary.warnings} + ${rows} + Review gate + + + ${escapeXml(result.summary.status)} + Audit digest: ${result.auditDigest.slice(0, 24)}... + + +`; +} + +function escapeXml(value) { + return String(value) + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """); +} + +module.exports = { + evaluateChallengeReviewerWorkload, + renderMarkdown, + renderSvg, + stableStringify, + digest +}; diff --git a/challenge-reviewer-workload-sla-guard/make-demo-video.js b/challenge-reviewer-workload-sla-guard/make-demo-video.js new file mode 100644 index 00000000..d035f65a --- /dev/null +++ b/challenge-reviewer-workload-sla-guard/make-demo-video.js @@ -0,0 +1,310 @@ +const fs = require("node:fs"); +const path = require("node:path"); +const { evaluateChallengeReviewerWorkload } = require("./index"); +const { riskyChallenge } = require("./sample-data"); + +const WIDTH = 480; +const HEIGHT = 270; +const FPS = 2; +const SLIDE_SECONDS = 2; +const BG = [246, 248, 244]; +const INK = [25, 42, 47]; +const MUTED = [76, 92, 97]; +const RED = [217, 79, 69]; +const AMBER = [201, 150, 47]; +const GREEN = [47, 143, 104]; +const LINE = [184, 197, 194]; +const WHITE = [255, 255, 255]; + +const FONT = { + " ": ["00000", "00000", "00000", "00000", "00000", "00000", "00000"], + "-": ["00000", "00000", "00000", "11110", "00000", "00000", "00000"], + ".": ["00000", "00000", "00000", "00000", "00000", "01100", "01100"], + ":": ["00000", "01100", "01100", "00000", "01100", "01100", "00000"], + "/": ["00001", "00010", "00100", "01000", "10000", "00000", "00000"], + "%": ["11001", "11010", "00100", "01000", "10110", "00110", "00000"], + "0": ["01110", "10001", "10011", "10101", "11001", "10001", "01110"], + "1": ["00100", "01100", "00100", "00100", "00100", "00100", "01110"], + "2": ["01110", "10001", "00001", "00010", "00100", "01000", "11111"], + "3": ["11110", "00001", "00001", "01110", "00001", "00001", "11110"], + "4": ["00010", "00110", "01010", "10010", "11111", "00010", "00010"], + "5": ["11111", "10000", "11110", "00001", "00001", "10001", "01110"], + "6": ["00110", "01000", "10000", "11110", "10001", "10001", "01110"], + "7": ["11111", "00001", "00010", "00100", "01000", "01000", "01000"], + "8": ["01110", "10001", "10001", "01110", "10001", "10001", "01110"], + "9": ["01110", "10001", "10001", "01111", "00001", "00010", "11100"], + A: ["01110", "10001", "10001", "11111", "10001", "10001", "10001"], + B: ["11110", "10001", "10001", "11110", "10001", "10001", "11110"], + C: ["01111", "10000", "10000", "10000", "10000", "10000", "01111"], + D: ["11110", "10001", "10001", "10001", "10001", "10001", "11110"], + E: ["11111", "10000", "10000", "11110", "10000", "10000", "11111"], + F: ["11111", "10000", "10000", "11110", "10000", "10000", "10000"], + G: ["01111", "10000", "10000", "10011", "10001", "10001", "01110"], + H: ["10001", "10001", "10001", "11111", "10001", "10001", "10001"], + I: ["01110", "00100", "00100", "00100", "00100", "00100", "01110"], + J: ["00111", "00010", "00010", "00010", "00010", "10010", "01100"], + K: ["10001", "10010", "10100", "11000", "10100", "10010", "10001"], + L: ["10000", "10000", "10000", "10000", "10000", "10000", "11111"], + M: ["10001", "11011", "10101", "10101", "10001", "10001", "10001"], + N: ["10001", "11001", "10101", "10011", "10001", "10001", "10001"], + O: ["01110", "10001", "10001", "10001", "10001", "10001", "01110"], + P: ["11110", "10001", "10001", "11110", "10000", "10000", "10000"], + Q: ["01110", "10001", "10001", "10001", "10101", "10010", "01101"], + R: ["11110", "10001", "10001", "11110", "10100", "10010", "10001"], + S: ["01111", "10000", "10000", "01110", "00001", "00001", "11110"], + T: ["11111", "00100", "00100", "00100", "00100", "00100", "00100"], + U: ["10001", "10001", "10001", "10001", "10001", "10001", "01110"], + V: ["10001", "10001", "10001", "10001", "10001", "01010", "00100"], + W: ["10001", "10001", "10001", "10101", "10101", "10101", "01010"], + X: ["10001", "10001", "01010", "00100", "01010", "10001", "10001"], + Y: ["10001", "10001", "01010", "00100", "00100", "00100", "00100"], + Z: ["11111", "00001", "00010", "00100", "01000", "10000", "11111"] +}; + +function setPixel(frame, x, y, color) { + if (x < 0 || y < 0 || x >= WIDTH || y >= HEIGHT) { + return; + } + const offset = (y * WIDTH + x) * 3; + frame[offset] = color[0]; + frame[offset + 1] = color[1]; + frame[offset + 2] = color[2]; +} + +function rect(frame, x, y, width, height, color) { + for (let row = y; row < y + height; row += 1) { + for (let col = x; col < x + width; col += 1) { + setPixel(frame, col, row, color); + } + } +} + +function text(frame, value, x, y, scale, color) { + const chars = String(value).toUpperCase(); + let cursor = x; + for (const char of chars) { + const glyph = FONT[char] || FONT[" "]; + for (let gy = 0; gy < glyph.length; gy += 1) { + for (let gx = 0; gx < glyph[gy].length; gx += 1) { + if (glyph[gy][gx] === "1") { + rect(frame, cursor + gx * scale, y + gy * scale, scale, scale, color); + } + } + } + cursor += 6 * scale; + } +} + +function baseFrame() { + const frame = Buffer.alloc(WIDTH * HEIGHT * 3); + for (let i = 0; i < frame.length; i += 3) { + frame[i] = BG[0]; + frame[i + 1] = BG[1]; + frame[i + 2] = BG[2]; + } + rect(frame, 14, 14, WIDTH - 28, HEIGHT - 28, WHITE); + rect(frame, 14, 14, WIDTH - 28, 2, LINE); + rect(frame, 14, HEIGHT - 16, WIDTH - 28, 2, LINE); + rect(frame, 14, 14, 2, HEIGHT - 28, LINE); + rect(frame, WIDTH - 16, 14, 2, HEIGHT - 28, LINE); + return frame; +} + +function bar(frame, x, y, width, label, value, color) { + text(frame, label, x, y, 2, MUTED); + rect(frame, x, y + 20, 270, 12, [217, 226, 228]); + rect(frame, x, y + 20, Math.max(5, Math.round(270 * value)), 12, color); + text(frame, `${Math.round(value * 100)}%`, x + 285, y + 15, 2, INK); +} + +function makeSlides(result) { + const loadRows = result.reviewerStates.slice(0, 4); + const slides = []; + + let frame = baseFrame(); + text(frame, "REVIEWER SLA GUARD", 36, 45, 3, INK); + text(frame, "SCIENTIFIC BOUNTY SYSTEM", 38, 78, 2, MUTED); + text(frame, result.summary.status, 38, 126, 3, RED); + text(frame, `${result.summary.blockers} BLOCKERS`, 38, 168, 2, RED); + text(frame, `${result.summary.warnings} WARNINGS`, 38, 194, 2, AMBER); + slides.push(frame); + + frame = baseFrame(); + text(frame, "REVIEWER LOAD", 36, 44, 3, INK); + loadRows.forEach((reviewer, index) => { + const color = reviewer.isUnavailable || reviewer.isOverloaded ? RED : reviewer.utilization >= 0.75 ? AMBER : GREEN; + bar(frame, 40, 86 + index * 40, 270, reviewer.displayName, Math.min(1, reviewer.utilization), color); + }); + slides.push(frame); + + frame = baseFrame(); + text(frame, "RUBRIC COVERAGE", 36, 44, 3, INK); + result.criterionCoverage.forEach((criterion, index) => { + const ok = criterion.hasEnoughCoverage; + const y = 92 + index * 44; + text(frame, criterion.label, 40, y, 2, INK); + text(frame, `${criterion.eligibleReviewers.length}/${criterion.minReviewers}`, 350, y, 2, ok ? GREEN : RED); + }); + slides.push(frame); + + frame = baseFrame(); + text(frame, "STALE REVIEWS", 36, 44, 3, INK); + result.blockers + .filter((blocker) => blocker.code === "critical_stale_review") + .slice(0, 3) + .forEach((blocker, index) => { + text(frame, blocker.evidence.assignmentId, 42, 92 + index * 45, 2, INK); + text(frame, `${blocker.evidence.hoursLate} H LATE`, 42, 116 + index * 45, 2, RED); + }); + text(frame, "AWARD RELEASE HELD", 42, 218, 2, RED); + slides.push(frame); + + frame = baseFrame(); + text(frame, "ESCALATION", 36, 44, 3, INK); + result.escalationPlan.slice(0, 4).forEach((action, index) => { + text(frame, action.priority, 42, 90 + index * 36, 2, action.priority === "critical" ? RED : AMBER); + text(frame, action.owner, 160, 90 + index * 36, 2, INK); + }); + text(frame, "REASSIGN BEFORE SCORING", 42, 226, 2, MUTED); + slides.push(frame); + + frame = baseFrame(); + text(frame, "REVIEW ARTIFACTS", 36, 44, 3, INK); + text(frame, "JSON PACKET", 42, 96, 2, GREEN); + text(frame, "MARKDOWN REPORT", 42, 128, 2, GREEN); + text(frame, "SVG SUMMARY", 42, 160, 2, GREEN); + text(frame, "DEMO VIDEO", 42, 192, 2, GREEN); + text(frame, result.auditDigest.slice(0, 20), 42, 230, 2, MUTED); + slides.push(frame); + + const frames = []; + for (const slide of slides) { + for (let i = 0; i < FPS * SLIDE_SECONDS; i += 1) { + frames.push(slide); + } + } + return frames; +} + +function writeUInt32(value) { + const buffer = Buffer.alloc(4); + buffer.writeUInt32LE(value >>> 0, 0); + return buffer; +} + +function writeInt32(value) { + const buffer = Buffer.alloc(4); + buffer.writeInt32LE(value, 0); + return buffer; +} + +function writeUInt16(value) { + const buffer = Buffer.alloc(2); + buffer.writeUInt16LE(value, 0); + return buffer; +} + +function chunk(id, payload) { + const pad = payload.length % 2 === 1 ? Buffer.from([0]) : Buffer.alloc(0); + return Buffer.concat([Buffer.from(id, "ascii"), writeUInt32(payload.length), payload, pad]); +} + +function list(type, payload) { + return chunk("LIST", Buffer.concat([Buffer.from(type, "ascii"), payload])); +} + +function rgbToBgrBottomUp(frame) { + const stride = Math.ceil((WIDTH * 3) / 4) * 4; + const out = Buffer.alloc(stride * HEIGHT); + for (let y = 0; y < HEIGHT; y += 1) { + const sourceY = HEIGHT - 1 - y; + for (let x = 0; x < WIDTH; x += 1) { + const source = (sourceY * WIDTH + x) * 3; + const target = y * stride + x * 3; + out[target] = frame[source + 2]; + out[target + 1] = frame[source + 1]; + out[target + 2] = frame[source]; + } + } + return out; +} + +function avi(frames) { + const framePayloads = frames.map(rgbToBgrBottomUp); + const frameSize = framePayloads[0].length; + const avih = Buffer.concat([ + writeUInt32(Math.round(1000000 / FPS)), + writeUInt32(frameSize * FPS), + writeUInt32(0), + writeUInt32(0x10), + writeUInt32(frames.length), + writeUInt32(0), + writeUInt32(1), + writeUInt32(frameSize), + writeUInt32(WIDTH), + writeUInt32(HEIGHT), + writeUInt32(0), + writeUInt32(0), + writeUInt32(0), + writeUInt32(0) + ]); + const strh = Buffer.concat([ + Buffer.from("vids", "ascii"), + Buffer.from("DIB ", "ascii"), + writeUInt32(0), + writeUInt16(0), + writeUInt16(0), + writeUInt32(0), + writeUInt32(1), + writeUInt32(FPS), + writeUInt32(0), + writeUInt32(frames.length), + writeUInt32(frameSize), + writeUInt32(0xffffffff), + writeUInt32(0), + writeInt32(0), + writeInt32(0), + writeInt32(WIDTH), + writeInt32(HEIGHT) + ]); + const strf = Buffer.concat([ + writeUInt32(40), + writeInt32(WIDTH), + writeInt32(HEIGHT), + writeUInt16(1), + writeUInt16(24), + writeUInt32(0), + writeUInt32(frameSize), + writeInt32(2835), + writeInt32(2835), + writeUInt32(0), + writeUInt32(0) + ]); + const hdrl = list("hdrl", Buffer.concat([chunk("avih", avih), list("strl", Buffer.concat([chunk("strh", strh), chunk("strf", strf)]))])); + + let offset = 4; + const idxEntries = []; + const frameChunks = []; + for (const payload of framePayloads) { + const frameChunk = chunk("00db", payload); + frameChunks.push(frameChunk); + idxEntries.push(Buffer.concat([Buffer.from("00db", "ascii"), writeUInt32(0x10), writeUInt32(offset), writeUInt32(payload.length)])); + offset += frameChunk.length; + } + const movi = list("movi", Buffer.concat(frameChunks)); + const idx1 = chunk("idx1", Buffer.concat(idxEntries)); + const body = Buffer.concat([Buffer.from("AVI ", "ascii"), hdrl, movi, idx1]); + return Buffer.concat([Buffer.from("RIFF", "ascii"), writeUInt32(body.length), body]); +} + +function main() { + const reportsDir = path.join(__dirname, "reports"); + fs.mkdirSync(reportsDir, { recursive: true }); + const result = evaluateChallengeReviewerWorkload(riskyChallenge); + const video = avi(makeSlides(result)); + const target = path.join(reportsDir, "demo.avi"); + fs.writeFileSync(target, video); + console.log(`generated ${path.relative(process.cwd(), target)} (${video.length} bytes)`); +} + +main(); diff --git a/challenge-reviewer-workload-sla-guard/package.json b/challenge-reviewer-workload-sla-guard/package.json new file mode 100644 index 00000000..1054bed5 --- /dev/null +++ b/challenge-reviewer-workload-sla-guard/package.json @@ -0,0 +1,13 @@ +{ + "name": "challenge-reviewer-workload-sla-guard", + "version": "1.0.0", + "private": true, + "description": "Scientific bounty reviewer workload and SLA guard", + "scripts": { + "check": "node --check index.js && node --check sample-data.js && node --check test.js && node --check demo.js && node --check make-demo-video.js", + "test": "node test.js", + "demo": "node demo.js", + "demo:video": "node make-demo-video.js" + }, + "license": "MIT" +} diff --git a/challenge-reviewer-workload-sla-guard/reports/demo.avi b/challenge-reviewer-workload-sla-guard/reports/demo.avi new file mode 100644 index 0000000000000000000000000000000000000000..1d1ee4bd4e7363d35061fc8653d0831e33d9e139 GIT binary patch literal 9332016 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

0rqnRP+wgY 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%0D*l8kk9+x9VdqX1ny0Me7^Vn@^lb@ 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ĐMQ);w)#NNHv- z+Q3%0$CYNDEZXFuIh8K=G^J9s^E7i)yr_7*3k3pw0$b#B=Mnt9aHZ4UmMUGZ^t6Mu z;@Iw$uC_%hDqR&%8`vq1&8c*`#}z-Adt9k>xd#OTqXfw3Aa>R}c-9=h$77Q#U1#m( zb1KR!PgvQ@J+An3RXpB>0)ajO@;Ufa-mh1B{ML@`Ugy;kA zwPU+iy3X3m=Twwep0Ki)dtCA7s(8E$1p<8nM_^ln=z0!5oUOuOyyz+#V zz1-u9KUc-$T__Of6WAi3+mGK1e>(Scl-AxnP4S}RX-i&o=D69F*4~zy;)Q#fQYqTN zA#>|GR?(Skd;HY;SW~(HYo0UU-*#T=6ax2+R|>az4*L9TOk`0SN3%fPCKf z?l?IFAaHL24$mf0Uj*~+G0{13BKHvL( zc{&I{U|#~{^S*b-$squNdlMj^?|r{K9Rwh-F9Gs--@D`F5P-nF36RhCzF(dW0ub1j z0QtP{-EndVK;Yg4$me_CFHZ*n2<%IMeBSr&I5`9$aBl+S^S$qvr-J|l_9Z|*?|XNg z90CxyHv#hb-uKJXK>z~#5+I-Vy*o}00SMfi0Qr3H`{n5%0D*l8kk9+x9VdqX1ny0M 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�Q`(%ScroN@W-ls}TURr8l(ytWYj1^nTxsUXqD>x}Q|WR~Qz}I}Pct{gi;Bm) zP$1AJKt2bb%KLS?rw#PNZ>@RS(vZ^3UbKO&aE~j^JXy5KLvt!!?rBP;Xy<9>rg%~D zcozx;`UJ@5;8S_OPWQBdUihswPg@#Nn%RpsuodocrI{y-HhE}HrOQ1{sTA!z&D<0( zDjx4bfk29n_{O4lnr?O?4qwtJy;kAwPU+iy3X3m=Twwep0Ki)dtCA7s(8E$1p<8nM_^ln=z0!5oUOuOy zyz+#Vz1-u9KUc-$T__Of6Cj_1Pv!l3rN?jW*zT3Cv-a{i73GyDtnB3;SNypu9`8bd zK%W5l9DFM8*DF1KYsYr4be*-AS{JYi)o_qgKERq=Qi3IzHDw#eu9wyy$q^k{6vhZg!=$x22|d;hv^ciZ*b_+`5hxZLi7pHm4Pxfz9KEce%$E??QpV zJOT1K7`8XAgS6vmOJ4Xu_jHuj-aJk5!aYr?6m8&;xpf^Y+Fq0GZB8pX1DnSS?{beT z-h~2zc>?5fFl=vJ2WiLCmb~zR?&&D4y?L7Ag?pM(DcZmxbL%=*w7n+V+niQ(1~!iu z-sK)wybA>a^8~J(&+|{m1PDL?0{apmpZC2xP7VPG+?xRTeDC|^=^y}seF>1y``#TV zhX4fbO@Ms9_x4$mf0Uj*~+G z0{13BKHvL(c{&I{U|#~{^S*b-$squNdlMj^?|r{K9Rwh-F9Gs--@D`F5P-nF36RhC zzF(dW0ub1j0QtP{-EndVK;Yg4R_Alf=NkeLfB*!J5%}-_{h!l6$4){Q1Rwwb2q=Nm z!{^`vz@c0mb00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1R!uaf&cukf9C@M2tWV=lLSr==Z}GtN1`195P$## zJ_xMK=l|nB2tWV=5I962{&^yw55c1e0uX?}LIULTLb!~E00bZ~L4bUofJZ9?AOL}d z1jy%wa2X8&2tZ(h0Qo!tk5&jk00IjMkk1R@G8zI9fWQO+@_7Ottq_0!1Qrq?pBKVq zGz1_3fe8ZS^8`FvApijgEF?faFNDiz2tWV=69mZT33#+Z00IzLNPv7^2$#_ifB*z0 z2$0Vc@Mwhq1R$`G0QtNSE~6m;0SHVGAfG4T(Fy?wKwu#O@_8X#MneDs5SSo9K2N}- z6#@`|z(NA#^Fp|ch5!U0FhPKPo`6Ry1Rwx`g#^gwg>V@S0SG`~f&lqE0gqM)KmY;@ z36ReV;W8Qm5P-l00rGhQ9<30700b5iAfFe)Wi$jJ0D%bt@b5P$##CJ2zv6Yyw-00bbgkO29-5H6!3009V0 z5Fno?;L!>J2tZ&V0rGhvTt-6x0uY!WKt4~vqZI-WfWSfm*4-5P$##77`$z7s6#U1Rwx`2?FHv1Uyi21VkN5gsI@4Eu zg6^n(os)Tdnog*!x+mL9&*QtO(s$~r*4ar$J?htbX1@38^J*PCy5IGRN4tENY&CO+ zfA#k-zx{mpjPCf*{_yAMwB7yWv)|zAcPHDi|7Pi`);dk~sQat#3IDMrAb)^Q`dbOs!|mpuJk_e67`^b>_+RN^j=TnXjoMQ9V~x(YkV~QGaFTULNw< z?@NF4TC207ulDG9w65&C!ml&6&d#&KqcgRhIfM3Ut@E{3kJgzd(<{B1M`ymKjx6;= zRYmK{sYd;knR|Km%IEks>bKHXUF&roog8)S>$N)1^5{&hb-wFLCUZttwwmd>m(~^k zSsvY2>zMD~6_1`xYwguqcTrty^>`gl-%Fk9QQf`BUsJ}9E7Z3UD zzi0ooXCA+0b!x3n)wLe=s9)>;%vjZL?bW(JN1gpTo1W-^xP0_55Gw5pNRHOdN%w0Tt<+D@O->}y13?=iZuC>llUF)y% z=)PK4&bGp@GqujnQ}^fut#v}b&bn0BTBoV5wR*HxkJgzd)3e^pulnn2Ptj0ZkF#ZZ zcJfhwHfJxLe2)9lcR_2tP1UvjDv$1~b>(a;{5n(X>^yakPS9E>^y{okb**)p>RPKu zYxQWIc``lg&HSprzV`eK#q~H_re`M~^=EVT(#hwzFMSuZ*4tEF>#y?YzFJq#w!*J7 zwa(5{@npT3t~0gH{Hkl6^=6*TAG&wB;?B&|-%D3tS!el~>2Wq+btQAY^69>6FY-Ca z>${+}-izv5f0ak~)w*)F6@Hzmb#|VLC+p30ovC%^S6%C@H}hov(7nqQcV?dcUb_0q z`dF@dmn-oUnf}UWeEnW~<#YUE^;?Ol?sYg_52Z3kJ=rw%)c4XZoveC&nmR`(=1|0$rfWX%hAfLaMKf6N!0uaaukk1(zbO=BI0$)pjeEwSg z><$44Kp-PPK4)amApijgd@TX;`D^*JI|LvAfs6q8oRL9?00bcLwFJoLujS9~5P$## zG6LjtMg|=M5P-nf5+I+ymOr~g00I!m2$0Vi8FUCh00Li2fPDU1{_G9`2tXhsKt5+= z&>;W;2z)I8^7(7|vpWPJ0D+7E`J9nKhX4d1@U;ZU=db0@?ht?g1Tq5Tb4CUo0uX?} z*AgI~zm`9{LjVF0$Ow?n85wj4KmY&W$mg%+&+ZU_00c4uyX5na@83Q?{uHWftxnfN@$cwz zf2L;>GQaCSL6z`VzO~D1-Pcz`QIGGq!lOItsdRVUx3BAjtV<{K>uf?r_mili`>O7f zeKqsw%&6Vj*L79*%_e7_Uw-@f@X^UW&6S7thddKrMkM?REXR9cgb6)q| z`!i!T`_^e%_h+h8>ueX*Gk-;|cq)5UJe9q|6Ny@xsUEF;g08+#O+NcwSAK`uHRI2E zb$+F;%$f0Muhwz4ijq0!b>F=|Ggh;2ou+kvraHCGc2Pa^SM-XfvRB1Z*(*Gru34|{ ztF=$i)%U5%XTR(0x3ogfX8Ni6N@dQBM|-ncPpF>N`siMI9<3{LW<0u=)|Hu=f2LPw zYCSVEdOck;UHA3c=eXzI3i<5!JM;V0X_YydN9R=P%A6UG_GY!7Q$4Ho(Y^FMT36=G zcyuqVD>F0yOs~$=dS+(ydah==?(4PBanHS#9rIa#KVFC8-*J!X&u-RxRq?KDrt3aO z6|Hp_)wOnyDqd@^*6LK<>u|ariqCPyojOzfnXbFnJwDl$%Gq>xue0;`UaC~~&HR1_ zRkSPWY%g_Yo{AnG&DBt}S66l4tRD4eb9U6pXTLT5MR}e1E4oe#zbabmG}X0sk1Aek zuh!~R-Rp3=9*WO##hp4+{h6-2*F8SjmCD(4cdxVa_+F}1_Rai$2352x>TEA{W}b>3 z9!=Cxv{zSk->e?>XLEMc@0ZVh3;Ns8+MS_fo*7+xvpPFZMc0{`f5xM|TI*h_SL&=c z(?@6OoJy_p)vvnNqaO8ZU74BrXL@y})-yAsHxgCnXdQcvrtYX;pJ?BjeD=HZ-%@yH zbnVS*KS^EDnOWD2M|-u_y;QH%S#PF~&eS=TTIZ`@b*)D|>esq5GxN{%>P)R?W=1dh ztUPDxz4BRqIZ?afG%6nLQvbZ}(^Sz~_ZqD$b7nl+tF@j}^{7<|rz;iRyHwFy&of$Q zb5z$_=c}%@da^q6SM-WU_s#qjPu8n?B(wj&u6lGYce)b(OxJ1mtI21-)9kl&O!qET zwDyzKmCBqMkM?SVdYD>1?K%1Lzh`W)ZO=ctnTT|aha-AkWBr>RGEt<^I#CuZt2-NjeydwG^- z(_*IkL(y+N=lj&;v;HRa7wEqM|BY#Hw%VWL6IAiuO!3{_sgu1{|LCgk?n=yey|R~{ ztv<*1@;Rzxe%FtkS@+VX&}r&XU2FBs%!!#gO?UCt`d*&5*|eDHeobay)id9_-X)*! zeG5Dt1RwwbCqO2tWV=S0F$>U*Q%w0|X!d0VhB{I};QLKmY<)AV5A};TAXp1RwwbCqO2tWV= zS0F$>U*Q%w0|X!d0VhB{I};QLKmY<)AV5A};TAXp1RwwbCqO2tWV=S0F$>U*Q%w0|X!d z0VhB{I};QLKmY<)AV5A};TAXp1RwwbCqO2tWV=S0J!UKL7as?c-A+7Eb-vu56C#+UvDX z%RD;MyF&5atV{hmtzK95%650%r|C(2RTX^})wR}X{W`kbqq^4WR6T0{R)4+j&(VE# zrt3aOJ=v;zbeE{rqpLIeFTeeK`1mwe^gIvk4}a=8wa#X$XUCd+j$70FjXL|*Tkd;w zrg!PSK1cmpXEW84)xL{Qb0wy^?$dN%UsXkCs;;$8>(|lc9@Vv0r|MDrxBBaKe~#{} zGhO#N>d98!qq{`?|Lm4Qt|ZHGY&Fp$xP>>NHo-CXAZU>q3IhHjxCxC2f;0UF0tg(m z$pfAlH?u0Mj?lQUXJPIhb)w2eW_Y^e|F%wl{bzPdhxf@2ba+qdswXo~)StAUt2d%g zJ>IM1TkJ~aoI;79fMa^3JPuK3}eA#sJm3J~%*XC{44(~%fs?uS%>a_AZwaj#M zHH$tqd(x+_GW09m>9dpJ+^Wwyv#zR6`@Z{`{CD&>@8|yaEeTh(Ojeo7|EXH`>1f`k z(p4YknW_Av8Rjcp&7x1uKJ=-p4E;)X`s`#lx9U@6j^?XAYrophl|Q=W-PZZ_9eDa& z?S9U;%kRn0W_J2_YV)>hhdnD@bzq*E%0HT6zS7k!`qb=0pSsG>uXLx+PKI-onPO9r_a^T+Rx(!`IqGLea9(%)>3C5p0Y#sWG!`eptDZ$lsa$1 z(~jmHvKvqP-7=Y-&t~bz%W*&F%ktYo&6mw8o(|30)Xc9>GfC&DUeDrbr}M~X zvhtbiWSFls@0@y6rXnqGnt`J%_MzlW~g^EtfglEN*~R$Pp6g{YWAV7GL_${Wu~L6S@e%;&SfqAN>_RM zNA=NJ%yZT~{(3);`($Q)&+30gvx=IZ^tsyoJl>8kOI^L}PKLGA)hzl)^G9phpPGHB zt4!s0YMJTiY8L&YnsZr8ztUBn{!x8&7W15SkDt3Y=VoSoPxtfR|M`y}{5Li~-(^Qv zZ^xchhCX#wTV<*|ed?+YeQMTL`e>egI<=Wer_*y?H9B-MoK@+n5B;I(D=>ZpRq-A_hz3lom)4ZQMLBjnfdge==i^%^G&PoE#G%1!&++guk_J8 z`*dnElTN4Sx@vUjWH_tRRUi68)5$yJX=bWB(C_rwxld@0lHV+PTB} zbFmvWJEuRK{L5K+%0BDUexEAI`wz|k{mh%N1FM*4hurq;M$K-O&&*S_`#E28IMrXi z?70j(4887Coen>{t(~eHZ;~ByR`y|4=6SlFmC25C?moO{cHn8}4(rdwZq)3Y{&4ay zXXPpTtWW!WswD3}H1{oU!Vauro*mrJPub6WO|=9hAc1cn;C}vwSN1bXKmt!B;C_DM zt9fS$NZ=a?xSzk_mHmtokiZiOxSyZ+YTj7_68HuJ?&oiKWj~_?B=AH6?&l}Ins=6f z1ipcQ`}rGQ+0Q5e2|SU2`}v8l=A9)Vfo~w-e*T76_A^RA0#791etzPsd1nbo;2Q|I zpTFUi{frWjz!M3$pP%?@-dO??_yz**=WlprKcfUB@I(Uc=O@0Jcb0$zzJY-I`5Ru@ z&nN*2JduF=`H8RQoh2ZFZy?}){)SifGfF@LPbA=ee&VZnX9-B)8wj|czu}erj1rK* z6A8GVpZIFtSppLH1_JKqZ+K-tqXZ=IL;~*TC%&3@mVgAlfq?t@8(!JZC;-fPN!;SW_gO4 znIba_XI3dbm4N$syzJsvFpu&(usE9GMP?qQnB^%loK9AqbFy%TvtE6q#8#vr6%)1l-T#Wf#AKd6eIQ#nB8eGV>_KEKiZ)bh7H4 zlbzGa&Y77`hSTYUXQm_Oh#8(vip-?bshXKto?>RE$jri-RfMP|}jgy&I;MV}e&WM+6%oSW6DT4eGlo%y*IM>CURQFZQUj>z(KW_XIsq%*^c zFC^f89*^GnU1TPm`4w6m&CC>?a3?bxZi;iWI#r8I9;Gus*WzeqQY@;@9nBG0p3V$U zk(qR6Sn-7f+|T3DJHLy}q%*%li=&yDq7&|9X2VT!ZdRvik;$WU=I2@*%}k0#)w!cN zBFod6;VCkc&I~KQkifI{bLZQ8F7s1Woj&r{0z+4-DvZdRu%GwI}=Gm}nMrIS_Z zbgDX;bDcX?IbG*d3Amrf%XWSjndvy4Z%+2fs!k@W&N=61b*eIxPTn~)>10(pS(Q$w zs*^d_xl@(Xbv~7V`+2-<=Xa5rj??+(WS^|+WU}g2#_( znRA^xRXJVfQwcm`KhH01ihP%u$)o9HW;zQo%cod`=g|x=L?_(IEJhqUIyb9Rm6>$% zs+pP2LM;0Hc-3q;ho+N9nVHT)%sz^bC*Xb_PrUd!%%l7=%%g?Ks&r;~9!;l{nc+=w zZdRu%GwI~zGc%oqSoHbvs@ZT3O(%~sGo6K)eH0&0!2LX)c=2CEyx znocJ(!<*vVtWH&C(#gwbW;zS8==0-Mv*8??P99}uItwxTC_bLRBlh#+73SA?X408Q zQ)DKc8J;3D>CEsHcV_0$P0_h?j_6cnCY?^_PF1H*C)1ggnRIeiI_IjgkIrWha6gZC z?EEe=lTLms?#$%$b57^Z*|}4dnRGgxJ5`-NolIv|X41)7>71*|K02R4!2LYlvGcpg zOgj0kxHFT}&pDktXXj2;X42_&?o@U9bTXY;nMo&SrE{(-`{;ZI0r&HG$IkB}GwI~F z;?7J?Kj(DroSi#WnMtS9xl`5Y)5&yZWhR}RmCm`U?4$D;1l-T#9Xr2^%%qdwiaRqo z{hZUeb9U}jWhR|Y=T23pPbbrvm6>#MRyyaZvX9PZ5O6<_ckKKwGLuezEAGtX^m9(< z&e^$Bm6>!pojX;XKAlWwR%X)4S?Qds%04=uLEsVld46eAK!4ka@Zkbng4C*Xd*pScqyAOQ(<2)Lg+l*~v# z0us2NfcyD==1!D=1SHTQ;C}8kU)ok`?*8Oj07Ygf%^%# zpYLbxLe-QP%a$&3UfAc6Y{xS#K5?nDVlKmr{C z?&l6AGZK)11nwu`e!ic%6D1%433Ld!pF5PyNI(J-xSxRg`F`e3lz;>z&>`S{?ocu# z0SQRpegf|2`rfB(P#^q&MIAOQ(%68Q1u z{Hx*Sl`NNl1SBAVUj(k(&;RTHNk9S;kiaPdv0v8f+KVJyf))J6_1U3k`pEuxHDgg;d;6eiK=L_N5S^^S~ zzy<;L^9DRiB_II_Tu8wEd?8$0OF#k=*dXA3-hgMR1SBAV3kkTNFNAAr2}nQ!8wA|X z8}KZZfCMCPAp!UEg>Y>x0SQQ8gMj;a1D>T4kbnd(B;bC&5U#ByAOQ(%5O6*O?&k~P+FAk|uM5|DrdE+pW7z7VdhB_II_Y!GliZ@{xu0uqqGg#_Hs7s9o*1SBAV4Fc}x z4S1GHKmroDkbwL7Lb$e;fCMD4LBRdI0nbtiNI(J?5^z6X2-nsUkbnd>2)Lg&;8`jG z2}s~V0`BJv;o4dP5|F?K0r&F;JWC}Y0SR14!2Nt7Tw6;(0utCD;C|kKXQ>1vAb|@B zJY_%s`Hw&S`j;T+4_*BowajO?btY?b7JKGtcHl(j*{8~6H+JZpW~Q3O`{Wcl>m*O9 ztD79nFi*YHKWq7UsmH|3r{Br2DyLMZRdVF7{`;4|{_VGaM<@PP{@Z^Z?e_G%`#E3m z>fcT^asA8UDK)#%A9{V7nUO!&C%ditC?8@2M+w>np~ z?)k*iC+_F!J6ZXBm!p{~-|?@`@N-dj=3bF!PwMJES7g|edgl(TrDlI>W~i%7<#%eU z413!xdUsd z*`Jyj>MB$Do!TnHp7-dnOLL>rq3+!3Xui|)S(#_;=kaaiU(%*eeO-o~haPiNGx<{) z_M~S2^hu^lj;iXk@;QsTlmDp<=TeXU`L~nd-Kbeh%_;P$nMpm8Ig3eV=w}t@UZ=TB zD?O(3v~!=M`A*NLWZcjBea>%tmC09TlA1~S)JHSSQ?GlDQ~qTw^|}v}YhCqW)lX&E zlbWBGx|8AEs98&0^{+C_vp@ByWip*S<;1Hsw`iru9eCQg)zN&X=TkDz+RsUq-(l)Z z4yVe{r)D4e)UV2LE_LT_SLE4~y1Gw4!w%H!u+~)-eQI{2Pt6Q9Gt^b4@~he^Pyc?M zTXZ<-kGoZVb@QY7s?W20_w#r!{uZeDn)In(mEm0K&fTuavnO?RpMHiNsM%qyt19}` z>_(rO8ER&zt4!rrwN;+}{W|yOaMB-ltNiNbNAp#mXZh~u@m~BbQ1dnEQ@<+1xzwGz zU6E%`>gqn7OjTR?>`7ha=~Gv=Ri?@hKdaKoWR+RZ;_02b+Mks_?v|(NRLMI(-K%D~ zp9gvV7O43y^r>H!;auv@-LA;9Cv|n7PNu4@eDKlMnaKb%e*?~@WyV@CBlz%%DbN8}C zo_2bEM#lZjZ~J&te#5Er#d&(JPgd~`oS3t+HZw;%a5}qXA3Bw0ht6%8=S{MIcFPPM zcBW=#Xr5M6GQ%V_`=_6Mn6K``KG}gzcDvd+w^wrmpX+n=r@O!ZQ}*-yWSl4g2}t0z z1l-TBC{LkbneUOThj7TK-O#fCMB^ z5pX|OWb`E<0SUa8fcyEi{GBcV2}qzK;C`;i=u1EX5_l~E_w#G{J6!@2kU&Mi{algJ zmw*H$@LB@y=hyOgx&$O3fr^0pxgw)40SQRpwFKPHujTJ_2}nQ!6#@5iMMhr&5|F@a z3AmqM%irk|kbnd#0`BLEjJ^aUAc5Bsa6iA6ztbfk0SQzD+|LymeF;cF0Dwfvnf0SQQ; zBH(_m$mmNz0up#F0r&H3`8!<#5|BVe;3@n0&wu>s*T4J}^r@Lle>nMfRAs*Ms}5B@ z{p>(zZbLnU2JgqY9Idmr1 zK2JHf>Re_1^4Gup_K%&jTROj$|Ms7m|7^$ooZqzmcbm0YmCpDs(a#Qa`rkcPrRLl` z9S$=&_lgWB@>ZPAxoe*tsw#F^>#9S?&zsQUT>9BLPpb@j4xP!h&r{B=I#-$B*6FYR zWasRbPIjP^`OkK~Z9iAvTfTCYxx%k{@;)8i>9dnzE%mrt$ElM0eokNa9H-S^cB5YR zWRkj?Lchv){7$AbtCQ)>8kwo`?%-_Pmmp5wIo%Wl-`o=j3#Q|MRuj^D|2W_2>1StFC%wW{S@>g>SN@6qn(eCz7F zbcJ8_%v-IUPM@6&Yb(tgGIOy4|S){PKL9nJ3XuXPAz*<@AMqC zxmPQnb5m!Z%zU=<#Qn_gPwL_1-|>#jS1+5jbh4`InSS=6L(M7lsWU?-HEXGvq@Q{u z(;rUuNhg!+$$aH=dOwq$)9Kue(^FUX$yszdbE|ybfex#Nu4XY=Wjg-IaIX%BwLInA zN*~QveV*vMpYzrDjY?hRJ3hOOJRNFwqfea~I;mMp%_RNQBbokivQIjhWKZTRpVRx9 z?3_;LZk(RFx=+rc)0tc4^A2=aHFPzL$tu(FM}`}9IIQI<=T`b?zUuQt|MT{9z5>4+ z)R`PkmD%xGTj}aP9iKg`{7#0o)SN}XqpRA=KiZRhI-32Nr%!z}!#s7TXO-WnWl!pz zo}+ebRQ91BvyN`vqj`R!=W6$JzFmHoMrOxnZKd-jeTO}(s+|mLsX2>&M_09#f3zq2 zbTs=jPoMf|hI#5v&nmxD%bwIbJx8tknLKy&v-UH;IYXzDG&&hpF~9F;H#*dubyRoy z>||I=&3n=xn$Ae3)A6&44mIy{R9AiIQ?oyPYGx{3_g4k z^s5e|D)Z@Q2RfX-*3~Rlv2*Hma($Z9(-|Go@7#pb`+ag&_Mubd(?54-&f=$FH)iNl zGqclY^kg?q$pt0mPS#dVPR}Ge zr)K`>X--dP^iRJti+Ahy$ywQlPL)sp+?_d#pMu?(p-;`sPM^_}-8dyr`?GT2R^3L= z%yTp6DewH*`YHSQvtPkaCjkjaAPKmilZlQ5Bp`uzAmDy}hga|p5|Drdl7Ra;ndnGB z0up!!0`BK`cm?ku0SQPT3Amq=iH-y$Ac1!v;C_CGSMUxJkbne|fcrU_=tw{U5_ks! z?&o)S1@9mM2}mFbxSx}Wjszqifp;L_etw5n@D37?fCQ3&`#G8DNI(J-cn1RR=XZDo z?;rsQNFWKgpOcA>1SBAVcOc+?eur1^4ib=n1d@RJIhp84KmrnY2LkTrcX$QwAOQ(T zAPKmilZlQ5Bp`uzAmDy}hga|p5|Drdl7Ra;ndnGB0up!!0`BK`cm?ku0SQPT3Amq= ziH-y$Ac1!v;C_CGSMUxJkbne|fcrU_=tw{U5_ks!?&o)S1@9mM2}mFbxSx}Wjszqi zfp;L_etw5n@D37?fCQ3&`#G8DNI(J-cn1RR=XZDo?;rsQNFWKgpOcA>1SBAVcOdYT z{ru-Y{`Bi#huBE+FRQ9P^jVuayHy$X%&OsJZB@lQyY+QvRy95S?8ckqDIIU z)}tyj^r@MoKXm?OzOUDPIF~)s&pymlrpq;zp6O>FW~$T7aLUlk@N~!jZJqx5&+L{C?~@(q@SfCFPiCH| zKWRT#Z$zJZyjRD`m(8kv=IYwK$=cz4s7F;g>{gvtey5h1j;?0Wr)E$3)K!Llr8|9g zGMroWS!dQ&)oI@!8?~Pww`G2GNS~jJnzi(wuHDc1vgzb2?_{p7&D*XW-iLZrrNeI3 zY2|lnnd#_i7JX{=q)%OC=vTVaXD7qCRiAZcT~(d-efKl@@91yd&;9RP60T~QtTL7V zQ?=~V(Y#Nkt3J##Q~5_T%vZXaMW32|=u=l2`jzhV*~xHj)u+lF%~yTaezl(~e{{>c zt@GB5pT`UGFUjZoj#K)qrOrM)Wrys^TI%dT zXPx9Jb>4)h9nCvrH=g#pWimUT%VbqLymRW2&-*Z0W!8S)WS!?7s98mydOd3-`ImY6 z)XY$i44t7_o0|FcULB{*vm5=PGoP92&Y66c<9^PU<+p{JFPl|79h$YNnO~n~lFm`R zp2gEn=aJ83_c5;D!)_9Oh;F<=pWUb z%Ub%CuJZJc>Z7xm=d64D^?n}r$;|qm)&GiS6*WKUbG7?#sqx$G9<~i#gKX-4=&CL3q?&rV%^B+I> zZ)|?P%Z{$zjy7#k}>C|Q>olehn)#%X4a8{+OKJo4 zGdu9KbBFckVmE4bPJcN0m$UMeeb%S_K2?(UADaLBnKxkvRx!^Gx$W7Fn%yd&nWt#? zbH3(qs=s{Ma~XCRdflfw9e#FOJ5@K{Bs=7+?8Br zsM$IF;pAV=%2W1PpZ5DyN#1{G?pxl39azOYJGh^pvY+{yY6(a{0^dNu{rnBD>}QmK z1fEF1{rtpN^Ue~Gz&8+ZKYzn3`xzx5fhQ7hKR@x+yt4!(@C^jq&)@LMentsM;E4p> z&rf_c?<@fcd;mq5|F?*5O6<# z!z=q4B_M$(5^z61@zuPu1SIec1l-Tx@XCHh2}t0H1l-S0d^PVZ0SSBq0r&Gayt1EB z0up#40r&G0U(Gv9Kmy-D!2SFUuk2@(fCQdM!2SHhSM$yikia((c<256=Rf{5{w*G2 zk(oy+vSDV@SybiGbY`FFOfipA%uI?5r;}CZoa~%VcFxRnGMr8)JTo0JN6heaQe-Bb zPSwoJ@)R>OMP?SxtWta`0r&HG*~PD59_4pnaWun=%sfgl%Tr`Hovb?NWao6Ub7rQK z;dDCTndyi*Vuq)aA~Wf9s%B=Er3GP7`ImEuzgxSz+%E`9~`D8B=XqZwXg=241S zo+88PWYsw*JExPKGc%nGr_%|~Oh?QSGd!IXnMtQpH8Zn3#mr2RnT0c}6rW1qq5FA$ zY4cqcM>Cw6bY^&p%%rmj&!ZHJJ~Q0O%*>%$mCHv^K&hZW+ug=>fF&Bk>%;k z@D!OzXNDDDNWlF(9=-Fs$V@u(E3`P8nJGHqPG&aT6z67jsur0%N@sqq#nH^9SX7-m znj^A2of)1YGwIB*;tL75pU0zjeixZZXMTkiM>8`;C)~-*hMVHttWMP;lSk>y&$T$3 znG}nvb4PPTmZvkrQ)DKc8CHBDfoJXK&bRkm=BKJUee!G8sp@31^Ev0-tWH&C(#bn# zCY`KGC#%xwRCO}vI(Mpay3VH(a6gZi?ffn>({VcAoa~cTolI7pbI#4`RAnZeymMyK z$*Od+DxFSMCv&cIrz)rGd@2F=^LW|L?;CEyx znocJ(!<*vVtWH&C(#gwbW;zS8==0-Mv*8??P99}uItwxTC_bKm`*}R^;^#1r^2;!f z79y+CndNyjola(kH^sSGovO^Flb6rTbQWUK=f|sN!#OmaJj%>;7Gm~Md^~|i?B~TR z%&+mxq%)7E$V@sjJVj>Gnc*q!%*>&iqI2gQ(W%NzI-Sm)s!pFyrZX!u>Ex_*&Q)a} zozEcPeje}G`CVito%~kZnaSzroX(xIbEhgZ>2x}Gsycl-na-@tq?5DKIaif^bUuTC z`+2-$=Xa5rbn;tqXC|kgb2@j<&Yh~vq|@o#sp|CUWID4llTOY`=Ui3x(fJGl?&tB2 zo!>=f(#dbdotd0|>AaJ9nxwlTN2|r>fJZlj+RLOgcF$opV*$N9QvLxSz*6c77L` zNhiM*cV=?>Ij3{y?A)o!Ogf#;ovKcsPNp*}GwI~4bk0>}ADz!2;C>$O*!f*#CY}6N z+?mPg=bX-+vva2^GwF0Xcd9ylI+@O_%%qdE(m7X^eRMv9z$5na{L-e#SD2YRnoee> zvk1xO2GX*UiRG2;at`HE-lJuCdHy^9%a=zXEt1j?0hbqeWo)TrZbNg z;!xELr|670R5csUs_AsZtWta`fp^}|pUT|NB>@RYphLj@+@WMf0uqqG{RG_4_cM2* z1SBAV4gvRbhmsiyNI(Mj6L3G@&)kU;kbnd_1l-RZN@gS=0SVks!2Ntbb0WfCMCPKLPji{mh*x0SQQ; zL%{vqp=3q^5|F_C1l-T}Gk2l{Bp`tf0rzu*zjHUSN&*s)fCNb3$CtAWB_II_NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb z1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ! z5|DrdBp?9^NI(J-kbndvAOQ(T;L8d8+rRzCzyH_&{OiAbIR-zz1SB8<2}nQ!5|Drd zBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J- zkbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^{5XOC{(t}JKM6=c z0utCH@Z-z*SHsOKSuOzyNI(L=2wbY>x0SQQ8gMj;a1D>T4kbnd(B;bC&5U#By zAOQ(%5O6*O?&k~P+FAk|uM5|DrdE+pW7z7VdhB_II_Y!GliZ@{xu0uqqGg#_Hs z7s9o*1SBAV4Fc}x4S1GHKmroDkbwL7Lb$e;fCMD4LBRdI0nbtiNI(J?5^z6X2-nsU zkbnd>2)Lg&;8`jG2}s~V0`BJv;o4dP5|F?K0r&F;JWC}Y0SR14!2Nt7Tw6;(0utCD z;C|kKXQ>1vAb|@BxSubCYikKeKmr>C+|L{EER}!+Byb@C_w$8tZ7l%_NMM72`*{PN zr4o>U1TG}te!dW{ttB7<32YE>KX1UZR00x^z=Z_d&lkeAwFD#}feixg=M8w4Nv0v8f^%6|UyAAkDwFG0{By81h6na^(POxETs_RQ1lz=_PWPnF4T?9e&QOf`%5 z$tiT!NuE+yH#wSNo_eQ$*7EaGkBOO2zms8APN`0-xBooa z?df^c3bz!yU|IV{WDWJo!Tms{&4c|n4bCc zI~i7S7C$5X)J)!^e_N-&{`2VE>_F#ex2NZyyPxwLo=(2bxlC52GiK4J=1u5RAI&gN z-RXHno;|6n`&^M>PwJgJu$G$rsWa1YMh7OTtNvAn`Fr%(qB*PbGfC%M6+3)}c0cDk z=6Am1j6O_Ka|(UxqZ#I@J3X(+vnO?RpDQx#NxgFi)>5-Sb!Ixw=)fd()xXLxe~+#< zYUQtQb*^gN^NFWV+|Si_vhw*ZM>AEv<6oWO=c4Y+y&}(^)YW~i$gn5%&K+1w&HmKP zP*<7C@6=Wq_Pj@rjhcIv4t3{NNAsPY&&s%;^S$_;r)IL_U!CE7s5^77$g?MPb)PFT z>`A?I2i8)vKQ%MdRi^SgwN-{a@6ltI=0>GM-MQ7#e5dELGSAx2dxJ+$g?MPb)SBQ9jMu1t*a{f)a*u|ni*cdPvB=122YpJ(~*=kZ?rEl~3{=~KTd!@1O*yIqlIPwMJE{R}%$ zv%^|fRrIOZjXpIq)XY#^4-tlz4%+8=4;ZY zepQBZsXKSOBF~=G)qOgds<(NOqCygR;824Dzl!&(>rywKP!LSEl<;_ zl6QW(SIu%i5AysiQ1e~rQ@<+1xzwGzU6E%`>gqn7OjTR?>`7ha=~Gv=Ri?@hKdaKo zWR+RZ;_03G++NM9bjGKs{5wD6{j;96pT{?re@Tpf>XA%;IGsMsRNa{A&terj)9-g< z@@NN6U-x0>O0&bzOy(&a-h@?aKaC{LkbneUOThj7TK-O#fCMB^5pX|OWb`E<0SUa8fcyEi z{GBcV2}qzK;C`;i=u1EX5_l~E_w#G{J6!@2kU&Mi{algJmw*H$@LB@y=hyOgx&$O3 zfr^0pxgw)40SQRpwFKPHujTJ_2}nQ!6#@5iMMhr&5|F@a3AmqM%irk|kbnd#0`BLE zjJ^aUAc5Bsa6iA6ztbfk0SQzD+|LymeF;cF0Dwfvnf0SQQ;BH(_m$mmNz0up#F0r&H3 z`8!<#5|BVe!2Mj2(U*V(B=A}S?&sI?ce(^5Ac2a&Q}*+p|M=6dfB7lsQ!|}HRtB(aG1%7S7bPmx8iipUHj}%Rk6cbR~Y4($CI$ zT4mUC=uEDCo^o#0xyt_8{;pY43xey+Z^eB~;0gT$P@QziHPoWAZk zPOHD{M!oLIBy}}~ewFX|olIv|C)1fVGGn85dNMSQ{zMkcpwRm-{5*@36u zqutN>*420E3cu=^w^}=$K06uKR+=|t=4$`wEZ&E@(`P5cS=61LReqQ0}X3};bydRF@Bnp5agXNFE{ z)>1P`KlMnaKb-87PA1ut`O4??ekMDo)43a`r>^dkv*>i@R{6XG9aarp&0@03bo`Ow zUL6i=dCIw!KANxkJkfVQ=d1A>mAcAze0CdoI@Ih&pE@&iQnQwtN&2ZrGX3FXpL8|Ri@*Q3^(d_a_f9o@P|^ZZ25)$ZqfyZkPV%#P36O6N`b4trKrI~mqea~A!M zu4*g)XixU(X!d8GKK0QI^VFT5Req-hE6AGbTX`Be&5e- zbf`J&sP6RH$*`81_oP2GosmqZ<7X8eYToCluKLiYW`FwB%v8F{cl=IqitE;F2!$#h1(^4ab4wEH>VwE8Zc^RtQ$b>5`!bo%UMSWC?t(jS`6NT$>Avx*Ki z?{idFedtrOKYeOuDqZC}eka4ZRlbv{YUz(Hn!A)4&dOvuBVYOK_IdhQ`#JgNyAOwd zt14#LhnltNR~<%G=F`s(bU1yjt68jK=hW-u`ZTAfGdiT-xe2HD`{b`wxKoW32ClehBNI(MbK*0U{4zJ)HBp?9^BmwtxGSQKM1SIed1l-T> z@Cx2R0uqow5^z5!6CDXiKmzYT!2SFVuizadAOQ&^0rzt<(UE`zB=8Od+|Tdu3f@5i z5|BU=a6cy#9SKN40`EY;{rnEE;2k6&0SP1l_j5AQk$?mw@D2pr&+qUG-a!HqkU$b} zKPM9%2}nQ!??Ax){0^_+9V8$D2_ymcb28D9fCMD)4g}oK@9+xVK>`wxKoW32ClehB zNI(MbK;S9+`Okm+>DRvwv619oR#koIvo>{ht1|4FRl~{Js)~7b>+8;}YI^$FjW@|t zI{Ym3so8C*5c1ve;OFz4DZl2O% zPx{pCw$`I6GxVvMq(5~2WxlW1eK?mr)6YK4RHvEYl%bj7>5l)~I{o#Z*)1L3Cp*yL zJ*lgn%sf$l(tfVqh(7grua1*1n^pbH)wOw(wZr>RkE(RotvapzPAxMXUCp9T&7SnB zs|@{0clzvPIJfGv&aA7d)4o48YCk`2%lzn&K0g;VYw15-yPxxA)5%xf$y{BVw_Q8D z5A~=@hux~v%J0-N)6vx|`qb=6pSsG>uXLx+PKI--*eE8Xd{li}Q|Pn9{EullV0 zYCl*0=$3a|=ht`O>2tOFIo~e7CqJ9n>EEf%+pZn}S&ya`V`ns>-$vx+|T zde%ttFZ1-NnV}vTIzzKIHS_DeI!>8qH~K?oJ~P#wGx;pX{hTk$ZwobFHmi6#G;32c zzdp?*ouhg^i>IB=BcI92XR?!FzS6vN>QR-mn5;5ue|?`kG;lMhCVfu^r@Ml-pR0*n*A$%G|xVrT4t!(hq}sCey5h1 zj;?0WKdL#Gwe%}p<>?>QM`tn5S@-zs{XFiIne{!Z{}s(DYJSq^YWMSaJH9M+^|Ct| z)>2oq=pW4=tz~~|_MxsamEWmlrlYG_^p9%JWi9*lho+Nv$kWVJcc9CP+Gl6x(|@Al|9;Ll zt-iN>-<=F=soB5MNAv8{sm)9}ou2Ee(V>&!tV&mX=nqXN?~tdNsqR3((`V;Comrhs z=blIVxSvUEUq5R<^IJ_#4)pUIn5X?rKiR*}NUm>Ho#uTwx6)NN-Xv>tR`y|4=6SlF zmC25C?moO{cHn8}4(rdwZq)3Y{&4ayXXPpTtWW!WswD3}H2?QAZ^90&VxApx+p`-r zyH!3jPtoq@e9hrhfBCZKGVCz)x=(dF{Oq=Ns&2eVcF0-ThgF&9>3UWsJI=ZL@SfR$ zr=2^jKNq`Evvc~x$-kVHr|h#n?f0pYy#LVLx4a2Eu!?zha6dm~Kl3%!5|DrdzJY-I z`5Ru@&nN*2JduF=`H8RQoh2ZFZy?}){)SifGfF@LPbA=ee&VZnX9-B)8wj|czu}er zj1rK*6A8GVpZIFtSppLH1_JKqZ+K-tqXZ=IL;~*TC%&3@mVgAlfq?t@8(!JZC;jfcyE0ujZX4 zAc1cn;C}vwSN1bXKmt!B;C_DMt9fS$NZ=a?xSzk_mHmtokiZiOxSyZ+YTj7_68HuJ z?&oiKWj~_?B=AH6?&l}Ins=6f1ipcQ`}rGQ+0Q5e2|SU2`}v8l=A9)Vfo~x2&inb# zfBb3uTRg-fGmlba!_1_!sLG@1%s$hZVjiWKnG_jLC#%jm**Tr;oSErlIGs*-W;$Yy znBnQ9$V@t&s+pPPDQ0Gh%q*N)rTA0=?&tBci(kP!%J0D9XoeS=d6Z(7r^s+RS#{3I z&go?5%uFZ4>2$&~(-CvT3{NLTX42_Y&CD!MF*8$SX5q{##itT*KaZDP{0in#eg_su zGrY*mqZG3|MTXPKs&h_uPA5BOW;z*8rxTu;j+i56cseOElTN2CgPiKaw$V@sjtoT9#&)UzOZ|}LxPgQmLSWG!?o{P;olhm;ejYE|`CVkD<8;0`*(a+ynXEeJoSW6D z%1ksWtWH&C(#fl4W;zS8==0-Mv*8??P99}uItwxTC_bKm`*}R^;^#1r^2;!f z79y+CndNyjola(kH^sSGovO^Flb6rTbQWUK=f|sN!#OmaJj%>;7Gm~Md^`d7^LXOL z&tV?rmth_)L{_CU%kyYDoy-hxigU9%RhdaAFQ1v|EX1PEk5|oxb7(qwl$q%)#O$N^ zcmj{u&x==>U*nlcXC6(FnRI4&ip-=l!&BUunL{^4=gv8zQ2&T?b^3HNomrVlCugN| zt}6TJdSaOlMYR(#curoU6({I-fzn{XE{W z^Sj7QI{B@*Gn3QLIh{La=T22-(&=>WRCW4vGM!nONhfEebFM1;=zIo&N9^bMrA?8q zFf(~Hoy<&UA!hj$i|{;};S@8IBE!?ka5^)*DYA1qIU+ODS%mXwI$1uQj>tZXsu@o4 z<5jcaoHd<}m{p2TCE$J@FMICiaIR{8mlowSlVVXdkFx5VGaD{Mc0L!*KGT^E)0syL zaj0sBQ*=fgs+tXF)pR;yRw+J}fcts8?75%AxvKeHT9nUBibd5t%BpkDY`75F`CK^r zOlLMsXC5uYp{f~9(HU{5YBroz)9Hv=rTA0=@4TNsmARiw0uqowhk*OJL&=N;Bp`wN z3Amr{XYND^NI(J|0`BJyB{LF`fCTO*;C{ZJxf3NI0SR;nxSuK!4ka@Zkbng4C*Xd*pScqyAOQ(<2)Lg+l*~v#0us2NfcyD==1!D=1SHTQ;C}8< zG9v*ANZ@_~?&tfNJ5d4>kU)ok`?*8Oj07Ygf%^%#pYLbxLe-QP%a$&3UfAc6Y{xS#K5?nDVlKmr{C?&l6AGZK)11nwtr^?n}x{VM?p zNI(MT2>kt@|M>BL=Wb$^1SB8<36Q{#FJ~J{KmrnwfCMBU0SQPz0uqpb1SB8<2}nQ! z5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^ zNI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqqGmlOE6fBTPr|F8e~*MIqP41RnGNI(J- zkbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(T zKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmro@aRUGS z|Nhf|5|DrdB(O=~$CvZ3hMQNiTmll1fCPRKxNblHum2|j2}nQ!rwEMy_vC&)12)Lg&;8`jG2}s~V0`BJv;o4dP5|F?K0r&F;JWC}Y0SR14 z!2Nt7Tw6;(0utCD;C|kKXQ>1vAb|@BxSubCYikKeKmr>C+|L{EER}!+Byb@C_w$8t zZ7l%_NMM72`*{PNr4o>U1TG}te!dW{ttB7<32YE>KX1UZR00x^z=Z_d&lkeAwFD#} zfeixg=M8w4Nv0v8f+KVJyf))J6_1U3k`pEuxHDgg;d;6eiK=L_N5S^^S~ zzy<;L^9DRiB_II_Tu8wEd?8$0OF#k=*dXA3-hgMR1SBAV3kkTNFNAAr2}nQ!8wA|X z8}KZZfCMCPAp!UEg>Y>x0SQQ8gMj;a1D>T4kbnd(B;bC&5U#ByAOQ(%5O6*O?&k~P+FAk|uM5|DrdE+p`j{ru-Y{`Bi#f}lTi^>@@VpWW7(tj$^MnWx!-6Pah9DwEyV zp>vv#dy6EmNFC&Q|oQk_=Gk-z%yU;g^H-~Jt) z_*?mJ|9Q0A)AR1$t>_&g+^=W2C{#>8zw(gU6qmw%OXQpyGwN)nl z;pE>jJ@e^zGOXe(en$GKnY>5;woZTj=h3;@fzHuxPtQMhKj$|*oqU~hnXF1@%%V@t zo6x5|nqi*0)ANcvds0{Txgx`!)H`=zEj9a7XQtzf4op&4{i_V~_vo=jb5`YNlFqp* zcK8hKe$IEy?|jD@eVC-?6#CRhGt5(WdR~!dPwMJES7g|edgl(TrDlKX%ygX5fl2DB zf0beW9$jtJ%3t5=T-Cbg6HlMGpR4a=vWtNUD$VNdFv zJFu3T{i&Iut}>P1sjV{Xd5<0&HTNnV>dvi><~u!~m2p4kd+|F@&1A>FI>Y-=cjjJ^ zXHV+tK38PelX~Y4tfgjuYG$abOyzfKs|EI zn?Ch*8Fn6e%uUVYPi5GXn*Gx!nJPJ|s?*BnEb31Fr!t&NJ^JV0PKI}*W-T?R(5Gf5 z^+@I{CYhn1Rh)aB<}R)Dn9kGAeU9ckJ)e?sKj-&3zwK2fUztg2Ch1cj%`i{B?m15R zm$lUEK1{B4)rVC-m0?e6eqQQMhIgZ8Ep^qu$}rFV)T5Tkbn=uFuh!h6l^%ECY3Ei) z^PQeg$vkU6CslrjsWUm8Dnp-|edtraD#N+dox5F;XHV+tKK%?kP_x5YS5@?>*^NFm zGt|sbSDDJMYO6f``*m*7;iNzAR{7Ppyq4Rr+!t2bE!LbyCTn? z)YX0Z8Frv%hqbP%=u@*BeQIW?nW3&Sm0#6XdHVP3+@Hfqf84F|tD7IqSACx4yPwB< z@wY(D*Q8JVsto5+ckXsYo;|6n`*bo@ZRN8kb(N=2UDZ~ZDnI<(N zOqCygR;824Dzl!&(>wLKy_!|&j89SdcYenEXFY2_k8dphk{JEeBbokiI(?X_x-rwA z#VU5D-|xoc(GHxx?!(TNW{07f%u_nN39HtACYfjdyib+Pp4o@ps9BqS_F=xd5Bp>X zI@#@NXKYda?M%$w%MN+k>G>HM_cOok<4ySur_LAW>A5~x#XE3f&dS=%9PPmA?3R7# zRGJ++w`HC;$^O|bGj!OQnwg<_T209elho{=e)eI$x)1wg2Rhm9YUkWu%?*66&()vq z{{Bzd&-asYq68!$f!7jnKfjj0(C{LkbneUOThj7TK-O#fCMB^5pX|OWb`E<0SUa8fcyEi{GBcV2}qzK;C`;i=u1EX z5_l~E_w#G{J6!@2kU&Mi{algJmw*H$@LB@y=hyOgx&$O3fr^0pxgw)40SQRpwFKPH zujTJ_2}nQ!6#@5iMMhr&5|F@a3AmqM%irk|kbnd#0`BLEjJ^aUAc5Bsa6iA6ztbfk z0SQzD+|LymeF;cF0Dwfvnf0SQQ;BH(_m$mmNz0up#F0r&H3`8!<#5|BVe!2Mj2(U*V( zB=A}S?&sI?ce(^5Ac2a2`?(^cF98Wi;I#zY&#&e0bO}g60u_O$?B_rK@uy$^@>9^K zW-|TZY&dt-|Fq0Fn$Z#TW#p#^8_SvDTVu!V^I&}QJ z2_4R*pPlox%CP6qnOyrk<=m=smHEqG|MuHIcFu0;{8s+ke`fx(9rts7)B4|S)@D^Y z+xfQrTzzl(%2nnHzv{{RbabcBPKLGA<8B?N zO78nPecf}MR)5)zdfk&r>S_x8D&O%tna-?ErZa0~#zyV*WQICB@br7M`#Imb^F3tM zPQI#T|BmkT*~ze$dfct!RLOlmr>}dC)9Np~QLlS4NnK5$U*$V~C)1hL$#iCoOm5ez zmUF4I15dw4yPxx|tMAeke$_K?wRSpvb~3E3G;hev)&9|0ybpD!&rXK3s5?EY{7x-< zQt$K}wYgm@pL0`ZpUix=<9^Qf-T8j9Tc=NzVV{of^x4U`A@TbJXTut$fZ+oqaO%+0GO9GrvEnhm(KDJ2GFrY}V4rs;X!D*@q4_ zr_iU)44u@hrDl?T>XA%;IN2wiOtL5QmCxz@OmV(do>s@_7e3tQxwS z#blM~_#?x;Ivm#WlyfV6G+*_3qVImrSK~J-b(Qb<>^AarsM(D^b!O12{UnXi0K?`N`eI-R?5dg|&vIg3tbZk5kF&|%fk)hs5fOvfJ?Zq(thmZzLs z>7)6o&lCO6+t2w5{BBTZayV6H$7gM&tNV0(_N?+d8P-yB7X6N{YAgR}Pxk3(_Gg|x z_0bIT)SaGHey5f_sdsvg+ObjDhkDF9x^<7{`H7yZ-Ou@U`CS^B9iO$8&YScd_N=OQ zGOVTMEczW?)mHw|p6t`n?9V)X>Z2LvsXINZ{7x-5P2kv)kus_jA5!^<6sWXB8dlyh-2b^x4Usn^N%X--dPbV$E*6Hf2<$ywQl zPL)sp+?_d#pMu?(p-;`sPM^_}-8dyr`?GSFR^3L=%nyfudC%|B?q_}{`3=nPKz_$q zTb-`^WCuD~TRAyBlkA+D`J<;fJ)O}%{mv}jt=}hSWgj|KKK*ld<}7{+c4LM=VYQI0SQRp9SFFe-{BR!g9IcXfh6F5P9{1Mkbnf=VYQI0SQRp9SFFe-{BR! zg9IcXfh6F5P9{1MkbnftE9sjp=`s+Wl zTROZ?cA&$1Qdd2hd7}QL{an2fed_UE9VcHltNNL%Yx5>+hxef#Rq3!>bz1qIT4p-B znnjQR*ryH%%^->GG$qpMl;so9f0b(NuC=}w=W4ChvT)|quxb=vpc&*Z1q~zYWAT|U1jK3y3=PT!?{(T zDswbn^;!GXey;q{E$_C@ukXOq=W6$JzFmG#em1kyzf+sHT|4Yq>8b9dwP`|y+!1iIbW9F7HYn1 zR`GOb)~05DeVR!+NA-FZPdlAQK9iNtWGBOXrFrMnqbg@HS!LG#`aXHeJ5X~9ed_F% zRU@BO^r_c9^OUuznRh>v#*Tj0eqMjl@tw&GeQGA@Q!_)olVL42`&asCo_#vC%uurr zb(N|7PAxMXUCp9@RC6wC=~ueS(?6<@&SIXk?(x_AdE6&6>w8xJE1Ff*{G`v-?&tA# zd|B%1Wp^^HrLJbtKbk*U%l_2tLtSMmzf;RhM_04xAJv@8TKbi)^7N1DqqCUjtb6?2 zy*W2C>wCJN|NhT^{NTT_`S~t8x_UeItTObetJ*44<>^ybedtrOw$exQ?9-{uOgf#O z>#EVAli{pNSAFOYO(*Y=r5Qti&(6%J z|3t_C{hV)FeQ)``I~mqevwx+J=GmuHo0)VvJ=ayELnp&om9F~GADT|yAx|??-GP3m z&(3{1vpSj1J&*QrKa<$Le%5~Gx0;$9=;t>uPy3mEvVWhET;HlX&HHd}rK@hdN!I49 z?8BrsM$IF;pAV=%2W1PpZ5DyN#1{G{_khrgdJGL zJUisJXE$ngt9)jjqTSE=n!~C7@@3Cu*kR~(pXzk@*=_Aq-FTDikh8K6t1{2i^{h;G zoOAc#J+lK(J9k)rE_S14=k$k@e>p2p*=K#)?^7jt|Dm~Wc@uVE74z)ietyb+=4+}Y zAOQ({0|EE*H@vc+Q34WpA_4dF6JO0cOF#nOK*0U{4X^BHlz;@DNWlI4#8>mq5|F?* z5O6<#!z=q4B_M$(5^z61@zuPu1SIec1l-Tx@XCHh2}t0H1l-S0d^PVZ0SSBq0r&Ga zyt1EB0up#40r&G0U(Gv9Kmy-D!2SFUuk2@(fCQdM!2SHhSM$yikia((a6f;;EBhHG zAb}?ma6dos)x5I=B=8Lc+|S?e%6>)(NZ^SC+|N&ZHSa6|348+q_wzTrvY$}`5_lp3 z_wy59%{xm#0^dNu{rnBD>}QmK1fEF1{rtpN^Ue~Gz&8+ZKYzn3`xzx5fhQ7hKR@x+ zyt4!(@C^jq&)@LMentsM;E4p>&rf_c?<@fcd;vd&*Nnmzk+#`-+{%^3@PZ*>YS6E)5*@6nNEh&>4aydBj$)1o=%F)q|>RInOUAd7 zGeu?=&a6^=DuIXY=lP}0cUc_GaAwk(;VCkc<XIQY`w+a3?dvo8sK8PSqllN9oMZ zwK$rY6pN~JM{`7$r!&J-WG0;%R(v4=_w#u4&hH{K>CCUt;%H{3=!83&*>F>wo7JgW zWb!DT`MDNHGm~Obb?#`6$ntb%c#6!VGsB86B;bA?kKXxRWG0>Y6yv zigU9%Rf|j>r87U*;%H`4EUL~O%@J9i&J0hHnRI4Y@r4AQwVylR-gB9ss_OK~uUV(6 zlgZBKoO81}RhdaA@0^)*vMQadN~crR$(-xlsmkd(pGv^}JYKf*yU0w(>3nmtPgZp@ zS#{1iH>*>XnRN2bnMo(B(#fiHI#r#_xz3%coUZe!1l-T#Wjnu%%ygX2Hz)gKRVR~G z=bUr1I#roTC-0n@bh0X)tV*X-)ybUe+^NdxI-g455&L<5X;b98%uF6lCo|Joh*>_x zB0P^~cp*CBPG&LU(9yYBovO^FlUL2mbQWUK=f|sN!#OmaJj%>;7Gm~Md^`d7^LXOL z&tV?rmth_)L{_CU%kyYDoy-hxigU9%RhdaAFQ1v|EX1PEk5|oxb7(qwl$q%)#O$N^ zcmnR{@x+Ut!#v6_!#rAutV(B==h1XJnHk;`=Vo=PGLueTJ~PuCEsHnMr4cr?@jShi;0_opVH|Dl_SHI(Mo% zeL9)Wtjwg7v(hD;O6^yy?e zvoe!T&PwN8Rrb;O3_9dCa0fsI(N>_ovO^F)9Ku)>h$SkIf_Tvhhb`3wS& z*w6Dzn<8IfX7Xq{nVHT)%2$=bQhX`__w#t!b3cc3Rr9;FD4&@Wi>i5)Rp*@9 za3Qkuxp4NG&TN>@JX(lDRWqETGvZLyY&ff?(-E^u@u>vfc|U(Db3c~^Bp`tf0rzu< zk{Jm|Kmzv@a6jMA+=&v9fCM@O+|M0KW+Wg13EWS>{d_-jCrUs966g?cKX)jZk$?mw za6bX}^Zm@7C;v0v8f+KVJyf))J6_1U3k`pEuxHDgg;d z;6eiK=L_N5S^^S~zy<;L^9DRiB_II_Tu8wEd?8$0OF#k=*dXA3-hgMR1SBAV3kkTN zFNAAr2}nQ!8wA|X8}KZZfCMCPAp!UEg>Y>x0SQQ8gMj;a1D>T4kbnd(B;bC&5U#By zAOQ(%5O63P%P_HxmjaOCdkh-d(pHt}Y&h)8|X4dy)XKGf_PtD|7kJ`-8&;E2q zEuGZsOitI4z|{mkZ$FRU-Qd>IBwXdQTji{M&Z6erszYYjp{n}X%+Wh^@_EB_sy_6o zv%_$9GM(CLuD%4$5pX|~8-Ih;BhzuJB&VeAbk0nt&(CI#-l3Dv8>UnBp--J1hO?9D z)K+u#C2)>_`uQniwRZHM! z2|RH>k6%ju9c1`BTI=kP`OJ_%^BtcV>YS3D`x$ml-S2ZQ$%&l~%vZYVGyG9iW!RH> z`qWjX@>#2vz|RtJKj-gy5KcdTq3N);|5E)~ndFq}KAGwC$xQao%+XoQS30NA8C7(s z*>m`GQdgPE&ki~g_$dNU+|T*h`P-ppl0Nm-8TPOA&VAUk>hn_>_NQil>Q09FN>_d8 zQy=ZaeATD&S*w=7&k}GylP7`&dvFkk7a4}I#ReVDKM zR6c9f68KpH?q~AkZ;*N?!`e#k%wo@~&rfC8pPK!tI~nFHUG77~ZS@rp;4Es~FKXoU=e5I>C^r?^bVZQ29`K(n-;AaUuYd??A zK7J|uOD5ItD1CP5oSw_@Zk5iP^k*?ieRNjV4u^lUCr_zIl1}RERym_KPw8iWI=oNz zp~EU_X4De6hk*OJ`VG>j=DX0RW~QTAOU+vPsYi17tV*4=beN}Kb{ro;};Y}nU0SSdyKSkia_-a6ebCQ0=tJU-wz>%&O-( ze?6_srVP^z5%A0SUYVfoJXKL5w?xI!{SBlRQmb4chi@E1m2l|`?-3Zqr35FALftFI-2J!wFD&a6ar7&&x7sQQMswoVZQ$^SNGvf zj?Oxo=Pb1ZB=8gh?&s>Ierg9+eK@zu{FKjGY6(c-DFmLop9kUf1{{UpfvX9)pRXot ze+fuH0_O<0pU-i#N&*s)z|{oY&sP(+zXT*8fpY}h&*!*VB>@RY;A#Ty=c@_ZUjh=4 zz&Qf$=X2bwl7Ivxa5aHv?dL!L@uy$^k_r8x^DnFNlpWSdo(`Sem|1sba;-ak@+Ne6 z+x=PWmQ&XKdCFSq%+MKn5hN2miM8~J{^Z0hR&)^ zCacov_vge;pUiX|PRYBm19evENZ?fj+|MLm{Z4oMqqV#bHTzIk8T!;!ZI!9=M}79E z?(|`Xy3?o1un#r!Y6-lSfcu&JtKaF4f3%kOp=KZIDnp;Ts;x3r{;1FX)SW)eP1piOOor;k?drcWdF)%&!ZXE4$X;q`VJZ1Fh6hq&Og;BC$ck% zRhoIV1YS$P{mfr<^%ndsGn0OH>t|TIu3|Fp!_%w#aQe`km^a~R=Gl$OexFRPd#>-m zTD1i3C-B7moRspnoEbXI)30=uuYC4lrqaw;nzhW(r)Gw_%Fw5-YC9R$R=U$?C&Rg& zKFq5n@LB@y=MMj!-!*G1{Zn^f|Egz|p-;^|^r@>1{YrQG>|{8%(}#Jr1YS$P{oLWd z^Sd6k*&&_vO{zS7>Z)6np-;^|^r@>1{YrQG>|{8%(}#Jr1YS$P{oLWd^Sd6k*&&_v zO{zS7>Z)6np-;^|^r@>1{YrQG>|{8%(}#Jr1YS$vS^Igg8ox6BO@=(BW|BVjI>XbU zSxe2+sw(};VP|UQ>8Bpa^oP^w!%WpJGi&Fk?o;*Qr=#YrDxVp(1nwu`e$L-DUtxVZ zl9}P}ojNzSXDuDI1m1zb6Zi8waPtll zkbnfPCg6U)ny~#PAOQ)SBjA2M$IU7UNI(Kt6L3FYP1ybtkbnfv5pX}B<7SlvBp`vS z3AmrHCTxERNI(MT2)LimakEMS5|F^v1fI2@|MJ(r{h$9x>HiE&lgYInC7G%GOb%y` z{yzmX*`b=X_W#d8|DV0L$+;{?jwm(JB5DgYDQ%)=4de!T(t;MLp&&qu$W3S@2%4z_ zAV3_XrBiQ~_{OC2*k7DLqk$?m~nSk@Tx}Eh5th%yZO-treGvQpl z+L6g>2}t1c3G6kWE1o&WvQqU{^(vvNAI+h^%Dk)2z0?wrz%B%w&(%#GosCCx=s&vG zQ9t)mOF#m<5ct;lJos00taCe6Z&j}{JO0XZSG_u$bqPq|lL- ze(t4~fCP3Su;Y9l(}}-p+SN4cba5BzbuU*tyE8d8(}u1xv$t|)rWFZD;L`{=pQ{_G zX5G<=*YO|StIDi$s&BL|0SSCEfgR^_@~q|+ogGide^<_xy{a=*b?&8>fCP3S;C!xb zs+x6G{b&yTRpwoF?xmK11a=|tee?O~Osj6{=^XBRbg!d+?xmK11a=|de6DWlt{GV6 zaNo*vSDkyQB_M%a2<$bV$Gpnlq}}mk7b{0+BYUZ<9D0UcpE*}qsS?tY`&yBJ1U{31 z^SQd0G1+pps;6^Q`hL#R?8;SExEJfx)d{UjKmwmhV6XZ7nG8LZ1SBAVCkQy7pP*`{ z1SBAV>ja$7*BP210SQRp2?EaNC#ae!0SQRpIsxbNb%rKLKmrnYf`Ie+394pFKmroD zPQdwmouLU5kbnf9AmDs{f~uJkkbnfP6L3CXXJ~>1Bp`t&2sodgplYTBBp`w71ooQG zfBWlSe*DX?W_{@VWmm2;VeRDV(3wWhI+@P3?&Rc2SXt+Dm0i>w&+rc?b@sBNmVgA3 zfb+SUKZ6xl*VBeha$a}Qxz?Q=o+0%*pR3uMyH_4MsWYDywFD%P1io)R=QoZ@H7n?^ zJXh*RdwCw}PEO@vPDfWctW#H+m8Ys#Io2icP6Ezn-g`ASuGEkA@;ua?oXW$Tj;?Z8 zr>-(9PgSpStV`gX1f0*j_iAojsUPj-d8j)%m4`VUUFEP&U1e6Ds$S(-m%uv-IG=g% z)!evJKibRlP~)uiCt)V*Y6(an3G6tZ^D8))sM9$r9S?gee^sw~>8GZ@()4$9mD8y+pMKV<>7k~l z()6n(AOR9^K9feJIa}zd>XnCnYWgcpe@9n2ojUXBXPufJYI-V7zghwkAOYtyX;hlC zg`TROo^)n~U8#qkT~#G}k5;$~ds(NZhdNID+EddEQpL5ReuVTGAoay2Gq0VGh*1D5ZdDh9fI&$)t&Rk_> zI7fwD>v}q^NZ`!`cAU>|zAwLB0up!+0q663?%FSvfCTm;;C$ZezC5i2B=8;r&gb{s zwO=X$3G79{`MlSCd0Gib;5`JK&+oZwzf=Me*o%Pkd9VBOv=WfOdk8q6-*eY~sRSgj z7XjzmR zm#3A01l~iy`TU-{_DdxofxQSgpZB^iPb&clyoZ4E`8{{-mr6hadl7Ix?{#0ERss@u z4*}=%d+ypVm4F2HBH(=9>%Kg#1SIet0?z06+_hgS0SW9y!1=t_eR*05NZ>sLoX_vM zYrj+i64;A?^LelP^0X3=z9VLs=XT^%uZ@0h1&cAXQQob=2}M=TCD z+ZUd>G|efdXNvSJDzj^fXVn5SoUofDm$ z^vp^}EDko?7oNE^%_*j5iu5chvulcJUQ}{vcBPnRg#>OS;Cvo1=ZjmgP0y@!#7yp( zr)PGZ6P=v&%t}Wr4mR5tp1Cy5DW+$N^eif~Yl>-JRB~x{rI==g1a2ho$@97Mne(MA z%+Gl`$$7AIU76FVEcQCLbZ*ndUK!XicRZcs%*jgTWaV5}=2(#c2{@kzjn4Z@Pgcmb z(&xIWv~_*4*SV$jc4IY@v$DwPm^+@_BD*@3%*jgTq{oT`juLP_4`QA7m7c70_@C?Q zB&TPw*SV$KA}g7kmF$|8j=AHRfm38xr!w0YB6AjImn6_6;CvpSI`1nzS?ORu*VRc* zPwthKPFH%ea#!+QIh_;cURlYUteor094ita0q66e(Rp9#$qLz4`dn9)wyx)1S;>Ts z=Ui7O`7TfAgt=E%GAAqNx-!R#1W3U7JZN;@S9-ESwv|5DRi&-#xmQ*)q2oE%)k(g~ z(>Y=8m6goN%DJx0u_6Hy*kV4I6Vs6v1B6cV_Rz$ee= zyZ-n)Ip;i`uDq;sU76FVboNS5R-W4{lRLY2Ja;9Z+begsB7vg>oX>+;=MAPOD;@sl zx;n|}>FkxBtYmUlI$b~0bJqzwXU@H>NZ>jF=ks9Ld4uW6O6Nw-b#;={)7dLMS;^$A zbh>_~=dKfW&YXK$k-&8V&ga3f^9IwCmClWv>*^$@r?XdjvXaSJ>2&=}&s`_%oH_Th zB7y4!oX>+{=MAPOE1erT*VRc*PiL?6WF?cc(&_q{p1V%iIdkr1MFQ6eIG+c@&Kpcm zRysFwuB(%rp3YwB$x0??rPK8@J$Ie3bLQO3iUh6`_~iLKzivK|g*arMIkRhuxs+mh zrkI{t>4@3Y5uLz==iC;ZuIZV(XJsx;vGB~L6tjJb^eigbH7hA*&SGhLQe>AE37jV2 zeEtKvd~vh#2j`FfTr8z|R%Ta6%&v3d+!md#>6r)1%3PXa;h9S*X8RQBSyZxXR#MEI z#nSYo$Sx}qI8DI${0DUT;%4O!&L97|SW5G(%&v}@UFXEPEjnG(GY^)PxirPXGnZ1# z_9@b{sASiyq?kF2rRhnLT~;J;n!pzG`SjP>C;;C$Zq?mW2!B=Fq?oX_8VzkZzrB(N_5=kvaI z=gB1?f$t{ZeE#nH_3I=cfqe-$pZC2xPc8uod^Z8-^LO8`Unc`TD;yzkw4atTP_ zy9qd-zx#guItfT%UjokOeecebOF#nOO~Cp5-S_L)Nk9Vo5^z56dv~5(0uuOc0?y~} zzF)si0utDlfb)6ZyYu7{kid5na6W(c{rYthkifnKoX`8-ohO%o1iqVq^ZC2)*RPX+ z1okE1eBSr&Jh=oU@ZAKQ&);A!N&b8*gbh6Im)T1lwtgJoUS1o~`L%{h=&f~R? z3iaB#6Bn>(QGY)-#`#(aTEewI_GCB7vs~ zeBXQ??{0AGXcDgcnO0TSb?!yYeXE4@Frn(Y*K_m?9eGW3nT9?2%0?uc0 z;~T7WKPzx8rATrK=p)sgLH+U*%MF_NpatF9GK>dGZZb zy7G7G^iW^ftIA=WntQQMU3sc{)!Xs2x6)M(>(obc=&y3BI(yX;xR=0=^Lf0K{2gTY zj@CL8(w`pkr@vFDhdOu3;o}+uwU+LV1mC?ltH8V$@mDH7|s%L@~ z3EV|s$N8M!&bLENC+pNtdzfG8E9YTmm2;Pe`P9s(?s(|0bd|$8_0b&qtDLINUbO`7 zCE$D}PrgCwD<1Y%`pRC+ta9%1FrS+F)Ey7~m9BDFr#_lPf0a|!*{hboy#$=k>(obc=&y3BI(yX;xR-$QnLPOhsjqn0Tj?u% zF|*3K%fozX=2Le(^jEsdVV(MD4*gY5RcEhS0{0TwYd()}A1{T!WKzAOtTUmrdd|bM zRXR`7--}M_qkCoVsPH#4xk^2ptfbDgsxo?WmG#VLh3Cl}R@g;Nk6Hphhk*0BdV{P} z^Ilk|rl+IXOU+)^QxE5;vnzG>vO+)WRdRahtXApaj+L(btatXJf4x_xRetLdc#go1 z^Z7X%CQCp968Ibf&gaj$3r`{e2}pnhoX@18mVg8#@HqsW&!2M_o5O6+!&RuvC2}nQ!B;b4|4YdR$Ac4;z z;C%j^yYM6ukbne8!1+uXY6(a{0-r;``TRL|;YlPQ0SSe%eoV)NO5|DrdNWl3_8fpnhKmwmb z!1??+ci~ASAOQ)Gfb*F&)Dn<@1U`p=^Z9e`!jniq0umqr=QC-jB_II_d=3HU^XJ@! zCy{^zBtQbrXVOqhKmro@90Jbg&$$avA^{0VfCQY+q@k981SIe|1f0*Ga~GaO0uqn_ z2{@lgLoERbNZ@k_IG;b~ENfK7Y<#coGRnKmsJ-d?pRG z1SBAV&mrJ^{+zq;BodH-1W3U7Od4tlNI(LgLtyv${P*8}|M8DJM}@y!?dwb)y;Z$R z=1EeoGpoJU_1vZMS7){^0SSBp0q1jd3)M`k>g$~K%&aoc)z^Df=d>;X349uX@0-s_ zxSDe5WTon=>g=WN_$$v{b)H8p0SW9v!1-L=)X~{^G>879dmZ(2FSP_DunU2`=JS|K z)$f{lHPfoD%3sxw=Fned-c{#bY6(bS7Xr@b>ZXp)#-lm(AKmMypL?k#Ac0*7>^Psv zc0H-aDu3C#*6d2X?&a#}WhHgyvr_r1I(s|2XO0yKNZ=C)IG?Lq$SKE4)s^+mgk*B+ zerEP|cF%k(5|F?r5ZG%z4`Q4-)VWH+>Evqa%3swpVN^Q)%5zt}I-7L~NZ^wRIG?NA zIXWAU=Foq1ucLnMrIvsMb|J9id>(AajLJ!s75e-4@^lVQa&)hwe(t4~fCP3S;C!xb z>aH1B<#6B1b61^vsU;wRT?p(up9kUf1RJZBXMIOiS5>dl`u^eMFEd$BO&Ym6Doj&L zKmwmn!1-L=Q8m-5`q7;9=Uk;HS6LZOR#G!fEddF9K7rlm^XC)xgc6W|1kMp~KA+=e zmjomrfu{*LpPwddz62y7fpY|$&*!+=B>@RY;AsNR=cfsqF98Wi;2Z(x^EqyINk9S; zc$$Fo`Dw!DOF#k=I7h(we2$x45|Drdo+jXYewwiP5|Drd&Jl1vpW|ki1SBAVrwQye zpa1sPzx?=@OjsW}f7z9*OjtX)I&`MdvreXStvfk+5>|NH>w7URcUk9imA%yIVP)vy zr)B~*d$WtHY6*M}0q1k|ipL#smG7E2xc02On6uWMoID9D{G#i7F)epl=W~_4)ahYm z=;5bk0yTTHi>qo0d=7!{o6i+nzRIJXs<%_`c&hWTo;jTg6Nb*Njwida($D9Pot*S^ zD%>T{#suo@vLb~J2~`FcXBEZbExT8OW@ZM*l|9O*Ob2` zxn3R4j)zX>S9N9{^{{tn?wG5e;Nc1Ld;4d;D<^kkGKp21ezgRCEdl2=TC9`;tclXJzxeLFeyt0nMj2{@lS{I9%g_E!3? zGcdo(tURn!GlzBR%ENl4J2_W8+_#fMzghynmVooQ!~e>=9=(~6mGwy~KkL+0TIFG# znmMdfS02_Y-O0J);l7<5`qdKnwFI2c9sXC|_2|untgKH``B|r~(kc(@)XZU>y7I7I z=}yiS5BKfl(65%juO+b8d>*XEE8}l6dr1YnTS)_BVM@xFDdOAmCZvCf%o=m9rTG#({qaVf0w;}-v zd@=#&b9FoG8CZ2?y_%NHr)I*rdbJ~y)e?}v=M&g#K36<*j%B6lt?E@mRX>_Tf0cPx zoqMSzAc0*7IG?MVIyxJV=Foq1ucLnMrIvsMb|LVs^Lg;E=2+);s@|$zWp@0P=dOBn zHtQ0Qz$X)MK3BJMbT%H%q5tS!NB!JOEddGaLSV=FJf;(W*R-o?*6HFd)azcZc6MiS zYNiccWoB>X%uFj1kie%Aa6VTzQq8)f6R+bxx>uE1=vLWCA^%# zj{mNlD|=OEsOsEHEddGaLcsZ4-BdN}s`}9!`m4;l>fB2$0SW9v;QQwD(V14=)YCcK z_vl_n{oG3}0SW9v!1-L=)Lk>M%Hh71=dL>UQcFMryAarGK96~oze&5}$u3ro&PMi9 zS2^?yy*_iUvQj0aC-=1?0SSC20q1jdFJrRhYE@6?sPz4urP-CMtZ*;ZsjCxOmw*I5 zlfYi{`7;@MDhWtH0#6WdK0iU#ObJLp0@n#RpRY4CK>`wxz!LzaGikj`8q=rBp?9^JVC(u`~+1qB_II_TqodszRu7D z2}nQ!PY`fEKS9+@2}nQ!*9q)3pa1sPzx?=@U(Nc^`OB_cWy0FY)uA(uo^>*vYu(Ao zld!VR=PJ9XJD%YmPU`GsMJ)jdBmw7hHGc*xuCAvIo#edkqI0b~IXpw^bv{?KH+Qc* zbW&$ND{2WyAPIcme9mtim1$;a#*LXGAmD2uX3zQ;GG1V z&%F0)Zd|D!?d5r>J2{nyIUQZ)uuffNR-UR}|eU zu;Y9luRDKvgX`7d?0D#8epP4YQ4f2E=8mj%G<&IY7pC#d={%QHb+N9NfCQ3&^O;j9 z`HV_Vu&SPE*;{#7uex$yI;q#+(%I`S4^P5O*3}Y_KoZz-KId0(E>Wj*R5~8^R{pA9 z_0msGf2HZ~=qjgEXFmO`Q`19DPo?QsOF#l7;Cv>HN^`c*Q`IXE{nYeVn*NTiayoV9 z)6Y6JJ=FA6ntrteBtQbrXVR!NXA3=5Jw55n3cFGdKf9_*_8zTp7xuDFO%HXRaIAKE znWL7#I|(?SJNI7Ald8_lyJl48R2A-iPFLT>I(4;6o^Uujy;Y`l3A~5EUh{d}3txTp z($ka9bDsR$Sm)%v{EAGgDxI9lQ)O25^%sq<%EL2IbFZpSk6Ho}a6adp;a|mibvV<* z`9qz_tgLk>r}C_mb9Ln8FP*u{%5aVfyVmt|T9Lq;3G6tZ-+W(wy96Zg9s_x!&yw`nsS_w$tJp`Q3@40Kg zR00y%i-7Zaulw?}5|F@q2soeLbJu>U1SGH*0q65x_vL9NAc6M~a6Z51uKiL8NMJ7l z&gZ@E%hO6g0`DQ^dhpIq8{|j#wOQwl6$$X_`|^&lKrdRA$!{)4ZtU((Fnx z%?b(JNWl3#V9pn}V4I#<>4=%!F;CCzIwv|g>6w*|SR8D&FFbQ;no~^A6zN%1X4e$c zyr|^T>`F1s3JKgu;FITb=QHO^S(u;mbdvL6=ejbdQ(5eFZt2{ni@h?iWA1o5$(fUt z%*o2RuFSC_0TOUN4;r2Km7c7SZKcn3RcY(`Vy|;c>+QyBCTC@l(=m5ExkYw$Dw&g& z%t?+I)?<+l7>F__-)k#jzVy|;cxkXkoIV;&UD;;ykGXtl{u1;mPFGS`n z%q~fwNx=C$Ky}_%da}~Ney*#NoSxh(E1j@RMKh3k!5wmL{IyoKBVvD(yIdf?t7G1eCD>HCbQXKM3bBa##?3(7R z~2Jz2@*taQ45rsu8`cFvr8S&_hX0?y~b zu=57flaC=5da{zqS?P5BOwU~>?3_9GvLb=&1f0)B&kaXQk8i zGd*{muyf|z%Zdc96L3BchMhNt0Ovr3(vVNI$hH!*Q}(NIg6#~Ns(PvBygI5^Z5_x^2N={ADln_bFq}>S(#lO zF}u!*b6a$}re_{3D|2azg=a3MnC(-fXHm(nSxGT-7E9BUBD<_e;530P=JV;Vvrz&P zkifnKoX`8-ohO%o1iqVq^ZC2)*RPX+1okE1eBSr&Jh=oU@ZAKQ&)m(q7eF-?9_q{t$E&&OAHv#AKci*pHCjklUOThWO@7;NF z2}t0(2{@m>`+og82}odH0?y}s@6MA;Kmy-Q!1?^$_v_b5Kmz*`a6a#Qcb;4V68LTc z&gbvGU%yTQ64;l3^LgL9^W+kcz;_dHK7aT9`gIbJz`g{W&->n;CzpT(zMFva`MdAe zuakfT_9fta-uLc2xdbHe-2|M^-+jM+odhJXF9GNCzIW%zB_M(CCg6Pj?)&xYBp`u( z2{@nky*p1X0SSCJ0q65~->+XM0SW9&!1=uI-Fb2eNZ`8(IG?}!e*HQLNMK(A&gXsa z&XY?(0^d#G>G?eJ{gr?OBp`uv1pe!P{`>ZS=T2gm1SB8<36Q|;!`VOyNI(J-kbndv zAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnw zfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnYIe~xrr+@k9 zfBVmW{D+rg@be`g0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnw zfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz z0uqpb1SB8<2}s~}0{{LW|LQ*pNI(J-xJcmk;rt`;;*o5ZfCMBUfgc2(o6rC2|4Bds z5|F?t0^@(4oX@A=*(3o8NZ>&N&gTc=8Z7|{NZgVpC5#4v;-s|feQqj z&llj?Dgg;d;6Vb;=Lg{$EddEg-~s{X^96XeN#j`<~(CZ=P^nxw02~d4|;d#$3&uJac+7hh4eK3Y}}sed%PK z$*D(I)>&D5xUX6QKZk(xnViRK9Tn=ehi|;Z6|ZIhjn&F4j}i zxz?jMJ*;OwE2Ec{)N4=fZbbr56ZpRQJl@^l*3l$f`7^Dmtn1v1n)_A>>0v_Eb+6~> z89M$vVOFXf)~PdLRIYeBz16_^O@ZE2C0XqQ>mQXC3Pn`J)N9;Jx9;b@#hJ% zQsuBtoe86I#nb7n_O&j7a|E2vB`@!(?fk_uPTRiYVO54b>*q*Rd2`7-bzg-iZ;9dgGXY%A5taRn?)ajwVvR9SEIyLuVox1W=^{ThyXK$se9M-9i z=Fnf|RCV^MC2%i+9q03SDfv6d@ExsnCZs<-1Um~@>F&9swHqQ0q1kR>p?i{`9ib8-u_MX_ev*ssm_z0PEL94UVIxDFwPgTzZD-yViz>f1dznyP~noicKpY|}n(pS#I%qr(D5A&&+ zPu=m*U+F4`b?T!z^jA4moxN%a+)KduOrCs$)K@(0t@M?>m|5lA}7?1)~n?7&{?h0 z!yPMK`C0GmMgMxQOso9XCGZ@99q03NG)$I&1SIe|1f0*Ga~GaO0uqn_2{@lgLoERb zNZ@k_IG;b~ENfK7Y<#coGRnKmsJ-d?pRG1SBAV&mrJ^ z{+zq;BodH-1W3U7Od4tlNI(LgL%{j`Id|bnBp?9^kbv`>g(s1K1SCKL&S%n4OF#k=_#6Vx=g+wdPa**cNPq;K z&!nN2fCMD)IRu=~pK}+UL;@0!00}ssNkc6G2}s~`2socV=Po>n1SB8<5^z3~hFSs= zkih2bMC^ENI(J-AOYtyX{aS20SSB#0q67Q+=VBR zfCMB!0?udBP)k4p68Ibf&gaj$3r`{e2}pnhoX@18mVg8#@HqsW&!2M_o5O6+!&RuvC2}nQ!B;b4|4YdR$ zAc4;z;C%j^yYM6ukbne8!1+uXY6(a{0-r;``TRL|;YlPQ0SS=vL1Om?I>K3Y*R@K)z z>zP?)o~y6-s?KR$0uuN%0^c{ElW;ZV(#cBIRn^%`-SJnRyXriTS^^T-g@E(9x~ZeH z@n{bHNB27F=U!?FNMIKNd(G!Dm#W`2^J=D5U6sG8AI+h^%Dk)2z0?wrz%B%w&(%#G zosCCx=s&vGQ9t)mOF#m<5ZG}(lkIv^jaB}#cdgl#dfm&_(aTEe%x9(YS9SJwcF!Cu z5|F?r5O6+Mw~$kgm8vW2oe9b0)cwrt?d+cURwN*SPav?@d>+I&bEtEbgwx5@)Rn)g zXTqp-{FUdfdUZDI5|F?r6L3CPw{vth9?hZu=w3(t+)FJ13G6~($N4j^eiE6@6l zs;;VDrS<*8$zNu&o|-grbyS$9mVg94pMdkZx}$2QRrRAe>Cd@JPp+~uoUEi~npy%9 z_>4B=9r==kwEq&6j`#Byf&^^Z6V%yCfh12|P`}`TR6t z^Cchw37jL~d_Kp`E(u6L0#6gzYd-(&uYdXRFPX4DbpEm{SDCPOa&_oTqi3B==UR7i z@+7SAwAc4yTJEyW=PG-t)5FTp!%xiwYW8LqSJe{u90Jbg>J^VW;ws-YZ*c8dcQI$J zJ2`n0R`^BN_hMS^vd-r!d#TgI%Fx44%>-)pW*1l068Ibf-#4EtwtSUGJyma~-tkoD zVLfv?6($UwT^&z$Wu>3b9XmPc=~TE&o{b6A*=0onzlwnKndGZ?dZm7}m*=6*oKA%a zLuXgVlU-Tq=X1wSPI@{O?viI?0(Ev-k-)Da;Cv?e>YZMxAMNFNsF_1ud03~edMi)m zKU!x#bti`&>P}AOVGcF@Y6<*W0?udhuiojE`q5sVhnhLmm4|ies<-k~{-br~Q+IOc zq3+~V9_CQfua>~CC9vas9eD&geQ55OC*f-PnMP+nC!Ooe z^%>Z!mcY*^u;YAAO8J)4!wUVZSGw|7b>`4hY5FV8UV2!kriZ%nuufg|c0BB@bSLME zhx>MN=vPbN*Aj3(clcj<*X*tIU1wl^m05XMr)Cc8)Rl+zN_TRuc(`vThkmsLek}p# zbBF(xcRhMDAuH>XRDRZ}tF+3)IyG}xr>;D#SGtpP#lw9&IrOU~@M{S;pF8}oyz9}M z30Ya6r1G;)U8PkX)~T7pI(6k?z0#eWD<1CK$)R5@fnQ5tulYP!jaSCsWXM%&I$5V) zd$>9@d#Slvb!EM(FqxWu)>98>)<>n2Lr;~Ko^|D}^He$fI%=M(s?(#Ez|SY(e9m{x zTUf6SXL|VFsWX|CwO;SCJ_*loB_~gqY3W&4GJ&UEe;1Rh9HvocFDq&Zd;)*;Y`z2}Ac1oPoX_XD*(Cu9 zNZ@G#&gZ8In=b(gNZ=d+=kqykc1b`25_p=xUi10yzy1EF|48Xi4YNq+T920WRP}U@ z%G~--1wENi?X|A|=|(?_nQuh`68K~S&gbfO)-$l`%6c^|nNQ7xbMTK2}Ac0RN;C!xb=jd!annVB5y^i|1ms$c6*oDB3 z^Lb1s{;p|P)2!3QU8vW+TZYRIrLYV zch$LR!fV%hjr$ z&Qa<6IZLxES6Sg+tW#Gfv@QV&d?tat=JRJV^i&d%fCQc(;Cz09s+kgyfCR1+a6VsW zXo3VJAb}?cIG>-OYNiAvAc5-yoX^)8njirQNZ<(q&gUnnnkfMZNZ>jF=ks-jCP+X6 z5_p1u^Z5y?W=cQ;61Yyl`Fx$B2@;Ti1fC$^e13wenG%qI1g;a8(-9_hGcXD`!)a!h%W^e9ZdFZ6hd{)#FkU$dnzWJQrI4aewpuh55sUPj-d8j)% zm4`VUUFEP&U1e6Ds$S(-m%uv-IG=g%)!evJKibRlPF6qlb?Pd!@>KOI$GQaGNnpqMJYIMH@&?zd!`boB$^5F$%%dLm4$U1|>1g&+ z=Ppd+nbUbLr|M!|EddE60p~NPQ1Tg-oM2Tw)3UenuwHfLzI0NrzooO+T^^o9{Q>2uQdG~UFCG@%%`7qYI>;YsWkm+2}pnhoX@0DY0egUs(O0TnH6@W z9)5OJmFzuQ;V$fDothr%JmFaF^fE^+fp-#cK6mcDnkQAAnRm^o%&98e{hY48i*@R1 zmptKcc6zH!>k@bmfxYJQxEH?q>ZPYAo##CHx3SL2efbrcR#iGVm8Z(A>gz8WU6qGt zpypmxogTFWB;b6`Im5q-_3Ch@hx3OzlUZ5oPEO@nC+F(O$zM8im6hQf6?U!b>9it& zHxt-#KEL_C{B{XQ;5`JK&+oZwzf=Me*o%Pkd9VBOv=WfOdk8q6-*eY~sRSgj7Xjz< zUial`B_M(K5O6-f=dS%y2}ocs0?y~X?#t6kKmzX};Cz11UHhdHkicF9oX>mRm#3A0 z1l~iy`TU-{_DdxofxQSgpZB^iPb&clyoZ4E`8{{-mr6hadl7Ix?{#0ERss@u4*}=% zd+ypVm4F2HBH(=9>%Kg#1SIet0?z06+_hgS0SW9y!1=t_eR*05NZ>sLoX_vMYrj+i z64;A?^LelP^0X3=ze#|&t3ba5|F@N1f0)%-Iu48fCSz{!1?^1yY@>ZAc4IIIG^{rFHb80 z3A~5EC(q}<{q-;Z=fBQP&5(upoM(1*#N54Oo}SrtPIPk8Gbo*lb^T z=F&8$n4T%pv#89jDW-W*$)(wqVwx2axRHSKdBB`6ZoxJ^v(gbWxnrK5*>z5Ia?&#^ z9kDprY+rch(ln=-o+;9^sLZY@rg>4xrP-BYniUebk-#U<=gw!&m$EQF=jkNp!OnGM zPN%Zi>)g`0O&5D*V8`6?bdobCE18p(b6uHZMFJ$?d>%A9?<+l7A=^ry>#EY$^~GN2 zme$*i)lAOHBBx{Scyf#E>Qpi(E18oXD-t+L!1+9gb>3HcveMyyuB(%rp2c40mU4@% zWO7!rYgRhuj%Nl=kzJk2Y+s1XS(sgtK$C#;d4TG?uk>W4gZ*4rCpkU2S5`V*>B-7n z$#>;+PMCXTC3CWJt}An_NPq;K&x1zieWfQWWLxQTT~*q;o_l2_6FQ!AU7h5+Je?Ef zURlYUteor094ita0q66e(Rp9#$qLz4`dn9)wyx)1S;>Ts=Ui7O`7TfAgt=E%GAAqN zx-!R#1V~_u`8@ylQ}A0VJ-aHykNWg<#LSuIS?P$`wGf@0j%TsOT*{oev=ED~T$+^` zI4da*d8RoFb5?R`dZw5jg#>OS;Cvo1=R@m=$$y$>r6Xq7LUeLEp2Ze(DRbu1 zLM*y+X;x<7tfV;PndTIoaNS;?j8nPPer61b6o^LfCW53M66|7o6;j+k8w(aGs} z7F*1v%$Z9IvFOUBS($;elH!nOnp1R=XV)}mC6}gWis?~E;6?(UJfH9Sja$7gJI_lrY9?%8#&k2Nls5^uk>Ukle5z4`k9`)PS`nf z?qx*+*9kbE2gA-AOixxiH*&74lboK;Ug^n7CTFG7^)o$pov?G}+{=mtt`l%R4~CsL zn4YY3Zsc57CpkTxz0#AFOwLND>t}lII$`I`xtA3QTqods9t=BgFg;o6+{n4EPI7uW zd!;8UnVgkQ*U$9ab;8b>b1y3rxK7}c=kxr!`9K!pka_0Jt|{hHis_kRdS;~~W>-ga z0vDchTXednXYQVrxirPXGnZ1#_9@b{sASiyq?kF2rRhnLT~;J;nt=2959sp6&B`B~ zKmK#El;&BPT^%vI&WUqdbh@Tz9xN+!X^MqsE~S|5Q>156$*x&RF>@A6(~}~*tVrNA z0q64{(B+Gpl|MLt{O4jR&9gGQI%0O66X&+*bWP7ZSXSoJ6bsK>N-^7~NYA2@U9*y6 z<}8+`Cq;Hyk-%vJTg>OvUuUBPBp`u(2{@nky*p1X0SSCJ0q65~->+XM0SW9&!1=uI z-Fb2eNZ`8(IG?}!e*HQLNMK(A&gXsa&XY?(0^d!*`TX7Y>(@y@0{aqhKJR;Xo?HSF z_-+Eu=kLB>zfJ-Y*q4CwdEdM9`}ON2 zAc1`eIG^{uJ5MeF34AvJ=ks^puU{tt3G7S2`MmGld2$Iz;JXPppTGNl{W=LqU|#~x z=Y8+alS@DX-%Y^z{N4BK*GWJE`x0*JueyKmr#CIG-=TvsD5TkidfkoX-!!HCh4^kiZ23&gTp8Y?Xin zB=8^s=ktSbjh27}ByfR%^Z5ciTO}X?2|P%^`TQVUqa`2#30xrHe7*qBRtZQz0uK^! zK0gT8XbDI_0v8B4pD)0(RRR)_z=H&w&kw>iS^^S~zy$)%=L_&`m4E~!@E`%_^Mi1W zmVg8#aDjmH`2sv!B_II_JV;=#`TY0ae*f_=ab%qp>d~8(toJ>`$=^KTx^iVN_VNs= z`Hi`nIeF&vWDdJ>l@&VIn)}kpI+Ih6uB@}N_HbXd1bz+y=QBBv*E%ZHYY*Re)y0I= zRTt~I3oAS`>(oa*>vJ-hnq91?rgN=FZ+ckId{#y;E2-C>+}(-!l+#Fbb70OtxMn>0p~Nh@eNWB zPp48jxl8I!a(X&B_j-<=q2tdJW~ItuojMan<%*}%TkUII0_O-gpUI7Hu+o*kQ>Tae z%3f6t>(tzfb?VAf)vMl)pS_i?a#*K6nnQn;Q`On4mcYFPoX_ORH(2S)->K6>ePypI zhjnW1#X5E6sp?g4$IsqMS2?UxAI+h^%Bkw?RZHMr0z1y<@lx`4kl{O8>r6<0ddQ#t zPMsd=+$EFy9ww*m=bUqL$4&zMm9BC|eRNeGX420(b>*q*>{UzPUINbNeAk0;*7JpC zg}wco>hG0K?oyp6J)NBNWPW;%?nQs4a~D=d7c11v9CcPwSDvb#305R<7l9q;bACJD z4mF*uQ$OutexZ3XIS2EOJJ}0JidLr6#kM)^^UU6gwEDJ1I@7Ak=*?BuGoKZnCv#X~7d1U<3H%%a&gbe4vQEu=VV#7lb)rH4CKy7IH$*^B=5UYS<;txMoJ0z1y<=V+KL0SQRp za|k$}Kj$tyi3B7d0TOUNlZILX5|F^>5O6+!&RuvC2}nQ!B;b4|4YdR$Ac4;z;C%j^ zyYM6ukbne8!1+uXY6(a{0-r;``TRL|;YlPQ0SSe%eoV)NO5|DrdNWl3_8fpnhKmwmb!1??+ zci~ASAOQ)Gfb*F&)Dn<@1U`p=^Z9e`!jniq0umqr=QC-jB_II_d=3HU^XJ@!Cy{^z zBtQbrXVOqhKmro@90Jbg&$$avA^{0VfCQY+q@k981SIe|1f0*Ga~GaO0uqn_2{@lg zLoERbNZ@k_IG;b~ENfK7Y<#coGRnKmsJ-d?pRG1SBAV z&mrJ^{+zq;BodH-1W3U7Od4tlNI(LgL%{j`Id|bnBp?9^kbv`A{unPg_b9GZkXXDWv`j75))X%-t5|F?y1ooQGV=h&{Yv$EVtGX(G zRX>_Tf0cPxoqMSzAc0*7IG?MVIyxJV=Foq1ucLnMrIvsMb|J9id?wrVq#CRIW$#+E zEA_gUtD~2d)S1sp<*(}O?d+a8RwN*SPaxoYu5KZx94l2<);klD$*KF9+1uGY^Q}lg z0-r!&ulYQPapq9xDha2PtEnr0RnLS`>G&(pUG?g0)+Hc;PbT1eu5Rb(Y&@Dn|IxjU z`ni`{0utDTz>f2IupKihCskJH@88SQIXubHy^i|1ms$c6*oA=exw@&lW?+@WeJjsh zb?&8>fCP3SuntX7`&9aUXby-Mr*hm*g|WIZ)$WjI+$%`~+HB=GqJcAw9mPuLSmKmrmtN5J`fj+T{#suo@vLbyy7R%!ax68NpG)m`u{)06c~>wDO{?xHi# z!_}vAxckuDF;BwP^fQgleoi{qnd>vKS1o~`PhiLSoRsn{r-v2#S+8{Eujg{;gTj@^D6%Y6AATLr{3^5Zuujb! z)~PEG>y_^0T=8(c5>)fOW@ZMa6WhVUwPM~Hxsh5K1t8a}J9F@8Cp9*?1q1tO*|I>|r6f@t71SIgu1f0*+?W|{D z)s^*XS~8!S3Fqq7j!afdKmwmnV6XXH@yt1vm8!R@R|!@9Xb$~V=3RB}rIvsMb|K(= zu5Rk+Y&@Dn|IxjU`ni`{0utDTz_-rl!M~bgo!hB;t9q5$@mHR^>ebn-OF#mjOu+eE z-Okb3cr=IpqkA3ob1$_7B(MvC9q03yPW)ZduBKV1i@Q*-d%4=#oyn=0HguJly_GXF ztw=xupGLs>T-``D>yA#mj{oRhRc4h_eWP^=NZ^wR>^Ps3XEm?r?07ofB2$0SW9vV6XW+=2iYC?T#nASUEZy*-KsJ&@=S<%(==+ zm5`p?*NOxr@Rx2NI(Kl5O6*}LDftNNI(MD2{@mxGc-X05|F?X z1f0)LP&HEm5|F@k0?y~_3{8-L1SIeT0q64*RLzut1SD{sfb;n}LlYz*0SP=o!1??H zRWl_Z0SR0uu-AP4+h70k<6nL?>qF-+yK|eU;C$x2S99Y^{b(=GL*2=#Jk06nDu;FIDzoxb z^(x1@1l~!&`OJH-=Ejx!(O#a1x|36RnA6c!4(rraX632sRgQHDypzC=^Lf1P{N)X< zSBJCXp_BPlotZ~H>>ZjrveMD)rOsWL#xtk$Tu#-+x>^DfNCM7hPNC#8DmlTbdZuM> zdiNre7@q36OyEnKUZR*+NfMuRQcq(_d-&JG#p0)R|8|>(um6(^F~s z)e?{Z2{@lgqtcu$^i=iqq%$k*NeHZK0)h>C$;q3HQnbsxn9s+yK=W#E5_0>yHPdd+e@^53E zll$^3GOem~aw<=iS=HBHG`cDe&p^$+syaPt2}r>CoO6bM73_x!&yw`nsS_w$tJp`Q3@40KgR00y% zi-7Zaulw?}5|F@q2soeLbJu>U1SGH*0q65x_vL9NAc6M~a6Z51uKiL8NMJ7l&gZ@E z%hO6g0`DQJ$LPwN#fBWlS{?C7%o0=gD^EuD#>WH~}$2>i= z>zwH1q-Rz-VsWt9zVOVYX-+XcQ>156nO##%^P-YVvn$0kD0%KG#*Ht?P@u&MmFC8>^X|l|@d+-0|cV+106JPF6A}Jys-elz{Vj z5bM0J^kk*O|6ErmIX#QL&MoB@S;^$AWY?^8%pK1RoFcnAmD#=!nX@pvB!MOY=koy7 zd0*+tN(cM7u1<1#a<8m(y3&)CyOQt9>6|e4%1Y*B-!} z=enx2bv^gWN+xtX=ejz{cX>J|%)PRbIaxW^l{r=4=##&9l-G zvuhzbIUUbpi@B6Jb7>(KUAZ(XGjLW?9P&(aica$En&zzJ()3I*JqiijNWl3#V9tlu z5tIKk&q_zku7&92bUceK=2GU&rG;2@<+I)Z!kSs>F__-)k#iIXRq{RC6lw#>H3+TyH40SbM9qD0@n#Rp9jOv8%$4DIyZ8z ztCO6b&R*%sN+xHe)Achwcb%|v=G@DQ1g;ZsJ`aYSH<+HRbZ+EaS0_0=oxReNl}ye` zr|V~W?mA)T%(<5p30x=Od>#xtZ!kSs>DUVi<^}{IDh=-VkynDGP^orcAXRFw&-+C&pcRG=F$`k&s<6| z+owp+qLN*+l49m8mZm2~c3F|YX#&pYKcLGOH!FW|{`k+uQkrLFc6G$;Iw#I;(dn9= zd9bX^r70Gkxs+nIPm!KQCA(%N#mreOO;3vKvLb=g1h$yZr@zid2}nQ!`x0;C$Zq?mW2!B=Fq?oX_8VzkZzrB(N_5=kvaI=gB1?f$t{ZeE#nH z_3I=cfqe-$pZC2xPc8uod^Z8-^LO8`Unc`TD;yzkw4atTP_y9qd-zx#guItfT% zUjokOeecebOF#nOO~Cp5-S_L)Nk9Vo5^z56dv~5(0uuOc0?y~}zF)si0utDlfb)6Z zyYu7{kid5na6W(c{rYthkifnKoX`8-ohO%o1iqVq^ZC2)*RPX+1okE1eBSr&Jh=oU z@ZAKQ&)m(q7eF-?9_q{t$E&&OAH-V?; z^T_vC0uqpb1kMroumAb)+y9+AiCq$qfCMB!0=Exm10^5<2}nQ!5|DrdBp?9^NI(J- zkbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(T zKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NZ{oJ{^_6o<)8oUKmYL`UXH=f zmw*H$AOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(T zKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU zf!hiE`+xka|0Ey*2}s}~f!l}kkHCvZvRwiakbne!5O{7r|F8ci0SQPz0;dR!|9Nsg zpMqzT1SBAV2MIWzAB1bP1SBAV3k00c7vR|{0SQRpK?2U_2jLnm0SQRp0s-gq1$eef zKmrnYkbv{~LAXXsKmroDK*0HY0iLZAkbndpB;b605U$Y@kbnd(5O6+UfM=@&Bp`tY z2{@l0gln_}Bp`tc1f0(o;Mpnx2}s~U0?y|L;TkOg2}s}q0q64tc(zJF0up$Tz+UtD z|NDRcpCA7c2kS#uzoVCarm?P(}j%3(bd zSYg^)vx_>rxJpeY>qF-%D??XKrm-vi=W>{--i3hknK#9^!1qF(ey%cM?d0mv>zs9R zrd5^PC6g-;oz&G{cYRmqJnJ)5C#k-o+L61YCs$eF8Cd^0Iowgb3xVC|bH1;vPZL*h@X~I~AVfy5^45RdVHFox1ui=BIz%ML%^XlOFXa z6L3EBcB;SgyF68Xr{3}KoR#k6R32tt@vxVAo`DlK}-|_GamG0zJ9%f$gu(#4j_oDx(?wo;{^jCFysOhJ! zJe_*S!@bnI5O6;8rmDa5yF68Xr{3}KoR#k6R32tt@vyhjNB5%tsP3GBne>0v^p*+or1>(u8w>>7GxQgaus_C2{vRq5>(uO}zT#mob(LRv=Q2rT4|}P3&U5wbVuhM}sdp#feC7@E@0^+*>W-)5@8k?mI&AnKsrst^cAjLm37*Bb>wtB>10=> zc}{BjS*Kom)~h3jo}rnao~*EoX_-^?vP=ER1ooQGpG?xTNk9S;xR-$Q`Cgu;Nk9S; zxQl@E`7V;?NI(J-xR-$Q`Cgu;Nk9S;xQl@E`7V;?NI(J-xR-$Q`Cgu;Nk9S;xQl@E z`7V;?NI(J-xR-$Q`Cgu;Nk9S;xQl@E`7V;?NI(J-xR-$Q`Cgu;Nk9S;xQl@E`7V;? zNI(J-xR-$Q`Cgu;Nk9S;xQl@E`7V;?NI(J-xR-$Q`Cgu;Nk9S;xQoD!^ZD<;{r;!_ z29vRre6pS)*|pB(D$_EDtJF-Wy69mqb@pDV{OzxQ`O|+Rb1Y>(>(q3zK6LfVz3%ex zB+O?$_gb&gPiIH7cW8EHg{wnnLZ_>r!?bFz^i=uxo;i25)HZ^^ybm8-1K+0pDBnq67p>d=|c>FVb& zt=cO+RsOwa&RxE*ve$g>%%b#Uh4;8#9nLGByLvl0{H}AFZ>>tGJgieQhjnUtsGs&Q zpSn6j<)Oc$s~py;JDKzx?d|xlc-TvQ<;?8;R_%Q5%)Kj~yLvl0*Z)eZx5MPh!#Z`< zTX`x!>(p0r*h^jIS04I1y2@dlx|2!I(cX^#iif?_SI*4dZ`I#DpF1<{Y0s5>_EJCh z*I2zB?pS$Pr>=S{PvvKw`brLasjK|TLw`qCIjmE6GU++m+wouVu$TJEnc4fT+WFj> zdsjSn^>%Wu|CLs6hsl+Pb?U0O@>G7-sjuX)m%7TYJoI;TmBTu9CzGC|y&eA*4|}Pv zoSD7fs=swUk7>r=>IOS=?~142%hOVilXr5eZ|v8rx5I?tseXsET4g>p^Qrru+;N>l zKhK<9JOjI^tFE<&U3mufQdeD-hjnV^j5;f+*-K3)>#2ux)Y-MJr}I4(=W}Q7UGemL zhckc2Ut=fd`rmE!c9@*+j+NnLB{e-vPCa_F&PwKIS5;x1dgPA^>#R^;KM!}L<}N(R zddKx@=46El{qy8$Sz%6(-PS4x4^SLwku6XY1?c`kl>+QUe z%ELM}PsKVlJ=9Nlm|1C_ftr5SkLoIib!z6bPEF5I-O0J)VJ|h$S=H%zn|3~T=H3<0 zUA>*0>wmqSH&S_6r{<|xr>2McUQed6Ld`Q!cRci0y2@dlnmMdf({ogJa;|vTOU-ju zb$Z^WozI=Qcg1s8Zzt#aUvKA)R36r;c`DYa>7l;YlWD9_^9*t|2aKgO8$-=t9O+3 zDq)?&@5)TBGAH+9FEtag-pN^en7`JULw~N03Oz&jo!QHTYL%YOUg=?Su8s;l>OsKy z%<0O%3f5Dvom?F{6Gny3^yDfl&*}9Gs$NspGlyqRKUatDdvY)KQgfHAcXHMq=C5_; z(4VWLLeJ2BXZA9oTBWD6S9+M7tD{1XdJx!gK6`f(kbnf9A91a>6geBSZaJhKEO z@CE|T=QrH4-zWhI>`1`*yyLBTW(i2(4FsIeZ@6W@Q34X!k%04g$6NEv5|F?f2soeL zaLaz91SGH{0q66Mx8|88Ab~d!a6Z4`miWl*&pY0lXO@5j-ax?l{Dxch8zmrt9SJy}cf2*vECC6;fq?V*4Y%w!NA%5$EahEfJwviqA$+-0Ln6Pr`iGbFcL({d9ITdxvIMR=7HJCUm;` zIZUheN>7!4@0oL#@2fbUJ5z3Ws@rEm}y2@dlx|2!I(cX^#iif?_ zSI*4dZ`ID{&fL4=xvRI6bN#QhdOJ+6Jgie!y_Ki(vrc^_hrQHQe&wORqpKX&sXLkU z9PRD+uXxx?edWyT{Z{?m^SLwAp7vbHXD{`0e~s1K;f|Gub?U0O@>G7-sjuX)m%7TY zJoI;TmBTu9CzGC|y&eA*4|}PvoSD7fs-4fBxp&2LS8pfh`d?}Fc9>jwSf{RfD^KNT zo%%`+d#S7Z%0qugS2?UxcQWZY+S~D8@vxWr%9+{wt@>N%^O$D*t!}V0_pW&Qy*w@T zIC&?h`o?~}dOJ)Qp6Yivt5xPxGoQNe$sN}@^z+Qw#WS#ry6Rec*p+8sFLl*bd03}r z&Zx7Jn!VI?vYvW4N1a{kdOF`zaXxqE-W5;3cR2HR{55uRuK(RuZ->eG?pPU4R#MZ$ z#Sscc2yPDsYm{(u+9qg_49B?YVN|5tan_mW=>X^&_7R}mKEky`B{H+L)zRtTfL+O+V{Lb(O<9HS<}grst^c zh!!#JD)pq?~3QH-cHW-zuwLpsXVMx^Hi);(?k7)hnbb;8K~)J{iv>T zSf^$_>(uld)t#Ix9`;i6oK>Bkw`u2dXYO6`+|}F3x&GJNc_WpFb!wi9b!vL3@AYIF zE7Uv#b;m=0rK=p)shPt%H9bdlC+CWXz0^EsRj21|+WFj>dsjSn^>%Wu|Mhm>NabOj znx|r&njY$VJ(3N&pYd(+L8Ivl1 zJFC3kDq)?Ib8?-tPCI%Y`k&L|rR49}v3f^YuM*Zd{I1O8Dsyr#_EIw;>z$mnhxu!r zIrQi1sL(TX-G^mBFSz9;u$FEw|`dM9V?Vg6cY4*j`0D)bE9cV;gWs#SVAd!>iTxjHKJ zs0V=^=d*Vw0SQRp4FsIeZ@6W@Q34X!k%04g$6NEv5|F?f2soeLaLaz91SGH{0q66M zx8|88Ab~d!a6Z4`miWl*&pY0lXO@5j z-ax?l{Dxch8zmrt9SJy}cf2*vECC6;fq?V*4Y%w!Ny|L;D3N9L$!KI_zUvOaY6 z%f0UM@FdJ&C?#!a}WQF&*ULDRWp1XQGIsC43ns2R2s64DwGlz9* zdZ?fFFrT_QL*=2rqpKX&sXLkU9PRD+uXxx?edWyT{Z{RK?##U_p1XQGIoJP6tGC1C z%ELN!)mwQgKkL+2a@b2<?P<@I zeD+d5_t#jx9qw3pSf{RfD^KNTo%%`+d#S7Z%0qugS2?UxcQWZY+S~D8@vxWr%9+{w zt=jqAnR{0}clCC1uK$%*Z->d1hjr?zxAIhe)~T=Lu$Q{ZuRQd3bd|$8btjXaqrDyf z6%TuScLK96a}-|7ZCbMK0$-^&z??~aw>WF<8{Oin#|v(8H9XIE8WoqFVt3hS&;Uq26b zq~$$H22YUX5x3H|frX<1=Tm7n!DSH5*V=bcvbt*SHOis!E0P7cp}PWRtw=ChZY zPS&aEp?<={%u4eN)bz7{R988yQ!}4+YI=_9PRh0uQ z|Lg6%k;=n5HBZGlH9gc%c$isfo`ITv){p8chjnV^vrbLVQQgV8;$bf}&so*!d7E}V zcjn#|&t1Kpoa=wRoi|c>Sf}QxSf{3k`d&|_u|mx=PZloGTvoQuCZuou0Spz2@_{oiVBMx3kLotrFHbIVaaS>$Iciq5nBOUP}Is z9jkYg^(tYV!|%#Wt}-Y0VlOolvfjyAdzio0nL~fBjtV_P_nq0xgld(Z&R*$Za;}aF zJ?cTg`ON9czY5k zbS8AV`Z-Li_DWBcfA5)dm+z}MpF2}-c&giHLgh>koz&cg^(uiL_FmD|OB|VekKBcI z>b0k{*Igc-r23ZJi(R?O3Y{Iz-l5r*6|N4Q37xKf4%4c=(o^N%d*($}B;<>B0lf&;ir}@^Zgv!G@HFH>}ric1z5A&(3GgKb>JG#nYow}1r&(YqF z|B8pb)K|{T-fz{;=g!=_;<>B0lXLyAw0b*Ct~{($SG|>|^0Q8TC5OG#Ret56zoV-h z)~P$0^c?N&_^)`_OMT_c?EO~#-SfFK)1LNR$!9P1bAOH1+u@Fthjr?zxAIhe)~T=L zu$Q{ZuRQd3bd|$8btjXaqrDyf6%TuRL@ow;|#b60OC=lWl1^>&zCd03~e zdMi)mXPx>=4tuGq{K`XrM^`zlQ+G1yIojLtU-7V)`pTKv`>pz0=ku6m{H<=VGxx4| z`n^0Y^*DJar~1Zzy?Q%L7@q2PIIC6WQ!}5s@5vq4IrQ_)*~K%ki@NGsd)Sp{U@vvm zRe4yaX3nUylA68Lbh4g$I7gjb>v}rhQ*l0b=H3-gzjrwEclNzju6XY1?d0&x=XC#_W13Un9_lAN%&aueKutgEM|G9MIyLiI zr>5tq?&MtYu$P+Wtm^cu|3Q}a};Q`1BJgol}x<{7Bz zXZ@(Ia#*KkKI_!<9MzqiD<1Yz^PE+kp0{b|b7$^d@!Zwh$+`a5+j%3EhjnV6igjvw zsPFY;8Y|R119itkf2FG&)~T7pIyF5Zs5&bl;i1OsH1r>FkvrCgzo6Wl*&pY0lXO@5j-ax?l{Dxch z86_Zr9SJy}cf2*vECC6;fq?V*4Y%wwNlOoMWWn#{y zqcUkfJPHXskAU;}r#n4H!9*M_hv%rINY7E}h$HYYAC(k$d5+{GFva0Xk>;Z^G3U}z znY14sg#?~QV2k;DJNEqEv(nkL)0LjAd~UBy{?&HxoTuZ-C$%Dh-3d6K#|>Va0G+P% zWTo>Kb-M2IzZfMbu1ks4`xLI4<_Jz9+!J<0vuf(alA!` z`KWZn(bW-?z@vTQ$)!%$HP58$SUN-=%!&jaOkj)oe2V|IZ~1dwnVgl*19rOZ^5l8$ zO3s{Xl{}#p2|SO0^LgB9PKnN4ce>J(mCx;!$-mm}d7e%spUa8_o=3p>Jnl4SLg%hK zUFpfn=l06vUv2k1Pp6X4WkmwdBj9`-d%&{VY zy$Cp;$9+wP!{kCcUFpfnWQ${|({-2U*z^#0C1=i2ImEH)AtpO6R@mblv62^W2r3IY;FX*LKe?D-zh9z!vlQ_;M#AFJfXomcGz6*&>%ZmE-U! zvOPVM%Bl7=AC+rc9PKHNz+AE-fd>=qJ`fCMfOa6VsvW{U(QAb~Fsa6W$lvRg<%0us1D!1;Uunk^ELfCRok z!1??I$ZjD42}s}q0q64tXtqc|0uuNF0q64+k>WzTj`)8?98 z)Y-*VYC2gTI#*d4x^gm&UFpA;!%X!q1f0*jDSiw5UZ~U0RVK`xTpfCzGf&R6s*<~8 za^<0uy4vfm=jxnieunBK)l*bEa+mbvDl0q#>)*-Yj_O?q>^`6K`^rk*MdhjLOjz+$ zy`6f;!*f=;lT&$^x#D3j^~mp3c#?I^9jUA2%ELN!^<2zP|GbNS>P{v->R*|F^O?6( zz2|p%s{Bs9KXoUQ9`&zG zVBh(?@=kuDm$!U2zvJ(Cc!o-Maw-oqS3K;k^x3`WKdU=uU?%-logQlXsVh&X-tllR z^)3XQ&%CMXJ-^FS<#*~G56@ZYPEO@v=8A{Cl|H){{bzOO49ujzs?$SFKXv8l)H@#T zrQU_Wj`MlEjr=8T)~P$5;h#IXIy8651p2GhtTU6lWLoyplbXrYbh1u;&BLytMVWxT)0?uc?$@6a^SNU}?r@H-l0=qIT zd(*>&O0$cae%7h4dDu1d$fV{jTum#Wg)tLo)>(!-PIE?k}Way7e{T%9L9%vA3} zV8{8KZ21mTr*l*)59`!tbI$tD?nOU!wJ+g}{&{JvpE6rYdSf{3kdd0(D>MFnT(BILWoD~my zsd=`QI(sY4z0|uCa6a<}&%X2YGpEv(zp685c+!~_cBQWTtW#&gsH}L{OU=Dlr>5tu z?&Pd^*h|fGUaMypE7aUey*mNtGjEXZIW;}h9Z$#K$r+w>W`#SZuKcW1XTqqgc-TwL zy;!HF=dAAJta#W<&2wI>XBR8f+)KSXfgR`bcpLf4TVOr)+{x9UGhtNdyyjs-XRq9s zU71!@uAP=$+?RD~?#}wq^VPm5olLHDo+opzdAMUIVffRTIjpdY^~@O+denOna6a>` z&b#9(HJz+e&plinn!VIqt-7*aRhUdoKkKQ7GwZC()8?xqr{hT{yDH6dQq#{m_1rUG z9Xa$2&HVIagR*|_Ui0}^Ch6HEAOQ*7OThVjFHh4XAOQ*7MZo!d7fEv@ zAOQ*7OThVjFHh4XAOQ*7MZo!d7fEv@AOQ*7OThVjFHh4XAOQ*7MZo!d7fEv@AOQ*7 zOThVjFHh4XAOQ*7MZo!d7fEv@AOQ*7OThVjFHh4XAOQ*7MZo!d7fEv@AOQ*7OThVj zFHh4XAOQ*7MZo!d7fEv@AOQ*7OThVjFHh4XAOQ*7MPSGI{M+w;{OR9dGM180)-xo# z=9ye&TIO(-nh8}GJ?y2<-j&K<|MCxi`ZqGiQs%QxO(*L^SHIlrE)P$_eAaWX`6~T% zb~Jm3W>;3YI&>y5;oX?#pH$2ttGof;(hfZql!g`fJ4|`X1 z^(Br>evjORb?UjNv)5f7o}_w~+>2eg$_kww&EBEel@+cIoe7<;eh$;Bz0y}1UG-L;%FjCWN)CIe ztNhACe@9n2tW$R~={eim@vnH;OTBVt_C8fVdp>t&+NV7$`Rt|s+}l`vJKVAIuufg| zR-VewI`v8pd#S7Z%0qugS2?UxcQWZY+uQN4c-Tw5a%T2ERXd+Mb8p3SS8pe0{VlD& z9VS;E)~T!B%2WASr(VfnFLjk)dFb!xDu;FIP9{BPdprIW4|}Os&dlDY>Zi`1Q>Z+^quujdKQD-GJd#UMUJ@s&oI=klebiSwJeD2J>6;Ho+IP-VBjh&qJ_qO_W zn4I4oE5pf3YI>NQdh}+UmCVnss=_+;$R8EfS)pD(4|k;IE=WW{g+?jhTp1XQGIqPq4=NqX!tW)z;tW(oN{Rs~< zE6p=d)6e=@UFEP&&3x9W={c)AIV&FaQuCZuou0R8=W}Q7t$6P0?c}V#y`68Q@~}?L zQ?X7>5B0sCOk;(bXQ1wQ=&y8@!#Xu{Sf{4vtnTEjc-TwLb5?bF-lm<;ow>K-xvRI6 zv;OvWzLCnqIyFzlIyF7i_j)po6>6S=y5ph0(p3)Y)XZU>nx3<|le6MsFE!6u)#-Vg z-fKRO+ZmH8e>&&4)S4V}Oq5ID4WkR(|PiL?6FgaI8g&y@F;C$wEbaAvLubOM z(3zfGW#w~v{smQEQ`R$wXHGv?hwgiFFZNP%m#lYk<{swHb>`5YtD{2C(0yn2GND?f zr?Xdjn4GJlLXUb7*l|94cM_0*1l~Zv`TT}k_8BE0fgK4rpLe`9&ny86yn%r8`3<-1 zGfF@LI}&g{?|5sTSppJx0|Dpr8*bTWlz;?wB;b7B@zy-E1SIeV0?y|*+_KLo0SW9# z!1=u6t$Ah%NZ<_woX>B#WuH+364;S|^LfWx^UM;Ez#9lSpWkrHKBELAupzu}gBMhQq@M*`009dFGuOF#l|AmDs{!!7%a5|F@-1f0)1-kN8YfCSz^ z!1?@!TlN_xAb}kTIG=aCHP0*o3A}-T^Z5<8>@!M00y`3LKJR#Io>>ACcmo0F^BZp2 zXOw^hb|kRleE#kCKmPP@@E=Qg7g^7c?3!nCm1&v7Rca^(d-?XU0LDk(3#Nb>gO=6+ABR({=H|;U7lBQ zK6j?v@Km?Ygvyy7I;pt}>s10h>|N2-mpC%{J#rV;spp=~UUzwTlImG7!4@0oL#=T-Ka&z)J6o~-a5=c~iH;<>B0lf&n_runT^ z36+O+YUZ#`O%L^_J=S{PvvKwdL@Uw)Kz}vp}(W69M-8j zne?3P?f6$b?4@2gGkc$^pE{q%G~;h|gPpmz;_3JDwAAC|ot)|!`}OMEVZ!iKzr$Ir zGM}3H)O}CxIM1PF=+v?k4a(;KL3@0n8>0xr}(VKNvGC#Yj3hUG(e^gj! zg?jxw+>x5Q@Fepc=c}2M6(;o0lc!~cIaPkv-&}d>e9k+q=37-~!iwjv-cAnBd`K#xGf>md`dMA&uujc<)~V?^t2;R>9`;i6oK>Bkw`u2dXYQ?d z?&|I2tiQdTZ=~|DPR&!XPE8N>Cp^roG|xayKkH|8mBTtU^I4~+=dAAJta#W<&2v_D zdfuj;&z-rq;<>B0le7NzcD|9y!#Xuj#X2=T)c1NajTLI1fx6?NztU9>>(tC)otmDr zx|6fwVJ|h$S=H%zn|3~T=H80uuHH`0`rF(2Mk){M)I1gI)bvo_>&Y}$sCfqJj)(qA zS2?UxGlz9*dd})j&WeY<)I4WZr{`^YulYP~XH2U6?X2>CtAu$@&dGVsJnigx=>MD^ zUrPRt9joss>s7)$htHLnTxCw~#a?PAWWAF!_b`91Gl%|M9Tj?p?mM%W3Dqh+oxRe- z~JKmaSmVgA_K*0I@hFkU-B_M$v2{@m3yfx1(0SUZ; zfb;ncx9l@YKmt1wa6a#NYo1vG5_kgv=kptG*=Ll11a>6geBSZaJhKEO@CE|T=QrH4 z&nN*2>`1`*yyLBTW(i2(4FsIeZ@6WjQ34X!k-(1g`M2Ny_|w0^e=Ox)WIaQ&Yo5tf zrezLSshLo9(ZgQq>|LphfA2njN9L$!KI_zUvOaY6%f0UM@FdJhIp z$X!^co_jib-R0p)s%Oc)*p;iS(Am-K9hzNP;p)(t(CO;uFs<4vJyrg_XU<)oSJ`Vm zcVK-xvRI6v;LM=-wu;259`!bZ{?}{tW&S#u$Q{ZuRQd3 zbd|$8btjXav%MYviif?_D`#f!Q}wgwb7!V~+Ov|+Uh2=ijn%iq9V-v()Kzcgsr;-{ zujH_oy2`IS^mlZX!#Z^*lb*A^9si1lz0@mbX75wA^SLwkRy=q0c5>F=((2n`a^+#2 zy6UYwm7jI$l^pg`SNWBP{*JD4Sf}n}(sQ=A<6rTxmwM&Q?0u?!>Ud}`)X_dU7eJcoXsIlFiUc2QSda}T@n4D6+@ zx+)Lr)XW)mR#LNh<$*M{4fElgxLVuVzkGn9x5@o|YBnRQXwd zbLFY?Iq$TZZ&jTME1tW0J2^b_HQoPCGoQWGbh1uO5A`QJ%&aueKutgEXLXgsIyLiI zr>5tu?&Pd^*h|fGR&{#brk&57xwqoEtGAQ0{`Pjhk;=n5HBZGlH9gdy@G!H|JOefT zte@3Y4(rs+XPug!v$~VB;$bf}&so*!d7E}Vcjn%T=dRvP&idQi`9>-a>(o3I>(um6 z-|NXVR;YOf>W+v0N>@3oQ!|HkYI@Gdn=y1dOJDmZ*S)t zsXVMx^Hi);(?fl)C(~G=<{79v9{MX?<*-i89M-AnIjcK4D<1Yz^PE+kp10|}=JU9n zF{$#mv&#Fe66QHMC+9iyw6o`-|8shLDfv5gtiGeHR|)eRK38UPl{vW=d#Ra_^-j** z!~D6<9Qt#0ROlJH@628%RIBuK_DTB&`A zKBwnjQ1vxsJ#%>G^mBFSz9;u$FEw|`dM9V@Vg6ia4*j`0D)bE9cV;gWs#SVAd!>iT zxjHKJs0V=^=d*Vw0SQRp4FsIeZ@6WjQ34X!k%04g$6NEv5|F?f2soeLaLYcU1SGH{ z0q66Mx8|88Ab~d!a6Z4`mVHJENMJ_-&gUI(%`;0t0&gJTe15|%`-~Ehz>Wl*&pY0l zXO@5j-ax?l{Dxch86_Zr9SJy}cf2*vECC6;fq?V*4Y%wwNmdCv}&*PRQdOwId^$pWv}_%nMLWz3h!~gI-Dz>yLvl0e6DMn-&&PWd03}r z4(rtPP=DIPeCp~9m52V0u5wtX?qt$)wzuP7@vxVA<;?7Ts&+ni=H80uuHH`0`deCk zJ4~)TtW#ILm8bHvPQ8-DUg|2p^3dPWRSxUaolJVp_ICU$9`;hNoSD5()z6;KotgG& z&q_XfsXzBNR^JYHtURn!SG|>|^0Q98lEYr=D!=m3-_cbL>(rf0dd~KC{3{;zQm>qu zy-(H7=g!<)@!Zwh$yt9(t8a(Nm4|ies<-k~e%7g1a@b2<XkFI_o@1+^Lb1&{#G~GnR_dqelJf;Jx<=qsh+W4uf8273{UktoYgAxshLmR z_vDWA9Qt|Y?BW^NMO}5xJ?zReu$Q{(sywVyGiTIUNzGnrI$2LWoTJXJc|D!)sW_iI zb8p4d?;Xzk9dBbNXZ^jcz8xm#cgM_b_*U!Tp zsksYJGT(8&nmJivLjOE@T2`1-Q2szhrQH1XH}=?ZQA+V znR_dqyLvl0>u+!88>u|3Q}a};Q`19zuP4)3q2?K=J0AKgUFEP&%^cRL={c)AIV&Fa zQuCZuou0R8=W}Q7t$6P0?c}V#y`68Q@~}?LQ?X7>5B0sCOk;(bXQ1wQ=&y8@!#Xu{ zSf{4vtnTEjc-TwLb5?bF-lq4O&*OH+q{`pUD(|;SnCIl2oafBb&Yp+<&*|}{Nl^!PN>Zs789t3ur&)%H`Bp`t|5O6-f;g)?y2}oc^ z0?y|hZ_P7HKmuB#WuH+364;S|^LfWx^UM;Ez#9lSpWkrH zKBELAupzu}gBMhQq@M*`009dFGuOF#l|AmDs{!!7%a5|F@- z1f0)1-kN8YfCSz^!1?@!TlN_xAb}kTIG=aCHP0*o3A}-T^Z5<8>@!M00y`3LKJR#I zo>>ACcmsi7c|QO3FaOa0J1(o!a+p(`YCp`Gb5zoER61gkb1WU=2s|n&I-aBJFsC>? zDbjpYCgxl^DwFoZqmaP!2sodAy3=D6OvKT0c#cYn^c;%GTMMnzK7|zt>_x!&JnpMACGuuFUFpe6CTFG7b(iOxyMOM?`4m_t=@5A^D-w7x0q66$+-noy z=<0~$Ejr9cr6Z26j+g`NE{I7k>pX5fg?^UPkE>E84uH?))Du=kXdv;lo!0rULn9s+TI}v#i6Z5h3g|5jK zxzwo~hfk61>6uhcwWs;0T-)MkPjLk1k`)O&n1J*7r^`J?!9@Jj^5Z|RnKP$TxwhA& z>sZR&kEIl8J}PNGDu?F~lciIh!>o|NV+c5(f4a(JTuj7IEkFMAnmKbim1}!Vx{jsX z{a8wo=A)A4qjGo-Fx5|F?b2sod=0NE`h zAOQ(nAmDty0L>N&NI(K#AmDud0%W(4fCMCPfq?V*0yJABAOQ({fq?V*3y|GH0uqqG z1p?0J3(#zlfCMD)1p?0JFF34DQo^Z5&q-9iEqkiZ23&gTozY>|KjB=7|S zpPtVn-(LwxKmroDM&Q5y_kV8xyLJ-0Bp?9^NPq-xAI=6!KmrnwfCMBU0SQPz0uqpb z1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ! z5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqqG%L)ALZ~yu)|NdWp|93CP z;Nwd`0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb z1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ! z5|F^{1pebc|II%MNI(J-SR`=!aQ+dvcqH2;AOQ(T;0J-v&FBB~e-e;@1SD{Y!1%u> z=kq0aHc3DN68Ini=ko{Q8Z7|{NMM10^LYWDtrC!c1U^W>`TRk+MoT~f5?CPMd|rTO zs{|w$iS5|DrdK1jg%{6V-zOF#k=SRmkhUVvw-1SBAV4-(jG zKL7JS{o{|n#KHQ|)$iz~pJ}Ym6PS}uW>(I#9-fW8Rh=H{JZ&aa9y+O+pE}d%sd8A) z1Xh?f*X*LsF0NA3$@R41vPqS}$Wq$gKd;Tc%}P7Zfe??Pbr`JCTZR`Md6>E4VQ;0+?nVDu-8lm@>96YaP}5Ic zc{=ruhkL1aA>e%GO;zvtU7jkxQ}1|q&PsQ3Di1SPJnXIX*}dpLt2<|4CjC{N9%}lj zD^I81@o+EoE(CU*&*N?6FKM$*-SG_n+{x9Uxl1O{U#(`HncOAQvX`FJOs1xjb?R## zb`3o;sksYR`<~pTs&w|MdU>Ao@Z`A*SLeN4%`PTa=SdGU)w>XIKJ!hUe+#+FuY)<& z?avd~m1)_V9wtb#e$*~R4Q zJn3PkdKUsa&gW#ycbGbzqf&WTr#_o=)_-;{`l+jZS+D%8Q?r+P#lv3eD!=m3-_f0% z6%Tu(NBIuk}^#lv1| z?!`JaJ!f?%XT`%_YM%32J-b+;=3eUE2{@m5gM81a>7nj;I{r@1@T4;<+%a|KXPr6| zMrFmrUTW^eIyF6Kbth-V!(M8h^IAQ-SfS=#>fH(KIG@Mc$Y0(9>#65Xt`40EqeAC3 z4--0j<-Y97w5oFLwCv)(tW$G$)`y<2_C4uja;5V;nRCs<9XkobpU%u-g94 z&gZ*Gnj--TNZ?)q&gXl1nkE4WNZ>94&gZ*Gnj--TNZ?)q&gXl1nkE4WNZ>94&gZ*G znj--TNZ?)q&gXl1nkE4WNZ>94&gZ*Gnj--TNZ?)q&gXl1nkE4WNZ>94&gZ*Gnj--T zNZ?)q&gXl1nkE4WNZ>94&gZ*Gnj--TNZ?)q&gXl1nkE4WNZ>94JI?3de*fc7{|1w> zlzg(DA=x$08G=!**i45vclD&GojPf&tY1%S9+@ad(WJ^Jg?$>?o7GiscxSMl`}nbQgav9 zs|0%3yP~Tvab)s)Zj-SBG=Ob60OChtG9Q^INMDDi7<_%we6H9_mkfm``1u zq4Ln*(NzxX)SXOv&h~cvD<1Yzubi2^Pu0%n&fHt^+|}F3S$|8bZ->d1hjr?zxAIhe z)~Q!=*h^jIS04I1y2@dlx|2!I+1`$S#lv3el{2&VsruRTxiix~?ODlZFZJi%#_HSQ zj+KXX>Z-T$RDRZ}S8~`(UFBCE`a8PHVV$~@Nzd8dj(^3&Uh0)Iv-hdm`P`X%E1tW0 zJ2~rbY4z}1UG-L;%FjCWN)CIetNhACe@9n2tW$R~={eim@vnH;OTBVt_C8fV zbv}=2#^34&J9BTv)9>YJsmIAXIn^`v>(#fzgyE@vhqGE`J~i{H`<~o!o%VK zpr)Vov%1P*otpWqQ`2)+cXC!d?4{;8t2#Yz)6VD4+*|S7)!WHge|tOMNabOjnx|r& znjY#;c$isfo`ITv*3arHhjnV^vrbLVS>4H5@vxVg=d9}VyiGfwJ9BTvb60OCXZ`K% zd?S^Ib!wi9b!vL3@AYIFE7Uv#b;m=0rK=p)shPt%H9co_CuhaOUTU7Rs?+l}?R@Uc zy%o=0y`7x(x3}|+R36r;c`DYa>7l;YlWD9_^9^p!3G8k#R^L(9tAu$DpDQ!D z%ADMbz0^#|dM9V@Vg6ia4*j`0D)bE9cV;gWs#SVAd!>iTxjHKJs0RV(Gp8%x3f5E4 zom?F{6Gny3^yDflpVRX%sQQ|+o;f^o`nfuE-;;Z>mzuj|y^}NdFn_KyhyGk06?%s5 zJF}Mw)ha!mz0$+vTpbm9)Pul|^Vz$TfCMD)1_I9KH{7z%C;~JKmaSmVgA_K*0I@hFkU-B_M$v z2{@m3yfx1(0SUZ;fb;ncx9l@YKmt1wa6a#NYo1vG5_kgv=kptG*=Ll11a>6geBSZa zJhKEO@CE|T=QrH4&nN*2>`1`*yyLBTW(i2(4FsIeZ@6WjQ34X!k%04g$6NEv5|F?f z2soeLaLYcU1SGH{fgR`bZ@>TXr++T%N(v!Gok9DhrQI8bMX zJ#+5zyo&R=Gv$V-x_u^8&h*ep&0Scp66j&?imtxIk;(6oyRc3@_jLBU%fpjY&ystw zD_2>ev!mHNG`q6G)uA(?)78&mTD4bts{DJ;oVz@)ve$g>%%b#Uh4(mL9nKZcUA>(g zKG!wPZ>>tGJgieQhjnUts6XvtK6Q15%0qugS2?UxcQWZY+uQN4c-Tw5a%T2ERXd+M zb8p3SS8pe0{VlD&9VS;E)~T!B%2WASr(VfnFLjk)dFb!xDu;FIP9{BPdprIW4|}Os z&dlDY>SxdA&P@BXXCf2$kp%)J#)zn7<_9w+bQRL|J2SKkg3 zhNt=+&T5tU)Xb;udveEl4*fiHcJU1CqOQ8;9(Ls!*h^h?RUX!Osv;N*z-wu=WyJKZISxHR~lT(l0th18&*;Q3o zrylvE!a6I|>*wK))ZB$9neRAX&77<-p?{t{Ei25a^0WTt%2Vfa-f1=8syY)^Ja_eW za(L!zy8oSKK6|O@WSyEG>Q8u>S!teunts;L>MDnIYUZ;}P0v}~$yxERmzw9S>h!!# zJD)pqZ^d(0ZzpH{?d^Ocm4|g|o{Dv9dZ<6)VP>Uy25S0QKdY-8)~T7#IyF6Kbth-V z!(M8hv#QhcHtl@w%)J%QUA>*0^|!b4jZ_}isd*~asp+A<*OO_iQ1cAb9S{ALu5wtX zW)ADr^qke5oD~mysd>(-PS4x4^SLwkRy=q0c5>F=-p)5td040BsaU6`hx%Smrm;fJ zGf;Ot^jEsdVV#;etW(o-R(En%JnW_BIjcH7Z_|6t=W#n@Qsr-FmG@gE%yV*1&U5Bz zXU{|b=k)ke@^|c5eMecZ66QI4uFT{rb8;{CQZpgzot(Lc`E#8)^yliR&@*)3nY~P? zR_W>Nl^!PN>Zs789t51voUVK;SWi87a&_oT7!^9xldG(JPS3xf>TAk+=J3qv=jzaX zPwvHDYVMNtPR`uJ{JG8?`g3(u=oz~2%w8r`tMqjCN)MBBbyVn44+1;RXYWn|5|F?f z2soeLaLYcU1SGH{0q66Mx8|88Ab~d!a6Z4`mVHJENMJ_-&gUI(%`;0t0&gJTe15|% z`-~Ehz>Wl*&pY0lXO@5j-ax?l{Dxch86_Zr9SJy}cf2*vECC6;fq?V*4Y%wwNN@e_e_xU?AM?Lddr>2wjp{rl+b(e=HVLt1**L;(g%(=_+D$eK5lpCJv_L)#Q(?cgUcVWFspohIH zy804FCcj7S!aDWb)7k4T4^L7(OYX(4TxEsMj%M%B?8*vPht7mfS3ieo)n4hT^6x!! z?()3KUh}y#i_()7-s60AI9EJ(^>%XjT-P+ewJM?Vuujb!)~V^C{=S{PvvKwdL@Uw z)Kz}vp}(W69M-8jne?3P?f6$b?4@2gGkc$^pFN*DGwsu!m3;P6f9`Fpz8&sZd03~e zdMi)mXPtT_hrQHQe&wORqpKX&sXLkUobB!SS3K;cUO6*+pQ@eDow>K-xvRI6v;LM= z-wu;259`!bZ{?}{tW&S#u$Q{ZuRQd3bd|$8btjXav%MYviif?_D`#f!Q}t8l^O$D* zt!}V0_f|apUY?eEoV=4$J!8LKeLGATp6Yivt5xPxGoQNe$sOl8^z+Qw#WS#ry6T#H z*p+8sFLl*bd03}r&Zx7Jn!VI?vYvW4N1a{sdOF`zaXxqE-ioK+JDmAD-o{SO`g>b_ zJ50{+j+NnLB{e-vPCa_F&PwKIS5;x1dgPA^>#R_(pNBhAa~GauzTP%Si+|}F3;hC@L{&$-B?4_oYb!vL3KjC3!rFjNw`dL4# zs~py;na?^kJ!f?%XT`%_YM!&I)AKg%eD2J>70+G0ot*WzxATou9@eROD%Pp#q5g!2 znU&@lsOe|@tgdocr)ECu)byOyotza9d#QQOs!q?_wDY+$_f|Z2^>%XB-`>tQQh8XX z=BZexric1oPo}X#%`;GUJoHz(%3+U%wz#tJphK;7}sU+F4`b!z6YPEF5Q-N{+;u$P+Wtm^c< zP46|I$L)+smA{=;-fxvK&&fGC&zYy4JrDh#)8k9Y-?3x$9c8^rnCI}hGLx&!$-UT1 z&4jFXa^@c9&voX|pR1!n&(M8m_A;SbrKhu3dYGK6qe72*5O6+oy7H}HJ@wql)uA(C zROn1kuCnquJ^zBLuPN)9!!xI!t3&raxfgq>xl7hNIdc#5=Q?xf&(%?(XXw5&dznzJ z($m>1JxtEkQK3gY2<$kYy*mj=KmuB#WuH+364;S|^LfWx z^UM;Ez#9lSpWkrHKBELAupzu}gBMhQq@M*`009dFGuOF#l| zAmDs{!!7%a5|F@-1f0)1-kN8YfCSz^!1?@!TlN_xAb}kTIG=aCHP0*o3A}-T^Z5<8 z>@!M00y`4eaX$a{`yYS$H~5dGyo;=7NOsLLxyrQ6;VLx~sxEriOP#$dmGST0=kLfI z^~`6Tnoib-u70`KT^^o<`K;$&^Huuk>}d85&91C)b?8j!boFzXR_&FZD*xUy=Pu8y zIG;OHZg{HOXF}yn51rK9h4m_d9`>&2>PsA%{2sXr>(p~kXRo_FJW2H|xfi=~l@&TW zn!Q7_D=S5gJkMq^xT=Cr1+sWZ`UDN#5 zs)WkJIyG}xr>2Mc(;ntiS7)d^^mlZX!#Z^*lb*A^9si1lz0@mbX75wA^SLwkRy=q0 zc5>F=((2n`a^+#2y6UYwm7jI$l^pg`SNWBP{*JD4Sf}n}(sQ=A<6rTxmwM&Q?0u?! z_I&Qlv`>3h^4UxMxwoVb?TKI_EJ~*m52V0u5wtX?qt$)wzuP7 z@vxVA<;?7Ts&+ni=H80uuHH`0`deCkJ4~)TtW#ILm8bHvPQ8-DUg|2p^3dPWRSxUa zolJVp_ICU$9`;hNoSD5()lZ$zW18`|y1~xeTk-UJd0Ogm@=i|mjQx7`?J!|@s^8(P zR+&%DeCoa@cbw3mPc`P`X%E1rJuaOUrL8#_7c?``$%Fgd?FR)&+6)bubp_2|tyE192NRfToxkv}S| zvqHUo9_~oZU3ilDj`P*b$qEzt=gHHu!kj8U>u;_+bw1~vR`ac@GhxMZS8peWXTGNU z-)ZKvmzqx2sp+Bqgol}x<{7BzXZ@_Ma#*KkKI_!4H5@vxVg=d9}VyiGfwJ9BTvb60OCXZ`K%d?S^Ib!wi9b!vL3@AYIFE7Uv#b;m=0 zrK=p)shPt%H9co_CuhaOUTU7Rs?+l}z1Msmw=*VH{&rS*zg5CKC+FlmXP$QUJoJA~ zk1r*E$Bxx^l=UiMp2O$LOs+B~_hK(K6SCgPnR}Q&*O^0qu8s;lL-(E8%YJS%C~~`)N?0Sht7mip))&&4)S4V}Oq5ID4WkR(|PiL?6FgaI8g&y@Fu;YC8?j#@q3A}-T^Z5<8 z>@!M00y`3LKJR#Io>>ACcmo0F^BZp2XOw^hb|m0@-tpEvvjimY1_I9KH{7z%C;~JKmaSmVgA_ zK*0I@hFkU-B_M$v2{@m3yfx1(0SUZ;fb;ncx9l@YKmt1wa6a#NYo1vG5_kgv=kptG z*=Ll11a>6geBSZaJhKEO@CE|T=QrH4&nN*2>`1`*yyLBTW(i2(4FsIeZ@6WjQ34X! zk%04g$6NEv5|F?f2>izUY1fEC0`TWzJ9;09)j+Vo7R8pkpsC2{;c$kk$in}~V z@)4Ng@T5rdQJI)?>8MQF5063u&m-V`{^?GSQ7{ol%i%dHDbjOPI^qaC%ts}~U7jQP z2uyK!Ql$B)Ow74-R3`0*MMQ3M&%Wi@+B1`S^rWOlYV1sAShAL2bbRA2F$b(stz=H`m zpU351n*c{wM;vd_VLmDyaddUWB=BgTcyg)JbvW%94Kd!DCL$>*{n zf#(r$K94)inb5iGPFH%e^0~b-`B&RL&(o>ob6JtV^9VSf$DQU(=-hRuD?M5H++Lad ztL=WA=MZU7=ZIW|4SUCEhqR1R@$dWgx= z;ZaE7c?6u#<4&(lfKFF>veJ34I$d{p@;rAXXU=qJ`fCMfOa6VsvW{U(QAb~Fsa6W$lvRg<%0us1D!1;Uunk^ELfCRok!1??I$ZjD4 z2}s}q0q64tXtqc|0uuNF0q64;A!N$y7TnV+FLN%a)fj@%_ZxylO9!1{M`xTAU(0=v)W z{Jyf1cTst&IulkrRd1)>@$j6L?&MS+X0CYHOFi;C6`o{Wb4Thbx$>}1T|F1`(?9Q` zpSqJtkNQ_8;C$xoRPXs+o+`gn?|695N_TQ94>MOh?4=(0oeEE~uDK(1m0WpPr>>rh z`RSi`(NEpUq(}WL6WDh?ue_6==;bY+&F}a-9-g7not(7)fMgLjdIRi84 zuj=$r(@$M_I`xi+d#QIJu;Y9lZzF$6n|11rXZYt%t`5yzGJ*bTHS5geE}53S^rU7o zHJz+eU-PhQ=#fdyUAWr!Q%f5ZG}(CtJS5)ae|R%ELPK*_^ZfvwP7`UG2+y3DY3`-ooq+S1H+c4)r=K~MuKZP9`;i6oY(5v#R@g|QtwW{`OF*SdrnOcb;r~3cXEa&omt_I zsVhJ0)R{0UD<1Yzb1&AZ={c)AIV&FaQuCbG>eD4hh{G|SF5h9R~05x)6aV9;mkTK^R)Tu$mw{} z$*xNCoYeHQPCfU`S4R##Lo+`;Sz#B`GN7kRFyRcp*(8JypU44loliwqEVV!#J>FjlvhbO6?CHG=iuChXBN3(Zmc4dXDLuW## ztDnQPYOnNE`S+eVcX?iAuld}WMd`^3?{U65oGYHYdOJCMu4|g#T9r_FSf^$V>(um6 zf7-)*>go)YhyISPa#*MCWYTlCx8q;&u$Ow}%MFnT(BIKj4(rsNOnT1tcKjd1hjr?zxAIhe)~Q!=*h^jIS04I1y2@dlx|2!I+1`$S#lv3e zl{2&Vsrsq&c}z3@RyWw0dn=xPFHcK7PTt9>p0QuAz8xkEPxU*T)hhF;nNQvKv*KYdHP2bq>3N%WK6mEcis!E0PR{z<+xbQ+ z59`!C73dn=y1 zdOJDmZ*S)tsXVMx^Hi);(?fl)C(~G=<{79v9{MX?<*-i89M-AnIjcK4D<1Yz^PE+k zp0{b|b7$_Yc<$=$5tu z?&Pd^*h|fGR&{#bruUl9<95cR%HPf^@3%^r=j5E6=gia2o`?R=>G7rH@7S^Wj1JxtEkQK3gY2socP zUHMk9o_g-&>d=`mDs-kNS6TU-o_|5r*Oc|l;hEFV)uH>I+>5=`+$HOsoVkbjbDcT# z=jy1?Gj!jXy-cW9>FMm19wz7NsL-Px1a_Ry-kk&_Ab~d!a6Z4`mVHJENMJ_-&gUI( z%`;0t0&gJTe15|%`-~Ehz>Wl*&pY0lXO@5j-ax?l{Dxch86_Zr9SJy}cf2*vECC6; zfq?V*4Y%wwN;3YI&>y5;oX?#pH$2ttGof;(hfZql!g`fJ4|`X1^(Br>evjORb?UjNv)5f7 zo}_w~+>2eg$_kww&EBEel@+cIoe7<;eh$;Bz0y}1UG-L;%FjCWN)CIetNhACe@9n2tW$R~={eim z@vnH;OTBVt_C8fVdp>t&+NV7$`Rt|s+}l`vJKVAIuufg|R-VewI`v8pd#S7Z%0qug zS2?UxcQWZY+uQN4c-Tw5a%T2ERXd+Mb8p3SS8pe0{VlD&9VS;E)~T!B%2WASr(Vfn zFLjk)dFb!xDu;FIP9{BPdprIW4|}Os&dlDY>Zi`1Q>Z+^quujdKQD-GJ zd#UMUJ@s&oI=klebiSwJeD2J>6;Ho+IP-VBjh&qJ_qO_Wn4I4oE5pf3YI>NQdh}+U zmCVnss=_+;$R8EfS)pD(4|k;IE=WW{g+?jhTp1XQGIqPq4=NqX!tW)z;tW(oN{Rs~5B0sCOk;(bXQ1wQ z=&y8@!#Xu{Sf{4vtnTEjc-TwLb5?bF-lm<;ow>K-xvRI6v;OvWzLCnqIyFzlIyF7i z_j)po6>6S=y5ph0(p3)Y)XZU>nx3<|le6MsFE!6u)#-Vg-fKRO+ZmH8e>&&4)S4V}O zq5ID4WkR(|PiL?6FgaI8g&y@F;C$wEbaAvLubOM(3zfGW#w~v{smQEQ`R$w zXHGv?hwgiFFZNP%m#lYk<{swHb>`5YtD{2C(0yn2GND?fr?Xdjn4GJlLXUb7*l|94 zcM_0*1l~Zv`TT}k_8BE0fgK4rpLe`9&ny86yn%r8`3<-1GfF@LI}&g{?|5sTSppJx z0|Dpr8*bTWlz;?wB;b7B@zy-E1SIeV0?y|*+_KLo0SW9#!1=u6t$Ah%NZ<_woX>B# zWuH+364;S|^LfWx^UM;Ez#9lSpWkrHKBELAupzu}gBMhQq@ zM*`009dFGuOF#l|AmDs{!!7%a5|F@-1f0)1-kN8YfCSz^!1?@!TlN_xAb}kTIG=aC zHP0*o3A}-T^Z5<8>@!M00y`3LKJR#Io>>ACcmo0F^BZp2XOw^hb|kRleE#kCKmPP@ z@E=Qg7g^7c?3!nCm1&v7Rca^(d-?XU0LDk(3#Nb>gO=6+ABR({=H|;U7lBQK6j?v@Km?Ygvyy7I;pt} z>s10h>|N2-mpC%{J#rV;spp=~UUzwTlImG7!4@0oL#=T-Ka&z)J6o~-a5=c~iH;<>B0lf&n_runT^36+O+YUZ#`O%L^_J=S{PvvKwdL@Uw)Kz}vp}(W69M-8jne?3P?f6$b?4@2gGkc$^ zpE{q%G~;h|gPpmz;_3JDwAAC|ot)|!`}OMEVZ!iKzr$IrGM}3H)O}CxIM1PF=+v?k4a(;KL3@0n8>0xr}(VKNvGC#Yj3hUG(e^gj!g?jxw+>x5Q@Fepc=c}2M z6(;o0lc!~cIaPkv-&}d>e9k+q=37-~!iwjv-cAnBd`K#x zGf>md`dMA&uujc<)~V?^t2;R>9`;i6oK>Bkw`u2dXYQ?d?&|I2tiQdTZ=~|DPR&!X zPE8N>Cp^roG|xayKkH|8mBTtU^I4~+=dAAJta#W<&2v_Ddfuj;&z-rq;<>B0le7Nz zcD|9y!#Xuj#X2=T)c1NajTLI1fx6?NztU9>>(tC)otmDrx|6fwVJ|h$S=H%zn|3~T z=H80uuHH`0`rF(2Mk){M)I1gI)bvo_>&Y}$sCfqJj)(qAS2?UxGlz9*dd})j&WeY< z)I4WZr{`^YulYP~XH2U6?X2>CtAu$@&dGVsJnigx=>MD^UrPRt9joss>s7)$htHLn zTxCw~#a?PAWWAF!_b`91Gl%|M9Tj?p?mM%W3Dqh+oxRe-~JKmaSmVgA_K*0I@hFkU-B_M$v2{@m3yfx1(0SUZ;fb;ncx9l@YKmt1wa6a#N zYo1vG5_kgv=kptG*=Ll11a>6geBSZaJhKEO@CE|T=QrH4&nN*2>`1`*yyLBTW(i2( z4FsIeZ@6WjQ34X!k-(1g`M2Ny_|w0^e=Ox)WIaQ&Yo5tfrezLSshLo9(ZgQq>|Lph zfA2njN9L$!KI_zUvOaY6%f0UM@FdJhIp$X!^co_jib-R0p)s%Oc) z*p;iS(Am-K9hzNP;p)(t(CO;uFs<4vJyrg_XU<)oSJ`VmcVK-xvRI6v;LM=-wu;259`!bZ{?}{tW&S#u$Q{ZuRQd3bd|$8btjXav%MYviif?_ zD`#f!Q}wgwb7!V~+Ov|+Uh2=ijn%iq9V-v()Kzcgsr;-{ujH_oy2`IS^mlZX!#Z^* zlb*A^9si1lz0@mbX75wA^SLwkRy=q0c5>F=((2n`a^+#2y6UYwm7jI$l^pg`SNWBP z{*JD4Sf}n}(sQ=A<6rTxmwM&Q?0u?!>Ud}`)X_dU7eJcoXsIlFiUc2QSda}T@n4D6+@x+)Lr)XW)mR#LNh<$*M{4fElgxLVuVzkGn9x5@o|YBnRQXwdbLFY?Iq$TZZ&jTME1tW0 zJ2^b_HQoPCGoQWGbh1uO5A`QJ%&aueKutgEXLXgsIyLiIr>5tu?&Pd^*h|fGR&{#b zrk&57xwqoEtGAQ0{`Pjhk;=n5HBZGlH9gdy@G!H|JOefTte@3Y4(rs+XPug!v$~VB z;$bf}&so*!d7E}Vcjn%T=dRvP&idQi`9>-a>(o3I>(um6-|NXVR;YOf>W+v0N>@3o zQ!|HkYI@Gdn=y1dOJDmZ*S)tsXVMx^Hi);(?fl)C(~G= z<{79v9{MX?<*-i89M-AnIjcK4D<1Yz^PE+kp10|}=JU9nF{$#mv&#Fe66QHMC+9iy zw6o`-|8shLDfv5gtiGeHR|)eRK38UPl{vW=d#Ra_^-j**!~D6<9Qt#0ROlJH@628% zRIBuK_DTB&`AKBwnjQ1vxsJ#%>G^mBFS zz9;u$FEw|`dM9V@Vg6ia4*j`0D)bE9cV;gWs#SVAd!>iTxjHKJs0V=^=d*Vw0SQRp z4FsIeZ@6WjQ34X!k%04g$6NEv5|F?f2soeLaLYcU1SGH{0q66Mx8|88Ab~d!a6Z4` zmVHJENMJ_-&gUI(%`;0t0&gJTe15|%`-~Ehz>Wl*&pY0lXO@5j-ax?l{Dxch86_Zr z9SJy}cf2*vECC6;fq?V*4Y%wwNfIXr`iv5<{Xvu9F>lk#I?O2!Pl_}jm5Di*j>@F{@F*nkJOa+=pYHS+1ru?!9G;_+B0Wc?BaXns zd{k20O6M)=blv62^W2r3Ia#^3dv;lo!0rT`&*KI=QzGxW z)0LjAWO7zIU3YoDx%=nNoKImz0(%i~K9BqAOo_bNPFH%elF3==blv6o=I)<6b3TO? z3G79{`8@8cGbQq7J6-9?N+xHe({-2Uo4bGR%=r{nB(N6&=kvI)&XmZT?R2FlE18^? zPS;(YZ|?rNGv`xSk-%OAwwTYyC!AtJJIzNWyCzF%J}O67M`YJg>4?r2hi4Ml@nn0a z>zZfMbu1ks4`xLI4<_Jz9+!J<0vuf(alA!``KWZn(bW-?z@vTQ$)!%$HP58$SUN-= z%!&jaOu+d(F8A65IJ!FGc#976QR#@It0N|XNBhK+OP#K3o=MlSbcj5d6$w0;z!vlQ z6#r}A^5?oTIV+t9>~!7b$@AQmoH^Gjc|t1^cpd@g^SINT5}mv5bfqUNpW7>wf3@B7 zJe^8DmlX*-kAU-e+-c5)&Ruu9(vy|X?Ul*D+U|LtP9>kqiUgiV!1+AxG-pERt~*`n z$;#*U%H&^d_v1W=xa-WBV?_dc5pX__`n_i+=^^e)&YYui zh-1@3OqLFhLITet;Cvo;dTj!9y3&)C&U@AAy33R2xhpwyj>;jf?Vep$B(OVyE#~v_ zN&NI(K#AmDud0%W(4fCMCPfq?V*0yJABAOQ({fq?V*3y|GH0uqqG1p?0J3(#zl zfCMD)1p?0JFF34DQo^Z5&q-9iEqkiZ23&gTozY>|KjB=7|S&gU;cb_)qe zKmr#CIG-;-vqb_DkiZuRIG?`&*)1d>0SR0n;C#LS%@zqrKmuPN;C%i9WVeuj1SD{Q zfb;nRG+QJf0SSD8z^CW)$oE$Q5|Drdt`Yd}|NWoa|E`_HE(u6L0umsB+lRA(5|Drd zBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J- zkbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndv@Nxow z``f?%%fJ8E-~ZjqG5GirkbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|Drd zBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J- zkbndvAOQ(TKmrnwfCMCPJAwcB&wukz0uqpb1QrS0KAe99E*{Bt2}nQ!68J&jbMyKC z{GS9QAOQ(nA~62%$@zQZfCLr@IG-2b*(w1ENZ^A6oX;PGYqSI;Ab|w}&gTVqwn{((68Ini=ko{Q8Z7|{ zNMM10^LYWDtrC!c1U^V$_xb$K|MZVP{s?GPs^8(PR!5y4CRg<;jlJpNDw8WG&&FQX zvzM#cmHxgbds$%)^}Xj|^3Xg3b!Rox*u_;QQ=j$Fua-a(a6a?<8hTKoCbz6-LdU~Q z?wDy@t-9!`64;xb&Y9_{66oQMJYiMOOgiVQ%&(kT9~JJBIz647jwkoBA^{S3>U`!i zrp_;}?_n=>CX7nuVV(LDIn1X%yBGbP9QudOuB>#rGVQLM&hFJ-tWz_ys?(#Ez#!m! zuHJ;|J7S&sSI*%%sn4F7{!R}4LuXf3I$fD|S59a5YA@EQnOW88QA=PD*lRwIcf0x> zPtZrsC2%s%EQdc!#Xv4sVfib)Kzcgsr;-{_j86be@9v;hx<~qmzo~x%ES85 z)$d57zsm1;*sGR664-G*^C|Kxn15NLcg4dUsd=i@xg$NDoJ?Tl>~nGV)GOy6KXa-|Cui>AzG?|1fxYJQI6uD^>Rip|UH5QD>a%;X zm--Vq%%?uP7yX@_;ir>2SD8;ey7D(YtfbD}hbQZ-P*?t}XIFYg#a{_j1f0(mna=lB zd6-#wSf^$$b>(55y6UYwm7jI$PR{VtNu8_ArygDTn;uqD=kCLkbylb=f7Y`rJ)`2U z1S$eM&gbzgFuCkXpo$EQwr#`zE{hgfjXIEC(HT0)FRsN{w zYF6@`9Zx=~6$y}l^O-cLJKtC3`PFiGPHLW$`YumqW^z{8HT0)FRsN{wYF6@`9Zx=~ z6$y~QzVmrJMScaNQvI@P?x~!lS9v<8`b19WiB`_c=c@Lir+UV!o|*I0=3bdV&wMpc z#of8u$?15Qsg^(za6adEL`w73;Y`n{d_Sjil9e;_xvIVBAp!1N)iaY_xte>;J@eH( z6?f-qC#U0Krdk3?VE6f)Ph>>`5|F?%2sodgagRQQ1SIf00?y~>-KkF`0SP>Vfb;no z_vlkdKmyMr;Cz1Go%%!)kiattIG>+!k3NM2B=9@}&gbXdsZS&U2|R;<^Z6O~=u=2Q z0?#Ahe16`Y`a}|tz%vLqpPzA$K7|A%@H_&}=jYw2Pb2{eJcEGq`5E`L=up|GYB}JpK*^qg#;w-KkF`0SP>Vfb;no_vlkdKmyMr;Cz1Go%%!)kiatt zIG>+!k3NM2B=9@}&gbXdsZS&U2|R;<^Z6O~=u=2Q0?#9`*L?ne{@=g;=^yXqPYp+L zILCjotEwN3hsdserP`Of9~=D;OlF;C$vSe0q*$e(rvD_RbUf zY0ObeKmxx4fgR^_a^u{iPUomp9@eRuQ`PB7%`WP>ldDx1>(uO}t~^zpy=nmNXRAC_ zoxN%aNZ^|UoX@1q8AV-rSg-WioE3l7%d=IUs?J`u1SIfH0#BXKW7_bSR5^<}y6R=U z(#)sl6ZMgqzbpH)S1kbve3O9lnRBwzyb*d>uXN@AM15rDFVA*%U-qgcAc1cZcC+bxu&sKS=I(yX;kia(yIG;I}D$N_AhxJNV{!i4aOrEXsRCV^M zB_M%s5_t1`=0qAgD|r|6{SuIX1inMS`TQNu?jivR zNZ>31=kr-&`XwL%34Diu^Z7fR-9-Wtkic02&gZkl^h-bj68H`Q=ks?syNd)QAc3<4 zoX=;8>6d^6B=8*q&gbuNb{7dqKmun8IG@iF(=P!DNZ>mJoX_9k>@E_JfCSDGa6X?U zre6XQkid5cIG?}6*SbLm0SSDXz+UsYqLFin73z_Ym3h6|x2iM$|7-94UH@CxGp{3< zN)ZJ?QV4=J6NGaHw6anJn^;X_5e5>D5XC|e28$^~6z$T8SXc^TZxI-a5J)3a+NuA+ zkSc@}O5FIs&1>)L+z-$Cxz}3fHJo{KeXn)h*Ymtz>;1V?ZffS~Q{SKIP9Ha!Kjm%J z5|F^T1l-T$dDbps4|R9e&ztE^AGe)96@dBfpww#(>CKmu0~a6b>K+*eyUb2hhGIy~_To%i7# z=1=pxb2gvqNI(MD5qQ^rUfC60hCcNXwkthdhW-_r->d8IGQ(e)VuM-&5;&KD`}qh@ zZm_PW%h10<^FCdFml^)b6dTkMkifYF+|NgNa)Wg}U55V9XE}M3Y(AdJ1|11V;9LUk z=OaA1_qv`gLx1SAoV-akAJ1fijszrdE`fLL=keXS&8Yb_DRDAPdA_Mu$Y%rh8#UYLQy)_w#e!g*TCa1SCKL?q||aOF#k=cn$&g^K;&XH<5q@ zBtQc0XVOqhKmrnY4gvS`bKZqFk$?mwKmzV((ojo40up!*0r&HB-i0@jfCMB!0`6zh zP)k4p5_k>)_w#e!g*TCa1SCKL?q||aOF#k=cn$&g^K;&XH<5q@BtQc0XVOqhKmrnY z4gvS`bKZqFk$?mwKmzV((ojo40up!*0r&HB-i0@jfCMB!0`6zhP)k4p5_k>)_w#e! zg*TCa1SCKL@7m8R|J|kgGvh>llJL-cy6=W7Q+aMWD?NEzI{Zf2pAKj9^mOL^T|Up% zk-*ytxS#n3`L|C!&x|BLnID=@*PGe1GR1tSS9$OG5_lKIoXyy^9=Ky=5LP~`kl`Fij!?QwVvTD^=L?k&GV;BswMDt0`BMW2J^3e zpObCbGtV&JY5wY%q2KAuuQ=J3Q|lSdQjdmo*gSvAq*?-RC*XeW{@&?R^Np|gTQkge zdgTtxP@mPw9`;jr8Ty@O4>j}j)e`s~0rzwF_fDUhzkwBhYlitwuiSwd>a#l8!+z>6 zL%-APp=O@GS_0oA@ZSB*zthyi$hHgoz(2_beE@3eMJxZsd?5`pR;NS ze1m}dneUN1q0?Qy^VxG&hMm;x?{t@^PkluX`>A=>R-dzK34DXV8}~E+a)(YQ-_G$2 z8%BRR>7Sd)wsi8l)9Lc`sX0sCW$06Pvn!cymcCj7-y`6D<~!xCpdOhOCzCmKB$I9F z@EfJ>^7N^*A@9!&XQ_{5x>@>a34D*h8~1a*h1>(f;U}l)Q)h=Jw#*?Ed!YbC#MtL-Q#c__Ui^ z&tyY7d6Vuw^W^*~&&}lg>Aw50Q!RmS5O~*q{swcug#;uZffWMo=M_q3Bp?9^+)u#$ zd_Qwflz;>zutLE7yh6#01SBAV`w6(8?`Q6b5|DrdRtUJCS16g0fCMCPKLPji{mea4 z0uqqG3IX@?3MDfVkbng4C*Xd*pSdSWKmrn2A>e*qp=3q^5|F_C1l-T}GxtOZNI(KB z1l-Rnl*~v#0us2NfcyD==AI}42}odtfctrck{Jm|Kmzv@a6jMA+!G}r0ST-Sa6hk5 zG9v*ANZ@_~?&tfNd!hs+Ab}ME?&lRsW+Wg13EWTMjr*DZy`&_@r_?J+X7azXG@f=o zXQ@~6T_*kEHlON9Kmykhc-MZ;{gY0|ib-nb=~H(Z`kn52nC~+5sX0rXnH7f(sk0$7Iuek; z6$ISRq{>}H-DT)^y6a)S%h0FhEOlm995$rRhRoMldS(_K%O*O!0<&LZG`CQ0rh>MldS(_IhqU4}k2XQ`Q??lSZ{ z-Su>NeF;e5ECOHM&tt3blf=56L!Wxgc5Q4<%_(Xo>8IxDoJ!5ve99gsho0xVr}`3* zz;y)N&t%I@MLjayX`GsCPEm7;erlf1snnd!r|e;J=y|?-sxJWvTu0!0`+2@?2FWf% ze?_mn7xpkupL%O%YrZ>+J=9zCoK;Ie0!IkApGl9qXhn0j)9hh}KK0hj)_ivsd#JbO zIjfd{1db4JKa(DJ(a>~8G95Og?(+1h*+8F~8S2ceIBZCr4VlrAfCR1};C?1m?xLaT zjAS}&NZsY>Q?r3SH8a$iS#j8qIvX;hBLN9qLEydndF%~-k`I0Ac_yFI8G5v(-#I*; zI`e$mostJGvAB1 zl7Ivx;C}WuAOQ(T;F$#6&(C}>-bw-zkbwKy-+%-pAc1ERa6douy?84LNI(MaXMY0{ zkbnf9Nx=R5%=hB0Bp?9^xS#zENI(J-cqRe&^E2Ozw~~MaB;bDbHy{BCNZ^?S+|SQ^ zFWyQ55|DuV+24Q!Bp`uj5^z61^SyX02}nQ!?q`1k5|Drdo=L#{{LJ^_tt21;3AmsA z4M;!&5_l#7_wzH~i?@=11SH^o_BS8_2}t0X1fIN~fBAdAJN`F8mzi=_#HQwza2}dd znVC3~@p@F_Et!e%2aa|rl?Gb%9OJrR;DJIdNdJ} zYt+1?X2e1!F^JX5vi7>rsuDb5N`lW+t7y##xzauEG?R zDN&hnR>aEGBvX$jVsed|TFF#6#bn$^k0tQZ{aio41Uq?@;dF95ot!FXCA^ZU!V)>P z;?(#iktU3X+0}g(Y zCf{$KzT#xhij&Pbm6;VMd(z3C%%rn2wURljdEZ(4PS2@y&bm)F>s&{`{XE#N{Ce-q zlSX={c3oS@+3io$Cm^Vn5eUD@BsY zOgfXPd{j>Ll#^mprot&!nro`U>C~f5qIyo(iYfce+zQF9G-S;9tMz$?G^hQ-vw=8kMO>D^7(siE3UE)x0TOQz@z^A5EN< zsme@59x(~$qZ+SAZx#weWyG1^AdQ)ex4wz-(h9asYesB zGIeJruX@($*__V4v-VBxJAL2O$_>wI-gnknr)Q7O8wt3d$6H(ZYq~R&zooNI&*pUY zowaXj-|73NR&ID!^S-mrIz4-I-bldxJl@*MU(=nL{4JezdN!xC@2q`O`%d3CwQ|F= zn)jV`*6G=!^F{*h=keB7{+jO0^p1U)V|aAO|9JUtmb`ZoppNl=)94D`+2;zmA|GtGx=LO z>-20+XWv=-ruLn_Z))X+XEpCT>#WnWN9T08Oqlu`n;`s#J z&*L4{?|JgdCYgGaA`3G!acaCW<)m22O+C&fx8rzTDnrpT$xq_c0T zdNz%33fB=OHjQVvoGP4%P2uXPsS@>QA}XwSK7l9i=jYS&h7yo~1g<0Ce!h;a%@UA+ z1db4JKOdpztOO(=f$IpkpRZ$Uvjij{fg=Rm&qwGvD**{e;5q{C=j+(oECC5f;0OWt z^AUQ^NAP`8u{XOF#k=I6}bve1x8}5|Drdt|Q=nzK*TU5|Drdju3D^AED>0 z1SBAV>j=1?uVZVo1SBAVBLv*fN9Z{#0SQRpIs)$J>)6^X0SQRp2m$x=5qi!_KmroD zj)435I<_`TKmrmtLcslegr2h!kbnfPBjA3%j;+lSkbne^5O6;qq35gwBp`w72)LiG zV{5YnBp`t!1l-R@=s7C^2}s~N0`BMQ*xD=s2}s}w0r&F}dd^Bf0us26fcyD6wl+&Z z0unev!2NuLp0g5=fCR21;C{Z2t<4gUfCP>Za6ccR=d1)IAc5-$xSy|MYqJC-Ab}$U zuHMh1-%klhKmrojN8qpi=C4ox-@cnTB>@RYKmsIi`f|2V0uqpb1SB8<2}nQ!5|Drd zBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J- zkbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|Drde#;5`>Q}%1qd)u0-}%LF zIR?MJ1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8< z2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|Drd zBp?9^oKE1+|Kd;mp9CZz0SO!=aQbroq44099G8FuBp`tw2wbbEwfCMCPfPnk?06a$}AOQ(nNWlGkAzZ5^AOQ&+AmDyJ0MAhg zNI(J?5_tQ5{=+}`{U82EK*Q-iN3wf5d}i3(`CS`lGsCBB?vlJ4XX)oGpXOBN*E2aw zhdtEi-iOUY^A6N2PqU3ve9C6(tr_Ok5=a8>Xa0Q+Jt$F=Tl(3sl3^!L%r-vlrkLp( zIGdT3J2TTYFvAmh!_Lo6Cg)Gt-zC!@4o^v)nU$WEOrE790TTG?e&%;foquub8O~B? z!*IF`ed;TE*iXInEaq2wm>)W)(pj0xwzGOxPVdg5PtDHGXGSf7LBRdo{SvyrBl^@& z?%_SDx89lgl^*7Y&Z%@(rn2py<{9Bs^Z{VN&HswI#F+|S8m zI4gf&U51@qhCVfCsk;n)>Tb5nbb0#J>pdfxpQCN1hv!mrmYNyrE<=Cl?sK#;-}SF# zIIEUG5_sc&=C{bdg85(8m_3r=iPXGR>O7H|m7Z*%v-NxN^wdZ0!?x^Mao8}|Y@_a` zMkYU*&z{a%>6vGEu37>~!2Qg>Ao8J~dL)O>sZMtd>pj^(hduO%=B?7sidN^o%@{)cKVC)MF|?GeakJo<1_^)1mJ2>E~2thU2FMIs)$Jj?Bv6SC?UDm!VJ1 zS?VrBpSqjvGF_fN^-9mkGfACK*-t&D@-s7ZQs?O-lRh2lE}wo*Wo9^jN}wa~#{E3L z%lQ50UqL$g-H&8AOP#0ip81rs)R{cq!+z?mXEDFhllh!Vhf_meo$30ApHI`td#+^i zo9ak_1l-T0LA~<#)n%U6!+TQmp44Y$vNN00;ndJqXS)93=hJlZo-3LBraBTJf%op` z@h$SNU^v|;r{@ zN`{?k2_ymcbN(HX(){U2W@b3|_pIFH$esDUy0e%e0iN6W*~zJVnrF>3^QU<$p3bK$ zJu4Y@swI#F-oBsn8|g?u0uuNJ0r&Ga-lN|_0uuNh0r&Iw-l^Y60uuNJ0r&Ga-lN|_ z0uuNh0r&Iw-l^Y60uuNJ0r&Ga-lN|_0uuNh0r&Iw-l^Y60uuNJ0r&Ga-lN|_0uuNh z0r&Iw-l^Y60uuNJ0r&Ga-lN|_0uuNh0r&Iw-l^Y60uuNJ0r&Ga-lN|_0uuNh0r&Iw z-l^Y60uuNJ0r&Ga-lN|_0uuNh0r&Iw-l^Y60uuNJ0r&Ga-lN|_0uuNh0r&Iw-l^Y6 z0uuNJ0r&Ga-lN|_0uuNh0r&Iw-l^Y60uuNJ0r&Ga-lN|_0uuNh0r&Iw-l^Y60uuNJ z0r&Ga-lN|_0uuNh0r&Iw-l^Y60uuNJ0r&Ga-lN|_0uuNhfp_iaKmLK0Dz5K>N znIk#=$*In-!4f&O?sVt!^g8GV!Djl@E18j>C;3z@0SP>Tfcu$m;p#n>{dxM<-8*ks zZ)1;I0up!vfj92w6oyp;J8T!=h>3n8VbBcPNMldS(_4Fv5Q z`AKAcrcKmvCXc;kK^TZo?|MnCmP4xdw<-!0wdn`N0iRllApLsVvU1?x`-o~eD2}s}x1m3lupFqqzNI(J-xQBrI`5w-mA^{0V zU@HOl^HyT!B_II_+(W?qd=F<&k$?mwu$6%Oc`GsV5|Drd?jhiQzK64?NI(J-*h;|t zyp@=F2}nQ!_YiPD-^1BcBp?9^Y$f1+-b&281SBAVdkDCn@8Rqz5|Drdwi0kZZzX14 z0uqqGJp|m(_i*+U2}nQ!TM4+Iw-Pfi0SQRp9s=&?dpLWF1SBAVtpwc9TZx&MfCMCP z4*~b{J)Av70uqqGRs!zlt;EbrKmroDhk*O}9?qU30SQQ8D}i_IXa3iksJm~S{{<)} z*)UIXiaHy*o=j#BouS!A%_M#5BbjcNzFGnjxSD|bdF-@qv(5Q)mO7{SG|x(BG|;DJ zKYi*WnQoT8S^^Tdn!vmEb4Mfh5*_N%kj~ui&h32mQ!`JW`uX1a5` zJJ454Kmu12a6gmq%D!U0)9j&Uo<8-RneN=~4)oO$kigXh-ngH~R^cZpbvuVX^_cD2 z*xYH(cFj4<9Cn?Y6(c- zIs$Lp&)3ngSppJ}z;g(=pP%zCyom%PAOR9^Ka+-90uqqGa|pPfpYtxfi3B7d0TOUO zlZILX5|F@i2)Li0^DexJ1SB8<5^z70hFSs=kic^YxSyZ%F1(2ZBp?A2a6glVS^^S~ zz;g(=pP%zCyom%PAOR9^Ka+-90uqqGa|pPfpYtxfi3B7d0TOUOlZILX5|F@i2)Li0 z^DexJ1SB8<5^z70hFSs=kic^YxSyZ%F1(2ZBp?A2a6glVS^^S~z;g(=pP%zCyom%P zAORA1*M464?=Ib+87K0SgoozSeK%a0%5&3M>B-yD;Wx_ubU2%*r!(*G@_DX~1l~@- z{meJWzkTX?W+eH^{Lp;5-prnrDds!9(v!EP!*A4`LZ7pFdOGv|F3%Iy68HuI_w#s< z`B%Ts$+qm7XPECae|yZ(?{wx@oNUXf^$cgJM?*Sno0CGb50?q}`?zTeKz44t95L#Uagzg6=T&a%JLBcGql=hHl8J;Uaq*|yTd z2F}t~OW=D1zPg|DP4VxVno0Vd?(&__p0hISq-KAoyF7jBD|*;Z&9k=poK;KU8wA|X ze2?4-o$m6T&z`d~?4)LYr@K6T>MMHKPtCKo`kYlu;2Q+qxS#o#J9Ikvc8+J*F#6L; z|J+QrrIX*CPM4=o%~|R$L!Y{vUCDH_^wkph9s&0=-zj$m^~kI^narspnQTjk-zasL zr%#;?d4Fa&OMN8M&C*v(;Clq#xS#VaJ9(igu@F{2KnfVmYV&~k? zB=alx$qer~f6CJ{Ie*Gi=6B8{o7EC{I|27Iw+G*5_qR`8^+Q zE<>N1v((H`cNzMf?s~esz62z276JD&NpcracNzMf?s}N-GW4lAOU(>*m!aS3uBXfE zOF#l=5%}tU9$STXG42&-2|=eF;e5Is)I@&+~0FNOl?eD|+R< zu!nj2)LS!K^W9nOq28M3tXcvRI6}bvOnTf!E1I*NW)Cy;skdgf=DV}lL%lW6S+xWt zaD;&Sne@1ehNd%;>98Snm#0t72Kv;@P-kYvVMFR{$c&BzBya@*_cN(-7Y$8kB-3F- z>Ml>8nho@+nW4_iio=G~*^n6>2}s}y0`J|=V{h=2eCSipGx?Ox(4#H=&f)3Qndj5) zl*}+m&3^h_!`2M@)e?}v6$ISR+*c&beYN5?&qhy5$_`b2}ocNa6kJ?kbndv@Js^k=V!hbZzTZG>~BB<5|F?%3Amr1`Ch!01SB8< z_p`qN2}nQ!&m`b}e&&1eRuYha1l-U51|%Q>2|Sa4`}vvg#al^00updP`x}se1SIfG z0`BK$z87yL0SQRJ{p@c*0uqqGGYPn#pZQ+Al>{Up0r#`N0SQPz0?#DietzbA@m3O$ zfCSvn{str<0SP>lfcyEG@5Nh5KmrnQKl>YyfCMD)OakubXTBG2B>@RY!2RrRKmrnw zz%vQBpP%_&yp;qbAOZKYzX1tIKmyMs@Z|mc%isIm@xKYW%#^btHZ`w=^U$2i%*2_D z*P|LQ=b%_A%uG6Yjk7Y6K67Bk7~S}gJPvHGwI|t&dOAC6{e_6iOQ6- zB37m*nR+x4lWWw}N~XdoCgVPOEP|r<3F9NUw4S<{;syfl=bu2%KZkUFGQxkZgjX``96F~~ zoa|X~vN@+RlTJ-d9#y8qrtqezJDc~NRbQvX(|YP+iW>;HpML^5{~Xf!$q4_s5?;x$ zbLgB}ak6K{$>yBOOgc3+c~qGao5Gu>?rh$7R(+ikPwT0RDQ+O}uKm37TV2T{*p;a} zGb=aD`=paSE6z$!W>%cDPS2h^eP3qZRGywrHm^8O>sh(8nX?GEp9jg6zk)k6`F`{C z6(@UEoNUgi%&a)slTP+zCY_b3mCRYq`_9^TdQPQt)_t;B=Q;xJ=fQU6*L!Cs-*}$B z;$+W?lg&AmnH48{(#f98q_Z-$k~yn+-&y-kSIx=%LiTu0y)`?-EvDUwWP(wR)< zqjIXJoD`cf6;83zTvHWJrygw*)w3e1c~iKiQdCbqnm8*{m6?boUdQQ~Dol~rs7yUtaVoq?RP&0c=1t+6N>M%eXyU9)Rc0dc zh)Fmf)p$KBXP?;AQ{fc*PIv0(CE$J@{Ok8Tc^#)`sxU=fqcZhq#i{TnQOzr&nm2`O zDn<3=qlvRJRhfy%BPQW|RO9uioPAsXH@y z)w52|=5+R*wQp+Q>HDTuZg^JnzO&9cJ$rQCNWlF(-rCAv)18_8EuD3GHm9@itbJ4a zPTx1Ra>KKl_nmdt>Di<6Mgs2V@zz%Un(oZxZ|SVlvpJo8XYHHXcly4ml^dSbyzi{D zPR|~lHxh6^kGHn+*K}tle@kbbp3Uj(J8R$6zSH+jt=#ae=6z?Kb$a&bype$WdAzli zzot7g`CB^c^lVON-&y;n_MN_OYUPG!HSas?tkbhc=Zys1&*QDF{59Q~$=}jhr)P6I z`_9@oweR$OQ!6(-t9jp9XPursI&UQKiv3(a^%TiGGZUxAD^pI2Nv0m9nDk^gof@x4 z<)m22O+C&fx8rzTDnrpT$xq_c0TdNz%33fB=OHjQVvoGP4%P2uXP zsS@>QA}XwSJ^}ahct`bnp1iV2rXHop!puyZ8m~+_DONH$HF2siMNVZVoqbc)vuS)& zxQ-~XX*|Q_RN+Ky3Rh1}m8eG(QDMdN2|Rf}KcAjAlz;>za2)~n^L1=(mVg8#aD;&S z`3OB{B_II_Tt~qDd>vbxB_II_93kL-K0?n~2}nQ!*AZ|(U&q#F2}nQ!M+mr|kI-{g z0uqqGbp+hc*Ri!(0uqqG5d!Y#BlMh=fCMCP9Rc_Ab!=^xfCMCPgn;|`2t8*dAOQ(n zN5K7j9b20vAOQ&+A>e*KLeE(VNI(MD5pX|W$JS;ENI(Kd2)Lh*&~sJ-5|F@k1l-Tp zv9(zO5|F?V0`BJ{^qiG|1SD`B0r&HDY;Bf+1SD{TfcyCfJ!d5#0SR13!2Nt3Tbm^y z0SO!-;C?4e|`G@_T9uO2}nQ!5+H%om$QWukbndvAOQ(TKmrnwfCMBU0SQPz z0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8< z2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMD)TTb9tzxwqb{n=ms&M$t;G5GZ* zAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnw zfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQRp zbOL|=7k}#iBp?9^NZ=rW)0guPg$J+XxCA610SWv-;JW?%xBfo~NI(J-*hOIcpC|Y8 zE_e<}KmroDkbwL7Lbz5-KmrmtK*0Tc0G^`~kbnd(B;bC&5U$k{kbndZ5O6;qfajGrwc%{EJ)9aF#k7hSO!} zQ(w`;e(J4fF~8Eo{Lnd-&dOA_oz=5)dUqCmYIb%$GinJ80`BMTm(cwk(WicL5AR96 z_0G(%^e{hkPNlOlm2GGBteoDRMW33TozIL~0)xQ2_Vf5{cc0@Mt^EFvWH?LR{i3=I zed;TE*iXInEaumHMlwG~+e#15rRFR(Gt^y%{?Og$Xk)(XU&(M*ErBH9eoiLCS^4|w zGVJU!^r<;Z-DT)gce7ol%hRV`?-|Mb9BnH-JeQiY)XY$K8TvzapQDZWu74%NS+xX` zz#I27zeWBP%>S~+?2!ylq~@(s=ZVa$^kf5_t>25Mr#^BYwq?(X!-lzL8+A7|GWp4T z_H@ol&pg9()e=Yo?q~i5kq`aUBRPCdb-HU<@5u%_?4dt2Zk$US{oTa{^hyB!B&tiV1 zXXKfr&Zq3B9#i?589J%+^pQ!Q4t1ALKc_M?96u${5pX|uWLEyZx(qwJ41H?OQg<2p z)ZJ{C>GJfcS9(UCN$Pyce(EumpP8YPI!_;&^yyG{`Sf!tGsE#y0v&-j?&tAc#_vD> z3ew5%ek8+L>O6(_%%_~C&gAhP_ET>?i}{tF%;!`(oErM-OxHjBe40+)b0w4CR7V0N z;C?0z>XpB*F7vb=-jka5q&_Q?o!OiYr-r^d)AbKOpQe-dT*>4&)sX-Rymvp3Z;^im z!|6UbHP3WO((5uSx4NQd&(WcNzMf-r92{-_7!FU8eIntCoNS z?j+!TCT;F0>MldS(_4Fv@SmVT$%&&(D6 z=*-U}=W3q(rB_M%23AmrRmpaWi!VLXRclj&)u9J7`GM&#^wFD$^CxPGQ z{mhLtbUOJin8~NNar&{-Q}3sDkbng4 zA>e+#hqI?hKmrojO2GZRm6&-6NI(Mj5O6==!`V|LAOQ(%CE$MEO3b_jBp`u%2)Li` z;p{0AkbnfX5^z6nC1zd%5|F?>1l-T}aP|}lNI(Kx3A}4R^S{y)e?}v)dbwnW2beSZO)&w)H%hcc~&~3fj%|+=~Exc zbhGr;5|F^v1m3luI~uu{=unS_bmo3{Zs)U~ntA%v_h-7($4%x>d0VvvBycVP_cM8( zwTsw8-JSLGX1deIZRbz7)ee}(4v>iWCP@K>hTpq79H&L!Y}KEjh5tn2AA^smso zPuJgNhQBh!2DJnva4rG&^AVohU|mm_p+EFlPTnM&k7u$$M*kmY*}(lq%{KbfM>1n}wDB`L`7}>Yhs|tLOF#nG5qRT% zzK({?5|Drdo{G4~;O(Y-z36OyMnKaZAkbnf9L%{v~oOj_(Bp?9^kbwJ{G}IE1 zfCQdH!2SH3ci~MWAOQ)Gfcu#=)Dn<@1fD~{{rsGF;Y}nU0SS z{G4~;O(Y-z36OyMnKaZAkbnf9L%{v~oOj_(Bp?9^kbwJ{G}IE1fCQdH!2SH3ci~MW zAOQ)Gfcu#=)Dn<@1fD~{{rsGF;Y}nU0SS{G4~;O(Y-z36Q|M z_Vdbrcj^AjIFX+uJT#x~yWz@Io}11}Pu`Xezftz5!`VDNoq2zk&vSJo@OA?3XTCxH z?NiS)Bgs$Zhvw7uX7;R1G2iKxp1ds`exvRb`kc+v)0y{od7h}2z&8lEpT~R5zxsVn zwq?&e!+fXt+hc})r!&9eWLr+HXE;ke8q#6&{3(-a3A~+v`+2;<{Hx#RWLx&kGt76I zzdB~mcZKyxSzYfcly+P<17Bw4D+2{xdSuQXLYiN z{nTBCey7<(%{+az1inYW{oMV%)2HTdV8!2>VZPHVcVLG4tWNf@pSsJ??=*X;nWwLo z!1oBecR%y*H1%-ubG*Uy*^rs;z2_8XQ?rM&TQ!?G%l=M}e10;YPxF-Z44a2$+e!}` zI7?qGf$tG;KXX6u{dRt4=nTyrLd_)ot(vEBmi?U``TS%)pXMp+88#2iwv`?>aF)JW z0^cL>)%~1rihtMCOw#Xkm+yS`oRwiGHTyf=<>^yj(Zhafp0(BItXcx!AmD!Hd*n{& zbeHdZ_MDYrCpG&!-R0?1U(v&UYM!;#=d4-+-yrbD{mj4Iq0`B?b3DU_(VtHG=Vr1k zo&4@}x;%Yq&Qf<7`qbU*N~W8oua>~~2)Lj5PPr?nM`p#zWKJE)WLrA?Myb0zed=t; z`!mB?>LZzMmcCj7-y`tG{hV(h_rP%Y$tn8OnV~cE$Wya{PdPi!%%^x3JLi5TnP0h2 zW_Zu}Q=Xp5`BR=UzjG$ptd_vr3AmrRJ@_`ezkT|grDo62e98ts?WWc<*^o}&q`S{N zIe*G?GdX{{?>_8QOW+#>-nE~Xm$#Nq;!` zIlmiwa+VHnKJUz=jszrdE&=y*x1G4t$h`BJpN~pX0>Lr=PQQc=Mdir#cdl zz;y)PwV!kUq|>otlA3w?)Ln*tr@J2Jy9|A5&QfP)#bHD0Y{-m`1SD_;0rxYhau-o| z8Ty^>dYJDr^r<;ZotYJf4XLvsGddEGz!e1EwV#u~`u1Rwnw|8iyA1tKcRkE^8T!Y1+ zj|_Jjr{aBUsswE(SBLv*f zq{m$}G@X%5hYhK_Jbh|5(5GgGIx{N{8&YROW^^PVfh!2OpGlRwXlObknGPFLcX|5M zY@kog40UE!95$rRhRorBn*<~vfu|90KR@k_cpnK!Kmvn+``KTD1SBAVXA*EfKl8nKD+x$I0`6yj0}_yc z1fEI2{rt@L;;keg0SUOD{S8P!0up#80r&GW-;1}BfCMDqe)cyY0SQRpnFQR=&wMZ5 zN&*s)fcx3sfCMBUfoBqMKR@%mcq<7=KmzV(e*+SbfCQdN!2SHp_u{Q2AOQ)upZyI; zKmrnYCIR>JGvAB1l7Ivx;C}WuAOQ(T;F$#6&(C}>-bw-zkbwKy-+%-pAc1ERa6dou zy?84LNI(MaXMY0{kbnf9Nx=R5%=hB0Bp?9^xS#zENI(J-cqRe&^E2Ozw~~MaB;bDb zHy{BCNZ^?S+|SQ^FWyQ55|DuV+24Q!Bp`uj5^z61^SyX02}nQ!?q`1k5|Drdo=L#{ z{LJ^_tt21;3AmsA4M;!&5_l$oC-3K9{@(A7|4quRO96w6f1?9NhhyyR;HS(FhylbRHmF2u`)Hu z)T4=*T%)E|G8IlS8TZj+3A}Va*UvA(P99}Aog7amr^;CguVkvQL{6w zotm0Fs!WMZ;Z0L_Ht##DzD|j!_0+`_HxO_?{{(XWIi&NG5&m-}ypmz(&^fi@WY3C| z%{i5sbZTnys4^usg*Q#z*}U(p`Z^_^)>9W#+(5wn{1eFe=a9}%M)=Q_@JfcAL+8|r zlRYa=Hs@4k(y6J*qso-n6y7v-XY;g$wvT2Ea}aRY&O?dO%>>PjZTu1wvTS-D}} zC!OqBaaMXVv*Mg}diLb$`!f5c^7M4FdBu5J&&r+6oJGL>JV>tm72KK0_nW7$IN7t} zWOGhsX2r>#bh0Ni>8wnxWX@{dchG+d0r&IZU%%(c>o`4Ag(>nHm8nN7PK7s#YF-i5yeV8$DXJ$Q zO`Mgf%1lHaF$w3R8m~v?>=T=MDx6~9=}!H;1YWV9Cy45ISebO{(L}6F-I>X&o^^UQ zr?c;@eN+2R-#4{#!?T+Aopsjf*`xDD0`BMW)>i(S?#$$G>8#VUIh}oH?VH+n`o5`^ z8=lp?@2s;<&mNsO5^z6{x3==vbY~`iOJ|*)&FSnrYv0tq)AvoS-0-aCeP^9@diLnN zk%0SoytS3TraLqFTRQ9XY))t2S^K8;oxX2s<%VZ9?>ppo=dEZ%Qot`~9ZzSM;9&c^suj$TA{+7--6l=c_V>W?C1Kar%2|RnK(6GnQ~H0GW96Mq$k7a)ObBAC&fx8 zrzTDnrpT$xq_c0TdNz%33fB=OHjQVvoGP4%P2uXPsS@>QA}XwSJ^}ahct`bnp1iV2 zrXHop!puyZ8m~+_DONH$HF2siMNVZVoqbc)vuS)&xQ-~XX*|Q_RN+Ky3Rh1}m8eG( zQDMdN3AmrfJF4IF>`SiS@1SBAV>j=1?uVZVo1SBAVBLv*fN9Z{# z0SQRpIs)$J>)6^X0SQRp2m$x=5qi!_KmroDj)435I<_`TKmrmtLcslegr2h!kbnfP zBjA3%j;+lSkbne^5O6;qq35gwBp`w72)LiGV{5YnBp`t!1l-R@=s7C^2}s~N0`BMQ z*xD=s2}s}w0r&F}dd^Bf0us26fcyD6wl+&Z0unev!2NuLp0g5=fCR21;C{Z2t<4gU zfCP>Za6ccR=d1)IAc5-$xSy|MYqJC-Ab}$U+|NhoIV%APNZ>jG?&s^++AIMHNZ<$o z_wx~Y&PqT661a|l`}sPyHcLPP5;#J@{d|O;vl5Vi1g<0Ce!h;a%@UA+1db4JKOdpz ztOO(=f$IpkpRZ$Uvjij{fg=Rm&qwGvD**{e;5q{C=j+(oECC5f;0S@M_w(rYQvwo@ zfCTmt_^ZG9>(l?Y?#|IhFbKOwQ6_5B0hCVe`W@hEi%ybRR z@I>CQ^Rtu5`BV0H$@GWAQ&MMUrDr9RXX!|Q1ireT`5jZ|U)*|zv((uzoGwG3`idU* zQ*S+s`IR2#ht8>VR;IG;te%zAyR+z1v$OM=QA=PDa6fmygzoQ%KJ}A(cu(rBcV>R2 zhxws%DxH<7Y&)xG<@D|>`qb>~d}h=V7zEz6pT}>z`yAhB<@bLi!&&O?7u99xQ(w`; ze(J4fF~8n3lKDB>R(g0YHD{@rq3$yDhweT{8}nWNN`|v)2_ymcb21su%HLO)VP}`2 zPt95CE<>NXo9!}Po<8+@&q(IyXj|#wxzwDcW`?@U&>y<{9Bs^Z{VN&HswI#F-ngIn zE%L8m{+Bgok7RfvHE)$VPh@7LCmZN&{a!ph^^yCqEqhiRHq15KsJp3=$xr69r*l?% z<{6%=mOv74Kl3k$eCVeh$>DRV(_O=QPd3nD5B;Het91C3J?YcQQ?hxV!&By({nXvm z$mA#U+0!{IJ@X9DRZAcVylX#?`}6OGI-lnEJ)Yr-)LYNuEcF#V?5Ey(7V|4TBhMst zK4m}kn99%0&`F)Ak4*Y>sJndnIhC2=_$h&ofcv>4v-0=VW!Twe=u>l+y35d~?q<78 zm#0s?(lhc*Qs-0lQ;(_q%nY5>dHTqtPlvk8r=L@q8IGS4=m@-VKacM+e*gJbkWPO0 zBN@(8=PA5rKIJTRCXe^9pL*+A%&+uhKBv;*)X-OFy8hwk({%ElE1CSJIualO_cLiw zul#*=nWy#ep47Z2^;wzh%;t1BHT2b)u7CLXG@ZQXN+!Rljs!^Hz5985i~K7XPWQ>F zd8SK}UYA+9)fGJ}-{{Dl`MtWcnCZS_=V#~qws}@IFf)Iex8mu1y3(_fVW(OGNx=P_ ze@CP=e>#$x8P5GZD>pfEXMV5lEM`c6=XQQ}aw?zZS@X>NY2J#b^XW>@N`{?k2_%8H z@8|qRIuek81inGQ{rrvh=(mu71inYW{rtUm>Nk>r1inGQ{rrvh=(mu71inYW{rtUm z>Nk>r1inGQ{rrvh=(mu71inYW{rtUm>Nk>r1inGQ{rrvh=(mu71inYW{rtUm>Nk>r z1inGQ{rrvh=(mu71inYW{rtUm>Nk>r1inGQ{rrvh=(mu71inYW{rtUm>Nk>r1inGQ z{rrvh=(mu71inYW{rtUm>Nk>r1inGQ{rrvh=(mu71inYW{rtUm>Nk>r1inGQ{rrvh z=(mu71inYW{rtUm>Nk>r1inGQ{rrvh=(mu71inYW{rtUm>Nk>r1inGQ{rrvh=(mu7 z1inYW{rtUm>Nk>r1inGQ{rrvh=(mu71inY$UHkcu|Kyjy@qc_TzcEneNREGUs`G2G zL{63q(rB_M%23Amq0n>&iS%h2!i)}ABzZkBiJGM&#^wFD$^Cjs{} zX>&(WcNzMf-r92{-_7!FU8eIntCoNS?j-Ql{XDh}KS`ClXhnCk^gGRdX0Gr@XMP?z zm$PaKNZ?Ka?q}}FPVsEX6Sdi%U|JloxEF@>3q(rB_M%23H&ziXKtjS z)5&+iOg>Gg%U|JloxD|->3q(rB_M%23AmpJ?XjJ>qp0~tI-eQpE`NpJbso77XVnsr zz?}r%xSz)s;wOpGPd$>u=Tzr+4LRF6XPuQd$>uJzlI-rUF98YsTm;e+#hqI?hKmrojO2GZRm6&-6 zNI(Mj5O6==!`V|LAOQ(%CE$MEO3b_jBp`u%2)Li`;p{0AkbnfX5^z6nC1zd%5|F?> z1l-T}aP|}lNI(Kx3AmrP5;HFW2}s}`0`BK~ID3i&Bp`vU1l-SCiJ6yx1SD_|0r&Gg zoIOPX5|F@F0`BLn#LP=T0us1~fcyC#&YmIx2}oco0r&G(V&)|v0SVkg!2Ns=XHSuU z1SGJPfctqXG4m3TfCTO#;C{Y`v!_Tv0utCt;9dKf|FtIS?px=70g6dB%#)m=&W5fh zli5ROXtq%^NuT;irkka&mVgAVCg6S^JFVMnbN-yA&M7|4v(gz2^r_iTpZZ9qo29Ro zfCR24@UH#b(a60-hk7)mGxxi5JD>g3%+sg7KhvE)ZZdz$+o~lXfpZDCpULyAUBn*h z?yR3T)15wUJAcY=q?UjL&L!}@{oL&n`qbpv`OK_n_E2+{KJ}fM?%eJU^wkoOz|{oY z&m_FEubA&Nd#IVGPkm>mJGZ+7eYFH6a5aH9?&q;p_(@9L&Y@2|X1g{vcbcLYAddb$k#D>T1X*WYD^zcR%JwFD$^E&=!R5uV&&T~C*xe}(3Ky8bRR z{FNy-s3jnQa|yVgkMQIM>w3Bj{h`lt@+R4QJd+JN5|F^T1l-R@cyjM`Jza+W&}TV$ zlWabo$p#$>NZ?!o@7mAfyK|dS^J!Azj$)DxnaQ4XvVlF+oTX2FBr|458$Yv?PxJJ2 z*vvMy1SD`B0r&HKQ>~EC2JSa%w$Z0Pk{Pq3ji1@cr+IohY-XEU0us26z#I4Tbu?_2 zfCMD)90Km==e!GVA^{0VfCSvnq@k981SIer0`BMMybEt40SQQe1l-T0p_YIIB=8&p z?&s&c3vVI;2}pnh+|Q(;mVg8#@Eii}=jXf&Zz2H+NPq;~&!nN2fCMD)90Km==e!GV zA^{0VfCSvnq@k981SIer0`BMMybEt40SQQe1l-T0p_YIIB=8&p?&s&c3vVI;2}pnh z+|Q(;mVg8#@Eii}=jXf&Zz2H+NPq;~&!nN2fCMD)90Km==e!GVA^{0VfCS#PpI837 zOZR8SiTottq4{**4Ogb}+;moY^0svNjj}%-&gSXq%=^21o~t8)w-azb^9}NEpL(7d zNq#avG@q_Fvu9!&&OlkPe&YPnlFp;Ozw5&*Kf|U;REO+p=e#VZPJ+)iFcA z)0tm!vMs09Gn}O!4e79X{*+0z1l~@-{oMV%)2HSeU-7qQnD6w;9hjj$tCKzKr|vTJ zJIx+y=IN^?@I3EB@9D^POI~12fcTb+U*3)Ln*tr`bczJbkqUzDMA_ z`?C|G*4O2uz6^flyL{)f z=d27nsoCG@E>EBOiXQe;^Q^5tXVnt;27x#3Xa405old@;;~6%L{&dnmH^y%mb%N(r|xD~GTkhFwFJIL!2Qg3%3VP{GAm9dbLvPY+tT4TO5Nq@Q)ffopBc_l zAIWsH^wkph9)UOR=X?vf2ZqB>PSK~%44t7zo|+AO%Gr5lKE<=xIrlTk{K|bY!+Xx3 z^7Ks3pYoLXoioX1wFKTy!2Qha!MEA{?bGKhHG78UQ#SBvH?^M0hIH~K-F@cC`BR>o z$@$ZL_hF}60^cC;uKoNC=6(waNI(KB1l-Rnl*~v#0us2NfcyD==AI}42}odtfctrc zk{Jm|Kmzv@a6jMA+!G}r0ST-Sa6hk5G9v*ANZ@_~?&tfNd!hs+Ab}ME?&lRsW+Wg1 z3EWS>{d_-jPn3WJB(Orj{k%fSj07Ygf%^%#pYLbxi4u^21Xc*RpI0cEk$?mwa6bX} z^Zm>{Q34W>zzPBP^9m(15|Drd?kC`WzMr`#N8D z!+e*aPt95C%&a(UNSzIt(UE`zt|0KP{hS2Ww+EBd?4(cKW$1Uh>tVjj(5L1sH8a#* zhJL5Jo-VI10STN%!2L{;+(pz~hJL5J9_G6YeQM59Geg~F=y$s7>GJv#kic04zPg{s zR^ca!bvuVX^_cD2*qoYE)J)P(&C@xRnzQ+oJxmTg&v#GtB_M(82)LigmYa%tWVq8f zHP@V?<`n(ZJe^aiIh#+}!{pHOeD_pe0us26!1wm^eA^6?U55UOUU@Ie){J?^5R z>5ODLY)IYZ=~J_TJ~cDcnOSkzkUASOqay(cTtUG7Osd>PL(>__bl8x(%hRW31AS^{ zs57(TupxCeWJX5<61alEd-wC$8~h|6`qcAGKBY7CXiL9ycsh0F`LsJFGfYympMKY{ zHN$?j1SD_;0rxZa6$x`+t@zAPv!9xoq4{)vdY7C}b*HdxJ(Ks>k$?owCGg(;d@cvu zBp?9^JdJ?+`Dt&&`$#|n5*P&B&;Al5AOQ(HlYsmAneWA0Nk9S;a6kJSkbndv@Js^k z=V!hbZzTZG>~BB<5|F?% z3Amr1`Ch!01SB8<_p`qN2}nQ!&m`b}e&&1eRuYha1l-U51|%Q>2|Sa4`}vvg#al^0 z0updP`x}se1SIfG0`BK$z87yL0SQRJ{p@c*0uqqGGYPn#pZQ+Al>{Up0r#`N0SQPz z0?#DietzbA@m3O$fCSvn{str<0SP>lfcyEG@5Nh5KmrnQKl>YyfCMD)OakubXTBG2 zB>@RY!2RrRKmrnwz%vOvc|ZU1_kMT$Z-Oo}<*bNJ%`4$NG^a8%aVF#SsK(1VC{_wH zlTKdatV}gmVT#I>s7yI4Vr6QQsYeqrxkgQ`WGb9uGVY_t5^z6vucm(CU4VXtQ!qAk zW+u*LydKqfIS0i`VP?|FYn+v-<|<54nG%&LXGN?`O)~XpA|}_Usg+EHQ%uHv^jHG! z=kC?iFT4xTuW$;+hR)2ynT*$?8ZYOdSSid*I(dz=GSys#DJoNil_{|)ylLvr=6z??*D3L|p1PRg1_JKqpFqw(hje~2!hf!WS2FAzI;U2g>{)TL zIj1s{PEAc7Ri?zI@TRFdoA;enU#G;=dg@||8wk8>Kd<~&S2789W$Mn%$_?{A>15A} zv(l5973ZwevnNmAm)SR!r>B$6E6&q;R_<)(ECTN5L2~7<;Lc3G-#mTA$(|J_n{z5N zD^B*LlRcS9XJu+7b5`@dv-X{yQ|X*_pKR8-j)41luwD7}-kHfao~N%k*|Xwgb53Pu z#mSy@vL`d?tW2$B&T8Iw*1pqoDxI_Llg&EU5qQOZuAf$lB$JtRCR6#Soa!kj#imS! zQ>--CRE5*2N1H_TtcYsf6t1Zh)sv4V&dO9}CL)iRg!562*Q0XwiA_BfPO;S~E$ck1UQ@QVFBK~%rP%A`||CSqmk&P-nQtkbhOoqcER zo7#8!zNwWPp4GhXtg}wf9-TK5a6gZ?w({3>XC{A3XPutS>Fhge-_*X-_f4(b@T}&2 zXPtF=_UOEkfcts8wUxi7J2UxPI_vaoPG{d)`=<7tzHe&fhG#YJJL{~|vq$HR1l-T# zt*!hu-I>YX(pjfxb2|IZ+BdcD^nFt+H$1C(-&tp!o;^BmB;bA?Z*AqT>CR04md-jo zo735M*1oBIr|+9ux#3yO`_4M+^z6}jBLVmGcxx+vO?PJUw{+I&*__V4v-VBxJAL2O z$_>wI-gnknr)Q7O8wtE(Ki5w^MKaIK#HsPhl#^nTsYfX$JsD1?#_LfzDONH$HF2si zMNVZVoqbc)vuS)&xQ-~XX*|Q_RN+Ky3Rh1}m8eG(QDMdN3AmrfJF4IFd{10Sn+%UPu|bZr{@hNAOQ(nN5K7j9b20vAOQ&+A>e*KLeE(VNI(MD z5pX|W$JS;ENI(Kd2)Lh*&~sJ-5|F@k1l-Tpv9(zO5|F?V0`BJ{^qiG|1SD`B0r&HD zY;Bf+1SD{TfcyCfJ!d5#0SR13!2Nt3Tbm^y0SO!-;C?vbxB_II_93kL-K0?n~2}nQ!*AZ|(U&q#F2}nQ!M+jWKpGUu+5|DrdB(RUb zU;WKrpZ>pnH*rb=5|DrdNZ|D4Y@q}sAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ! z5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^ zNI(J-kbndvAOQ(TKmrnwfCMBU0SWw;6ZnsQ{h$Bc|Kgwe#V>yKt6%@oKmUtg{NkVf z;s5{HU;a-0`yc + + + Challenge Reviewer Workload SLA Guard + sci-bounty-review-2026-05 - hold_review_window + + Blockers + + + 9 + Warnings + + + 3 + Ada River + + + 130% + Ben Cross + + + 75% + Cora Field + + + 56% + Drew Lane + + + 63% + Eli Stone + + + 100% + Review gate + + + hold_review_window + Audit digest: 4eeac8cabcce4c5cb4bb5f42... + + diff --git a/challenge-reviewer-workload-sla-guard/reports/workload-review-packet.json b/challenge-reviewer-workload-sla-guard/reports/workload-review-packet.json new file mode 100644 index 00000000..fcab5cd7 --- /dev/null +++ b/challenge-reviewer-workload-sla-guard/reports/workload-review-packet.json @@ -0,0 +1,782 @@ +{ + "riskyResult": { + "summary": { + "challengeId": "sci-bounty-review-2026-05", + "title": "Private climate-model challenge final review", + "status": "hold_review_window", + "evaluatedAt": "2026-05-27T17:00:00.000Z", + "blockers": 9, + "warnings": 3, + "reviewers": 5, + "openAssignments": 5, + "criteriaWithCapacityGaps": 3, + "activeArbitrators": 1 + }, + "policy": { + "maxReviewerUtilization": 0.85, + "nearCapacityUtilization": 0.75, + "minEligibleReviewersPerCriterion": 2, + "staleReviewHours": 24, + "dueSoonHours": 12, + "inactiveReviewerHours": 72, + "now": "2026-05-27T17:00:00.000Z", + "escalationLead": "challenge-ops-lead", + "arbitrationBackupRequired": true + }, + "reviewerStates": [ + { + "reviewerId": "rev-ada", + "displayName": "Ada River", + "expertise": [ + "climate-modeling", + "reproducibility" + ], + "roles": [ + "reviewer" + ], + "canArbitrate": false, + "status": "active", + "contactWindowHours": 8, + "weeklyBudget": 10, + "committedHours": 13, + "openAssignments": 2, + "utilization": 1.3, + "isBlackout": false, + "inactiveHours": 3, + "isInactive": false, + "isUnavailable": false, + "isOverloaded": true, + "staleAssignments": [ + { + "assignmentId": "assign-forecast-ada", + "reviewerId": "rev-ada", + "criterionId": "forecast-skill", + "dueAt": "2026-05-27T09:00:00.000Z", + "hoursLate": 8, + "isCritical": false + } + ] + }, + { + "reviewerId": "rev-ben", + "displayName": "Ben Cross", + "expertise": [ + "ml-validation" + ], + "roles": [ + "reviewer" + ], + "canArbitrate": false, + "status": "active", + "contactWindowHours": 10, + "weeklyBudget": 12, + "committedHours": 9, + "openAssignments": 1, + "utilization": 0.75, + "isBlackout": true, + "inactiveHours": 4.5, + "isInactive": false, + "isUnavailable": true, + "isOverloaded": false, + "staleAssignments": [ + { + "assignmentId": "assign-ml-ben", + "reviewerId": "rev-ben", + "criterionId": "ml-validation", + "dueAt": "2026-05-26T09:00:00.000Z", + "hoursLate": 32, + "isCritical": true + } + ] + }, + { + "reviewerId": "rev-cora", + "displayName": "Cora Field", + "expertise": [ + "climate-modeling", + "ml-validation" + ], + "roles": [ + "reviewer", + "arbitrator" + ], + "canArbitrate": true, + "status": "active", + "contactWindowHours": 4, + "weeklyBudget": 16, + "committedHours": 9, + "openAssignments": 1, + "utilization": 0.563, + "isBlackout": false, + "inactiveHours": 1, + "isInactive": false, + "isUnavailable": false, + "isOverloaded": false, + "staleAssignments": [] + }, + { + "reviewerId": "rev-drew", + "displayName": "Drew Lane", + "expertise": [ + "reproducibility" + ], + "roles": [ + "reviewer" + ], + "canArbitrate": false, + "status": "active", + "contactWindowHours": 12, + "weeklyBudget": 8, + "committedHours": 5, + "openAssignments": 1, + "utilization": 0.625, + "isBlackout": false, + "inactiveHours": 124, + "isInactive": true, + "isUnavailable": true, + "isOverloaded": false, + "staleAssignments": [ + { + "assignmentId": "assign-repro-drew", + "reviewerId": "rev-drew", + "criterionId": "reproducibility", + "dueAt": "2026-05-25T16:00:00.000Z", + "hoursLate": 49, + "isCritical": true + } + ] + }, + { + "reviewerId": "rev-eli", + "displayName": "Eli Stone", + "expertise": [ + "methodology" + ], + "roles": [ + "arbitrator" + ], + "canArbitrate": true, + "status": "active", + "contactWindowHours": 6, + "weeklyBudget": 6, + "committedHours": 6, + "openAssignments": 0, + "utilization": 1, + "isBlackout": false, + "inactiveHours": 1.8, + "isInactive": false, + "isUnavailable": false, + "isOverloaded": true, + "staleAssignments": [] + } + ], + "criterionCoverage": [ + { + "criterionId": "forecast-skill", + "label": "Forecast skill and uncertainty", + "requiredExpertise": "climate-modeling", + "minReviewers": 2, + "eligibleReviewers": [ + "rev-cora" + ], + "assignedReviewers": [ + "rev-ada", + "rev-cora" + ], + "hasEnoughCoverage": false + }, + { + "criterionId": "ml-validation", + "label": "Machine-learning validation", + "requiredExpertise": "ml-validation", + "minReviewers": 2, + "eligibleReviewers": [ + "rev-cora" + ], + "assignedReviewers": [ + "rev-ben" + ], + "hasEnoughCoverage": false + }, + { + "criterionId": "reproducibility", + "label": "Reproducibility package", + "requiredExpertise": "reproducibility", + "minReviewers": 2, + "eligibleReviewers": [], + "assignedReviewers": [ + "rev-ada", + "rev-drew" + ], + "hasEnoughCoverage": false + } + ], + "assignmentQueue": [ + { + "assignmentId": "assign-repro-drew", + "reviewerId": "rev-drew", + "criterionId": "reproducibility", + "status": "in_review", + "dueAt": "2026-05-25T16:00:00.000Z", + "estimatedHours": 3, + "dueBucket": "past_due", + "hoursUntilDue": -49, + "reviewerUnavailable": true, + "reviewerOverloaded": false + }, + { + "assignmentId": "assign-ml-ben", + "reviewerId": "rev-ben", + "criterionId": "ml-validation", + "status": "in_review", + "dueAt": "2026-05-26T09:00:00.000Z", + "estimatedHours": 4, + "dueBucket": "past_due", + "hoursUntilDue": -32, + "reviewerUnavailable": true, + "reviewerOverloaded": false + }, + { + "assignmentId": "assign-forecast-ada", + "reviewerId": "rev-ada", + "criterionId": "forecast-skill", + "status": "in_review", + "dueAt": "2026-05-27T09:00:00.000Z", + "estimatedHours": 3, + "dueBucket": "past_due", + "hoursUntilDue": -8, + "reviewerUnavailable": false, + "reviewerOverloaded": true + }, + { + "assignmentId": "assign-forecast-cora", + "reviewerId": "rev-cora", + "criterionId": "forecast-skill", + "status": "queued", + "dueAt": "2026-05-28T03:00:00.000Z", + "estimatedHours": 3, + "dueBucket": "due_soon", + "hoursUntilDue": 10, + "reviewerUnavailable": false, + "reviewerOverloaded": false + }, + { + "assignmentId": "assign-repro-ada", + "reviewerId": "rev-ada", + "criterionId": "reproducibility", + "status": "queued", + "dueAt": "2026-05-28T04:00:00.000Z", + "estimatedHours": 2, + "dueBucket": "due_soon", + "hoursUntilDue": 11, + "reviewerUnavailable": false, + "reviewerOverloaded": true + } + ], + "blockers": [ + { + "code": "assigned_reviewer_overloaded", + "message": "Ada River is above reviewer capacity policy.", + "evidence": { + "reviewerId": "rev-ada", + "utilization": 1.3, + "openAssignments": 2, + "weeklyBudget": 10, + "committedHours": 13 + } + }, + { + "code": "assigned_reviewer_unavailable", + "message": "Ben Cross cannot complete an assigned challenge review.", + "evidence": { + "reviewerId": "rev-ben", + "status": "active", + "isBlackout": true, + "inactiveHours": 4.5, + "openAssignments": 1 + } + }, + { + "code": "critical_stale_review", + "message": "Ben Cross has a 32-hour stale challenge review.", + "evidence": { + "assignmentId": "assign-ml-ben", + "reviewerId": "rev-ben", + "criterionId": "ml-validation", + "dueAt": "2026-05-26T09:00:00.000Z", + "hoursLate": 32, + "isCritical": true + } + }, + { + "code": "assigned_reviewer_unavailable", + "message": "Drew Lane cannot complete an assigned challenge review.", + "evidence": { + "reviewerId": "rev-drew", + "status": "active", + "isBlackout": false, + "inactiveHours": 124, + "openAssignments": 1 + } + }, + { + "code": "critical_stale_review", + "message": "Drew Lane has a 49-hour stale challenge review.", + "evidence": { + "assignmentId": "assign-repro-drew", + "reviewerId": "rev-drew", + "criterionId": "reproducibility", + "dueAt": "2026-05-25T16:00:00.000Z", + "hoursLate": 49, + "isCritical": true + } + }, + { + "code": "criterion_capacity_gap", + "message": "Forecast skill and uncertainty has 1 eligible reviewers, below the required 2.", + "evidence": { + "criterionId": "forecast-skill", + "eligibleReviewers": [ + "rev-cora" + ], + "minReviewers": 2 + } + }, + { + "code": "criterion_capacity_gap", + "message": "Machine-learning validation has 1 eligible reviewers, below the required 2.", + "evidence": { + "criterionId": "ml-validation", + "eligibleReviewers": [ + "rev-cora" + ], + "minReviewers": 2 + } + }, + { + "code": "criterion_capacity_gap", + "message": "Reproducibility package has 0 eligible reviewers, below the required 2.", + "evidence": { + "criterionId": "reproducibility", + "eligibleReviewers": [], + "minReviewers": 2 + } + }, + { + "code": "arbitration_backup_gap", + "message": "Challenge lacks two active, under-capacity arbitration reviewers.", + "evidence": { + "activeArbitrators": [ + "rev-cora" + ], + "requiredArbitrators": 2 + } + } + ], + "warnings": [ + { + "code": "assignment_past_due", + "message": "Ada River has a 8-hour stale challenge review.", + "evidence": { + "assignmentId": "assign-forecast-ada", + "reviewerId": "rev-ada", + "criterionId": "forecast-skill", + "dueAt": "2026-05-27T09:00:00.000Z", + "hoursLate": 8, + "isCritical": false + } + }, + { + "code": "reviewer_near_capacity", + "message": "Ben Cross is near reviewer capacity.", + "evidence": { + "reviewerId": "rev-ben", + "utilization": 0.75 + } + }, + { + "code": "assignment_due_soon", + "message": "assign-forecast-cora is due within 12 hours.", + "evidence": { + "assignmentId": "assign-forecast-cora", + "reviewerId": "rev-cora", + "criterionId": "forecast-skill", + "hoursUntilDue": 10 + } + } + ], + "escalationPlan": [ + { + "priority": "critical", + "owner": "challenge-ops-lead", + "action": "Reassign blocked reviews to eligible backups before sponsor scoring opens.", + "evidence": { + "reviewerId": "rev-ben", + "status": "active", + "isBlackout": true, + "inactiveHours": 4.5, + "openAssignments": 1 + } + }, + { + "priority": "critical", + "owner": "challenge-ops-lead", + "action": "Hold award release and request same-day replacement review or arbitration signoff.", + "evidence": { + "assignmentId": "assign-ml-ben", + "reviewerId": "rev-ben", + "criterionId": "ml-validation", + "dueAt": "2026-05-26T09:00:00.000Z", + "hoursLate": 32, + "isCritical": true + } + }, + { + "priority": "critical", + "owner": "challenge-ops-lead", + "action": "Reassign blocked reviews to eligible backups before sponsor scoring opens.", + "evidence": { + "reviewerId": "rev-drew", + "status": "active", + "isBlackout": false, + "inactiveHours": 124, + "openAssignments": 1 + } + }, + { + "priority": "critical", + "owner": "challenge-ops-lead", + "action": "Hold award release and request same-day replacement review or arbitration signoff.", + "evidence": { + "assignmentId": "assign-repro-drew", + "reviewerId": "rev-drew", + "criterionId": "reproducibility", + "dueAt": "2026-05-25T16:00:00.000Z", + "hoursLate": 49, + "isCritical": true + } + }, + { + "priority": "high", + "owner": "challenge-ops-lead", + "action": "Recruit additional eligible reviewers for uncovered rubric criteria.", + "evidence": { + "criterionId": "forecast-skill", + "eligibleReviewers": [ + "rev-cora" + ], + "minReviewers": 2 + } + }, + { + "priority": "high", + "owner": "challenge-ops-lead", + "action": "Recruit additional eligible reviewers for uncovered rubric criteria.", + "evidence": { + "criterionId": "ml-validation", + "eligibleReviewers": [ + "rev-cora" + ], + "minReviewers": 2 + } + }, + { + "priority": "high", + "owner": "challenge-ops-lead", + "action": "Recruit additional eligible reviewers for uncovered rubric criteria.", + "evidence": { + "criterionId": "reproducibility", + "eligibleReviewers": [], + "minReviewers": 2 + } + }, + { + "priority": "high", + "owner": "challenge-ops-lead", + "action": "Name a conflict-free backup arbitrator before any contested decision is released.", + "evidence": { + "activeArbitrators": [ + "rev-cora" + ], + "requiredArbitrators": 2 + } + }, + { + "priority": "medium", + "owner": "challenge-ops-lead", + "action": "Keep a standby reviewer warm for near-capacity assignments.", + "evidence": { + "reviewerId": "rev-ben", + "utilization": 0.75 + } + }, + { + "priority": "medium", + "owner": "challenge-ops-lead", + "action": "Send due-soon reminders with a replacement deadline.", + "evidence": { + "assignmentId": "assign-forecast-cora", + "reviewerId": "rev-cora", + "criterionId": "forecast-skill", + "hoursUntilDue": 10 + } + } + ], + "auditDigest": "4eeac8cabcce4c5cb4bb5f428e6a7da88c6fd46586d57f163c096207e5c1237f" + }, + "cleanResult": { + "summary": { + "challengeId": "sci-bounty-review-clean", + "title": "Private climate-model challenge final review", + "status": "ready_for_review", + "evaluatedAt": "2026-05-27T17:00:00.000Z", + "blockers": 0, + "warnings": 0, + "reviewers": 5, + "openAssignments": 4, + "criteriaWithCapacityGaps": 0, + "activeArbitrators": 3 + }, + "policy": { + "maxReviewerUtilization": 0.85, + "nearCapacityUtilization": 0.75, + "minEligibleReviewersPerCriterion": 2, + "staleReviewHours": 24, + "dueSoonHours": 12, + "inactiveReviewerHours": 72, + "now": "2026-05-27T17:00:00.000Z", + "escalationLead": "challenge-ops-lead", + "arbitrationBackupRequired": true + }, + "reviewerStates": [ + { + "reviewerId": "rev-ada", + "displayName": "Ada River", + "expertise": [ + "climate-modeling", + "reproducibility" + ], + "roles": [ + "reviewer" + ], + "canArbitrate": false, + "status": "active", + "contactWindowHours": 8, + "weeklyBudget": 20, + "committedHours": 6, + "openAssignments": 1, + "utilization": 0.3, + "isBlackout": false, + "inactiveHours": 3, + "isInactive": false, + "isUnavailable": false, + "isOverloaded": false, + "staleAssignments": [] + }, + { + "reviewerId": "rev-ben", + "displayName": "Ben Cross", + "expertise": [ + "ml-validation", + "reproducibility" + ], + "roles": [ + "reviewer" + ], + "canArbitrate": false, + "status": "active", + "contactWindowHours": 10, + "weeklyBudget": 18, + "committedHours": 7, + "openAssignments": 1, + "utilization": 0.389, + "isBlackout": false, + "inactiveHours": 4.5, + "isInactive": false, + "isUnavailable": false, + "isOverloaded": false, + "staleAssignments": [] + }, + { + "reviewerId": "rev-cora", + "displayName": "Cora Field", + "expertise": [ + "climate-modeling", + "ml-validation" + ], + "roles": [ + "reviewer", + "arbitrator" + ], + "canArbitrate": true, + "status": "active", + "contactWindowHours": 4, + "weeklyBudget": 16, + "committedHours": 8, + "openAssignments": 1, + "utilization": 0.5, + "isBlackout": false, + "inactiveHours": 1, + "isInactive": false, + "isUnavailable": false, + "isOverloaded": false, + "staleAssignments": [] + }, + { + "reviewerId": "rev-drew", + "displayName": "Drew Lane", + "expertise": [ + "reproducibility", + "ml-validation" + ], + "roles": [ + "reviewer", + "arbitrator" + ], + "canArbitrate": true, + "status": "active", + "contactWindowHours": 12, + "weeklyBudget": 14, + "committedHours": 5, + "openAssignments": 1, + "utilization": 0.357, + "isBlackout": false, + "inactiveHours": 4, + "isInactive": false, + "isUnavailable": false, + "isOverloaded": false, + "staleAssignments": [] + }, + { + "reviewerId": "rev-eli", + "displayName": "Eli Stone", + "expertise": [ + "reproducibility", + "ml-validation", + "climate-modeling" + ], + "roles": [ + "reviewer", + "arbitrator" + ], + "canArbitrate": true, + "status": "active", + "contactWindowHours": 6, + "weeklyBudget": 12, + "committedHours": 2, + "openAssignments": 0, + "utilization": 0.167, + "isBlackout": false, + "inactiveHours": 1.8, + "isInactive": false, + "isUnavailable": false, + "isOverloaded": false, + "staleAssignments": [] + } + ], + "criterionCoverage": [ + { + "criterionId": "forecast-skill", + "label": "Forecast skill and uncertainty", + "requiredExpertise": "climate-modeling", + "minReviewers": 2, + "eligibleReviewers": [ + "rev-ada", + "rev-cora", + "rev-eli" + ], + "assignedReviewers": [ + "rev-ada", + "rev-cora" + ], + "hasEnoughCoverage": true + }, + { + "criterionId": "ml-validation", + "label": "Machine-learning validation", + "requiredExpertise": "ml-validation", + "minReviewers": 2, + "eligibleReviewers": [ + "rev-ben", + "rev-cora", + "rev-drew", + "rev-eli" + ], + "assignedReviewers": [ + "rev-ben" + ], + "hasEnoughCoverage": true + }, + { + "criterionId": "reproducibility", + "label": "Reproducibility package", + "requiredExpertise": "reproducibility", + "minReviewers": 2, + "eligibleReviewers": [ + "rev-ada", + "rev-ben", + "rev-drew", + "rev-eli" + ], + "assignedReviewers": [ + "rev-drew" + ], + "hasEnoughCoverage": true + } + ], + "assignmentQueue": [ + { + "assignmentId": "assign-forecast-ada", + "reviewerId": "rev-ada", + "criterionId": "forecast-skill", + "status": "queued", + "dueAt": "2026-05-28T12:00:00.000Z", + "estimatedHours": 2, + "dueBucket": "on_track", + "hoursUntilDue": 19, + "reviewerUnavailable": false, + "reviewerOverloaded": false + }, + { + "assignmentId": "assign-ml-ben", + "reviewerId": "rev-ben", + "criterionId": "ml-validation", + "status": "queued", + "dueAt": "2026-05-28T15:00:00.000Z", + "estimatedHours": 3, + "dueBucket": "on_track", + "hoursUntilDue": 22, + "reviewerUnavailable": false, + "reviewerOverloaded": false + }, + { + "assignmentId": "assign-forecast-cora", + "reviewerId": "rev-cora", + "criterionId": "forecast-skill", + "status": "queued", + "dueAt": "2026-05-28T18:00:00.000Z", + "estimatedHours": 2, + "dueBucket": "on_track", + "hoursUntilDue": 25, + "reviewerUnavailable": false, + "reviewerOverloaded": false + }, + { + "assignmentId": "assign-repro-drew", + "reviewerId": "rev-drew", + "criterionId": "reproducibility", + "status": "queued", + "dueAt": "2026-05-28T20:00:00.000Z", + "estimatedHours": 2, + "dueBucket": "on_track", + "hoursUntilDue": 27, + "reviewerUnavailable": false, + "reviewerOverloaded": false + } + ], + "blockers": [], + "warnings": [], + "escalationPlan": [], + "auditDigest": "517b3424ac09f74731fb4245800bd0ae763d46d437e65a39b28d5142af6b39a9" + } +} diff --git a/challenge-reviewer-workload-sla-guard/reports/workload-review-report.md b/challenge-reviewer-workload-sla-guard/reports/workload-review-report.md new file mode 100644 index 00000000..be89539a --- /dev/null +++ b/challenge-reviewer-workload-sla-guard/reports/workload-review-report.md @@ -0,0 +1,60 @@ +# Challenge Reviewer Workload SLA Report + +Challenge: Private climate-model challenge final review (sci-bounty-review-2026-05) +Status: hold_review_window +Audit digest: 4eeac8cabcce4c5cb4bb5f428e6a7da88c6fd46586d57f163c096207e5c1237f + +## Decision Summary + +| Metric | Value | +| --- | ---: | +| Blockers | 9 | +| Warnings | 3 | +| Open review assignments | 5 | +| Criteria with capacity gaps | 3 | +| Active arbitrators | 1 | + +## Reviewer Load + +| Reviewer | Open | Utilization | State | +| --- | ---: | ---: | --- | +| Ada River | 2 | 130% | overloaded | +| Ben Cross | 1 | 75% | unavailable | +| Cora Field | 1 | 56% | available | +| Drew Lane | 1 | 63% | unavailable | +| Eli Stone | 0 | 100% | overloaded | + +## Rubric Coverage + +| Criterion | Eligible Reviewers | Required | Decision | +| --- | ---: | ---: | --- | +| Forecast skill and uncertainty | 1 | 2 | gap | +| Machine-learning validation | 1 | 2 | gap | +| Reproducibility package | 0 | 2 | gap | + +## Blockers + +- assigned_reviewer_overloaded: Ada River is above reviewer capacity policy. +- assigned_reviewer_unavailable: Ben Cross cannot complete an assigned challenge review. +- critical_stale_review: Ben Cross has a 32-hour stale challenge review. +- assigned_reviewer_unavailable: Drew Lane cannot complete an assigned challenge review. +- critical_stale_review: Drew Lane has a 49-hour stale challenge review. +- criterion_capacity_gap: Forecast skill and uncertainty has 1 eligible reviewers, below the required 2. +- criterion_capacity_gap: Machine-learning validation has 1 eligible reviewers, below the required 2. +- criterion_capacity_gap: Reproducibility package has 0 eligible reviewers, below the required 2. +- arbitration_backup_gap: Challenge lacks two active, under-capacity arbitration reviewers. + +## Escalation Plan + +- critical: Reassign blocked reviews to eligible backups before sponsor scoring opens. Owner: challenge-ops-lead. +- critical: Hold award release and request same-day replacement review or arbitration signoff. Owner: challenge-ops-lead. +- critical: Reassign blocked reviews to eligible backups before sponsor scoring opens. Owner: challenge-ops-lead. +- critical: Hold award release and request same-day replacement review or arbitration signoff. Owner: challenge-ops-lead. +- high: Recruit additional eligible reviewers for uncovered rubric criteria. Owner: challenge-ops-lead. +- high: Recruit additional eligible reviewers for uncovered rubric criteria. Owner: challenge-ops-lead. +- high: Recruit additional eligible reviewers for uncovered rubric criteria. Owner: challenge-ops-lead. +- high: Name a conflict-free backup arbitrator before any contested decision is released. Owner: challenge-ops-lead. +- medium: Keep a standby reviewer warm for near-capacity assignments. Owner: challenge-ops-lead. +- medium: Send due-soon reminders with a replacement deadline. Owner: challenge-ops-lead. + +Synthetic data only. No private reviewer records, payment rails, identity systems, or external services are used. diff --git a/challenge-reviewer-workload-sla-guard/requirements-map.md b/challenge-reviewer-workload-sla-guard/requirements-map.md new file mode 100644 index 00000000..487a8d69 --- /dev/null +++ b/challenge-reviewer-workload-sla-guard/requirements-map.md @@ -0,0 +1,14 @@ +# Requirements Map + +| Issue #18 capability | Coverage in this slice | +| --- | --- | +| Platform-mediated arbitration system | Confirms the challenge has active, under-capacity arbitration backup before contested decisions can be released. | +| Optional third-party reviewers or peer validators | Validates reviewer availability, expertise, blackout windows, stale activity, assignment load, and review capacity. | +| Evaluation criteria and scoring rubric | Checks each rubric criterion has enough eligible scientific reviewers before live scoring opens. | +| Milestone deadlines | Flags due-soon, past-due, and critically stale review assignments against challenge review windows. | +| Feedback loop between submitters and sponsors | Produces deterministic escalation actions so challenge operations can reassign reviews before sponsor scoring or award communication. | +| Create trust on both sides | Holds award release when stale or overloaded review coverage could undermine solver and sponsor trust. | + +## Non-Overlap Boundary + +This submission focuses on reviewer workload, assignment capacity, stale review windows, and arbitration backup readiness for scientific bounty challenges. It does not implement a full marketplace, scoring engine, payout router, appeal ledger, data-room access guard, anti-collusion system, benchmark leakage detector, cancellation workflow, or evaluator calibration bench. diff --git a/challenge-reviewer-workload-sla-guard/sample-data.js b/challenge-reviewer-workload-sla-guard/sample-data.js new file mode 100644 index 00000000..b549992a --- /dev/null +++ b/challenge-reviewer-workload-sla-guard/sample-data.js @@ -0,0 +1,323 @@ +const riskyChallenge = { + challengeId: "sci-bounty-review-2026-05", + title: "Private climate-model challenge final review", + policies: { + now: "2026-05-27T17:00:00.000Z", + escalationLead: "challenge-ops-lead", + maxReviewerUtilization: 0.85, + nearCapacityUtilization: 0.75, + minEligibleReviewersPerCriterion: 2, + staleReviewHours: 24, + dueSoonHours: 12, + inactiveReviewerHours: 72, + arbitrationBackupRequired: true + }, + criteria: [ + { + id: "forecast-skill", + label: "Forecast skill and uncertainty", + requiredExpertise: "climate-modeling", + minReviewers: 2 + }, + { + id: "ml-validation", + label: "Machine-learning validation", + requiredExpertise: "ml-validation", + minReviewers: 2 + }, + { + id: "reproducibility", + label: "Reproducibility package", + requiredExpertise: "reproducibility", + minReviewers: 2 + } + ], + submissions: [ + { + id: "sub-lake-effect", + teamLabel: "team-anonymous-17", + criteriaTouched: ["forecast-skill", "ml-validation", "reproducibility"], + submittedAt: "2026-05-24T14:20:00.000Z" + }, + { + id: "sub-regional-grid", + teamLabel: "team-anonymous-31", + criteriaTouched: ["forecast-skill", "reproducibility"], + submittedAt: "2026-05-24T18:35:00.000Z" + } + ], + reviewers: [ + { + id: "rev-ada", + displayName: "Ada River", + roles: ["reviewer"], + expertise: ["climate-modeling", "reproducibility"], + canArbitrate: false, + contactWindowHours: 8, + lastActiveAt: "2026-05-27T14:00:00.000Z", + availability: { + status: "active", + weeklyHourBudget: 10, + committedHours: 8, + maxConcurrentReviews: 2, + blackoutWindows: [] + }, + assignments: [ + { + id: "assign-forecast-ada", + challengeId: "sci-bounty-review-2026-05", + criterionId: "forecast-skill", + dueAt: "2026-05-27T09:00:00.000Z", + estimatedHours: 3, + status: "in_review" + }, + { + id: "assign-repro-ada", + challengeId: "sci-bounty-review-2026-05", + criterionId: "reproducibility", + dueAt: "2026-05-28T04:00:00.000Z", + estimatedHours: 2, + status: "queued" + } + ] + }, + { + id: "rev-ben", + displayName: "Ben Cross", + roles: ["reviewer"], + expertise: ["ml-validation"], + canArbitrate: false, + contactWindowHours: 10, + lastActiveAt: "2026-05-27T12:30:00.000Z", + availability: { + status: "active", + weeklyHourBudget: 12, + committedHours: 5, + maxConcurrentReviews: 3, + blackoutWindows: [ + { + startsAt: "2026-05-27T00:00:00.000Z", + endsAt: "2026-05-29T00:00:00.000Z", + reason: "field work" + } + ] + }, + assignments: [ + { + id: "assign-ml-ben", + challengeId: "sci-bounty-review-2026-05", + criterionId: "ml-validation", + dueAt: "2026-05-26T09:00:00.000Z", + estimatedHours: 4, + status: "in_review" + } + ] + }, + { + id: "rev-cora", + displayName: "Cora Field", + roles: ["reviewer", "arbitrator"], + expertise: ["climate-modeling", "ml-validation"], + canArbitrate: true, + contactWindowHours: 4, + lastActiveAt: "2026-05-27T16:00:00.000Z", + availability: { + status: "active", + weeklyHourBudget: 16, + committedHours: 6, + maxConcurrentReviews: 3, + blackoutWindows: [] + }, + assignments: [ + { + id: "assign-forecast-cora", + challengeId: "sci-bounty-review-2026-05", + criterionId: "forecast-skill", + dueAt: "2026-05-28T03:00:00.000Z", + estimatedHours: 3, + status: "queued" + } + ] + }, + { + id: "rev-drew", + displayName: "Drew Lane", + roles: ["reviewer"], + expertise: ["reproducibility"], + canArbitrate: false, + contactWindowHours: 12, + lastActiveAt: "2026-05-22T13:00:00.000Z", + availability: { + status: "active", + weeklyHourBudget: 8, + committedHours: 2, + maxConcurrentReviews: 2, + blackoutWindows: [] + }, + assignments: [ + { + id: "assign-repro-drew", + challengeId: "sci-bounty-review-2026-05", + criterionId: "reproducibility", + dueAt: "2026-05-25T16:00:00.000Z", + estimatedHours: 3, + status: "in_review" + } + ] + }, + { + id: "rev-eli", + displayName: "Eli Stone", + roles: ["arbitrator"], + expertise: ["methodology"], + canArbitrate: true, + contactWindowHours: 6, + lastActiveAt: "2026-05-27T15:10:00.000Z", + availability: { + status: "active", + weeklyHourBudget: 6, + committedHours: 6, + maxConcurrentReviews: 1, + blackoutWindows: [] + }, + assignments: [] + } + ] +}; + +const cleanChallenge = { + ...riskyChallenge, + challengeId: "sci-bounty-review-clean", + policies: { + ...riskyChallenge.policies, + now: "2026-05-27T17:00:00.000Z" + }, + reviewers: [ + { + id: "rev-ada", + displayName: "Ada River", + roles: ["reviewer"], + expertise: ["climate-modeling", "reproducibility"], + canArbitrate: false, + contactWindowHours: 8, + lastActiveAt: "2026-05-27T14:00:00.000Z", + availability: { + status: "active", + weeklyHourBudget: 20, + committedHours: 4, + maxConcurrentReviews: 4, + blackoutWindows: [] + }, + assignments: [ + { + id: "assign-forecast-ada", + challengeId: "sci-bounty-review-clean", + criterionId: "forecast-skill", + dueAt: "2026-05-28T12:00:00.000Z", + estimatedHours: 2, + status: "queued" + } + ] + }, + { + id: "rev-ben", + displayName: "Ben Cross", + roles: ["reviewer"], + expertise: ["ml-validation", "reproducibility"], + canArbitrate: false, + contactWindowHours: 10, + lastActiveAt: "2026-05-27T12:30:00.000Z", + availability: { + status: "active", + weeklyHourBudget: 18, + committedHours: 4, + maxConcurrentReviews: 4, + blackoutWindows: [] + }, + assignments: [ + { + id: "assign-ml-ben", + challengeId: "sci-bounty-review-clean", + criterionId: "ml-validation", + dueAt: "2026-05-28T15:00:00.000Z", + estimatedHours: 3, + status: "queued" + } + ] + }, + { + id: "rev-cora", + displayName: "Cora Field", + roles: ["reviewer", "arbitrator"], + expertise: ["climate-modeling", "ml-validation"], + canArbitrate: true, + contactWindowHours: 4, + lastActiveAt: "2026-05-27T16:00:00.000Z", + availability: { + status: "active", + weeklyHourBudget: 16, + committedHours: 6, + maxConcurrentReviews: 3, + blackoutWindows: [] + }, + assignments: [ + { + id: "assign-forecast-cora", + challengeId: "sci-bounty-review-clean", + criterionId: "forecast-skill", + dueAt: "2026-05-28T18:00:00.000Z", + estimatedHours: 2, + status: "queued" + } + ] + }, + { + id: "rev-drew", + displayName: "Drew Lane", + roles: ["reviewer", "arbitrator"], + expertise: ["reproducibility", "ml-validation"], + canArbitrate: true, + contactWindowHours: 12, + lastActiveAt: "2026-05-27T13:00:00.000Z", + availability: { + status: "active", + weeklyHourBudget: 14, + committedHours: 3, + maxConcurrentReviews: 3, + blackoutWindows: [] + }, + assignments: [ + { + id: "assign-repro-drew", + challengeId: "sci-bounty-review-clean", + criterionId: "reproducibility", + dueAt: "2026-05-28T20:00:00.000Z", + estimatedHours: 2, + status: "queued" + } + ] + }, + { + id: "rev-eli", + displayName: "Eli Stone", + roles: ["reviewer", "arbitrator"], + expertise: ["reproducibility", "ml-validation", "climate-modeling"], + canArbitrate: true, + contactWindowHours: 6, + lastActiveAt: "2026-05-27T15:10:00.000Z", + availability: { + status: "active", + weeklyHourBudget: 12, + committedHours: 2, + maxConcurrentReviews: 3, + blackoutWindows: [] + }, + assignments: [] + } + ] +}; + +module.exports = { + riskyChallenge, + cleanChallenge +}; diff --git a/challenge-reviewer-workload-sla-guard/test.js b/challenge-reviewer-workload-sla-guard/test.js new file mode 100644 index 00000000..32d459fd --- /dev/null +++ b/challenge-reviewer-workload-sla-guard/test.js @@ -0,0 +1,63 @@ +const assert = require("node:assert/strict"); +const { evaluateChallengeReviewerWorkload, digest } = require("./index"); +const { riskyChallenge, cleanChallenge } = require("./sample-data"); + +function codes(items) { + return new Set(items.map((item) => item.code)); +} + +function testRiskyChallengeHoldsReviewWindow() { + const result = evaluateChallengeReviewerWorkload(riskyChallenge); + const blockerCodes = codes(result.blockers); + + assert.equal(result.summary.status, "hold_review_window"); + assert.ok(blockerCodes.has("assigned_reviewer_unavailable")); + assert.ok(blockerCodes.has("assigned_reviewer_overloaded")); + assert.ok(blockerCodes.has("critical_stale_review")); + assert.ok(blockerCodes.has("criterion_capacity_gap")); + assert.ok(blockerCodes.has("arbitration_backup_gap")); + assert.ok(result.escalationPlan.length >= 4); +} + +function testCleanChallengeIsReady() { + const result = evaluateChallengeReviewerWorkload(cleanChallenge); + + assert.equal(result.summary.status, "ready_for_review"); + assert.equal(result.blockers.length, 0); + assert.equal(result.warnings.length, 0); + assert.equal(result.summary.criteriaWithCapacityGaps, 0); + assert.ok(result.summary.activeArbitrators >= 2); +} + +function testDueSoonWarningIsConditional() { + const challenge = structuredClone(cleanChallenge); + challenge.reviewers[0].assignments[0].dueAt = "2026-05-28T02:00:00.000Z"; + + const result = evaluateChallengeReviewerWorkload(challenge); + + assert.equal(result.summary.status, "conditional_review_ready"); + assert.ok(codes(result.warnings).has("assignment_due_soon")); + assert.equal(result.blockers.length, 0); +} + +function testDigestIsStableAndSensitive() { + const first = evaluateChallengeReviewerWorkload(cleanChallenge); + const second = evaluateChallengeReviewerWorkload(cleanChallenge); + const changed = structuredClone(cleanChallenge); + changed.reviewers[0].availability.committedHours = 8; + const third = evaluateChallengeReviewerWorkload(changed); + + assert.equal(first.auditDigest, second.auditDigest); + assert.notEqual(first.auditDigest, third.auditDigest); + assert.equal(digest({ b: 2, a: 1 }), digest({ a: 1, b: 2 })); +} + +function run() { + testRiskyChallengeHoldsReviewWindow(); + testCleanChallengeIsReady(); + testDueSoonWarningIsConditional(); + testDigestIsStableAndSensitive(); + console.log("challenge-reviewer-workload-sla-guard tests passed (4)"); +} + +run(); From 4efc86f173f70af478c2cd3f485b9c347f9a7bbd Mon Sep 17 00:00:00 2001 From: shaiananvari8 Date: Mon, 15 Jun 2026 00:07:51 -0500 Subject: [PATCH 2/3] Add demo transcript for workload SLA guard --- .../reports/demo-transcript.md | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 challenge-reviewer-workload-sla-guard/reports/demo-transcript.md diff --git a/challenge-reviewer-workload-sla-guard/reports/demo-transcript.md b/challenge-reviewer-workload-sla-guard/reports/demo-transcript.md new file mode 100644 index 00000000..1175dca5 --- /dev/null +++ b/challenge-reviewer-workload-sla-guard/reports/demo-transcript.md @@ -0,0 +1,22 @@ +# Demo Transcript + +Fresh verification run: 2026-06-15. + +Commands run from `challenge-reviewer-workload-sla-guard/`: + +```bash +npm run check +npm test +npm run demo +``` + +Observed output: + +```text +challenge-reviewer-workload-sla-guard tests passed (4) +status=hold_review_window blockers=9 warnings=3 capacityGaps=3 digest=4eeac8cabcce4c5c +``` + +The demo writes the reviewer packet, markdown report, and SVG summary under `reports/`. The branch also includes `reports/demo.avi` from `npm run demo:video`. + +All data is synthetic; no identity, reviewer, payment, challenge workspace, or external API calls are made. From 94d3d16e2a0e3b611b944b8712391f7ebece82eb Mon Sep 17 00:00:00 2001 From: shaiananvari8 Date: Mon, 15 Jun 2026 00:08:44 -0500 Subject: [PATCH 3/3] Document demo transcript for workload SLA guard --- challenge-reviewer-workload-sla-guard/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/challenge-reviewer-workload-sla-guard/README.md b/challenge-reviewer-workload-sla-guard/README.md index 6b2926a6..54543a1a 100644 --- a/challenge-reviewer-workload-sla-guard/README.md +++ b/challenge-reviewer-workload-sla-guard/README.md @@ -26,6 +26,7 @@ npm run demo:video - `reports/workload-review-packet.json` - `reports/workload-review-report.md` - `reports/summary.svg` +- `reports/demo-transcript.md` `npm run demo:video` generates: @@ -33,4 +34,4 @@ npm run demo:video ## Safety -All examples use synthetic challenge, reviewer, and assignment records. This module does not call identity services, payment systems, private review dashboards, email systems, challenge workspaces, or external APIs. +All examples use synthetic challenge, reviewer, and assignment records. This module does not call identity services, payment systems, private review dashboards, email systems, challenge workspaces, or external APIs. \ No newline at end of file