From 59340ad7f0bc46eaf826454612b5eda67abb81b5 Mon Sep 17 00:00:00 2001 From: Lou Stella Date: Mon, 10 Apr 2023 17:09:41 -0500 Subject: [PATCH] Identifier Activity Analysis Dispatch --- ...Identifier_Activity_Analysis_Dispatch.json | 647 ++++++++++++++++++ .../Identifier_Activity_Analysis_Dispatch.png | Bin 0 -> 77608 bytes .../Identifier_Activity_Analysis_Dispatch.py | 263 +++++++ .../Identifier_Activity_Analysis_Dispatch.yml | 18 + 4 files changed, 928 insertions(+) create mode 100644 playbooks/Identifier_Activity_Analysis_Dispatch.json create mode 100644 playbooks/Identifier_Activity_Analysis_Dispatch.png create mode 100644 playbooks/Identifier_Activity_Analysis_Dispatch.py create mode 100644 playbooks/Identifier_Activity_Analysis_Dispatch.yml diff --git a/playbooks/Identifier_Activity_Analysis_Dispatch.json b/playbooks/Identifier_Activity_Analysis_Dispatch.json new file mode 100644 index 0000000000..f72731c7ed --- /dev/null +++ b/playbooks/Identifier_Activity_Analysis_Dispatch.json @@ -0,0 +1,647 @@ +{ + "blockly": false, + "blockly_xml": "", + "category": "Identifier Activity Analysis", + "coa": { + "data": { + "description": "Detects available indicators and routes them to related identifier activity analysis playbooks. The output of the analysis will update any artifacts, tasks, and indicator tags.", + "edges": [ + { + "id": "port_0_to_port_2", + "sourceNode": "0", + "sourcePort": "0_out", + "targetNode": "2", + "targetPort": "2_in" + }, + { + "conditions": [ + { + "index": 0 + } + ], + "id": "port_2_to_port_3", + "sourceNode": "2", + "sourcePort": "2_out", + "targetNode": "3", + "targetPort": "3_in" + }, + { + "conditions": [ + { + "index": 1 + } + ], + "id": "port_2_to_port_4", + "sourceNode": "2", + "sourcePort": "2_out", + "targetNode": "4", + "targetPort": "4_in" + }, + { + "conditions": [ + { + "index": 0 + } + ], + "id": "port_3_to_port_6", + "sourceNode": "3", + "sourcePort": "3_out", + "targetNode": "6", + "targetPort": "6_in" + }, + { + "id": "port_6_to_port_7", + "sourceNode": "6", + "sourcePort": "6_out", + "targetNode": "7", + "targetPort": "7_in" + }, + { + "conditions": [ + { + "index": 0 + } + ], + "id": "port_7_to_port_8", + "sourceNode": "7", + "sourcePort": "7_out", + "targetNode": "8", + "targetPort": "8_in" + }, + { + "conditions": [ + { + "index": 1 + } + ], + "id": "port_7_to_port_9", + "sourceNode": "7", + "sourcePort": "7_out", + "targetNode": "9", + "targetPort": "9_in" + }, + { + "conditions": [ + { + "index": 0 + } + ], + "id": "port_8_to_port_10", + "sourceNode": "8", + "sourcePort": "8_out", + "targetNode": "10", + "targetPort": "10_in" + }, + { + "id": "port_10_to_port_11", + "sourceNode": "10", + "sourcePort": "10_out", + "targetNode": "11", + "targetPort": "11_in" + } + ], + "hash": "359d39b5fb39feffe490768af266255e4a7ce7a4", + "nodes": { + "0": { + "data": { + "advanced": { + "join": [] + }, + "functionName": "on_start", + "id": "0", + "type": "start" + }, + "errors": {}, + "id": "0", + "type": "start", + "warnings": {}, + "x": 300, + "y": -1.9184653865522705e-13 + }, + "1": { + "data": { + "advanced": { + "join": [] + }, + "functionName": "on_finish", + "id": "1", + "type": "end" + }, + "errors": {}, + "id": "1", + "type": "end", + "warnings": {}, + "x": 600, + "y": -1.9184653865522705e-13 + }, + "10": { + "data": { + "advanced": { + "customName": "merge reports", + "customNameId": 0, + "description": "Merge markdown outputs from dispatched playbooks", + "join": [], + "note": "Merge markdown outputs from dispatched playbooks" + }, + "functionId": 1, + "functionName": "merge_reports", + "id": "10", + "parameters": [ + "filtered-data:filter_3:condition_1:dispatch_activity_analysis_playbooks:playbook_output:{outputPath}" + ], + "template": "%%\n{0}\n\n%%", + "type": "format" + }, + "errors": {}, + "id": "10", + "type": "format", + "warnings": {}, + "x": 0, + "y": 1040 + }, + "11": { + "data": { + "advanced": { + "customName": "Update Identifier Activity Analysis Task", + "customNameId": 0, + "join": [], + "note": "Update workbook task that called this playbook." + }, + "customFunction": { + "draftMode": false, + "name": "workbook_task_update", + "repoName": "community" + }, + "functionId": 3, + "functionName": "update_identifier_activity_analysis_task", + "id": "11", + "selectMore": false, + "tab": "customFunctions", + "type": "utility", + "utilities": { + "workbook_task_update": { + "description": "Update a workbook task by task name or the task where the currently running playbook appears. Requires a task_name, container_id, and a note_title, note_content, owner, or status.", + "fields": [ + { + "dataTypes": [ + "*" + ], + "description": "Name of a workbook task or keyword 'playbook' to update the task where the currently running playbook appears. (Required)", + "inputType": "item", + "label": "task_name", + "name": "task_name", + "placeholder": "my_task", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "Note title. (Optional)", + "inputType": "item", + "label": "note_title", + "name": "note_title", + "placeholder": "My Title", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "Note content. (Optional)", + "inputType": "item", + "label": "note_content", + "name": "note_content", + "placeholder": "My notes", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "Accepts 'incomplete', 'in_progress, or 'complete'. (Optional)", + "inputType": "item", + "label": "status", + "name": "status", + "placeholder": "in_progress", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "*" + ], + "description": "A user to assign as the task owner or keyword 'current\" to assign the task to the user that launched the playbook. (Optional)", + "inputType": "item", + "label": "owner", + "name": "owner", + "placeholder": "username", + "renderType": "datapath", + "required": false + }, + { + "dataTypes": [ + "phantom container id" + ], + "description": "The ID of a SOAR Container. (Required)", + "inputType": "item", + "label": "container", + "name": "container", + "placeholder": "container:id", + "renderType": "datapath", + "required": false + } + ], + "label": "workbook_task_update", + "name": "workbook_task_update" + } + }, + "utilityType": "custom_function", + "values": { + "comment": { + "_internal": [ + "container", + "author", + "trace" + ], + "comment": "No observable data found from playbook(s)." + }, + "workbook_task_update": { + "container": "container:id", + "note_content": "merge_reports:formatted_data", + "note_title": "Identifier Activity Analysis Dispatch", + "owner": null, + "status": "complete", + "task_name": "playbook" + } + } + }, + "errors": {}, + "id": "11", + "type": "utility", + "warnings": {}, + "x": 0, + "y": 1180 + }, + "2": { + "data": { + "advanced": { + "description": "Only dispatch playbooks against new artifacts.", + "join": [], + "note": "Only dispatch playbooks against new artifacts." + }, + "conditions": [ + { + "comparisons": [ + { + "conditionIndex": 0, + "op": "!=", + "param": "artifact:*.id", + "value": "None" + } + ], + "conditionIndex": 0, + "customName": "artifacts exist", + "display": "If", + "logic": "and", + "type": "if" + }, + { + "comparisons": [ + { + "conditionIndex": 1, + "op": "==", + "param": "", + "value": "" + } + ], + "conditionIndex": 1, + "customName": "artifacts do not exist", + "display": "Else", + "logic": "and", + "type": "else" + } + ], + "functionId": 1, + "functionName": "decision_1", + "id": "2", + "type": "decision" + }, + "errors": {}, + "id": "2", + "type": "decision", + "warnings": {}, + "x": 360, + "y": 148 + }, + "3": { + "data": { + "advanced": { + "join": [] + }, + "conditions": [ + { + "comparisons": [ + { + "conditionIndex": 0, + "op": "!=", + "param": "artifact:*.id", + "value": "None" + } + ], + "conditionIndex": 0, + "customName": "artifacts", + "logic": "and" + } + ], + "functionId": 1, + "functionName": "filter_1", + "id": "3", + "type": "filter" + }, + "errors": {}, + "id": "3", + "type": "filter", + "warnings": {}, + "x": 200, + "y": 328 + }, + "4": { + "data": { + "advanced": { + "description": "Comment and exit if there are no new artifacts", + "join": [], + "note": "Comment and exit if there are no new artifacts" + }, + "functionId": 1, + "functionName": "add_comment_1", + "id": "4", + "selectMore": false, + "tab": "apis", + "type": "utility", + "utilities": { + "comment": { + "description": "", + "fields": [ + { + "description": "", + "label": "comment", + "name": "comment", + "placeholder": "Enter a comment", + "renderType": "datapath", + "required": true + }, + { + "hidden": true, + "name": "container", + "required": false + }, + { + "hidden": true, + "name": "author", + "required": false + }, + { + "hidden": true, + "name": "trace", + "required": false + } + ], + "label": "add comment", + "name": "comment" + } + }, + "utilityType": "api", + "values": { + "comment": { + "_internal": [ + "container", + "author", + "trace" + ], + "comment": "No new artifact data found in event." + } + } + }, + "errors": {}, + "id": "4", + "type": "utility", + "warnings": {}, + "x": 420, + "y": 344 + }, + "6": { + "data": { + "advanced": { + "customName": "Dispatch Activity Analysis Playbooks", + "customNameId": 0, + "join": [] + }, + "functionId": 1, + "functionName": "dispatch_activity_analysis_playbooks", + "id": "6", + "inputs": { + "artifact_ids_include": { + "datapaths": [ + "artifact:*.id" + ], + "deduplicate": false + }, + "indicator_tags_exclude": { + "datapaths": [], + "deduplicate": false + }, + "indicator_tags_include": { + "datapaths": [], + "deduplicate": false + }, + "playbook_repo": { + "datapaths": [], + "deduplicate": false + }, + "playbook_tags": { + "datapaths": [ + "identifier_activity" + ], + "deduplicate": false + } + }, + "playbookName": "dispatch_input_playbooks", + "playbookRepo": 1, + "playbookRepoName": "community", + "playbookType": "data", + "synchronous": true, + "type": "playbook" + }, + "errors": {}, + "id": "6", + "type": "playbook", + "warnings": {}, + "x": 140, + "y": 508 + }, + "7": { + "data": { + "advanced": { + "description": "Determine if outputs exist", + "join": [], + "note": "Determine if outputs exist" + }, + "conditions": [ + { + "comparisons": [ + { + "conditionIndex": 0, + "op": "!=", + "param": "dispatch_activity_analysis_playbooks:playbook_output:observable", + "value": "None" + } + ], + "conditionIndex": 0, + "customName": "outputs exist", + "display": "If", + "logic": "and", + "type": "if" + }, + { + "comparisons": [ + { + "conditionIndex": 1, + "op": "==", + "param": "", + "value": "" + } + ], + "conditionIndex": 1, + "customName": "outputs do not exist", + "display": "Else", + "logic": "and", + "type": "else" + } + ], + "functionId": 2, + "functionName": "decision_2", + "id": "7", + "type": "decision" + }, + "errors": {}, + "id": "7", + "type": "decision", + "warnings": {}, + "x": 220, + "y": 672 + }, + "8": { + "data": { + "advanced": { + "join": [] + }, + "conditions": [ + { + "comparisons": [ + { + "conditionIndex": 0, + "op": "!=", + "param": "dispatch_activity_analysis_playbooks:playbook_output:markdown_report", + "value": "None" + } + ], + "conditionIndex": 0, + "customName": "outputs exist", + "logic": "and" + } + ], + "functionId": 3, + "functionName": "filter_3", + "id": "8", + "type": "filter" + }, + "errors": {}, + "id": "8", + "type": "filter", + "warnings": {}, + "x": 60, + "y": 852 + }, + "9": { + "data": { + "advanced": { + "join": [] + }, + "functionId": 2, + "functionName": "add_comment_2", + "id": "9", + "selectMore": false, + "tab": "apis", + "type": "utility", + "utilities": { + "comment": { + "description": "", + "fields": [ + { + "description": "", + "label": "comment", + "name": "comment", + "placeholder": "Enter a comment", + "renderType": "datapath", + "required": true + }, + { + "hidden": true, + "name": "container", + "required": false + }, + { + "hidden": true, + "name": "author", + "required": false + }, + { + "hidden": true, + "name": "trace", + "required": false + } + ], + "label": "add comment", + "name": "comment" + } + }, + "utilityType": "api", + "values": { + "comment": { + "_internal": [ + "container", + "author", + "trace" + ], + "comment": "No observable data found from playbook(s)." + } + } + }, + "errors": {}, + "id": "9", + "type": "utility", + "warnings": {}, + "x": 280, + "y": 868 + } + }, + "notes": "Outputs:\nMarkdown note on cases\nMarks workbook task complete" + }, + "input_spec": null, + "output_spec": null, + "playbook_type": "automation", + "python_version": "3", + "schema": "5.0.9", + "version": "6.0.0.114895" + }, + "create_time": "2023-04-10T22:04:40.934992+00:00", + "draft_mode": false, + "labels": [ + "*" + ], + "tags": [] +} \ No newline at end of file diff --git a/playbooks/Identifier_Activity_Analysis_Dispatch.png b/playbooks/Identifier_Activity_Analysis_Dispatch.png new file mode 100644 index 0000000000000000000000000000000000000000..50dab2cb294b6b8b4ed15994fac1948c5e9ba665 GIT binary patch literal 77608 zcmeFZ2T)UA+b;?cq^U?zM5-WNx`=cT=~WPs8l)q=6Da`{Q9+9I8Wd^L6r`7cfb^pD zmY_80JwPDI-NEwrJ>NU;+&lN1Ip@rL&JdHm)_V5ZYd!t>t^HhATjebIWpV-ng0pI> zxAh1JKv)6-qGHn1z!m9I@B{$?p@oB@qOO{vBCD>4tF42R4FLgntaD6*#;pgm;Viw} zMGCKZE(=^IzU-dx&^`YQ8DlH?QF4i4dDE&-0~Nm()h^|2PsN)buh)bP4VW7ZTv8ag zTpd5vH>`f-M;VT6iS|6VC^Lg{cpAG;utMCe`I$2ztc@dQg`U#9mR{w{?i=A))z+LR zf|$dHzSWEkWRm6Yayqv6=Ev?02fjB78gD?G;ASDB<8K7e0ut{Sa*0dcyID?(Fd}Hy zMQwP#v4?wV$$HR}Z6_DTv;9DIutccuaf#*QiXPl5}{5}0IP#WjX z+oV=M`E>2dr+n%=daZNXxcxAOKz%2R_m4X-OWgZl{prcg(~z=HqO=3_oUBD6Z1f)M zn4>6uSKKAGpv`z=b7?X=g~MBA^Jis4aiBf}MbV0lmD-1y-_=!}J#^?LDV>kRh|Lsr z;Zmenq?Z zD&Xp2Cnzi-At5LvA}Aul5A@*ogt&M;@Z)#!WdBLzH=Wxyo>m?XZe9+qF06RE4=i21 zy=2(f@HhJN@8>*i{2czdlZ)rC#{wQu5Z@vwEFdKKhc+-&8h=$%*TK)m$>_F&Gq60s zJ!FN2CB&sq2K<+%e{T8L(EI-k6~A%g?~#AC{I4SoJZ(G_U7dk@dddE?HNOV`-S}&u zv>^V`|5}Ql>wIz*SZG;tX~936CQI%)_9UNxK%PMDw!&RM!qsWA08@kUgDtL^E6tVe8brhnWD z(fa|K{_3TXmZQa)a=cNql+hQbZ3|xS!I;S|O?f7H_8(@(ZT6&iZp06XUq?|;fJj+` z34VRhR>(Wt8I9_?^5+U`a4^68jE;&t0U^=(pC3)9Ktxz(d+T@4eh&i(gvbT{(}RGJ zlJxw6e^zV(+h5d)u)BX~0DYxd~8UPCsU6e)htVop)=XX)=!N`DO2{vx+I0FqR~HLFDFyjq$<~6a`3v5XE#Q`2P3A4M(v0~sAG8EC^IQ<8|mzsc3kQ`XZ55onbe-<)$k%;tIW_0fEr9Z3L6anmr zxs&&D-w3JJ4}4MlX^7;{GW{RCn*WWP{7YoM|BuN0e-@b#k^bRia`xb0E~2MN zhN=!~&$*V>IVcoahme9Y)8Q1^@8hWniC*XhH^I5n64bBEm=S^tbU+5f-*>had+QpS z8pKN9BVv4fK5BsT`y0aET9dNsegtXm@l53ASd#kbXO)S_4{Y@23O+MV6Mvf`eOo6$ps5zxMSMW zP$sIZ=&u*f%d>((jp|SfwW5g8;gJcJG?M=!hhKN{i*{Ges9u@5719!37sYb{ew0e| zOPcg{o=JUYAth=BCm?XDor>b;n15^w?AtwLnEHxNHI~ zus6EZAa>=*NaKS$*~%JfQJjWVmFur`xoImHoo+Xgt|H+iq<}=TE`r?i&~x>-P0s^@ z-0?n`?7;KFZrYoq#O*w>7A;ku6ZJ`deg>yaFMpNdFC8!?04P}0#Ww-}C|FW!`QRqG zQ_rkJ{wT`e;7MZA<7vdLc*=hiMaUVze%TSkUi(X{yVc20EgsZ0fKEDgJZU;U^t8bq zLwE~^3r9PahaHD+Q2)FW?K=W?Y}kZHJOd$-2(Me)d{XBz#M2RJU6RZs+mFi$nLsNf(^WJz2u)qiA@-(qNuMQtW)UVb{Fjad<}1%my?rfzL2( z@Y~~8riW9|AZ3BZgSG9{(M$mnN@mS%r*kTJ!@zx-5QMX|S6T-6(1_}wl}nD#&{SAx z*;V$ekba1W%wBusc3Kv6wB%mRd?GHvLWrBe{Lwf9Ric4-5IvxiBBGWUuoO}DphaW5 z5RAL0E$!ZD>h;Yer>soxhU+++@05E|d_qEJo-8C|&21mH9y=QiFilGIwtZiafRb{ps25#{C8r#9?2=THxN^9?Bl0F~R_%Ie_o+FLr-#b1g^G zCcBbliu;yK`3?4>wiXy(^ma7%FP8T=d^^IiC&6)Lo4cgduFWcr1H9qb zj3V$nZWtUHq9r8yPHO6Ycr>@w&P*D;-7X=`UI%-$4D-oyU6=vyy~f4JVU~Qi69jQp zQ;@~dxla@%Ae_O7)@RR!%&QTCK}mtVr9o?H9`ht6uUHVrR%Btf%G|znmIYxVwi~-k zKJKT9pOQN|#C6sQ1j1G)tH6CXcT6GQ!uC+I6^j zNf-EFYFD{(k5+^26J(K{|I!LY=Oi-dc_h84F=F$nXKPOzyy0Q0L92-}$Sp4JZYc*xau1^nDlj~zx2Z;DVv2&BqyA)x?mJd#OfjJdPbySXf!&;v9xBQ&u6Y9)`t~2F0r{^ zIp4u}Y*cRB0S&~Km!ZbJw+9rXpFGBH1a6RQhY1F(C$p_hS8XIa+s+}ci6i_TUjtX( z3W6+}q4EgZ89ScVlL1<2Y3rxQ$1WCK9Rg4Bofu@$NuVZ+b_NH za*ML3iHe3ZGD$EmX$GFW#Lh)o}XTv^%1>u9) zgC!vlh|L;|$~qmX>$CfZoj7byCbhN8ftXx(qF@pf5-uK0fXNS`Yl}=1edN4omx`j7JoTFj8i?Va`TT4!TK=sEe z-?1?9$#;c?MFp}lU#(sFux zBAt1mXuMu+XBW#!1tf|yq?#S;!h6j|0iaRF5%WA)&cuct{8NRBTxptR5;-wIf4tag zQ^1RzKYM%YFSXe51h7t=w4JB^(Vm1!6z31>>O;7h|5#uGPzv74Jz<0V6Kt@~cmO_X zlKA;H#Xml(JSz?0%BJXEr6fAnG7n(&+mBDPzSJc{TB=TvjBaZ0WvO*R9%44G@|;kww4eT6;(8+mHSIWhZ5)q zlD|&iX8&u34uGqjN7k|Qm${$~1s?9oM`|0uHa{Uw2E&9dkSwSL%cgSq2}BTpz8CJ2 zB({3w7ZzWDm1>4ITNJfeuCr72KK>PPEJ5NE(Qk_)CzC$1@raY{?s}Qvbk-ztRgc#l zseiGGYVSYs%3`MV3+d~Ze#zL|#V^CdSDG`e9`k1K@epmZTcC57vcFsm+OHu0-DQEw z_kPiTVLw%5cJ@wIJd;4&tFIv+UT$xDNa^q7_ufsi>}|0Nyd^SUJ?ot4*)OA^4aF3Y zQOO+6$<2RLVJ?rJ{z?mmO-aqJWn_n5jYbUcACiPP&G$w@ppXUMvK7j}Fx zy6_|}vNp-e_Ow{;EVJRGZXEi`-tNOJA^wd<0&nK!SzUqsgJds$!Yd*vBGlTXBc1gI zBG6;h4F23CUuxs{ws8pdYC!>G%&iO zFqjOTme$_Y5vyg%yhmS?tm3miKFurT>k?<->N+Pda$*z70T%{NaQQhK+llX(U-Irl zE;`-9tQLI3Wr}r;Y3-2vG~i3(3C74z32t@`cz58*%V#waO-P+n2P2z0WEG$xV$5wy zK(9BXn>YKpxt;zBYqQ3HSw$2p6;S>q9e03h*;((&@RUv#oB#-ZSvLhMFXqVpB{8?D zSU00XKXLx)1^CNaO@>R9*Pa^`)J_<09d=#4bmp_A395m$0P-WHGCv3XRBpQQ02e5Y7u_ZQXR-co?=^#0bw9Ku4SvV_3JvVf zflavf*CyO8Icm?({o+GtY+`a(!NcsF_trC_`Dab<@BOmfr=kIa6Cy8vY!Jks@VBb_ zcX@zTrY*|7u&ZM=nr^w4y4CRr~VQc zKR}$3r(SAa_-j7EWGMd|CIilqdw=z!qM38?L4XbQnbTHG7d=@Z_RRmYW&g8fzjLDh z4N?|tNDK<$Ehs2RXl#^CvvAtEdE|W*<%}xqUyOT9LaAzJ7jF1GUmOrf-S;3HViOPY zD7=isxQBfH%t=2!aFv6DgLmUO4d>(%78}GP$f7+{>ZOY3|FA3PeWRcc?mpJT+d5L~ zTNab3;;;VJALWdLY>}1Dr?PQhP~~UwTDGYHZ+V>=)Su!luW8okqfnET^^0Ui>_?C3 z%6p}!^Qy%6^6Jm_#a+j12KjYBcs=cU6Yx4A^t}D_Fm>iEi;;!s26WR(hJC;MWQsE` zfI$0JQRd(sR1X0QvLQWWK&GJYRXU!~8>&mv%W^^!@Iw1# z6(ziG`8$1kUZshCZzCxLXKX^h7OnW%1wZXQVA>_FY~=V{`rN&&p-1tHsw*Ed6Xp{v znU@`cc=>p3<~lfqkA6mf4ZnGZU_&^%#%J#(|sY{W_i9O&(N zvzHvdHo-^4fF0bgqT;}lDH9l&l9pxM9UUI-N?`GW*KgH(4tuls%{-{t8XJuCJ&<>nE8t-!mWTne82YN1MZ7>Uf~PL{e0(}M&Rm1VfYzz zuR?FH)!amM;MITttJa!tFN;pJWwjow%M2JWP=rv{;!knm3xAson{4RN(98FNBL02X zjNV&V%z?oMdD_NqZ+bFi1`+p7q})nm**@I8vHWT*Ved}-Z;t>lHW!R>&lr9suD$u= zG-Jb0{|n(-XnbO#dfO)X5nH*f_9$IMY^sFk(}t=y^|v&c3$CS=3oKKA1Am>V_%t-c8o@Qnd`S*Rpr-L~;vOv<{ zo7WpYfaIG|rU1tI0k&Tr)SWTrsj0%rXuR2*kqC*?F$Sb6#{+w~*x4=@^wJDRCtiOQ zhTVmBq4xwQmVj(g=UMRpmD~)s`i#b{&n%soeL3#e*q9>InjufylhOkB?T{f^7=LT3 zp6$u5=7X3rm{2I2?t5dU{c^ZaQ=jpKZ&^sE>#hU{9G0?!La?YR+UU{TSRec11jFG; z+P!J`Bt7}OP($_GiK#8)wa8r_G7?`(ZTF~Lo!|iDK3CZw8w1--2Unq+&EfO%CUw&L zQ#&YZVj|P6P3V~m4ES+|-u-b-iobQ6wGwNb0$g7{6si(xh}R(h z(rC)c05q!pY0SWDMJGD-FueLSWlaMb@Be8G#5X$9s6YAHNC!09|7kSCH$J3P2LfpP z$RwcA?@y!5udMU;q2ZAi{g3n%|9xSu6BQjmgwcMkp{{Oyu=(w)BL>Gl#Nu%y92{4y zanSng!uJ1L=a4rA8{40SVppPFoh77K&AE4|1&4Q8`jrT3dNJ)gy^liSkiI-?jHT z??_aiIr({-XzKEA+Pk(?R9wirIO3CQj6f#!ru-^CG$2=M>Q#VSscvql0(=4}c5@)> zyuVKt`sQ|E{doWKPMNw37hRPz{^A=#T?%cIBKG>?bzD#%E9kM%X7duaV@mo z!E5zGqU{U7@KJNc&5ipf)1rMLZ}gfr-s8l$o*|tR`B9~^U(6~uVHpZ7p9?tabaw zgQ^5H1!KA3@L3{UL6;UjJDKf#53cZ88909zt~k-9t$k%FeGMR`t{Y+lA+kV;{%) zZ{w|Rr16G#RUHcY)i^N^LjxD>j!P2hsJOtVlKu6B z$+A}Kx^<$pf!q|p3`PIUP<&Iz?nQKq26I$v6W{Nv-$-{+r*rD-KLOLL?Wk4oU9J9L znYkUOKI1Bvjl2Au{#Z(!kjt$4s*cb_ARz|+N1&<1H%D*3J+U<&90P-c{5Cc%dgrht zat&PL9%*^#WGYOv{-d63*^FShi6nmx{|vu&UtgAsR?VRRSF*-r0xbF{DE%ey!`dLL zu&||1E+ZD_MRD_HHP}{*P((u@6Kxe5)XqBn$W0a)Fyl>_IlHmPERUg*&tfGy#=d)^ zjBPj4_rJ&jF~{j%IBH?RdiBgohfCgoO_HH^3i>O6j+cOvQ^W^@0vZr0ZI1k#W;nz{ zr6{Ldbgx~sy-Pgqh!ibapk@v*R#PyLsQf{O7xxg-oBHP8wT^h6G|66+P=H=zLg7_L z0Yz(I6m;3hlM|RtuzW7D=B6uX*3yg=9Z_LZKnEhNRsaIbv&HiCcs+5I=!Mt;*AJaH zG;ZAZ$HnJ2$?ene&pv08H5LjD#RlwimqZhQ%<-Y?Ek1n}fTPtzEXlBB=!i0ZJsv>V zUIV6&f+36zfBWa;w2wA*24MCYo{V^cjQ~OP(>b7pbj~14_c1`Q-iJW|aHpAR0fH9U z`ZfST*^pZlc!H&rdh7r}I6&}d@)ydCI&upLh)eCzSWk)HCEyRB9Q?A`h`X#T3t&jo@f#Ehs&EDSvpO@S|joDg$ zrJ6bSI^j1a1fRTEC`4lZUGjoA78|?VffHJB#TZ!+8s4 zphaSBcFP>Duc*NVPUx1$+smhLXY|u$=M_D+t9?~f_RS#&^J&(D2x$0zoAL9DyX}&h zfxx;GfX0FBUVju{4Su6as8nwp^jkNR{pMBqMIV}@X?ehPt3{;EDM=19enFbaBw>y5HbkDd_bi9R9Fq0otskdHxK~k;aSjIfma|& zWN#UcX?E+16nM@7tbJY)Fyg1r)!~~2N#9-un*3k;>f+^t6JJDqsI`n2qqp3;hT^v# zK72?mJIQEbXqdFQ#drdgih+id9n*zS3zNtT^=#Bf0UDxqol5(!9h!2 zU@0-F9DSMJz+f2Fh&kHtdaW2fv z(VtL1OKb+Lcz=a;hU0&Ys`?_H7Rb*%pT>v47KXsxMR(~w11YnXSD zQM%`BW-H;(5p>Uv?!xMmVn8R%WNpwCIWama-XXL?CgV6-QtrB*E^K8y?G>r8PqF+%q%$T;w6e-8m&Gc&%yyxuclUqrox$B2<#hkLtL zWtH<(wGngRs=HC0t=U2Ho}et(+8RlV!@ZyEh|e#qqh5RA<))A5q2r2m*IWUr{Lsqm zW0g2}+70+Ml5-#1BqM*S4gugPeT^RLGUAs923nw~N&Q*s_+HLDNMExXhPLiszc*gv znMUOA&+hx-BmtvKfS1()RoWBJIb7b`;AOhor>3Mw&SRUQAALVAW?wSJhgkBgiXeA* z6QAPf6$aoJkmjYa-?(WnlLwtCG$%z<6m4+};6+#|xE-Rb@BlEoCku!FXycTh0Xy-l z{|(@K#wI_*LL8>`PcKs1G{CTZsNmlFSziQJ4Y(;Dm_ti@122!iy6QUpij35U|C4C~ z^4CCxendcCqx+mejA@dhnKYY%1e;Ki!EeR=Pf_syABeGLokj8G!D20=@i+Sy9*h-2 zj=yUzB*>}4BLcvl1ItAkLZc(yrd@1YA#KT5c=9Y^+~0G(@LgXJ5BjD%)vFa%E z+Y<)(`N6FYD8DyO_jpgFo zb{Y!OuEwF(_{$uJcc@n-;{#5op8&OVX#q8$^d<5xh|rasNLj37wfkastEc&jR`6BF zX%_O%ZYbpT2m(#Av_i(|<!irhNCB6CaBG5M+s@+xJ6TY1qW)*^`F(=g!NTM(Uir=dLj#P}fdT1e_v zug8M89D7UQvEN%(U2{V#t(U2sX)FQi=%ZWha|5PQirCqYuCaZ&{C)Iy00?C*;fGrWK8I??(ICND@1hulDb77v|h1`H^oOJUWaYckuxfx#;|cV zSuy;OckXK#GC>lTY=!#JoB>+wt=HC0cY7^Gp;7>3iwr>Sr*ME9Kz4A-;X^hhwK5Xb)<>Rm8we5WpLz8^|;3@8g>1m_tuLDM@5{D#J>pc_RdFFmm zXLbzVfzqXRF4G%{sX2Fhy{W6x=((PNWyh^aZ@&4+g2-6v9y<&}AFVp>g;Ce#UEvFR zFY>a;^G3;5t`RK$D>ZC$UvcGUbypAtpn6VF+o>#hapCLsCtB*=C3O4Pg1cpqaqpP0nuM~Oav^;Iv$y>Df$Qe;h}1X6!3HDF1&eQnLpAn5o%Fy;^4KruVjFwtnhVHy}8V0fz3+!N*mGVvxCub!d$(v(>KR_Sp|Qsu!BX)?O7MRU+6Ez&0@+n=K1yHoL@wm-PAD;d{~n#&N-_irSvXMC9K;% zY8<;^fD+?^VI&Ldb)G@zNb3R^Sp05rW*i!)__j&CeYDEGWIxVtQXKG<_*kU5%WgDv zaZQ}Z=0b~2-_gYgxO0n;4`ciLIF=A|arv|i2++EnX6 zK^8vJTi*p+d$^$cksDq8na9CB3^?2ITAWde$hI}TzWB7PuTDE(na>JF&qTu5Hd;zY zvX}tVmIzgye}9?Yd?5+ydi>JK)nEJbX#aECr)g_C&2hVF>j}aYgF`5q zX#Z@lHNQ^8h|rrmYo64A7dW4_XJsC4On&G(Fe7<~jz1JQOK}RH)EC&3E-yA-Dab`W}$t8AJbk!p|?h+_v}&v`U*Ud;c(WZsU1(qLLU5;GtTq@@y5%tg%M=8 z2^8zRREh9PmVQL(+x-rFd=Dj!E4$t&X^stS>7N72BVYRZr45mD!Yk8sT@>&-LrI^? z32}ZoAB?ZfCjcci22srgdu0~YtWl!UV)7b;$|KVu^}ELX-!`TyCWAaJMaY?#6LrC` zjJ%!xscyka!;Bf|`jOy8yEM%tTG7hx1dRM{g1Bni`w)a> z*Fm-l(k938ZIM^<1t%Qrcr=YARs>vQR^mSzprSminb4Ps*wn1bU(n>*bR@)B{US;d`=df&kYwy#0Bg;F0i4?8>oLrH6j4TI_sDv_I#-G9R4)y}8&R|pMTYL}n|L8S@(lVB8MRq} z+Q^604I+Z%D>ue2?wyr?jXf)A+@0+>G=Bp0!GlLR+3>z9BOeg;Sdq|jCf~<>-)U!# zY33*KS$`GcJ~5V(dgo{ddOWYVc8?TzR;k(wXp z__zfm&^Fc!YRZ$iy-3XIHxBD(=$&8A;8vt?d|dZox07qnnroW%iuI`CbQRzddCu*9 zZkxUbZo7i}BF*c9utsekrU0W7*&{cgsxU!^g+!R#qJG)yd7c&e9scdFC3$O2 zNXE?%o=`#TH}9__75X<;dE>(L5e^&TM}P|vA~U=g-?5cC>XnuTJ6o zE{YiZ3ML(tk}mD=L9-G;L{C#bWbCTR);(q2FrF;D5c&RPT;9$@5U#MlwmXR3suI}c zn@T2xx9D5%J^pY5R%N1|7*+4lMC)a~)uL3c~VjeJLC zJT`}!%4XjAPUaF)>a ztfAsrJj-@4rzm8PnH?qjrHaKb*-b#wmQ-zP2MTqVGIkKI33lI8BIdkd@QFrx->`(} zo!qRWnWpPZb@Gp~kd}S;CD9+^;Tu6N77w2pi8s4{oDZ?XwIl36OUf&skrv1+!aHAk z>C{r%B4=inxT? zNZKh+tFrQB9r@gsj~cGYIy_Ie2}BR*iru-_xNTRk7oE7ruQO)j9rg0wg5M3!gQ`>5 zOA7E#DA>?)UpN`5zf+KY_@wV}+PkYAsI<{m0inEmm0*P;YaZys!dbg_tWrs(6{qI> z4!tYa6I5jP`6WK)^~!q9Mb5T~2PDfhaN27nJ+F+E+Pf+&eozwWV^tz{fT(vXNoMe6 zIr`+=qSGRAn4L7PAK3Ge2`)AP9-gv>K77BC)9bNe0IPyu@tx=Q?ec^l76!r@)X{RRN8J$3SyniG^a0?bgx>wU#TovNlCP^U_nEhX5qVOsXXah<(jxL z1>kh&1xw2p^5xj7WcR52pCB0>LCEJL&oFDadQQdw%D$G!SFT80dH{}4CVX0=FY+MG z_4JKF$8-BWV`(~a-^j^~27Ma6ku_!gwasIZ>EffkG4EcSHrifPLZv-xFP6aJ_M;1n z4pCfTayCMq+gb$J@C)GhqmiKgzV3Q@zwW9230K{qx>ZjU*J)eh7$fx}+-X7EiKv>S zZ=b^vE?PY3x@+c}Hb*f=R{a%7>)VLAfaYV|t3_Yghr??i$B)o#Z&*`AS-=jw?rRiMg>gp~wbUdDr>=$=RE|)rf2(vTmr*Ed*cvfa9tH8ZwB>J7b#ChH3 z(n9HbB~ z*^my8R2>2|y2z^7|1`DH=_H9vt$OLnVtuI#_o)Kv;f1ao^R|%KffBZHy$g`w|D;$7D)N{lfm!ImCL#cCa~Y^{jWdYf|7yExm91jM-Z=-p!^R@ve7kek6uDv=@f`vc&bE^ymWgZC?qjq z#d<|9aV10XZI3iWbj=QX@WXRE{N~GE30iw+BsV4eBqN}!ZrHoH;jB))a1|&um;m(y z=UXB`It29W``W3O!}_aSBiD^eZAN;lt{q+w+E+-<<7p_f%c-wkVR5+d6gm0v;3j=Y zDD5TmxvJ2jb73c_nJT$lB11?&h`mtyCa$a_I$BDqwuf1ON>5{l}q>V6#kug z0TL10>_D}I#kT~HNcffhl-I`BJGy$?{z~X|M9Tw5T1qPKfw1z%IlyU#->{{Bdw%*9 zPM(!DXeI5+pizh7%AZQ`-$!|W9k|AyiiDnj?2yz}DwuGYtWF`DIgS~uwuEsEg1A;G0bO0(1$oJGD+U9Gb^P3-q z6|(EbfL^}T5-EGFrmn7j_mE3F*(vYn=mFi#M0!n2%6uZXz#~;^SVq?V0d|aK-u>mQ1-3RQfxl&RwZ9321BL*_(r|*ULq`jI+_s(!D3@pr)mN_ zkdqf3VJW%oK<%mxsLz4xoi%#Tcf1Rxmtd4$c8x}vz=&Ee8}vMU-N8smWJ$h?D3_9M zm)n*HkdphEBOO{rz~MwH0K!7|AX|@v$b&=3ZwSe}Cbw-3GffCt0T%x|=!-I@ccb|5 zYVa3qE0Y9u$gK-NNpC1Idy2GL{tqP5S7c%%)aNxRX)84VqU^VaUgJky(KQ7Ue{I8= zL#IR1$>NQpw;3H|M#{_T^?DR#dUbO4{N#6@oG*_C)WHtZhxKlIMNEpoa)l$xpo0%C*DT8($S$DYY!iFo-idPpI?hlP$D z=Sjzim)QsNKE6O{nM=vk9rCtEgKCq^PEgI|H{13tu17(ikPSa@h9;>nE z0JfFyJZ93Dyh=76Sl2S{e*?0-@Ec@VBuFU9nq8!Gy5|S(oZ~JGc-(C+x8os)k)-wE za0(&F_Eq5E=$nM~Bz_a~gx<8O`zw|W!uE+Tw#gw&^K@(1alkgXlL>tXo35!jpYKSO zx3S6T$rMBOK{a>m4?mB>uUUO&WIBwl-;83Cnn$lB-S-S9$y|g3kjxR5(Gk8&!)=73=R3402C%8rv*u$k17#r6ePIp&Xp%ACb#bKnfba za8jgfYA-L0B}=lv#i=$$zz`BA|uhcrwok{%>h?( zVOIp>A!5IgN3__g$5OUfbP+fx4Lm{X+2fUm#SFp6r^E?zjDcf>9zQc-?3nBl0St0d z0fL8kQb_)RcqWvStHN#0i=rW+;dxet! z*$JeSdWl6ArUSdq?LE_^;IC0XdpaZcRV?J7tLtrE-XsG0zQN3V>b(M!)ZI_gYy%Rd zJ(nF;SJs%82d-49BwBSmwp}&SITxG!zVc5B<-7vpB>Tds;xZ2dzhXrbGeT@)L=%z)T*|+uemJvtjm3xgd zT~niUWz69L_d}aQ6cR%V35W$q0gD!D&q==IO&E&Z^>4yr{0IA=FzQ{rBwIg){>1Ha zQHwr?MuvT0e4H8kc1ScK_l*RN#TbX(kSS@%5b;wZedqgM0WfmDrr@bQZH+7t?&I;z zaVgMoiCPH>=?WC4mS@c&7MqY6J=-K#CZ3ZR? zDT$D$1~n)wkNhg3ca4xoeA)Qm2 z8Th7%^5)|mJkowyPm3U?6VuuKRv;^2|BPEH`JVS{%{@3^kIE#@4GWff$?)`7;w06{ z#_(kPQ~-T0<*cPeVcJB5Bf=Jlv1MZlYHW_Kfjfm#^f8%E;Lm+f<6)(;f|UnLtCJaV zEACW)^>2C!s8AQD3tdl|&V#}!y{V2VABYawT79<1=}I0>o3qtmz`AN`-$zBkro%%+ z_HzA=<>mU985oKM%a$uL%Mt7gDF=^}5);h;45ttEW^kZz>=O;{dd%T5D>OT2HR)rafi(PSHrRgI)8M{)OR ztZ`V(H%!FE3^u#;Amf|P_Zra^uH&Ojj0f=DugdfiWeULg`#2nCNpMx1cGP@_Y6Y^P zaES7C(S^j|YgbPJ1PY7#(>2oSyTNyGtqf0jWS^V3TU&zgrFJ>un-0y-EtRJXOH4VA ziYyS3>$t;AcqgFFRxN^t--(rNrx*x}ntk|AKVIpaR=+QkG?9HkDRZ2^YXT#c-fU_a z;Uc-<@tM9fsjox;f?k4l_hsWY?bPF8I^gTzKfor4_CpF2v9iqdurjB9B08u#$;iXl6envhy;LU!73AR0uxmuXXk z9@H~dBAkE|*`LPS@Q~E=hOBAPcb@sXp9AW~LqzE_auwwb?)UtU6kPAd8$VK?K^!r^ zS3!4ohj+J78o|!{y+hr-2zV)g&DSxE*`ex)3r^W?p*AB(`yt?@Wtvr0)i3LJ5bN4| zL;MJ(G?kp@r=23>v9rLBQiZ1=Xk2;k*p_O#0I;1icu2*Nkq$fQY5!u#(+r-`q~GV! z)jvX$@8CrExOw;(az!`&cqh&_czb(Oe{>1eT-mq;$u9U?LE7@qcC32g`TqL6cL-UbpJl1Wj~s^ z{#3C+EE&?pI1=UfVts9JxAF|(+@Mn2HC+icP z!Uh+|_o>oD&aB%fE58_!V-vgmY7fwqbK_VQ(q3Aa{l45)$9E>ytV+zr97fSp?8?h$ zitZYz<#9-Riqrnmx}en~unY`Y(V;})JQkvlS~kogk&mimAzRlNO5j9Q32a2|b!OK^ky zDk|lTZ(zOzi1Wzo3iQXtb-#3UQl*vKOfBUoWCDrxnV^j;F4d12AomH8Df3-dd+aa-&M88cf`7r@QtuR1fxM-ut>H zqMimbiXEk7efitaLwe>cBCod(UG&A*uVv9j)zN*FZxv^lEv3ylDST zv!LBsSVxIj@k7`o&DpbOMFI|l@CSU>lyZOC zI?uk|5jD<({@qWsFwKZsak-t-tRCW-ktBK6Bv79zPLl-ZGZSRp3Pnds zkQq2&DEcSbZP7YL0cx^J_B>vsd2^~@1guV9!qry z9;@~n8g_PhK&Cz~Peoe}a~-mC=vvlzxNmg0wh<&47-E`v^^cuxr&$Eg)BwO*}( zz^rSmj>hSjpZ7k>?M=&h^X3-9yHm<~eM(}xH4Ya8Kc08h)7NK*q367}OQC`ZqcER$ zPScfIE^v&tFqj}cJzu9ZJ6h1$R#G3a=z6UT;4j~5-&Zsuf}wF z9?xDFK17+*9LRaJmjK23vi>dHAS{ThT`Pr67S@063H$(;cptfNlq`)MQyjUQoE_3Y zmTcE6duJUp3A5RrQ+qdN7VQq{o<~t+33nKpCSYjNm!~40r=Rn&Xxd*Em!D~ z|H{i&mbrB~?2T7Djh9gPJ2Tm6k63`^a1 zOJ5oi1E&&|cw=7L9izGS0_zX$_Sa>$N2(g9 znV00|sV{#d20#sYBt?G{~+saAl;p%z4ts|0+VlC;w}2xpy^~pM7Y)KtFnz55cDgYYzqD3qG{bcl4_VfCzCgSi^2igCJw)c!`s%yJO6+u80 zP*6mw0;1BCBGN%rL@5diQUlUEsPqy8Dk@0t9cj{gF9AjAy?3Mq2)&b#zx(t3zm7J2_Xf=1T=_=wXQ}uZ>|^T@&;15-`ok2L@)y4Pr^+=U!h2fy~aUw zojjsz-BQu#78}a=*6aP)pZm0|;|Ea0o*_h0M^@CD-Hal4ym66-iM~n;khV>`TRUpudyt zUbvhRu6t#!D*;G#xgo@a2iewrvN&Io5FK}(gn1k8Z-hF~D~QAtM2N>0Z7ymzB)6rJ z0Zpc~oitK9$brNDnzz(7y6R;jM8KMbp@;GGvg4>3T>nMYp4G;>KX_|?pyYAQ4d9e` z4sIu(B&$E)`0Go}+}Cz8I0y}dj}OI6fzIqrYaNl=SfZh_a^az9B2J^5TsZBX@XjMchsTU+&Uq`b6oT#d7ff8n#|B=w^L0iTS%ZTxB; z(VnQv|HQ4DH9ZtA0`A)u!y#gZm$k9)Px?WGg~_EXsM070dY2p`?T6-BhAwRnaCBHV z(`zWs-T*=30uIDq_v1nQmH3#Z3+$n10;N#fPMeZwD`N=1PvmEVc6vrVlN=FbUD5R%5)Ai(O-zg|$AFOmcO1RSIYg1@jSU&@~bQG~I$#dW#SC<|^JuW-X|2m{e3@x!3_eyEi!CxEX<|v}B zs~RIlKB~6yM5i`|e0p_nzDy$pYKtvDA~T~-EF z5B~Rya|K2jelvJJBPb^2;0xb8?c3D0pFln`{VQE?v=bRbdG{8f68;&;b;9SPLQY){ zD0|Cb6K8J_d5&)O;bAd-l&iL_nm{#|?k8!TuZUC&{>0!e@brc11!0d%fltsFd_A&_;Fnoc(SD6M}gS#%b$=LpyM1^;dDkYaJwKlq31Zp%(X7{~isQ#|!A z#smh)XH8}KZ3RF?OJTq1wU(_j=x%^FCMCk>_W*z>RU$WNK=DiAz~ItzQC&|4mud2R zsR^R#Utfy7+*JLnMjSr^YF#EdRs+0j*xhp<(RVtIAc=jS{y-9&O>nlU2lMBCDi!lW z)tK^JXE$#!aRoLKGP?!bnJZL%r>$>2fB(w)J27g`1npqGXz#3g-fDex!}YPq8#*q* zBe4;eto_nho!E+0dB9aOAap3w-FE#A;md#?7;L>u8K7-lEu>Q5xyOWh+r z@F1sD-n5~1{-!i{LG}4HI?fnpOzOu#Brh-jeXhI5OAp3XD96fAwXs=GPV_rS58V7$ z{3~=7``Z`Ax%sify`!3Yjx&;@i@{}c`FHQ9S9s`NQ#1*9+pLp( z$^Bom$XIUzGAHf{zolI5G?8&H+;Z?HNT0)=e!2&et$C8B(=b8e52zj8;Mwk!mY&8) zRRUR+f}k3Vz!u=itfypZi7}wwN6(WHIrSsl-YBGqm7n3(OGB9ufr5bIe%0ldJfxJ# zP%7=LgCT?tNcMJ}N;i7NGl_inOhUt3&t9`UPLp8rs@cEECjp*^ei!~oS#LF^KQ)KU zNtSg5DDTxt^PH8|yLKFLT}pOY`Hh&W+quxGJBR160N>AIQh#+n;Tti(oq+X~jwQYu zf;SEi_}doXUUm9eX-SU@10^Wj8xZG!?av}y!fiz8nym$a6Be!+U2!GggS4os$Hisk z6LI+82=c(j0C1K*ur{5<6Mgs>JI++=&eQkeISA4T)Ofc|P!8ig`_Q2mo|UB#B+kdc9+B9*jx;Wlp zvYLfLQ3mB$ipNVjU;4{)YbrQ~^({9)O6Qfz4Udc@yE(lNLAf!f+ha57L1WF#EFCk4 zen*pf^;yCh2HgvK@SSO>Y;)rQ$X2`c4CVr??pc=Bm3z0|JXR!-C z#>0I&pw?Hum_cD!8%F|32aM)Z z>n|Ic&dCLM3z3W#{wPi>k@{KobKehjhpphy;o(a<3m4NbS=4rD>{W+;U1m{Y;6!U? z!TFj*?=;W>slc;1pq{EUrsBatrFhs@9UYXqf*3xT3$)4T5f;lf-y)O*Q(v_m)PFvWkYO zR`x$dd7$37ps;S2asOXx?JEP^O;te@TDJcSETtgRD4aJh^pd_}$}K6caGgrcWyQt5#wrw7s&}zv z&bVcp-IkK%+>?4~C-fu|(tc}7bM1K|3R(gEIDU5iV#Aj-aKt-n&WDLkb>Z`=OG z^&B41@qh&MLfHoyiZ%~^Q$epNOKfii?Bk|clv~<_arNUil8JvhM+CL%pU*kWfpr+7 zzL~T$*HZZ*^h|KE#lWX>a_3*ZW>5L-cgJ=cvrDnvdvU7H9lyjGr3M_l#Js*R#zF=oDT8!6nF>wytNI_~({>I2bJLq(cL7&DLGzApe( zNSz#SFH>*BI-d6>+ywOx3fSV}@Y?k8w(YsUROQec48qo7axAXe{W%(RyzMBu_`YxUITM3L0M+bYk(V;%gnrb6@$129k0OOOSS)U- zlH9iP(4b^A^|8N*24p2UA`n_dW!p^T6vEY~fsQZJAg7pvCE{_VUy42j(S2Y|A%cqX z_o*9W|J9-Uf046RbRJR^i9T{bWuu2^AT?q849!KJW7wDzozf%q`c%;X{K803BkY4bUKru$&$@pK@?*>YB?^ zdF}0YcF!blJNk;h838PYbDf_=QQky#vUX(5`~T=F&kk@X@Pppq=_BDzzil#LI2u>! zHtsB5s-3>}q4TW? zq}^BOOox}vO5aX0SZETMNFidx1g~6o%H%ac(g*zNnY(!LI&E4{i+^4M`0>&X_(eiK zUis@ql-&iLrt@vmm;VNZ|6Bf0V`{WW}m`{%t5fiizb4qy3S zoUzGMKtxGh@WlJWhF4$PCrNa#q&N5XgXs z_jt>NckErKX#o=R&jW%Z3PhL&!bktw3AXQnf9HyV-Tmj;!07{e-FQv3evUIgO2M|gAY===t0c;a6!8c>qEA+PE>1m5IR6k+fbG0Y@Wr##I zOrcUhJ;57w_uLYBs*uV9=89na&G&FiW2A13KdWok;ctSt$K=DZ%v*ku?0&v}TOx6{ zQ$d~x7D4;yZB+nsqYuqFUDi;_%jB`ttnZ%4uKv7zyX}lEUjdJ!MgeMJ89F02*2p;~ zpVqS+>(L@t5zA93FrhPpYin;GPB*NQ6g6L0{#7w(lEiagXPEm9C6&14aj~D5fPlUe-XhTEti#-SDFd>q{2gwM~5ifYka_ zyZ2ftD4h;^zq^M`vT`-(oMZLHg}65erC*X$jw?i#x?9cz0(w9~7Qf|C3DS!XPP(rd zsu&SB??hhZ`PAK8b=1kjOQj$Z9E$Xp@qpC(?7cm*%J5f z4eL*P`>>BHqcM+CeZ#9RdkynlJ$zrsh?a>}Hk;rMq3oZeA=K9x1+G{Msl$cT$M=_) zjbr_MlX}u{&N7cU{ezFYQVA`@B5yZm3{242$S0nbu#DRF)mxuu9Pfe5;!{Id1=RZu&z;g#IR)A#`aZ~l2KO{*RmMghHQUD zu}w#C)R*ird(8unv_33dLE+0Jnh2cw1?;9-y2G3aZoy`wYs_E%NBgDp2@M_(6ZY8D z3YRo{=%*~F1)ku3g`Vzig-*Tt zj2SAHD@jV?SIVsSo_a^@2XeY~ExZ&QC!QS%%L#hG8Lt@cb^~b)HC;K$xIGfz_^DI} zSv2oovax>Q%*~NSx_9~z@rV5GB6U^v543iQ-%qrP$>8##MR2l+^OaEhl$AvEtwW-x zG~`@DrZPlyq*o|~#34(Q&K^^g>kdUk9<#Aad}cGqzKU7T-FUAt5u7C+zu-dCc#Vs1 zpmj0a>sOTKy08$bnnt`u%*s6<7I!s2OixE!tXJ3t_{{0X@H3lq5eSM4VvgrNxa(Ie zU}+jTe?;?;>TD}^(S50QXj@IOj9=%U3BY8#6~Bjsdn3nbD)iMCnJZW}57&H)ZG^KXPoq5iI^*jaNF3Wt5#-+`{ToPCYjrc=JiVbh8VF3idp6;MQqodmNmXYg6TsFi;R5=`><5UedMs-(M+~g|9xhiar8GCO$n4Qq^N4p3z8#`W`;6GG(;ea4wbg#o5+_5$1pt z51&24r*}y|j!+jgvTi_u!!DX+4t>hax|5 zOM3COJd&knSpyBjrQ_ju5i+AyiL(yBu7_#Pp5{P}Z#zDCp7}y?o0WuwWJ-Rwey21* zJZtlP`p-HcV-RS_i5(Yfn($w7zGu0fMcolhl~aBEyGggS<|*8I--X3;~FDw(V9mXGCOr$WZ)n}c}AX^_a_Gx7wLR;|)~ zSND62eLzo$$)SDhVW9UH5T}&9ja^Jf8lWj`nmCokSF1uY8=VWSBAxifR^T?_2||4~ zju0#gg|f}eHu~{l*{VBJji)rsk%P*jA>baXzfNCYJDTYB9a%r?Ga3wImdcS29Ec|R*w5(W!ypg^1g)d4aWR?Rc&bre zm!ZJl|1(4S;a9mul_#umZ%wC#VVaQ zwebgDBoXWfJNL4IA9ToxySeI(Ny`VQHPauqb8C5b*78KwYLjB$#sWD_x%vxGXd&bh z!zBar#4A+jnSUN*{@YI}dgROaFD110W`&(1gpE%-K-f}KsE09fn)*-WecYYElE0Nk z5J^IEwpQc$faaF*kGfgeRz$_;;<=vb^@q>|%3&oQ2bCDWOL?sCRxk<5Woiw9ahd|_TvQE`lg zJj*>U`6yUrbpVy}!81+AVUpLMl-tSX`9rV0-9g((Wtq&o%>DVNTVP9lvO|0$W3PT& zGGA)5Eu4*Mk3FV|4#sY&5F%k1Ef82zt_yw?Nu*em zB;F%q|012x2fwe0%goYNwt#lWNSq=-!aD~*WQ`uCPpcu@3XrZ42rH zY;$so$$j>De1G89k=g~2E_Z^3SGJR;$go}~e)O31b4?K!8=HWo^S094npPigw;vmM z1TA+Uoewev&Udk1R|2YtWWB!x6a>NQPR;vNd^p2k4$gXZ7z*`avf@j7URb~n<;Etxe{(9xK zDH8g=2i5WCCw~HF7!Z>fnPACh8=IN}EN)k40h*qvYmgIzj45wn;HT3ep z@PNBrmz5Ov~Ye!8&CEU|<5O+1$+y3P#fD${GN2ASx zH?uc}a{NES;2j7Wo1B3hBRbU?eS8HAoZ3+*cL4W%?4VY1eZHQ2dWpy}C6wd&~YUnB+nt3{!q&Sxq5Hc?c>!iI5+Z0)<2H1 zjRo^Y(qq_ps_m=xV*7-y_AJG$K;=28&{gkTlG9RJ`mMCuPOi4au?Y!fkMA(Mrb=q$ z-7JGRl&Bx@U?qe<=dl+tp1r+nYY%Bj`Z;msi{kc_4drUv1S?tv^q>glVN#!BFx{|H z(y44f5}F(&E#2VP(bA&q8KiQL_#9W>Ym-oc43&|!j88mg!$l(l`;C-+PvH{GZ~Q{E;Q53EvaO(FxZJICg5LPO6?6}z zmGVloKmStqX1xH8;ft+7y1&v&_Ol=FWGDyqdcC~D>ecJDGDGE~nG(PNRe=LE&GERVn)l{)D~LRu@~FR7gc^4!4>Cn}ams_6@=uyfwiNs_9S&rtTe~A(>CnhJ7ssf=NcO6Lm4$Sx+T_Q7eL)`N_U*r4cWUA!E30fnBP02zPZKqA8_0Yozm9zHE1bxMNYUT6 z{HCFnpL18!fkk?E$RhW0P~h*t=b8O?en{RX+3e*v*C-xUT2C%0;D5p``N!JGgQ`IA zR{hhZnX`=@9pN@mHI2te=W>ceW zf@Qp#XEGro>ir^hXb8^1pAkBGt6;)Ibr#+MzZT4?7*glea-y=iIW%(yKm}3p!p@uHlK@cp?FqnUBGnN|Vi;BZ}+`z5R2f(ngeR@|#5wmth#{9UTxu?$4{J6 zczl3}=M!+G5Ul09b}it#>eWvtmtM#4QH$^mKumf%$n+$ZK zI&b)AX2T(89LBoNpE!BicEifuOx4ON*7xGAR=3NYe2g|V+a*Jeql5YU##^QWxKSu1 zfD^k}6v-ms60+Y5A!T_L0Q?t+i}MHb{iH2<_5`YRYdg;!1jI=m>#>W84RdRa=)bVPs_l?JWWBeRShtL5b)IO2Zgn-N zS->S@&@B)h6BGh5JKI!bh8ENDDv1(1VPE)t8u6DD%<8GIN4A0c zdpmFY)cXo3Q}G%Q=3n3szSdiB*I@L)Qxq>*%wBBLOnr-=psTjXIznf#(B!sGwab@L zT&>hjqeA7AUC8&Qz=qVdRFYJZqp zu&syLK!Pll#EaCWmCRh8gU8`K!e||*I%ky%SHnbQDYSNp^~hCHmNyA84#U^GC&f7v zdQ9S>){@%;4J>>&sVM!K#58|>VPJb4=5|55;q+04!k#8wUkk5YxY0Q{$SzcAUZEqq zk+-lm?@T4uuy*|nD!y|0IlXmRuk@vki(7Ylhz)%WL! z5A(>ewD&DwoLL&Va;vVQSK+xauQoo-{nk=+6f~1;V02FwIBnv^tzGs)@?es!$-d^M zLZo<;FJ&@%L5B!)H~-iExvxpvrn_vhMd*MP0f*h#lR7(%N&YPybkLq6kh)O`NBx$t z7g61ynE&zn%b73v7#&V3b854q{(xLzfVd@x_{+_UHxmZiYvmWpP;zPU1q~aWBTpnQ z9ae>Ne)ZdZ2%Ir_DwzuXA$p5LN5NhBEnH?tq~ZT?VITq?>0^5@Jw;M6GR30UbOHv= zDBhD(bu5urgxT_7(=}Ah2{KvK@~kg?pvk9S_)GJXzmuFCd0M_La_pa>DXe|Kk*F^F zs>Cai5K--!JI4E^`c)jaFOq0Eve3t1h5+NJ{Gsq3z3a1tLP@NI3oHLWW0bVnYbmO< z-|%01w0bJSTB>~z3p3j)I@|4`p{K(gFM1VTqhPVvd%c}Z)D_E@#)dpV=6lZy!}p(a zdoS2djB3Z9W|3^I3dsEN#UXbPio?vP!w(<;(*G=3F?+kBy5Fw$Es=$@+^4T!zfO*L zjo7?y;+WuP4tAij8}@KVZzXy&T9!!R4suVbrx*5%h>3}n`O+U1<0?SK#~pKO-fNp> z_Vj|8M@*uay_0hFiG+pPmg;4|B0>&|yNtq5v(las^x2WZq?BB)M_eZw-z{8q=m0x}{(i!S6 zfud?^Z53Q)Dm(a$BiA|afKBvX3H^TjgyHa(?CuLV&I3*FFXMHx$@9I>&Wi~T*vY-c z(pF~;4L#AxwA&%CzbuNo^-;Fi*^uVYj@i9=uZt*sJ0xf6l` zgglbO8p52*Bbb#-q3C7DwnTrior?`SZUWFL@`ff`1cwn{&0c{oz1V{fB0B?^i8Egv zCSGrJ@dNos;b^OU!ZCR(odFz18j3#EBTU-#agD=rSAtZY0-TnZ8C&eIm{_l6Q_Tb2 zoBqNN9e3q7?|pckmp81iBToO-0IO4jAJfJFe9Wr5bj&4~(PK}4Y8Tz64C{G6_rqT@ z2u!~kIUxT0W-&djG0~gp@^r(O&|J4!Z5jn6MY)p5tYP87cZ!;;930tv;$qv6Iitq} z0|shwDRl8dMr1SFLx^}%<5-L`|0ZXgQ&qAURbYBE_VvDxB3DiS z)5;~_gS<9o`QoigdN$^xS!6NIq~R?-eAP=c&J{~YH&~}xck(BG{qIgR^Zpla-KCV+ z((B?oy$Y97uGwz$0WiMv#MlR)A%u#XyNq53WrKTSKWMkfNz1L06Jt(&-BedPC@;=R zOWb;|feIV-^*x>b?FAnV=dy)IRCIK<>=}mJt;rCl-yG#T!^oM>T$+`q7Vf&!4|Fxe zurl1XyvZ{;oIRUeIuR()E-se?|4julFo&LjnpU&txT&)ZjZ;4#E9ie4hL!NaZD~v5K}38LiPinU=x{ENSF&jm!A^UsJ!mS@J12KfF$pO`{iR z7j&e0gWVCsUMU@S@E*b*xv<{<)?;2*b_O+peGuoeVYk2TU&H6@?0j`3h7n!YUsP0r8{3xA zj-Bhk)e=u%J-dOd9x7DKEaP1q;NvpB=Dl_gGOM16FmN z%V|Y1%f%^Ln|=MO4Ax~z9(!J^_Rj1qZK~*5WRVBPB@+22-pt&bzpk7&db#(OgoF-u zv)hqErI$o6=VPVw88 zgQf-DfgVMCa7l}V9ttH0R3b;xWPKqmK9Wz*m;`>5vE#>+yHB#K-ghLUy>KB4yEHt2 z3woS8U-U%Ej%YSB7yD_xGwc#OX+`?H(j{#c``)ux$vh6$Ib*!_xn>f*nQ!w9UedEb zy3Qw~&81M77;jr(siOJ&og3{D?dJOkDHfsV*jF3!{IBQUxBsXo{jhQ&W*4pHxw&kz zMSm>T!(p2*M!d!dHEUt(F$wEYoN(qDX$*92c~2L^7p~)CXY1%5@FE`4dDg!MJ=WsY zV*dahP!xZ6_0p*Qz(iIb503{|_9v5gOm4YALWi&^1WRucr(aS&y#psMb)RR!oo*L6 z0x?3U@zK=KCS<7Q$?L_4BBB!~izKryX~Ir71tj$-lk3n9?3W(!$$xp)uzeABOc&jO zOqN+f=2jbeA~)M{6&e>_q>(dW>ZcvBM$ z?$R$ql~&qAd3usGt~%Kfkr!=BW^2bNu>E4uc5j(A2R+8sx~rO#0z> zm4?-=%lA9xNOTj=qbA~U3O9tU_-#;3Hxp{B5_f}1C}trzR4MtA@}1vzu5a18L?vbCr&b2?{!X6wzvNJ61p)6 zX9hEB_e7E%jCHKQtOdAg5DB97(o}OsFLHsA?FA^Y#dp zu7~uX#uXwG`mDZX3n8jXuNJqB)1B(g4sMrbjz@R9-JlYbHD(s(m*UEIn z*yU8MO+CKai5niMF<;@G5C2+;MLF(csXQ#3F>N-jOSaCe@vFM~OkKh!aR*T7b(?C8 zpGKA=WXs2I{BrqLH*jRo1A#n|_@m?K3yx!R%%dAqYR9egd3ktlW%q+3xO!?tgXq{J zqF{<`XtBC7As+4w_qVq3Bg~rS_}!QUz&-7dc$T_cb}&gl~>{G(cLHnmA)w+2mGu z@KIph?ib-P^SK6*F^3x0+1ZWZ%xnlX5xN)`BjM`T8Y|Wz{!YASK?}FlgS+5P$=aQ4 zq`Atd>a|wbv2Sj>X=}9n&6=rCMxbX!7*suO@WBrO0=-?sHwczr?Ciemq6QU`~r#x`ZEj^h~b1a?Qb_4WY)&@0UviqD!CELG^#PsMl) zhbxp9ak#CZHx=GWnfEqQwq&r)o@Tt$IeNJhySdk@j7i+{tM)0duS`}P0;6dTXL(Mi4i{ZS?-i^P=Wf=k}P*S`C_8nYj00Y%JK zW0ae8vb z%o@z$He(8$4^@Y(+LjLu?r(QMCCxn#q;UJYsgHwr2l#Y_N7qPI9Ti#ZXU?MP4y$<5 zj{tBjt#=`r-$6?JG}qc96s2#mQwwJr(aWz2?$+u-?orAD#X5 z*QYqXZoBUNmTMdP1Uu1kuksR)EwgdWcK?W&HuJTSw0L*k-BDNgKL5JEw@ zli6MP#*BLZ0RFI;#ra#(Y?OMLd`ogz8<2NQv>mzH!>>CTs$k+%fbSBnpVxa9zlWa( zHg;jKys)Cj9l5yZi98{L1LKHiNu>_tZOhx|>Ad}F#9uJ1D49+&T)ZGKidx~u-;L$p zyIJ1TBfc`md(*y1Jg)|0QpR6A@qsXe@EB1Ox3mwGKfYR0bEl?zYC=w#uWv;k03=*5 zhAiPdIs1hKf9Sb*@y~w&;G~N{eB1RXpXsPZh_9{6b5Ay{qm1p5cj~4qhX5PzGZXxL+wrBZwb=k3vq*3_sdksgA0e4?7XPzbK3a@;=$U-E;dETe29_BUGStk)Za2QLyb*(lXhsJUY2M7Zv8$g zL3%xPU)q$rAy14lLfqjiYqqN(zgJ}z$}aRZf@~}1ZOPWaz<_);&7Qzvzml3-j}iBl zI9{G3;rJOD#nrfi6FX8*y1Tn)>x2EmK@Owwj1)|B(3&kr=u*QsKTJAr8p{<^F&uR} zrQL{4dB6CB$tM9SM5qheXHfQ+UZ`ENA8U57iC$TX4h*E<_OK+(`2foyfo}kBrp|nn zZYJN8W&V~kRE)TGi|M(OdSeNel38%s6cToXkd*EKn1bCb&hpCvK}47K284jbGmmE3 zokdYz&7yisEyR{E6=s9l{^Y+G2LlTx3_=XwNt;tF4c4?hvjsJFekj)aESH$gIO*4s zMcP5(DJ9E4y(T-*`1NN1@>BtuM1V(oT5WzV+9v$-=k2;TXnGyTO`cLxI-6l_`WTZx zRq}Ie)OL)xdRm{PD{tS95J$B-t(kR8<-(t-tG6I?;n%@|zK2}D}DX^1(blEbf8Fu!$SJ7 z1_yA!#DgG-<5 zUwchT^t1AOh_5|44|HDKp1hA*{<^;>(R#A$OEjPYWl`Qs0pZL-S=t!@ObfmYnh&v7{R^TSdCs6~e<4q`$;ln;cEQkZ zS)+Q-uL3N~b5?d4ox3++Z=S)^?S%((sJ^h*9UMLyGi}m z_mv|OPKGUjt2PC;iSxV5{|!ztXPBZ+9h!q99HKDHJ(wxRalLCEhB$e z@gV>;KH>+ojG8uG{Pz~ecku{yg!U7{=k6##*lXTvlqZ0>8UNhmfB*5sMRX^!+F$Yg zU%==*E8gkdDI^@jqnggo?Z7+!f5I%?%6B?o!0?$v(Bu?~U_z`bB;5{1sKrIBMfnb* znZ$X%J0D`-wz09X$R{f7s#$x`PD^xD zh18`8_hWc?9)43$XC8AuFgR}r1*rVm#=xW$D2~X?Y(09|#7PrQCMZ;T5@lw#pz^#} z5sbeT%k?K^cU-(NVy9p3WqWXKk}L2i=@|><5bi-h>e%l9C&V>^~Rp* z8h!*J_;+`(5#hP9c8fmJRAft8IYCi6LQHeX$TtjsTCD$C8rF2;+gZ7`3Fnvzr~eiRJ#Lw>MT*~Ro}>A>ZaoBWtYQjB(?qW>V)R%rDYp^kB2 zUhmsXlCAqXUM-}L?d;N%(_FI(P?)v?v)3ulo@LSKP8xLu9N`iZfq5jKMNE>h$4kp# zkI_rMOcpSPR+jFTWIjsT>>oeR6&58%w5%3*gmr=ulR3Srs?msLDrJ>|h{v5a8La6S ze&tYNC5LSM5q5~mD&I#nwzP!j8~pMyapb~Ds&cld!(ZjZK(XPo$sk_NH;{V_AV-#O zbjMRhXwQc}4BjkFD!heT9$t-nRoD=hvg}4~pYQ&k9xKU}89*oxA)?Epl@V8{7yv5@ zUoD+O8Vu(BuKTX*wl0kCpJ@6?VK34PnJ4dyVD}7wASINig7@Z`OXBP|N3xZLUEdVn z?frS-555$?=db4+;hBZeDfx-FQZGO^@{}nF;Z}3@fSlQa^mX1FLhmu4o^k^bBk+UQ z>7n_-UVczm*i{y2Rc+CMu#gZ?lC^KV(A81V$A-F8WF`M!$T1ZN85Zcs7r=~p!+O(t z^j=fTGT;55?>8n-I6CHqR_|498aIQTd*2(QU0|449fYUQ;5YtO1|e3`yhI5wqB%fb zcs8m)F&P1u2oq5VNWTdF?;K}9V3{lcNm4%q10E+>xXs&gbn2XA3H@V}IOle5vDq1# z+31O?Yh@lF0}-u}`ZEBH9nac7jLXk<0@2?@rGml&qpt5i>t5lu(gpy+Lt>?9t`vJ6 zOiWJ%_?NpttU$A{?d$!=ttL9|vF|*b$&73NfK|4lfCtWf`kEEMZ1fs-tb%kzA70>o z!M=%rUIQJr2y&GD7Bf?^T-w&w8|RrWXyiV=UpHcYclVHy4f5UkQ=nb&5+fo?B+nKQ z9LxqvkwUY5PhD*dvp-zM@ zBHW&?iK6-cBs(wh84I$b>+Hi*u$7Y-So7Hf07g7Keyn!jxPB@`G?KBum(G%bCIk`V zj*}nZ?jGW+bT3CmZV<^|?o^X_0%j0+<^;=id(ih(_%`S-F3jwFY^h*BdU zo)6^z0_+e2lW6-2Ko(#=gr73x_&bqcU{Qb*T2hP&rV-27OC=v;REe{*G6W4PdL!C$>o%FH|DzX;dm z*g(x^CrCY+Hr2$^ES$ZT=Aq*ESUys>`)Z?Ze) z#;MOBaX-hjMQVP3jU{062)nTd!or4zP;Ib4$8&|%3s6RtsaeFh9Fg<1ga8%rCO`_g zmJIZazn<+(fSj-@RV2n)i?M|ehT8v?VOFqC_Jbcq;)yRU93Ax-aO)0@AR4fUlRF7g zZy)}3=Qt3StkTQ9!b7HmIOeJJ&i%WF|Kh-tsUMbrFFyL~i-RB(GT1b*Ar89B`cwwD zwb0{I?>z~ZyVyi{;sk%Ndw16<-Y%xqNPqRjqE|4{^Hg=vMTkK!0fWsdLd+kO6cKXn zIB^AArq&^p+liosiO;D|znZ=D3zEFYo zJBoty@Y%2tuYJ=vuULcDNOaA?mWkA=9+(GXVrcl##ie4iH2w0+2l-Kp#~XhbAMQ^( z_aiq_e?*Jv?(Dq=5O+%|4q%+VtI2HsnZQH_$54Q#NW5^{DH z;0I#iQM}@pwo2o_^H{(YvldLXum-ozganHJ_frA`RYb9+ZhJOxbs!80uAWgjAgAu> zf&OTfE}fTKhl>)j02**t$_kRsx>%QQ`%T{d6!Gcm-fE7Sse2>aGugvd<9{b^vPZui z2x!j^LH@BBi=rX+{@c+#dUuEBC-pd}k1zT?JXxQA5m$nN_}?0xfqE-gr~* zHA^V9RolQi`o#3UcMg>=5v^zqbRHEKGmrq`IRcMMvsQr{JJE$*33x_Snc?`zTDK-S zCB?pc6c*@KQDx9bIlPPWbg-E_Q`J_w{Zm&01X%&HnuVZm4=5%DVSgOaaiI4^6zka2uy?Fy*Gmm@`bh3cYL52`_Z<78L&3KYLx5a>j>{JH6E+ zzS!QwW8(RWwetiKeY;l4>rIpx4{jlLPEAwuMoJ0?leMZwxjc|q6VqM|J5P+U7NH3t zaGF@@fvE`o&HeNNaRn>2)!M{+Zk_V$GH@VV#!dd+pQ`D5Dd%-PjpfZuR8lMK>7wLju=B;@$C+QHYeSU_mi0G$wXxD=pOzA z6PKk9%8jodE^-$zta3^9x5?PkrEienvSpy>lXlq`iXY|^lKgXc0P@~zX>#h1nbJ3i zaaJ-=RqbrNt~`iiV9zcb9{)@|85x)}o2h}pe|oTI;yG0C%>YuSl)eIh=cbtH9m?QABR+)c>pvlGPd+4>a!2YVJlnvd}5|7Y5veCODBYE3oBc7yf2r8iaCR0V*$^qCQ|ef zcw+V+uMUs43tp28!QDg-OTI9#v^GI={_6ZH`TdQfJgDFpcqt6|Bt-6a6U4?mUcSFP z@Bcgib68#as0)6r3s=cK)>#r40Wb?(dB5e;DT0|PQvk=*i1XbPYk(8)Q3DAqvp8oLr+=k<6QjEH~&)KD6u=Gmr)_MGQ{J?s*y}O(7_wXffPbyovUtb*k zf(-MYQqT08Be*yrCnqPbML<`IhKJ-N-|LZY($K__w<=&nJ>Ymv@`!P&wo z@%N7h^1C*zw`TK4pQ|a8QxO~`bAQjHl9_*FP?&~l(3Iooj4jfmO-wwK_#;J?Q;5Q@ zwV%tV_G2h87q=kya8CP?BF(Wgu$%kxH)Yp&w(h%^FVm{6sm#BDTMiW*a-DmTeyj~V zmK|Q}mD(2Syx=PvS88fAa}+avsr+F}$^O@@wbf(3j$0jtUb^Wwl7+ZcJ!wEWFe)llCT)yrd54^Lq3G86SNoHNiN?Zua zJ`@~s^Vv^akfoFhMcjtLfSe4e& zvJm`PncHcwTla~AT?w=Qv};j{-0#Nyq1|Dg(8Up+;eK8Q29-zvm`IChXEmQB6V6~a zFOB~ta&F`PY3dG^d%qV3$i5JHfD48AXa(}_8fhbu{0?M))YWwDO?VEQ=p(rr=LNG- z{oW_0A1lnp##7S2n{`~xvpP=NJ_wxQIe`OcKzV5SzAWb>x&i_xOO(l-9|k{fMTj0$ ze+Z4?T|U!c<#=I%%9e%aZ+dkC+e)*00&?=%yAJCuMRF3gdj=)gPg#eYA}?QFtE|5y zwNrRLKt<&TfAO*Q=@qd`D?EYgNa@Ipws{B;SFG*L+sNwaWqrC?T(mxF6UmxY(XqWt zt``If``fw3>uPzHy0w)3g)KB|T~?0qLVuPB!RcSC%NI=}1a7r^0YRZ(0OyRco+s;{ zdJ>~{G`Uk|*x8wPaL?3SJ1=0_c`IP@4~Y!_>TPfciMbPh2710(ZFj=(<*7>@6dnfO zC1;kzBx+x#W?0VCgk(4-4jq43!lAETTC~iZrx@hop}y{@oTQ?mVdPigIDh^Bpq|tK zxnUp_maQ=`qYGNR93Fa=nRuV(CVIHUi;p+uqwmf>1Um~&4ddP8ZSUwOLw7FQ^0ob4 z@KyOiWTdbD0=iFiW$zJIGak?a1y;EX`KUHre|j3=dq6IH{X^($$rv!tN~ z7V!T8i0m~cWaW0O!v;KaldZi`uj1jpDBVBL`IQ&{meVHs^P^Xn{`HiX|L+N+|1asa z{~&R3Uk^+1H2)*vk^MDq*#7lr(p4%RRgF-YUnLr3=VYFQU%q5|{Xh5Gt4Dk73@8Wm zT7-Z9U#dkXLwW?2kq8}1wWF||N2PaBXdn4;0&-ZG^wYuw=WuNGo5?*52h7O-!q{q{ z31rtp^ZUG64zW%L1p^c;If7bb$H4kO&0+q3T^BN{VK?QJ1oW}~Giyxj!Y#E-3*~VI zJK71>gMK4|bW(o+Q5;KOIelDGEV*`69%A@+NpV)!-vetuHHy%^HPI$4Vb>(bBpgFyy+v`^Fpfu@ zSWxWjCmLp|8Aw3cP5thJWfIBzz#~MSry0B(a*8mwxbKiAU1#?|F6b0JElYeC z)RC?Kh5d#8#<;UdL*Z1qV2jyM-}#{Ma7gJ(3!||rf5G9f(BqArE`ZN-WqXEHoyKp7 zkRZR7kEUxxiuNYYpl(!AV`DffkR8DhTz#-z`n<@;At~aXc_6bcUPc&qq3Xj5L@~3jCaa4xe@)-)= ziN~p5_5<_zbVu)q>fNGz3~}9Ijd<1CkXwI#cHNse%&N7*i)5g;83G-LQa~}}i5?)B zUm1JE8gWlc1U_fH8cHU&^i{cogWF;x@@|AkHZT&>TG`P$Cp^;ArY^l&b6;7=I>dde z+n2Kss`eAr$4Dir$7ZM`EV;G2ry0ciLq3hyGIvcAQ_uA?R{_(QnxyEdPbI3wMvL0c z7VC5mTjYA^XSF@`Q2kOYr=AdP#)CnJjr6z|pS#9s5fB?{>fotAL)GpG&cv*!9H~oq zUQOQk+CI)pL-c~qYPA8{Go@ih@8M3^W^bE734bB>bX2q7@9Th1Lq*Bp{%uFrXX}nAVU_mBEx0Z>d52B6aLC; zm@8gUL^%w(lO$h0dy{l$e*6r_e&jVj3VITRkV+v0#bv+|Bcymia>2M{+N?Jc=N8&j z;yfeQP}8A2m!CzLRG?^qR3x((;Y5JZWZd_dZ(3_pL9&hnJ(?k|W^L8=Hpx?j7qr#o z!6m<2{`~yN1*W+ol0h z;F9m^ZyKzcwl0-bckur1Y1rEq4NKbVQNwubLOW;kD{Xcy-&tzyM4*F$1BdrkGMtd- zg%%q4DzjZZapQRJv!u++r>D%Gg}YhO>Y610^iAQ;nxxy%Gnv z{(}+Z)W|5$-X*c6%B%bysYXc>Mcx8Oil6FUE z%fGjN7b2Qpw|?4lbFbK{KdqhdB>E1h0hynS`&v-utS69uEYYuW90(-KDLzn9n7R%H zc2l7PEt$iHX9XwvNCd~}pi8+HMw?XjMtjbt0_?fH!}`fKJpPmRZ)Zi{DCG?#rY z6om2$+N5t8nP`<3>L(3bMb6DJ2{VY}Y&(0W-fDYHZLHH;cY0C}F2^@*a)`T{yzf^; zkVvm5cvDlP6jwalU^42EUtB*QqCk6dsWpGPWqWFP-rDzN@8jsflncKk|7-x4uK_C$ z>7VjiIE1T7 zd1iYT;{aQ4aBCO8F=@U;;F-E=BVmzf-|yi*nm+|J9X7D0t|oZH{d>AI!!&)%LcmpK{Am$YOfA`K#@K(Q(j;QT-}P66YinFFYKTWD#xOWvCCquu+;diV6~I0t_%wJjrT z3j3bchQA|Tbv2WalgqQr)Vtfn+h*%Az4au^=op112WjAbm8O#nH7WHD;SGmw8k^Nq zGpQQZE)>DnkqZN5EoDY*2G^F>f1FouB(HPtLWjN8=0iMY(=M12huU_0c0VnRFH(1y z^aVWuSjc%Lt=#MV?4XOs9#h&7+MK3%bX40|zW=$;9lW~FbSr%r3nN?_%Pq^=mxlqm zX9b5?m##h%FGUpZ3Vy4|sK6WCIY}QqSdRxXtlT%5spQ5@(7_92G*fuTbQoi{BXW}z zWz09CQo%rP_Fi>i;2(3TW|}>UEudoVIsIG4p~?HU?f2~_zcf9P4Uf*#wumlzoa|%d zs-<5O_CaeWreZfLU0qg9vT&XEHw|+kOQTANpw4urt590Tki+NIWw}AtiL!rDSPl!! z+8CH#_KsaCFR{y4>B%brW>{dH4}3<7(R+RHod~C~XjMb|7|cZZa#O~^&D+~ZP*Lx- z={JlrBWD}l$r9QeJCG=az7iD1?NKAnb_JR&xx$j%bGLS-qa+F{N{zE@(gNoZ!is8E zyJr3q;L^}RePJc7=o$7BL87~nl#c1hsI2=qn7QCY^uGgWhqh{(S3|AU357QPun^+4 z@6T6{xgEtKPJA{P>PYx&T|So0h5>S;%^v@$Dsh`oZ_|S(Bl@d0tPNE3=vHy$M3eu6 zL0<0OCc<-17Ni051SWw>Yj?#=SM4p^$rp-x5*cyL!PmbRg}KG2XwheL3V zr_q#ZBq$dbZ!|t?7;WbwPccX7+*lT>^dVdS+k*$aP8u9}RlD5!>l;Q*@2L?@AI7o9 zs{KEepJ}twWfYd4NWnG&gw#SI%He&XIkOG6vVd~*SOj4hbd|#4VF{6n13adyMxWOu#Lg^< zjUMb^^c&+ohAW)HV%~^0ZTrKu!ZP5)_?whF$dXA#exvT)-1O(A=RZ+JzLe1J)Yotc zmZ!QeE~2-tZ#sB^^zp%r7wStT{97=hFw*~yaNo7m3iI%V3=|u0IWRSgSfMsWMKM*M zZ$4wZQ>5}gc1 zJN5s_$%KN2vEl-*U4`0NDvi$(&;CZ~SI)qrJ^-%6hNI_o^FULPl81WsTFIt2SMGMb z5rx*TUT>00M+B;DmunFZ?cXfkO0729O%kq)>UGBZb{jXTBt5^E!C-U_ev2jE7p)(I^1 zFNHm?o!)L)do^_dA6N48%0vYdq5oc5v+Iizd+%}Ge&upW4~OxKL1PU;^RXh2=At1q z-;9ZGS_XCvWCwc`cbNAl_1mq5&^B`WFW=oA@nqIV+7~@yv9hw!pZ3}k=^cvUvt4^; z64kC>r|^K&D6@K5ft&A(on-U3L~5PP6+JJ+9LGglW*}*_Tx;;gmmj z6qySlKdfIgg#HY(PhsJV3Avm?H4o5aHMXoPh-Fd%f!F!D=q1q>#ck>s9`$TaQCGrm zaK%(3s9m!i_Uep*pyfAbuB9t&)H%|k+YHe@m5jE7Y$ zQ+t-k#h!8_JoijwkLk+m^UV5-Y26jgD(|BWdeGDXIxN{+DrR441yCM>*to0n*JelJ z*|C%x;o(J*q?o!pO*n9@1DA|jB12I-x0K%)kpb3NNINZTH5m7nqYKLH3=ATY zw!!d*j|$6Cf@hp7oW89yB{pb!1ocb8V;)QqCc$wCeLe=4GBCB4+N~v*rOnc@@%Gs~ z&NuS8^^o%Ukh~?QoiEu@rX6mEu-Vi+ z9N)ahY{VV0S>vfFTokc5aM1Z0nfFz{sJCc$Yx41TRB+@Gjf_$6HMt8D?q-7Jc}c&U z?AU#Be5pIDE?U}BQBm63&YN;#&wlfOj%{t;*Ho@EHQeFJ!Q9|qt`v1H?N-2@?OGNI z@Em#A&bo3ctJOkm=#~f6aaFff_YKJ;mHtjT*ILp#!XAd7w6!~Hw@8A5RGY4K2EO0; zIkXi#A|nk#5WnQXw@umD3Qq@9VV6Ax9L zb)~6h+9>COjK0pjQ}%aygG-K{tA@GV2_jtR-bdy69gnIXh+)8XGb?n$5(6K$e4+h!vUB-U??+Lw4q8fiq=#PK_$H;B5pzkp5$yDuEcCVKTZaS)#mc15H?O-&RgX z`3k@kVlN0}Wo27*1qQdv3%W&4ivzFHHI7_1N9|6R z?ES#tJ0`pE_wxq@M#x;IW{Rx<1}7BbFubR4ax@z+hLDWNoh7=-hF;XdVihe8_BQ9E zw{0?Hpl9wJ3bhjAfE5v|lN$GITk9%t-W@BO(|uo7hKqBOKSxKWjNX_b*;pmnY&Q-K z&4gja!?})&yEhMuySA}$cM{Kjr`+IjR1#Y}hbuL$(@SOg>Wl;;@yk|YB=Q2;O+UD< zUmiQGI!TKF@M==flsb%$#ryg^v8@KEH0oY8L(SP}?K}G~bR~Z3J5nuFa)ZAOSZF!q zk5L{?-LTWtnU4{l4FH}T(HKi{;stP@eSe?|mAj8@Y~0M>vVVR^FqPo|MXgDefbs3< z*TniMB)gpS?Y#sW-$q`TYP3ar@W*+%&iOle-R0mIp72CfSW6t%#XXI#0)eBEfcDc6 z$I91nw+mkc`{4r@zs`<3VGQjo_#2CZ0Bm#M6MMb2s;{0C=Iy>;^IMDwv;+GMtUuL1 z#&nbn=n9Pvw%C{0n?B>+HsZxs7B`svennZWb1z9RGq57X0+ghZ?2a8i&#u1{)1MAq z96GI0?ke$8HCpS4s(nbaB6ubB{4TV*Jv{< zZg%44<_7jZrTHXO3;}oW1a9@E1RBaao(&}lK@Go(k&h8D_MiJqSx|J-uKppXY3shS zt}Z)veNCdY4vo5bOd8+5xbiA{zwK#}Y>KYOmpIZVceVE8^IoKPU%SoDdQolRBVeCB z^cpDH$5&s7Wrff(hU?qPyt0+4ulV`y*Z}VbFtH!ifAWM*BpZ@c73|&8OGV?!A-WYP zQ$XJSTGZe-)l4FGwK|d2JM)bcMtG0>(mle62hg~MB9!X>>*vb*%SG9s4am=ohBljF z-e!|4}u-)!Y-AJETB|CMD<4s0w8Ha(yBpKc^C9#@ruqjyFTF{cUfN~=6#?0cn;^~z$KZBNyy)GCt}Hf^wx~XRN^jAd!4Kbp<^+;SOZ z9}%7J*y_buSdgR@{_fGYDlgFT9fx(hJ|lR#`uN(D)w6HvBTkJ;<26k0v~Bz3^|RFJ z^($=c$m>6!iGWT=n2xMlVq5dtn$40Wo;@>Okx79X=~4+sTBsg$LDZ+DZ=!?_q0zZ3aZ6={l_qMi%1Arud9 zU>=d>zkSKw!Sq6OW4^%KF@BcD%We1L{9`|%RPUm~AVEsb!jwqeCw~+gR-mkodcR|p zV^LHmIQ#}qJyLxcQD|n%jxsfobff6nZ4M*9CV9RZG;a7kbul5MgzwXk(eaJZ6(2Iz z=G|)(3MnylTq_7Z+efOKm{BjLr&i>xl0)rOe#$SV8v=T;$kb1tR<^?41PL&y?DwjB*ht4^4CA9=a4NBnA)@pz$HCPzR*JNKi(Gb=W<@;E_ zb5b#q7m|$|K3h;w5I40k_q%JCfU&y8M5KUNFS|EY{PQ(3vIt|{(rG#1AlAZD!hRG6 ziS1o@d!YYggIl(N!M`_vmS~SQdcQ5D*%~>)QHD@mSi64z2^ZhDkErVxKzf&BX-Ds89V)E{3ER{ zb7-hYF}m%*H1y$7TNFAhc%@y-(NPS3>e#;MY ztXX6o6YV(7*5xY-|M@7@(c_BCR473!gfM1urJ5u(cg+q8TvUuFekpWj>AsJK^-yqb zeqhb@s6M-%URl+Py6n2|#hG^)2TNZBCu2Teivq2YkSlhW#tnSb?mZ(C9GSY#63O1g zl^w2{WVC%-=gtMozVA;rvf)S%P`1IXvM8=pj4b5;_|X@!{9>9{u-djK8+AFKGchqS z*UmV#K}Abzx;dL?-8aV9g8D3=siL!#Nq0&KfQ8sIz#e7;jp%}fTWfy>k%%~`uO78^ z2>6A!>i$@gGLO0Ln}yPkvj;h`plU&<=LIKPh>FS&*Izdqv2QE=T5S0g0{U2{p!@DM z5a_w1$-25wIfjIq_fWg<=ooW4?JE|HS-YL)bX`Ltjc@z4M8htHiqWo4Cs?Et=E5WVflI;l9#xgwU=*UWr9fR^0klp8F8{qSCL8K^k)X zIylB-LLRbz5mIr}A>5nV^}{C$uEt3UA(w!gz#>BpM=!qRWQ`lH!$8YvDDJ=bag*Qi zV?*!^rcQZ=EBfN6SIln?UWF*%Rk{P)=D%KQ^{b{DI+V?F_P(xf)2q3MmYQ%6Lp$s0 zPrY0vPV-kBc9PwUHPrOf^sCR!+^#+=_t<|yvESCM5b3wxOM|<@Q1|7v{uwyY&cyvJ z{Y1wPN)O06eO&Yw!bm;tX!nj7oG(B(8{`9iNew>HQ*AY8&&${k3wHe+_n zFdJNhPjYD={W6c^9{l@mxG(%x;xj5QWAl7Px4q5X-90l!W_&HVuL%jO*>Vkg!#0hd z40E0xgPCK6{sBsx<}#JbYCfDgJ|%6BH(u5474`U*i@b{6A@!H>-g!*AVWE37v^Epyz4&q3NQJYnXQohuwLQwEUKCvS-s@eS2m>5>zs0~NgogE zrK7+?^~WMZ8OnDtS0*v#H5G<$mR#i@e~_5V?*9(< zhaE}c86b>X?PE1&&U(G|r7o{mG*+rr#eFW8sKc7m5U=`3!EWa{5)9D`Q({UV zB74MU&cM%`4Qu7_9vGq! z6Sv72zMXA_pKq#fGx~cK>$Tl-KeU}*M8JG>`RswK?d4@ESc@VRhRbaW+L>yWTq5I5ym+`l`sh8IJ7V>&l%EoZnO#u0P_xFY zS>&vb7^Iz-a+zC+)#xdZxpbZR^J~3RKRhe8b}UwwMVj=(=ihna3br2XW9%nE^JmNa zK{QLu?c``qabQq9V5S=fahVJ(UK@hPDsH?~7CqWPPMvneoVoXB{?m*WM8evgP1c5BS&QVJD;xyos3M(j>~&COLN z7PQR0>AY}%t$_v6H~~z?K+jOSfmAN0UT8;erRSN+pMA7tXQPh0tMIE=Ot*$GCrR2S*Vw8dBOwG!VtDhPFa( z2)Ed_><(wg_$~|Ebt&)?3gY)1gHf-=>H(rAMxFYI>O#$Wtsc8D+v4Jkj0pQP`HaPQ zn5X*p_*ZTi?v-A*(~k&nffbdYTaw44EgB&WPA)D5I?Oz(*>+@lzocw+&)xL4Jj@{b z^m3=GpD+S0-xN91jNPYsE$rnv{ghlgjoQeLG9H^^z{ZF0M}ai=uU; zg_zoeur3Bp(8Yq@DQEkvU|y7lfuFj%n!0+_;;&`+*U<3C7=lPwPj$?8BMpcdBM9aW z-ao!gsm8c<0yaGq5vvtEedp1--VzPyLa#%iw9qBDIaq;%s2X+ALa_2sli`sB8y*d8`s z;Gc;u`6g}}>zD-^-Me?Z#x`@AMyvrdK?M>lO)`s~+lHIKHu-FK_nJ&F^Ovv41fx=n z#gcd&gdvJ&(Ir^_fR$t97EAQ2Tr?VS?>W4`F!S-RPs92f=>Gw1iPI!DRVdEmE; zXisLje}}xS&P~$ot&c{sng6@RAaybCQMTPt>f*&7?a7@9zx#x7%|{@N6x9z$@kWgNDh zNu`{88V=PgR#jD%PR+A%PI;=*NvuK!7>5R{R@#>%F{04ZAuLKykE*3@A@&o`OGToi%GcXK4L}zg526@LmWg3?ah+fwQ%?HM4@!QZTHUB z))Do#1^PltDs`KWz&|m(LoLTjgG@r&GyVy0QseRWBait>yCn~ikBo@5f4}1nJT#|G1~u~(NnsCC z>Vnzfxb=gG*d3WxL%VXl?6S2+cg@^M2K(pVHeb!h)s~oVcMXRoZK}U5U8?BCxZbm$ zZm>fqk~he7B^PUA5S~-$s$!B>F7iuUCi3Cw*%eg?|07`0vxaOGv;_h0SUvCYj}CS3 z9mX{n;d$rIpo~YWKZ<#k-$;X2h-(E>`jAtUiZOySd=C$34sO7m%W<*+F~bd%$`e@@ zODZ-?n*vIBowl2?*c4B!mRK8;}e6vp-96aAY z3{8Zr8*3is@Lg~GPN}KKCZu)0hnQl=Eyh&Q&0eVIp=9LOOWJG^!g1xPg}px~jK&?+ z8|yEcHvWX~M$AfxC8&H)-eJr$7boii*qxDxYBDF#Oq7C4@coI>YDuUeU-4 zW|g#-mhcD0xeDVK+9wb{X5L3K#hwzz`8X@4T*33ulLT(1*e$H**|%;(`5 zgj6mOG+12>p;Hau%5MZaS#No65#pVD0K{%KmQ_Lb2sR{9E@ux02HP$p?kP!rG)hnD z3%(^)^_&hE+f>|L-Ar`ASAGU^g=cM+cd5hoLl78OZsu1%!|l%Xe*5>jK7@ z&nC_IBT`JwB34Dh?6+{n1VU&7YJMM(%Q^FfA*m2n9VpATpP1Xq5mMs714 zntN^qT}5}qOKAvl*sjeEq?7N3Pw-P_bFgS`|L z;pU+#07L+O(O?5xbI)_H^IOcd#%kRqIe&CxU@s!j^Kr8d$~Eba$z=c|G5T;$#eH^> zxipXu;p6JAVj^j50E5lf|FMagWZd#xyu3rP`#OH}gNJ^z=%!pBehp928r5tb}>AZV_yw%!zse}XD#+Fo#gbDumo%V7mPlx3mae*0!oUM5A z)j~^FC)~%3DaNDFIY^vt^2R|~nNWjeI9e!+eJ{E2$@}3O%ERJr7fYR&$Ao-gMX=G9 zgc7I4>HHigWi`DXdB1jFmEi~ZuVc;})j7!0U?GAi38EEVs{uOK37e-KAevp$2Da>1 zb(2+6I2VL@V&X0hGBMK>7YCt*ObS{KqNsgc!Gb=ko zGw0~@_~ROq*->w%k6Xv>(=uWAexX1!Bdy!_Uew&?;`pJxowc@7MmX7{Z4(aAo%jZ2 zlIRCdK?mr&rZL=u6pG&!955@u>a@p5@A@C(v%^^{PdE7l5k}V5gJuqxXu0n#WIK+( z4*mU1{lnQEA{J2OoFZkRF;H_uq6(kub^f8sf%(o(UjGt$CFHeOj2LJyU}V&-E4MYL z$vY&~YnF{$2W@!t;n>fhvej)A%d@ys@;Msr=7A`R$+J>ZbBmo?4u5{)1b6wvVK@5) zwyuhV%BX|J#wK?EN->ny7-Qp^wVrNOUL6I>!*b@4n1${v-la{S)3+qL&wpWg&1bXT zjb3l7NYTFW3kfj$#D;?87fSIg-fwgGHUC@zE~^4HS&}n8Y-7O6PVWV0w#I5Pn{J8F z;)4^SXhKeJQk>Kzh3fVaoy5qJsRS?n7U7SEZQ2fZHk5-8>c~RZu?NaX6w$=l`k@r!^2xrH!#%|G9et+cp0C~H2 zI(9DDfaUGn(f)Y+4Mk4u@E?BQxl;(0;wug5>f7!DSIT@2*qu`nB~N>B|~1+(yJ zPR^Bo{bB{R0Qm8oy<2Jh8Dm-z8Eu^2L2ym>qlIuhCu2%5Z)2>!-cKx!Qc1>WJ#<@yhDM zhS_KFoN~Dj4j7F5;R=qQckaO0=QiUn?c*n>OW6zK&~wj=KJHzk*}N{`eI#U!J9cpx zIQoxl-Bw^nfwsR^l;<_P)hkECzH>P2d1qvgYS~8%%}niZ*iDLzj%;9#1_^vQF%Y?P z)EV*cO@m?I0AtcIn8Wn1VV7a3ym64g|E%L#e%c;FHibc-2yNr_BQ!|cS zOre%2%J{4CcasW})Ea$@8p6m>(yJe{zsqt{^J}}Zd4r&gk1Tc{GKQxdvnG>=6MPfWun-{6s zG@gVXhT8w)j$Kxd(yHY=*&gVa@NY~Yt|sT;==P{Z0>2_-85W9d!<&OVycNy~icFcQJLrZ0+(hth+6l3?LP3nl54+=vqjDEvW0WtHu zGT|O>GX2x+%6tdx=!&){{of}IySi|TRoe+G1qk6k>IUZ z#ZLOVyZS=dAP2N|5w^&t0+!qErqR!)S57gT28Xp^>Omsq zD_~gR)YPmn#bVvbCR5y9>N1*j{8;YRH9S+q;()14_G)}WRlkh^zw7gfo=k)0S52eA z#Y#;qBq9vy`kF>qM=Bm^fvFiSXu7j{{ho8UR+IGc4h=>;l@5&fo#@(S|A%MhlaeU> zhdCx7!d=L;-29>QJ>+t~V}(s3h!Ie9r+z~iM6Hp<9uc&C;EGt#D19hWwoaetFqhIiCdwWqihHD2vY^E}tYaBwUa|PjVoHUjFKa-BK2qO% zrh6yN=w};_PCJGLo#8ekZXY`B6rrgsJvfykPsVIb5%uy;UUi9w%C0?hq;~N&E%%Y66r>??x^*zzvm=y*u}@O zItXx8xy!>_^$6@1VtNJJwzA!_JUWu~1%$WyIj8mxLa`i?Ocv34*rX)-I@;&g{Yyt5 z9L$~J5S2qNDKt@Sr}4)8A>=b}DFBHEI>O`CDRENDmZpsqF=$Mz!3=eMR@RHmc~-RisqH zh>@(C+%hLYj&^Z6%Jx+cP{f_fx&jU1C=bHOW2#{77YrCEvRdn@#SZx=X78Rv0 z%H7^Oio$S{ZwT%>d?5WxpD<@p;obcL(ldW5*@? z%M-0<6%jHM(PDdIyUSC^umWF^03Y?XFq-)HGPqIP+Fk)X@Z(~se9o>L$vw{<6)s5d z$CyMD&9OJmMq`izHZQo#ms#yM-U@<^6n^Uo#gNKOIh6PodHGLgw6MQ)guU(B(r0J> zdC|ZtTz^iaSrmWR@T-{Nc)iIF-1b4aDl&o{~yPHZh=1lGUmEU zi+0l7l~q+OY0dG$VU#mI^^Lbe(QP)n^FD9g$n!6$FA?C_D=M<%)lr)ta!H@q8Zo9p1G zm)i80_pnD5ZPLOg#=?JJ-MRh=8`418vz{F@v26R%_t`1ZBJVk3Fo82hwc>5e^01V1 zCx_u>3lKbN_%cgF&-e*w{ED{Eb-7T&B>nkn9;LB_wo$EDTVqjndDIuO1htdUN9+@b zhYj%~QffB@E#KI8E#6yoSf2Y-WG<9c!972mXg}PP3*y|4$Wp7a>_{yjn;%SYsqI}G zj$``VoA=jCR{Bsde@!UW$5q-;vUk{R1^sc#M@wSv*p3k#-3b|D^>xssg+P0QlaD_9 zZXk%xC}S*%$^J=UU_e{fwLN4%`Ooi}GlIZQk|j#~?{Rlo`p}bjLwNfp|H;F@7NZ2Q zS#n3i^plfQ^fZ3wp(Qb_O<3w5^Y#Equ(g>xr(vqkwaNc9M-*yuTi`;_=lj1d zJTk1}9z2Q0pY3UN%PCT9omW)%pLWG`{jRnq+hi4*V|O4v0tO`ZkJK*t$81QyMTU5b zBANo8GpvAnc+X^mPh}Kp;IuYtZ|q^t3qmi;(g&C+?%*)wZ0!_Y28S5muyOuw3pf z8_od*#v_J}jg1+lms8TRE^csf4m7mJFaZ##@%pka-bsXZ8vo73d)+KQNG!DJp5#OG zx_i2%_cMs6A>wYB7*XEL`Hwv01qLLR|J?rNEHJ%(C{Oxo7^tHaS?@wDoCI}~p(iF& zAfg!uc1X1FiTsi3q|a2*&SI)OobARXekW>R;J)h!)`xZ-ztwi9PPS+{)_jnW@714| zVa5R71J4_!TpXiLG=%g;L1wrZohoIem%kpf&$L^{jeJo7EW&8giK6bi1{ zum*ul^&(^?*X*B=#1<4x{V(2qH$64oRQb?Nux-I+WozW@1Cg1`@^|m=k92uO%zsC>s7Qx0i-<`=QYA!c6O7SLx8MiZ{aR$l}5&4kbsGZN6%3O?6n+ zzf!T7?}zNp-nbFh z#_v=zcigUB+W@2;04;%je-U;A=3I+jB+{R6^6LOEw8>y4wJ)&;X=!(WfeBIl6`Umi zm$IKANc~+;{1=XM*nb`XVCFEKbiosYnh#Gq`ICJe=0~2<#BPgeB*r-QSoW7VM$Hpn>gn`$?IG8 z05Ydm#+DRuna3OctRr}unwrWgD)S3TT6SeLpz)lAM(KtCG(A0CVFVc2@%e9OT(A)2 zEKse4<~_=cg&cDx!Fnb14566|p18!{Ar=ItcI5SyXKJ$M{jEvrxhG3lS(eV&d(TCP zA0Ny5Tb2Kd%enmJ_J>Sv>W_~|Ax>Yy}pLWdZ3DUZ%ThRKIUd$ zfj87vwc0U9uD5Y*vDF@(?w)fuDCnQHf7#4aY=8iVM46U-nvEXB%U$6a{+_IprGwLR ziD>wH&VUp#nxOM#ijtFwNjg5(wbj*m?F*6*A^P#CH24Q5WAn_PUnP-C{LJaNJTeT$ zH^;Jq?xkVl<1bXAVuddx*iUrjW#^@Ljjm|*9-rduR%;rG#Nb90n=R=ruf zoxp*&Ki@o0GaJ%B*AZX3g>ui6rGaj& zR!TJgbEGlmh-ndR%Di7!RZ(GpV7JNEw=owXGN9R&QMU-g;aXmsjw@0S6WtB)!gzy* z)EvR;>(sV2&v8=%d2RJqm}g0JQkpi#A085zBHPsUH0f+AcEchd_8tmfkOtq%ws9|l zrw?)SWAqHDJ&yQN(;op}s-uHhmV#a2gW7qOxJ* zBtHe)+gR;Qii=Yg!MsXURaKKEoMF#!J^eK}%)alr_l}plZc>{C$|74&(FP}*=f05= zSfX(q{=H^*zr8tp=}xFK3WmbO8C+jc8o0pNxEdXJ#rHIdUlxGvT;(hg&7?kPA5BDXb;?anc!BHKIrAS} zguZUa231k5_VHHeZR5vJH`P#&-RAVQci#6egI*jheJ}+FbZ0GF(^3e#z|A_M6~|8% zBYlHKHnbF@_*+Z)*24lbXY~;7+rt9rfr4~RA(M^U>(J&7(Uk+v00hED_vVkmbsw=f zcbio2;p@i|*T4HCgVCtInx4sBi9p#9&bSoUbelt(^>UfY0p{RR@>$pW-w$y6GJ1Nk z=tT%7w_P8ySPV`l`xXd3<)|~dvp-`nFZt0@#f(VA1KT&E%ZDx9398BU-KRoA?}EV# zyC1(DC}C4R(N=v4FYEXo+$85j{^woTkS034T(-!%y!?TFtzlP`hj74t?|#rkLR6G2 zQinAP0V^*4eP1)HXpFJ`AqhH zf2xWUdZ;*WU8C*)>F&*=q5j|h|B|AFHlzi;6bUKG&M3Pql_I;!l5Az)Cn=&BLUxiZ z+4psf5@X+&?6S;Y>@&78W`2*cl=tiNIluGy<9oj6bH1IUKV}}!WuDK+ay_o=cHJ+P zrA|=pYO`eCl;m3Q;hacxB_fD}=5Mz=Sv%R6A+Pr){0Z_?+%UZD_!Lb!N+rDgSxK4H z0r!{zLwzp~_%Uk166dJ;1Q5p-TB~`|oc?|A{_4O*SaE+JIu>wJG?E=*O}K7(;2-FMOfA ze~r~+&veLq5aDdVqGQK?t@K`gbkD1YLPJ)(e{|8nS)~2}!jM$a4Ckj$3MV6ex5m9n zHxaz&z5ix9li8o42jFLNt9JtDI@AnVUv(VH!&Bq}EUBT!KdR4ger793MINOJyugMz zgjPqcQ5_-z*(;kcd0|fxi^a!krH4#Zhlewj~!}avNZwc*{!d- z+yRxG4`Mlnt3#Xzo7F}QrN`!6lYz1DECA!N!(hW zXdkJb0%+Zaj%L^Wqx>~7sgY<%UYLK2T4+S z$jZN_vZv_&*fG}D69ecKszX@bsYTeh2obT_lx5VN-a+x4ox_l&XjsO1Ih0A|*gSSU z(S2iOX>Cl6OlMtEgDi(1{;+&64j&DT;b3)nBToEP#ZgJeGxPBd^kNBcYVkpd!OpH( zhdQ-~I@w{LEc=xx^6=<5x6$K3wVgG%yNC)ScqfcE%sjJ1L*MPUmO7K;Fa+P$#c%iP z*!p6ZCcdaAqWV1~kUI zfLpm{3RvCF*PNI%e>po zoDmA9#Pzo)7YtrjciHqNF-2`YW7htp%B1g9fwdk?WTNU&jedMpmqS@t3aHx)pTt2| zdeJuRIQ7P*ld8g*y-!<3Va#O+=Q}S!d8G)TN1NgvV<2INpH9n~2oRh9bW$zyaXVp4 z4Pt9VAJcsmFZtbF+kLjLU^v2k`tIo%{POHm$uhes3-1kbfNO5hwUK|76;53|@kvLe zeKx))cA>qUpIjsRyBAf2JqUhBrj*Ss_2X+BDx#p69NfVZ@DG!VG|#s%%j$P?bW9 z-YfHB`|U;&pDqk4x^~$sZ-VgLr-N7$x9e zKhc=Pahk@6G=SgmB0qNSl+)2U{y{+@Ax*1dj{vugS#4~Z95A-NtWxJYdSnzY`H_NV zW-M$!h_53bj_nEx9($%ujv$D0E-blBBTa<#loyhG@5?P{bJS>`zmpYAH`SI37|6NO z4gDK6ddMOJmnqri7ZGMAdX|=YEWy-k=;<_)rl4it#o0dN+DyH&#xv*nv8y0boP{9P z;653+wH-tq>U-4`8Eua_S!~nxrKm~v&7lc&jB8KkN zh;SUX@gQAT*>?$^1k`Oo86u#X@n_=!3lv&inHto&lI8|77A?$W1E0U=2XukZx5tIH z2WH9-tDoV8^}JTFnxjpj6MZ1>(@D7!B2+MVT%FEwj#gOL`)IGu%AjNV;bP>R>no_( z`TndHWKX;lZv<|LBCBT%M+l4BxB2nTRRN*Z=`3oz0PA^*&KK=Ze-)(V{~rBp2IqR@ zN=i$^T(x`hkn~whB`;KEaG;-YxIg(Ea9s&pYhM~4(h}B0`J5{?U#*d zw@B$)DfM`JOa>e`)h}PJpT(n3@GOX?{Nr-lM-fDpoBq;u#5v9brDe|N9#aXe`7mX| z{2d`Hy}dUi`-s>mJOiH+ur{{Um_@m}Mq}wf?Iq9mD;|e>L1i8-E6mup1B%=IFQiiY zl(KE%#62BF+P%s%B&CFr!Q0dmupWR_{{{5r*D|u8rb0gB_)jK~I3@2ejm1Yr;euj87VRI?Q-(c|9Et6FCa8=fLrI)2 z45_RXhuQDm&%N|``nK$jdCVqB#w`Ky@YmNW#TE}Pd~(|E?%$+xa>DX98S#Iv9ofNP zX{jWcBp{jb>VAhd@Gxk{dC+aGT5SH5+rHNTA-*kN>rXWHU<0F_o=!+xre3m<@uElW zXHM@>YGFVKF*L81xLKcl_(Mxd!h&HtL36K9eSX=cdb=+b$TCk%B#ow7oNJVM zWS`3(*iL~z-!`wLt`1I+Dz8ql!rx3omT2CygDd-4wB3`Qr|~N_I4E_;^3*-kbad|k zJ^}R&KR>_A0bi_6)@M(hahZ{D`kLR+7~;Od%$27aXJ%@}vHWXHtqvUr<+|C`mHT{I zsA>F2Me$>a*Jvvj%hJ$$Iy&qRA3juhDtxDZ+Od&_&OcpUO;ibw85DN?L0}4!BfFsl z`d%O0(?Qq*?SN-o(XswS(T}d??4WPoN~0=iXb`kzU*4K`hnGv5y1HysnXt3(4*z3h z@4bw!5#6P1^B&dUiP@sz&@W#`@AevFQU5rjXIGUg^vbk7Ad0o;Kknak6)UKN8BsuD zaZz-JS7+L5({&yW8Mm6-L_#*53lCXf4F2dhgAT7ud0P?*;c$%)%s>81Jx5-=m!-~u zNOsKtdyg9!@+aNjJQ_)q*eoK<3PP<(g =Uyk7`dG>fce%^hRg8z9e_{%gU?yYr| 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 ND61-ydE4;y{|84>*#!Uq literal 0 HcmV?d00001 diff --git a/playbooks/Identifier_Activity_Analysis_Dispatch.py b/playbooks/Identifier_Activity_Analysis_Dispatch.py new file mode 100644 index 0000000000..fede807dfe --- /dev/null +++ b/playbooks/Identifier_Activity_Analysis_Dispatch.py @@ -0,0 +1,263 @@ +""" +Detects available indicators and routes them to related identifier activity analysis playbooks. The output of the analysis will update any artifacts, tasks, and indicator tags. +""" + + +import phantom.rules as phantom +import json +from datetime import datetime, timedelta + + +@phantom.playbook_block() +def on_start(container): + phantom.debug('on_start() called') + + # call 'decision_1' block + decision_1(container=container) + + return + +@phantom.playbook_block() +def decision_1(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("decision_1() called") + + ################################################################################ + # Only dispatch playbooks against new artifacts. + ################################################################################ + + # check for 'if' condition 1 + found_match_1 = phantom.decision( + container=container, + conditions=[ + ["artifact:*.id", "!=", None] + ]) + + # call connected blocks if condition 1 matched + if found_match_1: + filter_1(action=action, success=success, container=container, results=results, handle=handle) + return + + # check for 'else' condition 2 + add_comment_1(action=action, success=success, container=container, results=results, handle=handle) + + return + + +@phantom.playbook_block() +def filter_1(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("filter_1() called") + + # collect filtered artifact ids and results for 'if' condition 1 + matched_artifacts_1, matched_results_1 = phantom.condition( + container=container, + conditions=[ + ["artifact:*.id", "!=", None] + ], + name="filter_1:condition_1") + + # call connected blocks if filtered artifacts or results + if matched_artifacts_1 or matched_results_1: + dispatch_activity_analysis_playbooks(action=action, success=success, container=container, results=results, handle=handle, filtered_artifacts=matched_artifacts_1, filtered_results=matched_results_1) + + return + + +@phantom.playbook_block() +def add_comment_1(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("add_comment_1() called") + + ################################################################################ + # Comment and exit if there are no new artifacts + ################################################################################ + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.comment(container=container, comment="No new artifact data found in event.") + + return + + +@phantom.playbook_block() +def dispatch_activity_analysis_playbooks(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("dispatch_activity_analysis_playbooks() called") + + container_artifact_data = phantom.collect2(container=container, datapath=["artifact:*.id"]) + + container_artifact_header_item_0 = [item[0] for item in container_artifact_data] + + inputs = { + "playbook_repo": [], + "playbook_tags": ["identifier_activity"], + "artifact_ids_include": container_artifact_header_item_0, + "indicator_tags_exclude": [], + "indicator_tags_include": [], + } + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + # call playbook "community/dispatch_input_playbooks", returns the playbook_run_id + playbook_run_id = phantom.playbook("community/dispatch_input_playbooks", container=container, name="dispatch_activity_analysis_playbooks", callback=decision_2, inputs=inputs) + + return + + +@phantom.playbook_block() +def decision_2(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("decision_2() called") + + ################################################################################ + # Determine if outputs exist + ################################################################################ + + # check for 'if' condition 1 + found_match_1 = phantom.decision( + container=container, + conditions=[ + ["dispatch_activity_analysis_playbooks:playbook_output:observable", "!=", None] + ]) + + # call connected blocks if condition 1 matched + if found_match_1: + filter_3(action=action, success=success, container=container, results=results, handle=handle) + return + + # check for 'else' condition 2 + add_comment_2(action=action, success=success, container=container, results=results, handle=handle) + + return + + +@phantom.playbook_block() +def filter_3(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("filter_3() called") + + # collect filtered artifact ids and results for 'if' condition 1 + matched_artifacts_1, matched_results_1 = phantom.condition( + container=container, + conditions=[ + ["dispatch_activity_analysis_playbooks:playbook_output:markdown_report", "!=", None] + ], + name="filter_3:condition_1") + + # call connected blocks if filtered artifacts or results + if matched_artifacts_1 or matched_results_1: + merge_reports(action=action, success=success, container=container, results=results, handle=handle, filtered_artifacts=matched_artifacts_1, filtered_results=matched_results_1) + + return + + +@phantom.playbook_block() +def add_comment_2(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("add_comment_2() called") + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.comment(container=container, comment="No observable data found from playbook(s).") + + return + + +@phantom.playbook_block() +def merge_reports(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("merge_reports() called") + + ################################################################################ + # Merge markdown outputs from dispatched playbooks + ################################################################################ + + template = """%%\n{0}\n\n%%""" + + # parameter list for template variable replacement + parameters = [ + "filtered-data:filter_3:condition_1:dispatch_activity_analysis_playbooks:playbook_output:{outputPath}" + ] + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.format(container=container, template=template, parameters=parameters, name="merge_reports") + + update_identifier_activity_analysis_task(container=container) + + return + + +@phantom.playbook_block() +def update_identifier_activity_analysis_task(action=None, success=None, container=None, results=None, handle=None, filtered_artifacts=None, filtered_results=None, custom_function=None, **kwargs): + phantom.debug("update_identifier_activity_analysis_task() called") + + id_value = container.get("id", None) + merge_reports = phantom.get_format_data(name="merge_reports") + + parameters = [] + + parameters.append({ + "owner": None, + "status": "complete", + "container": id_value, + "task_name": "playbook", + "note_title": "Identifier Activity Analysis Dispatch", + "note_content": merge_reports, + }) + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + phantom.custom_function(custom_function="community/workbook_task_update", parameters=parameters, name="update_identifier_activity_analysis_task") + + return + + +@phantom.playbook_block() +def on_finish(container, summary): + phantom.debug("on_finish() called") + + ################################################################################ + ## Custom Code Start + ################################################################################ + + # Write your custom code here... + + ################################################################################ + ## Custom Code End + ################################################################################ + + return \ No newline at end of file diff --git a/playbooks/Identifier_Activity_Analysis_Dispatch.yml b/playbooks/Identifier_Activity_Analysis_Dispatch.yml new file mode 100644 index 0000000000..0d8119bfe0 --- /dev/null +++ b/playbooks/Identifier_Activity_Analysis_Dispatch.yml @@ -0,0 +1,18 @@ +name: Identifier Activity Analysis Dispatch +id: fc0edc96-ab1f-48b9-1b4d-63da52dbfa74 +version: 1 +date: '2023-02-28' +author: Lou Stella, Splunk +type: Investigation +description: "Detects available indicators and routes them to related identifier activity analysis playbooks. The output of the analysis will update any artifacts, tasks, and indicator tags." +playbook: Identifier_Activity_Analysis_Dispatch +how_to_implement: This playbook looks for artifacts and then dispatches the community Related Tickets playbooks. This playbook takes the output of those playbooks and nicely formats them into notes and tags indicators with their results. +references: [] +app_list: [] +tags: + platform_tags: [] + playbook_type: Automation + vpe_type: Modern + playbook_fields: [] + product: + - Splunk SOAR \ No newline at end of file