From 7fa7f44e922fbeb0b85c7ada4f7a23f47f229081 Mon Sep 17 00:00:00 2001 From: Frank Xu Date: Tue, 23 Jul 2024 10:20:29 -0400 Subject: [PATCH] add CKIM2024 cyber incident case study --- .../01_evidence_entity_recognition.ipynb | 296 +++++++-- .../01_output_entity.txt | 28 +- .../02_evidence_knowledge_dot_generator.ipynb | 580 ++++++++++++------ .../PhishingAttackScenarioDemo/02_output.dot | 20 +- .../02_output_email_analysis.png | Bin 4741 -> 117002 bytes .../03_evidence_stix_zeroshot.ipynb | 204 ++++-- .../04_evidence_stix_oneshot.ipynb | 268 ++++++-- .../04_forward_module.svg | 85 +++ .../05_evidence_stix_dot_generator.ipynb | 493 +++++++++++++++ .../05_forward_module.svg | 85 +++ .../PhishingAttackScenarioDemo/05_output.dot | 27 +- .../PhishingAttackScenarioDemo/05_output.png | Bin 55392 -> 61173 bytes .../05_output_stix_oneshot.png | Bin 0 -> 56155 bytes .../05_output_stix_zeroshot.svg | 152 +++++ .../05_output_viz.dot | 19 + .../05_output_viz.png | Bin 0 -> 61173 bytes AI4Forensics/CKIM2024/readme.md | 21 +- 17 files changed, 1908 insertions(+), 370 deletions(-) create mode 100644 AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/04_forward_module.svg create mode 100644 AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/05_evidence_stix_dot_generator.ipynb create mode 100644 AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/05_forward_module.svg create mode 100644 AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/05_output_stix_oneshot.png create mode 100644 AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/05_output_stix_zeroshot.svg create mode 100644 AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/05_output_viz.dot create mode 100644 AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/05_output_viz.png diff --git a/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/01_evidence_entity_recognition.ipynb b/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/01_evidence_entity_recognition.ipynb index 1411d39..ea2c905 100644 --- a/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/01_evidence_entity_recognition.ipynb +++ b/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/01_evidence_entity_recognition.ipynb @@ -1,26 +1,63 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## A tutorial to identify evidence entities from a cyber incident report\n", + "\n", + "The cyber incident report records a conversation between an IT Security Specialist and an Employee. The conversation describes an email phishing attack scenario.\n", + "\n", + "### Goal\n", + "- Familiar with [DSPy: Declarative Self-improving Language Programs, pythonically](https://github.com/stanfordnlp/dspy). \n", + " - DSPy is a framework for algorithmically optimizing LM prompts and weights.\n", + " - The framework for programming—not prompting—foundation models\n", + "- Identify a list of evidence entities\n", + "- Identify a list of relationships between entities" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 1: Download libraries and files for the lab\n", + "- Make use you download necessary library and files. \n", + "- All downloaded and saved files can be located in the `content` folder if using google Colab" + ] + }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ + "# uncomment the commands to download libraries and files\n", + "#!pip install python-dotenv\n", + "#!pip install dspy-ai\n", "#!pip install graphviz\n", + "# !wget https://raw.githubusercontent.com/frankwxu/digital-forensics-lab/main/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/conversation.txt\n", "\n", "import dspy\n", "import os\n", "import openai\n", "import json\n", "from dotenv import load_dotenv\n", - "\n", - "from graphviz import Digraph\n", "from IPython.display import display" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 2: Config DSPy with openAI \n", + "- You `MUST` have an openAI api key\n", + "- load an openAI api key from `openai_api_key.txt` file\n", + "- or, hard code your open api key" + ] + }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -51,40 +88,22 @@ " dspy.settings.configure(lm=turbo)\n", " return turbo\n", "\n", + "# provide `openai_api_key.txt` with your openAI api key\n", "turbo=set_dspy()\n", - "# comment out set_dspy() and use set_dspy_hardcode_openai_key is your option\n", + "# optionally, hard code your openAI api key at line 21 \n", "# turbo=set_dspy_hardcode_openai_key()" ] }, { - "cell_type": "code", - "execution_count": 14, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "def load_text_file(file_path):\n", - " \"\"\"\n", - " Load a text file and return its contents as a string.\n", - "\n", - " Parameters:\n", - " file_path (str): The path to the text file.\n", - "\n", - " Returns:\n", - " str: The contents of the text file.\n", - " \"\"\"\n", - " try:\n", - " with open(file_path, \"r\") as file:\n", - " contents = file.read()\n", - " return contents\n", - " except FileNotFoundError:\n", - " return \"File not found.\"\n", - " except Exception as e:\n", - " return f\"An error occurred: {e}\"\n" + "### Step 3: Load the cyber incident repot (e.g., conversation)" ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -134,30 +153,101 @@ } ], "source": [ - "conversation=load_text_file(\"conversation.txt\")\n", + "def load_text_file(file_path):\n", + " \"\"\"\n", + " Load a text file and return its contents as a string.\n", + "\n", + " Parameters:\n", + " file_path (str): The path to the text file.\n", + "\n", + " Returns:\n", + " str: The contents of the text file.\n", + " \"\"\"\n", + " try:\n", + " with open(file_path, \"r\") as file:\n", + " contents = file.read()\n", + " return contents\n", + " except FileNotFoundError:\n", + " return \"File not found.\"\n", + " except Exception as e:\n", + " return f\"An error occurred: {e}\"\n", + "\n", + "conversation = load_text_file(\"conversation.txt\")\n", "print(conversation)" ] }, { - "cell_type": "code", - "execution_count": 16, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "class EvidenceIdentifier(dspy.Signature):\n", - " \"\"\"Idenitfy evidence entities from a conversation between -Alex (IT Security Specialist) and Taylor (Employee).\"\"\"\n", + "### Step 4: Tell an LLM `WHAT` are the inputs/outputs by defining DSPy: Signature \n", "\n", - " question = dspy.InputField(\n", - " desc=\"a conversation between -Alex (IT Security Specialist) and Bob (Employee).\"\n", - " )\n", - " answer = dspy.OutputField(\n", - " desc=\"a list of evidence, inlcuding but not limited to emaile, IP address, URL, File name, timestamps, etc, in the conversation as a Python dictionary. For example, {evidence type: evidence value, ...}\"\n", - " )" + "- A signature is one of the basic building blocks in DSPy's prompt programming\n", + "- It is a declarative specification of input/output behavior of a DSPy module\n", + " - Think about a function signature\n", + "- Allow you to tell the LLM what it needs to do. \n", + " - Don't need to specify how we should ask the LLM to do it.\n", + "- The following signature identifies a list of evidence based on the conversation\n", + " - Inherit from `dspy.Signature`\n", + " - Exact `ONE` input, e.g., the conversation \n", + " - Exact `ONE` output, e.g., a list of evidence entities\n", + "\n", + "### The following `EvidenceIdentifier` is equivalent to \n", + "\n", + "```\n", + "Identify evidence entities from a conversation ....\n", + "---\n", + "Follow the following format.\n", + "Question: a conversation between an IT Security Specialist and Employe\n", + "Answer: a list of evidence, inlcuding ...\n", + "---\n", + "Question: {a new unseen conversation}\n", + "Answer: write your answer here\n", + "```\n" ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "class EvidenceIdentifier(dspy.Signature):\n", + " \"\"\"Identify evidence entities from a conversation between an IT Security Specialist and an Employee.\"\"\"\n", + "\n", + " question = dspy.InputField(\n", + " desc=\"a conversation between an IT Security Specialist and Employee.\"\n", + " )\n", + " answer = dspy.OutputField(\n", + " desc=\"a list of evidence, inlcuding but not limited to emails, IP addresses, URLs, File names, timestamps, etc, in the conversation as a Python dictionary. For example, {evidence type: evidence value, ...}\"\n", + " )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 5: Tell an LLM `HOW` to generate answer in a function: \n", + "\n", + "Generates and saves evidence from a conversation using a specified signature.\n", + "\n", + "#### Parameters:\n", + "- `signature` (dspy.Signature): The signature defining the input and output structure for evidence identification.\n", + "- `conversation` (str): The conversation text to analyze for evidence.\n", + "- `output_file` (str): The file path where the identified evidence will be saved as JSON.\n", + "\n", + "#### Returns:\n", + "None. The function saves the result to a file and prints a confirmation message.\n", + "\n", + "#### Notes:\n", + "- This function uses `dspy.Predict` to process the conversation and identify evidence.\n", + "- The result is saved as a formatted JSON file.\n", + "- The function prints the result to the console and saves it to the specified file." + ] + }, + { + "cell_type": "code", + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -172,17 +262,27 @@ " print(f\"The evidence has been saved to the file {output_file}\")" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 6: Execute above function and generate entities with three inputs\n", + "- Which signature: `EvidenceIdentifier`\n", + "- What input: conversation\n", + "- Where to save results: the name of output file" + ] + }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "{'Email From': 'support@banksecure.com', 'Email Subject': 'Urgent: Verify Your Account Now', 'IP Address': '192.168.10.45', 'Domain': 'banksecure.com', 'Actual Domain Registration': 'Russia', 'URL Clicked': 'http://banksecure-verification.com/login', 'URL Visited 1': 'http://banksecure-verification.com/login', 'URL Visited 2': 'http://banksecure-verification.com/account-details', 'File Downloaded': 'AccountDetails.exe', 'File Creation Time': '10:20 AM', 'MD5 Hash': 'e99a18c428cb38d5f260853678922e03', 'Network Logs Timestamp': '10:20 AM'}\n", - "The evidence has been saved to the file 01_output_evidence_entity.txt\n" + "{'Email': {'From': 'support@banksecure.com', 'Subject': 'Urgent: Verify Your Account Now', 'Content': 'strange email asking to verify account details urgently'}, 'IP Address': '192.168.10.45', 'Domain': 'banksecure.com', 'URLs': ['http://banksecure-verification.com/login', 'http://banksecure-verification.com/account-details'], 'File': {'Name': 'AccountDetails.exe', 'Creation Time': '10:20 AM', 'MD5 Hash': 'e99a18c428cb38d5f260853678922e03'}, 'Timestamps': {'Visited at 10:15 AM': 'http://banksecure-verification.com/login', 'Visited at 10:17 AM': 'http://banksecure-verification.com/account-details'}}\n", + "The evidence has been saved to the file 01_output_entity.txt\n" ] } ], @@ -194,9 +294,21 @@ ")" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 7: Inspect the last prompt send to the LLM\n", + "\n", + "You want to check:\n", + "- Prompt Description Section: Description in the signature\n", + "- Format Section: `Following the following format.` \n", + "- Result Section: Question (scenario) and Answer (entities) section" + ] + }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -206,31 +318,39 @@ "\n", "\n", "\n", - "Idenitfy evidence entities from a conversation between -Alex (IT Security Specialist) and Taylor (Employee).\n", + "Identify evidence entities from a conversation between an IT Security Specialist and an Employee.\n", "\n", "---\n", "\n", "Follow the following format.\n", "\n", - "Question: a conversation between -Alex (IT Security Specialist) and Bob (Employee).\n", + "Question: a conversation between an IT Security Specialist and Employee.\n", "Answer: a list of evidence, inlcuding but not limited to emaile, IP address, URL, File name, timestamps, etc, in the conversation as a Python dictionary. For example, {evidence type: evidence value, ...}\n", "\n", "---\n", "\n", "Question: Alice: Hey Bob, I just got a strange email from support@banksecure.com. It says I need to verify my account details urgently. The subject line was \"Urgent: Verify Your Account Now\". The email looks suspicious to me. Bob: Hi Alice, that does sound fishy. Can you forward me the email? I’ll take a look at the headers to see where it came from. Alice: Sure, forwarding it now. Bob: Got it. Let’s see... The email came from IP address 192.168.10.45, but the domain banksecure.com is not their official domain. It's actually registered to someone in Russia. Alice: That’s definitely not right. Should I be worried? Bob: We should investigate further. Did you click on any links or download any attachments? Alice: I did click on a link that took me to a page asking for my login credentials. I didn't enter anything though. The URL was http://banksecure-verification.com/login. Bob: Good call on not entering your details. Let’s check the URL. This domain was just registered two days ago. It’s highly likely it’s a phishing site. Alice: What should I do next? Bob: First, clear your browser history and cache. Also, run a full antivirus scan on your computer. Can you also provide me with any browser history entries and cookies from that session? Alice: I’ve cleared the history and started the antivirus scan. Here are the relevant entries from my browser history: Visited at 10:15 AM: http://banksecure-verification.com/login Visited at 10:17 AM: http://banksecure-verification.com/account-details Bob: Thanks. I’ll analyze these URLs further. Also, check if there are any suspicious files downloaded or present in your downloads folder. Look for anything unusual. Alice: There's a file named \"AccountDetails.exe\" that I don’t remember downloading. It was created at 10:20 AM. Bob: Definitely suspicious. Don’t open it. Let’s hash the file to verify its integrity. Can you run an MD5 hash on it? Alice: Done. The MD5 hash is e99a18c428cb38d5f260853678922e03. Bob: This hash matches known malware in our database. We’ll need to quarantine it and check if it has established any network connections. I’ll look into our network logs for the IP 192.168.10.45 around 10:20 AM. Alice: Is there anything else I need to do? Bob: For now, avoid using your computer for sensitive tasks. We’ll also reset your passwords from a different device and enable two-factor authentication on your accounts. Alice: Thanks, Bob. I’ll follow these steps immediately.\n", "Answer: {\n", - " \"Email From\": \"support@banksecure.com\",\n", - " \"Email Subject\": \"Urgent: Verify Your Account Now\",\n", + " \"Email\": {\n", + " \"From\": \"support@banksecure.com\",\n", + " \"Subject\": \"Urgent: Verify Your Account Now\",\n", + " \"Content\": \"strange email asking to verify account details urgently\"\n", + " },\n", " \"IP Address\": \"192.168.10.45\",\n", " \"Domain\": \"banksecure.com\",\n", - " \"Actual Domain Registration\": \"Russia\",\n", - " \"URL Clicked\": \"http://banksecure-verification.com/login\",\n", - " \"URL Visited 1\": \"http://banksecure-verification.com/login\",\n", - " \"URL Visited 2\": \"http://banksecure-verification.com/account-details\",\n", - " \"File Downloaded\": \"AccountDetails.exe\",\n", - " \"File Creation Time\": \"10:20 AM\",\n", - " \"MD5 Hash\": \"e99a18c428cb38d5f260853678922e03\",\n", - " \"Network Logs Timestamp\": \"10:20 AM\"\n", + " \"URLs\": [\n", + " \"http://banksecure-verification.com/login\",\n", + " \"http://banksecure-verification.com/account-details\"\n", + " ],\n", + " \"File\": {\n", + " \"Name\": \"AccountDetails.exe\",\n", + " \"Creation Time\": \"10:20 AM\",\n", + " \"MD5 Hash\": \"e99a18c428cb38d5f260853678922e03\"\n", + " },\n", + " \"Timestamps\": {\n", + " \"Visited at 10:15 AM\": \"http://banksecure-verification.com/login\",\n", + " \"Visited at 10:17 AM\": \"http://banksecure-verification.com/account-details\"\n", + " }\n", "}\n", "\n", "\n", @@ -240,10 +360,10 @@ { "data": { "text/plain": [ - "'\\n\\n\\nIdenitfy evidence entities from a conversation between -Alex (IT Security Specialist) and Taylor (Employee).\\n\\n---\\n\\nFollow the following format.\\n\\nQuestion: a conversation between -Alex (IT Security Specialist) and Bob (Employee).\\nAnswer: a list of evidence, inlcuding but not limited to emaile, IP address, URL, File name, timestamps, etc, in the conversation as a Python dictionary. For example, {evidence type: evidence value, ...}\\n\\n---\\n\\nQuestion: Alice: Hey Bob, I just got a strange email from support@banksecure.com. It says I need to verify my account details urgently. The subject line was \"Urgent: Verify Your Account Now\". The email looks suspicious to me. Bob: Hi Alice, that does sound fishy. Can you forward me the email? I’ll take a look at the headers to see where it came from. Alice: Sure, forwarding it now. Bob: Got it. Let’s see... The email came from IP address 192.168.10.45, but the domain banksecure.com is not their official domain. It\\'s actually registered to someone in Russia. Alice: That’s definitely not right. Should I be worried? Bob: We should investigate further. Did you click on any links or download any attachments? Alice: I did click on a link that took me to a page asking for my login credentials. I didn\\'t enter anything though. The URL was http://banksecure-verification.com/login. Bob: Good call on not entering your details. Let’s check the URL. This domain was just registered two days ago. It’s highly likely it’s a phishing site. Alice: What should I do next? Bob: First, clear your browser history and cache. Also, run a full antivirus scan on your computer. Can you also provide me with any browser history entries and cookies from that session? Alice: I’ve cleared the history and started the antivirus scan. Here are the relevant entries from my browser history: Visited at 10:15 AM: http://banksecure-verification.com/login Visited at 10:17 AM: http://banksecure-verification.com/account-details Bob: Thanks. I’ll analyze these URLs further. Also, check if there are any suspicious files downloaded or present in your downloads folder. Look for anything unusual. Alice: There\\'s a file named \"AccountDetails.exe\" that I don’t remember downloading. It was created at 10:20 AM. Bob: Definitely suspicious. Don’t open it. Let’s hash the file to verify its integrity. Can you run an MD5 hash on it? Alice: Done. The MD5 hash is e99a18c428cb38d5f260853678922e03. Bob: This hash matches known malware in our database. We’ll need to quarantine it and check if it has established any network connections. I’ll look into our network logs for the IP 192.168.10.45 around 10:20 AM. Alice: Is there anything else I need to do? Bob: For now, avoid using your computer for sensitive tasks. We’ll also reset your passwords from a different device and enable two-factor authentication on your accounts. Alice: Thanks, Bob. I’ll follow these steps immediately.\\nAnswer:\\x1b[32m {\\n \"Email From\": \"support@banksecure.com\",\\n \"Email Subject\": \"Urgent: Verify Your Account Now\",\\n \"IP Address\": \"192.168.10.45\",\\n \"Domain\": \"banksecure.com\",\\n \"Actual Domain Registration\": \"Russia\",\\n \"URL Clicked\": \"http://banksecure-verification.com/login\",\\n \"URL Visited 1\": \"http://banksecure-verification.com/login\",\\n \"URL Visited 2\": \"http://banksecure-verification.com/account-details\",\\n \"File Downloaded\": \"AccountDetails.exe\",\\n \"File Creation Time\": \"10:20 AM\",\\n \"MD5 Hash\": \"e99a18c428cb38d5f260853678922e03\",\\n \"Network Logs Timestamp\": \"10:20 AM\"\\n}\\x1b[0m\\n\\n\\n'" + "'\\n\\n\\nIdentify evidence entities from a conversation between an IT Security Specialist and an Employee.\\n\\n---\\n\\nFollow the following format.\\n\\nQuestion: a conversation between an IT Security Specialist and Employee.\\nAnswer: a list of evidence, inlcuding but not limited to emaile, IP address, URL, File name, timestamps, etc, in the conversation as a Python dictionary. For example, {evidence type: evidence value, ...}\\n\\n---\\n\\nQuestion: Alice: Hey Bob, I just got a strange email from support@banksecure.com. It says I need to verify my account details urgently. The subject line was \"Urgent: Verify Your Account Now\". The email looks suspicious to me. Bob: Hi Alice, that does sound fishy. Can you forward me the email? I’ll take a look at the headers to see where it came from. Alice: Sure, forwarding it now. Bob: Got it. Let’s see... The email came from IP address 192.168.10.45, but the domain banksecure.com is not their official domain. It\\'s actually registered to someone in Russia. Alice: That’s definitely not right. Should I be worried? Bob: We should investigate further. Did you click on any links or download any attachments? Alice: I did click on a link that took me to a page asking for my login credentials. I didn\\'t enter anything though. The URL was http://banksecure-verification.com/login. Bob: Good call on not entering your details. Let’s check the URL. This domain was just registered two days ago. It’s highly likely it’s a phishing site. Alice: What should I do next? Bob: First, clear your browser history and cache. Also, run a full antivirus scan on your computer. Can you also provide me with any browser history entries and cookies from that session? Alice: I’ve cleared the history and started the antivirus scan. Here are the relevant entries from my browser history: Visited at 10:15 AM: http://banksecure-verification.com/login Visited at 10:17 AM: http://banksecure-verification.com/account-details Bob: Thanks. I’ll analyze these URLs further. Also, check if there are any suspicious files downloaded or present in your downloads folder. Look for anything unusual. Alice: There\\'s a file named \"AccountDetails.exe\" that I don’t remember downloading. It was created at 10:20 AM. Bob: Definitely suspicious. Don’t open it. Let’s hash the file to verify its integrity. Can you run an MD5 hash on it? Alice: Done. The MD5 hash is e99a18c428cb38d5f260853678922e03. Bob: This hash matches known malware in our database. We’ll need to quarantine it and check if it has established any network connections. I’ll look into our network logs for the IP 192.168.10.45 around 10:20 AM. Alice: Is there anything else I need to do? Bob: For now, avoid using your computer for sensitive tasks. We’ll also reset your passwords from a different device and enable two-factor authentication on your accounts. Alice: Thanks, Bob. I’ll follow these steps immediately.\\nAnswer:\\x1b[32m {\\n \"Email\": {\\n \"From\": \"support@banksecure.com\",\\n \"Subject\": \"Urgent: Verify Your Account Now\",\\n \"Content\": \"strange email asking to verify account details urgently\"\\n },\\n \"IP Address\": \"192.168.10.45\",\\n \"Domain\": \"banksecure.com\",\\n \"URLs\": [\\n \"http://banksecure-verification.com/login\",\\n \"http://banksecure-verification.com/account-details\"\\n ],\\n \"File\": {\\n \"Name\": \"AccountDetails.exe\",\\n \"Creation Time\": \"10:20 AM\",\\n \"MD5 Hash\": \"e99a18c428cb38d5f260853678922e03\"\\n },\\n \"Timestamps\": {\\n \"Visited at 10:15 AM\": \"http://banksecure-verification.com/login\",\\n \"Visited at 10:17 AM\": \"http://banksecure-verification.com/account-details\"\\n }\\n}\\x1b[0m\\n\\n\\n'" ] }, - "execution_count": 19, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -252,9 +372,35 @@ "turbo.inspect_history(n=1)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## A tutorial to identify `evidence relationship` from a cyber incident report\n", + "\n", + "The cyber incident report records a conversation between an IT Security Specialist and an Employee. The conversation describes an email phishing attack scenario.\n", + "\n", + "### Goal\n", + "- In addition to a list of evidence entities, we want to identify a list of `relationships` between entities" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 1: Define a signature that identifies a list of `relationships` in the conversation\n", + "\n", + "It is important to note that:\n", + "- There is ONE input \n", + " - Cyber incident conversation\n", + "- There are `TWO` outputs:\n", + " - a list of entities\n", + " - a list of relationships" + ] + }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -274,9 +420,20 @@ " )" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 2: A function that can receive two outputs\n", + "\n", + "We have to revise the function `generate_answer()` so that we can receive two outputs. The following function `generate_answers` can receive two outputs from a LLM (e.g, openAI)\n", + "- a list of entities\n", + "- a list of relationships" + ] + }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -306,9 +463,20 @@ " print(f\"The evidence has been saved to the file {output_file}\")" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 3: Execute code to generate evidences and relations\n", + "- Input 1: Signature: E`videnceRelationIdentifier`\n", + "- Input 2: a conversation\n", + "- Output 1: a file that saves entities and relations\n", + "- Output 2: a list of entities and relations" + ] + }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -319,7 +487,7 @@ " answer_relations='{\\n \"Email Header Analysis\": \"IP Address -> Domain\",\\n \"URL Analysis\": \"URL -> Domain\",\\n \"Browser History Analysis\": \"URL -> Timestamp\",\\n \"File Analysis\": \"File Name -> Timestamp, File Name -> MD5 Hash\",\\n \"Malware Analysis\": \"MD5 Hash -> Malware Database\"\\n}',\n", " answer_evidence='{\\n \"Email Sender\": \"support@banksecure.com\",\\n \"Email Subject\": \"Urgent: Verify Your Account Now\",\\n \"IP Address\": \"192.168.10.45\",\\n \"Domain\": \"banksecure.com\",\\n \"Domain Registration\": \"Russia\",\\n \"URL\": \"http://banksecure-verification.com/login\",\\n \"URL Registration Date\": \"Two days ago\",\\n \"File Name\": \"AccountDetails.exe\",\\n \"File Creation Timestamp\": \"10:20 AM\",\\n \"MD5 Hash\": \"e99a18c428cb38d5f260853678922e03\"\\n}'\n", ")\n", - "The evidence has been saved to the file 01_output_evidence_entity_relation.txt\n" + "The evidence has been saved to the file 01_output_entity_relation.txt\n" ] } ], @@ -338,7 +506,9 @@ "execution_count": null, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "turbo.inspect_history(n=1)" + ] } ], "metadata": { diff --git a/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/01_output_entity.txt b/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/01_output_entity.txt index a35d365..2ca5de6 100644 --- a/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/01_output_entity.txt +++ b/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/01_output_entity.txt @@ -1,14 +1,22 @@ { - "Email From": "support@banksecure.com", - "Email Subject": "Urgent: Verify Your Account Now", + "Email": { + "From": "support@banksecure.com", + "Subject": "Urgent: Verify Your Account Now", + "Content": "strange email asking to verify account details urgently" + }, "IP Address": "192.168.10.45", "Domain": "banksecure.com", - "Actual Domain Registration": "Russia", - "URL Clicked": "http://banksecure-verification.com/login", - "URL Visited 1": "http://banksecure-verification.com/login", - "URL Visited 2": "http://banksecure-verification.com/account-details", - "File Downloaded": "AccountDetails.exe", - "File Creation Time": "10:20 AM", - "MD5 Hash": "e99a18c428cb38d5f260853678922e03", - "Network Logs Timestamp": "10:20 AM" + "URLs": [ + "http://banksecure-verification.com/login", + "http://banksecure-verification.com/account-details" + ], + "File": { + "Name": "AccountDetails.exe", + "Creation Time": "10:20 AM", + "MD5 Hash": "e99a18c428cb38d5f260853678922e03" + }, + "Timestamps": { + "Visited at 10:15 AM": "http://banksecure-verification.com/login", + "Visited at 10:17 AM": "http://banksecure-verification.com/account-details" + } } \ No newline at end of file diff --git a/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/02_evidence_knowledge_dot_generator.ipynb b/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/02_evidence_knowledge_dot_generator.ipynb index 1b84784..54768e3 100644 --- a/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/02_evidence_knowledge_dot_generator.ipynb +++ b/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/02_evidence_knowledge_dot_generator.ipynb @@ -1,26 +1,64 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## A tutorial to visualize forensic evidence and relationships\n", + "\n", + "### Motivation\n", + "- An evidence graph can enhance investigators' understanding of evidence entities and their relationships.\n", + "\n", + "### Goal\n", + "- Familiar with Graph Visualization Software (graphviz)\n", + " - an open-source graph visualization software developed by AT&T Labs Research.\n", + "- Generate graph directly from the conversation\n", + "- Gain criminal insights visually using graphviz. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 1: Download libraries and files for the lab\n", + "- Make use you download necessary library and files. \n", + "- All downloaded and saved files can be located in the `content` folder if using google Colab" + ] + }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ + "# uncomment the commands to download libraries and files\n", + "#!pip install python-dotenv\n", + "#!pip install dspy-ai\n", "#!pip install graphviz\n", + "# !wget https://raw.githubusercontent.com/frankwxu/digital-forensics-lab/main/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/conversation.txt\n", "\n", "import dspy\n", "import os\n", "import openai\n", "import json\n", "from dotenv import load_dotenv\n", - "\n", "from graphviz import Source\n", "from IPython.display import display" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 2: Config DSPy with openAI \n", + "- You `MUST` have an openAI api key\n", + "- load an openAI api key from `openai_api_key.txt` file\n", + "- or, hard code your open api key" + ] + }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -43,48 +81,31 @@ "\n", "\n", "def set_dspy_hardcode_openai_key():\n", - " os.environ[\"OPENAI_API_KEY\"] = (\n", - " \"sk-proj-yourapikeyhere\"\n", - " )\n", + " os.environ[\"OPENAI_API_KEY\"] = \"sk-proj-yourapikeyhere\"\n", " openai.api_key = os.environ[\"OPENAI_API_KEY\"]\n", - " turbo = dspy.OpenAI(model=\"gpt-3.5-turbo\", temperature=0, max_tokens=2000)\n", + " turbo = dspy.OpenAI(model=\"gpt-3.5-turbo\", temperature=0, max_tokens=2000)\n", " dspy.settings.configure(lm=turbo)\n", " return turbo\n", "\n", - "turbo=set_dspy()\n", - "# comment out set_dspy() and use set_dspy_hardcode_openai_key is your option\n", + "\n", + "# provide `openai_api_key.txt` with your openAI api key\n", + "turbo = set_dspy()\n", + "# optionally, hard code your openAI api key at line 21\n", "# turbo=set_dspy_hardcode_openai_key()" ] }, { - "cell_type": "code", - "execution_count": 3, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "def load_text_file(file_path):\n", - " \"\"\"\n", - " Load a text file and return its contents as a string.\n", + "### Step 3: Load the cyber incident repot (e.g., conversation)\n", "\n", - " Parameters:\n", - " file_path (str): The path to the text file.\n", - "\n", - " Returns:\n", - " str: The contents of the text file.\n", - " \"\"\"\n", - " try:\n", - " with open(file_path, \"r\") as file:\n", - " contents = file.read()\n", - " return contents\n", - " except FileNotFoundError:\n", - " return \"File not found.\"\n", - " except Exception as e:\n", - " return f\"An error occurred: {e}\"\n" + "- the same conversation as previous tutorial" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -134,31 +155,87 @@ } ], "source": [ + "def load_text_file(file_path):\n", + " \"\"\"\n", + " Load a text file and return its contents as a string.\n", + "\n", + " Parameters:\n", + " file_path (str): The path to the text file.\n", + "\n", + " Returns:\n", + " str: The contents of the text file.\n", + " \"\"\"\n", + " try:\n", + " with open(file_path, \"r\") as file:\n", + " contents = file.read()\n", + " return contents\n", + " except FileNotFoundError:\n", + " return \"File not found.\"\n", + " except Exception as e:\n", + " return f\"An error occurred: {e}\"\n", + "\n", "conversation = load_text_file(\"conversation.txt\")\n", "print(conversation)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 4: Tell an LLM `WHAT` are the inputs/outputs by defining DSPy: Signature \n", + "\n", + "- Goal\n", + " - to generate a simple plaintext file, call `DOT`. In DOT, you define nodes and edges.\n", + " - Graphviz uses ``DOT` to describe and visualize graphs. \n", + "\n", + "- The following signature identifies a list of evidence entities and relationships based on the conversation\n", + " - Inherit from `dspy.Signature`\n", + " - Exact `ONE` input, e.g., the conversation \n", + " - Exact `ONE` output, a DOT file" + ] + }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "class DotGenerator(dspy.Signature):\n", - " \"\"\"Generate a evidence knowledge graph based on a conversation between an IT Security Specialist and an Employee. \"\"\"\n", + " \"\"\"Generate a foresnic evidence knowledge graph based on a conversation between an IT Security Specialist and an Employee. \"\"\"\n", "\n", " question: str = dspy.InputField(\n", " desc=\"a conversation describing a cyber incident between an IT Security Specialist and an employee.\"\n", " )\n", "\n", " answer: str = dspy.OutputField(\n", - " desc=\"a graph in a dot format. The nodes of the graph are evidence entities and the edges of the graph are the relationship between evidence entities. A dot format is primarily associated with Graphviz, a graph visualization software. For example, a dot should looks like: digraph incident_name {...}. Don't include `````` \"\n", + " desc=\"a graph in a dot format. The nodes of the graph are evidence entities and the edges of the graph are the relationships between evidence entities. A DOT format is primarily associated with Graphviz, a graph visualization software. For example, a DOT should looks like: digraph incident_name {...}. Don't include `````` \"\n", " )" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 5: Tell an LLM `HOW` to generate answer: \n", + "\n", + "Generates and saves DOT file from a conversation using a specified signature.\n", + "\n", + "#### Parameters:\n", + "- `signature` (dspy.Signature): The signature defining the input and output structure for evidence identification.\n", + "- `conversation` (str): The conversation text to analyze for evidence.\n", + "- `output_file` (str): The file path where the identified evidence will be saved in DOT format.\n", + "\n", + "#### Notes:\n", + "- This function uses [`dspy.ChainOfThought`](https://arxiv.org/pdf/2201.11903) to process the conversation and create sknowledge graph\n", + "- Other options include \n", + " - `dspy.ChainOfThoughtWithHint` : Provide hints for reasoning\n", + " - `dspy.Retrieve`: Retrieves passages from a retriever module\n", + " - `dspy.ReAct`: Consists steps of Thought, Action, and Observation.\n" + ] + }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ @@ -173,28 +250,38 @@ " print(f\"The evidence has been saved to the file {output_file}\")" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 6: Call LLM to generate the graph in a `.DOT` file" + ] + }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "digraph cyber_incident {\n", - " \"Suspicious Email\" -> \"IP Address: 192.168.10.45\"\n", - " \"Suspicious Email\" -> \"Domain: banksecure.com (Registered to someone in Russia)\"\n", - " \"Suspicious Email\" -> \"URL: http://banksecure-verification.com/login\"\n", - " \"Suspicious Email\" -> \"URL: http://banksecure-verification.com/account-details\"\n", - " \"URL: http://banksecure-verification.com/login\" -> \"Domain: banksecure-verification.com (Registered 2 days ago)\"\n", - " \"URL: http://banksecure-verification.com/account-details\" -> \"Domain: banksecure-verification.com (Registered 2 days ago)\"\n", - " \"Browser History Entries\" -> \"Visited at 10:15 AM: http://banksecure-verification.com/login\"\n", - " \"Browser History Entries\" -> \"Visited at 10:17 AM: http://banksecure-verification.com/account-details\"\n", - " \"Downloaded File: AccountDetails.exe\" -> \"Created at 10:20 AM\"\n", - " \"Downloaded File: AccountDetails.exe\" -> \"MD5 Hash: e99a18c428cb38d5f260853678922e03 (Matched known malware)\"\n", - " \"MD5 Hash: e99a18c428cb38d5f260853678922e03 (Matched known malware)\" -> \"Quarantined File: AccountDetails.exe\"\n", - " \"IP Address: 192.168.10.45\" -> \"Network Logs Analysis around 10:20 AM\"\n", + "digraph phishing_incident {\n", + " \"Email from support@banksecure.com\" -> \"IP address 192.168.10.45\";\n", + " \"Email from support@banksecure.com\" -> \"Domain banksecure.com\";\n", + " \"Domain banksecure.com\" -> \"Registered to someone in Russia\";\n", + " \"URL http://banksecure-verification.com/login\" -> \"Domain registered two days ago\";\n", + " \"URL http://banksecure-verification.com/account-details\" -> \"Domain registered two days ago\";\n", + " \"Browser history entries\" -> \"Visited at 10:15 AM: http://banksecure-verification.com/login\";\n", + " \"Browser history entries\" -> \"Visited at 10:17 AM: http://banksecure-verification.com/account-details\";\n", + " \"Downloaded file AccountDetails.exe\" -> \"Created at 10:20 AM\";\n", + " \"Downloaded file AccountDetails.exe\" -> \"MD5 hash e99a18c428cb38d5f260853678922e03\";\n", + " \"MD5 hash e99a18c428cb38d5f260853678922e03\" -> \"Matches known malware in database\";\n", + " \"IP address 192.168.10.45\" -> \"Network connections established\";\n", + " \"Security measures\" -> \"Clear browser history and cache\";\n", + " \"Security measures\" -> \"Run full antivirus scan\";\n", + " \"Security measures\" -> \"Reset passwords from different device\";\n", + " \"Security measures\" -> \"Enable two-factor authentication\";\n", "}\n" ] } @@ -208,9 +295,16 @@ ")" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 7: Render the graph based on the `.DOT` file " + ] + }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -221,173 +315,227 @@ " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n", "\n", - "\n", - "\n", + "\n", + "\n", "\n", - "cyber_incident\n", - "\n", - "\n", + "phishing_incident\n", + "\n", + "\n", "\n", - "Suspicious Email\n", - "\n", - "Suspicious Email\n", + "Email from support@banksecure.com\n", + "\n", + "Email from support@banksecure.com\n", "\n", - "\n", + "\n", "\n", - "IP Address: 192.168.10.45\n", - "\n", - "IP Address: 192.168.10.45\n", + "IP address 192.168.10.45\n", + "\n", + "IP address 192.168.10.45\n", "\n", - "\n", + "\n", "\n", - "Suspicious Email->IP Address: 192.168.10.45\n", - "\n", - "\n", + "Email from support@banksecure.com->IP address 192.168.10.45\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "Domain: banksecure.com (Registered to someone in Russia)\n", - "\n", - "Domain: banksecure.com (Registered to someone in Russia)\n", + "Domain banksecure.com\n", + "\n", + "Domain banksecure.com\n", "\n", - "\n", + "\n", "\n", - "Suspicious Email->Domain: banksecure.com (Registered to someone in Russia)\n", - "\n", - "\n", + "Email from support@banksecure.com->Domain banksecure.com\n", + "\n", + "\n", "\n", - "\n", + "\n", + "\n", + "Network connections established\n", + "\n", + "Network connections established\n", + "\n", + "\n", + "\n", + "IP address 192.168.10.45->Network connections established\n", + "\n", + "\n", + "\n", + "\n", "\n", - "URL: http://banksecure-verification.com/login\n", - "\n", - "URL: http://banksecure-verification.com/login\n", + "Registered to someone in Russia\n", + "\n", + "Registered to someone in Russia\n", "\n", - "\n", + "\n", "\n", - "Suspicious Email->URL: http://banksecure-verification.com/login\n", - "\n", - "\n", + "Domain banksecure.com->Registered to someone in Russia\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "URL: http://banksecure-verification.com/account-details\n", - "\n", - "URL: http://banksecure-verification.com/account-details\n", + "URL http://banksecure-verification.com/login\n", + "\n", + "URL http://banksecure-verification.com/login\n", "\n", - "\n", - "\n", - "Suspicious Email->URL: http://banksecure-verification.com/account-details\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Network Logs Analysis around 10:20 AM\n", - "\n", - "Network Logs Analysis around 10:20 AM\n", - "\n", - "\n", - "\n", - "IP Address: 192.168.10.45->Network Logs Analysis around 10:20 AM\n", - "\n", - "\n", - "\n", - "\n", + "\n", "\n", - "Domain: banksecure-verification.com (Registered 2 days ago)\n", - "\n", - "Domain: banksecure-verification.com (Registered 2 days ago)\n", + "Domain registered two days ago\n", + "\n", + "Domain registered two days ago\n", "\n", - "\n", - "\n", - "URL: http://banksecure-verification.com/login->Domain: banksecure-verification.com (Registered 2 days ago)\n", - "\n", - "\n", + "\n", + "\n", + "URL http://banksecure-verification.com/login->Domain registered two days ago\n", + "\n", + "\n", "\n", - "\n", - "\n", - "URL: http://banksecure-verification.com/account-details->Domain: banksecure-verification.com (Registered 2 days ago)\n", - "\n", - "\n", - "\n", - "\n", + "\n", "\n", - "Browser History Entries\n", - "\n", - "Browser History Entries\n", + "URL http://banksecure-verification.com/account-details\n", + "\n", + "URL http://banksecure-verification.com/account-details\n", + "\n", + "\n", + "\n", + "URL http://banksecure-verification.com/account-details->Domain registered two days ago\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Browser history entries\n", + "\n", + "Browser history entries\n", "\n", "\n", - "\n", + "\n", "Visited at 10:15 AM: http://banksecure-verification.com/login\n", - "\n", - "Visited at 10:15 AM: http://banksecure-verification.com/login\n", + "\n", + "Visited at 10:15 AM: http://banksecure-verification.com/login\n", "\n", - "\n", - "\n", - "Browser History Entries->Visited at 10:15 AM: http://banksecure-verification.com/login\n", - "\n", - "\n", + "\n", + "\n", + "Browser history entries->Visited at 10:15 AM: http://banksecure-verification.com/login\n", + "\n", + "\n", "\n", "\n", - "\n", - "Visited at 10:17 AM: http://banksecure-verification.com/account-details\n", - "\n", - "Visited at 10:17 AM: http://banksecure-verification.com/account-details\n", - "\n", - "\n", - "\n", - "Browser History Entries->Visited at 10:17 AM: http://banksecure-verification.com/account-details\n", - "\n", - "\n", - "\n", - "\n", "\n", - "Downloaded File: AccountDetails.exe\n", - "\n", - "Downloaded File: AccountDetails.exe\n", + "Visited at 10:17 AM: http://banksecure-verification.com/account-details\n", + "\n", + "Visited at 10:17 AM: http://banksecure-verification.com/account-details\n", + "\n", + "\n", + "\n", + "Browser history entries->Visited at 10:17 AM: http://banksecure-verification.com/account-details\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Downloaded file AccountDetails.exe\n", + "\n", + "Downloaded file AccountDetails.exe\n", "\n", "\n", - "\n", - "Created at 10:20 AM\n", - "\n", - "Created at 10:20 AM\n", - "\n", - "\n", - "\n", - "Downloaded File: AccountDetails.exe->Created at 10:20 AM\n", - "\n", - "\n", - "\n", - "\n", "\n", - "MD5 Hash: e99a18c428cb38d5f260853678922e03 (Matched known malware)\n", - "\n", - "MD5 Hash: e99a18c428cb38d5f260853678922e03 (Matched known malware)\n", + "Created at 10:20 AM\n", + "\n", + "Created at 10:20 AM\n", "\n", - "\n", - "\n", - "Downloaded File: AccountDetails.exe->MD5 Hash: e99a18c428cb38d5f260853678922e03 (Matched known malware)\n", - "\n", - "\n", + "\n", + "\n", + "Downloaded file AccountDetails.exe->Created at 10:20 AM\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "Quarantined File: AccountDetails.exe\n", - "\n", - "Quarantined File: AccountDetails.exe\n", + "MD5 hash e99a18c428cb38d5f260853678922e03\n", + "\n", + "MD5 hash e99a18c428cb38d5f260853678922e03\n", "\n", - "\n", - "\n", - "MD5 Hash: e99a18c428cb38d5f260853678922e03 (Matched known malware)->Quarantined File: AccountDetails.exe\n", - "\n", - "\n", + "\n", + "\n", + "Downloaded file AccountDetails.exe->MD5 hash e99a18c428cb38d5f260853678922e03\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Matches known malware in database\n", + "\n", + "Matches known malware in database\n", + "\n", + "\n", + "\n", + "MD5 hash e99a18c428cb38d5f260853678922e03->Matches known malware in database\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Security measures\n", + "\n", + "Security measures\n", + "\n", + "\n", + "\n", + "Clear browser history and cache\n", + "\n", + "Clear browser history and cache\n", + "\n", + "\n", + "\n", + "Security measures->Clear browser history and cache\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Run full antivirus scan\n", + "\n", + "Run full antivirus scan\n", + "\n", + "\n", + "\n", + "Security measures->Run full antivirus scan\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Reset passwords from different device\n", + "\n", + "Reset passwords from different device\n", + "\n", + "\n", + "\n", + "Security measures->Reset passwords from different device\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Enable two-factor authentication\n", + "\n", + "Enable two-factor authentication\n", + "\n", + "\n", + "\n", + "Security measures->Enable two-factor authentication\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -399,7 +547,7 @@ "'02_output_email_analysis.png'" ] }, - "execution_count": 11, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -413,6 +561,84 @@ "graph.render(\"02_output_email_analysis\", format=\"png\", cleanup=True)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 7: Inspect the last prompt send to the LLM\n", + "\n", + "You want to check:\n", + "- Prompt Description Section: Description in the signature\n", + "- Format Section: `Following the following format.` \n", + " - Pay attention to a new inserted field `REASONING: Let's think step by step ...`\n", + "- Result Section: a forensic knowledge graph in `.DOT`" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "Generate a foresnic evidence knowledge graph based on a conversation between an IT Security Specialist and an Employee.\n", + "\n", + "---\n", + "\n", + "Follow the following format.\n", + "\n", + "Question: a conversation describing a cyber incident between an IT Security Specialist and an employee.\n", + "Reasoning: Let's think step by step in order to ${produce the answer}. We ...\n", + "Answer: a graph in a dot format. The nodes of the graph are evidence entities and the edges of the graph are the relationships between evidence entities. A DOT format is primarily associated with Graphviz, a graph visualization software. For example, a DOT should looks like: digraph incident_name {...}. Don't include ``````\n", + "\n", + "---\n", + "\n", + "Question: Alice: Hey Bob, I just got a strange email from support@banksecure.com. It says I need to verify my account details urgently. The subject line was \"Urgent: Verify Your Account Now\". The email looks suspicious to me. Bob: Hi Alice, that does sound fishy. Can you forward me the email? I’ll take a look at the headers to see where it came from. Alice: Sure, forwarding it now. Bob: Got it. Let’s see... The email came from IP address 192.168.10.45, but the domain banksecure.com is not their official domain. It's actually registered to someone in Russia. Alice: That’s definitely not right. Should I be worried? Bob: We should investigate further. Did you click on any links or download any attachments? Alice: I did click on a link that took me to a page asking for my login credentials. I didn't enter anything though. The URL was http://banksecure-verification.com/login. Bob: Good call on not entering your details. Let’s check the URL. This domain was just registered two days ago. It’s highly likely it’s a phishing site. Alice: What should I do next? Bob: First, clear your browser history and cache. Also, run a full antivirus scan on your computer. Can you also provide me with any browser history entries and cookies from that session? Alice: I’ve cleared the history and started the antivirus scan. Here are the relevant entries from my browser history: Visited at 10:15 AM: http://banksecure-verification.com/login Visited at 10:17 AM: http://banksecure-verification.com/account-details Bob: Thanks. I’ll analyze these URLs further. Also, check if there are any suspicious files downloaded or present in your downloads folder. Look for anything unusual. Alice: There's a file named \"AccountDetails.exe\" that I don’t remember downloading. It was created at 10:20 AM. Bob: Definitely suspicious. Don’t open it. Let’s hash the file to verify its integrity. Can you run an MD5 hash on it? Alice: Done. The MD5 hash is e99a18c428cb38d5f260853678922e03. Bob: This hash matches known malware in our database. We’ll need to quarantine it and check if it has established any network connections. I’ll look into our network logs for the IP 192.168.10.45 around 10:20 AM. Alice: Is there anything else I need to do? Bob: For now, avoid using your computer for sensitive tasks. We’ll also reset your passwords from a different device and enable two-factor authentication on your accounts. Alice: Thanks, Bob. I’ll follow these steps immediately.\n", + "Reasoning: Let's think step by step in order to produce the answer. We will start by identifying the evidence entities mentioned in the conversation, such as email headers, IP addresses, domain registration information, URLs, browser history entries, cookies, downloaded files, MD5 hashes, malware database, network logs, and security measures like clearing browser history, running antivirus scans, hashing files, and resetting passwords. We will then establish the relationships between these evidence entities based on the conversation provided.\n", + "\n", + "Answer:\n", + "digraph phishing_incident {\n", + " \"Email from support@banksecure.com\" -> \"IP address 192.168.10.45\";\n", + " \"Email from support@banksecure.com\" -> \"Domain banksecure.com\";\n", + " \"Domain banksecure.com\" -> \"Registered to someone in Russia\";\n", + " \"URL http://banksecure-verification.com/login\" -> \"Domain registered two days ago\";\n", + " \"URL http://banksecure-verification.com/account-details\" -> \"Domain registered two days ago\";\n", + " \"Browser history entries\" -> \"Visited at 10:15 AM: http://banksecure-verification.com/login\";\n", + " \"Browser history entries\" -> \"Visited at 10:17 AM: http://banksecure-verification.com/account-details\";\n", + " \"Downloaded file AccountDetails.exe\" -> \"Created at 10:20 AM\";\n", + " \"Downloaded file AccountDetails.exe\" -> \"MD5 hash e99a18c428cb38d5f260853678922e03\";\n", + " \"MD5 hash e99a18c428cb38d5f260853678922e03\" -> \"Matches known malware in database\";\n", + " \"IP address 192.168.10.45\" -> \"Network connections established\";\n", + " \"Security measures\" -> \"Clear browser history and cache\";\n", + " \"Security measures\" -> \"Run full antivirus scan\";\n", + " \"Security measures\" -> \"Reset passwords from different device\";\n", + " \"Security measures\" -> \"Enable two-factor authentication\";\n", + "}\n", + "\n", + "\n", + "\n" + ] + }, + { + "data": { + "text/plain": [ + "'\\n\\n\\nGenerate a foresnic evidence knowledge graph based on a conversation between an IT Security Specialist and an Employee.\\n\\n---\\n\\nFollow the following format.\\n\\nQuestion: a conversation describing a cyber incident between an IT Security Specialist and an employee.\\nReasoning: Let\\'s think step by step in order to ${produce the answer}. We ...\\nAnswer: a graph in a dot format. The nodes of the graph are evidence entities and the edges of the graph are the relationships between evidence entities. A DOT format is primarily associated with Graphviz, a graph visualization software. For example, a DOT should looks like: digraph incident_name {...}. Don\\'t include ``````\\n\\n---\\n\\nQuestion: Alice: Hey Bob, I just got a strange email from support@banksecure.com. It says I need to verify my account details urgently. The subject line was \"Urgent: Verify Your Account Now\". The email looks suspicious to me. Bob: Hi Alice, that does sound fishy. Can you forward me the email? I’ll take a look at the headers to see where it came from. Alice: Sure, forwarding it now. Bob: Got it. Let’s see... The email came from IP address 192.168.10.45, but the domain banksecure.com is not their official domain. It\\'s actually registered to someone in Russia. Alice: That’s definitely not right. Should I be worried? Bob: We should investigate further. Did you click on any links or download any attachments? Alice: I did click on a link that took me to a page asking for my login credentials. I didn\\'t enter anything though. The URL was http://banksecure-verification.com/login. Bob: Good call on not entering your details. Let’s check the URL. This domain was just registered two days ago. It’s highly likely it’s a phishing site. Alice: What should I do next? Bob: First, clear your browser history and cache. Also, run a full antivirus scan on your computer. Can you also provide me with any browser history entries and cookies from that session? Alice: I’ve cleared the history and started the antivirus scan. Here are the relevant entries from my browser history: Visited at 10:15 AM: http://banksecure-verification.com/login Visited at 10:17 AM: http://banksecure-verification.com/account-details Bob: Thanks. I’ll analyze these URLs further. Also, check if there are any suspicious files downloaded or present in your downloads folder. Look for anything unusual. Alice: There\\'s a file named \"AccountDetails.exe\" that I don’t remember downloading. It was created at 10:20 AM. Bob: Definitely suspicious. Don’t open it. Let’s hash the file to verify its integrity. Can you run an MD5 hash on it? Alice: Done. The MD5 hash is e99a18c428cb38d5f260853678922e03. Bob: This hash matches known malware in our database. We’ll need to quarantine it and check if it has established any network connections. I’ll look into our network logs for the IP 192.168.10.45 around 10:20 AM. Alice: Is there anything else I need to do? Bob: For now, avoid using your computer for sensitive tasks. We’ll also reset your passwords from a different device and enable two-factor authentication on your accounts. Alice: Thanks, Bob. I’ll follow these steps immediately.\\nReasoning: Let\\'s think step by step in order to\\x1b[32m produce the answer. We will start by identifying the evidence entities mentioned in the conversation, such as email headers, IP addresses, domain registration information, URLs, browser history entries, cookies, downloaded files, MD5 hashes, malware database, network logs, and security measures like clearing browser history, running antivirus scans, hashing files, and resetting passwords. We will then establish the relationships between these evidence entities based on the conversation provided.\\n\\nAnswer:\\ndigraph phishing_incident {\\n \"Email from support@banksecure.com\" -> \"IP address 192.168.10.45\";\\n \"Email from support@banksecure.com\" -> \"Domain banksecure.com\";\\n \"Domain banksecure.com\" -> \"Registered to someone in Russia\";\\n \"URL http://banksecure-verification.com/login\" -> \"Domain registered two days ago\";\\n \"URL http://banksecure-verification.com/account-details\" -> \"Domain registered two days ago\";\\n \"Browser history entries\" -> \"Visited at 10:15 AM: http://banksecure-verification.com/login\";\\n \"Browser history entries\" -> \"Visited at 10:17 AM: http://banksecure-verification.com/account-details\";\\n \"Downloaded file AccountDetails.exe\" -> \"Created at 10:20 AM\";\\n \"Downloaded file AccountDetails.exe\" -> \"MD5 hash e99a18c428cb38d5f260853678922e03\";\\n \"MD5 hash e99a18c428cb38d5f260853678922e03\" -> \"Matches known malware in database\";\\n \"IP address 192.168.10.45\" -> \"Network connections established\";\\n \"Security measures\" -> \"Clear browser history and cache\";\\n \"Security measures\" -> \"Run full antivirus scan\";\\n \"Security measures\" -> \"Reset passwords from different device\";\\n \"Security measures\" -> \"Enable two-factor authentication\";\\n}\\x1b[0m\\n\\n\\n'" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "turbo.inspect_history(n=1)" + ] + }, { "cell_type": "code", "execution_count": null, diff --git a/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/02_output.dot b/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/02_output.dot index 2733ba7..b31b7f5 100644 --- a/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/02_output.dot +++ b/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/02_output.dot @@ -1,5 +1,17 @@ -digraph file_not_found { - File [label="File" shape="rectangle" color="blue"] - NotFound [label="Not Found" shape="ellipse" color="red"] - File -> NotFound [label="Indicator"] +digraph phishing_incident { + "Email from support@banksecure.com" -> "IP address 192.168.10.45"; + "Email from support@banksecure.com" -> "Domain banksecure.com"; + "Domain banksecure.com" -> "Registered to someone in Russia"; + "URL http://banksecure-verification.com/login" -> "Domain registered two days ago"; + "URL http://banksecure-verification.com/account-details" -> "Domain registered two days ago"; + "Browser history entries" -> "Visited at 10:15 AM: http://banksecure-verification.com/login"; + "Browser history entries" -> "Visited at 10:17 AM: http://banksecure-verification.com/account-details"; + "Downloaded file AccountDetails.exe" -> "Created at 10:20 AM"; + "Downloaded file AccountDetails.exe" -> "MD5 hash e99a18c428cb38d5f260853678922e03"; + "MD5 hash e99a18c428cb38d5f260853678922e03" -> "Matches known malware in database"; + "IP address 192.168.10.45" -> "Network connections established"; + "Security measures" -> "Clear browser history and cache"; + "Security measures" -> "Run full antivirus scan"; + "Security measures" -> "Reset passwords from different device"; + "Security measures" -> "Enable two-factor authentication"; } \ No newline at end of file diff --git a/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/02_output_email_analysis.png b/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/02_output_email_analysis.png index d5fd79b0554229cee50f3d3abd9054e8400c58c0..91c23ea6fb68e1147f61595bb31542caff1aeda1 100644 GIT binary patch literal 117002 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%0Ab^N^h8Lvzp76nT zy9BrP@U47S$u0EQwj49;6}6-6y*R@6Q(ucp3-Dvqv7H40ZQ+A?T5C)#DUhq*weBUD zH293}TYVTz7(%Y280DKGHv%>`9BWTc4x!u8cvH{oC4}kM_IBwtc6708U6DmE1B})! zP-aEc=g%#C+IOj-OgZqZtHLwx`TVtci|kWHx%Yt44mH#fHEoA~FwduOL3SDdO960i zD(MmqhAA3mt@5jxnVJ8qv3+YRqgBL+@n>Q}4|U{q!^w65iLlr6)E0w8Yfk`BtjU!5 zhk+5+PRPc9=>Zg**0yGar*^AHn&9y~@BPx;memVJpu;S059A(O^>zUuAQ*N$o+UnjU`wOYF1?}4@*#s6Yg0<`>OMZ+RYF&nYPJ5*R&cvd2?6#kymo`x#cw7fw5YwmjrfNu-fDV-n_GQH9>tWpc6rd< zI1eTgHi~O4>8i2j;M2OIl@h9w)7<=gaVe=Q8233!i13NshEt&w&(*4P5nJJiDhtdh zuz`Y)fY@wTYPh_}v2xsZg)dFh3TnFUncdzF?#J~Oy;(lqxIYieU-u$n1#a`IbR28b z`00roCg7~oF^m~#V7%Rp>Id&)raf*7a8(RcSx-+-p-~GSQcbXg-LIj7lNA_c;(rB1 z{9b#FFZ@fuj|RfFb6Kg0>E69U!=@`7nAnb3Gh_UR7ZjDF%C#bF)69Hn6zyxgtu}JYQNU9t@?+RmG!Bt>=Rd4 zo>(?L;hZRmbL^JCvimFL@k&f;5iok;I+T49Rwv0|o#t{>q0Hb6trpWbmk-<_*m3m_ zvX{^{uD7P@`*)!cQfNKI2`-rdkWbiuq|m&Jj}L_A(c%rHZ|rk8GJYGJcrZvfp*gn> z2uhA9H_x@Y0CL+(gCC6H=hgECUdiVCP!?hOh%eU~NawGtbCx)#Go&dG*Iapv6JlUH%{`@kvs@P<8 zvpyO0Mv;i_&|zZtr@6Imk9(iVW%&l)N7w}z$o>BV0oHUf$MWU-(zlI`scL0zRc+x ztdf1ouJG0k#=Q#7>hBvf?G7M#YoQT`of@6*B2~wJ%l(7bu_#{pv!@EMvx88z+Zolt{9X6dJ5 zIm}rCD6({^P;LC$)y|(3%XZ6C1u}r~16Tsr&qq#dKssLJ;CQ ze*gaP(mCi0A~hc|KR^|}i;ngKBzF!%Lu*RIOmpdXijCxn4_H5ids;SQ)he62?7Jft zP1T?wK+W|pdc-atAD5MzS#1s)-er)U+S>8q`~{x>BuGkbq)P;xkN`=`MtqSF=o-|C zE~&xbUXjxJa(Hd2sUDIB_K8drHqaYt97>v~fr`)Ku9F z4DA0_yrDVbZ>8r}6w?A^UL43z^AiZEdZbj+B0vnD`bUvl9_2kQc7sySkpm4agJ|>lznS zP<{vO5vi$cGWg^G32o28uDJ2|QbbA$D=Ls)IyP`?%Q<6>RijvJe>IX``T|NpR~Iwm zwC((}$;fJS(IPWDI~e#Qc~eAmG#$`yKZ3{LXas-!NQeBu(#oo)E<{r`U;8dt@NWnn z!{WT1o;Ie(01GTx(!q;bo7woW@MAk6DamT^d05`X-tC<25n$`&Xq+l*2tgg6f-i`U>*a0h`tyyUa2S42*@$8ZA^PwJ^ppvatL#uZdXC8T<+t8GUNAf6Q`> zSKgr)oEhIYwKe0zN#eCT=JpMGV~CRT2Fn&RrjRRaTehH-oZPD85vdGc&tR z%b1Sa>mh)udoZ5zL{TvkIu`TW`zorcZ-I~Dz;x$25dXL3<>k7mbNXK#lV|wbU1FEA z4vea7ZN`R(-Q41SMyy~)i-$d}Wu&Btq+^*C3>8wdpAPIWq1|08QhJAr{5!0ytca<- z{=P)aOc|I>0gS*`$a4ool()Zld!O1Enm4k&^COcQyPU&-&10f#xl4chLKp6tKqR) z`mUL*;dW^3n$2SB+rT?EG<27Un7HXD?|7cu9V8_`rdAwuk>2Y@6@iNZv(C3+WNRBQ zbFdZ1us5!1eVH=${d?;o2fwmYbQ7ApqtsAbwIa> zIz1VawuO_cibjSK3qnbBuAg%wA3J8q-0V(@k5W?!05r+zD@&hrfn z<~#@5MrnUuN;4jd7CI~& z5UkNUD-8oPb92Ek1QrC{R0o)R0#tVV{ZTUNJIMcSyvBR(6!*R985xs=c^M~hfI|3&9)gaj3$?|71P@stM^Jt@#@PFus@Fq=ABQ$?z&eM&AG<#H_) z5(6(Ywg)(Qwml+tsrz;>%FNwYU*uXD+qozul*Kagy4q>JErzLPlxeAxhx?fjP{P}{ zZs|XxUPFjpV4$_bR4DIT=qjnKv4>30&fXg=EnTWiA5D#S5m_FkYzF-;J9%Ee45o;>CK`#j}a zt)2B*p*+S|6x_|_x- z=Qdu39?UsJs+U_QU<|f!26nKdTZFfnSXj_nn?<`dVHA2SO$IFWFh#4#nsJ4(I zw{DYH&HqPp)gt+03k!?H&^)y4NW@GxnQ41uXOZZZ@@1{^<`3K{W!s%j z*zLOB+bSGza;|%5Xvk_4)JQT6)Dc66c)85|sw(rKO>p>3wL9}*=$si&?9xu$Qe>5j zne?c4o%I-HOYFF=6ysTM}DGEH6N_obdeR=eLY-~YIi#OWBbyqk{HQQ>N zSn;QWu@0YNRuZ|b%?Vc3Rqw@5+23JYX!~r04Er5$K@K=;xBm4a^*p6iL9wgws=0S6 z?cj|uzVV71;l}yGpRyOv;4dr>OJbN!5>`iNH7;Ju?e!<15cW=~_|YCRTIClt7$c*j zjiZ-4QY^0WKtcZo!(DlL(BAtW`dud=xP|dKw5eN*pc6emS&+1q5>gedOppYR5g@51TDYeY4C&u_g?0-Of{1S*3Hdsv`8d$d` zjg5>!2(%7GU*VW9|Y3q3(@l0VUbQM@l0tUd7h&3v6JJ@hSuSZ5k zhLE);+P)5BP0ARFM2|d|KVBV}bS)iS!k;N(IgCYf#52%GoN9R(-tQu1j*<_swYG)` zs@eDT7^>)DY^zeiAMy+!YkJs^=8)3t zzd2_g+q|;sFrKnW;MvBp%^$V&Gh(KMcL1YFMT6~1dH}jC7}^X=l!!}*3!QxK^CU;f zzRby3ZRMU}x=z16Z6}mCgG6mQok!4isbwjPyOcK|=D|PCycwKLuOsIt+LsP0hN-!aG7jI#s%=j1h}L zhdn|XgZj3$Db?Yl$?E;g{W@DFsWM7f6BuU+i2!>?M61(aZyF5POd) z52~iF+raD0c-icN&cfu_*n!OM0E>$fT2mEnTE#qaj*i8%2k-KZT{Yz&D-~Qs%e@b4 z{>+_HwJ$&xm2%kn&<*A}I2O{Mf%Z?u|EhJ=(!(o|< zMC)(EUd$@10v>|JW(~YTVey>1*A%o2`xAxRaYknCf~vbsq1743n5mvrUN=WH;6GHH z?=k7Nwov>_+4oMk%}|AP=%c{k%i+^edJu5Y#)`99LVaDNc^Z}WY2ZSx^t*q|&c;Da zM#&2=^zUC4XCCw=?R3;>mZ3-gZx+C_N+Z8So0nHkFLr5QAX&&^x4+oMZ2Xtu63^0) z@^Pi@_p@Q##z|meD53~JsYW3v^|7c(0esnDm!*LP%C{=9VGZR}o6B|07jA*S6YVI6 zr&Z&M9@=~+(KS)6Rqu>cLm#)bsUQ2TF0qM;pNH-aj&1;3qqy6P_8uJGUwz0dx&}>d zhcTDIg?}TB9SrU3U_F(>7T%MdD=kJVXlf>M=J6J=Q1FeHaZ^bw^0R~v5^qcVMT z{qr<0GnQ?MSDD|HlW3cHsqPQF<}w&E>*J@#Xh% z&zdW)^R_Wq+t1IKTb=EEQ==7UvgF+1U`+Wy(+-{Q#+A7}f?v)r>sfL9QZd}3edpGA zQjJ<~vL_7|*u%*%u}A=&>G@q3gwVsIZlzm-`Z{#tk7o~_=5|VgC4QiTaIr8(zvJBq zo4Sk3KaR&!>IZF?JV>tYW{pFqVPbBM5l)u{ujWda0AsG9uw#LHkDL5Odmc=y1X;Z1JrNtB(6;-3$_nSYZ zZs}_@KWVgfEErz*dL!E*f7lSYZLQ~+#A$PZE}MyI(D*e;Z!>kdt+eC8;(ijjgsZcH z+fMn;$fxWKpVoDgqs6XRW(~vWP$KKjlUS410`3NatZ_<2zXGx8P({ z)1aO&+U>z{n^~$i130Bk(A{R+*x1;@li+pKdnzTxDa9U}lyr7=%ha(ulo~skptZbB z7oO9Ev&^Qbrg4k(8f6mwB%3~!Kr=kaXnL32JU!6tw01}%I4}(Z!vus!y&?`TO z`I4)(i^}tvk5?DFW_YY@58Xa8_YK<}7`f+_+3{6V`4Nb>8&t~-bZ)btYtk4X;YXc& zWsw7wUPtRK-ke=X%m#=YJpyO$Elfq4K687xAo*{|51!z)Z=WdTj})(32i0W9%3eAw z_mpmUIpEMnQ5BvWJ_y81e3M%zTk|j`b1E}q`~3ibF$SC=qz(NhI5-&EYEK$0*q=`4 zz*xf-1blWz?3O6sYG}5Y)A;b6a;wcI6_<6q1K(q4rgqTTN71cwg1O1sLML8e&~>`9 zKxM!gXd_*_Hd?G=Ahx@wx;XoP3Ywt(S9v)Phwq6O2aM`<_w{{rdjRpu^~KrQIS{%W zqHq>0L3Uo`-KQ=_SplPj6#U$VUh=^kI|KJeJVkzLdh5vdn+)+&vXu9&@HLu*Wsv>lifQ8i6Z&v(MvenbPcAgC&6d( z2oOC>m5((Y9WoQs({xB9r%sd*M5+%b7%uY%dJH+LgM14^<vvD$HeT)o0ivhvvNOw_G@Tp0H3ewKf>UH5C%d7EWzZv31b_R2%I3(dIBG*GF^&t zw-tG{pXmvX@XPRUMo?P9QOhR8*zsqI)eUP#$6T&~;i*<4Ty1Ofbld1($tGMkv-7Oa zRlD|dz&rU$Sxenp71t&W&Ga?a=|$8S zV-(G#cy0Q!^6lZ<5R?q{ij9Lzvs^vP>3dB$D!f0DOMhxGTd0U?NVP7dGh)~2+SmlL z$4aS{cYHEXZYI4sX!+4dTE_8x{ir;4@mj;FF3jx9g^+Pec|kkTBcPXUWvoUGrsgFP zR|Lj<>ZNHb(!M!2M7EgsZW~Bz81;sVNHyI&3Ipe#||PzZO2zr2ByHhYu7Yyjvu(k&&3Js25j=-g52 zN@XOSK-0P@&pq^8iAfH)OCIEjx4M=@Io0mZ7`w5m@C-PQWV~}EAI!4UmhwL**FrVwsLDkHjSw7za+@$%R(Dm6jf$tK)su*)6$9V7R!1&4nrD{X}z<@u@VcaaJ+aW`~Km|;r z31Cw#ko((sp&l<&WnfF#CQLwXZ`%8WojK^_T~P0-xd|<7RNW0?x1m zfW@1hm4$t}PJQ|k`j$rEd&3}C-_+S8j%L}Fg4&HMx?bx~kRu_hxJj`5V1zgTV{o>qgxlos6&c6?ZChI#GUo_0iHnpy9~uvTV5z|{ zHk<*+UGCqX#F7!?|ZeF`_1DRYS>M2F zshoVvgd7R06D4zgPVKJ$`O~Mbp}d$t7}28T=8kF2Kq%cM@ICrup<9jMhy7yT-8`L| z8_?{nT&-SWhcSC(umon=y9LC^jG@WNH7>xfYX^PMZ_pq!QX={!qXs;;#VtsD)dy_cO60Me=^MmC4gUm4MxQ%5h86UqU zIFAgfGZoang74~pB{+}dHZnsA4f083S`ubZpwY06*Z&lb$U>Ki4;j%y{sGbnj_Nr; zrx$!nRGf}0X^O|Aj({+xTlGxPSg;>{1} z8&x+;e>tLsE)v`+dKkhn;>T>vXk5&$!7$QcJi8k(-j!WK$9%=BSdee98A~N(N-``elp$872(6H4P$KinOeJJU=9Hm{7M4ZSN|FXF zi6~_(e^_#y%(T{dAXJ#tx zer_87kynM}z#(e1Zx#bxb%4UM@^UK(&@O%@4M=h$owYTrAP@wTOMsPU|TuO`yt=&Z5@Q)KC~5ciJ%Cw_yIcX^1eIt@{3M zKYAyM>Ty$!p z5OFYsC}WpPGUE#!ksT=cKyEp_M|K%h#LM=5k;VR1w1j=yzqx7nu15jMWh&z(PC3JYV9XcwTWd{P8*=On^sEOk9~ z^r#vju2!#sdz+w?Q*wFzitC8_s`t(@<-J!myX>+NR(dHos`<(i%2^m zsKJo1g;-0wc+fb?t6p0YOW9J>-M72+=#eRzK&%8AOr#Rs<(<2m>7tBmfdo7K@~6iU z2$$@fjW-|sb8a8e_(AwNaO_xPVaZXs-!L7OJfG-cAopMeyhtV8KmJy0Z76&~r&+RU6uuVE-AI!}J#lc%6u1P2Gp*U6vk1Fq+$RgsjRTx&HW*vU9c7=a==aER*L z#i#9W-uGVkGOX-4^n0~iO=+vEsls!C>Y)5(koc6eQ5mUOIBfE zaflaiT7GePB4BqxG&VVL%?o`rG&E4&ZJW5m(%*lehzv{}*SWW6ESX9dD0=&1zA?$K z%JBH)?h;xWw)Imq9rC^zq|=T|c4pXO-61>(UQOx#A2pr1AV>|uIb-t9h74&#dxf59 zd$J>Ga85>A`~sEn~AS;~Yjg_vWD$HozhW?x-cqE#4K*B|@_GU9uz%k36KS=@dAk zP9jA1)>?a{9oh>egNY_CHYG*xYR$7=RorqRK|4g*+EfR)1)~})6<#Yd+0A?QtOtUd z1qXajV_{v5!VIs38YoLB{3urHD0=tq{jZ3Srw~d>kvR!T#Sm_wXc|T4D+B`(@s1gj ziBe~=ygN&nQ#l=#cOAJ2C5|8G!v`wh;L6l`Q?CXL=`?OnmnFa0EE|IpiE!$H!iZd>W_9PU_+yr6V!5u&t6SHuX;Cu*!bP)8*9zl5)G9hv-nht|QOe63$5x0puBp+T zQVe#UR=rp%yP3Urnqc}PU&Fi36h#Vym-x|bK63NLl>h?Rx)OaJF_UANSnG7#&cj5d z)pjDcFY-l2#c=ciI@?4+O?8p((NA1226q}u@)HI-uP)B`bHbUaJJ)*esaa`x z?lDCmL58>apuuRKm8sSiO1MqEb=2=JIJb1z1j=AMLhCApkpl+&a%s#SbItJZaP{2w z$-}Yvtj=inJ#gdDFRFYU+L!C#ui?Uxvx{>me;XFM7s7*5H+g^m_xgktsN)bz(axP}FYu=KqRSD=HqTbHJwoCp^lwe>5mRsoV=a2HPEyFi zS#gEfUtRbnpdlt|@uO=+dTZ-A*f^ZxS;2)SH&xV)d%9=%y;n;Df5E6)>s!@wh4?=Vz>2=Gu zG(3xv@bJt=Cnh(BGmY!uOpGMO?gg1U)m?>G)2#N!M99?#xnohiX4s<3q_BSFHD%JI zG}lw9Sy>HvnUeantvLS?B`TUQbsBsBQU3&Hm8Ph3)17Z488jN%bz;A1^6W3pYzLGWg zlW0Bb=C-av@vEdITWmd1cN<|+2!*KZO7MlW@3!6V^Rp;v)-tlPMsPBvPbqc{M5I6K z+%!?|NQm9N@JgDz84m4^+jIYTw#amhT~cI3gxe7<&1?tx4Y8Q|1mo<85H>Ti{V9M{5V!sZNheBbyUS~Be z;LxBr6nIElI#(T|P}haC7c|j)n|BIcf9Yo(5cw3E4nRl>hK`CSluVO(a*aFS!NM%G z##MkoPk6c}JI9F3DB$Cn{UuCEGm)uNTDjX3DJ0#99S?Ch2Gs|}zSKMNh~-ue{-{iq zbIwhZk18RLxAq5`oB8v*^7MH{nU-A*9PK3k_SVdHp4EG&JY03b6jhgf zP)F<-xTG5{NpZ$I<-LTtKNy5vhBPpuO+;m??8BjfP{|K3zZd3p1g_$$nkVgk`jEJm zW`_I0b*_T^wM(y3f_e7sneuM`&dm*Z^vH>FJEElXv=iE$wl<3&bm#T!*N0jU zd+$F)(Y{NUKfFqQ9W!RVU!x{Xeoyi@G)#7u-k#H6Wmw-39sRmlL24oCT|Mk$vn&1D zZw4q$S=GJZB~k4C$B%Ut2<*kdfoABZrv)D&Z2fv0R7sBAT4vzT=KkPiMa8w;V^f58 z&9~+J{rAAazhC$&6d3e z#`45uqpn>??HQ!$|94Vgc$i9eN^$J4NInmpsiTuqQc7OFj38i|j_gGN!X(BaYOF*B z8=E|ld0YJWd`FaQsLsUiPAFp4`F8?Bi4cFi%MQdUF-W8yoJT1_wbUB4UHN{3=twC4 zHYX337@+H<(|)+w11_c!GB=vJr3PI^?XCd6Cmk3e-9z_V+7UrNm2GKxcvyfwNeEjM zdY6>MBmBBkduW3Y;;Lq=o;RBOg)mb%!F<4x&O_Hj-LL%Iieqo$78@SAnLS zq~IZ*zv>G+U>NGZe7VoFn=Ml|bt$+T4VJ73T)Va*Re#Sb`?IcJH{=>ZVZ$LSs(RAh z+r4!+UDA*1+&w+*1n=m` zi4!d|4v{f;_z6Yz7ew(aoY!+0~bt_S)PJLx_h)2W5@G;&|$L0j4Z-@`4)+OoA~f90^IR?eHYj*KfKB=TLt{B!)S=wRlsfp80aACFk?`e?`v2NYn z?Cd%U{9BqAWf2r5r^3bj*np499}QQiHyYoculn9lZjTVt4uD8pmV8X%zx=@8{v>Y;I2&$JLit%L@-FTHg zKBl~@ItshE<_pdx-?_#4x;XOpFcqmz=yU>lrG8r76fq6+l{M2&*n%-7WyB$e&O8|y z+Pvh`1oQK1SJ&c{LMPYq>Ya}|#~k9tGGN*6tX~Xc3PzmFizPTsIq5Q-;bCC~j7x|h zB#b(W*}YrimUHcsd&wSoL*2Tm0o^sfs++7A{N&=3H|xBw9zAMT^GJQgDyJ#&j$|yn z99nFAem*b#lgYttVPUUB6B3NeKKMIb_MbF30DNG;kh#m-*01@xqtgo8B{hHEd}k0- zk~Pz$m=}g>s=l-XP}@1+JVJSyRLR4qP19v=ZT^>?H8V9mKCc)(&=m;*-Uf3oX#|*n z$d}VrU!!!*-!qyU>)VFh#?M@Oc|kh9jQtf~FZvezwhO&4Sj6ZWwJ`T1nvbKtln=nc z3gNAy^4s#Qo>zaNoI&_2-Vxz5>eRmC!cizg@8I@vBVMJZ!^fmkh_U3)K6zqxbw>N9yLs&OucsX z4u*v$@7vc_poTef>>aC1{^bJ9DYfxKB_oD+Nb6&>RTY(0RjYa5zP@Ljk2w1Ine(oM zby(HiASRmk7v5NxIW?{S{JbL*ot-t#^D(t)*6m-^fLDaY-va_eP>E zQL^@G$C8c-O5D>{SEqE^3OTbbPl6jDI%tBJNY7AjSM7?}9OiD0U*<4MC3FW^yakf( z-+%tzt%tcn)WucbmJk<~UT|}DtsW5SWjB6&Q-+TccAPFQY9K$`|3fz{i?0=3!)DOT z%q-RQRM?$&Z{J!GLB!6A>aOh_oHsOa`y%<)uV24CtqfwOM>}_fh1p!be3_QTmPSWB z*9p=5D~H`SdJpEeX}cwV<{dBa#Lx^HlyB9T7>D1+XI-?9|6i3Ggm+ycng&TZDwqZlYF8n$Mr6sjlv}3o90WIa+aM~}NyKup%fBz}! zmOr2cfsr=edLx)F3D;3;<0$NHlwAkLA8UM`T=!YO&g&NrlZgDJ3?h?C#K8wzzJQoD z3xNuss8!yz53O=$fCZEO6@hkfryHkFK9;MVA^oi32=z^dx_=Rx@GbAIVmCl#OkXpz zu%hl;ZxCKWr82O!HN>pPX;04{Bh?x;Dp@l%X4dhPl<7{sGoX?^PKb}!tk>Rm;NAzS zKyd4DS3F!fu%x+;PM50ghF^SWBQq1tvMO5`_}ZP!D;P2&-qFy^%uzko+ex*@U~PT< zKb!S6)YUpZ`Iye7iBqOD+&hl{tc6)`*00~X5>>)}($b1ug^OFNg-kTr=BYY^!%I)u z(SMGa{x3bWt3F*kd7!I7%`5Vl`~3Mn{#P90ZS3tgIUm{P-E**)-azPasdpY=NELX^ z^;F|E&As|#W)HV!#h)L2vfi~-Y`XPK&eOcBoO2SORh&b9gO(}{8@{Wyw7Ib1n(Htg zFyTrv4vnh}`NT|p;lf@N29z4vg@qavLcDyY+ESNXYTIY7`m&jEb)qj{cCHy>Oyoxk zL(V#I|AoTxQQ9Qc^}EdGH>dFGm>|kC_iBo6`60$LuJj1KqMC=~w{&h8ur#vO;f{{m z?$0&kOi`2tgEN9=b_f`5<2wkPZQYQ5R(Cd3RB+o_E^OP7pRBJOQl4)LWKy% zi@vv~i?MTZ{fKLI0RlJJ22mMdSP}lNh-9J!DClaX3859(bYr&kyr_GwjplS_9UPhS z=ur=^haH`$D#f{xOF=C+TD`+pgOzWnQI%E;<=k z9W#pAZO~)OLJto~5gf6kE|2@E3v}S_;i0wvc}Yo~?RFhi2CEKROl0HQSyQ*t@Leq4 z9D4cnYcB$I#E-)s8I$zeo$(A@4E4QLlZH5No0!}+_O?oDqp#m%=sy(|JxjWGjERmp zc5Jlz2>FK>4pQl)`n(Zwt*oM=<^DG>Ud(S5HcxL$EBea-7ha3FlmwsLR+eSDbIiCO z{h>~L(a^y)(u!f^{X3eGPss87hr;{yqRUx@j~;dKd&UXen(rYNAyO9SyWhLO^*2Gmz@*4j3-EeT@D^R zSf&$VZGwgArAQ2>u&T&BxhqtcIE6PBE^E=XMxjIlYswBr!*xXFOseu#8`QXQeOHfUjZ2Ye&z?;STU z&*(|gtkEENSbAQ2PRB}=80cxa4J6 zYW(M_#*0g6|NE;4Qd#2Ok|y(H`vY`LlyqIT+X>V`F-I>-%{`2k33v9_*Kc(Ur)eog z^TyC>L@hKSmTck|Wr==*)G*r*2M8>uem(sf8;Fao3r3Un`26Hc84rQ zSK`uoTO+bdrfnO8sW(kM4xKusd46GkighOwjXle`@|n5svbslkKw0l7IXb7F>Od;b0KVYybf zj{0t2)x1Hhm)`mG@uT*}V^(F`D%Q-&DsIHp46&+%=SjGWsb=9Qm7p|ZMcPNhOB+?+ zbU**54^zaY7C5b*D^d(9an;j~v+vTu|C&v`{n_qkzh0fEH}ILxG*`XZF?lb)*8GM7 zaiz-W{Kw+y?+_o%Iv2mqx1M1yx0X#HO&?Z-g_U`c?pNbe^6RhNarUb9iojGf6066m zOV9n^#98^RGs^ljw&1H>+`Sj?wtElFH0ffv#euIE6em4~XB$mGGw6nYKTTr%YC5JHjnIN~54}n{_t!HRVKvhd2UIEuN}xHPQs^Z* zs!UoN92|CaI^HX;Q*$VdMbAMA#3_v#bj{tY6mntd=a^>Qo+bHged4##bJec9@0wHo zw))a@{Ri)%5oOntlau%Svn}Le&ypVp#~rqoH6gmXGtG3bJy-iSuiJJz_2r!W#cJWM zSCxE1HXHP2a$sz%Z5>0`xMlg^5|%e+A{M(G9}I%K}?*U&gzWg~Aqq&IKg zG`;BL^=SxUv-eJQeh@V-MO4Fjb;DE@cNtYtO=Dmli@hO@Rq66A-aw(4tflzP(D{-0 zt?gx(ra@_ntv7Ps?C%)-^uwq8Yo_gQR`~!x{yDpM^udER9$#AM&PMUfM5zQVGo@k5 zp{r<649v{lN9Ik&+Xw5>l;Zsa6EPsg&9r7HHuWi%@l-TEn~x+0ZreX-ZIgnF>BLIY z4o82k3OaFOI2w9$+X2j*NP6owb|i*SGgRz* ziFH{2&Yk|;%)1yc#5n5KwTp{+(%~*WvzyNAy)*OkGp2EeZ{PZ&7GD1A6NBih6Cdob zFSBmkwCOT`j{`l9Nck?{>M_hSv9nnEu0#f)uV06zqzuAqE%U$;N%Dsd+4b({c514< zi%TTkDsW$WOlOeQcR}>9d>2y3SN{wMxg90`Ay{{MMHnVl8 zvD@~f&6~l95wugUHhlJF2QgJnxr<8^sh^-hw_HAkAS+1YrcJ3u6Xcgm3j)hFGij}^ za=3W+mAZ@cgBE@9A5Bxxyw#b9{VG)JOpMG+w=yL@&_)l7cSNq&0td?mizg=*Gp6q+begC>9na)gf|r@11_eFLmDjqZ4^|imLvdW#OT{ z3M{ot-mUe%dinCV-`6;Q8Pu*BpC^qEv*@Be5Mt@))oa&|xEeh%Z+T>8-;&>~%35j` z4m4QL%B;rJL}e6z^X47)YhqN>ZXq*TT3iCz7mc9u7cVsTyP4@`-@9ix^tnGxybz9j z1{!R8y*4x-#G(OR6MgCFU!UFr`maS7uKhE$V6Q<7Uc-(Z=IxiQ^;o#@LSuE<55q8q z*6HFnaiZI@ab2nG>BI2;rKO74-BvYXJgu4NZPx1#a2UM*V9E&9C6|^~2uoDhiX9A=EMY6inc-qo89w4EKJR3z>|UnG3#&6A{n_M<#fq?Z57Gzk zaftUVpVT5DqyUz^WT0AG`e^$uDo^JP(A|MTnU5=(N0?F8>EHc_1_ziGoc#1D<(1BX zzh{K)s#vK!>xMDytW?iyTE#%K@p*BtBj^HgiSEv{i=FDb)@AR)zzN7COVe!9JB?vR zV4}N0p+M~LGaF+Pz>O@`KWZ1pyk465<(C#ZEL?cfJd&8-*~`6yhZkJ32po~*L)?L< z{ASt2*pj=e4&}Y%pug5K?&#stiAP6_&e__$UAv}yU;Hfqbwk7Dv`{h8acrndxRKUx z#q+sV{**;0zrJg!)_`86q@qG*@L+?S#8j3*Kw&F&?OSr5{bWggxfH>~J4$cY_S?C? zyk%ITw>b|qY zedlme;=QGTH#SE^+#0)fH?0#R?2JFSD= zRuTNEMrktmZz%#7ujU8%EPCS)uBY?+KhK{poA@bYX5WIZR;g;5n{$Fc*<~qOXWiY& z=Xn4AeVBp&`DiI?Fr^F1c4x@D+qui_+fC-E?LVamYwQKi$x|rT8v2YPpF3PtllJk< z#Y(4w{m-lOo#P!p{#LLwdZUx^bK@}`s3E2GOV+4aKDcgR;hRepo(A^!K3+_BOaB~R z`NOu_qH|5r*&%l{zaM|u!13cX(^q3VZA~jGno(mx9o2s8jm*V5JI8d2jAfMgL9hMu zmoFPHTlT44RsYd8X4PO%`F)?Z)Ydla+J$ah|&CnwV% zB$zbm{ywIW+r{*A6^DYYET&DF(uxD*ynh;XgU;)scF~>FeXOJP8tl69Y!UTB*gFHc z+WfgNU3xeBZOkUv%%XVyxe}U9ofMyY8?!kc07efQ=&@YlfoFQo-MceC>7!Tl`QDek z8jn`c*Ns#+T~@Ql;z7{O5Yy&aKK)5F45^r1rZ_a0*lw<1%A_YWBEN`LOG?*Tg?FLf#dzW{k?*%R3o~Cgxt7bHMM;(YKECl&JTT8v*XD+qk=oH((AT8@Ww4*##sH8D`(8u|DjEmTHtPrrb+o#tFJtW zobhN~ySJ?if3KK2Y*lcTVtVBB)|N$XS}XTvn1@;n2-siors%}_&5y!7?{29aWLV>( zdbM%-Z-*-vKAz%tu`;Dg&ES%vaprlN*S7^P)-mp3WSG2?KAE}Q%)HrA^msDSENT}K z5;`?HA76tHzYo3Bv>^|bCjDEe-iKBJPt9K!k5o1K^y$;GU9qS3F4p{OXRuqmw|dL> zeP0_TJ^t;NRnPmb+&fzpJ9sd6NSNkN%41h)J&{p@M7e!_`-~7`g&mOKvYR^0GCIT~^cfuA z%j&?kyH67AyA-qLG{nl_ zZrIhI?2F!2ID z9GhVPsOHi8l=I!<2M1lh_RX@@$_m+Z{?`lr0_-9$pjNAQR`ls#ee{ag-o3~etpOMz& z+uk4VTb4aD|GmU-pX>6+ZeLdv6nqO=SJ-9ddR&Eug8E47a%gHn8%GKb5NY~z%sD9X zdiXrE-fwaTSb!!?@-r?xMD4Iol6l_sFz_CwbL-TQq88Vu>1WMP=ki&d;Y0@7i>DSWSY*`?YEvOJ)9v##nS(< zJ1kQi6B(y7Q04g+7%&!Iw=$q8;A>9`&7VVo6c-DxeNT^bixyt0QW5bq zfXyt(&{NO4XOF#eUw4D(B*IEYGkz{zSu*WGVu9I_34>w^Pe48vJQP`XT*{ zqrsm&XRXLunlaa)61u^I1~VJId({6Ji`8D{oy?;6k~spa2c9q_y!_(%{S%sB-1L{b z0S4c_f4?4u7C$z8wZnpQyLQJ*zgQR`DQwHGafdVT4hRvuHUhfX`r)MYm*cbP*fEFT zXd{$W{A|-Fjvvx-iCD{KxZpwyaj6Lf@17yc|27`E8spZ@%;O;s&TFN;q_$!{oOlFE zo9wzO-y$W24S|LF#?|`x-DaKl-0}1CYY(LOXwn4Lh;@;Xb4{9RjD#!ZS8*;c5#qVr zCQR2tY-2Yk_mKB%nA`}rCt)~?4;$fS@Y_F(BnZ)h9yIox%Cy`~4i7l=*XKs09Ttfh*#j0E5^J+#B1#vgs80@el*WWSQTt7&FOq zJPUOOuG9m(o`oVo0Bq=R5ip(&J9ZpiemYcxiHWr6j&@0ZFF5Bqb0?5OQJ>(KNUVz- zW-2$3)q$g-x!G4p?Fa@+aYYkSyNmyej$-?!9{FW8HLd*GxSMFeG3z3fkS1DG8KaIP zT!5b-G^Z;yZ%2<)&{hP#=^Q-T&Ms4B3j2=`)oO`)(=o{9-?+0siD!-@7gd+{fUMO~h!;a-D9U(DtgQ4DI$$WmU{8`D*28_M8 z;2ao0!4L#I%?%45%#x^fNoAlN78Ybd-4$z`>DaM@8yw&oCd(D07Vl5)GcWq-Q zq0erqHQq+ys9Qd0hS>}0QZ8fk&~uDi9&vA~Z;TIE6V$M&7$3;rlo{9J zcISWXfRKM7H_7e76P?{7`5yNJ*)KmV-LOFDaJO#BM(V&T%Phx?9{r?~rrA@-2O<~r z!|s=wUkq2phM<=BZDaFeBexEZlT*kBh$G6+57I1cas24mp?tHxMS#9I1H?t|DFodY_qpdXC%?0E(Qr%^C$83WHw?D6Xy|bgr{6b4NiAu#GMG zD$T4W;9%J6wkjhEhd`*t)yP~(*Mu8M{!W1$wGPpY1tsJPLoJbYR`ItC$hikETxbQ$ z=yc5oAWTQe1j_vpYrh)XV;TC1h%3s3g@60%S4Afj8gVo|~p|Zdy+t#xax~ z8pwuIb&>Xek{ebcJS9%XSl9eV#&%m`Rg}%`I?2p0S_TU zHk6W&=}Rf@U&Wn5gPfoFlDQ?i;wgwP#ia7ns)6Jbv7YAkfStLqI6_1wS+iAIUv^oT z*YIHO0!VpHneHj>GkGA|Ypv@+oS}S8uKRMW;!v z9h;5CHqTZ2O~$)8I@Ujys}|=Vi=_#1y8F2Waf)5xlnN~q0_<%=*AZ5lZXg2*pW zv><6;<4jcOjw16EKYP}3$qkOG*_cMRUCxh96hCK>O@*S{_M2W=Ip{KRCG;ujnC
AbZ>6|N5H7XNh0%l~zBd$os_gLk_3z`eymJ(yv%u0@?(L3#p1MOnKWza} zsLZmuOCgbpd`q9@KQMq&hkSZuBvn?%G_YajUKMp?85k+P&fUVPEkRYanq4)SEiqWh z_Re|ua2*o_D1KzGGT(uU!~)Yv?vHdCs)OrwOxWY@r=%d^MR)AepmRFoqhyYi zjiAvGZ)%rS-8m_(<|mbWql9{$0gDdi#MM6TY-c83 zOrI9y6+~^_8bnqmml+uwk9+lo3WXQfqI%~9tN&b86_=D4ESc}iIQ4WQ4l#QME>ROI z7J?VlyM{}C@m-t$u~WXv{{z7&bH45d6-KA!%IB_t{igZNPd!rCNhFadUYdh^RC8E^ zS&Z@Xmfr_5V&-eur%wx1h8Y~$IAi*;sVs9E;pLU!Y&{D8E1Zz~f4NDu#r`*VJ3L?$ zBeT?puYX^Va%;bn@dyu( z(=t8Vp=VDGWO>01K6B=@U;q`&THBe_Kzx!cyk6IGeG#IJFTYndVj$!={5XXeEQ=uq zEq#^Bq?0T5`ZUum@U8q1JAlS@Z?aju3E@M_I?m(d}UYv9=+M7+D@L>=lc?GTA*Rl4Mz>J;F$nJizhynI+?8ho5n)@hnXV=1KYq_^ zWycLsL1dV+!wP1@DCb%OTg}2XFo8}T9>1ektA1-3M3w4a^d1F~OVmqqw$_8cK$;Wr zE8EvIkpNUeBVAPQxPfi;G8YzPP~nS%u;>~^7jkc;Yvk^yFyCduhoqKCBE)`3BinSk z#7#aXq-;cdbh=P*C0~tI=Br5nk`I!XbeB9O`w!_lrsB{W6sr=gH2D3PKTpI-IO%9D zI5(}fc->B>lA@m%DFRt7wUC^S{DXGzz>&HvRfcQo6ozMT99;X{fbWQlch8@X9XxqJ zMf$%Nm<@BnzDs$7kE3j}`AHa8)|BiHT#xXlHH=P?ez#p!l~N6AUbz}RFlPDKdp)$ZA1wet`jU zd<%P=m>hxibqOk09d?^eKIyUnJ?yrKsVWz_awWL)F{)}Qm6$Y>4pEZ5j!R{X&O%Jz z`LK<^>Lni6+r_xf$LACw0IzB0sy{Df%AqY}Z4CLX%15iARHr941g{qq1D-st@9RkG<>;cc!w zyqnR&Nxh8?u?@Uv!q2thBL;^M<;b3pL2oVviD>HTk8f`-y7REgj9DR{C2Gn2HBURs z7C~hdMX*Sf3Y4{8dv@7D#xbELC&_`iTv;n+Tbp^xw6l&JpAvcq^06XN*#K{Gwr;U| zXISV3(aK^QKO7E|gh2G^y>0f$!3^!l3Pzj3h?v~)V;PrJ7}Ef+)q(& ziiGKZBt(%+QAllpgCL%^AK!DcF_X=3H^Z=@sq6xTMExMIKVD(Tt?ZopeN+8ki?|M) zvHw)W>0P?giJ9Lk+eI*Xy8Cn-XeLu=kBeM$AtlA2U~K z$#sJcK71W8!sh889{t=nw*tM83B|0Tw6n$M@Sl0FkRq+NN@E=XRjBCNF)cS_#Kt)d z-NCDw1&AYc2Zv8=RE%9}2?k#@gZB-cb!G6NL3$iCY7^H34g0UwPbO7Xu?eFXDW@%r zJ1~kr@8r)ueEM{Av2KuJ3h}3Gt;820G-pnBv+OB}j_|dhh$!B->A_LWPl2>%w!+kM zUDzKJ;71B{NRKaa1sayw-Z>@?{~OdLi>FSxXB&#S0;t56WPMuNo2EU=p`RldT(f(( z9yD3EJjdSb-U7Ic9}Uel#^BHMC4Zd%e2#-ptP~l5-i(k#M*Xfd&u%(l%9OS20xO2b ze|;4i0I?V0WN!MI#0FWFS${>qCAwA|#_JI1&6KLf4WUV}f&}q~EhY*&=@EhFU=)l+ zEu{RTa`0!|UHp%r5;t$I8F#pzf?6|W-%zgvv$IQleT(rjyM{*qQ@_=+EQJLT#fSFi zoJ6oBdui~=Nyi{ttRK)$h^~Et|K-QVj&{d#4J|BY44&InON}PjJY@86EJ_sY7jSnM z;AOLrJp|wUUh~`nW@;nE-n|7-_o?%z$?Sf+WzB-pH=b2AV)%u!Y)WmpAnTh-WlPnS zm0uHQ-)JtVL2^$fy)t{Je^0sITzFD#2K}9IO6nh28@0%m^)|P96NtrNSZv%=tSEZl z&8$g&=X{{sJz#60w~`*vTH$zArQS$dCSv)#r1pwFeX9nzZhQQmCB zc|X&oo@IcbYGq}K1qz29y{=+QhRH>jCHcOsc8uwyZ|9|OMWpM^S)(|Nzh`Hk*cR)YXs=ojHXTGnUXw^fq%w#zUJJr0JCrOeiV`l`9Lufi z{W!z}-5DZ_=2HX`kY9L1}ba1Ov`QY_2_)A%=^ifDdyVgpnZTes1N8-mIUA_-$W^qIK zxlHSz@rFOb{~JDd@nQ)o#w_r`&#n1D{0R-FQ1$ui(W(98qwT?6ZX_J;MKEK+iukPg ztv~rn@LPfTTNi_+`bI>><^k>IVOozWZ+g-j$e1Af7vIDbgTgk&S<7?Gowdnlc z##8N-dM8Ubw#q7XfLwMB3us`sGtnH=kn{mP9!Wz z6GGCF?OW`6?9L%Zh(AV@5hWZc*Tw(U6+j5T_)g4^3YQA$J0*rf7djb;OG9Z@A|e() zY!s<+(#C9uKFbotd55w=OmyU)?76DcHrKi3da9V6JsI@8tY-}dMs@r4<%9Aho5koY zU`rjQYtn*IWXeu6ft>yPlKyRN3$h={A$~eCSF| zm%Vlp+oM`959>|;5vWpHM{GDUzE+&I_~G5eS^$i!`{PG`%BRF5w=S(JUbv(6O!FpP zIydd2+O2bg?6ZlnA3dI(U+$T+bz{NnlgA6~ZWk_SaNEXgkJ#v<#~yD#-BCcD=%JMIZvmFcIC6m0OwYD>VF2dYkYO>*YA(s z=pj5mUp}G5M)i?AAqOqW2lrPf^E1IKWJ`k>W84}1PCY2LY?s6oYQdn`SRE}HQOBRs3IX8-l@{ESnAP|0-fdqI z)=k%&UXW9!R-7_-%5U|WEL&<6lN|#QTFPONaPd?vMWH#ImvFBZEgMD0CYDl?d$E`p z0m>$WMorCV-}yFq$K&D}$RZeM(%xu;ln0KIgsJJap93G&)Z7j2py8hI|D0KKaoUON z^gVGG-$BMyF5k2WxO8vMeUr%qX4(%|Hl&Klh|~rJUMXW=oOV}7f_P0%30St+kPvp9 z3ha#5!DL1$IVsU`)Tr>Ybz+cHApyy`quspu8U!qqO5zpxLg0z(b!kJg%a##RWaZxe zfG=HT1COkwVJXwb-xiN88qG?%w*F-XD+m>0#DEE7Nm z<4#kuD{qGC8tQfz_+F}U?xY`f(rl2ai?k$8oJI^|OxF(^WVS1O=2@N$qUarI?)*Bq z)rUbP1x)>W!I?N}OX0_2um|h>T=_GaWaNjFl09?{$ROf}BrC3n)9LJp)p=~aPV@n! zHfe0-HsS=6#7JekaYWhjK1!wNCabtiH^x42L+UscnoPLzi!0neLKlP71n&>>K-A>a zzHgp3K{j9$-!=+fNd-DNxrc58@N97-lcYudm3BgTKEV{-bB-Q4lFGXCK$xfUq_I7p zoQ$9~4Yh*oPY}c+=-zZGG`k4IA*$*%&D9p1t!`i5>{2;h4 zvRA&PHvDM~!hhW8&V~-47p*?BSQO_Fu{>axAw$)}wWm2-2ffi+8h(hf=`&4c0;K^= zWKuM2H{Rf$y7Ts2*}f%S4%9QJsDs4*i;0i@&-|%7hhO!?KMbJm3+9b5k4^?okjx~KP({q3dQM*$)J^{l|rRdvc z9O0gdg-J9YYI>q0&L&bi`!@X@{Z$&MGXm#h%ExciT>1DvBNjWwPmt)_|B-h+#wxdp zyXa~mEfRR1wzpF1^~gc5?RmzAF%!B|(#zi4fcLTON+{#!9%!ujVf36iaXC&~_U((5 z<$urz!6p#ZoLOLU5lgHG&ES37ScF|Z6a{;o*n&85)S#GkhgxZBw?xL(rYGBjVf2Rp zD~rW;H7m{5Pnof@B~gyUAct7@nE)~X=zN5Rv`#XcAmf!hc@j(f2>OczfoFmM8Bz?1 zkh*Kv@Rd8{oZGy={NQ8NUY1bP!YL9|MufE;Y8r)=f7$@wFKLWIWfw7s9ITJyP8XYl z>!H9~doND&mjR2OstPfg4UM#`gMZY#L-l`@BcRdkw@nBA{zUx;@m;~L=ILtNn{Q+f z3~STulNRxqW^E7(vp;I7S=dNOEZ_0D`fa>%!9zh)RYCa(Iji@ph?zt1TC@~)pg_Ia<3zA zL(ws-x~yuZsSyJUM#=;kq5#RrX_VZfe0_woR3Huk)}OG=H4P-EYIjkMickRhA8h}{ zf@maFsyq%Zx^!oJV7Ek3<7;N?#O1x@ly$rv7jgFpKZWa#xFBc2{Skk~-nVB=9pI>DuL@_Asr~t4?-n4>s8`_ z1Xex0vti7sU^$+P+Ax& z`0^O0U?O8fN$60k<(5bvVLIAS@8g;{9QzLLvp{CRXxHvr0DLe~hb6RH{Wfh{CIC&k zrwR;VyH7@2fYauTb#dsB_W04#0#BY}{o?Y!@=)R_om^x%CN_J^Mv3)FeObucxYwmX z*?FlUL8!;Z|5CQrx|#7U`*WPT1uA}VjI z%{Pbzp|T@VHiv^xR6TIpC`(a;0cweZ$|Kqoe%<`st5Jk_hTe)I&+0D!+zLfE7C9L>D)Ua!$HVa0x`*YTDHdy2pyHv6zV0D>lfO_lcr5mLtV=1 zD&+gOk6M@*8m=)QYMb3tK3JI<8VwlGS}Z|=V%;BnB~VoUVYG23<0v8bU_cV*3!ZBe zyAA@2(Z<1R#HN(CJB@PUB!A<(!N$)TH0W&~j}1N6zcR+@Fd~HVIb{Jbh$(jFL-^IncER#B`#pvOaT>bba7}rCRvS+qY%sIVINt zhj^1YH?`&u9fJN1UdUPq|M%v!sH3PY$D&mf=l|sb{EyP?sCDc#fKnoY4=Zd1SC(0k ztSF)gH5v!ki-~GVgV9KZfAJhTKc#9mDBPaCd$-G==twVs-mS)g}9i`NmO zSx4KLsdLYzz7kO!w}esu8n{cclY2_CSktE9ER2pp=&H(2S6_qD>$KjvB z_HaboD+F8WafbW9e0cLS8xS&b#xk#!p@jrnielMzCr)qaH*So2aW5=16Gu3iw~Jkk zL=?Hkh~~RGYiEb$<>!aPV)N3Qq^&G;hQ(&j6oa@U+iE6AXl6XLITesd_e!MxfHkr^ zR4kmBs#F0~%p!RbHhjmzI8@S%pff040jY+zN3`S_s^HR~=XLelQYJD6AZV*sueOV_ zG5bfl@8{2_hYa6KF2>|c0CC>diCtqkV@WTWfNFk-Skcf#Q+qr18L-?GVrejGu`Snt zs@%No2ph9d9;}Q3#qEqawXDD;;nda(h9OXiF0m_?t;&ssP{H4T77)p-cp|nZ5Cgs{ zy4p@)BaG&~Nf*NKpaz^+Tl2=44!crkYc;LT+I$c3&xnbMIo{8o&4+WVn`kU&ZrZSk zKF)S(fItFB2|Iff+ zk7Jwpqvpg#vJB7wBFOQP4Eg~0 zCUC&6_rTbTMfL4~gM_Il0fpn|ro4+vc8{6se}!n$uKy<-u6QAaAvWQUhp4=|J2Hy4 zljda)bVoU&6nclo?moo(%7_G-gB!VN&mLhF^EEOAopxff{MjEVO7p6wXL{?5+}^M@OGt5mU@!M)apCC9Fg0O zcp<}k+Yn}IvhJWddt*Q_U4&j_WMtvv`}z4dyt~E(oYsgK_}kkK4A<4S+lAorK9y6r zcTg*UM>{3kG-E1V-K2?Pa>s1{xUSLDl>N50w(Nymm-mLYDya1aTS9HU zGj$sU2Wj8{mKYC%M?FqyrKi`Jk!aklPP!&yg-nkv6kBmW7w`}RL5U0xWFfRrGWijL zeo{lo;F;%6G+OiR`wb=}@U#^IqnzlMuk~#!cTY`baYm{f?2)ZwS_?2O=2P;-g&9fJ zU>9X;)&Y`8DC>;Vva>buPwWS+^+;_Ak}fuyvR=BWMU4rS!ml453e^e^ZdrZ2G$StT z`e~TXdj>6QLUT<~pFxKuRzAfkCToS!!hnA9KYy;qY%{%<64WuF`_tP^NR>&8o~Z@C z(QWf|)&viCPI|N~uZO)`BA{qJwp=q@T0O{IdD6Xss>Lq-d*xb-)LXY2%kp?}re%&P z8SsPP)DlCbVxbC_nTJ?v>FewNgxcIk-uU`4Q%n-zUr`OhF7WJoVJME2Ug@A%|NlZy zHlWLm_d%Dh1qeFQq#%J-VmjY{1P>01%l6v`+p zfDmq*oGc)hkYgPj#-W-9G5a;wcS}@M!-#8!A;ZHrQoz0bOI+QSA~4o!+0tOhkiw&@ z5qj7E*(jNTy^+m@dn1jf`|+<*RWl5teHT8+_`y~6pU>lhh1tpkREg)yI2?lf6L$J& zi0NBWQc@S5wsR0glN1rSZHspjZpJ|z9?Y~T4VBeM;IZS!&z9$Jy>qgmii%ydB4$}H zYT#Mz%w)g)EGFARI>rS_xS}SnLfsXReGE9xvK)9xp7UC%=wa*#Oj3RrLE$m`cp7pP zoznRQE?ISGuv0g4^BvFaY5F3h=`*wOb|lSmqjmI$zhCt;fc#IKt>Q|5egspRkYmSQ zHk(3)ZT9w6!G)%Ry0Fw%6d|0xItmU=BJ)&iu721jS;a)7I9@{z+M(1ar&%^QLWm-so#4@lpWEBHGk74H^p@2Y=4wtWT>L zGKxRT?AcG7O_o~U=DeVt@JfrJ2QiLKe-rR&Q0VPu8|r?vDhc@Zazj%2OjsAeXppa zw{07lc91b9xasz~ae^#pYT|V1?Ui6_WA;V57?r4ekL$8y8jK0AsZtVTI^j}`e+hTG zlbMjnzECj-78Cr}m)?y#miI%J@0Z z?}rT=HhIuwT5)mnSN6`t!}ph&n<%$ENX<)YDF8m=^vQ4LtBM$Yci(^k7 zdiH}Qpe#%lTL`QRG9-nvu<_MTcG8`LsH>9o9;NhWYjK-uyZn{u;LlIDGG-{x`-H*k zhos+(ly46Gyt1}?SX}iJ+`>ixf6z%&9T8A4jM-+q+ueT0?SBFqOl0aKlU$GtSPzqOd}`deHx`ihsAZA$^4&LO?Gri36y`LEos8u<{yJ)B4HJm+Pi0ixDy zv&$;nwmlM6=vDfXANKi`HWFeWm?h#aX}qD)78e%>uHvL38rppC8DU%FSLW5i!~b5L zWs&~z{1lpo59PTJE-$}em8<#9`>pfM%q(6sYb_g5GO|%*df$DV2ye{>Jgre4%c5~s z%ffp&I`1WLdsWW)3GHbd$#+WVOl2P#mo_7uW2j3%BLzwTW`%YqPg0EtCZU)K%3l54 z;s^Ef3CD|a&5U+kbA9n?Maa)&O|dB!R{xc(Uk^*z61Hvff9h@ve?9O9rAm!h-~ayvxHS9(Ue z(LmYuPEL<{PCW`12@UGsVMi;CMvaEi1)rS5Yi`SHp75h@zkaf4D4mvK6W}lO0k1cj zX%omlLdgTsHWr>a9Q6qYTw^xB_-|08IE2c^(+N<1sP4=M4s^xghOTFxe}7HQ2~9CM zm&?8a>sQF-ON*Z1HAgds7iANlB{q3~&F;-ox}w*{a~O^)%fJ}Y%pVC%YRFVe8e=kW zw5|dI+Vl_`kOF9SDnKMtl#p}u6r4z8gu>m*g3u^|g71?NmPfyOcyY9pvv`T^I%-qI zAJObBNWAd;Nv0D{zUj03wjW&^gxxjJ7o_bFe|s^#w%Oi1+uNYu;IaR2N4<3U8>AH8 zIFIAd`d8)s4r|dI0U_EwoZ<6iKB@bcEOB1n_7O5KP zaLMxV^iYDCFk6#*3S_R@sL_N2(+uk>Xqw=~N(F~v3@8nO#<@u&b9VLpwesHRUKm0b zTj0Z32~4m!wqwi$mf5u+giX#%raE-6JZc*&SZvA%{Ml_x>?7$}a8TC#KnvE#>+*-m zBubo0is3vp66WBGCD}<^aXh9?li!1bwqwBJLu)3r*xZfa*{9N=JJS)}eKarLOwA3Aj55k==HH@76ikhNV`y-$=7)`!K6hX;1;_`5GEf=N zbifJ{S@;54dZtQL2?{6A@~$AI{dNNR$Y==07JSgl1+$0luHx^LzruAnMIipk@)o<_ z^|rCO%Z2$Z%ty6JvOmJ?t!$Lw5L@AYCY>z|lqJhIf`|xRk$WPZn}9dca`V2lj_e2v z-TI%Kc!!aWfKvRP@OjmzJ#Cpbs7)DbBeN9&+-P^w z5bbmMre0YwfH6?B=FRJ3Y*AcpJDRS|f*Ir=Vd_RvtMT*g^aH!ooL&D>RFdQ{5?G}&jH6;?^h2@F)X)SUCs{+v;AGFONu)& z5Ti~L1szN*2mi|_XX+Rl4y%9L69O5Bo!>7NYQ!mIDm4`gS8e?=eRx<7y$7?Ac<)?^ zxtlpd&S62ry#mRGl?z)>J}kneKV^X<1oV%kGm!^OI&5 zKC&yo4s4srdV8od3~|i_no=Z$o_zQ*;d*8!`=Xpn%HbTSOW1wGq|!U9%`ySRP9>Mz zcQ=zYBx3f3Cl;Qn&!y4STNb7=k{*PaF1fD4c#OBVcOa%+v@10=HCjj5=Hyv5ubHc(xoA*XIPUPdj)ljz)_o-3@CKM}35ras= zf4d##+QIQ-&My8I(RPC9kL*f7#^U;Xc^=Lmfj4Ha!SrhG?Oh#jpUa|#qhH*6M*dEBl9>DfD%f%o z-OUMVRunH6X2z2lI6rmD+V*G(L4tZCgUN)vL0j1$GT{#C%?I5339`M!l(NTZX>}|< z-x!|=GlvmMH+zHZGP;@&G zC)}`VZbXE{E8LOOY2Hr{pB)Rp4*S9{! zpRY%{W+$uaZohLOVk3gT*Qm3VNRY2z`Zu9x1sKQp%hrf;YKGV3z1w= z^x^u=j5u)CX3d%%@J6?2q)os5$577Pet;sdyOA5~^rJA9WgBpF3Jnq>-F=b3WkSRG z^6fj%yD>vby-W#xw&x+N3d|&r5*f(xPTg}C^kpfKFa#TPKNyX5i!AJkWvVP+((viL z@(=#>4!=}P?xbrEa=|@IDhbsyVV7^6&x>V#;O=zEPgBNV)Bz2USCUu3PoC^L*^$VI zh5f;B@9aw;K?0Q4PT{7742P=vZrXOfJ8WguwN_F=7q*$?8K1jAh+pi;_@|kpV0LDU z=(X%hCVbRxUN@CuLBz>kr-#`TO(%HJruh&4OHmXuawS??HVw2*S4Q0H`$!-%I}_;p z?Yps^THt!p{`LhVIPVvkbcYGtps%w6`}W?A)nNTO|mh2_yE8U<1M1P;;RzylVXP&E@sw7I`o{q zfEafIKK7Bey3BO29T6^-t9Efvi)_U}m;^(=lo`pXz@B+6OW(M26<6}OYLtuwj0{*P zYm*${AZ&hy08V-QK?D?2mZfrBnVF=qaVpk(iP;0-9icwJUp_#3rl*5u6dV+k(f8XP zOmpC20|;W$k>SyA*{_y6Emlc@Re7;cf?CiCjA;axmYYf~bj&%I2O?I}pT0^x;Ns%d z_u^ilyV@GRcEmDjYk^@8z=-NyC&zN4+>5`xnrD$gqomIJh1H_7;krx4K`;f`bXCm! zQ9r$#1iH{(nr(B*4KJ^U5L?zYHJ#*3ZR5T> zrJ=8EbR!3-4_jj67V-bF_1@uJxBvV2t4PVFkgYdph%E%}!A+wb16lF&tB%_iY zl@?i9$qJ!imYrE4BzyBcFZbtt9KSz)pW{A0-S0c;<@vm>$2cG7<2>iCez7grU z$$*YM@UZ^G4Xj`rISZyW-MRv5D@Hv34bU|%E9Zfy57BM8lb&Qbn~MlO5X=b-k=xi% z%I|&3$jFEjsA^zfkP{nnr~&e5AMS5Iku3ZgQ(v3>xZ?U=@O$vyeICTpMblQ>y-mRBr(T{UE=EW= zC_MaLXl&*R{15$kOmIW2%MuyHmuIB^8#=)>!SBhFUazKb%-RfW^VSeMIgnMle*To~ z@}yy@n=Zp7Dgl`oPlr-lU%wi1?pOdsyEY)t%gYNc&&cS-iOKyGpte)*WYm`4J$drv z{=osLyJ1%TI+Z~ZUrn4S;kS0H>inO{0t6XMr|`nPAv}#C1}3r++pe+Hor1{n3~17$ znD2BUhLLi~$HzxfV0^xFnUBnJT^Bdu-J+JDc;VV}()-$0yaQ7jT6PmNd&?v;L;wvT zILH_N9U3Akrvr}YNKoT~q*4OisN(O@*(JHM7-geUQ@MCi1o#GNJ;^=-jyi@e#01)I z(x||wGxgYalz|GV@vA20^^KnCLhG>Mk5!MyiXiFZ@0V8<|5;G~0d-um2HBkNyc>Ia z-}eRi_^ePz7vQlV;`Ms^7Pi+>w*f>)W9|hM39sZ?+6#<|5Shf^hx_+);agmtk6KZw zwaQ7IzQ%{o4xzX=h0lgQu$F2JRDY9&LiMhB3EWT_G6vdLF?_Mj935+XGq zs;q<;FV^AVBFEz5V|#?~7>TNed(kk@mxKKSTrL9rSKqDT9qAvr{>bh9>!N)v)xZf@ z7&y${tH)&ilD8a-V=ySV>pUs-cdO#Pfbl1sB3v&cb2+KnJC|h4giJ-0pHyUjy$;uCUDRZ^PG7(+&~;K;BkcqH8nNw zDYkV;v}Er-=;1a}Gd+FAxZsBSY@xez!B?&3{N;?{+kb1?Ayjmi4?hcPFiLX8K~Z)( z;5jKBZJn~Sg>y~64vpL}wyp^r8-Fm|{46KOxoF9Hu9^UcnEsHMLwTBa4Vom_n3|Yz z$M_VjC8kS2Kw(D(e10|Rughxyw{;u; z)?nivu5%rBav|7-F6u_}uAaIGVG=G}0>Fm4DTHzJH?NQ8J>O=o>(HxE1_cD`*TnP( zCV`3ITI_#wMO;ewL?3bn%@X)i+6VkD6$i7>ojK^;+=d;NOn)&0Df+T$M#wNQ@|9c1~Y%URg% zM+hX|E>hObD}$2a@8Oa9DZW+bGxpEU&diVnNm9mQsxAS}30Ynsb0~;EZ(ip0Kf*0> zqY<=kcg)Kkr=)1@uZI2OW)#iP3Ah<<#k*^h*iWAwW&-8V zG6lcxbcO7wq1zAq50ohAwaCYTW*jfTg zda?TG;>zLGJp9WINswpre%)Vy^`Mw9v-6y9<6B-nAS-K%mKWt$3Bc7*+*$BJ$l5!+ zXn_5cVwZvJ2B3Eto4e`n8zZy!6L(;leB5=0G=;t@?%g&VPpU+e=jIh=Zv_+_sflA( ztrWR*>3Y~bkxwmFw#?=M2dCEvjQJYO&RdHVlP~jTtLqY8o%WOMf=}K1Xjrg4k8@d1 zX5cu5!!&A@C}RnPLp-aPH*VZ_DPb8QO@o#C{Nnkj|$?7AZz^meXy zExEJLx1G0Z``6IWuByW@O|?;3qtsZ3F3I)s@2qq77W0c^gF077OigoDe<)!q2pTJy^lIxNp5;YA)XckUR85z$T zo4KUQ9CX`N1Ljp7I=98=ht!<%&tsXDPh5D^hD43CjeSu<(FH_6F|%*-~E9SX997kFhi zCg-4W0f$pse}~}j7yv%gib5fr;++Tt5E?yuzIpO;sh~oK8ty%;`Cv=yXoY5h(QbJT zevsgRDLhcfkyn^vUjjliXyLGnwPH6EP@u(yeO+>>$)lI}gnz-&Cf5eU8L~r*fCaV> zfotkx9^)#Pn}vS#BC!&FVrOgn&_(a&>*+~^En@faXH!~}vqq!oiLqIWS-m^Cr#Cc3 z_Pjg6)A_5HyQlAt)tT9MklNv}jD2=pTe20sG#cw%@Xr4;9QeN>-^LZR02sZ;?Sg06 zFao@b)#F=8LqN5Vyhq7ID7(#;+q)=XESJyT#6ezwL4ZarbPvctWceR>4Y8ylN|cby z-f(~O>O|}K>8l~o&xh6E14biv`3PgRHagRc>3xq!ZWR~STg{2UnAey$k6NJ&){Eeg5+3hoaO{h-3JpmZ{@H`AH1 zQmxIdcvt8|HE5;USIEA;Eh#6U#PJ4Oh|RwTZc2_&S;U3}g1i`S4f&Vm=50TA`L9}t ztLEMxTfO6$#!`D*8#f?2AgRUV(?MYt4R=1B6;QJs;Z<8>i=fh&QhgDT(d9l9O_hj# z`T5IsWyQB;jPE2V-tf7dtH9Bx=1Q0Bwe;*7s<#yiIopH9b0HV<*CmTAo|7>dG2Ee; zIw`X6htYVl4VA5D)Ge1S!lC7U+RwvAj&caRIJevku=nw!YIlxjXpfSW}sM$aO7` z_9a1vBiZ@vRU(nU7$yn|bUZqShTXjj1mfeW6Q-P24O_m~;@k6$ZFY9auYct4Q}?{a z*w-%gO(R}5{SmbdS-x^zN@)z{%s;!&doS!iR7my6#!*#ggesY%vvQffZTj5K(E|b= zeLu~4diFWoZEmnSckbMZ>>svVN=r%-YPz)#Jq!}jpN@h39I zfrDxe3<8R4+pOY3YouEZ+;%Q|%;q(BTq~Y7b>+R7uQ%aGJ=ts&KP72wYIpNhLA*#) zLvVc4oIH*Q4AD-nTIa(u*APGW%j$dQkLfpuJxAZlRmZ`iObRz4j#UFEr4UZgd8@s4Lc)iuS#ha_te zrjJ1p4Lpa0|1{+5dmdt>{kr%CdT!gkoesM;(EUDiA_cVFiGAs{+B}ZsS$AZn1AAW$ zPae{tyX87~Al$gAB`n^c?1oxQyvw_!4aOXfE@n&BPH{CI@dKDe!5fHJGSvG4gMhjM z5s-eMabe$)B;A)?y}dqQ))8xR(7irF?rFt#3(|gQ>dNpxhm49?>S~!QZpBGiKbVdV zFb~dMYXeB3#rh%NFFM6C`Mzn|=#WmkJH1H-huORqt;}7U3eh5f8S?PA8z3LsykG1C z1!J;iu8WTDw*^}=79$tGpW(k^=W@V!;#rO?qw6A7c7nmwl49GEW}EB#xR2sLr(Jt$ zLOoL#3O{#TSM|KJT+`ET!%c0LzfE;Pabve2!Y1xIF|fT_ATamsmprDX1z_`L{3!_c zgd*P2MQ0RN^?f}q=d6#lw<&8#sJ6D5DFcnL3{rjHWOT_`CvelMLB~WJV<3qXGLdOA>xmZUj}yaFGV{AIrKbgcygQ1!xHj1L!w_20W@Zyyru+|zo@ zaBqN>dfVV^hfB0eRLyFa_?&R#__jBhkf5l~Q{s7EmafKAR5q(Zeg00`)zQ3yxUEX) z%>I)Wuisw^r6S@~N_2jK|6qBVDBKDjkYc%e1c{csyVbH~S&wIs%MP2HKiQBd%3py8 z9QNk;&xGUdc@MibJ0$Prq(}Wm@G7HJKj?Om$s0zV`d=@6t|+s)7oI)dG4=7poU8nH z!@-4xEZawyQ~4XRpEo!K9Z?9jn>U)>_iEwYH>t{_G2CS}>`l+d2G6)=wQTuITh{D* zU2Lgy;OaZu8pz#rk%;^x;M!(z`3=u#Z#jZ?6eFkqU{MUIurf=Hp&jz{(FENw)!D4C z1Xl)ksQ6E3G?r(;Q6XoL%t*;_wY&dG4=6|C`=i+9CnM@g)x6+>*>r`*w+?2@QYzX&%V(S zgQciT_t7`u8HI7}c=G`Jp};zx314ng*Kyzp84=sb9_wEvUB|qOOT5eqyN^69n|HjC zDAyiNe5t>SndLwRx_^UxKktl3<|b|E+v=dr))dp!dTZTPCi{VxH;%m5;mh4>_hP`V zSyLy_@s}gJyUl*3Lj~cTo}cc~^+ZkTD|i27xG=?T_&NH^(Bj$bRZdOHJU(UeuVj+^ z=ZzeanJa|a(sqn)3qA!j5M$5!nRM(WUfqALD0&(@kQsWr$PzA~1Mp*r=LU`ob}}^X zVPoxdfh8E3;5%RifFFth_Yk7h`Nx>Ijz;OxD}^{wWplh2k_t+OwHUfwB!Z{qJCTv8 zP~5OEGkbyfu5ph9XsinoMg+q5?ZBh{Z$cmSLh>R*|IjwRa>F}%+f4Ge$FGxPcFcGG z`q~Aq8n3^%{`jTO_oBDI|5DaJ6~o>ZF$zo5)oev8@ej_H))_x?58sNpGrzNq!t9WG zftwnKE^21eA}uXcd(qi1~{2-)2oEkvPCkkSc!W(d#8H_DY z{(-XlyxlY0as$r$>+Z11Pn)Tna4p*x*T0+1{nA)Ew}bUc`2Jot`K14%qq8$2W#IQ* zhPz^8k6G%tQuxP>Xt~e#Q6%NNDPRcR$xNDUGFmFB%l>mhWtZZiE-ds7tbOXU}8un zLPUuZL?xxy(SxgAN^h}5O%8j~^*`=Npc%vo7!}L*ZJKUkO!X|r5zj4YsHxSc6mde|t~ZX{b76gw zcI>C$0=l;V-l2&g_W^GRVjGBp>gxmFLF$rptJ7%R)r)F+^!obxE?#?2M^Ar0&T-8A zCzP@3)4xm|(NM_S>9q3!Q|(<8_vmGy(i`$^VOy|6B5hcO%w{f4QqI45a|Bwz@fCa8 z?9UL3joI1B)?+3k`#Q=_7$16JZs!x4ZCnK8D(6QK(K5QZ6_qz>7I4fUd2_vp^@k1S zBg9&fYO-l-qLKecR*7|@?BZk%AUv>OjZ#ZtV_RC1+~a4@4|1Tb!wJ*UtK?9qbk1cC z)Gv1}Gt-kYV7)5_JPjf_l~q+rfamdk?6FBlTzj!4E69yjm8%bkImBI`ygl|*@#ZzW z%X*1a>4MuwC;Rrzu4dy)^}qBsbR>AE(}#`sNb?&UWoBw^XL@X^@cHf@mt(giTYUH5 z>3x&?cgXHVK(1{T!>NIhH-nguY8mzgFrRTXy|LNtlhiI9L$*Nk)Jx**75XGtHMhO_ za|MaCp7Ft0?RLP3`Kn#*@-jW=| zz!}{YQM|-mkXM)kLvTTw%K%v|MY+J5s*qTY9zTxtOc@y&6Kr&Wns)>$zc>IpK$FXZOx3nW$P$o0ECH* zcSOXQoHdbSkGGFT%|y8!7v|_^n=}SJ6yuYp3f&!Z{x*F}I0x8}XcH}ao`cX8Gw$+@ zTcV~ezT?1b(;LG)vyBVjKU~Ukc&|q%IP!TME^0=p71%N(@*Q9tV0y6z3YzOz##lG{ zVoMful(y)RA|)UodG&|Gdf!NRf;DDA6Y4MUF@GrgliPH+xP0yq2EJ>SPoEd(OkTb6 z=>9X+CfC9xB_l(3{T}vSSNxHB{SVtuB*EXC_#uM)(sLtpLlc~U7RB0Vl8~Z(nwDf4+jCq3V;xcPy?% z;N#XZo+A98vS%9$=A2g_fQy91b%=GEO$tUyk!8#2ce%MMCxMoBpz-RKLUuTCa$o(E zl#o#JXIf)v{?ysCEu#Kk&=C`DenqTcd{Eb%>nIyZEVu_TcQrQdp6g8w>DttBqt2mT zuZzye^LFBt*)J{Jc=?jAf02^|+vc?Nn=_6M9Wiwc3RQd<5n(XQID%=>zUD2}mf1B0 z1qBi}#?Av3-!UV-HA5%nA~zS;)6Q$73&bLI_ij?a)?FIfckJUsz!yfY!}}KgoGIce z`*Y{W+Pd0y;G|favh>q*O>JsyoOg zFUmGfPCK&b*R!>m$6a4iDHM(igvlPv#mB6E6}|~fowNcN;qH5KQj*;vCH@}2VjMR; z%VZ*)X5Mv*ZQmXmhlLdl^TmR%uVHFQ*ysy6k4KJnn47lcpE!AP>tu-RfdfbL_rqBa zboyycZo_mU%B!Dt!DDaTe-h|X_W2y z4$Y2($^817N%3_4^By;r(0vlVrgjT&pWnm4@b$ILW1fNXKb}{qsO2t2&}bn4VPZ44 z=mE9?%F~sx2=r=^)+1I@~X0`=VSGits3U$g}ziaOT-Ls$cw|1rW&$To|v{ z910jTKpI8HqB`ad7$8ukAUWiHr6A=D$Mi-Hj-wUtK(+wD_vFP3wRirQP(9jnA>cbD zaY5Gk(X*S40Eu`ThHgjPIUEOo8>Gupq;Oyugm(_SSYX$#pulkdBY6)WKD2F8GV_at zwddgMR+SQ&sXZ$#(fXRf=U|YT5i_=S+q`GpPToik9MsQ})Jt z*$27;RMV-XSnAZadOw4Mp=9#MEjG^E?9fTH4jf%-{`T#>v$VKte%Goq(PCv1=Y~#p zbTVz`$|I!4QF3HmI@+EzUwZ{Z>ZTB4Q$VB)n|$TnF-%~L)o$wT!$SZzYT`v9JC5t_ zUq-i#uuah4`uec~1v^X2fk{J=Y6DC$>p25BMOf~Q^=04VIgn8I7&L~9HF1Y6EQB%6 z4}s?b7)}FAj%eaQ{1hfH2#Zl_HO~=gW=AE6gg-IC+qNyl$yp5lpFI*T_K=g=f|eZ% z?I3_3M$0a&`RMW00ZH%gO-*DAgE(owd>QIAT8K3sgrlc@W=7>sN(K5Ug-H^bDCbKM z&;V4lr# zqZ_uet#>$QDIb0wgcyqQM%SK}GB7PoEF1EoWgHT}`H6Vs+$c;+ClpznM`E}RSvGQ< z5j!6PQ37kh-S?<0vN2XSR|NP1IRN4x`rdGC=kDFAAT$v988D#8dP#1s9+&jw_;@LV zc*wFI))>|Kk#gw$g!2h!&(M&tXrTt4h(qkM!8`yz;mR}p8a27xa$tPs)hnyfRLv0a zTg;Vm%pbSjqR(tODn&=N3!s;^SN$ech8>|7uN5kLU4!zyfnYwZeRI0c2%UZ6>k* zAaT~kHxfgvgCGE5c~*)1a`L1-tt?*2<5#cNqpVDp>PHow$<+`d5nS7eO5NIKpN}aK zAwFho%mfW!5IP>ec~kudR7L%r{9>M8`fvsz83*B8dZZ-SUel0YxVYBiNs#|&YHIpL z%=8#>p~%JZ>`UoFXLK(PVg^i=ChHs*=ZO03Ekvs7VC(_i!aYS%>WgX@GsV-{JO)h7 zR1Xin%F%^gA`%8cFc5DHS8oiv@wKTb;^;fJO`9wq$lPYQzbSbAW@SJ`(xHx6kQ6)i zA}uZCsMtm>u1{;i@A511p>bpaYG-kl+I2hNP3q6_Q-L=i*Q zIN}hlo(NW>-js=NY3=v#Yaktb`oLvuG#>=f65{^KfJ#WEg;QdJ%YtFm8k~P|gb<9! z&1@n|>{*#vh~y*+Td?k}H^va%2Tam`S2L_z*F}?zzX(t3qpXOEvN9aqz1BPv=UkuX z&`Xn}Qip*tQ6QvHARtdi{^pS<vse8EqTKRKd=RVqZyOy^KjXXeo8u8ecZ z0+WKh7Qo3B#I2jfVG6wPROkFED#cYBqPLlga|U&&BlH@=jsW9oczCC)_PoTrt7^$t zQDUvVC>r?)5CbzWP%3lhh$cb(5)vHmW}hB7|36T5GJ|G{OHlZuE}R} zhHajAY_ygxEOGl5)L7b);YHdkI|KkFDqu+~l6(2OWs9XBjSwjyW z&c2f{;~|Q94X1*eOpcfMwr&3Nt~39-9sAc7HzjOs>A-Zz z^~+(l_@ZNpF9H5y3gHD|Qv704mBjgqu-L(vlkr?~ySMc?I>L6dZY;a%iwbZ{m{I2l zgzu_8@2E@fdj%OJZy(QAMwkXP@2I;B%kBrU!vO1YA3H)(1w3V12uDbdKjhqS)ye4t zX0c>t(td8jQp|Eg3lA1xLz%JniTBq2y9FfJ3xgXrz0*B@d=-?${IK`0g1k;NXh7s% zgCWr>iWke4BZTiwB>a$asFBZZR!9!3E8xGYA=nulZB-a)7#!gS))YRPw{Eqv#NJ`!} zs5tyF9Ex;%N2@t4lpCoEA(oW}6%b6h?#p$;{0e6V%KfXMl}86#4{z+wL;FOI1c6Hw zmV~4v-=mEB$B&mZQt6kns!h@$A`z}mdmkn~hNXP_uWp062_M$7cVfdK(sbCZJ< zd&fO;SS!q|nT-e0JflmOrt~~0dXFwtrlk6Yz8Y35@)- zi3`-(n;6NGK!=(aN2q_)bIch*>7M#pv?QGSufFIKk&z*sau=S92a5K9l~%e=E&j;3 zpnLSOM3wrSmMQavqArOm}W#z9!Wrx5l>frRM zvS)r{RPagEOlZ^`V%J_kT*NG_u^oqHOFT{g^FwUT?zZP0J;uc>x@c@~FN??=b z3-&s3m}ZsznZ zF{y+mU~Os6muYFl700SQt8C}QZ#8<|<=Pi85NovhtII(J;Fsc8`;QS(QYdSdpjbtc zym{B0lb&s$cW~9&)!Q$^m4OEv$@HKK8h-o>9vlj~F4kuuyl+vceqoQ@%W1ziU#8`| zIEj;2t~>?+MIk^Fw%mdpsfC1v_h;&kT*Gc`Nq4EAAbx5v{#RYBj=70fMtXa|pvur? znT`}UUH!T1bH5{yGeW8rJa8botz;6-U3-}(2^b*1fY@V#MO|#Sm}XbfA4x?O#xOQE zmK$qBw|;#WBD6gM2Zch$@gx_)KAwO=82E#mzaGD|*nXn-4R?f&A?fh2WCevmmg#Bq zx_RdskW@{;pJ0a49Ek)VtpW32ZE(NV4@a)cDGPL&-%etJ2O?opYwO3>_H>hqFa1rN z4O%O z&A&aUczjL7whd3V6e{~zuxt8b+*XA3PDWB9@d2tshBaEhS-*wxr*WG(TF=wVU=sXw z5H&OZH%!+Pv02^l&X3`dk(%Fs=9#guLKXsupeQKX$_Nvrkia=JK@(&+qy?m|C2sbfp?Y5j0yuQVZjCdgkBTF0%MisBXwg$4g~2Fo4VY;_ z9cl4!fE8DNO&?!O01y_V%|uIk6HoB#A6=e93oB1p&lk%g^y95&F6!NLb3gLEOc4{d?TE5dQjwd z(KJzT*i0Y*XAk)gA~%9ydK1#r1V{rf*aRAI;;6Sto%JrFdjr}pWmM**j__C*Rh_{i z97%7am;+fc1S=lk@$V#hRG8ge%FcE7B^3b{Mo^uL{f(OO0vNQa>$jPQ*&wXw!;WrK zQ`ohN)2Ad&1Rz;V9F$dV_Vk$T?A&*j3gb0eQXne71jvQI-y6S3+5Pr;> zO4ur)ucdYOdnbF~Ggakn=my1TOHsMzl^xTqN@(7Ekrboioch51heOW?Y|Z#7^0=o> z+RP~k5d>7$n<#c8tUqB)fv!>}{t*}h>dv2zl>#mAD!xfY1V6EREKRoPXc)MtiQpil zORz!Xjc1e5_sM=eGYc@w+*`U>0P{o7N#X;9Kuf_!H|_p#8>PKP_6zsbf#n}W)6y4n zl9Pjuvey-PdUB#JgujCKQBGEjMP{AJMMU*4YGgq|h#E*+(#zF4oAuD}pzw#x#cFW> z+Gmj}<-;^WJs}BnmOjD;njIRF13QKgKw0ut)QD4|S2r6)`MjeqymqhkUNj`LY8 z6bM@cKisuy-)TG}_^!ab!Wz{wQs9@SQWNo*)k_xZ7Rq$Ds$WJbrnG;%0l1Bv#uVu- zR@Hh#5u<67UN|hiMj3n|LLpZqG0-*zlbyUH8Ek`)pB@(v0uIVxr+taqM@L53oZ=>4 zB#IW0?P9UB28f{82R(>S3xKHj{f%)G2>qqO9EfwzdH6lHLiF!6uNC9 zZyw?rgv(D>k;&TAuG)~2S~Y+x3)m;KpZRC1U2zUw4yprFh%%&IA2rj1zX|H%Xwe-$ z-Qpz4V%VP7)r|+P3?zv{LHcr}lH1eF4GRy)RtPw$BW|x$prw&AkFChUgn*nJ4~Yz< z&U*A{9b9}&X>Vx~)B;Gn%PxIL$K6Ebh>2;B)Be>I{HT+uk>N{jo@DRY*1y&{jSV5W;!nEeh>V^H^XGYj_;jYgug%c>2bFM zb>-!^k1}h7-3cpFAFIXp{cC5jn-roxCHCy7r}LgZD(iTIdjoj@Zb*ia`$3r46o~3FBDtYtsoTg?B6l;&Z0PR-{a@g6gL>Jul^(CZyNLH1g z!;v+R6Bn;NUxl+!dL0}?R7;Mu$JKSih-iOq-pvoW4!!UzWydKawm66b#T6A5=c{5l zviYF?-G4VcW$k&|r(cp#`9ZOh8uC@QAUHzmIPBh+;<9%)8rYGXRDz+eUSFxnql0+3 zBnM;FdNo#pZ}NLCuwYn3YG7)zuc zv8qD!;_yaovtOY4OhVoweJ#o@U$`rLfc{DX2q+|Wf&NLXT}Y`;7hp26or{Z$>>?Sa zeFCF|d=Y{>c@?mCtsXvE7M6nRCJ$-6?ie*tFns{zp z!f{Am=GN3l6h;=r@fsMY64k}hO&6J z7C7^1snyG!Xv5RWziA%kNw{KG{Ua_*Ma%82p_hP^BOv%78%>kicH9|E zA>6V4ao}`%LXqG_kg5y?B`LW{?+t_upZVa2X5?Ez6mn>4W%&((rAOHBK-d6`eOB&4 zFadfB7pDw}#ZDKj7uTYQAb|=s zcP<3NUrK07?j1Ug`VMn~wJ1n>P~8y~S2Q#+r!rokw3c$hU7+_h#dho2^3@P!Q^8R| znUT?j>qV3kfDErf*9&3c9boPH7(A5)w^u3& znAN*F)aRsy!S&f05nHUo|4r0_K zuoJAc?O$w3mub453G~ocays;pB_$<`(e9YSsuF{`0EOo&)_K@#1f;8iRSdEQf&Qus z!NtqJ3shJDr{WlhiJd(O%ngS>T2u-zUWNzCM7?f*@JvFYqv>#jV^WFL6hR=Md)Lc) z6zD|ct}OEpjZ_GmnfA3SRp2I2y-Q$6(G4BzoA4+imxkz5VB4DHBhpm^qqhjGG7+~X z*b=^^7_BamLBd=S6+1Q2-XIp8BpKoLq@gV+Asd9`0U*pn^phw+h`s<(oo+k1B@cSAZ`*Q zo-7CBs8J|#a&pLQhT^j@`=mw<7U{-8&bo;>&uxgCOg9(AEHA?}Vl~AJyBtVUrMSv@ zv20ah0f_9vorgO~1&dRP@`}zLw6MROsLOFD-fA#5qOuY*?e}NdlFZ5;Qba{X6)q(ydaYEft(y1KyjA|7>ioa(p`{A8-asDA;1S3Up`tH+~gJ+tZX5tsG<;x(1gnSI@Fj1 z3C3*r@slT1h^HoH{w$<85^anDS7dy=4GS7PnN<{gx?b6L$X4+28&3@zJ{w~fEq;Mr|jN9 z5+DMvDVCN0VSnV{xpTaT=CmH8fyP94rg>1B@9-f^%lsf!QjBNQ4FTN$Py*;e{j&ZE z%`sdHA4H09ArdM2o@3yE=aHg-Dwjeba|4i*{YXCoe8CiX*1dkDdgbn@eq7Z^l|ijL zgo1_$Y4d29wl7uOIWhs;wfj)k) zX3=_%7D-`g#++;f60Dgpc!?q{k$XYy{FNO7A!_82w&mFQL6VZRLgZNdE2d&1KWOCy zcj?QQfD6baK|&|N)ekyhgs4h3L9lzfhLntMGxnL~peh9M0hTKz)dZT8m5SBzH$6R< z_C5cud>hB}3T+}fh2}R8|GP0) zNmqYb{Ta5ii-j_`(gpxu&5LEnj%40XU392lgzMB?T@RcY*{Z%_HXnEy?!YPva=hQs z9pab2z2K`#Ks%*b$hLC-5V$#!=D@pPAUy|QW%U2#?Nu-B+`hd#>=Du15xU>A%+1PL zFGBT-7GS~3iANeE9@O@qMRSN;EhBn9KlGt1N5&qBql82q{Dv=-bm(cA_~>CFdQ&9c zE#pj04a#<<|Ke@fQO;|meER#B2Gj~nde;-XbgV_>%|>(-+J})V;qF5glR&qM(E9_( zBP2G~<~vi^dEN6R3&bgg7*nvem*7tasr9+hbRUT!N9J zWj-jTtRvkm?8S-V9toJJgkoDSegkZb6j5%s5XB9hjuN|#Dj!Qv}l~zRcGf?9OS%P#Mi+W1@gbCso#zI%=1m1ot*$`=xLtR zkb%2U_+~2&aOzB;y1mk9K^u!)N@4AobwI%^0BijB5!C%;GZ1D+I zz_fZlUVY#n7HEs{^L7=^|Ml_Xb9vDuQ^pxo_z~y63tIBt_z6|u+d)1T5m6-O&IaEq z?bjnB5p|${FgYQw5yk8W$R&T$n#y>32}S3oJn+=|D4lqSj<1a2<#dzKr%e)G(K8l-ki+3H;6|zqe2CckgB*z%6YGnWLScY{nM)<5S*2ASR_ToFE-q zod||s`uBbYpp*51fB=?nZsT{0p{q}@SK`;pDP#Y*W%J-ih)Q%rF~k?T7d)sP)?yk9 zwU4zVdI%kTSS*^;{=p12hHnF@mpVO{d%Z^UyM+uF?(fK>!$yS_BrXNrmW2bcfa z91r`-Deu4AY$`8sRN%q}00+eEeP+67nfRj-Q4kV(*MSZvX&_1CV=4fSAL$lnaCp0+ zl|#_snaNa71_Bi99hY0Nq$zPP=0jx@9SmfIX?%YX-fdM0N0YjDl0r&x=ML%1!;8m(f z13>IXf%Ok&bR|%g!8nTsIAs@>kbO}Elss1Q`NDpj4OpHR!E#TZW+zvaw0LCHfX_=- z3y@9k7&H_A6^u(Q0>7-(Exw(sDGI_mLV0ut!z>f87QuuuzQPi4iS; z9W-}PRb;|#s;#Rdni`}eA{afwP3Y14tQ$6*&+dbW+uuXNxOLiGAf zxqKlBJ3*eAAyz4PwW#CjW{5*2p37JE&)sMQA31oD_ou|Cq_q=(4rZlPWnsiKlbnc!k%&_LDlnuWVOH+{);0gV$Usg z5HjT7)+{=HWTXkWW`Qc@1}mmCOuVh@UdRG`EQF#)EgBu3Ho@G+~_Z10h1jg-dgTL=0+|sOUa}cB5699Gmp*-}ZeR zD(_&*beTli#_>cm_I-PmbJGrW~XcgFXP9 zZF}Lu*ymhgDCIKws%7&DM-2I6_F1um`PoI3j8TDE1b(wJ8R4ZGOxD{w`xEpn^-#L!e^WZVDf4Te!mAP>L2p&2P~W#ZEE{X->ecZ9{cOP%%{wT9e%^j zqSDf5F4AtIuSkHip|o8`5Ecfu5-Dp+7orn%q&I8|VZp|V@I4Fgv3^+G#yiM^! zF*|e5bAbwal3&@iq`!Pi2~KSK>YL3sm%*e>uXS;d7asPFCDko4FohC0}J zq{Aj#?=%tqG&eJ=#i%15+Kb6=-bfj2^;3DtaJen%t8MS)s{#$tza8)d46&=Qnj(fO z94^0K*sB6SPH}^dpg4#f=L`*N0n`Ifa%j)CF-Q$KU@F7mGI;jlxcs^wio-E7dD0j2 zFG>Xcah$(g)C>h)lzCaJXsUc1ul*(YvhF z0ejvis={(swShx`6PCu~mk(i>K#zrZi~`JDUGrPa974Q=TXo=mVcYt)Dvfr1;)_*J zqXmX8*GH@T4`o6zwl+7Qo@1fZLi`&Fv`(6k-a&U8DVn$$Ya0H`P?)ucz)Aau zQ`kO>0q%r`uosc|h#Wx4?5wOv(N`*^L*>g|{ZpGmb^2BI?!HKu$&q3@Wj5m15*X}L zJKxw=`|A0(e%^f-#@YnO8@Ncyu*bl12I_0QSbz3Go4{LSCy4m_p~G zT0~V_j=yRD7dbny&sJhB)DuyOZ6m=0b)fg|f(ceW6xe4(g6do2-hS!Z87q>es%U$D zlcYq3WM5^%Nv74c6(2qcZYX+n((}~=)vC-)jLhAW_0C>C&l>KNR6uw42lzryx7kJs zFP(jLFEQ_8o@+vi@%G3EGk!nMH||t8XG5PadZk9ma&b}^O~60?<(ai&Fi3@ag+Cw_ z88lt(X{J6ZcZEFLuKd7jH?$X0uQTmk<0(C&64NCSG} zjfX3P-;WEyiUVcwxx&@-K%`q87k!oSp1tCkrlx$1m-XrmrJOv-bs-z1GMIuIH*_xQHr zb}Ks1vGDAUFVK6T*kR+8Twdvp>s0yq`Cr-9_mQ8;wA9xW{0%UyDy!hyDTLyk?GMYc?k0`Uwk1h*9aTL*deUEWX#WQ_4a z*#qCgc4JvqG|@@Z7bV?aZK>Q&lS#`Hf%bi&%ZJGxSc(iv-i3zvrSo&E7eI8;gm45D z2NR%UGzGF0`k}zo!nqv?d^{LgX+EeqE*Qx1^y4=S=Nk6ap4KUN;urV$LB%%DH7Wc@ zn2gsbvfR=;CbrD;vRq_Aef2Y^+pSAg{t7$y?aT68STKiF_JL6SV=qL4tuIF2JUha! zB8v<=gATfz*rb*EF{x6DK|(Riv5i#`W*QzEDuY)M@fG+yY^ZSkpUL~hskTvA%$5*m zCvan1%=U|ZF}mvJdi=6dhVFs8ErIfg44t=H0)Gok6i!M_T>q_c?dGNnd%lrfFEa5` zSe$5(0WOTHTonZ@X3AousCX0~Zuc58a&%mWz^Kz1pJ{j0I>n;=Bt0y1%E#o5)?l zvv9(nduaHQjn3u1@$X;QnpM_v9jCDgN^X~xtnF9IN>9^WSDsq`N2lOt!VM>cogK%y zLaVZOiSD7TQflb1sj$`PO?uW7Z#lQE)%D>!j@G#c;gOAsTSYRBMhEoGnrAEJ*FKwU ziiQgMM_8h-_MFO$@5YSG9_8mu|C4)W+S;iUW`)$&%o_>!ntw56M9DZ~=hsAVQs9eY69kbfEJ%==H%`&B zW5ZdOQkR1s)ru(&&i-9M z*@A+6BX2+5A|K^Nrg*>uoz>zq;T}JiEZ6p;91aU#3XT!i@W*hBIEU1suxd&^+k2nx zNse`kH<~pfVcomZAE>gXJE;hNuDW&2t~Ac2VbfK~QUzc!UFP@XeMuPsj4QL;bYc~# zsQ`Ofus#0oSA_9L%!4xz>uMPfr}C^}J$cc|Q@H8*{(u-W@#x}FOFO#?X#BE~D2UE8 zY3l|wm&EpClOF@OFQWe=NXo7cW1FA6;r&s) zhbpr})K?0(QO;|^OTv3iwjfqUFwV-xBox)wyQsX^77%-i*KH~M;#YdQN*9~B|?0tu<5ZZLMg^H zv6pCEH-xpq7HNTr#3?*)GmTj@7@%tWVGcW1qV|Z_ib1PAif`1IS~cDLE^(K9l9(vI ze?J#CsD|{X@KQ#JwkhMLJ=EB;a)3(Xb*PBsf9kqKF6r-;OZr5f`#6nO(5|nt8X@nP zQqt41{c%Y@F8&c>`kL80X!+zk>s(3{wWUVS%H5p*|GAqkWoZp^YlSA8B2X#rz$Bdo zD3m|N3pC-Jd9!JB$8Ip%1Uj=3!e9aD8J$Fpb?ygCf3fySUhF(H;?jTge;2X;d@>jf0Fk2ak1^M`pw_iD-&IwGz#r_p!#*BS&mwTjzm4| zP zFpOZ?3oYzm%;ozb{JZ=8Kkswl(v!C*y?!2WeemqJoCHsb@m^(VnO1oXL18O9uIDlh zGEOId>fwYK34=hR^jmp61rnQGt5@k&PK z^YyWs87vr+OGn1X#I&1ViFC_BO)sYOFl?lp`L&4P?ZbOHPwm%x;G%tAgkgK7dpPa> zJ&~#hXoXHI+<3T9rLCL#HorEsoL>0?v+RizC)S8?@J14-V19DY53w<^C2^Y>tWNuX z|Mn$6NK4`|!AV=ypG38wqzy*K_Gt z@Nq9VQ*CYP8$4ui_Wq|WrweU(!(FoE#hx4gn#iejOn;zMc|7&Zvf!=zn!0`c-{W{5 zbT0mN1|cB;4e?%s4M%n-0jGfMp#)HDK_`bs4dbEIw|{;i)j4Em5BHogh+Jpp&Z5}d zFm=|yD&dqz>nIDqpzLfs+Kbn`S7)1g*UE+WZEo^?`Z&}$nRoPp;FUIoErl@}6_+G? zPrRJka`m3ZU`5^b9XmddohpExKb(TFY`W6jgMdc7$N;M;WLvZ8@=qrd!)K;HtJ?6;tMG#GeH~lpL}?Q~ zXCvo^mr8Rn;>DbTAMqVC-|7F| z*!VX_&ZR``9`rP_6X10AXD0;7klj_m30MHK%CNge4Z)|f^KGxwp;?J{-)0W0G0GN* zIcsfKykkQjS)aQn%j0O)q}Mj<=>AP>)q3}4KKSwZ^J`W4)=ws{muLFBt+F4StI|6; zRA_nOX#q{j-Iv0rJ44|xP(pxQas>!5NWVK3$h;i{BjKY~3=&1@=Mz3*5)W!!FS}}{ zD4zR5^KAPGHKV9$t-*OQX(puuYsm^6p980|OJug#Ow*Yj@|9J3kBO-@ess}mxT zQaaSnPHmjQDnWpEN#Ibw$NdR@GqtKR#fleGKP%;M8vCK8FdZwo$=wI&pb7XMA1f-_ z%4IJw&6#;VJG`5XJLG-^|6b z6PGP`RZC) zzdT-l3}&rYQobhY6t@x+LwEQ!GM?F+5nVM*@&m8Ep$` zkj{OwMoh;{BLNyl!a_pb#9=N!zfJ7IUX)k;Q;EmUYM4%K&g7u|Vsw5gaZ7XH+tJOE zSF8%8_YE5j89kWVF6kcK?kaRLiPf{9cHi5w67jcW2ha_8CV3L1HAkcRu-j>rwEe)a z3FxQt`8buO=i9h< zsj1TMa=dUdN-L0zNhU7PLKj$PhanN?FrtiFKe=l8=X1oj&F-J=^Z0N=$3>OL6eW|w5A z4h~$WO7ELbybvR}&m(k)fkx`*b0?~G5~bc~26pON$v3wOyOgi0{}%CR=&ggTGJ>3N z->Xf5VV##p1M3ZaK7KsO{d$D{J*r(2i9kV?ej5Yw2PabPD9SV6hfmfdIH|X8R9wZK zSXgMNf8)}p4RgF-=PkfI zfdW(dX@G8URaJh8-xP0Rtj_&$mYx5PsqX;C`fcBTS~OIoNLDB#N~CPrNk$~un3j<;{)@jRdBzOQj!=XIV}?nidr zr@I!wB0o4HelJhyyy@BC$aK3Z-X%-Bs=lish+`f4eJ^8I-CDs`46tM9((pvi{ljt^ zk835T)|_X*fg=x9N2j)Z?e4pFOL8<1&9vRv=1WfY6o#)J_-$kpqf|fhM!Wk2hi;bq z8nM(rC?fa^@A!SNXyFQ8JNGH7de4;6hf9Fu-b7|iiLpc2HUC8Belm`TiK)#yvsbc1 zoY1SvFn@ippK1rD4O^fj-;jFq_CR~|7{smnMpp~xGqxuiWD0axx-Mu3ne+HHh?i4x z>mr{kvK6@by3cVBsr)!2{#U*D^|b>_J*)S=+&6aA_esQuVFV+B7KL*tjQ?By{qG}# zU*o1Lq`gO#0JWZTuXx`ywk+}=b}wp}UHZVr!8BO8`c+F(ltSuKZa*7`Z#~_{7d%_G z7IOuf9?f-7S#K~u*iOfkHh$=GNBcIrN?W@z=Ax0RhuC&eB85U3`?8rH6C|ZUrgk=h zoxrIOE*4gcjt;7^jqAGYngi^n5*ehQerLTW|I;(MDk|=2#ThwI(Y4!b54dmUq;53! z^xpb#PjZAlO>)0{a#i);4eK0Qmvw(VXqax()9cPY*ynvSYrci6*sA?}@Q0*V`x~30 z*ghFMNq%EEHgR~T@m5#&!ss`a)mV@S!R2Q_kGJbr7MVh5#2ncSD%S*tdWUlb{12|c zE)lzJj;WOXRB{m?2o>_sGSCGt*+VO%i1*AT5!a5zuBJFHDu?cr%Gr!&Q^BX_ch2;J z)ig)6zRBf)Jz+?^wF4~N@L$;}DU}VbO;0MjPIhRfHjaJ_Eebk`4zA^*h~(EeLgzt; zWM|9t@ZrOi9;9UHW&EHRzd^@cBT4!NlRBwYAtCaKnvwOv{Mkwl-p2;Ao5NnUB!?tM z6&~Fye4^t0=hnx$6KQJ;@=Y@)*GCD8q$uT@n62I|lXCCQ@#7`OzWg_+d_Ka-$ffQk zs6Cw~V#BP}b#xDRj@HBv3mlMDdq3THb#3M%F>L{wNgCg>8nRV&_44H&c*>pCW13N{ zz3lU(Ma;)$GgXEOVz=qm4C5O(kj_VLPSI_S=He7!Up`_z&J9>9^4^5U>|>=dv2-J&_|U8Ka@iA14~B z)vaE$vj6B^b7!HedYane>ah>)E{72`-pFN0XS@=mlmF3vC3x;hY zHcthse$T9^8OtDh7^Hs$F!5Px^)4opd-fh|bw% zHV)Q=;y#Jd{hszbCg;2ptAbe530a6zE*X{FS#xta|o2 zXiMs3#Zq=|K1IIZD*_jgoRj>+EuS`p#4G->gD;6%Dduf0Mu z#0f67H(cwY_xoqQSgzS+P-rq@U~!TAE8~U_oIC+>lP8Qdf3ft9bM*%kA1I1^d5nhp z@=l*un>WPkcxAiq$vt?z#BzO!z+p>~z5S>1e(O2)fVfxza$Z@cH+T?z;KgPqCs(`> zUclNDpYB-1Pl@xvy4Rj5AGK@5mZ9Z#zViArSB=K51lC;J0YG*%dsBAga&`v$a{g_b z`!wQBp?Q(5)UGeFO)@=Bzk&7C)oVu>QgSYqFE|(1w_zIAnz^+UfoDOtDa*`ScX-CX-Rss9#jHb;Gu-kn=dT*I zH2&1{m;@Dt_1d*-oA>vF`&o`XALciDZ4VpU;|AIvew)qxvsU$|BIF77{^?V-*NWe& zemniMm_hbpVwC;?hI^IEI=f2t?U+pqkg^+*-$!>RR?TivI(sHFW!cxulKEeHl1XHx zN^Mc0{PYQ~oc-F%9DEN$ZfP<~9#h>q+$qB(I*${D!9nMXynT@E?nYfy&DYm*uEFxH zdAXQE>f79wr0Ki1LHwsiUpECUjmydqlpXd=wG+r@%liq zsO#Swtwp@XmYEkEPXsw0v@CjjFYk|Pdx+L~v!)qq`QgK_pQo7W2w&Q->*(~og3+`b z8+B!w-Hcz?+!^@cIuyjp)pD}$Qn;k1dJMxt7u&S}ZPv6|J>B!BJbsOq>*6hyf4Co> z&NwE$llA_fy-GS+T4YgvI_5c-8_SbNMrm+|loS-Z^#6s;GuGvX5z zd3c+%!R5AuR=}YDPkSxpZy4Kn$cALt1-gTxAq)xICy}6tgFkDxOeA{#SUj%UmDep zh>UNqBsIC7vnL*pN=x}$&3efOb}{>DXlO)!E|7}L^zX0r=wB( z@_g%9D*FaIPc>C*t@Gb0>Na&%@Z5hcxADs5 z#xfKgg|JUv2!G8q4#uRy-}tc{bq?bXTFGv#!$tD@T9t%*!xMp5`88Pl(X}J$E71Eh#SEz))^P z`t0sFnQOaNQShG6S5H6oUcLfO_brZ=BWt89nU!xJvaQwKclS=eYJbho-q(>5XEL`; zb=mpG>3&&^xdA&x=% z7k}gK#s-C<@$CDXlLj6&^{q*`;vHh({iMmOQDHXF*fdSRZgHEzd~Rf_E<@f-a@>)} zUtg6U%kqj)E-rotVsw}f)n?(J3)ifrpWK^m4m4tg;9{%O?O&3S!-qX?TMrH-SD09? zOLiSOeZ=9K*j1x@IULz!dZNAQ18v;>`)6PA-a2`{=XmL39mY5Jbp2ANq~f1!lUdqw z+?K*ITSTimB8d5dv#hH7DXlf?XYDNz3G3H?I;g=y^GZ@;m7b`|dW5eP|@^Q1H+EYZF{L z><1&RCi6Aj&F>fZd;7JoigR)K)QUZdjkVv=%74+Jpjah{#cuE^>n!iQ1Hch*T_0(N zCWAHdBH~;}I0LEH6E146>QMXhYN#=^(Y7Y){859Esy1Tmi}j1{7o-2aiFVlkedNpg_QV!bhSdcD zh#MHXzBc&w#9b=hJw3TxCj3j5e4!+NTT%PW0yF^56mMTrTn`4ugNTUu;da%jwRJ+# zZ$9@Ij5-8#^sO(ZioSFrC?l!K@r>am8VSf=jE748dIy@i#j#@n=mt?`p(P&&0Qc0~ z`rxqHOoEh6d$7fEy(Ih+WxN%^2t48}H9fR4e??Y1WO;m~kntSo^O_DnHWKGBW**)BxjHGioBqzR=NY$}fdm|KU{`Yclsn6L z(J5D`V=dpm@Ldn{%AbCDWz8Y|q(avjV{idBfEQB`h(edEkogZp1Tr5bY@6`W4(9(| z@$c;S|G4em_c)7dW}~_hlUxSr{~NxhZSy!5Y#L6nqe;x;HF*cgLLrGF}x!(1tgE#KQ4qBg4%Gx4C|BTL%AhU{C88N61y(NTjshQ zbe-f+H9Wj*o!#AfzP^%9A9OUR9DIH;DyaA3NlQj{xO_&vR^cx_LFT}(Tbf4JB+Pd` zo2FJBV=TH5wyo2w^6Js{#WSwgQr*U~sg%_prw(}8b{QuBP1v^h>UDdj_BR-^6X+Zn zyyfefnn!0n)J|k>;pslUE zTawu{t2!cko1AJ5jbB3I)%Wk37T?=KOSkUQU5>kfOFhi-ou(9D9)YMxO>WBkmPypw z{ChPwsk4GCQA1@Zw(U%oNd-;{862bAzJ;wTQW>#Hx_`9SdPa9%v|Pxlqteg)Ciice z5{Gk#^P7M(#top)e)}cSbNL@LGqaGmctOCgJ72O~7h*gg13tZGs;irF;-HxNynI8o z)dde%D{PfPNGdO&->yTKJ`s(WN&ixuH$_3fiGXzBX zHyxh*66#_5EBM{k?R!cuEm^+0F-zL{y#6CXZ6C@*TiyWONeQr<>ez-}ug4U7NAIajz@y#Od)W##igx z)+#c{Sh>7u@9gl+%(6*W^0@tTH%Ce^pfZMz5dC2Ug!JEf53qkG)&`>@k6gn%_sI5F zNhz64QkROxoDDzD9BwE!%oTo?hjxoqfmjH}VwHiAMd1IsS@1WiXKBJvB7_StOaaW1 zUOuu)%|lE5rp13s_!Ypgzb)8qq`PZ2Ww4W0{+!zFJFl{G9rlfNFwK}_UlTi{ic>Q) zl|Iy4cNs9W(N2J|4Wx@9UM50QU;p9H_oj-2zv=5FyY7$a733ezn91g9&z>RP?o}bo z0h-d&k@16|^Y`PQxnMC@PfN?(R=++F!x48Qdzo&A_A9H4>{lhP)bP<0H}uF9Hg`cw z)h1d`Z`b186t(Dl)1m>oeWv^9*ySAFzG(N-OfO1HJsLfCwp~V5{kBM5;d%b84j+%m z9WZ~jZ6zASawStYwQtnE_~rf&FiZY7lmo#a!+a33C9J@33X_izS{y0y94+E(0vHfO$k+nZ;Nt1PN)2er~J4b*(;zxFihjN=x6T`z-& zP37aCr?`|qwTbP59v;Csz)DLsw-JQL|ptU^SY( zJUnjna#nY4^R8|G6DY?sb!W1q-+QiY7$lp5f1A`-t6a;E_ol%iBwKNg53oxhR_YG!!PkVxx`f7&GuRr*XkT!UT9i zrC4Spj;2C9JXMa?P93i{gEC6kH0)Of=ste@m}}T}``l!$jt5g3r0ZFz6I(`YkRxh{mDq#u1g)4SSD;RsO~pd;5+PYX_{y0cj4gt__Y|3 zmL2cWphV1plYAS1$Yp5jl+{8^qY9hXq^tno|DfXhl6USap5&DYM`UPL(s%i&+oR|H zI=M<{A5gwG!xAlSBQC8%zv+afce_OgPvZ*Ti|Naqe}5haH?-bV=8pCXdsP%1(rMeD zGPuI_D)2}t0NX1$;$c&8q<7$V@gH=LH5LU1rmlZ;dy-L7OziBOF&!Y&4KmY5fX9?q z0V5($Sk7Jb8++pZmg9oj4>1M1CC;@WCimZ@d~W65>td}v<7*_%mrA{>Lop;v!PYam z=`6RuPHYUV!L_=9<$(pOREe)6j8TPThTGiz^BH!@&E@4+!_3y~^y#R0Ys~ktUL^^K z+ZYn|Q-vh5sYM;yt)?HD6dQ5)+Mi6ezV(BHW9oAEx$hk7E!+-jPj+ygVGJBusulSg z$k3UTZ2W+*OjmAV7`s#cCwJ^|kSJ2}cg!ifsHn5yA8tp+S+!n z2$sZ$g(-ZmUt@u$)PZ5XhCgekiHVc(R@)Q$ZFK|Un1kNx<|vp~G%&q+Z{h)0y0OCc zmWx-*Q+NJ2+QY@eA7ZS*oRc)rHY%>sSoY8CH!39m|5Qj(2=7}6jtvSou*KuPCeEp0 z+X7c>sH-al4}QDp39CAeM_>Q7`@vxEC=V;y& z&e^iZK{MTpH3Ai_CoI|;aJ+xebV7@SOx4lbTSAkktuK%>x%>0y&ue{RHh@<+@+iAb zMxd$dT-fm+Cw3L3E1vn?@jC2Kv~SnBws$l1sOa#i_zaNLblTC2ha0S+qd;ZRLhk^K(kCic~)*Uq5 zb9!oUSvA;%yEI>Za8ujYB&pQm>Y2E~fdof4oOi(L*a8~VWN?t>^W9pxaTGrF(M8mDJu ze&;&y3= zWrS2spu<6Wjv(|G_IVfQl>JmPA6VFNvulR)-zC+XboNYSOR{s6ZbTkjGB==Lzqy?{b z;qvgD-ell1_3=eVqc52rU|@)-U*7(P`sTL3srRK^Ee*UD@7g`h75*^oAu?v19vVp| zxrfx*_g?%YGMkX(bAcDZwLd0}O*wbYa-8KqE=~AzjM&?#!1{P1c3LzZ3Rh&t z$dUc?6{61D%h_M-0|oq|C#XzI(pb-qXYCd7qLbGkbKK+hckkp2^LfZ;#zi)*331?b z4~-U+-79m5udSl*n{UI&dG2Sd!FLwF_958$e_lK}>g28n*_4}btRp)XBS+$+$nG2= zu43QboiB_b_0qj}rgQ3DhDDwQssmaE-0D}B7Qajuf2mg(|FlDOHSbJzvxDnJxy+|F zkCMMRb@|-r7u#+PDaKSeh0@q%yc{6SQd2iPfyg; z1)ZN*)!4O_@7SklYS$w>LW~o2W~+ZV3h95;`~B2v>}~Yc5*F!}chAOZbDR8P)jVw% zl~#waXTEOBv>;3+sOjoV!33n_-{0Tve1xAe;5`>~KC)OrzW>nP;aiZV_|H5 zn3gd@G^Lkp>|-H6X8*Rtt>dpt{%$sbIW|!Wz^I-XHl7YxeUl{mz~fU>zR);is{(=f z#%7mC!Pt12>;CuG6#Lpf#x+gfc>%daTA7+ZJhF0wkDJ@qJp5HuD;pVfBERlFR8Z~BO2^;qt}8R+Oqdw zF}-uS*6yrOcK;q(mEC;XRZrE>4qxC$0Z?H2nkhbwoju0&bQ&r+AT<=@#`wIwKPf63#a#{TmaFT>sy!yKi4 zR(eBzf2gGM;@IoN7cXd`4`(MD5vWtS%t=RAr-X%-6~}k1ZIY!(5Dy7>MGRHImy&z> zCG~SAdD?Kk=7C&8D4`+lXKtif#M*ioTI2rnri;7c0E;vInFr(~>xPn7J(FoIaq9basrwrC z$uHyfW+QMxap#jQbKv)z4^4)Yb55-U%D=z+FO@73J)%%Xlgq0>J3Tb>htviAXsOEn zf%e;jtMn-Q@d?E*q6ZIN$Ey5#toK(E(!?jv?}rY}**Ti)~6`KOqQ=wpT@msc6y7Ich4o5_dVg>K^{&4WRBNo9^w#{BQ`5NTdrhe45 zc(tg3#-RWOz~#}BnsxppHNns_;(eu=@j$M+!L79Ow<#agz?*gJLCTg8tbH7s!J7-25l+&`;NX zxxuFisu1P)?v1gl)qnQrA`@B}Ev%Ay&jom&+>cK~%-YCi0%3Vzw;wVY83u-d-|xo9 zb9ln&xC+A>YtP>v-DO!`)BLB~Bch`G$OTDQNup)X^b<&qKK^kz)4Y&R*AkA27tz4PS2&?YuxwHcgO~m>f3Y zR&T+NC0{4D!^22!MtegP60i_qBPF%bOnNt6qmI#eX;2Z)n3;-VNB{EDL{+v^w+wWk zddRUyicfdX2~<(iP1^y*DPb>sIgt5SgGNSddH(S~CSdb+qGNAXIv%HMqlPcq?8$3P zpeA50EiEOd*#?SIrI0A_Ah!#o>AA3fb6d$5{oGHBwg^Lux!$ebfl%AC0A=tp29@KY z-hV`4aI95$?gDEk0Lpyqwq`qY90{v z72Fdv4TVC48QDKY!lqDA~4VV(N?)z#@mxaBS`q{bm?Nc4Ip}UeqmO#8`FL?(P7t5@iZ%Cj#b-%kO zrp_NRo!T3Fv=fA~`ua5^G@?p@bCN`13CdLL86Hl~H>-ZSOJeWD1;Rw+W&wPn$ZYZK z#4z<2$a?}t`6mZ;CG4Z)upGny&bHmDRiqS1pD~r_Nf>9 z++0vxasDJdizbfk9T9HfJhjzK_#qKwAU6V1BU0DH7;U~`$tZvDo}rE-t9rAO*B@pQ zWC0~TY8st^BS5WjiQ+Vae=f*~&o(n-Z61s`V zs6hstB_md?=2YA*F0McJeOu#pG3q*3mFVi6D_2WKl}CU7K87qne9v@si4z1-d2xKr zb@=cOaMXm&+}d7Rvx&}%NJ!j*4!wSoDa`DMbOT}vHh`*YYTiRkfv5t`M_iLnCu-12qD ziZe5$eMzdN*Oa<}XAmPm!}&%7?{B=-G7N6dJGV-WQ@r4JE04OSQ{c7z5oRcqT8Arv znh#yjY-|xBUL?GDaq^eN31qu3mN{+2fe-n!AAB3qGntyQ!_boGi`fH-f<~m0l~q!^ zdeL*THHjjj0z6x&vxVZg{Di^+A-1<^KDnZlanUg;6G7}PsP!Z=6V0Y{(-OAsxk}M- zKS57(U57nK#l!-!yL5lI`D2j3oWF)} zjZR-($@R5@CAYCD3s)Jsm0GXG_>ws?KAzHPdI)8k4=UZ^|Mg0;9++M=I<5lrMf{!4@LH1w=i|F;ET{J}O#<7W5KXPMDbT{7F1XM8klkc0n$LG8bqRBU}#WCoVQ9~1?rr{9h z!1jtW4II<+!fo;({IOvC=n>cp_ z5)X`@#` zF>Xd%HBNT+QJItz(+zwgve^y1f93t!x4z4^TKfG6&hp_Pn$W?=O$hQk$)Gs3@k0W2z*ZLho;{>?j=<;~LQQ~?4ZHARUZBW>1jxcB^ z8WxyBw1Dv3%7O)p1F^eFu0IidAU6wYs?R#568H+Cn`Uxt`ZSA-=T3YK%5`+6FcD!T zmzsFhMH#9nid@8~LhQmYEde5sqEHNTL3ofzX^^rJLKS$_Tpw)?A#EdulDG+cmi%z6 zr%P=97wwjH#6P7Wd;uQHVAt^p>hmeuRK6 zF%c6I(i*&n-q=Tu$|;CKp`$W860?eeT2KWfzj*DM>#5j^o!J}&`Bf=+X}hoY*PhvG zXkaj)(IxT7QGWc{aPZ>dV%pLHn@Ze-mGFWG;)4>bcxh0u->`du0b*0>?q33Jib_l6 z$le_(iy`>zj1}5`QW;}?D%JfL@bgf#5RiH}C}p(2KgG$8q0A622hqG5&s&;FIiZI_PV?Bds%0YJ&clo8!qx)nD4i z+==cL;f7SdJj$Nl0(qG^l`9z`gSLdonp zWb^*)Qc}!$-`ctpB>>TzAyEZ;2!LE73VDeTG4fh}pXa*7Mlp_960~7_go0rF&mRR~ zz~I+}M@Qd+TGEx+J9j3}X}9Ar+Q#i-W2;02As8o!Dq<|;dxCc?<%M&vJWz-a#4rs0 zh7pmG0}+0E>_$gM?v$>o@70!;mZnfZ-+`+7Zs^-UVh63?F$;?XDGlH~8c*RP@Ve%= zKhC?Y7q-8YkO;uBLFU*K784T#8zldG_ZXNOMzE9%?N%n*WSU?D$SaF}&_c^Uhh{05 zu>9amUb&(Pf?9Fz+mK9^&{T40%wAwKmX2 zO2p)x5)S<((J68cINHAHMFj?aha(*a#^{M~$oNlYyITcgFi0XpM>C2hxTda737;F4 zPqX8~?HqJ)$ek-0710O%`7t2WlYjmY%Ty?Il7RP?nkzw{c#J^L1JdS18yi8U7f!;c zcgS}GdDHO+7blT;FJm`z0w5c?p@7&b(d)Z_w_G2ysFyHWXP4K9nxg_@T@xc|S?^It zXBPf?FIqgYnW*Kmz5cF%7T~}63%5ZUV)$jyh#@L;!<(`U@^1Z==1gF=MX-km#ohit zXp*4p?BD4~zDV5IJwD49Bp$Wb74?#m-Yp30Cp6*Owd3Ol3CHp+)UAkH1yFc=<9o`I z2yW0NOIOE<;167PJ&CNyuOyj3flRpB37sLEXpft82!IFjwl0tFCI=iihb81I^C3Ke zc76*f2?0mhiQcs}5#AL-egyej7)B7WK}<_XJRz#hxXVFGt^?WVtx%m}ZQJF)WjD?w zMCBkQRm38TxMkTL8)!prD~5PnjA^(EPfAMIp|MNc4sm5r4&8!g&E$fVIyzfYy5QbI zTAO7x8;&7nA5;_qxGFr0bgS0U(|b_!+ZRXGCK`be`WPMI&j29I=Rx-H!mwmgaxyWa z!RIA@@)O44cRpC%G1pEw%KM%g`Y`b=qZ}!kSb&4ORWQynxe>U#$B!SM6oV###G}wn znt1KN%to}h`1{t6)mR{TRBcJOWgP_?+vtd6XjkvMnShqC_xJCtKFMeg%nQb$aA@9L ze2o+h_|KL884w_8vw|T(i+CZ@kEeuYdj%|+tl@`sx?YaW=3gcMygYxLFr9qxsPJeA zJ_nHpgG{XJGHk0&sLmZzRIEOjieyNV9n{DGLjDo9^1-LSkG~B4Wo%oqL9KfdBJ)iB z{r!j^WhmVSE&^V&uKtg|an;REgq>1A&?FGSMw)23!akxD|7ZO~2Py^-4{UPWM_0E7 zH7)zKsR#u#9r!|!UIO}=q(w&`-TKlxxGHP&GFE6;dK9!@O0XpWL5Ez3J{<1~h&eVp zvNfh3L94W)--Pqkb-91@)bzAD#0TauyA2}(87t+dOC`X25)yg$?~m&31KAy_rOH>Y zzM+Y%!TZL>r^v35c6DyfXg4)(;zPjlJ^^O}rvY(l{eLls>e^ZbbMxM}-6AmnG(|c- zCR~-JQmLcD=KxF*l^Q^Ra;S0=>Mt%o?Ce%SCY$CAN3%p{NDsq9_>C$?Ql0wzI{IO(k* z0RlvJJq30zM6LG)t`l^=)4r*4UTht6$NiU7+XWKX`<50)98m)7yJyU{67jUSr8tlZ5cP*fU_^NM zbrh>m_v6Be#xn-eNVAh0r8}vjaF$6!hdFBQ>(?aEVx|TeXjw>fN=QnwzUO}A!yR?w zE=|l74T38s2=q6TBddU^30u|R%^GAd;D3O_feG$16*@`CM?s$L1RL5reAm@2>(;KVc76s22E0efwMu*U?2&!?CHv^bH4p1- zP`G%PLfYvVaw-etRsm%k0*d1g?*iQCQ)ArQIuGKE5E=ha_M@RB7$JazlUN2MC_oS? z2X#|+yLv1=)F7=N=r}lJNI@TjYTV^y&dy_WmI5`F8M}9zNs~HL>KC zT!E4JtLl;8Po6sE1HoUBBS$PeJy~GEP4y>;I_v0}DwIvp$8+A2COAh6Y#ek@L|?$ckb|)V(FG()Ptur&ho^Sco(U+JoA<7!Q%7;bOYK)q(E`>1f3o*`Ii8MbeS=)!wg?wREo z42}Z6gw(kYI(2B|*YrcBiRs|pP>8DNB>_iK%&BZ>2&cI@0$ELX#-2U<6u-t3!_&pF zhxR#(2{Q|eK-m!p5VG79RXV8y|1;!o)!(5;KY)}$QkR_DKJ3e4HiVA&p1C%0ih>S% zvmgCtT&}_vCVVZ zC=_5(Tg*Fa!c#H#c2rSORHVqnl{wkjx#q|5hCzU9umyu0Nh3`~ArDy7AYPpIWc*W$ zqzsUbjI5ylO$Hwbi@vBoVA!I-G4%X&8UeO2zDnz~$0!IYsYV_=GP)>Z?D9CVEsgVh zm*XNrDp~4V0e@%Gb%3G~xR!t;cx}8n;;QoP>SzWz`bQkU1+KJ-Y6;A+b5W;KeuQ}) zS~_$DOq|iMOH^AQsEhX4#R(n-EwvJ zpz1`#SE#TMv)Eowy;G;Sss!K|(Bmuv&_W#j6dgNzmg}fAH9F?us}FouI_6CXjChOI zFVs;2LYyel($m#skc18b(S{!x#uXa=xfn&= zxS_Sr`BMECTM@lC7gEc_1>tV@$d%I%t#!a3L(l?Y9|-g|7*%`CpAK~WAC)dDK8A^( zEQG1bx(!h1pe|VY`!^fHv7qs9M}jAHCio@@?xi1eIJch7)`LIjEevS@bMyc=L_(-U zA2>L0*4{o{!CN<$-}VCZR63AiCqk?q4vIyA2e)-7c`zp?UY75HW%5& zS{yL^G@tp4t4vA(BziZ4d6m z*wDGd;WhC>C`Ss+AI(*zp;`m6?w^y5fVj|SP#%BG$lujL_la;Y9peIRx6se-u9?%@4cpriuIce3z@8ypyEQOphGYr@kQQuu@UVLKN=eC}o0Q+Mu2%w_;_ zuJ#D4G_YrQ`PJsXVILKJc}QI5AuSKBQ>XeT-~K|!fg1EamMU^ZLR;t>(?!tRPgqjUM(&z zj>@l;93h-x=DpGP$$;_9nE=qH=3i@@nnImHsK792&JcDwn*k;6R2JE^8Erlkktg4t z!7JjP;WjBkt`%mc813NYB7XF zZ~FK&J06KR#=LW4|iK*3OiSzC*Wiby)Vbm{fm1L*KSd{Tz;H@LM_GROV-9*VAaXNWRh4*$FI^V?bHi$4XRxgXz+Pcex7WkyCASlYtY zBy~LV+^bIk8N##cxh4YD_k$R`6e z*ErwAcX?Oa?*X{ zrSaSIL<$fC1U!I*`BIx4;@pF%D`#n$SXKp)3obMY8Y*@oyP$GhyLet`H+HBksJ1s; zG(Qs4>3>3;TJz$iOOo4_Dc8fo!f5VB|3YtU`Z^ON<~w5PqjOKN}bfQ@{JazE|9y)w4~Ca(-- z^*WwM-aLhQ#g@cIUWLa->*U0b!s?AB?$VZswK678ezGhK>{I(Z-_1m&^!O{z5Qa6u z{~1H}gD!eMhJC+5u1aQ$K56(e4E)fi<;AG6Sz)dOgzElzZg6D@$lcp(j_5$@4}d4q z1WE*JXZV5y{<7%xIvXF9o#)S|(Qwf9YNJK7b#hwy&p29yTaTwXtX73dUiGdmlcCBxS4(PSIiE79Ek#Qa6xj=;4Lt|z&pGl z%7@Iy9?d<7j;xKWzTj7+;5HU^uV0w>PrqW%-jjSFcJatUkLTt@#!?bh4?q z3`X!?dRH~niHQsG-q6doSf>j$auif9_2D);U_F8TLxwbD{t3~4bU!yLEN-AZCyyk? z@y&66<^3ja^~SirY=;+bz;s8=bv|q7O_a4%R5c#K=o_zuam1ZKsMUDdpTC7})tp$q zURDcO?@Eq(yDP&h+|bi*8D&-qe{`9*ECH96Y4<=pxh$_=u${EH9?8RuhUL_$FTN)q zVVZ!nv4(<~V0c6XhonGF{U*r+B8G^#0WqE~Uj(U{W=C|ni7^{4LG6ux{DM#g z#$L-FlJyPZQ*c*YJ%Bt+A(n5T9mp9NwEI$fYpU!=r<(6MKj~YA2;Tsc3<~Oo@S(%j zyavk3{yY~{g1+zfDeaj_$pr)rlyL=|EpRiDm%mwN!6#He$IM(?EZKOPJOx&Pik@OU z#V#ybAuwRrMUe%|pjOUk0&iQSV`oU^@iGY%=CwnQf;VF=&ni4pSb*4?>PS z{zpIpJT5|Og{ryWrbf&ztZ%##bD#a)C&9@uv+tb9F8y#eIy#|2iUM{YcP#VM)@gF) z$}e5hWYFaZ-Av_E))MH!vlm3$wqt~MeRJI=GE)IyBAeK_TSR0#uvmH-(-&r|(8_=} zv9Cl1wp)JxgmGzp1uf^GaYUbiN)B@tV=ozy+0c*$e4?hJV#&8hvq#X*olP{j6t2p%m25W9^?&sg^qU+SS?;6Es8Bt%sf&%guhk$^Z ze`HV<3Z81j1HB6+In#Z&kI1^SumNd5(V4F%!g zt_cF0P6KNZF4wiUV?;35uk9Pbl5ZckvL0}y`S7PUt z)gqaG<@1jVlW_+zP3sbbZdt9Fgg@QgLtocys}uOTMq|^Or0;26T_$8`hw%p9!IpR_ z&Up}EnDGv`^lAfTbA2KOE6U*4KThRzi~$kd!k2+D$bnPwILC0D;qj@*^k&bgzrw=8 za87$RSs34Di{1gUNQfPBP`rh_I`5jRfE=s>a1_PXswO8TVZtG&L1UL^5Y@e*?lh+O zTYT=|U*HtIq$xeLD}*A$7LLJoWQh;v-1p42@R-#Kd7=ZRt`?P`X~)9H!mFDKj%WTeuVl@c6)*lybK|G2Bg{yU^I@IN!%$33vpkZIf>-;an)Pi3|$oLxFN4 zvlH`GCG@N{8BZS~6bybFMk&_V&~Tk}6sRO{ZQfNeJ7Y7Q3lKhP3Bn#FxdH7FL;UB9 zEgc>Fn?k^7vubFvV!kT&XLj}y^O3!5eQYgPXfzTV$7iDhQxv~_5_6*B_|J~~B=CgyoMh*M zErJpf(QXz4TB!4RraY7)ie8Fgxs-rL#rRPe8kl6BQHN3;aM`zyVdOb**dh*qSQWXJ z$mE0}glQGAxB+TyRixEVuxO3U&)$i2LXm!-|MM>aQ_ReQr*T5l%>7BT5)|#%NhUUK=8!Z zY7{Vc_vVETFT8BCr>_(&hjldXV7BYu2-F2-t$w;`N~C=$IYp(I{ZCGGHQVaEF^p2^I;`w)u&&GQ>Q`3z2NL2K9~2{e!2IES?Ice zI}^FJkN#jm41D0)24U;#`lxRu2QC=v12@6z$np&)W@k5=YiY{LzDqjy-lA$x-0$yU zC_%-|c&WBk6l5ZO|9YPA?c9mj{z!A{zKGb^k8%o}(F|x6i%fnud~)q-PAw|B_Fm&V zCiJeH3N*gTN=hG=3wIg;>LcMA?3DagKbzZ~jsc}+*8!~n2!Y@$_s^NMZyWNTK0Pbn ztE;EC6BQ2&)yb&YR1A9njia+X{lj?Ml~5qH0q-b-7FI4lN4k|JlGjT=6cBlbVwPOe zO`Goa5`VkN*3;`x!#kA}S~pUlK7~xzJ37iAEL6ZuL)U4G&H%R)P;w>e0ia6YWZ@=2 zDD|L})XyVJ=TPW@>jQSh%lx8}64T`lD@DrVm%|@VKX~lM5k1*0PIW@@&^b_r@mGXT zs;+e>tzVrD)3CYlLnE&P#a&jy=2li~F&;bf_hCZVPC7b{MStAC>v${ZR|viXg*z0v zZTBI)qKFDXN)tc5=H0#tr@o6nowm^xoW;dP0eknuT998*_abwOuayY;bH&^HC}3>x zs;o=et%OT0vftSsvBVojn7c~1 zv%-uzK@-k_)c++ODJb|5?ERi45se3~`*0jS=7fEP#H!HxouU;euyNHRc1|@KO0Gc$ z&8=zMC~r{6f~A0Bj)594pW z{*OX83eMr{Ls}sQxw2JpOj^}jGG$h(MOEQLxxQ`EcXmDq4m<1W z_;0L-#_!umLez-ILb@ltl)@J+<5RlZsr3 zjwf)mOJ8~W{vc!M$!!X}o4-?q;W0nYaWFTz_n2|-*;73(G~ooCd0+7f&SN-=gv>A` zOB1Kf6w9(HRjp}3RW#`V zvBvXTCwb0rXae4|$;B>06+<5`Ao1<&o*9OcUYv8s z*UqEvM*&cKl80`anEq~%CO5+a#Pe%S$q%GfO9Y*LL&B|cICALiR@L3XCyzI{OW`aVn)5OiOL?Oix+k?B``Drj++ zO9|I6pYm&Wz$F|Xe<7voxH~@flSoXRYi6mH@Q0TC{-GhBO}CWHV$&MLvgLf!yy-2K z6)#*1G+QJ33Kx3@VMuU|1whoDiUhWC*^x>tf93WYzgW! zN;toFS!S(uzW+-V7V`j2OLNzvEf=>+au}xkVj@(%|K~3%owP<=p|i zzL=5vfCMM9tIk(uL`Pu=b%g#}Q1JqSM&t4;3pN=&bR4g-y21ZtL#8YD!mR|oo!84) zo(~7?TYONn9RG5s-dY3kfFub<8cD&EJF@5_|7s8Yt|;cKbFYy}7mnTjpjD8;``=Bs zp6r)f)0a$YTKGzom+Y-g^t1e2b$+V=XC~_KK-ml7z zwzeNHxU$v@jerecYWlcr6!G4QZjJ^~%Kuu<$#LHA|DEsMzwmIKAx?vex3%@)-+usn8Tf92N>gsYf{+vxS@qzuR&l?oK1Sc(@7ON>Dk>7$y1^e9df!G)= z>DeIzqC7n2UO!$h*WEzQJZo$Dzp@YDm4^rIeQUGIv0=%3YuB#j^7x^9Mdd30hO^LhxBl9dFgdm&o1V7-&88}{Jb~wg0p&;_8@P0`}PW!KX&=OV7~Uw42t+u za)0!TNdPH+KXKCdTTt^d3D?7yEtq)I%*KASfl9}cm<>Ee0tTC9bOhv)h_vuF!cf1sRSAWn8mmtC}{^Pck7woov@-Y|deeArpq zPP#$Y%Fx&Dq4)cOV{JjBvVWXg;oTF-v+l(WyMmsI>vmo0>$tD6U4Qi~Pe*DUG9t%( z6!-7fG|g#7A|994VcNW1#!2W?q|R5qu;@cw@BK%b;tTGIO>_hvI8<&CtmTvZk^N1F zUrGZ{Uf*#3=CylxxR*Q&&B!jF!`fvL*r3z3@r`=(CPc7aUMUJ#I(Cf~wr<-sg^TcX z?zt@hh$NCRVPyn;gipuzVb|wE);x1W)s~j!HMzaB7t^1*vn2ZY-1A$VjEq0H*9E0a zDHz|s_*Q+}Rh?`LigYD!Z~3V!7IEKyxCy0mnT0N?ov*oSa%hsi{F$B8pz4>}&>QVC zyNqwWP~TS{&-NsK=bn|*dp}EbvyWgjf+w%JM}18ku%Ilyt@33};HEw0o(IpmX?|Iu zv&L+0#F$*D+`06vIu6O9Q-M_t7EVTchSK{3D#t1PtCWPL1zVT;rki?nnvd423AKKX zPEnb0SG3Bcv&xZaSKqy{$(G&ApqqyXQlH-NC#k=|VG2u)k*b_%8VoI^29vJ6cXd@Z2RshQXY!%b+$wKt*DgwD-=ybt90M3e(&xUc5dfk=T>`> z$M)Id4&{zVO?al~Yc_16HSlDZmjBQwZ{V5Y{@_e|R*|&4fm!9e#EDP$QpTM=tXID* zv%F?M3`azxcrW?2%-?wJ;R>hFhN{WQNu`CFE8LX2+`R2J)aXXk=oWiqW*byZyMNBh ztyWDpTuI~Z`g&`G^1(Xn@%i25{F^lA=zI{}vqzO7YgLW!R^bC{XuJ8VcFf&LqPmfn z^WUR?_r_|D4?4EH*tD;WM&CDb8Y<&1yB1ca97?MQG};#6n|;*O+C5pn-@3KSzF0%7 z=tDtxowMbOyohx67^ig%LL46?(^FHN)^M(c#{;wVvbXo^&$oekKpbBD^4sg;w^5{S zp=Wete-;~9j+ec3k-hnhj(ddhL;MQ^zL&bEeB@(F{0^NOX>z7H8!yn2r18AjkM!;f zXc9}|kk|7i0+t@qw~C4z{g^o-e?X`1j)+=SHFv-tFXpZ{j`SI25)OUD8SMJpS&38f zh5P#&SV4Ee!wvwt&TrRZv4peTv_bh zma5~Ype!EcH-{bJj9su`ft||c6*cVJ807c2>oDftn1A_{>~k~0^7)D779p7t9=qsy zpQ*1sp(K=R#N%eG8L+16l1910%B~4@-gC#-N?xZy?{{=|(v#FkRP5Kh@{BIJWh-i0 zVnYRw>6L{Jciow|SneuI%TUwXpxe5G!oyCdvyMGC--MFirexefJL)ZxClIhnBOT%E zT|9O<%by*8dOhXEx~l2rUDXkEW!j_Tbh9d=#$q*j`JA^oNJ+Uk(h?G>#$)u%JgYK9IDN%35g zzj)2fj5fcb%IHFQ1g&MaBhzbRzEv3U=C!gn#+f%;Dtyb+V%$~l4|ms_pO1f8+(6b* z;k8}qHl4he-+pV_-0l2aG$1$qTE?nQ83Zn2H3#NjzTsfJdG(Q<3yZYRima&dJ(qpU zsH-skT;Z@f{k72HgwRX=7q5-7t1VSfrKm(H4Ygc-keuXYA@;+P=DN$^!}n6^+~Pa! za$??_hr|M{A`ZV_h=Sxe9aF#|g}a2DKeRn>ofPkSmpIbYWxgdkDLo^k{CvN9)wiK^ zo7$yMRI8$H&~($XR#}WZuXfN2IJiHnSzT@tD=(>h%`Pm(b6J;|eWrtAKc|_Y zUQ^{JQdRZOS8y$lDCEy*Ci~ak{nUmqr3dIs&9MQSJ6O@Ob*EllR{nr=}H2;&VFBuf%tgGfnkfNtvNlQ8j_GfDsTB??_9P65pcM2$KTM7wgZLJ&}4b_gn%{`K|oET+SL z4f1^`4=)*N%_qxO6B>Y;PNbCo>+k>PbcT}YM0FwnA^*j6#*pb;36~nZMd`i_G}8Y} zv&rojq!C^M#0m)(^S_ZRL&z29m*Mth$cv-sD5-Tdiun{`Y6#K6f4NJqK(v0A7Lvkd zSew})`}PZ(qB5id@GNr?z#IPc^^!cxOJ4#X2mA~jS2cbvNbtg2nazX$#Z(ym{5q*a zNA3Y=pr2~UPFqiJJ%X`-;{4qB|2l%Jk__~*S9O?yCPCx*2cSPW@9dn^%8r?^LPOn! zXmI%7i54@Y^Bn1{ixTd4*%tSHZqm{JdXx5F#Z2=4$0i?H2!0@|Xr-7=Ry7B>(>Rm*iYbL#X7`Ko)Am_qn?lk@1f(LrI{{Eip0i z*ngq2FX9mv|4+I6$Pe686xICCErx>Ne|>#ifh`vM9~#p+6csnoj~=NHn*5)Ndma=w z_kT{L=>M(lqJNaNg&jQZ5HYpk2Rp;wV^0_DW#OPZa9~TYr-D!X86)dY!dXr6wdQJX z<8PyM^-xD|O?~1jO?q)FqA(moi8`X zlm86lk7wsjDDI%vD7ydU<>MlFYwk=jsoV{g@hC!cdH}UQrLlmuyeuh^L*d~giPith zcRf{ZGN^jSBA*SA~qmc5$A0{rI%pClfn z=avP}L18RlA8u&E@fdeyu1znRG@nK>-2(~6|NP2d|Nd(XD4gg;HQL)d+-g6^{|F3E z+92jU2FC1vd3bZdThG>Xf!(O#ru*2IFmZ=+7hVa8lVBdIN1=tO(P=tc<6M-xA3u3A z1<)}CRm>%+@sR@k1kdi>Ib!1f+pua%44J(Qot8hbbp`|eI0}x-J8XMU4Bg;VG|Dm9 zm~{|IAaVEax$I2dt()dPxleubCKB`21H^9~ASd>y{0x(DQu6<3D_Vyl0fg{FV&?th zZcn7qnW_PRs|>_j`}2_BPX;;-Vc&W?CT}_H{8~^d7|PxG^(E#_;h!@l<{F3!2@0B_ zXRrC0Gc|zVCjt;Cixhx%mWeO$fpN~G-HjZZ>3q0>&UQijig7SAaf^s(0`0*nVjT*s z9ks2^I!y#UmxB+^`E_;jL;87SgQzI=KCY?RFqjQ&znGLecrv_q?ELjPpJVGC7tk># zKy1X=nG{s9LX0J->!)YPwPe?~*98yeK5lC`kltE1_G( zKXm9i!>=onAD#r3mz5nP#wK7)uDaEzX+gC?Ki`4*vmf)keVsuyH=4jC`FyOaa~?lF zJUNgqNoda<0JUD~WJbrw)e1%q3L#kCb^7zCPsi--$N1!bUE$}Ip1jOPK~zdn;~FrE zv^vwmSY_P5|Mnrz+gJa(O(If?Weprm-iTz4p;EoLgn12}j}?leeE`sLxzLK(I&h37 z%qwPx_~-kU29%ZwxlN9(*9U-wikcK}{>{HW;-gMvHZF%j6)|hF9z{V`R#MeBhz0b|zL`!RE8Z}Q~O zetK>l71SZPT5jyJ6&-`zT73TSqJ$j};D-A5TY!&u_4YOnW<&H?5B>A{Z(gBltPZt| zgU*;DvYGGRyLWG?%CAou#713QoxUBQZ{7$eQT9o2NJRn=cjo?N;j^g3zOp{# zYmMxz?)Yo`h!n^v!&(>VcZDg9TFx86LkIJ_z=EBoz>Kd-b z!t(#21YWLYV@pBpPKu#A&^!Q98rc2)V9W|;8?Wp*3_N3Obuf5e4xGUuPlTpYWzLhp zF4XSdMRfremI)%UU0l3r=+^9@{(NV?O}I>6*4C=|3px$y0N44l`?q=V|2Z!}u3;xD zhD)9Rcg=C={?<)%o~$Xu@qyCzkENu{_Ij{K`bLzt+oijOK@saw2 zGtg@;Ahik%2#5h`hD9N;KhEdBXC(w9WzVG;TxTWWFNn_W{YuhwwsAe&-VF^6DY$T% zgKH)zP7BdFJ~=hD4#!7RKZVJ=WH87wOmf-eMfaIQn#KNYRQ`fgQL)yx3Sjaj?+mNfJimup6v_`9~~d3 zg3&6iEX*Q4zv!1j^SoVVnA?11L5v>CW{_(qM+0OJbC3jB8_-=8`(A(K)Nw8(B3qZj za@BcGCWWF6^FKK~{V}iQ;R)C_;@?2G}Q%M2du7Rb6 zrKP%?TVdeqevItx+YfhQDs@`w>SCe!^8(wq(%9S7HoexO=3R}qvmOpDuI&E9M2!bA zd(=&xLDScf@$u|75!?$F75B!CO!7bYe+seSJIt@Cm_rZNd9>Ux|y{+tc42>rsC!M99I! z>d}cER`qQTMT=tdc8$v4GO=>N^OBStjh29NMD6kOzt+*Vmxc9^?_85h%k4mW^4L8i zB}EO73V?WOJD!$U0f5q`oKQz(Gh?bJ>7t5_;;o7$&SCAlU-de_`nJzdxl-(C_srzm zZ+{rsR4gg*x1ag$JP5a)PzF)b8uD1~rqC#Q^FR}KSInW}Mx}o$!!Capt0H4Pv!SG? zM{Ky1Ld}E%7cX4+CRQOJwJd;3Q5B=*I(k16L*?P)I|k}CNA0=v^g?GpJeR)7;rXv=*dAlK%e+fE?!-(5wB!6~7AvqTatsWpoF41)6={2eg0loM zyY4Ycc+j?~56RaIX~T1!>|ALQxezf2i|}{Zb7D@gpLX9iHZB%)fDc9WkAe?7RCRRk zaUMCX7%Ey*-mYs$0dLT+i6cK4BtRCab#+=tAhp@3-b#GmXsUaeS}YLc;NU;1XtI^oL}}9#$U8Z;^VRj7EU;2c zgL&pSnAvMbO%yXFDD@RV;v!{zE}aTa`T`b_`NI8sEG8-VzY#xU31yCnO+_{D#*I%X zy@ZE6t-Z1-ALX1DC`ZKP+L9SeYfp;#wdIT$m&SUjK~Dm@=K#=l7|^Nk(#1VyF5Ik) zswe~2y7h6_@UV?gARpVJpyH5qWjaD@_iPARS6acfS#xd)U+RtAExHgEz%wBpX^_X1 z6i7|QC6N`hnxrK#)6x!t=ntQF%Z!dru+-6-g=8V}=X2cS0K z$mw_FXU$b*@iOfCgvUq8ZDK)z4k{K09`3!<$ez5zPC8iekBZX0*svNUIq7+=7h3W< zZUOkF_ORRx%wU_ax${eyS7K4Y_4fFB2t|0FfL(6m0BOvabWID(gu&sj#zH#=DlGR< z)ubcPAPI>;lzYcw94GVK1jD!eW041Hv4}{NYGvC2gZl=6?^Ld1-Kxirca7!7$IBBu zYt9+rvCn{A0^vbs*-N&2*xlV-qcyaV-Ry0w0?efgIbQqHt*s^QqPO9z*RNj>@p&Dk zg-AJCGizXn0UjtMEKH_{a>j<{Wn?ng3R5suy8v77o`aJ~$pdI5CksJpUPm2@(1mb9 zDuxJGPP+BgB?+^$%nsL6uST}-9J5yx>b8g>4aOCXEw}LxOr+MjL%6L2_9iT0(LxWX zrC>7sM}t0OUR1WJ_U*b6!mLBqJosI%xoz#YpT>1&rYdx=QZwi^?98_t3vUTR19R#f zfSvav`5(-0#IW=*Uov2TDR4AVV52cK6#6<}_=g3~thRnzQ9-LFLB*gwaVOh`b|r-P z#?UzdEj->7S#eyi7_IU^zm!qsF@)~z+F}>bV`4EA(_@rlgi70WAFT`(s~ya5`^Wjo z%mEWiT}34d(T}9)=x64P#==)9wjF;Q-)$;A)HDxN6h|OMYB-P8I>U;BN9^^MF`HvU zY6x&U1&2Af4}x^2)jUZG=yl=1V6>(>9$+fX#Kfcl3K5Y{zpP$4Uj|jFJe)Wvz*E=O z?i(?McaMsX6k^dxL47M#%9&J!Ccy^P+d#jikt~)xXZN@E+D_2LLLp#+M?Ss^mU4Xz zLpXJ`xW5{;Qml%GFClv4!PQ5O967G1myQbhekqj3xOJZ!oq+JY#u-(*Vs2socPB-C zu~w>1PiVew*Eo_f{BEWav#U(r4FqkE|7gjRe);``ib{w5ssp`Q!PQmS=fdu#JJ>^C z*88vseC+K#Q+w!Q2k@t{aFi$ouZ$YRCGEtVhC*uqGzLhW9ANMB9MfsAW{g>YJD{#(t&sGB>pKSN={MO5(VVTfQ}&qmar8mV+OSz zHJsdJn!)6daKV}vF){4ctomh)jCEjMcB!BNJOrr~U)OQ=g*p5L6v?K2x9T3vGOZTx z8b$SEzZBx65KAvLUcl}$-JuRlmHr_@^rxAbXL%Y`8B*cjMd;+RW-p;Jq(bR$wS zGMrq7L3fd+U4Z$x;^oByDFZ;e-UyaJi2N_TE1&qVS(do1um*^clrOZ3%r1ydIA6g% z!Z$Q7(T|=wLNnP6SL3#0IbqD=ZkgRZpy-7evRPr|^JkUw=g;SKtAf8n z4X|GrX_o7kddWFE=YhvS{n#-Bq3e4*?qcRqW##{oDD(7d*RQL>G^KKue-}ezkC21( zK1)%=rmCQD4dR~Kt!iSVWal3IVi%mPV91A>5w~49YD;)fo7i15DeFky12Hv{|ol%$c zxGD5U_Ydhqncc-=6G+1WvWLakUKu2CP%ZxG!?XKmZ}@~ECjX*3itLa{zJvS(>ZUlr z&a_P_^cXhh;>C-xuyF2#pmE6hK_rGAlf))bwo!CF(aFi>!Oda!5Oapm%R{UA$3m%E zzysF?^$f7Xsd|Bl>^?@;CFuHyANyxkBYZU6m zqD;_Q=p61sVpg#GIbXpvPa4Xz^VPxTLTZT|zoTY!jN3G`&xdUQ3Ie8};#(Pu6y042 zaE^?PJ#zlFa}93!`Z18IF=)YBaKYd#kAo^ev7RRGfb9~ zB|s3aysD}mvx!AbfE+m3+Y|Q*VHu@7Nf11s0x(#};%;jPJ@bAX5=vr{+qNBq^aBof z3{Q=45Wv=JR;`KwE`P^8kX|2yigol}_WOj1p0Ti~g^qLpH6#cH_7P@jtUHlBSPBaM zaCLwQ7BsC2wSEnHoxBcKPj?Fo3pGQ-D12t{9KTHq%-Iy|91ASWbw9s)6sTpJ)oiYe zkkKdRp7ZM2+ZlMu>(M6>t2gOtBVQl*17QvO!;d8s0JrnS^XJ>SxJu1;K6{}`=dZ4> zZzHsspY3RnQ$Lwx;7lP*k50c@iBh+B=JG34`i9P#iVm)ME&^DTCjw7OYJqB8IF*f|n`^(P~gFL^M^t z+=AIrHcHpC8zk zwV)*ZW4YDh&5#JuFe1csJ9v5hmc-LB#Aat7$1Z&k%xr9GiZaL}u%d2pLiWr-9fBHr zRnU}yp9sE}kzHNP5g4RQ>m?Hbl{Pjp>Fc~HqXEUlNfdC>t0NaK6d=gD4YlGSF${dc zph4(|Jw&9hY=eho*C=+k!ds+KvSDd&<>E5$Di72yx{wFg$I6fOx0#}g0U2>tW>%KN zr}uj~#O)7Z_li4@#FDZpgi6+|i35cNxPGd%$(qB8ZsriD8%u@~#dFqIx>TB+Cjy8F z9)uVBln4^oZnmQ`30zwZkIvK%FmcS@?|bbh;alXWz;tDUyn3)XM;YN(4U7PW=biia z6A^jVs*HyGdLd}2`2YuJ%A8lot=tI;N`m?J?d#W`;D6fZxXq90}TwErZlzwp-gW z7^I%DvC+f{08zy_5IV0z%UVtaL~S$#l2H89k8#5S4j5QEJN=$J8r}%sf@?r+|1skP zb-*npMPwGrOkGDObo}Obu-646ZF}qr9o@7e2(2IoJYWbS!DGjP`y|4L^#Q4759n*^ z6-8QO5%0*C8_S zoV!7ocwn5q7&`X5gwMK45B)_uKboScJ(wEw0`vR1uRkXE(q4@7$7)L#|&2R8X4ASn@`wK_}*0CG z(NdvCwvWtiZ6dGCCFC#wTPwzXbiRG3uZTHl)4wlUG`kz*Xd`Tga6xv@D&_EO)5RbUL)*O1zLFD7ckRd>JRgq*nVcM8f2FDRP^%@l8XM?~DfxLGd z-JSqn_ki%=80aJjdmik~?eHqeV0@$U9eQM=> z_hPe-T)2F8ka#y>1ieQcn0g=C(Uj0<&=pR-25P*h?@r?wz3$`lNa83R^C}SVjy+wl z!ECs#@UXIS1I}FpiIXm0o|mSZuYsNeAt-P>?R0a3f)g1xlULYg1VR}TjFrI4&@zepRCUjgp-~xXMY5TG&rZu*ZtxInBTiNP$ozern+yz* z&<8^LdbFR227Uc8ock2;500a)fu2a)`4}8(157LE(n&pg1KM+?020s#z8iJqdb_K_ zQY40Q*={R~6-~v%H}JDVWtT{c?WLlL z!r@;1ALIH5b$I`AfSO|3$%b>A0^4o&5d^-qbF9M%Wf55&VkSsDS9zW8BG~tS(nfH7 zR#d74n_nkC>&-k}FkaXLtAYL=9<^i+LFr3$C5iIJlU@uT&&r^ zSl>%K>%+OF!;Zy#nxnJY{fj_O)hee3w&aQC?7^pNVN#W?cRiY*6!sQ`@@deMt;q3# z+4D9Sn~M`SNKJY97&1?yd3`cYg`OMw-=pE)A#a?%BBFL{gIIHitr;4cx%4F^fK9~I z>FV12(cAf>r9+}M9x-Ru`)GvOeFK4B9OA1ai3d8Y0zLO{T`O+Cp4EEfnLh;~gJsoT z^iwIUEBZ8_M4G?{UjVMn1dv3KF~!7lD>MX00;w{QJA_Vp-f0X?>EcS}aZ@&e)D|Z1 zi|jX}lBr%q!&;>0$tz2Li$zRg9HfM2FoTomLq(j>X|Ng-H?`GpHm}3iC+Z_TLobaC zC&~9_Lz9vSJn7E>f%e)_^jbqrEe7SMpnBRHB4Xp{Z0ZlXoyzjI%UYMtT}eBdADT0@Se+7IrgB zbnNZhH(P>4wro-wYc~s8VDt)R$T*g09~xa`B56Ga-f~~c_g{(?GtGDRzK9y(U5|$Q z(?`->MQBYx(pZk(jwfKo0~WDK;jn^24H&G4&lQ4HT_5?1z*xhii;q+M>;xNbHeE65 zPAx7o+HR5Ep$+12w695TN4}6`2+%XYZTf4Oj0WPftx>Z}%*QI(S<{?C@|V}w?5JyL zNd+}_FA?HI^YvR5P}8Xmo>0zSw6}NzeNRa<(&KZOcy{N7W?bQVRt4&*C+ zXa-}`<@1YmVq%Q6I?v-Tfwyi&!ZL^Dvt3BYL0wqpY+wpH zp2FbbQpj9Nt2KqC=(x6$nii$UPeY1No{faG;x*5o)~8cANLpI_+BllKOG z?~D-XnM4N#r!Z+ZZNiEr6b{AD+f$E|4aZ9TC}_4dfe}+xl#lOEBTSfpBxWIhL&%Js;F*XBt-ImnXrWKdD0*a^)*C-qR_RQ`2zP$uv~T zs+P)J`5FAVtu904TC6uyrrSWB&U<6Ai#WqHM}~6+=uT&>ACA%N^q@CEvg6`oCy4rb zs>ECU4w}{yU4Lb$CW*E`k^Jdty z=nK`MwW@ir+P#HZD``8Pvsc+;_t^Ni@i9t@^M|2{TC+?zXKtXfo<#ehWVDvpFN1zi z15Cf~r1#g)!OG~ zBjPmhCDf2v9@XueUcs?+YSN^Yf#9qZ_C)BH5VV#jT&7lX{-78;bK2OL1y~oUQqtun zVQ_*IR|J<|*0|`_tuJ~%%bx1Lu(N`>^+Z{i(U4Mw?#+WVw`E^)alglwji=D6g4N5A z8FZ5M->4x)rHu{3y1v`+Mez)s7mW@(O&HUw6z!VR{lfAe22Ft$jN=mxoY<$_)`Pf# zw@fOy5Uq#2;C_?NBg?)O5zcZ1ib_aNAIXnXti0(}3r1VoGmVerj8BOV169{+KjbJ) zBlc1P+Pw3(r4X0%b#2!E5R}R6I!FQ0ufSQ#3k53Z6}Oq{7oHx}`uMl8Ko~3Hd_^C6rc&6?H zAywTk-8v15l*p)}m~rKqH|-qup;Mc0tH8;70KDMwS8OH%1o z&HQZkW2IqsDLGb@>lP5VLcLu3@%5w6+-OV8-3o0sJ{+I06K4BnA0B~ams-2i#{_Ki zkN6R81ktY9%P%Urx>iTS#HoZ(-rI76V~>mU{iXL&FsUp2hV78jz0i1LFJ-p0h`jc$m(*@cKgx`qg&A6A+vjpT%_1F}~NR$~ymesaumtU;7{WO{C zXev=ydHW)Jd(F`8gX{T`c|VPCPvb8%7~K}Cjbz;msKPA@F6cHvDH7yDfmaWX)k01H zDHKT*IeeEDMx3#>Nl0mlW5Oc*@ zFshiLd3n=ABX1lO$b)f~@VU4t>vyuh6yD(R{jAiF@1syxZ_(+aOJe}xL;qMXl~$*X zFJL{X>E`p}&;(^-U1yQ^shJQ;_-Kig4evJPFAh3hllgHOMndyAQ~F=_CBQm*jhiDU6^(BS+N(uyFfw_M$^k%y^6b zk4epbXH5pxECDScik!+8i$0q)d(ENxpW88ad_rLT%lj>@2R-^Zy#4dD@6ZQrxpX|G zwZU;Rc*~YJ>$9R(Z3QR13>nW93eDa(Mi;mwgfU3g0R*W7S537**~bmvi`b25yQBzj z)BdC>(AWN$S;{V{YkqzjNa~WOfGNWvc5Xj(D>2H5`G?;Wf~K9Mj>f~&PUbi^`#DFI z`#j}9WU~e)0I^_m>YYrRFRcm5pA_%DlwJLly`gxzxtJTxkJyAQk0JSWa^1WsR+{W% zZUvYD4fM+-BR_up=Uc6=JSbh`5bLPJxD znOZhJDL!1mpb87&7AHb?NBp79-*%$Q+03#rw@be*mGQ{b$b@F%V^@kX!TyqOa& zFzizEtxBl-N(9U->*hUd!MR58p__2_tz5NA*E(f~U9m~PowoYCmUojW3A0=3z`=v$ z;z*}t@}^Q;`STObGMx?~rWRbC1Y%ArIaQuL=uvt>taC8A*v?`nG6+<3!G2`h@oZCb z8M2hvIC1cDPQU!Zzw-OcM6sr$NmW{k;VO#j6N8DNt&FWRdA3twLQ}>W@|Y zh;q^Q&{YZ_=+9+ra5|#jzV%YxkK6v$SeL@y{?YznXAd!)Xa^8DKqUnUTLL#bE6R9h zu7!iX8t^zYT`LEX@W~^NDN@C)&$H(nXhc$;jvvFBA-3gTUJU`SM(ma*{p? z&3aDY1gRxb3L{m{Y=c!g^;P<-2762=GlCli@|BVz;cU;T-w{KsV$#(0yPg zop#!WVI|Rh?HAl0Twg9vnrgYBU85SxoUuhkPERQytPQR=(wryz(Idu2_kp#mSJzpL zh89)jlL!R?#V+&sDu;jtQl#b(slp+i}mh}Cp2l+e{HfRx1XEr zEjF1pV)R9DbP(ZJLaZQLf_+wk5#?{dR1f zn(<@zhkGf18HQNxdf^<)#t&m{XtB%e?~|IEYCVM>Q4ZQUKtzB>TNs8x+E*arebKh( z-ovrgM!<0ZYpkNBWp-!}4Ay!YKYy74FVv{g=W!8X0WWYV_vgX%&8a_2yPvDd~GgtvUx%6d`2(7W#49yrr)6PQ4)wK?pwT%yd6H8=Agfu7n5pf<7mJD_!yiUaJ2`v5Zm+b)*whJS4Y=I(ARx}>eVkfL-k?WXPo*UOrBgvvzGcQ+y8_&K`A|_Iya{&bEYmgKmTT1sZfi9 z!%)2{(`i3O`LxFp&Ak?WV-sKfOpqEc1+};jv5V0t`F8=yY|pjaXw2;O5RpwIWClvX zckLS*8rs2Vek_k7`{6M1);VM$(r%n0>$y&&V#z}im}$(7>i<%~wKN@(C^iHevOXM9 zRLtf*@4z8P8>Fym(r)NT4Q7nGSANDBo!5M&c&5~3sG7<@Y{B6~99pMo9hatR1E1Fy zstQE6CslW=4Eg-I?iA@9B;Tx?(Iz;+PNk|?D5jH|~;XbBx3s=GJtD9IS(nr82Ds$W?* zG#>!|;|uB|Xf9JeQ$Swjl(x3IF~+t%%<1HN)7j|U?neE4;m?}-jnTgP$s^iZipT%C z@OIr5{LQyCJ1#}!@*aq zvRglpE`1}yrIRmqyGOz5YtTmX2*f6hE5oIlhaUW6nhtrO)#4aBpaG+71`SCfo zvD%0kb(|$7Yc|sPm=pAv(M_p%(4LU!APGew)6!vRgD4rY`As=C5$I5TV!HjubOiY_ znsD|YNnNu3^`T6(8G%vZWPy(YnL<(=0GBf>An7(v?txVMBsyJZBt*Dtqe3F#?_@Tf z)YF&Xz)5t9^!6MNi1@xAAQKn3UJii4BNFceO_jUV80vvsXi;Bk6Y#Nz4 z=p;z;6viSI9#1j}JELjW+litHDaByHS3_@pU)MJZNV%i)P%;Vp;yMlR3ld4gR|@QF zjLX#NJe{W!0{-Y0HumAh?!G`xJ@llA!8mxOAPyktdmte>dqw#W(-!NE#^yjfWAe#m z(KW^bIOnF^voV06M?yrS7OzG^3?;L~euM=Bj92(wUfpDzT2?K&Du5K@g7?srIvdML z+$wSVo?C&nuv!RjaefKgT1YI+vRcGtGcXT_{n6hr6)hbtkZ}?|xWFJ6hoHskNvBLQY7kgDdN2Izx=+lgKNwWQh|fYg@{XhZB|-jy z!{`kx>1_0)Cdp5r?OO~Ome6g%v)mwjr-LX)M((a2jd7y^gd+j}NmwS5eM6qLLJ0tT zyeaP`^$G=rg@ed3G3X)#4ax~L3XVr;o78 zQkbhcAG#;TXu+2`Vu|KUSQ4P}Idwgz$4QRbIg17pTfs9Lf zdKlD5T!KqLC z;A3`x4Hp0fSkP~g?GQA4b~%c1KAj8s>!k(Dc(!bj1Fb1$hBR*>Nj;JYM&2IL!FpiO zw*d;6Uy^+Qz!9?kI}$b^b&gY-glv`?k6gRcXr(5UEUM2*#o<~7T6K;xLqGV65t;;kJ8dObXG`*LDtN{OUIak z`W3kJ{V)?zU{>Y)w&FHg@rJ>tP1-aIR5Uoh)QvtV9e(asid z7$^CMy2LoNUg<3Ltp!Qq>J1x)AHhIv;@IQK9}9mB*s^+mIAbWQBZVM%lEX)j))9~c zBna*T`C^vD>ECC;XD*=jBwWpBXG&Js#DFp6QK^61`YH~>gwu63TNC$T(&ha_zWtbQl`6TItIxY$6 z;Zy)xvIg$;8g#({7=Q<23IpsR9`d)B&sJiCU@wdzyWS7ui##k^ohQL}Q1FM%@dyaW zgi=*Bj}g2(m+u3>>fACi?MW(i1Q`ZE8Jt;CB8xoOU!ciHAnOP4$qWZ!-S=5Lk8i}s zhe0(R0qA}*p(xNLaH7t#oBco{5iA|*-GKNLa{XdS%rOcdKYn7pO{a<8x;!|Uci^5p z6{t;bKm~|B0BNLd1~@_jmIL$zng<|ZrMwGZ zB_@e(AYuWqX?U#Rl$+T)X&Hoynck9OFI&FYd!ER{_)#f(HY!8 zR4k>w@p};D48-69%t(6b7zr#<>L zLYuafcj2z$4t;mDwY8DwQxWIll81N_3}k`xXezjm8a->0P&|bYBcNj!NkJ@(7}ysC zJBk3If9%=L(lZ1$>Fb+4lIQFs@8RJQa`5-bq8m#G>IYhYWUBzUwAw|63eV;EmUYXQ zN22t`4BrQ=D;*&57%)Q;d^DK;a8e21ocH7qszc(T$bszY1sq#LF+9iy8|?H<$|1aR zbOdbLB%yR7g8#P1ifgE{$s#zrHR%1T6pi6AqC}UM)LImP+dZ{=3ruRI;_CbSCEY4? znvbDE*Q{Nutr#u-Ll655h%NXj>_Q8Np`{tgiSLTO_2co<<76oL!QX~EP`C?*-GzMo`wLY zj)OoYjWsVaawDk_nG`cBWh7_~z-{heE1>pZquZC_r4S_eMzweVlHCVJjbKh7%J2h_ zok)7^jQ&LeY~?{W(IRU#db$Bo%64$} zrMmD(E|$x;UU$`*XV+QhP__ zspi?M+E_k~9#Dz(_FgbP<+hZ8ULp!K&KcG@Df#&l5<%ZaMov{P`NLpK>|kwz^1S^W z-Y?FEE?)e7r0d4e@UU8xF<0VI|HE9=ucaP>tW$5rG^qtRdt=IRMHZF;h_LxaE&vtnx@p~kR&Rqr< zdtBXk`H0)})Wa25YX=>z649ifwzV}(K1QXlU|&?^#)ZQB4rO+_6k3bSJ#5P} z`c0>#(S~` z)m{vMy_xedn?2Nut+LbA1PQ9w5v)rR)x6Pdl#)cdyzqniGrpF@u6XMZgjroMg7cC} zVfs7Qu9>%&hrPUR^z?hy;?CbyaHWe8nJK=H2LM7FWPEuac+_q8jXFNwSG@&GzE0x$!h-bK#JrC!uae?ms?Bu-q&= zS>ot_QF3Z7^;}*{J;e>+%W;SHiLR+4p1|wL)MT9oshY6Py3)>vxE!vv`T(o1{3I;- zr{dOa0n-_+FJ4?pt9?cH`t(wfvXg0dC95TB!u}ylqE{g8Ld@G(f(4ivh5c+SEp8;t$aAu!Q&fZ5OL)v?PtbP8lCX&0shNz@juOycb?U;e`NFlnY(Z=1{?{$ju+xxCQ9h|+4I^*6!#Ef{ok?E801*F@8-An1(2G~sE- ztj44G&ycz4?CJx-N4YRBkONE#e%bl?ou0?K>e0sx!CNOPH%B&h;?x>bofQJl2~WDD z2}oVz^6Q_^Theboy77grs3gyWQ+Yb(qU`IZ^SDBvJLrZ*L?m!22TXAl?DuCcQ%O?y z=VUvy^_5bU$=3F)>ZofcSA9HtHRx&uZtHle>8SSMcDcyd;T`p-WvT}W}ma7*Hv4?Bw!A---!3qJ9C_@t&mem?*8eO7(It_vS6fF0b<{-PH z+gEQgoE4S#%Va%Q&ph7oX*=6}L#~;Mk9z0c^5^}i{}dN1x8v!dkO04Y&TVI%`1dNF zcy+De<9_Qs%eUt3xqT=6ds;*Pm)viRtBOvgo6gOvm^dB1@`=pTy7zpH*?Jih^-gLr z0ohKPOO=Ihak5!uDsGk^Y0<@z6fb5Pp?mT8E4y~>=4I4j%gE?OE=_B1&4!u&9M{)x zM{j2KDho(izk0!_*gjhHKIY>emm04uzbSS1(T?Zb{b=xD$h_VmBmUmtEz9bx+e@<# z^NN4FYn1;-ZpDNEEqJ};s?`ny&q`(=lkVL$I__Wp_#Z!bI(5sKCd~Y@0{+Jb=;+R~ z&5iy4{Cf6RZ7l!(=O8Ew+_97p@~SZ3erVd=#ijssiH{eMUWP{bVBdaq&Epgihw`>FM$wLK#+j+ z8YxmPVCcQ&<<4*3AMoCrH@n}SnVp@TJ?HH1_w6Pc89*3lIcWg^0K*equnEy-646La zNo?6mKK%tq> zksx{m?a%a_Iggl$kN1TtI>qH5zC=8)eI|AsEg`1lT0S@sF9zI+(=`@o@}x!{>uA!< zFt`dTJRyrqzeTF}5lY=s<&>*I9bO!+xPY6*&Bo(VsFsuSCxV@FZ+29Nt~M5YH@wrL z6R4x4wUQ1z;L^&s_-QQu#l7Knl6@{^at1tv?N+C)pq6C9f?(3iN-Qf@c*`$A=V|2^0L%vQcHD; z*e50@*Ji~+>`@9rEs0;3zgHJcqQX@I{%Ew|eu=aI9R>w~K&>*PA=u&A)D*iZx~U16 znwkoL7puHkpP15e(5ImRSW3Pa^N^R9S3)}a$*jk`qo2grcuI`t-Q%ENnRPCW{kp7S zWyL)=Ki}e6$9>0C#zeLQg<_fVz;&>NcdM_3_t@TowtM!*G2GPvyTD)&4-W}t6%}JE zt6~XXkAb`sUB-AaV)b1gdNMOLH&+lqI5`P8yAJ;dZD-U#x`kdJPakty08(D_*YK&_ zqNaBv;81VK5@=2Q(+t(Gk&o`uQEbiuhDuaJ%r9#iMqZUtuE)yYGlo*Y^rc}Z`8s;E zEWk19z2GhY{Dn;z+p-sjh99fK6o;>ti74o1H!!Nlc4%?Go5Xgq)(oI1A|@g6uS-Ee zN>dG1b@T4?a#b;_UW!H*7M$nx257dmwKbWDegY-DxmlK+lw@LhnhXHqVIqyhd~#^e z>dVQ}eP%Wb%OpqHPXCsx0%fMFf_0JIq)XQqj4d%DrEa3G{2=Ib(WzJTUnAb@j1bbbVMs4p}P zy~i5$V~x`rw?*!J$V$vPalbmL?luHg(96(4;uCx{6}kG7rOf=+C1h>`e8y96;)Mn#H;~-#dTU%SjG zAt51D%|<_Ly<_FHuCX!g>Ld_E(@m0Y$C2X!ovhh94(fX@%b<6Y9Uc;?QxlfN>V34c#psy7M;fR{tkL?p(?#-c<^0!c^I37}fp zB1@A=H^v4wo-}8UoWW`d(ZDWiKn;amtnxAzi=~eL3V`qIc)HKGNtnF4zBmTJXIq?| zEq95>7XYxbvdZwUy=iruW*q3FzH?qLld?58)YC+(#_(0w+*$HN)JypSVkn4VOt{Cn zx6*g-hh^@ZVQSSxu-OzBvJM}q!B^#G>R*kIvoj)Q=bMiFQ`5D7WBk*zO_T+!`%%%6NDC#1uS#u>{-mpii_3(0wM5c;cvNvsxm&Uq~(7`%gsM~+0FSFd|-*QvmJbQU+Gh=bb138 z?C&qXjxEe>*7x?7dEQ`oUm!_4hP6LO0=ndO!GWpztI)^A*pAN%%H=#<)YBPs zm^u8**u*3%`L>k(%C|(NwxM4Mkfd@1f|TyIB-q$^rOaEoIPho`@)*pXkp5t%*(td) zow$=6D{{y;=N^3aS|)vkEnxG#3s?%u2o4T5=`(U*+t+0u%99~uQaj`8OTByh<%XYf zllN~OpfNL8_sL9Wknhkg8jb$GF{&jn)+)@;N?Z2vBYjv{7+^+^NCv~Q0nFb7g)5Or zR`C}NV4^QY2F_yuOWW1&6}ID5fBmz&3$d}`ovMfC!hGHT^1cu#f7jSeiN4Cr)ysuP zk}Msp{c~~?4qBK`rup6Pu>S78x!=V@uYCdAl9u2>R@()|r5q@H%*6J<(Kdzhce$vJ z0O@cs*>DNPa48i%88v036nZHlTJ!w}D(d)`(hByae(sb;6nwwW&-9*}8&y_f>f1@3 zoG>YOG=h`}B}y!x@sE~s# z6H=#SyaniAjmvOg}FfZy0%zVvi{8k~j)Mnx~== zEHJSs_sT1`oJ3%(FsiIQSM@^&VCYAU=|UJOW}@anH3c1f%XR7IGV*eVED3)nbq1pA zJPg=H({-NmNcF$F=W~sR>AZ{V*&t<)!|I)t839r zGbn5^UFdE|XDHz^2!-(xuSip;Ji(LQTsgmQ$wHM1>%r$NtaBtO`qD=7l_;>;;+RDO zBeHeh=ja~q2rP`wyo=Mkg_7e7d8MH6rIvC4{n>b_xkhRDU_;=f*bQI_SyJ~o@`ccrn@8gYFO*r|@(5q-rzLu#^K-F|B7SxaYoNHa@0IZVMvWbb!> zqKH1<1s0Y$Z~u2&Yxb@QuVT8yI5UHc@O!L85+4Aqni!g(^nIC~JeB0<0bPqRJFf9x4{aq11{tTJb0@Qx+0fhsdvKAQ zbzmfn&a$iE)BRD}#$1=Nig%G_kBq3kEpX=_w)gQ$v$f}SX+R*5D9GKn>0?1n8OY)x zy-KliQ1*FXMbc(--)zet#|J!#!i)sNQp%kUz4;%9+P!N&cGC@3062cW9lBmc1y>C@ z0RRRE2L-m*M@pFhGhHF43GRGo3{fTc{Ay!^q0dDC?`vztnuphXUc*EseAfY4B279g zPtvDG!uzzlxL9CGgN*eZ$!B<7ANjsU!{?Iu4A1e7CX(ZA{@G7j)#`@wG>_udg+3Y_ z>6(5xa4QU|>geFCudm;`ymoPQeLAxffFi++IRt@tJOa{tQwf%>9x4}?k%Vieyhjq= z&?w}|&YIn?N~2O37J&cu3fYyi3o3PC={ySHL%sz%%9aP_*y00O2nzt8a76v zTSZWi=p?B1>-MLKx<5s(j0uM;I88TL=IMYpVT!dGMR(ZVp@@npT&;A(2U))5NnD3( zv{E2LWe`ekyloQa%qCO^=TgvdTF)qU9e0nfg{H0!wNnfkQmo8lIp^CC#~G7f#D84t zbfOzoK+9B2Q^zGMbFBB$`ZxBb*l}dku_@^2?+X|;JtvZ$NtwlL`p(ml3cLp2EufE^ zo7*a3`S9Ex?C2?#&p;G00{X&QzE&?cRvsgup35)%B|e2;L|if zg;k{y$JsSl0rzd!_XA&RdV{ra@IU;BF%yAt>c<>{$hPK$@C(!Mshp@Ihkm!|v%=Pa zti()E{%xH*(b3>;f@*}(`C+N^Q6%J*0)K63 za%T?rvHL34W$qzbo{yI#MUs;0ynNum2a!aJK361<3x^&p5=1Pz3U4$Jm}|(D}IPDS+6|;zSeMn;{q)LA;Sl7sPx+}j4;e=Xvlr?fSb&kR#e}+v!*4KK zczjaw?H2Fk+bq}nX$SHR#niE9MGq`ki;v1%&E`c5=;q)qa);@Oo7gOt|`RQq`<*Y$N@>eZnR{W3rE9v4UbjAl=psWgIL@=JPbs! zT-iioXUXINeJ6w;vn4xYIjx&P5kl!{n;C}1D|KralJJ61Jf~rzCGj3l8TNNKy z6HOUK>LSp9Z${l_&`sU;wR;->b zj(n+YSZBTEkf8xr?I`$u6U`LZH@u9u_XwnAJJwydD9!I*8}>nWOe!>Ocj} zA8lf~P7h+(#agwTDm`AId4XhPf6NSulZMYCt`s+*H1R=SE^5Wt-=42D8;gj9&F{!=${9 zUH#^>#X}DoZ8pFvxl+D5LfQPA2Wu|DQoe0Fg`V~qg|V>Vx6j^N1uoOx=N_cv(0S+# zHDoHa^+$AHWg6bB{aEO->>7+Rj?scEgL-?Lv^Qv2%maV-9|q@&Kd+FyP1oL8q`F$) zesE>7{>-{OVN_g*|AVdpRFh6X=s)NMoUG1Mm+hUa>p~~Q=6>;hCjKh{o;)@HH)z>L F{TBo!_+ + +STIXGenCoT + + +cluster_forward + +forward method + + + +STIXGenCoT + +LLM + + + +Question + +question + + + +Retriever + +self.retriever + + + +Question->Retriever + + + + + +Predictor + +self.predictor + + + +Question->Predictor + + + + + +Context + +context + + + +Retriever->Context + + + + + +Context->Predictor + + + + + +Results + +prompt + + + +Predictor->Results + + + + + +Results->STIXGenCoT + + +to + + + \ No newline at end of file diff --git a/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/05_evidence_stix_dot_generator.ipynb b/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/05_evidence_stix_dot_generator.ipynb new file mode 100644 index 0000000..038ef63 --- /dev/null +++ b/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/05_evidence_stix_dot_generator.ipynb @@ -0,0 +1,493 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## A tutorial to visualize one-shot learning results\n", + "\n", + "### Goal\n", + "- Compare one-shot learning with zero-shot learning\n", + "- To visualize the different\n", + "\n", + "### Approach\n", + "- Directly generate a DOT file from one-shot learning example completed in previous tutorial" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 1: Download libraries and files for the lab\n", + "- Make use you download necessary library and files. \n", + "- All downloaded and saved files can be located in the `content` folder if using google Colab" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "# uncomment the commands to download libraries and files\n", + "#!pip install python-dotenv\n", + "#!pip install dspy-ai\n", + "#!pip install graphviz\n", + "\n", + "import dspy\n", + "import os\n", + "import openai\n", + "import json\n", + "from dotenv import load_dotenv\n", + "from graphviz import Source\n", + "from IPython.display import display" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "def set_dspy():\n", + " # ==============set openAI enviroment=========\n", + " # Path to your API key file\n", + " key_file_path = \"openai_api_key.txt\"\n", + "\n", + " # Load the API key from the file\n", + " with open(key_file_path, \"r\") as file:\n", + " openai_api_key = file.read().strip()\n", + "\n", + " # Set the API key as an environment variable\n", + " os.environ[\"OPENAI_API_KEY\"] = openai_api_key\n", + " openai.api_key = os.environ[\"OPENAI_API_KEY\"]\n", + " turbo = dspy.OpenAI(model=\"gpt-3.5-turbo\", max_tokens=2000, temperature=0)\n", + " dspy.settings.configure(lm=turbo)\n", + " return turbo\n", + " # ==============end of set openAI enviroment=========\n", + "\n", + "\n", + "def set_dspy_hardcode_openai_key():\n", + " os.environ[\"OPENAI_API_KEY\"] = (\n", + " \"sk-proj-yourapikeyhere\"\n", + " )\n", + " openai.api_key = os.environ[\"OPENAI_API_KEY\"]\n", + " turbo = dspy.OpenAI(model=\"gpt-3.5-turbo\", temperature=0, max_tokens=2000)\n", + " dspy.settings.configure(lm=turbo)\n", + " return turbo\n", + "\n", + "turbo=set_dspy()\n", + "# comment out set_dspy() and use set_dspy_hardcode_openai_key is your option\n", + "# turbo=set_dspy_hardcode_openai_key()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "def load_text_file(file_path):\n", + " \"\"\"\n", + " Load a text file and return its contents as a string.\n", + "\n", + " Parameters:\n", + " file_path (str): The path to the text file.\n", + "\n", + " Returns:\n", + " str: The contents of the text file.\n", + " \"\"\"\n", + " try:\n", + " with open(file_path, \"r\") as file:\n", + " contents = file.read()\n", + " return contents\n", + " except FileNotFoundError:\n", + " return \"File not found.\"\n", + " except Exception as e:\n", + " return f\"An error occurred: {e}\"\n" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[\n", + " {\n", + " \"type\": \"identity\",\n", + " \"id\": \"identity--1cba2e3c-4bdb-4d0b-a87b-2d504ad5923f\",\n", + " \"name\": \"OurCompany\",\n", + " \"identity_class\": \"organization\",\n", + " \"sectors\": [\n", + " \"technology\"\n", + " ],\n", + " \"contact_information\": \"info@ourcompany.com\"\n", + " },\n", + " {\n", + " \"type\": \"email-addr\",\n", + " \"id\": \"email-addr--0c0d2094-df97-45a7-9e9c-223569a9e798\",\n", + " \"value\": \"hr-dept@ourcompany-security.com\"\n", + " },\n", + " {\n", + " \"type\": \"email-message\",\n", + " \"id\": \"email-message--c79b6bde-4f4c-4b38-a8c8-fb82921d6b97\",\n", + " \"is_multipart\": false,\n", + " \"subject\": \"Urgent Benefits Package Update\",\n", + " \"from_ref\": \"email-addr--0c0d2094-df97-45a7-9e9c-223569a9e798\",\n", + " \"body\": \"Please click the link to review the changes to your benefits package.\"\n", + " },\n", + " {\n", + " \"type\": \"url\",\n", + " \"id\": \"url--4c3b-4c4b-bb6c-ded6b2a4a567\",\n", + " \"value\": \"http://phishing-link.com/login\"\n", + " },\n", + " {\n", + " \"type\": \"user-account\",\n", + " \"id\": \"user-account--bd5631cf-2af6-4bba-bc92-37c60d020400\",\n", + " \"user_id\": \"Taylor\",\n", + " \"account_login\": \"taylor@ourcompany.com\"\n", + " },\n", + " {\n", + " \"type\": \"observable\",\n", + " \"id\": \"observable--001\",\n", + " \"observable_type\": \"email\",\n", + " \"observable_value\": \"hr-dept@ourcompany-security.com\"\n", + " },\n", + " {\n", + " \"type\": \"observable\",\n", + " \"id\": \"observable--002\",\n", + " \"observable_type\": \"url\",\n", + " \"observable_value\": \"http://phishing-link.com/login\"\n", + " },\n", + " {\n", + " \"type\": \"indicator\",\n", + " \"id\": \"indicator--1cba2e3c-4bdb-4d0b-a87b-2d504ad5923f\",\n", + " \"name\": \"Phishing Email Indicator\",\n", + " \"pattern\": \"[email-message:subject = 'Urgent Benefits Package Update']\",\n", + " \"valid_from\": \"2024-07-17T00:00:00Z\"\n", + " },\n", + " {\n", + " \"type\": \"incident\",\n", + " \"id\": \"incident--7a2b252e-c3e5-4bc2-bc6f-cb917ecf7857\",\n", + " \"name\": \"Phishing Attack on OurCompany\",\n", + " \"description\": \"A phishing attack where a suspicious email was sent to an employee of OurCompany.\",\n", + " \"first_seen\": \"2024-07-17T08:00:00Z\",\n", + " \"last_seen\": \"2024-07-17T08:10:00Z\",\n", + " \"status\": \"ongoing\",\n", + " \"affected_assets\": [\n", + " \"user-account--bd5631cf-2af6-4bba-bc92-37c60d020400\"\n", + " ]\n", + " },\n", + " {\n", + " \"type\": \"relationship\",\n", + " \"id\": \"relationship--3f1a8d8b-6a6e-4b5d-8e15-2d6d9a2b3f1d\",\n", + " \"relationship_type\": \"indicates\",\n", + " \"source_ref\": \"indicator--1cba2e3c-4bdb-4d0b-a87b-2d504ad5923f\",\n", + " \"target_ref\": \"incident--7a2b252e-c3e5-4bc2-bc6f-cb917ecf7857\"\n", + " },\n", + " {\n", + " \"type\": \"relationship\",\n", + " \"id\": \"relationship--4b6e65f3-743d-40c2-9194-3b5e38b3efed\",\n", + " \"relationship_type\": \"attributed-to\",\n", + " \"source_ref\": \"incident--7a2b252e-c3e5-4bc2-bc6f-cb917ecf7857\",\n", + " \"target_ref\": \"identity--1cba2e3c-4bdb-4d0b-a87b-2d504ad5923f\"\n", + " },\n", + " {\n", + " \"type\": \"relationship\",\n", + " \"id\": \"relationship--5c9b6eaf-27a6-4b2b-9b17-49e3b00f6051\",\n", + " \"relationship_type\": \"uses\",\n", + " \"source_ref\": \"incident--7a2b252e-c3e5-4bc2-bc6f-cb917ecf7857\",\n", + " \"target_ref\": \"url--4c3b-4c4b-bb6c-ded6b2a4a567\"\n", + " }\n", + "]\n" + ] + } + ], + "source": [ + "conversation = load_text_file(\"04_output_for_viz.json\")\n", + "print(conversation)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "class DotGenerator(dspy.Signature):\n", + " \"\"\"Generate a evidence knowledge graph based on a cyber incident expressed in Structured Threat Information Expression (STIX).\"\"\"\n", + "\n", + " question: str = dspy.InputField(\n", + " desc=\"a cyber incident expressed in Structured Threat Information Expression with JSON format.\"\n", + " )\n", + "\n", + " answer: str = dspy.OutputField(\n", + " desc=\"a graph in a dot format. The nodes of the graph are evidence entities in STIX or Cyber Forensic Domain Objects and Cyber Forensic Observable Objects in DFKG and the edges of the graph are the relationships between evidence entities in STIX. A dot format is primarily associated with Graphviz, a graph visualization software. For example, a dot should looks like: digraph incident_name {...}. Don't include `````` \"\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "# Important: Predict is better than ChainOfThough\n", + "def generate_answer_CoT(signature, text, output_file):\n", + " generate_answer = dspy.Predict(signature)\n", + " answer = generate_answer(question=text).answer # here we use the module\n", + "\n", + " with open(output_file, \"w\") as dot_file:\n", + " print(answer)\n", + " dot_file.write(answer)\n", + " return answer\n", + " print(f\"The evidence has been saved to the file {output_file}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "digraph phishing_attack {\n", + " \"OurCompany\" [label=\"OurCompany\\norganization\\ninfo@ourcompany.com\"]\n", + " \"hr-dept@ourcompany-security.com\" [label=\"hr-dept@ourcompany-security.com\"]\n", + " \"email-message--c79b6bde-4f4c-4b38-a8c8-fb82921d6b97\" [label=\"email-message\\nUrgent Benefits Package Update\\nFrom: hr-dept@ourcompany-security.com\\nPlease click the link to review the changes to your benefits package.\"]\n", + " \"http://phishing-link.com/login\" [label=\"http://phishing-link.com/login\"]\n", + " \"Taylor\" [label=\"Taylor\\ntaylor@ourcompany.com\"]\n", + " \n", + " \"hr-dept@ourcompany-security.com\" -> \"email-message--c79b6bde-4f4c-4b38-a8c8-fb82921d6b97\"\n", + " \"email-message--c79b6bde-4f4c-4b38-a8c8-fb82921d6b97\" -> \"http://phishing-link.com/login\"\n", + " \"Taylor\" -> \"hr-dept@ourcompany-security.com\"\n", + " \n", + " \"Phishing Email Indicator\" [label=\"Phishing Email Indicator\\nPattern: [email-message:subject = 'Urgent Benefits Package Update']\\nValid From: 2024-07-17T00:00:00Z\"]\n", + " \"Phishing Attack on OurCompany\" [label=\"Phishing Attack on OurCompany\\nDescription: A phishing attack where a suspicious email was sent to an employee of OurCompany.\\nFirst Seen: 2024-07-17T08:00:00Z\\nLast Seen: 2024-07-17T08:10:00Z\\nStatus: ongoing\"]\n", + " \n", + " \"Phishing Email Indicator\" -> \"Phishing Attack on OurCompany\"\n", + " \"OurCompany\" -> \"Phishing Attack on OurCompany\"\n", + " \"Phishing Attack on OurCompany\" -> \"Taylor\"\n", + " \"Phishing Attack on OurCompany\" -> \"http://phishing-link.com/login\"\n", + "}\n" + ] + } + ], + "source": [ + "output_file = \"05_output.dot\"\n", + "dot_description = generate_answer_CoT(\n", + " DotGenerator,\n", + " conversation,\n", + " output_file,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Graph saved as: 05_output_stix_oneshot.png\n" + ] + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "phishing_attack\n", + "\n", + "\n", + "\n", + "OurCompany\n", + "\n", + "OurCompany\n", + "organization\n", + "info@ourcompany.com\n", + "\n", + "\n", + "\n", + "Phishing Attack on OurCompany\n", + "\n", + "Phishing Attack on OurCompany\n", + "Description: A phishing attack where a suspicious email was sent to an employee of OurCompany.\n", + "First Seen: 2024-07-17T08:00:00Z\n", + "Last Seen: 2024-07-17T08:10:00Z\n", + "Status: ongoing\n", + "\n", + "\n", + "\n", + "OurCompany->Phishing Attack on OurCompany\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "hr-dept@ourcompany-security.com\n", + "\n", + "hr-dept@ourcompany-security.com\n", + "\n", + "\n", + "\n", + "email-message--c79b6bde-4f4c-4b38-a8c8-fb82921d6b97\n", + "\n", + "email-message\n", + "Urgent Benefits Package Update\n", + "From: hr-dept@ourcompany-security.com\n", + "Please click the link to review the changes to your benefits package.\n", + "\n", + "\n", + "\n", + "hr-dept@ourcompany-security.com->email-message--c79b6bde-4f4c-4b38-a8c8-fb82921d6b97\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "http://phishing-link.com/login\n", + "\n", + "http://phishing-link.com/login\n", + "\n", + "\n", + "\n", + "email-message--c79b6bde-4f4c-4b38-a8c8-fb82921d6b97->http://phishing-link.com/login\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Taylor\n", + "\n", + "Taylor\n", + "taylor@ourcompany.com\n", + "\n", + "\n", + "\n", + "Taylor->hr-dept@ourcompany-security.com\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Phishing Email Indicator\n", + "\n", + "Phishing Email Indicator\n", + "Pattern: [email-message:subject = 'Urgent Benefits Package Update']\n", + "Valid From: 2024-07-17T00:00:00Z\n", + "\n", + "\n", + "\n", + "Phishing Email Indicator->Phishing Attack on OurCompany\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Phishing Attack on OurCompany->http://phishing-link.com/login\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Phishing Attack on OurCompany->Taylor\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Load the .DOT file\n", + "dot_file_path = \"05_output.dot\"\n", + "\n", + "with open(dot_file_path, \"r\") as file:\n", + " dot_content = file.read()\n", + "\n", + "# Create a Graphviz Source object and render it\n", + "dot = Source(dot_content)\n", + "\n", + "# Render the graph and save it as a PNG file\n", + "output_file_path = \"05_output_stix_oneshot\"\n", + "dot.format = \"png\"\n", + "dot.render(output_file_path, cleanup=True)\n", + "\n", + "# Display the saved PNG file path\n", + "print(f\"Graph saved as: {output_file_path}.png\")\n", + "\n", + "# Display the graph in the Jupyter notebook\n", + "dot" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from IPython.display import Image\n", + "\n", + "# Path to the image file\n", + "image_path = \"path/to/your/image.png\"\n", + "\n", + "# Display the image\n", + "Image(filename=image_path)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Summary\n", + "\n", + ", e.g., [Digital Forensic Knowledge Graph (DFKG)](https://github.com/frankwxu/digital-forensics-lab/tree/main/STIX_for_digital_forensics). " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/05_forward_module.svg b/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/05_forward_module.svg new file mode 100644 index 0000000..2aa5ae2 --- /dev/null +++ b/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/05_forward_module.svg @@ -0,0 +1,85 @@ + + +STIXGenCoT + + +cluster_forward + +forward method + + + +STIXGenCoT + +LLM + + + +Question + +question + + + +Retriever + +self.retriever + + + +Question->Retriever + + + + + +Predictor + +self.predictor + + + +Question->Predictor + + + + + +Context + +context + + + +Retriever->Context + + + + + +Context->Predictor + + + + + +Results + +prompt + + + +Predictor->Results + + + + + +Results->STIXGenCoT + + +to + + + \ No newline at end of file diff --git a/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/05_output.dot b/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/05_output.dot index 33c01b4..f15a043 100644 --- a/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/05_output.dot +++ b/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/05_output.dot @@ -1,8 +1,21 @@ -digraph Phishing_Attack { - "OurCompany" -> "incident--7a2b252e-c3e5-4bc2-bc6f-cb917ecf7857" [label="attributed-to"]; - "email-addr--0c0d2094-df97-45a7-9e9c-223569a9e798" -> "email-message--c79b6bde-4f4c-4b38-a8c8-fb82921d6b97" [label="from"]; - "email-message--c79b6bde-4f4c-4b38-a8c8-fb82921d6b97" -> "url--4c3b-4c4b-bb6c-ded6b2a4a567" [label="contains"]; - "email-message--c79b6bde-4f4c-4b38-a8c8-fb82921d6b97" -> "observable--001" [label="observable"]; - "url--4c3b-4c4b-bb6c-ded6b2a4a567" -> "observable--002" [label="observable"]; - "incident--7a2b252e-c3e5-4bc2-bc6f-cb917ecf7857" -> "indicator--1cba2e3c-4bdb-4d0b-a87b-2d504ad5923f" [label="indicates"]; +digraph phishing_attack { + "identity--1cba2e3c-4bdb-4d0b-a87b-2d504ad5923f" [label="OurCompany", shape="ellipse"]; + "email-addr--0c0d2094-df97-45a7-9e9c-223569a9e798" [label="hr-dept@ourcompany-security.com", shape="ellipse"]; + "email-message--c79b6bde-4f4c-4b38-a8c8-fb82921d6b97" [label="Urgent Benefits Package Update", shape="box"]; + "url--4c3b-4c4b-bb6c-ded6b2a4a567" [label="http://phishing-link.com/login", shape="ellipse"]; + "user-account--bd5631cf-2af6-4bba-bc92-37c60d020400" [label="Taylor (taylor@ourcompany.com)", shape="ellipse"]; + + "observable--001" [label="hr-dept@ourcompany-security.com", shape="ellipse"]; + "observable--002" [label="http://phishing-link.com/login", shape="ellipse"]; + + "indicator--1cba2e3c-4bdb-4d0b-a87b-2d504ad5923f" [label="Phishing Email Indicator", shape="diamond"]; + + "incident--7a2b252e-c3e5-4bc2-bc6f-cb917ecf7857" [label="Phishing Attack on OurCompany", shape="box"]; + + "relationship--3f1a8d8b-6a6e-4b5d-8e15-2d6d9a2b3f1d" -> "indicator--1cba2e3c-4bdb-4d0b-a87b-2d504ad5923f"; + "relationship--3f1a8d8b-6a6e-4b5d-8e15-2d6d9a2b3f1d" -> "incident--7a2b252e-c3e5-4bc2-bc6f-cb917ecf7857"; + "relationship--4b6e65f3-743d-40c2-9194-3b5e38b3efed" -> "incident--7a2b252e-c3e5-4bc2-bc6f-cb917ecf7857"; + "relationship--4b6e65f3-743d-40c2-9194-3b5e38b3efed" -> "identity--1cba2e3c-4bdb-4d0b-a87b-2d504ad5923f"; + "relationship--5c9b6eaf-27a6-4b2b-9b17-49e3b00f6051" -> "incident--7a2b252e-c3e5-4bc2-bc6f-cb917ecf7857"; + "relationship--5c9b6eaf-27a6-4b2b-9b17-49e3b00f6051" -> "url--4c3b-4c4b-bb6c-ded6b2a4a567"; } \ No newline at end of file diff --git a/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/05_output.png b/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/05_output.png index b640bb796ab91128f7db627ded545114e4d74c5f..e52b652303b05e943b82e4096a9f1b2977291088 100644 GIT binary patch literal 61173 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 V=CV_>FA4wbIBBYFfz8~g{{yh-rN96H literal 55392 zcmdSBgZG!l~12uMk{iULy74FXCENH<8w2#B=6AThKI z9a7)AJ?Fgd_x%aq9DbfhA7^IYd#}CLwXW-0PoT1*48cW;izpO|Ku%Ul6@@yxf!f{N?C3BR5%)NYU*)Cvbhh!{r%k7XRJE*nOmie z&+&=;=@=DXKQLmUbExfn%;*+9yt^yojl({w*Q|~p>s;S`85;VDeX$Ow=ZJfmx?8uK z;74>?>VL1RSFT9;RiFRgZ>6?`m{$V+_iDl?b^bs9#*mS1;M&dfHEuz{01QUIQuof* z?ruh5Az^cK^TO)t&Yr%HkHol5Mf=y05v`WiR=3MMiQNIg!BUcvr>CcSUZ;mwg76jp=9xO8(~4RBxVvR3DKwV}2+rx@#iHN#_4R%9A@rnaIM2? zqY1Zy+!6Bll8t|yGa4Fb&zw24u)M5Bp@!u_IXXERnwXsRHGlo+=+~m7B*s9Q`R71q zabKSb>;~#vM+bg&bv5c*cz!~B=bL3*|`EpP^KrtE=@ z$H(4VTU#IV@-B&qi9O<05uZJPKMJ#-o1MMM$w|1szu(c_{qX+%Q**tkVf&l&8QIwZ zx5FV+c+*Ty=VfK#!M1fh#kZ-TRLmlUU%kA%9+4<8ch7q4b5Kf~)-p!g!5`hYapQ-m zM`OS<(mR+!)55#?l}dRPu^Jm4vXY%O;uwgL4@pVZ&$`MwTU5T9H1TRVxGnW9oyz8u zXQx}5c%xz!r(1~X9nqb*OKaUEKolMxemAkZYa?no+WjbEIf?4d@TICAMiv$Ze*WvQ zm$Hu@Ny^J#{%*!IJu^d0Nf{Isb+wzvGoXM74T2Pzv&rLq zW~QcTA3vh1s;WAAdu8etbUX0_=^W>B7>IDg|CmP0f@;)o+KYsFDk_rV{7R zpa0R{KNId38F<~lIc>{EjfH=!<7~LRW#^}8Pfib>PV>=zxgGC_3wSN8kDXJ@BYi5Wpb&8qMh{W=PP zal7U?wR@0QI^y6aF)d#2nECnnadj3^TU#3&UR|+Ff~T#cmb<&KM+R~Do%pT(U+U0htG2@4Jm=4u{U-hB`I+h>xSpWixW+Yo{* zx^5TqX6#SfbZe0Pa(;!;Ok0Rng$;FaNy!5}h0{MqMgkuAUzz&d_-1d};N<<^zwRyV z?K5qZwk`P;nD-*9m1izp=fHR3gEhbY+28*L5?^UqSsE0BKY#wv$W_2KG}SUU&vNK< zzePuP3f7W<7hGcAJETy%{w+M9<3=p{bK=1A$_iEgv!57D=;PQsZc&EZ@uKCu&!0c< z=;-(cHz3OJ<=prCHa2&-xw$`thZCpgFr9(>kzi3)R^|%Pu)dU6I6aV~23fY9tbXm> zxC8oj<)88~Wi726OKcIRAPu{o9PJjl;Pej{m3*2$KaTxs(n&Jzfvfwf#Q|~Tl$|Fl zC3V)n`PJN%B=?yV1oi z=(0++vAJo#JK-{u;<4K3G_2P?gne!U)eMi2re(RXAyfe4dIlD)RqM*N+Hm6SiDfsq zudlEFZhT*TTj|+RBPOAu+LUXz1P4lp$8Y-rl~Wr$^e^nZLNW z_(Npmo8aKfvsf%01H&04eSZHgB`tm4n3O)9ylc@hy{d}bxrSOnLBYbx>VcXX>56kr zaTx4AdH)X{^ByV_Gc)ArpFVwx$`XFl%GBg+}Loa z-Ru$R=;~^ELnt2Lv08;^HC%vw@vTrfBO^o5ae+wR=g8^FlP4cDGR_$M{TaJ9VjMR0 z*x)Y-Jp;o7y@vop&ch{!5*p=~QocO!u1_UfTnsTn``}y;AOw9GLcl2&<=c;f^klwu`V`4HHH=qP4D=UAj<%DHx zXj~7A3^8sBWmUctd#T~?VBwm<$+iJJdGnu&$xvz$=ii|st57(eWar7KS=iYT+171e z??R(h)YTDOBDy`G=6bl^4)E#5(h@PT3O<5;($Y@-C*js@?5&ja{`m337m_Eo2EulI zAqT>6!Tv+@@&pO7N~MEva;58f`cKM3xN$TDs&LFV$jMLHRh?pkV*d8+|5Cb&u5R$T zOV^*Rj#t%ArLq7J46cR@;JqGX@H@8QkO}oW&)|s7d1d6)>({S|hJ%|Lt6t83_1Lvp z!PHR}6&3CM9c~C^NpU@GRw6W@&Oo0oHvo6}@87>%fmLw-*oH4WQc!qkZ_o8UD2U4z zBg#Y^3;Ua%PLCmo4hSgFdhp-@5?Bu&oVlZ0`EiRe_MjW?HtL><3FF0!7o!+cNZ`8%}z9)GN*+sGE>RA3l7DT$dP5gV2Zwk}q0Cr#I)iYa$9e zyI@_MaIyRbE#G#VHM`VrQX_{50OX=mnFWQNa55`9`-7)X$**(j2T#_jQ^0e^5+Nz5k zU0gi2^a~-wLd{mu)bxjh1px2a;?K`o^`2E5TIJTG(GD@BP(ZZDZ3I$0H{=fI1R5G+ z>$jLhcgJ6{!owg7%gxJchB_8{2Jg!6K$etmCB5Qkope&-w}J41Ny1JS2L}hU3kswa z6bKZPh2KI_fI9peGNH7bTwwdFZvaRi=)ItaJD%UrU?7L-JYNo*+q~%5WWqg_n^(~E z{u=vN=RewC3>s*LbzgQn)*haPHDM?yDgUJ=ct0yAXFJrk2YO5ibACjw>#bz#gN5GL z*fqX^aS!TK#NQeU2yoVObKqC(;r zbp7@;_A=DmOyb1uOvbfP8nO4y{)8EyKc9mDLW<;2p+T5JBEKP2AXz!N3rS6(aB~YUNkir57(=j5PR2=({g6 zJ<-rm+^Y^^|IGg4m#0E6l6oDO3b&@Pol5kV=Pu0L2M#bUA3a8_vrm|$i2$VZPKza^5?%GY2Tin}b0PF-<_C%PEa zO3!gUDErHoq@NC@ncZe3x0>@c@@#Y$Z9Sc9^rB*8*|C~Wp6um^9eRJ=icwcrk4D|J z=1(M&1k81@2%;o)`=xMlmpO)zq2I{ym!+kpXji#*{yQ|4E%lqH(vd3fIHiYV7$%DV z^|f=lZ(lZX8yFY}fQn#Pq$L{jLh!q0#`3$q^^Ow}6#NOZr;rjJAiC+YVSUn*!`>4P z$U^5(Tu^P+qYFJBu1wTuLIe7?`u)#IS1CnCKZ_SHu0i>o-WjtcgLXzu*e0t#=WH4G z9;^^*RKU-ls)l9SZzpV0*Vem=dy|ARE|-k`NiQyTP<`{1B)y_SQ`hHc+Xz$Z)-+}3 zS1l|hrRfK_czrYVL^mob3Lj+zd3Ks|a_^m>-EUvOQ&*g}&1ySCZ$ltF-OkR=Cb}N< zP%v3>%2D|3pyf5#b2aTy_g_hhSrMMFG3n{)lBgSzA2tQVv-)qrPIG^^skju>n$Bok zmQBhulcxSoe(tPl104H=pUg+D^1|n8ERRd)$~b3ojPIf?xVzRg>l?QFI$WUk!ll;0 zpm9;r(IMnneOMI@jZDV8!FHo5ZiA37l+x{L8XC-~fP@4Jx|aFnlA*&yIk^8!-dh>8 zfdDxXL?0d<&2+qNaH5_h?j<~+4%JQ;pKi5!`3{ok;SsVt$3K7m++BrKmd0S6zy7bU+tV^l8MCZGO&PO9|ggmMZ z5Km!J!9=OMKQH<{=h-`eDlZ)O63t#EW->db>Jzm)Zd9R-&Dc+>Ol}cXj9T z!kwBIT(^$Z>O(J?Cj^mkzNbCeYoCTJM#3B^H|{o{Jlzq_kd}J|5?Ha-kx8m|?n4_{ zuRqGQ0_95@*E&7oR&KHA$YXnC19~IvwM9hva3NLIpD+1BhTFARhfsOMo=+sXm}6e1 zEvBfmMw3~PN0eIe&TaQN(n+}@CORgD&FKeaL#q)nf1<*3l?Xzo#}R*daMaT#?lU0* zew`*Hv|d|%Q6Z6lMYx28*_?5h+rV%fu8d7nkh3YcUA2DlF0BcqC7}Qm+&6 zZKqT6hEmi%o8}SqQ%<;}JrKB0>l<+U?_*EXwWp;>Y;4eD>Sju(bJk;KtZ1@3u{S#Q zYL$qiW_Ip8W@Bep>%wO=oVRt~a=$^Ild3^j22jU0BIh_$fm!15*09K{1t#lV@I6I@wZ6&&o2-%|n_9$fvCe0uxsw?9m~ag^c05p|b4CA1HN% zPW@OiyM0C%XWtc4FMmZle~3%u{8L(|A50AlZ_H3Maw0-- zS;B6$dnA;#eJ%(a+EQrCX+Qp=Tcs-ccOgSfT%SID(c0Bj%X+e24{+;yocC@G+-T_e zF6ua>-Y!&Qq-2BK`5NPL$uCup3dwu4n7xS8L)5YGU0O zG0j>fH8qwCXKuH5h<-2;&9PzR=N7NyE_QRpvUa01PP#(&L`ea4|MYXoPs zAS($8$!i;O3eJqi;PBs4I1!9q?HPiPetVu-X_${_UwyAMRfcVDVKMFDCu=qrE}7L^ zFv-EwOFB0W78i3P88oH(q1091tQ7Z006PNS;1Ry7W;0Y`79a5Kr9Ay+!UeBdiJ!t} zk6n`{Adm3JAekxQmWTVg>djyp4z%eMwbHo+Djwk%mQVy}2=b-dvj%;0w{_eaJ$y{9 zE||D)MKB#NWnH%zH+MwRUv^H83JE=?o$Pq%&$DFEKOgOu{t%#Rd1no;}u_?NxE1LbGfx+aH zkeCZ138PEP%jZx?OYd)Ts22Y9l5>)!_U*6SA2wX7(Ix|f2UmyhwK0*t!ifCI5xu7I z=i93@r+uMT5OnSZ24p5eJ3vfMe#`shVA8*ut^aj3S^VyUfZw|l5q)08n1g%h?Ll^q zINW~F{osKy3#tsKUkQb{FqdBg9M{otYG*=%l_q9XX-2I0a@|?7Jo6vS#M9smrI)iZ zof66l|B}b^+irwrXm9<0o}Baec&wPpCw87|gWBMNDjyD;rY;~?|ZvR1hi9VT(Cg(8A} zgy1PPz^%wI@xK5Uwzs#_3c5;vb5;@kH}y!97&Jy%IeIpF_sZ67N8DI?<6|%r(WVoM zS%W0qZ35-GGewd6*0fi3%I*Z;_R_R%3Pn6kz9F3d+_Ll)?QIAXj7f93fWfl!SEs8@ zBcf}XxIorsO=_k(G2cN9#ju+hh%2yDUm5 zrP@6f=VfogfVCiq+$@Fa3n1t3i@HR4z=D8pFT|p+6$=v)E3iPPV6?L`Y6Kh_^7uD* z-?)cFHm=s3nP8z5yGdYXAVEHP$*=Z&jId%v)=CbcpQ-3)vNzsth_GIieOIb z(YRCJKux;H4<@ik$L1As2j5A&H$-4C6MmTdNGV0%;}74dd$k9vHEMj1ptA!uptWB~ zg1UHJCtst1ENQ!Rv~d$!^o z)K1y9#>d-*K6)Haiy1#T-K0;jIo|a-(L@p@bbm%{g-krRJ3j^g)qc2P<0mOUUhk1k z;(YAQlGT3jk#7X2(9)PI?~pUY==MIL+9l>o zPWXf*Q5!kdQzX+cVE^V#N+qcqnjjfKCiu&?hymA<>q7S#AIObeKXm-P)+@v*jzR_8 z&^iD}@b$7nuNQ1GXeccL z4f_h=si~YmBua97kCs)HmJVd7W537qblKI_$amtC@tk(Kf?J)m>_#tpznsg7M_&E0X-qd&guj@ad$x(M>|NE*v((yRRP&! z$iu)hn!ROSju}CD(X)*e!Eb`Sdkt!@BA}NkkdCurirTni?{OVftuYq^_C_*)-Lg>* zGJvuix2N$^2C%Xp@&R>&W5>OE!-%Ke-5R%DUV9MZk z;?&&XI(zach9S(qHWIy6r6j&DWj$K_5V-FEV4@O@TwPt+WO|`F?lvO@g<@Jp;;)MA zGSD2Kb^8^|zb?EGHC65Qz+<-U&d2;%E{g;7tMc?|4&%wJ3mT2)(^1D#7Y}su<%@*m zyotN#KR7Vps_W5Mqb_^ik~{Dgu4~pSi`8I8HF7usKibykV2qxL=^;>qZ@*lDc0V4z z6v)olyYccygSqMmey*HYRn}x*fqKf+_TfN*uB`%h#Uypb*5}Jyp6>Qm$KJ!_qzL;D zeK_(!07sl6MnzhV#)3i$4ish6L=4!yM1CjF`J*+OtituqN$6{Tyt_Hu_7B+|^ zU8%-gX+3Tvvq+b}oq5V1QRu|*VI4X(x5MGMFO*h}j!$ZLF&_UAF)=Z*(P*)$(aG^q zT6Wi@yd?gqbn;aeiTw*H-hZDX_gt&S`9*df&kVpQ)VC)#p}Kd-j{i&^6ZA@)97ctx z<>%&Jte9}71UgViD}U(2z$?I!_A4V?qMP4&T!EHFBm#dLcYH#zEuw&d&^ehWAm z@V>gPPb+Iam%i|@$)-0&EKb0dhX2JcUelQ)wq5E2ps)^w!WiJjkO9Byu=mDau+S+p3)NN}F3=U2WY8w25kxOjd_|S#}H+dEX#J7owiTtlh=hg8* z^Axx9DClh8>(w|b{HokK-0$^iJ3}byTV^#34IT-IDr)+8^y%@xTLMX;!)<}qK!!@p z{VKvg{oP(Jdfv|rz4V1)eUIDe85zK8BYG!&s`uYpJGjZPql4WUfDM(vtpTs~)f9bw z90*w;42%U^&&!Vx=TuGDi0+ISyY6FS*T3`h{??iNtC5}O*t#jM{+wGt&SPh#5okkY zef`jO8V~EAZ5i`q4SVP6_q%P8_Pp8WWY?!83y-+(>T?^LHW6Iy8~DZyIB#HX1H!`E zmj?5S44cnek9<9~Jd~d}AkFYkj)l4<=rD_ag<9AT;opG-v9PuEAGL043!y}wXxwwN z8XYFP-SO(osHAnXGtD3<<&vKO$$bH6p)&LY3+Abo(>ETXA~4%0bF*2f&$S(WA5nX z@}@__rnkPo7ANN6oSi2g4(b8-^wwhkNYzUgjOz>ml=-vJyH`T$iLYcp1}MJg&YcSg2_aaIg76FJ1z{h0 z1;dh2gk^vC?mVKi!!v#zwT2%Mbx)%}p<=&K1&XK#udAt<**n)qlJ75wq(4KF*FVO8 zI*7CBkFzl(No3hJ)r*;2E@GeA`yqiH18r^uS#hMsg%dK=F?fNK%kc@9zk$l(qrCufTqX*rxX1!2WlNS()SdTlKgu6FYZ z>_^dyF@7ldO`mFKwzvUL#0ksF>2t9PfeFFn$ zYbFXr1q1{#Kum<314KPd1G=N*o|zdld~fpOpNL;+)v7+7!Jn#w6Lw1g6i==Ako z2VZR`#St1D92MW7n=SG>a0cokSxy+D=P@Lnu2-@0bI+M}f!Mt(EWEU?Q!@I6aeW|A zbo=f;2%f&9)>rzTkPvt4!rw(!@8KZ=e>I9R$vsY3Xt=MB%glq*KE%fdLNYx?$#4Cw+G+W#_A&>E4W2c~oC?{Z=L?TYax{SSbJ*y`P#EU2x!&h#`kHgcJ^wznTBtiq?! zadD}*<$Hr`$M4w{B4WKE5UC;c{MS(f^<`pWqN~|}MA7R=pwonVf1KHU*U`*&p8OT0 z4CTDS!uJ2G*h8i_f_eprqw?=ko{Fk!y6ANdEng6NnIjHC`EP9vB106P|CL3z4aWaU zGl+u-c{EVg5t#$zfz6%*Sasw_pr$K^0}7`$e6_+fNP4aL8MwIYzu%2NjBGYCHYO$` z%i7v`EGrw=BqS-N_5#!n#7?oa)P&e6z*03fmd7|^@>9XaWuV!_NKs6l^DPM_WuCS9 z=|v}w)WBMRe^+h5qh!A{a4SjFjf6!pNtr|uN-^_YN0_G*?dG0Y5yt(JWkkWA|U&N9tjMxw5~1{JX5rkfv2bFe;g!HQqSb&gWFxO zC7#rzq|G9oq>D&31iu*I2}DDJR0U42TfKmX;QJv5z^@B9oIe`-dhCxzgbiW|TUwF? zKncy_Z%5(2$;raQ9?dQWZf+8@5^@O91cFo2?>=W{(sOZzx0CVqA$t6sUt?p)L4mc1 z={{4chr4?et~1DgZf=fVLV^~_2A!QM1%@9$KCZnYuw=E=q4q*pLkam3pc<*+L)WP_5w*<)8+L5?y_KL7EM6UDkLhT7WRHUz)PH>}!yte%u9 z{dcT`Av7#<#hoWo$X4OuMNgu+v91F%{7oXyX&}FYR>#Q9Ob_NP*fnSeAHCM&94$E3 z14k101(~feBno$dsVF!La=e9w#l4p=d5}bNHn!VLZ54ms>(x)Fbxigwg-oOnvPtwL zw6tN+)H9*BuB;BcN}sh86vd#a`B0xf=YeSkYN*>EI4mT3=W7Mz0s{m8Q;V(u28Yap zl$)#9uOqet#NPJ(d(u}oIk+xY@ke=N+r+qYrZ`pTNLesqL4a1lzjf2kw}0{MU49|@ z1`+*YvYRNT##6fWJs)?UQgXX3*v858KhoyP5bn&DS$2`mA&q^d%#wThv!dCeN_$)V zyXVoLqp5ain1`uRG|K_H?QM_iLS0$HO$m9bRu{H;qdSe`m4_bdqRqDj1I=#0E|^`c z82i&_m0wq<=Qc4soWVdwc{VcZJpx8V4EBZL7J#K9 zj>kN-ojL@>OtbH|>fwo`8kO5kNC!Q-H0fo3KBBN}_1A7T36n7>C3z}+?&oG-q6W!N zdyQIJ*x+RUMKkd>Ej3F553v6KriiI{ki zf{IECP$kB5Qvqr*-@qUp{RZ})RJPSUT?|-k0 z3;_84_j*eV&;P&I|JRc02YtwYU+H(7{HXu;7L^;IOlTLwhO-Z_xpDFgkpLy-*;IMW2i8oOOvK z20e|J#`X6p5IJ3bE?p14x5TG1!w5T<{(EJzfp&Sgu)U(;=mkFASNj?1&#&SFSO?%V z(r?)VgnH1th3M5a&VNp$L{APkNi_=ZEl)kZxt)-054D~-3&0~D|o1YMmh)P8F|Lsv2n90$JSQCwPydVy6h7!e1~?w;2|UFhCZ+>i1MR^suDx4eG8iORFp%oz*n$(y z`*4Pq0W6)I4Ts!tn6J1@pZ8H@ar7G%{Vr;!QCmWx8cvRIKq0P_$Rn5HrvNy$!8265 zKbHv9N#2y!leUuMY2Iy|>37$?HABROp^qGNh>~}1APi^n}x1P(<(@v zk}@*>Hm`eRn-s;qBTmii;3!R~VbED1okEz{PTbVGrI!rzWUY_pf9R51`Gw{^NzjO1 zLh0H#Dagr@tHoT;x9|G&QC{%0^6Oe)8pnN3j=-ymEYa(j#M#%I!;)9=67L*#N|1O_ z@SB=ZpoJt7aX?gwLc&MR*>N0uu0K(pxd+TgT&wF1TR$J8+EOGBfE+=gFy03*!t77~ za?&`#OadAEHq4X=9|el-PBtNu5ER65m7(?�q>n5YzVIVk`Qd>kpAG(PMY@A>zWh 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

MA(6BH|=+!b^M#a^ES4*8t-IH|O-xVr23L&x* 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 VB@3+7hAa3pW`w=XiQ%q+{|oMdd;$Of diff --git a/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/05_output_stix_oneshot.png b/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/05_output_stix_oneshot.png new file mode 100644 index 0000000000000000000000000000000000000000..4805427b7ec4ad1c9ce803a41c30af9465b23191 GIT binary patch literal 56155 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 + +G + + + +Email + +Email +sender: support@banksecure.com +subject: Urgent: Verify Your Account Now + + + +Headers + +Headers +IP_address: 192.168.10.45 +domain: banksecure.com +registered_to: Russia + + + +Email->Headers + + + + + +Link_0 + +Link +URL: http://banksecure-verification.com/login +timestamp: 10:15 AM + + + +Email->Link_0 + + + + + +Link_1 + +Link +URL: http://banksecure-verification.com/account-details +timestamp: 10:17 AM + + + +Email->Link_1 + + + + + +Attachment_0 + +Attachment +file_name: AccountDetails.exe +created_at: 10:20 AM +MD5_hash: e99a18c428cb38d5f260853678922e03 +status: known_malware + + + +Email->Attachment_0 + + + + + +Actions + +Actions Taken + + + +Action_0 + +Clear browser history and cache + + + +Actions->Action_0 + + + + + +Action_1 + +Run full antivirus scan + + + +Actions->Action_1 + + + + + +Action_2 + +Provide browser history entries and cookies + + + +Actions->Action_2 + + + + + +Action_3 + +Quarantine suspicious file + + + +Actions->Action_3 + + + + + +Action_4 + +Check network connections + + + +Actions->Action_4 + + + + + +Action_5 + +Reset passwords and enable two-factor authentication + + + +Actions->Action_5 + + + + + \ No newline at end of file diff --git a/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/05_output_viz.dot b/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/05_output_viz.dot new file mode 100644 index 0000000..a730ee2 --- /dev/null +++ b/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/05_output_viz.dot @@ -0,0 +1,19 @@ +digraph phishing_attack { + "OurCompany" [label="OurCompany\norganization"] + "hr-dept@ourcompany-security.com" [label="hr-dept@ourcompany-security.com\nemail-addr"] + "Urgent Benefits Package Update" [label="Urgent Benefits Package Update\nemail-message"] + "http://phishing-link.com/login" [label="http://phishing-link.com/login\nurl"] + "Taylor" [label="Taylor\nuser-account"] + + "OurCompany" -> "hr-dept@ourcompany-security.com" [label="email"] + "hr-dept@ourcompany-security.com" -> "Urgent Benefits Package Update" [label="email"] + "Urgent Benefits Package Update" -> "http://phishing-link.com/login" [label="link"] + "Taylor" -> "hr-dept@ourcompany-security.com" [label="login"] + + "Urgent Benefits Package Update" -> "Phishing Email Indicator" [label="indicator"] + "http://phishing-link.com/login" -> "Phishing Email Indicator" [label="indicator"] + + "Phishing Email Indicator" -> "Phishing Attack on OurCompany" [label="indicates"] + "Phishing Attack on OurCompany" -> "OurCompany" [label="attributed-to"] + "Phishing Attack on OurCompany" -> "http://phishing-link.com/login" [label="uses"] +} \ No newline at end of file diff --git a/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/05_output_viz.png b/AI4Forensics/CKIM2024/PhishingAttack/PhishingAttackScenarioDemo/05_output_viz.png new file mode 100644 index 0000000000000000000000000000000000000000..e52b652303b05e943b82e4096a9f1b2977291088 GIT binary patch literal 61173 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 V=CV_>FA4wbIBBYFfz8~g{{yh-rN96H literal 0 HcmV?d00001 diff --git a/AI4Forensics/CKIM2024/readme.md b/AI4Forensics/CKIM2024/readme.md index 654eee0..7f5ec48 100644 --- a/AI4Forensics/CKIM2024/readme.md +++ b/AI4Forensics/CKIM2024/readme.md @@ -30,15 +30,26 @@ By fostering a collaborative learning environment, this tutorial aims to empower ## Table of Contents - Introduction -- Forensic evidence entity recognition -- Profiling suspect based on browser history -- [Political insights analysis based on Hillary's leaked Emails](#political-insight-analysis-leveraging-llms) -- Evidence knowledge reconstruction +- [Forensic evidence entity recognition (hands-on lab)](#forensic-evidence-analysis) + - [Evidence entity recognition](PhishingAttack\PhishingAttackScenarioDemo\01_evidence_entity_recognition.ipynb) + - [Visualize evidence and their relations](PhishingAttackScenarioDemo\02_evidence_knowledge_dot_generator.ipynb) +- [Evidence knowledge graphs reconstruction (hands-on lab)](#forensic-evidence-analysis) + - [Construct a knowledge graph in STIX (zero-shot)](PhishingAttackScenarioDemo\03_evidence_stix_zeroshot.ipynb) + - [Construct a knowledge graph in STIX (one-shot)](PhishingAttackScenarioDemo\04_evidence_stix_oneshot.ipynb) + - [Compare one-shot vs. zero-shot](PhishingAttackScenarioDemo\05_evidence_stix_dot_generator.ipynb) +- Profiling suspect based on browser history (hands-on lab) +- [Political insights analysis based on Hillary's leaked Emails (hands-on lab)](#political-insight-analysis-leveraging-llms) - Challenges and Limitations of Leveraging LLM in Digital Forensics - Conclusion --- +### Forensic Evidence Analysis + +The cyber incident report documents a conversation between an IT Security Specialist and an Employee about an email phishing attack. We use LLMs to identify evidence entities and relationships and to construct digital forensic knowledge graphs. + +Here is an example of a reconstructed digital forensics knowledge graph: + ### Political Insight Analysis Leveraging LLMs The case study demonstrates how to Leverage Large Language Models to gain political insight based on an email dataset. The dataset we have used in the case study is a set of leaked [emails](https://github.com/benhamner/hillary-clinton-emails?tab=readme-ov-file) obtained from Hillary Clinton's private email server. @@ -47,7 +58,7 @@ The background of the leaked emails is a significant chapter in recent U.S. poli The leaked email dataset from Hillary Clinton's private email server is a comprehensive collection of communications covering her entire tenure as Secretary of State from 2009 to 2013. It includes approximately 30,000 emails with a wide range of topics from official diplomatic communications to personal correspondences. The release and subsequent analysis of these emails have played a crucial role in political debates, legal inquiries, and public discussions about transparency and security in government communications. -Our dataset: [a set of email summaries](/AI4Forensics/CKIM2024/HillaryEmails/results_email_summary.txt). Each email summary is a summarization of an email generated by Gemini from an original email in the original leaked [email dataset](https://github.com/benhamner/hillary-clinton-emails?tab=readme-ov-file). We are only interested in emails containing the keyword "israel". +Our dataset: [a set of email summaries](/AI4Forensics/CKIM2024/HillaryEmails/results_email_summary.txt). Each email summary is a summarization of an email generated by Gemini from an original email in the original leaked [email dataset](https://github.com/benhamner/hillary-clinton-emails?tab=readme-ov-file). We are only interested in emails containing the keyword "Israel". Our results: [Code in Jupyter Notebook](/AI4Forensics/CKIM2024/HillaryEmails/email_analysis_political_insight.ipynb).