diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS deleted file mode 100644 index 349c952..0000000 --- a/.github/CODEOWNERS +++ /dev/null @@ -1,2 +0,0 @@ -# Default code owner for \ -benmont #replace for \ diff --git a/.github/ISSUE_TEMPLATE/feature_request.yaml b/.github/ISSUE_TEMPLATE/feature_request.yaml index cc8804a..0be8393 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yaml +++ b/.github/ISSUE_TEMPLATE/feature_request.yaml @@ -1,6 +1,6 @@ name: Feature request description: Tell us about a new feature -title: "Feature request" +title: "" labels: "Enhancement" body: diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 4df88c3..232a71f 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -6,18 +6,19 @@ List any GitHub discussion links related to this PR # Checklists -These checklists ensure that the contributor's PR meets our build server requirements. +Completing these checklists ensures that your PR meets our build server requirements on the first attempt. If you're unable to complete any of the following checks, please submit your PR as a draft to the best of your ability. We will provide any clarification you may need after posting it. - [ ] I do not require assistance from NI to complete any of the following checks. -- [ ] I pushed the feature branch associated with this GitHub issue from my fork. -- [ ] I built a VI Package using the [Powershell build tool](https://github.com/ni/labview-icon-editor#powershell-build-tool). +- [ ] The changes in this PR are based on the appropriate NI-repo feature branch +- [ ] I am submitting the changes in this PR to the appropriate NI-repo feature branch +- [ ] I built a VI Package using the [Powershell build tool](https://github.com/ni/labview-icon-editor/wiki/automation#pwsh). - [ ] I installed the VI Package produced by the Powershell build tool and tested my change. -- [ ] I tested my changes by [installing the VI package](https://github.com/ni/labview-icon-editor#installing-VI-package). +- [ ] I tested my changes after [installing the VI package](https://github.com/ni/labview-icon-editor/wiki/test#localtesting). - [ ] NI has my contributor license agreement. # Summary of Changes -Provide a concise overview of what is being added, modified, or fixed in this pull request. +Provide a concise overview of what is being added, modified, or fixed in this pull request. Make an emphasis on whas was not captured on the GitHub issue, or discussion associated with this PR. # Reason for Change @@ -38,7 +39,3 @@ This section describes the automated and manual tests performed for this bugfix/ ## Manual Tests Describe any manual tests conducted. - -## Unit Tests - -List the names of the new unit test files. diff --git a/.github/PULL_REQUEST_TEMPLATE/bug_fix.md b/.github/PULL_REQUEST_TEMPLATE/bug_fix.md new file mode 100644 index 0000000..6674732 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE/bug_fix.md @@ -0,0 +1,42 @@ +# Bug Fix PR Template + +## Summary + +Provide a concise description of the bug and the fix. + +## Issue Link + +Link to the issue being addressed. + +## Root Cause Analysis + +Detail the root cause of the bug and how it was identified. + +## Changes + +Outline the changes made to fix the bug. + +## Impact + +Describe any implications this fix may have on other parts of the application. + +## Testing Strategy + +Explain how the fix has been tested to ensure the bug is resolved without introducing new issues. + +## Regression Risk + +Assess the risk of regression caused by this fix and steps taken to mitigate it. + +## Checklist + +- [ ] The fix has been locally tested + +- [ ] New unit tests have been added to prevent future regressions + +- [ ] The documentation has been updated if necessary + +## Additional Notes + +Any further information needed to understand the fix or its impact. + diff --git a/.github/scripts/fetch_store_org_data_conditional.py b/.github/scripts/fetch_store_org_data_conditional.py deleted file mode 100644 index fd197b6..0000000 --- a/.github/scripts/fetch_store_org_data_conditional.py +++ /dev/null @@ -1,413 +0,0 @@ -import requests -import mysql.connector -import os -from datetime import datetime -import sys - -# Environment variables -GITHUB_TOKEN = os.getenv("GITHUB_TOKEN") -ORG_NAME = os.getenv("ORG_NAME") -REQUIRED_TOPIC = os.getenv("REQUIRED_TOPIC") -MYSQL_HOST = os.getenv("MYSQL_HOST") -MYSQL_USER = os.getenv("MYSQL_USER") -MYSQL_PASSWORD = os.getenv("MYSQL_PASSWORD") -MYSQL_DATABASE = os.getenv("MYSQL_DATABASE") -DEBUG = (os.getenv("DEBUG", "true").lower() == "true") - -HEADERS = { - "Authorization": f"Bearer {GITHUB_TOKEN}", - "Accept": "application/vnd.github.v3.star+json" -} - -def debug_print(msg): - if DEBUG: - print(f"[DEBUG] {msg}") - -def validate_env(): - required_vars = { - "GITHUB_TOKEN": GITHUB_TOKEN, - "ORG_NAME": ORG_NAME, - "REQUIRED_TOPIC": REQUIRED_TOPIC, - "MYSQL_HOST": MYSQL_HOST, - "MYSQL_USER": MYSQL_USER, - "MYSQL_PASSWORD": MYSQL_PASSWORD, - "MYSQL_DATABASE": MYSQL_DATABASE - } - missing = [k for k,v in required_vars.items() if not v] - if missing: - print(f"Error: Missing required environment variables: {', '.join(missing)}") - sys.exit(1) - -def connect_to_mysql(): - try: - conn = mysql.connector.connect( - host=MYSQL_HOST, - user=MYSQL_USER, - password=MYSQL_PASSWORD, - database=MYSQL_DATABASE - ) - return conn - except mysql.connector.Error as err: - print(f"Error connecting to MySQL: {err}") - sys.exit(1) - -def create_tables(cursor): - cursor.execute(""" - CREATE TABLE IF NOT EXISTS traffic_views ( - id INT AUTO_INCREMENT PRIMARY KEY, - repo_owner VARCHAR(255), - repo_name VARCHAR(255), - timestamp DATETIME, - count INT, - uniques INT, - forked_from VARCHAR(255), - UNIQUE KEY (repo_owner, repo_name, timestamp) - ) - """) - cursor.execute(""" - CREATE TABLE IF NOT EXISTS traffic_clones ( - id INT AUTO_INCREMENT PRIMARY KEY, - repo_owner VARCHAR(255), - repo_name VARCHAR(255), - timestamp DATETIME, - count INT, - uniques INT, - forked_from VARCHAR(255), - UNIQUE KEY (repo_owner, repo_name, timestamp) - ) - """) - cursor.execute(""" - CREATE TABLE IF NOT EXISTS stargazers ( - id INT AUTO_INCREMENT PRIMARY KEY, - repo_owner VARCHAR(255), - repo_name VARCHAR(255), - user_login VARCHAR(255), - user_id INT, - node_id VARCHAR(255), - starred_url TEXT, - type VARCHAR(255), - site_admin BOOLEAN, - starred_at DATETIME, - forked_from VARCHAR(255), - organization VARCHAR(255), - UNIQUE KEY (repo_owner, repo_name, node_id) - ) - """) - cursor.execute(""" - CREATE TABLE IF NOT EXISTS pull_requests ( - id INT AUTO_INCREMENT PRIMARY KEY, - repo_owner VARCHAR(255), - repo_name VARCHAR(255), - pr_number INT, - title TEXT, - state VARCHAR(50), - created_at DATETIME, - updated_at DATETIME, - closed_at DATETIME, - merged_at DATETIME, - user_login VARCHAR(255), - user_id INT, - html_url TEXT, - forked_from VARCHAR(255), - organization VARCHAR(255), - UNIQUE KEY (repo_owner, repo_name, pr_number) - ) - """) - cursor.execute(""" - CREATE TABLE IF NOT EXISTS contributors ( - id INT AUTO_INCREMENT PRIMARY KEY, - repo_owner VARCHAR(255), - repo_name VARCHAR(255), - user_login VARCHAR(255), - user_id INT, - contributions INT, - forked_from VARCHAR(255), - timestamp DATETIME, - organization VARCHAR(255), - UNIQUE KEY (repo_owner, repo_name, user_login, contributions) - ) - """) - -def convert_to_mysql_datetime(iso_timestamp): - if not iso_timestamp: - return None - try: - return datetime.strptime(iso_timestamp.replace("Z", ""), "%Y-%m-%dT%H:%M:%S") - except ValueError as e: - print(f"Error parsing timestamp '{iso_timestamp}': {e}") - return None - -def handle_403(response): - rate_limit_remaining = response.headers.get('X-RateLimit-Remaining') - try: - if rate_limit_remaining is not None and int(rate_limit_remaining) == 0: - print("Rate limit exceeded. Please wait for your limit to reset or use a token with higher limits.") - return - except ValueError: - pass - try: - data = response.json() - message = data.get("message", "") - if "access" in message.lower() or "permission" in message.lower() or "resource not accessible" in message.lower(): - print("Permission issue encountered. Check if your token has the necessary scopes/permissions.") - else: - print(f"Error 403 encountered: {message}") - except ValueError: - print("A 403 error occurred, but the response could not be parsed. Check your token or permissions.") - -def fetch_data(url): - debug_print(f"Fetching data from: {url}") - try: - response = requests.get(url, headers=HEADERS, timeout=10) - except requests.RequestException as e: - print(f"Network error fetching data from {url}: {e}") - return None - - debug_print(f"Response status: {response.status_code}") - if response.status_code == 200: - return response.json() - elif response.status_code == 403: - handle_403(response) - else: - print(f"Error fetching data from {url}: {response.text}") - return None - -def fetch_all_pages(url): - results = [] - next_url = url - while next_url: - debug_print(f"Fetching page: {next_url}") - try: - response = requests.get(next_url, headers=HEADERS, timeout=10) - except requests.RequestException as e: - print(f"Network error on pagination fetch: {e}") - break - - debug_print(f"Status: {response.status_code}") - if response.status_code == 200: - data = response.json() - if isinstance(data, list): - if not data: - break - results.extend(data) - elif isinstance(data, dict) and "items" in data: - results.extend(data["items"]) - else: - if isinstance(data, dict) and data: - break - else: - break - - links = response.headers.get('Link', '') - next_link = None - if links: - for part in links.split(','): - if 'rel="next"' in part: - next_link = part.split(';')[0].strip('<> ') - break - next_url = next_link - elif response.status_code == 403: - handle_403(response) - break - else: - print(f"Error fetching data (pagination) from {next_url}: {response.text}") - break - return results - -user_org_cache = {} - -def get_user_organization(user_login, cache): - if not user_login: - return None - if user_login in cache: - return cache[user_login] - - orgs_url = f"https://api.github.com/users/{user_login}/orgs" - orgs = fetch_data(orgs_url) - if isinstance(orgs, list) and len(orgs) > 0: - user_org = orgs[0].get("login") - else: - user_org = None - - cache[user_login] = user_org - return user_org - -def store_traffic_views(data, owner, repo, forked_from, cursor): - views = data.get("views", []) if data else [] - for view in views: - timestamp = convert_to_mysql_datetime(view["timestamp"]) - if timestamp: - cursor.execute(""" - INSERT INTO traffic_views (repo_owner, repo_name, timestamp, count, uniques, forked_from) - VALUES (%s, %s, %s, %s, %s, %s) - ON DUPLICATE KEY UPDATE count=count - """, (owner, repo, timestamp, view["count"], view["uniques"], forked_from)) - -def store_traffic_clones(data, owner, repo, forked_from, cursor): - clones = data.get("clones", []) if data else [] - for clone in clones: - timestamp = convert_to_mysql_datetime(clone["timestamp"]) - if timestamp: - cursor.execute(""" - INSERT INTO traffic_clones (repo_owner, repo_name, timestamp, count, uniques, forked_from) - VALUES (%s, %s, %s, %s, %s, %s) - ON DUPLICATE KEY UPDATE count=count - """, (owner, repo, timestamp, clone["count"], clone["uniques"], forked_from)) - -def store_stargazers(stargazers_data, owner, repo, forked_from, cursor): - if not isinstance(stargazers_data, list): - return - for s in stargazers_data: - starred_at = convert_to_mysql_datetime(s.get("starred_at")) - user = s.get("user", {}) - user_login = user.get("login") - user_id = user.get("id") - node_id = user.get("node_id") - starred_url = user.get("starred_url") - user_type = user.get("type") - site_admin = user.get("site_admin", False) - - organization = get_user_organization(user_login, user_org_cache) - - # Update organization on duplicates too - cursor.execute(""" - INSERT INTO stargazers ( - repo_owner, repo_name, user_login, user_id, node_id, starred_url, - type, site_admin, starred_at, forked_from, organization - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) - ON DUPLICATE KEY UPDATE node_id=node_id, organization=VALUES(organization) - """, ( - owner, repo, user_login, user_id, node_id, starred_url, - user_type, site_admin, starred_at, forked_from, organization - )) - -def store_pull_requests(pr_data, owner, repo, forked_from, cursor): - if not isinstance(pr_data, list): - return - for pr in pr_data: - pr_number = pr.get("number") - title = pr.get("title") - state = pr.get("state") - created_at = convert_to_mysql_datetime(pr.get("created_at")) - updated_at = convert_to_mysql_datetime(pr.get("updated_at")) - closed_at = convert_to_mysql_datetime(pr.get("closed_at")) - merged_at = convert_to_mysql_datetime(pr.get("merged_at")) - user_login = pr.get("user", {}).get("login") - user_id = pr.get("user", {}).get("id") - html_url = pr.get("html_url") - organization = get_user_organization(user_login, user_org_cache) - - cursor.execute(""" - INSERT INTO pull_requests ( - repo_owner, repo_name, pr_number, title, state, created_at, updated_at, - closed_at, merged_at, user_login, user_id, html_url, forked_from, organization - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) - ON DUPLICATE KEY UPDATE - title=VALUES(title), - state=VALUES(state), - user_login=VALUES(user_login), - user_id=VALUES(user_id), - html_url=VALUES(html_url), - forked_from=VALUES(forked_from), - organization=VALUES(organization), - updated_at = CASE WHEN updated_at IS NULL AND VALUES(updated_at) IS NOT NULL THEN VALUES(updated_at) ELSE updated_at END, - closed_at = CASE WHEN closed_at IS NULL AND VALUES(closed_at) IS NOT NULL THEN VALUES(closed_at) ELSE closed_at END, - merged_at = CASE WHEN merged_at IS NULL AND VALUES(merged_at) IS NOT NULL THEN VALUES(merged_at) ELSE merged_at END - """, ( - owner, repo, pr_number, title, state, created_at, updated_at, - closed_at, merged_at, user_login, user_id, html_url, forked_from, organization - )) - -def store_contributors(contrib_data, owner, repo, forked_from, cursor): - if not isinstance(contrib_data, list): - return - now = datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S') - for contrib in contrib_data: - user_login = contrib.get("login") - user_id = contrib.get("id") - contributions = contrib.get("contributions") - organization = get_user_organization(user_login, user_org_cache) - - # Update organization on duplicates - cursor.execute(""" - INSERT INTO contributors (repo_owner, repo_name, user_login, user_id, contributions, forked_from, timestamp, organization) - VALUES (%s, %s, %s, %s, %s, %s, %s, %s) - ON DUPLICATE KEY UPDATE user_id=user_id, organization=VALUES(organization) - """, (owner, repo, user_login, user_id, contributions, forked_from, now, organization)) - -def process_repository(owner, repo, cursor, conn, forked_from=None): - base_url = f"https://api.github.com/repos/{owner}/{repo}" - - # Traffic views - views_data = fetch_data(f"{base_url}/traffic/views") - store_traffic_views(views_data, owner, repo, forked_from, cursor) - - # Traffic clones - clones_data = fetch_data(f"{base_url}/traffic/clones") - store_traffic_clones(clones_data, owner, repo, forked_from, cursor) - - # Stargazers (paginated) - stargazers = fetch_all_pages(f"{base_url}/stargazers?per_page=100") - store_stargazers(stargazers, owner, repo, forked_from, cursor) - - # Pull Requests (paginated) - pull_requests = fetch_all_pages(f"{base_url}/pulls?state=all&per_page=100") - store_pull_requests(pull_requests, owner, repo, forked_from, cursor) - - # Contributors (paginated) - contributors = fetch_all_pages(f"{base_url}/contributors?per_page=100&anon=1") - store_contributors(contributors, owner, repo, forked_from, cursor) - - # Commit after processing this repository - conn.commit() - - # Forks (paginated) - forks = fetch_all_pages(f"{base_url}/forks?per_page=100") - if isinstance(forks, list): - for fork in forks: - fork_owner = fork["owner"]["login"] - fork_name = fork["name"] - debug_print(f"Processing forked repository: {fork_owner}/{fork_name}") - process_repository(fork_owner, fork_name, cursor, conn, forked_from=f"{owner}/{repo}") - -def has_required_topic(owner, repo, required_topic): - url = f"https://api.github.com/repos/{owner}/{repo}/topics" - response = fetch_data(url) - if response and "names" in response: - return required_topic in response["names"] - return False - -def check_token_validity(): - resp = fetch_data("https://api.github.com/user") - if not resp or not resp.get("login"): - print("Invalid or insufficiently scoped GitHub token. Exiting.") - sys.exit(1) - -def main(): - validate_env() - check_token_validity() - - repos = fetch_all_pages(f"https://api.github.com/orgs/{ORG_NAME}/repos?per_page=100") - if not repos: - print(f"No repositories found for organization: {ORG_NAME}") - return - - conn = connect_to_mysql() - cursor = conn.cursor() - - create_tables(cursor) - - for repo in repos: - owner = repo["owner"]["login"] - repo_name = repo["name"] - if has_required_topic(owner, repo_name, REQUIRED_TOPIC): - print(f"Processing repository: {owner}/{repo_name}") - process_repository(owner, repo_name, cursor, conn) - - # Final commit - conn.commit() - cursor.close() - conn.close() - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/.github/scripts/powershell/AddTokenToLabVIEW.ps1 b/.github/scripts/powershell/AddTokenToLabVIEW.ps1 deleted file mode 100644 index f89ca13..0000000 --- a/.github/scripts/powershell/AddTokenToLabVIEW.ps1 +++ /dev/null @@ -1,50 +0,0 @@ -# Example: .\AddTokenToLabVIEW.ps1 -MinimumSupportedLVVersion "2021" -SupportedBitness "64" -RelativePath "C:\labview-icon-editor" -param( - [Parameter(Mandatory=$true)] - [string]$MinimumSupportedLVVersion, - [Parameter(Mandatory=$true)] - [string]$SupportedBitness, - [Parameter(Mandatory=$true)] - [string]$RelativePath -) - -Set-StrictMode -Version Latest -$ErrorActionPreference = 'Stop' -$DebugPreference = 'Continue' - -Write-Debug "AddTokenToLabVIEW.ps1: Starting" -Write-Debug "Parameters:" -Write-Debug " MinimumSupportedLVVersion: $MinimumSupportedLVVersion" -Write-Debug " SupportedBitness: $SupportedBitness" -Write-Debug " RelativePath: $RelativePath" -Write-Debug "PowerShell Version: $($PSVersionTable.PSVersion)" - -# Construct the command as a list of arguments to avoid using Invoke-Expression -$command = 'g-cli' -$args = @( - '--lv-ver', $MinimumSupportedLVVersion, - '--arch', $SupportedBitness, - '-v', "$RelativePath\Tooling\deployment\Create_LV_INI_Token.vi", - '--', 'LabVIEW', 'Localhost.LibraryPaths', $RelativePath -) - -Write-Host "Executing the following command:" -Write-Host "$command $($args -join ' ')" - -try { - # Execute the command directly - & $command $args - - if ($LASTEXITCODE -eq 0) { - Write-Host "Create localhost.library path from ini file" - } else { - Write-Error "Command failed with exit code: $LASTEXITCODE" - exit 1 - } -} catch { - Write-Error "An unexpected error occurred while executing g-cli." - Write-Error "Error Details: $($_.Exception.Message)" - exit 1 -} - -Write-Debug "AddTokenToLabVIEW.ps1: Completed Successfully." diff --git a/.github/scripts/powershell/Set_Development_Mode.ps1 b/.github/scripts/powershell/Set_Development_Mode.ps1 deleted file mode 100644 index 8f527e5..0000000 --- a/.github/scripts/powershell/Set_Development_Mode.ps1 +++ /dev/null @@ -1,69 +0,0 @@ -#.\Set_Development_Mode.ps1 -RelativePath "C:\labview-icon-editor" -param( - [Parameter(Mandatory=$true)] - [string]$RelativePath -) - -Set-StrictMode -Version Latest -$ErrorActionPreference = 'Stop' -$DebugPreference = 'Continue' - -# Helper function to execute scripts and stop on error -function Execute-Script { - param( - [Parameter(Mandatory=$true)] - [scriptblock]$CommandBlock - ) - - Write-Host "Executing: $($CommandBlock.ToString())" - try { - & $CommandBlock - } - catch { - Write-Error "Error occurred while executing: $($CommandBlock.ToString()). Exiting." - exit 1 - } -} - -try { - # Remove existing .lvlibp files - Execute-Script { - Get-ChildItem -Path "$RelativePath\resource\plugins" -Filter '*.lvlibp' | Remove-Item -Force - } - - # Add token to LabVIEW (32-bit) - Execute-Script { - .\AddTokenToLabVIEW.ps1 -MinimumSupportedLVVersion 2021 -SupportedBitness 32 -RelativePath "$RelativePath" - } - - # Prepare LabVIEW source (32-bit) - Execute-Script { - .\Prepare_LabVIEW_source.ps1 -MinimumSupportedLVVersion 2021 -SupportedBitness 32 -RelativePath "$RelativePath" -LabVIEW_Project 'lv_icon_editor' -Build_Spec 'Editor Packed Library' - } - - # Close LabVIEW (32-bit) - Execute-Script { - .\Close_LabVIEW.ps1 -MinimumSupportedLVVersion 2021 -SupportedBitness 32 - } - - # Add token to LabVIEW (64-bit) - Execute-Script { - .\AddTokenToLabVIEW.ps1 -MinimumSupportedLVVersion 2021 -SupportedBitness 64 -RelativePath "$RelativePath" - } - - # Prepare LabVIEW source (64-bit) - Execute-Script { - .\Prepare_LabVIEW_source.ps1 -MinimumSupportedLVVersion 2021 -SupportedBitness 64 -RelativePath "$RelativePath" -LabVIEW_Project 'lv_icon_editor' -Build_Spec 'Editor Packed Library' - } - - # Close LabVIEW (64-bit) - Execute-Script { - .\Close_LabVIEW.ps1 -MinimumSupportedLVVersion 2021 -SupportedBitness 64 - } - -} catch { - Write-Error "An unexpected error occurred during script execution: $($_.Exception.Message)" - exit 1 -} - -Write-Host "All scripts executed successfully." diff --git a/.github/workflows/Run unit tests and build.yml b/.github/workflows/Run unit tests and build.yml new file mode 100644 index 0000000..982ce1d --- /dev/null +++ b/.github/workflows/Run unit tests and build.yml @@ -0,0 +1,85 @@ +# .github/workflows/build-and-test.yml + +name: Build and Test LabVIEW Project + +on: + push: + branches: + - develop + +jobs: + build-and-test: + name: Build and Test the Icon Editor + runs-on: [self-hosted, iconeditor] + + env: + build_id: ${{ github.run_number }} + build_revision: ${{ steps.get_revision.outputs.build_revision }} + build_version: 1.0.${{ env.build_id }}.${{ env.build_revision }} + RelativePath: ${{ vars.AgentWorkingFolder }} + RelativePathScripts: ${{ vars.AgentWorkingFolder }}/pipeline/scripts + + steps: + - name: Checkout code + uses: actions/checkout@v1 + + - name: Get Build Revision + id: get_revision + shell: bash + run: | + # Path to store the build revision counter + COUNTER_FILE="${GITHUB_WORKSPACE}/.github/buildCounter.txt" + echo "Counter file path: $COUNTER_FILE" + + # Initialize the counter file if it doesn't exist + if [ ! -f "$COUNTER_FILE" ]; then + echo "Counter file not found. Initializing to 1." + echo "1" > "$COUNTER_FILE" + fi + + # Read the current value + build_revision=$(cat "$COUNTER_FILE") + echo "Current build_revision: $build_revision" + + # Increment the counter + new_build_revision=$((build_revision + 1)) + echo "New build_revision: $new_build_revision" + + # Save the new value back to the file + echo "$new_build_revision" > "$COUNTER_FILE" + + # Set the output variable + echo "::set-output name=build_revision::$build_revision" + + # For debugging + ls -la "${GITHUB_WORKSPACE}/.github" + cat "$COUNTER_FILE" + + - name: Set agent into development mode + shell: pwsh + working-directory: ${{ env.RelativePathScripts }} + run: | + .\Set_Development_Mode.ps1 -RelativePath "${{ env.RelativePath }}" + + - name: Test and Build the Icon Editor + shell: pwsh + working-directory: ${{ env.RelativePathScripts }} + env: + build_id: ${{ env.build_id }} + build_revision: ${{ env.build_revision }} + build_version: ${{ env.build_version }} + run: | + .\Build.ps1 -RelativePath "${{ env.RelativePath }}" -AbsolutePathScripts "${{ env.RelativePathScripts }}" + + - name: Restore agent from development mode + shell: pwsh + working-directory: ${{ env.RelativePathScripts }} + run: | + .\RevertDevelopmentMode.ps1 -RelativePath "${{ env.RelativePath }}" + + - name: Commit and Push Build Counter + if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop' + uses: stefanzweifel/git-auto-commit-action@v4 + with: + commit_message: 'Increment build revision to ${{ env.build_revision }}' + file_pattern: '.github/buildCounter.txt' \ No newline at end of file diff --git a/.github/workflows/automerge.yml b/.github/workflows/automerge.yml deleted file mode 100644 index 11cb773..0000000 --- a/.github/workflows/automerge.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: automerge -on: - pull_request: - types: - - labeled - - synchronize - - opened - - edited - - ready_for_review - - reopened - - unlocked - pull_request_review: - types: - - submitted - check_suite: - types: - - completed - status: {} -jobs: - automerge: - runs-on: ubuntu-latest - permissions: - contents: write - pull-requests: write - steps: - - id: automerge - name: automerge - uses: "pascalgn/automerge-action@v0.16.4" - env: - GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" - MERGE_LABELS: "automerge,!work in progress" - MERGE_REMOVE_LABELS: "automerge" - MERGE_METHOD: "squash" - MERGE_COMMIT_MESSAGE: "pull-request-description" - MERGE_FORKS: "false" - MERGE_RETRIES: "6" - MERGE_RETRY_SLEEP: "10000" - MERGE_REQUIRED_APPROVALS: "0" - UPDATE_LABELS: "" - UPDATE_METHOD: "rebase" - MAX_PR_COUNT: "25" \ No newline at end of file diff --git a/.github/workflows/store_org_data.yml b/.github/workflows/store_org_data.yml deleted file mode 100644 index 4237c61..0000000 --- a/.github/workflows/store_org_data.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: Fetch and Store GitHub Data for Organization - -on: - schedule: - - cron: "0 0 * * *" # Run daily at midnight UTC - workflow_dispatch: # Allows manual triggering of the workflow - -jobs: - fetch-and-store: - runs-on: self-hosted - - steps: - # 1. Checkout the repository - - name: Checkout Code - uses: actions/checkout@v3 - - # 2. Set up Python - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: '3.9' - - # 3. Install dependencies - - name: Install Python Dependencies - run: | - python -m pip install --upgrade pip - pip install requests mysql-connector-python - - # 4. Run the Python script to fetch and store data - - name: Fetch and Store Data in MySQL - env: - GITHUB_TOKEN: ${{ secrets.PAT_GITHUB }} # Use the PAT instead of the default GITHUB_TOKEN - ORG_NAME: ni - REQUIRED_TOPIC: ni-open-source - MYSQL_HOST: 127.0.0.1 - MYSQL_USER: root - MYSQL_PASSWORD: ${{ secrets.MYSQL_PASSWORD }} - MYSQL_DATABASE: ni_open_source_github_data - run: python .github/scripts/fetch_store_org_data_conditional.py diff --git a/.github/workflows/test-and-build-icon-editor.yml b/.github/workflows/test-and-build-icon-editor.yml deleted file mode 100644 index 705aed2..0000000 --- a/.github/workflows/test-and-build-icon-editor.yml +++ /dev/null @@ -1,98 +0,0 @@ -name: Build LabVIEW Project - -on: - pull_request_target: - types: [opened, synchronize, reopened] - workflow_dispatch: - -jobs: - build: - name: Build LabVIEW - runs-on: windows-latest - env: - RELATIVE_PATH: ${{ github.workspace }} - SCRIPTS_PATH: ${{ github.workspace }}\.github\scripts\powershell - - steps: - - name: Checkout Repository - uses: actions/checkout@v3 - - - name: Clean Up Old .lvlibp Files - shell: pwsh - run: | - $PluginsPath = "${{ env.RELATIVE_PATH }}\resource\plugins" - Write-Host "Cleaning up .lvlibp files in $PluginsPath..." - if (Test-Path -Path $PluginsPath) { - Get-ChildItem -Path $PluginsPath -Filter '*.lvlibp' | Remove-Item -Force -ErrorAction SilentlyContinue - Write-Host "Cleanup complete." - } else { - Write-Host "Plugins folder not found. Skipping cleanup." - } - - - name: Set agent into development mode - shell: pwsh - working-directory: ${{ env.SCRIPTS_PATH }} - run: | - .\Set_Development_Mode.ps1 -RelativePath "${{ env.RELATIVE_PATH }}" - - - name: Apply Dependencies 2021 (32-bit) - shell: pwsh - working-directory: ${{ env.SCRIPTS_PATH }} - run: | - .\Applyvipc.ps1 -MinimumSupportedLVVersion 2021 -SupportedBitness 32 -RelativePath "${{ env.RELATIVE_PATH }}" -VIPCPath "Tooling\deployment\Dependencies.vipc" -VIP_LVVersion 2021 - - - name: Run Unit Tests 2021 (32-bit) - shell: pwsh - working-directory: ${{ env.SCRIPTS_PATH }} - run: | - .\RunUnitTests.ps1 -MinimumSupportedLVVersion 2021 -SupportedBitness 32 -RelativePath "${{ env.RELATIVE_PATH }}" - - - name: Build LV Library 2021 (32-bit) - shell: pwsh - working-directory: ${{ env.SCRIPTS_PATH }} - run: | - .\Build_lvlibp.ps1 -MinimumSupportedLVVersion 2021 -SupportedBitness 32 -RelativePath "${{ env.RELATIVE_PATH }}" - - - name: Rename File After Build 2021 (32-bit) - shell: pwsh - working-directory: ${{ env.SCRIPTS_PATH }} - run: | - $CurrentFile = "${{ env.RELATIVE_PATH }}\resource\plugins\lv_icon.lvlibp" - .\Rename-File.ps1 -CurrentFilename $CurrentFile -NewFilename "lv_icon_x86.lvlibp" - - - name: Apply Dependencies 2021 (64-bit) - shell: pwsh - working-directory: ${{ env.SCRIPTS_PATH }} - run: | - .\Applyvipc.ps1 -MinimumSupportedLVVersion 2021 -SupportedBitness 64 -RelativePath "${{ env.RELATIVE_PATH }}" -VIPCPath "Tooling\deployment\Dependencies.vipc" -VIP_LVVersion 2021 - - - name: Run Unit Tests 2021 (64-bit) - shell: pwsh - working-directory: ${{ env.SCRIPTS_PATH }} - run: | - .\RunUnitTests.ps1 -MinimumSupportedLVVersion 2021 -SupportedBitness 64 -RelativePath "${{ env.RELATIVE_PATH }}" - - - name: Build LV Library 2021 (64-bit) - shell: pwsh - working-directory: ${{ env.SCRIPTS_PATH }} - run: | - .\Build_lvlibp.ps1 -MinimumSupportedLVVersion 2021 -SupportedBitness 64 -RelativePath "${{ env.RELATIVE_PATH }}" - - - name: Rename File After Build 2021 (64-bit) - shell: pwsh - working-directory: ${{ env.SCRIPTS_PATH }} - run: | - $CurrentFile = "${{ env.RELATIVE_PATH }}\resource\plugins\lv_icon.lvlibp" - .\Rename-File.ps1 -CurrentFilename $CurrentFile -NewFilename "lv_icon_x64.lvlibp" - - - name: Build VI Package 2021 (64-bit) - shell: pwsh - working-directory: ${{ env.SCRIPTS_PATH }} - run: | - .\build_vip.ps1 -SupportedBitness 64 -RelativePath "${{ env.RELATIVE_PATH }}" -VIPBPath "Tooling\deployment\NI Icon editor.vipb" -VIP_LVVersion 2021 -MinimumSupportedLVVersion 2021 - - - name: Close LabVIEW 2021 (64-bit) - shell: pwsh - working-directory: ${{ env.SCRIPTS_PATH }} - run: | - .\Close_LabVIEW.ps1 -MinimumSupportedLVVersion 2021 -SupportedBitness 64 diff --git a/.github/workflows/trigger-azure-pipeline.yml b/.github/workflows/trigger-azure-pipeline.yml new file mode 100644 index 0000000..b8be5de --- /dev/null +++ b/.github/workflows/trigger-azure-pipeline.yml @@ -0,0 +1,56 @@ +name: PR Triggered Tests + +on: + pull_request_target: + types: [opened, synchronize, reopened] + +jobs: + trigger-azure-pipeline: + runs-on: ubuntu-latest + if: contains(github.event.pull_request.base.ref, 'develop') + steps: + - name: Check if authorized to run tests + id: check + run: | + # Add any conditions if necessary. For now, always allow. + echo "ok=true" >> $GITHUB_OUTPUT + + - name: Trigger Azure DevOps Pipeline + if: steps.check.outputs.ok == 'true' + run: | + PAT="${{ secrets.AZURE_DEVOPS_PAT }}" + ORG="sergiovelderrain" + PROJECT="sergiovelderrain" + PIPELINE_ID="1" + API_VERSION="6.0-preview.1" + + # Ensure PAT is not empty + if [ -z "$PAT" ]; then + echo "AZURE_DEVOPS_PAT is not set or empty!" + exit 1 + fi + + # Base64 encode credentials + AUTH=$(echo -n ":$PAT" | base64) + + # Use the PR's head ref for the pipeline branch + PR_HEAD_REF="${{ github.event.pull_request.head.ref }}" + JSON_BODY='{ + "resources": { + "repositories": { + "self": { + "refName": "refs/heads/'"${PR_HEAD_REF}"'" + } + } + } + }' + + echo "Triggering Azure DevOps pipeline with the following JSON:" + echo "$JSON_BODY" + + # Use --http1.1 to avoid HTTP/2 related issues, remove -s for verbosity + curl --http1.1 -v -X POST \ + -H "Authorization: Basic $AUTH" \ + -H "Content-Type: application/json" \ + -d "$JSON_BODY" \ + "https://dev.azure.com/$ORG/$PROJECT/_apis/pipelines/$PIPELINE_ID/runs?api-version=$API_VERSION" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7ef8bda..6ebf29a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,72 +1,101 @@ +1. The Open Source LabVIEW Icon Editor +1. Our Contributing Philosophy +1. How to contribute +1. Collaborate with the community and NI! +1. Creating a discussion for a new feature +1. Enhancements +1. Reporting issues + + + # The Open Source LabVIEW Icon Editor Just recently, the LabVIEW Icon Editor has been made open source to encourage collaboration between NI and the LabVIEW Community. Every new build of LabVIEW will grab the icon editor that has been pushed into the `main` branch from this repo. -The direction of the LabVIEW Icon Editor and which new features are added, and which are left out, is decided by the core team, which includes NI staff and LabVIEW community volunteers (sometimes referred to as a “cathedral” style of development). +The direction of the LabVIEW Icon Editor and which new features are added, and which are left out, is decided by the steering committee, which includes NI staff and LabVIEW community volunteers (sometimes referred to as a “cathedral” style of development). That being said, the Icon Editor is great because of the LabVIEW users who use it, share their code with the community, and discuss ways to make LabVIEW even better. Some of the most important and undervalued work in open source is from non-code contributions, and that is where we can use the most help from you. + + # Our Contributing Philosophy -This repo is managed via [git](https://git-scm.com), with the canonical upstream repository hosted on [GitHub](https://github.com/ni/labview-icon-editor) and it follows a pull-request model for development. If you wish to contribute, you will need to create a GitHub account, fork this project, push a branch with your changes to your project, and then submit a pull request. +This repo is managed via [git](https://git-scm.com), with the canonical upstream repository hosted on [GitHub](https://github.com/ni/labview-icon-editor) and it follows a pull-request model for development. -# How can I help? +Feature requests are selected by NI in a joint effort with a group of members of the LabVIEW community called a "steering committee". A steering committee is a group of trusted individuals selected by the software community lead based on their background and contribution history to the NI ecosystem. -The things we need the most help for the library and its community are: +Steering committees are non-NI employees with triage roles to the repo that can vote on community driven features being part of the next LabVIEW release. -**🐛 Bug reports:** We simply can’t catch them all. Check [existing issues](https://github.com/ni/labview-icon-editor/issues/new/choose) and discussion first, then [create a new issue](https://github.com/ni/labview-icon-editor/issues/new/choose) to tell us what’s up. + -**💬 Answering questions and provide feedback**: New features begin by creating a discussion on our [board](https://github.com/ni/labview-icon-editor/discussions/new?category=ideas), you can provide feedback to the new features that are planned to be added to the icon editor. This is an [example](https://github.com/ni/labview-icon-editor/discussions/55) of a discussion for a new feature request. +# Collaborate with the community and NI! +Ready to level up your game?. Collaborate with people from different backgrounds and proficiency levels. -🎬 **Work on ["Good first issue"**](https://github.com/ni/labview-icon-editor/labels/good%20first%20issue) items: You can right now assign yourself action items to finish or test a feature. Check out the [issues](https://github.com/ni/labview-icon-editor/issues) section and look for any issue labeled as [Good first issue](https://github.com/ni/labview-icon-editor/labels/good%20first%20issue). +See below the different ways to collaborate -**✏️ Edit our [Docs](https://labview-icon-editor.dev/docs/introduction/)**: Make changes in the [labview-icon-editor-docs repo](https://github.com/ni/labview-icon-editor-docs), or click the "edit this page” button that lives on every doc site. +| Contribution type | Effort level(1-10) | +|-------------------|--------------| +| Comment on GitHub issues | 1 | +| Comment on GitHub discussions | 1 | +| Create a GitHub discussion | 2 | +| Report an issue | 2 | +| Develop a feature | 8 to 10 | +| Solve a bug | 5 to 10 | -All interactions should be done with care following our [Code of Conduct](https://github.com/ni/labview-icon-editor/blob/main/CODE_OF_CONDUCT.md). + + +## Comment on GitHub issues + +Go to the [issues](https://github.com/ni/labview-icon-editor/issues) section of the repo and voice your opinion on issues that other people are having. Did you find a workaround to any of the GitHub issues? We want to hear about it! + + + +## Comment on GitHub discussions + +[GitHub discussions](https://github.com/ni/labview-icon-editor/discussions) are raw ideas in the process of gathering feedback from the community before converting them into a GitHub issue. Go to the GitHub discussions and voice your opinion on ideas that will eventually be a part of the next shipping version of the Icon Editor. + + + +## Create a GitHub discussion + +Want things done differently? or have an idea on a feature that is not ready yet to be considered as a GitHub issue? + +Create a [GitHub discussion](https://github.com/ni/labview-icon-editor/discussions/new/choose) so that other member of the LabVIEW community can weigh in on your dicsussion. Discussions are usually initial stage for GitHub issues. + + -## Enhancements +## Report an issue -If you have an idea or suggestion for an enhancement to the LabVIEW Icon Editor library, please use the [New Features](https://github.com/ni/labview-icon-editor/discussions/categories/new-features) discussion section. **please make sure to start a discussion about your changes.** The direction of the LabVIEW Icon Editor and which new features are added are discussed in our Discord Server and in [this GitHub discussions section](https://github.com/ni/labview-icon-editor/discussions/categories/new-features), and in the end, they are decided by the core team. +Found an issue? [raise a new GitHub issue](https://github.com/ni/labview-icon-editor/issues/new/choose) and select "Bug Report" + + + +## Develop features and bugfixes with NI and the LabVIEW community + + You can do this by becoming a contributor. + +Contributions for bug resolution and feature development have certain guidelines and processes not covered on this document. More information can be found [here](https://github.com/ni/labview-icon-editor/wiki). + +* ## Feature development + +Try developing a new feature by going into the GitHub issues labeled as [Workflow: Open to contribution](https://github.com/ni/labview-icon-editor/issues?q=is%3Aissue%20label%3A%22Workflow%3A%20Open%20to%20contribution%22). Go to the GitHub issue you want to work on, and let us know via a comment. + + + +* ## Solve a bug + +Go to the GitHub issues marked as bugs that are open for contribution [here](https://github.com/ni/labview-icon-editor/issues?q=is%3Aissue%20label%3A%22Workflow%3A%20Open%20to%20contribution%22%20type%3ABug). + + + +# Enhancements + +If you have an idea or suggestion for an enhancement to the LabVIEW Icon Editor library, please use the [New Features](https://github.com/ni/labview-icon-editor/discussions/categories/new-features) discussion section. **please make sure to start a discussion about your changes.** Talking to us first via the discussions section about the enhancement you want to build will be the most likely way to get your pull request into the library (see Our Contributing Philosophy above). We would hate to see you write code you’re proud of, just to learn that we’ve already been working on the same thing, or that we feel doesn’t fit into the core library. Once your idea has been selected for the next release of LabVIEW, a branch will be created that you can submit your pull request to. -## Creating a discussion for a new feature - -The first step to start an enhancement to the icon editor is to create a discussion on the [New Features](https://github.com/ni/labview-icon-editor/discussions/categories/new-features) discussion board. You must describe the problem that made you want to have this enhancement. - -### 💫 Pull Requests - -When submitting a PR, please follow these guidelines to ensure clarity and ease -of review: - -1. **Title**: Start with a short, descriptive title that summarizes the change. -2. **Description**: - - **Purpose**: Explain why you are making this change. - - **Changes Made**: Describe what changes you made and why. - - **Related Issues**: Reference any related issues using `#issue_number`. - - **Testing**: Outline how you tested your changes and any specific areas of - the code to focus on during review. - -Please remember to sign off your commits (e.g., by using git commit -s if you -are using the command line client). This amends your git commit message with a -line of the form Signed-off-by: Name Lastname . -Please include all authors of any given commit into the commit message with a -Signed-off-by line. This indicates that you have read and signed the Developer -Certificate of Origin (see below) and are able to legally submit your code to -this repository. - -### Reporting Issues - -When creating an issue, please provide a detailed description to help us -understand the problem. Here are some tips: - -1. **Title**: Use a clear, concise title that summarizes the issue. -2. **Description**: - - **What Happened**: Describe the issue you encountered. - - **Expected Behavior**: Explain what you expected to happen. - - **Steps to Reproduce**: List the steps necessary to reproduce the issue. - - **Environment**: Include relevant details about your environment (e.g., - operating system, LabVIEW version, etc.). - - **Screenshots**: If applicable, add screenshots to clarify the issue. + + +All interactions should be done with care following our [Code of Conduct](https://github.com/ni/labview-icon-editor/blob/main/CODE_OF_CONDUCT.md). diff --git a/README.md b/README.md index bf6564e..372dacd 100644 --- a/README.md +++ b/README.md @@ -5,60 +5,46 @@ You can use this code as a starting point for creating a custom icon editor. Ref ## Compatible LabVIEW Versions -LabVIEW source is saved in 21.0 (__LabVIEW 2021__) format. Either LabVIEW 2021 or LabVIEW 2024 can be used to do development work. +LabVIEW source is saved in (__LabVIEW 2021 SP1__) format. Either LabVIEW 2021 or LabVIEW 2024 can be used to do development work, as long as the source remains saved on LabVIEW 2021 -To build using the automated build process, ensure you have LabVIEW 2021 *both 32 and 64 bits* installed, latest VIPM, and apply the dependencies located on *Tooling\deployment\Dependencies.vipc* to both LabVIEW versions. +## Editing Guide (Manual) -## Editing Guide - -Because the icon editor is part of the LabVIEW development environment, you need to make changes to installed files before editing this project. There is an manual process, and an automated process made following it for ease of use. - -### Automated process - -Before following this process, create a backup of the following files and folder: - - \\\resource\\plugins\\lv_icon.lvlibp - - \\\vi.lib\\LabVIEW Icon API\\* - -After cloning the repo into a development location, and applying the dependencies located on *Tooling\deployment\Dependencies.vipc* to LabVIEW 2021 32 and 64 bits, follow this process to use the automation layer. - -1. Open Powershell in *Admin* mode and navigate to *.pipeline\scripts* from your github repo. -2. Modify the following command to point to your github repo and run it: *.\DevelopmentMode.ps1 -RelativePath "C:\labview-icon-editor"* -3. Open lv_icon_editor.lvproj in LabVIEW. -4. The top-level VI is in the Project Explorer at __My Computer » resource/plugins » lv_icon.lvlib » lv_icon.vi__. - -### Manual process +Because the icon editor is part of the LabVIEW development environment, you need to make changes to installed files before editing this project. Complete the following steps to edit this project: 1. Clone this repo into a development location (e.g., C:\dev). 2. Run __Tooling\Prepare LV to Use Icon Editor Source.vi__. This will perform the following steps, which you can alternatively perform manually: - * Delete \\\resource\\plugins\\lv_icon.lvlipb + * Delete \\\resource\\plugins\\lv_icon.lvlibp * Delete \\\vi.lib\\LabVIEW Icon API * Set LocalHost.LibraryPaths in your labview.ini file to the location of this project. For example:* - * LocalHost.LibraryPaths="C:\\dev\\labview-icon-editor" + * LocalHost.LibraryPaths="C:\\labview-icon-editor" 3. Open lv_icon_editor.lvproj in LabVIEW. 4. The top-level VI is in the Project Explorer at __My Computer » resource/plugins » lv_icon.lvlib » lv_icon.vi__. -## Distribution Guide +### Editing Guide (Powershell) -Complete the following steps to distribute your custom icon editor to another machine. +This process accomplishes the same as the manual process, but it only uses a powershell command to set labview 32 and 64 bits into editing mode. -### Automated process +Before following this process, create a backup of the following files and folder: + - \\\resource\\plugins\\lv_icon.lvlibp + - \\\vi.lib\\LabVIEW Icon API\\* -This automated build process will follow these steps: +Clone the repo into C:\, and apply the dependencies located on *Tooling\deployment\Dependencies.vipc* to LabVIEW 2021 32 and 64 bits, follow this process to use the automation layer. -1. Apply the dependencies -2. Run the unit test, -build the icon editor packed project library +1. Open Powershell in *Admin* mode and navigate to *.pipeline\scripts* from your github repo. +2. Modify the following command to point to your github repo and run it: -1. Open powershell in *Admin* mode and navigate to *.pipeline\scripts* from your github repo. -2. Modify the following command to point to your github repo and run it: *.\build.ps1 -RelativePath "C:\labview-icon-editor"* -3. A VI package named *ni_icon_editor-x.x.x.x* will be built on *builds\VI Package*. -4. You can now install this VI package on any LabVIEW version after 2020. + ```bach +.\DevelopmentMode.ps1 -RelativePath "C:\labview-icon-editor" + ``` + +3. Open lv_icon_editor.lvproj in LabVIEW. +4. The top-level VI is in the Project Explorer at __My Computer » resource/plugins » lv_icon.lvlib » lv_icon.vi__. -*NOTE: The VI package makes no backup of your current lv_icon.lvlibp because the VI Package itself contains a zip file with all combinations of lv_icon.lvlibp for all LabVIEW versions and bitnesses, which gets deployed to your LabVIEW application files on uninstall. This ensures that a user doesnt get locked out of his icon editor and having to copy it from another LabVIEW installation if somehow he deletes the backup he did manually.* +## Distribution Guide (Manual) -### Manual process +Complete the following steps to distribute your custom icon editor to another machine. First, build the __Editor Packed Library__ build specification in the project to create __lv_icon.lvlibp__. @@ -68,19 +54,31 @@ Then, on the machine where you want to install your custom icon editor: 3. Copy the packed library and support files that you developed with this project into the \ directory: - \\\resource\\plugins\\lv_icon.lvlibp - \\\vi.lib\\LabVIEW Icon API\\* + +## Use Powershell to create VI Package + +Process below will set the system into editing mode, run unit tests, build the packed library, and the VI package. + +Step 1: Apply dependencies (This process takes approx 40 mins) -## CI using an Azure DevOps pipeline +- Open VIPM, switch to 2021 32-bit and apply \Tooling\deployment\dependencies.vipc +- Switch VIPM to LabVIEW 2021 64-bit and apply the VIPC again -An Azure Devops pipeline is used as an additional check to approve pull requests from *feature* to *development* branches. This pipeline runs the unit tests, builds the packed project libraries for both 32 and 64 bit LabVIEW, and builds the VI Package. +Step 2: Disable security warnings for "Run When Opened" VIs -## CI using github actions +In order to disable the warning, enable the following option on both 32 and 64-bit LV2021: -An example of a github action that can manually trigger a CI/CD workflow is located at "C:\labview-icon-editor\.github\workflows\Build VI packages.yml" +Tools/Options/Security/Run VI without warning -### Pull Request Templates +Step 3: Open latest pwsh (Powershell), and navigate to -- [Bug Fix](https://github.com/ni/labview-icon-editor-test/compare/develop...feature-branch?expand=1&template=bug_fix.md) -- [Feature Request](https://github.com/my-org/my-repo/compare/main...feature-branch?expand=1&template=feature_request.md) -- [Documentation Update](https://github.com/my-org/my-repo/compare/main...feature-branch?expand=1&template=documentation_update.md) +\labview-icon-editor\pipeline\scripts\ +Step 4: Copy the following command + ```bach +.\Build.ps1 -RelativePath "C:\labview-icon-editor" -AbsolutePathScripts "C:\labview-icon-editor\pipeline\scripts" + ``` + +A VI package named *ni_icon_editor-x.x.x.x* will be built on *builds\VI Package*. +You can now install this VI package on any LabVIEW version after 2020. \ No newline at end of file diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index ce102ab..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,19 +0,0 @@ - - -# Security - -NI views the security of our software products as an important part of our commitment to our users. This includes source code repositories managed through the [NI](https://github.com/ni) GitHub organization. - -## Reporting Security Issues - -We encourage you to report security vulnerabilities to us privately so we can follow the principle of [Coordinated Vulnerability Disclosure (CVD)](https://vuls.cert.org/confluence/display/CVD). This allows us time to thoroughly investigate security issues and publicly disclose them when appropriate. - -**Please do not report security vulnerabilities through public GitHub issues.** - -Instead, please report them by sending an email to [security@ni.com](mailto:security@ni.com) with sufficient details about the type of issue, the impact of the issue, and how to reproduce the issue. You may use the [NI PGP key](https://www.ni.com/en/support/security/pgp.html) to encrypt any sensitive communications you send to us. When you notify us of a potential security issue, our remediation process includes acknowledging receipt and coordinating any necessary response activities with you. - -## Learn More - -To learn more about NI Security, please see [https://ni.com/security](https://ni.com/security) - - \ No newline at end of file diff --git a/Tooling/deployment/Dependencies.vipc b/Tooling/deployment/Dependencies.vipc index e00ef39..97bc0fa 100644 Binary files a/Tooling/deployment/Dependencies.vipc and b/Tooling/deployment/Dependencies.vipc differ diff --git a/azure-pipelines.yml b/azure-pipelines.yml index b5674e4..b5a8e07 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -1,5 +1,10 @@ -trigger: none -pr: none +# Removed trigger so pipeline runs only when requested via API +# trigger: +# branches: +# include: +# - main +# - develop + name: $(Build.BuildID) pool: diff --git a/lv_icon_editor.lvproj b/lv_icon_editor.lvproj index b6fbf1a..4f94fda 100644 --- a/lv_icon_editor.lvproj +++ b/lv_icon_editor.lvproj @@ -18,289 +18,288 @@ - + - + - + - + - + - + - - + + - + - - + + - - + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + - - + + - + - - - - - + + + + + - - - - + + + + - + - + - - + + - + - - - - - - + + + + + + - - - - + + + + - - - - - - + + + + + + - - - - - - - - - + + + + + + + + + - - - + + + - - - - - + + + + + - + - - + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - - - - - - + + + + + + + + + + - - - - - - + + + + + + - - - + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - + + + + + - + - - - - - - + + + + + + - - - - - - - - - + + + + + + + + + - - + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - + + - - - + + + - + @@ -308,10 +307,10 @@ - + - - + + @@ -340,37 +339,37 @@ - + - + - + - + - - - - - - - - - - + + + + + + + + + + - + - + @@ -520,7 +519,6 @@ - @@ -533,89 +531,87 @@ + + + + + + + - + + + + + + + + + + + + + + - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - - - + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + - - + - - - + + + - + - - - - - + + diff --git a/pipeline/scripts/AddTokenToLabVIEW.ps1 b/pipeline/scripts/AddTokenToLabVIEW.ps1 new file mode 100644 index 0000000..bdd3a01 --- /dev/null +++ b/pipeline/scripts/AddTokenToLabVIEW.ps1 @@ -0,0 +1,28 @@ +# Example: .\AddTokenToLabVIEW.ps1 -MinimumSupportedLVVersion "2021" -SupportedBitness "64" -RelativePath "C:\labview-icon-editor" + +param( + [string]$MinimumSupportedLVVersion, + [string]$SupportedBitness, + [string]$RelativePath +) + +# Construct the command +$script = @" +g-cli --lv-ver $MinimumSupportedLVVersion --arch $SupportedBitness -v "$RelativePath\Tooling\deployment\Create_LV_INI_Token.vi" -- "LabVIEW" "Localhost.LibraryPaths" "$RelativePath" +"@ + +Write-Output "Executing the following command:" +Write-Output $script + +# Execute the command and check for errors +try { + Invoke-Expression $script + + # Check the exit code of the executed command + if ($LASTEXITCODE -eq 0) { + Write-Host "Create localhost.library path from ini file" + } +} catch { + Write-Host "" + exit 0 +} \ No newline at end of file diff --git a/.github/scripts/powershell/ApplyVIPC.ps1 b/pipeline/scripts/ApplyVIPC.ps1 similarity index 100% rename from .github/scripts/powershell/ApplyVIPC.ps1 rename to pipeline/scripts/ApplyVIPC.ps1 diff --git a/.github/scripts/powershell/Build.ps1 b/pipeline/scripts/Build.ps1 similarity index 90% rename from .github/scripts/powershell/Build.ps1 rename to pipeline/scripts/Build.ps1 index d07b751..620b7cd 100644 --- a/.github/scripts/powershell/Build.ps1 +++ b/pipeline/scripts/Build.ps1 @@ -62,7 +62,15 @@ try { # Apply dependencies for LV 2021 Execute-Script "$($AbsolutePathScripts)\Applyvipc.ps1" ` - "-MinimumSupportedLVVersion 2021 -SupportedBitness 32 -RelativePath `"$RelativePath`" -VIPCPath `"Tooling\deployment\Dependencies.vipc`" -VIP_LVVersion 2021" + "-MinimumSupportedLVVersion 2021 -SupportedBitness 32 -RelativePath `"$RelativePath`" -VIPCPath `"Tooling\deployment\dependencies.vipc`" -VIP_LVVersion 2021" + + # Apply dependencies for LV 2021 x64 + Execute-Script "$($AbsolutePathScripts)\Applyvipc.ps1" ` + "-MinimumSupportedLVVersion 2021 -SupportedBitness 64 -RelativePath `"$RelativePath`" -VIPCPath `"Tooling\deployment\dependencies.vipc`" -VIP_LVVersion 2021" + + # Set development mode + Execute-Script "$($AbsolutePathScripts)\Set_Development_Mode.ps1" ` + "-RelativePath `"$RelativePath`"" # Run Unit Tests Execute-Script "$($AbsolutePathScripts)\RunUnitTests.ps1" ` @@ -72,7 +80,6 @@ try { Execute-Script "$($AbsolutePathScripts)\Build_lvlibp.ps1" ` "-MinimumSupportedLVVersion 2021 -SupportedBitness 32 -RelativePath `"$RelativePath`"" - # Close LabVIEW Execute-Script "$($AbsolutePathScripts)\Close_LabVIEW.ps1" ` "-MinimumSupportedLVVersion 2021 -SupportedBitness 32" @@ -80,10 +87,6 @@ try { # Rename the file after build Execute-Script "$($AbsolutePathScripts)\Rename-File.ps1" ` "-CurrentFilename `"$RelativePath\resource\plugins\lv_icon.lvlibp`" -NewFilename 'lv_icon_x86.lvlibp'" - - # Apply dependencies for LV 2021 - Execute-Script "$($AbsolutePathScripts)\Applyvipc.ps1" ` - "-MinimumSupportedLVVersion 2021 -SupportedBitness 64 -RelativePath `"$RelativePath`" -VIPCPath `"Tooling\deployment\Dependencies.vipc`" -VIP_LVVersion 2021" # Run Unit Tests Execute-Script "$($AbsolutePathScripts)\RunUnitTests.ps1" ` @@ -105,6 +108,10 @@ try { Execute-Script "$($AbsolutePathScripts)\Close_LabVIEW.ps1" ` "-MinimumSupportedLVVersion 2021 -SupportedBitness 64" + # Revert development mode + Execute-Script "$($AbsolutePathScripts)\RevertDevelopmentMode.ps1" ` + "-RelativePath `"$RelativePath`"" + Write-Host "All scripts executed successfully!" -ForegroundColor Green } catch { Write-Host "An unexpected error occurred during script execution: $($_.Exception.Message)" -ForegroundColor Red diff --git a/.github/scripts/powershell/Build_lvlibp.ps1 b/pipeline/scripts/Build_lvlibp.ps1 similarity index 100% rename from .github/scripts/powershell/Build_lvlibp.ps1 rename to pipeline/scripts/Build_lvlibp.ps1 diff --git a/.github/scripts/powershell/Close_LabVIEW.ps1 b/pipeline/scripts/Close_LabVIEW.ps1 similarity index 100% rename from .github/scripts/powershell/Close_LabVIEW.ps1 rename to pipeline/scripts/Close_LabVIEW.ps1 diff --git a/.github/scripts/powershell/Prepare_LabVIEW_source.ps1 b/pipeline/scripts/Prepare_LabVIEW_source.ps1 similarity index 100% rename from .github/scripts/powershell/Prepare_LabVIEW_source.ps1 rename to pipeline/scripts/Prepare_LabVIEW_source.ps1 diff --git a/.github/scripts/powershell/Rename-file.ps1 b/pipeline/scripts/Rename-file.ps1 similarity index 100% rename from .github/scripts/powershell/Rename-file.ps1 rename to pipeline/scripts/Rename-file.ps1 diff --git a/.github/scripts/powershell/Cleanup.ps1 b/pipeline/scripts/RestoreSetupLVSource.ps1 similarity index 100% rename from .github/scripts/powershell/Cleanup.ps1 rename to pipeline/scripts/RestoreSetupLVSource.ps1 diff --git a/.github/scripts/powershell/RevertDevelopmentMode.ps1 b/pipeline/scripts/RevertDevelopmentMode.ps1 similarity index 100% rename from .github/scripts/powershell/RevertDevelopmentMode.ps1 rename to pipeline/scripts/RevertDevelopmentMode.ps1 diff --git a/.github/scripts/powershell/RunUnitTests.ps1 b/pipeline/scripts/RunUnitTests.ps1 similarity index 100% rename from .github/scripts/powershell/RunUnitTests.ps1 rename to pipeline/scripts/RunUnitTests.ps1 diff --git a/pipeline/scripts/Set_Development_Mode.ps1 b/pipeline/scripts/Set_Development_Mode.ps1 new file mode 100644 index 0000000..41771f7 --- /dev/null +++ b/pipeline/scripts/Set_Development_Mode.ps1 @@ -0,0 +1,37 @@ + +# Example usage: +# .\Set_Development_Mode.ps1 -RelativePath "C:\labview-icon-editor" + +param( + [string]$RelativePath +) + +# Helper function to execute scripts and stop on error +function Execute-Script { + param( + [string]$ScriptCommand + ) + Write-Host "Executing: $ScriptCommand" + try { + Invoke-Expression $ScriptCommand -ErrorAction Stop + } catch { + Write-Error "Error occurred while executing: $ScriptCommand. Exiting." + exit 1 + } +} +# Sequential script execution with error handling +try { + Execute-Script "Get-ChildItem -Path '$RelativePath\resource\plugins' -Filter '*.lvlibp' | Remove-Item -Force" + Execute-Script ".\AddTokenToLabVIEW.ps1 -MinimumSupportedLVVersion 2021 -SupportedBitness 32 -RelativePath '$RelativePath'" + Execute-Script ".\Prepare_LabVIEW_source.ps1 -MinimumSupportedLVVersion 2021 -SupportedBitness 32 -RelativePath '$RelativePath' -LabVIEW_Project 'lv_icon_editor' -Build_Spec 'Editor Packed Library'" + Execute-Script ".\Close_LabVIEW.ps1 -MinimumSupportedLVVersion 2021 -SupportedBitness 32" + Execute-Script ".\AddTokenToLabVIEW.ps1 -MinimumSupportedLVVersion 2021 -SupportedBitness 64 -RelativePath '$RelativePath'" + Execute-Script ".\Prepare_LabVIEW_source.ps1 -MinimumSupportedLVVersion 2021 -SupportedBitness 64 -RelativePath '$RelativePath' -LabVIEW_Project 'lv_icon_editor' -Build_Spec 'Editor Packed Library'" + Execute-Script ".\Close_LabVIEW.ps1 -MinimumSupportedLVVersion 2021 -SupportedBitness 64" + +} catch { + Write-Error "An unexpected error occurred during script execution: $($_.Exception.Message)" + exit 1 +} + +Write-Host "All scripts executed successfully." diff --git a/.github/scripts/powershell/build_vip.ps1 b/pipeline/scripts/build_vip.ps1 similarity index 100% rename from .github/scripts/powershell/build_vip.ps1 rename to pipeline/scripts/build_vip.ps1 diff --git a/resource/plugins/NIIconEditor/Class/Settings/GET/GET_Show.vi b/resource/plugins/NIIconEditor/Class/Settings/GET/GET_Show.vi index f78b3a4..3db86f5 100644 Binary files a/resource/plugins/NIIconEditor/Class/Settings/GET/GET_Show.vi and b/resource/plugins/NIIconEditor/Class/Settings/GET/GET_Show.vi differ diff --git a/resource/plugins/NIIconEditor/Class/Settings/Initialization/Settings Initialization.vi b/resource/plugins/NIIconEditor/Class/Settings/Initialization/Settings Initialization.vi index 526cf8e..bcd76ec 100644 Binary files a/resource/plugins/NIIconEditor/Class/Settings/Initialization/Settings Initialization.vi and b/resource/plugins/NIIconEditor/Class/Settings/Initialization/Settings Initialization.vi differ diff --git a/resource/plugins/NIIconEditor/Class/Settings/SET/SET_Show.vi b/resource/plugins/NIIconEditor/Class/Settings/SET/SET_Show.vi index 300b399..e4616a2 100644 Binary files a/resource/plugins/NIIconEditor/Class/Settings/SET/SET_Show.vi and b/resource/plugins/NIIconEditor/Class/Settings/SET/SET_Show.vi differ diff --git a/resource/plugins/NIIconEditor/Class/Settings/Settings.lvclass b/resource/plugins/NIIconEditor/Class/Settings/Settings.lvclass index 0bf51fe..7e4e340 100644 --- a/resource/plugins/NIIconEditor/Class/Settings/Settings.lvclass +++ b/resource/plugins/NIIconEditor/Class/Settings/Settings.lvclass @@ -3,15 +3,16 @@ true )1#!!!!!!!)!"1!&!!!-!%!!!@````]!!!!"!!%!!!)<!!!*Q(C=\>4.51*"%-8RB_8"+RF9J.!:7+2!#JU#6Y_E]&)A"6,I&%C"&.<`$KWF61A?N-I$MQ\#G[]@M].+ITR*DZJOF:?LZ80\X0G^8GC@PLZ='N_@PWG@'[[-H]\DJSPD,`FP&6UN^`:\_`^OPXW]8W``#0[W3)MBJ2<6V+4'_(:4E2>ZE2>ZE2?ZS5VO=J/<X/2*HO2*HO2*HO2"(O2"(O2"(O4D)B?ZS%8/LB3,&QM6ER94&*WBK(AJ0)7H]"1?0KLQ&*\#5XA+$VV5?!J0Y3E]B9>B+DS&J`!5HM,$6%.3YS,(5XC98M:D0-:D0-<$ED)?!T#,G9H.*$"E'MU<YT%?Y_'ND->YD->YD)>G'9`R')`R'!^$RKZY;/;,(!`4+0%EHM34?")05SPR**\%EXA3$]MJ]33?"*%MG%Q/1=GAJ%0S)@%E(PYJ]33?R*.Y%A^.YQ\FW*F:-V`E?!*0Y!E]A3@Q-)5#4_!*0)%H]$#N!E`A#4S"*`#QF!*0Y!E]!329F/564"9-$$I&1?$B<ZS7'(@*1R,D[J`G_;#K$[$[9+E0D0IAK'_Q_M;J<YB[I^5<K.Y9^2>7@R%V5,WQ?E*V2ZVY06)0V$VV2^V3.^1V>56>TE.`O?0J>.,R?.4B=."_P^>ON^.WO^6GM^&[P>:KN>*SO@RY7DVTH=PCJ]_F6`L_24U`F`\$MV%0GDY^ZNGD.]<;?U!!!!!! - 1.0.0.14 + 553680896 + 1.0.0.15 true true )1#!!!!!!!)!"1!&!!!-!%!!!@````]!!!!"!!%!!!6,0%.M>8.U:8)_$1I]4G&N:4Z1:7Y],UZB<75_$1I]4H6N27RU=TYY0#^/>7V&<(2T0AU+0&5T-DY.#DR/97VF0E:P=G6H=G^V<G1A1W^M<X)],UZB<75_$1I]6G&M0D%R-41R-T5Z0#^797Q_$1I],V5T-DY.#DR6-T)_$1I]4G&N:4Z#97.L:X*P>7ZE)%.P<'^S0#^/97VF0AU+0&:B<$YR.D=X.T)R.4QP6G&M0AU+0#^6-T)_$1I]1WRV=X2F=DY.#DR/97VF0E:J<'QA5'&U>'6S<DQP4G&N:4Y.#DR/>7V&<(2T0DA],UZV<56M>(-_$1I]64A_$1I]4G&N:4Z3<X=A-$QP4G&N:4Y.#DR797Q_-4EV0#^797Q_$1I],V5Y0AU+0&5Y0AU+0%ZB<75_5G^X)$%],UZB<75_$1I]6G&M0D%Z.4QP6G&M0AU+0#^6/$Y.#DR6/$Y.#DR/97VF0F*P>S!S0#^/97VF0AU+0&:B<$YR/45],V:B<$Y.#DQP64A_$1I]64A_$1I]4G&N:4Z3<X=A-TQP4G&N:4Y.#DR797Q_-4EV0#^797Q_$1I],V5Y0AU+0&5Y0AU+0%ZB<75_5G^X)$1],UZB<75_$1I]6G&M0D%Z.4QP6G&M0AU+0#^6/$Y.#DR6/$Y.#DR/97VF0F*P>S!V0#^/97VF0AU+0&:B<$YR/45],V:B<$Y.#DQP64A_$1I]64A_$1I]4G&N:4Z3<X=A.DQP4G&N:4Y.#DR797Q_-4EV0#^797Q_$1I],V5Y0AU+0&5Y0AU+0%ZB<75_5G^X)$=],UZB<75_$1I]6G&M0D%Z.4QP6G&M0AU+0#^6/$Y.#DQP1WRV=X2F=DY.#DR*-49_$1I]4G&N:4Z8;72U;$QP4G&N:4Y.#DR797Q_-4QP6G&M0AU+0#^*-49_$1I]26=_$1I]4G&N:4Z.<W2F0#^/97VF0AU+0%.I<WFD:4Z$<X"Z0#^$;'^J9W5_$1I]1WBP;7.F0E^S0#^$;'^J9W5_$1I]1WBP;7.F0E6Y9WRV=WFW:3"0=DQP1WBP;7.F0AU+0%.I<WFD:4Z#;81A1WRF98)],U.I<WFD:4Y.#DR$;'^J9W5_4G^U)%.P=(E],U.I<WFD:4Y.#DR$;'^J9W5_4G^U)%^S0#^$;'^J9W5_$1I]1WBP;7.F0EZP=C"&?'.M>8.J>G5A4X)],U.I<WFD:4Y.#DR$;'^J9W5_4G^U)%*J>#"$<'6B=DQP1WBP;7.F0AU+0&:B<$YQ0#^797Q_$1I],U680AU+0%6-0AU+0%ZB<75_5X2Z<'5],UZB<75_$1I]1WBP;7.F0F.P<'FE0#^$;'^J9W5_$1I]1WBP;7.F0E2B=WA],U.I<WFD:4Y.#DR$;'^J9W5_2'^U0#^$;'^J9W5_$1I]1WBP;7.F0E2B=WAA2'^U0#^$;'^J9W5_$1I]1WBP;7.F0E2B=WAA2'^U)%2P>$QP1WBP;7.F0AU+0&:B<$YQ0#^797Q_$1I],U6-0AU+0%6-0AU+0%ZB<75_2GFM<#"3>7RF0#^/97VF0AU+0%.I<WFD:4Z&>G6O)%^E:$QP1WBP;7.F0AU+0%.I<WFD:4Z8;7ZE;7ZH0#^$;'^J9W5_$1I]6G&M0D!],V:B<$Y.#DQP25Q_$1I]25Q_$1I]4G&N:4Z&<G1A1W&Q=TQP4G&N:4Y.#DR$;'^J9W5_2'6G986M>$QP1WBP;7.F0AU+0%.I<WFD:4Z'<'&U0#^$;'^J9W5_$1I]6G&M0D!],V:B<$Y.#DQP25Q_$1I],U.M>8.U:8)_$1I!!!!! )1#!!!!!!!)!"1!&!!!-!%!!!@````]!!!!"!!%!!!6,0%.M>8.U:8)_$1I]4G&N:4Z1:7Y],UZB<75_$1I]4H6N27RU=TYY0#^/>7V&<(2T0AU+0&5T-DY.#DR/97VF0E:P=G6H=G^V<G1A1W^M<X)],UZB<75_$1I]6G&M0D%R-41R-T5Z0#^797Q_$1I],V5T-DY.#DR6-T)_$1I]4G&N:4Z#97.L:X*P>7ZE)%.P<'^S0#^/97VF0AU+0&:B<$YR.D=X.T)R.4QP6G&M0AU+0#^6-T)_$1I]1WRV=X2F=DY.#DR/97VF0E:J<'QA5'&U>'6S<DQP4G&N:4Y.#DR/>7V&<(2T0DA],UZV<56M>(-_$1I]64A_$1I]4G&N:4Z3<X=A-$QP4G&N:4Y.#DR797Q_-4)W0#^797Q_$1I],V5Y0AU+0&5Y0AU+0%ZB<75_5G^X)$%],UZB<75_$1I]6G&M0D%S.DQP6G&M0AU+0#^6/$Y.#DR6/$Y.#DR/97VF0F*P>S!S0#^/97VF0AU+0&:B<$YR-D9],V:B<$Y.#DQP64A_$1I]64A_$1I]4G&N:4Z3<X=A-TQP4G&N:4Y.#DR797Q_-4)W0#^797Q_$1I],V5Y0AU+0&5Y0AU+0%ZB<75_5G^X)$1],UZB<75_$1I]6G&M0D%S.DQP6G&M0AU+0#^6/$Y.#DR6/$Y.#DR/97VF0F*P>S!V0#^/97VF0AU+0&:B<$YR-D9],V:B<$Y.#DQP64A_$1I]64A_$1I]4G&N:4Z3<X=A.DQP4G&N:4Y.#DR797Q_-4)W0#^797Q_$1I],V5Y0AU+0&5Y0AU+0%ZB<75_5G^X)$=],UZB<75_$1I]6G&M0D%S.DQP6G&M0AU+0#^6/$Y.#DQP1WRV=X2F=DY.#DR*-49_$1I]4G&N:4Z8;72U;$QP4G&N:4Y.#DR797Q_-TQP6G&M0AU+0#^*-49_$1I]26=_$1I]4G&N:4Z.<W2F0#^/97VF0AU+0%.I<WFD:4Z$<X"Z0#^$;'^J9W5_$1I]1WBP;7.F0E^S0#^$;'^J9W5_$1I]1WBP;7.F0E6Y9WRV=WFW:3"0=DQP1WBP;7.F0AU+0%.I<WFD:4Z#;81A1WRF98)],U.I<WFD:4Y.#DR$;'^J9W5_4G^U)%.P=(E],U.I<WFD:4Y.#DR$;'^J9W5_4G^U)%^S0#^$;'^J9W5_$1I]1WBP;7.F0EZP=C"&?'.M>8.J>G5A4X)],U.I<WFD:4Y.#DR$;'^J9W5_4G^U)%*J>#"$<'6B=DQP1WBP;7.F0AU+0&:B<$YQ0#^797Q_$1I],U680AU+0%6-0AU+0%ZB<75_5X2Z<'5],UZB<75_$1I]1WBP;7.F0F.P<'FE0#^$;'^J9W5_$1I]1WBP;7.F0E2B=WA],U.I<WFD:4Y.#DR$;'^J9W5_2'^U0#^$;'^J9W5_$1I]1WBP;7.F0E2B=WAA2'^U0#^$;'^J9W5_$1I]1WBP;7.F0E2B=WAA2'^U)%2P>$QP1WBP;7.F0AU+0&:B<$YQ0#^797Q_$1I],U6-0AU+0%6-0AU+0%ZB<75_2GFM<#"3>7RF0#^/97VF0AU+0%.I<WFD:4Z&>G6O)%^E:$QP1WBP;7.F0AU+0%.I<WFD:4Z8;7ZE;7ZH0#^$;'^J9W5_$1I]6G&M0D!],V:B<$Y.#DQP25Q_$1I]25Q_$1I]4G&N:4Z&<G1A1W&Q=TQP4G&N:4Y.#DR$;'^J9W5_2'6G986M>$QP1WBP;7.F0AU+0%.I<WFD:4Z'<'&U0#^$;'^J9W5_$1I]6G&M0D!],V:B<$Y.#DQP25Q_$1I],U.M>8.U:8)_$1I!!!!! - )1#!!!!!!!)!"1!&!!!-!%!!!@````]!!!!"!!%!!#7R5F.31QU+!!.-6E.$4%*76Q!!)6Q!!!26!!!!)!!!)4Q!!!!6!!!!!2"4:82U;7ZH=SZM>G.M98.T!!!!!!!!I#%!A!!!-!!!+!!%1!!!!!1!!Q!]!,Q!(U#!)A!!!!!"!!%!"P````]!!!!!!!!!!!!!!!"?$(72Z6R91;B+"DGW3W@F!!!!$!!!!"!!!!!#GZ^-J^Q/KU[A&D/A<%,<C>1>D.G0!,)%[9!*G/TY1HY!!!!!!!!!!/0<DP<MK@B-E&IH88%/^%I"!!!!`````^1>D.G0!,)%[9!*G/TY1HY!!!!17^?ED=ZMB,HAF!A>S1]Z!A!!!!1!!!!!!!!"6A!"4&:$1Q!!!!1!!F:*4%)!!!!!5&2)-!!!!!5!!1!"!!!!!!)!!F:*1U-!!!!!!1B'<WZU,G.U<!"16%AQ!!!!.Q!!!!5(0(:J<'FC0B"-97*73568)%FD<WYA16"*"WRW8WFD<WY)1W^O>(*P<(-)2G^O>#ZD>'Q!!!!!!!&#!!!!!!!#6EF$1Q!!!!!!!1V"<'FH<GVF<H1O9X2M5&2)-!!!!$Q!!!!&"TRW;7RJ9DY14'&C6EF&6S"*9W^O)%&131>M>F^J9W^O#%.P<H2S<WRT$5&M;7>O<76O>#ZD>'Q!!!!!!!*#!!!!!!!#6EF$1Q!!!!!"$5:P<H1A5WF[:3ZD>'R16%AQ!!!!/Q!!!!5+0(*F=W^V=G.F0A>Q<(6H;7ZT$%Z*37.P<E6E;82P=AB$<WZU=G^M=QV'<WZU)&.J?G5O9X2M!!!!!!!$1A!!!!!!!Q!!!!!!!A!%!!!!!!!D!!!!'HC=9W"H9'VAO-!!R)Q/4!V-#5$7"Q9'DA!'!%J4":I!!!!!3A!!!3>YH'.AQ!4`A1")-4)QM#1!;29U=4!.9V-4Y$)8FVV1=7;I'VG2Z:A2KI#=&U#;#31+V7)!E7)R10)>(0"$[1N)9A$D]S?,!!!!!!!-!!&73524!!!!!!!$!!!!%Q!!!!FYH'.A9'"E:!!#!!!5!!-!!!!!$#%!A!!!!!1S-3YQ!!!!!!QB!)!!!!!%-D%O-!!!!!!-)1#!!!!!"$)R,D!!!!!!$#%!A!!!!!1S-3YQ!!!!!!QB!)!!!!!%-D%O-!!!!!!.!!!!!!!!!!!!!!!!!!!!!!!!!)$`````A!!!!9!!!!'!!!!"A!!!!9!!!!'!!!!"A!!!!9!!!!'!!!!"A!!!!9!!!!'!9!!"A:A!!99'!!'9!9!"I!"!!<!!Q!'M!U!"IQ\!!;$V1!'A+M!"I$6!!;!KQ!'A.5!"I#L!!;!V1!'9+Y!"BD9!!9'Y!!'!9!!"`````Q!!"!$```````````````````````````````````````````]!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$``Q!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0``!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!``]!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$``Q!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0``!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!``]!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$``Q!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0``!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!``]!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$``Q!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0``!!!!!!!!!!#ZO1!!!!!!!!!!!!!!!!!!!!!!!!!!``]!!!!!!!#ZU=8,U<E!!!!!!!!!!!!!!!!!!!!!!!$``Q!!!!#ZU=7`P\_`S^'Z!!!!!!!!!!!!!!!!!!!!!0``!!#ZU=7`P\_`P\_`P]P2O1!!!!!!!!!!!!!!!!!!``]!S]7`P\_`P\_`P\_`P\`,U1!!!!!!!!!!!!!!!!$``Q$&R<_`P\_`P\_`P\_`P``,!!!!!!!!!!!!!!!!!0``!-8,S]7`P\_`P\_`P````]5!!!!!!!!!!!!!!!!!``]!R=P,S]P&P\_`P```````R1!!!!!!!!!!!!!!!!$``Q$&S]P,S]P,R>(````````&!!!!!!!!!!!!!!!!!0``!-8,S]P,S]P,`````````]5!!!!!!!!!!!!!!!!!``]!R=P,S]P,S]P`````````R1!!!!!!!!!!!!!!!!$``Q$&S]P,S]P,S``````````&!!!!!!!!!!!!!!!!!0``!-8,S]P,S]P,`````````]5!!!!!!!!!!!!!!!!!``]!R=P,S]P,S]P`````````R1!!!!!!!!!!!!!!!!$``Q$,S]P,S]P,S````````]P,!!!!!!!!!!!!!!!!!0``!!$&R=P,S]P,`````]P2R1!!!!!!!!!!!!!!!!!!``]!!!!!R=P,S]P``]P,R1!!!!!!!!!!!!!!!!!!!!$``Q!!!!!!!-8,S]P,PQ!!!!!!!!!!!!!!!!!!!!!!!0``!!!!!!!!!!$&PQ!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````````````````````````!!!!!A!%!!!!!!&X!!&'5%B1!!!!!Q!#6%2$1Q!!!!%)2G^O>#ZD>'Q!5&2)-!!!!$=!!!!&"TRW;7RJ9DY14'&C6EF&6S"*9W^O)%&131>M>F^J9W^O#%.P<H2S<WRT#%:P<H1O9X2M!!!!!!!!1A!!!!!!!!!"!!!!L6"53$!!!!!!!!!!!!!#6%2$1Q!!!!!!!1V'<WZU)&.J?G5O9X2M5&2)-!!!!$M!!!!&#DRS:8.P>8*D:4Y(='RV:WFO=QR/35FD<WZ&:'FU<X))1W^O>(*P<(-.2G^O>#"4;8JF,G.U<!!!!!!!!%)!!!!!!!!!!1!!!.:16%AQ!!!!!!!!!!!!!F2%1U-!!!!!!!%.17RJ:WZN:7ZU,G.U<&"53$!!!!!]!!!!"1=]>GFM;7)_%%RB9F:*26=A37.P<C""5%E(<(:@;7.P<AB$<WZU=G^M=QV"<'FH<GVF<H1O9X2M!!!!!!!!1A!!!!!!!!!"!!!![6"53$!!!!!!!!!!!!!$!!!!!"!!!!!$!!!!!!!!!!!!!!!!!!!/DA!!+_RYH-6;$8"5V27_<\-*OZO%\#\Z7R8T3._ON!,F2QPS)U)W2#!`S'\%-I\SEHV*XL#\,\Z^'QS>11@8++X+N&4M5,#UN<1TFEK,6L#UIFV2OWWVVFK6TE3=K6/'`KF9(=JG?_[^\X>`%N)"47<?XHPO0?@=?]^XTLHXX9@1V8^T.^L'U,9M9NQ@1;%^CVS2$).1?L9$K8_"%?4O:P[,G&I@EU5X/,L>*WVDT"6:6"8*""RTATP1P[&X<H`O+O9S>*`\&(3N=0N!G#O,;C+:"G9.._LGHLC#WV'O3@7A[?Y(G4(<,6T4RYY(5R)I2+G:_/G:T9QB*DD$<E]VL_0D1IL$6/>MBY_)>';2/ZCJFLH2KU!CK([?C'3['*(:J)F%)()G/HTYM-(EI5Q"-IR&Q-/)Q,76[2K(RQM]#7ZU&O&R%2\1MV84%WQ;WY8(DJHS7;>R'?!%NDP6'7.7D3V\!W(,Z8,!"E_6<3#,;LH2F1[@YV4E\@,KGV*0)Q9R[>M>O1/ZAZD@UYG.10J[Q1Z"-*.`-?-/14W526^):7S<E"V<9ATU.;$DR"*WT2*,M367%5MYATP=S$$&LAF-%<3HG[?X2*-*2:":K9`ND@+*"$MICU/])L!28O%,D<1MG(%OR#O!F2&]I$JE:_L1-@/#3_D!A1/Q#0!U7+](VA:O6/@TQ'R]-"NNU30'IG/NROINB^5,@B,ORSPI8WT49&N/9,O#0"?1ZS\SX%[?/QQYTQ=Y?^TZQ\8!_>K,$_=P!=KWZ=%:(9&?,Y]$T975S12HD$%0/D)/TS,AO=M#:[T(I_E:$]\8&=!:;;JU//`?P>P#"A::L-0:TD!5TKF8=_>TZT'I-\G4T'TU"Q,K=M,2">;):/S)R5L?!3XP)^'+Y3.Y_>P)]N=:'*Y+[S^K%T^<>0V:'[)YLAE.3&P9M#$(R$A@43SH^H$\K7>"8]4.:&+@"W)6D.SP'[I[CYZ'-B8//$>;<V*?BGJ1,<L?AOHC$F42N7L6&\M[3_N<2P7FZUR2O[K;+\0I'@#);\D2/KT24O"743/(JYG#5\8@GZB&,@`:6(\$60[45=['4/8V$J_TS4$>,]"U`C]D`U95`+2K+@7I-P#IE>N1.;J7_Y("NOM'?Q5'^AY;M"JM@UG$$5T+9/X]--3?-.]T'9.^\T-TW0=`@9->+')Q?\\")%XMCG2IFE!<97#PA"N<$0:QS3TB'T`#M28%9+HGM(#H5BDF>B@GAQ:9GDP1ER0GAU@S]M%U%*UUQA`."]:YD#8::FI3,3O5;VGBD%4`A_2ZGDT@-$,"NSW:1"OI*20MOTC:)!^9&AD$X"]NFBQ/A?G?'S@1@S=`/2"4<U;(RO&Z,$]Z!-]BY(FOYO4QA`TEA&GNS;'9>8[I7[=Q2:Q&B%++?#$X6V3&8C%JQE<Y@JR&LQ=TD5C&:O[:X.H=OWA0-1XN%1&$=BG7$G5<!CR:!@[G#P$VQ3?;VFA2XD$B0CD6("+X&L>=E2!%WN\35(,JN;X,-L!@LU!I/.KU"KPR!NN-.*.-@YI[)-;$"^1/UT@]/`>0"+(*'%`RA0R`T*[J6:7Z#Z1Z*V4'.;-,V@2/FKG$'$'@'X7:QIM.`GOV717<=BZ6EYNI=BFZ*D5$X7V([=]2Q]$9K&\8/(J4CH`/X$Y^X$0V..T<C0<''[DW"F3*!E2D&>&94W*`G2[`PW'+Z1_:SBWGO![S'[DM-C+\^GYMOR*EVYYL__MG?1_;SOUGW=YMURD-/-S2&@`6!W)UF`_D>=FUXW6]8)9R">@O"\!,OT>#YX.:JNL4C,UR\:O/Y9)0$-K!Q#K1&FAR4MJCLR3@E`,B:G?D9[.`=56AR":A57"',N"M#B&PGX25L[5"@!I%](NL4SV:5P\?4L5HO0RJX?52OAJNM\L]G>)OPW3#J+<N1JQLIG*`0#<%F5EY`^^,/`_FUQP,^I_]:30U$6FG,N[LG=+$3V]K,;MRS`'1/UFYO%,XW.R`9/?3GW#`2N)`.QGP"7U,67XO3[].9M1CG,ZT$1E3GD:5DI9!]3/F%%`6E1$"4CYK6'?:[WB-KK+Z7Y^*UR"@)C9BETJOQIGFZXDN5;&0K?A&>!BSO3TW$SB'X&C=SL"W:TUE:L.XVS&&6>6%-[9[\T/G),(#OL&]X)3GSL05#2VG@`7=!6()?99W/9F`HAD.?R<\J_/5Y;-(K9`G\E?/X%`19V9@@;+YDZ;"LVRZ)<\#J:J83:0STE0&P@.3;936`'ERPXQKCZYU:_Q!WEN7RK'.]ZDBEK9E7A;*KGL#H79J"]F@CV];DHBJ>-#:;!_YQW*ON);K=.$$G"W/9S\96L\V^F^A7ZE=W5^Q;>?Q_0&,"CY`@N&50G%KPW"*G/B8.'&W54X(K>N^&>:W$_AZ>OQ9[)'H65^WQ)4`@F.ZK;G]R+4HY3R[.J*BH8/ZU5L,HK--`0P_C@9=>G4S]@&##H@=;?STH]]\"_'`7E#,&LN?+ZKNX]OC8U=ST5Q6A#RI'CKWW#-KVODO],5M?A&[?G$R)J<8>D<U4<3$>'3UM<Q)9^G3&VPO1P=64,S/D+7/<!]?J6B\#6C8QL*BD0UL^V\O@/[=^1CI(T&-Y2!ABCG!JU?."8E:TCR$Z($EV!Z(>7A($(;0'<2E@W1Q`59`($H6Q^%^[A2,]W3!:QMZ($H6Q^%^:DXD(9Z_#\0NTDO]\D9:\@7CD,"-P]-O76(M)/[=S#5HER=B,0X?P*/<4;/Y+T"3VML/=>^<"BT45F>D)XK/;CGD<)@`:W0_QW0_*RH`5YC-Q5P'Y0'X,0$`X.V["$XL@RJ2X]'>=^#:>+OA3_M`!K.Q(P6]1$,("ZY0S?_(HL01`7O!!YZ&TL0=!=;^8>M&<0>7Y5GY3>I+_N"/TM=YGNQM6(?G@?5L:*'0JHW6Z*>>'?6\.[>^,L5G23.JH]?IM+M60CLWJHV6F*:8\?2F7>KC=^#K+K7RA+:T4\-U;61XJ8<(9=]<%>C/%+B:+5G<W26R2<QDS9-;=V645U!TV&C;.#I2%O0D<">U$3H$53(NKS_AK>+H&W`1B457NGN.8NS5'"#C@7RI/.9D2>G&--?6-B_*#M0MD8Q=J)2<ULYJ,>#`2R:BNGJ*V4X.8.8&4N7I'K'_B9^"H7=$L&<KY*5")IZ7>8&'V3S/5D5#$#=?Y77?]*/3Q7^5T@S5;P$$(CMJ$_-G7G,<*'7!W-.+5/6?6I3K3[P,;^4IV3V3$+IB0JYA10&;[KJE2YM54UB20E([U[,;6'OJ[W*L>,*'=7'+QA/'?,7:6F1Z^8E5!W7G"IV7U3,*01,W06J1:8B..@-%#6&XDB9J+9O#T-[</WP?`&HTLC63++F4W',K!$66=%-_S=#GO55@=GN#E@FYPR#6W.;)E%D!D/N8!76T&![DKA%[B)C9D)&D&']QRLN+&I1%=9B1LSQ/+J15\RV1[WR('#T5"N#*38%9<,676!>@I^>V:,8R3970C<AE3()`NEC67N)Q;KY;'.7I_O$;IF)0B*I/+3YF"PF?C!!?F511&"*EM1],6WGU7K>7OR/Q=+PR1;+0M&;MDI%-G+"T46,M&63P8MP,CLA:BFCZ6B94CB#H^0*W]%WA4GV0^II2HK7!!SE_F9!$QR::6-2YPR()V$9S/$5_!D1"[&V**1JB"GQ.F@6#HY#87,$-IN\;-CDU1J26Q$_PB!;D)\NIFAKN;W<.7T2L`D5Q*.SB2*OD)]SWXKHA/&(2!;$"+;7W1_S6J945JVA'-+6$R-#+YJYQ=$E/"M!LLQQ0#D"`/3%/]<D8%,;;G0*VCH'I/`'0FJ$7]6%?6E2CWU8+"^-KI'EBOXC$%<),WX7%L?-(B_5ER!P(/GQU-J$S^4Q`*/*@#1)^4%,$=UV)[*@Q$/)2):Y1=&4*IWBRC*+\6Q0+N;)7BSRV)Q\J:$VWB!<EJ!,$K!T&_'C5R?=J'/?5U(#UDR@)M%C3!33IW;<1:B6B@A$G!$*I1@/UM"!<4#;IT1B);]*C4%C1Y+"/OD;0IL*?8IRM:+<]6HXX%*;&HG4PA+#1Y/UR6\7U8E!TP-(3J&(,QUF!);T)T9)=Y<(BKN33&BP-63-W;&2^I7_72=BI9,5.I@$N,6O&8L89'O_0KE5=S.2CGS$(V#+7I":$A\T7)<1&)]/R1?C*A%O$S:Q<Y$>)SZ7Y4/DM@%NNA9.V617KRQ*4R\QV>+?XFW0XOGK]<KA^20>^,L@8AX?$,I`83X[^RE\VO_;>[D\4/U@UF0</M7<&%#^'_2Y)U8U54?5%6@1^9W6AR.:['^M7;-RZ@53[D_ZXKQ)D#,_P=(;;TC+/ES?3_E=QRAX;!PV$#TAYY-O/P&=:;UN?I7W_I#OU>0/U"8+%(929/]RC').H#YH#+\8WYF>K9<2`QCOVDC*8;L@!0#<]R++TS*6;N8;F:C08;,?3:]3Y4,OJY$).$^&SG2;[_*^6B)P>H/V&S^$"=7\"OANOTJ9"6[>W8CP+=X0"T>ESU./J[2HP=,CBY/:MG8%U,0V:R3XDX*SJ(V?]GTO*&K#DJJOTG]!G_-B^/H=?4MG<L/P@6R+S<2=)W=J6%)$QXIO0Z2OD-IN_60DOJR&QQ&XM>T]\K:YBU\O@/N!TE_A"$2>&$[R80XWV7ZHH?D02*OM<%(4OX$H1#5`4OQR\CM-5-VA(CPDD,"3:W"^&MT__Y0_+D<LE6$C_'^^IX+J^IZ&\%`"R'HX,'K^O+`G.RNY,?1M0RL]MJ%CSQ";*7J0Z8/0WT_RTD5W@`O=;@*(0.7J-HWN-G)D!LCNUO\Y0>"N[X'L8NJ*W@@Q#P\WZP%/1_Q5WC=]'5@Q&4I+6YGSP&)O*_:^YA0VO`-TMN`L4N^_;)P:T8ZD^1FQQ>W*D$4,^F7'TFG:RNY,3O\+I,NDC0?Z?D>@'M>L2[NY(#2:S<<VDH_/D^"P[&\DJ>JUT^3LTA'U'N[@*U@A`;OW"EQ!!!!!!"!!!!+-!!!!%!!!!!!!!!!Q!!5*%3&!!!!!!!!-!!!!%!!!!!!!!!'5!!!"V?*RD9'!I&*"A_M>1^Z?"3?!LE#(^FY&:U)`R.Q-$JZ`!93$.+#!*&*<^S]!OK!U7VD[CS]%!";JMD"S3()=&/=!S(#U;$0```V=J9O4Y?O1;8.%2(TB4::9]BQ1!:1A:GA!!!!!!!!1!!!!(!!!&\Q!!!!A!!!!B8WZJ8URB=X2,<G^X<E^X<GFO:UR71WRB=X.$<(6T>'6S!!!"7S%!A!!!!!!"!!A!-0````]!!1!!!!!"0Q!!!!M!)%!B'UVF=G>F)(6T:8)A<'&Z:8*T)'^O)'.P<7VJ>!!A1#%;5X2P=G5A-X*E)("B=H2Z)&2F<8"M982F=T]!!"2!-0````],2G^M:'6S)%ZB<75!(E"1!!)!!1!#%T.S:#"Q98*U?3"5:7VQ<'&U:8-!)Q$R!!!!!!!!!!%)2G^O>#ZD>'Q!%E!Q`````Q2'<WZU!!!J!0('5T'`!!!!!1V"<'FH<GVF<H1O9X2M!".!"A!*17RJ:WZN:7ZU!#5!]?%\/Q5!!!!"$5:P<H1A5WF[:3ZD>'Q!$U!&!!24;8JF!!!31&!!!Q!%!!5!"A25:8BU!!!51#%05WBP>S"-98FF=C"597)`!"2!)1^4;'^X)&2F=GVJ<G&M=T]!'E"1!!5!!!!$!!=!#!!*#&.F>(2J<G>T!!!"!!I!!!!!!!!!'ER71WRB=X.1=GFW982F2'&U962B9E^S:'6S!!!!43%!A!!!!!!#!!5!"Q!!$!"!!!(`````!!!!!1!"!!!!#A!!!!!!!!!"!!!!!A!!!!-!!!!%!!!!"1!!!!9!!!!(!!!!#!!!!!E!!!!!!!!!'UR71WRB=X.1=GFW982F2'&U962J<76T>'&N=!!!!"EB!)!!!!!!!1!&!!=!!!%!!/*99[M!!!!!!!!!*ER71WRB=X.1=GFW982F2'&U95RB=X2"=("M;76E6'FN:8.U97VQ!!!!'3%!A!!!!!!"!!5!"Q!!!1!!YFBDKQ!!!!!!!!!;4&:$<'&T=V"S;8:B>'6%982B6(FQ:52F=W-!!!&D)1#!!!!!!!%!#!!Q`````Q!"!!!!!!&(!!!!#Q!A1#%<476S:W5A>8.F=C"M98FF=H-A<WYA9W^N<7FU!#"!)2J4>'^S:3!T=G1A='&S>(EA6'6N='RB>'6T0Q!!&%!Q`````QN'<WRE:8)A4G&N:1!?1&!!!A!"!!)4-X*E)("B=H2Z)&2F<8"M982F=Q!D!0%!!!!!!!!!!1B'<WZU,G.U<!!31$$`````"%:P<H1!!#E!]=:4-<]!!!!"$5&M;7>O<76O>#ZD>'Q!%U!'!!F"<'FH<GVF<H1!*1$RY4M\"1!!!!%.2G^O>#"4;8JF,G.U<!!01!5!"&.J?G5!!"*!5!!$!!1!"1!'"&2F?(1!!"2!)1^4;'^X)%RB?76S)&2B9D]!&%!B$V.I<X=A6'6S<7FO97RT0Q!C1&!!"1!!!!-!"Q!)!!E15W6U>'FO:X-O<(:D<'&T=Q!!!1!+!!!!!!!!!"Z-6E.M98.T5(*J>G&U:52B>'&%:GRU2'&U96.J?G5!!!!:)1#!!!!!!!%!"1!$!!!"!!!!!!!Q!!!!!!!!!"J-6E.M98.T5(*J>G&U:52B>'&%:GRU2'&U91!!!6YB!)!!!!!!#Q!A1#%<476S:W5A>8.F=C"M98FF=H-A<WYA9W^N<7FU!#"!)2J4>'^S:3!T=G1A='&S>(EA6'6N='RB>'6T0Q!!&%!Q`````QN'<WRE:8)A4G&N:1!?1&!!!A!"!!)4-X*E)("B=H2Z)&2F<8"M982F=Q!D!0%!!!!!!!!!!1B'<WZU,G.U<!!31$$`````"%:P<H1!!#E!]=:4-<]!!!!"$5&M;7>O<76O>#ZD>'Q!%U!'!!F"<'FH<GVF<H1!*1$RY4M\"1!!!!%.2G^O>#"4;8JF,G.U<!!01!5!"&.J?G5!!"*!5!!$!!1!"1!'"&2F?(1!!"2!)1^4;'^X)%RB?76S)&2B9D]!&%!B$V.I<X=A6'6S<7FO97RT0Q!C1&!!"1!!!!-!"Q!)!!E15W6U>'FO:X-O<(:D<'&T=Q!!!1!+!!!!!!!!!!!!!!!!!Q!!!!!!!!!!!"2/33Z-6CZ"<'QO5W^V=G.F4WZM?1!!!"5B!)!!!!!!!1!%!#%!!1!!!1!!!!!!!!!!"!!1!!Q!!!!%!!!"0Q!!!#A!!!!#!!!%!!!!!#=!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"^Q!!!Z6YH*63Q7\41""^C:UUREE4[A+FJ?WGJ3V=IE+00>1)+3>!&=[B2Z:Y%SSNP:'^+3UH`I?0[+X`5@YA8Q#TNEF5U5LAE6@;W4=T<^Y-A*@9R1T&6WHU6;*\1SWRYB`_IM]W$A/;81?PLASE^5:'YS17*=\T[X$G,ORB>H.]8-O"*J1&U4?2!^N_$<;Z!=TP<LQ8[6CQ;3:3*PGF3$/G%D:5=2RJ]\Y?;*5+>J3'<-*4@=E')JZ)LE6W!KQ7X.S_EC(&@_#RQ*:`CCJMV,Q\9KC<5VC'&+LW1&RIE[0<$L[IL_S>K=Y'`00*QD=1;2QF8&+R-]R_HAV`5'SV%QCNIW3=^?4Z50)M;]Y>JM(86+.'6?J91A0/ZFMZT43F6C/7I^EED=[*$1OZZI1EE2YA"+QVO(FA==527H$]*6AD/5<$`W[JD\JQ#$6#*__ED1Y?7N.Q2"VXK6KO"]5<$4SM9P/OE4:,W0;^QX3)P(G_:Y3/Y>S%)@!94\"'AJG704T#5TI^3V_%*9E6L'0ZVAKV<S_+OVC(9DD0C027/:T?8-LN@Z+S#DLKZKC!!DY2>RN^)M*)H2W3V^AO[@L(X.,_^CR?HO>7T+2#C^X\L`H;&,62<"TF;'+:<AT\/-!,_A^)SQ<F=?FVBT!NGBEI-WE#[T?"--.$!!!!!(=!!1!#!!-!"1!!!&A!$Q1!!!!!$Q$:!.1!!!"B!!]%!!!!!!]!W1$5!!!!;A!0"!!!!!!0!.E!V!!!!(/!!)1!A!!!%(``!!%!!!"VA!#%!)!!!""``Q!"#&.F:W^F)&6*#&.F:W^F)&6*#&.F:W^F)&6*!4!"-A"35V*$$1I!!UR71U.-1F:8!!!B8!!!"&5!!!!A!!!B0!!!!!!!!!!!!!!!)!!!!$1!!!2)!!!!(5R*1EY!!!!!!!!"<%R75V)!!!!!!!!"A&*55U=!!!!!!!!"F%.$5V1!!!!!!!!"K%R*>GE!!!!!!!!"P%.04F!!!!!!!!!"U&2./$!!!!!!!!!"Z%2'2&-!!!!!!!!"_%R*:(-!!!!!!!!#$%>$2%E!!!!!!!!#)(:F=H-!!!!%!!!#.%>$5&)!!!!!!!!#G%F$4UY!!!!!!!!#L'FD<$A!!!!!!!!#Q%.11T)!!!!!!!!#V%R*:H!!!!!!!!!#[%:128A!!!!!!!!#`%:13')!!!!!!!!$%%:15U5!!!!!!!!$*&:12&!!!!!!!!!$/%R*9G1!!!!!!!!$4%*%28A!!!!!!!!$9%*%3')!!!!!!!!$>%*%5U5!!!!!!!!$C&:*6&-!!!!!!!!$H%253&!!!!!!!!!$M%V6351!!!!!!!!$R%B*5V1!!!!!!!!$W&:$6&!!!!!!!!!$\%:515)!!!!!!!!%!!!!!!$`````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(!!!!!!!!!!!`````Q!!!!!!!!$!!!!!!!!!!!$`````!!!!!!!!!.1!!!!!!!!!!0````]!!!!!!!!!X!!!!!!!!!!!`````Q!!!!!!!!)Y!!!!!!!!!!$`````!!!!!!!!!E!!!!!!!!!!!0````]!!!!!!!!#;!!!!!!!!!!!`````Q!!!!!!!!+Y!!!!!!!!!!$`````!!!!!!!!!MA!!!!!!!!!"0````]!!!!!!!!#Y!!!!!!!!!!(`````Q!!!!!!!!,Q!!!!!!!!!!D`````!!!!!!!!!Q!!!!!!!!!!#@````]!!!!!!!!$%!!!!!!!!!!+`````Q!!!!!!!!-A!!!!!!!!!!$`````!!!!!!!!!T!!!!!!!!!!!0````]!!!!!!!!$2!!!!!!!!!!!`````Q!!!!!!!!0)!!!!!!!!!!$`````!!!!!!!!"]Q!!!!!!!!!!0````]!!!!!!!!(V!!!!!!!!!!!`````Q!!!!!!!!F1!!!!!!!!!!$`````!!!!!!!!#71!!!!!!!!!!0````]!!!!!!!!8_!!!!!!!!!!!`````Q!!!!!!!"A!!!!!!!!!!!$`````!!!!!!!!'!A!!!!!!!!!!0````]!!!!!!!!9'!!!!!!!!!!!`````Q!!!!!!!"AA!!!!!!!!!!$`````!!!!!!!!')Q!!!!!!!!!!0````]!!!!!!!!9F!!!!!!!!!!!`````Q!!!!!!!"[)!!!!!!!!!!$`````!!!!!!!!(J!!!!!!!!!!!0````]!!!!!!!!?G!!!!!!!!!!!`````Q!!!!!!!"\%!!!!!!!!!)$`````!!!!!!!!)-!!!!!!$&.F>(2J<G>T,G.U<!!!!!! + )1#!!!!!!!)!"1!&!!!-!%!!!@````]!!!!"!!%!!#I^5F.31QU+!!.-6E.$4%*76Q!!*7Q!!!42!!!!)!!!*5Q!!!!6!!!!!2"4:82U;7ZH=SZM>G.M98.T!!!!!!!!I#%!A!!!-!!!+!!%!!!!!!1!!Q!]!,Q!(U!!!A!!!!!"!!%!"P````]!!!!!!!!!!!!!!!#180%L$W\G4ZT=.2U]R=/S!!!!$!!!!"!!!!!#([I@;4G/ZEG!3]]`?3WT>N1>D.G0!,)%[9!*G/TY1HY!!!!!!!!!!%#I*-7B[.>'K%B$F)PR+MU"!!!!`````^1>D.G0!,)%[9!*G/TY1HY!!!!1SWK0)I;]L[=WTK]7]$9D^A!!!!1!!!!!!!!"6A!"4&:$1Q!!!!1!!F:*4%)!!!!!5&2)-!!!!!5!!1!"!!!!!!)!!F:*1U-!!!!!!1B'<WZU,G.U<!"16%AQ!!!!.Q!!!!5(0(:J<'FC0B"-97*73568)%FD<WYA16"*"WRW8WFD<WY)1W^O>(*P<(-)2G^O>#ZD>'Q!!!!!!!&#!!!!!!!#6EF$1Q!!!!!!!1V"<'FH<GVF<H1O9X2M5&2)-!!!!$Q!!!!&"TRW;7RJ9DY14'&C6EF&6S"*9W^O)%&131>M>F^J9W^O#%.P<H2S<WRT$5&M;7>O<76O>#ZD>'Q!!!!!!!*#!!!!!!!#6EF$1Q!!!!!"$5:P<H1A5WF[:3ZD>'R16%AQ!!!!/Q!!!!5+0(*F=W^V=G.F0A>Q<(6H;7ZT$%Z*37.P<E6E;82P=AB$<WZU=G^M=QV'<WZU)&.J?G5O9X2M!!!!!!!$1A!!!!!!!Q!!!!!!!A!%!!!!!!!D!!!!'HC=9W"H9'VAO-!!R)Q/4!V-#5$7"Q9'DA!'!%J4":I!!!!!&!!!!"2YH'0A9/"BY%#"$!!$=!".!!!!3A!!!3:YH'.AQ!4`A1")-4)QM#1!;29U=4!.9V-4Y$)8FVV1=7;I'VG2Z:DBCI$M&U#;#31)V7%!E7)R10)=(0"$[1N)9A$$GC?,!!!!!!!-!!&73524!!!!!!!$!!!"CQ!!!]RYH&P!S-"18G&G%M$%Q-!-:#MS.$!EZ[?E]D)!_1Q)E),-)1-U1-X41B-X0(!Y$1DU_/6<Q(S0ZD=;HMU`G%I&08<!V0S`Y.&]2//Q2X=D3/CY1Q*994?DY368QQ0`*VQ!;Q-KY*>X!/PX[4TAO1OG';D%I`/A4_=JR`_8Q+L3-/RLK,2G+'%(KA.*(W`]QAD2C?%!=MXX/0C)R2.OG&=P#Z.8MAC42[=,F]&R&[Y!-:#S8B%OL0;&!1V1]/A]BZ$=R1B2U=W(%00I>!R!Y7EA]RIPI0A'+0!"8?!"*!Q6YAZD2BV*9/XL?\N9A41<EJA$!S4_(:B1M2Y$)Q0)-S"S,F3N$:$.""74A9K"W,T13.&!UK-&&7.CM)?,2=,V)-2W)LE$*P9+<"<%8;R1-4OAZ!9IWY=2)A>C2Q(:$[$M<#"<!-KO!<)6'#&_97$!44P\O\D#W-A!FK>A75M;C*.T#QQ-^+K>>)!IO&;H/FCH.&SHV+F7R[G711IE8Z"=BE/;!1$DTZI`!!!!!9A!!!+)?*RT9'"A++]Q-R&A9G"A:G2A5'2I9%D/4UFF1!-O4/AC%"!7(OT2`#<!I^.(R=/D-U4&I='3Q:&`[I%'+R"VU+8TA)P"#6?$%[6'(LW/("[>,E"FP56!2IG+!YBH!7):.&2S-!"6.V3"K%/>*QQO'&QMY46BZ.^WQ+0Z3%"U@.RBDW[1YFY0$J"6&B\>)3I'(LV?9*["2T>1O$O)QW-XT&H`,XNU(D1]]0]E`Z3$*3Q>*V\PW0]@#%#'!/XX%)#Y&WC)!^!V!F$8_+BIA&A+1/-%A-9*1!VB0!]SB,XDR-M#K"%;-(>I?(4\!.8X"H+!`+\!PTW!Q`"!GH5A"V"(;1*-+2/+5C;QUKY!*M-$6I&-))8G[-\S!4EL5!!3HB5#$+$QL!22"QU/.HQ%BML"FU```@]0>.%^))5^9MA%;V`@WQ6-"AS-3')/1+T%)-%!%_^(%A=":X]86Q9M[1/7:E"[J)%Y/<@!Q%#PWEE(C)*L>;K$>5L$>5K>;H7=;BE!R__EB!!!!25!!!))?*RT9'"A++]Q-ZH!S-$!$-3+$!U-S@EJK1RIY!ADOAA%B(EUPQHQ[022]@$I$&&R[',M90,I>A(S?DUY)-,>1''0XC)ALQ4)!!J:A&A'81Y=(5Y=),57-,57),5'(MW(/%"G'8BU!Y8XQ3T[@[XV!(`L,#!,:LY!EPH.BQ4!^I/%.%!M";"O!:#?UCS1?AW9(2I?X4Z!S>Z!M"U+`.M>/.)[(4FA;JB1V$#"V81Z-(5Y-K(<[A0S63$%VCY(A1Z(!=-$(MV(!O)/9Q]I)M(;V`>WA9);/<A>A$A,+!)44U13"Q&H@R@8"CTR!YMT%#5&R-E&S76[V5Y[1"2=KV->L&-;LF0K6+PD6-P!!!$:XGK%!!!!!!!!%Q!!!!FYH'.A9'"E:!!#!!!5!!-!!!!!$C%"A!9!!!9S-3YQ,D%!!!!!!!!-)1#!!!!!"$)R,D!!!!!!$C%"A!9!!!9S-3YQ,D%!!!!!!!!-)1#!!!!!"$)R,D!!!!!!$C%"A!9!!!9S-3YQ,D%!!!!!!!!5!1!!!068.9*Z*K+-,H.34A:*/:U!!!!.!!!!!!!!!!!!!!!!!!!!!!!!!)$`````A!!!!9!!!!'!!!!"A!!!!9!!!!'!!!!"A!!!!9!!!!'!!!!"A!!!!9!!!!'!9!!"A:A!!99'!!'9!9!"I!"!!<!!Q!'M!U!"IQ\!!;$V1!'A+M!"I$6!!;!KQ!'A.5!"I#L!!;!V1!'9+Y!"BD9!!9'Y!!'!9!!"`````Q!!"!$```````````````````````````````````````````]!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$``Q!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0``!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!``]!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$``Q!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0``!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!``]!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$``Q!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0``!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!``]!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$``Q!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0``!!!!!!!!!!#ZO1!!!!!!!!!!!!!!!!!!!!!!!!!!``]!!!!!!!#ZU=8,U<E!!!!!!!!!!!!!!!!!!!!!!!$``Q!!!!#ZU=7`P\_`S^'Z!!!!!!!!!!!!!!!!!!!!!0``!!#ZU=7`P\_`P\_`P]P2O1!!!!!!!!!!!!!!!!!!``]!S]7`P\_`P\_`P\_`P\`,U1!!!!!!!!!!!!!!!!$``Q$&R<_`P\_`P\_`P\_`P``,!!!!!!!!!!!!!!!!!0``!-8,S]7`P\_`P\_`P````]5!!!!!!!!!!!!!!!!!``]!R=P,S]P&P\_`P```````R1!!!!!!!!!!!!!!!!$``Q$&S]P,S]P,R>(````````&!!!!!!!!!!!!!!!!!0``!-8,S]P,S]P,`````````]5!!!!!!!!!!!!!!!!!``]!R=P,S]P,S]P`````````R1!!!!!!!!!!!!!!!!$``Q$&S]P,S]P,S``````````&!!!!!!!!!!!!!!!!!0``!-8,S]P,S]P,`````````]5!!!!!!!!!!!!!!!!!``]!R=P,S]P,S]P`````````R1!!!!!!!!!!!!!!!!$``Q$,S]P,S]P,S````````]P,!!!!!!!!!!!!!!!!!0``!!$&R=P,S]P,`````]P2R1!!!!!!!!!!!!!!!!!!``]!!!!!R=P,S]P``]P,R1!!!!!!!!!!!!!!!!!!!!$``Q!!!!!!!-8,S]P,PQ!!!!!!!!!!!!!!!!!!!!!!!0``!!!!!!!!!!$&PQ!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````````````````````````!!!!!A!%!!!!!!&X!!&'5%B1!!!!!Q!#6%2$1Q!!!!%)2G^O>#ZD>'Q!5&2)-!!!!$=!!!!&"TRW;7RJ9DY14'&C6EF&6S"*9W^O)%&131>M>F^J9W^O#%.P<H2S<WRT#%:P<H1O9X2M!!!!!!!!1A!!!!!!!!!"!!!!L6"53$!!!!!!!!!!!!!#6%2$1Q!!!!!!!1V'<WZU)&.J?G5O9X2M5&2)-!!!!$M!!!!&#DRS:8.P>8*D:4Y(='RV:WFO=QR/35FD<WZ&:'FU<X))1W^O>(*P<(-.2G^O>#"4;8JF,G.U<!!!!!!!!%)!!!!!!!!!!1!!!.:16%AQ!!!!!!!!!!!!!F2%1U-!!!!!!!%.17RJ:WZN:7ZU,G.U<&"53$!!!!!]!!!!"1=]>GFM;7)_%%RB9F:*26=A37.P<C""5%E(<(:@;7.P<AB$<WZU=G^M=QV"<'FH<GVF<H1O9X2M!!!!!!!!1A!!!!!!!!!"!!!![6"53$!!!!!!!!!!!!!$!!!!!"!!!!!$!!!!!!!!!!!!!!!!!!!/<Q!!+D:YH-6;@8!<R28@EW6&EOV95GT(!I)P\EGE.%HT!32.#*"9DEHCDR$:B'9[E)NUNG]C[=TJZ/"U*D!A$'["4*M3/GF#[1R./U.4;!-FU,1%%!%K7BB+5TY[9^)`G%H4FB:#9>,)V\?\^SH*6N**Q*YZ\<\>NW^XX_`^>P@W%,J]E;`:-9&W&"$D_Q13H18ED?=:B(,TX%D\#Y]C8R`T8]1U"*E#OM\>ZXP0-=&=5E#V]8T9P3!SBPY&N>6(V-O9C^!^PO.1V?5,1G0?!KK0ZW@[VX,D0O\R3\CR;LV60ZLFOZ_:=.T%N8TKPD]LA5'5H9/@`HH-"')CMZX/</N[0C6E/3TVT(-(3:/?!P*&]H5S.XY:N!CG8S".-DW-S'T7GU41Z"RU]/""5]F0F=+E'UN"BR&";TP4-Y6/)*+@F?<'ZR)>,^%"/^NV/Z'7C6WY\VCJ7(6'*/]$6>#\42MSVN8V#N=2066611_?GNZA!46QY[P=1@@R_,P6>4>EHU9-9H+XO.6(V1.9X^_.P5$K"M!2%@"4;"HDCU)_7E#8:`//T=C*84%"^FTI#('&5X@&V?!+:D6RB3=SZE/G,X:6]%8%G7O>V:<)J"6":K6_.J<AUWFW3";(?56AY\T#FXJJ234P79*H!"MD!%'.S-EYU7(LD%NI``\^-!HQ.&7P!>7:X,CBZY@2O'%U_KT(T6H(6MX:OR:G,`*:\Q#?Q>!SBYZ<*](N3P*=4*[\S(0-20)C1,,@6^R2'Z+PR..X@J&]&1"M2R'3U3(U)8JV#F1OI5IGEK%_Y!1>GE*H+?D=<E5S["Q#H6=L)`FL*5D'OE6)XLV\NUU0@,(-1,+493C3MW_I:^1T'-^Z^2CT!0W.Y*HCMQ@=%=]\%9O.P!Z'XE?C(<[(]0RXE0FP./%\(2QA[C-`6>9"L!.2#.>("[6N<+]A*]55HUB@3RXC#^'AALK)G].EPQT#7OBZS0"581%^%]_\ACFOP-FCP!L6IQ:UD1X/Z70(V<.[^6>\OC?XNY,;S]W@JF86,.=5U,-1$&>QYYX9IJ0AL9[3BL_&IF.TY.N925P`W:)_:EH`S5Q8IJ<U"H@1UW+[\N@AON$857A4CHR7?T5.JCI)JN'<52WKU_I"Y?S+ZSH@I%X1M>="&4;(04AJXQ3HDBD722S7<?U6<F.+IW:X+<0-B+GZ&4V:E6E?+G+7'>"URE1T:2;T0_;5\,"-C=YP4JV@KAC<(#$0%_2ZT'37(^C92?_ID6HWH2^G+1+7$=)Q^I>B"3QBGS@!>=^012Q`J%I7MM'OXIK?G%,H5>#RE]UGM,.6NT-6W@S9SR>RT3<>F-YVZ<TT%]-\J9RT#B!+D$/GPA<B_B:B(!@2_VE"P28*.S-.GOKT[CHVLWA0=1WN%1>(=HG7>G5(!CT:!@[W"P!.E=><VNI20L0CCJJND9L<SXOO$!7"N8>UF&RY;_M,$'TN8!B&RFP79D-"5*O$ZJ$B4^-[R0BRBTJB_':]K`^%1%VG@]I4]P]R?K:"-_9L-?;J;)RL27>L[@U#UQA=M9A<^VLIR1(`$@KI)CWK8\0E*:;]ZDK4H9XO=+,=FYBDI'`5LH=+OVEF.(^"PU(X4&-E(Q3[>R$LT>>2[T.2$1I4C\8%9B0B`CK$P\^LY@)(,/EO#[^$WT.JWV7E\99\=.MVU(<$F'V`R^,?`::UJ[6N4Y&JBF#S-CP_;Q,%[#(`2`O5'<(,",E]9S(8PPNQ#0MW1?(T";</XYSD-2?=B?'#NZ\+I-!KM#SQ9IKER:C5GJ].YG*0MXN4;&FV?.12:F&YNBJON6$%OR9<>?MIA<O!Q/^O/,Z]?@5(/\7;%0)HD*"([$+UQR\S*S=0_?56&D6^&_*:G2!(5EEBJ:R$]0^^]O#`=(:BWPZ2.'V%PL(!,-"\.1M^?)WJUF=VZFL=Z7Z#$Z=9%;P_"X9O;I8^'FH_O8/)7L#W2,0GO`$7A#/7QP!^;QF*[.:1.2I'R)^/BHBKDB!%?W[M5&>A9"0OO9I<L[6LN]&*-R!`#3=BUVS%KTCQX0S!-S(U+[Y9I%/1KW6R9&!R?7.:.M][05WQ-&ODOR%JGKE7OG*KYTZJ)9G6^IXF9R9UV:SC14D.'K`_E^!5]JSE27Y3HU?D#Z`$]?E_<M<I!2KD[LX)L@Y=07K0U=@,RWA6R-KF:R-L8,:VN82/U@F%_?C]5":B*H^2,C[@+K!HL3NW'/UF-_07_XH9$%H,)FI&#V6NR:XG:!&30"?`-10RQNC!-^%?#!=Y8^:4%WZ['(0#`MY,W]JXXPU,<#MTIY]18$JV,(\[CIH,4V_WJ)^;UC`:&ETU7XLW[K&WDN#Q_R<-\2[Q=`DQ9<!$4\O>QK!&`Q/7^.77^(+,H1=,[,FYHP5MY-:L<(O/+IDP?SPN/:RUT]&6J"4OC-@=:\^1>!\#@QW!&JW\XCS\7H^11#`'][V-,9!M9OEK^NB$'N<I\P$.!HI*;PJB]O+W&U!/^$UU2CIS?F^?BLZM+_+7W^%^*1.P*(VJ*.O$BSH78A(6KW(;--9_6$^1T[CH\5>!YYBB96_!'*9!HBYW*_463(\7-$E=?@4$53-;A]\OM9+7\)^-J>]:<W)]WO(I,GW!E_PE17=</2RZN-02869\5RW/8I02^B5>8H><H0:77579JN`DE(36/YB\+I8EO;S,1%N`M/\EZF%7^Y2(K^L:_<[\KU"D2P9LW)H_:`1FIWIM^-O*U-'*U*.-[#F%_B!A@@#(WB;(@O6L0Y3?#TW.;/TASCJ5*N6=>'J$B[!8HG@](Z'6YS0`R_4X9`]JK0ZNQ!(()M]J<D`DOV0@">Q:K-7$]*&F+R*%/\EAYW\RM:$>G1N7LZ2&0J%,VJ"@>F7#DWX."<V;4EL%=U'`G7(8+(R#D/7#N627F/XG:6H;:GD1L.:+=YH-U*ZB+^+F0CLN3]'?.S[Q86%QMUK3NL)L5YJY;Y9(-^;M<K:%:JKR&?F3UEC34\%^5$7KD#3%8,#J2+;V0KN]A>&9=WGZ8B4!2?F")>(02E?37[1%OQ4'O%LGYQFBB,W?4U%LP7WZY,1WK,^&&G'U7EKT0=/;.:K>LENV16-<HY1]TY::0>8&+Y/E/:IVGD/TVO;I6">!>V*R8O;*0EG:_G<7KE_FJD\MM4,S##[C+<:$5A;*0_Q#L>W,SEC.VBK,#H6Z8:O5B'S54[5*5!+WP.;SOUV+J;5%HS<V;6)L;L$FD7<L$<%O]7+*QA/'?+W9:L2WGIIE*MIM"<L-V3<*7Q1=?T3BN2'QZ+Q$*%)D/.KED#Q+-LNQQ>S&C_9OP*+U1E8>QD:,"=BJ$=]M&JH9N*9987Z0+T+@'B!3%NM?&^*J'((4;J"M4="B6(.!FR!8-UE)D0)&:H^8SY+1*A%2D=HCE%*&K>CAFG?\?M&$(1#>J*3#TN<J3;XT^5<?1&9(HV(YJ)B4AC109)`5;CE>I^;MC6&>;H3O)S&N!;LJEF*3?IC0!10Y.2&"5&31R8\=O#;DW59NWZ?'C6O$$R,^2.7V*AFNQ!!^;T.C4.#C?BUP+_*7[',./FF-+U++SKM\)4:"/LUT%R0D0%M""[U%.1%GBGWSK)CJ!:0)N$,3/9U@!:I!^*[-EA#;!6^$:I01,_!J&GSD;,+8$!ER9&E&YP.3+$!LMEPH;N#[9O\#J8-881&>QB5G+8.X^<,NNSG9*VR>!"K]J$2UC4&:3EP^CKU$U\J%$+Q%LAE>FV0A!$TTSMC1!//8U_)QDWM.9[_*W7#XG)+]"``I#^*[0M($D%BMJUDV9&AF-JWSSR?9F&V;<C"M04]U)G?!,^TLM>.)2[IX]0SQC(]F)(I9B)\H_KAQ)/%2J/*#+CVA6CG3[$R%R8VL!/6[5O=B7^\E)5.M=%>U5-YIU)W;;**0*&B]HI*_4IO/*0JZA83,,$+!"'WV+@7:KZ=@B$&!'T3B2VKPE"T+J+H0#%DL?]7EE#<EI!W[I5CCK6Z=4GSO4-7FRO[B6R;W:'+$AE,)WW`.[MN[C=S-"FO2,KXOT1!+95:O&/1YDRV8K[6U<L"G47\1J=:%XSC,M++"VT:'?W^JWS\%N'2\;C#B*4'2;=E/15ZK3>S#FIQ/]8K&[$;-$0>'95M=1BJ=ZNE)PR';LM&J)G=8W8+,X;SX.FQX%:Y_%;CH/\W^(,P87R`Q1?Y"OO`T_A*_P"PU_A-"]BMQ>[I`MOZ5^VH?/;+H^(?/^3O(?4("<Q'+\K>IKC;IIO]:P?&22`P.<%?Y71U%3?N"ON_N#9]C`,\#UWUZC\D@/ZIRPK=Q<^!7'V@W=($!FRV&LT,748K&NP7MLN"SL4-7SX&W#,BWB-5QBMA7UK68;JXFL^2[U3-6L^3[SFSJX14DK(B:XVXG3KV7PV*TE'OU<Z"HX,R-O[(E-AVXU8;:&DX`V`3^Z7\/^K)6[-!5NW"^*4>H+U#L7T_PF>7ZM?4G<!89[><N4(5YX&BS=\<#0"J/@EN`UR1X:^J>`@PK/WAZ?N&S=X9$_!1@O5_I:_#5P.E_``W41L<D,#&<MRI)#/_^_'3R-WI+[+?F\X[;!1@=_8\XMZ0;'<;]_WE%/X/)(<"Q8OT!@!X1[[;;IN#<AT<<XY#AU[>0AUVY7NZF/,-=FFD"/FAG(O?C?/6Y&+XR_&,IGQY;EH6Q@.=K^5"%[N^IK']$0E[A\^PZ[O:*P^(9?T:PY=(Z&U5632<9-KRV,J^LX",0OTR@S/=;GT``TT8Y-J^L4,>]LF&R)1+`LD4]_G_1/^"D>L^W4/L8R]\SWZO,OQ2Z1'!T_'S1Y%=%/=V++49G*:.C]3=?Y,`LPT$`L@H]`<?WD0`KT]Z`53[C(NUU(6H_KN"5'LZWM(F\!46'WA*(@'PQV,D8O.N^_W"^B;7WS<X0`5HOG0%N:[\4U-S_Q>THG-XN;8%X`Q^>N2J*!!!!!!1!!!#=!!!!"!!!!!!!!!!-!!&#2%B1!!!!!!!$!!!!"!!!!!!!!!"F!!!!>8C=9W"A+"3190L(50?8A5HA+Z!B`:?"7>#0]4=$![?@Q'%AT3AA#237`=P!,KA.&N9_IMP"!!7K<)Q=EBS("4H!-BQN'AT```^8+7,E_(LE'FT2%2]Y5W770)=%!'5)':I!!!!!!!!%!!!!"Q!!";Y!!!!)!!!!)6^O;6^-98.U3WZP>WZ0>WZJ<G>-6E.M98.T1WRV=X2F=A!!!6MB!)!!!!!!!1!)!$$`````!!%!!!!!!4]!!!!,!#"!)2N.:8*H:3"V=W6S)'RB?76S=S"P<C"D<WVN;81!)%!B'F.U<X*F)$.S:#"Q98*U?3"5:7VQ<'&U:8-`!!!51$$`````#U:P<'2F=C"/97VF!"Z!5!!#!!%!!B-T=G1A='&S>(EA6'6N='RB>'6T!#-!]1!!!!!!!!!"#%:P<H1O9X2M!"*!-0````]%2G^O>!!!+1$RRF-RPQ!!!!%.17RJ:WZN:7ZU,G.U<!!41!9!#5&M;7>O<76O>!!F!0(B/TM&!!!!!1V'<WZU)&.J?G5O9X2M!!^!"1!%5WF[:1!!%E"1!!-!"!!&!!9%6'6Y>!!!&%!B$V.I<X=A4'&Z:8)A6'&C0Q!51#%05WBP>S"5:8*N;7ZB<(-`!"J!5!!&!!!!!Q!(!!A!#1B4:82U;7ZH=Q!!!1!+!!!!!!!!!"2/33Z-6CZ"<'QO5W^V=G.F4WZM?1!!!"5B!)!!!!!!!1!%!#%!!1!!!1!!!!!!!!!;4&:$<'&T=V"S;8:B>'6%982B6'&C4X*E:8)!!!"*)1#!!!!!!!)!"1!(!!!-!%!!!@````]!!!!"!!%!!!!*!!!!!!!!!!%!!!!#!!!!!Q!!!!1!!!!&!!!!"A!!!!=!!!!)!!!!!!!!!"N-6E.M98.T5(*J>G&U:52B>'&5;7VF=X2B<8!!!!!:)1#!!!!!!!%!"1!(!!!"!!$DV2-K!!!!!!!!!#:-6E.M98.T5(*J>G&U:52B>'&-98.U18"Q<'FF:&2J<76T>'&N=!!!!"EB!)!!!!!!!1!&!!=!!!%!!/06%SI!!!!!!!!!'ER71WRB=X.1=GFW982F2'&U962Z='6%:8.D!!!"23%!A!!!!!!"!!A!-0````]!!1!!!!!"+1!!!!I!)%!B'UVF=G>F)(6T:8)A<'&Z:8*T)'^O)'.P<7VJ>!!A1#%;5X2P=G5A-X*E)("B=H2Z)&2F<8"M982F=T]!!"2!-0````],2G^M:'6S)%ZB<75!(E"1!!)!!1!#%T.S:#"Q98*U?3"5:7VQ<'&U:8-!)Q$R!!!!!!!!!!%)2G^O>#ZD>'Q!%E!Q`````Q2'<WZU!!!J!0('5T'`!!!!!1V"<'FH<GVF<H1O9X2M!".!"A!*17RJ:WZN:7ZU!#5!]?%\/Q5!!!!"$5:P<H1A5WF[:3ZD>'Q!$U!&!!24;8JF!!!31&!!!Q!%!!5!"A25:8BU!!!51#%05WBP>S"5:8*N;7ZB<(-`!"B!5!!%!!!!!Q!(!!A)5W6U>'FO:X-!!!%!#1!!!!!!!!!?4&:$<'&T=V"S;8:B>'6%982B2':M>%2B>'&4;8JF!!!!'3%!A!!!!!!"!!5!!Q!!!1!!!!!!-!!!!!!!!!!;4&:$<'&T=V"S;8:B>'6%982B2':M>%2B>'%!!!%`)1#!!!!!!!I!)%!B'UVF=G>F)(6T:8)A<'&Z:8*T)'^O)'.P<7VJ>!!A1#%;5X2P=G5A-X*E)("B=H2Z)&2F<8"M982F=T]!!"2!-0````],2G^M:'6S)%ZB<75!(E"1!!)!!1!#%T.S:#"Q98*U?3"5:7VQ<'&U:8-!)Q$R!!!!!!!!!!%)2G^O>#ZD>'Q!%E!Q`````Q2'<WZU!!!J!0('5T'`!!!!!1V"<'FH<GVF<H1O9X2M!".!"A!*17RJ:WZN:7ZU!#5!]?%\/Q5!!!!"$5:P<H1A5WF[:3ZD>'Q!$U!&!!24;8JF!!!31&!!!Q!%!!5!"A25:8BU!!!51#%05WBP>S"5:8*N;7ZB<(-`!"B!5!!%!!!!!Q!(!!A)5W6U>'FO:X-!!!%!#1!!!!!!!!!!!!!!!!-!!!!!!!!!!!!!"!!0!"1!!!!%!!!"0Q!!!#A!!!!#!!!%!!!!!#A!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"]1!!!Y>YH)V3WU\<1"!^]358%EC);5OBA1U5++B#6$TS5&?6]N9+V;D0N?*.;GHND?Q.FT\R:XXL(`!"6<]A8^$/LNV16&#\)^H;G4-T:_9MA"@9RAT&K>1(-F7(1S81^9^_UH'U!^D(\&PQ[KO',,Y2]4B.?)HT`#I;=R>W-0N_=O);I%ZF1@S&'W$<>_(I']$]`PI\HIUZG_9]9S+]YFH/:-K'-EFCJ?.LA:)::]>:R#:BJK\9'5]G)F1]@QWM&.S;!SECSH]@*BQ<`CEM/(#^?X*IGF09GB1MZYR@+FWDXQY_SQM#:5G=BI)+@]4MRYVX1$CL%X#FYH3=(YLTI1DTP$6X[''/K*Z$&;OII>Z\+[;Z)C*SR!S74<,YH0KS+&1B8$)M)!,M6@K\GICZYBAN.0Q;\*%9I_Z@W`+$+BR=DN!RH*@12M??2C0KVU=>:H,+V^.WY;&XHXCN%L<ZI'Q.IK\$$YD6U*R<U!1?Y4'?G!5[V(!&K_D;[D)K+3TD+:<O0*8WX1@2P*7^%'%>T^!L28AZ8_0'@[T2!HWK_F-"<?)4]89Q)"K-L%_%N'U2\>_W5.L@HNP)NL&#DQK?`U(JX]I[F,.6P#L;7"/,7+/>\G!8?[;#3T7+["\Z>IFTD4J:R,6#H4W+;1RV_Q8(0<TV!!!!!!!!>Q!"!!)!!Q!&!!!!7!!0"!!!!!!0!.E!V!!!!'%!$Q1!!!!!$Q$:!.1!!!"K!!]%!!!!!!]!W1$5!!!!=Y!!B!#!!!!0!.E!V!!!!(7!!)1!A!!!$Q$:!.1)5W6H<W5A65E)5W6H<W5A65E)5W6H<W5A65E"-!%S!&*45E-.#A!$4&:$1UR#6F=!!#6M!!!%U1!!!#!!!#6-!!!!!!!!!!!!!!!A!!!!.!!!"-1!!!!@4%F#4A!!!!!!!!'%4&:45A!!!!!!!!'95F242Q!!!!!!!!'M1U.46!!!!!!!!!(!4%FW;1!!!!!!!!(51U^/5!!!!!!!!!(I6%UY-!!!!!%!!!(]2%:%5Q!!!!!!!!)E4%FE=Q!!!!!!!!)Y6EF$2!!!!!)!!!*-2U.%31!!!!!!!!+)>G6S=Q!!!!1!!!+=5U.45A!!!!!!!!-!2U.15A!!!!!!!!-535.04A!!!!!!!!-I;7.M/!!!!!!!!!-]1V"$-A!!!!!!!!.14%FG=!!!!!!!!!.E2F"&?!!!!!!!!!.Y2F")9A!!!!!!!!/-2F"421!!!!!!!!/A6F"%5!!!!!!!!!/U4%FC:!!!!!!!!!0)1E2&?!!!!!!!!!0=1E2)9A!!!!!!!!0Q1E2421!!!!!!!!1%6EF55Q!!!!!!!!192&2)5!!!!!!!!!1M466*2!!!!!!!!!2!3%F46!!!!!!!!!256E.55!!!!!!!!!2I2F2"1A!!!!!!!!2]!!!!!0````]!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!=!!!!!!!!!!$`````!!!!!!!!!-!!!!!!!!!!!0````]!!!!!!!!!V!!!!!!!!!!!`````Q!!!!!!!!$=!!!!!!!!!!$`````!!!!!!!!!DA!!!!!!!!!!0````]!!!!!!!!#1!!!!!!!!!!#`````Q!!!!!!!!*I!!!!!!!!!!$`````!!!!!!!!!I!!!!!!!!!!!0````]!!!!!!!!#U!!!!!!!!!!!`````Q!!!!!!!!,A!!!!!!!!!!(`````!!!!!!!!"(!!!!!!!!!!!P````]!!!!!!!!&`!!!!!!!!!!!`````Q!!!!!!!!=9!!!!!!!!!!4`````!!!!!!!!"T!!!!!!!!!!"`````]!!!!!!!!(2!!!!!!!!!!)`````Q!!!!!!!!>5!!!!!!!!!!H`````!!!!!!!!"WA!!!!!!!!!#P````]!!!!!!!!(?!!!!!!!!!!!`````Q!!!!!!!!?-!!!!!!!!!!$`````!!!!!!!!"[1!!!!!!!!!!0````]!!!!!!!!(O!!!!!!!!!!!`````Q!!!!!!!!A]!!!!!!!!!!$`````!!!!!!!!$%!!!!!!!!!!!0````]!!!!!!!!-3!!!!!!!!!!!`````Q!!!!!!!!X%!!!!!!!!!!$`````!!!!!!!!$>A!!!!!!!!!!0````]!!!!!!!!=4!!!!!!!!!!!`````Q!!!!!!!"R5!!!!!!!!!!$`````!!!!!!!!(&Q!!!!!!!!!!0````]!!!!!!!!=<!!!!!!!!!!!`````Q!!!!!!!"RU!!!!!!!!!!$`````!!!!!!!!(/!!!!!!!!!!!0````]!!!!!!!!=[!!!!!!!!!!!`````Q!!!!!!!#+=!!!!!!!!!!$`````!!!!!!!!)K1!!!!!!!!!!0````]!!!!!!!!CL!!!!!!!!!!!`````Q!!!!!!!#,9!!!!!!!!!)$`````!!!!!!!!*.!!!!!!$&.F>(2J<G>T,G.U<!!!!!! -!!!!!2"4:82U;7ZH=SZM>G.M98.T!&"53$!!!!!!!!!!!!!!!!!!$Q!"!!!!!!!!!!!!!!%!"A"1!!!!!1!!!!!!!!!!!!!"$ERB9F:*26=A4W*K:7.U!&"53$!!!!!!!!!!!!!)9)!"!!!!!!!!!!!!!!!!!1!!!!!!!1!!!!!$!"B!)2.498:F)%RB?76S=S"X;82I)&:*!"B!)2.4;'^X)%RB?76S=S"197RF>(2F!&)!]=4T;4E!!!!#%&.F>(2J<G>T,GRW9WRB=X--5W6U>'FO:X-O9X2M!#R!5!!#!!!!!2V$<(6T>'6S)'^G)'.M98.T)("S;8:B>'5A:'&U91!"!!)!!!!#``````````]!!!!!!!!!!!%/4'&C6EF&6S"09GJF9X1!5&2)-!!!!!!!!!!!!!BAA!%!!!!!!!!!!!!!!!!"!!!!!!!#!!!!!!5!'%!B%V.B>G5A4'&Z:8*T)(>J>'AA6EE!'%!B%V.I<X=A4'&Z:8*T)&"B<'6U>'5!$E!Q`````Q64>(FM:1!B!0(%]CMQ!!!!!1F$<WRP=CZD>'Q!$U!(!!6$<WRP=A"7!0(%^+#@!!!!!B"4:82U;7ZH=SZM>G.M98.T$&.F>(2J<G>T,G.U<!!Q1&!!"!!!!!%!!A!$(5.M>8.U:8)A<W9A9WRB=X-A=(*J>G&U:3"E982B!!%!"!!!!!1!!!!!!!!!!@``````````!!!!!!!!!!""X!!!!!%/4'&C6EF&6S"09GJF9X1!5&2)-!!!!!!!!!!!!!BAA!%!!!!!!!!!!!!!!!!"!!!!!!!$!!!!!!E!'%!B%V.B>G5A4'&Z:8*T)(>J>'AA6EE!'%!B%V.I<X=A4'&Z:8*T)&"B<'6U>'5!$E!Q`````Q64>(FM:1!B!0(%]CMQ!!!!!1F$<WRP=CZD>'Q!$U!(!!6$<WRP=A!I!0(%PC/=!!!!!1V$356@2G^O>(-O9X2M!"*!-0````]%2G^O>!!!)U!7!!-%<'6G>!:D:7ZU:8)&=GFH;(1!#5&M;7>O<76O>!!,1!5!"&.J?G5!!":!5!!$!!1!"1!'#62F?(1A5X"F9Q"9!0(%^+$,!!!!!B"4:82U;7ZH=SZM>G.M98.T$&.F>(2J<G>T,G.U<!!S1&!!"1!!!!%!!A!$!!=>1WRV=X2F=C"P:C"D<'&T=S"Q=GFW982F)'2B>'%!!1!)!!!!"1!!!!!!!!!"!!!!!A!!!!0`````!!!!!!!!!!""X!!!!!!!!!-!!!!!!!!"$ERB9F:*26=A4W*K:7.U!&"53$!!!!!!!!!!!!!)9)!"!!!!!!!!!!!!!!!!!1!!!!!!"!!!!!!+!"B!)2.498:F)%RB?76S=S"X;82I)&:*!"B!)2.4;'^X)%RB?76S=S"197RF>(2F!!Z!-0````]&5X2Z<'5!*1$RR0)L-!!!!!%*1W^M<X)O9X2M!".!"Q!)2E=A1W^M<X)!!#5!]=4S+T!!!!!"#5.P<'^S,G.U<!!41!=!#%*()%.P<'^S!!!I!0(%PC/=!!!!!1V$356@2G^O>(-O9X2M!"*!-0````]%2G^O>!!!)U!7!!-%<'6G>!:D:7ZU:8)&=GFH;(1!#5&M;7>O<76O>!!,1!5!"&.J?G5!!":!5!!$!!5!"A!(#62F?(1A5X"F9Q";!0(%^+$O!!!!!B"4:82U;7ZH=SZM>G.M98.T$&.F>(2J<G>T,G.U<!!U1&!!"A!!!!%!!A!$!!1!#"V$<(6T>'6S)'^G)'.M98.T)("S;8:B>'5A:'&U91!"!!E!!!!*!!!!!!!!!!%!!!!#!!!!!`````]!!!!%!!!!"1!!!!9!!!!(!!!!!!!!!!""X!!!1>Q!!!!!!!!$!!!!!1Z-97*73568)%^C;G6D>!"16%AQ!!!!!!!!!!!!#'#!!1!!!!!!!!!!!!!!!!%!!!!!!!5!!!!!#A!91#%45W&W:3"-98FF=H-A>WFU;#"731!91#%45WBP>S"-98FF=H-A5'&M:82U:1!/1$$`````"6.U?7RF!#5!]=4]81-!!!!"#5.P<'^S,G.U<!!41!=!#%:()%.P<'^S!!!F!0(%`&U$!!!!!1F$<WRP=CZD>'Q!%U!(!!B#2S"$<WRP=A!!+!$RR,YDH!!!!!%.1UF&8U:P<H2T,G.U<!!31$$`````"%:P<H1!!#.!&A!$"'RF:H1'9W6O>'6S"8*J:WBU!!F"<'FH<GVF<H1!#U!&!!24;8JF!!!71&!!!Q!&!!9!"QF5:8BU)&.Q:7-!7A$RR0R>"A!!!!)15W6U>'FO:X-O<(:D<'&T=QR4:82U;7ZH=SZD>'Q!.%"1!!9!!!!"!!)!!Q!%!!A>1WRV=X2F=C"P:C"D<'&T=S"Q=GFW982F)'2B>'%!!1!*!!!!"P```````````````````````````````Q!!!!!!!!!!1>Q!!%(=!!!!!!!!!Q!!!!%/4'&C6EF&6S"09GJF9X1!5&2)-!!!!!!!!!!!!!BAA!%!!!!!!!!!!!!!!!!"!!!!!!!'!!!!!!-!'%!B%V.B>G5A4'&Z:8*T)(>J>'AA6EE!'%!B%V.I<X=A4'&Z:8*T)&"B<'6U>'5!5A$RR12.0!!!!!)15W6U>'FO:X-O<(:D<'&T=QR4:82U;7ZH=SZD>'Q!,%"1!!)!!!!"(5.M>8.U:8)A<W9A9WRB=X-A=(*J>G&U:3"E982B!!%!!A!!!!,``````````Q!!!!!!!!!!!1Z-97*73568)%^C;G6D>!"16%AQ!!!!!!!!!!!!#'#!!1!!!!!!!!!!!!!!!!%!!!!!!!=!!!!!!A!91#%45W&W:3"-98FF=H-A>WFU;#"731"1!0(&"%X2!!!!!B"4:82U;7ZH=SZM>G.M98.T$&.F>(2J<G>T,G.U<!!K1&!!!1!!(5.M>8.U:8)A<W9A9WRB=X-A=(*J>G&U:3"E982B!!%!!1!!!!%!!!!!!!!!!!!!!1Z-97*73568)%^C;G6D>!"16%AQ!!!!!!!!!!!!#'#!!1!!!!!!!!!!!!!!!!%!!!!!!!A!!!!!"1!91#%45W&W:3"-98FF=H-A>WFU;#"731!=1#%75W&N:3"'<WRE:8)A5X2S>7.U>8*F0Q!!&%!Q`````QN'<WRE:8)A4G&N:1!?1&!!!A!"!!)4-X*E)("B=H2Z)&2F<8"M982F=Q"3!0(&"7+S!!!!!B"4:82U;7ZH=SZM>G.M98.T$&.F>(2J<G>T,G.U<!!M1&!!!A!!!!->1WRV=X2F=C"P:C"D<'&T=S"Q=GFW982F)'2B>'%!!1!%!!!!!A!!!!$`````!!!!!!!!!!!!!!%/4'&C6EF&6S"09GJF9X1!5&2)-!!!!!!!!!!!!!BAA!%!!!!!!!!!!!!!!!!"!!!!!!!*!!!!!!E!'%!B%V.B>G5A4'&Z:8*T)(>J>'AA6EE!(%!B&F.B<75A2G^M:'6S)&.U=H6D>(6S:4]!!"2!-0````],2G^M:'6S)%ZB<75!(E"1!!)!!1!#%T.S:#"Q98*U?3"5:7VQ<'&U:8-!$E!Q`````Q2'<WZU!!!D1"9!!Q2M:7:U"G.F<H2F=A6S;7>I>!!*17RJ:WZN:7ZU!!N!"1!%5WF[:1!!%E"1!!-!"!!&!!9%6'6Y>!!!6!$RR2$0`1!!!!)15W6U>'FO:X-O<(:D<'&T=QR4:82U;7ZH=SZD>'Q!,E"1!!-!!!!$!!=>1WRV=X2F=C"P:C"D<'&T=S"Q=GFW982F)'2B>'%!!1!)!!!!"1!!!!!!!!!"!!!!!A!!!!0`````!!!!!!!!!!!!!!!!!Q!!!!!!!1Z-97*73568)%^C;G6D>!"16%AQ!!!!!!!!!!!!#'#!!1!!!!!!!!!!!!!!!!%!!!!!!!I!!!!!#A!91#%45W&W:3"-98FF=H-A>WFU;#"731!=1#%75W&N:3"'<WRE:8)A5X2S>7.U>8*F0Q!!&%!Q`````QN'<WRE:8)A4G&N:1!?1&!!!A!"!!)4-X*E)("B=H2Z)&2F<8"M982F=Q!/1$$`````"%:P<H1!!#.!&A!$"'RF:H1'9W6O>'6S"8*J:WBU!!F"<'FH<GVF<H1!#U!&!!24;8JF!!!31&!!!Q!%!!5!"A25:8BU!!!91#%45WBP>S"-98FF=C"197RF>(2F0Q"7!0(&'"^_!!!!!B"4:82U;7ZH=SZM>G.M98.T$&.F>(2J<G>T,G.U<!!Q1&!!"!!!!!-!"Q!)(5.M>8.U:8)A<W9A9WRB=X-A=(*J>G&U:3"E982B!!%!#1!!!!E!!!!!!!!!!1!!!!)!!!!$!!!!"!!!!!5!!!!'!!!!"`````]!!!!!!!!!!!!!!!!$!!!!!!!!!!%/4'&C6EF&6S"09GJF9X1!5&2)-!!!!!!!!!!!!!BAA!%!!!!!!!!!!!!!!!!"!!!!!!!,!!!!!!M!'%!B%V.B>G5A4'&Z:8*T)(>J>'AA6EE!)%!B'F.U<X*F)$.S:#"Q98*U?3"5:7VQ<'&U:8-`!!!51$$`````#U:P<'2F=C"/97VF!"Z!5!!#!!%!!B-T=G1A='&S>(EA6'6N='RB>'6T!#-!]1!!!!!!!!!"#%:P<H1O9X2M!"*!-0````]%2G^O>!!!)U!7!!-%<'6G>!:D:7ZU:8)&=GFH;(1!#5&M;7>O<76O>!!,1!5!"&.J?G5!!$5!]1!!!!!!!!!"&F2F?(2@5X"F9WFG;7.B>'FP<CZD>'Q!&E"1!!-!"!!&!!9%6'6Y>!!!&%!B$V.I<X=A4'&Z:8)A6'&C0Q!51#%05WBP>S"5:8*N;7ZB<(-`!&A!]=6"1F]!!!!#%&.F>(2J<G>T,GRW9WRB=X--5W6U>'FO:X-O9X2M!$*!5!!&!!!!!Q!(!!A!#2V$<(6T>'6S)'^G)'.M98.T)("S;8:B>'5A:'&U91!"!!I!!!!+!!!!!!!!!!%!!!!#!!!!!Q!!!!1!!!!&!!!!"A!!!!=!!!!)`````Q!!!!!!!!!!!!!!!!-!!!!!!!%/4'&C6EF&6S"09GJF9X1!5&2)-!!!!!!!!!!!!!BAA!%!!!!!!!!!!!!!!!!"!!!!!!!-!!!!!!U!'%!B%V.B>G5A4'&Z:8*T)(>J>'AA6EE!)%!B'F.U<X*F)$.S:#"Q98*U?3"5:7VQ<'&U:8-`!!!51$$`````#U:P<'2F=C"/97VF!"Z!5!!#!!%!!B-T=G1A='&S>(EA6'6N='RB>'6T!#-!]1!!!!!!!!!"#%:P<H1O9X2M!"*!-0````]%2G^O>!!!)U!7!!-%<'6G>!:D:7ZU:8)&=GFH;(1!#5&M;7>O<76O>!!,1!5!"&.J?G5!!$5!]1!!!!!!!!!"&F2F?(2@5X"F9WFG;7.B>'FP<CZD>'Q!&E"1!!-!"!!&!!9%6'6Y>!!!&%!B$V.I<X=A4'&Z:8)A6'&C0Q!51#%05WBP>S"5:8*N;7ZB<(-`!"Z!)2B-<W.L)'FD<WYA>'6N='RB>'5A<'&Z:8)!!"J!)22-<W.L)'FD<WYA>'6Y>#"M98FF=A!!8!$RR5&-_!!!!!)15W6U>'FO:X-O<(:D<'&T=QR4:82U;7ZH=SZD>'Q!.E"1!!=!!!!$!!=!#!!*!!I!#RV$<(6T>'6S)'^G)'.M98.T)("S;8:B>'5A:'&U91!"!!Q!!!!-!!!!!!!!!!%!!!!#!!!!!Q!!!!1!!!!&!!!!"A!!!!=!!!!)!!!!#@``````````!!!!!!!!!!!!!!!!!Q!!!!!!!!!!!!%/4'&C6EF&6S"09GJF9X1!5&2)-!!!!!!!!!!!!!BAA!%!!!!!!!!!!!!!!!!"!!!!!!!.!!!!!!M!)%!B'UVF=G>F)(6T:8)A<'&Z:8*T)'^O)'.P<7VJ>!!A1#%;5X2P=G5A-X*E)("B=H2Z)&2F<8"M982F=T]!!"2!-0````],2G^M:'6S)%ZB<75!(E"1!!)!!1!#%T.S:#"Q98*U?3"5:7VQ<'&U:8-!)Q$R!!!!!!!!!!%)2G^O>#ZD>'Q!%E!Q`````Q2'<WZU!!!^!0(&[:T$!!!!!1V"<'FH<GVF<H1O9X2M!#>!&A!$"'RF:H1'9W6O>'6S"8*J:WBU!!F"<'FH<GVF<H1!*1$RR:'Q5Q!!!!%.2G^O>#"4;8JF,G.U<!!01!5!"&.J?G5!!"*!5!!$!!1!"1!'"&2F?(1!!"2!)1^4;'^X)%RB?76S)&2B9D]!&%!B$V.I<X=A6'6S<7FO97RT0Q"9!0(&[:T%!!!!!B"4:82U;7ZH=SZM>G.M98.T$&.F>(2J<G>T,G.U<!!S1&!!"1!!!!-!"Q!)!!E>1WRV=X2F=C"P:C"D<'&T=S"Q=GFW982F)'2B>'%!!1!+!!!!#A!!!!!!!!!"!!!!!A!!!!-!!!!%!!!!"1!!!!9!!!!(!!!!#!!!!!E!!!!!!!!!!!!!!!!$!!!!!!!!!!!"$ERB9F:*26=A4W*K:7.U!&"53$!!!!!!!!!!!!!)9)!"!!!!!!!!!!!!!!!!!1!!!!!!$A!!!!!,!#"!)2N.:8*H:3"V=W6S)'RB?76S=S"P<C"D<WVN;81!)%!B'F.U<X*F)$.S:#"Q98*U?3"5:7VQ<'&U:8-`!!!51$$`````#U:P<'2F=C"/97VF!"Z!5!!#!!%!!B-T=G1A='&S>(EA6'6N='RB>'6T!#-!]1!!!!!!!!!"#%:P<H1O9X2M!"*!-0````]%2G^O>!!!+1$RRF-RPQ!!!!%.17RJ:WZN:7ZU,G.U<!!41!9!#5&M;7>O<76O>!!F!0(B/TM&!!!!!1V'<WZU)&.J?G5O9X2M!!^!"1!%5WF[:1!!%E"1!!-!"!!&!!9%6'6Y>!!!&%!B$V.I<X=A4'&Z:8)A6'&C0Q!51#%05WBP>S"5:8*N;7ZB<(-`!&A!]?*99[M!!!!#%&.F>(2J<G>T,GRW9WRB=X--5W6U>'FO:X-O9X2M!$*!5!!&!!!!!Q!(!!A!#2V$<(6T>'6S)'^G)'.M98.T)("S;8:B>'5A:'&U91!"!!I!!!!+!!!!!!!!!!%!!!!#!!!!!Q!!!!1!!!!&!!!!"A!!!!=!!!!)!!!!#1!!!!!!!!!!!!!!!!-!!!!!!!!!!!%/4'&C6EF&6S"09GJF9X1!5&2)-!!!!!!!!!!!!!E!9(%!!!!!!!!!!!!! +!!!!!2"4:82U;7ZH=SZM>G.M98.T!&"53$!!!!!!!!!!!!!!!!!!%!!"!!!!!!!!!!!!!!%!"A"1!!!!!1!!!!!!!!!!!!!"$ERB9F:*26=A4W*K:7.U!&"53$!!!!!!!!!!!!!)9)!"!!!!!!!!!!!!!!!!!1!!!!!!!1!!!!!$!"B!)2.498:F)%RB?76S=S"X;82I)&:*!"B!)2.4;'^X)%RB?76S=S"197RF>(2F!&)!]=4T;4E!!!!#%&.F>(2J<G>T,GRW9WRB=X--5W6U>'FO:X-O9X2M!#R!5!!#!!!!!2V$<(6T>'6S)'^G)'.M98.T)("S;8:B>'5A:'&U91!"!!)!!!!#``````````]!!!!!!!!!!!%/4'&C6EF&6S"09GJF9X1!5&2)-!!!!!!!!!!!!!BAA!%!!!!!!!!!!!!!!!!"!!!!!!!#!!!!!!5!'%!B%V.B>G5A4'&Z:8*T)(>J>'AA6EE!'%!B%V.I<X=A4'&Z:8*T)&"B<'6U>'5!$E!Q`````Q64>(FM:1!B!0(%]CMQ!!!!!1F$<WRP=CZD>'Q!$U!(!!6$<WRP=A"7!0(%^+#@!!!!!B"4:82U;7ZH=SZM>G.M98.T$&.F>(2J<G>T,G.U<!!Q1&!!"!!!!!%!!A!$(5.M>8.U:8)A<W9A9WRB=X-A=(*J>G&U:3"E982B!!%!"!!!!!1!!!!!!!!!!@``````````!!!!!!!!!!""X!!!!!%/4'&C6EF&6S"09GJF9X1!5&2)-!!!!!!!!!!!!!BAA!%!!!!!!!!!!!!!!!!"!!!!!!!$!!!!!!E!'%!B%V.B>G5A4'&Z:8*T)(>J>'AA6EE!'%!B%V.I<X=A4'&Z:8*T)&"B<'6U>'5!$E!Q`````Q64>(FM:1!B!0(%]CMQ!!!!!1F$<WRP=CZD>'Q!$U!(!!6$<WRP=A!I!0(%PC/=!!!!!1V$356@2G^O>(-O9X2M!"*!-0````]%2G^O>!!!)U!7!!-%<'6G>!:D:7ZU:8)&=GFH;(1!#5&M;7>O<76O>!!,1!5!"&.J?G5!!":!5!!$!!1!"1!'#62F?(1A5X"F9Q"9!0(%^+$,!!!!!B"4:82U;7ZH=SZM>G.M98.T$&.F>(2J<G>T,G.U<!!S1&!!"1!!!!%!!A!$!!=>1WRV=X2F=C"P:C"D<'&T=S"Q=GFW982F)'2B>'%!!1!)!!!!"1!!!!!!!!!"!!!!!A!!!!0`````!!!!!!!!!!""X!!!!!!!!!-!!!!!!!!"$ERB9F:*26=A4W*K:7.U!&"53$!!!!!!!!!!!!!)9)!"!!!!!!!!!!!!!!!!!1!!!!!!"!!!!!!+!"B!)2.498:F)%RB?76S=S"X;82I)&:*!"B!)2.4;'^X)%RB?76S=S"197RF>(2F!!Z!-0````]&5X2Z<'5!*1$RR0)L-!!!!!%*1W^M<X)O9X2M!".!"Q!)2E=A1W^M<X)!!#5!]=4S+T!!!!!"#5.P<'^S,G.U<!!41!=!#%*()%.P<'^S!!!I!0(%PC/=!!!!!1V$356@2G^O>(-O9X2M!"*!-0````]%2G^O>!!!)U!7!!-%<'6G>!:D:7ZU:8)&=GFH;(1!#5&M;7>O<76O>!!,1!5!"&.J?G5!!":!5!!$!!5!"A!(#62F?(1A5X"F9Q";!0(%^+$O!!!!!B"4:82U;7ZH=SZM>G.M98.T$&.F>(2J<G>T,G.U<!!U1&!!"A!!!!%!!A!$!!1!#"V$<(6T>'6S)'^G)'.M98.T)("S;8:B>'5A:'&U91!"!!E!!!!*!!!!!!!!!!%!!!!#!!!!!`````]!!!!%!!!!"1!!!!9!!!!(!!!!!!!!!!""X!!!1>Q!!!!!!!!$!!!!!1Z-97*73568)%^C;G6D>!"16%AQ!!!!!!!!!!!!#'#!!1!!!!!!!!!!!!!!!!%!!!!!!!5!!!!!#A!91#%45W&W:3"-98FF=H-A>WFU;#"731!91#%45WBP>S"-98FF=H-A5'&M:82U:1!/1$$`````"6.U?7RF!#5!]=4]81-!!!!"#5.P<'^S,G.U<!!41!=!#%:()%.P<'^S!!!F!0(%`&U$!!!!!1F$<WRP=CZD>'Q!%U!(!!B#2S"$<WRP=A!!+!$RR,YDH!!!!!%.1UF&8U:P<H2T,G.U<!!31$$`````"%:P<H1!!#.!&A!$"'RF:H1'9W6O>'6S"8*J:WBU!!F"<'FH<GVF<H1!#U!&!!24;8JF!!!71&!!!Q!&!!9!"QF5:8BU)&.Q:7-!7A$RR0R>"A!!!!)15W6U>'FO:X-O<(:D<'&T=QR4:82U;7ZH=SZD>'Q!.%"1!!9!!!!"!!)!!Q!%!!A>1WRV=X2F=C"P:C"D<'&T=S"Q=GFW982F)'2B>'%!!1!*!!!!"P```````````````````````````````Q!!!!!!!!!!1>Q!!%(=!!!!!!!!!Q!!!!%/4'&C6EF&6S"09GJF9X1!5&2)-!!!!!!!!!!!!!BAA!%!!!!!!!!!!!!!!!!"!!!!!!!'!!!!!!-!'%!B%V.B>G5A4'&Z:8*T)(>J>'AA6EE!'%!B%V.I<X=A4'&Z:8*T)&"B<'6U>'5!5A$RR12.0!!!!!)15W6U>'FO:X-O<(:D<'&T=QR4:82U;7ZH=SZD>'Q!,%"1!!)!!!!"(5.M>8.U:8)A<W9A9WRB=X-A=(*J>G&U:3"E982B!!%!!A!!!!,``````````Q!!!!!!!!!!!1Z-97*73568)%^C;G6D>!"16%AQ!!!!!!!!!!!!#'#!!1!!!!!!!!!!!!!!!!%!!!!!!!=!!!!!!A!91#%45W&W:3"-98FF=H-A>WFU;#"731"1!0(&"%X2!!!!!B"4:82U;7ZH=SZM>G.M98.T$&.F>(2J<G>T,G.U<!!K1&!!!1!!(5.M>8.U:8)A<W9A9WRB=X-A=(*J>G&U:3"E982B!!%!!1!!!!%!!!!!!!!!!!!!!1Z-97*73568)%^C;G6D>!"16%AQ!!!!!!!!!!!!#'#!!1!!!!!!!!!!!!!!!!%!!!!!!!A!!!!!"1!91#%45W&W:3"-98FF=H-A>WFU;#"731!=1#%75W&N:3"'<WRE:8)A5X2S>7.U>8*F0Q!!&%!Q`````QN'<WRE:8)A4G&N:1!?1&!!!A!"!!)4-X*E)("B=H2Z)&2F<8"M982F=Q"3!0(&"7+S!!!!!B"4:82U;7ZH=SZM>G.M98.T$&.F>(2J<G>T,G.U<!!M1&!!!A!!!!->1WRV=X2F=C"P:C"D<'&T=S"Q=GFW982F)'2B>'%!!1!%!!!!!A!!!!$`````!!!!!!!!!!!!!!%/4'&C6EF&6S"09GJF9X1!5&2)-!!!!!!!!!!!!!BAA!%!!!!!!!!!!!!!!!!"!!!!!!!*!!!!!!E!'%!B%V.B>G5A4'&Z:8*T)(>J>'AA6EE!(%!B&F.B<75A2G^M:'6S)&.U=H6D>(6S:4]!!"2!-0````],2G^M:'6S)%ZB<75!(E"1!!)!!1!#%T.S:#"Q98*U?3"5:7VQ<'&U:8-!$E!Q`````Q2'<WZU!!!D1"9!!Q2M:7:U"G.F<H2F=A6S;7>I>!!*17RJ:WZN:7ZU!!N!"1!%5WF[:1!!%E"1!!-!"!!&!!9%6'6Y>!!!6!$RR2$0`1!!!!)15W6U>'FO:X-O<(:D<'&T=QR4:82U;7ZH=SZD>'Q!,E"1!!-!!!!$!!=>1WRV=X2F=C"P:C"D<'&T=S"Q=GFW982F)'2B>'%!!1!)!!!!"1!!!!!!!!!"!!!!!A!!!!0`````!!!!!!!!!!!!!!!!!Q!!!!!!!1Z-97*73568)%^C;G6D>!"16%AQ!!!!!!!!!!!!#'#!!1!!!!!!!!!!!!!!!!%!!!!!!!I!!!!!#A!91#%45W&W:3"-98FF=H-A>WFU;#"731!=1#%75W&N:3"'<WRE:8)A5X2S>7.U>8*F0Q!!&%!Q`````QN'<WRE:8)A4G&N:1!?1&!!!A!"!!)4-X*E)("B=H2Z)&2F<8"M982F=Q!/1$$`````"%:P<H1!!#.!&A!$"'RF:H1'9W6O>'6S"8*J:WBU!!F"<'FH<GVF<H1!#U!&!!24;8JF!!!31&!!!Q!%!!5!"A25:8BU!!!91#%45WBP>S"-98FF=C"197RF>(2F0Q"7!0(&'"^_!!!!!B"4:82U;7ZH=SZM>G.M98.T$&.F>(2J<G>T,G.U<!!Q1&!!"!!!!!-!"Q!)(5.M>8.U:8)A<W9A9WRB=X-A=(*J>G&U:3"E982B!!%!#1!!!!E!!!!!!!!!!1!!!!)!!!!$!!!!"!!!!!5!!!!'!!!!"`````]!!!!!!!!!!!!!!!!$!!!!!!!!!!%/4'&C6EF&6S"09GJF9X1!5&2)-!!!!!!!!!!!!!BAA!%!!!!!!!!!!!!!!!!"!!!!!!!,!!!!!!M!'%!B%V.B>G5A4'&Z:8*T)(>J>'AA6EE!)%!B'F.U<X*F)$.S:#"Q98*U?3"5:7VQ<'&U:8-`!!!51$$`````#U:P<'2F=C"/97VF!"Z!5!!#!!%!!B-T=G1A='&S>(EA6'6N='RB>'6T!#-!]1!!!!!!!!!"#%:P<H1O9X2M!"*!-0````]%2G^O>!!!)U!7!!-%<'6G>!:D:7ZU:8)&=GFH;(1!#5&M;7>O<76O>!!,1!5!"&.J?G5!!$5!]1!!!!!!!!!"&F2F?(2@5X"F9WFG;7.B>'FP<CZD>'Q!&E"1!!-!"!!&!!9%6'6Y>!!!&%!B$V.I<X=A4'&Z:8)A6'&C0Q!51#%05WBP>S"5:8*N;7ZB<(-`!&A!]=6"1F]!!!!#%&.F>(2J<G>T,GRW9WRB=X--5W6U>'FO:X-O9X2M!$*!5!!&!!!!!Q!(!!A!#2V$<(6T>'6S)'^G)'.M98.T)("S;8:B>'5A:'&U91!"!!I!!!!+!!!!!!!!!!%!!!!#!!!!!Q!!!!1!!!!&!!!!"A!!!!=!!!!)`````Q!!!!!!!!!!!!!!!!-!!!!!!!%/4'&C6EF&6S"09GJF9X1!5&2)-!!!!!!!!!!!!!BAA!%!!!!!!!!!!!!!!!!"!!!!!!!-!!!!!!U!'%!B%V.B>G5A4'&Z:8*T)(>J>'AA6EE!)%!B'F.U<X*F)$.S:#"Q98*U?3"5:7VQ<'&U:8-`!!!51$$`````#U:P<'2F=C"/97VF!"Z!5!!#!!%!!B-T=G1A='&S>(EA6'6N='RB>'6T!#-!]1!!!!!!!!!"#%:P<H1O9X2M!"*!-0````]%2G^O>!!!)U!7!!-%<'6G>!:D:7ZU:8)&=GFH;(1!#5&M;7>O<76O>!!,1!5!"&.J?G5!!$5!]1!!!!!!!!!"&F2F?(2@5X"F9WFG;7.B>'FP<CZD>'Q!&E"1!!-!"!!&!!9%6'6Y>!!!&%!B$V.I<X=A4'&Z:8)A6'&C0Q!51#%05WBP>S"5:8*N;7ZB<(-`!"Z!)2B-<W.L)'FD<WYA>'6N='RB>'5A<'&Z:8)!!"J!)22-<W.L)'FD<WYA>'6Y>#"M98FF=A!!8!$RR5&-_!!!!!)15W6U>'FO:X-O<(:D<'&T=QR4:82U;7ZH=SZD>'Q!.E"1!!=!!!!$!!=!#!!*!!I!#RV$<(6T>'6S)'^G)'.M98.T)("S;8:B>'5A:'&U91!"!!Q!!!!-!!!!!!!!!!%!!!!#!!!!!Q!!!!1!!!!&!!!!"A!!!!=!!!!)!!!!#@``````````!!!!!!!!!!!!!!!!!Q!!!!!!!!!!!!%/4'&C6EF&6S"09GJF9X1!5&2)-!!!!!!!!!!!!!BAA!%!!!!!!!!!!!!!!!!"!!!!!!!.!!!!!!M!)%!B'UVF=G>F)(6T:8)A<'&Z:8*T)'^O)'.P<7VJ>!!A1#%;5X2P=G5A-X*E)("B=H2Z)&2F<8"M982F=T]!!"2!-0````],2G^M:'6S)%ZB<75!(E"1!!)!!1!#%T.S:#"Q98*U?3"5:7VQ<'&U:8-!)Q$R!!!!!!!!!!%)2G^O>#ZD>'Q!%E!Q`````Q2'<WZU!!!^!0(&[:T$!!!!!1V"<'FH<GVF<H1O9X2M!#>!&A!$"'RF:H1'9W6O>'6S"8*J:WBU!!F"<'FH<GVF<H1!*1$RR:'Q5Q!!!!%.2G^O>#"4;8JF,G.U<!!01!5!"&.J?G5!!"*!5!!$!!1!"1!'"&2F?(1!!"2!)1^4;'^X)%RB?76S)&2B9D]!&%!B$V.I<X=A6'6S<7FO97RT0Q"9!0(&[:T%!!!!!B"4:82U;7ZH=SZM>G.M98.T$&.F>(2J<G>T,G.U<!!S1&!!"1!!!!-!"Q!)!!E>1WRV=X2F=C"P:C"D<'&T=S"Q=GFW982F)'2B>'%!!1!+!!!!#A!!!!!!!!!"!!!!!A!!!!-!!!!%!!!!"1!!!!9!!!!(!!!!#!!!!!E!!!!!!!!!!!!!!!!$!!!!!!!!!!!"$ERB9F:*26=A4W*K:7.U!&"53$!!!!!!!!!!!!!)9)!"!!!!!!!!!!!!!!!!!1!!!!!!$A!!!!!,!#"!)2N.:8*H:3"V=W6S)'RB?76S=S"P<C"D<WVN;81!)%!B'F.U<X*F)$.S:#"Q98*U?3"5:7VQ<'&U:8-`!!!51$$`````#U:P<'2F=C"/97VF!"Z!5!!#!!%!!B-T=G1A='&S>(EA6'6N='RB>'6T!#-!]1!!!!!!!!!"#%:P<H1O9X2M!"*!-0````]%2G^O>!!!+1$RRF-RPQ!!!!%.17RJ:WZN:7ZU,G.U<!!41!9!#5&M;7>O<76O>!!F!0(B/TM&!!!!!1V'<WZU)&.J?G5O9X2M!!^!"1!%5WF[:1!!%E"1!!-!"!!&!!9%6'6Y>!!!&%!B$V.I<X=A4'&Z:8)A6'&C0Q!51#%05WBP>S"5:8*N;7ZB<(-`!&A!]?*99[M!!!!#%&.F>(2J<G>T,GRW9WRB=X--5W6U>'FO:X-O9X2M!$*!5!!&!!!!!Q!(!!A!#2V$<(6T>'6S)'^G)'.M98.T)("S;8:B>'5A:'&U91!"!!I!!!!+!!!!!!!!!!%!!!!#!!!!!Q!!!!1!!!!&!!!!"A!!!!=!!!!)!!!!#1!!!!!!!!!!!!!!!!-!!!!!!!!!!!%/4'&C6EF&6S"09GJF9X1!5&2)-!!!!!!!!!!!!!E!9(%!!!!!!!!!!!!!!!!"!!!!!!!0!!!!!!I!)%!B'UVF=G>F)(6T:8)A<'&Z:8*T)'^O)'.P<7VJ>!!A1#%;5X2P=G5A-X*E)("B=H2Z)&2F<8"M982F=T]!!"2!-0````],2G^M:'6S)%ZB<75!(E"1!!)!!1!#%T.S:#"Q98*U?3"5:7VQ<'&U:8-!)Q$R!!!!!!!!!!%)2G^O>#ZD>'Q!%E!Q`````Q2'<WZU!!!J!0('5T'`!!!!!1V"<'FH<GVF<H1O9X2M!".!"A!*17RJ:WZN:7ZU!#5!]?%\/Q5!!!!"$5:P<H1A5WF[:3ZD>'Q!$U!&!!24;8JF!!!31&!!!Q!%!!5!"A25:8BU!!!51#%05WBP>S"5:8*N;7ZB<(-`!&9!]?06%SI!!!!#%&.F>(2J<G>T,GRW9WRB=X--5W6U>'FO:X-O9X2M!$"!5!!%!!!!!Q!(!!A>1WRV=X2F=C"P:C"D<'&T=S"Q=GFW982F)'2B>'%!!1!*!!!!#1!!!!!!!!!"!!!!!A!!!!-!!!!%!!!!"1!!!!9!!!!(!!!!#1!!!!!!!!!!!!!!!!-!!!!!!!!"$ERB9F:*26=A4W*K:7.U!&"53$!!!!!!!!!!!!!B!)!!!!!!!!!!!!!!!! false @@ -21,7 +22,7 @@ 2 - + )1#!!!!!!!)!"1!&!!!-!%!!!@````]!!!!"!!%!!!$@!!!!#1!-1#%'=X2B>(6T!!!,1!-!"'.P:'5!!""!-0````]'=W^V=G.F!!!71&!!!Q!!!!%!!AFF=H*P=C"P>81!"!!!!#"!5!!$!!!!!1!#%W6S=G^S)'FO)#BO<S"F=H*P=CE!#!!Q`````Q!;1(!!#!!"!!9!1A!!#V2S:75A5G6G<H6N!&1!]!!-!!-!"!!%!!1!"!!%!!1!"!!&!!1!"!!(!Q!!?!!!$1A!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+!!!!!!!!!!!!!!!+!!!!!!%!#!!!!!! -1 0 @@ -32,7 +33,7 @@ - + )1#!!!!!!!)!"1!&!!!-!%!!!@````]!!!!"!!%!!!&-!!!!#A!-1#%'=X2B>(6T!!!,1!-!"'.P:'5!!""!-0````]'=W^V=G.F!!!71&!!!Q!!!!%!!AFF=H*P=C"P>81!"!!!!#"!)2N.:8*H:3"V=W6S)'RB?76S=S"P<C"D<WVN;81!-E"Q!"Y!!")15W6U>'FO:X-O<(:D<'&T=Q!!&&.F>(2J<G>T,GRW9WRB=X-A<X6U!!!A1&!!!Q!!!!%!!B.F=H*P=C"J<C!I<G]A:8*S<X)J!$"!=!!?!!!3%&.F>(2J<G>T,GRW9WRB=X-!!".4:82U;7ZH=SZM>G.M98.T)'FO!'%!]!!-!!-!"!!&!!9!"!!%!!1!"!!(!!1!"!!)!A!!?!!!$1A!!!!!!!!*!!!!$1M!!!!!!!!!!!!!!!!!!!!!!!!)!!!!!!!!!!!!!!!1!!!.!!!!$!!!!!!!!!!!!!!"!!E!!!!! 1 0 @@ -41,7 +42,7 @@ 1 1342710272 - + )1#!!!!!!!)!"1!&!!!-!%!!!@````]!!!!"!!%!!!&N!!!!$!!-1#%'=X2B>(6T!!!,1!-!"'.P:'5!!""!-0````]'=W^V=G.F!!!71&!!!Q!!!!%!!AFF=H*P=C"P>81!"!!!!"R!)2:497VF)%:P<'2F=C"4>(*V9X2V=G5`!!!51$$`````#U:P<'2F=C"/97VF!"Z!5!!#!!5!"B-T=G1A='&S>(EA6'6N='RB>'6T!$*!=!!?!!!3%&.F>(2J<G>T,GRW9WRB=X-!!"24:82U;7ZH=SZM>G.M98.T)'^V>!!!)%"1!!-!!!!"!!)4:8*S<X)A;7YA+'ZP)'6S=G^S+1!Q1(!!(A!!%B"4:82U;7ZH=SZM>G.M98.T!!!45W6U>'FO:X-O<(:D<'&T=S"J<A"5!0!!$!!$!!1!"Q!)!!1!"!!%!!1!#1!%!!1!#A)!!(A!!!U)!!!!!!!!#1!!!)U,!!!!!!!!!!!!!!!!!!!!!!!!#!!!!!!!!!!!!!!!E!!!!!!"!!M!!!!! 1 0 @@ -50,7 +51,7 @@ 1 1074278912 - + )1#!!!!!!!)!"1!&!!!-!%!!!@````]!!!!"!!%!!!'C!!!!$1!-1#%'=X2B>(6T!!!,1!-!"'.P:'5!!""!-0````]'=W^V=G.F!!!71&!!!Q!!!!%!!AFF=H*P=C"P>81!"!!!!#-!]1!!!!!!!!!"#%:P<H1O9X2M!"*!-0````]%2G^O>!!!+1$RRF-RPQ!!!!%.17RJ:WZN:7ZU,G.U<!!41!9!#5&M;7>O<76O>!!F!0(B/TM&!!!!!1V'<WZU)&.J?G5O9X2M!!^!"1!%5WF[:1!!%E"1!!-!"1!'!!=%6'6Y>!!!-E"Q!"Y!!")15W6U>'FO:X-O<(:D<'&T=Q!!&&.F>(2J<G>T,GRW9WRB=X-A<X6U!!!A1&!!!Q!!!!%!!B.F=H*P=C"J<C!I<G]A:8*S<X)J!$"!=!!?!!!3%&.F>(2J<G>T,GRW9WRB=X-!!".4:82U;7ZH=SZM>G.M98.T)'FO!&1!]!!-!!-!"!!)!!E!"!!%!!1!"!!+!!1!"!!,!A!!?!!!$1A!!!!!!!!*!!!!D1M!!!!!!!!!!!!!!!!!!!!!!!!)!!!!!!!!!!!!!!#1!!!!!!%!$!!!!!! -1 0 @@ -59,8 +60,8 @@ 1 1352671744 - - )1#!!!!!!!)!"1!&!!!-!%!!!@````]!!!!"!!%!!!&(!!!!#Q!-1#%'=X2B>(6T!!!,1!-!"'.P:'5!!""!-0````]'=W^V=G.F!!!71&!!!Q!!!!%!!AFF=H*P=C"P>81!&%!B$V.I<X=A6'6S<7FO97RT0Q!51#%/5WBP>S"-98FF=F2B9D]!!$*!=!!?!!!3%&.F>(2J<G>T,GRW9WRB=X-!!"24:82U;7ZH=SZM>G.M98.T)'^V>!!!"!!!!#"!5!!$!!!!!1!#%W6S=G^S)'FO)#BO<S"F=H*P=CE!-%"Q!"Y!!")15W6U>'FO:X-O<(:D<'&T=Q!!%V.F>(2J<G>T,GRW9WRB=X-A;7Y!6!$Q!!Q!!Q!%!!5!"A!(!!=!"Q!(!!A!"Q!(!!E#!!"Y!!!.#!!!#1!!!!E!!!#.#Q!!!!!!!!!!!!!!!!!!!!!!!!A!!!!!!!!!!!!!!*!!!!!!!1!+!!!!!! + + )1#!!!!!!!)!"1!&!!!-!%!!!@````]!!!!"!!%!!!%J!!!!#A!-1#%'=X2B>(6T!!!,1!-!"'.P:'5!!""!-0````]'=W^V=G.F!!!71&!!!Q!!!!%!!AFF=H*P=C"P>81!&%!B$V.I<X=A6'6S<7FO97RT0Q!%!!!!-E"Q!"Y!!")15W6U>'FO:X-O<(:D<'&T=Q!!&&.F>(2J<G>T,GRW9WRB=X-A<X6U!!!71&!!!Q!!!!%!!ABF=H*P=C"J<A!!-%"Q!"Y!!")15W6U>'FO:X-O<(:D<'&T=Q!!%V.F>(2J<G>T,GRW9WRB=X-A;7Y!6!$Q!!Q!!Q!%!!5!"A!&!!5!"1!&!!=!"1!&!!A#!!"Y!!!.#!!!#1!!!!!!!!#.#Q!!!!!!!!!!!!!!!!!!!!!!!!A!!!!!!!!!!!!!!*!!!!!!!1!*!!!!!! -1 0 false @@ -70,7 +71,7 @@ - + )1#!!!!!!!)!"1!&!!!-!%!!!@````]!!!!"!!%!!!&N!!!!$1!-1#%'=X2B>(6T!!!,1!-!"'.P:'5!!""!-0````]'=W^V=G.F!!!71&!!!Q!!!!%!!AFF=H*P=C"P>81!"!!!!$*!=!!?!!!3%&.F>(2J<G>T,GRW9WRB=X-!!"24:82U;7ZH=SZM>G.M98.T)'^V>!!!)%"1!!-!!!!"!!)4:8*S<X)A;7YA+'ZP)'6S=G^S+1!/1$$`````"%:P<H1!!#.!&A!$"'RF:H1'9W6O>'6S"8*J:WBU!!F"<'FH<GVF<H1!#U!&!!24;8JF!!!31&!!!Q!(!!A!#125:8BU!!!Q1(!!(A!!%B"4:82U;7ZH=SZM>G.M98.T!!!45W6U>'FO:X-O<(:D<'&T=S"J<A"5!0!!$!!$!!1!"!!&!!1!"!!%!!1!"A!%!!I!#Q)!!(A!!!U)!!!!!!!!!!!!!)U,!!!!!!!!!!!!!!!!!!!!!!!!#!!!!!!!!!!)!!!!EA!!!!!"!!Q!!!!! -1 0 @@ -79,7 +80,7 @@ 1 1107821056 - + )1#!!!!!!!)!"1!&!!!-!%!!!@````]!!!!"!!%!!!%`!!!!#A!-1#%'=X2B>(6T!!!,1!-!"'.P:'5!!""!-0````]'=W^V=G.F!!!71&!!!Q!!!!%!!AFF=H*P=C"P>81!"!!!!$*!=!!?!!!3%&.F>(2J<G>T,GRW9WRB=X-!!"24:82U;7ZH=SZM>G.M98.T)'^V>!!!)%"1!!-!!!!"!!)4:8*S<X)A;7YA+'ZP)'6S=G^S+1!A1#%<476S:W5A>8.F=C"M98FF=H-A<WYA9W^N<7FU!$"!=!!?!!!3%&.F>(2J<G>T,GRW9WRB=X-!!".4:82U;7ZH=SZM>G.M98.T)'FO!&1!]!!-!!-!"!!%!!5!"!!%!!1!"!!'!!1!"Q!)!A!!?!!!$1A!!!!!!!!!!!!!D1M!!!!!!!!!!!!!!!!!!!!!!!!)!!!!!!!!!!A!!!#3!!!!!!%!#1!!!!! -1 0 @@ -88,8 +89,8 @@ 1 1342710272 - - )1#!!!!!!!)!"1!&!!!-!%!!!@````]!!!!"!!%!!!&(!!!!#Q!-1#%'=X2B>(6T!!!,1!-!"'.P:'5!!""!-0````]'=W^V=G.F!!!71&!!!Q!!!!%!!AFF=H*P=C"P>81!"!!!!$*!=!!?!!!3%&.F>(2J<G>T,GRW9WRB=X-!!"24:82U;7ZH=SZM>G.M98.T)'^V>!!!)%"1!!-!!!!"!!)4:8*S<X)A;7YA+'ZP)'6S=G^S+1!51#%05WBP>S"5:8*N;7ZB<(-`!"2!)1^4;'^X)%RB?76S)&2B9D]!-%"Q!"Y!!")15W6U>'FO:X-O<(:D<'&T=Q!!%V.F>(2J<G>T,GRW9WRB=X-A;7Y!6!$Q!!Q!!Q!%!!1!"1!%!!1!"!!%!!9!"Q!)!!E#!!"Y!!!.#!!!!!!!!!!!!!#.#Q!!!!!!!!!!!!!!!!!!!!!!!!A!!!!)!!!!#!!!!*)!!!!!!1!+!!!!!! + + )1#!!!!!!!)!"1!&!!!-!%!!!@````]!!!!"!!%!!!%J!!!!#A!-1#%'=X2B>(6T!!!,1!-!"'.P:'5!!""!-0````]'=W^V=G.F!!!71&!!!Q!!!!%!!AFF=H*P=C"P>81!"!!!!$*!=!!?!!!3%&.F>(2J<G>T,GRW9WRB=X-!!"24:82U;7ZH=SZM>G.M98.T)'^V>!!!&E"1!!-!!!!"!!)):8*S<X)A;7Y!!"2!)1^4;'^X)&2F=GVJ<G&M=T]!-%"Q!"Y!!")15W6U>'FO:X-O<(:D<'&T=Q!!%V.F>(2J<G>T,GRW9WRB=X-A;7Y!6!$Q!!Q!!Q!%!!1!"1!%!!1!"!!%!!9!"Q!%!!A#!!"Y!!!.#!!!!!!!!!!!!!#.#Q!!!!!!!!!!!!!!!!!!!!!!!!A!!!!)!!!!!!!!!*)!!!!!!1!*!!!!!! -1 0 false @@ -97,7 +98,7 @@ 1 1342710272 - + )1#!!!!!!!)!"1!&!!!-!%!!!@````]!!!!"!!%!!!&N!!!!$!!-1#%'=X2B>(6T!!!,1!-!"'.P:'5!!""!-0````]'=W^V=G.F!!!71&!!!Q!!!!%!!AFF=H*P=C"P>81!"!!!!$*!=!!?!!!3%&.F>(2J<G>T,GRW9WRB=X-!!"24:82U;7ZH=SZM>G.M98.T)'^V>!!!)%"1!!-!!!!"!!)4:8*S<X)A;7YA+'ZP)'6S=G^S+1!=1#%75W&N:3"'<WRE:8)A5X2S>7.U>8*F0Q!!&%!Q`````QN'<WRE:8)A4G&N:1!?1&!!!A!(!!A4-X*E)("B=H2Z)&2F<8"M982F=Q!Q1(!!(A!!%B"4:82U;7ZH=SZM>G.M98.T!!!45W6U>'FO:X-O<(:D<'&T=S"J<A"5!0!!$!!$!!1!"!!&!!1!"!!%!!1!"A!%!!E!#A)!!(A!!!U)!!!!!!!!!!!!!)U,!!!!!!!!!!!!!!!!!!!!!!!!#!!!!!!!!!!+!!!!EA!!!!!"!!M!!!!! -1 0 @@ -107,13 +108,13 @@ 1117782528 - - )1#!!!!!!!)!"1!&!!!-!%!!!@````]!!!!"!!%!!"4D!!!!IA!-1#%'=X2B>(6T!!!,1!-!"'.P:'5!!""!-0````]'=W^V=G.F!!!71&!!!Q!!!!%!!AFF=H*P=C"P>81!"!!!!"Z!=!!?!!!/$%&O>(-O<(:D<'&T=Q!!"%&O>(-!!#2!=!!?!!!5%E:B;W6E18*S98EO<(:D<'&T=Q!!"5RB?76S!#B!=!!?!!!5%E:B;W6E18*S98EO<(:D<'&T=Q!!#62F<8"M982F=Q!?1(!!(A!!$AR*9W^O,GRW9WRB=X-!!!2*9W^O!!!?1(!!(A!!$QV(<(FQ;#ZM>G.M98.T!!6(<(FQ;!!G1(!!(A!!%B"4:82U;7ZH=SZM>G.M98.T!!!)5W6U>'FO:X-!!#2!=!!?!!!6%V2P<WRT)&"B;7ZU,GRW9WRB=X-!"62P<WRT!$5!]=8'*4Y!!!!"$EF&)%.M98.T:8-O9X2M!"Z!5!!(!!5!"A!(!!A!#1!+!!M&1WRB=X-!&E"Q!!A!!!!)!!!*172E)%RB?76S!"J!=!!)!!!!#!!!$&*F<7^W:3"-98FF=A!!'%"Q!!A!!!!<!!!,4'FO:3!U)(2F?(1!&E"!!!(`````!!]*4'FO:3"5:8BU!#=!]1!!!!!!!!!"#%:P<H1O9X2M!":!-0````])2%Z-8U:P<H1!!#E!]=8JH--!!!!"$5&M;7>O<76O>#ZD>'Q!%U!'!!F"<'FH<GVF<H1!*1$RR:'Q5Q!!!!%.2G^O>#"4;8JF,G.U<!!01!5!"&.J?G5!!!Q!5!!$!"%!%A!4!"Z!=!!)!!%!&!!?!!!/1G^E?3"5:8BU)&.Q:7-!!":!=!!)!!!!(1!!#%2/4&^'<WZU!!!=1(!!#!!!!"M!!!ZH<(FQ;#"Q982I)(.U=A!!)%"Q!!A!!!!<!!!3>'6N='RB>'6T)("B>'AA=X2S!!!%!#%!'%"Q!!A!!1!:!!A!!!B"=H*P>S"6=!!!'E"Q!!A!!1!:!!A!!!J"=H*P>S"%<X>O!!!71(!!#!!!!!)!!!F*23"733"3:79!#!!Q`````Q!;1(!!#!!"!"U!1A!!#U>M?8"I=S"U=G6F!"Z!=!!)!!%!(1"#!!!/6'6N='RB>'6T)(2S:75!!"*!-`````]*4'&Z:8**9W^O!"*!-0````]*4'&Z:8*/97VF!!V!"1!(4X"B9WFU?1!11#%,6GFT;7*J<'FU?4]!$A"1!!1!)!!B!#)!)Q!?1(!!#!!"!#1!(A!!$URB?76S)%FD<WYA6'6Y>!!?1(!!#!!"!#1!(A!!$ERB?76S)&2F<8"M982F!!!71(!!#!!!!!]!!!F$<'FQ9G^B=G1!%5!$!!JJ<7&H:3"U?8"F!!!21!-!#WFN97>F)'2F=(2I!!5!"1!!%E"!!!(`````!#I&;7VB:W5!%E"!!!(`````!#I%<7&T;Q!!"1!(!!!51%!!!@````]!,1:D<WRP=H-!!!N!!A!%<'6G>!!!#5!#!!.U<X!!#U!#!!6S;7>I>!!.1!)!"G*P>(2P<1!!'%"1!!1!,Q!Q!$%!-AF3:7.U97ZH<'5!%A"1!!9!+!!J!#M!,!!O!$-!'E"Q!!A!!1!U!"Y!!!J#6S"J9W^O)'FO!!!=1(!!#!!"!$1!(A!!$5.P<'^S)'FD<WYA;7Y!$U!$!!F49X*P<'RC98)!,!$R!!!!!!!!!!%*4'&Z:8)O9X2M!"J!5!!%!#!!)1!C!#-(4'&Z:8)A-1!M!0%!!!!!!!!!!1F-98FF=CZD>'Q!'E"1!!1!)!!B!#)!)Q>-98FF=C!S!#Q!]1!!!!!!!!!"#5RB?76S,G.U<!!;1&!!"!!A!#%!)A!D"URB?76S)$-!,!$R!!!!!!!!!!%*4'&Z:8)O9X2M!"J!5!!%!#!!)1!C!#-(4'&Z:8)A.!!1!&!!"1!X!$A!/1![!$M!'E"Q!!A!!1!]!"Y!!!N-98FF=C"$<(6T>!!51$$`````#URJ<G5A-3"U:8BU!"2!-0````],4'FO:3!S)(2F?(1!&%!Q`````QN-;7ZF)$-A>'6Y>!!51$$`````#URJ<G5A.#"U:8BU!".!"Q!-4'FO:3!R)'.P<'^S!!!41!=!$%RJ<G5A-C"D<WRP=A!!%U!(!!R-;7ZF)$-A9W^M<X)!!".!"Q!-4'FO:3!U)'.P<'^S!!!=1&!!!Q!2!")!%QZ#<W2Z)&2F?(1A5X"F9Q!!(%!B&E.F<H2F=C"U:8BU)(:F=H2J9W&M<(E!!"2!)1^$98"J>'&M;8JF)&2F?(1!(!"1!!M!0A!`!%!!11"#!%-!2!"&!%9!2Q")!"B!=!!)!!%!31!?!!!*1G^E?3"5:8BU!!Z!-P````]%5'&U;!!!$E!T`````Q6*<7&H:1!11$$`````"E:J<(2F=A!!%E!Q`````QB';7RF4G&N:1!!.A$R!!!!!!!!!!%,2X*B='BJ9SZD>'Q!)E"1!!5!-Q",!%Q!41"/$6"B>'AA*C"*9W^O)$%!.A$R!!!!!!!!!!%,2X*B='BJ9SZD>'Q!)E"1!!5!-Q",!%Q!41"/$6"B>'AA*C"*9W^O)$)!.A$R!!!!!!!!!!%,2X*B='BJ9SZD>'Q!)E"1!!5!-Q",!%Q!41"/$6"B>'AA*C"*9W^O)$-!.A$R!!!!!!!!!!%,2X*B='BJ9SZD>'Q!)E"1!!5!-Q",!%Q!41"/$6"B>'AA*C"*9W^O)$1!.A$R!!!!!!!!!!%,2X*B='BJ9SZD>'Q!)E"1!!5!-Q",!%Q!41"/$6"B>'AA*C"*9W^O)$5!.A$R!!!!!!!!!!%,2X*B='BJ9SZD>'Q!)E"1!!5!-Q",!%Q!41"/$6"B>'AA*C"*9W^O)$9!.A$R!!!!!!!!!!%,2X*B='BJ9SZD>'Q!)E"1!!5!-Q",!%Q!41"/$6"B>'AA*C"*9W^O)$=!.A$R!!!!!!!!!!%,2X*B='BJ9SZD>'Q!)E"1!!5!-Q",!%Q!41"/$6"B>'AA*C"*9W^O)$A!.A$R!!!!!!!!!!%,2X*B='BJ9SZD>'Q!)E"1!!5!-Q",!%Q!41"/$6"B>'AA*C"*9W^O)$E!/!$R!!!!!!!!!!%,2X*B='BJ9SZD>'Q!*%"1!!5!-Q",!%Q!41"/$F"B>'AA*C"*9W^O)$%Q!!!Y!0%!!!!!!!!!!1N(=G&Q;'FD,G.U<!!E1&!!"1!T!%M!4!".!%Y/5'&U;#!G)%FD<WYA-4%!!$A!]1!!!!!!!!!"#U>S98"I;7-O9X2M!#2!5!!&!$-!3Q"-!%U!4AZ1982I)#9A37.P<C!R-A!!/!$R!!!!!!!!!!%,2X*B='BJ9SZD>'Q!*%"1!!5!-Q",!%Q!41"/$F"B>'AA*C"*9W^O)$%T!!!Y!0%!!!!!!!!!!1N(=G&Q;'FD,G.U<!!E1&!!"1!T!%M!4!".!%Y/5'&U;#!G)%FD<WYA-41!!$A!]1!!!!!!!!!"#U>S98"I;7-O9X2M!#2!5!!&!$-!3Q"-!%U!4AZ1982I)#9A37.P<C!R.1!!/!$R!!!!!!!!!!%,2X*B='BJ9SZD>'Q!*%"1!!5!-Q",!%Q!41"/$F"B>'AA*C"*9W^O)$%W!!!Y!0%!!!!!!!!!!1N(=G&Q;'FD,G.U<!!E1&!!"1!T!%M!4!".!%Y/5'&U;#!G)%FD<WYA-4=!!$A!]1!!!!!!!!!"#U>S98"I;7-O9X2M!#2!5!!&!$-!3Q"-!%U!4AZ1982I)#9A37.P<C!R/!!!/!$R!!!!!!!!!!%,2X*B='BJ9SZD>'Q!*%"1!!5!-Q",!%Q!41"/$F"B>'AA*C"*9W^O)$%Z!!!Y!0%!!!!!!!!!!1N(=G&Q;'FD,G.U<!!E1&!!"1!T!%M!4!".!%Y/5'&U;#!G)%FD<WYA-D!!!$A!]1!!!!!!!!!"#U>S98"I;7-O9X2M!#2!5!!&!$-!3Q"-!%U!4AZ1982I)#9A37.P<C!S-1!!/!$R!!!!!!!!!!%,2X*B='BJ9SZD>'Q!*%"1!!5!-Q",!%Q!41"/$F"B>'AA*C"*9W^O)$)S!!!Y!0%!!!!!!!!!!1N(=G&Q;'FD,G.U<!!E1&!!"1!T!%M!4!".!%Y/5'&U;#!G)%FD<WYA-D-!!$A!]1!!!!!!!!!"#U>S98"I;7-O9X2M!#2!5!!&!$-!3Q"-!%U!4AZ1982I)#9A37.P<C!S.!!!/!$R!!!!!!!!!!%,2X*B='BJ9SZD>'Q!*%"1!!5!-Q",!%Q!41"/$F"B>'AA*C"*9W^O)$)V!!!Y!0%!!!!!!!!!!1N(=G&Q;'FD,G.U<!!E1&!!"1!T!%M!4!".!%Y/5'&U;#!G)%FD<WYA-D9!!$A!]1!!!!!!!!!"#U>S98"I;7-O9X2M!#2!5!!&!$-!3Q"-!%U!4AZ1982I)#9A37.P<C!S.Q!!/!$R!!!!!!!!!!%,2X*B='BJ9SZD>'Q!*%"1!!5!-Q",!%Q!41"/$F"B>'AA*C"*9W^O)$)Y!!!Y!0%!!!!!!!!!!1N(=G&Q;'FD,G.U<!!E1&!!"1!T!%M!4!".!%Y/5'&U;#!G)%FD<WYA-DE!!$A!]1!!!!!!!!!"#U>S98"I;7-O9X2M!#2!5!!&!$-!3Q"-!%U!4AZ1982I)#9A37.P<C!T-!!!2!"1!"]!.Q"0!&!!51"3!&-!6!"6!&9!6Q"9!&E!7A"<!&Q!81"?!&]!9!"B!')!9Q"E!'5!:A"H!'A!;1"K!'M!<!!G1(!!#!!"!'U!(A!!&U2/4&^'=G&N:8>P=GMA6'6N='RB>'6T!"Z!=!!)!!!!'Q!!%&.F98*D;#"5:7VQ<'&U:8-!!"B!=!!)!!!!'Q!!#F2F?(2.98*L:8)!!#E!&Q!%#62F<8"M982F=QF*9W^O)&2F?(1'2WRZ='BT"ERB?76S=Q!!'E"Q!!A!!1"R!$=!!!N597)A1W^O>(*P<!!;1(!!#!!!!"M!!!V4:7&S9WAA2WRZ='BT!"B!=!!)!!!!"Q!!#ERJ<G5A1W^M<X)!!$9!]=4SV7)!!!!"$5>M?8"I4'FT>#ZD>'Q!)%"1!!5!-Q",!%Q!41"/#V"B>'AA*C"*9W^O!"!!1!!#``````````]!>1!=1(!!#!!"!(9!$A!!$52/4&^(<(FQ;(-A7VU!'%"Q!!A!!!!(!!!+2GFM<#"$<WRP=A!!;Q!8!!Q'5'6O9WFM"%RJ<G5(2(*P=("F=A2';7RM#6*F9X2B<G>M:2"';7RM:71A5G6D>'&O:WRF"U6M<'FQ=W5/2GFM<'6E)%6M<'FQ=W5'28*B=W6S"&2F?(1'5W6M:7.U"%VP>G5!!!!51(!!#!!"!(E!3!!!"62P<WRT!"*!=!!)!!!!$Q!!"%FD<WY!!"2!=!!)!!!!$Q!!"V"S:8:J:8=!%E"Q!!A!!!!0!!!%17ZU=Q!!&E"Q!!A!!!!0!!!*6'6S<7FO97RT!":!=!!*$GVF<H5A=G6G:8*F<G.F!!!71(!!#!!!!"M!!!F-98FF=EZB<75!'%"!!!(`````!)!+4'&Z:8*/97VF=Q!!)%"Q!!A!!!!%!!!32WRZ='B-<W&E17ZJ<7&U;7^O!!!C1(!!#!!!!!1!!"65:7VQ<'&U:5RP972"<GFN982J<WY!'E"Q!!A!!!!)!!!.=G6G=G6T;%>M?8"I=Q!?1(!!#!!!!!A!!""S:7:S:8.I6'6N='RB>'6T!!"\!0(.8`%^!!!!!2:3:7:F=G6O9W6T)%.M>8.U:8)O9X2M!&R!5!!H!!U!$A!1!"5!&A!8!"A!'A!<!"Q!(A!@!#5!*A!H!$5!.A!^!%I!<A"P!(!!=A"T!(1!>Q"Y!(I!(A"\!(Q!@1"_!(]!A1##!)-!B!#&!V*F:A!91&!!"!!P!$!!-1!S#%&O>(.3:7.U!!!21!-!#EBP=GF[<WZU97Q!!!^!!Q!)6G6S>'FD97Q!!$U!]1!!!!!!!!!"&%R75'^J<H1T-F2Z='6%:79O9X2M!#"!5!!#!)A!C2&.<X6T:3".<X:F)%.P<X*E=Q!^!0%!!!!!!!!!!22-6F"P;7ZU-T*5?8"F2'6G,G.U<!!A1&!!!A#)!)E247^V=W5A2'^X<C"$<W^S:(-!.Q$R!!!!!!!!!!%54&:1<WFO>$-S6(FQ:52F:CZD>'Q!'E"1!!)!C!#*#F2F<8!A1W^P=G1!!&U!]=4_'^5!!!!"&V.V=("P=H2$<'&T=V^"9X2J<WYO9X2M!$V!&A!%"U2F:G&V<(1/47^W:3"4:7RF9X2J<WY.2WRZ='AA4'FC=G&S?125<W^M!!:"9X2J<WY!!#E!]=6MY>U!!!!"#UF&1W^M<X)O9X2M!"6!"Q!+272H:3"$<WRP=A!!+1$RR7TBX1!!!!%,356$<WRP=CZD>'Q!&5!(!!J';7RM)%.P<'^S!!!11#%,47^V=W5A2'^X<D]!%%!B#U2S97:U)%VP:'5`!"*!-`````]*6'6N=#"*9W^O!"*!)1R$6&*-)&"S:8.T:71!!"2!)1^.<X:F)&.F<'6D>'FP<D]!(%"1!!1!,Q!Q!$%!-AV"<H2T5G6D>#"0=GFH!!Z!-0````]%6'6Y>!!!$%!B"V2.)&.F>$]!'%!B%EVP>8.F)'FO=WFE:3"J9W^O0Q!!&U!(!""5<W^M)#BP<'1A>G&M>75J!!!81!=!%6"F<G.J<#".<X:F)%.P<'^S!"*!)1R4>W&Q)%.P<'^S=T]!!"2!)1Z4;'FG>#"Q=G6T=W6E0Q!!5Q$RR@Q'HA!!!!%15X6Q='^S>%.M98.T,G.U<!![1&!!&!#(!)I!CQ#-!)U!DA#0!*!!E1#3!*-!F!#6!*9!FQ#9!*E!GA#<!*Q(5X6Q='^S>!!O!0(,;5G`!!!!!1N*23"%982B,G.U<!!;1&!!!Q!-!)9!H1B%982B)'^V>!!!)%"1!!-!!!!"!!)4:8*S<X)A;7YA+'ZP)'6S=G^S+1!M!0(,;5G`!!!!!1N*23"%982B,G.U<!!91&!!!Q!-!)9!H1>%982B)'FO!&1!]!!-!!-!"!!%!*Y!"!!%!!1!"!#@!!1!"!#A!Q!!?!!!$1A!!!!!!!!!!!!!$1M!!!!!!!!!!!!!!!!!!!!!!!!+!!!!!!!!!!!!!!!+!!!!!!%!I1!!!!! + + )1#!!!!!!!)!"1!&!!!-!%!!!@````]!!!!"!!%!!"4:!!!!IA!-1#%'=X2B>(6T!!!,1!-!"'.P:'5!!""!-0````]'=W^V=G.F!!!71&!!!Q!!!!%!!AFF=H*P=C"P>81!"!!!!"Z!=!!?!!!/$%&O>(-O<(:D<'&T=Q!!"%&O>(-!!#2!=!!?!!!5%E:B;W6E18*S98EO<(:D<'&T=Q!!"5RB?76S!#B!=!!?!!!5%E:B;W6E18*S98EO<(:D<'&T=Q!!#62F<8"M982F=Q!?1(!!(A!!$AR*9W^O,GRW9WRB=X-!!!2*9W^O!!!?1(!!(A!!$QV(<(FQ;#ZM>G.M98.T!!6(<(FQ;!!G1(!!(A!!%B"4:82U;7ZH=SZM>G.M98.T!!!)5W6U>'FO:X-!!#2!=!!?!!!6%V2P<WRT)&"B;7ZU,GRW9WRB=X-!"62P<WRT!$5!]=8'*4Y!!!!"$EF&)%.M98.T:8-O9X2M!"Z!5!!(!!5!"A!(!!A!#1!+!!M&1WRB=X-!&E"Q!!A!!!!)!!!*172E)%RB?76S!"J!=!!)!!!!#!!!$&*F<7^W:3"-98FF=A!!'%"Q!!A!!!!<!!!,4'FO:3!U)(2F?(1!&E"!!!(`````!!]*4'FO:3"5:8BU!#=!]1!!!!!!!!!"#%:P<H1O9X2M!":!-0````])2%Z-8U:P<H1!!#E!]=8JH--!!!!"$5&M;7>O<76O>#ZD>'Q!%U!'!!F"<'FH<GVF<H1!*1$RR:'Q5Q!!!!%.2G^O>#"4;8JF,G.U<!!01!5!"&.J?G5!!!Q!5!!$!"%!%A!4!"Z!=!!)!!%!&!!?!!!/1G^E?3"5:8BU)&.Q:7-!!":!=!!)!!!!(1!!#%2/4&^'<WZU!!!=1(!!#!!!!"M!!!ZH<(FQ;#"Q982I)(.U=A!!)%"Q!!A!!!!<!!!3>'6N='RB>'6T)("B>'AA=X2S!!!%!#%!'%"Q!!A!!1!:!!A!!!B"=H*P>S"6=!!!'E"Q!!A!!1!:!!A!!!J"=H*P>S"%<X>O!!!71(!!#!!!!!)!!!F*23"733"3:79!#!!Q`````Q!;1(!!#!!"!"U!1A!!#U>M?8"I=S"U=G6F!"Z!=!!)!!%!(1"#!!!/6'6N='RB>'6T)(2S:75!!"*!-`````]*4'&Z:8**9W^O!"*!-0````]*4'&Z:8*/97VF!!V!"1!(4X"B9WFU?1!11#%,6GFT;7*J<'FU?4]!$A"1!!1!)!!B!#)!)Q!?1(!!#!!"!#1!(A!!$URB?76S)%FD<WYA6'6Y>!!?1(!!#!!"!#1!(A!!$ERB?76S)&2F<8"M982F!!!71(!!#!!!!!]!!!F$<'FQ9G^B=G1!%5!$!!JJ<7&H:3"U?8"F!!!21!-!#WFN97>F)'2F=(2I!!5!"1!!%E"!!!(`````!#I&;7VB:W5!%E"!!!(`````!#I%<7&T;Q!!"1!(!!!51%!!!@````]!,1:D<WRP=H-!!!N!!A!%<'6G>!!!#5!#!!.U<X!!#U!#!!6S;7>I>!!.1!)!"G*P>(2P<1!!'%"1!!1!,Q!Q!$%!-AF3:7.U97ZH<'5!%A"1!!9!+!!J!#M!,!!O!$-!'E"Q!!A!!1!U!"Y!!!J#6S"J9W^O)'FO!!!=1(!!#!!"!$1!(A!!$5.P<'^S)'FD<WYA;7Y!$U!$!!F49X*P<'RC98)!,!$R!!!!!!!!!!%*4'&Z:8)O9X2M!"J!5!!%!#!!)1!C!#-(4'&Z:8)A-1!M!0%!!!!!!!!!!1F-98FF=CZD>'Q!'E"1!!1!)!!B!#)!)Q>-98FF=C!S!#Q!]1!!!!!!!!!"#5RB?76S,G.U<!!;1&!!"!!A!#%!)A!D"URB?76S)$-!,!$R!!!!!!!!!!%*4'&Z:8)O9X2M!"J!5!!%!#!!)1!C!#-(4'&Z:8)A.!!1!&!!"1!X!$A!/1![!$M!'E"Q!!A!!1!]!"Y!!!N-98FF=C"$<(6T>!!51$$`````#URJ<G5A-3"U:8BU!"2!-0````],4'FO:3!S)(2F?(1!&%!Q`````QN-;7ZF)$-A>'6Y>!!51$$`````#URJ<G5A.#"U:8BU!".!"Q!-4'FO:3!R)'.P<'^S!!!41!=!$%RJ<G5A-C"D<WRP=A!!%U!(!!R-;7ZF)$-A9W^M<X)!!".!"Q!-4'FO:3!U)'.P<'^S!!!=1&!!!Q!2!")!%QZ#<W2Z)&2F?(1A5X"F9Q!!(%!B&E.F<H2F=C"U:8BU)(:F=H2J9W&M<(E!!"2!)1^$98"J>'&M;8JF)&2F?(1!(!"1!!M!0A!`!%!!11"#!%-!2!"&!%9!2Q")!"B!=!!)!!%!31!?!!!*1G^E?3"5:8BU!!Z!-P````]%5'&U;!!!$E!T`````Q6*<7&H:1!11$$`````"E:J<(2F=A!!%E!Q`````QB';7RF4G&N:1!!.A$R!!!!!!!!!!%,2X*B='BJ9SZD>'Q!)E"1!!5!-Q",!%Q!41"/$6"B>'AA*C"*9W^O)$%!.A$R!!!!!!!!!!%,2X*B='BJ9SZD>'Q!)E"1!!5!-Q",!%Q!41"/$6"B>'AA*C"*9W^O)$)!.A$R!!!!!!!!!!%,2X*B='BJ9SZD>'Q!)E"1!!5!-Q",!%Q!41"/$6"B>'AA*C"*9W^O)$-!.A$R!!!!!!!!!!%,2X*B='BJ9SZD>'Q!)E"1!!5!-Q",!%Q!41"/$6"B>'AA*C"*9W^O)$1!.A$R!!!!!!!!!!%,2X*B='BJ9SZD>'Q!)E"1!!5!-Q",!%Q!41"/$6"B>'AA*C"*9W^O)$5!.A$R!!!!!!!!!!%,2X*B='BJ9SZD>'Q!)E"1!!5!-Q",!%Q!41"/$6"B>'AA*C"*9W^O)$9!.A$R!!!!!!!!!!%,2X*B='BJ9SZD>'Q!)E"1!!5!-Q",!%Q!41"/$6"B>'AA*C"*9W^O)$=!.A$R!!!!!!!!!!%,2X*B='BJ9SZD>'Q!)E"1!!5!-Q",!%Q!41"/$6"B>'AA*C"*9W^O)$A!.A$R!!!!!!!!!!%,2X*B='BJ9SZD>'Q!)E"1!!5!-Q",!%Q!41"/$6"B>'AA*C"*9W^O)$E!/!$R!!!!!!!!!!%,2X*B='BJ9SZD>'Q!*%"1!!5!-Q",!%Q!41"/$F"B>'AA*C"*9W^O)$%Q!!!Y!0%!!!!!!!!!!1N(=G&Q;'FD,G.U<!!E1&!!"1!T!%M!4!".!%Y/5'&U;#!G)%FD<WYA-4%!!$A!]1!!!!!!!!!"#U>S98"I;7-O9X2M!#2!5!!&!$-!3Q"-!%U!4AZ1982I)#9A37.P<C!R-A!!/!$R!!!!!!!!!!%,2X*B='BJ9SZD>'Q!*%"1!!5!-Q",!%Q!41"/$F"B>'AA*C"*9W^O)$%T!!!Y!0%!!!!!!!!!!1N(=G&Q;'FD,G.U<!!E1&!!"1!T!%M!4!".!%Y/5'&U;#!G)%FD<WYA-41!!$A!]1!!!!!!!!!"#U>S98"I;7-O9X2M!#2!5!!&!$-!3Q"-!%U!4AZ1982I)#9A37.P<C!R.1!!/!$R!!!!!!!!!!%,2X*B='BJ9SZD>'Q!*%"1!!5!-Q",!%Q!41"/$F"B>'AA*C"*9W^O)$%W!!!Y!0%!!!!!!!!!!1N(=G&Q;'FD,G.U<!!E1&!!"1!T!%M!4!".!%Y/5'&U;#!G)%FD<WYA-4=!!$A!]1!!!!!!!!!"#U>S98"I;7-O9X2M!#2!5!!&!$-!3Q"-!%U!4AZ1982I)#9A37.P<C!R/!!!/!$R!!!!!!!!!!%,2X*B='BJ9SZD>'Q!*%"1!!5!-Q",!%Q!41"/$F"B>'AA*C"*9W^O)$%Z!!!Y!0%!!!!!!!!!!1N(=G&Q;'FD,G.U<!!E1&!!"1!T!%M!4!".!%Y/5'&U;#!G)%FD<WYA-D!!!$A!]1!!!!!!!!!"#U>S98"I;7-O9X2M!#2!5!!&!$-!3Q"-!%U!4AZ1982I)#9A37.P<C!S-1!!/!$R!!!!!!!!!!%,2X*B='BJ9SZD>'Q!*%"1!!5!-Q",!%Q!41"/$F"B>'AA*C"*9W^O)$)S!!!Y!0%!!!!!!!!!!1N(=G&Q;'FD,G.U<!!E1&!!"1!T!%M!4!".!%Y/5'&U;#!G)%FD<WYA-D-!!$A!]1!!!!!!!!!"#U>S98"I;7-O9X2M!#2!5!!&!$-!3Q"-!%U!4AZ1982I)#9A37.P<C!S.!!!/!$R!!!!!!!!!!%,2X*B='BJ9SZD>'Q!*%"1!!5!-Q",!%Q!41"/$F"B>'AA*C"*9W^O)$)V!!!Y!0%!!!!!!!!!!1N(=G&Q;'FD,G.U<!!E1&!!"1!T!%M!4!".!%Y/5'&U;#!G)%FD<WYA-D9!!$A!]1!!!!!!!!!"#U>S98"I;7-O9X2M!#2!5!!&!$-!3Q"-!%U!4AZ1982I)#9A37.P<C!S.Q!!/!$R!!!!!!!!!!%,2X*B='BJ9SZD>'Q!*%"1!!5!-Q",!%Q!41"/$F"B>'AA*C"*9W^O)$)Y!!!Y!0%!!!!!!!!!!1N(=G&Q;'FD,G.U<!!E1&!!"1!T!%M!4!".!%Y/5'&U;#!G)%FD<WYA-DE!!$A!]1!!!!!!!!!"#U>S98"I;7-O9X2M!#2!5!!&!$-!3Q"-!%U!4AZ1982I)#9A37.P<C!T-!!!2!"1!"]!.Q"0!&!!51"3!&-!6!"6!&9!6Q"9!&E!7A"<!&Q!81"?!&]!9!"B!')!9Q"E!'5!:A"H!'A!;1"K!'M!<!!G1(!!#!!"!'U!(A!!&U2/4&^'=G&N:8>P=GMA6'6N='RB>'6T!"Z!=!!)!!!!'Q!!%&.F98*D;#"5:7VQ<'&U:8-!!"B!=!!)!!!!'Q!!#F2F?(2.98*L:8)!!#E!&Q!%#62F<8"M982F=QF*9W^O)&2F?(1'2WRZ='BT"ERB?76S=Q!!'E"Q!!A!!1"R!$=!!!N597)A1W^O>(*P<!!;1(!!#!!!!"M!!!V4:7&S9WAA2WRZ='BT!"B!=!!)!!!!"Q!!#ERJ<G5A1W^M<X)!!$9!]=4SV7)!!!!"$5>M?8"I4'FT>#ZD>'Q!)%"1!!5!-Q",!%Q!41"/#V"B>'AA*C"*9W^O!"!!1!!#``````````]!>1!=1(!!#!!"!(9!$A!!$52/4&^(<(FQ;(-A7VU!'%"Q!!A!!!!(!!!+2GFM<#"$<WRP=A!!;Q!8!!Q'5'6O9WFM"%RJ<G5(2(*P=("F=A2';7RM#6*F9X2B<G>M:2"';7RM:71A5G6D>'&O:WRF"U6M<'FQ=W5/2GFM<'6E)%6M<'FQ=W5'28*B=W6S"&2F?(1'5W6M:7.U"%VP>G5!!!!51(!!#!!"!(E!3!!!"62P<WRT!"*!=!!)!!!!$Q!!"%FD<WY!!"2!=!!)!!!!$Q!!"V"S:8:J:8=!%E"Q!!A!!!!0!!!%17ZU=Q!!&E"Q!!A!!!!0!!!*6'6S<7FO97RT!":!=!!*$GVF<H5A=G6G:8*F<G.F!!!71(!!#!!!!"M!!!F-98FF=EZB<75!'%"!!!(`````!)!+4'&Z:8*/97VF=Q!!)%"Q!!A!!!!%!!!32WRZ='B-<W&E17ZJ<7&U;7^O!!!C1(!!#!!!!!1!!"65:7VQ<'&U:5RP972"<GFN982J<WY!'E"Q!!A!!!!)!!!.=G6G=G6T;%>M?8"I=Q!?1(!!#!!!!!A!!""S:7:S:8.I6'6N='RB>'6T!!"\!0(.8`%^!!!!!2:3:7:F=G6O9W6T)%.M>8.U:8)O9X2M!&R!5!!H!!U!$A!1!"5!&A!8!"A!'A!<!"Q!(A!@!#5!*A!H!$5!.A!^!%I!<A"P!(!!=A"T!(1!>Q"Y!(I!(A"\!(Q!@1"_!(]!A1##!)-!B!#&!V*F:A!91&!!"!!P!$!!-1!S#%&O>(.3:7.U!!!21!-!#EBP=GF[<WZU97Q!!!^!!Q!)6G6S>'FD97Q!!$U!]1!!!!!!!!!"&%R75'^J<H1T-F2Z='6%:79O9X2M!#"!5!!#!)A!C2&.<X6T:3".<X:F)%.P<X*E=Q!^!0%!!!!!!!!!!22-6F"P;7ZU-T*5?8"F2'6G,G.U<!!A1&!!!A#)!)E247^V=W5A2'^X<C"$<W^S:(-!.Q$R!!!!!!!!!!%54&:1<WFO>$-S6(FQ:52F:CZD>'Q!'E"1!!)!C!#*#F2F<8!A1W^P=G1!!&U!]=4_'^5!!!!"&V.V=("P=H2$<'&T=V^"9X2J<WYO9X2M!$V!&A!%"U2F:G&V<(1/47^W:3"4:7RF9X2J<WY.2WRZ='AA4'FC=G&S?125<W^M!!:"9X2J<WY!!#E!]=6MY>U!!!!"#UF&1W^M<X)O9X2M!"6!"Q!+272H:3"$<WRP=A!!+1$RR7TBX1!!!!%,356$<WRP=CZD>'Q!&5!(!!J';7RM)%.P<'^S!!!11#%,47^V=W5A2'^X<D]!%%!B#U2S97:U)%VP:'5`!"*!-`````]*6'6N=#"*9W^O!"*!)1R$6&*-)&"S:8.T:71!!"2!)1^.<X:F)&.F<'6D>'FP<D]!(%"1!!1!,Q!Q!$%!-AV"<H2T5G6D>#"0=GFH!!Z!-0````]%6'6Y>!!!$%!B"V2.)&.F>$]!'%!B%EVP>8.F)'FO=WFE:3"J9W^O0Q!!&U!(!""5<W^M)#BP<'1A>G&M>75J!!!81!=!%6"F<G.J<#".<X:F)%.P<'^S!"*!)1R4>W&Q)%.P<'^S=T]!!"2!)1Z4;'FG>#"Q=G6T=W6E0Q!!5Q$RR@Q'HA!!!!%15X6Q='^S>%.M98.T,G.U<!![1&!!&!#(!)I!CQ#-!)U!DA#0!*!!E1#3!*-!F!#6!*9!FQ#9!*E!GA#<!*Q(5X6Q='^S>!!O!0(,;5G`!!!!!1N*23"%982B,G.U<!!;1&!!!Q!-!)9!H1B%982B)'^V>!!!&E"1!!-!!!!"!!)):8*S<X)A;7Y!!#Q!]=NJ3<]!!!!"#UF&)%2B>'%O9X2M!"B!5!!$!!Q!BA#>"U2B>'%A;7Y!6!$Q!!Q!!Q!%!!1!HA!%!!1!"!!%!*]!"!!%!+!$!!"Y!!!.#!!!!!!!!!!!!!!.#Q!!!!!!!!!!!!!!!!!!!!!!!!I!!!!!!!!!!!!!!!I!!!!!!1#B!!!!!! 1 0 true 1 1 - 1082143248 + 1342710288 diff --git a/resource/plugins/NIIconEditor/Controls/INI.ctl b/resource/plugins/NIIconEditor/Controls/INI.ctl index 1bde0a8..69e4b88 100644 Binary files a/resource/plugins/NIIconEditor/Controls/INI.ctl and b/resource/plugins/NIIconEditor/Controls/INI.ctl differ diff --git a/resource/plugins/NIIconEditor/Controls/Settings.ctl b/resource/plugins/NIIconEditor/Controls/Settings.ctl index 0ce59ef..342b6ed 100644 Binary files a/resource/plugins/NIIconEditor/Controls/Settings.ctl and b/resource/plugins/NIIconEditor/Controls/Settings.ctl differ diff --git a/resource/plugins/NIIconEditor/Miscellaneous/Icon Editor/MenuSelection(User).vi b/resource/plugins/NIIconEditor/Miscellaneous/Icon Editor/MenuSelection(User).vi index ce55914..9a49053 100644 Binary files a/resource/plugins/NIIconEditor/Miscellaneous/Icon Editor/MenuSelection(User).vi and b/resource/plugins/NIIconEditor/Miscellaneous/Icon Editor/MenuSelection(User).vi differ diff --git a/resource/plugins/NIIconEditor/Miscellaneous/Load Unload/Load.vi b/resource/plugins/NIIconEditor/Miscellaneous/Load Unload/Load.vi index 4d6d0a5..08c4947 100644 Binary files a/resource/plugins/NIIconEditor/Miscellaneous/Load Unload/Load.vi and b/resource/plugins/NIIconEditor/Miscellaneous/Load Unload/Load.vi differ diff --git a/resource/plugins/NIIconEditor/Miscellaneous/Load Unload/ReadDataFromLabVIEWINI.vi b/resource/plugins/NIIconEditor/Miscellaneous/Load Unload/ReadDataFromLabVIEWINI.vi index 845ec7c..c3ae499 100644 Binary files a/resource/plugins/NIIconEditor/Miscellaneous/Load Unload/ReadDataFromLabVIEWINI.vi and b/resource/plugins/NIIconEditor/Miscellaneous/Load Unload/ReadDataFromLabVIEWINI.vi differ diff --git a/resource/plugins/NIIconEditor/Miscellaneous/Load Unload/Write INI Tokens and VI Tags.vi b/resource/plugins/NIIconEditor/Miscellaneous/Load Unload/Write INI Tokens and VI Tags.vi index 9ff3713..61ff384 100644 Binary files a/resource/plugins/NIIconEditor/Miscellaneous/Load Unload/Write INI Tokens and VI Tags.vi and b/resource/plugins/NIIconEditor/Miscellaneous/Load Unload/Write INI Tokens and VI Tags.vi differ diff --git a/resource/plugins/NIIconEditor/Miscellaneous/Load Unload/WriteDataToLabVIEWINI.vi b/resource/plugins/NIIconEditor/Miscellaneous/Load Unload/WriteDataToLabVIEWINI.vi index bb28064..2a9dbd1 100644 Binary files a/resource/plugins/NIIconEditor/Miscellaneous/Load Unload/WriteDataToLabVIEWINI.vi and b/resource/plugins/NIIconEditor/Miscellaneous/Load Unload/WriteDataToLabVIEWINI.vi differ diff --git a/resource/plugins/NIIconEditor/Miscellaneous/Menubar/ShowLayersPalette.vi b/resource/plugins/NIIconEditor/Miscellaneous/Menubar/ShowLayersPalette.vi deleted file mode 100644 index cbe79e6..0000000 Binary files a/resource/plugins/NIIconEditor/Miscellaneous/Menubar/ShowLayersPalette.vi and /dev/null differ diff --git a/resource/plugins/NIIconEditor/Support/lv_icon.rtm b/resource/plugins/NIIconEditor/Support/lv_icon.rtm index d1cb996..294d29e 100644 Binary files a/resource/plugins/NIIconEditor/Support/lv_icon.rtm and b/resource/plugins/NIIconEditor/Support/lv_icon.rtm differ diff --git a/resource/plugins/lv_icon.vi b/resource/plugins/lv_icon.vi index ecd8079..ff9d261 100644 Binary files a/resource/plugins/lv_icon.vi and b/resource/plugins/lv_icon.vi differ