Add UTM URL Generator tool with live preview and pre-generated PDFs
ci/woodpecker/push/woodpecker Pipeline was successful Details

- Add utm-tool.html and utm-tool.js for UTM URL generation
- Live URL generation as user types (no button required)
- Support for all standard UTM parameters plus custom parameters
- Add UTM Builder to nav dropdown and index.html tools section
- Pre-generate all PDFs for faster Docker builds
- Update git hooks for PDF generation
This commit is contained in:
Colin 2025-12-02 11:17:41 -05:00
parent 7a3665abae
commit 5b422a67b2
Signed by: colin
SSH Key Fingerprint: SHA256:nRPCQTeMFLdGytxRQmPVK9VXY3/ePKQ5lGRyJhT5DY8
36 changed files with 2722 additions and 18 deletions

1139
docker/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -63,6 +63,7 @@
<a href="/one-pager-tools/csv-tool.html" id="nav-tools">Tools</a>
<div class="dropdown-content">
<a href="/one-pager-tools/csv-tool.html" id="nav-csv">CSV Tool</a>
<a href="/one-pager-tools/utm-tool.html" id="nav-utm">UTM Builder</a>
<a href="https://md.colinknapp.com" id="nav-markdown" target="_blank" rel="noopener noreferrer">Markdown Tool</a>
<a href="https://nix.colinknapp.com" id="nav-nix" target="_blank" rel="noopener noreferrer">NixOS Validator</a>
<a href="https://qr.colinknapp.com" id="nav-qrcode" target="_blank" rel="noopener noreferrer">QR Code Tool</a>

View File

@ -241,6 +241,11 @@
<span>Process and analyze CSV files directly in your browser</span>
</a>
<a href="/one-pager-tools/utm-tool.html" class="tool-link">
<strong>UTM Builder</strong>
<span>Generate campaign tracking URLs with UTM parameters</span>
</a>
<a href="https://md.colinknapp.com" target="_blank" rel="noopener noreferrer" class="tool-link">
<strong>Markdown Tool</strong>
<span>Live markdown editor and previewer</span>

View File

@ -0,0 +1,353 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Free UTM URL builder tool. Generate tracking URLs with UTM parameters for marketing campaigns. Client-side processing for privacy.">
<title>UTM URL Generator - Free Campaign URL Builder</title>
<link rel="stylesheet" href="../styles.css">
<link rel="stylesheet" href="tool-styles.css" integrity="sha256-nsutlmVxvyIyABk8i0fzVyO+ram8rkuTntoETIGcou8=">
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4="></script>
<script src="../includes.js" integrity="sha256-CJbyPP0VWE+XrarLtjHMffGrI2GlTXXAXOce+NE+aQg="></script>
<style>
.utm-form {
display: grid;
gap: 1rem;
max-width: 600px;
}
.form-group {
display: flex;
flex-direction: column;
gap: 0.25rem;
}
.form-group label {
font-weight: 600;
color: var(--text-color);
}
.form-group label .required {
color: #e63946;
}
.form-group label .optional {
color: var(--date-color);
font-weight: normal;
font-size: 0.85em;
}
.form-group input {
padding: 0.75rem;
border: 1px solid var(--border-color);
border-radius: 4px;
background: var(--bg-color);
color: var(--text-color);
font-size: 1rem;
}
.form-group input:focus {
outline: none;
border-color: var(--accent-color);
box-shadow: 0 0 0 2px rgba(69, 123, 157, 0.2);
}
.form-group input.error {
border-color: #e63946;
}
.form-group .hint {
font-size: 0.8rem;
color: var(--date-color);
}
.custom-params-section {
margin-top: 1rem;
padding-top: 1rem;
border-top: 1px solid var(--border-color);
}
.custom-params-section h3 {
margin-bottom: 0.75rem;
font-size: 1rem;
}
.custom-param-row {
display: flex;
gap: 0.5rem;
margin-bottom: 0.5rem;
align-items: center;
}
.custom-param-row input {
flex: 1;
padding: 0.5rem;
border: 1px solid var(--border-color);
border-radius: 4px;
background: var(--bg-color);
color: var(--text-color);
}
.custom-param-row input:focus {
outline: none;
border-color: var(--accent-color);
}
.btn-remove-param {
padding: 0.5rem 0.75rem;
background: #e63946;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
font-size: 1rem;
}
.btn-remove-param:hover {
background: #c1121f;
}
.btn-add-param {
padding: 0.5rem 1rem;
background: var(--accent-color);
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
font-size: 0.9rem;
}
.btn-add-param:hover {
opacity: 0.9;
}
.output-section {
margin-top: 2rem;
padding: 1.5rem;
background: var(--bg-secondary);
border: 1px solid var(--border-color);
border-radius: 8px;
}
.output-section h2 {
margin-top: 0;
margin-bottom: 1rem;
}
.generated-url {
word-break: break-all;
padding: 1rem;
background: var(--bg-color);
border: 1px solid var(--border-color);
border-radius: 4px;
font-family: 'Courier New', monospace;
font-size: 0.9rem;
min-height: 3rem;
}
.generated-url.empty {
color: var(--date-color);
font-style: italic;
}
.generated-url.valid {
border-color: #2a9d8f;
}
.generated-url.invalid {
border-color: #e63946;
}
.copy-section {
margin-top: 1rem;
display: flex;
gap: 1rem;
align-items: center;
}
.btn-copy {
padding: 0.75rem 1.5rem;
background: var(--accent-color);
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
font-size: 1rem;
font-weight: 600;
}
.btn-copy:hover {
opacity: 0.9;
}
.btn-copy:disabled {
background: var(--border-color);
cursor: not-allowed;
}
.copy-feedback {
color: #2a9d8f;
font-weight: 600;
opacity: 0;
transition: opacity 0.2s;
}
.copy-feedback.show {
opacity: 1;
}
.url-breakdown {
margin-top: 1.5rem;
}
.url-breakdown h3 {
margin-bottom: 0.5rem;
font-size: 1rem;
}
.url-breakdown table {
width: 100%;
border-collapse: collapse;
font-size: 0.9rem;
}
.url-breakdown th,
.url-breakdown td {
padding: 0.5rem;
text-align: left;
border-bottom: 1px solid var(--border-color);
}
.url-breakdown th {
font-weight: 600;
width: 30%;
}
.url-breakdown td {
font-family: 'Courier New', monospace;
word-break: break-all;
}
.validation-message {
margin-top: 0.5rem;
padding: 0.5rem;
border-radius: 4px;
font-size: 0.9rem;
}
.validation-message.error {
background: rgba(230, 57, 70, 0.1);
color: #e63946;
}
.validation-message.success {
background: rgba(42, 157, 143, 0.1);
color: #2a9d8f;
}
.validation-message.info {
background: rgba(69, 123, 157, 0.1);
color: var(--accent-color);
}
</style>
</head>
<body>
<!-- Header Include -->
<div id="header-include"></div>
<div class="container-fluid" role="main" id="main-content">
<h1>UTM URL Generator</h1>
<p>Build tracking URLs with UTM parameters for your marketing campaigns.</p>
<div class="tool-container">
<div class="utm-form">
<div class="form-group">
<label for="baseUrl">Website URL <span class="required">*</span></label>
<input type="url" id="baseUrl" placeholder="https://example.com/page" aria-required="true">
<span class="hint">The full URL of the page you want to track</span>
</div>
<div class="form-group">
<label for="utmSource">Campaign Source <span class="required">*</span></label>
<input type="text" id="utmSource" placeholder="google, newsletter, facebook" aria-required="true">
<span class="hint">utm_source: Identifies which site sent the traffic</span>
</div>
<div class="form-group">
<label for="utmMedium">Campaign Medium <span class="required">*</span></label>
<input type="text" id="utmMedium" placeholder="cpc, email, social" aria-required="true">
<span class="hint">utm_medium: The marketing medium (e.g., cpc, email, social)</span>
</div>
<div class="form-group">
<label for="utmCampaign">Campaign Name <span class="required">*</span></label>
<input type="text" id="utmCampaign" placeholder="spring_sale, product_launch" aria-required="true">
<span class="hint">utm_campaign: The specific campaign name</span>
</div>
<div class="form-group">
<label for="utmTerm">Campaign Term <span class="optional">(optional)</span></label>
<input type="text" id="utmTerm" placeholder="running+shoes, marketing+software">
<span class="hint">utm_term: Paid search keywords</span>
</div>
<div class="form-group">
<label for="utmContent">Campaign Content <span class="optional">(optional)</span></label>
<input type="text" id="utmContent" placeholder="logolink, textlink, banner_v1">
<span class="hint">utm_content: Differentiate ads or links pointing to the same URL</span>
</div>
<div class="custom-params-section">
<h3>Custom Parameters <span class="optional">(optional)</span></h3>
<div id="customParams"></div>
<button type="button" class="btn-add-param" id="addParamBtn" aria-label="Add custom parameter">+ Add Parameter</button>
</div>
</div>
<div class="output-section">
<h2>Generated URL</h2>
<div id="validationMessage" class="validation-message" aria-live="polite"></div>
<div id="generatedUrl" class="generated-url empty" aria-live="polite">
Enter a URL and required parameters to generate your tracking URL
</div>
<div class="copy-section">
<button type="button" class="btn-copy" id="copyBtn" disabled aria-label="Copy URL to clipboard">Copy URL</button>
<span class="copy-feedback" id="copyFeedback">Copied!</span>
</div>
<div class="url-breakdown" id="urlBreakdown" style="display: none;">
<h3>URL Parameters</h3>
<table>
<thead>
<tr>
<th>Parameter</th>
<th>Value</th>
</tr>
</thead>
<tbody id="breakdownBody"></tbody>
</table>
</div>
</div>
</div>
<hr>
<h2>About This Tool</h2>
<p>This UTM URL Generator helps you create campaign tracking URLs with:</p>
<ul>
<li>All standard UTM parameters (source, medium, campaign, term, content)</li>
<li>Custom parameters for additional tracking needs</li>
<li>Live URL preview as you type</li>
<li>Proper URL encoding for special characters</li>
<li>One-click copy to clipboard</li>
</ul>
<p>The tool processes everything in your browser - no data is sent to any server.</p>
</div>
<!-- Footer Include -->
<div id="footer-include"></div>
<script src="utm-tool.js" integrity="sha256-f5yZtBrRofKWD/H5Hth5syEYPun+WicrCGxKzyzwZ6A="></script>
</body>
</html>

View File

@ -0,0 +1,294 @@
/**
* UTM URL Generator functionality
* Builds tracking URLs with UTM parameters
* Client-side only - no data sent to server
*/
document.addEventListener('DOMContentLoaded', function() {
// DOM Elements
const baseUrlInput = document.getElementById('baseUrl');
const utmSourceInput = document.getElementById('utmSource');
const utmMediumInput = document.getElementById('utmMedium');
const utmCampaignInput = document.getElementById('utmCampaign');
const utmTermInput = document.getElementById('utmTerm');
const utmContentInput = document.getElementById('utmContent');
const customParamsContainer = document.getElementById('customParams');
const addParamBtn = document.getElementById('addParamBtn');
const generatedUrlDiv = document.getElementById('generatedUrl');
const validationMessage = document.getElementById('validationMessage');
const copyBtn = document.getElementById('copyBtn');
const copyFeedback = document.getElementById('copyFeedback');
const urlBreakdown = document.getElementById('urlBreakdown');
const breakdownBody = document.getElementById('breakdownBody');
// Current generated URL
let currentUrl = '';
let customParamCount = 0;
// Debounce timer
let debounceTimer;
// Add input listeners to all UTM fields
const utmInputs = [
baseUrlInput,
utmSourceInput,
utmMediumInput,
utmCampaignInput,
utmTermInput,
utmContentInput
];
utmInputs.forEach(input => {
input.addEventListener('input', debounceGenerate);
});
// Add custom parameter button
addParamBtn.addEventListener('click', addCustomParam);
// Copy button
copyBtn.addEventListener('click', copyToClipboard);
/**
* Debounced URL generation
*/
function debounceGenerate() {
clearTimeout(debounceTimer);
debounceTimer = setTimeout(generateUrl, 150);
}
/**
* Add a custom parameter row
*/
function addCustomParam() {
customParamCount++;
const row = document.createElement('div');
row.className = 'custom-param-row';
row.id = `customParam${customParamCount}`;
row.innerHTML = `
<input type="text" placeholder="Parameter name" class="custom-key" aria-label="Custom parameter name">
<input type="text" placeholder="Value" class="custom-value" aria-label="Custom parameter value">
<button type="button" class="btn-remove-param" aria-label="Remove parameter">&times;</button>
`;
// Add input listeners
const keyInput = row.querySelector('.custom-key');
const valueInput = row.querySelector('.custom-value');
keyInput.addEventListener('input', debounceGenerate);
valueInput.addEventListener('input', debounceGenerate);
// Add remove listener
const removeBtn = row.querySelector('.btn-remove-param');
removeBtn.addEventListener('click', function() {
row.remove();
debounceGenerate();
});
customParamsContainer.appendChild(row);
keyInput.focus();
}
/**
* Validate URL format
*/
function isValidUrl(string) {
try {
const url = new URL(string);
return url.protocol === 'http:' || url.protocol === 'https:';
} catch (_) {
return false;
}
}
/**
* Get all custom parameters
*/
function getCustomParams() {
const params = [];
const rows = customParamsContainer.querySelectorAll('.custom-param-row');
rows.forEach(row => {
const key = row.querySelector('.custom-key').value.trim();
const value = row.querySelector('.custom-value').value.trim();
if (key && value) {
params.push({ key, value });
}
});
return params;
}
/**
* Generate the UTM URL
*/
function generateUrl() {
const baseUrl = baseUrlInput.value.trim();
const source = utmSourceInput.value.trim();
const medium = utmMediumInput.value.trim();
const campaign = utmCampaignInput.value.trim();
const term = utmTermInput.value.trim();
const content = utmContentInput.value.trim();
const customParams = getCustomParams();
// Clear previous state
validationMessage.textContent = '';
validationMessage.className = 'validation-message';
generatedUrlDiv.className = 'generated-url';
// Check if we have any input at all
if (!baseUrl) {
generatedUrlDiv.textContent = 'Enter a URL to start generating your tracking URL';
generatedUrlDiv.classList.add('empty');
copyBtn.disabled = true;
urlBreakdown.style.display = 'none';
currentUrl = '';
return;
}
// Validate base URL format
if (!isValidUrl(baseUrl)) {
generatedUrlDiv.textContent = baseUrl;
generatedUrlDiv.classList.add('invalid');
showValidation('Enter a valid URL (starting with http:// or https://)', 'error');
copyBtn.disabled = true;
urlBreakdown.style.display = 'none';
currentUrl = '';
return;
}
// Build the URL with whatever parameters are filled in
try {
const url = new URL(baseUrl);
// Add UTM parameters only if they have values
if (source) {
url.searchParams.set('utm_source', source);
}
if (medium) {
url.searchParams.set('utm_medium', medium);
}
if (campaign) {
url.searchParams.set('utm_campaign', campaign);
}
if (term) {
url.searchParams.set('utm_term', term);
}
if (content) {
url.searchParams.set('utm_content', content);
}
// Add custom parameters
customParams.forEach(param => {
url.searchParams.set(param.key, param.value);
});
currentUrl = url.toString();
generatedUrlDiv.textContent = currentUrl;
generatedUrlDiv.classList.add('valid');
copyBtn.disabled = false;
// Show hint about missing recommended fields
const missing = [];
if (!source) missing.push('source');
if (!medium) missing.push('medium');
if (!campaign) missing.push('campaign');
if (missing.length > 0) {
showValidation(`Tip: Add ${missing.join(', ')} for complete tracking`, 'info');
} else {
showValidation('URL ready to copy', 'success');
}
// Update breakdown
updateBreakdown(url, customParams);
} catch (error) {
showValidation('Error generating URL: ' + error.message, 'error');
generatedUrlDiv.classList.add('invalid');
copyBtn.disabled = true;
urlBreakdown.style.display = 'none';
currentUrl = '';
}
}
/**
* Show validation message
*/
function showValidation(message, type) {
validationMessage.textContent = message;
validationMessage.className = `validation-message ${type}`;
}
/**
* Update the URL breakdown table
*/
function updateBreakdown(url, customParams) {
urlBreakdown.style.display = 'block';
const rows = [];
// Base URL
rows.push({ param: 'Base URL', value: url.origin + url.pathname });
// UTM parameters
const utmParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content'];
utmParams.forEach(param => {
const value = url.searchParams.get(param);
if (value) {
rows.push({ param, value });
}
});
// Custom parameters
customParams.forEach(param => {
rows.push({ param: param.key, value: param.value });
});
breakdownBody.innerHTML = rows.map(row => `
<tr>
<th>${escapeHtml(row.param)}</th>
<td>${escapeHtml(row.value)}</td>
</tr>
`).join('');
}
/**
* Escape HTML to prevent XSS
*/
function escapeHtml(text) {
const div = document.createElement('div');
div.textContent = text;
return div.innerHTML;
}
/**
* Copy URL to clipboard
*/
async function copyToClipboard() {
if (!currentUrl) return;
try {
await navigator.clipboard.writeText(currentUrl);
copyFeedback.classList.add('show');
setTimeout(() => {
copyFeedback.classList.remove('show');
}, 2000);
} catch (err) {
// Fallback for older browsers
const textArea = document.createElement('textarea');
textArea.value = currentUrl;
textArea.style.position = 'fixed';
textArea.style.left = '-9999px';
document.body.appendChild(textArea);
textArea.select();
try {
document.execCommand('copy');
copyFeedback.classList.add('show');
setTimeout(() => {
copyFeedback.classList.remove('show');
}, 2000);
} catch (e) {
console.error('Failed to copy:', e);
}
document.body.removeChild(textArea);
}
}
});

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,847 @@
%PDF-1.4
%Óëéá
1 0 obj
<</Title (localhost:8765/includes/header.html)
/Creator (Mozilla/5.0 \(Macintosh; Intel Mac OS X 10_15_7\) AppleWebKit/537.36 \(KHTML, like Gecko\) HeadlessChrome/142.0.0.0 Safari/537.36)
/Producer (Skia/PDF m142)
/CreationDate (D:20251202161508+00'00')
/ModDate (D:20251202161508+00'00')>>
endobj
3 0 obj
<</ca 1
/BM /Normal>>
endobj
5 0 obj
<</CA 1
/ca 1
/LC 0
/LJ 0
/LW 1
/ML 4
/SA true
/BM /Normal>>
endobj
8 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [78 725.88 120.75 739.38]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/)>>>>
endobj
9 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [78 712.38 121.5 725.88]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/resumes/business-development.html)>>>>
endobj
10 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [78 698.88 188.25 712.38]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/resumes/business-development.html)>>>>
endobj
11 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [191.25 698.88 248.25 712.38]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/resumes/devsecops.html)>>>>
endobj
12 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [251.25 698.88 333.75 712.38]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/resumes/team-leadership.html)>>>>
endobj
13 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [336.75 698.88 403.5 712.38]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/resumes/tool-building.html)>>>>
endobj
14 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [78 685.38 111 698.88]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/stories/)>>>>
endobj
15 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [78 671.88 138.75 685.38]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/stories/airport-dns.html)>>>>
endobj
16 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [138.75 671.88 144.75 685.38]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/stories/airport-dns.html)>>>>
endobj
17 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [147 671.88 238.5 685.38]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/stories/app-development.html)>>>>
endobj
18 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [238.5 671.88 244.5 685.38]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/stories/app-development.html)>>>>
endobj
19 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [246.75 671.88 342 685.38]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/stories/athion-turnaround.html)>>>>
endobj
20 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [342 671.88 348 685.38]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/stories/athion-turnaround.html)>>>>
endobj
21 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [351 671.88 439.5 685.38]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/stories/fawe-plotsquared.html)>>>>
endobj
22 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [439.5 671.88 445.5 685.38]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/stories/fawe-plotsquared.html)>>>>
endobj
23 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [448.5 671.88 546 685.38]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/stories/healthcare-platform.html)>>>>
endobj
24 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [78 658.38 84 671.88]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/stories/healthcare-platform.html)>>>>
endobj
25 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [87 658.38 187.5 671.88]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/stories/home-infrastructure.html)>>>>
endobj
26 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [187.5 658.38 193.5 671.88]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/stories/home-infrastructure.html)>>>>
endobj
27 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [196.5 658.38 297 671.88]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/stories/motherboard-repair.html)>>>>
endobj
28 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [297 658.38 303 671.88]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/stories/motherboard-repair.html)>>>>
endobj
29 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [306 658.38 393.75 671.88]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/stories/nitric-leadership.html)>>>>
endobj
30 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [393.75 658.38 399.75 671.88]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/stories/nitric-leadership.html)>>>>
endobj
31 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [402.75 658.38 470.25 671.88]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/stories/nuclear-dns.html)>>>>
endobj
32 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [470.25 658.38 476.25 671.88]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/stories/nuclear-dns.html)>>>>
endobj
33 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [479.25 658.38 542.25 671.88]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/stories/open-source-success.html)>>>>
endobj
34 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [78 644.88 119.25 658.38]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/stories/open-source-success.html)>>>>
endobj
35 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [119.25 644.88 125.25 658.38]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/stories/open-source-success.html)>>>>
endobj
36 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [128.25 644.88 189 658.38]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/stories/showerloop.html)>>>>
endobj
37 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [189 644.88 195 658.38]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/stories/showerloop.html)>>>>
endobj
38 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [198 644.88 249 658.38]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/stories/viperwire.html)>>>>
endobj
39 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [249 644.88 255 658.38]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/stories/viperwire.html)>>>>
endobj
40 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [257.25 644.88 343.5 658.38]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/stories/web-design-java.html)>>>>
endobj
41 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [343.5 644.88 349.5 658.38]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/stories/web-design-java.html)>>>>
endobj
42 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [352.5 644.88 449.25 658.38]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/stories/wordpress-security.html)>>>>
endobj
43 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [449.25 644.88 455.25 658.38]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/stories/wordpress-security.html)>>>>
endobj
44 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [458.25 644.88 529.5 658.38]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/stories/youtube-game-dev.html)>>>>
endobj
45 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [78 631.38 101.25 644.88]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/stories/youtube-game-dev.html)>>>>
endobj
46 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [101.25 631.38 107.25 644.88]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/stories/youtube-game-dev.html)>>>>
endobj
47 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [78 617.88 104.25 631.38]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/one-pager-tools/csv-tool.html)>>>>
endobj
48 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [78 604.38 126 617.88]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/one-pager-tools/csv-tool.html)>>>>
endobj
49 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [129 604.38 194.25 617.88]
/A <</Type /Action
/S /URI
/URI (http://localhost:8765/one-pager-tools/utm-tool.html)>>>>
endobj
50 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [197.25 604.38 274.5 617.88]
/A <</Type /Action
/S /URI
/URI (https://md.colinknapp.com/)>>>>
endobj
51 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [277.5 604.38 357.75 617.88]
/A <</Type /Action
/S /URI
/URI (https://nix.colinknapp.com/)>>>>
endobj
52 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [360.75 604.38 430.5 617.88]
/A <</Type /Action
/S /URI
/URI (https://qr.colinknapp.com/)>>>>
endobj
53 0 obj
<</Type /Annot
/Subtype /Link
/F 4
/Border [0 0 0]
/Rect [78 590.88 102.75 604.38]
/A <</Type /Action
/S /URI
/URI (https://meet.colinknapp.com/)>>>>
endobj
54 0 obj
<</Filter /FlateDecode
/Length 3809>> stream
xœí\[<5B>· ~?¿BÏ¢ˆ7]€ €íÄyNj ?ÀmëIÿ?PPWjgœsv½[ñÃzg¤á凤8ãJýç î+o~fFŸ³ûøéòû8$ö¤ÿ'.ÑQ`ñ¹dvüëò“ûír;5.þ´ }¨¿˜ˆÝƒqN]#½`*>æXoìc®ÓcÏ’“!>X" Ï€•¸†Ÿ×ð_/?ýÍývùýB^¯RÍ´#+ËÇO ¹¿wëÇ¿\¾þžÜ/ÿ¹d‡äJô¹„¨ÃUO?_~¸üp£J_†·._¿gÑ}øùÍÐà²Ct>]¾ <09>bü]ü.¡… )Áv̱ 4:çqüw÷áß—ï>t0G ¾Ê*Ñ£¸Ø~Ý,Œ/”ÈÙ¿?~ïŽD£b/ŽÙ+ôõÏÃ%{n0Æì8epÙ„ÄÑaò%•(ÑeJVZ"ŽXÜÇKöI(Õ+9)Åeµ rNJÃDɲ¤,Eiõ<69>ÜÇK©§ÐalƒôJÎ%RR<52>\©÷#¥5.ê`å,*­2„Æ?ÖùDK;úxÇzœ¢ P#Hôš©Ô Q(â¸%ƒN½@ •¬3GzeÂc12HôCÚ¤•ä!@b4zä#
ýIòÄ)ñ®iIž¹ ±‰ÒÔrјNÒ°lÓ þpY×2ñל,Cëî,Cu¦Î'KÓ»%<4B>ÉYÆQÕ[×Ç1féc;­s¬\¶Ñ<C2B6><37>ßâ •Öäª&æfîjznæ6°Xô¬)ÊìÍ' µKš…o+÷Z KCkÅ,M®µÕu.¹Žîpg.Õeù¦?^~½ü|ñ19ûW}Â<>X}‚üåþò ù„ÿsŸð<C5B8>׈¡ÂˆŸÂãØ): OØX²1DÇЃ¨ïr †g .I#èÿtß„ðöM=¡J
¥Î×ãB#°¢äVOFÑ—fÓ„>:%Q”ˆ. Œ ´J,•ÆSÐ5IÑÇŒ“RSÄE¯”€<E2809D>Ñ%ö<>ôŸÒ0¦EiõÚh=ÏJÔ!WK¦(M§†¨´~ÃÄ•‰¬Ö"©¬ARª²+숫+Mÿ¡ÒÄ¥:=ÄÌi;K>svò„YöûGJ¡q18C_•h%@Ÿ`=õ/F'è ¨NîÐC ¨Æ°ZF"±N¹ìM„l̆ͦ/ÛI•9;3 ÍÝ ‰Œínƒ/PÝâ=Tqy2Œ£:r¨#ô!Fk¡M[¬~ƒ2@M»Ãa0jìºC3ã0rpkÜÂËšájñ1á7¹]0µb-@/,àw%­õau¹VÒÒº]pÝ8iXNãÏ'^œ]ªn~OüÎ1½8<C2BD>LŒz¦%=Ó*í7¿ïÙÇpôX”\ <09>\E ÍÖWh¦`£‹jŠXâæ+
Tc¤l|EÁ£¯(xâ+
}EÁ£¯(xæ+
}…ÒŒ¯(´ù
svbÔÌ2±¼Ýo¢Þp6‡‘`.£MÔ±ÞŒNæš4º«wÓò\çÆÓ»a³ªu%4¡Ñx\ªÐÍýr9ó¹ìÞ"ç!ð3ç3osȸœÛ¼hTœsã7‡óÑaäÜl©u&ã0”<¡`ÆMÐlw˜ð2¼ '\7á&°<>檚ëdÓè\QF÷vå ¥aÁ«N£ÔX7ÕÚÔ5ŸQdø é­ÒèÿaüÞ«3wQà }L<05>äâ«oüt‰= ”E{0´<´²Ü{F[c_¬|ÇÙ°N>tW¼Êu tãÇþ ŠØÊx8Jw¥ý¯•ú°!š­¬w|ÈTVÒcV ÈÐÐä(ÐÂBŸ$2X–œ¼`°(2Ä7;þœú
0„R¦vÙ%ñµP}Wh´LNPÀÕsnµd OjLÏ!ÒÝ<03>Rò9D 4 H^RÎÑÅR ¨Ì çÔW€&ͳ«ÓÓrÂ<72>alpW-ÿ•®â<C2AE>¤™Rϳõ™¼ÈtÜ<\õ‚ï<17>@¥{ηcä©À$ *îßýÅŒ¾Èîý
¨©-"Éo =%¾IƒòP¨=…k|vwnÏòø$XÖoÏì*,û\áW³½däoþ4ëƒZÞµiŸR4”bò>ÀTCêM@«DÍIZ>_%×ôÅd~€¹Õ(&Vâ1÷Sjµ¢s%²?%*+)méŸù_%j$-i€Z0^É„=?³;ÓLPö»Î\Ær8“+ËÌ<C38B>v±G&e54Ó-£Ê™˜íZŸ9œµÐLö¬-±ÛÚ&ƒJy\:”cíH‰Uþ²¥ƒJFŠ5q^p¿¥‰Sf®‡È[R¨d.)qV“\ç¤u>Ë •|H y™·Ô°ž08ácr¸ßÇàoñ´€º˜7˜ü/¥˜…²´g•œ¥‰Ö*ÛR<C39B>Å¥aÝ«‰"è.{º%U³Ó?vöõ¡W½Í½æŠ¬”Pk<50>à¥=­¨ÏZG_ć<C384>XF~JœÃ_4a”àr¸ËŽåŽËˆÍ¹?_¤Çâ¦ê8Åš FËTÇÙESAÿzöêyãð퓳KŠ'ÓÜc|#øÈºÁeY÷„b 9Kœà´ÃO‰<4F>ûÊÒäx"MÂi q1n†Ÿÿ·Ò䘽`Î7ÉžÈæ,q2n‡Ÿ‡éá%8@ðÖÝ߇S±L¶Åù•g<E280A2>rºêhªƒ¡§V¡ì"ǨõtÑÄÿºß1<>ÛÁX޳l‰á¹º0é†nêV>…ë<E280A6>i3êójL&Eíýx<C3BD>ZaäQÞQ<Ödmæ#Ý…žKŸ««<C2AB>7µs>L^Q»¹ø ÔÎ!g¹GgÕ
Ä"žHõ8}‡~J|…ðÐX { ÷çQ —+Z)­ošƒPG¢{¥Óy¤^êæžEwdW³!Z¨¶ÉP¾Ñæâ/@´P>Îrƒ#FÃ*`ñx}gÈ ZÚ{kJ^ï<>‰»¦¬V™÷èê'Âô ÙAÌW^•ž¯·h‡ß °*W idS+:g¯^žŒŽªœaéGý¥tqGYêúèõìú;[=Îx¹4VnR—½øùZÀÇYîÒBO!¹$©5亀î¶ú°Q£øÒïnf8§®^®D¢1iÅÚÝU%-<2D>³µ$,WÉoWÝ{0AOç¶2uÇѓŅ%âàIjíó:¸íÅÏ7q>Îr—àŽ ž„KÞÀËnC5063œS_Ü$hL
=ß_Ã29Ñ ¡É¶âSv|¶°7æúßð”3?Ùœâqžyœƒaµ„º=z½&7S Ž<1B>µ5ßò6½†¶<C2B6>$¹®){ñ©g¹G<>S}¡Îºmpö0Úõkˆá§ÄWXþÉZ“î±íÅò8±Ûë£vPŸ_Ñ$¶Òq<C392>m«ûíܷ宯±Yl }¬“ø¸Ëf~ÇÌ9^ üÌÅòü2)„ã,÷¸.RԶ̤¯Ð<00>]èÄÙ'Ñ,ql:á§Ä5üå*qÀÖšP+5÷öX´LZ°òÈlÞ˜ ïýÚ<C3BD>Þ}ÚÊUrÍo®¹øùÀÅ@ÇYî¸9XàæX|ÒnÑ…<C\5ÃO‰¯\ ÉçZGTkÆTŸú÷\ˤœ÷P”ö¦Lð1ÀÞÝóÎx~é wŠcÑ©qØöâ/v¦ã,÷lÀ"žSÖï…lÀH>%æ ›–º`lg8§¾ºsò½2Çêÿî±3Òrùx¿/‚åö\Ùz×äѾIïðå7+ÖÁo{¬Þˤ¶€<C2B6>^— Ýz{ñóQÏ޳Ü%꥟R;ê%E/Œiì¥|ΩÔ¿²HYÀ'Òw0ŒD™À'З<E28094>@h8_ÃO‰¯°†YQ?V0ŽÝª»ZÀÅ'.ßÙe“úö¦òm_ôLUF!ãÝjóÌÇ®/e{ñó—²g¹eçB¸å¦Ê©>ðz5ÞŒéjÆ­ãs*ú]ßÒ,±qµ):¯B< |³ú·üëG_nÌÿ0œ5µ/]¤Ñß©³^±<>¹n0 %‡ð¸ÃS)Úgú;Ó‰¦´Úh¸uw*õqw'Bë]´/J)MÅöv*QLjiíTZ̘ŠéÂSšr·ÆN¥*¿¶¯³Òj/cíøCØÛ:ÍéÙ3h¦™í…Û g'¢am¶,fwã&ëèƒ4J™ýFy³µrSóìÂ4™ÝšËnØ­j{9•R¥vvÖ5˜·ûµý“S©Û}­c79{sãÖÄ©T®/+ÅõvÉMÅ­³2o œ½ ÓY£ñ°æÞ¿YO8Ì¡8æ&b“<62>…ÄÁ´Î`{êÁ¬<C381>Ö¸™·ÕÒÔš¶¶Ía€èöå× •¦¯vm*_$<24>ŠŸw98»6¯·<C2AF>¯NÉÁEòñ†=P½šæ>qlÏ£žnQèiÙ¸awwäÓÖRr•½§W²`0¿˜»å¹úñ©><3E>ƒÓ7¸¶„às…9ÞŽ²
Ö¶Í>ÛŸ_Ÿ×Ï)wà3„Ó4§lÈßÒV´-Ñ‚Ùíû®‡'½@dZŠùúίghj/=M\U%Äsýùæc²T0¶Þ¶â±ÙÔÐNªGø.=ìH{rÆë½üж½ÕOΚ|HÚÿu¦<75>»ÊšÔ Ô×ë3Î<33>MñI È¢>lÔæ¦™áœºfx¹<eè—CýÀp “ ªÜöâ«ê{Ãùt€ÄôÈú<“Ç_œQÊãhSèm
<EFBFBD>EÒ>b¿8ƒÒ>¯b?å¡´c´)ýƒ-6Ú”öa3Ÿ›ÂÇ`Sx 6eÿâŒ9½â õæ=Øœœ­Èj °b0+é ÖJVD·T·b?«ä%.s¬hrZ »M·XSÚWM¢<4D>5¥}ýd¿_ûNJÜcM}A<>b±Ñ¦´¯®À&iû>Ëþ ¥Ö·nl¸)í{/[D/á,Ü”p 7% {©' Â1Ü´71›ì,(N® f<>|ÝSfL…™õbTkVÖ4¶»±Ò´åõx³% 7<05>bû„jA"?þÀçœ
endstream
endobj
2 0 obj
<</Type /Page
/Resources <</ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/ExtGState <</G3 3 0 R
/G5 5 0 R>>
/Font <</F4 4 0 R
/F6 6 0 R
/F7 7 0 R>>>>
/MediaBox [0 0 595.91998 842.88]
/Annots [8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R 22 0 R 23 0 R 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R 32 0 R 33 0 R 34 0 R 35 0 R 36 0 R 37 0 R 38 0 R 39 0 R 40 0 R 41 0 R 42 0 R 43 0 R 44 0 R 45 0 R 46 0 R 47 0 R 48 0 R 49 0 R 50 0 R 51 0 R 52 0 R 53 0 R]
/Contents 54 0 R
/StructParents 0
/Tabs /S
/Parent 55 0 R>>
endobj
55 0 obj
<</Type /Pages
/Count 1
/Kids [2 0 R]>>
endobj
56 0 obj
<</Type /Catalog
/Pages 55 0 R
/ViewerPreferences <</Type /ViewerPreferences
/DisplayDocTitle true>>>>
endobj
57 0 obj
<</Length1 22332
/Filter /FlateDecode
/Length 15956>> stream
xœ½¼ ˜Õ¹7þžS{õV½ïkuWwO¯3=3==ôÌÔ¬ ›ÀÀ ( Dq#Šæ*ŠÑënD5.ñ2 jãJÄ…“«&qM"¯q|7hèžÿ­êÀ\sïÿùž¯æé:§êœz«Ï{~ïy·Óô°X6wA¦î†ô±kЃ°lùÚáuXÄÌÀŠå£w­n+<00>w<03>¾³×<C2B3>³öî ×Óì3ÔÕ眷éìå…e]n X³jÅÚþÞºþÏú.š]µrxÅšß qÕª•ÃÆ2šáUk7\ôv…ˆZÞùˇwýzÿ!|<³vø¢uì}Ìûð9¾5¼v%šGí@ZåzÝùl˜X+PR½^¿rÝ^¹ôYô ŒuF€†[<5B> 0 €ù”~<15> @¤Òª€ù°Î<> á<†õ@€zL¬TÞñ5 ¡ºƒ•e•eº;Uš§gLÝÙ§ÿѦ¥†âÈȪ×?h9]-?øujoeÙñuwòʸò)´(ü Þ×UKô>ÌÃ&¥¥œðÔ÷8y¬Û´þ<02>!ªß<C2AA>Ok€vÌEÄNªOáÔ‰§”j<>0<>`@ tÁLX ƒ°6ML¨OÔ@;ôÀ,„a8wbb⣯þý·W<E28098>ú÷ÖÿæíÆçàcĕĕ¤‰|žšMÝCS4E¯aXæÖÉ>Í­ç³·æz­Iû²žÐú{¾úg¸R <E280A6>ƒÆ¿™Î3Ï3ÿÙr†å «Ëz¶m¾í¸}ƒCtüÂ9à
»®rÜ»<7yG}Vê§<06>¿vhÿý ¶~îÿëƒ:>jˆÔ"ÈM}7ò°S‡ V¹ÆC<>ðU½ÿدڦ|ZÈ ¨”Ô"°“@?ùx¨Cê'È\Ü$ýÔÿô~âzèû¯ñ1Äõ<C384>!j‰ë!† ÐH˜pb“< q"t$¨Ÿz€SžÁGxa.€Sy†ˆP‡ Á@m<4C>—êq˜&>˜˜ø¬Ò ´<55>xðÀ^åƒ+mE<6D>Àáv `3| `‡|„Z<E2809E>€½ð|³` €™ðšÛ``-j<>0ú94B7ÜÏ<>6ÁùðôÀw!{ᩉÀ<0E>ð”àKàÀ -0Kà:¸Ü ŸÂ;'>ƒ\ %xkâ·<C3A2><C2B7>-p`pAºa ¬C)¼ab+´Â¸ž‚<0F>¬Ps`¬…oÁ¿Àíð,¼¿@HAZ õp3Üò£o£ïÜΉ5°–ÀX x~ÿÑóèЄgbïÄ`¡ :Ôö»á{°¾¯ŒÁ!8ãhZLˆDý„n¢nâØÄÀ2ôÁ°ÖÂ%p%Üá5x >D~C<>¨­C[Ð6twf¡æL\,HÐ-0¾Àµ°n<>{àAxáßá#Ä!·ã-ø(a$dò4jtⲉ]ÏMü @èƒ>˜à"¸®<>à&x^€_‡ð'(# ÈŽüh/zý6â8Þ_%Î'¶»H ï&ß§Z©­*G&Ι¸eⵉ¿ D yÈC 0+`œ«âãØ»a¼oÁ;ð>”¡‚|¨åQZ.F?@ÐaôŒ±€ý8Žãx+Þ<>wàýø0~p^"FÔg·;ˆÉ›©Ôõ¯Ônú÷ÌÕ•å••ÑÊ%•g&ú&nøÑÄ~` 1uN{aÌ‚Ó`!,³áb•×Û,Á.x ‡Çá ØOÃ3pÞ€ßÀQøŽCq*È<>²¨€Š¨u NÔ…f >4-Dýh1@Ãh ÚŒ.EÿîFw£ï¡<C3AF>èh/Úö¡§Ñkè ô ô t}Ž>GÁXÂ2îÃ}x1^Œ‡ñr¼
¯ÆkñõøzüÞ…÷âD+ÑC ÃıŸxøñ!ñ7ÒEn ¿Mþ˜<L¾C!ÿ“ü’¨,ÕO-¢t<>¥ï£cÎe<65>ü<ý•%d9l·â¿Ã¥x:|^À¯â^x6£ÇÐ}<7D>ûán¨‡zxÞd¨…Zà<5A>‡+ 5P G¥HX ×ãv9vÕb6ƒ^§ÕðËÐI`Én±gY`LZ6FJbooJ¹cÒð)7<37>c=_í3X¦v |µ§<zÊÕžò‰žH¡˜JºÅÀØOºÄ@ -9m@ Œ]ß%ÆÆÕúlµ¾]­ëºÄÁ`0• º«ºchY {¬gtÕ¶îe]©$Ú'+Ú;•„}2hÂcÐ9¼y•c :•Ýc.±«{Ì)v©mD¤{xÅØ¼Óº»ÜÁà`*9†:—g<E280B9><67>Ø1fHL>®<#"óÄÁ`*¹Zùþp­v…¸âÚ g-SjÃg ŒÃcx™òcbÌ.v<>Ù/þØqòrªÖ}Ý)<29>c8Ò3¼r[Ϙ¼ìÚÞêå2åjøºÞT²oAàŒ<C3A0>1|åàÀºr°ú%Ôï^ÅJ±[¹³lM`Œ;ÄUÛÖ,ŒÁü<C381>=.ÙÕ-w ŽÁ¼<C381>=NÙ©^¤’û—N jRÉ}©öT»RN :.­¿ûNõþÏ÷kÔ~~­I%ûæŸà RÞ$Γ—<E2809C>–«/Çp¤I9­lÜAåD©d÷ê1®sÙ6¡9•DcTDÛ¾€1´Lÿü«w†'ïÐá PªÊtž@Äž¬— šì+7o`7B7 –ÐÄ•%èòg¦JSà°ºk -K• ž,A¬&˜*AM2Ð3FDz”y l l±b[ '°jxÅQËùâÊmƒ™À,Xƒ…Á1yÐ}¢ºrp°9U„B‡Tél ôÖLRX£RØ6˜)§J<C2A7>ÆiÞÀic[ºÜcr× ; t<>íŸ70¶¿ËL• uâÝW;&¿s:YTMª™*•c[Ücòà¶mÕ+18¶Û6÷6Eª×%ÿxCž¼Qé.¡-óÔ¦-bЭ܃bpÐìJ• ›ì[05½%¨ýŸ9\w*‡sÉÔ©®ÿ¿Äá†oÂáÆoÄáü×s¸)Y¼ÂáÂÿ;7ŸÂacéS<C3A9>cêë-Gš¦ <20>f†bhŠb”[“í$ER$AQPCQE<ÇÀ”öÏé3 Ã]¥Ï1 Í04ÍÐ0ÿ”¾rÅPhxöTúÌ×ÓgšeIžei¡=I_qD(’¦   ަiš$ šbh´ÚoD_%Æq$Œ†ãŽeŽÕþô)¦Xš<06>ÿô9Ž¢Ïjú\•>75? ÍÐ$ÃÀœÂL"†gÐk5ªAÿ?Óç9ŽçI
8-ϳ<Dz<÷õô5
}jоÁð<C381>èó¼X<>†¢<E280A0>Ói4¬†g9 o8AŸa!Y–Ô²,ËR4É2Á ýôµ<1A>8­¢<E28093>×kµœVÃqZÍ7¡o4èþ7ôà Sôy=h&ÛYŽåXãHàH½2Y4Cq
ÀdÔ<64>ŠzþŸÐ×juÀët4A§ãuZ^£ÓA{*}êèsz޳Iÿ èëu:=hôzš­×èu<1A>^g:IŸgyæy
xÊÀó<Ï0Ïx,fÃÿ†> ZS•¾V¯3«áåàxŽç¨Sé³t•¾Õú<C395>èëõÐ 4 :³Á 5èµZƒÁz¾†Óp´FCƒ†4<1A>†ai oÐhÀfÏÔ¡ùzúƒA­ Ðè,  Z­p
}^Ãkø¯Ðçh<C3A7>V¡o·O¥¯ýzúÁ`<04>ÑÈp ·<18>:£A§5l'éky-Okµ4hi“V«Õ²­Õš´Zp8¾ }£ LÑ7XúNo4:Ô%^¶V£Õ|•>£ÕšµZ(Am¢Ñ„là~º¢¶7âhÇB$·ëÐ1@<40>õ,¨g@Çd<C387>rk;ƒ¶ÓèOís±‡û#&Á~Œþë¡14cÁó˜va»0 v`å£Ô.×a¥dáF p#ưSp#f<><66>ó1ÀùÃù˜ó1 $,Åæa–ªçb Ê[çªWYŒ¡ “<>U¯2ÿõ¶ &!£^ù1»±òSèc4ÍÜàaDïõ¡ÙpøQíž«æúŸC@tèFõ|…¬è>èÞ èn è. èžC×Â<СóÔ3õót¿œ§ëœ§k§kž§{è![bºgcºRL÷Øî˜n4¦KÅtÏ¡Ý0tè‡êù_åÀLÝ_fê^ž©»}¦îÊ™ºgêΞ© ÎÔ<C38E>åÑ…=:·GWB—>a¸É°Ý\ ]ºw»î¦íºúâ±ÚŒ¿½„þüxΟH6úKèš= “þúΞ…<C5BE>øÛ­èrˆüh ıR^]j¹ eÕò"”UÛ7îÉÄý%tÁžÖ{ü%4²§õˆÿt.¤ÕÆ5{rGü%Ô´gá™þvå&iÖA«”©=­7ûK¨fOò'þv#ŠB<45>Â<EFBFBD>SEÈ©ÝC“%½g¡ä/!jï¤"^Bh<42>¿ru £'üÇ2óý_¦K$Úãÿ"]bÑÿoâ%üÈÿû™~D¶ûßÍœéÿUëLÿ<4C>ÿÅ…GüÏgÎó?•Tx¨ë…:<ˆ²èNYã¿?s³ÿ¾Ì5þï·ªÍ÷æTz·.T[â%=á¿f¡ä¿ ]Böø×ç”7hüçfÎó¯Iöù—§KèNÙàO'óþ™§ý§eÖûçVß4£K-z3O©Ãù³¬k÷úÛ3^KëOüÓºJíñ”Ç÷øë«/¯K«Ã«m<C2AB>åO¤K$ù„¿fa­?”+a$§üýç0K™~&Ï40YFb"Œ<>ñ2ÖÄ
¬žÕ²<«&$Y`-¥‰_Ë %¼k¡¥ IåLªu+g\<5C>þbÄb˜ Š…<†®·<C2AE>¶9ÚL­ÆBO×ל_wxÇní[00ö°wp¬N©LxûƇoúú¸»kúD)ö¡ ú]÷|õ~°kpÐÑ76kÞ@ }Ò½º„~×½zxLV?AŸt<C5B8>ÉÃ]ƒƒ}cT:GŸtw탅J18°7B\¡qܨv»¦Ú-ƒ~§tëR
¥ÛȨÝ2øˆÚí'J·ÝWÇ»»vÇãj* W«]®¦ÒJ—FÕož…Lw×îLFíÅ<C3AD>¡¬ú½³ü˜JÈ«Ê庻v·æ”.»ërÝóvçêÔæÌÉædµy~µy¾Ú|úÉætµùÞjó½]ƒƒ_ËãÿÇÊŽoÖï±ÓïºünÅ_&v¯\&v/»vt•clËY<C38B>ÀîËïštÍ¥eg-_¥”Ã+ÇîWv<57>].vvŸ~÷×­4Ÿ.v톻»ì¾[^ÙµçtùtÕqìªëGº¿ò®kN¼käú¯!v½BlDy×UÝ_ÓÜ­4_¥¼«[yW·ò®«ä«Ôw)cë^½ ã¯96\xá™\p¦â¿¨Û¨> €<>νÍ èZ${€dfÀSä ‚À.Žff p²Üïƒ=ó‰Äœ£ÅÙåâáËâl¡\„¶b¹(-µÙœ1hŒƒÆ 5Z:öwªïï<C3AF>ˆw<CB86>GÁVì#ΧVÁtØXBò´\;áÒ9¢aiÎt}Ðl ðX ­}FRŽv¹žöW<>®'Øl±Ø<C2B1> =ßnl9ÈLï½èG"óAqöñåå¢ÑThÉp}®—ð<E28094>pÚŽ…÷ŽWŠ®÷ŠÂ{ÅÚì•€LùƼêsu6{CýdÍj¡í­(ߊÔ:C3v[£Å<C2A3>”AVËdµ¡¾1ƒôH©m]yß?«Æ¿b]CÂ'Fšðü°³WôûâKn]fœ{Ç@½³fû,}!J]¢ÿ_Óa°‰¹L<C2B9>³%$ÝÖîZð@(OöG6½žyÍhã3~SwD|Tbô£ß3÷ ú̃5ÅÓñP÷SËÕUå‡ !8 'i2˜·ßH 2NˆY þb Ÿï·_G\G^Í^Å}G÷ýw ß®ó_¸¸“¼Yw³þfÃÍÂ<C38D>þ;á.]—3,KƒÝfCØá@Øát"ÒMü<4D>Ü<06>[ãƒ~wÀ°9±ƒ»]„X.ÀÒtÒät"Žçã& ÑNÂÆsl<73>Ò#§<>§IG±€“vG õËZNr,0è Vlç0ztê…˜ƒPæ¨ËY.;><3E>¶b±ØV,ºh•ÆÑd/ åd*¶êÓ j³pp«>íP+ £© 48”2ã(£„ <E2809E>RS*[<6A>âV¡ÈÅâVA_¬Í¢!¤A¨¡åQù<>ÝlhE õRõÈj±ÛìVDÜ4þYeùܹËÐ#1Tɵôÿ²¤Þbê/:Ï_ãêEQ¬ÇõåÃåÿŒpgÿ?¶qCž<43>DX{Ê0«æà+ƒ®zŽPË•yÈg©>ÐBêà yÞUî+}¸‰è%NwŸæ{½„ÞF¿L|Œ>MðiVêÜt[S¢7ç­¥ŒÑT]_íš)ôS
QTÄšJÛ¬X‡#l¼„r²É9€Ê<>-<2D>çD >ËÅ<C38B>B »ës™ÃŠ\
o<0E>‡¶¢0ÞV
™¡‘òc¡PåRŠD¢6Û¹IÔ$ƒ¢Ý(!…¤¤=Þ<>@Äý¨ÆêG(¨í‡D)kËå—_~9 ¡¡pcC½$Ö ¨ÑbËQ­¨ÁX/Eu¤*J>¤bò<> õQI ÑVcWÞüëþŒÓU\[~á’3.Á­_¢àÊÂúë_þàÂGÊ+ðó]Wܺà!Ù÷âÌ‹ýÑ¥¨‚ü¦íâÆvZºçÇßíKxB;nüÓ þ£¿xד²h«­ÔÊjø€¨å B~$»~åùÄþ‘ƒt¬vàk³SnúR™u¦„Úå}©ŒwJ6Æ`³´ŠˆšÒn.ö3Ã;ìÏÛj'ì%L?&úK˜Ú-E2‡<32>Ž •¡#¦BÚTF<54>«åS—ãè8\-ã×Ñq^Qyéñ„tFo$(=†<èB†<>Sôm<1E>à£ÂE°åêó9³()L£¹º|cÞN3´ˆJF!ß +?Ó{ëù„9ï¸ô­_Tþˆüïí¸R×ʽRyâ…Çž=„ÚjyG T©¿fá=•UÞ®ü¡²oVb±´¨ý[ÿþ"
£ÄkoM®ú©>ÐCî<>ë¹Ñƒl‰-¹wÿ<77>¥YSÐàÇÂæ ÛMf̧;ÆiQ ³ôÂç=ÈSÂôãN7˜©¬Q`Vš 0gR1gˆà|^¿7à zIšŒ¸"¬D„è<âœtQ^œÆÍŸ`I¢fZ6… F!*ÜœWÀN-X ­ˆAtíì?Ýõ‡V~ß][¹d]WÇz£36_:oÑ÷>.:/°ô&4Œ¦í¸Ú—;öÇMÚÂâÆu2+<2B>q•Ï—ýÍŠEh ‡©>ÃCòýË·<>Gü%zïí.·Á‰œ)/1®<>A7-·ÛÝà@Ž”Åt1ÑkÑN?á÷…I³Þ<C2B3>f-æ¤×çYY§ãï\_ŸÇ¿Á| ó<>K&œ$¾Â¹/‡f=ªhÒ6S!£Ü/UéTW¾„ðÅÿ<1YBµ¨ÍæO°Ä,¦‘¨²)¨É¨^-6»5hß4­c=Ùɬ©|·£ØwzmÙ¬½÷ŠÊ/»7”_ˆèÚ®$6®íd¥Ê;×÷yâ•üœ<C3BC>iãìŠ<ÒÆECíÄGÔNj9d ÏËîO0бâÅnß ÛO+F®­ŠU&": “×çjÓÙ aJG9fXt:âál6Þ!þTÄq®ø¼Hˆ%L>VgX˜P¤¬®V•²/‡†Š¦BF(…#UYSØb²×犈!¡Å5®Ý$Æ<±´Î<18>¤$cLµ´"j5Ѝ%¿*j_'h<>'Ùh¥Új´<6A>'„N$Ö~bLFt)!Óֹ酃•·PÍ»©áÎÌÏrÖTvü òæë=~ÍRË;B<>Êi·ÌØRy«òPåãÊ zƒC ¡é£ÍŒ$QÀŠÊÚðE»~Œºïðo<00>°¾p‡<Øãî‰b]ÐÍžZc!q¦Û )°KLÁNº-1Ñtûb¢t×ÄDItd$át$ÉôÉp$â³Z8'jü>VãNW “<>§tÒ$äRÉIÈ)ÚuJÙ*ÌVL:£]U·SÆqmFNaŽY<>ÁSê*¼åiœ„Zð¢bç.Œtáµëqa¤³s¤|hÓ´òÍ]#åCUœ}«ƒ•$¶ã[•tãTýøÈº6>ÑÊW¢*KÖÉ*ê‚ø2ªÌ`<60>9¦0&"à6§Tf¤D}ÐmJ‰zI<>feÄfk±•0)szžÐéã$±`Í(Ã5š
Â'EÀŠ
ŽfW‡÷ƒS<07>gÎÜŒÏTÎåï£L„+l¬ê‰n9>²±ÀE¨>@`<60>ø<49> ¾-×ÖmìbMA·>ân]J$HÖÅ™tËð:ü!þ#&q<>]¯ÃTÚÎqlÜlz“àæv{Ü™ÃG„/ÕùPÖÎÑCŽIÝ2µ†
ÍÐ6v©¢P­ÔRH ¡¨"Zµ[su<73>_£š¬Ö±»#óÏÜ€gmœ¾|ùMËÎ}4óHÏbbÇz™$fúš²ðúò<03>Sëß+êhFä•Î <0B>W9oqÞï|ÜIŸd½k
‡N»<EFBFBD>Ð6 ©c»,iÇb Ž€cžƒp(KœGe¿7ep“K´µg ãŠjP‡§­6†þû4øP.ИÏAûHgÇzÜ92Ûµçz<C3A7>qÿúÇöDÔU\Y³$ºõìã±P”"ð’}•ïMŽ„þ”êƒ</¯þ$ˆŽÓЧÆî‰k
šÏ"Ï9žW9 ÏñMÒäv{xŽ|>¯ÏÍÀè·VñD;aqÛ<Þp„²²²'èµÆ´1£-æ
Çül,#8^ãõP.¿ÛŒŠ”E}þduÔQijÔ*öìáóÏ…Ï…qáóÏ[2®—]ËvUöª(FH<46>B¡„„À*vêœÂý£È!Uc5h¿¬·çt zD·¯ïèX_~áòQO¹\8¿â<C2BF>è¿OÈçwÒÒ±¿<C2B1>œÄv®<76>”7¾û
âöcëÉ3<EFBFBD>ÿôÁ\PQ,(ûħԃTŸâcÀírǯhÀ¹Êù¾æ3ýgÖ<67>=´F1õ<31>N‡Sã`<60>$ f<>uM<ö<>ÛÏ:¸`<60>°9ì¼KcŒi5I»ÝSåQ+:ý1Wäb<C3A4>˜Ê1”9|ôóÏåÏ—Ÿ«NäçFSÁ¤h¼ ´µWøR.*B[PÝ8#P <09>,ÖfÃ@eK4<4B>¢ Ad¬<64>žÀÍ Ž ûe½žT[ZJXë#è7Î<11><>ªÜÀ¯«üØlpbé¸}(ä%I»dç±WÉåÇ«rBÙ(H@ËÄGÔ·©U 7xà~¹þ%Ó«W]ÄÛ¦w,︈×ô…ƒ¶×ä»ú·„·lï:ÈNM{ NÛ9<C39B>ÇM-\fF榟¼MóC Ö,t+
ÎçUÜЗCã'ÌHUÀëÀåŒX%<25>dŒ ‡&<>Ê#N¯É#PyÒóÀkÙ<¢Ml^Õihj©¾ ÁИruŠVˆó<CB86>Á€Ýf:¨è3„"•}<7D>#T9¾§4ñéëÏ" ²>û“7Ÿ«ü¹òëç~Œw ³*¯¡”ºÁ¦¦òZåÔûÒãO¬”*<2A>jÂ/NF È~ÕvŒÂA¹÷%׫ü„ó/6ɼ/ÁšfÜÑ)Û1tK)ÑòEÍLûÒ|3<>ì„jPF%V¿PpgÝóÜ„[Y4âthÒ¢ŒÇN,ãêš-(^ËhÆqt\©TÆêÊèsz5:ÀÚ4^}?ÂN}?Òyø~ÑR÷_3n9ÎÏ, Pü¯T2˜tL|H±7ÐI;“´ZH1$‰U±#F¿¿øÊ6o>$\ÚÍǹ°¹ý[؃Hd©¼þIðçôo—_$oògŽÍxùøÍôˈ<C38B>çvqÒ«÷ÿì¢r݆"§JYKåfêY1øPÎDh^Õ¿ ¼`{5ü“È»ú7…7mï†ß<E280A0>h_µ¼ý•åý(y+»ÝA<C39D><41>Mü
Aye<79><65>•íbÛELi<ÃÔB¿y‡ùyóOÍfJÁÝc5š…1s5ñI׈¹BKƵùða‡ Ú¾oÞsµŒ»*3¡(ؤh$Žô$Ã_ƒÆèmö“x„DB(ž„ä¤ÿOICáhe<>¤Àó¿¡SxîgWn¯üõ±å.| 2±zõc¼ëá¡G¿§<>¬<^ùûã/æ뫱Dó<>û)íÜ•O£Œ²¦PÓ¨>Ð@ üI¾¨×õ¶G=ûă¡7CGBõ 1dȲŠ5žHˆò°{ŸòbÃL­»&®\†H¸F`4b(7y½o8äñ„5H“ç…—…·„ÇÂd8¬5ÝLÚÚ˜;b=Þ<>èAT0B,t®•ƒ(¨ <ÉGâAAx2qáGÇ•õ¿%ãPiŶñª‡~ ¼ù€£ºúM…­<C2AD>Ø,aýŽD†Ô)3Ù$m<>Pm#úé`ú‘:—_ŽFpŸâyŸDv<44>ábªáÄTñ<54>7,ýÁMs._­lmn?çw<C3A7>þúÐ#è<>èœÊÇúî åCø Ô¹oO»èLW˜ò*MÏbãy<C3A3>œ”ê?rÇ}®òß²I:G©ÊÚõ-¼Šôþ‰<C3BE>‰qj4BedÉ(n⿭٦٦ý]øãÓÇòý¬á™È5ü5º­wù7#L£âFè.•kW×âÚ<C3A2>É´[¹ãw]*/²<>mö<C383>9Ññ$éOçÍ™Nsr½»¡„VËp7ê>й™¼Óí*¡Õ<C2A1>{Ü>÷£DI <79>Mü11 …Æ<E280A6>P ]ò$Y …¦Ìá7‡6<E280A1>qoM…ÙÇG®ñ£ãU/Œaüè¸kÒï·WËçCŠÿq¢2²^<5E>Žú@Š2…õ¡~àâL?¢RL?
˜Žèul ß<>â1ާ“d?<04>þþªäÅê鄯b¶ÙUî>*©R WNú/i¤L©Ånó£áJ1D3"<22>þ¥¾çâÇϺ±7sÛ®¹™Å¯?ÜsP/yÙšTmÝûç-ܜͮÜûPwןŸ]úSCØI¦ZÐÇèîmóo¼äü33g®­Ë _x×ëÝá`eÖÁ»—Ìm*´ž¿jñÀE;Ùt¢½ÄaÅÂò<00>ìpÜJ¿L¸ñ.´ ãhÆKÑRŒýÈ<C3BD>±q¦[—
±A·6%š_¶¹±Ýl±¬QGÓ°NË:K˜ßƒûP ±²žaã&¿q©q‡q—4»úìû0ŽÌÑ£G‡ŠåâÑ£Ÿ¨ê@qUª²y¯¨:ÇhhhhHPüb³ê'Ð)æ’Ê›y¥¦6|þžõ37—¹B^ÿð·ýuT_å¾ûûT1ë#|Ç•$œu¿\ÏÄGÔT+RïÊgô»º‡¼ƒ¾Û5·ûîw?íý»Ÿ0M#Ó¨éfº5\«Ý«½«}yòiÉ b!ûÙns*¤?[qRAw$&íz”"f`.íá$)àÐë’»b:ÆH**+C,úÓqÒJ(U¿¬j¡ª5hWC$ÿ`ú+Ê~òíIÎÿøØ¢ì¼uè<75><C3A8>3Ú/ªŒUö^ÔÞ½¿BõIlÛHydçû¶þ°_#IºÁ<C2BA>åß¿¹ñÝ_nxoYׯIŠ—:ñ)uÕ~(Ë<>kœk\ØîÜè¼ÊyÈwÈÿ¶ïmÿßÍ·pœ™³8ÍNK̳Ð,Ç1¼FÃÁ àsÊašnâ4#ò¹ý—¸åÒÄUr-çrNgÒÄq·Ë7qãv9Ò¯q˜9·CÃ1”˯°Êåä Õå󱻃
í{ì.q%4GÖæù·ø±ìWòŒ~)<29>ÌÑ¡¡!—³<Tr|2Tõ÷ŠÕr¡`²¶ÎN'ô…ƒÔÖ´C­$\á (ET51<35>ðÅdM ŸÃ<>SÒI»SÙáƒD¤£¸c¶§VÌ"‰fKÎ×<C38E>~ÐîϤ+ÓüFž=“ê“'Ô:—¬)ç 2×cfÕbIä\ÑÑc[ȳoì¡D@ÀM|Êl ú  í“oËrH Ÿ‡<jâêÎq®vot^ä¾nA; ;„ûá~ô€n—áQá<51>ÈÒ^Øž6<-<yRz)ò’R3žF0Œ“qa&‹²ÙÚŸH¦R5<Ïe²ÙÚtZ“«oh¨CneMnã³NÉùa<C3B9>Á-Ä4¢;<êλb r2âJB]ibãc\]m 4±Q^èJ§ÙZ_­2|M*•4¹\nM:7¹\Άº:ebÙ†ºZlʦSN Os«![ãv9•}Ë|]S$l×Õ¦S\³ÝPÏÞ¸<>ëiÔ [€C/È|š¶4á&g¡¹„~ûXpÝjjÈåœ]v9ÊÊŒ;æt¯ì:>øê¬¿fâ¿ZI(PH(êUyFÅD5…ðu'FЋŒÀõE¶¨^l­ºl#C§â™£Ò ”T<E2809D>ÓXUÇSÈ!HÔ ,EÐD+­Ñ Ø;ÃîÆ@;Ïö¦YÅØXªÑWD·æ½õ®wú¿í_p´óØÚþ%TŸ„9cÊ"ùŽWpÇ_ºìz$Iˆ76˜Ü5eÀONK»„M‡%‰5z§—wü¾rÝ8=þ=ô0úŶR²Ö¥¨{¨>ˆAgÔ°¶ÛÕ$o°ÝÁ,Ãr\ÒdwØY†‰Âa1̰œ<C2B0>ŠŠŽé¢#ì<>"ÁLDÝq#`¿Çíe휉u0a1O<…y0¡¿ÉÜô¸ˆûbâ3èo0b˜ƒšÌÑÑ£Žñòxa´ìødvFõõU meÕý³«î_KfT±ìÕ1&OúÇ04¬Ò×Ëã©n²ê&â5½½Z«bhš4OÚßZ;kiåg³¯*ßpmgåèµëæáÂIWB T
èu¯Ä%õ$"Ô°½RWÙ8<C399>‰DØÎ«Ð
tÍk<17>Ð7ñˆkˆ½ ÚV>û3阄™h<0F>µâ<C2B5>ü<EFBFBD>…‡ø‡4êžá^å^˼–}<7D>{/ûNíçÜxÖ°˜MÖÖØ=~r2̨K7j“h kÉE˜tk£†mmÑ´3í…¨ É´×ȵ♚]5¸¦„Aæ;QwW¨ƒìKíîìP ü£å#—CÅOŒ¦B¹xDñ£Ç•?…yêz6ä?<R.¨¶Ê´Ö61¦µ#Gt-™$¤'%`ZIXÃvØìfIð¡hŒÐè TëcÔâ;a² Õl™rB«I¡¾j¾„ó<E2809E>ª ª
<EFBFBD>u28¥3vÛ¤kÌ+'†¤hµh@¸ï¾íÅh¶cS¾{2[BçæÒi>bõ¦²<C2A6>þð…î«‹Û}@¤©¹«…˜ÕxúüE—¢Í¸FJŽœžðÌ,œ;\<§ÿìX§Ë<C2A7>ÑØ&nZ¸çŽK»ÿ¥r~³-ªw×G<C397>Ò@KG Wd€™'ž¥6€"p½\ó…ÑZt§‰,zÇ:<h»HG1覭­ƽܨñuéKË|4¥3ýVd-¡‰jôg¨¨ÌÇ8¨³P dTÓE_ŒG_¨àð´B@ë“<C3AB>GðIȯ JÈkpKPͲM2ÓÜЊr6«±1_MWƒÂ c½$BÕ<¬÷Ìú'ìª?㢛ߨüç{ç¿hFܶúë¶^zýô«É¿†\2M—wd}}éÍÊÏd°¹öØpêç·ÜR^ÜYÁ
2ãD± B ÂCòŒkí÷±ŒoßvüÖø‰<C3B8>iÐtkiÖpkøÕÖÕ¶¹MüÅÖkw0¼`w`»ÃÌð:J—CÌÍfdn÷hDÜ!ú]~©p5¾o*(j+O…UC{2uæöy “W<E2809C>@<>†€NR lª÷~"W/UÝídîLÁäD|ñã鬨 ÕêÁÆõß{ôæU§¥=…¶M;îþ¢_N».Ÿ,dÓÙ›õÐý·ý©+Úo¼¨çª/ÿý§¨Ô È81N<31>B
šá]yíí±‡b¯Å^I~”<š¤amúôµé»Ò<C2BB>$~”~*ñtú'‰Ãé—šÞK¼~«IO$fűÈjÞ!çñÍv£/`Ÿçõøn
ÖÕf3¤<EFBFBD> Eë2¢<32> êISʈês)¦¹5 jBdÆ•íÈ^ÂðD1ßuO ªQXœ¦@KÉ<4B>UÃ÷ tÙ«™\{a“Eh …X²!™— ËKИ¨—PS¼ù <>(H»ÍnTñÄ4ä[ÂEF<45>¬„eRD (Ú ²r&Õðœd9N·Ä"îœÖ䟟Z"4Fº56 }í÷˜¦øŒeÿ{ùÉ ]Ûqéu·ü+±;`<60> Ö4&V­KKéñê¦iÇÚ^<5E>pg§qßnq¥óè¯PþøƒgÄÑ£WœûávbŸgƒ<à…_ÉC«Ù5ÚóMçY¿Ílb/Ön6^fÚlÙl=®ÿÒ ëgÏf—<0F>‡LoŸp¿5°-,ÇÛÇcŽ'h{A 1<> =žå^3sý}Óí:<3A>×^á§<âìú‰w…õ~ßdnÊT8:>‰ÞñÉ•µ<%ÝJž¡
á½(kÄ%YLêZê9”ž<E2809D>Àfôø<C3B4>y|ˆ4Ðê,$Pbj%<25>J [ƒJDª1oW¶<57>¨W”[P<>yŸõfùJþ¹+Vooã¿ùÁ3?ùÃó?*ôè<01>»öñð<C3B0>}úæ·Vj/û%òì{…g¬lœ¿¢v` å—ª„@<40>å|žG,çäã<AKDÂÁ6OäRÙæ0ÞâÈi<C388>Ÿ*ø¼ MKžðb(VM²xƒ&C bš€hFõÏ1T&<26>î²É(Lë<>C8à8%ª-6äê'׳ªô*-C{QÎ:n­é|äÄüw®Í†¼5^£^
ÍrŽý­åòòï=T÷ùøŠÎ{Öþ¬gZ°^Lº¬Þ¾XûxgùÒ$4V:ˆˆ]`†^X‹á yxFGoçµ×t>즨•ç:]<5D>…Î5ÄyMXppíf!ÝL¸HrciÐ^Çõ&D|wZ]]/ÊõúãsãÏljøô¹¹Å®€“Á­ýâÅmÖiÛ¥{%,)ŠY;Håƒé–î¨Í\B?—õÅ} º[Ö¶Ýv¯<76>´)Úap s¸¬lÈŽŽ ‡ß,+AÎ)?ïp±X}ohTÁS¦<©º«b­~
ŠêV˜
(qð4Š*ÊÕt2D0 YÅ©¸@´”k²ª{Ûp5 <35>W Ò)Ýœ#^yöâÞXXÿÝÈü<C388>í,‡6“<36>®|êác§YûÍÚGM¼ñÙ{<7B>íÞ¥=é&„θ­²cï}ûs}Ú´=Ö=òE¤8<rVÄ<z&[ù³|ÁÂN##=Õ&7âè<C3A2>Ë.üy7qZ<71>¿¹~ýóÜYþ€<C3BE>÷fîºç™+g„»»¦iMF,2¸ÂâËn\ú‡¡ÚÞ_À}ê(âcjdá ÙÖmC³#Îî²c+düY,¶yü%tLž „]m_@L´y2qjÑ<6A>‰D\t :š%«¢­V&ñûø°˜QÒ£ðD<C3B0>MdHB™5­ªîùÑ ìIõ­ÆÞ‡ šH6‡d û<>ݱG}h*7§¬©“)uImEmÈ^UãªåsÂH<C382>Táê Óüœ·IcÕ%/w.ÃmµgZ vVeîâºö%snªï¯L÷h¦}‹ØßÔ@à°.Âú˜ò<CB9C>½¡âÕ½VV­y<E28098>GÛü-tËðEëŒóº&­GÑ_1¬§6€"0$K¢ÖЦõDa1p„yv<79>ã&OÀ/HO„½ƒ‡‰„ù¨jg4·PQà}Á H¹¤¦R<C2A6>Ž j¦m¶j[VÕŒðEB(ÖfM'Eº<45>P‡<16>T'ʰ§ý`1™hiI$[Îmâ Y<>µ.±«ÛÃâüpÅE5¶¶¨­ÇŒ|Ã…èývgœÔûõ¯aËuëY<E280BA>º£˜ F  ~.<2E>ö„£Ö«¬X? ÿ=Ì<>) ùà e0{N`Mö+
&KH´<5A>Z`
ÖZ¬µYkÖR[CA«…|U¸ÀçöxhhŒ’§)å­µ¡ •ðŠY­ó.n‰î<E280B0>Ñæ¼‚;<3B>¥6Óм³Ÿ@*xš Šv>r¤\<"¼9t@UÊJhW<68>íªù¾r±íèøñjÀ7“É8Vp%\Ba<>§¤ýNò­Îf5FÔMjÕ0<C395>Ù«×òÕSy/rYK6eö—œÓdhY}ÖT3Ú¹îêOÛwÃöÓ*<2A>¢ÑÃs•Ws¾• ‡©[@|6]ÂØãp; wüÉ£î€Ö®%<¦owãŸJ#­^cÖ¢Û+7tÛõÈ"*š.;Ì”V :Ác„m“ö²YãÑn7I´ëÝÆ;KöMTðãPñ£GÉÁŸ
œü©`iÌ×MA¥f¨CciÑ<07>[Ÿcˆâ™<15>‡+, ~Öᬡé`¸¨µ;mqŽQ1 ë‰aü]ö4:ëØø¡Ï<>Ï-baš0Û?‡h˧:=ñçÐ1<08>Œ”@f“g…ÈfðÌ „ÃÍžX@Ì·y¦ÄÍžÙQ æi<Ú› <0C>3ÜyyFo§œoL…ÝŠÔvÏ1êº[íu­~¿ÝÀÌ™]œ<16>ñó±ÑˆáLúÆÔ)Ü›*¡é²®GnÌgÚo”ß<E2809D>q¯\BÓŸì!ÍÑJåÊÜŒºÞŒr(q¿©J5¡F3f ãB5ñeŸ4”'­»ªßeL£¡¡ÉÜhc¾±á.Wgó"¥°Ûì_·òTý2æoMÝ ÎqÅ¢)«UßÝCQxùöYç´¬3óK—ïlô·Í¯´,Î[#çµË‘ÆÂ•†¥õ–à¹-£©†ÁJÁŘ½153MR¢C×Åë·.éîÚû­ߙyoexzŽuyØÆh×pz~™¯Ài —KÛu%rÜÙ|VgcùýYÍÈ5™q$>"þ rPOʃN×l¾Uÿ€»XP¨óç2Á¶ !Œ¹@ØÓì Ät³§N™Â** éTÄc& &g2Ä[íQ“« øz¦^ŠdêI·§„áÉFS4<53>!RæÆEª*P\jÅ£V¦ãè¸Q (<28>œjˆ¬*hÌáŠ9$rº¢ÎøIE04òUx·!eVþ‰"81(2½ 5OãÌúøg2Äõsv5<76>×ÜUéŸÑ,/šÖj”»+}è=×p:&»$ŒEm<45>Ÿçn^¨<>Îz±ê•Ç÷œ<C2B7>Y4³7”ßè­Åâ߀€ú‰ß/ƒà„ääKÜǾU¸Ãv¯ðˆí ž²<C5BE>´Ûûù…ÕÌ:rN̘r¬Æiírj¨ÆO¸ ] Ò(v±Û5é˜
㧦´“`×E´È <20><>°JÈÈ$03V éÁ!!é<><C3A9>À$°Ð& N&³U½9äB¹:°Z°“jï`1__>ô"<22>¿¼¿ò%l^±óÆuî¼)oCæÊñ_ª¼ƒ\o¡{êOÿpOåðë?|Õ qª=¸´<>ƒò`#×¼ÕyGäáÈýÑ#Ñ/¢,¡¢3#ÄF!VèÔyrï„Ó<E2809E>žºDGÀ¨ªH·VÃTZHÇs)¿QËSØçf[EÆÍàåqM®NOuIj0 ÁMgŒû$(0j¨?5 XmU<00>°ìNÈrÕW LjQb”„È(–€Ž°štÕ?mDÝyÂ÷G_U'ÀeS•¢“€>§ç¼;v¬žyqå…3sœÆlZJ ¨Žº%K·úããMq¹±ãüŠqCç/ö—ž8=YáÊ<C3A1>Ð]3ˆý³˜úQGoí4ýþðË•§ô֦ʾ•iVTýãJñ)± ÈÂÏä~>áJäÄ-ɇÒû҇ӿŸ¦¿L2³“¨‰<C2A8>tz„ܪxlDç°[7mϺ#5Aɤàtð¹,ã`„ÖM0 §£ŒKv#·j¦éºv¤PJ<01>j¦©~p±|俱՘CS¶óÔ&ÔD†1"¬dHè$ÐdtpFÚ‡Ì}R<>@›æ%ĘA4К4áÂ<C3A1>§H¯b%ì6{¾1ï«f`¦d÷d¼ÃibÖâHm¾aë5—ž^/N?Ÿ£(lö.¨x÷ä®ÞüB?9W0»byôÀÜä¼ßß¶û¢Ë¬<C38B>u<EFBFBD>ˆ$5ÇäW”õ
´¹ÛWû»_¿Ž2ІãðnbÄájyÖʇ<C38A>?Ž”5/‡;å¥ <09>m¼Gs“òûˆD8" 2nñš[¼(àÍz±÷¯µ3ñ¿Å…\ s4\5|÷îJ DMæð<C3A6>ªŒ¨©“ÙG<0E><> ·ÃþPEC§ìÅ9aßNoò·“9Ie<49>Ë[ƒÜÅH-4×50„¼QÎɵi¶M<{ÞPÅdkç¡—÷SdÐRÙ¼pßàŠt¼©g¤XiYÔ‰• <0A>°jb¿Bì†Z¨C„Ùp\WЭҮÖmÒlÒ^­åãlÖSû3y%ôÝÇj&§J((B5<0E>óg²Ûtù]È¥´9&[•¶DФž I¢Ž')®ÎÄP¹M<>Á…þèšpaWÛ^Ù(ŠÖ‡JèϲÑu†{ û „¡ꑲÑ~hôMÇÐqáÍ!Sa|ôÀЈ#s"]<¥³«»W?R·¯V·Š·¸>w9Ž~¬nWòÈ“ÛYã<59>  @*ÎúPÀò£|üjèMÅZ͹©$±êB%E<ó£SóÃhMÐíÙÚ·¸®mÝ·7Ü»©á2Ö$ÐÆo µ^Ø3oÛ¿¼µûÆâíz­‰r¡š¶¾eÝŽš9¹ãªÓ×m<C397>ñšÊ 7®XÔ|Fïô wŽÞ3j‰}€À91ާ;!‹åΈÜ!lÁ_ˆ5A~:ÓjÐÈ|P}AáŒÅí<C385><C3AD>IKXÌ~Ïõ²ë½–¡|à°ëe—ð¶ëe´•Gßt9^vµV3 µY¤dUDb2V¬¥”e­AÙæ¬8±­H…æc<>£'ÜrÙê74ŽÖØ×RçènÑQÄ<51>½åý³¢Ý¡ˆÍ×Ó¼º°ŸIЯ±¦ßNê¾T°eš'Þ"$áAyNÓç_Â,ñ¯eÖú71w1wù9¿Î¯Ç^oöè¢ÔìIDK@˜göX¶;=NÉ+ð•ÐíÔP­AMñDùŒ!™Œ¡„áñ4 LDRtB:u"ÇkT÷9Q£õmJ×XøŠ:0…˜$$2„| †±Hùª{?Õð'šJç«_UÖôˆ¡™<C2A1>ÔÔ5IÍ+Ù‘j1GwµG¤âÔY;7_ßâ pWSÿÒųç„l½è<C2BD>Ä=å-]ñY)g‡gg©`YîʃÁÂ…8zçiÑbkËvÌÌs<19>VY"ãÄÄNá~ų̀&jÍkòÖv±°Ø¸Ø>èô­Î1žc_åÝÈm´]äÛÊmµ]í»î@v5±T0Ùì6Önc˜êL†³±”3ÌòVFX†ãlØTBÇŸ˜n÷1"öÐñǧoμ44zÜa7Þ-;Ôÿ%ÅJS“G“9#öÔ=•jÞÜb³»OIéSýeW©é:TªOpš7öê웄<µ‰xåCçx=[y=RãÌ;ý´%$x=åcèÕ`¯9j俟,œSΚõv#~o0`¢ý
wj&>§n vB3bå«$Fʬw!Ø¢9†Õ³ÖÂe¡xh£e«…â(%ó8OäIº®Á•ÍL©¬Ûãö4¸,VõoL¥F/0Õ¹\ÙTj<54>)
†RÙ†:7Ͱ Çªs#±&ÐSFOsT ýMÑÂb«<62>¢ %T­tC<74>,¸²ê2¨Ü PAò„R8(K¨üøô€„¤i™—FF<46>«é·÷%*5R­<52>ªÖÞ®ÆúNewH…çVqm•ÚTýTþKцÜû¥(Q-ª;ëäo±Ü(_/U÷z¥b³NóÄ­'<27>¬8ÞÊ~¦µø·•¿a†ÒâÊ[µ<> ZŸ®<C5B8>;"ë÷â„Å<4B>ÄŒ+jMù*´Çsº=⢽^Jš~ü÷K“8SþwŠ¡IüM Æï'<27>qïHûPåºBkYH‰¤:"ñqLC¼ïw "<22>D`Šã Îz¡qÔ¶•ÜJ=áyÂ{<7B>þ$jêaz ½Ât;ÙØ<C399>”Ñ@ÛYžo°Y­qÚn³Óö¸5ÏqkLŒ[ó |^´L|¼`jø¯n·Ò÷ÓOÐoÓ¤=céŒIÌù|C\´[yš­kFÑìŒÓ ½™:Âåñdk 7Ÿ§y+9Íhœ1Mé;ÍH»kã©¥¶˜yé½—†”YÊŒfÔ¹Sv ·«gåF:ÍP !1”N3 !¡Ìœ:yŠ,£Léä|
'·DLNS5Œ8<15>@§D'ªJ¦:íª©”7Ê|¢w¤†Obš·¶FB¹÷#ˆÍMOW{í~É6vÚwzõþúÊ/ëÿ±¿99“¸ÍƒÌ>ó@ºó´ôLËDx<d&ú—ʺ9iìñ`ì0™Ûy÷²Ð±”<C2B1>7k<19>GjE <0B>¸8Àx”=™x<E284A2>xXýË÷åo-q"†·;b5ñäL®Ë=3¹È½*y5uòöä¾ä/’úÞ$Š&ødBÝ'^09œžã˜ÉDÓ8œÑÏf"Ød%23СH—GŸe²SmYÎ[,ÈRçßkõí¡Âä @[[ù@Û?Š<>²F±Â<C2B1>)I1ŸØ60),têb5¥êMj(<28>¢z ÎæuŸ=CèÂ?2Çã†ÊÁù·^ÐtÖ´”ë[Ó%4YÙÊÕ¡÷ˆÛüˆÕIz¯·ü7¬ax—c¿ŸJÇ<4A>?÷ËšZb9 IÎÅã½33Lþ?m &?
endstream
endobj
58 0 obj
<</Type /FontDescriptor
/FontName /AAAAAA+Times-Roman
/Flags 6
/Ascent 750
/Descent 250
/StemV 108.886719
/CapHeight 661.62109
/ItalicAngle 0
/FontBBox [-203.125 -428.22266 1700.1953 1271.48438]
/FontFile2 57 0 R>>
endobj
59 0 obj
<</Type /Font
/FontDescriptor 58 0 R
/BaseFont /AAAAAA+Times-Roman
/Subtype /CIDFontType2
/CIDToGIDMap /Identity
/CIDSystemInfo <</Registry (Adobe)
/Ordering (Identity)
/Supplement 0>>
/W [0 [722.16797 0 0 250] 36 [722.16797 666.99219 666.99219 722.16797 0 556.15234 722.16797 722.16797 333.00781 389.16016 0 610.83984 889.16016 722.16797 722.16797 556.15234 722.16797 666.99219 556.15234 610.83984 722.16797 722.16797 943.84766 0 722.16797] 68 [443.84766] 70 [443.84766] 72 [443.84766 333.00781] 76 [277.83203] 79 [277.83203 777.83203] 85 [333.00781 389.16016 277.83203] 90 [722.16797]]
/DW 500>>
endobj
60 0 obj
<</Filter /FlateDecode
/Length 291>> stream
xœ]QËjÃ0¼ë+ö˜äGRÆ<>*5øÐŽ´vµ,dåà¿/^9)ô -3ÚÙ]ÍrYŸkkðtÆj<C386>Óxó
ኽ±,IAVD·¸¬ÏÍ<<6A>¬(ø'öf
~†ÍI<C38D>WÜ2þî5zc{Ø\d³e¼¹9÷ƒÚ‚•%hì—¯­{kN²]­ÑæÝE6_³CH 'q5jœ\«Ð·¶GV!D EUUUÉÐêïYT];õÝzÊÎJ(„HEIèщP& í<>TiÕìï Ó<Šž(ä iÓc$cÁüÉŠPvФ$2Ïïh ‡(Ï_bë•|^'ˆ=—o-ö?<S7ïÑÚù´8d,>ÖèF·¨ó ä0Ú
endstream
endobj
4 0 obj
<</Type /Font
/Subtype /Type0
/BaseFont /AAAAAA+Times-Roman
/Encoding /Identity-H
/DescendantFonts [59 0 R]
/ToUnicode 60 0 R>>
endobj
61 0 obj
<</Length1 20688
/Filter /FlateDecode
/Length 8344>> stream
xœí| |SUöÿ÷Þû²5]Ò5i6/M i)¤….DšnV¤@Á[i<>JA<4A>BAQŠ#u<>qÇeFÔGÔQ^1 NÁ<>E@;€"P
n J{ÿ¼—BaÄ?Cq~óó÷ñ„|Ϲ÷|ï;çÝwïyi^ `ØÈçÔWË~P@ùèü¡%Eè/?µ¢:×q0 ^׎¿u¦ø”yÇç@P .¾©zâÔw®z$Ðåª/&VÔTÃ@üå(§Ü~Só-;Ó€ðE€fSÕ„©³øVÈZDô¬ª¬˜°ã<C2B0>kR  UUeEHª® ¥â«¦ÎœWCoTOì/S¦<53>¯¨K¿À6¤ejÅìj5T{b ÞR1µ2º8­7@'ä¦êi53y"ˆKöWϨ¬NØ>´ˆ)ôÀ E0ç`<60>çæ¾‚ ¤`4 T 1P<31>AÞC>æE„š<>×!Ï€ïW~‡Aé¹@Ž(=*ºÄ_*¨äúV­UOÒ#QÖë„ê¥ß¯lŸh€VžCÝyG J¾@Xg¦a<10>ÀO9Šãd™-š9ºlþ/ã¹­¸ Æ¥PA«zL•
<EFBFBD>hŸfÛp Ѫ¨^-PY„Z@}~úÅCóD¸q\4«>èNR5Iƒ[ž<vÕ«ò,Ë+ Œ‘³t&ãéNÀ<0F><14>¨ë´nDR§-œÇQ!<16><><1A>r0“P<E2809C>)ŠbŒF%f “0 ·@D?ôFôEo81C•Þi˜‰ÛQ<C39B>Jd<4A>7ZÄTb"fa
*0Y?y,=1“030 5˜0½þe|בŸƒ'ú úCD1ªP ñG¹ˆÈÃ4Ì@µ‚˜Ù·7Dä`Jg†“0U˜‰šÎ|k”oE%& ·rAÂÿK¯Ãÿû_$æJ_´Wçëï¼>üϽاꕌÿÛ¢}a…ùUº'ôy\õßÎA Ì?¿MŸÇÈŸâþR¯»Pƒ!î¼QÅ9îì<C3AE>def¤÷KKuöí“Ò;9ÉØ«g{B¼-Î*ZbcÌÑQ&cDxXhH°!(0À_ï§ÓjÔ*<2A>Q¤Û rQ²—KÝ6xp²Ü¶Uˆ½â¼ŽrI¬¥Ar$±\¡‰¢tÓ¿0Ý>¦ûD\ÉIb<49>M”6çÛD/3¼Ä&JäÛ<¢Ô¦ØC{©bäÛ<Vkr(˜ªòE‰”Ò [«ê
Êó““H½Þ/ÏWé—œ„z?}ž-OŸœÉh«®'Æ<>D1¨± «žB<1B>œT EÙò ¤H[¾œ<C2BE>Ä
*&HEÃK
ò£­VOrDòÆÛÆI°åJA…‚<%Œ¤Î“4Jq|6¸O¬OZ[w¿×€qåÿ ¶ ¥%«ðÈ1’Ñ–/ï8`êj&'I!y% Ï÷F³ºÓ$QnÖÕ-¥'‡—œïµÊèñ˜’“’“$š0¨¼n<C2BC>䮸prRáH±´ <%YàINå3ÏÊw~•¶¹§|²(él¹¶ªºÉå¢U'aÄíÖ†¨(÷jÞŠ¨±®¸Äf•²£mžŠ|s}êFÜÞé#/ô$'Õ}[ÔiøœoTžó)B—­ÂçfÈÙ†HîrI/JQb“hB† ¨Ÿm•ÅC
¥ ÃK
&Iº¼ò:CÜ/<2F>—T X÷-$Rnk;zaOEg<45>:Áð-dS^'çšD*ÎÚ’Ã!%&ÊKD“'©å3¨´û%'Ýê¥6[µAôRyúPT"
OVŠ)9Éj•/ð}^7Æ%'Y¥Úá%¾¶ˆqÑ p§8<-—=kÏzÂGÉžÚ³žsÃËmÖä¤&å.iíçþ"B ª²$ñÿqWúü…#m…ÃÇ”ˆ<75>s[X|AËçÏ8ç봤мM;-ͯWzŽ,7Jü%!AÔÊ¢žàÕh‡—øzˆ8H2”ö¡ÇÏjý7yùqy”¢º†u¦)e9.l¸ }Azþu¬°Xì´°xL]<5D>ß¾Â<11>‡tª
QBq‰UÌ“0ªDb KðòµòÛKdOqÉ™Eèëêl^@Œî´=<1E>G^<5E>ÉIƒlƒÊëêÙÄAuåu^^;Î&lu«éô<>ºêò³ ÇË×Ü- ºß#Ê«HVrR=En½<6E>,^ï&FŽ)YmÄEÅ% ”мò\<5C><¸äü«§l O2 ZƒHÕD©žE¤`‡ à‡~XÖ“øaÙ/kúX<>É$¼ˆf¼AŽÃ„•X<E280A2>#òñGÌÁ2,„cF@…|,#‘¼ )x
Oa3Œ¸ÄÄ<C384>`°° €8ä Óð¹ÏB)ö
¿A:®Å-¨&µ¼„?ÈâÁ3XÍÞáíÐ#
ã1›ùª<>üc$£¿Ç£ØKÒ½ 7®G-V³?aceáù÷g2°â6l†€¡ØLÖR®=ó3Ï!b"sXžj'ÿ3—øz0˜Q†*<†5¤¹šZU¥|(ߌ$c6jñ(°
«àÅëøˆø«Žó¿ðãˆD†`šðYË:ÚçwdË
`B/db¦áïx[‰<>üƒNSù«œ*·êÞ0ôÅ(\<5C>gÑ„OÉI:—Î¥óØ[ ž‹@,ÀoåÙÆØG¢H
FFÓ^t}‚Í€¾˜€IXŒGð6öYEýéögááuLG+v<Ž?á$€˜ˆHjÈÝd;ù„æÑ±ôqºŸ-žÞ×TÀŒ1àœ$!$ƒ '7<>*2‡,$¿%<25>Íd+9Lsh1½™cUl:{]Èr…B<E28098>ðÕ½ªûÔ‡;J:Öwlë8É<38>ü^ ÇÌÇoñ{<<3C>&¬Æ|ˆ±û‰ŠèI $"±QäNr'™K O“ä9ÒD¶­d?9B¾"ß’ä/¨šFS+<2B>£qÔFgÐÛè2úGº…n¡[éQzŠYs°~ÌÅ<l›Î²¥l){™í¢„-W9UNÕê媪To¨Ž«ý5wk¡ÝtúÏí‰í{:б¨ãᎆŽ&¾áˆD̰À…á¨@&c6Æ3X‰ˆ?1(HkÉp2L&ÓÉlr7¹‡<FžQr‰¼F6“ä  f%çÞ´Í¥Ãè0z#­¤ÓéRúm¢Ûé÷LÃô,ˆ…³Dv5+c•l&»<>=Ì$¶‰ífûÙ vš<76>f\ð,Bœ`ÂÕÂXað„pH8¤*UmTTû©§ªïU{Õ_júkjŠ4Ã5eš%šUšm9Va^Æ+çÎ#­l>+`/ãAš*DÒ÷è{HÆXL`Ci6@W<>Eô.ÒDãU³ÕèrŽ vºŒ¾E—ÓtJ
ÉHL¦}}GS‡ Ïp ëÐ&¼F+é{ìeÌVû“¹ô˜Ú 4 o²>ƒmÄGl/ÑOa—àGŒ¤<C592>>ËŠˆž¼. T•ÀÊþˆ—Øtr€ßÚû‰ƒ\GžÇB'ùŽq0zš<>Î>Áop3݉6܆Eø™ LăH%sp¥O°^ª[Ô‰êpò.<2E>$ÔÑPÒ*<ÐLO˜* ÷<>˜úý³°EðÃö7á5º…¾Ä†
ÇU#H¦â.Ü‹é|>nW•`d4„V,Ãæ¬X†y˜<79>R¤`LX/rØPÌ€ \K&“Qx<14>á1<˜<>IÃõ¸ï¡I]L½˜¨
$•8;F` ÿ+åq ɼ ù±+È‚Ž;Q<>X|ˆ=äZÕ ºE5ˆ'Ó:ú!I¾ðú$<24>˜ð>ÃKª^E<>°#ÍïçÿD8z"<0E>b®Á8ˆÁl-R;®£õ|«Æíª½Οåâ‡*>ÃðžÑ¨P¡q M<C2A0>ÈûX…;QIG𙬲ca JáÆ½˜…ÅX ª|•ü<E280A2>ž°¬ÁV§E¶ö´[…
kåïÕ€j<E282AC>j üÉäUZ]è¼üPcˆ1Mëå‡Ü<E280A1>!Æ4!2ĘÆdÐyùÎF“Uvít0YÓ„ž&kZˆ]è¥MôK ªH•ºJ¿G-¨ÆÔZ<C394>N­Ö©™ÎÏß@GéD?}˜ŸŸ^ÍÔ:æå'Ür/) £”¨ýõjÂ(ˆÞK#Ý:??£Ú@/5¹uþºn¿Z?êç%/»ôzlÄ0º„R*÷èA˜Á@GA>¬>(ˆŽ‚@€ÒÞßäï/Ô´* ð kù
“ÃqÂáp8\†oÊÚ í>õ)²³].—áWpˆ1“„d.ìíphï2¬W-ìmòY ׯ_h\¿¾P2Ž,”ÌÃÇ”4iýuþÂþ ÿ†ddddxúöA)Ë+-qëtq™Ú¸ÈLÁË÷ÔGf:<0E>ã¬XƒI*‰0öO'©$˜hßx”X
ro$æýí¯Ð©lhÇ 9sj•§Ûå¯Ðq•pÞ¢Z§\ÏÁnÕ¸T*
µF%PF q Ë™k,¦a âI¨à¥ñ<C2A5>ÚêLŽë ß” m?Ñnpù^ÈvÚ33ûö í—žÚ/5üª×V¿&œØ¼yófPÌç‡4ͪ`D<yÄ]-FÇ «õñÂñxZ5>–ö‰ìKÅH1Þ®!ªrHO^Q¿¥§KXm ½Y Õ<>d¾&€ÎesjuÁt”ÕË[d#ÐËO»SõÁt0†„…ÆFD„‡Ó S¬? ‰5Qc ÕZbUº¸ä bô“/±ÑË¿i¯°Q¹ÖòU6FÈ—Øèåß5éõç<6A>êQÆ¥ý<C2A5>»·^¯eìc,2RÑXn¤Æ{xqð5}à-B9¨ˆjPDͳ»Ù®óò¯šä°:åXr\<5C> Ñyùá&ƒA-9œìP<C3AC>uD™à%©õ<C2A9>ú¦ÞwÁ‡¶]g(;QVV6ôÁ!™ee)çÖ«ÝuÙmÙ®v—òn ÉLqÚ]Á™Á!™}ûÀáp”ùd:é4­ýÔV±‡=Ø«hìg ·Ëo§¦á†<C3A1>TgH°<48>jšO?½°ãdÇ<07>/"fF´Xvû­ôúöçÚ×wèɧzñŶÃIÉ% {ßz±Ãý·añÝ'wulëØObÈâ$Ñò
ɾ¦cT@#vºK—G®Œ¤Ç4ÇBé^ÍÞPºE³%”6kšCéJÍÊPº\³<”.Ñ, ¥s5sCéÚÂèí”0:F;&ŒúkýÃhX¨VcôÒƒ<05>
d§h`%þ®¸ˆ—¹SB§iæih˜†„f„¹ü]AA<41>ncTZà,¢Éк(<28>±%”ÐHÓôg}sí*oèö—ÏBv™«ÝÕfhSÖ~¡<E280BA>‡ÈÓ
û†wûöÁŒéÓ§“é<EFBFBD>BÊH¸­_Zzÿt£Z­±žg“°ˆ‰7$¥§1²ì¬%¬ßö̽®¢^ƒŒ7\ßeqê}Ô@4x<34>XD»õ”ë1ØA( [C­èE&,€ƒ8úõ“çw?$XUk`FOò<4F>{jP¤%2<>eÅŽfefµ€0$ªâMeP9µ”1b2E¨ÕšÈHUt4¢cDÖQ9:&c¸šªblá!¢É¨¦"££"¹DØTÚ˜è()šÅ<C5A1>>!4dI¤@€H/_ë ¤£"5v³^¯õò£Ê.Ózù‰&y“iåR*¯|­—oWºÖË<C396>4É»Kéw€ÖË?u÷—·š6*Ñä'!(VÞ<56>Aaò<61> h™¤•7N<37>(-A$(²WZú¿î•޳¶¼5Ù.—áDYRœƒC2CŒ™<C592>íà¹iÌÔ]ƒÖ¥u-Ôº´w­×ºä¾zµüs×*<2A>)Êä11”yúö1åÝöÔ$Xƒm1Hð·Å ‡_L ‰3ˆ1$>Ѓž:{ ämGäæÏ'e(#©Æt£Áa°Åõ°÷3 Õa´Û{¨z¤ÛIšÝ§Huö'iî·=ùoÄÝñÙ¾¤ŒÐ7²Jrãû§u´%« ë_¾çîçWþ¦¶Qµ¦ŸnÙ±´cv{Ç®7æí&*b6Ù† 0oâÔ1§Ÿ^»qã¶7ÖoY<6F>bÖ³Ñn²l}<7D>õB+ëÊz58b,«YÓ0Àâö2[cH¸3('™‰ HQPd"¦1+™ˆf&?7ËbA``±˜ÇbQËb±Å¢™Åb+‹•×,U¼"Å4‹å,­²‡Å0sƒh1äô`‘˜Ç"AÄŒ8ÆŒàÌ 3"…1±„±œ¡VxrÏ´3ÜÿffÄqÅãfƆ‡RÝ^fl¸OQ<4F>“§8•f…¯YZ¦4¯÷øôÐá><3E>?ÄGËòÑú¦ùº{çút<C3BA>IpÖÊÚ/À¹6'E`+E5¡ëD,x…Cbá LÝÙãf!<21>ñvçòf&€0ùÆ:¾–‘†€`gŽåôB`¡_Ð6Ÿ‡¶5;—ç\C÷c%Ý<>Œî§ûé>ºóh«<ç´Ù´ËÏèfÚŠ-´Çh+Ô´•¶Ò½t/ÝC÷ ˆîF
Ý<EFBFBD>cén,?c7ÓÝ8FwCCwÓÝ0Ð<30>åï<C3A5>”ílú1(ý˜~ ÝBwÑ]¢<1F>Ð<EFBFBD>èG|-ý !=Ó¹Z1)<29>†%¡Ó0Fw!N/}¿áT/ËjfgfyE½Êâ0©,®!¡¯ÅËL ®I/ý¤QtXžÌéC[ Ñù‰1m<31><6D>¶@¤-(¢-(§-¨¦-P£œnG5ÝŽZºKév<I·C¢ÛåUv¦Çp¦G¤ ÒMÏxúÐípÓí(¢Û¡¥[D‡ÅK·4Øs-9ô=ú6Œ°ÐÍôEo¢o)z#}SÑïÒ7 Ý@ßjˆµ GOßèÛ0з` o#…¾ ýGc|ˆ…çÓfXh3Rh3²i3†ÑfŒ¥ÍXB¡¦Í4®a%$GO_Å-`¡ 8¢è¿âi-Ü“-n{Þ§[”Ážu•Ó-f]å\..·S·ýáG<C3A1>nQûƒ9Ý¢ ö{îwºEìwÌwºEìSnuºEì&;Ý¢ ö1c<31>nQû°b§[VìôÒ'^‰ïaIv3sèmèCoƒÞ†"zzüÂ)AÎíñ†ÄD—>ævôJ´Ô®!µ¯‘Ú¤öiR[IjçÚù¤ÖEjo$µRk&µ±¤ÖMj_%gS-q7]ÐÌtRû"©­!µvR@jãI­HÒÝ^jm’ª¨E5æÈŽZ¯è Ê ¢VdS+æQ+š©´¸ÒrSk£ç#GÆÊ:®11Û×î<C397>åœ3˜®Ã<ºKè:ì¥ë …®C9]‡-TþÐD×!ûŒo,]‡µtŽ<>ásºjì¥q X¢`<10>C
<EFBFBD>C6<EFBFBD>ÃX‡y4ÇhÔJ:ǨÓ:S\©$Ò™ô0¹E×ÑuÊ—VjuÇ̇a0[b&A±dX,<2C>¥éˆˆ¬ ö€U'¾;]ŽŽ>H— º´S/i8Gì¯ZrÂÉ+XH&ì$<>¥Ýf­¬Ó`¦/ÀBœ æÑ/ j°'YÖ<59>@yÔ*Ë)ó˳—UÃæW-;D¯@,ÿ4{é «,-æÅwS¼ZÒ`yÍî%¤Á²FT¨«Í7(Ôùv/y¬Á2WV«,w™¯¶ÜlV•>Ç<>5^<5E>¸ƒ,#ìc,ƒÍ‹-ùæqw<>WKVY²Í7Z\>V?yÌ*Kó«‡ÏL4<4C>¶ô2+Am±ÊG¥{I•;Ió°¦D3LÓ_ãÔ$i¬&F­ Ó†h Ú@­¿ÖO«Õªµj¡ óòV·Cþ)4L­üBZ<E280B9>QPl•‘ú~õ…-Å5<C385>BY!-™K
¥µãQ8N”NŒ´y‰ßð1Ê<EFBFBD>BçJŽB¯†<C2AF><E280A0>Ò¦è†zBôH‰.ò—x —»DËÏmVƒ<56>àD˺ç<˜"nÍ6e‡ Δ(ïDG—˜.°c¤‡ GHÏÇx$§lðO¡ô;ùÁÎjò9^<5E>¿š|)+OÉj6<6A>|U0Bîgó=žB/­ð / òWÃ.+OÉjm,D™Qëã=æã%<25>¯d^¼¬<%«u:$(¼<04>Ná DæÕ×Ää×ÇÇ+£ˆ…ScÏçlH(ȯOHP8µØ p6DÔÊi B1 òëcÍ
…DÁ¬PÌ$J¡Œî¢¤tRŸ£,V"1ÒÅ1û8­g9­ù<1E>ãß•Ê\‡ƒ4ðŒ/•Š•Û
*ËmåÒ}·V™¤Úq¢X?ÞÓù´Ì^>n|•¬+*%<25>­2_ë”^Ä]*»ØòëQZP\R_ê®ÌoàP`«È÷4^]”–~A¬Åçb¥]ä`EòÁÒäXW§_Ä<5F>.»¯c¥Ë±ÒåXW»¯VbAYãE%õZäzòJ}ºêýBòJÊ£­žÜCõ@eñ°šæF¯@V@ïðHþ¶\)À«¸ssd—Å(?ùìt™æ°F¯!+:]lË…c欚Y0LÊ÷ý«©©©™9«fæ,yÂ}è¨ù)q8’»"¿f&P(%Ž,”²‡<C2B2>×h
$w¹|JRÖÙ>½¾ÀË×ú:{<7B>,”²äNÆÎå>—ܧÓu|ýguê<yÔÒW‰;ÌD<C38C>‡I±…ÅT
),î|Ä´Ë•ÛC<C39B>Ž™5ÄAjΣ3m‡¾6äs>ûž9«Óêœ<E280B9>Ú7ÒGÍÙ)9'òd9ÎÍØL‡Cù2<C3B9><32>YTŒJLª£úµøNË¡…w@o‡ü”g)zÞøóv €·#PÁ òvÄÛŒ ~!æ§Š~aå§ŽPþ"Æ€áü˜οG$ŒüD!<E28099>hDñïaV0Ñü{ÄÂÌOÁ¢ ˆ~
VXø)ÄAä§`ƒÈ¿C<¬ü;$ Ž;âøIô€<C3B4>ŸDOÄó“è;?‰DèÁO =ù $+؉üRàà'ÐÉüú"™ 'zóoŠþ-ÒЇƒ~
öG_þ ÒÊ¿AÒø×ÈT0 ýø×   ýù׸
éük DÿÙÈä_Á<5F>r0€…\¸øWȃ‰|\Å¿Dò/1Ùü8®†Ç`äðã\~×(Xˆ<~×ÇP âÇp<C387>Ãp5?†" æÇ0¡àH\ÿ@1
yFa(oÃh¯Çu¼ %Æ<>ƒ"~cPÄÛp†ó£(ÅH~e(æGq£c1ŠŽrŒæŸ£×óÏ1×óÏ0þ&` ÿ ¸<E280A2><50>U(ãG0 7òØŒr~7+8ü¦b?Œ[0žÆ4«1<C2AB>ÂtTòC˜<43>‰üjœ‰*þ)faÿ·b2ÿ·a2?ˆÙ¸™Äí˜ÊâÜÂâNç`?ˆ»PÍb.¦ó˜§`-jøÌÇL~wc—ŸÜÊ?Á=
.Àm|?îÅl¾ q;ß<>E¸ƒïÇbÜÉ÷¡sø>܇»ø~Ü<>»ø><€¹|Ä<¾K0ŸïÃRÌç­ø-îæ­x¿á­øîá{±LÁßc߇±<E280A1>ïŰˆ·â,â{ñ(ó½x u|Ç}|þˆûùüIÁ'ð ߃åXÂ÷àI,å{ðòÝx¿å»ñg<Äwã/øß<>g°ŒŒ¿â÷|žÅÃ||žSðy<Âwá<ÊwáoxœïÂ
¾„?ò]X‰?ñ]<5D>ðß…z<Á?Bó<E28093>Ј'ùGhÂÓüC¼Œ?ó<>X¥à+ø ß /žá;±å;±FÁW±ïÄkxŽïÀëxžïÀß |Öâo|þ<>ù¼<>—ø¬ÃJ¾ë!ñíxõüŸxKÁ·ÑÀÿ‰wÐÈ[ð.šx 6àeÞ<C39E>XÅ[° ¯ðl†—·à=¬æ-Ø¢àV¬á-؆×x ÞÇëü|€×ùûhÁßùûø'šùûØŽµ|v(¸oðmøëø6|„õ|v)ø1ÞäÛ°oñm؃·ùVìU°ïò-؇ | öc#ßO<€M| b3ßßCØÊßÃa<05>`Ÿá}¾Ÿã¾GlC ߌ/°<>oÂ1ìàp\Á/±“oÂWø<57>×øˆoÂ7
~<>ùFœÀn¾'±‡oÄwØÃ7àöò ø­|~À>¾§lÇ'ü]tàù»¿Öôÿ<C3B4>šþå/¼¦þo×ô#?QÓ<51>ü¨¦þ‰š~èG5ýÓ£¦8WÓg\PÓ?ù‰šþ‰RÓ?ùQM߯ÔôýçÕôýJM߯ÔôýçÕô}?ªé­JMoUjzë/°¦ø_ªé-¿Öô_kú/®¦ÿÒ?§ÿrkúO}Nÿµ¦ÿZÓ/^Óßù?PÓ!ÿž-ŽêõÚ+øk<C3B8>+{q.EÐw./ºþþºnç%ÿÉåÏ-—<Wÿ.ÒåE× À¯ÛyÉûsË%Ï5 tyÑ5
Òw;¯ÿĹª.Eê"]^t- ÁþÝÎë¿r®ÁÝ=W‚ƒº<>—¯Pü¼rÉ?¨ î"]^tBC»<>—¯Pü¼rÉs í*J—]<5D>ðpC·ó®dž..—¬­á]¤Ë‹î“)¤ÛyW2O—KÞ3M]¤Ë‹€èè°nç\É<]\.Yo¢»H—=11ÝÎË·y~^¹äÝ>¦tyÑ ES·óòmžŸW.Y[Å.ÒåE<0F>ÕÙí¼þ+çjíþ¹&$˜»<CB9C>`¼‚±—KÞGºH—=‰‰b·ó®dž..—¼<E28094>$v./º½{Ûº<C39B>{c/.A—"ôî"]^ô(8<>önçåÛ<?¯_Šàì"]^t3ú÷ïÕí¼€+Y—KÞ3ûw./z,²²º<E28099>p%kâârÉ{fVéò¢ÈËsv;/ ù
Æ^\.ùÉ&¯tyÑPX˜Ñí¼€¾W0öârÉ»}aéò¢'bäÈ<C3A4>ÝÎË·y~^¹ä}ddéò¢÷FiiA·óÂà¿Ö±\ŠPÚEº¼è©˜0¡°Ûy¹W0öârÉûÈ„.ÒåEÏÀÿ‡>
endstream
endobj
62 0 obj
<</Type /FontDescriptor
/FontName /BAAAAA+ArialMT
/Flags 12
/Ascent 905.27344
/Descent 211.91406
/StemV 87.890625
/CapHeight 716.30859
/ItalicAngle 0
/FontBBox [-664.55078 -324.70703 2000 1005.85938]
/FontFile2 61 0 R>>
endobj
63 0 obj
<</Type /Font
/FontDescriptor 62 0 R
/BaseFont /BAAAAA+ArialMT
/Subtype /CIDFontType2
/CIDToGIDMap /Identity
/CIDSystemInfo <</Registry (Adobe)
/Ordering (Identity)
/Supplement 0>>
/W [175 [1000 0 0 0 333.00781] 186 [666.99219] 232 [556.15234]]
/DW 750>>
endobj
64 0 obj
<</Filter /FlateDecode
/Length 254>> stream
xœ]<5D>MjÃ0…÷:Å,“E<E2809C>ì¶4 #p”
¼èusY»Z²¼ðí<E280B9>B3ð1óf<1E>ŠîÜ9€~D¯{L0Zg".~<7E>aÀÉ:RÕ`¬N7*]Ï**ºs¿- çÎ<C3A7>ž4 ýÄÉ.)n°k<C2B0>pOè{4­`wýžÐ~ ágt á Ž„ŠWÞÔŒ@‹ìÐtɦípý߯×êÂÕÕ<C395>ö 4Få&$ cŒqh¤”tæßüñª­bÞn%‡†UO5ÏtzàÐÔ¬WjËìùXè嘉IVîÞ.ä9‰»}½Æˆ.•¸ŠålÖ:¼'|Ȫ\¿i]wÑ
endstream
endobj
6 0 obj
<</Type /Font
/Subtype /Type0
/BaseFont /BAAAAA+ArialMT
/Encoding /Identity-H
/DescendantFonts [63 0 R]
/ToUnicode 64 0 R>>
endobj
65 0 obj
<</Length1 5040
/Filter /FlateDecode
/Length 3289>> stream
xœ½W pTUþÎ}¯’ð’¢B|¯}$$¤;ÿ„ðÝÒü„$@7XÐMH"‘¿È‚#<18>¡<><C2A1><EFBFBD><19>¢£ã¸Ëº¼4<C2BC>zDF™evÔjvYf™A<E284A2>ajÄYgGpV$o¹·3(SÔµµµ·«ÏwÏùÎ=çÜsow¿ÈD$Äf×F~·äz)@Ÿˆ5´ÅW"sÚÀ×°¶]{¶eòx@
ò½KW.këlßá\<5C>€c˲åë—fÖ·ç¬@kscÛº4ÇO¸~Àæ¦xã&üË*€,âÙ7Ò‡Ô `hs[û:×ixü€gùІ8ZÑ
à
€ô¶øº•î°ë@nÚCñ¶&ªq$*äúÊkÚíf44Mè«VþáŸ6žú]œoÝ÷‚#•G ÆUpb/ÒÀà<C380>×ïœoA,¡?$<24>ÌÙLµhÂ2<Œåˆc5¤T,»‰ç¿Ã À‰^ÊO{c½1åóëC°¥rk¶<6B>ö‡}ëúVßÿ䣳ʯR¶[è/MZ(ð½üݽ±/÷(Ϥû¤ÝÊ&ÉGiüLXâf¦í)¤ ¨aý¹ƒãVKn¯påúÕk`@ƒÚGºOjÓ@ûg ½èóúÄJ/àxÚ¦v3šîpZ4ÏÙ5]BºCž.IlpšÓ5<C393><30>ö±·ª6§¸xÖgå3o”Ïò\+Ÿé¹QŽÉå7Ê=Ÿ•ß(QZíÍ–íÍö:ÖZ׿p„¿8lI¿þ2_å¹y¯ÜiN§¨8ÝåÝËp»öëC%=]`fF†èrVzúõ˜­(ûstwef
<1C>•%ðî>¼Çãᇈ<E280A1>ÙÙsúÐÑæFŽô4îìûÀþ}ï€s½¯Ûÿ*Ý  ¿Yïär`6`$lÀ{<18><>(ćT Ý8ƒ÷1 p
Õ8@÷#<23>Y<18>6š„¡ôKŒAÏãb=Và ªð=xÑ<78>£öˆ18 ×<>†<LB °?°Oáüíߣ `á¬ýï ÛÁ0ù¡+ÉÏÚí'Q<>Y؇£x<C2A3>î±+p7F¡A,C3Úð¾ƒ}xgqކð£“P…ù؆=x='§ÙÍv+æaZцÝ8…3¸Œ?R6½A§í!v·mƒAÇ8L|'žÃ‹ø!ß Nã4.⪣ù’.<2E>²{¤}ݶ‘…!0ÆhCÅ&ìÃOñ6ÞÆû¤R!<21>¡¹´:(A§Ùé.Ùå˜e?Áo
0 “0a ¶ažÂóx¯á5¼…Ƈ”F:«dì3)[2ä9޵öcöAû„ý Hp ãF3ÐŽuØ­Ø<C2AD>Ý87ñ+¼<>Oqƒ\ä¡<C3A4>¤R7] <>X6+bìçÒ
)!”!wÊŽ'{_é½h/³Ÿ²ß¶ÿ òQˆ±q<18>ɘƒ:Dшf<(îÇp]èÁœÅy\À ôÒ½4†ÆÒZ@<40>ÐKtŠÞ¡Ïc¦²"VÄždûÙ~v½ÃÎJƒ¥<©P!-öJû¥Wå=ŽFÇ*Ç÷<>][zz{×ö>Ú{ÜÛOÛoŸ„ ^Š3<C5A0>†é˜<C3A9>9¨Ç<,Å#¢× ~—p‡p‡q=8†ãxgð[|†kø7(Mô!‡T*¥ñTN4…¦R<C2A6>¦S˜fS=Í¥ù¡8µÒÚHß¡Nê¤çèEz‰º©½Mgè<1C>£t…®ÐçÌÁ\,‡é¬€,ÌÂl>Ïâ¬<C3A2>ÖÆv°ìv<>u3KT!UIq).™ÒIé¬tNz_ú/y°Ü.Kþ‰üŽ|^¾(ÿ§|Íáq”:æ:æ9sœã<C593>k<EFBFBD>/;¹t½æ:<3A>$Îâpì¶ïå¬g{ÙØÈîÇ÷ð3€ýœMÃyl Cô2üø:1
£ðü ŒÀ¤#O Ã10†äÕïójê½yCrÊxÏÝîêŸíÉÊTúe¤§¹]N‡,1/¤WÅ4³ fÊú´i~®ëqÍ,ˆÍ¸fVÝîcj1á¦ÝîiÄ5sé_y)Oã'y´r”û}ZH×ÌwƒºfÑ9]3wõ¨f~"æ3Å|—˜+A=êõú}šÊij&Å´<C385>Yµ¶9Šý>ê1ø¯ƒß‡À@lbj|Csމ©Ü#dÖƒ!s<>œ”Š7š5s"¡`®×õûLšÚ /1¡O1³Šûóuš)å×Fô¨×ïkáõc[¿F½qe`IŒÏâDL)5YŒçÈ.6êAsà#å|¥þeÚþ5ÒdùUñ¦D•iĶMK©1®Å·OóûÂuÚ“mŠFLÚM!jOí¢IqK¬U3Óô)zs¢5×LÔFƒ<E28099>Á!=Œš¨‰$ƒ„â÷õälœèÍðûzü•þJ޽9SxùÛ)û/Of¿Sdø}áÚ[}!žIŸn1SkIt“å<E2809C>ã¢i ãr½|DÉï µ˜iSc Ï¿<>LG¾G×WaRLÿäÊíxŸÅ™ï¹
>åÇyëF˜ï›[æ [H«‰t}7j½ÉB0¯i<>/ò[(äס%hRÌo¡Èg¡p¸×oa¸O«2¥ü*~nZBKLoLhUZs¼Ñ”óÖFô¦D4 ™¨´h&ê#^ÓˆæÞš6E£üŠyYÄIDµ*­µ/B«ˆ<C2AB>ˆnø-ø|aÍ”
j"s"fG0×4Ñ\¯W ™'k"æÉ`®7õ[ðߪTÓBZrúj.ñYð÷[¤¢ÔEÌŽ\Óˆ&)M÷š'‰Üÿ¤tð×£Ï`A<04>òCªC÷ærƒîÕ½Ñ\o4è·Pê ×ýåx-ŒøŸ;<òë.óY):<êÿ¨Ã£¿I‡Ç|£<0E>½s‡Çù,Œåÿÿ×á ·w¸ØÂ°b#+íõ”UO“ÏÑþz2*º<42>š<EFBFBD>!A×<41> nÚå¢]Nú´r6ãÏãÿÁ$N2º¹È$&#¼ÁÜ<C381>p<EFBFBD>27ö3þæ³ÇðãèÆNìd Ì<><C38C>Ì V0`cXÁXÁÜ<C381>±˜1Ô0 EÄÙŒ<C399>g<EFBFBD>-´RÆ0™É(Zàf¶šÊÜIrGé#šIµ‡³Ô7WeªÇ)L3±*<2A>Hnž­ž W <41>B>adjÊ{šr^SvjÊcšr¶¡
-’ŒÌåW5ÊÔer<65>2¡F9FQ…$c@¡òz¡b*?.T-TÖ*þBå
ýXÈïZµòyµò³je_µ²©Zy¤ZYZ­x«•%C”¡C”Ü!ŠE<1B>díÎÚ•…46vïRvïR,ºzhD@­´èO‡ËÔbßÕ¢­ÉzŸjÑ·“õÔÊ»éqÉ•:PÄ8>Š ÀõT*p
þo<EFBFBD>"Õ¢5ÉŠçUV%+.ªÇéA”²5YvQµh\²~Z™Fe}1G"èæèOVìQ-žô½«VfÓ0”P>TŠ2Aë(î÷õ¡3Y_ Zäè®÷©vE”T{·XŒŽ¨×µêµK¦¤zµÄrSRýmÅ 0ª¿,Rÿ­¢Z=U_ ¾UQ}#°\=ê þ6xœGÇ«TJÏê<>{Ô—Vú…2oo½€§Š,™Ž¨[ë Ô5%ÍKª«Ëx† õÁÀrµÕVJ,zÆÈRK|cÕºÀ1uN`µ:;•izPÀ´ÀQ±<51>?JežZÈS'U¼«N êx¾<©ŽJ%Y"¶7¢b†Z\bÉòuxýõ¾2áWç.s-vÍu<C38D>u<EFBFBD>v•º
\ù®{]y®îþn<C3BE>;ÓÝÏ<C39D>îv»<76>nÙÍÜp°ìŒbþgs€ÓÃÁ)s)¹‡qÉRÿE¹ªÁ¿MÚqÏÚÉ9“ûWd<57>¯
ÞAÄúdñ<EFBFBD>Fž¹7\1ÿ./jŽä;/6GóúºL…‚=t‰C4ÒC^ºªvo0Í 3j"]
µXt9Ô7 N^¢K!Óˆ£Ñ°9OÄA]
{PÏ!éacPÄã ˆ<C2A0>n[SnºÌÝ‚¸ÛE„[€]nïr·®-E¡`WQpq”`pÙâ(á.£T奄‚]<5D>€ðJ7©TÔ]šnŠ@y"PYY(ØUQÆ]ºF…j#]e#øŠö¥èÚ]+è…_Ñ%)ú…ýB0½c<C2BD>ÿ£iÊ7ó;´ðÙÇ;ù“WL5ÅôPÌܶöæÃeÇMëzüÙ¾G²Ø†fŽñ&óY½)h>®µ®…<C2AE>w ;9½Pv¡3Téê4šÉ…ÆBñÀvhóŽU¡Ûrm½•kÕŽ;ÛÁƒ­â¹6‡î@‡8½™ç
ñ\!žk³±Yäâ{ µÔMYs‡ÑþðÃÖ¬Y„ÿ¨Ûý
endstream
endobj
66 0 obj
<</Type /FontDescriptor
/FontName /AAAAAA+Times-Roman
/Flags 6
/Ascent 750
/Descent 250
/StemV 108.886719
/CapHeight 661.62109
/ItalicAngle 0
/FontBBox [-203.125 -428.22266 1700.1953 1271.48438]
/FontFile2 65 0 R>>
endobj
67 0 obj
<</Type /Font
/FontDescriptor 66 0 R
/BaseFont /AAAAAA+Times-Roman
/Subtype /CIDFontType2
/CIDToGIDMap /Identity
/CIDSystemInfo <</Registry (Adobe)
/Ordering (Identity)
/Supplement 0>>
/W [0 [722.16797]]
/DW 250>>
endobj
68 0 obj
<</Filter /FlateDecode
/Length 228>> stream
xœ]<5D>MjÄ0 …÷>…3Ážtk %CÀþPwàØJjhdã8Ü¾Ø SèBIÇ{}Ó
ð÷<1C>ÁS Ÿq<C5B8>[v<>ص\9¦ÖÝbã½¾™}-¸hš"“€àÖw8=û8â™ñ·ì1šátïÍ™q³¥ô<C2A5> RÁ”<02>ãýM¯vAà »h<C2BB>TBÙ/÷Þü)>÷„еùúëÆE<C386>³¥Br†A1$ÿï~Pãä¾lnê'RˆN4õ±¯\ýïaÊm9#•B3R-ÂGN)¦JÕú@co9
endstream
endobj
7 0 obj
<</Type /Font
/Subtype /Type0
/BaseFont /AAAAAA+Times-Roman
/Encoding /Identity-H
/DescendantFonts [67 0 R]
/ToUnicode 68 0 R>>
endobj
xref
0 69
0000000000 65535 f
0000000015 00000 n
0000012891 00000 n
0000000321 00000 n
0000030905 00000 n
0000000358 00000 n
0000040311 00000 n
0000044585 00000 n
0000000434 00000 n
0000000593 00000 n
0000000784 00000 n
0000000977 00000 n
0000001163 00000 n
0000001355 00000 n
0000001544 00000 n
0000001709 00000 n
0000001893 00000 n
0000002081 00000 n
0000002269 00000 n
0000002459 00000 n
0000002650 00000 n
0000002838 00000 n
0000003027 00000 n
0000003218 00000 n
0000003410 00000 n
0000003598 00000 n
0000003789 00000 n
0000003983 00000 n
0000004174 00000 n
0000004363 00000 n
0000004554 00000 n
0000004748 00000 n
0000004936 00000 n
0000005124 00000 n
0000005320 00000 n
0000005512 00000 n
0000005708 00000 n
0000005892 00000 n
0000006073 00000 n
0000006253 00000 n
0000006433 00000 n
0000006624 00000 n
0000006814 00000 n
0000007008 00000 n
0000007203 00000 n
0000007395 00000 n
0000007584 00000 n
0000007777 00000 n
0000007966 00000 n
0000008152 00000 n
0000008342 00000 n
0000008509 00000 n
0000008677 00000 n
0000008844 00000 n
0000009010 00000 n
0000013479 00000 n
0000013535 00000 n
0000013654 00000 n
0000029698 00000 n
0000029929 00000 n
0000030543 00000 n
0000031048 00000 n
0000039479 00000 n
0000039715 00000 n
0000039986 00000 n
0000040450 00000 n
0000043825 00000 n
0000044056 00000 n
0000044286 00000 n
trailer
<</Size 69
/Root 56 0 R
/Info 1 0 R>>
startxref
44728
%%EOF

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -2,45 +2,104 @@
# Pre-push hook to generate PDFs before pushing
# This ensures PDFs are always up to date when code is pushed
set -e
# Don't exit on error immediately - we want to report issues but not break the push
set +e
REPO_ROOT="$(git rev-parse --show-toplevel)"
DOCKER_DIR="$REPO_ROOT/docker"
PDFS_DIR="$REPO_ROOT/docker/resume/pdfs"
GENERATE_PDFS_SCRIPT="$DOCKER_DIR/generate-pdfs.js"
# Check if we're in a git repository
if [ -z "$REPO_ROOT" ]; then
echo "Warning: Not in a git repository, skipping PDF generation"
exit 0
fi
# Check if docker directory exists
if [ ! -d "$DOCKER_DIR" ]; then
echo "Warning: docker directory not found, skipping PDF generation"
exit 0
fi
# Check if generate-pdfs.js exists
if [ ! -f "$GENERATE_PDFS_SCRIPT" ]; then
echo "Warning: generate-pdfs.js not found, skipping PDF generation"
exit 0
fi
# Check if PDFs already exist and are up to date
if [ -d "$PDFS_DIR" ]; then
PDF_COUNT=$(find "$PDFS_DIR" -name "*.pdf" -type f 2>/dev/null | wc -l | tr -d ' ')
if [ "$PDF_COUNT" -gt 0 ]; then
echo "PDFs already exist ($PDF_COUNT files), skipping generation"
echo "To regenerate PDFs, run: cd docker && PUPPETEER_EXECUTABLE_PATH=\"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome\" npm run generate-pdfs"
exit 0
fi
fi
echo "Running pre-push hook: Generating PDFs..."
# Navigate to docker directory
cd "$DOCKER_DIR"
cd "$DOCKER_DIR" || {
echo "Error: Could not navigate to docker directory"
exit 1
}
# Check if node_modules exists, install if not
if [ ! -d "node_modules" ]; then
echo "Installing npm dependencies..."
npm install
if ! PUPPETEER_SKIP_DOWNLOAD=true npm install; then
echo "Error: Failed to install npm dependencies"
exit 1
fi
fi
# Check if npm is available
if ! command -v npm &> /dev/null; then
echo "Error: npm is not installed or not in PATH"
exit 1
fi
# Try to find Chrome executable
CHROME_PATH=""
if [ -f "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" ]; then
CHROME_PATH="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
elif command -v google-chrome &> /dev/null; then
CHROME_PATH=$(which google-chrome)
elif command -v chromium &> /dev/null; then
CHROME_PATH=$(which chromium)
fi
if [ -z "$CHROME_PATH" ]; then
echo "Warning: Chrome not found, skipping PDF generation"
echo "PDFs will be generated during Docker build instead"
exit 0
fi
# Generate PDFs
echo "Generating PDFs..."
if npm run generate-pdfs; then
echo "Generating PDFs using Chrome at: $CHROME_PATH"
if PUPPETEER_EXECUTABLE_PATH="$CHROME_PATH" npm run generate-pdfs; then
echo "✓ PDFs generated successfully"
# Stage the PDFs directory if it exists and has changes
cd "$REPO_ROOT"
cd "$REPO_ROOT" || exit 1
if [ -d "$PDFS_DIR" ]; then
# Check if there are any PDF files
if [ -n "$(find "$PDFS_DIR" -name "*.pdf" -type f 2>/dev/null)" ]; then
# Add PDFs to staging
git add "$PDFS_DIR"/*.pdf 2>/dev/null || true
PDF_COUNT=$(find "$PDFS_DIR" -name "*.pdf" -type f 2>/dev/null | wc -l | tr -d ' ')
if [ "$PDF_COUNT" -gt 0 ]; then
# Add all PDFs to staging
git add "$PDFS_DIR" 2>/dev/null
# Check if there are unstaged changes
# Check if there are changes staged
if ! git diff --cached --quiet --exit-code "$PDFS_DIR" 2>/dev/null; then
echo "PDFs updated and staged"
echo "PDFs updated and staged for commit"
fi
fi
fi
else
echo "✗ PDF generation failed"
exit 1
echo "Warning: PDF generation failed, continuing with push"
echo "PDFs will be generated during Docker build instead"
fi
exit 0

View File

@ -8,6 +8,12 @@ SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
GIT_HOOKS_DIR="$SCRIPT_DIR/.git/hooks"
SOURCE_HOOKS_DIR="$SCRIPT_DIR/git-hooks"
# Check if we're in a git repository
if [ ! -d "$SCRIPT_DIR/.git" ]; then
echo "Error: Not in a git repository. Please run this from the repository root."
exit 1
fi
echo "Setting up git hooks..."
# Create .git/hooks directory if it doesn't exist
@ -23,7 +29,17 @@ else
exit 1
fi
# Verify installation
if [ -x "$GIT_HOOKS_DIR/pre-push" ]; then
echo "✓ Hook is executable and ready"
else
echo "✗ Hook installation verification failed"
exit 1
fi
echo ""
echo "Git hooks installed successfully!"
echo "PDFs will be automatically generated before each push."
echo ""
echo "To test the hook, try: git push --dry-run"